Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active April 10, 2023 10:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenwebb/536e138dd3fee8e56e5e979a6fd8e956 to your computer and use it in GitHub Desktop.
Save kenwebb/536e138dd3fee8e56e5e979a6fd8e956 to your computer and use it in GitHub Desktop.
ComputationalGraph
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Mon Apr 10 2023 06:56:35 GMT-0400 (Eastern Daylight Saving Time)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: ComputationalGraph
Description:
Url: http://www.primordion.com/Xholon/gwt/
InternalName: 536e138dd3fee8e56e5e979a6fd8e956
Keywords:
My Notes
--------
8 April 2023
https://learning.edx.org/course/course-v1:HarvardX+TinyML2
HarvardX TinyML2 Applications of TinyML
see also ~/gwtspace/Xholon/Xholon/script/javascript/tinyml01.js
Dev Tools
---------
var thing = temp0.call(101, [6,2], xh.root());
console.log(thing);
mm export
---------
MindMap
res_50
{"maxFoldLevel":0,"shouldShowLinks":false,"shouldLabelLinks":true,"linkColor":"#6666ff","reverseLinkColor":"#6666ff","shouldShowStateMachineEntities":false,"shouldShowClouds":true,"cloudFillColor":"#ffffff","cloudFillColorAlternate":"#f8fff4","nameTemplate":"R^^^^^","shouldSplitCamelCase":true,"shouldBeLowerCase":false,"shouldBeCapitalized":true,"shouldShowAnnotations":true,"position":"left","version":"0.9.0"}
mm export (better: includes number value)
-----------------
MindMap
res_50
{"maxFoldLevel":0,"shouldShowLinks":false,"shouldLabelLinks":false,"linkColor":"#6666ff","reverseLinkColor":"#6666ff","shouldShowStateMachineEntities":false,"shouldShowClouds":false,"cloudFillColor":"#ffffff","cloudFillColorAlternate":"#f8fff4","nameTemplate":"R^^^^W","shouldSplitCamelCase":false,"shouldBeLowerCase":true,"shouldBeCapitalized":false,"shouldShowAnnotations":false,"position":"left","version":"0.9.0"}
Newick
------
(((num,
num)add,
((num,
num)sub,
num)add)div)res;
References
----------
(1) search: computational graph
used by PyTorch
(2) https://pytorch.org/blog/computational-graphs-constructed-in-pytorch/
(3) https://pytorch.org/
(4) https://pytorch.org/docs/stable/index.html
PyTorch is an optimized tensor library for deep learning using GPUs and CPUs.
(5) https://en.wikipedia.org/wiki/PyTorch
PyTorch is a machine learning framework based on the Torch library,
used for applications such as computer vision and natural language processing,
originally developed by Meta AI and now part of the Linux Foundation umbrella.
It is free and open-source software released under the modified BSD license.
Although the Python interface is more polished and the primary focus of development, PyTorch also has a C++ interface.
A number of pieces of deep learning software are built on top of PyTorch, including
Tesla Autopilot,
Uber's Pyro,
Hugging Face's Transformers,
PyTorch Lightning, and
Catalyst.
PyTorch provides two high-level features:
Tensor computing (like NumPy) with strong acceleration via graphics processing units (GPU)
Deep neural networks built on a tape-based automatic differentiation system
PyTorch defines a class called Tensor (torch.Tensor) to store and operate on homogeneous multidimensional rectangular arrays of numbers.
PyTorch Tensors are similar to NumPy Arrays, but can also be operated on a CUDA-capable NVIDIA GPU.
PyTorch has also been developing support for other GPU platforms, for example, AMD's ROCm and Apple's Metal Framework.
Autograd module
PyTorch uses a method called automatic differentiation.
A recorder records what operations have performed, and then it replays it backward to compute the gradients.
This method is especially powerful when building neural networks to save time on one epoch
by calculating differentiation of the parameters at the forward pass.
Optim module
torch.optim is a module that implements various optimization algorithms used for building neural networks.
Most of the commonly used methods are already supported, so there is no need to build them from scratch.
nn module
PyTorch autograd makes it easy to define computational graphs and take gradients, but raw autograd can be a bit too low-level for defining complex neural networks.
This is where the nn module can help. The nn module provides layers and tools to easily create a neural networks by just defining the layers of the network.
(6) https://medium.com/tebs-lab/deep-neural-networks-as-computational-graphs-867fcaa56c9
Tyler Elliot Bettilyon, Jun 22, 2018
At its core, every neural network represents a single mathematical function. This means that when you set out to use a neural network for some task, your hypothesis is that there is some mathematical function that will approximate the observed behavior reasonably well. When we train a neural network we are trying to find one such reasonable approximation.
Because these functions are often monstrously complex we use graphs to represent them rather than the standard formula notation. These graphs help us organize our thinking about the functions we set out to build and it turns out some graphs work much better than others for particular tasks. A lot of research and development in the neural network space is about inventing new architectures for these graphs, rather than inventing brand new algorithms.
So what is a computational graph and how are they used by neural networks?
Computational Graphs
A computational graph is a way to represent a math function in the language of graph theory. Recall the premise of graph theory: nodes are connected by edges, and everything in the graph is either a node or an edge.
In a computational graph nodes are either input values or functions for combining values. Edges receive their weights as the data flows through the graph. Outbound edges from an input node are weighted with that input value; outbound nodes from a function node are weighted by combining the weights of the inbound edges using the specified function.
For example, consider the relatively simple expression: f(x, y, z) = (x + y) * z. This is how we would represent that function as as computational graph:
... KSW lots of good stuff here, complete with multiple graphs
(7) https://www.cs.cornell.edu/courses/cs5740/2017sp/lectures/04-nn-compgraph.pdf
(8) https://www.tensorflow.org/guide/intro_to_graphs
Introduction to graphs and tf.function
In this guide, you'll learn how TensorFlow allows you to make simple changes to your code to get graphs,
how graphs are stored and represented, and how you can use them to accelerate your models.
Note: For those of you who are only familiar with TensorFlow 1.x, this guide demonstrates a very different view of graphs.
This is a big-picture overview that covers how tf.function allows you to switch from eager execution to graph execution.
For a more complete specification of tf.function, go to the Better performance with tf.function guide.
What are graphs?
In the previous three guides, you ran TensorFlow eagerly.
This means TensorFlow operations are executed by Python, operation by operation, and returning results back to Python.
While eager execution has several unique advantages, graph execution enables portability outside Python and tends to offer better performance.
Graph execution means that tensor computations are executed as a TensorFlow graph, sometimes referred to as a tf.Graph or simply a "graph."
Graphs are data structures that contain a set of tf.Operation objects, which represent units of computation; and
tf.Tensor objects, which represent the units of data that flow between operations.
They are defined in a tf.Graph context.
Since these graphs are data structures, they can be saved, run, and restored all without the original Python code.
This is what a TensorFlow graph representing a two-layer neural network looks like when visualized in TensorBoard:
The benefits of graphs
With a graph, you have a great deal of flexibility.
You can use your TensorFlow graph in environments that don't have a Python interpreter, like mobile applications, embedded devices, and backend servers.
TensorFlow uses graphs as the format for saved models when it exports them from Python.
Graphs are also easily optimized, allowing the compiler to do transformations like:
Statically infer the value of tensors by folding constant nodes in your computation ("constant folding").
Separate sub-parts of a computation that are independent and split them between threads or devices.
Simplify arithmetic operations by eliminating common subexpressions.
There is an entire optimization system, Grappler, to perform this and other speedups.
In short, graphs are extremely useful and let your TensorFlow run fast, run in parallel, and run efficiently on multiple devices.
However, you still want to define your machine learning models (or other computations) in Python for convenience,
and then automatically construct graphs when you need them.
... KSW lots more interesting stuff !
(9) https://d3lm.medium.com/understand-tensorflow-by-mimicking-its-api-from-scratch-faa55787170d
- KSW referenced by my TinyML course
Dominic E., Jan 10, 2019
Understand TensorFlow by mimicking its API from scratch
TensorFlow is a very powerful and open source library for implementing and deploying large-scale machine learning models.
This makes it perfect for research and production. Over the years it has become one of the most popular libraries for deep learning.
The goal of this post is to build an intuition and understanding for how deep learning libraries work under the hood, specifically TensorFlow.
To achieve this goal, we will mimic its API and implement its core building blocks from scratch.
This has the neat little side effect that, by the end of this post, you will be able to use TensorFlow with confidence, because you’ll have a deep conceptual understanding of the inner workings.
You will also gain further understanding of things like variables, tensors, sessions or operations.
...
Theory
TensorFlow is a framework composed of two core building blocks — a library for defining computational graphs and a runtime for executing such graphs on a variety of different hardware.
A computational graph has many advantages but more on that in just a moment.
Now the question you might ask yourself is, what exactly is a computational graph?
Computational Graphs
In a nutshell, a computational graph is an abstract way of describing computations as a directed graph.
A directed graph is a data structure consisting of nodes (vertices) and edges. It’s a set of vertices connected pairwise by directed edges.
Here’s a very simple example:
...
TensorFlow uses directed graphs internally to represent computations, and they call this data flow graphs (or computational graphs).
While nodes in a directed graph can be anything, nodes in a computational graph mostly represent operations, variables, or placeholders.
(10) https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/guide/checkpoint.ipynb
checkpoint files
]]></Notes>
<_-.XholonClass>
<PhysicalSystem/>
<ComputationalGraph/>
<num superClass="Attribute_int"/>
</_-.XholonClass>
<xholonClassDetails>
<ComputationalGraph>
<port name="var1" connector="Attribute_int[1]"/>
<port name="var2" connector="Attribute_int[2]"/>
<port name="add" connector="Script[1]"/>
<port name="sub" connector="Script[2]"/>
<port name="div" connector="Script[3]"/>
<port name="temp1" connector="Attribute_int[@roleName='temp1']"/>
<port name="temp2" connector="Attribute_int[@roleName='temp2']"/>
<port name="var3" connector="Attribute_int[@roleName='var3']"/>
<port name="temp3" connector="Attribute_int[@roleName='temp3']"/>
<port name="res" connector="Attribute_int[@roleName='res']"/>
</ComputationalGraph>
</xholonClassDetails>
<PhysicalSystem>
<ComputationalGraph>
<Attribute_int roleName="var1" val="6"/>
<Attribute_int roleName="var2">2</Attribute_int>
<Script roleName="add">
var beh = { // cannot use const here
processReceivedSyncMessage: function(msg) {
const pair = msg.data;
return pair[0] + pair[1];
}
}
</Script>
<Script roleName="sub">
var beh = {
processReceivedSyncMessage: function(msg) {
const pair = msg.data;
return pair[0] - pair[1];
}
}
</Script>
<Script roleName="div">
var beh = {
processReceivedSyncMessage: function(msg) {
const pair = msg.data;
return pair[0] / pair[1];
}
}
</Script>
<Attribute_int roleName="temp1" val="0"/>
<Attribute_int roleName="temp2">0</Attribute_int>
<Attribute_int roleName="var3">4</Attribute_int>
<Attribute_int roleName="temp3">0</Attribute_int>
<Attribute_int roleName="res">0</Attribute_int>
</ComputationalGraph>
<res>
<div>
<add>
<num>6</num>
<num>2</num>
</add>
<add>
<sub>
<num>6</num>
<num>2</num>
</sub>
<num>4</num>
</add>
</div>
</res>
<!-- see ref 6, f(x, y, z) = (x + y) * z
as functional Javascript:
const f = (x, y, z) => (x + y) * z
const res = f(1, 2, 3) // result
-->
<res>
<mul>
<add>
<X/>
<Y/>
</add>
<Z/>
</mul>
</res>
<!-- see ref 6, f(x, y) = ax² + bxy + cy²; where a, b, and c are scalars
Newick
((((a,
(X)sqr)mul,
(b,
(X,
Y)mul)mul)add,
(c,
(Y)sqr)mul)add)res;
-->
<res>
<add>
<add>
<mul>
<a/>
<sqr>
<X/>
</sqr>
</mul>
<mul>
<b/>
<mul>
<X/>
<Y/>
</mul>
</mul>
</add>
<mul>
<c/>
<sqr>
<Y/>
</sqr>
</mul>
</add>
</res>
</PhysicalSystem>
<ComputationalGraphbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
var me;
var beh = {
postConfigure: function() {
me = this.cnode.parent();
},
act: function() {
me.println(me.name());
me.println(me.add.name());
me.println(me.sub.name());
me.println(me.div.name());
const res1 = me.add.call(101, [me.var1.val(), me.var2.val()], me);
me.println(res1.data);
const res2 = me.sub.call(101, [me.var1.val(), me.var2.val()], me);
me.println(res2.data);
const res3 = me.div.call(101, [res2.data, me.var3.val()], me);
me.println(res3.data);
}
}
//# sourceURL=ComputationalGraphbehavior.js
]]></ComputationalGraphbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="125" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>ComputationalGraph</title>
<rect id="PhysicalSystem/ComputationalGraph" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<g>
<title>Script add</title>
<rect id="PhysicalSystem/ComputationalGraph/Script" fill="#6AB06A" height="50" width="10" x="80" y="0"/>
</g>
<g>
<title>Script sub</title>
<rect id="PhysicalSystem/ComputationalGraph/Script[2]" fill="#6AB06A" height="50" width="10" x="95" y="0"/>
</g>
<g>
<title>Script div</title>
<rect id="PhysicalSystem/ComputationalGraph/Script[3]" fill="#6AB06A" height="50" width="10" x="110" y="0"/>
</g>
</g>
</svg>
<svg fill-opacity="1" xmlns:xlink="http://www.w3.org/1999/xlink" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="260" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="107" xmlns="http://www.w3.org/2000/svg" font-family="&apos;Dialog&apos;" font-style="normal" stroke-linejoin="miter" font-size="12" stroke-dashoffset="0" image-rendering="auto"
><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"
/><g
><defs id="defs1"
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"
><path d="M0 0 L3872 0 L3872 1721 L0 1721 L0 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"
><path d="M0 0 L0 207 L360 207 L360 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"
><path d="M0 0 L0 38 L38 38 L38 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"
><path d="M8 12 L8 27 L31 27 L31 12 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"
><path d="M0 0 L0 207 L302 207 L302 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"
><path d="M0 0 L0 19 L10 19 L10 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"
><path d="M0 0 L0 19 L30 19 L30 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"
><path d="M6 2 L6 17 L24 17 L24 2 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"
><path d="M0 0 L0 26 L26 26 L26 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"
><path d="M0 0 L0 163 L252 163 L252 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"
><path d="M0 0 L0 19 L36 19 L36 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"
><path d="M6 2 L6 17 L30 17 L30 2 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"
><path d="M0 0 L0 119 L140 119 L140 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"
><path d="M0 0 L0 19 L40 19 L40 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"
><path d="M6 2 L6 17 L34 17 L34 2 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"
><path d="M0 0 L0 141 L196 141 L196 0 Z"
/></clipPath
><font horiz-adv-x="60.0" id="font1"
><font-face ascent="92.822266" font-style="normal" descent="23.583984" units-per-em="100" font-family="sans-serif" font-weight="normal"
/><missing-glyph horiz-adv-x="60.0" d="M4.984375 -17.671875 L4.984375 70.515625 L54.984375 70.515625 L54.984375 -17.671875 L4.984375 -17.671875 ZM10.59375 -12.109375 L49.421875 -12.109375 L49.421875 64.890625 L10.59375 64.890625 L10.59375 -12.109375 Z"
/><glyph unicode="s" horiz-adv-x="52.0" d="M44.28125 53.078125 L44.28125 44.578125 Q40.484375 46.53125 36.375 47.5 Q32.28125 48.484375 27.875 48.484375 Q21.1875 48.484375 17.84375 46.4375 Q14.5 44.390625 14.5 40.28125 Q14.5 37.15625 16.890625 35.375 Q19.28125 33.59375 26.515625 31.984375 L29.59375 31.296875 Q39.15625 29.25 43.1875 25.515625 Q47.21875 21.78125 47.21875 15.09375 Q47.21875 7.46875 41.1875 3.015625 Q35.15625 -1.421875 24.609375 -1.421875 Q20.21875 -1.421875 15.453125 -0.5625 Q10.6875 0.296875 5.421875 2 L5.421875 11.28125 Q10.40625 8.6875 15.234375 7.390625 Q20.0625 6.109375 24.8125 6.109375 Q31.15625 6.109375 34.5625 8.28125 Q37.984375 10.453125 37.984375 14.40625 Q37.984375 18.0625 35.515625 20.015625 Q33.0625 21.96875 24.703125 23.78125 L21.578125 24.515625 Q13.234375 26.265625 9.515625 29.90625 Q5.8125 33.546875 5.8125 39.890625 Q5.8125 47.609375 11.28125 51.796875 Q16.75 56 26.8125 56 Q31.78125 56 36.171875 55.265625 Q40.578125 54.546875 44.28125 53.078125 Z"
/><glyph unicode="e" horiz-adv-x="62.0" d="M56.203125 29.59375 L56.203125 25.203125 L14.890625 25.203125 Q15.484375 15.921875 20.484375 11.0625 Q25.484375 6.203125 34.421875 6.203125 Q39.59375 6.203125 44.453125 7.46875 Q49.3125 8.734375 54.109375 11.28125 L54.109375 2.78125 Q49.265625 0.734375 44.1875 -0.34375 Q39.109375 -1.421875 33.890625 -1.421875 Q20.796875 -1.421875 13.15625 6.1875 Q5.515625 13.8125 5.515625 26.8125 Q5.515625 40.234375 12.765625 48.109375 Q20.015625 56 32.328125 56 Q43.359375 56 49.78125 48.890625 Q56.203125 41.796875 56.203125 29.59375 ZM47.21875 32.234375 Q47.125 39.59375 43.09375 43.984375 Q39.0625 48.390625 32.421875 48.390625 Q24.90625 48.390625 20.390625 44.140625 Q15.875 39.890625 15.1875 32.171875 L47.21875 32.234375 Z"
/><glyph unicode="R" horiz-adv-x="69.0" d="M44.390625 34.1875 Q47.5625 33.109375 50.5625 29.59375 Q53.5625 26.078125 56.59375 19.921875 L66.609375 0 L56 0 L46.6875 18.703125 Q43.0625 26.03125 39.671875 28.421875 Q36.28125 30.8125 30.421875 30.8125 L19.671875 30.8125 L19.671875 0 L9.8125 0 L9.8125 72.90625 L32.078125 72.90625 Q44.578125 72.90625 50.734375 67.671875 Q56.890625 62.453125 56.890625 51.90625 Q56.890625 45.015625 53.6875 40.46875 Q50.484375 35.9375 44.390625 34.1875 ZM19.671875 64.796875 L19.671875 38.921875 L32.078125 38.921875 Q39.203125 38.921875 42.84375 42.21875 Q46.484375 45.515625 46.484375 51.90625 Q46.484375 58.296875 42.84375 61.546875 Q39.203125 64.796875 32.078125 64.796875 L19.671875 64.796875 Z"
/><glyph unicode="v" horiz-adv-x="59.0" d="M2.984375 54.6875 L12.5 54.6875 L29.59375 8.796875 L46.6875 54.6875 L56.203125 54.6875 L35.6875 0 L23.484375 0 L2.984375 54.6875 Z"
/><glyph unicode="i" horiz-adv-x="28.0" d="M9.421875 54.6875 L18.40625 54.6875 L18.40625 0 L9.421875 0 L9.421875 54.6875 ZM9.421875 75.984375 L18.40625 75.984375 L18.40625 64.59375 L9.421875 64.59375 L9.421875 75.984375 Z"
/><glyph unicode="D" horiz-adv-x="77.0" d="M19.671875 64.796875 L19.671875 8.109375 L31.59375 8.109375 Q46.6875 8.109375 53.6875 14.9375 Q60.6875 21.78125 60.6875 36.53125 Q60.6875 51.171875 53.6875 57.984375 Q46.6875 64.796875 31.59375 64.796875 L19.671875 64.796875 ZM9.8125 72.90625 L30.078125 72.90625 Q51.265625 72.90625 61.171875 64.09375 Q71.09375 55.28125 71.09375 36.53125 Q71.09375 17.671875 61.125 8.828125 Q51.171875 0 30.078125 0 L9.8125 0 L9.8125 72.90625 Z"
/><glyph unicode="d" horiz-adv-x="63.0" d="M45.40625 46.390625 L45.40625 75.984375 L54.390625 75.984375 L54.390625 0 L45.40625 0 L45.40625 8.203125 Q42.578125 3.328125 38.25 0.953125 Q33.9375 -1.421875 27.875 -1.421875 Q17.96875 -1.421875 11.734375 6.484375 Q5.515625 14.40625 5.515625 27.296875 Q5.515625 40.1875 11.734375 48.09375 Q17.96875 56 27.875 56 Q33.9375 56 38.25 53.625 Q42.578125 51.265625 45.40625 46.390625 ZM14.796875 27.296875 Q14.796875 17.390625 18.875 11.75 Q22.953125 6.109375 30.078125 6.109375 Q37.203125 6.109375 41.296875 11.75 Q45.40625 17.390625 45.40625 27.296875 Q45.40625 37.203125 41.296875 42.84375 Q37.203125 48.484375 30.078125 48.484375 Q22.953125 48.484375 18.875 42.84375 Q14.796875 37.203125 14.796875 27.296875 Z"
/><glyph unicode="A" horiz-adv-x="68.0" d="M34.1875 63.1875 L20.796875 26.90625 L47.609375 26.90625 L34.1875 63.1875 ZM28.609375 72.90625 L39.796875 72.90625 L67.578125 0 L57.328125 0 L50.6875 18.703125 L17.828125 18.703125 L11.1875 0 L0.78125 0 L28.609375 72.90625 Z"
/><glyph unicode="m" horiz-adv-x="97.0" d="M52 44.1875 Q55.375 50.25 60.0625 53.125 Q64.75 56 71.09375 56 Q79.640625 56 84.28125 50.015625 Q88.921875 44.046875 88.921875 33.015625 L88.921875 0 L79.890625 0 L79.890625 32.71875 Q79.890625 40.578125 77.09375 44.375 Q74.3125 48.1875 68.609375 48.1875 Q61.625 48.1875 57.5625 43.546875 Q53.515625 38.921875 53.515625 30.90625 L53.515625 0 L44.484375 0 L44.484375 32.71875 Q44.484375 40.625 41.703125 44.40625 Q38.921875 48.1875 33.109375 48.1875 Q26.21875 48.1875 22.15625 43.53125 Q18.109375 38.875 18.109375 30.90625 L18.109375 0 L9.078125 0 L9.078125 54.6875 L18.109375 54.6875 L18.109375 46.1875 Q21.1875 51.21875 25.484375 53.609375 Q29.78125 56 35.6875 56 Q41.65625 56 45.828125 52.96875 Q50 49.953125 52 44.1875 Z"
/><glyph unicode="u" horiz-adv-x="63.0" d="M8.5 21.578125 L8.5 54.6875 L17.484375 54.6875 L17.484375 21.921875 Q17.484375 14.15625 20.5 10.265625 Q23.53125 6.390625 29.59375 6.390625 Q36.859375 6.390625 41.078125 11.03125 Q45.3125 15.671875 45.3125 23.6875 L45.3125 54.6875 L54.296875 54.6875 L54.296875 0 L45.3125 0 L45.3125 8.40625 Q42.046875 3.421875 37.71875 1 Q33.40625 -1.421875 27.6875 -1.421875 Q18.265625 -1.421875 13.375 4.4375 Q8.5 10.296875 8.5 21.578125 ZM31.109375 56 L31.109375 56 Z"
/><glyph unicode="N" horiz-adv-x="75.0" d="M9.8125 72.90625 L23.09375 72.90625 L55.421875 11.921875 L55.421875 72.90625 L64.984375 72.90625 L64.984375 0 L51.703125 0 L19.390625 60.984375 L19.390625 0 L9.8125 0 L9.8125 72.90625 Z"
/><glyph unicode="b" horiz-adv-x="63.0" d="M48.6875 27.296875 Q48.6875 37.203125 44.609375 42.84375 Q40.53125 48.484375 33.40625 48.484375 Q26.265625 48.484375 22.1875 42.84375 Q18.109375 37.203125 18.109375 27.296875 Q18.109375 17.390625 22.1875 11.75 Q26.265625 6.109375 33.40625 6.109375 Q40.53125 6.109375 44.609375 11.75 Q48.6875 17.390625 48.6875 27.296875 ZM18.109375 46.390625 Q20.953125 51.265625 25.265625 53.625 Q29.59375 56 35.59375 56 Q45.5625 56 51.78125 48.09375 Q58.015625 40.1875 58.015625 27.296875 Q58.015625 14.40625 51.78125 6.484375 Q45.5625 -1.421875 35.59375 -1.421875 Q29.59375 -1.421875 25.265625 0.953125 Q20.953125 3.328125 18.109375 8.203125 L18.109375 0 L9.078125 0 L9.078125 75.984375 L18.109375 75.984375 L18.109375 46.390625 Z"
/><glyph unicode="S" horiz-adv-x="63.0" d="M53.515625 70.515625 L53.515625 60.890625 Q47.90625 63.578125 42.921875 64.890625 Q37.9375 66.21875 33.296875 66.21875 Q25.25 66.21875 20.875 63.09375 Q16.5 59.96875 16.5 54.203125 Q16.5 49.359375 19.40625 46.890625 Q22.3125 44.4375 30.421875 42.921875 L36.375 41.703125 Q47.40625 39.59375 52.65625 34.296875 Q57.90625 29 57.90625 20.125 Q57.90625 9.515625 50.796875 4.046875 Q43.703125 -1.421875 29.984375 -1.421875 Q24.8125 -1.421875 18.96875 -0.25 Q13.140625 0.921875 6.890625 3.21875 L6.890625 13.375 Q12.890625 10.015625 18.65625 8.296875 Q24.421875 6.59375 29.984375 6.59375 Q38.421875 6.59375 43.015625 9.90625 Q47.609375 13.234375 47.609375 19.390625 Q47.609375 24.75 44.3125 27.78125 Q41.015625 30.8125 33.5 32.328125 L27.484375 33.5 Q16.453125 35.6875 11.515625 40.375 Q6.59375 45.0625 6.59375 53.421875 Q6.59375 63.09375 13.40625 68.65625 Q20.21875 74.21875 32.171875 74.21875 Q37.3125 74.21875 42.625 73.28125 Q47.953125 72.359375 53.515625 70.515625 Z"
/></font
></defs
><g font-size="14.666666984558" transform="translate(-1806,-807)" fill="white" text-rendering="optimizeSpeed" font-family="&apos;Ubuntu&apos;" shape-rendering="crispEdges" stroke="white"
><rect x="0" width="3872" height="1721" y="0" clip-path="url(#clipPath1)" stroke="none"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-50)" stroke="gray"
><path fill="none" d="M273 108 C273 108 271 112 251 112" clip-path="url(#clipPath2)"
/></g
><g fill="white" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(222,37)" stroke="white"
><circle r="18" clip-path="url(#clipPath3)" cx="19" cy="19" stroke="none"
/><circle fill="none" r="18.5" clip-path="url(#clipPath3)" cx="18.5" cy="18.5" stroke="gray"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(222,37)"
><text x="8" xml:space="preserve" y="24" clip-path="url(#clipPath4)" stroke="none"
>Res</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-50)" stroke="gray"
><path fill="none" d="M222 112 C210 112 221 79 201 79" clip-path="url(#clipPath5)"
/><path fill="none" d="M222 112 C210 112 221 134 201 134" clip-path="url(#clipPath5)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(172,44)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath7)" x2="30" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(172,44)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath8)" stroke="none"
>Div</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-6)" stroke="gray"
><path fill="none" d="M166 90 C154 90 165 79 145 79" clip-path="url(#clipPath10)"
/><path fill="none" d="M166 90 C154 90 165 112 145 112" clip-path="url(#clipPath10)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(116,66)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath11)" x2="36" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(116,66)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath12)" stroke="none"
>Add</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(56,88)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath14)" x2="40" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(56,88)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath15)" stroke="none"
>Num</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-6)" stroke="gray"
><path fill="none" d="M110 79 C98 79 109 68 89 68" clip-path="url(#clipPath16)"
/><path fill="none" d="M110 79 C98 79 109 90 89 90" clip-path="url(#clipPath16)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(60,55)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath11)" x2="36" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(60,55)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath12)" stroke="none"
>Sub</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(0,66)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath14)" x2="40" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(0,66)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath15)" stroke="none"
>Num</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(0,44)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath14)" x2="40" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(0,44)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath15)" stroke="none"
>Num</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(6,-50)" stroke="gray"
><path fill="none" d="M110 79 C98 79 109 68 89 68" clip-path="url(#clipPath16)"
/><path fill="none" d="M110 79 C98 79 109 90 89 90" clip-path="url(#clipPath16)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(116,11)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath11)" x2="36" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(116,11)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath12)" stroke="none"
>Add</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(56,22)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath14)" x2="40" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(56,22)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath15)" stroke="none"
>Num</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(56,0)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath14)" x2="40" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(56,0)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath15)" stroke="none"
>Num</text
></g
></g
></svg
>
<svg width="152pt" height="555pt"
viewBox="0.00 0.00 152.00 554.80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="ComputationalGraph" class="graph" transform="scale(1 1) rotate(0) translate(4 550.8)">
<title>46</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-550.8 148,-550.8 148,4 -4,4"/>
<text text-anchor="middle" x="72" y="-8.2" font-family="Times,serif" font-size="14.00">ComputationalGraph</text>
<!-- 50 -->
<g id="ComputationalGraph/Attribute_int[@roleName=&#39;var1&#39;]" class="node"><title>50</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-546.8 90,-546.8 90,-510.8 144,-510.8 144,-546.8"/>
<text text-anchor="middle" x="117" y="-524.6" font-family="Times,serif" font-size="14.00">var1</text>
</g>
<!-- 51 -->
<g id="ComputationalGraph/Attribute_int[@roleName=&#39;var2&#39;]" class="node"><title>51</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-492.8 90,-492.8 90,-456.8 144,-456.8 144,-492.8"/>
<text text-anchor="middle" x="117" y="-470.6" font-family="Times,serif" font-size="14.00">var2</text>
</g>
<!-- 47 -->
<g id="ComputationalGraph/Script[@roleName=&#39;add&#39;]" class="node"><title>47</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-438.8 90,-438.8 90,-402.8 144,-402.8 144,-438.8"/>
<text text-anchor="middle" x="117" y="-416.6" font-family="Times,serif" font-size="14.00">add</text>
</g>
<!-- 48 -->
<g id="ComputationalGraph/Script[@roleName=&#39;sub&#39;]" class="node"><title>48</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-384.8 90,-384.8 90,-348.8 144,-348.8 144,-384.8"/>
<text text-anchor="middle" x="117" y="-362.6" font-family="Times,serif" font-size="14.00">sub</text>
</g>
<!-- 49 -->
<g id="ComputationalGraph/Script[@roleName=&#39;div&#39;]" class="node"><title>49</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-330.8 90,-330.8 90,-294.8 144,-294.8 144,-330.8"/>
<text text-anchor="middle" x="117" y="-308.6" font-family="Times,serif" font-size="14.00">div</text>
</g>
<!-- 52 -->
<g id="ComputationalGraph/Attribute_int[@roleName=&#39;temp1&#39;]" class="node"><title>52</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-276.8 90,-276.8 90,-240.8 144,-240.8 144,-276.8"/>
<text text-anchor="middle" x="117" y="-254.6" font-family="Times,serif" font-size="14.00">temp1</text>
</g>
<!-- 53 -->
<g id="ComputationalGraph/Attribute_int[@roleName=&#39;temp2&#39;]" class="node"><title>53</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-222.8 90,-222.8 90,-186.8 144,-186.8 144,-222.8"/>
<text text-anchor="middle" x="117" y="-200.6" font-family="Times,serif" font-size="14.00">temp2</text>
</g>
<!-- 54 -->
<g id="ComputationalGraph/Attribute_int[@roleName=&#39;var3&#39;]" class="node"><title>54</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-168.8 90,-168.8 90,-132.8 144,-132.8 144,-168.8"/>
<text text-anchor="middle" x="117" y="-146.6" font-family="Times,serif" font-size="14.00">var3</text>
</g>
<!-- 55 -->
<g id="ComputationalGraph/Attribute_int[@roleName=&#39;temp3&#39;]" class="node"><title>55</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-114.8 90,-114.8 90,-78.8 144,-78.8 144,-114.8"/>
<text text-anchor="middle" x="117" y="-92.6" font-family="Times,serif" font-size="14.00">temp3</text>
</g>
<!-- 56 -->
<g id="ComputationalGraph/Attribute_int[@roleName=&#39;res&#39;]" class="node"><title>56</title>
<polygon fill="#f0f8ff" stroke="black" points="144,-60.8 90,-60.8 90,-24.8 144,-24.8 144,-60.8"/>
<text text-anchor="middle" x="117" y="-38.6" font-family="Times,serif" font-size="14.00">res</text>
</g>
<!-- 46 -->
<g id="ComputationalGraph_node11" class="node"><title>46</title>
<polygon fill="#f0f8ff" stroke="black" points="54,-303.8 0,-303.8 0,-267.8 54,-267.8 54,-303.8"/>
<text text-anchor="middle" x="27" y="-281.6" font-family="Times,serif" font-size="14.00">46</text>
</g>
<!-- 46&#45;&gt;50 -->
<g id="ComputationalGraph_edge1" class="edge"><title>46&#45;&gt;50</title>
<path fill="none" stroke="black" d="M30.2036,-304.026C35.5079,-342.732 51.5116,-435.048 90,-501.8 90.1097,-501.99 90.221,-502.18 90.3339,-502.37"/>
<polygon fill="black" stroke="black" points="96.2612,-510.584 86.7603,-505.108 93.3353,-506.529 90.4094,-502.474 90.4094,-502.474 90.4094,-502.474 93.3353,-506.529 94.0585,-499.841 96.2612,-510.584 96.2612,-510.584"/>
</g>
<!-- 46&#45;&gt;51 -->
<g id="ComputationalGraph_edge2" class="edge"><title>46&#45;&gt;51</title>
<path fill="none" stroke="black" d="M32.3729,-303.904C40.4334,-335.046 59.6384,-400.015 90,-447.8 90.1832,-448.088 90.3699,-448.376 90.5597,-448.664"/>
<polygon fill="black" stroke="black" points="96.7666,-456.743 87.1058,-451.554 93.7204,-452.778 90.6743,-448.813 90.6743,-448.813 90.6743,-448.813 93.7204,-452.778 94.2428,-446.071 96.7666,-456.743 96.7666,-456.743"/>
</g>
<!-- 46&#45;&gt;47 -->
<g id="ComputationalGraph_edge3" class="edge"><title>46&#45;&gt;47</title>
<path fill="none" stroke="black" d="M36.6269,-303.833C47.5998,-325.977 67.808,-364.231 90,-393.8 90.2832,-394.177 90.5712,-394.555 90.8635,-394.933"/>
<polygon fill="black" stroke="black" points="97.465,-402.747 87.5742,-398.012 94.2384,-398.928 91.0118,-395.108 91.0118,-395.108 91.0118,-395.108 94.2384,-398.928 94.4494,-392.204 97.465,-402.747 97.465,-402.747"/>
</g>
<!-- 46&#45;&gt;48 -->
<g id="ComputationalGraph_edge4" class="edge"><title>46&#45;&gt;48</title>
<path fill="none" stroke="black" d="M47.9686,-304.18C60.0923,-315.339 75.7274,-329.731 88.9511,-341.903"/>
<polygon fill="black" stroke="black" points="96.4136,-348.772 86.0083,-345.31 92.7348,-345.385 89.0559,-341.999 89.0559,-341.999 89.0559,-341.999 92.7348,-345.385 92.1035,-338.688 96.4136,-348.772 96.4136,-348.772"/>
</g>
<!-- 46&#45;&gt;49 -->
<g id="ComputationalGraph_edge5" class="edge"><title>46&#45;&gt;49</title>
<path fill="none" stroke="black" d="M54.4029,-293.901C62.481,-296.379 71.5067,-299.149 80.1046,-301.787"/>
<polygon fill="black" stroke="black" points="89.919,-304.798 79.0389,-306.167 85.1389,-303.331 80.3588,-301.865 80.3588,-301.865 80.3588,-301.865 85.1389,-303.331 81.6788,-297.563 89.919,-304.798 89.919,-304.798"/>
</g>
<!-- 46&#45;&gt;52 -->
<g id="ComputationalGraph_edge6" class="edge"><title>46&#45;&gt;52</title>
<path fill="none" stroke="black" d="M54.4029,-277.699C62.481,-275.221 71.5067,-272.451 80.1046,-269.813"/>
<polygon fill="black" stroke="black" points="89.919,-266.802 81.6788,-274.037 85.1389,-268.269 80.3588,-269.735 80.3588,-269.735 80.3588,-269.735 85.1389,-268.269 79.0389,-265.433 89.919,-266.802 89.919,-266.802"/>
</g>
<!-- 46&#45;&gt;53 -->
<g id="ComputationalGraph_edge7" class="edge"><title>46&#45;&gt;53</title>
<path fill="none" stroke="black" d="M47.9686,-267.42C60.0923,-256.261 75.7274,-241.869 88.9511,-229.697"/>
<polygon fill="black" stroke="black" points="96.4136,-222.828 92.1035,-232.912 92.7348,-226.215 89.0559,-229.601 89.0559,-229.601 89.0559,-229.601 92.7348,-226.215 86.0083,-226.29 96.4136,-222.828 96.4136,-222.828"/>
</g>
<!-- 46&#45;&gt;54 -->
<g id="ComputationalGraph_edge8" class="edge"><title>46&#45;&gt;54</title>
<path fill="none" stroke="black" d="M36.6269,-267.767C47.5998,-245.623 67.808,-207.369 90,-177.8 90.2832,-177.423 90.5712,-177.045 90.8635,-176.667"/>
<polygon fill="black" stroke="black" points="97.465,-168.853 94.4494,-179.396 94.2384,-172.672 91.0118,-176.492 91.0118,-176.492 91.0118,-176.492 94.2384,-172.672 87.5742,-173.588 97.465,-168.853 97.465,-168.853"/>
</g>
<!-- 46&#45;&gt;55 -->
<g id="ComputationalGraph_edge9" class="edge"><title>46&#45;&gt;55</title>
<path fill="none" stroke="black" d="M32.3729,-267.696C40.4334,-236.554 59.6384,-171.585 90,-123.8 90.1832,-123.512 90.3699,-123.224 90.5597,-122.936"/>
<polygon fill="black" stroke="black" points="96.7666,-114.857 94.2428,-125.529 93.7204,-118.822 90.6743,-122.787 90.6743,-122.787 90.6743,-122.787 93.7204,-118.822 87.1058,-120.046 96.7666,-114.857 96.7666,-114.857"/>
</g>
<!-- 46&#45;&gt;56 -->
<g id="ComputationalGraph_edge10" class="edge"><title>46&#45;&gt;56</title>
<path fill="none" stroke="black" d="M30.2036,-267.574C35.5079,-228.868 51.5116,-136.552 90,-69.8 90.1097,-69.6097 90.221,-69.4198 90.3339,-69.2302"/>
<polygon fill="black" stroke="black" points="96.2612,-61.0165 94.0585,-71.7589 93.3353,-65.071 90.4094,-69.1256 90.4094,-69.1256 90.4094,-69.1256 93.3353,-65.071 86.7603,-66.4923 96.2612,-61.0165 96.2612,-61.0165"/>
</g>
</g>
</svg>
<svg fill-opacity="1" xmlns:xlink="http://www.w3.org/1999/xlink" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="297" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="155" xmlns="http://www.w3.org/2000/svg" font-family="&apos;Dialog&apos;" font-style="normal" stroke-linejoin="miter" font-size="12" stroke-dashoffset="0" image-rendering="auto"
><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"
/><g
><defs id="defs1"
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"
><path d="M0 0 L2427 0 L2427 1229 L0 1229 L0 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"
><path d="M0 0 L0 255 L397 255 L397 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"
><path d="M0 0 L0 38 L35 38 L35 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"
><path d="M7 12 L7 27 L27 27 L27 12 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"
><path d="M0 0 L0 255 L342 255 L342 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"
><path d="M0 0 L0 19 L10 19 L10 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"
><path d="M0 0 L0 19 L36 19 L36 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"
><path d="M6 2 L6 17 L30 17 L30 2 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"
><path d="M0 0 L0 26 L26 26 L26 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"
><path d="M0 0 L0 143 L228 143 L228 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"
><path d="M0 0 L0 19 L34 19 L34 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"
><path d="M6 2 L6 17 L28 17 L28 2 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"
><path d="M0 0 L0 121 L174 121 L174 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"
><path d="M0 0 L0 19 L32 19 L32 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"
><path d="M6 2 L6 17 L26 17 L26 2 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"
><path d="M0 0 L0 119 L122 119 L122 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"
><path d="M0 0 L0 19 L22 19 L22 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"
><path d="M8 2 L8 17 L15 17 L15 2 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"
><path d="M0 0 L0 209 L286 209 L286 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"
><path d="M0 0 L0 163 L230 163 L230 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"
><path d="M0 0 L0 141 L176 141 L176 0 Z"
/></clipPath
><clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"
><path d="M7 2 L7 17 L15 17 L15 2 Z"
/></clipPath
><font horiz-adv-x="60.0" id="font1"
><font-face ascent="92.822266" font-style="normal" descent="23.583984" units-per-em="100" font-family="sans-serif" font-weight="normal"
/><missing-glyph horiz-adv-x="60.0" d="M4.984375 -17.671875 L4.984375 70.515625 L54.984375 70.515625 L54.984375 -17.671875 L4.984375 -17.671875 ZM10.59375 -12.109375 L49.421875 -12.109375 L49.421875 64.890625 L10.59375 64.890625 L10.59375 -12.109375 Z"
/><glyph unicode="s" horiz-adv-x="52.0" d="M44.28125 53.078125 L44.28125 44.578125 Q40.484375 46.53125 36.375 47.5 Q32.28125 48.484375 27.875 48.484375 Q21.1875 48.484375 17.84375 46.4375 Q14.5 44.390625 14.5 40.28125 Q14.5 37.15625 16.890625 35.375 Q19.28125 33.59375 26.515625 31.984375 L29.59375 31.296875 Q39.15625 29.25 43.1875 25.515625 Q47.21875 21.78125 47.21875 15.09375 Q47.21875 7.46875 41.1875 3.015625 Q35.15625 -1.421875 24.609375 -1.421875 Q20.21875 -1.421875 15.453125 -0.5625 Q10.6875 0.296875 5.421875 2 L5.421875 11.28125 Q10.40625 8.6875 15.234375 7.390625 Q20.0625 6.109375 24.8125 6.109375 Q31.15625 6.109375 34.5625 8.28125 Q37.984375 10.453125 37.984375 14.40625 Q37.984375 18.0625 35.515625 20.015625 Q33.0625 21.96875 24.703125 23.78125 L21.578125 24.515625 Q13.234375 26.265625 9.515625 29.90625 Q5.8125 33.546875 5.8125 39.890625 Q5.8125 47.609375 11.28125 51.796875 Q16.75 56 26.8125 56 Q31.78125 56 36.171875 55.265625 Q40.578125 54.546875 44.28125 53.078125 Z"
/><glyph unicode="e" horiz-adv-x="62.0" d="M56.203125 29.59375 L56.203125 25.203125 L14.890625 25.203125 Q15.484375 15.921875 20.484375 11.0625 Q25.484375 6.203125 34.421875 6.203125 Q39.59375 6.203125 44.453125 7.46875 Q49.3125 8.734375 54.109375 11.28125 L54.109375 2.78125 Q49.265625 0.734375 44.1875 -0.34375 Q39.109375 -1.421875 33.890625 -1.421875 Q20.796875 -1.421875 13.15625 6.1875 Q5.515625 13.8125 5.515625 26.8125 Q5.515625 40.234375 12.765625 48.109375 Q20.015625 56 32.328125 56 Q43.359375 56 49.78125 48.890625 Q56.203125 41.796875 56.203125 29.59375 ZM47.21875 32.234375 Q47.125 39.59375 43.09375 43.984375 Q39.0625 48.390625 32.421875 48.390625 Q24.90625 48.390625 20.390625 44.140625 Q15.875 39.890625 15.1875 32.171875 L47.21875 32.234375 Z"
/><glyph unicode="r" horiz-adv-x="41.0" d="M41.109375 46.296875 Q39.59375 47.171875 37.8125 47.578125 Q36.03125 48 33.890625 48 Q26.265625 48 22.1875 43.046875 Q18.109375 38.09375 18.109375 28.8125 L18.109375 0 L9.078125 0 L9.078125 54.6875 L18.109375 54.6875 L18.109375 46.1875 Q20.953125 51.171875 25.484375 53.578125 Q30.03125 56 36.53125 56 Q37.453125 56 38.578125 55.875 Q39.703125 55.765625 41.0625 55.515625 L41.109375 46.296875 Z"
/><glyph unicode="d" horiz-adv-x="63.0" d="M45.40625 46.390625 L45.40625 75.984375 L54.390625 75.984375 L54.390625 0 L45.40625 0 L45.40625 8.203125 Q42.578125 3.328125 38.25 0.953125 Q33.9375 -1.421875 27.875 -1.421875 Q17.96875 -1.421875 11.734375 6.484375 Q5.515625 14.40625 5.515625 27.296875 Q5.515625 40.1875 11.734375 48.09375 Q17.96875 56 27.875 56 Q33.9375 56 38.25 53.625 Q42.578125 51.265625 45.40625 46.390625 ZM14.796875 27.296875 Q14.796875 17.390625 18.875 11.75 Q22.953125 6.109375 30.078125 6.109375 Q37.203125 6.109375 41.296875 11.75 Q45.40625 17.390625 45.40625 27.296875 Q45.40625 37.203125 41.296875 42.84375 Q37.203125 48.484375 30.078125 48.484375 Q22.953125 48.484375 18.875 42.84375 Q14.796875 37.203125 14.796875 27.296875 Z"
/><glyph unicode="a" horiz-adv-x="61.0" d="M34.28125 27.484375 Q23.390625 27.484375 19.1875 25 Q14.984375 22.515625 14.984375 16.5 Q14.984375 11.71875 18.140625 8.90625 Q21.296875 6.109375 26.703125 6.109375 Q34.1875 6.109375 38.703125 11.40625 Q43.21875 16.703125 43.21875 25.484375 L43.21875 27.484375 L34.28125 27.484375 ZM52.203125 31.203125 L52.203125 0 L43.21875 0 L43.21875 8.296875 Q40.140625 3.328125 35.546875 0.953125 Q30.953125 -1.421875 24.3125 -1.421875 Q15.921875 -1.421875 10.953125 3.296875 Q6 8.015625 6 15.921875 Q6 25.140625 12.171875 29.828125 Q18.359375 34.515625 30.609375 34.515625 L43.21875 34.515625 L43.21875 35.40625 Q43.21875 41.609375 39.140625 45 Q35.0625 48.390625 27.6875 48.390625 Q23 48.390625 18.546875 47.265625 Q14.109375 46.140625 10.015625 43.890625 L10.015625 52.203125 Q14.9375 54.109375 19.578125 55.046875 Q24.21875 56 28.609375 56 Q40.484375 56 46.34375 49.84375 Q52.203125 43.703125 52.203125 31.203125 Z"
/><glyph unicode="l" horiz-adv-x="28.0" d="M9.421875 75.984375 L18.40625 75.984375 L18.40625 0 L9.421875 0 L9.421875 75.984375 Z"
/><glyph unicode="u" horiz-adv-x="63.0" d="M8.5 21.578125 L8.5 54.6875 L17.484375 54.6875 L17.484375 21.921875 Q17.484375 14.15625 20.5 10.265625 Q23.53125 6.390625 29.59375 6.390625 Q36.859375 6.390625 41.078125 11.03125 Q45.3125 15.671875 45.3125 23.6875 L45.3125 54.6875 L54.296875 54.6875 L54.296875 0 L45.3125 0 L45.3125 8.40625 Q42.046875 3.421875 37.71875 1 Q33.40625 -1.421875 27.6875 -1.421875 Q18.265625 -1.421875 13.375 4.4375 Q8.5 10.296875 8.5 21.578125 ZM31.109375 56 L31.109375 56 Z"
/><glyph unicode="m" horiz-adv-x="97.0" d="M52 44.1875 Q55.375 50.25 60.0625 53.125 Q64.75 56 71.09375 56 Q79.640625 56 84.28125 50.015625 Q88.921875 44.046875 88.921875 33.015625 L88.921875 0 L79.890625 0 L79.890625 32.71875 Q79.890625 40.578125 77.09375 44.375 Q74.3125 48.1875 68.609375 48.1875 Q61.625 48.1875 57.5625 43.546875 Q53.515625 38.921875 53.515625 30.90625 L53.515625 0 L44.484375 0 L44.484375 32.71875 Q44.484375 40.625 41.703125 44.40625 Q38.921875 48.1875 33.109375 48.1875 Q26.21875 48.1875 22.15625 43.53125 Q18.109375 38.875 18.109375 30.90625 L18.109375 0 L9.078125 0 L9.078125 54.6875 L18.109375 54.6875 L18.109375 46.1875 Q21.1875 51.21875 25.484375 53.609375 Q29.78125 56 35.6875 56 Q41.65625 56 45.828125 52.96875 Q50 49.953125 52 44.1875 Z"
/><glyph unicode="q" horiz-adv-x="63.0" d="M14.796875 27.296875 Q14.796875 17.390625 18.875 11.75 Q22.953125 6.109375 30.078125 6.109375 Q37.203125 6.109375 41.296875 11.75 Q45.40625 17.390625 45.40625 27.296875 Q45.40625 37.203125 41.296875 42.84375 Q37.203125 48.484375 30.078125 48.484375 Q22.953125 48.484375 18.875 42.84375 Q14.796875 37.203125 14.796875 27.296875 ZM45.40625 8.203125 Q42.578125 3.328125 38.25 0.953125 Q33.9375 -1.421875 27.875 -1.421875 Q17.96875 -1.421875 11.734375 6.484375 Q5.515625 14.40625 5.515625 27.296875 Q5.515625 40.1875 11.734375 48.09375 Q17.96875 56 27.875 56 Q33.9375 56 38.25 53.625 Q42.578125 51.265625 45.40625 46.390625 L45.40625 54.6875 L54.390625 54.6875 L54.390625 -20.796875 L45.40625 -20.796875 L45.40625 8.203125 Z"
/><glyph unicode="Y" horiz-adv-x="61.0" d="M-0.203125 72.90625 L10.40625 72.90625 L30.609375 42.921875 L50.6875 72.90625 L61.28125 72.90625 L35.5 34.71875 L35.5 0 L25.59375 0 L25.59375 34.71875 L-0.203125 72.90625 Z"
/><glyph unicode="c" horiz-adv-x="55.0" d="M48.78125 52.59375 L48.78125 44.1875 Q44.96875 46.296875 41.140625 47.34375 Q37.3125 48.390625 33.40625 48.390625 Q24.65625 48.390625 19.8125 42.84375 Q14.984375 37.3125 14.984375 27.296875 Q14.984375 17.28125 19.8125 11.734375 Q24.65625 6.203125 33.40625 6.203125 Q37.3125 6.203125 41.140625 7.25 Q44.96875 8.296875 48.78125 10.40625 L48.78125 2.09375 Q45.015625 0.34375 40.984375 -0.53125 Q36.96875 -1.421875 32.421875 -1.421875 Q20.0625 -1.421875 12.78125 6.34375 Q5.515625 14.109375 5.515625 27.296875 Q5.515625 40.671875 12.859375 48.328125 Q20.21875 56 33.015625 56 Q37.15625 56 41.109375 55.140625 Q45.0625 54.296875 48.78125 52.59375 Z"
/><glyph unicode="X" horiz-adv-x="68.0" d="M6.296875 72.90625 L16.890625 72.90625 L35.015625 45.796875 L53.21875 72.90625 L63.8125 72.90625 L40.375 37.890625 L65.375 0 L54.78125 0 L34.28125 31 L13.625 0 L2.984375 0 L29 38.921875 L6.296875 72.90625 Z"
/><glyph unicode="b" horiz-adv-x="63.0" d="M48.6875 27.296875 Q48.6875 37.203125 44.609375 42.84375 Q40.53125 48.484375 33.40625 48.484375 Q26.265625 48.484375 22.1875 42.84375 Q18.109375 37.203125 18.109375 27.296875 Q18.109375 17.390625 22.1875 11.75 Q26.265625 6.109375 33.40625 6.109375 Q40.53125 6.109375 44.609375 11.75 Q48.6875 17.390625 48.6875 27.296875 ZM18.109375 46.390625 Q20.953125 51.265625 25.265625 53.625 Q29.59375 56 35.59375 56 Q45.5625 56 51.78125 48.09375 Q58.015625 40.1875 58.015625 27.296875 Q58.015625 14.40625 51.78125 6.484375 Q45.5625 -1.421875 35.59375 -1.421875 Q29.59375 -1.421875 25.265625 0.953125 Q20.953125 3.328125 18.109375 8.203125 L18.109375 0 L9.078125 0 L9.078125 75.984375 L18.109375 75.984375 L18.109375 46.390625 Z"
/></font
></defs
><g font-size="14.666666984558" transform="translate(-1065,-537)" fill="white" text-rendering="optimizeSpeed" font-family="&apos;Ubuntu&apos;" shape-rendering="crispEdges" stroke="white"
><rect x="0" width="2427" height="1229" y="0" clip-path="url(#clipPath1)" stroke="none"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-50)" stroke="gray"
><path fill="none" d="M312 134 C312 134 311 138 291 138" clip-path="url(#clipPath2)"
/></g
><g fill="white" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(262,63)" stroke="white"
><ellipse rx="16.5" ry="18" clip-path="url(#clipPath3)" cx="17.5" cy="19" stroke="none"
/><ellipse clip-path="url(#clipPath3)" fill="none" rx="17" cx="17" ry="18.5" cy="18.5" stroke="gray"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(262,63)"
><text x="7" xml:space="preserve" y="24" clip-path="url(#clipPath4)" stroke="none"
>res</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-50)" stroke="gray"
><path fill="none" d="M256 138 C244 138 255 114 235 114" clip-path="url(#clipPath5)"
/><path fill="none" d="M256 138 C244 138 255 193 235 193" clip-path="url(#clipPath5)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(206,70)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath7)" x2="36" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(206,70)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath8)" stroke="none"
>add</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(8,62)" stroke="gray"
><path fill="none" d="M144 81 C132 81 143 68 123 68" clip-path="url(#clipPath10)"
/><path fill="none" d="M144 81 C132 81 143 92 123 92" clip-path="url(#clipPath10)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(152,125)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath11)" x2="34" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(152,125)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath12)" stroke="none"
>mul</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(8,84)" stroke="gray"
><path fill="none" d="M92 70 C80 70 91 68 71 68" clip-path="url(#clipPath13)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(100,136)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath14)" x2="32" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(100,136)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath15)" stroke="none"
>sqr</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(58,134)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath17)" x2="22" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(58,134)"
><text x="8" xml:space="preserve" y="14" clip-path="url(#clipPath18)" stroke="none"
>Y</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(110,112)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath17)" x2="22" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(110,112)"
><text x="8" xml:space="preserve" y="14" clip-path="url(#clipPath18)" stroke="none"
>c</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-50)" stroke="gray"
><path fill="none" d="M200 114 C188 114 199 81 179 81" clip-path="url(#clipPath19)"
/><path fill="none" d="M200 114 C188 114 199 136 179 136" clip-path="url(#clipPath19)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(150,46)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath7)" x2="36" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(150,46)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath8)" stroke="none"
>add</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,-4)" stroke="gray"
><path fill="none" d="M146 90 C134 90 145 68 125 68" clip-path="url(#clipPath20)"
/><path fill="none" d="M146 90 C134 90 145 101 125 101" clip-path="url(#clipPath20)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(96,68)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath11)" x2="34" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(96,68)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath12)" stroke="none"
>mul</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-50,18)" stroke="gray"
><path fill="none" d="M92 79 C80 79 91 68 71 68" clip-path="url(#clipPath21)"
/><path fill="none" d="M92 79 C80 79 91 90 71 90" clip-path="url(#clipPath21)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(42,79)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath11)" x2="34" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(42,79)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath12)" stroke="none"
>mul</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(0,90)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath17)" x2="22" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(0,90)"
><text x="8" xml:space="preserve" y="14" clip-path="url(#clipPath18)" stroke="none"
>Y</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(0,68)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath17)" x2="22" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(0,68)"
><text x="8" xml:space="preserve" y="14" clip-path="url(#clipPath18)" stroke="none"
>X</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(54,46)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath17)" x2="22" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(54,46)"
><text x="7" xml:space="preserve" y="14" clip-path="url(#clipPath22)" stroke="none"
>b</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-48,-50)" stroke="gray"
><path fill="none" d="M144 81 C132 81 143 68 123 68" clip-path="url(#clipPath10)"
/><path fill="none" d="M144 81 C132 81 143 92 123 92" clip-path="url(#clipPath10)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(96,13)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath11)" x2="34" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(96,13)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath12)" stroke="none"
>mul</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-size="14.666666984558" font-family="&apos;Ubuntu&apos;" transform="translate(-48,-28)" stroke="gray"
><path fill="none" d="M92 70 C80 70 91 68 71 68" clip-path="url(#clipPath13)"
/></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(44,24)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath14)" x2="32" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(44,24)"
><text x="6" xml:space="preserve" y="14" clip-path="url(#clipPath15)" stroke="none"
>sqr</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(2,22)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath17)" x2="22" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(2,22)"
><text x="8" xml:space="preserve" y="14" clip-path="url(#clipPath18)" stroke="none"
>X</text
></g
><g fill="gray" text-rendering="optimizeSpeed" font-family="sans-serif" transform="translate(54,0)" stroke="gray"
><line y2="18" fill="none" x1="0" clip-path="url(#clipPath17)" x2="22" y1="18"
/></g
><g text-rendering="geometricPrecision" shape-rendering="crispEdges" font-family="sans-serif" transform="translate(54,0)"
><text x="7" xml:space="preserve" y="14" clip-path="url(#clipPath22)" stroke="none"
>a</text
></g
></g
></svg
>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment