{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "295b5202", "metadata": {}, "source": [ "# QSCOUT Optimizations with Qiskit" ] }, { "attachments": {}, "cell_type": "markdown", "id": "stone-aerospace", "metadata": {}, "source": [ "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Infleqtion/client-superstaq/blob/main/docs/source/optimizations/qscout/qscout_qss.ipynb) [![Launch Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Infleqtion/client-superstaq/HEAD?labpath=docs/source/optimizations/qscout/qscout_qss.ipynb)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "related-museum", "metadata": {}, "source": [ "Below is a brief tutorial on Superstaq optimizations for Quantum Scientific Computing Open User Testbed (QSCOUT), a trapped ion quantum computing testbed at Sandia National Laboratories. For more information on QSCOUT, visit their website [here](https://www.sandia.gov/quantum/quantum-information-sciences/projects/qscout/)." ] }, { "attachments": {}, "cell_type": "markdown", "id": "8c861954", "metadata": {}, "source": [ "## Imports and API Token\n", "\n", "This example tutorial notebook uses `qiskit-superstaq`, our Superstaq client for Qiskit; you can try it out by running `pip install qiskit-superstaq[examples]`:" ] }, { "cell_type": "code", "execution_count": 1, "id": "af13cd74", "metadata": {}, "outputs": [], "source": [ "# Required imports\n", "try:\n", " import qiskit\n", " import qiskit_superstaq as qss\n", "except ImportError:\n", " print(\"Installing qiskit-superstaq...\")\n", " %pip install --quiet 'qiskit-superstaq[examples]'\n", " print(\"Installed qiskit-superstaq.\")\n", " print(\"You may need to restart the kernel to import newly installed packages.\")\n", " import qiskit\n", " import qiskit_superstaq as qss\n", "\n", "import numpy as np" ] }, { "attachments": {}, "cell_type": "markdown", "id": "6526754f", "metadata": {}, "source": [ "To interface Superstaq via Qiskit, we must first instantiate a provider in `qiskit-superstaq` with `SuperstaqProvider()`. We then supply a Superstaq API token (or key) by either providing the API token as an argument of `qss.SuperstaqProvider()` or by setting it as an environment variable (see more details [here](https://superstaq.readthedocs.io/en/latest/get_started/basics/basics_qss.html#Set-up-access-to-Superstaq%E2%80%99s-API))." ] }, { "cell_type": "code", "execution_count": 2, "id": "855dfcb6", "metadata": {}, "outputs": [], "source": [ "# Get the qiskit superstaq provider for Superstaq backend\n", "provider = qss.SuperstaqProvider()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "dcc8201d", "metadata": {}, "source": [ "## Single Circuit Compilation\n", "\n", "Let us start by creating an example qiskit circuit that we will then compile and optimize for the QSCOUT trapped-ion testbed at Sandia National Laboratories." ] }, { "cell_type": "code", "execution_count": 3, "id": "f1462ec7", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhMAAADuCAYAAACDMIXKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAu4UlEQVR4nO3deVxU5f4H8M8M28AAIqKCgKAIiigqiglqhLkLkl01s2uLmpZpZv7UbnnL7sssl7plato108rMUjPDtRITNc0lUFlSEBSQCRHZd+b8/pggCZCZOTNzGPy8Xy9eMGf9Dgzwmec853lkgiAIICIiItKTXOoCiIiIyLwxTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkiqXUBRARmbPk5GSdts/JycHXX3+NyZMno0OHDlrv16NHD11LIzIZtkwQEZnQrVu3sH79ety6dUvqUogMhmGCiIiIRGGYICIiIlEYJoiIiEgUhgkiIhNq06YNIiMj0aZNG6lLITIYmSAIgtRFEBGZK13v5tAX7+aglowtE0REJlRRUYHr16+joqJC6lKIDIZhgojIhFJSUjB69GikpKRIXQqRwTBMEBERkSgcAZOIiBoQBAGlpaVSl6ETOzs7yGQyqcu4LzFMEBFRA6WlpbC3t5e6DJ0UFxdDqVRKXcZ9iZc5iIiISBS2TBARmVBAQACSkpKkLoPIoNgyQURERKIwTBARmVBaWhqmTJmCtLQ0qUshMhiGCSIiEyotLUV8fLzZ3SlBdC8ME0RERCQKwwQRERGJwjBBREREojBMEBGZkLu7O1auXAl3d3epSyEyGI4zQURkQk5OThg/frzUZRAZFFsmiIhMKC8vD9u3b0deXp7UpZicnZ0dOnfuDB8fH3h4eMDa2lqn/UNCQhAREWGk6kgMtkwQEZlQdnY2li9fjr59+8LZ2VnqcozKzs4Ojz32GIYNG4b+/fuje/fukMv/eg9bWVmJS5cu4fz58zhw4ACio6NRU1PT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", "text/plain": [ "
" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a two-qubit qiskit circuit\n", "rng = np.random.default_rng()\n", "theta = rng.uniform(0, 4 * np.pi)\n", "circuit1 = qiskit.QuantumCircuit(2)\n", "circuit1.cx(0, 1)\n", "circuit1.rz(theta, 1)\n", "circuit1.cx(0, 1)\n", "circuit1.measure_all()\n", "\n", "# Draw circuit for visualization\n", "circuit1.draw(output=\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e88aeb76", "metadata": {}, "source": [ "Using the same circuit from above as input, we will now compile it for QSCOUT and visualize the differences by drawing the compiled circuit. " ] }, { "cell_type": "code", "execution_count": 4, "id": "0435f8de", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with qscout compile\n", "compiler_output = provider.qscout_compile(circuit1)\n", "\n", "# Call circuit from the compiler output to get the corresponding output circuit\n", "output_circuit = compiler_output.circuit\n", "\n", "# Visualize the compiled circuit\n", "output_circuit.draw(\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "bb7feda2", "metadata": {}, "source": [ "The resulting output is now a circuit compiled and optimized to QSCOUT's native operations. But there's more! With Superstaq's compilation, users can also get the corresponding Jaqal (see [Just another quantum assembly language](https://arxiv.org/abs/2008.08042)) program for their compiled circuit. The Jaqal program is a useful representation that highlights the sequence of pulse level single and two-qubit gates that have to be executed on the trapped ions to realize the user's circuit. To view the jaqal program, users simply have to call `jaqal_program` on their `compiler_output`, and print to list it in a readable format. " ] }, { "cell_type": "code", "execution_count": 5, "id": "663125f1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "<\n", "\tRz allqubits[0] -3.141592653589793\n", "\tRz allqubits[1] -3.141592653589793\n", ">\n", "MS allqubits[0] allqubits[1] 0 1.138001122955302\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "measure_all\n", "\n" ] } ], "source": [ "# Get jaqal program\n", "print(compiler_output.jaqal_program)" ] }, { "cell_type": "markdown", "id": "c47e0bc4", "metadata": {}, "source": [ "Breaking down the printed Jaqal program, we see that we begin a 2-qubit quantum register with **allqubits[2]** in correspondance to our 2-qubit circuit. The **prepare_all** command prepares the state of all the qubits in the register in the $z$ basis as the standard. Next, the program describes the pulse-level gates to be used following the format outlined and described [here](https://www.sandia.gov/quantum/quantum-information-sciences/projects/qscout-jaqal/). For a quick reference, here is a brief description of the pulse-level gates and operations that are used in a Jaqal program: \n", "\n", "- **R** ` ` : Performs a counter-clockwise rotation around an axis in the equatorial plane of the Bloch sphere defined by `` , measured counter-clockwise from the $x$ axis, by the angle defined by ``.\n", "- **Rx** ` ` : Performs a counter-clockwise rotation around the $x$ axis, by the angle defined by ``.\n", "- **Ry** ` ` : Performs a counter-clockwise rotation around the $y$ axis, by the angle defined by ``.\n", "- **Rz** ` ` : Performs a counter-clockwise rotation around the $z$ axis, by the angle defined by ``.\n", "- **Px** `` : Performs a counter-clockwise rotation around the $x$ axis, by $\\pi$. In other words, a Pauli $X$ gate.\n", "- **Py** `>` : Performs a counter-clockwise rotation around the $y$ axis, by $\\pi$. In other words, Pauli $Y$ gate.\n", "- **Pz** `` : Performs a counter-clockwise rotation around the $z$ axis, by $\\pi$. In other words, Pauli $Z$ gate.\n", "- **Sx** `` : Performs a counter-clockwise rotation around the $x$ axis, by $\\pi/2$. This results in a $\\sqrt{X}$ gate.\n", "- **Sy** `` : Performs a counter-clockwise rotation around the $y$ axis, by $\\pi/2$. This results in a $\\sqrt{Y}$ gate.\n", "- **Sz** `` : Performs a counter-clockwise rotation around the $z$ axis, by $\\pi/2$. This results in a $\\sqrt{Z}$ gate.\n", "- **Sxd** `` : Performs a clockwise rotation around the $x$ axis, by $\\pi/2$. That is, a $\\sqrt{X}^\\dagger$ gate.\n", "- **Syd** `` : Performs a clockwise rotation around the $y$ axis, by $\\pi/2$. That is, a $\\sqrt{Y}^\\dagger$ gate.\n", "- **Szd** `` : Performs a clockwise rotation around the $z$ axis, by $\\pi/2$. That is, a $\\sqrt{Z}^\\dagger$ gate.\n", "- **MS** ` ` : This is the general two-qubit Mølmer–Sørensen gate used for entanglement. Supposing that $\\theta$ and $\\varphi$ represent the `` and `` respectively, the general MS gate is given by, $$\\exp\\left(-i\\left(\\frac{\\theta}{2}\\right)(\\cos \\varphi X + \\sin \\varphi Y)^{\\otimes 2}\\right).$$\n", "- **Sxx** ` ` : This is the XX version of two-qubit Mølmer–Sørensen gate, $$\\exp \\left(-i\\left(\\frac{\\pi}{4}\\right) X\\otimes X\\right).$$\n", "- **measure_all** : Command to measure all qubits of the quantum register in the $z$ basis. \n", "\n", "The Jaqal program output is also very useful is showcasing when multiple gates are combined into a single gate block for execution -- or in the case of parallel gate blocks -- executed at the same time. These gate blocks are marked by the angle brakets like so,\n", "
\n",
    "```\n",
    "<\n",
    "  // pulse-level gates\n",
    ">\n",
    "```\n",
    "
\n", "providing the user more valuable context between the device execution and the original circuit representation. Further details on the verstaility of the Jaqal program can be found at this [reference](https://www.sandia.gov/quantum/quantum-information-sciences/projects/qscout-jaqal/)." ] }, { "attachments": {}, "cell_type": "markdown", "id": "af41c8b6", "metadata": {}, "source": [ "## Multiple Circuits Compilation\n", "\n", "All the functionalities we have seen so far can also be used on a multiple circuits input as well. To illustrate this, let us create a different, example two-qubit circuit (say, a Bell-state circuit):" ] }, { "cell_type": "code", "execution_count": 6, "id": "9dc38d6a", "metadata": {}, "outputs": [ { "data": { "image/png": "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Lff8X/7yF2bNmkVhYWGVtV66dKnsZ09PT6ZMmcKCBQsYPHgw3bp1Y+DAgfTt25d+/foREOD48HBHD1dAyUjdhW+tBWBc3MDbanCEiEhN1LtDu1W9HEeWR0VF1XiqqZtnANq7dy99+/bF09OTl156ibi4OCIiIvD19cVisbB69WomTJhQYdag4uJili9fzrJlyzh+/HjZ897e3jz22GMsXryYwMDAGtVzMyPnSNUbFZHbgZFzpPWuR+pMpQOBNm/ezMiRI2vc7v333wdg2rRp/OlPf6qw/Oae6M08PDyYPHkykydPJiUlhd27d7Njxw7Wr1/P22+/TXJyMjt27LD7dWTnXDN8jrS4uFjnWUVEKqEgvYXY2Fji4+P54Ycf7ArSpKQkAPr2rfzOB99+W/2sQOHh4Tz66KM8+uijTJs2jU6dOvH555+TlJREmzZtalwLOH7sX71REbld6Bypizz88MOsWbOGlStX8vzzz5f1UKvTqFHJP8jP7xUIJQOQtmzZYlcdsbGxNG7cmKysLM6dO2d3kDpyuELnRkVEaqbezGzkCnFxcfTr14/Tp08zePBgfvjhh3LLi4uL+eabb3j22WfLjfi95557AHjllVfKzah09OhRRo4cWekdDo4dO8YzzzzDt99+W+48bVFREa+++ipZWVlYrVZiYyufr9LZNIuRiEjNaLBRNcszMjKIi4srm3ChdevWhISEcO3aNU6ePElubsl5w4SEBDp0KLkNUnZ2Nt26dSMxMREvLy/at29PcXExCQkJhIaG8txzzzF79uxyg43i4+O56667APD39ycyMhJPT09Onz5ddk51+fLl/Pa3v3Xo92OP0t5o/o0CHn9gsHqjIiK3oB5pNYKDg/nqq6945513GDRoELm5uRw8eJCkpCTatWvHlClT+Oqrr4iOji5r4+/vz549e3j66adp2rQpP/74Izk5OUyaNInDhw8TFhZWYT/R0dGsWrWKRx55hNDQUE6dOsWRI0ewWq2MHj2a3bt3uyVEAa7n36DVHc3VGxURqYF60yMV57uefwOrd0OzyxARqdUUpCIiIgbo0K6IiIgBClIREREDFKQiIiIGKEhFREQMUJCKiIgYoCAVERExQEEqIiJigIJURETEAAWpiIiIAQpSERERAxSkIiIiBihIRUREDFCQioiIGKAgFRERMUBBKiIiYoCCVERExAAFqYiIiAEKUhEREQMUpCIiIgYoSEVERAxQkIqIiBigIBURETFAQSoiImKAglRERMQABamIiIgBClIREREDFKQiIiIGKEhFREQMUJCKiIgYoCAVERExQEEqIiJigIJURETEAAWpiIiIAQpSERERAxSkIiIiBihIRUREDFCQioiIGKAgFRERMUBBKiIiYsD/Byk6/HqoTJpWAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create second circuit\n", "circuit2 = qiskit.QuantumCircuit(2)\n", "circuit2.h(0)\n", "circuit2.cx(0, 1)\n", "circuit2.measure_all()\n", "\n", "# Draw second circuit for visualization\n", "circuit2.draw(\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "733af808", "metadata": {}, "source": [ "By passing multiple circuits as a list to the `qscout_compile` endpoint, we can compile all of them individually with a single call to `qscout_compile`. This will return all the corresponding compiled circuits and Jaqal programs back as a list, like so: " ] }, { "cell_type": "code", "execution_count": 7, "id": "0d317286", "metadata": {}, "outputs": [], "source": [ "# Create list of circuits\n", "circuit_list = [circuit1, circuit2]\n", "\n", "# Compile a list of circuits and their respective jaqal programs\n", "compiler_output_list = provider.qscout_compile(circuit_list)\n", "jaqal_output_list = compiler_output_list.jaqal_programs" ] }, { "cell_type": "code", "execution_count": 8, "id": "31276b76", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Compiled circuit 1 \n", "\n", "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "<\n", "\tRz allqubits[0] -3.141592653589793\n", "\tRz allqubits[1] -3.141592653589793\n", ">\n", "MS allqubits[0] allqubits[1] 0 1.138001122955302\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "measure_all\n", "\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# To get the list of compiled output circuits from the compiler output list, call `circuits` instead of just `circuit` that is called for a single circuit input\n", "output_circuits = compiler_output_list.circuits\n", "\n", "# Visualize and get the jaqal program of the first compiled circuit\n", "print(\"Compiled circuit 1 \\n\")\n", "print(jaqal_output_list[0])\n", "output_circuits[0].draw(\"mpl\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "59ec6e17", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Compiled circuit 2 \n", "\n", "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] 3.141592653589793 3.141592653589793\n", "\tR allqubits[1] 3.141592653589793 3.141592653589793\n", ">\n", "Sxx allqubits[0] allqubits[1]\n", "<\n", "\tR allqubits[0] -1.5707963267948972 1.5707963267948966\n", "\tR allqubits[1] 0.0 1.570796326794898\n", ">\n", "Rz allqubits[0] -1.5707963267948966\n", "measure_all\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAADuCAYAAADMbYYaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAv4ElEQVR4nO3deUCUdeIG8GeAgYHhEkFBQFDAuMQTksMUQxNvLZO80hS3rDAjtZ+2a+2aClq76mrqoqmtqZvXeit5pW7miRh44c2loKJyqBzz+4OYJA5nhmHeeWeezz8x77zfd54Z3+CZ95QoFAoFiIiIiETKROgARERERA3BMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREomYmdAAiItLcxYsX1Zr/7t27+M9//oM333wTzZo1U2mMr6+vJtGIdIZbZoiIjEheXh4WL16MvLw8oaMQaQ3LDBEREYkaywwRERGJGssMERERiRrLDBGREbGzs0P//v1hZ2cndBQirZEoFAqF0CGIiEgz6p7NpAmezUT6jltmiIiMyNOnT3Hz5k08ffpU6ChEWsMyQ0RkRDIyMtC7d29kZGQIHYVIa1hmiIiISNR4BWA9pFAAFaVCp1CPiRSQSNQfJ8b3qo4XfS6G/v6Bhq0bz8q1n6exmJtq9j6pdgqFAsXFxULHUIuVlRUkXAkEwTKjhypKgYMLhU6hnsg4wNRc/XFifK/qeNHnYujvH9B83XhWDkzboP08jSVhGGDB36haU1xcDGtra6FjqKWwsBByuVzoGEaJu5mIiIhI1Pg9gojIiAQEBODChQtCxyDSKm6ZISIiIlFjmSEiMiLXr19HTEwMrl+/LnQUIq1hmSEiMiLFxcU4d+6c6M4UIqoPywwRERGJGssMERERiRrPZjJw564ewidLI6tNk5nL4ebUBlEdR2FQ+IcwNeVqYMi4DhCRoeNvMCMR2f4thPj2gQIKPHici+TTa7B0+8e4dfcCJr+xXOh4pANcBwgAXF1dkZCQAFdXV6GjEGkNy4yR8HHtiKhOI5WP+4dNxLhEX+w+kYSxvb+EvbWTgOlIF7gOEADY29tjwIABQscg0ioeM2OkLM3l8PXoAoVCgex7V4WOQwLgOmCc7t+/j7Vr1+L+/ftCR9E5Ozs7eHh4wMvLCy1atICJiXp/At944w20b9++ccJRg7DMGLGc3/6A2Vo5CJyEhMJ14HfpP63CxlndhY7R6HJycjBr1izk5OQIHaXROTg4YNKkSfjhhx9w7do1FBQU4MaNG8jIyEBWVhYePXqEo0ePYsGCBXjllVfqXdawYcOwfv167N+/n4VGD3E3k5F4UlqMh0X5UCgqj5fY/vNSZGSdha97CNyc2ggdj3SA6wAZi8DAQMTHxyMmJgYymazO+eRyOcLDwxEeHo64uDikpaVh8eLF+Ne//oWysjLlfMOGDcPatWthamoKBwcHDB8+HCkpKTp4J6Qqgy8z+fn5SExMxObNm5GZmQknJycMGTIEs2fPRlxcHFauXIlFixbhgw8+EDpqo1qzbybW7JtZbVpE4BB8OHixQIlI17gO1O7Hf43H5ePrUVFRhoqyUiwZV3mn5nf/9RAmJqYCpyN1SKVSTJ8+HTNmzIBUKq32XFFREc6ePYvbt2+jvLwc1tbWaNu2Lby8vJTzBAQEYMmSJYiNjcWYMWOQmpparcgAwNKlSzFt2jSdvi96MYMuMykpKYiOjkZubi7kcjn8/f2RnZ2NhQsX4urVq8p9xsawybDvyxPwStBQlFWU4nrOeWw4lID8h5kwl9b9rUVfVFRUYMvRBdh5fBlyH9yAvdwJr7R7E2+/9ldYmsuFjicaYl4H1PHw7jWc2j4XWRd/wuN7t2BqZgEre2c4tw6B3ytj4O5f/TT1qNgkRMUmIf2nVUj/aRXe+OyQMMGpQVq2bIn//ve/1X6f379/H99++y1Wr16NtLQ0VFRU1BjXpEkT9O7dG++99x66du0KAOjQoQNOnTqF9evXY/jw4dWKzMSJE6FQKHTynkh1Bltm8vPz0b9/f+Tm5iI+Ph4zZ86EjY0NACAxMRHTpk2DmZkZJBIJgoKCBE7b+FwdfdCxTRQAIMQ3GoGtIjB5SQQWbHoXM0auFzhd/b7ZPhlbjy5EeOBgvNEtHrfuXMDWowtxNessEib8qPZBfMZKzOuAqu5cO4WNX3aDiakUfhGj0dQ1AGWlJSjIvYKb5/dBamlTo8wYm6pdK3K54XwR8Pb2xoEDB+Du7g4AKCsrw+zZszF37lyUlJTUO/bBgwdYt24d1q1bh+DgYCQlJSEoKAhSqRSjRo1Szscio98MtszExcUhMzMTH3zwAebPn1/tualTp+L777/HuXPn0KpVK9ja2gqUUjgBnmGI6jgKyafXYFBEHAI8w4SOVKsbuWn477FFiAgcgplvb1JOd3ZohcX/jcOhc+vRo8NwAROKl1jWAXX8suULlD0txvAvU+Dk0a7G80UFuQKk0i+enp5ISkoSOobWODs7Izk5WVlkLl++jJiYGJw9e1btZZ08eRLBwcHYsGEDBg0apJx+/PhxFhk9Z5BfaS9cuIANGzbA0dERc+bMqXWeTp06AQDatav+C+/69esYMGAAbGxs0KRJE4wePRr37t1r9MxCGBH1Z5iYmGL13r8IHaVOB1PWQaFQYEjXj6pN7/NyLGRSK/x45t/CBDMQYlgH1FGQewUy66a1FhkAkNs76ziR/ikvL0dhYSHKy8uFjqIVK1asgKenJwAgNTUVERERGhWZKoMHD0b//v2rTQsODkZISEhDYlIjM8gys27dOlRUVGDEiBGwtraudR5LS0sA1cvM48ePERkZiczMTKxbtw7Lly/HkSNH0K9fv1r3tYqdq6M3ItvF4GzGfpy/dkToOLW6dPskTCQmeKll9V8k5lIZWrdoj8u3TwqUzDCIYR1Qh10zLzwpvIeMk5uFjqK3Ll68iODgYFy8eFHoKA02ZswY9OnTBwCQnZ2NXr16IS8vT+Pl/fFg31OnTgEATE1N8e2338LCwqLhoalRGGSZOXDgAAAgMrLufeOZmZkAqpeZ5cuXIysrC1u3bkW/fv0wdOhQfP/99zh+/Di2bdvWuKEF8tarM2AiMcHqffr5zfzeo2zYyh1hblbzl4ijnSseFuWjtOyZAMkMh76vA+oIGfQZTEyl2Lngdaz+pA2Sl7+D1B+/wf2sC0JHIy2zsbHB3//+d+XjCRMm4M6dOxovr7azlkJDQ3HixAkAgJ+fH+Lj4xsWmhqNQR4zc/PmTQCAh4dHrc+XlZXh2LFjAKqXmR07diAiIgItW7ZUTgsNDUXr1q2xffv2avtQ1dG5c2fk5qq+r97czBLLP7ii0Wv9UTuv7kieV/d+Xo/mftib2PDNzT5tfPCsrP4D7Wrzovf69FkxpLUUmcqxlWfhPC0thtTMXO3X1oUXfS7a/Leui67Wgbpoum6YSi0xeJZ6n42LTyjemnUaZ3Z9hRvndiP9p2+R/tO3AIAWL3VFrz+tgl2z1rWONTGVwszcUu2cVdr4+KC8VP332VBjxoxRa/6qi+Xt2rVL5d0xq1atUjNVw71oa/jIkSNhb28PAPj++++xc+dOjV+rtiJTdYzM2LFjkZqaClNTU0ycOBGJiYnVrkHzPB8fH56Q0ADOzs7KrWHqMsgyU1RUBAB1HsW+YcMG5Ofnw8bGBq1atVJOT09Px9ChQ2vMHxAQgPT0dI3z5ObmIisrS+X5ZVIrjV9LKDnZ2XhSWqz2uBe9VwtzK5QU3q31uWdlTyrn0ePP60Wfixj/rdWl6bphZqHZZ+Po3ha9/rQKAPAo/yayLhzGr4eSkH3pCLZ/PRBvzToN01rKr2/4CPiGj9DoNQEgOycbZU/Vf58NVVys3ms+efJE+V9Vx6rz+0tXJk6cqPw5ISFB4+XUV2SAyr8LVV9mXV1d0b9/f2zZsqXWZRnDVZX1lUGWGWdnZzx48ABnzpxBaGhotedycnIwZcoUAEBQUBAkEonyuQcPHiib/vMcHBxw6dKlBuVRh7mZ5t8OheLSooXGW2bq09S2BW7dScezsqc1djXlP8yCndxRb7fKAC/+XMT4b60uTdcNU2nDPxtbRw/Ydh0N34hR+OFvXZFz+Rhyr56A60sRDV72H7VwaSHIlhkrK/VKX9UVcWUymcpjhbjDdkVFRZ3lIDAwEIGBgQCAo0ePIjU1VaPXeFGRqbJkyRLllvnhw4fXWWZcXFy4ZaYB1P1b+TyDLDNRUVG4cOECEhIS0LNnT7RpU3mp9pMnT2LUqFHIz88HoLuL5am72az8GXBwYSOFaSRXLl+BqQad4kXv9SX3YJy+vA+Xbp1A29ZdldOflT7BtewUtG1d//1UhPaiz0WM/9bq0nTdeFoGTNugnQwSiQTOXi8j5/IxFD1onK0Ml69cgYUAv1HVPZC3tLQU48aNg42NTY2r5NZl1qxZmkRrkKKiojpP4AgODlb+vHXrVo2Wr2qRAYD9+/ejsLAQ1tbW6Ny5c53LvHLlikFdv0dMDLJCTp06FU2bNsXt27cREBCAtm3bwsfHByEhIWjdujV69OgBoOZp2U2aNEFBQUGN5d2/fx8ODrwRnxC6txsGiUSCzUf+UW36rl/+hSelxejRQfPdAmR4bp5PRkV5zeMZyp6V4Nb5fQAAB1d/XcfSK1KpFA4ODioXGX1UdWkNADh9+rTa49UpMkDlVqKq44s8PT3590APGWSZcXNzw5EjR9C3b1/IZDLcuHEDDg4OWLZsGXbu3InLly8DqFlm/Pz8aj02Jj09HX5+fjrJTtW1cmmLAWHv4+ivm/H56iHY9UsSlm6Px9LtHyOodTdeMI+qObJ2MlbEuWP/ij/h3L5/Iu3wShzf/AXWTm+Pe5m/wi9iNBzd2wodU1C3bt3CxIkTcevWLaGjaMzX11f587lz59Qaq26RqfL8jSX590D/GORuJqByZduxY0eN6YWFhbhx4wZMTEyU+1yr9OvXD9OnT0dmZibc3NwAAL/88guuXr2KefPm6SQ31fTegH+geRNP7PplOU5c2AlbuSMGhX+It1/7K/dPUzVdR3yNa6f/i+zLR5FxchOeFhfAwsoOju5B6Nx/Gvy7jhE6ouAeP36MgwcP4v333xc6isby8/Nx69YtWFpa1ro1vS5vvPGGRkUGqLyOTXZ2Np48eWKQ1x0TO4MtM3VJS0uDQqFAmzZtahz8NmHCBCxatAgDBw7EF198gSdPnmDq1KkICQnBwIEDBUpMpiamGNotHkO78RoPVD+Ptr3g0baX0DGokcXExGg07vLlyygoKEDTpk3VvtfS3LlzMXfuXI1elxqf0X2tPX/+PICau5gAwNbWFgcOHICLiwtiYmIwfvx4hIWFYceOHdwCQEQkcqmpqejRowcSExN5ryUDY3RbZuorMwDg5eVV6+4pIiISv9TUVI1P5Sb9xTJDJCI/pW7E2Sv78d6Av+PLtTG4eScdFlJL2Fs3Q9yQb+Dq6K2zHL9c2InCkgeCZSDNNG/eHNOmTUPz5s2FjkKkNUZXZqru22RoCksKEPtVIJ6WlsDJzh2l5U+Re+8aXu00CvFDk7Q2hoR17NctiOo0GgDQ5+UJCPGNhkQiwdZj/8TXP4zHV+8d0lmObkFvwtRUKlgG0oyjo6Pat0Ag0ndGV2YMlbWlPXq0Hw5LCxuM7PlnnLy0F+sOzK63lGgyhhpXfQVz0pBvkHbjGKYMWwUzUyle9uujHOfXsgs2Hp7f6BnihyahrLy0Wo7GyECN5+HDh/j5558RGhoKOzs7oeMQaQWPajUgGdkp8HbtAAC4knka3i06NMoYajxVBXNIxEdY9nEK3hvwD/h6dEH80CSkZByEv0dYtQJRZcvRBQgN0M4Zd/VlAFBnDm1moMaTmZmJyZMnIzMzU+goRFrDLTMG5NofiklowIBGGUONKyM7BYMj4gBUL5j/S9uK8MDBNeb/fv9sZOdnIPFP+1VaftyiUGTl13436m8mn0Uze/c6M9SVQ90MRETaxDJjIPIfZgESCRztKm8Idy03FcNfnQEASFg3GuGBgxHRdrDKY8Tu3NVD+GRpZLVpMnM53JzaIKrjKAwK/xCmpvq5+tdWMBUKBU5d2ovYvonV5v3h0Hwc/XUzEif8CJm5ajcNXPjhzxplAFBrDk0yEBFpE3czGYiMrLPVvj1by+yx7eclAIDLmafgZO+u1hhDEdn+LUyL+Q5TY9ZgVM+ZKCsvxdLtH2PhlolCR6tVbQWzlXNbXLx9Ai2b+8HS4vcb7208/DUOpqxDQmwyrC3tqy0nYd1oHD1f+519Nc0AoEaO+jIQEemKfn41JbV18e+HLv79lI8XTzoJACgozIOjnStecq95p9e6xhgSH9eOiOo0Uvm4f9hEjEv0xe4TSRjb+0vYWzsJmK6mugqmndwRYQGDlNPzCjKxbEc8XBxaK7dAmZtZYFHcLwAqC+yg33YTaStD/NAkHPt1izLHizKQfpLJZPDz84NMJhM6CpHWsMwYOHtrJyRMSBY6ht6wNJfD16MLjqRuRPa9q3pXZuoqmOPnB2DeuweV053s3ZA8r/arl9ZXYBuSAQCOp29X5qgvA+kvLy8vbN68WegYRFrFMkNGJ+feVQCArZWDwElUl/RJmsrzNmaBVScHEZGu8JgZMmhPSovxsCgfBYV5uJ5zHgs3v4+MrLPwdQ+Bm1MboeMR6Vx6ejqCgoKQnp4udBQireGWGTJoa/bNxJp9M6tNiwgcgg8HLxYoEZGwFAoFSktLeZNFMijcMkMGre/LE5AQm4wvx+3C+D4JsLFyQP7DTJhLfz/48VnZU4yfH4C1+7+sNjZx/RhMT4pWeR4iIhIGt8zoIRMpEKnZiSiCMal5UVq94Orog45togAAIb7RCGwVgclLIrBg07uYMXI9gMozcKbGrEH8klfQxa8fvFq0w7Fft+L4he1Y/vF5lefRhBj/rdWl6bphbgokDNNulsZkbip0AsNiZWWFwsJCrS1v3rL1eFRUDFu5Fab8KabGY22wsuJ1loTCMqOHJBLA1FzoFIYpwDMMUR1HIfn0GgyKiEOAZxgAoI1bJ7zR7RMkrh+NWe/sxD82TsCHgxfD0a6Fcqwq86iL/9Z1k0gAC/6GMloSiQRyuVxryzO3kMG8tBzmFjLI5fIaj0ncuJuJjM6IqD/DxMQUq/f+5Q/TP4OpiRne+0cHtPOORGT7mt/WVJmHSJ95eXlh27Zt8PLyEjoKkdawzJDRcXX0RmS7GJzN2I/z144op5uZSuHvGYaHRfl4rfPYWseqMg+RPpPJZPDx8eFF88igsMyQUXrr1RkwkZhg9b7ft86cv3YE+06twsDwD7Bk2yQ8LS2pMU6VeYj0WVZWFj777DNkZWUJHYVIa1hmyCC18+qO5HkKDO3+Sa3PezT3w97Ecsz/7Wq2JU8LMW/DGIyLnouJAxbA3roZVu6eXm2MKvMQ6buCggJs2rQJBQUFQkch0hqWGSIAy7bHw9mhFQaETYSJiQmmvLkKu08kIfXaT2rNQ0REuscyQ0bvxMXdOHRuAz55cyUkEgkAoIWjF8ZFz8X8DWNR8qxIpXmIiEgYPPGRjF6IbzS2/q2gxvSB4e9jYPj7Ks9DRETC4JYZIiIj4ujoiNjYWDg6OgodhUhrWGaIiIyIRCKBubm5cncpkSFgmSEiMiJ5eXlYvHgx8vLyhI5CpDUsM0RERCRqLDNEREQkaiwzREREJGosM0RERsTOzg79+/eHnZ2d0FGItIbXmSEiMiJubm5ITEwUOgaRVrHMED3np9SNOHtlP94b8Hd8uTYGN++kw0JqCXvrZogb8g1cHb2FjkjUIE+fPkVubi6cnZ1hYWEhdBwireBuJqLnHPt1C8ICBwEA+rw8Ad9OvYRlH59DaMBAfP3DeGHDEWlBRkYGevfujYyMDKGjEGkNt8zoIYUCqCgVOoV6TKSAGK7BVVhSgNivAvG0tAROdu4oLX+K3HvX8GqnUZg05Buk3TiGKcNWwcxUipf9+ijH+bXsgo2H5+ssJ9cBIlIoFCguLhY6hlqsrKwEuSAjy4weqigFDi4UOoV6IuMAU3OhU7yYtaU9erQfDksLG4zs+WecvLQX6w7MRvzQJJy6tA/+HmEwM5XWGLfl6AKEBgzUWU6uA0RUXFwMa2troWOopbCwEHK5XOevy91MZHQyslPg7doBAHAl8zS8W1T+/L+0rQgPHFxj/u/3z0Z2fgbGRc/RaU4iIlINywwZnWt/LDOuHaBQKHDq0l6E+EZXm/eHQ/Nx9NfNmD1+N2TmVkLEJSKiF2CZIaOS/zALkEjgaOcKALiWm4pWzm1x8fYJtGzuB0uL3zfpbjz8NQ6mrENCbDKsLe0FSkykXQEBAbhw4QICAgKEjkKkNTxmhoxKRtZZ5W4lALCW2WPbz0tgJ3dEWMAg5fS8gkws2xEPF4fW+GRpJADA3MwCi+J+0XVkIiJ6AZYZMipd/Puhi38/5ePFk04CAMbPD8C8dw8qpzvZuyF5nkLn+Yga2/Xr1/F///d/mDNnDlq1aiV0HCKtYJkhApD0SZrQEYh0ori4GOfOnRPdKb9E9eExM0RERCRqLDNEREQkatzNZODOXT2kPIC1isxcDjenNojqOAqDwj+EqSlXA0PGdYCIDB1/gxmJyPZvIcS3DxRQ4MHjXCSfXoOl2z/GrbsXMPmN5ULHIx3gOkAA4OrqioSEBLi6ugodhUhrWGaMhI9rR0R1Gql83D9sIsYl+mL3iSSM7f0l7K2dBExHusB1gADA3t4eAwYMEDoGiZS7uztu374tdIwaWGaMlKW5HL4eXXAkdSOy713lHzIjxHXAON2/fx+7d+9GdHQ0HBwchI5DjczMzAwdO3ZEp06d0KlTJ3h4eMDCwgKlpaXIy8vDmTNncPr0aZw4cQKPHz+ud1kLFizAyJEj8eqrryIlJUU3b0BFLDNGLOfeVQCArRV/oRkrrgPGJycnB7NmzUL79u1ZZgyYq6srYmNjERsbixYtWtQ537BhwwBUnrK/du1afPPNNzh79myN+RYsWIC4uDgAwL59++Dt7Y1Hjx41TngNGMXZTPn5+Zg6dSq8vb0hk8ng7u6OSZMmoaioCOPGjYNEIsE///lPoWM2qielxXhYlI+CwjxczzmPhZvfR0bWWfi6h8DNqY3Q8UgHuA4QGT4LCwvMnTsXN27cwMyZM+stMs+zsrJCbGwszpw5g23btsHFxUX53PNFpqKiAp988oleFRnACLbMpKSkIDo6Grm5uZDL5fD390d2djYWLlyIq1ev4v79+wCA9u3bCxu0ka3ZNxNr9s2sNi0icAg+HLxYoESqWXdgDq5kncGVzNPIvX8dzZt44N/TbwgdS5TEug4QkWo6d+6M1atXw9/fXzmtrKwM27dvx/79+3H69Gmkp6ejpKQEUqkUrVq1QqdOnRAWFoaYmBjY2dkBAPr374+IiAjExcUhODi4WpEZO3Ys1qxZI8j7q49Bl5n8/Hz0798fubm5iI+Px8yZM2FjYwMASExMxLRp02BmZgaJRIKgoCCB0zauvi9PwCtBQ1FWUYrrOeex4VAC8h9mwlwqEzpavVbung4bKwf4uHZEUUmB0HFETazrABG9WJ8+fbBx40ZYWloCAJ49e4avvvoKixcvRlZWVo35S0tLkZaWhrS0NKxZswbx8fEYMWIEPv/8c7i4uKBJkyb47rvvlPPrc5EBDHw3U1xcHDIzM/HBBx9g/vz5yiIDAFOnTkW7du1QVlYGT09P2NraCpi08bk6+qBjmyiE+EZjWORU/G3sdlzKPIkFm94VOlq91nx6FZu/uIeECcloaqva5lKqnVjXAdIuuVyO8PBwyOVyoaOQlvTq1QtbtmxRFplTp06hY8eOmD59eq1FpjZFRUVYvnw5AgIC8O9//7vacwqFQq+LDGDAZebChQvYsGEDHB0dMWfOnFrn6dSpEwCgXbt2ymlV5SckJAQWFhaQSCQ6yatrAZ5hiOo4CofObUDajf8JHadOLk1bCx3BYIllHSDt8vT0RFJSEjw9PYWOQlrg6emJjRs3wtzcHACwfv16hIWFIS1Ns/vNPXjwQHn4RRWJRKL39/Iy2DKzbt06VFRUYMSIEbC2tq51nqoW+3yZycjIwKZNm+Ds7Izg4GCdZBXKiKg/w8TEFKv3/kXoKCQQrgPGp7y8HIWFhSgvLxc6CjWQRCLBihUrlHsdNm3ahJEjR6K0tFTjZf7xYN8qS5YsgZOT/l6+wWDLzIEDBwAAkZGRdc6TmZkJoHqZeeWVV5CTk4Nt27YhKiqqcUMKzNXRG5HtYnA2Yz/OXzsidBwSANcB43Px4kUEBwfj4sWLQkehBho/fjx69OgBALh58ybGjh3boJL6xyIzduxYbNq0CQDg5OSEhQsXNjx0IzHYA4Bv3rwJAPDw8Kj1+bKyMhw7dgxA9TJjYqL9fte5c2fk5uaqPL+5mSWWf3BF6zlq89arM3AwZR1W7/sL5r97UOPl+LTxwbOyErXH6fK9CkEMn4vQ6wA1zJgxY9SaPycnBwCwa9euWq8nUptVq1apmUr/DB77EeTWtsjJzYGbm1uNx/ro+S0jf2RiYoJPP/1U+XjcuHEvvOhdfWorMmvWrMGePXvQrVs3ODo6IiYmBjNmzMC1a9fqXI6Pj4/Gf0ednZ1x6tQpjcYabJkpKioCAJSU1P7LdcOGDcjPz4eNjQ1atWrVqFlyc3NVPggLAGRSK629djuv7kiep6jzeY/mftib2PDNzTnZ2XhSqv4+VW2+V32kD5+Lvq8D1DDqHsvw5MkT5X9VHavO7y99VfHbFouK8nJkZWXVeCw2r732Glq3rjymcO/evdi/f7/Gy6qryADA3bt3MW/ePCQkJAAA3n33XUydOrXOZVWVZV0z2DLj7OyMBw8e4MyZMwgNDa32XE5ODqZMmQIACAoKavSDfJ2dndWa39zMspGSNB6XFi003gJhyIzpc9H0vVLDWFmpV3xlMpnyv6qONYSbUpqYmir/6+rqWuOxPqqoqKizHEyYMEH58+LFml8rqr4iU2XlypX461//CgsLC7zzzjuYPn06ysrKal2ei4tLg7bMaMpgy0xUVBQuXLiAhIQE9OzZE23aVF7h9OTJkxg1ahTy8/MB6OZieepuNit/BhzU312Ttbpy+QpMzdUfJ8b3qg5j+lw0fa/UMOoe+5KWloaVK1eiT58+CAgIUGnMrFmzNImmV2YvXotHhUVwcXZBZmZmjcf6qKioqM4TWLp27QoAyMvLw86dOzVavipFBqi8ZtuOHTvw+uuvo2nTpvDz88P58+drXeaVK1cEOe3fYA8Anjp1Kpo2bYrbt28jICAAbdu2hY+PD0JCQtC6dWvlQVPPHy9DRGTo2rRpg2PHjim/4JH4eHh4oGnTpgAqv6DXd2xNXVQtMlWOHz+u/Lnqsib6xGC3zLi5ueHIkSOYMmUKDh8+jBs3bsDf3x/Lli1DbGwsvLy8ALDM6Lvk09/h7oPKg7kLivJQVv4Ma3+s/JbYrIkHenYaJWQ8ItGRSqW8waTIdejQQfnz6dOn1R6vbpEBqu9h6NChg94dFG6wZQYA/Pz8sGPHjhrTCwsLcePGDZiYmCAwMFCAZKSqPSdWIPXa4WrTVu39MwAgqHU3lhkiNd26dQtz587Fp59+ipYtWwodhzTwfBm9deuWWmM1KTIAcPv27VpfX18YdJmpS1paGhQKBdq0aVPrAXAbN24EAKSnp1d77Onpic6dO+suKOGr9w4JHYHIoDx+/BgHDx7E+++/L3QU0tDOnTvRvXt3yGQy5d8pVbi5uWHEiBEA1L/XUnZ2Nvr27YuSkhJkZ2drlLsxGWWZqTpwqa5dTEOHDq318dtvv613m9aIiMi43LlzB3fu3FF7XGZmJnr06IHk5GRMmTJFrXstlZSUYNeuXWq/pq6wzNRCoaj7mhxERERilZqaCm9v7wZdYE8fscwQGaCfUjfi7JX9eG/A3/Hl2hjcvJMOC6kl7K2bIW7IN3B19H7hMjLzrmDehrfxsCgfcpkdpgxbBU9n1U7lJSL9ZWhFBjDSMlN13yZDUlhSgNivAvG0tAROdu4oLX+K3HvX8GqnUYgfmqS1MSQOx37dgqhOowEAfV6egBDfaEgkEmw99k98/cN4lY5FWrDpT+jz8gS8FjwGP6VuxLwNY7B40slGTk6NrXnz5pg2bRqaN28udBQirTHKMmOIrC3t0aP9cFha2GBkzz/j5KW9WHdgdr2lRJMxpB/qK6KThnyDtBvHMGXYKpiZSvGyXx/lOL+WXbDx8PwXLv9B4V1czjyFubH7AABd276Of275AFn5GSpt1SH95ejoqPb9nIj0ncFeNM8YZWSnwNu18voDVzJPw7tFhxeM0GwMCa+qiA6J+AjLPk7BewP+AV+PLogfmoSUjIPw9wiDmam0xrgtRxcgNGDgC5efV3AbDrYuMDWt/L4jkUjQrElL3C1Q7zRQ0j8PHz7Enj178PDhQ6GjEGkNy4wBufbHYuL64mKiyRjSD3UV0f+lbUV44OAa83+/fzay8zMwLnqOTnOSfsnMzMTkyZP19hL+RJpgmTEQ+Q+zAIkEjnaVN0y7lpuKVs5tAQAJ60bj6Pktao0h/VdbEVUoFDh1aS9CfKOrzfvDofk4+utmzB6/GzLzF99c0MneHfcf5aC8vPJmcgqFAncf3EIze15kjYj0D8uMgcjIOlttF5G1zB7bfl4CALiceQpO9u5qjSH9VlcRvXj7BFo294Olxe83p9t4+GscTFmHhNhkWFvaV1tOXUW3iXUzeLt2xI9n/g0AOHJ+Exzt3Xi8DBHpJR4AbCC6+PdDF/9+ysdVZ50UFObB0c4VL7nXvHJxXWNI/9VVRO3kjggLGKScnleQiWU74uHi0BqfLI0EAJibWWBR3C8AKovuoIi4Wl/jo9eXYd6GMVh3YDasZLaY8ua3jfeGiIgagGXGwNlbOyFhQrLQMUjL6iqi4+cHYN67B5XTnezdkDyv9otA1ld0AcC92UtY+OHPWkxN+kAmk8HPzw8ymUzoKERawzJDZECSPklTeV4WXePk5eWFzZs3Cx2DSKt4zAwRERGJGssMEZERSU9PR1BQkFp3WybSdywzRERGRKFQoLS0lDfUJYPCY2b0kIkUiKz9BBO9ZVLzYrMqjxPbe1WHMX0umr5XIqqdlZUVCgsLtba8ecvW41FRMWzlVpjyp5gaj7XByurF17FqDCwzekgiAUzNhU6hG8b0XtXBz4WIJBIJ5HK51pZnbiGDeWk5zC1kkMvlNR6LGXczERERkahxywwRkRHx8vLCtm3b4O5e86rgRGLFMkNEZERkMhl8fHyEjkGkVdzNRERkRLKysvDZZ58hKytL6ChEWsMyQ0RkRAoKCrBp0yYUFBQIHYVIa1hmiIiISNRYZoiIiEjUWGaIiIhI1Hg2ExGRiPn6+qo1v52dHWbOnImwsDC4uLg0Uioi3WKZISIyIi4uLvj888+FjkGkVdzNRERERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyowfmzZuH0NBQNGnSBPb29oiIiMCePXuEjkVERPXYtWsX2rdvDwsLC3h6euLrr78WOpJO/fTTTxg4cCA8PDwgkUgwa9YswbKwzOiBAwcO4J133sHBgwdx4sQJhIWFoV+/fjh27JjQ0YiIqBanTp3CwIEDER0djZSUFHz++eeYPn06li5dKnQ0nSksLIS/vz8SExPh7OwsaBYzQV+dAAC7d++u9jgxMRF79uzB5s2bER4eLlAqIiKqy9dff43g4GDMmTMHAODn54e0tDTMnTsX7777rsDpdKNPnz7o06cPAGDatGmCZmGZ0UMVFRV49OgR5HK50FGIiESloqICGTeza0wvKy9X/vfy9cwaj5/nYGcDRwe7el/n2LFjGDduXLVpvXv3xvz585GZmQk3N7eGvI0Gybl7D4+LSmpMV/UzMDU1gVfLFroJqyUsM3po9uzZKCgowIQJE4SOQkQkKiYmJki7fB2/pFyo9fnikidY+Z9ddT42N5di0tjXX/g6OTk5NXatVD3OyckRtMw8Ky3Dtz/shkKhqPX5F30G0d1DRFdmeMyMnlmyZAlmz56NjRs3Cvo/AxGRWPWN7IKmTWw1Gtu/Ryia2ms2Vl94uDZH9y7tNRrr6eaMrsFB2g2kAywzemT+/PmYMmUKtm3bhqioKKHjEBGJkrm5FMP6RkIikag1zs/bA52DXlJpXhcXF+Tm5labdufOHeVzQns1vCNcmzuqNcbcXIo3+3aHiYn4qoH4Ehuov/zlL/jiiy+wa9cuFhkiogZq6dockaEdVJ5fbiXD671fUbkAhYeHY+/evdWm7dmzBx4eHnqxVd3M1BRv9ouEmampymMGvBoGB5FulWKZ0QMfffQR5s2bh++++w4vvfQScnNzkZubi4cPHwodjYhItF4N6whXZ9W2Tgzp/Qqs5ZYqL3vy5Mk4ceIEZsyYgYsXL2L16tVYtGgRPv30U03jal1zxybo3T1EpXn9fTzQqW0btZZfWFiIlJQUpKSk4NmzZ8jNzUVKSgoyMjI0idsgEkVdRwiRztT1TeDtt9/GqlWrdBuGiMiA3M1/gIWrN6OsrLzOeTq3fQlv9Omm9rJ37tyJ6dOn4+LFi3B2dsakSZPw8ccfNySu1lUoFFi5YRcybmbVOY+1lSU+eucNtcocABw6dAiRkZE1pnfr1g2HDh1SN2qDsMyIzPXbOXBzdoJUyhPRiIhUcezUr9i+/3+1PudgZ4NJY1+HhYW5jlPpTsGjQvxj5UY8efqs1udHv/4a/L09dJxKu7ibSUQeFxZjxX92IXH5ejx8VCh0HCIiUQjtFABvD9ca0yUAhvbtbtBFBgDsba0xsGftF2ANDvIVfZEBWGZE5fAv51BWVo4mtjawteEF9YiIVGEikWBon26Q/aG0vPJyO7RyF/7MI11o7++NIN/W1aY52NmgX48uAiXSLpaZ55SXl+O7775Dr1694OTkBAsLC7Rs2RK9e/dGUlISysvr3ufa2B4XFuN4SjoAICqik9qnHBIRGTM7W2sM6hWhfOzs5ICeEZ0FTKRbEokEg3pFwMbaSvn4zX6RBrNVimXmN48ePULPnj0xevRoJCcnw9zcHO3atUNFRQX27duH2NhYPH78WLB8VVtlWrZoDh/PmptLiYioflVbJ0xNTRDTvwfMzFQ/bdkQWFnKMDS68kDnbi+3g6ebsDeH1CYeAPyboUOHKq+6u2bNmmpHaN+5cwcrVqzApEmTNLpf0qLVm/G4sOZ9MlSlUCjwuKgYQOXKqM51A4iI6HcKhQKlZWUwl0qFjiKYZ89KIZWa6d0WfhtrS3z49hCNxrLMADh9+jQ6d+4MMzMznD17FoGBgVpd/uzFa/GosEiryyQiIjIkttZyTH9/hEZjeX4vgK1btwIA+vbtq/UiA1S2TU1xqwwRERmDhvytZJkBkJ5eeWBtaGhooyxf081mALBj/884euo8WrZojvdGDtC7zYJERERCY5lB5cG/AGBnZ9coy9f0mJnnt8rkP3iIOUu+13Y0IiIivdCQY2ZYZgDY2lbeWKux7oX0uLCkwcfMFJc80VIaIiIiw8IyAyAgIACbN2/Gzz//3CjL12Q/II+VISIiY9KQY2Z4NhOAs2fPomPHjpBKpUhJSYG/v7/QkXisDBERkYp40TwAHTp0wJtvvonS0lJER0fj8OHD1Z6/c+cO5syZg6Ii3Zxezav9EhERqY5bZn7z6NEjDBw4UHnbcldXV7Ro0QI5OTnIysqCQqHAgwcPYG9v3+hZuFWGiIhIddwy8xtbW1v8+OOPWLFiBbp3747i4mKcO3cOJiYmeO2117BixQrY2NjoJIu13BIyC3NulSEiIlIBt8zoqSdPn8HCXMoyQ0RE9AIsM0RERCRq3M1EREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESi9v+zwV7FcgaEbQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Visualize and get the jaqal program of second compiled circuit\n", "print(\"Compiled circuit 2 \\n\")\n", "print(jaqal_output_list[1])\n", "output_circuits[1].draw(\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "1d50dcd1", "metadata": {}, "source": [ "## Entangling Basis Compilation\n", "\n", "When compiling to the QSCOUT gateset, we can also specify the type of entangling basis gate to utilize during the compilation -- either a $XX$ or $ZZ$. Let's consider the first circuit example for earlier but with a different, random $R_Z$ angle and single measurement:" ] }, { "cell_type": "code", "execution_count": 10, "id": "7b6affee", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhMAAADuCAYAAACDMIXKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuJklEQVR4nO3deVxU9f4/8NcMAgPDJqKCgKAIiigqLglqhrkLUveqmV1b1LTMsvKrtngr788slzavmnbNtDKz0GuGpFlioqa5gcqSgqCAMyEi+86c3x9zIQmQmTkzcxh8PR8PHjBnfQ+Mzms+5/P5HJkgCAKIiIiIDCSXugAiIiKybAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnSTuoCiIgsWWpqql7b5+bm4ptvvsG0adPQqVMnnffr1auXvqURmQ1bJoiIzOjmzZvYsGEDbt68KXUpREbDMEFERESiMEwQERGRKAwTREREJArDBBGRGTk7OyMyMhLOzs5Sl0JkNDJBEASpiyAislT6juYwFEdzUGvGlgkiIjOqrKzEtWvXUFlZKXUpREbDMEFEZEZpaWkYP3480tLSpC6FyGgYJoiIiEgUzoBJRESNCIKAsrIyqcvQi729PWQymdRl3JMYJoiIqJGysjI4ODhIXYZeSkpKoFQqpS7jnsTLHERERCQKWyaIiMwoKCgIKSkpUpdBZFRsmSAiIiJRGCaIiMwoIyMD06dPR0ZGhtSlEBkNwwQRkRmVlZUhMTHR4kZKEN0NwwQRERGJwjBBREREojBMEBERkSgME0REZuTp6YlVq1bB09NT6lKIjIbzTBARmZGLiwsmT54sdRlERsWWCSIiM8rPz8eOHTuQn58vdSlmZ29vj65du8LPzw9eXl6wsbHRa//Q0FBERESYqDoSgy0TRERmpFKpsGLFCvTv3x+urq5Sl2NS9vb2eOSRRzBq1CgMHDgQPXv2hFz+52fYqqoqXLx4EWfPnkVsbCxiYmJQW1vb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zs+5JY4O4loS2CpBRNT2iXmvaHNhws/Pr9Gyjh073nV9p06dAGgvXdzpwoULAIDPPvsMe/fubfJ8dfPA5+TkNFj+3nvv4ZVXXkFNTU2ztd66dav+ZysrKyxcuBCrVq3C2LFjERISgtGjR2P48OEYOXIknJwM76RjaLMVoB3BsXrTTgDAY1GjERTga/CxiIiobWpzlzmaezqGrPf399d5WtI7Z4o8fvw4hg8fDisrKyxfvhxRUVHw9fWFUqmETCbD1q1bMXv27EazS2o0GmzcuBEbNmxAampq/XJbW1vMmDEDa9euhaurq0713ElMnwm2ShAR3RvE9Jlocy0TxlTXOXLfvn2IjIzUeb8vvvgCALBo0SK8/vrrjdbf2SJxJ7lcjgULFmDBggXIzs5GfHw8Dh06hG+++QafffYZsrKycOjQIb2fR3FJueg+ExqNhv0uiIioSQwTdxEUFISEhARcunRJrzCRkZEBABg+vOk75p082fLskV5eXnj00Ufx6KOPYtGiRejbty9++uknZGRkoFu3bjrXAhh+HYytEkRE9w72mTCRKVOmYMeOHfjkk0/w/PPP17dUtMTOTvsHUavVjdZduXIFMTExetURFBQEZ2dnFBQU4MaNG3qHCUOardhXgoiIdNVmZsA0haioKIwcORKZmZkYO3YsLl261GC9RqPBr7/+imeeeabBSJARI0YAAN55550GM28mJSUhMjKyyalTk5OT8fTTT+PkyZMN+m3U1tbiww8/REFBARQKBYKCmp7f3tg42yUREemKHTBbWJ+Xl4eoqKj6Sal8fHzg7u6O8vJypKeno7RU248gJSUFvXr1AgAUFxcjJCQEaWlpsLa2Rs+ePaHRaJCSkgIPDw/Mnz8fy5Yta9ABMyEhAQMGaOdtd3R0hJ+fH6ysrJCZmVnfx2Ljxo149tlnDfr96KOuVaKyqhozHx7LVgkiIrortky0wM3NDb/88gu2bduGMWPGoLS0FGfOnEFGRgZ69OiBhQsX4pdffkFAQED9Po6Ojjh27BhmzZqF9u3b4/fff0dJSQnmzZuHc+fOwdPTs9F5AgICsGXLFjzyyCPw8PDA1atXkZiYCIVCgalTpyI+Pt4sQQIAKiqr0LVLJ7ZKEBGRTtpMywQZX0VlFRS2NlKXQURErRzDBBEREYnCyxxEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKL8f33Yhw6g3HcRAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create circuit\n", "theta = rng.uniform(0, np.pi)\n", "circuit = qiskit.QuantumCircuit(2)\n", "circuit.cx(0, 1)\n", "circuit.rz(theta, 1)\n", "circuit.cx(0, 1)\n", "circuit.measure_all()\n", "\n", "# Visualize circuit\n", "circuit.draw(output=\"mpl\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "686c40ca", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "<\n", "\tRz allqubits[0] -3.141592653589793\n", "\tRz allqubits[1] -3.141592653589793\n", ">\n", "MS allqubits[0] allqubits[1] 0 1.442906408693394\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "<\n", "\tRz allqubits[0] -3.141592653589793\n", "\tRz allqubits[1] -3.141592653589793\n", ">\n", "measure_all\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnMAAADuCAYAAABS14G6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAwnklEQVR4nO3deWCMd+I/8PfM5J5cCBIJSUQiEeJOkTiiUaSuWvHVuqrEKqpVhNV2VatUaBVl6Q9FF7VCLYpKK1GsUpqoJq64EwmCYHInM78/0kyb5pAZz8wzz8z79Y/Oc817dueTvPOcMo1GowERERERSZJc7ABEREREpD+WOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjCWOSIiIiIJY5kjIiIikjArsQMQERE9iwsXLtR52bt37+I///kPhg8fjkaNGtV5vcDAQH2iERkF98wREZHFuHfvHlatWoV79+6JHYVIMCxzRERERBLGMkdEREQkYSxzRERERBLGMkdERBbDxcUFAwcOhIuLi9hRiAQj02g0GrFDEBER6UuXq1n1xatZyZRxzxwREVmMoqIi3LhxA0VFRWJHIRIMyxwREVmM9PR09OvXD+np6WJHIRIMyxwRERGRhPEJECLSaAB1idgpDEtuDchkuq+n0WiQry4TPpABOcgVkOn4YS39O2AJnx/QbxxYyhigmmk0GuTn54sdQycODg78DoiAZU5E6hIgcYXYKQwrYhqgsNF9vXx1GeodThA+kAE97N0HSoVuQ8rSvwOW8PkB/caBpYwBqll+fj4cHR3FjqETlUoFpVIpdgyLw8OsRERERBLGP6GIiMhiBAcH4/z582LHIBIU98wRERERSRjLHBERWYxr165hxIgRuHbtmthRiATDMkdERBYjPz8fZ8+eldxVokS1YZkjIiIikjCWOSIiIiIJ49WsZu7slSTMXBNRaZqdjRJeDQMQ2WE0hoS9AQXvC0VmjGOAiMwdf4JZiIh2LyM0MAoaaPDwSTYSzmzGmr1v4+bd85g+7Aux4xEZHMcAAYCnpycWL14MT09PsaMQCYZlzkL4e3ZAZMdR2tcDu03G+LhAHDi1DuP6fQRXx4YipiMyPI4BAgBXV1cMGjRI7BhEguI5cxbK3kaJQO8u0Gg0uH3/ithxiIyOY8AyPXjwAFu2bMGDBw/EjmJ01tbW8PLygp+fH5o1a6bzY7c8PDwwZcoUA6WjZ8E9cxYs6/dfYM4O9UVOQiQOjgHLk5WVhQULFqBdu3aoX9+8/3+Xy+Xo378/Bg4ciI4dO6JNmzawtbXVzler1bh8+TLOnDmDxMREbNu2DXl5edVuy8PDA0lJSQgICICbmxvmz59vrI9BdcAyZyEKS/LxKC8HGk35+UJ7T6xBemYyApuGwqthgNjxiAyOY4AshVKpxNSpUzFp0iT4+PjUuJxcLkfLli3RsmVLvPLKK/jkk0+wadMmfPLJJ7hx44Z2uT8XOQAYM2YMli1bhsePHxv6o1AdmX2Zy8nJQVxcHHbt2oWMjAw0bNgQQ4cOxcKFCzFt2jRs2LABK1euxNSpU8WOalCbD83D5kPzKk0Lbz0Ub7y0SqRERMbFMUCWoFevXli/fj2aN29eabparcbFixeRlpaGgoICWFtbw9fXF23bttXurXN2dsYbb7yBcePGITY2FmvWrIG7u3ulInf16lX06tWLRc7EmHWZS0lJQf/+/ZGdnQ2lUolWrVrh9u3bWLFiBa5cuaI9Z6Jdu3biBjWCF5+biB4h0ShVl+Ba1jlsT1qMnEcZsLG2EzuaQZW8EFWn5RRLPoa8bYiB0+hHrVbjm2PL8e1Pa5H98DpclQ3Ro+1wjO37AextdDvnxZJxDNTOlMcAPZ1MJsOSJUswY8YM7TS1Wo2DBw9izZo1SExMhEqlqrKetbU1OnTogPHjx2PkyJFwcHCAo6MjVq9ejZdffhkeHh5o0aIFgD+K3K1bt4z2uahuzLbM5eTkYODAgcjOzsaMGTMwb948ODk5AQDi4uIwe/ZsWFlZQSaTISTE/H+Aebr5o0NAJAAgNLA/WvuGY/rqcCzfOQnvjPpa5HSGo4idWeM8TXY21Jv/Dbg4Q+blZcRUuvnX3unYfWwFwlq/hGE9Z+DmnfPYfWwFrmQmY/HE7yGX8zqmuuAYqEoqY0BISqUSYWFhOp/8b8rkcjk2bdqEUaP+uFr7xx9/RExMDC5dulTruiUlJTh58iROnjyJ2NhYLFy4EK+//joAoHv37trlWORMm9mWuWnTpiEjIwNTp07F0qVLK82LjY3F1q1bcfbsWfj6+sLZ2VmklOIJ9umGyA6jkXBmM4aET0OwTzexIxmEPLJ3tdM1hYUoe2sGIJdDMXcOZA1M80To69mp+O/xlQhvPRTzxu7UTnev74tV/52GpLNfo3f7V0RMKF0cA9IYA0Lz8fHBunXrxI4hqFWrVmmLXGlpKWbOnIkVK1ZAo9HotJ3c3FxMnjwZSUlJ2LJlC6ysyitCUVERoqKiWORMmFn+SX/+/Hls374dbm5uWLRoUbXLdOzYEQDQtm3bStOvXbuGQYMGwcnJCfXq1cOYMWNw//59g2cWw8jI9yCXK7Dpu3+KHcXoyj75DLh6DfIJr0Hevp3YcWqUmLINGo0GQ7u/VWl61HMxsLN2wPe//FucYGaCY8D0x4DQysrKoFKpUFZWJnYUQQwbNgyTJk0CUL6XbejQoVi+fLnORa6Ch4cHPvzwQ22RAwBbW1tMmzZNkLxkGGZZ5rZt2wa1Wo2RI0fC0dGx2mXs7e0BVC5zT548QUREBDIyMrBt2zZ88cUXOHr0KAYMGAC1Wm2U7Mbk6dYCEW1HIDn9B5y7elTsOEZT9p94aI78CFnPHlAMGyp2nFpdvPUz5DI5WjYLrTTdxtoOzZu0w6VbP4uUzDxwDJj+GBDahQsX0LlzZ1y4cEHsKM/Mzc0Nq1ev1r6eMGEC9u7dq/f2/nrV6q1bt5Cfnw8AmDx5MiIiImpbnURklmXu8OHDAFDrFy8jIwNA5TL3xRdfIDMzE7t378aAAQMQHR2NrVu34qeffsKePXsMG1okLz//DuQyOTYdsow9E+pfkqHesBHw9YHi7bfEjvNU9x/fhrPSDTZWtlXmubl44lFeDkpKi0VIZj44BkiqFi5ciIYNy59csnPnTmzevFnvbf21yF29ehVhYWGIjY3VLrN27VrIZLJnC00GYZbnzFXcH8fb27va+aWlpTh+/DiAymVu3759CA8PR7NmzbTTunbtiubNm2Pv3r0YMmSIXnk6deqE7OzsKtNtrOzxxdTLem2zrtr69ULCkpp3t3s3DsJ3cYY73OAf4I/i0gKd19PY2ABrhb1lhCb7DsoWLgYcHGA17z3I7IW9ijHAPwCyYt2K1dO+A0XF+bCupsiVr1uev6gkH9ZWNjq9rzHV9h2whDEA6DcOLGUMCOHVV1+t87JZWVkAgP379yM5ObnO623cuFHHVM+utiNC9erV054nV3Gum76qK3IVFzusXr0aI0aMQHh4OPz9/dG3b18cPHiwxm35+/vzoiw9ubu74/Tp03qta5ZlruIO1gUF1f/w3L59O3JycuDk5ARfX1/t9LS0NERHR1dZPjg4GGlpaXrnyc7ORmZmZpXpdtYOem9TKrJu30ZhSb7uK9rZwlrAHJrCQpTO/xBQqaD4YB5kTTwE3Hq521m3gcIindZ52nfA1sYBBaq71c4rLi0sX8bEv0e1fQcsYQwAeo4DCxkDQqg4FFgXhYWF2n91Wa+6n+FiGjdunPZ0oS+//BJ371b/c+JpaityAKDRaBAXF4fw8HAAwJQpU2otcxVlmYzLLMucu7s7Hj58iF9++QVdu3atNC8rKwuzZs0CAISEhFTaZfzw4UO4urpW2V79+vVx8eLFZ8pTHRsre723KRUeTZrovWfunoA5ypatAK5chXzsaMhDOwu45T808Wii15652jRwboKbd9JQXFpU5VBrzqNMuCjdTHqvHFD7d8ASxgCg3ziwlDEgBAeHuv9RYGdnp/1Xl/U8PT11zvWs1Gp1jeXo5Zdf1v73mjVr9Nr+04pchW+//RY3btyAt7c3oqKi4OLigkePHtW4Te6Z009NXaEuzLLMRUZG4vz581i8eDH69Omj/aL+/PPPGD16NHJycgAY72bBNe02LSsGElcYJYJoLl+6DIUeXSOvrBT1DicIkqEsfhc0iUmQde0C+SsjBNlmdS5dvgSlQrch9bTvQMumnXHm0iFcvHkKbZr/cc+n4pJCXL2dgjbNe+gb12hq+w5YwhgA9BsHljIGhKDLxQwlJSUYP348nJycYG1d932fCxYs0CfaM8nLy6v2Ij4bGxvt/VHT0tKeei+56tS1yAHlpXLfvn2YMmUK5HI52rdvj6SkpGq3e/nyZbO6h59UmGV9jo2NRYMGDXDr1i0EBwejTZs28Pf3R2hoKJo3b47evcvvu/TX25LUq1cPubm5Vbb34MEDs38gs7lSp5yFet0GwMsLitiZkjt5t1fb/4NMJsOuo59Vmr7/5P9DYUk+ercfKU4wkgypjwGhWVtbo379+joVOVPTpk0b2NiU/3WgzzlWuhS5Cn9+n4pbe5HpMMs9c15eXjh69ChmzZqFI0eO4Pr162jVqhXWrl2LmJgY+Pn5Aaha5oKCgqo9Ny4tLQ09epj+HhCqTHP/Aco+WgSo1ZB3D4PmxE+o6TR4WXNfyJr71jBXPL4ebTCo2xT89/jneH/TUIQGRuHm3fInQIQ078kbBlOtzGEMCO3mzZv4+OOPMWfOnEoXu0lJYGCg9r/Pnj2r07r6FDmg/PGYFYKCgnR6TzI8syxzQPmXbd++fVWmq1QqXL9+HXK5HK1bt640b8CAAZg7dy4yMjLg9fujbU6ePIkrV65gyZIlRslNwtFkZACPyh8Grd62vdZl5aNegcJEf5G9PugzNK7ng/0nv8Cp89/CWemGIWFvYGzfD3huCtXKXMaAkJ48eYLExERMmTJF7Ch6Ky4uxrVr12BnZ4c7d+7Ueb1GjRrpVeSA8iNUd+/eRUFBQY3ny5F4zLbM1SQ1NRUajQYBAQFVTn6dOHEiVq5cicGDB2P+/PkoLCxEbGwsQkNDMXjwYJESk77kbUMgP7Rf7BjPTCFXILrnDET3nPH0hYn+xFzGAFW2Y8cO7NixQ+f1cnNzcfHiRQQEBOj8rNWbN2+icePGOr8nGYfF/Vl/7tw5AFUPsQKAs7MzDh8+DA8PD4wYMQITJkxAt27dsG/fPu4BISIiSSsuLsawYcOwevVqnYocmT6L2zNXW5kDAD8/v2oPzxIREUldcXGxpA8xU/VY5iTmx1/jkXz5B7w+aBk+2jICN+6kwdbaHq6OjTBt6L/g6dbCaDlOnv8WqoKHomUgy8QxQM+icePGmD17Ng8ZklmxuDJX8dxWqTr+2zeI7DgGABD13ESEBvaHTCbD7uOf49MdE/DJ60lGy9EzZDgUCmvRMpBl4higZ+Hm5qbT47+IpMDiypypUxXkIuaT1igqKUBDl6YoKStC9v2reL7jaLw59F9IvX4cs/5vI6wU1nguKEq7XlCzLog/stTgGWZEr0NpWUmlHIbIQJaLY4AM6dGjRzhx4gS6du0KFxcXseMQCYJlzsQ42ruid7tXYG/rhFF93sPPF7/DtsMLMSN6HU5fPIRW3t0q/fKo8M2x5egaLMwVt7VlAICU9MRqcwiZgSwXxwAZUkZGBqZPn474+HiWOTIbLHMmKP12Cl4KnwYAuJxxBi2atAcA/C91N8Jav1Rl+a0/LMTtnHTE/f2HOm1/2squyMy5XO28f01PRiPXpjVmqCmHrhmIasMxQERUdyxzJujq7RS08Cz/xXE54wy6Bg+CRqPB6YvfIebFuErL7khaimO/7ULcxO9hZ1O3h0aveOOEXhkAVJtDnwxkWGevJGHmmohK0+xslPBqGIDIDqMxJOwNKER4hmZdcQwQEdUdb55mYnIeZQIyGdxcPAEAV7N/ha97G1y4dQrNGgfB3vaPhy7HH/kUiSnbsDgmAY72rpW2s3jbGBw7942gGQBUyVFbBhJfRLuXMXvEV4gdsRmj+8xDaVkJ1ux9Gyu+mSx2tBpxDBAR6cZ0/zS3UOmZyZUO5zjauWLPidVwUbqhW/AQ7fR7uRlYu28GPOo31+6BsbGyxcppJwEAlzJOY8jvh4iEyjAjeh2O//aNNsfTMpD4/D07ILLjKO3rgd0mY3xcIA6cWodx/T6Cq2NDEdNVj2OADMnOzg5BQUGws7MTOwqRYFjmTEyXVgPQpdUA7etVb/4MAJiwNBhLJiVqpzd09ULCkuofmZ2rugc3F0+0bNpJ0AwA8FPaXm2O2jKQabK3USLQuwuO/hqP2/evmGSZ4xggQ/Lz88OuXbvEjkEkKJY5iVg3M7XOy7o6NsTiiQmi5yDTlHX/CgDA2aG+yEl0wzFARFQ9njNHZMYKS/LxKC8Huap7uJZ1Dit2TUF6ZjICm4bCq2GA2PGIjC4tLQ0hISFIS0sTOwqRYLhnjsiMbT40D5sPzas0Lbz1ULzx0iqREhGJS6PRoKSkBBoND4+T+eCeOSIz9uJzE7E4JgEfjd+PCVGL4eRQHzmPMmBj/cfJ38WlRZiwNBhbfvio0rpxX7+Kuev613kZIiISB/fMiUhuDUTod7GdZMir3qi/ThzkCjzs3UfYMAbmIFeIHaEKTzd/dAiIBACEBvZHa99wTF8djuU7J+GdUV8DKL/6MnbEZsxY3QNdggbAr0lbHP9tN346vxdfvH2uzsvowxLGAKDfOOAYIAcHB6hUKsG2t2Tt13iclw9npQNm/X1ElddCcHDgfRbFwDInIpkMUNiIncI0yWQyKE34prZSFezTDZEdRiPhzGYMCZ+GYJ9uAIAAr44Y1nMm4r4egwWvfYvP4ifijZdWwc2liXbduiyjK46BmnEMkEwmg1KpFGx7NrZ2sCkpg42tHZRKZZXXJF08zEpkYUZGvge5XIFN3/3zL9PfhUJuhdc/a4+2LSIQ0a7qX+p1WYbIlPn5+WHPnj3w8/MTOwqRYFjmiCyMp1sLRLQdgeT0H3Du6lHtdCuFNVr5dMOjvBz07TSu2nXrsgyRKbOzs4O/vz9vGkxmhWWOyAK9/Pw7kMvk2HToj71z564exaHTGzE4bCpW73kTRSUFVdaryzJEpiwzMxPvvvsuMjMzxY5CJBiWOSIz1NavFxKWaBDda2a1870bB+G7uDIs/f1JBgVFKizZ/irG9/8Ykwcth6tjI2w4MLfSOnVZhsjU5ebmYufOncjNzRU7CpFgWOaICGv3zoB7fV8M6jYZcrkcs4ZvxIFT6/Dr1R91WoaIiIyPZY7Iwp26cABJZ7dj5vANkMlkAIAmbn4Y3/9jLN0+DgXFeXVahoiIxMHr3oksXGhgf+z+MLfK9MFhUzA4bEqdlyEiInFwzxwREVkMNzc3xMTEwM3NTewoRIJhmSMiIoshk8lgY2OjPV2AyBywzBERkcW4d+8eVq1ahXv37okdhUgwLHNEREREEsYyR0RERCRhLHNEREREEsYyR0REFsPFxQUDBw6Ei4uL2FGIBMP7zBERkcXw8vJCXFyc2DGIBMU9c0RmbtXuaRi10Ad9ZsmQnplS67IajQaz1vTGkPdcq50f9/Wr6DNLBlVBruA5iYyhqKgIN27cQFFRkdhRiATDMkdk5rqHDMOyycfQuJ73U5fd+eMyeDTwq3be0XO7YKWwFjoekVGlp6ejX79+SE9PFzsKkWB4mFVEGg2gLhE7hWHJrQF97s2p0WiQry4TPpABOcgVJnkj0pDmPeq03PXsVPwvdTdmDv8SP/66o9K8h0/uYNvhhVj690QcOLVOsGyWMAYA/cYBxwBZOo1Gg/z8fLFj6MTBwUGUMcAyJyJ1CZC4QuwUhhUxDVDY6L5evroM9Q4nCB/IgB727gOlQppDqrSsBMviY/B29HrI5Yoq8z+Nj0HMi3FwsHMS9H0tYQwA+o0DjgGydPn5+XB0dBQ7hk5UKhWUSqXR35eHWYkIXyXMR3jrofBuHFRl3v6T69DItRnat+gtQjIiInoa/glFRPj16hHcfXgT//3f5yhTlyK/6DFGLfTB59N+xtkriTh39UecPL9Pu/zET0Pwwav/RQvP9iKmJiIigGWOiAAsm3xU+9/ZD65j0rJ2+Pfc6wCAf7yypdKyfWbJ8MXbv8LR3tWICYmEERwcjPPnz4sdg0hQPMxKZOY+i/87Xl7ghXuPMvCPdX0x9uMWAIBPdkzA/1L3iJyOiIieFffMEZm5t4atrXb6jOjqr0p1r++D3R/m1ri9hCUaIWIRieLatWv4xz/+gUWLFsHX11fsOESC4J45IiKyGPn5+Th79qzkbnlBVBuWOSIiIiIJY5kjIiIikjCeM2fmzl5Jwsw1EZWm2dko4dUwAJEdRmNI2BtQ8CafZMY4BojI3PEnmIWIaPcyQgOjoIEGD59kI+HMZqzZ+zZu3j2P6cO+EDsekcFxDBAAeHp6YvHixfD09BQ7CpFgWOYshL9nB0R2HKV9PbDbZIyPC8SBU+swrt9HcHVsKGI6IsPjGCAAcHV1xaBBg8SOQRLVrFkz3Lx5U+wYVbDMWSh7GyUCvbvg6K/xuH3/Cn+RkcXhGLBMDx48wIEDB9C/f3/Ur19f7DhkBD4+PggNDUXHjh0RHBwMR0dHyGQyqFQqpKam4vTp0zh16hSuX79e63bCw8Nx4MABLF26FPPnzzdO+DpimbNgWfevAACcHfgDjSwTx4DlycrKwoIFC9CuXTuWOTNmbW2NoUOHYvLkyejRo0eNy0VFRWn/+9ixY1i9ejV27tyJ4uLiSstVFDlHR0e8//77SE9Px5YtW/66OdFYxNWsOTk5iI2NRYsWLWBnZ4emTZvizTffRF5eHsaPHw+ZTIbPP/9c7JgGVViSj0d5OchV3cO1rHNYsWsK0jOTEdg0FF4NA8SOR2RwHANElqFv375IT0/H119/XWuR+6vw8HBs3boVV65cqVTy/lzkAGD//v2Ij48XPPezMPs9cykpKejfvz+ys7OhVCrRqlUr3L59GytWrMCVK1fw4MEDAEC7du3EDWpgmw/Nw+ZD8ypNC289FG+8tEqkRMZR8kLU0xcCoFjyMeRtQwycRj/bDi/C5cxfcDnjDLIfXEPjet7a56ZS3XEM1M6UxwBRXTg6OuKzzz7D+PHjK01PTU3Fjh07cPr0aSQnJyMnJwcA0KBBA7Rv3x6dOnVCdHQ0WrduDQDw8vLCt99+iy+//BLbt29HfHx8pSI3dOhQFBUVGffDPYVZl7mcnBwMHDgQ2dnZmDFjBubNmwcnJycAQFxcHGbPng0rKyvIZDKEhJj3D7EXn5uIHiHRKFWX4FrWOWxPWoycRxmwsbYTO5pBKWJn1jhPk50N9eZ/Ay7OkHl5GTGVbjYcmAsnh/rw9+yAvIJcseNIFsdAVVIZA0RP06BBAxw8eBCdOnXSTvv++++xYMECHDlypNp1srKykJWVhf379+ODDz5A9+7d8e677+KFF14AAIwbNw5jxoyBQqEAYLpFDjDzMjdt2jRkZGRg6tSpWLp0aaV5sbGx2Lp1K86ePQtfX184OzuLlNI4PN380SEgEgAQGtgfrX3DMX11OJbvnIR3Rn0tcjrDkUf2rna6prAQZW/NAORyKObOgayB6Z47s3nOFXg0aA4AiFnaGgXFKpETSRPHQGVSGgNCUiqVCAsLg1KpFDsKCcTFxQUJCQlo3749AODx48eYMWMG1q2r/vnTNTl69Cj69u2L1157DcuXL4ejo6O2yCUkJJhskQPM+Jy58+fPY/v27XBzc8OiRYuqXaZjx44AgLZt22qnVZS/0NBQ2NraQiaTGSWvsQX7dENkh9FIOrsdqdf/J3Ycoyv75DPg6jXIJ7wGeft2YsepVUWRI2FxDHwmmTEgJB8fH6xbtw4+Pj5iRyGBbN68WVvkMjMz0aVLF52L3J9dunSpyu/+srIyky1ygBmXuW3btkGtVmPkyJHaY91/ZW9vD6BymUtPT8fOnTvh7u6Ozp07GyWrWEZGvge5XIFN3/1T7ChGVfafeGiO/AhZzx5QDBsqdhwSEceA5Y2BsrIyqFQqlJWViR2FBDB69GjtfQPv3buH559/HufPn9d7exUXO1Tsua0ocP369cOrr776zHkNxWzL3OHDhwEAERERNS6TkZEBoHKZ69GjB7KysrBnzx5ERkYaNqTIPN1aIKLtCCSn/4BzV4+KHcco1L8kQ71hI+DrA8Xbb4kdh0TGMfCW2HGM7sKFC+jcuTMuXLggdhR6Ro0aNcLy5cu1rydMmICLFy/qvb3qrlodMWKEdv6yZcvg7u6uf2ADMttz5m7cuAEA8Pb2rnZ+aWkpjh8/DqBymZPLhe+3nTp1QnZ2dpXpNlb2+GLqZcHfTxcvP/8OElO2YdOhf2LppETBt+8f4I/i0gKd19PY2ABrhb3KUJN9B2ULFwMODrCa9x5k9sKe+B7gHwDZX+5N9DSm8B0wtNq+A6bw+Q09BgD9xoGljAEh6LLHJCsrC0D5L+rk5OQ6r7dx40YdU5mel8a9BaWjM7Kys+Dl5VXltalRq9W1zp80aRLq1asHANiyZQv27Nmj93tVV+QqzpHbtGkTxo4dC1dXV7z++uuYN29ejdvx9/fXu0e4u7vj9OnTeq1rtmUuLy8PAFBQUP0P0O3btyMnJwdOTk7w9fU1aJbs7GxkZmZWmW5n7WDQ9wWAtn69kLBEU+N878ZB+C7OcIcbsm7fRmFJvu4r2tnCWsAcmsJClM7/EFCpoPhgHmRNPATcernbWbeBQt3OqTDGd0BstX0HLGEMAHqOAwsZA0LIz6/7/7aFhYXaf3VZr7qf4VKj/v3QsrqsDJmZmVVeS4mVlRUmTpwIoPzQ+Zw5c/TeVm1FDgDmzp2LkSNHwsrKCjExMViwYAFKSkqq3VbFHwvGZrZlzt3dHQ8fPsQvv/yCrl27VpqXlZWFWbNmAQBCQkIMfpFDTbtlbazsDfq+psCjSRO998zdEzBH2bIVwJWrkI8dDXmoYc6FbOLRRK89c+autu+AJXx+QL9xYCljQAgODnX/o8DOzk77ry7reXp66pzL1Mh/vzJTrlDA09OzymtTo1arayxHUVFR2sx79uzRnjalq6cVOQC4ffs2du/ejWHDhsHDwwMDBgzAN998U+32PDw8nmnPnL7MtsxFRkbi/PnzWLx4Mfr06YOAgPI7vP/8888YPXq09qaBxrhZcE27TcuKgcQVBn97UV2+dBkKG93XyysrRb3DCYJkKIvfBU1iEmRdu0D+yoinr6CnS5cvQanQbUhZ+nfAEj4/oN84sJQxIARdzn9LTU3Fhg0bEBUVheDg4Dqvt2DBAn2imZSFq7bgsSoPHu4eyMjIqPLa1OTl5dV4AWP37t21/63vIfC6FLk/v8ewYcO0711Tmbt8+bIot70x2wsgYmNj0aBBA9y6dQvBwcFo06YN/P39ERoaiubNm6N37/J7L/35fDkyP+qUs1Cv2wB4eUERO9NsbzVDVBOOgcoCAgJw/Phx7R/4JE0VtxYDgJ9++knn9XUpcn99jz+/t6kw2z1zXl5eOHr0KGbNmoUjR47g+vXraNWqFdauXYuYmBj4+fkBYJkzZ5r7D1D20SJArYa8exg0J35CTWdOyZr7QtbcsOdO6ivhzFe4+7D8gp7cvHsoLSvGlu/L9xI0queNPh1HixmPTJi5jAEhWVtbo359y7hBsjmrOKqWkZGBu3fv6rSurkUOAO7fv4/r16/Dx8cHHTp00Du3oZhtmQOAoKAg7Nu3r8p0lUqF69evQy6Xa5/FRuZHk5EBPHoMAFBv217rsvJRr0Bhor/IDp5aj1+vVn4czcbv3gMAhDTvyTJHNTKXMSCkmzdv4uOPP8acOXPQrFkzseOQHuRyufYq1ps3b+q0rj5FrsKtW7fg4+MDR0dHWFlZobS0VPfwBmLWZa4mqamp0Gg0CAgIqPYE2Pj4eABAWlpapdc+Pj6VnvtGpk3eNgTyQ/vFjvHMPnk9SewIJFHmMgaE9OTJEyQmJmLKlCliRyE9aTQadO/eHXZ2dto7V9TVlClT9CpyQPnpW46OjigsLHzqbVOMzSLL3Llz5wDUfIg1Ojq62tdjx441i3sNERERSZVGo8GxY8f0Wnfs2LFwdHSEXC7X+Vmr+pybZywsc9XQaGq+JxURERFJU3FxMf72t79BJpOZ9LNWdcUyJzE//hqP5Ms/4PVBy/DRlhG4cScNttb2cHVshGlD/wVPtxZGy3Hy/LdQFTwULQNZJo4BInoWxSLcC9HQLLLMVTy3VYqO//YNIjuOAQBEPTcRoYH9IZPJsPv45/h0xwSjnV91/Ldv0DNkOBQKa9EykGXiGKBn0bhxY8yePRuNGzcWOwqRYCyyzJkyVUEuYj5pjaKSAjR0aYqSsiJk37+K5zuOxptD/4XU68cx6/82wkphjeeCorTrBTXrgvgjSw2eYUb0OpSWlVTKYYgMZLk4BsiQ3NzcdHqWK5EUsMyZGEd7V/Ru9wrsbZ0wqs97+Pnid9h2eCFmRK/D6YuH0Mq7W6VfHhW+ObYcXYMHGzwDAKSkJ1abQ8gMZLk4BsiQHj16hBMnTqBr165wcXEROw6RIFjmTFD67RS8FD4NAHA54wxaNGkPAPhf6m6EtX6pyvJbf1iI2znpiPv7D3Xa/rSVXZGZc7naef+anoxGrk1rzFBTDl0zENWGY4AMJSMjA9OnT0d8fDzLHJkNljkTdPV2Clp4lv/iuJxxBl2DB0Gj0eD0xe8Q82JcpWV3JC3Fsd92IW7i97CzqdtDo1e8cUKvDACqzaFPBqLacAwQEdWd2T6bVapyHmUCMhncXDwBAFezf4WvextcuHUKzRoHwd72j4cOxx/5FIkp27A4JgGO9q6VtrN42xgcO1f9g4D1zQCgSo7aMhDpg2OAiEg33DNnYtIzkysdznG0c8WeE6vhonRDt+Ah2un3cjOwdt8MeNRvjplrIgAANla2WDntJADgUsZpDPn9EJFQGWZEr8Px377R5nhaBiJ9cAwQEemGZc7EdGk1AF1aDdC+XvXmzwCACUuDsWRSonZ6Q1cvJCyp/ubGuap7cHPxRMum+j16rKYMAPBT2l5tjtoyEOmLY4AMyc7ODkFBQbCzsxM7CpFgWOYkYt3M1Dov6+rYEIsnJoieg0hIHAMkBD8/P+zatUvsGESC4jlzRERERBLGMkdERBYjLS0NISEhSEtLEzsKkWBY5oiIyGJoNBqUlJRAo+G5jmQ+eM6ciOTWQIR+F9tJhrzqjfrrxEGuwMPefYQNY2AOcoXO61j6d8ASPj+g3ziwlDFAVBMHBweoVCrBtrdk7dd4nJcPZ6UDZv19RJXXQnBwEOc+kyxzIpLJAIWN2ClMk0wmg1Jh/l9PS/8OWPrnr42ljAGimshkMiiVSsG2Z2NrB5uSMtjY2kGpVFZ5LWU8zEpEREQkYfyzj4iILIafnx/27NmDpk2bih2FSDAsc0REZDHs7Ozg7+8vdgwiQfEwKxERWYzMzEy8++67yMzMFDsKkWBY5oiIyGLk5uZi586dyM3NFTsKkWBY5oiIiIgkjGWOiIiISMJY5oiIiIgkjFezEhGRpAUGBtZ5WRcXF8ybNw/dunWDh4eHAVMRGQ/LHBERWQwPDw+8//77YscgEhQPsxIRERFJGMscERERkYSxzBERERFJGMscERERkYSxzBERERFJGMscERERkYSxzBERERFJGMscERERkYSxzBERERFJGMscERERkYSxzBERERFJGMscERERkYSxzJmAJUuWoGvXrqhXrx5cXV0RHh6OgwcPih2LiIioVvv370e7du1ga2sLHx8ffPrpp2JHMqoff/wRgwcPhre3N2QyGRYsWCBKDpY5E3D48GG89tprSExMxKlTp9CtWzcMGDAAx48fFzsaERFRtU6fPo3Bgwejf//+SElJwfvvv4+5c+dizZo1YkczGpVKhVatWiEuLg7u7u6i5bAS7Z1J68CBA5Vex8XF4eDBg9i1axfCwsJESkVERFSzTz/9FJ07d8aiRYsAAEFBQUhNTcXHH3+MSZMmiZzOOKKiohAVFQUAmD17tmg5WOZMkFqtxuPHj6FUKsWOQkREEpN19z6e5BVUmV5aVqb999K1jCqvKygUcvg1a/LU9zl+/DjGjx9faVq/fv2wdOlSZGRkwMvL61k+ht7yCgqRmZ1TZXpdPz8AeDZ2g9LBzvBhBcIyZ4IWLlyI3NxcTJw4UewoREQkMcUlpfhyxwFoNJpq5+cXFGLDf/bX+Lp/r9A6lbmsrKwqhxYrXmdlZYlW5mxtrHHwyEncvnO/2vlP+/zuDetj6piXDJ5TSDxnzsSsXr0aCxcuRHx8vGgDgYiIpMvbszF6dWmn17o+Xu7o3jlE2EBGZqVQ4P9ejICVQqHzugqFHCMG9oaVle7riollzoQsXboUs2bNwp49exAZGSl2HCIikqjnwzrAs7GbTuvY2Fhj+Iu9IJfXrRp4eHggOzu70rQ7d+5o54mpccP66Nuzs87r9e3eGe4N6xsgkWGxzJmIf/7zn5g/fz7279/PIkdERM/ESqHA8AG67Z0a9Hw31Hd1rvPyYWFh+O677ypNO3jwILy9vU3iyFJYpzZoXofDxRV8m3ogvHMbAyYyHJY5E/DWW29hyZIl+Oqrr9CyZUtkZ2cjOzsbjx49EjsaERFJVGO3eujXK7ROy7by90bHNgE6bX/69Ok4deoU3nnnHVy4cAGbNm3CypUrMWfOHH3iCk4uk2H4i71ga2P91GVtbawRrcNeyQoqlQopKSlISUlBcXExsrOzkZKSgvT0dH1j60WmqekMSTIamUxW7fSxY8di48aNxg1DRERmQ63RYMP2/Ui/kVnjMo4O9njrtWFwVNrrvP1vv/0Wc+fOxYULF+Du7o4333wTb7/99rNEFlxy6mVs35dY6zLDonqiU5uWOm87KSkJERERVab37NkTSUlJOm9PXyxzEnPtVha83BvC2poXIhMR0dPlPlbhsw3xKCwqrnb+mL/1RasW3kZOZTwajQZb//s9zl28Vu384AAfjBrSp8YdK1LAw6wS8kSVj/X/2Y+4L77Go8cqseMQEZEEuDo7YnCf6m9A3zkk0KyLHFB+9GtI3+5wcnSoMs9RaY+X+naXdJEDWOYk5cjJsygtLUM9Zyc4O/GGwkREVDftWrVASGDzStPquzhhQO8uIiUyLqW9HYb161Fl+t/69YCjg+6Hl00Ny9yflJWV4auvvsILL7yAhg0bwtbWFs2aNUO/fv2wbt06lP1+t2gxPFHl46eUNABAZHhHyf8VQURExiOTyTDkhXDt3imZTIbhAyJga2sjcjLjaenXDF3at9K+Dm0biCAz2SvJMve7x48fo0+fPhgzZgwSEhJgY2ODtm3bQq1W49ChQ4iJicGTJ09Ey1exV65Zk8bw9/EULQcREUmTg70dovv3BAD0fK4tfLzEezC8WKJ6PQe3ei6o7+qEF3t3FTuOYHgBxO+io6O1T13YvHlzpatT7ty5g/Xr1+PNN9/U63mpKzftwhNV1efk1ZVGo8GTvHwA5YNRn7taExERAUBxcQmsra0s9ghPxTNZTe13qZOjPd4YO1SvdVnmAJw5cwadOnWClZUVkpOT0bp1a0G3v3DVFjxW5Qm6TSIiIjIfzo5KzJ0yUq91eX8LALt37wYAvPjii4IXOaC8beuLe+WIiIjM37N0BZY5AGlp5RcWdO1qmOPn+u42BYB9P5zAsdPn0KxJY7w+apDF7hYnIiKi6rHMofziBwBwcXExyPb1PWfuz3vlch4+wqLVW4WORkRERCbgWc6ZY5kD4Oxc/mBhQz0L9Ymq4JnPmcsvKBQoDREREZkTljkAwcHB2LVrF06cOGGQ7etzHJznyhEREVmOZzlnjlezAkhOTkaHDh1gbW2NlJQUtGrV6ukrGRjPlSMiIqK64E2DAbRv3x7Dhw9HSUkJ+vfvjyNHjlSaf+fOHSxatAh5eca5vQif9kBERER1xT1zv3v8+DEGDx6MpKQkAICnpyeaNGmCrKwsZGZmQqPR4OHDh3B1dTV4Fu6VIyIiorrinrnfOTs74/vvv8f69evRq1cv5Ofn4+zZs5DL5ejbty/Wr18PJycno2RxVNrDztaGe+WIiIjoqbhnzkQVFhXD1saaZY6IiIhqxTJHREREJGE8zEpEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYSxzRERERBLGMkdEREQkYf8feZUJnofqGmgAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with XX entangling basis\n", "compiler_output = provider.qscout_compile(circuit, base_entangling_gate=\"xx\")\n", "\n", "# Visualize and get jaqal program of the compiled circuit\n", "print(compiler_output.jaqal_program)\n", "compiler_output.circuit.draw(output=\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "47f93a08", "metadata": {}, "source": [ "As we can see above, we get the same compiled gate structure as before. This is because, by default, the $XX$ interaction is used, and we observe that it uses the $R_{XX}$ gate as the base entangling gate in the compiled circuit. Similarly, let's take a look at the compiled circuit if we now specify the compiler to use the $ZZ$ interaction instead:" ] }, { "cell_type": "code", "execution_count": 12, "id": "03b5a411", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "ZZ allqubits[0] allqubits[1] 1.442906408693394\n", "measure_all\n", "\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with zz entangling basis\n", "compiler_output = provider.qscout_compile(circuit, base_entangling_gate=\"zz\")\n", "\n", "# Get jaqal program and draw circuit\n", "print(compiler_output.jaqal_program)\n", "compiler_output.circuit.draw(output=\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "299343cf", "metadata": {}, "source": [ "Looking at the compiled circuit above, we can see that by specifying the $ZZ$ entangling basis, we use $R_{ZZ}$ gate as the base entangling gate and the remaining single-qubit gates are compiled and optimized accordingly. " ] }, { "attachments": {}, "cell_type": "markdown", "id": "3df7bb28", "metadata": {}, "source": [ "## Swap Mirroring\n", "\n", "In addition to specifying the type of base entangling gate to use for the compilation and optimization, we can also specify whether to use swap mirroring to help reduce the two-qubit gate overhead of the circuit. By default, it is not enabled; but we will see the differences in circuit compilation by compiling to a random quantum volume model circuit. You can learn more about quantum volume and randomized circuits [here](https://arxiv.org/abs/1811.12926)." ] }, { "attachments": {}, "cell_type": "markdown", "id": "a3bf3246", "metadata": {}, "source": [ "### Create random Quantum Volume (QV) circuit" ] }, { "cell_type": "code", "execution_count": 13, "id": "9cc395bf", "metadata": {}, "outputs": [], "source": [ "# Generate a random QV circuit\n", "circ = qiskit.circuit.library.QuantumVolume(num_qubits=2, depth=4, seed=123)\n", "circ.measure_all()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "551650d1", "metadata": {}, "source": [ "### Compile without swap mirroring" ] }, { "cell_type": "code", "execution_count": 14, "id": "90e10bf6", "metadata": {}, "outputs": [ { "data": { "image/png": "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qmm9jhp357xyrQOA/VR2n2DLZ3tpqgXVLPNz391YrFar1egiYB952dK6mUZX8buz6af06if3asrYr40uxSbd4yRP97ymptJteEe6lC75BkpdHzG6GvdV3r7iwemxmvbIOlULrHHVZc1yvHN8G49+wPm4ep/gzMd9RkaGAgMLfvFIT09XQEBAhdbDGXpUmpDAcKc4kAFUzNynd5V7WY53wPXRJzgvxtADAAAAJkagBwAAAEyMQA8AAACYGGPoXYiHd8GFH7g2HsUffge4FHfuKzi+geJcvU9wh+OeQO9CLBbnvYobgPOgrwBwJfoE82PIDQAAAGBiBHoATmn58uVq3bp1kf8iIyPl5+dX5rzSDBs2TBs3brSphri4OEVHR8tisWj79u1lLnvrrbeqZcuWat26tbp27apt27YVW+b999+XxWLRsmXLCqd17dpVhw8ftqkuwF2YrR/Yv3+/OnXqpMaNG6t9+/batev32zyW1UfQD+CaWQHAQb5722r9elrB/2115swZa0xMjHXu3Lk2zbNardaffvrJ2qNHD5u3+d///td67Ngxa7169azbtm27an2XLV261NqyZcsi8w8fPmzt2LGj9cYbb7R+/vnnhdM///xz64gRI2yuDTArV+4Hunfvbn3//fetVqvVumjRImu7du2K1HfZH/sI+gH3lZ6ebpVklWRNT0+v8Ho4Qw/A6eXn52v48OG65ZZbNGbMmHLPu2z27Nm69957bd7uTTfdpKioqHItGxISUvjnc+fOyWKxFKnxwQcf1JtvvilfX98i7fr3768vv/xS586ds7k+wJ04ez9w8uRJbdmyRffdd58k6Y477tCxY8d04MABSWX3EfQDuFZcFAvA6U2aNElpaWn6/PPPbZp32fr16/XUU09VZomSpJEjR2rdunWSpFWrVhVOnzFjhjp37qy2bdsWa+Pt7a0WLVpow4YNGjBgQKXXCJiVs/cDx44dU61ateTlVRCtLBaL6tatq6NHjyomJkZS6X0E/QCuFYEegFP7z3/+o3nz5mnLli3y8fEp97wrJSYmqmbNmkWmdezYUfv37y9x+W3btqlOnTo21zp//nxJ0ocffqiJEydq1apV+vXXX7VkyRJ99913pbaLiIhQYmKizdsD3IWZ+oGylNRHXEY/gGtBoAfgtPbu3asxY8Zo2bJlql27drnn/ZG/v7+ysrKKTLP1wjhbjBo1So888ohOnz6tDRs2KCEhQY0aNZIkpaSkaOzYsUpOTtajjz4qScrKylKVKlUqrR7AzMzSD9SpU0fJycnKzc2Vl5eXrFarjh49qrp16xZb9so+onr16pLoB3BtGEMPwClduHBBQ4YM0UsvvaQuXbqUe15JWrZsqb1791ZWqTp79qyOHz9e+HrZsmWqXr26QkND9eijjyo5OVkJCQlKSEjQjTfeqDlz5hSGeUnavXu3WrVqVWn1AWZlpn6gRo0aatOmjT766CNJ0pIlSxQVFaWYmJgy+4jL6AdwLThDD8ApzZo1S3v37tW7776rd999t8i8O++8s9R5q1atKnambujQoVqzZo169uxpUw0PP/ywVq5cqZSUFPXu3VtBQUGFF7g9+OCDGjRokAYNGqRz585p2LBhunjxojw8PBQeHq4VK1YUueitNAkJCcrLy+ODHCiBmfoBqeDC29GjR2vy5MkKDg7W+++/L0lX7SPoB3CtLFar1Wp0EQDcw4Z3pEvpkm+g1PURx203PT1dnTp10saNGxUQEOC4DZfDM888o5iYGD344INGlwI4BP1AcfQD7isjI0OBgYGSCv6NVvTfJkNuALi8wMBAvf7660754JbatWvrgQceMLoMwOXRD8CVcYYegMMYdWYOgPOgHwB+xxl6AAAAAAR6AAAAwMwI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjCfFuhGrVcrPMboK43l4S+V4gCfgNly5b+B4B4py5ePdFq7WNxDo3Uh+jrRuptFVGK97nOTpY3QVgPNw5b6B4x0oypWPd1u4Wt/AkBsAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJkagBwAAAEyMQA8AAACYGIEeAAAAMDHuQ49KtePgej39Tvci0/x8AhQV3lg924zQbZ3/LE9P/hkCrox+AHBv9AGVj70Hh+je+h51aNJPVll15kKKvv55vt754i86enK3nho6x+jyADgA/QDg3ugDKg+BHg7RKLKNera9r/D1wE5/0pipTfTlprm6v88rCgkMN7A6AI5APwC4N/qAysMYehiiik+AmtS7UVarVcdPHzS6HAAGoB8A3Bt9gP0Q6GGY5N8O3mD/UIMrAWAU+gHAvdEH2IdbBPrU1FRNmDBBMTEx8vPzU506dfTEE08oIyNDY8aMkcVi0b/+9S+jy3RpWTmZOpeRqrPpp3Q4eadmLn1MB5K2qUmdDooKb2x0eQAcgH4AcG/0AZXH5cfQb9++XX379lVKSooCAgLUrFkzHT9+XDNnztTBgweVlpYmSWrdurWxhbq4+V9N0vyvJhWZ1qX57frzkFkGVQRHsVql8ylS4nYpO7NgWnamlLBJqt1C8qliaHlwIPoB95WbLaXESyf2/t4P5GRJaUelanUki8XY+uAY9AGVx6UDfWpqqgYOHKiUlBSNGzdOkyZNUlBQkCRp6tSpmjhxory8vGSxWNSyZUuDq3Vt/W8Yq5taDlNufo4OJ+/UwvVTlHouUT7efkaXhkqUeVb6dUVBoL+SNV868J106AepTlsppotkcYvfC90b/YD7sVqlo1ukQxulvOyi8/Jzpa2fSQGhUmx/KbimMTXCcegDKo9Lf4TGxcUpMTFRjz/+uKZPn14Y5iVpwoQJatWqlXJzcxUdHa3g4GADK3V9kWGN1KZxT3Vo0ld3dZ+gv9//hfYmbtYbSx4xujRUkswz0uZPiof5K+XnSUc2Sbu+LPjgh2ujH3A/BzZI+/9bPMxfKSNN+vlT6dxxx9UFY9AHVB6XDfS7d+/WwoULFRYWpldffbXEZdq2bStJatWqVeG0y18AOnToIF9fX1n4HbBSxEZ3Us82I7R+x0LtSvjR6HJgZ/n50vbPpZzM8i2fsrvgLB7cC/2Aa0vZU/CFvTzycgr6jNxLlVsTnAt9gP24bKBfsGCB8vPzNXz4cAUGBpa4TJUqBYN3rwz0Bw4c0JIlSxQREaH27ds7pFZ3NbznC/Lw8NSHa/5qdCmws9RDUmaabW2Obi34IgD3Qj/gumz9kp5zUUreVTm1wHnRB9iHywb6tWvXSpK6d+9e6jKJiYmSigb6m266ScnJyVq+fLl69uxZuUW6uciwGHVvdbe2HfhWOw9tMLoc2FHiNtvbXLogpXIbYrdDP+CazqeUPdyuNInbGX7nbugD7MNlL4o9cuSIJKlevXolzs/NzdUPP/wgqWig9/Cw/3ecdu3aKSWlAj2bnfl4VdGcx/cbXUYR99zynNZtX6APv/qrpj+yziHbbNS4kbJzLzpkW+5qzuMH5ONl+0VOUyfN0aff/a0SKkJZjO4bKrMf4Hg3xq3XP6h7b37R5nYZaVKTRs2VkXXW7jWhgNHHe0ncOQvkX/HTdJcuXbRtWwXOiMmFA31GRoYk6eLFkt+shQsXKjU1VUFBQapfv36l1pKSkqKkpKRK3UZ5+Hn7O3ybrRp209fTSj/dUq9mU62ZmufAiqTk48eVVd7B3bCZh8WjQmFeKrhwzhmOFXdT2X2Dkf0Ax7sxsptW/P08l5auE2foByoLWaCAM/YNJ06cqHBblw30EREROnPmjLZu3aqOHTsWmZecnKzx48dLklq2bFnpF75GRERU6vrLy8eLG35LUq3atZ3iW7kru5STKd8KfGh4elsVGRlZCRWhLK7cN3C8G8Pbt+K/dletFigvf/qByuLKx7stnKVvyM/PV3JysiSpZs2K37vVZQN9z549tXv3bk2ZMkW9evVS48YFTyDbvHmzRowYodTUVEmOeaDUli3OcfuOvGxp3UyjqzDe/n375eljdBWubfvSggtjbfXMKw9reoOH7V8QyuTKfQPHuzEunJJ++tD2doE1pD0HfuVBU5XIlY93WzhL35CRkVF485bvv/++wutx2YtiJ0yYoOrVq+vYsWOKjY1VixYt1KhRI3Xo0EENGjRQjx49JBUdPw/APqJa296mSlWperS9KwFghKBwKaQCJ9nrtOapsUBFuGygj4qK0oYNG9S/f3/5+fkpISFBoaGhmj17tlauXKl9+/ZJItADlaF6fSkw3LY29drztFjAldTrYNvyvoFSRJPKqQVwdS475EaSmjZtqhUrVhSbnp6eroSEBHl4eKh58+YGVAa4NotFaj1E2rJAyrpw9eWjWkuRfLcGXEp4Q6lhV+lgOe5E6OUntb5DTjEEAjAjlw70pdm1a5esVqsaN24sf//iF+4tXrxYkhQfH1/kdXR0tNq1a+e4QgET8wuW2g+X4ldLpxNKXsbLV4ruUHAmj5/ZAddT/wbJx78g1GeXckORqrWkZn2lgFDH1ga4ErcM9Dt37pRU+nCbYcOGlfh61KhR+uCDDyq1NsCV+AZK1w8tuLd00g4p/ZSUlyt5+0nhMQU/r3NGDnBtkS2kWs2kk/ulE3uk7IuSh4fkHypFtpSCK35jDwC/IdCXwMpj6gC7CgiVGpf+0GYALs7Ds+ALPGPkgcpBoIdmLYvTxvjlOnHmiN5+cptiIluXuFx27iXN/mKctuxbIx8vPzWs1UrP3PuRTeuo7Brvmxwtby/fwvvs3tPj/9St9V12rQVwd9/9sljb9n+rRwe9rlc+vltHTsTL17uKQgJrKO72txUZFlNm++ycrHK3K+uYLqtPAmA/13rMl4ct/YJUdi5wx77BLQP92rVrjS7BqXRtOVR3dpugp97qUuZy81Y9I4vFog8m7JPFYlHa+RSb11HZNUrSc8MX2v0LBYDf/fDr5+rZdqQkqd8NY9WhSV9ZLBYt++FfmrHoQb326PqrrsOWdqUd02X1SQDsxx7HfHnYsu6ycoE79g1uGehRVMsGN111mYvZGVq9aZ4+eT6x8Mm6ocG/PwG3POu4FpW9fgC/S794Vg+91lyXci4qvGod5eRdUsrpQ7ql7Qg9cfvb2pXwg8bf9YG8PL11Q9N+he2a1r1Ri/87/arr9/H2q1C7K12tTwJQfpV9zJeHrf1CabnAXfsGAj3KJTn1oIL8Q7Vg7WRt3f+NfL2raESvF9Wm0S1Gl1bM1E9HyiqrmtTpoDH9/qEQW2+IDri5wCoh6tH6XlXxDdJ9vV7Q5r1rtGDtZI0bNldb9n6lZvU6ycvTu1i7z79/Qx1jB9u8vau1K+mYNlOfBDg7Rx/z5VHRdbtr30CgR7nk5efqxJkjqlejmR7s9w8dSNqmiXN6ae7Tu1QtqOK3KIh7s6OSUveXOO/tp7apRkgdm9Y349HvVKNaXeXm5ej91c9r6sJRmjxmVYXrA9zVgePbNaRLnCRpf+LPiql9vSTpx13L1Ln5kGLLf/LtZB1PPaCpD39r03au1q60Y7qy+iTAXVX2MW/L531F+xOp8vKKsyPQo1xqVKsrD4uHerQZLkmKibxeEaH1dTh55zUdIDP/vNFeJUoqqFOSvDy9dXvXJ3X/1MZ2XT/gLg4d366YyIIP9P2JP6tj7CBZrVZt2btGD/WfWmTZReun6/tfl2rq2G/k51P82R6lKU+70o7pyuqTAHdV2cd8eT/vK9qfXOaufQMPWke5VA0IU+uYW7Rl7xpJUnLaYaWkHVbdmk2v2nbKgpH6fufnlV2iLmZnKP3i2cLX67YtKDzDAKD8Us8lSRaLwqpGSpIOpfyi+hEttOfYJtWt2VRVfAMLl1383xlat32Bpjz0tQKrhBRZT1nHflntLivrmL6WPglAUY445sujPP3C1bhr38AZeuifix/WT3tWKu1Civ5vbm/5+wbpw2cOSJJeW/SgOjYbpE6xg/TkHe/otUVjNHfVRHlYPPTkHbMLD/6y1rEvcYtu++1nvMqssX5Ec700/w7l5+fJKqtqhTbQhLvnX9N2AXd0IGlbkS/DgX4hWr7xLVUNCFOn2NsKp586m6jZK8apVmgDPf1OwYMGfLx89WbcT5JKP/av1q68x3RZfRKA8qvsY748ytsvdIodJKnsXOCOfYPFylOU3EZetrRupmO3eTb9lF795F5NGfu1Yzdchu5xPJ0UuFJ5+4YHp8dq2iPrVC2wxlWXdZZjn+MdKMqWLGDGY768nKVvyMjIUGBgwS8g6enpCggIqNB6CPRuxIhA74yc5SAGnIUr9w0c70BRrny828JZ+gZ7BXrG0AMAAAAmRqAHAAAATIxADwAAAJgYY+jdiNUq5ecYXYXxPLyl354GDUCu3TdwvANFufLxbgtn6RvsNYae21a6EYvFOS4AAeBc6BsA98Hx7poYcgMAAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJkagBwAAAEyMQA8AAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJkagBwAAAEyMQA8AAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9A7gWnTpqljx46qVq2aQkJC1KVLF61evdrosgAAAGACBHonsHbtWj3wwANat26dNm3apE6dOmnAgAH64YcfjC4NAAAATs5itVqtRheB4lq2bKlevXrptddeM7oUAAAAVIKMjAwFBgZKktLT0xUQEFCh9XCG3gnl5+fr/PnzFX5TAQAA4D4I9E5o8uTJOnv2rMaOHWt0KQAAAHByXkYXgKLeeustTZ48WcuXL1dUVJTR5QAAAMDJcYbeiUyfPl3jx4/X8uXL1bNnT6PLAQAAgAlwht5J/PWvf9Xrr7+uVatW6eabbza6HAAAAJgEgd4JPPnkk5o9e7YWLFig6667TikpKZKkKlWqqGrVqgZXBwAAAGfGbSudgMViKXH6qFGj9MEHHzi2GAAAADiEvW5byRl6J8B3KgAAAFQUF8WaSL7VqnkLV+m7n3YoOyfX6HIAAADgBAj0JhK/P0H7ExL17Y9blZtLoAcAAACBvoi8vDz9+9//1q233qrw8HD5+vqqbt266tOnj+bOnau8vDzDasu3WvXtD1slSZ3bNpd/FT/DagEAAIDz4KLY35w/f1633Xab1q1bJ0mqXbu2IiMjdfz4cR0/flxWq1VnzpxRSEiIIfX9uu+wPvr8a/n6eGviI/cQ6AEAAEyOi2LtbMyYMVq3bp2ioqI0f/58de/evXDeiRMnNG/ePHl7extSG2fnAQAAUBrO0Ev6+eef1a5dO3l5eWnbtm1q3ry5Xdf/5odLdSH9YoXb5+bmKjPrkiQpKMC/1NtcAgAAwDyyL2XppXEPSpKmzf5YT4+9t0Lr4Qy9pGXLlkmS+vfvb/cwL0kX0i/qfHqGfdaVkWmX9QAAAMBY2dmXCv+cfg0nfwn0kuLj4yVJHTt2rJT1BwVWqXBbzs4DAAC4puxLnoV/DryGvEigV8EFsZJUtWrVSln/n0fdXqF2+Var3vxgqTKzLqlHx+t1603t7VwZAAAAjJKRkVE45ObR4YMrvB4CvaTg4GBJ0rlz5ypl/RUdQ3/l2fnNv+zVlp377F0aAAAADGK1WjXptbmSpHmLVitu9B0VWg+BXlJsbKyWLl2qjRs3Vsr67TGGnrHzAAAAris9I6vCbQn0koYMGaK///3vWrVqleLj49WsWTO7rr8iY+gZOw8AAOA+ruWaS25b+Zu77rpLn332merWrav58+fr5ptvLpx34sQJvffee4qLi6vwDf9tcXnsfPLJ04ydBwAAQJkI9L85f/68Bg8erPXr10uSIiMjVbt2bSUnJyspKcmhT4rlqbAAAAAoLw+jC3AWwcHB+uabbzRv3jx169ZNmZmZ2rFjhzw8PNS7d2/NmzdPQUFBDqnlx593SeKpsAAAALg6ztA7oUuXsrVxW7w6tGpCoAcAAECZCPQAAACAiTHkBgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMjEAPAAAAmBiBHgAAADAxAj0AAABgYgR6AAAAwMQI9AAAAICJEegBAAAAEyPQAwAAACZGoAcAAABMzMvoAgAAuBZ79uwp97InT57UZ599pjvvvFM1atQod7smTZpUpDQAcAjO0AMA3MapU6c0a9YsnTp1yuhSAMBuCPQAAACAiRHoAQAAABMj0AMAAAAmRqAHALiNqlWrauDAgapatarRpQCA3VisVqvV6CIAAKgoW+5yU1Hc5QaAM+MMPQDAbVy6dElHjhzRpUuXjC4FAOyGQA8AcBsHDhxQnz59dODAAaNLAQC7IdADAAAAJsaTYgEXZ7VK+TlGV+GcPLwli8XoKkpmxvfNmfcnzMdqtSozM9PoMmzi7+8vCwcBDECgB1xcfo60bqbRVTin7nGSp4/RVZTMjO+bM+9PmE9mZqYCAwONLsMm6enpCggIMLoMuCGG3AAAAAAmxhl6AIDbiI2N1e7du40uAwDsijP0AAAAgIkR6AEAbuPw4cO6++67dfjwYaNLAQC7IdADANxGZmamduzYYbq7pwBAWQj0AAAAgIkR6AEAAAAT4y43ACrVjoPr9fQ73YtM8/MJUFR4Y/VsM0K3df6zPD3piuyBfQ0A7omeHYBDdG99jzo06SerrDpzIUVf/zxf73zxFx09uVtPDZ1jdHkuhX1dusjISE2ZMkWRkZFGlwIAdkOgB+AQjSLbqGfb+wpfD+z0J42Z2kRfbpqr+/u8opDAcAOrcy3s69KFhIRo0KBBRpcBAHbFGHoAhqjiE6Am9W6U1WrV8dMHjS7HpbGvf5eWlqaPP/5YaWlpRpcCA4SHh6t+/fpq0KCBatSoYXP7cePGKTQ0tBIqA64NgR6AYZJ/C5fB/nxAVjb2dYHk5GS9/PLLSk5ONroUOECjRo300ksv6csvv9TJkyd18uRJHTp0SAcPHtSJEyd06tQprV69Wn/729/UuHHjMtf1xhtvaPr06frmm28I9XA6DLkB4BBZOZk6l5Eqq7VgXPcXG9/RgaRtalKng6LCy/4ghW3Y13B3ffr00VNPPaVbb721zOXCwsLUu3dv9e7dWy+88IK+/vpr/fOf/9SqVauKLPfGG28oLi5OktSqVSvddNNNWrZsWWWVD9jM5QN9amqqpk6dqqVLlyoxMVHh4eG6/fbbNXnyZMXFxem9997Tm2++qccff9zoUl1WXo6Uskc6c1TKzZY8vaWQSKlWM8nL1+jq4Cjzv5qk+V9NKjKtS/Pb9echswyqyHWxr+GuwsLC9K9//Ut33XVXsXknT57Utm3blJqaKkmqXr262rRpU2ToTa9evdSrVy8tWrRIjz32mE6dOlUkzOfn5+v+++8nzMPpuHSg3759u/r27auUlBQFBASoWbNmOn78uGbOnKmDBw8WjqFs3bq1sYW6KGu+dGijdGyrlHup6LwTe6QD30mRraSYrpKHpzE1wnH63zBWN7Ucptz8HB1O3qmF66co9VyifLz9jC7N5ZRnX+88tEHPzutbrG1uXrby8/O0ZmqeI0sGrlmPHj20YMGCIgH94MGDevvtt7Vo0SIdPXq0xHZ16tTR0KFD9eijj6pRo0aSpGHDhqlbt276/vvvNWTIEEm/h/n58+dX/l8GsJHLBvrU1FQNHDhQKSkpGjdunCZNmqSgoCBJ0tSpUzVx4kR5eXnJYrGoZcuWBlfreqz50s4V0sl9pS+TlyMd3SKlp0qtb5M8XPZfIyQpMqyR2jTuKUnq0KSvmtfvoqfe6qI3ljyi5+771ODqXEt59nWLBl31xSvpRdqlnjuux2a20+BOrvuLZUBAgDp37qyAgACjS4EdDRgwQIsXL5avb8HPvqdPn1ZcXJwWLFggq9VaZttjx47p9ddf1z//+U/dddddevPNNxUWFqbw8HDCPEzDZS+KjYuLU2Jioh5//HFNnz69MMxL0oQJE9SqVSvl5uYqOjpawcHBBlbqmg5+X3aYv1JagrR3baWWAycUG91JPduM0PodC7Ur4Uejy3Fp5dnX2bmX9NL829U8uovuveVZB1foONHR0Zo7d66io6ONLgV2ctNNNxUJ819++aViY2P1ySefXDXMX8lqterTTz9Vs2bNdPjw4SLTp06dSpiHU3PJQL97924tXLhQYWFhevXVV0tcpm3btpIKLm650uHDhzVo0CAFBQWpWrVqGjlypE6fPl3pNbuSnCzp6Fbb2hz/VbqUfvXl4FqG93xBHh6e+nDNX40uxeVdbV+/seQRZedkafxdHzi2MAfLy8tTenq68vIYUuQKqlatqk8++aQwzC9YsEADBw7UiRMnKrzO559/XvXr1y98bbFYNHLkSIWEhFxruUClcclAv2DBAuXn52v48OEKDAwscZkqVapIKhroL1y4oO7duysxMVELFizQnDlztGHDBg0YMED5+fkOqd0VJMdL+bm2tbHmS0m/VE49cF6RYTHq3upubTvwrXYe2mB0OS6trH39+fcz9dPuFXpp9DL5+fgbVKFj7NmzR+3bt9eePXuMLgV2MGPGjMKn/n777bcaOXLkNX1Z++MFsDt37pQk1a5dW//85z+vuV6gsrhkoF+7tmD8Rvfu3UtdJjExUVLRQD9nzhwlJSVp2bJlGjBggIYNG6ZPPvlE//vf/7R8+XKb67BarcrIyFBGRoZNP/uZ3enDV1+mJKkVbAdzu+eW5+Rh8dCHX3GWvrKVtK+3H1inuSsn6oURixQRGm1ccYCNOnbsqAceeECSdO7cOY0ePVq5uTaeTbpCSXez6dOnj86ePStJGjVqlLp27XrNdQOVwWJ1waRZp04dJSYmatu2bSXewSY3N1e1atVSamqqDh48qAYNGkj6/QvAunXriizfsGFDdevWTfPmzbOpjoyMjMJfCGrVqiUPD5f8/lTMc3d+rka129vc7njafj07v/QvYagYH68qmvP4fqPLcEpj/9VI2bkXjS6jRI5431LSEvT4zPa6r9ck3db52i+ENWp/jh49utzLJicn67333tMDDzygWrVqlbvdBx98YHthuCb5+fllPgDsk08+0T333CNJeuSRRzR79uwKb6ukMH95zPyYMWM0d+5cSdJnn31W4i0xL3Onz3rYX0REhLZs2VKhti55X5GMjAxJ0sWLJX+wLFy4UKmpqQoKCioyTi4+Pl7Dhg0rtnxsbKzi4+OvqSZ3eirh+fSzFWqXnnFOSUlJ9i0G8vN27SEU1yL5+HFl5WQaXUaJKvt9y8rO1KQPblPHZoPsEuYl4/ZnZmb5t5mVlVX4f1va0Tc5l5o1a+qOO+6QVHB/+ffff7/C6yorzEvS/Pnz9fLLLysiIkJDhgxRrVq1Sv1Md6fPejgXlwz0EREROnPmjLZu3aqOHTsWmZecnKzx48dLklq2bCmLxVI478yZMyVe9BIaGqq9e/deU03u9K39+NndaqteNrc7lrarcCwk7MfHq4rRJTitWrVrO/UZ+sq0YecSHUreoaTUfVq/Y2Gx+fOejleNanVtWqdR+9Pfv/xffvz8/Ar/b0s7+ibHK+sM/R133CEfHx9J0ty5c5WdnV2hbVwtzEtSTk6O3n33Xb3wwgvy9vbWsGHDNHPmzBLX506f9bC/iIiICrd1yUDfs2dP7d69W1OmTFGvXr3UuHHBo843b96sESNGFD4lzpEPlNq/f7/b3Pf44jnph7mSbBzM9dyMUXo1fFSl1OTO8rKldSV/9ri9/fv2y9PH6CpKVtnvW6+2I9Sr7Qi7rtOo/WnLBa45OTkaM2aMgoKC5O3tXe52L7/8ckVKwzW4ctjqH7Vr167wz//5z38qtP7yhPkrt/HCCy8U2/YfudNnPZyLS36NnDBhgqpXr65jx44pNjZWLVq0UKNGjdShQwc1aNBAPXr0kFT8lpXVqlUrvPjlSmlpaQoNDXVE6S6hSlWpRiPb2oTWlQLDK6ceALjM29tboaGhNoV5OJ/Lt57OycnRL7/Yfos0W8K8JO3cubPwV4DL2waciUsG+qioKG3YsEH9+/eXn5+fEhISFBoaqtmzZ2vlypXat6/giUd/DPRNmzYtcax8fHy8mjZt6pDaXUXTW6WA6uVbtkpVKbZ/5dYDAJJ09OhR/elPf9LRo0eNLgXXoEmTJpKkvXv3Fl4XUV62hnlJys7OLswHl7cNOBOXDPRSQThfsWKFLly4oAsXLuinn37S2LFjlZGRoYSEBHl4eKh58+ZF2gwYMEDff/994S0tJemnn37SwYMHNXDgQEf/FUzN209qd7d0tbvgVa0ttbtH8uUXSgAOcOHCBa1bt04XLlwwuhRUkIeHh44cOaLExEQlJCTY1HbGjBk2h/nLLm/z0KFDheP3AWfhkmPoy7Jr1y5ZrVY1bty42AVRY8eO1ZtvvqnBgwfrpZdeUlZWliZMmKAOHTpo8ODBBlVsXt5VpDZDpfMnpKQdUtqRgvH1kuThJbW9SwqOkK64LhkAgDLl5+cXXhtnq59//ll5eXmyWCw2hXlJuu222yq0TcAR3C7QX37q2x+H20hScHCw1q5dqyeeeEJ33323vLy8NGDAAL3++utctX4NgmtKwbcW/HnDO9Kl9IIz+FXLfwtoAACu2ccffyxJ8vT0tCnMA86OQP8HDRs21IoVKxxZEmCIxFP7NW3hKJ3LSFWAX1WNv+sDRUfEFltu9eb39fmGNwpfp55LVIsGN+nFUUslSf+LX6E5K55WnjVP9SNaaPxdHyjAL1jJaYf19/lDlZefp/z8XNWp2VRP3TFHQf7Vyqzr4qV0vTT/Du1P/Fl5+bla9vezpS47/6sXtfzHWaoeXHBLweiIWP3fvQUf2P/5YZZW/O8deVg8lZ+fq343jtWQLnG27ianVp73MD8/X++unKAte1crLz9XsdGdFXf72/L28lFKWoJG/aOhoiNaFC4/aeQS1Q5rqM1712juyomF089mnFRoUITefnKrw/5+QGW4HOoBV0KgB9zUG0seVr8bxqp3+9H67pfFmrZwtGY9sbnYcn3a368+7e8vfP3Q9Oa65frhkgrC92uLxui1R/+rujWa6M3PH9fH3/xdYwdMU/Xg2nr9se/l611wP/VZ/3lC879+UY8NfqPYNq7k6emtu7pPVFCVUD39Trer/j16XD9cfxr8z2LTe7a5T4M7PyZJysg6r4dea64W9bsqJvL6q67TLMrzHq7ePE8HkrbqrSe3ysvTW68vHqvPv39Dd3YreB5HFd8gzf7L9mLrbn9db7W/rnfh6+ffG6BWDc3/JOeaNWtq4sSJqlmzptGlAIDduN04krVr18pqtap/f26rAvd1Jv2k9iVuUc8290mSura4Q6fOHlNS6oEy2+0++pPOpp9Ux9hBkqRNe75UTO3rVbdGwV0fBnX6k9ZtXyBJ8vHyLQzzefl5ysrOkEVXv2DCx8tX18f0UGCVkIr+9SRJAVWqFv45KztDeXk517Q+Z1Pe9/Dg8R26vlFPeXv5yGKxqH2Tvvrm53/btK3Uc8e1bf+36mnn+9YbISwsTKNHj1ZYWJjRpQCA3bhdoAcgnTp7TKHBteTpWfAjncViUY1qdXXybNm38lu9aZ5uaTtCXp4F9/A+efaoalarVzi/ZrVopZ1PVl5eriQpJzdbD89oraEvhikpdb9G3fqS3f8u3/2ySA/PaKXx7/TQ9gPr/jBvsR6cHqsRk6M19OanXersfHnfw0ZRbbUxfrkyss4rNy9H3+34TCfOJBTOz8rO0GNvtNej/2yjf3/9N+Xl5xXb1ldbPlCHJv1ULbBGpf6dHOHcuXNavXq1zp07Z3QpAGA3BHoA5XIxO0Prt3+qvh3GlLuNt5ePZv9luz776wnVDW+iFf+bbdeaBtz4iD56NkGz/7JDo3r/Xa98dJdOnDlSOP+mlkM19+ldem/CXn279SMdO7nXrts3g97tRqv9dX007u2bNe7tmxUZ3lieHgVfAkKDa2nBC0ma9cRmTRn7jX49vEGL//takfZWq1VrNr+nPja8784sMTFRTz31VJHbEwOA2RHoATcUHlKnyJl0q9Wqk2eOqkZI3VLbfLdjkerVjFW9ms0Kp9UIqVskQJ84k1DkrPFl3l4+urX9/fpmq21DPa4mNDii8NeC5vU7q2Hk9dp3bEux5SJCo9Wk7g36327XueC9vO+hxWLRyFtf1DtPbdMbj/+oejWbqd5vF876ePkWnnUP9g9V7/YP6NfDG4q0/+XQf5Wdm6V2V4ynBwA4FwI94IaqBdZQTGQbfbP1I0nShp1LFBYSpciwmFLbrN48r9hZ2vbX9dGBpK06enKPJGn5j2+pW6u7JUknzhxRVnampII7rXz3yyI1qNWysO0DU5so9VzSNf09Tp39/Sxr4qn9Onh8u+rXKrhjy5ETvz/1+Wz6KW0/sLbI9s2uvO9hdk6WLmSekSSdy0jVp2v/oTu7TZBUMA4/97drC7JzL+n7X5eq4R+GJX25aZ5ubTdanh6elf1XAgBUkNvd5QZAgSfvmK1pC0drwdrJ8vcL1vg73y+c99qiB9Wx2SB1+u3i12Mn9+rg8e165YFVRdbh7xekp4bN1Ysf3Ka8/FxFRzTXhLs+lCQdSv5F73/5nCTJas1XTGQbPTZ4pqSCIHk+87SC/ENLrG3say11LuOUMi+d1z0vR6lVw+565p6Cs/sPz2itV8asUljV2np/9XPan/izPDy85OnhqT8PmaWo8IIHzny+4Q3tPLxBXp4+kqy6veuTatu4l/12oBMo7T288v3LyDqnce90k4fFQ/nWfA3p8oQ6Nit48vWvh7/X/DV/lYeHp/Lyc9U6pofuveW5wvVnXDynH3Yu1ZxxOw35+wEAysditVqtRhfhqjIyMhQYGChJSk9PV0BAgMEVGe/yg6V8A6WujxhdjXvIy5bWzTS6iqL+u2OREk/t1fCezxtaR/c4ydNJn+DujO/b1Ri1P/fs2VPuZQ8ePKjx48dr2rRpatiwYbnbNWnSpCKl4Rpc+RlqFnzWwyicoQfgcDe3GmZ0CXBTDRs21NKlS40uAwDsijH0AAAAgIkR6AEAbiM+Pl4tW7ZUfHz81RcGAJMg0AMA3IbValVOTo64fAyAKyHQAwAAACbGRbGAi/PwLrj7CIrz8Da6gtKZ8X1z5v0J8/H391d6errd1jdt9qc6n5Gp4AB/jX/47mKv7cHf398u6wFsRaAHXJzF4ry3ZkTpeN/g7iwWi11vAenj6yefnDz5+PopICCg2GvAzAj0AAC30bBhQy1fvlx16tQxuhQAsBvG0MNpLV++XK1bty7yX2RkpPz8/MqcV5phw4Zp48aNNtWwf/9+derUSY0bN1b79u21a9euYstkZWXptttuU+PGjdWqVSv16tVLBw4ckCSdPn26SI2NGzeWl5eX0tLSymwnSV27dtXhw4dtqhdA2fz8/NSoUaMy+woAMBsCPZzWoEGDtH379sL/1q9fL39/f82aNavMeSXZtGmT0tLS1LFjR5tqePjhhzV27Fjt27dPEydO1OjRo0tcbuzYsdq7d6927NihwYMH68EHH5QkVa9evUidY8eOVd++fRUaGlpmO0kaN26cJk2aZFO9AMqWlJSk559/XklJSUaXAgB2Q6CHKeTn52v48OG65ZZbNGbMmHLPu2z27Nm69957bdrmyZMntWXLFt13332SpDvuuEPHjh0rchZdKjjj169fP1ksFknSjTfeqISEhBLXOW/evMIar9auf//++vLLL3Xu3Dmb6gZQurNnz2rJkiU6e/as0aUAgN0Q6GEKkyZNUlpammbOnGnTvMvWr1+vG264waZtHjt2TLVq1ZKXV8GlJhaLRXXr1tXRo0fLbPfGG29o8ODBxab/+OOPOnPmjAYMGFCudt7e3mrRooU2bNhgU90AAMC9cFEsnN5//vMfzZs3T1u2bJGPj0+5510pMTFRNWvWLDKtY8eO2r9/f4nLb9u2rUK1Tp48WQcOHNC3335bbN68efM0cuTIwi8I5WkXERGhxMTECtUCAADcA4EeTm3v3r0aM2aMli1bptq1a5d73h/5+/srKyuryLSrXSDr6+ur5ORk5ebmysvLS1arVUePHlXdunVLXH769OlaunSpvvnmm2L3Ik5PT9dnn32mzZs329QuKytLVapUKbNOAADg3hhyA6d14cIFDRkyRC+99JK6dOlS7nkladmypfbu3WvT9mvUqKE2bdroo48+kiQtWbJEUVFRiomJKbbsjBkztGDBAn399dcKCQkpNn/hwoVq1aqVmjRpYlO73bt3q1WrVjbVDaB0YWFheuihhxQWFmZ0KQBgN5yhh9OaNWuW9u7dq3fffVfvvvtukXl33nlnqfNWrVpV7Iz90KFDtWbNGvXs2dOmGmbPnq3Ro0dr8uTJCg4O1vvvv18478EHH9SgQYPUpk0bjRs3Tg0aNFD37t0lFZzd/+mnnwqXnTdvnh566KEi605MTCyzXUJCgvLy8gj0gB1ZLBb5+PgUXowOAK7AYrVarUYX4aoyMjIUGBgoqWDIBU+ikza8I11Kl3wDpa6POG676enp6tSpkzZu3Gia9+GZZ55RTExMkVtZAihuz5495V52165dGjp0qBYvXqzY2Nhyt/vjr2swn8mzPtb59AwFBwbo2ceGF3sNmBlDbuAWAgMD9frrr5vqQU21a9fWAw88YHQZAADAyTHkBm7jlltuMboEm8TFxRldAgAAMAHO0AMAAAAmRqAHALiNqlWrauDAgapatarRpQCA3TDkBgDgNqKiojR16lSjywAAu+IMPQDAbVy6dElHjhzRpUuXjC4FAOyGQA8AcBsHDhxQnz59dODAAaNLAQC7YcgN4EKsVik/x+gqzM3DW3KGZw6Z8b10ln3nKqxWqzIzM40uwyb+/v48tAswAIEecCH5OdK6mUZXYW7d4yRPH6OrMOd76Sz7zlVkZmYWPpzQLHiIImAMhtwAAAAAJkagBwAAAEyMITcAALcRGxur3bt3G10GANgVZ+gBAAAAEyPQAwDcxuHDh3X33Xfr8OHDRpcCAHZDoAcAuI3MzEzt2LHDdLeDBICyEOgBAAAAE+OiWACVasfB9Xr6ne5Fpvn5BCgqvLF6thmh2zr/WZ6edEX2wL4GAPdEzw7AIbq3vkcdmvSTVVaduZCir3+er3e++IuOntytp4bOMbo8l8K+BgD3QqAH4BCNItuoZ9v7Cl8P7PQnjZnaRF9umqv7+7yikMBwA6tzLezr0kVGRmrKlCmKjIw0uhQAsBvG0AMwRBWfADWpd6OsVquOnz5odDkujX39u5CQEA0aNEghISFGl2JKderUMboEACXgDD0AwyT/Fi6D/UMNrsT1sa8LpKWl6csvv1Tfvn0VGur6+8LLy0tt2rRR27Zt1bZtW9WrV0++vr7KycnRqVOntHXrVv3888/atGmTLly4UOa63njjDd1333265ZZbtH37dsf8BQCUC4EegENk5WTqXEaqrNaCcd1fbHxHB5K2qUmdDooKb2x0eS6FfV265ORkvfzyy2rdurVLB/rIyEg99NBDeuihh1S7du1Sl7vrrrskFdzO8+OPP9bbb7+tbdu2FVvujTfeUFxcnCTpq6++UkxMjM6fP185xQOwmVsE+tTUVE2dOlVLly5VYmKiwsPDdfvtt2vy5MmKi4vTe++9pzfffFOPP/640aW6rNxL0vkUKS+34LXVamw9cLz5X03S/K8mFZnWpfnt+vOQWQZV5LrY1+7L19dXL730ksaNGycvr/J/xPv7+xd+Afjiiy/08MMPKzk5WVLRMJ+fn6+nn36aMA84GZcP9Nu3b1ffvn2VkpKigIAANWvWTMePH9fMmTN18OBBpaWlSZJat25tbKEuKuO0dHSrlBIv5eX8Pj07Q9q1WqrbRgqqYVx9cJz+N4zVTS2HKTc/R4eTd2rh+ilKPZcoH28/o0tzOeXZ1zsPbdCz8/oWa5ubl638/DytmZrnyJJhB+3atdOHH36oZs2aFU7Lzc3VF198oW+//VY///yz4uPjdfHiRXl7e6t+/fpq27atOnXqpLvvvltVq1aVJA0cOFBdunRRXFyc2rdvXyTM33///Zo/f74hfz8ApXPpQJ+amqqBAwcqJSVF48aN06RJkxQUFCRJmjp1qiZOnCgvLy9ZLBa1bNnS4Gpdz8n90q8rpPxSckHyrwVBv+mtUu3mjq0NjhcZ1khtGveUJHVo0lfN63fRU2910RtLHtFz931qcHWupTz7ukWDrvrilfQi7VLPHddjM9tpcCd+rTSbfv36afHixapSpYokKTs7W6+99ppmzZqlpKSkYsvn5ORo165d2rVrl+bPn69x48Zp+PDhevHFF1WrVi1Vq1ZN//73vwuXJ8wDzs2l73ITFxenxMREPf7445o+fXphmJekCRMmqFWrVsrNzVV0dLSCg4MNrNT1nD4i7fyi9DB/mTVfil8tndznmLrgPGKjO6lnmxFav2OhdiX8aHQ5Lq08+zo795Jemn+7mkd30b23POvgCh0nICBAnTt3VkBAgNGl2M2tt96qzz//vDDMb9myRW3atNGzzz5bYpgvSUZGhubMmaPY2Fh99NFHReZZrVbCPODkXDbQ7969WwsXLlRYWJheffXVEpdp27atJKlVq1aF0y5/AejQoYN8fX1lsVgcUq8rsVqlvd8UhPXy2vPt1cM/XM/wni/Iw8NTH675q9GluLyr7es3ljyi7Jwsjb/rA8cW5mDR0dGaO3euoqOjjS7FLqKjo7V48WL5+PhIkj799FN16tRJu3btqtD6zpw5UzgU9TKLxaLMzMxrrhVA5XHZQL9gwQLl5+dr+PDhCgwMLHGZy2czrgz0Bw4c0JIlSxQREaH27ds7pFZXk3ZEyjxjW5vsDOnU/sqpB84rMixG3VvdrW0HvtXOQxuMLsellbWvP/9+pn7avUIvjV4mPx9/gyp0jLy8PKWnpysvz/xnECwWi+bNm1f46/OSJUt03333KScn5yotS/fHC2Ave+uttxQe7r4PJAOcncsG+rVr10qSunfvXuoyiYmJkooG+ptuuknJyclavny5evbsWblFuqjkip0Y0vEKtoO53XPLc/KweOjDrzhLX9lK2tfbD6zT3JUT9cKIRYoIjTauOAfZs2eP2rdvrz179hhdyjV78MEH1aNHD0nSkSNHdP/991/TF5U/hvn7779fS5YskSSFh4dr5syZ1140gErhshfFHjlyRJJUr169Eufn5ubqhx9+kFQ00Ht4VM53nEaNGlXaup3N/w1drOuibrS53fbNezTwCb5EXQsfryqa87hz/dTRqmE3fT2t9PuU1qvZ1KnuqNKocSNl5140uowKvZe27uuUtAS9/NGdemjANLVq2K2ipRYyat+NHj263MtevhXjqlWrSrzfemk++OADG6u6dleeIf8jDw8PPfPMM4Wvx4wZc9UHQ5WlpDA/f/58rV69WjfffLPCwsJ0991367nnntOhQ4dKXY8zf9YNuf9JBQQGKzklWVFRUcVeA0aLiIjQli1bKtTWZQN9RkaGJOnixZI/XBYuXKjU1FQFBQWpfv36lV7P5Q8Rd3Dp0qUKtcvJyS73BVwomZ+3aw+XcITk48eVlWP8eOHKfi+zsjM16YPb1LHZIN3W2T53tTFq39kyvjsrK6vw/7a0c7a+qXfv3mrQoIEkac2aNfr2228rvK7SwrwknTx5UtOmTdOUKVMkSY888ogmTJhQ6rqc+bMu/7dfL/Lz8pSUlFTsNWBmLhvoIyIidObMGW3dulUdO3YsMi85OVnjx4+XJLVs2dIhF77WqlXLac9a2Ft69ukKtbuQdUqRkZF2rsa9+HhVMboE06tVu7bTnKGvTBt2LtGh5B1KSt2n9TsWFps/7+l41ahW16Z1GrXv/P3L/+XHz8+v8P+2tDOib8rPzy81II8dO7bwz7NmVfyBYWWF+cvee+89/e1vf5Ovr68eeOABPfvss8rNzS1xfc78Wefh6Vn4/8jIyGKvAaNFRERUuK3LBvqePXtq9+7dmjJlinr16qXGjQsed75582aNGDFCqampkhz3QKn9+/e71G3SypJ2RNq6yPZ298XdonGzEu1fkBvJy5bWMcz1muzft1+ePkZXUfnvZa+2I9Sr7Qi7rtOofWfLePhdu3bpvffeU79+/RQbG1vudi+//HJFSrsmGRkZpd7UoWvXrpKkU6dOaeXKlRVaf3nCvFTwTJcVK1bojjvuUPXq1dW0aVPt3LmzxHU682fd5Fkf63x6hmpF1FJiYmKx14CZOefXaDuYMGGCqlevrmPHjik2NlYtWrRQo0aN1KFDBzVo0KDwQqIrx8/DPqrVlfxDbWvjEyCFx1ROPQBwWePGjfXDDz8UnuQxo3r16ql69eqSCk5SlTXWvjTlDfOX/e9//yv88+VbPgNwHi4b6KOiorRhwwb1799ffn5+SkhIUGhoqGbPnq2VK1dq376CJxkR6O3PYpGa9JQs5f3XZZGa9pI8PCu1LACQt7e3QkND5e3tbXQpFXb99dcX/vnnn3+2ub2tYV5SkQv1rtw+AOfgskNuJKlp06ZasWJFsenp6elKSEiQh4eHmjdvbkBlri+0rtRy8G9Piy15qKWkgtAf25ez8wAc4+jRo/rHP/6hZ555RnXr2naNgLMIDf39J9CjR4/a1LYiYV6Sjh07VuL2ATgHlw70pdm1a5esVqsaN25c4kVRixcvliTFx8cXeR0dHa127do5rlCTC28o3ThKOra14B7zedm/z/Pwkmo1k+pcLwXyrBIADnLhwgWtW7dOjz32mNGlVNjKlSvVrVs3+fn5FX5OlUdUVJSGDx8uybYwL0nHjx9X//79dfHiRR0/frxCdQOoPG4Z6C9fzFPacJthw4aV+HrUqFGG3IvYzPyrSdfdIjXsKl04IeVmS57eUlANydvP6OoAwHxOnDihEydO2NwuMTFRPXr00Ndff63x48eXO8xLBbeAXrVqlc3bBOAYBPoSWK2lP5gFFePlI1WrY3QV7mvinFt15kKKLBYP+fsF6bHBMxUTWXwcbOKp/Zq2cJTOZaQqwK+qxt/1gaIjYm1aR0WVte2SrN78vl777AG9OOpzdW5+myQpO/eSZn8xTlv2rZGPl58a1mqlZ+79SJI0a1mcNsYv14kzR/T2k9sUE9nabrU7A1veH6vVqgmzb9H+pK1a9vezkqTNe9do7sqJhcuczTip0KAIvf3kVkeUDwf55ZdfFBMTc00PoQLgfAj0gBt4YcRnCqwSIkn6fufnmrZwtGb/ZUex5d5Y8rD63TBWvduP1ne/LNa0haM164nNNq2josra9h+lpCXoy5/eVdO6RZ9IPG/VM7JYLPpgwj5ZLBalnU8pnNe15VDd2W2Cnnqri91qdia2vD9Lvntdtao31P6k38N6++t6q/11vQtfP//eALVq2L1Sa4YxCPOA63HZu9yUZe3atbJarerfv7/RpQAOcTnoSVJG1jlJxR+mdib9pPYlblHPNvdJkrq2uEOnzh5TUuqBcq+joq627Svl5+drxqIH9dhtb8rby7dw+sXsDK3eNE/393ml8GFxocG/P6SjZYObFB7iuo93L+/7k5CySz/uWqa7uz9T6rpSzx3Xtv3fqqed71PvDGrWrKmJEyeqZs2aRpcCAHbjlmfoAXc0ZcFI7Ti4TpL0ypjiY2FPnT2m0OBa8vQs6BYsFotqVKurk2ePKjIsplzrqKjybPuyJd/NUGx0ZzWOKnov7OTUgwryD9WCtZO1df838vWuohG9XlSbRrfYrU5nd7X3JzcvR68vfkh/GTZPHmXcJ/arLR+oQ5N+qhZYo9JqNUpYWJhGjx5tdBkAYFcEesBNTLyn4AK4r7Z8qHdXTdTkCgTyiqwj7s2OSkrdX+K8t5/aphoh5b+44nDKr9qwc4lm/Om7YvPy8nN14swR1avRTA/2+4cOJG3TxDm9NPfpXaoW5B5nY6/2/vz765fUpfntqlezqVLSEkpch9Vq1ZrN7+lPg13zkcPnzp3Txo0b1bFjR1WtWtXocgDALgj0gJu5td0ovbHkEZ3POK3ggOqF08ND6ijtfLLy8nLl6eklq9Wqk2eOqkZI8Xt1l7aOksz888ar1lTebf96aINOnEnQ6CmNJElpF1L0z8VjlXY+WTe1GiYPi4d6tCm4LV9M5PWKCK2vw8k73SbQX1ba+/PLof/q5Jmj+s+P/1Jefq4yL53XfZOj9a+4zQr57f6xvxz6r7Jzs9TuivH0riQxMVFPPfWUFi9eTKAH4DII9ICLS794VlnZmQqrWluS9MOvyxQcUF1B/kUfDlMtsIZiItvom60fqXf70dqwc4nCQqIUGRZz1XVMWTBSnZsPUZcWQypUY1nbvtLATo9qYKdHC1+Pe7ubbu/6ZOFdblrH3KIte9fohqb9lJx2WClph1W3ZtMK1WQm5X2PX//ThsI/p6Ql6JHXW+ujZxOKLPPlpnm6td1oefLoZgAwDQI94OIyss7p7/8epks5F+Vh8VDVgHD9/f4VhReOvrboQXVsNkidYgfpyTtma9rC0VqwdrL8/YI1/s73y7WOfYlbdFuXuGuqs7Rt/7HGstfxjl5bNEZzV02Uh8VDT94xW2FVIyVJ/1z8sH7as1JpF1L0f3N7y983SB8+U/yiWzMq6/0p776TpIyL5/TDzqWaM26nA6oGANiLxcpN1ytNRkaGAgMDJUnp6ekKCAgwuCK4urxsaZ2Dhz6fTT+lVz+5V1PGfu3YDVeS7nGSp4/RVRjzXl4ro/bdnj17yr3srl27NHToUC1evFixsaU/5+CPmjRpUpHSrsmVnyFm4cyfdZNnfazz6RkKDgzQs48NL/YaMDO3vG0lAPsJCQx3mTAP1+fn56emTZvKz49HVQNwHQy5AQC4jYYNG2rp0qVGlwEAdsUZegAAAMDECPQAALcRHx+vli1bKj4+3uhSAMBuCPQAALdhtVqVk5Mj7gcBwJUwhh5wIR7eBXcaQcV5eBtdQQEzvpfOsu9chb+/v9LT0+22vmmzP9X5jEwFB/hr/MN3F3ttD/7+/nZZDwDbEOgBF2KxOMctF3HteC9hsVjsegtIH18/+eTkycfXTwEBAcVeAzAvhtwAAAAAJsYZegCA22jYsKGWL1+uOnXqGF0KANgNgR4A4Db8/PzUqFEjo8sAALtiyA0AwG0kJSXp+eefV1JSktGlAIDdEOgBAG7j7NmzWrJkic6ePWt0KQBgNwR6AAAAwMQI9AAAAICJEegBAAAAE+MuNwAAU2vSpEm5l61ataomTZqkTp06qVatWpVYFQA4DoEeAOA2atWqpRdffNHoMgDArhhyAwAAAJgYgR4AAAAwMQI9AAAAYGIEegAAAMDECPQAAACAiRHoAQAAABMj0AMAAAAmRqAHAAAATIxADwAAAJgYgR4AAAAwMQI9AAAAYGIEeicwbdo0dezYUdWqVVNISIi6dOmi1atXG10WAACl+u677zR48GDVq1dPFotFL7/8stElOdyqVavUunVr+fr6Kjo6WjNmzDC6JLgpAr0TWLt2rR544AGtW7dOmzZtUqdOnTRgwAD98MMPRpcGAECJ0tPT1axZM02dOlURERFGl+NwW7Zs0eDBg9W3b19t375dL774op599lm98847RpcGN+RldAGQvvzyyyKvp06dqtWrV2vp0qXq3LmzQVUBAFC6fv36qV+/fpKkiRMnGlyN482YMUPt27fXq6++Kklq2rSpdu3apX/84x965JFHDK4O7oYz9E4oPz9f58+fV0BAgNGlAACAEvzwww/q06dPkWl9+vTRkSNHlJiYaFBVcFecoXdCkydP1tmzZzV27FijSwEAmEzyydO6kHGx2PTcvLzC/+87nFjs9WWenh5qWLe2Y4qtBBkXs5SUklpsenn//pIUWTNMAf5+ZW4nOTm52FCjy6+Tk5MVFRVV4b8DYCsCvZN56623NHnyZC1fvpzOAABgs+ycXL2/6EtZrdYS52dezNJ7n60q9XXfbh1MHeh9fby1+r8/6fiJ0yXOv9rfPyI8VI+PHFLpdQL2xJAbJzJ9+nSNHz9ey5cvV8+ePY0uBwBgQvUia6rbja0r1DY6KkJd27e0b0EO5uXpqbv6d5eXp6fNbT09PXT3wB7y8rp621q1aiklJaXItBMnThTOAxyJQO8k/vrXv+qll17SqlWrCPMAgGtyS+c2iqwZZlMbHx9v3dm/mzw8zB8NaoaHqvfN7W1u17tre0WEh5Zr2c6dO2vNmjVFpq1evVr16tXjF3Y4nPmPWhfw5JNPatq0afr3v/+t6667TikpKUpJSdG5c+eMLg0AYEJenp66c4BtZ6kH3dJJoSHB5V4+PT1d27dv1/bt25Wdna2UlBRt375dBw4cqEjJdte5XQs1sGHoUP06tdSlfYtyL//UU09p06ZNeu6557Rnzx59+OGHevPNN/XMM89UpFzgmlispQ2ywzXLyMhQYGCgpIKOr7S71lgslhKnjxo1Sh988EFllQcAcHHfb9mpFd9uvOpyzRrV04ght5b6eVSS9evXq3v37sWm33zzzVq/fr0tZVaas+fT9fq8RbqUnVPmcr4+3nrigaEKrRpk0/pXrlypZ599Vnv27FFERISeeOIJ/eUvf7mWkoEKIdBXovIGegAAKkO+1ar3Fq7SgSNJpS4T6F9FTz4wVIEBVRxYmeNs27VfC1esK3OZof1uVrsW1zmoIsD+GHJjMoePJSsnJ9foMgAAJuBhsWhov5vl5+tT6jK3973JZcO8JLVuFqMW19UvdX5s42i1bd7YgRUB9kegN5EL6Zma99kqTZ3zqc6dTze6HACACYQEB2pwr5KfOt6+ZRM1i6nn4Iocy2Kx6LbeXRUU6F9sXmBAFQ3p3dWmoUaAMyLQXyEvL0///ve/deuttyo8PFy+vr6qW7eu+vTpo7lz5yrvt4dQGOW/P+1Qbm6eqgUHKTiI4TsAgPJp3SxGLZs0KDIttGqQBvS40aCKHCugip+G9rmp2PQ7+tykQH/X/XUC7oNA/5vz58+rV69eGjlypL7++mv5+PioVatWys/P11dffaWHHnpIFy5cMKy+C+mZ+t/2eElSzy5tOZsAACg3i8Wi227tUniW2mKx6M4B3eVbxlAcV3Ndw7q68fpmha87tGqipi7+6wTcB4H+N2PGjNG6desUFRWltWvXKikpSZs2bVJiYqKSk5P1yiuvyNvb27D6Lp+dr1u7phpFRxpWBwDAnPyr+GlY35slSTff0ErRUREGV+R4/brdoLBqVRUaEqT+PToaXQ5gN9zlRtLPP/+sdu3aycvLS9u2bVPz5s3tst4r73Iz6bW58vH1q9B6rFarLmRkSirokCvy9DsAACQpOztH3t5ebvtLb+5vw2f5LIWzCQqsoj+Pur1Cbb3sXIspLVu2TJLUv39/u4X5PzqfkSmfnGsfg595McsO1QAA3FlWdrbRJQCwIwK9pPj4grHpHTtW3s9vwQH+FTpDz9l5AAAA1xcUWPELtAn0KrggVpKqVq1aadsY//DdFXqw1IpvN+r7LTtVt3ZNPXrfILf9iRQAAAAlI9BLCg4OliSdO3fOruv19/dXenq63v74P/rn+5/bHMavPDufeuacXn3rE7vWBwAAAOfAGPprFBsbq6VLl2rjxo12Xa/FYlFAQICyc34P5hXF2HkAAACUhEAvaciQIfr73/+uVatWKT4+Xs2aNbt6IxtUZEwUY+cBAADcx7WMoee2lb+566679Nlnn6lu3bqaP3++br755sJ5J06c0Hvvvae4uLgKjYOvCMbOAwAAoDwI9L85f/68Bg8erPXr10uSIiMjVbt2bSUnJyspKUlWq1VnzpxRSEhIpddyIT1TU2YvUG5unh64s58a14+q9G0CAADAnHhS7G+Cg4P1zTffaN68eerWrZsyMzO1Y8cOeXh4qHfv3po3b56CgoIcUgtPhQUAAEB5cYbeCa3/33at/9923Tu4J2fnAQAAUCYCvZPKupQtXx9vxs4DAACgTAR6AAAAwMQYQw8AAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJkagBwAAAEyMQA8AAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJkagBwAAAEyMQA8AAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJkagBwAAAEyMQA8AAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJkagBwAAAEyMQA8AAACYGIEeAAAAMDECPQAAAGBiBHoAAADAxAj0AAAAgIkR6AEAAAATI9ADAAAAJvb/P2sZHSZWbmYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with no swap mirroring\n", "output_nsm = provider.qscout_compile(circ, mirror_swaps=False, base_entangling_gate=\"zz\")\n", "\n", "# Visualize the circuit\n", "circ_nsm = output_nsm.circuit\n", "circ_nsm.draw(\"mpl\", fold=10)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "fa10c4af", "metadata": {}, "source": [ "### Compile with swap mirroring" ] }, { "cell_type": "code", "execution_count": 15, "id": "6b6be06f", "metadata": {}, "outputs": [ { "data": { "image/png": "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18/2mPHDvqWkpFglWSVZU1JSSr0djtADqPRycnI0fPhw3XzzzRo7dmyxl102b9483X13/tuRX02XLl0UGhparLZ+fn62n8+fPy+LxWJ73LdvX33xxRc6f/58iWsAkMuIceD06dPatm2bRowYIUkaPHiwTpw4oUOHDpW4/qLGiCstXLgwz+/A+IHiINADqPSmTp2qxMREzZ2b/97oRS27bOPGjbrhhhvKs0RJ0qhRo1S7dm09/fTTev/9923POzs7q0WLFtq0aVO51wDYKyPGgRMnTig4OFhOTrnXELFYLKpTp46OHz9e6DqjRo1SixYtNHbsWJ05cybfsoLGiMt++uknJSUlqV+/frbnGD9QHFzlBkCl9r///U8LFy7Utm3b5OLiUuxlV4qJiVHNmjXzPNe+fXsdPHiwwPY7duxQ7dq1S1zr4sWLJUnvvfeepkyZorVr19qWBQUFKSYmpsTbBGDcOFBS33//verUqaPMzEw99dRTGj16dJ5xoKgxQso9Oj9q1CjbB4jLGD9wNQR6AJXW/v37NXbsWK1atUq1atUq9rK/8/DwUHp6ep7nSnpiXEmMHj1a999/v86ePavq1atLktLT0+Xu7l5u+wTslZHjgKurq+Li4pSVlSUnJydZrVYdP35cderUKbD95eednZ31yCOPqHHjxgW2K2iMSElJ0SeffKKtW7fma8/4gathyg2ASik5OVmDBg3Sc889p06dOhV7WUEiIiK0f//+8ipV586d08mTJ22PV61aperVq8vf39/23N69exUZGVluNQD2yOhxoEaNGmrVqpU++OADSdKKFSsUGhqqhg0b5mubmpqqc+fO2R4vWbJE119/vaTijRFLly5VZGSkmjRpkm/bjB+4Go7QA6iUXn/9de3fv19vv/223n777TzL7rzzzkKXrV27Nt+RujvuuENffvmlevToUaIaJkyYoM8//1zx8fG69dZb5e3tbTsZbty4cRowYIAGDBig8+fPa8iQIbp48aIcHBwUGBioNWvW2E56O3r0qLKzs3lDBkqoMowD8+bN05gxYzRt2jT5+Pjo3XfftS27chw4deqUBg8erOzsbFmtVtWvX982xeZqY4SUO93mvvvuy7d/xg8Uh8VqtVqNLgJA1bDpLelSiuTqJXW+v+L2m5KSog4dOmjz5s3y9PSsuB3/6fHHH1fDhg01bty4Ct83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", "text/plain": [ "
" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with swap mirroring\n", "output_wsm = provider.qscout_compile(circ, mirror_swaps=True, base_entangling_gate=\"zz\")\n", "\n", "# Visualize the circuit\n", "circ_wsm = output_wsm.circuit\n", "circ_wsm.draw(\"mpl\", fold=10)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "342979fe", "metadata": {}, "source": [ "With the use of swap mirroring, we note that the angle of the entangling gate has now been reduced and the classical bits associated with each measurement have now been swapped in the compiled circuit. This is also displayed with the measurement indices in the above compiled circuit compared to the previous compiled circuit that does not have swap mirroring enabled." ] }, { "attachments": {}, "cell_type": "markdown", "id": "028a48bd", "metadata": {}, "source": [ "### Return final logical to physical qubit mapping" ] }, { "cell_type": "code", "execution_count": 16, "id": "ba0a3966", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Non swap-mirrored mapping: {0: 0, 1: 1}\n", "Swap-mirrored mapping: {0: 1, 1: 0}\n" ] } ], "source": [ "# Return final qubit map for non swap-mirrored circuit\n", "map_nsm = output_nsm.final_logical_to_physical\n", "print(\"Non swap-mirrored mapping:\", map_nsm)\n", "\n", "# Return final qubit map for swap-mirrored circuit\n", "map_wsm = output_wsm.final_logical_to_physical\n", "print(\"Swap-mirrored mapping:\", map_wsm)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "742089ac", "metadata": {}, "source": [ "## Using the Superstaq Simulator\n", "\n", "Lastly, we will go over how to submit a circuit to a backend and simulate it. This feature is available to free trial users, and can be done by passing the `\"dry-run\"` method parameter when calling `run()` to instruct Superstaq to ideally sample the circuit. " ] }, { "cell_type": "code", "execution_count": 17, "id": "4f1b9455", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'00': 47, '11': 53}\n" ] } ], "source": [ "# Example Bell state circuit\n", "qc = qiskit.QuantumCircuit(2, 2)\n", "qc.h(0)\n", "qc.cx(0, 1)\n", "qc.measure(0, 0)\n", "qc.measure(1, 1)\n", "\n", "# Get qscout backend from the provider\n", "backend = provider.get_backend(\"qscout_peregrine_qpu\")\n", "\n", "job = backend.run(\n", " qc, shots=100, method=\"dry-run\"\n", ") # Specify \"dry-run\" as the method to run Superstaq simulation\n", "\n", "# Get the counts from the measurement\n", "print(job.result().get_counts())" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" } }, "nbformat": 4, "nbformat_minor": 5 }