From 41b99482a1f6c648d7cf2fe1287b32f8e3ef88c7 Mon Sep 17 00:00:00 2001
From: advan <advan@JinHong.ern.nps.edu>
Date: Tue, 17 Sep 2024 11:18:06 -0700
Subject: [PATCH] Final Project

---
 .../Yu/MyViskitProjects/FinalProject.zip      | Bin 0 -> 24744 bytes
 .../FinalProject/AnalystReports/Viskit.ico    | Bin 0 -> 2238 bytes
 .../Assemblies/examples/TestAssembly.xml      |  42 ++++
 .../EventGraphs/examples/ArrivalProcess.xml   |  27 +++
 .../examples/ArrivalProcessTwo.xml            |  27 +++
 .../EventGraphs/examples/TwoTypeServer.xml    | 102 +++++++++
 .../classes/examples/ArrivalProcess.class     | Bin 0 -> 1600 bytes
 .../classes/examples/EntityCreator.class      | Bin 0 -> 787 bytes
 .../classes/examples/ServerGeneric.class      | Bin 0 -> 3297 bytes
 .../build/classes/examples/TestAssembly.class | Bin 0 -> 2833 bytes
 .../classes/examples/TwoTypeServer.class      | Bin 0 -> 3397 bytes
 .../examples/TwoTypeServerAssembly.class      | Bin 0 -> 2958 bytes
 .../build/src/examples/ArrivalProcess.java    |  72 +++++++
 .../build/src/examples/EntityCreator.java     |  42 ++++
 .../build/src/examples/ServerGeneric.java     | 160 ++++++++++++++
 .../build/src/examples/TestAssembly.java      | 106 ++++++++++
 .../build/src/examples/TwoTypeServer.java     | 196 ++++++++++++++++++
 .../src/examples/TwoTypeServerAssembly.java   | 108 ++++++++++
 .../FinalProject/viskitProject.xml            |  27 +++
 19 files changed, 909 insertions(+)
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject.zip
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/AnalystReports/Viskit.ico
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/Assemblies/examples/TestAssembly.xml
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcess.xml
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcessTwo.xml
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/TwoTypeServer.xml
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/EntityCreator.class
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ServerGeneric.class
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TestAssembly.class
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServer.class
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServerAssembly.class
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ArrivalProcess.java
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/EntityCreator.java
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ServerGeneric.java
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TestAssembly.java
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServer.java
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServerAssembly.java
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/viskitProject.xml

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject.zip b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject.zip
new file mode 100644
index 0000000000000000000000000000000000000000..e2add3454d15bcca8457489ddc78a17d94aa0b74
GIT binary patch
literal 24744
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

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/AnalystReports/Viskit.ico b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/AnalystReports/Viskit.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c9d5908c91e327600695feac75e406ee99fbb30a
GIT binary patch
literal 2238
zcmeHHNs`+z3<M+^qBOQ=&z{sAbJqv*8vThs$Yb;;rkfDyrD}4Vli{MRZm=8RVu>g|
zZ*PL{D1W2KClUFL0ZRU0kbf_7&XV&gc}<e|ysok){$k9t<diTL$qU9TvM#_2_<6xR
z>iCO+`75*;g;wOU%#sRT;0w<Me$XcRCg^i|ucaG*+kx8-eB=)B1!9*4Nwo+P07J!B
zkS`eOTb}bc=Pa0ShBUkIm-8&`NO-6M1%sX96V!IQZ#%@Ga4E?$neJYYNyL|`hfsf+
zLL2a{>gnCU=~bgL^nK6QrpT6m1;HLr9ok2rzVB3R%ikBGuBa=hzi;}z6OX<yqdUXQ
zy#CQ~UzRE|I{ZQX_i5Vi@0@^PDWMJr<`Gz|6Qg5MBmTT0c@pcsf~fOhqG1Z{KnxB;
zJk~AtCRL7A|BMZvw$>^~_~O8V?V+uU2kFO&-Smpj!_(RMPd~?ToW?sppKzF_I7UF%
zTj)Fn^cTQYh$B~H&l_=I5>fNDe$^jB#6g+WJfANNd67=~T3?$X?iag0>3O?O4IRAy
zHoeu4F?QWU<b@2_me|Gk5F?he5va-AS-eUIji~54%MIm!qy@F7(<=0Z9V!>eCb)ur
NKL7uJwo)Jc@DGr|N>2a)

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/Assemblies/examples/TestAssembly.xml b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/Assemblies/examples/TestAssembly.xml
new file mode 100644
index 0000000000..670bf5e342
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/Assemblies/examples/TestAssembly.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="TestAssembly" version="1.0" package="examples" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="arrivalProcess" type="examples.ArrivalProcess" description="">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Exponential" type="java.lang.String"/>
+            <TerminalParameter name="" value="1.6" type="double"/>
+        </FactoryParameter>
+        <Coordinate x="120.0" y="190.0"/>
+    </SimEntity>
+    <SimEntity name="twoTypeServer" type="examples.TwoTypeServer" description="">
+        <TerminalParameter name="numberServersA" value="1" type="int"/>
+        <TerminalParameter name="numberServersB" value="2" type="int"/>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Exponential" type="java.lang.String"/>
+            <TerminalParameter name="" value="0.9" type="double"/>
+        </FactoryParameter>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Exponential" type="java.lang.String"/>
+            <TerminalParameter name="" value="1.2" type="double"/>
+        </FactoryParameter>
+        <Coordinate x="360.0" y="190.0"/>
+    </SimEntity>
+    <PropertyChangeListener name="numAvailServerAStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="numberAvailableServersA" type="java.lang.String"/>
+        <Coordinate x="360.0" y="290.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="queueStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="queue" type="java.lang.String"/>
+        <Coordinate x="510.0" y="190.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numAvailServerBStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="numberAvailableServersB" type="java.lang.String"/>
+        <Coordinate x="360.0" y="80.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListenerConnection property="numberAvailableServersA" listener="numAvailServerAStat" source="twoTypeServer" description=""/>
+    <PropertyChangeListenerConnection property="queue" listener="queueStat" source="twoTypeServer" description=""/>
+    <PropertyChangeListenerConnection property="numberAvailableServersB" listener="numAvailServerBStat" source="twoTypeServer" description=""/>
+    <Adapter name="adptr" eventHeard="Arrival" eventSent="Arrival" from="arrivalProcess" to="twoTypeServer" description=""/>
+    <Output entity="arrivalProcess"/>
+    <Output entity="twoTypeServer"/>
+    <Schedule stopTime="100.0" verbose="false" saveReplicationData="false"/>
+</SimkitAssembly>
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcess.xml b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcess.xml
new file mode 100644
index 0000000000..b22b9b36c0
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcess.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="ArrivalProcess" package="examples" version="1.0" author="advan" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="interarrivalTime" type="simkit.random.RandomVariate">
+        <Comment></Comment>
+    </Parameter>
+    <StateVariable name="numberArrivals" type="int">
+        <Comment></Comment>
+    </StateVariable>
+    <Event name="Run" description="This event is fired first to facilitate initialization of all simulation state variables">
+        <Schedule delay="interarrivalTime.generate()" event="Arrival" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="30.0" y="60.0"/>
+    </Event>
+    <Event name="Arrival">
+        <Comment></Comment>
+        <StateTransition state="numberArrivals">
+            <Assignment value="numberArrivals + 1"/>
+        </StateTransition>
+        <Schedule delay="interarrivalTime.generate()" event="Arrival" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="230.0" y="60.0"/>
+    </Event>
+</SimEntity>
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcessTwo.xml b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcessTwo.xml
new file mode 100644
index 0000000000..b22b9b36c0
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcessTwo.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="ArrivalProcess" package="examples" version="1.0" author="advan" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="interarrivalTime" type="simkit.random.RandomVariate">
+        <Comment></Comment>
+    </Parameter>
+    <StateVariable name="numberArrivals" type="int">
+        <Comment></Comment>
+    </StateVariable>
+    <Event name="Run" description="This event is fired first to facilitate initialization of all simulation state variables">
+        <Schedule delay="interarrivalTime.generate()" event="Arrival" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="30.0" y="60.0"/>
+    </Event>
+    <Event name="Arrival">
+        <Comment></Comment>
+        <StateTransition state="numberArrivals">
+            <Assignment value="numberArrivals + 1"/>
+        </StateTransition>
+        <Schedule delay="interarrivalTime.generate()" event="Arrival" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="230.0" y="60.0"/>
+    </Event>
+</SimEntity>
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/TwoTypeServer.xml b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/TwoTypeServer.xml
new file mode 100644
index 0000000000..e17ab0cc4d
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/TwoTypeServer.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="TwoTypeServer" package="examples" version="1.0" author="advan" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="numberServersA" type="int">
+        <Comment></Comment>
+    </Parameter>
+    <Parameter name="numberServersB" type="int">
+        <Comment></Comment>
+    </Parameter>
+    <Parameter name="serviceTimeA" type="simkit.random.RandomVariate">
+        <Comment></Comment>
+    </Parameter>
+    <Parameter name="serviceTimeB" type="simkit.random.RandomVariate">
+        <Comment></Comment>
+    </Parameter>
+    <StateVariable name="numberAvailableServersA" type="int">
+        <Comment></Comment>
+    </StateVariable>
+    <StateVariable name="numberAvailableServersB" type="int">
+        <Comment></Comment>
+    </StateVariable>
+    <StateVariable name="queue" type="int">
+        <Comment></Comment>
+    </StateVariable>
+    <Event name="Run" description="This event is fired first to facilitate initialization of all simulation state variables">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServersA">
+            <Assignment value="getNumberServersA()"/>
+        </StateTransition>
+        <StateTransition state="numberAvailableServersB">
+            <Assignment value="getNumberServersB()"/>
+        </StateTransition>
+        <StateTransition state="queue">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Code></Code>
+        <Coordinate x="40.0" y="60.0"/>
+    </Event>
+    <Event name="Arrival">
+        <Comment></Comment>
+        <StateTransition state="queue">
+            <Assignment value="queue + 1"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartServiceA" condition="getNumberAvailableServersA() &gt; 0" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Schedule delay="0.0" event="StartServiceB" condition="getNumberAvailableServersA() == 0 &amp;&amp; getNumberAvailableServersB() &gt; 0" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="40.0" y="180.0"/>
+    </Event>
+    <Event name="StartServiceA">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServersA">
+            <Assignment value="numberAvailableServersA - 1"/>
+        </StateTransition>
+        <StateTransition state="queue">
+            <Assignment value="queue - 1"/>
+        </StateTransition>
+        <Schedule delay="serviceTimeA.generate()" event="EndServiceA" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="180.0" y="100.0"/>
+    </Event>
+    <Event name="StartServiceB">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServersB">
+            <Assignment value="numberAvailableServersB - 1"/>
+        </StateTransition>
+        <StateTransition state="queue">
+            <Assignment value="queue - 1"/>
+        </StateTransition>
+        <Schedule delay="serviceTimeB.generate()" event="EndServiceB" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="180.0" y="260.0"/>
+    </Event>
+    <Event name="EndServiceA">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServersA">
+            <Assignment value="numberAvailableServersA + 1"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartServiceA" condition="queue &gt; 0" priority="HIGH">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="350.0" y="100.0"/>
+    </Event>
+    <Event name="EndServiceB">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServersB">
+            <Assignment value="numberAvailableServersB + 1"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartServiceB" condition="queue &gt; 0" priority="HIGH">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="350.0" y="260.0"/>
+    </Event>
+</SimEntity>
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class
new file mode 100644
index 0000000000000000000000000000000000000000..9ae9ff1c1968f2c75a16bcf3f92168383699f3f3
GIT binary patch
literal 1600
zcmah}ZC4XV6n-WUHi;`pK-3}yd<_dt>Pu}k)EWqAG%81se(*~NGNxmbUC!=6%YW*J
z>QVY~PWuD;qda{kyGTqt^z1n^vv=-&?sMPf-}it017Hb{b4X#p!JvyYh6KhV-Tq0N
z(z<T1_(q%kB^fD!p+)U$b5~%XFt?dQ23ZF=7boBfoKe5X_D)MhrAip;J=t0dgKZT>
z0%MUfHQ%UE#upp9O{|$hJ#i9BzY(-c&pO+t47D_>Z1GbVb}?f4q(eoJ3`PZ<1U^gm
zV=l&VTHuuKgP%GU{RGb7tb=ndKEtHI<S|SHGEL=^ydi1EUCm+&pF5a#F@srwk;HZ_
z)IrEhkzsXZweq~aAuxJK;_$NU;3Db1l6$h$l76%FbnBJcHa3-)U0lIcf$Yyxo2qI_
zB0VhBk5t!9sQqTS+K2g~ODV=H&mAh+0`4i_l&y<77arzGtEtSB-S(CWlU%Y$jI3r;
z`h|-kN&>@vkAkRWP|V>vZaBE<;w#)D&=EUZ;HC;0Jxjl<p1u^ADAeY<s3jU5Cf~TY
zjXMJQmpW8zlpPhC{pBB-5hl6*iKx49k`VhPpUOk0OBY>y3wEtz<CeDh#tYrdlFSMW
zE(Z<Xj?}fU;skBTtrjKcp6zlB+G<lrnu3b&2Syql_{`kt`ks#Lu&l|D;Oz6qa;MCm
z_4&v9wAtUWd(vdZxZR5%wL7&M0e!IijUXus2Zwz72WOhxkLg!>&X^z$Ng%f#?1tNF
zRof`W669nui?({0Wzkc71XBDsOgs(R4&a^zX<>-+@Ax;%Kfyii{SNV(2Z4KB?UVxN
zX*7ijPZN|cQMUX7A|hb5v#(H^hRfALdAzq)ISb{@AHX@n8^!={rinL00@f)XfW)qw
z!pS3(n8Ib6T%qFX2lbns6L8kcpYq-!|0gB{-r)Se-?(sqOW*e*%=1xLAj16*2o0Vr
z(M9h7g+-4b3xhwr!-ALpa`F#cvr=v`-q-)@Wr8UHu5rE2pl;w2hp3EO7_|>*65@p<
zHACL~JLG#A-lpvxYCb?M(VyZTSA_xoM)<fYHe+DZ3p?;!ZPvS07k=$gtx)M9?)Ir3
PpxlePN~K3MPoe%FVE$Zy

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/EntityCreator.class b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/EntityCreator.class
new file mode 100644
index 0000000000000000000000000000000000000000..223b0d32e9af9d75e3599736e4c729b051a3bb1f
GIT binary patch
literal 787
zcmZWn%We}v5UloVZR5lboPZrdFweCQ_{L=sk`pHfWI}|4QIyj-9$6FiVeO6$`77X%
zNFewCJ_^y3-3TXKrl-4Ws%m=X_n+^-0BoaEL<(sOnG&+d5$cihJ}TWEDsR`<N}p|u
zND^`{m9O+GLfUSR^2ifb;&v|#)k3%h6miQ!se~1*63Pk7L8yX|NeEVdcdz$;a7d^Q
zZZsVW6+-1yEJW88{<Qmcd@4`0g&M0Q*jTKHD$+%)Vco)=67HfwSeKuLH*;mwjWIi+
z6gmhAg-=51zH|kvzqSYe=!ZH~{?zIJ=i_(@6nk*mS0FQwh4i&!<TpyVhfTiJRO)@<
z@qFrbd+BhZK*;O_6YiD=%9s0dZ!E(@F?PAqcsJ+idUB*9#f6^l2U=(q_z_`kuuzeC
zg98yVxt8G@F>?r6pEK@f_1VnC!X!wh&kB>^+ItXc_LcRx;j~ADybfY-gyJxmhbMAR
z89TLWvwLo4g%)2l#eW3IfJKqx>^^5L&WK~Sa{>Cw8^RW^<{tq~25;a2?<!nxaqZzT
zCy&fRc+4bpN%Dg6hNRi4S*zbr$oxe4DE$M~qYK;~o}>QZCi4~=%u9HJrwK=c&l}Ap
h6NVlvLwJVG1ZJYCW;^F-elhq<zcJM2%;s7O?Y~s7uGRnm

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ServerGeneric.class b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ServerGeneric.class
new file mode 100644
index 0000000000000000000000000000000000000000..d18e66dbc7c39b9ae85af6d3249268a450b4156b
GIT binary patch
literal 3297
zcma)8TXz#x7~RtgN!w|G2<1|0xe0BGt)fV=1ue9NKnjJF)`9{<b0|}inL0BG6ub+F
zg7+(4@X0sVQdu_MmM))t@eirX{mo3;5F*Q$IWy;cXP^D;?{emke}4WAz;1k5k1AA0
zP@|(3i!>~A&FneT>rR>3LCZ6}+1-Y#G%V^fEz{ejp}M_eEP^Nvr;WVPo%760cha=Z
zsdUnGy?R7YU55tf5j5&(!eR~0>VlD-$tbrwrJTHS_9{y`=A?$&XLBk??B--8sNQ<Q
zEY%UieHxa#${V#kBXcm9J*}Jo$kkBOp6D18!{s`fu|mTN8p^6UsYcDL^3O6n+tIML
zJsG;@7*^WOb|3MFF~czpPxT5+6;|n3Eh^MHia_GX8Xc{;Uqj5RaJ-ffleIe5iAl5N
zlk3kLX2v+3Q6bAH)(OLnIv&6#4XdV<7kE)_=!=`EM>{$qi0kOY77a^%Z8C;6)t#_B
zHKpiEByVJL>d+Y;N&f@&N-ccpx^#5oAre1hI%>qRXO!d3?m0^!O1`<hWLL^_OlzvQ
zWaiN6X*KCllPH>m`y)CY#WoF5az7jdZDo6Sa9IZM?Ct1@V26&!Majlc^dOlu)VUtB
zL1H7h(x+o5B&&>cno%xgRpf9if+saBS&$)E5L&y%#XTC5rThNVo4frxe)p8PJg7lW
zd4^L=q&n=yz6cUJ_Tzwt#i2(dj%hnA5N6@N#NK@jRWZSeD}Ee?bsWSYI)2_Ty#bXm
zxM6<<!UK2hu0*eBB;}b`md7I^IIQCcQbBlzOvm+DoyG9@c@b(Uwnuf0iEV?UvUXni
z=Az|OIwo+8-Z8{J%Y+q1niW4FL48`sGh)$1i@}UB<EpfTQ7Yi1j#DrwTUz{^->D5m
zajG6^s0hwTK2O~d$N@XYDv_`clqPX7-5Z6ep?=Uxhvh8ioYRp(R+?1B5^pW4Q?bGu
zU}GkNXLUH@M$0|AfiESy6dQvC-_wzk$VUbShx(5uM@6smIxZCT5*ZR!YS#5sR%l+-
zamkm%D_Mx*lIZ_}ju)j3)VStFzXV>^@rnebb~0mIoN2&i9anIb$4RF!vQ+5KXoeZi
zluDUXmf__bspue=%c`-js7O$Ly}NpO@*X?Q4U5^eRnUk=rCYHx9m%odXVsYLnw;pj
zEVew)v@JH;<;lG1%DpgRIHcq$XV{n_Sgpk`uGf0AGcs127PBwZwkwE3*BzZ!!@BlF
zkygb(b&L@&ZIcaMOxyjAW3u6~lg)SV&>JyqWTj4?Bbm^NrnFsJyONXkLK4vtidyL=
zS;6_r7e^aQ=^nX45ju*+_CM5*dgLelmdTy6bIv47P{fY~w?%k4c1gSAt<u0d30TA@
zFCo5FN&a)JksHS!dBsA*YyR3b&a)2vc_tvoC0ygR&V8@*>mgM0o3rsBpv8YdWa0<Z
z&7uA~&S`jq&n8*`apJ5dZYQquYYo?K5aG?^sB+QjlEPd5>)S5g@$ui~Q}B0lx9neC
zh97S!@XRd*EL%9KnY@6m@T6`mBfC|2m`J>UL%hC_?@HpWjK{x6%N*J&@{SP)*v98$
z(Ale2pobXm%_H^9BgNLo3)t`@HW%<<JoYd@w(@O(SD?U7G-4M~o+Qfq_#otyC!YA%
z(^<e{vU8Z6>iN+-PN*$1Q~fKRD4?J7ZMP7M#|D~iV<?zRj>{=kzRvfv699wcn?N0}
zl^6~%qQkuU50d=|KICc?+F#fnp{0h8<~{k7_KUcBU5+kb<acaO^56|SMW42sv?vr?
zzlILVEQcZ^k~<je85On<ma;8id`C^3jvSxEiFoYv%9<ZBNrQ0?#r?6f+&%phSd_Qn
z*3i$1>dsUFfm=cPY^C_XQKsz#Q|}l<d7L-&3I05sL?2W0048ym_rU}doADH-I7{a~
zo)`Elx+ZCHs>GvH_wXpcKO{XHk3H8BaL$)-_9c4$UV+#|Il+>ug~f!ov5}WU2V5qi
zhauz{iu2??>j#8^_!}p+YAltX(l961GopTt#+jTg3wb1elfZKXex8<}U{h${%28^t
zmTI<q&6hwqNqOKULi0D4?@~?+(4BLbE{DEM=qt3miBCiOQt0V#%b>5(i2t7zOxwy?
z+@KME_vnDI*uXF0)(|AmOTQyhj{R=fe?Frje<JvljjaSIdV1oUGCCh}iT7s()7f&<
an>6|ySLaQO`W5hMIgwj5`hq7_;nu%H-}1}=

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TestAssembly.class b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TestAssembly.class
new file mode 100644
index 0000000000000000000000000000000000000000..1f69eea93b9c735d4496bb4a13bf8a50cc5ebbdd
GIT binary patch
literal 2833
zcmbVOX?GK46n>^nlQbO)q@@T*DJ_LGEKznWSh}HwN^29U0a+%=+jdGa6J{obxZ#5P
ziaWUe0YB)6lw*(n0FV9?zxl~89-nt6O;U)Qqci8scJF)dbDz7s^XuO~{Q_VJ--XbC
z#sGXOn&4N^xuDyZbtk6Tw#cQj#n`m_K3INL;6JJxy7Q=l#z^0^|9FyCc!YSi1fZ%|
zg;oXY#5FCK&k8%15VliY++qtS?wI+6o)Zduk&(V>xpIw)wFoN+Q9LcIlxe%tv!1kF
z#X5A*D5a+hxs<S`L_VvhHAgoMTbdd36dzErL7Le}#YsyyoEkkonwDcrZ<|y+DAlAr
zS1n%1<ut44sYs1Z6<ef62Q}i_f~c`GqB&X+TNSiwmZdLf*-6Vx3)>E$N5T3^*n=yC
zLG&tU8NHS_4PiLCmJMKsf;IEnf)>ka#%ydNH80YRf8eiM^0*zsPV5R`w~9T8txy~>
z3#ly03D9#vOw2F}k~m(q<SF!r@G$lUuusK)98l10>p7WKOEWTNE;i-frZr2~9C1QR
zJEm16z**sp8MdPtX?hrm)L4x>q;t0aT+JsBa)00WeM}QZHx9|lI;@~8a$i+1g^#G{
z$592UmdV8R+$h;{2yI6lFw52|YW;oFL9j4aIakd@F)!l6S`bzM$C=1VViL77|G*!=
z$>Vqbz@PivBZL8*kboakFc29VTXs^9xc>VJC73Y<O<E@JSV5d(&dNn0E9?msr!m2b
zXPko>E$;|R!TEYoR#RI}LQM|-!xu?!1D;edCA)lW+7e9tGIhGJgGeZ7GYYxE1x?R-
z)D6ZR%?V<fg-rqb&Xs8_Ku>ND%21wGk;GXAJq(4-kQbIy9G+uUi*em{gdwb9(=b@x
z>{bOw{%4Gm&Sw-fUnz)!@NiuqyY6ccm+rwn<msgT75k9nBcnn{J~n%N)Q8XBo~^bJ
z`@@NmI8Ha|!j_|qom6ChgfIhL7SFtF%X{<Wm3US~4rHQ@eANsV*O-FCb=G;7QbIHA
zSbc~reVK~9iYqb|y>(3An+!>St-_H6ba({ZjYq01sJL3AG9qk!)|fOoUR}t|DB{@w
zo>TEWURW`!;zg!E$Bn`)I3&c2LN^(LyOtH0<AAu1mjZZM#VgWBn_KNGb=Ww0xgu)>
zaf5T$n+aVb!eOCupkK%9a`k)=Z&JE@#UV*~Tg5wgS3#KLZMoo!L&ejY+=8~(p}R8D
zD%vj0_obH)?#k@)6m;q5Hu}*D1`=}&G84j0d?L%@Qx;>bzo~*@$Zm48cN3qh_(GD<
z#1gZ}m~Yt35aQ}_-4Ncsmyp_Q0+)|5W5%RXPSaUT9g*7ET%HSk?A%b?ELdrALYE8I
z*6zl8B-hwVh8o;0JOH|epVwP_Poj}eKyP#rO0*q;5}KopC9ID6N@$ap_42Y&e%t&5
z6&2j(wHrZR{qP}x7Cx^*GdJ%LHu7x?RBYq_fltn$vYYSuF5QS|xN8aB$?!Jc&)A-9
zY)9k{qVYR;Xb}fXI1&vXTf#un*Hl#)EGtyM3|E$nx=S7ppXAvUK32jw!<ekXJV>`d
zm}dvicKJU*c$=_~d>rD_D0(r59!&7t6r#9<UC3ZJp>kZ5p`T(P5_(TG91ow7PM(T}
z&xOyIpDu<q?`aX~s^bn)4DQV#x@yM(bkbcn4$~0Zux$7Sb)?}*8eYOoGJIwcb0u7^
z_%Z3n6`Wrdl-*Kr(G_URf-(w|;agP{UY3qxHGcp%U<47I#9oYJkinipf?=N_0(N~F
z(N^9iq9&RtRLyvmlOzvkDgLseK3lGxLqFnL2`};*ezk<x<oylr&TN<PRtfL%8&g|(
zcI8zEovb3@0u5h8E0fRxjcld(SCqy<CZri(;p;NS{d6h|xqS(t<RU&CU&77g&P9A&
Z!e>>Bt<(Z$S($TagU+?z@Vx=w{sS`9<mUhY

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServer.class b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServer.class
new file mode 100644
index 0000000000000000000000000000000000000000..32f3485bc9e6513c0d997c15cd18decc559504cb
GIT binary patch
literal 3397
zcmb7`>2DiF7{;GXoY+Y>N#mw1Ip_tU&ZbRh%hAT^;arVdw@s7OJ)zyin`D!Co$juk
zhN~@<f&>VJ0I5h+;sZ!XfGBDVMJgZo$lrtz&+OW<y><ggmS=b7oo9aY9<%f3-@pA1
zU;yveqYBl2_+-?eRzi!VCl_?PcS27N8@6t*45*eSp|)Q)bo+>e>QGm_9s$((Q7>Zy
zWC>fe8)|ZCQL}m{ms67~OWK5HW;9bmv!&Um)5$5#bbG9b1YaoX3N*@S60^&U284XG
zj372iXrhFetWRr`dQzjnj!-OzXsSjcmFyjNnz(A}s;z}x@y#-}RG3cbDm*2lRqV9J
z)F>_%YnRc1r-?FK&ddEq>u9rG#t!V1u+?xj6v?RiqB^yh+pE}_6ct*}$auD*)__oX
zPR8zaR2-Ww8H%u}xt`Y2S^ztQ>|Pl?Lbh!Uv5cS|&tsn-`(+%!3*5}Sno)ZfRb#d{
zYS`MW2#7zUE~d3JGmII-5G%6?i=|$Y@iGod2+ruHHfE-lG}B%goTCu)V0Wl!)`V^9
z#%#E#=gic+Hf=Kq0qho9VHy4FV-EzN2+N}~jtR>EH+WWT+>ZeX8w-f8v@jhKfWs1E
z|B0oX?s9pT06s3EVZv6;e7;5M5XA{UPRfYklt@LlGR90jWwJ2n&Y|Iv$hp`got@9g
z{Gj8>Gcv|-Rzlsfs@p@_qRKfZDnJjF&8~!)HxiYZ(F{8rz=Q{x&O9e!!?2Oa)eQF#
zz<C)La8ZJ6l@!v`dBKWxv;miK#gA8Hyo#$5+SjQ$CuoLdvizL$VJHB#gu+SdX&DJG
z1qY&-kufX$>l=+89~Hd1jCoN2jc%#s&kixPC?i=u<eV5O8B4g%poj`llSF9=6{mPE
zS-H+&D#6jFm~Lq9=`<+{Swic0nkQaTi|dxoj)-BTY}M9Nh9zNhETdcETpUwPirbob
zN?i)GNDaPmyvF9a$F^EG>@{!oxSs7PIiVyR4Mn5t`hMNPt~ggqq{zy|N~9vDsk5rx
zM3`P6Rc<#;iBw58bH}AUEU$({swh`H?;LNUFH29~?eyt7sX&i-=1?VIlSG^p66z;X
zX>(c|(S^T*C7+8PQR>*qAXo9j<mW$=fKOE-;!evXc3P$pTc0?Oot7u6)AH10yBYKk
zYB|s3+fKeoY-^NXAU)uN1dIRTI{@sX$bQ&-3b8-UzRYF#EX-R-TDV{_VV9kb8y5Im
z;g5DTc#Z!;e1tP<*tQ9Ar9BJ3(vd}jvNwy3N~<r6mcoi{L;}w(9}c1phtP;VY(kiy
zqJFCJgOt-8pr!y8np+hmi?&s46YZ{5bSl-W2o*H9IIAC{W&|?7<t-Sb(h%przNQyL
zwWAkOg56Zv^DBC@cu@%+;!9ut<uG54xGx3uAa%j|Y`_V$;Uqs?r>OMCn({q92`^p{
zllv9rAws@u<Wqu&+o_e4tbUA07K41-b00w^IMVntM%~WS=SA<AXl2vq42~BM3X&=(
zTDzDOz&Lk1!8^kwKd^Ch<2*fh5u>=orz?1q7EGGI&?j{e^Q|?^&-hf$!E0hM2XmV*
zA$%I_&S46l6fln*cDF(sv6YVUtpq2z*Z3n`l2Ejlg5z9VmAF&HohI%Kx_HJNz#MVs
zaTN<ByjhX3&mrs-gq;jhj!*>Ze-U0I;ncqoE|Ks$2~85FNthwwG6`2mC{p~^8llA}
z5$bS}4;ktw_>hUP7HTaY>OwT#O1R0zZ*lS4T>KqI^A4kV*NGx4K}3-Nw<`kVT||H<
zxF`=G(&>o+9}wU}0(?Y(j|uPz0X{7OXcpI7Vu(`T#r+Ep)GF<(m@CBEJxD&M))%zo
zEiz{>TKC*}h`H}M(LHxWl>_(C%!MmTFL<TDqV#>v;-!-R0;O1b!7KeWrFn7AnHH$K
zR}uG0e?#eSY56t-P%a(+$wU1erFp5YBt7Mo{(;gz((+D4=_#-D1Df)BTY+MmcY~`m
q;+3+3X{Xop5si4KtY8}Qnm(q{yDSE;8?rFGtbfqxE?rZF_x=ItiPg3M

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServerAssembly.class b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServerAssembly.class
new file mode 100644
index 0000000000000000000000000000000000000000..891976c4198510717712fc7952b01b4c56cc07cd
GIT binary patch
literal 2958
zcmbVOX>-$76g?t~9U}-RA+(`DNC+fmaajWd2q8<Gl0t}6QxhmC_9H0Rl9A+qTiQYk
z-S>?`_w{@G!C{(de?Y(W=X5&L>3Nb@k}}guGtzsy_uY5yxy#e<fB*6ufTQ>^ge9m6
zpjJg4>J_Y;HJnR^8_^v{q^DB3NX(n}7p4m84;rT79#&A()g7xp5~mejA>K;^P*p6$
za#|5r^>ijBoXEr#Ya*8sQDM&tyKH5tBiyKKWhRWYP*B@7*d3E5R;XABO+kp_n6RfT
z$CIA+rOhf<p+&(eN{?sLQ^Fn>nUs;xUBfaRX=cP%d`QK^(o8EA$85uNEA%+DY}b*y
ztx@raRFn2RwP-e-*6p0HA~n{jST8kNs1em?MTMO~-PMEGpkTRf+s3S(8ndm0aGU@-
z6s#`!-(MvRqEo@rp{p6o6sBwFsQ@-BSTUo|>XDRgPDf5m&4`3s-}l!p?+RfHwg#|G
z#dbuh6bG&BREp#TxN}yVxIiyR;%M2Duh1L94(tqImx|rkqoCa}(lWfZZYHgCWZZkj
zblcEfF{~$C%gzztv~WjE$JNaQcNpxduo`tq=XCF6#U~$fZ};c}OcO>sdSr_2Q_$A+
zKvh442UPUppaNA-CZk4rh-|rpws{dSMQbIs-tJfs%+O_SW%31Zgn=vtrYbS(`~JKm
zue%}iVNl{6Qqb2mGE%g?7+<{)6iN(_F+O@S<J#vQ4Pu0oLN)|(jKQqV8>#Z7g2pP$
z=XS^}JfUI?Cs`HbqCcr;TwyCXyBHJY@D~DA5vTv~MPiS#)IIFP^;F3Z;#q=IDxQ|T
zVr9Y>%$p+bhH!#7t)SV=ru%1gBjp#pb2RGeZV+c!7L>4RJ)zF@Eh<PSpHXoR=M{9&
zNtRMZ*lup%B5Oj78jdSWVGmfQ$>LzGE7<=(y_cR%Eri(bLrnfF#Qq>yVk>?8Bj(Ah
z$O?bWMFn-2<y0~=qvDceX06Z6;(oA2q|24aGIJxOklj)mbYw?lLFQOyA*5i*WX#Cw
zUKmQhQfw6tTm?-euA)DA#uV&ZWSwtmO6aB&SsWrONXBGV#T6No&P7ZwjEW>6r{Y;j
zK#Nbn{dlCxH5JcSs0<3nm^Q~Oc4-fC175`S0B)#w2`^W*yl9SjK;~+!EZtq@dtq2~
z!CT8*Ota72!Ycv1s^T@dN0V0&)jG`Oj9ig2gLs4O+ixvxgTiIX@?5xux8&+f5bsdB
zt?H7byr<%Qe4s#Mmn^1!?r83~E>E&ei_l%_j3sRk=0|dukME0Yv6*`G^H~10ih+rX
zbTS#jZQPY<@fp*#a=-DcY09$lqIVl#sQ6NnP{$Or$yn`xl_bQ*QNtAe@i`&26*PE!
zjF=ZJDy4OU_0`f<+2RYWqdUeP6t%K;LJS*nVQW<rEuQY%CF$5es+M^F1_2NQ>iPVN
z^Ehfa0y@KUP{Pd!<k1kW$)hn`n@5v;td@^f`EBh_R8;UapX~_pS&v!-u$1E!XyDI4
z2(6s0hl-8-@u-z;sj$r-oXc%)gtfMLw8yoLwZCFhyrvml_YjWW!=rQ9o5%jJc4!`b
z@!GnwLVrPF;g>lKcuR)0$9X@YjplJYtc`oKHtmo%o2Z=4Ay#(bFd7L+<K4o$S^j$v
z`WoyaS3MjJp%WwMzzKdEM;PaM_?y^@Ydrj~BSLrBTMF(SqqEYzj<6QjCgs*=!<w!o
z3L~LS`=dD+WdJP<1GrrXd$@fM)?q(+JwQXO*@EGl)RBhAXl@><xR#iMnaAal^=w!Z
zo?yBtC~QVS+!IU|1qEbTM*3<Qg&#>t#vuRFhS7yl?8I^OV*<wzqx+|bfGwhcXanC8
zQ60@ZS2p8k*Ccs3L-98y_31)>_56$%^0>*T_Ie&~%J<v;n;DVEyLo)bZw!BF?8(a;
ztYfBuL8yn0<(Oi~5@ajMU<mBR1?Jzk_^yC)H#e2Z-aL;`d=8(C&f|7`%N*|H@p;+e
Va%uqvvv&qf45otbIbVVw{sDJd2;Bex

literal 0
HcmV?d00001

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ArrivalProcess.java b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ArrivalProcess.java
new file mode 100644
index 0000000000..e581c58add
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ArrivalProcess.java
@@ -0,0 +1,72 @@
+package examples;
+
+// Standard library imports
+import java.util.*;
+
+// Application specific imports
+import simkit.*;
+import simkit.random.*;
+
+public class ArrivalProcess extends SimEntityBase {
+
+    /* Simulation Parameters */
+
+    /**  */
+    private simkit.random.RandomVariate interarrivalTime;
+
+    /* Simulation State Variables */
+
+    /**  */
+    protected int numberArrivals;
+
+    @viskit.ParameterMap (
+        names = {"interarrivalTime"},
+        types = {"simkit.random.RandomVariate"}
+    )
+
+    /** Creates a new default instance of ArrivalProcess */
+    public ArrivalProcess() {
+    }
+
+    public ArrivalProcess(simkit.random.RandomVariate interarrivalTime) {
+        setInterarrivalTime(interarrivalTime);
+    }
+
+    @Override
+    public void reset() {
+        super.reset();
+    }
+
+    /** Bootstraps the first simulation event */
+    public void doRun() {
+
+        waitDelay("Arrival", interarrivalTime.generate(), Priority.DEFAULT);
+    }
+
+    public void doArrival() {
+
+        /* StateTransition for numberArrivals */
+        int _old_NumberArrivals = getNumberArrivals();
+        numberArrivals = numberArrivals + 1;
+        firePropertyChange("numberArrivals", _old_NumberArrivals, getNumberArrivals());
+
+        waitDelay("Arrival", interarrivalTime.generate(), Priority.DEFAULT);
+    }
+
+    public final void setInterarrivalTime(simkit.random.RandomVariate interarrivalTime) {
+        this.interarrivalTime = interarrivalTime;
+    }
+
+    public simkit.random.RandomVariate getInterarrivalTime() {
+        return interarrivalTime;
+    }
+
+    public int getNumberArrivals() {
+        return numberArrivals;
+    }
+
+    @Override
+    public String toString() {
+        return getName();
+    }
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/EntityCreator.java b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/EntityCreator.java
new file mode 100644
index 0000000000..72fac7aaf6
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/EntityCreator.java
@@ -0,0 +1,42 @@
+package examples;
+
+// Standard library imports
+import java.util.*;
+
+// Application specific imports
+import simkit.*;
+import simkit.random.*;
+
+public class EntityCreator extends SimEntityBase {
+
+    /* Simulation Parameters */
+
+    /* None */
+
+    /* Simulation State Variables */
+
+    /* None */
+
+    @viskit.ParameterMap (
+        names = {},
+        types = {}
+    )
+
+    /** Creates a new default instance of EntityCreator */
+    public EntityCreator() {
+    }
+
+    public void doArrival() {
+
+        waitDelay("EntityArrival", 0.0, Priority.DEFAULT, (Object) new simkit.Entity());
+    }
+
+    public void doEntityArrival(simkit.Entity customer) {
+
+    }
+
+    @Override
+    public String toString() {
+        return getName();
+    }
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ServerGeneric.java b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ServerGeneric.java
new file mode 100644
index 0000000000..294206dc69
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/ServerGeneric.java
@@ -0,0 +1,160 @@
+package examples;
+
+// Standard library imports
+import java.util.*;
+
+// Application specific imports
+import simkit.*;
+import simkit.random.*;
+
+public class ServerGeneric extends SimEntityBase {
+
+    /* Simulation Parameters */
+
+    /**  */
+    private int totalNumberServers;
+
+    /**  */
+    private simkit.random.RandomVariate serviceTimeGenerator;
+
+    /* Simulation State Variables */
+
+    /**  */
+    protected int numberAvailableServers;
+
+    /**  */
+    protected java.util.LinkedList<simkit.Entity> queue = new java.util.LinkedList<>();
+
+    /**  */
+    protected double delayInQueue;
+
+    /**  */
+    protected double timeInSystem;
+
+    @viskit.ParameterMap (
+        names = {"totalNumberServers",
+            "serviceTimeGenerator"},
+        types = {"int",
+            "simkit.random.RandomVariate"}
+    )
+
+    /** Creates a new default instance of ServerGeneric */
+    public ServerGeneric() {
+    }
+
+    public ServerGeneric(int totalNumberServers,
+            simkit.random.RandomVariate serviceTimeGenerator) {
+        setTotalNumberServers(totalNumberServers);
+        setServiceTimeGenerator(serviceTimeGenerator);
+    }
+
+    @Override
+    public void reset() {
+        super.reset();
+        numberAvailableServers = totalNumberServers;
+        queue = new java.util.LinkedList<simkit.Entity>();
+    }
+
+    /** Bootstraps the first simulation event */
+    public void doRun() {
+
+        firePropertyChange("numberAvailableServers", getNumberAvailableServers());
+        firePropertyChange("queue", getQueue());
+
+    }
+
+    public void doArrival(simkit.Entity customer) {
+
+        /* Code insertion for Event Arrival */
+        customer.stampTime();
+        /* End Code insertion */
+
+        /* StateTransition for queue */
+        java.util.LinkedList<simkit.Entity> _old_Queue = getQueue();
+        queue.add(customer);
+        firePropertyChange("queue", _old_Queue, getQueue());
+
+        if (numberAvailableServers > 0) {
+            waitDelay("StartService", 0.0, Priority.HIGH);
+        }
+    }
+
+    public void doStartService() {
+
+        /* Code insertion for Event StartService */
+        Entity customer = queue.getFirst();
+        /* End Code insertion */
+
+        /* StateTransition for numberAvailableServers */
+        int _old_NumberAvailableServers = getNumberAvailableServers();
+        numberAvailableServers = numberAvailableServers - 1;
+        firePropertyChange("numberAvailableServers", _old_NumberAvailableServers, getNumberAvailableServers());
+
+        /* StateTransition for queue */
+        java.util.LinkedList<simkit.Entity> _old_Queue = getQueue();
+        queue.removeFirst();
+        firePropertyChange("queue", _old_Queue, getQueue());
+
+        /* StateTransition for delayInQueue */
+        double _old_DelayInQueue = getDelayInQueue();
+        delayInQueue = customer.getElapsedTime();
+        firePropertyChange("delayInQueue", _old_DelayInQueue, getDelayInQueue());
+
+        waitDelay("EndService", serviceTimeGenerator.generate(), Priority.DEFAULT, (Object) customer);
+    }
+
+    public void doEndService(simkit.Entity customer) {
+
+        /* StateTransition for numberAvailableServers */
+        int _old_NumberAvailableServers = getNumberAvailableServers();
+        numberAvailableServers = numberAvailableServers + 1;
+        firePropertyChange("numberAvailableServers", _old_NumberAvailableServers, getNumberAvailableServers());
+
+        /* StateTransition for timeInSystem */
+        double _old_TimeInSystem = getTimeInSystem();
+        timeInSystem = customer.getElapsedTime();
+        firePropertyChange("timeInSystem", _old_TimeInSystem, getTimeInSystem());
+
+        if (queue.size() > 0) {
+            waitDelay("StartService", 0.0, Priority.HIGH);
+        }
+    }
+
+    public final void setTotalNumberServers(int totalNumberServers) {
+        this.totalNumberServers = totalNumberServers;
+    }
+
+    public int getTotalNumberServers() {
+        return totalNumberServers;
+    }
+
+    public final void setServiceTimeGenerator(simkit.random.RandomVariate serviceTimeGenerator) {
+        this.serviceTimeGenerator = serviceTimeGenerator;
+    }
+
+    public simkit.random.RandomVariate getServiceTimeGenerator() {
+        return serviceTimeGenerator;
+    }
+
+    public int getNumberAvailableServers() {
+        return numberAvailableServers;
+    }
+
+    @SuppressWarnings("unchecked")
+    public java.util.LinkedList<simkit.Entity> getQueue() {
+        return (java.util.LinkedList<simkit.Entity>) queue.clone();
+    }
+
+    public double getDelayInQueue() {
+        return delayInQueue;
+    }
+
+    public double getTimeInSystem() {
+        return timeInSystem;
+    }
+
+    @Override
+    public String toString() {
+        return getName();
+    }
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TestAssembly.java b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TestAssembly.java
new file mode 100644
index 0000000000..17f6b47983
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TestAssembly.java
@@ -0,0 +1,106 @@
+package examples;
+
+public class TestAssembly extends viskit.assembly.ViskitAssembly {
+
+    public TestAssembly() {
+        super();
+        setStopTime(100.0);
+        setVerbose(false);
+        setNumberReplications(1);
+        setPrintReplicationReports(true);
+        setPrintSummaryReport(true);
+        setSaveReplicationData(false);
+    }
+
+    @Override
+    protected void createSimEntities() {
+
+        addSimEntity( "arrivalProcess",
+            new examples.ArrivalProcess(
+                simkit.random.RandomVariateFactory.getInstance(
+                    "Exponential",
+                    1.6
+                )
+            )
+        );
+
+        addSimEntity( "twoTypeServer",
+            new examples.TwoTypeServer(
+                1,
+                2,
+                simkit.random.RandomVariateFactory.getInstance(
+                    "Exponential",
+                    0.9
+                ),
+                simkit.random.RandomVariateFactory.getInstance(
+                    "Exponential",
+                    1.2
+                )
+            )
+        );
+
+        addAdapter("adptr", "Arrival", "Arrival", "arrivalProcess", "twoTypeServer");
+
+        super.createSimEntities();
+    }
+
+    @Override
+    public void createPropertyChangeListeners() {
+        addPropertyChangeListenerConnection("numAvailServerAStat", "numberAvailableServersA", "twoTypeServer");
+
+        addPropertyChangeListenerConnection("queueStat", "queue", "twoTypeServer");
+
+        addPropertyChangeListenerConnection("numAvailServerBStat", "numberAvailableServersB", "twoTypeServer");
+
+        super.createPropertyChangeListeners();
+    }
+
+    @Override
+    public void createReplicationStats() {
+        addReplicationStats("numAvailServerAStat",
+            new simkit.stat.SimpleStatsTimeVarying(
+                "numberAvailableServersA"
+            )
+        );
+
+        addReplicationStatsListenerConnection("numAvailServerAStat", "numberAvailableServersA", "twoTypeServer");
+
+        addReplicationStats("queueStat",
+            new simkit.stat.SimpleStatsTimeVarying(
+                "queue"
+            )
+        );
+
+        addReplicationStatsListenerConnection("queueStat", "queue", "twoTypeServer");
+
+        addReplicationStats("numAvailServerBStat",
+            new simkit.stat.SimpleStatsTimeVarying(
+                "numberAvailableServersB"
+            )
+        );
+
+        addReplicationStatsListenerConnection("numAvailServerBStat", "numberAvailableServersB", "twoTypeServer");
+
+        super.createReplicationStats();
+    }
+
+    @Override
+    public void createDesignPointStats() {
+        super.createDesignPointStats();
+    }
+
+    @Override
+    public void printInfo() {
+        System.out.println();
+        System.out.println("Entity Details");
+        System.out.println("--------------");
+        System.out.println(getSimEntityByName("arrivalProcess"));
+        System.out.println(getSimEntityByName("twoTypeServer"));
+        System.out.println("--------------");
+    }
+
+    public static void main(String[] args) {
+        TestAssembly testAssembly = new TestAssembly();
+        new Thread(testAssembly).start();
+    }
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServer.java b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServer.java
new file mode 100644
index 0000000000..b0465276ce
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServer.java
@@ -0,0 +1,196 @@
+package examples;
+
+// Standard library imports
+import java.util.*;
+
+// Application specific imports
+import simkit.*;
+import simkit.random.*;
+
+public class TwoTypeServer extends SimEntityBase {
+
+    /* Simulation Parameters */
+
+    /**  */
+    private int numberServersA;
+
+    /**  */
+    private int numberServersB;
+
+    /**  */
+    private simkit.random.RandomVariate serviceTimeA;
+
+    /**  */
+    private simkit.random.RandomVariate serviceTimeB;
+
+    /* Simulation State Variables */
+
+    /**  */
+    protected int numberAvailableServersA;
+
+    /**  */
+    protected int numberAvailableServersB;
+
+    /**  */
+    protected int queue;
+
+    @viskit.ParameterMap (
+        names = {"numberServersA",
+            "numberServersB",
+            "serviceTimeA",
+            "serviceTimeB"},
+        types = {"int",
+            "int",
+            "simkit.random.RandomVariate",
+            "simkit.random.RandomVariate"}
+    )
+
+    /** Creates a new default instance of TwoTypeServer */
+    public TwoTypeServer() {
+    }
+
+    public TwoTypeServer(int numberServersA,
+            int numberServersB,
+            simkit.random.RandomVariate serviceTimeA,
+            simkit.random.RandomVariate serviceTimeB) {
+        setNumberServersA(numberServersA);
+        setNumberServersB(numberServersB);
+        setServiceTimeA(serviceTimeA);
+        setServiceTimeB(serviceTimeB);
+    }
+
+    @Override
+    public void reset() {
+        super.reset();
+        numberAvailableServersA = getNumberServersA();
+        numberAvailableServersB = getNumberServersB();
+        queue = 0;
+    }
+
+    /** Bootstraps the first simulation event */
+    public void doRun() {
+
+        firePropertyChange("numberAvailableServersA", getNumberAvailableServersA());
+        firePropertyChange("numberAvailableServersB", getNumberAvailableServersB());
+        firePropertyChange("queue", getQueue());
+
+    }
+
+    public void doArrival() {
+
+        /* StateTransition for queue */
+        int _old_Queue = getQueue();
+        queue = queue + 1;
+        firePropertyChange("queue", _old_Queue, getQueue());
+
+        if (getNumberAvailableServersA() > 0) {
+            waitDelay("StartServiceA", 0.0, Priority.DEFAULT);
+        }
+        if (getNumberAvailableServersA() == 0 && getNumberAvailableServersB() > 0) {
+            waitDelay("StartServiceB", 0.0, Priority.DEFAULT);
+        }
+    }
+
+    public void doStartServiceA() {
+
+        /* StateTransition for numberAvailableServersA */
+        int _old_NumberAvailableServersA = getNumberAvailableServersA();
+        numberAvailableServersA = numberAvailableServersA - 1;
+        firePropertyChange("numberAvailableServersA", _old_NumberAvailableServersA, getNumberAvailableServersA());
+
+        /* StateTransition for queue */
+        int _old_Queue = getQueue();
+        queue = queue - 1;
+        firePropertyChange("queue", _old_Queue, getQueue());
+
+        waitDelay("EndServiceA", serviceTimeA.generate(), Priority.DEFAULT);
+    }
+
+    public void doStartServiceB() {
+
+        /* StateTransition for numberAvailableServersB */
+        int _old_NumberAvailableServersB = getNumberAvailableServersB();
+        numberAvailableServersB = numberAvailableServersB - 1;
+        firePropertyChange("numberAvailableServersB", _old_NumberAvailableServersB, getNumberAvailableServersB());
+
+        /* StateTransition for queue */
+        int _old_Queue = getQueue();
+        queue = queue - 1;
+        firePropertyChange("queue", _old_Queue, getQueue());
+
+        waitDelay("EndServiceB", serviceTimeB.generate(), Priority.DEFAULT);
+    }
+
+    public void doEndServiceA() {
+
+        /* StateTransition for numberAvailableServersA */
+        int _old_NumberAvailableServersA = getNumberAvailableServersA();
+        numberAvailableServersA = numberAvailableServersA + 1;
+        firePropertyChange("numberAvailableServersA", _old_NumberAvailableServersA, getNumberAvailableServersA());
+
+        if (queue > 0) {
+            waitDelay("StartServiceA", 0.0, Priority.HIGH);
+        }
+    }
+
+    public void doEndServiceB() {
+
+        /* StateTransition for numberAvailableServersB */
+        int _old_NumberAvailableServersB = getNumberAvailableServersB();
+        numberAvailableServersB = numberAvailableServersB + 1;
+        firePropertyChange("numberAvailableServersB", _old_NumberAvailableServersB, getNumberAvailableServersB());
+
+        if (queue > 0) {
+            waitDelay("StartServiceB", 0.0, Priority.HIGH);
+        }
+    }
+
+    public final void setNumberServersA(int numberServersA) {
+        this.numberServersA = numberServersA;
+    }
+
+    public int getNumberServersA() {
+        return numberServersA;
+    }
+
+    public final void setNumberServersB(int numberServersB) {
+        this.numberServersB = numberServersB;
+    }
+
+    public int getNumberServersB() {
+        return numberServersB;
+    }
+
+    public final void setServiceTimeA(simkit.random.RandomVariate serviceTimeA) {
+        this.serviceTimeA = serviceTimeA;
+    }
+
+    public simkit.random.RandomVariate getServiceTimeA() {
+        return serviceTimeA;
+    }
+
+    public final void setServiceTimeB(simkit.random.RandomVariate serviceTimeB) {
+        this.serviceTimeB = serviceTimeB;
+    }
+
+    public simkit.random.RandomVariate getServiceTimeB() {
+        return serviceTimeB;
+    }
+
+    public int getNumberAvailableServersA() {
+        return numberAvailableServersA;
+    }
+
+    public int getNumberAvailableServersB() {
+        return numberAvailableServersB;
+    }
+
+    public int getQueue() {
+        return queue;
+    }
+
+    @Override
+    public String toString() {
+        return getName();
+    }
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServerAssembly.java b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServerAssembly.java
new file mode 100644
index 0000000000..127a9cdf78
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/src/examples/TwoTypeServerAssembly.java
@@ -0,0 +1,108 @@
+package examples;
+
+public class TwoTypeServerAssembly extends viskit.assembly.ViskitAssembly {
+
+    public TwoTypeServerAssembly() {
+        super();
+        setStopTime(100.0);
+        setVerbose(false);
+        setNumberReplications(1);
+        setPrintReplicationReports(true);
+        setPrintSummaryReport(true);
+        setSaveReplicationData(false);
+    }
+
+    @Override
+    protected void createSimEntities() {
+
+        addSimEntity( "arrivalProcess",
+            new examples.ArrivalProcess(
+                simkit.random.RandomVariateFactory.getInstance(
+                    "Exponential",
+                    1.7
+                )
+            )
+        );
+
+        addSimEntity( "twoTypeServer",
+            new examples.TwoTypeServer(
+                1,
+                2,
+                simkit.random.RandomVariateFactory.getInstance(
+                    "Exponential",
+                    1.6
+                ),
+                simkit.random.RandomVariateFactory.getInstance(
+                    "Exponential",
+                    1.6
+                )
+            )
+        );
+
+        addAdapter("adptr_0", "Arrival", "Arrival", "arrivalProcess_0", "twoTypeServer_1");
+        addAdapter("adptr0", "Arrival", "Arrival", "arrivalProcess", "twoTypeServer");
+        addAdapter("adptr_1", "Arrival", "Arrival", "arrivalProcess", "twoTypeServer");
+
+        super.createSimEntities();
+    }
+
+    @Override
+    public void createPropertyChangeListeners() {
+        addPropertyChangeListenerConnection("numAvailServersBStat", "numberAvailableServersB", "twoTypeServer");
+
+        addPropertyChangeListenerConnection("numAvailServersAStat", "numberAvailableServersA", "twoTypeServer");
+
+        addPropertyChangeListenerConnection("numberInQueueStat", "queue", "twoTypeServer");
+
+        super.createPropertyChangeListeners();
+    }
+
+    @Override
+    public void createReplicationStats() {
+        addReplicationStats("numAvailServersAStat",
+            new simkit.stat.SimpleStatsTimeVarying(
+                "numberAvailableServersA"
+            )
+        );
+
+        addReplicationStatsListenerConnection("numAvailServersAStat", "numberAvailableServersA", "twoTypeServer");
+
+        addReplicationStats("numberInQueueStat",
+            new simkit.stat.SimpleStatsTimeVarying(
+                "queue"
+            )
+        );
+
+        addReplicationStatsListenerConnection("numberInQueueStat", "queue", "twoTypeServer");
+
+        addReplicationStats("numAvailServersBStat",
+            new simkit.stat.SimpleStatsTimeVarying(
+                "numberAvailableServersB"
+            )
+        );
+
+        addReplicationStatsListenerConnection("numAvailServersBStat", "numberAvailableServersB", "twoTypeServer");
+
+        super.createReplicationStats();
+    }
+
+    @Override
+    public void createDesignPointStats() {
+        super.createDesignPointStats();
+    }
+
+    @Override
+    public void printInfo() {
+        System.out.println();
+        System.out.println("Entity Details");
+        System.out.println("--------------");
+        System.out.println(getSimEntityByName("arrivalProcess"));
+        System.out.println(getSimEntityByName("twoTypeServer"));
+        System.out.println("--------------");
+    }
+
+    public static void main(String[] args) {
+        TwoTypeServerAssembly twoTypeServerAssembly = new TwoTypeServerAssembly();
+        new Thread(twoTypeServerAssembly).start();
+    }
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/viskitProject.xml b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/viskitProject.xml
new file mode 100644
index 0000000000..6c7a80c565
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/viskitProject.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViskitProject>
+  <AnalystReports name="AnalystReports" />
+  <AssembliesDirectory name="Assemblies" />
+  <EventGraphsDirectory name="EventGraphs" />
+  <BuildDirectory name="build">
+    <ClassesDirectory name="classes" />
+    <SourceDirectory name="src" />
+  </BuildDirectory>
+  <DistDirectory name="dist" />
+  <LibDirectory name="lib" />
+  <Project name="FinalProject" />
+  <Cached>
+    <EventGraphs class="/Users/terry/Downloads/FinalProject/build/classes/examples/TwoTypeServer.class" digest="-512d144abdf3a25c1fd0468cca19fbe6" xml="/Users/terry/Downloads/FinalProject/EventGraphs/examples/TwoTypeServer.xml" />
+    <EventGraphs class="C:/Users/advan/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServer.class" digest="5dde00358e407bfd4311883c8721b5e3" xml="C:/Users/advan/MyViskitProjects/FinalProject/EventGraphs/examples/TwoTypeServer.xml" />
+    <EventGraphs class="C:/Users/advan/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class" digest="690320b04ecb012c8a9ca57e07351225" xml="C:/Users/advan/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcessTwo.xml" />
+    <EventGraphs class="C:/Users/advan/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class" digest="2c654b4016e3310aea37d46120d91c16" xml="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ArrivalProcess.xml" />
+    <EventGraphs class="C:/Users/advan/MyViskitProjects/FinalProject/build/classes/examples/EntityCreator.class" digest="7020026ff300a02fa0ca78b16afd0a77" xml="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/EntityCreator.xml" />
+    <EventGraphs class="C:/Users/advan/MyViskitProjects/FinalProject/build/classes/examples/ServerGeneric.class" digest="256ca2b5c866392a6c42353961b30c1a" xml="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ServerGeneric.xml" />
+    <EventGraphs class="C:/Users/advan/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class" digest="690320b04ecb012c8a9ca57e07351225" xml="C:/Users/advan/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcess.xml" />
+    <EventGraphs class="C:/Users/advan/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServer.class" digest="5dde00358e407bfd4311883c8721b5e3" xml="C:/Users/advan/MyViskitProjects/FinalProject/EventGraphs/examples/TwoTypeServer.xml" />
+    <EventGraphs class="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class" digest="690320b04ecb012c8a9ca57e07351225" xml="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcess.xml" />
+    <EventGraphs class="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/ArrivalProcess.class" digest="690320b04ecb012c8a9ca57e07351225" xml="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/ArrivalProcessTwo.xml" />
+    <EventGraphs class="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/build/classes/examples/TwoTypeServer.class" digest="5dde00358e407bfd4311883c8721b5e3" xml="C:/Users/advan/Netbeans/NetworkedGraphicsMV3500/assignments/src/MV3500Cohort2024JulySeptember/projects/Yu/MyViskitProjects/FinalProject/EventGraphs/examples/TwoTypeServer.xml" />
+  </Cached>
+</ViskitProject>
+
-- 
GitLab