diff --git a/.gitignore b/.gitignore index a5a2371..d04cd53 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,10 @@ __pycache__/ # C extensions *.so +# Mac attribute files +.DS_Store +.DS_Store? + # Distribution / packaging .Python build/ diff --git a/README.md b/README.md index 17cda60..d338791 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![pylint](https://img.shields.io/badge/PyLint-9.42-yellow?logo=python&logoColor=white) +![pylint](https://img.shields.io/badge/PyLint-9.29-yellow?logo=python&logoColor=white) # Quantum Computing Application Specifications diff --git a/notebooks/EmbeddedFigures/gate_count_total.png b/notebooks/EmbeddedFigures/gate_count_total.png new file mode 100644 index 0000000..d2825ce Binary files /dev/null and b/notebooks/EmbeddedFigures/gate_count_total.png differ diff --git a/notebooks/EmbeddedFigures/t_count_total.png b/notebooks/EmbeddedFigures/t_count_total.png new file mode 100644 index 0000000..ad3d8fd Binary files /dev/null and b/notebooks/EmbeddedFigures/t_count_total.png differ diff --git a/notebooks/QuantumChromoDynamicsExample.ipynb b/notebooks/QuantumChromoDynamicsExample.ipynb new file mode 100644 index 0000000..5af6d95 --- /dev/null +++ b/notebooks/QuantumChromoDynamicsExample.ipynb @@ -0,0 +1,417 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simulation of Quantum Chromodynamics and Nuclear Astrophysics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Core-collapse supernovae are among the most catostrophic events in the universe and play an important role in cosmological history, providing an engine for the synthesis of elements heavier than iron. Although supernovae are ultimately driven by the microscopic mechanisms in nuclear physics, their simulation appears, at first glance, to be a problem of classical physics, involving transport and fluid dynamics. However, these supernovae generate a tremendous number of neutrinos, with the bulk of the energy of the supernova being carried away by the neutrinos.\n", + "\n", + "For a complete treatment of the physics of a supernova, it is critical to determine the exact momentum. At such\n", + "large densities, traditional classical computational methods of kinetic theory become impractical, as\n", + "it is necessary to track the time-evolution of the full many-body density matrix. Recently,\n", + "significant effort in the field has been devoted to using quantum computation and quantum information\n", + "science as a way forward.\n", + "\n", + "Tracing out a static nuclear and electron background that the neutrinos are embedded in, the Hamiltonian for our system is the following:\n", + "$$\\hat{H} = \\hat{H}_1 + \\hat{H}_2 $$\n", + "$$\\hat{H}_1 = \\sum_{f, f'}\\sum_{s, s'} \\int d^3 \\vec{p}B_{ff',ss'}(t, \\vec{p})\\hat{a}_{f,s}^\\dagger(\\vec{p})\\hat{a}_{f',s'\\vec{p}}$$\n", + "$$\\hat{H}_2 = \\sum_{f_1,f_2,f_3,f_4}\\sum_{s_1,s_2,s_3,s_4} \\int d^3\\vec{p_1}d^3\\vec{p_2}d^3\\vec{p_3}d^3\\vec{p_4}C(\\vec{p_1}^{f_1s_1},\\vec{p_2}^{f_2s_2},\\vec{p_3}^{f_3s_3},\\vec{p_4}^{f_4s_4})\\delta^{(3)}\\bigg( \\sum_{i}\\vec{p_i}\\bigg) $$\n", + "\n", + "$$\\times \\hat{a}^{\\dagger}_{f_3,s_3}(\\vec{p_3})\\hat{a}_{f_1,s_1}(\\vec{p_1})\\hat{a}^{\\dagger}_{f_4,s_4}(\\vec{p_4})\\hat{a}_{f_2,s_2}(\\vec{p_2})$$\n", + "\n", + "The following describes the terms in the Hamiltonian:\n", + "- The operators $\\hat{a}^{\\dagger}_{f,s,\\vec{p}}$,$\\hat{a}_{f,s,\\vec{p}}$ are fermionic creation and annihilation operators with anti-commutation relations that create and annihilate states of flavor f, spin s, and momentum $\\vec{p}$\n", + "- The coefficients C for relativistic neutrinos is easily expressed in terms of helicity projected 2-spinors, as helicity and chirality dependence becomes identical, and is given as:\n", + "$$C(\\vec{p_1}^f, \\vec{p_2}^{f'}, \\vec{p_3}^f, \\vec{p_4}^{f'}) = \\frac{G_f}{\\sqrt{2}}\\bra{p_1} \\gamma^\\mu \\lvert p_3] \\bra{p_2}\\gamma_\\mu \\lvert p_4] $$\n", + "- For neutrino-anti-neutrino annihilation we have:\n", + " $$C(\\vec{p_1}^f, \\vec{p_2}^{f'}, \\vec{p_3}^{f}, \\vec{p_4}^{f'}) = \\frac{G_F}{\\sqrt{2}}\\bra{p_1} \\gamma^\\mu \\lvert p_2] \\bra{p_3}\\gamma_\\mu \\lvert p_4] $$\n", + "- The Hamiltonians $\\hat{H}_1$ and $\\hat{H}_2$ represent the one and two-body neutrino Hamiltonians\n", + " - The one body Hamiltonian includes the neutrino kinetic energy terms, the mass mixing matrix, and the interactions of neutrinos against any fixed background of nuclear or electron matter\n", + "- $G_F$ is the low energy coupling constant from the 4-Fermi effective theory of the standard model that results from integrating out the Z-boson\n", + "\n", + "The primary goal of the theorist analyzing the problem is to calculate the final distribution of\n", + "momenta and flavors of the neutrinos given a specific initial distribution. The asymptotic flavor-dependent momentum spectrum is then defined as:\n", + "$$N_f(t, \\vec{p}) = tr\\bigg[\\hat{a}^{\\dagger}_{f}(\\vec{p})\\hat{a}_{f}(\\vec{p})e^{it\\hat{H}}\\hat{\\rho}e^{-it\\hat{H}} \\bigg], \\text{as } t \\gg T_{sn} $$\n", + "where:\n", + "- $\\hat{\\rho}$ is the initial density matrix of all the neutrinos\n", + "- t is the time scale \n", + "- $T_{sn}$ is the time scale where we can expect the neutrinos will escape the supernova, and the neutrino-neutrino and neutrino-matter interactions will become irrelevant, as the matter and neutrino densities plummet\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, a lower bound to the computational gate complexity of our Hamiltonian can be provided by considering a simplified case of the neutrino scattering Hamiltonian known as the forward scattering model. As the forward scattering model is a strict subset of the full problem, any gate count and qubit requirements for the forward scattering problem should be considered as a lower bound on the difficulty of the full problem.\n", + "\n", + "In the integrals over all possible momenta, we consider two decisions:\n", + "1. $\\vec{p_1} = -\\vec{p_3}$ and $\\vec{p_2} = -\\vec{p_1}$\n", + "2. $\\vec{p_1} = -\\vec{p_4}$ and $\\vec{p_2} = -\\vec{p_3}$\n", + "which represents the forward/back-scattering scenarios.\n", + "\n", + "This model comes with several more restrictions:\n", + "- Neglect anti-neutrinos\n", + "- Restrict to a two-flavor model\n", + "- Fix the number of momentum nodes to be the number of neutrinos, N=K\n", + "\n", + "We can then write the Hamiltonian as an all-to-all Heisenberg model, yielding\n", + "$$\\hat{H} = \\sum_{i=1}^{N}\\vec{b_i} \\cdot \\hat{\\vec{\\sigma_{i}}} + \\frac{G_{F}\\mu}{\\sqrt{2}N} p_i \\cdot p_j \\hat{\\vec{\\sigma_i}} \\cdot \\hat{\\vec{\\sigma_{j}}} $$\n", + "\n", + "Where N is now the number of neutrinos or equivalently momentum nodes, and $\\vec{b}_i$ is the one-body coupling matrix, $\\vec{p}_i$ is the momentum of the i-th neutrino, $\\mu$ is the density of neutrinos, which we can take to be 1 with a redition of time after setting the one-body terms to zero, and $\\hat{\\vec{\\sigma_i}}$ is a Pauli matrix operating on the flavor space of the i-th momentum mode. \n", + "\n", + "With an all-to-all connected architecture, the simplest Trotterization of this Hamiltonian yields a circuit with N depth for a single trotter step." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import cirq\n", + "\n", + "import numpy as np\n", + "\n", + "import networkx as nx\n", + "\n", + "from qca.utils.algo_utils import estimate_trotter\n", + "from qca.utils.hamiltonian_utils import flatten_nx_graph, pyliqtr_hamiltonian_to_openfermion_qubit_operator\n", + "\n", + "from pyLIQTR.utils.Hamiltonian import Hamiltonian as pyH" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Initial State Preparation\n", + "A reasonable initial state is a product state, where each neutrino is Gaussian distributed over momenta, with the momentum peaked at the nuclear scales at which the neutrinos are generated, i.e., 1 - 10 MeV. Product states are sufficient due to the uncorrelated production of the neutrinos, and the Gaussian distribution localizes the neutrinos to specific regions of the supernova.\n", + "\n", + "For determining a good initial state that provides information over how the thermalization proceeds as function of the initial total spin along the z-direction, there are five cases we can consider. Despite their being more exotic states that we can consider, such states are irrelevant for this task. These five possible initial states are:\n", + "1. 50% qubits up state and the rest down\n", + "2. 60% qubits up state and the rest down\n", + "3. 70% qubits up state and the rest down\n", + "4. 80% qubits up state and the rest down\n", + "5. 90% qubits up state and the rest down\n", + "\n", + "As such, we can clearly see that the cost for preparing the initial state is a constant, depth 1 operation. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
0: ───X───\n",
+       "\n",
+       "1: ───X───\n",
+       "\n",
+       "2: ───X───\n",
+       "\n",
+       "3: ───X───\n",
+       "\n",
+       "4: ───X───
" + ], + "text/plain": [ + "0: ───X───\n", + "\n", + "1: ───X───\n", + "\n", + "2: ───X───\n", + "\n", + "3: ───X───\n", + "\n", + "4: ───X───" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def initial_state_prep(n_qubits:int, spin_up_percent:float) -> cirq.Circuit:\n", + " qubits_spin_up = int(spin_up_percent*n_qubits)\n", + " qubits = [cirq.LineQubit(idx) for idx in range(qubits_spin_up)]\n", + " spin_up_portion = [cirq.X(qb) for qb in qubits]\n", + "\n", + " circuit = cirq.Circuit()\n", + " circuit.append(spin_up_portion)\n", + " return circuit\n", + "\n", + "initial_state_prep(10, 0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dynamics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The simplest case that can prove to be of scientific use will be to consider a gas of momentum plane-wave neutrinos, undergoing two-body interactions without a complicating matter background, in the relativistic limit. Then, the one-body Hamiltonian reduces to the identity, being the conserved total kinetic energy of the system. Thus, the goal will be to see how equilibration is reached for flavor distribution of a single momentum mode for a given distribution of initial neutrino momenta and flavors.\n", + "\n", + "We first need to initialize the couplings. We know the following:\n", + "$$p_i \\cdot p_j = 1 - \\vec{p}_i \\cdot \\vec{p}_j$$\n", + "$$\\lvert \\lvert \\vec{p}_i \\rvert \\rvert = 1 \\quad \\forall_i$$\n", + "$$\\vec{p}_i = (p_i^x, p_i^y, p_i^z) $$\n", + "\n", + "We have two cases:\n", + "- Spherical distributed: $\\vec{p}_i$ is uniform on the sphere\n", + "- Gaussian distributed: $\\vec{p}_i$ is Gaussian about a direction\n", + " \n", + "Let Pr(x) mean \"probability of x\". To accomplish spherical, for each i, draw 3 random numbers x, y, z gaussian distributed:\n", + "- Pr(x) $\\propto exp(-x^2) $\n", + "- Pr(y) $\\propto exp(-y^2) $\n", + "- Pr(z) $\\propto exp(-z^2) $\n", + " \n", + "Set: $\\vec{p_i} = \\frac{1}{\\sqrt{x^2 + y^2 + z^2}}(x, y, z)$\n", + "\n", + "To accomplish Gaussian:\n", + "\n", + "For each i, draw 2 random numbers $\\theta, \\phi$ distributed as:\n", + "\n", + "- Pr($\\theta$) $\\propto \\Theta(\\pi - \\theta)exp(-\\theta^2/\\sigma_2) $\n", + "- Pr($\\phi$) uniform between [0, $2\\pi$]\n", + "Set: $\\vec{p}_i = (sin\\theta cos\\phi, sin\\theta sin\\phi, cos\\theta)$\n", + "\n", + "Note that we want $\\sigma \\ll \\pi/2$, so we can take it to be 0.25 for definiteness" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_spherical_momentum() -> list[float]:\n", + " rng = np.random.default_rng()\n", + " x = rng.normal(0, 1)\n", + " y = rng.normal(0, 1)\n", + " z = rng.normal(0, 1)\n", + " constant = 1/(np.sqrt(x**2 + y**2 + z**2))\n", + " ith_momentum = [\n", + " constant*x,\n", + " constant*y,\n", + " constant*z\n", + " ]\n", + " return ith_momentum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we understand how to generate the momentum for a given neutrino, we can use this to generate our Heisenberg Hamiltonian." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABop0lEQVR4nO3deVxU9f4/8NeZYRmWQUQQxTX3ZEjTNK8pCOZarqmBuWYuZWlW1zRLMdPr1bxaprnkigquaWqKCwKZaWZprrnmhqAIyDrAMOf3R1/5tbiwzMznnJnX8/G4j4cZzHl1y+E1n/f5nI8ky7IMIiIiIqIy0ogOQERERETqxkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5cJCSURERETlwkJJREREROXCQklERERE5eIkOoBIsiwjv8iMIlmGWQY0EqCVJLhqNZAkSXQ8IiIiIlVwqEKZbzLjTm4+MvILkZZXiAxjIUyy/I+vc5IkeOuc4ePmDG9XZ/i5u8LViYu5RERERA8iyfIDGpUdkWUZacZCXE7PwY0sI2QAEoCS/EPf/zoJQHW9DnUreqCizpmrl0RERER/YteFMinLiDOpWcgsMJW4RD7M/e/3cnFCYz89Ajx1lglJREREpHJ2WSjzi8w4kXIPN7KMVrtGdb0OTfwrwFXLUTgRERE5NrsrlElZRvycnIFCs1yuFcnHkQA4ayQ0q+KNAD1XK4mIiMhx2U2hlGUZv6Xl4Exqls2vHeirRwMfD95bSURERA7JLgqlLMs4nZqF82k5wjI08PFAoK+epZKIiIgcjl3cAPhbWo7QMgkA5xWQgYiIiEgE1RfK+zu5leB0ahaSrLgRiIiIiEiJVF0o84vM+Dk5Q3SMv/g5OQP5RWbRMYiIiIhsRtWF8kTKPRSalXULaKFZxq8p90THICIiIrIZ1RbKpCxj8ck3SiIDuJ5lRFI2R99ERETkGFRZKGVZVsx9kw9z5k4W7GADPRER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Xmr04PH26BlzEdb7ZYtcw9fNBcE1K1nktWyBK5RERERk93zcnHE3r8AiDzfffC7JAq/ycBL+yKsm6llLJSIiIiojb1dni52UY20yAG8dCyURERGRovi5u0ItW1wkAH5urqJjlAoLJREREdk9VycNqut1ii+VEoDqeh1cndRV0dSVloiIiKiM6lT0UPzYWwZQt6KH6BilxkJJREREDsFH5wwvF2XvR/ZycUJFld0/CbBQEhERkYOQJAmN/fSiYzxSYz89JBU90Pw+FkoiIiJyGAGeOkXeSykBqKHXIcBTJzpKmbBQEhERkUNp4l8BztY64LuMnDUSnvKvIDpGmbFQEhERkUNx1WrQrIq36Bh/0ayKt6qOWvw79SYnIiIiKqMAvQ6NfZVxP2Wgrx4BenWOuu9joSQiIiKH1NDHAw18xD6ip4ECMliCJMuy0h/JRERERGQVsizjfFoOTqdm2fzagb56NKzkafPrWgMLJRERETm8pCwjfk7OQKFZturDzyX8sQGnWRVv1Y+5/4yFkoiIiAhAfpEZJ1Lu4UaW0WrXqKHXoYl/BbioeAPOg7BQEhEREf1JUpYRZ1KzkFlgggSUa8Xy/vd7uTihsZ9etc+ZfBwWSiIiIqK/kWUZ6cZCXErPwY0sI2SgxOXy/tdJAKp76VDX2wMVdc6qPAGnpFgoiYiIiB4h32TGnbx8ZBgLkZZXiAxjIUwPqE9OkgRvnTN83JzhrXOGn5srXJ3sa7T9MCyURERERKUgyzLyi8wwyzKKZEArARpJgqtWY9erkI/CQklERERE5eIY67BEREREZDUslERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQuLJREREREVC4slERERERULiyURERERFQu/w9gNGGa8rckxAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def define_forward_scattering_term(n_neutrinos, curr_momentum, neighbor_momentum) -> float:\n", + " normalization_factor = 1/(np.sqrt(2)*n_neutrinos)\n", + " couplings = 1 - np.inner(curr_momentum, neighbor_momentum)\n", + " normalized_couplings = normalization_factor*couplings\n", + " return normalized_couplings\n", + "\n", + "def gen_couplings(n_neutrinos: int, curr_id: int, neighbor_id: int, momentum: dict) -> float:\n", + " curr_momentum = momentum[curr_id]\n", + " neighbor_momentum = momentum[neighbor_id]\n", + " return define_forward_scattering_term(\n", + " n_neutrinos=n_neutrinos,\n", + " curr_momentum=curr_momentum,\n", + " neighbor_momentum=neighbor_momentum\n", + " )\n", + "\n", + "def nx_heisenberg_terms(g:nx.Graph) -> list:\n", + " hamiltonian = []\n", + " n = len(g.nodes)\n", + " for (n1, n2, d) in g.edges(data=True):\n", + " weight = d['weight']\n", + " pauli_string = n * 'I'\n", + " for pauli in ['X', 'Y', 'Z']:\n", + " for i in range(len(g)):\n", + " if i == n1 or i == n2:\n", + " pauli_string = f'{pauli_string[:i]}{pauli}{pauli_string[i+1:]}'\n", + " hamiltonian.append((pauli_string, weight))\n", + " \n", + " return hamiltonian\n", + "\n", + "def generate_heisenberg_graph(n_neutrinos: int, site_interaction:float=0) -> nx.Graph:\n", + " graph = nx.Graph()\n", + " momentum = {}\n", + " seen = {}\n", + " node_id = 0\n", + " \n", + " for _ in range(n_neutrinos):\n", + " graph.add_node(node_id, weight=site_interaction)\n", + " momentum[node_id] = generate_spherical_momentum()\n", + " seen[node_id] = []\n", + " node_id += 1\n", + "\n", + " for idx, node in enumerate(graph.nodes):\n", + " curr_id = node\n", + " for neighbor in list(graph.nodes)[idx+1:]:\n", + " neighbor_id = neighbor\n", + " coupling_terms = gen_couplings(\n", + " n_neutrinos = n_neutrinos,\n", + " curr_id = curr_id,\n", + " neighbor_id = neighbor_id,\n", + " momentum=momentum\n", + " )\n", + " graph.add_edge(node, neighbor, weight=coupling_terms)\n", + " return graph\n", + "\n", + "def generate_hamiltonian(n_neutrinos: int, site_interactions:float=0):\n", + " graph = generate_heisenberg_graph(\n", + " n_neutrinos=n_neutrinos,\n", + " site_interaction=site_interactions\n", + " )\n", + " \n", + " flat_graph = flatten_nx_graph(graph)\n", + " H = nx_heisenberg_terms(flat_graph)\n", + " return H\n", + "\n", + "neutrino_graph = generate_heisenberg_graph(4)\n", + "pos = {node: [node] for node in neutrino_graph.nodes()}\n", + "edge_labels = nx.get_edge_attributes(neutrino_graph, 'weight')\n", + "\n", + "nx.draw(neutrino_graph, with_labels=True, node_size=1000, font_size=10, node_color = 'lightblue', font_color = 'black')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After generating our Hamiltonian, we perform quantum evolution until the required momentum spectra reaches an equilibrium value. The equilibrium value can be deduced as a steady state value in time of the momentum spectra, where moment-to-moment fluctuations are small, relative to the long-time averaged observable. For this notebook, we will be using a first order trotterization." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time to find term ordering: 0.0008644580375403166 seconds\n", + "Time to generate trotter circuit from openfermion: 2.583954483270645e-06 seconds\n", + "Time to generate a clifford + T circuit from trotter circuit: 0.09369608294218779 seconds\n" + ] + }, + { + "data": { + "text/html": [ + "
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ┌──┐                   ┌─────┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ┌──┐                              ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ┌──┐                                 ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ┌──┐                  ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ┌──┐                                                                                       ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ┌──┐                   ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ┌──┐                              ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ┌──┐                              ┌──┐                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ┌──┐                  ┌──┐\n",
+       "reg_0: ───H───Y───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───H───H─────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────H───H───S───H────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@────H───S^-1───H───H───S───H─────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@────H───S^-1───H────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────────────────────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@────H────────────────────────────────────────────────────────────────────────────────────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H───S───H───@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@──────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@──────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───\n",
+       "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         │                      │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            │                                 │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             │                                    │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │                     │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             │                                                                                         │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    │                   │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │                              │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              │                              │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              │                  │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │                                                                                                                                                                                                                                                                   │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │                   │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      │                              │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              │                              │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      │                  │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │\n",
+       "reg_1: ───H───S───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───H───H─────────────────────┼────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H────┼S────H───@────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────┼────────@───H───S^-1───H───H───S───H───@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────@───H──────S^-1───H─────────────┼────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────┼────────────────────────────────────@──────────────────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────@───H────┼@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────┼───────────────────────────────────@─────H───H───S───H────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────┼───────────────────────────────────────────────────────────────────────────────@─────H───S^-1───H───H───S───H────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────H───S^-1───H────────────────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────────────────────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───X───S───X───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───X───H───H───────────X───S───Y───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S──────T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───X───H───H──────S───H───────────X───S───X───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T──────H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───X───H───S^-1───H───H───S───H───X───S───Y───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T──────H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───X───H───S^-1───H───X───S───X───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───X───\n",
+       "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            │                    │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       │            │         │            │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            │                                 │        │                              │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     │    │                               │    │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      │                     │                                    │                  │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     │                                                                                │        ││                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   │                   │                                   │                      │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                │                              │                                                                               │                                 │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            │                              │                                                                                                                                   │                                 │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        │                  │                                                                                                                                                                                                   │                     │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 │                                                                                                                                                                                                                                                           │\n",
+       "reg_2: ───H───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H────T┼────H───T───H───H───X───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───X───H───H────┼─────────X───Z───H────┼S^-1────T──────H───S──────T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────H┼────S───T──────H───S───T───H────T┼────H───X───H───H──────S───H───────────X───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T────H┼────X───H──────S^-1───H───H───S────H┼────X──────Z───H──────S^-1───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H────T┼────H───S──────T────H┼────S───T───H───S───T───H───T───H───X───H───S^-1───H───X───X───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T────H┼────T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───X───H────X┼────S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───H───────────X───S^-1───H───T───H───S───T───H────┼T────H───S───T───H────┼T────H──────S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───H──────S───H───────────X───S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S────┼T────H───S──────T───H───T───H────┼T────H──────S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───S^-1───H───H───S───H───X───S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T────┼H────S───T──────H───S───T───H────┼S────T──────H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───S^-1───H───X───S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H────┼T────H───T──────H────┼T────H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H───S───H───@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@──────────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
+       "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         │                      │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            │                                 │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             │                                    │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │                     │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             │                                                                                          │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │                      │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               │                                 │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               │                                 │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               │                     │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             │       │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               │                   │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           │                              │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  │                              │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              │                  │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              │\n",
+       "reg_3: ───H─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────X────S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T────X─────H───H────────────X────────S^-1───H───S^-1───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H───H──────S───H─────────────X────S───T───H───T──────H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H───S^-1───H──────H───S───H─────X────S^-1───H───S^-1───T──────H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H───S^-1───H─────X────S───T───H───T───H───T───H───S───T───H───S──────T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H─────────────────────────────────────────────────────────────────────────────────────X────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H──────T───H───T───H───S───T────X─────H───H────────────X─────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H──────S───T───H───S───T───H──────S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────X─────H───H──────S───H────────────X─────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S──────T───H───T───H───S───T──────H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────X─────H───S^-1───H───H───S───H────X─────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H──────T───H───S──────T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────X─────H───S^-1───H────X─────S───Y───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───X───H───X───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───X───H───H───────────X───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───X───H───H──────S───H───────────X───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S──────T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───X───H───S^-1───H───H───S───H───X───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T──────H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───X───H───S^-1───H───X───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H──────S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───X───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n",
+       "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       └──┘                   └─────┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     └──┘                              └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          └──┘                                 └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        └──┘                  └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          └──┘                                                                                       └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         └──┘                   └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            └──┘                              └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            └──┘                              └──┘                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            └──┘                  └──┘
" + ], + "text/plain": [ + " ┌──┐ ┌──┐ ┌─────┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐\n", + "reg_0: ───H───Y───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───H───H─────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────H───H───S───H────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@────H───S^-1───H───H───S───H─────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@────H───S^-1───H────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────────────────────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@────H────────────────────────────────────────────────────────────────────────────────────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H───S───H───@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@──────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@──────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + "reg_1: ───H───S───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───H───H─────────────────────┼────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H────┼S────H───@────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────┼────────@───H───S^-1───H───H───S───H───@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────@───H──────S^-1───H─────────────┼────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────┼────────────────────────────────────@──────────────────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────@───H────┼@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────┼───────────────────────────────────@─────H───H───S───H────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────┼───────────────────────────────────────────────────────────────────────────────@─────H───S^-1───H───H───S───H────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────H───S^-1───H────────────────@────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@─────────────────────@─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───X───S───X───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───X───H───H───────────X───S───Y───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S──────T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───X───H───H──────S───H───────────X───S───X───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T──────H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───X───H───S^-1───H───H───S───H───X───S───Y───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T──────H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───X───H───S^-1───H───X───S───X───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───X───\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + "reg_2: ───H───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H────T┼────H───T───H───H───X───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───X───H───H────┼─────────X───Z───H────┼S^-1────T──────H───S──────T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────H┼────S───T──────H───S───T───H────T┼────H───X───H───H──────S───H───────────X───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T────H┼────X───H──────S^-1───H───H───S────H┼────X──────Z───H──────S^-1───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H────T┼────H───S──────T────H┼────S───T───H───S───T───H───T───H───X───H───S^-1───H───X───X───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T────H┼────T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───X───H────X┼────S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───H───────────X───S^-1───H───T───H───S───T───H────┼T────H───S───T───H────┼T────H──────S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───H──────S───H───────────X───S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S────┼T────H───S──────T───H───T───H────┼T────H──────S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───S^-1───H───H───S───H───X───S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T────┼H────S───T──────H───S───T───H────┼S────T──────H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───S^-1───H───X───S^-1───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H────┼T────H───T──────H────┼T────H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───X───H───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───H───S───H───@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───H───S───H───@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───H───S^-1───H───────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@──────────────────@──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────@───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │\n", + "reg_3: ───H─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────X────S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T────X─────H───H────────────X────────S^-1───H───S^-1───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H───H──────S───H─────────────X────S───T───H───T──────H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H───S^-1───H──────H───S───H─────X────S^-1───H───S^-1───T──────H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H───S^-1───H─────X────S───T───H───T───H───T───H───S───T───H───S──────T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T─────X────H─────────────────────────────────────────────────────────────────────────────────────X────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H──────T───H───T───H───S───T────X─────H───H────────────X─────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H──────S───T───H───S───T───H──────S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────X─────H───H──────S───H────────────X─────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S──────T───H───T───H───S───T──────H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────X─────H───S^-1───H───H───S───H────X─────S^-1───H───Z───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H──────T───H───S──────T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T────X─────H───S^-1───H────X─────S───Y───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───X───H───X───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───X───H───H───────────X───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───X───H───H──────S───H───────────X───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S──────T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───X───H───S^-1───H───H───S───H───X───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T──────H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───X───H───S^-1───H───X───S───X───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H──────S───T───H───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───S───T───H───S───T───H───T───H───S───T───H───T───H───S───T───H───S───T───H───T───H───T───H───S───T───H───T───H───S───T───H───T───H───T───H───T───H───T───H───S───T───H───T───H───T───X───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n", + " └──┘ └──┘ └─────┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n_neutrinos = 4\n", + "\n", + "h_neutrino = generate_hamiltonian(n_neutrinos)\n", + "\n", + "energy_precision = 1e-3\n", + "evolution_time = np.sqrt(n_neutrinos)\n", + "h_neutrino_pyliqtr = pyH(h_neutrino)\n", + "qb_op_hamiltonian = pyliqtr_hamiltonian_to_openfermion_qubit_operator(h_neutrino_pyliqtr)\n", + "estimate_trotter(\n", + " openfermion_hamiltonian=qb_op_hamiltonian,\n", + " evolution_time=evolution_time,\n", + " energy_precision=energy_precision,\n", + " outdir='QCD/',\n", + " hamiltonian_name='forward_scattering',\n", + " nsteps=1,\n", + " trotter_order=1\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analysis\n", + "Given this workflow, we can analyze the resource estimates of this Hamiltonian of varying neutrino count. For this section, we investigate the resource estimates from performing a sweep over [50, 100, 200, 400, 800, 1000] neutrinos where we will be focusing on the total gate count and the number of T gates. The only parameter that needs to change here is 'n_neutrinos' as it will be the parameter responsible for specifying the number of neutrinos when building our Hamiltonian.\n", + "\n", + "Note that for the following plots, both are in a log-log scale and are neutrino system size vs some resource for a single trotter step.\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "qca", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/scripts/QCD-RE.py b/scripts/QCD-RE.py new file mode 100644 index 0000000..b10145d --- /dev/null +++ b/scripts/QCD-RE.py @@ -0,0 +1,122 @@ +from argparse import ArgumentParser + +import numpy as np + +import networkx as nx + +from qca.utils.algo_utils import estimate_trotter +from qca.utils.hamiltonian_utils import flatten_nx_graph, pyliqtr_hamiltonian_to_openfermion_qubit_operator + +from pyLIQTR.utils.Hamiltonian import Hamiltonian as pyH + +def parse_args(): + parser = ArgumentParser(prog='QCD Resource Estimate Generator') + parser.add_argument('-N', '--n_neutrinos', type=int, help='Number of neutrinos in the forward scattering model') + parser.add_argument('-T', '--trotter_steps', type=int, default=None, help='Number of trotter steps') + parser.add_argument('-d', '--directory', type=str, default='./', help='output file directory') + parser.add_argument('-S', '--site_inter', type=float, default=0.0, help='site interaction terms') + parser.add_argument('-P', '--energy_precision', type=float, required=True, help='acceptable shift in state energy') + parser.add_argument('-O', '--trotter_order', type=int, help='Specify the trotter order used', default=2) + return parser.parse_args() + +def generate_spherical_momentum() -> list[float]: + rng = np.random.default_rng() + x = rng.normal(0, 1) + y = rng.normal(0, 1) + z = rng.normal(0, 1) + constant = 1/(np.sqrt(x**2 + y**2 + z**2)) + ith_momentum = [ + constant*x, + constant*y, + constant*z + ] + return ith_momentum + +def define_forward_scattering_term(n_neutrinos, curr_momentum, neighbor_momentum) -> float: + normalization_factor = 1/(np.sqrt(2)*n_neutrinos) + couplings = 1 - np.inner(curr_momentum, neighbor_momentum) + normalized_couplings = normalization_factor*couplings + return normalized_couplings + +def gen_couplings(n_neutrinos: int, curr_id: int, neighbor_id: int, momentum: dict) -> float: + curr_momentum = momentum[curr_id] + neighbor_momentum = momentum[neighbor_id] + return define_forward_scattering_term( + n_neutrinos=n_neutrinos, + curr_momentum=curr_momentum, + neighbor_momentum=neighbor_momentum + ) + +def nx_heisenberg_terms(g:nx.Graph) -> list: + hamiltonian = [] + n = len(g.nodes) + for (n1, n2, d) in g.edges(data=True): + weight = d['weight'] + pauli_string = n * 'I' + for pauli in ['X', 'Y', 'Z']: + for i in range(len(g)): + if i == n1 or i == n2: + pauli_string = f'{pauli_string[:i]}{pauli}{pauli_string[i+1:]}' + hamiltonian.append((pauli_string, weight)) + + return hamiltonian + +def generate_heisenberg_graph(n_neutrinos: int, site_interaction:float=0) -> nx.Graph: + graph = nx.Graph() + momentum = {} + node_id = 0 + for _ in range(n_neutrinos): + graph.add_node(node_id, weight=site_interaction) + momentum[node_id] = generate_spherical_momentum() + node_id += 1 + + for idx, node in enumerate(graph.nodes): + curr_id = node + for neighbor in list(graph.nodes)[idx+1:]: + neighbor_id = neighbor + coupling_terms = gen_couplings( + n_neutrinos = n_neutrinos, + curr_id = curr_id, + neighbor_id = neighbor_id, + momentum=momentum + ) + graph.add_edge(node, neighbor, weight=coupling_terms) + return graph + +def generate_forward_scattering(n_neutrinos: int, site_interactions:float=0): + graph = generate_heisenberg_graph( + n_neutrinos=n_neutrinos, + site_interaction=site_interactions + ) + flat_graph = flatten_nx_graph(graph) + scattering_hamiltonian = nx_heisenberg_terms(flat_graph) + return scattering_hamiltonian + + +def main(): + args = parse_args() + n_neutrinos = args.n_neutrinos + num_steps = args.trotter_steps + trotter_order = args.trotter_order + site_interactions = args.site_inter + hamiltonian = generate_forward_scattering(n_neutrinos, site_interactions) + + evolution_time = np.sqrt(n_neutrinos) + h_neutrino_pyliqtr = pyH(hamiltonian) + qb_op_hamiltonian = pyliqtr_hamiltonian_to_openfermion_qubit_operator(h_neutrino_pyliqtr) + + fname = f'{num_steps}_step_fs_{n_neutrinos}' if num_steps else f'estimated_fs_{n_neutrinos}' + outdir = args.directory + energy_precision = args.energy_precision + estimate_trotter( + openfermion_hamiltonian=qb_op_hamiltonian, + evolution_time=evolution_time, + energy_precision=energy_precision, + outdir=outdir, + hamiltonian_name=fname, + nsteps=num_steps, + trotter_order=trotter_order + ) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/src/qca/utils/algo_utils.py b/src/qca/utils/algo_utils.py index 418b2a6..73c3a49 100644 --- a/src/qca/utils/algo_utils.py +++ b/src/qca/utils/algo_utils.py @@ -109,10 +109,11 @@ def estimate_trotter( evolution_time: float, energy_precision: float, outdir:str, - metadata: EstimateMetaData=None, + metadata: EstimateMetaData | None =None, hamiltonian_name:str='hamiltonian', write_circuits:bool=False, - nsteps:int=None, + nsteps:int | None =None, + trotter_order: int | None = 2, include_nested_resources:bool=True ) -> Circuit: @@ -137,7 +138,7 @@ def estimate_trotter( t0 = time.perf_counter() trotter_circuit_of = trotterize_exp_qubop_to_qasm(openfermion_hamiltonian, - trotter_order=2, + trotter_order=trotter_order, evolution_time=evolution_time/nsteps, term_ordering=term_ordering) t1 = time.perf_counter()