From c9d7939233339e66a8d3a9818674ad07ccd5a2c2 Mon Sep 17 00:00:00 2001 From: Never Gude Date: Mon, 20 Apr 2026 19:11:44 +0200 Subject: [PATCH] refactor --- übung_1/agt_übung_1.aux | 8 +- übung_1/agt_übung_1.fdb_latexmk | 12 +- übung_1/agt_übung_1.fls | 4 + übung_1/agt_übung_1.log | 149 +++---- übung_1/agt_übung_1.pdf | Bin 48895 -> 49645 bytes übung_1/agt_übung_1.synctex.gz | Bin 22498 -> 22594 bytes übung_1/agt_übung_1.tex | 173 +------- übung_1/aufgabe_1.tex | 6 +- übung_1/aufgabe_2.tex | 78 ++++ übung_1/aufgabe_3.tex | 26 ++ übung_1/aufgabe_4.tex | 16 + übung_1/figures.pdf | Bin 0 -> 10235 bytes übung_1/msb-eps-converted-to.pdf | Bin 3745 -> 0 bytes übung_1/msb.eps | 180 -------- übung_1/msb.ipe | 691 ------------------------------- übung_1/ngexrcs.cls | 76 ++++ übung_1/ngutils.sty | 150 +++++++ 17 files changed, 434 insertions(+), 1135 deletions(-) create mode 100644 übung_1/aufgabe_2.tex create mode 100644 übung_1/aufgabe_3.tex create mode 100644 übung_1/aufgabe_4.tex create mode 100644 übung_1/figures.pdf delete mode 100644 übung_1/msb-eps-converted-to.pdf delete mode 100644 übung_1/msb.eps delete mode 100644 übung_1/msb.ipe create mode 100644 übung_1/ngexrcs.cls create mode 100644 übung_1/ngutils.sty diff --git a/übung_1/agt_übung_1.aux b/übung_1/agt_übung_1.aux index 50c2411..386d009 100644 --- a/übung_1/agt_übung_1.aux +++ b/übung_1/agt_übung_1.aux @@ -7,8 +7,8 @@ \providecommand\HyField@AuxAddToFields[1]{} \providecommand\HyField@AuxAddToCoFields[2]{} \providecommand\BKM@entry[2]{} -\BKM@entry{id=1,dest={73656374696F6E2E31},srcline={10},srcfile={2F686F6D652F6E657665722F446F63756D656E74732F496E4E612F32365F536F53652F4147542F6167745F65786572636973652FFC62756E675F312F6167745FFC62756E675F312E746578}}{5C3337365C3337375C303030535C303030705C303030615C3030306E5C3030306E5C303030625C3030305C3334345C303030755C3030306D5C303030655C3030305C3034305C3030305C3034365C3030305C3034305C303030425C303030725C303030655C303030695C303030745C303030655C3030306E5C303030735C303030755C303030635C303030685C30303065} -\BKM@entry{id=2,dest={73656374696F6E2E32},srcline={57},srcfile={2F686F6D652F6E657665722F446F63756D656E74732F496E4E612F32365F536F53652F4147542F6167745F65786572636973652FFC62756E675F312F6167745FFC62756E675F312E746578}}{5C3337365C3337375C3030304B5C303030725C303030655C303030695C303030735C303030735C303030755C303030635C303030685C30303065} +\BKM@entry{id=1,dest={73656374696F6E2E31},srcline={1},srcfile={2E2F617566676162655F312E746578}}{5C3337365C3337375C303030535C303030705C303030615C3030306E5C3030306E5C303030625C3030305C3334345C303030755C3030306D5C303030655C3030305C3034305C3030305C3034365C3030305C3034305C303030425C303030725C303030655C303030695C303030745C303030655C3030306E5C303030735C303030755C303030635C303030685C30303065} +\BKM@entry{id=2,dest={73656374696F6E2E32},srcline={1},srcfile={2E2F617566676162655F322E746578}}{5C3337365C3337375C3030304B5C303030725C303030655C303030695C303030735C303030735C303030755C303030635C303030685C30303065} \babel@aux{ngerman}{} \@writefile{toc}{\contentsline {section}{\numberline {1}Spannbäume \& Breitensuche}{1}{section.1}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces $\mitpi $-Zeiger des Breitensuchbaums und MSB blau hinterlegt.}}{1}{figure.1}\protected@file@percent } @@ -16,8 +16,8 @@ \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Tiefensuchbaum in orange und MSB blau hinterlegt.}}{2}{figure.2}\protected@file@percent } \newlabel{fig:dfs}{{2}{2}{Tiefensuchbaum in orange und MSB blau hinterlegt}{figure.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {2}Kreissuche}{2}{section.2}\protected@file@percent } -\BKM@entry{id=3,dest={73656374696F6E2E33},srcline={135},srcfile={2F686F6D652F6E657665722F446F63756D656E74732F496E4E612F32365F536F53652F4147542F6167745F65786572636973652FFC62756E675F312F6167745FFC62756E675F312E746578}}{5C3337365C3337375C303030455C303030755C3030306C5C303030655C303030725C303030775C303030655C303030675C30303065} -\BKM@entry{id=4,dest={73656374696F6E2E34},srcline={161},srcfile={2F686F6D652F6E657665722F446F63756D656E74732F496E4E612F32365F536F53652F4147542F6167745F65786572636973652FFC62756E675F312F6167745FFC62756E675F312E746578}}{5C3337365C3337375C303030475C303030725C303030615C303030705C303030685C3030306D5C3030306F5C303030645C303030655C3030306C5C3030306C5C303030695C303030655C303030725C303030755C3030306E5C30303067} +\BKM@entry{id=3,dest={73656374696F6E2E33},srcline={1},srcfile={2E2F617566676162655F332E746578}}{5C3337365C3337375C303030455C303030755C3030306C5C303030655C303030725C303030775C303030655C303030675C30303065} +\BKM@entry{id=4,dest={73656374696F6E2E34},srcline={1},srcfile={2E2F617566676162655F342E746578}}{5C3337365C3337375C303030475C303030725C303030615C303030705C303030685C3030306D5C3030306F5C303030645C303030655C3030306C5C3030306C5C303030695C303030655C303030725C303030755C3030306E5C30303067} \@writefile{toc}{\contentsline {section}{\numberline {3}Eulerwege}{3}{section.3}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {4}Graphmodellierung}{3}{section.4}\protected@file@percent } \gdef \@abspage@last{4} diff --git a/übung_1/agt_übung_1.fdb_latexmk b/übung_1/agt_übung_1.fdb_latexmk index 9217161..4ce6b79 100644 --- a/übung_1/agt_übung_1.fdb_latexmk +++ b/übung_1/agt_übung_1.fdb_latexmk @@ -1,5 +1,5 @@ # Fdb version 4 -["lualatex"] 1776689922.84723 "/home/never/Documents/InNa/26_SoSe/AGT/agt_exercise/übung_1/agt_übung_1.tex" "agt_übung_1.pdf" "agt_übung_1" 1776689924.63041 0 +["lualatex"] 1776697900.74979 "/home/never/Documents/InNa/26_SoSe/AGT/agt_exercise/übung_1/agt_übung_1.tex" "agt_übung_1.pdf" "agt_übung_1" 1776697902.55915 0 "/home/never/.texlive2025/texmf-var/luatex-cache/generic/fonts/otl/euler-math.luc" 1770519352.28514 417132 89f085d929a7f52a226e499fed2b660f "" "/home/never/.texlive2025/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-bold.luc" 1770519351.28214 128405 86240d2e88c12243734a13e4bf6704ec "" "/home/never/.texlive2025/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-regular.luc" 1770519350.86413 127322 64667bb671c8def3fa5d85c341ebd817 "" @@ -17,7 +17,7 @@ "/home/never/.texlive2025/texmf-var/luatex-cache/generic/fonts/otl/texgyrepagella-regular.luc" 1770519351.40914 310182 64e3ff98a9959bea5d737ee8b9a06ff2 "" "/home/never/.texlive2025/texmf-var/luatex-cache/generic/names/luaotfload-lookup-cache.luc" 1776608606.25376 23014 4a1f49530b644afddd7c9abad44fb6f5 "" "/home/never/.texlive2025/texmf-var/luatex-cache/generic/names/luaotfload-names.luc.gz" 1770519350.80013 381420 8c34679872cd58fe28bd24cc6f0940ba "" - "/home/never/Documents/InNa/26_SoSe/AGT/agt_exercise/übung_1/agt_übung_1.tex" 1776689920.30511 5918 404e74808326e7cb118bd3c5e2c239db "" + "/home/never/Documents/InNa/26_SoSe/AGT/agt_exercise/übung_1/agt_übung_1.tex" 1776697897.66689 304 d56b2c71c7672c3ab6ee2cdcfe258fc5 "" "/home/never/texmf/tex/latex/ngexrcs/ngexrcs.cls" 1776614186.59271 2041 f7d79ac75cecdfbe676fa2a93e60930b "" "/home/never/texmf/tex/latex/ngutils/ngutils.sty" 1776618253.70411 4493 7f39562722b52c0e9a76c17c4438174e "" "/usr/local/texlive/2025/texmf-dist/fonts/opentype/public/euler-math/Euler-Math.otf" 1761682777 433104 26cb5ed06a913ce89a33ff41234f5c7a "" @@ -171,8 +171,12 @@ "/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1770517628 5541377 824b1e5beafd2ebda40585373b35bb6b "" "/usr/local/texlive/2025/texmf-var/tex/generic/config/language.dat" 1770517624.99251 6800 99336720d16c8191172704bea65615e7 "" "/usr/local/texlive/2025/texmf-var/web2c/luahbtex/lualatex.fmt" 1770517696 5655839 756767735d369e65a483b47207bff649 "" - "agt_übung_1.aux" 1776689924.38713 2915 9d880eef7bcc0cb3af62e0b7eba25b39 "lualatex" - "agt_übung_1.tex" 1776689920.30511 5918 404e74808326e7cb118bd3c5e2c239db "" + "agt_übung_1.aux" 1776697902.28891 2429 81986a9a774647930a5ac9e94cda7c51 "lualatex" + "agt_übung_1.tex" 1776697897.66689 304 d56b2c71c7672c3ab6ee2cdcfe258fc5 "" + "aufgabe_1.tex" 1776697508.46334 1313 9a143a43ac6e7341ab427860198035fe "" + "aufgabe_2.tex" 1776697727.20732 2574 4462577f3400843a00f378bf393c326c "" + "aufgabe_3.tex" 1776697749.8824 1092 7e430e37e65a2141c25db6271e3e6e91 "" + "aufgabe_4.tex" 1776697772.78547 718 3d1c5acc0d22695136e721c12d5042b8 "" "dfs.eps" 1776689817.37668 5896 bfdfa03e5701d0b1d7555aa426023dcf "" "msb.eps" 1776424417.18606 5913 81dafb89427e3a448260b7481993e119 "" (generated) diff --git a/übung_1/agt_übung_1.fls b/übung_1/agt_übung_1.fls index 7799f3d..e64a2d8 100644 --- a/übung_1/agt_übung_1.fls +++ b/übung_1/agt_übung_1.fls @@ -174,9 +174,13 @@ OUTPUT agt_übung_1.pdf INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/cm/cmmi7.tfm +INPUT ./aufgabe_1.tex INPUT ./msb-eps-converted-to.pdf INPUT ./msb-eps-converted-to.pdf INPUT ./dfs-eps-converted-to.pdf INPUT ./dfs-eps-converted-to.pdf +INPUT ./aufgabe_2.tex INPUT /usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map +INPUT ./aufgabe_3.tex +INPUT ./aufgabe_4.tex INPUT ./agt_übung_1.aux diff --git a/übung_1/agt_übung_1.log b/übung_1/agt_übung_1.log index cc39179..b5a8513 100644 --- a/übung_1/agt_übung_1.log +++ b/übung_1/agt_übung_1.log @@ -1,8 +1,7 @@ -This is LuaHBTeX, Version 1.22.0 (TeX Live 2025) (format=lualatex 2026.2.8) 20 APR 2026 14:58 +This is LuaHBTeX, Version 1.22.0 (TeX Live 2025) (format=lualatex 2026.2.8) 20 APR 2026 18:53 restricted system commands enabled. -**/home/never/Documents/InNa/26_SoSe/AGT/agt_exercise/übung_1/agt_übung_1.tex - -(/home/never/Documents/InNa/26_SoSe/AGT/agt_exercise/übung_1/agt_übung_1.tex +**agt_übung_1.tex +(./agt_übung_1.tex LaTeX2e <2025-11-01> L3 programming layer <2026-01-19> Lua module: luaotfload 2024-12-03 v3.29 Lua based OpenType font support @@ -40,8 +39,7 @@ Inserting `luaotfload.aux.fixup_fontdata' in `luaotfload.patch_font_unsafe'. Inserting `luaotfload.aux.set_capheight' in `luaotfload.patch_font'. Inserting `luaotfload.aux.set_xheight' in `luaotfload.patch_font'. Inserting `luaotfload.rewrite_fontname' in `luaotfload.patch_font'. -Inserting `tracingstacklevels' in `input_level_string'. (/home/never/texmf/tex/ -latex/ngexrcs/ngexrcs.cls +Inserting `tracingstacklevels' in `input_level_string'. (./ngexrcs.cls Document Class: ngexrcs 2021/12/21 ADS Exercise class (/usr/local/texlive/2025/texmf-dist/tex/latex/koma-script/scrartcl.cls Document Class: scrartcl 2026/02/02 v3.49.2 KOMA-Script document class (article @@ -190,10 +188,9 @@ Package typearea Info: These are the values describing the layout: (typearea) \footskip = 47.6pt (typearea) \baselineskip = 13.6pt (typearea) on input line 15. -(/home/never/texmf/tex/latex/ngutils/ngutils.sty +(./ngutils.sty Package: ngutils 2025/12/24 Never's LaTeX utils - -(/usr/local/texlive/2025/texmf-dist/tex/generic/babel/babel.sty + (/usr/local/texlive/2025/texmf-dist/tex/generic/babel/babel.sty Package: babel 2026/01/26 v26.2 The multilingual framework for LuaLaTeX, pdfLaT eX and XeLaTeX @@ -1301,7 +1298,7 @@ Class scrartcl Info: loading recommended package `bookmark'. (scrartcl) `bookmarkpackage=false' before \begin{document} and (scrartcl) you can avoid this message adding: (scrartcl) \usepackage{bookmark} -(scrartcl) before \begin{document} on input line 7. +(scrartcl) before \begin{document} on input line 9. (/usr/local/texlive/2025/texmf-dist/tex/latex/bookmark/bookmark.sty Package: bookmark 2023-12-10 v1.31 PDF bookmarks (HO) @@ -1316,26 +1313,26 @@ Package babel Info: 'ngerman' activates 'german' shorthands. ) \openout1 = agt_übung_1.aux -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 9. +LaTeX Font Info: ... okay on input line 9. (/usr/local/texlive/2025/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] @@ -1360,61 +1357,43 @@ File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e )) \c@lstlisting=\count345 -Package tocbasic Info: setting babel extension for `lol' on input line 7. +Package tocbasic Info: setting babel extension for `lol' on input line 9. \scr@dte@lstlisting@maxnumwidth=\skip73 -Package hyperref Info: Link coloring OFF on input line 7. +Package hyperref Info: Link coloring OFF on input line 9. \g__cctab_next_cctab=\catcodetable17 -Package epstopdf Info: Source file: -(epstopdf) date: 2026-04-17 13:13:37 -(epstopdf) size: 5913 bytes -(epstopdf) Output file: -(epstopdf) date: 2026-04-17 13:14:32 -(epstopdf) size: 3745 bytes -(epstopdf) Command: -(epstopdf) \includegraphics on input line 35. -Package epstopdf Info: Output file is already uptodate. - -File: msb-eps-converted-to.pdf Graphic file (type pdf) - -Package luatex.def Info: msb-eps-converted-to.pdf used on input line 35. -(luatex.def) Requested size: 71.69984pt x 74.25963pt. -Package epstopdf Info: Source file: -(epstopdf) date: 2026-04-20 14:56:57 -(epstopdf) size: 5896 bytes -(epstopdf) Output file: -(epstopdf) date: 2026-04-20 14:57:58 -(epstopdf) size: 3721 bytes -(epstopdf) Command: -(epstopdf) \includegraphics on input line 50. -Package epstopdf Info: Output file is already uptodate. - -File: dfs-eps-converted-to.pdf Graphic file (type pdf) - -Package luatex.def Info: dfs-eps-converted-to.pdf used on input line 50. -(luatex.def) Requested size: 71.69984pt x 73.23537pt. + +(./aufgabe_1.tex + +File: figures.pdf Graphic file (type pdf) + +Package luatex.def Info: figures.pdf , page1 used on input line 26. +(luatex.def) Requested size: 71.69984pt x 74.32692pt. + +File: figures.pdf Graphic file (type pdf) + +Package luatex.def Info: figures.pdf , page2 used on input line 41. +(luatex.def) Requested size: 71.69984pt x 73.08054pt. LaTeX Warning: `h' float specifier changed to `ht'. -[1 +) (./aufgabe_2.tex [1 -{/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map}<./msb-eps --converted-to.pdf>] [2<./dfs-eps-converted-to.pdf>] -Overfull \hbox (2.21837pt too wide) in paragraph at lines 153--155 +{/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map}<./figures +.pdf>] [2<./figures.pdf>]) (./aufgabe_3.tex +Overfull \hbox (2.21837pt too wide) in paragraph at lines 19--21 \TU/TeXGyrePagella(0)/m/n/10.95 kann nicht exis-tie-ren, da die Sum-me al-ler Kn o-ten mit un-ge-ra-dem Grad [] - -Overfull \hbox (2.02118pt too wide) in paragraph at lines 163--169 +) (./aufgabe_4.tex +Overfull \hbox (2.02118pt too wide) in paragraph at lines 3--9 \TU/TeXGyrePagella(0)/m/n/10.95 wer-den, wenn be-stimm-te an-de-re Auf-ga-ben ab - ge-schlos-sen sind. [] -[3] [4] (./agt_übung_1.aux) +[3]) [4] (./agt_übung_1.aux) *********** LaTeX2e <2025-11-01> L3 programming layer <2026-01-19> @@ -1422,30 +1401,28 @@ L3 programming layer <2026-01-19> ) Here is how much of LuaTeX's memory you used: - 22908 strings out of 476076 + 22934 strings out of 476076 100000,1373583 words of node,token memory allocated 3192 words of node memory still in use: 61 hlist, 40 vlist, 38 rule, 9 local_par, 78 glue, 31 kern, 9 penalty, 20 gly ph, 213 attribute, 62 glue_spec, 107 attribute_list, 1 write nodes - avail lists: 1:1,2:655,3:303,4:4,5:433,6:52,7:4721,8:16,9:476,10:4,11:478 - 45020 multiletter control sequences out of 65536+600000 - 118 fonts using 28706879 bytes - 122i,8n,114p,11297b,574s stack positions out of 10000i,1000n,20000p,200000b,200000s + avail lists: 1:1,2:649,3:303,4:4,5:433,6:52,7:4721,8:16,9:473,10:4,11:478 + 45027 multiletter control sequences out of 65536+600000 + 115 fonts using 27962135 bytes + 122i,8n,114p,11236b,574s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on agt_übung_1.pdf (4 pages, 48895 bytes). +gella-italic.otf> +Output written on agt_übung_1.pdf (4 pages, 49645 bytes). -PDF statistics: 132 PDF objects out of 1000 (max. 8388607) - 94 compressed objects within 1 object stream +PDF statistics: 126 PDF objects out of 1000 (max. 8388607) + 84 compressed objects within 1 object stream 17 named destinations out of 1000 (max. 131072) 33 words of extra memory for PDF output out of 10000 (max. 100000000) diff --git a/übung_1/agt_übung_1.pdf b/übung_1/agt_übung_1.pdf index 4ed4906f7a9dc283a782d120807ac6b5328933fc..790ac7c3b130b71554bb6a012fa6b8effaa64d07 100644 GIT binary patch delta 11808 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 delta 11384 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 z zLxJ=j}G2D1K<2ZK~PW@ci^=D{5TpoXilgh z@jznaV5nvUD5zAZuMk5y4Ojtw0f;d-9w-pvsHAU+J91Ifbt70^noNwN>u*_WbI4?l zT9TxsLs-cn4v0kMWxGkmAMaZ6Vmw|G_(rm)_Lt7N9dHbQ1q?_e0HbeNiLE&URu!K) zetaQf3%Z(jujBDM<-^&72&=vx?F+nZKVFXj%Wwx=4bqK2XJ{KXSA3~rJLYJx1S#Rz za{@aiR*P}yhDo1X#dE_;g4F?x-)hMSl3l+jPzzJN{0X{w#5LoRX_s^u;mGo*xm%-n zN>soLw}@2$FVdHKDA7rJ1q9x=Y`44;q?B!?)g4i8FPZZ45>&E{y}LD#MFN&|=bU8|$r59L;423+C(E2}=@o z-lv7xD1xi>&HoML?d}->>#sB7rd7}ci=!&)g~Xg};-jPpw9P72ue)#s85%%`h3#XK z1M*xxV*43<#91q_y~;bL3QvgXpS954?b9$OMFTKSl$x1MrE>dYuvSlyHH;PprwwD& za3@_a5;?72vBvZwvbBJvlawWY^FNVdxfq?H_0lNaDyg4v=q}3j0n)=cK6h5DG_WUnT`Vb%oi?u;Yf zDJ-JRvwjN|*!}_vF!2~Yppvs9eUZkpKd(eY`)stUy%uUsHwBUhpdO;?=4dzL4WOWtZd5(mE@#8r~CEu zc1wXToiI_3O*L=oA}Cuzles&+@MK-{v}Qx*;IvC@tYGIPQZljbQ_Q{%fr3vkHi(~i zTwAt&_dtI~n>BO~#6)*DI>!33-Sg55w55H~4BDBJ$EU3Tor#dT-H zgyxnsFUNtnGGtH9(YZF^TC9H!zZyY-^4{)tl8v(@4AW6HNBA@t()+aCX+_^)hwPtb zh(V{manP&*tr+s?`{utD)y+eRIlKF(y=Rfc_TRvczFl-*Wz%2#dI!1JRH z+j6H)^>-<@xqRSfpQJU$Vf1wh@K4#Kne0waaZ?hkmnh<6H#mLg?2DwES^Bow(ofLK%Cd&|6cDOPTZb zNoA!J${uS|1Ihp$?lR9{=gXSRLP@tkAcl1ZfG9QuMawwBzrH`rddO9OQAe6nlLo1m z4_2~s-~Wsd zZ(|k+k(?If(paLQR*nG=VgzDrfHw4lfjE9)fD{-jLzcftHULdnDIi)9riQPe0~km_ z3NwTyj}TJ*g&BgAD&9a8DuxN!_|DJ}455L6z~nJOrc$IKPI(dy8mW;;kdk7i2Kby; zXh>=)<9k0T$ZP5QwelX|AjY+f4YS3A(9oQaS^_3WZ>h+8>B?BVL9~n#5n@=6_O1<* zHhisJf`;J&LX7LbpmOu@bN^3q`k$N*{$BwIaziMZ0Qb9GZ0qLkLHVBcy=Pn$us}YZ ze{``)y>%xN0qnqg?aNtN%BXu34#M8$!OSs!9C~wlaxn%kxf4SfP8whD>wEw5_ChKNT9S&-e#|Zv$uS^F`)5Hk!v`5=hGi{eSXanK+>m)@XRXg! zGS<>AL7<+nckNhzWAJyAB83@SlW)m!v1#bdd5BSW2un;AUb%V|k(?|u7Tm*9cMy19 zogJGQCgh__6t3)%V@quOa}jdEV-!(fXX(MRR zxtED4!;Id~i8sGw-g~e(R zawUyOkPCEjOm@MJp!D33SLf&dNQ1iAdt4Zf@|{k-70%KnR$Ex6|CCUse@0Tlg-K~4 z^-u{8z9NO2V{V8H{=84-2THMkLIz0dTe=O*&yrG`Lk_Ch8Qea~uX#-E$kD|sQQv4L z+X&?6&WKm`&*NY?l4vJ@;ITd@c$-2fMCRw>$l)-lGAIS!9|@xUh1{3u!$=bxFW*Qv zW?DzNkM`o0Q3d8cP79-99Bb0Vzm5qDZ#^Cm%nA{7rS09D&kA8{BSAB6MQwrPMRAsQ zmyLCQzT9^x-E7?|+eBr`+m|Rnqq4Fb=?xw_-+{n}3Xc zesyR0RhnV;smgfEezs%O+1j{dpXW#N$byN_NI~Y6qbM<^P;K#_r)e%NStiZ(t?;R~ zXa6_-=JCzq!^6joyN% z7=JQfW=+0H=wAe+20lT|3h(K1R7?fp0k6Yc#K*q8I2~OfztC=sOvmI!e_*!zg})tz zT6-@Sfdd-FG7de5KD{0&B9LObRF77{{+$PZGk4)Oc+eO9OW+Yt-?F+NZKYs%Z*;5T z|5bb6!B^R*Gd*!Qw_O?*cn_(pxHB1qteUn1 zpcQ)9u=bv+>DMB^Ph_6WC<_tS`95AjBI{592=HxA{c!QWzYeT9)aehHRwyWf42M@TOWIfpgsb$$kF$Hy1SQ( zv3sU2B7R~}$#%EM{gJ1fu_Thj{TA@_bnyC0Jl7bcKgW$ycv86EL+847$u-#KV56L+ zW5Bwk6%S_)@2c(z3gvIp!J^Norc+_*!oab1HqqO#-Q#kh7u1c!x&IJ0i>cM;Nh>*x zxQ+(3W_7}e(1mPRn4%A0MhuEuN4CG{kZ)_6-9%lo!fb)%Q-5tugh~BC?E7OyYc<4G$n*@lU4Kd)WN)=}1)Lq=RJE`T}0z;X_TIu^XXdb z_kR6#^RQP!FmgZOFy}izqVT!KCDyVQ0=19Mn~Yn#azdiZ(sMvfSmeO^1*vnG`Xk1& z69roZ*;l7(&%DCDf%y+#JaiI6aEYYsyV54%uWs-+K}QW2+1iuI7DK@(iq22R{z{)f zGSozw63oE!`3lL6Bn4N4cZ&H~y4%aY!5nh(Q2nF55!K$#D5?co=t-vQg1h&`ycHfed}lLdLN z!58c9_?F>+Z%9k;%LZG}c=$n3A4h7Y(b=}y&=K%AF`givA7Nyw<&y455^$Hv8n|68 zfTeVCW+ZYuWiB_pD`_Fg`vA%!IoK1bZFb7B=|tR3cgm<>3(US7Z^L?9%81X^-DuJt zAjYQG>Jtad&%>o$gOya6C?wSU>`^eRC_ZvDiYPJnVc)1Vl#8sIg%-t=|>2*FQ|DG_FSuMhZj2<`4NX)^r0&opV1c-2Q21h zr0G6;N&R@^Hb}s+kT;F&wb_fz;I4=*uAZ!6|WCsUEi*#(*DXMnr3BQ&1}jS$;~~3h(g?q@m=qkX|B>0oNOl$9#ub*LJl3g}IGE}&Le468 zK57cP%^&|$kBrU6F>;b~xCs)3O>;G{jg8W@YEs&C)*)S__@nMj2nN#SCsB8 z=5;PNRo?zaE|wu^V;pf*yWtDn7xc@i)&42CImi93?j6!?=}gB<;J(XB6>J7|8pFP)RM-cY;*tB3^uCM)&6_caT_~j9NbuacYag11CeTf z+4W>PUOW{EjExXx?8(+LK2NT>pI9Do`kvIpowYd~@ra}l9S{0=TpDv;RP*sTbEN-4 z{iV}V6qZtwu}yV5v6x?ZALb;==bs-F zm+x?Y9H?&SZr$+%QNdV)v z&${8Y+aJgJsBcrY6$V#*{wO2pNC6d+|?MH_}=F1-Z9{;JAsY&_j^cTM$=6(;mH%RgdD{g`H zoln(P6K;me5=>fkVFHDw0O%Mq%#%@Zx_ZnIL|~*0>26}MG;L4YrVN8roO9-%*`{NzpS=>9zKvF9FBzXFYf)yD0p!V zj4_v77b_;S8ewO{pbnGI?#xsnP_{UFdny5j>KZ;M5m*;b)J`1L1Ye*Sp->eKCCZ|`6I)8{weKHh$M`1{eFA@=H1uZSO57RzkK_2_p^QV#|H0z{_)}V`!3i0R=J<< zZol8Z`TEBz7~O+`s$s@CyIDzJGZ0VUiYpleG80y#9Lo$FC26+oi?dBuxlQze(7KU*CP0 zrRCo)?d99gpWja+%Wo6;`R?;1tX?PV?*8?cx9{G3ef9qKZ-0ILVG?A`e_gGI&u{P% z-o2T{+22&lukZfPt+ihs(B(dNiS9Qj__r^&ukUYP&kFkAKE}R1y!-HVmifcO;_mj- z?fttquYP&`%k78le`h&AJRr_;K74zfI-FxOacq zfG;sY-G6-jX`1uw508tJ_?MfYS6$$TzYKkUcx)^M&VNj;;C^_Vbg6Iu_T}x%Zx6o~ z@Vx#D{~AAD{^jvzAK#~b>aJW=q^x=D zxGR^GA?xA(-Q6tb%EhG1dHLqoyF)Mh(dAvao(y^DG8{#K&AsQ!_2l96=MSjj>tDWo zczu6r`YTtFP0;K6``3S)rChmu{DPGX%6uI^CRzT<1>^(%eD~?@>-aItx^ne6WPN?W zAb9h3mUU%^pJjb~_jO*>{FVJ(SMlgq{>uJ-`{~=qcMrE8$B$XBEBpMfpRv$=xqUN! z%(AZR?;re^*KgjxzPtVU>id`1_gEsge`b+acKQ$gJ!Ubi9Jk-UeDJfND?9xM{|j`x z{q&dP*Gn}d{gq=tHC`8a=ozjY3bbIGxZ6+jrwCV$0{vN!?iQ{b1>Zisd-EBq$H&(X zZ%=>B`dv93F3McA;FY6e>V@n*fBWig$B$X;l>=q_Fz>#yKYs!|ngh`dm3ICQ117VU~2|SePWi8ks%1D@VX2=$Eha3Kg#$1CyZ7UrrkR z_yG9!dhb;GkFCR={+b0}ISOvM6#w%1_%X}6vfE!CQCOVe$36_RFJ9U6VLjg7-@}CI zKV~hj_9@=|%D>wG&T_7GuK)V=_JL#i_%%zr+JAWeSB%DYpKf=N#~-uQtDT51fBE(H z>zmhKZjWE{?!?vZ!-t3OZ$AFzYyWqab+xMijqqm^cl?|s{_r3fU-r|l{~tW-`}^b9 zEbq#(@%C?TK7aUp-~XK@T{$vF|NZp(AKpD+QrrKTC0)O%^zN>=(eZPZ_+MTN zl<}OeG=(rfeEY;r(Kl~z-@F%p&MIEL*M!yYe}B7ehn`?#I{n@5hf> z)_=iy-ekT1_;Qh!KyuUmC5S#YpTF;vQ3w?imH_80^x7ooi;Wszvw_opG|8jdenJMw_ zCDk>l|Kr;O#X|jO|NZsdr+2@;d-M9C9WfbWp8emS-aXvdXaDmb{>QJsVpg~@&;H-z z=YMMs!0+HJMjcb|a1@`y3p^lx*M- zI3H@Lsr(^?WK(tdhls7U!CE&I?}Wh_YhkAhLhAqaX_BKdoh(LQOsxl*uLku>i2^MY z7?jDyQfurDdBPR^TQK^Elx#wcsH2J5+h=!;c&kjQoqCrc!ToEjc^(IwTpa2%z;Bn} z$4hwe?E8+W#n>1IVh5vR)QBodaIt{K0e;__Syk>O{*LL{_YE7oOU|c5)&`E=*%FHc zCzoQ(iW)6!&{JhwZ?fjO{`QYtoxIa@{^RZ_oua#>&pE5Xnucz`a*xI1|4Mnem?|v@_Reu zQ;nRv&h*YCk8WQSJtlRoKL>nU3l#m$%Nl$hvwJ}&^mFMO95WBrSg+tdo6JQ*!h^-2 zh+b)X5gs#^sH*$f3e$V%HC%G8JvhW%8}YvNLEh(D2|uqe31(-4 zO*y#w2y~cQayj6AIky?}f>-nad$HrHC3BwuR7y~}czYj%r zt{foEL%eh70+aaXQhaZToiN&FmP2$3y=!3RsezNG=rRt?QaLSj`1c*|Y6)BvJA9kO z6#b1ElCZX-rz%Mvc6|*CNrD~|a7w1MS!QoQ9|K&YA8x?SPwg`iY(5zK-m5By;w&c5 z15Q5v=hEo9I5xMAdH)y^yam(FKs&fO4in@w%b^uAe7XpCqh6wp#W~bc5Z^6{u@VrB z#>^F8e1PAdJk%ljrSq}+efh{Rg-kKCEP_jfS00iCS5C|}AK*aF1HPN}L2SPYz$oUQ?;e|!e5 zQAw$!93;In7(zZOIgXvgl%(KnATA3M9vlqOYGt{!b1}L!ym#TLh1jve@%3$u#oB3k zi5S_f1P{epx#1=iW9Vgf>L%XZWaIef0p5%P1@2vH|0Y66$Cm86FS z8sYj$U{a1V{XVp%95J&5UsF9d$F_%Kg3U2#I6M&>RBOZRNC6#MRU^ahXl9B~x6*(~ zT3tymW+Dto*dL;G=b`Zwd^c(>mQ?g?0|jXErrI`9FwbJnj_`?^6B99Z8hO#wMv&b# zvP=sg_(AqK7_J)TBrCyVGa6;0v`#_`s2ie&_za7TO$^ z$0{gW?Qw995i__3OWDttVDxl&wy_`FwQ?|V`RZqdFDUS0uVM`ahRyUvb`wc{{g)Wy zq3>J4_;C2Ya8|qmUO0KA1Ky1o3E$;7)ZnD=F2})i$3%Yq9)wqXwO|xIJm!LVRnfyI zO^)l6&_}_$9Jol_ZIp5XH-MZ|^Z{n-se|nF+zoaMIk8r(nMKJ-oCSi`Q^EV31S>2C ztL0!cr&LwB_?S5v-OjKM;F0TghP{u;&?$Wsyjx`^!gI<>e!*OirCZ5|e}|bzwSzO< zJ(S~+a2o73%U-JJ<=hEZCRe2vECdjlqKbiK4j$D^?CY85nvxziNA*T^JBLpO4_wnn zI2Y9>1xHiVDyPL2T+ihZ!>5*cF7NgaI>}amrIQa&E7?Il#w)x)OFON@_wU1<&S*58 z*8y4s&2p^anr^t2cOdo-qu_nuC+{jdhNPG9Q9!|@V9Z$~B49~iQm~rC!!WfmX%0BJ zg-1mS5d-Y_;xr-!t`CdCVZxizws=J0Ie2&w3sDs_TcB|z5b%+((B~>d*{KseiP(Eb zI#!Cruig$-vE0Ga6V~xtk~>Yl@5XOfxV@!~?H#+74|v4z=Hk`iJAH*(g`Smw)2@up zY6kQ+3^4XKiJ<+6Poj!OZ*aEMtT{X!`M@nPi3pWj`wNZ;pTx1p$ueLQm}VzR4opP> z-pGOj!_37+JYJyZvG2Fbw?^T6)Rch>+y~fO*7f4u_s@QqdgTc8%Uk%@l)B4Q=BrKff#pCL-pUN#4FhDR>uz zURJn5NqPzI^e_e-yMrt^VMPwc=^Cc&Lvzd}f~yVcsYPXsiPPup9EF>iX;FB^vgLy= zoSV}X<4Yqrd-{dCo6VGUA95jQW2_g2!*_-83U%eT1tJ;lW63grfFMp2S`?es6xmj@ ze=Io^LXWB9W1*EfjVbQ-i!qfkB-?P_$;ViO4QBHM-%Bo-OJa_KKHOB^Q=_ph;MRcN zJ1xi>_#JImQF8Dc-v_A@5U`+gvmqqHbAOb3V+w&aF@;6p!A7tw3Qt_$&7vNdl!N1L zqZC!R%N!OQ_(r}h7LudFcH>Fs84)ib<|*_^#OMcOKVtNQ({cY3g2z$xK>Tz8aX#_i zDsm8ISS%=HaV&3Ayq5gAB$q0j$=_Zg?>CDtplQYN5a6l8lcRAn$kEez5%;lH(4<;w z#Bd3RRC)!0l=p*jJDVSrPaOSAHmoKX6r2i8@op;MxhkNy$4)s8|4qof%klz)ZJQ;c zFMHmv_1tYZ4GSV-p}YgJpV~`?8*|9Qn&iEl5rDwdR=rDFmS8yD0O-8%VR&)$2ODx+ z0od6+rn~4C74Me-rXjgs0=Rz6vZwCz_5IT%n;bVe+&oZ9NpGI+E>$bGX!6y*qn-Bj zcDkqFV*^#dM;$u+`5JzC3)N2BokEC&U#d*vEl>Jbo&WmuBdFlr{H5N^{Iw@ zzJ{yKR6Fga9(rHW;zh6P*iY>kv7g$DyRe^n(w-YMIa?Pe75av%g!g?F-b~~`kb=0e z(T-tH-==M;^7tld4&OFhjOO5QG}S4c6nscZnA6-s65Qz2wn-%ioLShE3l3VE)ypnM zM2Rt)MGGbxC0=W*;C*Wqvrt-niWHM=XPvTWO#QV~*@fG#tH&Z$796nr+bN*XNx}P3 zQ-SlA7vG3iKI}ZQdI>eb8@E|=)LdZT>VD8JpVaJR$5jk+i#0a;P8H;~i{w@pWKqo$ zw9Xs=aKx(?#ZBb6_~@7my*(8^5G973yhelq1KBUMioWuShb}zA-YjlW_}G4%Ihl23zguSg!&nMI#cX zM4uNNIm4Nk%}7LzuvBx_g;$uTrf3caAa|b>2P{3_uS=Q(J*)V#K%h?>x-3eRcf8|Y zWaDahzjdB0%%Z62C4AgcuV^ayk)|H~G-B)O-i-Ctql?3jcytTeIZb|SK@$sOpPS|# zyZ36vbn4XAM~eyKV7l9caknC4Rvz%Z5O@$Jq#8BC+CZyGN#gERga^3bDEPD-=x2o$ zgV>AWURc4LImz2rR{W+jCgFiEE<@Iep$vRrrxjz}W10|eFCfkzz+w_iH7!bt2`*iB z0^zSkpvMd&{%OSMW#iH4=w;F)e@yUj5eMR@3kck|<>oLC%BMZ@6B`yZZfvhT@-t;` zk4qjosk=um`|@zG&*RJ=9=VtR6vOV3H5(_y-6Q|OhMYa}_Nrp{ z$W_I=M?MY7!y~_P%x>;>TMh1?CV8=a?RpToQs7EW&pvry42DJTq(4U5dPY7-VH?0Y znBI;D)(5M={>3s44jyEsLAwpcq!IIAT%ob-@JZ%W#ABpb>~kZv#{Hd0&5se)?Vi+Q zM3o%|4SJB?Z=^0nDij_g-8c_0+c02NFuW#V{#0Wpt)8C?QjoQLrS z=eYVVC6Cj@;Og8wzrO(QW>qnjPM?JP;CMwySIH;%7;{~FBk&#=_W%?J%p*Ejnj`VN zlvch(WE79-StH=YWWGX_2;NL;eMJ@ydm3wsS#Z$V;Vl_c2tm;~xLSLd66X>f}1JZZ2kQf(cI z!x<0wMsVxmV>`OuY4X)3s6RZJPWKeN@90YSh+)#<&)4wFJGvCU@4QMO5`L*N$+B_t z!TA}Pr>_+?voAqd<|DSy55Z)-AV6DTD<6W?K`>ybKcP%#jSUA&)V|> zMZr{*%z+qJWCeWqgz)fe)`DCp?S=aJ+q4@JvC{Tb93E2$&)v^0w?Odr4}PUTpfAMs z@OiwqR5sGob~eu3MXc{h~EO!K~>Qtr6SHB%>=W z5s%j*23EVCd;GW&B5+-)2+M~4jZz9FSBLgh94Tkx=5N;bp!G4%%I+mN zXj^PpaG*z5xMZ5cp$h12a(pWWvGEO~!i8#dL7qyxqzm%Vwks(L5h6RUZh3UbVpG-a zh!xRUuJ{U(c=y;Y3eV2N!dx_1-@;RcE5r-6a=HkgA@vEb!2iGp8Hl|@DtO;kdj`) zM*$c;P+8Z6kFRW6sFc`vsb~(2!4zi1`+kyjWHHJEXrMT;H|fUFAN1lZ~{yyD9{ z4X+_uQ@w=qO1QUkQ|%SuaiimfJXsO0>dDL{cMgY7#-Kln1AtKc3W1RmjP5}gnwSVo zl^;sO$8}R!1{}45Ucozk;PYE63XapTc@nX|WsHaA;uB_~93R^&_eql1?aLj+McKuhvtyKRZSd;)YPFQG*4=r2!zmepFH0G*{`Kw4+kCqNtJ zc0e;IpFROPv2h~{v)cLu=v+W=k4q;&r0yp`vM-MVo%47p#|h9th!ddWGaa(_105x+ zp8zRYf1<8eD;qWwwGIum)XW=VUE+`HZLwOHS2dF{la|3VBhyjDW2D}!&vU<$6qYpo@R_=uK4CQ|WQ zYeut7xh@dZF@BIz4pS|rx2!*7yYY%1ra3I1^*N(CJPhhG*RykAy@6j}GzV{^2CEy{ zad|IRH?oT*c~chZri?|+CDoQn)af*pMv2)Yl}a6s0PH)WAE(ACt|gYa%yX>EAv2fM zmqKQ)h?}NI$jkwLe_joT>^Wv;9YHfs(m3GvsF@Pp!)6Znrc@7`DU=#vGX?nwn^!)6Zni_Q@YpFkKTDO8@Kcm-#4Oyi?0!MV!lxn9A?XFf{iM?3Z@xOH7(nD;5f zfjKN%O|6fZS7bZ5pNb3c5q^3HKVO0`oryQe`_Z)!A;A~a?SY~O_xH8X7rX7fsNjp8 zhwhk3Q(eY_B^qwtsYO4?{*YfhL_y((OipJJ!A08a_t zWL2fZvCNoN76@-*@>P9cZZ}6hxES!?cLs?VlCYw+30QGRL@%NRD^efJM$?p1^li62 z6;03JQn4yHFUz;s_M#D$AlZs3ad$y0kZ4f`tpEe^Wvl567Awrgik=@SyQ=96!`%l( zUujHwE8$oRxrV5Q zXby?ki@=yRJWrP@p(o`et32&yJPF@sOMAS4fLrbu>39(}U_aHF&u0d8KT~MCxO^5A z^FZ!yJxm+p{K0eFJxPY=Yl0kumkDmNqPLE51}6I6k0pbcieP0LJ{l7O+ZaxTN0kZ@ zT=XVr)j|uyEg4$y4ATrdshVVv79n31Io)I}9Br7}tWP2e(IqiPfu#c>ITT_q0{zEu z>qgcE{UlkZ=}WZ?dZi0ch{LKixs5Z)p%8l!@ZNYkNvgzY$}{$jpm+STr)KYGy$rUW zwHz3l4D6~tlM*CmLWTx{Wuz2_G01y9x*(qdFB>R$2!^5Sm7Kt5o>_ehs0*vhSw)XU zocRG1Jue+OR~3C>q9hX){g@VJdTSPl#e7j=b@_bBy!yV8WAgIb*xblF9P3U=O`{#Y z&lNCA(i-sS|_Gv$DHLqO20p&xiXM#`fhfF&%pUVbW{$+H;PT`9on7EP!WPz=IP z!9oMGz80+ktifoxB_R=*MA7%^SvB6#g`;ZcCi}j@VIjd$ONu@-AiTGVzS8>7LD8e{ z1V(XG^cXY@Sf#2i8E#&B*dSxj7{{Sr6~oPGGKM2un4m~29AE|6s#=WeeDrNaIx7%4%7fJkNQTpG%*yf3fE2o* z#N$}08R5JvV0DYNSispRIgFUh;5U-~8183!1=rI+DJFZDFI@)NhdXbT^mh_(SHiK34aG5#tD*8|uOTQ|5OvjA8r{Gv8Xi_UVutDSMid4}be^l+qL z=T)V!Vvs`|Cc(CziGreO5ua82YQ(T1V4F4fL2*b#FM^k)imp4nkj*6)^a=h3?}bYG zOyem<4KEQUtJQ5H1xpO;UBL-bL#l|~GE zfKgg&(HsgfI0|NO@03owvtpuZE=CXarK)Ck5gpvg5k>oe2{z^~+Tj^<)I8Gq+$jag zxifp%Lut{v#WD!4RhpHStVq{nOfrIA!PVsB43ia`dGax)H3}Bc{m6%o1T1#f5CMD#K$H`uNIEDW6l|12sFXF_(h>L#Q2 z#!FqQ$rOj2R=74Yu*kWnQwE)<5ZmpVIOovG3G;5AZmTeJOY(KU!t2AdVps0uzLuFBDuN zKW-mg#@?;5|3$8+;4W+-<7K-E_!FhPcm#79cV(mAlU#r5#chs82bYD8)=^xCSGwil zfcHsT%02u4)q7V`Ig2Aa@dz|4IFD5fE1?j)%E9|a3K0qed`I<>7!`Mm|J)IW@hK3) z_>2+ebzN{s#Nf#A6-!tYUcpoZ2N8+6ajj7esW@(4GTMDQHqmI-xS(~wBFXC;S_fFC zTb?Od9fcTkGdK4cL{V`_#Nf#Am0~=1-PT3R(KiB5{%vmWPFo5nc@e3R^V;Q>)MF#> zVkG>gZO(J6W7*Rc`GuYiXWsIP^-*50tU`<}RxY_51d>A`28XBBRu9Bp*Oq?W<&`Lj zIQDlVUsEhNBw`F1hADJW7w&zmp=F<$I2s~zmG=i?>h6UTIah z?-q(~Gsz)ueASku#pv(GQ(@z>LO6cS;&jL4vv6PY3c=%qkTimCOH-V*9^-bJ(_z8# zRoM*#N4O-%+ucSz#@kNarARoFeYT)~kB{0;Ek|wlf@EpkJE$4`9?0-4O>;0bs%MCN$q_KVxiL8qz3qcJ+Mc!@zUfWm zn;rP_y6r(dT4Sf~QY8Ea?f?UZKGF7_`l+_>rS-*};q`Jl;J?2BA5$5ZABH>?3>q;w zV)AWqR2&j99fvWp!+{u$Y^O$Mmn;l36azyOE*jZR)!wMP6bZkH40Z|s`H4o}sV^-{ z2IJpx4(`S6YQQ+*nY-Z)>&k%UJ9U>L;k^FX z(nT#lnWDZhE>vlKT=2~^joc3J+Q9~D5r1d;c9WU6J6rCRGXw8F2USA5ZX96B()jI& zVZ%toG4?QvwLCQf0gIrowysE5vBc$rqyq z6=TNS0Iv~7$D%c-cG#)A6bZkhW$ zX{{8Zi;5O&e2Y0PL`7x=wo@6S1H{n*Jl5ojAwV&F4dGWkAl@(tNMxk1oxF>Ya7G|v zh}TP9K$2fxflOdFpiy4$15$u=0t~mw?4;;k0jyBW%4`nA_l`iP!sk{+DGs@X*@BrT zA+aH%j|}Cm5t%o1f>zE}^iW2-lgc?*X?(J&5$Fxv!B(R95GF8MujF6?VjHurr{s|J zWH!jOYEt@@X4RzVYl)kpswl~!F2^!7|6JW(6z!)l>(GnB8cc6VBMQ8tm=@KQqU1p$ zQztWqkNSETu`Pg@LR8pxaHX`?3?&|GQp&+u$_#$4m6IH5517rf=vt0>!??>Ob>O|+ zzyo`w15?)V72QCL*&!XX179w}q~y)AWa@HxNXMYusk;;jzhRCx#8WzJPTUC=k*`mF` zu{=4<^Gu@95x>8L7)t}>R#!ELLJW=^wt=NMBx3Au!y9MxvVj;)eQXo?U<$X?)j81I z)|2(HlXo!^&OJC2I59jvQ+4tut(ab(v|_q|i&ji$+$(U{Bpva6M{rf((Y!25amdTO z?V2`MHCdE%wcU+VMZrAh6>81lJ*vfw5RxNA<_lgZCppxmp1f@zpCoSM4?WB+wB~al zzLHitz~c`gdaZ-xP$$*R!Z5n17TC^5T~uKLqxoBO1QWm;MxT~CNKxvIYjL$&U0r7k zzMa+8b=H}7lp~8$9P$Y$2pCFP7v*@Fh~evHQ5cxUr>r@A;I&KL4!ru?-eD?^z?Yy! zH>nHlLT1*8n2TpdRwW8n)M;uM9L&7h@^HwOksM;PoVh`Ho8w^Y6HzqNL_|xza&IU_ ztK6Wwjrth>8+Df=;WxZ&$zb45OhY^M#c9aX?s7+QBoL_r|wcD{D#-WxsmbcuJ)k5bgiJq($ZG- z()xB&<-X&jMZY2|<(@k(z75~b9c-;q+$fFomnV6{?vjYRZ4m1+vbj0_L=oxi7VjrT4(Ia$Tcg4NcbhCdk)*d|NVm8@ktjIebKoJ zO?YnB2x%C#=x9#2L9?Pmb((_#RNGP{Ip{TJW^9oh@IOo{MsuJC!@jqgBlyhdaGE2; z#7nW71MY=qxRZexyS#!!z0WQgX5>OS82P!biYo2#=AvczP>WH66rwVL=3JfOYKb!B zt7Kys5iSYk+RICLKvnjR=4xSni?Zd~h24rpR#u0u6ragvr#Tp*A$wV!=Kr+3+L{CQ zLE%Lm#SxhpX6EP!zOS-g4oxC3DaRT#2j+WwQn!0dl0*8EW73+7N^XJB^HFUSK?lTb zF40zmyJ3)mHgE3ay)uPwE8PU&>r(k9-5uhGu_x$7uV8qc+!EbP;GO0EVJ2`tUik3IG^~!jgPqndK4u&MzP`nt}MyH zjmX*9GY11!@mUO?aGgK!7NZvZqG$v!12=0yit>fgDHft)i;$aCH5G?E^x*^MmOxh) zm6$)vFN%V{>#fr*syO8AmoYcG=v7Cb@+k=&6haMUxa&}-o`!OJ8zP2sXqg)ac`t!? zLM&5fbogFLE|<2Hs2DKw!^mS$PsxE%$q;@AVr-HM4z)?j$X?0nqEHd;pX#DK-!_{C zhtH;ZZ#73?JPcPfA_myd=r>9f(-F5!Ad&-9RcSGUB}Z--0TvvL?ZGHL62X^(Et$AN zSk^o0)_1)2=87(Z*EcKdE!FypL-v24OiP!hit_E^_d@HCT#J3G5XqP=@y|(=@3sD7~rR5`$93v91(q(ZpE>$ zNe(71%PsAUL=-xuUR6ek617P*jiVIU4u5z~lC*9NqRNver9w$uD;M>LL5L|}@o9K9 zorif!X~`k`d4+w;E3{H;7+=sL$cAe+77f;*lyi*Iu_X&SE5}=kSornF!T5t67xl;C ziU2FRs_G~XwUqE~fQee`IC3=!9U|X6rG*ZBkie@tN(adytX2#iXlZpx88${+=444@ z9yoEt1wu~{J~IEx#R=m3PM-Ee0Xunz!|!&U>&Xe;_Qq37!6x7}8^=4j1HRX-(zv4y zccSOa!0iZ54LPB>+;Zcb%eOojw#Enr+GS5H3{}>Ifg))rJEJsE9BLJc zK31dKhOdg4MOGuw$9Wj9l}mht;ha`3!@R3$Q60vJ;%y1V!Hrr5URH>T!OFV`N)#8{ zu;6eEuh6oT2@Z$WFFtB@UE4fq37{l`53yUGp>rcEQ7T3pud1Y|b#NT7G3ufMWBxnY zH5v7hF>h+sI!IB<{lY3WkENkQ;x@ncx~Np)xUM)dL!PZT@YQOYO(o(;9W;xI*C0mL zjQVIQj6hp#&g<|SiH`&q2k}pm*kQd6W=(vRdHu?zpa1;%&$qAs z@t^LxhKHdFnU;Xjb>u?9FaaGNB z@~5+X{22M1?&CyxA>GH*G*g{^B;Ch8Zn_DO97Cz-%wn^PkQDXgApqH|D$|i2T(C%Q zm*h6^-3EpmXt)FkYVOxyUL8eX{%utf7Mhg<9 zNP1a}=ba$$RWZD;T-&R~b1@7e#=NbPo{@yyq;98&*~v3}1?QDiEP+Z+Vubdj<)BPc zb5Zm;yBd;ij>09tY59duLyVH|V3DC)sCw~`!$z$SJ5{Mx)r*;RnRicq1}W!Q?>96I zF4#P761TwvuPN%!!v}sQ=+EO~DiwyfqK_?DfLHX{@U5&>^qKeNQc(1Te*V<;JG`$J zQjUbbkfRjtjB(}SDD8H)Lm#fWQ}^b9QRz8GBp4nFx2^=3r&TmK72IM7l&I;wNi9oq zhaY1jpi*(7-^YOAjdKleakt@RoaE$|poaOB&-5)eE3AWjRI3kVL4UIwOdB%gXwuX~ zy%1EvFhz?jBv-z<(DcRf#9Y(E_;5UnmGH_OG|o#n4=EC3L&-`A`8TKO$QjJ7^`z}S zKKSG`swPBV!9oyK6GGEixJfDL+q9OCPxSj;zJ!nQ7i;F7UkQ&)1{;i$BjJO-X&RM2 znAJS@hEMQv0X|t}Pr+YED{_o8d9~>gspG0mhyS#Ot9wmpN_&`m@ugf&6L}5wb3rZ3 z*O!`B)Kf;a1@`ilrW1AG{JqW)xvtUrLeoj6kEw=be#lO^T{r54PhV%6xl&+gk7ag9 zA-=c7rOQldN)9PH?zowB8jw?JNHHBq`u!qPnleL5N&Oy^l60n*x0uqD7xKp%aK6Np zrnHc<%KZ-0G4_rtOjnIfcFcX zYIgARCHV3kCQ9D#8VL~sd`Vp%h%!-c=l;GH+P~(af-gD`JZxs?mZIo;W8g|~WdX(v z@ZK3^E1#`Bcwv#Zg+(h?SRsrGEsEfUp2T;mf}DA2Dot)l-wyk|l{!iK#t=T7q7x#eF&kKbNginG4=%bt~45sCy!#&Rgai5%i83-+6W<>7C)z%_7y6^vBJk z-A>~B601HUPmEzh2UUE4NoBdO<7`Q*I)s2knUsS6*7*B?;YNVXZ+Za`K z9#`NhLmfpx@w3pPQG$foiU-%+Iz~MSF*6u;yhnmnw`oN5_9nnWcv$}S5?bIB5pGJFQG0^bB z2;xOH2l_h3vQy26z78XQK_B_v#;N9DU-z?~eP{~$o0lGLy&q~ZAe!@0smqI*d@7>g zfev3*@WNPy$tZP8U|{d6)Gfs@wysiF(95sUN7kvBtl?_J@s-TBUwt`=LuTL=rqDEl zyw`&va$35p4&Up+%mL^>ioU|L&a<4}J58~USH2_zMkAx&CCyR!Zf_i9*JOnMn5^!aytcsvty%-d z9N{*i)If2Fk?0N)?PfQ8v&2PqvqvzTP7hKELs4J%Z$f&sEVmSlqlz6UL=X!ca53@HkY?{!NIHAEq8`&V96oZEFMjyv}oYcuKz9& zBcp&+P9gL<$HyivJ+;pDtBIX_tbfe*#)+xJ_mY{b$QUo^0k7NWlW^W8b}d=2L@=1G zO$!dD+h|#H6{0fO{=_kks?IuzcIQ<}_?&ST*qtl%3Z}4-2*#e`Qy7Kd3v&kPI5$h1 zLiW@^C#Ay{nbk0DmEds3VO+Zj(fhDMjNRwNGp4Ej&%3CB;2xU2Jb2m`wrSVhJ8j={ z-~_=yPg#B{A~2QmR;8*#yN5P6;PVTJ8(-AJ1?kD>bw{z?q&ub zwWhu@?|0I5gG~juwCE~G#N#?e7$qg;S*K%GQpm1V;+@I7(29YpVpz0zru7-+cx`rf zh^OJyXC=vT^D^?p^_XM!XGE&I9m&OK9r6O9Cm(*%7*~^zP0@}?CRLbSWsr9`GnhtN z2nT$3VZGs4J`jEQ8LS;GZ`DZ>O<>17S3z^|NVsK3mK?l`U};yJI2hZFIlDQHoH!V8 zt;H?%nuE8&xJ$1%A}?{7sySkNz8W+~^49Q)km5)Tid_~QnPF~bb;p*H;1HWMOko_j z6{T9g6y|!e3c(;Y4d$t@V+XkZNF^g!P%$M!6k24a%nvwN7ksRpxo^Cbf{dDUGn{qzh zB6~mHQdRHgThpLC4!Euywc7z!TcYltCZQZCbkM+T#nLfn*U5Y-$#Cw*)l1ZoUK!T< zGx6P$7@vaRL?47X);jq8`5xMk{n9alRi7l$fGxn&ByHPBW~5Ors{#%e*Eid}!#AaB zF%`X1D#cX0hA+ zhi4E9Z1z}H#jzfyb5#Z+Gewx!h?c6{s><`oBbk|DhmT%)RFeIJK|WJ%#(YATi-{ZA zOxT@+aNtPoGwixsA&EI_a!} zzbW`0Hcy)E7PNwo8&;{^fD~dXW7yMHILHY`2W61OBFU{`7CvU1o@>5kiI$91WQH@yc}F6$;r68Nn3k_DjgK0^w>u|MdnF5pWJ#(rygYxfza5c4N%hS+{Q|tFeT`?_h3CcI>KDnR|1#bOza39fyHfomSwpnoWi95Ux4}};b zIWkV2TX0B3FCu$<^rTc``cjuv4KQY~SXEsGhJp5VqVIh{GRT30f#n#_K9v1WYu5J*x7!*}qe zO>Nd+I>7Jy&51L)JQy{V=T1hJ!blZ0xnR286MP%61ea=ujw%%z;+IbK4L0jLMcffV`fGsMV}Zb zDFsEJYITf#A?XWq*VE1s^ceEx)Ne8}k9DEPR*nc7o!MK9sI_=2^VTds!~ zf*GHfTQvu~AGZm5HF@S3Di2QPVn!QxvC59cOfcKYB7A8}1(Z*bTtj@jEfyf3zbURWyd$U?AH6+`9L%i**+e#z$5*Su8oe+CXEbnWBO;ts4s2f$_;}NPViU(IGL@z4vt)WkvgSi@b zAy08I#Ra#ZGy<9>Q?=Gols+I&%v7SAG|`!hD@3d{8m|$>FkStkIt44y3DLFYbm-GU zYsn!O90M1a@7ZKg&M-AVFsdk;H_Vx-ic%c%-ZJlgw>RywD9rWcgy=YEZCCwy9juZiD zq+7Z{U^FN&I#hi7zVG`J-f#Dud+xdC#<}sS9_=(#qUONI?1dg)@h{=~#)*5DeCbcE zJ@m>(%tUf_#8Y)neT|=eZ>)d~Q~bIw3AbRrl##r98h?jM4<#Q{998 z!*2K-b)=BgB*#y1+|SgKu47n)i{N{f)+i?$;ITPPae*4Hv>RAy4k7*Pt4`b=Ay!ZZ zBv!F-?0o7*HX)IpMV0Z6!(3N1{>Wo7W7W!#*ER?m0`#{ zd7*EoY3+OxX+$7(B|uEn$9azf9xQnrRkqMSHN>_;Op28EYu~p5$HIT2*{thKCAf!P zr!u#TP9I1!Lv@ESjHNv+#9f}avm8SA?5#=G0o${nX*WH|m**ZWhGV@6;mA}*|n zsuizT92|brm)i<6=TjMeD}&r$hOiaPLDLhKcm^ zOz9G(9Bb&3vr&)J7g80z`g~`+KrAZtL@QNs=u;`Uy~Dpx1qNCUicG`9&#d0+C!+HU zB;RW@7L-pI`y{;;@PKGv=>ca_6G~k-4iT1p-2yM#D*8pfE8UQ*NYOw2NTct<&3<$u z!TygNNL2K^h+Mkiv5XU02E)44KJ{Ns@E%?=X}4k{Xnh|~eONj>``~8U)PFb|SHb1% zE1ismN24OrBir#hT#srxTK{j?hFYF6vpyH}&z{p47caw4n zAqGMI#=Q{KN#~4loa86&%yQa}Km6YwDH|^BaUdDW@VwP(Oah`ZYaZ~E=(1g=HbOjs zu0q7x`4|ElV%_0k;=&U5w_>MK0{foH<|8NR;MR7N-awBjW?C|V%S*cZU~;_3Nzo57 zzX}^T4?7b>*?cfqX796&r%SVh&T?NSS*zu-z>g1hK%}2i1D-uae6W~>mR4F!4?f8`TkQy4&yAaCEA;Q;XKgtM%rjn zo0eT-r+37*Cu8u8rJg?=fDfG4iMGzBQ3;NxG2v>mZT%0pS5PtEjT2oGUzw168pa)` z@@YO(X-t*0mD00yK)xu>OQc?Hj(2QIAoehsngCz$l-@BZgmfhOnuvmqt67nk`wJ>} z5y<7WG7qvEt2?1NvcHvlc~BRAI2&zWqSg;6`9cyoRV*fGRqpQ^c0qG1viE>nnGRd&pJ0&HvOJ|MWL zqk&Ze>}g?7l>}v}HY6gs{FO{N^ic5=rSm44+F)~1wVNjr2R z9e+GMiI7xbs51D<$)7E>)cBECH6q!uC6beITPPi_T-dYqCog*bg(8wzRv-#+stYxV z^0sS>!^2MVA2wjsInP&Ns+7#_6{v1p@CbYR@SmgA!I05Bl6gqajUiJrq4$a49vwzR z2g4ripf$x8p6T`ZZ0SYUROzRou0) z;jIzqdY7K&NeEr1h_Ko-A_zTTIW2}${kVOz!edS?bGx*3U{D>NxMeBe0|?O;%h{Q- z7u-%BWf>b%2)q$<{t+KW=5wNx7k;YX@2c;K*73TSX2*u4iuG{TWN`Xuv$xP3Dh0m; zQzajZD?dw(UEN}*kaivO(FOsm$0tjg-0pIm=8e@zmltd#GnKd^^2_f+@UHi5u3rv2 z2biJ=?y?y_$0*YWfz|`yNC`hTeq#Lg{myCNagp^a5x6`eSHim+<+RE-!%|;RB&_Et z{c}_NPeBjIHJg zzH7hFH8R6@Ay^k(G(Lke;17m{*Gp(JdF3_`lZsBnyOX8sX{%57DhgI|9t_g9!^8an zsxk0z{@War*Q~d3!$;s^MWkoaZj#tHy8_R^TbmgoRF3%%XIur?VypAzk)>bhSFLAF zgT|j$m5b(#y(&CO%jfidyb_g9gt&`S&y^4QTbUnI65OGy{6FC38T70gBu6zQUnD5@ z#3M^1Fi?J>mju`I`h=cA$}03r4vAncQvc6`{7Z2Gs^Q>%psdR=w=BE z0fGM!m&JuPqLV;ajO>deK6c#0nV<&957!xPX@~VG5V|vc)a6WFgnQF5l@cwO!3>sG z>7)f_V$@(Xksj*r`$+mJQ5qBKPfA8NYXDvHb3h5D!Pc}ygm}7Dlv1BfXFePBH}Okl zvx6z?hPz18j#z!28DOl$_A$ncDlSkFIfEG_D7o9gK#n$YfSzX-!KwVLH+mLG4OSRS zd?5}jw!tpLs3ulC!qtwv$*h=RlU2=?oJ@|zi+G4e+)h;jcGY9uC0_l)Kh5* z=ez)0!^NYJ&&4OwnA2u*y4Su$cL%{OuWjBn5lMe;%rz__I^gdZKy(n!>#RzcK|KAS;XAqiTqSCi2k$fO%&5eM zgPJhZ$a}@Z$x$l91sl-oG6q&}U|P*{@k!ErM0o zq16XX_sAyw$Yjwih?O~)%HXSb8WOcE83dQOu6IK_z~jKR76lS>QREJ8*H^mQ5a(C1 zOP>T8b0WeV9#mNs+C&iHAIgtnC~Rz*gWE#LSzg_sND;DP0Oq9k*m=5Ydqj}7L&^;YsuK)xA#6f*vP65b5Jg= z_|nUp`2qrV7C+s#tyBvC zeSbv$JkNc9*2xGbjKpuf&ft=SaKf=9l`+%Ayiq95wl-jX{J=2VP@gP(!a-l7sA#RnY024F}mvbXjWzghR~4dgMvh zeEZDF)vo%w`mY2IZ=!Wda<6qtG!2E|`}?=3wO!8mCbUMg@=fywfLVj z;QAiVs%zKNzfgi`x(%}1mNq^>zeArfR)LuPd~jy07ksRSTtHH_h6tr@H<8NbV}H~K zHD&jP8uoJ+XQ}2<_ifGp`bwov#kC!Nw`T=2^>=D1`XI&kPwEQbhNo-8M}*Nh zwb0f38qS()E(t40amW0rAP8)!4U==*p7}5mAGVS)g&_7qPpqC~hCpzIGm>;}S-lbphqzWg;RHQHg_tQHLsOaIz>Kr*SGLeUXLTZZW!oc2ce?rTZ($DcXd`txsv zDkMU+y^Ci>ZBsZIXe_=Nz%t}mZVf-XT&%xw07JM2t6o}(NM_mR`N9a?rw6JJt)eiZ z0}yq1u0jWj+r4Q}JY!v!)YA9h(_f!WxSi>X#p1XQ1LyJX<>#Q z3CiCnRAFtz?e;;(4;;=3O=eXlma!91kI31I35_n^G_Z7e6{)&1od9AJ~F4Ch~ zxhbH6o$OEo9I_jChLHu`>RHU#q|*Zya9+a@W2%HA!zihk*^O^lXAH zvFZY)cAww(fxyJ6KS4Oocsx|A>K1#(2}CGIF9E|iWr4JSN_wjtWBf9tvWKvZTTRV% zNB-zO{g+JjvWa-J%FH-9QUE|)+GURZc39EFEwo~ddj1%jhq+lrTF0SF&{ys!@Xpe& zc3W_Gl4NFAGoS3Y-eNbv0c>4GM9&H>t0QiqACVp#Mj_b~r5=fVhaQ=MBrmeb$S_zO zZ-SO7Tedwk;8c2ZTmGL>!ml#JWT9qRt#i2NcwQ`A1X~w|N~0~}cfln6aqxV{I5GKY zO6}w1)@UAo7QRa|;(C;rJExSdjy-Q4~cz?Rp0a6scVUYK{i*zFSSW#XfzW%;c>MnKqTfsdRHtg z0R1GBI03~WRtr6@dSN4yBjh-#AS3-`U-0O{OVW}gr^o6%{WJbQ0mSl4fq$BF>RJ=! zVb6~W*hIO3;jOYkdB57%sjVKv+76}erd3#7++K}0%MNn+K7J<1V3$K()>4} z5;*Gc@8rM!L7M!({ck^sbr6kl694{YYAg*=Kg*-VC*n6=Jt%l(LFv99@`;(XaMIUN zW}xfmhg0sl_yT{aq~_;Sz~>U!i?-(aMTvg7QZt!}v#~J3Scv%pi?y0B{k7@4z)NgK z;&P8J_{IN)q|N9fb%(A=IwsNK_CI04DZS_6XY^z`ok?MmN?ltGdH2gV2Bt69g86V( z+A>;E`FgPgx4-eDerI)RQJPv!+?G`E@{DHBP)?+9XFs+rBFVDGFCS4%`9UB^FtR(2X?Ez0cvTa9F6Dnmt;$}p)JL<(%- z2zw68JE8)XoBe!Qrn70kJG2f9hAL#LK0dc1by+fmTktcmdCur{{$QVb^j9Yix8AKH)0WU6y12e~;JV zvHD%2lmh(D(iVi&=IT&>Pn|mvIAsyKystZLfkn((cE{<=G1Awl%XRceI~Gm)Ox&i)Oy3o{i1)vB|w3JRDZWC zTnB0S#!g4xNU^|7^HRI-s#>>o+Y9ca*<(xZ2~F5ek*v>rzzyUVHREgA0OZ+tC+l;=B9J=)hw|4vHsJnSjI2K ztn8cl0s0iwCF6U5c2!h8XMhl{Sn$1;`-=>x^5&5F23eB0@g2~$hs;o|q9v4CJ{B<%VWwOjxWy1Vw!9sU0QBl@cE`CWiXjXnO| zup#&G@9OSn-_PW4fi0c>*Bjsuzc0I+=A?h;sXe(M`@f{z(u^#;o Dpf*(x literal 22498 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%0AemnRg~h8m!)~(yuD4AMPc$UCqysG^Kij9 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 diff --git a/übung_1/agt_übung_1.tex b/übung_1/agt_übung_1.tex index a2e5d4f..64e7c23 100644 --- a/übung_1/agt_übung_1.tex +++ b/übung_1/agt_übung_1.tex @@ -1,5 +1,7 @@ \documentclass{ngexrcs} \usepackage{hyperref} +\setkeys{Gin}{pagebox=artbox, width=0.2\textwidth} + \title{1. Übungsblatt} \subject{Algorithmische Graphentheorie} \author{Jasper Gude \and Pia Röttgers} @@ -7,173 +9,10 @@ \begin{document} \maketitle \points[\qquad]{20} -\section{Spannbäume \& Breitensuche} -Sei $G = \tup{V, E}$ ein zusammenhängender Graph mit Kantengewichten $w: E \to \NN$ -und $s \in V \deg$ ein ausgezeichneter Knoten. - -\begin{tasks} - -\item -\begin{quote} -Wenn $w(e) = 1$ für alle $e \in E$, dann ist der Breitensuchbaum mit -Quelle $s$ ein minimaler Spannbaum. -\end{quote} -Die Breitensuche berechnet in diesem -Fall den kürzesten Weg von jedem Knoten zum Knoten $s$, also den -Breitensuchbaum. Dieser spannt also einen minimalen Spannbaum auf. -\points{2} - -\item -\begin{quote} -Wenn $w(e) = 1$ für alle $e \in E$, dann ist jeder minimale Spannbaum -von $G$ ein Breitensuchbaum mit Quelle $s$. -\end{quote} -Falsch, siehe \autoref{fig:msb}. -\points{2} -\begin{figure}[h] - \centering - \includegraphics[width=0.2\textwidth]{msb.eps} - \caption{$\pi$-Zeiger des Breitensuchbaums und MSB blau hinterlegt.} - \label{fig:msb} -\end{figure} - -\item -\begin{quote} -Wenn $w(e) \in \set{1, 2, 3}$ für alle $e \in E$, dann ist jeder minimale -Spannbaum von $G$ ein Tiefensuchbaum mit Quelle $s$. -\end{quote} -Falsch, siehe \autoref{fig:dfs}. Der Minimale Spannbaum kann kein Tiefensuchbaum -sein. -\points{2} -\begin{figure}[h] - \centering - \includegraphics[width=0.2\textwidth]{dfs.eps} - \caption{Tiefensuchbaum in orange und MSB blau hinterlegt.} - \label{fig:dfs} -\end{figure} - -\end{tasks} - -\section{Kreissuche} -\begin{tasks} -\item - Wähle Startknoten $s$ und füge ihn in eine neue Queue $Q$ ein. - - Nimm den vordersten Knoten $u$ aus $Q$ und füge seine noch nicht entdeckten (weißen) - Nachbarn ein und färbe sie grau. Wenn einer der Nachbarn schon entdeckt wurde, - also grau ist, gibt es einen Kreis in $G$. - Markiere den Knoten $u$ als abgeschlossen ($black$) und entferne ihn aus $Q$ - - Wiederhole den Schritt solange bis $Q$ leer ist. - -% \begin{pseudocode}[caption=Hello World Algorithmische] -% EinfacherKreis(|Graph| $G$, |Vertex| $s$) -% Initialize($G$, $s$) -% $Q \gets$ new Queue -% $Q.$Enqueue($s$) -% $t_1 \gets nil$ -% $t_2 \gets s$ -% // Comment -% while $Q \neq \emptyset$ do -% $u \gets Q.$Dequeue -% $t_1 \gets t_2$ -% $t_2 \gets u$ -% foreach $v \in Adj[u]$ do -% if $v.color = white$ then -% $Q.$Enqueue($v$) -% $u.color \gets black$ -% if $t_1 = t_2$ then -% return $true$ -% else -% return $false$ -% \end{pseudocode} - \begin{algorithm}[h] - \centering - \begin{algorithmic} - \alg{EinfacherKreis}{Graph $G$, Vertex $s$} \+ \\ - \alg{Initialize}{$G$, $s$} \com{So wie in der Breitensuche} \\ - $Q \gets$ new \alg{Queue}{} \\ - $Q.$\alg{Enqueue}{$s$} \\ - while $Q \neq \emptyset$ do \+ \\ - $u \gets Q.$\alg{Dequeue}{} \\ - $u.color \gets gray$ \\ - foreach $v \in Adj[u]$ do \+ \\ - \com{Füge alle noch nicht entdeckten Knoten ein} \\ - if $v.color = white$ then \+ \\ - $v.color \gets gray$ \\ - $Q.$\alg{Enqueue}{$v$} \- \\ - \com{Wenn ein Knoten schon entdeckt wurde, gibt es einen Kreis} \\ - else return $true$ \- \\ - $u.color \gets black$ \- \\ - return $false$ - \end{algorithmic} - \end{algorithm} - \points{4} - -\item - Dadurch, dass wir nur Knoten - einfügen, die noch nicht entdeckt wurden, können wir nie auf dem selben Pfad - zu einem Knoten kommen. Das heißt, wenn wir einen schon entdeckten Knoten - finden, haben wir einen Kreis im Graphen gefunden. - - Der Algorithmus kann aufgrund der Struktur des Graphens (kein Multigraph, - keine Selbstkanten) nur Kreise der Länge mindestens 3 finden. - - Jeder Knoten wird nur einmal in die Queue eingefügt und nur einmal herausgenommen. - Somit läuft der Algorithmus in $\Oh(\abs{V})$. - \points{2} - -\item - Solange es weiße Knoten im Graphen gibt, wählen wir einen neuen Startknoten - für diese Zusammenhangskomponente. Als Ausgabe geben wir ein Array von - Tupeln $\tup{s_i, c_i}$ zurück, wobei $s_i$ der Startknoten einer - Zusammenhangskomponente und $c_i \in \set{true, false}$ der Wahrheitswert, ob - ein Kreis in der Komponente existiert. - \points{1} -\end{tasks} - -\section{Eulerwege} -\begin{quote} -Sei $G = \tup{V, E}$ ein ungerichteter, zusammenhängender Graph. Dann gilt: $G$ hat genau -dann einen Eulerweg, wenn die Anzahl an Knoten $v \in V$, für die gilt, dass $deg(v)$ -ungerade ist, genau $0$ oder $2$ ist. -\end{quote} - -\begin{itemize} - \item[$\seilpmi$] - 1. Fall: $0$ Knoten mit ungeradem Grad. Nach dem Satz in der Vorlesung - gibt es einen Eulerkreis. Im Eulerweg sind also Start- und Endknoten - identisch. - - 2. Fall: $2$ Knoten mit ungeradem Grad. Die beiden Knoten bilden den Start- - und Endknoten des Eulerwegs. Die Kante die den Eulerkreis schließen würde - braucht genau zwei Knoten, zu denen sie inzident ist. Nehmen wir diese Kante - weg, ergibt sich eine ungerader Grad an diesen beiden Knoten. - \item[$\implies$] - Ein Graph mit ungerader Anzahl an Knoten mit ungeradem Grad kann nicht - existieren, da die Summe aller Knoten mit ungeradem Grad gerade ist. - - Für alle anderen Fälle gilt, wenn ein Knoten ungeraden Grad hat, dann gibt - es keinen Weg aus dem Knoten heraus, wenn man hineingelaufen ist. -\end{itemize} -\points{4} - -\section{Graphmodellierung} -\begin{quote} -Sie betreuen ein Projekt, das sich aus vielen vordefinierten Aufgaben zusammensetzt. -Manche Aufgaben können erst erledigt werden, wenn bestimmte andere Aufgaben ab- -geschlossen sind. Für jede Aufgabe ist vorher genau bekannt, von welchen Aufgaben -sie abhängt. Ihr Projektteam kann immer nur eine Aufgabe gleichzeitig bearbeiten und -eine angefangene Aufgabe wird immer abgeschlossen bevor eine neue Aufgabe begon- -nen werden kann. -\end{quote} -Wir modellieren das Problem als gerichteten Graph. -Die Aufgaben sind Knoten. Jede Aufgabe hat Kanten zu den Aufgaben, die von ihr -abhängen. - -Eine Reihenfolge können wir mithilfe einer Topologischen Sortierung finden. - -\points{3} +\input{aufgabe_1.tex} +\input{aufgabe_2.tex} +\input{aufgabe_3.tex} +\input{aufgabe_4.tex} \end{document} diff --git a/übung_1/aufgabe_1.tex b/übung_1/aufgabe_1.tex index 1893ad8..b214c4b 100644 --- a/übung_1/aufgabe_1.tex +++ b/übung_1/aufgabe_1.tex @@ -7,7 +7,7 @@ und $s \in V$ ein ausgezeichneter Knoten. \item \begin{quote} Wenn $w(e) = 1$ für alle $e \in E$, dann ist der Breitensuchbaum mit -Quelle $s$ ein minimaler Spannbaum +Quelle $s$ ein minimaler Spannbaum. \end{quote} Die Breitensuche berechnet in diesem Fall den kürzesten Weg von jedem Knoten zum Knoten $s$, also den @@ -23,7 +23,7 @@ Falsch, siehe \autoref{fig:msb}. \points{2} \begin{figure}[h] \centering - \includegraphics[width=0.2\textwidth]{msb.eps} + \includegraphics[page=1]{figures.pdf} \caption{$\pi$-Zeiger des Breitensuchbaums und MSB blau hinterlegt.} \label{fig:msb} \end{figure} @@ -38,7 +38,7 @@ sein. \points{2} \begin{figure}[h] \centering - \includegraphics[width=0.2\textwidth]{dfs.eps} + \includegraphics[page=2]{figures} \caption{Tiefensuchbaum in orange und MSB blau hinterlegt.} \label{fig:dfs} \end{figure} diff --git a/übung_1/aufgabe_2.tex b/übung_1/aufgabe_2.tex new file mode 100644 index 0000000..266a448 --- /dev/null +++ b/übung_1/aufgabe_2.tex @@ -0,0 +1,78 @@ +\section{Kreissuche} +\begin{tasks} +\item + Wähle Startknoten $s$ und füge ihn in eine neue Queue $Q$ ein. + + Nimm den vordersten Knoten $u$ aus $Q$ und füge seine noch nicht entdeckten (weißen) + Nachbarn ein und färbe sie grau. Wenn einer der Nachbarn schon entdeckt wurde, + also grau ist, gibt es einen Kreis in $G$. + Markiere den Knoten $u$ als abgeschlossen ($black$) und entferne ihn aus $Q$ + + Wiederhole den Schritt solange bis $Q$ leer ist. + +% \begin{pseudocode}[caption=Hello World Algorithmische] +% EinfacherKreis(|Graph| $G$, |Vertex| $s$) +% Initialize($G$, $s$) +% $Q \gets$ new Queue +% $Q.$Enqueue($s$) +% $t_1 \gets nil$ +% $t_2 \gets s$ +% // Comment +% while $Q \neq \emptyset$ do +% $u \gets Q.$Dequeue +% $t_1 \gets t_2$ +% $t_2 \gets u$ +% foreach $v \in Adj[u]$ do +% if $v.color = white$ then +% $Q.$Enqueue($v$) +% $u.color \gets black$ +% if $t_1 = t_2$ then +% return $true$ +% else +% return $false$ +% \end{pseudocode} + \begin{algorithm}[h] + \centering + \begin{algorithmic} + \alg{EinfacherKreis}{Graph $G$, Vertex $s$} \+ \\ + \alg{Initialize}{$G$, $s$} \com{So wie in der Breitensuche} \\ + $Q \gets$ new \alg{Queue}{} \\ + $Q.$\alg{Enqueue}{$s$} \\ + while $Q \neq \emptyset$ do \+ \\ + $u \gets Q.$\alg{Dequeue}{} \\ + $u.color \gets gray$ \\ + foreach $v \in Adj[u]$ do \+ \\ + \com{Füge alle noch nicht entdeckten Knoten ein} \\ + if $v.color = white$ then \+ \\ + $v.color \gets gray$ \\ + $Q.$\alg{Enqueue}{$v$} \- \\ + \com{Wenn ein Knoten schon entdeckt wurde, gibt es einen Kreis} \\ + else return $true$ \- \\ + $u.color \gets black$ \- \\ + return $false$ + \end{algorithmic} + \end{algorithm} + \points{4} + +\item + Dadurch, dass wir nur Knoten + einfügen, die noch nicht entdeckt wurden, können wir nie auf dem selben Pfad + zu einem Knoten kommen. Das heißt, wenn wir einen schon entdeckten Knoten + finden, haben wir einen Kreis im Graphen gefunden. + + Der Algorithmus kann aufgrund der Struktur des Graphens (kein Multigraph, + keine Selbstkanten) nur Kreise der Länge mindestens 3 finden. + + Jeder Knoten wird nur einmal in die Queue eingefügt und nur einmal herausgenommen. + Somit läuft der Algorithmus in $\Oh(\abs{V})$. + \points{2} + +\item + Solange es weiße Knoten im Graphen gibt, wählen wir einen neuen Startknoten + für diese Zusammenhangskomponente. Als Ausgabe geben wir ein Array von + Tupeln $\tup{s_i, c_i}$ zurück, wobei $s_i$ der Startknoten einer + Zusammenhangskomponente und $c_i \in \set{true, false}$ der Wahrheitswert, ob + ein Kreis in der Komponente existiert. + \points{1} +\end{tasks} + diff --git a/übung_1/aufgabe_3.tex b/übung_1/aufgabe_3.tex new file mode 100644 index 0000000..ef594c1 --- /dev/null +++ b/übung_1/aufgabe_3.tex @@ -0,0 +1,26 @@ +\section{Eulerwege} +\begin{quote} +Sei $G = \tup{V, E}$ ein ungerichteter, zusammenhängender Graph. Dann gilt: $G$ hat genau +dann einen Eulerweg, wenn die Anzahl an Knoten $v \in V$, für die gilt, dass $deg(v)$ +ungerade ist, genau $0$ oder $2$ ist. +\end{quote} + +\begin{itemize} + \item[$\seilpmi$] + 1. Fall: $0$ Knoten mit ungeradem Grad. Nach dem Satz in der Vorlesung + gibt es einen Eulerkreis. Im Eulerweg sind also Start- und Endknoten + identisch. + + 2. Fall: $2$ Knoten mit ungeradem Grad. Die beiden Knoten bilden den Start- + und Endknoten des Eulerwegs. Die Kante die den Eulerkreis schließen würde + braucht genau zwei Knoten, zu denen sie inzident ist. Nehmen wir diese Kante + weg, ergibt sich eine ungerader Grad an diesen beiden Knoten. + \item[$\implies$] + Ein Graph mit ungerader Anzahl an Knoten mit ungeradem Grad kann nicht + existieren, da die Summe aller Knoten mit ungeradem Grad gerade ist. + + Für alle anderen Fälle gilt, wenn ein Knoten ungeraden Grad hat, dann gibt + es keinen Weg aus dem Knoten heraus, wenn man hineingelaufen ist. +\end{itemize} +\points{4} + diff --git a/übung_1/aufgabe_4.tex b/übung_1/aufgabe_4.tex new file mode 100644 index 0000000..f40187f --- /dev/null +++ b/übung_1/aufgabe_4.tex @@ -0,0 +1,16 @@ +\section{Graphmodellierung} +\begin{quote} +Sie betreuen ein Projekt, das sich aus vielen vordefinierten Aufgaben zusammensetzt. +Manche Aufgaben können erst erledigt werden, wenn bestimmte andere Aufgaben ab- +geschlossen sind. Für jede Aufgabe ist vorher genau bekannt, von welchen Aufgaben +sie abhängt. Ihr Projektteam kann immer nur eine Aufgabe gleichzeitig bearbeiten und +eine angefangene Aufgabe wird immer abgeschlossen bevor eine neue Aufgabe begon- +nen werden kann. +\end{quote} +Wir modellieren das Problem als gerichteten Graph. +Die Aufgaben sind Knoten. Jede Aufgabe hat Kanten zu den Aufgaben, die von ihr +abhängen. + +Eine Reihenfolge können wir mithilfe einer Topologischen Sortierung finden. + +\points{3} diff --git a/übung_1/figures.pdf b/übung_1/figures.pdf new file mode 100644 index 0000000000000000000000000000000000000000..181f17abcbc24349f80fa63437e7d72b762f5a2a GIT binary patch literal 10235 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 D-^HE6 literal 0 HcmV?d00001 diff --git a/übung_1/msb-eps-converted-to.pdf b/übung_1/msb-eps-converted-to.pdf deleted file mode 100644 index 80828fb71b617a18f3c90fa7c10edd32be980c6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3745 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 A3jhEB diff --git a/übung_1/msb.eps b/übung_1/msb.eps deleted file mode 100644 index 3f5087f..0000000 --- a/übung_1/msb.eps +++ /dev/null @@ -1,180 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: cairo 1.18.4 (https://cairographics.org) -%%CreationDate: Fri Apr 17 13:13:37 2026 -%%Pages: 1 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%BoundingBox: 1 1 141 146 -%%EndComments -%%BeginProlog -50 dict begin -/q { gsave } bind def -/Q { grestore } bind def -/cm { 6 array astore concat } bind def -/w { setlinewidth } bind def -/J { setlinecap } bind def -/j { setlinejoin } bind def -/M { setmiterlimit } bind def -/d { setdash } bind def -/m { moveto } bind def -/l { lineto } bind def -/c { curveto } bind def -/h { closepath } bind def -/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto - 0 exch rlineto 0 rlineto closepath } bind def -/S { stroke } bind def -/f { fill } bind def -/f* { eofill } bind def -/n { newpath } bind def -/W { clip } bind def -/W* { eoclip } bind def -/BT { } bind def -/ET { } bind def -/BDC { mark 3 1 roll /BDC pdfmark } bind def -/EMC { mark /EMC pdfmark } bind def -/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def -/Tj { show currentpoint cairo_store_point } bind def -/TJ { - { - dup - type /stringtype eq - { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse - } forall - currentpoint cairo_store_point -} bind def -/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore - cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def -/Tf { pop /cairo_font exch def /cairo_font_matrix where - { pop cairo_selectfont } if } bind def -/Td { matrix translate cairo_font_matrix matrix concatmatrix dup - /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point - /cairo_font where { pop cairo_selectfont } if } bind def -/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def - cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def -/g { setgray } bind def -/rg { setrgbcolor } bind def -/d1 { setcachedevice } bind def -/cairo_data_source { - CairoDataIndex CairoData length lt - { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } - { () } ifelse -} def -/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def -/cairo_image { image cairo_flush_ascii85_file } def -/cairo_imagemask { imagemask cairo_flush_ascii85_file } def -%%EndProlog -%%BeginSetup -%%BeginResource: font f-0-0 -%!FontType1-1.1 f-0-0 1.0 -11 dict begin -/FontName /f-0-0 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/FontBBox {0 -11 615 461 } readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 1 /g1 put -dup 2 /g2 put -readonly def -currentdict end -currentfile eexec -f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467 -b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de -800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f -2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b -9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799 -69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5 -8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251ca90bc9cf8825c7 -41412dda705317b7cb229dd377ff3d18e94daa9e3775f4bac0137bfe9fba4d6b483d953979112a -bf427c7c9bdf825f48798ee0eb746b23cb070c7c481f85443e64eeec9f66b3edfccfdc2c16a203 -ca777ff2c2c14e0aa1f661055f6fdd72b65db3ccf92480447ea016d9726393ed80ad5b1785eca8 -5e25fdbe1ad5f07fa5ad177275289813554724caa8d8f8dfcf5f56edeba95a5cf9247d01f435ff -7e5962414983134fbbb8c5cb3741b7b7c833c33c469326883dfb3eb9623f9dbf5b534b10c52ef6 -ff75cbb31c24503e9056591d1b0085d66acb1a3f697c510465ac4cbb2f71c4c4a1c4f650004c5c -5aaeb301425a528b472ce58534f7e6096799d1086297f4c4b0caacafcbca192359573ec2df42ff -7da7a361c4cbe8ca489df2e40e8748ba34fd8e6d84e1574980cfbff9e77500182ca187dd8c8e95 -d21d0cf4a486a079871cbaf94d518a87729eeef6e6430d3ab74f327b1e3af8f4c1369551e88f26 -ea659e2f489970f30a552524a73f52aecd127501dc3f2a569516600844311a456656d924e6a5ed -b59fc72a9f7c0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 1 1 141 146 -%%EndPageSetup -q 1 1 140 145 rectclip -1 0 0 -1 0 147 cm q -0.651 0.807 0.89 rg -6 w -0 J -1 j -[] 0.0 d -10 M 7 28 m 71 140 l S -0 g -1.2 w -7 28 m 71 140 l S -0.651 0.807 0.89 rg -6 w -71 140 m 135 28 l S -0.5 g -1.2 w -135 28 m 92.332 12 49.668 12 7 28 c S -11.59 26.281 m 18.961 26.004 l 17.324 21.641 l h -11.59 26.281 m f* -11.59 26.281 m 18.961 26.004 l 17.324 21.641 l h -11.59 26.281 m S -71 140 m 28.332 108 7 70.668 7 28 c S -7 32.898 m 4.668 39.898 l 9.332 39.898 l h -7 32.898 m f* -7 32.898 m 4.668 39.898 l 9.332 39.898 l h -7 32.898 m S -0 g -12.398 28 m 12.398 20.801 1.602 20.801 1.602 28 c 1.602 35.199 12.398 35.199 - 12.398 28 c h -12.398 28 m f* -140.398 28 m 140.398 20.801 129.602 20.801 129.602 28 c 129.602 35.199 -140.398 35.199 140.398 28 c h -140.398 28 m f* -76.398 140 m 76.398 132.801 65.602 132.801 65.602 140 c 65.602 147.199 -76.398 147.199 76.398 140 c h -76.398 140 m f* -135 28 m 71 140 l S -7 28 m 135 28 l S -Q q -3 8.953 8.582 11.285 re W n -0 g -BT -23.910337 0 0 -23.910337 2.4208 19.976 Tm -/f-0-0 1 Tf -<01>Tj -ET -Q q -65 1.336 13.328 10.902 re W n -0.5 g -BT -23.910337 0 0 -23.910337 63.6716 11.976 Tm -/f-0-0 1 Tf -<02>Tj -ET -Q q -9 89.336 13.328 10.902 re W n -0.5 g -BT -23.910337 0 0 -23.910337 7.6716 99.976 Tm -/f-0-0 1 Tf -<02>Tj -ET -Q Q -showpage -%%Trailer -end -%%EOF diff --git a/übung_1/msb.ipe b/übung_1/msb.ipe deleted file mode 100644 index 4c0416d..0000000 --- a/übung_1/msb.ipe +++ /dev/null @@ -1,691 +0,0 @@ - - - - - - - -0 0 m --1 0.333 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --0.8 0 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --0.8 0 l --1 -0.333 l -h - - - - -0.6 0 0 0.6 0 0 e -0.4 0 0 0.4 0 0 e - - - - -0.6 0 0 0.6 0 0 e - - - - - -0.5 0 0 0.5 0 0 e - - -0.6 0 0 0.6 0 0 e -0.4 0 0 0.4 0 0 e - - - - - --0.6 -0.6 m -0.6 -0.6 l -0.6 0.6 l --0.6 0.6 l -h --0.4 -0.4 m -0.4 -0.4 l -0.4 0.4 l --0.4 0.4 l -h - - - - --0.6 -0.6 m -0.6 -0.6 l -0.6 0.6 l --0.6 0.6 l -h - - - - - --0.5 -0.5 m -0.5 -0.5 l -0.5 0.5 l --0.5 0.5 l -h - - --0.6 -0.6 m -0.6 -0.6 l -0.6 0.6 l --0.6 0.6 l -h --0.4 -0.4 m -0.4 -0.4 l -0.4 0.4 l --0.4 0.4 l -h - - - - - - --0.43 -0.57 m -0.57 0.43 l -0.43 0.57 l --0.57 -0.43 l -h - - --0.43 0.57 m -0.57 -0.43 l -0.43 -0.57 l --0.57 0.43 l -h - - - - - -0 0 m --1 0.333 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --0.8 0 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --0.8 0 l --1 -0.333 l -h - - - - --1 0.333 m -0 0 l --1 -0.333 l - - - - -0 0 m --1 0.333 l --1 -0.333 l -h --1 0 m --2 0.333 l --2 -0.333 l -h - - - - -0 0 m --1 0.333 l --1 -0.333 l -h --1 0 m --2 0.333 l --2 -0.333 l -h - - - - -0.5 0 m --0.5 0.333 l --0.5 -0.333 l -h - - - - -0.5 0 m --0.5 0.333 l --0.5 -0.333 l -h - - - - -0.5 0 m --0.5 0.333 l --0.3 0 l --0.5 -0.333 l -h - - - - -0.5 0 m --0.5 0.333 l --0.3 0 l --0.5 -0.333 l -h - - - - -1 0 m -0 0.333 l -0 -0.333 l -h -0 0 m --1 0.333 l --1 -0.333 l -h - - - - -1 0 m -0 0.333 l -0 -0.333 l -h -0 0 m --1 0.333 l --1 -0.333 l -h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --0.7 0 m --1.7 0.333 l --1.7 -0.333 l -h - - - - --0.7 0 m --1.7 0.333 l --1.7 -0.333 l -h - - - - --0.7 0 m --1.7 0.333 l --0.8 0 l --1.7 -0.333 l -h - - - - --0.7 0 m --1.7 0.333 l --0.8 0 l --1.7 -0.333 l -h - - - - --1.7 0.333 m --0.7 0 l --1.7 -0.333 l - - - - --0.7 0 m --1.7 0.333 l --1.7 -0.333 l -h --1.7 0 m --2.7 0.333 l --2.7 -0.333 l -h - - - - --0.7 0 m --1.7 0.333 l --1.7 -0.333 l -h --1.7 0 m --2.7 0.333 l --2.7 -0.333 l -h - - - - -100 204 m -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -h - - - - -100 204 m -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -h - - - - -100 204 m -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -h - - - - -96 96 m -304 96 l -304 204 l -96 204 l -h - - - - -96 96 m -304 96 l -304 204 l -96 204 l -h - - - - -92 92 m -308 92 l -308 208 l -92 208 l -h - - - - -100 96 m -110 96 s -110 92 -106 88 s -116 92 -118 96 s -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -100 204 l -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -h - - - - -100 96 m -186 96 s -186 92 -182 88 s -192 92 -194 96 s -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -100 204 l -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -h - - - - -100 96 m -110 96 s -110 92 -106 88 s -116 92 -118 96 s -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -100 204 l -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -h - - - - -100 96 m -110 96 s -110 92 -106 88 s -116 92 -118 96 s -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -100 204 l -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -h - - - - -100 96 m -186 96 s -186 92 -182 88 s -192 92 -194 96 s -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -100 204 l -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -h - - - - -100 96 m -110 96 s -110 92 -106 88 s -116 92 -118 96 s -300 96 l -4 0 0 4 300 100 304 100 a -304 200 l -4 0 0 4 300 200 300 204 a -100 204 l -4 0 0 4 100 200 96 200 a -96 100 l -4 0 0 4 100 100 100 96 a -h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\usepackage[ngerman]{babel} -\usepackage[sansdefault]{fontsetup} -\usepackage{ngutils} - -\renewcommand{\theoremfont}{\normalfont\bfseries\color{dark blue}} -\renewcommand{\definitionfont}{\normalfont\bfseries\color{dark gray}} - -\newcommand{\labelfont}{\normalfont\bfseries\color{dark blue}} - -%\setlength{\leftmargini}{1.33em} -%\setlength{\leftmarginii}{1.33em} -%\setlength{\leftmarginiii}{1.33em} -%\setlength{\leftmarginvi}{1.33em} - -\renewcommand{\labelenumi}{\labelfont\arabic{enumi}.} -\renewcommand{\labelenumii}{\labelfont\alph{enumii})} -\renewcommand{\labelenumiii}{\labelfont\roman{enumiii}.} -\renewcommand{\labelenumiv}{\labelfont\Alph{enumiv}.} - -\renewcommand{\labelitemi}{\labelfont $\blockfull$} -\renewcommand{\labelitemii}{\labelfont $\blackpointerright$} -\renewcommand{\labelitemiii}{\labelfont $\bullet$} -\renewcommand{\labelitemiv}{\labelfont $\bullet$} - -\setlength{\fboxsep}{1pt} - -\newcommand{\bk}{\color{black}} -\newcommand{\wt}{\color{white}} -\newcommand{\bu}{\color{dark blue}} -\newcommand{\bn}{\color{dark brown}} -\newcommand{\cn}{\color{dark cyan}} -\newcommand{\gy}{\color{dark gray}} -\newcommand{\gn}{\color{dark green}} -\newcommand{\og}{\color{dark orange}} -\newcommand{\pk}{\color{dark pink}} -\newcommand{\pl}{\color{dark purple}} -\newcommand{\rd}{\color{dark red}} -\newcommand{\yo}{\color{dark yellow}} -\newcommand{\tl}{\color{title}} - - - - - - - - - -192 384 m -256 272 l - - -192 384 m -256 272 l - - -256 272 m -320 384 l - - -320 384 m -256 408 -192 384 c - - -256 272 m -192 320 -192 384 c - - - - - -320 384 m -256 272 l - - -192 384 m -320 384 l - -$s$ -\pi -\pi - - diff --git a/übung_1/ngexrcs.cls b/übung_1/ngexrcs.cls new file mode 100644 index 0000000..1663cd6 --- /dev/null +++ b/übung_1/ngexrcs.cls @@ -0,0 +1,76 @@ +% vim: set filetype:tex + +% Identification % +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{ngexrcs}[2021/12/21 ADS Exercise class] + +% Handle options % +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} +\ProcessOptions\relax + +% More declarations % +\LoadClass{scrartcl} + +\KOMAoptions{mpinclude=true} +\recalctypearea + +\RequirePackage{ngutils} +\RequirePackage{enumitem} + + +% define fonts +\RequirePackage{fontspec} +%\RequirePackage{tgpagella} +%\RequirePackage{tgheros} +%\RequirePackage{euler-math} +\RequirePackage[math-style=upright]{unicode-math} +\setmainfont{TeX Gyre Pagella} +\setsansfont{TeX Gyre Heros} +\setmonofont{TeX Gyre Cursor} +\setmathfont{Euler Math} + +\setlength{\marginparwidth}{1.5\marginparwidth} +\setlength{\fboxrule}{\heavyrulewidth} + + +% +% \renewcommand\theenumi{\@alph\c@enumi} +% \renewcommand\theenumii{\@arabic\c@enumii} +%\renewcommand\theenumiii{\@roman\c@enumiii} +%\renewcommand\theenumiv{\@Alph\c@enumiv} + +% \renewcommand\labelenumi{\theenumi)} +% \renewcommand\labelenumii{\theenumii.} +%\renewcommand\labelenumiii{\theenumiii.} +%\renewcommand\labelenumiv{\theenumiv.} + +% Use sansfont for all title elements +\addtokomafont{titlehead}{\sffamily} +\addtokomafont{subject}{\normalfont \sffamily \itshape} +\addtokomafont{title}{\sffamily} +\addtokomafont{subtitle}{\sffamily} +\addtokomafont{author}{\sffamily} +\addtokomafont{date}{\sffamily} +\addtokomafont{publishers}{\sffamily} + +% Use serif font for headings +\addtokomafont{disposition}{\rmfamily} + +% Let sections be formated as in: Aufgabe 1 -- Section title +\renewcommand*{\sectionformat}{Aufgabe \thesection\autodot\enskip--\enskip} + +% Let points of an exercise be printed as in: [__ / 2] +\newkomafont{points}{\sffamily} +\newcommand\points[2][\quad]{\marginline{\framebox{{\usekomafont{points}#1 \textbf{/} #2}}}} + +\newenvironment{tasks}[1][1em] +{ +\setlist{leftmargin=*} +\renewcommand\theenumi{\@alph\c@enumi} +\renewcommand\theenumii{\@arabic\c@enumii} +\renewcommand\labelenumi{\theenumi)} +\renewcommand\labelenumii{\theenumii.} +\begin{enumerate} +}{% +\end{enumerate} +} diff --git a/übung_1/ngutils.sty b/übung_1/ngutils.sty new file mode 100644 index 0000000..2dd431e --- /dev/null +++ b/übung_1/ngutils.sty @@ -0,0 +1,150 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ngutils}[2025/12/24 Never's LaTeX utils] + +\RequirePackage[ngerman]{babel} +\RequirePackage{graphicx} +\RequirePackage{tabularx} +\RequirePackage{booktabs} +\RequirePackage{listings} + + +\lstnewenvironment{pseudocode}[1][] %defines the algorithm listing environment +{ + \renewcommand{\lstlistingname}{Algorithmus} + \lstset{ %this is the stype + mathescape=true, + columns=fullflexible, + basicstyle=\normalfont, + identifierstyle=\scshape, + keywordstyle=\bfseries, + keywords={, new, if, then, else, while, for, in, to, up, down, foreach, do, return}, + commentstyle=\itshape, + comment=[l]//, + delim=[is][\normalfont]{|}{|}, + tabsize=3, + frame=tb, + framerule=1pt, + #1 % this is to add specific settings to an usage of this environment (for instnce, the caption and referable label) + } +} +{} + +\newcommand{\seilpmi}{\ensuremath{\Longleftarrow}} + +\newcommand\NN{\ensuremath{\mathbb{N}}} +\newcommand\ZZ{\ensuremath{\mathbb{Z}}} +\newcommand\QQ{\ensuremath{\mathbb{Q}}} +\newcommand\RR{\ensuremath{\mathbb{R}}} +\newcommand\CC{\ensuremath{\mathbb{C}}} +\newcommand\PP{\ensuremath{\mathbb{P}}} + +\newcommand\Oh{\ensuremath{\mathcal{O}}} +\newcommand\oh{\ensuremath{\scriptstyle{\mathcal{O}}}} +\newcommand\Eh{\ensuremath{\mathrm{E}}} +\newcommand\Var{\ensuremath{\mathrm{Var}}} + +\newcommand\parens[1]{\ensuremath{\left(#1\right)}} +\newcommand\brackets[1]{\ensuremath{\left[#1\right]}} +\newcommand\braces[1]{\ensuremath{\left\{#1\right\}}} +\newcommand\angled[1]{\ensuremath{\left\langle#1\right\rangle}} + +\newcommand\tup[1]{\parens{#1}} +\newcommand\ivl[1]{\brackets{#1}} +\newcommand\set[1]{\braces{#1}} +\newcommand\arr[1]{\angled{#1}} +\newcommand\abs[1]{\ensuremath{\lvert#1\rvert}} +\newcommand\norm[1]{\ensuremath{\lVert#1\rVert}} +\newcommand\ceil[1]{\ensuremath{\lceil#1\rceil}} +\newcommand\floor[1]{\ensuremath{\lfloor#1\rfloor}} + +\newcommand\alg[2]{{\normalfont\scshape#1}{\normalfont(#2)}} +\newcommand\algt[1]{{\normalfont\scshape#1}} +\newcommand\com[1]{{\normalfont\itshape/\!\!/ #1}} + +\newenvironment{algorithmic}[1][1em]{ + \begin{minipage}[t]{\dimexpr\linewidth} + \bfseries + \begin{tabbing} + \hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\kill + }{% + \end{tabbing} + \end{minipage} +} + +% \newenvironment{algorithm}[1][1em]{ +% \begin{center} +% \begin{minipage}[t]{\dimexpr\linewidth} +% \bfseries +% \begin{tabbing} +% \hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\hspace{#1}\=\kill +% }{% +% \end{tabbing} +% \end{minipage} +% \end{center} +% } + +\makeatletter +\newcounter{algorithm}% the counter +\renewcommand*\thealgorithm{\arabic{algorithm}}% the default format for the counter +\newcommand*\fps@algorithm{tbp}% default floating options +\newcommand*\ftype@algorithm{4}% float type number, needs to be a power of 2; % \ftype@figure=1, \ftype@table=2 +\newcommand*\ext@algorithm{loa}% extension of file for the list of schemes +\newcommand*\fnum@algorithm{\algorithmname\nobreakspace\thealgorithm}% used in caption +\newcommand*\algorithmname{Algorithmus}% the name +\newcommand*\listalgorithmname{Algorithmenverzeichnis}% the name of the list +\newenvironment{algorithm}{\@float{algorithm}}{\end@float}% the environment +\newenvironment{algorithm*}{\@dblfloat{algorithm}}{\end@dblfloat}% the starred % version for twocolumn documents +\newcommand*\listofalgorithms{% the list of schemes + \section*{\listalgorithmname} + \@mkboth + {\MakeUppercase\listalgorithmname} + {\MakeUppercase\listalgorithmname} + \@starttoc{\ext@algorithm} } + \let\l@algorithm\l@figure % layout of list is the same as for figures +\makeatother + +\newlength{\theoremskip} +\setlength{\theoremskip}{6em} + +\newcommand{\theoremfont}{\normalfont\bfseries} +\newcommand{\definitionfont}{\normalfont\bfseries} + +\newenvironment{theoremic}[2][\theoremfont]{ + {#1 #2} + \hfill + \begin{minipage}[t]{\the\dimexpr\linewidth-\theoremskip\relax} + }{ + \end{minipage} +} + +\newenvironment{theorem}{ + \begin{theoremic}{Satz.} + }{ + \end{theoremic} +} + +\newenvironment{lemma}{ + \begin{theoremic}{Lemma.} + }{ + \end{theoremic} +} + +\newenvironment{proof}{ + \begin{theoremic}{Beweis.} + }{ + \end{theoremic} +} + +\newenvironment{definition}{ + \begin{theoremic}[\definitionfont]{Definition.} + }{ + \end{theoremic} +} + +\newenvironment{example}{ + \begin{theoremic}[\definitionfont]{Beispiel.} + }{ + \end{theoremic} +} + +