{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "525a94b6",
   "metadata": {},
   "source": [
    "# rf205_compplot\n",
    "Addition and convolution: options for plotting components of composite pdfs.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:**  Clemens Lange, Wouter Verkerke (C++ version)  \n",
    "<i><small>This notebook tutorial was automatically generated with <a href= \"https://github.com/root-project/root/blob/master/documentation/doxygen/converttonotebook.py\">ROOTBOOK-izer</a> from the macro found in the ROOT repository  on Tuesday, May 19, 2026 at 08:29 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "457954f2",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:53.479558Z",
     "iopub.status.busy": "2026-05-19T20:29:53.479440Z",
     "iopub.status.idle": "2026-05-19T20:29:54.448356Z",
     "shell.execute_reply": "2026-05-19T20:29:54.447730Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc894ac9",
   "metadata": {},
   "source": [
    "Set up composite pdf\n",
    "--------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "82d02319",
   "metadata": {},
   "source": [
    "Declare observable x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e29adf30",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:54.450208Z",
     "iopub.status.busy": "2026-05-19T20:29:54.450080Z",
     "iopub.status.idle": "2026-05-19T20:29:54.607265Z",
     "shell.execute_reply": "2026-05-19T20:29:54.606648Z"
    }
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", 0, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "16cac48d",
   "metadata": {},
   "source": [
    "Create two Gaussian PDFs g1(x,mean1,sigma) anf g2(x,mean2,sigma) and\n",
    "their parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3f26671e",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:54.609530Z",
     "iopub.status.busy": "2026-05-19T20:29:54.609401Z",
     "iopub.status.idle": "2026-05-19T20:29:54.737221Z",
     "shell.execute_reply": "2026-05-19T20:29:54.736568Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:InputArguments -- The parameter 'sigma1' with range [-inf, inf] of the RooGaussian 'sig1' exceeds the safe range of (0, inf). Advise to limit its range.\n",
      "[#0] WARNING:InputArguments -- The parameter 'sigma2' with range [-inf, inf] of the RooGaussian 'sig2' exceeds the safe range of (0, inf). Advise to limit its range.\n"
     ]
    }
   ],
   "source": [
    "mean = ROOT.RooRealVar(\"mean\", \"mean of gaussians\", 5)\n",
    "sigma1 = ROOT.RooRealVar(\"sigma1\", \"width of gaussians\", 0.5)\n",
    "sigma2 = ROOT.RooRealVar(\"sigma2\", \"width of gaussians\", 1)\n",
    "sig1 = ROOT.RooGaussian(\"sig1\", \"Signal component 1\", x, mean, sigma1)\n",
    "sig2 = ROOT.RooGaussian(\"sig2\", \"Signal component 2\", x, mean, sigma2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ccdfd8ee",
   "metadata": {},
   "source": [
    "Sum the signal components into a composite signal pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c70ed9d7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:54.738745Z",
     "iopub.status.busy": "2026-05-19T20:29:54.738594Z",
     "iopub.status.idle": "2026-05-19T20:29:54.920168Z",
     "shell.execute_reply": "2026-05-19T20:29:54.919487Z"
    }
   },
   "outputs": [],
   "source": [
    "sig1frac = ROOT.RooRealVar(\"sig1frac\", \"fraction of component 1 in signal\", 0.8, 0.0, 1.0)\n",
    "sig = ROOT.RooAddPdf(\"sig\", \"Signal\", [sig1, sig2], [sig1frac])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b3baff0",
   "metadata": {},
   "source": [
    "Build Chebychev polynomial pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "223e68a5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:54.921792Z",
     "iopub.status.busy": "2026-05-19T20:29:54.921662Z",
     "iopub.status.idle": "2026-05-19T20:29:55.032422Z",
     "shell.execute_reply": "2026-05-19T20:29:55.031840Z"
    }
   },
   "outputs": [],
   "source": [
    "a0 = ROOT.RooRealVar(\"a0\", \"a0\", 0.5, 0.0, 1.0)\n",
    "a1 = ROOT.RooRealVar(\"a1\", \"a1\", -0.2, 0.0, 1.0)\n",
    "bkg1 = ROOT.RooChebychev(\"bkg1\", \"Background 1\", x, [a0, a1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "61c35b7b",
   "metadata": {},
   "source": [
    "Build expontential pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "545f9890",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:55.034361Z",
     "iopub.status.busy": "2026-05-19T20:29:55.034230Z",
     "iopub.status.idle": "2026-05-19T20:29:55.145962Z",
     "shell.execute_reply": "2026-05-19T20:29:55.145417Z"
    }
   },
   "outputs": [],
   "source": [
    "alpha = ROOT.RooRealVar(\"alpha\", \"alpha\", -1)\n",
    "bkg2 = ROOT.RooExponential(\"bkg2\", \"Background 2\", x, alpha)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77216731",
   "metadata": {},
   "source": [
    "Sum the background components into a composite background pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c2aa7e14",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:55.148253Z",
     "iopub.status.busy": "2026-05-19T20:29:55.148116Z",
     "iopub.status.idle": "2026-05-19T20:29:55.251915Z",
     "shell.execute_reply": "2026-05-19T20:29:55.251336Z"
    }
   },
   "outputs": [],
   "source": [
    "bkg1frac = ROOT.RooRealVar(\"bkg1frac\", \"fraction of component 1 in background\", 0.8, 0.0, 1.0)\n",
    "bkg = ROOT.RooAddPdf(\"bkg\", \"Total background\", [bkg1, bkg2], [bkg1frac])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "094c8cba",
   "metadata": {},
   "source": [
    "Sum the composite signal and background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "2f7ff0f7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:55.254215Z",
     "iopub.status.busy": "2026-05-19T20:29:55.254084Z",
     "iopub.status.idle": "2026-05-19T20:29:55.357828Z",
     "shell.execute_reply": "2026-05-19T20:29:55.357200Z"
    }
   },
   "outputs": [],
   "source": [
    "bkgfrac = ROOT.RooRealVar(\"bkgfrac\", \"fraction of background\", 0.5, 0.0, 1.0)\n",
    "model = ROOT.RooAddPdf(\"model\", \"g1+g2+a\", [bkg, sig], [bkgfrac])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb077345",
   "metadata": {},
   "source": [
    "Set up basic plot with data and full pdf\n",
    "------------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "46dbace2",
   "metadata": {},
   "source": [
    "Generate a data sample of 1000 events in x from model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8d1815f6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:55.359585Z",
     "iopub.status.busy": "2026-05-19T20:29:55.359461Z",
     "iopub.status.idle": "2026-05-19T20:29:55.506050Z",
     "shell.execute_reply": "2026-05-19T20:29:55.505449Z"
    }
   },
   "outputs": [],
   "source": [
    "data = model.generate({x}, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "450b43e0",
   "metadata": {},
   "source": [
    "Plot data and complete PDF overlaid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "da3e686a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:55.508105Z",
     "iopub.status.busy": "2026-05-19T20:29:55.507978Z",
     "iopub.status.idle": "2026-05-19T20:29:55.690523Z",
     "shell.execute_reply": "2026-05-19T20:29:55.689981Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb4468a0>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xframe = x.frame(Title=\"Component plotting of pdf=(sig1+sig2)+(bkg1+bkg2)\")\n",
    "data.plotOn(xframe)\n",
    "model.plotOn(xframe)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "46e6e333",
   "metadata": {},
   "source": [
    "Clone xframe for use below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "b7ddd37a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:55.692719Z",
     "iopub.status.busy": "2026-05-19T20:29:55.692570Z",
     "iopub.status.idle": "2026-05-19T20:29:55.913811Z",
     "shell.execute_reply": "2026-05-19T20:29:55.913255Z"
    }
   },
   "outputs": [],
   "source": [
    "xframe2 = xframe.Clone(\"xframe2\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b2e87422",
   "metadata": {},
   "source": [
    "Make component by object reference\n",
    "--------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9a74d89",
   "metadata": {},
   "source": [
    "Plot single background component specified by object reference"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e5bf15b3",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:55.915984Z",
     "iopub.status.busy": "2026-05-19T20:29:55.915860Z",
     "iopub.status.idle": "2026-05-19T20:29:56.039702Z",
     "shell.execute_reply": "2026-05-19T20:29:56.039141Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb4468a0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (bkg1,bkg2)\n"
     ]
    }
   ],
   "source": [
    "ras_bkg = {bkg}\n",
    "model.plotOn(xframe, Components=ras_bkg, LineColor=\"r\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "55d23647",
   "metadata": {},
   "source": [
    "Plot single background component specified by object reference"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7fe85d09",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.041354Z",
     "iopub.status.busy": "2026-05-19T20:29:56.041228Z",
     "iopub.status.idle": "2026-05-19T20:29:56.159313Z",
     "shell.execute_reply": "2026-05-19T20:29:56.158430Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (bkg)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb4468a0>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ras_bkg2 = {bkg2}\n",
    "model.plotOn(xframe, Components=ras_bkg2, LineStyle=\"--\", LineColor=\"r\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc1a6e85",
   "metadata": {},
   "source": [
    "Plot multiple background components specified by object reference\n",
    "Note that specified components may occur at any level in object tree\n",
    "(e.g bkg is component of 'model' and 'sig2' is component 'sig')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "34ebebda",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.160970Z",
     "iopub.status.busy": "2026-05-19T20:29:56.160836Z",
     "iopub.status.idle": "2026-05-19T20:29:56.277866Z",
     "shell.execute_reply": "2026-05-19T20:29:56.277293Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg,sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (bkg1,bkg2,sig)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb4468a0>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ras_bkg_sig2 = {bkg, sig2}\n",
    "model.plotOn(xframe, Components=ras_bkg_sig2, LineStyle=\":\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "621fab88",
   "metadata": {},
   "source": [
    "Make component by name/regexp\n",
    "------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9721342c",
   "metadata": {},
   "source": [
    "Plot single background component specified by name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "68db972f",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.279905Z",
     "iopub.status.busy": "2026-05-19T20:29:56.279781Z",
     "iopub.status.idle": "2026-05-19T20:29:56.389940Z",
     "shell.execute_reply": "2026-05-19T20:29:56.389334Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (bkg1,bkg2)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb586cd0>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.plotOn(xframe2, Components=\"bkg\", LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6204ce66",
   "metadata": {},
   "source": [
    "Plot multiple background components specified by name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "eccd9eda",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.391799Z",
     "iopub.status.busy": "2026-05-19T20:29:56.391668Z",
     "iopub.status.idle": "2026-05-19T20:29:56.497237Z",
     "shell.execute_reply": "2026-05-19T20:29:56.496610Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg1,sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (bkg,sig)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb586cd0>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.plotOn(xframe2, Components=\"bkg1,sig2\", LineStyle=\":\", LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "332fb5d6",
   "metadata": {},
   "source": [
    "Plot multiple background components specified by regular expression on\n",
    "name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "8f3e4aa3",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.498944Z",
     "iopub.status.busy": "2026-05-19T20:29:56.498816Z",
     "iopub.status.idle": "2026-05-19T20:29:56.604320Z",
     "shell.execute_reply": "2026-05-19T20:29:56.603741Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (sig,sig1,sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: ()\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb586cd0>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.plotOn(xframe2, Components=\"sig*\", LineStyle=\"--\", LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36c6eca0",
   "metadata": {},
   "source": [
    "Plot multiple background components specified by multiple regular\n",
    "expressions on name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "65536dde",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.606284Z",
     "iopub.status.busy": "2026-05-19T20:29:56.606158Z",
     "iopub.status.idle": "2026-05-19T20:29:56.717457Z",
     "shell.execute_reply": "2026-05-19T20:29:56.716889Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg1,sig,sig1,sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (bkg)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55eefb586cd0>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.plotOn(xframe2, Invisible=True, Components=\"bkg1,sig*\", LineStyle=\"--\", LineColor=\"y\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d0f544e",
   "metadata": {},
   "source": [
    "Draw the frame on the canvas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "44bd1edc",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.719341Z",
     "iopub.status.busy": "2026-05-19T20:29:56.719215Z",
     "iopub.status.idle": "2026-05-19T20:29:56.948425Z",
     "shell.execute_reply": "2026-05-19T20:29:56.948004Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf205_compplot.png has been created\n"
     ]
    }
   ],
   "source": [
    "c = ROOT.TCanvas(\"rf205_compplot\", \"rf205_compplot\", 800, 400)\n",
    "c.Divide(2)\n",
    "c.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "xframe.GetYaxis().SetTitleOffset(1.4)\n",
    "xframe.Draw()\n",
    "c.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "xframe2.GetYaxis().SetTitleOffset(1.4)\n",
    "xframe2.Draw()\n",
    "\n",
    "c.SaveAs(\"rf205_compplot.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c6b8e35",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "58528100",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:56.958338Z",
     "iopub.status.busy": "2026-05-19T20:29:56.958206Z",
     "iopub.status.idle": "2026-05-19T20:29:57.129799Z",
     "shell.execute_reply": "2026-05-19T20:29:57.129232Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222597120\" style=\"width: 800px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222597120() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(63458,'WkwIZj8A4vcAeAHtvXmTHMex4PlVYG3vjzerZG64x11p+wcIkkPN8ICR1CMwXBmsAFQDtWh0YbobJKhn+u5rP4/MqqwDByVST9S0TGiWR8Z9+BUe7v959ujm51ery+XL1dni7Lt7y8sfl9ffrx5/e7l8df18c3PWnZ3/6XL9v1+v/vjJ2cJ1Z+cfr2+u26+vH/9/qyc3pJ+R7etXN+vN5Qj8z/Xl07OF787OtzUt/vNUW29rwPugPoTu7PyL9eXq3uZic3W2kBH89ubni9UO/H799OZ5Az9bX1yMmeks4JTZOSu+Or/5cnn1bH15tnA9Kd+snz0/SPp4c3Ozebmf7bvNq/2EB+drOqHd2fnD3c+77ScVP7i+Wd7QSq3k2YPuNojCn10tX64O+03awcC3+fYHtM06JU9VUnw+M1T58ebq6erq2/VfxtmbJX65ebpq6/pA2n8fjv99oG1uH47/fXCzufv4+v76zerixVjiZnMKPFvkmhj6XgGfbcp2RfYTzhYftYQ/7ZViNf+0KzMHp2b+Y69Aq+Q/dkX2E7bNTEO52TwYR2NDOQZZSedEY9IiwWXno5TubFbBwxdtosYKAOnnBJ4tPqIGTaVIVhe8E5cjG+Vi89NXn9wbZ30OPPjTK/vAoj6c/f5+m/r59tfdx9d7Fd19fL1X193H17tidx9f70r+6c1LOw5M8c+7n29eLt+0Af3p5+3P756vbpZnC28De74ef929frV6cvPN8ma9aaP46vXLx6ur9vu79ZMXb3Y/f24/v9g8GxO/2Dzbpf2lfb2/fHp/ub7k+HRn5/euNtfXz5frscIteH8zoqL5vmZ3NXi3pb/cPF2fr1dPzxbny4vrVXd2/t+v1k/f7IM/78C7j6/vbTZXs/yfPl3fLB9z4G+uXlPBZ+s3q6d7456qvn+1frm+Wf+4uj7CeV+sr0GpE7odweXV1dnihz93Z5tXN/z4a3d2/umb1ZPrs8Xl64uL7uz8q4afr87VxUdPNi9fvbpouPm79Q19OvHlq9cv7y8vVjc3E/JkIr9avbk5Tv3kj9/e/+Luw7PF2b9NP7uz8082rx9frD5+fX4+LeQ3q5vl+pJZHOfgwfX6L6s/XU/fH+6D9vWb1fLibKE0bp8bLMDfry+fbn76bvOKozWHH87hEYXtMny+AmGPG+On6fDfe342nvB7y5ubo4m/e3PTaBsje/Dx6uan1epyRN57kE3oZ1ebl99tXp0tpGc3PXi6vAE3GvBwAiBudxsgf+3OXny5+XH19avl/3693SMvvlkxI/uJ55+vnz3/giGMdMr26/LmyfNpWl98+3zz06c/ri5vvr1Z3ry+3m7LF3df32zYGNucX64uX3+8vGow2+buEzbetsT5N6vl068vL36eSpx/v755vnl9M9+j0779fHk97ropZZ7rhwPy/asxCdD4tzIJ368eGx5YXz57G6fAzrh3sby+Hg8J+RprMk94xSY9cwuNsRv/DbJwnevcoJbKL79w9tUNwb5pjEPclnFDGnOSnse8/C6LUjsV6UoYKr9L6FTSIDQYuvHfILKQqp0U7STrILrIqbP/D+IX4rQb/w0SFqK5G/8NEhcSfTf+GyQtJJdu/DdIXqgL3fhvkLJQrd34b5C60KDd+G9QZ5mlUt4NKvugLqT6Tqp0ksqgfiEldVIA/aChtZtiJ9ENGhdSPF86iXFQejV2MrhB80Ji7CRoJ94NWhbiow2wpEHrQnLs1CV6Mni3EK+dNZ384GUhPtODTpIbvC7Eu05i6ajY+9ZOKa0sU6WtnegHHxciubPyIQ4+LcQFemBd9nkhrnZWwOvgy0I02Lyqq4Ovu1mPcQhuIdl1NtwqQ5AFS2x99nEIulCVzuYHkKkqrZPeDSEsbIpZNQ1DiAubU7ohdQhpQTU1dDUNIbdmmKiQh1AW1qJYN4dQFxJyZ4MQHaKzTtgWG6IsJKTO9uwQ1eZhBPyilul3WOQw/Y6LKNPvtNA8/c4LP/0sbOyxmrpwXWADxyG5hetSab85OlXab10wKDtWQ+IEia/tC4eI3WHFI0DJDUi0Ia2RZCfJj61Y63ZIZUg0b4DmIdO+AS4MmQ4ASHFDpgcGxDTk6Qyzvpke2BdXhkwPAEocsnUgxi7JkKeT7POQp+bFD7lCp8jkhuIWrYP8lkW0YfBbF8Wmgd8c4YZd3FDYlTYNAO34jlVxTNIEcHS3jXBwbRoow7G12e7cUEfE5QuANIwkAaAhL6mgr+rti6QEEBoQFKBhMTaVG2pDY9VqzpYrC+nFfofM72q/1XduEOcWItKFaEhBnNgODdoFHcRpQwqV5ZVBnF+U3IntGj4HG4fE1HnAuFAtnc9dDIO4tJDouswBrYM4UEayvJKoiuOpnfedKiBT0iVmVQYx3Bo5QzqIgMak89IpkNqsgoxSHQTcym/+aRwE5MpqMvHUK7H1uO1nAbs66WrtxLlBJC9AcIxHyiBgV/Zdqp2A0etCSqVhGUTdQgI4K3SSwO/gsTZvBVAXVszlrtRB1C/UWztuEFBriZCFjmMu4FbxnaEyJXOyo65SWp/BrjMSoE4WVTiSVQZlSUCJ7d+gDtzku/HfoKyJMB77N6iLDd+C1gdlUYo3FOAGdXnB2czSZWouC/W1dUvyoK4uKAWyjoOyJOwCCg8qssjStcKDihpeHksPyqLQHoUHlUDJVnhQiZRshQdlPcDokik9qOTW26nRsh2ctVqtv1OzkDvQUev0oLYk9La1y5K0sUrxg9qS2GDVh0E1bEdrLbMo42jptILFd7OqeRpvK1y2A6awn84wuM2FwU/HmM0E3eIkj1S8we0w23eng+c8T98NnvEEBrdTTf4og+dgj9kNLFsOwkBwW2M3ogzB7RgjNwTXeAKKA+m2JNCOTwEKkBMoyhAcs9GwF+MLdpgN99t4AocZGGoc/RDYOk634wviGsx3p0OAWaKLUFCDlbbG4QXxBrlg/RfrB1kZjRiRo7BBE6p3QxBD9W1cAqqnCOkQGgq4ISh0pg1JxyVpPOMQYIfGIUHSAod2HJINmf0xDql9B5OoDbl9h/sYh8QUaJmG1LLXaUyW2ztAGrDMXgxsqzYEPxE9K+qN6rX1HoI3wrstaJR3W47psEUbIlty3CPUEqtsl7rBu6WnR7HuFr99D208bYxDZEu2dqzLsSa63FZtiDVPkNVlY28DHGK1oQM5HZJjCYwqDsk1Lp0yyTFmW7QhOUZsizYk17h1OAZ2YTth1sUE+monbISLDXlctiFBU/jelm1IhsJsB7Ym2YVtB9qQEqTFTlirTrxVxxDpIJTFNuGYuc3HNCyZiw9p5NrBepRsp2McHFSF3dimQ20jsGpDYktO46McGGscH7skgbLaCRvhkfCPy58MZ7Xx2VQbl24nbIQbeWsbJGmdhkfbcOltdAa18znm9DshKvk2KXAkCe6cM2a/23S037Y1+JknRNi6PeQREY7TPmR23djFKENm040gheN2vPZxt/wML4/sjXVhyCODQ0uWuY2ufSwTDjTsUMCB47xGGYprmMAWZSgjEjQkUdx2zfkydqfhnjLuxrG/Q5l2o2Gawl4c9561sZ1seMyGkVsT4yYkMxkhpSNaIadhwrHKHSLky4iO2nALdHRCyE6HAh1t294yly1kbWxxEUyubUCaBxipQ5udoUBCJ7xOtSBJdltDxgUcOYIUHjnhsUvjbhxnYSjjbpxaamcViC4hM44NwWyPuKt1is04jo1jURAZxyniWBTfJqntm6HsECQ99kYv6FPLO2LtkVAXP8kHLfMOZ1tDJqJMRcNcRinBMDb1WL3BMHY7fEMJJimN+yRMCJtxhl136F3YdadVs+0OAwvb7rTMU3eoKE69MWCcoUaih4K4OK6LDSRut5HVG+nRiJ1LkxrHCR1KbD0aJ3wokR7ZV1Qh0Xq0A+nRiB+LyZAjPSipEbS2bENpcmRbtKGYIDkiztIEydbboaRG3ttWGEqaEVnaN3FyV2ubn2nUJlFuizaRcvqWR1XI1KE8Ur+pS7lt7GlSctvYDWOX3Db2NNDcmKHtLGQkm0nCLrlt7GkiEDTbR3ZUaRu7kb9S2rJNWUtbtUY0SrE1a1SiFOOBxu4gcdreaouLzDniTJuj0o7+1EY7+ts27OiPTdSR9lixEVNPMzAi6rH9kTkwMlVGJD0CDSlOqzni6O16jjh6qmZLgGxDjzjaKqojih6BHYZm3uoMRbODK0h6pMVOhzqi6dZKHfH0OJI64elxqeuIp9tk1pFnmKDGMYwrXUdEPX4ctWu2p+gU4gYT3/4NFWTJPm7/hqq2go2GVg2L6BGrxVPUtnlANM5D1bSIziTwgNCfF6EiqEug0rIIpUPwDGmoWhchddF1EspQvVsE0GcnUYbqZRFCZ50JQ/W6CL4z9JSH6v0iaIf4ndAkhEVwHRq3pEP1ceFrFyu6sKH6tPClS01FWH1e+NwhImdaKAsfOwTgTAsVtUlKneQ01OAW3ncpd5LrUIMsvCLNIxvXoAtvIp+UONTgF1o7ZOGShxrCQospCSpqjYjaKke0hUNFk5a6nDuptJDREOTaSaUFhNWusJNlqKEuVLvS+LpqerTORL88VJBj7UpEJzVUUGPpSupU/FAj2oOulE4lDjWGhaSuor0qQ40mEKIIUxkqeDF2VUeII2/qCaVO+DtULg0ysbmmBiX4qq7mEWLLdBU5H1UNOgN0ESp1qMkDCYoLA60ztmsNjO2rH7+mBjbFRU25gQyyDDUVhiWOUQKikO1QTRiYUX12qEpV8lCzGIg6zEBUPh0qoQbaDInoCKIl7tBeoAKvYMbSiekaANEuNH2hgbmBtMtXhPlO0HIw22BGQLoRh1qcgWgKDJQG0g2+ors2pUcDfQPpRhgqCjm+MnxAFLKdKMMHTA2kG4C5gXTDDxUESWa6AVgN9HTDD7W2XqF7Eh0qQlRB+ziCba7QN4kMFSyJdppuALYV9HQDsK2gpxvo4GxDiacbgLajTLtqoG0pCezvOlRE+tAJWiyHLg2lHTAbvgCjjAJhTDBa9U4C6gj77heCBjp16jL50WCikZ7g2OAywahlOgkVjTj5s8GR7hgMVQHtdOoi302dKpH+AItb1JEUGygG2jUGX3WBMr3pSsSJN5C+2NdgIF3xfI0LVDr0xMAEmOgIGkcUeOgTJ7AYSDfsa12gzWNWUDGqs7KmHQQUGgKdVeZUlU5y/VGZMmN1Td0qlSmD19URZkxwu+ggwU5025R4I0xHjd1t1xyVvqAyoufgL+tM2/6GI2keAaxybdNJoX0PxzLCtI8QxtWS3UoAo2FsOsVCfzy62BGmPx7hsOlF0U86bzcCpidtmtwM4hXUs4XZ8AW0zMUNGFwc6J32gekPCJ72G74XB4qnfWDaB8nTPhSA9oOHWDQ9JvMRAqSkwfQnRAiNgM8z7YcEGZLCnNN+yBCpBlv7BRLWbquYj1AhcA1mPqKD/Nn1W6I/USCOphZNtB8VQtpg2h95YrvjYj1iWETKQ9BpH744d1IQHGg/pgU00mBrLy8S/eG7tVcW7B2DGX+sC6640Puaqjw5NIgNpr0kC3TWfA+0l+zCsMG0l/yCueGGLtBeCguuFg2mvRQXtGUw7aVkim6DGV/KC9Paw0dYe2XB5R+wqeNTXVRu/4BpLztulRrM/EIWHB0G39EghAEBxxJo0XhmpsgwIglhARlpCbQJeeDQlGrXhOIgEGhZSVBrFcRCsyRYs1wL0CwJ1iz3dpxRZ5dt4iAUytUiCawspIKtawk0C7GwG0dysLcgF2xGbj7R8zsIBruRHEKzkAy23y4BnTy3luRg/iEbbDBLoGMQjjD2g9sCB+lgi1kOOgbxgDuzBCZo0sFZAj01Jdw4H0JPTR8yzodheiMizCk3FnTdyMg4p4bLISS288hBTyEloCVLoKcQk4ZnuGokAYZgXFsS7BLIMEHpBDRr10AcbUvg1mW6CbIEu6Hh3mGqg6sUaIpdRJQOfMptkO1mYO5W7OqBoZUOhGoXQkxEyVyUil0I2QV67kCw3AhJZb/lDgTLnZBUhpU7ECzXQsI9DrDdEqHGoUMT3DRVBtNhu4ZgSLB4wEgu9CfZjQ1XQ9xakh8EzN0QV8IG0z8uh2wzFy4ZhdshLlkYDwiXCyK1vV26Qv/QpYDxuc6lfbR741YH4doVERi+ug6Eyy2R3TkD0z7aPTB+lS4zX+hT7CBIB8LllkjB8MDWPjeM7GntQLiCfg8MD8z8oFSxY+I7EK5AYLjaqr5rF2m6UDs1oQPhihEYNnzoQLgCgbFDBNMPHBfq2f+IBMBpwR2mwbQPgbEjlToQrkBgAu0lLmZFfLNdYE1BuBLcQu2A5Q6EK1zJg8GBaZ87eTtvpQMBC3KEHbfSgYAFSSKYdNBF2keWsNNXOxCwIE0Yg2IipgjyhOkZXBeZDyQKg7UDIQsyhcG+C7SPVGFw7EDIEpFRYS1SB0KWiJbUGLAOhCwR7S2cSO0C/Ync2cI4il2tSqR/wL4DQQtX9gaHDgQtkf7xPXUgaIn0DzhzmS0S6R9w7Tz9SfQPacV14GtJ9A9YO9C1JPoHHDpPfxL9A44dyFoS/QPOnWc+Ups/9hCXlJLon+sU1pj+JPoHLB2YWxL9A/adWn/oHzDX5ly10j/g1IG2BZWMwUhDwPSP73DiwKxv7dgzIHHJbX2xdRH6k+P4nTMInEYYjgQYeZHycF3A7D9gLncxJPr49Tm2ZP9mJnpnn11sljdez7qzC7Mei7E7+/Fs8UPV0FVF9EtdVXBL6arWrnrXVa54vXbV+6760FUfu+pTVz04qnTV164G19UgXQ3a1eC7GkJXA8IjNiLgttLVULsaXVejdDVqV6Pvagxd5Q48pq5GcGLpaqxdTa6rSbqatKvJdzVhaBK7mlJXE7i0dDXVrmbX1SxdzdrV7LuaQ1czomjqas5dzeDh2tXiulqkq0W7WnxXS+hqQUhNXQWXGv6uXa2uq9xBV+1q9V3FwKXGrlZE2NzVCt63e3X0MGBiZ5oQxw2EaUYddzGgYAfb4EC+DoMdB9p14FoHgnXw1Q7U6sCnzqRiMKkDfTq4ZAfidPAJDhTp4IQdyNGBER3sgQMXOhCgA+s5mFkHvnMgOQfv6kBvzgyXQGQOjsCBwhx4y8F+OjCWY8s5uE3HZnNgJcc2c814hxLsKodixoFzXKSEaeVgKh003qF+cfCUDgrv4CYdpN2hbXHQdIemxSGROCi6Q7niIOUOVtJBwx0CgoN4O1QoDh7SQboxN4bB4g8lMCBwcJAOltpBqh0MpINGO1hHB+/pYBgdXKAz0m5MA2TZwSw5CLKDb3SQYlcpAdvooMQOhtGx5mgtYBr4g5EDa96smlhzFBHQe/4g8bPmxiiiZRDjEJs9BGtu/KGw5s0wgDU3eylUA1BV/pghBW2w5sj9kEf+0AZrbgxhs8hizY0dFNYcYR3axR9KsOYI4dAjFBm0wZob84dADWHhDyVYczPYMj4P8RiywB9KsOamDBTW3OzjzOJFWHMzcEOMBVHzhxKsuVnYmRTaLMNYc2PfzELO+DYTCo1hayYkrLmxayadGZ9mcpfk8ue//vWv3W9lzYk9+1utOdsThXc8KRktNjHcvrok42Tf3FLubCs4eBsBOHv/cPj0YfcoRHiKcfwq5Mvl1YvV1eyVSUuYVTkmbF9OfLd6c3P38hnG1xigAraPrnfMgX2/WD+7PEMr0uBZ/Xz+bIN9ezIL4+Wb9bG1+N2bm7ukY7j9dP3j+nq9ubw+W0SznubLrMIvlo9X08sX2jO4tRBoweCvz8+vV/YkBTw7Jm677a3f6ycvvlhdPuNBjesdRs62BlNRGwtG54fFbi4mQ/Ntlql5DJMf/m5GaMv5N4zwf/1uRrhdoF+4hh8vr2YPij5eXk2bwkyweaLFMb24/207E59cLX9qDzEa/PWrm92jjwaM7z4aMD79+PrVzSfN3r49KsMInkNkx+jrVzcjSmAQX7+6+cweYY1ZP1uP7wKOLOjJYIlP1ze8JJvg7zabCzOgJ6E9Wrm3ubzZvL66Hl8t3L0Zu3OAMe/e3HCIDUm9AxfoL0QGnBWG354bMUggXkT0Bn16+fTTq6vN+IaLk22gZaepz15fPhnRAh8BZ1gMcFxCvvIIZszM+AHHzJx7wNl6f7F6trp8On9pQ+9a6gzDUtEucWp7enxHFRNa2GZk/sat2J2df85biNX1AQ4fU799tXzCWwBre/sibjaG7XO4MY0+bvPt92abdUqesh40bfkOxz1L3D0z+nx9zYac94ck6hu7kxzDnvJNDbfZmbJOqWPGg96Q68v15frl65f/a3W12T314MPeI0VD8e3Vy/2r1fnq6r9/scvd0mcT1xLmw6Sn89TdOFvqJ6vzz88W0bFo25TvzxZ5P+XBWXvus83ycEy4v5xvvvvLvb1F49ukXcuWdPw48/7y6d7Qmbv7y6fHjz3vL5+eeO95f/mUzf5gNz1jysO9FGjj+FaJBtdPXowvle4vX7VXlQ9GpLFNeHjG9eTZ+bdPrlary8+WTwz70D3Q2mz6ATkHs21L0nw9plKz80MWwN3pIWXaQG1btTxXL8GiZ6kP9pCGRMMZlSeMQIZiEE4b+P303olvnwOIjePmav3qk9WT9cvlxfX2UZGh5JHb0S3LMBudZTgYnqXNx8c+ssTZALfwllQ1JgUGpD0C3pbaokAr04ZTt7kZz1Q/w2nIZ/PHy8vV1TcMj5wcNav2+mzxAw+J7tzhj+gdQei/E+6UCU53wh1JQOrIEMYsO8iS5unq9rNvvxU3fivuTnB3wp1gOa3t3+jPn0Euq+XT1RXU2t5M2bRtoc/WN59NmyaOm8ZeYrGK2y+2l2zWniwvrDCr/z8260sSJ0bg3vLVHPxu/XLLTuZSqpRgGOOPL5fPVlS0RfD3lpdPL1bfP19fv1hdfbO8fDY+W27pH2/ejGlt9Vqq9WT2cPM/1puL9eWUOj5cbFnvra+eXBxi+/ETL07p9IwAPoDl/vTNqwdztmdKfDhPfHgq55S4l5OMXy7ffLJ+Zs/q2YRfX90839xbvlxdLUfscyyu3V8+/dXe37Fib5XY7i+fvk1eQ5JihmYYC3BCPuPX2fwdUMZjKewAXTMZJ5D17eP8j7R37X+5hqzF3tjL2eKj3KtLUkqoUWPJPF3lzb70vv0vekVddmZP+VPoS4ypqiQ1PdTZwcv+FHvN6pxkjQWVr2WYHvrH3Hvha3U+B2NzJzcAZwstfYqx1lrESwlshgMnAF76or7WXKqPRx4BtPQo2GquOe19PFt8FHsXSy3R0y10PeYYYHrG/+JskftK07WouoKO8B2eA3zR3hUm08dYyHrgRSCVXu27Kx6NjmWY5sCn0MdEaUlJKzM0ORzAv8Dx16mXzbvAR9pr5n8laomaOYmjswB8EZxa5umzyQM+lJqyizWXkDOt7+rH+UCKfazYP4RYJIVZ9Xw9sVvG2punAqk5peJqyDG1Rdi5F+idY4ZrrTmnUDQyMTtvAyc/T74MXB/quH1VfRT6Pfk2wFfG4bfmtMD1oS2DcyHgewEC1pwm9PXoy54vhJO92fOO8LYcb2966z/hVOvv9qcA6zE6VIi5T6FG51NKJSTO8S/0r8Duv/WvsPVf84v9KxwI9R9e/qRHhkcy11nue2to3z7UK8Ov95Z/5Hj+IU/52Y1vZSVMYn4bMwH++HWZiZNebDh7uLE5cfDmkgjjaPAoeR5zYH8n+/XZn766x1w0P0nvnLfP5ZO3zVo0vxrjVjzHwc+jN49iXK3OH4eQyhIxovH1Z4uze5uXrzaXq8ubOzgPwaPCnc35nVdPz/+ff79eP5M/XK+f6X/7w78/fvFM/vD4xTP9bxSerUlTXfydLN4vV7R/9WR1gajJpdHZ+VsU5aOW/G2eqsYZemMa2tmUvAH4XavW6f/jNbcCXK+dnT/Yuu950Fz2WGLLgYeZ88/WV9ejkvSL5fQLn146CcgvV5+sr19dLGfucJDYtjKfbQtuG3buab7cPP1i+XiE36Ht/7Bl+vlwmcwXyvWd//f/vvPvd1wvd2xn/vMsWw/baNLzVkkxXqW8405ktnCnlo20f/iqveUG48NW7S+Hq/avdLb+aZbo4NJldiPj7Px/enlztUZ9RZe/u3798qfxWPNzOuL8nhxy2e/xw5fLN6iVT5LHUeV8tvhovIn5anP1ctJngmTGa5PmyOr829acoZw9x4DcQOAn8Pi288N5r+aTaqfznHxUWWsfry9RWX56dfU13rToGvDXP66uzi82P3Gtg6B0dQWC27fsSZj8mGWPERv8P5l9zyG38Ovfn7/isLyfF/hms0HLT+ZTpM7MVrbOwp4/eslt3CfLmyUFDEGdLc6oYPPsavkS6r/N8Qie4NEjI4gzms8u+jsoPpP/booP33d4tf7Vq836EieTI0l71zK5ZoBll+6ul9i5Xvnj+RP4w/vQPvEn86fwBxMVrkeEEkIJoYRQQighlBBKCCWEEkoJpYRSQimhlFBKKCWUEkoJpYSnhKeEp4SnhKeEp4SnhKeEp4SnRKBEoESgRKBEoESgRKBEoASqmy5QAm1IFykRKREpESkRKREpESkRKREpkSiRKJEokSiRKJEokSiRKJEokSiRKZEpkSmRKZEpkSmRKZEpkSmB9qUrlCiUKJQolCiUKJRAOdQVShRKFEpUSlRKVEpUSlRKVEpUSlRKVErUvkbzkvfwA/YGS6xd6WoXO0ydutqFLne1S13oMMLpfBc7bUAXLRmLpk467bz9TZYYO+lCFzsMmjrszxT3OMJ7GVzUjP/PPMsL2nntQupYcdfxygirT9yOZMpj2GN90C53cWxeO+1qp9ZOsTZTl62vuUsdJaO1T/5iHRX6G7tkc/FrYNYtcth6HjzC+1siMRGCPfT+KTqi9y9KM5LBNsaZqPvpg+frZ8//hnLonN5f7AffF62+OFdLzNFOZZCoKdYavEMnqn1OxZfkYgpJs3KCgw8Jiz+N2Mxx9Guq2HoFl3I5zuF7TOVqCL76hLnWUR3SVwneVylJVXlT2MciIbsQk0uJ52fHzfpcqxefq9aI2d5hHUcJvtcUY67BuRrNtq1PXrMLqSTs82jlYCzSa5UidEOKmea9txXXF80akqqrORkKPKhUP6DrB80eTeFRKyd6ejC49xc56thRwtHwj2bsRCtHa3s0Hwd77Gi0EIaSknrvgjfKcLBNQ5+Ty2ibse30RjVycdivBueLQC18CCGj/ZYgCvaX6J2kIrn4JB+QAIWIEjQlKTUaeSgeu0JPq+iCoReheJex5czFQ2g0i49espTkvJGQHIurNeSKYWjsS8kph5xdLDHQjxBSVA0xBp9chZSl5CRUFR9jYiz7gz0a29GxPnGcjqb84GwcHZYTdRxggqMteKLI0dIfJBzVcbTjTuQ4OCxHuOKoyPt37Qm8d4Bvjs7GiYQDJHY0lhMTdFDkRKUHM3aijoMcJ5o9yHE0HycSDjbMiRwHE3RiB72/2f06msvfhx9GBH+A8SvZl+C5n0tq3GEtUl3MvmLq7PsaogSJUkuqLsNTYhAfxOeUsjGevmjImqJKSKUe5wi9plRDzQkLfH8ih+8laebMqybOuO9zdlqcebcOPGo5bjYWn4LEEGsJsZyq46DS0AdJUV1ULwnUoj2kqsTitRRPqwdD0T75XGJN6kOMNh0HdR71XHutFYYgVsywmcGDSv17e37U7NEMHrVyVORwbO8vcaJf75/ig7EdtXI0Pyem42iHHW2XVHPM3mc2h+3BuL9LY19SVB9SjanUZBSgeJdiTMFJUshKDClKVa3RrOpTX5xyH5lCFJ5VvT8h9+JzjNEVkZKKR0JxQUtVZ9sKkSV6leKkpCgxCsRLYo4+OOcyXFmGAAZsVQIvCyBvNWtwNcXinTeRKfriQmK0Cbf3qefKVYNLMJVaTo32YHBH5/roPJ041weH4+i0HNVxdCaPNuFRkROrf7SD3nfkjlo5SviQjh01e3RsD7blhxyPo/NygMVOnIajHEcJR5UedP1DJvkIax3V8f6Eo/k4KnLQ0xM76KjIUcJ+HZCzRz+jOLaLgrPFSRX+o22sgUctvkAM+yezO3t0ubl6+R/LC3yqOwNfri+XFx+vL0e7Igvh8ejy2/Wzl0tT1z1abTWgphF9dLX8aasU/Ui6s0ebq/UzKvne/MibHnL+vG+uBBy1S/9HaBB+9SvOiw/Wad57ffXjW2+Go2K1tFNrmsryEdrnH978ea7YvH+1IR7NenOJZvOZ/OGZ/sE0nzN9ZjKV5Ns1mpjIvNNM7f0aTVSmb9doeu6K3qXRJANPSj9yvdnv8l/cJPK3VzSbKDbRa6LWRKuJJIpOsxP0mcgAaDNRZqLLRJWJJhNFJgwyWqZeoPiw3CgwYaxBxogCKC/hQTokS4GzBfejtASRorIEb/EPAO6taS5NDkWDhhYv9IhuTYe51WNudZkwq2gyt9rMrUZz0moWU3DCPPKm1rScoedZKgpMHlSMOk9eM8YeQRKWd9KBbvWgW10oXAQC6lYbutWIbrWio2Z0qxvd6ke3OlJEXjSkKEjhD2A84AI6mANBMYpeFLUo7ARKUXSiMA7wG11BG4oyFF0oqlA0oShC0YOiBkUL2lU0oChA0X+i/kT7ifIT3SeqTzSfpn3k8SWL3XbJe3Wh7KrtdcYPYvaDIZVScnvYeJQgvSuluOpLkGJPW3tNOUspyZfIk+Iem7WiGsVrDoynJJ9cUpdJZqCaYg5SeMMYEnODraKEGrM6jO1yryGF5EuoWXJgsomsg14hBdNVpD7QrC8uqsOaO2Gtp7VmX73n3WyE8pZQomr10bGkoYZai/dFsT1kP4SaSsVqrPCyPvbOqzqXVDGLZNsFJ0qdmVe9oU8ZdZsLKaHJY8dqkOBL1RKCYwv7mqoLJeVYea0cei0loMtQiU3uqTl75LOSM6dAqCEVhVmsnA+XsgbxGNA1WJPNp4+Kz4zQO+dd9T5XCeo5c7UmuNaaQ6j00hGDSIqvrvLUNvQOrWMOoTjhtXjomZhUcwo5+0q3JYbiSvE1FlSJoddQoqsJkS3QqM8EKMoxSizK1EST7LJPKWeTErPmKjC54ovjzNbq0ZxWF2N27dRJFuWpaubhe+xL8DkJ+qEco50izTE7lJr2jDX1Nfkagssp8gQ+9yFnCVKTOo+/h9K7XDx6U605BvYWvZGSo6SUeFXe20IkwQyzvY7uo7IYKSIxoHDvYwnsarS4PLvWPhdNztWUSua9LKskQXNN2Sfe58Y+OQeT7qtmC9rRq8TgNUqKxdyl9DUmIjlpVJ5Tq+uLK1pSrrlk3Alqn0OtuNLgHXDuNPW51OAKYkyK2nnX51oiPU3BZ9957ROCrUvRqa++86EPQYuLIWvl/bJPvZMSvAsuOexGfe59Dj5IEsXc1pc+5MCLbp+Vd8S+NKFZS8U3RO215CDKVol45q99zBWLT60pemD2XdGoJbPBfe2rai5YX0oxMKtU56IGPyb4GnjAnlDakQP9Aps+0yoJSasrLmepIeHAovfRV/HRqYZilRJfq3ofk+JSwZc+Zl8kh5JRaDLMiHKhxBgyTkR86pmHkl3VgGcRH/oUBB1HzoVH5F77qk6drxFVQOi89C55qTFW1KI4puhFqhSlIZSu6nsJyHkpBg5Yp9Kr5/jHnErhSX3tA/uzogQFLUnuUa+L1hg0mQ+vXtSV5EoJxR7lg1U0Zq4HlHMivvcpaFLExsK7cO2lxirJZp7n270kn3NIzpERZK/o79HG4JihDxkhVoKGjFK/9AVhU1P20Z7Dl169z1K9BNQthoHpjfhYvE8CBva+sNnUCxMIZXNZOAIlOtwZpF5TyLGmkAwbGqX0TAynPuAVss/cTpS2EyIYOKYaqwbWKFlCCCRgtu21Qoh9rJllBsEqBFmrFuddEXyFgLKDuox6qvK6P/aKU4IcnbIy9MLszqME5yuXD7EXyJX1BHvsllByRoYPuFQgR8kRYsV2oOOgl5hd8EK4gNirelRGoaFU60ZOmTWQ4pMlgLh8KVJLpg20FYXpySVmqvC+ZvwdSEh4XYmcS3BdTrXUQkJAhy7JFTRndBxtfXKCRgOXrX0osYrPkJtgkxWZjVSyE83j/HofXXTZBaXK5DRmtXZSYrZSUHaJcplgI01FYq2cE5czObKK1grFNi8EsUfNl1N23iXce8Se2zIHYs9tUUugKJgfZSDqfIcmMeGWIjO9VV2sqPZ40GMJKD6SxKrKqiZeLTSuw2VfIPfvSfinudfcF2bfJmkcCbRgzT00uS/Q/i5FrkfYkf7w+MWzXy58eSxv/guFr2YM+Y7rYjKcFL4c0hYSWLMw2VqZbC1N/ssFMmQxDBua8AXHCfc2l7Zg94xfMznKkCzoCYQzk5A4t+AHzCNSz6HlnP7OxR/W9Uj8icFJ5XkMlBdENEsQNMJZk6g2tz0mD+USag3E/4QWJy4zXYQxM9c4CEgpV42uBHxA9aUgwwSVnOGxmsQkJUbvYHuQ9Qrvq4qvyVwRmQgVXcg8gvEBOZEbiSIVXg0nbCZC+RQjdArvSiZCOTqWI9yViVA+VJ9CDKkICxg0FnTfRTTZZa7LpSYJPnkuVQz3l5KEt0QIV+yICjdbEvym8fQaYggCv4qvJsTw5Iyk+JAD8g/6cafVZQdrZcJ9dTGVEOBtESRcsmsbDSXEJmp4B/kX5R2QKQpijsFVHoQ1YcUH2HEkDqUNl0KSWkxR79FE8LtIQVLzdhFUVZP3Nabs0R34niEoLGOK+BDiwtjBwsUQkiYOTS6aE29wiia40j5HGMwUnPPFDLayFtGCYOZxCuT7jAupLLwvM9uuZK/YtORai92CpeqiKEJMdlSZSk4BQSL5dreE6B1KkJpdMFVKqj6HXKJkjwM+3zOPJccQgk/BEsTDDmjlRg+VTDbrC3sClpLpZYLPkmErfA42tKRBi28013IUL8msTSJ3J74v3BgGbvADfgXtPr0m2FSeENp88URQsJmRbCZtpSiyV/ZSEPt9X3HWFI1ZKM4sEoJDGleRXE0zlF2NqXLCvJmtOadITM64RFCV8yHwEFHQH1hCgkGIWiWqmcVxBZmdep8qztBCLz5i0hBK8Tkh60qqMPEuIkBTh7ooKZcEG0sJDRjnxFRLwg1Y6Fn34jyNwuGE3gsGP5J95mKHhOjIpOrUm/DrS2Z3VakRb2Ohh/cuJYUsCcdsoQ/MOQJmdLiCYt87ZS7toRxFoi8+wUKGUm2wMSO3es34j6TnSaLz0WW0CdSZok9wenBk1q9U1buKRF643gxw4MKEZS5WGVvODpFZhMNGQnFVpDKBhhXQeRTFyMOXgEVHwDwjpGRbskRmtJoiAIGF55QkpITnLIfKRyEezsXocftVEBlICEgNGSawif6uhKi8TgyKoyxUdcHVHH0skhOEBxnH5YSZFe7sjCn3MfAocmSpNXheZ2oVlDGx16L0NDlfczUmHPkxauGKO0HAfCIlcxK4MI59QAIMObPUUDeE2IATL4QWSoQCckPdEhpTboqc7NlTybjbmMQnzzUkyNSYbqQGicGh2DCmG59k2RWOE3DBa13wlXUmQ1aHMqegmWL6cnKYUOWignrGWO4cSoyqxaSggqEZJ828hzWWW7TAbwd8/BvLzYrj/stsPmG5neRUk4MqNQ7bCBviA7qXLaU7nfB7Z7mPaPm/Esutfz/PPbHg4/3Zb37h4bDwfhfPTYYP5Ln/Oa4+bjntd0hQrOaM0+Zl9R5jfZhQ+ygzRhum2IUdo525F0lux2ib4bhgSDgx2qYudmXOWKPE2uOjU49RyYyPBuHv8dFG3OZ8dOhD3eOjYT/3+Gjfp30+2vcYJM34aN/D5cz4aO2N89zy0dqHtMdHa6/7fLT2OFjY8dF4Tdjjo3mpsMdHS88Fy46P5mXDjI/mQlB1xkdzM4j/zxkfLXBocz7a9dXN+Wgk4X1GmqOZw5yTRkhOpqvdstKuZ7BbVprIxX2MO146EJG2D3vcNJJ1gPsc2WkUd67nqmDLUAeuP32acdREsMXnxY6lLpZnj6c2KT7PmWpaxyYuTFx1pC3VOVvNQNXN+GrLI3uMNXm4/dhy1o7WJcxYa6GH4ue8Nf0R+MQtc2317HHXloLSfWSvS6Ue7n92DLZjdVyZsdi4GXW9g2eYmGw8ZjvuoHZsNowjSXNG2zMBGAPvWO1WPVcaE7NNTGE4vx23jVNfkuYMt43Y+TnLTQDj3vkZ0x2K1eXnbHfLpXPG28rNOW9i9vVcI2xZb+4XSZoz32pJqHIn9hvH7DjWmzPg3uZvzoI7pt3JnAlvKTMuPCQbMk5qt3y4aY0cnownTty2mNtjxblgACvOuXEEGNJmDDmXdpbG5dzEk+PnmnwztlzwKU3anDMPY7tz5hy3veSb8ecabHujL9+y6D6N/Ztx6fDdVnbGqPusrd0Zr+7wHkwbc34dVbyl7Vj2xEWZpc24dvwSW9qWcc81txnl7mvLvOMCl3xz/h1Hv5YWdyz8uONZxomLZ85bvhkj35CQYyUnXt7h+MXqm/Hz+Cqu/Zad5+6irj7irnLL0tt9JWkZnb5x9a5yPUha6recvfPesnFnNDL33ABEsmEBOfH3UmNpaVsWPyXfmg39Vn0VVC3bByX97vl91mXOYvzL8Pv4Y+j+Jj37oZETTD5q938Uz3+rZ7/Vs599oJkRevYQTTltrtKP7Y5SyhHsHswixS7B9w2R0KXi+hwrDgIvHFomNT07nsgkFCxlfgNTpQNLpaZ6mVkq2ZX1zFLJ28usnaWSarte3loqYbwxt1QSrEVMbddMlYxJRGs+2Sr57IOp7UZbpYLSlhKjqZLCIJsRUDNV8q6kUMRUp9gqaS6pIOKgS8VYKaovdiPdbJW4UZCUFRUmtkrBe3spaW1gqxRdqA7jGvTItSZBCKvYmJlG16UsoaK15SYdnW/0MQmmL3iPw1gJmxSfsuN6mF6gVPZYlaSm5VSfi/OaFGdrdoUQUsqYSboaLMHshsxbXSqZVhLmJDV7TaPSlzWJWC6gl0MxWmuWFDR4U5ajXiQyQ5QQss8CAQ6BbviqSVJBb5cKryujLyHAbce+Bntoqb7ixos7M6cle7TVZj2TkPNg4XgcE7OZWVgP0bMr8c54T4BWkBkIRc2gUKJD1lNuc7AmDJ4l5SWE9xnTwqReNQUfo5RmX1dC8VhyxVSSGR6KZo+9QsyRR9AsVK2pJhXhSQbvtDH+wtCKVzxmaeVCzbUENaOIAmePsYZHfR8r1ozF26phEmKvw0vJBR1ogPWF28kJxWqJXAFV+pFcVS0ao91MMJTknGLMhTzHJRZGQYSDiOgxM0oAxSow8WKJS60QQuUiCGsLbDCZcc0SsPKx0xc4IqW6ApvPy3bFQKKEwMNfNAAYVMA4FgbLohEcRDLa/mKGGTmBJHi+JFlNwwvganXYMxgrpi5xy6W5cMMSsU5U7GCw67GX9j5UvrviPVIfymquB7n3EWdFlJsWVrqUTFgi9pujmoBxB0p0M6sqHLhEMBmzbCmCRYf6YqYZUlzxIRLbIRd6imWL5zbAu2o3embZwsNcthCVmmmLYlHH9RAJZtqiKLO9M7W6mbbwrKw0s57RtiUmV3hktrVtKc4nVmFn22L6F3JsbVu40rMJmmxbPFZdpncZjVsQaNqcTsYtWHKZ8dDWuKW9G51bt9g7mj3rFluouXULrdxat5iD8J23lne+2v8brVuOrIZ/Y9b77oM/fvvt3S8/ffu7gn+7Wp2fLaT+6oY1jy9wNflBPlq+u7/80Vxdk/2Ul5Zf0W8urxHwc/cR77G5giw+lhR8WH1kDjnlbBHxmiE+lMK1WQs2omeLOrmE9cVDE0a/eAm1JxeUREryCcHhgYxeNpvj2AmqiqUiZtQZWzYy6pixNA+zk3NO7oYR0XhXa75c5572GMEfLwnbwLuJb58vn25+mjkUvre5wj/38un69XXz5bP1NrFdktG52w3etuw9yFujMeAFh48tLItyFXLok3wblmUXNGV0j/3F5vLZCodpgcn6cnn1bH1pXlgZLdLVL/NodOh4cnmzMuc7p3YMHR9HaQO0kf6NDv0+dHamyZo7cd9ODh9HR/ijB3wmYLZubzfyavdPL9c3zXdUc+LEPvvanmXtPKhJ8BGFaQ1OJf31z93ZBn9OP1y+vrgggtGfj2IY3TrF3u1Kc/+1ebWf8ODcgqWwBA93P++2n5R4cG2xVvDCS5496G6DKGyePA+fSeF98mAXbPNNPsFbQIJt1il5qpLic3/hVDlHFtuMe745DUed9pb8GzjFDsnPvWIbhrzZOoT+53WKHRzOn/DYbG6x/3l9YgsPp/lf8aq8sfjd+MSOez6x2Rkf7BH72Ov1b+sR+7ir/yL+sI2mr5+8mNwbrp+8GGNM7UJPfbGZ4k59sZmCTt1fPrXoFo3JsOgPz5frMVDUFry/GbmQOVaiyUOE9OXm6fp8PQ9DQXyZN7toMoAzB6t3H1/f22yuZmErCFS1fEx4udGB82frN6und69frZ7cfLO8Wc8C/8xdOx+yFc1b4OXyJa7/JheLFswUZ4mNotoVwKdvVk9+GQezX37kTw58XhM1Zet58NS3W3/Yp4UEEPQBNX07T2V0cT/s1HFwjVt/2Lf+sPF2MBMmbv1h3/rDthikO2F3G8Xo74gQeusPG2J76w/7H+Fo/tYfdgtSf97iDzb0fusPm4AGOJe1F4cja3rrD/vWH/atP+zF/xnerODsfoVIA7f+sG/9Yd/6wz7ldPzILe6tP+xbf9iT8/j3u2o+2j5HrquPnDmfyHHrD3s/dMCB2+mjKTya9Q9JuPWH3TxmH3lzPvJX+34/sSeK7HtOPVXHgRfYI/+shz6jj7z1HnnaPdHRg0ZOeIR+j8/X40qPmj2awaNWjoocju39JT7E4e/BYE9M2JFb4fcVOeGZ+dYf9q0/7Le7oD+x1Q9caB8hi6MiH7Jxj/w/HyGc9yccObc+Og1HOY4Sjlo5widHRY5yHDV7lOP9CUfzcVTkoKdH+PZo1k8k7NfBDeu+keWpkJZH7sNu/WFbUK3/mohav7oN6a0/7PVfVs3Ocxfh79YfNs80eahifn7w3HPrD5sHWrf+sG/9Yd/6w771h33rD/vWHzaeyG/9Yd/6w771h/3Pcq+5L8ze+sP+m/xhh1t/2L9dgKJbL33v8NJ36w/71h/2rT9sfH/f+sO+9YeNO+dbf9gzl3rmpmPuTw+vHLijufWH/bc/sPt7TQn/Rpb7X9oftnQ4yfvFTrGPGG/e6s4enwO+8z0db6hajM+Zz4Mx6OfNzzza5Ene26OAutQcKPznWyPPprc4xcY3Kb4y8T+KN1P8V/7XRQG9ZbLfwWSzhjtX2BZiBkei+ET2iUireEXZTwgOtysF91yBuKyu4JslicdrqQVuJWwlPnSJfE8UV0lOHDEzY8bhmfbqnBDrDU9hNKLBaai4do3Rvhfni8XIKEQ30d4Ti7MGL46gDSQkV/B1ll3xkTaCE3MT46kJOEgtKcZIzAULIVuIzRAsomMijmxUi4vhCM9mvYpEjqhOlTAU1EH4M02FOHw+EnKWQPCqxDwJ1VmOmlVjqhXXbSTgXiy4gvc2zfSLqDBE1KyEnSFHCcQijOYZzDNdpVbCB0fi21lPia8XQ0yijlgSvseTs6sBJ9140vK9q7FoxRTBFYu7IplRCoF+kgVzIWYdMeLwwuYIB+OJ3eGir3ihIlZuJiYOjn09kdJ8T+Q1by7Xks8Wh8XX6mrFva+vhPYkHg/T6au24DjERiFmRUxem9O+5EIVT4RBC6eDbzBXatHscou3UyNxD/HLnM31XfVZCeQZ2ArmJIxAnQn/ZMGJ+eJKUpKk5MXliOut7OmDk0oAQHymEQ2kJK/EfEy9x6Ev+ykkH3Fih9szIShs0BQpUILirJbZdorPOvy+hVx99RbZJbPdUoxakgtE+clE6cRRoATviyWk6gkkQzAN1L65J4KNWXoSSg7/c8RTyRaSRguNEHVHI16VE5GX8HJ3mKMeVOEP27CgjGMvWpylw37m2UjwzxfcwVhV9mYj4316N18tuu3efCbZn+6ge+uRCN84X7HUu3iwpmV/1SPBRuf7IvZJ5xsn4vphvrPw2ba398zN23x3xl7zbP/CDKpFfdru8BZIcXcE8Ee3d0bi4SmyhPk5o8jeScQN3t5ZxVHe3mm2IJHz805H9zAC4Rn3cAZj28MquLDbwzuEitnDTLh/3MNdhA7Yw27wxnv4j/iXexiSAI1zFEp8xj0ci0vJPSxssWLmeNqCxcwQucWKmSF6guzuUQILFjOnFRYsZk5NIsFi5vTGYsM0ioSTTnOaOJGo0wm/d330Eab4jT3Y/SNMgFp8xuv1s//r7+eLcW3yj+SLb62Bbq2BiHqIF/1I5BcCff/DrYH6LZPucsxp9RExU47TtN+y6kKMcfL5fsutu1iSJy31E8Pusjiprb4d067Zm7t+6bd8uwvBkhQP0ca6l5pdzjj/9/2WfQ9Zs7SAABMHH/GPbGmF+G2Nia8SaiKfxTCYeHkLG9NiMWypFcHsssW2cBNJCw6f2WOsCGJuuCiFWMuxxUQYiWMtEW6+tdEoqDmJjtHCmBArTYmXmIgBaPFZHA6HYxa8RBOGjd4RjQ7O3BNDTSwQB66bi4+aCcdjISGMy68E8M51DBhCDQm2NtcYkpXLVWJFZeVijgUZWVwgQkgiIHlM9JRA2MSYLgE3y4xHiJyjFmyPwL0W/sWc/PqIp2WLDaKIIVJcrkXEInD4mIh5Z9G/Y6X5EAJRUwhfTnjFFuiGKH9Vs0axGBgpVwLwEdqcIJS8oPOFYA+ESlSCb0vvfCVkXaBtH+wNVK0EtSsWXZ3wP/hFDjETud5kHPEuwgmLJxgRUpBzXgPhOz3uqn2vWnKMhGl0LUpm9j5YeMRUiTgdeq8x4jA8S8oJyYDw1NURQCYX8/SLe3FxxEevBU4B78qFkOohe2c+oIGRdaWyBUpfcyq4dWP7uowjd+98zjh2l5gr8c5zdpFoqASktADpBMfzxL22EpEwkNkXn0MqtXSS+uqrCvE5LYq14NmdQJne55q871R720leQ445a6epLxzWnH1UBBAtPb7PcdhdM/5RvetDlhLofIiEpdeeQSBSRMK7d97DNbpAWPFSxILOhxgJiET4vhCJQo+vacUdt1OCc0YcUtfAmSA0IgnRp5iyS6RGEnJwKURVT8AREgqiPvKVWGDN2FcXistIyrnUkzmO6jhq5aAfRz0Nh2M5Gu3RfBzO2NGcHsz6iXU5WDk9sbZHq28dm++Pww10uMMO9iB+xvd2KcFyD/Zx3NvoLcbl/CiYF/r5YSFm6sFxOjpwR0dS9w/t8anm7ePBuT/ADIfIAyR0jGBiPERCx4jqGJntIzxqNjyqc6R4jDhPINc9BGwIfx9LG/XYx+VQhRMI/5gq7JMOip2gLyeo0ClidZKo7RO/MYjRqPdqRNJaPSCmjXAeEt1TxDnuEfFoEYH2iX2ytFNMwQneQfZZDOMdDliRfIJlMTbmFGszY4GKVLF8H5j2excTjzDvbywmfqij8yi/+iOVrVft/7m+fDo65b5cvrp+vrk5uvu6dXR+6+h8z6/oSTejhx5Jbx2d/2JH53/GNf6Tq/UrnFqZC/jP18+eX6yfPb+5t7m8XD252TmWNTex7aXV+fLievXX/x8aaqZO').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222597120', obj, '');\n",
       "});\n",
       "\n",
       "      }\n",
       "      const servers = ['/static/', 'https://root.cern/js/7.11.0/', 'https://jsroot.gsi.de/7.11.0/'],\n",
       "            path = 'build/jsroot';\n",
       "      if (typeof JSROOT !== 'undefined')\n",
       "         execCode(JSROOT);\n",
       "      else if (typeof requirejs !== 'undefined') {\n",
       "         servers.forEach((s,i) => { servers[i] = s + path; });\n",
       "         requirejs.config({ paths: { 'jsroot' : servers } })(['jsroot'],  execCode);\n",
       "      } else {\n",
       "         const config = document.getElementById('jupyter-config-data');\n",
       "         if (config)\n",
       "            servers[0] = (JSON.parse(config.innerHTML || '{}')?.baseUrl || '/') + 'static/';\n",
       "         else\n",
       "            servers.shift();\n",
       "         function loadJsroot() {\n",
       "            return !servers.length ? 0 : import(servers.shift() + path + '.js').catch(loadJsroot).then(() => execCode(JSROOT));\n",
       "         }\n",
       "         loadJsroot();\n",
       "      }\n",
       "   }\n",
       "   process_root_plot_1779222597120();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from ROOT import gROOT \n",
    "gROOT.GetListOfCanvases().Draw()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
