javaOCR/umlAndStateFlow.xmi
Blizzard Finnegan acf26c67a5
Finish updating of UML and stateflow
Going through documentation again, and ensuring that documentation is
accurate and up to date
2023-03-14 10:04:11 -04:00

1253 lines
158 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.4" xmi.version="1.2" timestamp="2023-03-14T09:59:58" verified="false">
<XMI.header>
<XMI.documentation>
<XMI.exporter>umbrello uml modeller 2.32.2 http://umbrello.kde.org</XMI.exporter>
<XMI.exporterVersion>1.6.19</XMI.exporterVersion>
<XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
</XMI.documentation>
<XMI.metamodel xmi.version="1.4" href="UML.xml" xmi.name="UML"/>
</XMI.header>
<XMI.content>
<UML:Model isAbstract="false" isRoot="false" isSpecification="false" name="UML Model" isLeaf="false" xmi.id="m1">
<UML:Namespace.ownedElement>
<UML:Stereotype isRoot="false" isAbstract="false" namespace="m1" visibility="public" isSpecification="false" name="folder" isLeaf="false" xmi.id="folder"/>
<UML:Stereotype isRoot="false" isAbstract="false" namespace="m1" visibility="public" isSpecification="false" name="enum" isLeaf="false" xmi.id="enum"/>
<UML:Model isRoot="false" isAbstract="false" namespace="m1" visibility="public" isSpecification="false" name="Logical View" isLeaf="false" xmi.id="Logical_View">
<UML:Namespace.ownedElement>
<UML:Package isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" stereotype="folder" isSpecification="false" name="Datatypes" isLeaf="false" xmi.id="Datatypes">
<UML:Namespace.ownedElement>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="char" isLeaf="false" xmi.id="uDoWSpaQhZYMj"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="int" isLeaf="false" xmi.id="u6dG093IE5KRR"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="float" isLeaf="false" xmi.id="uCO3HE6xCfnkW"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="double" isLeaf="false" xmi.id="uCrL5Q2hyX5sQ"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="bool" isLeaf="false" xmi.id="ufLcoOmblD5xA"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="string" isLeaf="false" xmi.id="uC91Z5I6GvBha"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="unsigned char" isLeaf="false" xmi.id="upfnNUZyNFmjz"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="signed char" isLeaf="false" xmi.id="ugNO2pJM1hFz7"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="unsigned int" isLeaf="false" xmi.id="uKCE2OEBE2Raz"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="signed int" isLeaf="false" xmi.id="uzJVMVJLwomgo"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="short int" isLeaf="false" xmi.id="uONsxKyOkUqSG"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="unsigned short int" isLeaf="false" xmi.id="ufjpqsbculg16"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="signed short int" isLeaf="false" xmi.id="uByu3v8UDLNuV"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="long int" isLeaf="false" xmi.id="u6DR57G26MnPK"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="signed long int" isLeaf="false" xmi.id="uwGdEGKab0jTL"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="unsigned long int" isLeaf="false" xmi.id="uFMaK6PVQ2sTp"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="long double" isLeaf="false" xmi.id="u12LSDcvfbGFa"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" isActive="false" name="wchar_t" isLeaf="false" xmi.id="uXdpgpHjS8pIQ"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="boolean" isLeaf="false" xmi.id="uUFR10GCed46Q"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="byte" isLeaf="false" xmi.id="udTQ2y9M1GLg9"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="short" isLeaf="false" xmi.id="usyIvFLIaNduc"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="long" isLeaf="false" xmi.id="uRiiCWnAy5RVe"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="String" isLeaf="false" xmi.id="uMYRTkE3rxR2B"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Integer" isLeaf="false" xmi.id="uDhbC7HamBUXf"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Character" isLeaf="false" xmi.id="uUBHYF2VTs95m"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Boolean" isLeaf="false" xmi.id="umD3Y5YgpHTL5"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Float" isLeaf="false" xmi.id="uEXdFpDPOdfpV"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Double" isLeaf="false" xmi.id="uQwhrzourTSFc"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Byte" isLeaf="false" xmi.id="uMX44yrUJSq2Z"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Short" isLeaf="false" xmi.id="ujXLj0TVNtFs1"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Long" isLeaf="false" xmi.id="uppdevdmKoAeT"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="StringBuffer" isLeaf="false" xmi.id="uN4zCdvj7rsZz"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="StringBuilder" isLeaf="false" xmi.id="uBwekzeWX8icG"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="java.util.concurrent.locks.Lock" isSpecification="false" name="Lock" isLeaf="false" xmi.id="u8ik9hKNzgKcH"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Scanner" isLeaf="false" xmi.id="uyTBx9P7f4VjF"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder" isSpecification="false" name="FileBasedConfigurationBuilder" isLeaf="false" xmi.id="u53NpBDIiJKLh"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.apache.commons.configuration2.INIConfiguration" isSpecification="false" name="INIConfiguration" isLeaf="false" xmi.id="ue50uK6Axr5uJ"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.apache.poi.hssf.usermodel.HSSFCellStyle" isSpecification="false" name="HSSFCellStyle" isLeaf="false" xmi.id="u1Ano2L3MNqB9"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.apache.poi.hssf.usermodel.HSSFSheet" isSpecification="false" name="HSSFSheet" isLeaf="false" xmi.id="unYkf3XdlbOvG"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.apache.poi.hssf.usermodel.HSSFWorkbook" isSpecification="false" name="HSSFWorkbook" isLeaf="false" xmi.id="uCN5vhsamIMZS"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="DateTimeFormatter" isLeaf="false" xmi.id="u3iolu1KBaeLC"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="BufferedWriter" isLeaf="false" xmi.id="uI35GxgSf15Ke"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="PrintWriter" isLeaf="false" xmi.id="uBH80PyFvNP0W"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="FileWriter" isLeaf="false" xmi.id="uBxtki3mYxNXH"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="com.pi4j.io.gpio.digital.DigitalInput&#xa;" isSpecification="false" name="DigitalInput" isLeaf="false" xmi.id="um5BRQatdPbwa"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="com.pi4j.io.gpio.digital.DigitalOutput" isSpecification="false" name="DigitalOutput" isLeaf="false" xmi.id="u21ZDyvoF16O4"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="com.pi4j.context.Context&#xa;&#xa;Used for creating DigitalInput and DigitalOutput objects." isSpecification="false" name="Context" isLeaf="false" xmi.id="uQwi67sMHYYH8"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Thread" isLeaf="false" xmi.id="unl1k1K0LtpWx"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.bytedeco.javacv.FrameGrabber&#xa;&#xa;OpenCV Camera object" isSpecification="false" name="FrameGrabber" isLeaf="false" xmi.id="uOY0ocupt3vUN"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Map" isLeaf="false" xmi.id="usELT5EPkFTAY"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="List" isLeaf="false" xmi.id="uF3615aHJR1V4"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.bytedeco.opencv.opencv_core.Mat&#xa;&#xa;Image, stored in an OpenCV matrix" isSpecification="false" name="Mat" isLeaf="false" xmi.id="uTFuxlA0IbjaA"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="File" isLeaf="false" xmi.id="uLtWoZg2r6vK5"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.bytedeco.tesseract.TessBaseAPI&#xa;&#xa;API object type for interacting with Tesseract" isSpecification="false" name="TessBaseAPI" isLeaf="false" xmi.id="uM9KJKNeM6Kog"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" comment="org.bytedeco.javacv.OpenCVFrameConverter.ToMat" isSpecification="false" name="OpenCVFrameConverter " isLeaf="false" xmi.id="uBAEhogVaCinW"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Rect" isLeaf="false" xmi.id="uVfGuVVTLsk6z"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Set" isLeaf="false" xmi.id="u3L4GKc1rVusd"/>
<UML:DataType isRoot="false" isAbstract="false" namespace="Datatypes" visibility="public" isSpecification="false" name="Throwable" isLeaf="false" xmi.id="uDuQErHgUBVcM"/>
</UML:Namespace.ownedElement>
</UML:Package>
<UML:Enumeration isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" stereotype="enum" isSpecification="false" name="ConfigProperties" isLeaf="false" xmi.id="uWQfGitACJCjJ">
<UML:Enumeration.literal>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Whether a camera should be used when running tests." value="(&quot;Camera active&quot;,&quot;active&quot;,1.0)" isSpecification="false" name="ACTIVE" isLeaf="false" xmi.id="uvn8JayutLubu"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Homw many frames to composite together while processing this camera's image." value="(&quot;Composite frame count&quot;,compositeCount&quot;,5.0)" isSpecification="false" name="COMPOSITE_FRAMES" isLeaf="false" xmi.id="u73SthAH5zOdg"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Whether or not to crop the image during processing." value="(&quot;Toggle crop&quot;,&quot;crop&quot;,1.0)" isSpecification="false" name="CROP" isLeaf="false" xmi.id="uf89LbU8P2tU9"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Height of the newly cropped image" value="(&quot;Crop Height&quot;,&quot;cropH&quot;,50.0)" isSpecification="false" name="CROP_H" isLeaf="false" xmi.id="ucE3ge21K40yx"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Width of the newly cropped image." value="(&quot;Crop Width&quot;,&quot;cropW&quot;,80.0)" isSpecification="false" name="CROP_W" isLeaf="false" xmi.id="ujmy3pgeQ26Qi"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="X coordinate of the top-left corner of the newly cropped image" value="(&quot;Crop X&quot;,&quot;cropX&quot;,275.0)" isSpecification="false" name="CROP_X" isLeaf="false" xmi.id="umY8MrEM1VFve"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Y coordinate of the top-left corner of the newly cropped image." value="(&quot;Crop Y&quot;,&quot;cropY&quot;,205.0)" isSpecification="false" name="CROP_Y" isLeaf="false" xmi.id="uDmhLJC7JhotK"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Whether or not to press the button on the device twice when under test." value="(&quot;Prime device&quot;,&quot;prime&quot;,0.0)" isSpecification="false" name="PRIME" isLeaf="false" xmi.id="uRWCAbjEUsefQ"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Whether or not to threshold the image during processing." value="(&quot;Toggle Threshold&quot;,&quot;threshold&quot;,1.0)" isSpecification="false" name="THRESHOLD" isLeaf="false" xmi.id="uiMqHtn48FYKm"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uWQfGitACJCjJ" visibility="public" comment="Where the threshold point should land." value="(&quot;Threshold value&quot;,&quot;thresholdValue&quot;,45.0)" isSpecification="false" name="THRESHOLD_VALUE" isLeaf="false" xmi.id="ukyBP0PULsi35"/>
</UML:Enumeration.literal>
</UML:Enumeration>
<UML:Enumeration isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" comment="Final state of any one movement." stereotype="enum" isSpecification="false" name="MovementFacade.FinalState" isLeaf="false" xmi.id="uhoYk9h6KpMug">
<UML:Enumeration.literal>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uhoYk9h6KpMug" visibility="public" isSpecification="false" name="FAILED" isLeaf="false" xmi.id="unJPOlWUL5Dmv"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uhoYk9h6KpMug" visibility="public" isSpecification="false" name="SAFE" isLeaf="false" xmi.id="ulhOoUKvgvVVe"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uhoYk9h6KpMug" visibility="public" isSpecification="false" name="UNSAFE" isLeaf="false" xmi.id="u5jKNi1695At9"/>
</UML:Enumeration.literal>
</UML:Enumeration>
<UML:Enumeration isRoot="false" isAbstract="false" namespace="Logical_View" visibility="private" stereotype="enum" isSpecification="false" name="Cli.Menus" isLeaf="false" xmi.id="uX8xl8SknIiop">
<UML:Enumeration.literal>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uX8xl8SknIiop" visibility="public" isSpecification="false" name="CAMERA" isLeaf="false" xmi.id="uXEgtMa6ojh5v"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uX8xl8SknIiop" visibility="public" isSpecification="false" name="MAIN" isLeaf="false" xmi.id="uumycodD0FI2b"/>
<UML:EnumerationLiteral isRoot="false" isAbstract="false" namespace="uX8xl8SknIiop" visibility="public" isSpecification="false" name="OTHER" isLeaf="false" xmi.id="uykUAZaKuvRtj"/>
</UML:Enumeration.literal>
</UML:Enumeration>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" isSpecification="false" name="TesseractFacade" isLeaf="false" xmi.id="uszTbwciTSOHV">
<UML:Classifier.feature>
<UML:Attribute visibility="private" comment="API object for Tesseract. Initialised using OCR_ENGINE_MODE, OCR_LANGUAGE, and OCR_LANGUAGE_LOCATION" type="uM9KJKNeM6Kog" isSpecification="false" ownerScope="classifier" name="api" xmi.id="uMd0VTCwpENXT"/>
<UML:Attribute visibility="private" comment="OCR engine mode. &#xa;&#xa;From https://ai-facets.org/tesseract-ocr-best-practices/: &#xa;0: Legacy engine only &#xa;1: Neural nets Long Short-Term Memory (LSTM) engine only. This form of neural network has feedback, as well as feedforward within the design, allowing the neural network to learn from itself. &#xa;2: Legacy + LSTM engines &#xa;3: Default, based on what is available &#xa;&#xa;As I didn't write the training data, and don't actually know what kind of network the training set requires, this value is set to default." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="OCR_ENGINE_MODE" initialValue="3" xmi.id="uUWwF5fgtv9QG"/>
<UML:Attribute visibility="private" comment="OCR language name (if available by default), or training data filename." type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="OCR_LANGUAGE" initialValue="&quot;Pro6_temp_test&quot;" xmi.id="uZhvZ4Q9CC10o"/>
<UML:Attribute visibility="private" comment="Location on the file system that the OCR languages are stored. This value requires that the folder &quot;tessdata&quot; be in the same location as your current working directory." type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="OCR_LANGUAGE_LOCATION" initialValue="&quot;tessdata&quot;" xmi.id="u0Q4w9Mkq75IR"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Converts an image file to a double." isSpecification="false" ownerScope="classifier" name="imageToDouble" isLeaf="false" isInline="false" xmi.id="uZ4qzz259Z3S3" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uCrL5Q2hyX5sQ" xmi.id="udXXVGkwYQRZR"/>
<UML:Parameter visibility="private" comment="File containing the image to be parsed." value="" type="uLtWoZg2r6vK5" isSpecification="false" name="file" xmi.id="umHhjQ5kMcwOQ"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" comment="Facade for the OpenCV package. Performs image capture as well as rudamentary image manipulation." isSpecification="false" name="OpenCVFacade" isLeaf="false" xmi.id="uxutGWImUrqt7">
<UML:Classifier.feature>
<UML:Attribute visibility="private" comment="FourCC code of the image generated by the camera being communicated with.&#xa;&#xa;The camera currently in use (Arducam 8MP Sony IMX219, SKU B0196) does not support UVC codec declaration, but this is required for OpenCV to function properly." type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="CAMERA_CODEC" initialValue="&quot;mjpg&quot;" xmi.id="usQIEDGKPGhT9"/>
<UML:Attribute visibility="private" comment="Name of custom-created symlink for all cameras.&#xa;&#xa;This configuration must be done manually on initial install." type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="CAMERA_FILE_PREFIX" initialValue="&quot;video-cam-&quot;" xmi.id="uT50OpN6jOap5"/>
<UML:Attribute visibility="private" comment="Storage of all cameras.&#xa;&#xa;Key: String (camera name)&#xa;Value: FrameGrabber (camera object)" type="usELT5EPkFTAY" isSpecification="false" ownerScope="classifier" name="cameraMap" xmi.id="uCsd18DlWrWRF"/>
<UML:Attribute visibility="private" comment="Height of the image created by the camera.&#xa;&#xa;The camera currently in use (Arducam 8MP Sony IMX219, SKU B0196) does not support UVC codec declaration, but this is required for OpenCV to function properly." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="IMG_HEIGHT" initialValue="600" xmi.id="u6cDpzouIuCbE"/>
<UML:Attribute visibility="private" comment="Width of the image created by the camera.&#xa;&#xa;The camera currently in use (Arducam 8MP Sony IMX219, SKU B0196) does not support UVC codec declaration, but this is required for OpenCV to function properly." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="IMG_WIDTH" initialValue="800" xmi.id="uwNi7W5uRzqkt"/>
<UML:Attribute visibility="private" comment="Object used to convert between Mats, Frames, and IplImages. (This is currently only in use for saving to a file)." type="uBAEhogVaCinW" isSpecification="false" name="MAT_CONVERTER" xmi.id="ucOvTSRQwQ2kr"/>
<UML:Attribute visibility="private" type="ug4xpByAYlb4g" isSpecification="false" name="new_attribute" xmi.id="uOMz2SVLu1Ltn"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Process an image from the defined camera, using config defaults, and saving to [defaultImageLocation]/config/" isSpecification="false" ownerScope="classifier" name="completeProcess" isLeaf="false" isInline="false" xmi.id="uPf65fmeKYRyL" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uLtWoZg2r6vK5" xmi.id="uQuU38Dl5N11o"/>
<UML:Parameter visibility="private" comment="Name of the camera to start processing." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uR7jYl3RaxL2R"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Processes image from the given camera, using the config values." isSpecification="false" ownerScope="classifier" name="completeProcess" isLeaf="false" isInline="false" xmi.id="uN5CzQSYAnEuI" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uLtWoZg2r6vK5" xmi.id="u126wTnwMbCWG"/>
<UML:Parameter visibility="private" comment="Name of the camera to take a picture from." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uMwpP9q2T4wYn"/>
<UML:Parameter visibility="private" comment="Whether to crop the image" value="" type="uUFR10GCed46Q" isSpecification="false" name="crop" xmi.id="u1ND4CK4bXJtI"/>
<UML:Parameter visibility="private" comment="Whether to threshold the image" value="" type="uUFR10GCed46Q" isSpecification="false" name="threshold" xmi.id="uRBQMxLH8OVnD"/>
<UML:Parameter visibility="private" comment="Number of frames to composite together" value="" type="u6dG093IE5KRR" isSpecification="false" name="compositeFrames" xmi.id="u1Fh7xxnyMDrY"/>
<UML:Parameter visibility="private" comment="Name of the outgoing file" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="saveLocation" xmi.id="umNZq1QFVx6im"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Process image from defined camera, using config defaults. Saves to a defined location. Assumes you want to both crop and threshold." isSpecification="false" ownerScope="classifier" name="completeProcess" isLeaf="false" isInline="false" xmi.id="uC99YehW24GIL" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uLtWoZg2r6vK5" xmi.id="uzGpnpa2Z76mf"/>
<UML:Parameter visibility="private" comment="Name of the camera to take a picture from." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="ukxbjrIFPdlty"/>
<UML:Parameter visibility="private" comment="Name of the outgoing file" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="saveLocation" xmi.id="uqfsVlt6I02au"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Compose several images together.&#xa;Crops and thresholds image dependent upon boolean toggles." isSpecification="false" ownerScope="classifier" name="compose" isLeaf="false" isInline="false" xmi.id="uDDmEZMsSRNys" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uTFuxlA0IbjaA" xmi.id="uAIUXP3ia1zFg"/>
<UML:Parameter visibility="private" comment="List&lt;Mat> of images" value="" type="uF3615aHJR1V4" isSpecification="false" name="images" xmi.id="u0ORvqMC53t2d"/>
<UML:Parameter visibility="private" comment="Whether to put the image through a binary threshold" value="" type="uUFR10GCed46Q" isSpecification="false" name="threshold" xmi.id="uAXF0IcZB524V"/>
<UML:Parameter visibility="private" comment="Whether to crop the image" value="" type="uUFR10GCed46Q" isSpecification="false" name="crop" xmi.id="ulCCd0HNjjmPf"/>
<UML:Parameter visibility="private" comment="Name of the camera the images came from (used to determine crop sizing and threshold value)" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uhHv5Mw6l2Qh9"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Crop a given image, based on dimensions in the configuration." isSpecification="false" ownerScope="classifier" name="crop" isLeaf="false" isInline="false" xmi.id="ucT7DSSA4bprm" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uTFuxlA0IbjaA" xmi.id="uDIMYYQx1eQwO"/>
<UML:Parameter visibility="private" comment="image taken from the camera" value="" type="uTFuxlA0IbjaA" isSpecification="false" name="image" xmi.id="uVkJdNCzCj4Th"/>
<UML:Parameter visibility="private" comment="name of the camera the image is from" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uPy29ybzmwI8g"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Crop the given image, based on dimentions defined in a Rect" isSpecification="false" ownerScope="classifier" name="crop" isLeaf="false" isInline="false" xmi.id="uwUQqQE7Opx6e" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uTFuxlA0IbjaA" xmi.id="uoEUaUEejKtUE"/>
<UML:Parameter visibility="private" comment="Image taken from the camera" value="" type="uTFuxlA0IbjaA" isSpecification="false" name="image" xmi.id="urC5MOrqjl0om"/>
<UML:Parameter visibility="private" comment="The region of interest to crop the image to" value="" type="uVfGuVVTLsk6z" isSpecification="false" name="roi" xmi.id="unFlHvwWKrTF3"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Getter for all camera names.&#xa;Returns a Set&lt;String>" isSpecification="false" ownerScope="classifier" name="getCameraNames" isLeaf="false" isInline="false" xmi.id="u62sIIBKT4rQR" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="u3L4GKc1rVusd" xmi.id="uKdeYXMqbGjQk"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Default camera creator function. Creates a camera, and adds it to the cameraMap. Uses values in constants." isSpecification="false" ownerScope="classifier" name="newCamera" isLeaf="false" isInline="false" xmi.id="u7dL91xr3ZtpB" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="name of the new camera" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="name" xmi.id="uDnb6QHMSSPtU"/>
<UML:Parameter visibility="private" comment="Location of the camera's reference file &#xa;&#xa;ex. &quot;/dev/video-cam-left&quot;" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="location" xmi.id="usHHETqhd8Wwk"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Camera creation function, with custom width, height, and codec. Creates the camera as defined, and adds it to cameraMap." isSpecification="false" ownerScope="classifier" name="newCamera" isLeaf="false" isInline="false" xmi.id="uX2PuJKNHcwqe" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="Name of the new camera" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="name" xmi.id="udmTjZ2q2Cv2z"/>
<UML:Parameter visibility="private" comment="Location of the camera's reference file&#xa;&#xa;ex. &quot;/dev/video-cam-left&quot;" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="location" xmi.id="uwWjTXEyCp5Sy"/>
<UML:Parameter visibility="private" comment="Width of the camera's image, in pixels" value="" type="u6dG093IE5KRR" isSpecification="false" name="width" xmi.id="uypKW6wHGah1h"/>
<UML:Parameter visibility="private" comment="Height of the camera's image, in pixels" value="" type="u6dG093IE5KRR" isSpecification="false" name="height" xmi.id="ufb393jjo1gVk"/>
<UML:Parameter visibility="private" comment="Codec the camera's stream is encoded in." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="codec" xmi.id="uQgwbclt9sIJV"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Save input image at the location given" isSpecification="false" ownerScope="classifier" name="saveImage" isLeaf="false" isInline="false" xmi.id="uc06GU5TBKCOt" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uLtWoZg2r6vK5" xmi.id="uM4Rm1KuzT6Ka"/>
<UML:Parameter visibility="private" comment="Image to be saved" value="" type="uTFuxlA0IbjaA" isSpecification="false" name="image" xmi.id="uYW3QvXbdhgnr"/>
<UML:Parameter visibility="private" comment="Where to save the image" value="" type="uAwVIyVVNjSlp" isSpecification="false" name="fileLocation" xmi.id="ujKDeTmACNjnb"/>
<UML:Parameter visibility="private" comment="Name of the camera the image came from." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="up5JIVVsnNiEo"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Set the crop size and location by way of a pop-up window." isSpecification="false" ownerScope="classifier" name="setCrop" isLeaf="false" isInline="false" xmi.id="u01Gb7GncAwwu" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="The name of the camera being configured." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uF6ZQgcA7Nbkf"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Show current processed image to the CLI user." isSpecification="false" ownerScope="classifier" name="showImage" isLeaf="false" isInline="false" xmi.id="uSEB1V0eCxOVI" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uLtWoZg2r6vK5" xmi.id="uTHVVfaCWgsOD"/>
<UML:Parameter visibility="private" comment="The name of the camera being previewed." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uKWB5D84on7rM"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Take multiple pictures in quick succession." isSpecification="false" name="takeBurst" isLeaf="false" isInline="false" xmi.id="uXqgLkMJUXyG9" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uF3615aHJR1V4" xmi.id="u3bkQlGIFizpz"/>
<UML:Parameter visibility="private" comment="Name of the camera to take a picture with" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uiwK5jPtrdKCx"/>
<UML:Parameter visibility="private" comment="Number of images to take" value="" type="u6dG093IE5KRR" isSpecification="false" name="frameCount" xmi.id="uuXVAJmIR1Ggc"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Wrapper function for native &quot;take picture&quot; function. Image is immediately converted to greyscale to improve RAM footprint." isSpecification="false" name="takePicture" isLeaf="false" isInline="false" xmi.id="u36iwSk1gAsEL" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uTFuxlA0IbjaA" xmi.id="uIYN4pIvHp2Fw"/>
<UML:Parameter visibility="private" comment="Name of the camera to take a picture with." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uiAjgs8P56QsS"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Put the given image throug ha binary threshold. This reduces the image from greyscale to only pure black and white pixels. &#xa;&#xa;Uses config values for theshold point." isSpecification="false" ownerScope="classifier" name="thresholdImage" isLeaf="false" isInline="false" xmi.id="uurFGK0TAq7zx" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uTFuxlA0IbjaA" xmi.id="uq3K7NPa5PffY"/>
<UML:Parameter visibility="private" comment="Image taken from the camera" value="" type="uTFuxlA0IbjaA" isSpecification="false" name="image" xmi.id="uE6jLBtja2cZI"/>
<UML:Parameter visibility="private" comment="Name of the camera the image came from" value="" type="uAwVIyVVNjSlp" isSpecification="false" name="cameraName" xmi.id="u3zbFvmc614rj"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Put the given image through a binary threshold, using the given threshold value." isSpecification="false" ownerScope="classifier" name="thresholdImage" isLeaf="false" isInline="false" xmi.id="uekZfs8wb856g" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uTFuxlA0IbjaA" xmi.id="ugvtWT8GZtUUu"/>
<UML:Parameter visibility="private" comment="Image to threshold" value="" type="uTFuxlA0IbjaA" isSpecification="false" name="image" xmi.id="unEzui9kYbZV7"/>
<UML:Parameter visibility="private" comment="Middle of the binary threshold.&#xa;&#xa;Acceptable values are between 0 and 255.&#xa;&#xa;Any pixels with a brightness above this value will be made 255 (white).&#xa;Any pixels with a brightness below this value will be made 0 (black)." value="" type="uCrL5Q2hyX5sQ" isSpecification="false" name="thresholdValue" xmi.id="uN78KesBdRIZZ"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" isSpecification="false" name="OpenCVFrameConverter" isLeaf="false" xmi.id="uowtOePSx4RnM"/>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" isSpecification="false" name="ErrorLogging" isLeaf="false" xmi.id="uaq5wFieCACsK">
<UML:Classifier.feature>
<UML:Attribute visibility="private" comment="Object used for buffering file write functions, for improved efficiency." type="uI35GxgSf15Ke" isSpecification="false" ownerScope="classifier" name="bw" xmi.id="u6zsQtVXJeK9I"/>
<UML:Attribute visibility="private" comment="Object used to format the UNIX timestamps in log files into standard ISO format." type="u3iolu1KBaeLC" isSpecification="false" ownerScope="classifier" name="dateTime" xmi.id="uWQEWtZl7G4tJ"/>
<UML:Attribute visibility="public" comment="Object used to format UNIX timestamps into a readable, filesystem-safe values." type="u3iolu1KBaeLC" isSpecification="false" ownerScope="classifier" name="fileDatetime" xmi.id="umTPGzsTewAMH"/>
<UML:Attribute visibility="private" comment="Object called to write to the log file." type="uBH80PyFvNP0W" isSpecification="false" ownerScope="classifier" name="fileOut" xmi.id="uPCAY3ou1J05g"/>
<UML:Attribute visibility="private" comment="Object used to write streams of characters to the file." type="uBxtki3mYxNXH" isSpecification="false" ownerScope="classifier" name="fw" xmi.id="uwq5HGOI8zXHp"/>
<UML:Attribute visibility="private" comment="Name of the location for the logfile." type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="logFile" xmi.id="umM0MefO6Nslx"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Logs thrown error, including stack trace if available." isSpecification="false" ownerScope="classifier" name="logError" isLeaf="false" isInline="false" xmi.id="ubbXibbgDeWRE" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="Error to be logged, including stack trace if available." value="" type="uDuQErHgUBVcM" isSpecification="false" name="error" xmi.id="uBSFjgYjCcXlx"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Logs data manually defined by developer." isSpecification="false" ownerScope="classifier" name="logError" isLeaf="false" isInline="false" xmi.id="uQk2yP91hB32b" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="Any data that the developer wishes to be logged." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="error" xmi.id="uUpFwPvmqQ5Un"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Closes all open logs." isSpecification="false" ownerScope="classifier" name="closeLogs" isLeaf="false" isInline="false" xmi.id="uHA8XrxTWFz1A" isOverride="false"/>
</UML:Classifier.feature>
</UML:Class>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" isSpecification="false" name="String " isLeaf="false" xmi.id="uAwVIyVVNjSlp"/>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" isSpecification="false" name="MovementFacade" isLeaf="false" xmi.id="uiXctorvzHidz">
<UML:Classifier.feature>
<UML:Attribute visibility="private" comment="Raspberry Pi GPIO address for the lower limit switch. " type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="LOWER_LIMIT_ADDR" initialValue="24" xmi.id="urq8f5SKTIpyb"/>
<UML:Attribute visibility="private" comment="Output pin address for motor direction control." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="MOTOR_DIRECTION_ADDR" initialValue="27" xmi.id="uRFPkG1OcyQzH"/>
<UML:Attribute visibility="private" comment="Output pin address for motor power control." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="MOTOR_ENABLE_ADDR" initialValue="22" xmi.id="uXafv7Bqv1vlj"/>
<UML:Attribute visibility="private" comment="Output pin address for piston control." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="PISTON_ADDR" initialValue="25" xmi.id="u5pOlwHMbAkbC"/>
<UML:Attribute visibility="private" comment="Input pin address for the run switch." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="RUN_SWITCH_ADDR" initialValue="10" xmi.id="uHBe39GldXDOi"/>
<UML:Attribute visibility="private" comment="Input pin address for the upper limit switch." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="UPPER_LIMIT_ADDR" initialValue="23" xmi.id="u8J4qyzhXYsg3"/>
<UML:Attribute visibility="private" comment="Lower limit switch object.&#xa;Active-high." type="um5BRQatdPbwa" isSpecification="false" ownerScope="classifier" name="lowerLimit" xmi.id="umpKaM853vbob"/>
<UML:Attribute visibility="private" comment="Upper limit switch object.&#xa;Active-high." type="um5BRQatdPbwa" isSpecification="false" ownerScope="classifier" name="upperLimit" xmi.id="utwJCIWg03ZAz"/>
<UML:Attribute visibility="private" comment="Run switch object. Active-low." type="um5BRQatdPbwa" isSpecification="false" ownerScope="classifier" name="runSwitch" xmi.id="uyM1wKLI2qKzr"/>
<UML:Attribute visibility="private" comment="Motor enable object. Active-high." type="u21ZDyvoF16O4" isSpecification="false" ownerScope="classifier" name="motorEnable" xmi.id="uscGkGT6pA18U"/>
<UML:Attribute visibility="private" comment="Motor direction GPIO pin object.&#xa;&#xa;High drives the motor upwards, low drives the motor downwards." type="u21ZDyvoF16O4" isSpecification="false" ownerScope="classifier" name="motorDirection" xmi.id="uhGnDpzud0eKy"/>
<UML:Attribute visibility="private" comment="Piston control GPIO pin object. &#xa;&#xa;High extends the piston, low retracts the piston." type="u21ZDyvoF16O4" isSpecification="false" ownerScope="classifier" name="pistonActivate" xmi.id="uhGqwGvjvNDrF"/>
<UML:Attribute visibility="private" comment="Pi4J API interaction object. Used to initialise DigitalInput and DigitalOutput objects, closed on exit." type="uQwi67sMHYYH8" isSpecification="false" ownerScope="classifier" name="pi4j" xmi.id="uwLa88M9lPXpz"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="DigitalInput builder function" isSpecification="false" ownerScope="classifier" name="inputBuilder" isLeaf="false" isInline="false" xmi.id="uJW8yFYg3muFK" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="um5BRQatdPbwa" xmi.id="uHYadjLJgEFgX"/>
<UML:Parameter visibility="private" comment="BCM-formatted GPIO address" value="" type="u6dG093IE5KRR" isSpecification="false" name="address" xmi.id="uvMQviEQZo2Eo"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="DigitalOutput builder function." isSpecification="false" ownerScope="classifier" name="outputBuilder" isLeaf="false" isInline="false" xmi.id="uee8kI2xnR8SV" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="u21ZDyvoF16O4" xmi.id="uQsTrKvIgAcA1"/>
<UML:Parameter visibility="private" comment="BCM-formatted GPIO pin address" value="" type="u6dG093IE5KRR" isSpecification="false" name="address" xmi.id="uRSxQiYkpY2WT"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Function used to locate the fixture's motor. Always sends the motor back to the top limit switch, and counts the number of polls it takes to get there." isSpecification="false" ownerScope="classifier" name="resetArm" isLeaf="false" isInline="false" xmi.id="uxvjOWjAixlgp" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="u6dG093IE5KRR" xmi.id="uwVffPf9Ww8iS"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Used to programmatically measure the distance between the upper and lower limit switches, in polls. This is done at initialisation to ensure safe travel with gotoLimit, goDown and goUp" isSpecification="false" ownerScope="classifier" name="findDistance" isLeaf="false" isInline="false" xmi.id="uVMQYGF8r6f7y" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Sends the fixture to a given limit switch. Detects if the limit switch is active before activating the motor." isSpecification="false" ownerScope="classifier" name="gotoLimit" isLeaf="false" isInline="false" xmi.id="uqtEpHdA20MJO" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="Whether to send the fixture up or down." value="" type="uUFR10GCed46Q" isSpecification="false" name="moveUp" xmi.id="uPu78CyGxcxSD"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Sends the fixture to the lower limit switch." isSpecification="false" ownerScope="classifier" name="goDown" isLeaf="false" isInline="false" xmi.id="uG2ml0g1zFd1n" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Send the fixture to the upper limit switch." isSpecification="false" ownerScope="classifier" name="goUp" isLeaf="false" isInline="false" xmi.id="uwCf3NOOs6bOI" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Extends the piston for 1 second, pushing the button on the DUT." isSpecification="false" ownerScope="classifier" name="pressButton" isLeaf="false" isInline="false" xmi.id="u8UPYdPVsfJ9L" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Function to move the fixture once for an iteration." isSpecification="false" name="iterationMovement" isLeaf="false" isInline="false" xmi.id="uKhEpTnM8aYgW" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="Whether or not to wake up the DUT at the upswing of the fixture." value="" type="uUFR10GCed46Q" isSpecification="false" name="prime" xmi.id="uZ2ov7YVrMOcR"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Closes connections to GPIO pins, cleanly." isSpecification="false" ownerScope="classifier" name="closeGPIO" isLeaf="false" isInline="false" xmi.id="uQaAIayfZmRTr" isOverride="false"/>
</UML:Classifier.feature>
</UML:Class>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" comment="Saves AOL data and images to Excel file for easy parsing." isSpecification="false" name="DataSaving" isLeaf="false" xmi.id="uibCosoM5C9ES">
<UML:Classifier.feature>
<UML:Attribute visibility="private" comment="File object representing the location of the final output file." type="uLtWoZg2r6vK5" isSpecification="false" ownerScope="classifier" name="outputFile" xmi.id="uzC7XxxxgdanH"/>
<UML:Attribute visibility="private" comment="Sheet object defining what sheet within the workbook we are working within." type="uBxtki3mYxNXH" isSpecification="false" ownerScope="classifier" name="outputSheet" xmi.id="uE7eAmAP3IyCz"/>
<UML:Attribute visibility="private" comment="Workbook object used for writing to the final Excel (XLSX) file." type="uCN5vhsamIMZS" isSpecification="false" ownerScope="classifier" name="outputWorkbook" xmi.id="u4x5QhxYlc4Q1"/>
<UML:Attribute visibility="private" comment="Style of a default cell" type="u1Ano2L3MNqB9" isSpecification="false" ownerScope="classifier" name="defaultStyle" xmi.id="uMgVV2QK7nWJl"/>
<UML:Attribute visibility="private" comment="LEGACY/FAILSAFE&#xa;Style of cell if Tesseract can't read the image." type="u1Ano2L3MNqB9" isSpecification="false" ownerScope="classifier" name="errorStyle" xmi.id="umBpDgQHPWmCa"/>
<UML:Attribute visibility="private" comment="Style of cell if the measurement falls outside of the fail range." type="u1Ano2L3MNqB9" isSpecification="false" ownerScope="classifier" name="failStyle" xmi.id="uvYBZ8VG7zmXM"/>
<UML:Attribute visibility="private" comment="Style of the total cells (sets typing to 0.000%)" type="u1Ano2L3MNqB9" isSpecification="false" ownerScope="classifier" name="finalValuesStyle" xmi.id="uVbaYwGBhwkJg"/>
<UML:Attribute visibility="private" comment="Target temperature for current testing with DUT" type="uCrL5Q2hyX5sQ" isSpecification="false" ownerScope="classifier" name="targetTemp" xmi.id="uhHak0Hz9SDbD"/>
<UML:Attribute visibility="private" comment="Range for a measurement to still be considered passable. Any deviation beyond this range will be marked as a fail." type="uCrL5Q2hyX5sQ" isSpecification="false" ownerScope="classifier" name="failRange" xmi.id="uDq6GDbPZQ92T"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Prepares to write to XLSX file, with default fail values." isSpecification="false" ownerScope="classifier" name="initWorkbook" isLeaf="false" isInline="false" xmi.id="uPYVGaXG16zfz" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="uOyMsgJQ3uhAt"/>
<UML:Parameter visibility="private" comment="Name of the output XLSX file" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="filename" xmi.id="u5InZFqzu01qE"/>
<UML:Parameter visibility="private" comment="The number of cameras being tested. (Defines the number of columns being written to)" value="" type="u6dG093IE5KRR" isSpecification="false" name="camCount" xmi.id="ussUg1YCy3NRT"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Prepares writer to write to XLSX file, with custom fail values." isSpecification="false" ownerScope="classifier" name="initWorkbook" isLeaf="false" isInline="false" xmi.id="uo6AU3IofbYX5" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="umV834GzpS94i"/>
<UML:Parameter visibility="private" comment="Name of the file being written to. Must contain &quot;.xlsx&quot; at the end." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="filename" xmi.id="uKmkfQTRVGLoC"/>
<UML:Parameter visibility="private" comment="Number of cameras being tested." value="" type="u6dG093IE5KRR" isSpecification="false" name="camCount" xmi.id="uw43sVj5qbLdf"/>
<UML:Parameter visibility="private" comment="Custom target temperature" value="" type="uCrL5Q2hyX5sQ" isSpecification="false" name="targetTemp" xmi.id="uaMjVr7aY2UHn"/>
<UML:Parameter visibility="private" comment="Custom fail range." value="" type="uCrL5Q2hyX5sQ" isSpecification="false" name="failRange" xmi.id="u893tvV9CIwAn"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Writes lines to XLSX file" isSpecification="false" name="writeValues" isLeaf="false" isInline="false" xmi.id="u9NyH522SeaSa" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="unzm4MyNzq6pJ"/>
<UML:Parameter visibility="private" comment="What cycle of the test is being saved." value="" type="u6dG093IE5KRR" isSpecification="false" name="cycle" xmi.id="uzMu18hnsJECn"/>
<UML:Parameter visibility="private" comment="Map&lt;File,Double> of parsed data.&#xa;&#xa;Key: File of the location of the image being saved.&#xa;Value: Double of the image, parsed by Tesseract" value="" type="usELT5EPkFTAY" isSpecification="false" name="inputMap" xmi.id="uI9pe5W2dnGCP"/>
<UML:Parameter visibility="private" comment="Map&lt;String,File> of correlations between camera and files.&#xa;&#xa;Key: String of the name of the camera.&#xa;Value: File of the image generated by the named camera." value="" type="usELT5EPkFTAY" isSpecification="false" name="cameraToFile" xmi.id="u5WzoevvlIXQB"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Add final totals to the excel document." isSpecification="false" name="updateFormulas" isLeaf="false" isInline="false" xmi.id="ujgCbuqZ9xilL" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" comment="The number of cameras being used." value="" type="u6dG093IE5KRR" isSpecification="false" name="cameraCount" xmi.id="u6iuBFu0ia6vG"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" isSpecification="false" name="Cli" isLeaf="false" xmi.id="uASDoshKBmmnI">
<UML:Classifier.feature>
<UML:Attribute visibility="private" comment="Number of options currently available in the camera configuration sub-menu." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="cameraMenuOptionCount" xmi.id="uUzCr6SEgyYZ9"/>
<UML:Attribute visibility="private" comment="Whether the user has manually configured the cameras" type="uUFR10GCed46Q" isSpecification="false" ownerScope="classifier" name="camerasConfigured" xmi.id="uJYu4rRYxz5ws"/>
<UML:Attribute visibility="private" comment="Scanner used for reading user input." type="uyTBx9P7f4VjF" isSpecification="false" ownerScope="classifier" name="inputScanner" xmi.id="uzuN6tEl319Xv"/>
<UML:Attribute visibility="private" comment="Currently saved number of iterations to complete." type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="iterationCount" xmi.id="uISY0qW0xwIqT"/>
<UML:Attribute visibility="public" comment="Lock object, used for temporary interruption of runTests()" type="u8ik9hKNzgKcH" isSpecification="false" ownerScope="classifier" name="LOCK" xmi.id="ulq25h6WMZJqe"/>
<UML:Attribute visibility="private" comment="Number of options currently available in the main menu" type="u6dG093IE5KRR" isSpecification="false" ownerScope="classifier" name="mainMenuOptionCount" xmi.id="udfHHyUsieAgq"/>
<UML:Attribute visibility="private" comment="Whether the user has successfully set the serial numbers for all cameras." type="uUFR10GCed46Q" isSpecification="false" ownerScope="classifier" name="serialsSet" xmi.id="uWzO1KfycXL5N"/>
<UML:Attribute visibility="private" comment="Complete build version number" type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="version" xmi.id="uRu45R8iQt93b"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Function that allows the user to modify config values." isSpecification="false" ownerScope="classifier" name="configureCameras" isLeaf="false" isInline="false" xmi.id="uyVuteB0NjFu3" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Allows the user to modify which cameras are active." isSpecification="false" name="setActiveCameras" isLeaf="false" isInline="false" xmi.id="ueXiZq5immd11" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Allows the user to define serial numbers for the devices under test." isSpecification="false" ownerScope="classifier" name="setDUTSerials" isLeaf="false" isInline="false" xmi.id="ugVhQ3rXtZwsn" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Allows the user to change the number of iterations runTests will take" isSpecification="false" name="setIterationCount" isLeaf="false" isInline="false" xmi.id="uqOvbu5MwQyvo" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Tests the DUTs for the set number of iterations, using the configured settings for each camera, if active. Saves values to XLSX file after every iteration." isSpecification="false" ownerScope="classifier" name="runTests" isLeaf="false" isInline="false" xmi.id="uO6c4HgKt99TZ" isOverride="false"/>
</UML:Classifier.feature>
</UML:Class>
<UML:Class isRoot="false" isAbstract="false" namespace="Logical_View" visibility="public" isSpecification="false" name="ConfigFacade" isLeaf="false" xmi.id="ug4xpByAYlb4g">
<UML:Classifier.feature>
<UML:Attribute visibility="private" comment="Builder for the main Configuration object." type="u53NpBDIiJKLh" isSpecification="false" ownerScope="classifier" name="CONFIG_BUILDER" xmi.id="uK88kcnvrmoo8"/>
<UML:Attribute visibility="private" comment="Object used for reading and writing config values" type="ue50uK6Axr5uJ" isSpecification="false" ownerScope="classifier" name="CONFIG_STORE" xmi.id="uYWpaHvh5Ea8c"/>
<UML:Attribute visibility="private" comment="Location for the current config to be saved to" type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="configFileLocation" xmi.id="uzoFZpXOdvl6c"/>
<UML:Attribute visibility="private" comment="Map of all config values relating to all cameras available to the system.&#xa;&#xa;Key: String of the name of the camera&#xa;Value: Map&lt;ConfigProperties,Double> of config values&#xa;&#xa;Config value map:&#xa;Key: ConfigProperties object of the name of the config value&#xa;Value: Double of the config value" type="usELT5EPkFTAY" isSpecification="false" ownerScope="classifier" name="CONFIG_MAP" xmi.id="u3udpeyVwdpDa"/>
<UML:Attribute visibility="private" comment="Map&lt;String,String> of serial numbers.&#xa;&#xa;Key: String of the camera the serial is associated with&#xa;Value: String of the serial&#xa;&#xa;Note that this is NOT saved to config file, and needs to be set at runtime." type="usELT5EPkFTAY" isSpecification="false" ownerScope="classifier" name="DUT_SERIALS" xmi.id="uuuHPOIAKL8w4"/>
<UML:Attribute visibility="private" comment="Location to save images to&#xa;&#xa;Defaults to being set to &quot;images-&quot;, followed by the current UNIX timestamp, parsed by ErrorLogging's DateTimeFormatter" type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="imageSaveLocation" xmi.id="uy1aedRJTGkRH"/>
<UML:Attribute visibility="private" comment="Location to save the output XLSX file to.&#xa;&#xa;Defaults to &quot;outputData/&quot;, followed by the current UNIX timestamp, formatted by ErrorLogging's DateTimeFormatter, followed by &quot;.xlsx&quot;" type="uMYRTkE3rxR2B" isSpecification="false" ownerScope="classifier" name="outputSaveLocation" xmi.id="ukpfsZ1jA7ptq"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Getter for imageSaveLocation" isSpecification="false" ownerScope="classifier" name="getImgSaveLocation" isLeaf="false" isInline="false" xmi.id="ulFBJ7Xj4FHo2" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uMYRTkE3rxR2B" xmi.id="uxiP8D0r2aGiU"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Getter for outputSaveLocation" isSpecification="false" ownerScope="classifier" name="getOutputSaveLocation" isLeaf="false" isInline="false" xmi.id="uzbbqdUp01Lwd" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uMYRTkE3rxR2B" xmi.id="uTQeRF5HMEMEn"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Getter for a given camera's serial. Contains safeties if fed invalid value." isSpecification="false" ownerScope="classifier" name="getSerial" isLeaf="false" isInline="false" xmi.id="udSCxWCrJnTGT" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uMYRTkE3rxR2B" xmi.id="uErIaoRFwjeKv"/>
<UML:Parameter visibility="private" comment="name of the camera to get the serial of" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uv5x5UvIC5KI7"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Getter for all serials simultaneously. Simply returns the DUT_SERIALS Map" isSpecification="false" ownerScope="classifier" name="getSerials" isLeaf="false" isInline="false" xmi.id="u4T9xVeA4FbwR" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="usELT5EPkFTAY" xmi.id="ui20ImTBDNDsC"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Get a config value for a given camera and config property." isSpecification="false" ownerScope="classifier" name="getValue" isLeaf="false" isInline="false" xmi.id="uEcXRa7ddJv27" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uCrL5Q2hyX5sQ" xmi.id="uGjvIjlQX6smJ"/>
<UML:Parameter visibility="private" comment="Name of the camera to get a config value from" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uFB42KFheOAva"/>
<UML:Parameter visibility="private" comment="The config value to get the value of" value="" type="uWQfGitACJCjJ" isSpecification="false" name="property" xmi.id="u5opjvEWBPXDY"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Forces calling of the static block, which initialises all config and camera values." isSpecification="false" ownerScope="classifier" name="init" isLeaf="false" isInline="false" xmi.id="uHFyReuYzlHTQ" isOverride="false"/>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Loads config from the default file location" isSpecification="false" ownerScope="classifier" name="loadConfig" isLeaf="false" isInline="false" xmi.id="upIArGqbH8mx4" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="uYPO1ZvUXh7WQ"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" isSpecification="false" ownerScope="classifier" name="loadConfig" isLeaf="false" isInline="false" xmi.id="u78RFO4jh0MkX" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="uszRz85SW6GV6"/>
<UML:Parameter visibility="private" comment="Load cofig from a user-defined file location" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="filename" xmi.id="uMQ1pC0d6ebfL"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Saves the currently stored config values to the default config file location." isSpecification="false" ownerScope="classifier" name="saveCurrentConfig" isLeaf="false" isInline="false" xmi.id="uCCqp6UFmUyQ1" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="u6E6RDtfX8LLB"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Saves current config values stored in Map to config value at defined location." isSpecification="false" ownerScope="classifier" name="saveCurrentConfig" isLeaf="false" isInline="false" xmi.id="uAPxkDLLjHK1c" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="ujJS48Fb46GPi"/>
<UML:Parameter visibility="private" comment="Location to store the file name." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="filename" xmi.id="uWYoTyzvyTpF3"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Saves all default config values to the default config file location" isSpecification="false" ownerScope="classifier" name="saveDefaultConfig" isLeaf="false" isInline="false" xmi.id="uMTZvohhrmNdr" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="uxP0UtOILAxOE"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Save the default config values to a defined file location" isSpecification="false" ownerScope="classifier" name="saveDefaultConfig" isLeaf="false" isInline="false" xmi.id="ugfPMBYLfMP4j" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="u8tY4D4fVy8Zn"/>
<UML:Parameter visibility="private" comment="String of the path to the config file" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="filename" xmi.id="ui7RXLtWyBlKS"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="private" comment="Save defaults for a single camera's config. Used if a camera's section fails to import properly." isSpecification="false" ownerScope="classifier" name="saveSingleDefault" isLeaf="false" isInline="false" xmi.id="uiM7IsLx84uSj" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="uO9udh69EuNSK"/>
<UML:Parameter visibility="private" comment="Name of the section to use for the config file. Generally, the name of the camera is best here." value="" type="uMYRTkE3rxR2B" isSpecification="false" name="sectionName" xmi.id="u8CPDQtvknRJZ"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Setter for imageSaveLocation" isSpecification="false" ownerScope="classifier" name="setImgSaveLocation" isLeaf="false" isInline="false" xmi.id="uMZJZTzMHcotL" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="u8XuWBPhcm59f"/>
<UML:Parameter visibility="private" comment="New location to save images to" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="path" xmi.id="uaxFFAXxAfQEM"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Set new outputSaveLocation" isSpecification="false" ownerScope="classifier" name="setOutputSaveLocation" isLeaf="false" isInline="false" xmi.id="u6MfKFmI49XW5" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="uqkSM9TBK4dW9"/>
<UML:Parameter visibility="private" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="path" xmi.id="uTHrToi7wrE2L"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Setter for a given camera's serial" isSpecification="false" ownerScope="classifier" name="setSerial" isLeaf="false" isInline="false" xmi.id="uhW0WK7Tw8jzd" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter visibility="private" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="uc8z62UudvfjS"/>
<UML:Parameter visibility="private" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="serial" xmi.id="uvdtZ6aVREsSB"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isVirtual="false" isRoot="false" isAbstract="false" isQuery="false" visibility="public" comment="Set a given config value" isSpecification="false" ownerScope="classifier" name="setValue" isLeaf="false" isInline="false" xmi.id="unEABXT4EkoL0" isOverride="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter kind="return" type="uUFR10GCed46Q" xmi.id="ukh372KTfVlpM"/>
<UML:Parameter visibility="private" value="" type="uMYRTkE3rxR2B" isSpecification="false" name="cameraName" xmi.id="u9TtRnOedkgzv"/>
<UML:Parameter visibility="private" value="" type="uWQfGitACJCjJ" isSpecification="false" name="property" xmi.id="uCAEFKqXacTw1"/>
<UML:Parameter visibility="private" value="" type="uCrL5Q2hyX5sQ" isSpecification="false" name="propertyValue" xmi.id="ul2ggZnW99rFO"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Dependency namespace="Logical_View" visibility="public" isSpecification="false" name="" client="uASDoshKBmmnI" supplier="uaq5wFieCACsK" xmi.id="uXN1BN0GV1sOO"/>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="ufVuXCbh7WYK2">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uiXctorvzHidz" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="ufG3pSk1SKohW"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uASDoshKBmmnI" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="ulIljB7WN0hpv"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uFQHhlu4UvkaL">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uibCosoM5C9ES" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uVV13Z0K0pfGl"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uASDoshKBmmnI" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uNT9oYKZWDwXm"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uap4suMGCLeCk">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uszTbwciTSOHV" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="udq3aHW0YgKwc"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uASDoshKBmmnI" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="ujQHEeP3d88rs"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="ukKLaia3BwRNX">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uASDoshKBmmnI" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uuYYYbWEpX3L3"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uaq5wFieCACsK" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uTTRn8PUCG6ad"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uKW1u6KgeRDgn">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uibCosoM5C9ES" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uSSO9X4xxvio2"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uaq5wFieCACsK" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uCrk9GVLqQO49"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uc8C2BLIJHK0G">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uszTbwciTSOHV" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="u7ONJuRnrjWI1"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uaq5wFieCACsK" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uzKjkK010ZEEC"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uLs8aBwCPR9JO">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uxutGWImUrqt7" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="u6T6s97Zkb5ER"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uaq5wFieCACsK" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uowALOxlNiLp9"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uTXwkZwtw4Owy">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uiXctorvzHidz" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uLXW1uiVPaV1X"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uaq5wFieCACsK" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uQS00xfmZ7MOQ"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uKog7kDugs8CU">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="ug4xpByAYlb4g" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uqmKcgUDUR4zh"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uaq5wFieCACsK" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="ulEIGnd3tlnUp"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uVrVd7A3nurBb">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uxutGWImUrqt7" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uCUjAkl3ebguI"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="ug4xpByAYlb4g" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uFMIyq4h1Z9c1"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uioSMAcQvYPfi">
<UML:Association.connection>
<UML:AssociationEnd aggregation="aggregate" visibility="public" type="uiXctorvzHidz" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="u3nIVPSv3UA5j"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uhoYk9h6KpMug" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="ui4WogQYp8Bkg"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uUp8HrO15CIOb">
<UML:Association.connection>
<UML:AssociationEnd aggregation="aggregate" visibility="public" type="uASDoshKBmmnI" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="u3X2XjZtVvr6k"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uX8xl8SknIiop" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uOEoKbTATGhYn"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uZc4lhkas1Vfk">
<UML:Association.connection>
<UML:AssociationEnd aggregation="composite" visibility="public" type="ug4xpByAYlb4g" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uMNSmulO71Ugi"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uWQfGitACJCjJ" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uQgKbf2iZ9cWF"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="ulUdSMdHOaAMr">
<UML:Association.connection>
<UML:AssociationEnd aggregation="aggregate" visibility="public" type="ug4xpByAYlb4g" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="utkS04H8BCLRn"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uxutGWImUrqt7" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uzuDnzIeFQJxG"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uvPcP5cThe9rj">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="ug4xpByAYlb4g" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uAuOIPHflkEc9"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uxutGWImUrqt7" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="u4LYMCXHlVqQw"/>
</UML:Association.connection>
</UML:Association>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uO3xvwmYWNdKR">
<UML:Association.connection>
<UML:AssociationEnd aggregation="aggregate" visibility="public" type="ug4xpByAYlb4g" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uepcDPWbhWz32"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uxutGWImUrqt7" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uFwoPWPXU70RM"/>
</UML:Association.connection>
</UML:Association>
<UML:Dependency namespace="Logical_View" visibility="public" isSpecification="false" name="" client="uxutGWImUrqt7" supplier="ug4xpByAYlb4g" xmi.id="ucWLS2nI22dTr"/>
<UML:Dependency namespace="Logical_View" visibility="public" isSpecification="false" name="" client="uxutGWImUrqt7" supplier="ug4xpByAYlb4g" xmi.id="uz5F0wPS9mOfj"/>
<UML:Dependency namespace="Logical_View" visibility="public" isSpecification="false" name="" client="uxutGWImUrqt7" supplier="ug4xpByAYlb4g" xmi.id="u3dAqlz5DSrs6"/>
<UML:Dependency namespace="Logical_View" visibility="public" isSpecification="false" name="" client="ug4xpByAYlb4g" supplier="uxutGWImUrqt7" xmi.id="uP0Nsf579P77J"/>
<UML:Dependency namespace="Logical_View" visibility="public" isSpecification="false" name="" client="uxutGWImUrqt7" supplier="ug4xpByAYlb4g" xmi.id="u3X2FwLg3QzNS"/>
<UML:Association namespace="Logical_View" visibility="public" isSpecification="false" name="" xmi.id="uEHQtFiKt4wTh">
<UML:Association.connection>
<UML:AssociationEnd aggregation="none" visibility="public" type="uhoYk9h6KpMug" isSpecification="false" changeability="changeable" name="" isNavigable="false" xmi.id="uYDCTWWrXQLXh"/>
<UML:AssociationEnd aggregation="none" visibility="public" type="uASDoshKBmmnI" isSpecification="false" changeability="changeable" name="" isNavigable="true" xmi.id="uOO4WzH2mhUVJ"/>
</UML:Association.connection>
</UML:Association>
</UML:Namespace.ownedElement>
<XMI.extension xmi.extender="umbrello">
<diagrams resolution="96">
<diagram linewidth="0" textcolor="#000000" showstereotype="1" snapcsgrid="1" showattribassocs="1" documentation="" snapgrid="1" showatts="1" showops="1" snapy="25" griddotcolor="#f7f7f7" zoom="60.949999999999996" fillcolor="#ffffc0" canvaswidth="2625" backgroundcolor="#ffffff" showscope="1" localid="-1" linecolor="#ff0000" name="class diagram" canvasheight="1850" xmi.id="ugFPcmQ7CwNNq" showpackage="1" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showopsig="1" showgrid="0" usefillcolor="1" snapx="25" type="1" showpubliconly="0" isopen="1" showattsig="1">
<widgets>
<classwidget showopsigs="601" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="275" fillcolor="#ffffc0" y="-1250" localid="uNMJwVle2L3hj" showscope="1" linecolor="#ff0000" xmi.id="uASDoshKBmmnI" showpackage="1" width="225" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showattsigs="601" usesdiagramfillcolor="0" showoperations="1" x="-500" showattributes="1" usefillcolor="1" showpubliconly="0"/>
<classwidget showopsigs="601" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="450" fillcolor="#ffffc0" y="-1125" localid="uLPr6mHfmL3pP" showscope="1" linecolor="#ff0000" xmi.id="ug4xpByAYlb4g" showpackage="1" width="600" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showattsigs="601" usesdiagramfillcolor="0" showoperations="1" x="-1675" showattributes="1" usefillcolor="1" showpubliconly="0"/>
<enumwidget isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="150" fillcolor="#ffffc0" y="-1600" localid="uDk5BfSOCFAmP" linecolor="#ff0000" xmi.id="uhoYk9h6KpMug" showpackage="1" width="225" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="0" x="-500" usefillcolor="1"/>
<classwidget showopsigs="601" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="450" fillcolor="#ffffc0" y="-575" localid="u3FvK74CP9OuR" showscope="1" linecolor="#ff0000" xmi.id="uxutGWImUrqt7" showpackage="1" width="800" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showattsigs="601" usesdiagramfillcolor="0" showoperations="1" x="-1450" showattributes="1" usefillcolor="1" showpubliconly="0"/>
<enumwidget isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="125" fillcolor="#ffffc0" y="-1175" localid="uYhQlSESoApG7" linecolor="#ff0000" xmi.id="uX8xl8SknIiop" showpackage="1" width="100" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="0" x="-150" usefillcolor="1"/>
<classwidget showopsigs="601" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="200" fillcolor="#ffffc0" y="-1050" localid="utTVEj0tLPGMU" showscope="1" linecolor="#ff0000" xmi.id="uaq5wFieCACsK" showpackage="1" width="250" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showattsigs="601" usesdiagramfillcolor="0" showoperations="1" x="-975" showattributes="1" usefillcolor="1" showpubliconly="0"/>
<classwidget showopsigs="601" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="450" fillcolor="#ffffc0" y="-1975" localid="uLiRb2YG1VG8K" showscope="1" linecolor="#ff0000" xmi.id="uiXctorvzHidz" showpackage="1" width="300" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showattsigs="601" usesdiagramfillcolor="0" showoperations="1" x="-1400" showattributes="1" usefillcolor="1" showpubliconly="0"/>
<enumwidget isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="250" fillcolor="#ffffc0" y="-1150" localid="uvgQlVPQtZNew" linecolor="#ff0000" xmi.id="uWQfGitACJCjJ" showpackage="1" width="450" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="0" x="-2525" usefillcolor="1"/>
<classwidget showopsigs="601" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="125" fillcolor="#ffffc0" y="-1250" localid="uQnxDuwCJOmuk" showscope="1" linecolor="#ff0000" xmi.id="uszTbwciTSOHV" showpackage="1" width="325" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showattsigs="601" usesdiagramfillcolor="0" showoperations="1" x="-900" showattributes="1" usefillcolor="1" showpubliconly="0"/>
<classwidget showopsigs="601" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" height="275" fillcolor="#ffffc0" y="-925" localid="uLRmfkjwNcYQ8" showscope="1" linecolor="#ff0000" xmi.id="uibCosoM5C9ES" showpackage="1" width="625" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showattsigs="601" usesdiagramfillcolor="0" showoperations="1" x="-525" showattributes="1" usefillcolor="1" showpubliconly="0"/>
</widgets>
<messages/>
<associations>
<assocwidget widgetbid="uASDoshKBmmnI" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uibCosoM5C9ES" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="urt4vcFgpRPqJ" linecolor="#ff0000" xmi.id="uFQHhlu4UvkaL" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-925" startx="-414.086"/>
<endpoint endx="-414.086" endy="-975"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uASDoshKBmmnI" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uiXctorvzHidz" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uugEkN7L2q5id" linecolor="#ff0000" xmi.id="ufVuXCbh7WYK2" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-1525" startx="-1100"/>
<endpoint endx="-500" endy="-1250"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uaq5wFieCACsK" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uASDoshKBmmnI" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uEZ6cctkhKgWz" linecolor="#ff0000" xmi.id="ukKLaia3BwRNX" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-1036.87" startx="-500"/>
<endpoint endx="-725" endy="-1036.87"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uaq5wFieCACsK" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uibCosoM5C9ES" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uACEtNHjr8EWw" linecolor="#ff0000" xmi.id="uKW1u6KgeRDgn" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-893.653" startx="-525"/>
<endpoint endx="-725" endy="-893.653"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uaq5wFieCACsK" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uxutGWImUrqt7" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="us7dScq2zCSEF" linecolor="#ff0000" xmi.id="uLs8aBwCPR9JO" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-575" startx="-885.849"/>
<endpoint endx="-885.849" endy="-850"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uASDoshKBmmnI" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uhoYk9h6KpMug" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uV4fBL6bBsCME" linecolor="#ff0000" xmi.id="uEHQtFiKt4wTh" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-1450" startx="-401.923"/>
<endpoint endx="-401.923" endy="-1250"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uWQfGitACJCjJ" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="ug4xpByAYlb4g" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uxMrddTD3o582" linecolor="#ff0000" xmi.id="uZc4lhkas1Vfk" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="510">
<linepath layout="Direct">
<startpoint starty="-1021.8" startx="-1675"/>
<endpoint endx="-2075" endy="-1021.8"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uxutGWImUrqt7" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="ug4xpByAYlb4g" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="ulRMN09sG9bQu" linecolor="#ff0000" xmi.id="uP0Nsf579P77J" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="502">
<linepath layout="Direct">
<startpoint starty="-675" startx="-1267.05"/>
<endpoint endx="-1267.05" endy="-575"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uaq5wFieCACsK" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uszTbwciTSOHV" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uljndW77L3tNW" linecolor="#ff0000" xmi.id="uc8C2BLIJHK0G" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-1125" startx="-771.801"/>
<endpoint endx="-771.801" endy="-1050"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uASDoshKBmmnI" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uszTbwciTSOHV" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uBy6q1R7CpMMX" linecolor="#ff0000" xmi.id="uap4suMGCLeCk" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-1216.59" startx="-575"/>
<endpoint endx="-500" endy="-1216.59"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uaq5wFieCACsK" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uiXctorvzHidz" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="u9vjc6YYUqofM" linecolor="#ff0000" xmi.id="uTXwkZwtw4Owy" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-1525" startx="-1100"/>
<endpoint endx="-975" endy="-1050"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uX8xl8SknIiop" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uASDoshKBmmnI" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uZHrr1jcAn3eT" linecolor="#ff0000" xmi.id="uUp8HrO15CIOb" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="501">
<linepath layout="Direct">
<startpoint starty="-1155.55" startx="-275"/>
<endpoint endx="-150" endy="-1155.55"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uhoYk9h6KpMug" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uiXctorvzHidz" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="uDj4Cxv3puzua" linecolor="#ff0000" xmi.id="uioSMAcQvYPfi" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="501">
<linepath layout="Direct">
<startpoint starty="-1558.09" startx="-1100"/>
<endpoint endx="-500" endy="-1558.09"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="ug4xpByAYlb4g" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uxutGWImUrqt7" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="udZdm0yGqNGuK" linecolor="#ff0000" xmi.id="u3X2FwLg3QzNS" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="502">
<linepath layout="Direct">
<startpoint starty="-575" startx="-1371.45"/>
<endpoint endx="-1371.45" endy="-675"/>
</linepath>
</assocwidget>
<assocwidget widgetbid="uaq5wFieCACsK" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="ug4xpByAYlb4g" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" localid="upqldLOvq0Uox" linecolor="#ff0000" xmi.id="uKog7kDugs8CU" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="512">
<linepath layout="Direct">
<startpoint starty="-1034.31" startx="-1075"/>
<endpoint endx="-975" endy="-1034.31"/>
</linepath>
</assocwidget>
</associations>
</diagram>
<diagram linewidth="0" textcolor="#000000" showstereotype="1" snapcsgrid="0" showattribassocs="1" documentation="" snapgrid="0" showatts="1" showops="1" snapy="25" griddotcolor="#f7f7f7" zoom="70" fillcolor="#ffffc0" canvaswidth="1616.27" backgroundcolor="#ffffff" showscope="1" localid="-1" linecolor="#ff0000" name="activity diagram" canvasheight="661.5" xmi.id="uucBDfma2hRQg" showpackage="1" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showopsig="1" showgrid="0" usefillcolor="1" snapx="25" type="6" showpubliconly="0" isopen="1" showattsig="1">
<widgets>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="import config, initialise cameras if available, initialise GPIO objects, measure travel time between limit switches" autoresize="1" height="28" fillcolor="#ffffc0" y="-11755" activitytype="1" localid="u5XRXcu6W6hx8" linecolor="#ff0000" xmi.id="uepLzsA8b3T2G" width="106" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Initialisation" usesdiagramfillcolor="0" x="-9284" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11471.3" activitytype="1" localid="uh3sr8Nu68Btz" linecolor="#ff0000" xmi.id="u4qhkcGWjx0Z2" width="85" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Show Help" usesdiagramfillcolor="0" x="-8984.87" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="15" fillcolor="#ffffc0" y="-11750.7" activitytype="0" localid="u48aLE7dXqRpC" linecolor="#ff0000" xmi.id="utaWvp4BKKTSY" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="" usesdiagramfillcolor="0" x="-9433.47" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11334.7" activitytype="1" localid="u07ckx4k2Lw0d" linecolor="#ff0000" xmi.id="uZOnS5TAVhjv7" width="186" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Modify Test Iteration Count" usesdiagramfillcolor="0" x="-9379.47" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11374.4" activitytype="1" localid="uFwuKkq1BJA2Q" linecolor="#ff0000" xmi.id="uoZpsEuPGbfss" width="78" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Run Tests" usesdiagramfillcolor="0" x="-9031.28" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11565.9" activitytype="1" localid="uG6PU1egku7Dn" linecolor="#ff0000" xmi.id="uarZBweRU7wd6" width="145" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Change Crop Region" usesdiagramfillcolor="0" x="-10256.9" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11581.1" activitytype="1" localid="uUQIrRvJaBGpK" linecolor="#ff0000" xmi.id="umiDjfUhbMOwt" width="50" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Exit" usesdiagramfillcolor="0" x="-9129.49" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11415.8" activitytype="1" localid="urpbh9yI266fy" linecolor="#ff0000" xmi.id="upwxIMLgN3hSA" width="136" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Serial Config Menu" usesdiagramfillcolor="0" x="-9530.67" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11670" activitytype="1" localid="u9daJY7N39uLh" linecolor="#ff0000" xmi.id="u6XadL9ZPQwHa" width="89" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Main Menu" usesdiagramfillcolor="0" x="-9283" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="15" fillcolor="#ffffc0" y="-11571.8" activitytype="2" localid="uJYOkWFEJlU7O" linecolor="#ff0000" xmi.id="uCqKX6TCSCpXM" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="" usesdiagramfillcolor="0" x="-8994.43" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="20" fillcolor="#ffffc0" y="-11577.7" activitytype="4" localid="uBAR1XGySOalu" linecolor="#ff0000" xmi.id="u7jJyZeXXFARP" width="20" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="" usesdiagramfillcolor="0" x="-9246.58" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11482.6" activitytype="1" localid="ushpUPxiXmNzZ" linecolor="#ff0000" xmi.id="u2aoq9GDhbpaK" width="190" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Single Camera Config Menu" usesdiagramfillcolor="0" x="-10064.4" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11713.8" activitytype="1" localid="uaafnHGQySOhV" linecolor="#ff0000" xmi.id="uvK8RZBDYcUat" width="93" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Toggle Crop" usesdiagramfillcolor="0" x="-9949.96" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11295.9" activitytype="1" localid="ugX8ADiDQcicO" linecolor="#ff0000" xmi.id="ua9DlygPIIB8m" width="127" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Set Camera Serial" usesdiagramfillcolor="0" x="-9705.82" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11712.7" activitytype="1" localid="upcptR2V91bVU" linecolor="#ff0000" xmi.id="uSGoWtxQCg0k2" width="168" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Change Threshold Value" usesdiagramfillcolor="0" x="-10148.7" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="0" height="20" fillcolor="#ffffc0" y="-11470.4" activitytype="4" localid="uqVJoINGOmVB0" linecolor="#ff0000" xmi.id="udjrjPXZeOKKH" width="20" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="" usesdiagramfillcolor="0" x="-9591.98" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11543.5" activitytype="1" localid="uRQS22kU7J4A2" linecolor="#ff0000" xmi.id="ubZ4pDJ3kcyxb" width="149" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Camera Config Menu" usesdiagramfillcolor="0" x="-9636.16" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11308.1" activitytype="1" localid="uQjv0Pxq2yg6m" linecolor="#ff0000" xmi.id="uyKzq99c7CWsm" width="136" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Set Active Cameras" usesdiagramfillcolor="0" x="-9166.86" usefillcolor="1"/>
<forkjoin isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" drawvertical="0" height="10" fillcolor="#000000" y="-11154.4" localid="u5kZV3v2HF6PH" linecolor="#000000" xmi.id="u6WQ1b7oGA4c2" width="40" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="0" x="-9212.54" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11654.4" activitytype="1" localid="uirPMk1U3Vw6f" linecolor="#ff0000" xmi.id="uU845hGQ6nmrY" width="218" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Change Composite Frame Count" usesdiagramfillcolor="0" x="-10279.8" usefillcolor="1"/>
<forkjoin isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" autoresize="1" drawvertical="1" height="40" fillcolor="#000000" y="-11599.6" localid="uuxo1VUioypl2" linecolor="#000000" xmi.id="uny0qCP8Z5lMr" width="10" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="0" x="-10491" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="0" height="20" fillcolor="#ffffc0" y="-11554.9" activitytype="4" localid="uGHCBbVWAxUG7" linecolor="#ff0000" xmi.id="usB5uQzBGoXUG" width="20" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="" usesdiagramfillcolor="0" x="-9982.01" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11621.7" activitytype="1" localid="ukTj3tsaXdQfA" linecolor="#ff0000" xmi.id="uP7MbJInaiZnU" width="85" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Show Help" usesdiagramfillcolor="0" x="-9722.71" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="20" fillcolor="#ffffc0" y="-11334.6" activitytype="4" localid="utxieKBUsD7Bu" linecolor="#ff0000" xmi.id="uT7gc9aQzA8Gc" width="20" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="" usesdiagramfillcolor="0" x="-9470.12" usefillcolor="1"/>
<activitywidget postcondition="" isinstance="0" showstereotype="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" precondition="" documentation="" autoresize="1" height="28" fillcolor="#ffffc0" y="-11663.2" activitytype="1" localid="uZP6Fqm3pIj4p" linecolor="#ff0000" xmi.id="urSjINbD3NuEq" width="162" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" activityname="Toggle Threshold Value" usesdiagramfillcolor="0" x="-9891.56" usefillcolor="1"/>
</widgets>
<messages/>
<associations>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uU845hGQ6nmrY" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="usB5uQzBGoXUG" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u6FnJ2KZYMaU4" linecolor="#ff0000" xmi.id="uVuEoV7VVslZm" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11554.9" startx="-9982.01"/>
<endpoint endx="-10061.8" endy="-11626.4"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11589.1" localid="uL2zJqkXRlSda" linecolor="#ff0000" xmi.id="u8tfKLSfEeQ0z" role="703" text="2" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-10031.6" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="upwxIMLgN3hSA" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u7jJyZeXXFARP" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uMlCIJS5wSfRY" linecolor="#ff0000" xmi.id="ucAQSnDX1iCeI" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11557.7" startx="-9246.58"/>
<endpoint endx="-9394.67" endy="-11415.8"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11492.5" localid="uc2BPmYy2TWsA" linecolor="#ff0000" xmi.id="u1J42eHj8Jo3e" role="703" text="2" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9321.66" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="ubZ4pDJ3kcyxb" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u7jJyZeXXFARP" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uOg2UL0tHRbRH" linecolor="#ff0000" xmi.id="uOswRI3dgjSqU" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11557.7" startx="-9246.58"/>
<endpoint endx="-9487.16" endy="-11543.5"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11551.3" localid="un4krfVsdE5HE" linecolor="#ff0000" xmi.id="uaBzcyq3dDvsX" role="703" text="1" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9366.87" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6XadL9ZPQwHa" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uepLzsA8b3T2G" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uHYgej2ECpHrI" linecolor="#ff0000" xmi.id="uJeEq1iTO8TUz" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11727" startx="-9239"/>
<endpoint endx="-9239" endy="-11670"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u7jJyZeXXFARP" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u6XadL9ZPQwHa" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="ud2JAkT3pj69i" linecolor="#ff0000" xmi.id="uRxhObQe22315" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11642" startx="-9236.58"/>
<endpoint endx="-9236.58" endy="-11577.7"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11617.9" localid="ugJ9byaXxZhfz" linecolor="#ff0000" xmi.id="umvl5boqP2AMn" role="703" text="User chooses option" width="133" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9236.58" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u2aoq9GDhbpaK" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="udjrjPXZeOKKH" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="ucnmpmtTjEZ9y" linecolor="#ff0000" xmi.id="ufw8h0pvAry48" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11461.9" startx="-9591.98"/>
<endpoint endx="-9874.4" endy="-11461.9"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11482.2" localid="ucnZ7OuAbr2wT" linecolor="#ff0000" xmi.id="uDgI0PCrxMTYv" role="703" text="Camera Name*" width="102" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9781.08" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u4qhkcGWjx0Z2" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u7jJyZeXXFARP" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uJXSKHSyS0Oo2" linecolor="#ff0000" xmi.id="ul84pW7ZMFjdn" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11557.7" startx="-9226.58"/>
<endpoint endx="-8984.87" endy="-11471.3"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11502.3" localid="uWkrONugKPvMT" linecolor="#ff0000" xmi.id="u4oP5dUolHnpE" role="703" text="6" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9079.93" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u2aoq9GDhbpaK" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uny0qCP8Z5lMr" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uW0pRKNgAxcPd" linecolor="#ff0000" xmi.id="uYeLO5zspuyYa" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11559.6" startx="-10487.5"/>
<endpoint endx="-10064.4" endy="-11464.1"/>
<point x="-10487.5" y="-11464.1"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uepLzsA8b3T2G" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="utaWvp4BKKTSY" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="umij5ZfkjzWUl" linecolor="#ff0000" xmi.id="uRLZBkDQTMnLl" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11742" startx="-9418.47"/>
<endpoint endx="-9284" endy="-11742"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="umiDjfUhbMOwt" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u7jJyZeXXFARP" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u1DRhihdyCOxP" linecolor="#ff0000" xmi.id="uYNaS4eheOegc" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11559.6" startx="-9226.58"/>
<endpoint endx="-9129.49" endy="-11559.6"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11581.4" localid="u1agndzX0wq2h" linecolor="#ff0000" xmi.id="u1BZ2oV5E0HM4" role="703" text="7" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9186.87" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6XadL9ZPQwHa" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="u6WQ1b7oGA4c2" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uwMBnhVKetq5Y" linecolor="#ff0000" xmi.id="u85lKuLRrK4pH" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11144.4" startx="-9185.17"/>
<endpoint endx="-9194" endy="-11665.3"/>
<point x="-9185.17" y="-11117.9"/>
<point x="-8882.64" y="-11118.6"/>
<point x="-8881.23" y="-11665.3"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uP7MbJInaiZnU" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="usB5uQzBGoXUG" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uyfPvVby2W1ur" linecolor="#ff0000" xmi.id="uMEIbmvoSkIWZ" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11554.9" startx="-9962.01"/>
<endpoint endx="-9722.71" endy="-11593.7"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11587" localid="u9uR6EQwVNGRR" linecolor="#ff0000" xmi.id="uT09pcmOmuZqS" role="703" text="6" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9878.94" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uny0qCP8Z5lMr" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uarZBweRU7wd6" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uxo5M1AD1bTJ9" linecolor="#ff0000" xmi.id="u8ptsCUBhMdup" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11559.6" startx="-10256.9"/>
<endpoint endx="-10481" endy="-11559.6"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6WQ1b7oGA4c2" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uyKzq99c7CWsm" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u2FVMk0M5QeQQ" linecolor="#ff0000" xmi.id="uK6SwyJgSJXIu" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11280.1" startx="-9119.74"/>
<endpoint endx="-9195.03" endy="-11154.4"/>
<point x="-9119.74" y="-11241.7"/>
<point x="-9195.03" y="-11241.7"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6WQ1b7oGA4c2" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uZOnS5TAVhjv7" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="unuWzIDLWcGEi" linecolor="#ff0000" xmi.id="u4K5VWreV7NKM" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11306.7" startx="-9255.53"/>
<endpoint endx="-9194.32" endy="-11154.4"/>
<point x="-9255.53" y="-11248.8"/>
<point x="-9194.32" y="-11248.1"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uCqKX6TCSCpXM" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="umiDjfUhbMOwt" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uUBane5StnIbk" linecolor="#ff0000" xmi.id="uVTE5n08foSwS" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11564.9" startx="-9079.49"/>
<endpoint endx="-8994.43" endy="-11564.9"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uoZpsEuPGbfss" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u7jJyZeXXFARP" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uEJcZ32CpEAGm" linecolor="#ff0000" xmi.id="uvYCvX1CMFaNr" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11557.7" startx="-9226.58"/>
<endpoint endx="-9031.28" endy="-11374.4"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11475.7" localid="u6Yd8nsk1cV0n" linecolor="#ff0000" xmi.id="u2ivOI3KJhwBd" role="703" text="5" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9099.69" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uarZBweRU7wd6" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="usB5uQzBGoXUG" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="ug8HQSIkv4ufq" linecolor="#ff0000" xmi.id="uYZuCLvuXOGOJ" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11554.9" startx="-9982.01"/>
<endpoint endx="-10111.9" endy="-11554.9"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11558.3" localid="uDViwIvvX7F4U" linecolor="#ff0000" xmi.id="u0GRkZZBh5k2W" role="703" text="1" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-10062.3" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="urSjINbD3NuEq" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="usB5uQzBGoXUG" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uMayJl11AWhyZ" linecolor="#ff0000" xmi.id="uBJqX8anhRfMr" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11554.9" startx="-9962.01"/>
<endpoint endx="-9891.56" endy="-11635.2"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11619" localid="ub8PXWYSgifsk" linecolor="#ff0000" xmi.id="uLuQbp6wqR73c" role="703" text="5" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9911.31" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uny0qCP8Z5lMr" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uU845hGQ6nmrY" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="unHGXXmekCQ7E" linecolor="#ff0000" xmi.id="uazzIp8t3oEkj" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11626.4" startx="-10216.6"/>
<endpoint endx="-10481" endy="-11569.6"/>
<point x="-10216.6" y="-11569.6"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6WQ1b7oGA4c2" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="u4qhkcGWjx0Z2" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u5wJE8r1oxMls" linecolor="#ff0000" xmi.id="urgsvmrp9psXZ" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11443.3" startx="-8941.03"/>
<endpoint endx="-9176.73" endy="-11154.4"/>
<point x="-8941.03" y="-11212.2"/>
<point x="-9176.73" y="-11213.6"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uSGoWtxQCg0k2" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="usB5uQzBGoXUG" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u7LLN529OeV8y" linecolor="#ff0000" xmi.id="uHTBMhoTYPi57" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11554.9" startx="-9982.01"/>
<endpoint endx="-9982.01" endy="-11684.7"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11619.8" localid="uNf5W4q2kX1Iw" linecolor="#ff0000" xmi.id="u86XKUOA5hLaU" role="703" text="3" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9994.67" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uZOnS5TAVhjv7" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u7jJyZeXXFARP" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uqxAq3e2ROH7r" linecolor="#ff0000" xmi.id="uYQ1u9jJgYyNw" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11557.7" startx="-9244.47"/>
<endpoint endx="-9244.47" endy="-11334.7"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11453.3" localid="uNwfov4DeqcpH" linecolor="#ff0000" xmi.id="uFletKtjC0Iu1" role="703" text="3" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9265.22" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uny0qCP8Z5lMr" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uSGoWtxQCg0k2" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uwhms1NxvTmlb" linecolor="#ff0000" xmi.id="uYQq8lYKSwB14" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11696.9" startx="-10148.7"/>
<endpoint endx="-10481" endy="-11577.3"/>
<point x="-10285.6" y="-11696.9"/>
<point x="-10284.2" y="-11577.3"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="ubZ4pDJ3kcyxb" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="usB5uQzBGoXUG" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uxn2eFjS76SBQ" linecolor="#ff0000" xmi.id="ugOdJqMfrrfs1" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11543.5" startx="-9962.01"/>
<endpoint endx="-9636.16" endy="-11543.5"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11545.6" localid="uIzJLHw7kbau0" linecolor="#ff0000" xmi.id="uCq8YHcpBUgrN" role="703" text="7" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9850.44" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uny0qCP8Z5lMr" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="urSjINbD3NuEq" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uYJsCJ98I4N4B" linecolor="#ff0000" xmi.id="usg4WSbrywyGW" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11663.2" startx="-9836.69"/>
<endpoint endx="-10481" endy="-11592.8"/>
<point x="-9836.69" y="-11746.9"/>
<point x="-10315.1" y="-11743.4"/>
<point x="-10315.8" y="-11592.8"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6WQ1b7oGA4c2" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="uT7gc9aQzA8Gc" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uj04uSWcb3wGp" linecolor="#ff0000" xmi.id="uTA1gHYr2bJWt" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11314.6" startx="-9460.27"/>
<endpoint endx="-9204.88" endy="-11154.4"/>
<point x="-9460.27" y="-11224.1"/>
<point x="-9204.88" y="-11222"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11288.1" localid="uYB0ZTQ4X0DYt" linecolor="#ff0000" xmi.id="uktjbmrcnfFO9" role="703" text="Exit to Main Menu" width="118" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9460.27" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uT7gc9aQzA8Gc" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="upwxIMLgN3hSA" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uvfpzKaCi7d6e" linecolor="#ff0000" xmi.id="uSsftcVamen7k" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11387.8" startx="-9468.72"/>
<endpoint endx="-9468.72" endy="-11334.6"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11378.8" localid="uTEhbR1SRfxuQ" linecolor="#ff0000" xmi.id="uIMQivEgvnACf" role="703" text="User chooses option" width="133" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9452.94" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="udjrjPXZeOKKH" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="ubZ4pDJ3kcyxb" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uuVlbDfLkOAkw" linecolor="#ff0000" xmi.id="uYaYI3tPmZ459" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11515.5" startx="-9581.69"/>
<endpoint endx="-9581.69" endy="-11470.4"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11510.5" localid="uoKilSLQuNz04" linecolor="#ff0000" xmi.id="uyRPCmU2dLH0H" role="703" text="User chooses option" width="133" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9583.23" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uyKzq99c7CWsm" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u7jJyZeXXFARP" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uHUdHYcl3dlWU" linecolor="#ff0000" xmi.id="uFUhAwYT5E9x9" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11557.7" startx="-9226.58"/>
<endpoint endx="-9166.86" endy="-11308.1"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11467.8" localid="uikXdok4PrRPK" linecolor="#ff0000" xmi.id="uHI88XvNy64ci" role="703" text="4" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9202.58" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="usB5uQzBGoXUG" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="u2aoq9GDhbpaK" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uBi5rUAHTjxhB" linecolor="#ff0000" xmi.id="uAeP93AwWMfjb" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11482.6" startx="-9973.34"/>
<endpoint endx="-9973.34" endy="-11534.9"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11517.2" localid="uEdNv4QwjJRjA" linecolor="#ff0000" xmi.id="uwEsaX3gvxBaR" role="703" text="User chooses option" width="133" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9977.55" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uny0qCP8Z5lMr" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uP7MbJInaiZnU" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uBmrb89H3CJr7" linecolor="#ff0000" xmi.id="uN93Ipxa0IXQ1" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11621.7" startx="-9682.6"/>
<endpoint endx="-10481" endy="-11598.4"/>
<point x="-9682.6" y="-11768.7"/>
<point x="-10336.2" y="-11769.4"/>
<point x="-10336.2" y="-11598.4"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="ua9DlygPIIB8m" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="uT7gc9aQzA8Gc" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uMs366d9wAyg0" linecolor="#ff0000" xmi.id="uYu0Y3uV5GBf9" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11314.6" startx="-9470.12"/>
<endpoint endx="-9578.82" endy="-11295.9"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11329.9" localid="uQC1WiFw1ZbpH" linecolor="#ff0000" xmi.id="ursNF5WFON1WS" role="703" text="Camera Name" width="95" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9587.79" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6WQ1b7oGA4c2" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="udjrjPXZeOKKH" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u8d6FiyVgw52V" linecolor="#ff0000" xmi.id="uwUENNDJ2fYIg" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11450.4" startx="-9581.29"/>
<endpoint endx="-9212.54" endy="-11154.4"/>
<point x="-9581.29" y="-11416.9"/>
<point x="-9740.3" y="-11412.7"/>
<point x="-9741.7" y="-11177.7"/>
<point x="-9213.32" y="-11177"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11435.6" localid="ugTQHcbrXn106" linecolor="#ff0000" xmi.id="uemzr0qehjH9p" role="703" text="Exit to Main Menu" width="118" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9722.01" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="u6WQ1b7oGA4c2" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uoZpsEuPGbfss" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u4xiBhyK4cGhU" linecolor="#ff0000" xmi.id="uxoniCAPh3JAs" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11346.4" startx="-9012.1"/>
<endpoint endx="-9184.47" endy="-11154.4"/>
<point x="-9012.1" y="-11233.3"/>
<point x="-9184.47" y="-11232.6"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uny0qCP8Z5lMr" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="uvK8RZBDYcUat" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uPeqBjOElkh6u" linecolor="#ff0000" xmi.id="urLPTIk7Sosfb" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11713.8" startx="-9938.7"/>
<endpoint endx="-10481" endy="-11585.1"/>
<point x="-9938.7" y="-11732.1"/>
<point x="-10303.9" y="-11730.7"/>
<point x="-10304.6" y="-11585.1"/>
</linepath>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="uvK8RZBDYcUat" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" widgetaid="usB5uQzBGoXUG" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="u4QpuEePix73S" linecolor="#ff0000" xmi.id="uth9OTGI05SmL" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Direct">
<startpoint starty="-11554.9" startx="-9962.01"/>
<endpoint endx="-9949.96" endy="-11685.8"/>
</linepath>
<floatingtext isinstance="0" showstereotype="1" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" autoresize="1" pretext="" height="22" fillcolor="none" y="-11620.4" localid="ufJBxbhDDvdPD" linecolor="#ff0000" xmi.id="uwF4ZcOgzlDSE" role="703" text="4" width="15" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" usesdiagramfillcolor="1" x="-9955.99" usefillcolor="1" posttext=""/>
</assocwidget>
<assocwidget visibilityB="0" roleBdoc="" widgetbid="upwxIMLgN3hSA" linewidth="0" textcolor="none" usesdiagramusefillcolor="1" widgetaid="ua9DlygPIIB8m" documentation="" autoresize="1" indexb="1" totalcountb="2" fillcolor="none" changeabilityA="900" localid="uIZh9j5FRAxDm" linecolor="#ff0000" xmi.id="uMOTSe06b3KZt" visibilityA="0" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" seqnum="" usesdiagramfillcolor="1" totalcounta="2" indexa="1" usefillcolor="1" type="515" changeabilityB="900" roleAdoc="">
<linepath layout="Polyline">
<startpoint starty="-11295.9" startx="-9629.83"/>
<endpoint endx="-9530.67" endy="-11398.6"/>
<point x="-9629.83" y="-11398.6"/>
</linepath>
</assocwidget>
</associations>
</diagram>
</diagrams>
</XMI.extension>
</UML:Model>
<UML:Model isRoot="false" isAbstract="false" namespace="m1" visibility="public" isSpecification="false" name="Use Case View" isLeaf="false" xmi.id="Use_Case_View">
<UML:Namespace.ownedElement/>
</UML:Model>
<UML:Model isRoot="false" isAbstract="false" namespace="m1" visibility="public" isSpecification="false" name="Component View" isLeaf="false" xmi.id="Component_View">
<UML:Namespace.ownedElement/>
</UML:Model>
<UML:Model isRoot="false" isAbstract="false" namespace="m1" visibility="public" isSpecification="false" name="Deployment View" isLeaf="false" xmi.id="Deployment_View">
<UML:Namespace.ownedElement/>
</UML:Model>
<UML:Model isRoot="false" isAbstract="false" namespace="m1" visibility="public" isSpecification="false" name="Entity Relationship Model" isLeaf="false" xmi.id="Entity_Relationship_Model">
<UML:Namespace.ownedElement/>
<XMI.extension xmi.extender="umbrello">
<diagrams resolution="96">
<diagram linewidth="0" textcolor="#000000" showstereotype="1" snapcsgrid="0" showattribassocs="1" documentation="" snapgrid="0" showatts="1" showops="1" snapy="25" griddotcolor="#f7f7f7" zoom="100" fillcolor="#ffffc0" canvaswidth="0" backgroundcolor="#ffffff" showscope="1" localid="-1" linecolor="#ff0000" name="entity relationship diagram" canvasheight="0" xmi.id="uA5y206JETUkH" showpackage="1" font="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" showopsig="1" showgrid="0" usefillcolor="1" snapx="25" type="9" showpubliconly="0" isopen="1" showattsig="1">
<widgets/>
<messages/>
<associations/>
</diagram>
</diagrams>
</XMI.extension>
</UML:Model>
</UML:Namespace.ownedElement>
</UML:Model>
</XMI.content>
<XMI.extensions xmi.extender="umbrello">
<docsettings viewid="ugFPcmQ7CwNNq" documentation="" uniqueid="uOO4WzH2mhUVJ"/>
<listview>
<listitem open="1" type="800" id="Views">
<listitem open="1" type="821" id="Component_View"/>
<listitem open="1" type="827" id="Deployment_View"/>
<listitem open="1" type="836" id="Entity_Relationship_Model">
<listitem open="0" type="834" id="uA5y206JETUkH" label="entity relationship diagram"/>
</listitem>
<listitem open="1" type="801" id="Logical_View">
<listitem open="0" type="809" id="uucBDfma2hRQg" label="activity diagram"/>
<listitem open="0" type="807" id="ugFPcmQ7CwNNq" label="class diagram"/>
<listitem open="1" type="813" id="uASDoshKBmmnI">
<listitem open="0" type="814" id="uUzCr6SEgyYZ9"/>
<listitem open="0" type="814" id="uJYu4rRYxz5ws"/>
<listitem open="0" type="815" id="uyVuteB0NjFu3"/>
<listitem open="0" type="814" id="uzuN6tEl319Xv"/>
<listitem open="0" type="814" id="uISY0qW0xwIqT"/>
<listitem open="0" type="814" id="ulq25h6WMZJqe"/>
<listitem open="0" type="814" id="udfHHyUsieAgq"/>
<listitem open="0" type="815" id="uO6c4HgKt99TZ"/>
<listitem open="0" type="814" id="uWzO1KfycXL5N"/>
<listitem open="0" type="815" id="ueXiZq5immd11"/>
<listitem open="0" type="815" id="ugVhQ3rXtZwsn"/>
<listitem open="0" type="815" id="uqOvbu5MwQyvo"/>
<listitem open="0" type="814" id="uRu45R8iQt93b"/>
</listitem>
<listitem open="0" type="831" id="uX8xl8SknIiop">
<listitem open="0" type="839" id="uXEgtMa6ojh5v"/>
<listitem open="0" type="839" id="uumycodD0FI2b"/>
<listitem open="0" type="839" id="uykUAZaKuvRtj"/>
</listitem>
<listitem open="1" type="813" id="ug4xpByAYlb4g">
<listitem open="0" type="814" id="uK88kcnvrmoo8"/>
<listitem open="0" type="814" id="u3udpeyVwdpDa"/>
<listitem open="0" type="814" id="uYWpaHvh5Ea8c"/>
<listitem open="0" type="814" id="uzoFZpXOdvl6c"/>
<listitem open="0" type="814" id="uuuHPOIAKL8w4"/>
<listitem open="0" type="815" id="ulFBJ7Xj4FHo2"/>
<listitem open="0" type="815" id="uzbbqdUp01Lwd"/>
<listitem open="0" type="815" id="udSCxWCrJnTGT"/>
<listitem open="0" type="815" id="u4T9xVeA4FbwR"/>
<listitem open="0" type="815" id="uEcXRa7ddJv27"/>
<listitem open="0" type="814" id="uy1aedRJTGkRH"/>
<listitem open="0" type="815" id="uHFyReuYzlHTQ"/>
<listitem open="0" type="815" id="upIArGqbH8mx4"/>
<listitem open="0" type="815" id="u78RFO4jh0MkX"/>
<listitem open="0" type="814" id="ukpfsZ1jA7ptq"/>
<listitem open="0" type="815" id="uCCqp6UFmUyQ1"/>
<listitem open="0" type="815" id="uAPxkDLLjHK1c"/>
<listitem open="0" type="815" id="uMTZvohhrmNdr"/>
<listitem open="0" type="815" id="ugfPMBYLfMP4j"/>
<listitem open="0" type="815" id="uiM7IsLx84uSj"/>
<listitem open="0" type="815" id="uMZJZTzMHcotL"/>
<listitem open="0" type="815" id="u6MfKFmI49XW5"/>
<listitem open="0" type="815" id="uhW0WK7Tw8jzd"/>
<listitem open="0" type="815" id="unEABXT4EkoL0"/>
</listitem>
<listitem open="0" type="831" id="uWQfGitACJCjJ">
<listitem open="0" type="839" id="uvn8JayutLubu"/>
<listitem open="0" type="839" id="u73SthAH5zOdg"/>
<listitem open="0" type="839" id="uf89LbU8P2tU9"/>
<listitem open="0" type="839" id="ucE3ge21K40yx"/>
<listitem open="0" type="839" id="ujmy3pgeQ26Qi"/>
<listitem open="0" type="839" id="umY8MrEM1VFve"/>
<listitem open="0" type="839" id="uDmhLJC7JhotK"/>
<listitem open="0" type="839" id="uRWCAbjEUsefQ"/>
<listitem open="0" type="839" id="uiMqHtn48FYKm"/>
<listitem open="0" type="839" id="ukyBP0PULsi35"/>
</listitem>
<listitem open="1" type="813" id="uibCosoM5C9ES">
<listitem open="0" type="814" id="uMgVV2QK7nWJl"/>
<listitem open="0" type="814" id="umBpDgQHPWmCa"/>
<listitem open="0" type="814" id="uDq6GDbPZQ92T"/>
<listitem open="0" type="814" id="uvYBZ8VG7zmXM"/>
<listitem open="0" type="814" id="uVbaYwGBhwkJg"/>
<listitem open="0" type="815" id="uo6AU3IofbYX5"/>
<listitem open="0" type="815" id="uPYVGaXG16zfz"/>
<listitem open="0" type="814" id="uzC7XxxxgdanH"/>
<listitem open="0" type="814" id="uE7eAmAP3IyCz"/>
<listitem open="0" type="814" id="u4x5QhxYlc4Q1"/>
<listitem open="0" type="814" id="uhHak0Hz9SDbD"/>
<listitem open="0" type="815" id="ujgCbuqZ9xilL"/>
<listitem open="0" type="815" id="u9NyH522SeaSa"/>
</listitem>
<listitem open="0" type="830" id="Datatypes">
<listitem open="1" type="829" id="uUFR10GCed46Q"/>
<listitem open="1" type="829" id="umD3Y5YgpHTL5"/>
<listitem open="1" type="829" id="uI35GxgSf15Ke"/>
<listitem open="1" type="829" id="udTQ2y9M1GLg9"/>
<listitem open="1" type="829" id="uMX44yrUJSq2Z"/>
<listitem open="1" type="829" id="uDoWSpaQhZYMj"/>
<listitem open="1" type="829" id="uUBHYF2VTs95m"/>
<listitem open="1" type="829" id="uQwi67sMHYYH8"/>
<listitem open="1" type="829" id="u3iolu1KBaeLC"/>
<listitem open="1" type="829" id="um5BRQatdPbwa"/>
<listitem open="1" type="829" id="u21ZDyvoF16O4"/>
<listitem open="1" type="829" id="uCrL5Q2hyX5sQ"/>
<listitem open="1" type="829" id="uQwhrzourTSFc"/>
<listitem open="1" type="829" id="uLtWoZg2r6vK5"/>
<listitem open="1" type="829" id="u53NpBDIiJKLh"/>
<listitem open="1" type="829" id="uBxtki3mYxNXH"/>
<listitem open="1" type="829" id="uCO3HE6xCfnkW"/>
<listitem open="1" type="829" id="uEXdFpDPOdfpV"/>
<listitem open="1" type="829" id="uOY0ocupt3vUN"/>
<listitem open="1" type="829" id="u1Ano2L3MNqB9"/>
<listitem open="1" type="829" id="unYkf3XdlbOvG"/>
<listitem open="1" type="829" id="uCN5vhsamIMZS"/>
<listitem open="1" type="829" id="ue50uK6Axr5uJ"/>
<listitem open="1" type="829" id="u6dG093IE5KRR"/>
<listitem open="1" type="829" id="uDhbC7HamBUXf"/>
<listitem open="1" type="829" id="uF3615aHJR1V4"/>
<listitem open="1" type="829" id="u8ik9hKNzgKcH"/>
<listitem open="1" type="829" id="uRiiCWnAy5RVe"/>
<listitem open="1" type="829" id="uppdevdmKoAeT"/>
<listitem open="1" type="829" id="usELT5EPkFTAY"/>
<listitem open="1" type="829" id="uTFuxlA0IbjaA"/>
<listitem open="1" type="829" id="uBAEhogVaCinW"/>
<listitem open="1" type="829" id="uBH80PyFvNP0W"/>
<listitem open="1" type="829" id="uVfGuVVTLsk6z"/>
<listitem open="1" type="829" id="uyTBx9P7f4VjF"/>
<listitem open="1" type="829" id="u3L4GKc1rVusd"/>
<listitem open="1" type="829" id="usyIvFLIaNduc"/>
<listitem open="1" type="829" id="ujXLj0TVNtFs1"/>
<listitem open="1" type="829" id="uMYRTkE3rxR2B"/>
<listitem open="1" type="829" id="uN4zCdvj7rsZz"/>
<listitem open="1" type="829" id="uBwekzeWX8icG"/>
<listitem open="1" type="829" id="uM9KJKNeM6Kog"/>
<listitem open="1" type="829" id="unl1k1K0LtpWx"/>
<listitem open="1" type="829" id="uDuQErHgUBVcM"/>
</listitem>
<listitem open="1" type="813" id="uaq5wFieCACsK">
<listitem open="0" type="814" id="u6zsQtVXJeK9I"/>
<listitem open="0" type="815" id="uHA8XrxTWFz1A"/>
<listitem open="0" type="814" id="uWQEWtZl7G4tJ"/>
<listitem open="0" type="814" id="umTPGzsTewAMH"/>
<listitem open="0" type="814" id="uPCAY3ou1J05g"/>
<listitem open="0" type="814" id="uwq5HGOI8zXHp"/>
<listitem open="0" type="815" id="uQk2yP91hB32b"/>
<listitem open="0" type="815" id="ubbXibbgDeWRE"/>
<listitem open="0" type="814" id="umM0MefO6Nslx"/>
</listitem>
<listitem open="1" type="813" id="uiXctorvzHidz">
<listitem open="0" type="815" id="uQaAIayfZmRTr"/>
<listitem open="0" type="815" id="uVMQYGF8r6f7y"/>
<listitem open="0" type="815" id="uG2ml0g1zFd1n"/>
<listitem open="0" type="815" id="uqtEpHdA20MJO"/>
<listitem open="0" type="815" id="uwCf3NOOs6bOI"/>
<listitem open="0" type="815" id="uJW8yFYg3muFK"/>
<listitem open="0" type="815" id="uKhEpTnM8aYgW"/>
<listitem open="0" type="814" id="urq8f5SKTIpyb"/>
<listitem open="0" type="814" id="umpKaM853vbob"/>
<listitem open="0" type="814" id="uRFPkG1OcyQzH"/>
<listitem open="0" type="814" id="uXafv7Bqv1vlj"/>
<listitem open="0" type="814" id="uhGnDpzud0eKy"/>
<listitem open="0" type="814" id="uscGkGT6pA18U"/>
<listitem open="0" type="815" id="uee8kI2xnR8SV"/>
<listitem open="0" type="814" id="uwLa88M9lPXpz"/>
<listitem open="0" type="814" id="u5pOlwHMbAkbC"/>
<listitem open="0" type="814" id="uhGqwGvjvNDrF"/>
<listitem open="0" type="815" id="u8UPYdPVsfJ9L"/>
<listitem open="0" type="815" id="uxvjOWjAixlgp"/>
<listitem open="0" type="814" id="uHBe39GldXDOi"/>
<listitem open="0" type="814" id="uyM1wKLI2qKzr"/>
<listitem open="0" type="814" id="u8J4qyzhXYsg3"/>
<listitem open="0" type="814" id="utwJCIWg03ZAz"/>
</listitem>
<listitem open="1" type="831" id="uhoYk9h6KpMug">
<listitem open="0" type="839" id="unJPOlWUL5Dmv"/>
<listitem open="0" type="839" id="ulhOoUKvgvVVe"/>
<listitem open="0" type="839" id="u5jKNi1695At9"/>
</listitem>
<listitem open="1" type="813" id="uxutGWImUrqt7">
<listitem open="0" type="814" id="usQIEDGKPGhT9"/>
<listitem open="0" type="814" id="uT50OpN6jOap5"/>
<listitem open="0" type="814" id="uCsd18DlWrWRF"/>
<listitem open="0" type="815" id="uN5CzQSYAnEuI"/>
<listitem open="0" type="815" id="uC99YehW24GIL"/>
<listitem open="0" type="815" id="uPf65fmeKYRyL"/>
<listitem open="0" type="815" id="uDDmEZMsSRNys"/>
<listitem open="0" type="815" id="ucT7DSSA4bprm"/>
<listitem open="0" type="815" id="uwUQqQE7Opx6e"/>
<listitem open="0" type="815" id="u62sIIBKT4rQR"/>
<listitem open="0" type="814" id="u6cDpzouIuCbE"/>
<listitem open="0" type="814" id="uwNi7W5uRzqkt"/>
<listitem open="0" type="814" id="ucOvTSRQwQ2kr"/>
<listitem open="0" type="814" id="uOMz2SVLu1Ltn"/>
<listitem open="0" type="815" id="uX2PuJKNHcwqe"/>
<listitem open="0" type="815" id="u7dL91xr3ZtpB"/>
<listitem open="0" type="815" id="uc06GU5TBKCOt"/>
<listitem open="0" type="815" id="u01Gb7GncAwwu"/>
<listitem open="0" type="815" id="uSEB1V0eCxOVI"/>
<listitem open="0" type="815" id="uXqgLkMJUXyG9"/>
<listitem open="0" type="815" id="u36iwSk1gAsEL"/>
<listitem open="0" type="815" id="uurFGK0TAq7zx"/>
<listitem open="0" type="815" id="uekZfs8wb856g"/>
</listitem>
<listitem open="1" type="813" id="uowtOePSx4RnM"/>
<listitem open="1" type="813" id="uAwVIyVVNjSlp"/>
<listitem open="0" type="813" id="uszTbwciTSOHV">
<listitem open="0" type="814" id="uMd0VTCwpENXT"/>
<listitem open="0" type="815" id="uZ4qzz259Z3S3"/>
<listitem open="0" type="814" id="uUWwF5fgtv9QG"/>
<listitem open="0" type="814" id="uZhvZ4Q9CC10o"/>
<listitem open="0" type="814" id="u0Q4w9Mkq75IR"/>
</listitem>
</listitem>
<listitem open="1" type="802" id="Use_Case_View"/>
</listitem>
</listview>
<codegeneration>
<codegenerator language="Java"/>
</codegeneration>
</XMI.extensions>
</XMI>