├── binder ├── apt.txt ├── runtime.txt └── requirements.txt ├── .gitignore ├── MANIFEST.in ├── examples ├── dfv.gif ├── heapsort.gif ├── simple.txt ├── er.c ├── dfv.py └── heapsort.ipynb ├── .github └── FUNDING.yml ├── .travis.yml ├── setup.py ├── gvanim ├── __init__.py ├── jupyter.py ├── __main__.py ├── render.py ├── action.py └── animation.py ├── tests └── action.py ├── README.md └── LICENSE.txt /binder/apt.txt: -------------------------------------------------------------------------------- 1 | graphviz 2 | -------------------------------------------------------------------------------- /binder/runtime.txt: -------------------------------------------------------------------------------- 1 | python-3.7 2 | -------------------------------------------------------------------------------- /binder/requirements.txt: -------------------------------------------------------------------------------- 1 | GraphvizAnim 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .envrc 2 | dist/ 3 | __pycache__/ 4 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include README.md 2 | include LICENSE.txt 3 | -------------------------------------------------------------------------------- /examples/dfv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapio/GraphvizAnim/HEAD/examples/dfv.gif -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [mapio] 4 | -------------------------------------------------------------------------------- /examples/heapsort.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mapio/GraphvizAnim/HEAD/examples/heapsort.gif -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: xenial 2 | language: python 3 | python: 3.7 4 | script: python -m unittest discover -s tests -p '*.py' 5 | -------------------------------------------------------------------------------- /examples/simple.txt: -------------------------------------------------------------------------------- 1 | ae 1 2 2 | ae 1 "a \"node\"" 3 | ae 2 "a \"node\"" 4 | le 1 2 "an \"edge\"" 5 | ns 6 | hn 1 7 | ns 8 | hn 2 9 | ln 2 "foo \"bar\"" 10 | ue 1 2 11 | ns 12 | hn "a \"node\"" 13 | # this is a comment 14 | ae 1 4 15 | ns 16 | un 2 17 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | 3 | def read( path ): 4 | with open(path, 'r') as f: 5 | return f.read() 6 | 7 | setup( 8 | name = 'GraphvizAnim', 9 | version = '1.1.0', 10 | description = 'A tool to create animated graph visualizations, based on graphviz', 11 | long_description = read('README.md'), 12 | long_description_content_type='text/markdown', 13 | author = 'Massimo Santini', 14 | author_email = 'santini@di.unimi.it', 15 | url = 'https://github.com/mapio/GraphvizAnim', 16 | license = 'GNU/GPLv3', 17 | packages = ['gvanim'], 18 | keywords = 'drawing graph animation', 19 | classifiers = [ 20 | 'Development Status :: 5 - Production/Stable', 21 | 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', 22 | 'Operating System :: Unix', 23 | 'Topic :: Software Development :: Libraries :: Python Modules' 24 | ] 25 | ) 26 | -------------------------------------------------------------------------------- /gvanim/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | from __future__ import absolute_import 19 | 20 | from gvanim.animation import Animation 21 | from gvanim.render import render, gif 22 | -------------------------------------------------------------------------------- /examples/er.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016, Massimo Santini 3 | * 4 | * This file is part of "GraphvizAnim". 5 | * 6 | * "GraphvizAnim" is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the Free 8 | * Software Foundation, either version 3 of the License, or (at your option) any 9 | * later version. 10 | * 11 | * "GraphvizAnim" is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14 | * details. 15 | * 16 | * You should have received a copy of the GNU General Public License along with 17 | * "GraphvizAnim". If not, see . 18 | */ 19 | 20 | #include 21 | #include 22 | #include 23 | 24 | int main( void ) 25 | { 26 | int i, j, n = 10, g; 27 | double p = 0.1; 28 | 29 | srand( time( NULL ) ); 30 | 31 | for ( i = 0; i < n; i++ ) { 32 | printf( "hn %d\nns\n", i ); 33 | for ( j = 0; j < n; j++ ) 34 | if ( random() < p * RAND_MAX ) 35 | printf( "hn %d\nhe %d %d\nns\n", i, i, j ); 36 | } 37 | 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /tests/action.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | import unittest 19 | 20 | from gvanim.animation import Step 21 | import gvanim.action as ga 22 | 23 | class TestActions( unittest.TestCase ): 24 | def setUp(self): 25 | self.steps = [ Step() ] 26 | 27 | def tearDown( self ): 28 | self.steps = None 29 | 30 | def test_remove_unlabeled_node( self ): 31 | ga.RemoveNode( 0 )( self.steps ) 32 | 33 | def test_unlabel_unexistent_node( self ): 34 | ga.UnlabelNode( 0 )( self.steps ) 35 | 36 | if __name__ == '__main__': 37 | unittest.main() 38 | -------------------------------------------------------------------------------- /gvanim/jupyter.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | from __future__ import absolute_import 19 | 20 | from os.path import join 21 | from tempfile import mkdtemp 22 | from shutil import rmtree 23 | 24 | from IPython.display import Image 25 | import ipywidgets as widgets 26 | 27 | from gvanim import render 28 | 29 | def interactive( animation, size = 320 ): 30 | basedir = mkdtemp() 31 | basename = join( basedir, 'graph' ) 32 | steps = [ Image( path ) for path in render( animation.graphs(), basename, 'png', size ) ] 33 | rmtree( basedir ) 34 | slider = widgets.IntSlider( min = 0, max = len( steps ) - 1, step = 1, value = 0 ) 35 | return widgets.interactive( lambda n: display(steps[ n ]), n = slider ) 36 | -------------------------------------------------------------------------------- /gvanim/__main__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | from __future__ import absolute_import 19 | 20 | from argparse import ArgumentParser, FileType 21 | from sys import stdin 22 | 23 | from gvanim import Animation, render, gif 24 | 25 | def main(): 26 | 27 | parser = ArgumentParser( prog = 'gvanim' ) 28 | parser.add_argument( 'animation', nargs = '?', type = FileType( 'r' ), default = stdin, help = 'The file containing animation commands (default: stdin)' ) 29 | parser.add_argument( '--delay', '-d', default = '100', help = 'The delay (in ticks per second, default: 100)' ) 30 | parser.add_argument( 'basename', help = 'The basename of the generated file' ) 31 | args = parser.parse_args() 32 | 33 | ga = Animation() 34 | ga.parse( args.animation ) 35 | gif( render( ga.graphs(), args.basename, 'png' ), args.basename, args.delay ) 36 | 37 | if __name__ == '__main__': 38 | main() 39 | -------------------------------------------------------------------------------- /examples/dfv.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | from random import sample 19 | 20 | from gvanim import Animation, render, gif 21 | 22 | if __name__=="__main__": 23 | N = range( 6 ) 24 | K = 3 25 | 26 | G = dict( ( v, sample( N, K ) ) for v in N ) 27 | 28 | ga = Animation() 29 | for v, adj in G.items(): 30 | for u in adj: 31 | ga.add_edge( v, u ) 32 | ga.next_step() 33 | 34 | seen = [ False for v in N ] 35 | def dfv( v ): 36 | ga.highlight_node( v ) 37 | ga.next_step() 38 | seen[ v ] = True 39 | for u in G[ v ]: 40 | if not seen[ u ]: 41 | ga.highlight_node( v ) 42 | ga.highlight_edge( v, u ) 43 | ga.next_step() 44 | dfv( u ) 45 | 46 | dfv( 0 ) 47 | 48 | graphs = ga.graphs() 49 | files = render( graphs, 'dfv', 'png' ) 50 | gif( files, 'dfv', 50 ) 51 | -------------------------------------------------------------------------------- /gvanim/render.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | from __future__ import absolute_import 19 | 20 | from subprocess import Popen, PIPE, STDOUT, call 21 | from multiprocessing import Pool, cpu_count 22 | 23 | def _render( params ): 24 | path, fmt, size, graph = params 25 | with open( path , 'w' ) as out: 26 | pipe = Popen( [ 'dot', '-Gsize=1,1!', '-Gdpi={}'.format( size ), '-T', fmt ], stdout = out, stdin = PIPE, stderr = None ) 27 | pipe.communicate( input = graph.encode() ) 28 | return path 29 | 30 | def render( graphs, basename, fmt = 'png', size = 320 ): 31 | try: 32 | _map = Pool( processes = cpu_count() ).map 33 | except NotImplementedError: 34 | _map = map 35 | return _map( _render, [ ( '{}_{:03}.{}'.format( basename, n, fmt ), fmt, size, graph ) for n, graph in enumerate( graphs ) ] ) 36 | 37 | def gif( files, basename, delay = 100, size = 320 ): 38 | for file in files: 39 | call([ 'mogrify', '-gravity', 'center', '-background', 'white', '-extent', str(size), file ]) 40 | cmd = [ 'convert' ] 41 | for file in files: 42 | cmd.extend( ( '-delay', str( delay ), file ) ) 43 | cmd.append( basename + '.gif' ) 44 | call( cmd ) 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GraphvizAnim 2 | 3 | [![Build Status](https://travis-ci.org/mapio/GraphvizAnim.png?branch=master)](https://travis-ci.org/mapio/GraphvizAnim) [![Binder](https://img.shields.io/badge/launch-binder-ff69b4.svg?style=flat)](https://mybinder.org/v2/gh/mapio/GraphvizAnim/master?filepath=examples/heapsort.ipynb) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1037283.svg)](https://doi.org/10.5281/zenodo.1037283) 4 | 5 | 6 | GraphvizAnim is a tool to create simple animated graph visualizations; it is 7 | just a proof of concept, aimed mainly at teaching purposes. It is based on 8 | [Graphviz](http://www.graphviz.org/) for the graph rendering part and on 9 | [ImageMagick](http://www.imagemagick.org/) for the animated gif generation. You can [run the heap sort animation](https://mybinder.org/v2/gh/mapio/GraphvizAnim/master?filepath=examples/heapsort.ipynb) on-line using [binder](http://mybinder.org/). 10 | 11 |

12 | 13 | 14 |

15 | 16 | A *graph animation* is just a sequence of *steps*, a step is in turn one or 17 | more *actions* such as: *add*, *hilight*, *label*, *unlabel* or *remove* a 18 | *node*, and *add*, *hilight*, or *remove* an *edge*. Animations can be built 19 | by invoking suitable methods of a `gvanim.Animation` object (in a Python 20 | program), or by parsing a simple text file (that, in turn, can be generated by 21 | a program in any language). 22 | 23 | The [examples](examples) folder contains few instances of such approaches. 24 | After installing the package with `python setup.py install`, or using 25 | 26 | pip install GraphvizAnim 27 | 28 | you can generate an animated depth first visit (in a 3-regular random graph of 29 | 6 nodes) by running 30 | 31 | python examples/dfv.py 32 | 33 | or you can generate the simple animation described in 34 | [simple.txt](examples/simple.txt) as 35 | 36 | python -m gvanim examples/simple.txt simple 37 | 38 | You can generate an [Erdős–Rényi](https://en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model) graph (with 10 nodes and edge probability 39 | 1/10) by running 40 | 41 | cd examples 42 | gcc -o er er.c 43 | ./er | python -m gvanim er 44 | 45 | Finally, you can obain an interactive visualization of the *heap sort* 46 | algorithm using [Jupyter](http://jupyter.org/) by running 47 | 48 | cd examples 49 | jupyter notebook heapsort.ipynb 50 | 51 | and running all the cells in order; or you can give a try to 52 | [binder](http://mybinder.org) and watch the above animation 53 | [actually running](https://mybinder.org/v2/gh/mapio/GraphvizAnim/master?filepath=examples/heapsort.ipynb) on-line. 54 | -------------------------------------------------------------------------------- /gvanim/action.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | class NextStep( object ): 19 | def __init__( self, clean = False ): 20 | self.clean = clean 21 | def __call__( self, steps ): 22 | from gvanim.animation import Step 23 | steps.append( Step( None if self.clean else steps[ -1 ] ) ) 24 | 25 | class AddNode( object ): 26 | def __init__( self, v ): 27 | self.v = v 28 | def __call__( self, steps ): 29 | steps[ -1 ].V.add( self.v ) 30 | 31 | class HighlightNode( object ): 32 | def __init__( self, v, color = 'red' ): 33 | self.v = v 34 | self.color = color 35 | def __call__( self, steps ): 36 | steps[ -1 ].V.add( self.v ) 37 | steps[ -1 ].hV[ self.v ] = self.color 38 | 39 | class LabelNode( object ): 40 | def __init__( self, v, label ): 41 | self.v = v 42 | self.label = label 43 | def __call__( self, steps ): 44 | steps[ -1 ].V.add( self.v ) 45 | steps[ -1 ].lV[ self.v ] = self.label 46 | 47 | class UnlabelNode( object ): 48 | def __init__( self, v ): 49 | self.v = v 50 | def __call__( self, steps ): 51 | steps[ -1 ].V.add( self.v ) 52 | try: 53 | del steps[ -1 ].lV[ self.v ] 54 | except KeyError: 55 | pass 56 | 57 | class RemoveNode( object ): 58 | def __init__( self, v ): 59 | self.v = v 60 | def __call__( self, steps ): 61 | steps[ -1 ].V.discard( self.v ) 62 | try: 63 | del steps[ -1 ].hV[ self.v ] 64 | except KeyError: 65 | pass 66 | try: 67 | del steps[ -1 ].lV[ self.v ] 68 | except KeyError: 69 | pass 70 | dE = set( e for e in steps[ -1 ].E if self.v in e ) 71 | steps[ -1 ].E -= dE 72 | for e in list(steps[ -1 ].hE.keys()): 73 | if self.v in e: 74 | del steps[ -1 ].hE[ e ] 75 | 76 | class AddEdge( object ): 77 | def __init__( self, u, v ): 78 | self.u = u 79 | self.v = v 80 | def __call__( self, steps ): 81 | steps[ -1 ].V.add( self.u ) 82 | steps[ -1 ].V.add( self.v ) 83 | steps[ -1 ].E.add( ( self.u, self.v ) ) 84 | 85 | class HighlightEdge( object ): 86 | def __init__( self, u, v, color = 'red' ): 87 | self.u = u 88 | self.v = v 89 | self.color = color 90 | def __call__( self, steps ): 91 | steps[ -1 ].V.add( self.u ) 92 | steps[ -1 ].V.add( self.v ) 93 | steps[ -1 ].E.add( ( self.u, self.v ) ) 94 | steps[ -1 ].hE[ ( self.u, self.v ) ] = self.color 95 | 96 | class LabelEdge( object ): 97 | def __init__( self, u, v, label ): 98 | self.u = u 99 | self.v = v 100 | self.label_edge = label 101 | def __call__( self, steps ): 102 | steps[ -1 ].V.add( self.u ) 103 | steps[ -1 ].V.add( self.v ) 104 | steps[ -1 ].E.add( ( self.u, self.v ) ) 105 | steps[ -1 ].lE[ ( self.u, self.v ) ] = self.label_edge 106 | 107 | class UnlabelEdge( object ): 108 | def __init__( self, u, v ): 109 | self.u = u 110 | self.v = v 111 | def __call__( self, steps ): 112 | steps[ -1 ].V.add( self.u ) 113 | steps[ -1 ].V.add( self.v ) 114 | steps[ -1 ].E.add( ( self.u, self.v ) ) 115 | try: 116 | del steps[ -1 ].lE[ ( self.u, self.v ) ] 117 | except KeyError: 118 | pass 119 | 120 | class RemoveEdge( object ): 121 | def __init__( self, u, v ): 122 | self.u = u 123 | self.v = v 124 | def __call__( self, steps ): 125 | steps[ -1 ].E.discard( ( self.u, self.v ) ) 126 | try: 127 | del steps[ -1 ].hE[ ( self.u, self.v ) ] 128 | del steps[ -1 ].lE[ ( self.u, self.v ) ] 129 | except KeyError: 130 | pass 131 | -------------------------------------------------------------------------------- /gvanim/animation.py: -------------------------------------------------------------------------------- 1 | # Copyright 2016, Massimo Santini 2 | # 3 | # This file is part of "GraphvizAnim". 4 | # 5 | # "GraphvizAnim" is free software: you can redistribute it and/or modify it 6 | # under the terms of the GNU General Public License as published by the Free 7 | # Software Foundation, either version 3 of the License, or (at your option) any 8 | # later version. 9 | # 10 | # "GraphvizAnim" is distributed in the hope that it will be useful, but 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU General Public License along with 16 | # "GraphvizAnim". If not, see . 17 | 18 | from __future__ import absolute_import 19 | 20 | from email.utils import quote 21 | import shlex 22 | 23 | from gvanim import action 24 | 25 | class ParseException( Exception ): 26 | pass 27 | 28 | class Step( object ): 29 | 30 | def __init__( self, step = None ): 31 | if step: 32 | self.V = step.V.copy() 33 | self.E = step.E.copy() 34 | self.lV = step.lV.copy() 35 | self.lE = step.lE.copy() 36 | else: 37 | self.V = set() 38 | self.E = set() 39 | self.lV = dict() 40 | self.lE = dict() 41 | self.hV = dict() 42 | self.hE = dict() 43 | 44 | def node_format( self, v ): 45 | fmt = [] 46 | if v in self.lV: 47 | fmt.append( 'label="{}"'.format( quote( str( self.lV[ v ] ) ) ) ) 48 | if v in self.hV: 49 | fmt.append( 'color={}'.format( self.hV[ v ] ) ) 50 | elif v not in self.V: 51 | fmt.append( 'style=invis' ) 52 | if fmt: 53 | return '[{}]'.format( ', '.join( fmt ) ) 54 | return '' 55 | 56 | def edge_format( self, e ): 57 | fmt = [] 58 | if e in self.lE: 59 | fmt.append('label="{}"'.format( quote( str( self.lE[ e ] ) ) ) ) 60 | if e in self.hE: 61 | fmt.append('color={}'.format( self.hE[ e ] ) ) 62 | elif e not in self.E: 63 | fmt.append('style=invis') 64 | if fmt: 65 | return '[{}]'.format( ', '.join( fmt ) ) 66 | return '' 67 | 68 | def __repr__( self ): 69 | return '{{ V = {}, E = {}, hV = {}, hE = {}, L = {}, lE = {} }}'.format( self.V, self.E, self.hV, self.hE, self.lV, self.lE ) 70 | 71 | class Animation( object ): 72 | 73 | def __init__( self ): 74 | self._actions = [] 75 | 76 | def next_step( self, clean = False ): 77 | self._actions.append( action.NextStep( clean ) ) 78 | 79 | def add_node( self, v ): 80 | self._actions.append( action.AddNode( v ) ) 81 | 82 | def highlight_node( self, v, color = 'red' ): 83 | self._actions.append( action.HighlightNode( v, color = color ) ) 84 | 85 | def label_node( self, v, label ): 86 | self._actions.append( action.LabelNode( v, label ) ) 87 | 88 | def unlabel_node( self, v ): 89 | self._actions.append( action.UnlabelNode( v ) ) 90 | 91 | def remove_node( self, v ): 92 | self._actions.append( action.RemoveNode( v ) ) 93 | 94 | def add_edge( self, u, v ): 95 | self._actions.append( action.AddEdge( u, v ) ) 96 | 97 | def highlight_edge( self, u, v, color = 'red' ): 98 | self._actions.append( action.HighlightEdge( u, v, color = color ) ) 99 | 100 | def label_edge( self, u, v, label ): 101 | self._actions.append( action.LabelEdge( u, v, label ) ) 102 | 103 | def unlabel_edge( self, u, v ): 104 | self._actions.append( action.UnlabelEdge( u, v ) ) 105 | 106 | def remove_edge( self, u, v ): 107 | self._actions.append( action.RemoveEdge( u, v ) ) 108 | 109 | def parse( self, lines ): 110 | action2method = { 111 | 'ns' : self.next_step, 112 | 'an' : self.add_node, 113 | 'hn' : self.highlight_node, 114 | 'ln' : self.label_node, 115 | 'un' : self.unlabel_node, 116 | 'rn' : self.remove_node, 117 | 'ae' : self.add_edge, 118 | 'he' : self.highlight_edge, 119 | 'le' : self.label_edge, 120 | 'ue' : self.unlabel_edge, 121 | 're' : self.remove_edge, 122 | } 123 | for line in lines: 124 | parts = shlex.split( line.strip(), True ) 125 | if not parts: continue 126 | action, params = parts[ 0 ], parts[ 1: ] 127 | try: 128 | action2method[ action ]( *params ) 129 | except KeyError: 130 | raise ParseException( 'unrecognized command: {}'.format( action ) ) 131 | except TypeError: 132 | raise ParseException( 'wrong number of parameters: {}'.format( line.strip() ) ) 133 | return 134 | 135 | def steps( self ): 136 | steps = [ Step() ] 137 | for action in self._actions: 138 | action( steps ) 139 | return steps 140 | 141 | def graphs( self ): 142 | steps = self.steps() 143 | V, E = set(), set() 144 | for step in steps: 145 | V |= step.V 146 | E |= step.E 147 | graphs = [] 148 | for n, s in enumerate( steps ): 149 | graph = [ 'digraph G {' ] 150 | for v in V: graph.append( '"{}" {};'.format( quote( str( v ) ), s.node_format( v ) ) ) 151 | for e in E: graph.append( '"{}" -> "{}" {};'.format( quote( str( e[ 0 ] ) ), quote( str( e[ 1 ] ) ), s.edge_format( e ) ) ) 152 | graph.append( '}' ) 153 | graphs.append( '\n'.join( graph ) ) 154 | 155 | return graphs 156 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | {project} Copyright (C) {year} {fullname} 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /examples/heapsort.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Using GraphvizAnim to show how heapsort works" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "Import the required packages and instantiate the animation" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "from gvanim import Animation\n", 24 | "from gvanim.jupyter import interactive\n", 25 | "ga = Animation()" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": {}, 31 | "source": [ 32 | "Define an heap" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 2, 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": [ 41 | "heap = [ None, 5, 6, 7, 8, 9, 10, 11, 12 ]" 42 | ] 43 | }, 44 | { 45 | "cell_type": "markdown", 46 | "metadata": {}, 47 | "source": [ 48 | "Now draw it (nodes will be named as the array indices and labelled as the array values)" 49 | ] 50 | }, 51 | { 52 | "cell_type": "code", 53 | "execution_count": 3, 54 | "metadata": {}, 55 | "outputs": [], 56 | "source": [ 57 | "ga.label_node( 1, heap[ 1 ] )\n", 58 | "for i in range( 2, len( heap ) ):\n", 59 | " ga.label_node( i, heap[ i ] )\n", 60 | " ga.add_edge( i // 2, i )" 61 | ] 62 | }, 63 | { 64 | "cell_type": "markdown", 65 | "metadata": {}, 66 | "source": [ 67 | "Define the usual iterative down heap procedure (endowed with animation actions)" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 4, 73 | "metadata": {}, 74 | "outputs": [], 75 | "source": [ 76 | "def down_heap( i, n ):\n", 77 | " t = heap[ i ]\n", 78 | " while i <= n // 2:\n", 79 | " ga.highlight_node( i )\n", 80 | " ga.next_step()\n", 81 | " j = 2 * i\n", 82 | " if j < n and heap[ j ] < heap[ j + 1 ]: j += 1\n", 83 | " ga.highlight_edge( i, j ) \n", 84 | " ga.next_step()\n", 85 | " if t >= heap[ j ]: break\n", 86 | " heap[ i ] = heap[ j ]\n", 87 | " ga.highlight_node( i )\n", 88 | " ga.highlight_node( j )\n", 89 | " ga.label_node( i, heap[ i ] )\n", 90 | " ga.label_node( j, heap[ j ] ) \n", 91 | " ga.next_step()\n", 92 | " i = j\n", 93 | " heap[ i ] = t\n", 94 | " ga.highlight_node( i )\n", 95 | " ga.label_node( i, heap[ i ] )\n", 96 | " ga.next_step()" 97 | ] 98 | }, 99 | { 100 | "cell_type": "markdown", 101 | "metadata": {}, 102 | "source": [ 103 | "Fix the heap calling `down_heap` on his lower half" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": 5, 109 | "metadata": {}, 110 | "outputs": [], 111 | "source": [ 112 | "n = len( heap ) - 1\n", 113 | "ga.next_step()\n", 114 | "for i in range( n // 2, 0, -1 ):\n", 115 | " down_heap( i, n )" 116 | ] 117 | }, 118 | { 119 | "cell_type": "markdown", 120 | "metadata": {}, 121 | "source": [ 122 | "And finally exchange the top with heap positions starting form the last one (fixing again with `down_heap`)" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 6, 128 | "metadata": {}, 129 | "outputs": [], 130 | "source": [ 131 | "ga.next_step()\n", 132 | "while n > 1:\n", 133 | " heap[ 1 ], heap[ n ] = heap[ n ], heap[ 1 ]\n", 134 | " ga.highlight_node( 1 )\n", 135 | " ga.highlight_node( n )\n", 136 | " ga.label_node( 1, heap[ 1 ] )\n", 137 | " ga.label_node( n, heap[ n ] ) \n", 138 | " ga.next_step()\n", 139 | " n -= 1\n", 140 | " down_heap( 1, n )" 141 | ] 142 | }, 143 | { 144 | "cell_type": "markdown", 145 | "metadata": {}, 146 | "source": [ 147 | "We are ready to plot the animation interactively! \n", 148 | "\n", 149 | "Be patient: to generate the required 68 graphs will take quite a bit of time; moreover, in case Jupyter does not correctly resize the cell just zoom in and out the document size (with the browser)." 150 | ] 151 | }, 152 | { 153 | "cell_type": "code", 154 | "execution_count": 7, 155 | "metadata": {}, 156 | "outputs": [ 157 | { 158 | "data": { 159 | "application/vnd.jupyter.widget-view+json": { 160 | "model_id": "0f5267abc9e3478587dd7b61d9cb0c1c", 161 | "version_major": 2, 162 | "version_minor": 0 163 | }, 164 | "text/plain": [ 165 | "interactive(children=(IntSlider(value=0, description='n', max=67), Output()), _dom_classes=('widget-interact',…" 166 | ] 167 | }, 168 | "metadata": {}, 169 | "output_type": "display_data" 170 | } 171 | ], 172 | "source": [ 173 | "interactive( ga, 400 )" 174 | ] 175 | } 176 | ], 177 | "metadata": { 178 | "kernelspec": { 179 | "display_name": "Python 3", 180 | "language": "python", 181 | "name": "python3" 182 | }, 183 | "language_info": { 184 | "codemirror_mode": { 185 | "name": "ipython", 186 | "version": 3 187 | }, 188 | "file_extension": ".py", 189 | "mimetype": "text/x-python", 190 | "name": "python", 191 | "nbconvert_exporter": "python", 192 | "pygments_lexer": "ipython3", 193 | "version": "3.7.2" 194 | }, 195 | "widgets": { 196 | "application/vnd.jupyter.widget-state+json": { 197 | "state": { 198 | "0145d9752a3347329684415ee18a3df1": { 199 | "model_module": "@jupyter-widgets/base", 200 | "model_module_version": "1.1.0", 201 | "model_name": "LayoutModel", 202 | "state": {} 203 | }, 204 | "064543fd497d4af99cfb6d834bc775a1": { 205 | "model_module": "@jupyter-widgets/base", 206 | "model_module_version": "1.1.0", 207 | "model_name": "LayoutModel", 208 | "state": {} 209 | }, 210 | "077b39247e63433eaac2ae6e28444f0e": { 211 | "model_module": "@jupyter-widgets/base", 212 | "model_module_version": "1.1.0", 213 | "model_name": "LayoutModel", 214 | "state": {} 215 | }, 216 | "07dd9a97c6cb4bd69efa75055c4e954e": { 217 | "model_module": "@jupyter-widgets/controls", 218 | "model_module_version": "1.4.0", 219 | "model_name": "IntSliderModel", 220 | "state": { 221 | "description": "n", 222 | "layout": "IPY_MODEL_40ccd01a12994186b38d1454ef51cf9f", 223 | "max": 67, 224 | "style": "IPY_MODEL_a116bbce7e1d40e8bf1a2147ca3a0669", 225 | "value": 11 226 | } 227 | }, 228 | "0bb92d5f16df459fb20899cff0c2beca": { 229 | "model_module": "@jupyter-widgets/controls", 230 | "model_module_version": "1.4.0", 231 | "model_name": "VBoxModel", 232 | "state": { 233 | "_dom_classes": [ 234 | "widget-interact" 235 | ], 236 | "children": [ 237 | "IPY_MODEL_700ed739dda04be5a86694ab1ae11922", 238 | "IPY_MODEL_fcf8a07e2e724a9faf4742294f39fcfe" 239 | ], 240 | "layout": "IPY_MODEL_cd44cbc517e34f70bbb16c547c30f7e8" 241 | } 242 | }, 243 | "0ff2458376ef45688cbfdfef15c77f2a": { 244 | "model_module": "@jupyter-widgets/base", 245 | "model_module_version": "1.1.0", 246 | "model_name": "LayoutModel", 247 | "state": {} 248 | }, 249 | "13abb4b49d414b1380e245b34cc7a9ad": { 250 | "model_module": "@jupyter-widgets/controls", 251 | "model_module_version": "1.4.0", 252 | "model_name": "SliderStyleModel", 253 | "state": { 254 | "description_width": "" 255 | } 256 | }, 257 | "1ad67d55ae6e4b7397dda6a7b828b870": { 258 | "model_module": "@jupyter-widgets/output", 259 | "model_module_version": "1.0.0", 260 | "model_name": "OutputModel", 261 | "state": { 262 | "layout": "IPY_MODEL_c9dbc68860ab449b89d4bac08b0371d9", 263 | "outputs": [ 264 | { 265 | "ename": "NameError", 266 | "evalue": "name 'step' is not defined", 267 | "output_type": "error", 268 | "traceback": [ 269 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 270 | "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", 271 | "\u001b[0;32m~/.local/share/dir-venv/24d353474954826074858e0f8965de74-GraphvizAnim/lib/python3.7/site-packages/ipywidgets/widgets/interaction.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwidget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_interact_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 250\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mwidget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_kwarg\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 251\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 252\u001b[0m \u001b[0mshow_inline_matplotlib_plots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 253\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_display\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 272 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m(n)\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mwidgets\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minteractive\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mslider\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 273 | "\u001b[0;31mNameError\u001b[0m: name 'step' is not defined" 274 | ] 275 | } 276 | ] 277 | } 278 | }, 279 | "2462f70f799b4b13bbab05c394541e75": { 280 | "model_module": "@jupyter-widgets/controls", 281 | "model_module_version": "1.4.0", 282 | "model_name": "VBoxModel", 283 | "state": { 284 | "_dom_classes": [ 285 | "widget-interact" 286 | ], 287 | "children": [ 288 | "IPY_MODEL_fdc28bc5999f467095f5fb917e3212df", 289 | "IPY_MODEL_b3ec82e13efa4e3d99bd3b82a5a3e620" 290 | ], 291 | "layout": "IPY_MODEL_7dee955a7d80425eb0cb04c4bb015246" 292 | } 293 | }, 294 | "29079ce87c474dd29c07e5d35870dc41": { 295 | "model_module": "@jupyter-widgets/base", 296 | "model_module_version": "1.1.0", 297 | "model_name": "LayoutModel", 298 | "state": {} 299 | }, 300 | "2c2beeca39d24c1697ba4e96b96b0b4a": { 301 | "model_module": "@jupyter-widgets/controls", 302 | "model_module_version": "1.4.0", 303 | "model_name": "SliderStyleModel", 304 | "state": { 305 | "description_width": "" 306 | } 307 | }, 308 | "2cdc13884c17444a9193a908620ac90f": { 309 | "model_module": "@jupyter-widgets/base", 310 | "model_module_version": "1.1.0", 311 | "model_name": "LayoutModel", 312 | "state": {} 313 | }, 314 | "30efe19df3be448db86bc149074247e4": { 315 | "model_module": "@jupyter-widgets/controls", 316 | "model_module_version": "1.4.0", 317 | "model_name": "IntSliderModel", 318 | "state": { 319 | "description": "n", 320 | "layout": "IPY_MODEL_58b3b1a2b4624393b08d63173a73d01a", 321 | "max": 67, 322 | "style": "IPY_MODEL_e900d0138bb849078f9a141b0dfbbe13", 323 | "value": 28 324 | } 325 | }, 326 | "337a68f945554e36ab87aeb91d20f1e0": { 327 | "model_module": "@jupyter-widgets/base", 328 | "model_module_version": "1.1.0", 329 | "model_name": "LayoutModel", 330 | "state": {} 331 | }, 332 | "380a61b7b9894e2a80965fac1f204339": { 333 | "model_module": "@jupyter-widgets/base", 334 | "model_module_version": "1.1.0", 335 | "model_name": "LayoutModel", 336 | "state": {} 337 | }, 338 | "392867aa796b44cda3fe129f2b189668": { 339 | "model_module": "@jupyter-widgets/controls", 340 | "model_module_version": "1.4.0", 341 | "model_name": "IntSliderModel", 342 | "state": { 343 | "description": "n", 344 | "layout": "IPY_MODEL_0145d9752a3347329684415ee18a3df1", 345 | "max": 67, 346 | "style": "IPY_MODEL_2c2beeca39d24c1697ba4e96b96b0b4a" 347 | } 348 | }, 349 | "404971416adc453b99b150a74cafbd51": { 350 | "model_module": "@jupyter-widgets/base", 351 | "model_module_version": "1.1.0", 352 | "model_name": "LayoutModel", 353 | "state": {} 354 | }, 355 | "40ccd01a12994186b38d1454ef51cf9f": { 356 | "model_module": "@jupyter-widgets/base", 357 | "model_module_version": "1.1.0", 358 | "model_name": "LayoutModel", 359 | "state": {} 360 | }, 361 | "45442474e4554d5d88fd24ceb912ec74": { 362 | "model_module": "@jupyter-widgets/output", 363 | "model_module_version": "1.0.0", 364 | "model_name": "OutputModel", 365 | "state": { 366 | "layout": "IPY_MODEL_29079ce87c474dd29c07e5d35870dc41", 367 | "outputs": [ 368 | { 369 | "data": { 370 | "image/png": "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AUPAECg7ArHewvTDDz/IZ599JkuXLtURSIcOHRQAFs5fe+01PUDICXS2+q6zzjplB8ceaAgYAoaAIVAYgcinsHASb731lsyaNUtfs2fPlo8++kjIB0KIklJp3XXXFXKCbLrpprL99tvLTjvtJO3bt9d3vjMyBAwBQ8AQKC8CoTsQtuK++OKLMmHCBH29+uqrOrqgWi1atFCjv9VWW6kzYKcVToHRBSMNXk899ZQceOCB+pvly5frmgijFBwOL5wPTujjjz9WpFhwZ62ke/fu+tpvv/3EHEp5lcieZggYAtlEIBQHwgL4uHHjZOTIkfLEE0/I119/LWuvvbbsueee0q1bN+natas6DqaiykXffvutOpIpU6YI50VwWuQMWXPNNaVnz54aQ+vwww+X5s2bl6tIe44hYAgYAplCIFAHMmfOHBkyZIjce++9smTJEmFkceSRR+qrS5cuoZ8iZ5rsscceU0fGLi6cCcEYzz77bDuQmCm1t8oaAoZAORAIxIHQ4x80aJA8++yz0rRpUz3Dcfrpp8uuu+5aDp7L8owPPvhAhg4dKqTCXbBggY6ALr30UunXr1/B4I1lKdgeYggYAoZAShAo6zbeyZMnC2sMrDewFnHHHXfousS//vWvWDkPZLflllvKn//8Z/nwww/l8ccf14yGRPZl4X3YsGHVJrJKifytGoaAIWAI1BqBsjiQRYsW6clwQouwkH3ffffJ22+/LWeccYauddSauxB+SFDGww47TNdInnvuOWnVqpWQCREnyJSXkSFgCBgChkB+BOrsQJgCateunYwePVr+53/+R43uiSeeWCluVf6i43eVsPEvvPCCjBo1SkdQu+yyi1x88cWrBXGMH+fGkSFgCBgC4SNQ6zUQdjkxwnjkkUf0hPjNN98sbLtNCxEy5aqrrpK///3vsttuu8nDDz8sW2+9dVqqZ/UwBAwBQ6DOCNTKgTA9dcghh+gpcRzHgAED6sxIXB/AeRUCOX733Xfy4IMPalTguPJqfBkChoAhECYCNZ7CeumllzSMOpFwX3/99VQ7DwTBWsibb74pu+++uxxxxBFy9913hykfK8sQMAQMgdgiUCMHMn78eD2E16ZNG8GREDIkC0QU4LFjxwr52Rlt3XDDDVmottXREDAEDIGiCJQcTJHghUcddZTsscceMmbMmNjvripa61p8ucYaa8j9998v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\n", 371 | "text/plain": "" 372 | }, 373 | "metadata": {}, 374 | "output_type": "display_data" 375 | } 376 | ] 377 | } 378 | }, 379 | "4545d1142c9c41e08846ac139b6120bb": { 380 | "model_module": "@jupyter-widgets/controls", 381 | "model_module_version": "1.4.0", 382 | "model_name": "VBoxModel", 383 | "state": { 384 | "_dom_classes": [ 385 | "widget-interact" 386 | ], 387 | "children": [ 388 | "IPY_MODEL_392867aa796b44cda3fe129f2b189668", 389 | "IPY_MODEL_8951a96a81bd4ebfa215e2aff4ee00c7" 390 | ], 391 | "layout": "IPY_MODEL_48a6363809ae48b4bda448660c12cd2a" 392 | } 393 | }, 394 | "470450959b6e4f5bb17afd051030ea04": { 395 | "model_module": "@jupyter-widgets/controls", 396 | "model_module_version": "1.4.0", 397 | "model_name": "IntSliderModel", 398 | "state": { 399 | "description": "n", 400 | "layout": "IPY_MODEL_8ae219550b7945d2a9457b920ecd2952", 401 | "max": 67, 402 | "style": "IPY_MODEL_bad7ef750871436d91820947b8fe8a4c", 403 | "value": 28 404 | } 405 | }, 406 | "48a6363809ae48b4bda448660c12cd2a": { 407 | "model_module": "@jupyter-widgets/base", 408 | "model_module_version": "1.1.0", 409 | "model_name": "LayoutModel", 410 | "state": {} 411 | }, 412 | "500732e18f794b4e9cf01abee2b54e1d": { 413 | "model_module": "@jupyter-widgets/controls", 414 | "model_module_version": "1.4.0", 415 | "model_name": "IntSliderModel", 416 | "state": { 417 | "description": "n", 418 | "layout": "IPY_MODEL_f40ca474a7a345e197460bb812bf9de4", 419 | "max": 67, 420 | "style": "IPY_MODEL_ea5ddf836d4d4c3ca1124fbfbe62fb0f" 421 | } 422 | }, 423 | "58b3b1a2b4624393b08d63173a73d01a": { 424 | "model_module": "@jupyter-widgets/base", 425 | "model_module_version": "1.1.0", 426 | "model_name": "LayoutModel", 427 | "state": {} 428 | }, 429 | "5d8bb305684d44b0b811007739cb11a0": { 430 | "model_module": "@jupyter-widgets/base", 431 | "model_module_version": "1.1.0", 432 | "model_name": "LayoutModel", 433 | "state": {} 434 | }, 435 | "5e71202c7d784893b849d8f847e934d4": { 436 | "model_module": "@jupyter-widgets/base", 437 | "model_module_version": "1.1.0", 438 | "model_name": "LayoutModel", 439 | "state": {} 440 | }, 441 | "6c186e465eb240cf880f6c428183be71": { 442 | "model_module": "@jupyter-widgets/controls", 443 | "model_module_version": "1.4.0", 444 | "model_name": "VBoxModel", 445 | "state": { 446 | "_dom_classes": [ 447 | "widget-interact" 448 | ], 449 | "children": [ 450 | "IPY_MODEL_470450959b6e4f5bb17afd051030ea04", 451 | "IPY_MODEL_d8ddf335f4c94448bcf091fe5d0974f4" 452 | ], 453 | "layout": "IPY_MODEL_064543fd497d4af99cfb6d834bc775a1" 454 | } 455 | }, 456 | "6dcd7c03074d486bb3a98f52665a2f7c": { 457 | "model_module": "@jupyter-widgets/base", 458 | "model_module_version": "1.1.0", 459 | "model_name": "LayoutModel", 460 | "state": {} 461 | }, 462 | "6e907daf7dcf4df8ac84f87098944d2d": { 463 | "model_module": "@jupyter-widgets/base", 464 | "model_module_version": "1.1.0", 465 | "model_name": "LayoutModel", 466 | "state": {} 467 | }, 468 | "6f45a62e8def48d38d9720bde9ab736b": { 469 | "model_module": "@jupyter-widgets/controls", 470 | "model_module_version": "1.4.0", 471 | "model_name": "VBoxModel", 472 | "state": { 473 | "_dom_classes": [ 474 | "widget-interact" 475 | ], 476 | "children": [ 477 | "IPY_MODEL_500732e18f794b4e9cf01abee2b54e1d", 478 | "IPY_MODEL_8eb6b4bffe3d4b41a71ce73ac901aed6" 479 | ], 480 | "layout": "IPY_MODEL_0ff2458376ef45688cbfdfef15c77f2a" 481 | } 482 | }, 483 | "700ed739dda04be5a86694ab1ae11922": { 484 | "model_module": "@jupyter-widgets/controls", 485 | "model_module_version": "1.4.0", 486 | "model_name": "IntSliderModel", 487 | "state": { 488 | "description": "n", 489 | "layout": "IPY_MODEL_f049e6e083514932bee21b8e732840f3", 490 | "max": 67, 491 | "style": "IPY_MODEL_d35303be3cba4710b4f31f1792d26e66" 492 | } 493 | }, 494 | "70499c5fdff04a18bb9d9dcf1bcb508d": { 495 | "model_module": "@jupyter-widgets/base", 496 | "model_module_version": "1.1.0", 497 | "model_name": "LayoutModel", 498 | "state": {} 499 | }, 500 | "74035fe498214065afd6afb5855d47f9": { 501 | "model_module": "@jupyter-widgets/controls", 502 | "model_module_version": "1.4.0", 503 | "model_name": "VBoxModel", 504 | "state": { 505 | "_dom_classes": [ 506 | "widget-interact" 507 | ], 508 | "children": [ 509 | "IPY_MODEL_07dd9a97c6cb4bd69efa75055c4e954e", 510 | "IPY_MODEL_b2e010e03a4d484db77c830b2cc10a3c" 511 | ], 512 | "layout": "IPY_MODEL_6dcd7c03074d486bb3a98f52665a2f7c" 513 | } 514 | }, 515 | "770d7cf6490c4f27b89364fa0bbeb956": { 516 | "model_module": "@jupyter-widgets/controls", 517 | "model_module_version": "1.4.0", 518 | "model_name": "SliderStyleModel", 519 | "state": { 520 | "description_width": "" 521 | } 522 | }, 523 | "79a3405639bb4f159b59356f0788c045": { 524 | "model_module": "@jupyter-widgets/base", 525 | "model_module_version": "1.1.0", 526 | "model_name": "LayoutModel", 527 | "state": {} 528 | }, 529 | "7c08570a71414422bc6e6bc15f8c601f": { 530 | "model_module": "@jupyter-widgets/base", 531 | "model_module_version": "1.1.0", 532 | "model_name": "LayoutModel", 533 | "state": {} 534 | }, 535 | "7dee955a7d80425eb0cb04c4bb015246": { 536 | "model_module": "@jupyter-widgets/base", 537 | "model_module_version": "1.1.0", 538 | "model_name": "LayoutModel", 539 | "state": {} 540 | }, 541 | "82339cf271b64b4b86e390a7b805fce9": { 542 | "model_module": "@jupyter-widgets/controls", 543 | "model_module_version": "1.4.0", 544 | "model_name": "IntSliderModel", 545 | "state": { 546 | "description": "n", 547 | "layout": "IPY_MODEL_8c17a8b02f3644feafeb04c024c31a01", 548 | "max": 5, 549 | "style": "IPY_MODEL_908e11ad7133437a948c7d3816e7ba01", 550 | "value": 2 551 | } 552 | }, 553 | "8951a96a81bd4ebfa215e2aff4ee00c7": { 554 | "model_module": "@jupyter-widgets/output", 555 | "model_module_version": "1.0.0", 556 | "model_name": "OutputModel", 557 | "state": { 558 | "layout": "IPY_MODEL_404971416adc453b99b150a74cafbd51" 559 | } 560 | }, 561 | "89ac891a897a474bb158c66cf04468a7": { 562 | "model_module": "@jupyter-widgets/base", 563 | "model_module_version": "1.1.0", 564 | "model_name": "LayoutModel", 565 | "state": {} 566 | }, 567 | "8ae219550b7945d2a9457b920ecd2952": { 568 | "model_module": "@jupyter-widgets/base", 569 | "model_module_version": "1.1.0", 570 | "model_name": "LayoutModel", 571 | "state": {} 572 | }, 573 | "8c17a8b02f3644feafeb04c024c31a01": { 574 | "model_module": "@jupyter-widgets/base", 575 | "model_module_version": "1.1.0", 576 | "model_name": "LayoutModel", 577 | "state": {} 578 | }, 579 | "8dd36965ae4a417e98c764a005909949": { 580 | "model_module": "@jupyter-widgets/base", 581 | "model_module_version": "1.1.0", 582 | "model_name": "LayoutModel", 583 | "state": {} 584 | }, 585 | "8eb6b4bffe3d4b41a71ce73ac901aed6": { 586 | "model_module": "@jupyter-widgets/output", 587 | "model_module_version": "1.0.0", 588 | "model_name": "OutputModel", 589 | "state": { 590 | "layout": "IPY_MODEL_89ac891a897a474bb158c66cf04468a7", 591 | "outputs": [ 592 | { 593 | "data": { 594 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAF2CAYAAABAos5TAAAAAXNSR0IArs4c6QAAQABJREFUeAHtnQfcU1Xy94cmYBcFESuigoKIoiI2sKLA2hCx665917bqFnVt2Ov6WsG1YBdFUVhBsQGKBRWRomBDURAFOypIue/5zn9vTPIkeVpy68znkydPbm7umfObOTOnzjTwHImRIWAIGAKGgCFQSwQa1vJ+u90QMAQMAUPAEFAEzIGYIhgChoAhYAjUCQFzIHWCzX5kCBgChoAh0NggMAQMgaoILFu2TH799Vf9onnz5tKoUaOqN9kVQyDlCJgDSbkCpLH6X3/9tUybNk2mTp0qH3/8scyZM0fmzp2rr++++04WLVokS5YsyYGmSZMm0qxZM1ljjTWkTZs2+lp33XWlXbt2suWWW0qnTp2kVatWOb+xD4ZA0hFoYLuwki7idNePkcTkyZNl/PjxMm7cOHn11Vdl/vz5CkrDhg1lgw02EByB7xTWXHNNdRSMOnAYEA6F0Qjv33zzTcbZ4Hhmz54ty5cv1/tatmwpO+64o/To0UN23XVX6dKli41cFBn7k1QEzIEkVbIprtfixYvlueeek8cff1xGjBgh3377rTRu3Fi23npr2WWXXdSwd+zYUTbffHPBUdSHcCzvv/++TJ8+XR3Vyy+/LO+8844sXbpUWrRoIfvtt5/069dP9tprL2natGl9irLfGgKRQ8AcSOREYgzVFQEM96BBg+Thhx+Wn376SdZff3058MADpU+fPjoyWHnllev66Fr9buHChTrSefrpp2X48OHy+eefyyqrrCKHHXaYnHzyyerIavVAu9kQiCgC5kAiKhhjq2YIMH00bNgwueGGG+SNN94QpqCOOeYYNdbbbrttzR5S4bveeustdWr33nuvToF169ZNzjrrLDn44IOFaTQjQyCuCJj2xlVyKeebAAqPPvqodO7cWQYMGCANGjSQBx54QBfEr7/+eomK80BM8AJPrJnAI7zCM7xTBwsGkXJljnH1zYHEWHhpZX3SpEmyww47qBFmV9SYMWPktddekyOOOCLS6wysgcAjvMIzvONIqAt1MjIE4oaAOZC4SSzF/LK2cOqpp8p2222nC+OjRo0SFq1ZoI4bwTO8s07CIj91Ou2004Q6GhkCcUHA1kDiIqmU88lWXHrrn332mZx//vny97//PdKjjdqIi11j11xzjVx++eWy4YYbytChQ3WnWG2eYfcaAmEgYCOQMFC3MmuFwODBg3WahwVnFsovuOCCxDgPgGBqizpRN+rIlBZ1NjIEoo6AOZCoSyjl/J177rm69fWQQw6Rt99+W7baaqvEIkLd2LFFXdnuS92NDIEoI2ChTKIsnRTzxvbc4447ToYMGaK984EDB6YCjZVWWknuu+8+2WijjeTSSy+VefPmyV133WXbfVMh/fhV0hxI/GSWCo7POOMMdR6333679sZTUemsSuIwCa9yyimnCAcgb7755qxv7V9DIBoImAOJhhyMiywErrjiCrnlllt0YZmpnLQSdedEPRsG1llnHTnvvPPSCoXVO6II2C6siAomrWw9//zzsvfee8uZZ56pp8vTikN2vTm1fuONN+rZkT333DP7K/vfEAgVAXMgocJvhWcjsGDBAj2dzVZWzkgQANFINDAjQSDZwjxlyhRZa621DBZDIBII2C6sSIjBmAABeto///yzxo0y5/G7ToAFASLBBoyMDIGoIGAOJCqSSDkfHBQkThSHBNmBZJSLAJiADRiBlZEhEAUEbAorClIwHqR3797y3nvvyYwZMzKJnAyWXARIaNWhQwfZYosthDAuRoZA2AjYJHPYErDyZdasWfLMM8/ITTfdFAnn8dtvv8nIkSNzJEPK2759+0rbtm1zrgf5gQyJ55xzjpx++umKWZi8BFlvKyu6CNgIJLqySQ1nF154oVx77bWaKpYItWHT3XffrYcYs/kgJPubb76ZfSmU/8nZzvkQtvZecsklofBghRoCPgLmQHwk7D00BJiS2XLLLTWIYGhM/K9gcnOQ15yDfNkL+e3atdP86WHzR/kElZw2bZqm0Y0CP8ZDehGwKaz0yj4SNadHzboHocyjQIRX32233SIdIr5nz57y2GOPCdhFYcQWBbkZD+EgYLuwwsHdSv0fAiRXote/0047RQITptL+/e9/C2ln2fVEro6oEViBGdgZGQJhImAOJEz0rWz54IMPFIX27duHjsb8+fM1odPSpUtl4sSJQkiVzTbbTGNyhc5cFgM+Vj52WV/Zv4ZAoAiYAwkUbissH4GvvvpKgwWSEyNsatmypYaM//HHH2X8+PGyzz77yDfffCN/+tOfZOzYsWGzlykfrAiwCHZGhkCYCJgDCRN9K1s427D66qtHConmzZsLoUM4a3H99ddLgwYN5Oyzz44Uj2AGdkaGQJgImAMJE30rW7Px0eOPIuE4CB1ChsB3331Xfv3118iwCWZRGLVFBhBjJBQEzIGEArsV6iPAtBHGcMmSJf6lyL0fcMABsmzZssg4ELACM7AzMgTCRMAcSJjoW9myySabKAoff/xxZNHAUG+wwQbSokWLSPDoY+VjFwmmjIlUImAOJJVij06lmR6CJkyYEB2m8jhhQf2EE07IuxreRx8rH7vwOLGS046AOZC0a0DI9V977bWFU94Y6bDpggsukD//+c96sNHnhQRXX3zxhZx77rn+pdDfwQrMwM7IEAgTAXMgYaJvZSsCrDEMHz5c812ECQmL5ORgJ7QKgRP/8pe/yPvvvy+jR4+WRo0ahclapmxygoAVmBkZAmEjYLGwwpaAla9h3Dt27CgEMfzjH/8YKiKcPGfEQcDCKGb+u+eee/RcyvTp09XRhQqWFZ56BMyBpF4FogEA5y4w3qRsjUpvPxrI/M4FO8EIOrnmmmtqyt/fv7H/DIFwELAprHBwt1LzECBsCAml7rzzzrxv7KOPANgwpQZWRoZAFBCwEUgUpGA8KAL77befvPHGGxqq3M445CrF119/raMPdl499dRTuV/aJ0MgJATMgYQEvBVbFYHZs2fLVlttJd27dxfCqnMS3Eg08m6fPn00+i4n4jmTYmQIRAEBm8KKghSMB0UAwzh48GDd9XTNNdcYKv9D4Oqrr1ZMwMach6lFlBCwhFJRkobxIocccoi88soreu6CnVBHHXVUqlG5//775bzzztOEW2BjZAhECQGbwoqSNIwXRWD58uVy6KGH6nkHMu+l9czDk08+Kf3795cDDzxQHnnkEWnY0CYMrIlECwHTyGjJw7hxCGAo6XnvtddecvDBB8sdd9yROlyYrqLuYAAW5jxSpwKxqLA5kFiIKX1MEqqc3UZHHHGEnHTSSTqlxTmIpBN1JGzKySefrHUfMWKEhW1PutBjXD+bwoqx8NLAOrm/L7zwQrn88ss1b/qDDz6Y2IVkdqHhMAmWSD72gQMH2k60NCh5jOtoDiTGwksT62PGjNEFdXJhkCXw2GOPTYxxxUkOGTJEsx42adJEp6z23nvvNInX6hpTBGwKK6aCSxvbGFTOQPTo0UNjQe20004yefLk2MNAHagLedepG3U05xF7saamAuZAUiPq+Fe0devWujPrv//9r8ybN0+6du2qu7UILBg3gmd2mlEH6kKdiLJLHY0MgbggYA4kLpIyPjMIcCobA3zdddfJ2LFjNcQH213HjRuXuSeq/8AjvBIUEd6pAzHAqJORIRA3BGwNJG4SM35zEPBzePy///f/hEXoDh06yIknnigDBgzQkOw5N4f0Ye7cuTJ06FDdjjxjxgzdBHDGGWfIKaecIs2bNw+JKyvWEKg/AuZA6o+hPSECCHD4cNSoUTJo0CAN+8HCdLdu3eSggw6S3r17a+6MoGJrUTajCvh54oknNEAkZe+77766PRd+7FxHBJTGWKg3AuZA6g2hPSBqCLCmwCnuxx9/XKeJli5dqsmhyDnCi4CNnTp1klatWpWFdSLlTps2TRfAX375Zc3VsWDBAmncuLH07NlT+vXrp6fpbX2jLHDbQyKEgDmQCAnDWCk/At9//73mW3/ooYdk4sSJ8tlnnwmjFYiQ8e3bt5d1111Xp7uIvdWiRQudVmJqqVmzZnrfokWLhKkyXiS9YkqK15w5c2TmzJkyf/58vY9RxYYbbijbb7+9HH744bLrrrvK6quvrt/ZH0MgiQiYA0miVK1OVRDYcccd5aefftLpJNYhGDHw+uijjzLOgJELo5VSxKiCkYTvdDbZZBMdzTCiYf2FabNVVllFXn311VKPse8MgUQgYA4kEWK0SpRC4Nlnn5V99tlHCMxIfKlixMhk4cKF4o84eIcYifgjEpxDqbWUYcOG6S6rZ555Rnr16lWsKLtuCCQCAXMgiRCjVaIUAv7og3zrpYx/qWfU9DsW0Dt37myjkJoCZvfFGgE7BxJr8Rnz1SHA6OO1116Tiy66qOLOA15wUJRFmYRfMTIEkoyAjUCSLF2rmwQ5+vDhtlGIj4S9Jx0BG4EkXcIprl/Qow8f6uxRCDwYGQJJRcBGIEmVrNUrlNGHD7uNQnwk7D3JCNgIJMnSTXHdwhp9+JDbKMRHwt6TjICNQJIs3RTXLYy1j3y4bRSSj4h9ThoCNgJJmkStPhL26MMXgY1CfCTsPakI2AgkqZJNcb2iMPrw4bdRiI+EvScRARuBJFGqKa5TVEYfvghsFOIjYe9JRMBGIEmUaorrFKXRhy8GG4X4SNh70hCwEUjSJJri+kRt9OGLwkYhPhL2njQEbASSNImmuD5RHH344rBRiI+EvScJARuBJEmaKa5LVEcfvkiyRyEWI8tHxd7jjoCNQOIuQeNfEYjy6MMXkY1CfCTsPSkI2AgkKZJMcT2iPvrwRZM9CoFnI0Mg7gjYCCTuEjT+Q415VVv4bRRSW8Ts/igjYCOQKEvHeKsWgbiMPvyK2CjER8Lek4CAjUCSIMUU1yEOax/54rFRSD4i9jmuCNgIJK6SM74jE/OqtqKwUUhtEbP7o4qAjUCiKhnjq1oE4jj68CtloxAfCXuPMwI2Aomz9FLMe9zWPvJFZaOQfETscxwRsBFIHKVmPMdq51UxcdkopBgydj0uCNgIJC6SMj4zCMR99OFXxEYhPhL2HlcEbAQSV8mlmO84r33ki81GIfmI2Oc4IWAjkDhJy3iN7c6rYqKzUUgxZOx6HBCwEUgcpGQ8ZhBI0ujDr5SNQnwk7D1uCNgIJG4SSzG/SVn7yBehjULyEbHPcUHARiBxkZTxKd27d5eFCxfKlClTBKObJLJRSJKkmZ662AgkPbKOdU0Zfbz++uty0UUXJc55IBgbhcRaPVPLvI1AUiv6eFU8iWsf+RKwUUg+IvY56gjYCCTqEjL+ErfzqphIbRRSDBm7HlUEbAQSVckYXxkE0jD68CtroxAfCXuPAwI2AomDlFLMY1J3XhUTqY1CiiFj16OIgI1AoigV4ymDQJpGH36lbRTiI2HvUUfARiBRl1AK+FuwYIEcfvjhMmPGjJzapm304Ve+1CgEjMAKzIwMgbARsBFI2BKw8mXixInSrVs33co6YMAA3arboUOHRETcrat480ch77//vgwcOFCGDh0qfPfGG2/I9ttvX9fH2+8MgbIgYCOQssBoD6kPArNmzdKfYxgfe+wx2WKLLaRnz57y2muvJfbcR3V4ZY9CwKJjx46KDRhBPmbVPce+NwQqiYA5kEqia8+uEQKffvpp5nDgsmXLtIf9yiuv6G+HDRtWZWqrRg+N+U1MVVF3CCxwHGAD4VzAzMgQCBsBcyBhS8DK1950o0aNcpDwjSVGlBHJYYcdlgpHguOgrtTZdyA+Fj5AYGUjEB8New8TAXMgYaJvZSsCn3zySaZ3nQ+JPyJ59NFH1ajecsst+bck5vPNN9+sdaSu2SOO/AqCCZgZGQJhI2AOJGwJWPny0UcfqcEsBQUGdc8995Tjjjuu1G2x/u7444/XOvrrHMUqw/dgZmQIhI2A7cIKWwIpLx9j2LRpU1myZElJJHr37i1PPPGE3lvyxph/uXjxYjnooINk1KhRJWvSpEkT4V7WQ4wMgbAQsBFIWMhbuYrA3Llzq3UeBxxwgDz55JOJdx4AgjOlrtS5FOFwwc7IEAgTAXMgYaJvZVe7m+jQQw/V7av0uNNC1JXtzNS9FNlOrFLo2HdBIGAOJAiUrYyiCJTaTXT00UfLgw8+KI0bNy76+6R+QZ2pOxgUo1LYFfuNXTcEyomAOZByomnPqjUC9KIbNqyqhieccIIMGTKk4He1LiSmPwAXMACLfOI7G4Hko2Kfg0agassNmgMrL9UI0IvOdyCnnXaaDB482BaInWawSA4WYJJNYGYjkGxE7P8wEDAHEgbqVmYGgY8//liWLl2a+XzOOefITTfdZM4jg8j/OREwARufwAzsjAyBMBFI3+RymGgnpOwff/xR5syZo7uAiAr766+/yqJFi/SdQ27NmjWT5s2b6/uqq64qbdq00dfaa69dZbSRbQTPP/98ueyyyxKCUvmrce211+ourcsvv1wfno2dX9ry5cvlq6++UtmwSwtZ+bLhnVPsvmx4X2uttVQ26667riArI0OgNgiYA6kNWim7F+NDQMMpU6bItGnT9DVz5kz5+eefCyLBdAsGKntEkX0j322wwQbSqVMnfRGuw9+Keumll8q//vWv7Nvt/wII4GBx0BdccIFi98ADD8h7772Xkc/s2bOLnupnYd4/2V/g0bLSSitJ+/btM/Lp3LmzdO/e3RxLIbDsmiJgBwlNETIIcLbghRdekOeee07GjRsnkydPVoPDttLNNtssY/TXW2+9zKiiZcuWsuKKK6pR4wwDhJHyRyXff/99pjeMs+AENc5o+vTp8u233+r99Hz79OkjPXv2lD/84Q+yzjrr6HX7k4vAl19+KSNHjpSxY8fK008/raML7mjRooVG68Uxb7LJJhnZMPJbffXVMyNCHDjEAURGI7/88ovMnz8/I58vvvgi44w++OADPZ/Db7p06SI9evSQvfbaS/bYYw9J05ZqBcz+FEXAHEhRaNLxBaMFjBGB+zBOP/zwg05r7LrrruK/MEyVMBqUSdn0fMePH6+OBdTJQtivXz89B5F2Z4LTeOSRR+Txxx+XV199VZUSeSAbRoI43oMPPrjsykpnAkePXPwX05WrrbaaOnnKpOw0brEuO9hxfqALJWGUQgTcVIfnpow8Z6BJMOFtvPHG3tlnn+1NmDDBc/PogSDiesE55bgesOeCJXq777675wyTvpwj8dyIKDCechgK6QP4U2fq7uMAJmADRtmUj2H2d+X8H57QDXQEXUFn0B10CF0ySicCBLEzShECbg3DO+KIIzw3NeG5uXTPHVRTwxA1CObNm+ddeeWVGWPl1ks81xP33PRY1FgtGz/UjTpSV9+pg4FbFC9bGeV6EM4E3UGH0CV0Ct0yShcC5kBSIu/PPvvMO/LII7Wxu503apzdGkTka0/P1wUW9HbaaSc1qhjX4cOHR57v2jJInXzHQV1Hjx4di1EXOoSTQ6dwJOgYumaUDgTMgSRczr/99pt31VVXeW6h23OLrd7VV1/tLVy4MJa1fv755z23PqKOZN999/Xcgnws65HNNHWgLow4qBt1jCOhU+gWOoauoXPonlGyETAHkmD5ul1U2qt122s9l2vCc4ugiajt/fff77kzJTp9cv3118eip54PPCMreGcKqHXr1h51SgKhY+gaOseICh00Si4C5kASKttbb71VjdOmm27qvf7664mrpdse7LnkUtpzd7lCPLcdNTZ1hFd4ZtRBHahL0gidQ/dwkOiiUTIRMAeSMLkybcA8NMaJRc6ffvopYTXMrc7QoUM9t7XUc2dTvKlTp+Z+GcFP8Aiv8AzvSSZ0Dx1EF9FJm9JKnrTNgSRIpjRYd9hLFzMHDRqUoJqVrooL6eG5g46eOzTnuQOQpW8O8Vt4g0d4hee0ELrIAju6mfQOTVpk6tfTHIiPRMzfWcTcfvvtdQHTHQiMeW1qzz5z7y7shudOw0dyIZrFcXiDx6SsRdVGSugki+vdunWL7SaO2tQ3LffaSXQ3vo47cWqYECCEH3n22Wf1lHLc61QX/gnNsffee2vsLsJ9bLPNNnV5TNl/M2nSJA3TQmypMWPGaOiXshcSgwdyor1Xr14aFoWoB5WIbhADGBLFojmQBIjTLcTKvffeK0888YTst99+CahR3atA7C3CfHz99dfy9ttvC1FmwySiFnft2lVatWqlIUGITZVmGjFihBx00EFyzDHHyF133ZVmKBJRd8sHEnMxPvzww3L33XeL2xKaeueBKDHQ7uChRgQ+6qijxG2XDU3ClA0PxBuDp7Q7DwRBBwddRWfRXaOYI5CWubok1pMTv+zm6du3bxKrV686uZ6u7v7hcFtYRNnOPHjwYpSLADqL7tqp9Vxc4vbJprBi3AE47LDDdE6dHB0kBjLKRYBc4g899JCGkA86qi9RdAmtfvjhh8t//vOfXMbsk7iNBJp7hDUrG4nEVyFsCiumsnvrrbfEnSPQJEzmPAoLkeRLbvuoXHTRRYVvqOBVyqRsy7BYGGR0lgRi6DC6bBRPBGwEEk+5yf7776+7jRh9rLDCCjGtReXZHjhwoPD69NNPhURYQRCJmTbaaCO58MIL9RVEmXEswx0s1FEIu9OeeuqpOFYh9TxbStsYqoALda6LsvRuo+Y82ErLgjH5uullskMsTDr55JN1FMAuNXKuB0GU1bBhQ6HssMlF+S26kYAsk1tuuWVoLKK7YMRIBJ12McFC48UKriMCcVu0MX4979prr9VEQ26ePVJwuG3Ensup7d1www2eS2kbGd5IzOTWIwLjh7IoM2xy5y50Ed+ZhoLv99xzT9gseugwSbPQaaP4IWBTWHV0vGH+jIVHhv8closKuYRC8uSTT8orr7wiW2+9dVTYUj5YpGUx+5NPPpG2bdtWlLdZs2aJy9ini/dscgiTXBwqcRFxNY/5KquskmFlxowZ0r9/f3GJqjSfeuaLkP7p2bOnjqQ5ZGkULwRsCite8tLpiDfeeENOPfXUyHDOvn52O7G3P2rOA5BcgibFipzilXYgft7ynXfeOVT5cPZkl112EXai5dNjjz0mu+22WyScB7whH5euV3WbqT+j+CBg0oqPrJRTFs1//PFH2WGHHSLBOQbzn//8p7g4XPLHP/4xEjzlM7HBBhsI23jffPPN/K/K/pkyKGv99dcv+7Nr80A3LVTQefAMHIibYqvN4yp6L7qMTqPbRvFCwEYg8ZKXuINXynHYITp82C699FI9aT1gwAA97+ASCEnLli11iqRjx47+baG/g5ePXSWZoYyoyKZQPTHS06dPlwMOOKDQ16Fc8/ECu8033zwUHqzQuiFgI5C64Rbar3744Qcte8011wyNh+yCJ06cqB+ZV3cni3X7qsuup4EMH3nkkexbQ/0fvHzsKskIZURFNoXqOWzYMJ0ychkdC30dyjUfryDkE0oFE1yojUBiJtxly5Ypx1HYvvvhhx/Kt99+q87ijjvuyCDZp08f2XbbbeUvf/mL7LPPPpGIAQVebmdYhsdK/YN8oiCbYvVj+ipqU40+Xr5uF+PdrkcPARuBRE8mJTlaeeWV9ftvvvmm5H1BfDl79mwthoNg2cTOH5c8SJ1LVE4Zg5ePXTav5f6fMqIgm0L1wuFPmTJFo+EW+j6sa4Q1gYKQT1h1TGq55kBiJtk2bdoox4QrD5vYrgq5ZFZVWPEPqH3++edVvgvjAnj52FWyfMqIgmwK1ZHpq+222y70Bf583lyOeL0UhHzyy7bP9UPAHEj98Av81/Tu2WHzzjvvBF52foHsblpppZWEbcX55M9rb7jhhvlfBf6ZHT6cAdlqq60qXjZlUBZlRo2itvvKxwddRqfRbaN4IWAOJF7y0mx2Xbp0kQkTJoTOOcECzz77bGGUMXfu3Bx+WFwnlAk93rDptdde0zMGO+64Y8VZoQzygFBmlIjQMhhqkjlFjdBldNqlvI0aa8ZPNQiYA6kGoCh+TcY9TqEvXrw4dPb+/ve/S4cOHTRJkM8Mi9WkLyVWV/YJaP/7oN+feeYZ3SGWv1ZTCT4og91olBklYvQBb4SYjxKhw+gyOm0UPwTMgcRPZnLkkUfKd999pylsw2afKazXX39do92SfY9T6RxSu/jii+Wkk04Kmz0N+fLAAw/IoYceqtMklWaIqRjKokzCzUSFWP+I0uFBHxfSMKPL6LRR/BCwWFjxk5lyTMgQerr03qJCLKYzlbXppptKgwYNIsGWHweLdRpOywdBTN9169YtEvGw/Pq+++67GsZl1VVX9S9F4p04WJz/iMKaXiQAiRkT5kBiJjCfXXq49PifffZZIbiiUVUElixZIpyG59Dcyy+/XPWGCl4hDhXBCjn13aRJkwqWFN9HEzyxV69ewsFTG4HEU47mQOIpN12o7dq1q77Te7MgdFUFefPNN8vpp58uxOvq3r171RsqeIVFdBbUb7rpJjnttNMqWFI8H81GA0bR6O2kSZMiM2KNJ5rhcW1rIOFhX6+SaXisN0ydOlWuuOKKej0riT9m1xGJiojRFbTzAE/KPOSQQ5QHtvUa5SKAzqK76HBUpjtzObRPNUHARiA1QSnC95x55ply6623yrhx47THG2FWA2ONqStChLMew9y/fyYlMAb+VxAn0jkXwgE5tqraVNb/AcOIsEePHhrq5sYbbwxaLFZeGREwB1JGMMN4FNsgWRzGWGGkonBwLwwcsss8/vjjxWXbk+eee05233337K8C///FF1/UsC7En7rzzjsDLz9qBRJxF+eOU2ezQdOmTaPGovFTCwRsCqsWYEXxVhrgyJEjlTUW0/2wEFHkNQiezj33XLnrrruE9Y+wnQf1hQfWQeAJ3tJM6Ka/4QOdNeeRAG2IXxZe47gQAm4+2Vt99dU9d1jMmzNnTqFbEn/NrXlo7m/eo0ZR5i0IrNBJdBMdRVeNkoGAJKMaVgsQcJFvvVatWnkuRpXnto+mBhS35uEde+yx6jzOP//8yNYb3lyfU3mF57QQuohOopvoqFFyEDAHkhxZak0++ugjr127dtrTc6ePE1a7qtX54osvPLcg67ldaZ7bTFD1hohdgUd4hWd4Tzqhg4w60El00yhZCJgDSZY8tTZurtnbd999tbd74okner/88ksCa+l5Tz31lOcWYz2XQtdzsadiU8fRo0crz/BOHZJI6By6x4gLXUQnjZKHgDmQ5MlUa+QOannXXnut57aOem3btvVGjBiRmJrSc3dnLNQ47bbbbp7brhu7usEzvGNgqUuSRiPoGjqH7qGD6KJRMhEwB5JMuWZq5TLQeTvvvLMaqr59+8Z6bcTF2vKuvPJKz2Wu89ZYYw1v0KBBnkuDmqlr3P6B99tvv13rQp2oG3WMK7HWgY7hFNE5dM8o2QiYA0m2fLV29ADvvvtur3Xr1p479ev1798/VjthfvrpJ++qq67SaR/WD9yZCs9l/UuM5KgLdaJuTMddffXVHnWOC7GrCp1Ct9AxdM1GHXGRXv34NAdSP/xi9WvmpW+44QbPJXrSXuKee+7puTwRngs7Hsl6TJs2zXOxrHQRFuN6xBFHeDNmzIgkr+VgirpRR+rKwjN1B4MoEjqD7qBDjDjQKXQrqettUZRBFHgyBxIFKQTIgwvy57kkT97+++/vuTAb2vhdtFrvjDPO8Fw4lNCnhNxJZc+Ft/BcIELlzYWs91wwQm/mzJkBohRuUTgS6kzdMc5gASZgEyYx5YaOoCvoDLyhQ+gSOoVuGaULAXMgKZI3Ddzlg/C22WYb79tvv9Wac+24447T3UwYBKZQOFPhQoF4LiBhxdFxucN1B9V5553nuejCapRcqlzP5Ynw3Olt7+eff644D1EtgLqDAViACfIBI7Bi1xnYVZrQAXQBnUA34IHdY+iM7zDQJXQK3fKvVZove340ELBYWK5FpIHIGkjuBVKaPv/88+IWoXOqvXTpUg3ISIY48jS4Pfv6/brrrivOOEinTp30tfnmm8t6662n+c5rE0XVTW1ocMMPP/xQc2S4qRlxi6z6cj1bIdERaU1db1Zfzljl8Jf2D4QBcVt+9UW6YOc8hJz0pKnlhXzIfUIyL4I31ia/uDNFsmDBAnE7weT9998XZMOLMOvuBLlCj94QhoSc6u4MS5XsjmQVdNNZqjfkqNlhhx3SLrJU1N8cSArEXJ3zKAQBkWwxVK+88ooaeQwKRsKnFVZYQdyCqbjTxdK8eXN9NWvWTI3aokWLhBe50b///nv58ssvNeuc/1ui0m622WZq9Mjch+Po0qWL/ta/x96LI4DDnTx5ssqHTIvI5oMPPhCiEPtEtkocCe/IB9nw4re+bJCPW8CXefPm5aTfpXOBQ8Ixud1UKh+eVR2ZE6kOoeR9bw4keTLNqVFdnEfOA7I+4FTcWoT2SvmfFz1XDBGvWbNmaVRgEgVhrDBcjCzWWWcdNWYYIXc+QNq3b2+hzbNwLce/OA9kgwx82eC4GakgG5wGiceIgosMfKfvFr8zsmG0iWxq4iyK8WxOpBgyybxuDiSZctValdN51AQmEjgNHjw49RGBa4JVGPcwLXjSSSfJZZddVtHizYlUFN5IPdzCuUdKHOVjJmjnUT7O7UlxR4ApMNbZWDdh3Q1dNEomAuZAEihXcx4JFGrMqmROJGYCqyO75kDqCFxUf2bOI6qSSR9f5kSSL3NzIAmSsTmPBAkzIVUxJ5IQQRaphjmQIsDE7bI5j7hJLD38mhNJrqzNgSRAtuY8EiDEhFfBnEgyBWwOJOZyNecRcwGmiH1zIskTtjmQGMvUnEeMhZdS1s2JJEvw5kBiKk9zHjEVnLGtcdjsnEgyFMEcSAzlaM4jhkIzlnMQsJFIDhyx/WAOJGaiM+cRM4EZu0URMCdSFJrYfGEOJDaiEg0JUSoke4yqYqwaAoqAOZF4K4I5kJjIz0YeMRGUsVlrBMyJ1BqyyPzAHEhkRFGcEXMexbGxb5KBgDmReMrRHEjE5WbOI+ICMvbKhoA5kbJBGdiDzIEEBnXtCzLnUXvM7BfxRsCcSLzkZw4kovIy5xFRwRhbFUfAnEjFIS5bAeZAygZl+R5kzqN8WNqT4omAOZF4yM0cSMTkZM4jYgIxdkJDwJxIaNDXuGBzIDWGqvI3mvOoPMZWQrwQMCcSbXmZA4mIfMx5REQQxkbkEDAnEjmRZBgyB5KBIrx/zHmEh72VHA8EzIlEU07mQEKWizmPkAVgxccGAXMi0ROVOZAQZWLOI0TwrehYImBOJFpiMwcSkjzMeYQEvBUbewTMiURHhOZAQpCFOY8QQLciE4WAOZFoiNMcSMByMOcRMOBWXGIRMCcSvmjNgQQoA3MeAYJtRaUCAXMi4YrZHEhA+JvzCAhoKyZ1CJgTCU/k5kACwN6cRwAgWxGpRsCcSDjiNwdSYdzNeVQYYHu8IfA/BMyJBK8K5kAqiLk5jwqCa482BAogYE6kACgVvGQOpELgmvOoELD2WEOgGgTMiVQDUBm/NgdSRjD9R5nz8JGwd0MgHATMiQSDewPPUTBFpaOUtDiPk08+WcaMGSPZ6vPDDz/Izz//LG3atMkRduPGjeWVV16RtddeO+e6fagMAl999ZXsvPPOsnTp0pwC5s6dKyuttJKsttpqmesNGjSQvffeWwYNGpS5lqR/vvvuO9lzzz3lo48+kmeffVZ22GGHJFUv9Lo0Dp2DBDGQFueByLp37y6DBw8uKL1PP/005/r2229vziMHkcp+wFG3aNFCJk6cWKWg3377TTCq2YQsk0r+SAQn0qtXL3MiZRa0TWGVCdA0OQ8gO/DAA6VJkyY1Qu+oo46q0X12U/kQqCnmyBBZJpl8J7LJJpuoE6GtGpUHAXMgZcAxbc4DyFZddVX5wx/+II0aNSqJYMOGDaV///4l77Evy48AmIN9KUJ2yBBZJp3MiVRGwqU1rDJlxuqpy5Yty5nnz2c+jc7Dx+CII44Q8ClGGKjdd9/dpq+KAVTB60xjgX0pB4/skGFaqDZOhLW9UrqdFsyqq6c5kGoQeuihh+SUU04p6ETS7DyArXfv3rooWwzCtBmoYjiEdb06B8+COjJME9XEieA8aPO0faNqEHBgGRVBwBlAz82bskvNO+mkk7zly5dn7nzttdc8N/T3ttlmG+/bb7/NXE/bP8cee6znermKEThlv9z8uud2ZqUNksjUF+yRQbZM/P+RGbJLK9Fmabu0YdqyT7Rx2jo4bbrpph42wKg4AvSsjYog8Nhjj+U0Pt+JmPP4HTC3NTIHo2wD5RZnf7/R/gsFAWRQzMG7bdih8BSVQvOdSLbz8PUYG2BUHAFzIMWx8bbcckvPLUTmGEi3OOmtssoqqR95+LC5swae2zKag5Hf+IYNG+bfZu8hIYAMfHlkvyMzZJd28p0IbZq2nY0RbR8bYFQcAVsDcRpTiEaNGiVTp04V1yvJ+dr1SKRdu3by3HPPCfOpaScWaZlr5z2bmF/v06dP9iX7PwQEkAGyyKZiMsu+Jy3/04Zpy7Rp2nY20faxAdgCo8IImAMpjIsMHDiwilH0b508ebKcd955BRfW/XvS9H7YYYfl7FjBQB188MHSrFmzNMEQyboiA2SR7eDZ3IDMjNxCh1swpy3TpgsRuGELjAojYA6kAC4vvfSSvPHGGzlGMf82TmEX252Vf2/SP3OSef31189UEwN1+OGHZz7bP+EigCyQiU/IKsmnz/16VveO86ANF4uowO/BDVuATTCqioA5kKqYlBx9ZN9uTuR3NI488sjMwTXCaOyxxx6/f2n/hYoAskAmEIcLkVXaqSbOw8fIRiE+ElXfzYHkYUJvY+zYsTk9trxb9KN/yveZZ57RedJC96TpGr1cf72I/7OnTNKEQxTriiz8ESEy8v+PIq9B8cTaxujRo7U4vy0XK5tRCDYB22CUi4A5kFw8qh19+Mq28cYby7333qtRPjt37pz3lPR97NSpk3To0EErbvPr0ZO/LxNkhKzSTrTZjz/+WNswbRny23YhbHDCl156aaGvUn0tMuHcGVLOmjVLpk+fLrNnzxZCT/P68ssvNUT4r7/+KrwWL14sK6ywgi7QNm/eXFZccUVp1aqVhhAnjPh6660nW2yxhWy22WY1Dvbna8C7774rXbp08T/mvKNA9ERofBdeeKH069evpMLl/DgBH3755Rd57733ZObMmTJnzpyMfBYsWKByQTZc//7776V9+/YqFxZwibOEXPzXRhttpBjmh3xPAEShVoG2Mm3aNCESst92eP/xxx9l0aJFgvyQ3eqrry7rrruu0HZ4rbXWWhnZcB3Z0X5oV2khRmWPP/64dh7B0G/rherPYvtWW21V6Kui15YsWSIffPCBtp8vvvgiI5+vv/5a5ULbQUZESm7atGlGNuyeW2eddTLy2WCDDaRjx47Stm1bIQx/FCg0B4Jyjxs3TsaPHy9vv/22gksuCZ/WXHPNDHArr7yygopB4gXQAA7w/Ib8BzyPd38ahSijNAYcwi677CI9evTQz/7zC70fcsgh8sQTT+RMX/nKREhyHEcatqbiKGkoyIc8HlOmTFHnno2tr9gtW7bMOAsayowZM2TrrbdW2SAjHIpv0DBmPjEnjzMGV2RD/gqMm1H1CIApckE+hGzH6LnzDJkfZjttMKXN4CzeeecdHSXSNnynMn/+fJUPHTXkB9ETx0jRS0cuyId2RFtIOj399NPqSMDVb/t+nfl80EEHyaOPPupfKviOo0Y2L7/8srYjPmdjS5wyOlC84ySQDTKiY4xcfNu2cOHCTNv55ptvMmXxG5x8165dZdddd1X5hNUhC8yBYHzcCW719CNHjtSpHxBhxMCOEIwJL9/DAmZtCcNHL5hRDI2KdxTh/fff10chsH333VdHD3vttZd6e78MhLz55ptntub6ykPjwXEQmC7JhFFCLjjQF198UXuuJILCGbiQDxnZoLiM+Ir1gHhOMUeAsyexjy8bHBM6gfHDaGGk9t9/f5UPemD0OwLoMr3kp556So0S7QknTNvB0IMX7YeQ5fnnPvynlJINMwD0iBll+u1n0qRJ6nRITIVTog1gQIngW0zGfllxf6cNsH0XR+DbAuqE3mNP6Jz6xKwIZ0mQD+sqdGQh7AkdJF82vDPK43m1JTrN/gwN7YcXbYcRDeTCrkjfvn217aATpabjalt2yfud4lSUnEJ6Z5xxhte6dWs95ekUz3O7QLwhQ4Z4n3zySUXL9h/uGobnhOudeuqpntvCqHxw8tQdgPOcguhtRx99tF53wOu7czQ5MXL8ZyXp3fWKFBfq6sdMckbIO/fccz1ClPz0008Vr64zhJ5zJN4tt9ziOcPkuZ6Y4u8aqOfmnD03eqk4D1EtgLqDgZuOVUzABozACszArtKEDqAL6AS64YyJ6go6Q5tCh5JMhC2irtTbtw3HHHOMVhnbgQ3BlvA9tgUbAy7YnCAIG4otxaZiW+EDW4vNxfZWmioSysSNBDxiyLjeu1aIgGUnnniiKqLzpJWuU7XPd6MS75///KfnegPKHwETXc9CX+7QleeG+tU+I843uB6S50ZVnhv2av0xDFdddZXn5mlDrxYGa+jQoR5ywKm5UZD+76Y6Q+ctKAaoK/Wn7mDA/2AShEOvro7oCLriOxN0CF1Cp5JM2ATk4NsJP8gqNgRbgk0Jm7CtOHtsLTYXZ4INxhZjkytBZXUgMPnII494bppDmXdzdN5//vMfz83lVYL3ej+TWEBuSsDbcMMNlV+37uLdcMMNnltwrPezo/gAekV/+9vfPLdAqj19Rl0TJkyIIqvKE0bpyiuv9Nx8vMpnt912y4wYI8t0PRijR0sdafjUmbpH2TCjO+gQIyN0Ct0KquddD5jr9FNsArYBG4F8sBnYjqjGE8PmYnuxwfCLTcY2l9uRlM2B0Gsi8BjMuoU3z80J1klQYfzILSB6bk7Rc4voOkxlCHj//feHwUpFynRztN7ll1/uublxzy3Y6fA2TlNDNNL77rsvM5XjcltHYrRULmHRq6dOtB2mq6hrVA1ToTqjS0yZoFvoGLqGziWFsAXYBKawsBHYCmxGXAhbjE1Gv9x6mVfO0Xy9HQg9DuYEGdoxrH3++efjgmtBPt0CorfPPvso2D179gxkHrEgI2W6+MILL3isJ6D8DG3jpPj5EGBU3dkbbcxuu6NOnbidePm3xeYzvDP9Q10wUNSt3D3EIMFAt9AxdA2dQ/fiTKwhYAMwvNgEbEOcCduMjcZWH+tywZRjtFgvB4JnczubdBHp+uuvT9SCmtuN5Ll91zo8v+2222KnN/QA//rXv6ryb7vttpGYoy0XiCRKOvPMMzXPBT0qtyumXI8O7DnwDO9uR47WJUmJt1gPQOcwvOhgHEcjtHmm5rAB2IKkEJsesNUs/NNpqe9MUZ0cCL0kF8FSexpuy5jntpclBd+cerhzC7q7gYbgDg7GJrseOzNowBiniy++OFbTITkCqOYDO2TcwUSdNmEnSlwIXpnqgXfqkERitIjuoYPoYlA7LuuLJY6ctk6bZ2cTNiCJhM3GdjNaxJbXdeRbawfCsNvtBddhEAUnfRsfysPUAouE9BjdOZNI69Nbb73luXMausOsnHOdUa20O9ugu2No8P/617+iymaGL3iEV3b0wHvSCR1kpxI6iW5GmWjbtHHaOm0+6YTtxoYzpYVNr8t0cK0cyHfffee5U92eO+TnPfDAA0nHN6d+LpCa505d6+4Ld9o657uofCBFqTu1r5sZ3AGjqLBVcT44D8E5BQzzn/70p0iOuOiRwxs8wmuaCF1kgw26GdU0urRpdlbRxmnraSJsOTYd217bTk2NHQjeiZV8lCDuC+V1VQ53itpzgdc8d3rec/G66vqYivzOhU3QOVv2fddWCSrCUAgPZd6a3tQJJ5wQQumli4QneIvjelrpmtXsW3QS3WRdAV2NEtGWadO0bdp4Ggmbjm3HxtdmJFIjB0LvyYWYUC9V30WXuAuHuVwXB8pzYQo8F58mEtVxoan1FOp2220XicNmYYJy4403ai//ggsuCJONnLLhhZEHvKWZOAiJjnJiGp2NAtGGacu06bis01QKN2w7IxFsPTa/JlQjB3L++edr78kFEavJMxN/j4va66222mq6dz+IcBKlAGXRj54T2yZdYLxSt6bmO+Z1MdjDhg0Lvc7wAC/wZOSpjqKr6GzYC9S0Xc7f0JZp00aeh41npIzNrwlV60A4HctKPadMjX5HAKAxDJxODZPYKcK0QFR6dGFi4ZeNYXDBMj0XbND7/PPP/cuBv1M2PMBL2B2NwCtfokB0FZ1Fd8Mk2i5t2DrGuVLA1mPz/TiBud/mfirpQDi+zz5ohp1RiGGVy3r4n5jXZsjnIvmGwgz702kAaZ1XLwU6h9rY+UMPMyyibHiI8+HNSmGHzqK7YZ2xoM3SdqO4XlYpzGv6XGw9Nh/bX11Yp5IOhFg8eCKXG6KmZafqPobgGAi2wAVNCNmFcPZ23HHHoIuOTXlsxcRIEWAuaKJMyk7DdtC6YovuosNhdE4PPPBAbbthT6PVFbtK/w6bj+3HB5Siog6ExSXmBjnyblQcAb8n9eqrrxa/qQLf3HrrrWqgknoQrRyQcTjK5TPxXAa5QKeQmK6iTMqu6wGtctQ/6s9Ad3Gy6HKQRFulXBu5l0Yd248PKLVZqKgD4bg7Huizzz4rXUpA33LIB4Gzh558CFGZFuAwDnkADj300ICQ+L9iCLrnsiMGWmaxwtixQWRSTh7fcccdoU3pFeJvxIgRaixeeumlQl9X5BplYaAoOyxia2qpSMvsiHryySc1rAW5RcIidBhdDpJoq7TZMA9BVycf8KAjwvpMWOtn2H58AL6gGBV1IC57liZSKfbDIK8/9NBDnsuKp1MROJLrrrvOc7mca7TIEwSffkA8l1kviOI8l85UDRQGIGxi55dLq6lDXQ6aEkCPLZF333132Kxp+Tg3TkIfddRRgfFDWZRZ062Q5WSMyLgkNSJAY7GtzDg4zj1wgIxIwAMGDNAos2EYKnQYZ4tOB0G0UT8QZxDl5ZdRE/kgB5JS+dHNwxzFkkwLX1CMCjoQtrQhVBKRhE1EjGTHBiGus4k5TACOAn366aeK15133hkIO3/+8591/jbMHpRfUYwlOQeyCYeP/gTZ688uP/9/Rq2EpwgiqB9lUFYYp80XLFjgjRo1Sp05+BdyIJx1IKcFIdd9YjTC2YxC9/v3VOodHWYdEZ0OgmijYEObDZpqIh94IvwLDrVdu3bKa5gOBB8AXsVGqQ3dl1XIMa+5f/fYY48q3wV9gRzNfpL57LI7dOggboiVfSm0/10IBM1JDG5BEOW4xENCzvIwyW1TFdeLFTcCyWHDnWbVz+SUjgK5bbTidpMIOb4rTZRBWZQZNDnHIK7HqLnLi5XtHIfmu3dh1zO3uBPI4ua75eqrrxY3isxcD+IfdBhdDqrtuFPw2lZps0FTTeQDTy6kiOy0007ipvaCZrFKefgAdy5EwK0QFXQgbpFJXAYrWWONNQr9JtBrJKVHwd1CmzoSv/Dhw4fLfvvt538M/R2Bg1ulye0aEZfQRhWs0mVV93z4cB0mcQttObe6+WVxYf7FjUDUWOV8GcKHbt26qbMNQj6UgVGkzKiRm1IT2o1LxypuCjiHPbdtU9xuKHE9zpzrQXyg7aBL6HalyS3ci9/BqXRZSXg+PgBfUKztFHQgCNNFpYxE/V2WM3GJ68UNobSn6wKzyT/+8Q9xobDl5ptvjgSPMAFeH374obgpjIry5PJIiJsjjYR8XHwjrSv6kk9dunTRS2ASNrkpJXHTAWqkKs0LWGCgKTNq5KavxK0BaNvJ583vkbtcHvlfVfwzbQedRrcrSbRN9DEqtq2SdS3ns8GrUBunjIIOxO1wEheVspw81OtZLoaQ/OEPf5A333xTG6dbuJXRo0eLm7et13PL+WPwojfucliX87FVnoVsoCjIx8UQUl4KGR23e0O/C3uaTZn4H14+dv61SrxTRn7vvhLl1OWZ8+bN058xos8nl59EL7lNKvlfVfyzr8uVlg9tkzYaVflUHOg6FgBexWRT0IEwh+tCMNSxuPL/zC2iy0UXXSRMjdCLcIezxO3EKn9B9Xiij9fPP/9cj6dU/1P/+X551f+icncwymD+2m1JFLdrJFOQi2gqbiOGNGnSRHwnk/kypH/Ay8eukixQRhRkU6iOCxcu1Mu0p3xyO5P0UqVH0Pnl8tnHC7tTSfLl75dXybKS9GzWborJpuAqLL1GF9I3Mhi4rX7i4rPoQo6LoyMuB7t+ppd71llnRYJPFvohjGYlyX9+VOTz4IMPyiGHHCJub73O+zMqxGm4II/67sJFVBKOGj8bvHzsavyjOtxIGVGRTT77bmuxXirkJHzjyuaUoMnHq9KjVf/5flsNup5xLQ/5+Njl16HgCISFE3f6MP/eUD4z5Dz99NPl73//uzBP27dvX3n99deFxuCO2Yvb4hYKX/mFui16eqnSGw/850dFPu7Mhzp25tfdgSN55JFHdK0Kg4SjjwqBl49dJXmKUtvJrycjeKjQYrXbyqvfuT3/+h7kH1+XKy0f//l+Ww2yjnEuC7x87PLrUdCBsEDNtEQUaOzYscJ20exdLS5+jpxyyilCxfg+CgSPLlG9MNyrJCEbiPKiRBgnZMRUyGWXXaajj9NOOy0yLIKXj10lmaKMqMnGry9TN2wNZYoxn3ye2XETNPllV1o+zOXTRv3ygq5nXMsDr7Zt2xZkv6ADwRC4tI66M6LgrwK8yFQIxNRVNvXs2TP7Y+j/sz2QLceVJnb4YAiKbaurdPnVPZ8dcm+//ba4cDOBTBlVxw/fYzDZeJHdCanJ7+pyD2VQViEjXZfnlfs3TPkyWszfHccGFXc6PZTt4egyOo1uV5poo7RVo5ohwO44fEEx21bQgbgomTqHXWzrVs2KLs9dOAoXVlhcTJicBz799NPay4XXsIn99UyrBcELh3q6d+8e2MGrmmILBtdee624UCaqcLvvvntNf1rx+/xDakHIxy/DL7PilStQgL/byp+Wyr7l6KOPFhfBQa666qrMZbb2cv6Dg4RhrFmBFTqNbleakA9tFX0Ni0rJJ5unmt6X/Zty/48PoBPv63WV57s1hipEljt3/iIyWdTc/nDPGSSNcEoSGMKnE4Tt448/rsJ7GBf8eD6uJxVI8QSTJGtYGOEY8iuIrgwdOtRzBkCDKYYRmjufp/zPxPMJMuwNZVFm0OR2ymj4eDcK0vAT7jCn585KVUnVSswydwhXU5dec801mvDqP//5T9DsannoMLqMTgdBtFFnBDWQZBDlZZdRU/m4bfHepZdeqnzCqzsHp7Gxsp8V1P9k0sQX0M4LEfuiCxIxjtq0aRNKQLiCDLmLbrFNY7K4A2zFbgnlulvY99zulcDKDjsgXHZFCfr2zjvvREpPsvkj6ikRRYPMHElZlEnZUSYMGrGxXG88NDaDDkRKRWmrtFmj0gigF/iAUoFIizoQtzitHpDAeEbFEZgxY4bXqFEjz03fFL+pAt8cdthhXuvWrT23t78CT0/OI8855xyNvkpQzqCIsoj4StlGxRFAd9FhdDlIoq3SZmm7RsUR8IOi4guKUVEHwg+YNnI7Izy3b7rY71N/namAMAw503o0gotdDg6jwgjMmjVLDfnZZ59d+IYKXqVMnAg8GBVGAN1Fh9HlIMl3XLRdo8IIYPOx/fiAUlTSgbz11ls6P3nFFVeUekZqv3vuued0lDZo0KBQMHARVT0XgiIySb9CAaFEoQcffLDn9q97TPkFTZRJiHR4MKqKAMmK0F10OAyizbK+QBs2qooANp+1KXxAKSrpQPihO2/hudO1ntvmV+o5qfvOnUHR+UEWLMPKy8FUCQulLrpoqPPYURT+PffcowaCDIlhEWVjpODF6HcEmFtHZ9HdIKcWf+fA0zZL2yXxF/RZL8MAABlSSURBVG3Z6HcEsPXYfGx/dVStA2GhzYWm8NwebS9qi9fVVa5S35MxjEU4dygp9J1gLqik9hT+9a9/Vaq6sXsuUyL0btmtFzbBA7wEPU0Tdr1LlY+u0rtFd8MkdnHShmnLtGkjT208th6bj+2vjqp1IDyADIUugqfXo0cPz8VFqe6Zif+elKE0gIcffjgSdXWH97SnG1RGxEhUuggTLty/50LeeBtvvLHu2ityW2CX2TkIL/AEb2knPyMgOhsFog3TlmnTaSdsO+mpsfXY/JpQjRwIDxozZowOa/bff//QpmxqUqFK3+OiAquxDnrXVal60XtirzgLkk888USpWxP9HVMR5G8mRao7aR2ZusILPMFbmqdL2PKNjqKrUerx05aZaqRtp5WYhse2M3WFra8p1diB8EC8NQrQq1cvjzzKaSIU/q9//asqmosMHLmqc4CPw2suaqaXxpHILLfbif39LFxXt/AXhvDgCd7gEV7TRugkuomORvGwKW0aJ0Ibj5JzC0JPsOV777232vbazqrUyoFQmREjRujJxK233tpzyWeCqF/oZTAX2L9/f1WwKO9Io2HSu6MhcEArLQ0B48xWahZEXcy00PWlGAMuq6byCK9RdHLF+K7PdXQQXUQn0c0oOg+/frRt+KSt12T+3/9dnN+ZVsWWc9oc215bqrUDoQDCAbgsYp6LbumNHDmytmXG6n4avYtQ6rkYQd6QIUMizzsN1oW+14ZAr8LF04k8z/Vh0GWrVNl06tQpFtuZ2b4Kr+gTvCeZ0D10EKOMTsahQ0MbRza0edp+kgnbjQ3Hltc1DFOdHAigzp0713PZ6FQ5WIByOQYShTVbDWngLnub7kBzEWZjVT/WQjgDwVZJYnUljVyIaY2HhnE67rjjPJd/JDZVhFd4hndiulGXpBE6h+6hg8OHD49V9Wjr7ESi7WMDwgz1UgngsNXYbPQPG44tryvV2YFQoEvmpEG/OHFLzJTazp/VlelK/w5v7NK1KsAuKVJsnSO9XXbO+YYqKsEn6yM/pkBc1FjdGutyr3hxDrUD79SBbb7UKcrTOzWVGTqGU0Tn0D10MI6EkaXtUw9sQV176FGrOzYaW43NJmAjNrw+VC8H4hc8c+ZMjegJ2DvttFNsT3e60MXegAEDdFsf+6Bfeuklv4qxfnc55HUXED2qM888s149jrCAoBd4//33ey6ZmMqHHnwSdjRRB+rCVlKX7EnrGMceL71YdAsdY8fZfffdF5aqlLVcbAC2APlgG7ARcSRO3GObsdF77bWXh80uB5XFgfiMDBs2TLcqwqSLH6/rI/X1cP6zK/nuEqZoyAmUhAVOhq1J6A1mY0YIb+ah6e3SyF22QM8lPcq+JZL/s5h51113qeNAr4jN4xICRZLX+jBFnagbdcRJUuc4LOSyRRldQqfQLXQMXUsSYQuwCdgGbASL7NiMqBO2l4VxbDF6xTZybHQ5qawOBMZYKCM/BAuFMO1SnXoDBw6M3Dwv8e1vv/32zFSVy+2tIb/j0GjrowCEjmDLIoeFaAx77rmn55IJeYsXL67PY8v+W3ZTnX766br11Xcc48ePL3s5UXsgdfQdCdt+wSBqO8vQFXQG3UGH0CV0KqywJEHJENtAqH5sBTrJ1BY2pFiujKD4yi+HNTVsLrYXPrHF2ORKbGIouwPJrgxhgA899FDd1YCi7bDDDh4JbMI65PXVV195JM7p3bt3hicaq8t2mLgRR7YcCv3PHO9tt93mde7cWZVs1VVX1bDaGIYwzvig3GxtJYENUwYo/mqrraaLfXGdNiiEe02vUWcWOsEALMAEbMCoEoagOr7QCXSD0OvoCjyhO+hQ0jbQVIcFIxJsBrYDu8auLWwKtgUbEwZhU7Gt2FifJ2xvqVDs5eCzAQ9xylBRIke0O4UqbmeQuDlFTSfpQjuIOzavL9JZuvnfsubQplou25m47F7ienX6mj59Og5TunbtKv369RM3FA0kD3NFwS3Dw8mH7Ya2Kh9yebvTqIqRL59tttlGXK+rDCX9/ggXNkGckZQJEyaobF5++WVx6wHipkHENUZxMaTEhduWFVdc8fcfpfA/1+sVNw2hshk1apS4HVzitl7KLrvsom3HzWuL62GK28dfVnS+/PJLmTRpUqbtkOfenVbW9oJsXJRh2W677cpaZhwfRntxjlXtGxg54y1uqihj28gl7sKilzVdL3L44IMPNLe7b9vcZgVxBzXF7arStoN9c9tzKw5pIA4kuxbkX37mmWdk3Lhx+nKLOfo1Rqt9+/baGNq2bStup4C+MFwu4Jm4OVZtJG73gLgegLh49YIRooGRO9gt4unLZYETHMV7772njY2H8yy3I0Rf++yzj+C8jAoj4Pa+i1twU9lg1F0ATb2xRYsWKhvXE5b11lsvIx+3YKpywYAhIxepICMbZMTvMUa+fFxPSR3HrFmzxPWk9X43FaCyQfn32GOPshvDwjWN31X0nZzzdMJoP5MnTxY3zy0u+6HQZnAkbv0kIxvajpsGy7Qd5MP9ftvheW7aKSMbd6hMXNBHlQ/tFOL3OCvaj1t8FTfqiB9wAXGMEc+2beg8RKfInStRx7LBBhtk5OPWVLSD5LcdN5IRNz2odg0ZuVFfTttx2SPVtmEzcSIQNjPbttFOg6TAHUh+5dyQT3s69EZ5YfxxAvRGazs4csN9NW4YORoTL3fKUlwwu/xi7XMNEMDAIw+cii8flNdFIFDHXYNHZG7BsbhzAdob82XDO6NBNyWSuc/+qTkCbupI6PX6suGdUTdtCkdRG2Kk507yZzpxyAZnQW8aB2VUewQw+C7dc0Y+OGectFszqdXDGNUw6sT5IA+//TAzQJsKk0J3IMUqzyiDniujC5dBTHtNbnFIXIx6Oeuss6Rnz57as0LxAZFRRtqnO4phWYnrNAJ6WDh6erK86DW5Lag6gvBHjDgHesLICCdiVHkEcB44EdoPTsaXDe9Mc/iyoeeLYaLt0PkyCgYBZk1oO8iI//0RIaMKZlj8EYnbnCCMUmg/jE6iSJF1IIXAwoHghVlPYR7WyBAwBAwBQyA8BGxsGh72VrIhYAgYArFGwBxIrMVnzBsChoAhEB4C5kDCw95KNgQMAUMg1giYA4m1+Ix5Q8AQMATCQ8AcSHjYW8mGgCFgCMQaAXMgsRafMW8IGAKGQHgImAMJD3sr2RAwBAyBWCNgDiTW4jPmDQFDwBAIDwFzIOFhbyUbAoaAIRBrBMyBxFp8xrwhYAgYAuEhYA4kPOytZEPAEDAEYo2AOZBYi8+YNwQMAUMgPATMgYSHvZVsCBgChkCsETAHEmvxGfOGgCFgCISHgDmQ8LC3kg0BQ8AQiDUC5kBiLT5j3hAwBAyB8BAwBxIe9layIWAIGAKxRsAcSKzFZ8wbAoaAIRAeAuZAwsPeSjYEDAFDINYImAOJtfiMeUPAEDAEwkPAHEh42FvJhoAhYAjEGgFzILEWnzFvCBgChkB4CJgDCQ97K9kQMAQMgVgjYA4k1uIz5g0BQ8AQCA8BcyDhYW8lGwKGgCEQawTMgcRafMa8IWAIGALhIWAOJDzsrWRDwBAwBGKNgDmQWIvPmDcEDAFDIDwEzIGEh72VbAgYAoZArBEwBxJr8RnzhoAhYAiEh4A5kPCwt5INAUPAEIg1AuZAYi0+Y94QMAQMgfAQMAcSHvZWsiFgCBgCsUagcVS5nzt3rsycOTOHva+//lo/T506VdZYY42c79q0aSPt27fPuWYfDAFDwBAwBCqHQAPPUeUeX/cnT5kyRbbaaqsaP+DOO++U4447rsb3242GgCFgCBgC9UMgsg6EanXo0KHKKKRQdRs3bizz58+X1VdfvdDXds0QMAQMAUOgAghEeg3k6KOPlgYNGpSsdqNGjaR3797mPEqiZF8aAoaAIVB+BCLtQA499FCpboZt2bJlcsQRR5QfGXuiIWAIGAKGQEkEIj2FBefbb7+9vP3227J8+fKCFWnevLl88803wruRIWAIGAKGQHAIRHoEAgxHHXVUUefB9FW/fv3MeQSnL1aSIWAIGAIZBCLvQA455BBp2LAwm0xfHX744ZnK2D+GgCFgCBgCwSFQ2DIHV361Ja299tqy2267CaONfGLX1V577ZV/2T4bAoaAIWAIBIBA5B0IGLBIzmgjm3Aohx12mLCF18gQMAQMAUMgeAQiv4gOJD/88IO0bNlSlixZkoPQ+PHjZZdddsm5Zh8MAUPAEDAEgkEgFiOQ1VZbTfr06ZMzjbXOOuvIzjvvHAxKVoohYAgYAoZAFQRi4UDgOnsai0V1dmdVd8iwSm3tgiFgCBgChkDZEIjFFBa1XbRokay55pryyy+/aOXfeecd6dKlS9mAsAcZAoaAIWAI1A6B2IxAmjVrJgcffLDWbtNNNzXnUTs5292GgCFgCJQdgUhvYVq8eLHMmzdPFi5cqCOQzp07KwAsnL/55pt6gJAT6Gz1XXnllcsOjj3QEDAEDAFDoDgCoU9h4STee+89mTZtmr6mT58us2fPFvKBEKKkprTKKqsIOUHWW2892XzzzWXLLbeUTp066TvfGRkChoAhYAiUF4HAHQhbcV9++WUZN26cvt544w0dXVCttdZaS41+27Zt1Rmw0wqnwOiCkQavZ599VvbZZx/9za+//qprIoxScDi8cD44oc8//1yRYsGdtZIePXroa/fddxdzKOVVInuaIWAIpBOBQBwIC+DPPPOMPPHEEzJy5Ej5/vvvZaWVVpIdd9xRdt11V+nevbs6DqaiykU//vijOpKJEycK50VwWuQMadq0qey5554aQ2v//feXFi1alKtIe44hYAgYAqlCoKIOZMaMGTJ48GC599575bvvvhNGFgceeKC+dthhh8BPkTNN9uSTT6ojYxcXzoRgjCeffLIdSEyV2ltlDQFDoBwIVMSB0OMfOHCgvPDCC7LqqqvqGY7jjz9ettlmm3LwXJZnfPrppzJkyBAhFe6cOXN0BHTeeefJgAEDigZvLEvB9hBDwBAwBBKCQFm38U6YMEFYY2C9gbWIO+64Q9clbrvttkg5D2S30UYbycUXXyyfffaZPPXUU5rRkMi+LLwPHTq02kRWCZG/VcMQMAQMgTojUBYH8tVXX+nJcEKLsJB9//33y/vvvy8nnHCCrnXUmbsAfkhQxv3220/XSF588UVp1aqVkAkRJ8iUl5EhYAgYAoZAYQTq7UCYAurQoYOMGDFC/v3vf6vRPfLII3PiVhUuOnpXCRs/duxYGT58uI6gtt56a/nnP/9ZJYhj9Dg3jgwBQ8AQCB6BOq+BsMuJEcajjz6qJ8RvuukmYdttUoiQKZdeeqlcc8010rVrV3nkkUdk4403Tkr1rB6GgCFgCNQbgTo5EKan+vbtq6fEcRzHHXdcvRmJ6gM4r0Igx59++kkeeughjQocVV6NL0PAEDAEgkSg1lNYr776qoZRJxLuW2+9lWjngSBYC3n33Xdl2223lQMOOEDuvvvuIOVjZRkChoAhEFkEauVAxowZo4fw2rVrJzgSQoakgYgCPHr0aCE/O6Ot66+/Pg3VtjoaAoaAIVASgRoHUyR44UEHHSTbbbedjBo1KvK7q0rWug5frrDCCvLAAw8Iya3OOeccDbtyzDHH1OFJ9hNDwBAwBJKBQI3WQD755BPp1q2brLvuuhq/CiOaVlq+fLmuiQwbNkz++9//Sq9evdIKhdXbEDAEUo5AtQ5k6dKlstNOO8kXX3whkyZN0tDpKcdMt/XuscceetZl6tSp0rp167RDYvU3BAyBFCJQ7RrIhRdeqIvlHA4sZ7DDOGPdpEkT3ZHFaOToo4+2U+txFqbxbggYAnVGoKQDYbsu5yCY8ydEidHvCJB3hFAtzz33nDz88MO/f2H/GQKGgCGQEgRKTmGxbZV8HR9++KFl/CuiEDjWWbNmycyZM4WFdiNDwBAwBNKCQNERCLuuCDJ4ySWXmPMooQ3XXXedBmQkpIuRIWAIGAJpQqDoCOSkk07SvBmEOg+rZ01WQV4knipEfEeSKoI5duzYUfr37x8KrySoIv0uOUaMDAFDwBBICwIFRyDEgSL201FHHRWKQf7yyy/ltNNOk0033VQzGRYSxoMPPiibbbaZnH/++XLllVcKARzJN4IzCZo4XDh58mRzIEEDb+UZAoZAqAgUdCCkfyVYIvkxgiZ68hhjzpwsXry4YPHkPCfHCD3+hQsXyksvvaQZBbl+1llnFfxNJS+SZbFZs2Z6LqSS5dizDQFDwBCIEgIFT6ITpmTllVcWwpkHTYQN2XfffYX3YsTog8CGG264od7Ss2dPDS+y/fbbFx2xFHtWOa7jPDihD25GhoAhYAikBYGCI5DXX39dMMYkW4oi7b333hnn4fOHAd9kk02Eg49hEOs07FgzMgQMAUMgLQgUdCAff/yxpnyNKgiMOApR48aNNXdHoe8qfY0Uud99952+Kl2WPd8QMAQMgSggUNCBfPvttyWnkKLAeD4PCxYskA8++EDOO++8/K8C+bzWWmtpOazhGBkChoAhkAYECjqQ3377LXbRdgcOHCh//OMfNdx8GIJbaaWVtNglS5aEUbyVaQgYAoZA4AgUXERfccUVYzUVw5oNJ8GJjhsWMX0FNW/ePCwWrFxDwBAwBAJFoKADIWgiU0JxIA4TEvBx6NChQpDDsMjHywJOhiUBK9cQMASCRqDgFNYWW2wh7733XtC81Lo88pQT6JFIwWussUatf1/OH3AGhYV0G4GUE1V7liFgCEQZgYIOpHv37jJlyhTBQEeVFi1aJKeeeqpce+21VcLMk7fc87xAWZ8wYULRkCuBMmKFGQKGgCEQEAIFp7B23nlnWbZsmWYf7Nu3b0Cs5BYzb948vVDIiXHWg/zkTFlxIt0nrn/00Ud6HqRBgwb+5Yq/wysjtr/85S8VL8sKMAQMAUMgKggUdCBdu3aVdu3ayT333CNBO5Bff/1VHnvssYxjINcGvPTp00fatm2ruJ144okycuTIohiSxyRIuvfee/XQJTnjjQwBQ8AQSAsCRaPxXn755RrKnUVqWxgurg5MlbVv315YN3ryySeL32jfGAKGgCGQMAQKroFQxz/96U/Cye4rrrgiYVUub3WIy0XCLdZjjAwBQ8AQSBMCRUcggECodBap2WFEaHWjXARYyGf0QVh5UtsaGQKGgCGQJgRKOhBCuhOgcMstt1QD2bBh0QFLmjDL1PUf//iHRgEme2MYkYszjNg/hoAhYAiEgEBJj7DqqqvKXXfdJS+++KJcffXVIbAX3SIZcTA6I/aWOY/oysk4MwQMgcohUHIE4hfL9tQ77rhDRo8eHVqsKZ+XKLzPmjVLOCvDrjCSb7FWZGQIGAKGQNoQqJEDYa6/V69eMmnSJM3+t+2226YNp0x9SZnLORmyJZJAar311st8Z/8YAoaAIZAmBGrkQADkhx9+0LSx5CsfM2ZMKqdtcB44UrY2v/LKK7L55punSVesroaAIWAI5CBQcg0k+87VVltNnn32WVlnnXVk11131f+zv0/6/+QaYdpqzpw5mjbXnEfSJW71MwQMgeoQqLED4UE4D+b8OanOCfWbb765uucn4nscJylrOTRIzCvS5xoZAoaAIZB2BGrlQADLH4kcffTRcvrpp8v+++8vSc3CR3Kov/3tb7LvvvtKx44d5bXXXtMzH2lXGqu/IWAIGAIgUGsHwo+aNm2q23s5hf3SSy/pORFiViWJGGmwWeCGG26QCy64QLcyt27dOklVtLoYAoaAIVAvBOrkQPwSDz/8cJk8ebJstdVWwv+77babTJ061f86lu9sEiA17i677CLLly/XiMSXXHKJBkuMZYWMaUPAEDAEKoRAvRwIPG288cZ6PoQIuoRSx5n0798/do5k7ty5cuaZZ2p9hg0bJtdcc4288847umW3QtjbYw0BQ8AQiDUCNd7GW5Nacl5k8ODBemqdHBm9e/eWk08+Wd+jGgZl4sSJyvNDDz2ko4w///nPuu7RsmXLmlTZ7jEEDAFDILUIlNWB+CjiSO6880659dZbZcaMGbL++uvrtFC/fv2kc+fO/m2hvc+ePVuGDx8uQ4YM0Sk4wtUff/zxcsYZZ4g5jtDEYgUbAoZAzBCoiAPJxmDs2LEyaNAgGTFihJAsiuRQBx54oIZEYWvsKquskn17Rf7/7bff5K233tIFf3J28H+jRo2kZ8+eQnIq+CG7oZEhYAgYAoZAzRGouAPxWfnll190reTxxx+XUaNG6cl2jDiBCDmg16lTJ32xXZatwnUlRj9kJJw2bZqGoWeK6vXXX1fnxe4xFvoZCbH92EYbdUXZfmcIGAKGgEhgDiQbbHY3sXtr3LhxMn78eHn77bc1PIh/T4sWLaRNmzZ6cJH3lVdeWZo3b64vnAAjChwFI5qff/5ZCDHCIjiv+fPn6+4pnrXWWmtJly5ddEdVjx49pFu3btKsWTO/GHs3BAwBQ8AQqAcCoTiQQvwSa4vEVbxYo8AZEDaExfiFCxdmHAZBDJlu8h3KiiuuKK1atVKHg7MhuCHpZRnRWCreQkjbNUPAEDAEyoNAZBxIeapjTzEEDAFDwBAICoF6nwMJilErxxAwBAwBQyBaCJgDiZY8jBtDwBAwBGKDgDmQ2IjKGDUEDAFDIFoImAOJljyMG0PAEDAEYoPA/wfu3ToO1xefsQAAAABJRU5ErkJggg==\n", 595 | "text/plain": "" 596 | }, 597 | "metadata": {}, 598 | "output_type": "display_data" 599 | } 600 | ] 601 | } 602 | }, 603 | "908e11ad7133437a948c7d3816e7ba01": { 604 | "model_module": "@jupyter-widgets/controls", 605 | "model_module_version": "1.4.0", 606 | "model_name": "SliderStyleModel", 607 | "state": { 608 | "description_width": "" 609 | } 610 | }, 611 | "96218f58f6e74ffeb1772277a19ae73d": { 612 | "model_module": "@jupyter-widgets/controls", 613 | "model_module_version": "1.4.0", 614 | "model_name": "SliderStyleModel", 615 | "state": { 616 | "description_width": "" 617 | } 618 | }, 619 | "99d8454b8a5b436d95bb55e124c5c7a7": { 620 | "model_module": "@jupyter-widgets/base", 621 | "model_module_version": "1.1.0", 622 | "model_name": "LayoutModel", 623 | "state": {} 624 | }, 625 | "9f389dfbdec74083a790a54f9df95926": { 626 | "model_module": "@jupyter-widgets/controls", 627 | "model_module_version": "1.4.0", 628 | "model_name": "IntSliderModel", 629 | "state": { 630 | "layout": "IPY_MODEL_ee4192f14989487a8778ce3210ff67ab", 631 | "max": 5, 632 | "style": "IPY_MODEL_770d7cf6490c4f27b89364fa0bbeb956", 633 | "value": 1 634 | } 635 | }, 636 | "a11656627a8f460d8ab5b39aaadfca2f": { 637 | "model_module": "@jupyter-widgets/controls", 638 | "model_module_version": "1.4.0", 639 | "model_name": "IntSliderModel", 640 | "state": { 641 | "layout": "IPY_MODEL_077b39247e63433eaac2ae6e28444f0e", 642 | "max": 5, 643 | "style": "IPY_MODEL_a79cdf7fa3014356ad6cb7a7fc3ac19f" 644 | } 645 | }, 646 | "a116bbce7e1d40e8bf1a2147ca3a0669": { 647 | "model_module": "@jupyter-widgets/controls", 648 | "model_module_version": "1.4.0", 649 | "model_name": "SliderStyleModel", 650 | "state": { 651 | "description_width": "" 652 | } 653 | }, 654 | "a73057f242254b3eae58017163bf94cf": { 655 | "model_module": "@jupyter-widgets/output", 656 | "model_module_version": "1.0.0", 657 | "model_name": "OutputModel", 658 | "state": { 659 | "layout": "IPY_MODEL_5d8bb305684d44b0b811007739cb11a0" 660 | } 661 | }, 662 | "a79cdf7fa3014356ad6cb7a7fc3ac19f": { 663 | "model_module": "@jupyter-widgets/controls", 664 | "model_module_version": "1.4.0", 665 | "model_name": "SliderStyleModel", 666 | "state": { 667 | "description_width": "" 668 | } 669 | }, 670 | "aa8ce1d2f43c49e7a9afcfaeb1c2de00": { 671 | "model_module": "@jupyter-widgets/base", 672 | "model_module_version": "1.1.0", 673 | "model_name": "LayoutModel", 674 | "state": {} 675 | }, 676 | "ad6e76f0e8b34ef895f142801d00cd70": { 677 | "model_module": "@jupyter-widgets/controls", 678 | "model_module_version": "1.4.0", 679 | "model_name": "SliderStyleModel", 680 | "state": { 681 | "description_width": "" 682 | } 683 | }, 684 | "afbb19f0c5d2438e867074356522314b": { 685 | "model_module": "@jupyter-widgets/controls", 686 | "model_module_version": "1.4.0", 687 | "model_name": "VBoxModel", 688 | "state": { 689 | "_dom_classes": [ 690 | "widget-interact" 691 | ], 692 | "children": [ 693 | "IPY_MODEL_c65f4f5673d14ae1a3d981dea0a61da4", 694 | "IPY_MODEL_a73057f242254b3eae58017163bf94cf" 695 | ], 696 | "layout": "IPY_MODEL_ff52bb8d755343f0ad2b02be2f7d7b54" 697 | } 698 | }, 699 | "b22a097bb01e4fe29bd1f2a182514a49": { 700 | "model_module": "@jupyter-widgets/base", 701 | "model_module_version": "1.1.0", 702 | "model_name": "LayoutModel", 703 | "state": {} 704 | }, 705 | "b2e010e03a4d484db77c830b2cc10a3c": { 706 | "model_module": "@jupyter-widgets/output", 707 | "model_module_version": "1.0.0", 708 | "model_name": "OutputModel", 709 | "state": { 710 | "layout": "IPY_MODEL_79a3405639bb4f159b59356f0788c045" 711 | } 712 | }, 713 | "b3ec82e13efa4e3d99bd3b82a5a3e620": { 714 | "model_module": "@jupyter-widgets/output", 715 | "model_module_version": "1.0.0", 716 | "model_name": "OutputModel", 717 | "state": { 718 | "layout": "IPY_MODEL_c26734e8f1d84cd3855c09f39e337bb4" 719 | } 720 | }, 721 | "b75e6272a6004df18d1054ce72466450": { 722 | "model_module": "@jupyter-widgets/output", 723 | "model_module_version": "1.0.0", 724 | "model_name": "OutputModel", 725 | "state": { 726 | "layout": "IPY_MODEL_337a68f945554e36ab87aeb91d20f1e0" 727 | } 728 | }, 729 | "bad7ef750871436d91820947b8fe8a4c": { 730 | "model_module": "@jupyter-widgets/controls", 731 | "model_module_version": "1.4.0", 732 | "model_name": "SliderStyleModel", 733 | "state": { 734 | "description_width": "" 735 | } 736 | }, 737 | "bca19022a1414584a39ee3685ebd4f31": { 738 | "model_module": "@jupyter-widgets/controls", 739 | "model_module_version": "1.4.0", 740 | "model_name": "IntSliderModel", 741 | "state": { 742 | "description": "n", 743 | "layout": "IPY_MODEL_eb1310e73af54f20a53e7b50d6ded9e0", 744 | "max": 67, 745 | "style": "IPY_MODEL_ad6e76f0e8b34ef895f142801d00cd70" 746 | } 747 | }, 748 | "c26734e8f1d84cd3855c09f39e337bb4": { 749 | "model_module": "@jupyter-widgets/base", 750 | "model_module_version": "1.1.0", 751 | "model_name": "LayoutModel", 752 | "state": {} 753 | }, 754 | "c5b073a398b74835838af8fb3716f71b": { 755 | "model_module": "@jupyter-widgets/output", 756 | "model_module_version": "1.0.0", 757 | "model_name": "OutputModel", 758 | "state": { 759 | "layout": "IPY_MODEL_e4d9655682a34433ae82cb2121f6c972", 760 | "outputs": [ 761 | { 762 | "data": { 763 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAF2CAYAAABAos5TAAAAAXNSR0IArs4c6QAAQABJREFUeAHtnQfcU1Xy94cmYBcFESuigoKIoiI2sKLA2hCx665917bqFnVt2Ov6WsG1YBdFUVhBsQGKBRWRomBDURAFOypIue/5zn9vTPIkeVpy68znkydPbm7umfObOTOnzjTwHImRIWAIGAKGgCFQSwQa1vJ+u90QMAQMAUPAEFAEzIGYIhgChoAhYAjUCQFzIHWCzX5kCBgChoAh0NggMAQMgaoILFu2TH799Vf9onnz5tKoUaOqN9kVQyDlCJgDSbkCpLH6X3/9tUybNk2mTp0qH3/8scyZM0fmzp2rr++++04WLVokS5YsyYGmSZMm0qxZM1ljjTWkTZs2+lp33XWlXbt2suWWW0qnTp2kVatWOb+xD4ZA0hFoYLuwki7idNePkcTkyZNl/PjxMm7cOHn11Vdl/vz5CkrDhg1lgw02EByB7xTWXHNNdRSMOnAYEA6F0Qjv33zzTcbZ4Hhmz54ty5cv1/tatmwpO+64o/To0UN23XVX6dKli41cFBn7k1QEzIEkVbIprtfixYvlueeek8cff1xGjBgh3377rTRu3Fi23npr2WWXXdSwd+zYUTbffHPBUdSHcCzvv/++TJ8+XR3Vyy+/LO+8844sXbpUWrRoIfvtt5/069dP9tprL2natGl9irLfGgKRQ8AcSOREYgzVFQEM96BBg+Thhx+Wn376SdZff3058MADpU+fPjoyWHnllev66Fr9buHChTrSefrpp2X48OHy+eefyyqrrCKHHXaYnHzyyerIavVAu9kQiCgC5kAiKhhjq2YIMH00bNgwueGGG+SNN94QpqCOOeYYNdbbbrttzR5S4bveeustdWr33nuvToF169ZNzjrrLDn44IOFaTQjQyCuCJj2xlVyKeebAAqPPvqodO7cWQYMGCANGjSQBx54QBfEr7/+eomK80BM8AJPrJnAI7zCM7xTBwsGkXJljnH1zYHEWHhpZX3SpEmyww47qBFmV9SYMWPktddekyOOOCLS6wysgcAjvMIzvONIqAt1MjIE4oaAOZC4SSzF/LK2cOqpp8p2222nC+OjRo0SFq1ZoI4bwTO8s07CIj91Ou2004Q6GhkCcUHA1kDiIqmU88lWXHrrn332mZx//vny97//PdKjjdqIi11j11xzjVx++eWy4YYbytChQ3WnWG2eYfcaAmEgYCOQMFC3MmuFwODBg3WahwVnFsovuOCCxDgPgGBqizpRN+rIlBZ1NjIEoo6AOZCoSyjl/J177rm69fWQQw6Rt99+W7baaqvEIkLd2LFFXdnuS92NDIEoI2ChTKIsnRTzxvbc4447ToYMGaK984EDB6YCjZVWWknuu+8+2WijjeTSSy+VefPmyV133WXbfVMh/fhV0hxI/GSWCo7POOMMdR6333679sZTUemsSuIwCa9yyimnCAcgb7755qxv7V9DIBoImAOJhhyMiywErrjiCrnlllt0YZmpnLQSdedEPRsG1llnHTnvvPPSCoXVO6II2C6siAomrWw9//zzsvfee8uZZ56pp8vTikN2vTm1fuONN+rZkT333DP7K/vfEAgVAXMgocJvhWcjsGDBAj2dzVZWzkgQANFINDAjQSDZwjxlyhRZa621DBZDIBII2C6sSIjBmAABeto///yzxo0y5/G7ToAFASLBBoyMDIGoIGAOJCqSSDkfHBQkThSHBNmBZJSLAJiADRiBlZEhEAUEbAorClIwHqR3797y3nvvyYwZMzKJnAyWXARIaNWhQwfZYosthDAuRoZA2AjYJHPYErDyZdasWfLMM8/ITTfdFAnn8dtvv8nIkSNzJEPK2759+0rbtm1zrgf5gQyJ55xzjpx++umKWZi8BFlvKyu6CNgIJLqySQ1nF154oVx77bWaKpYItWHT3XffrYcYs/kgJPubb76ZfSmU/8nZzvkQtvZecsklofBghRoCPgLmQHwk7D00BJiS2XLLLTWIYGhM/K9gcnOQ15yDfNkL+e3atdP86WHzR/kElZw2bZqm0Y0CP8ZDehGwKaz0yj4SNadHzboHocyjQIRX32233SIdIr5nz57y2GOPCdhFYcQWBbkZD+EgYLuwwsHdSv0fAiRXote/0047RQITptL+/e9/C2ln2fVEro6oEViBGdgZGQJhImAOJEz0rWz54IMPFIX27duHjsb8+fM1odPSpUtl4sSJQkiVzTbbTGNyhc5cFgM+Vj52WV/Zv4ZAoAiYAwkUbissH4GvvvpKgwWSEyNsatmypYaM//HHH2X8+PGyzz77yDfffCN/+tOfZOzYsWGzlykfrAiwCHZGhkCYCJgDCRN9K1s427D66qtHConmzZsLoUM4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\n", 764 | "text/plain": "" 765 | }, 766 | "metadata": {}, 767 | "output_type": "display_data" 768 | } 769 | ] 770 | } 771 | }, 772 | "c65f4f5673d14ae1a3d981dea0a61da4": { 773 | "model_module": "@jupyter-widgets/controls", 774 | "model_module_version": "1.4.0", 775 | "model_name": "IntSliderModel", 776 | "state": { 777 | "description": "n", 778 | "layout": "IPY_MODEL_2cdc13884c17444a9193a908620ac90f", 779 | "max": 67, 780 | "style": "IPY_MODEL_f108cf4b0db54b649838b683fe46a713", 781 | "value": 24 782 | } 783 | }, 784 | "c871d20587154ca0917917e86e2d955e": { 785 | "model_module": "@jupyter-widgets/controls", 786 | "model_module_version": "1.4.0", 787 | "model_name": "VBoxModel", 788 | "state": { 789 | "_dom_classes": [ 790 | "widget-interact" 791 | ], 792 | "children": [ 793 | "IPY_MODEL_bca19022a1414584a39ee3685ebd4f31", 794 | "IPY_MODEL_c5b073a398b74835838af8fb3716f71b" 795 | ], 796 | "layout": "IPY_MODEL_7c08570a71414422bc6e6bc15f8c601f" 797 | } 798 | }, 799 | "c9dbc68860ab449b89d4bac08b0371d9": { 800 | "model_module": "@jupyter-widgets/base", 801 | "model_module_version": "1.1.0", 802 | "model_name": "LayoutModel", 803 | "state": {} 804 | }, 805 | "cd44cbc517e34f70bbb16c547c30f7e8": { 806 | "model_module": "@jupyter-widgets/base", 807 | "model_module_version": "1.1.0", 808 | "model_name": "LayoutModel", 809 | "state": {} 810 | }, 811 | "d0299158e39f43d6aadc98a0d48d44cc": { 812 | "model_module": "@jupyter-widgets/output", 813 | "model_module_version": "1.0.0", 814 | "model_name": "OutputModel", 815 | "state": { 816 | "layout": "IPY_MODEL_70499c5fdff04a18bb9d9dcf1bcb508d" 817 | } 818 | }, 819 | "d35303be3cba4710b4f31f1792d26e66": { 820 | "model_module": "@jupyter-widgets/controls", 821 | "model_module_version": "1.4.0", 822 | "model_name": "SliderStyleModel", 823 | "state": { 824 | "description_width": "" 825 | } 826 | }, 827 | "d394bc17717d4c9c8edff8cc30e3bfb1": { 828 | "model_module": "@jupyter-widgets/base", 829 | "model_module_version": "1.1.0", 830 | "model_name": "LayoutModel", 831 | "state": {} 832 | }, 833 | "d8aab190fcd4461b8bf739019cad6c21": { 834 | "model_module": "@jupyter-widgets/controls", 835 | "model_module_version": "1.4.0", 836 | "model_name": "VBoxModel", 837 | "state": { 838 | "_dom_classes": [ 839 | "widget-interact" 840 | ], 841 | "children": [ 842 | "IPY_MODEL_d95ef6e27620434e8032d3aeae95c25c", 843 | "IPY_MODEL_1ad67d55ae6e4b7397dda6a7b828b870" 844 | ], 845 | "layout": "IPY_MODEL_aa8ce1d2f43c49e7a9afcfaeb1c2de00" 846 | } 847 | }, 848 | "d8ddf335f4c94448bcf091fe5d0974f4": { 849 | "model_module": "@jupyter-widgets/output", 850 | "model_module_version": "1.0.0", 851 | "model_name": "OutputModel", 852 | "state": { 853 | "layout": "IPY_MODEL_d394bc17717d4c9c8edff8cc30e3bfb1" 854 | } 855 | }, 856 | "d95ef6e27620434e8032d3aeae95c25c": { 857 | "model_module": "@jupyter-widgets/controls", 858 | "model_module_version": "1.4.0", 859 | "model_name": "IntSliderModel", 860 | "state": { 861 | "description": "n", 862 | "layout": "IPY_MODEL_5e71202c7d784893b849d8f847e934d4", 863 | "max": 67, 864 | "style": "IPY_MODEL_96218f58f6e74ffeb1772277a19ae73d", 865 | "value": 23 866 | } 867 | }, 868 | "e4d57432becc4d44ae4597ee9fab7aa0": { 869 | "model_module": "@jupyter-widgets/controls", 870 | "model_module_version": "1.4.0", 871 | "model_name": "VBoxModel", 872 | "state": { 873 | "_dom_classes": [ 874 | "widget-interact" 875 | ], 876 | "children": [ 877 | "IPY_MODEL_30efe19df3be448db86bc149074247e4", 878 | "IPY_MODEL_b75e6272a6004df18d1054ce72466450" 879 | ], 880 | "layout": "IPY_MODEL_99d8454b8a5b436d95bb55e124c5c7a7" 881 | } 882 | }, 883 | "e4d9655682a34433ae82cb2121f6c972": { 884 | "model_module": "@jupyter-widgets/base", 885 | "model_module_version": "1.1.0", 886 | "model_name": "LayoutModel", 887 | "state": {} 888 | }, 889 | "e900d0138bb849078f9a141b0dfbbe13": { 890 | "model_module": "@jupyter-widgets/controls", 891 | "model_module_version": "1.4.0", 892 | "model_name": "SliderStyleModel", 893 | "state": { 894 | "description_width": "" 895 | } 896 | }, 897 | "e986fe2fca7a40deb36cfda421f157f8": { 898 | "model_module": "@jupyter-widgets/controls", 899 | "model_module_version": "1.4.0", 900 | "model_name": "VBoxModel", 901 | "state": { 902 | "_dom_classes": [ 903 | "widget-interact" 904 | ], 905 | "children": [ 906 | "IPY_MODEL_d95ef6e27620434e8032d3aeae95c25c", 907 | "IPY_MODEL_45442474e4554d5d88fd24ceb912ec74" 908 | ], 909 | "layout": "IPY_MODEL_ef71d22864ba4f6797945cc682ee3ae2" 910 | } 911 | }, 912 | "ea5ddf836d4d4c3ca1124fbfbe62fb0f": { 913 | "model_module": "@jupyter-widgets/controls", 914 | "model_module_version": "1.4.0", 915 | "model_name": "SliderStyleModel", 916 | "state": { 917 | "description_width": "" 918 | } 919 | }, 920 | "eb1310e73af54f20a53e7b50d6ded9e0": { 921 | "model_module": "@jupyter-widgets/base", 922 | "model_module_version": "1.1.0", 923 | "model_name": "LayoutModel", 924 | "state": {} 925 | }, 926 | "ee4192f14989487a8778ce3210ff67ab": { 927 | "model_module": "@jupyter-widgets/base", 928 | "model_module_version": "1.1.0", 929 | "model_name": "LayoutModel", 930 | "state": {} 931 | }, 932 | "ef71d22864ba4f6797945cc682ee3ae2": { 933 | "model_module": "@jupyter-widgets/base", 934 | "model_module_version": "1.1.0", 935 | "model_name": "LayoutModel", 936 | "state": {} 937 | }, 938 | "f049e6e083514932bee21b8e732840f3": { 939 | "model_module": "@jupyter-widgets/base", 940 | "model_module_version": "1.1.0", 941 | "model_name": "LayoutModel", 942 | "state": {} 943 | }, 944 | "f0db534045da4326ab43153e1079207e": { 945 | "model_module": "@jupyter-widgets/output", 946 | "model_module_version": "1.0.0", 947 | "model_name": "OutputModel", 948 | "state": { 949 | "layout": "IPY_MODEL_380a61b7b9894e2a80965fac1f204339", 950 | "outputs": [ 951 | { 952 | "name": "stdout", 953 | "output_type": "stream", 954 | "text": "2\n" 955 | } 956 | ] 957 | } 958 | }, 959 | "f108cf4b0db54b649838b683fe46a713": { 960 | "model_module": "@jupyter-widgets/controls", 961 | "model_module_version": "1.4.0", 962 | "model_name": "SliderStyleModel", 963 | "state": { 964 | "description_width": "" 965 | } 966 | }, 967 | "f1ed6072bb764dbfa3f9fbc1841573d9": { 968 | "model_module": "@jupyter-widgets/controls", 969 | "model_module_version": "1.4.0", 970 | "model_name": "VBoxModel", 971 | "state": { 972 | "_dom_classes": [ 973 | "widget-interact" 974 | ], 975 | "children": [ 976 | "IPY_MODEL_d95ef6e27620434e8032d3aeae95c25c", 977 | "IPY_MODEL_d0299158e39f43d6aadc98a0d48d44cc" 978 | ], 979 | "layout": "IPY_MODEL_6e907daf7dcf4df8ac84f87098944d2d" 980 | } 981 | }, 982 | "f40ca474a7a345e197460bb812bf9de4": { 983 | "model_module": "@jupyter-widgets/base", 984 | "model_module_version": "1.1.0", 985 | "model_name": "LayoutModel", 986 | "state": {} 987 | }, 988 | "f604b5e15723406b8348c41d5a9ce438": { 989 | "model_module": "@jupyter-widgets/controls", 990 | "model_module_version": "1.4.0", 991 | "model_name": "VBoxModel", 992 | "state": { 993 | "_dom_classes": [ 994 | "widget-interact" 995 | ], 996 | "children": [ 997 | "IPY_MODEL_82339cf271b64b4b86e390a7b805fce9", 998 | "IPY_MODEL_f0db534045da4326ab43153e1079207e" 999 | ], 1000 | "layout": "IPY_MODEL_fefac51f61eb48b182384981e9a22416" 1001 | } 1002 | }, 1003 | "fcf8a07e2e724a9faf4742294f39fcfe": { 1004 | "model_module": "@jupyter-widgets/output", 1005 | "model_module_version": "1.0.0", 1006 | "model_name": "OutputModel", 1007 | "state": { 1008 | "layout": "IPY_MODEL_b22a097bb01e4fe29bd1f2a182514a49", 1009 | "outputs": [ 1010 | { 1011 | "data": { 1012 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAF2CAYAAABAos5TAAAAAXNSR0IArs4c6QAAQABJREFUeAHtnQfcU1Xy94cmYBcFESuigoKIoiI2sKLA2hCx665917bqFnVt2Ov6WsG1YBdFUVhBsQGKBRWRomBDURAFOypIue/5zn9vTPIkeVpy68znkydPbm7umfObOTOnzjTwHImRIWAIGAKGgCFQSwQa1vJ+u90QMAQMAUPAEFAEzIGYIhgChoAhYAjUCQFzIHWCzX5kCBgChoAh0NggMAQMgaoILFu2TH799Vf9onnz5tKoUaOqN9kVQyDlCJgDSbkCpLH6X3/9tUybNk2mTp0qH3/8scyZM0fmzp2rr++++04WLVokS5YsyYGmSZMm0qxZM1ljjTWkTZs2+lp33XWlXbt2suWWW0qnTp2kVatWOb+xD4ZA0hFoYLuwki7idNePkcTkyZNl/PjxMm7cOHn11Vdl/vz5CkrDhg1lgw02EByB7xTWXHNNdRSMOnAYEA6F0Qjv33zzTcbZ4Hhmz54ty5cv1/tatmwpO+64o/To0UN23XVX6dKli41cFBn7k1QEzIEkVbIprtfixYvlueeek8cff1xGjBgh3377rTRu3Fi23npr2WWXXdSwd+zYUTbffHPBUdSHcCzvv/++TJ8+XR3Vyy+/LO+8844sXbpUWrRoIfvtt5/069dP9tprL2natGl9irLfGgKRQ8AcSOREYgzVFQEM96BBg+Thhx+Wn376SdZff3058MADpU+fPjoyWHnllev66Fr9buHChTrSefrpp2X48OHy+eefyyqrrCKHHXaYnHzyyerIavVAu9kQiCgC5kAiKhhjq2YIMH00bNgwueGGG+SNN94QpqCOOeYYNdbbbrttzR5S4bveeustdWr33nuvToF169ZNzjrrLDn44IOFaTQjQyCuCJj2xlVyKeebAAqPPvqodO7cWQYMGCANGjSQBx54QBfEr7/+eomK80BM8AJPrJnAI7zCM7xTBwsGkXJljnH1zYHEWHhpZX3SpEmyww47qBFmV9SYMWPktddekyOOOCLS6wysgcAjvMIzvONIqAt1MjIE4oaAOZC4SSzF/LK2cOqpp8p2222nC+OjRo0SFq1ZoI4bwTO8s07CIj91Ou2004Q6GhkCcUHA1kDiIqmU88lWXHrrn332mZx//vny97//PdKjjdqIi11j11xzjVx++eWy4YYbytChQ3WnWG2eYfcaAmEgYCOQMFC3MmuFwODBg3WahwVnFsovuOCCxDgPgGBqizpRN+rIlBZ1NjIEoo6AOZCoSyjl/J177rm69fWQQw6Rt99+W7baaqvEIkLd2LFFXdnuS92NDIEoI2ChTKIsnRTzxvbc4447ToYMGaK984EDB6YCjZVWWknuu+8+2WijjeTSSy+VefPmyV133WXbfVMh/fhV0hxI/GSWCo7POOMMdR6333679sZTUemsSuIwCa9yyimnCAcgb7755qxv7V9DIBoImAOJhhyMiywErrjiCrnlllt0YZmpnLQSdedEPRsG1llnHTnvvPPSCoXVO6II2C6siAomrWw9//zzsvfee8uZZ56pp8vTikN2vTm1fuONN+rZkT333DP7K/vfEAgVAXMgocJvhWcjsGDBAj2dzVZWzkgQANFINDAjQSDZwjxlyhRZa621DBZDIBII2C6sSIjBmAABeto///yzxo0y5/G7ToAFASLBBoyMDIGoIGAOJCqSSDkfHBQkThSHBNmBZJSLAJiADRiBlZEhEAUEbAorClIwHqR3797y3nvvyYwZMzKJnAyWXARIaNWhQwfZYosthDAuRoZA2AjYJHPYErDyZdasWfLMM8/ITTfdFAnn8dtvv8nIkSNzJEPK2759+0rbtm1zrgf5gQyJ55xzjpx++umKWZi8BFlvKyu6CNgIJLqySQ1nF154oVx77bWaKpYItWHT3XffrYcYs/kgJPubb76ZfSmU/8nZzvkQtvZecsklofBghRoCPgLmQHwk7D00BJiS2XLLLTWIYGhM/K9gcnOQ15yDfNkL+e3atdP86WHzR/kElZw2bZqm0Y0CP8ZDehGwKaz0yj4SNadHzboHocyjQIRX32233SIdIr5nz57y2GOPCdhFYcQWBbkZD+EgYLuwwsHdSv0fAiRXote/0047RQITptL+/e9/C2ln2fVEro6oEViBGdgZGQJhImAOJEz0rWz54IMPFIX27duHjsb8+fM1odPSpUtl4sSJQkiVzTbbTGNyhc5cFgM+Vj52WV/Zv4ZAoAiYAwkUbissH4GvvvpKgwWSEyNsatmypYaM//HHH2X8+PGyzz77yDfffCN/+tOfZOzYsWGzlykfrAiwCHZGhkCYCJgDCRN9K1s427D66qtHConmzZsLoUM4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\n", 1013 | "text/plain": "" 1014 | }, 1015 | "metadata": {}, 1016 | "output_type": "display_data" 1017 | } 1018 | ] 1019 | } 1020 | }, 1021 | "fdc28bc5999f467095f5fb917e3212df": { 1022 | "model_module": "@jupyter-widgets/controls", 1023 | "model_module_version": "1.4.0", 1024 | "model_name": "IntSliderModel", 1025 | "state": { 1026 | "description": "n", 1027 | "layout": "IPY_MODEL_8dd36965ae4a417e98c764a005909949", 1028 | "max": 68, 1029 | "style": "IPY_MODEL_13abb4b49d414b1380e245b34cc7a9ad", 1030 | "value": 10 1031 | } 1032 | }, 1033 | "fefac51f61eb48b182384981e9a22416": { 1034 | "model_module": "@jupyter-widgets/base", 1035 | "model_module_version": "1.1.0", 1036 | "model_name": "LayoutModel", 1037 | "state": {} 1038 | }, 1039 | "ff52bb8d755343f0ad2b02be2f7d7b54": { 1040 | "model_module": "@jupyter-widgets/base", 1041 | "model_module_version": "1.1.0", 1042 | "model_name": "LayoutModel", 1043 | "state": {} 1044 | } 1045 | }, 1046 | "version_major": 2, 1047 | "version_minor": 0 1048 | } 1049 | } 1050 | }, 1051 | "nbformat": 4, 1052 | "nbformat_minor": 1 1053 | } 1054 | --------------------------------------------------------------------------------