From fb0837bd6cf683702bdde99206686284d8043862 Mon Sep 17 00:00:00 2001 From: David Kaufmann Date: Fri, 15 Jan 2016 16:51:41 +0100 Subject: [PATCH] exercise2.tex --- report/easteregg.tex | 311 ++++--------------------------------------- report/exercise2.tex | 28 ++-- report/main.tex | 16 ++- 3 files changed, 52 insertions(+), 303 deletions(-) diff --git a/report/easteregg.tex b/report/easteregg.tex index ad755bf..06cb45d 100644 --- a/report/easteregg.tex +++ b/report/easteregg.tex @@ -1,288 +1,27 @@ \begin{verbatim} -/9j/4AAQSkZJRgABAgAAAQABAAD//gAQTGF2YzU2LjYwLjEwMAD/2wBDAAgEBAQEBAUFBQUFBQYG -BgYGBgYGBgYGBgYHBwcICAgHBwcGBgcHCAgICAkJCQgICAgJCQoKCgwMCwsODg4RERT/xAGiAAAB -BQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxAA -AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY -GRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT -lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 -9fb3+Pn6EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVi -ctEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC -g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl -5ufo6ery8/T19vf4+fr/wAARCAFoAeADASIAAhEAAxEA/9oADAMBAAIRAxEAPwDTFOFG2lFeuYjk -p4qNQakApCQtFGKMUDGtTKewzSbal9QGUlSLAz9KWS3dRUgRdafCUVstTVicnpQ8UinpSGW/NiA4 -NKJvRsVR5oyfWgDQG1+c5pR8tUUmkToalW9wPmqQW5c3ZFZ+oSgyYFSPf/IQvWqbkuSTQWM3c0u+ -nGBhGWNR4rM0HbqfCpJBAqILVyzQFaQFiLdsGakUkdKRFAXFIWx3oAU0Cq810U6GoTdyZ60+ZjL1 -JVP7XJj71J9rk9aRVi7SE1U+0y/3jSiaQ/xUDsSlsGpFOagLUqy0r2Fza7FgUuahFwMUqzjvVW1K -uS5ozUfnLR5y+9KwrklFIGzThRYVxjnAqLfUsqkqcVWIcNS1C4/NANNzRWhNyZW4qRGquGqVHqUt -SbolbkVVltXJJx3qxmlNOzC+pRMLKelOGQKtEDvUTRZzimFyAvzSb6J42Q1GDUiuSbhSd6aDTl5N -IVySMZqZOKijGKlUirE3qPzRmm5FLkVLJbdx1FNooDmHUUUUBzFXaKUIKADThXaQKEp22gUAmiwB -ikxTs+1Jz6UWGN2k1YhsmYZIp1rBn5iKuR4WpcQGRW6IOFxVK9Qq5+tX7mZEXIPNZ0khkfk5GaXK -AtpGxbdjirLW/mLyop1kqbOBU9JoZkT2bIx4qPyXPQVpuoZyDzzTkgQfw1NgMk20v9000xOOorZe -JeOKZNbRMc7OtJxBbmPsoCDNX5tMJyUz9KrNazr1U0OOhomNndWgCDtVcpUpHakIqGikyLGKcs8k -f3acUzQIWY8c1LiK4G7uCPvfpUbTzsfvf5/KpjZygdKiMMinkVJQgyakWPIphBWpopQEx7UxxdiF -uDigUPyxNC0D5iaOJpOlTR2zDripLWPEa8VLigm5A0BNRtbsKuAYoCg9qLDuUSCDg0CpblArcVFQ -4jUn2DJp4pinmnN0pDew9JCKeJx3GKqkmlUn1oILglQ96hmZO1Q80gNWApNKDTc0A0EjskGpEfvU -e7ilDUo7gWBMvpQZxVffSFiasklaUnvTPtTrwKYc03ax6VID5J2ccgVAeTUscMjtjbSy2vljOKCi -HnNSotMVealET4zigGOSnimKGHWnigh7jhRSZozQ1cHYWlU02nLyaCR2aM0YoxQ1cCICnBaQU4Ma -7SA20qoSaTcamtZEDZakMktbIn5mHFT/AGOH0pYrmE/KDUpA2k0gIY1A/Oo7m6KDYtTx4A5qneOr -SnHagRDLM75qPBJqQDLBatQWS4zik0NMZp4lVznpirhNCQbakK4Umiw7lUZ8zOKlJ9qRevSpR9Kg -m5Cc56U9M46U5selCyRjqcUFJjSRjpUMkiBW3ehqR721QnJrOu7sPkJwKTRUZFeXazswGM1GRTi1 -NNRMvp8wxTojhxTcZNOjIWQZ9akpMvbNyArTHt0I+YVIJYtvDACm70lPDD86zYitd24MXyjkVUXi -tGUx7SCw/OqMiANx09ayda3T8TojRf8ASCOBpBkVYt7AkBjg0RFEgJzzVi0miePhvrWbx0V0X/ga -/wAjb6jN9Zf+AP8AzBFdOkf8qeC/9z9arT6rBDLs3VLDdJM4CnNH9or+Rf8Agf8A9qV/Zz/nf/gH -/wBsSbm/umgSAfwt+VLv2mkWZGY81upJ9Uc/sZef3EVypkPANVZUZT0rQyDzUcm1n6U2SihyKVWP -SpbyMK2V49ajijLMBTESLbuwBx1p8doT1qVRtQCnA0EEJs/Qmq7x7WIq5IxVCQaplsmi4MTFJS5p -M1Yh6IzdKlW3fHIplvIFcZq7GynpUrcRWW3OeRT/ALOvpU/4Uhye1WSQNbLRFEqtyKm7U04BpASp -t7CmTxiRTTwRt6YpJOIyaYNmcF2yYPY1bjClaqufnJ96dDMyt1phcmeIjpUfIqwHVxUEi8mixPMN -zRmmkkUm6kHMSBqcGqMGnA0mgbuSbuKQuabmkJpcpIoB7VPBbSyc44p8FnIcHFWYYXUdK7iRn2Tc -uNtVZIXiYgitMRSdqZLaNKpyAaAM2rMN4EjCN2qB0KOVPY03FIC7JdRbMKeapyPls+tJR1pAS2qh -5RmtFcIBVKyt5WYMBxWgkLbeal6jQpdXTigY2Nn0pu0rwKZIs4Q9qdhBEQDzUgeMdazXupFPDUw3 -cx/jqeUC9cXMKMRmsyed5HPPFI8jMck02kOIhJPc0LGznFSQwNIeBmrcdsY1+6DUNlpPoZ9xF5bY -9qjNWL4fvz9KgNDLQ62TdJ6024iZHNTWfyvmpbqSDbjGWqCkUKTOeKdtLnAqTyPJXe46dq87GY6N -NLRbPqehhMI5N2btp0IijJy2ai1G9W10+SbG4rjp3/SotQ1yycH98ox94HHzD2rmfEfjK2ilSKA7 -kHEiryD0wRnNeTXzTEVJOEb27nowwWGpw5mldarU0pfGAhGCg6dyeaZaePrdNysEX33f4CuT1HUB -dncmRntVKKF5HJNEVVn8U2Q8VCntBaHXan4uglk/dumT71WXxHcxPuWUjODwfSsD7Kep7CkSY7+T -0q4Umn8T+9kzxa7L7kdUvi+5kXBcj9aWLxRMX/1rj8a5mS6UDg0xL3DcmtlKpC3vyIlXpSv7q18j -0rRdfOogRvJh8ZHONwrXa4gTvmvNNM1WW0aOVXxtII/A/wCFd/hXjEinKsMj6HpXfl+JdRcs3d9D -ixdON+aCsh11ch24qJZyp4ppHOKd5EuM7a7DkJ1vsD5qR7/+7VYhgeQRRQBO18XXbimgk1GBzVqC -IMKskgLYNJuFEgw7D3NNpajZIDViC6VfvGqyqTSEEGquSaa3MDd6XzF7VmLIQangnbuaBFveKaXU -yLTosFc+tIyruyKZBISGqO6DGMAU8AEU72oG3czJFZTzTM1pS28Ug6c1QniMbkdqBhHM6sOasqN/ -Jqn0q3BIHUAdRSJFkhXaSKgKEVbx8vzUxnth1/z+lBJVDEU9W4prFcnFJSHckL00vTC1ITQ0B0Sf -Ig+U/gKUP/sP+VDTf7J/KkEmP4TXYZkocbc7H/KgSf8ATN/ypn2ngDY1BuV7o/5ZoaBMzbpW85iR -jJNR1pSNBIMMjf8AfNU7iKNeU3fiMUmirkBFWbG2EjAnpVc1f0zpSAtwBI12gU7qaAADk9qjuLyG -EfKdxpNCEupFt+TVC61B5AQOBTbu8e4Y+lVjkmkMCSxpMEVasLcOdzDpV0W1u33kz+lBRkUhq1eW -PksSg4qsVI61JUi7p8a7atqvHSq+mkYxVssF4xUyRMZWMW8H796hK5qxdMHmYiosCk0aKQ1ZDH0F -RPKc5Oam2buKd/ZS3MLIzFN38XXH4ZFZYh2jfyZth7c1vNFR7kMpNt8zJyw9AOtcx4s8RXEu6He6 -5OT2xjtxxg9RRdXN14e1CVJpNxBYc5w/5E1i6vqEd9K74ALHoK+ZxPtZ1XzNtXPch7KlQSgknbcz -JbycsRuNMEBn+YnJ+tOlAqAStG3WnCknY551Ja6stxQqmA1ErrG3y4HtUCztI4xUpt2kxVxjK5HM -2H2o81XkkAJx1q2dPf8Au0x7Fk521qotEybKJmfOKAWqW4hKnpUQFNom5PBPJkDecfWvRvBeqf2j -pbRMSXhIC/7tebRq3UV2Pw0vPI1IwEnbKh+mVHFaYeThKMkKTTVjs7ezLMG96ui3lI4A+mKSLgDA -znnP9anXzMV6lKacYve6Ry1Ye9Yry6e0qfdwaqTaZOg3bDgVqZk96bIZNh9wa1MjFIKnHpUsE5TF -Lc2772YCocEVPUYSnMjH3pA1IfvGgdasl7lm0AdsHvSXMRVuBxT7HmQVceJGByBTEZW7BoDEVLeW -+yUkdDzUW0igGiZb2RBgEflThqLcZC/UDFV9tIRR1EacMwkXIqUEGs62uPJOOMZq/FLZ3C8qu73G -P61RkGFz96q18UOMde9W/KjHb+dRXFrEyEquD1oKM81JbyeWc00rg4oxS5g5bdSaW93LgCqzOzc0 -4gUgGTRcQqB36VIYJAM4qWOBlAwMVLibuMigRRYEHmkzU08TlulQE4ODUjsdM3NCDmnHGacmMiuw -yExgjinjHpTgFzzTwEx0FAETbcVVuTGVKsM+lXnCelZ17/rSKA1KUi/NT4Z5YfunFIU5pdoqSkxZ -b25l6v8AlxURLHqSaeItxxUv2F8daAKxFLFCXYACpHt5EPIogcRyZNSMuW8QiTFTKoXkVFFLHJja -eal6VAEZBZsnpVW/ES9uTT76VozwcVScvK+Sck0FDoJfKlDZrTjlSdMqf8RWW0Dhd2KYsssLZViP -pUgExG41ETTpGzTCM1MmXFWYobBFX7VoJIwDyw7Vn7eau2Fo4IeonqvkzSLs0/Q5/wAZaE1yHmVd -xxzgc/WuAvrSW1lKv7817NPZifKsOK5Hxb4VgWQle4J//VXkZhg3GTkkepg8WqlLlvqjzyU4NRiE -ytW5L4fCyEMCefwqe10eKEg7QK5oUimpSloZVhpUjP0P5Gtqw0PzGGd3TsuP51dtYI1xhQPpV+32 -oOOtdFGldgqUlqymNBi6bf1/+tWXqNg1uWBHAPBrqYtrGqGu2mVJA4Oa3dBKNxTjocZeRdeKomI5 -Nbd5ZsO1UGtTu6GuepSfMZ8pDCvrWx4dla2vYZFOCjqfTqRVFbYockVZspBHKhzj5l/nTpKzsTNW -R6zE+5VPtUol9qp6ZMZ7G2k67okyfwqyCcV6GFfur0OeqrjzcADHlsfekNzlMeW9A5WhSoHeulbI -wIwF7r+YqlfQohJXPJ/KtISJjmsy/ullYqmMA1IirQKKBViLVi2JBV8dKz7I/vBU11dhQVVqYEVw -xeVqjETuRgd6VTvbnvVyNAoGKAGQ2CMuWBpl3aJGuUz71cUsVxUdwhMTUakmYc5pysyEYNDIyk5F -JTTJkjTtryOVQD97pUxTIyKyI3ZDkVdtdRAwrg/UUXFYfd2yNGWxgiqRQir9xPA0ZAY/l/8AXqmc -GgCLBpYo2LDg1YS1ZhuGKsIoCD93z9BSFYVA2xflpw+jfl/9ehZiox5b0eeP7j/lVIkZIo9D+IxV -e6tVZNwGCKsvIvvSFo3Tv+VSJSua+I/8mljCbqb5a+9SRxjPFdQhwERenFY6RY17U4Re5H0oAjlX -FULxcsWrSmSqF2vBFIop4yaljtDIKbGo8wVqQ2ymIH1oCxksCj49Ks20okUL6Ul9AFkJqCKTymzS -TAuvAGByKzJF2yEVdmvsRHYeTxVREMpyepoGNSVo2BzVtL9CMHrVdrOU/dxUOGVsGpcQH3Vx5j9a -LZAz802GJZJRmtOCG3iQfIfyzSaGmQbBjFUrqIo59O1apMHmfdP5VFfRwmEsAc/lUDMZ6BmnOOaQ -Cpe5oth0Yyea1bKPMS4OOKyTkdKnt7+W3GByPSkxo0pUm7NWB4w3xxwHOc7ufYVsQag8/UY7VR8U -wJcWO8g/utxJ9u3/AI9XNi4JwZ0Ze37VI464k3Goc1LOuG61CWFefNKL2PVpRtrYkhdgauRMcCqE -cqg81aW6hVfvf1p052LfK0XrdjwafdRC4iK/lVW2ukfoatrIprZSvAymtDndTtJIXIIPB9OtUDGM -9K6+5t47mMq65449a5y6s8Ssqg9cVDjczcLlP7MZSAopZPD96R5idPStOCwMKhm4q6i/6OzIcsoy -B+NJR94uOG5qUn2Ok8MiSPRrJJPvBMN+QrTHPcVBYY+ywD0jUH6gVc3Js6J+XNduGjaJ5+KdpWQ1 -WQDGRSjy8dvzpVMe37sefpzQvllfur+QrVGAiJEeoH51m6lAiyFlH1rSVbbJ3Kh/KqOoXMAykaD6 -jpTAzT1oFK3WkFUQPyR0p0MEk7H86QDNXLO3kRdxHBFUhtFV4zG2KfDNIhAB49DVq4tPMj3KPmGf -xqmvBzUhY0o2ygNMuPmjNR21yuzDdqZd3SEYU0c/kQJKYDGwY89qqADtQdzH2q1aW4cZwKd0S0ys -FPpSr1q+IVA5AqnOEEpC9KpCYgNOBplLQNovWb/LirAPB4qlavtdR71ejbg5piYgb1o3LTt0fekU -xihMzkrjJMbG4qOJ49gzUzNHtYVFF5ZOMKfwpDsaaA1Kg5qBBJ/eqVFm9a6CSYHaKZ9qVesiioLh -5BEx3VQNBReuL87jsbP4VUaVnYknrTM0gbmgCeCJ3cECtOPeiKAO1Zkd95eMDpU0Wq5b5hipKJb6 -1d1LjnrkVnSxsntWob2Jl+8KqXk1rIvynn2FVFiaKLEkc1PYJuPPpUBIzVvT3Tpjms7sCdYwKjns -Y+XqcjmlbBXBoe4GVD8k341rROpiUisu4QR3WBwMmtC3P7hakol3L7VW1Jk8g+tSg81W1MgQ9fWk -BmHFJQTSA1LNEToha3fjOKgxV+xx5XT61XvFjDkoDUVGWgtJVjPNGtefPp8otxuLLz/P+lVWcigX -UoG0MRWdRc8GjXCy5J8xwst5cox3JkUqytMpx171q+KtJIuNyNjcM/U1Q020aORQ3JJGa8ypGXtH -FnqU6qlFehTl87nDEVGsmG2mRs9+tb19pilMqvP0rIn08xyE96Xs7FJtsmtmYAESNWpYyu3Uk/Ws -6yj4CmtK3UIOBWtN9xNF1G4qpcWUTXAZRtHU+5qZWoNaKKCK5WR3cK+QMLTdIspGufmHyEVITv8A -lJrT0xF+zM235uVH4YpKHvjq1nGEl0aLdvcmOQJnjA/kBV9WBGc1kZKnPerMF18oDGumgmjysVJS -ndLqaKhcdaQgY4NQC7t0T5pAD+NQS6ieQjZyK3pmViO9JE7YYiq+WJ55pWkLtknJqe3tg65b8KQF -Z1xR26VJdIVeo88VZA+2+8PrWtA3yDism3PzD61q27/KKmIEqv8A7D/981Uv4IwNyqy+var8ciFO -9VdVkTylHqasVjN+YcUnkyvyozVq3tlmPNWfssUS8CgdjLKMpxViyuFRtr8ZpbiOPk4OarE7Tmgi -z7l28uFAKKaqxDfIKYXZqls1PmqcHvTQmXmhiW2245OOcc1RYbWIrRVkIxVC4OJTQImsgDKKvKUB -xWdaTokik1oebAT8rA00JoMqOvFIoUmlLRn3oPlUMloYypu4qKPAdxUzogb/AOvUW1RNxUoDRhcs -oI5oubwxrj1qpb3ZRcZqOSRpGyTmukBz3Dt1NM3ZqSK2eTrip00xSM5oAqE005q29kuaa1lJnjFA -FbDUcirsFgG4apJNOhxxkGpKM7Lep/Omk1cuLRIkJ61V25NNARkkVJa3PlyDJp/2YFckVWkG1z9a -gLGwZ1ZRimglqgsJ1ZQrdamBy2BUNBYp6i6+Zx1HerNixeIDNQ6pb/uxIOx5pmnqxH3sUxl3bg96 -qasf3aipys2eHqpqgcIu5s80iygzHNIrYpCeaKh7lItJeeXDtHBPWoXmLnk0zIqS0hEsgB6c0qjK -Q0RvJ90ZpfsVwGBK8Vprbwwj5VofDCoeqZSdmmcr4ljkEyZHGMA/Ss+2haOVGdcZ5FdF4niBsJCM -bh83Tn5QTj8a5war5sNvlMbEAPPXFcGJhy1Lno4GaqQRoyDfEawrtv37L6Ve/tSRvlVRg1Snt5JJ -C+DzWbOtU0LbdRWhB90VnwAoeavwEMtK4+UnWlPSmIwpXkwyIFLF+mCB/MitYT2M3KMU76CAqTmu -g0y1QWUY6dTn1rI/sjUkILWrjn+8h/8AZq1rLzo7aGORdhUHPOc9K1itTmr4hOL2C8swgDKarE7K -0bgg25rPKbnH1FdNGN0cM5c8pK9hjBs5pvIrRS2j2gkZp7abBJHx8pq4bWJkZitirVreIoAamXFi -8B5HFQ7akks3pVsMpzkGqxpSWxikNWA6H734itS2/wBXWXF1/EVq2pXyufSlEl7k8eKpaq43qg+p -q0roMciqN8Q1zxzTAnsfuVMxNRQR7YwR1qRXIOGpkjdkTblbuMVm3ChJWUdAavXk6Rg4HPas9mLH -JpgS20W8itO1hVVHHNZCSOnQ4p66hcqcbzSRBsu0aj5qzry3DZkj5Hcd6rvczSD5nNJ50gGNx/Oq -AYSQackzRtkU3rSUkwZfS+tSo+Vge/OasIqMoZc8+9ZKnFXrOYsgXNPcROy5P3iPoaidNsmdzH6m -pih25zUM6v1FCIDdU1rGZHHpVfNW7FhuFbDNCOFVXpTs4qOORydvan4zQAxx81SJyOaiRj5gzUpG -elACkBelGaTfiq95IyqSD1qWhpkF/Puk2jp3ptgqs53elQM25smrFgh3Z9qBlidRg1mXKHeTitOf -iq03k/xUAVrOQLIAa0VkUjNZLHZIcetXLa7RYDvPIqWBLfy/6OR61Rhu/JwKSe5eZvbsKQ2xMe4c -n0oGi5HfowAzzUGozh0AzmqrF4/amPKWHNQWMJpM5NITzSDrUz1LjsTQWzzsAK0LawEGD1NQ6Yo2 -k96uGUjis5XY0DODxUclzFCOW5pSueazLvc0zegpDV2PvrhLlGjAxurltc0ubTrhsD90xJQ+1dEi -MXGfWoNeube4sZIH6nbg8dVOevWufFRUuvQ6cDVlTaVnucqLnymFWI7zzBwtQ3FqV5IyPUdKSKTy -1wBXI13PUhLmgmLPJMhyF4qeznY4B4pIn3jmpCMcgYpJITkrE6MciqV1cSJq2VP3Ixx25q1Ec4rP -uT/xMp/9xatboyxMbRZZa/vWPyXEqeytgVJZ3V+0nzXMzD3bNVENWtOYNcxg9Cw/nXRDZHnybUjq -JZZGUDsAP5VGrHcD7023vRcI54yoyfw60sN1b3CbkweSDzzkcfhXRTtZGdS71NG1dJcfTpUxyOlZ -STOhymR9KuWd1LM2xhnjr3qkJxcrFiRVljIYVmSoEkYelalRzW0Ui8rzTDlMtqAKkuLcxscUxcim -iHEFBDVoW0YaFc56VQHWr0E6rCuaEwcSb7NHsLfNkD+9VEjNxj3qSe9JQqpNV4pCJAx5qiTUQEIK -dlAMtTUcMoNRX0qhOKDNop3kgkmODwKZ5LFAwoJ3GrdvGDEoqi7FEgg4p0du0h+WrF7bbBuFMs3w -2KSE9gWzmPRaZJBJHwy4rTiXjNOlRZ49rCggx8Gl2t6VfOnxL/EfyFKlvH6HH+faqQmZtOR2U8Gt -KSzt5I/u4PtxVCa2eFj6etSBYtr4tiN+vY+tSzvtXNZ4OCDT2ndhgmmhE4BNWLVJQwIHAqK2XfIB -271pxLGFAFbiLCY2D1pQdvWmKVXrQ7hhxUpgNA82UipQRGMGoIpNstTlQ4zT5gGtVe9PyVMar3rr -jAOahsaKXerEF3FCmOc1Wdqb1ppjRLc3zSE81A0zHvSNE45IprAgUrgITSbqQnFNzzSKW5YtlDyD -NXVUAVWsUB571a5U9KkohubMy5I61QmiaIkEVsA1m6rIvnEAYwOfegCix5NCnmkJ5oHWs5uzRrHY -t2l15be3er/mbwGXkVjZ2nrUr6vDYQtukyCDgelRKrFK7tp5lxp8zVkXb252ptVsEnmszUddsNNU -NcSYLdB64xn+dc7r3jtVDiMH0+9XIanrM97u3Oxz7muXEY6L0SehvHDRpq8ne+tjq9U+JEQMkdv5 -WcEZDHIrmb7xNcXUzOzn5j0zWO7EsSaaWyRXNKrOb1bD2qT0ij0PSryPUNCkjQ7nhDNxyTuHB/Ss -83JVsMMHvWN4R1P7HqcKlhtlDI2TjGRx+p4rpdQ0KW43yx4z6D+dEYufmzpw+LSsmQxXka4IIqRr -/LAAishY7iKTDA1YjJBGaOWcTqUozWlma9s5bmqV0f8AiYyf7q/yqayuVACmq1yc6jJ9B/KqjqzL -Ep8rJUPNT27fvl57iqw4FTWnL1vDZHnT+N+pt6BvdZRj70jqccg1z/izULrw14gc2jsgkRHKjofb -HSuh0CAxR7hyHd29jycH8qyfiZbKYre4OCW4Jxz37/hXQlL2e3QJ8qVupVsviVMiqlzHvA7lufz2 -1taX4/0eSRR5qoTjJLYH0zjH615y/eocsp4JFY80oy3M+ZHtttrFncAYkBzVvegXJOBXh1tqM9o2 -+OVlPsa19K8eX9myiRg4z1/ya0Vfuhcke56bfNufAqvg1haP8RdOvdq3LKHzjG4D9K37a9srwBoZ -UbPYEZq41lJicfMZtIpcnpU8kSgcUQQKT8wq0S0RCGRu1NaN4zWhsC9qjvI18vIHOatO5LiRWt1t -+RjTLmZnc81ERg0hzQNxJbZQzjPStJIQq8VkhmXoasRajcRkAnco7GgVifUopVjB7VRjbYc1fluk -uYCCcVRIxTRnJFyyui52HNXQV25rN0/Akq8N2aaYWGyEupFEX3BUjIPLJqOEE0IzY7a2eOlNmiWS -Nh3qXG2mMD1FTyDMmSMo5BpMVNeuHl4/GoapAaVioMgrQjUA1mWUyo/NWm1ONRxkmtBF7YGqCdvK -JFVjqk/8DYFQSXEkpyXOfrTQFqO7gU/OTUn9oW/Z6zDuNJQUX7i/RyfLBH41WaUt1NRDJqSK2lkp -NBYaDuNWoLfjJp8VkIzkjn6VMF2ipBFZ1GcYqteYVhVuUgtxWfesTcEZ4oKI2INNBxUghLJnmomy -GxUgWrOface9W2u2A4FZcUmxwa0o9roD60FK4faXqjqTnz2/CtDC1mapc2yTsTJj8M1k3bqapNtW -IApz0qO4ube3Ul3GR271maj4tt7YMgdc4xnFc3rPiZpUbZJye+TmuWvjU9InTDCqKTnY29V8ULGp -CEDjI5rnNS8Ryzo3zkk571jzX0sp5Y/nULSFjWEq057tjdSMdIpD5ZmlYknNMoAoqOW+5Dqt9RjC -o24qZxUMnWiUF2J5h0EmJF+tem6BcrPp1pICG3RJyOhxwa8uXlhXong+QDQdP5/gb/0KnQfJURUZ -XNnU9KjuoCVQBgCQcVz0thLGfmXFdfZzK6EHmqWq2gdicD9K7Z0Kc430N8BiJxm0769znUTZipY7 -K3a5WaZ5URh8xQ//AFjmp7m0CgkdqSHbIip3yBXKo+znY7qiVSnqTQw+GmfE11Pj024P5g/0q22m -+G45I2srq5ZhyQ/KYx7nirNp4Wt1s2Dv5jud+/GCM9uD2p1loy2DN0bJJ6Y6mtqEHUPOrRjFtstW -sQRRgY5rE+JCr/Y8ecZ3gj9a6BGC4rlfiXeJ5VvBn5uWx6fhXU1yw+RhJ3Zw7dTxUbCpCeaaa5ZL -VkSIytN8unmilYQwjpgkY9Kvadruoac4MczkA5wxzVTbRtoWgXO10X4jRkxx3Oc9Dzj9a7XT7y3v -YEmgYMpA6dvY14qBivQPhnrPnwPaOcuCpH0AOa0pVJcyTYLU7Tf0pZAjxnNRrSTttQ10RasS0VJQ -FciomPNPbJJphBpDYqjd0p/lsByKSL76/WtGONXXpQJoz+aTNXL20CrvQY9aokMG5rQTLFo+2QVo -qQelZCkjGKuW15t4Y1MWZu9y4d2PakjIDY7037SCvHNRh5UlLsuAapCZYPJqOXO0qKPtAPY0Bt3U -UyTOuLeSM7jyD3FRVpXMe6JsDPBrOIwalX1Am5p4UmkAyamiRmIGDWohscLv0FP+xzDqKvRQrGgw -KUsM04sCqlhIRUEsDxuQa1YsEVW1NUAUjrSuNMqwJkitC32oBmqdqyq4zV6MKwzQO455Y8cVG7Ai -nPGjHpUciEdKQEE/y5xWc53SN9TVu+d1wuepwaqxJvlH1qRpl21XEAqleMplO2tHyv3QVfSs+8tJ -ImLnpUsa3KxbFXbGfdGVPaqL1LZuQ+M9qgss3l15FtI7Hja3P4GvMNb124e9nIbjJx7Cu78W35td -Kk2jO4bT7Z4ry6/mDzOfescROyaOiloiOfUJZSdzZqs0jMeSaSQ/NTc1xT1Y5VJPqOJoBphNKDTR -PNclBpQKQDilBxWiirbE3YMuaglHNWCaglXNTOIXZGpw1dz4KuHfTIE7KMD8Sc1wvINdF4L1Sa3l -NuoLBsEcE7cZz0/lWbXK0zXDayszvWm+yqOe2age6Mh65rNW/nvroBm6jp9BVpeJki65z/Kn7SXd -no0MMlqStCLnKr1I4qnaWUq3IZshVfvWs1p5ceUHNZk926SEe+KrlafNe+w6/vwilK1rnT2cmIUz -6D+VSSKrcisfT9YZikcnoBUtz4q0yyuHt55Crrjsec/hXXQ0R59a9y821ASxwACx+gGa808XamdQ -1W4kB+QNhfoOK6jxL4qtZ7N7a1kw7jDN3CkHtx6VwVzKTI3Oeadep2ZkMJ5pKM0h6Vle5M2FFFFB -IUUmaRjwaVwFzXQ/D29az1tMH767fzNc0Hwa2PCbN/a1tj/non5bhRTndlU7XPXI3yuaguH3Meak -YYUfT/CoZa6YvQc4jDTltpJBkCm1dsGXYQetUQ0UU4fnsa1LVlaMVnXa7LhsdKs6bLztNWJovkK6 -881SuNPySY6uoRUkaKxNK3mTKRhy28kR+YUzJrcubWKVcEZ9PrWPdReVIVxTSaAj8yQdHYfSkM8h -4Lsfxo2k9Kay47GmiHuWLS88uQb+V/Wr4uoJADurHo5BpktG5Hgn61l3qqlw4Xpmo0up0GBIwH1N -DSNKxY9TUhYv20O5Q1aFuionvVayZfLUcZq0oyK0JHkAionUZp5Vh0NMO8HmqQDwCi5qheGUynd+ -H0rQUMRyKp37ozY7il3Gitu21atbkEBc81Tan2xxIKkLM0wsjDNMYMDzSxSEJQ8g2ljSGZmoOTLz -2ptpGWbNNvJhLKSKnsEcpkUmNFldwqrqkqhAueetJd3U8HfFUJJnkYlj1pDjuIQz9BmiIlHqeyUO -fwqOeIxzVDNbFDxe7/8ACP3TqMkYrzC8kLyE+tesapH5+k3cJ6NESR7gHFeUanay20zK67cEj8jX -PiDaEfdKjmmUOaQMMVyTlZg9xacgqPfUsXNKHxCepKvSkPWlFIa2jsZjWYU0jNRuxBpwckUpSuNM -Rtorb8D2P2m8nlZcpFC35npWHxmu+8B6QlrpguHXDTYPI6YzWVR9DfCQ5p3sxdLieK7BcEdasRXq -w6k0r9OAPwqDUbr/AEtzESB0/KqjSOWzmketH4fkbt1qrywEIcZ/Ostpm8z5qfZTq6hG60TRqr52 -k1VOm+5hMvabGS6t6c1meJLLTbjVJdzZIxg59QKtx6ktnEWfhV6n/IrLuUsb+ZpHbLMc5JIx/Kto -zujlr072IDotocsk5HHXd/8AXrG1G0WBztcNzWzcaKjEtFdkfLgZ7fgDWJfWzW7spk8wg9c0ozfm -zCcbFbmnCm0oq0ZS3CiiimIaaazDBpXNMY8VLloAgPNdF8PQG1yHPPT+YrnFro/h5/yHIvw/mKKP -xF09z1SXG38qrSdamkzgfT+lQsDmulbFPcaiZYVfto1QcVRVtrCr1syuoOatGbIdQjA+bFR2LlJV -96vXNuJID0z2rNXMbe4NBDNYK2akEJP8b/nUEMxeIHvUqtKe9WKSuTrGg9aztaSPcCvWrZmEaEu1 -Zd7cGaQntQQFim6T1q09vA/ysKp2cpSUe9XXwRuFNA9wFnbqMbRVO9sWjbcoypq8GLDineV5yFWJ -/Ckr6iMUginLVq50t15Q7vaqu0qcGgkuJI6HKkitC0uWdBkZ+lZuKt2MyoQGrQRoA0juFIJpVdCO -DVa+lUHCmmmBM9/Ai46ms+aQSOSKa7Zp0EJkb2oLRGykjNNSTY2a00tkEOCBVS5sCMuv5VAE8F7E -4APBpbqRfs7c1mZIPFPmuyYNhPNTqBA3L/jWpaukcAzxxWSkgVwTzzSzXbMcAnFAEt/cJKxAqnya -kjjkmcd/WrSWgUcgVBoiGxmWN8N3qS8UsysOnSoHtZEc8cU4SyFQhOakobdHZZynaW+Q8AetefeJ -LaKS5lMh+Ybvx59+a9GUYFeb+LpWi1S7TcOvODkc5rHEbG1FnMXYCsQPWq+41ZuOSarkVxyWtxTe -om41PA4NQEcUsTANSjeLuS2XRSN0pqvkClbOK0i7kyZFJTA3FOkNMCO5woyT0oloEVcmsojcXUSA -ZywyPUd69GN4thpdtZQcMsY3Efw5H3frXJeFfD8jXC3Fx8uw7lGD1Haun1B1eR5SMZ6VlOVzvy+m -4lE5J560BSaM7mq1ZyQxA7xnNKK1OvVkVoZIZ13LjJxWuYoyCSKrpcWiOH8skjocZx+lMuNXtwSO -R+Fa3tYhdSPUFtGjZWOFPBPpWdJpmnzLiK5YE9ef/r1cuZbK6t3UkjcTz9cVnPoUb4a3umXjoDVM -5sTO7GSaJcQgtHdsy9hngVkalDcxzMZX389a1pNJ1OJGK3JZT1ye1Y2oQXccmJH3VUNEznk7lbJz -ThTB1p4qkzOQUUUU7k3GNTDT3qM0mAL1rsvhZAW1Nn7KMn8K41Otd78KYGzcy9sKMdxgn+eaIvle -hpSV7nbsc01kDLmnEg01mA711U23HUU1ZkDqd1JG0ysNrEU5utIDtOaaZDRpqZGiC55xWfcKUlb6 -mrNpeK2FY4PY1Xu2zKfx/nVXFYs2Eo2Ed81ciOazbCQCTHqa0DPHEpJOKQmU9QMyyENVQmp7y7Fw -+fwqvTTJkizpqqZxn0q3K4U1lxTNHIpBwM1e86GRAd3eqRL3Jg47U7e5+6KRNpQdKeuKlbktDSkz -f5/+tVO/tmjAc9zV2S6SNM5qheXZn4HAq2hFq6i53KtQ/Mg9KttNGx6imXKI8eVxmrEQpdyKuM00 -zu/WmEGnxRlmFBQZYmr9qqrGOKSG2i4JFTkIFwtK4RY5uFFQXMn7l/pUhY8ZolSMwt8ueKkZis2C -aick1dubNcF0GPb0qlJxmkBGaTvTkG58etW4bBcB2qCySwhCIWx1qckE0RqFXAprKQ2aQoMWQ/Li -qUiASHHrV3II5qCSIZzSaNIsiIO09uDXmOuW6PNJIzDd6V6XfusVnOzNswhwfQ15d4gmU3MuCTyR -WGJNqOhj3GCagZaldsmmGuaRNR6kbLxUbZDcVMwyKjZetS0QSwNkVMfu1UgYhsGrIbIxVU3bQTGF -DIwVepOBXT6F4fjtohJOuWyD06YrK8P2STXqyScqnzY9619d1tLeFkiI5x04I9amo9dNTowkY7ux -c/tKGOXYp6cdqWW7Mw61ytvqTtc/e61t29xvjHOah3O2jVgtFYsGTFKbhkXd6VAJCzAVq6dcaakR -SdvmVSxGP89adNczKqzcVox1vrWlJbZc7SvBDHkmqVzc6PduWEo56DdV26l8Pm2zuTLdAG/+tWTJ -Y6TK5ZJVHtx/jW1jldWV3qWGSKS0dQcDzEGfzqs+iXOd8F03sN3/ANenrETA8QJwZ1QH8xmo20vV -4CfLmLKOn+c1T1MpybZE0GtxcBsgcZrL1H+0Q5E2PyFakk+uwckbwKyr681F2PnKR9aXNyitoVAT -mnqeKjHWnqRinGRlLcdQaSkJ4qySNzimAkmi4PNMVulRJ2e4Eq9a9P8AhvDGmk71UBm6n15rzCM5 -Ner+AohHosfGD3Pr1q6dm0a0/I2ZCQKjGSaldCaWGIjORXTEUrXDyQVqKSFl7GrQFLtDDmmtiGZ+ -GU0rMxqaaPDHFREU0yRYJTG4NLc3LSN7VGSaTvQDJIYZpecVP9lGzB61LZOip0NWAsbc4oQmZEiG -NyD60KxyOavXkCsDgciqO0g0JkyL1ufkHNTg8VnpIy9DTzdSYxnFUm7kMkvJlYbQaqmlbLGpYbcO -MmpEWf7Nm/vfqaJLWeBQXzir561X1F2IUZ4rcRU5NSRCQtheKYMVPaDMn4GoLELXgPGKYbi9Hr+V -XttIyA0CRRN1feh/KkN5qI9v+A1dKCkKgdqBoz21C8TuB/wEVUkkLVpanHGLbIGDnrWWRiswJbVH -Z8qM4q2WvNoHl9PcVTtZvJkz2PWtJJUdAwNBZCk92OPJ/wDHh/hSme4/iiP4YP8ASplZaC60hoh8 -2Qj7hH1pN5PWpmIIqJsUmVDco69/yDJ/92vLdb/4+pv98/zr1HXv+QXP/u15drYP2mb/AHj/ADrD -Em9MyWPNIaVhzTWOK5myJoUUjgYpA5oaQ02Q0QFir1OslQyAZzTlqANnQ7oW4llbGAuB9aztSvHu -biRs9T/KmGdli2KSMnmoC1KWxUZSitB0bsrAj1rZ068kZOT0rB3HNXLe78mFvXtU9S6FRqerZuPe -xqpO4H2zUmhSWVzdSyXZwAF2e+cg84+lcybySV8ZPJrS0uCKd182Rl9MHFXRjuyqtdTkknsdNcWm -iXGF80gjpxj/ANmqu2h227zIbpgeo5pj6Xpc/CTBWPQg80DR7i12tBcsV6nJyDVibuSTRyGHy43w -2/k+uBVd/wC3I+j7gKlYTGCRgfmDkGoftmq27bTGzD1pobVmJ/aeox5WWE7e5xWTql4ZXPBFa0+t -SsjiS3bO0AN074x0rE1K5MrH5cUmxSWhCjbqdUcJOakzzRDcyktRTSE0UhrUkhnPNNXFEzc0zOMV -nN+8BYjr2PwxH5Olwp6KP5V5LoQD6hbDH8YP8q9i03K28Y/2V/lW1BG1LRFwAcGnBhTO1Jit4uyF -URLxRUe00bTTUiGhXjDCq8iFTU539qjdSaESQkU+K33YJpAtSK0q8LiqEy1EiIuKUts+70qr5tz/ -AJxS+bc/5xTRm9ywxDjmoJLRTyvFJ5lx/dNJ58/oaGDIWG04pOtK+4kkikTg007CZPFb5A3VOqhR -ioBNLjgZo86f+7TJNXeD3qrqMg3BR2HNS8bhiqt7kzGqERbqt2Byc/WqVW7Ifu6Vy0XAQaXio4x7 -07FMLAcUhIFKQSetNdSOazBFfVMfZx9f6Gsl+taep/8AHv8A8C/pWU3WnKNwCpIXZWGDTVjZlyKW -MYNSWloaUXzRKaMVDbTjG0/hUu6pGhrtimFqV3BpuTUyNaaKHiaUR6PcZOM/Ln0yDXmGs3IeZiO5 -zXdfEXURbaSsGeZHzj2ANeaXEjuxJrnxE9S0MdqjbmnkYjLVHv8A8/5FYCkGKaxpRljSyJsHNSSM -NC0m4GlFEhWFaom609iaaRmlIBnepGOFqW2s5Ju1JeW7wgZx1oirsdmtSGMZYVo2MYnkSJn2BuCc -4xVGFKtWsZeRV9a1pp2ZCdpG3FppP+quGA756fzqddMvx832rKA56j+tQrpUigeXc5/En+tS/ZNQ -g487cOp+ZTTNYNk0zulqyjqTmq02q39uuyWLeFU4JBP06VYlMy2Ssoy+5s/TtVdtVkRGWa3DNjqe -MfiKAuRv4hieDY1rtb+Js/8A1qx7+7jnclB3rZmbTpotzjHHIxisqdLRWYw9KT6BN3SK0Z6cVIKZ -uG/FPpx3IYGmt0pxprdK0JKcz/vMUbuaZKcy5o61i3qM3fCVsLnU7dQf4l/VhXr0IxXmHw0tHfUv -MI4Xyj/48a9QjNdWHWnyNY6RJhQKRTxSitYkyFHWnimDrT6ZNhpbFMY056YRTJaGfxVLF1qL+KpY -utMTJgaWkFFNESFzTT9KdSEUXFIrzjngVFirEqiosc0CZYgI2Cn7qjh+7+NSCkKxOobcMiql8488 -1aFwh71QvXzcGtQGFquWJPl9Kohqv2TARCpAtRsmOlLuT0/Wo1cClDjNTdgOaRQQMYqOWYDjmkeU -GVabKVNAFXU5d0YAqgauX+NlU6Gxos2yjyxTZo9rkjoaltl+QVI8YcYpGiKak5qZZGK4Jprw7WpV -GKmRUB4p1NAp1SzSOxwXxSmdr61iHQrJ+m3/ABrkjCqKWkHaus+KK/8AEztGXskmfqdlchdTsd2T -XNiC47FWc5PHSo8kGlZzTSa5pXciZy1JYSAc02eQuTn8KaGwKY5yaLtCewLyafniogcGlJovcm4p -ap7OAysCBwDzVXNWLa9MC4/WluVGRqzfZ7ZPlxnFZV3cGZvWori9klflj+dEfJzVRi00wnNNWRLC -vAqzbqS4AOKiUYUVNbglxzit4r3DNbmtHp9woxHdMf6VIlrqUZ4l3/l/Wo4rO4wPLuvm7AZI/WpP -I1OLHzKwqWjZKyJmeVYSOrCoTdptxNCc/wCfWpdzqmcbjnpUU11blcSQNuHoKBLqR3cunvCeCrEd -AOKxLsxBiIzkVsXUlgyA5IJzkAVk3wh+8nSlLoBBESWFWDVeL7wqwacSGJ2qOQ4WpO1QXB61X2SU -VCfnNKPvU1j8xqS3jMjBfWsn8XzKR6N8MrZfsrSbeu3B+hNdpHgVz3gGwNnpUAI+8Cf1zXQiuzD/ -AAo0+yvQlU0vemJTxWqIe46jNFFBIhpKWinzCY3bzT060lOXrRcTHiiiiqREhaKKKQn1IpajFTTC -ogKBEkPepBUcXenigQyGZSDlhVSZ8yE9eaILdpFzmoplZHINWAvmVbglIjHNURycVOsMqqDUAW1l -NCyH1quoucdDSr9p/u0ATGT971NKzn1NV/MnB/1Z/KlM1x/cP5UAJeNkc1XGc1JO0jfeGKbHQXEt -24/dipRUducRilZxQUhk/WmpSvyaVallRHYpR0NFKtSXFnJ/EqFTapJjlWXP4nFebXTkyN9TXrnj -ZCdCu8An9y/TrXkNz94/U1z4uPUqLdiCQ4pu7IpZKQVyz3FLcKQ0tNJpEiUUUUCGkc0hftSFqbnm -hbgTKoz0qxGBiq8RyKsxDitY7ikSL0p8RcMNtMHSnReYZUCd61XwgtzcGmX8Q+S4z/wLFKP7Vj4O -GXv34/Go47K+2gw3e446ZPFPVNTj4kcMKho3WxOkpjt2kIyd7GoZdSsxH88JLevT+lTKTHa5PPJq -pdXkG3a8Jb8OP0oE0VruezckIhz71k3Z2vgVp3lzbOSRCVP97pWVeH97xUvcTGxsd49qtBqqRfeq -yoOKdNXIqbiueKq3DYHWrDHiqdyfmqpkojHLVs+GLZLjUIcjIBOfyrEHJrt/hlpKPMt04zgjjA9+ -aVOLc9i4bnodjCsUSgDHAqxTY1wKeCK7IK0UVJipTxTFp4qiR1FFFBIUUUUxBSjrSUo60CHUo60l -FNMmSuPoptFAmrCOM1HjmpaTbSuJoRBin00UpoJK1u2IqqXT5nJ9hVqPi2NUpv8AWn/PrWl0BJbg -NKoNXiRt/GqVouZRV9UUjmi6AcT8uaFPy5oZQENCqvligAU5oahEAzilK1Aytej5RVdKs3v3RVZR -SHFluNlEYyaaTkmosmnJyRSLuPFOApQvFFJlxDFOWkpVqRoo+I4GuNNmjUE7kdeBnGRjP4V47rFn -LZXUsLg/Kx59R2Ne4lQylTyCCD9D1rhvHPg3cslxGucgkEdRjtWeJXMVFnm7feo4xT760ntLhopV -KsCevtUQNctSmovVAxSaYadmkqWkITOKaWNKRTDUikIaSlNJVJaEy2HxH5hV2DoKoxH5hV2AjA5q -4C6E3SiGRvOXHHvR1ot4/NnVc7c9+uP5fzrVfCC3NqGxvuqXQPHZxj+dSj7XGNsj7qPsO1MpJjjj -/Ioht5Q43Sbhg9/aoasbxd0Pkc/Yz9apSXMwX/UZ98j/AOJq5KjtZnb/AHjVKX7QFOWA/I0XGZmp -T5j4GOarRHcvNS33zIcetRW/EZz61H2jOoOVBmp1HFQryanVeK0hoS3cgn4/KqcnJq9NDI+dq1Sc -fNRJAi7oGmG8vIhjgNk/hzXrHhnSVtLKFOu0dfWuM8AaQjzK7pnJH5YFelWkCwxhR24rWirJaFRT -3H4wKjPWpWqI9a2TKaJEp4piU8U7it5jqKKKZA6iiimIbg0YNOooEFFLiikJhRRRQIKSnUlCFIKK -KKVyWU2YpBgVTY5arkv+qNVCvNUIms/9YPpV0M2Kp2Y/eZq4G4oTYDmLbDmnIf3YprMuynIf3Yp3 -AATRk0ikUuRQMguulQCp7qoVqWNDlBp8YNKiU8AUFC/w/jRS9vxpKTKQUUUVJcdhwNRzosqlWGR6 -U/BoIyKUrdSoq5xPizwF9uzJCELZOD0zx34NedS2ciMwI5GemeMV7F4tna00m5dQNzJtyewPXFeZ -y2EEsznbhSTgegNc+ISbuU6asYW0g0hFap0uONMuwJ7+lZ11sWRguMVgyZLlIiaaynNBbBpS9DVy -WRmkpWpKaJewdKsW7EkDNVzT4JPmFOIjTH3RSJkSKaSJgVFD8Vo37u40bVtqdu6hS+CPXFWPkkXc -rj86wNLh+2Xnl5x61dW3nhvQqSEKDxz1/CpdRvQ2irI0JxKbMbCB8xz+JqhNvU4cgj2qzqTuulzs -DjG3+tZNojz6bNMD0wMfU1M+ghtxLag4BqGfHGKrK26YZOeammJJpdhXuSRdqsRHFV4h0qdfu1vD -YzC5vXgXEeORRoGnG9vY+M4IJz9ahlG73rqvAOjjcZSmchcfSly80lYcVc7TRrJIoF4961FkAGKr -WqlYgMVOAa6YRiktC9hzdKZ3p56UzvVWBO5KtOpq06hEsKWkpaYh1FFFBIUtJS0AwooooEFFFFAg -ooopCkFFFFAipL/qjVPPzVcl/wBUap/xVRJZtasjtVa1qyO1NAOO3bTwq7enpTO1SD7tNgIoFIQK -UUhqRle5+9TBT7n71MFDGtydelKtC9KVetJFgAaMGlWlpFIbijFOopMtAeBUFzeJbIXkPyjrUzdK -ztd/483rKt0Kgcd4s199XuykTEQqSAOxrEmKQRlmqeT75/3j/Oqup/6isK5s/hRk39/JJIVXgVQk -JJqa4/1zVC/WsjKW4w0Gig0Gb3ENIaU0hpol7CUL1ooXrTQi9Zk4FWHhkl4UZqtZ9BWhbdfzpoaI -rGK6spzKAAdpHPvViyN1Ld7m6AHNOk+9Uun/AOsb6UGlNssakCdEuPUjH61nWcL2vh+Xf1kO8D0B -PFaWof8AIGm+o/maqXH/ACBB/wBc1/pVS6FM52C0mVw3p71bGe9EfSl70rGZLGMCnFsUifdofpVx -2JLeg2wubtVPPOf1r0rw7ZLFEhwBwK878K/8fq/T+temaL/x7p9BVYbf5lw2NNQMDilxSL90UtdP -YpbDTSL1pT3pF60Ej6cKbThR1EwoooFAh1FFFOImOooooEFFFFNiFooopCCkNLSHpSkAm6jdSUUi -D//Z +V2UncmUgbm8gc3RyYW5nZXJzIHRvIGxvdmUKWW91IGtub3cgdGhlIHJ1bGVzIGFuZCBzbyBkbyBJ +CkEgZnVsbCBjb21taXRtZW50J3Mgd2hhdCBJJ20gdGhpbmtpbmcgb2YKWW91IHdvdWxkbid0IGdl +dCB0aGlzIGZyb20gYW55IG90aGVyIGd1eQoKSSBqdXN0IHdhbnQgdG8gdGVsbCB5b3UgaG93IEkn +bSBmZWVsaW5nCkdvdHRhIG1ha2UgeW91IHVuZGVyc3RhbmQKCltDaG9ydXM6XQpOZXZlciBnb25u +YSBnaXZlIHlvdSB1cCwgbmV2ZXIgZ29ubmEgbGV0IHlvdSBkb3duCk5ldmVyIGdvbm5hIHJ1biBh +cm91bmQgYW5kIGRlc2VydCB5b3UKTmV2ZXIgZ29ubmEgbWFrZSB5b3UgY3J5LCBuZXZlciBnb25u +YSBzYXkgZ29vZGJ5ZQpOZXZlciBnb25uYSB0ZWxsIGEgbGllIGFuZCBodXJ0IHlvdQoKV2UndmUg +a25vd24gZWFjaCBvdGhlciBmb3Igc28gbG9uZwpZb3VyIGhlYXJ0J3MgYmVlbiBhY2hpbmcgYnV0 +IHlvdSdyZSB0b28gc2h5IHRvIHNheSBpdApJbnNpZGUgd2UgYm90aCBrbm93IHdoYXQncyBiZWVu +IGdvaW5nIG9uCldlIGtub3cgdGhlIGdhbWUgYW5kIHdlJ3JlIGdvbm5hIHBsYXkgaXQKCkFuZCBp +ZiB5b3UgYXNrIG1lIGhvdyBJJ20gZmVlbGluZwpEb24ndCB0ZWxsIG1lIHlvdSdyZSB0b28gYmxp +bmQgdG8gc2VlCgpbQ2hvcnVzIHgyXQpOZXZlciBnb25uYSBnaXZlIHlvdSB1cCwgbmV2ZXIgZ29u +bmEgbGV0IHlvdSBkb3duCk5ldmVyIGdvbm5hIHJ1biBhcm91bmQgYW5kIGRlc2VydCB5b3UKTmV2 +ZXIgZ29ubmEgbWFrZSB5b3UgY3J5LCBuZXZlciBnb25uYSBzYXkgZ29vZGJ5ZQpOZXZlciBnb25u +YSB0ZWxsIGEgbGllIGFuZCBodXJ0IHlvdQoKKE9vaCBnaXZlIHlvdSB1cCkKKE9vaCBnaXZlIHlv +dSB1cCkKKE9vaCkgTmV2ZXIgZ29ubmEgZ2l2ZSwgbmV2ZXIgZ29ubmEgZ2l2ZSAoZ2l2ZSB5b3Ug +dXApCihPb2gpIE5ldmVyIGdvbm5hIGdpdmUsIG5ldmVyIGdvbm5hIGdpdmUgKGdpdmUgeW91IHVw +KQoKV2UndmUga25vd24gZWFjaCBvdGhlciBmb3Igc28gbG9uZwpZb3VyIGhlYXJ0J3MgYmVlbiBh +Y2hpbmcgYnV0IHlvdSdyZSB0b28gc2h5IHRvIHNheSBpdApJbnNpZGUgd2UgYm90aCBrbm93IHdo +YXQncyBiZWVuIGdvaW5nIG9uCldlIGtub3cgdGhlIGdhbWUgYW5kIHdlJ3JlIGdvbm5hIHBsYXkg +aXQKCkkganVzdCB3YW50IHRvIHRlbGwgeW91IGhvdyBJJ20gZmVlbGluZwpHb3R0YSBtYWtlIHlv +dSB1bmRlcnN0YW5kCgpbQ2hvcnVzIHgzXQpOZXZlciBnb25uYSBnaXZlIHlvdSB1cCwgbmV2ZXIg +Z29ubmEgbGV0IHlvdSBkb3duCk5ldmVyIGdvbm5hIHJ1biBhcm91bmQgYW5kIGRlc2VydCB5b3UK +TmV2ZXIgZ29ubmEgbWFrZSB5b3UgY3J5LCBuZXZlciBnb25uYSBzYXkgZ29vZGJ5ZQpOZXZlciBn +b25uYSB0ZWxsIGEgbGllIGFuZCBodXJ0IHlvdQo= \end{verbatim} diff --git a/report/exercise2.tex b/report/exercise2.tex index 521608d..0134db9 100644 --- a/report/exercise2.tex +++ b/report/exercise2.tex @@ -6,7 +6,7 @@ First we converted the file {\tt team15\_ex21.pcap} from the pcap-ng format to t \fbox{\parbox{{\textwidth} }} \begin{lstlisting} -user@host ~ % editcap -F libpcap team15_ex21.pcap ex21.pcap +$ editcap -F libpcap team15_ex21.pcap ex21.pcap \end{lstlisting} Then we filtered out the large flows with more or equal than 400 packets. @@ -14,7 +14,7 @@ Then we filtered out the large flows with more or equal than 400 packets. % TODO include readflows.py-source \begin{lstlisting} -user@host ~ % ./readflows.py +$ ./readflows.py {('113.15.85.25', '179.160.238.111'): (463, 0), ('114.176.157.191', '221.72.61.209'): (541, 0), ('134.134.122.170', '179.187.246.122'): (419, 0), @@ -26,7 +26,7 @@ user@host ~ % ./readflows.py (Format: {\tt (src, dst) : (srctodst, dsttosrc)}) -We then split the pcap into different files for each stream using the following filter expressions into the files {\tt large\_flow\_\{1..7\}.pcap}: +We then split the pcap into different files for each stream using the following filter expressions into separate files: \begin{lstlisting} (ip.addr == 113.15.85.25 and ip.addr == 179.160.238.111) (ip.addr == 114.176.157.191 and ip.addr == 221.72.61.209) @@ -49,9 +49,8 @@ large\_flow\_2.png % TODO include bitstobytes.py-source \begin{lstlisting} -user@host ~ % ./decimal_only.sh large_flow_2.csv > large_flow_2.dehexed.csv -user@host ~ % cat large_flow_2.dehexed.csv | awk -F, '{print \$8}' | sed 's/5950/0/' | sed 's/5960/1/' | sed 's/"//g' -user@host ~ % ./bitstobytes.py +$ awk -F, '{print $8}' large_flow_2.csv | sed -e 's/5950/0/' -e 's/5960/1/' -e 's/"//g' +$ ./bitstobytes.py \end{lstlisting} \subsection{Rep:2.b} @@ -60,11 +59,15 @@ user@host ~ % ./bitstobytes.py \section{Exercise 2 - Task 2} \subsection{Rep:2.c} -pcap-ng format to pcap for scapy -editcap -F libpcap team15\_ex22.pcap ex22.pcap +Then we converted the file {\tt team15\_ex22.pcap} from the pcap-ng format to the pcap format to be able to use it with {\tt scapy}. -filter out large flows (>200 packets and frame.len == 42) +\begin{lstlisting} +$ editcap -F libpcap team15_ex22.pcap ex22.pcap +\end{lstlisting} + +Then we filtered out the large flows with more than 200 packets and a frame length of 42 as mentioned in the solution from task 1. +% TODO \begin{didntwork} ./task2/readflows.py % {('53.151.211.106', '217.115.203.44'): (213, 0)} @@ -90,8 +93,13 @@ trying to decode the second-largest flow: ip.addr == 96.55.191.225 and ip.addr == 217.115.203.44 and eth.len == 42 -> didn't work +% TODO \end{didntwork} + +Finally we found out, that scapy removes the frame length when parsing packets with the {\tt PcapReader}. + +This does not happen with the {\tt PcapRawReader}, so we rewrote the script a bit. -found out, that scapy removes the frame length from the packet, rewrote the script... +% TODO continue writing here filter into files diff --git a/report/main.tex b/report/main.tex index e46ca16..b0a170c 100644 --- a/report/main.tex +++ b/report/main.tex @@ -24,11 +24,6 @@ % Use sans serif font. \renewcommand*{\familydefault}{\sfdefault} -% but typewriter font for lstlistings -\lstset{ - basicstyle=\ttfamily\small -} - % change heading fontsizes. \usepackage{sectsty} \subsectionfont{\normalsize} @@ -104,7 +99,10 @@ \usepackage[babel,german=quotes]{csquotes} \usepackage{listings} -\lstset{literate=% +\lstset{ + % typewriter font for lstlistings + basicstyle=\ttfamily\small, + literate=% {Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 @@ -114,6 +112,7 @@ {ö}{{\"o}}1 } + \usepackage{tabularx} % schei encoding @@ -145,9 +144,12 @@ git clone \url{ssh://git@git.ionic.at:22/lva/15ws/netsec2}\\ This is revision: \textbf{\gitAbbrevHash}. Document (.tex) compiled on: \textbf{\today} \end{footnotesize}\vspace{\fill}\newpage +% TODO add image +% TODO zentrieren +\input{easteregg.tex}\vspace{\fill}\newpage + \input{exercise1.tex}\vspace{\fill}\newpage \input{exercise2.tex}\vspace{\fill}\newpage \input{exercise3.tex}\vspace{\fill}\newpage -\input{easteregg.tex} \end{document} -- 2.43.0