diff --git a/docs/2.23.0/ref/.buildinfo b/docs/2.23.0/ref/.buildinfo
new file mode 100644
index 0000000..0430f35
--- /dev/null
+++ b/docs/2.23.0/ref/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 842dab674828198eb4f1bc74cee8fc45
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/2.23.0/ref/_sources/acl.rst.txt b/docs/2.23.0/ref/_sources/acl.rst.txt
new file mode 100644
index 0000000..f3e3231
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/acl.rst.txt
@@ -0,0 +1,13 @@
+**acl**
+-------
+
+
+.. doxygenfile:: eos/acl.h
+ :project: eossdk
+
+Type definitions in **acl**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/acl.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/agent.rst.txt b/docs/2.23.0/ref/_sources/agent.rst.txt
new file mode 100644
index 0000000..3d94541
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/agent.rst.txt
@@ -0,0 +1,7 @@
+**agent**
+---------
+
+
+.. doxygenfile:: eos/agent.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/aresolve.rst.txt b/docs/2.23.0/ref/_sources/aresolve.rst.txt
new file mode 100644
index 0000000..d89a025
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/aresolve.rst.txt
@@ -0,0 +1,13 @@
+**aresolve**
+------------
+
+
+.. doxygenfile:: eos/aresolve.h
+ :project: eossdk
+
+Type definitions in **aresolve**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/aresolve.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/base.rst.txt b/docs/2.23.0/ref/_sources/base.rst.txt
new file mode 100644
index 0000000..2497113
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/base.rst.txt
@@ -0,0 +1,7 @@
+**base**
+--------
+
+
+.. doxygenfile:: eos/base.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/base_handler.rst.txt b/docs/2.23.0/ref/_sources/base_handler.rst.txt
new file mode 100644
index 0000000..51e07f3
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/base_handler.rst.txt
@@ -0,0 +1,7 @@
+**base_handler**
+----------------
+
+
+.. doxygenfile:: eos/base_handler.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/base_mgr.rst.txt b/docs/2.23.0/ref/_sources/base_mgr.rst.txt
new file mode 100644
index 0000000..872587d
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/base_mgr.rst.txt
@@ -0,0 +1,7 @@
+**base_mgr**
+------------
+
+
+.. doxygenfile:: eos/base_mgr.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/bfd.rst.txt b/docs/2.23.0/ref/_sources/bfd.rst.txt
new file mode 100644
index 0000000..d005849
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/bfd.rst.txt
@@ -0,0 +1,13 @@
+**bfd**
+-------
+
+
+.. doxygenfile:: eos/bfd.h
+ :project: eossdk
+
+Type definitions in **bfd**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/bfd.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/bgp.rst.txt b/docs/2.23.0/ref/_sources/bgp.rst.txt
new file mode 100644
index 0000000..a6c034b
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/bgp.rst.txt
@@ -0,0 +1,13 @@
+**bgp**
+-------
+
+
+.. doxygenfile:: eos/bgp.h
+ :project: eossdk
+
+Type definitions in **bgp**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/bgp.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/bgp_path.rst.txt b/docs/2.23.0/ref/_sources/bgp_path.rst.txt
new file mode 100644
index 0000000..b8c7f21
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/bgp_path.rst.txt
@@ -0,0 +1,13 @@
+**bgp_path**
+------------
+
+
+.. doxygenfile:: eos/bgp_path.h
+ :project: eossdk
+
+Type definitions in **bgp_path**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/bgp_path.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/class_map.rst.txt b/docs/2.23.0/ref/_sources/class_map.rst.txt
new file mode 100644
index 0000000..c888400
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/class_map.rst.txt
@@ -0,0 +1,13 @@
+**class_map**
+-------------
+
+
+.. doxygenfile:: eos/class_map.h
+ :project: eossdk
+
+Type definitions in **class_map**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/class_map.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/decap_group.rst.txt b/docs/2.23.0/ref/_sources/decap_group.rst.txt
new file mode 100644
index 0000000..2439fab
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/decap_group.rst.txt
@@ -0,0 +1,13 @@
+**decap_group**
+---------------
+
+
+.. doxygenfile:: eos/decap_group.h
+ :project: eossdk
+
+Type definitions in **decap_group**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/decap_group.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/directflow.rst.txt b/docs/2.23.0/ref/_sources/directflow.rst.txt
new file mode 100644
index 0000000..e0ab89d
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/directflow.rst.txt
@@ -0,0 +1,13 @@
+**directflow**
+--------------
+
+
+.. doxygenfile:: eos/directflow.h
+ :project: eossdk
+
+Type definitions in **directflow**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/directflow.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/eapi.rst.txt b/docs/2.23.0/ref/_sources/eapi.rst.txt
new file mode 100644
index 0000000..642f14b
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/eapi.rst.txt
@@ -0,0 +1,13 @@
+**eapi**
+--------
+
+
+.. doxygenfile:: eos/eapi.h
+ :project: eossdk
+
+Type definitions in **eapi**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/eapi.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/eth.rst.txt b/docs/2.23.0/ref/_sources/eth.rst.txt
new file mode 100644
index 0000000..9a3e4fc
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/eth.rst.txt
@@ -0,0 +1,13 @@
+**eth**
+-------
+
+
+.. doxygenfile:: eos/eth.h
+ :project: eossdk
+
+Type definitions in **eth**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/eth.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/eth_intf.rst.txt b/docs/2.23.0/ref/_sources/eth_intf.rst.txt
new file mode 100644
index 0000000..5e8da32
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/eth_intf.rst.txt
@@ -0,0 +1,13 @@
+**eth_intf**
+------------
+
+
+.. doxygenfile:: eos/eth_intf.h
+ :project: eossdk
+
+Type definitions in **eth_intf**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/eth_intf.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/eth_lag_intf.rst.txt b/docs/2.23.0/ref/_sources/eth_lag_intf.rst.txt
new file mode 100644
index 0000000..aa9dd6a
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/eth_lag_intf.rst.txt
@@ -0,0 +1,13 @@
+**eth_lag_intf**
+----------------
+
+
+.. doxygenfile:: eos/eth_lag_intf.h
+ :project: eossdk
+
+Type definitions in **eth_lag_intf**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/eth_lag_intf.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/eth_phy_intf.rst.txt b/docs/2.23.0/ref/_sources/eth_phy_intf.rst.txt
new file mode 100644
index 0000000..7bba962
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/eth_phy_intf.rst.txt
@@ -0,0 +1,13 @@
+**eth_phy_intf**
+----------------
+
+
+.. doxygenfile:: eos/eth_phy_intf.h
+ :project: eossdk
+
+Type definitions in **eth_phy_intf**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/eth_phy_intf.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/event_loop.rst.txt b/docs/2.23.0/ref/_sources/event_loop.rst.txt
new file mode 100644
index 0000000..bee34ad
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/event_loop.rst.txt
@@ -0,0 +1,7 @@
+**event_loop**
+--------------
+
+
+.. doxygenfile:: eos/event_loop.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/exception.rst.txt b/docs/2.23.0/ref/_sources/exception.rst.txt
new file mode 100644
index 0000000..d63d5cb
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/exception.rst.txt
@@ -0,0 +1,7 @@
+**exception**
+-------------
+
+
+.. doxygenfile:: eos/exception.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/fd.rst.txt b/docs/2.23.0/ref/_sources/fd.rst.txt
new file mode 100644
index 0000000..b03bb67
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/fd.rst.txt
@@ -0,0 +1,7 @@
+**fd**
+------
+
+
+.. doxygenfile:: eos/fd.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/fib.rst.txt b/docs/2.23.0/ref/_sources/fib.rst.txt
new file mode 100644
index 0000000..42b1fd0
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/fib.rst.txt
@@ -0,0 +1,13 @@
+**fib**
+-------
+
+
+.. doxygenfile:: eos/fib.h
+ :project: eossdk
+
+Type definitions in **fib**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/fib.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/hardware_table.rst.txt b/docs/2.23.0/ref/_sources/hardware_table.rst.txt
new file mode 100644
index 0000000..27c31cc
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/hardware_table.rst.txt
@@ -0,0 +1,13 @@
+**hardware_table**
+------------------
+
+
+.. doxygenfile:: eos/hardware_table.h
+ :project: eossdk
+
+Type definitions in **hardware_table**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/hardware_table.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/hash_mix.rst.txt b/docs/2.23.0/ref/_sources/hash_mix.rst.txt
new file mode 100644
index 0000000..a3f8241
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/hash_mix.rst.txt
@@ -0,0 +1,7 @@
+**hash_mix**
+------------
+
+
+.. doxygenfile:: eos/hash_mix.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/index.rst.txt b/docs/2.23.0/ref/_sources/index.rst.txt
new file mode 100644
index 0000000..a4a2075
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/index.rst.txt
@@ -0,0 +1,45 @@
+
+Arista EOS SDK reference guide
+==============================
+
+The Arista EOS SDK allows development of high performance on switch
+agents that react to and interact directly with EOS. These agents can
+bridge feature configuration with existing systems or provide
+automated system maintenance facilities due to the SDK's state based
+programming approach. Refer to the EOS SDK wiki_ for more information
+including example code using the SDK.
+
+Switch management modules
+-------------------------
+
+The SDK is split up into modules that manage one particular part of
+the system, such as the ``intf`` module for generic interface management
+(admin state, description) or the ``acl`` module for configuration of
+Access Control Lists. Each module consists of a module manager class,
+such as ``eos::intf_mgr``. Modules that provide notifications also have
+a handler class, e.g., ``eos::intf_handler``. Handler sub-classes are
+provided by your implementation and provide the notification callbacks
+for notifications from EOS.
+
+| :doc:`acl` | :doc:`bfd` | :doc:`bgp` | :doc:`bgp_path` | :doc:`class_map` | :doc:`decap_group` | :doc:`directflow` | :doc:`eapi` | :doc:`eth` | :doc:`eth_intf` | :doc:`eth_lag_intf` | :doc:`eth_phy_intf` | :doc:`fib` | :doc:`hardware_table` | :doc:`intf` | :doc:`ip` | :doc:`ip_intf` | :doc:`ip_route` | :doc:`lldp` | :doc:`mac_table` | :doc:`macsec` | :doc:`mlag` | :doc:`mpls` | :doc:`mpls_route` | :doc:`mpls_vrf_label` | :doc:`neighbor_table` | :doc:`nexthop_group` | :doc:`nexthop_group_tunnel` | :doc:`policy_map` | :doc:`route_map` | :doc:`structured_filter` | :doc:`subintf` | :doc:`vrf` | :doc:`xcvr`
+
+
+Infrastructure modules
+----------------------
+
+In addition, there are a number of framework modules that provide
+access to the SDK components (``sdk``), offer an asynchronous
+file-descriptor interface for use with asynchronous networking
+libraries (``fd``) and provide debug logging facilities (``tracing``).
+
+| :doc:`agent` | :doc:`aresolve` | :doc:`base` | :doc:`base_handler` | :doc:`base_mgr` | :doc:`event_loop` | :doc:`exception` | :doc:`fd` | :doc:`hash_mix` | :doc:`iterator` | :doc:`panic` | :doc:`sdk` | :doc:`system` | :doc:`timer` | :doc:`tracing` | :doc:`utility` | :doc:`version`
+
+
+.. toctree::
+ :hidden:
+ :glob:
+
+ **
+
+
+.. _wiki: https://github.com/aristanetworks/EosSdk/wiki
diff --git a/docs/2.23.0/ref/_sources/intf.rst.txt b/docs/2.23.0/ref/_sources/intf.rst.txt
new file mode 100644
index 0000000..4f7a76a
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/intf.rst.txt
@@ -0,0 +1,13 @@
+**intf**
+--------
+
+
+.. doxygenfile:: eos/intf.h
+ :project: eossdk
+
+Type definitions in **intf**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/intf.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/ip.rst.txt b/docs/2.23.0/ref/_sources/ip.rst.txt
new file mode 100644
index 0000000..c0319bd
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/ip.rst.txt
@@ -0,0 +1,13 @@
+**ip**
+------
+
+
+.. doxygenfile:: eos/ip.h
+ :project: eossdk
+
+Type definitions in **ip**
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/ip.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/ip_intf.rst.txt b/docs/2.23.0/ref/_sources/ip_intf.rst.txt
new file mode 100644
index 0000000..2fc6304
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/ip_intf.rst.txt
@@ -0,0 +1,7 @@
+**ip_intf**
+-----------
+
+
+.. doxygenfile:: eos/ip_intf.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/ip_route.rst.txt b/docs/2.23.0/ref/_sources/ip_route.rst.txt
new file mode 100644
index 0000000..848dc3a
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/ip_route.rst.txt
@@ -0,0 +1,13 @@
+**ip_route**
+------------
+
+
+.. doxygenfile:: eos/ip_route.h
+ :project: eossdk
+
+Type definitions in **ip_route**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/ip_route.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/iterator.rst.txt b/docs/2.23.0/ref/_sources/iterator.rst.txt
new file mode 100644
index 0000000..9536cac
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/iterator.rst.txt
@@ -0,0 +1,7 @@
+**iterator**
+------------
+
+
+.. doxygenfile:: eos/iterator.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/lldp.rst.txt b/docs/2.23.0/ref/_sources/lldp.rst.txt
new file mode 100644
index 0000000..7dcabc2
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/lldp.rst.txt
@@ -0,0 +1,13 @@
+**lldp**
+--------
+
+
+.. doxygenfile:: eos/lldp.h
+ :project: eossdk
+
+Type definitions in **lldp**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/lldp.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/mac_table.rst.txt b/docs/2.23.0/ref/_sources/mac_table.rst.txt
new file mode 100644
index 0000000..775b229
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/mac_table.rst.txt
@@ -0,0 +1,13 @@
+**mac_table**
+-------------
+
+
+.. doxygenfile:: eos/mac_table.h
+ :project: eossdk
+
+Type definitions in **mac_table**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/mac_table.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/macsec.rst.txt b/docs/2.23.0/ref/_sources/macsec.rst.txt
new file mode 100644
index 0000000..678fd3d
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/macsec.rst.txt
@@ -0,0 +1,13 @@
+**macsec**
+----------
+
+
+.. doxygenfile:: eos/macsec.h
+ :project: eossdk
+
+Type definitions in **macsec**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/macsec.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/mlag.rst.txt b/docs/2.23.0/ref/_sources/mlag.rst.txt
new file mode 100644
index 0000000..2d0a52b
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/mlag.rst.txt
@@ -0,0 +1,13 @@
+**mlag**
+--------
+
+
+.. doxygenfile:: eos/mlag.h
+ :project: eossdk
+
+Type definitions in **mlag**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/mlag.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/mpls.rst.txt b/docs/2.23.0/ref/_sources/mpls.rst.txt
new file mode 100644
index 0000000..7f3633b
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/mpls.rst.txt
@@ -0,0 +1,13 @@
+**mpls**
+--------
+
+
+.. doxygenfile:: eos/mpls.h
+ :project: eossdk
+
+Type definitions in **mpls**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/mpls.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/mpls_route.rst.txt b/docs/2.23.0/ref/_sources/mpls_route.rst.txt
new file mode 100644
index 0000000..7f8bc12
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/mpls_route.rst.txt
@@ -0,0 +1,13 @@
+**mpls_route**
+--------------
+
+
+.. doxygenfile:: eos/mpls_route.h
+ :project: eossdk
+
+Type definitions in **mpls_route**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/mpls_route.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/mpls_vrf_label.rst.txt b/docs/2.23.0/ref/_sources/mpls_vrf_label.rst.txt
new file mode 100644
index 0000000..54d16fe
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/mpls_vrf_label.rst.txt
@@ -0,0 +1,13 @@
+**mpls_vrf_label**
+------------------
+
+
+.. doxygenfile:: eos/mpls_vrf_label.h
+ :project: eossdk
+
+Type definitions in **mpls_vrf_label**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/mpls_vrf_label.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/neighbor_table.rst.txt b/docs/2.23.0/ref/_sources/neighbor_table.rst.txt
new file mode 100644
index 0000000..b79ff99
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/neighbor_table.rst.txt
@@ -0,0 +1,13 @@
+**neighbor_table**
+------------------
+
+
+.. doxygenfile:: eos/neighbor_table.h
+ :project: eossdk
+
+Type definitions in **neighbor_table**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/neighbor_table.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/nexthop_group.rst.txt b/docs/2.23.0/ref/_sources/nexthop_group.rst.txt
new file mode 100644
index 0000000..4aeb298
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/nexthop_group.rst.txt
@@ -0,0 +1,13 @@
+**nexthop_group**
+-----------------
+
+
+.. doxygenfile:: eos/nexthop_group.h
+ :project: eossdk
+
+Type definitions in **nexthop_group**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/nexthop_group.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/nexthop_group_tunnel.rst.txt b/docs/2.23.0/ref/_sources/nexthop_group_tunnel.rst.txt
new file mode 100644
index 0000000..b91c893
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/nexthop_group_tunnel.rst.txt
@@ -0,0 +1,13 @@
+**nexthop_group_tunnel**
+------------------------
+
+
+.. doxygenfile:: eos/nexthop_group_tunnel.h
+ :project: eossdk
+
+Type definitions in **nexthop_group_tunnel**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/nexthop_group_tunnel.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/panic.rst.txt b/docs/2.23.0/ref/_sources/panic.rst.txt
new file mode 100644
index 0000000..17e3ca1
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/panic.rst.txt
@@ -0,0 +1,7 @@
+**panic**
+---------
+
+
+.. doxygenfile:: eos/panic.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/policy_map.rst.txt b/docs/2.23.0/ref/_sources/policy_map.rst.txt
new file mode 100644
index 0000000..5766d3a
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/policy_map.rst.txt
@@ -0,0 +1,13 @@
+**policy_map**
+--------------
+
+
+.. doxygenfile:: eos/policy_map.h
+ :project: eossdk
+
+Type definitions in **policy_map**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/policy_map.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/route_map.rst.txt b/docs/2.23.0/ref/_sources/route_map.rst.txt
new file mode 100644
index 0000000..34f5b1d
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/route_map.rst.txt
@@ -0,0 +1,13 @@
+**route_map**
+-------------
+
+
+.. doxygenfile:: eos/route_map.h
+ :project: eossdk
+
+Type definitions in **route_map**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/route_map.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/sdk.rst.txt b/docs/2.23.0/ref/_sources/sdk.rst.txt
new file mode 100644
index 0000000..8604b56
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/sdk.rst.txt
@@ -0,0 +1,13 @@
+**sdk**
+-------
+
+
+.. doxygenfile:: eos/sdk.h
+ :project: eossdk
+
+Type definitions in **sdk**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/sdk.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/structured_filter.rst.txt b/docs/2.23.0/ref/_sources/structured_filter.rst.txt
new file mode 100644
index 0000000..63059c0
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/structured_filter.rst.txt
@@ -0,0 +1,13 @@
+**structured_filter**
+---------------------
+
+
+.. doxygenfile:: eos/structured_filter.h
+ :project: eossdk
+
+Type definitions in **structured_filter**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/structured_filter.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/subintf.rst.txt b/docs/2.23.0/ref/_sources/subintf.rst.txt
new file mode 100644
index 0000000..d44bf8a
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/subintf.rst.txt
@@ -0,0 +1,13 @@
+**subintf**
+-----------
+
+
+.. doxygenfile:: eos/subintf.h
+ :project: eossdk
+
+Type definitions in **subintf**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/subintf.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/system.rst.txt b/docs/2.23.0/ref/_sources/system.rst.txt
new file mode 100644
index 0000000..9038665
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/system.rst.txt
@@ -0,0 +1,7 @@
+**system**
+----------
+
+
+.. doxygenfile:: eos/system.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/timer.rst.txt b/docs/2.23.0/ref/_sources/timer.rst.txt
new file mode 100644
index 0000000..238ac61
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/timer.rst.txt
@@ -0,0 +1,7 @@
+**timer**
+---------
+
+
+.. doxygenfile:: eos/timer.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/tracing.rst.txt b/docs/2.23.0/ref/_sources/tracing.rst.txt
new file mode 100644
index 0000000..9dca00a
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/tracing.rst.txt
@@ -0,0 +1,7 @@
+**tracing**
+-----------
+
+
+.. doxygenfile:: eos/tracing.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/utility.rst.txt b/docs/2.23.0/ref/_sources/utility.rst.txt
new file mode 100644
index 0000000..9d667d9
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/utility.rst.txt
@@ -0,0 +1,7 @@
+**utility**
+-----------
+
+
+.. doxygenfile:: eos/utility.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/version.rst.txt b/docs/2.23.0/ref/_sources/version.rst.txt
new file mode 100644
index 0000000..6944667
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/version.rst.txt
@@ -0,0 +1,7 @@
+**version**
+-----------
+
+
+.. doxygenfile:: eos/version.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/vrf.rst.txt b/docs/2.23.0/ref/_sources/vrf.rst.txt
new file mode 100644
index 0000000..5cf45f9
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/vrf.rst.txt
@@ -0,0 +1,13 @@
+**vrf**
+-------
+
+
+.. doxygenfile:: eos/vrf.h
+ :project: eossdk
+
+Type definitions in **vrf**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. doxygenfile:: eos/types/vrf.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_sources/xcvr.rst.txt b/docs/2.23.0/ref/_sources/xcvr.rst.txt
new file mode 100644
index 0000000..2c516b9
--- /dev/null
+++ b/docs/2.23.0/ref/_sources/xcvr.rst.txt
@@ -0,0 +1,7 @@
+**xcvr**
+--------
+
+
+.. doxygenfile:: eos/xcvr.h
+ :project: eossdk
+
diff --git a/docs/2.23.0/ref/_static/basic.css b/docs/2.23.0/ref/_static/basic.css
new file mode 100644
index 0000000..be19270
--- /dev/null
+++ b/docs/2.23.0/ref/_static/basic.css
@@ -0,0 +1,856 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+ clear: both;
+}
+
+div.section::after {
+ display: block;
+ content: '';
+ clear: left;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+ width: 100%;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+ word-wrap: break-word;
+ overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+ list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+ overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+ float: left;
+ width: 80%;
+ padding: 0.25em;
+ box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+ float: left;
+ width: 20%;
+ border-left: none;
+ padding: 0.25em;
+ box-sizing: border-box;
+}
+
+
+img {
+ border: 0;
+ max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li div.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+ width: 90%;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+ width: 100%;
+}
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable ul {
+ margin-top: 0;
+ margin-bottom: 0;
+ list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+ padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+div.modindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+ padding: 2px;
+ border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+ min-width: 450px;
+ max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+ -moz-hyphens: auto;
+ -ms-hyphens: auto;
+ -webkit-hyphens: auto;
+ hyphens: auto;
+}
+
+a.headerlink {
+ visibility: hidden;
+}
+
+a.brackets:before,
+span.brackets > a:before{
+ content: "[";
+}
+
+a.brackets:after,
+span.brackets > a:after {
+ content: "]";
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+ visibility: visible;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+img.align-default, .figure.align-default {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.align-default {
+ text-align: center;
+}
+
+.align-right {
+ text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+ margin: 0 0 0.5em 1em;
+ border: 1px solid #ddb;
+ padding: 7px;
+ background-color: #ffe;
+ width: 40%;
+ float: right;
+ clear: right;
+ overflow-x: auto;
+}
+
+p.sidebar-title {
+ font-weight: bold;
+}
+
+div.admonition, div.topic, blockquote {
+ clear: left;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+ border: 1px solid #ccc;
+ padding: 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+/* -- content of sidebars/topics/admonitions -------------------------------- */
+
+div.sidebar > :last-child,
+div.topic > :last-child,
+div.admonition > :last-child {
+ margin-bottom: 0;
+}
+
+div.sidebar::after,
+div.topic::after,
+div.admonition::after,
+blockquote::after {
+ display: block;
+ content: '';
+ clear: both;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ border: 0;
+ border-collapse: collapse;
+}
+
+table.align-center {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table.align-default {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table caption span.caption-number {
+ font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 5px;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+table.footnote td, table.footnote th {
+ border: 0 !important;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px;
+}
+
+table.citation td {
+ border-bottom: none;
+}
+
+th > :first-child,
+td > :first-child {
+ margin-top: 0px;
+}
+
+th > :last-child,
+td > :last-child {
+ margin-bottom: 0px;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+ margin: 0.5em;
+ padding: 0.5em;
+}
+
+div.figure p.caption {
+ padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+ font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.field-name {
+ -moz-hyphens: manual;
+ -ms-hyphens: manual;
+ -webkit-hyphens: manual;
+ hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist {
+ margin: 1em 0;
+}
+
+table.hlist td {
+ vertical-align: top;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+ list-style: decimal;
+}
+
+ol.loweralpha {
+ list-style: lower-alpha;
+}
+
+ol.upperalpha {
+ list-style: upper-alpha;
+}
+
+ol.lowerroman {
+ list-style: lower-roman;
+}
+
+ol.upperroman {
+ list-style: upper-roman;
+}
+
+:not(li) > ol > li:first-child > :first-child,
+:not(li) > ul > li:first-child > :first-child {
+ margin-top: 0px;
+}
+
+:not(li) > ol > li:last-child > :last-child,
+:not(li) > ul > li:last-child > :last-child {
+ margin-bottom: 0px;
+}
+
+ol.simple ol p,
+ol.simple ul p,
+ul.simple ol p,
+ul.simple ul p {
+ margin-top: 0;
+}
+
+ol.simple > li:not(:first-child) > p,
+ul.simple > li:not(:first-child) > p {
+ margin-top: 0;
+}
+
+ol.simple p,
+ul.simple p {
+ margin-bottom: 0;
+}
+
+dl.footnote > dt,
+dl.citation > dt {
+ float: left;
+ margin-right: 0.5em;
+}
+
+dl.footnote > dd,
+dl.citation > dd {
+ margin-bottom: 0em;
+}
+
+dl.footnote > dd:after,
+dl.citation > dd:after {
+ content: "";
+ clear: both;
+}
+
+dl.field-list {
+ display: grid;
+ grid-template-columns: fit-content(30%) auto;
+}
+
+dl.field-list > dt {
+ font-weight: bold;
+ word-break: break-word;
+ padding-left: 0.5em;
+ padding-right: 5px;
+}
+
+dl.field-list > dt:after {
+ content: ":";
+}
+
+dl.field-list > dd {
+ padding-left: 0.5em;
+ margin-top: 0em;
+ margin-left: 0em;
+ margin-bottom: 0em;
+}
+
+dl {
+ margin-bottom: 15px;
+}
+
+dd > :first-child {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+dl > dd:last-child,
+dl > dd:last-child > :last-child {
+ margin-bottom: 0;
+}
+
+dt:target, span.highlighted {
+ background-color: #fbe54e;
+}
+
+rect.highlighted {
+ fill: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.sig-paren {
+ font-size: larger;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+.footnote:target {
+ background-color: #ffa;
+}
+
+.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.line-block .line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+ font-family: sans-serif;
+}
+
+.accelerator {
+ text-decoration: underline;
+}
+
+.classifier {
+ font-style: oblique;
+}
+
+.classifier:before {
+ font-style: normal;
+ margin: 0.5em;
+ content: ":";
+}
+
+abbr, acronym {
+ border-bottom: dotted 1px;
+ cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+ overflow: auto;
+ overflow-y: hidden; /* fixes display issues on Chrome browsers */
+}
+
+pre, div[class*="highlight-"] {
+ clear: both;
+}
+
+span.pre {
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ -webkit-hyphens: none;
+ hyphens: none;
+}
+
+div[class*="highlight-"] {
+ margin: 1em 0;
+}
+
+td.linenos pre {
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ display: block;
+}
+
+table.highlighttable tbody {
+ display: block;
+}
+
+table.highlighttable tr {
+ display: flex;
+}
+
+table.highlighttable td {
+ margin: 0;
+ padding: 0;
+}
+
+table.highlighttable td.linenos {
+ padding-right: 0.5em;
+}
+
+table.highlighttable td.code {
+ flex: 1;
+ overflow: hidden;
+}
+
+.highlight .hll {
+ display: block;
+}
+
+div.highlight pre,
+table.highlighttable pre {
+ margin: 0;
+}
+
+div.code-block-caption + div {
+ margin-top: 0;
+}
+
+div.code-block-caption {
+ margin-top: 1em;
+ padding: 2px 5px;
+ font-size: small;
+}
+
+div.code-block-caption code {
+ background-color: transparent;
+}
+
+table.highlighttable td.linenos,
+span.linenos,
+div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
+ user-select: none;
+}
+
+div.code-block-caption span.caption-number {
+ padding: 0.1em 0.3em;
+ font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+ margin: 1em 0;
+}
+
+code.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+code.descclassname {
+ background-color: transparent;
+}
+
+code.xref, a code {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+ background-color: transparent;
+}
+
+.viewcode-link {
+ float: right;
+}
+
+.viewcode-back {
+ float: right;
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ margin: -1px -10px;
+ padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+ vertical-align: middle;
+}
+
+div.body div.math p {
+ text-align: center;
+}
+
+span.eqno {
+ float: right;
+}
+
+span.eqno a.headerlink {
+ position: absolute;
+ z-index: 1;
+}
+
+div.math:hover a.headerlink {
+ visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0 !important;
+ width: 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ #top-link {
+ display: none;
+ }
+}
\ No newline at end of file
diff --git a/docs/2.23.0/ref/_static/doctools.js b/docs/2.23.0/ref/_static/doctools.js
new file mode 100644
index 0000000..144884e
--- /dev/null
+++ b/docs/2.23.0/ref/_static/doctools.js
@@ -0,0 +1,316 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+ "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+ "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+ return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+ if (typeof s === 'undefined')
+ s = document.location.search;
+ var parts = s.substr(s.indexOf('?') + 1).split('&');
+ var result = {};
+ for (var i = 0; i < parts.length; i++) {
+ var tmp = parts[i].split('=', 2);
+ var key = jQuery.urldecode(tmp[0]);
+ var value = jQuery.urldecode(tmp[1]);
+ if (key in result)
+ result[key].push(value);
+ else
+ result[key] = [value];
+ }
+ return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+ function highlight(node, addItems) {
+ if (node.nodeType === 3) {
+ var val = node.nodeValue;
+ var pos = val.toLowerCase().indexOf(text);
+ if (pos >= 0 &&
+ !jQuery(node.parentNode).hasClass(className) &&
+ !jQuery(node.parentNode).hasClass("nohighlight")) {
+ var span;
+ var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
+ if (isInSVG) {
+ span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+ } else {
+ span = document.createElement("span");
+ span.className = className;
+ }
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+ document.createTextNode(val.substr(pos + text.length)),
+ node.nextSibling));
+ node.nodeValue = val.substr(0, pos);
+ if (isInSVG) {
+ var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+ var bbox = node.parentElement.getBBox();
+ rect.x.baseVal.value = bbox.x;
+ rect.y.baseVal.value = bbox.y;
+ rect.width.baseVal.value = bbox.width;
+ rect.height.baseVal.value = bbox.height;
+ rect.setAttribute('class', className);
+ addItems.push({
+ "parent": node.parentNode,
+ "target": rect});
+ }
+ }
+ }
+ else if (!jQuery(node).is("button, select, textarea")) {
+ jQuery.each(node.childNodes, function() {
+ highlight(this, addItems);
+ });
+ }
+ }
+ var addItems = [];
+ var result = this.each(function() {
+ highlight(this, addItems);
+ });
+ for (var i = 0; i < addItems.length; ++i) {
+ jQuery(addItems[i].parent).before(addItems[i].target);
+ }
+ return result;
+};
+
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+ jQuery.uaMatch = function(ua) {
+ ua = ua.toLowerCase();
+
+ var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+ /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+ /(msie) ([\w.]+)/.exec(ua) ||
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+ [];
+
+ return {
+ browser: match[ 1 ] || "",
+ version: match[ 2 ] || "0"
+ };
+ };
+ jQuery.browser = {};
+ jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+ init : function() {
+ this.fixFirefoxAnchorBug();
+ this.highlightSearchWords();
+ this.initIndexTable();
+ if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
+ this.initOnKeyListeners();
+ }
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS : {},
+ PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
+ LOCALE : 'unknown',
+
+ // gettext and ngettext don't access this so that the functions
+ // can safely bound to a different name (_ = Documentation.gettext)
+ gettext : function(string) {
+ var translated = Documentation.TRANSLATIONS[string];
+ if (typeof translated === 'undefined')
+ return string;
+ return (typeof translated === 'string') ? translated : translated[0];
+ },
+
+ ngettext : function(singular, plural, n) {
+ var translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated === 'undefined')
+ return (n == 1) ? singular : plural;
+ return translated[Documentation.PLURALEXPR(n)];
+ },
+
+ addTranslations : function(catalog) {
+ for (var key in catalog.messages)
+ this.TRANSLATIONS[key] = catalog.messages[key];
+ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+ this.LOCALE = catalog.locale;
+ },
+
+ /**
+ * add context elements like header anchor links
+ */
+ addContextElements : function() {
+ $('div[id] > :header:first').each(function() {
+ $('').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this headline')).
+ appendTo(this);
+ });
+ $('dt[id]').each(function() {
+ $('').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this definition')).
+ appendTo(this);
+ });
+ },
+
+ /**
+ * workaround a firefox stupidity
+ * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
+ */
+ fixFirefoxAnchorBug : function() {
+ if (document.location.hash && $.browser.mozilla)
+ window.setTimeout(function() {
+ document.location.href += '';
+ }, 10);
+ },
+
+ /**
+ * highlight the search words provided in the url in the text
+ */
+ highlightSearchWords : function() {
+ var params = $.getQueryParameters();
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+ if (terms.length) {
+ var body = $('div.body');
+ if (!body.length) {
+ body = $('body');
+ }
+ window.setTimeout(function() {
+ $.each(terms, function() {
+ body.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ }, 10);
+ $('
' + _('Hide Search Matches') + '
')
+ .appendTo($('#searchbox'));
+ }
+ },
+
+ /**
+ * init the domain index toggle buttons
+ */
+ initIndexTable : function() {
+ var togglers = $('img.toggler').click(function() {
+ var src = $(this).attr('src');
+ var idnum = $(this).attr('id').substr(7);
+ $('tr.cg-' + idnum).toggle();
+ if (src.substr(-9) === 'minus.png')
+ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+ else
+ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+ }).css('display', '');
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+ togglers.click();
+ }
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords : function() {
+ $('#searchbox .highlight-link').fadeOut(300);
+ $('span.highlighted').removeClass('highlighted');
+ },
+
+ /**
+ * make the url absolute
+ */
+ makeURL : function(relativeURL) {
+ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+ },
+
+ /**
+ * get the current relative url
+ */
+ getCurrentURL : function() {
+ var path = document.location.pathname;
+ var parts = path.split(/\//);
+ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+ if (this === '..')
+ parts.pop();
+ });
+ var url = parts.join('/');
+ return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+ },
+
+ initOnKeyListeners: function() {
+ $(document).keydown(function(event) {
+ var activeElementType = document.activeElement.tagName;
+ // don't navigate when in search box, textarea, dropdown or button
+ if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
+ && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
+ && !event.shiftKey) {
+ switch (event.keyCode) {
+ case 37: // left
+ var prevHref = $('link[rel="prev"]').prop('href');
+ if (prevHref) {
+ window.location.href = prevHref;
+ return false;
+ }
+ case 39: // right
+ var nextHref = $('link[rel="next"]').prop('href');
+ if (nextHref) {
+ window.location.href = nextHref;
+ return false;
+ }
+ }
+ }
+ });
+ }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+ Documentation.init();
+});
diff --git a/docs/2.23.0/ref/_static/documentation_options.js b/docs/2.23.0/ref/_static/documentation_options.js
new file mode 100644
index 0000000..318fd69
--- /dev/null
+++ b/docs/2.23.0/ref/_static/documentation_options.js
@@ -0,0 +1,12 @@
+var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
+ VERSION: '2.23.0',
+ LANGUAGE: 'None',
+ COLLAPSE_INDEX: false,
+ BUILDER: 'html',
+ FILE_SUFFIX: '.html',
+ LINK_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt',
+ NAVIGATION_WITH_KEYS: false
+};
\ No newline at end of file
diff --git a/docs/2.23.0/ref/_static/eossdk.css b/docs/2.23.0/ref/_static/eossdk.css
new file mode 100644
index 0000000..f173b2e
--- /dev/null
+++ b/docs/2.23.0/ref/_static/eossdk.css
@@ -0,0 +1,245 @@
+/*
+ * nature.css_t
+ * ~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- nature theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+ font-family: Arial, sans-serif;
+ font-size: 100%;
+ background-color: #111;
+ color: #555;
+ margin: 0;
+ padding: 0;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
+hr {
+ border: 1px solid #B1B4B6;
+}
+
+div.document {
+ background-color: #eee;
+}
+
+div.body {
+ background-color: #ffffff;
+ color: #3E4349;
+ padding: 0 30px 30px 30px;
+ font-size: 0.9em;
+}
+
+div.footer {
+ color: #555;
+ width: 100%;
+ padding: 13px 0;
+ text-align: center;
+ font-size: 75%;
+}
+
+div.footer a {
+ color: #444;
+ text-decoration: underline;
+}
+
+div.related {
+ background-color: #235291;
+ line-height: 36px;
+ color: #fff;
+ text-shadow: 0px 1px 0 #444;
+ font-size: 1.0em;
+}
+
+div.related a {
+ color: #FFF;
+}
+
+div.sphinxsidebar {
+ font-size: 0.75em;
+ line-height: 1.5em;
+}
+
+div.sphinxsidebarwrapper{
+ padding: 20px 0;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+ font-family: Arial, sans-serif;
+ color: #222;
+ font-size: 1.2em;
+ font-weight: normal;
+ margin: 0;
+ padding: 5px 10px;
+ background-color: #ddd;
+ text-shadow: 1px 1px 0 white
+}
+
+div.sphinxsidebar h4{
+ font-size: 1.1em;
+}
+
+div.sphinxsidebar h3 a {
+ color: #444;
+}
+
+
+div.sphinxsidebar p {
+ color: #888;
+ padding: 5px 20px;
+}
+
+div.sphinxsidebar p.topless {
+}
+
+div.sphinxsidebar ul {
+ margin: 10px 20px;
+ padding: 0;
+ color: #000;
+}
+
+div.sphinxsidebar a {
+ color: #444;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #ccc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar input[type=text]{
+ margin-left: 20px;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+a {
+ color: #4682B4;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #E32E00;
+ text-decoration: underline;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: Arial, sans-serif;
+ background-color: #BED4EB;
+ font-weight: normal;
+ color: #212224;
+ margin: 30px 0px 10px 0px;
+ padding: 5px 0 5px 10px;
+ text-shadow: 0px 1px 0 white
+}
+
+div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 150%; background-color: #C8D5E3; }
+div.body h3 { font-size: 120%; background-color: #D8DEE3; }
+div.body h4 { font-size: 110%; background-color: #D8DEE3; }
+div.body h5 { font-size: 100%; background-color: #D8DEE3; }
+div.body h6 { font-size: 100%; background-color: #D8DEE3; }
+
+a.headerlink {
+ color: #c60f0f;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+}
+
+a.headerlink:hover {
+ background-color: #c60f0f;
+ color: white;
+}
+
+div.body p, div.body dd, div.body li {
+ line-height: 1.5em;
+}
+
+div.admonition p.admonition-title + p {
+ display: inline;
+}
+
+div.highlight{
+ background-color: white;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.topic {
+ background-color: #eee;
+}
+
+div.warning {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+}
+
+p.admonition-title {
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+pre {
+ padding: 10px;
+ background-color: White;
+ color: #222;
+ line-height: 1.2em;
+ border: 1px solid #C6C9CB;
+ font-size: 1.1em;
+ margin: 1.5em 0 1.5em 0;
+ -webkit-box-shadow: 1px 1px 1px #d8d8d8;
+ -moz-box-shadow: 1px 1px 1px #d8d8d8;
+}
+
+tt {
+ background-color: #ecf0f3;
+ color: #222;
+ /* padding: 1px 2px; */
+ font-size: 1.1em;
+ font-family: monospace;
+}
+
+.viewcode-back {
+ font-family: Arial, sans-serif;
+}
+
+div.viewcode-block:target {
+ background-color: #f4debf;
+ border-top: 1px solid #ac9;
+ border-bottom: 1px solid #ac9;
+}
\ No newline at end of file
diff --git a/docs/2.23.0/ref/_static/file.png b/docs/2.23.0/ref/_static/file.png
new file mode 100644
index 0000000..a858a41
Binary files /dev/null and b/docs/2.23.0/ref/_static/file.png differ
diff --git a/docs/2.23.0/ref/_static/jquery-3.5.1.js b/docs/2.23.0/ref/_static/jquery-3.5.1.js
new file mode 100644
index 0000000..5093733
--- /dev/null
+++ b/docs/2.23.0/ref/_static/jquery-3.5.1.js
@@ -0,0 +1,10872 @@
+/*!
+ * jQuery JavaScript Library v3.5.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2020-05-04T22:49Z
+ */
+( function( global, factory ) {
+
+ "use strict";
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var flat = arr.flat ? function( array ) {
+ return arr.flat.call( array );
+} : function( array ) {
+ return arr.concat.apply( [], array );
+};
+
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+var isFunction = function isFunction( obj ) {
+
+ // Support: Chrome <=57, Firefox <=52
+ // In some browsers, typeof returns "function" for HTML