summaryrefslogtreecommitdiffstats
path: root/documenting
diff options
context:
space:
mode:
authorRefik Hadzialic2011-11-09 16:10:02 +0100
committerRefik Hadzialic2011-11-09 16:10:02 +0100
commit9f9fae05e16848503a93c14c12c33222de3482a7 (patch)
treef60884e7b0eeb84c0604b2a2897899666727375c /documenting
parentReport added! (diff)
downloadgsm-selftest-9f9fae05e16848503a93c14c12c33222de3482a7.tar.gz
gsm-selftest-9f9fae05e16848503a93c14c12c33222de3482a7.tar.xz
gsm-selftest-9f9fae05e16848503a93c14c12c33222de3482a7.zip
Report relocating!
Diffstat (limited to 'documenting')
-rw-r--r--documenting/Report/BigPicture_new.pngbin0 -> 126202 bytes
-rw-r--r--documenting/Report/BigPicture_new1.pngbin0 -> 136384 bytes
-rw-r--r--documenting/Report/ClientClass.pngbin0 -> 10718 bytes
-rw-r--r--documenting/Report/DBRelationship.pngbin0 -> 64566 bytes
-rw-r--r--documenting/Report/First.pngbin0 -> 408402 bytes
-rw-r--r--documenting/Report/Second.pngbin0 -> 455939 bytes
-rw-r--r--documenting/Report/ServerHandlerClass.pngbin0 -> 7930 bytes
-rw-r--r--documenting/Report/Third.pngbin0 -> 382478 bytes
-rw-r--r--documenting/Report/Tri-report.docbin0 -> 55296 bytes
-rw-r--r--documenting/Report/activityControllerEdited.pngbin0 -> 33657 bytes
-rw-r--r--documenting/Report/activity_diagram.pngbin0 -> 152591 bytes
-rw-r--r--documenting/Report/bb.jpgbin0 -> 100471 bytes
-rw-r--r--documenting/Report/classDiagram.pngbin0 -> 92031 bytes
-rw-r--r--documenting/Report/controllerclass.pngbin0 -> 21495 bytes
-rw-r--r--documenting/Report/dbClass.pngbin0 -> 22411 bytes
-rw-r--r--documenting/Report/devconf.pngbin0 -> 54332 bytes
-rw-r--r--documenting/Report/initTestClass.pngbin0 -> 8963 bytes
-rw-r--r--documenting/Report/logging.pngbin0 -> 5963 bytes
-rw-r--r--documenting/Report/logo.svg15
-rw-r--r--documenting/Report/ping.pngbin0 -> 4129 bytes
-rw-r--r--documenting/Report/protocolCommunicationHandler.pngbin0 -> 69838 bytes
-rw-r--r--documenting/Report/protocolCommunicationcControllerCaller.pngbin0 -> 45087 bytes
-rw-r--r--documenting/Report/protocolCommunicationcControllerReceiver.pngbin0 -> 44459 bytes
-rw-r--r--documenting/Report/protocolRedesign.pngbin0 -> 5180 bytes
-rw-r--r--documenting/Report/resultsImage.pngbin0 -> 59169 bytes
-rw-r--r--documenting/Report/resultterminal.pngbin0 -> 24344 bytes
-rw-r--r--documenting/Report/serialPort.pngbin0 -> 16604 bytes
-rw-r--r--documenting/Report/serverClass.pngbin0 -> 7821 bytes
-rw-r--r--documenting/Report/sshTunnel.pngbin0 -> 18810 bytes
-rw-r--r--documenting/Report/sshTunnelClass.pngbin0 -> 8853 bytes
-rw-r--r--documenting/Report/terminalCommand.pngbin0 -> 88885 bytes
-rw-r--r--documenting/Report/test.aux150
-rw-r--r--documenting/Report/test.log641
-rw-r--r--documenting/Report/test.out58
-rw-r--r--documenting/Report/test.pdfbin0 -> 5058627 bytes
-rw-r--r--documenting/Report/test.tex1376
-rw-r--r--documenting/Report/test.tex.backup1360
-rw-r--r--documenting/Report/test.tex.bak1326
-rw-r--r--documenting/Report/test.tex~1397
-rw-r--r--documenting/Report/test.toc59
-rw-r--r--documenting/Report/test_Use_case.pngbin0 -> 299296 bytes
-rw-r--r--documenting/Report/titlepic.sty76
-rw-r--r--documenting/Report/trueTable.pngbin0 -> 6534 bytes
-rw-r--r--documenting/Report/uniLogo1.jpgbin0 -> 56865 bytes
-rw-r--r--documenting/Report/uniLogo2.pngbin0 -> 296644 bytes
-rw-r--r--documenting/Report/usbDetectClass.pngbin0 -> 11421 bytes
-rw-r--r--documenting/Report/webpageReport.pngbin0 -> 112597 bytes
-rw-r--r--documenting/Report/website1.pngbin0 -> 463898 bytes
-rw-r--r--documenting/Report/website2.pngbin0 -> 489975 bytes
-rw-r--r--documenting/Report/website3.pngbin0 -> 389426 bytes
-rw-r--r--documenting/Report/website4.pngbin0 -> 350899 bytes
-rw-r--r--documenting/Report/website6.pngbin0 -> 95087 bytes
52 files changed, 6458 insertions, 0 deletions
diff --git a/documenting/Report/BigPicture_new.png b/documenting/Report/BigPicture_new.png
new file mode 100644
index 0000000..cb70576
--- /dev/null
+++ b/documenting/Report/BigPicture_new.png
Binary files differ
diff --git a/documenting/Report/BigPicture_new1.png b/documenting/Report/BigPicture_new1.png
new file mode 100644
index 0000000..cf81c92
--- /dev/null
+++ b/documenting/Report/BigPicture_new1.png
Binary files differ
diff --git a/documenting/Report/ClientClass.png b/documenting/Report/ClientClass.png
new file mode 100644
index 0000000..9df72cc
--- /dev/null
+++ b/documenting/Report/ClientClass.png
Binary files differ
diff --git a/documenting/Report/DBRelationship.png b/documenting/Report/DBRelationship.png
new file mode 100644
index 0000000..bca5f6d
--- /dev/null
+++ b/documenting/Report/DBRelationship.png
Binary files differ
diff --git a/documenting/Report/First.png b/documenting/Report/First.png
new file mode 100644
index 0000000..3dd2fdc
--- /dev/null
+++ b/documenting/Report/First.png
Binary files differ
diff --git a/documenting/Report/Second.png b/documenting/Report/Second.png
new file mode 100644
index 0000000..b99fc07
--- /dev/null
+++ b/documenting/Report/Second.png
Binary files differ
diff --git a/documenting/Report/ServerHandlerClass.png b/documenting/Report/ServerHandlerClass.png
new file mode 100644
index 0000000..cfd4985
--- /dev/null
+++ b/documenting/Report/ServerHandlerClass.png
Binary files differ
diff --git a/documenting/Report/Third.png b/documenting/Report/Third.png
new file mode 100644
index 0000000..4bdf503
--- /dev/null
+++ b/documenting/Report/Third.png
Binary files differ
diff --git a/documenting/Report/Tri-report.doc b/documenting/Report/Tri-report.doc
new file mode 100644
index 0000000..5b00f7d
--- /dev/null
+++ b/documenting/Report/Tri-report.doc
Binary files differ
diff --git a/documenting/Report/activityControllerEdited.png b/documenting/Report/activityControllerEdited.png
new file mode 100644
index 0000000..bf22102
--- /dev/null
+++ b/documenting/Report/activityControllerEdited.png
Binary files differ
diff --git a/documenting/Report/activity_diagram.png b/documenting/Report/activity_diagram.png
new file mode 100644
index 0000000..0f4fdd2
--- /dev/null
+++ b/documenting/Report/activity_diagram.png
Binary files differ
diff --git a/documenting/Report/bb.jpg b/documenting/Report/bb.jpg
new file mode 100644
index 0000000..1118f4c
--- /dev/null
+++ b/documenting/Report/bb.jpg
Binary files differ
diff --git a/documenting/Report/classDiagram.png b/documenting/Report/classDiagram.png
new file mode 100644
index 0000000..3bcae96
--- /dev/null
+++ b/documenting/Report/classDiagram.png
Binary files differ
diff --git a/documenting/Report/controllerclass.png b/documenting/Report/controllerclass.png
new file mode 100644
index 0000000..22dfec5
--- /dev/null
+++ b/documenting/Report/controllerclass.png
Binary files differ
diff --git a/documenting/Report/dbClass.png b/documenting/Report/dbClass.png
new file mode 100644
index 0000000..e18ece1
--- /dev/null
+++ b/documenting/Report/dbClass.png
Binary files differ
diff --git a/documenting/Report/devconf.png b/documenting/Report/devconf.png
new file mode 100644
index 0000000..76a3ab8
--- /dev/null
+++ b/documenting/Report/devconf.png
Binary files differ
diff --git a/documenting/Report/initTestClass.png b/documenting/Report/initTestClass.png
new file mode 100644
index 0000000..1ff20e4
--- /dev/null
+++ b/documenting/Report/initTestClass.png
Binary files differ
diff --git a/documenting/Report/logging.png b/documenting/Report/logging.png
new file mode 100644
index 0000000..bf39f7a
--- /dev/null
+++ b/documenting/Report/logging.png
Binary files differ
diff --git a/documenting/Report/logo.svg b/documenting/Report/logo.svg
new file mode 100644
index 0000000..e128a45
--- /dev/null
+++ b/documenting/Report/logo.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="354.33072"
+ height="354.33072"
+ id="svg2473">
+ <defs
+ id="defs2476" />
+ <path
+ d="M 165.51241,354.07293 C 159.92291,353.68518 155.21093,353.10735 150.82977,352.27242 C 149.19285,351.96047 145.44282,351.24693 142.49637,350.68678 C 128.51055,348.02794 109.81574,342.00224 98.448442,336.4893 C 94.338152,334.49588 90.156782,332.15489 83.170552,327.9358 C 70.752962,320.43662 54.952962,306.65883 43.456542,293.30469 C 37.399032,286.26834 28.628652,274.26014 27.979992,272.11455 C 27.837972,271.6448 27.398882,270.90298 27.004232,270.46605 C 26.028702,269.38607 21.187082,260.84148 18.114282,254.77691 C 15.511822,249.6406 13.241672,244.43958 11.352952,239.28635 C 10.752442,237.64794 9.7656914,235.14561 9.1601714,233.72565 C 5.4563814,225.04023 2.0063814,208.12177 0.41490137,190.83976 C -0.13863863,184.82872 -0.13822863,170.28602 0.41570137,162.82658 C 0.86472137,156.77987 1.9333514,148.60421 3.0510714,142.66436 C 3.3897314,140.86465 3.8162414,138.58784 3.9988714,137.60479 C 4.3505014,135.71209 6.1768514,128.93061 7.8497914,123.30582 C 9.9559214,116.22452 16.984632,99.670417 20.227132,94.154547 C 21.268222,92.383537 22.975632,89.415257 24.021372,87.558377 C 26.338042,83.444777 31.918272,74.994357 35.167372,70.679447 C 46.645102,55.436627 59.345762,42.957197 73.646672,32.870387 C 92.690252,19.438427 107.00916,12.506787 128.60738,6.2644674 C 129.80779,5.9175274 131.18633,5.4843574 131.67081,5.3018674 C 135.48215,3.8662574 148.55099,1.5281274 157.37744,0.70274744 C 162.29317,0.24304744 168.66535,0.025797441 177.81409,0.0059774414 C 191.49309,-0.023652559 191.52656,-0.021262559 205.79049,2.0045974 C 233.02742,5.8729874 264.22571,19.535787 286.74345,37.456667 C 297.98431,46.402767 304.52577,52.901017 314.78761,65.315537 C 323.18624,75.476007 333.05932,91.665797 337.73242,102.94027 C 338.61739,105.07538 339.69235,107.53722 340.12123,108.41105 C 341.38247,110.98082 344.00112,117.93816 345.87691,123.70301 C 351.68762,141.56104 353.72062,153.60996 354.26563,173.4203 C 354.73344,190.42412 352.68567,206.94669 347.91456,224.66464 C 343.11663,242.48214 331.98461,265.75344 321.44438,280.00009 C 314.02214,290.03233 311.25605,293.24989 302.64306,301.87004 C 289.33617,315.18799 279.57099,322.90126 265.91175,330.88316 C 256.63889,336.30184 241.2214,343.32499 234.26268,345.30029 C 232.78959,345.71845 230.4236,346.42469 229.00494,346.86972 C 222.11091,349.03233 210.07346,351.72331 202.81427,352.72465 C 193.00182,354.07821 174.97902,354.72964 165.51241,354.07293 z M 199.25801,350.89325 C 214.70887,348.91543 222.18383,347.06462 240.11613,340.77672 C 261.38663,333.31831 284.77672,317.87963 301.85052,300.02879 C 310.30101,291.1937 321.40333,277.68122 323.8903,273.20445 C 324.24156,272.57216 325.2995,270.80368 326.24129,269.27448 C 328.87689,264.99502 335.56717,251.67907 338.41446,245.04566 C 344.23987,231.47411 347.99108,218.73051 350.04785,205.5249 C 351.62276,195.41304 352.2991,179.52975 351.65461,167.7915 C 350.96173,155.17199 350.6707,152.77336 348.40164,140.98093 C 346.89733,133.16294 342.65032,119.428 339.90867,113.51445 C 338.98182,111.51528 337.81733,108.65548 337.32093,107.15935 C 336.17603,103.70864 328.84739,89.234927 325.0822,82.988447 C 320.18794,74.868807 310.63925,62.934347 302.36182,54.591307 C 293.59299,45.752987 289.25256,42.009157 280.19579,35.472077 C 262.69878,22.842937 241.01433,12.482287 222.50817,7.9094274 C 220.29762,7.3631974 217.59613,6.6577174 216.50485,6.3416974 C 215.41357,6.0256774 213.00284,5.5013074 211.14767,5.1764474 C 209.29249,4.8515774 207.23891,4.4054574 206.58414,4.1850674 C 205.47578,3.8120074 201.10385,3.4199674 188.33004,2.5481974 C 174.75857,1.6220074 154.32305,2.9426974 141.9811,5.5435974 C 140.40933,5.8748174 137.69475,6.4213474 135.94871,6.7580874 C 128.48013,8.1984574 116.28267,12.201737 108.17073,15.874997 C 107.07945,16.369157 104.57943,17.430347 102.61513,18.233227 C 100.65083,19.036107 97.882962,20.373667 96.464292,21.205587 C 95.045632,22.037507 92.813472,23.272817 91.503942,23.950717 C 86.785542,26.393297 75.682532,33.698207 71.278462,37.257497 C 69.888912,38.380517 67.889002,39.984177 66.834222,40.821177 C 63.726792,43.287047 52.871122,53.336287 49.599212,56.775877 C 45.975132,60.585677 44.148142,62.748077 39.034942,69.279567 C 33.792152,75.976587 33.326392,76.632647 29.891882,82.158267 C 28.249492,84.800647 26.117772,88.213757 25.154732,89.742947 C 23.486942,92.391217 21.145592,97.004337 16.788662,106.22648 C 14.349142,111.39012 13.164262,114.43246 11.606462,119.53247 C 10.939192,121.71703 9.5822414,126.0961 8.5910214,129.26372 C 1.5105614,151.89068 0.11804137,186.31605 5.2411414,212.0786 C 7.8800214,225.34873 13.573342,241.82603 19.853002,254.36738 C 23.173972,260.99983 31.455162,274.71246 34.372522,278.40993 C 35.061982,279.28376 36.125722,280.80302 36.736392,281.78608 C 39.938592,286.94098 51.524992,299.71076 59.744732,307.14435 C 68.367172,314.94215 74.403962,319.49541 84.956272,326.16025 C 95.694192,332.9423 111.73772,340.19644 123.84545,343.74411 C 125.48236,344.22374 127.76989,344.95862 128.92884,345.37716 C 135.56571,347.774 153.27073,350.99971 163.51903,351.67919 C 172.58723,352.28043 191.70575,351.86 199.25801,350.89325 z M 172.06008,350.25278 C 168.71788,349.89282 164.83966,348.81171 162.54371,347.59997 C 159.73381,346.11696 155.98854,342.56951 155.98854,341.39103 C 155.98854,340.20782 156.4224,340.36548 158.18976,342.19095 C 160.48416,344.56079 160.95275,344.73543 162.34826,343.74083 C 163.84466,342.67432 163.88194,341.48781 162.437,340.91699 C 160.43225,340.12502 160.15604,339.89943 160.018,338.94139 C 159.68456,336.62724 158.14253,336.37596 156.61068,338.38617 C 156.02803,339.15077 155.29617,339.77635 154.98433,339.77635 C 152.93862,339.77635 149.65918,325.86665 149.6313,317.07151 C 149.62368,314.66601 149.49881,313.5896 148.44085,306.80928 C 147.61016,301.48545 145.96562,294.77279 144.61314,291.18535 C 142.91058,286.66934 142.91722,286.2612 144.6988,285.92668 C 146.47589,285.59298 206.52263,286.02999 208.27892,286.38939 C 208.99279,286.53548 209.67611,286.81573 209.79741,287.01219 C 209.91871,287.20863 209.56771,288.57075 209.01742,290.03913 C 207.01596,295.37971 206.00942,300.22731 204.99925,309.39104 C 202.78821,329.44842 201.90243,334.39812 199.70377,338.98196 C 198.4373,341.62236 194.17349,346.07042 191.70308,347.3284 C 187.91025,349.25978 184.25838,350.09035 178.80616,350.26165 C 175.96884,350.3508 172.9331,350.34681 172.06008,350.25278 z M 171.12943,335.20862 C 171.0429,327.18148 170.84,322.3128 170.57873,321.99461 C 170.26193,321.60881 168.06457,321.51577 161.19694,321.59743 L 152.22883,321.70404 L 151.76081,322.69702 C 151.39747,323.46789 151.40993,324.40078 151.81651,326.86756 C 152.10457,328.6152 152.533,330.54009 152.76859,331.14507 C 153.13924,332.0969 153.29767,332.18207 153.94493,331.77747 C 155.01153,331.11076 155.87384,331.58323 156.55099,333.20538 C 157.00913,334.30286 157.36458,334.61283 158.16494,334.61283 C 158.99447,334.61283 159.33014,334.28901 159.91478,332.92476 C 160.43102,331.72013 161.05204,331.03946 162.08324,330.54802 C 162.87801,330.16926 163.52827,329.64712 163.52827,329.38772 C 163.52827,328.7535 162.33107,327.46335 161.74255,327.46335 C 161.11209,327.46335 160.07288,326.25618 159.89858,325.32135 C 159.82148,324.90785 159.43472,324.37164 159.03909,324.12977 C 158.45351,323.77176 158.17686,323.86432 157.55099,324.6277 C 157.12815,325.14343 156.78219,325.89676 156.78219,326.3018 C 156.78219,327.12522 155.67132,327.86054 154.42731,327.86054 C 152.80485,327.86054 153.99703,325.31913 156.35089,323.75999 C 158.33177,322.4479 158.74277,322.44067 160.19272,323.69241 C 160.82687,324.23986 161.61358,324.77872 161.94096,324.88988 C 162.26834,325.00102 162.82018,325.67022 163.16726,326.37696 C 164.05043,328.17532 164.93667,328.20946 165.9536,326.48431 C 166.77502,325.09084 169.08387,323.45751 169.08387,324.2699 C 169.08387,324.49083 168.86826,325.47848 168.60474,326.46467 C 168.21324,327.92976 167.9592,328.25774 167.21584,328.25774 C 165.93504,328.25774 165.99605,329.72215 167.30165,330.31757 C 168.19082,330.72307 169.4807,332.59642 169.4807,333.48227 C 169.4807,333.66717 169.03727,333.81844 168.49531,333.81844 C 167.71146,333.81844 167.30429,333.41227 166.50449,331.83247 C 165.95149,330.7402 165.22687,329.84651 164.89422,329.84651 C 164.56119,329.84651 163.97295,330.59228 163.58523,331.50603 C 163.00812,332.86615 162.60711,333.24249 161.36255,333.592 C 158.5479,334.38244 158.44612,336.33547 161.1723,337.24249 C 161.90808,337.4873 162.62104,337.93414 162.75666,338.23547 C 164.3261,341.72266 164.91617,341.95907 166.10689,339.57775 C 166.54382,338.70393 167.07989,337.85767 167.29814,337.69717 C 167.82534,337.30949 169.87753,337.31029 169.87753,337.69818 C 169.87753,338.38902 167.84545,340.92962 167.10466,341.16496 C 165.82123,341.57268 166.15192,342.94422 167.89338,344.43623 C 168.76641,345.18419 169.4807,345.96096 169.4807,346.1624 C 169.4807,347.03335 168.05512,346.40593 166.7029,344.93987 C 165.89693,344.06604 165.03778,343.35109 164.79368,343.35109 C 164.27433,343.35109 163.52827,344.61829 163.52827,345.50039 C 163.52827,346.81533 166.99869,348.12809 170.07594,347.9772 L 171.26642,347.91882 L 171.12943,335.20862 z M 189.80459,346.28687 C 191.71679,345.32301 193.58306,343.93473 195.36728,342.14886 C 197.7761,339.73783 198.05233,339.29998 198.05233,337.89303 C 198.05233,336.80536 197.7975,336.09389 197.22082,335.57153 C 196.40137,334.82925 196.37836,334.83187 195.63351,335.75257 C 195.21782,336.26639 194.87771,336.93736 194.87771,337.2436 C 194.87771,337.54984 193.89556,338.23515 192.69515,338.76651 C 189.90959,339.99956 189.69771,341.11487 192.12477,341.76901 C 193.85464,342.23525 194.11186,343.08122 192.77402,343.90431 C 192.17694,344.27166 191.8759,344.1209 190.94603,342.98884 C 189.80995,341.60573 188.52845,341.47269 188.52845,342.73786 C 188.52845,343.06965 187.81771,343.79021 186.94903,344.3391 C 185.11143,345.50019 184.957,345.53282 184.957,344.75996 C 184.957,343.59583 185.91164,342.13421 186.82123,341.90571 C 187.3352,341.77658 187.92914,341.34664 188.14107,340.95027 C 188.44492,340.382 188.3055,340.05567 187.48185,339.40718 C 186.90734,338.95486 186.30026,338.58477 186.13279,338.58477 C 185.96532,338.58477 185.63483,338.09324 185.39838,337.49249 C 185.16193,336.89173 184.74899,336.09599 184.48074,335.72416 C 183.65278,334.57655 184.39174,334.52252 186.00175,335.61293 C 186.8458,336.18459 187.85315,337.26584 188.24031,338.01572 C 188.62748,338.76561 189.18016,339.37916 189.4685,339.37916 C 190.11046,339.37916 190.99673,338.35552 191.61784,336.89669 C 191.87362,336.29594 192.34618,335.80442 192.66797,335.80442 C 192.98977,335.80442 193.71606,335.59325 194.28196,335.33518 C 195.74048,334.67002 195.44595,333.39965 193.63591,332.54856 C 192.72564,332.12055 192.10335,331.50306 191.94471,330.87041 C 191.64813,329.68768 190.23307,328.77583 189.63038,329.37909 C 189.41027,329.59939 189.02243,330.19684 188.76848,330.70676 C 188.27649,331.69471 184.84952,333.56975 184.62505,332.97382 C 184.55161,332.77884 184.82598,332.04611 185.23476,331.34553 C 185.7448,330.47142 186.38967,329.98748 187.29,329.80317 C 189.81175,329.28694 189.93858,328.03497 187.60854,326.65895 C 186.40547,325.94846 185.35383,324.46532 185.35383,323.4791 C 185.35383,322.81228 188.38765,324.67048 188.91781,325.66201 C 189.20155,326.19266 189.70227,326.72998 190.03053,326.85607 C 190.68592,327.1078 191.95531,326.13905 192.29607,325.12711 C 192.41511,324.77361 193.22324,324.0463 194.09193,323.51086 C 196.9043,321.77737 196.31792,321.50544 189.76753,321.50544 C 185.44877,321.50544 183.75029,321.64221 183.44132,322.01484 C 182.94375,322.61494 182.68397,346.93102 183.16677,347.71293 C 183.66768,348.52417 186.62755,347.88827 189.80459,346.28687 z M 177.39333,332.55439 C 177.3335,318.36068 177.37524,317.35501 178.04442,316.86524 C 178.59681,316.46095 181.3597,316.34192 190.19161,316.34192 C 197.54851,316.34192 201.62379,316.20033 201.62379,315.94473 C 201.62379,315.68897 197.48355,315.54753 189.99672,315.54753 C 177.71675,315.54753 177.41726,315.50365 177.41726,313.70417 C 177.41726,313.21461 177.23869,312.7036 177.02043,312.56858 C 176.79123,312.42679 176.62361,312.80278 176.62361,313.45869 C 176.62361,314.08326 176.40932,314.80875 176.14741,315.07091 C 175.79799,315.42065 172.47014,315.54753 163.64732,315.54753 C 155.89594,315.54753 151.62343,315.68867 151.62343,315.94473 C 151.62343,316.20037 155.71537,316.34192 163.10561,316.34192 C 169.60575,316.34192 175.02946,316.51 175.6057,316.72929 L 176.62361,317.11665 L 176.62361,332.41843 C 176.62361,342.84414 176.75643,347.72022 177.04043,347.72022 C 177.32548,347.72022 177.43704,342.92572 177.39333,332.55439 z M 156.30703,336.15575 C 156.40371,335.32495 156.18845,335.02476 155.20303,334.61622 C 153.60405,333.95329 153.42748,334.20789 154.26583,335.96754 C 155.0618,337.63825 156.12315,337.73613 156.30703,336.15575 z M 200.03647,333.99185 C 200.03647,333.12998 199.20987,332.88681 198.54438,333.55292 C 198.02944,334.06833 198.01086,334.28283 198.43669,334.79639 C 198.82884,335.26934 199.0804,335.30976 199.49388,334.96629 C 199.79231,334.71839 200.03647,334.2799 200.03647,333.99185 z M 197.49689,332.72008 C 197.73704,332.55958 198.14511,332.02611 198.40372,331.53458 C 198.68754,330.99513 199.24327,330.6409 199.80574,330.6409 C 200.82273,330.6409 201.21219,329.79321 201.22154,327.55928 C 201.22642,326.39459 201.15277,326.31141 200.48587,326.72828 C 199.45571,327.37222 198.44916,326.88007 198.44916,325.73244 C 198.44916,325.20365 198.11248,324.35484 197.70099,323.84619 C 197.04646,323.03713 196.86934,322.99072 196.28592,323.47537 C 195.91914,323.78005 195.35868,324.53327 195.04047,325.1492 C 194.72226,325.76511 193.83866,326.52969 193.07692,326.84826 C 190.72282,327.83277 190.86287,329.51144 193.34463,330.05703 C 193.99906,330.20089 194.63887,330.61454 194.76642,330.97625 C 195.33711,332.5945 196.5376,333.3612 197.49689,332.72008 z M 201.62379,323.6815 C 201.62379,322.16645 201.4734,321.81702 200.66209,321.44702 C 200.10625,321.19354 199.08101,321.12474 198.23279,321.28401 L 196.76519,321.55958 L 197.87983,322.7241 C 198.49289,323.36457 199.22741,323.88861 199.51211,323.88861 C 199.79681,323.88861 200.25279,324.24608 200.5254,324.68299 C 201.30023,325.92483 201.62379,325.62982 201.62379,323.6815 z M 177.39723,299.88718 C 177.42758,293.04586 177.3011,289.30778 177.03368,289.14235 C 176.75525,288.97012 176.62361,292.41007 176.62361,299.85839 C 176.62361,306.40081 176.77033,310.73733 176.98715,310.60321 C 177.19053,310.4774 177.3712,305.75628 177.39723,299.88718 z M 157.57585,309.70992 C 157.96807,309.33855 155.5271,307.60367 154.61237,307.60367 C 153.91559,307.60367 153.26691,307.00191 152.06702,305.24246 L 150.45676,302.88125 L 151.46211,300.68325 C 152.3355,298.77377 152.66646,298.43162 153.98336,298.07668 C 156.7994,297.31771 157.10393,295.71659 154.6291,294.68159 C 153.87527,294.36634 153.02454,293.63126 152.73859,293.0481 C 151.93069,291.40051 151.0314,291.01296 150.05934,291.89348 C 149.61005,292.30045 149.24246,292.88694 149.24246,293.19678 C 149.24246,293.9847 147.89274,293.65043 147.73355,292.82308 C 147.66254,292.45398 148.06227,291.75354 148.62186,291.26654 C 149.18144,290.77954 149.63928,289.96647 149.63928,289.45973 C 149.63928,288.20129 150.93664,288.24271 151.95107,289.53353 C 152.38121,290.08087 153.31359,290.77297 154.02302,291.07155 C 154.90276,291.44179 155.57804,292.1673 156.14676,293.35324 C 157.28959,295.73639 158.38753,295.86394 159.35095,293.72547 C 159.76905,292.79744 160.62843,291.79495 161.39291,291.34348 C 162.69025,290.57733 162.70348,290.5414 162.16268,289.25326 L 161.61242,287.94258 L 154.09408,287.8349 C 145.04625,287.70531 145.14826,287.65695 146.59843,291.38875 C 147.13527,292.7702 147.68036,294.43669 147.80975,295.09207 C 148.07179,296.41929 148.42946,298.09945 149.6217,303.60371 C 150.06788,305.66363 150.43294,307.84428 150.43294,308.44959 C 150.43294,310.04896 151.37793,310.43367 154.59964,310.14591 C 156.12743,310.00944 157.46672,309.81325 157.57585,309.70992 z M 202.70457,309.50376 C 203.25661,309.05904 203.51975,307.73147 203.78975,304.02892 C 203.8933,302.60895 204.14402,300.01727 204.34692,298.26961 C 204.54981,296.52196 204.58098,294.82396 204.41618,294.49627 C 203.85915,293.38867 203.63051,291.35164 204.03514,291.10134 C 204.25581,290.96483 204.68857,291.06265 204.99683,291.31873 C 205.72266,291.92166 206.16382,291.62228 206.79421,290.09898 C 207.22252,289.06399 207.21477,288.80436 206.74667,288.50777 C 206.43903,288.31283 202.96897,288.1506 199.03544,288.14726 L 191.88356,288.14117 L 191.15378,289.49754 C 190.29121,291.10073 190.46582,291.50778 192.27211,292.10445 C 193.23399,292.42219 193.74732,292.90578 194.05231,293.78147 C 194.66284,295.53445 194.60909,295.68857 193.3896,295.68177 C 191.93268,295.67365 191.48416,295.31941 191.13704,293.9027 C 190.76432,292.38156 190.20421,291.71592 189.29694,291.71592 C 188.44459,291.71592 188.094,292.20387 187.75526,293.86168 C 187.58138,294.71265 187.18116,295.19798 186.43743,295.45978 C 185.84997,295.66657 185.26907,295.73542 185.14655,295.61279 C 184.63797,295.10374 186.29423,292.05756 187.38716,291.49187 C 188.01487,291.16696 188.52845,290.65219 188.52845,290.34793 C 188.52845,289.4425 185.92665,288.07434 184.47139,288.21453 L 183.17127,288.33978 L 183.07153,298.43782 C 182.99125,306.56606 183.08047,308.70188 183.52895,309.38698 C 184.07726,310.22458 184.23002,310.23536 193.15257,310.06649 C 198.22935,309.97041 202.43269,309.72278 202.70457,309.50376 z M 184.78131,308.43485 C 184.41314,307.83859 186.17385,305.19081 187.19756,304.80124 C 188.52397,304.29647 188.36035,303.10625 186.80088,301.91568 C 185.5639,300.97133 184.21345,298.68286 184.64076,298.25516 C 185.11089,297.78459 187.27776,299.3656 187.52745,300.36135 C 188.17619,302.94851 190.02586,303.25297 191.06618,300.94384 C 191.49139,300.00002 192.28289,299.15675 193.20979,298.65998 C 194.11857,298.17293 194.72768,297.53141 194.8061,296.97873 C 194.97145,295.81339 195.72578,295.84794 197.19854,297.08833 C 197.85372,297.64014 198.93156,298.28066 199.59374,298.51171 C 200.25592,298.74276 200.90059,299.25628 201.02635,299.65285 C 201.1521,300.04944 201.71811,300.83745 202.28414,301.404 C 203.14299,302.26364 203.22968,302.53494 202.80801,303.04348 C 202.36281,303.58042 202.24985,303.54666 201.8578,302.75958 C 201.59874,302.23947 200.79124,301.69172 199.92486,301.44841 C 198.82701,301.14011 198.25637,300.66858 197.74855,299.65008 C 196.78999,297.72753 195.73093,297.82962 194.55816,299.95757 C 194.00465,300.96189 193.24993,301.74048 192.69469,301.87996 C 192.18143,302.0089 191.45585,302.45245 191.08228,302.86561 C 190.2341,303.8037 190.80068,304.64905 192.5328,305.02983 C 193.3882,305.21788 193.86427,305.67014 194.29631,306.70513 C 194.62181,307.48486 194.80288,308.20815 194.69869,308.31244 C 194.25994,308.75159 191.65659,307.07704 191.09839,305.99661 C 190.25203,304.35841 188.87395,304.41162 188.05306,306.11419 C 187.39023,307.48893 185.16974,309.06393 184.78131,308.43485 z M 197.83892,307.76446 C 198.01243,307.34833 198.24252,306.60056 198.35022,306.10275 C 198.45793,305.60493 198.92113,304.93466 199.37956,304.61327 C 200.25869,303.99694 201.62482,303.82245 201.6223,304.32681 C 201.61844,305.10332 200.01068,307.0861 198.83486,307.76446 C 197.54528,308.50845 197.52869,308.50845 197.83892,307.76446 z M 197.65551,294.12745 C 197.65551,293.34894 198.62683,292.11312 199.23871,292.11312 C 199.42352,292.11312 199.8572,292.00463 200.20243,291.87202 C 201.18407,291.49499 201.05241,293.95206 200.06256,294.4823 C 198.80132,295.15792 197.65551,294.989 197.65551,294.12745 z M 201.3025,289.82925 C 201.37606,289.44695 201.69921,289.13416 202.02062,289.13416 C 202.34202,289.13416 202.66517,289.44695 202.73873,289.82925 C 202.83256,290.31695 202.6183,290.52434 202.02062,290.52434 C 201.42293,290.52434 201.20867,290.31695 201.3025,289.82925 z M 171.28439,309.48739 C 171.3897,309.21271 171.33946,304.34485 171.17273,298.66995 L 170.8696,288.35193 L 169.40173,288.11378 C 168.5944,287.98279 167.38904,287.95565 166.72314,288.05348 C 165.65697,288.2101 165.51241,288.38613 165.51241,289.5278 C 165.51241,290.90242 166.0137,291.53932 167.28082,291.77458 C 167.81791,291.8743 168.15501,292.39015 168.3747,293.44853 C 168.54935,294.28992 168.99023,295.48323 169.35442,296.10033 C 169.98696,297.17211 169.97565,297.2991 169.10187,298.93756 C 168.59878,299.88092 167.62998,301.01306 166.94899,301.45342 C 165.29397,302.52361 165.14632,303.72074 166.58611,304.39562 C 167.19598,304.68148 167.93392,305.02993 168.22596,305.16996 C 168.518,305.30998 169.00923,306.0251 169.31758,306.75912 C 169.86487,308.06193 169.85695,308.08798 168.985,307.8541 C 168.49374,307.72233 167.77295,307.61206 167.38325,307.60908 C 166.92383,307.60557 166.40556,306.97521 165.90924,305.81629 C 165.48824,304.83324 164.95887,304.02892 164.73286,304.02892 C 164.11426,304.02892 162.73462,305.53509 162.73462,306.21044 C 162.73462,306.53645 161.84496,307.38545 160.75761,308.0971 C 159.67025,308.80877 158.77739,309.52508 158.77347,309.68894 C 158.76954,309.85278 161.53981,309.98683 164.92962,309.98683 C 169.51355,309.98683 171.14199,309.85884 171.28439,309.48739 z M 159.40177,306.83746 C 159.96244,305.68199 160.65492,304.94252 161.51545,304.58037 C 163.13477,303.89887 163.01306,302.87157 161.21216,302.02045 C 159.64449,301.27955 159.17738,300.62626 159.16924,299.1633 C 159.16462,298.33379 159.35409,298.07102 159.95682,298.07102 C 160.85805,298.07102 162.33779,299.39043 162.33779,300.19402 C 162.33779,300.48785 162.69158,301.04873 163.124,301.44042 C 164.04965,302.27889 164.88652,301.81896 165.27833,300.25643 C 165.44116,299.60707 166.09514,299.04177 167.3014,298.50769 C 168.28176,298.07363 169.08387,297.54268 169.08387,297.32779 C 169.08387,296.81228 167.13541,295.29066 166.47528,295.29066 C 166.16921,295.29066 165.85252,294.58746 165.69993,293.56901 C 165.35502,291.26686 165.0076,290.77624 163.95834,291.10957 C 163.42953,291.27756 163.01037,291.82536 162.8689,292.53334 C 162.59622,293.89804 162.2181,294.23953 160.29292,294.85979 C 159.31533,295.17476 158.76758,295.62884 158.61074,296.25428 C 158.48284,296.76437 158.0167,297.27633 157.57488,297.39197 C 157.13307,297.50761 156.49996,298.25291 156.16798,299.04819 C 155.71119,300.14244 155.13337,300.67906 153.79231,301.25443 C 151.22314,302.35672 151.45458,304.03753 154.27665,304.77176 C 154.96707,304.9514 155.63832,305.5455 156.03523,306.32824 C 157.53694,309.28973 158.16572,309.38485 159.40177,306.83746 z M 189.91735,288.53837 C 189.78246,288.31992 189.50407,288.14117 189.29869,288.14117 C 189.09332,288.14117 188.92528,288.31992 188.92528,288.53837 C 188.92528,288.75683 189.20368,288.93556 189.54395,288.93556 C 189.88421,288.93556 190.05224,288.75683 189.91735,288.53837 z M 164.02431,288.27532 C 163.75149,288.16514 163.30506,288.16514 163.03224,288.27532 C 162.75942,288.3855 162.98263,288.47566 163.52827,288.47566 C 164.07391,288.47566 164.29713,288.3855 164.02431,288.27532 z M 192.89357,348.50478 C 192.89357,347.85211 194.62992,347.36715 198.55498,346.92358 C 200.57021,346.69584 203.7369,346.23294 205.59207,345.89493 C 217.74743,343.6802 237.37741,337.60361 236.98039,336.17846 C 236.89265,335.86351 236.5646,334.62276 236.25139,333.42126 C 235.46196,330.39288 234.73291,329.71472 232.74597,330.16054 C 230.74724,330.60899 230.19542,330.40499 230.19542,329.21762 C 230.19542,328.25675 230.98888,327.25687 232.4128,326.42337 C 233.15651,325.98804 233.15418,325.91677 232.2961,322.84863 C 230.97113,318.11108 228.73812,311.74625 228.01165,310.6365 C 227.65613,310.09342 226.81694,309.45775 226.14678,309.22392 C 224.96181,308.81046 224.93535,308.74726 225.1847,306.92638 C 225.32572,305.89657 225.57332,304.92425 225.73492,304.76566 C 225.89651,304.60707 226.74302,304.64163 227.61604,304.84246 C 228.48906,305.04328 229.7005,305.3048 230.30813,305.4236 C 231.57648,305.6716 231.82969,306.19013 232.75413,310.43259 C 233.49044,313.81167 238.0475,325.42502 239.30535,327.12792 C 240.17517,328.3055 240.34324,329.26194 239.74533,329.63181 C 239.30182,329.90616 238.13199,333.78728 238.13199,334.98432 C 238.13199,336.69975 239.11285,336.44223 248.25111,332.32764 C 255.17802,329.20873 261.93839,325.59705 266.54643,322.55347 C 268.83601,321.04123 279.01126,313.97323 281.2068,312.36999 C 288.2748,307.20876 304.3925,291.55035 309.62146,284.76503 C 311.1366,282.79892 313.85489,279.27212 315.66212,276.9277 C 324.0342,266.06697 329.83558,255.74005 334.57667,243.2583 C 335.19901,241.61987 336.25825,238.84944 336.93054,237.10179 C 339.51846,230.37432 341.43648,224.16451 342.88056,217.8379 C 343.35427,215.76256 343.88893,213.43898 344.06869,212.67438 C 346.29445,203.20739 348.2186,185.74062 347.85351,178.31713 C 347.74608,176.13257 347.56737,171.30666 347.45639,167.5929 C 347.34541,163.87915 347.07681,159.67882 346.85951,158.25886 C 346.64221,156.83888 346.27723,154.33657 346.04844,152.69814 C 344.43181,141.12119 340.93419,128.04284 336.29652,116.23359 C 328.29774,95.865717 319.79773,81.285177 307.52215,66.875327 C 302.90122,61.450997 294.753,53.399727 293.88427,53.399727 C 293.58703,53.399727 293.28733,53.891257 293.21827,54.492017 C 293.09826,55.535967 292.99613,55.584297 290.91015,55.584297 C 288.79804,55.584297 288.72337,55.547227 288.59661,54.435807 C 288.461,53.246777 289.13448,52.471767 290.02073,52.796967 C 290.69611,53.044787 292.59489,52.293377 292.43051,51.843327 C 292.14533,51.062517 285.64368,45.562427 279.99737,41.325467 C 273.53707,36.477697 263.92416,29.920827 259.12403,27.087997 C 254.4719,24.342487 243.10536,19.263117 238.03278,17.662937 C 236.49936,17.179197 236.00959,16.447727 237.23913,16.477587 C 237.62107,16.486867 239.0943,16.912547 240.51296,17.423547 C 241.93162,17.934547 244.61021,18.901347 246.46538,19.571987 C 256.41434,23.168537 276.60464,35.761967 288.43957,45.752827 C 292.06734,48.815327 306.49507,63.381787 309.37787,66.892437 C 317.30056,76.540677 317.95073,77.406837 322.20693,83.983637 C 328.28005,93.368007 329.55763,95.733047 333.90058,105.6307 C 335.21854,108.63436 340.11686,121.21149 340.11686,121.59189 C 340.11686,121.74795 340.63017,123.31454 341.25755,125.07319 C 343.53855,131.46717 344.12571,133.66878 345.71195,141.77532 C 348.89117,158.02291 349.80369,171.59418 348.83664,188.24697 C 348.14093,200.22729 348.04704,201.31413 347.48127,203.93613 C 347.17487,205.35609 346.53646,208.30525 346.06257,210.48981 C 345.58868,212.67438 344.96415,215.62355 344.67471,217.04351 C 343.74973,221.5814 338.79332,236.91061 336.45549,242.46391 C 332.68057,251.43091 327.62294,262.03402 326.41414,263.51517 C 326.14671,263.84285 325.30756,265.27275 324.54937,266.69272 C 322.71503,270.1281 314.73466,281.23367 310.00152,286.93766 C 303.54795,294.71495 288.19187,309.36321 281.18786,314.42319 C 278.02308,316.70956 266.29814,324.44012 264.12424,325.6737 C 263.03296,326.29294 260.89009,327.56472 259.3623,328.49987 C 256.32894,330.35658 252.30332,332.26785 246.46538,334.62306 C 244.39196,335.45955 241.62408,336.66744 240.31455,337.30727 C 237.44009,338.71169 232.19465,340.64763 228.4097,341.701 C 226.88191,342.12618 222.77474,343.3155 219.28265,344.34392 C 212.73045,346.27353 210.24836,346.76954 200.4333,348.11065 C 193.80733,349.01601 192.89357,349.06379 192.89357,348.50478 z M 152.21867,347.24491 C 150.43625,346.90228 145.99985,345.99928 137.93285,344.33712 C 130.4427,342.79382 118.77998,338.87352 108.36914,334.39962 C 103.96126,332.50539 101.67599,331.38949 92.297602,326.55182 C 75.078982,317.66993 53.920802,299.40926 40.888862,282.18327 C 38.146592,278.55847 31.856692,269.17229 28.906242,264.30209 C 23.660942,255.64385 13.815872,233.58491 12.512042,227.56914 C 12.370002,226.91377 11.829142,224.99304 11.310122,223.30084 C 10.173512,219.59503 8.5208214,212.43523 8.1696014,209.69543 C 8.0295814,208.60315 7.6765914,206.81577 7.3851814,205.72349 C 5.4804814,198.5841 4.5669414,174.01715 5.7826314,162.62799 C 6.8182014,152.92635 7.1439414,150.55673 7.9665914,146.74024 C 8.4139414,144.6649 9.1349314,141.2053 9.5687814,139.05224 C 10.002632,136.89918 10.437412,135.00833 10.534962,134.85037 C 10.632502,134.69239 11.175052,132.78987 11.740622,130.62255 C 15.628782,115.7227 20.915992,103.45497 31.095012,85.715187 C 31.617922,84.803877 35.321712,79.487667 38.417552,75.204827 C 43.123122,68.695057 52.294852,58.453667 59.315122,51.870037 C 73.531362,38.538037 80.879722,33.141087 94.281742,26.189087 C 105.14596,20.553517 111.17134,17.627047 113.34648,16.929567 C 116.44829,15.934927 120.67082,15.420347 120.67082,16.036987 C 120.67082,16.283757 120.4476,16.550937 120.17478,16.630737 C 113.09619,18.701197 105.29315,21.824377 100.7334,24.412207 C 100.35322,24.627967 97.763912,26.033907 94.979392,27.536507 C 79.425902,35.929557 69.989992,43.040417 56.327762,56.664187 C 52.289932,60.690657 45.078122,68.829857 41.271492,73.656597 C 35.755612,80.650657 24.295382,99.442887 24.739062,100.76614 C 24.830422,101.03862 25.514792,101.26157 26.259882,101.26157 C 27.565242,101.26157 27.628182,101.33208 27.987902,103.19746 C 28.315572,104.89666 28.269022,105.20084 27.607122,105.68528 C 26.538192,106.46762 26.096902,106.18658 25.600402,104.40728 C 24.963792,102.12587 23.786812,102.08941 22.725402,104.31821 C 21.066632,107.80138 17.607992,116.02074 16.991912,117.9437 C 16.641952,119.03598 15.878212,121.35957 15.294682,123.10721 C 14.711162,124.85487 14.050122,126.99971 13.825702,127.87354 C 13.601282,128.74736 13.174442,130.1362 12.877182,130.95983 C 11.685802,134.26079 12.198232,134.72952 18.606572,136.20059 C 24.613892,137.5796 24.923192,137.32585 22.203672,133.24958 C 20.311752,130.41381 20.269632,130.52836 24.040212,128.25575 C 26.308492,126.8886 26.465512,126.85108 27.459442,127.43875 C 29.010662,128.35592 35.089062,129.6765 38.924192,129.92954 C 42.699132,130.17862 43.289302,130.56006 43.289302,132.75083 C 43.289302,133.49296 43.861122,135.29085 44.560022,136.74616 C 45.258912,138.20145 45.839282,139.50683 45.849712,139.64698 C 45.869642,139.91462 38.910502,145.15146 38.534902,145.15146 C 38.415462,145.15146 37.338112,144.77544 36.140792,144.31587 C 33.006132,143.11269 26.367792,141.94827 20.900282,141.64258 L 16.170122,141.37812 L 15.612692,139.70042 C 15.104052,138.16955 13.179592,136.01601 12.320212,136.01601 C 11.239982,136.01601 10.067822,141.06489 7.9861714,154.68411 C 6.3871514,165.14572 6.0060814,185.64947 7.2110614,196.38944 C 7.5913514,199.77892 9.4269714,210.06309 10.578582,215.25614 C 12.304282,223.03802 17.336352,237.95449 20.744952,245.39215 C 22.633322,249.51261 28.944092,261.63476 30.696722,264.50815 C 39.342662,278.683 53.066112,296.08505 55.598622,296.08505 C 56.164442,296.08505 57.795172,294.77428 60.264212,292.33486 C 63.526722,289.11151 63.987862,288.49773 63.546742,287.96573 C 63.166532,287.50718 62.271632,287.34679 60.093462,287.34679 C 56.795242,287.34679 56.959612,287.50925 56.596652,283.89061 L 56.349582,281.42743 L 57.654182,280.75217 C 59.684042,279.70152 63.130422,276.71501 66.139642,273.39898 L 68.884732,270.37399 L 73.423882,270.52803 C 75.920422,270.61275 78.008942,270.72801 78.065042,270.78417 C 78.121152,270.84032 78.460582,272.31098 78.819342,274.0523 C 79.178102,275.79364 79.646632,277.43034 79.860522,277.68945 C 80.294502,278.21518 79.640142,279.80011 78.989102,279.80011 C 78.778092,279.80011 75.836182,282.5698 72.451512,285.95498 C 66.604772,291.80261 63.527542,295.6471 63.527542,297.10404 C 63.527542,297.63526 63.275982,297.71505 62.237852,297.51312 C 58.478012,296.78178 57.196222,296.76769 56.932802,297.45478 C 56.584852,298.36237 58.549562,300.34936 66.978802,307.61467 C 76.955652,316.2139 87.477732,322.90149 103.40879,330.76873 C 109.75028,333.90035 123.8281,339.36264 129.20263,340.77691 C 130.29391,341.06408 132.16892,341.59306 133.36932,341.95243 C 134.56973,342.31179 136.62332,342.87436 137.93285,343.20258 C 140.80298,343.92193 155.26363,346.52864 156.38408,346.52864 C 156.82614,346.52864 157.17902,346.79312 157.17902,347.12443 C 157.17902,347.81378 155.40245,347.85691 152.21867,347.24491 z M 66.866202,285.38817 C 68.719242,283.91421 73.211112,279.34004 74.022112,278.10116 C 74.577202,277.2532 74.577752,276.95836 74.027642,275.10424 C 73.692072,273.97321 73.198822,273.04782 72.931532,273.04782 C 72.664242,273.04782 69.963432,275.53699 66.929712,278.57932 L 61.413882,284.11082 L 62.065212,285.10579 C 62.424432,285.65454 63.209852,286.17536 63.816502,286.26707 C 64.421472,286.35854 65.025822,286.46016 65.159502,286.49289 C 65.293182,286.52563 66.061202,286.0285 66.866202,285.38817 z M 38.840792,138.83502 C 39.650562,138.41937 40.731752,137.63023 41.243452,137.0814 L 42.173812,136.0835 L 41.243452,135.49867 C 40.245172,134.87113 38.950482,134.55832 31.663482,133.18393 C 26.748392,132.25691 25.342832,132.36115 24.493502,133.71564 C 24.157202,134.25196 24.318772,134.75154 25.264292,136.0988 C 26.209632,137.44579 26.789752,137.8652 28.029662,138.09804 C 28.892642,138.26011 30.848732,138.64367 32.376522,138.9504 C 36.215822,139.72121 37.146732,139.70458 38.840792,138.83502 z M 136.53143,339.08126 C 135.56857,337.60668 133.52569,334.73304 131.9917,332.6954 C 127.63539,326.90878 127.8031,327.26207 128.40097,325.13114 C 129.6153,320.80305 130.59153,315.85743 130.59153,314.0336 C 130.59153,311.84411 130.85336,311.52612 133.21081,310.8526 C 134.10577,310.59691 135.87086,309.83604 137.13322,309.16179 L 139.42842,307.93587 L 141.08859,309.7458 C 142.00168,310.74125 143.40625,311.8307 144.20988,312.16678 C 145.0135,312.50286 145.671,312.97836 145.671,313.22344 C 145.671,313.46851 145.20952,315.91115 144.64548,318.65152 C 144.08144,321.39188 143.57822,324.46004 143.52722,325.46964 C 143.4056,327.8769 143.24523,328.07792 141.01501,328.61883 C 138.09252,329.32762 136.98887,329.86352 136.72265,330.70307 C 136.41335,331.67847 137.06112,332.66098 139.86155,335.46397 C 141.09245,336.69601 142.09955,337.83391 142.09955,337.99267 C 142.09955,338.15142 141.56383,338.89202 140.90906,339.63843 C 140.25429,340.38486 139.71858,341.16809 139.71858,341.37895 C 139.71858,341.5898 139.39537,341.76232 139.00034,341.76232 C 138.55108,341.76232 137.62647,340.75827 136.53143,339.08126 z M 137.51187,328.95283 C 138.34527,328.21698 138.69434,327.21732 139.48831,323.29282 C 140.01866,320.67134 140.64215,317.91053 140.87386,317.15769 C 141.33539,315.65812 140.97513,314.79597 138.99772,312.66789 C 136.85337,310.36012 135.69833,311.52239 134.55286,317.14058 C 134.08566,319.43203 133.43557,322.25012 133.10822,323.40302 C 132.52526,325.45606 132.53423,325.53541 133.54411,327.26023 C 134.47355,328.84766 135.46632,329.80121 136.2242,329.83443 C 136.37572,329.84107 136.95517,329.44435 137.51187,328.95283 z M 213.33022,333.99277 C 211.38805,332.65108 211.34044,332.56964 211.07935,330.14202 C 210.66698,326.30786 209.67195,320.66234 209.13711,319.12228 C 208.43177,317.09131 207.58242,316.25424 206.5023,316.52559 C 205.8562,316.6879 205.59207,316.58136 205.59207,316.15842 C 205.59207,315.10484 208.12442,310.38402 208.68958,310.38402 C 208.98999,310.38402 209.96595,311.0096 210.85839,311.7742 C 211.75083,312.5388 212.78389,313.16437 213.15408,313.16437 C 213.58384,313.16437 214.35483,312.15928 215.28685,310.38402 C 216.08968,308.85483 216.96002,307.60986 217.22094,307.61744 C 217.48186,307.62502 218.8771,308.50466 220.32147,309.57219 L 222.94761,311.51316 L 223.35657,315.21842 C 224.07878,321.7618 225.35675,325.60906 227.10943,326.51623 C 228.12379,327.04127 228.23361,327.26756 228.01436,328.38085 C 227.64527,330.25503 226.97564,331.83247 226.54914,331.83247 C 226.1427,331.83247 223.61989,329.89615 221.80209,328.18899 C 220.80476,327.25237 220.67155,326.84877 220.67155,324.76384 C 220.67155,320.46228 218.76575,314.45382 217.12207,313.57334 C 215.83122,312.88186 215.21624,313.10678 214.2882,314.60977 C 213.43023,315.99928 213.41308,316.2033 213.84472,319.88568 C 214.597,326.30341 215.05798,327.89886 216.55716,329.27331 L 217.89214,330.49724 L 217.00008,332.95187 C 216.50945,334.30193 215.92945,335.39682 215.71119,335.38498 C 215.49294,335.37314 214.4215,334.74665 213.33022,333.99277 z M 119.16287,328.97268 C 118.90097,328.71053 118.68668,328.24334 118.68668,327.93448 C 118.68668,327.62561 118.29864,326.68186 117.82438,325.83725 C 117.03959,324.4396 117.01751,324.2384 117.57871,323.5986 C 118.25219,322.83079 119.08351,318.63936 119.08351,316.01149 C 119.08351,314.898 118.82939,314.1016 118.30736,313.57909 C 117.53705,312.80808 117.54825,312.78722 119.79547,310.80436 C 121.04081,309.70553 122.28293,308.80395 122.55575,308.80086 C 123.12156,308.79445 123.14131,310.22299 122.68476,318.1293 C 122.38171,323.37738 122.54083,324.39844 123.81106,325.35648 C 124.35912,325.76984 124.18366,326.06339 122.45655,327.62254 C 120.33063,329.54171 119.90548,329.71598 119.16287,328.97268 z M 108.18957,324.5837 C 108.1045,324.31063 107.94293,323.28288 107.83051,322.29983 C 107.71809,321.31677 107.50517,320.11247 107.35736,319.62359 C 107.15603,318.95771 107.27411,318.67835 107.82809,318.50994 C 108.2348,318.38631 109.9041,317.62449 111.53765,316.81704 C 113.1712,316.00959 114.68389,315.27619 114.89918,315.18728 C 115.11447,315.09837 114.81554,315.59074 114.23488,316.28145 C 113.04663,317.69491 112.51653,320.23167 112.91549,322.59529 C 113.17407,324.12721 113.15821,324.15192 111.62004,324.61319 C 109.6077,325.21666 108.38347,325.20613 108.18957,324.5837 z M 243.22364,324.48341 C 243.11398,324.37365 243.10759,322.40821 243.20946,320.11575 L 243.39466,315.94765 L 241.96656,315.3504 C 241.1811,315.02191 239.99317,314.75315 239.32671,314.75315 C 238.43181,314.75315 238.02924,314.51948 237.78707,313.85946 C 235.49493,307.61234 235.51431,307.72842 236.01484,303.24466 L 236.34626,300.27584 L 238.00246,299.99371 C 240.06175,299.64291 241.61629,298.84964 242.86389,297.51296 C 244.22651,296.05307 244.86442,296.19345 244.94849,297.97172 C 245.14245,302.07415 245.11392,304.08163 244.85942,304.23906 C 244.70487,304.33466 244.49724,303.43301 244.39802,302.2354 C 244.29879,301.03778 244.08766,299.92783 243.92883,299.76885 C 243.76999,299.60987 243.07037,300.1322 242.37412,300.92959 C 241.67786,301.72696 240.53917,302.65988 239.84367,303.00272 C 239.14818,303.34557 238.47612,303.79292 238.35021,303.99685 C 238.03703,304.50405 239.56676,308.49401 240.55795,309.75527 C 241.51871,310.9778 243.08832,311.1076 243.67363,310.01294 C 243.89956,309.59038 244.08715,308.56265 244.09049,307.72907 C 244.09383,306.89551 244.26967,305.94538 244.48124,305.6177 C 244.70674,305.26845 244.86843,305.21561 244.87199,305.49002 C 244.88455,306.45692 246.07678,307.18496 247.25979,306.94814 C 249.50387,306.49891 250.25809,307.0171 252.00969,310.21154 L 253.65928,313.21994 L 253.03854,315.95163 C 252.69714,317.45405 252.41781,319.29917 252.41781,320.05188 C 252.41781,321.6035 251.96153,321.90264 249.59481,321.90264 C 247.70646,321.90264 245.74518,322.67917 244.71736,323.83379 C 243.95494,324.69025 243.58921,324.84932 243.22364,324.48341 z M 246.26697,319.51948 C 247.12316,319.08257 248.50582,318.72509 249.33954,318.72509 C 251.27722,318.72509 251.54007,318.06633 250.68533,315.35228 C 249.67828,312.15462 248.74089,311.17841 246.67745,311.17841 C 245.59985,311.17841 244.88622,311.37863 244.75634,311.7174 C 244.39116,312.66993 243.97878,319.42425 244.25818,319.87676 C 244.59674,320.42505 244.43653,320.45355 246.26697,319.51948 z M 87.138832,319.69109 C 83.185732,317.43918 82.536212,316.86072 83.368962,316.33365 C 84.347152,315.71452 85.450642,315.896 87.337242,316.98629 C 89.935602,318.48792 92.158882,319.2214 92.643082,318.73676 C 93.309332,318.0699 91.885362,315.68003 90.128342,314.51623 C 88.286482,313.29621 88.111222,312.54291 89.519802,311.90053 C 90.264852,311.56075 90.763542,311.56286 91.522612,311.90904 C 92.078522,312.16256 92.700372,312.36999 92.904502,312.36999 C 93.108632,312.36999 94.930592,309.93541 96.953312,306.95981 C 102.45131,298.87178 102.05834,299.63388 101.5957,297.95682 C 101.3734,297.15094 100.84218,296.30446 100.41522,296.07574 C 99.163662,295.40532 99.538262,294.767 101.87787,293.58339 C 103.60305,292.71062 104.19512,292.57178 104.63471,292.93694 C 104.9426,293.1927 105.19452,293.60757 105.19452,293.85887 C 105.19452,294.11018 105.81952,295.26569 106.58342,296.42668 C 107.34731,297.58765 107.97231,298.62853 107.97231,298.73973 C 107.97231,298.85094 107.01168,300.04181 105.83757,301.38613 C 103.82326,303.69243 98.892132,311.16454 97.199392,314.47549 C 96.529362,315.78604 96.492352,316.16459 96.918862,317.34516 C 97.189082,318.09314 97.331282,318.76988 97.234862,318.84903 C 96.655432,319.32467 91.502312,321.50493 90.963352,321.50249 C 90.605912,321.50086 88.884872,320.68573 87.138832,319.69109 z M 101.23739,316.86169 C 100.18392,315.5212 100.33276,314.35088 101.65056,313.61307 C 102.99862,312.85831 104.54235,313.28052 105.12648,314.56372 C 105.75443,315.94319 105.71992,316.21323 104.79769,317.13632 C 103.68226,318.25276 102.24338,318.14178 101.23739,316.86169 z M 257.83649,312.43801 C 256.43072,310.88322 257.32257,308.69595 259.3623,308.69595 C 260.72032,308.69595 261.54486,309.47884 261.54486,310.76829 C 261.54486,312.83651 259.16546,313.90786 257.83649,312.43801 z M 266.67562,310.90608 C 266.45277,310.31939 266.33621,308.93418 266.41662,307.82783 C 266.53162,306.2453 266.63001,306.00689 266.87791,306.70997 C 267.28945,307.87716 267.79382,307.8384 268.79649,306.56255 C 269.24649,305.98993 270.21966,305.26843 270.95907,304.95919 C 272.49935,304.31503 272.47674,303.71234 270.81553,301.13326 C 269.67742,299.36632 268.22287,298.66135 267.03177,299.29939 C 266.3101,299.68597 266.23835,300.03379 266.37627,302.47699 C 266.46146,303.98593 266.47439,305.2205 266.40502,305.2205 C 266.33564,305.2205 265.83838,304.93161 265.29999,304.57852 C 264.52838,304.07248 263.78885,303.9936 261.80747,304.20598 L 259.29382,304.47542 L 256.81617,300.08448 C 254.54628,296.06173 254.37143,295.58506 254.73092,294.39982 C 254.94675,293.68828 255.22911,292.23045 255.3584,291.1602 C 255.62704,288.93642 256.13655,288.14117 257.29268,288.14117 C 258.60981,288.14117 261.41006,286.26869 262.33634,284.76854 C 262.80965,284.00202 263.34706,283.37485 263.53059,283.37485 C 263.90831,283.37485 264.55188,285.23099 264.94219,287.44608 C 265.23918,289.1316 264.95817,289.31861 263.96784,288.09448 C 263.29233,287.25949 263.28034,287.26741 262.31377,289.18677 C 261.52037,290.76222 260.95532,291.30394 259.26135,292.11312 C 258.11802,292.65925 257.18193,293.25789 257.18116,293.44342 C 257.17954,293.83046 259.84604,298.34053 260.65578,299.32033 C 261.31688,300.12027 263.39986,300.47542 264.6556,300.00228 C 265.5631,299.66036 265.57744,299.5752 265.29907,296.18074 L 265.01436,292.70891 L 265.8434,293.45143 C 266.50771,294.04642 267.02243,294.14143 268.43371,293.9296 C 270.10209,293.67918 270.24273,293.73428 271.10086,294.97444 C 271.5991,295.6945 272.7057,297.0579 273.55997,298.00419 C 274.9846,299.58232 275.08699,299.84534 274.79684,301.18174 C 274.62285,301.9831 274.47179,303.78237 274.46114,305.18014 C 274.44036,307.9081 274.35153,308.02029 271.77509,308.57289 C 271.18143,308.70023 269.947,309.51729 269.03191,310.3886 C 268.11681,311.25991 267.30346,311.9728 267.22445,311.9728 C 267.14545,311.9728 266.89848,311.49277 266.67562,310.90608 z M 84.422662,310.88051 C 84.321672,310.71667 84.047432,309.54453 83.813232,308.27577 C 83.579032,307.00701 83.283442,305.80053 83.156362,305.59471 C 82.814012,305.04028 81.604942,305.13878 79.779632,305.8698 C 78.845192,306.24403 78.014742,306.37023 77.819342,306.1677 C 77.632872,305.97443 77.421312,304.83874 77.349212,303.64395 C 77.220402,301.50939 77.242282,301.45965 78.607022,300.78337 C 80.678332,299.75699 81.271192,299.8926 82.376892,301.64576 C 82.928012,302.51959 83.555612,303.23454 83.771572,303.23454 C 84.103432,303.23454 87.429072,299.06742 90.809492,294.41584 C 91.935132,292.86691 91.954192,291.18731 90.857722,290.16486 C 89.958552,289.32638 90.078052,288.14117 91.061762,288.14117 C 91.377902,288.14117 92.449712,287.79229 93.443562,287.36589 C 95.474652,286.49446 95.583582,286.56152 96.316212,289.13416 C 96.565062,290.00799 97.000982,291.28737 97.284922,291.97723 C 97.770932,293.15802 97.727832,293.31514 96.549492,294.65844 C 95.861062,295.44324 94.404982,297.38112 93.313762,298.96485 C 92.222552,300.54858 90.788572,302.61032 90.127152,303.54649 C 88.702902,305.56238 88.667182,305.88807 89.744452,307.03582 L 90.564342,307.90937 L 89.446832,308.69763 C 88.329322,309.4859 85.157032,311.17841 84.797092,311.17841 C 84.692152,311.17841 84.523662,311.04435 84.422662,310.88051 z M 107.39957,307.91248 C 106.36708,306.43702 106.79819,305.0759 108.60261,304.11419 C 110.5177,303.0935 112.89618,305.40297 111.89324,307.30936 C 111.26247,308.5083 110.78,308.78199 109.28451,308.78917 C 108.42029,308.79331 107.82087,308.51452 107.39957,307.91248 z M 67.793452,306.18521 C 67.237492,305.61973 67.492852,304.45566 68.263402,304.04289 C 68.685562,303.81675 69.757002,303.63173 70.644372,303.63173 C 72.090382,303.63173 72.257772,303.73233 72.257772,304.60128 C 72.257772,305.13452 72.094012,305.67212 71.893852,305.79593 C 71.243902,306.19799 68.099512,306.49651 67.793452,306.18521 z M 284.7446,305.5184 C 284.64109,305.24533 284.51276,304.31604 284.45944,303.45333 C 284.37401,302.07124 284.48941,301.83881 285.43005,301.49833 C 287.0255,300.92083 287.73552,301.71517 287.73552,304.07755 L 287.73552,306.01489 L 286.33417,306.01489 C 285.56343,306.01489 284.84812,305.79147 284.7446,305.5184 z M 207.57621,304.68679 C 207.57621,304.35935 209.14818,303.65007 211.6437,302.85152 C 213.88082,302.13565 216.29761,301.30339 217.01435,301.00206 C 217.73108,300.70073 218.53512,300.45418 218.8011,300.45418 C 220.91713,300.45418 237.67654,292.8168 245.67173,288.20906 C 251.23951,285.00026 259.9685,278.15831 266.06501,272.22442 C 272.72546,265.74164 278.62116,259.31872 281.35117,255.57129 C 286.47915,248.53225 292.43973,238.69897 291.90375,238.16251 C 291.78172,238.04036 291.12134,238.64541 290.43626,239.50708 C 287.18267,243.59924 282.10151,247.52351 277.66236,249.37256 C 272.12438,251.67931 263.34316,252.43315 258.37023,251.02872 C 252.08698,249.25423 245.45716,244.36917 241.89491,238.88917 C 236.64082,230.80652 234.62563,223.835 233.82681,210.97765 C 233.45797,205.04111 233.95186,190.81052 234.76045,184.07644 C 235.08833,181.34574 235.35606,178.62628 235.3554,178.03321 C 235.35376,176.57295 236.3302,176.12042 238.53437,176.55987 C 240.37384,176.92662 248.4899,177.92896 254.40195,178.51953 C 261.52765,179.23133 289.57675,178.71568 295.27526,177.76811 C 296.69392,177.53222 299.72966,177.04361 302.02134,176.68233 C 304.31303,176.32104 306.50054,175.86452 306.88249,175.66784 C 307.47482,175.36281 307.57694,174.71714 307.57694,171.27688 C 307.57694,169.05853 307.39449,166.24972 307.17149,165.03506 C 306.9485,163.82039 306.30518,160.2349 305.7419,157.06727 C 303.17322,142.6224 298.62448,128.83574 292.66157,117.42247 C 289.33779,111.06062 284.13754,102.38825 281.661,99.076997 C 278.21409,94.468337 270.62618,86.017467 266.86065,82.593467 C 258.16946,74.690507 246.73464,66.367337 239.6201,62.765637 C 236.60636,61.239947 235.85361,60.541627 237.23913,60.556827 C 238.17091,60.567057 244.43081,63.919707 248.0392,66.341067 C 255.58903,71.407297 256.74085,71.907867 254.8561,69.303647 C 254.23013,68.438717 253.49305,67.187557 253.21816,66.523297 C 252.94326,65.859027 252.56144,65.315537 252.36966,65.315537 C 252.17789,65.315537 252.02098,65.055257 252.02098,64.737147 C 252.02098,64.294667 252.69704,64.131337 254.89798,64.042057 L 257.77499,63.925357 L 257.64572,60.685177 L 257.51646,57.444987 L 260.31537,54.265777 C 261.85476,52.517217 263.60937,50.252387 264.2145,49.232827 L 265.31473,47.379077 L 270.76706,47.253647 L 276.2194,47.128207 L 276.55828,48.575897 C 276.74467,49.372127 277.28527,51.900317 277.75961,54.194117 C 278.23395,56.487907 278.73083,58.775887 278.86379,59.278497 C 279.08274,60.106217 279.00488,60.167057 278.03752,59.924027 C 276.56517,59.554157 274.7148,61.332487 274.37792,63.441167 C 274.16402,64.780067 274.0206,64.948497 273.25764,64.756837 C 271.84284,64.401417 270.68297,66.001917 270.27821,68.868147 C 269.89553,71.577937 269.51539,72.221637 267.76176,73.129317 C 266.3966,73.835917 263.12672,73.688817 259.47176,72.756387 C 258.22243,72.437657 257.29582,72.331667 257.41262,72.520837 C 257.52943,72.709997 259.62304,74.540557 262.0651,76.588717 C 269.73748,83.023597 275.12123,88.770537 283.16709,99.114257 C 290.05543,107.96989 297.92772,123.01535 301.95575,135.02302 C 303.77027,140.43215 304.70692,143.99541 306.18427,151.10937 C 308.82785,163.83916 308.96563,165.02106 308.96244,174.94098 C 308.95526,197.26707 305.58629,212.41538 295.8737,233.79346 C 290.87806,244.78922 283.15355,256.46663 274.77457,265.68976 C 267.29208,273.92609 259.76453,280.33148 248.32927,288.19277 C 239.76321,294.0816 224.07641,301.09213 213.24196,303.87351 C 207.17561,305.43084 207.57621,305.37334 207.57621,304.68679 z M 267.7949,248.82443 C 269.68127,248.81836 269.86135,248.43477 268.68221,246.93435 C 267.35162,245.24121 268.19621,245.383 270.0008,247.1557 C 271.6613,248.78685 272.358,249.06096 273.61566,248.57791 C 274.58302,248.20636 274.36232,247.7167 273.10271,247.43978 C 270.77407,246.92785 269.68214,244.67371 270.44966,241.96293 C 270.88143,240.43799 270.02336,240.85687 268.48935,242.91986 C 267.83459,243.80042 266.62922,245.25584 265.81076,246.15416 C 264.08776,248.04527 263.80119,249.44872 265.21552,249.06935 C 265.70659,248.93763 266.86732,248.82741 267.7949,248.82443 z M 263.14832,248.30988 C 263.48458,248.04376 264.27899,247.11107 264.91368,246.23725 C 265.54836,245.36342 266.3633,244.38037 266.72465,244.05268 C 267.08599,243.725 268.42034,242.02699 269.68985,240.27934 C 270.95937,238.53169 273.00693,235.94001 274.23999,234.52003 C 275.47305,233.10006 277.30181,230.77649 278.30391,229.35652 C 280.07428,226.84792 284.5609,222.11112 284.5609,222.75063 C 284.5609,223.15842 281.45205,227.22645 278.60195,230.5481 C 275.68503,233.94763 274.53877,235.6232 274.81928,236.0775 C 274.94537,236.28172 274.69298,236.56177 274.2584,236.69982 C 273.48622,236.94513 271.06874,239.5704 271.06874,240.16364 C 271.06874,240.32815 271.84222,240.35663 272.78759,240.22693 C 274.95853,239.92909 276.72086,240.77933 277.41642,242.46012 C 277.8441,243.49358 277.82246,243.94279 277.27817,245.32968 C 276.92326,246.23404 276.67559,247.0108 276.72781,247.05581 C 276.78002,247.10081 277.22055,246.98697 277.70676,246.80282 C 278.19296,246.61867 279.08583,245.5715 279.6909,244.47579 C 280.69545,242.65667 281.62508,241.77615 282.07046,242.22194 C 282.16604,242.3176 282.04491,242.76866 281.80129,243.22428 C 281.45736,243.8675 281.47422,244.05268 281.87669,244.05268 C 282.62587,244.05268 284.10931,242.4853 284.88407,240.87513 C 285.27666,240.0592 286.12669,239.19913 286.94187,238.79303 C 288.56882,237.98251 289.35347,237.04807 289.05683,236.27432 C 288.9283,235.93906 289.22378,235.57864 289.81006,235.35553 C 290.90323,234.93952 292.85001,230.94529 291.95959,230.94529 C 291.68796,230.94529 291.23102,231.16872 290.94418,231.44179 C 290.61064,231.75931 290.65597,231.4754 291.06995,230.65412 C 291.42596,229.94783 292.23407,229.10246 292.86574,228.7755 C 293.79053,228.29683 294.21435,227.57962 295.04158,225.09339 C 296.19342,221.63153 296.29252,220.78063 295.57288,220.53158 C 295.30006,220.43715 292.48754,220.59401 289.32284,220.88013 C 281.88233,221.55284 255.49712,221.95477 246.14247,221.53791 C 242.1454,221.35978 238.50689,221.35064 238.05689,221.51759 C 237.3441,221.78202 237.27298,222.03568 237.50479,223.4867 C 238.22229,227.97781 242.25457,236.53223 243.7939,236.82895 C 244.84018,237.03063 244.63071,235.82795 243.48917,235.07929 C 242.94353,234.72145 242.4971,234.27049 242.4971,234.07716 C 242.4971,233.51146 243.54675,233.673 244.08441,234.32144 C 244.94684,235.36155 245.99044,234.97197 247.4432,233.06759 C 248.21926,232.05029 248.77975,231.14342 248.68874,231.05234 C 248.59774,230.96125 247.94264,231.18725 247.23297,231.55457 C 246.11542,232.13301 245.73473,232.15375 244.3897,231.70944 C 242.46603,231.07399 241.70344,230.0314 241.70344,228.03684 C 241.70344,226.81492 241.9822,226.2177 243.05266,225.14627 C 244.90139,223.29583 246.45743,223.31121 248.34301,225.19853 C 249.63966,226.49637 249.72644,226.73276 249.50363,228.35984 C 249.21167,230.49189 249.70425,230.44346 251.38507,228.17485 C 252.81056,226.25087 255.51125,223.58215 255.77035,223.84149 C 255.96122,224.03253 253.75223,227.41748 252.68969,228.56213 C 251.86874,229.44651 247.65776,234.44238 245.90826,236.60753 L 244.38199,238.49643 L 245.29031,239.78508 C 246.53659,241.55319 250.38388,244.92116 250.98588,244.77106 C 251.85517,244.55429 259.03018,236.26217 264.97247,228.60681 C 267.28316,225.62999 269.87825,223.02494 269.87825,223.68222 C 269.87825,224.2294 268.27677,226.26544 259.85495,236.42528 C 256.1795,240.85925 253.07368,244.74429 252.95313,245.05872 C 252.81602,245.41638 253.08945,245.76569 253.68347,245.99175 C 254.2057,246.19048 254.87072,246.63982 255.1613,246.99025 C 255.90006,247.88123 256.96,247.83742 256.56274,246.93234 C 256.39494,246.55003 256.17894,245.57156 256.08274,244.75797 C 255.93591,243.51609 256.10054,243.08581 257.10851,242.0769 C 258.84316,240.34066 260.65905,240.41143 262.29741,242.27914 C 263.90246,244.10886 263.91492,245.59126 262.33851,247.16912 C 261.68375,247.82449 261.14803,248.46383 261.14803,248.58985 C 261.14803,248.999 262.52026,248.80693 263.14832,248.30988 z M 248.14945,240.70335 C 247.00496,239.51658 246.06856,238.44416 246.06856,238.32018 C 246.06856,237.30445 248.83919,239.55559 250.80189,242.16601 C 251.23708,242.74483 251.23299,242.8611 250.77742,242.8611 C 250.47653,242.8611 249.29394,241.89011 248.14945,240.70335 z M 263.1659,240.22343 C 261.67534,238.5285 261.03554,237.33564 261.90575,237.87394 C 262.64958,238.33409 265.57072,242.06671 265.18699,242.06671 C 264.96696,242.06671 264.05747,241.23723 263.1659,240.22343 z M 277.91919,240.18005 C 275.61398,237.38647 275.46781,236.91513 277.44244,238.64276 C 279.38267,240.34028 280.19579,241.25657 280.19579,241.74544 C 280.19579,242.50617 279.37026,241.93853 277.91919,240.18005 z M 250.57814,239.219 C 248.66786,238.29317 248.29977,235.23116 249.8737,233.35893 C 251.472,231.4577 254.0618,231.8256 256.35181,234.27917 L 257.3096,235.30537 L 256.55022,236.72686 C 255.3044,239.05896 254.52243,239.68631 252.89838,239.65667 C 252.08843,239.64189 251.04432,239.44493 250.57814,239.219 z M 254.71048,238.27085 C 256.67616,236.89277 255.1224,232.93126 252.61622,232.93126 C 251.47739,232.93126 249.64001,234.52615 249.64001,235.51469 C 249.64001,236.39665 250.7098,238.37832 251.31818,238.62332 C 252.33226,239.03171 253.85016,238.87399 254.71048,238.27085 z M 266.06399,239.27432 C 265.60305,239.09889 264.84412,238.46951 264.37747,237.87571 C 262.04166,234.90347 265.14706,230.50457 268.56549,231.94324 C 270.91978,232.93405 271.85335,235.87714 270.37429,237.64544 C 269.4114,238.79663 267.10194,239.6694 266.06399,239.27432 z M 269.0846,237.30039 C 271.05104,235.33214 269.00944,231.97828 266.44006,232.95605 C 265.07963,233.47377 264.73341,233.98381 264.72556,235.48174 C 264.71311,237.85878 267.40476,238.98177 269.0846,237.30039 z M 279.79277,238.54938 C 277.4813,237.31736 276.96828,233.7634 278.89117,232.30351 C 280.22064,231.29415 280.70665,231.68795 279.66324,232.92912 C 278.26335,234.59433 278.03354,235.57897 278.779,236.71774 C 279.62412,238.00874 281.01641,238.30661 282.53402,237.52111 C 283.39243,237.07679 283.76724,236.59398 283.76724,235.9325 C 283.76724,234.64099 284.17086,233.68297 284.60248,233.94996 C 285.71464,234.63796 284.43659,238.0592 282.78626,238.81184 C 281.44797,239.42216 281.42678,239.42031 279.79277,238.54938 z M 256.02908,231.78463 C 254.69765,230.28146 253.60829,228.94147 253.60829,228.80686 C 253.60829,228.07175 254.6927,228.8151 256.51452,230.79908 C 258.92891,233.42833 259.29948,233.99207 258.81179,234.29377 C 258.61273,234.4169 257.36051,233.2878 256.02908,231.78463 z M 270.32129,231.30391 C 269.14631,229.99991 268.31264,228.8052 268.46871,228.649 C 268.62477,228.49279 269.13688,228.90087 269.60674,229.55584 C 270.0766,230.2108 271.0442,231.35501 271.75696,232.0985 C 272.46971,232.842 273.05288,233.51226 273.05288,233.58798 C 273.05288,234.09519 272.17492,233.36106 270.32129,231.30391 z M 284.16363,230.8974 C 282.48727,229.16844 282.08694,228.27179 283.27565,228.90856 C 284.13262,229.36762 285.09981,230.45106 285.71435,231.64038 C 286.39172,232.95129 285.94968,232.73949 284.16363,230.8974 z M 257.86744,230.15273 C 256.74072,229.26564 256.13172,227.20969 256.5784,225.80102 C 256.72564,225.3367 257.54425,224.49437 258.39756,223.92916 C 259.79748,223.00188 260.06702,222.95043 261.15721,223.40242 C 262.56754,223.98713 263.92583,225.57046 263.92583,226.62973 C 263.92583,227.73873 263.29149,227.52285 262.75732,226.23206 C 261.76741,223.84001 258.8612,223.6137 257.61736,225.83181 C 257.1402,226.6827 257.1252,227.0742 257.53204,228.05732 C 258.30078,229.91492 259.5869,230.41713 261.57427,229.63576 L 263.20578,228.99429 L 262.62748,229.87049 C 261.80619,231.11486 259.27972,231.26465 257.86744,230.15273 z M 273.25129,230.46341 C 270.76515,229.58803 269.71299,227.75459 270.40384,225.50152 C 270.99367,223.5779 272.70723,222.72178 274.62011,223.39498 C 278.14448,224.63532 278.95161,227.4808 276.41211,229.71257 C 274.86513,231.07208 274.93372,231.05578 273.25129,230.46341 z M 276.04713,228.77878 C 277.23707,227.58774 277.27878,226.61391 276.1987,225.23955 C 274.57712,223.17613 271.06874,224.18275 271.06874,226.71143 C 271.06874,229.41552 274.13771,230.68996 276.04713,228.77878 z M 286.74345,230.5481 C 286.60436,230.32283 286.93775,230.1509 287.51369,230.1509 C 289.6038,230.1509 291.11628,227.3578 289.9724,225.61041 C 289.07305,224.23656 287.93893,224.00148 286.43498,224.87719 C 284.92263,225.75777 284.52784,227.64768 285.53488,229.18603 C 285.88228,229.71671 286.00436,230.1509 285.80617,230.1509 C 284.50093,230.1509 283.68252,226.25084 284.70507,224.9037 C 286.04858,223.1337 289.4095,223.24701 290.71051,225.10616 C 291.33179,225.99399 291.50846,228.45281 291.00328,229.18094 C 290.03089,230.5825 287.3049,231.45738 286.74345,230.5481 z M 239.7193,225.43585 C 239.7193,224.75412 241.6158,222.78272 241.95028,223.11677 C 242.37208,223.53803 241.12481,225.55002 240.3417,225.7116 C 239.99938,225.78223 239.7193,225.65815 239.7193,225.43585 z M 250.23305,224.98495 C 249.8368,224.5467 249.62946,224.07117 249.77228,223.92821 C 250.06166,223.63856 251.62415,224.9193 251.62415,225.44614 C 251.62415,226.02599 250.98175,225.81302 250.23305,224.98495 z M 291.52788,224.21649 C 290.89257,223.55276 290.49909,222.88326 290.65349,222.72873 C 291.03502,222.34683 293.02786,224.38772 292.83599,224.96386 C 292.74837,225.22697 292.18941,224.90762 291.52788,224.21649 z M 278.40786,224.19057 C 278.01161,223.75231 277.80427,223.27678 277.94709,223.13381 C 278.23647,222.84417 279.79896,224.12491 279.79896,224.65175 C 279.79896,225.2316 279.15656,225.01863 278.40786,224.19057 z M 261.45656,246.61192 C 262.47664,245.89676 262.70074,243.25927 261.80466,242.5149 C 260.69529,241.59336 258.99993,241.57044 257.86793,242.46169 C 254.97906,244.73618 258.43355,248.73127 261.45656,246.61192 z M 276.04465,245.62853 C 277.46617,244.44769 276.03627,241.27233 274.083,241.27233 C 272.7124,241.27233 271.06874,242.73295 271.06874,243.95093 C 271.06874,245.62856 272.19542,246.549 273.95911,246.31223 C 274.78734,246.20103 275.72583,245.89337 276.04465,245.62853 z M 247.47549,229.97036 C 248.53809,228.90679 248.70134,227.79716 247.99329,226.45075 C 247.37448,225.27402 246.88597,225.00061 245.38957,224.99347 C 242.6863,224.98056 241.43294,228.46103 243.54269,230.12207 C 244.92971,231.21411 246.28513,231.16182 247.47549,229.97036 z M 287.73552,219.83948 C 293.23877,219.35859 294.48411,219.15251 294.47634,218.72402 C 294.47344,218.56434 293.57601,217.45064 292.48204,216.24912 C 290.21792,213.76242 287.81822,209.26518 287.50144,206.91508 C 287.38365,206.04125 287.21448,204.95732 287.1255,204.50635 C 286.96471,203.69137 286.84172,203.68618 266.81376,203.64895 C 255.73128,203.62834 244.16378,203.55048 241.1082,203.47591 L 235.55261,203.34034 L 235.43585,206.71035 C 235.30397,210.51671 236.34679,218.584 237.0642,219.30733 C 237.3241,219.56937 239.59033,219.95722 242.10027,220.16923 C 247.86944,220.65652 281.13632,220.41615 287.73552,219.83948 z M 301.54659,215.15685 C 303.4204,209.14659 303.85554,207.37958 305.14121,200.55998 C 306.40418,193.86078 307.90799,180.30347 307.44006,179.83511 C 306.101,178.49481 297.07165,186.65392 293.95519,192.02031 C 289.3913,199.87911 288.87533,206.70484 292.36063,213.1144 C 293.85508,215.86272 297.63508,218.99085 299.49376,219.0174 C 300.21873,219.02776 300.51127,218.47761 301.54659,215.15685 z M 285.85059,201.77936 C 286.93291,201.29406 286.70556,200.7441 284.31278,198.05929 C 283.08699,196.6839 282.18411,195.45848 282.30637,195.3361 C 282.42863,195.21373 282.99681,195.6241 283.569,196.24802 C 284.14119,196.87195 285.17463,197.97749 285.86553,198.70479 L 287.12171,200.02715 L 287.82545,199.15728 C 288.77613,197.98216 288.71101,197.58103 287.56957,197.58103 C 286.44186,197.58103 285.35455,197.21165 285.35455,196.82854 C 285.35455,196.67988 286.0899,196.52889 286.98866,196.49302 C 289.04192,196.41106 290.11649,195.47727 290.11649,193.77495 C 290.11649,192.84385 289.81991,192.24166 289.07091,191.65195 C 287.71121,190.58142 287.09981,190.61387 285.49122,191.84193 C 284.57441,192.54185 284.16407,192.68369 284.16407,192.30068 C 284.16407,191.53119 285.34098,190.54639 286.65195,190.2189 C 287.78591,189.93562 290.11649,190.64546 290.11649,191.27412 C 290.11649,191.46606 290.38435,191.62312 290.71174,191.62312 C 291.55542,191.62312 291.46811,191.34527 290.06866,189.5767 C 288.48407,187.57414 288.91119,187.09599 290.71845,188.84928 C 291.78483,189.88381 292.21001,190.08375 292.57235,189.72108 C 292.93468,189.35841 292.84349,189.03844 292.17475,188.32594 C 290.95334,187.02461 291.09351,186.75686 292.65444,187.40965 C 293.96404,187.95735 294.03652,187.93744 295.23382,186.70099 C 296.72485,185.16122 296.78783,184.30599 295.47368,183.44413 C 293.59209,182.21013 294.52763,181.60154 296.62399,182.69582 C 297.9164,183.37043 298.38625,183.2589 297.46741,182.49563 C 296.78901,181.93209 296.65224,180.89889 297.25604,180.89889 C 297.47245,180.89889 297.87255,181.25636 298.14515,181.69327 C 298.80679,182.75371 298.95044,182.7221 301.23799,181.01271 C 303.44913,179.36042 303.7451,178.70461 302.12055,179.0571 C 301.52035,179.18734 297.5471,179.65915 293.29112,180.10558 C 289.03514,180.55201 285.303,181.00717 284.99749,181.11704 C 284.56294,181.27333 284.62773,181.51468 285.29511,182.22573 C 286.39925,183.40212 286.44959,184.26583 285.38064,183.69322 C 284.95848,183.46708 284.54725,183.28206 284.46679,183.28206 C 284.38633,183.28206 284.32995,184.2806 284.34149,185.50105 C 284.35915,187.36798 284.21385,187.84061 283.42566,188.48 C 282.33168,189.36743 279.5629,189.48772 278.51771,188.69322 C 276.62975,187.25809 276.33347,184.35903 277.89795,182.62887 C 278.32156,182.16038 278.5208,181.69054 278.3407,181.58476 C 278.16059,181.47899 276.67394,181.45243 275.03702,181.52574 C 267.59942,181.85886 254.71249,181.38402 248.64794,180.55342 C 247.12015,180.34417 243.97325,180.0484 241.65482,179.89615 C 238.3003,179.67585 237.37129,179.72969 237.1055,180.15981 C 236.92179,180.45708 236.69916,182.35361 236.61075,184.37433 L 236.45001,188.04838 L 237.45897,188.04838 C 238.78345,188.04838 240.90979,186.23719 240.90979,185.10902 C 240.90979,184.08841 239.7132,182.66532 238.54224,182.29334 C 237.34525,181.91308 237.56463,181.29609 238.89684,181.29609 C 240.15309,181.29609 241.53548,182.67252 241.9535,184.33957 C 242.58796,186.86978 240.61561,189.23996 237.87563,189.23996 C 235.93277,189.23996 235.55644,189.97187 236.98452,190.97306 C 237.84095,191.57348 237.711,192.41751 236.76213,192.41751 C 236.20898,192.41751 235.75102,193.25496 235.75102,194.26649 C 235.75102,195.28427 236.79106,194.67671 238.38491,192.72786 C 246.38677,182.94371 247.65587,181.52259 247.65587,182.3463 C 247.65587,183.20921 244.32437,187.51928 237.51368,195.46758 C 235.64813,197.64473 235.27883,199.16601 236.28238,200.53971 C 236.74945,201.17905 237.74117,201.30776 244.47829,201.60339 C 248.69379,201.78838 252.24935,202.04815 252.37953,202.18066 C 252.72639,202.53375 285.03198,202.14641 285.85059,201.77936 z M 277.41799,200.56913 C 277.41799,199.67921 279.33038,198.61313 280.84947,198.65623 C 282.29964,198.69738 284.69713,199.98493 283.84991,200.2676 C 283.57691,200.35868 282.79021,200.23664 282.1017,199.99641 C 281.05737,199.63202 280.59627,199.6919 279.32012,200.35769 C 277.491,201.31195 277.41799,201.32007 277.41799,200.56913 z M 261.14803,200.18623 C 261.14803,199.87144 261.3266,199.50341 261.54486,199.36839 C 262.52854,198.75988 261.88429,198.1613 260.39833,198.30314 C 258.49895,198.48444 257.3712,197.91432 256.36634,196.2648 C 255.28842,194.49535 255.36617,192.60786 256.56647,191.40647 C 257.44111,190.53101 258.76706,190.0787 258.76706,190.65578 C 258.76706,190.77911 258.23134,191.33121 257.57658,191.88267 C 256.07277,193.14919 255.94189,195.14162 257.27895,196.41337 C 259.19099,198.23201 260.80048,198.17035 261.98061,196.23324 C 262.99765,194.56384 262.92847,193.50258 261.708,192.05079 C 260.64256,190.78342 260.64476,190.66036 261.72549,191.07547 C 262.69018,191.44599 263.529,193.36507 263.529,195.20158 C 263.529,196.14754 263.68977,196.73407 263.91147,196.59692 C 264.12182,196.46679 266.89911,193.23898 270.08321,189.424 C 273.26732,185.60902 276.05024,182.48767 276.26748,182.48767 C 276.74764,182.48767 274.67953,185.55401 273.45527,186.65726 C 272.67586,187.35964 271.46557,189.26585 271.46557,189.79105 C 271.46557,189.89739 272.06293,189.88737 272.79304,189.76878 C 275.30069,189.36147 277.97076,191.57672 277.90172,194.00723 C 277.86056,195.45619 276.45365,197.39089 275.00409,197.99187 C 274.17041,198.33752 273.55279,198.33999 272.52896,198.00178 C 270.63574,197.37639 269.8186,196.32829 269.5813,194.221 C 269.35762,192.23471 269.13081,192.06354 268.15403,193.14387 C 267.09303,194.31735 267.36956,195.10137 269.67984,197.46983 C 270.88024,198.70045 271.86239,199.85449 271.86239,200.03436 C 271.86239,200.78948 271.15472,200.2191 269.30781,197.97537 C 268.23018,196.6662 267.05685,195.59505 266.70043,195.59505 C 266.344,195.59505 265.12224,196.75685 263.9854,198.17682 C 261.93849,200.73349 261.14803,201.29329 261.14803,200.18623 z M 274.81941,197.01886 C 277.09163,196.06859 277.70285,193.78926 276.1987,191.87528 C 274.96594,190.30663 272.97681,190.42823 271.22747,192.17919 C 270.4854,192.92194 269.87825,193.8335 269.87825,194.20487 C 269.87825,194.9577 272.32406,197.58103 273.02594,197.58103 C 273.27303,197.58103 274.08009,197.32806 274.81941,197.01886 z M 268.00722,200.13493 C 267.08167,199.72949 266.44818,199.68386 265.69963,199.96873 C 264.15512,200.55649 263.66896,200.44826 264.43037,199.68615 C 265.40585,198.70978 267.71615,198.81514 268.78477,199.88475 C 269.78293,200.88382 269.74484,200.89608 268.00722,200.13493 z M 274.64019,200.50882 C 274.64019,200.37146 275.22055,199.58397 275.92988,198.75885 C 276.63921,197.93373 277.88169,196.48217 278.69094,195.53317 C 279.50019,194.58415 280.73792,193.1821 281.44146,192.41751 C 282.145,191.65291 284.18323,189.15058 285.97086,186.85679 C 289.39939,182.45749 290.76491,181.01831 291.14737,181.40113 C 291.51516,181.76925 290.93834,182.56131 287.27072,186.72433 C 285.37816,188.87252 283.05672,191.6478 282.11195,192.89162 C 277.9338,198.39228 274.64019,201.75 274.64019,200.50882 z M 247.25904,199.87271 C 247.25904,199.53622 248.75073,197.58709 250.57391,195.54131 C 252.39709,193.49553 254.01628,191.41956 254.17211,190.92803 C 254.32794,190.43651 254.60613,190.03435 254.79032,190.03435 C 254.97451,190.03435 256.57987,188.33213 258.35779,186.25164 C 260.1357,184.17114 261.75918,182.57336 261.96551,182.701 C 262.55767,183.06731 261.93176,183.92174 257.31337,189.05163 C 254.9482,191.67876 252.0951,194.98539 250.97316,196.39971 C 248.36601,199.68629 247.25904,200.72139 247.25904,199.87271 z M 250.23525,199.73571 C 251.50812,198.77278 252.63933,198.66147 253.99926,199.36536 C 255.57993,200.18351 255.36345,200.51708 253.64171,199.91633 C 252.68857,199.58376 252.10246,199.58329 251.37613,199.91454 C 249.98015,200.55117 249.29854,200.44433 250.23525,199.73571 z M 255.57913,198.35952 C 253.77217,196.19931 253.71777,195.18754 255.5005,196.89707 C 256.80943,198.15226 258.17117,200.36138 257.63596,200.36138 C 257.42569,200.36138 256.50012,199.46054 255.57913,198.35952 z M 239.54425,199.35576 C 239.12059,199.03503 238.35111,198.77261 237.83431,198.77261 C 237.30893,198.77261 237.00279,198.59749 237.13992,198.37541 C 237.71939,197.43695 240.58917,198.15782 241.04906,199.35736 C 241.34297,200.12398 240.55788,200.12315 239.54425,199.35576 z M 241.73517,197.97018 C 239.58254,195.41494 239.82958,194.49213 242.05251,196.78482 C 244.10655,198.90331 244.74372,199.96418 243.96208,199.96418 C 243.66118,199.96418 242.65907,199.06689 241.73517,197.97018 z M 243.05652,196.52002 C 242.38483,195.89695 242.10499,195.39489 242.37853,195.30361 C 242.63472,195.21815 243.21263,195.51686 243.66278,195.96743 C 245.07648,197.38243 247.30889,196.76557 248.00472,194.76767 C 248.37564,193.70268 248.33034,193.2788 247.7364,192.25685 C 246.74993,190.55952 245.16379,190.40612 243.64632,191.86129 C 242.31225,193.14059 241.70258,192.88559 242.64678,191.44322 C 243.42094,190.26062 244.7589,189.84905 246.66542,190.20704 C 249.09595,190.66344 250.06998,194.11164 248.4225,196.42743 C 247.28341,198.02861 244.73032,198.07267 243.05652,196.52002 z M 284.16407,195.57161 C 284.16407,195.34027 284.34264,195.26145 284.5609,195.39646 C 284.77915,195.53147 284.95773,195.72076 284.95773,195.8171 C 284.95773,195.91344 284.77915,195.99225 284.5609,195.99225 C 284.34264,195.99225 284.16407,195.80296 284.16407,195.57161 z M 263.22898,190.65105 C 260.20924,186.95885 260.25288,186.18911 263.29773,189.43856 C 265.65314,191.95223 266.43265,193.22122 265.61235,193.20659 C 265.44866,193.20366 264.37614,192.05368 263.22898,190.65105 z M 276.87342,189.60967 C 274.56224,187.03671 274.3954,185.97437 276.53847,187.47681 C 277.3701,188.05985 279.17018,191.19329 278.85483,191.50893 C 278.77508,191.58877 277.88344,190.73409 276.87342,189.60967 z M 247.73849,189.12562 C 246.14562,187.50111 245.63789,186.4596 246.43882,186.4596 C 246.7802,186.4596 249.14482,189.18378 249.8003,190.33224 C 250.39663,191.37704 249.33939,190.75833 247.73849,189.12562 z M 265.21552,189.40502 C 264.50619,189.09452 263.92583,188.65216 263.92583,188.42197 C 263.92583,188.18805 264.42861,188.30074 265.06577,188.67747 C 266.39408,189.46284 267.91204,189.22201 269.09469,188.03827 C 270.04782,187.08426 270.16333,184.41052 269.28301,183.67925 C 268.95563,183.40729 268.693,182.98325 268.6994,182.73692 C 268.71693,182.06192 271.06874,184.79029 271.06874,185.48564 C 271.06874,187.0144 269.86197,188.8901 268.51638,189.45285 C 266.88411,190.13548 266.88431,190.13549 265.21552,189.40502 z M 252.02098,189.44876 C 252.02098,189.34513 252.57077,188.97579 253.24273,188.62798 C 255.74076,187.33501 256.06026,183.84032 253.77569,182.79844 C 252.9042,182.40101 252.50427,182.44982 251.29547,183.10122 C 249.16775,184.2478 248.83741,185.6082 250.18995,187.65392 C 251.02909,188.92311 251.1106,189.20538 250.55146,188.90586 C 247.57363,187.31071 247.63055,183.51874 250.65128,182.25544 C 252.67133,181.41063 254.01895,181.55792 255.2731,182.76058 C 257.52577,184.92075 256.08757,189.63715 253.17619,189.63715 C 252.54082,189.63715 252.02098,189.55237 252.02098,189.44876 z M 262.95588,186.74979 C 262.58653,185.44105 263.31072,183.42693 264.35099,182.86968 C 265.56148,182.22125 265.6931,182.44333 264.71558,183.48481 C 264.19446,184.04002 263.66591,185.22829 263.523,186.16587 C 263.27789,187.7739 263.25233,187.80021 262.95588,186.74979 z M 257.58765,183.494 C 256.83686,182.58853 257.28159,181.85196 258.09033,182.66144 C 258.82077,183.39256 258.97954,184.07644 258.41882,184.07644 C 258.22729,184.07644 257.85326,183.81435 257.58765,183.494 z M 272.45764,183.28206 C 272.32275,183.0636 272.40149,182.88486 272.63263,182.88486 C 272.86377,182.88486 273.05288,183.0636 273.05288,183.28206 C 273.05288,183.50051 272.97413,183.67925 272.87788,183.67925 C 272.78164,183.67925 272.59253,183.50051 272.45764,183.28206 z M 242.98602,182.48767 C 242.58823,181.85012 242.58971,181.69327 242.99352,181.69327 C 243.27026,181.69327 243.71972,182.05075 243.99232,182.48767 C 244.39011,183.12522 244.38863,183.28206 243.98482,183.28206 C 243.70809,183.28206 243.25863,182.92458 242.98602,182.48767 z M 282.56666,187.66128 C 283.76666,186.46018 283.99289,184.98434 283.12426,184.02365 C 281.37759,182.09181 279.42826,182.10564 278.42009,184.05703 C 277.75499,185.34437 277.93315,186.21702 279.13361,187.55188 C 280.12529,188.6546 281.52955,188.69935 282.56666,187.66128 z M 284.16407,182.09047 C 284.16407,181.45723 283.90246,181.29788 282.87438,181.30492 L 281.58469,181.31375 L 282.57676,182.09047 C 283.83894,183.07867 284.16407,183.07867 284.16407,182.09047 z M 263.85053,71.927667 C 266.0385,70.712417 267.0047,67.283987 265.68905,65.403917 C 265.17106,64.663687 264.69851,64.521147 262.76245,64.521147 C 261.49257,64.521147 259.89554,64.632857 259.21349,64.769397 C 258.1543,64.981427 257.9734,65.191977 257.9734,66.212797 C 257.9734,68.248457 258.85485,70.482377 260.05785,71.495567 C 261.33132,72.568107 262.46494,72.697267 263.85053,71.927667 z M 268.58551,61.096527 C 269.74585,59.868347 271.15385,58.080177 271.71439,57.122807 C 272.61917,55.577477 272.70292,55.117847 272.46054,53.027587 C 272.31038,51.732597 271.94037,50.348177 271.63829,49.951127 C 271.12906,49.281767 270.86435,49.463177 268.00348,52.442007 C 263.36196,57.274927 262.62669,58.417327 262.84955,60.449697 C 263.08388,62.586647 263.70297,63.329567 265.2494,63.329567 C 266.22444,63.329567 266.90818,62.871897 268.58551,61.096527 z M 142.49637,304.34889 C 132.66838,301.46416 117.40524,294.87419 110.89001,290.70261 C 109.73632,289.96392 107.84893,288.88159 106.69583,288.29745 C 105.54273,287.7133 102.91931,285.96459 100.86602,284.41142 C 98.812742,282.85825 95.979672,280.72025 94.570332,279.66031 C 91.264652,277.17416 80.534352,266.67773 77.074862,262.54617 C 71.984012,256.4663 66.384552,248.25916 62.357172,240.97443 L 59.886782,236.50601 L 58.280672,236.50601 C 57.397302,236.50601 55.546762,236.298 54.168352,236.04379 C 51.075352,235.47336 50.521812,235.8176 50.353462,238.41623 L 50.233802,240.26318 L 47.322062,241.38051 C 43.713462,242.76524 41.447552,244.16948 41.111472,245.22936 C 40.970332,245.67447 40.643672,246.04253 40.385552,246.04727 C 39.756702,246.05882 29.836132,243.66014 28.705862,243.22325 C 27.661912,242.81973 27.508812,241.32569 28.372232,239.96747 C 29.117802,238.79463 30.590802,233.39656 30.590802,231.83708 C 30.590802,230.21015 31.230242,229.86742 32.332272,230.90367 C 32.821252,231.36348 33.424642,231.73968 33.673122,231.73968 C 34.804282,231.73968 36.246832,230.67917 36.747682,229.47936 C 37.361372,228.00924 38.342702,227.75125 38.725782,228.95932 C 39.012952,229.86496 40.430732,230.02582 41.351292,229.25722 C 41.678342,228.98415 42.426962,228.00463 43.014892,227.0805 C 44.006192,225.52232 46.494912,223.79264 47.737812,223.79803 C 49.100152,223.80391 51.382782,224.75652 53.005692,225.99646 C 55.070682,227.57415 55.194152,227.61326 55.194152,226.68965 C 55.194152,225.53416 56.158012,226.82092 58.084372,230.5481 C 62.080772,238.28045 67.839262,248.00637 70.381462,251.31758 C 71.422922,252.67407 73.506522,255.48193 75.011682,257.55727 C 82.992362,268.56117 95.917672,280.06565 109.5242,288.27595 C 113.99941,290.97634 125.8661,297.00743 128.32943,297.83347 C 129.37697,298.18475 130.89483,298.80795 131.70247,299.21834 C 132.51012,299.62875 135.31378,300.62451 137.93285,301.43114 C 144.58506,303.4799 145.38004,303.77646 145.42925,304.22752 C 145.48941,304.77892 144.15026,304.83434 142.49637,304.34889 z M 38.783482,240.73966 C 41.152552,239.57286 43.649062,238.39859 44.331272,238.13015 C 45.766522,237.56542 47.162072,234.76624 46.441592,233.89731 C 45.503172,232.76553 44.077852,232.90988 39.810622,234.56883 C 34.173932,236.7602 33.562272,237.22466 32.783922,239.90453 C 32.434192,241.10867 32.254642,242.2665 32.384912,242.47749 C 32.873472,243.26873 34.601152,242.79949 38.783482,240.73966 z M 58.844862,234.36839 C 58.672042,233.40388 57.161882,230.94529 56.742262,230.94529 C 56.061072,230.94529 56.388362,233.22606 57.221722,234.28648 C 58.114532,235.42255 59.042132,235.46936 58.844862,234.36839 z M 54.164672,232.23617 C 53.760132,228.03119 52.615092,226.07966 50.552382,226.07966 C 49.171152,226.07966 47.928422,227.53142 47.054012,230.16646 C 46.257782,232.56588 46.417802,232.83406 49.241722,233.83293 C 51.354052,234.58009 52.296442,234.80885 53.518682,234.87115 C 54.398502,234.916 54.415722,234.84575 54.164672,232.23617 z M 118.9843,303.20272 C 118.53843,302.94279 118.28985,302.31455 118.28985,301.44764 C 118.28985,300.36923 118.57171,299.88223 119.68995,299.02852 C 120.81891,298.16663 121.25966,298.03538 121.96586,298.35079 C 122.7781,298.71355 122.73686,298.76161 121.39773,299.01307 C 119.37277,299.3933 118.79927,301.24857 120.70669,301.24857 C 121.68574,301.24857 122.10993,302.2575 121.46028,303.04099 C 120.89519,303.72252 119.97861,303.78239 118.9843,303.20272 z M 250.69358,302.90536 C 249.92808,302.05871 249.8253,300.0304 250.51303,299.34204 C 251.69572,298.15826 254.00512,299.37411 254.00512,301.18054 C 254.00512,302.13836 252.71289,303.63173 251.88407,303.63173 C 251.59051,303.63173 251.05479,303.30486 250.69358,302.90536 z M 207.49082,301.0307 C 207.14605,300.6856 208.3745,297.42048 209.70242,295.15246 C 211.7533,291.64969 216.7276,285.44692 220.03276,282.2709 L 223.43072,279.00572 L 230.08691,279.01181 C 236.77134,279.01791 238.89757,279.36752 236.92806,280.13668 C 228.15387,283.56328 215.9593,292.01321 209.93785,298.83886 C 208.74195,300.19448 207.64079,301.18081 207.49082,301.0307 z M 141.91219,297.87028 C 136.1318,291.40578 123.3877,282.73992 115.31364,279.78355 C 114.0041,279.30405 112.67119,278.66478 112.3516,278.36294 C 111.68987,277.73796 113.59056,277.6228 122.80451,277.72959 C 128.7472,277.79847 128.39515,277.64393 133.28584,282.33064 C 138.13915,286.98153 141.75416,291.47537 143.39183,294.89347 C 144.84463,297.92572 145.60681,300.85138 144.94396,300.85138 C 144.74257,300.85138 143.37827,299.50988 141.91219,297.87028 z M 70.458532,299.95768 C 70.355662,299.68461 70.405912,298.40315 70.570192,297.10998 C 70.830922,295.05751 71.018652,294.67572 72.047682,294.10518 C 72.696032,293.74571 75.084312,291.43724 77.354972,288.97524 L 81.483452,284.49888 L 81.244062,282.75076 C 81.021952,281.12879 81.076322,280.98464 81.997412,280.75325 C 82.543422,280.61608 83.923602,280.47957 85.064492,280.44988 C 87.134782,280.39601 87.138662,280.39823 87.051712,281.58749 C 87.003802,282.24285 86.944492,283.71749 86.919922,284.86446 C 86.877362,286.85158 86.787952,287.01943 85.022902,288.42619 C 82.430892,290.49201 79.677702,293.1379 77.543782,295.61379 C 75.953212,297.45925 75.777332,297.83968 76.143152,298.64331 C 76.442432,299.30077 76.434712,299.68926 76.116002,300.00826 C 75.489642,300.6352 70.697602,300.59237 70.458532,299.95768 z M 278.25938,294.72916 C 273.02174,287.51361 270.94943,285.58543 268.71226,285.84615 C 267.87155,285.94413 267.68273,285.68735 267.04102,283.57345 C 266.64313,282.26271 266.31515,280.96686 266.31219,280.69379 C 266.3083,280.33577 267.2318,280.19731 269.62343,280.19731 L 272.94007,280.19731 L 274.46086,282.67976 C 276.19426,285.50929 280.95573,291.36903 282.27053,292.2908 C 282.75434,292.62999 283.54412,292.9075 284.02561,292.9075 C 284.50709,292.9075 285.16013,293.16684 285.47681,293.4838 C 286.16826,294.17589 286.73301,296.8617 286.2751,297.28024 C 286.09618,297.44377 284.74999,297.66757 283.28356,297.77756 L 280.61732,297.97756 L 278.25938,294.72916 z M 296.46193,293.49934 C 294.39776,291.3677 293.45129,291.28829 291.91659,293.11798 C 290.40425,294.921 289.48972,294.79759 289.10377,292.73842 C 288.88691,291.5814 289.02135,291.1214 289.8721,290.1094 C 290.82404,288.97704 290.86038,288.8009 290.34498,287.8169 C 290.03792,287.23066 287.65683,284.65083 285.05367,282.08397 L 280.32065,277.41695 L 277.86743,277.41695 C 275.56874,277.41695 275.3886,277.34955 275.00779,276.34701 C 274.78426,275.75854 274.65475,274.73081 274.71999,274.06314 C 274.82875,272.95012 274.98702,272.82875 276.62433,272.60287 C 277.60648,272.46739 278.95933,272.22785 279.63066,272.07056 C 280.68569,271.82339 280.95485,271.93763 281.61481,272.9127 C 282.03475,273.53316 282.46763,274.47486 282.57676,275.00539 C 282.70639,275.63561 283.15046,276.07038 283.85779,276.2596 C 284.45322,276.41889 287.04253,278.53118 289.6118,280.95357 C 292.18106,283.37597 295.17605,285.9412 296.26733,286.65409 L 298.25147,287.95024 L 298.49092,290.72676 C 298.62262,292.25386 298.80119,293.76078 298.88775,294.07549 C 299.20159,295.21653 297.80313,294.8844 296.46193,293.49934 z M 139.79403,288.04188 C 138.68973,286.45807 136.45334,283.64296 134.82427,281.78608 C 133.1952,279.9292 131.94408,278.27588 132.044,278.11204 C 132.14392,277.9482 134.27725,277.81414 136.78473,277.81414 C 141.2481,277.81414 141.36505,277.83707 142.35685,278.90642 C 143.75894,280.41814 144.62943,282.19309 144.18628,282.63666 C 143.9873,282.83582 142.90202,283.10812 141.77455,283.24178 C 139.02412,283.56783 138.5811,284.16206 139.83787,285.83947 C 140.76711,287.07973 142.49637,290.24596 142.49637,290.70711 C 142.49637,291.48469 141.52987,290.53145 139.79403,288.04188 z M 212.73498,286.99498 C 212.73498,286.72284 212.90109,286.18951 213.10412,285.8098 C 213.66323,284.76413 213.02995,284.13325 211.17059,283.88363 C 209.17723,283.61602 208.82749,282.97725 209.68679,281.17362 C 210.77904,278.88105 211.77355,278.50468 215.888,278.82685 C 218.33545,279.01848 219.48106,279.26553 219.48106,279.60169 C 219.48106,279.87311 218.63284,280.97351 217.59613,282.04702 C 216.55941,283.12053 215.04154,284.78432 214.22309,285.74432 C 213.40463,286.70432 212.73498,287.26712 212.73498,286.99498 z M 199.69919,283.08903 C 199.21712,282.18743 199.55535,280.21463 200.34821,279.30361 C 200.83425,278.74514 201.60643,278.60852 204.27713,278.60852 C 208.25517,278.60852 208.60533,278.99207 207.14807,281.75312 L 206.18731,283.57345 L 203.13457,283.68905 C 200.52761,283.78776 200.02596,283.70015 199.69919,283.08903 z M 159.98193,283.0173 C 158.3902,282.80191 158.1137,282.59529 157.09945,280.86332 C 156.48243,279.80967 156.07988,278.78192 156.2049,278.57946 C 156.32992,278.37699 158.19443,278.21134 160.34827,278.21134 C 164.11648,278.21134 164.2957,278.25126 165.09541,279.26885 C 166.19041,280.6622 166.51082,282.05354 165.90497,282.78423 C 165.39614,283.39789 163.38062,283.47719 159.98193,283.0173 z M 169.24512,282.80769 C 168.80017,282.49574 168.19163,281.49902 167.89281,280.59275 C 167.18109,278.43424 167.52381,278.22527 171.78855,278.21742 C 176.01023,278.20964 176.62361,278.52808 176.62361,280.72762 C 176.62361,281.6593 176.40932,282.63607 176.14741,282.89822 C 175.45982,283.58644 170.25862,283.51822 169.24512,282.80769 z M 179.08868,282.87836 C 178.46271,282.12017 178.14536,279.67562 178.58594,279.00572 C 178.89901,278.5297 179.7515,278.43334 182.82667,278.52638 C 184.94355,278.59043 186.84501,278.74765 187.05211,278.87577 C 187.53819,279.17647 187.15782,282.03915 186.5314,282.79464 C 185.90261,283.55298 179.70322,283.62272 179.08868,282.87836 z M 189.06409,282.7668 C 188.76892,281.99689 189.18811,279.84451 189.76988,279.14288 C 190.22924,278.58889 195.76647,278.36515 197.02781,278.84962 C 197.74127,279.12365 197.85683,280.80716 197.2685,282.35601 C 196.89034,283.35157 196.79483,283.37485 193.08935,283.37485 C 190.05065,283.37485 189.25088,283.25404 189.06409,282.7668 z M 147.45301,282.67368 C 146.55271,282.01776 144.83497,278.89477 145.05658,278.31674 C 145.25878,277.78931 145.85821,277.73798 149.12831,277.96806 C 151.23735,278.11644 153.15261,278.39754 153.38445,278.59272 C 154.19478,279.27491 155.29444,281.74787 155.05971,282.36013 C 154.87017,282.85452 154.12807,282.97644 151.33826,282.97158 C 149.42167,282.96824 147.67331,282.83418 147.45301,282.67368 z M 299.1145,279.10714 L 296.00924,278.97123 L 293.16207,276.09162 C 289.0333,271.9158 286.18577,269.87027 284.50148,269.87027 C 282.52532,269.87027 281.825,269.17633 281.69556,267.08991 L 281.58469,265.30255 L 284.03223,265.10394 C 285.37838,264.99471 286.61268,264.77213 286.77511,264.60931 C 286.93754,264.44649 287.05895,263.05822 287.04491,261.52427 C 287.02372,259.20835 287.14301,258.66904 287.7482,258.34486 C 289.19139,257.57178 290.94917,257.91547 292.90621,259.35339 C 293.95339,260.1228 295.36125,260.94461 296.03479,261.17962 C 296.70833,261.41463 297.27479,261.81284 297.29359,262.06455 C 297.31239,262.31625 297.35703,263.14776 297.3928,263.91237 C 297.44651,265.06076 297.59585,265.2818 298.25147,265.1833 C 301.46483,264.70048 303.77639,265.70711 304.84076,268.05276 C 305.24479,268.94316 305.57929,270.27938 305.58408,271.02215 L 305.5928,272.37262 L 304.41476,270.7449 C 302.97787,268.75949 302.14236,268.2815 300.10893,268.2815 C 298.18365,268.2815 297.2594,269.44491 297.2594,271.86837 C 297.2594,274.6956 297.66116,275.03379 301.01982,275.03379 C 302.63617,275.03379 304.06901,274.85505 304.2039,274.63659 C 304.33879,274.41814 304.70647,274.2394 305.02098,274.2394 C 305.43536,274.2394 305.5928,274.73871 305.5928,276.05288 C 305.5928,278.5981 305.06482,279.42131 303.49549,279.32298 C 302.79384,279.27902 300.82239,279.18189 299.1145,279.10714 z M 296.06892,270.04914 C 296.06892,267.33499 295.43776,266.06144 293.05014,263.95784 C 290.73228,261.9157 289.2336,261.76767 288.3423,263.49285 C 287.35364,265.40645 288.17607,266.64024 293.09271,270.61931 C 295.76911,272.78534 296.06892,272.72791 296.06892,270.04914 z M 49.420762,278.17996 C 49.275222,277.94424 49.349762,277.00587 49.586412,276.09469 C 49.823072,275.1835 50.065542,273.99777 50.125252,273.45972 C 50.206242,272.72977 50.535992,272.41877 51.424282,272.23455 C 52.835522,271.94189 59.056452,267.68847 61.427132,265.39533 C 64.159922,262.75194 64.052892,260.20523 61.209012,260.20523 C 59.222362,260.20523 50.031542,266.43051 48.713752,268.66873 C 47.993682,269.89174 47.966042,269.9002 45.539122,269.6415 C 42.203382,269.2859 41.909242,268.95059 42.567622,266.25409 C 43.076812,264.16859 43.133572,264.10505 44.678202,263.89118 C 46.123332,263.69108 47.526252,262.92532 55.457462,258.00752 C 57.577882,256.69274 58.499682,255.16514 58.098712,253.63042 C 57.843662,252.65422 58.961782,252.28002 61.575232,252.46692 C 63.527672,252.60655 63.435002,252.31059 62.886702,256.65506 C 62.585532,259.04145 62.543402,259.00489 66.106932,259.44867 C 68.234832,259.71366 68.484892,259.83999 68.459562,260.63718 C 68.443972,261.12779 68.399322,262.68842 68.360352,264.10524 L 68.289492,266.68128 L 65.809312,267.93213 C 61.760012,269.97434 54.797322,275.09195 54.797322,276.02598 C 54.797322,276.3006 55.065182,276.7478 55.392562,277.01975 C 55.719952,277.29171 55.987812,277.76043 55.987812,278.06137 C 55.987812,278.74523 49.838362,278.85627 49.420762,278.17996 z M 178.07903,276.3731 C 177.96687,276.28734 155.92818,275.85043 138.13126,275.58114 C 128.8554,275.44079 120.94594,275.16048 120.55469,274.95824 C 119.95348,274.64745 119.86131,274.15241 119.95945,271.7612 C 120.06799,269.11665 120.14036,268.91571 121.06765,268.68423 C 121.61329,268.54801 128.39905,268.54124 136.14712,268.66918 C 143.89519,268.79713 162.02033,268.96541 176.42519,269.04316 C 190.83006,269.12089 209.66948,269.29411 218.29058,269.42808 L 233.96529,269.67167 L 234.0813,272.75593 C 234.17659,275.28935 234.08378,275.88381 233.56166,276.08434 C 233.05705,276.27816 178.3274,276.56299 178.07903,276.3731 z M 236.63317,276.28852 C 236.00899,275.89205 235.67656,271.14887 236.20385,270.16273 C 236.55041,269.51457 237.32575,269.46722 245.98713,269.56523 L 255.39402,269.67167 L 255.39402,272.83131 C 255.39402,275.86315 255.35389,276.00213 254.40195,276.26717 C 252.99701,276.65833 237.24517,276.67726 236.63317,276.28852 z M 98.937282,275.09912 C 98.195612,274.62792 98.150032,269.11144 98.883962,268.64634 C 99.677852,268.14326 116.17803,268.18515 117.12545,268.69266 C 117.75406,269.02939 117.89302,269.53748 117.89302,271.49914 C 117.89302,275.6425 118.41,275.4319 108.25598,275.4249 C 103.40747,275.42155 99.214062,275.27495 98.937282,275.09912 z M 309.94612,268.25302 C 309.51715,267.21643 309.5418,266.82185 310.11005,265.62913 C 310.65755,264.47994 310.68705,264.11454 310.27266,263.61478 C 309.61034,262.816 304.32653,258.84501 301.15094,256.75945 C 298.57603,255.06839 297.49458,254.90904 294.57959,255.79121 C 293.787,256.03107 293.56947,255.79919 292.6635,253.74875 C 291.41647,250.92639 291.53309,250.79162 295.85052,250.0655 L 298.8846,249.55521 L 300.37067,250.89903 C 302.63078,252.94278 311.1636,258.53726 313.21901,259.32295 C 314.76825,259.91516 315.1371,260.27656 315.70118,261.75494 C 316.06558,262.70997 317.06105,264.51975 317.91334,265.77668 C 318.78881,267.06778 319.31318,268.21194 319.11867,268.40663 C 318.92416,268.60132 317.87304,268.13067 316.70258,267.32479 C 315.5631,266.54023 314.3905,265.89833 314.0968,265.89833 C 313.80311,265.89833 313.09189,266.70265 312.51631,267.68571 C 311.28734,269.78471 310.63919,269.92778 309.94612,268.25302 z M 185.87487,267.57235 C 185.61581,267.40747 185.06038,266.47184 184.64059,265.49317 C 184.2208,264.5145 183.27204,263.11156 182.53224,262.37554 C 178.28572,258.15072 173.85769,259.50357 170.47277,266.05995 C 169.55215,267.84313 165.90924,267.71412 165.90924,265.89833 C 165.90924,264.72364 164.15944,262.2766 162.52948,261.17185 C 158.92104,258.72611 154.6907,260.1986 152.42626,264.68855 C 151.2955,266.93063 151.12393,267.08991 149.83955,267.08991 C 148.66001,267.08991 148.43064,266.93422 148.23048,265.99763 C 147.63958,263.23275 145.89546,260.97953 143.50486,259.89263 C 139.63118,258.13144 136.95582,259.70804 134.44159,265.23365 C 133.26315,267.82354 132.78578,266.91164 132.66263,261.83532 C 132.51961,255.9397 132.58751,255.8523 137.08535,256.14327 C 142.34178,256.4833 184.127,257.1996 203.52346,257.28217 C 216.53981,257.33758 221.57268,257.4843 221.77757,257.81436 C 222.27047,258.60837 221.8713,267.09043 221.34124,267.08578 C 221.08204,267.0835 220.36967,266.00552 219.75821,264.69026 C 217.70119,260.26561 213.9334,258.71083 210.6612,260.9364 C 209.60746,261.6531 208.80122,262.76684 207.78593,264.90833 C 206.43251,267.76303 206.31926,267.8843 205.00677,267.8843 C 203.75642,267.8843 203.60326,267.75323 203.22932,266.36323 C 202.65039,264.2113 200.94391,262.14573 198.73865,260.92764 C 196.87427,259.89783 196.81662,259.89162 194.93366,260.51761 C 192.678,261.26751 191.34182,262.56464 189.94636,265.35914 C 189.38537,266.48254 188.64367,267.51029 188.29813,267.643 C 187.45438,267.96708 186.44902,267.93776 185.87487,267.57235 z M 223.89054,267.54323 C 223.58757,267.34004 223.32833,266.66339 223.31446,266.03956 C 223.19892,260.84275 223.9499,137.64161 224.10037,137.10829 C 224.20823,136.72599 224.45626,136.4132 224.65155,136.4132 C 225.02192,136.4132 234.27337,142.60114 236.34626,144.23536 C 239.37913,146.62638 242.01977,148.63261 243.29076,149.51146 C 246.68536,151.8587 251.88519,155.8298 252.42338,156.48604 C 252.97093,157.15367 252.94219,157.18281 252.02098,156.89384 C 246.63771,155.2052 238.26151,154.48333 236.01888,155.51476 C 235.40231,155.79833 234.64422,156.52125 234.33424,157.12124 C 232.97132,159.75927 232.87293,163.42797 232.77168,215.38724 C 232.6966,253.92062 232.55575,266.87243 232.20798,267.22101 C 231.63787,267.79246 224.66496,268.06259 223.89054,267.54323 z M 122.70354,266.55272 C 122.37986,266.16235 122.25661,253.32463 122.25262,219.58456 C 122.24605,164.06536 122.26789,164.39514 118.32796,160.33156 C 116.20011,158.13695 114.40768,157.42116 110.83012,157.33741 L 107.7739,157.26586 L 107.37707,162.31471 C 107.15882,165.09157 106.78689,167.55507 106.55057,167.78914 C 105.79581,168.53671 104.81943,167.7604 104.37903,166.06259 C 102.91608,160.42258 101.5995,158.87585 100.84264,161.90801 C 100.33449,163.94384 99.945402,164.71029 99.312952,164.92131 C 98.627072,165.15015 98.738832,164.1341 99.675012,161.62963 L 100.50476,159.40989 L 99.476602,158.45614 C 98.911112,157.93158 98.433092,157.27044 98.414332,156.98694 C 98.395572,156.70344 98.215392,157.0077 98.013942,157.66306 C 97.812482,158.31843 97.760512,160.04986 97.898442,161.51066 C 98.209742,164.80756 97.810762,167.7915 97.058642,167.7915 C 96.757512,167.7915 96.420772,167.64515 96.310322,167.46629 C 96.199882,167.28742 96.055412,158.16741 95.989282,147.1996 C 95.883962,129.73007 95.795272,127.27245 95.273812,127.37374 C 94.946432,127.43732 94.654522,127.75452 94.625132,128.07864 C 94.595752,128.40274 94.551102,128.90267 94.525932,129.18959 C 94.495842,129.53244 94.038112,129.66858 93.190462,129.58678 C 92.116542,129.48314 91.899492,129.29685 91.893122,128.47329 C 91.888132,127.82787 91.628512,127.43474 91.145802,127.3417 C 90.532642,127.2235 90.449352,127.37153 90.658862,128.20707 C 90.797882,128.76145 90.732382,129.3259 90.513332,129.46141 C 89.787602,129.91035 90.100332,130.4553 91.083692,130.4553 C 92.420262,130.4553 92.679572,131.07595 91.645812,131.8007 C 90.923792,132.30689 90.865652,132.50655 91.290932,133.01945 C 91.570662,133.35682 92.291522,133.63285 92.892842,133.63285 C 94.167562,133.63285 94.995722,134.44975 94.645932,135.36212 C 94.412092,135.97207 92.230692,136.8035 90.851952,136.80818 C 90.118702,136.81067 89.718212,137.5981 89.718212,139.03728 C 89.718212,139.70682 90.025742,140.12464 90.710282,140.38514 C 91.255922,140.59278 91.702362,140.97354 91.702362,141.23125 C 91.702362,141.51596 91.998352,141.43173 92.456612,141.01662 C 93.343232,140.21351 94.041372,140.86873 93.278882,141.78834 C 92.894462,142.25195 93.044812,142.63807 94.060712,143.79619 C 95.210592,145.10703 95.270132,145.30333 94.754812,146.08444 C 94.346722,146.70299 93.655932,146.99366 92.252292,147.13743 C 90.424582,147.32464 90.313462,147.40184 90.313462,148.48432 C 90.313462,149.63136 90.543262,149.8506 92.595222,150.66123 C 94.167052,151.28218 94.057352,152.57975 92.396802,153.00816 C 91.492322,153.2415 91.068382,153.60733 90.977442,154.23295 C 90.823912,155.28922 91.536092,156.27288 92.454362,156.27288 C 92.814512,156.27288 93.442132,156.89168 93.849052,157.648 C 94.471382,158.80465 94.513712,159.20483 94.115522,160.16703 C 93.719862,161.12312 93.769832,161.64739 94.419842,163.35966 C 95.182602,165.36893 94.937632,166.2117 94.065132,164.57993 C 93.821522,164.12431 93.525302,163.8485 93.406892,163.96703 C 93.075702,164.29852 95.033302,168.90441 96.626202,171.54148 C 98.066362,173.92569 98.467882,175.52995 97.555572,175.25475 C 97.282752,175.17246 95.452382,171.99273 93.488082,168.18869 C 91.523782,164.38465 89.703022,161.20813 89.441952,161.12976 C 88.966162,160.98693 87.648512,162.84176 85.937032,166.06357 C 85.044032,167.74461 84.565322,168.53946 81.367932,173.65011 C 80.513712,175.01546 79.543062,176.13257 79.210922,176.13257 C 78.339752,176.13257 78.468152,175.17408 79.512792,173.87918 C 80.500772,172.65451 82.575302,169.50169 82.575302,169.22487 C 82.575302,169.13002 83.200312,168.10252 83.964202,166.94154 C 84.728102,165.78056 85.353102,164.69887 85.353102,164.53779 C 85.353102,164.29504 88.723492,158.47093 89.207862,157.8767 C 89.290152,157.77574 89.706502,157.91131 90.133092,158.17795 C 91.083432,158.772 91.217662,158.03923 90.370842,156.88006 C 89.515132,155.70873 88.772902,156.36616 86.949922,159.91013 C 86.012442,161.73263 84.974112,163.53656 84.642512,163.91886 C 83.222802,165.55566 82.900112,164.07685 84.213022,161.95057 C 84.886092,160.86052 84.973002,160.39891 84.642062,159.6719 C 84.064662,158.40347 85.340712,156.24014 86.489002,156.54071 C 87.078422,156.69498 87.441072,156.42968 87.927362,155.48842 C 88.684902,154.02215 88.225822,153.09534 86.742002,153.09534 C 85.479812,153.09534 84.701542,152.09378 85.353102,151.30796 C 85.624812,150.98028 86.249812,150.71218 86.742002,150.71218 C 87.935392,150.71218 88.613702,149.81847 88.457202,148.45233 C 88.334892,147.38474 88.245912,147.34034 86.417712,147.43501 C 83.823602,147.56933 82.972132,147.05317 82.972132,145.34629 C 82.972132,144.23302 83.190392,143.86731 84.151782,143.3697 C 85.155152,142.85036 85.297482,142.58919 85.104212,141.622 C 84.882442,140.5121 84.916382,140.48592 86.522282,140.52807 C 88.395042,140.57722 89.057362,139.93035 88.702012,138.39917 C 88.361722,136.93284 87.900392,136.63122 85.894562,136.56364 C 82.476952,136.4485 81.987012,134.30071 85.174182,133.40566 C 86.955922,132.9053 87.316592,132.27352 86.170872,131.6598 C 85.721102,131.41886 85.353102,130.95992 85.353102,130.63992 C 85.353102,130.31993 85.156892,130.05811 84.917072,130.05811 C 84.677262,130.05811 83.969382,129.50986 83.344022,128.8398 L 82.207002,127.6215 L 81.930842,128.7228 C 81.778962,129.32852 81.769452,137.91644 81.909702,147.80706 C 82.162252,165.61586 82.035692,168.0751 80.886342,167.6912 C 80.512892,167.56647 80.389472,165.35915 80.379282,158.62276 C 80.337052,130.72143 80.238322,127.2109 79.499892,127.35532 C 79.061542,127.44106 78.805442,127.85461 78.805442,128.47673 C 78.805442,129.36452 78.628242,129.47271 77.019712,129.56707 C 73.619962,129.76649 73.448252,129.87526 73.448252,131.82961 C 73.448252,133.74992 73.947462,134.3719 74.872182,133.60375 C 75.268452,133.27458 75.387372,132.7431 75.227642,132.01517 C 75.035802,131.14093 75.151792,130.8691 75.805242,130.66151 C 77.008522,130.27926 78.210192,130.79197 78.210192,131.68762 C 78.210192,132.1175 78.490742,132.89779 78.833642,133.42159 C 79.499812,134.43923 79.244082,135.38954 78.033452,136.39521 C 77.694152,136.67706 77.416542,137.42199 77.416542,138.05061 C 77.416542,138.67924 77.237962,139.19356 77.019712,139.19356 C 76.801452,139.19356 76.622882,138.81843 76.622882,138.35993 C 76.622882,137.22554 74.238472,134.98685 73.787752,135.69806 C 73.288742,136.4855 73.386092,139.76685 73.924452,140.3057 C 74.186352,140.56784 75.317322,140.78233 76.437692,140.78233 C 78.752932,140.78233 79.131762,140.99252 78.602072,141.98319 C 78.345292,142.46342 78.418622,143.06444 78.836222,143.90231 C 79.502562,145.23925 79.281632,146.00604 77.858762,147.29491 C 77.051552,148.02611 77.012222,148.02039 75.639452,146.97236 C 74.047912,145.75731 73.858432,144.67097 75.087732,143.80914 C 76.097222,143.10141 75.829032,141.97392 74.651192,141.97392 C 73.933612,141.97392 73.838192,142.24654 73.782342,144.45637 C 73.669082,148.93701 73.856322,160.38847 74.045942,160.57826 C 74.415542,160.9482 75.560372,157.61542 75.734872,155.66149 C 75.870042,154.14801 75.758192,153.53079 75.276192,153.1304 C 74.322282,152.33799 74.503252,151.35902 75.778022,150.41567 C 76.809472,149.65239 76.996972,149.62846 77.759092,150.16276 C 79.262092,151.21647 79.478212,152.09516 78.530862,153.30064 C 77.730482,154.31908 77.708322,154.53359 78.167432,156.81852 C 78.890192,160.4157 79.132192,163.35457 78.646472,162.63611 C 78.427962,162.3129 78.135582,161.37545 77.996742,160.55293 C 77.531012,157.79375 76.174172,158.32336 75.673082,161.45991 C 75.515662,162.44528 75.155272,163.15262 74.730832,163.3093 C 73.735782,163.67662 73.461172,164.22992 73.454332,165.88139 C 73.447962,167.41939 72.785932,168.24968 72.253512,167.38741 C 72.081712,167.10918 71.932622,158.69323 71.922192,148.68529 C 71.911762,138.67736 71.790942,129.88996 71.653712,129.15775 C 71.467282,128.16312 71.110712,127.71558 70.243662,127.38801 C 68.848012,126.86073 68.681982,125.53463 69.928042,124.86714 C 70.522942,124.54847 76.540552,124.39742 90.265492,124.35667 L 109.75804,124.2988 L 109.88382,125.39334 C 110.04981,126.83773 109.58884,126.97844 103.87176,127.22856 C 102.73363,127.27835 102.51345,128.26568 103.63971,128.26905 C 104.26841,128.27093 104.43053,129.05909 103.80562,129.07562 C 103.23138,129.09081 102.41672,129.65366 102.41672,130.03523 C 102.41672,130.2153 102.78414,130.45882 103.23321,130.57636 C 103.95576,130.76549 103.99,130.88709 103.53083,131.63327 C 103.07277,132.37764 103.12149,132.55974 103.94663,133.18722 C 105.08277,134.05119 104.95325,135.22013 103.64929,135.87081 C 102.35538,136.51649 102.0335,137.16011 102.29486,138.57906 C 102.5708,140.07712 103.09612,140.65333 104.50007,140.99785 L 105.59134,141.26565 L 105.59134,134.85502 C 105.59134,129.44347 105.68678,128.40775 106.2037,128.2092 C 106.5405,128.07984 106.94229,128.10136 107.09657,128.25701 C 107.25084,128.41267 107.37707,132.84359 107.37707,138.10349 C 107.37707,144.26688 107.52134,147.7151 107.78286,147.80238 C 108.00605,147.87686 111.39893,145.71023 115.3226,142.98765 C 125.09432,136.20719 124.16616,136.97148 123.38932,136.34514 C 122.80038,135.8703 122.71102,133.57616 122.49774,113.45394 C 122.28089,92.995627 122.16773,89.520347 121.63217,86.870577 C 121.28284,85.142237 119.1523,83.292047 115.99782,81.977627 C 113.1683,80.798597 112.70846,80.720967 109.85795,80.940977 C 106.57275,81.194557 102.3899,82.634617 98.547642,84.834887 C 96.893072,85.782367 96.464292,85.899287 96.464292,85.402967 C 96.464292,85.059247 96.625782,84.778017 96.823152,84.778017 C 97.020532,84.778017 98.761612,83.470307 100.69223,81.871987 C 104.6356,78.607357 117.84239,68.629037 124.37428,63.979137 C 128.16756,61.278797 128.86742,60.924537 130.3267,60.966147 C 131.23625,60.992067 139.55151,60.880607 148.80507,60.718437 C 164.45224,60.444227 165.66459,60.471347 166.1282,61.105967 C 166.4453,61.540007 166.7213,61.635147 166.88664,61.367367 C 167.31703,60.670337 169.48101,60.892537 170.69606,61.758527 C 171.79192,62.539567 171.87602,62.544077 172.89367,61.876677 C 173.47565,61.494997 174.50833,61.215227 175.1885,61.254967 L 176.42519,61.327197 L 175.31563,60.717337 C 174.09659,60.047297 173.33404,58.530837 173.71563,57.535487 C 173.9024,57.048347 174.25066,56.963787 175.19261,57.176897 C 175.87053,57.330277 176.87162,57.530027 177.41726,57.620797 L 178.40933,57.785847 L 177.42542,57.359237 C 175.89324,56.694927 175.03629,55.746797 175.03629,54.715877 C 175.03629,53.552027 175.86562,53.185937 177.08863,53.809917 C 177.69823,54.120927 177.55582,53.889097 176.66998,53.128397 C 175.61404,52.221627 175.3868,51.788387 175.60544,51.098847 C 175.95529,49.995557 176.31341,50.021837 179.00458,51.348287 C 181.44109,52.549227 181.9511,53.772237 180.19506,54.203127 L 179.20299,54.446557 L 180.4799,55.118307 C 181.69723,55.758707 181.75411,55.892767 181.69895,57.991297 C 181.66713,59.201987 181.49139,60.285137 181.30843,60.398317 C 181.12547,60.511497 181.0667,60.751357 181.17783,60.931347 C 181.40851,61.304937 185.04331,61.185377 185.69412,60.782777 C 185.93065,60.636467 186.6205,60.770637 187.22711,61.080957 C 187.96239,61.457087 188.63139,61.531587 189.23406,61.304447 C 190.49447,60.829417 222.22377,61.546797 222.73846,62.061957 C 223.54212,62.866367 222.56077,63.329567 220.05288,63.329567 C 217.16171,63.329567 216.83291,63.765847 218.53348,65.345597 C 219.10359,65.875207 220.39408,67.721947 221.40123,69.449457 C 223.04162,72.263127 223.26027,72.490747 223.49974,71.634027 C 223.64677,71.108017 223.78486,68.839987 223.80662,66.593957 C 223.8362,63.539267 223.98259,62.457857 224.38754,62.302317 C 224.9117,62.100987 228.63519,64.919577 241.6142,75.342487 C 244.94808,78.019787 249.01061,81.244587 250.64204,82.508727 C 253.4325,84.670947 254.4883,86.006307 252.91384,85.382067 C 248.73078,83.723547 239.41523,83.282927 236.73099,84.616607 C 233.8417,86.052177 233.78114,86.273407 233.36656,96.907467 C 233.16248,102.14216 232.99049,113.01451 232.98436,121.06826 L 232.97322,135.71142 L 231.97768,135.52094 C 230.56708,135.25103 231.13336,135.83305 235.485,139.12573 C 237.48648,140.64015 241.08383,143.4154 243.4791,145.29294 C 245.87437,147.17048 247.97579,148.56487 248.14892,148.39157 C 248.32205,148.21828 248.41587,143.62817 248.35741,138.19133 L 248.25111,128.30616 L 247.25904,128.07194 C 246.47745,127.88742 246.26697,127.58872 246.26697,126.66405 L 246.26697,125.49037 L 266.55286,125.3875 C 284.16369,125.29819 286.90374,125.363 287.33153,125.87893 C 288.04417,126.73839 287.53553,127.6554 286.19765,127.92322 L 285.03787,128.1554 L 285.25622,148.31008 C 285.48269,169.21485 285.44272,169.81288 283.9044,168.53501 C 283.1563,167.91356 280.66439,162.68928 280.33876,161.05963 C 280.21114,160.42096 279.86407,159.80521 279.5675,159.6913 C 279.00015,159.47339 277.81482,160.4208 277.81482,161.09217 C 277.81482,161.30855 277.38725,162.4129 276.86468,163.54627 C 276.3421,164.67963 275.70796,166.2629 275.45548,167.06464 C 275.203,167.86638 274.7377,168.73727 274.42148,168.99994 C 274.10526,169.26262 273.84913,169.67908 273.85231,169.9254 C 273.85548,170.17173 275.19478,171.85349 276.82852,173.66267 C 279.68045,176.82084 280.3938,178.11854 279.27796,178.11854 C 278.33598,178.11854 275.99064,175.1303 268.39112,164.24739 C 267.46407,162.91981 266.52,161.8336 266.29318,161.8336 C 265.87848,161.8336 263.52762,165.37263 258.78685,173.13381 C 257.37908,175.43849 255.99514,177.32415 255.71143,177.32415 C 254.6424,177.32415 254.60751,177.38873 261.92886,165.81891 C 262.82276,164.4063 263.49768,162.97641 263.42869,162.64136 C 263.35395,162.27844 262.83503,162.83496 262.14494,164.01817 C 260.78782,166.34502 259.08701,168.58586 258.67804,168.58588 C 258.37437,168.58589 258.06279,168.0718 255.66885,163.62097 C 254.84635,162.09177 253.9329,160.84061 253.63896,160.84061 C 253.33074,160.84061 252.48731,162.43787 251.64645,164.61395 C 250.47865,167.63609 250.01529,168.41256 249.31895,168.51421 C 248.48716,168.63564 248.44979,168.5067 248.4556,165.53526 C 248.46183,162.35429 248.89091,160.73902 249.38637,162.03138 C 249.52587,162.39524 249.64001,163.05071 249.64001,163.48796 C 249.64001,165.07325 250.65304,163.90606 251.79083,161.00984 C 252.42815,159.38757 253.00922,157.98508 253.08209,157.89319 C 253.42184,157.46483 255.39709,159.85963 256.22013,161.69778 C 257.62392,164.83295 258.02848,164.75507 257.89228,161.37595 C 257.78962,158.82891 257.67598,158.44749 256.98133,158.31849 C 256.54482,158.23743 255.29481,157.41919 254.20353,156.50018 C 253.11226,155.58116 250.79081,153.78645 249.04477,152.51193 C 247.29872,151.23741 245.14081,149.55143 244.24941,148.76533 C 242.72513,147.42109 241.21452,146.30562 234.95736,141.90391 C 233.5387,140.90594 231.48512,139.28827 230.39384,138.30911 C 229.30256,137.32995 227.85061,136.24111 227.16728,135.88949 C 225.18542,134.86965 223.84617,133.00596 223.84617,131.26785 C 223.84617,129.3271 223.11939,128.66525 221.91528,129.50941 C 221.21326,130.00157 221.12658,130.24551 221.49557,130.69052 C 221.83667,131.10189 221.89411,133.50064 221.71111,139.69089 C 221.57389,144.33263 221.35046,156.62043 221.21461,166.99712 L 220.9676,185.86381 L 219.59332,187.16179 C 218.83746,187.87567 217.63219,188.90778 216.91495,189.45535 C 215.70076,190.38232 215.53227,190.41128 214.47054,189.87566 C 213.84337,189.55927 212.08021,189.08476 210.55242,188.82121 C 206.81407,188.17633 206.67839,188.03432 206.99284,185.09538 C 207.19373,183.21772 207.07433,182.14536 206.45874,180.29852 C 206.02268,178.9903 205.53931,176.3113 205.38459,174.3452 C 205.05419,170.14671 203.86958,164.2279 203.01753,162.51836 C 202.68748,161.85616 202.41744,160.81231 202.41744,160.19869 C 202.41744,158.25283 200.82623,154.73185 198.811,152.21852 C 197.73897,150.88151 196.86185,149.66458 196.86185,149.51423 C 196.86185,149.36389 197.29561,148.63354 197.82577,147.89126 C 198.35593,147.14897 199.61625,145.14686 200.62649,143.44212 C 201.63673,141.73738 202.71449,140.24612 203.02152,140.12819 C 203.32855,140.01026 204.11984,140.29871 204.77994,140.76917 C 206.14814,141.74431 207.99983,142.01546 208.26039,141.27883 C 208.36921,140.97118 208.0756,140.78233 207.48841,140.78233 C 206.96497,140.78233 205.88444,140.18055 205.07438,139.43788 C 203.14401,137.66811 203.12408,136.36815 205.00095,134.64742 C 206.27536,133.47903 206.31759,133.37302 205.49698,133.40227 C 204.76135,133.4285 204.6,133.22381 204.6,132.26437 C 204.6,131.17374 204.82852,130.99715 207.97304,129.65795 C 212.43932,127.75582 213.59843,126.96948 213.44934,125.94284 C 213.29007,124.84608 211.65821,124.54535 207.23586,124.79773 L 203.72316,124.99819 L 203.48834,130.01061 C 203.1432,137.37801 201.59127,141.79591 197.94597,145.78812 C 194.98973,149.02569 193.75155,148.61069 196.18798,145.1989 C 198.33104,142.19791 198.30013,142.06909 195.9622,144.25778 C 194.73709,145.40467 193.49592,146.34305 193.20403,146.34305 C 192.33553,146.34305 190.90954,145.15734 190.90794,144.43385 C 190.90563,143.3866 189.46621,141.27884 188.55584,140.98963 C 187.23555,140.5702 187.62768,139.85488 189.71471,138.8756 C 192.25615,137.68308 194.02916,135.99283 194.33285,134.47299 C 194.6979,132.64606 195.30855,132.31457 197.32759,132.84731 C 198.27184,133.09646 199.46866,133.57272 199.98718,133.90568 C 201.19021,134.67813 201.44113,134.29934 201.76202,131.2264 C 201.97603,129.17694 201.53368,125.0692 201.04645,124.58152 C 200.95026,124.48523 200.08943,124.78543 199.1335,125.24861 C 197.19368,126.18853 191.75875,127.02407 191.1069,126.48258 C 190.87771,126.29219 190.44637,125.45485 190.14838,124.62182 C 189.50786,122.83131 187.56535,119.82924 186.38741,118.80941 C 185.92807,118.41172 184.43616,117.54588 183.07207,116.8853 C 180.70073,115.73696 180.5919,115.62054 180.59209,114.23222 C 180.59229,112.78754 181.8772,108.86155 182.65976,107.91456 C 183.31658,107.11972 185.43539,107.33756 187.70451,108.43322 C 189.80555,109.44774 190.6436,109.54257 189.56107,108.64333 C 188.64604,107.88322 184.99573,106.58797 181.98079,105.95358 C 178.8508,105.295 173.33044,105.46405 171.06801,106.28779 L 169.67911,106.79348 L 170.82765,107.00647 C 171.45935,107.12362 172.30585,107.66631 172.70877,108.21245 C 173.5495,109.35205 174.84724,114.24709 174.52881,115.07766 C 174.4115,115.38365 173.62947,115.94345 172.79097,116.32167 C 167.96225,118.49971 167.10301,119.3173 164.91717,123.81385 L 163.32986,127.07916 L 161.27618,127.19818 C 159.00857,127.32961 155.12563,126.36404 154.39936,125.48813 C 153.50101,124.40469 155.49525,118.52899 157.80056,115.46707 C 159.4664,113.25451 164.02472,109.71313 166.9486,108.35993 C 168.81805,107.49473 169.10459,107.24861 168.38904,107.1227 C 166.83236,106.84878 163.88303,108.69639 160.07561,112.33065 C 158.04597,114.26798 156.38536,116.00273 156.38536,116.18566 C 156.38536,116.36857 155.94365,117.16974 155.40379,117.96601 C 154.86392,118.76228 154.30492,120.06607 154.16156,120.8633 C 154.0182,121.66054 153.71192,122.55052 153.48094,122.84103 C 152.74538,123.76616 152.63429,132.07903 153.32808,134.27918 C 153.66376,135.34366 154.04472,136.85338 154.17468,137.6341 C 154.39197,138.93957 158.24547,145.01082 158.61929,144.63666 C 158.70914,144.54671 158.06111,143.24054 157.1792,141.73405 C 154.37737,136.94784 154.22269,134.79328 156.60927,133.79518 C 158.77041,132.89137 160.23142,133.06813 161.01301,134.32793 C 162.20387,136.24746 163.246,137.20759 164.13858,137.20759 C 165.21715,137.20759 167.09973,139.03284 167.09973,140.07858 C 167.09973,141.00238 165.902,142.69437 163.73537,144.83132 C 162.21176,146.33405 161.9231,146.40683 160.15523,145.73386 C 159.50261,145.48543 159.44972,145.52683 159.85761,145.96683 C 160.58951,146.75635 160.47067,147.93214 159.6592,147.92992 C 157.78154,147.92479 153.99247,142.56642 152.48024,137.77772 C 148.68004,125.74377 151.76401,115.66988 161.34572,108.81834 C 166.82913,104.89734 170.9501,103.62827 178.01251,103.68576 C 186.07916,103.7514 190.52962,105.69082 196.43835,111.7154 C 198.80595,114.12941 199.86099,115.61628 201.42537,118.74359 L 203.40952,122.71002 L 212.63577,122.81665 L 221.86203,122.92326 L 221.86203,124.53384 C 221.86203,125.85355 221.98744,126.12041 222.55648,126.01152 C 223.14173,125.89953 223.26887,125.34845 223.365,122.50696 L 223.47907,119.13528 L 219.43476,119.26228 C 214.67074,119.41186 213.52864,119.20215 213.52864,118.17779 C 213.52864,117.12931 214.6916,116.95726 219.28265,117.32649 C 221.4652,117.50202 223.33443,117.56954 223.4365,117.47652 C 223.89316,117.06038 223.3506,107.55142 222.80374,106.38676 C 221.92031,104.50531 218.54585,100.91255 216.31842,99.481887 C 215.22055,98.776737 214.32229,98.045187 214.32229,97.856207 C 214.32229,97.667247 215.34909,96.862817 216.60406,96.068607 C 220.76259,93.436847 223.11886,90.544537 223.56482,87.524297 C 223.9334,85.028147 223.26917,84.925347 221.94511,87.273597 C 219.38704,91.810417 212.52229,95.849707 207.30201,95.889737 C 205.19916,95.905857 205.40891,96.640547 207.84765,97.800917 C 211.35489,99.469687 214.71601,101.91459 217.21079,104.61174 C 219.82636,107.43946 221.1608,109.58566 222.22079,112.66943 C 223.0905,115.19962 222.84031,115.75913 220.83918,115.75913 C 219.37435,115.75913 219.07174,115.43701 218.12332,112.86808 C 217.23754,110.46883 214.83883,107.41495 212.42286,105.61065 C 210.17995,103.93559 203.94232,100.82841 199.03476,98.941547 C 190.54541,95.677587 186.20405,93.184417 182.19913,89.273167 C 180.78604,87.893117 179.49872,86.763997 179.33844,86.763997 C 179.17814,86.763997 178.39315,87.749977 177.59399,88.955057 C 175.16202,92.622357 172.26033,94.874327 166.03707,97.924287 C 162.51974,99.648087 160.03401,101.12992 159.40544,101.87761 C 158.3064,103.18495 157.58152,105.32649 157.57806,107.27627 C 157.57491,109.0524 156.70697,109.18663 154.12901,107.80968 C 150.26171,105.74408 147.18226,106.34417 143.05244,109.96818 C 141.93933,110.94495 140.5112,112.73578 139.87782,113.94906 C 138.70918,116.18764 137.73444,116.82149 137.73444,115.34286 C 137.73444,114.12662 140.12202,110.64791 142.43252,108.49775 C 146.02298,105.15646 149.97632,104.1777 153.21074,105.82929 C 155.35836,106.92594 155.87892,106.83959 156.20385,105.3328 C 156.96793,101.78957 159.53437,99.353637 164.71279,97.256537 C 167.82402,95.996577 172.00199,93.314407 173.70633,91.482827 C 174.39351,90.744347 175.68816,89.082767 176.58334,87.790437 C 177.87746,85.922127 178.21092,85.088007 178.21092,83.719197 C 178.21092,82.040647 178.24311,81.997807 179.50061,82.003087 C 181.78062,82.012677 182.48373,82.427567 184.1,84.717027 C 186.20646,87.700837 188.69189,90.049277 191.06774,91.300707 C 194.0357,92.864037 194.26984,92.604387 192.38289,89.842237 C 191.45015,88.476897 190.07951,85.885197 189.33701,84.082937 L 187.98703,80.806087 L 178.33703,80.806087 C 173.02954,80.806087 168.57164,80.761407 168.43061,80.706787 C 168.28957,80.652177 167.68131,82.092627 167.07893,83.907797 C 166.47654,85.722977 165.47586,87.953807 164.85518,88.865187 C 163.05615,91.506877 163.04561,91.530317 163.65639,91.530317 C 164.34624,91.530317 168.67218,88.113817 169.99141,86.527097 C 170.51878,85.892797 171.42543,84.614177 172.00619,83.685747 C 172.99336,82.107577 173.17805,81.997677 174.84286,81.997677 C 176.97391,81.997677 177.11072,82.518387 175.65102,85.073707 C 172.46672,90.648097 168.41532,93.487887 156.30639,98.633147 C 154.18953,99.532637 152.30622,100.26858 152.12127,100.26858 C 151.02617,100.26858 143.31695,105.15675 141.08157,107.2685 C 139.30026,108.95128 136.62382,112.72642 135.72635,114.82206 L 134.94134,116.65511 L 133.16326,116.4545 C 131.49597,116.2664 131.38518,116.31321 131.38518,117.20566 C 131.38518,117.98247 131.54932,118.12357 132.27805,117.97322 C 134.33512,117.54881 139.56194,117.36586 140.07402,117.70035 C 140.99589,118.3025 140.27719,119.20338 138.66183,119.47053 C 137.82438,119.60901 135.93383,119.72429 134.4606,119.72669 C 132.49388,119.72991 131.78201,119.87195 131.78201,120.26117 C 131.78201,120.67424 132.48137,120.75076 134.94968,120.60774 C 137.66666,120.45031 138.15407,120.51996 138.37541,121.09731 C 138.82388,122.26707 137.82815,122.70819 134.63947,122.75237 L 131.5836,122.79471 L 131.46043,124.24184 C 131.36038,125.41753 131.47202,125.68999 132.05568,125.69439 C 132.4508,125.69738 133.22051,125.81481 133.76615,125.95535 C 134.74521,126.20752 134.7486,126.19997 134.0249,125.37916 C 133.07737,124.3045 133.40358,123.83374 135.25058,123.61035 C 137.3787,123.35294 138.92492,123.96738 138.92492,125.07048 C 138.92492,125.56139 139.23742,126.22733 139.61937,126.55035 C 140.754,127.50993 145.98638,129.66091 147.18596,129.66091 C 147.79709,129.66091 148.61094,129.8906 148.99452,130.17134 C 149.81943,130.77509 150.33871,133.79597 149.6869,134.19919 C 149.19028,134.50639 146.08451,133.03747 143.5712,131.30668 C 142.65048,130.67262 141.23111,129.77941 140.41705,129.32175 C 138.93725,128.48982 138.93677,128.48982 138.19716,129.28442 C 137.77371,129.73936 137.1934,129.97778 136.83994,129.84203 C 136.39099,129.66959 136.14998,129.93527 135.95682,130.81554 C 135.8107,131.48142 135.78332,132.34303 135.89597,132.73023 C 136.00863,133.11744 136.30505,135.81625 136.5547,138.72758 C 136.97107,143.58326 136.95149,144.08408 136.31794,144.78478 C 135.93808,145.20492 135.23042,145.54866 134.74537,145.54866 C 133.86663,145.54866 133.86285,145.51798 133.69887,137.04988 C 133.53154,128.40805 133.32715,127.27775 131.93184,127.27775 C 131.55227,127.27775 131.38518,127.79979 131.38518,128.98568 C 131.38518,129.92504 131.1709,130.9081 130.90899,131.17025 C 130.53862,131.54096 130.53862,131.7528 130.90899,132.12351 C 132.21268,133.42841 131.49362,134.21119 124.24227,139.38087 C 114.07545,146.62909 108.3852,150.86064 108.56423,151.03984 C 108.65474,151.13043 109.80657,150.46818 111.12386,149.56818 C 112.44115,148.66819 113.58787,147.93182 113.67212,147.93182 C 113.75637,147.93182 116.03519,146.42618 118.73617,144.58597 C 126.16591,139.52396 130.18665,137.11951 130.81684,137.36155 C 131.2599,137.53173 131.38518,138.49473 131.38518,141.73036 C 131.38518,144.01315 131.27839,146.15942 131.14788,146.49986 C 131.01735,146.8403 130.04041,147.74457 128.97688,148.50934 C 126.52577,150.27191 124.85389,152.71247 125.18714,154.04147 C 125.46075,155.13261 129.41766,160.62954 129.93496,160.63711 C 130.30269,160.64249 128.14593,156.64079 126.96525,155.12704 C 126.55889,154.60605 126.22642,153.79211 126.22642,153.31828 C 126.22642,151.10127 134.14288,146.32405 136.41818,147.16802 C 137.16007,147.44321 137.32113,147.32234 137.53968,146.32636 C 138.00477,144.20686 144.79399,138.88163 146.2957,139.45843 C 146.9657,139.71577 152.81391,148.4363 152.81391,149.17804 C 152.81391,149.83983 148.04641,153.09534 147.07726,153.09534 C 146.71865,153.09534 145.88629,152.81637 145.22757,152.47542 C 143.22459,151.43868 143.13061,152.03555 145.08025,153.41106 C 146.40562,154.34612 147.17502,155.29488 147.85381,156.83116 C 148.59133,158.50036 149.07044,159.05397 150.08334,159.40739 C 150.79292,159.65498 151.6733,160.12914 152.03975,160.46107 C 152.64244,161.00701 152.76702,160.97139 153.34543,160.08783 C 153.69711,159.55061 154.39103,159.05337 154.88748,158.98285 C 155.54361,158.88966 155.75925,158.6285 155.67708,158.02658 C 155.51895,156.86831 157.88025,153.48641 159.64314,152.34629 C 160.86867,151.5537 161.04908,151.27064 160.72046,150.65602 C 160.22505,149.72951 160.70294,148.77387 162.35929,147.37887 C 163.73865,146.21714 164.28863,146.13595 166.16872,146.81642 C 167.92268,147.45125 168.32553,146.91638 166.93144,145.80375 C 165.94564,145.01697 165.86112,144.79204 166.26646,144.03395 C 166.84426,142.95334 167.6448,142.93423 169.09315,143.96649 C 171.24922,145.50317 175.82995,152.37659 175.82995,154.07512 C 175.82995,154.41007 175.50048,154.68411 175.0978,154.68411 C 174.31149,154.68411 173.05215,155.85211 173.05215,156.58139 C 173.05215,156.90528 173.38342,156.91036 174.27257,156.60012 C 174.94602,156.36514 176.90236,156.25595 178.63768,156.3565 C 180.36726,156.45671 181.78237,156.41009 181.78237,156.25288 C 181.78237,155.77582 179.65283,154.52485 178.80616,154.50454 C 177.71102,154.47828 177.94127,153.21427 179.66541,149.78743 C 181.06645,147.00277 181.14831,146.11427 179.89987,147.24249 C 179.2107,147.8653 178.03736,148.11347 176.34857,147.99359 C 175.08292,147.90375 170.39491,143.76756 169.44386,141.90163 C 168.55923,140.16602 167.87736,133.08305 168.32785,130.30904 C 168.59578,128.65915 168.41113,128.40818 167.16859,128.73341 C 166.5952,128.8835 166.30607,129.26865 166.30607,129.88239 C 166.30607,130.39016 166.1275,130.91608 165.90924,131.05109 C 165.30949,131.42209 165.43378,132.04407 166.10766,132.04407 C 166.7378,132.04407 166.7554,132.07966 166.89358,133.63285 C 166.94217,134.17899 167.02957,134.80457 167.08782,135.02302 C 167.46108,136.42306 165.72276,137.02828 164.73833,135.84103 C 164.4774,135.52632 164.02028,135.36242 163.72253,135.47677 C 162.96751,135.76677 161.42154,132.65922 161.77161,131.55522 C 161.91826,131.09275 162.79444,129.89644 163.71868,128.89676 C 164.95067,127.56419 165.47021,126.61754 165.66553,125.34939 C 165.98877,123.25069 166.7134,121.78789 168.35927,119.91162 C 170.33469,117.65967 172.33746,116.8346 176.31835,116.63276 C 180.77355,116.40686 183.29392,117.16745 185.70163,119.46442 C 187.51651,121.19582 189.71894,125.34993 189.71894,127.04164 C 189.71894,127.63606 190.1643,128.37344 190.86373,128.93704 C 192.754,130.46021 193.94865,133.57596 192.89282,134.22909 C 192.67416,134.36436 192.30512,133.97276 192.07273,133.35885 C 191.54851,131.97399 190.25412,130.5552 188.84578,129.82177 C 186.85827,128.78671 186.75191,128.95409 186.62569,133.31568 C 186.53247,136.53691 186.30259,137.87547 185.49606,139.89332 C 184.93914,141.28671 184.56525,142.50859 184.6652,142.60863 C 184.76515,142.70867 185.32982,142.60676 185.92002,142.38216 C 186.95976,141.98649 188.52845,142.39723 188.52845,143.06513 C 188.52845,143.21303 187.76952,144.12864 186.84193,145.09984 L 185.15541,146.86567 L 186.64796,145.97343 L 188.1405,145.08119 L 189.94614,146.14033 C 192.27674,147.50742 192.46441,148.09292 191.06018,149.61595 L 189.91735,150.85546 L 191.06215,149.98943 C 191.69178,149.51311 192.49536,149.13527 192.84788,149.14977 C 194.04455,149.199 197.02768,151.7444 198.19801,153.71484 C 199.62161,156.11172 202.1771,163.22061 203.25825,167.7915 C 204.22238,171.86764 204.72397,178.11854 204.08692,178.11854 C 203.84924,178.11854 203.54362,177.93853 203.40777,177.71852 C 202.56218,176.34907 196.92245,175.08143 194.86666,175.79874 C 193.36214,176.32371 192.49674,175.70772 192.49674,174.11184 C 192.49674,173.49086 192.21345,172.14762 191.86722,171.12687 C 191.10328,168.87465 191.47251,168.46846 193.95844,168.82635 C 195.50205,169.04858 195.6032,169.00656 195.39971,168.22772 C 195.27935,167.76701 195.40596,167.11861 195.68108,166.7868 C 196.47125,165.83383 195.73646,165.55503 194.4231,166.30948 C 192.29646,167.53114 191.71949,167.10414 191.68554,164.28357 L 191.66801,162.82658 L 190.86967,164.34089 C 189.6239,166.70396 188.75585,166.21344 188.60722,163.06243 C 188.54142,161.66732 188.67905,159.63224 188.91307,158.54002 C 189.60975,155.28854 189.12653,155.98984 187.6766,160.33456 C 186.44135,164.03595 186.22395,164.41535 185.33825,164.41535 C 184.44077,164.41535 184.36433,164.27073 184.39356,162.62799 C 184.43434,160.33539 186.24236,155.86456 188.20843,153.19463 C 189.05298,152.04773 189.56886,151.10937 189.35483,151.10937 C 188.3177,151.10937 184.83985,157.16576 183.58993,161.14846 C 182.92495,163.26735 182.42461,164.16915 181.67755,164.59526 C 180.40552,165.3208 178.93037,164.74774 177.91239,163.13257 C 177.2925,162.14905 176.98849,162.03219 175.0495,162.03219 L 172.88016,162.03219 L 171.03774,158.68388 C 169.34212,155.60235 166.91744,152.74821 166.41902,153.24708 C 166.30456,153.36165 167.05052,154.57335 168.07672,155.93974 C 170.36811,158.99079 171.19171,160.54086 170.91076,161.27366 C 170.62354,162.02282 167.79168,162.00676 166.32506,161.24764 C 164.86565,160.49225 164.8711,160.47701 164.30854,166.88375 C 163.47599,176.36545 163.33028,177.45928 162.87988,177.60811 C 162.6324,177.68989 162.14132,177.46795 161.78861,177.11491 C 160.68599,176.01128 160.93094,163.90809 162.19337,157.11597 C 162.38646,156.07713 162.31896,155.81566 161.89421,155.95696 C 161.1202,156.21446 160.46619,160.11345 159.89121,167.89819 C 159.62065,171.56141 159.27708,174.7565 159.12772,174.99839 C 158.93169,175.31586 158.0452,175.27874 155.94044,174.86493 L 153.02472,174.2917 L 152.55963,170.32844 C 152.01963,165.72674 151.42967,163.29115 150.7103,162.69357 C 150.29669,162.34998 150.27399,162.71904 150.59083,164.63654 C 150.83539,166.11669 150.84192,167.13963 150.60824,167.36652 C 150.38071,167.58742 149.38076,167.27897 148.05197,166.578 C 145.63562,165.30332 144.00684,164.52201 141.86061,163.60805 C 141.07442,163.27326 140.3393,162.64769 140.22701,162.21787 C 139.96853,161.22853 139.00822,161.2335 137.73444,162.23079 L 136.74236,163.00752 L 137.78505,163.01634 C 139.30978,163.02926 139.58435,163.63088 139.8737,167.5929 C 140.01729,169.55901 140.39191,172.24007 140.70619,173.5508 C 141.66464,177.54807 141.61946,177.68936 138.32968,180.98217 C 135.29097,184.02367 134.8995,184.79365 135.94871,185.66522 C 136.45072,186.08223 136.54395,186.0047 136.54395,185.17021 C 136.54395,184.44628 137.40432,183.37125 139.74996,181.16428 C 142.22289,178.83755 142.90065,177.97336 142.71405,177.38488 C 142.58099,176.96528 142.28029,175.12662 142.04582,173.299 C 141.81136,171.47139 141.4828,168.99301 141.3157,167.7915 C 140.96582,165.27582 141.17974,164.86463 142.64665,165.23314 C 144.41598,165.67762 144.87734,166.79604 144.87734,170.64069 C 144.87734,174.67377 145.39762,177.48341 146.43854,179.07167 L 147.17777,180.1996 L 147.86999,179.14217 C 148.53466,178.12681 148.53123,178.05586 147.78381,177.35889 C 147.24176,176.85342 146.85029,175.62247 146.49445,173.30455 C 145.89868,169.4237 146.01327,167.5929 146.85193,167.5929 C 147.59923,167.5929 147.89775,168.69358 148.39947,173.29864 C 148.62236,175.34451 148.87423,177.08798 148.95917,177.17301 C 149.04412,177.25802 149.71922,177.0252 150.45941,176.65561 C 151.28299,176.24437 152.7475,175.98362 154.23362,175.98362 C 156.48672,175.98362 157.14014,176.22384 163.28415,179.31101 L 169.90626,182.6384 L 173.16572,182.64078 C 174.95843,182.64208 177.22877,182.48987 178.21092,182.30253 C 179.82919,181.99386 179.94701,182.02209 179.46737,182.60347 C 178.87606,183.32023 175.28977,184.47363 173.65246,184.47363 C 172.97498,184.47363 172.65138,184.65378 172.76059,184.97013 C 172.88051,185.3175 173.90351,185.45407 176.16669,185.42486 C 177.94579,185.40189 179.4014,185.54599 179.4014,185.74508 C 179.4014,186.25155 176.30828,187.56642 174.42419,187.86087 C 173.22025,188.04902 172.31858,187.8678 170.56066,187.08435 C 167.734,185.82461 167.31146,185.80761 168.08198,186.98465 C 168.8279,188.12411 171.80713,189.65215 173.80607,189.9205 C 175.76989,190.18416 178.64097,188.79269 182.57603,185.67012 C 189.56424,180.12482 192.77772,177.80125 194.04406,177.37791 C 196.43852,176.57742 198.58389,176.82708 201.2698,178.21877 C 204.74301,180.01839 205.39447,181.2269 205.39093,185.86381 C 205.38853,189.0065 205.20543,189.94262 203.87595,193.60909 C 201.70278,199.60229 200.20379,204.16146 199.45749,207.04777 C 198.82742,209.48453 198.83253,209.60699 199.62013,210.94311 C 200.83676,213.00704 200.6971,213.46877 198.85618,213.46877 C 197.11287,213.46877 196.63393,212.8899 195.65211,209.59613 C 194.88254,207.01446 194.3789,207.55302 194.53782,210.78772 L 194.67929,213.66737 L 193.48881,213.66737 L 192.29832,213.66737 L 192.18173,210.78772 C 192.11761,209.2039 191.89779,207.90806 191.69326,207.90806 C 191.3129,207.90806 191.17634,208.35957 190.61203,211.4828 C 190.18456,213.84863 189.07772,214.01202 189.22176,211.68804 C 189.35272,209.57523 190.23144,206.9329 192.39409,202.14875 C 194.23117,198.08483 195.73948,193.94206 195.47747,193.67982 C 195.13529,193.33732 186.94114,210.41744 186.94114,211.47319 C 186.94114,213.20649 186.01708,213.86596 183.58835,213.86596 C 180.41382,213.86596 180.32578,213.41851 182.72873,209.49683 C 185.58254,204.83935 189.04749,198.36534 188.81237,198.13 C 188.7054,198.02294 187.8211,199.15146 186.84724,200.63783 C 185.87339,202.12421 183.89807,205.14587 182.45764,207.35265 C 181.01722,209.55942 179.19837,211.92769 178.41575,212.61546 C 177.12074,213.75355 176.75227,213.86596 174.31713,213.86596 C 171.66555,213.86596 169.87753,213.19167 169.87753,212.19171 C 169.87753,211.34197 163.08259,198.24966 160.0606,193.27673 C 158.81597,191.22859 159.19924,192.93921 160.68299,196.05459 C 164.85886,204.82254 167.42178,211.65864 166.97248,212.83059 C 166.53715,213.96606 165.11726,213.59212 164.63789,212.21573 L 164.20148,210.9627 L 163.56512,212.31503 C 162.86829,213.79586 161.57543,214.2651 160.79282,213.32124 C 160.413,212.86318 160.41275,212.23718 160.79164,210.40108 C 161.14384,208.69433 161.15701,207.85548 160.84047,207.29093 C 160.35381,206.42297 160.37608,206.37978 159.60072,209.69543 C 158.88701,212.7475 158.05363,213.64406 155.79404,213.79069 C 153.12606,213.96383 152.8783,213.49974 154.432,211.23942 C 155.86425,209.15581 156.7377,207.0372 156.76478,205.58114 C 156.77976,204.7753 156.64218,204.67957 155.78032,204.89608 C 154.88374,205.12132 154.69605,204.95539 153.99459,203.31744 C 153.56347,202.31075 153.21074,201.30286 153.21074,201.07769 C 153.21074,200.85252 152.16857,198.23097 150.89481,195.25202 C 147.34172,186.94241 147.08125,186.12189 147.12649,183.38135 C 147.14903,182.016 147.01622,180.89889 146.83136,180.89889 C 146.25932,180.89889 145.62325,184.01357 145.89701,185.47417 C 146.14202,186.78137 146.07528,186.89422 144.72267,187.45989 C 143.93391,187.78976 142.17281,188.21854 140.80912,188.41273 C 138.56872,188.73176 138.1736,188.67598 136.71073,187.83419 C 135.82031,187.3218 134.88382,186.65178 134.62965,186.34523 C 133.89999,185.46524 133.73978,166.3219 134.45708,165.72605 C 134.75567,165.47801 135.15765,164.98018 135.35037,164.61975 C 135.64717,164.06465 135.51873,163.99116 134.51061,164.13926 C 133.5523,164.28005 133.27755,164.14987 133.10019,163.47104 C 132.97905,163.00736 132.58826,162.62794 132.23176,162.62788 C 131.64186,162.62779 131.5836,164.20758 131.5836,180.20369 C 131.5836,210.01952 131.07647,266.22868 130.80348,266.67079 C 130.40241,267.32033 123.25361,267.21612 122.70354,266.55272 z M 176.21408,209.90083 C 177.07814,209.43797 179.79823,205.8249 179.79823,205.14003 C 179.79823,204.87766 178.96951,205.39314 177.95664,206.28553 C 175.93535,208.06637 174.65257,208.31837 173.49689,207.16163 C 172.48462,206.14842 170.01764,202.78482 165.62225,196.42494 C 163.59754,193.49529 161.94096,191.22351 161.94096,191.37653 C 161.94096,192.08628 166.41674,200.04294 169.67201,205.12013 C 172.66215,209.78381 174.25693,210.94923 176.21408,209.90083 z M 178.39936,203.50573 C 181.30558,200.82439 187.95392,190.12128 187.18889,189.35553 C 187.062,189.22854 186.82043,189.46816 186.65204,189.88804 C 185.45412,192.8752 176.85089,203.53893 175.63885,203.53893 C 175.36836,203.53893 174.5022,203.10093 173.71406,202.56558 C 171.78751,201.25699 171.4472,202.01194 173.18125,203.74758 C 175.03691,205.60495 176.18157,205.5519 178.39936,203.50573 z M 176.81895,198.5395 C 177.9269,197.81287 182.1792,192.93108 182.1792,192.38574 C 182.1792,191.61339 181.40984,192.11359 178.46481,194.80067 C 176.78881,196.32987 175.17998,197.58103 174.88963,197.58103 C 174.11116,197.58103 171.77013,195.78379 167.19893,191.6768 C 164.96182,189.66685 163.13145,188.20385 163.13145,188.42569 C 163.13145,189.16975 170.4524,196.90151 172.23698,198.04216 C 174.23714,199.32061 175.43043,199.45013 176.81895,198.5395 z M 189.71894,196.73976 C 189.71894,196.5213 189.54037,196.45302 189.32211,196.58804 C 189.10386,196.72305 188.92528,197.01226 188.92528,197.23071 C 188.92528,197.44917 189.10386,197.51744 189.32211,197.38243 C 189.54037,197.24741 189.71894,196.95822 189.71894,196.73976 z M 190.90942,194.30412 C 190.90942,193.64854 190.21073,194.39441 189.98499,195.29097 C 189.7664,196.15914 189.77869,196.16369 190.33392,195.41984 C 190.65045,194.99579 190.90942,194.49371 190.90942,194.30412 z M 188.52845,187.65119 C 188.52845,187.43272 188.44971,187.25399 188.35346,187.25399 C 188.25721,187.25399 188.0681,187.43272 187.93321,187.65119 C 187.79832,187.86964 187.87707,188.04838 188.10821,188.04838 C 188.33934,188.04838 188.52845,187.86964 188.52845,187.65119 z M 214.66881,185.60601 C 214.31679,184.38765 214.12819,184.11987 214.02947,184.69826 C 213.87486,185.60417 214.61603,187.88677 214.95472,187.54777 C 215.07208,187.43029 214.94342,186.5565 214.66881,185.60601 z M 142.34013,185.43985 C 142.74382,183.82993 142.26685,183.40475 141.56827,184.75181 C 141.20571,185.45094 140.90906,186.20496 140.90906,186.42741 C 140.90906,187.19582 142.10713,186.36905 142.34013,185.43985 z M 219.08423,184.98392 C 219.08423,183.23534 213.07622,178.04178 212.13883,178.98003 C 211.97486,179.14415 213.04989,182.53807 213.36611,182.85457 C 213.46001,182.94857 213.78959,182.68104 214.0985,182.26008 C 214.64276,181.5184 214.69907,181.53161 215.91556,182.68626 C 216.60602,183.34163 217.42745,184.36937 217.74095,184.97013 C 218.46814,186.36362 219.08423,186.36995 219.08423,184.98392 z M 212.48513,173.61937 C 214.96795,162.02006 215.53168,159.14157 216.07676,155.2799 C 216.41595,152.87688 216.95532,149.21277 217.27537,147.13743 C 218.89856,136.61169 219.47914,132.55862 219.48005,131.74618 C 219.4809,130.99235 219.26738,130.85249 218.11558,130.85249 C 217.36457,130.85249 216.63974,130.67375 216.50485,130.4553 C 216.07565,129.7602 214.92875,130.02707 214.37108,130.95179 C 213.94757,131.65404 213.94412,131.73912 214.35499,131.34898 C 215.19737,130.54909 215.90961,130.77442 215.90961,131.8408 C 215.90961,132.62031 216.09228,132.80911 216.77431,132.73448 C 217.57921,132.64641 217.63243,132.79093 217.54384,134.82443 C 217.45507,136.86198 215.38901,150.32825 214.13124,157.06727 C 213.82544,158.7057 213.28519,161.65486 212.93067,163.62097 C 212.57616,165.58708 211.83942,169.38294 211.29347,172.05621 C 210.31428,176.85092 210.34129,178.56812 211.37365,177.15498 C 211.64957,176.77729 212.14973,175.18627 212.48513,173.61937 z M 207.72661,166.49341 C 207.55947,163.33384 207.13492,159.49539 206.11887,151.95778 C 205.9678,150.83709 205.46822,149.74906 204.70547,148.87953 C 203.03683,146.97731 202.63899,147.21193 203.78678,149.4213 C 204.32586,150.45896 204.96043,152.6485 205.19693,154.28691 C 205.43343,155.92534 205.78914,158.15956 205.98739,159.25184 C 206.18563,160.34412 206.45432,162.6677 206.58446,164.41535 C 206.9219,168.94689 207.20074,170.60553 207.58514,170.36774 C 207.76963,170.25361 207.83329,168.51017 207.72661,166.49341 z M 157.57931,163.82792 C 156.96168,162.33547 155.84699,161.80643 156.40274,163.26953 C 156.61181,163.81991 156.99121,164.65989 157.24585,165.13612 C 157.90073,166.36091 158.17777,165.27406 157.57931,163.82792 z M 269.07575,161.01988 C 267.01611,157.26536 266.90395,157.15989 265.91935,158.05177 C 264.81743,159.0499 264.88959,159.78085 266.06779,159.55542 C 266.89472,159.3972 267.24497,159.75362 268.74349,162.27833 C 270.94843,165.99322 271.22642,164.94034 269.07575,161.01988 z M 260.96695,161.40217 C 261.69125,159.97151 261.9171,159.05102 261.74087,158.24792 C 261.28803,156.18425 263.28891,154.27515 263.81085,156.27288 C 264.13477,157.51269 264.59576,157.21951 265.32417,155.31043 C 266.12619,153.20842 265.89672,152.69814 264.14941,152.69814 C 262.70256,152.69814 261.72367,151.85374 262.08325,150.91582 C 262.20995,150.58536 262.77738,150.31498 263.34422,150.31498 C 264.76852,150.31498 265.90997,149.63116 265.90997,148.77789 C 265.90997,148.38478 265.37416,147.58528 264.71929,147.00125 C 263.69175,146.08487 263.41969,146.00745 262.73377,146.4362 C 261.69236,147.08717 260.55279,146.40647 260.55279,145.13342 C 260.55279,144.42678 260.85205,144.13136 261.82294,143.87954 C 263.31344,143.49297 263.76505,142.93578 263.16978,142.21786 C 262.5589,141.48112 263.09201,141.13006 264.0458,141.64098 C 265.0871,142.19878 265.90997,141.18695 265.90997,139.34872 C 265.90997,137.1898 265.59059,136.8104 263.77326,136.8104 C 261.87712,136.8104 260.35437,135.92205 260.35437,134.81588 C 260.35437,133.88645 261.4857,133.23565 263.10141,133.23565 C 264.12164,133.23565 264.29835,133.09432 264.21877,132.34197 C 264.13254,131.52678 264.31221,131.43757 266.26425,131.32626 C 268.59705,131.19324 269.80344,131.79966 268.58021,132.49041 C 267.52934,133.08384 268.14103,133.63285 269.85308,133.63285 C 272.84017,133.63285 272.8969,136.17472 269.92045,136.65112 C 267.87905,136.97785 267.65521,137.16957 267.34544,138.85662 C 267.00348,140.71906 267.86769,141.73289 269.49274,141.37564 C 270.09973,141.24219 270.70764,141.31325 270.84366,141.53353 C 271.13301,142.00214 269.8916,142.73738 269.22017,142.49507 C 268.54796,142.25247 268.18031,143.06741 268.45956,144.18106 C 268.74066,145.30208 269.3869,145.43268 270.06433,144.50539 C 270.44867,143.97929 270.69631,143.945 271.39777,144.32076 C 271.87157,144.57456 272.25922,145.03775 272.25922,145.35006 C 272.25922,146.09713 270.96735,146.77128 270.31228,146.36606 C 269.71289,145.99527 267.53545,146.9729 267.23911,147.74586 C 266.9118,148.59961 267.85673,149.91733 268.80093,149.92387 C 271.06376,149.93953 271.35475,151.88939 269.16127,152.33841 C 267.41031,152.69685 267.3425,152.81258 267.89739,154.49547 C 268.2438,155.54605 268.4967,155.82861 268.80997,155.51506 C 270.07023,154.25364 271.83576,156.33126 271.30438,158.4504 C 271.03759,159.51434 272.3468,162.62799 273.06094,162.62799 C 273.46781,162.62799 273.58273,156.2789 273.47791,139.59076 C 273.42345,130.92083 273.6668,128.40583 274.43915,129.65666 C 274.60139,129.91941 274.81932,133.46855 274.92342,137.54363 C 275.02753,141.61871 275.14032,144.98152 275.17407,145.01656 C 275.20782,145.05159 275.75861,144.66178 276.39805,144.15032 C 277.37148,143.3717 277.47893,143.12178 277.05834,142.61455 C 276.4848,141.92283 276.7904,141.17953 277.64833,141.17953 C 278.44482,141.17953 279.15924,139.46432 278.85992,138.27067 C 278.72442,137.73026 277.98847,136.91991 277.22225,136.46741 C 275.71462,135.57707 275.47679,134.81848 276.45143,134.00885 C 276.82964,133.69467 276.98674,133.15247 276.85351,132.62115 C 276.66431,131.86659 276.83462,131.71606 278.1177,131.50377 C 278.93326,131.36883 280.11098,131.25646 280.73484,131.25406 C 281.74861,131.25015 281.84256,131.35566 281.61905,132.24703 C 281.445,132.94113 281.63187,133.60033 282.23363,134.41499 C 282.93414,135.36336 283.00566,135.69734 282.6103,136.17415 C 282.34189,136.49786 281.73347,136.81813 281.25825,136.88585 C 279.97757,137.06837 279.80325,139.98815 281.00606,141.10977 C 281.58517,141.64979 281.7767,142.16277 281.60333,142.7095 C 281.42172,143.28223 281.5825,143.63985 282.16086,143.94967 C 283.42117,144.62479 283.1625,145.86107 281.56332,146.80548 C 279.61328,147.95709 279.7622,149.3837 281.90916,150.11853 C 283.21265,150.56467 283.45591,150.55413 283.65186,150.04303 C 283.93898,149.2941 283.4759,128.9615 283.16007,128.45 C 283.03174,128.24218 282.01674,128.07214 280.90452,128.07214 C 278.89956,128.07214 278.8885,128.079 279.60903,128.87591 C 280.1412,129.46449 280.21793,129.79763 279.89562,130.12023 C 279.21367,130.80281 278.11342,130.19921 278.39884,129.2991 C 278.53189,128.87949 278.49104,128.44357 278.30805,128.33037 C 277.74365,127.98123 277.07449,128.63803 277.14889,129.46811 C 277.19081,129.93572 276.9773,130.2567 276.62433,130.2567 C 276.25596,130.2567 276.02623,129.87824 276.02159,129.26372 C 276.01471,128.35338 275.86609,128.27073 274.23586,128.27073 C 272.62761,128.27073 272.46929,128.35489 272.57954,129.15115 C 272.67204,129.81917 272.44962,130.09482 271.65762,130.29379 C 270.3913,130.61191 269.46884,129.91182 270.19571,129.18428 C 271.05732,128.32188 270.69886,128.07214 268.59947,128.07214 C 266.6106,128.07214 266.5626,128.09707 267.40898,128.69045 C 268.52992,129.47631 268.52666,129.9943 267.39808,130.42235 C 266.19621,130.8782 265.39389,130.19058 265.70057,128.96751 C 265.91379,128.11717 265.82262,128.03001 264.83873,128.14365 C 263.97094,128.24388 263.73727,128.47705 263.73292,129.24713 C 263.72865,130.00436 263.43969,130.30651 262.44561,130.5932 C 260.91851,131.03362 259.93496,130.42636 260.06834,129.12541 C 260.14304,128.39673 259.95121,128.27073 258.76706,128.27073 C 257.55012,128.27073 257.37816,128.39368 257.37816,129.26372 C 257.37816,129.86789 257.1521,130.2567 256.80081,130.2567 C 256.48327,130.2567 256.11807,129.80986 255.98926,129.26372 C 255.72083,128.12557 254.53274,127.87357 254.72373,128.99529 C 254.79157,129.3938 254.63395,129.97689 254.37345,130.29107 C 253.74551,131.0484 252.70351,130.23988 253.02023,129.24107 C 253.32295,128.28643 252.82019,128.05673 251.05542,128.34337 L 249.56906,128.58479 L 249.79533,136.17304 C 249.91978,140.34657 250.02503,143.9893 250.02922,144.26798 C 250.03503,144.65437 250.32105,144.62756 251.23399,144.15503 C 252.23471,143.63706 252.36493,143.41157 252.02764,142.78077 C 251.80572,142.36572 251.62415,141.94585 251.62415,141.84773 C 251.62415,141.50168 253.82069,141.24819 254.92709,141.46655 C 255.84633,141.64797 256.00799,141.84516 255.82752,142.56487 C 255.6607,143.23014 255.84541,143.55055 256.59207,143.89106 C 258.22962,144.63787 257.89478,145.51054 255.20147,147.51526 L 254.21527,148.24932 L 255.70846,149.61829 C 257.24789,151.02965 257.39845,152.30095 256.02617,152.30095 C 255.36443,152.30095 254.40195,153.01473 254.40195,153.5055 C 254.40195,154.08768 257.66474,156.34352 258.00876,155.99918 C 258.50604,155.50144 258.44367,136.75182 257.94307,136.25054 C 257.81726,136.12457 256.97988,136.37666 256.08223,136.81075 C 254.68467,137.4866 254.43243,137.80132 254.32684,139.00087 C 254.15148,140.99311 253.43319,140.9074 253.28693,138.8768 C 253.19056,137.53884 252.97259,137.09703 252.27855,136.83291 C 251.79157,136.64759 251.15103,136.20399 250.85515,135.84714 C 250.39264,135.28934 250.44484,135.06232 251.22732,134.22863 C 251.9773,133.42959 252.0498,133.1532 251.63926,132.65809 C 251.2214,132.15413 251.31216,131.99213 252.2021,131.65346 C 253.59688,131.12268 256.6655,131.13538 256.99765,131.6733 C 257.14152,131.9063 256.92884,132.35326 256.52504,132.66656 C 255.82021,133.21341 255.83052,133.26981 256.78292,134.07725 L 257.77499,134.91832 L 257.89233,132.28961 C 257.98077,130.30833 258.1518,129.66091 258.58678,129.66091 C 259.08265,129.66091 259.16389,132.03705 259.16389,146.54164 C 259.16389,157.33784 259.30451,163.42237 259.55403,163.42237 C 259.76861,163.42237 260.40442,162.51328 260.96695,161.40217 z M 251.0413,129.94168 C 250.87143,129.54996 250.8438,129.118 250.97988,128.9818 C 251.38286,128.57845 251.7077,129.14502 251.52223,129.92772 C 251.3578,130.6216 251.33641,130.62222 251.0413,129.94168 z M 281.23746,129.74125 C 281.12985,129.56697 281.2086,129.16481 281.41245,128.84755 C 281.7365,128.34325 281.8297,128.34325 282.15375,128.84755 C 282.54728,129.46001 282.36415,130.05811 281.7831,130.05811 C 281.59061,130.05811 281.34507,129.91552 281.23746,129.74125 z M 276.99889,159.43408 C 277.45254,157.93918 277.93251,155.9215 278.0655,154.95033 C 278.2921,153.29561 278.23567,153.15021 277.1682,152.63811 C 275.78933,151.97663 275.60961,150.57344 276.88051,150.39209 C 278.1904,150.20518 279.26599,148.83173 278.74767,148.00787 C 278.5152,147.63836 277.98699,147.2735 277.57387,147.19708 C 277.16075,147.12065 276.42096,146.68734 275.92988,146.23416 L 275.03702,145.41018 L 274.99364,146.9689 C 274.80865,153.61563 274.78851,161.07076 274.9525,162.19725 C 275.13016,163.41765 275.20142,163.4835 275.66204,162.85298 C 275.94367,162.46749 276.54525,160.92898 276.99889,159.43408 z M 283.67923,157.33262 C 283.78375,152.19319 283.64141,151.41279 282.75533,152.26732 C 282.54799,152.46727 281.93191,152.6907 281.38627,152.7638 C 279.71121,152.98826 279.85193,155.58317 281.82546,160.86276 C 283.12024,164.32657 283.55379,163.50097 283.67923,157.33262 z M 105.59134,160.01985 L 105.59134,157.4117 L 104.50346,157.53738 C 103.90512,157.60651 103.36333,157.93938 103.29947,158.2771 C 103.15003,159.06749 104.71601,162.62799 105.21308,162.62799 C 105.42113,162.62799 105.59134,161.45432 105.59134,160.01985 z M 134.95664,161.23781 C 135.22834,160.91012 135.65519,160.64202 135.90518,160.64202 C 136.15517,160.64202 137.05341,160.1702 137.90127,159.59354 C 139.88639,158.24337 141.84531,157.78661 142.76473,158.45952 C 143.33785,158.87899 143.37038,159.07354 142.95181,159.57835 C 142.52814,160.08931 142.58491,160.2643 143.2984,160.64649 C 143.76769,160.89789 144.22565,161.02952 144.31608,160.939 C 144.40651,160.84848 144.278,159.7169 144.03049,158.42436 C 143.64849,156.4294 143.28155,155.76505 141.60216,154.02782 C 139.48649,151.83927 139.40398,150.91469 141.34985,151.20056 C 142.75484,151.40695 142.56532,151.19079 140.54912,150.28729 C 138.76689,149.48861 138.52809,149.59826 138.52809,151.21529 C 138.52809,152.30544 139.49444,153.52051 141.85215,155.39486 C 142.20647,155.67654 142.49637,156.08688 142.49637,156.30673 C 142.49637,156.52657 141.02315,157.40392 139.22254,158.25638 C 136.11127,159.72934 133.05546,161.82739 134.01519,161.83162 C 134.26128,161.83271 134.68493,161.56549 134.95664,161.23781 z M 91.839292,160.42629 C 91.710052,160.08918 91.519202,159.89856 91.415182,160.00267 C 91.311162,160.10679 91.343762,160.3826 91.487622,160.61559 C 91.878922,161.2493 92.107622,161.12619 91.839292,160.42629 z M 178.90689,159.28287 C 180.6552,158.72747 179.74655,158.33793 176.32599,158.17644 C 174.41625,158.08628 172.78365,158.06362 172.69798,158.12609 C 172.2296,158.46761 173.70839,159.42448 175.05706,159.65254 C 175.91637,159.79785 176.73693,160.10701 176.88051,160.33955 C 177.05153,160.61652 177.29231,160.55603 177.57857,160.16419 C 177.81891,159.83521 178.41666,159.43861 178.90689,159.28287 z M 211.30428,154.43 C 211.45307,152.2149 211.7341,149.84663 211.92878,149.16718 C 212.41642,147.46532 211.86645,147.61873 210.82391,149.47537 C 210.08654,150.78856 209.95718,151.63825 209.95718,155.16849 C 209.95718,159.19455 210.25227,160.63364 210.77776,159.17031 C 210.91856,158.77824 211.15549,156.64509 211.30428,154.43 z M 100.6363,151.95455 C 101.57494,149.82345 101.40826,148.45924 100.13496,147.85143 C 98.839722,147.23315 98.422442,145.20278 99.420242,144.37391 C 100.20555,143.72157 100.19751,143.20835 99.387952,142.31298 C 98.782262,141.64308 98.820942,141.52099 99.983202,140.43427 C 101.66042,138.86607 101.68038,137.18817 100.03575,136.01601 C 98.686622,135.05446 98.539492,134.23219 99.522102,133.14541 C 100.08792,132.51962 100.11671,132.26505 99.697682,131.59345 C 99.259902,130.89181 99.301872,130.76247 100.02914,130.57211 C 101.0986,130.29218 100.81498,129.43206 99.694392,129.55693 C 98.560802,129.68324 98.573022,128.56467 99.707042,128.39766 C 100.18102,128.32785 100.63728,128.06248 100.72096,127.80795 C 100.92353,127.19174 99.430862,126.74702 98.198832,127.05652 C 97.427902,127.25018 97.268442,127.47947 97.467682,128.10783 C 97.607832,128.54982 97.716892,134.48687 97.710022,141.30129 C 97.703152,148.1157 97.801002,154.11102 97.927472,154.62422 L 98.157412,155.55732 L 99.101882,154.42563 C 99.621352,153.8032 100.31183,152.69121 100.6363,151.95455 z M 104.76889,150.06282 C 105.50481,149.12639 105.92043,147.13743 105.38018,147.13743 C 105.26405,147.13743 104.54976,147.39642 103.79287,147.71296 C 102.58886,148.21649 102.41672,148.46491 102.41672,149.69892 C 102.41672,150.82687 102.56991,151.10937 103.18157,151.10937 C 103.60224,151.10937 104.31653,150.63842 104.76889,150.06282 z M 252.71321,149.44003 C 253.61414,148.69164 253.24378,147.69718 251.8091,147.0124 C 251.0378,146.64425 250.34688,146.34305 250.27371,146.34305 C 249.99371,146.34305 249.69367,149.1984 249.91344,149.77164 C 250.1613,150.41813 251.76432,150.22826 252.71321,149.44003 z M 105.59134,143.56269 C 105.59134,141.8384 105.52151,141.7708 104.37477,142.38508 C 103.43442,142.88881 103.40271,143.47257 104.26395,144.4251 C 105.25923,145.52589 105.59134,145.31011 105.59134,143.56269 z M 209.6215,144.05918 C 211.24738,142.28908 215.90961,134.73382 215.90961,133.86913 C 215.90961,133.14395 214.98603,134.33616 213.08403,137.5166 C 209.96089,142.73897 208.91092,143.95988 207.54287,143.95988 C 206.43448,143.95988 206.08593,144.3218 206.65028,144.88667 C 207.24665,145.48359 208.67976,145.08446 209.6215,144.05918 z M 179.31501,140.04931 C 179.42874,139.70747 179.23793,139.56434 178.78554,139.65212 C 178.39654,139.72759 177.99827,140.02984 177.90048,140.32377 C 177.78676,140.66561 177.97756,140.80875 178.42996,140.72097 C 178.81895,140.6455 179.21723,140.34325 179.31501,140.04931 z M 200.42723,137.68064 C 200.42199,137.10183 200.36799,137.09134 200.03647,137.60479 C 199.53425,138.38263 199.53425,138.90845 200.03647,138.59777 C 200.25473,138.46276 200.43057,138.05005 200.42723,137.68064 z M 174.16797,134.72057 C 174.2709,134.1856 174.02608,134.03004 173.08125,134.03004 C 171.78014,134.03004 171.56176,134.36537 172.34944,135.15377 C 173.00542,135.81036 174.00406,135.57246 174.16797,134.72057 z M 183.36969,135.02302 C 183.79086,134.51507 183.68103,134.42724 182.62462,134.42724 C 181.78777,134.42724 181.38555,134.62064 181.38555,135.02302 C 181.38555,135.35071 181.72083,135.61881 182.13061,135.61881 C 182.5404,135.61881 183.09798,135.35071 183.36969,135.02302 z M 183.75502,131.3758 C 184.03502,131.12219 182.86874,130.46834 182.12396,130.46138 C 181.76619,130.45803 181.0519,130.81766 180.53664,131.26053 L 179.59982,132.06578 L 181.58396,131.80543 C 182.67524,131.66224 183.65222,131.4689 183.75502,131.3758 z M 209.75596,131.65142 C 209.89498,131.42628 209.7357,131.35968 209.38255,131.49533 C 208.69508,131.75937 208.56929,132.04407 209.1401,132.04407 C 209.34548,132.04407 209.62262,131.86738 209.75596,131.65142 z M 174.63947,130.65389 C 174.36776,130.32621 173.74276,130.05811 173.25057,130.05811 C 172.75838,130.05811 172.13337,130.32621 171.86167,130.65389 C 171.43435,131.16925 171.62186,131.24968 173.25057,131.24968 C 174.87927,131.24968 175.06678,131.16925 174.63947,130.65389 z M 212.16552,130.01634 C 212.35783,129.70489 212.20161,129.7061 211.61448,130.02061 C 211.16379,130.26204 210.67426,130.65518 210.52664,130.89426 C 210.33433,131.2057 210.49055,131.20449 211.07768,130.88998 C 211.52837,130.64856 212.0179,130.25542 212.16552,130.01634 z M 88.641112,130.20942 C 88.776222,130.07418 88.643312,129.71985 88.345742,129.42201 C 88.045042,129.12103 87.903892,128.50091 88.027992,128.02595 C 88.189082,127.40938 88.096352,127.22239 87.695042,127.3545 C 86.953362,127.59866 86.733642,129.68243 87.404672,130.10822 C 88.040872,130.5119 88.316372,130.53445 88.641112,130.20942 z M 182.85199,127.12488 C 181.87754,126.2315 181.38555,125.43194 181.38555,124.74172 C 181.38555,123.66453 180.81216,123.33148 180.45204,124.1995 C 180.30878,124.5448 180.01161,124.42899 179.47617,123.8192 C 178.52916,122.7407 178.21092,123.00786 178.21092,124.88134 C 178.21092,125.67507 177.99961,126.53599 177.74134,126.79449 C 177.02371,127.51279 177.52429,127.70268 179.01063,127.27601 C 180.08091,126.96877 180.63866,127.04016 181.76214,127.62816 C 183.99141,128.79489 184.44505,128.58541 182.85199,127.12488 z M 171.91736,127.44752 C 172.75819,127.0123 173.62463,126.90088 174.77466,127.08006 L 176.42519,127.3372 L 175.23471,126.32878 C 174.57994,125.77414 173.88729,125.31392 173.69549,125.30607 C 173.50369,125.29821 172.65495,125.91736 171.80941,126.68196 C 170.10615,128.22217 170.12755,128.37392 171.91736,127.44752 z M 188.13163,126.64886 C 188.13163,125.94745 187.27735,126.0696 187.03208,126.80609 C 186.94569,127.06549 187.15774,127.27775 187.50332,127.27775 C 187.84889,127.27775 188.13163,126.99475 188.13163,126.64886 z M 200.2171,121.61774 C 199.23114,118.35045 194.35871,111.38628 192.36075,110.38865 C 191.70992,110.06367 191.1158,109.85946 191.04049,109.93484 C 190.96517,110.01023 192.00396,111.12247 193.34889,112.40651 C 195.4446,114.40731 200.03647,121.13324 200.03647,122.2021 C 200.03647,122.37223 200.13779,122.51142 200.26163,122.51142 C 200.38547,122.51142 200.36543,122.10926 200.2171,121.61774 z M 137.50009,104.79801 C 140.5193,101.77405 141.72214,100.87939 144.87734,99.310797 C 146.95077,98.280007 148.79226,97.294137 148.96953,97.119957 C 149.14681,96.945777 148.54157,96.683187 147.62454,96.536407 C 141.32444,95.528057 134.58267,89.541497 132.40701,83.023537 C 131.98555,81.760907 131.36154,82.862387 131.10859,85.315487 C 130.90535,87.286507 131.02752,87.859527 132.12803,90.097027 C 133.10064,92.074517 133.99437,93.143607 136.15165,94.910157 C 138.93463,97.189107 139.5193,98.307387 138.28833,98.996907 C 136.77894,99.842387 132.89722,104.13711 131.98333,105.97274 C 131.24623,107.45326 130.98835,108.603 130.98835,110.40881 C 130.98835,111.74948 131.11603,112.97416 131.27207,113.13036 C 131.42811,113.28654 132.08158,112.28859 132.72424,110.91269 C 133.58095,109.07851 134.85519,107.44706 137.50009,104.79801 z M 209.83717,92.492447 C 209.91448,92.257017 209.54439,91.866777 209.01475,91.625227 C 208.19549,91.251607 208.02273,91.297227 207.85715,91.930977 C 207.75011,92.340687 207.76969,92.783157 207.90066,92.914257 C 208.26719,93.281117 209.67918,92.973547 209.83717,92.492447 z M 156.90376,91.538527 C 158.49952,90.525597 160.5936,88.063347 160.19695,87.666337 C 160.12693,87.596257 159.37461,88.215827 158.52513,89.043177 C 157.67564,89.870517 156.3556,91.028297 155.59171,91.616007 C 153.71633,93.058877 154.58989,93.007287 156.90376,91.538527 z M 203.10363,92.481927 C 202.97177,92.349947 202.6295,92.335837 202.34304,92.450567 C 202.02648,92.577367 202.12051,92.671487 202.58279,92.690537 C 203.00111,92.707787 203.23549,92.613907 203.10363,92.481927 z M 143.25228,91.683387 C 142.79644,91.133627 142.85216,90.935387 143.64263,90.294717 L 144.56474,89.547347 L 143.23294,89.778817 C 141.20232,90.131737 140.90906,90.268357 140.90906,90.861367 C 140.90906,91.419557 142.25503,92.249237 143.23941,92.297817 C 143.69576,92.320347 143.69785,92.220757 143.25228,91.683387 z M 152.36478,90.868457 C 153.16343,90.350437 153.27338,90.026347 153.097,88.710117 C 152.84756,86.848707 153.19224,86.565187 154.98479,87.157327 C 156.69943,87.723727 157.73293,87.229457 158.3123,85.565937 C 159.51546,82.111357 155.28857,80.139317 152.27449,82.749007 C 151.86867,83.100367 151.02961,84.392327 150.40991,85.620017 C 149.78784,86.852397 148.43687,88.597827 147.39368,89.516917 C 145.86327,90.865277 145.61431,91.255747 146.08363,91.571567 C 146.87716,92.105577 151.20426,91.621187 152.36478,90.868457 z M 199.44123,91.133127 C 199.30634,90.914667 199.01741,90.735937 198.79915,90.735937 C 198.5809,90.735937 198.51269,90.914667 198.64758,91.133127 C 198.78247,91.351577 199.0714,91.530317 199.28966,91.530317 C 199.50791,91.530317 199.57612,91.351577 199.44123,91.133127 z M 204.24434,90.573187 C 204.36241,90.265217 204.18597,89.484747 203.85225,88.838817 C 203.51853,88.192887 203.07152,86.583117 202.85888,85.261557 C 202.19565,81.139487 201.00699,79.614507 198.45721,79.614507 C 197.1393,79.614507 195.27454,81.101447 195.27454,82.152357 C 195.27454,84.168677 196.73171,85.452417 198.75621,85.219637 C 199.59957,85.122667 199.64164,85.221467 199.40029,86.732177 C 199.09201,88.661837 199.55407,89.360267 201.8222,90.392957 C 203.74993,91.270677 203.97064,91.287087 204.24434,90.573187 z M 196.50381,89.183427 C 194.18016,87.010817 192.95345,82.523387 194.09801,80.382787 C 194.32395,79.960227 194.41686,79.614507 194.30449,79.614507 C 194.19212,79.614507 193.75147,80.298657 193.32528,81.134837 C 192.68126,82.398387 192.61516,82.943787 192.93393,84.363837 C 193.46944,86.749397 193.93643,87.567027 195.60585,89.041947 C 197.41508,90.640407 198.19318,90.762987 196.50381,89.183427 z M 214.91754,89.941537 C 215.20762,89.471747 214.81931,89.471747 213.72705,89.941537 C 212.96187,90.270657 212.96459,90.283907 213.80284,90.310817 C 214.28103,90.326177 214.78265,90.160007 214.91754,89.941537 z M 205.97848,88.538797 C 205.69229,88.193647 205.21736,87.072207 204.92308,86.046737 L 204.38803,84.182237 L 204.61328,85.969607 C 204.83662,87.741827 205.84637,89.819407 206.27557,89.389817 C 206.39836,89.266907 206.26467,88.883957 205.97848,88.538797 z M 147.82264,87.486887 C 148.60353,86.573737 149.23703,85.456637 149.23039,85.004427 C 149.21843,84.189647 149.21439,84.189397 148.78257,84.976627 C 148.54291,85.413537 147.61829,86.530647 146.72787,87.459077 C 145.61286,88.621707 145.3103,89.147157 145.75587,89.147157 C 146.11169,89.147157 147.04173,88.400037 147.82264,87.486887 z M 216.05008,86.981557 C 217.30196,85.820277 217.39128,84.461287 216.30643,83.080867 C 215.2564,81.744727 215.3004,81.571667 216.66373,81.675637 C 218.1884,81.791927 218.96901,81.077917 219.26781,79.293747 C 219.5329,77.710907 218.39454,73.227897 217.66578,72.984757 C 217.43888,72.909057 216.72864,73.945697 216.08746,75.288427 C 215.35338,76.825737 214.18621,78.388997 212.93548,79.510117 C 210.50555,81.688217 209.98935,82.556857 209.97125,84.498187 C 209.94184,87.650707 213.68168,89.178527 216.05008,86.981557 z M 142.8644,84.128677 C 144.14862,82.494537 143.9315,80.514367 142.08284,77.000987 C 141.20062,75.324347 140.34441,73.305057 140.18014,72.513687 C 139.80348,70.699137 139.03281,70.679017 138.07916,72.458827 C 137.04764,74.383977 137.14865,75.399527 138.52809,76.972067 C 139.92602,78.565687 139.99811,79.039627 138.92961,79.611997 C 137.82153,80.205567 137.55466,81.689157 138.29738,83.126737 C 139.45984,85.376767 141.52713,85.830297 142.8644,84.128677 z M 136.09828,83.439177 C 135.57213,82.283327 134.83657,81.987797 135.22911,83.089947 C 135.5433,83.972117 136.21224,84.845247 136.41694,84.640357 C 136.50314,84.554077 136.35974,84.013547 136.09828,83.439177 z M 164.37762,82.308327 C 164.65203,81.277677 164.72731,80.294627 164.54491,80.123767 C 164.36251,79.952907 164.13356,80.036527 164.03612,80.309597 C 163.76137,81.079607 162.81048,80.895737 162.3196,79.977687 C 162.07598,79.522057 161.77639,79.249637 161.65385,79.372297 C 161.5313,79.494947 161.61486,79.823057 161.83954,80.101397 C 162.06422,80.379757 162.37813,81.411807 162.53711,82.394857 C 163.03471,85.471727 163.54171,85.447887 164.37762,82.308327 z M 204.44623,82.677857 C 204.12215,82.353487 204.00476,82.397947 204.00476,82.845017 C 204.00476,83.634577 204.53837,84.168687 204.73558,83.576517 C 204.81925,83.325287 204.68904,82.920907 204.44623,82.677857 z M 150.44416,82.394857 C 150.91574,81.486567 150.9034,81.448367 150.29949,81.947007 C 149.93638,82.246827 149.63928,82.768147 149.63928,83.105487 C 149.63928,83.826667 149.75282,83.726437 150.44416,82.394857 z M 210.10266,80.060237 C 210.78655,79.322347 211.07822,78.800167 210.75084,78.899847 C 209.93365,79.148667 207.57256,82.303767 207.5921,83.120827 C 207.60197,83.533467 207.84494,83.333737 208.23362,82.593467 C 208.57772,81.938087 209.41879,80.798137 210.10266,80.060237 z M 203.79092,80.130997 C 202.46893,78.111517 201.59722,77.655477 199.0444,77.647837 C 197.73487,77.643917 196.39904,77.808037 196.07588,78.012567 C 195.69126,78.256007 196.2405,78.306737 197.66607,78.159477 C 200.13608,77.904307 202.65811,78.712567 203.07987,79.894467 C 203.42374,80.858117 204.07367,81.663897 204.31347,81.423877 C 204.42107,81.316187 204.18592,80.734387 203.79092,80.130997 z M 155.47669,79.616957 C 156.08559,79.618307 157.07485,79.875807 157.67506,80.189187 C 158.27526,80.502567 158.76633,80.611397 158.76633,80.431027 C 158.76633,79.812317 156.80986,78.820117 155.58986,78.820117 C 154.23579,78.820117 151.2266,80.200907 151.2266,80.822237 C 151.2266,81.040697 151.93377,80.858317 152.7981,80.416967 C 153.66243,79.975617 154.86779,79.615617 155.47669,79.616957 z M 134.83089,79.540037 C 134.70421,79.223177 134.61018,79.317297 134.59114,79.780007 C 134.57391,80.198707 134.6677,80.433307 134.79956,80.301327 C 134.93142,80.169337 134.94552,79.826757 134.83089,79.540037 z M 187.78586,78.881357 C 187.92307,78.738447 188.15321,77.521627 188.29727,76.177307 L 188.55922,73.733087 L 186.57631,73.717717 C 185.4857,73.709267 184.21736,73.500917 183.75776,73.254717 C 182.63924,72.655557 181.78237,73.373257 181.78237,74.909287 C 181.78237,76.262087 180.85035,76.789607 179.71457,76.079647 C 179.2505,75.789567 178.75687,75.736817 178.47745,75.947457 C 178.22173,76.140227 177.15619,76.325707 176.10958,76.359637 C 174.3312,76.417297 174.15333,76.330867 173.3918,75.038977 C 172.59634,73.689517 172.51644,73.656597 170.03674,73.656597 C 168.56447,73.656597 167.49656,73.827977 167.49656,74.064237 C 167.49656,74.288437 167.70794,75.587197 167.96629,76.950387 L 168.43603,79.428897 L 177.98621,79.285047 C 183.23881,79.205937 187.64865,79.024267 187.78586,78.881357 z M 169.97673,77.751937 C 170.35868,77.652037 170.98368,77.652037 171.36563,77.751937 C 171.74758,77.851837 171.43508,77.933587 170.67118,77.933587 C 169.90729,77.933587 169.59479,77.851837 169.97673,77.751937 z M 183.29528,77.754407 C 183.58174,77.639667 183.92401,77.653777 184.05587,77.785757 C 184.18773,77.917747 183.95335,78.011617 183.53503,77.994367 C 183.07275,77.975317 182.97872,77.881197 183.29528,77.754407 z M 192.50796,78.607987 C 192.91494,78.117157 192.91603,77.816917 192.51354,77.064167 C 192.10345,76.297197 192.12496,75.750397 192.63352,74.013927 C 192.97432,72.850257 193.18272,71.827647 193.09661,71.741467 C 192.71779,71.362297 191.57884,74.854967 191.40352,76.933457 C 191.20695,79.263647 191.54249,79.772377 192.50796,78.607987 z M 162.73074,76.139067 C 162.72861,75.756767 162.29192,74.508907 161.76032,73.366057 C 160.59999,70.871477 158.77199,69.538147 156.98061,69.879727 C 154.34477,70.382327 154.21006,70.345717 154.0704,69.088877 C 153.87454,67.326237 152.94308,66.507117 151.13457,66.507117 C 149.94351,66.507117 149.30598,66.779617 148.41827,67.668147 C 147.09892,68.988717 147.0032,69.627527 147.87256,71.310237 C 148.63097,72.778187 149.73222,73.214117 153.87397,73.685887 C 157.06238,74.049067 159.78109,74.958877 161.34572,76.186287 C 162.38378,77.000617 162.73548,76.988627 162.73074,76.139067 z M 214.71912,74.539387 C 214.71912,73.761367 214.58403,73.916397 213.75789,75.642567 L 213.09255,77.032747 L 213.90584,76.095067 C 214.35314,75.579327 214.71912,74.879277 214.71912,74.539387 z M 132.38938,73.949937 C 132.89435,71.558417 135.06214,68.083697 137.40178,65.915597 C 138.67602,64.734797 139.71858,63.559727 139.71858,63.304327 C 139.71858,62.970467 138.60901,62.884597 135.77014,62.998717 C 133.59849,63.086017 131.71638,63.262857 131.58768,63.391687 C 131.16101,63.818737 130.87592,70.292347 131.16485,72.992847 C 131.46195,75.769667 131.9282,76.134087 132.38938,73.949937 z M 202.61586,74.450987 C 201.5236,73.981197 201.13529,73.981197 201.42537,74.450987 C 201.56026,74.669447 202.06188,74.835627 202.54007,74.820257 C 203.37832,74.793347 203.38104,74.780107 202.61586,74.450987 z M 199.7167,72.465027 C 200.74412,72.465027 202.48464,72.658197 203.58452,72.894297 C 207.11882,73.652967 209.95146,71.844317 209.9557,68.826287 C 209.95724,67.725627 208.02649,65.712737 206.9692,65.712737 C 205.68662,65.712737 204.45095,66.688097 203.8753,68.154897 L 203.26334,69.714237 L 201.82119,68.940577 C 200.13501,68.036007 198.52311,68.312467 196.95902,69.774477 C 195.86788,70.794397 194.8008,72.652837 195.12182,72.974157 C 195.23867,73.091107 195.90002,73.024407 196.59148,72.825917 C 197.28294,72.627427 198.68929,72.465027 199.7167,72.465027 z M 215.3895,70.975547 C 215.28968,70.593247 215.20801,70.906037 215.20801,71.670637 C 215.20801,72.435237 215.28968,72.748027 215.3895,72.365727 C 215.48931,71.983427 215.48931,71.357847 215.3895,70.975547 z M 137.33761,70.829367 C 137.33761,70.610907 137.15903,70.542637 136.94078,70.677647 C 136.72252,70.812667 136.54395,71.101857 136.54395,71.320327 C 136.54395,71.538787 136.72252,71.607057 136.94078,71.472037 C 137.15903,71.337027 137.33761,71.047817 137.33761,70.829367 z M 212.33815,69.836387 C 212.33815,69.275527 212.16546,68.950227 211.94132,69.088877 C 211.72307,69.223897 211.5445,69.781197 211.5445,70.327337 C 211.5445,70.888187 211.71719,71.213497 211.94132,71.074847 C 212.15958,70.939837 212.33815,70.382517 212.33815,69.836387 z M 167.15384,69.525807 C 167.3925,69.001517 168.30092,68.250677 169.17254,67.857277 C 170.04417,67.463867 171.01936,66.741677 171.33963,66.252427 C 171.65991,65.763177 172.27261,65.307537 172.70119,65.239907 C 173.79496,65.067297 173.45704,64.332087 172.2585,64.276767 C 171.71286,64.251567 171.08785,64.178887 170.8696,64.115237 C 170.65134,64.051587 169.78064,63.982827 168.9347,63.962437 C 167.8351,63.935927 167.26947,63.698897 166.95056,63.130967 C 166.70522,62.694057 166.46416,62.266427 166.41487,62.180687 C 166.36558,62.094937 166.08886,62.221157 165.79994,62.461167 C 165.51101,62.701167 164.47991,63.009637 163.50859,63.146667 C 160.50552,63.570307 160.50089,63.584017 162.60673,65.819097 C 163.68363,66.962117 164.90575,68.478187 165.32255,69.188167 C 166.22701,70.728857 166.57684,70.793357 167.15384,69.525807 z M 190.35952,69.199717 C 190.72305,68.496087 192.00146,66.890977 193.20043,65.632827 C 194.98313,63.762127 195.25892,63.298647 194.71392,63.089307 C 193.68155,62.692787 188.46961,63.325777 187.56919,63.957037 C 187.12664,64.267297 186.37972,64.521147 185.90936,64.521147 C 185.43901,64.521147 184.83188,64.789257 184.56017,65.116937 C 183.88544,65.930697 184.63714,66.795307 186.84164,67.741137 C 187.9052,68.197447 188.68165,68.844677 188.92079,69.474247 C 189.4131,70.770317 189.56284,70.741747 190.35952,69.199717 z M 195.32516,68.592387 C 195.81876,67.962417 195.80472,67.948357 195.17533,68.442427 C 194.79338,68.742237 194.48088,69.055027 194.48088,69.137507 C 194.48088,69.464417 194.80675,69.254007 195.32516,68.592387 z M 211.35986,66.136587 C 211.01369,65.466557 210.56352,64.918347 210.35948,64.918347 C 210.15544,64.918347 210.38324,65.684517 210.8657,66.620957 C 211.34817,67.557397 211.79834,68.105617 211.86608,67.839207 C 211.93383,67.572807 211.70603,66.806627 211.35986,66.136587 z M 215.67874,68.251987 C 216.62352,67.889117 216.43346,66.945207 215.31269,66.434077 C 214.04127,65.854257 213.77561,66.140547 214.37113,67.448767 C 214.90544,68.622527 214.8318,68.577297 215.67874,68.251987 z M 141.01365,67.239767 C 141.50177,66.987357 142.16899,66.655407 142.49637,66.502107 C 143.27277,66.138547 143.50803,64.918347 142.80173,64.918347 C 142.50116,64.918347 141.64946,65.543917 140.90906,66.308517 C 139.50019,67.763437 139.52768,68.008187 141.01365,67.239767 z M 178.93666,66.557527 C 179.28801,66.334587 178.89327,66.146307 177.75377,65.993317 C 175.89222,65.743407 175.32193,65.942587 176.23827,66.522627 C 176.96522,66.982797 178.24049,66.999287 178.93666,66.557527 z M 149.24246,64.634857 C 149.24246,64.561097 148.70674,64.778037 148.05197,65.116937 C 147.3972,65.455847 146.86149,65.912627 146.86149,66.132017 C 146.86149,66.351397 147.3972,66.134457 148.05197,65.649927 C 148.70674,65.165387 149.24246,64.708597 149.24246,64.634857 z M 206.09566,63.466227 C 205.82699,63.357427 205.29128,63.350807 204.90517,63.451517 C 204.51907,63.552217 204.73889,63.641237 205.39366,63.649327 C 206.04842,63.657427 206.36432,63.575027 206.09566,63.466227 z M 179.59982,61.343607 C 179.73471,61.125147 179.47739,60.946407 179.028,60.946407 C 178.5786,60.946407 178.21092,61.125147 178.21092,61.343607 C 178.21092,61.562057 178.46824,61.740787 178.78274,61.740787 C 179.09724,61.740787 179.46493,61.562057 179.59982,61.343607 z M 322.09885,261.57087 C 321.76739,261.20429 321.21114,260.22148 320.86275,259.38689 C 320.27681,257.98325 320.27963,257.81379 320.90029,257.12733 C 321.35127,256.62855 321.76823,256.49554 322.17198,256.7217 C 322.74112,257.0405 324.24271,260.41994 324.2434,261.38358 C 324.24395,262.14913 322.74041,262.28045 322.09885,261.57087 z M 38.924192,260.37218 C 36.404252,260.10298 36.328122,259.87173 37.662462,256.53937 C 38.138792,255.34978 38.335042,254.31374 38.142972,254.00267 C 37.964402,253.71347 36.861762,253.38929 35.692652,253.28226 C 34.523552,253.17523 33.343792,252.90965 33.070972,252.69206 C 32.151392,251.9587 32.726492,248.27012 33.870772,247.56226 C 34.424442,247.21975 36.549992,247.58814 37.262992,248.15018 C 37.549742,248.3762 37.755652,249.20006 37.720572,249.98095 C 37.612762,252.38153 37.621792,252.39375 39.504742,252.39375 C 41.762182,252.39375 44.212432,251.4191 48.448072,248.83635 C 52.585632,246.31339 52.926672,245.90621 52.587592,243.89414 L 52.326592,242.34543 L 54.725492,242.56316 C 58.034992,242.86352 58.117512,242.94708 57.829372,245.70641 C 57.412452,249.69887 57.330032,249.84222 54.920292,250.76522 C 52.895362,251.54083 45.921952,255.4225 43.742722,256.98707 C 42.942912,257.56129 42.842882,257.88177 43.052962,259.19676 C 43.330082,260.93137 43.556202,260.86699 38.924192,260.37218 z M 180.4504,255.37294 C 179.62972,254.55151 179.34266,251.73347 179.26739,243.75969 C 179.21108,237.79339 179.28835,236.85087 179.88278,236.25368 C 180.44521,235.68864 180.73637,235.65 181.5693,236.02986 C 182.16376,236.30096 182.57603,236.81777 182.57603,237.29187 C 182.57603,238.25203 183.18486,238.3554 183.53047,237.45393 C 183.6863,237.04744 184.06465,236.88859 184.56499,237.01955 C 185.14057,237.1702 185.35383,237.02899 185.35383,236.49719 C 185.35383,236.09633 185.62169,235.50025 185.94907,235.17257 C 186.73795,234.38296 186.69968,234.12284 185.79462,234.12284 C 185.38229,234.12284 184.66912,233.81005 184.2098,233.42775 C 183.38061,232.7376 183.37977,232.71639 184.09218,230.44308 C 184.48682,229.18381 185.00716,227.95585 185.2485,227.71429 C 185.85202,227.11021 205.02372,227.70556 207.12317,228.39357 C 207.56239,228.53752 207.54403,228.75073 207.02396,229.54518 C 206.67293,230.08142 206.38573,230.96487 206.38573,231.50842 C 206.38573,232.05197 206.16923,232.9723 205.90461,233.55359 L 205.42349,234.6105 L 200.84505,234.46597 L 196.26661,234.32144 L 196.13498,235.71002 C 196.06258,236.47375 195.8164,237.32407 195.58791,237.59963 C 195.29632,237.95131 195.49814,237.93155 196.26495,237.53336 C 197.82318,236.7242 198.5524,237.1173 198.22879,238.59202 C 198.04568,239.42649 198.10126,239.70017 198.41449,239.50641 C 199.04823,239.11437 201.39647,239.96538 202.23255,240.89009 C 203.17851,241.93632 203.36929,241.89413 205.09511,240.25711 C 205.91408,239.48028 207.50093,238.23333 208.62145,237.48611 C 210.65617,236.12925 211.91398,234.51034 210.45772,235.12268 C 207.9074,236.19505 207.25868,235.59062 207.3591,232.23565 C 207.41188,230.47233 207.61754,229.94744 208.68936,228.84059 C 209.38666,228.1205 209.95718,227.15011 209.95718,226.68417 C 209.95718,226.10805 210.24283,225.79641 210.85005,225.7101 C 211.63738,225.59818 211.52012,225.42264 209.85797,224.22497 C 207.85959,222.785 207.60086,222.32505 208.57811,221.9497 C 210.02086,221.39556 221.86203,230.55003 221.86203,232.21957 C 221.86203,233.08527 220.95154,233.15175 220.27472,232.33547 C 219.63809,231.56767 219.08423,231.57348 219.08423,232.34793 C 219.08423,232.68248 218.81637,233.05907 218.48899,233.18482 C 217.60513,233.5243 217.76576,234.0815 218.8961,234.59699 C 220.63205,235.38867 219.75288,235.83114 216.2861,235.91054 C 214.44211,235.95278 212.41247,236.20033 211.77579,236.46066 L 210.6182,236.93401 L 211.47817,237.53691 C 212.17256,238.02372 212.33814,238.53701 212.33808,240.20257 C 212.33797,243.72555 210.90034,250.2363 209.27155,254.09036 C 208.60541,255.66661 207.48841,256.24626 206.01754,255.77899 C 204.93689,255.43569 204.98002,254.64181 206.24632,251.56854 C 207.49793,248.53094 208.75836,243.98853 208.47918,243.52167 C 208.36985,243.33884 207.72017,243.71399 207.03544,244.35533 C 203.34404,247.81284 201.94622,247.74561 197.65551,243.90421 C 195.27562,241.77354 194.45757,240.51058 194.73661,239.39778 C 194.88612,238.80152 194.78682,238.49197 194.44602,238.49197 C 193.50796,238.49197 190.90942,236.41285 190.90942,235.66229 C 190.90942,235.11004 191.30878,234.86269 192.51115,234.67026 C 193.53145,234.50695 194.26846,234.12292 194.54146,233.61234 C 194.9145,232.91467 194.87406,232.84972 194.22942,233.11115 C 193.82208,233.27634 192.10035,233.59525 190.40335,233.81982 C 187.64965,234.18425 187.34339,234.30858 187.55506,234.97612 C 187.88602,236.01985 187.00154,238.49197 186.29714,238.49197 C 185.864,238.49197 185.7654,238.82287 185.91251,239.78285 C 186.0213,240.49283 186.22048,243.39731 186.35511,246.23725 C 186.48975,249.07718 186.75338,252.20508 186.94094,253.18813 C 187.19856,254.53833 187.1481,255.11289 186.73464,255.53718 C 185.46375,256.84138 184.46403,254.06352 183.95952,247.82602 C 183.50094,242.1564 183.30232,240.87513 182.88201,240.87513 C 182.57925,240.87513 182.52356,243.0459 182.69441,248.18753 C 182.90576,254.54819 182.858,255.53043 182.32743,255.73421 C 181.41235,256.08569 181.103,256.02614 180.4504,255.37294 z M 208.7667,240.65309 C 208.7667,240.31252 208.58812,240.14433 208.36987,240.27934 C 208.15161,240.41435 207.97304,240.69301 207.97304,240.89858 C 207.97304,241.10414 208.15161,241.27233 208.36987,241.27233 C 208.58812,241.27233 208.7667,240.99367 208.7667,240.65309 z M 215.14841,234.12284 C 216.15389,234.12284 216.11872,233.46842 215.08343,232.91384 C 214.41229,232.55433 214.15401,232.60761 213.70715,233.19775 C 212.97038,234.17077 212.99228,234.65862 213.75951,234.36394 C 214.10474,234.23133 214.72974,234.12284 215.14841,234.12284 z M 196.46502,231.34249 C 196.46502,231.12402 196.15252,230.94802 195.77057,230.95138 C 195.17709,230.95657 195.16267,231.01343 195.67136,231.34249 C 196.42026,231.8269 196.46502,231.8269 196.46502,231.34249 z M 210.75084,229.15792 C 210.75084,228.83023 210.57227,228.56213 210.35401,228.56213 C 210.13575,228.56213 209.95718,228.83023 209.95718,229.15792 C 209.95718,229.48561 210.13575,229.75371 210.35401,229.75371 C 210.57227,229.75371 210.75084,229.48561 210.75084,229.15792 z M 215.09298,228.78843 C 215.46973,228.33406 215.40001,228.13248 214.74474,227.78147 C 214.01706,227.39167 213.92546,227.45518 213.92546,228.34956 C 213.92546,229.47344 214.38254,229.64524 215.09298,228.78843 z M 191.45075,255.37529 C 191.17751,254.66259 192.62337,249.73789 193.43005,248.63367 C 193.8463,248.06389 194.45891,247.92926 196.4322,247.9739 C 199.50124,248.04335 204.18995,249.07816 204.8069,249.82223 C 205.45005,250.59789 204.65189,252.87515 203.12799,254.61238 C 201.55485,256.40574 199.82991,256.46017 197.91455,254.77691 C 197.16881,254.12154 196.46017,253.58533 196.33979,253.58533 C 196.2194,253.58533 196.0644,254.07686 195.99534,254.67761 C 195.87819,255.69673 195.72994,255.77794 193.78199,255.89011 C 192.15922,255.98354 191.63998,255.86888 191.45075,255.37529 z M 158.12708,255.18217 C 157.66637,254.99583 157.17578,254.54697 157.03688,254.18468 C 156.80927,253.59099 156.68104,253.60731 155.73769,254.35004 C 154.69506,255.17093 152.27575,255.45944 151.37661,254.87013 C 150.97912,254.60961 149.24246,251.16601 149.24246,250.63837 C 149.24246,250.19817 151.48384,249.29566 152.81391,249.2003 C 156.32071,248.94887 158.7734,249.22326 159.49749,249.94802 C 160.39544,250.84681 160.93917,254.26935 160.30543,255.03366 C 159.80272,255.63994 159.33742,255.67167 158.12708,255.18217 z M 164.11966,255.16785 C 163.71624,254.5145 164.21304,252.37762 165.11091,250.90427 C 165.75689,249.84425 166.14565,249.61339 167.28475,249.61339 C 168.94534,249.61339 169.24034,250.35667 168.78237,253.38673 L 168.4822,255.3727 L 166.43754,255.49152 C 165.23715,255.56128 164.28006,255.42763 164.11966,255.16785 z M 170.48148,255.18821 C 170.15628,254.66155 170.64876,243.51565 171.10417,241.09517 C 171.58635,238.53244 172.67617,236.34024 173.54819,236.17898 C 174.13746,236.07001 174.24455,236.3708 174.25526,238.16495 C 174.26687,240.11051 174.3144,240.21778 174.8505,239.50834 C 175.17094,239.08429 175.43312,238.34446 175.43312,237.86427 C 175.43312,236.63018 176.74235,235.12262 177.54601,235.4313 C 178.12401,235.6533 178.19284,236.77391 178.17363,245.6482 L 178.15205,255.61573 L 176.69516,255.49422 C 174.90539,255.34494 174.75364,254.83315 174.68641,248.71971 C 174.66059,246.3713 174.48378,244.44987 174.2935,244.44987 C 174.10322,244.44987 173.81873,246.95219 173.6613,250.01059 L 173.37507,255.57129 L 172.04654,255.57129 C 171.31586,255.57129 170.61158,255.3989 170.48148,255.18821 z M 211.0435,255.07811 C 210.93067,254.7838 211.25869,252.94232 211.77243,250.98592 C 212.35309,248.77469 212.81024,245.58068 212.98065,242.54424 C 213.21038,238.45097 213.36875,237.59861 213.95821,237.28285 C 214.894,236.78157 215.81739,237.17824 216.14898,238.22397 C 216.9389,240.71506 216.02034,251.49368 214.80657,253.97634 C 214.23766,255.13997 213.88427,255.39274 212.68627,255.49296 C 211.75582,255.57079 211.17628,255.42445 211.0435,255.07811 z M 217.179,255.23968 C 216.76714,254.97153 216.74707,254.22974 217.07979,251.57379 C 217.30921,249.74243 217.49692,245.76863 217.49692,242.7431 C 217.49692,237.71996 217.55724,237.25329 218.19137,237.37056 C 218.57332,237.4412 219.24252,238.21394 219.67848,239.08776 C 220.81169,241.35911 221.00274,250.46371 219.97852,253.38673 C 219.27447,255.39603 218.35445,256.00497 217.179,255.23968 z M 140.92632,254.66863 C 139.48914,253.94069 138.82307,250.34352 138.76998,243.02327 C 138.72239,236.46209 138.93984,235.71161 140.88848,235.71161 C 141.53241,235.71161 142.34575,236.12434 142.92324,236.74416 C 144.20857,238.12371 147.77496,240.47794 148.57949,240.47794 C 149.58259,240.47794 151.66272,239.06225 152.17269,238.03249 C 152.49028,237.3912 153.04173,237.06235 153.94613,236.97495 C 155.00515,236.8726 155.20251,236.71916 154.96789,236.18057 C 154.80796,235.81341 154.59567,234.93358 154.49613,234.22539 C 154.30653,232.87644 154.26766,232.8674 151.62343,233.55767 C 151.29604,233.64314 150.50869,233.57333 149.87376,233.40254 C 148.93297,233.14948 148.61971,232.75 148.18092,231.2438 C 147.88479,230.22728 147.46678,229.28688 147.252,229.15401 C 147.03722,229.02115 146.86149,228.56551 146.86149,228.14149 C 146.86149,227.45692 147.15235,227.37055 149.4576,227.37055 C 150.88546,227.37055 153.412,227.08972 155.07213,226.74651 C 156.73226,226.40328 158.5253,226.23167 159.05669,226.36517 C 159.58806,226.49866 162.21439,226.61895 164.89298,226.63249 C 167.57156,226.64604 169.97704,226.78944 170.23848,226.95117 C 170.82673,227.31506 171.98833,231.63078 171.70026,232.38216 C 171.45158,233.03081 170.13909,233.09932 169.05778,232.52009 C 168.37944,232.15671 168.29021,232.2453 168.29021,233.28199 C 168.29021,233.92718 168.19647,234.69957 168.0819,234.99841 C 167.94569,235.35369 168.32344,235.67427 169.17318,235.92459 C 170.40535,236.28754 170.46982,236.40013 170.41584,238.09478 C 170.38454,239.07783 170.22616,241.08862 170.06389,242.56321 C 169.69041,245.95725 168.9553,246.10254 168.05437,242.9604 C 167.69422,241.70428 167.06422,240.35678 166.65439,239.96597 C 166.24456,239.57517 165.90924,238.88863 165.90924,238.44034 C 165.90924,237.99204 165.28124,236.89091 164.51368,235.99336 C 163.74612,235.09582 163.17951,234.17372 163.25455,233.94425 C 163.32959,233.71479 163.95999,233.47086 164.65546,233.40219 C 165.68063,233.30096 166.03237,233.00798 166.51404,231.85412 C 166.8408,231.07136 167.40139,230.21629 167.7598,229.95397 C 168.11822,229.69166 168.28918,229.27898 168.13972,229.03693 C 167.65021,228.24417 166.71934,229.01085 166.24423,230.59808 C 165.73637,232.29472 165.40639,232.45797 162.13937,232.62887 C 160.37872,232.72097 160.16808,232.82661 160.26929,233.5667 C 160.39464,234.48333 157.62055,237.30039 156.59256,237.30039 C 156.173,237.30039 156.0628,237.6082 156.20151,238.39267 C 156.35365,239.25311 155.92843,240.13768 154.19819,242.56011 C 152.99015,244.25146 151.58002,245.91186 151.06458,246.2499 C 150.20858,246.8113 149.95254,246.79801 148.1083,246.09661 C 146.99778,245.67426 145.33491,244.77349 144.41302,244.09491 C 142.23684,242.49305 141.30589,242.47455 141.30589,244.03313 C 141.30589,245.63819 141.9942,248.91172 142.96917,251.94358 C 143.64497,254.04509 143.69049,254.53061 143.23858,254.81715 C 142.5082,255.28025 142.07944,255.2527 140.92632,254.66863 z M 158.54004,232.97642 C 158.65959,232.7828 158.36543,232.52178 157.88634,232.39638 C 156.88634,232.13463 156.58972,232.29821 156.96429,232.90483 C 157.28148,233.41854 158.24015,233.46209 158.54004,232.97642 z M 155.39329,230.5481 C 155.52818,230.32964 155.36015,230.1509 155.01989,230.1509 C 154.67962,230.1509 154.40122,230.32964 154.40122,230.5481 C 154.40122,230.76656 154.56926,230.94529 154.77463,230.94529 C 154.98,230.94529 155.2584,230.76656 155.39329,230.5481 z M 145.10398,254.27997 C 144.78205,253.78819 144.16321,251.86678 143.72878,250.01014 C 143.08831,247.27298 143.03456,246.53704 143.44464,246.11955 C 144.31816,245.23023 145.51321,246.73641 147.03855,250.64912 C 147.81419,252.63873 148.4488,254.47078 148.4488,254.72035 C 148.4488,254.97355 147.83899,255.17411 147.06905,255.17411 C 146.07588,255.17411 145.5253,254.92358 145.10398,254.27997 z M 188.55978,254.54522 C 188.57882,254.0825 188.67286,253.98839 188.79953,254.30524 C 188.91416,254.59196 188.90007,254.93455 188.76821,255.06653 C 188.63634,255.19851 188.54255,254.96392 188.55978,254.54522 z M 136.04272,254.21848 C 135.71217,253.88762 135.1425,251.98727 134.7768,249.99546 C 134.22673,246.99953 134.18487,245.77905 134.53446,242.92948 C 134.76687,241.03499 135.13857,238.83404 135.36045,238.03848 C 136.12856,235.28442 138.04314,234.93302 137.53593,237.63918 C 137.07712,240.0871 137.31182,246.50675 137.98149,249.82649 C 138.90618,254.41039 138.89717,254.5585 137.68512,254.69917 C 137.11236,254.76565 136.37327,254.54933 136.04272,254.21848 z M 314.45267,253.87213 C 310.18487,250.42972 301.85896,245.98455 299.96152,246.13534 C 298.84921,246.22373 298.58766,246.05297 297.98838,244.84707 C 296.88383,242.62442 297.03709,242.26211 299.47727,241.32745 C 302.18642,240.28976 302.67804,240.27401 303.17793,241.20892 C 303.72737,242.23652 309.03093,245.83206 312.15692,247.29624 C 314.06181,248.18847 315.3124,248.51223 316.7304,248.48026 C 318.68005,248.43629 318.68308,248.43824 319.66039,250.36864 C 320.57831,252.18175 320.59687,252.33824 319.96104,252.90363 C 319.29404,253.49674 316.51353,254.77691 315.89232,254.77691 C 315.71746,254.77691 315.06962,254.36976 314.45267,253.87213 z M 326.53439,253.74416 C 326.14916,252.8979 326.19406,252.37794 326.78302,250.86451 C 327.17833,249.84871 327.59183,248.43671 327.70189,247.72673 C 327.92629,246.27926 327.63365,246.16287 325.61067,246.89506 C 324.51696,247.29093 324.18454,247.24271 323.20153,246.54569 C 322.2072,245.84063 317.90542,243.607 309.86419,239.62046 C 308.37864,238.88398 306.96594,238.49197 305.79743,238.49197 C 304.09501,238.49197 303.95023,238.40077 302.85385,236.63766 C 302.21965,235.61778 301.78436,234.56525 301.88656,234.29871 C 302.07112,233.81728 304.98675,232.53406 305.89603,232.53406 C 306.15734,232.53406 307.67186,233.40868 309.26163,234.47764 C 313.77692,237.51373 320.44053,240.47695 324.59037,241.29413 C 326.96478,241.7617 327.1032,241.85539 328.015,243.61212 C 328.53761,244.61903 329.33028,245.97907 329.77648,246.63444 C 330.22268,247.28981 330.58893,248.06116 330.59036,248.34855 C 330.59491,249.25746 327.88626,254.77691 327.43567,254.77691 C 327.19853,254.77691 326.79295,254.31218 326.53439,253.74416 z M 132.84849,254.1232 C 132.43109,253.70542 132.52396,248.02462 132.94818,248.02462 C 133.30049,248.02462 133.62922,249.72685 133.86104,252.75157 C 133.95894,254.02897 133.44709,254.72234 132.84849,254.1232 z M 82.575302,250.16631 C 75.612562,248.83848 72.018142,247.0334 67.675222,242.68364 C 65.918712,240.92436 63.737992,238.38768 62.829182,237.04655 C 60.915462,234.22253 56.000402,223.51288 55.016172,220.02246 C 54.646572,218.71173 54.260082,217.3409 54.157312,216.97618 C 54.043732,216.57311 54.666912,215.52817 55.746432,214.31157 C 59.442432,210.14625 60.732422,206.68962 60.743552,200.9214 C 60.750342,197.40077 59.701332,192.59157 58.324892,189.83297 C 56.870772,186.9187 53.092722,182.36897 50.489592,180.39729 C 49.115892,179.35682 47.824102,178.60936 47.618952,178.73626 C 47.150382,179.02612 47.193722,189.08286 47.676212,192.02031 C 47.873562,193.22182 48.215902,195.72414 48.436982,197.58103 C 48.954552,201.92816 50.526382,209.86663 51.807752,214.60497 C 52.890942,218.61047 53.055292,219.82788 52.428092,219.20011 C 51.523002,218.29418 48.988912,208.39684 47.502982,199.96418 C 45.914222,190.94797 45.303952,171.10285 46.385372,163.62097 C 46.669552,161.65486 47.175322,158.08011 47.509322,155.67709 C 48.803222,146.36779 52.205112,133.9695 55.955552,124.89459 C 59.421012,116.50923 62.356682,111.05782 67.078102,104.24052 C 71.713792,97.547027 71.957532,97.091027 70.899792,97.091027 C 69.966882,97.091027 67.491082,100.33288 67.032812,102.15453 C 66.797272,103.09079 66.415422,103.97382 66.184262,104.11682 C 65.231902,104.70596 62.775572,100.83704 61.374832,96.541627 C 61.167982,95.907297 60.866302,95.829917 59.389782,96.032487 C 57.971672,96.227047 57.396802,96.100287 56.291152,95.349287 C 52.877892,93.030857 49.303152,91.133127 48.349202,91.133127 C 47.774572,91.133127 47.159962,90.909697 46.983382,90.636627 C 46.488272,89.870937 45.728552,80.689727 46.100742,79.969867 C 46.282052,79.619167 47.821892,78.841967 49.522582,78.242747 C 51.223282,77.643537 53.840462,76.619227 55.338542,75.966507 C 58.407142,74.629517 59.304462,74.847377 58.128432,76.643857 C 57.418232,77.728767 57.418972,77.731497 58.743212,78.915797 C 59.994082,80.034477 60.200472,80.086637 62.393532,79.838287 C 63.672012,79.693517 64.718032,79.690407 64.718032,79.831387 C 64.718032,79.972377 64.405532,80.621017 64.023582,81.272807 C 63.342382,82.435257 63.347222,82.472607 64.277312,83.229947 C 64.927762,83.759607 65.488452,83.909617 66.063032,83.707697 C 69.508652,82.496867 71.855122,85.052227 71.866792,90.028077 C 71.872502,92.461407 72.438582,94.310027 73.260962,94.580907 C 73.485332,94.654817 75.345432,92.738537 77.394512,90.322507 C 84.541472,81.895687 95.889022,71.946047 103.01196,67.860887 C 104.10324,67.235017 106.24611,65.898847 107.7739,64.891627 C 113.52279,61.101567 117.12265,59.220547 117.62371,59.744857 C 117.98434,60.122227 117.95514,60.318417 117.49619,60.601727 C 117.16881,60.803807 113.77593,62.816127 109.95646,65.073547 C 100.18444,70.849087 98.659802,71.804227 97.137182,73.104397 C 96.397762,73.735797 94.667522,75.056707 93.292222,76.039767 C 90.615422,77.953127 82.175902,86.363447 78.345752,90.934527 C 76.052562,93.671337 72.449982,98.444267 68.348512,104.17953 C 67.200812,105.78442 65.402102,108.64422 64.351382,110.53464 C 63.300662,112.42506 61.920702,114.86545 61.284802,115.95773 C 58.603772,120.56297 54.134832,131.63764 53.030442,136.4132 C 52.752592,137.61472 51.786452,141.48822 50.883492,145.02099 C 49.980522,148.55376 49.241722,151.98282 49.241722,152.64111 C 49.241722,153.29941 49.058102,154.32143 48.833672,154.91227 C 48.088272,156.87462 46.622772,173.16756 47.065952,174.5652 C 47.244262,175.12751 47.841892,175.31074 49.952792,175.45035 C 51.416882,175.54717 56.364792,175.90817 60.948162,176.25257 C 74.105502,177.24121 79.644492,177.32468 91.049262,176.70619 C 96.910352,176.38834 101.84546,176.04188 102.0162,175.93626 C 102.18693,175.83064 105.07013,175.46921 108.4233,175.13307 C 111.77648,174.79693 115.33587,174.41787 116.33306,174.29071 C 118.81808,173.97381 119.32946,174.57491 119.6628,178.20456 C 119.80893,179.79567 120.13573,182.16991 120.38904,183.48065 C 121.1357,187.34435 120.94215,208.33633 120.11253,213.46877 C 119.14886,219.43045 117.73514,224.13735 115.22402,229.7448 C 110.87036,239.46668 102.78685,247.23868 94.733472,249.44572 C 92.650142,250.01666 84.365352,250.50769 82.575302,250.16631 z M 90.313462,248.04065 C 93.014742,247.60066 96.653672,246.56362 98.071662,245.82967 C 99.773522,244.94879 99.600732,244.05268 97.729022,244.05268 C 96.565842,244.05268 95.952202,243.77713 95.075402,242.8611 C 94.265672,242.01515 93.560302,241.66952 92.643602,241.66952 C 91.933422,241.66952 91.242002,241.49078 91.107112,241.27233 C 90.684082,240.58721 90.115042,240.83895 90.115042,241.71121 C 90.115042,242.17106 90.650762,243.34181 91.305532,244.31289 C 92.440822,245.99663 92.761422,246.83304 92.271512,246.83304 C 91.539432,246.83304 90.446192,245.83124 89.670232,244.44934 C 89.179732,243.57581 88.644882,242.8611 88.481682,242.8611 C 88.318472,242.8611 87.803222,243.39768 87.336672,244.05349 C 86.477112,245.26174 85.049292,246.26415 84.694152,245.90868 C 84.587362,245.8018 84.955922,245.02476 85.513172,244.18193 C 87.543732,241.11071 87.174452,238.54943 85.001522,240.63314 C 84.407112,241.20315 83.657782,241.66952 83.336342,241.66952 C 82.371572,241.66952 80.987992,242.85286 80.987992,243.67801 C 80.987992,244.10253 80.816382,244.44987 80.606622,244.44987 C 80.396872,244.44987 79.880092,244.8207 79.458232,245.27394 C 78.781452,246.00104 78.581202,246.03609 77.756252,245.57184 C 77.242022,245.28244 76.762382,245.01648 76.690382,244.98083 C 76.187852,244.73195 78.228892,242.68825 79.480632,242.18695 C 80.372432,241.82979 81.257572,241.10827 81.587612,240.46947 C 81.900632,239.86359 83.054492,238.81498 84.151752,238.13921 C 85.249002,237.46344 86.146762,236.81065 86.146762,236.68854 C 86.146762,236.26228 84.933872,234.12284 84.692212,234.12284 C 84.558182,234.12284 84.232712,234.41826 83.968952,234.77932 C 83.391932,235.56915 82.575302,235.17075 82.575302,234.0994 C 82.575302,233.07177 82.017702,233.12416 81.269282,234.22213 C 80.663832,235.11036 80.656422,235.11097 80.055532,234.32144 C 79.478442,233.56318 79.438472,233.60383 79.176682,235.21512 C 78.886842,236.99908 77.817712,237.61958 77.807952,236.00951 C 77.800132,234.72064 77.377562,233.32845 76.994162,233.32845 C 76.812772,233.32845 76.610382,234.25277 76.544412,235.3825 C 76.381932,238.16493 75.589942,238.31528 75.229642,235.63208 C 75.074182,234.47432 74.802322,233.26147 74.625502,232.93687 C 74.251862,232.25094 74.017592,233.01596 73.544202,236.46799 C 73.382312,237.6486 73.071272,238.59081 72.853012,238.56182 C 72.423042,238.50468 71.676342,230.41093 72.018672,229.51802 C 72.133362,229.21885 72.814442,228.73088 73.532182,228.43364 C 74.679312,227.95855 75.101142,227.98333 77.019712,228.63844 C 79.909592,229.62521 83.935102,230.5481 85.349382,230.5481 C 87.456182,230.5481 88.466932,228.44224 87.090702,226.92013 C 86.254572,225.99536 86.601292,225.1587 87.962372,224.81677 C 89.509352,224.42815 90.295772,225.34823 90.174522,227.40493 C 90.035692,229.76008 90.925102,230.94529 92.831302,230.94529 C 94.461922,230.94529 97.771852,229.95884 99.032772,229.09708 C 100.11132,228.35996 102.40237,228.42601 103.27834,229.21948 C 103.90963,229.79132 104.00403,230.54053 104.00403,234.97879 C 104.00403,239.03786 103.89273,240.08074 103.45951,240.08074 C 103.12625,240.08074 102.80909,239.42579 102.64207,238.39267 C 102.4003,236.89721 102.31991,236.79524 101.93758,237.49899 C 101.29663,238.67878 101.2165,238.72045 100.81391,238.08328 C 100.61086,237.76192 100.44199,236.57117 100.43865,235.43716 C 100.43531,234.30316 100.27431,233.27743 100.08086,233.15777 C 99.650312,232.89142 99.254802,234.26057 99.247512,236.04261 C 99.241662,237.47208 98.343882,237.65928 98.135372,236.27449 C 97.845972,234.35251 97.602572,233.71105 97.246322,233.93144 C 97.034462,234.0625 96.861122,234.69539 96.861122,235.33786 C 96.861122,236.11141 96.660052,236.50601 96.265882,236.50601 C 95.914952,236.50601 95.668152,236.13921 95.664562,235.61231 C 95.661222,235.12079 95.492252,234.45553 95.289082,234.13397 C 94.973202,233.63403 94.887832,233.64843 94.699912,234.23328 C 93.993832,236.43081 94.054232,236.37282 93.429132,235.45326 L 92.848492,234.59911 L 91.878592,235.4988 C 90.451982,236.82216 90.624092,237.93258 92.396802,238.84229 C 93.215262,239.2623 94.285522,240.07025 94.775152,240.63774 C 95.420172,241.3853 96.051042,241.66952 97.065422,241.66952 C 98.165292,241.66952 98.560232,241.87773 98.907522,242.64066 C 99.483802,243.90662 100.34202,244.20708 101.38135,243.50674 C 103.78301,241.88843 111.9406,233.08578 111.9406,232.11252 C 111.9406,231.85141 112.46417,230.72181 113.1041,229.60232 C 114.31957,227.47594 117.48689,218.92815 117.49279,217.75834 C 117.49466,217.3869 117.18369,216.90816 116.80174,216.69447 C 116.22776,216.37335 116.08363,215.61195 115.97089,212.30517 C 115.89401,210.0505 115.67753,208.40149 115.47485,208.52686 C 115.27706,208.64922 115.11522,209.61012 115.11522,210.66221 C 115.11522,213.13114 114.7167,215.10338 114.27325,214.82906 C 114.08157,214.71049 113.92474,214.18773 113.92474,213.66737 C 113.92474,212.43119 113.13993,211.95892 112.86084,213.02715 C 112.56192,214.17129 112.08205,213.7522 111.76712,212.07194 C 111.47842,210.5316 110.75011,210.55316 110.75011,212.10204 C 110.75011,212.69906 110.5214,213.07158 110.15487,213.07158 C 109.82749,213.07158 109.55963,212.81402 109.55963,212.49923 C 109.55963,211.66116 108.81807,211.34225 108.15335,211.89444 C 107.70692,212.26528 107.44639,212.26722 107.00792,211.90298 C 106.55468,211.52649 106.35484,211.59144 106.01585,212.22543 C 105.27297,213.6148 105.54061,214.17685 107.778,215.92588 C 108.98067,216.86604 110.06132,217.94009 110.17946,218.31265 C 110.44769,219.15854 112.75645,220.61826 113.82611,220.61826 C 115.02173,220.61826 115.25401,222.42184 114.15151,223.1449 C 113.40471,223.63467 113.19406,223.61585 112.42244,222.99045 C 111.93917,222.59876 111.54377,221.92534 111.54377,221.49396 C 111.54377,220.67667 110.01097,219.42667 109.00879,219.42667 C 108.69048,219.42667 107.86984,218.95487 107.18516,218.37822 C 106.46208,217.76922 105.79434,217.47787 105.59209,217.68313 C 104.98103,218.30328 106.6269,222.32438 107.94333,223.42754 C 109.35921,224.61404 109.4656,224.98739 108.38784,224.98739 C 107.96088,224.98739 107.04008,224.27395 106.33729,223.39861 C 105.63571,222.52478 104.89576,221.80984 104.69296,221.80984 C 104.49016,221.80984 103.51275,222.52478 102.52095,223.39861 C 100.05302,225.57297 98.323052,225.54466 100.68334,223.36855 C 101.97621,222.17656 103.19007,219.61547 103.20166,218.05518 L 103.21038,216.88229 L 101.70554,218.35308 C 100.87788,219.16201 99.814842,219.82387 99.343242,219.82387 C 97.960122,219.82387 96.702052,220.57493 95.982162,221.83043 C 95.612872,222.47447 95.021472,223.00141 94.667932,223.00141 C 93.478632,223.00141 94.247842,221.68344 96.054322,220.62595 C 97.158902,219.97934 97.910472,219.2218 98.050332,218.61407 C 98.191182,218.002 99.119092,217.07401 100.5441,216.12008 C 102.88108,214.55566 103.23524,213.80803 102.38904,212.22543 C 102.03526,211.56376 101.86284,211.516 101.35403,211.93866 C 100.8502,212.35718 100.6567,212.32695 100.24668,211.76571 C 99.587502,210.86339 99.323382,210.90817 99.170482,211.94819 C 98.982862,213.22447 98.259802,213.24443 97.671132,211.98958 C 97.386652,211.38317 97.103642,211.06575 97.042222,211.2842 C 96.980802,211.50267 96.822242,212.17292 96.689862,212.77368 C 96.415342,214.01952 95.670642,214.25607 95.670642,213.09743 C 95.670642,212.67474 95.460102,211.82574 95.202772,211.21077 C 94.757202,210.1459 94.722232,210.21121 94.468912,212.58143 C 94.073592,216.2804 93.339832,216.58745 93.013422,213.1905 C 92.637062,209.27367 91.823622,209.88137 91.741912,214.14041 C 91.665702,218.11286 91.026712,216.57275 90.770242,211.79847 C 90.394422,204.80273 90.702322,204.58206 97.573762,206.92225 C 101.89274,208.39318 102.72463,208.3671 103.59811,206.73349 C 104.17364,205.6571 104.14642,205.57956 102.72724,204.25262 C 101.5001,203.10524 101.4799,203.03726 102.20784,202.50449 C 102.62441,202.19961 103.46054,201.95016 104.06592,201.95016 C 105.37428,201.95016 105.95585,202.8524 106.32856,205.46036 C 106.53452,206.90153 106.82047,207.41324 107.68881,207.8945 C 108.74439,208.47952 108.91866,208.43488 112.05542,206.77573 C 114.07389,205.70808 115.70002,205.10086 116.31017,205.18695 C 117.29318,205.32565 117.29784,205.34667 117.31125,209.69543 C 117.32679,214.73349 117.37242,215.181 117.84102,214.89111 C 118.2569,214.63385 118.58984,210.68099 118.91819,202.10209 C 119.15889,195.81326 119.14739,195.68558 118.26612,194.86379 C 117.48263,194.13319 117.3237,193.43599 117.01102,189.35806 C 116.81412,186.79 116.57487,184.61065 116.47936,184.51505 C 116.06073,184.09602 115.8935,184.99884 115.64905,188.99769 C 115.36253,193.68484 114.75191,193.96748 114.69658,189.43856 C 114.66084,186.51278 114.19398,184.55534 113.79662,185.66522 C 113.6793,185.9929 113.46508,187.65951 113.32058,189.3688 C 113.17607,191.07809 112.94039,192.36155 112.79684,192.22094 C 112.65329,192.08033 112.35727,190.87516 112.13901,189.54279 C 111.74291,187.12475 110.75011,185.85542 110.75011,187.76703 C 110.75011,189.51863 110.2577,191.26019 109.80455,191.1113 C 109.56071,191.03118 109.27193,190.17521 109.1628,189.20912 C 108.92374,187.09279 108.24711,187.04641 107.97231,189.1275 C 107.80266,190.41236 107.64445,190.61212 106.88072,190.50582 C 106.22723,190.41486 105.88412,190.65377 105.60216,191.39605 C 105.11263,192.68481 105.33668,193.24161 106.68884,194.09659 C 107.28562,194.47395 108.57748,195.41373 109.55963,196.18497 C 112.51795,198.50804 113.67373,199.16676 114.79418,199.16831 C 116.28574,199.17039 116.60105,199.93374 115.46992,200.80424 C 114.94745,201.20632 114.37898,201.53927 114.20665,201.54413 C 114.03431,201.54899 113.19316,200.83802 112.33743,199.96418 C 111.3773,198.98377 110.41655,198.37541 109.82832,198.37541 C 109.30405,198.37541 108.18511,197.82657 107.34178,197.15576 C 106.46034,196.45463 105.74583,196.12415 105.66115,196.37841 C 105.38326,197.21288 105.9729,198.64898 107.02632,199.70338 C 107.91176,200.58964 107.96674,200.75857 107.36974,200.75857 C 106.9788,200.75857 105.9619,200.02516 105.10997,199.12876 L 103.56099,197.49895 L 101.99038,199.20179 C 100.78564,200.50796 100.31095,200.79571 99.952602,200.43703 C 99.594252,200.07836 99.746412,199.69677 100.60579,198.79894 C 101.28392,198.09047 101.63247,197.38408 101.48881,197.00935 C 101.27587,196.45393 101.10651,196.45944 99.842132,197.06293 C 98.534402,197.68713 98.385782,197.68853 97.780262,197.08246 C 96.931372,196.23279 97.465772,195.56068 99.735852,194.62297 C 100.66469,194.23929 101.69251,193.78436 102.01989,193.61203 C 102.93613,193.12971 102.59709,191.14981 101.4387,190.21803 C 100.88533,189.7729 100.43258,189.17711 100.43258,188.89404 C 100.43258,187.91491 99.440022,188.70954 99.312672,189.79062 C 99.139422,191.26131 98.298962,190.8943 98.051612,189.23996 C 97.815182,187.6587 96.861122,187.11492 96.861122,188.56142 C 96.861122,190.13468 96.394632,192.02031 96.005412,192.02031 C 95.533892,192.02031 95.382982,191.48847 95.075612,188.74347 C 94.897042,187.1488 94.648862,186.4596 94.253182,186.4596 C 93.817222,186.4596 93.679062,187.12391 93.654272,189.33926 C 93.623312,192.10535 93.600542,192.17192 93.076922,191.02733 C 92.777112,190.37196 92.521322,189.29954 92.508492,188.64417 C 92.477072,187.03836 92.084152,185.66522 91.656072,185.66522 C 91.463272,185.66522 91.305532,187.82496 91.305532,190.46463 C 91.305532,194.12676 91.187982,195.22523 90.809492,195.10023 C 89.883602,194.79442 89.308812,184.78989 90.129002,183.25594 C 90.700702,182.18673 92.694812,182.26194 95.325062,183.4519 C 97.981242,184.65361 100.84339,185.10386 101.9745,184.49794 C 103.07316,183.90942 103.1001,182.06349 102.01989,181.38826 C 100.96995,180.73196 101.01895,180.25877 102.2183,179.47219 C 103.12611,178.87682 103.29191,178.87503 104.17028,179.45109 C 104.88426,179.91934 105.21529,180.61792 105.46236,182.17783 C 105.74438,183.95834 105.93511,184.29501 106.72538,184.40725 C 108.20348,184.6172 109.22146,184.2214 112.14302,182.30074 C 114.92796,180.4699 116.17269,180.13024 117.01338,180.97171 C 117.73976,181.69875 117.90415,181.20763 117.57796,179.28506 L 117.27896,177.52275 L 115.07567,177.40569 C 113.86387,177.34131 110.92165,177.47719 108.53742,177.70764 C 93.207342,179.18942 89.092482,179.36016 74.440322,179.12244 C 66.364872,178.99143 58.864812,178.71384 57.773532,178.50559 C 53.415952,177.67404 51.622692,177.57729 51.622692,178.17374 C 51.622692,178.48368 52.799082,179.8939 54.236892,181.30756 C 58.566282,185.56424 60.063942,187.80385 61.533482,192.21891 C 62.622922,195.49201 62.888592,196.97893 63.043462,200.67005 C 63.215652,204.7736 63.291862,205.13004 63.952282,204.92024 C 64.392682,204.78034 65.776442,205.31702 67.508912,206.29965 C 70.593842,208.04938 72.901592,208.39849 74.015152,207.28389 C 74.873132,206.42513 74.796502,205.23305 73.845082,204.63833 C 72.841912,204.01126 72.831862,203.2873 73.819002,202.75851 C 75.565292,201.82306 77.019712,202.78779 77.019712,204.88157 C 77.019712,207.9905 79.457522,208.46237 84.204632,206.27226 C 88.141932,204.45578 88.287272,204.64748 88.466582,211.89365 C 88.584262,216.64968 88.517922,217.44071 88.001322,217.44071 C 87.659892,217.44071 87.191702,216.81262 86.920882,215.99128 C 86.529272,214.80361 86.376832,214.66015 86.076732,215.1969 C 85.406392,216.39584 84.998372,215.87569 84.727182,213.47649 C 84.433832,210.88126 83.765792,210.5999 83.765792,213.07158 C 83.765792,213.91962 83.585952,214.72472 83.366162,214.86068 C 82.952722,215.11643 82.811292,214.83807 82.398402,212.95603 C 82.133402,211.74808 81.384822,211.85073 81.384822,213.09502 C 81.384822,214.22423 80.719782,214.03524 80.254112,212.77368 C 79.858442,211.70176 79.845862,211.69807 79.579522,212.57508 C 79.271012,213.59095 78.977662,213.68088 78.273042,212.9756 C 77.880632,212.58283 77.704132,212.60305 77.406092,213.0749 C 76.652912,214.26732 76.894412,214.71529 79.301472,216.59066 C 81.201472,218.07098 81.559022,219.42667 80.049442,219.42667 C 79.533232,219.42667 78.656842,219.0692 78.101912,218.63228 C 76.809622,217.61484 76.622882,217.63301 76.622882,218.77627 C 76.622882,219.29237 77.158602,220.38937 77.813372,221.21405 C 78.468132,222.03873 79.003852,222.9585 79.003852,223.258 C 79.003852,224.11308 77.528972,223.05587 76.567982,221.51194 C 75.574782,219.91628 75.095242,219.89927 73.650632,221.4085 C 72.295792,222.82395 72.024782,222.74517 72.843472,221.17384 C 73.173412,220.54059 73.444462,219.70968 73.445812,219.32737 C 73.448812,218.4757 72.532392,218.41828 71.860942,219.22808 C 71.589242,219.55576 70.950772,219.82387 70.442132,219.82387 C 69.004222,219.82387 67.495832,220.6699 67.495832,221.4764 C 67.495832,221.97191 67.204992,222.20703 66.592062,222.20703 C 66.094982,222.20703 65.295832,222.48217 64.816182,222.81843 C 64.026642,223.37196 63.848032,223.36685 62.929542,222.76449 C 62.003032,222.15686 61.964252,222.02627 62.482552,221.25939 C 62.873532,220.68091 63.383772,220.45719 64.122612,220.54029 C 65.244082,220.66643 69.479972,219.11096 69.479972,218.57302 C 69.479972,218.00394 71.935222,215.45474 72.483332,215.45474 C 73.309062,215.45474 73.928012,213.95649 73.641562,212.65109 C 73.369452,211.41107 72.495742,211.08356 72.114262,212.0786 C 71.782362,212.94433 71.067282,212.80869 71.067282,211.87999 C 71.067282,210.46453 70.382412,211.03961 70.121242,212.67438 C 69.772322,214.85842 68.686312,214.87616 68.686312,212.69783 C 68.686312,211.83689 68.516772,211.02761 68.309542,210.89942 C 67.962432,210.68469 67.674982,211.753 67.404442,214.26316 C 67.197322,216.18489 66.502492,215.22853 66.394442,212.87298 C 66.334312,211.56224 66.181222,210.22171 66.054222,209.89403 C 65.668502,208.89874 65.174982,210.60784 65.136672,213.07158 C 65.067052,217.54937 63.548242,217.17431 63.528202,212.67438 C 63.515572,209.83788 63.223352,208.30525 62.695162,208.30525 C 62.089252,208.30525 61.826942,210.27178 62.348882,210.90127 C 62.700762,211.32565 62.771832,212.30157 62.591942,214.23893 C 62.158842,218.90317 61.388372,219.68739 61.038062,215.82056 C 60.917752,214.49256 60.709962,213.29656 60.576302,213.16277 C 60.107402,212.69344 55.987812,217.17533 55.987812,218.1548 C 55.987812,219.84502 57.978112,224.91726 61.054032,231.06597 C 63.814802,236.58469 64.348072,237.37402 67.278562,240.27934 C 70.635642,243.60759 74.061402,245.75591 76.821292,246.26366 C 77.694322,246.42428 78.783782,246.79993 79.242322,247.09845 C 80.850782,248.14557 86.642892,248.6385 90.313462,248.04065 z M 81.817332,222.57515 C 80.595392,221.55682 81.226112,220.61357 82.666492,221.30521 C 83.161982,221.54314 83.899992,221.84549 84.306522,221.97712 C 84.911092,222.17286 84.956432,222.32405 84.555552,222.80752 C 83.890892,223.60912 82.963612,223.53044 81.817332,222.57515 z M 83.964202,201.15577 C 83.829312,200.93731 83.384762,200.75857 82.976312,200.75857 C 82.512182,200.75857 82.186122,200.4284 82.106872,199.87816 C 82.034302,199.37429 81.470912,198.742 80.789582,198.39975 C 80.134812,198.07086 78.933272,197.39462 78.119492,196.897 C 77.305712,196.39939 76.457492,195.99225 76.234562,195.99225 C 75.415372,195.99225 75.862542,197.84865 77.003582,199.1848 C 77.649482,199.94115 78.185202,200.69403 78.194072,200.85787 C 78.231612,201.55127 76.921802,201.06903 75.766762,199.96418 C 74.290682,198.55227 74.240862,198.54527 72.943142,199.567 C 71.379562,200.79804 70.991612,200.50826 72.071322,198.91578 C 73.081472,197.42586 73.382962,195.59505 72.618152,195.59505 C 72.106172,195.59505 70.219452,196.9651 68.743502,198.40865 C 67.107652,200.00859 66.111352,200.41891 64.942432,199.97407 C 63.887702,199.57269 63.756642,199.2751 64.165252,198.2093 C 64.327062,197.78724 64.906562,197.58103 65.930782,197.58103 C 67.207312,197.58103 67.628082,197.35447 68.516252,196.18896 C 69.099692,195.42331 70.267562,194.40844 71.111512,193.93367 C 72.646122,193.07039 73.329652,191.99786 72.845232,191.21332 C 72.703652,190.98403 72.245832,190.90506 71.827852,191.03784 C 71.253442,191.22032 70.967342,191.01452 70.656022,190.19494 C 70.195772,188.98328 69.622022,189.27615 69.414372,190.82873 C 69.222662,192.26212 68.521722,191.89087 68.289492,190.23294 C 68.007272,188.21821 67.462942,188.33786 66.905012,190.53727 C 66.076972,193.80141 65.548372,193.65319 65.223372,190.06573 C 65.076622,188.44581 64.832842,187.65119 64.482632,187.65119 C 64.114332,187.65119 63.926092,188.4406 63.843302,190.33224 C 63.757732,192.28739 63.578002,193.0133 63.179492,193.0133 C 62.768952,193.0133 62.620902,192.28085 62.584252,190.0686 C 62.551702,188.10346 62.370462,187.06846 62.039442,186.95725 C 61.766622,186.86559 61.543402,187.07359 61.543402,187.41949 C 61.543402,187.76538 61.275542,188.04838 60.948162,188.04838 C 60.505972,188.04838 60.352922,187.58208 60.352922,186.23489 C 60.352922,182.23192 61.702082,181.81811 66.744442,184.27454 C 70.830322,186.26501 72.765562,186.54483 73.460262,185.24557 C 73.809402,184.59259 73.726472,184.13942 73.046842,182.98648 L 72.196672,181.54423 L 73.120092,180.83319 C 74.232332,179.97677 74.302162,179.96919 75.177482,180.60983 C 75.631902,180.9424 75.948102,181.89284 76.102502,183.39019 C 76.396562,186.24201 76.637552,186.26426 81.384822,183.87784 C 85.410692,181.85406 86.291072,181.71603 87.084312,182.98416 C 87.720862,184.00178 88.291502,194.65444 87.728142,195.00294 C 87.068662,195.41089 86.769832,194.14938 86.559012,190.06755 C 86.400652,187.00127 86.200092,185.87911 85.785942,185.74199 C 85.318302,185.58717 85.269622,186.21235 85.488762,189.55925 C 85.642852,191.91286 85.598452,193.65591 85.380962,193.79045 C 84.757752,194.17598 84.408442,193.15126 84.181442,190.27153 C 84.048642,188.58686 83.771402,187.45193 83.468172,187.35172 C 83.104572,187.23156 82.972132,187.89475 82.972132,189.83574 C 82.972132,193.13854 82.082022,193.26397 81.781652,190.00351 C 81.527262,187.24222 80.825892,187.21538 80.668742,189.96093 C 80.536892,192.26441 79.756032,192.65512 79.396782,190.59737 C 79.122432,189.02594 78.438052,189.13089 78.281352,190.76842 C 78.176972,191.85931 78.016592,192.06229 77.388892,191.89799 C 76.968022,191.78783 76.533632,191.84352 76.423572,192.02176 C 76.018482,192.67782 76.680602,193.44062 78.585492,194.5124 C 79.842772,195.2198 80.582832,195.91923 80.663812,196.4766 C 80.813062,197.50384 82.911542,198.82323 84.914342,199.14908 C 86.654092,199.43213 86.981352,200.43142 85.548322,201.08495 C 84.304172,201.65235 84.271722,201.6538 83.964202,201.15577 z M 92.055092,200.98548 C 91.270062,200.66146 91.088482,200.37753 91.293752,199.79501 C 91.501892,199.20432 91.987752,199.01213 93.426102,198.95146 C 94.450642,198.90825 95.375372,199.01294 95.481052,199.18409 C 96.205272,200.35698 93.710482,201.66875 92.055092,200.98548 z M 118.65878,189.53785 C 118.64345,189.04633 118.49445,188.29506 118.32769,187.86838 C 118.07051,187.21035 117.98465,187.29191 117.76211,188.40566 C 117.6178,189.12785 117.59876,189.87911 117.7198,190.07515 C 118.13479,190.74723 118.68667,190.43144 118.65878,189.53785 z M 65.495602,98.180047 C 65.802872,97.217717 66.734622,96.018107 68.117912,94.803907 C 69.372702,93.702497 70.263442,92.590657 70.263202,92.126107 C 70.261852,89.518317 68.577632,88.121527 65.996672,88.587727 C 64.326942,88.889327 63.070962,89.455427 62.640752,90.100297 C 62.114592,90.889037 62.323762,95.434897 62.975482,97.375037 C 64.096422,100.71199 64.632502,100.88323 65.495602,98.180047 z M 61.070272,89.393757 C 61.998382,88.464787 61.517932,87.847727 57.401402,84.681757 C 53.632902,81.783437 53.667752,81.791207 50.113372,83.059157 C 47.905592,83.846747 48.042862,84.590207 50.685102,86.155587 C 51.803042,86.817887 53.587412,88.036697 54.650382,88.864037 C 56.393022,90.220387 56.771292,90.352767 58.497612,90.210367 C 59.565852,90.122257 60.703092,89.761277 61.070272,89.393757 z M 323.20143,238.95137 C 322.99575,238.80793 322.43092,238.17377 321.94625,237.54213 C 320.95067,236.24466 321.17966,235.68838 323.12355,234.68224 C 325.57918,233.41122 324.55786,232.47298 317.14885,229.19357 C 312.81069,227.27339 311.03872,226.99612 309.19714,227.94931 C 307.90925,228.61593 307.45913,228.37763 306.01418,226.26426 C 304.93637,224.68787 305.1365,224.35356 308.19087,222.62819 L 310.32759,221.42118 L 312.02768,222.54774 C 312.96274,223.16734 315.15636,224.25961 316.9024,224.97502 C 318.64845,225.69042 320.91931,226.70082 321.94877,227.22034 C 323.98334,228.24711 325.43471,228.40519 326.6838,227.73609 C 327.6092,227.24036 328.70286,228.01548 329.64154,229.83235 C 330.47223,231.44021 330.36882,231.61843 328.18371,232.34488 C 327.07687,232.71285 326.07619,233.26192 325.95998,233.56503 C 325.84377,233.86814 326.12437,234.75344 326.58352,235.53237 C 327.69323,237.41492 327.63623,238.03299 326.32707,238.3133 C 325.72687,238.44181 324.86221,238.69662 324.4056,238.87956 C 323.94899,239.0625 323.40711,239.09481 323.20143,238.95137 z M 146.70891,237.74548 C 146.01402,237.0195 145.33947,236.66715 144.8765,236.78834 C 144.35345,236.92523 143.95784,236.62016 143.49388,235.72213 C 143.13642,235.03025 142.23003,234.1016 141.47968,233.65848 C 140.72933,233.21535 140.1154,232.60617 140.1154,232.30475 C 140.1154,231.86396 139.92078,231.84547 139.12083,232.21028 C 138.57381,232.45975 138.17081,232.85808 138.22527,233.09546 C 138.36482,233.7037 137.71753,233.79745 136.44474,233.35336 C 135.14077,232.89837 135.06826,232.20972 136.17592,230.80026 C 137.24012,229.44611 136.99797,229.47937 135.16235,230.93949 C 133.59838,232.18351 132.9725,232.18759 132.9725,230.95378 C 132.9725,230.1435 142.94972,221.80984 143.91979,221.80984 C 144.87379,221.80984 144.54426,222.70399 143.01108,224.27556 C 141.73965,225.57881 141.65107,225.78177 142.35372,225.78177 C 142.84192,225.78177 143.84141,226.58376 144.85985,227.79267 C 146.21775,229.40454 146.51084,230.01908 146.33689,230.88963 C 146.21753,231.48696 146.27428,232.22575 146.46299,232.53137 C 146.65808,232.84732 146.65095,233.37724 146.44645,233.7597 C 146.17498,234.26741 146.27188,234.48079 146.8416,234.62992 C 147.30882,234.75221 147.78419,235.4548 148.08924,236.47388 C 148.75725,238.70556 148.15709,239.25845 146.70891,237.74548 z M 140.27136,227.93385 C 140.69803,226.82095 140.5306,226.55794 139.71858,227.06553 C 139.28207,227.33838 138.92492,227.78675 138.92492,228.06189 C 138.92492,228.7805 139.98544,228.67966 140.27136,227.93385 z M 205.66368,236.8039 C 205.74517,236.22957 206.10955,235.86486 206.68335,235.78329 C 207.66463,235.6438 207.89198,236.42826 207.10002,237.22095 C 206.30806,238.01364 205.52432,237.78607 205.66368,236.8039 z M 173.60975,234.06187 C 173.24142,233.46536 176.0457,232.42067 178.00322,232.42514 C 180.02993,232.42979 183.31928,233.5113 182.82164,234.00941 C 182.4444,234.38699 173.84075,234.43599 173.60975,234.06187 z M 173.3029,231.03365 C 171.95547,228.39403 171.85966,225.52849 173.05415,223.59398 C 174.07968,221.93311 175.35346,221.41264 178.39273,221.41264 C 180.70682,221.41264 181.00129,221.51152 181.91141,222.59414 C 183.19189,224.11729 183.91404,226.33097 183.57349,227.68906 C 183.31718,228.71122 183.27998,228.7255 182.75302,228.00419 C 182.2279,227.28537 182.18772,227.28336 181.92723,227.96281 C 181.75223,228.41927 181.89149,228.85124 182.31314,229.15985 C 184.17642,230.52356 182.38141,231.58431 177.71942,231.87447 L 173.85488,232.11499 L 173.3029,231.03365 z M 217.59505,226.63247 C 213.56303,223.43448 213.65804,223.55834 214.51222,222.61361 C 215.08593,221.97908 215.73378,221.80984 217.58895,221.80984 C 219.6572,221.80984 220.07801,221.94903 221.0989,222.97087 C 221.92047,223.79319 222.25715,224.51739 222.25301,225.45333 C 222.24675,226.86784 221.52055,228.62854 220.86996,228.8066 C 220.6517,228.86633 219.178,227.88798 217.59505,226.63247 z M 133.05186,227.6883 C 132.42436,227.06022 132.41578,221.95562 133.04158,221.56851 C 133.29783,221.40999 134.38574,221.30031 135.45914,221.32478 C 137.51212,221.37159 139.32175,222.24032 139.32175,223.17909 C 139.32175,223.6801 134.31819,228.16493 133.75924,228.16493 C 133.63209,228.16493 133.31377,227.95046 133.05186,227.6883 z M 24.838812,225.4568 C 22.657372,224.19607 20.816782,222.8747 20.748622,222.52041 C 20.680452,222.16612 21.247332,221.05979 22.008362,220.06187 C 22.769392,219.06395 23.619062,217.61911 23.896512,216.85111 C 24.494782,215.19511 25.260762,215.07921 27.218412,216.34842 C 28.686992,217.30056 28.970702,218.01028 28.027542,218.37254 C 27.256222,218.66879 25.320732,222.5354 25.590952,223.24022 C 25.897842,224.04073 27.019682,223.9276 29.452172,222.85084 C 30.626292,222.33112 33.560622,221.25491 35.972912,220.45927 C 38.385212,219.66363 40.743252,218.74321 41.213022,218.41386 C 42.376352,217.59828 42.796452,215.25419 41.947542,214.31529 C 41.207612,213.49692 41.104932,212.67438 41.742712,212.67438 C 42.645902,212.67438 46.065572,214.88274 46.048122,215.45474 C 46.010022,216.70408 44.174932,221.58836 43.645572,221.84939 C 43.340492,221.99982 42.108742,222.34129 40.908332,222.60821 C 35.975562,223.70507 31.781582,225.43532 30.430082,226.93109 C 30.014312,227.39125 29.478592,227.76353 29.239602,227.75839 C 29.000612,227.75324 27.020252,226.71753 24.838812,225.4568 z M 54.078382,223.79537 C 53.596512,222.63478 53.278362,221.60903 53.371382,221.51592 C 53.616652,221.27042 55.236932,225.05752 55.083602,225.51793 C 55.012612,225.7311 54.560262,224.95596 54.078382,223.79537 z M 325.6796,224.70341 C 325.42695,224.45054 323.8469,221.08597 323.8469,220.80087 C 323.8469,220.73838 324.3702,220.88497 325.00978,221.12661 C 325.99364,221.49831 326.45424,221.421 328.00154,220.62446 C 331.19933,218.97826 330.65625,218.61858 321.38993,216.24564 C 315.75103,214.80162 314.84158,214.78054 312.97187,216.05053 C 312.16783,216.59667 311.29469,217.04351 311.03156,217.0435 C 310.31136,217.04348 308.271,214.30145 308.51589,213.66269 C 308.63338,213.35624 309.474,212.60634 310.38394,211.99625 C 313.98957,209.5788 313.72541,209.6687 315.18062,210.36383 C 317.55612,211.49855 322.99468,212.92256 326.31454,213.27909 L 328.58377,213.52279 L 330.35589,216.1909 C 331.33056,217.65836 332.49692,219.19317 332.94781,219.6016 C 333.3987,220.01002 333.7676,220.58759 333.7676,220.88511 C 333.7676,221.18261 332.13493,222.22733 330.13944,223.20671 C 326.29941,225.09137 326.12551,225.14973 325.6796,224.70341 z M 146.73024,222.73766 C 146.58796,222.59524 146.67043,222.23885 146.91352,221.94568 C 147.26551,221.52116 149.80975,221.41264 159.41016,221.41264 C 169.86088,221.41264 171.46484,221.49191 171.46484,222.00843 C 171.46484,222.33612 171.24162,222.61191 170.9688,222.6213 C 164.55482,222.84217 146.91924,222.92682 146.73024,222.73766 z M 193.3896,222.70392 C 185.90815,222.60657 184.56017,222.49923 184.56017,222.00083 C 184.56017,221.49593 186.07399,221.41264 195.25111,221.41264 C 202.66708,221.41264 206.02559,221.54792 206.21473,221.85425 C 206.63351,222.53246 205.56452,222.99843 203.80634,222.90403 C 202.93332,222.85716 198.24579,222.76711 193.3896,222.70392 z M 316.05384,220.02246 C 315.69597,219.089 316.15947,218.33194 317.51997,217.62775 C 318.95584,216.88455 320.08384,217.06169 321.62076,218.27174 C 323.00207,219.35928 322.69962,219.67483 321.07963,218.83633 C 319.22009,217.87385 317.72668,218.16734 317.5705,219.52598 C 317.43534,220.70168 316.43925,221.02777 316.05384,220.02246 z M 141.10748,219.82387 C 136.96062,219.71464 133.34452,219.48067 133.0717,219.30393 C 132.79888,219.1272 132.57567,218.28875 132.57567,217.44071 C 132.57567,216.59267 132.79888,215.75583 133.0717,215.58107 C 133.86629,215.07208 221.12053,215.40079 221.73968,215.91511 C 222.30342,216.38341 222.43667,218.92882 221.93851,219.7136 C 221.69866,220.09146 213.53878,220.17953 185.13877,220.11079 C 165.06842,220.06221 145.25433,219.9331 141.10748,219.82387 z M 19.975642,213.76801 C 18.154802,212.84714 17.742762,211.63673 18.917852,210.66059 C 20.094882,209.68285 21.929512,206.6748 21.705382,206.0902 C 21.582532,205.76977 20.317192,204.77658 18.893502,203.88311 C 17.469812,202.98963 16.315972,202.14453 16.329402,202.00509 C 16.342832,201.86565 17.291882,200.41103 18.438402,198.77261 L 20.522972,195.79366 L 22.665182,195.91303 C 25.341022,196.06215 33.008892,195.31458 34.464252,194.76272 C 35.062052,194.53603 35.927332,193.99791 36.387122,193.5669 C 37.214472,192.7913 37.243082,192.79107 39.164912,193.54426 C 41.642942,194.51542 41.789672,195.33662 39.891492,197.6107 L 38.438612,199.35128 L 35.804402,199.23557 C 34.355582,199.17193 32.009462,199.39656 30.590802,199.73475 C 29.172132,200.07294 27.386412,200.3562 26.622512,200.36423 C 24.677692,200.38467 21.997912,201.68571 21.651692,202.77758 C 21.422762,203.49953 21.631662,203.89642 22.704612,204.77799 C 23.440802,205.38286 24.449142,205.98157 24.945382,206.10844 C 26.190492,206.4268 35.743562,204.81486 36.840842,204.10127 C 37.331922,203.78191 37.733702,203.25102 37.733702,202.92151 C 37.733702,201.92577 38.757382,201.84884 40.457222,202.71682 C 41.342712,203.16898 42.347772,203.53893 42.690702,203.53893 C 43.884082,203.53893 43.745772,204.69998 42.331572,206.55381 C 41.548792,207.57994 40.908332,208.68423 40.908332,209.00781 C 40.908332,209.46885 40.629312,209.53065 39.618642,209.29344 C 37.412922,208.77578 34.551412,209.08144 27.107172,210.62993 C 25.242222,211.01786 24.075352,211.88598 23.331842,213.43869 C 22.705022,214.74771 22.041552,214.81282 19.975642,213.76801 z M 212.57901,213.03403 C 211.99785,212.57646 211.14301,211.45936 210.67937,210.55157 C 209.93928,209.10251 209.84447,208.29502 209.90265,203.93613 C 209.98723,197.59914 209.75546,197.81497 216.09586,198.16857 C 218.70824,198.31426 221.10853,198.58071 221.42984,198.76069 C 221.87889,199.01223 222.04996,200.18975 222.16937,203.85117 C 222.34688,209.29393 222.1115,210.0499 219.50561,212.40634 C 218.06905,213.70538 217.65735,213.86596 215.76357,213.86596 C 214.20453,213.86596 213.35318,213.64356 212.57901,213.03403 z M 214.32229,209.32168 C 214.32229,209.22534 214.14372,209.03606 213.92546,208.90104 C 213.70721,208.76603 213.52864,208.84485 213.52864,209.07619 C 213.52864,209.30755 213.70721,209.49683 213.92546,209.49683 C 214.14372,209.49683 214.32229,209.41802 214.32229,209.32168 z M 213.45225,205.06886 C 213.37684,204.05068 213.07219,203.25941 212.6548,202.99764 C 211.7578,202.43507 211.29197,202.95438 211.96524,203.76637 C 212.42087,204.31588 212.39142,204.4705 211.76417,204.82184 C 211.06886,205.21132 211.08056,205.27297 211.98133,205.96615 C 213.36988,207.03471 213.58799,206.90166 213.45225,205.06886 z M 218.09216,205.91665 C 218.09216,205.06526 216.93911,205.18824 216.77187,206.05746 C 216.66974,206.58827 216.83135,206.75003 217.36168,206.64781 C 217.76344,206.57037 218.09216,206.24135 218.09216,205.91665 z M 218.88582,203.53893 C 218.75093,203.32047 218.11538,203.14173 217.4735,203.14173 C 216.83161,203.14173 216.30643,203.32047 216.30643,203.53893 C 216.30643,203.75738 216.94198,203.93613 217.71875,203.93613 C 218.55925,203.93613 219.03177,203.77531 218.88582,203.53893 z M 135.6659,212.39361 C 133.71982,210.35549 132.99084,208.09104 132.98121,204.05411 C 132.9717,200.0656 133.45425,198.4454 134.72705,198.1924 C 135.18071,198.10223 137.1106,197.93675 139.01569,197.82466 C 143.26596,197.57461 143.68686,197.85944 143.68686,200.98554 C 143.68686,202.60632 143.54369,203.14173 143.11029,203.14173 C 142.79317,203.14173 142.05785,203.35875 141.47623,203.62401 C 140.48587,204.07565 140.43194,204.23428 140.6267,206.12307 C 140.74108,207.23231 140.66396,208.44519 140.45532,208.81836 C 140.16944,209.32967 140.22749,209.49683 140.69093,209.49683 C 141.10385,209.49683 141.30589,209.12134 141.30589,208.35389 C 141.30589,207.05856 142.19146,206.11718 143.08657,206.46098 C 144.12539,206.85999 143.79878,209.13584 142.39371,211.28875 C 141.12588,213.23136 141.05769,213.27245 138.91288,213.38659 C 136.95885,213.49056 136.61207,213.38452 135.6659,212.39361 z M 138.47606,206.18344 C 138.99617,205.55616 138.67786,205.1277 137.69172,205.1277 C 136.87691,205.1277 136.3866,205.74311 136.74236,206.31929 C 137.08862,206.88006 137.95472,206.81219 138.47606,206.18344 z M 138.23047,203.34034 C 138.08288,202.74942 135.6459,202.85941 135.44386,203.4661 C 135.3155,203.85153 135.6721,203.95599 136.79969,203.8633 C 137.64118,203.79412 138.28503,203.55879 138.23047,203.34034 z M 220.67155,213.12021 C 220.67155,212.62479 221.69056,211.84076 221.97041,212.12087 C 222.35384,212.50466 221.8202,213.46877 221.22433,213.46877 C 220.9203,213.46877 220.67155,213.31192 220.67155,213.12021 z M 132.9725,212.47579 C 132.9725,212.1481 133.13197,211.87999 133.32687,211.87999 C 133.52177,211.87999 133.78403,212.1481 133.90966,212.47579 C 134.04879,212.8387 133.91028,213.07158 133.55529,213.07158 C 133.23475,213.07158 132.9725,212.80347 132.9725,212.47579 z M 145.76126,205.82279 C 145.86493,198.87489 145.90236,198.57401 146.66307,198.57401 C 147.09958,198.57401 147.66709,198.43736 147.92419,198.27034 C 148.20868,198.08554 148.46683,198.24102 148.58371,198.66754 C 148.91666,199.88259 148.737,212.27719 148.38644,212.27719 C 148.20248,212.27719 148.05197,210.96363 148.05197,209.35816 C 148.05197,205.03092 147.5904,200.35455 147.18786,200.60356 C 146.9938,200.72361 146.87306,201.38849 146.91956,202.08108 C 146.96606,202.77367 146.97201,205.52986 146.9328,208.20595 C 146.87328,212.26695 146.76157,213.07158 146.25729,213.07158 C 145.73437,213.07158 145.66765,212.09649 145.76126,205.82279 z M 205.40074,208.60315 C 205.25245,206.14551 205.19019,203.0623 205.26239,201.75156 C 205.38726,199.48463 205.44688,199.36227 206.48493,199.24272 C 207.08514,199.17359 207.59526,199.17359 207.61855,199.24272 C 207.64183,199.31184 207.73487,202.38281 207.82531,206.0671 C 207.96801,211.88064 207.91166,212.7358 207.39886,212.53884 C 207.07387,212.41401 206.70243,212.48282 206.57343,212.69173 C 205.94076,213.71635 205.6476,212.69422 205.40074,208.60315 z M 330.59298,209.52419 C 329.5895,208.94142 323.80901,208.19229 320.81321,208.25677 L 317.97792,208.3178 L 316.58065,206.3711 C 315.81214,205.30041 314.46512,203.84666 313.58725,203.14053 C 312.70938,202.43441 311.89864,201.61543 311.7856,201.32058 C 311.66853,201.01523 312.74201,199.57202 314.27975,197.96741 L 316.97944,195.15034 L 323.57675,195.64897 C 330.10161,196.14212 330.19806,196.13764 332.35797,195.24158 L 334.54188,194.33556 L 335.67809,195.14537 C 338.11045,196.87895 338.11857,197.09048 335.83059,199.11647 C 334.68729,200.12886 333.75541,201.26086 333.75974,201.63205 C 333.76407,202.00323 334.40116,202.7906 335.1755,203.38177 C 337.22856,204.94915 337.5567,205.75289 336.49419,206.61164 C 336.01741,206.99698 334.96402,207.89317 334.15333,208.60315 C 332.66681,209.90501 331.68574,210.1588 330.59298,209.52419 z M 332.29582,203.8983 C 332.98032,202.80904 332.27433,201.15439 330.87648,200.57175 C 329.86058,200.14831 322.59475,199.1698 320.46646,199.1698 C 319.62276,199.1698 315.11668,202.31821 315.11668,202.90771 C 315.11668,203.70176 316.22183,203.98643 320.64489,204.33173 C 326.93742,204.82296 331.82911,204.64098 332.29582,203.8983 z M 141.78929,204.27195 C 141.99526,203.65348 142.88305,203.54517 142.91416,204.13472 C 142.92569,204.35318 142.63727,204.59367 142.27322,204.66914 C 141.85944,204.75494 141.67803,204.60604 141.78929,204.27195 z M 204.89652,196.30916 C 204.56132,195.9049 204.53537,195.342 204.80661,194.35875 C 205.57443,191.57536 205.37186,191.63733 213.81993,191.60112 C 218.01787,191.58313 221.63397,191.68063 221.8557,191.8178 C 222.31838,192.10402 222.4103,195.85443 221.96124,196.12408 C 221.79755,196.22237 217.99703,196.43208 213.51566,196.59011 C 206.68096,196.83112 205.29176,196.78584 204.89652,196.30916 z M 133.83688,195.50697 C 133.21988,194.8894 133.23799,192.3475 133.86536,191.50985 C 134.28795,190.94562 135.2959,190.83742 140.67284,190.7791 C 146.43661,190.71659 147.03161,190.77543 147.52964,191.45716 C 148.26249,192.46031 149.04037,195.13534 148.69868,195.47734 C 148.18695,195.98955 134.34657,196.01713 133.83688,195.50697 z M 12.269882,192.30746 C 11.469232,191.60339 10.290962,190.58049 9.6515014,190.03435 C 8.6305914,189.16243 8.4537114,188.6835 8.2007114,186.10612 C 7.9790114,183.8476 8.0379114,183.04545 8.4561714,182.62679 C 8.9162414,182.1663 9.1139014,182.16624 9.7426214,182.62639 C 10.319622,183.04869 10.537512,183.8789 10.718542,186.34486 C 11.048592,190.84073 12.575312,192.34606 13.755472,189.33926 C 14.853232,186.54238 14.651742,186.64555 18.729382,186.7924 C 25.680832,187.04274 34.925202,185.54527 35.880542,184.01413 C 36.131762,183.61149 36.699332,183.28206 37.141802,183.28206 C 38.125512,183.28206 40.908332,185.11751 40.908332,185.76634 C 40.908332,186.02467 39.998562,187.15809 38.886612,188.28506 C 36.938772,190.25921 36.815922,190.31905 35.524952,189.92248 C 34.544232,189.62121 32.394652,189.68969 27.506482,190.17794 C 21.013912,190.82644 17.787672,191.6112 15.754682,193.03647 C 14.558992,193.87473 13.893902,193.7356 12.269882,192.30746 z M 315.21588,189.79503 C 314.2883,189.01659 313.52936,188.16081 313.52936,187.8933 C 313.52936,187.62578 314.34374,186.83235 315.33909,186.13013 C 317.01126,184.95038 317.2601,184.88656 318.61292,185.29046 C 319.49864,185.5549 322.5069,185.67604 326.22787,185.5971 C 331.90841,185.47659 332.47711,185.39637 333.66569,184.54782 C 334.40731,184.01836 335.16402,183.75522 335.45142,183.92685 C 336.64826,184.64158 338.91269,186.69385 338.91922,187.06978 C 338.92315,187.29615 337.89958,188.16118 336.64461,188.99208 C 334.51825,190.39991 334.24123,190.48009 332.57712,190.16927 C 331.59497,189.98583 328.46995,189.84011 325.63263,189.84543 C 321.51584,189.85317 320.21734,189.99357 319.20387,190.54052 C 317.46753,191.47762 317.15015,191.41829 315.21588,189.79503 z M 342.12208,186.5589 C 340.36378,184.98908 340.23398,183.9477 341.73708,183.4702 C 342.53188,183.21771 345.65157,185.46406 345.6653,186.29874 C 345.67238,186.7292 344.4211,188.04838 344.00572,188.04838 C 343.88729,188.04838 343.03965,187.37811 342.12208,186.5589 z M 182.22476,182.57287 C 181.64828,181.49472 180.96993,175.60447 181.37498,175.19405 C 182.05911,174.50085 182.45562,175.38291 182.99413,178.79591 C 183.29727,180.71715 183.55042,182.45291 183.5567,182.65317 C 183.57923,183.3724 182.62139,183.31467 182.22476,182.57287 z M 16.503392,181.59531 C 14.163042,179.89052 14.175212,179.34915 16.615232,176.62071 L 18.487542,174.52709 L 20.670092,175.36762 C 22.605682,176.11303 23.451092,176.18842 28.141322,176.03385 C 33.251472,175.86545 33.462972,175.82398 34.406512,174.80548 L 35.383022,173.75138 L 37.277742,174.71239 C 40.423182,176.30778 40.445652,176.49263 37.825012,179.21526 L 35.523432,181.6064 L 34.346812,180.96499 C 32.521262,179.96984 23.678482,179.79896 21.288212,180.71266 C 20.299672,181.09053 19.287892,181.6445 19.039822,181.94369 C 18.425142,182.68501 17.900402,182.61294 16.503392,181.59531 z M 316.10875,181.08995 C 313.27923,179.4399 313.26998,179.40612 315.12942,177.50975 L 316.79966,175.80633 L 322.80346,176.02202 C 329.45306,176.26091 332.9181,175.79128 334.2356,174.47255 L 335.02942,173.678 L 334.12674,172.71626 C 333.63026,172.1873 332.49881,171.55904 331.61241,171.32014 C 329.46403,170.74111 319.24229,171.05429 317.82899,171.74245 C 316.89517,172.19713 316.57356,172.14715 315.08034,171.31533 C 314.15024,170.79719 313.31795,170.15387 313.2308,169.88571 C 313.14366,169.61757 313.57697,168.92559 314.19372,168.348 C 316.43211,166.25172 316.58433,166.2124 320.87069,166.62338 C 325.44048,167.06154 330.28036,166.75127 331.93274,165.91426 C 332.56048,165.59627 333.4745,164.87018 333.96388,164.30071 C 334.80608,163.32069 334.9393,163.291 336.45464,163.74542 C 337.33517,164.00948 338.47309,164.5639 338.98335,164.97746 L 339.9111,165.72939 L 337.37084,168.06793 C 334.28343,170.91019 334.30315,171.58468 337.54275,173.948 C 338.75847,174.83489 339.67665,175.79998 339.62111,176.13257 C 339.56639,176.46025 338.49702,177.69057 337.24474,178.86661 L 334.96786,181.00487 L 333.07804,180.45539 C 331.87799,180.10647 329.20619,179.90591 325.75789,179.90591 C 320.37457,179.90591 320.31769,179.91537 319.18851,180.99819 C 317.86181,182.27042 318.11986,182.26273 316.10875,181.08995 z M 173.33492,181.04952 C 173.1794,180.89386 173.05215,179.57929 173.05215,178.12826 C 173.05215,175.24181 173.63908,173.97201 174.86411,174.20815 C 175.5509,174.34053 175.63154,174.71027 175.63154,177.72679 C 175.63154,181.03978 175.6143,181.0995 174.62462,181.21502 C 174.07081,181.27966 173.49044,181.2052 173.33492,181.04952 z M 169.66022,180.39705 C 169.54265,180.0904 169.49881,178.34957 169.56279,176.52853 C 169.68434,173.06869 170.06212,172.40214 171.23571,173.57681 C 171.76093,174.1025 171.86943,174.88115 171.7778,177.46718 C 171.67109,180.4791 171.60205,180.70899 170.76862,180.82745 C 170.26863,180.89851 169.77968,180.70865 169.66022,180.39705 z M 177.50696,180.03541 C 177.02559,179.5536 177.34406,174.96855 177.90852,174.25424 C 178.18765,173.90101 178.50695,173.88003 179.06384,174.17835 C 179.72625,174.53319 179.81716,174.9546 179.71663,177.20424 C 179.61622,179.45078 179.48124,179.86157 178.75555,180.129 C 178.2717,180.3073 177.73869,180.26734 177.50696,180.03541 z M 185.96035,180.12277 C 185.83167,179.91436 185.8399,179.29112 185.97865,178.73777 C 186.25213,177.64713 185.54164,171.57168 184.8956,169.47653 C 184.67615,168.76486 184.16551,168.00523 183.76083,167.78845 C 182.62379,167.17936 182.50253,167.30998 183.2066,168.38551 C 183.57228,168.94412 183.87935,170.28757 183.9102,171.46376 C 183.96258,173.46131 183.92239,173.54705 182.97286,173.46316 C 181.1917,173.30582 176.84126,172.6161 176.00064,172.3578 C 175.48397,172.19903 174.98751,172.33667 174.66236,172.72881 C 173.88464,173.66677 173.21353,173.49608 171.46598,171.91582 C 169.69612,170.31538 169.51115,169.38186 170.53718,167.22827 C 171.36111,165.49886 170.89392,164.78854 168.68704,164.41535 C 167.04612,164.13787 165.95901,163.28675 166.67767,162.84218 C 166.90324,162.70265 168.56371,162.78712 170.3676,163.02992 C 172.83291,163.36172 174.55752,163.90913 177.31234,165.23422 C 180.95348,166.98567 182.1792,167.33635 182.1792,166.62669 C 182.1792,165.90336 183.70436,165.7881 185.40969,166.38255 C 186.36111,166.7142 187.52547,166.98816 187.99715,166.99133 C 189.51076,167.00153 190.75913,168.99952 191.0237,171.83524 C 191.3683,175.52892 190.89912,177.0663 188.86555,178.9069 C 187.10974,180.4961 186.37956,180.80169 185.96035,180.12277 z M 165.18172,178.83881 C 164.85346,177.9253 164.96085,166.45608 165.30654,165.50764 C 165.55913,164.81464 167.1445,164.88814 168.22087,165.64274 C 169.01253,166.19775 169.0894,166.49038 168.85484,168.05598 C 168.70803,169.03588 168.47629,172.01362 168.33986,174.67317 L 168.0918,179.50872 L 166.80185,179.6332 C 165.7542,179.73429 165.44988,179.58509 165.18172,178.83881 z M 9.8494314,175.52246 C 8.2958414,174.4658 7.9684814,173.38451 8.9542614,172.56564 C 9.4329114,172.16802 9.8322514,172.31057 11.136812,173.34477 C 12.807272,174.669 13.051182,175.25856 12.257332,176.05313 C 11.617042,176.69402 11.550332,176.67931 9.8494314,175.52246 z M 38.031332,173.133 C 36.842002,172.47849 36.711232,172.15135 37.373822,171.48815 C 37.687632,171.17404 37.617932,170.76424 37.121782,170.00632 C 36.557332,169.14408 36.482542,168.44417 36.699172,166.05144 L 36.962372,163.14421 L 33.292592,162.90623 C 29.235212,162.64313 27.696312,163.0576 27.494392,164.46786 C 27.406902,165.0789 27.916972,165.72634 29.368992,166.8473 C 33.413642,169.9698 33.319242,169.87461 31.499472,168.99565 C 29.192322,167.88129 28.758252,167.96412 27.643642,169.73139 C 26.698112,171.23059 26.618872,171.26825 24.833972,171.06688 C 23.796842,170.94988 22.310302,171.0866 21.419222,171.38095 L 19.841172,171.90224 L 17.449042,169.54897 C 14.443292,166.59206 14.249682,166.23514 14.745762,164.56539 C 14.964992,163.8275 15.205632,162.15135 15.280532,160.84061 C 15.432942,158.17329 15.833442,157.98305 18.018252,159.54021 C 19.018152,160.25285 19.081852,160.41598 18.562992,160.93531 C 18.119702,161.37901 18.026902,162.12227 18.185042,163.96236 C 18.300322,165.3038 18.571342,166.62474 18.787302,166.89781 C 19.021152,167.19351 20.117612,167.39431 21.498372,167.39431 C 23.439472,167.39431 23.888602,167.26001 24.257992,166.56915 C 24.647692,165.84032 24.429282,165.48753 22.387022,163.54693 C 21.115332,162.33854 20.431992,161.47898 20.868502,161.6368 C 22.736522,162.31214 22.965132,162.2749 23.724872,161.1716 C 24.151082,160.55264 24.736892,159.45164 25.026652,158.72492 C 25.456932,157.64579 25.706022,157.4519 26.385632,157.66701 C 28.099372,158.20948 30.861592,158.60945 33.052502,158.63237 C 35.168642,158.6545 35.427162,158.76579 37.028832,160.34412 C 37.971022,161.27256 39.247472,162.44894 39.865392,162.95831 C 40.829412,163.75296 40.947932,164.06307 40.700322,165.14287 C 40.365842,166.6015 40.260682,171.10834 40.527322,172.55654 C 40.752942,173.78194 39.666492,174.03286 38.031332,173.133 z M 314.62226,162.3187 C 313.58643,161.72421 312.73821,161.05066 312.73732,160.82193 C 312.73643,160.59319 313.45764,159.70044 314.34001,158.83804 C 316.55218,156.67592 316.38357,155.73996 313.43016,153.78752 C 312.17519,152.9579 311.15214,152.06061 311.15673,151.79354 C 311.16131,151.52647 311.87993,150.19086 312.75366,148.8255 C 314.1054,146.71319 314.51448,146.34305 315.49724,146.34305 C 316.55471,146.34305 319.34961,145.94481 327.39953,144.64713 C 329.43166,144.31955 330.70645,143.87601 331.47411,143.22946 C 332.74082,142.16262 333.80379,142.2562 335.48886,143.58289 C 336.88455,144.68175 336.82612,145.11885 335.0573,146.81127 C 332.91913,148.85707 332.46258,148.99391 327.55019,149.06121 C 321.40202,149.14544 318.02229,149.90027 316.58519,151.51014 C 315.21628,153.04363 315.31987,153.81461 317.02907,154.81376 C 318.27872,155.54427 318.65092,155.55847 324.56751,155.10145 C 328.2038,154.82057 331.20385,154.39424 331.78346,154.07603 C 334.61267,152.52277 334.40274,152.55047 336.31688,153.47794 C 337.31559,153.96186 338.13272,154.57198 338.13272,154.83378 C 338.13272,155.09557 337.27836,156.15205 336.23415,157.1815 L 334.33559,159.05324 L 331.373,159.07556 C 329.74358,159.08784 326.55997,159.23643 324.2983,159.40575 L 320.18617,159.71362 L 318.41072,161.56799 C 317.43422,162.5879 316.60608,163.41724 316.57042,163.41099 C 316.53475,163.40472 315.65808,162.91319 314.62226,162.3187 z M 248.71408,160.77441 C 248.29267,160.35261 248.40808,157.46447 248.84635,157.46447 C 249.06461,157.46447 249.24318,158.26879 249.24318,159.25184 C 249.24318,161.07034 249.18294,161.2437 248.71408,160.77441 z M 149.74921,156.54318 C 149.93684,155.38585 149.85831,155.22807 149.10668,155.25229 C 148.46287,155.27305 148.28436,155.08278 148.3873,154.48552 C 148.58779,153.32224 149.17686,152.74199 151.47548,151.44354 C 152.60892,150.80327 153.63015,150.03459 153.74487,149.73537 C 153.85959,149.43614 153.16326,148.05893 152.19747,146.67489 C 151.23169,145.29087 150.43958,144.02965 150.43722,143.87219 C 150.43486,143.71474 149.86475,142.77908 149.1703,141.79295 C 147.90442,139.99538 147.8995,139.04942 149.16017,139.84536 C 149.53049,140.07916 151.25527,142.375 152.99301,144.9472 C 154.73075,147.51942 156.21399,149.43941 156.28911,149.21384 C 156.36423,148.98828 155.8809,147.91752 155.21504,146.83437 C 153.86794,144.64303 153.78174,144.34695 154.50043,144.37964 C 154.77325,144.39204 155.84469,145.44735 156.8814,146.72476 C 159.28403,149.68521 159.31315,150.61989 157.07981,153.09371 C 156.15223,154.12117 154.83793,155.61429 154.15915,156.41174 C 153.09578,157.66102 152.69047,157.86166 151.23022,157.86166 L 149.53544,157.86166 L 149.74921,156.54318 z M 155.98854,151.70516 C 156.6217,150.94154 155.97571,150.9335 154.9731,151.69253 C 154.32597,152.18244 154.30608,152.27771 154.84867,152.28832 C 155.20389,152.29526 155.71683,152.03284 155.98854,151.70516 z M 32.033212,153.4637 C 29.679412,151.6105 31.411872,148.34284 34.559082,148.69955 C 35.476582,148.80355 36.940052,150.64685 36.940052,151.69847 C 36.940052,152.81105 35.243082,154.28691 33.963842,154.28691 C 33.477062,154.28691 32.608282,153.91647 32.033212,153.4637 z M 17.991502,152.48591 C 17.326142,152.01852 17.098642,151.46527 17.098642,150.31461 C 17.098642,149.28127 17.393982,148.43206 17.991502,147.74734 C 18.789452,146.83295 19.027282,146.76598 20.228732,147.11737 C 23.032592,147.93742 23.828832,149.80935 22.158202,151.65344 C 20.991902,152.94084 19.160122,153.3068 17.991502,152.48591 z M 176.0945,150.84457 C 175.59141,150.34101 175.83303,149.91779 176.62361,149.91779 C 177.06453,149.91779 177.41726,150.18259 177.41726,150.51357 C 177.41726,151.11827 176.57781,151.32832 176.0945,150.84457 z M 317.18912,141.75279 C 315.45324,140.53582 316.33511,138.00197 318.49453,138.00197 C 320.23925,138.00197 321.2882,139.35941 320.71321,140.87315 C 320.12313,142.4266 318.66823,142.78976 317.18912,141.75279 z M 138.34923,141.47742 C 137.93464,140.14042 137.75773,136.84287 138.08957,136.63759 C 138.51976,136.37147 140.90906,139.11904 140.90906,139.87984 C 140.90906,140.48558 139.49,141.97392 138.91247,141.97392 C 138.68736,141.97392 138.4339,141.75049 138.34923,141.47742 z M 150.67243,139.23898 C 149.11038,137.51135 145.74856,137.35176 143.29007,138.88851 C 142.12092,139.61933 141.47079,138.98812 139.56962,135.27633 C 137.32605,130.89604 137.1625,129.74462 139.04302,131.56897 C 140.71642,133.19238 141.10821,133.18453 140.11106,131.54758 C 138.94724,129.63703 139.10224,129.01493 140.46622,130.1221 C 141.09569,130.63305 142.80121,131.76604 144.25627,132.63986 C 150.20464,136.21211 150.47604,136.41943 151.07152,137.84594 C 151.81828,139.63483 151.62869,140.29661 150.67243,139.23898 z M 326.77597,138.1843 C 326.24388,137.37149 326.20282,136.98277 326.56497,136.18718 C 327.1039,135.00329 327.87225,134.65295 329.19892,134.98624 C 330.3021,135.26337 330.82451,136.62736 330.43002,138.20058 C 330.06999,139.63637 327.71967,139.6259 326.77597,138.1843 z M 311.54522,137.80338 C 310.99958,137.49117 310.14576,137.2294 309.64783,137.22167 C 309.14991,137.21393 308.64037,136.94115 308.51552,136.6155 C 308.30899,136.0768 310.69645,131.97333 311.50876,131.47084 C 311.6964,131.35476 314.22265,130.5306 317.12265,129.63937 C 324.69616,127.31186 325.83104,126.63624 325.83104,124.45507 C 325.83104,123.56589 324.4197,122.90638 322.53137,122.91314 C 321.07316,122.91837 314.24923,124.90693 312.28212,125.89986 C 311.54944,126.2697 310.36799,127.12514 309.65668,127.80082 C 308.38353,129.01021 308.33408,129.02153 306.48205,128.52752 C 305.44732,128.2515 304.4464,127.87273 304.25778,127.68578 C 303.94049,127.37132 306.49971,122.73372 307.24493,122.27273 C 307.42424,122.16181 308.64658,121.89767 309.96124,121.68576 C 312.61618,121.2578 319.13203,119.17703 320.67227,118.2653 C 322.02944,117.46194 323.09782,115.94038 322.81773,115.2098 C 322.21464,113.63673 318.42304,113.49595 315.53196,114.93928 C 314.75792,115.32571 313.23414,115.86023 312.1458,116.12708 C 309.04913,116.88637 306.48472,118.13163 305.7703,119.22297 C 305.20049,120.09341 304.90979,120.19444 303.51418,120.00707 C 301.03012,119.67358 300.7376,119.14519 301.61316,116.57308 C 302.46058,114.08367 303.22711,113.37597 305.07605,113.37597 C 306.3345,113.37597 312.10023,111.31063 315.19517,109.75121 C 316.00224,109.34456 317.25132,108.27854 317.97091,107.3823 C 319.25053,105.78851 319.32077,105.75826 321.17108,106.00394 C 324.73304,106.47688 324.95872,106.93219 323.05324,109.80123 C 322.40034,110.78429 321.86539,111.79013 321.86445,112.03646 C 321.86171,112.76011 322.89695,113.4194 325.53634,114.37487 C 326.98046,114.89764 328.06663,115.53648 328.14076,115.90667 C 328.2107,116.25593 327.61238,117.60476 326.81115,118.90405 C 326.00992,120.20334 325.47987,121.46965 325.63326,121.71807 C 325.78665,121.96649 327.09927,122.74315 328.55019,123.44398 C 330.48367,124.3779 331.22214,124.95433 331.31523,125.60232 C 331.43629,126.44505 328.94436,131.11185 328.03783,131.74009 C 327.80625,131.90059 326.69458,132.03464 325.56746,132.03799 C 324.20093,132.04205 322.32376,132.50028 319.93331,133.41335 C 314.88679,135.34096 314.06905,135.82877 313.59303,137.19552 C 313.12107,138.55062 312.94336,138.60337 311.54522,137.80338 z M 187.73899,137.41124 C 186.98565,136.50269 187.50737,135.68546 188.69559,135.91281 C 189.53479,136.07338 189.71894,135.95733 189.71894,135.26793 C 189.71894,134.80554 189.47974,134.42724 189.1874,134.42724 C 188.89504,134.42724 188.45683,133.99003 188.21359,133.45568 C 187.85156,132.66038 187.90513,132.31874 188.50886,131.57246 C 189.22426,130.68818 189.27029,130.68243 190.04166,131.38114 C 192.13524,133.27756 191.99746,135.99581 189.7401,137.3305 C 188.36006,138.14646 188.34897,138.14691 187.73899,137.41124 z M 42.639322,126.11759 C 40.920532,125.06856 33.991292,122.88349 31.582872,122.63102 C 29.909642,122.45564 29.480272,122.55445 28.842772,123.26162 C 27.725032,124.50153 27.143512,124.29713 26.289222,122.36409 C 25.867232,121.40922 25.323152,120.50499 25.080172,120.35467 C 24.404342,119.93661 24.554502,118.94001 25.332822,118.67776 C 25.714772,118.54906 26.786202,118.09188 27.713792,117.66181 C 29.081302,117.02776 29.399812,116.67994 29.397702,115.823 C 29.396262,115.24174 29.040292,114.22994 28.606652,113.57456 C 27.499132,111.90073 27.616472,111.10107 29.102692,110.19406 C 31.075112,108.99036 32.115002,109.15585 32.793602,110.78145 C 33.612932,112.74419 33.520602,113.24119 32.190552,114.02759 C 29.132602,115.83562 30.669382,117.15497 39.280392,120.1143 C 43.339822,121.5094 44.993042,121.31803 46.596422,119.26739 L 47.558712,118.03669 L 49.109242,120.37336 C 49.962032,121.65852 50.797112,122.93251 50.964962,123.20444 C 51.176272,123.54679 50.466612,124.08305 48.657902,124.94783 C 47.221162,125.63475 45.950652,126.35063 45.834542,126.53866 C 45.477152,127.11746 43.947232,126.91585 42.639322,126.11759 z M 139.47711,124.32974 C 139.00756,123.10499 139.7608,122.90862 144.92836,122.90862 C 150.05555,122.90862 150.09043,122.91481 149.9645,123.8023 C 149.84153,124.66899 149.68459,124.69935 144.77026,124.80722 C 140.58743,124.89902 139.66341,124.81566 139.47711,124.32974 z M 249.81705,123.6684 C 249.67041,123.4309 249.72122,123.06565 249.92996,122.85672 C 250.42096,122.36526 283.0065,122.38549 283.49811,122.87756 C 284.601,123.98147 282.97003,124.1002 266.70363,124.1002 C 255.16367,124.1002 250.00218,123.96821 249.81705,123.6684 z M 75.145332,123.08616 C 74.569202,122.66019 74.533832,122.47006 74.951812,122.04607 C 75.353882,121.63823 78.536122,121.52629 89.826092,121.52284 C 102.82236,121.51886 104.20093,121.5804 104.31553,122.16965 C 104.42787,122.74732 103.62196,122.84733 97.179402,123.05525 C 79.716822,123.61884 75.873062,123.62424 75.145332,123.08616 z M 216.74464,121.77787 C 216.43149,121.56423 216.30079,121.11308 216.44391,120.73979 C 216.66154,120.17211 217.10084,120.11743 219.57715,120.34977 C 222.51383,120.6253 223.49428,120.99968 222.64884,121.52268 C 221.88653,121.99424 217.34926,122.19036 216.74464,121.77787 z M 256.82688,120.81421 C 256.64743,120.32772 256.47575,118.67851 256.44539,117.14931 C 256.41503,115.62012 256.27746,111.85231 256.13969,108.77641 C 255.80078,101.21 255.67643,101.40065 260.85619,101.5458 L 264.88693,101.65876 L 265.17896,103.04893 C 265.33958,103.81353 265.49471,107.60996 265.5237,111.48543 C 265.55543,115.72635 265.73544,118.63012 265.97585,118.77884 C 266.20736,118.92205 266.34242,118.63147 266.29711,118.08763 C 266.25412,117.57155 266.23871,113.79799 266.26287,109.70193 C 266.30024,103.36637 266.39566,102.25455 266.90204,102.25455 C 267.41461,102.25455 267.49728,103.57853 267.49728,111.7872 C 267.49728,120.49264 267.31235,122.22984 266.52191,120.9497 C 266.38718,120.7315 265.89521,120.7863 265.32345,121.08321 C 264.77913,121.36586 262.77376,121.61142 260.75335,121.64282 C 257.36822,121.69542 257.13367,121.64593 256.82688,120.81421 z M 263.44963,119.65163 C 263.7861,119.31485 263.92583,116.99233 263.92583,111.73613 C 263.92583,102.85955 263.90576,102.81143 260.38774,103.25032 C 259.16898,103.40237 258.03958,103.73204 257.87796,103.98294 C 257.41473,104.70206 257.91239,118.9803 258.42211,119.59504 C 258.97848,120.26604 262.79289,120.30898 263.44963,119.65163 z M 269.23304,121.42269 C 268.60925,121.00184 268.1092,103.33662 268.69031,102.2498 C 269.06777,101.54386 269.52649,101.46016 273.01825,101.46016 C 275.66958,101.46016 277.04966,101.61962 277.31529,101.95666 C 277.94113,102.75072 278.31688,120.91531 277.71138,121.1045 C 276.62931,121.44261 269.65075,121.70451 269.23304,121.42269 z M 276.59216,119.57127 C 276.91396,119.18317 276.97546,117.88855 276.79499,115.30144 C 276.65254,113.25938 276.53575,109.83855 276.53547,107.6996 C 276.5349,103.465 276.0807,102.38446 274.48183,102.81408 C 274.02329,102.93728 273.15705,103.04053 272.55684,103.04352 C 271.95664,103.0465 271.10842,103.40641 270.67191,103.84332 C 269.77753,104.73853 269.6768,106.83481 270.14082,114.89546 C 270.36413,118.77478 270.48838,119.3707 271.04359,119.22537 C 271.3977,119.13269 271.9124,119.29792 272.18738,119.59256 C 272.84977,120.3023 275.99863,120.28709 276.59216,119.57127 z M 271.36636,115.62735 C 270.89446,114.47374 270.9878,112.73889 271.49447,113.24602 C 271.72863,113.4804 271.86256,114.27578 271.79209,115.01354 C 271.69285,116.05264 271.59691,116.19096 271.36636,115.62735 z M 82.376892,120.62714 C 81.067362,120.54723 79.861202,120.34787 79.696552,120.18413 C 79.531892,120.0204 79.286962,116.18719 79.152252,111.66588 C 78.965412,105.3944 79.024392,103.30416 79.401012,102.84994 C 79.775052,102.39883 80.790782,102.25455 83.592552,102.25455 C 85.626372,102.25455 87.368082,102.3886 87.463012,102.55244 C 87.557952,102.71629 87.760042,106.72463 87.912122,111.45987 C 88.180552,119.81847 88.165402,120.08184 87.392182,120.49602 C 86.954152,120.73067 86.182242,120.88885 85.676812,120.84755 C 85.171392,120.80624 83.686422,120.70705 82.376892,120.62714 z M 86.668622,118.38046 C 87.217542,117.6392 86.710362,104.72164 86.103592,103.98986 C 85.693812,103.49565 85.108512,103.40126 83.490382,103.56841 C 82.343542,103.68689 81.200242,103.91062 80.949702,104.06561 C 80.266432,104.48829 80.682562,118.50226 81.391412,118.94076 C 82.090542,119.37324 86.261352,118.93042 86.668622,118.38046 z M 254.6665,120.65785 C 254.521,120.51222 254.41327,116.44595 254.4271,111.6217 C 254.45818,100.78269 255.01774,101.40563 255.41587,112.72248 C 255.6868,120.42327 255.57845,121.57064 254.6665,120.65785 z M 89.420592,120.24807 C 88.761232,120.00082 88.698972,102.83818 89.355962,102.43175 C 90.317642,101.83686 90.554682,103.27859 90.769502,111.02916 C 90.949622,117.52773 90.887332,119.26407 90.455402,119.78468 C 90.159082,120.14184 89.693412,120.35038 89.420592,120.24807 z M 92.285912,120.10935 C 92.144602,119.88047 91.928422,115.86368 91.805532,111.18312 C 91.592752,103.0796 91.618122,102.65827 92.336662,102.36448 C 93.379012,101.9383 99.188842,102.04238 99.641382,102.49533 C 99.844182,102.69832 100.13292,106.56292 100.28302,111.08336 C 100.49591,117.49485 100.44441,119.43681 100.04883,119.91389 C 99.662422,120.37991 98.708942,120.52546 96.042302,120.52546 C 94.031302,120.52546 92.433572,120.34847 92.285912,120.10935 z M 98.950672,118.38645 C 99.250362,117.94973 98.970222,106.46655 98.617832,104.74306 C 98.389692,103.6272 97.081432,103.27674 94.821602,103.72611 L 93.091252,104.0702 L 93.153482,107.03501 C 93.187712,108.66566 93.232862,111.75521 93.253822,113.90068 C 93.304832,119.12214 93.509472,119.46157 96.392502,119.10669 C 97.632392,118.95408 98.783572,118.62997 98.950672,118.38645 z M 77.260582,119.49998 C 76.926842,118.62948 77.033472,105.46093 77.384142,104.24052 C 77.655392,103.2965 77.681812,103.31608 77.920052,104.63771 C 78.126512,105.78307 78.395492,117.93055 78.252052,119.63178 C 78.192832,120.33424 77.547532,120.24847 77.260582,119.49998 z M 101.51402,119.05785 C 101.16455,117.63737 101.2243,103.44613 101.57975,103.44613 C 101.77787,103.44613 102.05492,105.72503 102.19542,108.51035 C 102.65231,117.5685 102.64512,119.44044 102.15277,119.61287 C 101.89847,119.70193 101.61103,119.45217 101.51402,119.05785 z M 47.687712,114.39093 C 46.723872,113.66767 44.100032,112.12841 41.856952,110.97038 C 37.821032,108.88674 37.761762,108.87042 36.156942,109.40055 C 34.288112,110.01789 34.319782,110.04042 32.571472,106.84971 C 31.706342,105.27081 31.395942,104.3119 31.630192,103.94184 C 31.822422,103.63818 32.961842,103.05547 34.162252,102.64694 L 36.344812,101.90415 L 37.733702,103.19518 C 40.036982,105.33615 48.878632,110.19842 50.468532,110.19842 C 50.817412,110.19842 51.426072,109.84095 51.821112,109.40404 C 52.216152,108.96713 52.752852,108.60965 53.013782,108.60965 C 53.482492,108.60965 55.987812,112.30066 55.987812,112.9912 C 55.987812,113.4676 54.634352,114.17036 53.716832,114.17036 C 53.312122,114.17036 52.280472,114.52783 51.424282,114.96474 C 50.568092,115.40165 49.771402,115.74717 49.653852,115.73255 C 49.536312,115.71793 48.651552,115.1142 47.687712,114.39093 z M 214.90931,112.84297 C 212.5938,108.88103 209.56239,107.02088 205.42126,107.02088 C 203.51817,107.02088 203.05658,107.19951 201.23429,108.64128 C 198.64706,110.68825 197.86809,110.52078 198.1543,107.97913 C 198.38369,105.94219 197.8363,103.73302 196.88977,102.87563 C 196.54127,102.55995 193.93704,101.10174 191.1026,99.635157 C 188.26816,98.168577 184.75902,96.185817 183.30452,95.229017 C 180.71953,93.528567 177.81409,90.729927 177.81409,89.940397 C 177.81409,89.253327 178.85128,89.510377 179.63752,90.392307 C 181.59888,92.592357 186.08126,95.662397 190.75385,98.005977 C 196.50528,100.89069 198.92233,103.00183 199.40168,105.55934 C 199.7153,107.23263 199.68984,107.22069 201.23671,106.42003 C 202.84398,105.58812 206.6585,105.25638 208.59283,105.78029 C 211.18928,106.48353 214.37512,108.95489 215.58159,111.2017 C 217.90868,115.53542 217.32116,116.96976 214.90931,112.84297 z M 297.75544,111.93062 C 297.10534,111.65589 297.1369,110.78229 297.8734,108.66556 C 298.20475,107.71325 298.37263,106.60857 298.24647,106.2107 C 298.02471,105.51135 297.61625,105.36341 294.35072,104.79974 C 293.51483,104.65545 292.74841,104.32216 292.64755,104.05909 C 292.54669,103.79602 292.69883,102.17264 292.98565,100.45156 L 293.50712,97.322347 L 296.07771,95.795007 C 297.49154,94.954977 299.36259,93.944167 300.23562,93.548767 C 301.10864,93.153387 302.74873,92.095747 303.88026,91.198457 C 305.65285,89.792847 305.97434,89.321777 306.20308,87.795057 C 306.34909,86.820447 306.69211,85.937197 306.96535,85.832247 C 307.74479,85.532877 311.62592,85.891507 312.03471,86.300677 C 312.26068,86.526847 312.16069,87.382117 311.7755,88.517697 C 311.43059,89.534537 311.14839,90.887867 311.14839,91.525117 C 311.14839,92.448607 310.79162,92.929417 309.39037,93.894397 C 308.42346,94.560257 307.5208,95.105057 307.38446,95.105057 C 306.76451,95.105057 303.33916,96.884357 300.82412,98.512827 C 297.28706,100.80305 296.69153,102.53489 298.93506,104.00625 C 300.15719,104.80777 302.60737,104.17774 306.9817,101.9372 C 311.18707,99.783197 312.26064,99.018747 313.16065,97.537427 C 313.84585,96.409667 314.09819,96.296637 315.93059,96.296637 C 317.03942,96.296637 318.28786,96.479417 318.70489,96.702807 C 319.44882,97.101317 319.44785,97.148187 318.65365,99.185277 C 317.63815,101.78999 317.08065,102.31437 314.1246,103.44526 C 312.81507,103.94624 309.84797,105.32792 307.53104,106.51567 C 303.74033,108.45895 303.24355,108.841 302.57068,110.33051 C 301.86502,111.89262 301.7224,111.99015 300.0372,112.06302 C 299.05505,112.10549 298.02826,112.04591 297.75544,111.93062 z M 52.813182,105.05774 C 51.521792,103.48902 38.952422,97.091027 37.161932,97.091027 C 35.530062,97.091027 34.982552,96.615337 33.177732,93.629457 L 31.685592,91.160877 L 33.625482,88.099477 C 35.701772,84.822837 36.334882,84.289677 36.717342,85.495777 C 36.870422,85.978537 36.446972,87.163627 35.560532,88.733357 C 34.169592,91.196437 33.943392,92.086057 34.403122,93.285207 C 34.746252,94.180207 35.605082,94.064217 37.103192,92.920487 C 37.818562,92.374347 38.689362,91.927507 39.038302,91.927507 C 39.387242,91.927507 41.334682,93.005197 43.365952,94.322367 C 45.397222,95.639537 48.519552,97.467417 50.304462,98.384327 C 53.454182,100.00233 53.602512,100.03731 55.340902,99.571917 C 56.326032,99.308197 57.337442,99.044277 57.588482,98.985407 C 58.110432,98.863037 61.291682,103.82941 60.927092,104.19747 C 60.726612,104.39986 58.110922,105.17033 54.598912,106.06147 C 54.047542,106.20138 53.502392,105.89496 52.813182,105.05774 z M 76.000222,100.62137 C 75.447862,99.726807 76.969152,99.485597 83.368962,99.453067 C 86.970182,99.434767 92.713672,99.387337 96.132272,99.347687 C 99.550872,99.308037 102.47474,99.401937 102.62975,99.556357 C 102.78476,99.710777 102.80585,100.11294 102.67661,100.45005 C 102.47139,100.98533 100.78427,101.06296 89.357262,101.06296 C 80.185222,101.06296 76.191362,100.93092 76.000222,100.62137 z M 253.60829,99.916257 C 253.60829,99.172657 279.70781,98.930927 279.8964,99.672787 C 279.96181,99.930097 275.35049,100.10684 266.80283,100.17464 C 259.02261,100.23634 253.60829,100.13032 253.60829,99.916257 z M 75.826942,97.951617 C 75.002812,97.675067 75.558902,97.025987 79.896712,93.201297 C 82.352092,91.036367 84.960462,88.702157 85.693092,88.014157 C 87.911032,85.931337 89.361702,84.778017 89.763632,84.778017 C 89.973372,84.778017 92.596672,87.056927 95.593172,89.842237 C 98.589682,92.627567 101.75261,95.471947 102.62191,96.163087 C 103.4912,96.854227 104.10508,97.517687 103.98607,97.637437 C 103.7548,97.870167 76.490672,98.174347 75.826942,97.951617 z M 89.758212,89.122617 C 89.450762,88.352287 89.366552,88.733107 89.346542,90.984177 C 89.332702,92.540687 89.455312,94.417417 89.619012,95.154707 C 89.853962,96.212977 89.940642,95.821007 90.030682,93.293157 C 90.093402,91.531997 89.970792,89.655257 89.758212,89.122617 z M 253.47602,97.620617 C 253.33051,97.474977 253.21146,97.228837 253.21146,97.073627 C 253.21146,96.583427 265.14415,85.771007 265.68513,85.771007 C 266.27702,85.771007 277.41799,96.429917 277.41799,96.996187 C 277.41799,97.201387 275.7834,97.485397 273.78557,97.627337 C 269.02373,97.965657 253.81571,97.960627 253.47602,97.620617 z M 266.71999,88.607467 C 266.43362,88.320827 266.3068,89.295127 266.3068,91.781877 C 266.3068,96.444787 266.86751,97.007497 267.01762,92.495237 C 267.08544,90.456527 266.96246,88.850157 266.71999,88.607467 z M 288.53697,94.806107 C 287.5591,94.722037 286.52646,94.460057 286.24222,94.223937 C 285.54277,93.642917 286.02032,89.216547 286.89291,88.192667 C 287.24722,87.776917 289.03513,86.436397 290.86605,85.213717 C 292.69697,83.991027 294.8609,82.543807 295.67478,81.997677 C 297.56692,80.727997 300.07494,78.769357 303.16114,76.151197 C 305.32445,74.315957 305.72099,74.122237 306.61674,74.463127 C 307.17326,74.674907 308.22738,74.848187 308.95921,74.848187 C 309.69105,74.848187 310.57229,74.956677 310.91752,75.089277 C 312.47334,75.686847 311.39461,76.790747 305.30406,80.833697 C 298.34167,85.455387 293.45864,89.006647 292.37073,90.239677 C 291.97365,90.689737 291.52713,91.909007 291.37848,92.949177 C 291.08149,95.027317 291.08481,95.025157 288.53697,94.806107 z M 257.12089,86.457737 C 256.10636,85.643117 254.14206,84.123707 252.75577,83.081267 C 251.36949,82.038827 249.15059,80.251457 247.8249,79.109337 C 246.49921,77.967207 241.54369,73.753917 236.81265,69.746477 C 232.0816,65.739017 228.31069,62.298337 228.43285,62.100497 C 228.555,61.902657 229.13549,61.746097 229.72281,61.752567 C 230.50766,61.761217 232.26302,63.035707 236.34626,66.561567 C 240.70498,70.325287 255.54853,82.821747 259.68666,86.211307 C 260.48327,86.863817 260.40148,87.706647 259.52783,87.847917 C 259.21854,87.897917 258.13541,87.272347 257.12089,86.457737 z M 279.63543,85.572417 C 279.50711,84.698587 279.30126,83.293047 279.17797,82.448997 C 278.95424,80.917277 279.64215,79.614507 280.67468,79.614507 C 281.11877,79.614507 284.85002,76.337257 292.57065,69.165987 L 297.20735,64.859207 L 300.40801,65.138657 C 302.16836,65.292357 303.60866,65.542307 303.60866,65.694097 C 303.60866,65.845887 301.06399,68.093037 297.95385,70.687747 C 290.86277,76.603677 286.97049,80.195017 285.9498,81.763687 C 285.49163,82.467837 285.15614,83.654817 285.15614,84.571707 C 285.15614,86.151197 285.14514,86.162557 283.172,86.622457 C 279.98073,87.366297 279.8951,87.340867 279.63543,85.572417 z M 94.083322,84.189657 C 94.083322,83.663007 97.383762,80.809987 103.9405,75.668757 C 105.17585,74.700097 109.19197,71.482827 112.86522,68.519267 C 116.53846,65.555697 120.10487,62.728807 120.79058,62.237287 C 122.17858,61.242337 123.84545,61.050557 123.84545,61.885807 C 123.84545,62.409497 109.71559,73.831097 102.2809,79.317097 C 100.28218,80.791947 97.902242,82.623997 96.992162,83.388337 C 95.248632,84.852627 94.083322,85.173647 94.083322,84.189657 z M 70.075212,79.904737 C 67.538222,77.292177 66.900592,76.396217 66.900592,75.443977 C 66.900592,74.261897 66.884752,74.253407 64.915922,74.379417 C 62.333362,74.544697 60.934712,73.979447 59.957752,72.375627 C 58.929872,70.688177 58.950132,68.655917 60.014452,66.690407 C 60.483062,65.824997 61.509862,63.865787 62.296222,62.336587 C 63.161212,60.654467 63.961082,59.576307 64.321202,59.607057 C 64.648592,59.635017 65.987882,59.857467 67.297422,60.101397 C 68.606952,60.345327 70.347682,60.643267 71.165712,60.763497 C 72.450312,60.952317 72.850222,61.290957 74.099832,63.248117 C 74.895582,64.494427 76.804242,66.813197 78.341312,68.400937 C 80.581392,70.714877 81.437342,71.335977 82.654682,71.530817 C 84.332022,71.799287 84.717322,72.505227 84.489482,74.892517 C 84.364562,76.201437 84.304542,76.244047 82.302032,76.445687 C 81.169582,76.559707 80.098142,76.797827 79.921062,76.974847 C 79.743982,77.151847 79.509812,78.396767 79.400682,79.741357 L 79.202262,82.186047 L 77.614952,82.491617 C 73.153462,83.350497 73.555132,83.488307 70.075212,79.904737 z M 77.714162,77.921987 C 79.108302,76.823857 77.412652,73.628107 72.711232,68.493077 C 71.133272,66.769607 71.053362,66.733277 70.475792,67.476717 C 70.146352,67.900767 69.876802,68.654337 69.876802,69.151317 C 69.876802,69.648297 69.577832,70.682437 69.212422,71.449397 L 68.548052,72.843897 L 70.870522,75.335517 C 72.147882,76.705907 73.444372,78.036817 73.751602,78.293117 C 74.362582,78.802777 76.897342,78.565367 77.714162,77.921987 z M 67.797052,70.776957 C 69.488912,68.969197 69.742022,66.400907 68.346972,65.196947 C 67.596122,64.548957 65.327482,63.726767 64.290332,63.726767 C 62.605552,63.726767 61.172012,67.066437 61.962972,69.148737 C 62.686172,71.052667 63.505262,71.670637 65.305602,71.670637 C 66.509582,71.670637 67.188612,71.427067 67.797052,70.776957 z M 272.55684,78.788297 C 272.00987,78.469427 271.86239,77.843317 271.86239,75.840067 C 271.86239,73.322967 271.87677,73.289857 273.25366,72.635877 C 274.78636,71.907897 279.89531,66.667627 281.8887,63.778887 C 282.86595,62.362707 283.14413,61.559467 283.09756,60.288447 L 283.03706,58.637487 L 285.80663,58.359097 C 287.32988,58.205977 288.62851,58.144597 288.69246,58.222677 C 288.7564,58.300757 288.72362,60.025677 288.61959,62.055817 L 288.43047,65.746997 L 286.99172,66.484207 C 284.81229,67.600937 276.62433,76.158637 276.62433,77.319737 C 276.62433,77.839107 276.41005,78.478537 276.14814,78.740677 C 275.57115,79.318207 273.51262,79.345507 272.55684,78.788297 z M 87.432782,69.393657 C 85.948522,69.259987 85.650552,69.062777 84.987112,67.774977 C 83.733072,65.340787 76.604492,57.007937 75.714022,56.935327 C 75.450002,56.913797 74.787552,56.869117 74.241912,56.836027 C 73.298772,56.778837 73.244012,56.641877 73.131692,54.059067 C 72.956372,50.027737 73.287172,49.830637 77.835082,51.256567 C 79.278842,51.709247 79.739222,52.081767 80.123112,53.107987 C 80.387432,53.814587 82.208032,56.445407 84.168882,58.954267 C 86.129742,61.463117 87.734072,63.630957 87.734072,63.771697 C 87.734072,64.227057 90.012412,64.987347 90.970232,64.851607 C 91.757252,64.740087 91.919682,64.457477 92.023402,63.019277 C 92.175542,60.909617 90.974922,58.178557 88.318342,54.591307 C 87.266762,53.171337 85.999372,51.451807 85.501922,50.770117 C 84.779672,49.780367 84.386262,49.571087 83.549082,49.731277 L 82.500702,49.931867 L 82.784612,47.197377 C 83.101582,44.144497 83.456782,43.469887 84.747232,43.469887 C 87.147482,43.469887 87.853952,44.154267 90.511872,49.054197 C 91.930532,51.669547 93.938562,54.968357 94.974162,56.384907 C 96.748362,58.811747 96.948832,58.960447 98.446412,58.960447 L 100.03575,58.960447 L 100.10189,60.946407 C 100.13826,62.038697 100.1829,63.245167 100.2011,63.627467 C 100.246,64.571347 99.002052,64.690627 96.348062,63.996927 C 95.150152,63.683817 93.954192,63.561167 93.690382,63.724357 C 93.385842,63.912747 93.242432,64.873657 93.297582,66.356377 C 93.345352,67.640797 93.363112,68.915097 93.337052,69.188167 C 93.289872,69.682597 91.379292,69.749087 87.432782,69.393657 z M 248.31725,60.681607 C 248.17175,60.535967 248.03911,59.955077 248.02251,59.390727 C 248.0059,58.826387 247.76941,57.746977 247.49698,56.992037 L 247.00164,55.619437 L 249.84974,52.805487 C 251.48654,51.188317 253.49473,48.646917 254.57153,46.830007 C 256.3869,43.766867 256.43862,43.591677 256.23349,41.200197 L 256.02177,38.731917 L 257.49362,38.322757 C 258.30314,38.097717 259.1978,37.912607 259.48176,37.911387 C 260.16809,37.908447 260.98321,39.997057 261.3123,42.601847 C 261.57716,44.698307 261.56569,44.728227 259.63686,46.970977 C 257.08525,49.937867 253.63594,54.819327 253.00852,56.351387 C 252.73398,57.021757 252.59786,58.148047 252.70602,58.854217 C 252.87614,59.964907 252.75938,60.192707 251.84076,60.542287 C 250.63486,61.001187 248.71248,61.077197 248.31725,60.681607 z M 188.3536,60.237107 C 183.87603,60.120047 182.97286,59.823987 182.97286,58.473297 C 182.97286,57.693927 183.22263,57.688957 208.46908,57.965207 C 235.19901,58.257697 235.4565,58.277187 234.81157,59.959397 C 234.57752,60.569897 232.88897,60.611917 213.6262,60.486687 C 202.11412,60.411847 190.74146,60.299547 188.3536,60.237107 z M 119.95899,59.677857 C 119.25784,58.976057 119.37501,57.853237 120.19524,57.413847 C 120.63044,57.180727 130.88022,57.014557 146.39316,56.989127 C 169.85507,56.950687 171.89636,56.999977 172.13049,57.610697 C 172.27036,57.975527 172.20303,58.562527 171.98086,58.915127 C 171.6176,59.491647 169.30295,59.562577 149.00087,59.619287 C 136.58405,59.653967 125.07771,59.789137 123.43124,59.919647 C 121.34178,60.085277 120.29308,60.012247 119.95899,59.677857 z M 106.58342,57.763907 C 105.27388,57.592507 104.06692,57.535027 103.90127,57.636197 C 103.03477,58.165397 101.78248,56.862937 98.614982,52.138127 C 96.694932,49.274087 94.722202,46.528617 94.231132,46.037097 C 93.443002,45.248247 93.365032,44.870547 93.566432,42.817187 C 93.691912,41.537747 93.948842,40.189897 94.137372,39.821957 C 94.625122,38.870067 94.561732,36.814937 94.034572,36.488827 C 93.789492,36.337237 92.762702,36.003247 91.752802,35.746647 C 90.243222,35.363087 89.895602,35.103547 89.798382,34.287447 C 89.733352,33.741487 89.870542,32.793547 90.103252,32.180917 C 90.436692,31.303087 90.714032,31.111277 91.411982,31.275737 C 95.497842,32.238517 103.39127,34.403387 103.99494,34.726747 C 104.40763,34.947827 105.89598,37.407627 107.30238,40.192977 C 108.70878,42.978327 110.50629,46.236237 111.29686,47.432767 C 112.933,49.909077 113.05782,51.072577 111.97174,53.723287 C 111.55235,54.746837 111.04729,56.120497 110.84937,56.775877 C 110.4406,58.129497 110.05632,58.218497 106.58342,57.763907 z M 107.41794,53.179567 C 107.88355,51.322727 107.23789,49.384347 104.73237,45.116957 C 101.52258,39.650087 100.51975,38.398117 98.929112,37.871937 C 97.603622,37.433457 96.464292,37.862587 96.464292,38.800307 C 96.464292,39.369657 100.21573,45.927207 102.54406,49.427797 C 105.8384,54.380737 106.90991,55.205567 107.41794,53.179567 z M 206.98097,56.571087 C 204.49244,56.428397 203.71033,56.274537 204.40159,56.063707 C 205.88372,55.611647 221.86407,55.899947 221.86011,56.378677 C 221.85655,56.808957 213.10336,56.922147 206.98097,56.571087 z M 224.44803,56.583047 C 223.81062,56.356457 223.9238,56.265627 225.04327,56.105277 C 227.10999,55.809257 229.77911,55.934047 229.89496,56.332127 C 230.02038,56.763067 225.53561,56.969667 224.44803,56.583047 z M 195.67136,56.180087 C 195.67136,55.961627 195.8394,55.782887 196.04477,55.782887 C 196.25015,55.782887 196.52854,55.961627 196.66343,56.180087 C 196.79832,56.398537 196.63029,56.577277 196.29003,56.577277 C 195.94976,56.577277 195.67136,56.398537 195.67136,56.180087 z M 200.4333,56.180087 C 200.4333,55.961627 200.70116,55.782887 201.02855,55.782887 C 201.35593,55.782887 201.62379,55.961627 201.62379,56.180087 C 201.62379,56.398537 201.35593,56.577277 201.02855,56.577277 C 200.70116,56.577277 200.4333,56.398537 200.4333,56.180087 z M 124.82402,55.363837 C 124.6786,55.128327 124.65301,54.842187 124.76714,54.727947 C 125.01414,54.480717 171.91996,54.517257 172.16734,54.764877 C 173.0361,55.634437 170.18282,55.755797 148.46039,55.773237 C 132.16062,55.786337 125.0084,55.662447 124.82402,55.363837 z M 182.7324,54.029067 C 182.61384,53.719837 182.5748,52.960207 182.64565,52.340997 L 182.77444,51.215157 L 195.86978,51.196827 C 203.07221,51.186737 212.89371,51.276117 217.69533,51.395427 L 226.42556,51.612357 L 226.56245,52.583087 C 226.84624,54.595457 226.89263,54.591307 204.11487,54.591307 C 186.2273,54.591307 182.91456,54.504207 182.7324,54.029067 z M 235.39229,52.283677 C 234.75219,51.014487 233.92559,49.724447 233.55539,49.416937 C 232.96148,48.923567 232.77322,48.984757 231.95473,49.937197 C 230.64982,51.455637 229.65971,51.289897 227.40063,49.174837 C 225.52556,47.419317 225.43348,47.235477 225.43348,45.246907 C 225.43348,42.353847 226.33776,41.272537 228.71572,41.322077 C 229.68628,41.342307 231.27622,41.744467 232.24892,42.215767 C 234.36416,43.240687 234.79539,43.273697 235.11683,42.435247 C 235.28704,41.991307 234.42304,40.871307 232.27053,38.745567 C 229.60025,36.108507 229.11565,35.415007 228.70798,33.647287 C 228.19208,31.410207 228.64163,29.170907 229.60664,29.170907 C 229.89487,29.170907 230.51532,29.793837 230.98543,30.555177 C 232.08789,32.340637 237.73513,37.508837 238.58557,37.510617 C 238.94417,37.511377 239.35508,37.205457 239.49871,36.830827 C 239.6905,36.330557 239.0213,35.444767 236.97886,33.495427 C 233.25998,29.946057 231.78274,27.580517 231.78274,25.174787 C 231.78274,22.620977 232.74587,21.507017 235.66202,20.688037 C 238.92348,19.772077 240.75503,19.879507 243.31024,21.136637 C 246.10971,22.513957 252.77624,27.233317 252.79808,27.853267 C 252.80719,28.111617 252.41285,28.446847 251.92177,28.598207 C 250.88728,28.917067 246.88713,32.218497 246.58712,33.001047 C 246.47547,33.292267 247.01561,34.410347 247.78744,35.485667 C 250.22701,38.884497 250.83049,40.416477 250.83049,43.210577 C 250.83049,45.429527 250.66188,46.015807 249.5408,47.694827 C 248.68759,48.972677 247.64675,49.923177 246.46538,50.503317 C 241.72358,52.831917 237.7226,54.591307 237.16906,54.591307 C 236.82021,54.591307 236.05463,53.596987 235.39229,52.283677 z M 244.44873,50.245347 C 246.88414,48.509587 246.81244,44.658437 244.27301,40.807147 C 242.54194,38.181807 241.65585,37.658967 240.71017,38.704887 C 240.04086,39.445147 240.06181,39.529747 241.24973,40.883967 C 242.69534,42.531927 243.07763,43.755417 242.72869,45.617147 C 242.26328,48.100277 241.5958,48.112217 239.46075,45.675647 C 238.40255,44.467987 237.21864,43.477657 236.82985,43.474897 C 235.73031,43.467097 235.55419,44.611047 236.4742,45.784767 C 236.93173,46.368457 237.98298,47.885677 238.81031,49.156347 C 240.26317,51.387747 240.36473,51.460347 241.78407,51.281897 C 242.59231,51.180287 243.7914,50.713837 244.44873,50.245347 z M 230.66021,48.770437 C 231.80323,47.735067 231.53301,46.750337 229.80648,45.659427 C 227.34825,44.106197 225.88307,44.426817 226.38016,46.409207 C 226.66321,47.537997 228.5071,49.427797 229.32543,49.427797 C 229.66043,49.427797 230.26108,49.131977 230.66021,48.770437 z M 246.11213,30.836417 C 247.33732,29.740717 247.34787,29.700597 246.72684,28.498547 C 245.59071,26.299487 241.38192,22.859927 238.96758,22.157407 C 235.30327,21.091177 234.23569,22.765917 236.78162,25.586567 C 238.43395,27.417177 243.93132,31.951267 244.49852,31.951267 C 244.70039,31.951267 245.42651,31.449587 246.11213,30.836417 z M 133.07774,53.103867 C 130.01947,52.994557 129.349,52.852977 129.02562,52.248187 C 128.75683,51.745487 128.79331,51.311077 129.14472,50.830067 C 129.62146,50.177497 130.95893,50.156707 151.84776,50.477297 L 174.04422,50.817977 L 174.16857,52.108847 L 174.29292,53.399727 L 155.51764,53.317287 C 145.19124,53.271947 135.09328,53.175907 133.07774,53.103867 z M 119.2772,51.009717 C 118.62503,50.579457 117.77719,50.226237 117.3931,50.224797 C 116.32258,50.220787 115.56286,49.071387 114.35478,45.628017 C 113.74673,43.894907 112.62106,41.225737 111.85329,39.696547 C 111.08552,38.167357 110.32412,36.469347 110.16129,35.923207 C 109.99846,35.377067 109.50475,34.535797 109.06415,34.053727 C 108.23467,33.146157 108.24871,32.165167 109.1241,29.865997 C 109.65571,28.469767 110.39221,28.489087 112.52104,29.955107 C 114.12636,31.060617 114.26613,31.306517 114.69708,33.783527 C 114.95038,35.239387 115.56501,37.254767 116.06293,38.262147 C 116.56086,39.269517 117.37926,41.217777 117.88161,42.591617 C 118.56207,44.452587 119.23873,45.469167 120.5353,46.578467 C 122.23466,48.032367 122.26485,48.099807 121.81793,49.442697 C 121.08362,51.649127 120.65089,51.916027 119.2772,51.009717 z M 178.50854,50.380477 C 177.32087,49.748297 177.08523,48.609287 177.98714,47.860087 C 179.24402,46.816007 181.3096,49.292747 180.13664,50.437457 C 179.69198,50.871397 179.41248,50.861627 178.50854,50.380477 z M 184.90998,49.725687 C 184.81629,48.736327 185.04904,48.030857 185.83249,46.929607 C 186.27161,46.312347 186.52644,45.702757 186.39878,45.574977 C 185.97808,45.153897 184.8608,46.409017 184.12323,48.131287 C 183.23472,50.205997 182.09987,50.400077 181.18713,48.633407 C 180.62994,47.554927 180.63079,47.327077 181.19603,46.233027 C 181.53952,45.568187 182.25839,44.824537 182.79353,44.580497 C 183.32867,44.336437 183.76652,44.003447 183.76652,43.840507 C 183.76652,43.214287 181.92163,44.028867 180.66237,45.211087 L 179.34396,46.448847 L 178.36032,45.310797 C 177.131,43.888497 177.28155,42.940357 178.77827,42.678567 C 180.57624,42.364077 180.54814,41.484407 178.74002,41.481307 C 177.89016,41.479847 176.69348,41.130417 176.02836,40.689537 C 175.3736,40.255497 174.70888,39.899197 174.55121,39.897757 C 174.39355,39.896327 174.88462,41.131827 175.64249,42.643327 C 176.40036,44.154817 177.02043,45.763457 177.02043,46.218057 C 177.02043,47.443787 175.94275,47.223507 175.23471,45.853047 C 174.58011,44.586017 173.55801,44.160427 174.04235,45.356557 C 175.41361,48.743007 175.28453,49.427797 173.2749,49.427797 C 172.18146,49.427797 171.69267,49.166127 170.98068,48.199627 L 170.07594,46.971457 L 169.87564,48.100327 C 169.72342,48.958257 169.42586,49.258197 168.63584,49.350057 C 167.17846,49.519507 166.30607,48.487097 166.30607,46.592957 C 166.30607,44.722907 166.75925,43.732047 168.41567,41.980417 C 169.85886,40.454277 170.35355,40.384227 171.2208,41.583217 L 171.86722,42.476897 L 171.76523,41.497187 C 171.69969,40.867477 171.23795,40.299887 170.47277,39.908417 C 168.42792,38.862257 168.34143,38.172047 170.16805,37.476927 C 170.924,37.189257 171.41776,37.252797 172.14807,37.731767 C 172.68319,38.082707 173.2033,38.287487 173.30387,38.186827 C 173.40444,38.086157 172.99207,36.994287 172.38749,35.760437 C 171.4395,33.825737 171.35873,33.404127 171.80048,32.696137 C 172.23364,32.001887 172.20715,31.758437 171.62885,31.118827 C 171.25273,30.702847 171.10661,30.341877 171.30413,30.316687 C 172.13332,30.210897 172.51719,30.094457 173.64739,29.605947 C 174.30216,29.322937 176.2705,28.997247 178.02148,28.882207 C 181.03573,28.684147 181.27162,28.729067 182.45605,29.726597 C 183.2501,30.395367 183.80326,30.624327 183.97051,30.353457 C 184.14333,30.073567 184.39421,30.059817 184.69959,30.313487 C 185.19405,30.724227 188.13163,30.016147 188.13163,29.486227 C 188.13163,29.092987 185.79505,28.536187 181.68317,27.949587 C 177.8943,27.409057 172.65486,27.895197 169.87753,29.044947 C 168.61439,29.567857 168.55151,29.666487 169.18308,30.134287 C 169.56502,30.417197 169.87753,30.852387 169.87753,31.101377 C 169.87753,31.818817 168.07204,31.627617 167.05382,30.802347 C 166.19315,30.104777 166.1675,29.973647 166.69769,28.982067 C 167.38047,27.705087 169.65573,26.310917 173.33027,24.917937 C 176.63703,23.664377 176.73979,23.576657 176.2985,22.384007 C 175.77832,20.978117 176.13356,20.432647 177.56938,20.432647 C 179.05766,20.432647 179.79823,21.036777 179.79823,22.250837 C 179.79823,23.424597 180.41386,23.855517 183.41702,24.783957 C 187.01121,25.895117 190.48156,28.946207 189.8941,30.478527 C 189.4388,31.666107 186.11379,32.463507 185.5338,31.524207 C 185.36426,31.249637 184.94581,31.402087 184.3619,31.951127 C 183.73021,32.545127 183.37074,33.469797 183.18119,34.988337 C 183.0313,36.189107 182.65285,37.784367 182.3402,38.533357 C 182.02753,39.282337 181.88641,39.895147 182.02657,39.895147 C 182.16674,39.895147 182.97323,39.269557 183.81877,38.504967 C 185.43131,37.046797 186.92092,36.729017 187.7059,37.675727 C 188.07927,38.126027 187.84312,38.561577 186.50848,39.884157 C 185.28469,41.096897 184.96286,41.648657 185.28894,41.975037 C 185.61501,42.301407 185.92588,42.242707 186.46698,41.752567 C 187.51567,40.802637 188.34446,40.926087 189.33022,42.179007 C 190.07935,43.131167 190.17165,43.668327 190.04977,46.366317 C 189.95072,48.558747 189.73744,49.570517 189.31841,49.835677 C 188.41924,50.404687 184.96612,50.318527 184.90998,49.725687 z M 179.88324,34.846587 C 179.94561,34.151437 179.81807,33.572837 179.59982,33.560807 C 179.38156,33.548767 179.18647,34.261737 179.16627,35.145157 C 179.12409,36.990367 179.71289,36.745177 179.88324,34.846587 z M 180.95565,31.666467 C 181.04659,31.604647 180.73408,31.554077 180.2612,31.554077 C 179.73265,31.554077 179.4014,31.802347 179.4014,32.198507 C 179.4014,32.750127 179.50141,32.766307 180.09585,32.310897 C 180.4778,32.018277 180.86471,31.728287 180.95565,31.666467 z M 176.12757,31.851977 C 176.03663,31.578907 175.72413,31.355477 175.43312,31.355477 C 175.14212,31.355477 174.82961,31.578907 174.73867,31.851977 C 174.64031,32.147317 174.92165,32.348467 175.43312,32.348467 C 175.94459,32.348467 176.22593,32.147317 176.12757,31.851977 z M 194.41697,49.129897 C 194.12631,48.410117 193.96049,43.364317 193.93076,34.334427 L 193.88564,20.631257 L 194.7425,20.509057 C 195.53699,20.395737 195.61547,20.598117 195.82065,23.289407 C 195.94237,24.885807 196.14773,31.344257 196.27701,37.641497 C 196.45199,46.164227 196.3922,49.235617 196.04313,49.656617 C 195.34941,50.493267 194.91006,50.350957 194.41697,49.129897 z M 206.56277,49.790377 C 206.19139,49.188917 206.81986,48.660507 208.6178,48.062557 C 209.81944,47.662907 210.34066,47.174817 211.00219,45.829697 C 211.46782,44.882907 212.24654,43.785897 212.73268,43.391877 C 213.68518,42.619877 215.90961,42.409487 215.90961,43.091407 C 215.90961,43.670107 212.67627,49.560887 212.1625,49.918207 C 211.50302,50.376847 206.85945,50.270847 206.56277,49.790377 z M 199.88857,49.217707 C 199.41389,47.979577 199.62654,45.166817 200.2329,44.663107 C 201.03403,43.997627 202.70406,45.076617 203.05808,46.488437 C 203.53804,48.402507 200.55938,50.967437 199.88857,49.217707 z M 203.2111,49.277827 C 203.2111,48.976887 203.47896,48.508167 203.80634,48.236207 C 205.1667,47.106177 204.07296,44.710507 201.45824,43.093027 C 199.8547,42.101077 199.40491,41.151437 200.17401,40.381647 C 200.59874,39.956517 200.93157,39.921527 201.52532,40.239587 C 202.63756,40.835387 202.88221,40.384387 202.18198,39.029037 C 201.85163,38.389617 201.4787,36.937707 201.35324,35.802547 C 201.22779,34.667407 200.77209,33.150857 200.34058,32.432457 C 199.66232,31.303257 199.62256,30.965497 200.0471,29.939617 C 200.77944,28.169977 204.07869,25.392707 206.13225,24.817217 C 208.44151,24.170067 210.04847,24.687677 212.60232,26.901277 C 214.86527,28.862727 215.04747,29.085617 215.36553,30.281687 C 215.69205,31.509607 215.36917,31.731657 214.25751,31.043627 C 212.52049,29.968547 209.64747,29.460997 206.37287,29.650727 C 201.55848,29.929687 201.6844,30.585647 206.5498,30.572347 C 209.9223,30.563117 210.80367,30.686537 211.43359,31.256177 C 211.85634,31.638477 212.41139,31.951267 212.66702,31.951267 C 213.40368,31.951267 213.21441,33.325167 212.09069,36.134737 C 210.99775,38.867367 211.06854,39.589357 212.35081,38.787827 C 213.65187,37.974547 215.41944,38.180667 215.73718,39.182697 C 215.93571,39.808797 215.8017,40.210567 215.26788,40.589697 C 214.85694,40.881557 213.76662,41.646597 212.84496,42.289797 C 211.92331,42.932987 210.82225,44.139997 210.39817,44.972027 C 209.8755,45.997467 208.99364,46.829917 207.66072,47.556047 C 206.57921,48.145227 205.47088,48.896757 205.19778,49.226127 C 204.5763,49.975657 203.2111,50.011177 203.2111,49.277827 z M 207.60101,45.442567 C 208.42602,45.000627 210.15689,41.948607 209.7905,41.581877 C 209.66837,41.459637 208.85971,41.679507 207.99347,42.070487 C 206.98818,42.524227 205.98195,42.693967 205.21163,42.539757 C 203.73822,42.244807 203.72228,42.423407 205.0508,44.342227 C 206.17564,45.966857 206.42301,46.073597 207.60101,45.442567 z M 204.32218,35.656697 C 204.19554,33.259797 203.59848,32.545947 202.9455,34.010687 C 202.65469,34.663007 202.71669,35.301847 203.17748,36.401017 C 203.52336,37.226057 203.94919,37.902917 204.12377,37.905137 C 204.29835,37.907357 204.38764,36.895557 204.32218,35.656697 z M 208.96511,33.142857 C 208.83022,32.924397 208.37325,32.745657 207.94962,32.745657 C 207.52599,32.745657 207.17938,32.924397 207.17938,33.142857 C 207.17938,33.361307 207.63636,33.540047 208.19488,33.540047 C 208.77082,33.540047 209.10421,33.368117 208.96511,33.142857 z M 213.99707,48.971867 C 214.13276,48.059007 215.30071,47.097167 215.73982,47.536677 C 215.88563,47.682617 215.89079,48.257187 215.75129,48.813497 C 215.42086,50.131247 213.80304,50.277297 213.99707,48.971867 z M 220.15527,49.291947 C 219.8287,48.440127 219.34346,23.021437 219.63183,21.871447 C 219.95211,20.594147 220.97162,20.504277 221.27805,21.726327 C 221.66473,23.268407 222.11219,48.397877 221.766,49.129897 C 221.37672,49.953037 220.44467,50.046817 220.15527,49.291947 z M 141.427,49.026327 C 139.77807,48.361607 139.72314,44.264277 141.36316,44.264277 C 143.16725,44.264277 145.71868,48.253447 144.43502,49.067147 C 143.75007,49.501327 142.56542,49.485257 141.427,49.026327 z M 134.65116,48.544977 C 134.36131,48.195407 134.20672,43.524887 134.17889,34.276367 C 134.141,21.681957 134.19415,20.505667 134.81185,20.268417 C 135.18273,20.125967 135.66943,20.192837 135.8934,20.417017 C 136.15553,20.679387 136.30863,25.811627 136.32308,34.821197 C 136.34313,47.316797 136.27779,48.831017 135.7138,48.941227 C 135.36635,49.009117 134.88816,48.830807 134.65116,48.544977 z M 152.3031,48.784107 C 151.74256,48.223057 152.04745,47.522727 153.64129,45.710377 C 155.92035,43.118827 156.45277,43.246587 156.30509,46.349547 L 156.18695,48.831997 L 154.38645,48.949617 C 153.39617,49.014297 152.45867,48.939827 152.3031,48.784107 z M 160.55449,48.162697 C 160.43126,47.656987 160.38031,41.255537 160.44125,33.937237 L 160.55206,20.631257 L 161.54413,20.631257 C 162.429,20.631257 162.55904,20.829897 162.74749,22.469457 C 162.86369,23.480467 162.86369,29.825647 162.74749,36.569837 L 162.5362,48.831997 L 161.65737,48.957077 C 161.01345,49.048737 160.71864,48.836377 160.55449,48.162697 z M 192.07653,47.541117 C 191.926,37.951047 191.99228,36.293477 192.49207,37.148887 C 192.99118,38.003137 193.46599,45.784637 193.12878,47.583747 C 192.77486,49.472057 192.10641,49.444977 192.07653,47.541117 z M 217.75068,48.755007 C 217.61111,48.615307 217.50235,43.123997 217.50899,36.552097 C 217.51702,28.594297 217.65031,24.824907 217.90803,25.266977 C 218.12088,25.632067 218.26591,26.525757 218.23034,27.252947 C 218.19477,27.980147 218.29907,33.067787 218.46211,38.558817 C 218.73726,47.825157 218.61221,49.617327 217.75068,48.755007 z M 124.58997,47.746697 C 122.81403,46.965087 122.74791,46.873917 122.5307,44.906627 C 122.30709,42.881457 120.01349,35.107787 118.78731,32.219227 C 118.18711,30.805297 118.18958,30.626037 118.82285,29.637457 C 119.19713,29.053167 120.12543,27.368657 120.88573,25.894067 C 121.79075,24.138827 122.50619,23.213987 122.95757,23.215847 C 123.77393,23.219207 129.87533,27.177977 130.08863,27.842687 C 130.25,28.345597 127.94882,31.156887 127.37579,31.156887 C 127.18014,31.156887 127.02007,30.818047 127.02007,30.403907 C 127.02007,29.665557 123.70589,27.184947 122.71943,27.184947 C 121.69843,27.184947 122.16521,29.752877 124.84931,38.902157 C 126.03433,42.941537 126.30605,43.377217 128.11135,44.132537 C 128.82068,44.429317 129.40104,44.754317 129.40104,44.854767 C 129.40104,44.955217 129.00831,45.846507 128.52831,46.835407 C 127.55224,48.846307 127.24831,48.916637 124.58997,47.746697 z M 145.22842,46.169327 C 144.40212,44.897777 143.19812,43.703187 142.09955,43.064897 C 140.6274,42.209557 140.31382,41.823647 140.31382,40.867387 C 140.31382,39.237497 141.25578,39.206347 143.2008,40.771917 C 144.91331,42.150337 147.25831,45.979897 147.25831,47.398127 C 147.25831,48.740647 146.66661,48.382467 145.22842,46.169327 z M 158.54252,42.682547 C 158.58511,39.628037 158.74218,37.006567 158.89156,36.857047 C 159.04094,36.707537 159.16316,39.206667 159.16316,42.410697 C 159.16316,45.614737 159.00609,48.236207 158.81412,48.236207 C 158.62215,48.236207 158.49994,45.737057 158.54252,42.682547 z M 137.99167,44.164977 C 137.86299,42.144257 137.70782,36.127077 137.64686,30.793487 C 137.56131,23.308927 137.64921,21.058107 138.03206,20.929837 C 138.41295,20.802217 138.52833,22.039067 138.52914,26.258157 C 138.52971,29.280137 138.64734,35.372107 138.79053,39.795847 C 138.96759,45.265507 138.91887,47.839017 138.63827,47.839017 C 138.39926,47.839017 138.1272,46.293147 137.99167,44.164977 z M 223.30644,45.015857 C 223.13536,43.353887 223.13632,41.298407 223.30858,40.448127 L 223.62177,38.902157 L 223.85823,41.285327 C 223.98828,42.596057 223.98732,44.651537 223.85609,45.853047 L 223.6175,48.037617 L 223.30644,45.015857 z M 150.53585,46.548137 C 150.64333,46.056617 151.0199,44.993267 151.37267,44.185137 L 152.01407,42.715827 L 150.2938,43.353997 C 148.67355,43.955047 148.48391,43.948107 147.03178,43.234527 C 144.18786,41.837007 141.5232,35.874527 142.6549,33.440747 C 142.88593,32.943897 142.80835,32.745657 142.38287,32.745657 C 142.05549,32.745657 141.68985,32.490627 141.57035,32.178907 C 141.30056,31.475217 142.30662,30.528227 142.68057,31.133867 C 142.8406,31.393027 143.36225,31.230757 144.08249,30.697777 C 145.13799,29.916697 145.57064,29.866357 149.50281,30.067237 C 153.33691,30.263097 153.8517,30.378987 154.51178,31.194897 C 154.95242,31.739587 155.15713,32.432007 155.02222,32.921457 C 154.89834,33.370917 154.59933,34.989807 154.35775,36.518997 C 154.11618,38.048197 153.74481,39.627447 153.53248,40.028457 C 153.00484,41.024987 153.30991,41.205437 154.55912,40.635737 C 155.32352,40.287137 155.73279,40.274677 156.04823,40.590397 C 156.36366,40.906127 155.87132,41.623747 154.2569,43.201367 C 153.03242,44.397937 151.85411,45.841547 151.63841,46.409387 C 151.15441,47.683557 150.26302,47.795747 150.53585,46.548137 z M 150.82977,40.117177 C 150.82977,40.020847 150.6512,39.831557 150.43294,39.696547 C 150.21468,39.561527 150.03611,39.640347 150.03611,39.871707 C 150.03611,40.103047 150.21468,40.292337 150.43294,40.292337 C 150.6512,40.292337 150.82977,40.213517 150.82977,40.117177 z M 153.38931,35.481377 C 153.92437,34.980997 153.06842,34.227437 152.16161,34.400537 C 151.74768,34.479557 151.36734,34.947087 151.29335,35.467857 C 151.17896,36.273007 151.28306,36.357777 152.08701,36.114237 C 152.59593,35.960067 153.18197,35.675277 153.38931,35.481377 z M 148.05197,34.797827 C 148.05197,34.280647 147.58023,33.936697 147.19649,34.174087 C 146.78608,34.427957 147.13996,35.128817 147.67856,35.128817 C 147.88394,35.128817 148.05197,34.979877 148.05197,34.797827 z M 147.95475,32.447767 C 148.0565,32.138507 147.74034,31.951267 147.11639,31.951267 C 146.07729,31.951267 145.49281,32.434917 145.96308,32.905607 C 146.38069,33.323597 147.77179,33.003817 147.95475,32.447767 z M 132.44339,46.779827 C 132.02814,46.364197 132.1462,37.382757 132.57567,36.717587 C 132.83437,36.316917 132.96233,37.910317 132.96642,41.583217 C 132.96976,44.586987 132.91297,47.044627 132.84022,47.044627 C 132.76747,47.044627 132.58889,46.925467 132.44339,46.779827 z M 163.52827,45.677897 C 163.52827,45.144647 163.70685,44.597877 163.9251,44.462867 C 164.15662,44.319657 164.32193,44.723537 164.32193,45.432407 C 164.32193,46.100677 164.14336,46.647437 163.9251,46.647437 C 163.70685,46.647437 163.52827,46.211147 163.52827,45.677897 z M 147.8705,45.880487 C 147.59944,45.441507 148.22543,44.967477 148.59186,45.334257 C 148.96916,45.711907 148.89885,46.250237 148.47222,46.250237 C 148.26685,46.250237 147.99607,46.083857 147.8705,45.880487 z M 197.68683,45.621357 C 197.70587,45.158647 197.79991,45.064527 197.92658,45.381377 C 198.04121,45.668107 198.02712,46.010677 197.89526,46.142667 C 197.76339,46.274657 197.6696,46.040057 197.68683,45.621357 z M 197.52323,43.602287 C 197.37773,43.456647 197.27123,38.943537 197.28657,33.573137 C 197.30191,28.202757 197.45286,24.163487 197.62201,24.596987 C 197.93087,25.388527 198.24112,43.867077 197.94555,43.867077 C 197.85878,43.867077 197.66873,43.747917 197.52323,43.602287 z M 163.89015,42.443797 C 163.72143,40.686287 163.62315,22.852297 163.77921,22.313547 C 163.89088,21.928087 164.15367,21.718747 164.3632,21.848367 C 164.75868,22.093007 164.54112,42.191307 164.13863,42.594167 C 164.02119,42.711717 163.90937,42.644057 163.89015,42.443797 z M 127.69055,40.231237 C 126.67034,39.659767 126.88678,39.225437 128.21056,39.187767 C 128.95186,39.166677 129.40104,39.352627 129.40104,39.680617 C 129.40104,40.399367 128.50542,40.687677 127.69055,40.231237 z M 125.88925,37.568637 C 125.51096,36.900337 125.48146,36.509967 125.78621,36.204937 C 126.39564,35.594947 126.70405,36.067277 126.55112,37.376367 L 126.41927,38.504967 L 125.88925,37.568637 z M 223.05252,36.320397 C 223.05252,36.101947 223.23109,35.923207 223.44934,35.923207 C 223.6676,35.923207 223.84617,36.101947 223.84617,36.320397 C 223.84617,36.538857 223.6676,36.717587 223.44934,36.717587 C 223.23109,36.717587 223.05252,36.538857 223.05252,36.320397 z M 132.37725,35.128817 C 132.24236,34.910357 132.32111,34.731627 132.55225,34.731627 C 132.78338,34.731627 132.9725,34.910357 132.9725,35.128817 C 132.9725,35.347267 132.89375,35.526017 132.7975,35.526017 C 132.70126,35.526017 132.51214,35.347267 132.37725,35.128817 z M 158.36951,34.556477 C 158.36951,34.023227 158.54808,33.476457 158.76633,33.341447 C 158.99785,33.198237 159.16316,33.602117 159.16316,34.310987 C 159.16316,34.979257 158.98459,35.526017 158.76633,35.526017 C 158.54808,35.526017 158.36951,35.089717 158.36951,34.556477 z M 223.11517,34.334427 C 223.11517,33.788287 223.20524,33.564867 223.31533,33.837947 C 223.42541,34.111017 223.42541,34.557857 223.31533,34.830927 C 223.20524,35.103997 223.11517,34.880577 223.11517,34.334427 z M 258.54676,33.868197 C 258.20169,32.779997 259.01368,32.140347 261.18041,31.793567 C 263.11276,31.484277 263.529,31.694107 263.529,32.977517 C 263.529,34.097647 262.31023,34.731627 260.15687,34.731627 C 259.13345,34.731627 258.75643,34.529447 258.54676,33.868197 z M 132.01209,29.612967 C 131.7781,27.236187 132.05521,22.559667 132.40904,22.913837 C 132.76156,23.266667 133.01012,32.348467 132.66726,32.348467 C 132.45503,32.348467 132.1602,31.117487 132.01209,29.612967 z M 191.94046,30.663007 C 191.76186,29.845227 191.76123,28.683427 191.93905,28.081247 L 192.26237,26.986347 L 192.4047,28.277227 C 192.48298,28.987207 192.48361,30.148997 192.40611,30.858987 L 192.26519,32.149867 L 191.94046,30.663007 z M 139.98313,30.494897 C 139.5389,30.050257 139.67607,29.679617 140.76362,28.385957 C 141.8824,27.055137 145.44697,25.077867 147.54799,24.622667 C 149.42627,24.215717 152.92138,25.075517 154.73534,26.390747 C 157.27247,28.230327 157.45938,30.627197 154.9705,29.406327 C 153.77731,28.821017 150.12957,28.534267 145.82559,28.687437 C 143.98971,28.752767 143.04572,29.014897 141.93889,29.766707 C 140.30514,30.876417 140.34826,30.860367 139.98313,30.494897 z M 158.36951,26.986347 C 158.36951,26.221747 158.54808,25.596167 158.76633,25.596167 C 158.98459,25.596167 159.16316,26.221747 159.16316,26.986347 C 159.16316,27.750947 158.98459,28.376527 158.76633,28.376527 C 158.54808,28.376527 158.36951,27.750947 158.36951,26.986347 z M 104.99277,27.179547 C 104.56422,26.485497 106.51566,23.411607 107.38481,23.411607 C 108.00325,23.411607 108.15362,23.653077 108.09043,24.544717 C 107.93452,26.744937 105.82982,28.535167 104.99277,27.179547 z M 192.13124,23.775697 C 192.15028,23.312987 192.24431,23.218877 192.37099,23.535727 C 192.48562,23.822447 192.47152,24.165037 192.33966,24.297017 C 192.2078,24.428997 192.11401,24.194417 192.13124,23.775697 z M 158.36951,23.014417 C 158.36951,22.422307 158.54038,22.080247 158.76633,22.220027 C 158.98459,22.355037 159.16316,22.712507 159.16316,23.014417 C 159.16316,23.316317 158.98459,23.673787 158.76633,23.808797 C 158.54038,23.948577 158.36951,23.606507 158.36951,23.014417 z M 207.03587,23.409817 C 206.63676,23.010337 206.39387,22.273717 206.46339,21.673607 C 206.56377,20.807087 206.78497,20.631257 207.77463,20.631257 C 209.2431,20.631257 209.5667,21.832257 208.46511,23.193917 C 207.76464,24.059757 207.69563,24.070177 207.03587,23.409817 z M 147.62553,22.505307 C 147.0438,21.481327 146.83844,21.410587 144.64932,21.480127 C 141.78254,21.571197 140.51223,21.308067 140.51223,20.623177 C 140.51223,20.216817 142.11276,20.100917 147.95276,20.084397 C 152.04506,20.072827 155.63939,20.215847 155.94017,20.402207 C 157.06998,21.102207 155.91257,21.663137 153.51689,21.576607 C 151.32471,21.497417 151.0492,21.581967 150.34465,22.550047 C 149.35579,23.908777 148.41406,23.893287 147.62553,22.505307 z M 166.75127,21.662567 C 165.50297,20.871177 166.85,20.432647 170.52926,20.432647 C 173.37633,20.432647 174.26807,20.555147 174.14376,20.929147 C 174.053,21.202217 173.45776,21.538537 172.821,21.676537 C 171.05117,22.060087 167.36492,22.051597 166.75127,21.662567 z M 211.43215,21.667167 C 209.27446,21.320027 209.59787,20.652067 211.99278,20.509237 C 214.16655,20.379587 215.37695,20.965197 214.31898,21.634697 C 213.99342,21.840707 213.54848,21.986637 213.33022,21.958987 C 213.11197,21.931327 212.25783,21.800007 211.43215,21.667167 z M 182.0612,21.373727 C 181.32297,20.634817 182.08,20.432647 185.58531,20.432647 C 188.45074,20.432647 189.34775,20.555057 189.22395,20.929147 C 189.04443,21.471607 182.56104,21.874027 182.0612,21.373727 z M 200.03647,21.028437 C 200.03647,20.559957 200.58763,20.432647 202.61586,20.432647 C 204.64409,20.432647 205.19524,20.559957 205.19524,21.028437 C 205.19524,21.496927 204.64409,21.624237 202.61586,21.624237 C 200.58763,21.624237 200.03647,21.496927 200.03647,21.028437 z M 143.95346,18.419877 C 133.0076,18.241377 130.0642,18.083617 129.80356,17.661517 C 129.36468,16.950727 129.69742,16.176157 130.51977,15.994317 C 130.88662,15.913207 136.81181,15.962227 143.68686,16.103267 C 154.20391,16.319017 171.16405,16.438397 218.96327,16.633137 C 225.56733,16.660037 226.60282,16.893877 226.0861,18.241657 C 225.86121,18.828247 222.86591,18.873967 191.80697,18.764847 C 173.08898,18.699087 151.5549,18.543857 143.95346,18.419877 z M 170.8696,14.824397 C 162.79414,14.689017 150.6512,14.522197 143.88527,14.453677 C 129.09415,14.303917 123.84545,14.104367 123.84545,13.691827 C 123.84545,13.405947 127.73239,12.104427 130.98835,11.300057 C 144.23349,8.0279174 153.99182,6.5120074 168.0555,5.5418474 C 178.99904,4.7869074 182.25204,4.7866174 188.92528,5.5399274 C 191.87173,5.8725274 195.97891,6.3328474 198.05233,6.5628574 C 201.97463,6.9979574 206.34215,7.7348074 210.75084,8.7052674 C 212.1695,9.0175374 215.11595,9.6360274 217.29851,10.079667 C 220.96867,10.825687 228.93993,13.101127 231.48007,14.127877 C 232.0775,14.369367 232.46162,14.736477 232.33367,14.943707 C 232.08933,15.339417 197.59729,15.272467 170.8696,14.824397 z"
+ id="path2486"
+ style="fill:#000000;fill-opacity:1" />
+</svg>
diff --git a/documenting/Report/ping.png b/documenting/Report/ping.png
new file mode 100644
index 0000000..b7d0e3b
--- /dev/null
+++ b/documenting/Report/ping.png
Binary files differ
diff --git a/documenting/Report/protocolCommunicationHandler.png b/documenting/Report/protocolCommunicationHandler.png
new file mode 100644
index 0000000..984ff1d
--- /dev/null
+++ b/documenting/Report/protocolCommunicationHandler.png
Binary files differ
diff --git a/documenting/Report/protocolCommunicationcControllerCaller.png b/documenting/Report/protocolCommunicationcControllerCaller.png
new file mode 100644
index 0000000..7a1cb70
--- /dev/null
+++ b/documenting/Report/protocolCommunicationcControllerCaller.png
Binary files differ
diff --git a/documenting/Report/protocolCommunicationcControllerReceiver.png b/documenting/Report/protocolCommunicationcControllerReceiver.png
new file mode 100644
index 0000000..17462b9
--- /dev/null
+++ b/documenting/Report/protocolCommunicationcControllerReceiver.png
Binary files differ
diff --git a/documenting/Report/protocolRedesign.png b/documenting/Report/protocolRedesign.png
new file mode 100644
index 0000000..70af9c0
--- /dev/null
+++ b/documenting/Report/protocolRedesign.png
Binary files differ
diff --git a/documenting/Report/resultsImage.png b/documenting/Report/resultsImage.png
new file mode 100644
index 0000000..3eb4d7a
--- /dev/null
+++ b/documenting/Report/resultsImage.png
Binary files differ
diff --git a/documenting/Report/resultterminal.png b/documenting/Report/resultterminal.png
new file mode 100644
index 0000000..9e53f7a
--- /dev/null
+++ b/documenting/Report/resultterminal.png
Binary files differ
diff --git a/documenting/Report/serialPort.png b/documenting/Report/serialPort.png
new file mode 100644
index 0000000..4ed398b
--- /dev/null
+++ b/documenting/Report/serialPort.png
Binary files differ
diff --git a/documenting/Report/serverClass.png b/documenting/Report/serverClass.png
new file mode 100644
index 0000000..a6914a4
--- /dev/null
+++ b/documenting/Report/serverClass.png
Binary files differ
diff --git a/documenting/Report/sshTunnel.png b/documenting/Report/sshTunnel.png
new file mode 100644
index 0000000..3b8e8ae
--- /dev/null
+++ b/documenting/Report/sshTunnel.png
Binary files differ
diff --git a/documenting/Report/sshTunnelClass.png b/documenting/Report/sshTunnelClass.png
new file mode 100644
index 0000000..de522f0
--- /dev/null
+++ b/documenting/Report/sshTunnelClass.png
Binary files differ
diff --git a/documenting/Report/terminalCommand.png b/documenting/Report/terminalCommand.png
new file mode 100644
index 0000000..98bc2ec
--- /dev/null
+++ b/documenting/Report/terminalCommand.png
Binary files differ
diff --git a/documenting/Report/test.aux b/documenting/Report/test.aux
new file mode 100644
index 0000000..f5bf6ae
--- /dev/null
+++ b/documenting/Report/test.aux
@@ -0,0 +1,150 @@
+\relax
+\ifx\hyper@anchor\@undefined
+\global \let \oldcontentsline\contentsline
+\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global \let \oldnewlabel\newlabel
+\gdef \newlabel#1#2{\newlabelxx{#1}#2}
+\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\let \contentsline\oldcontentsline
+\let \newlabel\oldnewlabel}
+\else
+\global \let \hyper@last\relax
+\fi
+
+\select@language{english}
+\@writefile{toc}{\select@language{english}}
+\@writefile{lof}{\select@language{english}}
+\@writefile{lot}{\select@language{english}}
+\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction and Motivation}{4}{section.1}}
+\citation{network}
+\citation{network}
+\@writefile{toc}{\contentsline {section}{\numberline {2}Requirements}{5}{section.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces }}{5}{figure.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Logical and algorithmic requirements}{5}{subsection.2.1}}
+\citation{python}
+\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces }}{6}{figure.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Software requirements}{6}{subsection.2.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces }}{7}{figure.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Hardware requirements}{8}{subsection.2.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}Database design}{9}{section.3}}
+\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces }}{11}{figure.4}}
+\citation{wiki}
+\@writefile{toc}{\contentsline {section}{\numberline {4}Software design}{12}{section.4}}
+\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces }}{12}{figure.5}}
+\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces }}{14}{figure.6}}
+\citation{mysqlManual}
+\citation{wiki}
+\citation{wiki}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Database access}{15}{subsection.4.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces }}{15}{figure.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{15}{subsection.4.2}}
+\citation{socket}
+\citation{wiki}
+\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces }}{16}{figure.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Client and Server class}{16}{subsection.4.3}}
+\citation{wiki}
+\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces }}{17}{figure.9}}
+\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces }}{17}{figure.10}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Ping class}{17}{subsection.4.4}}
+\citation{wiki}
+\citation{wiki}
+\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces }}{18}{figure.11}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Data logging}{18}{subsection.4.5}}
+\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces }}{18}{figure.12}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}SSH Tunnel Class}{18}{subsection.4.6}}
+\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces }}{18}{figure.13}}
+\citation{wiki}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.7}USB Cell phone detection class}{19}{subsection.4.7}}
+\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces }}{19}{figure.14}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.8}Truth table class}{19}{subsection.4.8}}
+\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces }}{19}{figure.15}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.9}Init Test class}{19}{subsection.4.9}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces }}{20}{figure.16}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {4.10}Controller class}{20}{subsection.4.10}}
+\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces }}{20}{figure.17}}
+\citation{beagleDataSheet}
+\@writefile{toc}{\contentsline {section}{\numberline {5}Hardware design}{21}{section.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}BeagleBoard}{21}{subsection.5.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces }}{21}{figure.18}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Cell phones}{21}{subsection.5.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{22}{subsection.5.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Server}{22}{subsection.5.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {6}Communication protocol}{23}{section.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Communication between the handler and controller}{23}{subsection.6.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces }}{25}{figure.19}}
+\citation{spin}
+\citation{spin}
+\citation{wiki}
+\@writefile{lof}{\contentsline {figure}{\numberline {20}{\ignorespaces }}{26}{figure.20}}
+\@writefile{lof}{\contentsline {figure}{\numberline {21}{\ignorespaces }}{26}{figure.21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{26}{subsection.6.2}}
+\citation{sshTunnel}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Security and safety of the system}{28}{section.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{28}{subsection.7.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {22}{\ignorespaces }}{28}{figure.22}}
+\citation{https}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Security on the web site}{29}{subsection.7.2}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Configuring the http secure protocol https}{29}{subsubsection.7.2.1}}
+\citation{https}
+\citation{https}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.2}Password protecting the web site using .htaccess}{32}{subsubsection.7.2.2}}
+\citation{htaccess}
+\@writefile{toc}{\contentsline {section}{\numberline {8}Web page}{34}{section.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{34}{subsection.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Results on the web page}{34}{subsection.8.2}}
+\citation{pChart}
+\@writefile{lof}{\contentsline {figure}{\numberline {23}{\ignorespaces }}{35}{figure.23}}
+\@writefile{toc}{\contentsline {section}{\numberline {9}Employing the test software system}{36}{section.9}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Required software and libraries}{36}{subsection.9.1}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.1}Python installation}{36}{subsubsection.9.1.1}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.2}Apache Web server installation}{36}{subsubsection.9.1.2}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.3}SSH}{36}{subsubsection.9.1.3}}
+\citation{pjsip}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.4}MySQL database and MySQLdb library}{37}{subsubsection.9.1.4}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.5}Serial port library}{37}{subsubsection.9.1.5}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.6}PJSUA library}{37}{subsubsection.9.1.6}}
+\citation{wiki}
+\citation{pChart}
+\citation{proctitle}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.7}pChart library}{38}{subsubsection.9.1.7}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.1.8}proctitle library}{38}{subsubsection.9.1.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Configuring hardware}{38}{subsection.9.2}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.2.1}Configuring the cell phones}{40}{subsubsection.9.2.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {24}{\ignorespaces }}{40}{figure.24}}
+\@writefile{lof}{\contentsline {figure}{\numberline {25}{\ignorespaces }}{40}{figure.25}}
+\@writefile{lof}{\contentsline {figure}{\numberline {26}{\ignorespaces }}{40}{figure.26}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.3}Location of the files}{41}{subsection.9.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.4}Setting up the parameters}{42}{subsection.9.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.5}Test descriptions}{42}{subsection.9.5}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.5.1}Smart test}{42}{subsubsection.9.5.1}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.5.2}SIP test}{43}{subsubsection.9.5.2}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.5.3}GSM test}{43}{subsubsection.9.5.3}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.5.4}All test}{43}{subsubsection.9.5.4}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.5.5}Manual test}{43}{subsubsection.9.5.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.6}Result descriptions}{44}{subsection.9.6}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.7}Using the software}{45}{subsection.9.7}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.7.1}Web site guide}{45}{subsubsection.9.7.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {27}{\ignorespaces }}{45}{figure.27}}
+\@writefile{lof}{\contentsline {figure}{\numberline {28}{\ignorespaces }}{46}{figure.28}}
+\@writefile{lof}{\contentsline {figure}{\numberline {29}{\ignorespaces }}{46}{figure.29}}
+\@writefile{lof}{\contentsline {figure}{\numberline {30}{\ignorespaces }}{47}{figure.30}}
+\@writefile{lof}{\contentsline {figure}{\numberline {31}{\ignorespaces }}{47}{figure.31}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {9.7.2}Terminal guide}{47}{subsubsection.9.7.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces }}{48}{figure.32}}
+\@writefile{lof}{\contentsline {figure}{\numberline {33}{\ignorespaces }}{48}{figure.33}}
+\@writefile{lof}{\contentsline {figure}{\numberline {34}{\ignorespaces }}{48}{figure.34}}
+\@writefile{toc}{\contentsline {section}{\numberline {10}Conclusion}{49}{section.10}}
+\bibcite{network}{1}
+\bibcite{python}{2}
+\bibcite{mysqlManual}{3}
+\bibcite{wiki}{4}
+\bibcite{socket}{5}
+\bibcite{spin}{6}
+\bibcite{sshTunnel}{7}
+\bibcite{https}{8}
+\bibcite{htaccess}{9}
+\bibcite{pChart}{10}
+\bibcite{beagleDataSheet}{11}
+\bibcite{proctitle}{12}
+\bibcite{pjsip}{13}
+\newlabel{LastPage}{{}{50}{}{page.50}{}}
diff --git a/documenting/Report/test.log b/documenting/Report/test.log
new file mode 100644
index 0000000..e88ead4
--- /dev/null
+++ b/documenting/Report/test.log
@@ -0,0 +1,641 @@
+This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2011.9.27) 8 NOV 2011 12:30
+entering extended mode
+ %&-line parsing enabled.
+**test.tex
+(./test.tex
+LaTeX2e <2009/09/24>
+Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
+yphenation, loaded.
+(/usr/share/texmf-texlive/tex/latex/koma-script/scrartcl.cls
+Document Class: scrartcl 2009/07/24 v3.04a KOMA-Script document class (article)
+
+(/usr/share/texmf-texlive/tex/latex/koma-script/scrkbase.sty
+Package: scrkbase 2009/07/24 v3.04a KOMA-Script package (KOMA-Script-dependent
+basics and keyval usage)
+
+(/usr/share/texmf-texlive/tex/latex/koma-script/scrbase.sty
+Package: scrbase 2009/07/24 v3.04a KOMA-Script package (KOMA-Script-independent
+ basics and keyval usage)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+\KV@toks@=\toks14
+)
+(/usr/share/texmf-texlive/tex/latex/koma-script/scrlfile.sty
+Package: scrlfile 2009/03/25 v3.03 KOMA-Script package (loading files)
+
+Package scrlfile, 2009/03/25 v3.03 KOMA-Script package (loading files)
+ Copyright (C) Markus Kohm
+
+))) (/usr/share/texmf-texlive/tex/latex/koma-script/tocbasic.sty
+Package: tocbasic 2009/06/08 v3.03b KOMA-Script package (handling toc-files)
+)
+Package tocbasic Info: omitting babel extension for `toc'
+(tocbasic) because of feature `nobabel' available
+(tocbasic) for `toc' on input line 115.
+Package tocbasic Info: omitting babel extension for `lof'
+(tocbasic) because of feature `nobabel' available
+(tocbasic) for `lof' on input line 116.
+Package tocbasic Info: omitting babel extension for `lot'
+(tocbasic) because of feature `nobabel' available
+(tocbasic) for `lot' on input line 117.
+Class scrartcl Info: You've used standard option `oneside'.
+(scrartcl) This is correct!
+(scrartcl) Internaly I'm using `twoside=false'.
+(scrartcl) If you'd like to set the option with \KOMAoptions,
+(scrartcl) you'd have to use `twoside=false' there
+(scrartcl) instead of `oneside', too.
+Class scrartcl Info: File `scrsize11pt.clo' used instead of
+(scrartcl) file `scrsize11.clo' to setup font sizes on input line 117
+1.
+
+(/usr/share/texmf-texlive/tex/latex/koma-script/scrsize11pt.clo
+File: scrsize11pt.clo 2009/07/24 v3.04a KOMA-Script font size class option (11p
+t)
+)
+(/usr/share/texmf-texlive/tex/latex/koma-script/typearea.sty
+Package: typearea 2009/07/24 v3.04a KOMA-Script package (type area)
+
+Package typearea, 2009/07/24 v3.04a KOMA-Script package (type area)
+ Copyright (C) Frank Neukam, 1992-1994
+ Copyright (C) Markus Kohm, 1994-
+
+\ta@bcor=\skip41
+\ta@div=\count79
+Package typearea Info: You've used standard option `a4paper'.
+(typearea) This is correct!
+(typearea) Internaly I'm using `paper=a4'.
+(typearea) If you'd like to set the option with \KOMAoptions,
+(typearea) you'd have to use `paper=a4' there
+(typearea) instead of `a4paper', too.
+Package typearea Info: You've used standard option `oneside'.
+(typearea) This is correct!
+(typearea) Internaly I'm using `twoside=false'.
+(typearea) If you'd like to set the option with \KOMAoptions,
+(typearea) you'd have to use `twoside=false' there
+(typearea) instead of `oneside', too.
+\ta@hblk=\skip42
+\ta@vblk=\skip43
+\ta@temp=\skip44
+Package typearea Info: These are the values describing the layout:
+(typearea) DIV = 10
+(typearea) BCOR = 0.0pt
+(typearea) \paperwidth = 597.50793pt
+(typearea) \textwidth = 418.25555pt
+(typearea) DIV departure = -6%
+(typearea) \evensidemargin = 17.3562pt
+(typearea) \oddsidemargin = 17.3562pt
+(typearea) \paperheight = 845.04694pt
+(typearea) \textheight = 514.20023pt
+(typearea) \topmargin = 12.2347pt
+(typearea) \headheight = 17.0pt
+(typearea) \headsep = 20.40001pt
+(typearea) \topskip = 11.0pt
+(typearea) \footskip = 47.60002pt
+(typearea) \baselineskip = 13.6pt
+(typearea) on input line 1115.
+)
+\c@part=\count80
+\c@section=\count81
+\c@subsection=\count82
+\c@subsubsection=\count83
+\c@paragraph=\count84
+\c@subparagraph=\count85
+\abovecaptionskip=\skip45
+\belowcaptionskip=\skip46
+\c@pti@nb@sid@b@x=\box26
+\c@figure=\count86
+\c@table=\count87
+\bibindent=\dimen102
+) (/usr/share/texmf-texlive/tex/latex/graphics/lscape.sty
+Package: lscape 2000/10/22 v3.01 Landscape Pages (DPC)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
+Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/etc/texmf/tex/latex/config/graphics.cfg
+File: graphics.cfg 2009/08/28 v1.8 graphics configuration of TeX Live
+)
+Package graphics Info: Driver file: pdftex.def on input line 91.
+
+(/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def
+File: pdftex.def 2010/03/12 v0.04p Graphics/color for pdfTeX
+\Gread@gobject=\count88
+)))
+(/usr/share/texmf-texlive/tex/generic/babel/babel.sty
+Package: babel 2008/07/06 v3.8l The Babel package
+
+(/usr/share/texmf-texlive/tex/generic/babel/english.ldf
+Language: english 2005/03/30 v3.3o English support from the babel system
+
+(/usr/share/texmf-texlive/tex/generic/babel/babel.def
+File: babel.def 2008/07/06 v3.8l Babel common definitions
+\babel@savecnt=\count89
+\U@D=\dimen103
+)
+\l@british = a dialect from \language\l@english
+\l@UKenglish = a dialect from \language\l@english
+\l@canadian = a dialect from \language\l@american
+\l@australian = a dialect from \language\l@british
+\l@newzealand = a dialect from \language\l@british
+))
+(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
+Package: inputenc 2008/03/30 v1.1d Input encoding file
+\inpenc@prehook=\toks15
+\inpenc@posthook=\toks16
+
+(/usr/share/texmf-texlive/tex/latex/base/latin2.def
+File: latin2.def 2008/03/30 v1.1d Input encoding file
+)) (./titlepic.sty
+Package: titlepic 2009/08/03 1.1 Package to display a picture on the title page
+
+)
+(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
+Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
+\Gin@req@height=\dimen104
+\Gin@req@width=\dimen105
+)
+(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty
+\Urlmuskip=\muskip10
+Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc.
+)
+(/usr/share/texmf-texlive/tex/latex/lastpage/lastpage.sty
+Package: lastpage 1994/06/25 v0.1b LaTeX2e package for refs to last page number
+ (JPG)
+)
+(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
+Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
+
+(/usr/share/texmf-texlive/tex/latex/base/t1enc.def
+File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file
+LaTeX Font Info: Redeclaring font encoding T1 on input line 43.
+))
+(/usr/share/texmf-texlive/tex/latex/koma-script/scrpage2.sty
+Package: scrpage2 2008/12/08 v2.3 LaTeX2e KOMA-Script package
+LaTeX Info: Redefining \pagemark on input line 176.
+)
+(/usr/share/texmf-texlive/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2009/10/09 v6.79a Hypertext links for LaTeX
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty
+Package: ifpdf 2009/04/10 v2.0 Provides the ifpdf switch (HO)
+Package ifpdf Info: pdfTeX in pdf mode detected.
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ifvtex.sty
+Package: ifvtex 2008/11/04 v1.4 Switches for detecting VTeX and its modes (HO)
+Package ifvtex Info: VTeX not detected.
+)
+(/usr/share/texmf-texlive/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2009/01/23 v0.5 Provides ifxetex conditional
+)
+(/usr/share/texmf-texlive/tex/latex/oberdiek/hycolor.sty
+Package: hycolor 2009/10/02 v1.5 Code for color options of hyperref/bookmark (H
+O)
+
+(/usr/share/texmf-texlive/tex/latex/oberdiek/xcolor-patch.sty
+Package: xcolor-patch 2009/10/02 xcolor patch
+))
+\@linkdim=\dimen106
+\Hy@linkcounter=\count90
+\Hy@pagecounter=\count91
+
+(/usr/share/texmf-texlive/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2009/10/09 v6.79a Hyperref: PDFDocEncoding definition (HO)
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/etexcmds.sty
+Package: etexcmds 2007/12/12 v1.2 Prefix for e-TeX command names (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2007/09/09 v1.2 Providing info/warning/message (HO)
+)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+)
+(/usr/share/texmf-texlive/tex/latex/latexconfig/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+(/usr/share/texmf-texlive/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2009/08/13 v3.4 Keyval support for LaTeX options (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/kvsetkeys.sty
+Package: kvsetkeys 2009/07/30 v1.5 Key value parser with default handler suppor
+t (HO)
+))
+Package hyperref Info: Hyper figures OFF on input line 2975.
+Package hyperref Info: Link nesting OFF on input line 2980.
+Package hyperref Info: Hyper index ON on input line 2983.
+Package hyperref Info: Plain pages OFF on input line 2990.
+Package hyperref Info: Backreferencing OFF on input line 2995.
+
+Implicit mode ON; LaTeX internals redefined
+Package hyperref Info: Bookmarks ON on input line 3191.
+LaTeX Info: Redefining \url on input line 3428.
+(/usr/share/texmf-texlive/tex/generic/oberdiek/bitset.sty
+Package: bitset 2007/09/28 v1.0 Data type bit set (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/intcalc.sty
+Package: intcalc 2007/09/27 v1.1 Expandable integer calculations (HO)
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/bigintcalc.sty
+Package: bigintcalc 2007/11/11 v1.1 Expandable big integer calculations (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/pdftexcmds.sty
+Package: pdftexcmds 2009/09/23 v0.6 LuaTeX support for pdfTeX utility functions
+ (HO)
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ifluatex.sty
+Package: ifluatex 2009/04/17 v1.2 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+)
+(/usr/share/texmf-texlive/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2009/08/05 v1.0 Some LaTeX kernel commands for general use (HO
+)
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+)))
+\Fld@menulength=\count92
+\Field@Width=\dimen107
+\Fld@charsize=\dimen108
+\Field@toks=\toks17
+Package hyperref Info: Hyper figures OFF on input line 4377.
+Package hyperref Info: Link nesting OFF on input line 4382.
+Package hyperref Info: Hyper index ON on input line 4385.
+Package hyperref Info: backreferencing OFF on input line 4392.
+Package hyperref Info: Link coloring OFF on input line 4397.
+Package hyperref Info: Link coloring with OCG OFF on input line 4402.
+Package hyperref Info: PDF/A mode OFF on input line 4407.
+
+(/usr/share/texmf-texlive/tex/generic/oberdiek/atbegshi.sty
+Package: atbegshi 2008/07/31 v1.9 At begin shipout hook (HO)
+)
+\Hy@abspage=\count93
+\c@Item=\count94
+\c@Hfootnote=\count95
+)
+*hyperref using driver hpdftex*
+(/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2009/10/09 v6.79a Hyperref driver for pdfTeX
+\Fld@listcount=\count96
+)
+Package hyperref Info: Option `colorlinks' set `true' on input line 36.
+
+(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
+Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC)
+
+(/etc/texmf/tex/latex/config/color.cfg
+File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
+)
+Package color Info: Driver file: pdftex.def on input line 130.
+)
+(/usr/share/texmf-texlive/tex/latex/listings/listings.sty
+\lst@mode=\count97
+\lst@gtempboxa=\box27
+\lst@token=\toks18
+\lst@length=\count98
+\lst@currlwidth=\dimen109
+\lst@column=\count99
+\lst@pos=\count100
+\lst@lostspace=\dimen110
+\lst@width=\dimen111
+\lst@newlines=\count101
+\lst@lineno=\count102
+\lst@maxwidth=\dimen112
+
+(/usr/share/texmf-texlive/tex/latex/listings/lstmisc.sty
+File: lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
+\c@lstnumber=\count103
+\lst@skipnumbers=\count104
+\lst@framebox=\box28
+)
+(/usr/share/texmf-texlive/tex/latex/listings/listings.cfg
+File: listings.cfg 2007/02/22 1.4 listings configuration
+))
+Package: listings 2007/02/22 1.4 (Carsten Heinz)
+
+(/usr/share/texmf-texlive/tex/latex/fancyvrb/fancyvrb.sty
+Package: fancyvrb 2008/02/07
+
+Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix
+<2008/02/07> (tvz)
+\FV@CodeLineNo=\count105
+\FV@InFile=\read1
+\FV@TabBox=\box29
+\c@FancyVerbLine=\count106
+\FV@StepNumber=\count107
+\FV@OutFile=\write3
+) (./test.aux)
+\openout1 = `test.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 96.
+LaTeX Font Info: ... okay on input line 96.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 96.
+LaTeX Font Info: ... okay on input line 96.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 96.
+LaTeX Font Info: ... okay on input line 96.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 96.
+LaTeX Font Info: ... okay on input line 96.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 96.
+LaTeX Font Info: ... okay on input line 96.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 96.
+LaTeX Font Info: ... okay on input line 96.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 96.
+LaTeX Font Info: ... okay on input line 96.
+
+(/usr/share/texmf/tex/context/base/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count108
+\scratchdimen=\dimen113
+\scratchbox=\box30
+\nofMPsegments=\count109
+\nofMParguments=\count110
+\everyMPshowfont=\toks19
+\MPscratchCnt=\count111
+\MPscratchDim=\dimen114
+\MPnumerator=\count112
+\everyMPtoPDFconversion=\toks20
+)
+Package hyperref Info: Link coloring ON on input line 96.
+ (/usr/share/texmf-texlive/tex/latex/hyperref/nameref.sty
+Package: nameref 2007/05/29 v2.31 Cross-referencing by name of section
+
+(/usr/share/texmf-texlive/tex/latex/oberdiek/refcount.sty
+Package: refcount 2008/08/11 v3.1 Data extraction from references (HO)
+)
+\c@section@level=\count113
+)
+LaTeX Info: Redefining \ref on input line 96.
+LaTeX Info: Redefining \pageref on input line 96.
+ (./test.out)
+(./test.out)
+\@outlinefile=\write4
+\openout4 = `test.out'.
+
+\AtBeginShipoutBox=\box31
+\c@lstlisting=\count114
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <12> on input line 113.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <8> on input line 113.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <6> on input line 113.
+ <uniLogo2.png, id=235, 770.88pt x 721.69624pt>
+File: uniLogo2.png Graphic file (type png)
+ <use uniLogo2.png>
+[1
+
+{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./uniLogo2.png (PNG copy)>
+]
+LaTeX Font Info: Try loading font information for T1+cmss on input line 115.
+
+ (/usr/share/texmf-texlive/tex/latex/base/t1cmss.fd
+File: t1cmss.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+) (./test.toc
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 2.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 3.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <10.95> on input line 4.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 7.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 8.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 19.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 24.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 27.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 32.
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 35.
+ [2]
+Class scrartcl Info: You've told me to use the font selection of the element
+(scrartcl) `sectioning' that is an alias of element `disposition'
+(scrartcl) on input line 59.
+)
+\tf@toc=\write5
+\openout5 = `test.toc'.
+
+
+[3] [4
+
+] <BigPicture_new1.png, id=318, 874.26625pt x 665.48625pt>
+File: BigPicture_new1.png Graphic file (type png)
+
+<use BigPicture_new1.png>
+<activity_diagram.png, id=322, 550.84535pt x 679.45181pt>
+File: activity_diagram.png Graphic file (type png)
+
+<use activity_diagram.png> [5
+
+ <./BigPicture_new1.png>] [6 <./activity_diagram.png>] <test_Use_case.png, id=3
+39, 806.92015pt x 846.75401pt>
+File: test_Use_case.png Graphic file (type png)
+
+<use test_Use_case.png> [7 <./test_Use_case.png>] [8]
+LaTeX Font Info: Try loading font information for T1+cmtt on input line 188.
+
+
+(/usr/share/texmf-texlive/tex/latex/base/t1cmtt.fd
+File: t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+) [9] [10]
+<DBRelationship.png, id=362, 1638.12pt x 700.6175pt>
+File: DBRelationship.png Graphic file (type png)
+ <use DBRelationship.png>
+[11
+
+ <./DBRelationship.png>]
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 234.
+
+ (/usr/share/texmf-texlive/tex/latex/base/omscmr.fd
+File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 234.
+<activityControllerEdited.png, id=369, 945.5325pt x 639.38875pt>
+File: activityControllerEdited.png Graphic file (type png)
+
+<use activityControllerEdited.png>
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <9> on input line 258.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line 258.
+ [12
+
+ <./activityControllerEdited.png (PNG copy)>] [13] <classDiagram.png, id=388, 1
+673.25125pt x 808.01875pt>
+File: classDiagram.png Graphic file (type png)
+
+<use classDiagram.png> [14
+
+ <./classDiagram.png>]
+<dbClass.png, id=396, 458.71375pt x 462.72874pt>
+File: dbClass.png Graphic file (type png)
+ <use dbClass.png>
+<serialPort.png, id=398, 518.64352pt x 371.26941pt>
+File: serialPort.png Graphic file (type png)
+ <use serialPort.png>
+[15
+
+ <./dbClass.png>] <serverClass.png, id=411, 302.12875pt x 181.67876pt>
+File: serverClass.png Graphic file (type png)
+
+<use serverClass.png> <ClientClass.png, id=412, 507.30705pt x 256.48764pt>
+File: ClientClass.png Graphic file (type png)
+
+<use ClientClass.png> [16 <./serialPort.png (PNG copy)>]
+<ping.png, id=424, 419.44942pt x 97.77705pt>
+File: ping.png Graphic file (type png)
+ <use ping.png> [17 <./serverClass.png (PNG copy)> <./ClientClass.png (PNG copy
+)>]
+<logging.png, id=432, 333.00882pt x 167.21294pt>
+File: logging.png Graphic file (type png)
+ <use logging.png>
+<sshTunnelClass.png, id=433, 486.05118pt x 235.23177pt>
+File: sshTunnelClass.png Graphic file (type png)
+
+<use sshTunnelClass.png> <usbDetectClass.png, id=434, 401.5pt x 178.6675pt>
+File: usbDetectClass.png Graphic file (type png)
+
+<use usbDetectClass.png> [18 <./ping.png (PNG copy)> <./logging.png (PNG copy)>
+ <./sshTunnelClass.png (PNG copy)>]
+<trueTable.png, id=443, 329.23pt x 111.41624pt>
+File: trueTable.png Graphic file (type png)
+ <use trueTable.png>
+<initTestClass.png, id=445, 419.5675pt x 160.6pt>
+File: initTestClass.png Graphic file (type png)
+ <use initTestClass.png>
+<controllerclass.png, id=446, 375.4025pt x 400.49625pt>
+File: controllerclass.png Graphic file (type png)
+
+<use controllerclass.png> [19 <./usbDetectClass.png (PNG copy)> <./trueTable.pn
+g (PNG copy)>] [20 <./initTestClass.png> <./controllerclass.png (PNG copy)>]
+<bb.jpg, id=461, 521.95pt x 516.93124pt>
+File: bb.jpg Graphic file (type jpg)
+ <use bb.jpg> [21
+
+ <./bb.jpg>] [22]
+[23
+
+] [24]
+<protocolCommunicationHandler.png, id=490, 2486.93823pt x 792.13588pt>
+File: protocolCommunicationHandler.png Graphic file (type png)
+
+<use protocolCommunicationHandler.png> [25
+
+ <./protocolCommunicationHandler.png (PNG copy)>]
+<protocolCommunicationcControllerReceiver.png, id=497, 1808.16705pt x 766.62883
+pt>
+File: protocolCommunicationcControllerReceiver.png Graphic file (type png)
+ <use protocolCommunicationcControllerReceiver.png>
+<protocolCommunicationcControllerCaller.png, id=498, 1808.16705pt x 766.62883pt
+>
+File: protocolCommunicationcControllerCaller.png Graphic file (type png)
+ <use protocolCommunicationcControllerCaller.png> [26
+
+ <./protocolCommunicationcControllerReceiver.png (PNG copy)> <./protocolCommuni
+cationcControllerCaller.png (PNG copy)>] [27] <sshTunnel.png, id=536, 696.6025p
+t x 152.57pt>
+File: sshTunnel.png Graphic file (type png)
+
+<use sshTunnel.png> [28
+
+ <./sshTunnel.png (PNG copy)>] [29] [30]
+LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <9> not available
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 710.
+ [31] [32]
+[33] [34] <resultsImage.png, id=699, 702.625pt x 431.6125pt>
+File: resultsImage.png Graphic file (type png)
+
+<use resultsImage.png> [35 <./resultsImage.png (PNG copy)>] [36] [37] [38]
+[39] <First.png, id=772, 451.6875pt x 916.42375pt>
+File: First.png Graphic file (type png)
+ <use First.png>
+<Second.png, id=773, 451.6875pt x 916.42375pt>
+File: Second.png Graphic file (type png)
+ <use Second.png>
+<Third.png, id=774, 451.6875pt x 916.42375pt>
+File: Third.png Graphic file (type png)
+ <use Third.png> [40 <./First.png> <./Second.png> <./Third.png>] [41
+
+] [42] [43] [44]
+<website1.png, id=874, 1272.755pt x 806.01125pt>
+File: website1.png Graphic file (type png)
+ <use website1.png>
+<website2.png, id=875, 1264.725pt x 657.45625pt>
+File: website2.png Graphic file (type png)
+ <use website2.png> [45
+
+ <./website1.png (PNG copy)>] <webpageReport.png, id=882, 1074.0125pt x 613.291
+24pt>
+File: webpageReport.png Graphic file (type png)
+
+<use webpageReport.png> <website3.png, id=883, 1230.5975pt x 659.46375pt>
+File: website3.png Graphic file (type png)
+
+<use website3.png> <website4.png, id=884, 1003.75pt x 702.625pt>
+File: website4.png Graphic file (type png)
+
+<use website4.png> [46 <./website2.png (PNG copy)> <./webpageReport.png (PNG co
+py)>] <terminalCommand.png, id=891, 814.04124pt x 335.2525pt>
+File: terminalCommand.png Graphic file (type png)
+
+<use terminalCommand.png>
+<resultterminal.png, id=892, 631.35875pt x 177.66376pt>
+File: resultterminal.png Graphic file (type png)
+
+<use resultterminal.png> [47 <./website3.png (PNG copy)> <./website4.png (PNG c
+opy)>] <devconf.png, id=900, 687.56876pt x 306.14375pt>
+File: devconf.png Graphic file (type png)
+ <use devconf.png>
+[48 <./terminalCommand.png (PNG copy)> <./resultterminal.png (PNG copy)> <./dev
+conf.png (PNG copy)>] [49
+
+] AED: lastpage setting LastPage [50] (./test.aux) )
+Here is how much of TeX's memory you used:
+ 8696 strings out of 495061
+ 126228 string characters out of 1182621
+ 768145 words of memory out of 3000000
+ 11294 multiletter control sequences out of 15000+50000
+ 18496 words of font info for 43 fonts, out of 3000000 for 9000
+ 28 hyphenation exceptions out of 8191
+ 43i,11n,45p,760b,1784s stack positions out of 5000i,500n,10000p,200000b,50000s
+ </home/refik/.texmf-var/fo
+nts/pk/ljfour/jknappen/ec/ecbx0900.600pk> </home/refik/.texmf-var/fonts/pk/ljfo
+ur/jknappen/ec/ecrm0900.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen
+/ec/ecrm0600.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecrm080
+0.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ectt1095.600pk> </
+home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecti1095.600pk> </home/refik/
+.texmf-var/fonts/pk/ljfour/jknappen/ec/ecsx1200.600pk> </home/refik/.texmf-var/
+fonts/pk/ljfour/jknappen/ec/ecrm1095.600pk> </home/refik/.texmf-var/fonts/pk/lj
+four/jknappen/ec/ecsx1095.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknapp
+en/ec/ecsx1440.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecsl1
+095.600pk> </home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecrm1200.600pk>
+</home/refik/.texmf-var/fonts/pk/ljfour/jknappen/ec/ecrm1728.600pk></usr/share/
+texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texmf-texli
+ve/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texmf-texlive/fonts/ty
+pe1/public/amsfonts/cm/cmsy9.pfb>
+Output written on test.pdf (50 pages, 5058627 bytes).
+PDF statistics:
+ 1657 PDF objects out of 1728 (max. 8388607)
+ 418 named destinations out of 1000 (max. 500000)
+ 640 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/documenting/Report/test.out b/documenting/Report/test.out
new file mode 100644
index 0000000..b4daec0
--- /dev/null
+++ b/documenting/Report/test.out
@@ -0,0 +1,58 @@
+\BOOKMARK [1][-]{section.1}{Introduction and Motivation}{}
+\BOOKMARK [1][-]{section.2}{Requirements}{}
+\BOOKMARK [2][-]{subsection.2.1}{Logical and algorithmic requirements}{section.2}
+\BOOKMARK [2][-]{subsection.2.2}{Software requirements}{section.2}
+\BOOKMARK [2][-]{subsection.2.3}{Hardware requirements}{section.2}
+\BOOKMARK [1][-]{section.3}{Database design}{}
+\BOOKMARK [1][-]{section.4}{Software design}{}
+\BOOKMARK [2][-]{subsection.4.1}{Database access}{section.4}
+\BOOKMARK [2][-]{subsection.4.2}{Controlling the cell phones}{section.4}
+\BOOKMARK [2][-]{subsection.4.3}{Client and Server class}{section.4}
+\BOOKMARK [2][-]{subsection.4.4}{Ping class}{section.4}
+\BOOKMARK [2][-]{subsection.4.5}{Data logging}{section.4}
+\BOOKMARK [2][-]{subsection.4.6}{SSH Tunnel Class}{section.4}
+\BOOKMARK [2][-]{subsection.4.7}{USB Cell phone detection class}{section.4}
+\BOOKMARK [2][-]{subsection.4.8}{Truth table class}{section.4}
+\BOOKMARK [2][-]{subsection.4.9}{Init Test class}{section.4}
+\BOOKMARK [2][-]{subsection.4.10}{Controller class}{section.4}
+\BOOKMARK [1][-]{section.5}{Hardware design}{}
+\BOOKMARK [2][-]{subsection.5.1}{BeagleBoard}{section.5}
+\BOOKMARK [2][-]{subsection.5.2}{Cell phones}{section.5}
+\BOOKMARK [2][-]{subsection.5.3}{Cables for the cell phones}{section.5}
+\BOOKMARK [2][-]{subsection.5.4}{Server}{section.5}
+\BOOKMARK [1][-]{section.6}{Communication protocol}{}
+\BOOKMARK [2][-]{subsection.6.1}{Communication between the handler and controller}{section.6}
+\BOOKMARK [2][-]{subsection.6.2}{Verification of the protocol}{section.6}
+\BOOKMARK [1][-]{section.7}{Security and safety of the system}{}
+\BOOKMARK [2][-]{subsection.7.1}{Encryption of the communication channels}{section.7}
+\BOOKMARK [2][-]{subsection.7.2}{Security on the web site}{section.7}
+\BOOKMARK [3][-]{subsubsection.7.2.1}{Configuring the http secure protocol https}{subsection.7.2}
+\BOOKMARK [3][-]{subsubsection.7.2.2}{Password protecting the web site using .htaccess}{subsection.7.2}
+\BOOKMARK [1][-]{section.8}{Web page}{}
+\BOOKMARK [2][-]{subsection.8.1}{Communication between the web page and the test software}{section.8}
+\BOOKMARK [2][-]{subsection.8.2}{Results on the web page}{section.8}
+\BOOKMARK [1][-]{section.9}{Employing the test software system}{}
+\BOOKMARK [2][-]{subsection.9.1}{Required software and libraries}{section.9}
+\BOOKMARK [3][-]{subsubsection.9.1.1}{Python installation}{subsection.9.1}
+\BOOKMARK [3][-]{subsubsection.9.1.2}{Apache Web server installation}{subsection.9.1}
+\BOOKMARK [3][-]{subsubsection.9.1.3}{SSH}{subsection.9.1}
+\BOOKMARK [3][-]{subsubsection.9.1.4}{MySQL database and MySQLdb library}{subsection.9.1}
+\BOOKMARK [3][-]{subsubsection.9.1.5}{Serial port library}{subsection.9.1}
+\BOOKMARK [3][-]{subsubsection.9.1.6}{PJSUA library}{subsection.9.1}
+\BOOKMARK [3][-]{subsubsection.9.1.7}{pChart library}{subsection.9.1}
+\BOOKMARK [3][-]{subsubsection.9.1.8}{proctitle library}{subsection.9.1}
+\BOOKMARK [2][-]{subsection.9.2}{Configuring hardware}{section.9}
+\BOOKMARK [3][-]{subsubsection.9.2.1}{Configuring the cell phones}{subsection.9.2}
+\BOOKMARK [2][-]{subsection.9.3}{Location of the files}{section.9}
+\BOOKMARK [2][-]{subsection.9.4}{Setting up the parameters}{section.9}
+\BOOKMARK [2][-]{subsection.9.5}{Test descriptions}{section.9}
+\BOOKMARK [3][-]{subsubsection.9.5.1}{Smart test}{subsection.9.5}
+\BOOKMARK [3][-]{subsubsection.9.5.2}{SIP test}{subsection.9.5}
+\BOOKMARK [3][-]{subsubsection.9.5.3}{GSM test}{subsection.9.5}
+\BOOKMARK [3][-]{subsubsection.9.5.4}{All test}{subsection.9.5}
+\BOOKMARK [3][-]{subsubsection.9.5.5}{Manual test}{subsection.9.5}
+\BOOKMARK [2][-]{subsection.9.6}{Result descriptions}{section.9}
+\BOOKMARK [2][-]{subsection.9.7}{Using the software}{section.9}
+\BOOKMARK [3][-]{subsubsection.9.7.1}{Web site guide}{subsection.9.7}
+\BOOKMARK [3][-]{subsubsection.9.7.2}{Terminal guide}{subsection.9.7}
+\BOOKMARK [1][-]{section.10}{Conclusion}{}
diff --git a/documenting/Report/test.pdf b/documenting/Report/test.pdf
new file mode 100644
index 0000000..71c64e0
--- /dev/null
+++ b/documenting/Report/test.pdf
Binary files differ
diff --git a/documenting/Report/test.tex b/documenting/Report/test.tex
new file mode 100644
index 0000000..6e15c02
--- /dev/null
+++ b/documenting/Report/test.tex
@@ -0,0 +1,1376 @@
+\documentclass[a4paper, titlepage, oneside, headsepline, footsepline]{scrartcl}
+%PACKAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{lscape} %for the landscape pages it is used
+\usepackage[english]{babel} %what language are we using
+\usepackage[latin2]{inputenc} %what alphabet
+
+\usepackage[tt]{titlepic} %used for adding the title image
+\usepackage{graphicx} %used for adding images
+\usepackage{url} %used for the url in bibliography
+\usepackage{lastpage} %give me the total number of pages, used in footer: \pageref{LastPage}
+
+\usepackage[T1]{fontenc} %used for fonts
+\usepackage{scrpage2} %used for making headers, footers and correct margins
+%\usepackage{hyperref} %used for the linking of table of content
+
+%information for the PDF
+\usepackage[pdftex, %used for adding pdf information
+ pdfauthor={Refik Hadzialic, Triatmoko},
+ pdftitle={Software for self-testing of the Telecommunication network of University of Freiburg},
+ pdfsubject={Telecommunication network testing software},
+ pdfkeywords={telecommunication;network;networking;linux;ubuntu;university;Freiburg;python;tcp/ip;security;gsm;sip;voip},
+ pdfproducer={Latex with hyperref, or other system},
+ pdfcreator={pdflatex, or other tool}]{hyperref} %used for the linking of table of content
+
+
+
+
+
+\hypersetup{ %setting up the look of the links
+ colorlinks,
+ citecolor=black,
+ filecolor=black,
+ linkcolor=black,
+ urlcolor=black
+}
+
+\usepackage{color} %used for highlighting source code
+\usepackage{listings} %used to make a box with source code
+\usepackage{fancyvrb}
+\DefineVerbatimEnvironment{code}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{example}{Verbatim}{fontsize=\small}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE LOOK OF THE PAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{scrheadings}
+
+\renewenvironment{abstract}
+ {\begin{center}\large\textbf{}\noindent\end{center}}{\vspace{2\baselineskip}}
+
+% Disable single lines at the start of a paragraph (Schusterjungen)
+\clubpenalty = 10000
+% Disable single lines at the end of a paragraph (Hurenkinder)
+\widowpenalty = 10000 \displaywidowpenalty = 10000
+
+\setlength{\parskip}{0.01\baselineskip}
+\textheight = 620pt
+
+\ohead{Software for self-testing of the Telecommunication network of University of Freiburg} %make the header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE THE STUFF FOR CODE
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lstset{ %
+%language=Python, % choose the language of the code
+columns=fullflexible,
+keywordstyle=\color[rgb]{0.608,0.561,0.008},
+commentstyle=\color[rgb]{0.25,0.5,0.35},
+stringstyle=\color[rgb]{0.25,0.35,0.85},
+basicstyle=\footnotesize,%\scriptsize % the size of the fonts that are used for the code
+%numbers=left, % where to put the line-numbers
+numberstyle=\footnotesize, % the size of the fonts that are used for the line-numbers
+stepnumber=1, % the step between two line-numbers. If it is 1 each line will be numbered
+numbersep=8pt, % how far the line-numbers are from the code
+backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}
+showspaces=false, % show spaces adding particular underscores
+showstringspaces=false, % underline spaces within strings
+showtabs=false, % show tabs within strings adding particular underscores
+frame=single, % adds a frame around the code
+tabsize=2, % sets default tabsize to 2 spaces
+captionpos=b, % sets the caption-position to bottom
+breaklines=true, % sets automatic line breaking
+breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+escapeinside={\%}{)} % if you want to add a comment within your code
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\newcommand{\titleOfProject}{Software For Self-Testing Of The Telecommunication Network Of University Of Freiburg}
+
+
+
+%begin of the document
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+
+
+
+%make the title page
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\titlepic{\includegraphics[width=90mm]{uniLogo2.png}}
+\title{Team Project \\ ``\titleOfProject''} % type title between braces
+\date{\today} % type date between braces
+\author{Refik Had\v{z}iali\'{c}\\ Triatmoko } % type author(s) between braces
+\department{\vspace{1\baselineskip} \large Albert-Ludwigs-Universit\"{a}t Freiburg \\
+Lehrstuhl f\"{u}r Komunikationsysteme\\
+Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Meier \\ Dennis Wehrle \\ \vspace{1\baselineskip} Sommersemester 2011}
+
+\maketitle
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%add the table of contents
+\tableofcontents
+
+%new page to start with
+\clearpage
+
+
+
+
+% first chapter
+\section{Introduction and Motivation} % chapter 1
+In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems from an external perspective and infer the results out of our findings.
+Before we had started working on our project, we had to analyze the overall network to come up with the test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
+Gradually we implemented a bit-by-bit of the final software. In the following chapters we will describe in more detail our approach to the problem and how each subsystem works.
+This particular report and our wiki page should be a sufficient guide and manual for understanding, running and continuing the development of our test software.
+Certainly, we had a lot of fun while working on the project due the fact that we lost one team member.
+We would like to thank the whole department for the free coffee and their support, especially
+Konrad Meier, Dennis Wehrle, Richard M. Zahoransky and Larissa Linz, without their support this project would not
+end up this way.
+\clearpage
+\section{Requirements} % chapter 2
+At the start of the project the requirements were not completely known but as the time had passed we redefined our requirements and goals.
+The first and the most important part at the start was to identify the key goals of our team project. The basic goal of our team project was to build a
+test software system which could tell an operator user what part of the system is not properly working in our University telecommunication network.
+Konrad and Dennis suggested us to analyze figure 1 and depending on it to build our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{BigPicture_new1.png}
+ \caption[]{Overview of the Freiburg University telecommunication network \cite{network}}
+\end{figure}
+Our first attempt was to see what could we test without having access to the system. We installed numerous communication programs to see what others have done.
+After gaining access to the communication software, we had decided to build most of the test software ourselves. Libraries, which were used,
+were only the ones we could not develop ourselves because of the time-span of our team project.
+\subsection{Logical and algorithmic requirements}
+Despite the software and hardware requirements, the logic in our team project may be considered as the most important part.
+Controlling the software and hardware in a specific manner was one of the requirements in our team project.
+Moreover, we were required to draw a use case diagram and a simple test case diagram so that we could better understand all the problems we had to deal with
+but also to easier follow the development of our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{activity_diagram.png}
+ \caption[]{Simple algorithmic overview of a test case}
+\end{figure}
+\subsection{Software requirements}
+Afterwards, as we had defined our logical approach to the problems, we had to choose the programming language to realize our ideas. Since we had the freedom of choice, between the three suggested programming languages
+Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
+therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
+Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems.
+\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
+The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results.
+\par In addition it was required to log all the past tests. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
+(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system.
+We decided to use MySQL since it is open source and well supported.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{test_Use_case.png}
+ \caption[]{Test case diagram}
+\end{figure}
+\subsection{Hardware requirements}
+Likewise the software requirements, we had hardware requirements as well. We were required to identify the hardware we will need to perform the tests.
+It was important to find old and cheap cell phones that could support \emph{AT Modem} commands because our budget was limited.
+\par A problem we had to deal with at the start was that the base stations are located at different geographical points which were not near to each other.
+No one should go everyday to the rooms where our cell phones are located only to change or charge the batteries.
+In the cable subsection we describe our approach to the charging battery problem. As we defined our requirements we continued with the process of developing the test software.
+During the development time we refined our requirements. In the next chapters we will explain our database, software and hardware design ideas.
+\newpage
+\section{Database design}
+As we mentioned in the software requirements section, we decided to use MySQL as our database system for storing the test information and results.
+It was not difficult to decide what database to use, since MySQL is one of the most supported database and one can find a library to use it with major programming languages.
+The key point in the design of our database was the simplicity and speed of accessing the data. We had decided to use seven tables. In the following paragraphs we will explain each table separately and its usage.
+The database design can be seen in figure 4.
+
+\par The \emph{PingResultTable} table has six attributes (\emph{taskNo, sipServer, sipGate, unisip, gsmBox1, gsmBox2}), all of integer type.
+The \emph{taskNo} attribute identifies the test number but not a single test (e.g. an operator user has selected three different tests to be executed, all of the three tests will have the same \emph{taskNo} to identify them together as belonging to one test group and \emph{taskId} identifies each single test and will be explained later).
+\emph{sipServer} represents the Asterisk server ping result. \emph{sipGate} is used to represent the SIP Gate server for the landline calls (\url{http://www.sipgate.de}). \emph{uniSip} represents the ping results for our local University telephone network SIP server.
+\emph{gsmBox1} and \emph{gsmBox2} are the two single-chip Linux computers (BeagleBoard), that control two cell phones each one (i.e. they are also known under the name of \emph{nanoBTSx controller}).
+\emph{taskNo} is the primary and unique key in the table \emph{PingResultTable}. Rest of the attributes (i.e. \emph{sipServer, sipGate, uniSip, gsmBox1, gsmBox2}) are used to insert the ping results, if the assigned servers are reachable or not.
+Before any test attempt is made, our test software first tries to ping the servers. These results are then stored in the \emph{PingResultTable}.
+
+\par The \emph{ErrorCodeTable} table defines all the possible test results in the system, in other words it represents a list with error codes with their appropriate descriptions and meanings. It consists of two attributes (\emph{errorcode} and \emph{description}), the first is of integer type and the second of varchar type (the description message is allowed to be only 100 characters long).
+The \emph{ErrorCodeTable} table is used by the main test software (i.e. controller) to report the operator user what kind of error had appeared in the system.
+
+\par The \emph{DeviceAddressTable} is the table containing the location and identification data for each server and device. The table consists of seven attributes, \emph{deviceName, portName, number, lastChange, username, password, server}.
+\emph{deviceName} is the attribute with the name of the device or server (e.g. GSMRZ1 or landline), it is of varchar type. \emph{portName} is the attribute field with the location address for a cell phone (e.g. \emph{/dev/ttyUSB1}) or 'localhost' instead of NULL value for a server, it is of the varchar type.
+\emph{number} represents the number of the used service (i.e. number of the cell phone, SIP, etc.) and is of varchar type.
+\emph{lastChange} is a time value and represents the date and time the given entry was modified (we had plans in future versions of our test software that if an device gets a new IP address assigned it automatically changes it in the database).
+\emph{username} is the field with the username stored in for a server/service, like SIP and landline. \emph{password} attribute stores the password information for the given service. The \emph{server} attribute stores information about the location of the server, IP or DNS address of the server. All three fields, \emph{username}, \emph{password} and \emph{server} are of varchar type.
+The information stored in the given table is used by the test software to obtain usernames, passwords and addresses of the used services for the tests.
+
+\par The \emph{ResultTable} table is used by the test system to store final results for the performed tests. Our given table consists of two fields, \emph{taskID} and \emph{result} and both are of integer type. For each test entry with unique \emph{taskID} an error code is assigned in the \emph{result} field,
+depending on the test results. Error codes found in the \emph{ErrorCodeTable} table can be only assigned to this field.
+
+\par The \emph{TempTaskTable} table represents the table with the tasks the system has to execute next time the test software is started. The given table gets new data every time an operator user submits one or more test cases from the website to be executed. \emph{TempTaskTable} includes four attributes, \emph{taskID, taskNo, from, to}. Former two are of integer type and later two of varchar type.
+\emph{taskID} and \emph{taskNo} identify the test task to be executed, \emph{taskID} is the unique primary key. \emph{from} and \emph{to} fields have to match the names given in \emph{DeviceAddressTable.deviceName}, these two attributes specify the caller and callee devices/services. Consequently, after the tasks get executed, the test tasks are removed and the given table is empty again until next tests are added to it.
+However, all the test tasks even after deleting them from \emph{TempTaskTable} are kept in the \emph{TaskTable}. The reason why the authors of this project divided it into two tables was because of the database row selection speed. We had made the assumption that with time the database size will grow and therefore the database speed will not be the same as during the development period.
+
+\par The \emph{TaskTable} table, as mentioned before contains all the tests ever performed from the web site. It is made out of five attributes, \emph{taskID, taskNo, from, to, timestamp}. The first four fields are the same as in \emph{TempTaskTable}, however the last one, \emph{timestamp}, is used to record the exact time when the test was performed.
+\par The \emph{GSMListPrefix} table contains the data about the GSM networks and their prefixes. It consists of two
+attributes, both of varchar type, \emph{providerName} and \emph{prefix}.
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{DBRelationship.png}
+ \caption[]{Database relationship diagram}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+
+
+\section{Software design} % section 2.1
+Software design was the next step after we analyzed the problem and developed a plan how to proceed further. Good analysis and planning with poor algorithmic implementation is valueless.
+During the work on the project, we had spent most of our time for software design.
+We kept in mind that our software should satisfy major paradigms of software engineering,
+like compatibility, extensibility, modularity, reliability, security, fault-tolerance and usability.
+The software engineering design concepts were achieved following way:
+\begin{itemize}
+\item Compatibility - we used Python and MySQL which are multi-platform and work on major OS
+\item Extensibility - new parts of code can be easily added by just modifying the classes
+\item Mudalarity - the components are independent black boxes, they are tested and validated independently
+\item Reliability - we use mutex locks to perform tests and database transaction operations to insert data into the database
+\item Security - all communication channels, as well as the access to the web site, are encrypted with asymmetric key cryptography
+\item Fault-tolerance - the classes were designed to continue operating even if error events appear and handlers are logging all events
+\item Usability - we tried to create a simple user interface and easily to use for everyone
+\end{itemize}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{activityControllerEdited.png}
+ \caption[]{Working principle of the test software}
+\end{figure}
+
+\par The basic principle how the test software works can be seen in figure 5. The test software is
+started either manually from the terminal or using the web site. When the test software
+is started manually it is database dependent as well and therefore could not be used if the
+database is being maintained or not working. If it is started from the web site it
+connects to the database to get its tasks which have to be performed. After receiving
+the tasks it makes a simple network test by pinging all the servers. The ping results
+are stored in the database (in case the test was started from the web site). Then it
+proceeds with the tests by connecting itself to the handlers and sending them commands
+to perform the tests\footnote{Before it connects to the handlers, it uses the ping
+results to see is the service/device physically connected to the network.}.
+At the higher level, these commands can be seen as requests for being the
+callee and caller. Meanwhile the handlers send their test results to the main
+test software which in return decides if the test result was successful or not.
+The result is written to the database (in case the software was started from the website),
+otherwise the results are displayed in the terminal window and the user who started
+it manually can see the test results. We will proceed with introducing the classes.
+The software class diagram can be seen in the following figure. More details for the
+classes, like the input/output can be found on our project's wiki page \cite{wiki}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{classDiagram.png}
+ \caption[]{Class diagram (some classes were excluded)}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+\newpage
+\subsection{Database access} % subsection 2.1.1
+Accessing the database is of critical value to our project, therefore we had developed our own class that limits the access to the database. In the process of developing our own class we used the MySQLdb library in Python \cite{mysqlManual}.
+The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete back-trace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{dbClass.png}
+ \caption[]{Class diagram for the dbClass}
+\end{figure}
+The method names are self-explanatory and do not require extra explanations. All the outputs produced by the class can be found on the project wiki page \cite{wiki}.
+\subsection{Controlling the cell phones}
+Our first version of the developed program code for controlling the cell phones used predefined timed values
+to send commands instead of using a state controlled approach to confirm that every command was successfully received and executed by the cell phone.
+It meant we had to make an enormous number of assumptions. In comparison to our second approach, to build a state controlled cell phone control class,
+our first approach was inferior and slower. The state controlled method connected two cell phones, on the same base station, up to 15 times faster than the timed approach.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=80mm]{serialPort.png}
+ \caption[]{GSM class diagram for controlling the cell phones}
+\end{figure}
+One can easily apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception.
+A timeout exception gets raised when the cell phone does not respond (i.e. when the cell phone enters a deadlock or delayed state). We had used the serial port library inside of Python although we use USB cables to connect to our cell phones. One should
+be aware that our USB cables create a virtual serial port. More details on class design and an example can be found on our project wiki \cite{wiki}.
+\subsection{Client and Server class}
+Our socket communication code is based on the example given in the Python socket manual \cite{socket}.
+We extended it into two classes, a client and a server class. We had used the TCP protocol to base our two classes on\footnote{TCP is reliable compared to UDP (i.e. transmitted packets get also delivered),
+packets are ordered when received and data are received in a stream (i.e. multiple packets can be read at once).}.
+The Server class can be seen in the following figure. The server class is implemented to accept only local connections\footnote{More details are given in the section 7.1}.
+First we determine our IP address and then create the socket to listen only for the same IP address (with a different IP address than the selected one a connection cannot be even established).
+One has to define the port on which the server object should listen.
+When receiving data one can easily define the timeout to be raised if data are not received in the timeout range or set it to \emph{0} to infinitely wait for the buffer to be filled with received data. While testing the server class we had the problem to listen on the same port if the application was forcibly\footnote{Manually closed using CTRL+C and run again.} restarted in less than 60 seconds. We got the error message: \emph{"Address already in use"}.
+This is not known as error behavior but rather an option to help the server to catch lost live packets (i.e. packets that are still in the network looking for it is goal destination).
+We solved the problem by changing the socket options with the \emph{SO\_REUSEADDR} parameter. This enabled us to get around the error when we tried to restart our server application.
+Before solving the problem without using the socket parameter, we had another solution to get around this problem by killing the application running the port, this old method is obsolete now.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[scale=0.8]{serverClass.png}
+ \caption[]{Server class, used by the server application}
+\end{figure}
+In the process of testing the client class we did not have any major problems. The only major flow we had to debug was when one of the sides disconnects that we get out of the waiting loop if the timeout variable was set to \emph{0} (i.e. infinite waiting loop).
+The client class can be seen in the following figure. To initialize the client object one needs to define the IP address and the port of the server application listening on it.
+\begin{figure}[hb!]
+ \centering
+ \includegraphics[scale=0.5]{ClientClass.png}
+ \caption[]{Client class, used by the client application}
+\end{figure}
+Once an instance of it is created and loaded with the IP address and the port, one needs to call the \emph{connect()} method.
+The method will produce an integer based on its connection state. Output information and the programming code can be found on our project wiki page \cite{wiki}.
+\subsection{Ping class}
+Before making any test and establishing a connection we were required to ensure that the server is online. The best way to assess the liveness property was to ping the server computer running the required service. Once the class is properly defined, we could easily set the number of ping tries.
+A ping timeout response was set up to 2 seconds. For more details and insights, one can read more about it on our wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=70mm]{ping.png}
+ \caption[]{Ping class, used by test software}
+\end{figure}
+\subsection{Data logging}
+If errors appear it is important to reconstruct the events that led to the misbehavior of the software. One of the best ways to reconstruct the events was to log
+events for different blocks of programming code.
+We had used the logging class to follow our handler code run on the BeagleBoard. In case there is an error we could look inside of the log files and track the error.
+How the class works and what kind of outputs it produces can be found on our project wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{logging.png}
+ \caption[]{Logging class}
+\end{figure}
+\subsection{SSH Tunnel Class}
+Since security played an important role in our team project. We decided to encrypt all of our data that was not processed on our server computer.
+The simplest solution to this problem was to build an SSH Class that could open and close a local forwarding port.
+All data sent through the created port is encrypted until it gets to its destination location.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{sshTunnelClass.png}
+ \caption[]{SSH Tunnel class}
+\end{figure}
+\subsection{USB Cell phone detection class}
+Since we had used cables to connect the cell phones with the computer, usually the devices
+got their own port addresses. They were automatically assigned by the operating system,
+either after the cables were plugged into the USB port or after a system reboot.
+One of the problems we had to deal with was assigning the right cell phone
+(i.e. with the appropriate GSM network) to the corresponding port address.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{usbDetectClass.png}
+ \caption[]{USB cable detection class}
+\end{figure}
+The operating system randomly assigned the port names after every reboot.
+We were looking for a solution to prevent this misaddressing of the devices.
+Our solution was to recognize every device and update the port address in the database.
+The principle how we identify the cell phones is by their calling numbers in the database.
+More details can be found on our project wiki page \cite{wiki}.
+\subsection{Truth table class}
+The truth table class was built to identify the broken and working parts of the system.
+It requires the list with test results to be present to be operable.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{trueTable.png}
+ \caption[]{Truth table class}
+\end{figure}
+Then the class tries to identify the broken parts of our telecommunication network.
+The class can easily identify how many nanoBTSs are installed in the network and
+derive a decision which part of the network is broken.
+All the test results are stored in a list and can be easily read by calling the
+\emph{initTrueTable(x)} function. More details can be found on our project wiki page \cite{wiki}.
+\subsection{Init Test class}
+The main purpose of the class is to get device data from the database and to process it.
+The processed data get forwarded to the controller class and in the end the class
+fetches the results from the test. This class contains the \emph{smart test} functionality.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{initTestClass.png}
+ \caption[]{Init test class}
+\end{figure}
+It selects automatically the important tests to perform. In the next step it
+tries to identify the problem in the network.
+More details can be found in the \emph{smart test} description.
+\subsection{Controller class}
+The controller class is used to assign jobs to handlers (in other words, which one is
+going to be the caller and callee). Simultaneously, it defines the port addresses for
+the communication between the handlers and the main test software (controller).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{controllerclass.png}
+ \caption[]{Controller class}
+\end{figure}
+If the callee or the caller are nanoBTS controller boxes (i.e. BeagleBoards outside
+the Rechenzentrum), it will first create an SSH connection to make a tunnel before
+the local socket connection is created. Then the controller class sends all the
+required data regarding the test tasks to the handlers.
+
+\clearpage
+\section{Hardware design}
+In our team project we had the option to choose all the required hardware ourself beside the two BeagleBoards, which we were supplied by Konrad and Dennis.
+Since one of the project goals was to reduce the costs as much as it was possible, we had tried to use some of the leftovers found in our lab.
+
+\subsection{BeagleBoard}
+``The BeagleBoard is an OMAP3530 platform designed specifically to address the Open
+Source Community.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{bb.jpg}
+ \caption[]{BeagleBoard, a Linux-on-chip board where our controller software runs the GSM device }
+\end{figure}
+It has been equipped with a minimum set of features to allow the
+user to experience the power of the OMAP3530 and is not intended as a full development
+platform as many of the features and interfaces supplied by the OMAP3530 are not
+accessible from the BeagleBoard'' \cite{beagleDataSheet}.
+We run on it a special precompiled version of Ubuntu for the ARM processor type. The Linux system boots up from an SD Card.
+The board has an USB hub and network port attached to it. In our project it is connected to our
+internal university LAN network and to a cell phone. We positioned the two BeagleBoards in rooms where
+we had LAN access and GSM signal coverage of our two local base stations.
+
+\subsection{Cell phones}
+Our first attempt was to control a Nokia cell phone 3310 with the supplied USB connection cable.
+The protocols used by old versions of Nokia cell phones, as the 3310, use the F-Bus protocol. It was not easy to work with.
+After performing various experiments we succeeded to send and to read SMS messages. Later on we found out that it was not possible to
+send commands for receiving and making the calls. In the meantime we found two Siemens phones, one M45 and S55.
+The first one, Siemens M45, had a cable supplied with it and it was not difficult to control it with the standard set of AT modem commands.
+At the start we did not have a cable supplied for the Siemens S55 phone. We controlled it over the Bluetooth port.
+
+\subsection{Cables for the cell phones}
+Due to the fact that we had used 5 cell phones on a single computer, the best solution was to order 5 USB cables.
+Konrad bought 5 cables for 5 Siemens S55 cell phones. All of the cables have an USB2Serial chip converter inside of them.
+Once they were plugged into the USB port, Ubuntu automatically recognized the cables and installed the drivers.
+The virtual serial ports were created and could be found on \emph{/dev/ttyUSBx}, where $x$ is the automatically assigned number for the port.
+Some of the cables had the capability to charge the Siemens S55 phones.
+Konrad had opened several cables to solder the power supplies to some contacts and the problem was solved for all of the cables.
+\subsection{Server}
+We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Apache web server and MySQL.
+Afterwards we installed the Python on it and all the required libraries\footnote{Required libraries are mentioned in section 9.1.}.
+\clearpage
+
+\section{Communication protocol}
+A communication protocol represents a set of well defined rules by whose help two or more computing systems exchange information in-between.
+When defining these rules, it is important to define a limited state space for every possible event, no matter did we get the appropriate
+response from the other side. Our approach to this problem was to build a simple synchronous protocol, where every expected message is
+confirmed or otherwise the connection between two sides is immediately terminated. Since designing protocols is a demanding and challenging
+topic which requires years of experience and verification, we do not expect that we had developed the best possible and an optimum
+protocol\footnote{Design concepts and paradigms for the protocol design have been used from the
+``Network Protocol Design and Evaluation'' course, lectured by Dr. Stefan R\"{u}hrup}.
+In the following paragraphs we will try to clarify how our protocol works. Before we start to go into detail how the protocol works,
+it is important to remember that we differentiate two sides, handler and the controller side. The handler side represent the device
+that physically handles the call (e.g. the BeagleBoard) whereas the controller (i.e. the main test software), is the test software
+controlling the handler side and assigning the task to it.
+
+\subsection{Communication between the handler and controller}
+The handler side is always in the waiting mode, by waiting we denote the mode where the socket is already created and it is waiting
+for a connection to be accepted at the defined port. The controller initiates a socket connection to the two handlers.
+Subsequently, after the connection has been established, it is waiting for a message to be received. The first message
+has to be 13 characters long and include the following content \emph{HELLO HANDLER}. Thereupon, after the message has
+been validated, the handler side sends the controller side a response, \emph{HELLO CONTROLLER}.
+We call this first message exchange the initialization. Now the controller side has to decide which of the two handler's
+will be the caller/callee whereas the other handler will be the opposite. Let's assume the controller sends to the first
+handler the message \emph{RECEIVER} and to the second one the message \emph{CALLER|\#}, replace the callee number with the \# sign.
+In the meantime, both handlers initialize the software required to make the call and to receive the call. Asynchronously they
+respond back to the controller their successful initialization. The successful initialization is reported by sending \emph{RECEIVER READY}
+and \emph{CALLER READY}. After receiving the mentioned messages, the controller first sends the callee handler the
+message \emph{RECEIVE START} and then to the caller handler, the message \emph{CALLER START}. As a result of these messages,
+the handlers enter the receiving, respectively calling state. In the given states two timeout timers gets activated.
+These timers are responsible for the case if the physical connection between the callee and the caller are not successfully
+established or terminated\footnote{The client and server classes responsible for the communication have timeout timers as well
+for the case if the connection between the controller and handlers are broken.}. Afterwards, depending if the physical connection
+between the handlers (i.e. the callee and the caller) was successfully established or not, the handlers report their
+corresponding state with a message to the controller. The message is of the form \emph{CALL OK}, meaning the handler successfully
+established a physical connection with the other handler, or of the form \emph{CALL NOT OK}, meaning a physical connection was
+not successfully established on the given handler. The controller considers only a test successful if both handlers report
+with \emph{CALL OK}. The test software ends the established connection with the handlers by sending them the \emph{TERMINATE CONNECTION}
+command. After the handlers have terminated the connection, they enter the waiting for a new connection state and the process starts
+from beginning again. If the states are not entered in the specified order the connection is immediately terminated and
+the state machine is in the waiting for a new connection state\footnote{It cannot be seen in the protocol flowchart but one should
+keep in mind it works like a well defined state machine.}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{protocolCommunicationHandler.png}
+ \caption[]{Flowchart of the protocol on the handler side without the state representation}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerReceiver.png}
+ \caption[]{Flowchart of the protocol on the controller side for the caller without the state representation}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerCaller.png}
+ \caption[]{Flowchart of the protocol on the controller side for the receiver without the state representation}
+\end{figure}
+
+\subsection{Verification of the protocol}
+``SPIN is a model checker - a software tool for verifying models of physical
+systems, in particular, computerized systems. First, a model is written that
+describes the behavior of the system; then, correctness properties that express
+requirements on the system's behavior are specified; finally, the model
+checker is run to check if the correctness properties hold for the model, and,
+if not, to provide a counterexample: a computation that does not satisfy a
+correctness property.'' \cite{spin}. We modeled our simple protocol in SPIN using
+the programming language PROMELA \cite{spin}. Since PROMELA is similar to C it was
+not possible to ensure 100\% matching with Python but we had made the assumptions of it.
+We modeled both sides, server and client side. As well as the server side being a caller
+and a callee. It was important to find out if our protocol is deadlock or delayed state free.
+For more details our model can be found on our wiki project page with the PROMELA source code \cite{wiki}.
+We had built in a 50\% random probability that the call test will not be successful, to make the model even more
+realistic. Our protocol idea was deadlock free and the verification results prove it.
+After we had modeled the basic idea we had written the code that implements our idea. The Python code
+resembles some kind of a state machine which remembers the last state and what the next state should be in case
+of receiving corresponding message. Otherwise it enters the exit state and then the start state.
+
+\begin{lstlisting}
+(Spin Version 6.1.0 -- 2 May 2011)
+ + Partial Order Reduction
+Full statespace search for:
+ never claim - (none specified)
+ assertion violations +
+ cycle checks - (disabled by -DSAFETY)
+ invalid end states +
+State-vector 44 byte, depth reached 65, errors: 0
+ 40 states, stored
+ 3 states, matched
+ 43 transitions (= stored+matched)
+ 90 atomic steps
+hash conflicts: 0 (resolved)
+ 2.195 memory usage (Mbyte)
+unreached in proctype Server1
+ (0 of 36 states)
+unreached in proctype Server2
+ (0 of 36 states)
+unreached in proctype Client
+ (0 of 67 states)
+pan: elapsed time 0 seconds
+\end{lstlisting}
+
+\clearpage
+\newpage
+
+
+\section{Security and safety of the system}
+Safety and security of the software plays a major role in our project.
+It is of vital importance that only as few as possible people have access to our test system since the resulting data could be exploited to plan an attack
+(e.g. assume the University alarm system uses the SIP gateway to connect to the outside world and to alarm the police, if one knows that the SIP gateway is not working properly, a burglar could plan to rob the University building just at that moment). Therefore the choice to go Open Source is justified due to the fact that one should know how every single detail of the system works.
+All the time, while we were working on the project, we were made aware of this issue by Dennis and Konrad.
+We decided to use asymmetric key cryptography, where each side has two keys (private and public). In the next sections we will explain in more details how we applied the methods.
+\subsection{Encryption of the communication channels}
+At first we thought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of Internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g.
+trying to open the port until the system runs out of memory and in our case the system which we used on the handler side was a BeagleBoard with ARM architecture running on a single chip TI OMAP processor, refer to the picture in figure).
+We had to eliminate even the slightest possible threat in return for spending more time for debugging the test software system. Despite we were aware of all these facts, we had to choose one of the plenty implemented encryption standards on Linux.
+Dennis and Konrad suggested using the SSH Tunneling method.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{sshTunnel.png}
+ \caption[]{SSH Tunnel, all the communication inside the tunnel is encrypted }
+\end{figure}
+
+Using the SSH Tunnel port forwarding method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running).
+The SSH Tunnel port forwarding method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password every time we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}.
+This can be performed by executing the following commands in the terminal shell.
+One has to create first the private and public keys on the local machine(i.e. server computer, where the test software runs):
+
+\begin{lstlisting}
+refik@ubuntu:$ [Note: You are on local-host here]
+
+refik@ubuntu:$ ssh-keygen
+Generating public/private rsa key pair.
+Enter file in which to save the key (/home/refik/.ssh/id_rsa):[Enter key]
+Enter passphrase (empty for no passphrase): [Press enter key]
+Enter same passphrase again: [Press enter key]
+Your identification has been saved in /home/refik/.ssh/id_rsa.
+Your public key has been saved in /home/refik/.ssh/id_rsa.pub.
+The key fingerprint is:
+33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 refik@ubuntu
+\end{lstlisting}
+
+Then one needs to copy the public key to the remote machine (BeagleBoard) using ssh-copy-id:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
+refik@remote-host's password:
+Now try logging into the machine, with "ssh 'remote-host'", and check in:
+
+.ssh/authorized_keys
+
+to make sure we haven't added extra keys that you weren't expecting.
+\end{lstlisting}
+
+After we have created the public and private keys, and coppied the public key on the machine to which we want to connect, we can test if we can make an SSH connection to the remote machine:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh remote-host
+[Note: SSH did not ask for password.]
+
+refik@remote-host:$ [Note: You are on remote-host here]
+\end{lstlisting}
+The test was successful. We tested it with our SSH Tunnel port forwarding class and it worked perfectly.
+\subsection{Security on the web site}
+Aside from having secured the data communication channels between various parts of our software
+(the handlers and the controller), it was crucial to ensure all the communication between
+test user's browser and our server. Therefore we had used the \emph{https} protocol and
+the \emph{.htaccess} file to password protect the web site so only the privileged users
+have access to our test system.
+\subsubsection{Configuring the http secure protocol https}
+Securing the communication channels without making certain the web site is safe would be worthless.
+We decided to use the \emph{https} protocol instead of the \emph{http} since a person in the middle
+could sniff our data (e.g. a person is connected with his/her smart-phone over an unprotected wireless network) \cite{https}.
+At the same time the web site should be accessible only by the authorized personel. Our first approach to this
+problem was to build an PHP page with \emph{MD5} hashed passwords, however we got a suggestion by Konrad and Dennis to
+use a safer encryption method implemented in the Apache web server software, \emph{.htaccess}. By using
+these two techniques we protected the web site of some vulnerabilities known to us. If the web site
+will be only accessed from our local university network, we can additionally add an IP filter mask as well.
+In the following paragraph we will explain our procedure how to generate the keys and to enable the https protocol.
+\par First we want to generate a server key by typing the following command:
+\begin{lstlisting}
+openssl genrsa -des3 -out server.key 4096
+\end{lstlisting}
+\par This will generate a 4096 bit long private server key, one is asked to enter two times a password for the \emph{server.key}.
+Using the generated private server key, we will create a certificate signing request, \emph{server.csr}. We were prompted with a series of questions
+like country, state, organization name and etc which we had to enter to resume.
+\begin{lstlisting}
+openssl req -new -key server.key -out server.csr
+\end{lstlisting}
+\par In the next step we had to sign the certificate signing request and enter the amount of days for how long it should be valid.
+In our case we entered the duration of one year, one can make it for longer periods as well (i.e. the amount of 365 has to be changed).
+\begin{lstlisting}
+openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
+\end{lstlisting}
+\par We were asked to enter the password again for \emph{server.key}. After we have completed this step we had to make
+a version of the \emph{server.key} which did not require a password, \emph{server.key.insecure} and we will rename the files appropriately.
+\begin{lstlisting}
+openssl rsa -in server.key -out server.key.insecure
+mv server.key server.key.secure
+mv server.key.insecure server.key
+\end{lstlisting}
+\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files: \emph{server.crt}, \emph{server.csr}, \emph{server.key} and \\ \emph{server.key.secure}. Now we need to enable the SSL engine on the Apache web server.
+We coppied \emph{server.key} and \emph{server.crt} into \emph{/etc/appache2/ssl}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2$ sudo mkdir ssl
+cp server.key /etc/apache2/ssl
+cp server.crt /etc/apache2/ssl
+\end{lstlisting}
+\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \\ \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlink-ed for loading)'' \cite{https}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo a2enmod ssl
+Enabling module ssl.
+See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
+Run '/etc/init.d/apache2 restart' to activate new configuration!
+\end{lstlisting}
+\par In the next procedure we had to establish a symlink from the 'available' default-ssl file to the 'enabled' file \cite{https}. Then we created a folder where our secured PHP files will be located (e.g. https://some-domain-name.com/test-software).
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl
+refik@ubuntu:/etc/apache2/ssl$ cd /var/
+refik@ubuntu:/var$ sudo mkdir www-ssl
+\end{lstlisting}
+\par We had backed up our old configuration files for the virtual hosts, for the case if we damage the Apache configuration files. Then we edited the \emph{default-ssl} file.
+\begin{lstlisting}
+refik@ubuntu:/var$ cd /etc/apache2/sites-available
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default default_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default-ssl default-ssl_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par Only the beginning of the file is listed here and we have modified the line starting with \emph{DocumentRoot}
+and \emph{<Directory /var/www/>} from \emph{DocumentRoot /var/www} to \emph{DocumentRoot /var/www-ssl}
+and from \emph{<Directory /var/www/>} to \emph{<Directory /var/www-ssl/>}
+(i.e. we had to redefine the location of our SSL directory).
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+<VirtualHost _default_:443>
+ ServerAdmin webmaster@localhost
+
+ DocumentRoot /var/www-ssl
+ <Directory />
+ Options FollowSymLinks
+ AllowOverride None
+ </Directory>
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+\par One should keep in mind that the port 443 should be free for Apache to use it. In the proceeding step we had to ensure that Apache listens on the given port for a \emph{https} connection.
+One could test that by going into the \emph{/etc/apache2/ports.conf}.
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+ # If you add NameVirtualHost *:443 here, you will also have to change
+ # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
+ # to <VirtualHost *:443>
+ # Server Name Indication for SSL named virtual hosts is currently not
+ # supported by MSIE on Windows XP.
+ Listen 443
+</IfModule>
+\end{lstlisting}
+\par In our case it was set up correctly, since the command: \emph{Listen 443} was present.
+In our last configuration step we had to edit \emph{default-ssl} file to define the correct locations of our keys and to ensure the SSL engine was turned on.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par The following part of the file had to be found and modified according to our locations:
+\begin{lstlisting}
+SSLEngine on
+
+ # A self-signed (snakeoil) certificate can be created by installing
+ # the ssl-cert package. See
+ # /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
+ # If both key and certificate are stored in the same file, only the
+ # SSLCertificateFile directive is needed.
+ SSLCertificateFile /etc/apache2/ssl/server.crt
+ SSLCertificateKeyFile /etc/apache2/ssl/server.key
+
+ # Server Certificate Chain:
+ # Point SSLCertificateChainFile at a file containing the
+\end{lstlisting}
+\par Finally we had configured our server and can proceed with the restart of the apache web server. We created a test web site \emph{/var/www-ssl/index.php} and navigated our browser to \emph{https://localhost}. The test was successful!
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo /etc/init.d/apache2 restart
+ * Restarting web server apache2 [Sat Oct 08 21:52:51 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
+ ... waiting [Sat Oct 08 21:52:52 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence [ OK ]
+refik@ubuntu:/etc/apache2/sites-available$
+\end{lstlisting}
+\subsubsection{Password protecting the web site using .htaccess}
+Aside from using a secure communication protocol on the web, \emph{https}, it is important
+to ensure that only permissioned users gain access to the web site. We had achieved it using
+the \emph{.htaccess} file. However, to enable the use of Apache \emph{.htaccess} files,
+we will have to reconfigure the Apache configuration files again. \emph{root} access will
+be required. First we have to edit the \emph{/etc/apache2/sites-available/default-ssl} file.
+Find the following lines and modify the \emph{AllowOverride None} to \emph{AllowOverride All}
+like in the given configuration segment:
+\begin{lstlisting}
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride All
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+This will tell Apache web server that it is okay to allow \emph{.htaccess} files
+to over-ride previous directives. We must reload the Apache web server before the
+changes can take effect. We can do it by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 reload
+\end{lstlisting}
+The next step is to go to the directory where our test software web page is located
+(e.g. \emph{/var/www-ssl/testsoftware}) and to create a file called \emph{.htaccess}.
+Please insert the following code segment inside the created \emph{.htaccess} file where
+\emph{/var/www-ssl/testsoftware/.htpasswd} is your full path address to \emph{.htpasswd}:
+\begin{lstlisting}
+AuthUserFile /var/www-ssl/testsoftware/.htpasswd
+AuthName "Authorization Required"
+AuthType Basic
+require valid-user
+\end{lstlisting}
+Then in the next step, create another file called \emph{.htpasswd}. After you have created it,
+we will add the usernames that should have access to the web site. We do that by typing the
+following command, where you can replace \emph{konrad} with any other combination of letters
+which will represent your username:
+\begin{lstlisting}
+refik@ubuntu:/var/www-ssl/testsoftware$ sudo htpasswd -c .htpasswd konrad
+\end{lstlisting}
+Afterwards, you will be required to type twice the same password for the username
+you want to create, in this case \emph{konrad}. ``The -c flag is used only when you
+are creating a new file. After the first time, you will omit the -c flag,
+when you are adding new users to an already-existing password file. Otherwise you
+will overwrite the file!'' \cite{htaccess}. You can add as many users as you wish,
+do not forget to remove the -c flag when you do it.
+In the last step, we have to modify the \emph{/etc/apache2/apache2.conf} file and
+to add at the end of it the following code segment where \emph{/vaw/www-ssl/testsoftware}
+is the full path to your web page directory where you put the \emph{.htpasswd} file:
+\begin{lstlisting}
+<Directory /vaw/www-ssl/testsoftware>
+AllowOverride All
+</Directory>
+\end{lstlisting}
+We are done with editing. All we have to do now is to restart the Apache web server. We
+can do that by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 restart
+\end{lstlisting}
+You can test it now by opening a new browser tab and navigating to \emph{https://localhost/\\testsoftware}
+(keep in mind to replace \emph{testsoftware} with your name of the folder where the web page
+is located). If you configured everything properly, you should get a dialog where you can
+enter your created username and password and try to login.
+
+\newpage
+\section{Web page}
+One of the requests of our team project was to build a test system that could be started from the web site.
+Since we used the Open Source platform to base our project on, it was certain we will use it for the web site as well.
+The dynamic parts of the web site were programmed using PHP and JavaScript. The GUI was done using CSS.
+The web site opens TCP/IP sessions between itself and the Python test software. Due reasons explained in the section above,
+a test user needs first to enter his username and password to access the web site. Then a test user can manually select what type of tests he wants to perform or he can select already defined test,
+like the simple, smart or full test. (Describe here these three type of tests).
+Data about the performing tests are inserted into the database only in the case if the mutex lock for the web site can be obtained\footnote{The mutex lock will be explained in the next subsection.}.
+This way we can avoid inserting data about the test in case there is already a test user on the website performing some tests on the system.
+\subsection{Communication between the web page and the test software}
+Our first idea was that the PHP file starts the test software.
+However, parts of our test software open new terminal windows and
+since PHP has restrictions for starting GUI applications our approach was condemned for a failure at the start.
+We had to deal with this problem and our solution to it was to write a little Python script that will run in background and start our
+test software when required. Once a person starts the test over the web site, it automatically connects to the Python script over an TCP/IP socket.
+Before being able to start the test software one needs first to obtain the mutex lock on the web site and to check if there is a mutex lock for the test software running.
+Using this approach we can ensure that only one user at the time can be on the web site and run only one instance of the test software.
+In the next step we send the Python script a message to start the test software. The test software obtains a mutex lock as well.
+When the test software is started the web page checks if a software lock is obtained.
+Once it is obtained we can proceed with creating a new socket connection between the web site and the test software.
+Our TCP/IP communication between the web site and the test software is not encrypted since both the web page and the test software run on the same server computer.
+The mutex locks are freed after the tests are performed. Our test software has a timeout timer in case that the web site hangs or somehow the socket connection breaks
+where it automatically shuts down.
+\subsection{Results on the web page}
+All the performed test results are displayed on the web site. The results are displayed in real time after each selected test case is performed.
+After all the test cases have been performed a topological picture is generated which represents the current state of the system, this can bee seen in the following figure.
+Afterwards, when the result picture is generated, the test user can easily see what is wrong in the system. Various icons represent different subsystems.
+Reading the test results is as simple as looking at the icons and identifying if they have: a green plus signs (i.e. working properly), a red minus sign (i.e. not working properly) and a yellow exclamation mark (i.e. it was not tested).
+
+\begin{itemize}
+\item Triangles represent BTS stations
+\item Cell phones represent the external networks (E-Plus, Vodaphone, T-Mobile and O2)
+\item Telephone represents the landline and a telephone with a mortarboard the University telephone network
+\item Servers represent the OpenBSC and LsfKs-Asterisk
+\item Two monitors represent the SIP system
+\end{itemize}
+
+\par The inference mechanism works as following: if a test case works, we can conclude that the subsystems connected in-between the two ends are working properly as well.
+We use the pChart library\footnote{It is under the GNU GPLv3 license and our project is nonprofit!} to generate the topological picture of our telecommunication system \cite{pChart}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{resultsImage.png}
+ \caption[]{Result image showing working, defected and not tested subsystems}
+\end{figure}
+\par On the right side of the result picture the test user can immediately identify the network operability in percentage\footnote{The test user has to take into account that this percentage is only valid if a full test is performed.}. Bellow the network operability statistics are the ping results statistics located.
+If one of the fields is red it means the subsystem is not online or cannot be seen by our server computer where the test software is located.
+\newpage
+\section{Employing the test software system}
+In this section the reader can find out how to install and how to use the test system.
+Our goal was to make a multi-platform test software, however we tested it only under Ubuntu
+11.04 32 bit Linux OS and the given instruction manual is only tested under that OS. The
+test software performed well, both on PC and MAC computers.
+One should keep in mind that some of the libraries we had used do not work
+under the 64 bit version of Linux OS.
+
+\subsection{Required software and libraries}
+In the next subsections, we will guide you how to install all the required software and
+libraries to flawlessly run our test software on your employed server.
+You will be required to have \emph{root} access privileges and to open a new
+terminal window where the commands will be typed in.
+
+\subsubsection{Python installation}
+Python was our programming language of choice\footnote{We had explained earlier why we
+have decided to use Python.}. The required version of Python is 2.7. One can easily
+install python by typing the following commands:
+\begin{lstlisting}
+sudo apt-get update
+sudo apt-get install python2.7
+\end{lstlisting}
+It will take a short amount of time to be installed. You will be required to enter
+the \emph{root} password.
+
+\subsubsection{Apache Web server installation}
+We had decided to use the Apache web server because of its wide support on the Internet
+and safety reasons. If there are any bugs or security flaws, the patches are
+easily installed with the Ubuntu update manager. The Apache web server can be easily
+installed by typing the following command:
+\begin{lstlisting}
+sudo apt-get install apache2
+\end{lstlisting}
+You might be required to follow other installation instructions printed on the
+terminal screen.
+After the installation has completed successfully, one can test if it works by going
+to the following web address: \emph{http://localhost}. For configuring the \emph{https}
+please go to the section 7.2.
+
+\subsubsection{SSH}
+Secure Shell (SSH) is a network protocol for secure data communication between two
+computers inside of a network. All computers are required to have SSH installed on it.
+You can easily install it by typing the following command:
+\begin{lstlisting}
+sudo apt-get install ssh
+\end{lstlisting}
+
+\subsubsection{MySQL database and MySQLdb library}
+The MySQLdb library is required to perform various operations on the MySQL database within
+Python. We used the MySQLdb library instead of the native MySQL C API \emph{\_mysql} library
+to make the code cleaner and more portable.
+We suggest you to install first the MySQL database on the server computer. If you
+have installed MySQL you can skip the next part. To star the installation process one can
+type the following commands:
+\begin{lstlisting}
+sudo apt-get install mysql-server
+\end{lstlisting}
+You will be required to enter the Linux \emph{root} password. At some point during
+the installation process, you will be required to enter the password for the MySQL
+database. After you have performed the above step, we can proceed with the
+MySQLdb library installation. By typing:
+\begin{lstlisting}
+sudo apt-get install python-mysqldb
+\end{lstlisting}
+If the \emph{python-mysqldb} name has changed, one can easily find the correct name of the
+file by issuing the following command:
+\begin{lstlisting}
+apt-cache search MySQLdb
+\end{lstlisting}
+By typing in the commands given above, you should have successfully installed the MySQLdb
+library.
+
+\subsubsection{Serial port library}
+The serial port library is required for the cell phones to communicate with the
+server computer and the BeagleBoards. The required library for Python can be installed
+by typing the following command:
+\begin{lstlisting}
+sudo apt-get install python-serial
+\end{lstlisting}
+The installation should not produce any errors or warnings.
+
+\subsubsection{PJSUA library}
+\emph{PJSUA} is an open source command line SIP user agent (soft-phone). We use the library
+for the SIP handler. First, one needs to download the library
+from \url{http://www.pjsip.org/download.htm} \cite{pjsip}. Then extract it to some folder.
+Then we will build the library using make. This can be accomplished by typing the following
+commands:
+\begin{lstlisting}
+cd your-pjsip-root-dir
+./configure && make dep && make
+cd pjsip-apps/src/python
+sudo make
+\end{lstlisting}
+
+If you get an error similar to this one:
+\begin{lstlisting}
+_pjsua.h:25:20: fatal error: Python.h: No such file or directory
+compilation terminated.
+error: command 'gcc' failed with exit status 1
+\end{lstlisting}
+Then you will be required to install python-dev as well, that matches your version of
+python (e.g. python2.7-dev). You can do it by typing:
+\begin{lstlisting}
+sudo apt-get install python2.7-dev
+\end{lstlisting}
+After you have successfully installed python2.7-dev, repeat the the commands given above.
+Now you should have a properly installed PJSUA library. One can easily test if the installation
+was successful by compiling a simple python code, \emph{python test.py}, with the following
+source code:
+\begin{lstlisting}
+import pjsua
+\end{lstlisting}
+If you do not get any errors, you have successfully installed the library. More detail can
+be found on our project wiki page \cite{wiki}.
+
+\subsubsection{pChart library}
+The pChart library is within our installation files and does not require to be installed
+individually. The library is only required if one uses the web interface and
+requires the generated resulting image. The library is open source and does not require
+any licensing. However, if one needs to learn how the library works,
+information can be found on the pChart web page \cite{pChart}.
+
+\subsubsection{proctitle library}
+We had used this library to rename the currently executed process name.
+``The library allows a process to change its title (as displayed by system
+tools such as ps and top). Changing the title is mostly useful in
+multi-process systems, for example when a master process is forked:
+changing the children's title allows to identify the task each process is
+busy with.'' \cite{proctitle}. The library can be easily installed by typing:
+\begin{lstlisting}
+sudo easy_install setproctitle
+\end{lstlisting}
+
+
+\subsection{Configuring hardware}
+Before proceeding with the next steps, please connect all the cell phones
+to the USB hub using the suitable cables. Then make sure the cables are
+recognized by the operating system. This can be performed by typing the following command:
+\begin{lstlisting}
+dmesg | grep ttyU
+\end{lstlisting}
+The given command should produce a result similar to:
+\begin{lstlisting}
+[ 5178.753600] usb 1-1.2: pl2303 converter now attached to ttyUSB0
+\end{lstlisting}
+
+We have two different ways to configure the cell phones, manually and automatic.
+Both options can be accessed either using the website or the terminal window.
+Using the manual configuration from the terminal, the user configures everything him/herself.
+The user will be presented with a few questions like the port address, cell phone number and IMEI.
+After the user enters all the required parameters, the software will check
+if the given port address is accessible and it will look for a response from the devices.
+Then you will be asked to enter the IMEI and the cell phone number of the device.
+If the entered IMEI matches the device IMEI then the software will update the database
+with the entered information. You can run, both the manual and automatic configuration
+by typing:
+\begin{lstlisting}
+python gsmselftest.py --devconf
+\end{lstlisting}
+In the automatic configuration, the software will automatically try to detect every
+cell phone that is connected to the USB hub. This configuration option can detect
+up to nine cell phones, that are connected to the server computer. We had set a limit to
+nine cell phones because we required only five (four for the external GSM networks
+and one for our internal GSM BST). The only limitation of the automatic cell phone configuration
+is that it only supports cell phones where we could read out the number using the \emph{AT Modem}
+commands since some cell phone manufacturers do not use the standardized \emph{AT Modem} commands.
+\newpage
+\subsubsection{Configuring the cell phones}
+It is important to write in the Siemens S55 cell phones their numbers if you want to use
+automatic device configuration. You can do that by following the next few steps:
+
+\par Open the phone book on the S55 and choose \emph{<Special books>} and press the select button.
+\par In the second step, press select on \emph{<OwnNumber>}.
+\par In the third and last step, enter your cell phone number and save it!
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{First.png}
+ \caption[]{First step in configuring the phone}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{Second.png}
+ \caption[]{Second step in configuring the phone}
+\end{figure}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{Third.png}
+ \caption[]{Second step in configuring the phone}
+\end{figure}
+\clearpage
+\subsection{Location of the files}
+For proper operation of the software, it is important that each file is at its correct path
+located. In the given section you can find out the correct path locations.
+If you are not an expert, please do not change these locations.
+The following files have to be located in the \emph{/var/www-ssl/testsoftware/} folder:
+\begin{lstlisting}
+drwxr-xr-x 7 root root 4096 2011-10-28 12:45 .
+drwxr-xr-x 3 root root 4096 2011-10-20 17:06 ..
+-rw-r--r-- 1 root root 109 2011-10-26 16:55 .htaccess
+-rw-r--r-- 1 root root 20 2011-10-26 17:11 .htpasswd
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 class
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 css
+-rw-r--r-- 1 root root 7547 2011-10-20 17:06 delayedLoading.js
+-rw-r--r-- 1 root root 3431 2011-10-25 14:38 devconf.html
+-rw-r--r-- 1 root root 2024 2011-10-25 23:47 devconfigAuto.php
+-rw-r--r-- 1 root root 1811 2011-10-26 13:44 devconfigManual.php
+-rw-r--r-- 1 root root 2195 2011-10-25 23:45 devconfig.php
+-rw-r--r-- 1 root root 3526 2011-10-27 14:51 devconf.php
+-rwxr-xr-x 1 root root 725 2011-10-20 17:06 execute.php
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 fonts
+-rw-r--r-- 1 root root 2259 2011-10-28 12:43 index.html
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 icons
+drwxr-xr-x 2 root root 4096 2011-10-25 14:10 Images
+-rw-r--r-- 1 root root 2038 2011-10-20 17:06 insertData.php
+-rw-r--r-- 1 root root 636 2011-10-26 13:43 insertdevice.php
+-rw-r--r-- 1 root root 10819 2011-10-20 17:06 loader.gif
+-rw-r--r-- 1 root root 2268 2011-10-26 16:07 main.php
+-rw-r--r-- 1 root root 5416 2011-10-20 17:06 moocheck.js
+-rw-r--r-- 1 root root 75836 2011-10-20 17:06 mootools.js
+-rw-r--r-- 1 root root 677 2011-10-20 17:06 mutexFunctions.php
+-rw-r--r-- 1 root root 9063 2011-10-25 17:20 mutexSmartTest.php
+-rwxr-xr-x 1 root root 9143 2011-10-28 12:45 mutexTry.php
+-rw-r--r-- 1 root root 13304 2011-10-20 17:06 networkResult.php
+-rw-r--r-- 1 root root 8294 2011-10-21 19:02 post.php
+-rw-r--r-- 1 root root 19218 2011-10-21 17:36 startTest2.php
+-rw-r--r-- 1 root root 18852 2011-10-20 17:06 startTest.php
+-rw-r--r-- 1 root root 18787 2011-10-25 16:43 TaskTest.html
+-rw-r--r-- 1 root root 3685 2011-10-20 17:06 testCase.php
+-rw-r--r-- 1 root root 2545 2011-10-20 17:06 wait.gif
+\end{lstlisting}
+The \emph{startSoftware.py} file is required to be in the \emph{/etc/init.d/} folder,
+since it is required to be start with the computer boot however if that does not work,
+one should start it manually. This part of the software is
+responsible for starting the testing software from the web page\footnote{The web page
+communicates with this script via a socket connection and sends a signal to start
+the main test software.}.
+The main test software python files should be located in \emph{/home/gsmselftest/SoftwareTesting/}.
+\begin{lstlisting}
+drwxr-xr-x 2 gsmselftest gsmselftest 4096 2011-11-03 14:29 .
+drwxr-xr-x 30 gsmselftest gsmselftest 4096 2011-11-02 18:28 ..
+-rwxr--r-- 1 gsmselftest gsmselftest 2909 2011-10-20 17:54 ClientClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3628 2011-10-20 17:54 ClientClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 9814 2011-11-02 16:19 ControllerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 9247 2011-11-02 16:20 ControllerClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 15129 2011-11-02 15:32 DbClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 11712 2011-11-02 15:32 DbClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8512 2011-11-02 13:30 GSMClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7337 2011-11-02 13:42 GSMClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8063 2011-11-02 13:24 GSMHandler.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 20346 2011-11-02 18:32 gsmselftest.py
+-rwxr--r-- 1 gsmselftest gsmselftest 698 2011-11-02 18:36 help.txt
+-rwxr-xr-x 1 gsmselftest gsmselftest 8661 2011-11-02 16:35 initTestClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7497 2011-11-02 16:37 initTestClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 645 2011-10-20 17:54 LogFileClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1509 2011-10-20 17:54 LogFileClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 817 2011-10-20 17:54 PingClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1263 2011-10-20 17:54 PingClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 3982 2011-10-20 17:54 ServerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4596 2011-10-20 17:57 ServerClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 4129 2011-10-20 23:17 ServerClassSoftware.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4802 2011-10-20 23:17 ServerClassSoftware.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 5252 2011-10-22 03:58 SIPHandler.py
+-rwxr--r-- 1 gsmselftest gsmselftest 1267 2011-11-02 14:07 SSHTunnelBoxClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1852 2011-11-02 14:19 SSHTunnelBoxClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 323 2011-11-02 18:44 startSoftware.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 6378 2011-11-02 16:13 trueTableClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4583 2011-11-02 16:16 trueTableClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 2248 2011-10-28 14:04 usbDetectClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3590 2011-10-28 14:05 usbDetectClass.pyc
+\end{lstlisting}
+
+\subsection{Setting up the parameters}
+After configuring the hardware, \emph{https} and \emph{.htaccess} on the web server,
+it is important to modify the files for proper operations. In the given section you
+can find out how to configure the rest of the files (e.g. database passwords, etc.).
+The following files you have to modify to have a working database access:
+\emph{initTestClass.py, GsmSelfTest.py, UsbDetectClass.py} and \emph{truthtableClass.py}.
+\subsection{Test descriptions}
+In the following section we will describe the tests that can be performed and what kind
+of problems they can identify. There are five types of tests:
+\begin{itemize}
+\item Smart test
+\item SIP test
+\item GSM test
+\item Everything test
+\item Manual test
+\end{itemize}
+Each test will be described in the next subsections.
+\subsubsection{Smart test}
+\par The \emph{smart} test is not called smart without a reason. It tries automatically to identify
+problems inside of the telecommunication network. The user is not required to define what kind
+of tests have to be performed. In the first part the test software communicates with the
+database to see what systems are available. In the next step it performs a call from the
+University telephone system to a random local cell phone\footnote{Local cell phone or
+local GSM network means our University GSM Network or RZ GSM.}
+inside of our University GSM network.
+While executing this task, automatically the Asterisk server, OpenBSC and a random nanoBTS
+(or the one cell phone in RZ) are tested. The next task to be performed in the smart test,
+a randomly selected cell phone inside of our local GSM network will try to call: a random
+cell phone within the external (O2, Vodaphone,E-Plus or T-Mobile) or local GSM network.
+This might test the external network and will test it with high probability, however the
+probability exists to make a local to local GSM test call. In the third task, we perform
+a test where we call from the landline a random cell phone inside of our local GSM network.
+In the fourth or last task, we call from SIP to the service we did not test yet (e.g.
+if we did not test the external GSM network using the second test task, then in this last
+task we will exploit it). After the smart test had been completed you will be presented
+with the results.
+\subsubsection{SIP test}
+The \emph{SIP} test option will perform test in such a way that all the SIP subsystems are
+tested (SIP and University telephone network). It will try to identify if there are any
+problems on the Asterisk server and our University telephone network, including incoming and
+outgoing calls from the SIP side.
+\subsubsection{GSM test}
+In the \emph{GSM} test both GSM networks get tested, the local and the external GSM network.
+We test the nanoBTS controller boxes (i.e. BeagleBoards) as well. Using this test, both incoming
+and outgoing calls are performed, we can detect possible errors on the OpenBSC and the nanoBTS.
+\subsubsection{All test}
+The \emph{All} test selects all the given tests and executes them step-by-step. It is the test
+that takes the greatest amount of time. While the test are performed, results are
+immediately printed in the terminal window or on the web site.
+\subsubsection{Manual test}
+The \emph{Manual} test as the name itself says, is the test where you can manually select
+what kind of tests you want to be performed.
+\newpage
+\subsection{Result descriptions}
+In the following table one can see the messages returned by the test software!
+These messages should guide the test user operator to debug the system.
+
+\begin{table}[h]\footnotesize
+ \begin{center}
+ %\caption[]{Table of error descriptions}
+ \begin{tabular}{| l | c | l | }
+ \hline
+ \textbf{Number} & \textbf{Code} & \textbf{Code number description} \\ \hline
+ 1 & 200 & Call was OK \\ \hline
+ 2 & 604 & General Handler Error: Destination handler did not respond. Timeout \\ \hline
+ 3 & 998 & General Handler Error: Could not connect to the destination handler! \\ \hline
+ 4 & 605 & General Handler Error: Caller handler did not respond. Timeout \\ \hline
+ 5 & 999 & General Handler Error: Could not connect to the caller handler! \\ \hline
+ 6 & 486 & Call Failed \\ \hline
+ 7 & 333 & Could not establish a connection to the database! \\ \hline
+ 8 & 100 & Missing account detail \\ \hline
+ 9 & 402 & Payment Required (E-Plus Card) \\ \hline
+ 10 & 801 & Connection to caller established, but the device does not respond \\ \hline
+ 11 & 802 & Connection to destination established, but the device does not respond \\ \hline
+ 12 & 501 & Destination server Internal Error \\ \hline
+ 13 & 502 & Caller server Internal Error \\ \hline
+ %\hline
+
+ \end{tabular}
+ \end{center}
+\end{table}
+
+The errors can be described the following way:
+
+\begin{itemize}
+\item \emph{200}, Connection between the caller and callee was properly established
+\item \emph{604}, Callee handler has a problem during executing the test, a connection error between caller and callee
+\item \emph{998}, Controller cannot establish a connection and send messages to the callee handler but the callee handler is alive
+\item \emph{605}, Caller handler has a problem during executing the test, a connection error between caller and callee
+\item \emph{999}, Controller cannot establish a connection and send messages to the caller handler but the caller handler is alive
+\item \emph{486}, Call test failled, the connection between the caller and callee could not be established
+\item \emph{500}, Caller handler cannot be reached from the server
+\item \emph{501}, Callee handler cannot be reached from the server
+\item \emph{333}, Cannot login to the MySQL database
+\item \emph{100}, Software cannot sign in to the SIP account(SIP at Asterisk, Landline at sipgate.de, SIP at University telephone network), due to missing or incorrect information in the device address table
+\item \emph{402}, Payment required for the E-Plus SIM card
+\item \emph{801}, Caller device on the handler times out or is not properly connected
+\item \emph{802}, Callee device on the handler times out or is not properly connected
+\end{itemize}
+
+\clearpage
+\newpage
+\subsection{Using the software}
+In this section, you will be taught step by step how to use our test software. There are two options to run our test software, from the web site or the terminal.
+The first is easier, but the second is easy as well however requires terminal skills.
+
+\subsubsection{Web site guide}
+Once you enter the address in the address bar of your browser (e.g. \emph{https://localhost/\\testsoftware}).
+You will be required to enter your username and password for the web page\footnote{The username and password creation process is explained in section 7.2.2.}.
+If you entered the correct username and password you should see the same image as in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website1.png}
+ \caption[]{Web page of test software}
+\end{figure}
+Here you can choose what kind of test you want to perform or maybe if you want to configure the devices (manually or automatically).
+If you press the ``Smart test'' button, you have to wait a few moments and the results should appear in a short amount of time.
+However, if you pressed the ``Choose the test'' button, you will be presented with a new page, given in figure 28.
+You will have to select the tests you want to perform manually or to press on the left side one of the given buttons for different
+tests. You can choose between ``SIP Test'', ``GSM Test'', ``Check all'' and ``Uncheck all''. ``Check all'' will select all the possible
+tests, whereas ``Uncheck all'' will deselect all of them. After you finished the procedure of selecting the tests, you should press the
+``Submit'' on the left side. Wait a few moments and the results will start to appear in real time. After the table on the left is filled
+(i.e. after all the tests have been completed) a result image will be generated on the right side, can be seen in figure 20. However, if
+your pressed the ``Device configuration'' button, then you will end up on a page as given in figure 30.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website2.png}
+ \caption[]{Manually selecting the tests}
+\end{figure}
+
+If you press the ``Automatic configuration'' button, the test software will try automatically to match your cell phones with
+their port addresses and numbers. However, if the automatic matching does not work, you will have to manually configure it.
+You can do it by entering all the required information on the web site, as in figure 31. Once you correctly filled in the required
+information, you should press the ``Submit'' button.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{webpageReport.png}
+ \caption[]{Result web page}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website3.png}
+ \caption[]{Device configuration web page}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website4.png}
+ \caption[]{Manual device configuration page}
+\end{figure}
+%\clearpage
+\newpage
+\subsubsection{Terminal guide}
+In the following text, we will guide you and show you step-by-step how to use the test software from the terminal. All you have to
+do is just type the command for starting the test software in the folder where it is located, \emph{./gsmselftest.py ---option} (keep
+in mind there are two dashes before \emph{option}).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{terminalCommand.png}
+ \caption[]{Test software terminal options}
+\end{figure}
+You can perform the tests manually by typing what you want to test or by choosing one of the predefined tests. For example, you
+want to test manually does the SIP work with the University telephone network, you would type the following: \emph{./gsmselftest.py --db sip unisip}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{resultterminal.png}
+ \caption[]{Example results from the terminal screen}
+\end{figure}
+After the tests have been performed the results will be displayed. Green result text means the test was performed successfully and red result
+text means that something is not working properly.
+
+If you need to configure the cell phones manually or automatically, you can do it by typing: \emph{./gsmselftest.py --devconf} (keep
+in mind there are two dashes before \emph{devconf}). Then you can press ``a'' on the keyboard for automatic configuration or ``m'' for
+manual configuration. One should keep in mind that the terminal test software can be started even through \emph{ssh}, however with an
+additional command \emph{-X}\footnote{For example: ssh -X username@address}.
+\begin{figure}[htb]
+ \centering
+ \includegraphics[width=100mm]{devconf.png}
+ \caption[]{Test software device configuration from terminal screen}
+\end{figure}
+
+\clearpage
+\newpage
+\section{Conclusion}
+As a result of our successfully finished team project, we had felt how it is to work
+in a team. We had learnt how to confront various software and hardware issues. The problems
+were broken into smaller fragments and the solutions were derived in a step-by-step approach.
+\par While designing the software, we kept in mind that every single step should be well thought-out,
+documented, tested and validated. At the end we joined all the ``black-boxes'' together
+into one big piece of software. We fulfilled our stated requirements and goals.
+\par Despite the fact that our test software will be used by well educated engineers, we may
+conclude that all the way along we thought about the usage-simplicity, safety and security
+of our product. Our team members were enthusiastic about the idea that our team project will
+contribute to a better performance and quality of the overall telecommunication network,
+for all of the University staff and our colleagues, the students.
+\newpage
+
+
+
+%bibliography start
+\begin{thebibliography}{9}
+
+\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 10.06.2011, available at
+\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
+
+\bibitem{python} \emph{Python Programming Language - Official Website}, accessed on 10.06.2011, available at
+\url{http://www.python.org/}.
+
+\bibitem{mysqlManual} \emph{MySQLdb User's Guide}, accessed on 05.06.2011, available at \\
+\url{http://mysql-python.sourceforge.net/MySQLdb.html}.
+
+\bibitem{wiki} \emph{[2011] GSM Selftest - Wiki - Lehrstuhl f\"{u}r Kommunikationssysteme}, accessed on 20.09.2011, available at \\
+\url{http://lab.ks.uni-freiburg.de/projects/gsm-selftest/wiki}.
+
+\bibitem{socket} \emph{17.2. socket - Low-level networking interface}, accessed on 20.06.2011, available at
+\url{http://docs.python.org/library/socket.html}.
+
+\bibitem{spin} M. Ben-Ari \emph{Principles of the Spin Model Checker},
+Springer Verlag, Weizmann Institute of Science, Israel, ISBN: 978-1-84628-769-5, 2008.
+
+\bibitem{sshTunnel} R. Natarajan, \emph{3 Steps to perform SSH login without password using ssh-keygen \& ssh-copy-id}, accessed on 18.08.2011, available at
+\url{http://goo.gl/fX68N}.
+
+\bibitem{https} P. Bramscher, \emph{Creating Certificate Authorities and self-signed SSL certificates}, accessed on 05.09.2011, available at
+\url{http://www.tc.umn.edu/~brams006/selfsign.html}.
+
+\bibitem{htaccess} \emph{EnablingUseOfApacheHtaccessFiles}, accessed on 18.08.2011, available at
+\url{https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles}.
+
+\bibitem{pChart} \emph{pChart}, accessed on 15.08.2011, available at
+\url{http://www.pchart.net/}.
+
+\bibitem{beagleDataSheet} \emph{BeagleBoard System Reference Manual}, accessed on 20.06.2011, available at
+\url{http://beagleboard.org/static/BBSRM_latest.pdf}.
+
+\bibitem{proctitle} \emph{setproctitle 1.1.2}, accessed on 20.10.2011, available at
+\url{http://pypi.python.org/pypi/setproctitle}.
+
+\bibitem{pjsip} \emph{Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication}, accessed on 20.10.2011, available at
+\url{http://www.pjsip.org/}.
+
+%bibliography end
+\end{thebibliography}
+
+%end of the document
+\end{document} \ No newline at end of file
diff --git a/documenting/Report/test.tex.backup b/documenting/Report/test.tex.backup
new file mode 100644
index 0000000..ee7caec
--- /dev/null
+++ b/documenting/Report/test.tex.backup
@@ -0,0 +1,1360 @@
+\documentclass[a4paper, titlepage, oneside, headsepline, footsepline]{scrartcl}
+%PACKAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{lscape} %for the landscape pages it is used
+\usepackage[english]{babel} %what language are we using
+\usepackage[latin2]{inputenc} %what alphabet
+
+\usepackage[tt]{titlepic} %used for adding the title image
+\usepackage{graphicx} %used for adding images
+\usepackage{url} %used for the url in bibliography
+\usepackage{lastpage} %give me the total number of pages, used in footer: \pageref{LastPage}
+
+\usepackage[T1]{fontenc} %used for fonts
+\usepackage{scrpage2} %used for making headers, footers and correct margins
+%\usepackage{hyperref} %used for the linking of table of content
+
+%information for the PDF
+\usepackage[pdftex, %used for adding pdf information
+ pdfauthor={Refik Hadzialic, Triatmoko},
+ pdftitle={Software for self-testing of the Telecommunication network of University of Freiburg},
+ pdfsubject={Telecommunication network testing software},
+ pdfkeywords={telecommunication;network;networking;linux;ubuntu;university;Freiburg;python;tcp/ip;security;gsm;sip;voip},
+ pdfproducer={Latex with hyperref, or other system},
+ pdfcreator={pdflatex, or other tool}]{hyperref} %used for the linking of table of content
+
+
+
+
+
+\hypersetup{ %setting up the look of the links
+ colorlinks,
+ citecolor=black,
+ filecolor=black,
+ linkcolor=black,
+ urlcolor=black
+}
+
+\usepackage{color} %used for highlighting source code
+\usepackage{listings} %used to make a box with source code
+\usepackage{fancyvrb}
+\DefineVerbatimEnvironment{code}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{example}{Verbatim}{fontsize=\small}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE LOOK OF THE PAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{scrheadings}
+
+\renewenvironment{abstract}
+ {\begin{center}\large\textbf{}\noindent\end{center}}{\vspace{2\baselineskip}}
+
+% Disable single lines at the start of a paragraph (Schusterjungen)
+\clubpenalty = 10000
+% Disable single lines at the end of a paragraph (Hurenkinder)
+\widowpenalty = 10000 \displaywidowpenalty = 10000
+
+\setlength{\parskip}{0.01\baselineskip}
+\textheight = 620pt
+
+\ohead{Software for self-testing of the Telecommunication network of University of Freiburg} %make the header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE THE STUFF FOR CODE
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lstset{ %
+%language=Python, % choose the language of the code
+columns=fullflexible,
+keywordstyle=\color[rgb]{0.608,0.561,0.008},
+commentstyle=\color[rgb]{0.25,0.5,0.35},
+stringstyle=\color[rgb]{0.25,0.35,0.85},
+basicstyle=\footnotesize,%\scriptsize % the size of the fonts that are used for the code
+%numbers=left, % where to put the line-numbers
+numberstyle=\footnotesize, % the size of the fonts that are used for the line-numbers
+stepnumber=1, % the step between two line-numbers. If it is 1 each line will be numbered
+numbersep=8pt, % how far the line-numbers are from the code
+backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}
+showspaces=false, % show spaces adding particular underscores
+showstringspaces=false, % underline spaces within strings
+showtabs=false, % show tabs within strings adding particular underscores
+frame=single, % adds a frame around the code
+tabsize=2, % sets default tabsize to 2 spaces
+captionpos=b, % sets the caption-position to bottom
+breaklines=true, % sets automatic line breaking
+breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+escapeinside={\%}{)} % if you want to add a comment within your code
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\newcommand{\titleOfProject}{Software For Self-Testing Of The Telecommunication Network Of University Of Freiburg}
+
+
+
+%begin of the document
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+
+
+
+%make the title page
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\titlepic{\includegraphics[width=90mm]{uniLogo2.png}}
+\title{Team Project \\ ``\titleOfProject''} % type title between braces
+\date{\today} % type date between braces
+\author{Refik Had\v{z}iali\'{c}\\ Triatmoko } % type author(s) between braces
+\department{\vspace{1\baselineskip} \large Albert-Ludwigs-Universit\"{a}t Freiburg \\
+Lehrstuhl f\"{u}r Komunikationsysteme\\
+Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Meier \\ Dennis Wehrle \\ \vspace{1\baselineskip} Sommersemester 2011}
+
+\maketitle
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%add the table of contents
+\tableofcontents
+
+%new page to start with
+\clearpage
+
+
+
+
+% first chapter
+\section{Introduction and Motivation} % chapter 1
+In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems from an external perspective and infer the results out of our findings.
+Before we had started working on our project, we had to analyze the overall network to come up with the test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
+Gradually we implemented a bit-by-bit of the final software. In the following chapters we will describe in more detail our approach to the problem and how each subsystem works.
+This particular report and our wiki page should be a sufficient guide and manual for understanding, running and continuing the development of our test software.
+Certainly, we had a lot of fun while working on the project due the fact that we lost one team member.
+We would like to thank the whole department for the free coffee and their support, especially
+Konrad Meier, Dennis Wehrle, Richard M. Zahoransky and Larissa Linz, without their support this project would not
+end up this way.
+\clearpage
+\section{Requirements} % chapter 2
+At the start of the project the requirements were not completely known but as the time had passed we redefined our requirements and goals.
+The first and the most important part at the start was to identify the key goals of our team project. The basic goal of our team project was to build a
+test software system which could tell an operator user what part of the system is not properly working in our University telecommunication network.
+Konrad and Dennis suggested us to analyze figure 1 and depending on it to build our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{BigPicture_new1.png}
+ \caption[]{Overview of the Freiburg University telecommunication network \cite{network}}
+\end{figure}
+Our first attempt was to see what could we test without having access to the system. We installed numerous communication programs to see what others have done.
+After gaining access to the communication software, we had decided to build most of the test software ourselves. Libraries, which were used,
+were only the ones we could not develop ourselves because of the time-span of our team project.
+\subsection{Logical and algorithmic requirements}
+Despite the software and hardware requirements, the logic in our team project may be considered as the most important part.
+Controlling the software and hardware in a specific manner was one of the requirements in our team project.
+Moreover, we were required to draw a use case diagram and a simple test case diagram so that we could better understand all the problems we had to deal with
+but also to easier follow the development of our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{activity_diagram.png}
+ \caption[]{Simple algorithmic overview of a test case}
+\end{figure}
+\subsection{Software requirements}
+Afterwards, as we had defined our logical approach to the problems, we had to choose the programming language to realize our ideas. Since we had the freedom of choice, between the three suggested programming languages
+Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
+therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
+Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems.
+\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
+The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results.
+\par In addition it was required to log all the past tests. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
+(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system.
+We decided to use MySQL since it is open source and well supported.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{test_Use_case.png}
+ \caption[]{Test case diagram}
+\end{figure}
+\subsection{Hardware requirements}
+Likewise the software requirements, we had hardware requirements as well. We were required to identify the hardware we will need to perform the tests.
+It was important to find old and cheap cell phones that could support \emph{AT Modem} commands because our budget was limited.
+\par A problem we had to deal with at the start was that the base stations are located at different geographical points which were not near to each other.
+No one should go everyday to the rooms where our cell phones are located only to change or charge the batteries.
+In the cable subsection we describe our approach to the charging battery problem. As we defined our requirements we continued with the process of developing the test software.
+During the development time we refined our requirements. In the next chapters we will explain our database, software and hardware design ideas.
+\newpage
+\section{Database design}
+As we mentioned in the software requirements section, we decided to use MySQL as our database system for storing the test information and results.
+It was not difficult to decide what database to use, since MySQL is one of the most supported database and one can find a library to use it with major programming languages.
+The key point in the design of our database was the simplicity and speed of accessing the data. We had decided to use seven tables. In the following paragraphs we will explain each table separately and its usage.
+The database design can be seen in figure 4.
+
+\par The \emph{PingResultTable} table has six attributes (\emph{taskNo, sipServer, sipGate, unisip, gsmBox1, gsmBox2}), all of integer type.
+The \emph{taskNo} attribute identifies the test number but not a single test (e.g. an operator user has selected three different tests to be executed, all of the three tests will have the same \emph{taskNo} to identify them together as belonging to one test group and \emph{taskId} identifies each single test and will be explained later).
+\emph{sipServer} represents the Asterisk server ping result. \emph{sipGate} is used to represent the SIP Gate server for the landline calls (\url{http://www.sipgate.de}). \emph{uniSip} represents the ping results for our local University telephone network SIP server.
+\emph{gsmBox1} and \emph{gsmBox2} are the two single-chip Linux computers (BeagleBoard), that control two cell phones each one (i.e. they are also known under the name of \emph{nanoBTSx controller}).
+\emph{taskNo} is the primary and unique key in the table \emph{PingResultTable}. Rest of the attributes (i.e. \emph{sipServer, sipGate, uniSip, gsmBox1, gsmBox2}) are used to insert the ping results, if the assigned servers are reachable or not.
+Before any test attempt is made, our test software first tries to ping the servers. These results are then stored in the \emph{PingResultTable}.
+
+\par The \emph{ErrorCodeTable} table defines all the possible test results in the system, in other words it represents a list with error codes with their appropriate descriptions and meanings. It consists of two attributes (\emph{errorcode} and \emph{description}), the first is of integer type and the second of varchar type (the description message is allowed to be only 100 characters long).
+The \emph{ErrorCodeTable} table is used by the main test software (i.e. controller) to report the operator user what kind of error had appeared in the system.
+
+\par The \emph{DeviceAddressTable} is the table containing the location and identification data for each server and device. The table consists of seven attributes, \emph{deviceName, portName, number, lastChange, username, password, server}.
+\emph{deviceName} is the attribute with the name of the device or server (e.g. GSMRZ1 or landline), it is of varchar type. \emph{portName} is the attribute field with the location address for a cell phone (e.g. \emph{/dev/ttyUSB1}) or 'localhost' instead of NULL value for a server, it is of the varchar type.
+\emph{number} represents the number of the used service (i.e. number of the cell phone, SIP, etc.) and is of varchar type.
+\emph{lastChange} is a time value and represents the date and time the given entry was modified (we had plans in future versions of our test software that if an device gets a new IP address assigned it automatically changes it in the database).
+\emph{username} is the field with the username stored in for a server/service, like SIP and landline. \emph{password} attribute stores the password information for the given service. The \emph{server} attribute stores information about the location of the server, IP or DNS address of the server. All three fields, \emph{username}, \emph{password} and \emph{server} are of varchar type.
+The information stored in the given table is used by the test software to obtain usernames, passwords and addresses of the used services for the tests.
+
+\par The \emph{ResultTable} table is used by the test system to store final results for the performed tests. Our given table consists of two fields, \emph{taskID} and \emph{result} and both are of integer type. For each test entry with unique \emph{taskID} an error code is assigned in the \emph{result} field,
+depending on the test results. Error codes found in the \emph{ErrorCodeTable} table can be only assigned to this field.
+
+\par The \emph{TempTaskTable} table represents the table with the tasks the system has to execute next time the test software is started. The given table gets new data every time an operator user submits one or more test cases from the website to be executed. \emph{TempTaskTable} includes four attributes, \emph{taskID, taskNo, from, to}. Former two are of integer type and later two of varchar type.
+\emph{taskID} and \emph{taskNo} identify the test task to be executed, \emph{taskID} is the unique primary key. \emph{from} and \emph{to} fields have to match the names given in \emph{DeviceAddressTable.deviceName}, these two attributes specify the caller and callee devices/services. Consequently, after the tasks get executed, the test tasks are removed and the given table is empty again until next tests are added to it.
+However, all the test tasks even after deleting them from \emph{TempTaskTable} are kept in the \emph{TaskTable}. The reason why the authors of this project divided it into two tables was because of the database row selection speed. We had made the assumption that with time the database size will grow and therefore the database speed will not be the same as during the development period.
+
+\par The \emph{TaskTable} table, as mentioned before contains all the tests ever performed from the web site. It is made out of five attributes, \emph{taskID, taskNo, from, to, timestamp}. The first four fields are the same as in \emph{TempTaskTable}, however the last one, \emph{timestamp}, is used to record the exact time when the test was performed.
+\par The \emph{GSMListPrefix} table contains the data about the GSM networks and their prefixes. It consists of two
+attributes, both of varchar type, \emph{providerName} and \emph{prefix}.
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{DBRelationship.png}
+ \caption[]{Database relationship diagram}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+
+
+\section{Software design} % section 2.1
+Software design was the next step after we analyzed the problem and developed a plan how to proceed further. Good analysis and planning with poor algorithmic implementation is valueless.
+During the work on the project, we had spent most of our time for software design.
+We kept in mind that our software should satisfy major paradigms of software engineering,
+like compatibility, extensibility, modularity, reliability, security, fault-tolerance and usability.
+The software engineering design concepts were achieved following way:
+\begin{itemize}
+\item Compatibility - we used Python and MySQL which are multi-platform and work on major OS
+\item Extensibility - new parts of code can be easily added by just modifying the classes
+\item Mudalarity - the components are independent black boxes, they are tested and validated independently
+\item Reliability - we use mutex locks to perform tests and database transaction operations to insert data into the database
+\item Security - all communication channels, as well as the access to the web site, are encrypted with asymmetric key cryptography
+\item Fault-tolerance - the classes were designed to continue operating even if error events appear and handlers are logging all events
+\item Usability - we tried to create a simple user interface and easily to use for everyone
+\end{itemize}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{activityControllerEdited.png}
+ \caption[]{Working principle of the test software}
+\end{figure}
+
+\par The basic principle how the test software works can be seen in figure 5. The test software is
+started either manually from the terminal or using the web site. When the test software
+is started manually it is database dependent as well and therefore could not be used if the
+database is being maintained or not working. If it is started from the web site it
+connects to the database to get its tasks which have to be performed. After receiving
+the tasks it makes a simple network test by pinging all the servers. The ping results
+are stored in the database (in case the test was started from the web site). Then it
+proceeds with the tests by connecting itself to the handlers and sending them commands
+to perform the tests\footnote{Before it connects to the handlers, it uses the ping
+results to see is the service/device physically connected to the network.}.
+At the higher level, these commands can be seen as requests for being the
+callee and caller. Meanwhile the handlers send their test results to the main
+test software which in return decides if the test result was successful or not.
+The result is written to the database (in case the software was started from the website),
+otherwise the results are displayed in the terminal window and the user who started
+it manually can see the test results. We will proceed with introducing the classes.
+The software class diagram can be seen in the following figure. More details for the
+classes, like the input/output can be found on our project's wiki page \cite{wiki}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{classDiagram.png}
+ \caption[]{Class diagram (some classes were excluded)}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+\newpage
+\subsection{Database access} % subsection 2.1.1
+Accessing the database is of critical value to our project, therefore we had developed our own class that limits the access to the database. In the process of developing our own class we used the MySQLdb library in Python \cite{mysqlManual}.
+The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete back-trace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{dbClass.png}
+ \caption[]{Class diagram for the dbClass}
+\end{figure}
+The method names are self-explanatory and do not require extra explanations. All the outputs produced by the class can be found on the project wiki page \cite{wiki}.
+\subsection{Controlling the cell phones}
+Our first version of the developed program code for controlling the cell phones used predefined timed values
+to send commands instead of using a state controlled approach to confirm that every command was successfully received and executed by the cell phone.
+It meant we had to make an enormous number of assumptions. In comparison to our second approach, to build a state controlled cell phone control class,
+our first approach was inferior and slower. The state controlled method connected two cell phones, on the same base station, up to 15 times faster than the timed approach.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=80mm]{serialPort.png}
+ \caption[]{GSM class diagram for controlling the cell phones}
+\end{figure}
+One can easily apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception.
+A timeout exception gets raised when the cell phone does not respond (i.e. when the cell phone enters a deadlock or delayed state). We had used the serial port library inside of Python although we use USB cables to connect to our cell phones. One should
+be aware that our USB cables create a virtual serial port. More details on class design and an example can be found on our project wiki \cite{wiki}.
+\subsection{Client and Server class}
+Our socket communication code is based on the example given in the Python socket manual \cite{socket}.
+We extended it into two classes, a client and a server class. We had used the TCP protocol to base our two classes on\footnote{TCP is reliable compared to UDP (i.e. transmitted packets get also delivered),
+packets are ordered when received and data are received in a stream (i.e. multiple packets can be read at once).}.
+The Server class can be seen in the following figure. The server class is implemented to accept only local connections\footnote{More details are given in the section 7.1}.
+First we determine our IP address and then create the socket to listen only for the same IP address (with a different IP address than the selected one a connection cannot be even established).
+One has to define the port on which the server object should listen.
+When receiving data one can easily define the timeout to be raised if data are not received in the timeout range or set it to \emph{0} to infinitely wait for the buffer to be filled with received data. While testing the server class we had the problem to listen on the same port if the application was forcibly\footnote{Manually closed using CTRL+C and run again.} restarted in less than 60 seconds. We got the error message: \emph{"Address already in use"}.
+This is not known as error behavior but rather an option to help the server to catch lost live packets (i.e. packets that are still in the network looking for it is goal destination).
+We solved the problem by changing the socket options with the \emph{SO\_REUSEADDR} parameter. This enabled us to get around the error when we tried to restart our server application.
+Before solving the problem without using the socket parameter, we had another solution to get around this problem by killing the application running the port, this old method is obsolete now.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[scale=0.8]{serverClass.png}
+ \caption[]{Server class, used by the server application}
+\end{figure}
+In the process of testing the client class we did not have any major problems. The only major flow we had to debug was when one of the sides disconnects that we get out of the waiting loop if the timeout variable was set to \emph{0} (i.e. infinite waiting loop).
+The client class can be seen in the following figure. To initialize the client object one needs to define the IP address and the port of the server application listening on it.
+\begin{figure}[hb!]
+ \centering
+ \includegraphics[scale=0.5]{ClientClass.png}
+ \caption[]{Client class, used by the client application}
+\end{figure}
+Once an instance of it is created and loaded with the IP address and the port, one needs to call the \emph{connect()} method.
+The method will produce an integer based on its connection state. Output information and the programming code can be found on our project wiki page \cite{wiki}.
+\subsection{Ping class}
+Before making any test and establishing a connection we were required to ensure that the server is online. The best way to assess the liveness property was to ping the server computer running the required service. Once the class is properly defined, we could easily set the number of ping tries.
+A ping timeout response was set up to 2 seconds. For more details and insights, one can read more about it on our wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=70mm]{ping.png}
+ \caption[]{Ping class, used by test software}
+\end{figure}
+\subsection{Data logging}
+If errors appear it is important to reconstruct the events that led to the misbehavior of the software. One of the best ways to reconstruct the events was to log
+events for different blocks of programming code.
+We had used the logging class to follow our handler code run on the BeagleBoard. In case there is an error we could look inside of the log files and track the error.
+How the class works and what kind of outputs it produces can be found on our project wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{logging.png}
+ \caption[]{Logging class}
+\end{figure}
+\subsection{SSH Tunnel Class}
+Since security played an important role in our team project. We decided to encrypt all of our data that was not processed on our server computer.
+The simplest solution to this problem was to build an SSH Class that could open and close a local forwarding port.
+All data sent through the created port is encrypted until it gets to its destination location.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{sshTunnelClass.png}
+ \caption[]{SSH Tunnel class}
+\end{figure}
+\subsection{USB Cell phone detection class}
+Since we had used cables to connect the cell phones with the computer, usually the devices
+got their own port addresses. They were automatically assigned by the operating system,
+either after the cables were plugged into the USB port or after a system reboot.
+One of the problems we had to deal with was assigning the right cell phone
+(i.e. with the appropriate GSM network) to the corresponding port address.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{usbDetectClass.png}
+ \caption[]{USB cable detection class}
+\end{figure}
+The operating system randomly assigned the port names after every reboot.
+We were looking for a solution to prevent this misaddressing of the devices.
+Our solution was to recognize every device and update the port address in the database.
+The principle how we identify the cell phones is by their calling numbers in the database.
+More details can be found on our project wiki page \cite{wiki}.
+\subsection{Truth table class}
+The truth table class was built to identify the broken and working parts of the system.
+It requires the list with test results to be present to be operable.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{trueTable.png}
+ \caption[]{Truth table class}
+\end{figure}
+Then the class tries to identify the broken parts of our telecommunication network.
+The class can easily identify how many nanoBTSs are installed in the network and
+derive a decision which part of the network is broken.
+All the test results are stored in a list and can be easily read by calling the
+\emph{initTrueTable(x)} function. More details can be found on our project wiki page \cite{wiki}.
+\subsection{Init Test class}
+The main purpose of the class is to get device data from the database and to process it.
+The processed data get forwarded to the controller class and in the end the class
+fetches the results from the test. This class contains the \emph{smart test} functionality.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{initTestClass.png}
+ \caption[]{Init test class}
+\end{figure}
+It selects automatically the important tests to perform. In the next step it
+tries to identify the problem in the network.
+More details can be found in the \emph{smart test} description.
+\subsection{Controller class}
+The controller class is used to assign jobs to handlers (in other words, which one is
+going to be the caller and callee). Simultaneously, it defines the port addresses for
+the communication between the handlers and the main test software (controller).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{controllerclass.png}
+ \caption[]{Controller class}
+\end{figure}
+If the callee or the caller are nanoBTS controller boxes (i.e. BeagleBoards outside
+the Rechenzentrum), it will first create an SSH connection to make a tunnel before
+the local socket connection is created. Then the controller class sends all the
+required data regarding the test tasks to the handlers.
+
+\clearpage
+\section{Hardware design}
+In our team project we had the option to choose all the required hardware ourself beside the two BeagleBoards, which we were supplied by Konrad and Dennis.
+Since one of the project goals was to reduce the costs as much as it was possible, we had tried to use some of the leftovers found in our lab.
+
+\subsection{BeagleBoard}
+``The BeagleBoard is an OMAP3530 platform designed specifically to address the Open
+Source Community.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{bb.jpg}
+ \caption[]{BeagleBoard, a Linux-on-chip board where our controller software runs the GSM device }
+\end{figure}
+It has been equipped with a minimum set of features to allow the
+user to experience the power of the OMAP3530 and is not intended as a full development
+platform as many of the features and interfaces supplied by the OMAP3530 are not
+accessible from the BeagleBoard'' \cite{beagleDataSheet}.
+We run on it a special precompiled version of Ubuntu for the ARM processor type. The Linux system boots up from an SD Card.
+The board has an USB hub and network port attached to it. In our project it is connected to our
+internal university LAN network and to a cell phone. We positioned the two BeagleBoards in rooms where
+we had LAN access and GSM signal coverage of our two local base stations.
+
+\subsection{Cell phones}
+Our first attempt was to control a Nokia cell phone 3310 with the supplied USB connection cable.
+The protocols used by old versions of Nokia cell phones, as the 3310, use the F-Bus protocol. It was not easy to work with.
+After performing various experiments we succeeded to send and to read SMS messages. Later on we found out that it was not possible to
+send commands for receiving and making the calls. In the meantime we found two Siemens phones, one M45 and S55.
+The first one, Siemens M45, had a cable supplied with it and it was not difficult to control it with the standard set of AT modem commands.
+At the start we did not have a cable supplied for the Siemens S55 phone. We controlled it over the Bluetooth port.
+
+\subsection{Cables for the cell phones}
+Due to the fact that we had used 5 cell phones on a single computer, the best solution was to order 5 USB cables.
+Konrad bought 5 cables for 5 Siemens S55 cell phones. All of the cables have an USB2Serial chip converter inside of them.
+Once they were plugged into the USB port, Ubuntu automatically recognized the cables and installed the drivers.
+The virtual serial ports were created and could be found on \emph{/dev/ttyUSBx}, where $x$ is the automatically assigned number for the port.
+Some of the cables had the capability to charge the Siemens S55 phones.
+Konrad had opened several cables to solder the power supplies to some contacts and the problem was solved for all of the cables.
+\subsection{Server}
+We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Apache web server and MySQL.
+Afterwards we installed the Python on it and all the required libraries\footnote{Required libraries are mentioned in section 9.1.}.
+\clearpage
+
+\section{Communication protocol}
+A communication protocol represents a set of well defined rules by whose help two or more computing systems exchange information in-between.
+When defining these rules, it is important to define a limited state space for every possible event, no matter did we get the appropriate
+response from the other side. Our approach to this problem was to build a simple synchronous protocol, where every expected message is
+confirmed or otherwise the connection between two sides is immediately terminated. Since designing protocols is a demanding and challenging
+topic which requires years of experience and verification, we do not expect that we had developed the best possible and an optimum
+protocol\footnote{Design concepts and paradigms for the protocol design have been used from the
+``Network Protocol Design and Evaluation'' course, lectured by Dr. Stefan R\"{u}hrup}.
+In the following paragraphs we will try to clarify how our protocol works. Before we start to go into detail how the protocol works,
+it is important to remember that we differentiate two sides, handler and the controller side. The handler side represent the device
+that physically handles the call (e.g. the BeagleBoard) whereas the controller (i.e. the main test software), is the test software
+controlling the handler side and assigning the task to it.
+
+\subsection{Communication between the handler and controller}
+The handler side is always in the waiting mode, by waiting we denote the mode where the socket is already created and it is waiting
+for a connection to be accepted at the defined port. The controller initiates a socket connection to the two handlers.
+Subsequently, after the connection has been established, it is waiting for a message to be received. The first message
+has to be 13 characters long and include the following content \emph{HELLO HANDLER}. Thereupon, after the message has
+been validated, the handler side sends the controller side a response, \emph{HELLO CONTROLLER}.
+We call this first message exchange the initialization. Now the controller side has to decide which of the two handler's
+will be the caller/callee whereas the other handler will be the opposite. Let's assume the controller sends to the first
+handler the message \emph{RECEIVER} and to the second one the message \emph{CALLER|\#}, replace the callee number with the \# sign.
+In the meantime, both handlers initialize the software required to make the call and to receive the call. Asynchronously they
+respond back to the controller their successful initialization. The successful initialization is reported by sending \emph{RECEIVER READY}
+and \emph{CALLER READY}. After receiving the mentioned messages, the controller first sends the callee handler the
+message \emph{RECEIVE START} and then to the caller handler, the message \emph{CALLER START}. As a result of these messages,
+the handlers enter the receiving, respectively calling state. In the given states two timeout timers gets activated.
+These timers are responsible for the case if the physical connection between the callee and the caller are not successfully
+established or terminated\footnote{The client and server classes responsible for the communication have timeout timers as well
+for the case if the connection between the controller and handlers are broken.}. Afterwards, depending if the physical connection
+between the handlers (i.e. the callee and the caller) was successfully established or not, the handlers report their
+corresponding state with a message to the controller. The message is of the form \emph{CALL OK}, meaning the handler successfully
+established a physical connection with the other handler, or of the form \emph{CALL NOT OK}, meaning a physical connection was
+not successfully established on the given handler. The controller considers only a test successful if both handlers report
+with \emph{CALL OK}. The test software ends the established connection with the handlers by sending them the \emph{TERMINATE CONNECTION}
+command. After the handlers have terminated the connection, they enter the waiting for a new connection state and the process starts
+from beginning again. If the states are not entered in the specified order the connection is immediately terminated and
+the state machine is in the waiting for a new connection state\footnote{It cannot be seen in the protocol flowchart but one should
+keep in mind it works like a well defined state machine.}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{protocolCommunicationHandler.png}
+ \caption[]{Flowchart of the protocol on the handler side without the state representation}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerReceiver.png}
+ \caption[]{Flowchart of the protocol on the controller side for the caller without the state representation}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerCaller.png}
+ \caption[]{Flowchart of the protocol on the controller side for the receiver without the state representation}
+\end{figure}
+
+\subsection{Verification of the protocol}
+``SPIN is a model checker - a software tool for verifying models of physical
+systems, in particular, computerized systems. First, a model is written that
+describes the behavior of the system; then, correctness properties that express
+requirements on the system's behavior are specified; finally, the model
+checker is run to check if the correctness properties hold for the model, and,
+if not, to provide a counterexample: a computation that does not satisfy a
+correctness property.'' \cite{spin}. We modeled our simple protocol in SPIN using
+the programming language PROMELA \cite{spin}. Since PROMELA is similar to C it was
+not possible to ensure 100\% matching with Python but we had made the assumptions of it.
+We modeled both sides, server and client side. As well as the server side being a caller
+and a callee. It was important to find out if our protocol is deadlock or delayed state free.
+For more details our model can be found on our wiki project page with the PROMELA source code \cite{wiki}.
+We had built in a 50\% random probability that the call test will not be successful, to make the model even more
+realistic. Our protocol idea was deadlock free and the verification results prove it.
+After we had modeled the basic idea we had written the code that implements our idea. The Python code
+resembles some kind of a state machine which remembers the last state and what the next state should be in case
+of receiving corresponding message. Otherwise it enters the exit state and then the start state.
+
+\begin{lstlisting}
+(Spin Version 6.1.0 -- 2 May 2011)
+ + Partial Order Reduction
+Full statespace search for:
+ never claim - (none specified)
+ assertion violations +
+ cycle checks - (disabled by -DSAFETY)
+ invalid end states +
+State-vector 44 byte, depth reached 65, errors: 0
+ 40 states, stored
+ 3 states, matched
+ 43 transitions (= stored+matched)
+ 90 atomic steps
+hash conflicts: 0 (resolved)
+ 2.195 memory usage (Mbyte)
+unreached in proctype Server1
+ (0 of 36 states)
+unreached in proctype Server2
+ (0 of 36 states)
+unreached in proctype Client
+ (0 of 67 states)
+pan: elapsed time 0 seconds
+\end{lstlisting}
+
+\clearpage
+\newpage
+
+
+\section{Security and safety of the system}
+Safety and security of the software plays a major role in our project.
+It is of vital importance that only as few as possible people have access to our test system since the resulting data could be exploited to plan an attack
+(e.g. assume the University alarm system uses the SIP gateway to connect to the outside world and to alarm the police, if one knows that the SIP gateway is not working properly, a burglar could plan to rob the University building just at that moment). Therefore the choice to go Open Source is justified due to the fact that one should know how every single detail of the system works.
+All the time, while we were working on the project, we were made aware of this issue by Dennis and Konrad.
+We decided to use asymmetric key cryptography, where each side has two keys (private and public). In the next sections we will explain in more details how we applied the methods.
+\subsection{Encryption of the communication channels}
+At first we thought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of Internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g.
+trying to open the port until the system runs out of memory and in our case the system which we used on the handler side was a BeagleBoard with ARM architecture running on a single chip TI OMAP processor, refer to the picture in figure).
+We had to eliminate even the slightest possible threat in return for spending more time for debugging the test software system. Despite we were aware of all these facts, we had to choose one of the plenty implemented encryption standards on Linux.
+Dennis and Konrad suggested using the SSH Tunneling method.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{sshTunnel.png}
+ \caption[]{SSH Tunnel, all the communication inside the tunnel is encrypted }
+\end{figure}
+
+Using the SSH Tunnel port forwarding method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running).
+The SSH Tunnel port forwarding method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password every time we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}.
+This can be performed by executing the following commands in the terminal shell.
+One has to create first the private and public keys on the local machine(i.e. server computer, where the test software runs):
+
+\begin{lstlisting}
+refik@ubuntu:$ [Note: You are on local-host here]
+
+refik@ubuntu:$ ssh-keygen
+Generating public/private rsa key pair.
+Enter file in which to save the key (/home/refik/.ssh/id_rsa):[Enter key]
+Enter passphrase (empty for no passphrase): [Press enter key]
+Enter same passphrase again: [Press enter key]
+Your identification has been saved in /home/refik/.ssh/id_rsa.
+Your public key has been saved in /home/refik/.ssh/id_rsa.pub.
+The key fingerprint is:
+33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 refik@ubuntu
+\end{lstlisting}
+
+Then one needs to copy the public key to the remote machine (BeagleBoard) using ssh-copy-id:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
+refik@remote-host's password:
+Now try logging into the machine, with "ssh 'remote-host'", and check in:
+
+.ssh/authorized_keys
+
+to make sure we haven't added extra keys that you weren't expecting.
+\end{lstlisting}
+
+After we have created the public and private keys, and coppied the public key on the machine to which we want to connect, we can test if we can make an SSH connection to the remote machine:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh remote-host
+[Note: SSH did not ask for password.]
+
+refik@remote-host:$ [Note: You are on remote-host here]
+\end{lstlisting}
+The test was successful. We tested it with our SSH Tunnel port forwarding class and it worked perfectly.
+\subsection{Security on the web site}
+Aside from having secured the data communication channels between various parts of our software
+(the handlers and the controller), it was crucial to ensure all the communication between
+test user's browser and our server. Therefore we had used the \emph{https} protocol and
+the \emph{.htaccess} file to password protect the web site so only the privileged users
+have access to our test system.
+\subsubsection{Configuring the http secure protocol https}
+Securing the communication channels without making certain the web site is safe would be worthless.
+We decided to use the \emph{https} protocol instead of the \emph{http} since a person in the middle
+could sniff our data (e.g. a person is connected with his/her smart-phone over an unprotected wireless network) \cite{https}.
+At the same time the web site should be accessible only by the authorized personel. Our first approach to this
+problem was to build an PHP page with \emph{MD5} hashed passwords, however we got a suggestion by Konrad and Dennis to
+use a safer encryption method implemented in the Apache web server software, \emph{.htaccess}. By using
+these two techniques we protected the web site of some vulnerabilities known to us. If the web site
+will be only accessed from our local university network, we can additionally add an IP filter mask as well.
+In the following paragraph we will explain our procedure how to generate the keys and to enable the https protocol.
+\par First we want to generate a server key by typing the following command:
+\begin{lstlisting}
+openssl genrsa -des3 -out server.key 4096
+\end{lstlisting}
+\par This will generate a 4096 bit long private server key, one is asked to enter two times a password for the \emph{server.key}.
+Using the generated private server key, we will create a certificate signing request, \emph{server.csr}. We were prompted with a series of questions
+like country, state, organization name and etc which we had to enter to resume.
+\begin{lstlisting}
+openssl req -new -key server.key -out server.csr
+\end{lstlisting}
+\par In the next step we had to sign the certificate signing request and enter the amount of days for how long it should be valid.
+In our case we entered the duration of one year, one can make it for longer periods as well (i.e. the amount of 365 has to be changed).
+\begin{lstlisting}
+openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
+\end{lstlisting}
+\par We were asked to enter the password again for \emph{server.key}. After we have completed this step we had to make
+a version of the \emph{server.key} which did not require a password, \emph{server.key.insecure} and we will rename the files appropriately.
+\begin{lstlisting}
+openssl rsa -in server.key -out server.key.insecure
+mv server.key server.key.secure
+mv server.key.insecure server.key
+\end{lstlisting}
+\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files: \emph{server.crt}, \emph{server.csr}, \emph{server.key} and \\ \emph{server.key.secure}. Now we need to enable the SSL engine on the Apache web server.
+We coppied \emph{server.key} and \emph{server.crt} into \emph{/etc/appache2/ssl}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2$ sudo mkdir ssl
+cp server.key /etc/apache2/ssl
+cp server.crt /etc/apache2/ssl
+\end{lstlisting}
+\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \\ \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlink-ed for loading)'' \cite{https}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo a2enmod ssl
+Enabling module ssl.
+See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
+Run '/etc/init.d/apache2 restart' to activate new configuration!
+\end{lstlisting}
+\par In the next procedure we had to establish a symlink from the 'available' default-ssl file to the 'enabled' file \cite{https}. Then we created a folder where our secured PHP files will be located (e.g. https://some-domain-name.com/test-software).
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl
+refik@ubuntu:/etc/apache2/ssl$ cd /var/
+refik@ubuntu:/var$ sudo mkdir www-ssl
+\end{lstlisting}
+\par We had backed up our old configuration files for the virtual hosts, for the case if we damage the Apache configuration files. Then we edited the \emph{default-ssl} file.
+\begin{lstlisting}
+refik@ubuntu:/var$ cd /etc/apache2/sites-available
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default default_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default-ssl default-ssl_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par Only the beginning of the file is listed here and we have modified the line starting with \emph{DocumentRoot}
+and \emph{<Directory /var/www/>} from \emph{DocumentRoot /var/www} to \emph{DocumentRoot /var/www-ssl}
+and from \emph{<Directory /var/www/>} to \emph{<Directory /var/www-ssl/>}
+(i.e. we had to redefine the location of our SSL directory).
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+<VirtualHost _default_:443>
+ ServerAdmin webmaster@localhost
+
+ DocumentRoot /var/www-ssl
+ <Directory />
+ Options FollowSymLinks
+ AllowOverride None
+ </Directory>
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+\par One should keep in mind that the port 443 should be free for Apache to use it. In the proceeding step we had to ensure that Apache listens on the given port for a \emph{https} connection.
+One could test that by going into the \emph{/etc/apache2/ports.conf}.
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+ # If you add NameVirtualHost *:443 here, you will also have to change
+ # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
+ # to <VirtualHost *:443>
+ # Server Name Indication for SSL named virtual hosts is currently not
+ # supported by MSIE on Windows XP.
+ Listen 443
+</IfModule>
+\end{lstlisting}
+\par In our case it was set up correctly, since the command: \emph{Listen 443} was present.
+In our last configuration step we had to edit \emph{default-ssl} file to define the correct locations of our keys and to ensure the SSL engine was turned on.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par The following part of the file had to be found and modified according to our locations:
+\begin{lstlisting}
+SSLEngine on
+
+ # A self-signed (snakeoil) certificate can be created by installing
+ # the ssl-cert package. See
+ # /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
+ # If both key and certificate are stored in the same file, only the
+ # SSLCertificateFile directive is needed.
+ SSLCertificateFile /etc/apache2/ssl/server.crt
+ SSLCertificateKeyFile /etc/apache2/ssl/server.key
+
+ # Server Certificate Chain:
+ # Point SSLCertificateChainFile at a file containing the
+\end{lstlisting}
+\par Finally we had configured our server and can proceed with the restart of the apache web server. We created a test web site \emph{/var/www-ssl/index.php} and navigated our browser to \emph{https://localhost}. The test was successful!
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo /etc/init.d/apache2 restart
+ * Restarting web server apache2 [Sat Oct 08 21:52:51 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
+ ... waiting [Sat Oct 08 21:52:52 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence [ OK ]
+refik@ubuntu:/etc/apache2/sites-available$
+\end{lstlisting}
+\subsubsection{Password protecting the web site using .htaccess}
+Aside from using a secure communication protocol on the web, \emph{https}, it is important
+to ensure that only permissioned users gain access to the web site. We had achieved it using
+the \emph{.htaccess} file. However, to enable the use of Apache \emph{.htaccess} files,
+we will have to reconfigure the Apache configuration files again. \emph{root} access will
+be required. First we have to edit the \emph{/etc/apache2/sites-available/default-ssl} file.
+Find the following lines and modify the \emph{AllowOverride None} to \emph{AllowOverride All}
+like in the given configuration segment:
+\begin{lstlisting}
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride All
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+This will tell Apache web server that it is okay to allow \emph{.htaccess} files
+to over-ride previous directives. We must reload the Apache web server before the
+changes can take effect. We can do it by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 reload
+\end{lstlisting}
+The next step is to go to the directory where our test software web page is located
+(e.g. \emph{/var/www-ssl/testsoftware}) and to create a file called \emph{.htaccess}.
+Please insert the following code segment inside the created \emph{.htaccess} file where
+\emph{/var/www-ssl/testsoftware/.htpasswd} is your full path address to \emph{.htpasswd}:
+\begin{lstlisting}
+AuthUserFile /var/www-ssl/testsoftware/.htpasswd
+AuthName "Authorization Required"
+AuthType Basic
+require valid-user
+\end{lstlisting}
+Then in the next step, create another file called \emph{.htpasswd}. After you have created it,
+we will add the usernames that should have access to the web site. We do that by typing the
+following command, where you can replace \emph{konrad} with any other combination of letters
+which will represent your username:
+\begin{lstlisting}
+refik@ubuntu:/var/www-ssl/testsoftware$ sudo htpasswd -c .htpasswd konrad
+\end{lstlisting}
+Afterwards, you will be required to type twice the same password for the username
+you want to create, in this case \emph{konrad}. ``The -c flag is used only when you
+are creating a new file. After the first time, you will omit the -c flag,
+when you are adding new users to an already-existing password file. Otherwise you
+will overwrite the file!'' \cite{htaccess}. You can add as many users as you wish,
+do not forget to remove the -c flag when you do it.
+In the last step, we have to modify the \emph{/etc/apache2/apache2.conf} file and
+to add at the end of it the following code segment where \emph{/vaw/www-ssl/testsoftware}
+is the full path to your web page directory where you put the \emph{.htpasswd} file:
+\begin{lstlisting}
+<Directory /vaw/www-ssl/testsoftware>
+AllowOverride All
+</Directory>
+\end{lstlisting}
+We are done with editing. All we have to do now is to restart the Apache web server. We
+can do that by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 restart
+\end{lstlisting}
+You can test it now by opening a new browser tab and navigating to \emph{https://localhost/\\testsoftware}
+(keep in mind to replace \emph{testsoftware} with your name of the folder where the web page
+is located). If you configured everything properly, you should get a dialog where you can
+enter your created username and password and try to login.
+
+\newpage
+\section{Web page}
+One of the requests of our team project was to build a test system that could be started from the web site.
+Since we used the Open Source platform to base our project on, it was certain we will use it for the web site as well.
+The dynamic parts of the web site were programmed using PHP and JavaScript. The GUI was done using CSS.
+The web site opens TCP/IP sessions between itself and the Python test software. Due reasons explained in the section above,
+a test user needs first to enter his username and password to access the web site. Then a test user can manually select what type of tests he wants to perform or he can select already defined test,
+like the simple, smart or full test. (Describe here these three type of tests).
+Data about the performing tests are inserted into the database only in the case if the mutex lock for the web site can be obtained\footnote{The mutex lock will be explained in the next subsection.}.
+This way we can avoid inserting data about the test in case there is already a test user on the website performing some tests on the system.
+\subsection{Communication between the web page and the test software}
+Our first idea was that the PHP file starts the test software.
+However, parts of our test software open new terminal windows and
+since PHP has restrictions for starting GUI applications our approach was condemned for a failure at the start.
+We had to deal with this problem and our solution to it was to write a little Python script that will run in background and start our
+test software when required. Once a person starts the test over the web site, it automatically connects to the Python script over an TCP/IP socket.
+Before being able to start the test software one needs first to obtain the mutex lock on the web site and to check if there is a mutex lock for the test software running.
+Using this approach we can ensure that only one user at the time can be on the web site and run only one instance of the test software.
+In the next step we send the Python script a message to start the test software. The test software obtains a mutex lock as well.
+When the test software is started the web page checks if a software lock is obtained.
+Once it is obtained we can proceed with creating a new socket connection between the web site and the test software.
+Our TCP/IP communication between the web site and the test software is not encrypted since both the web page and the test software run on the same server computer.
+The mutex locks are freed after the tests are performed. Our test software has a timeout timer in case that the web site hangs or somehow the socket connection breaks
+where it automatically shuts down.
+\subsection{Results on the web page}
+All the performed test results are displayed on the web site. The results are displayed in real time after each selected test case is performed.
+After all the test cases have been performed a topological picture is generated which represents the current state of the system, this can bee seen in the following figure.
+Afterwards, when the result picture is generated, the test user can easily see what is wrong in the system. Various icons represent different subsystems.
+Reading the test results is as simple as looking at the icons and identifying if they have: a green plus signs (i.e. working properly), a red minus sign (i.e. not working properly) and a yellow exclamation mark (i.e. it was not tested).
+
+\begin{itemize}
+\item Triangles represent BTS stations
+\item Cell phones represent the external networks (E-Plus, Vodaphone, T-Mobile and O2)
+\item Telephone represents the landline and a telephone with a mortarboard the University telephone network
+\item Servers represent the OpenBSC and LsfKs-Asterisk
+\item Two monitors represent the SIP system
+\end{itemize}
+
+\par The inference mechanism works as following: if a test case works, we can conclude that the subsystems connected in-between the two ends are working properly as well.
+We use the pChart library\footnote{It is under the GNU GPLv3 license and our project is nonprofit!} to generate the topological picture of our telecommunication system \cite{pChart}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{resultsImage.png}
+ \caption[]{Result image showing working, defected and not tested subsystems}
+\end{figure}
+\par On the right side of the result picture the test user can immediately identify the network operability in percentage\footnote{The test user has to take into account that this percentage is only valid if a full test is performed.}. Bellow the network operability statistics are the ping results statistics located.
+If one of the fields is red it means the subsystem is not online or cannot be seen by our server computer where the test software is located.
+\newpage
+\section{Employing the test software system}
+In this section the reader can find out how to install and how to use the test system.
+Our goal was to make a multi-platform test software, however we tested it only under Ubuntu
+11.04 32 bit Linux OS and the given instruction manual is only tested under that OS. The
+test software performed well, both on PC and MAC computers.
+One should keep in mind that some of the libraries we had used do not work
+under the 64 bit version of Linux OS.
+
+\subsection{Required software and libraries}
+In the next subsections, we will guide you how to install all the required software and
+libraries to flawlessly run our test software on your employed server.
+You will be required to have \emph{root} access privileges and to open a new
+terminal window where the commands will be typed in.
+
+\subsubsection{Python installation}
+Python was our programming language of choice\footnote{We had explained earlier why we
+have decided to use Python.}. The required version of Python is 2.7. One can easily
+install python by typing the following commands:
+\begin{lstlisting}
+sudo apt-get update
+sudo apt-get install python2.7
+\end{lstlisting}
+It will take a short amount of time to be installed. You will be required to enter
+the \emph{root} password.
+
+\subsubsection{Apache Web server installation}
+We had decided to use the Apache web server because of its wide support on the Internet
+and safety reasons. If there are any bugs or security flaws, the patches are
+easily installed with the Ubuntu update manager. The Apache web server can be easily
+installed by typing the following command:
+\begin{lstlisting}
+sudo apt-get install apache2
+\end{lstlisting}
+You might be required to follow other installation instructions printed on the
+terminal screen.
+After the installation has completed successfully, one can test if it works by going
+to the following web address: \emph{http://localhost}. For configuring the \emph{https}
+please go to the section 7.2.
+
+\subsubsection{SSH}
+Secure Shell (SSH) is a network protocol for secure data communication between two
+computers inside of a network. All computers are required to have SSH installed on it.
+You can easily install it by typing the following command:
+\begin{lstlisting}
+sudo apt-get install ssh
+\end{lstlisting}
+
+\subsubsection{MySQL database and MySQLdb library}
+The MySQLdb library is required to perform various operations on the MySQL database within
+Python. We used the MySQLdb library instead of the native MySQL C API \emph{\_mysql} library
+to make the code cleaner and more portable.
+We suggest you to install first the MySQL database on the server computer. If you
+have installed MySQL you can skip the next part. To star the installation process one can
+type the following commands:
+\begin{lstlisting}
+sudo apt-get install mysql-server
+\end{lstlisting}
+You will be required to enter the Linux \emph{root} password. At some point during
+the installation process, you will be required to enter the password for the MySQL
+database. After you have performed the above step, we can proceed with the
+MySQLdb library installation. By typing:
+\begin{lstlisting}
+sudo apt-get install python-mysqldb
+\end{lstlisting}
+If the \emph{python-mysqldb} name has changed, one can easily find the correct name of the
+file by issuing the following command:
+\begin{lstlisting}
+apt-cache search MySQLdb
+\end{lstlisting}
+By typing in the commands given above, you should have successfully installed the MySQLdb
+library.
+
+\subsubsection{Serial port library}
+The serial port library is required for the cell phones to communicate with the
+server computer and the BeagleBoards. The required library for Python can be installed
+by typing the following command:
+\begin{lstlisting}
+sudo apt-get install python-serial
+\end{lstlisting}
+The installation should not produce any errors or warnings.
+
+\subsubsection{PJSUA library}
+\emph{PJSUA} is an open source command line SIP user agent (soft-phone). We use the library
+for the SIP handler. First, one needs to download the library
+from \url{http://www.pjsip.org/download.htm} \cite{pjsip}. Then extract it to some folder.
+Then we will build the library using make. This can be accomplished by typing the following
+commands:
+\begin{lstlisting}
+cd your-pjsip-root-dir
+./configure && make dep && make
+cd pjsip-apps/src/python
+sudo make
+\end{lstlisting}
+
+If you get an error similar to this one:
+\begin{lstlisting}
+_pjsua.h:25:20: fatal error: Python.h: No such file or directory
+compilation terminated.
+error: command 'gcc' failed with exit status 1
+\end{lstlisting}
+Then you will be required to install python-dev as well, that matches your version of
+python (e.g. python2.7-dev). You can do it by typing:
+\begin{lstlisting}
+sudo apt-get install python2.7-dev
+\end{lstlisting}
+After you have successfully installed python2.7-dev, repeat the the commands given above.
+Now you should have a properly installed PJSUA library. One can easily test if the installation
+was successful by compiling a simple python code, \emph{python test.py}, with the following
+source code:
+\begin{lstlisting}
+import pjsua
+\end{lstlisting}
+If you do not get any errors, you have successfully installed the library. More detail can
+be found on our project wiki page \cite{wiki}.
+
+\subsubsection{pChart library}
+The pChart library is within our installation files and does not require to be installed
+individually. The library is only required if one uses the web interface and
+requires the generated resulting image. The library is open source and does not require
+any licensing. However, if one needs to learn how the library works,
+information can be found on the pChart web page \cite{pChart}.
+
+\subsubsection{proctitle library}
+We had used this library to rename the currently executed process name.
+``The library allows a process to change its title (as displayed by system
+tools such as ps and top). Changing the title is mostly useful in
+multi-process systems, for example when a master process is forked:
+changing the children's title allows to identify the task each process is
+busy with.'' \cite{proctitle}. The library can be easily installed by typing:
+\begin{lstlisting}
+sudo easy_install setproctitle
+\end{lstlisting}
+
+
+\subsection{Configuring hardware}
+Before proceeding with the next steps, please connect all the cell phones
+to the USB hub using the suitable cables. Then make sure the cables are
+recognized by the operating system. This can be performed by typing the following command:
+\begin{lstlisting}
+dmesg | grep ttyU
+\end{lstlisting}
+The given command should produce a result similar to:
+\begin{lstlisting}
+[ 5178.753600] usb 1-1.2: pl2303 converter now attached to ttyUSB0
+\end{lstlisting}
+
+We have two different ways to configure the cell phones, manually and automatic.
+Both options can be accessed either using the website or the terminal window.
+Using the manual configuration from the terminal, the user configures everything him/herself.
+The user will be presented with a few questions like the port address, cell phone number and IMEI.
+After the user enters all the required parameters, the software will check
+if the given port address is accessible and it will look for a response from the devices.
+Then you will be asked to enter the IMEI and the cell phone number of the device.
+If the entered IMEI matches the device IMEI then the software will update the database
+with the entered information. You can run, both the manual and automatic configuration
+by typing:
+\begin{lstlisting}
+python gsmselftest.py --devconf
+\end{lstlisting}
+In the automatic configuration, the software will automatically try to detect every
+cell phone that is connected to the USB hub. This configuration option can detect
+up to nine cell phones, that are connected to the server computer. We had set a limit to
+nine cell phones because we required only five (four for the external GSM networks
+and one for our internal GSM BST). The only limitation of the automatic cell phone configuration
+is that it only supports cell phones where we could read out the number using the \emph{AT Modem}
+commands since some cell phone manufacturers do not use the standardized \emph{AT Modem} commands.
+\newpage
+\subsubsection{Configuring the cell phones}
+It is important to write in the Siemens S55 cell phones their numbers if you want to use
+automatic device configuration. You can do that by following the next few steps:
+
+\par Open the phone book on the S55 and choose \emph{<Special books>} and press the select button.
+\par In the second step, press select on \emph{<OwnNumber>}.
+\par In the third and last step, enter your cell phone number and save it!
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{First.png}
+ \caption[]{First step in configuring the phone}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{Second.png}
+ \caption[]{Second step in configuring the phone}
+\end{figure}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{Third.png}
+ \caption[]{Second step in configuring the phone}
+\end{figure}
+\clearpage
+\subsection{Location of the files}
+For proper operation of the software, it is important that each file is at its correct path
+located. In the given section you can find out the correct path locations.
+If you are not an expert, please do not change these locations.
+The following files have to be located in the \emph{/var/www-ssl/testsoftware/} folder:
+\begin{lstlisting}
+drwxr-xr-x 7 root root 4096 2011-10-28 12:45 .
+drwxr-xr-x 3 root root 4096 2011-10-20 17:06 ..
+-rw-r--r-- 1 root root 109 2011-10-26 16:55 .htaccess
+-rw-r--r-- 1 root root 20 2011-10-26 17:11 .htpasswd
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 class
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 css
+-rw-r--r-- 1 root root 7547 2011-10-20 17:06 delayedLoading.js
+-rw-r--r-- 1 root root 3431 2011-10-25 14:38 devconf.html
+-rw-r--r-- 1 root root 2024 2011-10-25 23:47 devconfigAuto.php
+-rw-r--r-- 1 root root 1811 2011-10-26 13:44 devconfigManual.php
+-rw-r--r-- 1 root root 2195 2011-10-25 23:45 devconfig.php
+-rw-r--r-- 1 root root 3526 2011-10-27 14:51 devconf.php
+-rwxr-xr-x 1 root root 725 2011-10-20 17:06 execute.php
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 fonts
+-rw-r--r-- 1 root root 2259 2011-10-28 12:43 index.html
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 icons
+drwxr-xr-x 2 root root 4096 2011-10-25 14:10 Images
+-rw-r--r-- 1 root root 2038 2011-10-20 17:06 insertData.php
+-rw-r--r-- 1 root root 636 2011-10-26 13:43 insertdevice.php
+-rw-r--r-- 1 root root 10819 2011-10-20 17:06 loader.gif
+-rw-r--r-- 1 root root 2268 2011-10-26 16:07 main.php
+-rw-r--r-- 1 root root 5416 2011-10-20 17:06 moocheck.js
+-rw-r--r-- 1 root root 75836 2011-10-20 17:06 mootools.js
+-rw-r--r-- 1 root root 677 2011-10-20 17:06 mutexFunctions.php
+-rw-r--r-- 1 root root 9063 2011-10-25 17:20 mutexSmartTest.php
+-rwxr-xr-x 1 root root 9143 2011-10-28 12:45 mutexTry.php
+-rw-r--r-- 1 root root 13304 2011-10-20 17:06 networkResult.php
+-rw-r--r-- 1 root root 8294 2011-10-21 19:02 post.php
+-rw-r--r-- 1 root root 19218 2011-10-21 17:36 startTest2.php
+-rw-r--r-- 1 root root 18852 2011-10-20 17:06 startTest.php
+-rw-r--r-- 1 root root 18787 2011-10-25 16:43 TaskTest.html
+-rw-r--r-- 1 root root 3685 2011-10-20 17:06 testCase.php
+-rw-r--r-- 1 root root 2545 2011-10-20 17:06 wait.gif
+\end{lstlisting}
+The \emph{startSoftware.py} file is required to be in the \emph{/etc/init.d/} folder,
+since it is required to be start with the computer boot however if that does not work,
+one should start it manually. This part of the software is
+responsible for starting the testing software from the web page\footnote{The web page
+communicates with this script via a socket connection and sends a signal to start
+the main test software.}.
+The main test software python files should be located in \emph{/home/gsmselftest/SoftwareTesting/}.
+\begin{lstlisting}
+drwxr-xr-x 2 gsmselftest gsmselftest 4096 2011-11-03 14:29 .
+drwxr-xr-x 30 gsmselftest gsmselftest 4096 2011-11-02 18:28 ..
+-rwxr--r-- 1 gsmselftest gsmselftest 2909 2011-10-20 17:54 ClientClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3628 2011-10-20 17:54 ClientClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 9814 2011-11-02 16:19 ControllerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 9247 2011-11-02 16:20 ControllerClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 15129 2011-11-02 15:32 DbClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 11712 2011-11-02 15:32 DbClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8512 2011-11-02 13:30 GSMClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7337 2011-11-02 13:42 GSMClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8063 2011-11-02 13:24 GSMHandler.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 20346 2011-11-02 18:32 gsmselftest.py
+-rwxr--r-- 1 gsmselftest gsmselftest 698 2011-11-02 18:36 help.txt
+-rwxr-xr-x 1 gsmselftest gsmselftest 8661 2011-11-02 16:35 initTestClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7497 2011-11-02 16:37 initTestClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 645 2011-10-20 17:54 LogFileClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1509 2011-10-20 17:54 LogFileClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 817 2011-10-20 17:54 PingClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1263 2011-10-20 17:54 PingClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 3982 2011-10-20 17:54 ServerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4596 2011-10-20 17:57 ServerClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 4129 2011-10-20 23:17 ServerClassSoftware.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4802 2011-10-20 23:17 ServerClassSoftware.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 5252 2011-10-22 03:58 SIPHandler.py
+-rwxr--r-- 1 gsmselftest gsmselftest 1267 2011-11-02 14:07 SSHTunnelBoxClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1852 2011-11-02 14:19 SSHTunnelBoxClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 323 2011-11-02 18:44 startSoftware.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 6378 2011-11-02 16:13 trueTableClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4583 2011-11-02 16:16 trueTableClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 2248 2011-10-28 14:04 usbDetectClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3590 2011-10-28 14:05 usbDetectClass.pyc
+\end{lstlisting}
+
+\subsection{Setting up the parameters}
+After configuring the hardware, \emph{https} and \emph{.htaccess} on the web server,
+it is important to modify the files for proper operations. In the given section you
+can find out how to configure the rest of the files (e.g. database passwords, etc.).
+The following files you have to modify to have a working database access:
+\emph{initTestClass.py, GsmSelfTest.py, UsbDetectClass.py} and \emph{truthtableClass.py}.
+\subsection{Test descriptions}
+In the following section we will describe the tests that can be performed and what kind
+of problems they can identify. There are five types of tests:
+\begin{itemize}
+\item Smart test
+\item SIP test
+\item GSM test
+\item Everything test
+\item Manual test
+\end{itemize}
+Each test will be described in the next subsections.
+\subsubsection{Smart test}
+\par The \emph{smart} test is not called smart without a reason. It tries automatically to identify
+problems inside of the telecommunication network. The user is not required to define what kind
+of tests have to be performed. In the first part the test software communicates with the
+database to see what systems are available. In the next step it performs a call from the
+University telephone system to a random local cell phone\footnote{Local cell phone or
+local GSM network means our University GSM Network or RZ GSM.}
+inside of our University GSM network.
+While executing this task, automatically the Asterisk server, OpenBSC and a random nanoBTS
+(or the one cell phone in RZ) are tested. The next task to be performed in the smart test,
+a randomly selected cell phone inside of our local GSM network will try to call: a random
+cell phone within the external (O2, Vodaphone,E-Plus or T-Mobile) or local GSM network.
+This might test the external network and will test it with high probability, however the
+probability exists to make a local to local GSM test call. In the third task, we perform
+a test where we call from the landline a random cell phone inside of our local GSM network.
+In the fourth or last task, we call from SIP to the service we did not test yet (e.g.
+if we did not test the external GSM network using the second test task, then in this last
+task we will exploit it). After the smart test had been completed you will be presented
+with the results.
+\subsubsection{SIP test}
+The \emph{SIP} test option will perform test in such a way that all the SIP subsystems are
+tested (SIP and University telephone network). It will try to identify if there are any
+problems on the Asterisk server and our University telephone network, including incoming and
+outgoing calls from the SIP side.
+\subsubsection{GSM test}
+In the \emph{GSM} test both GSM networks get tested, the local and the external GSM network.
+We test the nanoBTS controller boxes (i.e. BeagleBoards) as well. Using this test, both incoming
+and outgoing calls are performed, we can detect possible errors on the OpenBSC and the nanoBTS.
+\subsubsection{All test}
+The \emph{All} test selects all the given tests and executes them step-by-step. It is the test
+that takes the greatest amount of time. While the test are performed, results are
+immediately printed in the terminal window or on the web site.
+\subsubsection{Manual test}
+The \emph{Manual} test as the name itself says, is the test where you can manually select
+what kind of tests you want to be performed.
+\newpage
+\subsection{Result descriptions}
+In the following table one can see the messages returned by the test software!
+These messages should guide the test user operator to debug the system.
+
+\begin{table}[h]\footnotesize
+ \begin{center}
+ %\caption[]{Table of error descriptions}
+ \begin{tabular}{| l | c | l | }
+ \hline
+ \textbf{Number} & \textbf{Code} & \textbf{Code number description} \\ \hline
+ 1 & 200 & Call was OK \\ \hline
+ 2 & 604 & General Handler Error: Destination handler did not respond. Timeout \\ \hline
+ 3 & 998 & General Handler Error: Could not connect to the destination handler! \\ \hline
+ 4 & 605 & General Handler Error: Caller handler did not respond. Timeout \\ \hline
+ 5 & 999 & General Handler Error: Could not connect to the caller handler! \\ \hline
+ 6 & 486 & Call Failed \\ \hline
+ 7 & 333 & Could not establish a connection to the database! \\ \hline
+ 8 & 100 & Missing account detail \\ \hline
+ 9 & 402 & Payment Required (E-Plus Card) \\ \hline
+ 10 & 801 & Connection to caller established, but the device does not respond \\ \hline
+ 11 & 802 & Connection to destination established, but the device does not respond \\ \hline
+ 12 & 501 & Destination server Internal Error \\ \hline
+ 13 & 502 & Caller server Internal Error \\ \hline
+ %\hline
+
+ \end{tabular}
+ \end{center}
+\end{table}
+
+
+
+\clearpage
+\newpage
+\subsection{Using the software}
+In this section, you will be taught step by step how to use our test software. There are two options to run our test software, from the web site or the terminal.
+The first is easier, but the second is easy as well however requires terminal skills.
+
+\subsubsection{Web site guide}
+Once you enter the address in the address bar of your browser (e.g. \emph{https://localhost/\\testsoftware}).
+You will be required to enter your username and password for the web page\footnote{The username and password creation process is explained in section 7.2.2.}.
+If you entered the correct username and password you should see the same image as in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website1.png}
+ \caption[]{Web page of test software}
+\end{figure}
+Here you can choose what kind of test you want to perform or maybe if you want to configure the devices (manually or automatically).
+If you press the ``Smart test'' button, you have to wait a few moments and the results should appear in a short amount of time.
+However, if you pressed the ``Choose the test'' button, you will be presented with a new page, given in figure 28.
+You will have to select the tests you want to perform manually or to press on the left side one of the given buttons for different
+tests. You can choose between ``SIP Test'', ``GSM Test'', ``Check all'' and ``Uncheck all''. ``Check all'' will select all the possible
+tests, whereas ``Uncheck all'' will deselect all of them. After you finished the procedure of selecting the tests, you should press the
+``Submit'' on the left side. Wait a few moments and the results will start to appear in real time. After the table on the left is filled
+(i.e. after all the tests have been completed) a result image will be generated on the right side, can be seen in figure 20. However, if
+your pressed the ``Device configuration'' button, then you will end up on a page as given in figure 30.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website2.png}
+ \caption[]{Manually selecting the tests}
+\end{figure}
+
+If you press the ``Automatic configuration'' button, the test software will try automatically to match your cell phones with
+their port addresses and numbers. However, if the automatic matching does not work, you will have to manually configure it.
+You can do it by entering all the required information on the web site, as in figure 31. Once you correctly filled in the required
+information, you should press the ``Submit'' button.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{webpageReport.png}
+ \caption[]{Result web page}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website3.png}
+ \caption[]{Device configuration web page}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website4.png}
+ \caption[]{Manual device configuration page}
+\end{figure}
+%\clearpage
+\newpage
+\subsubsection{Terminal guide}
+In the following text, we will guide you and show you step-by-step how to use the test software from the terminal. All you have to
+do is just type the command for starting the test software in the folder where it is located, \emph{./gsmselftest.py ---option} (keep
+in mind there are two dashes before \emph{option}).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{terminalCommand.png}
+ \caption[]{Test software terminal options}
+\end{figure}
+You can perform the tests manually by typing what you want to test or by choosing one of the predefined tests. For example, you
+want to test manually does the SIP work with the University telephone network, you would type the following: \emph{./gsmselftest.py --db sip unisip}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{resultterminal.png}
+ \caption[]{Example results from the terminal screen}
+\end{figure}
+After the tests have been performed the results will be displayed. Green result text means the test was performed successfully and red result
+text means that something is not working properly.
+
+If you need to configure the cell phones manually or automatically, you can do it by typing: \emph{./gsmselftest.py --devconf} (keep
+in mind there are two dashes before \emph{devconf}). Then you can press ``a'' on the keyboard for automatic configuration or ``m'' for
+manual configuration. One should keep in mind that the terminal test software can be started even through \emph{ssh}, however with an
+additional command \emph{-X}\footnote{For example: ssh -X username@address}.
+\begin{figure}[htb]
+ \centering
+ \includegraphics[width=100mm]{devconf.png}
+ \caption[]{Test software device configuration from terminal screen}
+\end{figure}
+
+\clearpage
+\newpage
+\section{Conclusion}
+As a result of our successfully finished team project, we had felt how it is to work
+in a team. We had learnt how to confront various software and hardware issues. The problems
+were broken into smaller fragments and the solutions were derived in a step-by-step approach.
+\par While designing the software, we kept in mind that every single step should be well thought-out,
+documented, tested and validated. At the end we joined all the ``black-boxes'' together
+into one big piece of software. We fulfilled our stated requirements and goals.
+\par Despite the fact that our test software will be used by well educated engineers, we may
+conclude that all the way along we thought about the usage-simplicity, safety and security
+of our product. Our team members were enthusiastic about the idea that our team project will
+contribute to a better performance and quality of the overall telecommunication network,
+for all of the University staff and our colleagues, the students.
+\newpage
+
+
+
+%bibliography start
+\begin{thebibliography}{9}
+
+\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 10.06.2011, available at
+\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
+
+\bibitem{python} \emph{Python Programming Language - Official Website}, accessed on 10.06.2011, available at
+\url{http://www.python.org/}.
+
+\bibitem{mysqlManual} \emph{MySQLdb User's Guide}, accessed on 05.06.2011, available at \\
+\url{http://mysql-python.sourceforge.net/MySQLdb.html}.
+
+\bibitem{wiki} \emph{[2011] GSM Selftest - Wiki - Lehrstuhl f\"{u}r Kommunikationssysteme}, accessed on 20.09.2011, available at \\
+\url{http://lab.ks.uni-freiburg.de/projects/gsm-selftest/wiki}.
+
+\bibitem{socket} \emph{17.2. socket - Low-level networking interface}, accessed on 20.06.2011, available at
+\url{http://docs.python.org/library/socket.html}.
+
+\bibitem{spin} M. Ben-Ari \emph{Principles of the Spin Model Checker},
+Springer Verlag, Weizmann Institute of Science, Israel, ISBN: 978-1-84628-769-5, 2008.
+
+\bibitem{sshTunnel} R. Natarajan, \emph{3 Steps to perform SSH login without password using ssh-keygen \& ssh-copy-id}, accessed on 18.08.2011, available at
+\url{http://goo.gl/fX68N}.
+
+\bibitem{https} P. Bramscher, \emph{Creating Certificate Authorities and self-signed SSL certificates}, accessed on 05.09.2011, available at
+\url{http://www.tc.umn.edu/~brams006/selfsign.html}.
+
+\bibitem{htaccess} \emph{EnablingUseOfApacheHtaccessFiles}, accessed on 18.08.2011, available at
+\url{https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles}.
+
+\bibitem{pChart} \emph{pChart}, accessed on 15.08.2011, available at
+\url{http://www.pchart.net/}.
+
+\bibitem{beagleDataSheet} \emph{BeagleBoard System Reference Manual}, accessed on 20.06.2011, available at
+\url{http://beagleboard.org/static/BBSRM_latest.pdf}.
+
+\bibitem{proctitle} \emph{setproctitle 1.1.2}, accessed on 20.10.2011, available at
+\url{http://pypi.python.org/pypi/setproctitle}.
+
+\bibitem{pjsip} \emph{Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication}, accessed on 20.10.2011, available at
+\url{http://www.pjsip.org/}.
+
+%bibliography end
+\end{thebibliography}
+
+%end of the document
+\end{document} \ No newline at end of file
diff --git a/documenting/Report/test.tex.bak b/documenting/Report/test.tex.bak
new file mode 100644
index 0000000..c6faea2
--- /dev/null
+++ b/documenting/Report/test.tex.bak
@@ -0,0 +1,1326 @@
+\documentclass[a4paper, titlepage, oneside, headsepline, footsepline]{scrartcl}
+%PACKAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{lscape} %for the landscape pages it is used
+\usepackage[english]{babel} %what language are we using
+\usepackage[latin2]{inputenc} %what alphabet
+
+\usepackage[tt]{titlepic} %used for adding the title image
+\usepackage{graphicx} %used for adding images
+\usepackage{url} %used for the url in bibliography
+\usepackage{lastpage} %give me the total number of pages, used in footer: \pageref{LastPage}
+
+\usepackage[T1]{fontenc} %used for fonts
+\usepackage{scrpage2} %used for making headers, footers and correct margins
+%\usepackage{hyperref} %used for the linking of table of content
+
+%information for the PDF
+\usepackage[pdftex, %used for adding pdf information
+ pdfauthor={Refik Hadzialic, Tri Atmoko},
+ pdftitle={Software for self-testing of the Telecommunication network of University of Freiburg},
+ pdfsubject={Telecommunication network testing software},
+ pdfkeywords={telecommunication;network;networking;linux;ubuntu;university;freiburg;python;tcp/ip;security;gsm;sip;voip},
+ pdfproducer={Latex with hyperref, or other system},
+ pdfcreator={pdflatex, or other tool}]{hyperref} %used for the linking of table of content
+
+
+
+
+
+\hypersetup{ %setting up the look of the links
+ colorlinks,
+ citecolor=black,
+ filecolor=black,
+ linkcolor=black,
+ urlcolor=black
+}
+
+\usepackage{color} %used for highlighting source code
+\usepackage{listings} %used to make a box with source code
+\usepackage{fancyvrb}
+\DefineVerbatimEnvironment{code}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{example}{Verbatim}{fontsize=\small}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE LOOK OF THE PAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{scrheadings}
+
+\renewenvironment{abstract}
+ {\begin{center}\large\textbf{}\noindent\end{center}}{\vspace{2\baselineskip}}
+
+% Disable single lines at the start of a paragraph (Schusterjungen)
+\clubpenalty = 10000
+% Disable single lines at the end of a paragraph (Hurenkinder)
+\widowpenalty = 10000 \displaywidowpenalty = 10000
+
+\setlength{\parskip}{0.01\baselineskip}
+\textheight = 620pt
+
+\ohead{Software for self-testing of the Telecommunication network of University of Freiburg} %make the header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE THE STUFF FOR CODE
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lstset{ %
+%language=Python, % choose the language of the code
+columns=fullflexible,
+keywordstyle=\color[rgb]{0.608,0.561,0.008},
+commentstyle=\color[rgb]{0.25,0.5,0.35},
+stringstyle=\color[rgb]{0.25,0.35,0.85},
+basicstyle=\footnotesize,%\scriptsize % the size of the fonts that are used for the code
+%numbers=left, % where to put the line-numbers
+numberstyle=\footnotesize, % the size of the fonts that are used for the line-numbers
+stepnumber=1, % the step between two line-numbers. If it is 1 each line will be numbered
+numbersep=8pt, % how far the line-numbers are from the code
+backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}
+showspaces=false, % show spaces adding particular underscores
+showstringspaces=false, % underline spaces within strings
+showtabs=false, % show tabs within strings adding particular underscores
+frame=single, % adds a frame around the code
+tabsize=2, % sets default tabsize to 2 spaces
+captionpos=b, % sets the caption-position to bottom
+breaklines=true, % sets automatic line breaking
+breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+escapeinside={\%}{)} % if you want to add a comment within your code
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\newcommand{\titleOfProject}{Software For Self-Testing Of The Telecommunication Network Of University Of Freiburg}
+
+
+
+%begin of the document
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+
+
+
+%make the title page
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\titlepic{\includegraphics[width=90mm]{uniLogo2.png}}
+\title{Team Project \\ ``\titleOfProject''} % type title between braces
+\date{\today} % type date between braces
+\author{Refik Had\v{z}iali\'{c}\\ Tri Atmoko } % type author(s) between braces
+\department{\vspace{1\baselineskip} \large Albert-Ludwigs-Universit\"{a}t Freiburg \\
+Lehrstuhl f\"{u}r Komunikationsysteme\\
+Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Meier \\ Dennis Wehrle \\ \vspace{1\baselineskip} Sommersemester 2011}
+
+\maketitle
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%add the table of contents
+\tableofcontents
+
+%new page to start with
+\clearpage
+
+
+
+
+% first chapter
+\section{Introduction and Motivation} % chapter 1
+In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems from an external perspective and infer the results out of our findings.
+Before we had started working on our project, we had to analyze the overall network to come up with the test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
+Gradually we implemented a bit-by-bit of the final software. In the following chapters we will describe in more detail our approach to the problem and how each subsystem works.
+This particular report and our wiki page should be a sufficient guide and manual for understanding, running and continuing the development of our test software.
+Certainly, we had a lot of fun while working on the project due the fact that we lost one team member.
+We would like to thank the whole department for the free coffee and their support, especially
+Konrad Maier, Dennis Wehrle and Richard M. Zahoransky, without their support this project would not
+end up this way.
+\clearpage
+\section{Requirements} % chapter 2
+At the start of the project the requirements were not completely known but as the time had passed we redefined our requirements and goals.
+The first and the most important part at the start was to identify the key goals of our team project. The basic goal of our team project was to build a
+test software system which could tell an operator user what part of the system is not properly working in our University telecommunication network.
+Konrad and Dennis suggested us to analyze figure 1 and depending on it to build our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{BigPicture_new1.png}
+ \caption[]{Overview of the Freiburg University telecommunication network \cite{network}}
+\end{figure}
+Our first attempt was to see what could we test without having access to the system. We installed numerous communication programs to see what others have done.
+After gaining access to the communication software, we had decided to build most of the test software ourselves. Libraries, which were used,
+were only the ones we could not develop ourselves because of the time-span of our team project.
+\subsection{Logical and algorithmic requirements}
+Despite the software and hardware requirements, the logic in our team project may be considered as the most important part.
+Controlling the software and hardware in a specific manner was one of the requirements in our team project.
+Moreover, we were required to draw a use case diagram and a simple test case diagram so that we could better understand all the problems we had to deal with
+but also to easier follow the development of our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{activity_diagram.png}
+ \caption[]{Simple algorithmic overview of a test case}
+\end{figure}
+\subsection{Software requirements}
+Afterwards, as we had defined our logical approach to the problems, we had to choose the programming language to realize our ideas. Since we had the freedom of choice, between the three suggested programming languages
+Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
+therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
+Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems.
+\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
+The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results.
+\par In addition it was required to log all the past tests. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
+(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system.
+We decided to use MySQL since it is open source and well supported. However, one should keep in mind the test results are only stored in the database in case the test was started from the web site.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{test_Use_case.png}
+ \caption[]{Test case diagram}
+\end{figure}
+\subsection{Hardware requirements}
+Likewise the software requirements, we had hardware requirements as well. We were required to identify the hardware we will need to perform the tests.
+It was important to find old and cheap cell phones that could support \emph{AT Modem} commands because our budget was limited.
+\par A problem we had to deal with at the start was that the base stations are located at different geographical points which were not near to each other.
+No one should go everyday to the rooms where our cell phones are located only to change or charge the batteries.
+In the cable subsection we describe our approach to the charging battery problem. As we defined our requirements we continued with the process of developing the test software.
+During the development time we refined our requirements. In the next chapters we will explain our database, software and hardware design ideas.
+\newpage
+\section{Database design}
+As we mentioned in the software requirements section, we decided to use MySQL as our database system for storing the test information and results.
+It was not difficult to decide what database to use, since MySQL is one of the most supported database and one can find a library to use it with major programming languages.
+The key point in the design of our database was the simplicity and speed of accessing the data. We had decided to use seven tables. In the following paragraphs we will explain each table separately and its usage.
+The database design can be seen in figure 4.
+
+\par The \emph{PingResultTable} table has six attributes (\emph{taskNo, sipServer, sipGate, unisip, gsmBox1, gsmBox2}), all of integer type.
+The \emph{taskNo} attribute identifies the test number but not a single test (e.g. an operator user has selected three different tests to be executed, all of the three tests will have the same \emph{taskNo} to identify them together as belonging to one test group and \emph{taskId} identifies each single test and will be explained later).
+\emph{sipServer} represents the Asterisk server ping result. \emph{sipGate} is used to represent the SIP Gate server for the landline calls (\url{http://www.sipgate.de}). \emph{uniSip} represents the ping results for our local University telephone network SIP server.
+\emph{gsmBox1} and \emph{gsmBox2} are the two single-chip Linux computers (BeagleBoard), that control two cell phones each one (i.e. they are also known under the name of \emph{nanoBTSx controller}).
+\emph{taskNo} is the primary and unique key in the table \emph{PingResultTable}. Rest of the attributes (i.e. \emph{sipServer, sipGate, uniSip, gsmBox1, gsmBox2}) are used to insert the ping results, if the assigned servers are reachable or not.
+Before any test attempt is made, our test software first tries to ping the servers. These results are then stored in the \emph{PingResultTable}.
+
+\par The \emph{ErrorCodeTable} table defines all the possible test results in the system, in other words it represents a list with error codes with their appropriate descriptions and meanings. It consists of two attributes (\emph{errorcode} and \emph{description}), the first is of integer type and the second of varchar type (the description message is allowed to be only 100 characters long).
+The \emph{ErrorCodeTable} table is used by the main test software (i.e. controller) to report the operator user what kind of error had appeared in the system.
+
+\par The \emph{DeviceAddressTable} is the table containing the location and identification data for each server and device. The table consists of seven attributes, \emph{deviceName, portName, number, lastChange, username, password, server}.
+\emph{deviceName} is the attribute with the name of the device or server (e.g. GSMRZ1 or landline), it is of varchar type. \emph{portName} is the attribute field with the location address for a cell phone (e.g. \emph{/dev/ttyUSB1}) or 'localhost' instead of NULL value for a server, it is of the varchar type.
+\emph{number} represents the number of the used service (i.e. number of the cell phone, SIP, etc.) and is of varchar type.
+\emph{lastChange} is a time value and represents the date and time the given entry was modified (we had plans in future versions of our test software that if an device gets a new IP address assigned it automatically changes it in the database).
+\emph{username} is the field with the username stored in for a server/service, like SIP and landline. \emph{password} attribute stores the password information for the given service. The \emph{server} attribute stores information about the location of the server, IP or DNS address of the server. All three fields, \emph{username}, \emph{password} and \emph{server} are of varchar type.
+The information stored in the given table is used by the test software to obtain usernames, passwords and addresses of the used services for the tests.
+
+\par The \emph{ResultTable} table is used by the test system to store final results for the performed tests. Our given table consists of two fields, \emph{taskID} and \emph{result} and both are of integer type. For each test entry with unique \emph{taskID} an error code is assigned in the \emph{result} field,
+depending on the test results. Error codes found in the \emph{ErrorCodeTable} table can be only assigned to this field.
+
+\par The \emph{TempTaskTable} table represents the table with the tasks the system has to execute next time the test software is started. The given table gets new data every time an operator user submits one or more test cases from the website to be executed. \emph{TempTaskTable} includes four attributes, \emph{taskID, taskNo, from, to}. Former two are of integer type and later two of varchar type.
+\emph{taskID} and \emph{taskNo} identify the test task to be executed, \emph{taskID} is the unique primary key. \emph{from} and \emph{to} fields have to match the names given in \emph{DeviceAddressTable.deviceName}, these two attributes specify the caller and callee devices/services. Consequently, after the tasks get executed, the test tasks are removed and the given table is empty again until next tests are added to it.
+However, all the test tasks even after deleting them from \emph{TempTaskTable} are kept in the \emph{TaskTable}. The reason why the authors of this project divided it into two tables was because of the database row selection speed. We had made the assumption that with time the database size will grow and therefore the database speed will not be the same as during the development period.
+
+\par The \emph{TaskTable} table, as mentioned before contains all the tests ever performed from the web site. It is made out of five attributes, \emph{taskID, taskNo, from, to, timestamp}. The first four fields are the same as in \emph{TempTaskTable}, however the last one, \emph{timestamp}, is used to record the exact time when the test was performed.
+\par The \emph{GSMListPrefix} table contains the data about the GSM networks and their prefixes. It consists of two
+attributes, both of varchar type, \emph{providerName} and \emph{prefix}.
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{DBRelationship.png}
+ \caption[]{Database relationship diagram}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+
+
+\section{Software design} % section 2.1
+Software design was the next step after we analyzed the problem and developed a plan how to proceed further. Good analysis and planning with poor algorithmic implementation is valueless.
+During the work on the project, we had spent most of our time for software design.
+We kept in mind that our software should satisfy major paradigms of software engineering,
+like compatibility, extensibility, modularity, relliability, security, fault-tolerance and usability.
+The software engineering design concepts were achieved following way:
+\begin{itemize}
+\item Compatibility - we used Python and MySQL which are multiplatform and work on major OS
+\item Extensibility - new parts of code can be easily added by just modifying the classes
+\item Mudalarity - the components are independent black boxes, they are tested and validated independently
+\item Reliability - we use mutex locks to perform tests and database transaction operations to insert data into the database
+\item Security - all communication channels, as well as the access to the web site, are encrypted with asymmetric key cryptography
+\item Fault-tolerance - the classes were designed to continue operating even if error events appear and handlers are logging all events
+\item Usability - we tried to create a simple user interface and easily to use for everyone
+\end{itemize}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{activityControllerEdited.png}
+ \caption[]{Working principle of the test software}
+\end{figure}
+
+\par The basic principle how the test software works can be seen in figure 5. The test software is
+started either manually from the terminal or using the web site. When the test software
+is started manually it is database dependent as well and thefore could not be used if the
+database is being maintained or not working. If it is started from the web site it
+connects to the database to get its tasks which have to be performed. After receiving
+the tasks it makes a simple network test by pinging all the servers. The ping results
+are stored in the database (in case the test was started from the web site). Then it
+proceeds with the tests by connecting itself to the handlers and sending them commands
+to perform the tests\footnote{Before it connects to the handlers, it uses the ping
+results to see is the service/device physically connected to the network.}.
+At the higher level, these commands can be seen as requests for being the
+callee and caller. Meanwhile the handlers send their test results to the main
+test software which in return decides if the test result was successful or not.
+The result is written to the database (in case the software was started from the website),
+otherwise the results are displayed in the terminal window and the user who started
+it manually can see the test results. We will proceed with introducing the classes.
+The software class diagram can be seen in the following figure. More details for the
+classes, like the input/output can be found on our project's wiki page \cite{wiki}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{classDiagram.png}
+ \caption[]{Class diagram (some classes were excluded)}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+\newpage
+\subsection{Database access} % subsection 2.1.1
+Accessing the database is of critical value to our project, therefore we had developed our own class that limits the access to the database. In the process of developing our own class we used the MySQLdb library in Python \cite{mysqlManual}.
+The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete back-trace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{dbClass.png}
+ \caption[]{Class diagram for the dbClass}
+\end{figure}
+The method names are self-explanatory and do not require extra explanations. All the outputs produced by the class can be found on the project wiki page \cite{wiki}.
+\subsection{Controlling the cell phones}
+Our first version of the developed program code for controlling the cell phones used predefined timed values
+to send commands instead of using a state controlled approach to confirm that every command was successfully received and executed by the cell phone.
+It meant we had to make an enormous number of assumptions. In comparison to our second approach, to build a state controlled cell phone control class,
+our first approach was inferior and slower. The state controlled method connected two cell phones, on the same base station, up to 15 times faster than the timed approach.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=80mm]{serialPort.png}
+ \caption[]{GSM class diagram for controlling the cell phones}
+\end{figure}
+One can easily apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception.
+A timeout exception gets raised when the cell phone does not respond (i.e. when the cell phone enters a deadlock or delayed state). We had used the serial port library inside of Python although we use USB cables to connect to our cell phones. One should
+be aware that our USB cables create a virtual serial port. More details on class design and an example can be found on our project wiki \cite{wiki}.
+\subsection{Client and Server class}
+Our socket communication code is based on the example given in the Python socket manual \cite{socket}.
+We extended it into two classes, a client and a server class. We had used the TCP protocol to base our two classes on\footnote{TCP is reliable compared to UDP (i.e. transmitted packets get also delivered),
+packets are ordered when received and data are received in a stream (i.e. multiple packets can be read at once).}.
+The Server class can be seen in the following figure. The server class is implemented to accept only local connections\footnote{More details are given in the section 7.1}.
+First we determine our IP address and then create the socket to listen only for the same IP address (with a different IP address than the selected one a connection cannot be even established).
+One has to define the port on which the server object should listen.
+When receiving data one can easily define the timeout to be raised if data are not received in the timeout range or set it to \emph{0} to infinitely wait for the buffer to be filled with received data. While testing the server class we had the problem to listen on the same port if the application was forcibly\footnote{Manually closed using CTRL+C and run again.} restarted in less than 60 seconds. We got the error message: \emph{"Address already in use"}.
+This is not known as error behavior but rather an option to help the server to catch lost live packets (i.e. packets that are still in the network looking for it is goal destination).
+We solved the problem by changing the socket options with the \emph{SO\_REUSEADDR} parameter. This enabled us to get around the error when we tried to restart our server application.
+Before solving the problem without using the socket parameter, we had another solution to get around this problem by killing the application running the port, this old method is obsolete now.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[scale=0.8]{serverClass.png}
+ \caption[]{Server class, used by the server application}
+\end{figure}
+In the process of testing the client class we did not have any major problems. The only major flow we had to debug was when one of the sides disconnects that we get out of the waiting loop if the timeout variable was set to \emph{0} (i.e. infinite waiting loop).
+The client class can be seen in the following figure. To initialize the client object one needs to define the IP address and the port of the server application listening on it.
+\begin{figure}[hb!]
+ \centering
+ \includegraphics[scale=0.5]{ClientClass.png}
+ \caption[]{Client class, used by the client application}
+\end{figure}
+Once an instance of it is created and loaded with the IP address and the port, one needs to call the \emph{connect()} method.
+The method will produce an integer based on its connection state. Output information and the programming code can be found on our project wiki page \cite{wiki}.
+\subsection{Ping class}
+Before making any test and establishing a connection we were required to ensure that the server is online. The best way to assess the liveness property was to ping the server computer running the required service. Once the class is properly defined, we could easily set the number of ping tries.
+A ping timeout response was set up to 2 seconds. For more details and insights, one can read more about it on our wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=70mm]{ping.png}
+ \caption[]{Ping class, used by test software}
+\end{figure}
+\subsection{Data logging}
+If errors appear it is important to reconstruct the events that led to the misbehaviour of the software. One of the best ways to reconstruct the events was to log
+events for different blocks of programming code.
+We had used the logging class to follow our handler code run on the BeagleBoard. In case there is an error we could look inside of the log files and track the error.
+How the class works and what kind of outputs it produces can be found on our project wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{logging.png}
+ \caption[]{Logging class}
+\end{figure}
+\subsection{SSH Tunnel Class}
+Since security played an important role in our team project. We decided to encrypt all of our data that was not processed on our server computer.
+The simplest solution to this problem was to build an SSH Class that could open and close a local forwarding port.
+All data sent through the created port is encrypted until it gets to its destination location.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{sshTunnelClass.png}
+ \caption[]{SSH Tunnel class}
+\end{figure}
+\subsection{USB Cell phone detection class}
+Since we had used cables to connect the cell phones with the computer, usually the devices
+got their own port addresses. They were automatically assigned by the operating system,
+either after the cables were plugged into the USB port or after a system reboot.
+One of the problems we had to deal with was assigning the right cell phone
+(i.e. with the appropriate GSM network) to the corresponding port address.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{usbDetectClass.png}
+ \caption[]{USB cable detection class}
+\end{figure}
+The operating system randomly assigned the port names after every reboot.
+We were looking for a solution to prevent this misaddressing of the devices.
+Our solution was to recognize every device and update the port address in the database.
+The principle how we identify the cell phones is by their calling numbers in the database.
+More details can be found on our project wiki page \cite{wiki}.
+\subsection{Truth table class}
+The truth table class was built to identify the broken and working parts of the system.
+It requires the list with test results to be present to be operable.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{trueTable.png}
+ \caption[]{Truth table class}
+\end{figure}
+Then the class tries to identify the broken parts of our telecommunication network.
+The class can easily identify how many nanoBTSs are installed in the network and
+derive a decision which part of the network is broken.
+All the test results are stored in a list and can be easily read by calling the
+\emph{initTrueTable(x)} function. More details can be found on our project wiki page \cite{wiki}.
+\subsection{Init Test class}
+The main purpose of the class is to get device data from the database and to process it.
+The processed data get forwarded to the controller class and in the end the class
+fetches the results from the test. This class contains the \emph{smart test} functionality.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{initTestClass.png}
+ \caption[]{Init test class}
+\end{figure}
+It selects automatically the important tests to perform. In the next step it
+tries to identify the problem in the network.
+More details can be found in the \emph{smart test} description.
+\subsection{Controller class}
+The controller class is used to assign jobs to handlers (in other words, which one is
+going to be the caller and callee). Simultaneously, it defines the port addresses for
+the communication between the handlers and the main test software (controller).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{controllerclass.png}
+ \caption[]{Controller class}
+\end{figure}
+If the callee or the caller are nanoBTS controller boxes (i.e. BeagleBoards outside
+the Rechenzentrum), it will first create an SSH connection to make a tunnel before
+the local socket connection is created. Then the controller class sends all the
+required data regarding the test tasks to the handlers.
+
+\clearpage
+\section{Hardware design}
+In our team project we had the option to choose all the required hardware ourself beside the two BeagleBoards, which we were supplied by Konrad and Dennis.
+Since one of the project goals was to reduce the costs as much as it was possible, we had tried to use some of the leftovers found in our lab.
+
+\subsection{BeagleBoard}
+``The BeagleBoard is an OMAP3530 platform designed specifically to address the Open
+Source Community.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{bb.jpg}
+ \caption[]{BeagleBoard, a Linux-on-chip board where our controller software runs the GSM device }
+\end{figure}
+It has been equipped with a minimum set of features to allow the
+user to experience the power of the OMAP3530 and is not intended as a full development
+platform as many of the features and interfaces supplied by the OMAP3530 are not
+accessible from the BeagleBoard'' \cite{beagleDataSheet}.
+We run on it a special precompiled version of Ubuntu for the ARM processor type. The Linux system boots up from an SD Card.
+The board has an USB hub and network port attached to it. In our project it is connected to our
+internal university LAN network and to a cell phone. We positioned the two BeagleBoards in rooms where
+we had LAN access and GSM signal coverage of our two local base stations.
+
+\subsection{Cell phones}
+Our first attempt was to control a Nokia cell phone 3310 with the supplied USB connection cable.
+The protocols used by old versions of Nokia cell phones, as the 3310, use the F-Bus protocol. It was not easy to work with.
+After performing various experiments we succeeded to send and to read SMS messages. Later on we found out that it was not possible to
+send commands for receiving and making the calls. In the meantime we found two Siemens phones, one M45 and S55.
+The first one, Siemens M45, had a cable supplied with it and it was not difficult to control it with the standard set of AT modem commands.
+At the start we did not have a cable supplied for the Siemens S55 phone. We controlled it over the Bluetooth port.
+
+\subsection{Cables for the cell phones}
+Due to the fact that we had used 5 cell phones on a single computer, the best solution was to order 5 USB cables.
+Konrad bought 5 cables for 5 Siemens S55 cell phones. All of the cables have an USB2Serial chip converter inside of them.
+Once they were plugged into the USB port, Ubuntu automatically recognized the cables and installed the drivers.
+The virtual serial ports were created and could be found on \emph{/dev/ttyUSBx}, where $x$ is the automatically assigned number for the port.
+Some of the cables had the capability to charge the Siemens S55 phones.
+Konrad had opened several cables to solder the power supplies to some contacts and the problem was solved for all of the cables.
+\subsection{Server}
+We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Apache web server and MySQL.
+Afterwards we installed the Python on it and all the required libraries\footnote{Required libraries are mentioned in section 9.1.}.
+\clearpage
+
+\section{Communication protocol}
+A communication protocol represents a set of well defined rules by whose help two or more computing systems exchange information inbetween.
+When defining these rules, it is important to define a limited state space for every possible event, no matter did we get the appropriate
+response from the other side. Our approch to this problem was to build a simple synchronous protocol, where every expected message is
+confirmed or otherwise the connection between two sides is immediatelly terminated. Since designing protocols is a demanding and challenging
+topic which requires years of experience and verification, we do not expect that we had developed the best possible and an optimum
+protocol\footnote{Design concepts and paradigms for the protocol design have been used from the
+``Network Protocol Design and Evaluation'' course, lectured by Dr. Stefan R\"{u}hrup}.
+In the following paragraphs we will try to clarify how our protocol works. Before we start to go into detail how the protocol works,
+it is important to remember that we differentiate two sides, handler and the controller side. The handler side represent the device
+that physically handles the call (e.g. the BeagleBoard) whereas the controller (i.e. the main test software), is the test software
+controlling the handler side and assigning the task to it.
+
+\subsection{Communication between the handler and controller}
+The handler side is always in the waiting mode, by waiting we denote the mode where the socket is already created and it is waiting
+for a connection to be accepted at the defined port. The controller initiates a socket connection to the two handlers.
+Subsequently, after the connection has been established, it is waiting for a message to be received. The first message
+has to be 13 characters long and include the following content \emph{HELLO HANDLER}. Thereupon, after the message has
+been validated, the handler side sends the controller side a response, \emph{HELLO CONTROLLER}.
+We call this first message exchange the initialization. Now the controller side has to decide which of the two handler's
+will be the caller/callee whereas the other handler will be the opposite. Let's assume the controller sends to the first
+handler the message \emph{RECEIVER} and to the second one the message \emph{CALLER|\#}, replace the callee number with the \# sign.
+In the meantime, both handlers initialize the software required to make the call and to receive the call. Asynchronously they
+respond back to the controller their successful initialization. The successful initialization is reported by sending \emph{RECEIVER READY}
+and \emph{CALLER READY}. After receiving the mentioned messages, the controller first sends the callee handler the
+message \emph{RECEIVE START} and then to the caller handler, the message \emph{CALLER START}. As a result of these messages,
+the handlers enter the receiving, respectively calling state. In the given states two timeout timers gets activated.
+These timers are responsible for the case if the physical connection between the callee and the caller are not successfully
+established or terminated\footnote{The client and server classes responsible for the communication have timeout timers as well
+for the case if the connection between the controller and handlers are broken.}. Afterwards, depending if the physical connection
+between the handlers (i.e. the callee and the caller) was successfully established or not, the handlers report their
+coresponding state with a message to the controller. The message is of the form \emph{CALL OK}, meaning the handler successfully
+established a physical connection with the other handler, or of the form \emph{CALL NOT OK}, meaning a physical connection was
+not successfully established on the given handler. The controller considers only a test successful if both handlers report
+with \emph{CALL OK}. The test software ends the established connection with the handlers by sending them the \emph{TERMINATE CONNECTION}
+command. After the handlers have terminated the connection, they enter the waiting for a new connection state and the process starts
+from begining again. If the states are not entered in the specified order the connection is immediatelly terminated and
+the state machine is in the waiting for a new connection state\footnote{It cannot be seen in the protocol flowchart but one should
+keep in mind it works like a well defined state machine.}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{protocolCommunicationHandler.png}
+ \caption[]{Flowchart of the protocol on the handler side without the state representation}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerReceiver.png}
+ \caption[]{Flowchart of the protocol on the controller side for the caller without the state representation}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerCaller.png}
+ \caption[]{Flowchart of the protocol on the controller side for the receiver without the state representation}
+\end{figure}
+
+\subsection{Verification of the protocol}
+``SPIN is a model checker - a software tool for verifying models of physical
+systems, in particular, computerized systems. First, a model is written that
+describes the behavior of the system; then, correctness properties that express
+requirements on the system's behavior are specified; finally, the model
+checker is run to check if the correctness properties hold for the model, and,
+if not, to provide a counterexample: a computation that does not satisfy a
+correctness property.'' \cite{spin}. We modeled our simple protocol in SPIN using
+the programming language PROMELA \cite{spin}. Since PROMELA is similar to C it was
+not possible to ensure 100\% matching with Python but we had made the assumptions of it.
+We modeled both sides, server and client side. As well as the server side being a caller
+and a callee. It was important to find out if our protocol is deadlock or delayed state free.
+For more details our model can be found on our wiki project page with the PROMELA source code \cite{wiki}.
+We had built in a 50\% random probability that the call test will not be successful, to make the model even more
+realistic. Our protocol idea was deadlock free and the verification results prove it.
+After we had modeled the basic idea we had written the code that implements our idea. The Python code
+resembles some kind of a state machine which remembers the last state and what the next state should be in case
+of receiving corresponding message. Otherwise it enters the exit state and then the start state.
+
+\begin{lstlisting}
+(Spin Version 6.1.0 -- 2 May 2011)
+ + Partial Order Reduction
+Full statespace search for:
+ never claim - (none specified)
+ assertion violations +
+ cycle checks - (disabled by -DSAFETY)
+ invalid end states +
+State-vector 44 byte, depth reached 65, errors: 0
+ 40 states, stored
+ 3 states, matched
+ 43 transitions (= stored+matched)
+ 90 atomic steps
+hash conflicts: 0 (resolved)
+ 2.195 memory usage (Mbyte)
+unreached in proctype Server1
+ (0 of 36 states)
+unreached in proctype Server2
+ (0 of 36 states)
+unreached in proctype Client
+ (0 of 67 states)
+pan: elapsed time 0 seconds
+\end{lstlisting}
+
+\clearpage
+\newpage
+
+
+\section{Security and safety of the system}
+Safety and security of the software plays a major role in our project.
+It is of vital importance that only as few as possible people have access to our test system since the resulting data could be exploited to plan an attack
+(e.g. assume the University alarm system uses the SIP gateway to connect to the outside world and to alarm the police, if one knows that the SIP gateway is not working properly, a burglar could plan to rob the University building just at that moment). Therefore the choice to go Open Source is justified due to the fact that one should know how every single detail of the system works.
+All the time, while we were working on the project, we were made aware of this issue by Denis and Konrad.
+We decided to use asymmetric key cryptography, where each side has two keys (private and public). In the next sections we will explain in more details how we applied the methods.
+\subsection{Encryption of the communication channels}
+At first we thought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of Internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g.
+trying to open the port until the system runs out of memory and in our case the system which we used on the handler side was a BeagleBoard with ARM architecture running on a single chip TI OMAP processor, refer to the picture in figure).
+We had to eliminate even the slightest possible threat in return for spending more time for debugging the test software system. Despite we were aware of all these facts, we had to choose one of the plenty implemented encryption standards on Linux.
+Denis and Konrad suggested using the SSH Tunneling method.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{sshTunnel.png}
+ \caption[]{SSH Tunnel, all the communication inside the tunnel is encrypted }
+\end{figure}
+
+Using the SSH Tunnel port forwarding method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running).
+The SSH Tunnel port forwarding method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password every time we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}.
+This can be performed by executing the following commands in the terminal shell.
+One has to create first the private and public keys on the local machine(i.e. server computer, where the test software runs):
+
+\begin{lstlisting}
+refik@ubuntu:$ [Note: You are on local-host here]
+
+refik@ubuntu:$ ssh-keygen
+Generating public/private rsa key pair.
+Enter file in which to save the key (/home/refik/.ssh/id_rsa):[Enter key]
+Enter passphrase (empty for no passphrase): [Press enter key]
+Enter same passphrase again: [Press enter key]
+Your identification has been saved in /home/refik/.ssh/id_rsa.
+Your public key has been saved in /home/refik/.ssh/id_rsa.pub.
+The key fingerprint is:
+33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 refik@ubuntu
+\end{lstlisting}
+
+Then one needs to copy the public key to the remote machine (BeagleBoard) using ssh-copy-id:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
+refik@remote-host's password:
+Now try logging into the machine, with "ssh 'remote-host'", and check in:
+
+.ssh/authorized_keys
+
+to make sure we haven't added extra keys that you weren't expecting.
+\end{lstlisting}
+
+After we have created the public and private keys, and coppied the public key on the machine to which we want to connect, we can test if we can make an SSH connection to the remote machine:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh remote-host
+[Note: SSH did not ask for password.]
+
+refik@remote-host:$ [Note: You are on remote-host here]
+\end{lstlisting}
+The test was successful. We tested it with our SSH Tunnel port forwarding class and it worked perfectly.
+\subsection{Security on the web site}
+Aside from having secured the data communication channels between various parts of our software
+(the handlers and the controller), it was crucial to ensure all the communication between
+test user's browser and our server. Therefore we had used the \emph{https} protocol and
+the \emph{.htaccess} file to password protect the web site so only the privileged users
+have access to our test system.
+\subsubsection{Configuring the http secure protocol https}
+Securing the communication channels without making certain the web site is safe would be worthless.
+We decided to use the \emph{https} protocol instead of the \emph{http} since a person in the middle
+could sniff our data (e.g. a person is connected with his/her smart-phone over an unprotected wireless network) \cite{https}.
+At the same time the web site should be accessible only by the authorized personel. Our first approach to this
+problem was to build an PHP page with \emph{MD5} hashed passwords, however we got a suggestion by Konrad and Denis to
+use a safer encryption method implemented in the Apache web server software, \emph{.htaccess}. By using
+these two techniques we protected the web site of some vulnerabilities known to us. If the web site
+will be only accessed from our local university network, we can additionally add an IP filter mask as well.
+In the following paragraph we will explain our procedure how to generate the keys and to enable the https protocol.
+\par First we want to generate a server key by typing the following command:
+\begin{lstlisting}
+openssl genrsa -des3 -out server.key 4096
+\end{lstlisting}
+\par This will generate a 4096 bit long private server key, one is asked to enter two times a password for the \emph{server.key}.
+Using the generated private server key, we will create a certificate signing request, \emph{server.csr}. We were prompted with a series of questions
+like country, state, organization name and etc which we had to enter to resume.
+\begin{lstlisting}
+openssl req -new -key server.key -out server.csr
+\end{lstlisting}
+\par In the next step we had to sign the certificate signing request and enter the amount of days for how long it should be valid.
+In our case we entered the duration of one year, one can make it for longer periods as well (i.e. the amount of 365 has to be changed).
+\begin{lstlisting}
+openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
+\end{lstlisting}
+\par We were asked to enter the password again for \emph{server.key}. After we have completed this step we had to make
+a version of the \emph{server.key} which did not require a password, \emph{server.key.insecure} and we will rename the files appropriately.
+\begin{lstlisting}
+openssl rsa -in server.key -out server.key.insecure
+mv server.key server.key.secure
+mv server.key.insecure server.key
+\end{lstlisting}
+\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files: \emph{server.crt}, \emph{server.csr}, \emph{server.key} and \\ \emph{server.key.secure}. Now we need to enable the SSL engine on the Apache web server.
+We coppied \emph{server.key} and \emph{server.crt} into \emph{/etc/appache2/ssl}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2$ sudo mkdir ssl
+cp server.key /etc/apache2/ssl
+cp server.crt /etc/apache2/ssl
+\end{lstlisting}
+\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \\ \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlinked for loading)'' \cite{https}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo a2enmod ssl
+Enabling module ssl.
+See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
+Run '/etc/init.d/apache2 restart' to activate new configuration!
+\end{lstlisting}
+\par In the next procedure we had to establish a symlink from the 'available' default-ssl file to the 'enabled' file \cite{https}. Then we created a folder where our secured PHP files will be located (e.g. https://some-domain-name.com/test-software).
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl
+refik@ubuntu:/etc/apache2/ssl$ cd /var/
+refik@ubuntu:/var$ sudo mkdir www-ssl
+\end{lstlisting}
+\par We had backed up our old configuration files for the virtual hosts, for the case if we damage the Apache configuration files. Then we edited the \emph{default-ssl} file.
+\begin{lstlisting}
+refik@ubuntu:/var$ cd /etc/apache2/sites-available
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default default_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default-ssl default-ssl_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par Only the beginning of the file is listed here and we have modified the line starting with \emph{DocumentRoot}
+and \emph{<Directory /var/www/>} from \emph{DocumentRoot /var/www} to \emph{DocumentRoot /var/www-ssl}
+and from \emph{<Directory /var/www/>} to \emph{<Directory /var/www-ssl/>}
+(i.e. we had to redefine the location of our SSL directory).
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+<VirtualHost _default_:443>
+ ServerAdmin webmaster@localhost
+
+ DocumentRoot /var/www-ssl
+ <Directory />
+ Options FollowSymLinks
+ AllowOverride None
+ </Directory>
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+\par One should keep in mind that the port 443 should be free for Apache to use it. In the proceeding step we had to ensure that Apache listens on the given port for a \emph{https} connection.
+One could test that by going into the \emph{/etc/apache2/ports.conf}.
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+ # If you add NameVirtualHost *:443 here, you will also have to change
+ # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
+ # to <VirtualHost *:443>
+ # Server Name Indication for SSL named virtual hosts is currently not
+ # supported by MSIE on Windows XP.
+ Listen 443
+</IfModule>
+\end{lstlisting}
+\par In our case it was set up correctly, since the command: \emph{Listen 443} was present.
+In our last configuration step we had to edit \emph{default-ssl} file to define the correct locations of our keys and to ensure the SSL engine was turned on.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par The following part of the file had to be found and modified according to our locations:
+\begin{lstlisting}
+SSLEngine on
+
+ # A self-signed (snakeoil) certificate can be created by installing
+ # the ssl-cert package. See
+ # /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
+ # If both key and certificate are stored in the same file, only the
+ # SSLCertificateFile directive is needed.
+ SSLCertificateFile /etc/apache2/ssl/server.crt
+ SSLCertificateKeyFile /etc/apache2/ssl/server.key
+
+ # Server Certificate Chain:
+ # Point SSLCertificateChainFile at a file containing the
+\end{lstlisting}
+\par Finally we had configured our server and can proceed with the restart of the apache web server. We created a test web site \emph{/var/www-ssl/index.php} and navigated our browser to \emph{https://localhost}. The test was successful!
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo /etc/init.d/apache2 restart
+ * Restarting web server apache2 [Sat Oct 08 21:52:51 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
+ ... waiting [Sat Oct 08 21:52:52 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence [ OK ]
+refik@ubuntu:/etc/apache2/sites-available$
+\end{lstlisting}
+\subsubsection{Password protecting the web site using .htaccess}
+Aside from using a secure communication protocol on the web, \emph{https}, it is important
+to ensure that only permissioned users gain access to the web site. We had achieved it using
+the \emph{.htaccess} file. However, to enable the use of Apache \emph{.htaccess} files,
+we will have to reconfigure the Apache configuration files again. \emph{root} access will
+be required. First we have to edit the \emph{/etc/apache2/sites-available/default-ssl} file.
+Find the following lines and modify the \emph{AllowOverride None} to \emph{AllowOverride All}
+like in the given configuration segment:
+\begin{lstlisting}
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride All
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+This will tell Apache web server that it is okay to allow \emph{.htaccess} files
+to over-ride previous directives. We must reload the Apache web server before the
+changes can take effect. We can do it by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 reload
+\end{lstlisting}
+The next step is to go to the directory where our test software web page is located
+(e.g. \emph{/var/www-ssl/testsoftware}) and to create a file called \emph{.htaccess}.
+Please insert the following code segment inside the created \emph{.htaccess} file where
+\emph{/var/www-ssl/testsoftware/.htpasswd} is your full path address to \emph{.htpasswd}:
+\begin{lstlisting}
+AuthUserFile /var/www-ssl/testsoftware/.htpasswd
+AuthName "Authorization Required"
+AuthType Basic
+require valid-user
+\end{lstlisting}
+Then in the next step, create another file called \emph{.htpasswd}. After you have created it,
+we will add the usernames that should have access to the web site. We do that by typing the
+following command, where you can replace \emph{konrad} with any other combination of letters
+which will represent your username:
+\begin{lstlisting}
+refik@ubuntu:/var/www-ssl/testsoftware$ sudo htpasswd -c .htpasswd konrad
+\end{lstlisting}
+Afterwards, you will be required to type twice the same password for the username
+you want to create, in this case \emph{konrad}. ``The -c flag is used only when you
+are creating a new file. After the first time, you will omit the -c flag,
+when you are adding new users to an already-existing password file. Otherwise you
+will overwrite the file!'' \cite{htaccess}. You can add as many users as you wish,
+do not forget to remove the -c flag when you do it.
+In the last step, we have to modify the \emph{/etc/apache2/apache2.conf} file and
+to add at the end of it the following code segment where \emph{/vaw/www-ssl/testsoftware}
+is the full path to your web page directory where you put the \emph{.htpasswd} file:
+\begin{lstlisting}
+<Directory /vaw/www-ssl/testsoftware>
+AllowOverride All
+</Directory>
+\end{lstlisting}
+We are done with editing. All we have to do now is to restart the Apache web server. We
+can do that by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 restart
+\end{lstlisting}
+You can test it now by opening a new browser tab and navigating to \emph{https://localhost/\\testsoftware}
+(keep in mind to replace \emph{testsoftware} with your name of the folder where the web page
+is located). If you configured everything properly, you should get a dialog where you can
+enter your created username and password and try to login.
+
+\newpage
+\section{Web page}
+One of the requests of our team project was to build a test system that could be started from the web site.
+Since we used the Open Source platform to base our project on, it was certain we will use it for the web site as well.
+The dynamic parts of the web site were programmed using PHP and JavaScript. The GUI was done using CSS.
+The web site opens TCP/IP sessions between itself and the Python test software. Due reasons explained in the section above,
+a test user needs first to enter his username and password to acccess the web site. Then a test user can manually select what type of tests he wants to perform or he can select already defined test,
+like the simple, smart or full test. (Describe here these three type of tests).
+Data about the performing tests are inserted into the database only in the case if the mutex lock for the web site can be obtained\footnote{The mutex lock will be explained in the next subsection.}.
+This way we can avoid inserting data about the test in case there is already a test user on the website performing some tests on the system.
+\subsection{Communication between the web page and the test software}
+Our first idea was that the PHP file starts the test software.
+However, parts of our test software open new terminal windows and
+since PHP has restrictions for starting GUI applications our approach was condemned for a failure at the start.
+We had to deal with this problem and our solution to it was to write a little Python script that will run in background and start our
+test software when required. Once a person starts the test over the web site, it automatically connects to the Python script over an TCP/IP socket.
+Before being able to start the test software one needs first to obtain the mutex lock on the web site and to check if there is a mutex lock for the test software running.
+Using this approach we can ensure that only one user at the time can be on the web site and run only one instance of the test software.
+In the next step we send the Python script a message to start the test software. The test software obtains a mutex lock as well.
+When the test software is started the web page checks if a software lock is obtained.
+Once it is obtained we can proceed with creating a new socket connection between the web site and the test software.
+Our TCP/IP communication between the web site and the test software is not encrypted since both the web page and the test software run on the same server computer.
+The mutex locks are freed after the tests are performed. Our test software has a timeout timer in case that the web site hangs or somehow the socket connection breaks
+where it automatically shuts down.
+\subsection{Results on the web page}
+All the performed test results are displayed on the web site. The results are displayed in real time after each selected test case is performed.
+After all the test cases have been performed a topological picture is generated which represents the current state of the system, this can bee seen in the following figure.
+Afterwards, when the result picture is generated, the test user can easily see what is wrong in the system. Various icons represent different subsystems.
+Reading the test results is as simple as looking at the icons and identifying if they have: a green plus signs (i.e. working properly), a red minus sign (i.e. not working properly) and a yellow exclamation mark (i.e. it was not tested).
+
+\begin{itemize}
+\item Triangles represent BTS stations
+\item Cellphones represent the external networks (E-Plus, Vodaphone, T-Mobile and O2)
+\item Telephone represents the landline and a telephone with a mortarboard the University telephone network
+\item Servers represent the OpenBSC and LsfKs-Asterisk
+\item Two monitors represent the SIP system
+\end{itemize}
+
+\par The inference mechanism works as following: if a test case works, we can conclude that the subsystems connected inbetween the two ends are working properly as well.
+We use the pChart library\footnote{It is under the GNU GPLv3 license and our project is nonprofit!} to generate the topological picture of our telecommunication system \cite{pChart}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{resultsImage.png}
+ \caption[]{Result image showing working, defected and not tested subsystems}
+\end{figure}
+\par On the right side of the result picture the test user can immediatelly identify the network operability in percentage\footnote{The test user has to take into account that this percantage is only valid if a full test is performed.}. Bellow the network operability statistics are the ping results statistics located.
+If one of the fields is red it means the subsystem is not online or cannot be seen by our server computer where the test software is located.
+\newpage
+\section{Employing the test software system}
+In this section the reader can find out how to install and how to use the test system.
+Our goal was to make a multiplatform test software, however we tested it only under Ubuntu
+11.04 32 bit Linux OS and the given instruction manual is only tested under that OS. The
+test software performed well, both on PC and MAC computers.
+One should keep in mind that some of the libraries we had used do not work
+under the 64 bit version of Linux OS.
+
+\subsection{Required software and libraries}
+In the next subsections, we will guide you how to install all the required software and
+libraries to flawlessly run our test software on your employed server.
+You will be required to have \emph{root} access privileges and to open a new
+terminal window where the commands will be typed in.
+
+\subsubsection{Python installation}
+Python was our programming language of choice\footnote{We had explained earlier why we
+have decided to use Python.}. The required version of Python is 2.7. One can easily
+install python by typing the following commands:
+\begin{lstlisting}
+sudo apt-get update
+sudo apt-get install python2.7
+\end{lstlisting}
+It will take a short amount of time to be installed. You will be required to enter
+the \emph{root} password.
+
+\subsubsection{Apache Web server installation}
+We had decided to use the Apache web server because of its wide support on the internet
+and safety reasons. If there are any bugs or security flaws, the patches are
+easily installed with the Ubuntu update manager. The Apache web server can be easily
+installed by typing the following command:
+\begin{lstlisting}
+sudo apt-get install apache2
+\end{lstlisting}
+You might be required to follow other installation instructions printed on the
+terminal screen.
+After the installation has completed successfully, one can test if it works by going
+to the following web address: \emph{http://localhost}. For configuring the \emph{https}
+please go to the section 7.2.
+
+\subsubsection{SSH}
+Secure Shell (SSH) is a network protocol for secure data communication between two
+computers inside of a network. All computers are required to have SSH installed on it.
+You can easily install it by typing the following command:
+\begin{lstlisting}
+sudo apt-get install ssh
+\end{lstlisting}
+
+\subsubsection{MySQL database and MySQLdb library}
+The MySQLdb library is required to perform various operations on the MySQL database within
+Python. We used the MySQLdb library instead of the native MySQL C API \emph{\_mysql} library
+to make the code cleaner and more portable.
+We suggest you to install first the MySQL database on the server computer. If you
+have installed MySQL you can skip the next part. To star the installation process one can
+type the following commands:
+\begin{lstlisting}
+sudo apt-get install mysql-server
+\end{lstlisting}
+You will be required to enter the Linux \emph{root} password. At some point during
+the installation process, you will be required to enter the password for the MySQL
+database. After you have performed the above step, we can proceed with the
+MySQLdb library installation. By typing:
+\begin{lstlisting}
+sudo apt-get install python-mysqldb
+\end{lstlisting}
+If the \emph{python-mysqldb} name has changed, one can easily find the correct name of the
+file by issuing the following command:
+\begin{lstlisting}
+apt-cache search MySQLdb
+\end{lstlisting}
+By typing in the commands given above, you should have successfully installed the MySQLdb
+library.
+
+\subsubsection{Serial port library}
+The serial port library is required for the cell phones to communicate with the
+server computer and the BeagleBoards. The required library for Python can be installed
+by typing the following command:
+\begin{lstlisting}
+sudo apt-get install python-serial
+\end{lstlisting}
+The installation should not produce any errors or warnings.
+
+\subsubsection{PJSUA library}
+\emph{PJSUA} is an open source command line SIP user agent (softphone). We use the library
+for the SIP handler. First, one needs to download the library
+from \url{http://www.pjsip.org/download.htm} \cite{pjsip}. Then extract it to some folder.
+Then we will build the library using make. This can be accomplished by typing the following
+commands:
+\begin{lstlisting}
+cd your-pjsip-root-dir
+./configure && make dep && make
+cd pjsip-apps/src/python
+sudo make
+\end{lstlisting}
+
+If you get an error similar to this one:
+\begin{lstlisting}
+_pjsua.h:25:20: fatal error: Python.h: No such file or directory
+compilation terminated.
+error: command 'gcc' failed with exit status 1
+\end{lstlisting}
+Then you will be required to install python-dev as well, that matches your version of
+python (e.g. python2.7-dev). You can do it by typing:
+\begin{lstlisting}
+sudo apt-get install python2.7-dev
+\end{lstlisting}
+After you have successfully installed python2.7-dev, repeat the the commands given above.
+Now you should have a properly installed PJSUA library. One can easily test if the installation
+was successful by copiling a simple python code, \emph{python test.py}, with the following
+source code:
+\begin{lstlisting}
+import pjsua
+\end{lstlisting}
+If you do not get any errors, you have successfully installed the library. More detail can
+be found on our project wiki page \cite{wiki}.
+
+\subsubsection{pChart library}
+The pChart library is within our installation files and does not require to be installed
+individually. The library is only required if one uses the web interface and
+requires the generated resulting image. The library is open source and does not require
+any licensing. However, if one needs to learn how the library works,
+information can be found on the pChart web page \cite{pChart}.
+
+\subsubsection{proctitle library}
+We had used this library to rename the currently executed process name.
+``The library allows a process to change its title (as displayed by system
+tools such as ps and top). Changing the title is mostly useful in
+multi-process systems, for example when a master process is forked:
+changing the children's title allows to identify the task each process is
+busy with.'' \cite{proctitle}. The library can be easily installed by typing:
+\begin{lstlisting}
+sudo easy_install setproctitle
+\end{lstlisting}
+
+
+\subsection{Configuring hardware}
+Before proceeding with the next steps, please connect all the cell phones
+to the USB hub using the suitable cables. Then make sure the cables are
+recognized by the operating system. This can be performed by typing the following command:
+\begin{lstlisting}
+dmesg | grep ttyU
+\end{lstlisting}
+The given command should produce a result similar to:
+\begin{lstlisting}
+[ 5178.753600] usb 1-1.2: pl2303 converter now attached to ttyUSB0
+\end{lstlisting}
+
+We have two different ways to configure the cell phones, manually and automatic.
+Both options can be accessed either using the website or the terminal window.
+Using the manual configuration from the terminal, the user configures everything him/herself.
+The user will be presented with a few questions like the port address, cell phone number and IMEI.
+After the user enters all the required parameters, the software will check
+if the given port address is accessible and it will look for a response from the devices.
+Then you will be asked to enter the IMEI and the cell phone number of the device.
+If the entered IMEI matches the device IMEI then the software will update the database
+with the entered information. You can run, both the manual and automatic configuration
+by typing:
+\begin{lstlisting}
+python gsmselftest.py --devconf
+\end{lstlisting}
+In the automatic configuration, the software will automatically try to detect every
+cell phone that is connected to the USB hub. This configuration option can detect
+up to nine cell phones, that are connected to the server computer. We had set a limit to
+nine cell phones because we required only five (four for the external GSM networks
+and one for our internal GSM BST). The only limitation of the automatic cell phone congiguration
+is that it only supports cell phones where we could read out the number using the \emph{AT Modem}
+commands since some cell phone manufacturers do not use the standardized \emph{AT Modem} commands.
+\subsection{Location of the files}
+For proper operation of the software, it is important that each file is at its correct path
+located. In the given section you can find out the correct path locations.
+If you are not an expert, please do not change these locations.
+The following files have to be located in the \emph{/var/www-ssl/testsoftware/} folder:
+\begin{lstlisting}
+drwxr-xr-x 7 root root 4096 2011-10-28 12:45 .
+drwxr-xr-x 3 root root 4096 2011-10-20 17:06 ..
+-rw-r--r-- 1 root root 109 2011-10-26 16:55 .htaccess
+-rw-r--r-- 1 root root 20 2011-10-26 17:11 .htpasswd
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 class
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 css
+-rw-r--r-- 1 root root 7547 2011-10-20 17:06 delayedLoading.js
+-rw-r--r-- 1 root root 3431 2011-10-25 14:38 devconf.html
+-rw-r--r-- 1 root root 2024 2011-10-25 23:47 devconfigAuto.php
+-rw-r--r-- 1 root root 1811 2011-10-26 13:44 devconfigManual.php
+-rw-r--r-- 1 root root 2195 2011-10-25 23:45 devconfig.php
+-rw-r--r-- 1 root root 3526 2011-10-27 14:51 devconf.php
+-rwxr-xr-x 1 root root 725 2011-10-20 17:06 execute.php
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 fonts
+-rw-r--r-- 1 root root 2259 2011-10-28 12:43 index.html
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 icons
+drwxr-xr-x 2 root root 4096 2011-10-25 14:10 Images
+-rw-r--r-- 1 root root 2038 2011-10-20 17:06 insertData.php
+-rw-r--r-- 1 root root 636 2011-10-26 13:43 insertdevice.php
+-rw-r--r-- 1 root root 10819 2011-10-20 17:06 loader.gif
+-rw-r--r-- 1 root root 2268 2011-10-26 16:07 main.php
+-rw-r--r-- 1 root root 5416 2011-10-20 17:06 moocheck.js
+-rw-r--r-- 1 root root 75836 2011-10-20 17:06 mootools.js
+-rw-r--r-- 1 root root 677 2011-10-20 17:06 mutexFunctions.php
+-rw-r--r-- 1 root root 9063 2011-10-25 17:20 mutexSmartTest.php
+-rwxr-xr-x 1 root root 9143 2011-10-28 12:45 mutexTry.php
+-rw-r--r-- 1 root root 13304 2011-10-20 17:06 networkResult.php
+-rw-r--r-- 1 root root 8294 2011-10-21 19:02 post.php
+-rw-r--r-- 1 root root 19218 2011-10-21 17:36 startTest2.php
+-rw-r--r-- 1 root root 18852 2011-10-20 17:06 startTest.php
+-rw-r--r-- 1 root root 18787 2011-10-25 16:43 TaskTest.html
+-rw-r--r-- 1 root root 3685 2011-10-20 17:06 testCase.php
+-rw-r--r-- 1 root root 2545 2011-10-20 17:06 wait.gif
+\end{lstlisting}
+The \emph{startSoftware.py} file is required to be in the \emph{/etc/init.d/} folder,
+since it is required to be start with the computer boot however if that does not work,
+one should start it manually. This part of the software is
+responsible for starting the testing software from the web page\footnote{The web page
+communicates with this script via a socket connection and sends a signal to start
+the main test software.}.
+The main test software python files should be located in \emph{/home/gsmselftest/SoftwareTesting/}.
+\begin{lstlisting}
+drwxr-xr-x 2 gsmselftest gsmselftest 4096 2011-11-03 14:29 .
+drwxr-xr-x 30 gsmselftest gsmselftest 4096 2011-11-02 18:28 ..
+-rwxr--r-- 1 gsmselftest gsmselftest 2909 2011-10-20 17:54 ClientClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3628 2011-10-20 17:54 ClientClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 9814 2011-11-02 16:19 ControllerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 9247 2011-11-02 16:20 ControllerClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 15129 2011-11-02 15:32 DbClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 11712 2011-11-02 15:32 DbClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8512 2011-11-02 13:30 GSMClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7337 2011-11-02 13:42 GSMClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8063 2011-11-02 13:24 GSMHandler.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 20346 2011-11-02 18:32 gsmselftest.py
+-rwxr--r-- 1 gsmselftest gsmselftest 698 2011-11-02 18:36 help.txt
+-rwxr-xr-x 1 gsmselftest gsmselftest 8661 2011-11-02 16:35 initTestClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7497 2011-11-02 16:37 initTestClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 645 2011-10-20 17:54 LogFileClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1509 2011-10-20 17:54 LogFileClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 817 2011-10-20 17:54 PingClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1263 2011-10-20 17:54 PingClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 3982 2011-10-20 17:54 ServerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4596 2011-10-20 17:57 ServerClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 4129 2011-10-20 23:17 ServerClassSoftware.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4802 2011-10-20 23:17 ServerClassSoftware.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 5252 2011-10-22 03:58 SIPHandler.py
+-rwxr--r-- 1 gsmselftest gsmselftest 1267 2011-11-02 14:07 SSHTunnelBoxClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1852 2011-11-02 14:19 SSHTunnelBoxClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 323 2011-11-02 18:44 startSoftware.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 6378 2011-11-02 16:13 trueTableClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4583 2011-11-02 16:16 trueTableClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 2248 2011-10-28 14:04 usbDetectClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3590 2011-10-28 14:05 usbDetectClass.pyc
+\end{lstlisting}
+
+\subsection{Setting up the parameters}
+After configuring the hardware, \emph{https} and \emph{.htaccess} on the web server,
+it is important to modify the files for proper operations. In the given section you
+can find out how to configure the rest of the files (e.g. database passwords, etc.).
+The following files you have to modify to have a working database access:
+\emph{initTestClass.py, GsmSelfTest.py, UsbDetectClass.py} and \emph{truthtableClass.py}.
+\subsection{Test descriptions}
+In the following section we will describe the tests that can be performed and what kind
+of problems they can identify. There are five types of tests:
+\begin{itemize}
+\item Smart test
+\item SIP test
+\item GSM test
+\item Everything test
+\item Manual test
+\end{itemize}
+Each test will be described in the next subsections.
+\subsubsection{Smart test}
+\par The \emph{smart} test is not called smart without a reason. It tries automatically to identify
+problems inside of the telecommunication network. The user is not required to define what kind
+of tests have to be performed. In the first part the test software communicates with the
+database to see what systems are available. In the next step it performs a call from the
+University telephone system to a random local cell phone\footnote{Local cell phone or
+local GSM network means our University GSM Network or RZ GSM.}
+inside of our University GSM network.
+While executing this task, automatically the Asterisk server, OpenBSC and a random nanoBTS
+(or the one cell phone in RZ) are tested. The next task to be performed in the smart test,
+a randomly selected cell phone inside of our local GSM network will try to call: a random
+cell phone within the external (O2, Vodaphone,E-Plus or T-Mobile) or local GSM network.
+This might test the external network and will test it with high probability, however the
+probability exists to make a local to local GSM test call. In the third task, we perform
+a test where we call from the landline a random cell phone inside of our local GSM network.
+In the fourth or last task, we call from SIP to the service we did not test yet (e.g.
+if we did not test the external GSM network using the second test task, then in this last
+task we will exploit it). After the smart test had been completed you will be presented
+with the results.
+\subsubsection{SIP test}
+The \emph{SIP} test option will perform test in such a way that all the SIP subsystems are
+tested (SIP and University telephone network). It will try to identify if there are any
+problems on the Asterisk server and our University telephone network, including incoming and
+outgoing calls from the SIP side.
+\subsubsection{GSM test}
+In the \emph{GSM} test both GSM networks get tested, the local and the external GSM netwrok.
+We test the nanoBTS controller boxes (i.e. BeagleBoards) as well. Using this test, both incoming
+and outgoing calls are performed, we can detect possible errors on the OpenBSC and the nanoBTS.
+\subsubsection{All test}
+The \emph{All} test selects all the given tests and executes them step-by-step. It is the test
+that takes the greatest amount of time. While the test are performed, results are
+immediatelly printed in the terminal window or on the web site.
+\subsubsection{Manual test}
+The \emph{Manual} test as the name itself says, is the test where you can manually select
+what kind of tests you want to be performed.
+\subsection{Result descriptions}
+In the following table one can see the messages returned by the test software!
+These messages should guide the test user operator to debug the system.
+
+\begin{table}[h]\footnotesize
+ \begin{center}
+ %\caption[]{Table of error descriptions}
+ \begin{tabular}{| l | c | l | }
+ \hline
+ \textbf{Number} & \textbf{Code} & \textbf{Code number description} \\ \hline
+ 1 & 200 & Call was OK \\ \hline
+ 2 & 604 & General Handler Error: Destination handler did not respond. Timeout \\ \hline
+ 3 & 998 & General Handler Error: Could not connect to the destination handler! \\ \hline
+ 4 & 605 & General Handler Error: Caller handler did not respond. Timeout \\ \hline
+ 5 & 999 & General Handler Error: Could not connect to the caller handler! \\ \hline
+ 6 & 486 & Call Failed \\ \hline
+ 7 & 333 & Could not establish a connection to the database! \\ \hline
+ 8 & 100 & Missing account detail \\ \hline
+ 9 & 402 & Payment Required (E-Plus Card) \\ \hline
+ %\hline
+
+ \end{tabular}
+ \end{center}
+\end{table}
+
+\subsection{Using the software}
+In this section, you will be taught step by step how to use our test software. There are two options to run our test software, from the web site or the terminal.
+The first is easier, but the second is easy as well however requires terminal skills.
+
+\subsubsection{Web site guide}
+Once you enter the address in the address bar of your browser (e.g. \emph{https://localhost/\\testsoftware}).
+You will be required to enter your username and password for the web page\footnote{The username and password creation process is explained in section 7.2.2.}.
+If you entered the correct username and password you should see the same image as in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{website1.png}
+ \caption[]{Web page of test software}
+\end{figure}
+Here you can choose what kind of test you want to perform or maybe if you want to configure the devices (manually or automatically).
+If you press the ``Smart test'' button, you have to wait a few moments and the results should appear in a short amount of time.
+However, if you pressed the ``Choose the test'' button, you will be presented with a new page, given in figure 25.
+You will have to select the tests you want to perform manually or to press on the left side one of the given buttons for different
+tests. You can choose between ``SIP Test'', ``GSM Test'', ``Check all'' and ``Uncheck all''. ``Check all'' will select all the possible
+tests, whereas ``Uncheck all'' will deselect all of them. After you finished the procedure of selecting the tests, you should press the
+``Submit'' on the left side. Wait a few moments and the results will start to appear in real time. After the table on the left is filled
+(i.e. after all the tests have been completed) a result image will be generated on the right side, can be seen in figure 26. However, if
+your pressed the ``Device configuration'' button, then you will end up on a page as given in figure 27.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{website2.png}
+ \caption[]{Manually selecting the tests}
+\end{figure}
+
+If you press the ``Automatic configuration'' button, the test software will try automatically to match your cell phones with
+their port addresses and numbers. However, if the automatical matching does not work, you will have to manually configure it.
+You can do it by entering all the required information on the web site, as in figure 28. Once you correctly filled in the required
+information, you should press the ``Submit'' button.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{webpageReport.png}
+ \caption[]{Result web page}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{website3.png}
+ \caption[]{Device configuration web page}
+\end{figure}
+
+\begin{figure}[!t]
+ \centering
+ \includegraphics[width=140mm]{website4.png}
+ \caption[]{Manual device configuration page}
+\end{figure}
+
+
+\subsubsection{Terminal guide}
+In the following text, we will guide you and show you step-by-step how to use the test software from the terminal. All you have to
+do is just type the command for starting the test software in the folder where it is located, \emph{./gsmselftest.py ---option} (keep
+in mind there are two dashes before \emph{option}).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{terminalCommand.png}
+ \caption[]{Test software terminal options}
+\end{figure}
+You can perform the tests manually by typing what you want to test or by choosing one of the predefined tests. For example, you
+want to test manually does the SIP work with the University telephone network, you would type the following: \emph{./gsmselftest.py --db sip unisip}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{resultterminal.png}
+ \caption[]{Example results from the terminal screen}
+\end{figure}
+After the tests have been performed the results will be displayed. Green result text means the test was performed successfully and red result
+text means that something is not working properly.
+
+If you need to configure the cell phones manually or automatically, you can do it by typing: \emph{./gsmselftest.py --devconf} (keep
+in mind there are two dashes before \emph{devconf}). Then you can press ``a'' on the keyboard for automatic configuration or ``m'' for
+manual configuration. One should keep in mind that the terminal test software can be started even through \emph{ssh}, however with an
+additional command \emph{-X}\footnote{For example: ssh -X username@address}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{devconf.png}
+ \caption[]{Test software device configuration from terminal screen}
+\end{figure}
+
+\clearpage
+\newpage
+\section{Conclusion}
+As a result of our successfully finished team project, we had felt how it is to work
+in a team. We had learnt how to confront various sofware and hardware issues. The problems
+were broken into smaller fragments and the solutions were derived in a step-by-step approach.
+\par While designing the software, we kept in mind that every single step should be well thought-out,
+documented, tested and validated. At the end we joined all the ``black-boxes'' together
+into one big piece of software. We fulfilled our stated requirements and goals.
+\par Despite the fact that our test software will be used by well educated engineers, we may
+conclude that all the way along we thought about the usage-simplicity, safety and security
+of our product. Our team members were enthusiastic about the idea that our team project will
+contribute to a better perferomance and quality of the overall telecommunication network,
+for all of the University staff and our colleagues, the students.
+\newpage
+
+
+
+%bibliography start
+\begin{thebibliography}{9}
+
+\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 10.06.2011, available at
+\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
+
+\bibitem{python} \emph{Python Programming Language - Official Website}, accessed on 10.06.2011, available at
+\url{http://www.python.org/}.
+
+\bibitem{mysqlManual} \emph{MySQLdb User's Guide}, accessed on 05.06.2011, available at \\
+\url{http://mysql-python.sourceforge.net/MySQLdb.html}.
+
+\bibitem{wiki} \emph{[2011] GSM Selftest - Wiki - Lehrstuhl f\"{u}r Kommunikationssysteme}, accessed on 20.09.2011, available at \\
+\url{http://lab.ks.uni-freiburg.de/projects/gsm-selftest/wiki}.
+
+\bibitem{socket} \emph{17.2. socket - Low-level networking interface}, accessed on 20.06.2011, available at
+\url{http://docs.python.org/library/socket.html}.
+
+\bibitem{spin} M. Ben-Ari \emph{Principles of the Spin Model Checker},
+Springer Verlag, Weizmann Institute of Science, Israel, ISBN: 978-1-84628-769-5, 2008.
+
+\bibitem{sshTunnel} R. Natarajan, \emph{3 Steps to perform SSH login without password using ssh-keygen \& ssh-copy-id}, accessed on 18.08.2011, available at
+\url{http://goo.gl/fX68N}.
+
+\bibitem{https} P. Bramscher, \emph{Creating Certificate Authorities and self-signed SSL certificates}, accessed on 05.09.2011, available at
+\url{http://www.tc.umn.edu/~brams006/selfsign.html}.
+
+\bibitem{htaccess} \emph{EnablingUseOfApacheHtaccessFiles}, accessed on 18.08.2011, available at
+\url{https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles}.
+
+\bibitem{pChart} \emph{pChart}, accessed on 15.08.2011, available at
+\url{http://www.pchart.net/}.
+
+\bibitem{beagleDataSheet} \emph{BeagleBoard System Reference Manual}, accessed on 20.06.2011, available at
+\url{http://beagleboard.org/static/BBSRM_latest.pdf}.
+
+\bibitem{proctitle} \emph{setproctitle 1.1.2}, accessed on 20.10.2011, available at
+\url{http://pypi.python.org/pypi/setproctitle}.
+
+\bibitem{pjsip} \emph{Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication}, accessed on 20.10.2011, available at
+\url{http://www.pjsip.org/}.
+
+%bibliography end
+\end{thebibliography}
+
+%end of the document
+\end{document} \ No newline at end of file
diff --git a/documenting/Report/test.tex~ b/documenting/Report/test.tex~
new file mode 100644
index 0000000..866b72b
--- /dev/null
+++ b/documenting/Report/test.tex~
@@ -0,0 +1,1397 @@
+\documentclass[a4paper, titlepage, oneside, headsepline, footsepline]{scrartcl}
+%PACKAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{lscape} %for the landscape pages it is used
+\usepackage[english]{babel} %what language are we using
+\usepackage[latin2]{inputenc} %what alphabet
+
+\usepackage[tt]{titlepic} %used for adding the title image
+\usepackage{graphicx} %used for adding images
+\usepackage{url} %used for the url in bibliography
+\usepackage{lastpage} %give me the total number of pages, used in footer: \pageref{LastPage}
+
+\usepackage[T1]{fontenc} %used for fonts
+\usepackage{scrpage2} %used for making headers, footers and correct margins
+%\usepackage{hyperref} %used for the linking of table of content
+
+%information for the PDF
+\usepackage[pdftex, %used for adding pdf information
+ pdfauthor={Refik Hadzialic, Triatmoko},
+ pdftitle={Software for self-testing of the Telecommunication network of University of Freiburg},
+ pdfsubject={Telecommunication network testing software},
+ pdfkeywords={telecommunication;network;networking;linux;ubuntu;university;Freiburg;python;tcp/ip;security;gsm;sip;voip},
+ pdfproducer={Latex with hyperref, or other system},
+ pdfcreator={pdflatex, or other tool}]{hyperref} %used for the linking of table of content
+
+
+
+
+
+\hypersetup{ %setting up the look of the links
+ colorlinks,
+ citecolor=black,
+ filecolor=black,
+ linkcolor=black,
+ urlcolor=black
+}
+
+\usepackage{color} %used for highlighting source code
+\usepackage{listings} %used to make a box with source code
+\usepackage{fancyvrb}
+\DefineVerbatimEnvironment{code}{Verbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{example}{Verbatim}{fontsize=\small}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE LOOK OF THE PAGES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{scrheadings}
+
+\renewenvironment{abstract}
+ {\begin{center}\large\textbf{}\noindent\end{center}}{\vspace{2\baselineskip}}
+
+% Disable single lines at the start of a paragraph (Schusterjungen)
+\clubpenalty = 10000
+% Disable single lines at the end of a paragraph (Hurenkinder)
+\widowpenalty = 10000 \displaywidowpenalty = 10000
+
+\setlength{\parskip}{0.01\baselineskip}
+\textheight = 620pt
+
+\ohead{Software for self-testing of the Telecommunication network of University of Freiburg} %make the header
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%DEFINE THE STUFF FOR CODE
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lstset{ %
+%language=Python, % choose the language of the code
+columns=fullflexible,
+keywordstyle=\color[rgb]{0.608,0.561,0.008},
+commentstyle=\color[rgb]{0.25,0.5,0.35},
+stringstyle=\color[rgb]{0.25,0.35,0.85},
+basicstyle=\footnotesize,%\scriptsize % the size of the fonts that are used for the code
+%numbers=left, % where to put the line-numbers
+numberstyle=\footnotesize, % the size of the fonts that are used for the line-numbers
+stepnumber=1, % the step between two line-numbers. If it is 1 each line will be numbered
+numbersep=8pt, % how far the line-numbers are from the code
+backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}
+showspaces=false, % show spaces adding particular underscores
+showstringspaces=false, % underline spaces within strings
+showtabs=false, % show tabs within strings adding particular underscores
+frame=single, % adds a frame around the code
+tabsize=2, % sets default tabsize to 2 spaces
+captionpos=b, % sets the caption-position to bottom
+breaklines=true, % sets automatic line breaking
+breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+escapeinside={\%}{)} % if you want to add a comment within your code
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\newcommand{\titleOfProject}{Software For Self-Testing Of The Telecommunication Network Of University Of Freiburg}
+
+
+
+%begin of the document
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+
+
+
+%make the title page
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\titlepic{\includegraphics[width=90mm]{uniLogo2.png}}
+\title{Team Project \\ ``\titleOfProject''} % type title between braces
+\date{\today} % type date between braces
+\author{Refik Had\v{z}iali\'{c}\\ Triatmoko } % type author(s) between braces
+\department{\vspace{1\baselineskip} \large Albert-Ludwigs-Universit\"{a}t Freiburg \\
+Lehrstuhl f\"{u}r Komunikationsysteme\\
+Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Meier \\ Dennis Wehrle \\ \vspace{1\baselineskip} Sommersemester 2011}
+
+\maketitle
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%add the table of contents
+\tableofcontents
+
+%new page to start with
+\clearpage
+
+
+
+
+% first chapter
+\section{Introduction and Motivation} % chapter 1
+In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems from an external perspective and infer the results out of our findings.
+Before we had started working on our project, we had to analyze the overall network to come up with the test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software.
+Gradually we implemented a bit-by-bit of the final software. In the following chapters we will describe in more detail our approach to the problem and how each subsystem works.
+This particular report and our wiki page should be a sufficient guide and manual for understanding, running and continuing the development of our test software.
+Certainly, we had a lot of fun while working on the project due the fact that we lost one team member.
+We would like to thank the whole department for the free coffee and their support, especially
+Konrad Meier, Dennis Wehrle, Richard M. Zahoransky and Larissa Linz, without their support this project would not
+end up this way.
+\clearpage
+\section{Requirements} % chapter 2
+At the start of the project the requirements were not completely known but as the time had passed we redefined our requirements and goals.
+The first and the most important part at the start was to identify the key goals of our team project. The basic goal of our team project was to build a
+test software system which could tell an operator user what part of the system is not properly working in our University telecommunication network.
+Konrad and Dennis suggested us to analyze figure 1 and depending on it to build our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{BigPicture_new1.png}
+ \caption[]{Overview of the Freiburg University telecommunication network \cite{network}}
+\end{figure}
+Our first attempt was to see what could we test without having access to the system. We installed numerous communication programs to see what others have done.
+After gaining access to the communication software, we had decided to build most of the test software ourselves. Libraries, which were used,
+were only the ones we could not develop ourselves because of the time-span of our team project.
+\subsection{Logical and algorithmic requirements}
+Despite the software and hardware requirements, the logic in our team project may be considered as the most important part.
+Controlling the software and hardware in a specific manner was one of the requirements in our team project.
+Moreover, we were required to draw a use case diagram and a simple test case diagram so that we could better understand all the problems we had to deal with
+but also to easier follow the development of our test software.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{activity_diagram.png}
+ \caption[]{Simple algorithmic overview of a test case}
+\end{figure}
+\subsection{Software requirements}
+Afterwards, as we had defined our logical approach to the problems, we had to choose the programming language to realize our ideas. Since we had the freedom of choice, between the three suggested programming languages
+Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time,
+therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}.
+Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems.
+\par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal.
+The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results.
+\par In addition it was required to log all the past tests. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system
+(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system.
+We decided to use MySQL since it is open source and well supported.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{test_Use_case.png}
+ \caption[]{Test case diagram}
+\end{figure}
+\subsection{Hardware requirements}
+Likewise the software requirements, we had hardware requirements as well. We were required to identify the hardware we will need to perform the tests.
+It was important to find old and cheap cell phones that could support \emph{AT Modem} commands because our budget was limited.
+\par A problem we had to deal with at the start was that the base stations are located at different geographical points which were not near to each other.
+No one should go everyday to the rooms where our cell phones are located only to change or charge the batteries.
+In the cable subsection we describe our approach to the charging battery problem. As we defined our requirements we continued with the process of developing the test software.
+During the development time we refined our requirements. In the next chapters we will explain our database, software and hardware design ideas.
+\newpage
+\section{Database design}
+As we mentioned in the software requirements section, we decided to use MySQL as our database system for storing the test information and results.
+It was not difficult to decide what database to use, since MySQL is one of the most supported database and one can find a library to use it with major programming languages.
+The key point in the design of our database was the simplicity and speed of accessing the data. We had decided to use seven tables. In the following paragraphs we will explain each table separately and its usage.
+The database design can be seen in figure 4.
+
+\par The \emph{PingResultTable} table has six attributes (\emph{taskNo, sipServer, sipGate, unisip, gsmBox1, gsmBox2}), all of integer type.
+The \emph{taskNo} attribute identifies the test number but not a single test (e.g. an operator user has selected three different tests to be executed, all of the three tests will have the same \emph{taskNo} to identify them together as belonging to one test group and \emph{taskId} identifies each single test and will be explained later).
+\emph{sipServer} represents the Asterisk server ping result. \emph{sipGate} is used to represent the SIP Gate server for the landline calls (\url{http://www.sipgate.de}). \emph{uniSip} represents the ping results for our local University telephone network SIP server.
+\emph{gsmBox1} and \emph{gsmBox2} are the two single-chip Linux computers (BeagleBoard), that control two cell phones each one (i.e. they are also known under the name of \emph{nanoBTSx controller}).
+\emph{taskNo} is the primary and unique key in the table \emph{PingResultTable}. Rest of the attributes (i.e. \emph{sipServer, sipGate, uniSip, gsmBox1, gsmBox2}) are used to insert the ping results, if the assigned servers are reachable or not.
+Before any test attempt is made, our test software first tries to ping the servers. These results are then stored in the \emph{PingResultTable}.
+
+\par The \emph{ErrorCodeTable} table defines all the possible test results in the system, in other words it represents a list with error codes with their appropriate descriptions and meanings. It consists of two attributes (\emph{errorcode} and \emph{description}), the first is of integer type and the second of varchar type (the description message is allowed to be only 100 characters long).
+The \emph{ErrorCodeTable} table is used by the main test software (i.e. controller) to report the operator user what kind of error had appeared in the system.
+
+\par The \emph{DeviceAddressTable} is the table containing the location and identification data for each server and device. The table consists of seven attributes, \emph{deviceName, portName, number, lastChange, username, password, server}.
+\emph{deviceName} is the attribute with the name of the device or server (e.g. GSMRZ1 or landline), it is of varchar type. \emph{portName} is the attribute field with the location address for a cell phone (e.g. \emph{/dev/ttyUSB1}) or 'localhost' instead of NULL value for a server, it is of the varchar type.
+\emph{number} represents the number of the used service (i.e. number of the cell phone, SIP, etc.) and is of varchar type.
+\emph{lastChange} is a time value and represents the date and time the given entry was modified (we had plans in future versions of our test software that if an device gets a new IP address assigned it automatically changes it in the database).
+\emph{username} is the field with the username stored in for a server/service, like SIP and landline. \emph{password} attribute stores the password information for the given service. The \emph{server} attribute stores information about the location of the server, IP or DNS address of the server. All three fields, \emph{username}, \emph{password} and \emph{server} are of varchar type.
+The information stored in the given table is used by the test software to obtain usernames, passwords and addresses of the used services for the tests.
+
+\par The \emph{ResultTable} table is used by the test system to store final results for the performed tests. Our given table consists of two fields, \emph{taskID} and \emph{result} and both are of integer type. For each test entry with unique \emph{taskID} an error code is assigned in the \emph{result} field,
+depending on the test results. Error codes found in the \emph{ErrorCodeTable} table can be only assigned to this field.
+
+\par The \emph{TempTaskTable} table represents the table with the tasks the system has to execute next time the test software is started. The given table gets new data every time an operator user submits one or more test cases from the website to be executed. \emph{TempTaskTable} includes four attributes, \emph{taskID, taskNo, from, to}. Former two are of integer type and later two of varchar type.
+\emph{taskID} and \emph{taskNo} identify the test task to be executed, \emph{taskID} is the unique primary key. \emph{from} and \emph{to} fields have to match the names given in \emph{DeviceAddressTable.deviceName}, these two attributes specify the caller and callee devices/services. Consequently, after the tasks get executed, the test tasks are removed and the given table is empty again until next tests are added to it.
+However, all the test tasks even after deleting them from \emph{TempTaskTable} are kept in the \emph{TaskTable}. The reason why the authors of this project divided it into two tables was because of the database row selection speed. We had made the assumption that with time the database size will grow and therefore the database speed will not be the same as during the development period.
+
+\par The \emph{TaskTable} table, as mentioned before contains all the tests ever performed from the web site. It is made out of five attributes, \emph{taskID, taskNo, from, to, timestamp}. The first four fields are the same as in \emph{TempTaskTable}, however the last one, \emph{timestamp}, is used to record the exact time when the test was performed.
+\par The \emph{GSMListPrefix} table contains the data about the GSM networks and their prefixes. It consists of two
+attributes, both of varchar type, \emph{providerName} and \emph{prefix}.
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{DBRelationship.png}
+ \caption[]{Database relationship diagram}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+
+
+\section{Software design} % section 2.1
+Software design was the next step after we analyzed the problem and developed a plan how to proceed further. Good analysis and planning with poor algorithmic implementation is valueless.
+During the work on the project, we had spent most of our time for software design.
+We kept in mind that our software should satisfy major paradigms of software engineering,
+like compatibility, extensibility, modularity, reliability, security, fault-tolerance and usability.
+The software engineering design concepts were achieved following way:
+\begin{itemize}
+\item Compatibility - we used Python and MySQL which are multi-platform and work on major OS
+\item Extensibility - new parts of code can be easily added by just modifying the classes
+\item Mudalarity - the components are independent black boxes, they are tested and validated independently
+\item Reliability - we use mutex locks to perform tests and database transaction operations to insert data into the database
+\item Security - all communication channels, as well as the access to the web site, are encrypted with asymmetric key cryptography
+\item Fault-tolerance - the classes were designed to continue operating even if error events appear and handlers are logging all events
+\item Usability - we tried to create a simple user interface and easily to use for everyone
+\end{itemize}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=140mm]{activityControllerEdited.png}
+ \caption[]{Working principle of the test software}
+\end{figure}
+
+\par The basic principle how the test software works can be seen in figure 5. The test software is
+started either manually from the terminal or using the web site. When the test software
+is started manually it is database dependent as well and therefore could not be used if the
+database is being maintained or not working. If it is started from the web site it
+connects to the database to get its tasks which have to be performed. After receiving
+the tasks it makes a simple network test by pinging all the servers. The ping results
+are stored in the database (in case the test was started from the web site). Then it
+proceeds with the tests by connecting itself to the handlers and sending them commands
+to perform the tests\footnote{Before it connects to the handlers, it uses the ping
+results to see is the service/device physically connected to the network.}.
+At the higher level, these commands can be seen as requests for being the
+callee and caller. Meanwhile the handlers send their test results to the main
+test software which in return decides if the test result was successful or not.
+The result is written to the database (in case the software was started from the website),
+otherwise the results are displayed in the terminal window and the user who started
+it manually can see the test results. We will proceed with introducing the classes.
+The software class diagram can be seen in the following figure. More details for the
+classes, like the input/output can be found on our project's wiki page \cite{wiki}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{classDiagram.png}
+ \caption[]{Class diagram (some classes were excluded)}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+\newpage
+\subsection{Database access} % subsection 2.1.1
+Accessing the database is of critical value to our project, therefore we had developed our own class that limits the access to the database. In the process of developing our own class we used the MySQLdb library in Python \cite{mysqlManual}.
+The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete back-trace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{dbClass.png}
+ \caption[]{Class diagram for the dbClass}
+\end{figure}
+The method names are self-explanatory and do not require extra explanations. All the outputs produced by the class can be found on the project wiki page \cite{wiki}.
+\subsection{Controlling the cell phones}
+Our first version of the developed program code for controlling the cell phones used predefined timed values
+to send commands instead of using a state controlled approach to confirm that every command was successfully received and executed by the cell phone.
+It meant we had to make an enormous number of assumptions. In comparison to our second approach, to build a state controlled cell phone control class,
+our first approach was inferior and slower. The state controlled method connected two cell phones, on the same base station, up to 15 times faster than the timed approach.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=80mm]{serialPort.png}
+ \caption[]{GSM class diagram for controlling the cell phones}
+\end{figure}
+One can easily apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception.
+A timeout exception gets raised when the cell phone does not respond (i.e. when the cell phone enters a deadlock or delayed state). We had used the serial port library inside of Python although we use USB cables to connect to our cell phones. One should
+be aware that our USB cables create a virtual serial port. More details on class design and an example can be found on our project wiki \cite{wiki}.
+\subsection{Client and Server class}
+Our socket communication code is based on the example given in the Python socket manual \cite{socket}.
+We extended it into two classes, a client and a server class. We had used the TCP protocol to base our two classes on\footnote{TCP is reliable compared to UDP (i.e. transmitted packets get also delivered),
+packets are ordered when received and data are received in a stream (i.e. multiple packets can be read at once).}.
+The Server class can be seen in the following figure. The server class is implemented to accept only local connections\footnote{More details are given in the section 7.1}.
+First we determine our IP address and then create the socket to listen only for the same IP address (with a different IP address than the selected one a connection cannot be even established).
+One has to define the port on which the server object should listen.
+When receiving data one can easily define the timeout to be raised if data are not received in the timeout range or set it to \emph{0} to infinitely wait for the buffer to be filled with received data. While testing the server class we had the problem to listen on the same port if the application was forcibly\footnote{Manually closed using CTRL+C and run again.} restarted in less than 60 seconds. We got the error message: \emph{"Address already in use"}.
+This is not known as error behavior but rather an option to help the server to catch lost live packets (i.e. packets that are still in the network looking for it is goal destination).
+We solved the problem by changing the socket options with the \emph{SO\_REUSEADDR} parameter. This enabled us to get around the error when we tried to restart our server application.
+Before solving the problem without using the socket parameter, we had another solution to get around this problem by killing the application running the port, this old method is obsolete now.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[scale=0.8]{serverClass.png}
+ \caption[]{Server class, used by the server application}
+\end{figure}
+In the process of testing the client class we did not have any major problems. The only major flow we had to debug was when one of the sides disconnects that we get out of the waiting loop if the timeout variable was set to \emph{0} (i.e. infinite waiting loop).
+The client class can be seen in the following figure. To initialize the client object one needs to define the IP address and the port of the server application listening on it.
+\begin{figure}[hb!]
+ \centering
+ \includegraphics[scale=0.5]{ClientClass.png}
+ \caption[]{Client class, used by the client application}
+\end{figure}
+Once an instance of it is created and loaded with the IP address and the port, one needs to call the \emph{connect()} method.
+The method will produce an integer based on its connection state. Output information and the programming code can be found on our project wiki page \cite{wiki}.
+\subsection{Ping class}
+Before making any test and establishing a connection we were required to ensure that the server is online. The best way to assess the liveness property was to ping the server computer running the required service. Once the class is properly defined, we could easily set the number of ping tries.
+A ping timeout response was set up to 2 seconds. For more details and insights, one can read more about it on our wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=70mm]{ping.png}
+ \caption[]{Ping class, used by test software}
+\end{figure}
+\subsection{Data logging}
+If errors appear it is important to reconstruct the events that led to the misbehavior of the software. One of the best ways to reconstruct the events was to log
+events for different blocks of programming code.
+We had used the logging class to follow our handler code run on the BeagleBoard. In case there is an error we could look inside of the log files and track the error.
+How the class works and what kind of outputs it produces can be found on our project wiki page \cite{wiki}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{logging.png}
+ \caption[]{Logging class}
+\end{figure}
+\subsection{SSH Tunnel Class}
+Since security played an important role in our team project. We decided to encrypt all of our data that was not processed on our server computer.
+The simplest solution to this problem was to build an SSH Class that could open and close a local forwarding port.
+All data sent through the created port is encrypted until it gets to its destination location.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{sshTunnelClass.png}
+ \caption[]{SSH Tunnel class}
+\end{figure}
+\subsection{USB Cell phone detection class}
+Since we had used cables to connect the cell phones with the computer, usually the devices
+got their own port addresses. They were automatically assigned by the operating system,
+either after the cables were plugged into the USB port or after a system reboot.
+One of the problems we had to deal with was assigning the right cell phone
+(i.e. with the appropriate GSM network) to the corresponding port address.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{usbDetectClass.png}
+ \caption[]{USB cable detection class}
+\end{figure}
+The operating system randomly assigned the port names after every reboot.
+We were looking for a solution to prevent this misaddressing of the devices.
+Our solution was to recognize every device and update the port address in the database.
+The principle how we identify the cell phones is by their calling numbers in the database.
+More details can be found on our project wiki page \cite{wiki}.
+\subsection{Truth table class}
+The truth table class was built to identify the broken and working parts of the system.
+It requires the list with test results to be present to be operable.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{trueTable.png}
+ \caption[]{Truth table class}
+\end{figure}
+Then the class tries to identify the broken parts of our telecommunication network.
+The class can easily identify how many nanoBTSs are installed in the network and
+derive a decision which part of the network is broken.
+All the test results are stored in a list and can be easily read by calling the
+\emph{initTrueTable(x)} function. More details can be found on our project wiki page \cite{wiki}.
+\subsection{Init Test class}
+The main purpose of the class is to get device data from the database and to process it.
+The processed data get forwarded to the controller class and in the end the class
+fetches the results from the test. This class contains the \emph{smart test} functionality.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{initTestClass.png}
+ \caption[]{Init test class}
+\end{figure}
+It selects automatically the important tests to perform. In the next step it
+tries to identify the problem in the network.
+More details can be found in the \emph{smart test} description.
+\subsection{Controller class}
+The controller class is used to assign jobs to handlers (in other words, which one is
+going to be the caller and callee). Simultaneously, it defines the port addresses for
+the communication between the handlers and the main test software (controller).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{controllerclass.png}
+ \caption[]{Controller class}
+\end{figure}
+If the callee or the caller are nanoBTS controller boxes (i.e. BeagleBoards outside
+the Rechenzentrum), it will first create an SSH connection to make a tunnel before
+the local socket connection is created. Then the controller class sends all the
+required data regarding the test tasks to the handlers.
+
+\clearpage
+\section{Hardware design}
+In our team project we had the option to choose all the required hardware ourself beside the two BeagleBoards, which we were supplied by Konrad and Dennis.
+Since one of the project goals was to reduce the costs as much as it was possible, we had tried to use some of the leftovers found in our lab.
+
+\subsection{BeagleBoard}
+``The BeagleBoard is an OMAP3530 platform designed specifically to address the Open
+Source Community.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=60mm]{bb.jpg}
+ \caption[]{BeagleBoard, a Linux-on-chip board where our controller software runs the GSM device }
+\end{figure}
+It has been equipped with a minimum set of features to allow the
+user to experience the power of the OMAP3530 and is not intended as a full development
+platform as many of the features and interfaces supplied by the OMAP3530 are not
+accessible from the BeagleBoard'' \cite{beagleDataSheet}.
+We run on it a special precompiled version of Ubuntu for the ARM processor type. The Linux system boots up from an SD Card.
+The board has an USB hub and network port attached to it. In our project it is connected to our
+internal university LAN network and to a cell phone. We positioned the two BeagleBoards in rooms where
+we had LAN access and GSM signal coverage of our two local base stations.
+
+\subsection{Cell phones}
+Our first attempt was to control a Nokia cell phone 3310 with the supplied USB connection cable.
+The protocols used by old versions of Nokia cell phones, as the 3310, use the F-Bus protocol. It was not easy to work with.
+After performing various experiments we succeeded to send and to read SMS messages. Later on we found out that it was not possible to
+send commands for receiving and making the calls. In the meantime we found two Siemens phones, one M45 and S55.
+The first one, Siemens M45, had a cable supplied with it and it was not difficult to control it with the standard set of AT modem commands.
+At the start we did not have a cable supplied for the Siemens S55 phone. We controlled it over the Bluetooth port.
+
+\subsection{Cables for the cell phones}
+Due to the fact that we had used 5 cell phones on a single computer, the best solution was to order 5 USB cables.
+Konrad bought 5 cables for 5 Siemens S55 cell phones. All of the cables have an USB2Serial chip converter inside of them.
+Once they were plugged into the USB port, Ubuntu automatically recognized the cables and installed the drivers.
+The virtual serial ports were created and could be found on \emph{/dev/ttyUSBx}, where $x$ is the automatically assigned number for the port.
+Some of the cables had the capability to charge the Siemens S55 phones.
+Konrad had opened several cables to solder the power supplies to some contacts and the problem was solved for all of the cables.
+\subsection{Server}
+We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Apache web server and MySQL.
+Afterwards we installed the Python on it and all the required libraries\footnote{Required libraries are mentioned in section 9.1.}.
+\clearpage
+
+\section{Communication protocol}
+A communication protocol represents a set of well defined rules by whose help two or more computing systems exchange information in-between.
+When defining these rules, it is important to define a limited state space for every possible event, no matter did we get the appropriate
+response from the other side. Our approach to this problem was to build a simple synchronous protocol, where every expected message is
+confirmed or otherwise the connection between two sides is immediately terminated. Since designing protocols is a demanding and challenging
+topic which requires years of experience and verification, we do not expect that we had developed the best possible and an optimum
+protocol\footnote{Design concepts and paradigms for the protocol design have been used from the
+``Network Protocol Design and Evaluation'' course, lectured by Dr. Stefan R\"{u}hrup}.
+In the following paragraphs we will try to clarify how our protocol works. Before we start to go into detail how the protocol works,
+it is important to remember that we differentiate two sides, handler and the controller side. The handler side represent the device
+that physically handles the call (e.g. the BeagleBoard) whereas the controller (i.e. the main test software), is the test software
+controlling the handler side and assigning the task to it.
+
+\subsection{Communication between the handler and controller}
+The handler side is always in the waiting mode, by waiting we denote the mode where the socket is already created and it is waiting
+for a connection to be accepted at the defined port. The controller initiates a socket connection to the two handlers.
+Subsequently, after the connection has been established, it is waiting for a message to be received. The first message
+has to be 13 characters long and include the following content \emph{HELLO HANDLER}. Thereupon, after the message has
+been validated, the handler side sends the controller side a response, \emph{HELLO CONTROLLER}.
+We call this first message exchange the initialization. Now the controller side has to decide which of the two handler's
+will be the caller/callee whereas the other handler will be the opposite. Let's assume the controller sends to the first
+handler the message \emph{RECEIVER} and to the second one the message \emph{CALLER|\#}, replace the callee number with the \# sign.
+In the meantime, both handlers initialize the software required to make the call and to receive the call. Asynchronously they
+respond back to the controller their successful initialization. The successful initialization is reported by sending \emph{RECEIVER READY}
+and \emph{CALLER READY}. After receiving the mentioned messages, the controller first sends the callee handler the
+message \emph{RECEIVE START} and then to the caller handler, the message \emph{CALLER START}. As a result of these messages,
+the handlers enter the receiving, respectively calling state. In the given states two timeout timers gets activated.
+These timers are responsible for the case if the physical connection between the callee and the caller are not successfully
+established or terminated\footnote{The client and server classes responsible for the communication have timeout timers as well
+for the case if the connection between the controller and handlers are broken.}. Afterwards, depending if the physical connection
+between the handlers (i.e. the callee and the caller) was successfully established or not, the handlers report their
+corresponding state with a message to the controller. The message is of the form \emph{CALL OK}, meaning the handler successfully
+established a physical connection with the other handler, or of the form \emph{CALL NOT OK}, meaning a physical connection was
+not successfully established on the given handler. The controller considers only a test successful if both handlers report
+with \emph{CALL OK}. The test software ends the established connection with the handlers by sending them the \emph{TERMINATE CONNECTION}
+command. After the handlers have terminated the connection, they enter the waiting for a new connection state and the process starts
+from beginning again. If the states are not entered in the specified order the connection is immediately terminated and
+the state machine is in the waiting for a new connection state\footnote{It cannot be seen in the protocol flowchart but one should
+keep in mind it works like a well defined state machine.}.
+
+\begin{landscape}
+\begin{center}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=218mm]{protocolCommunicationHandler.png}
+ \caption[]{Flowchart of the protocol on the handler side without the state representation}
+\end{figure}
+\end{center}
+\end{landscape}
+
+
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerReceiver.png}
+ \caption[]{Flowchart of the protocol on the controller side for the caller without the state representation}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=147mm]{protocolCommunicationcControllerCaller.png}
+ \caption[]{Flowchart of the protocol on the controller side for the receiver without the state representation}
+\end{figure}
+
+\subsection{Verification of the protocol}
+``SPIN is a model checker - a software tool for verifying models of physical
+systems, in particular, computerized systems. First, a model is written that
+describes the behavior of the system; then, correctness properties that express
+requirements on the system's behavior are specified; finally, the model
+checker is run to check if the correctness properties hold for the model, and,
+if not, to provide a counterexample: a computation that does not satisfy a
+correctness property.'' \cite{spin}. We modeled our simple protocol in SPIN using
+the programming language PROMELA \cite{spin}. Since PROMELA is similar to C it was
+not possible to ensure 100\% matching with Python but we had made the assumptions of it.
+We modeled both sides, server and client side. As well as the server side being a caller
+and a callee. It was important to find out if our protocol is deadlock or delayed state free.
+For more details our model can be found on our wiki project page with the PROMELA source code \cite{wiki}.
+We had built in a 50\% random probability that the call test will not be successful, to make the model even more
+realistic. Our protocol idea was deadlock free and the verification results prove it.
+After we had modeled the basic idea we had written the code that implements our idea. The Python code
+resembles some kind of a state machine which remembers the last state and what the next state should be in case
+of receiving corresponding message. Otherwise it enters the exit state and then the start state.
+
+\begin{lstlisting}
+(Spin Version 6.1.0 -- 2 May 2011)
+ + Partial Order Reduction
+Full statespace search for:
+ never claim - (none specified)
+ assertion violations +
+ cycle checks - (disabled by -DSAFETY)
+ invalid end states +
+State-vector 44 byte, depth reached 65, errors: 0
+ 40 states, stored
+ 3 states, matched
+ 43 transitions (= stored+matched)
+ 90 atomic steps
+hash conflicts: 0 (resolved)
+ 2.195 memory usage (Mbyte)
+unreached in proctype Server1
+ (0 of 36 states)
+unreached in proctype Server2
+ (0 of 36 states)
+unreached in proctype Client
+ (0 of 67 states)
+pan: elapsed time 0 seconds
+\end{lstlisting}
+
+\clearpage
+\newpage
+
+
+\section{Security and safety of the system}
+Safety and security of the software plays a major role in our project.
+It is of vital importance that only as few as possible people have access to our test system since the resulting data could be exploited to plan an attack
+(e.g. assume the University alarm system uses the SIP gateway to connect to the outside world and to alarm the police, if one knows that the SIP gateway is not working properly, a burglar could plan to rob the University building just at that moment). Therefore the choice to go Open Source is justified due to the fact that one should know how every single detail of the system works.
+All the time, while we were working on the project, we were made aware of this issue by Dennis and Konrad.
+We decided to use asymmetric key cryptography, where each side has two keys (private and public). In the next sections we will explain in more details how we applied the methods.
+\subsection{Encryption of the communication channels}
+At first we thought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of Internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g.
+trying to open the port until the system runs out of memory and in our case the system which we used on the handler side was a BeagleBoard with ARM architecture running on a single chip TI OMAP processor, refer to the picture in figure).
+We had to eliminate even the slightest possible threat in return for spending more time for debugging the test software system. Despite we were aware of all these facts, we had to choose one of the plenty implemented encryption standards on Linux.
+Dennis and Konrad suggested using the SSH Tunneling method.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{sshTunnel.png}
+ \caption[]{SSH Tunnel, all the communication inside the tunnel is encrypted }
+\end{figure}
+
+Using the SSH Tunnel port forwarding method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running).
+The SSH Tunnel port forwarding method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password every time we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}.
+This can be performed by executing the following commands in the terminal shell.
+One has to create first the private and public keys on the local machine(i.e. server computer, where the test software runs):
+
+\begin{lstlisting}
+refik@ubuntu:$ [Note: You are on local-host here]
+
+refik@ubuntu:$ ssh-keygen
+Generating public/private rsa key pair.
+Enter file in which to save the key (/home/refik/.ssh/id_rsa):[Enter key]
+Enter passphrase (empty for no passphrase): [Press enter key]
+Enter same passphrase again: [Press enter key]
+Your identification has been saved in /home/refik/.ssh/id_rsa.
+Your public key has been saved in /home/refik/.ssh/id_rsa.pub.
+The key fingerprint is:
+33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 refik@ubuntu
+\end{lstlisting}
+
+Then one needs to copy the public key to the remote machine (BeagleBoard) using ssh-copy-id:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
+refik@remote-host's password:
+Now try logging into the machine, with "ssh 'remote-host'", and check in:
+
+.ssh/authorized_keys
+
+to make sure we haven't added extra keys that you weren't expecting.
+\end{lstlisting}
+
+After we have created the public and private keys, and coppied the public key on the machine to which we want to connect, we can test if we can make an SSH connection to the remote machine:
+
+\begin{lstlisting}
+refik@ubuntu:$ ssh remote-host
+[Note: SSH did not ask for password.]
+
+refik@remote-host:$ [Note: You are on remote-host here]
+\end{lstlisting}
+The test was successful. We tested it with our SSH Tunnel port forwarding class and it worked perfectly.
+\subsection{Security on the web site}
+Aside from having secured the data communication channels between various parts of our software
+(the handlers and the controller), it was crucial to ensure all the communication between
+test user's browser and our server. Therefore we had used the \emph{https} protocol and
+the \emph{.htaccess} file to password protect the web site so only the privileged users
+have access to our test system.
+\subsubsection{Configuring the http secure protocol https}
+Securing the communication channels without making certain the web site is safe would be worthless.
+We decided to use the \emph{https} protocol instead of the \emph{http} since a person in the middle
+could sniff our data (e.g. a person is connected with his/her smart-phone over an unprotected wireless network) \cite{https}.
+At the same time the web site should be accessible only by the authorized personel. Our first approach to this
+problem was to build an PHP page with \emph{MD5} hashed passwords, however we got a suggestion by Konrad and Dennis to
+use a safer encryption method implemented in the Apache web server software, \emph{.htaccess}. By using
+these two techniques we protected the web site of some vulnerabilities known to us. If the web site
+will be only accessed from our local university network, we can additionally add an IP filter mask as well.
+In the following paragraph we will explain our procedure how to generate the keys and to enable the https protocol.
+\par First we want to generate a server key by typing the following command:
+\begin{lstlisting}
+openssl genrsa -des3 -out server.key 4096
+\end{lstlisting}
+\par This will generate a 4096 bit long private server key, one is asked to enter two times a password for the \emph{server.key}.
+Using the generated private server key, we will create a certificate signing request, \emph{server.csr}. We were prompted with a series of questions
+like country, state, organization name and etc which we had to enter to resume.
+\begin{lstlisting}
+openssl req -new -key server.key -out server.csr
+\end{lstlisting}
+\par In the next step we had to sign the certificate signing request and enter the amount of days for how long it should be valid.
+In our case we entered the duration of one year, one can make it for longer periods as well (i.e. the amount of 365 has to be changed).
+\begin{lstlisting}
+openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
+\end{lstlisting}
+\par We were asked to enter the password again for \emph{server.key}. After we have completed this step we had to make
+a version of the \emph{server.key} which did not require a password, \emph{server.key.insecure} and we will rename the files appropriately.
+\begin{lstlisting}
+openssl rsa -in server.key -out server.key.insecure
+mv server.key server.key.secure
+mv server.key.insecure server.key
+\end{lstlisting}
+\par The generated files are very sensitive, since they are our keys. After these steps were completed, we had generated 4 files: \emph{server.crt}, \emph{server.csr}, \emph{server.key} and \\ \emph{server.key.secure}. Now we need to enable the SSL engine on the Apache web server.
+We coppied \emph{server.key} and \emph{server.crt} into \emph{/etc/appache2/ssl}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2$ sudo mkdir ssl
+cp server.key /etc/apache2/ssl
+cp server.crt /etc/apache2/ssl
+\end{lstlisting}
+\par Then we enabled SSL by typing in \emph{a2enmod ssl}, ``it is simply a general purpose utility to establish a symlink between a module in \emph{/etc/apache2/mods-available} to \\ \emph{/etc/apache2/mods-enabled} (or give a message to the effect that a given module does not exist or that it is already symlink-ed for loading)'' \cite{https}.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo a2enmod ssl
+Enabling module ssl.
+See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
+Run '/etc/init.d/apache2 restart' to activate new configuration!
+\end{lstlisting}
+\par In the next procedure we had to establish a symlink from the 'available' default-ssl file to the 'enabled' file \cite{https}. Then we created a folder where our secured PHP files will be located (e.g. https://some-domain-name.com/test-software).
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/ssl$ sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl
+refik@ubuntu:/etc/apache2/ssl$ cd /var/
+refik@ubuntu:/var$ sudo mkdir www-ssl
+\end{lstlisting}
+\par We had backed up our old configuration files for the virtual hosts, for the case if we damage the Apache configuration files. Then we edited the \emph{default-ssl} file.
+\begin{lstlisting}
+refik@ubuntu:/var$ cd /etc/apache2/sites-available
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default default_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo cp default-ssl default-ssl_original
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par Only the beginning of the file is listed here and we have modified the line starting with \emph{DocumentRoot}
+and \emph{<Directory /var/www/>} from \emph{DocumentRoot /var/www} to \emph{DocumentRoot /var/www-ssl}
+and from \emph{<Directory /var/www/>} to \emph{<Directory /var/www-ssl/>}
+(i.e. we had to redefine the location of our SSL directory).
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+<VirtualHost _default_:443>
+ ServerAdmin webmaster@localhost
+
+ DocumentRoot /var/www-ssl
+ <Directory />
+ Options FollowSymLinks
+ AllowOverride None
+ </Directory>
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+\par One should keep in mind that the port 443 should be free for Apache to use it. In the proceeding step we had to ensure that Apache listens on the given port for a \emph{https} connection.
+One could test that by going into the \emph{/etc/apache2/ports.conf}.
+\begin{lstlisting}
+<IfModule mod_ssl.c>
+ # If you add NameVirtualHost *:443 here, you will also have to change
+ # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
+ # to <VirtualHost *:443>
+ # Server Name Indication for SSL named virtual hosts is currently not
+ # supported by MSIE on Windows XP.
+ Listen 443
+</IfModule>
+\end{lstlisting}
+\par In our case it was set up correctly, since the command: \emph{Listen 443} was present.
+In our last configuration step we had to edit \emph{default-ssl} file to define the correct locations of our keys and to ensure the SSL engine was turned on.
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl
+\end{lstlisting}
+\par The following part of the file had to be found and modified according to our locations:
+\begin{lstlisting}
+SSLEngine on
+
+ # A self-signed (snakeoil) certificate can be created by installing
+ # the ssl-cert package. See
+ # /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
+ # If both key and certificate are stored in the same file, only the
+ # SSLCertificateFile directive is needed.
+ SSLCertificateFile /etc/apache2/ssl/server.crt
+ SSLCertificateKeyFile /etc/apache2/ssl/server.key
+
+ # Server Certificate Chain:
+ # Point SSLCertificateChainFile at a file containing the
+\end{lstlisting}
+\par Finally we had configured our server and can proceed with the restart of the apache web server. We created a test web site \emph{/var/www-ssl/index.php} and navigated our browser to \emph{https://localhost}. The test was successful!
+\begin{lstlisting}
+refik@ubuntu:/etc/apache2/sites-available$ sudo /etc/init.d/apache2 restart
+ * Restarting web server apache2 [Sat Oct 08 21:52:51 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
+ ... waiting [Sat Oct 08 21:52:52 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence [ OK ]
+refik@ubuntu:/etc/apache2/sites-available$
+\end{lstlisting}
+\subsubsection{Password protecting the web site using .htaccess}
+Aside from using a secure communication protocol on the web, \emph{https}, it is important
+to ensure that only permissioned users gain access to the web site. We had achieved it using
+the \emph{.htaccess} file. However, to enable the use of Apache \emph{.htaccess} files,
+we will have to reconfigure the Apache configuration files again. \emph{root} access will
+be required. First we have to edit the \emph{/etc/apache2/sites-available/default-ssl} file.
+Find the following lines and modify the \emph{AllowOverride None} to \emph{AllowOverride All}
+like in the given configuration segment:
+\begin{lstlisting}
+ <Directory /var/www-ssl/>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride All
+ Order allow,deny
+ allow from all
+ </Directory>
+\end{lstlisting}
+This will tell Apache web server that it is okay to allow \emph{.htaccess} files
+to over-ride previous directives. We must reload the Apache web server before the
+changes can take effect. We can do it by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 reload
+\end{lstlisting}
+The next step is to go to the directory where our test software web page is located
+(e.g. \emph{/var/www-ssl/testsoftware}) and to create a file called \emph{.htaccess}.
+Please insert the following code segment inside the created \emph{.htaccess} file where
+\emph{/var/www-ssl/testsoftware/.htpasswd} is your full path address to \emph{.htpasswd}:
+\begin{lstlisting}
+AuthUserFile /var/www-ssl/testsoftware/.htpasswd
+AuthName "Authorization Required"
+AuthType Basic
+require valid-user
+\end{lstlisting}
+Then in the next step, create another file called \emph{.htpasswd}. After you have created it,
+we will add the usernames that should have access to the web site. We do that by typing the
+following command, where you can replace \emph{konrad} with any other combination of letters
+which will represent your username:
+\begin{lstlisting}
+refik@ubuntu:/var/www-ssl/testsoftware$ sudo htpasswd -c .htpasswd konrad
+\end{lstlisting}
+Afterwards, you will be required to type twice the same password for the username
+you want to create, in this case \emph{konrad}. ``The -c flag is used only when you
+are creating a new file. After the first time, you will omit the -c flag,
+when you are adding new users to an already-existing password file. Otherwise you
+will overwrite the file!'' \cite{htaccess}. You can add as many users as you wish,
+do not forget to remove the -c flag when you do it.
+In the last step, we have to modify the \emph{/etc/apache2/apache2.conf} file and
+to add at the end of it the following code segment where \emph{/vaw/www-ssl/testsoftware}
+is the full path to your web page directory where you put the \emph{.htpasswd} file:
+\begin{lstlisting}
+<Directory /vaw/www-ssl/testsoftware>
+AllowOverride All
+</Directory>
+\end{lstlisting}
+We are done with editing. All we have to do now is to restart the Apache web server. We
+can do that by typing:
+\begin{lstlisting}
+sudo /etc/init.d/apache2 restart
+\end{lstlisting}
+You can test it now by opening a new browser tab and navigating to \emph{https://localhost/\\testsoftware}
+(keep in mind to replace \emph{testsoftware} with your name of the folder where the web page
+is located). If you configured everything properly, you should get a dialog where you can
+enter your created username and password and try to login.
+
+\newpage
+\section{Web page}
+One of the requests of our team project was to build a test system that could be started from the web site.
+Since we used the Open Source platform to base our project on, it was certain we will use it for the web site as well.
+The dynamic parts of the web site were programmed using PHP and JavaScript. The GUI was done using CSS.
+The web site opens TCP/IP sessions between itself and the Python test software. Due reasons explained in the section above,
+a test user needs first to enter his username and password to access the web site. Then a test user can manually select what type of tests he wants to perform or he can select already defined test,
+like the simple, smart or full test. (Describe here these three type of tests).
+Data about the performing tests are inserted into the database only in the case if the mutex lock for the web site can be obtained\footnote{The mutex lock will be explained in the next subsection.}.
+This way we can avoid inserting data about the test in case there is already a test user on the website performing some tests on the system.
+\subsection{Communication between the web page and the test software}
+Our first idea was that the PHP file starts the test software.
+However, parts of our test software open new terminal windows and
+since PHP has restrictions for starting GUI applications our approach was condemned for a failure at the start.
+We had to deal with this problem and our solution to it was to write a little Python script that will run in background and start our
+test software when required. Once a person starts the test over the web site, it automatically connects to the Python script over an TCP/IP socket.
+Before being able to start the test software one needs first to obtain the mutex lock on the web site and to check if there is a mutex lock for the test software running.
+Using this approach we can ensure that only one user at the time can be on the web site and run only one instance of the test software.
+In the next step we send the Python script a message to start the test software. The test software obtains a mutex lock as well.
+When the test software is started the web page checks if a software lock is obtained.
+Once it is obtained we can proceed with creating a new socket connection between the web site and the test software.
+Our TCP/IP communication between the web site and the test software is not encrypted since both the web page and the test software run on the same server computer.
+The mutex locks are freed after the tests are performed. Our test software has a timeout timer in case that the web site hangs or somehow the socket connection breaks
+where it automatically shuts down.
+\subsection{Results on the web page}
+All the performed test results are displayed on the web site. The results are displayed in real time after each selected test case is performed.
+After all the test cases have been performed a topological picture is generated which represents the current state of the system, this can bee seen in the following figure.
+Afterwards, when the result picture is generated, the test user can easily see what is wrong in the system. Various icons represent different subsystems.
+Reading the test results is as simple as looking at the icons and identifying if they have: a green plus signs (i.e. working properly), a red minus sign (i.e. not working properly) and a yellow exclamation mark (i.e. it was not tested).
+
+\begin{itemize}
+\item Triangles represent BTS stations
+\item Cell phones represent the external networks (E-Plus, Vodaphone, T-Mobile and O2)
+\item Telephone represents the landline and a telephone with a mortarboard the University telephone network
+\item Servers represent the OpenBSC and LsfKs-Asterisk
+\item Two monitors represent the SIP system
+\end{itemize}
+
+\par The inference mechanism works as following: if a test case works, we can conclude that the subsystems connected in-between the two ends are working properly as well.
+We use the pChart library\footnote{It is under the GNU GPLv3 license and our project is nonprofit!} to generate the topological picture of our telecommunication system \cite{pChart}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{resultsImage.png}
+ \caption[]{Result image showing working, defected and not tested subsystems}
+\end{figure}
+\par On the right side of the result picture the test user can immediately identify the network operability in percentage\footnote{The test user has to take into account that this percentage is only valid if a full test is performed.}. Bellow the network operability statistics are the ping results statistics located.
+If one of the fields is red it means the subsystem is not online or cannot be seen by our server computer where the test software is located.
+\newpage
+\section{Employing the test software system}
+In this section the reader can find out how to install and how to use the test system.
+Our goal was to make a multi-platform test software, however we tested it only under Ubuntu
+11.04 32 bit Linux OS and the given instruction manual is only tested under that OS. The
+test software performed well, both on PC and MAC computers.
+One should keep in mind that some of the libraries we had used do not work
+under the 64 bit version of Linux OS.
+
+\subsection{Required software and libraries}
+In the next subsections, we will guide you how to install all the required software and
+libraries to flawlessly run our test software on your employed server.
+You will be required to have \emph{root} access privileges and to open a new
+terminal window where the commands will be typed in.
+
+\subsubsection{Python installation}
+Python was our programming language of choice\footnote{We had explained earlier why we
+have decided to use Python.}. The required version of Python is 2.7. One can easily
+install python by typing the following commands:
+\begin{lstlisting}
+sudo apt-get update
+sudo apt-get install python2.7
+\end{lstlisting}
+It will take a short amount of time to be installed. You will be required to enter
+the \emph{root} password.
+
+\subsubsection{Apache Web server installation}
+We had decided to use the Apache web server because of its wide support on the Internet
+and safety reasons. If there are any bugs or security flaws, the patches are
+easily installed with the Ubuntu update manager. The Apache web server can be easily
+installed by typing the following command:
+\begin{lstlisting}
+sudo apt-get install apache2
+\end{lstlisting}
+You might be required to follow other installation instructions printed on the
+terminal screen.
+After the installation has completed successfully, one can test if it works by going
+to the following web address: \emph{http://localhost}. For configuring the \emph{https}
+please go to the section 7.2.
+
+\subsubsection{SSH}
+Secure Shell (SSH) is a network protocol for secure data communication between two
+computers inside of a network. All computers are required to have SSH installed on it.
+You can easily install it by typing the following command:
+\begin{lstlisting}
+sudo apt-get install ssh
+\end{lstlisting}
+
+\subsubsection{MySQL database and MySQLdb library}
+The MySQLdb library is required to perform various operations on the MySQL database within
+Python. We used the MySQLdb library instead of the native MySQL C API \emph{\_mysql} library
+to make the code cleaner and more portable.
+We suggest you to install first the MySQL database on the server computer. If you
+have installed MySQL you can skip the next part. To star the installation process one can
+type the following commands:
+\begin{lstlisting}
+sudo apt-get install mysql-server
+\end{lstlisting}
+You will be required to enter the Linux \emph{root} password. At some point during
+the installation process, you will be required to enter the password for the MySQL
+database. After you have performed the above step, we can proceed with the
+MySQLdb library installation. By typing:
+\begin{lstlisting}
+sudo apt-get install python-mysqldb
+\end{lstlisting}
+If the \emph{python-mysqldb} name has changed, one can easily find the correct name of the
+file by issuing the following command:
+\begin{lstlisting}
+apt-cache search MySQLdb
+\end{lstlisting}
+By typing in the commands given above, you should have successfully installed the MySQLdb
+library.
+
+\subsubsection{Serial port library}
+The serial port library is required for the cell phones to communicate with the
+server computer and the BeagleBoards. The required library for Python can be installed
+by typing the following command:
+\begin{lstlisting}
+sudo apt-get install python-serial
+\end{lstlisting}
+The installation should not produce any errors or warnings.
+
+\subsubsection{PJSUA library}
+\emph{PJSUA} is an open source command line SIP user agent (soft-phone). We use the library
+for the SIP handler. First, one needs to download the library
+from \url{http://www.pjsip.org/download.htm} \cite{pjsip}. Then extract it to some folder.
+Then we will build the library using make. This can be accomplished by typing the following
+commands:
+\begin{lstlisting}
+cd your-pjsip-root-dir
+./configure && make dep && make
+cd pjsip-apps/src/python
+sudo make
+\end{lstlisting}
+
+If you get an error similar to this one:
+\begin{lstlisting}
+_pjsua.h:25:20: fatal error: Python.h: No such file or directory
+compilation terminated.
+error: command 'gcc' failed with exit status 1
+\end{lstlisting}
+Then you will be required to install python-dev as well, that matches your version of
+python (e.g. python2.7-dev). You can do it by typing:
+\begin{lstlisting}
+sudo apt-get install python2.7-dev
+\end{lstlisting}
+After you have successfully installed python2.7-dev, repeat the the commands given above.
+Now you should have a properly installed PJSUA library. One can easily test if the installation
+was successful by compiling a simple python code, \emph{python test.py}, with the following
+source code:
+\begin{lstlisting}
+import pjsua
+\end{lstlisting}
+If you do not get any errors, you have successfully installed the library. More detail can
+be found on our project wiki page \cite{wiki}.
+
+\subsubsection{pChart library}
+The pChart library is within our installation files and does not require to be installed
+individually. The library is only required if one uses the web interface and
+requires the generated resulting image. The library is open source and does not require
+any licensing. However, if one needs to learn how the library works,
+information can be found on the pChart web page \cite{pChart}.
+
+\subsubsection{proctitle library}
+We had used this library to rename the currently executed process name.
+``The library allows a process to change its title (as displayed by system
+tools such as ps and top). Changing the title is mostly useful in
+multi-process systems, for example when a master process is forked:
+changing the children's title allows to identify the task each process is
+busy with.'' \cite{proctitle}. The library can be easily installed by typing:
+\begin{lstlisting}
+sudo easy_install setproctitle
+\end{lstlisting}
+
+
+\subsection{Configuring hardware}
+Before proceeding with the next steps, please connect all the cell phones
+to the USB hub using the suitable cables. Then make sure the cables are
+recognized by the operating system. This can be performed by typing the following command:
+\begin{lstlisting}
+dmesg | grep ttyU
+\end{lstlisting}
+The given command should produce a result similar to:
+\begin{lstlisting}
+[ 5178.753600] usb 1-1.2: pl2303 converter now attached to ttyUSB0
+\end{lstlisting}
+
+We have two different ways to configure the cell phones, manually and automatic.
+Both options can be accessed either using the website or the terminal window.
+Using the manual configuration from the terminal, the user configures everything him/herself.
+The user will be presented with a few questions like the port address, cell phone number and IMEI.
+After the user enters all the required parameters, the software will check
+if the given port address is accessible and it will look for a response from the devices.
+Then you will be asked to enter the IMEI and the cell phone number of the device.
+If the entered IMEI matches the device IMEI then the software will update the database
+with the entered information. You can run, both the manual and automatic configuration
+by typing:
+\begin{lstlisting}
+python gsmselftest.py --devconf
+\end{lstlisting}
+In the automatic configuration, the software will automatically try to detect every
+cell phone that is connected to the USB hub. This configuration option can detect
+up to nine cell phones, that are connected to the server computer. We had set a limit to
+nine cell phones because we required only five (four for the external GSM networks
+and one for our internal GSM BST). The only limitation of the automatic cell phone configuration
+is that it only supports cell phones where we could read out the number using the \emph{AT Modem}
+commands since some cell phone manufacturers do not use the standardized \emph{AT Modem} commands.
+\newpage
+\subsubsection{Configuring the cell phones}
+It is important to write in the Siemens S55 cell phones their numbers if you want to use
+automatic device configuration. You can do that by following the next few steps:
+
+\par Open the phone book on the S55 and choose \emph{<Special books>} and press the select button.
+\par In the second step, press select on \emph{<OwnNumber>}.
+\par In the third and last step, enter your cell phone number and save it!
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{First.png}
+ \caption[]{First step in configuring the phone}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{Second.png}
+ \caption[]{Second step in configuring the phone}
+\end{figure}
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=20mm]{Third.png}
+ \caption[]{Second step in configuring the phone}
+\end{figure}
+\clearpage
+\subsection{Location of the files}
+For proper operation of the software, it is important that each file is at its correct path
+located. In the given section you can find out the correct path locations.
+If you are not an expert, please do not change these locations.
+The following files have to be located in the \emph{/var/www-ssl/testsoftware/} folder:
+\begin{lstlisting}
+drwxr-xr-x 7 root root 4096 2011-10-28 12:45 .
+drwxr-xr-x 3 root root 4096 2011-10-20 17:06 ..
+-rw-r--r-- 1 root root 109 2011-10-26 16:55 .htaccess
+-rw-r--r-- 1 root root 20 2011-10-26 17:11 .htpasswd
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 class
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 css
+-rw-r--r-- 1 root root 7547 2011-10-20 17:06 delayedLoading.js
+-rw-r--r-- 1 root root 3431 2011-10-25 14:38 devconf.html
+-rw-r--r-- 1 root root 2024 2011-10-25 23:47 devconfigAuto.php
+-rw-r--r-- 1 root root 1811 2011-10-26 13:44 devconfigManual.php
+-rw-r--r-- 1 root root 2195 2011-10-25 23:45 devconfig.php
+-rw-r--r-- 1 root root 3526 2011-10-27 14:51 devconf.php
+-rwxr-xr-x 1 root root 725 2011-10-20 17:06 execute.php
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 fonts
+-rw-r--r-- 1 root root 2259 2011-10-28 12:43 index.html
+drwxr-xr-x 2 root root 4096 2011-10-20 17:06 icons
+drwxr-xr-x 2 root root 4096 2011-10-25 14:10 Images
+-rw-r--r-- 1 root root 2038 2011-10-20 17:06 insertData.php
+-rw-r--r-- 1 root root 636 2011-10-26 13:43 insertdevice.php
+-rw-r--r-- 1 root root 10819 2011-10-20 17:06 loader.gif
+-rw-r--r-- 1 root root 2268 2011-10-26 16:07 main.php
+-rw-r--r-- 1 root root 5416 2011-10-20 17:06 moocheck.js
+-rw-r--r-- 1 root root 75836 2011-10-20 17:06 mootools.js
+-rw-r--r-- 1 root root 677 2011-10-20 17:06 mutexFunctions.php
+-rw-r--r-- 1 root root 9063 2011-10-25 17:20 mutexSmartTest.php
+-rwxr-xr-x 1 root root 9143 2011-10-28 12:45 mutexTry.php
+-rw-r--r-- 1 root root 13304 2011-10-20 17:06 networkResult.php
+-rw-r--r-- 1 root root 8294 2011-10-21 19:02 post.php
+-rw-r--r-- 1 root root 19218 2011-10-21 17:36 startTest2.php
+-rw-r--r-- 1 root root 18852 2011-10-20 17:06 startTest.php
+-rw-r--r-- 1 root root 18787 2011-10-25 16:43 TaskTest.html
+-rw-r--r-- 1 root root 3685 2011-10-20 17:06 testCase.php
+-rw-r--r-- 1 root root 2545 2011-10-20 17:06 wait.gif
+\end{lstlisting}
+The \emph{startSoftware.py} file is required to be in the \emph{/etc/init.d/} folder,
+since it is required to be start with the computer boot however if that does not work,
+one should start it manually. This part of the software is
+responsible for starting the testing software from the web page\footnote{The web page
+communicates with this script via a socket connection and sends a signal to start
+the main test software.}.
+The main test software python files should be located in \emph{/home/gsmselftest/SoftwareTesting/}.
+\begin{lstlisting}
+drwxr-xr-x 2 gsmselftest gsmselftest 4096 2011-11-03 14:29 .
+drwxr-xr-x 30 gsmselftest gsmselftest 4096 2011-11-02 18:28 ..
+-rwxr--r-- 1 gsmselftest gsmselftest 2909 2011-10-20 17:54 ClientClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3628 2011-10-20 17:54 ClientClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 9814 2011-11-02 16:19 ControllerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 9247 2011-11-02 16:20 ControllerClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 15129 2011-11-02 15:32 DbClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 11712 2011-11-02 15:32 DbClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8512 2011-11-02 13:30 GSMClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7337 2011-11-02 13:42 GSMClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 8063 2011-11-02 13:24 GSMHandler.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 20346 2011-11-02 18:32 gsmselftest.py
+-rwxr--r-- 1 gsmselftest gsmselftest 698 2011-11-02 18:36 help.txt
+-rwxr-xr-x 1 gsmselftest gsmselftest 8661 2011-11-02 16:35 initTestClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 7497 2011-11-02 16:37 initTestClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 645 2011-10-20 17:54 LogFileClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1509 2011-10-20 17:54 LogFileClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 817 2011-10-20 17:54 PingClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1263 2011-10-20 17:54 PingClass.pyc
+-rwxr--r-- 1 gsmselftest gsmselftest 3982 2011-10-20 17:54 ServerClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4596 2011-10-20 17:57 ServerClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 4129 2011-10-20 23:17 ServerClassSoftware.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4802 2011-10-20 23:17 ServerClassSoftware.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 5252 2011-10-22 03:58 SIPHandler.py
+-rwxr--r-- 1 gsmselftest gsmselftest 1267 2011-11-02 14:07 SSHTunnelBoxClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 1852 2011-11-02 14:19 SSHTunnelBoxClass.pyc
+-rw-r--r-- 1 gsmselftest gsmselftest 323 2011-11-02 18:44 startSoftware.py
+-rwxr-xr-x 1 gsmselftest gsmselftest 6378 2011-11-02 16:13 trueTableClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 4583 2011-11-02 16:16 trueTableClass.pyc
+-rwxr-xr-x 1 gsmselftest gsmselftest 2248 2011-10-28 14:04 usbDetectClass.py
+-rw-r--r-- 1 gsmselftest gsmselftest 3590 2011-10-28 14:05 usbDetectClass.pyc
+\end{lstlisting}
+
+\subsection{Setting up the parameters}
+After configuring the hardware, \emph{https} and \emph{.htaccess} on the web server,
+it is important to modify the files for proper operations. In the given section you
+can find out how to configure the rest of the files (e.g. database passwords, etc.).
+The following files you have to modify to have a working database access:
+\emph{initTestClass.py, GsmSelfTest.py, UsbDetectClass.py} and \emph{truthtableClass.py}.
+\subsection{Test descriptions}
+In the following section we will describe the tests that can be performed and what kind
+of problems they can identify. There are five types of tests:
+\begin{itemize}
+\item Smart test
+\item SIP test
+\item GSM test
+\item Everything test
+\item Manual test
+\end{itemize}
+Each test will be described in the next subsections.
+\subsubsection{Smart test}
+\par The \emph{smart} test is not called smart without a reason. It tries automatically to identify
+problems inside of the telecommunication network. The user is not required to define what kind
+of tests have to be performed. In the first part the test software communicates with the
+database to see what systems are available. In the next step it performs a call from the
+University telephone system to a random local cell phone\footnote{Local cell phone or
+local GSM network means our University GSM Network or RZ GSM.}
+inside of our University GSM network.
+While executing this task, automatically the Asterisk server, OpenBSC and a random nanoBTS
+(or the one cell phone in RZ) are tested. The next task to be performed in the smart test,
+a randomly selected cell phone inside of our local GSM network will try to call: a random
+cell phone within the external (O2, Vodaphone,E-Plus or T-Mobile) or local GSM network.
+This might test the external network and will test it with high probability, however the
+probability exists to make a local to local GSM test call. In the third task, we perform
+a test where we call from the landline a random cell phone inside of our local GSM network.
+In the fourth or last task, we call from SIP to the service we did not test yet (e.g.
+if we did not test the external GSM network using the second test task, then in this last
+task we will exploit it). After the smart test had been completed you will be presented
+with the results.
+\subsubsection{SIP test}
+The \emph{SIP} test option will perform test in such a way that all the SIP subsystems are
+tested (SIP and University telephone network). It will try to identify if there are any
+problems on the Asterisk server and our University telephone network, including incoming and
+outgoing calls from the SIP side.
+\subsubsection{GSM test}
+In the \emph{GSM} test both GSM networks get tested, the local and the external GSM network.
+We test the nanoBTS controller boxes (i.e. BeagleBoards) as well. Using this test, both incoming
+and outgoing calls are performed, we can detect possible errors on the OpenBSC and the nanoBTS.
+\subsubsection{All test}
+The \emph{All} test selects all the given tests and executes them step-by-step. It is the test
+that takes the greatest amount of time. While the test are performed, results are
+immediately printed in the terminal window or on the web site.
+\subsubsection{Manual test}
+The \emph{Manual} test as the name itself says, is the test where you can manually select
+what kind of tests you want to be performed.
+\newpage
+\subsection{Result descriptions}
+In the following table one can see the messages returned by the test software!
+These messages should guide the test user operator to debug the system.
+
+\begin{table}[h]\footnotesize
+ \begin{center}
+ %\caption[]{Table of error descriptions}
+ \begin{tabular}{| l | c | l | }
+ \hline
+ \textbf{Number} & \textbf{Code} & \textbf{Code number description} \\ \hline
+ 1 & 200 & Call was OK \\ \hline
+ 2 & 604 & General Handler Error: Destination handler did not respond. Timeout \\ \hline
+ 3 & 998 & General Handler Error: Could not connect to the destination handler! \\ \hline
+ 4 & 605 & General Handler Error: Caller handler did not respond. Timeout \\ \hline
+ 5 & 999 & General Handler Error: Could not connect to the caller handler! \\ \hline
+ 6 & 486 & Call Failed \\ \hline
+ 7 & 333 & Could not establish a connection to the database! \\ \hline
+ 8 & 100 & Missing account detail \\ \hline
+ 9 & 402 & Payment Required (E-Plus Card) \\ \hline
+ 10 & 801 & Connection to caller established, but the device does not respond \\ \hline
+ 11 & 802 & Connection to destination established, but the device does not respond \\ \hline
+ 12 & 501 & Destination server Internal Error \\ \hline
+ 13 & 502 & Caller server Internal Error \\ \hline
+ %\hline
+
+ \end{tabular}
+ \end{center}
+\end{table}
+
+The errors can be described the following way:
+
+\begin{itemize}
+\item \emph{200}, Connection between the caller and callee was properly established
+\item \emph{604}, Callee handler has a problem , a connection error between caller and callee
+\item \emph{998}, Controller software cannot establish a connection and send messages to the callee handler but the destination handler is alive
+\item \emph{605}, Caller handler has a problem during executing the test, a connection error between caller and callee
+\end{itemize}
+605, 'General Handler Error: Caller handler did not respond. Timeout'
+Means that The caller handler having problem during the test task. Probably the connection between controller and caller handler having problem.
+
+
+999, 'General Handler Error: Could not connect to the caller handler!'
+Means that controller can’t make connection and send message to caller handler but the caller handler reachable from the server.
+
+486, 'Call Failed’
+The test task is failed. The connection between caller and destination are broken.
+
+500, 'Caller server Internal Error'
+Means that the caller handler unreachable from the server.
+
+501, 'Destination server Internal Error'
+Means that the destination handler unreachable from the server.
+
+333, 'Could not establish a connection to the database!’
+Could not login to the database MySql.
+
+100, 'Missing account detail'
+Means can’t sign to the existing account at SIP server (SIP at asterisk, Landline at sipgate.de, SIP at University telephone network) due missing or incorrect information in the device address table.
+
+402, 'Payment Required (Eplus Card)'),
+Error respond code for E-Plus card.
+
+801, 'Connection to caller establishment, but device error'
+The device on the caller handler doesn’t connect properly or die.
+
+802, 'Connection to destination establishment, but device error');
+The device on the Destination handler doesn’t connect properly or die.
+
+\clearpage
+\newpage
+\subsection{Using the software}
+In this section, you will be taught step by step how to use our test software. There are two options to run our test software, from the web site or the terminal.
+The first is easier, but the second is easy as well however requires terminal skills.
+
+\subsubsection{Web site guide}
+Once you enter the address in the address bar of your browser (e.g. \emph{https://localhost/\\testsoftware}).
+You will be required to enter your username and password for the web page\footnote{The username and password creation process is explained in section 7.2.2.}.
+If you entered the correct username and password you should see the same image as in the following figure.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website1.png}
+ \caption[]{Web page of test software}
+\end{figure}
+Here you can choose what kind of test you want to perform or maybe if you want to configure the devices (manually or automatically).
+If you press the ``Smart test'' button, you have to wait a few moments and the results should appear in a short amount of time.
+However, if you pressed the ``Choose the test'' button, you will be presented with a new page, given in figure 28.
+You will have to select the tests you want to perform manually or to press on the left side one of the given buttons for different
+tests. You can choose between ``SIP Test'', ``GSM Test'', ``Check all'' and ``Uncheck all''. ``Check all'' will select all the possible
+tests, whereas ``Uncheck all'' will deselect all of them. After you finished the procedure of selecting the tests, you should press the
+``Submit'' on the left side. Wait a few moments and the results will start to appear in real time. After the table on the left is filled
+(i.e. after all the tests have been completed) a result image will be generated on the right side, can be seen in figure 20. However, if
+your pressed the ``Device configuration'' button, then you will end up on a page as given in figure 30.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website2.png}
+ \caption[]{Manually selecting the tests}
+\end{figure}
+
+If you press the ``Automatic configuration'' button, the test software will try automatically to match your cell phones with
+their port addresses and numbers. However, if the automatic matching does not work, you will have to manually configure it.
+You can do it by entering all the required information on the web site, as in figure 31. Once you correctly filled in the required
+information, you should press the ``Submit'' button.
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{webpageReport.png}
+ \caption[]{Result web page}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website3.png}
+ \caption[]{Device configuration web page}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=120mm]{website4.png}
+ \caption[]{Manual device configuration page}
+\end{figure}
+%\clearpage
+\newpage
+\subsubsection{Terminal guide}
+In the following text, we will guide you and show you step-by-step how to use the test software from the terminal. All you have to
+do is just type the command for starting the test software in the folder where it is located, \emph{./gsmselftest.py ---option} (keep
+in mind there are two dashes before \emph{option}).
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{terminalCommand.png}
+ \caption[]{Test software terminal options}
+\end{figure}
+You can perform the tests manually by typing what you want to test or by choosing one of the predefined tests. For example, you
+want to test manually does the SIP work with the University telephone network, you would type the following: \emph{./gsmselftest.py --db sip unisip}.
+\begin{figure}[ht!]
+ \centering
+ \includegraphics[width=100mm]{resultterminal.png}
+ \caption[]{Example results from the terminal screen}
+\end{figure}
+After the tests have been performed the results will be displayed. Green result text means the test was performed successfully and red result
+text means that something is not working properly.
+
+If you need to configure the cell phones manually or automatically, you can do it by typing: \emph{./gsmselftest.py --devconf} (keep
+in mind there are two dashes before \emph{devconf}). Then you can press ``a'' on the keyboard for automatic configuration or ``m'' for
+manual configuration. One should keep in mind that the terminal test software can be started even through \emph{ssh}, however with an
+additional command \emph{-X}\footnote{For example: ssh -X username@address}.
+\begin{figure}[htb]
+ \centering
+ \includegraphics[width=100mm]{devconf.png}
+ \caption[]{Test software device configuration from terminal screen}
+\end{figure}
+
+\clearpage
+\newpage
+\section{Conclusion}
+As a result of our successfully finished team project, we had felt how it is to work
+in a team. We had learnt how to confront various software and hardware issues. The problems
+were broken into smaller fragments and the solutions were derived in a step-by-step approach.
+\par While designing the software, we kept in mind that every single step should be well thought-out,
+documented, tested and validated. At the end we joined all the ``black-boxes'' together
+into one big piece of software. We fulfilled our stated requirements and goals.
+\par Despite the fact that our test software will be used by well educated engineers, we may
+conclude that all the way along we thought about the usage-simplicity, safety and security
+of our product. Our team members were enthusiastic about the idea that our team project will
+contribute to a better performance and quality of the overall telecommunication network,
+for all of the University staff and our colleagues, the students.
+\newpage
+
+
+
+%bibliography start
+\begin{thebibliography}{9}
+
+\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 10.06.2011, available at
+\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}.
+
+\bibitem{python} \emph{Python Programming Language - Official Website}, accessed on 10.06.2011, available at
+\url{http://www.python.org/}.
+
+\bibitem{mysqlManual} \emph{MySQLdb User's Guide}, accessed on 05.06.2011, available at \\
+\url{http://mysql-python.sourceforge.net/MySQLdb.html}.
+
+\bibitem{wiki} \emph{[2011] GSM Selftest - Wiki - Lehrstuhl f\"{u}r Kommunikationssysteme}, accessed on 20.09.2011, available at \\
+\url{http://lab.ks.uni-freiburg.de/projects/gsm-selftest/wiki}.
+
+\bibitem{socket} \emph{17.2. socket - Low-level networking interface}, accessed on 20.06.2011, available at
+\url{http://docs.python.org/library/socket.html}.
+
+\bibitem{spin} M. Ben-Ari \emph{Principles of the Spin Model Checker},
+Springer Verlag, Weizmann Institute of Science, Israel, ISBN: 978-1-84628-769-5, 2008.
+
+\bibitem{sshTunnel} R. Natarajan, \emph{3 Steps to perform SSH login without password using ssh-keygen \& ssh-copy-id}, accessed on 18.08.2011, available at
+\url{http://goo.gl/fX68N}.
+
+\bibitem{https} P. Bramscher, \emph{Creating Certificate Authorities and self-signed SSL certificates}, accessed on 05.09.2011, available at
+\url{http://www.tc.umn.edu/~brams006/selfsign.html}.
+
+\bibitem{htaccess} \emph{EnablingUseOfApacheHtaccessFiles}, accessed on 18.08.2011, available at
+\url{https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles}.
+
+\bibitem{pChart} \emph{pChart}, accessed on 15.08.2011, available at
+\url{http://www.pchart.net/}.
+
+\bibitem{beagleDataSheet} \emph{BeagleBoard System Reference Manual}, accessed on 20.06.2011, available at
+\url{http://beagleboard.org/static/BBSRM_latest.pdf}.
+
+\bibitem{proctitle} \emph{setproctitle 1.1.2}, accessed on 20.10.2011, available at
+\url{http://pypi.python.org/pypi/setproctitle}.
+
+\bibitem{pjsip} \emph{Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication}, accessed on 20.10.2011, available at
+\url{http://www.pjsip.org/}.
+
+%bibliography end
+\end{thebibliography}
+
+%end of the document
+\end{document} \ No newline at end of file
diff --git a/documenting/Report/test.toc b/documenting/Report/test.toc
new file mode 100644
index 0000000..b7618eb
--- /dev/null
+++ b/documenting/Report/test.toc
@@ -0,0 +1,59 @@
+\select@language {english}
+\contentsline {section}{\numberline {1}Introduction and Motivation}{4}{section.1}
+\contentsline {section}{\numberline {2}Requirements}{5}{section.2}
+\contentsline {subsection}{\numberline {2.1}Logical and algorithmic requirements}{5}{subsection.2.1}
+\contentsline {subsection}{\numberline {2.2}Software requirements}{6}{subsection.2.2}
+\contentsline {subsection}{\numberline {2.3}Hardware requirements}{8}{subsection.2.3}
+\contentsline {section}{\numberline {3}Database design}{9}{section.3}
+\contentsline {section}{\numberline {4}Software design}{12}{section.4}
+\contentsline {subsection}{\numberline {4.1}Database access}{15}{subsection.4.1}
+\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{15}{subsection.4.2}
+\contentsline {subsection}{\numberline {4.3}Client and Server class}{16}{subsection.4.3}
+\contentsline {subsection}{\numberline {4.4}Ping class}{17}{subsection.4.4}
+\contentsline {subsection}{\numberline {4.5}Data logging}{18}{subsection.4.5}
+\contentsline {subsection}{\numberline {4.6}SSH Tunnel Class}{18}{subsection.4.6}
+\contentsline {subsection}{\numberline {4.7}USB Cell phone detection class}{19}{subsection.4.7}
+\contentsline {subsection}{\numberline {4.8}Truth table class}{19}{subsection.4.8}
+\contentsline {subsection}{\numberline {4.9}Init Test class}{19}{subsection.4.9}
+\contentsline {subsection}{\numberline {4.10}Controller class}{20}{subsection.4.10}
+\contentsline {section}{\numberline {5}Hardware design}{21}{section.5}
+\contentsline {subsection}{\numberline {5.1}BeagleBoard}{21}{subsection.5.1}
+\contentsline {subsection}{\numberline {5.2}Cell phones}{21}{subsection.5.2}
+\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{22}{subsection.5.3}
+\contentsline {subsection}{\numberline {5.4}Server}{22}{subsection.5.4}
+\contentsline {section}{\numberline {6}Communication protocol}{23}{section.6}
+\contentsline {subsection}{\numberline {6.1}Communication between the handler and controller}{23}{subsection.6.1}
+\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{26}{subsection.6.2}
+\contentsline {section}{\numberline {7}Security and safety of the system}{28}{section.7}
+\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{28}{subsection.7.1}
+\contentsline {subsection}{\numberline {7.2}Security on the web site}{29}{subsection.7.2}
+\contentsline {subsubsection}{\numberline {7.2.1}Configuring the http secure protocol https}{29}{subsubsection.7.2.1}
+\contentsline {subsubsection}{\numberline {7.2.2}Password protecting the web site using .htaccess}{32}{subsubsection.7.2.2}
+\contentsline {section}{\numberline {8}Web page}{34}{section.8}
+\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{34}{subsection.8.1}
+\contentsline {subsection}{\numberline {8.2}Results on the web page}{34}{subsection.8.2}
+\contentsline {section}{\numberline {9}Employing the test software system}{36}{section.9}
+\contentsline {subsection}{\numberline {9.1}Required software and libraries}{36}{subsection.9.1}
+\contentsline {subsubsection}{\numberline {9.1.1}Python installation}{36}{subsubsection.9.1.1}
+\contentsline {subsubsection}{\numberline {9.1.2}Apache Web server installation}{36}{subsubsection.9.1.2}
+\contentsline {subsubsection}{\numberline {9.1.3}SSH}{36}{subsubsection.9.1.3}
+\contentsline {subsubsection}{\numberline {9.1.4}MySQL database and MySQLdb library}{37}{subsubsection.9.1.4}
+\contentsline {subsubsection}{\numberline {9.1.5}Serial port library}{37}{subsubsection.9.1.5}
+\contentsline {subsubsection}{\numberline {9.1.6}PJSUA library}{37}{subsubsection.9.1.6}
+\contentsline {subsubsection}{\numberline {9.1.7}pChart library}{38}{subsubsection.9.1.7}
+\contentsline {subsubsection}{\numberline {9.1.8}proctitle library}{38}{subsubsection.9.1.8}
+\contentsline {subsection}{\numberline {9.2}Configuring hardware}{38}{subsection.9.2}
+\contentsline {subsubsection}{\numberline {9.2.1}Configuring the cell phones}{40}{subsubsection.9.2.1}
+\contentsline {subsection}{\numberline {9.3}Location of the files}{41}{subsection.9.3}
+\contentsline {subsection}{\numberline {9.4}Setting up the parameters}{42}{subsection.9.4}
+\contentsline {subsection}{\numberline {9.5}Test descriptions}{42}{subsection.9.5}
+\contentsline {subsubsection}{\numberline {9.5.1}Smart test}{42}{subsubsection.9.5.1}
+\contentsline {subsubsection}{\numberline {9.5.2}SIP test}{43}{subsubsection.9.5.2}
+\contentsline {subsubsection}{\numberline {9.5.3}GSM test}{43}{subsubsection.9.5.3}
+\contentsline {subsubsection}{\numberline {9.5.4}All test}{43}{subsubsection.9.5.4}
+\contentsline {subsubsection}{\numberline {9.5.5}Manual test}{43}{subsubsection.9.5.5}
+\contentsline {subsection}{\numberline {9.6}Result descriptions}{44}{subsection.9.6}
+\contentsline {subsection}{\numberline {9.7}Using the software}{45}{subsection.9.7}
+\contentsline {subsubsection}{\numberline {9.7.1}Web site guide}{45}{subsubsection.9.7.1}
+\contentsline {subsubsection}{\numberline {9.7.2}Terminal guide}{47}{subsubsection.9.7.2}
+\contentsline {section}{\numberline {10}Conclusion}{49}{section.10}
diff --git a/documenting/Report/test_Use_case.png b/documenting/Report/test_Use_case.png
new file mode 100644
index 0000000..637cd44
--- /dev/null
+++ b/documenting/Report/test_Use_case.png
Binary files differ
diff --git a/documenting/Report/titlepic.sty b/documenting/Report/titlepic.sty
new file mode 100644
index 0000000..befca4e
--- /dev/null
+++ b/documenting/Report/titlepic.sty
@@ -0,0 +1,76 @@
+% titlepic.sty is a LaTeX package to show a picture on the cover produced by \maketitle.
+% By Thomas ten Cate <ttencate@gmail.com>. Free software, no warranty of any kind.
+%
+% Version history:
+% 1.1: now more self-contained, comes with a PDF manual
+% 1.0: first release
+%
+% -----------------------------------------------------------------------------
+
+% No idea whether it works on older LaTeXes.
+\NeedsTeXFormat{LaTeX2e}
+
+% Package identification and version number.
+\ProvidesPackage{titlepic}[2009/08/03 1.1 Package to display a picture on the title page]
+
+% Declare the options.
+\DeclareOption{tt}{\gdef\@tptopspace{}\gdef\@tpsepspace{\vskip 3em}}
+\DeclareOption{tc}{\gdef\@tptopspace{}\gdef\@tpsepspace{\vfil}}
+\DeclareOption{cc}{\gdef\@tptopspace{\null\vfil}\gdef\@tpsepspace{\vskip 3em}}
+\ExecuteOptions{cc}
+\ProcessOptions
+
+% Define the sole command introduced by this package.
+% Very similar to the definition of \title, etc.
+\def\titlepic#1{\gdef\@titlepic{#1}}
+\def\@titlepic{\@empty} % default: no picture
+
+\def\department#1{\gdef\@department{#1}}
+\def\@department{\@empty} % default: no picture
+
+% If a title page was requested from the document class (article/report/book),
+% override \maketitle to show our picture.
+\if@titlepage
+\renewcommand\maketitle{
+ \begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let \footnote \thanks
+ \@tptopspace%
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par%
+ }%
+ \vskip 1.5em%
+ {\large \@date \par}% % Set date in \large size.
+ \end{center}\par
+
+ \@tpsepspace%
+ {\centering\@titlepic\par}
+ \begin{center}
+ \@department
+ \end{center}
+
+ \vfil
+ \@thanks
+ \end{titlepage}%
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\@titlepic\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ \global\let\titlepic\relax
+}
+\fi
diff --git a/documenting/Report/trueTable.png b/documenting/Report/trueTable.png
new file mode 100644
index 0000000..4753844
--- /dev/null
+++ b/documenting/Report/trueTable.png
Binary files differ
diff --git a/documenting/Report/uniLogo1.jpg b/documenting/Report/uniLogo1.jpg
new file mode 100644
index 0000000..ba54fa9
--- /dev/null
+++ b/documenting/Report/uniLogo1.jpg
Binary files differ
diff --git a/documenting/Report/uniLogo2.png b/documenting/Report/uniLogo2.png
new file mode 100644
index 0000000..5dc939e
--- /dev/null
+++ b/documenting/Report/uniLogo2.png
Binary files differ
diff --git a/documenting/Report/usbDetectClass.png b/documenting/Report/usbDetectClass.png
new file mode 100644
index 0000000..7233a53
--- /dev/null
+++ b/documenting/Report/usbDetectClass.png
Binary files differ
diff --git a/documenting/Report/webpageReport.png b/documenting/Report/webpageReport.png
new file mode 100644
index 0000000..75b9cf9
--- /dev/null
+++ b/documenting/Report/webpageReport.png
Binary files differ
diff --git a/documenting/Report/website1.png b/documenting/Report/website1.png
new file mode 100644
index 0000000..d5aab85
--- /dev/null
+++ b/documenting/Report/website1.png
Binary files differ
diff --git a/documenting/Report/website2.png b/documenting/Report/website2.png
new file mode 100644
index 0000000..2424706
--- /dev/null
+++ b/documenting/Report/website2.png
Binary files differ
diff --git a/documenting/Report/website3.png b/documenting/Report/website3.png
new file mode 100644
index 0000000..8be2732
--- /dev/null
+++ b/documenting/Report/website3.png
Binary files differ
diff --git a/documenting/Report/website4.png b/documenting/Report/website4.png
new file mode 100644
index 0000000..8e8ad6b
--- /dev/null
+++ b/documenting/Report/website4.png
Binary files differ
diff --git a/documenting/Report/website6.png b/documenting/Report/website6.png
new file mode 100644
index 0000000..09d9884
--- /dev/null
+++ b/documenting/Report/website6.png
Binary files differ