Repository: CURENT/andes (language: python)

Issue:
pandapower interface enhancement
1) Add option for user-defined controllable of _to_pandapower()
1) Fix test for pandapower interface
1) Other minor edits

Hantao,

I did not include controllable in the make_link_table. First, the info has been included in to_pandapower(). Second, one can see if there is a governor from the link_table.

Regards,
Jinning


Discussion / hints:

Fix patch:
diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml
index 49a265c04..eb2b888ff 100644
--- a/.azure-pipelines/azure-pipelines-linux.yml
+++ b/.azure-pipelines/azure-pipelines-linux.yml
@@ -21,8 +21,7 @@ jobs:
 
   - script: |
       python -m pip install --upgrade pip
-      pip install .
-      pip install -r requirements-dev.txt
+      pip install .[dev,interop]
     displayName: 'Install dependencies'
 
   - script: |
diff --git a/.azure-pipelines/azure-pipelines-macos.yml b/.azure-pipelines/azure-pipelines-macos.yml
index f67f5b910..e7b691715 100644
--- a/.azure-pipelines/azure-pipelines-macos.yml
+++ b/.azure-pipelines/azure-pipelines-macos.yml
@@ -21,8 +21,7 @@ jobs:
 
   - script: |
       python -m pip install --upgrade pip
-      pip install .
-      pip install -r requirements-dev.txt
+      pip install .[all]
     displayName: 'Install dependencies'
 
   - script: |
diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml
index 48506a6dd..0ae8f04b4 100644
--- a/.azure-pipelines/azure-pipelines-win.yml
+++ b/.azure-pipelines/azure-pipelines-win.yml
@@ -29,8 +29,7 @@ jobs:
       call activate andesEnv
       python -m pip install --upgrade pip
       pip install pytest pytest-azurepipelines
-      pip install .
-      pip install -r requirements-dev.txt
+      pip install .[dev,interop]
       pytest
     displayName: pytest
 
diff --git a/.github/workflows/pythonapp.yml b/.github/workflows/pythonapp.yml
index dd6d65278..5c4294f4d 100644
--- a/.github/workflows/pythonapp.yml
+++ b/.github/workflows/pythonapp.yml
@@ -15,10 +15,10 @@ jobs:
         python-version: 3.8
     - name: Install dependencies
       run: |
+        # work around a pip issue with extras_require: https://github.com/pypa/pip/issues/8323
+        python -m pip install -U "pip @ git+https://github.com/pypa/pip.git"
         python -m pip install --upgrade pip
-        python -m pip install -r requirements.txt
-        python -m pip install -r requirements-dev.txt
-        python -m pip install .
+        python -m pip install .[all]
         python -m pip install nbmake==0.10 pytest-xdist line_profiler  # add'l packages for notebook tests.
     - name: Lint with flake8 for pull requests
       if: github.event_name == 'pull_request'
diff --git a/.gitignore b/.gitignore
index 8d775f93e..e3eed0d9c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,7 +63,7 @@ coverage.xml
 docs/source/modelref.rst
 docs/source/configref.rst
 docs/source/groupdoc
-docs/source/examples
+docs/source/_examples
 docs/build/
 docs/jupyter_execute/
 docs/source/_build/
diff --git a/.readthedocs.yml b/.readthedocs.yml
index a59f7b167..79937913c 100644
--- a/.readthedocs.yml
+++ b/.readthedocs.yml
@@ -11,11 +11,10 @@ python:
   version: 3.8
   install:
     - requirements: requirements.txt
-    - requirements: requirements-dev.txt
     - method: pip
       path: .
       extra_requirements:
-        - docs
+        - doc
     - method: setuptools
       path: .
   system_packages: true
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 680dbca52..68877f5af 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -66,8 +66,7 @@ set up your fork for local development::
 
     $ mkvirtualenv andes
     $ cd andes/
-    $ python setup.py develop
-    $ pip install requirements-dev.txt
+    $ pip install -e .[dev]
 
 4. Create a branch for local development::
 
diff --git a/MANIFEST.in b/MANIFEST.in
index 9cf339df7..c01268d07 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -3,7 +3,7 @@ include CONTRIBUTING.rst
 include LICENSE
 include README.md
 include requirements.txt
-include requirements-dev.txt
+include extra-requirements.txt
 
 recursive-exclude * __pycache__
 recursive-exclude * *.py[co]
diff --git a/andes/__init__.py b/andes/__init__.py
index dc167a50d..c7cdb2a35 100644
--- a/andes/__init__.py
+++ b/andes/__init__.py
@@ -9,6 +9,7 @@
 from andes import utils      # NOQA
 from andes import variables  # NOQA
 from andes import thirdparty  # NOQA
+from andes import interop    # NOQA
 
 from andes.main import config_logger, run, load, prepare  # NOQA
 from andes.system import System                    # NOQA
@@ -18,5 +19,5 @@
 __author__ = 'Hantao Cui'
 
 __all__ = ['main', 'plot', 'system', 'cli',
-           'utils', 'core', 'models', 'io', 'routines', 'variables', 'thirdparty',
+           'utils', 'core', 'models', 'io', 'routines', 'variables', 'thirdparty', 'interop',
            '__version__']
diff --git a/andes/cases/ieee14/README.md b/andes/cases/ieee14/README.md
index 859425af2..b572d7ca5 100644
--- a/andes/cases/ieee14/README.md
+++ b/andes/cases/ieee14/README.md
@@ -1,9 +1,44 @@
-IEEE 14-Bus System
+# IEEE 14-Bus Systems
 
-Power flow data is created by J. Conto.
+The folder contains many variants of the IEEE 14-bus system that are created
+during model development. One cawn find cases containing the needed model and modify
+from them.
+## Power flow data
 
-Data is available at <https://drive.google.com/drive/folders/0B7uS9L2Woq_7YzYzcGhXT2VQYXc>
+Power flow data is created by J. Conto obtained from the [Google drive
+link](https://drive.google.com/drive/folders/0B7uS9L2Woq_7YzYzcGhXT2VQYXc).
 
-Dynamic data is created by H. Cui for ANDES.
+The base power flow file is ``ieee14.raw``. Almost all other cases in this
+folder are created by adding models to it.
 
-`ieee14.dyr` contains more models than `ieee14_gentrip.xlsx` and `ieee14_linetrip.xlsx`.
+## Dynamic data
+
+The base dynamic data is created by H. Cui for ANDES, given in ``ieee14.dyr``.
+
+## Special cases
+
+### Contingency cases:
+
+- `ieee14_gentrip.xlsx` contains data for a generator trip using `Toggler`
+- `ieee14_linetrip.xlsx` contains data for a line trip
+- `ieee14_fault.xlsx` contains data for a three-phase-to-ground fault using `Fault`
+
+### Renewable energy models
+
+- `ieee14_wt3.xlsx` contains one generic Type-3 wind turbine
+- `ieee14_wt3n.xlsx` has (almost) all generators represented by Type-3 wind turbines
+- `ieee14_solar.xlsx` contains a generic solar PV device, which can also be used
+  to model a Type-4 wind turbine
+- `ieee14_pvd1.xlsx` contains WECC distributed PV
+- `ieee14_dgprct1.xlsx` contains the WECC distributed PV model with IEEE
+  1547.2018-based voltage and frequency protection
+
+### Playback and Timeseries
+- `ieee14_plbvfu1.xlsx` contains data for setting up a playback V-f generator
+- `ieee14_timeseries.xlsx` contains data for using time series from `pqts.xlsx`
+  for a PQ load. Note that one needs to convert PQ to constant power load for
+  simulation.
+
+### Other
+- `ieee14_jumper.xlsx` contains data for a jumper device that connects two buses
+  without impedance.
diff --git a/andes/cases/ieee14/ieee14_dyn_only.xlsx b/andes/cases/ieee14/ieee14_dyn_only.xlsx
new file mode 100644
index 000000000..f244cd978
Binary files /dev/null and b/andes/cases/ieee14/ieee14_dyn_only.xlsx differ
diff --git a/andes/cases/ieee14/ieee14_wt3.xlsx b/andes/cases/ieee14/ieee14_wt3.xlsx
index 4d38576ba..60c354f8f 100644
Binary files a/andes/cases/ieee14/ieee14_wt3.xlsx and b/andes/cases/ieee14/ieee14_wt3.xlsx differ
diff --git a/andes/cases/ieee14/ieee14_wt3n.xlsx b/andes/cases/ieee14/ieee14_wt3n.xlsx
index 6d43f03ad..1c223575e 100644
Binary files a/andes/cases/ieee14/ieee14_wt3n.xlsx and b/andes/cases/ieee14/ieee14_wt3n.xlsx differ
diff --git a/andes/cases/smib/README.md b/andes/cases/smib/README.md
new file mode 100644
index 000000000..704faadfc
--- /dev/null
+++ b/andes/cases/smib/README.md
@@ -0,0 +1,15 @@
+# Single Machine Infinite Bus (SMIB) System
+
+## Overview
+
+`SMIB.xlsx` is originally prepared by Xiaoge Huang using data in [[1]](#1).
+
+Parameters are modified by Hantao Cui to obtain the same per-unit results as in
+the textbook in the base of 100 MVA. Essentially, the power bases, `Sn`, of all
+devices are converted to 100 MVA. All elements are in the same voltage level.
+
+## References
+
+<a id="1">[1]</a> P. W. Sauer, M. A. Pai, and J. H. Chow, Power system dynamics
+and stability: with synchrophasor measurement and power system toolbox, Second
+edition. Hoboken, NJ, USA: IEEE Press, Wiley, 2017.
diff --git a/andes/cases/smib/SMIB.xlsx b/andes/cases/smib/SMIB.xlsx
new file mode 100644
index 000000000..8d5aaf0b4
Binary files /dev/null and b/andes/cases/smib/SMIB.xlsx differ
diff --git a/andes/cli.py b/andes/cli.py
index ec3a5354c..7f107cd1c 100644
--- a/andes/cli.py
+++ b/andes/cli.py
@@ -25,8 +25,14 @@
 
 def create_parser():
     """
-    The main level of command-line interface.
+    Create a parser for the command-line interface.
+
+    Returns
+    -------
+    argparse.ArgumentParser
+        Parser with all ANDES options
     """
+
     parser = argparse.ArgumentParser()
 
     parser.add_argument(
@@ -192,7 +198,7 @@ def preamble():
 
 def main():
     """
-    Main command-line interface
+    Entry point of the ANDES command-line interface.
     """
 
     parser = create_parser()
diff --git a/andes/core/documenter.py b/andes/core/documenter.py
index 9f6bbfe43..222a70079 100644
--- a/andes/core/documenter.py
+++ b/andes/core/documenter.py
@@ -2,6 +2,7 @@
 Documenter class for ANDES models.
 """
 
+import inspect
 from collections import OrderedDict
 
 from andes.utils.tab import make_doc_table, math_wrap
@@ -71,8 +72,10 @@ def _param_doc(self, max_width=78, export='plain'):
         if export == 'rest':
             symbols = [item.tex_name for item in self.params.values()]
             symbols = math_wrap(symbols, export=export)
+            title = 'Parameters\n----------'
         else:
             symbols = [item.name for item in self.params.values()]
+            title = 'Parameters'
 
         plain_dict = OrderedDict([('Name', names),
                                   ('Description', info),
@@ -88,7 +91,7 @@ def _param_doc(self, max_width=78, export='plain'):
                                  ('Properties', properties)])
 
         # convert to rows and export as table
-        return make_doc_table(title='Parameters',
+        return make_doc_table(title=title,
                               max_width=max_width,
                               export=export,
                               plain_dict=plain_dict,
@@ -118,10 +121,13 @@ def _var_doc(self, max_width=78, export='plain'):
                     plist.append(item)
             properties.append(','.join(plist))
 
+        title = 'Variables'
+
         # replace with latex math expressions if export is ``rest``
         if export == 'rest':
             call_store = self.system.calls[self.class_name]
             symbols = math_wrap(call_store.x_latex + call_store.y_latex, export=export)
+            title = 'Variables\n---------'
 
         plain_dict = OrderedDict([('Name', names),
                                   ('Type', ty),
@@ -136,7 +142,7 @@ def _var_doc(self, max_width=78, export='plain'):
                                  ('Unit', units_rest),
                                  ('Properties', properties)])
 
-        return make_doc_table(title='Variables (States + Algebraics)',
+        return make_doc_table(title=title,
                               max_width=max_width,
                               export=export,
                               plain_dict=plain_dict,
@@ -146,6 +152,7 @@ def _init_doc(self, max_width=78, export='plain'):
         """
         Variable initialization docs.
         """
+
         if len(self.cache.all_vars) == 0:
             return ''
 
@@ -157,11 +164,14 @@ def _init_doc(self, max_width=78, export='plain'):
             ty.append(p.class_name)
             ivs.append(p.v_str if p.v_str else '')
 
+        title = 'Initialization Equations'
+        
         # replace with latex math expressions if export is ``rest``
         if export == 'rest':
             call_store = self.system.calls[self.class_name]
             symbols = math_wrap(call_store.x_latex + call_store.y_latex, export=export)
             ivs_rest = math_wrap(call_store.init_latex.values(), export=export)
+            title = 'Initialization Equations\n------------------------'
 
         plain_dict = OrderedDict([('Name', names),
                                   ('Type', ty),
@@ -174,7 +184,7 @@ def _init_doc(self, max_width=78, export='plain'):
                                  ('Initial Value', ivs_rest),
                                  ])
 
-        return make_doc_table(title='Variable Initialization Equations',
+        return make_doc_table(title=title,
                               max_width=max_width,
                               export=export,
                               plain_dict=plain_dict,
@@ -221,7 +231,7 @@ def _eq_doc(self, max_width=78, export='plain', e_code=None):
                                       ('Type', class_names),
                                       (f'RHS of Equation "{e2form[e_name]}"', eqs),
                                       ])
-
+            title = f'{e2full[e_name]} Equations'
             if export == 'rest':
                 call_store = self.system.calls[self.class_name]
                 e2var_sym = {'f': call_store.x_latex,
@@ -231,6 +241,7 @@ def _eq_doc(self, max_width=78, export='plain', e_code=None):
 
                 symbols = math_wrap(e2var_sym[e_name], export=export)
                 eqs_rest = math_wrap(e2eq_sym[e_name], export=export)
+                title = f'{e2full[e_name]} Equations\n-----------------------------'
 
             rest_dict = OrderedDict([('Name', names),
                                      ('Symbol', symbols),
@@ -242,7 +253,7 @@ def _eq_doc(self, max_width=78, export='plain', e_code=None):
                 plain_dict['T (LHS)'] = lhs_names
                 rest_dict['T (LHS)'] = math_wrap(lhs_tex_names, export=export)
 
-            out += make_doc_table(title=f'{e2full[e_name]} Equations',
+            out += make_doc_table(title=title,
                                   max_width=max_width,
                                   export=export,
                                   plain_dict=plain_dict,
@@ -263,10 +274,12 @@ def _service_doc(self, max_width=78, export='plain'):
             symbols.append(p.tex_name if p.tex_name is not None else '')
             eqs.append(p.v_str if p.v_str else '')
 
+        title = 'Services'
         if export == 'rest':
             call_store = self.system.calls[self.class_name]
             symbols = math_wrap(symbols, export=export)
             eqs_rest = math_wrap(call_store.s_latex, export=export)
+            title = 'Services\n----------'
 
         plain_dict = OrderedDict([('Name', names),
                                   ('Equation', eqs),
@@ -277,7 +290,7 @@ def _service_doc(self, max_width=78, export='plain'):
                                  ('Equation', eqs_rest),
                                  ('Type', class_names)])
 
-        return make_doc_table(title='Services',
+        return make_doc_table(title=title,
                               max_width=max_width,
                               export=export,
                               plain_dict=plain_dict,
@@ -295,8 +308,11 @@ def _discrete_doc(self, max_width=78, export='plain'):
             class_names.append(p.class_name)
             info.append(p.info if p.info else '')
 
+        title = 'Discretes'
         if export == 'rest':
             symbols = math_wrap([item.tex_name for item in self.discrete.values()], export=export)
+            title = 'Discretes\n-----------'
+
         plain_dict = OrderedDict([('Name', names),
                                   ('Type', class_names),
                                   ('Info', info)])
@@ -306,7 +322,7 @@ def _discrete_doc(self, max_width=78, export='plain'):
                                  ('Type', class_names),
                                  ('Info', info)])
 
-        return make_doc_table(title='Discrete',
+        return make_doc_table(title=title,
                               max_width=max_width,
                               export=export,
                               plain_dict=plain_dict,
@@ -327,8 +343,10 @@ def _block_doc(self, max_width=78, export='plain'):
             class_names.append(p.class_name)
             info.append(p.info if p.info else '')
 
+        title = 'Blocks'
         if export == 'rest':
             symbols = math_wrap([item.tex_name for item in self.blocks.values()], export=export)
+            title = 'Blocks\n-------'
 
         plain_dict = OrderedDict([('Name', names),
                                   ('Type', class_names),
@@ -339,7 +357,7 @@ def _block_doc(self, max_width=78, export='plain'):
                                  ('Type', class_names),
                                  ('Info', info)])
 
-        return make_doc_table(title='Blocks',
+        return make_doc_table(title=title,
                               max_width=max_width,
                               export=export,
                               plain_dict=plain_dict,
@@ -371,14 +389,12 @@ def get(self, max_width=78, export='plain'):
 
         if export == 'rest':
             out += model_header + f'{self.class_name}\n' + model_header
-            out += f'\nGroup {self.parent.group}_\n\n'
         else:
             out += model_header + f'Model <{self.class_name}> in Group <{self.parent.group}>\n' + model_header
 
-        if self.__doc__ is not None:
-            if self.parent.__doc__ is not None:
-                out += self.parent.__doc__
-            out += '\n'  # this fixes the indentation for the next line
+        if self.parent.__doc__ is not None:
+            out += inspect.cleandoc(self.parent.__doc__)
+        out += '\n\n'  # this fixes the indentation for the next line
 
         # add tables
         out += self._param_doc(max_width=max_width, export=export)
diff --git a/andes/core/model.py b/andes/core/model.py
index 895dbcd38..2c0156598 100644
--- a/andes/core/model.py
+++ b/andes/core/model.py
@@ -703,6 +703,9 @@ def __init__(self, system=None, config=None):
         self.ii_args = OrderedDict()
         self.ij_args = OrderedDict()
 
+        self.coeffs = dict()  # pu conversion coefficient storage
+        self.bases = dict()   # base storage, such as Vn, Vb, Zn, Zb
+
     def _register_attribute(self, key, value):
         """
         Register a pair of attributes to the model instance.
diff --git a/andes/interop/__init__.py b/andes/interop/__init__.py
new file mode 100644
index 000000000..7aef3eb54
--- /dev/null
+++ b/andes/interop/__init__.py
@@ -0,0 +1,20 @@
+"""
+Interopability package between Andes and other software.
+
+To install dependencies, do:
+
+.. code:: bash
+
+    pip install andes[interop]
+
+To install dependencies for *development*, in the ANDES source code folder, do:
+
+.. code:: bash
+
+    pip install -e .[interop]
+
+"""
+
+from andes.interop import pandapower  # NOQA
+from andes.interop import pypowsybl   # NOQA
+from andes.interop import matpower   # NOQA
diff --git a/andes/interop/matpower.py b/andes/interop/matpower.py
new file mode 100644
index 000000000..6bd81ca24
--- /dev/null
+++ b/andes/interop/matpower.py
@@ -0,0 +1,155 @@
+"""
+Interoperability with MATPOWER through ``matpower-pip``.
+
+Please install the Python package ``matpower`` and configure MATLAB or Octave,
+following the instructions at matpower-pip_.
+
+To create a MATLAB/Octave instance, do:
+
+.. code:: python
+
+    from andes.interop.matpower import start_instance
+
+    m = start_instance()
+
+.. _matpower-pip: https://github.com/yasirroni/matpower-pip
+
+"""
+
+
+import logging
+
+import andes
+
+try:
+    from matpower import start_instance
+except ImportError:
+    start_instance = None
+
+try:
+    from oct2py import Oct2PyError
+except ImportError:
+    Oct2PyError = None
+
+
+logger = logging.getLogger(__name__)
+
+
+def from_matpower(m, varname, system=None):
+    """
+    Retrieve a MATPOWER mpc case from a MATLAB/Octave instance.
+
+    Parameters
+    ----------
+    m : MATLAB/Octave instance
+        Instance from which to retrieve the MATPOWER case.
+    varname : str
+        Name of the variable in the MATPOWER MPC format to retrieve.
+
+    Returns
+    -------
+    :class:`~andes.system.System`
+        System from the mpc case. The system will not have been set up.
+
+    Examples
+    --------
+    To retrieve a case from MATPOWER from instance ``m``, do the following:
+
+    .. code:: python
+
+
+        from andes.interop.matpower import start_instance, to_matpower, from_matpower
+
+        system = from_matpower(m, 'mpc')
+
+    One can create an Excel file with dynamic data only and use the ``xlsx``
+    parser to load data into ``system``:
+
+    .. code:: python
+
+        from andes.io import xlsx
+
+        xlsx.read(system, andes.get_case('ieee14/ieee14_dyn_only.xlsx'))
+
+    The ``ieee14_dyn_only.xlsx`` is an example spreadsheet that only contains
+    dynamic components. One will need to create the ``idx`` correctly for
+    dynamic components to match these from the MATPOWER case. If not sure about
+    the indices, one can save the ANDES system to an Excel file, using:
+
+    .. code:: python
+
+        xlsx.write(system, 'system_static.xlsx')
+
+    """
+
+    if m is None:
+        raise ImportError("MATPOWER is not installed or not properly configured.")
+
+    mpc = {}
+    mpc['baseMVA'] = m.eval(f'{varname}.baseMVA;')
+    mpc['version'] = m.eval(f'{varname}.version;')
+    mpc['bus'] = m.eval(f'{varname}.bus;')
+    mpc['gen'] = m.eval(f'{varname}.gen;')
+    mpc['branch'] = m.eval(f'{varname}.branch;')
+
+    try:
+        mpc['gencost'] = m.eval(f'{varname}.gencost;')
+    except Oct2PyError:
+        logger.debug("No gencost in mpc")
+    try:
+        mpc['bus_names'] = m.eval(f'{varname}.bus_names;')
+    except Oct2PyError:
+        logger.debug("No bus_name in mpc")
+
+    if system is None:
+        system = andes.System()
+
+    andes.io.matpower.mpc2system(mpc, system)
+
+    return system
+
+
+def to_matpower(m, varname, system):
+    """
+    Send an ANDES case to a running MATLAB instance.
+
+    Parameters
+    ----------
+    m : MATLAB/Octave instance
+        Instance to which to send the MATPOWER case.
+    varname : str
+        Name of the variable to store the mpc case in MATLAB/Octave.
+    system : :class:`~andes.system.System`
+        System whose power flow data to send to MATPOWER.
+
+    Examples
+    --------
+
+    The code below will create an IEEE 14-bus example system in ANDES, convert it to
+    MATPOWER's case, and send to the MATLAB/Octave instance.
+
+    .. code:: python
+
+        import andes
+
+        from andes.interop.matpower import (start_instance,
+            to_matpower, from_matpower)
+
+        m = start_instance()
+
+        ss = andes.system.example()
+        mpc = to_matpower(m, 'mpc', ss)
+
+        m.eval("runpf(mpc)")
+
+        mpc_out = m.pull("mpc")  # retrieve the mpc case from MATLAB/Octave
+
+    """
+
+    if m is None:
+        raise ImportError("MATPOWER is not installed or not properly configured.")
+
+    mpc = andes.io.matpower.system2mpc(system)
+    m.push(varname, mpc)
+
+    return mpc
diff --git a/andes/interop/pandapower.py b/andes/interop/pandapower.py
new file mode 100644
index 000000000..da75ceeee
--- /dev/null
+++ b/andes/interop/pandapower.py
@@ -0,0 +1,453 @@
+"""
+Simple pandapower (2.7.0) interface
+"""
+
+import logging
+import numpy as np
+
+from numpy import pi
+from andes.shared import pd, rad2deg, deg2rad
+
+try:
+    import pandapower as pp
+except ImportError:
+    pp = None
+
+
+logger = logging.getLogger(__name__)
+
+
+def make_link_table(ssa):
+    """
+    Build the link table for generators and generator controllers in an ADNES
+    System.
+
+    Parameters
+    ----------
+    ssa :
+        The ADNES system to link
+
+    Returns
+    -------
+    DataFrame
+
+        Each column in the output Dataframe contains the ``idx`` of linked
+        ``StaticGen``, ``Bus``, ``SynGen``, ``Exciter``, and ``TurbineGov``.
+    """
+    # build StaticGen df
+    sg_cols = ['name', 'idx', 'bus']
+    ssa_sg = pd.DataFrame(columns=sg_cols)
+    for key in ssa.StaticGen.models:
+        sg = getattr(ssa, key)
+        ssa_sg = pd.concat([ssa_sg, sg.as_df()[sg_cols]], axis=0)
+    # build TurbineGov df
+    gov_cols = ['idx', 'syn']
+    ssa_gov = pd.DataFrame(columns=gov_cols)
+    for key in ssa.TurbineGov.models:
+        gov = getattr(ssa, key)
+        ssa_gov = pd.concat([ssa_gov, gov.as_df()[gov_cols]], axis=0)
+    # build Exciter df
+    exc_cols = ['idx', 'syn']
+    ssa_exc = pd.DataFrame(columns=exc_cols)
+    for key in ssa.Exciter.models:
+        exc = getattr(ssa, key)
+        ssa_exc = pd.concat([ssa_exc, exc.as_df()[exc_cols]], axis=0)
+    # build SynGen df
+    syn_cols = ['idx', 'bus']
+    ssa_syn = pd.DataFrame(columns=syn_cols)
+    for key in ssa.SynGen.models:
+        syn = getattr(ssa, key)
+        ssa_syn = pd.concat([ssa_syn, syn.as_df()[syn_cols]], axis=0)
+
+    # output
+    ssa_bus = ssa.Bus.as_df()[['name', 'idx']]
+    ssa_key = pd.merge(left=ssa_sg.rename(columns={'name': 'stg_name', 'idx': 'stg_idx', 'bus': 'bus_idx'}),
+                       right=ssa_bus.rename(columns={'name': 'bus_name', 'idx': 'bus_idx'}),
+                       how='left',
+                       on='bus_idx')
+    ssa_key = pd.merge(left=ssa_key,
+                       right=ssa_syn.rename(columns={'idx': 'syn_idx', 'bus': 'bus_idx'}),
+                       how='left',
+                       on='bus_idx')
+    ssa_key = pd.merge(left=ssa_key,
+                       right=ssa_exc.rename(columns={'idx': 'exc_idx', 'syn': 'syn_idx'}),
+                       how='left',
+                       on='syn_idx')
+    ssa_key = pd.merge(left=ssa_key,
+                       right=ssa_gov.rename(columns={'idx': 'gov_idx', 'syn': 'syn_idx'}),
+                       how='left',
+                       on='syn_idx')
+    cols = ['stg_name', 'stg_idx', 'bus_idx', 'syn_idx', 'exc_idx', 'gov_idx', 'bus_name']
+    return ssa_key[cols]
+
+
+def runopp_map(ssp, link_table, **kwargs):
+    """
+    Run OPF in pandapower using ``pp.runopp()`` and map results back to ANDES
+    based on the link table.
+
+    Parameters
+    ----------
+    ssp : pandapower network
+        The pandapower network
+
+    link_table : DataFrame
+        The link table of ADNES system
+
+    Returns
+    -------
+    DataFrame
+
+        The DataFrame contains the OPF results with columns ``p_mw``,
+        ``q_mvar``, ``vm_pu`` in p.u., and the corresponding ``idx`` of
+        ``StaticGen``, ``Exciter``, ``TurbineGov`` in ANDES.
+
+    Notes
+    -----
+    The pandapower net and the ANDES system must have same base MVA.
+    """
+
+    pp.runopp(ssp, **kwargs)
+    # take dispatch results from pp
+    ssp_res = pd.concat([ssp.gen['name'], ssp.res_gen[['p_mw', 'q_mvar', 'vm_pu']]], axis=1)
+
+    ssp_res = pd.merge(left=ssp_res,
+                       right=ssp.gen[['name', 'bus', 'controllable']],
+                       how='left', on='name')
+    ssp_res = pd.merge(left=ssp_res,
+                       right=ssp.bus[['name']].reset_index().rename(
+                           columns={'index': 'bus', 'name': 'bus_name'}),
+                       how='left', on='bus')
+    ssp_res = pd.merge(left=ssp_res,
+                       right=link_table[['bus_name', 'bus_idx', 'syn_idx', 'gov_idx', 'stg_idx', 'exc_idx']],
+                       how='left', on='bus_name')
+    ssp_res['p'] = ssp_res['p_mw'] / ssp.sn_mva
+    ssp_res['q'] = ssp_res['q_mvar'] / ssp.sn_mva
+    col = ['name', 'p', 'q', 'vm_pu', 'bus_name', 'bus_idx',
+           'controllable', 'syn_idx', 'gov_idx', 'exc_idx', 'stg_idx']
+    return ssp_res[col]
+
+
+def add_gencost(ssp, gen_cost):
+    """
+    Add cost function to converted pandapower net `ssp`.
+
+    The cost data follows the same format of pypower and matpower.
+
+    Now only poly_cost is supported.
+
+    Parameters
+    ----------
+    ssp :
+        The pandapower net
+
+    gen_cost : array
+        generator cost data
+    """
+    # check dim
+    if gen_cost.shape[0] != ssp.gen[ssp.gen['controllable']].shape[0]:
+        print('Input cost function size does not match controllable gen size.')
+
+    for num, uid in enumerate(ssp.gen[ssp.gen['controllable']].index):
+        if gen_cost[num, 0] == 2:  # poly_cost
+            pp.create_poly_cost(net=ssp,
+                                element=uid,
+                                et='gen',
+                                cp2_eur_per_mw2=gen_cost[num, 4],
+                                cp1_eur_per_mw=gen_cost[num, 5],
+                                cp0_eur=gen_cost[num, 6])
+        else:
+            # TODO: piecewise linear
+            continue
+
+    return True
+
+
+def to_pandapower(ssa, ctrl=[], verify=True):
+    """
+    Convert an ADNES system to a pandapower network for power flow studies.
+
+    Parameters
+    ----------
+    ssa : andes.system.System
+        The ADNES system to be converted
+    ctrl : list
+        The controlability of generators. The length should be the same with the
+        number of ``StaticGen``.
+        If not given, controllability of generators will be assigned by default.
+        Example input: [1, 0, 1, ...]; ``PV`` first, then ``Slack``.
+
+    Returns
+    -------
+    pandapower.auxiliary.pandapowerNet
+        A pandapower net with the same bus, branch, gen, and load data as the
+        ANDES system
+
+    Notes
+    -----
+    Handling of the following parameters:
+
+      - Line limts are set as 99999.0 in the output network.
+      - Generator cost is not included in the conversion. Use ``add_gencost()``
+        to add cost data.
+      - By default, ``SynGen`` equipped with ``TurbineGov`` in the ANDES System is converted
+        to generators with ``controllable=True`` in pp's network.
+      - By default, ``SynGen`` that has no ``TurbineGov`` and ``DG`` in the ANDES System
+        is converted to generators with ``controllable=False`` in pp's network.
+    """
+    if pp is None:
+        raise ImportError("Please install pandapower to continue")
+
+    # create a PP network
+    ssp = pp.create_empty_network(f_hz=ssa.config.freq,
+                                  sn_mva=ssa.config.mva,
+                                  )
+
+    # --- 1. convert buses ---
+    ssa_bus = ssa.Bus.as_df()
+    for uid in ssa_bus.index:
+        pp.create_bus(net=ssp,
+                      vn_kv=ssa_bus["Vn"].iloc[uid],
+                      name=ssa_bus["name"].iloc[uid],
+                      in_service=ssa_bus["u"].iloc[uid],
+                      max_vm_pu=ssa_bus["vmax"].iloc[uid],
+                      min_vm_pu=ssa_bus["vmin"].iloc[uid],
+                      zone=ssa_bus["zone"].iloc[uid],
+                      index=uid,
+                      )
+
+    # --- 2. convert Line ---
+    # TODO: 1) from- and to- sides `Y`; 2)`g`
+    ssa_mva = ssp.sn_mva
+    omega = 2 * pi * ssp.f_hz
+
+    ssa_bus_slice = ssa.Bus.as_df()[['idx', 'Vn']].rename(columns={"idx": "bus1", "Vn": "Vb"})
+    ssa_line = ssa.Line.as_df().merge(ssa_bus_slice, on='bus1', how='left')
+
+    ssa_line['Zb'] = ssa_line["Vb"]**2 / ssa_line["Sn"]
+    ssa_line['Yb'] = ssa_line["Sn"] / ssa_line["Vb"]**2
+    ssa_line['R'] = ssa_line["r"] * ssa_line['Zb']  # ohm
+    ssa_line['X'] = ssa_line["x"] * ssa_line['Zb']  # ohm
+    ssa_line['C'] = ssa_line["b"] / ssa_line['Zb'] / omega * 1e9  # nF
+    ssa_line['G'] = ssa_line["g"] * ssa_line['Yb'] * 1e6  # mS
+
+    # find index for transmission lines (i.e., non-transformers)
+    ssl = ssa_line
+    ssl['uidx'] = ssl.index
+    index_line = ssl['uidx'][ssl['Vn1'] == ssl['Vn2']][ssl['trans'] == 0]
+    ll_ka = len(ssa_line) * [99999]  # set large line limits
+
+    # --- 2a. transmission lines ---
+    for num, uid in enumerate(index_line):
+        from_bus_name = ssa_bus["name"][ssa_bus["idx"] == ssa_line["bus1"].iloc[uid]].values[0]
+        to_bus_name = ssa_bus["name"][ssa_bus["idx"] == ssa_line["bus2"].iloc[uid]].values[0]
+        from_bus = pp.get_element_index(ssp, 'bus', name=from_bus_name)
+        to_bus = pp.get_element_index(ssp, 'bus', name=to_bus_name)
+
+        pp.create_line_from_parameters(
+            net=ssp,
+            name=ssa_line["name"].iloc[uid],
+            from_bus=from_bus,
+            to_bus=to_bus,
+            in_service=ssa_line["u"].iloc[uid],
+            length_km=1,
+            r_ohm_per_km=ssa_line['R'].iloc[uid],
+            x_ohm_per_km=ssa_line['X'].iloc[uid],
+            c_nf_per_km=ssa_line['C'].iloc[uid],
+            #    g_us_per_km = ssa_line['R'].iloc[uid],
+            max_i_ka=ll_ka[uid],
+            type='ol',
+            max_loading_percent=100,
+            index=num,
+        )
+
+    # --- 2b. transformer ---
+    for num, uid in enumerate(ssa_line[~ssa_line.index.isin(index_line)].index):
+        from_bus_name = ssa_bus["name"][ssa_bus["idx"] == ssa_line["bus1"].iloc[uid]].values[0]
+        to_bus_name = ssa_bus["name"][ssa_bus["idx"] == ssa_line["bus2"].iloc[uid]].values[0]
+        from_bus = pp.get_element_index(ssp, 'bus', name=from_bus_name)
+        to_bus = pp.get_element_index(ssp, 'bus', name=to_bus_name)
+        from_vn_kv = ssp.bus['vn_kv'].iloc[from_bus]
+        to_vn_kv = ssp.bus['vn_kv'].iloc[to_bus]
+        if from_vn_kv >= to_vn_kv:
+            hv_bus = from_bus
+            vn_hv_kv = from_vn_kv
+            lv_bus = to_bus
+            vn_lv_kv = to_vn_kv
+            tap_side = 'hv'
+        else:
+            hv_bus = to_bus
+            vn_hv_kv = to_vn_kv
+            lv_bus = from_bus
+            vn_lv_kv = from_vn_kv
+            tap_side = 'lv'
+
+        rk = ssa_line['r'].iloc[uid]
+        xk = ssa_line['x'].iloc[uid]
+        zk = (rk ** 2 + xk ** 2) ** 0.5
+        sn = 99999.0
+        baseMVA = ssa_mva
+
+        ratio_1 = (ssa_line['tap'].iloc[uid] - 1) * 100
+        i0_percent = -ssa_line['b'].iloc[uid] * 100 * baseMVA / sn
+
+        pp.create_transformer_from_parameters(
+            net=ssp,
+            hv_bus=hv_bus,
+            lv_bus=lv_bus,
+            sn_mva=sn,
+            vn_hv_kv=vn_hv_kv,
+            vn_lv_kv=vn_lv_kv,
+            vk_percent=np.sign(xk) * zk * sn * 100 / baseMVA,
+            vkr_percent=rk * sn * 100 / baseMVA,
+            max_loading_percent=100,
+            pfe_kw=0, i0_percent=i0_percent,
+            shift_degree=ssa_line['phi'].iloc[uid] * rad2deg,
+            tap_step_percent=abs(ratio_1), tap_pos=np.sign(ratio_1),
+            tap_side=tap_side, tap_neutral=0,
+            index=num)
+
+    # --- 3. load ---
+    ssa_pq = ssa.PQ.as_df().copy()
+    ssa_pq['p_mw'] = ssa_pq["p0"] * ssa_mva
+    ssa_pq['q_mvar'] = ssa_pq["q0"] * ssa_mva
+
+    for uid in ssa_pq.index:
+        bus_name = ssa_bus["name"][ssa_bus["idx"] == ssa_pq["bus"].iloc[uid]].values[0]
+        bus = pp.get_element_index(ssp, 'bus', name=bus_name)
+        pp.create_load(net=ssp,
+                       name=ssa_pq["name"].iloc[uid],
+                       bus=bus,
+                       sn_mva=ssa_mva,
+                       p_mw=ssa_pq['p_mw'].iloc[uid],
+                       q_mvar=ssa_pq['q_mvar'].iloc[uid],
+                       in_service=ssa_pq["u"].iloc[uid],
+                       controllable=False,
+                       index=uid,
+                       type=None,
+                       )
+
+    # 4) shunt
+    ssa_shunt = ssa.Shunt.as_df().copy()
+    ssa_shunt['p_mw'] = ssa_shunt["g"] * ssa_mva
+    ssa_shunt['q_mvar'] = ssa_shunt["b"] * (-1) * ssa_mva
+
+    for uid in ssa_shunt.index:
+        bus_name = ssa_bus["name"][ssa_bus["idx"] == ssa_shunt["bus"].iloc[uid]].values[0]
+        bus = pp.get_element_index(ssp, 'bus', name=bus_name)
+        pp.create_shunt(net=ssp,
+                        bus=bus,
+                        p_mw=ssa_shunt['p_mw'].iloc[uid],
+                        q_mvar=ssa_shunt['q_mvar'].iloc[uid],
+                        vn_kv=ssa_shunt["Vn"].iloc[uid],
+                        step=1,
+                        max_step=1,
+                        name=ssa_shunt["name"].iloc[uid],
+                        in_service=ssa_shunt["u"].iloc[uid],
+                        index=uid,
+                        )
+
+    # 5) generator
+    ssa_busn = ssa.Bus.as_df().copy().reset_index()[["uid", "idx"]].rename(
+        columns={"uid": "pp_id", "idx": "bus_idx"})
+
+    # build StaticGen df
+    sg_cols = ['idx', 'u', 'name', 'Sn', 'bus', 'v0',
+               'p0', 'q0', 'pmax', 'pmin', 'qmax', 'qmin',
+               'vmax', 'vmin']
+    ssa_sg = pd.DataFrame(columns=sg_cols)
+    for key in ssa.StaticGen.models:
+        sg = getattr(ssa, key)
+        ssa_sg = pd.concat([ssa_sg, sg.as_df()[sg_cols]], axis=0)
+
+    ssa_sg = pd.merge(ssa_sg.rename(columns={"bus": "bus_idx"}),
+                      ssa_busn,
+                      how="left", on="bus_idx")
+
+    # build SynGen df
+    syg_cols = ['idx', 'u', 'name', 'bus']
+    ssa_syg = pd.DataFrame(columns=syg_cols)
+    for key in ssa.SynGen.models:
+        syg = getattr(ssa, key)
+        ssa_syg = pd.concat([ssa_syg, syg.as_df()[syg_cols]], axis=0)
+
+    # build TurbineGov df
+    gov_cols = ['idx', 'u', 'name', 'syn']
+    ssa_gov = pd.DataFrame(columns=gov_cols)
+    for key in ssa.TurbineGov.models:
+        gov = getattr(ssa, key)
+        ssa_gov = pd.concat([ssa_gov, gov.as_df()[gov_cols]], axis=0)
+
+    # By default, consider the StaticGen equipped with Exciter as controllable
+    ssa_sg_ctr = ssa_sg[["bus_idx"]]
+    if ctrl:
+        if len(ctrl) != len(ssa_sg):
+            raise ValueError("ctrl length does not match StaticGen length")
+        ssa_sg_ctr["ctrl"] = [bool(x) for x in ctrl]
+    else:
+        ssa_sg_ctr["ctrl"] = [not x for x in make_link_table(ssa)["gov_idx"].isna()]
+    ssa_sg = ssa_sg.merge(ssa_sg_ctr[["bus_idx", "ctrl"]], on="bus_idx", how="left")
+
+    # assign slack bus
+    ssa_sg["slack"] = False
+    ssa_sg["slack"][ssa_sg["bus_idx"] == ssa.Slack.bus.v[0]] = True
+
+    # compute the actual value
+    calc_cols = ['p0', 'q0', 'pmax', 'pmin', 'qmax', 'qmin']
+    for col in calc_cols:
+        ssa_sg[col] = ssa_sg[col] * ssa_sg["Sn"]
+
+    # fill the ctrl with False
+    ssa_sg.fillna(value=False, inplace=True)
+
+    # conversion
+    for uid in ssa_sg.index:
+        pp.create_gen(net=ssp,
+                      slack=ssa_sg["slack"].iloc[uid],
+                      bus=ssa_sg["pp_id"].iloc[uid],
+                      p_mw=ssa_sg["p0"].iloc[uid],
+                      vm_pu=ssa_sg["v0"].iloc[uid],
+                      sn_mva=ssa_sg["Sn"].iloc[uid],
+                      name=ssa_sg['name'].iloc[uid],
+                      controllable=ssa_sg["ctrl"].iloc[uid],
+                      in_service=ssa_sg["u"].iloc[uid],
+                      max_p_mw=ssa_sg["pmax"].iloc[uid],
+                      min_p_mw=ssa_sg["pmin"].iloc[uid],
+                      max_q_mvar=ssa_sg["qmax"].iloc[uid],
+                      min_q_mvar=ssa_sg["qmin"].iloc[uid],
+                      index=uid,
+                      )
+
+    if verify:
+        _verify_pf(ssa, ssp)
+
+    return ssp
+
+
+def _verify_pf(ssa, ssp, tol=1e-6):
+    """
+    Verify power flow results.
+
+    """
+    ssa.PFlow.run()
+    pp.runpp(ssp)
+
+    pf_bus = ssa.Bus.as_df()[["name"]]
+
+    # ssa
+    pf_bus['v_andes'] = ssa.Bus.v.v
+    pf_bus['a_andes'] = ssa.Bus.a.v
+
+    # ssp
+    pf_bus['v_pp'] = ssp.res_bus['vm_pu']
+    pf_bus['a_pp'] = ssp.res_bus['va_degree'] * deg2rad
+    pf_bus['v_diff'] = pf_bus['v_andes'] - pf_bus['v_pp']
+    pf_bus['a_diff'] = pf_bus['a_andes'] - pf_bus['a_pp']
+
+    if (np.max(np.abs(pf_bus['v_diff'])) < tol) and \
+            (np.max(np.abs(pf_bus['a_diff'])) < tol):
+        logger.info("Power flow results are consistent. Conversion is successful.")
+        return True
+    else:
+        logger.warning("Warning: Power flow results are inconsistent. Pleaes check!")
+        return False
diff --git a/andes/interop/pypowsybl.py b/andes/interop/pypowsybl.py
new file mode 100644
index 000000000..fc0e6a672
--- /dev/null
+++ b/andes/interop/pypowsybl.py
@@ -0,0 +1,245 @@
+"""
+Interoperability with pypowsybl.
+"""
+
+import logging
+import numpy as np
+
+from andes.shared import pd
+
+try:
+    import pypowsybl as pp
+except ImportError:
+    pp = None
+
+logger = logging.getLogger(__name__)
+
+
+def to_pypowsybl(ss):
+    """
+    Convert an ANDES system to a pypowsybl network.
+
+    Returns
+    -------
+    pypowsybl.network.Network
+
+    Parameters
+    ----------
+    ss : andes.system.System
+        The ANDES system to be converted.
+
+    Notes
+    -----
+    - Only the BUS_BREAKER topology is supported.
+    - Each bus has a voltage level named "VL" followed by the bus idx.
+    - Buses connected by transformers are in the same substation.
+
+    Warnings
+    --------
+    - Power flow results are not verified.
+
+    Examples
+    --------
+    One can utilize pypowsybl to draw network topology. For example,
+
+    .. code:: python
+
+        ss = andes.system.example()
+        n = to_pypowsybl(ss)
+        results = pp.loadflow.run_ac(n)
+
+        n.get_network_area_diagram()  # show diagram for system
+        n.get_single_line_diagram("VL6")  # show single-line diagram for bus 6
+
+    """
+    if pp is None:
+        raise ImportError("Please install pypowsybl.")
+
+    substations, voltage_levels = _make_substation_voltage(ss)
+    buses = _make_buses(ss)
+    lines, transformers = _make_tline_tf(ss)
+    loads = _make_loads(ss)
+    generators = _make_generators(ss)
+    shunt_df, shunt_model_df = _make_shunts(ss)
+
+    n = pp.network.create_empty()
+    n.create_substations(substations)
+    n.create_voltage_levels(voltage_levels)
+    n.create_buses(buses)
+    n.create_lines(lines)
+    n.create_loads(loads)
+    n.create_generators(generators)
+    n.create_shunt_compensators(shunt_df, non_linear_model_df=shunt_model_df)
+    n.create_2_windings_transformers(transformers)
+
+    return n
+
+
+def _make_substation_voltage(ss):
+    """
+    Make dataframes for substation and voltage levels.
+
+    """
+    # --- get `idx` for transmission lines (tline) and transformers (tf)
+    tf_idx = ss.Line.get_tf_idx()
+    bus1_tf = ss.Line.get("bus1", tf_idx)
+    bus2_tf = ss.Line.get("bus2", tf_idx)
+
+    # buses attached to the same transformer will be in one substation
+
+    # -- map bus idx (number or string) -> substation idx (number or string)
+
+    bus2subs = {bus_idx: f"S{bus_idx}" for bus_idx in ss.Bus.idx.v}
+    in_substation = {}
+
+    # point buses to substations based on transformers
+    for bus1, bus2 in zip(bus1_tf, bus2_tf):
+        if (bus1 not in in_substation) and (bus2 not in in_substation):
+            bus2subs[bus2] = bus2subs[bus1]
+            in_substation[bus1] = in_substation[bus2] = bus2subs[bus1]
+        elif (bus1 in in_substation):
+            bus2subs[bus2] = bus2subs[bus1] = in_substation[bus1]
+            in_substation[bus2] = bus2subs[bus1]
+        elif (bus2 in in_substation):
+            bus2subs[bus2] = bus2subs[bus1] = in_substation[bus2]
+            in_substation[bus1] = bus2subs[bus1]
+
+    # one substation can have multiple voltage levels --- map voltage level
+    # (number) -> substation name (string) ---
+    vl2subs = {bus_idx: f"S{bus_idx}" for bus_idx in ss.Bus.idx.v}
+
+    # update voltage levels of `bus2` to point to substation named after `bus1`
+    for bus1, bus2 in zip(bus1_tf, bus2_tf):
+        vl2subs[bus1] = bus2subs[bus1]
+        vl2subs[bus2] = bus2subs[bus2]
+
+    substation_ids = sorted(list(set(bus2subs.values())))
+
+    country = 'US'
+    substations = pd.DataFrame.from_records(
+        index='id',
+        data={'id': substation_ids,
+              'country': [country] * len(substation_ids),
+              },
+    )
+
+    # A substation can have multiple voltage levels In out case, one Bus has one
+    # voltage level
+    voltage_levels = pd.DataFrame.from_records(
+        index='id',
+        data={"id": ["VL{}".format(item) for item in ss.Bus.idx.v],
+              "substation_id": [vl2subs[bus] for bus in ss.Bus.idx.v],
+              "topology_kind": "BUS_BREAKER",
+              "nominal_v": ss.Bus.Vn.v,
+              }
+    )
+
+    return substations, voltage_levels
+
+
+def _make_buses(ss):
+    buses = pd.DataFrame.from_records(index='id', data={
+        'voltage_level_id': ["VL{}".format(item) for item in ss.Bus.idx.v],
+        'id':  ["{}".format(item) for item in ss.Bus.idx.v],
+    })
+
+    return buses
+
+
+def _make_tline_tf(ss):
+    """
+    Generate line and 2-winding transformer data.
+
+    """
+
+    tf_idx = ss.Line.get_tf_idx()
+    tline_idx = ss.Line.get_tline_idx()
+
+    tline_pos = ss.Line.idx2uid(tline_idx)
+    tf_pos = ss.Line.idx2uid(tf_idx)
+
+    transformers = pd.DataFrame.from_records(index='id', data={
+        'id': ['{}'.format(i) for i in ss.Line.get("idx", tf_idx)],
+        'name': ['{}'.format(i) for i in ss.Line.get("name", tf_idx)],
+        'voltage_level1_id': ["VL{}".format(item) for item in ss.Line.get("bus1", tf_idx)],
+        'voltage_level2_id': ["VL{}".format(item) for item in ss.Line.get("bus2", tf_idx)],
+        'bus1_id': ["{}".format(item) for item in ss.Line.get("bus1", tf_idx)],
+        'connectable_bus1_id': ["{}".format(item) for item in ss.Line.get("bus1", tf_idx)],
+        'bus2_id': ["{}".format(item) for item in ss.Line.get("bus2", tf_idx)],
+        'connectable_bus2_id': ["{}".format(item) for item in ss.Line.get("bus2", tf_idx)],
+        'rated_u1': ss.Bus.get("Vn", ss.Line.get("bus1", tf_idx)),
+        'rated_u2': ss.Bus.get("Vn", ss.Line.get("bus2", tf_idx)),
+        'rated_s': 9999 * np.ones(len(tf_idx)),
+        'r': ss.Line.get("r", tf_idx) * ss.Line.bases['Zb'][tf_pos],
+        'x': ss.Line.get("x", tf_idx) * ss.Line.bases['Zb'][tf_pos],
+        'g': ss.Line.get("g", tf_idx) / ss.Line.bases['Zb'][tf_pos],
+        'b': ss.Line.get("b", tf_idx) / ss.Line.bases['Zb'][tf_pos],
+    })
+
+    lines = pd.DataFrame.from_records(index='id', data={
+        'id': ['{}'.format(i) for i in ss.Line.get("idx", tline_idx)],
+        'name': ['{}'.format(i) for i in ss.Line.get("name", tline_idx)],
+        'voltage_level1_id': ["VL{}".format(item) for item in ss.Line.get("bus1", tline_idx)],
+        'voltage_level2_id': ["VL{}".format(item) for item in ss.Line.get("bus2", tline_idx)],
+        'bus1_id': ["{}".format(item) for item in ss.Line.get("bus1", tline_idx)],
+        'bus2_id': ["{}".format(item) for item in ss.Line.get("bus2", tline_idx)],
+        'r': ss.Line.get("r", tline_idx) * ss.Line.bases['Zb'][tline_pos],
+        'x': ss.Line.get("x", tline_idx) * ss.Line.bases['Zb'][tline_pos],
+        'g1': ss.Line.get("g1", tline_idx) / ss.Line.bases['Zb'][tline_pos],
+        'b1': ss.Line.get("b1", tline_idx) / ss.Line.bases['Zb'][tline_pos],
+        'g2': ss.Line.get("g2", tline_idx) / ss.Line.bases['Zb'][tline_pos],
+        'b2': ss.Line.get("b2", tline_idx) / ss.Line.bases['Zb'][tline_pos],
+    })
+
+    return lines, transformers
+
+
+def _make_loads(ss):
+
+    loads = pd.DataFrame.from_records(index='id', data={
+        'voltage_level_id': ["VL{}".format(item) for item in ss.PQ.bus.v],
+        'id': ["{}".format(item) for item in ss.PQ.idx.v],
+        'bus_id': ["{}".format(item) for item in ss.PQ.bus.v],
+        'p0': ss.PQ.p0.v * ss.config.mva,
+        'q0': ss.PQ.q0.v * ss.config.mva,
+    })
+
+    return loads
+
+
+def _make_generators(ss):
+    generators = pd.DataFrame.from_records(index='id', data={
+        'voltage_level_id': [f"VL{item}" for item in ss.PV.bus.v] + [f"VL{item}" for item in ss.Slack.bus.v],
+        'id': [f"GEN{item}" for item in ss.PV.idx.v] + [f"GEN{item}" for item in ss.Slack.idx.v],
+        'bus_id': [f"{item}" for item in ss.PV.bus.v] + [f"{item}" for item in ss.Slack.bus.v],
+        'target_p': np.hstack([ss.PV.p0.v, ss.Slack.p0.v]) * ss.config.mva,
+        'min_p': np.hstack([ss.PV.pmin.v, ss.Slack.pmin.v]) * ss.config.mva,
+        'max_p': np.hstack([ss.PV.pmax.v, ss.Slack.pmax.v]) * ss.config.mva,
+        'target_v': np.hstack([ss.PV.v0.v * ss.PV.Vn.v, ss.Slack.v0.v * ss.Slack.Vn.v]),
+        'voltage_regulator_on': True
+    })
+
+    return generators
+
+
+def _make_shunts(ss):
+    shunt_df = pd.DataFrame.from_records(index='id', data={
+        'id': [f"SHN{item}" for item in ss.Shunt.idx.v],
+        'name': [f"{item}" for item in ss.Shunt.name.v],
+        'model_type': 'NON_LINEAR',
+        'section_count': 1,
+        'target_v': ss.Shunt.Vn.v,
+        'target_deadband': 0,
+        'voltage_level_id': [f'VL{item}' for item in ss.Shunt.bus.v],
+        'bus_id': [f'{item}' for item in ss.Shunt.bus.v],
+    })
+
+    shunt_model_df = pd.DataFrame.from_records(
+        index='id',
+        data={"id": [f"SHN{item}" for item in ss.Shunt.idx.v],
+              "g": ss.Shunt.g.v / ss.Shunt.bases['Zb'],
+              "b": ss.Shunt.b.v / ss.Shunt.bases['Zb'],
+              }
+    )
+
+    return shunt_df, shunt_model_df
diff --git a/andes/io/__init__.py b/andes/io/__init__.py
index 03a615d5e..6f1ed60c5 100644
--- a/andes/io/__init__.py
+++ b/andes/io/__init__.py
@@ -1,3 +1,7 @@
+"""
+ANDES input parsers and output formatters.
+"""
+
 import importlib
 import io
 import logging
@@ -33,6 +37,19 @@
 
 
 def get_output_ext(out_format):
+    """
+    Helper function to get the output extension for the given output format.
+
+    Parameters
+    ----------
+    out_format : str
+        Output format name.
+
+    Returns
+    -------
+    str : file extension without dot or empty if not supported
+    """
+
     if (out_format is None) or (out_format is True):
         logger.warning('Dump to XLSX format by default')
         return 'xlsx'
diff --git a/andes/io/matpower.py b/andes/io/matpower.py
index cece6db3a..f03f5fa3d 100644
--- a/andes/io/matpower.py
+++ b/andes/io/matpower.py
@@ -4,8 +4,8 @@
 import re
 
 import andes.io
-
-from andes.shared import deg2rad, np
+import numpy as np
+from andes.shared import deg2rad, rad2deg
 
 logger = logging.getLogger(__name__)
 
@@ -25,6 +25,35 @@ def read(system, file):
     Read a MATPOWER data file into mpc, and build andes device elements.
     """
 
+    mpc = m2mpc(file)
+    return mpc2system(mpc, system)
+
+
+def m2mpc(infile: str) -> dict:
+    """
+    Parse MATPOWER file and return a dictionary with the data.
+
+    Supported fields include
+
+    - baseMVA
+    - bus
+    - bus_names
+    - gen
+    - branch
+    - gencost (parsed but not used)
+    - areas (parsed but not used)
+
+    Parameters
+    ----------
+    infile : str
+        Path to the MATPOWER file.
+
+    Returns
+    -------
+    dict
+        mpc struct names : numpy arrays
+    """
+
     func = re.compile(r'function\s')
     mva = re.compile(r'\s*mpc.baseMVA\s*=\s*')
     bus = re.compile(r'\s*mpc.bus\s*=\s*\[?')
@@ -36,12 +65,12 @@ def read(system, file):
     end = re.compile(r'\s*\];?')
     has_digit = re.compile(r'.*\d+\s*]?;?')
 
-    ret = True
     field = None
     info = True
 
-    base_mva = 100
     mpc = {
+        'version': 2,  # not in use
+        'baseMVA': 100,
         'bus': [],
         'gen': [],
         'branch': [],
@@ -50,7 +79,7 @@ def read(system, file):
         'bus_name': [],
     }
 
-    input_list = andes.io.read_file_like(file)
+    input_list = andes.io.read_file_like(infile)
 
     for line in input_list:
         line = line.strip().rstrip(';')
@@ -65,7 +94,7 @@ def read(system, file):
             else:
                 continue
         elif mva.search(line):
-            base_mva = float(line.split('=')[1])
+            mpc["baseMVA"] = float(line.split('=')[1])
 
         if not field:
             if bus.search(line):
@@ -110,19 +139,46 @@ def read(system, file):
                     try:
                         data = np.array([float(val) for val in item.split()])
                     except Exception as e:
-                        logger.error(f'Error parsing {system.files.case}')
+                        logger.error('Error parsing "%s"', infile)
                         raise e
                     mpc[field].append(data)
 
     # convert mpc to np array
     mpc_array = dict()
     for key, val in mpc.items():
-        mpc_array[key] = np.array(val)
+        if isinstance(val, (float, int)):
+            mpc_array[key] = val
+        elif isinstance(val, list):
+            if len(val) == 0:
+                continue
+            mpc_array[key] = np.array(val)
+        else:
+            raise NotImplementedError("Unkonwn type for mpc, ", type(val))
+
+    return mpc_array
+
+
+def mpc2system(mpc: dict, system) -> bool:
+    """
+    Load an mpc dict into an empty ANDES system.
+
+    Parameters
+    ----------
+    system : andes.system.System
+        Empty system to load the data into.
+    mpc : dict
+        mpc struct names : numpy arrays
+
+    Returns
+    -------
+    bool
+        True if successful, False otherwise.
+    """
 
     # list of buses with slack gen
     sw = []
 
-    system.mva = base_mva
+    system.config.mva = base_mva = mpc['baseMVA']
 
     for data in mpc['bus']:
         # idx  ty   pd   qd  gs  bs  area  vmag  vang  baseKV  zone  vmax  vmin
@@ -199,18 +255,15 @@ def read(system, file):
         #  0     1      2   3   4     5       6       7       8      9
         # status	angmin	angmax	Pf	Qf	Pt	Qt
         #   10       11       12    13  14  15  16
-        fbus = data[0]
-        tbus = data[1]
+        fbus = int(data[0])
+        tbus = int(data[1])
         r = data[2]
         x = data[3]
         b = data[4]
         status = int(data[10])
 
-        if data[8] == 0.0:  # not a transformer
-            tf = False
-            ratio = 1
-            angle = 0
-        elif data[8] == 1.0 and data[9] == 0.0:  # not a transformer
+        if (data[8] == 0.0) or (data[8] == 1.0 and data[9] == 0.0):
+            # not a transformer
             tf = False
             ratio = 1
             angle = 0
@@ -227,7 +280,123 @@ def read(system, file):
                    r=r, x=x, b=b,
                    trans=tf, tap=ratio, phi=angle)
 
-    if len(mpc['bus_name']) == len(system.Bus.name.v):
+    if ('bus_name' in mpc) and (len(mpc['bus_name']) == len(system.Bus.name.v)):
         system.Bus.name.v[:] = mpc['bus_name']
 
-    return ret
+    return True
+
+
+def _get_bus_id_caller(bus):
+    """
+    Helper function to get the bus id. If any of bus ``idx`` is a string, use
+    ``uid`` + 1. Otherwise, use ``idx``.
+
+    Parameters
+    ----------
+    bus : andes.models.bus.Bus
+        Bus object
+
+    Returns
+    -------
+    lambda function to that takes bus idx and returns bus id for matpower case
+
+    """
+
+    if np.array(bus.idx.v).dtype == np.object:
+        return lambda x: bus.idx2uid(x) + 1
+    else:
+        return lambda x: x
+
+
+def system2mpc(system) -> dict:
+    """
+    Convert data from an ANDES system to an mpc dict.
+
+    In the ``gen`` section, slack generators preceeds PV generators.
+    """
+
+    mpc = dict(version='2',
+               baseMVA=system.config.mva,
+               bus=np.zeros((system.Bus.n, 13), dtype=np.float64),
+               gen=np.zeros((system.PV.n + system.Slack.n, 21), dtype=np.float64),
+               branch=np.zeros((system.Line.n, 17), dtype=np.float64),
+               bus_name=np.zeros((system.Bus.n, ), dtype=object),
+               )
+
+    base_mva = system.config.mva
+
+    to_busid = _get_bus_id_caller(system.Bus)
+
+    # --- bus ---
+    bus = mpc['bus']
+    gen = mpc['gen']
+
+    bus[:, 0] = to_busid(system.Bus.idx.v)
+    bus[:, 1] = 1
+    bus[:, 7] = system.Bus.v0.v
+    bus[:, 8] = system.Bus.a0.v * rad2deg
+    bus[:, 9] = system.Bus.Vn.v
+    bus[:, 11] = system.Bus.vmax.v
+    bus[:, 12] = system.Bus.vmin.v
+
+    # area and zone not supported
+
+    # --- PQ ---
+    if system.PQ.n > 0:
+        pq_pos = system.Bus.idx2uid(system.PQ.bus.v)
+        bus[pq_pos, 2] = system.PQ.p0.v * base_mva
+        bus[pq_pos, 3] = system.PQ.q0.v * base_mva
+
+    # --- Shunt ---
+    if system.Shunt.n > 0:
+        shunt_pos = system.Bus.idx2uid(system.Shunt.bus.v)
+        bus[shunt_pos, 4] = system.Shunt.g.v * base_mva
+        bus[shunt_pos, 5] = system.Shunt.b.v * base_mva
+
+    # --- PV ---
+    if system.PV.n > 0:
+        pv_pos = system.Bus.idx2uid(system.PV.bus.v)
+        bus[pv_pos, 1] = 2
+        gen[system.Slack.n:, 0] = to_busid(system.PV.bus.v)
+        gen[system.Slack.n:, 1] = system.PV.p0.v * base_mva
+        gen[system.Slack.n:, 2] = system.PV.q0.v * base_mva
+        gen[system.Slack.n:, 3] = system.PV.qmax.v * base_mva
+        gen[system.Slack.n:, 4] = system.PV.qmin.v * base_mva
+        gen[system.Slack.n:, 5] = system.PV.v0.v
+        gen[system.Slack.n:, 6] = base_mva
+        gen[system.Slack.n:, 7] = system.PV.u.v
+        gen[system.Slack.n:, 8] = system.PV.pmax.v * base_mva
+        gen[system.Slack.n:, 9] = system.PV.pmin.v * base_mva
+
+    # --- Slack ---
+    if system.Slack.n > 0:
+        slack_pos = system.Bus.idx2uid(system.Slack.bus.v)
+        bus[slack_pos, 1] = 3
+        bus[slack_pos, 8] = system.Slack.a0.v * rad2deg
+
+        gen[:system.Slack.n, 0] = to_busid(system.Slack.bus.v)
+        gen[:system.Slack.n, 1] = system.Slack.p0.v * base_mva
+        gen[:system.Slack.n, 2] = system.Slack.q0.v * base_mva
+        gen[:system.Slack.n, 3] = system.Slack.qmax.v * base_mva
+        gen[:system.Slack.n, 4] = system.Slack.qmin.v * base_mva
+        gen[:system.Slack.n, 5] = system.Slack.v0.v
+        gen[:system.Slack.n, 6] = base_mva
+        gen[:system.Slack.n, 7] = system.Slack.u.v
+        gen[:system.Slack.n, 8] = system.Slack.pmax.v * base_mva
+        gen[:system.Slack.n, 9] = system.Slack.pmin.v * base_mva
+
+    if system.Line.n > 0:
+        branch = mpc['branch']
+        branch[:, 0] = to_busid(system.Line.bus1.v)
+        branch[:, 1] = to_busid(system.Line.bus2.v)
+        branch[:, 2] = system.Line.r.v
+        branch[:, 3] = system.Line.x.v
+        branch[:, 4] = system.Line.b.v
+
+        branch[:, 8] = system.Line.tap.v
+        branch[:, 9] = system.Line.phi.v * rad2deg
+        branch[:, 10] = system.Line.u.v
+
+    mpc['bus_name'] = np.array(system.Bus.name.v)
+
+    return mpc
diff --git a/andes/io/psse_new.py b/andes/io/psse_new.py
index 76ec2c041..e30a6f231 100644
--- a/andes/io/psse_new.py
+++ b/andes/io/psse_new.py
@@ -1,3 +1,7 @@
+"""
+A new PSS/E parser. NOT CURRENTLY IN USE.
+"""
+
 from andes.io.em_psse import parse_raw
 
 import logging
diff --git a/andes/io/streaming.py b/andes/io/streaming.py
index 00e65407b..9c92e3a49 100644
--- a/andes/io/streaming.py
+++ b/andes/io/streaming.py
@@ -1,3 +1,7 @@
+"""
+Simulation data streaming interface for CURENT DiME2.
+"""
+
 import logging
 from time import sleep
 import numpy as np
diff --git a/andes/io/txt.py b/andes/io/txt.py
index 06bf570f0..95e419d26 100644
--- a/andes/io/txt.py
+++ b/andes/io/txt.py
@@ -1,3 +1,7 @@
+"""
+Output TXT file formatter.
+"""
+
 import os
 from typing import Iterable
 
diff --git a/andes/main.py b/andes/main.py
index 9542b132b..a84f8d54b 100644
--- a/andes/main.py
+++ b/andes/main.py
@@ -1,5 +1,9 @@
 #!/bin/bash python
 
+"""
+Main entry point for the ANDES CLI and scripting interfaces.
+"""
+
 #  [ANDES] (C)2015-2021 Hantao Cui
 #
 #  This program is free software; you can redistribute it and/or modify
@@ -578,8 +582,8 @@ def run(filename, input_path='', verbose=20, mp_verbose=30, ncpu=NCPUS_PHYSICAL,
 
     """
 
-    if is_interactive() and len(logger.handlers) == 0:
-        config_logger(file=False, stream_level=verbose)
+    if is_interactive():
+        config_logger(verbose, file=False)
 
     # put `input_path` back to `kwargs`
     kwargs['input_path'] = input_path
diff --git a/andes/models/exciter/ac8b.py b/andes/models/exciter/ac8b.py
index ae9d35007..869797d17 100644
--- a/andes/models/exciter/ac8b.py
+++ b/andes/models/exciter/ac8b.py
@@ -205,12 +205,14 @@ def __init__(self, system, config):
 class AC8B(AC8BData, AC8BModel):
     """
     Exciter AC8B model.
-    Reference:
-    [1] PowerWorld, Exciter AC8B, [Online],
-    [2] NEPLAN, Exciters Models, [Online],
-    Available:
-    https://www.powerworld.com/WebHelp/Content/TransientModels_HTML/Exciter%20AC8B.htm
-    https://www.neplan.ch/wp-content/uploads/2015/08/Nep_EXCITERS1.pdf
+
+    Reference: [1]_, [2]_
+
+    .. [1] Powerworld, Exciter AC8B, [Online], Available:
+      https://www.powerworld.com/WebHelp/Content/TransientModels_HTML/Exciter%20AC8B.htm
+
+    .. [2] NEPLAN, Exciters Models, [Online], Available:
+      https://www.neplan.ch/wp-content/uploads/2015/08/Nep_EXCITERS1.pdf
     """
     def __init__(self, system, config):
         AC8BData.__init__(self)
diff --git a/andes/models/group.py b/andes/models/group.py
index 8770cadf6..1b6f3ef1f 100644
--- a/andes/models/group.py
+++ b/andes/models/group.py
@@ -1,4 +1,5 @@
 import logging
+import inspect
 from collections import OrderedDict
 
 import numpy as np
@@ -412,8 +413,8 @@ def doc(self, export='plain'):
         else:
             out += group_header + f'Group <{self.class_name}>\n' + group_header
 
-        if self.__doc__:
-            out += str(self.__doc__) + '\n\n'
+        if self.__doc__ is not None:
+            out += inspect.cleandoc(self.__doc__) + '\n\n'
 
         if len(self.common_params):
             out += 'Common Parameters: ' + ', '.join(self.common_params)
diff --git a/andes/models/line/line.py b/andes/models/line/line.py
index ab6999156..f839f51b1 100644
--- a/andes/models/line/line.py
+++ b/andes/models/line/line.py
@@ -2,6 +2,7 @@
 AC transmission line and two-winding transformer line.
 """
 
+import numpy as np
 from andes.core import (ModelData, IdxParam, NumParam, DataParam,
                         Model, ExtAlgeb, ConstService)
 
@@ -191,3 +192,30 @@ def __init__(self, system=None, config=None):
         self.v2.e_str = 'u * (-v2 ** 2 * (bh + bhk) + \
                               v1 * v2 * (ghk * sin(a1 - a2 - phi) + \
                                          bhk * cos(a1 - a2 - phi)) * itap)'
+
+    @property
+    def istf(self):
+        """
+        Return an array of booleans to indicate whether or not the device is a
+        transformer.
+
+        A transformer has ``tap != 1`` or ``phi != 0``.
+        """
+        tap_istf = (self.tap.v) != 1
+        phi_istf = (self.phi.v) != 0
+
+        return np.logical_or(tap_istf, phi_istf)
+
+    def get_tline_idx(self):
+        """
+        Return ``idx`` of transmission lines and exclude transformers.
+        """
+
+        return np.array(self.idx.v)[np.logical_not(self.istf)]
+
+    def get_tf_idx(self):
+        """
+        Return ``idx`` of transformers and exclude lines.
+        """
+
+        return np.array(self.idx.v)[self.istf]
diff --git a/andes/models/measurement/pll.py b/andes/models/measurement/pll.py
index aec29bf4d..f2302a367 100644
--- a/andes/models/measurement/pll.py
+++ b/andes/models/measurement/pll.py
@@ -84,11 +84,9 @@ class PLL1(PLL1Data, PLL1Model):
     """
     Simple Phasor Lock Loop (PLL) using one PI controller.
 
-    Input bus angle signal ->
-      Lag filter 1 with Tf ->
-      PI Controller (Kp, Ki) ->
-      Estimated angle (2 * pi * fn * PI_y) ->
-      Lag filter 2 with Tp
+    Input bus angle signal -> Lag filter 1 with Tf ->
+    PI Controller (Kp, Ki) -> Estimated angle (2 * pi * fn * PI_y) ->
+    Lag filter 2 with Tp
 
     The output signal is ``am``.
     """
diff --git a/andes/models/pss/ieeest.py b/andes/models/pss/ieeest.py
index 201f8d707..2f8cee06d 100644
--- a/andes/models/pss/ieeest.py
+++ b/andes/models/pss/ieeest.py
@@ -103,18 +103,20 @@ class IEEEST(IEEESTData, IEEESTModel):
 
     Input signals (MODE):
 
-    1 - Rotor speed deviation (p.u.),
-    2 - Bus frequency deviation (*) (p.u.),
-    3 - Generator P electrical in Gen MVABase (p.u.),
-    4 - Generator accelerating power (p.u.),
-    5 - Bus voltage (p.u.),
-    6 - Derivative of p.u. bus voltage.
+    1. Rotor speed deviation (p.u.),
+    2. Bus frequency deviation (p.u.) (*),
+    3. Generator P electrical in Gen MVABase (p.u.),
+    4. Generator accelerating power (p.u.),
+    5. Bus voltage (p.u.),
+    6. Derivative of p.u. bus voltage.
 
     (*) Due to the frequency measurement implementation difference,
     mode 2 is likely to yield different results across software.
 
-    Blocks are named `F1`, `F2`, `LL1`, `LL2` and `WO` in sequence.
-    Two limiters are named `VLIM` and `OLIM` in sequence.
+    .. note::
+
+        Blocks are named `F1`, `F2`, `LL1`, `LL2` and `WO` in sequence.
+        Two limiters are named `VLIM` and `OLIM` in sequence.
     """
 
     def __init__(self, system, config):
diff --git a/andes/models/renewable/repca1.py b/andes/models/renewable/repca1.py
index a425198ae..df07d9474 100644
--- a/andes/models/renewable/repca1.py
+++ b/andes/models/renewable/repca1.py
@@ -492,21 +492,22 @@ def __init__(self, system, config):
 
 class REPCA1(REPCA1Data, REPCA1Model):
     """
-    REPCA1 plat control model.
+    REPCA1: renewable energy power plat control model.
 
-    <PSS/E parser notice>
+    The output of the model, ``Pext`` and ``Qext``,  are the increment signals
+    of active and reactive power for the electrical control model.
 
-    In PSS/E dyr file:
+    Notes for PSS/E DYR parser:
 
-    1. If ICONs M+1 and M+2 are set to 0 when using generator power,
-       an error will be thrown by the parser, saying
-       "<REPCA1> cannot retrieve <bus1> from <ACLine> using <line>:
-       KeyError('Group <ACLine> does not contain device with idx=False')".
-       Manual effort is required to run the converted file. In the
-       REPCA1 sheet, input the idx of a line that connects to the RenGen bus.
+    1. If ICONs M+1 and M+2 are set to 0 when using generator power, an error
+       will be thrown by the parser, saying "<REPCA1> cannot retrieve <bus1>
+       from <ACLine> using <line>: KeyError('Group <ACLine> does not contain
+       device with idx=False')". Manual effort is required to run the converted
+       file. In the REPCA1 sheet, provide the idx of a line that connects to the
+       RenGen bus.
 
-    2. PSS/E enters ICONs M+3 as a string in single quotes. The pair of single quotes
-       need to be removed, or the conversion will fail.
+    2. PSS/E enters ICONs M+3 as a string in single quotes. The pair of single
+       quotes need to be removed, or the conversion will fail.
     """
 
     def __init__(self, system, config):
diff --git a/andes/models/renewable/wtdta1.py b/andes/models/renewable/wtdta1.py
index 1f76f9dbe..a1dd56d56 100644
--- a/andes/models/renewable/wtdta1.py
+++ b/andes/models/renewable/wtdta1.py
@@ -121,7 +121,7 @@ def __init__(self, system, config):
 
         self.wg = AliasState(self.s2_y, tex_name=r'\omega_g')
 
-        # TODO: `s3_y` needs to be properly reinitialized with the new `wr0`
+        # `s3_y` gets reinitialized in `WTTQA1`
         self.s3 = Integrator(u='s1_y - s2_y',
                              T=1.0,
                              K=self.Kshaft,
diff --git a/andes/models/renewable/wtpta1.py b/andes/models/renewable/wtpta1.py
index 86894a2e9..5371af90e 100644
--- a/andes/models/renewable/wtpta1.py
+++ b/andes/models/renewable/wtpta1.py
@@ -1,6 +1,7 @@
 from andes.core import (Algeb, ExtAlgeb, ExtParam, ExtService, ExtState,
                         IdxParam, Model, ModelData, NumParam,)
 from andes.core.block import LagAntiWindupRate, PIAWHardLimit
+from andes.core.service import PostInitService
 
 
 class WTPTA1Data(ModelData):
@@ -85,7 +86,7 @@ def __init__(self, system, config):
                             export=False,
                             )
 
-        self.wt = ExtAlgeb(model='RenGovernor', src='wt', indexer=self.rego,
+        self.wt = ExtState(model='RenGovernor', src='wt', indexer=self.rego,
                            export=False,
                            )
 
@@ -114,9 +115,10 @@ def __init__(self, system, config):
 
         self.wref = Algeb(tex_name=r'\omega_{ref}',
                           info='optional speed reference',
-                          e_str='wt - wref',
+                          e_str='wref0 - wref',
                           v_str='wt',
                           )
+        self.wref0 = PostInitService(v_str='wref', info='initial wref')
 
         self.PIw = PIAWHardLimit(u='Kcc * (Pord - Pref) + wt - wref', kp=self.Kpw, ki=self.Kiw,
                                  aw_lower=self.thmin, aw_upper=self.thmax,
diff --git a/andes/models/renewable/wttqa1.py b/andes/models/renewable/wttqa1.py
index 8b5b3da19..09ca1c0e3 100644
--- a/andes/models/renewable/wttqa1.py
+++ b/andes/models/renewable/wttqa1.py
@@ -130,9 +130,10 @@ def __init__(self, system, config):
         self.reg = ExtParam(model='RenExciter', src='reg', indexer=self.ree,
                             export=False,)
 
-        self.Sngo = ExtParam(model='RenGovernor', src='Sn', indexer=self.rego,
+        self.Sngo = ExtParam(model='RenGen', src='Sn', indexer=self.reg,
                              tex_name='S_{n,go}', export=False,
                              )
+
         self.Sn = NumSelect(self.Tn,
                             fallback=self.Sngo,
                             tex_name='S_n',
@@ -173,7 +174,7 @@ def __init__(self, system, config):
 
         self.s3_y = ExtState(model='RenGovernor', src='s3_y', indexer=self.rego,
                              tex_name='y_{s3}', export=False,
-                             v_str='Pref0 / wg / Kshaft',
+                             v_str='Pref0 / wg',
                              v_setter=True,
                              )
 
@@ -189,12 +190,13 @@ def __init__(self, system, config):
                             tex_name=r'\omega_{r0}', export=False,
                             info='Retrieved initial w0 from RenGovernor',
                             v_str='fPe_y',
-                            e_str='-w0 + fPe_y',
+                            e_str='-w0 + fPe_y',  # update `wr0` of RenGovernor
                             v_setter=True,
                             ename='dwr',
                             tex_ename=r'\Delta \omega_r',
                             )
 
+        # `s2_y` is `wref` for WTPTA1
         self.s2 = Lag(u=self.fPe_y, T=self.Twref, K=1.0,
                       tex_name='s_2', info='speed filter',
                       )
diff --git a/andes/plot.py b/andes/plot.py
index f1df141b7..8a86c7349 100644
--- a/andes/plot.py
+++ b/andes/plot.py
@@ -1,5 +1,5 @@
 """
-The Andes plotting tool.
+The ANDES plotting tool.
 """
 
 import logging
diff --git a/andes/routines/__init__.py b/andes/routines/__init__.py
index ab5b7082e..1cb121554 100644
--- a/andes/routines/__init__.py
+++ b/andes/routines/__init__.py
@@ -1,3 +1,7 @@
+"""
+Package for ANDES analysis routines.
+"""
+
 from collections import OrderedDict
 from andes.utils.func import list_flatten
 
diff --git a/andes/routines/base.py b/andes/routines/base.py
index ec6705879..47254bda1 100644
--- a/andes/routines/base.py
+++ b/andes/routines/base.py
@@ -1,3 +1,7 @@
+"""
+Base class for ANDES calculation routines.
+"""
+
 from andes.linsolvers.solverbase import Solver
 from andes.core import Config
 from collections import OrderedDict
diff --git a/andes/routines/tds.py b/andes/routines/tds.py
index 95a5b656f..992d6e27f 100644
--- a/andes/routines/tds.py
+++ b/andes/routines/tds.py
@@ -14,7 +14,7 @@
 
 from andes.utils.misc import elapsed, is_notebook, is_interactive
 from andes.utils.tab import Tab
-from andes.shared import tqdm, np, pd
+from andes.shared import tqdm, tqdm_nb, np, pd
 from andes.shared import matrix, spdiag
 
 logger = logging.getLogger(__name__)
@@ -323,8 +323,12 @@ def run(self, no_summary=False, **kwargs):
             logger.debug("Initialization only is requested and done")
             return self.initialized
 
-        self.pbar = tqdm(total=100, unit='%', ncols=80, ascii=True,
-                         file=sys.stdout, disable=self.config.no_tqdm)
+        if is_notebook():
+            self.pbar = tqdm_nb(total=100, unit='%', file=sys.stdout,
+                                disable=self.config.no_tqdm)
+        else:
+            self.pbar = tqdm(total=100, unit='%', ncols=80, ascii=True,
+                             file=sys.stdout, disable=self.config.no_tqdm)
 
         if resume:
             perc = round((dae.t - config.t0) / (config.tf - config.t0) * 100, 0)
@@ -385,7 +389,7 @@ def run(self, no_summary=False, **kwargs):
                     break
 
         self.pbar.close()
-        delattr(self, 'pbar')  # removed `pbar` so that System object can be serialized
+        self.pbar = None  # removed `pbar` so that System object can be serialized
 
         if self.busted:
             logger.error(self.err_msg)
diff --git a/andes/shared.py b/andes/shared.py
index eb46a8f9f..4e4335cc1 100644
--- a/andes/shared.py
+++ b/andes/shared.py
@@ -36,6 +36,7 @@
 
 # --- MATH CONSTANTS ---
 deg2rad = math.pi/180
+rad2deg = 180 / math.pi
 pi2o3 = math.pi * 2 / 3
 sqrt3 = math.sqrt(3)
 isqrt3 = math.sqrt(1/3)
@@ -56,6 +57,7 @@
 
 # --- lazy import packages ---
 tqdm = LazyImport('from tqdm import tqdm')
+tqdm_nb = LazyImport('from tqdm.notebook import tqdm')
 
 pd = LazyImport('import pandas')
 numba = LazyImport('import numba')
diff --git a/andes/system.py b/andes/system.py
index b81ce0cc7..0670094e8 100644
--- a/andes/system.py
+++ b/andes/system.py
@@ -880,9 +880,12 @@ def calc_pu_coeff(self):
         """
         Perform per unit value conversion.
 
-        This function calculates the per unit conversion factors, stores input parameters to `vin`, and perform
-        the conversion.
+        This function calculates the per unit conversion factors, stores input
+        parameters to `vin`, and perform the conversion.
         """
+        # `Sb`, `Vb` and `Zb` are the system base, bus base values
+        # `Sn`, `Vn` and `Zn` are the device bases
+
         Sb = self.config.mva
 
         for mdl in self.models.values():
@@ -935,6 +938,10 @@ def calc_pu_coeff(self):
                 for p in mdl.find_param(prop).values():
                     p.set_pu_coeff(coeff)
 
+            # store coeffs and bases back in models.
+            mdl.coeffs = coeffs
+            mdl.bases = {'Sn': Sn, 'Sb': Sb, 'Vn': Vn, 'Vb': Vb, 'Zn': Zn, 'Zb': Zb}
+
     def l_update_var(self, models: OrderedDict, niter=None, err=None):
         """
         Update variable-based limiter discrete states by calling ``l_update_var`` of models.
@@ -2046,13 +2053,24 @@ def supported_models(self, export='plain'):
             A table-formatted string for the groups and models
         """
 
+        def rst_ref(name, export):
+            """
+            Refer to the model in restructuredText mode so that
+            it renders as a hyperlink.
+            """
+
+            if export == 'rest':
+                return ":ref:`" + name + '`'
+            else:
+                return name
+
         pairs = list()
         for g in self.groups:
             models = list()
             for m in self.groups[g].models:
-                models.append(m)
+                models.append(rst_ref(m, export))
             if len(models) > 0:
-                pairs.append((g, ', '.join(models)))
+                pairs.append((rst_ref(g, export), ', '.join(models)))
 
         tab = Tab(title='Supported Groups and Models',
                   header=['Group', 'Models'],
@@ -2203,3 +2221,21 @@ def _set_z_name(mdl, dae, dests):
                 dests[0].append(f'{name} {_append_model_name(mdl_name, idx_item)}')
                 dests[1].append(rf'${item.tex_name}$ {_append_model_name(mdl_name, idx_item)}')
                 dae.o += 1
+
+
+def example(setup=True, no_output=True, **kwargs):
+    """
+    Return an :py:class:`andes.system.System` object for the
+    ``ieee14_linetrip.xlsx`` as an example.
+
+    This function is useful when a user wants to quickly get a
+    System object for testing.
+
+    Returns
+    -------
+    System
+        An example :py:class:`andes.system.System` object.
+    """
+
+    return andes.load(andes.get_case("ieee14/ieee14_linetrip.xlsx"),
+                      setup=setup, no_output=no_output, **kwargs)
diff --git a/andes/utils/paths.py b/andes/utils/paths.py
index 93095b93d..a2b6719b3 100644
--- a/andes/utils/paths.py
+++ b/andes/utils/paths.py
@@ -214,8 +214,9 @@ def get_pkl_path():
 
 def get_dot_andes_path():
     """
-    Return the path to ``<HomeDir>/.andes``
+    Return the path to ``$HOME/.andes``
     """
+
     return os.path.join(str(pathlib.Path.home()), '.andes')
 
 
@@ -239,6 +240,10 @@ def get_log_dir():
 
 
 def confirm_overwrite(outfile, overwrite=None):
+    """
+    Confirm overwriting a file.
+    """
+
     try:
         if os.path.isfile(outfile):
             if overwrite is None:
diff --git a/andes/variables/__init__.py b/andes/variables/__init__.py
index 36da3f421..ae2516aae 100644
--- a/andes/variables/__init__.py
+++ b/andes/variables/__init__.py
@@ -1,3 +1,7 @@
+"""
+Variable package with classes for numerical DAE.
+"""
+
 from .dae import DAE  # NOQA
 from .fileman import FileMan  # NOQA
 from .report import Report  # NOQA
diff --git a/binder/postBuild b/binder/postBuild
index 6317f3fae..59d1c71b1 100644
--- a/binder/postBuild
+++ b/binder/postBuild
@@ -1,3 +1,3 @@
-python -m pip install .
+python -m pip install .[all]
 
 python -m andes prep
\ No newline at end of file
diff --git a/binder/requirements.txt b/binder/requirements.txt
deleted file mode 100644
index 5c23cf98b..000000000
--- a/binder/requirements.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-kvxopt>=1.2.5
-numpy
-scipy
-sympy>=1.6,<1.9
-numba
-pandas
-matplotlib
-openpyxl
-xlsxwriter
-dill
-pathos
-tqdm
-pyyaml
-coloredlogs
-chardet
-kvxopt
-codecov
-coverage
-pytest
-flake8
-sphinx
-ipython
-numpydoc
-sphinx-copybutton
-sphinx_rtd_theme
-myst-parser
-psutil
diff --git a/docs/source/api.rst b/docs/source/api.rst
index 150cb5a72..bbee3d76f 100644
--- a/docs/source/api.rst
+++ b/docs/source/api.rst
@@ -53,6 +53,19 @@ I/O
 
    andes.io
 
+Interoperability
+================
+
+.. autosummary::
+   :maxdepth:4
+   :toctree: _generated
+   :recursive:
+   :caption: Interoperability
+   :template: autosummary/module_toctree.rst
+
+   andes.interop
+
+
 Others
 ======
 
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 1bc922431..3c6b67a5e 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -30,7 +30,6 @@
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-import sphinx_rtd_theme
 import andes
 import shutil
 
@@ -112,8 +111,6 @@
 # a list of builtin themes.
 #
 html_theme = "pydata_sphinx_theme"
-# html_theme = 'sphinx_rtd_theme'
-# html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
@@ -227,9 +224,9 @@
 # import and execute model reference generation script
 exec(open("genmodelref.py").read())
 
-shutil.rmtree("examples", ignore_errors=True)
-shutil.copytree("../../examples", "examples", )
-shutil.rmtree("examples/demonstration")
+shutil.rmtree("_examples", ignore_errors=True)
+shutil.copytree("../../examples", "_examples", )
+shutil.rmtree("_examples/demonstration")
 
 jupyter_execute_notebooks = "off"
 
diff --git a/docs/source/examples.rst b/docs/source/examples/index.rst
similarity index 52%
rename from docs/source/examples.rst
rename to docs/source/examples/index.rst
index 30b0ecee2..dd725326b 100644
--- a/docs/source/examples.rst
+++ b/docs/source/examples/index.rst
@@ -12,14 +12,23 @@ can run the examples in a live Jupyter Notebook online using
 
 .. toctree::
    :maxdepth: 2
+   :caption: Scripting
 
-   examples/ex1.ipynb
-   examples/ex2.ipynb
-   examples/ex3.ipynb
-   examples/ex4.ipynb
-   examples/ex5.ipynb
-   examples/ex6.ipynb
-   examples/ex7.ipynb
-   examples/ex8.ipynb
-   examples/ex9.ipynb
-   examples/ex10.ipynb
+   ../_examples/ex1.ipynb
+   ../_examples/ex2.ipynb
+   ../_examples/ex3.ipynb
+   ../_examples/ex4.ipynb
+   ../_examples/ex5.ipynb
+   ../_examples/ex6.ipynb
+   ../_examples/ex7.ipynb
+   ../_examples/ex8.ipynb
+   ../_examples/ex9.ipynb
+   ../_examples/ex10.ipynb
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Interoperability
+
+   matpower.ipynb
+   pandapower.ipynb
+   pypowsybl.ipynb
diff --git a/docs/source/examples/matpower.ipynb b/docs/source/examples/matpower.ipynb
new file mode 100755
index 000000000..7ba2082c6
--- /dev/null
+++ b/docs/source/examples/matpower.ipynb
@@ -0,0 +1,457 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "483f3857",
+   "metadata": {},
+   "source": [
+    "# MATPOWER Interface"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "7b261dd8",
+   "metadata": {},
+   "source": [
+    "See also the API reference for `andes.interop.matpower`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "8130b077",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import andes\n",
+    "\n",
+    "from andes.interop.matpower import (start_instance, \n",
+    "    to_matpower, from_matpower)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0f237712",
+   "metadata": {},
+   "source": [
+    "## Create an Octave/MATLAB instance"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "79e2b3a1",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "m = start_instance()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "c1b1c973",
+   "metadata": {},
+   "source": [
+    "## Convert to MATPOWER"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "db4fe683",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ss = andes.system.example()  # load an ieee14 example case\n",
+    "\n",
+    "mpc = to_matpower(m, 'mpc', ss)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "aba19368",
+   "metadata": {},
+   "source": [
+    "Test if the power flow of mpc can be solved"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "2f05a127",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "warning: error caught while executing handle class delete method:\n",
+      "'osqp_mex' undefined near line 40 column 13\n",
+      "OSQP Error!\n",
+      "\n",
+      "MATPOWER Version 7.1, 08-Oct-2020 -- AC Power Flow (Newton)\n",
+      "\n",
+      "Newton's method power flow (power balance, polar) converged in 3 iterations.\n",
+      "\n",
+      "Converged in 0.01 seconds\n",
+      "================================================================================\n",
+      "|     System Summary                                                           |\n",
+      "================================================================================\n",
+      "\n",
+      "How many?                How much?              P (MW)            Q (MVAr)\n",
+      "---------------------    -------------------  -------------  -----------------\n",
+      "Buses             14     Total Gen Capacity     400.0        -112.0 to 150.0\n",
+      "Generators         5     On-line Capacity       400.0        -112.0 to 150.0\n",
+      "Committed Gens     5     Generation (actual)    226.4              49.8\n",
+      "Loads             11     Load                   223.7              95.4\n",
+      "  Fixed           11       Fixed                223.7              95.4\n",
+      "  Dispatchable     0       Dispatchable          -0.0 of -0.0      -0.0\n",
+      "Shunts             2     Shunt (inj)             -0.0              35.3\n",
+      "Branches          20     Losses (I^2 * Z)         2.73             13.52\n",
+      "Transformers      20     Branch Charging (inj)     -               23.8\n",
+      "Inter-ties         0     Total Inter-tie Flow     0.0               0.0\n",
+      "Areas              1\n",
+      "\n",
+      "                          Minimum                      Maximum\n",
+      "                 -------------------------  --------------------------------\n",
+      "Voltage Magnitude   1.010 p.u. @ bus 3          1.030 p.u. @ bus 2\n",
+      "Voltage Angle      -9.48 deg   @ bus 14         0.00 deg   @ bus 1\n",
+      "P Losses (I^2*R)             -                  0.50 MW    @ line 1-2\n",
+      "Q Losses (I^2*X)             -                  2.11 MVAr  @ line 8-7\n",
+      "\n",
+      "================================================================================\n",
+      "|     Bus Data                                                                 |\n",
+      "================================================================================\n",
+      " Bus      Voltage          Generation             Load\n",
+      "  #   Mag(pu) Ang(deg)   P (MW)   Q (MVAr)   P (MW)   Q (MVAr)\n",
+      "----- ------- --------  --------  --------  --------  --------\n",
+      "    1  1.030    0.000*    81.43    -21.62       -         -\n",
+      "    2  1.030   -1.764     40.00     30.44     21.70     12.70\n",
+      "    3  1.010   -3.537     40.00     12.60     50.00     25.00\n",
+      "    4  1.011   -4.410       -         -       47.80     10.00\n",
+      "    5  1.017   -3.843       -         -        7.60      1.60\n",
+      "    6  1.030   -6.453     30.00     20.99     15.00      7.50\n",
+      "    7  1.022   -4.885       -         -         -         -\n",
+      "    8  1.030   -1.540     35.00      7.40       -         -\n",
+      "    9  1.022   -7.246       -         -       29.50     16.60\n",
+      "   10  1.016   -7.415       -         -        9.00      5.80\n",
+      "   11  1.019   -7.080       -         -        3.50      1.80\n",
+      "   12  1.017   -7.473       -         -        6.10      1.60\n",
+      "   13  1.014   -7.721       -         -       13.50      5.80\n",
+      "   14  1.016   -9.481       -         -       20.00      7.00\n",
+      "                        --------  --------  --------  --------\n",
+      "               Total:    226.43     49.80    223.70     95.40\n",
+      "\n",
+      "================================================================================\n",
+      "|     Branch Data                                                              |\n",
+      "================================================================================\n",
+      "Brnch   From   To    From Bus Injection   To Bus Injection     Loss (I^2 * Z)\n",
+      "  #     Bus    Bus    P (MW)   Q (MVAr)   P (MW)   Q (MVAr)   P (MW)   Q (MVAr)\n",
+      "-----  -----  -----  --------  --------  --------  --------  --------  --------\n",
+      "   1      1      2     50.10    -18.36    -49.60     14.29     0.503      1.53\n",
+      "   2      1      5     31.33     -3.26    -30.83      0.17     0.500      2.06\n",
+      "   3      2      3     17.79      4.11    -17.63     -8.00     0.158      0.67\n",
+      "   4      2      4     28.02      0.46    -27.58     -2.69     0.433      1.31\n",
+      "   5      2      5     22.09     -1.13    -21.83     -1.70     0.262      0.80\n",
+      "   6      3      4      7.63     -4.40     -7.58      3.21     0.047      0.12\n",
+      "   7      4      5    -25.97     -5.70     26.07      5.99     0.092      0.29\n",
+      "   8      6     11      6.91      2.37     -6.86     -2.27     0.048      0.10\n",
+      "   9      6     12      7.93      1.32     -7.86     -1.17     0.075      0.16\n",
+      "  10      6     13     19.15      2.76    -18.92     -2.31     0.234      0.46\n",
+      "  11      7      9     39.12      1.46    -39.12      0.15     0.000      1.61\n",
+      "  12      9     10      5.67      5.40     -5.65     -5.35     0.019      0.05\n",
+      "  13      9     14     13.17     -3.85    -12.94      4.34     0.229      0.49\n",
+      "  14     10     11     -3.35     -0.45      3.36      0.47     0.009      0.02\n",
+      "  15     12     13      1.76     -0.43     -1.75      0.44     0.007      0.01\n",
+      "  16     13     14      7.17     -3.93     -7.06      4.16     0.111      0.23\n",
+      "  17      4      7      4.12     -3.76     -4.12      3.83    -0.000      0.06\n",
+      "  18      4      9      9.22     -1.06     -9.22      1.53     0.000      0.47\n",
+      "  19      6      5    -18.99      7.03     18.99     -6.06     0.000      0.97\n",
+      "  20      8      7     35.00      7.40    -35.00     -5.29     0.000      2.11\n",
+      "                                                             --------  --------\n",
+      "                                                    Total:     2.727     13.52\n"
+     ]
+    }
+   ],
+   "source": [
+    "m.eval(\"runpf(mpc)\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "b25d8bd6",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mpc_sol = m.pull(\"mpc\")  # retrieve the solution"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "094c359c",
+   "metadata": {},
+   "source": [
+    "One can also save the case to a MATPOWER `.m` file from Octave/MATLAB. Comment\n",
+    "in and run the following code:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "8e462b03",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# m.eval(\"savecase('case14_andes.m', mpc)\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "30fed4d4",
+   "metadata": {},
+   "source": [
+    "## Convert from MATPOWER"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "2c04649f",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "system = from_matpower(m, 'mpc')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "21763249",
+   "metadata": {},
+   "source": [
+    "`m.pull()` won't work if one has run OPF in Octave/MATLAB because Oct2Py does not support custom class objects created by MATPOWER. \n",
+    "\n",
+    "`from _matpower()` will read the individual fields to construct an `mpc` dict internally before creating a system."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "6a4d2b28",
+   "metadata": {},
+   "source": [
+    "## Add dynamic data"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d1609d34",
+   "metadata": {},
+   "source": [
+    "One can create an Excel file with dynamic data only and use the xlsx parser to load data into system:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "595ba30a",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<andes.system.System at 0x7f8684043520>"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "from andes.io import xlsx\n",
+    "\n",
+    "xlsx.read(system, andes.get_case('ieee14/ieee14_dyn_only.xlsx'))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "73f07f47",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "6ab20b9ff74e4992b8387957a2d1ce0f",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "  0%|          | 0/100 [00:00<?, ?%/s]"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<Fault 1>: Applying fault on Bus (idx=7) at t=1.0 sec.\n",
+      "<Fault 1>: Clearing fault on Bus (idx=7) at t=1.03333 sec.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "system.setup()\n",
+    "\n",
+    "system.PFlow.run()\n",
+    "\n",
+    "system.TDS.run()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "585749f0",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "<Figure size 600x400 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "(<Figure size 600x400 with 1 Axes>, <AxesSubplot:xlabel='Time [s]'>)"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "system.TDS.plt.plot(system.GENROU.omega)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f970a278",
+   "metadata": {},
+   "source": [
+    "Since the data in `ieee14_dyn_only.xlsx` is stripped from `ieee14/ieee14_fault.xlsx`, the above results is identical to the simulation of the latter case:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "baea445a",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "e9bd8a3fe6be4c96a4eb95d52532743e",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "  0%|          | 0/100 [00:00<?, ?%/s]"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<Fault 1>: Applying fault on Bus (idx=9) at t=1.0 sec.\n",
+      "<Fault 1>: Clearing fault on Bus (idx=9) at t=1.1 sec.\n",
+      "-> Single process finished in 0.7220 seconds.\n"
+     ]
+    }
+   ],
+   "source": [
+    "ss = andes.run(andes.get_case(\"ieee14/ieee14_fault.xlsx\"), \n",
+    "               routine='tds', verbose=30,\n",
+    "               no_output=True, default_config=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "id": "1b1c11b4",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "<Figure size 600x400 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "(<Figure size 600x400 with 1 Axes>, <AxesSubplot:xlabel='Time [s]'>)"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ss.TDS.plt.plot(ss.GENROU.omega)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/docs/source/examples/pandapower.ipynb b/docs/source/examples/pandapower.ipynb
new file mode 100644
index 000000000..dee913574
--- /dev/null
+++ b/docs/source/examples/pandapower.ipynb
@@ -0,0 +1,1179 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# pandapower Interface"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "This example (1) shows how to convert an ANDES system (`ssa`) to a pandapower network (`ssp`), (2) benchmarks the powerflow results, (3) shows how to alter `ssa` active power setpoints according to `ssp` results.\n",
+    "\n",
+    "This interface is mainly developed by [Jinning Wang](https://www.linkedin.com/in/jinning-wang-846490199/)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import andes\n",
+    "\n",
+    "from andes.interop.pandapower import to_pandapower, \\\n",
+    "    make_link_table, runopp_map, add_gencost\n",
+    "\n",
+    "andes.config_logger(20)\n",
+    "\n",
+    "import pandapower as pp\n",
+    "import numpy as np\n",
+    "import pandas as pd\n",
+    "\n",
+    "from math import pi"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Load case"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Here we use the same ANDES system `ss0` to do the pandapower conversion, which leaves the `ssa` untouched.\n",
+    "\n",
+    "This will be useful if you need to modify the `ssa` parametes or setpoints."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Working directory: \"/Users/jinningwang/Documents/work/andes/docs/source/examples\"\n",
+      "> Loaded generated Python code in \"/Users/jinningwang/.andes/pycode\".\n",
+      "Parsing input file \"/Users/jinningwang/Documents/work/andes/andes/cases/ieee14/ieee14_ieeet1.xlsx\"...\n",
+      "Input file parsed in 0.2310 seconds.\n",
+      "System internal structure set up in 0.0481 seconds.\n",
+      "Working directory: \"/Users/jinningwang/Documents/work/andes/docs/source/examples\"\n",
+      "> Reloaded generated Python code of module \"pycode\".\n",
+      "Parsing input file \"/Users/jinningwang/Documents/work/andes/andes/cases/ieee14/ieee14_ieeet1.xlsx\"...\n",
+      "Input file parsed in 0.0895 seconds.\n",
+      "System internal structure set up in 0.0383 seconds.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssa = andes.load(andes.get_case('ieee14/ieee14_ieeet1.xlsx'),\n",
+    "                 setup=False,\n",
+    "                 no_output=True,\n",
+    "                 default_config=True)\n",
+    "ssa.Toggler.u.v = [0, 0]\n",
+    "ssa.setup()\n",
+    "\n",
+    "ss0 = andes.load(andes.get_case('ieee14/ieee14_ieeet1.xlsx'),\n",
+    "                 setup=False,\n",
+    "                 no_output=True,\n",
+    "                 default_config=True)\n",
+    "ss0.Toggler.u.v = [0, 0]\n",
+    "ss0.setup()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Convert to pandapower net"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Convert ADNES system `ssa` to pandapower net `ssp`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "-> System connectivity check results:\n",
+      "  No islanded bus detected.\n",
+      "  System is interconnected.\n",
+      "  Each island has a slack bus correctly defined and enabled.\n",
+      "\n",
+      "-> Power flow calculation\n",
+      "   Sparse solver: KLU\n",
+      " Solution method: NR method\n",
+      "Power flow initialized in 0.0031 seconds.\n",
+      "0: |F(x)| = 0.5605182134\n",
+      "1: |F(x)| = 0.006202200332\n",
+      "2: |F(x)| = 5.819382825e-06\n",
+      "3: |F(x)| = 6.967745825e-12\n",
+      "Converged in 4 iterations in 0.0071 seconds.\n",
+      "Power flow results are consistent. Conversion is successful.\n"
+     ]
+    }
+   ],
+   "source": [
+    "ssp = to_pandapower(ss0)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Add generator cost data."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "gen_cost = np.array([\n",
+    "        [2, 0, 0, 3, 0.0430293, 20, 0], \n",
+    "        [2, 0, 0, 3, 0.25,      20, 0], \n",
+    "        [2, 0, 0, 3, 0.01,      40, 0], \n",
+    "        [2, 0, 0, 3, 0.01,      40, 0], \n",
+    "        [2, 0, 0, 3, 0.01,      40, 0]\n",
+    "])\n",
+    "\n",
+    "add_gencost(ssp, gen_cost)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Inspect the pandapower net `ssp`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "This pandapower network includes the following parameter tables:\n",
+       "   - bus (14 elements)\n",
+       "   - load (11 elements)\n",
+       "   - gen (5 elements)\n",
+       "   - shunt (2 elements)\n",
+       "   - line (16 elements)\n",
+       "   - trafo (4 elements)\n",
+       "   - poly_cost (5 elements)\n",
+       " and the following results tables:\n",
+       "   - res_bus (14 elements)\n",
+       "   - res_line (16 elements)\n",
+       "   - res_trafo (4 elements)\n",
+       "   - res_load (11 elements)\n",
+       "   - res_shunt (2 elements)\n",
+       "   - res_gen (5 elements)"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssp"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Comapre Power Flow Results"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Run power flow of `ssa`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "-> System connectivity check results:\n",
+      "  No islanded bus detected.\n",
+      "  System is interconnected.\n",
+      "  Each island has a slack bus correctly defined and enabled.\n",
+      "\n",
+      "-> Power flow calculation\n",
+      "   Sparse solver: KLU\n",
+      " Solution method: NR method\n",
+      "Power flow initialized in 0.0037 seconds.\n",
+      "0: |F(x)| = 0.5605182134\n",
+      "1: |F(x)| = 0.006202200332\n",
+      "2: |F(x)| = 5.819382825e-06\n",
+      "3: |F(x)| = 6.967745825e-12\n",
+      "Converged in 4 iterations in 0.0071 seconds.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssa.PFlow.run()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# ssa\n",
+    "ssa_res_gen = pd.DataFrame(columns=['name', 'p_mw', 'q_mvar', 'va_degree', 'vm_pu'])\n",
+    "ssa_res_gen['name'] = ssa.PV.as_df()['name']\n",
+    "ssa_res_gen['p_mw'] = ssa.PV.p.v * ssa.config.mva\n",
+    "ssa_res_gen['q_mvar'] = ssa.PV.q.v * ssa.config.mva\n",
+    "ssa_res_gen['va_degree'] = ssa.PV.a.v * 180 / pi\n",
+    "ssa_res_gen['vm_pu'] = ssa.PV.v.v\n",
+    "ssa_res_slack = pd.DataFrame([[ssa.Slack.name.v[0], ssa.Slack.p.v[0] * ssa.config.mva,\n",
+    "                              ssa.Slack.q.v[0] * ssa.config.mva, ssa.Slack.a.v[0] * 180 / pi,\n",
+    "                              ssa.Slack.v.v[0]]],\n",
+    "                             columns=ssa_res_gen.columns,\n",
+    "                             )\n",
+    "ssa_res_gen = pd.concat([ssa_res_gen, ssa_res_slack]).reset_index(drop=True)\n",
+    "\n",
+    "# ssp\n",
+    "pp.runpp(ssp)\n",
+    "ssp_res_gen = pd.concat([ssp.gen['name'], ssp.res_gen], axis=1)\n",
+    "\n",
+    "res_gen_concat = pd.concat([ssa_res_gen, ssp_res_gen], axis=1)\n",
+    "\n",
+    "# ssa\n",
+    "ssa_pf_bus = ssa.Bus.as_df()[[\"name\"]].copy()\n",
+    "ssa_pf_bus['v_andes'] = ssa.Bus.v.v\n",
+    "ssa_pf_bus['a_andes'] = ssa.Bus.a.v * 180 / pi\n",
+    "\n",
+    "# ssp\n",
+    "ssp_pf_bus = ssa.Bus.as_df()[[\"name\"]].copy()\n",
+    "ssp_pf_bus['v_pp'] = ssp.res_bus['vm_pu']\n",
+    "ssp_pf_bus['a_pp'] = ssp.res_bus['va_degree']\n",
+    "\n",
+    "pf_bus_concat = pd.concat([ssa_pf_bus, ssp_pf_bus], axis=1)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Generation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "In the table below, the left half are ANDES results, and the right half are from pandapower"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>name</th>\n",
+       "      <th>p_mw</th>\n",
+       "      <th>q_mvar</th>\n",
+       "      <th>va_degree</th>\n",
+       "      <th>vm_pu</th>\n",
+       "      <th>name</th>\n",
+       "      <th>p_mw</th>\n",
+       "      <th>q_mvar</th>\n",
+       "      <th>va_degree</th>\n",
+       "      <th>vm_pu</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>2</td>\n",
+       "      <td>40.0000</td>\n",
+       "      <td>30.4361</td>\n",
+       "      <td>-1.7641</td>\n",
+       "      <td>1.03</td>\n",
+       "      <td>2</td>\n",
+       "      <td>40.0000</td>\n",
+       "      <td>30.4361</td>\n",
+       "      <td>-1.7641</td>\n",
+       "      <td>1.03</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>3</td>\n",
+       "      <td>40.0000</td>\n",
+       "      <td>12.5971</td>\n",
+       "      <td>-3.5371</td>\n",
+       "      <td>1.01</td>\n",
+       "      <td>3</td>\n",
+       "      <td>40.0000</td>\n",
+       "      <td>12.5971</td>\n",
+       "      <td>-3.5371</td>\n",
+       "      <td>1.01</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>4</td>\n",
+       "      <td>30.0000</td>\n",
+       "      <td>20.9866</td>\n",
+       "      <td>-6.4527</td>\n",
+       "      <td>1.03</td>\n",
+       "      <td>4</td>\n",
+       "      <td>30.0000</td>\n",
+       "      <td>20.9866</td>\n",
+       "      <td>-6.4527</td>\n",
+       "      <td>1.03</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>5</td>\n",
+       "      <td>35.0000</td>\n",
+       "      <td>7.3964</td>\n",
+       "      <td>-1.5400</td>\n",
+       "      <td>1.03</td>\n",
+       "      <td>5</td>\n",
+       "      <td>35.0000</td>\n",
+       "      <td>7.3964</td>\n",
+       "      <td>-1.5400</td>\n",
+       "      <td>1.03</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>1</td>\n",
+       "      <td>81.4272</td>\n",
+       "      <td>-21.6171</td>\n",
+       "      <td>0.0000</td>\n",
+       "      <td>1.03</td>\n",
+       "      <td>1</td>\n",
+       "      <td>81.4272</td>\n",
+       "      <td>-21.6171</td>\n",
+       "      <td>0.0000</td>\n",
+       "      <td>1.03</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "  name     p_mw   q_mvar  va_degree  vm_pu name     p_mw   q_mvar  va_degree  \\\n",
+       "0    2  40.0000  30.4361    -1.7641   1.03    2  40.0000  30.4361    -1.7641   \n",
+       "1    3  40.0000  12.5971    -3.5371   1.01    3  40.0000  12.5971    -3.5371   \n",
+       "2    4  30.0000  20.9866    -6.4527   1.03    4  30.0000  20.9866    -6.4527   \n",
+       "3    5  35.0000   7.3964    -1.5400   1.03    5  35.0000   7.3964    -1.5400   \n",
+       "4    1  81.4272 -21.6171     0.0000   1.03    1  81.4272 -21.6171     0.0000   \n",
+       "\n",
+       "   vm_pu  \n",
+       "0   1.03  \n",
+       "1   1.01  \n",
+       "2   1.03  \n",
+       "3   1.03  \n",
+       "4   1.03  "
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "res_gen_concat.round(4)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Bus voltage and angle"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Likewise, the left half are ANDES results, and the right half are from pandapower"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>name</th>\n",
+       "      <th>v_andes</th>\n",
+       "      <th>a_andes</th>\n",
+       "      <th>name</th>\n",
+       "      <th>v_pp</th>\n",
+       "      <th>a_pp</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>uid</th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>BUS1</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>0.0000</td>\n",
+       "      <td>BUS1</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>0.0000</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>BUS2</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>-1.7641</td>\n",
+       "      <td>BUS2</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>-1.7641</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>BUS3</td>\n",
+       "      <td>1.0100</td>\n",
+       "      <td>-3.5371</td>\n",
+       "      <td>BUS3</td>\n",
+       "      <td>1.0100</td>\n",
+       "      <td>-3.5371</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>BUS4</td>\n",
+       "      <td>1.0114</td>\n",
+       "      <td>-4.4098</td>\n",
+       "      <td>BUS4</td>\n",
+       "      <td>1.0114</td>\n",
+       "      <td>-4.4098</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>BUS5</td>\n",
+       "      <td>1.0173</td>\n",
+       "      <td>-3.8430</td>\n",
+       "      <td>BUS5</td>\n",
+       "      <td>1.0173</td>\n",
+       "      <td>-3.8430</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5</th>\n",
+       "      <td>BUS6</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>-6.4527</td>\n",
+       "      <td>BUS6</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>-6.4527</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>6</th>\n",
+       "      <td>BUS7</td>\n",
+       "      <td>1.0225</td>\n",
+       "      <td>-4.8852</td>\n",
+       "      <td>BUS7</td>\n",
+       "      <td>1.0225</td>\n",
+       "      <td>-4.8852</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>7</th>\n",
+       "      <td>BUS8</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>-1.5400</td>\n",
+       "      <td>BUS8</td>\n",
+       "      <td>1.0300</td>\n",
+       "      <td>-1.5400</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>8</th>\n",
+       "      <td>BUS9</td>\n",
+       "      <td>1.0218</td>\n",
+       "      <td>-7.2459</td>\n",
+       "      <td>BUS9</td>\n",
+       "      <td>1.0218</td>\n",
+       "      <td>-7.2459</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>9</th>\n",
+       "      <td>BUS10</td>\n",
+       "      <td>1.0155</td>\n",
+       "      <td>-7.4155</td>\n",
+       "      <td>BUS10</td>\n",
+       "      <td>1.0155</td>\n",
+       "      <td>-7.4155</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>10</th>\n",
+       "      <td>BUS11</td>\n",
+       "      <td>1.0191</td>\n",
+       "      <td>-7.0797</td>\n",
+       "      <td>BUS11</td>\n",
+       "      <td>1.0191</td>\n",
+       "      <td>-7.0797</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>11</th>\n",
+       "      <td>BUS12</td>\n",
+       "      <td>1.0174</td>\n",
+       "      <td>-7.4730</td>\n",
+       "      <td>BUS12</td>\n",
+       "      <td>1.0174</td>\n",
+       "      <td>-7.4730</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>12</th>\n",
+       "      <td>BUS13</td>\n",
+       "      <td>1.0145</td>\n",
+       "      <td>-7.7208</td>\n",
+       "      <td>BUS13</td>\n",
+       "      <td>1.0145</td>\n",
+       "      <td>-7.7208</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>13</th>\n",
+       "      <td>BUS14</td>\n",
+       "      <td>1.0163</td>\n",
+       "      <td>-9.4811</td>\n",
+       "      <td>BUS14</td>\n",
+       "      <td>1.0163</td>\n",
+       "      <td>-9.4811</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "      name  v_andes  a_andes   name    v_pp    a_pp\n",
+       "uid                                                \n",
+       "0     BUS1   1.0300   0.0000   BUS1  1.0300  0.0000\n",
+       "1     BUS2   1.0300  -1.7641   BUS2  1.0300 -1.7641\n",
+       "2     BUS3   1.0100  -3.5371   BUS3  1.0100 -3.5371\n",
+       "3     BUS4   1.0114  -4.4098   BUS4  1.0114 -4.4098\n",
+       "4     BUS5   1.0173  -3.8430   BUS5  1.0173 -3.8430\n",
+       "5     BUS6   1.0300  -6.4527   BUS6  1.0300 -6.4527\n",
+       "6     BUS7   1.0225  -4.8852   BUS7  1.0225 -4.8852\n",
+       "7     BUS8   1.0300  -1.5400   BUS8  1.0300 -1.5400\n",
+       "8     BUS9   1.0218  -7.2459   BUS9  1.0218 -7.2459\n",
+       "9    BUS10   1.0155  -7.4155  BUS10  1.0155 -7.4155\n",
+       "10   BUS11   1.0191  -7.0797  BUS11  1.0191 -7.0797\n",
+       "11   BUS12   1.0174  -7.4730  BUS12  1.0174 -7.4730\n",
+       "12   BUS13   1.0145  -7.7208  BUS13  1.0145 -7.7208\n",
+       "13   BUS14   1.0163  -9.4811  BUS14  1.0163 -9.4811"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "pf_bus_concat.round(4)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Generator dispatch based on OPF from pandapower"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Prepare the link table."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Asign the StaticGen with OPF, in this case, all the SynGen are GENROU\n",
+    "link_table = make_link_table(ssa)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>stg_name</th>\n",
+       "      <th>stg_idx</th>\n",
+       "      <th>bus_idx</th>\n",
+       "      <th>syn_idx</th>\n",
+       "      <th>exc_idx</th>\n",
+       "      <th>gov_idx</th>\n",
+       "      <th>bus_name</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>GENROU_2</td>\n",
+       "      <td>EXST1_1</td>\n",
+       "      <td>TGOV1_2</td>\n",
+       "      <td>BUS2</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>3</td>\n",
+       "      <td>3</td>\n",
+       "      <td>3</td>\n",
+       "      <td>GENROU_3</td>\n",
+       "      <td>ESST3A_3</td>\n",
+       "      <td>TGOV1_3</td>\n",
+       "      <td>BUS3</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>4</td>\n",
+       "      <td>4</td>\n",
+       "      <td>6</td>\n",
+       "      <td>GENROU_4</td>\n",
+       "      <td>ESST3A_4</td>\n",
+       "      <td>TGOV1_4</td>\n",
+       "      <td>BUS6</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>5</td>\n",
+       "      <td>5</td>\n",
+       "      <td>8</td>\n",
+       "      <td>GENROU_5</td>\n",
+       "      <td>1</td>\n",
+       "      <td>TGOV1_5</td>\n",
+       "      <td>BUS8</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "      <td>GENROU_1</td>\n",
+       "      <td>ESST3A_2</td>\n",
+       "      <td>TGOV1_1</td>\n",
+       "      <td>BUS1</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "  stg_name stg_idx bus_idx   syn_idx   exc_idx  gov_idx bus_name\n",
+       "0        2       2       2  GENROU_2   EXST1_1  TGOV1_2     BUS2\n",
+       "1        3       3       3  GENROU_3  ESST3A_3  TGOV1_3     BUS3\n",
+       "2        4       4       6  GENROU_4  ESST3A_4  TGOV1_4     BUS6\n",
+       "3        5       5       8  GENROU_5         1  TGOV1_5     BUS8\n",
+       "4        1       1       1  GENROU_1  ESST3A_2  TGOV1_1     BUS1"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "link_table"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Run the TDS in ADNES to 2s."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "-> Time Domain Simulation Summary:\n",
+      "Sparse Solver: KLU\n",
+      "Simulation time: 0.0-2 s.\n",
+      "Fixed step size: h=33.33 ms. Shrink if not converged.\n",
+      "Initialization for dynamics completed in 0.0435 seconds.\n",
+      "Initialization was successful.\n"
+     ]
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "23a6233b6079469db993d06825b9e085",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "  0%|          | 0/100 [00:00<?, ?%/s]"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Simulation completed in 0.0734 seconds.\n"
+     ]
+    },
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgwAAAFrCAYAAAC9n9FwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6l0lEQVR4nO3dfXAb+X3n+U97HjRPoiBqxpln20BsKU5y50DkZpN4N9kETHbPt6n1DSBdUuuKd7cIxFvZ3UriAMs8bOxaV3RAJXHVpioOoFxSeaosh8yDb7PrygHO4zm2TyTqYo80mtEAoxk9P5AESUkUSUnf+6PREJ4b4FAiSL9fVSgSjV93//qHbvS3f/3r388xMwEAAHTzrq3OAAAAGHwEDAAAwBcBAwAA8EXAAAAAfBEwAAAAXwQMAADAFwEDAADwRcAAAAB8PbjVGWjmOI4j6VlJy1udFwAAtqHdks7bJvfMOHABg9xg4exWZwIAgG3seUnnNnOBgxgwLEvSmTNnNDQ0tNV5AQBg21haWtILL7wg3YNa+kEMGCRJQ0NDBAwAAAwIGj0CAABfBAwAAMAXAQMAAPBFwAAAAHwRMAAAAF8EDAAAwBcBAwAA8EXAAAAAfBEwAAAAXwPb0+OJ84t6YnlTx80AAGBHu7a8dM+WPbABw6HsV/SuXY9tdTYAANg27qzeuGfLdjZ59Mt3zHGcIUmLX371bT2xm7EkAADo1bXlJX3Xt7woSXvMbFOrGwa2huGDz+5h8CkAAPqwtOTcs2X3FTA4jhOUFJVUlhSUlDOzSpe0EUnz1bTTZlZ+R7kFAABbot8ahikzOyjVAoKjkmId0kbNLOO9cRwnKymxoVwCAIAt1fNjldUAoaZaWxDpMsvhjWYKAAAMln76YfBuL9Sbdxwn3CH9vOM4s47jBB3HiUjKbyiHAABgy/UTMAQ6TB/uMN27VVGSFDOz6XaJHMfZ5TjOkPeStLuPPAEAgPtgM56SCHSYHpGUktvgMes4jsysXRuGCUm/uAn5AAAA90g/NQwVtdYmDFenN6i2dxg1s4KZ5SSFJB1qbgdRdUTSnrrX833kCQAA3Af9BAyFDtNn2kwLSzrmvak2kDyiNrURZrZqZkveS9JyH3kCAAD3Qc8BQ3MfCtXaghmvHwbHccJ1NQhFSaNNi9hnZsV3kFcAALBF+m3DEHMcJy239mBUjX0wTFSnZ8ys7DhO3nGcpO7essi+08wCAICtMbBjSSwuLtI1NAAAfVhaWtKePXukezCWRD9tGAAAwDcoAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+Hqwn8SO4wQlRSWVJQUl5cys0iFtVFJBkjqlAQAA20NfAYOkKTM7KNWCh6OSYp3Sev84juP9mzKzTL+ZBAAAW6vnWxLVAKHGzMqSIh3SBiTFzMzxXiJYAABg2+qnDUNE0nzTtHnHccLtEpvZtPd/9fbEdLt0juPschxnyHtJ2t1HngAAwH3QT8AQ6DB9uHlCfZuFam3DcLVGop0JSYt1r7N95AkAANwHm/GURMDn87Skl7t8fkTSnrrX85uQJwAAsIn6afRYUWttwnB1elvV2oVIt6ckzGxV0mrdPH1kCQAA3A/91DAUOkyf6TLPiLoEFAAAYHvoOWBoboNQfWpixqs9cBwn3PwkhaSwWhtKAgCAbabfNgwxx3HS1aceEmrsg2FCbqdOzTo1dgQAANuEY2ZbnYcG1UcrFxcXFzU0NLTV2QEAYNtYWlrSnj17JGmPmS1t5rIZSwIAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAOCLgAEAsCGZTEaO4yiRSCiXyymTySgWiymXy/W9rFwup1QqpVwup+npaRUKBeVyOZXLZUlSsVhUIpGQ4zi1dJlMRqlUSnv37lWhUFCxWFQqlZLjOA15KJfLSiQSCoVCyuVyLcvKZDLKZDJKJBK19XXaXi9/mUxG09PTDZ83L7dYLNbWH4vFauvvpFgs6uDBg32X3X1jZgP1kjQkyRYXFw0AMLgWFhbMPY00kmSzs7M9LycSiVg6nW6YNjs727KcUqlkkmxhYaElbTabreUpHo+3TVe/Di/v9Wny+bwFAoGW+czMwuFwyzYlk0lLJpMN0zrlsXn9zaampmrb/E4sLi6aJJM0ZJt8fqaGAQCwITMzMwoGg20/63alXi+TyUiSkslkw/RwOKx4PN4wbXh4uO0ywuFww/tYLKZoNKrx8fGG6YFAoGteIpGIKpWKCoVCw/RUKqVgMNiynnQ6Xaux8Muj3/qj0WjL8gcNAQMAYEPy+bwikUjDtEKhoEAgoGg02tMyjhw5okQi0fazWCzW9SRbLBZrgcmhQ4caPjt69KgKhULLbYNuvBN/84k7k8lobGys7TyRSERHjhzpeR3b2YNbnQEAwPZUKBQ0MTHR8D6dTmt2dran+cvlsiqVSsdaiuZgxOO1A5icnNTU1JSk1qv3QCCgdDqt8fHxrsGLF+AUi0XNzc2pVCo15McLSEZGRtrOHwwG+wpKtjMCBgAYICtrt1W6cu2+rzf01BN69OEH+prHu8L3TpjBYFD5fP5eZK9BPB73vb3gpZuamlIikVA2m22bJhKJKBAIaHh4WOPj4w0BUL35+fl3kuUdgYABAAZI6co1/a+/9v/c9/X+2b/7sL7tuT09p/euzJvbHvTDu5Ivl8sNtwGmp6d17NgxZTIZxeNxpdPptgFCfc1BoVBoWyORzWYVCoU63vbwhMNhjYyMKJVKNQQX9Xlsp1gstm17MD8/35LnSqXSNQ+DjoABAAZI6Kkn9Gf/7sNbst5+FIvFjtX0/Ugmk8pmsw0n/2g0qmg0WnvUsVNtQrtbB+3SpNNpxWIxpVKprnkJBAJtby8kk0lNTU21NMKU3Iaf3m0RbxmBQEDlcrklf4PeqNEPAQMADJBHH36gryv9rZLP5zs2BJTcgKL+KYpO7RHS6bQOHjyoXC7XcEJuFwB0ui1QqVRq7SbapUkmk5qcnPS9wg+FQg39PngneC+PzbUYiURChw4datm2dDqtqamphunT09M918ZUKpWebrncb465fR8MDMdxhiQtLi4uamhoaKuzAwCo47VZSKVSikajmpiYaHvlPDY2pnw+X3tEsVPA4MlkMpqbm1MoFFKpVJIk7du3T9FoVMFgUMViUdlsVrlcTslkUqFQSJJUKpWUy+U0MTGhSCSiVCql+fl5TUxMNNRaeAFMPB5XsVjU5OSkyuWyRkdHFYlEatsQi8U0OjqqQCDQUqOQSqUUCoU0PDxcq0Ho1KAyl8upVCopFAqpUqn4trsoFArK5/PKZDJKJpMaHR3t+UmTektLS9qzZ48k7TGzpb4X0AUBAwBgUxUKBWWzWSUSCY2MjAzk1fJOdS8DBvphAABsqmAwWLty9+7nY/ujDQMAYFMFg0HNzc2pUCioUqls+8Z+cHFLAgCAHYJbEgAAYEsRMAAAAF8EDAAAwBcBAwAA8NXXUxKO4wQlRSWVJQUl5cys0iV9pJquLElmVuiUFgAADK5+H6ucMrODUi14OCop1i5hNViImVmimjYvKfROMgsAGByZTEapVErxeFwHDx5UpVLRsWPHNDY21nbchW7qe0YcHh6u9d8QiUQ69vRYqVQ0NzenXC6nqakpDQ8Pa3JyUplMRtlstpaHcrmsdDqtQqGgVCqlkZGRhmXt27dPkttrZCqV6jjcdiaTqY1s2a6nx+Y8Hj58WOFwWOVyWalUSsVisVZezYrFYq1XzGPHjuno0aOD1+GVmfX0kltTMNs0baFL+pKkQP38Pa5nSJItLi4aAGBwLSwsmHsaaSTJZmdne15OJBKxdDrdMG12drZlOaVSySTZwsJCS9psNlvLUzweb5uufh1e3uvT5PN5CwQCLfOZmYXD4ZZtSiaTlkwmG6Z1ymPz+rt9lk6nLRwOd0zbzeLiokkySUPW4/m911c/bRgikppH9Zh3HKelR45qjcKwmVUcxwk7jhMwM7r6AoAdpH5wqWa99u6YyWQkqWVgpnA43HIlPjw83HYZzR1DxWIxRaNRjY+PN0z3u2KPRCKqVCq1K32PV+vQvJ50Oq1cLqdiseibx27rLxaLOnLkSO19NBpVsVgcuB4y+wkYAh2mtyudsNxgwmvvEK/+38JxnF2O4wx5L0m7+8gTAGCL5PP5lkGlCoWCAoFAzwMnHTlyRIlEou1nsVis60m+/qR66NChhs+OHj2qQqHQdrjqbsuTWgOQTCbTcWTOSCTScLLfiHA4rKNHj9bee6Nqdgs+tsJmdA0daDNtWO4tjEK1liEnaUGS0ybthKRf3IR8AADuo0KhoImJiYb36XS6NtS0n3K5rEql0rGWotMIl7lcTpI0OTmpqakpSa1X74FAQOl0WuPj412DFy/AKRaLmpubU6lUasiPF5CMjIy0nT8YDPYVlHRSn8fJycnaOByDpJ+AoaLW2oTh6vRmZUkVqz5BUQ0a5DhO2MyKTWmPSPrVuve7JZ3tI18AsLMsX3Rf9R4NSHvfK63flK6cbJ3n2Q+5f6+ektauN34WeFF6bFi6flVabPp53bVb2rex9ujeFb53wgwGg8rn8xtaVj/8hoquTzc1NaVEIqFsNts2jXdiHh4e1vj4eEMAVG9+vvmO/L1RqVQ0PT3dc9B1P/UTMBQktas3mmkzrecbL2a2KmnVe+847SohAOAbyMxvS3/9fzRO+/ZD0ktHpaVzUu57W+f51KL7908/IZ091vjZR3PS/3xYOv4n0v/4ZONnoe+XPvYnfWfRuzJvbnvQD+9KvlwuN9wGmJ6e1rFjx5TJZBSPx5VOp9sGCPVX5YVCoW2NRDabVSgU6njbwxMOhzUyMqJUKtUQXNTnsZ1isdh2cK35+fmWPHu3GrpJpVLK5/MDV7sg9REwmFm5/mRebdg449UiVBs/VsysXE07U23sWKmmLbepXQAANBv5V9L+f9Y47dGA+3foOSn+153n/Refa1/DIEnf+lHp+dHGz3ZtrNlYsVjsWE3fj2QyqWw223Dyj0ajikajymQySiQSHU+e7W4dtEuTTqcVi8WUSqW65iUQCLS9vZBMJjU1NdX2cciZmZnabRFvGd4joc358xu103tMNRgM1oKLQQoc+u3pMeY4TrragDGhxj4YJuR26lRLKyntOE5cUkpS+xYjAIBGu592bzHUv/a+1/3soUdaP/NuR0jSk+9v/eyx6t3kx59s/WyDtyPy+XzHhoCSG1DkcjkVCoWWpw7qpdNpzc/P19oleNoFAJ1uC1QqlVoVfrs0yWRSgUDA9wo/FArV1lv/5IOXx+btSCQSOnToUEvNRjqdbggiJLfWpFObDO/zcDhcCxZefvnlgQoWJIa3BgD0wWuzkEqlFI1GNTEx0fbKeWxsTPl8vnaS7XaylNyr67m5OYVCIZVKJUnSvn37FI1GO3bcJLmdLeVyOU1MTCgSiSiVSml+fl4TExMtnSrNzMwoHo+rWCxqcnJS5XJZo6OjikQitW2IxWIaHR1VIBBoqVFIpVK1jqXaddxUr74jqkql0rXdRblcrm2PJxAIaGFhoWuZtXMvh7cmYAAAbKpCoaBsNqtEIqGRkZGBu1Leye5lwMDgUwCATRUMBmtX7t79fGx/m9EPAwAANcFgUHNzcyoUCqpUKr6N/bA9cEsCAIAdglsSAABgSxEwAAAAXwQMAADAFwEDAADwRcAAAAB8ETAAAABf9MMAANgQb7CkeDyugwcPqlKp6NixYxobG2s7UFM39V0pDw8P1zp8ikQiHbuGrlQqmpubUy6X09TUlIaHhzU5OalMJqNsNlvLQ7lcVjqdVqFQUCqV0sjISMOy9u3bJ8ntZtob/KnT9npDYbfrGro5j4cPH1Y4HFa5XFYqlVKxWKyVVzOvC22vDL15B4qZDdRL0pAkW1xcNADA4FpYWDD3NNJIks3Ozva8nEgkYul0umHa7Oxsy3JKpZJJsoWFhZa02Wy2lqd4PN42Xf06vLzXp8nn8xYIBFrmMzMLh8Mt25RMJi2ZTDZM65TH5vU3CwQCteVns1kLBoMd03azuLhokkzSkG3y+ZlbEgCADZmZmel4Nd5rd9CZTEaSO6JkvXA43HIlPjw83HYZzVfisVhM0WhU4+PjDdP9xrSIRCKqVCoto1J6tQ7N60mn08rlcg0jW3bKo9/6p6amGpY/iONvEDAAADYkn8+3jEJZKBQUCAQ6juLY7MiRI0okEm0/i8ViXU+cxWKxFpgcOnSo4bOjR4+qUChoenq6p3x4y5NaA5BMJtNxKO9IJKIjR470vI5O6stxamqqY5lsJdowAMCAuXLjiq6sXOma5pnHn9HeR/Zq4eaCLly/oA/u+6Ak6c3FN7Vya6XrvO8PvF8PPfCQziyf0R27o/cMvWdD+SwUCpqYmGh4n06nNTs729P85XJZlUqlYy1FpyGxc7mcJGlyclJTU1OSWq/IA4GA0um0xsfHuwYvXoBTLBY1NzenUqnUkB8vIBkZGWk7fzAY7Cso6cYbdnsjbUDuBwIGABgwU69P6XN//7muaT71XZ/SSx94SX/x9l/oU1/+lL7+Y1+XJP38l35eX7vyta7z5qN5Pf340/rs7Gd1ff26smPZDeXTu8L3TpjBYFD5fH5Dy+pHPB7vqco+Ho/Xrtaz2fbb6I2oOTw8rPHx8YYAqN78/Pw7yXJPwuGwgsGgUqmUpqene66luV8IGABgwMQ+ENP3vfB9XdM88/gzkqTvf/H79S37vqU2/TPf8xnfGoZ9j7hPBfzkwZ/UHbuzoTx6V+bNbQ/64V3Jl8vlhtsA09PTOnbsmDKZjOLxuNLpdNsAof6EWigU2tZIZLNZhUIh3yr+cDiskZERpVKphuCiPo/tFIvFtk8zzM/Pt+S5Uql0zYPk1ozEYjGNjY1pYWFhoNoyEDAAwIB56rGn9NRjT/WUdu8je7X3kb219+/b876e1/PC7hf6zpunWCx2rKbvRzKZVDabbTj5R6NRRaNRZTIZJRKJjifNdrcO2qVJp9OKxWJKpVJd8xIIBNreXkgmk5qammp7m2BmZqZ2W8RbhvdIaHP+Oj0mWSgUFIvFtLCw0LBd3ebZCjR6BAD0LZ/Pd2wIKLkBRS6XU6FQaHnqoF46ndb8/HytXYKnXQDQ6bZApVKptZtolyaZTCoQCPhe4YdCodp665988PLYvB2JREKHDh1qqdlIp9MNQYTk1pp0apMxPDzc8FmxWFQgEBioYEGSHHP7PhgYjuMMSVpcXFzU0NDQVmcHAFDHa7OQSqUUjUY1MTHR9sQ2NjamfD5fO8l2Oll6MpmM5ubmFAqFVCqVJEn79u1TNBrt2HGT5Ha2lMvlNDExoUgkolQqpfn5eU1MTLR0qjQzM6N4PF5rXFgulzU6OqpIJFLbhlgsptHRUQUCgZYahVQqVetYql3HTfXqO6KqVCq+7S6mp6drwU4+n1c6ne7YGLSbpaUl7dmzR5L2mNlS3wvogoABALCpCoWCstmsEomERkZGBuo+/E53LwMGbkkAADZVMBisXbl79/Ox/dHoEQCwqYLBoObm5lQoFFSpVAbuXjw2hlsSAADsENySAAAAW4qAAQAA+CJgAAAAvggYAACALwIGAADgi4ABALAhmUxGjuMokUgol8spk8koFou1dPPci1wup1QqpVwup+npaRUKBeVyuYaumhOJhBzHqaXLZDJKpVLau3evCoWCisWiUqmUHMdpyEO5XFYikVAoFFIul2tZViaTqY1b0a3PiEwmU8tfJpNpGXeieble99LlclmxWKy2fj+pVKqngaruOzMbqJekIUm2uLhoAIDBtbCwYO5ppJEkm52d7Xk5kUjE0ul0w7TZ2dmW5ZRKJZNkCwsLLWmz2WwtT/F4vG26+nV4ea9Pk8/nLRAItMxnZhYOh1u2KZlMWjKZbJjWKY/N6+/E2+528/dicXHRJJmkIdvk8zM1DACADZmZmek43kGvvTtmMhlJahkmOxwOt4zlMDw83HYZzR1DxWIxRaNRjY+PN0z366I6EomoUqm0DDKVSqUUDAZb1pNOp2s1Fn557GX9klpGuRwkBAwAgA3J5/Mtg0oVCgUFAoGOgzI1O3LkiBKJRNvPYrFY15NssVisBSaHDh1q+Ozo0aMqFApth6vutjypNQDJZDIdR+aMRCI6cuRIz+voZnp6uudy2wp0DQ0A2JBCoaCJiYmG9+l0ujbUtJ9yuaxKpdLxirrTCJdeO4DJycnaMNLNgUUgEFA6ndb4+HjXk7AX4BSLRc3NzalUKjXkxwtIRkZG2s4fDAb7Cko6qVQqAz9IFzUMADBg1i9f1s3XXq+9X33jDa1fuCBJurO6qpXjx3X72nVJ0q2rV3Xz5Mm7actvav3cOUmSra+7aZeX3bTz87p54kQt7drp01o7e3bD+fSu8KenpzU9Pa3h4WHl8/l7XqUej8eVTCZ1+PBh33QjIyMdazAkNyjxXoVCoeMtBW/o6Xvl5Zdf9h0CfKsRMADAgKlMvqwzdffvz/3UT2vu//wtSdKtixd1+qWobh4/Lkla/Pzn9daPfbyW9sLEhK587nNu2oUFnX4pqhvVK/6lL3xBpw//73fTfvrTuvKrn91QHr0r82QyqWg0qmg02vcgU15g0dzeYXp6uva0QyKR6PjEQH3NQXO7A082m21pZ9BOOBzWyMiIUqlUT3n0FIvFttvdLsDotB2FQqHllspA2uxWlO/0JZ6SAPANbu3SJVs5+Vrt/c1Tp2zt/HkzM7t986bdeOUVu7V8zczM1q9csZVXX72btlS2tbNnzczsztqam3ZpyU07N2crx4/X0q6++aatnjmzoTym02mLRCIbmrdeMpnsuBw1PSXR7skGT/1TEvl8viWvwWCwlqbTspLJpAWDwb7yGAgEWtbXblqpVGqZ5snn85bNZmsvSZZMJvt60sRzL5+S2PIAoSVDBAwAMPDaPQpZz3vUMZ/PdzxResLhcMPJ3Ozu44m9PFbpPUrppWm3vnA47PtYpXey9vLfPH/zcuPxeG299bLZbMv0Xh6p9EiyUqnUc/p69zJgYHhrAEDPvDYLqVRK0WhUExMTbavkx8bGlM/na7cK/O7PZzIZzc3NKRQKqVQqSZL27dunaDSqYDCoYrFYu72QTCYVCoUkSaVSSblcThMTE4pEIkqlUpqfn9fExETDLYtisaiZmRnF43EVi0VNTk6qXC5rdHRUkUiktg2xWEyjo6MKBAItj3WmUimFQiENDw/XHn/s1KAyl8upVCopFAqpUqkoHo/7NmqsVCq1Dqzi8bgSiUTft3nu5fDWBAwAgE1VKBSUzWaVSCQ0MjIy8K3/d5J7GTDQ6BEAsKmCwWDtyj0QCPTciRMGG/0wAAA2VTAY1NzcnAqFgiqVSt/V6hhMfd2ScBwnKCkqqSwpKClnZpUOacOSZGbF6nwBM+v+XIu4JQEAwEbdy1sS/dYwTJnZQakWPByVFOuQNiEp7jiOJBW6pAMAAAOu54ChGiDUmFnZcZxuzV5nJe2tpq1sKHcAAGAg9NPoMSKpueuqee/WQztmViFYAABg++vnlkSgw/ROY3kGHMfxHlAdlZQ1s5amso7j7JK0q27S7j7yBAAA7oPNeEoi0GF6rUGk4zhlSXlJoTbpJiT94ibkAwAA3CP93JKoqLU2Ybg6vZ36Ng9lScHmdhBVRyTtqXs930eeAABbJJPJ1AaIyuVyymQyisViteGn++H1cJjL5TQ9Pa1CoaBcLlfrw6FYLCqRSMhxnFq6TCajVCqlvXv3qlAoqFgs1gatqs9DuVxWIpFQKBSqDURVv6xMJqNMJqNEItG1z4hMJlPLXyaTaRnWunm53oBX5XJZsVistv52isViQ3q/wbK2RK99SMsNAGabpi3IfVyyOW1Y0kLd+4Dcvq1b0raZl7EkAGAb8MZjaKamMSD8tBuXYnZ2tuexJLxxK7w8xePxtun8xpLI5/MWCATaDm4VDodbtimZTFoymWyY1imPzetv5uVZkkUikbbz9+JejiXRcw2DNbU/qNYWzNjd2w7huhqEsqT6MUIjkqaNBpAAsGPMzMzUhn9u1mvvjplMRpKUTCYbpofD4ZaxHIaH2zeZa+4YKhaLKRqNanx8vGG6XxfVkUhElUqlZajsVCqlYDDYsp50Ot0ydHanPPqt/+DBg1pYWNDCwoLy+fxAdqfdb9fQMcdx0tXGjAk19q0wIbdTJ+8xyhnHcZKO48QljZoZ/TAAwA6Sz+dbBpUqFAoKBAIdB2VqduTIESUSibafxWKxrifOYrFYC0wOHTrU8NnRo0dVKBRabht04534mwODTCajsbGxtvNEIhEdOXKk53V0EwgEBjJQ8PTV6LFay+DVHEw3fRZrel+UNIA3YQAAm6FQKGhiYqLhfTqd1uzsbE/zl8tlVSqVjrUUnUa49NoBTE5OampqSlLr1XsgEFA6ndb4+HjX4MULcIrFoubm5lQqlRry4wUkIyMjbecPBoN9BSWdVCqV2nKOHTumRCLRsVy2CmNJAMAAWV+7rcrFG/d9vYGnH9NDDz/Q1zzeFb53ogsGg8rn8/ciew16GSraSzc1NaVEIqFsNts2jTdA1vDwsMbHxxsCoHrz883dEG2u+m0KBoMaGxurDfM9KAgYAGCAVC7e0Mu/dOy+r/fQz47qqRd77wbHuzJvbnvQD+8KulwuN9wGmJ6e1rFjx5TJZBSPx5VOp9sGCPU1B4VCoW2NRDabVSgU6njbwxMOhzUyMqJUKtUQXNTnsZ1isdh2cK35+fmWPFcqlY7rry+DYDCocrmscrk8ULUMBAwAMEACTz+mQz87uiXr7UexWOxYTd+PZDKpbDbbcPKPRqOKRqO1Rx071Sa0u3XQLk06nVYsFlMqlWqbxhMIBNreXkgmk5qammpphCm5DT+92yLeMrwhvZvz12nUzmKxqB/4gR/QwsJCw/RuDSi3AgEDAAyQhx5+oK8r/a2Sz+c7NgSU3JNg/VMUndojpNNpHTx4ULlcruGE3C4A6HRboFKp1NpNtEuTTCY1OTnZ9QpfkkKhUEO/D94J3stjcy1GIpHQoUOHWrYtnU5ramqqYfr09HTH2hgvqPEUCgVFo9GBawDZ1/DW9wPDWwPA4PLaLKRSKUWjUU1MTLS9ch4bG1M+n689otgpYPBkMhnNzc0pFArV7t3v27dP0WhUwWBQxWJR2WxWuVxOyWRSoZDbcXCpVFIul9PExIQikYhSqZTm5+c1MTHRUGvhBTDxeFzFYlGTk5Mql8saHR1VJBKpbUMsFtPo6KgCgUBLjUIqlVIoFNLw8HCtBqFTg8pcLqdSqaRQKKRKpeLb7qJYLNZu85RKpYYAoh/3cnhrAgYAwKYqFArKZrNKJBIaGRkZuCvlnexeBgz99sMAAEBXwWCwduXu3c/H9kcbBgDApgoGg5qbm1OhUFClUunY2A/bC7ckAADYIbglAQAAthQBAwAA8EXAAAAAfBEwAAAAXwQMAADAFwEDAADwRcAAAAB8ETAAAABfBAwAAMAXAQMAAPBFwAAAAHwRMAAAAF8EDAAAwBcBAwAA8EXAAAAAfBEwAAAAXwQMAADAFwEDAADwRcAAAAB8ETAAAABfBAwAAMAXAQMAAPBFwAAAAHwRMAAAAF8EDAAAwBcBAwAA8EXAAAAAfBEwAAAAXwQMAADAFwEDAADwRcAAAAB8ETAAAABfBAwAAMAXAQMAAPDVV8DgOE7QcZyk4zjR6t9Aj/Ole00LAAAGT781DFNmljGzaUnTko76zeA4TlhSciOZAwAAg6HngMFxnGD9ezMrS4r0MGtQUrnPfAEAgAHyYB9pI5Lmm6bNO44TNrNiuxkcx4ma2bTjOOlOC3UcZ5ekXXWTdkvSydf/TE888djdqbuekIaelW6tSQun9cwj+7T34d1aWFvWhZtz+uCBfyFJevP0X2nlZqVxJbuflh4ZklYq0rXLev8Tz+uhdz2oMzcu685Dj+o97/lHun1rTa+98T9aMzgclB54UFo8p1231hR64jlJ0snlt/Tkvv168skDWlx8W+cuNBXBg7ukve9x/7/6uoYfGtLTjwzrxq2bOn3jooLv+V498uhenT8/o8rS2cZ5H9srPf6UtHZDWjyrFx/7Jj3x4KO6slrRwu0VfeCb/5kk6fU3vqBbt1Yb593zvPTwY9L1K9KNBX1w6L1uuVy/oF2PP6Vnnx3RzZUFld/666YvQtKTH3D/X3hLj5uj9zz+tG7bHb22/LaeeyasPXte1NWrJ3X56snGeR9+XNrznHT7ljRf1rt37dWTu/Zocf26zq1c0f5v/l/0wIMP6623/lbXV+Ya533i3dKjAenmkrR8UcHHn9UjDzys8ytXtfrAg3rfe79PknTi5J+2fjd73ys9+LC0dF4Prq3oA7tfcMtl+Yz27g3qqXd/q64tX9Db577aON8DD0nD73P/nysp8MCjevbRJ3Xz9prK18/rvc9/tx574t26ePH/03zldOO8j+yRdn+TtH5Tqryt5x59SnseelxXVxd1dW1RB/b/sCSpVMprdf1647xDz0i7dkvX56UbV7V/94t6wHmX3rp+Ue96ZI9eeOG7tL56XafezLdu6773S+9ypMoZPXrnjt73+DNuuSyd1jPv/nbtHQ5pYb6kC5e/3jjfQ49KgRekOybNndJTuwJ6aldA126t6O0bl/T+943poV2P68yZL2v5+qXGeR97Unp8WFpdlpYu6L2PPa3HHnxEF2/O67rdVig0Jkk6+dr/pTt2p3HewIvSQ49Iy5f0rtUlHdjtHgula+f0+NBzevrpD+nGtcs6ffbvGud71wPSvpD7//yb2u08pBcee7fW79zSqWtn9eJz36kndj+jK5eP68r8qcZ5+Y3gN6LZN+BvxLUzJ1s/2yT9BAyBDtOH202stlmo9LDcCUm/2Dzx4zOf0QOPPtBxpk9dmdNL167rL554XJ96ap++Xv0x+Pm//Cl97V3rXVeYf/ucnr59W59995O6/vg+ZX/s/9XKypwOf/UXus4XWlvTn5676ObvPc/rE+/+Hv3YR3L6ytd+R58sv9x13o8tLik5X9Hrux7Wx559Wn/y0K/om0M/qOxfT+iP1y52nfc3Ll7W96zc1FRgj/5oaEhfrP4YfOJvfkaXH3C6zvv1N9+WJP38M9+kbx56jz79I3mdPX/Md1u/+8aKspeuaMVxdPi9L+iXg4f0Q//oF/Tfv/qr+uWrX+467yfnFvRjS8v6ymOP6pPf9JS+XP2R/6W/+mn9nVa6zvsnZy/om9fXlX1yWG88vld/8K/cH1m//L771i198cx5SdInXnhWLw1/SP/2o3+ovz/5R/rxE9mu8/5vy9f06avzOvvQQzr8/DP6vVsT+tC3/ah+929/Ub93o3vl2C9fuqIfurGi/z60W5/bG9BXqj8GP/3XP63SA9Z13i+fPqMnzPRL3/SUHn/iGf3qx/5WcwunfLf1f7q5qj+44J7cD7/vRX3q2R/US2O/or+Y/XV96vz/3XXeTyws6t9WFvX3jz6iH3/63coH3qunn/6QPvtXSeXvVLrO+3vnL+pDq2v63eGA/u6JPfrT0NckSR//u5/V9Xd13g8fv3NHX3nLPeH99HNP67sDB5SMfV6vny7oY7NHuq5z7PoN/erlq5p74AEdfvE5/cYHE/qe0Z/Q1Jc+o88tvdJ1Xn4j+I2o943yG3F75XbXZb4Tjln3DNcSOk5S0piZjdVNK0lKVds0NKePm1muLt1BM6u0SdeuhuHsV4/9ATUMXD1w9eChhoEahobvht8IfiOa1NUwfOd3vCRJe8xsqTXhxvUTMMQlJczsYN20BUkxMys0pY1ImvEChG4BQ5v1DElaXFxc1NDQUK/bAQDAN7ylpSXt2bNHugcBQz+3JAqSEm2mz3RIf8hxalVhQUkTjuNMdmrvAAAABlfPAYOZlesCAO+pifpahLCkipmV29Q4ZCVlq09WAACAbabffhhi1U6YonJrG2J1n01IitYndhwnUG37IEmpalABAAC2mZ7bMNwvtGEAAGBj7mUbBsaSAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAODrwa3OQCdXzyxrdbez1dkAAGDbWF5evmfLHtiA4Y9/pahHH358q7MBAMC2sbJ2/Z4t2zGze7bwjXAcZ0jSYumVs9q9e2irswMAwLaxvLyk0Lc9L0l7zGxpM5c9sDUMT76wW0NDu7c6GwAAbBu7lu5dJQCNHgEAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4ImAAAAC+CBgAAIAvAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACALwIGAADgi4ABAAD4erCfxI7jBCVFJZUlBSXlzKzSIW2k+m9A0qikSTMrbjinAABgy/QVMEiaMrODUi14OCop1imtpB8ws4LjOMPV96EN5xQAAGyZnm9JVAOEGjMrS4p0SC5JsaYahUp/WQMAAIOinzYMEUnzTdPmHccJt0tsZoW6tzFJ2T7zBgAABkQ/AUOgw/ThTjM4jhN2HCctKW9muQ5pdjmOM+S9JO2WpJun3qilWX3jDa1fuCBJurO6qpXjx3X72nVJ0q2rV3Xz5Mm7actvav3cOUmSra+7aZeX3bTz87p54kQt7drp01o7e9ZNe/u2m3Zx0U27sKCV48dlZm7at9/W2ttvu2nNtHL8uG4tLEiSbi8uumlv33bTnj2rtdOna+u5eeKEbs27sdbt5WU37fq6JGn93Dmtlt+8m/bkSd26etVNe+26Vo4f153VVTfthQtafeNuudx87XWtX77slsuNG27amzfdtJcuafXUqbvlcuqU1i9edNPevOmmve6W4frly7r52mt305ZKWj9/3k27tlYt72t3y/vVVxvKe+1sU3kvLdXKe+X48cbyPnOmsbwrFXdbKxW3XO7ccdOeOaO1t96qzdu2vG/dqpX36pt1Zfjqq7o1N1ctw2tu2rU1d1vPn9dquVxXhq/p1pUr7rZebyrvixcby/v117V+qVreKytu2pWVanlf1s3XX79bLm+8cbe8q/usV963rlxpLO9yuVbe1lzec3ON5f3mm3f32Vu32u6ztfJ+66275X3nTvvy9vbZM2ca9tmV48fv7rNLSw377NrZpn321Vfr9lm3vO/Ul3ep1FDetX3WK29vn714sXWfvXTJTevtszduuGkvX9bN15rKm98IfiP4jdBq3X616cysp5ekpNwTf/20kqSoz3wBubULbdNJ+pQka34Vv/t7zFP65z9sF/7zZ8zMbPX0aTux/4Bd+8pXzczs6m/+pp38B99ZS/vmocN27ud+zszM1i5dshP7D9jSX/6lmZnN/f7v26vf9u21tKc//nE7+5M/ZWZmt5aX7cT+A7b4hS+YmdnCH/2xndh/wO6sr5uZ2ds//gl7+8c/YWZmd9bX7cT+A7bwR39sZmaLX/iCndh/wG4tL5uZ2dmf/Ck7/fGP19bz6rd9u839/u+bmdnSX/6lndh/wNYuXTIzs3M/93P25qHDtbQn/8F32tXf/E0zM7v2la/aif0HbPX0aTMzu/CfP2Olf/7DtbSv/+Pvtcv/5dfMzOzG175mJ/YfsJWTJ83M7NIv/4qdGvvBWto3fuif2sV0xszMbr7+up3Yf8CuF4tmZnbl13/dXvvwh++W90c/ahc+/Wm3vM+cdcv7S19yy/u3fttOhg/eLe8f+VE7l/qPZma2PjfnlvcXv2hmZvN/+F/txAe/tZb2rX/9b+zMv/8PZmZ2+/p1O7H/gFX+25+ZmVnl85+3E/sP2O3VVTMzO/MTP2FvxeO1eU/sP2DzL7/slvef/7lb3gsLbnl/8mfs9L/82N3y/tB32Nzv/K6ZmS3/zd+65X3hgpmZnf+F/2Tll6K1tK/9w++yK7+RNTOz6zMzdmL/AbtZKpuZ2cVfOmJvfOQjtbSn/sn326XPftYt71desRP7D9iNV15xy/uzn7VT/+T775b3Rz5iF3/piFvepbJb3jMzbnn/RtZe+4ffVUtbfilq53/hP5mZ2dqFC3Zi/wFb/pu/NTOzud/5XXv1Q99RS3v6X37Mzn7yZ8zM7NbCgrvP/vmfu+X98st2Yv+Bu+Udj9uZn/gJt7xXV93y/vzn3fL+b3/mlvf16255//v/YG/9639zt7w/+K02/4f/1czMlr74RTux/4Ctz82Zmdm51H+0N3/kR2tpT4YP2tXf+m0zM7v2pS+5++yZs2ZmduHTn7bSRz96t7w//GG78uu/7pZ3seiW9+uvu+WdztgbP/RP75b32A/apV/+FTMzWzl50i3vr33NzMwu/5dfs9f/8ffW0vIbwW8EvxGurx867J1Hh6zH83uvr34Chrik2aZpC5IiPcwbqW5AoM1nuyQN1b2ek2SXZmZrBXDz1ClbO3/ezMxu37xpN155xW4tXzMzs/UrV2zl1Vfvpi2Vbe2s+2N1Z23NTbu05Kadm7OV48draVfffNNWz5xx09665aatVNy08/N245VX7M6dO27at96y1bfectPeuWM3XnnF1ufnzczsVqXipr11y0175oytvvlmbT0rx4/XfmxvLS25adfW3C//7NnazmdmtvLqq7Z+5Yqbdvma3XjlFbt986ab9vx5u3nq1N20J1+r/ajcvn7dTbuy4qa9eLH2Q2zm/gB4B8TtlRU37TW3DNcuXar9iJiZ3XzjDVs7d85Nu7paLe/lu+V94kRDeXsnh1p5Ly7Wyts7WGrl/fbbjeVdPaBvLSy45XL7tpv27bdrP4Jm1r68qz/Uq2fO2M1yXRmeOGHrV69Wy3DZTVv9kVk7d85ulkp1ZXjS1i9fdrf1WlN5X7jQWN6vvWZrF6vlfeOGm/bGjWp5X7KV1167Wy6nTt0t7+o+65X3+uXLjeVdKtXK+05zeV+92lje5fLdfXZ9ve0+Wyvv06fvlvft2+3L29tn3367YZ+98cord/fZxcWGfXb1TNM+e+JE3T7rlvft+vJ+442G8q7ts155e/vshQut++zFi25ab5+tBjjuPttU3vxG8BvBb4Rd/vu/v2cBg2PV6jQ/1UaPtackqtMWJL3Pmh6trD5SOWVme+vmLUk6aD6PVlZvSywuLi5qaGiop7wBAABpaWlJe/bskaQ9Zra0mcvuuQ2DuU9F1FSDgBkvWKi2V/CepJiXVN/oMSyp4hcsAACAwdRvPwyxaiPGY3I7Y6rvg2GiOj1jZkXHcSYdx4lXPxuTdFAAAGBb6vmWxP3CLQkAADZmIG5JAACAb1wEDAAAwBcBAwAA8EXAAAAAfBEwAAAAXwQMAADAFwEDAADw1W/HTffN0tKmPj4KAMCOdy/PnYMYMAxL0gsvvLDV+QAAYLsalrSp0cMgBgzz1b/PS1reyozcB7slndXO31a2c2dhO3cWtnNn8bZz3i9hvwYxYPAsb3a3loPGcRzv3x29rWznzsJ27ixs585St52bjkaPAADAFwEDAADwNYgBw6qkT1f/7nTfKNvKdu4sbOfOwnbuLPdsOwdueGsAADB4BrGGAQAADBgCBgAA4Ou+PVbpOE5QUlRSWVJQUs7MKv2m7Wc5W6HP7QxLilTfjkoar9vOsCSZWbG6zICZFe9t7nu3ge1suy077PuMSipIUnOaQf8+pVoej5rZQZ902/b4lPrazm17fEp9b+e2PD6lvrZzJxyfbffHNmnvzTFqZvflJWm27v+gpKmNpO1nOVvx6nM7k/X/N82blWTVV17uDrzl27fB7ey4LTvs+7Q2r+Q2+T6jksLuT8LGy2QbfJ/9bOd2Pj772c7tfHz2s53b9vis5rHj/tgm7T05Ru/XhgabN07SQr9p+1nOFn2h/WxnuP6z6rwmKVh9H5cUGNAdt6/vodO27LDvMyAp2jSt/gAf2O+zKc+20TIZ9O+zz+3ctsdnP9vZbVt22Pe5rY9Pv/2x1+/tnX6n96sNQ0St3VTOe9VAfaTtZzlboef8mVvdNV43KeClr0tTsQGr/qvq+3vosC075vuUJDOb9v6vVn9ON30+qN9nP7bz8dmzbX589m2bHp992c7HZy/7Y517dozerzYMgQ7Th/tM289ytkKgw/S2+avfgSUdllSo22ED1Z1acu9XZc2svBmZ3ASBDtM7fQ+dtqXf5dxvgQ7TW/JX/0PjOE5A0nDT9zXI32c/Ah2mb4fjsy/b+Pjs13Y9Pnu2E45Pn/2xXqDDIt7xMbrVY0kENiltP8vZCoFuH1Z34Kik+kY79Y1UynLvq4XuTfY2TaDD9H63pdNyBkXA5/O0pFTTtO34ffYjsMHPBt4OOj472WnHp59tfXx22B97EdjgZzX365ZERa0RzHB1ej9p+1nOVqhoY/lLSxprihaDdf+XJQWrrVsHQUX9bWenbel3OfdbRX3mr3owR9pE/oP8ffajou17fG7Udjs++7Vdj8++7ZDjs93+WK+ie3SM3q+AodBh+kyfaftZzlboO3+O4yQlpc2s7DhOoPoKS/pim+SbPlzpBvW8nT7bsuO+T0kjajr4tsH32Y/tfHz2bZsenz3b5sfnRmzr47Pd/tgm2T07Ru9LwNB8L6gauc3UVQGFvWiuW1q/5Wy1fraz+j4qqeh9+ZIOVdOW1VhlFpE0vU23s+O27LTvsyqs1h+agf4+mzX/CO2U47NZt+2svt+Wx2czn+3ctsdnM7/vs2rbHp9d9sf7dozet7EkqhlLSDomt1HJkbqNnZJ0zMwyPaTt+Nkg6HU7q+lKTbNXzGxvNa3XorUiKWRmzffctlSf32fHbdkp32dd+qTcbUw0LWfQv8+IpDG5z3dn5G7XdPWznXR89rSdO+D47Of73M7HZ8/bWZ22XY9Pv/3xvhyjDD4FAAB83a82DAAAYBsjYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYANxz1Y5l0tXn5tt9Hq9+HrjPWQPQIwIGYIdxHCfiOE7JcZxk9UQ8W315J+VStaMaVadH/Za5CYJyRwBs2zWtmeXkdiSz7UZCBL5RbPVolQA2X0Du4DRlSXIcZ0zSfPWkLMdxJuWewItyu8TdzmMDALhPqGEAdp7h5j7j65lZUdUreTMrDFJXvwAGFwEDsPO8vElpAKCGWxLADtNLjYGZVartGI7KbVuQqzZITEvKyh3BLyh3YJ+U3NscETUN3FOdJ1xNP9rLoD3eSHvVeQK9zgdgaxEwAN+gzKxYbc/gvS84jlOQ2/4hJkmO48QkRauj4BWrDSYD1YAjKCltZgeraYcdx0nWjw7YQVzuML0Fb757sX0ANhcBA4B6c9WXpyK3JqD+/XD1b0LSfNOjkqM9rGNa0qzjOGVJk5JyG88ugPuFgAGAn0qXz4pNj0r2cvKfN7O91VsihyVNyb31AWCA0egRQGCDn0/KbddQ06ljpiYTjuMEzaxYbbtQ6WEeAFuMGgZgh6qevINyGyXKcZy4pJnqY5Wqu8KfdxxnWm5gcLj6WaFp3qLc4CAoKeU4TqraBiLlOE5abqdLktS2Y6Ymc5IijuPMy729MemTHsAAcMxsq/MAYIer9iZZ7NY/RC9pAGwdbkkAAABfBAwAAMAXAQOA+6EsKdFttEq5j2TO39dcAegZbRgAAIAvahgAAIAvAgYAAOCLgAEAAPgiYAAAAL4IGAAAgC8CBgAA4IuAAQAA+CJgAAAAvggYAACAr/8fI3Fxk2BH9tAAAAAASUVORK5CYII=\n",
+      "text/plain": [
+       "<Figure size 600x400 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "(<Figure size 600x400 with 1 Axes>, <AxesSubplot:xlabel='Time [s]'>)"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssa.TDS.config.tf = 2\n",
+    "ssa.TDS.run()\n",
+    "\n",
+    "ssa.TDS.plt.plot(ssa.GENROU.Pe)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Get the OPF results from pandapower. The `ssp_res` has been converted to p.u.."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>name</th>\n",
+       "      <th>p</th>\n",
+       "      <th>q</th>\n",
+       "      <th>vm_pu</th>\n",
+       "      <th>bus_name</th>\n",
+       "      <th>bus_idx</th>\n",
+       "      <th>controllable</th>\n",
+       "      <th>syn_idx</th>\n",
+       "      <th>gov_idx</th>\n",
+       "      <th>exc_idx</th>\n",
+       "      <th>stg_idx</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>2</td>\n",
+       "      <td>0.500000</td>\n",
+       "      <td>0.129214</td>\n",
+       "      <td>1.096908</td>\n",
+       "      <td>BUS2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>True</td>\n",
+       "      <td>GENROU_2</td>\n",
+       "      <td>TGOV1_2</td>\n",
+       "      <td>EXST1_1</td>\n",
+       "      <td>2</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>3</td>\n",
+       "      <td>0.412728</td>\n",
+       "      <td>0.149999</td>\n",
+       "      <td>1.082554</td>\n",
+       "      <td>BUS3</td>\n",
+       "      <td>3</td>\n",
+       "      <td>True</td>\n",
+       "      <td>GENROU_3</td>\n",
+       "      <td>TGOV1_3</td>\n",
+       "      <td>ESST3A_3</td>\n",
+       "      <td>3</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>4</td>\n",
+       "      <td>0.343962</td>\n",
+       "      <td>0.099999</td>\n",
+       "      <td>1.086078</td>\n",
+       "      <td>BUS6</td>\n",
+       "      <td>6</td>\n",
+       "      <td>True</td>\n",
+       "      <td>GENROU_4</td>\n",
+       "      <td>TGOV1_4</td>\n",
+       "      <td>ESST3A_4</td>\n",
+       "      <td>4</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>5</td>\n",
+       "      <td>0.496196</td>\n",
+       "      <td>0.085231</td>\n",
+       "      <td>1.099999</td>\n",
+       "      <td>BUS8</td>\n",
+       "      <td>8</td>\n",
+       "      <td>True</td>\n",
+       "      <td>GENROU_5</td>\n",
+       "      <td>TGOV1_5</td>\n",
+       "      <td>1</td>\n",
+       "      <td>5</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>1</td>\n",
+       "      <td>0.500000</td>\n",
+       "      <td>-0.079092</td>\n",
+       "      <td>1.100000</td>\n",
+       "      <td>BUS1</td>\n",
+       "      <td>1</td>\n",
+       "      <td>True</td>\n",
+       "      <td>GENROU_1</td>\n",
+       "      <td>TGOV1_1</td>\n",
+       "      <td>ESST3A_2</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "  name         p         q     vm_pu bus_name bus_idx  controllable   syn_idx  \\\n",
+       "0    2  0.500000  0.129214  1.096908     BUS2       2          True  GENROU_2   \n",
+       "1    3  0.412728  0.149999  1.082554     BUS3       3          True  GENROU_3   \n",
+       "2    4  0.343962  0.099999  1.086078     BUS6       6          True  GENROU_4   \n",
+       "3    5  0.496196  0.085231  1.099999     BUS8       8          True  GENROU_5   \n",
+       "4    1  0.500000 -0.079092  1.100000     BUS1       1          True  GENROU_1   \n",
+       "\n",
+       "   gov_idx   exc_idx stg_idx  \n",
+       "0  TGOV1_2   EXST1_1       2  \n",
+       "1  TGOV1_3  ESST3A_3       3  \n",
+       "2  TGOV1_4  ESST3A_4       4  \n",
+       "3  TGOV1_5         1       5  \n",
+       "4  TGOV1_1  ESST3A_2       1  "
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssp_res = runopp_map(ssp, link_table)\n",
+    "ssp_res"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Now dispatch the resutls into `ssa`, where the active power setpoitns are updated to `TurbinGov.pref0`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([0.49999999, 0.41272757, 0.34396221, 0.49619557, 0.50000009])"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssa_gov_idx = list(ssp_res['gov_idx'][~ssp_res['gov_idx'].isna()])\n",
+    "ssa.TurbineGov.set(src='pref0', idx=ssa_gov_idx, attr='v', value=ssp_res['p'][~ssp_res['gov_idx'].isna()])\n",
+    "ssa.TurbineGov.get(src='pref0', idx=ssa_gov_idx, attr='v')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Now run the TDS to 50s."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "b35d11c0cb8f466f8c888a83869ef149",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "  0%|          | 0/100 [00:00<?, ?%/s]"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Simulation completed in 2.6138 seconds.\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssa.TDS.config.tf = 50\n",
+    "ssa.TDS.run()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We can see the outputs of `GENROU` are rearranged by the OPF results."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgsAAAFwCAYAAAA2UjhRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkAUlEQVR4nO3dd3hb13038O8FCIATvCI1rWEb8h6JDZHOXjaU5bR2GlJOmtk0IjOa9M0iwqYZbtKyYOKRpBmkmjSyHScU6NhxbMc2KK/Y8RAJT3kT2osUgAtuzPP+cXFBbBIiJFDC9/M8eCjee+7BwRGI+8OZkhACRERERLnoSl0AIiIiWtwYLBAREVFeDBaIiIgoLwYLRERElBeDBSIiIsqLwQIRERHlxWCBiIiI8qoodQHykSRJAnAagPFSl4WIiOgkVAfgoFjgokqLOliAGijsL3UhiIiITmJrABxYSAaLPVgYB4B9+/bBbDaXuixEREQnjbGxMaxduxYoQuv8Yg8WAABms5nBAhERUYlwgCMRERHlxWCBiIiI8mKwQERERHkxWCAiIqK8GCwQERFRXgwWiIiIKC8GC0RERJQXgwUiIiLKi8ECERER5cVggYiIiPI6KZZ7/u4dL8BUXbugPHQ6CZ992xk4e0VdkUpFRERUHk6KYOG1kQkYqha0uyae269gr28Sv/vcm4tUKiIiovJwUgQLv29784I3krru/lfQP8TdromI0nk8HjgcDvT29qKlpQXNzc3wer3weDwAAIfDAYvFckx52+12AEBjYyMAQJZltLW1wW63w+FwJJ6/p6cHvb29aGhoQHt7e+L64eFhDAwMwGKxwOVyZaQdHh7OeL7e3l40NTXB4XBAlmX09PSgu7sbFoslkbfX64WiKLDb7Vlfm6Io6OrqQnNzMwDA5/MBANra2jLqrr+/H11dXYmyt7W1QZbllPLYbDZ0dnbCarUeUz2WnBBi0T4AmAGIQCAgFup3T+wRls67RTgSXXBeRESnmqGhIaHeElI5nU4hy/Ix5We1WsXQ0FDK8eHhYdHS0iKsVmvGNVarVbS1tWUc9/v9wmazpRxzOBxClmXR0dGRkT7bMZvNlpH38PCwkGU5o4xDQ0PCZrMJv9+fctzpdGaUY66y5ypPLn6/X/T09OR8nkIEAgEBQAAwiwXejwse4ChJUockSW3xR8c8r2lLus4hSZJc6PMu1AqzCdGYgG8ydKKfmoho0RsYGMj6rddqtUJRFLjd7oLyu+KKK+BwODLyTP52n66hoSHrcVmWsXHjxoxjTqcT3d3diRYQzfr16+dVRovFgqamJmzevDmj7Ha7PdE6oGlpaclZ/lxlL6Q8brcb27Ztg6IoiZaMxaKgYEELDoQQvUKIXgBuSZJ65nHNNiFEd/yaLgBbjrXAx6qu0gAAmAhGTvRTExEtei6XC01NTRnHtSChkObz9vZ2WCwW2Gy2rOdtNlvem6tGUZREIKAFLen52Gw2tLa2zrts6WRZTslX65bIVXatWyE9QCkGq9WKtra2Y+7yOZ4KbVnoBNCr/SKEGADQljs5AGCjEEJJukYBIBf4vAtWbdQDAKZC0RP91EREi97g4GDGt3dAvTl2dMyrETlhYGAga+CRnu9cPB5P4kZus9kyvukDgNPphNvtRm9vb8a5uSiKgoGBgcTYCQDo7+/Pe7PWzvX39xf8fCezeQ9wlCTJAkBOvvEnnbPFA4dsFEmSXABahRBKPJ/ih2RzqDGpL3WSLQtEVATToSiGRydKXQwAwPpltaiKfyE6FtpNOfnbtMfjgd1uR3t7e8HBgsfjmbPpPdc398HBQXR3d8Pr9aK/vx9OpzNvPrIsw+FwwG63Y9OmTVkDiuRyaTd5j8eD4eFhbN++PaXVxOPx5Owm0VgsFuzYsSNvmlNNIbMhcoVaCvK3FGwGMATAL0lSN4BhIUTW/wlJkkwATEmHirYoQg1bFoioiIZHJ/Chnz1a6mIAAO768ttx0er6Y75+YGAAsixj27ZtiWMWi2XOG/Xx0NTUVHBw0tHRgZ6eHmzevDlvmS0WC1paWgCo3St9fX1ZuzC8Xm9hhS4DxZg66QOQs/Mp3prgALARQAeAAUmStmVroYDazfG9IpQpQ7XWshBiywIRLdz6ZbW468tvL3UxAKhlWQiXywWbzZYxLfBYWa3WjCmNgBqUuN1u9PT0wOfzobOzM29g0N7enjKewO125xw74XQ6sWHDhnkPxLRarejs7ERrayv8fn/iuMVimXM8wnxaH5Klj7U4GRUjWMg7SiUeKLiEEK3xLggn1JaGbG1UXQCuT/q9DkBRFkeoMsRbFoJsWSCihasy6hf0bX4xSe+3XyibzZa1T18bkKh1MczVgpA+dmBwcDBnsKANDmxtbZ3XeAgtf20QpfZcNpsNAwO5etVnB3ymd6PMJ8g4mRUywDFXLci5ziWNcxgAACGERwixAeo4hpb09EKIoBBiTHsAGC+gfHnpdRKMFTpMhxksEBFpFEXJGK+wUFrgkWsQoKIoeccWZON2u+ecJeBwOODz+QoOfJJbI7Q8cpXdbrejra0tI2jZuHEjgwVAvdFDvcln/G/lGdxogTqmIV3e6ZbHi0mvQygSK8VTExEtStp4hXw3Yrfbje7ubvT398971oHL5UJXV1fGt/R8awjkW1sgfaXFbN0csixjy5YtWfPx+XwZxy0WC2RZTgxW7O3tTazf0NXVlXHz1157tmBEW4MhvX66u7sL7t5ZbGssAIV3Q3QBsCE+fTLeOpComXgg0SKE6AbUIEKSJLskSemzKDbkGuR4PBkqdAhFGSwQESmKgt7eXvT19QFQb2rZugUURcHmzZsxNDSUMptgLhaLBUNDQ7Db7XC5XGhsbEy0JjidzpQgQlvC2e12Q1EUdHd3J85pyz1rXQXaLI3+/n4oipJY0lnT0tKSeE3JeWtTObWbtyzLicDA4XCkTJm02WzYvn07urq6MmZ1uFyunK/Z5XKhu7sbdrs9sbx1S0vLvFtRtPrt6+uD2+2G3W5Hc3NzYlBmKUlCFLZBU3yRJS3cahZC2JPOtQGwCyHWJx2ToQ5c9GJ25kRvjgGO6c9lBhAIBAIL3hsCAN78X9txTfNafHXjOQvOi4ioHGg3L22hpcW4YBBlNzY2hvr6egCoj3ftH7OCBzhqrQZx/WnnepHU0hA/pgCY32iT48zIlgUiooLIsozm5ubEmIbkwYBUPk6KXSeLxVjBMQtERIWw2WxwuVyJ7oe5xjfQqamsggUDBzgSERWsmNMq6eRU8K6TJzNjhQ5hdkMQEREVpKyCBU6dJCIiKlxZBQuGCglBtiwQEREVpKyCBaNehzBbFoiIiApSXsECp04SEREVrKyCBc6GICIiKlxZBQtcZ4GIiKhwZbXOgolTJ4mIMng8HjgcDvT29qKlpQXNzc3wer2JjZQcDscxL8SkbRet7ZUgyzLa2tpgt9sT6zdo+zf09vaioaEB7e2zWwdpe0NYLBa4XK6MtOkbStntdvT29qKpqSmxb0RPTw+6u7thsVgSeXu9XiiKkrFBlUZRFHR1daG5uRnA7OZO6ZtCafs5dHV1Jcqu7T2RXB6bzYbOzs6cW2wvekKIRfsAYAYgAoGAKIbv3PG8eN8NDxclLyKiU8nQ0JBQbwmpnE6nkGX5mPKzWq1iaGgo5fjw8LBoaWkRVqs14xqr1Sra2toyjvv9fmGz2VKOORwOIcuy6OjoyEif7ZjNZsvIe3h4WMiynFHGoaEhYbPZhN/vTznudDozyjFX2XOVJxeHwyEcDodoa2vLmd98BQIBAUAAMIsF3o/LqxtCzwGORETZDAwMZP3Wa7VaoSgK3G53QfldccUVcDgcGXkmf7tP19DQkPW4LMvYuHFjxjGn04nu7u6MraTTd4rMxWKxoKmpCZs3b84ou91uz9gtUtuGOlv5c5W9kPLY7XZ0dHSgo6MDPT09AJDxukulvIIFjlkgIsrK5XIltnFOpgUJhTSfaztUaptPpbPZbHlvrhpFURKBgBa0pOdjs9nQ2to677Klk2U5JV+tWyJX2bVuhfQAZaG0gCy5LO3t7YntuUut7IIFjlkgIso0ODiY9Vus9m23EAMDA1kDj/R85+LxeBI3T5vNlvFNHwCcTifcbjd6e3szzs1FURQMDAyk7H3R39+fd3yGdk7bWKuYBgcHUwID7bnSg6RSKKsBjpw6SURFNX5YfSSrkoElZwDhGWD05cxrTrtE/Xn0NSA0mXpOXgdUNwCTR4HA/tRzpjqgcT0QiwKHn589XrdSfSyAdlNO/jbt8Xhgt9vR3t5ecLDg8XjmbHrP9c19cHAQ3d3d8Hq96O/vh9PpzJuPLMtwOByw2+3YtGlT1oAiuVzaTd7j8WB4eBjbt29PaTXxeDw5u0k0FosFO3bsyJumULIsw+/3pxwbGBhIPF+plVWwYGI3BBEV0+D/AQ//d+qxizcBH9kCjB0Aet+Vec33A+rPO74A7E+74Xy4F3jjNcDO24F7vpF6bv3lwCdvVwOM5Hzf9S3gPZ0LehkDAwOQZRnbtm1LHLNYLHPeqI+HpqamgoMTrY9/8+bNectssVjQ0tICQO1e6evry9qF4fV6Cyv0cdLV1YWenp68AdCJUlbBgtoNIUpdDCI6VTT9E3DuB1KPVcnqT/NqoO3h3Nde/cvsLQsAcOGHgTXNqedMdepPY01qvgtsVQDU8Qo2my1jWuCxslqtGVMaATUocbvd6Onpgc/nQ2dnZ97AoL29PaUJ3u125xw74XQ6sWHDhnkPxLRarejs7ERra2vKN3qLxTLnGIH5tD4kO5ZuBLvdjmuuuaZo/ycLVVbBgiE+G0IIAUmSSl0cIjrZ5esCMFTOdjlks/Ts3OdqlqqPbHT6/Pkeg/R++4Wy2WxZ+/S1AYlaF8NcLQjpze+Dg4M5gwWr1Yq2tja0trbOazyElr82iFJ7LpvNlmj+z0YLRtK7UeYTZMxXf38/1q9fv2gCBaDcBjjq1ZfL6ZNERCpFUTLGKyyUFnjkGgSoKErBTetut3vOvnuHwwGfz1dw4JPcGqHlkavsdrsdbW1tGUHLxo0bixIsaIGKFigkzwgppbIKFgwV6stlVwQRkUobr5DvRux2u9Hd3Y3+/v55zzpwuVzo6urK+JauKEpiNcR0uY4DyFhpMVs3hyzL2LJlS9Z8fD5fxnGLxQJZlhODFXt7exPrN3R1dWXcpLXXni0Y0dZgSK+f7u7uebcQuN3uRFeLx+OBx+NJrFRZapIQi/fGKUmSGUAgEAjAbDYvOL97XziEz9/ixjPf3Qi52rjwAhIRnaQURUFvby/6+vrg8Xhyjh9QFAVXXHEFhoaGErMJChmAmLzcs9aa0NbWhoGBgURrhraEc/qSzMDscs8ejwdCiMQsjf7+frS1tSWWdE7W2tqaGOio5a2NG9Ca97VrtC6Y9vZ2yLKcKJO23HP6rI65bvzaTA5teWstiJiLoig488wzs45vONb79NjYGOrr6wGgXggxdkyZxJVVsDDw4hF87qZBPPXtK7C8rnLhBSQiOsX19/ejr68vsdDSYpjGR/NTzGCB3RBERJSTLMtobm6GzWYr6iA+OrmU2WwIdQZEhAMciYjmxWazweVyJQb8zTW+gU5NZRUsaLMhuOQzEdH8FXNaJZ2cyqobokKbOhlhNwQREdF8lVWwoHVDsGWBiIho/soqWNC6ISIxBgtERETzVVbBArshiIiICldWwQK7IYiIiApXVsECuyGIiIgKV1bBgoHdEERERAUrq2Chgt0QREREBSurRZkMXJSJiCiDx+OBw+FAb28vWlpa0NzcDK/Xm1ja2eFwHPOqjckbSQHqCpBtbW2w2+2JxZ60zZ60HRazbSRlsVjgcrky0qbvPmm329Hb24umpqbEJlPZNqnyer1QFCVjN0uNtpFUc3MzgNkdMdM3ktI21+rq6kqUPXmjKq08NpsNnZ2dGVtbnzSEEIv2AcAMQAQCAVEMkWhMnG6/S/Q9tbco+RERnSqGhoaEektI5XQ6hSzLx5Sf1WoVQ0NDKceHh4dFS0uLsFqtGddYrVbR1taWcdzv9wubzZZyzOFwCFmWRUdHR0b6bMdsNltG3sPDw0KW5YwyDg0NCZvNJvx+f8pxp9OZUY65yp6rPNn4/X7R09Mjenp6REdHh2hpackoQyECgYAAIACYxQLvx2XVDaHXSdBJQIgtC0REKQYGBrJ+67VarVAUBW63u6D8rrjiCjgcjow807egTtbQ0JD1uCzL2LhxY8Yxp9OJ7u7ujM2t0reVzsVisaCpqQmbN2/OKLvdbs/Y+lrbbjpb+XOVvZDy2O122Gy2xNbbDQ0NaG1tnde1x1tZBQuA2hXBbggiolQulwtNTU0Zx7UgoZDmc207a5vNlvW8zWbLe3PVKIqSCAS0oCU9H5vNtqAbqizLKflq3RK5yq51KxyP3Te1Lg3N+vXrMTg4WPTnORZlFywY9TpEuEU1EVGKwcHBjG/vgHpz7OjoKCivgYGBrIFHer5z8Xg8iRu5zWbL+KYPAE6nE263G729vQWVEVCDkYGBgZSNsvr7+/OOz9DOJd/Ui8XlcqXU9Y4dO3IGLSdaWQ1wBABDhY7dEERUFKNToxidHs2bZlXNKiypXAL/jB+HJg/hgsYLAAC7ArswHZnOe+3Z8tkw6A3YN74PMRHD6ebTEY1F8Yr/lUSaZVXLsKx62YJeh3ZTTr4xeTwe2O12tLe3FxwseDyeOZvec90EBwcH0d3dDa/Xi/7+fjidzrz5yLIMh8MBu92OTZs2ZQ0oksul3eQ9Hg+Gh4exffv2lFYTj8eTs5tEY7FYsGPHjrxpFqq/vx+Kosz5+k+UsgsWKnQSuyGIqCicrzrxy2d/mTfN99/yfXzknI/ggb0P4PuPfx/Pf/p5AMC/P/bveG70ubzXulpcWFmzEjcM3YDJ8CR6NvZgOjKNa+66JpHmC2/8Ar54yRcX9DoGBgYgyzK2bduWOGaxWEpyo2pqaio4OOno6EBPTw82b96ct8wWiwUtLS0A1O6Vvr6+rF0YXq+3sEIXkaIo2LZtGxRFQWtra97g50Qqu2CBYxaIqFhaz2nFu9e+O2+aVTWrAACXr7sc5zeenzj+w7f9cM6WhcZKdbrhVzd8FTGhfm5VVVSh70N9iTTLqhbWqgCozd/awLpisFqtGVMaATUocbvd6Onpgc/nQ2dnZ97AoL29PWU8gdvtzjl2wul0YsOGDfMeiGm1WtHZ2YnW1lb4/f7EcYvFMud4hPm0PiRLH2uRjza1FAB6e3uxZMkS7Nq1q+RBQ8HBgiRJHQCU+K+yEKJ7jvROAH0APEnXAQCEEMUfITIHYwXHLBBRcSyrnn8XwJLKJVhSuSTx+5n1Z877edbWrU38W6/TJ7oyiiW9336hbDZb1j59bUCi1sUwVwtC+tiBwcHBnMGC1WpFW1sbWltb5zUeQstfG0SpPZfNZsPAwEDOa7RgJL0bZT5BRj7aug6dnZ2JwMBmsyXGVWgtIqVS0ADHeKAAIUSvEKIXgFuSpJ45LrMCcAIYAjCc9CjeO7MAFTqJYxaIiOIURckYr7BQWuCRaxCgoigFf1N2u91zLgzlcDjg8/kKDnySWyO0PHKV3W63o62tLSNo2bhx44KCBY/Hg+7u7sTiT8Bsi0SpWxWAwmdDdAJIDDkVQgwAmKvdqkcIISU/ALQLIUoyeZTdEEREs7TxCvluxG63G93d3ejv75/3rAOXy4Wurq6Mb+mKoqTcEJPlOg4gY6XFbN0csixjy5YtWfPx+XwZxy0WC2RZTgxW7O3tTazf0NXVlXHz1157tmBEW4MhvX66u7vn1b1jtVrR0dGR8hr7+vpgtVoXxYyIeXdDSJJkgdrtoGQ5Z4sHDtn0p6cFULKJowZ2QxARQVEU9Pb2oq9PHf/Q3d2dtVtAURRs3rwZQ0NDGesA5GOxWDA0NAS73Q6Xy4XGxsbEN2Sn05kSRGhLOLvdbiiKgu7u2d5tbblnratAm6WhzRbQlnTWtLS0JF5Tct7aVE7t5i3LciIwcDgcKVMmbTYbtm/fjq6uroxZHS6XK+drdrlc6O7uht1uTyxv3dLSMu+Wgc7OzpTXrigKtm/fPq9rjzdJiPndOOM3eVe8ZSD5uB/AZiHEnO+geMBhi3dhZDtvAmBKOlQHYH8gEIDZbJ5XOefS+qu/YW1DNa7fdElR8iMiOpX19/ejr68vsdDSse4RQSfe2NgY6uvrAaBeCDG2kLyKsSiTD8DcS3Gp7LkChbhOAIGkx/4Fli1DhU6HMFsWiIjmRZZlNDc3w2azLXgQH528ihEszCtQkCRpPmuFdgGoT3qsWUC5sjJU6BCOcMwCEdF8JM9e6O/vZ7BQpgqZOpnrHSLnOZesHeosiJyEEEEAQe13SZLypD42Rr2ESIzBAhHRfBVzWiWdnObdshBfE0GJjztIP5d7UuosG9LWWSiFCp0OIXZDEBERzVuh3RBdUG/6AABJklqQNJVSkiSLthZDFhbMrwXiuGI3BBERUWEKChbiqzXKkiS1xAOFZiFE8pqXNqjdDdl4oA6GLCkDuyGIiIgKUvByz2nLO/ennetFUktD2rn8W5CdIEY9uyGIiIgKUYzZECeVCr3EbggiIqIClF2wwOWeiYiIClN2wYJRr0Mkxm4IIiKi+Sp4zMLJrkIvIcRuCCKiBI/HA4fDgd7eXrS0tKC5uRlerzexAJPD4TjmZZ617aK1vRJkWUZbWxvsdnti/QZt/4be3l40NDSgvX12nLy2N4TFYoHL5cpIm76hlN1uR29vL5qamhL7RvT09KC7uxsWiyWRt9frhaIoGRtUabQto5ubmwHMbnKVvimUtl9GV1dXouza3hPJ5bHZbOjs7My5xfaiJ4RYtA8AZgAiEAiIYrnB9Ypo/qGraPkREZ0KhoaGhHpLSOV0OoUsy8eUn9VqFUNDQynHh4eHRUtLi7BarRnXWK1W0dbWlnHc7/cLm82WcszhcAhZlkVHR0dG+mzHbDZbRt7Dw8NCluWMMg4NDQmbzSb8fn/KcafTmVGOucqeqzzzkeu55isQCAgAAoBZLPB+XHbdEAZ2QxARZRgYGMj6rddqtUJRFLjd7oLyu+KKK+BwODLyTP52n66hIfvuAbIsY+PGjRnHnE4nuru7M5agTt8pMheLxYKmpiZs3rw5o+x2uz1jt0htG+ps5c9V9kLKk6y/vz9je+9SKrtgwajnokxEROlcLldiG+dkWpBQSPO5tkOlzWbLet5ms+W9uWoURUkEAlrQkp6PzWZDa2vrvMuWTpbllHy1bolcZde6FY7nHhmKoiS6PRaLsgsWKvQSQpwNQUSUYnBwMOPbO6DeHDs6ci3Mm93AwEDWwCM937l4PJ7Ejdxms2V80wcAp9MJt9uN3t58GxpnpygKBgYGUva+6O/vzzs+QzvX39+fM81Cbdu2DZs2bTpu+R+LshvgyKmTRFQs4ZERRP0KKs89BwAQfP116GpqYFi1CrFgEMHXX4fx9DOgr61B5OhRRI4eReV556lpPbugMxlhWL0aIhzGzKuvwrhuHfR1dYj4fIgcPozKCy4AAIR27wYqKmBcswYiGsXMyy/DuGYN9PX1RXkd2k05+du0x+OB3W5He3t7wcGCx+OZs+k91zf3wcFBdHd3J3a6dDqdefORZRkOhwN2ux2bNm3KGlAkl0u7yXs8HgwPD2P79u0prSYejydnN4nGYrFgx44dedMcq4GBgZx1U0pl17Jg1OsQE0CU4xaIaIGUvm3YlzQ6/sDXvg7vr38DAIgcPozdH2nBzM6dAIDAn/6EPZ/+TCLtoc5OjP7yl2pavx+7P9KCqaEhAMDYX/6C3dd8dDbttddi9PobAACx6Wns/kgLJh9/vGivY2BgALIsY9u2bejt7U00szudzoIDhYVqampCR0cHHA4HWlpa5nVNR0cHGhoaMsYepLNYLGhpaUFLSwtsNhsGBwezNvd7vd5jKnsxKIpyzDNPjqeya1mo0KvbXoejMeh1+hKXhohOZvI1m1D33vcmfl99/XXQ1dQAACpWrsQZt/XDePoZAID6q65Czdvelki7qqsLOpNRTbtkiZp23ToAgPkDH0D1pZfOpv3e94AK9eNaV1Wlpl2zpmivw+VywWazZUwLPFZWqzVjSiOgBiVutxs9PT3w+Xzo7OzMG4y0t7enjCdwu905x044nU5s2LBh3gMxrVYrOjs70draCr/fnzhusVjmHI8wn9aHZOljLXLp7e0t2v9BsZVdy4JBr75kdkUQ0UIZli9PdEEAgOmss2BYtQoAoDOZUHXhhdDXxoOHpUsTXRAAYLKcCcPq1QAAyWBQ09bVqWkbGhJdEABgPOOMRHAg6fVq2iJ1QQDqTTzbeIVjZbPZso7kt9ls6OjoQEtLCxoaGuZstbBYLCnBweDgYM60VqsVbW1tBQ12tFgsKYMotTLmCzi0c+ldBfMJMvJxu91zjvMopbINFiLcTIqICIqiZIxXWChtwGCuQYCKouQdW5CN2+2es3ne4XDA5/OlDFicb97peeQqu91uR1tbW0YLx8aNGxcULPh8PgwMDKC7uxvd3d2JAaDd3d3HdTDlfJVdsGCsmO2GICIqd9p4hXw3YrfbnbhpzXfWgcvlQldXV0YLQ75pgfmmC6avtJitm0OWZWzZsiVrPj6fL+O4xWKBLMuJwYq9vb2J9Ru6uroybv7aa88WjGhrMKTXT3d397y6FrRWF+2hdXNoLTGlVn5jFnRqfMTpk0RUzhRFQW9vL/r6+gCoN7Vs3QKKomDz5s0YGhpKmU0wF4vFgqGhIdjtdrhcLjQ2NiZaE5xOZ0oQoS3h7Ha7oSgKuru7E+e05Z49Hk+iqd9ut6O/vx+KoiSWdNa0tLQkXlNy3loTv3bzlmU5ERg4HI6UKZM2mw3bt29HV1dXxqwOl8uV8zW7XK5Eq4C2vHVLS0vBrSj9/f2J12C327Fx48aSz5CQhFi8zfGSJJkBBAKBAMxmc1HyfHzYi49teQIPfuPdOHNpTVHyJCI6VWk3Lm2hpcU4Up+yGxsbQ706tqVeCDG2kLzKthsiwpYFIqI5ybKM5uZm2Gy2BQ/io5MXuyGIiCgnm80Gl8uV6H6Ya3wDnZrKLliYnTq5eLtfiIgWk0JnF9Cph90QRERElFfZBQtaywK7IYiIiOan7IKFCnZDEBERFaTsggWDtjdEhC0LRERE81F2wYJRW+45NhssPL8/gPfd8Ah2HgyUqlhERESLVtkFCxWJMQuz3RC3PrUXrxwZxy1P7ClVsYiIiBatsgsWsnVDvHBAbVF4eq9SiiIREREtauW3zoIusxvigDKNhhojdh2dRCwmoNNJpSoeEdEJ5/F44HA40Nvbi5aWFjQ3N8Pr9SZWa3Q4HMe8EJO2e6K2V4Isy2hra4Pdbk+s36Dt39Db24uGhobEJkrA7N4QFosFLpcrI236hlJ2ux29vb1oampK7BvR09OD7u5uWCyWRN5erxeKomRsUKVRFAVdXV1obm4GMLvJVfqmUNp+GV1dXYmya3tPJJfHZrOhs7MzY7fKk4YQYtE+AJgBiEAgIIppfefd4qbHdwshhJgORcTp9rvEF28ZEqfb7xKHlOmiPhcR0clgaGhIqLeEVE6nU8iyfEz5Wa1WMTQ0lHJ8eHhYtLS0CKvVmnGN1WoVbW1tGcf9fr+w2WwpxxwOh5BlWXR0dGSkz3bMZrNl5D08PCxkWc4o49DQkLDZbMLv96ccdzqdGeWYq+y5ypONy+USLS0toqenR7hcLtHR0SGcTue8rs0mEAgIAAKAWSzwflx23RAAUKGXEt0QB5VpAMCb16tR727vZMnKRURUKgMDA1m/9VqtViiKArfbXVB+V1xxBRwOR0aeyd/u0zU0NGQ9LssyNm7cmHHM6XSiu7s7Y7+K9J0ic7FYLGhqasLmzZszym632zN2i9S2oc5W/lxlL6Q8iqJgYGAA7e3taG9vx/r16xfF9tRAGY5ZANSFmcJRLViYAQC86cwGSBKw1ztVyqIREZWEy+VKbOOcTAsSCmk+13aozLWtss1my3tz1SiKkggEtKAlPR+bzYbW1tZ5ly2dLMsp+WrdErnKrnUrHK8NtXbt2gUhBIaHhzO6PEqpLIMFo16HSEydDXEooLYsnN5YjRV1ldjnZ7BAROVncHAw49s7oN4cOzo6CsprYGAga+CRnu9cPB5P4kZus9kyvukDgNPphNvtRm9vb0FlBGa/ySfvfdHf3593fIZ2TttYq1yU3QBHQO2GCMW7IbyTIZgrK2Cq0OM0uTLR0kBElE84FIVyeHF8uZBXVsNg1B/z9dpNOfnbtMfjgd1uR3t7e8HBgsfjmbPpPdc398HBQXR3d8Pr9aK/vx9OpzNvPrIsw+FwwG63Y9OmTVkDiuRyaTd5j8eD4eFhbN++PaXVxOPx5Owm0VgsFuzYsSNvmmO1bds2NDQ0wOfzYXh4eNFs4lWWwUJyN4R/KgS52ggAWCVXJcYwEBHloxyewrb/Oj43jEJt+rdmLFtXd8zXDwwMQJZlbNu2LXHMYrHMeaM+HpqamgoOTjo6OtDT04PNmzfnLbPFYkmMAXC73ejr68vaheH1egsrdJFoQYvWetHb24vW1taS/D+kK8tgIbkbIjAVxpJqAwBgtVyFnQe4iiMRzU1eWY1N/9Zc6mIAUMuyEC6XCzabrWh95FarNWNKI6AGJW63Gz09PfD5fOjs7MwbGLS3t6eMJ3C73TnHTjidTmzYsGHeAzGtVis6OzvR2toKv9+fOG6xWOYcjzCf1odk6WMtcknv/ti0aVOiDvK1mJwIZRksGPS6RDdESstCfSUOBmYghIAkca0FIsrNYNQv6Nv8YpLeb79QNpsta5++NiBR62KYqwUh/eY5ODiYM1iwWq1oa2tDa2vrvMZDaPlrgyi157LZbBgYGMh5jRaMpHejzCfImEt/f3/K7ActQPB4PCVfn6E8BzhW6BBMBAuzLQunyVUIRWLwToZKWTwiohNGUZSM8QoLpQUeuQYBHss3ZbfbPefCUA6HAz6fr+DAJ7k1QssjV9ntdjva2toybt4bN25cULCgKApaW1tT8tBaJI51QaxiKstgocqgx0w4CgBQkloWTquvAgCOWyCisqGNV8h3Q3K73eju7kZ/f/+8Zx24XC50dXVlfEtXFCWxGmK6XMcBZKy0mK2bQ5ZlbNmyJWs+Pp8v47jFYoEsy4nBir29vYn1G7q6ujJu/tprzxaMaGswpNdPd3f3vLp3ZFlGR0dHymvUVtQsdRcEUKbdEFVGPaZCEQCAMhWGnGhZqASgrr3whjUlKx4R0XGnKAp6e3vR19cHQL2pZesWUBQFmzdvxtDQUMpsgrlYLBYMDQ3BbrfD5XKhsbExcdNzOp0pQYS2hLPb7YaiKOju7k6c05Z71roKtFka/f39UBQlsaSzpqWlJfGakvPWpnJqN29ZlhOBgcPhSJkyabPZsH37dnR1dWXM6nC5XDlfs8vlQnd3N+x2e2J560Ju9p2dnSmv3ev1LorBjQAgCSHmTlUikiSZAQQCgQDMZnPR8v3CLUOYCEZw02cvw7n/fi++feX5+PRbz4AQAud9517Y338ePvv2M4v2fEREJ6v+/n709fUlFlpaDE3iND9jY2Oor68HgHohxNhC8irrboipUBShaCzRsiBJEk7j9EkiogRZltHc3AybzVaUQXx0cirjbogo/FPqQMYl8TELgDoj4lCACzMREQFqk7zL5Up0P8w1voFOTWUZLFQb9ZgORaFMhQGkBgunyVV4fWSiVEUjIlp0FssqglQ6BQcLkiR1AFDiv8pCiO48yZOvcwDQhq/6hBAlW1i7yqDHdHg2WNC6IQA1WPjra6OlKhoREdGiU1CwEA8UIITojf9ukySpRwiRcykrSZJkANsBXCGEUCRJsgIYAlCyVY+qjBUp3RApwUJ9JUbGgwhFYjBWlOWQDiIiohSF3g07ASQmkQohBgDMNYHUAaBPCKHEr3EDyNza7ATSuiH8UyEY9TrUmmZjptPkKggBHBnjuAUiIiKggGBBkiQL1G4HJcu5fEt/tQHolyTJoqWLBxnZnsMkSZJZewA4LmupVhn1CEVjGB0PYkmNIWVp59m1FjgjgoiICCisZSHX8FcFgJztRDzAAABrPI1HkqSePMFFJ4BA0mN/AeWbtyqDupXrAf90yuBGAFgtV0OSgD2+xbH1LBERUakVo1PeB6AhxzktWFCEEG4hhAeAHUCuJam6ANQnPY7LOorV8X3f9yvTaKhJDRaqjHqc0ViDlw4taP0KIiKiU0YxgoVcgUKyQe0f8W4MOVvrghAiKIQY0x4AxotQvgxV8WDhoDKNJWnBAgBccJoZLx5ksEBERAQUFizkWrZLznMu13EFubs1jrtEN4QyjcZswcIqM3YeHEM4GjvRRSMiIlp05h0sxLsQlKRxCMnnsg5YjF/jQWZgICOpteFEM1epUyWFQMaYBQB497nLMBGM4PFh74kuGhER0aJTaDdEF4BE94EkSS1ImkoZn/GQvm2ZHcA1adcMxKdQlsTSWlPSv7O3LJy5tAY/f/B1+CdDJ7JoREREi05BwUJ8tUZZkqSW+E2/OW1BJhuA9rRr+gEMS5LUEQ8kmoUQJV1nwVw5u67CmiXVGeclScIPr74IT+9VYP2hC5/bugPjM+ETWUQiIqJFoyy3qAaAM751NwDg/q++E+esyL6cw8j4DLa/NIL/vPslvP+ilfhx6xuLWgYiIqLjhVtUF8E5K2oBAOuX1eZMs7yuEh+7bB3sHzgP/UP7MTzKDaaIiKj8lG2w8PvNb8b2r78Let3cW1RsalqDpbVG/Pax3ce/YERERItM2QYLjbWmvK0KyUwVenz8Taejf2g/xy4QEVHZKdtgoVDXNK/FTCSKu547VOqiEBERnVAMFubpNLkK7zpnGfp27Ct1UYiIiE4oBgsF+GjzWjyzT8Erh4/LKtRERESLEoOFAlx+3go01hjZukBERGWFwUIBjBU6fGTDGvzx6f2YCUdLXRwiIqITgsFCgT7+pnUYn4nglif2lLooREREJwSDhQKd3liDFusa/PKhYQSmOI2SiIhOfQwWjsFXN56DUCSGH9z9YqmLQkREdNwxWDgGK+sr8e8fOh/9Q/vx4MsjpS4OERHRccVg4RhtalqLd5+7DN/sfw4+bmNNRESnMAYLx0iSJHR/5A2IxGLo/ONzWMy7dxIRES0Eg4UFWG6uRNeHL8Z9O4/gNveBUheHiIjouGCwsEAfuHgV/sG6Gt+/cyf2+aZKXRwiIqKiY7BQBN//+wtRX2XA17Y9g2iM3RFERHRqYbBQBOZKA67f9EYM7vGj55HhUheHiIioqBgsFMmbLI34/LvW4/r7X8Xz+wOlLg4REVHRMFgooq/azsEFp5nRfvMgRsZmSl0cIiKiomCwUETGCh16P9mEqBD43E2DmA5xsykiIjr5MVgospX1lfj1p5vx2pEJfP6WIQQjDBiIiOjkxmDhOLhodT22fKoJj3u8+PKtTyMcjZW6SERERMeMwcJx8vazl+JXn7DiwVdG8LVtz3JKJRERnbQYLBxHl5+3Aj/96KW45/lD+GY/AwYiIjo5VZS6AKe6D1y8CtdHY/jatmcRDMdwwzWXwFjBGI2IiE4evGudAFddshq/+LgVrhePoO3mQUyFIqUuEhER0bwxWDhB3nfhSvz6M014apcPH/nl49xHgoiIThoMFk6gd5y9DLd94a2YCIZx1c8fwyOvjpa6SERERHNisHCCnb/KjDu/9HZceJoZn/rNU/iPP7+ImTDXYiAiosWLwUIJLKkxYus/XYZ/v/J83PLEHlz988fw4sGxUheLiIgoKwYLJaLTSfjcOyy440tvQ0wI/N3/PIque17i4EciIlp0JCEW79x/SZLMAAKBQABms7nUxTluQpEYtvzVg59ufw1La034zocuwPsuXAFJkkpdNCIiOkmNjY2hvr4eAOqFEAtqvmawsIjs8U7iu3/aiYdfHcUla2V0vP9cvHX90lIXi4iITkIMFk5xj752FN33vYzn9gfwFksj2t5lwbvPWcaWBiIimjcGC2VACIH7dh7GLx4axnP7AzhnRS0+93YL/u6Np6HKqC918YiIaJFjsFBGhBB4apcPW/66CwMvHUGtqQJ/98ZVaNmwFtZ1MlsbiIgoKwYLZWqfbwrOof24bWg/DijTOHNpDd534Uq8/6KVeMPqeuh0DByIiEjFYKHMxWICfxv24s5nD2DgpRH4JkNYaa7Ee85bjred1Yi3WBrRWGsqdTGJiKiEGCxQQiQaw47dfty38zD++toohkcnAagrRb7F0ohL1sm4ZI2MtQ1V7LIgIiojDBYop8OBGfxt+Cgee92Lp3Z7sc83DQBoqDHijWvqccFpZpyzog5nLa/F+mW1qDRwsCQR0amopMGCJEkdAJT4r7IQonuO9DYA7QBcADwANgLYIYTon8dzMVhYIO9EEM/tD+CZfQqe3a/g5UPjODw2AwDQScDpjTVYv6wGa5ZUY82SKqxtmP1prjSUuPRERHSsShYsxAMFaAFCPBBoFUK057mmBcAWADLUYMEhhOid5/MxWDgOAtNhvD4ygdeOjOPVIxPwHJ3Afv809vunMBOOJdLVmiqwvM6EpXUmLKszYVmtCcvN6s/GWiPqqwyorzLAXGWAudLAVgoiokWklMGCH8CZQggl6ZgQQuTsDI8HCwPJ1xTwfAwWTiAhBI5OhLDPP4V9vikcGZvByFgQoxNBjI7HHxNBKFPhrNebKnSoq6xAtbECNaYK1Bj16k+THjXxY9XxY1UGPYwVOhgrdDBV6GDU6xK/a/82VegT5w16HXQ6oEKng14nQa+TUKGToJPiPzkThIgoRTGDhYr5JpQkyQK120HJcs4mhBhYSEGo9CRJwrKaCiwzVsB62jKgwghM+YDJUSBaAUQMQNSIkLEOvuqzMDYWgG74fsxMz2BmZgYzoSDC4TCebLgKU+EY1o/cj9rJwwgHIohEIohGo3hQWPFseC3OCr+Ky/EkJBGDHjHoILBHLMdN0ffBgAj+o+L/oEcMeikGCWpAe234UwigFp/V/wVv1A1DgkicuzP6VjyIZlyiG8Zm/Z8hSYAEQC8BI9JS/NTwz5AkCdeGr4MJQeiA+LUSfm76HA7pV+Lq0N14c3QokacE4DHDW3Bf5QdwenQPNk//L5JDkimpBj+W/w0SgK+MXYclMV/8KtXvzf+EXYaz8c6pAbx9+oGUun7BdCnurG3FkuhRfEG5HuljT/+r8b8AAJ8O/AKrI/tTzt1Zuwk7TZdiw/Tf8N6pP6ec8xjORp/5szDFZvB13/eReCFxNzZ8B9O6GrSObcVZoZdSrh2ouRKD1e/AecHncPXYrSnnDlesxm+XfBkA0DH6beiQuq36/y75GrwVK/DBcScunhlMOfd49XvwSM37sS40jI8FUhsVx3UyftHYCQD4kvc/URtL/Tz7fX0b9hrX492Tf8Gbph5KOfdcZTP+UteCZZFD+Kz/xpRzUakCP176nwCAf/L/BMsjB1PO32H+OF4xvQGXTT2CyyfvTjn3mvEC3Fb/aVTHxvEV7w+R7vrGaxHSVeIa5X9xZvi1lHP3114Nd9VbcNHMID407kw5d8CwDjfLXwKEwLeOfisj3181dEDRN+Lvx36PC4LPpJx7tNqGR2s2whJ6BZsCv0k559c3oqehAwDwr0evRZWYSjl/k/xFHDScDtvEnWiafizl3FDVW+CqvRorw/vxGeVnKeeCUiVuWHotBAQ2+67D0uhIynmn+dN43XQB3jr1AN41eV/KuZdMb8Ad5o/DHFXwJV9XxmvtXvqfiEoV+LjSg3VhT8q5e2pb8GxVMy6ZfhIfmPhjyrm9Bgt+J7dDL8LoOPrvGfn+rOHfMKGvxz+M3YJzg8+nnHuo5v14vPo9OCe4Ex8Zuynl3Kh+Jf634asAgK8f/S6MIphy/jdLvoIjFavxvvHbYZ15IuXcU1XvwPbaD2F1eDc+pfwy5dyUrhY/afwOAOALvm7IUW/K+T/U/zN2Gc/BOyZdePtU6i30BZMVfzZfg4bIKNr9P854rV3LHACAT/l/jtWRvSnn7qz7KHZWXooLfQ9kXHes5h0sALDkOK5A7WLIZ5MkST4ADQDWCyHs2RJJkmQCkDznr66A8lFoCpg4Akz7gGkFqF0OrLwYGDsIPPkr9VhwDAhNApCAj29Tr9v6d8DhF4DwFBBRxzPgY38Azv0AMPgb4IEfpDyN8YKrsHLTTVgJL/DQv6SWQdLjPR/9GlBhAm7+LnB0ByDpAJ0e0Ovw6fe9G3jDe4EXxoHtz0FIegjoICQdQivrsfmK9yAUmsFpf7weMSEhJukRE+rtu/Etb8CMaQksLzyGJaNRCEANFwTQsHYl3rnyQjR4g7hwWKeeE+r5ZSYTWixrEBPA2leMqIiJRJghIOFt65bCb1qO9SMy6gK1QPw4AKw112NDwxI0zozBcEhGcjucQVeNs5fXIiaAirAZIhoFBBJpGmqrMFNZiRqpBrFYfUo1maprsKq+EuZIFWLT9fHnnLXCXAkA0AfNiIRSr62rqcbyahNqdNWIRFLP6U11WFZngiEmEJ6UM94ijTUmzOhN0AVrEU77s62qqkFDjQnVumqEZ9KuNdShocYEIQTCRjMkEUs5XVdlQtRggC5Ui1A0tUwGUzXqqw2o1psQmko9F9HXQa5Wx8ZExusRiqVuhFtdVQnZZEBFpBqhSGqZdKZayNUG1IQrEUp7rVFUJPKNTpoR0qXeQKsqqyBXGWCMVSMYTnut8Xwro0YEjWnnANRXGxHWGYDpOgSl1PPGyirI1QaYUI1gMPVczGBWyyRE1nzrqoxAhQFSsBZBkXq+orIGcrUBVbpKBKdTz0X09YnXGjLK0AljyvmaqkrIRgN0kVoEo6nX6k1qvjUhE4JTqefCkimpDusRjKS2KFZXVWFJpRGGaA2C4SUp5yRTHZZUG1ETNSE4kXoOAORqE2KSHmLajKCUet5UVY0l1Ua1DkOp52JGM5ZUG6EXEoLGzHzrq00w6I1AsA5BkXreUFmDJdVGVOmqEZxJy7dCzRdQ61CIUMr5uqpKhAxG6MO1CMZSr9VX1mJJtRG1oUoEp1LPhXXViXwjE2YEo6l/N9VVVVhiitdhJPVaXTzfukglgpOZr1XLV0yZEdSlnq+sqsaSKiPGRwu5xec3726I+PgEV3qXgyRJw8gzDiHeIgEhhCf+exuAjUKI1ixpvw/ge+nH2Q0Rd/h54OirQGA/MH5EDQze+Q1g+fnAwLXAo9enpr/0E8BVPweOvg78rgWokgGTGTDVAZX1wNW/UNM9tUUNIgw1gLEaMFQDp78NMK8ClH3q81UYAb0RMRgR0dchYlqKyEwY0ekJREUFYtAjFpMQi8YQjQrEogKxSEz9GRWIRmf/HYvGIGJqt0fiZ/K/Y0K90aecR/x48r/Vc4gJ9UYbfyur/07+JelGnPh99kTGn0D8QPI1IjOD7PkmZbaIJxqduk7iSj95S06L1dT0BK755tuBE9kNkUdDvpNakJBkG4AeSZKydWl0AUi+49UB2I9yEYsBgb3A6Cvqw/s6MHkU+Fi8Sdj5GfWYyQzUrgDqVqqtCQBw/oeAZeeprQnVjWpgUN2onlt6FmJffhozE2FMj4cwMxFGcDqC4N8OITQdQXDqCgSnI/F/qz/DoQOIhPYiEo4hEooiEppEJDSGWHRhH2lSfHyBpFO7PSSdpHYZSEnHJMSPZ0kX/wkpno80m2/iORL/lFJ/Twpz09ecUPPMcV1KHtJsijzPI2VcSCdEiet7IU/PdwoVWzHHchUSLKTf9DVynnOQJKkleZqkEEKJf1BbALiT0wohggCCSdcWULyTUHAC2Ps4EA0D530Q8O8CfmZVzxlrgcb1QMN6IBoB9BXAx/qA6gb1kSQSjmKi4nyMG87E+KEZjHmnMeGbwNSYF1NjYUyNhzAzHsr6pavCqIOpqgLGagNMVXoYqwyoNhtRYdKjwqiHwahDhVGPCoMeFUZd/KGPP3TQV+ig1+ug00uJh75C+332uJZG4kBEIqITYmxsDPh6cfI6ltkQG5JbC/LNhpAkSQbghzpOwZN2bMlcMyROydkQ/t3As38APA8D+58CYhFg/eXAJ28HYlFg+EFg+XmAeXXG15RwMArfoUn4Dk7Ae3ASvgMT8B2cxGQgqX9NAmrqTahrMKGm3oQqsxHVZiOq6tSf1WYjKmsMMNVUwFhVAb0+tY+YiIhODSWZDRHXBcAGoBdITItMjFWIj09o0dZhiLcidKd1RbQB6D+WqZQnnWgE8DwE7HoIWHER8MaPAoEDwBO/AM54B/D+/wYs7wYaz1LT6/TA2TYAQHAqjNG94xjZM46RPWMY3TeBsaPTiA/gh3lpFRpPq8F5b12F+mXVqGusRF1DJWqXmKCvYABARETFc6wrOGo3/+bkmQ3xwYt2IcT6pGMy1ABB05hrNkSW5zo5WxYiQeDJHuDx/1EHIZrXAJdtBt7+/9RxCQCgS72hi5jAyN5x7HnBiz0veDGyZwwQgMGkx7J1dVi2rg6Nq2vRuLoGS1bWwGDiAkhERJQb94ZY7F6+G+j7JGD9JND0WWDlG7KOfApOR7DvRR/2PH8Ue3Z6MT0ehrGqAmvPb8C6Cxuw0lKPJSuq2c9PREQFY7CwWETDasvB5ChwZCfgHQZs31Onb/l3AQ2ZS1NMBoLwPD2K4adHcOi1AGIxgYbTanDGxY04/aKlWGkxQ8dxBEREtEClHLNAmn07gN9+EIgmDS484x1AcFxdxyAtUJiZDGPHXbvwwsMHAABrzl+Cd1xzNtZd1AhzY9WJLDkREVFBGCwUSpvGuKYJuPI6oO40oGYpUL9G/ZmePBrDzkcO4Kk/70IsJnDZ35+JC9+xGpU13NGRiIhODgwWChGNAL+9Erjww8CbPw9YP5U7aTSGXc8cxVN/9sB/ZArnv3UV3vT3FtTUm3JeQ0REtBgxWMjmsZ8Aex4H3vsDYOnZs8f/9lN1bYT3/iDrZYHRKQy7R7H/FT8Ova4gEoph7QUN2PjZC7FsHbe5ICKik1N5Bwvjh9Ulk5PtfQJwfVddUvm3HwLaH1bT+DzAww7gLV8C1l6WckksGsPf/jiMZx/YhwqjHqedJaP5yjOx7sIGLF3DIIGIiE5u5RssPN8PbL8W+NfnUqc11q8F3v1vahfDlvcAd3xR3YHxT/8C1CwH3t2Zko0QAttvegmv7RjBWz68Hhe/ew0MRq6BQEREp46yDRZEdSPu9HwWVb94HO/90ltnT9SvBt4dXzPqo79Td2AUUaBuFfCebwPGmpR8dj5yAK8+eQTv/dyFOLtpxQl8BURERCdGeQYLf70Ooy+8hv2hTcDzM3j7WAjVZqO6TsLO24HL2oBKM7B6w+w1Lb/OyMZ3aBKP9r+Oi961moECERGdsspz9Z8jL2J0rD7x6+jecfUfr90PPNwN6I0pyYUQSF+8KhqO4f5f74S5sRJv/chZx73IREREpVKeLQvjh+CPWmGunkAwqMfo3jGcflEjsPtRYE0zYKhMJPUfnsRffvU8psZCuPS963DJxnXQ6SQ81v8a/Icn0fqtJo5RICKiU1p5BgtjBzEVa0DdqhWo0+kwum9C3eBp96PAmz6fSCaEwMBvX0I0KnBW0wo8+ScPXn3qCGpkE/a96MO7/vFcznYgIqJTXvkFC0IA44cxFalF9coamGoMOPiaAozsBGYU4Iy3J5Ie9oxhZPcY/u7Lb8S6CxtxwdtWYcfduxGcCuO9/3whzm7mOAUiIjr1lWewcM0tmLrZhMY6I8z7+/HSkTchpm+E7rJ2tRsi7tUnD6O2wYS15zcAAJafbsaVX3xDqUpORERUEuU3wFGnA862YWpCoLreCDn2OqJRCRPSauCD3YnxCkII7NnpxZlvWMYtoomIqKyVX7Cg7EX0gR8jOBVBtdkIef2Z6uG/3gbMBBLJAqPTGPfOYO35S0pVUiIiokWh/IKFo69h6sFfAACqzSbUvflq6BCG8re7gUgwkeywRw0cTjtbLkUpiYiIFo3yCxZmApiJqWssVNUZoDvtYtQ3GqCc/2Wgdnki2ZFdY5BXVMNUza2kiYiovJXfAMeZAIKiFgBgrFJfvrxmKQITsZRkI7vHsOJM8wkvHhER0WJTli0LoYpGAICxMh4sLK+GMjKVSBIJR3F0/wRWnMFggYiIqPxaFhrXI3xaDBgBjFXqyovyimqMeWcQDcegN+hwdN8EYlHBlgUiIiKUY8vC+X+H0HmboNNL0FeoL19eUQ0IdQYEoI5X0Bt0aFxTW8qSEhERLQrlFywEDiAUCMBYVQFJUtdPkFdUA0CiK+KwJ4Dlp9dBry+/6iEiIkpXfnfDu/4fQjvvh7FydvOnqjoDjJV6KEdmg4WVZ9bnyoGIiKislF+wMBNACDWJmRAAIEkS5BXqIMdx3wwm/EGsXM9ggYiICCjXYCFWnZgJoalfXg3lyBQODSsAgJUWBgtERERAuQYLoiqlGwIAlq6pxejecby2YwTL1tWh2mwsUQGJiIgWl/ILFkJTCEVMMKS1LJzxhqWIhGLY/dxRnLVheY6LiYiIyk/5BQvf2oOQcXnKmAUAaFhVg6YPnoHTL27ERe9cXaLCERERLT7ltyiTJCE0E4WpSp9x6k1/bylBgYiIiBa38mpZ8O8Bet6J8ORMRjcEERERZVdewcLUUeDQswgFRcZsCCIiIsquvIKFmQCiogLR6Oy+EERERJRf2QULIVEFAGxZICIimqfyCham/QgKdXMop+cPJS4MERHRyaG8ggXLuxF497UAgPsP3oud3p0ZSSbDk9g3tu9El4yIiGjRKq9gocEC4xnvBwDojBIeP/h4ymkhBL60/Ut4YN8DpSgdERHRolReHfcv34Phl0YBrMX5K8/Bk4eexOcu/lzi9LAyjKEjQ/jk+Z9EOBrGvol9sNSfemsvCCEQEzHoJB0kSUI4FkYkFoEQAgLqOQGRSCcgUGuohVFvxERoAtORaSyrXgYAODRxCJFYJO/zralbA0mScGTyCCp0FWisakQ4GsbhycN5rzNVmLC8ejliIoYD4wfQWNWIakM1xkJjCMwE8l5bX1kPs9GMqfAUvNNenFZ7GvQ6PUamRhCMBPNeu6JmBYx6I7zTXoRjYaysWQkAc7Y46XQ6rK5VF/Q6OHEQNYYa1JvqMR2ZxtGpo3mvrTZUp9TLsuplqKyohH/Gj/HQeN5rG6saUWOoSdTLWvNaAOr/TTgWznvt6trViXqRIGFZ9TJEYhEcnDiY9zqj3piol71je7GkcgnqjHWYCE3AN+PLe63ZaIZcKWM6Mo3RqVGsql0Fg86Ao9NHMRWeynvt8urliXqZjkzjtNrTAAD7xvdBCJHzOglSSr2YKkxoqGxAMBrEkckjeZ+zqqIqpV6WVi1FtaEagWAAgWD+92F6vaytWwtJknB48jBC0VDea5PrJRqLYkXNCsREDPvH9+e9rkJXkVIvZqMZ9aZ6TIWncHQ6//uw1libUi8ra1Ym/hYmw5N5r02ul/HQONbUrQEAHJg4gGgsmvfa5Hqp0FVgadVShKNhHJo8lPc6k96UUi/JfwvKjJL32npTfUq9JP8tzERm8l6bXC/JnxF7x/bmvU4n6VLqpaaiJvG3MDI1kvfaGkNNol4OTh7EiuoVqKyohG/Gl/MzYnws/2dHIcorWHj6Zvz2kBGX4tO4eNVF+PVrvYjGotDr1JkRD+1/CFUVVXj7mrfDscOBRw88irs/fHfiPADc+tKt+PXzv8Z0dBot57Tgaxu+lvE0f3r9T9jp3YnpyHTipqw9JEgIRoPoaO5AvakeP3/m55gITcB+mR1T4Sl89O6Ppt60027ga+vW4jfv+w0A4Mo/XolPXvBJfPS8j+LBvQ/i249+GzHEMq7Xjn3svI/Bfpkdzx19Dp+45xO47e9vwzlLzsF/PvGfuO212/JW3S+u+AXeseYduPnFm9H/aj+2b9oOAPjUvZ+a86b/7KeehQQJ33j4Gzij/gz84G0/wL7xfbjqT1flve7Nq96MLe/dgpnIDD54+wfxo3f+CO8/8/340+t/QveO7rzXfn3D1/GZiz6Dxw4+hq899DU89rHHYDaa8d2/fRePHXgs77Vavfzs6Z/hVf+ruPXKWwEAV95+JQRy35CWVS3DA5vUVqlP3/tpXLX+KvzLpf+Cp0eeRrurPe9zXn3W1Sn1ctMHbsKlyy/Fr5//Nba+uDXvtcn18rOnf4anPv4UAOCL27+I15XX816bXC9V+irc8J4b4Jvx4crbr8x73cVLL07Uy4du/xC+85bvoPWcVrj2uPDdv30377Xtb2hPqZf7P3I/VtWuwn8/9d+4b/d9ea9NrpdHDjyCO6++EwBwzZ+vwXg49wdjVUVVSr28edWbYb/Mjld8r+Dj93w873Pa1tlS6kX7W7j15Vvxi2d+kffa777luyn1ov0tfPPhb+KZ0WfyXptcL4FgIPG3MNf/zZn1Z6bUS9sb2lL+FvL5xPmfSKmX5L+F+X5G3PryrXC+4kz8LXzm3s/M+zPimw9/85g/I668/cqSf0Z86PYPzfsz4jP3fqYonxG/ef43OT8jotP5g7RCSPmi8VKTJMkMIBAIBGA2mxee4W/ej8cn3wr3zrfD+u/VaNu+GXdcdQfWy+sBAB+/5+NYXrUcN7znBuwb34dgJIizlpyVuPy3L/wW1w1dh6vPuhqralZhZc1K/MPZ/4Cd3p249m/XYusHtqKqogpfeeAr2De+D9WGauglPWIilvKorKjEj9/1YyyvXo4/vPwHTEem8U8X/RNC0RBudN8IHXSJb/1agKH9e4lpCf7x/H8EAGzduRWXLL8Eb1z2RuwO7MZD+x6CJEmQIKVcr4P677OXnI1Ll18K34wPD+97GJevuxz1pno8N/oc9o3vS1yjXa+DDpAAHXS4eNnFWFq1FHvH9uLw5GFctuoyAMAzI88gFA1BkqSc1d60ogmSJOFF74uorKiEpd6CqfBU1jEjycxGM85tOBfRWBTuETcs9RY0VjXi8ORh7BvP/y1/bd1arKxZCd+MD8PKMC5dfikqdBV4xfcKxkJjea+9sPFCVBuqsSuwC1ORKVzYeCEAYMfhHXmvM+gMuGT5JQDUellatRRr6tYgEAzgVf+rea9trGpMqZfzGs5DnbEO+8b24fBU/g/a5Ho5MHEAG1ZsAAC8cPQFTEem816bXC86SYezl5yNUDSEZ0efzXtdtaE6pV5ON5+O5dXLMTo1it1ju/Neu6pmVUq9vGHZG2DSm/C6/3X4g/681ybXixJUcPGyiwEA7iNuREXuD0adpEupF7PRjHXmdZgITeAl30t5n1M2ySn1crZ8NuRKGQcmDszZApNeL8l/C3N9U0+ul6iIpvwt5FOpr0ypl9NqT0v5W8hnRfWKlHrR/hZ2B3ZjdHo077XnLDkH9aZ6HJg4gNGp0cTfwrOjz87ZiqLVy0vel1BZUYkz6888KT4jdgd2YyoyhQsaLwBQ2GfEs6PPYmnVUqyuXT2vz4ilVUtT6mU+nxET4xO4/JzLAaBeCJH/Rc2hvIKF/7kMz+s+jUd3XoBP3NCEt/3+bfjB236Aq866Ckenj+LybZfjh2//If5+/d8nLonEIoiJGO7ZdQ++89h38LmLP4d/tf5rSrbPjz6PPw3/CZsv3owVNSsghMh78yQiIjrexsbGUF9fDxQhWCirbogHowE8FfSh0aRHnbEOZ9SfgeePPo+rzroKD+97GJIk4R2r35FIH46Fcc1d1yAcDWPP2B60nNOCr1z6lYx8L152cSKSB8BAgYiITikFBwuSJHUAUOK/ykKI/B1Dmde7hBAbC33eYnh82Toc3RPDSpM6BuEbTd9AY1UjAOChfQ/hkmWXYEnlkkR6g86Ab2z4Bm566Sa0ntOKT1zwCQYCRERUdgoKFuKBAoQQvfHfbZIk9Qgh8o/MmL2+BYCt4FIWyStLTsO5R9bAEFSDhXeueScAYCo8hccPPY4vX/rljGveuvqteOvqt57QchIRES0mha6z0AmgV/tFCDEAoG0+F0qSJANoKPD5iiYy5cWrvpexRNcIQ7xlISZi2PLcFjy8/2G0nNOCy9ddXqriERERLVrzblmQJMkCtdtByXLOFg8c8tkEYBuAnjzPYQJgSjpUBwC33PcvqKwyQADqo7oRYulZEOEpiIPP4t2163CeaSl2zozi4ck9+OLfqdNI+rbbcWjyIAQEDigeTIgpNOobYahUgwWdpMPD+x/GpnM34VuXfWu+VUFERFRWCumGyLU6kQJAznehJEk2AHMFE4DacvG99IO/Hd0BQ5UOEgBJAFKFCdLok5BEDNKUD+uGH8Z502HsrjLg9roqfDF+3eP7H8LLkXH1OgAt8rmomTADptlxB70be1FtqJ5H0YiIiMpTMWZD+DB394IshPDEuyLy6QJwfdLvdQD2D3ziyXlNnbwy/tDc+OknM9LccYMb1ebZxgsGCkRERPkVI1jIGyhIktSmDYicixAiCCCxFu/xmHkQnonCsEw/d0IiIiICUNgAR0+O43Kuc5IkWQEMFlim4yocjCYGOBIREdHc5t2yEO9GUCRJsgghPGnnco1HaABgjY9ZAID1QGIKpkcI0X8shV4IBgtERESFKbQbogvqOgnaOgstSJpKGZ8x0aIt1BQPIgaSzlsBtBW6kFMxMVggIiIqTEHrLMRv8rIkSS3xQKE5bUEmG4CsCzTF03fG/+1Iam04oRgsEBERFabgAY5prQL9aed6kdTSkHauPz39iRaNxBCLisQ6C0RERDS3QldwPKmFg+oWtmxZICIimj8GC0RERJRXeQULM1qwUFY7cxMRES1IeQULbFkgIiIqWJkFCxEADBaIiIgKUWbBAlsWiIiICsVggYiIiPIqq2AhOBWBTi+hwlhWL5uIiGhByuquGZwKw1RjOC67WRIREZ2qyipYmJmMoLKa0yaJiIgKUVbBQnAyjMoaQ6mLQUREdFIpq2BhZioCE4MFIiKigpRVsBCcDLMbgoiIqEBlFSzMTIbZskBERFSgsgoWglMRVNawZYGIiKgQZRMsiJhQWxaq2bJARERUiLIJFiaUIGJRgbrGylIXhYiI6KRSNsFCYGQKAFC/rKrEJSEiIjq5nBQd+Hf+9GlUV9YuKI+x0WlU1RlQv7y6SKUiIiIqDydFsFDXUIWaqoW1CJiXVuHcy1ZCp+NSz0RERAURQizaBwAzABEIBAQtTCwaFdGZGRGLxYQQQkT8fhE+ejRxfubVV0XY51PPKYqYevZZEQuF1HPDHjG9c2ci7cRjj4ngvn1CCCHCR4+KwH33iejkpBBCiKnnXxDjjzySSBu4/34x/coralqvVyh33CEi8f/PqedfEIH7759Ne+99Yuq55xPl823blijj1PMvCOXOO2fT/uUvYnJwUE07Nia8t9wiQocOqWlfeEH4+vqS0t4rJv72NyGEENHJSeG9+ZZE+adffkV4f/e7RNqxgQEx/shf1ToLBtW0u3ap9fD668J78y0iFomoaR98UIw98ICaNhYT3ptvETOvvy6EECK4e7fw3nSziAaDQgghxh/5a8pr9f7ud2L65ZfVtPv2q2knJtT6ffxxEbjnnkRaX1+fmHr+BSGEEKHDh4X3ppsTdTj51FNCufPPibT+/tvE1DPPqPU9Oiq8N90swl6vmnbILfx/vD2RVvnTn2br0O8X3ptuFqEjR9Q6fO454Xc6Z9PedZeYePwJNe34uJr2wAG1DnfuFL7f/362vu+9T4z/9VG1vqenhXfrTSK4d6+a9pVXhHfrTbP17XKJ8YceUuswHBberTeJmWGPWt/Dw8K79SYRC4dn63tgYLYOt96UeG8F9+wR3q03iej0tFrff31UBO69b7YOb71VTL/4olqH+/cL79abRGR8tr6Vu+5Kre/nnovX9xE1rd+v1uGOHUK5447Z+r7tj2JyyK3W99Gjwrv1psR7dtLtFv7+/pT6nnjySbUOFUV4t24VocOHE/Xt+/0fUutbe89OTAjv1q0iuG+/Wocvvii8N9+SWt/xv7nozIyadvdutQ5ffVV4t25N/N2PDQzMvmcjEeHdujXxnp0Z9qhptffsQw+lvmdvunn2Pbt3r/Bu3SqiU1Nq2kcfTX3P3nqrmHoh/p49eFB4t24VkbGxeH0/kfKe9W3blnjPho4cEd6tWxOfRZODgynvWf8fbxeTQ0Nqfft8atqREbUOn35a+LZtm63DO+8UE0/E63tsTK3vgwfVtM+/kPqeveceMf5o/D07ORmvb+0z4mXhvenm2bT33SfGH35YrcNgUK1DT/w9+9prah1qnxHbHxBj27eraWMxNe2rr6p1uGuXWoeJz4hHUt6z3ptvEdMvvaSm3bdfTat9Rjz2mAjcffdsHf7+D4nPztChQ2p9K4oIBAICgABgFgu8H5fNmIWThQiHEfF6E79PDQ5i6umnAQCx6WmMXHcdZl55BQAw+be/Yd/nv6AFVjj0ve/j0Pe/r6YNhfBK82UI3HU3AGDsnr/glTdeAjE9rab9/rU4+M2OxPN4rv4wxu+7T33OoSHs3nQNomNjAADvli04/IMfJtLu/8q/Yvx+FwAg+OqrOPCVf0XE5wMABP54G0auvyGR9sh//ADjAwMAgPDevTho/xYiR46oZfrLPRj98XWJtCPXXYfx+9UyhI+M4PB3vovw/v0AgImHH8LIddcn0np7t2DsXjVtVFEw8t8OhPbsVcu/YwdGf/qzRFr/736Hsb/cq9bL5CRGfvQjhIaHAQDTzzyD0aR8/du2IfDnO+N1GMbIj36EmZfV+p7ZuRMjP/oREIupr/X2OxD44+3x/ziBkR/9CNPPP6+mfeUVjPz4xxDBoPpa77oLSt+2xPOM3nAjpt1uAEBo1y6M/PjHiE5Mqmnvuw/+392aSHv0f36OqaeeUutl3z41rd8PABh/4EH4fvvb2bS9PZh47DE17eEjGPnxjxEZHQUATD76KLz/+7+zdfib/8PEQw8DACI+H0auuw6RgwfVtE88gaO//NVsvdzyu8T/Y2xsDCPXXYfQnj1qfQ+5U+pb6fsDxu+L1/f0NEauvx7B119X6+W55zByw+z7Q/nj7Qjc+We1CiMRNe3LL6lpX3oJI9dfDxFVt5Yfu/PPULT6BjBy/fWYidd38PXXMXL99YjF399j9/4FSl/fbH3/7H8wpdX33r0YueEGxMbV9/f4wPaU+vb29M7W98EDGLnhBkR8an1PPPwIvFu3zqb99a8xGa/vyOiomjb+/p58/HF4//fXibS+m27G5COPAACifj9Gbrgx8f6e2jGIoz09s/Xy+z9g3KXWd3RiEiM33IjQnt0A1Pfs0Z8l1Xd/f+L9LWZmMHLDjQi+9pqadudOjNxwYyJt4I4/YezPan0jGsXIDTdi5kW1voOvvoKRG26ECIfVOrznHgRu++NsHf7kJ5h+7jm1Dj0ejNxwI2KT6nt2/L774U9+f//iF5geGorX9z6M3HAjogG1vicefBD+W26ZrcPeLZh84km1Dg8fVtMePaqm/etfU97fvv/7P0z89a9J9X0jwocPq/X9xJPwbpl9f/tuvgUTDz6ovtRAQK3DffvUehkaxNFf/DKR1v+HvsRnWmxqSk3r8ahpn30Woz/96Wwd/vF2jN19j5o2FFbr+5VXAcTfszfcOPsZceedCNzxJ/VCIeL1/aKa9rXX1PrWPiPu+QuU2/pn6/BnP8P0M8+odbh7t1ovWn0PDMD/+z8k0h791a8wNTgIAAjv36+mVRQUk6TdaBYjSZLMAAKBQABms7nUxSmasfvuh67ShNp3vQsRvx/7P/8FLP/G11Hd3AzfrbfiyH/+F8574XlIkoS9//w56GpqsOanP0Fsehqeq67Gym//G2rf9S5MPv44fDffgjU/uRGSwQDltj8COh3kD18NEYvB93+/Re073wHT2WcjtP8Apt1DML///ZCMRsy89BJEJIqqiy8CoP5BGFavRsXSpYiOjyN88CBMFgskgwGR0VGIaBSGlSsBAOEjR6CrqYW+tgYiHEZschK6ujpIej1ioRAQjUIX7zaKzcxA0ushGQwQsRhEJAKpogKSTqfeBGIxSAZ1OquIRgFJUs8Jwd1BiYgWYGxsDPX19QBQL4QYW0heZRksxEIh7P2nz6K6uQnL/9//K1q+GhEKYfyBB1B50UUwrlmDwN1348h/deHsRx6GpNdj3xe+CH19PU777y6IUAiHvvd9LPn4x1F10YUI7d+P4GuvofZd74Kk0yE6Pg7JZILOaCx6OYmI6NTFYKEIJp94AsFXX0XDpz51TNdHx8Yw/fzzqHnLWyDpdIlmn1XXfh8iHMbLl1qx8nvfxZLWVsy88iomHnkYDZ/8JHSVlfzWTEREx10xg4WTYjbE8VDz5jej5s1vLuia2OQkopOTMCxfjim3G/s//wWc9eADMKxaBePaNYg1LAEASAYDzvnbY9DHA5zKc89B5bnnJPJhoEBERCeTshzguPsfPw6/04nQ/gMYc7lSzsWCQcy8pA74ifj9OPD1byC0Vx04t+cz/4SR/3YAAGqam7H+vntRsXw5AEBuaUHDpz+dyEd/Co2xICKi8lZ2LQsiFkP1Zc0wrl2L8Xv/Au+W/0Xde94DqUKtCt9vt8L3f/+Hsx7YjsjICIK7PInBeiu+ZU8M8tPV1MBYU1Oy10FERHSilO2YBQDq4EG9Hrrq2VUdY9PT6liEyy4r+vMRERGdKMUcs1B23RARnw/B11+HiMWgr6uDrro6sU6BCIWgq6pioEBERJSk7IKFsb/8BZ4P/8Ps7/fdj10f+QhCe/fitfdcnljYgoiIiFRlN2bB/MEPouriiyHp1DjJuG4tai57EySjEfVXXwXTeeeXuIRERESLS1mPWSAiIjpVcczCAvhuugnj8fXCiYiIaG5lFyxM/PXRxEYeRERENLeyG7OwbktvqYtARER0Uim7lgUiIiIqTFkFCzMvvYTXbRsR3LWr1EUhIiI6aZRVsKCrq4P5A+9HRUNDqYtCRER00uDUSSIiolMQp04eo+DwMEL79pW6GERERCeVgmdDSJLUAUCJ/yoLIbrnSC8D2BT/dT0AC4DNQggl1zXHy8iPfgwIgbU9vzrRT01ERHTSKihYiAcKEEL0xn+3SZLUI4Roz3OZA4BDCOGJX9MDwAlg47EV+ditvPZaiJnpE/20REREJ7VCuyE6ASQWKhBCDABom+MaC4CWpN+HATQV+LxFYVixHMbTTy/FUxMREZ205h0sSJJkgdrtoGQ5Z8t1nRBiY1pXRTOAgUIKGR2bHZcR8fsRnZhQ845EED50CLFgMJEutP9AIm34wAGER0YAADMvv4xD116LiN9fyFMTERGVvUJaFiw5jisA5PlkIElSSzzt5hznTZIkmbUHgDoA2P3RjyXS7P3UpzD6k58CAML79+P191yO6WefBQD4+/qw+yMfSaTd/9Wv4ejPfgYA0NXWYfKvj0JfUzOfohIREVFcMZZ79gHIu3BB0iBHGYAzz+DGTgDfSz+44tv/Nvvvf/8O9EtkAEDFihVYu2ULKs85BwBQ/8EPovrSSxNpV/3HtdBVVgIADMuX4cw/3gbJaJzXiyIiIiLVvNdZiHc1uIQQUtpxPwC7NuhxHvm0QR30eGZ60CBJkgmAKelQHYD9XGeBiIioMKVaZ8GT47ic65wkSbIkSY54y4JmIH5NxjgHIURQCDGmPQCMF1A+IiIiOg7mHSzEpz4q8YGO6edyDVi0AOhAajeFHP+pzPe5iYiIqHQKnTrZhaQWgfiAxd6k3y3aWgwAIIRwA+jW1liIuwaAO0+AQURERItIQQMchRDdkiR1xIMEAGhOW5DJBqAdQPJUya7kAAJqy8IVx1JYIiIiOvG4kRQREdEpiBtJERER0QnDYIGIiIjyYrBAREREeTFYICIiorwYLBAREVFexdgb4rgbG1vQIE4iIqKyU8x752IPFhoAYO3ataUuBxER0cmqAcCCIofFHiz44j/XgPtEnCh1APaDdX4isc5PPNb5icc6P/G0OvfNlXAuiz1Y0IwvdEEJmh9JSmwqyjo/QVjnJx7r/MRjnZ94SXW+YBzgSERERHkxWCAiIqK8FnuwEARwbfwnnRis8xOPdX7isc5PPNb5iVe0Ol/UG0kRERFR6S32lgUiIiIqMQYLRERElBeDBSIiIsqLwQIRERHltWgXZZIkqQOAEv9VFkJ0l7A4pxxJkmQAmwC0CiE2ZjnP+j8O4vUKAOsBQAjRnuW8Ev+V9b5ASe9zQK1zC4DNQgglKQ3r/DiSJMmV/hnDOi8uSZJsANoBuAB4AGwEsEMI0Z+UZkF1vihbFrQPVCFErxCiF4BbkqSeEhfrlCFJkhXqB6iM+P4baedZ/8eBJEkOIUR3/NEeP+ZKOs96Lz4HgIF4ndqhLnvr1E6yzo8vSZJaANjSjrHOi0+GWs898cdwlkBhQXW+KKdOSpLkB3BmWvQvhBDFW7uStD/kTiHEhrTjrP8ii3/DdUJtyVHix6wAhgCsF0J4WO/FFw/GXNq3qPiHZqcQYkn8d9b5cZLUqtOTXJ+s8+KLf5YPJNdp2vkF1/mia1mQJMkCtYlEyXLOlnkFFRPr/7hqgtoMrvHEf8qs9+NDCLExrbm1GcAAwPf6CbAJwLbkA6zzE69Ydb4YxyxYchxXoDa10PHF+j8O4n+oS9IOa3+oHqiBRDYKWO9FEf/2JQNojR/ie/04id+EBrKcYp0fP5skSfJB7VpeH+92A4pU54sxWMhFqwQqDdZ/8XUCaBdCKHl2h2O9L1BSc7gMwJmrqTYJ63zh5HjXmjzP9KzzhXEDgBDCAwCSJLVJkuQUQrTmuaagOj+ZggW+kUqL9V9EkiQ5APTFBxvlw3pfoHhw0AskPkT9AM7McwnrfAEkSWqbx/s6Het8AbQgIck2AD1zBGsF1fmiG7OA2X7cdHKec1Q8rP/jLN4cPpzWl856LzJJkmRJkhxpH5gDmB05zjovsvig3cE8SVjnx0H8MyUhqfXMgiLV+aILFuIRkhIflJF+LlsfGBUR6//40gYUad+84jc0C+v9uLAA6EDqNyg5/lNhnR8XDQBskiR1xGeeOAB1FookSS2s8+LTZlol12lSgOwpVp0vumAhrgtJc3PjUVOhzVo0t1zNUKz/4yD+rcsKdY6zJf7H2wa17xBgvReVEMINoDutifYaAO6kD0nWeREJIQaS1hLphjrnH/HftXn/rPMiircipL/P2wD0J7UwLLjOF+U6C0BiPrT24puTRnbSAsVvUi1QPzitALqRfbUv1n+RxCP9Xcgy+jhtDjrrvYji9d6WdGg9AHuWFRxZ50UWvyFdA/WzphvqehfatFXWeRFleZ83ptfpQut80QYLREREtDgs1m4IIiIiWiQYLBAREVFeDBaIiIgoLwYLRERElBeDBSIiIsqLwQIRERHlxWCBiIiI8mKwQERERHkxWCCikpEkqSf+kPOkaYunacmVhoiOr5Npi2oimkN8Ke8hqLsraku7tgBQAPQBaER8jXghxIYSFDEhHiAocy07m7TplgNAf760RHR8MFggOrXIALqSt7+OfyMfSDvmSvq3A4BFCNF6IgtKRCcPBgtEp5YGZO4mp2RJ50z6twtZNrgiItIwWCA6tcjJOyrm4ZEkSRZCKIXsaU9E5YnBAtEpJHmb8TnSaVsFWwFo3RDr48ds8WMAsBmABWqLxQYhRLskSW0AfFC3H+4SQriT807aCtcCwDPfMsWvbYtfK8evV7QxC0RUOgwWiMqYEMItSZIdSd0SQoiB+LEeAA3azV6SpGFJkhzagERJkgBgC4DEQElJkpwA+pKucUmS5EkPKLLRZjskBTIWxAdjElFpceokEWXjg9rakNxF4UlL44b67R9A4ubektaS4ATQXsDztmrTKIUQHgCDhRSaiI4PtiwQUS7pwYECYDhPehsAJd6NoVmPpIAiHyFEvyRJ7QD8kiS5obZQdM91HREdfwwWiKhYZKhjFJJbIwoaPCmE2BgfR2ED0C5JEhgwEJUeuyGIqFhSuiU0+VZnTEvXBqjjKOIBwgaogyiJqMQYLBCd+mQUZx2FvHnEWxQGsyzLvGm++WsBQ5L0rhAiKgF2QxCdouJTGBuhftu3aVMakwcgxpv8OwFYJEnqEEJ05zjWAaApfo0H6gDITqg3eAfUKZRKvBvBIUlSQzwNCpj6qMTz14INC9Spm0RUYpIQotRlIKIyFO+e6Jxrb4ik9I75piWi4mI3BBEREeXFYIGIiIjyYrBARKXUIklST74ZE5IktcVXhiSiEuGYBSIiIsqLLQtERESUF4MFIiIiyovBAhEREeXFYIGIiIjyYrBAREREeTFYICIiorwYLBAREVFeDBaIiIgor/8PjkSvPxVYpSEAAAAASUVORK5CYII=\n",
+      "text/plain": [
+       "<Figure size 600x400 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "(<Figure size 600x400 with 1 Axes>, <AxesSubplot:xlabel='Time [s]'>)"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ssa.TDS.plt.plot(ssa.GENROU.Pe)"
+   ]
+  }
+ ],
+ "metadata": {
+  "interpreter": {
+   "hash": "9e82087c6c724a796d11bbbca032c2fea9f2a8500ea883496f2915648d5c9903"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/docs/source/examples/pypowsybl.ipynb b/docs/source/examples/pypowsybl.ipynb
new file mode 100755
index 000000000..c8d9bad24
--- /dev/null
+++ b/docs/source/examples/pypowsybl.ipynb
@@ -0,0 +1,220 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "ba935880",
+   "metadata": {},
+   "source": [
+    "# pypowsybl Interface"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4dbfd3fd",
+   "metadata": {},
+   "source": [
+    "\"PowSyBl (Power System Blocks) is an open source framework written in Java, dedicated to electrical grid modelling and simulation, licensed under the Mozilla Public License version 2.0. It is part of LF Energy, an open source foundation focused on the power systems sector, hosted within The Linux Foundation.\"\n",
+    "\n",
+    "``pypowsybl`` is the Python interface to PowSybl. For more information, please visit:\n",
+    "\n",
+    "<https://www.powsybl.org/pages/overview/>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f40a409b",
+   "metadata": {},
+   "source": [
+    "ANDES provides a simple interface to `pypowsybl`. The main goal is to leverage `pypowsybl` for drawing single-line diagrams and area diagrams for systems loaded in ANDES."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1144fcff",
+   "metadata": {},
+   "source": [
+    "## Imports"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "c44737ca",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import andes\n",
+    "import pypowsybl as pp\n",
+    "\n",
+    "from andes.interop.pypowsybl import to_pypowsybl"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "aa846e2e",
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [],
+   "source": [
+    "ss = andes.load(andes.get_case(\"ieee14/ieee14_linetrip.xlsx\"))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "29fde89e",
+   "metadata": {},
+   "source": [
+    "## Conversion"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f426e6a0",
+   "metadata": {},
+   "source": [
+    "Convert to a pypowsybl network:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "50741aff",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "n = to_pypowsybl(ss)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "52b32e43",
+   "metadata": {},
+   "source": [
+    "Run power flow in pypowsybl:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "29cd4a5a",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "results = pp.loadflow.run_ac(n)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f54ea0a3",
+   "metadata": {},
+   "source": [
+    "## Diagrams"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1c75f33d",
+   "metadata": {},
+   "source": [
+    "`pypowsybl` provides two functions to draw diagrams:\n",
+    "- `get_network_area_diagram(VOLTAGE_LEVEL_ID = None, DEPTH = 0)`\n",
+    "- `get_single_line_diagram(CONTAINER_ID)`\n",
+    "\n",
+    "These function names are self explanatory. To draw the diagram for the whole network, do"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "6f7e0071",
+   "metadata": {
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"620.54\" height=\"600.00\" viewBox=\"-8.76 -9.98 22.20 21.47\" xmlns=\"http://www.w3.org/2000/svg\">\n    <style><![CDATA[\n.nad-branch-edges polyline, .nad-branch-edges path {stroke: var(--nad-vl-color, lightgrey); stroke-width: 0.05; fill: none}\n.nad-branch-edges circle {stroke: var(--nad-vl-color, lightgrey); stroke-width: 0.05; fill: white}\n.nad-3wt-edges polyline {stroke: var(--nad-vl-color, lightgrey); stroke-width: 0.05; fill: none}\n.nad-text-edges {stroke: black; stroke-width: 0.02; stroke-dasharray: .03,.05}\n.nad-branch-edges .nad-disconnected polyline {stroke-dasharray: .1,.1}\n.nad-vl-nodes circle, .nad-vl-nodes path {fill: var(--nad-vl-color, lightgrey); stroke-width: 0.05; stroke: white; stroke-linejoin:round}\n.nad-vl-nodes circle.nad-unknown-busnode {stroke: var(--nad-vl-color, #808080); stroke-dasharray: .05,.05; fill: none}\n.nad-hvdc-edge polyline.nad-hvdc {stroke: grey; stroke-width: 0.2}\n.nad-3wt-nodes circle {stroke: var(--nad-vl-color, lightgrey); stroke-width: 0.05; fill: none}\n.nad-3wt-bg circle {stroke: none; fill: white}\n.nad-state-out .nad-arrow-in {visibility: hidden}\n.nad-state-in .nad-arrow-out {visibility: hidden}\n.nad-active path {stroke: none; fill: #546e7a}\n.nad-active {visibility: visible}\n.nad-reactive {visibility: hidden}\n.nad-reactive path {stroke: none; fill: #0277bd}\n.nad-text-background {flood-color: #90a4aeaa}\n.nad-text-nodes {font: 0.25px \"Verdana\"; fill: black}\n.nad-edge-infos text {font: 0.2px \"Verdana\"; dominant-baseline:middle; stroke: #FFFFFFAA; stroke-width: 0.1; stroke-linejoin:round; paint-order: stroke}\n.nad-edge-infos .nad-state-in text {fill: #b71c1c}\n.nad-edge-infos .nad-state-out text {fill: #2e7d32}\n.nad-disconnected {--nad-vl-color: #808080}\n.nad-vl0to30-0 {--nad-vl-color: #afb42b}\n.nad-vl0to30-1 {--nad-vl-color: #e6ee9c}\n.nad-vl0to30-2 {--nad-vl-color: #d4e157}\n.nad-vl0to30-3 {--nad-vl-color: #827717}\n.nad-vl0to30-4 {--nad-vl-color: #c0ca33}\n.nad-vl0to30-5 {--nad-vl-color: #f0fc83}\n.nad-vl0to30-6 {--nad-vl-color: #9e9d24}\n.nad-vl0to30-7 {--nad-vl-color: #cddc39}\n.nad-vl0to30-8 {--nad-vl-color: #dce775}\n.nad-vl0to30-9 {--nad-vl-color: #ddfc88}\n.nad-vl30to50-0 {--nad-vl-color: #ef9a9a}\n.nad-vl30to50-1 {--nad-vl-color: #f06292}\n.nad-vl30to50-2 {--nad-vl-color: #d81b60}\n.nad-vl30to50-3 {--nad-vl-color: #c2185b}\n.nad-vl30to50-4 {--nad-vl-color: #ec407a}\n.nad-vl30to50-5 {--nad-vl-color: #880e4f}\n.nad-vl30to50-6 {--nad-vl-color: #ad1457}\n.nad-vl30to50-7 {--nad-vl-color: #e91e63}\n.nad-vl30to50-8 {--nad-vl-color: #f48fb1}\n.nad-vl30to50-9 {--nad-vl-color: #f8bbd0}\n.nad-vl50to70-0 {--nad-vl-color: #9c27b0}\n.nad-vl50to70-1 {--nad-vl-color: #512da8}\n.nad-vl50to70-2 {--nad-vl-color: #ba68c8}\n.nad-vl50to70-3 {--nad-vl-color: #7b1fa2}\n.nad-vl50to70-4 {--nad-vl-color: #ab47bc}\n.nad-vl50to70-5 {--nad-vl-color: #e1bee7}\n.nad-vl50to70-6 {--nad-vl-color: #6a1b9a}\n.nad-vl50to70-7 {--nad-vl-color: #4a148c}\n.nad-vl50to70-8 {--nad-vl-color: #ce93d8}\n.nad-vl50to70-9 {--nad-vl-color: #9575cd}\n.nad-vl70to120-0 {--nad-vl-color: #e65100}\n.nad-vl70to120-1 {--nad-vl-color: #ffb74d}\n.nad-vl70to120-2 {--nad-vl-color: #fb8c00}\n.nad-vl70to120-3 {--nad-vl-color: #f57c00}\n.nad-vl70to120-4 {--nad-vl-color: #ffa726}\n.nad-vl70to120-5 {--nad-vl-color: #ffe0b2}\n.nad-vl70to120-6 {--nad-vl-color: #ef6c00}\n.nad-vl70to120-7 {--nad-vl-color: #ff9800}\n.nad-vl70to120-8 {--nad-vl-color: #ffcc80}\n.nad-vl70to120-9 {--nad-vl-color: #fff3e0}\n.nad-vl120to180-0 {--nad-vl-color: #00ACC1}\n.nad-vl120to180-1 {--nad-vl-color: #b3e5fc}\n.nad-vl120to180-2 {--nad-vl-color: #01579b}\n.nad-vl120to180-3 {--nad-vl-color: #4fc3f7}\n.nad-vl120to180-4 {--nad-vl-color: #039be5}\n.nad-vl120to180-5 {--nad-vl-color: #0288d1}\n.nad-vl120to180-6 {--nad-vl-color: #29b6f6}\n.nad-vl120to180-7 {--nad-vl-color: #81d4fa}\n.nad-vl120to180-8 {--nad-vl-color: #0277bd}\n.nad-vl120to180-9 {--nad-vl-color: #03a9f4}\n.nad-vl180to300-0 {--nad-vl-color: #2e7d32}\n.nad-vl180to300-1 {--nad-vl-color: #c8e6c9}\n.nad-vl180to300-2 {--nad-vl-color: #558b2f}\n.nad-vl180to300-3 {--nad-vl-color: #81c784}\n.nad-vl180to300-4 {--nad-vl-color: #43a047}\n.nad-vl180to300-5 {--nad-vl-color: #a5d6a7}\n.nad-vl180to300-6 {--nad-vl-color: #388e3c}\n.nad-vl180to300-7 {--nad-vl-color: #66bb6a}\n.nad-vl180to300-8 {--nad-vl-color: #1b5e20}\n.nad-vl180to300-9 {--nad-vl-color: #4caf50}\n.nad-vl300to500-0 {--nad-vl-color: #d32f2f}\n.nad-vl300to500-1 {--nad-vl-color: #ffcdd2}\n.nad-vl300to500-2 {--nad-vl-color: #e57373}\n.nad-vl300to500-3 {--nad-vl-color: #ff8a80}\n.nad-vl300to500-4 {--nad-vl-color: #b71c1c}\n.nad-vl300to500-5 {--nad-vl-color: #ef5350}\n.nad-vl300to500-6 {--nad-vl-color: #e53935}\n.nad-vl300to500-7 {--nad-vl-color: #ef9a9a}\n.nad-vl300to500-8 {--nad-vl-color: #f44336}\n.nad-vl300to500-9 {--nad-vl-color: #c62828}\n.nad-branch-edges .nad-overload polyline, .nad-branch-edges .nad-overload path {animation: line-blink 3s infinite}\n.nad-vl-nodes .nad-overvoltage {animation: node-over-blink 3s infinite}\n.nad-vl-nodes .nad-undervoltage {animation: node-under-blink 3s infinite}\n\n@keyframes line-blink {\n  0%, 80%, 100% {stroke: var(--nad-vl-color, black); stroke-width: 0.05}\n  40% {stroke: #FFEB3B; stroke-width: 0.15}\n}\n@keyframes node-over-blink {\n  0%, 80%, 100% {stroke: white; stroke-width: 0.05}\n  40% {stroke: #ff5722; stroke-width: 0.15}\n}\n@keyframes node-under-blink {\n  0%, 80%, 100% {stroke: white; stroke-width: 0.05}\n  40% {stroke: #00BCD4; stroke-width: 0.15}\n}\n]]></style>\n    <metadata></metadata>\n    <defs>\n        <filter id=\"textBgFilter\" x=\"0\" y=\"0\" width=\"1\" height=\"1\">\n            <feFlood class=\"nad-text-background\"/>\n            <feComposite in=\"SourceGraphic\" operator=\"over\"/>\n        </filter>\n    </defs>\n    <g class=\"nad-vl-nodes\">\n        <g transform=\"translate(1.24,-7.06)\" id=\"0\">\n            <circle r=\"0.30\" id=\"1\" class=\"nad-vl50to70-0\"/>\n        </g>\n        <g transform=\"translate(-1.45,-5.20)\" id=\"2\">\n            <circle r=\"0.30\" id=\"3\" class=\"nad-vl50to70-0\"/>\n        </g>\n        <g transform=\"translate(-2.52,-7.98)\" id=\"4\">\n            <circle r=\"0.30\" id=\"5\" class=\"nad-vl50to70-0\"/>\n        </g>\n        <g transform=\"translate(1.83,-3.36)\" id=\"6\">\n            <circle r=\"0.30\" id=\"7\" class=\"nad-vl50to70-0\"/>\n        </g>\n        <g transform=\"translate(-1.29,-1.85)\" id=\"8\">\n            <circle r=\"0.30\" id=\"9\" class=\"nad-vl50to70-0\"/>\n        </g>\n        <g transform=\"translate(-3.12,5.23)\" id=\"10\">\n            <circle r=\"0.30\" id=\"11\" class=\"nad-vl120to180-0\"/>\n        </g>\n        <g transform=\"translate(6.36,-2.01)\" id=\"12\">\n            <circle r=\"0.30\" id=\"13\" class=\"nad-vl120to180-0\"/>\n        </g>\n        <g transform=\"translate(10.44,-3.62)\" id=\"14\">\n            <circle r=\"0.30\" id=\"15\" class=\"nad-vl50to70-1\"/>\n        </g>\n        <g transform=\"translate(2.79,1.11)\" id=\"16\">\n            <circle r=\"0.30\" id=\"17\" class=\"nad-vl120to180-0\"/>\n        </g>\n        <g transform=\"translate(-3.10,1.60)\" id=\"18\">\n            <circle r=\"0.30\" id=\"19\" class=\"nad-vl120to180-0\"/>\n        </g>\n        <g transform=\"translate(-6.76,3.49)\" id=\"20\">\n            <circle r=\"0.30\" id=\"21\" class=\"nad-vl120to180-0\"/>\n        </g>\n        <g transform=\"translate(-3.39,9.49)\" id=\"22\">\n            <circle r=\"0.30\" id=\"23\" class=\"nad-vl120to180-0\"/>\n        </g>\n        <g transform=\"translate(0.04,8.18)\" id=\"24\">\n            <circle r=\"0.30\" id=\"25\" class=\"nad-vl120to180-0\"/>\n        </g>\n        <g transform=\"translate(3.62,5.82)\" id=\"26\">\n            <circle r=\"0.30\" id=\"27\" class=\"nad-vl120to180-0\"/>\n        </g>\n    </g>\n    <g class=\"nad-branch-edges\">\n        <g id=\"28\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"1.02,-6.90 -0.10,-6.13\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(0.77,-6.73)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-124.59)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-34.59)\" x=\"-0.19\" style=\"text-anchor:end\">51</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(-124.59)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-34.59)\" x=\"-0.19\" style=\"text-anchor:end\">-16</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.22,-5.36 -0.10,-6.13\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-0.98,-5.53)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(55.41)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-34.59)\" x=\"0.19\">-50</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(55.41)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-34.59)\" x=\"0.19\">17</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"29\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"1.12,-6.81 -0.02,-4.46\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(0.99,-6.54)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-154.11)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-64.11)\" x=\"-0.19\" style=\"text-anchor:end\">31</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(-154.11)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-64.11)\" x=\"-0.19\" style=\"text-anchor:end\">-1</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.17,-2.10 -0.02,-4.46\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-1.04,-2.37)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(25.89)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-64.11)\" x=\"0.19\">-30</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(25.89)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-64.11)\" x=\"0.19\">3</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"30\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.54,-5.46 -1.98,-6.59\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-1.65,-5.74)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-21.05)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-291.05)\" x=\"-0.19\" style=\"text-anchor:end\">18</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-21.05)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-291.05)\" x=\"-0.19\" style=\"text-anchor:end\">6</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-2.42,-7.73 -1.98,-6.59\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-2.31,-7.45)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(158.95)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(68.95)\" x=\"0.19\">-18</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(158.95)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(68.95)\" x=\"0.19\">-6</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"31\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.21,-5.07 0.19,-4.28\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-0.95,-4.93)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(119.28)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(29.28)\" x=\"0.19\">29</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(119.28)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(29.28)\" x=\"0.19\">0</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"1.60,-3.50 0.19,-4.28\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(1.34,-3.64)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-60.72)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-330.72)\" x=\"-0.19\" style=\"text-anchor:end\">-29</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-60.72)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-330.72)\" x=\"-0.19\" style=\"text-anchor:end\">1</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"32\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.43,-4.93 -1.37,-3.53\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-1.42,-4.63)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(177.24)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(87.24)\" x=\"0.19\">21</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(177.24)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(87.24)\" x=\"0.19\">1</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.30,-2.12 -1.37,-3.53\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-1.31,-2.42)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-2.76)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-272.76)\" x=\"-0.19\" style=\"text-anchor:end\">-21</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(-2.76)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-272.76)\" x=\"-0.19\" style=\"text-anchor:end\">0</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"33\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-2.33,-7.78 -0.34,-5.67\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-2.12,-7.57)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(136.70)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(46.70)\" x=\"0.19\">8</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(136.70)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(46.70)\" x=\"0.19\">-6</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"1.65,-3.56 -0.34,-5.67\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(1.44,-3.78)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-43.30)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-313.30)\" x=\"-0.19\" style=\"text-anchor:end\">-8</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-43.30)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-313.30)\" x=\"-0.19\" style=\"text-anchor:end\">6</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"34\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"1.59,-3.25 0.27,-2.61\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(1.32,-3.12)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-115.82)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-25.82)\" x=\"-0.19\" style=\"text-anchor:end\">-36</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-115.82)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-25.82)\" x=\"-0.19\" style=\"text-anchor:end\">4</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.04,-1.97 0.27,-2.61\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-0.77,-2.10)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(64.18)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-25.82)\" x=\"0.19\">36</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(64.18)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-25.82)\" x=\"0.19\">-3</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"35\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"2.09,-3.29 4.10,-2.69\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(2.38,-3.20)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(106.67)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(16.67)\" x=\"0.19\">-1</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(106.67)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(16.67)\" x=\"0.19\">-16</text>\n                    </g>\n                </g>\n                <circle cx=\"4.00\" cy=\"-2.72\" r=\"0.20\"/>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"6.10,-2.09 4.10,-2.69\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(5.81,-2.17)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-73.33)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-343.33)\" x=\"-0.19\" style=\"text-anchor:end\">1</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-73.33)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-343.33)\" x=\"-0.19\" style=\"text-anchor:end\">16</text>\n                    </g>\n                </g>\n                <circle cx=\"4.19\" cy=\"-2.66\" r=\"0.20\"/>\n            </g>\n        </g>\n        <g id=\"36\">\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"1.89,-3.10 2.31,-1.13\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(1.95,-2.81)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(167.88)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(77.88)\" x=\"0.19\">26</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(167.88)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(77.88)\" x=\"0.19\">-5</text>\n                    </g>\n                </g>\n                <circle cx=\"2.29\" cy=\"-1.23\" r=\"0.20\"/>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"2.74,0.84 2.31,-1.13\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(2.67,0.55)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-12.12)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-282.12)\" x=\"-0.19\" style=\"text-anchor:end\">-26</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-12.12)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-282.12)\" x=\"-0.19\" style=\"text-anchor:end\">6</text>\n                    </g>\n                </g>\n                <circle cx=\"2.34\" cy=\"-1.03\" r=\"0.20\"/>\n            </g>\n        </g>\n        <g id=\"37\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-3.05,4.96 -2.20,1.69\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-2.97,4.67)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(14.49)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-75.51)\" x=\"0.19\">-8</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(14.49)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-75.51)\" x=\"0.19\">2</text>\n                    </g>\n                </g>\n                <circle cx=\"-2.23\" cy=\"1.78\" r=\"0.20\"/>\n            </g>\n            <g class=\"nad-vl50to70-0\">\n                <polyline points=\"-1.35,-1.59 -2.20,1.69\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-1.43,-1.30)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-165.51)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-75.51)\" x=\"-0.19\" style=\"text-anchor:end\">8</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(-165.51)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-75.51)\" x=\"-0.19\" style=\"text-anchor:end\">-1</text>\n                    </g>\n                </g>\n                <circle cx=\"-2.18\" cy=\"1.59\" r=\"0.20\"/>\n            </g>\n        </g>\n        <g id=\"38\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-3.36,5.11 -4.94,4.36\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-3.63,4.98)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-64.50)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-334.50)\" x=\"-0.19\" style=\"text-anchor:end\">0</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-64.50)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-334.50)\" x=\"-0.19\" style=\"text-anchor:end\">5</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-6.52,3.60 -4.94,4.36\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-6.25,3.73)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(115.50)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(25.50)\" x=\"0.19\">0</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(115.50)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(25.50)\" x=\"0.19\">-5</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"39\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-3.13,5.50 -3.26,7.36\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-3.15,5.80)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-176.25)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-86.25)\" x=\"-0.19\" style=\"text-anchor:end\">7</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-176.25)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-86.25)\" x=\"-0.19\" style=\"text-anchor:end\">2</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-3.38,9.22 -3.26,7.36\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-3.36,8.92)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(3.75)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-86.25)\" x=\"0.19\">-7</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(3.75)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-86.25)\" x=\"0.19\">-2</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"40\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-2.92,5.41 -1.54,6.70\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-2.70,5.62)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(133.11)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(43.11)\" x=\"0.19\">16</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(133.11)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(43.11)\" x=\"0.19\">4</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-0.15,8.00 -1.54,6.70\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-0.37,7.79)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-46.89)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-316.89)\" x=\"-0.19\" style=\"text-anchor:end\">-15</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(-46.89)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-316.89)\" x=\"-0.19\" style=\"text-anchor:end\">-4</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"41\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"6.15,-1.83 4.58,-0.45\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(5.93,-1.63)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-131.18)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-41.18)\" x=\"-0.19\" style=\"text-anchor:end\">34</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-131.18)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-41.18)\" x=\"-0.19\" style=\"text-anchor:end\">1</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"3.00,0.93 4.58,-0.45\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(3.22,0.73)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(48.82)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-41.18)\" x=\"0.19\">-34</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(48.82)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-41.18)\" x=\"0.19\">0</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"42\">\n            <g class=\"nad-vl50to70-1\">\n                <polyline points=\"10.19,-3.52 8.40,-2.82\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(9.91,-3.41)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-111.53)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-21.53)\" x=\"-0.19\" style=\"text-anchor:end\">35</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-111.53)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-21.53)\" x=\"-0.19\" style=\"text-anchor:end\">18</text>\n                    </g>\n                </g>\n                <circle cx=\"8.49\" cy=\"-2.85\" r=\"0.20\"/>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"6.61,-2.11 8.40,-2.82\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(6.89,-2.22)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(68.47)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-21.53)\" x=\"0.19\">-35</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(68.47)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-21.53)\" x=\"0.19\">-17</text>\n                    </g>\n                </g>\n                <circle cx=\"8.31\" cy=\"-2.78\" r=\"0.20\"/>\n            </g>\n        </g>\n        <g id=\"43\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"2.53,1.13 -0.15,1.36\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(2.23,1.15)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-94.84)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-4.84)\" x=\"-0.19\" style=\"text-anchor:end\">13</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-94.84)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-4.84)\" x=\"-0.19\" style=\"text-anchor:end\">3</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-2.83,1.58 -0.15,1.36\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-2.53,1.56)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(85.16)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-4.84)\" x=\"0.19\">-13</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(85.16)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-4.84)\" x=\"0.19\">-2</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"44\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"2.84,1.37 3.21,3.46\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(2.89,1.67)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(170.10)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(80.10)\" x=\"0.19\">18</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(170.10)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(80.10)\" x=\"0.19\">-6</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"3.57,5.55 3.21,3.46\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(3.52,5.25)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-9.90)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-279.90)\" x=\"-0.19\" style=\"text-anchor:end\">-17</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-9.90)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-279.90)\" x=\"-0.19\" style=\"text-anchor:end\">7</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"45\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-3.34,1.73 -4.93,2.55\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-3.61,1.87)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(-117.24)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-27.24)\" x=\"-0.19\" style=\"text-anchor:end\">4</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(-117.24)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-27.24)\" x=\"-0.19\" style=\"text-anchor:end\">-3</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-6.52,3.36 -4.93,2.55\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-6.25,3.23)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(62.76)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-27.24)\" x=\"0.19\">-3</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(62.76)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-27.24)\" x=\"0.19\">3</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"46\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-3.14,9.39 -1.68,8.84\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-2.86,9.29)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(69.22)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-20.78)\" x=\"0.19\">1</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(69.22)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-20.78)\" x=\"0.19\">0</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"-0.21,8.28 -1.68,8.84\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(-0.49,8.39)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-110.78)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-20.78)\" x=\"-0.19\" style=\"text-anchor:end\">-1</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(-110.78)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-20.78)\" x=\"-0.19\" style=\"text-anchor:end\">0</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n        <g id=\"47\">\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"0.27,8.03 1.83,7.00\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(0.52,7.87)\">\n                    <g class=\"nad-active nad-state-out\">\n                        <g transform=\"rotate(56.48)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-33.52)\" x=\"0.19\">3</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-in\">\n                        <g transform=\"rotate(56.48)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-33.52)\" x=\"0.19\">-2</text>\n                    </g>\n                </g>\n            </g>\n            <g class=\"nad-vl120to180-0\">\n                <polyline points=\"3.39,5.97 1.83,7.00\"/>\n                <g class=\"nad-edge-infos\" transform=\"translate(3.14,6.13)\">\n                    <g class=\"nad-active nad-state-in\">\n                        <g transform=\"rotate(-123.52)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-33.52)\" x=\"-0.19\" style=\"text-anchor:end\">-3</text>\n                    </g>\n                    <g class=\"nad-reactive nad-state-out\">\n                        <g transform=\"rotate(-123.52)\">\n                            <path class=\"nad-arrow-in\" d=\"M-0.1 -0.1 H0.1 L0 0.1z\"/>\n                            <path class=\"nad-arrow-out\" d=\"M-0.1 0.1 H0.1 L0 -0.1z\"/>\n                        </g>\n                        <text transform=\"rotate(-33.52)\" x=\"-0.19\" style=\"text-anchor:end\">2</text>\n                    </g>\n                </g>\n            </g>\n        </g>\n    </g>\n    <g class=\"nad-text-edges\">\n        <polyline id=\"0_text_edge\" points=\"1.54,-7.06 2.24,-7.06\"/>\n        <polyline id=\"2_text_edge\" points=\"-1.15,-5.20 -0.45,-5.20\"/>\n        <polyline id=\"4_text_edge\" points=\"-2.22,-7.98 -1.52,-7.98\"/>\n        <polyline id=\"6_text_edge\" points=\"2.13,-3.36 2.83,-3.36\"/>\n        <polyline id=\"8_text_edge\" points=\"-0.99,-1.85 -0.29,-1.85\"/>\n        <polyline id=\"10_text_edge\" points=\"-2.82,5.23 -2.12,5.23\"/>\n        <polyline id=\"12_text_edge\" points=\"6.66,-2.01 7.36,-2.01\"/>\n        <polyline id=\"14_text_edge\" points=\"10.74,-3.62 11.44,-3.62\"/>\n        <polyline id=\"16_text_edge\" points=\"3.09,1.11 3.79,1.11\"/>\n        <polyline id=\"18_text_edge\" points=\"-2.80,1.60 -2.10,1.60\"/>\n        <polyline id=\"20_text_edge\" points=\"-6.46,3.49 -5.76,3.49\"/>\n        <polyline id=\"22_text_edge\" points=\"-3.09,9.49 -2.39,9.49\"/>\n        <polyline id=\"24_text_edge\" points=\"0.34,8.18 1.04,8.18\"/>\n        <polyline id=\"26_text_edge\" points=\"3.92,5.82 4.62,5.82\"/>\n    </g>\n    <g class=\"nad-text-nodes\">\n        <text filter=\"url(#textBgFilter)\" x=\"2.24\" y=\"-7.06\" style=\"dominant-baseline:middle\">VL1</text>\n        <text filter=\"url(#textBgFilter)\" x=\"-0.45\" y=\"-5.20\" style=\"dominant-baseline:middle\">VL2</text>\n        <text filter=\"url(#textBgFilter)\" x=\"-1.52\" y=\"-7.98\" style=\"dominant-baseline:middle\">VL3</text>\n        <text filter=\"url(#textBgFilter)\" x=\"2.83\" y=\"-3.36\" style=\"dominant-baseline:middle\">VL4</text>\n        <text filter=\"url(#textBgFilter)\" x=\"-0.29\" y=\"-1.85\" style=\"dominant-baseline:middle\">VL5</text>\n        <text filter=\"url(#textBgFilter)\" x=\"-2.12\" y=\"5.23\" style=\"dominant-baseline:middle\">VL6</text>\n        <text filter=\"url(#textBgFilter)\" x=\"7.36\" y=\"-2.01\" style=\"dominant-baseline:middle\">VL7</text>\n        <text filter=\"url(#textBgFilter)\" x=\"11.44\" y=\"-3.62\" style=\"dominant-baseline:middle\">VL8</text>\n        <text filter=\"url(#textBgFilter)\" x=\"3.79\" y=\"1.11\" style=\"dominant-baseline:middle\">VL9</text>\n        <text filter=\"url(#textBgFilter)\" x=\"-2.10\" y=\"1.60\" style=\"dominant-baseline:middle\">VL10</text>\n        <text filter=\"url(#textBgFilter)\" x=\"-5.76\" y=\"3.49\" style=\"dominant-baseline:middle\">VL11</text>\n        <text filter=\"url(#textBgFilter)\" x=\"-2.39\" y=\"9.49\" style=\"dominant-baseline:middle\">VL12</text>\n        <text filter=\"url(#textBgFilter)\" x=\"1.04\" y=\"8.18\" style=\"dominant-baseline:middle\">VL13</text>\n        <text filter=\"url(#textBgFilter)\" x=\"4.62\" y=\"5.82\" style=\"dominant-baseline:middle\">VL14</text>\n    </g>\n</svg>\n",
+      "text/plain": [
+       "<pypowsybl.network.Svg at 0x7f1f905b33d0>"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "n.get_network_area_diagram()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0a672386",
+   "metadata": {},
+   "source": [
+    "To draw the SLD for bus 6, do"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "c07cc358",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg height=\"504.0\" viewBox=\"0 0 380.0 504.0\" width=\"380.0\" xmlns=\"http://www.w3.org/2000/svg\">\n    <style>\n        <![CDATA[\n/* ----------------------------------------------------------------------- */\n/* File: tautologies.css ------------------------------------------------- */\n.sld-out .sld-arrow-in {visibility: hidden}\n.sld-in .sld-arrow-out {visibility: hidden}\n.sld-closed .sld-sw-open {visibility: hidden}\n.sld-open .sld-sw-closed {visibility: hidden}\n.sld-hidden-node {visibility: hidden}\n.sld-top-feeder .sld-label {dominant-baseline: auto}\n.sld-bottom-feeder .sld-label {dominant-baseline: hanging}\n.sld-arrow-p .sld-label {dominant-baseline: middle}\n.sld-arrow-q .sld-label {dominant-baseline: middle}\n/* ----------------------------------------------------------------------- */\n/* File: topologicalBaseVoltages.css ------------------------------------- */\n.sld-disconnected {--sld-vl-color: #808080}\n.sld-vl300to500-0 {--sld-vl-color: #FF0000}\n.sld-vl300to500-1 {--sld-vl-color: #7F6C00}\n.sld-vl300to500-2 {--sld-vl-color: #F6B2FF}\n.sld-vl300to500-3 {--sld-vl-color: #996700}\n.sld-vl300to500-4 {--sld-vl-color: #FF85EB}\n.sld-vl300to500-5 {--sld-vl-color: #B25B00}\n.sld-vl300to500-6 {--sld-vl-color: #FF59B5}\n.sld-vl300to500-7 {--sld-vl-color: #CC4400}\n.sld-vl300to500-8 {--sld-vl-color: #FF2C67}\n.sld-vl300to500-9 {--sld-vl-color: #E52600}\n.sld-vl180to300-0 {--sld-vl-color: #218B21}\n.sld-vl180to300-1 {--sld-vl-color: #0D4940}\n.sld-vl180to300-2 {--sld-vl-color: #DFDAB9}\n.sld-vl180to300-3 {--sld-vl-color: #105640}\n.sld-vl180to300-4 {--sld-vl-color: #C2CB92}\n.sld-vl180to300-5 {--sld-vl-color: #14643C}\n.sld-vl180to300-6 {--sld-vl-color: #95B66B}\n.sld-vl180to300-7 {--sld-vl-color: #187036}\n.sld-vl180to300-8 {--sld-vl-color: #5FA046}\n.sld-vl180to300-9 {--sld-vl-color: #1C7E2D}\n.sld-vl120to180-0 {--sld-vl-color: #00AFAE}\n.sld-vl120to180-1 {--sld-vl-color: #000D58}\n.sld-vl120to180-2 {--sld-vl-color: #B8E7B2}\n.sld-vl120to180-3 {--sld-vl-color: #002169}\n.sld-vl120to180-4 {--sld-vl-color: #85D993}\n.sld-vl120to180-5 {--sld-vl-color: #003C7B}\n.sld-vl120to180-6 {--sld-vl-color: #59CB8B}\n.sld-vl120to180-7 {--sld-vl-color: #005C8C}\n.sld-vl120to180-8 {--sld-vl-color: #2CBD94}\n.sld-vl120to180-9 {--sld-vl-color: #00839E}\n.sld-vl70to120-0 {--sld-vl-color: #CC5500}\n.sld-vl70to120-1 {--sld-vl-color: #4A6600}\n.sld-vl70to120-2 {--sld-vl-color: #EFB2DD}\n.sld-vl70to120-3 {--sld-vl-color: #6E7A00}\n.sld-vl70to120-4 {--sld-vl-color: #E685AE}\n.sld-vl70to120-5 {--sld-vl-color: #8E8400}\n.sld-vl70to120-6 {--sld-vl-color: #DD596B}\n.sld-vl70to120-7 {--sld-vl-color: #A37B00}\n.sld-vl70to120-8 {--sld-vl-color: #D4432C}\n.sld-vl70to120-9 {--sld-vl-color: #B76B00}\n.sld-vl50to70-0 {--sld-vl-color: #A020EF}\n.sld-vl50to70-1 {--sld-vl-color: #7F0848}\n.sld-vl50to70-2 {--sld-vl-color: #B7DBFE}\n.sld-vl50to70-3 {--sld-vl-color: #960C6D}\n.sld-vl50to70-4 {--sld-vl-color: #8DA6FE}\n.sld-vl50to70-5 {--sld-vl-color: #AD109A}\n.sld-vl50to70-6 {--sld-vl-color: #6F66FB}\n.sld-vl50to70-7 {--sld-vl-color: #BC14C4}\n.sld-vl50to70-8 {--sld-vl-color: #7F42F6}\n.sld-vl50to70-9 {--sld-vl-color: #B11AD9}\n.sld-vl30to50-0 {--sld-vl-color: #FF8290}\n.sld-vl30to50-1 {--sld-vl-color: #7F6F41}\n.sld-vl30to50-2 {--sld-vl-color: #F6D9FF}\n.sld-vl30to50-3 {--sld-vl-color: #99784E}\n.sld-vl30to50-4 {--sld-vl-color: #FFC3FB}\n.sld-vl30to50-5 {--sld-vl-color: #B27D5B}\n.sld-vl30to50-6 {--sld-vl-color: #FFADE3}\n.sld-vl30to50-7 {--sld-vl-color: #CC7E68}\n.sld-vl30to50-8 {--sld-vl-color: #FF97BF}\n.sld-vl30to50-9 {--sld-vl-color: #E57B75}\n.sld-vl0to30-0 {--sld-vl-color: #AAAE27}\n.sld-vl0to30-1 {--sld-vl-color: #195B0F}\n.sld-vl0to30-2 {--sld-vl-color: #EABABE}\n.sld-vl0to30-3 {--sld-vl-color: #2D6C13}\n.sld-vl0to30-4 {--sld-vl-color: #DDA193}\n.sld-vl0to30-5 {--sld-vl-color: #477D17}\n.sld-vl0to30-6 {--sld-vl-color: #CE9A6E}\n.sld-vl0to30-7 {--sld-vl-color: #648D1C}\n.sld-vl0to30-8 {--sld-vl-color: #BEA04A}\n.sld-vl0to30-9 {--sld-vl-color: #869D22}\n/* ----------------------------------------------------------------------- */\n/* File : highlightLineStates.css ---------------------------------------- */\n.sld-feeder-disconnected {stroke: black}\n.sld-feeder-connected-disconnected {stroke-dasharray: 3,3}\n.sld-feeder-disconnected-connected {stroke: black; stroke-dasharray: 3,3}\n/* ----------------------------------------------------------------------- */\n/* File : components.css ------------------------------------------------- */\n/* Stroke black */\n.sld-disconnector {stroke-width: 3; stroke: black; fill: none}\n/* Stroke blue */\n.sld-breaker {stroke-width: 2; stroke: blue; fill:white}\n/* Stroke --sld-vl-color with fallback black */\n.sld-bus-connection {stroke: var(--sld-vl-color, black); stroke-width: 4; fill: none}\n.sld-busbar-section {stroke: var(--sld-vl-color, black); stroke-width: 3; fill: none}\n/* Stroke --sld-vl-color with fallback red */\n.sld-wire {stroke: var(--sld-vl-color, #c80000); fill: none}\n/* Stroke --sld-vl-color with fallback blue */\n.sld-load-break-switch {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-load {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-generator {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-two-wt {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-three-wt {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-winding {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-capacitor {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-inductor {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-pst {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-pst-arrow {stroke: black; fill: none}\n.sld-svc {stroke: var(--sld-vl-color, blue); fill: none}\n.sld-vsc {stroke: var(--sld-vl-color, blue); font-size: 7.43px; fill: none}\n/* Stroke none & fill: --sld-vl-color */\n.sld-node-infos {stroke: none; fill: var(--sld-vl-color, black)}\n/* Stroke none & fill: black */\n.sld-label {stroke: none; fill: black; font: 8px \"Verdana\"}\n.sld-graph-label {stroke: none; fill: black; font: 12px \"Verdana\"}\n.sld-node {stroke: none; fill: black}\n.sld-flash {stroke: none; fill: black}\n.sld-lock {stroke: none; fill: black}\n/* Specific */\n.sld-grid {stroke: #003700; stroke-dasharray: 1,10}\n.sld-arrow-p {fill:black}\n.sld-arrow-q {fill:blue}\n.sld-frame {fill: var(--sld-background-color, transparent)}\n\n]]>\n    </style>\n    <rect class=\"sld-frame\" height=\"100%\" width=\"100%\"/>\n    <g>\n        <g class=\"sld-busbar-section sld-vl120to180-0\" id=\"id6\" transform=\"translate(52.5,252.0)\">\n            <line x1=\"0\" x2=\"275.0\" y1=\"0\" y2=\"0\"/>\n            <text class=\"sld-label\" id=\"6_NW_LABEL\" x=\"-5.0\" y=\"-5.0\">6</text>\n        </g>\n        <g class=\"cell idEXTERN_32_0\" id=\"idEXTERN_32_0\">\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_8_95_ONE_95_1\" transform=\"translate(61.0,218.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_8_95_ONE_95_2\" transform=\"translate(61.0,138.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-top-feeder sld-vl120to180-0\" id=\"idLine_95_8_95_ONE\" transform=\"translate(65.0,80.0)\">\n                <text class=\"sld-label\" id=\"Line_8_ONE_N_LABEL\" x=\"-5.0\" y=\"-5.0\">Line_8_ONE</text>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_BUSCO_95_Line_95_8_95_ONE_95_INTERNAL_95_VL6_95_Line_95_8_95_ONE_95_1\">\n                <polyline points=\"65.0,248.0,65.0,222.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_8_95_ONE_95_1_95_INTERNAL_95_VL6_95_Line_95_8_95_ONE_95_2\">\n                <polyline points=\"65.0,222.0,65.0,142.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_8_95_ONE_95_2_95_Line_95_8_95_ONE\">\n                <polyline points=\"65.0,142.0,65.0,80.0\"/>\n            </g>\n            <g class=\"sld-arrow-p sld-out\" id=\"idLine_95_8_95_ONE_ARROW_ACTIVE\" transform=\"translate(60.0,95.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">0</text>\n            </g>\n            <g class=\"sld-arrow-q sld-out\" id=\"idLine_95_8_95_ONE_ARROW_REACTIVE\" transform=\"translate(60.0,115.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">5</text>\n            </g>\n            <g class=\"sld-bus-connection sld-vl120to180-0\" id=\"idBUSCO_95_Line_95_8_95_ONE\" transform=\"translate(61.0,248.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"2\"/>\n            </g>\n        </g>\n        <g class=\"cell idEXTERN_32_1\" id=\"idEXTERN_32_1\">\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_9_95_ONE_95_1\" transform=\"translate(111.0,278.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_9_95_ONE_95_2\" transform=\"translate(111.0,358.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-bottom-feeder sld-vl120to180-0\" id=\"idLine_95_9_95_ONE\" transform=\"translate(115.0,424.0)\">\n                <text class=\"sld-label\" id=\"Line_9_ONE_S_LABEL\" x=\"-5.0\" y=\"5.0\">Line_9_ONE</text>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_BUSCO_95_Line_95_9_95_ONE_95_INTERNAL_95_VL6_95_Line_95_9_95_ONE_95_1\">\n                <polyline points=\"115.0,256.0,115.0,282.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_9_95_ONE_95_1_95_INTERNAL_95_VL6_95_Line_95_9_95_ONE_95_2\">\n                <polyline points=\"115.0,282.0,115.0,362.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_9_95_ONE_95_2_95_Line_95_9_95_ONE\">\n                <polyline points=\"115.0,362.0,115.0,424.0\"/>\n            </g>\n            <g class=\"sld-arrow-q sld-out\" id=\"idLine_95_9_95_ONE_ARROW_REACTIVE\" transform=\"translate(110.0,399.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">2</text>\n            </g>\n            <g class=\"sld-arrow-p sld-out\" id=\"idLine_95_9_95_ONE_ARROW_ACTIVE\" transform=\"translate(110.0,379.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">7</text>\n            </g>\n            <g class=\"sld-bus-connection sld-vl120to180-0\" id=\"idBUSCO_95_Line_95_9_95_ONE\" transform=\"translate(111.0,248.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"2\"/>\n            </g>\n        </g>\n        <g class=\"cell idEXTERN_32_2\" id=\"idEXTERN_32_2\">\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_10_95_ONE_95_1\" transform=\"translate(161.0,218.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_10_95_ONE_95_2\" transform=\"translate(161.0,138.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-top-feeder sld-vl120to180-0\" id=\"idLine_95_10_95_ONE\" transform=\"translate(165.0,80.0)\">\n                <text class=\"sld-label\" id=\"Line_10_ONE_N_LABEL\" x=\"-5.0\" y=\"-5.0\">Line_10_ONE</text>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_BUSCO_95_Line_95_10_95_ONE_95_INTERNAL_95_VL6_95_Line_95_10_95_ONE_95_1\">\n                <polyline points=\"165.0,248.0,165.0,222.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_10_95_ONE_95_1_95_INTERNAL_95_VL6_95_Line_95_10_95_ONE_95_2\">\n                <polyline points=\"165.0,222.0,165.0,142.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_10_95_ONE_95_2_95_Line_95_10_95_ONE\">\n                <polyline points=\"165.0,142.0,165.0,80.0\"/>\n            </g>\n            <g class=\"sld-arrow-p sld-out\" id=\"idLine_95_10_95_ONE_ARROW_ACTIVE\" transform=\"translate(160.0,95.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">16</text>\n            </g>\n            <g class=\"sld-arrow-q sld-out\" id=\"idLine_95_10_95_ONE_ARROW_REACTIVE\" transform=\"translate(160.0,115.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">4</text>\n            </g>\n            <g class=\"sld-bus-connection sld-vl120to180-0\" id=\"idBUSCO_95_Line_95_10_95_ONE\" transform=\"translate(161.0,248.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"2\"/>\n            </g>\n        </g>\n        <g class=\"cell idEXTERN_32_3\" id=\"idEXTERN_32_3\">\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_PQ_95_5_95_1\" transform=\"translate(211.0,278.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_PQ_95_5_95_2\" transform=\"translate(211.0,358.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-load sld-bottom-feeder sld-vl120to180-0\" id=\"idPQ_95_5\" transform=\"translate(207.0,419.5)\">\n                <rect height=\"9\" width=\"16\"/>\n                <line x1=\"0\" x2=\"16\" y1=\"0\" y2=\"9\"/>\n                <line x1=\"16\" x2=\"0\" y1=\"0\" y2=\"9\"/>\n                <text class=\"sld-label\" id=\"PQ_5_S_LABEL\" x=\"-5.0\" y=\"14.0\">PQ_5</text>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_BUSCO_95_PQ_95_5_95_INTERNAL_95_VL6_95_PQ_95_5_95_1\">\n                <polyline points=\"215.0,256.0,215.0,282.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_PQ_95_5_95_1_95_INTERNAL_95_VL6_95_PQ_95_5_95_2\">\n                <polyline points=\"215.0,282.0,215.0,362.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_PQ_95_5_95_2_95_PQ_95_5\">\n                <polyline points=\"215.0,362.0,215.0,419.5\"/>\n            </g>\n            <g class=\"sld-arrow-q sld-out\" id=\"idPQ_95_5_ARROW_REACTIVE\" transform=\"translate(210.0,394.5)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">8</text>\n            </g>\n            <g class=\"sld-arrow-p sld-out\" id=\"idPQ_95_5_ARROW_ACTIVE\" transform=\"translate(210.0,374.5)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">15</text>\n            </g>\n            <g class=\"sld-bus-connection sld-vl120to180-0\" id=\"idBUSCO_95_PQ_95_5\" transform=\"translate(211.0,248.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"2\"/>\n            </g>\n        </g>\n        <g class=\"cell idEXTERN_32_4\" id=\"idEXTERN_32_4\">\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_GEN4_95_1\" transform=\"translate(261.0,218.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_GEN4_95_2\" transform=\"translate(261.0,138.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-generator sld-top-feeder sld-vl120to180-0\" id=\"idGEN4\" transform=\"translate(259.0,74.0)\">\n                <circle cx=\"6\" cy=\"6\" r=\"6\"/>\n                <path d=\"M6,6 A 6 40 0 0 0 2,6\"/>\n                <path d=\"M6,6 A 6 40 0 0 0 10,6\"/>\n                <text class=\"sld-label\" id=\"GEN4_N_LABEL\" x=\"-5.0\" y=\"-5.0\">GEN4</text>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_BUSCO_95_GEN4_95_INTERNAL_95_VL6_95_GEN4_95_1\">\n                <polyline points=\"265.0,248.0,265.0,222.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_GEN4_95_1_95_INTERNAL_95_VL6_95_GEN4_95_2\">\n                <polyline points=\"265.0,222.0,265.0,142.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_GEN4_95_2_95_GEN4\">\n                <polyline points=\"265.0,142.0,265.0,86.0\"/>\n            </g>\n            <g class=\"sld-arrow-p sld-in\" id=\"idGEN4_ARROW_ACTIVE\" transform=\"translate(260.0,101.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">-30</text>\n            </g>\n            <g class=\"sld-arrow-q sld-in\" id=\"idGEN4_ARROW_REACTIVE\" transform=\"translate(260.0,121.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">-20</text>\n            </g>\n            <g class=\"sld-bus-connection sld-vl120to180-0\" id=\"idBUSCO_95_GEN4\" transform=\"translate(261.0,248.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"2\"/>\n            </g>\n        </g>\n        <g class=\"cell idEXTERN_32_5\" id=\"idEXTERN_32_5\">\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_19_95_ONE_95_1\" transform=\"translate(311.0,278.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-node sld-hidden-node sld-vl120to180-0\" id=\"idINTERNAL_95_VL6_95_Line_95_19_95_ONE_95_2\" transform=\"translate(311.0,358.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"4\"/>\n            </g>\n            <g class=\"sld-two-wt sld-bottom-feeder\" id=\"idLine_95_19_95_ONE\" transform=\"translate(310.0,416.5)\">\n                <circle class=\"sld-vl120to180-0 sld-winding\" cx=\"5\" cy=\"10\" r=\"5\" transform=\"rotate(180.0,5.0,7.5)\"/>\n                <circle class=\"sld-vl50to70-0 sld-winding\" cx=\"5\" cy=\"5\" r=\"5\" transform=\"rotate(180.0,5.0,7.5)\"/>\n                <text class=\"sld-label\" id=\"Line_19_ONE_S_LABEL\" x=\"-5.0\" y=\"20.0\">Line_19_ONE</text>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_BUSCO_95_Line_95_19_95_ONE_95_INTERNAL_95_VL6_95_Line_95_19_95_ONE_95_1\">\n                <polyline points=\"315.0,256.0,315.0,282.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_19_95_ONE_95_1_95_INTERNAL_95_VL6_95_Line_95_19_95_ONE_95_2\">\n                <polyline points=\"315.0,282.0,315.0,362.0\"/>\n            </g>\n            <g class=\"sld-wire sld-vl120to180-0\" id=\"_95_VL6_95_INTERNAL_95_VL6_95_Line_95_19_95_ONE_95_2_95_Line_95_19_95_ONE\">\n                <polyline points=\"315.0,362.0,315.0,416.0\"/>\n            </g>\n            <g class=\"sld-arrow-q sld-out\" id=\"idLine_95_19_95_ONE_ARROW_REACTIVE\" transform=\"translate(310.0,391.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">2</text>\n            </g>\n            <g class=\"sld-arrow-p sld-in\" id=\"idLine_95_19_95_ONE_ARROW_ACTIVE\" transform=\"translate(310.0,371.0)\">\n                <polygon class=\"sld-arrow-in\" points=\"0,0 10,0 5,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <polygon class=\"sld-arrow-out\" points=\"5,0 10,10 0,10\" transform=\"rotate(180.0,5.0,5.0)\"/>\n                <text class=\"sld-label\" x=\"15.0\" y=\"5.0\">-8</text>\n            </g>\n            <g class=\"sld-bus-connection sld-vl120to180-0\" id=\"idBUSCO_95_Line_95_19_95_ONE\" transform=\"translate(311.0,248.0)\">\n                <circle cx=\"4\" cy=\"4\" r=\"2\"/>\n            </g>\n        </g>\n    </g>\n</svg>\n",
+      "text/plain": [
+       "<pypowsybl.network.Svg at 0x7f1e879e2760>"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "n.get_single_line_diagram(\"VL6\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5bf452ee",
+   "metadata": {},
+   "source": [
+    "where `VL6` is the voltage level container created for Bus 6. Voltage level container is named as `VL` + bus `idx`."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "7f51cee3",
+   "metadata": {},
+   "source": [
+    "To find out how to work with pypowsybl, visit its documentation at <https://pypowsybl.readthedocs.io>"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/docs/source/getting_started/formats/xlsx.rst b/docs/source/getting_started/formats/xlsx.rst
index 0e7bc20fc..789d2dbd2 100644
--- a/docs/source/getting_started/formats/xlsx.rst
+++ b/docs/source/getting_started/formats/xlsx.rst
@@ -11,9 +11,10 @@ Office <https://www.wps.com/>`_.
 Format definition
 .................
 
-The ANDES xlsx format contains multiple workbooks (aka sheet) shown as tabs at
-the bottom. The name of a workbook is a *model* name, and each workbook contains
-the parameters of all *devices* that are *instances* of the model.
+The ANDES xlsx format contains multiple workbooks (also known as "sheets") shown
+as tabs at the bottom. The name of a workbook is a *model* name, and each
+workbook contains the parameters of all *devices* that are *instances* of the
+model.
 
 In each sheet, the first row contains the names of parameters of the model.
 Starting from the second row, each row corresponds to a *device instance* with
@@ -54,20 +55,41 @@ A few columns are used across all models. That includes ``uid``, ``idx``,
 
 Connecting devices
 ..................
-Most importantly, ``idx`` is the unique index to *connect* a device. In a system, a
-PQ (constant PQ load) device needs to connect to a Bus device to inject power.
-That is, the PQ device needs to indicate the Bus device to which it is
-connected. Such connection is done in the ``PQ`` sheet by setting the ``bus``
-parameter to the ``idx`` of the connected bus.
+Most importantly, ``idx`` is the *unique* index for referencing a device, so
+that it can be properly connected by supported devices. In a system, a PQ
+(constant PQ load) device needs to connect to a Bus device to inject power. That
+is, the PQ device needs to indicate the Bus device to which it is connected.
+Such connection is done in the ``PQ`` sheet by setting the ``bus`` parameter to
+the ``idx`` of the connected bus.
 
 .. image:: xlsx-pq.png
    :width: 600
    :alt: Example workbook for PQ
 
-In the above example PQ workbook, there are two PQ instances called ``PQ_0`` and
-``PQ_1`` (referred to by ``idx``). They are connected to buses ``7`` and ``8``.
-Therefore, on the ``Bus`` sheet, two rows need to exist with ``idx`` being ``7``
-and ``8``.
+The screenshot above is from the case file
+``andes/cases/kundur/kundur_fault.xlsx``. In this ``PQ`` workbook, there are two
+PQ instances (also known as "devices") called ``PQ_0`` and ``PQ_1`` (referred to
+by ``idx``). They are connected to buses ``7`` and ``8``, respectively. The
+``bus`` parameter of ``PQ`` is konwn as an indexing parameter
+(:py:mod:`andes.core.param.IdxParam`) through which the connections are
+specified. To get the connection actually work, on the ``Bus`` sheet, two rows
+must exist for two bus devices, respectively, with ``idx`` being ``7`` and
+``8``.
+
+To find out the IdxParams of a device for connecting to other devices, refer to
+:ref:`modelref`. For example, to find out how a device of the exciter model
+:ref:`EXDC2` should be connected to a synchronous generator, in the
+**Parameters** section, check the *Properties* column for *mandatory*
+parameters. Almost all IdxParams are mandatory, meaning that they must be
+specified to build a consistent test case. It can be seen that for :ref:`EXDC2`,
+``syn`` is mandatory. From the description, one can tell that this is the
+"Synchronous generator idx", which should be the ``idx`` of an existing
+synchronous generator, i.e., :ref:`GENROU` or :ref:`GENCLS`.
+
+Typically, models of the same group use the same IdxParams to connect to other
+models. Each link on the left sidebar of :ref:`modelref` is a group, such as the
+:ref:`Exciter` group. With this convention, all exciters have a ``syn``
+parameter for connecting to synchronous generators.
 
 Creating cases
 ..............
diff --git a/docs/source/getting_started/install.rst b/docs/source/getting_started/install.rst
index aa1d7ceb8..676e84d7f 100644
--- a/docs/source/getting_started/install.rst
+++ b/docs/source/getting_started/install.rst
@@ -59,6 +59,42 @@ Activate the new environment with
 If these steps complete without error, you now have a working Python environment.
 See the commands at the top to :ref:`getting-started` ANDES.
 
+.. _Install_extras:
+
+Extra support package
+=====================
+
+Some ANDES features require extra support packages, which are not installed by
+default. For example, to build the documentation, one will need to install
+development packages. Other packages will be required for interoperability.
+
+The extra support packages are specified in groups. The following group names
+are supported, with descriptions given below:
+
+- ``dev``: packages to support development such as testing and documentation
+- ``interop``: packages to support interoperability of ANDES and other power
+  systems tools.
+
+.. note::
+
+    Extra support packages are not supported by conda/mamba installation. One
+    needs to install ANDES with ``pip``.
+
+To install packages in the ``dev`` when installing ANDES, do:
+
+.. code:: bash
+
+    pip install andes[dev]
+
+To install all extra packages, do:
+
+.. code:: bash
+
+    pip install andes[all]
+
+One can also inspect the ``requirements-extra.txt`` to identify the packages
+for manual installation.
+
 .. _Develop Install:
 
 Develop Install
@@ -98,14 +134,14 @@ Install dependencies with
 .. code:: bash
 
     mamba install --file requirements.txt
-    mamba install --file requirements-dev.txt
+    mamba install --file requirements-extra.txt
 
 Alternatively, you can install them with ``pip``:
 
 .. code:: bash
 
     pip install -r requirements.txt
-    pip install -r requirements-dev.txt
+    pip install -r requirements-extra.txt
 
 Step 3: Install ANDES in the development mode using
 
@@ -133,6 +169,13 @@ Note the dot at the end. Pip will take care of the rest.
     ANDES, you can manually install the missing dependencies
     or redo `Step 2`_.
 
+.. note::
+
+    To install extra support packages, one can append ``[NAME_OF_EXTRA]`` to
+    ``pip install -e .``. For example, ``pip install -e .[interop]`` will
+    install packages to support interoperability when installing ANDES in the
+    development, editable mode.
+
 Updating ANDES
 ==============
 
diff --git a/docs/source/getting_started/tutorial/cli.rst b/docs/source/getting_started/tutorial/cli.rst
index ff48c8f04..c40767b7f 100644
--- a/docs/source/getting_started/tutorial/cli.rst
+++ b/docs/source/getting_started/tutorial/cli.rst
@@ -692,4 +692,4 @@ Check the version of ANDES and the core packages it uses, use
 
     andes misc --version
 
-Please include the output in your bug report.
+Please include the output in your bug report.
\ No newline at end of file
diff --git a/docs/source/getting_started/tutorial/interactive.rst b/docs/source/getting_started/tutorial/interactive.rst
index 6e6d737c5..2a93034ed 100644
--- a/docs/source/getting_started/tutorial/interactive.rst
+++ b/docs/source/getting_started/tutorial/interactive.rst
@@ -101,13 +101,12 @@ Naming convention for the ``System`` attributes are as follows
   ``ss.PFlow`` and ``ss.TDS`` are the routine instances.
 - The numerical DAE instance is in lower case ``ss.dae``.
 
-To work with PSS/E inputs, refer to notebook `Example 2`_.
-
-.. _`Example 2`: https://github.com/cuihantao/andes/blob/master/examples/2.%20inspect_data.ipynb
+To work with PSS/E inputs, refer to :ref:`scripting_examples` - "Working with
+Data".
 
 .. note::
     :py:mod:`andes.main.run` can accept multiple input files for multiprocessing.
-    They can passe through the first positional argument as a list of strings.
+    They can be passed as a list of strings to the first positional argument.
 
 Passing options
 ...............
@@ -375,6 +374,11 @@ Dataframes are stored in the following fields of ``ss.dae.ts``:
 For both dataframes, time is the index column, and each column correspond to one
 variable.
 
+.. note::
+
+    Looking to extract data for a single variable? See :ref:`scripting_examples`
+    - "Working with Data".
+
 Pretty Print of Equations
 ----------------------------------------
 Each ANDES models offers pretty print of :math:`\LaTeX`-formatted equations in
diff --git a/docs/source/getting_started/verification.rst b/docs/source/getting_started/verification.rst
index 211ee1e31..9959ae97f 100644
--- a/docs/source/getting_started/verification.rst
+++ b/docs/source/getting_started/verification.rst
@@ -15,6 +15,6 @@ match for large systems with a variety of dynamic models.
 .. toctree::
    :maxdepth: 2
 
-   ../examples/verification/andes-ieee14-verification.ipynb
-   ../examples/verification/andes-npcc-verification.ipynb
-   ../examples/verification/andes-wecc-verification.ipynb
+   ../_examples/verification/andes-ieee14-verification.ipynb
+   ../_examples/verification/andes-npcc-verification.ipynb
+   ../_examples/verification/andes-wecc-verification.ipynb
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 53798f5ca..671a8a300 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -32,14 +32,6 @@ differential-algebraic equation-based models. In this framework, a comprehensive
 second-generation renewable models. Models in ANDES have been :ref:`verified
 <verification>` with commercial software.
 
-..
-    ANDES has high computational performance and is close to that of commercial
-    tools. It is compatible with a variety of :ref:`input data formats
-    <input-formats>`, including PSS/E, MATPOWER, and Excel. Model documentation is
-    generated using symbolic equations, ensuring that it is always current with the
-    latest development.
-
-
 .. panels::
     :card: + intro-card text-center
     :column: col-lg-6 col-md-6 col-sm-6 col-xs-12 d-flex
@@ -108,6 +100,20 @@ second-generation renewable models. Models in ANDES have been :ref:`verified
             :text: To the API reference
             :classes: btn-block btn-secondary stretched-link
 
+    ---
+    :column: col-12 p-3
+
+    Using ANDES for Research?
+    ^^^^^^^^^^^^^^^^^^^^^^^^^
+    Please cite our paper [Cui2021]_ if ANDES is used in your research for
+    publication.
+
+
+.. [Cui2021] H. Cui, F. Li and K. Tomsovic, "Hybrid Symbolic-Numeric Framework
+       for Power System Modeling and Analysis," in IEEE Transactions on Power
+       Systems, vol. 36, no. 2, pp. 1373-1384, March 2021, doi:
+       10.1109/TPWRS.2020.3017019.
+
 
 .. toctree::
    :caption: ANDES Manual
@@ -115,7 +121,7 @@ second-generation renewable models. Models in ANDES have been :ref:`verified
    :hidden:
 
    getting_started/index
-   examples
+   examples/index
    modeling/index
    release-notes
    modelref
diff --git a/docs/source/release-notes.rst b/docs/source/release-notes.rst
index 16e47dcd8..b4ff163bd 100644
--- a/docs/source/release-notes.rst
+++ b/docs/source/release-notes.rst
@@ -9,6 +9,25 @@ The APIs before v3.0.0 are in beta and may change without prior notice.
 v1.6 Notes
 ==========
 
+v1.6.2 (2022-03-27)
+-------------------
+Interoperability:
+
+- Added interoperability modules for MATPOWER (through Oct2Py), pandapower and
+  pypowsybl.
+- Added Examples and API reference for the interoperability module.
+- Improved the setup script to support extra dependencies. The following extras
+  groups are supported: ``dev`` and ``interop``. See :ref:`Install_extras` for
+  more information.
+- Added tests for power flow calculation against MATPOWER.
+
+Others:
+
+- Added a shorthand command ``andes.system.example()`` to return a disposable
+  system. It can be useful for quick prototyping.
+- Improved the formatting and navigation of Model references.
+- Models store the base values for per-unit conversion in ``Model.bases``.
+
 v1.6.1 (2022-03-13)
 -------------------
 - Revamped documentation with a much improved "Getting started" section.
diff --git a/examples/ex2.ipynb b/examples/ex2.ipynb
index 1aa03f515..4d052d872 100644
--- a/examples/ex2.ipynb
+++ b/examples/ex2.ipynb
@@ -109,51 +109,33 @@
      "output_type": "stream",
      "text": [
       "Working directory: \"/home/hacui/repos/andes/examples\"\n",
-      "Loaded generated Python code in \"/home/hacui/.andes/pycode\".\n",
-      "Generated code for <Fault> is stale.\n",
-      "Numerical code generation (rapid incremental mode) started...\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Generating code for 1 models on 16 processes.\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "Saved generated pycode to \"/home/hacui/.andes/pycode\"\n",
-      "Reloaded generated Python code of module \"pycode\".\n",
-      "Generated numerical code for 1 models in 0.2276 seconds.\n",
+      "> Loaded generated Python code in \"/home/hacui/.andes/pycode\".\n",
       "Parsing input file \"/home/hacui/repos/andes/andes/cases/kundur/kundur_full.xlsx\"...\n",
-      "Input file parsed in 0.0956 seconds.\n",
-      "System internal structure set up in 0.0251 seconds.\n",
+      "Input file parsed in 0.0732 seconds.\n",
+      "System internal structure set up in 0.0199 seconds.\n",
       "-> System connectivity check results:\n",
       "  No islanded bus detected.\n",
-      "  A total of 1 island(s) detected.\n",
+      "  System is interconnected.\n",
       "  Each island has a slack bus correctly defined and enabled.\n",
       "\n",
       "-> Power flow calculation\n",
       "   Sparse solver: KLU\n",
       " Solution method: NR method\n",
-      "Power flow initialized in 0.0020 seconds.\n",
+      "Power flow initialized in 0.0027 seconds.\n",
       "0: |F(x)| = 14.9282832\n",
       "1: |F(x)| = 3.608627841\n",
       "2: |F(x)| = 0.1701107882\n",
       "3: |F(x)| = 0.002038626956\n",
       "4: |F(x)| = 3.745103977e-07\n",
-      "Converged in 5 iterations in 0.0035 seconds.\n",
-      "Report saved to \"kundur_full_out.txt\" in 0.0006 seconds.\n"
+      "Converged in 5 iterations in 0.0046 seconds.\n",
+      "Report saved to \"kundur_full_out.txt\" in 0.0007 seconds.\n"
      ]
     },
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "-> Single process finished in 0.4505 seconds.\n"
+      "-> Single process finished in 0.2108 seconds.\n"
      ]
     }
    ],
@@ -191,9 +173,9 @@
      "output_type": "stream",
      "text": [
       "Working directory: \"/home/hacui/repos/andes/examples\"\n",
-      "Reloaded generated Python code of module \"pycode\".\n",
+      "> Reloaded generated Python code of module \"pycode\".\n",
       "Parsing input file \"/home/hacui/repos/andes/andes/cases/kundur/kundur_full.xlsx\"...\n",
-      "Input file parsed in 0.0380 seconds.\n"
+      "Input file parsed in 0.0261 seconds.\n"
      ]
     }
    ],
@@ -262,24 +244,24 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "System internal structure set up in 0.0336 seconds.\n",
+      "System internal structure set up in 0.0383 seconds.\n",
       "-> System connectivity check results:\n",
       "  No islanded bus detected.\n",
-      "  A total of 1 island(s) detected.\n",
+      "  System is interconnected.\n",
       "  Each island has a slack bus correctly defined and enabled.\n",
       "\n",
       "-> Power flow calculation\n",
       "   Sparse solver: KLU\n",
       " Solution method: NR method\n",
-      "Power flow initialized in 0.0024 seconds.\n",
+      "Power flow initialized in 0.0019 seconds.\n",
       "0: |F(x)| = 14.9282832\n",
       "1: |F(x)| = 3.579044433\n",
       "2: |F(x)| = 0.119268955\n",
       "3: |F(x)| = 0.03278820195\n",
       "4: |F(x)| = 2.880943096e-05\n",
       "5: |F(x)| = 3.93747257e-11\n",
-      "Converged in 6 iterations in 0.0056 seconds.\n",
-      "Report saved to \"kundur_full_out.txt\" in 0.0008 seconds.\n"
+      "Converged in 6 iterations in 0.0054 seconds.\n",
+      "Report saved to \"kundur_full_out.txt\" in 0.0003 seconds.\n"
      ]
     },
     {
@@ -373,34 +355,34 @@
      "output_type": "stream",
      "text": [
       "Working directory: \"/home/hacui/repos/andes/examples\"\n",
-      "Reloaded generated Python code of module \"pycode\".\n",
+      "> Reloaded generated Python code of module \"pycode\".\n",
       "Parsing input file \"/home/hacui/repos/andes/andes/cases/kundur/kundur.raw\"...\n",
       "  MODIFIED KUNDUR'S TWO-AREA TEST SYSTEM, DISTRIBUTED WITH ANDES\n",
       "  SEE THE BOOK \"POWER SYSTEM STABILITY AND CONTROL\" FOR ORIGINAL DATA\n",
-      "Input file parsed in 0.0029 seconds.\n",
+      "Input file parsed in 0.0022 seconds.\n",
       "Parsing additional file \"/home/hacui/repos/andes/andes/cases/kundur/kundur_full.dyr\"...\n",
-      "Addfile parsed in 0.0804 seconds.\n",
-      "System internal structure set up in 0.0232 seconds.\n",
+      "Addfile parsed in 0.0580 seconds.\n",
+      "System internal structure set up in 0.0186 seconds.\n",
       "-> System connectivity check results:\n",
       "  No islanded bus detected.\n",
-      "  A total of 1 island(s) detected.\n",
+      "  System is interconnected.\n",
       "  Each island has a slack bus correctly defined and enabled.\n",
       "\n",
       "-> Power flow calculation\n",
       "   Sparse solver: KLU\n",
       " Solution method: NR method\n",
-      "Power flow initialized in 0.0024 seconds.\n",
+      "Power flow initialized in 0.0018 seconds.\n",
       "0: |F(x)| = 3.175850023\n",
       "1: |F(x)| = 3.176155228e-08\n",
-      "Converged in 2 iterations in 0.0016 seconds.\n",
-      "Report saved to \"kundur_out.txt\" in 0.0005 seconds.\n"
+      "Converged in 2 iterations in 0.0020 seconds.\n",
+      "Report saved to \"kundur_out.txt\" in 0.0003 seconds.\n"
      ]
     },
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "-> Single process finished in 0.2484 seconds.\n"
+      "-> Single process finished in 0.1284 seconds.\n"
      ]
     }
    ],
@@ -1249,6 +1231,74 @@
     "andes.io.xlsx.write(ss, 'new_system.xlsx', overwrite=True)"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### In-place update"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "`alter()` can be used to change the value of `ConstService` to modify the\n",
+    "equation that depend on such `ConstService`. For example, the distributed PV\n",
+    "model `PVD1` implements a `ConstService` called `pref0` to store the initial\n",
+    "value of the power reference. An equation associated with variable `Pref`\n",
+    "enforces that `0 = Pref - pref0`.\n",
+    "\n",
+    "If one needs to modify `Pref`, it has to be done through modifying `pref0`.\n",
+    "Modifying `Pref` directly will not take any effect since the variable will be\n",
+    "overwritten by the solution of equations. \n",
+    "\n",
+    "To update `pref0` for a `PVD1` device with `idx = \"PVD_1\"`, one can do\n",
+    "\n",
+    "`ss.PVD1.alter('pref0', 'PVD_1', 0.005)`\n",
+    "\n",
+    "or, using keyword arguments in any order, \n",
+    "\n",
+    "`ss.PVD1.alter(src='pref0', idx='PVD_1', value=0.005)`\n",
+    "\n",
+    "If `PVD_1` is the first (i.e., 0-th in the Python indexing) in the idx list, this modification is equivalent to setting\n",
+    "\n",
+    "`ss.PVD1.pref0.v[0] = 0.005`.\n",
+    "\n",
+    "Since index `0` is given, the array `ss.PVD1.pref0.v` is updated in-place."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "When one needs to modify the `pref0` of all `PVD1` devices to 0.005, one can do\n",
+    "\n",
+    "`ss.PVD1.alter('pref0', ss.PVD1.idx.v, 0.005)`\n",
+    "\n",
+    "This is equivalent to \n",
+    "\n",
+    "`ss.PVD1.pref0.v[:] = 0.005`\n",
+    "\n",
+    "Note the `[:]` in the above line. This is a slice operation so that the\n",
+    "assignment happens in-place.\n",
+    "\n",
+    "One must never do out-of-place assignment, i.e.,\n",
+    "\n",
+    "`ss.PVD1.pref0.v = 0.005` \n",
+    "\n",
+    "or \n",
+    "\n",
+    "`ss.PVD1.pref0.v = 0.005 * np.ones_line(ss.PVD1.pref0.v)`\n",
+    "\n",
+    "because the assignment will point `ss.PVD1.pref0.v` to a new array. Internally,\n",
+    "ANDES reuses the memory for all arrays, meaning that their addresses are assumed\n",
+    "to be constant. If one modifies `ss.PVD1.pref0.v` out of place, the previous\n",
+    "memory will no longer be accessible through `ss.PVD1.pref0.v`.\n",
+    "\n",
+    "On the safe side, one should modify variables using `alter()` or, at least,\n",
+    "always use in-place assignment to internal arrays."
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -2021,7 +2071,7 @@
       "Sparse Solver: KLU\n",
       "Simulation time: 0.0-20.0 s.\n",
       "Fixed step size: h=33.33 ms. Shrink if not converged.\n",
-      "Initialization for dynamics completed in 0.0293 seconds.\n",
+      "Initialization for dynamics completed in 0.0180 seconds.\n",
       "Initialization was successful.\n"
      ]
     },
@@ -2029,17 +2079,17 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "<Toggler Toggler_1>: Line.Line_8 status changed to 0 at t=2.0 sec.    \n",
-      "100%|███████████████████████████████| 100/100 [00:00<00:00, 139.47%/s]"
+      "<Toggler Toggler_1>: Line.Line_8 status changed to 0 at t=2.0 sec.              \n",
+      "100%|#########################################| 100/100 [00:00<00:00, 172.98%/s]"
      ]
     },
     {
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "Simulation completed in 0.7172 seconds.\n",
+      "Simulation completed in 0.5784 seconds.\n",
       "Outputs to \"kundur_out.lst\" and \"kundur_out.npz\".\n",
-      "Outputs written in 0.0179 seconds.\n"
+      "Outputs written in 0.0170 seconds.\n"
      ]
     },
     {
@@ -2083,7 +2133,7 @@
     {
      "data": {
       "text/plain": [
-       "<andes.variables.dae.DAETimeSeries at 0x7f2108b35ac0>"
+       "<andes.variables.dae.DAETimeSeries at 0x7f3d07cc0e50>"
       ]
      },
      "execution_count": 24,
@@ -2231,7 +2281,7 @@
     {
      "data": {
       "text/plain": [
-       "State: GENROU.omega, a=[4 5 6 7], v=[1.0016599  1.00166701 1.00182666 1.00184462], e=[-0.00238804 -0.00360342  0.00131428  0.00161908]"
+       "State: GENROU.omega, a=[4 5 6 7], v=[1.00165687 1.00166417 1.00182915 1.00184744], e=[-0.00251535 -0.00375723  0.00131868  0.00182826]"
       ]
      },
      "execution_count": 28,
@@ -2265,7 +2315,8 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "where the `:` in the first axis will access such data for all time stamps, the `a` field of `ss.GENROU.omega` stores the addresses into `ss.dae.x`."
+    "where the `:` in the first axis will access such data for all time stamps, and\n",
+    "`ss.GENROU.omega.a` stores the addresses  of all `omega` into `ss.dae.x`."
    ]
   },
   {
@@ -2287,9 +2338,9 @@
        "       [1.        , 1.        , 1.        , 1.        ],\n",
        "       [1.        , 1.        , 1.        , 1.        ],\n",
        "       ...,\n",
-       "       [1.00241882, 1.00149857, 0.99525458, 1.00006109],\n",
-       "       [1.00250567, 1.00159638, 0.99514609, 0.99997064],\n",
-       "       [1.00259407, 1.00169544, 0.99503479, 0.99987801]])"
+       "       [1.00240968, 1.00148908, 0.99526693, 1.00007159],\n",
+       "       [1.00249935, 1.00159007, 0.99515528, 0.99997846],\n",
+       "       [1.00259067, 1.0016924 , 0.99504062, 0.999883  ]])"
       ]
      },
      "execution_count": 30,
@@ -2317,7 +2368,7 @@
    "outputs": [
     {
      "data": {
-      "image/png": "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",
+      "image/png": "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",
       "text/plain": [
        "<Figure size 600x400 with 1 Axes>"
       ]
@@ -2346,12 +2397,264 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Cleanup"
+    "## Altering Fault duration"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "``Alter`` can be used for updating any model parameter. We show another example\n",
+    "of updating the duration of a fault. Using the `ieee14_fault.xlsx` test case, we have"
    ]
   },
   {
    "cell_type": "code",
    "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Working directory: \"/home/hacui/repos/andes/examples\"\n",
+      "> Loaded config from file \"/home/hacui/.andes/andes.rc\"\n",
+      "> Reloaded generated Python code of module \"pycode\".\n",
+      "Parsing input file \"/home/hacui/repos/andes/andes/cases/ieee14/ieee14_fault.xlsx\"...\n",
+      "Input file parsed in 0.0344 seconds.\n",
+      "System internal structure set up in 0.0301 seconds.\n",
+      "-> System connectivity check results:\n",
+      "  No islanded bus detected.\n",
+      "  System is interconnected.\n",
+      "  Each island has a slack bus correctly defined and enabled.\n",
+      "\n",
+      "-> Power flow calculation\n",
+      "   Sparse solver: UMFPACK\n",
+      " Solution method: NR method\n",
+      "Numba compilation initiated with caching.\n",
+      "Power flow initialized in 0.1322 seconds.\n",
+      "0: |F(x)| = 0.5605182134\n",
+      "1: |F(x)| = 0.006202200332\n",
+      "2: |F(x)| = 5.819382825e-06\n",
+      "3: |F(x)| = 6.957087684e-12\n",
+      "Converged in 4 iterations in 0.0039 seconds.\n",
+      "Report saved to \"ieee14_fault_out.txt\" in 0.0006 seconds.\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "-> Single process finished in 0.3048 seconds.\n"
+     ]
+    }
+   ],
+   "source": [
+    "ss = andes.run(get_case(\"ieee14/ieee14_fault.xlsx\"))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Again, if you need to add devices, you should use ``ss = andes.load(..,\n",
+    "setup=False)`` and ``ss.setup()`` instead of ``andes.run()``.\n",
+    "\n",
+    "List the existing ``Fault`` devices:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>idx</th>\n",
+       "      <th>u</th>\n",
+       "      <th>name</th>\n",
+       "      <th>bus</th>\n",
+       "      <th>tf</th>\n",
+       "      <th>tc</th>\n",
+       "      <th>xf</th>\n",
+       "      <th>rf</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>uid</th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>1</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>Fault_1</td>\n",
+       "      <td>9</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>1.1</td>\n",
+       "      <td>0.0001</td>\n",
+       "      <td>0.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "     idx    u     name  bus   tf   tc      xf   rf\n",
+       "uid                                               \n",
+       "0      1  1.0  Fault_1    9  1.0  1.1  0.0001  0.0"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ss.Fault.as_df()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "One fault on Bus 9 is applied at t=1.0 sec and cleared at t=1.1 sec. Suppose\n",
+    "that we want to clear the fault at t = 1.05 sec, we can do"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ss.Fault.alter('tc', 1, 1.05)  # arguments are `src`, `idx`, `value`"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "where `tc` is the parameter to alter, `1` is the idx of the Fault to find, and\n",
+    "`1.05` is the new value. Inspect the Fault devices to see the updated value.\n",
+    "The simulation for the new system can be performed next."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>idx</th>\n",
+       "      <th>u</th>\n",
+       "      <th>name</th>\n",
+       "      <th>bus</th>\n",
+       "      <th>tf</th>\n",
+       "      <th>tc</th>\n",
+       "      <th>xf</th>\n",
+       "      <th>rf</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>uid</th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>1</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>Fault_1</td>\n",
+       "      <td>9</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>1.05</td>\n",
+       "      <td>0.0001</td>\n",
+       "      <td>0.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "     idx    u     name  bus   tf    tc      xf   rf\n",
+       "uid                                                \n",
+       "0      1  1.0  Fault_1    9  1.0  1.05  0.0001  0.0"
+      ]
+     },
+     "execution_count": 35,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ss.Fault.as_df()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Cleanup"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
    "metadata": {
     "ExecuteTime": {
      "end_time": "2021-03-19T01:57:49.038948Z",
@@ -2369,16 +2672,11 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "\n",
-      "    _           _         | Version 1.5.8.post16.dev0+g00a5f9be\n",
-      "   /_\\  _ _  __| |___ ___ | Python 3.9.7 on Linux, 01/24/2022 02:33:26 PM\n",
-      "  / _ \\| ' \\/ _` / -_|_-< | \n",
-      " /_/ \\_\\_||_\\__,_\\___/__/ | This program comes with ABSOLUTELY NO WARRANTY.\n",
-      "\n",
       "\"/home/hacui/repos/andes/examples/kundur_out.lst\" removed.\n",
-      "\"/home/hacui/repos/andes/examples/kundur_out.npz\" removed.\n",
+      "\"/home/hacui/repos/andes/examples/kundur_out.txt\" removed.\n",
       "\"/home/hacui/repos/andes/examples/kundur_full_out.txt\" removed.\n",
-      "\"/home/hacui/repos/andes/examples/kundur_out.txt\" removed.\n"
+      "\"/home/hacui/repos/andes/examples/kundur_out.npz\" removed.\n",
+      "\"/home/hacui/repos/andes/examples/ieee14_fault_out.txt\" removed.\n"
      ]
     }
    ],
@@ -2388,7 +2686,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 33,
+   "execution_count": 37,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2021-09-26T22:41:56.081852Z",
@@ -2422,7 +2720,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.7"
+   "version": "3.9.10"
   },
   "pycharm": {
    "stem_cell": {
diff --git a/requirements-dev.txt b/requirements-dev.txt
deleted file mode 100644
index 3b983ec73..000000000
--- a/requirements-dev.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# These are required for developing the package (running the tests, building
-# the documentation) but not necessarily required for _using_ it.
-codecov
-coverage
-pytest==7.0.1
-flake8
-sphinx
-# These are dependencies of various sphinx extensions for documentation.
-ipython
-numpydoc
-sphinx-copybutton
-sphinx-panels
-sphinx_rtd_theme==0.5.2
-pydata-sphinx-theme
-myst-parser
-myst-nb
-pre-commit
\ No newline at end of file
diff --git a/requirements-extra.txt b/requirements-extra.txt
new file mode 100644
index 000000000..e733329e1
--- /dev/null
+++ b/requirements-extra.txt
@@ -0,0 +1,22 @@
+# FORMAT
+# Put your extra requirements here in the following format
+#
+# package[version_required]# tag1, tag2, ...
+#
+# Only one `#` is allowed per line. Lines start with `#` are ignored.
+
+codecov#                      dev
+coverage#                     dev
+pytest==7.0.1#                dev
+flake8#                       dev
+sphinx#                       dev, doc
+ipython#                      dev
+numpydoc#                     dev, doc
+sphinx-copybutton#            dev, doc
+sphinx-panels#                dev, doc
+pydata-sphinx-theme#          dev, doc
+myst-parser#                  dev, doc
+myst-nb#                      dev, doc
+pre-commit#                   dev
+
+pandapower#                   interop
diff --git a/requirements.txt b/requirements.txt
index 659d57677..b62439a79 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
-kvxopt>=1.2.7.4
+kvxopt>=1.3.0.0
 numpy
 scipy
-sympy>=1.6,<=1.10
+sympy>=1.6,<=1.10.1,!=1.10.0
 pandas
 matplotlib
 openpyxl
diff --git a/setup.py b/setup.py
index 3de2fcf37..c7d7cb0c1 100644
--- a/setup.py
+++ b/setup.py
@@ -1,11 +1,12 @@
-from os import path
-from setuptools import setup, find_packages
+import re
 import sys
+import os
+from collections import defaultdict
+
+from setuptools import find_packages, setup
+
 import versioneer
 
-# NOTE: This file must remain Python 2 compatible for the foreseeable future,
-# to ensure that we error out properly for people with outdated setuptools
-# and/or pip.
 if sys.version_info < (3, 6):
     error = """
 andes does not support Python <= {0}.{1}.
@@ -20,17 +21,57 @@
 """.format(3, 6)
     sys.exit(error)
 
-here = path.abspath(path.dirname(__file__))
+here = os.path.abspath(os.path.dirname(__file__))
 
-with open(path.join(here, 'README.md'), encoding='utf-8') as readme_file:
+with open(os.path.join(here, 'README.md'), encoding='utf-8') as readme_file:
     readme = readme_file.read()
 
-with open(path.join(here, 'requirements.txt')) as requirements_file:
-    # Parse requirements.txt, ignoring any commented-out lines.
-    requirements = [
-        line for line in requirements_file.read().splitlines()
-        if not line.startswith('#')
-    ]
+
+def parse_requires(filename):
+    with open(os.path.join(here, filename)) as requirements_file:
+        reqs = [
+            line for line in requirements_file.read().splitlines()
+            if not line.startswith('#')
+        ]
+    return reqs
+
+
+def get_extra_requires(filename, add_all=True):
+    """
+    Build ``extras_require`` from an invert requirements file.
+
+    See:
+    https://hanxiao.io/2019/11/07/A-Better-Practice-for-Managing-extras-require-Dependencies-in-Python/
+    """
+
+    with open(os.path.join(here, filename)) as fp:
+        extra_deps = defaultdict(set)
+        for k in fp:
+            if k.strip() and not k.startswith('#'):
+                tags = set()
+                if '#' in k:
+                    if k.count("#") > 1:
+                        raise ValueError("Invalid line: {}".format(k))
+
+                    k, v = k.split('#')
+                    tags.update(vv.strip() for vv in v.split(','))
+
+                tags.add(re.split('[<=>]', k)[0])
+                for t in tags:
+                    extra_deps[t].add(k)
+
+        # add tag `all` at the end
+        if add_all:
+            extra_deps['all'] = set(vv for v in extra_deps.values() for vv in v)
+
+    return extra_deps
+
+
+extras_require = get_extra_requires("requirements-extra.txt")
+
+# --- update `extras_conda` to include packages only available in PyPI ---
+extras_require["interop"].add("pypowsybl")
+extras_require["all"].add("pypowsybl")
 
 setup(
     name='andes',
@@ -56,7 +97,8 @@
             # 'path/to/data_file',
         ]
     },
-    install_requires=requirements,
+    install_requires=parse_requires('requirements.txt'),
+    extras_require=extras_require,
     license="GNU Public License v3",
     classifiers=[
         'Development Status :: 4 - Beta',


Test patch:
diff --git a/docs/source/getting_started/testcases/index.rst b/docs/source/getting_started/testcases/index.rst
index 2724a257f..b25ce7307 100644
--- a/docs/source/getting_started/testcases/index.rst
+++ b/docs/source/getting_started/testcases/index.rst
@@ -14,9 +14,10 @@ Summary
 =======
 
 Below is a summary of the folders and the corresponding test cases. Some folders
-contain a README file. When viewing on GitHub, the README is automatically
-rendered in the folder for quick reference.
+contain a README file with notes. When viewing the case folder on GitHub, one
+can conveniently read the README file below the file listing.
 
+- ``smib``: single machine infinite bus (SMIB) system [Sauer]_.
 - ``5bus``: a small PJM 5-bus test case for power flow study [PJM5]_.
 - ``GBnetwork``: a 2,000-bus system for the Great Britain network [GB]_. Dynamic
   data is randomly generated.
@@ -123,9 +124,9 @@ contribute new test cases. Please follow the structure in the ``cases`` folder
 and provide an example Jupyter notebook (see ``examples/demonstration``) to
 showcase the results of your system.
 
-..
-    todo: verification
-
+.. [Sauer] P. W. Sauer, M. A. Pai, and J. H. Chow, Power system dynamics
+        and stability: with synchrophasor measurement and power system toolbox,
+        Second edition. Hoboken, NJ, USA: IEEE Press, Wiley, 2017.
 .. [PJM5] F. Li and R. Bo, "Small test systems for power system economic
         studies," IEEE PES General Meeting, 2010, pp. 1-4, doi:
         10.1109/PES.2010.5589973.
diff --git a/tests/test_case.py b/tests/test_case.py
index 0dce229bb..6c06fb90a 100644
--- a/tests/test_case.py
+++ b/tests/test_case.py
@@ -152,7 +152,6 @@ def test_read_json_from_memory(self):
         ss = andes.main.System(default_config=True,
                                no_output=True,
                                )
-        ss.undill()
         andes.io.json.read(ss, fd)
         ss.setup()
         ss.PFlow.run()
@@ -166,7 +165,6 @@ def test_read_mpc_from_memory(self):
         ss = andes.main.System(default_config=True,
                                no_output=True,
                                )
-        ss.undill()
         andes.io.matpower.read(ss, fd)
         ss.setup()
         ss.PFlow.run()
@@ -185,7 +183,6 @@ def test_read_psse_from_memory(self):
         ss.config.warn_limits = 0
         ss.config.warn_abnormal = 0
 
-        ss.undill()
         andes.io.psse.read(ss, fd_raw)
         andes.io.psse.read_add(ss, fd_dyr)
         ss.setup()
diff --git a/tests/test_pandapower.py b/tests/test_pandapower.py
new file mode 100644
index 000000000..ee1937cbf
--- /dev/null
+++ b/tests/test_pandapower.py
@@ -0,0 +1,66 @@
+"""
+Test the ANDES-pandapower interface.
+"""
+
+import unittest
+import numpy as np
+
+import andes
+from andes.shared import rad2deg
+from andes.interop.pandapower import to_pandapower, make_link_table
+
+try:
+    import pandapower as pp
+    HAVE_PANDAPOWER = True
+except ImportError:
+    HAVE_PANDAPOWER = False
+
+
+@unittest.skipUnless(HAVE_PANDAPOWER, "pandapower not available")
+class TestPandapower(unittest.TestCase):
+    """
+    Tests for the ANDES-pandapower interface.
+    """
+
+    def setUp(self) -> None:
+        """
+        Test setup. This is executed before each test case.
+        """
+
+        ssa = andes.load(andes.get_case('ieee14/ieee14_ieeet1.xlsx'),
+                         setup=True,
+                         no_output=True,
+                         default_config=True)
+        ssp = to_pandapower(ssa)
+
+        ssa.PFlow.run()
+        pp.runpp(ssp)
+
+        self.v_andes = ssa.Bus.v.v
+        self.a_andes = ssa.Bus.a.v * rad2deg
+
+        self.v_pp = ssp.res_bus['vm_pu']
+        self.a_pp = ssp.res_bus['va_degree']
+
+        self.link_table = make_link_table(ssa)
+
+    def test_to_pandapower(self):
+        """
+        Test `andes.interop.pandapower.to_pandapower`
+        """
+
+        np.testing.assert_almost_equal(self.v_andes, self.v_pp, decimal=6)
+        np.testing.assert_almost_equal(self.a_andes, self.a_pp, decimal=6)
+
+    def test_make_link_table(self):
+        """
+        Test `andes.interop.pandapower.make_link_table`
+        """
+
+        ridx = self.link_table[self.link_table['syn_idx'] == 'GENROU_1'].index
+        c_bus = self.link_table['bus_name'].iloc[ridx].astype(str) == 'BUS1'
+        c_exc = self.link_table['exc_idx'].iloc[ridx].astype(str) == 'ESST3A_2'
+        c_stg = self.link_table['stg_idx'].iloc[ridx].astype(str) == '1'
+        c_gov = self.link_table['gov_idx'].iloc[ridx].astype(str) == 'TGOV1_1'
+        c = c_bus.values[0] and c_exc.values[0] and c_stg.values[0] and c_gov.values[0]
+        return c
diff --git a/tests/test_pflow_matpower.py b/tests/test_pflow_matpower.py
index 1736db6bb..e598da5a5 100644
--- a/tests/test_pflow_matpower.py
+++ b/tests/test_pflow_matpower.py
@@ -2,15 +2,28 @@
 import unittest
 
 import andes
+import numpy as np
 from andes.utils.paths import get_case
+from andes.shared import deg2rad
 
-andes.main.config_logger(stream_level=30, file=True)
+andes.main.config_logger(30, file=True)
 
+try:
+    from matpower import start_instance
+    m = start_instance()
+    m.exit()
+    MATPOWER_WORKING = True
+except ImportError:
+    MATPOWER_WORKING = False
 
-class TestMATPOWER(unittest.TestCase):
+
+class TestRunMATPOWER(unittest.TestCase):
+    """
+    Test parsing and running matpower cases.
+    """
 
     def setUp(self) -> None:
-        self.cases = ('case5.m', 'case14.m', 'case300.m', 'case118.m')
+        self.cases = ('case5.m', 'case14.m', 'case118.m')
 
     def test_pflow_mpc_pool(self):
         case_path = [get_case(os.path.join('matpower', item)) for item in self.cases]
@@ -19,3 +32,32 @@ def test_pflow_mpc_pool(self):
     def test_pflow_mpc_process(self):
         case_path = [get_case(os.path.join('matpower', item)) for item in self.cases]
         andes.run(case_path, no_output=True, ncpu=2, pool=False, verbose=40, default_config=True)
+
+@unittest.skipUnless(MATPOWER_WORKING, "MATPOWER not available")
+class TestMATPOWEROct2Py(unittest.TestCase):
+
+
+    def test_pflow_against_matpower(self):
+
+        m = start_instance()
+        cases = ('case5.m', 'case14.m', 'case118.m')
+
+        for name in cases:
+
+            ss = andes.run(andes.get_case(os.path.join("matpower", name)),
+                        no_output=True,
+                        default_config=True)
+
+            m.eval('clear mpc')
+            andes.interop.matpower.to_matpower(m, 'mpc', ss)
+            m.eval("mpopt = mpoption('verbose', 0, 'out.all', 0);")
+            m.eval('mpc = runpf(mpc, mpopt);')
+
+            v_mpc = np.ravel(m.eval('mpc.bus(:,8);'))
+            a_mpc = np.ravel(m.eval('mpc.bus(:,9);')) * deg2rad
+
+            v_andes = ss.Bus.v.v
+            a_andes = ss.Bus.a.v
+
+            np.testing.assert_almost_equal(v_mpc, v_andes, decimal=5)
+            np.testing.assert_almost_equal(a_mpc, a_andes, decimal=5)