From c416b8d48d8cb0522e7dd548944932b8611d94a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constantin=20F=C3=BCrst?= Date: Mon, 13 Nov 2023 11:33:08 +0100 Subject: [PATCH] add thesis template --- thesis/.editorconfig | 17 + thesis/.latexmkrc | 24 + ...-13_104331_DRAFT_Bachelorarbeit_master.pdf | Bin 0 -> 133100 bytes thesis/CHECKLIST | 28 + thesis/README.md | 164 + thesis/THANKS | 9 + thesis/bachelor.aux | 122 + thesis/bachelor.bbl | 173 + thesis/bachelor.bcf | 2396 +++++++++ thesis/bachelor.blg | 15 + thesis/bachelor.fdb_latexmk | 345 ++ thesis/bachelor.fls | 657 +++ thesis/bachelor.lof | 16 + thesis/bachelor.log | 1878 +++++++ thesis/bachelor.lot | 15 + thesis/bachelor.pdf | Bin 0 -> 133100 bytes thesis/bachelor.run.xml | 87 + thesis/bachelor.tdo | 12 + thesis/bachelor.tex | 102 + thesis/bachelor.toc | 21 + thesis/checkbiw/COPYING | 674 +++ thesis/checkbiw/MAINTAINER | 1 + thesis/checkbiw/TODO | 17 + thesis/checkbiw/contrib/diction/COPYING | 340 ++ thesis/checkbiw/contrib/diction/INSTALL | 183 + thesis/checkbiw/contrib/diction/Makefile.in | 108 + thesis/checkbiw/contrib/diction/NEWS | 10 + thesis/checkbiw/contrib/diction/README | 22 + thesis/checkbiw/contrib/diction/config.guess | 1400 ++++++ thesis/checkbiw/contrib/diction/config.h.in | 14 + thesis/checkbiw/contrib/diction/config.sub | 1469 ++++++ thesis/checkbiw/contrib/diction/configure | 4326 +++++++++++++++++ thesis/checkbiw/contrib/diction/configure.in | 63 + thesis/checkbiw/contrib/diction/de | 61 + thesis/checkbiw/contrib/diction/de.po | 389 ++ thesis/checkbiw/contrib/diction/diction.1.in | 121 + thesis/checkbiw/contrib/diction/diction.c | 389 ++ thesis/checkbiw/contrib/diction/diction.pot | 356 ++ thesis/checkbiw/contrib/diction/diction.spec | 57 + .../checkbiw/contrib/diction/diction.spec.in | 57 + .../checkbiw/contrib/diction/diction.texi.in | 272 ++ thesis/checkbiw/contrib/diction/en | 680 +++ thesis/checkbiw/contrib/diction/getopt.c | 1051 ++++ thesis/checkbiw/contrib/diction/getopt.h | 133 + thesis/checkbiw/contrib/diction/getopt1.c | 189 + thesis/checkbiw/contrib/diction/install-sh | 276 ++ thesis/checkbiw/contrib/diction/misc.c | 61 + thesis/checkbiw/contrib/diction/misc.h | 22 + thesis/checkbiw/contrib/diction/sentence.c | 292 ++ thesis/checkbiw/contrib/diction/sentence.h | 32 + thesis/checkbiw/contrib/diction/style.1.in | 390 ++ thesis/checkbiw/contrib/diction/style.c | 1001 ++++ .../contrib/diction/test/rundiction.in | 3 + thesis/checkbiw/contrib/diction/test/test01 | 22 + thesis/checkbiw/contrib/diction/test/test02 | 22 + thesis/checkbiw/contrib/diction/test/test03 | 22 + thesis/checkbiw/contrib/diction/test/test04 | 22 + thesis/checkbiw/contrib/diction/test/test05 | 28 + thesis/checkbiw/contrib/diction/test/test06 | 29 + thesis/checkbiw/doc/manpage.txt | 170 + thesis/checkbiw/doc/manual.gosh | 45 + thesis/checkbiw/doc/mustread.txt | 307 ++ thesis/checkbiw/doc/own.bib | 7 + thesis/checkbiw/src/biw | 331 ++ thesis/checkbiw/src/checkbiw | 213 + thesis/checkbiw/src/cite-space | 10 + thesis/checkbiw/src/emdash-nospace | 19 + thesis/checkbiw/src/emdash-space | 13 + thesis/checkbiw/src/lang-american | 211 + thesis/checkbiw/src/passive | 28 + thesis/content/00_title.tex | 28 + thesis/content/01_disclaimer.tex | 13 + thesis/content/02_abstract.tex | 19 + thesis/content/10_introduction.aux | 170 + thesis/content/10_introduction.tex | 94 + thesis/content/20_state.aux | 154 + thesis/content/20_state.tex | 40 + thesis/content/30_design.aux | 154 + thesis/content/30_design.tex | 29 + thesis/content/40_implementation.aux | 154 + thesis/content/40_implementation.tex | 31 + thesis/content/50_evaluation.aux | 154 + thesis/content/50_evaluation.tex | 21 + thesis/content/60_futurework.aux | 154 + thesis/content/60_futurework.tex | 12 + thesis/content/70_conclusion.aux | 154 + thesis/content/70_conclusion.tex | 27 + thesis/default.nix | 1 + thesis/gosh | 1 + thesis/images/bachelor-aufgabe.pdf | Bin 0 -> 33179 bytes thesis/images/squirrel.jpg | Bin 0 -> 46491 bytes thesis/nix/build.nix | 24 + thesis/nix/release.nix | 13 + thesis/nix/sources.json | 26 + thesis/nix/sources.nix | 197 + thesis/nix/tex-toolchain.nix | 14 + thesis/own.bib | 74 + thesis/preamble/color.tex | 3 + thesis/preamble/newcommands.tex | 6 + thesis/preamble/packages.tex | 39 + thesis/preamble/style.tex | 86 + thesis/shell.nix | 20 + 102 files changed, 23951 insertions(+) create mode 100644 thesis/.editorconfig create mode 100644 thesis/.latexmkrc create mode 100755 thesis/2023-11-13_104331_DRAFT_Bachelorarbeit_master.pdf create mode 100644 thesis/CHECKLIST create mode 100644 thesis/README.md create mode 100644 thesis/THANKS create mode 100644 thesis/bachelor.aux create mode 100644 thesis/bachelor.bbl create mode 100644 thesis/bachelor.bcf create mode 100644 thesis/bachelor.blg create mode 100644 thesis/bachelor.fdb_latexmk create mode 100644 thesis/bachelor.fls create mode 100644 thesis/bachelor.lof create mode 100644 thesis/bachelor.log create mode 100644 thesis/bachelor.lot create mode 100644 thesis/bachelor.pdf create mode 100644 thesis/bachelor.run.xml create mode 100644 thesis/bachelor.tdo create mode 100644 thesis/bachelor.tex create mode 100644 thesis/bachelor.toc create mode 100644 thesis/checkbiw/COPYING create mode 100644 thesis/checkbiw/MAINTAINER create mode 100644 thesis/checkbiw/TODO create mode 100644 thesis/checkbiw/contrib/diction/COPYING create mode 100644 thesis/checkbiw/contrib/diction/INSTALL create mode 100644 thesis/checkbiw/contrib/diction/Makefile.in create mode 100644 thesis/checkbiw/contrib/diction/NEWS create mode 100644 thesis/checkbiw/contrib/diction/README create mode 100755 thesis/checkbiw/contrib/diction/config.guess create mode 100644 thesis/checkbiw/contrib/diction/config.h.in create mode 100755 thesis/checkbiw/contrib/diction/config.sub create mode 100755 thesis/checkbiw/contrib/diction/configure create mode 100644 thesis/checkbiw/contrib/diction/configure.in create mode 100644 thesis/checkbiw/contrib/diction/de create mode 100644 thesis/checkbiw/contrib/diction/de.po create mode 100644 thesis/checkbiw/contrib/diction/diction.1.in create mode 100644 thesis/checkbiw/contrib/diction/diction.c create mode 100644 thesis/checkbiw/contrib/diction/diction.pot create mode 100644 thesis/checkbiw/contrib/diction/diction.spec create mode 100644 thesis/checkbiw/contrib/diction/diction.spec.in create mode 100644 thesis/checkbiw/contrib/diction/diction.texi.in create mode 100644 thesis/checkbiw/contrib/diction/en create mode 100644 thesis/checkbiw/contrib/diction/getopt.c create mode 100644 thesis/checkbiw/contrib/diction/getopt.h create mode 100644 thesis/checkbiw/contrib/diction/getopt1.c create mode 100755 thesis/checkbiw/contrib/diction/install-sh create mode 100644 thesis/checkbiw/contrib/diction/misc.c create mode 100644 thesis/checkbiw/contrib/diction/misc.h create mode 100644 thesis/checkbiw/contrib/diction/sentence.c create mode 100644 thesis/checkbiw/contrib/diction/sentence.h create mode 100644 thesis/checkbiw/contrib/diction/style.1.in create mode 100644 thesis/checkbiw/contrib/diction/style.c create mode 100755 thesis/checkbiw/contrib/diction/test/rundiction.in create mode 100755 thesis/checkbiw/contrib/diction/test/test01 create mode 100755 thesis/checkbiw/contrib/diction/test/test02 create mode 100755 thesis/checkbiw/contrib/diction/test/test03 create mode 100755 thesis/checkbiw/contrib/diction/test/test04 create mode 100755 thesis/checkbiw/contrib/diction/test/test05 create mode 100755 thesis/checkbiw/contrib/diction/test/test06 create mode 100644 thesis/checkbiw/doc/manpage.txt create mode 100644 thesis/checkbiw/doc/manual.gosh create mode 100644 thesis/checkbiw/doc/mustread.txt create mode 100644 thesis/checkbiw/doc/own.bib create mode 100644 thesis/checkbiw/src/biw create mode 100755 thesis/checkbiw/src/checkbiw create mode 100644 thesis/checkbiw/src/cite-space create mode 100644 thesis/checkbiw/src/emdash-nospace create mode 100644 thesis/checkbiw/src/emdash-space create mode 100644 thesis/checkbiw/src/lang-american create mode 100644 thesis/checkbiw/src/passive create mode 100644 thesis/content/00_title.tex create mode 100644 thesis/content/01_disclaimer.tex create mode 100644 thesis/content/02_abstract.tex create mode 100644 thesis/content/10_introduction.aux create mode 100644 thesis/content/10_introduction.tex create mode 100644 thesis/content/20_state.aux create mode 100644 thesis/content/20_state.tex create mode 100644 thesis/content/30_design.aux create mode 100644 thesis/content/30_design.tex create mode 100644 thesis/content/40_implementation.aux create mode 100644 thesis/content/40_implementation.tex create mode 100644 thesis/content/50_evaluation.aux create mode 100644 thesis/content/50_evaluation.tex create mode 100644 thesis/content/60_futurework.aux create mode 100644 thesis/content/60_futurework.tex create mode 100644 thesis/content/70_conclusion.aux create mode 100644 thesis/content/70_conclusion.tex create mode 100644 thesis/default.nix create mode 160000 thesis/gosh create mode 100644 thesis/images/bachelor-aufgabe.pdf create mode 100644 thesis/images/squirrel.jpg create mode 100644 thesis/nix/build.nix create mode 100644 thesis/nix/release.nix create mode 100644 thesis/nix/sources.json create mode 100644 thesis/nix/sources.nix create mode 100644 thesis/nix/tex-toolchain.nix create mode 100644 thesis/own.bib create mode 100644 thesis/preamble/color.tex create mode 100644 thesis/preamble/newcommands.tex create mode 100644 thesis/preamble/packages.tex create mode 100644 thesis/preamble/style.tex create mode 100644 thesis/shell.nix diff --git a/thesis/.editorconfig b/thesis/.editorconfig new file mode 100644 index 0000000..a630245 --- /dev/null +++ b/thesis/.editorconfig @@ -0,0 +1,17 @@ +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[Makefile] +indent_style = tab + +[*.tex] +max_line_length = 100 diff --git a/thesis/.latexmkrc b/thesis/.latexmkrc new file mode 100644 index 0000000..0be3618 --- /dev/null +++ b/thesis/.latexmkrc @@ -0,0 +1,24 @@ +# make sure that "makeglossaries" works with latexmk +# # https://tex.stackexchange.com/questions/1226/how-to-make-latexmk-use-makeglossaries/44316#44316 + +add_cus_dep('glo', 'gls', 0, 'run_makeglossaries'); +add_cus_dep('acn', 'acr', 0, 'run_makeglossaries'); + +sub run_makeglossaries { + if ( $silent ) { + system "makeglossaries -q -s '$_[0].ist' '$_[0]'"; + } + else { + system "makeglossaries -s '$_[0].ist' '$_[0]'"; + }; +} + +push @generated_exts, 'glo', 'gls', 'glg'; +push @generated_exts, 'acn', 'acr', 'alg'; + +# ----------------------------------- + +# Clean everything. +# https://tex.stackexchange.com/questions/84006 +# https://tex.stackexchange.com/questions/83341 +$clean_ext .= ' %R.ist %R.xdy %R.bbl %R.glsdefs %R.run.xml %R.lol %R.tdo'; diff --git a/thesis/2023-11-13_104331_DRAFT_Bachelorarbeit_master.pdf b/thesis/2023-11-13_104331_DRAFT_Bachelorarbeit_master.pdf new file mode 100755 index 0000000000000000000000000000000000000000..5094fb7d2b890d14f8fb659995d761cd5ecaddec GIT binary patch literal 133100 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 literal 0 HcmV?d00001 diff --git a/thesis/CHECKLIST b/thesis/CHECKLIST new file mode 100644 index 0000000..be8b447 --- /dev/null +++ b/thesis/CHECKLIST @@ -0,0 +1,28 @@ +http://www.ics.mq.edu.au/~rdale/resources/writingnotes/latexstyle.html#dashes + +* Dashes + +The single minus —the hyphen— appears within words; use the double +minus — the en-dash — in number ranges; and use the treble dash, or +em-dash, as in the previous clauses here. + +* Headings + +In section headings, capitalize all words except closed class words +(i.e., prepositions, conjuctions, and so on). + +in subsection headings and below, only capitalize the first word and +any proper names. + +* Structure + +Tell them what you're going to tell them, tell them it, then tell them +you've told them it. + +* Footnotes + +Don't put a space before a \footnote command. Put the footnote after +the punctuation mark it is next to, not before it. + +Make sure you include a full stop at the end of the footnote text. And +make sure your footnotes are complete sentences. diff --git a/thesis/README.md b/thesis/README.md new file mode 100644 index 0000000..1eb04f2 --- /dev/null +++ b/thesis/README.md @@ -0,0 +1,164 @@ +[![Build](https://github.com/TUD-OS/latex-template/actions/workflows/build.yml/badge.svg)](https://github.com/TUD-OS/latex-template/actions/workflows/build.yml) + +## Was ist das? + +Dieses Diplomarbeits-Latex-Template stellt ein Skelett für eine +Diplomarbeit mit zugehöriger Make-Datei zur Verfügung. + +## Checkout Submodules First + +Um das `$ make checkbiw` ausführen zu können, musst du zuerst die +Submodule auschecken: `git submodule update --init --recursive` + +## So geht's los + +Als erstes solltest du in diplom.tex alle Vorkommen von Otto +Mustermann, "Dein Titel" und "Dein Betreuer" ersetzen. + +`diplom.tex` will deine Aufgabe als PDF einbinden. Es sucht +`images/diplom-aufgabe.pdf`, was eine A4 Seite sein muss. Mit + + convert diplom-aufgabe.pdf + +solltest du eine beliebige Bilddatei in ein PDF umwandeln können, wenn +ImageMagick auf deinem System installiert ist. + +An diesen Punkt sollte `make` ein `diplom.pdf` produzieren. + +Das Template unterstützt sowohl englischen und deutschen Text. Englisch ist +standardmäßig eingestellt. Für deutschen Text kann der letzte `\selectlanguage` +Aufruf in `diplom.tex` einfach weggelassen werden. + +## How To Build + +- `$ make`: regular build that produces `diplom.pdf` and `yyyy-mm-dd_hhmmss DRAFT Diplomarbeit - Branch .pdf`. +- `$ make watch`: Performs a watch task, i.e. automatically re-builds everything quickly on changes. + If your PDF viewer supports automatic reload on file changes (such as the default PDF viewer in GNOME) + you get a cool productive working environment. + +### Build Prerequisites (Regular Build) + +In case you don't want to install `texlive-full` to save disk space, the following packages are +actually required: \ + +```shell +$ sudo apt install texlive-base \ + texlive-lang-german \ + texlive-lang-english \ + `# for siunits` \ + texlive-science \ + texlive-luatex \ + `# biber gets invoked by the utilities provided by bibtex-extra` \ + biber \ + texlive-bibtex-extra \ + `# for csquotes` \ + texlive-latex-extra +``` + +Additionally, please install also: + +```shell +$ sudo apt install \ + `# for the `make checkbiw` script` + diction \ + `# build system to build the latex project` + latexmk +``` + +### Build Prerequisites (Nix Build) + +This template can also be built using [Nix](https://nixos.org/download.html). You have +the option to either use `$ nix-build`, which will produce `result/diplom.pdf`, or to +use +```bash +$ nix-shell +$ make clean +$ make watch # (or just make) +``` + +## Grafiken einbinden + +Grafiken sollten im `images/` Verzeichnis abgelegt werden und im +Makefile in die entsprechende `DOC_IMG_*` Variable eingetragen +werden. Momentan werden Grafiken in den Formaten PDF, PNG und JPEG +unterstützt. PDF eignet sich für Vektorgrafiken und kann von den +meisten Vektorgrafikprogrammen erzeugt werden (Inkscape, OpenOffice +Draw, ...). + +## Tipps + +Diese Datei enthält im Moment ein Sammlung von Tipps und Tricks, sowie +einige Hintergrundinformationen. + +- passive voice: **do not use it** + - There is a Makefile template checking for 'Bugs in Writing' according + to the book of the same name (`make checkbiw`). Diction must be installed + somewhere in the path (check out the directory + `checkbiw/diction` for details). + - Vim users can add detection for passive voice and *weasel words* via + Björn's [`vim-weasel` package](https://github.com/bjoernd/vim-weasel) +- font sizes in images: adapt to other text size + (ideally, use PGF/TikZ and PGFPlots) +- avoid missing meta data in PDF files (title, keywords, author) +- "good" title page +- use biblatex for references, it pays off fast +- convert images to correct include types (vector formats, e.g. PDF) +- protected spaces between, e.g., `Figure~1`, `~\cite{xyz}` +- units: use the `siunitx` package to typeset units +- French spacing: tell latex what is an end of sentence with `\@.` + where it cannot know it (e.g., `This is a sentence ending on an + abbreviation BASIC\@. Next sentence.`) + - Again, you can try to detect a good portion of French spacing + using an automatic algorithm (`make check-french-spacing`). + Improvements are welcome. +- listings with at least three elements have a + comma before the last and/or (*serial* or *Oxford comma*): + *"Set A contains elements a, b, and c."* +- more stylistic information can be found in *Bugs in writing* (BIW) + by Lyn Dupré +- add chapters without a chapter number (e.g. appendix) with `\addchap{Chapter without Number}` + instead of `\chapter*{Chapter without Number}`. Otherwise, `\chaptername` and similar macros + inherit the name of the last chapter with a number in several cases. + `\addchap` is a macro provided by KOMA +- this project uses a `.editorconfig` which makes sure you have the same basic formatting + settings across IDEs **as you type**. Support exists in Clion, VS Code, IntelliJ, + vim, ... make sure to activate the setting or add the plugin for that into your IDE/editor + + +## spezielle Tipps von Frank + +- Ich verwende in der Vorlage KOMA-Script (`scrbook`), welches vor allem + für den deutschsprachigen Raum gedacht ist. KOMA-Script kann auch + international verwendet werden, das Format ist aber für + Englischsprachige Arbeiten etwas unüblich. + +- Ein Hinweis zum Erstellen der Grafiken: Viele verwenden xfig, ich + habe meine Grafiken mit OpenOffice Draw erzeugt. Dort hat man mehr + Möglichkeiten. Einfach als PDF exportieren. Damit alle Grafiken + eine gleichmäßige Größe besitzen, habe ich einfach immer die + Seitengröße so gesetzt, dass die Zeichnung voll erfasst wird. Dann + habe ich immer die gleiche Schriftgröße gesetzt. Beim Einbinden der + Grafiken ins LaTeX-File habe ich einen Faktor, z.B. + + \includegraphics[width=190\figurewidth]{architecture} + + mit eingebaut. Den Faktor setze ich dann einfach am Anfang mit + + \setlength{\figurewidth}{.070cm} + + und bin damit in der Lage, alle Grafiken zugleich in der Größe zu verändern. + Die Zahl 190 aus dem includegraphics-Statement kommt von der gewählten + Seitengröße in OpenOffice Draw (190mm). + +- Wenn man viele Grafiken hat, die man genau ausrichten will, ist ein + + \usepackage{placeins} + + sinnvoll. Dann kann man am Ende einer Seite + + \FloatBarrier + + schreiben und erzwingt die Ausgabe aller noch offenen Grafiken an + diesem Punkt. Mir ist bewusst, dass das etwas unschön ist, aber + manchmal braucht man das wirklich, z.B. wenn man alle Messwerte auf + einer Seite unterbringen will. diff --git a/thesis/THANKS b/thesis/THANKS new file mode 100644 index 0000000..7396ec6 --- /dev/null +++ b/thesis/THANKS @@ -0,0 +1,9 @@ +This template has formerly been developed by + Martin Pohlack + +Thanks for contributions goes to: + + Frank Mehnert + Torvald Riegel + Michael Roitzsch + Björn Döbel diff --git a/thesis/bachelor.aux b/thesis/bachelor.aux new file mode 100644 index 0000000..a69ac83 --- /dev/null +++ b/thesis/bachelor.aux @@ -0,0 +1,122 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand*\new@tpo@label[2]{} +\providecommand\babel@aux[2]{} +\@nameuse{bbl@beforestart} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand\BKM@entry[2]{} +\@writefile{toc}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax } +\@writefile{lof}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax } +\@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax } +\abx@aux@refcontext{anyt/global//global/global} +\babel@aux{british}{} +\babel@aux{british}{} +\babel@aux{british}{} +\babel@aux{british}{} +\@writefile{tdo}{\contentsline {todo}{write abstract}{VII}{section*.2}\protected@file@percent } +\pgfsyspdfmark {pgfid1}{5827124}{32814236} +\pgfsyspdfmark {pgfid4}{36195753}{32827333} +\pgfsyspdfmark {pgfid5}{38451947}{32582266} +\BKM@entry{id=1,dest={636861707465722A2E35},srcline={71},srcfile={2E2F62616368656C6F722E746578}}{5C3337365C3337375C3030304C5C303030695C303030735C303030745C3030305C3034305C3030306F5C303030665C3030305C3034305C303030465C303030695C303030675C303030755C303030725C303030655C30303073} +\@writefile{toc}{\contentsline {chapter}{\nonumberline List of Figures}{XIII}{chapter*.5}\protected@file@percent } +\BKM@entry{id=2,dest={636861707465722A2E36},srcline={74},srcfile={2E2F62616368656C6F722E746578}}{5C3337365C3337375C3030304C5C303030695C303030735C303030745C3030305C3034305C3030306F5C303030665C3030305C3034305C303030545C303030615C303030625C3030306C5C303030655C30303073} +\@writefile{toc}{\contentsline {chapter}{\nonumberline List of Tables}{XV}{chapter*.6}\protected@file@percent } +\@input{content/10_introduction.aux} +\BKM@entry{id=3,dest={636861707465722E31},srcline={1},srcfile={2E2F636F6E74656E742F31305F696E74726F64756374696F6E2E746578}}{5C3337365C3337375C303030495C3030306E5C303030745C303030725C3030306F5C303030645C303030755C303030635C303030745C303030695C3030306F5C3030306E} +\BKM@entry{id=4,dest={73656374696F6E2E312E31},srcline={21},srcfile={2E2F636F6E74656E742F31305F696E74726F64756374696F6E2E746578}}{5C3337365C3337375C303030415C3030305C3034305C303030535C303030655C303030635C303030745C303030695C3030306F5C3030306E} +\BKM@entry{id=5,dest={73656374696F6E2E312E32},srcline={45},srcfile={2E2F636F6E74656E742F31305F696E74726F64756374696F6E2E746578}}{5C3337365C3337375C303030415C3030306E5C3030306F5C303030745C303030685C303030655C303030725C3030305C3034305C303030535C303030655C303030635C303030745C303030695C3030306F5C3030306E} +\abx@aux@cite{bellard2005qfa} +\abx@aux@segm{0}{0}{bellard2005qfa} +\abx@aux@cite{bellard2005qfa} +\abx@aux@segm{0}{0}{bellard2005qfa} +\abx@aux@cite{boileau06} +\abx@aux@segm{0}{0}{boileau06} +\abx@aux@cite{becher04:_feurig_hacken_mit_firew} +\abx@aux@segm{0}{0}{becher04:_feurig_hacken_mit_firew} +\abx@aux@cite{green04} +\abx@aux@segm{0}{0}{green04} +\abx@aux@cite{patent:4819234} +\abx@aux@segm{0}{0}{patent:4819234} +\BKM@entry{id=6,dest={73656374696F6E2E312E33},srcline={65},srcfile={2E2F636F6E74656E742F31305F696E74726F64756374696F6E2E746578}}{5C3337365C3337375C303030595C303030655C303030745C3030305C3034305C303030415C3030306E5C3030306F5C303030745C303030685C303030655C303030725C3030305C3034305C303030535C303030655C303030635C303030745C303030695C3030306F5C3030306E} +\BKM@entry{id=7,dest={73656374696F6E2E312E34},srcline={75},srcfile={2E2F636F6E74656E742F31305F696E74726F64756374696F6E2E746578}}{5C3337365C3337375C303030545C303030655C303030735C303030745C3030305C3034305C303030635C3030306F5C3030306D5C3030306D5C303030615C3030306E5C303030645C30303073} +\BKM@entry{id=8,dest={73656374696F6E2E312E35},srcline={81},srcfile={2E2F636F6E74656E742F31305F696E74726F64756374696F6E2E746578}}{5C3337365C3337375C303030545C303030655C303030735C303030745C3030305C3034305C303030535C303030705C303030655C303030635C303030695C303030615C3030306C5C3030305C3034305C303030435C303030685C303030615C303030725C30303073} +\pgfsyspdfmark {pgfid6}{5827124}{42600091} +\pgfsyspdfmark {pgfid9}{36195753}{42613188} +\pgfsyspdfmark {pgfid10}{38451947}{42368121} +\pgfsyspdfmark {pgfid11}{5827124}{42600091} +\pgfsyspdfmark {pgfid14}{36195753}{40147323} +\pgfsyspdfmark {pgfid15}{38451947}{39902256} +\pgfsyspdfmark {pgfid16}{5827124}{42600091} +\pgfsyspdfmark {pgfid19}{36195753}{37821394} +\pgfsyspdfmark {pgfid20}{38451947}{37576327} +\pgfsyspdfmark {pgfid21}{5827124}{21594593} +\pgfsyspdfmark {pgfid24}{36195753}{21607690} +\pgfsyspdfmark {pgfid25}{38451947}{21362623} +\@input{content/20_state.aux} +\BKM@entry{id=9,dest={636861707465722E32},srcline={1},srcfile={2E2F636F6E74656E742F32305F73746174652E746578}}{5C3337365C3337375C303030545C303030655C303030635C303030685C3030306E5C303030695C303030635C303030615C3030306C5C3030305C3034305C303030425C303030615C303030635C3030306B5C303030675C303030725C3030306F5C303030755C3030306E5C30303064} +\pgfsyspdfmark {pgfid27}{5827124}{41708801} +\pgfsyspdfmark {pgfid30}{36195753}{41721898} +\pgfsyspdfmark {pgfid31}{38451947}{41476831} +\@input{content/30_design.aux} +\BKM@entry{id=10,dest={636861707465722E33},srcline={1},srcfile={2E2F636F6E74656E742F33305F64657369676E2E746578}}{5C3337365C3337375C303030445C303030655C303030735C303030695C303030675C3030306E} +\pgfsyspdfmark {pgfid32}{5827124}{41708801} +\pgfsyspdfmark {pgfid35}{36195753}{41721898} +\pgfsyspdfmark {pgfid36}{38451947}{41476831} +\@input{content/40_implementation.aux} +\BKM@entry{id=11,dest={636861707465722E34},srcline={1},srcfile={2E2F636F6E74656E742F34305F696D706C656D656E746174696F6E2E746578}}{5C3337365C3337375C303030495C3030306D5C303030705C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C303030615C303030745C303030695C3030306F5C3030306E} +\pgfsyspdfmark {pgfid37}{5827124}{41708801} +\pgfsyspdfmark {pgfid40}{36195753}{41721898} +\pgfsyspdfmark {pgfid41}{38451947}{41476831} +\@input{content/50_evaluation.aux} +\BKM@entry{id=12,dest={636861707465722E35},srcline={1},srcfile={2E2F636F6E74656E742F35305F6576616C756174696F6E2E746578}}{5C3337365C3337375C303030455C303030765C303030615C3030306C5C303030755C303030615C303030745C303030695C3030306F5C3030306E} +\pgfsyspdfmark {pgfid42}{5827124}{41708801} +\pgfsyspdfmark {pgfid45}{36195753}{41721898} +\pgfsyspdfmark {pgfid46}{38451947}{41476831} +\@input{content/60_futurework.aux} +\BKM@entry{id=13,dest={636861707465722E36},srcline={1},srcfile={2E2F636F6E74656E742F36305F667574757265776F726B2E746578}}{5C3337365C3337375C303030465C303030755C303030745C303030755C303030725C303030655C3030305C3034305C303030575C3030306F5C303030725C3030306B} +\pgfsyspdfmark {pgfid47}{5827124}{41708801} +\pgfsyspdfmark {pgfid50}{36195753}{41721898} +\pgfsyspdfmark {pgfid51}{38451947}{41476831} +\@input{content/70_conclusion.aux} +\BKM@entry{id=14,dest={636861707465722E37},srcline={1},srcfile={2E2F636F6E74656E742F37305F636F6E636C7573696F6E2E746578}}{5C3337365C3337375C303030435C3030306F5C3030306E5C303030635C3030306C5C303030755C303030735C303030695C3030306F5C3030306E5C3030305C3034305C303030415C3030306E5C303030645C3030305C3034305C3030304F5C303030755C303030745C3030306C5C3030306F5C3030306F5C3030306B} +\pgfsyspdfmark {pgfid52}{5827124}{41708801} +\pgfsyspdfmark {pgfid55}{36195753}{41721898} +\pgfsyspdfmark {pgfid56}{38451947}{41476831} +\BKM@entry{id=15,dest={636861707465722A2E3230},srcline={97},srcfile={2E2F62616368656C6F722E746578}}{5C3337365C3337375C303030425C303030695C303030625C3030306C5C303030695C3030306F5C303030675C303030725C303030615C303030705C303030685C30303079} +\abx@aux@read@bbl@mdfivesum{046C6F2BBBD38F93B729C568741E6E5E} +\abx@aux@refcontextdefaultsdone +\abx@aux@defaultrefcontext{0}{becher04:_feurig_hacken_mit_firew}{anyt/global//global/global} +\abx@aux@defaultrefcontext{0}{bellard2005qfa}{anyt/global//global/global} +\abx@aux@defaultrefcontext{0}{boileau06}{anyt/global//global/global} +\abx@aux@defaultrefcontext{0}{green04}{anyt/global//global/global} +\abx@aux@defaultrefcontext{0}{patent:4819234}{anyt/global//global/global} +\@writefile{toc}{\contentsline {chapter}{\nonumberline Bibliography}{15}{chapter*.20}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{LastPage}{{}{15}{}{page.15}{}} +\xdef\lastpage@lastpage{15} +\xdef\lastpage@lastpageHy{15} +\global\@namedef{scr@dte@chapter@lastmaxnumwidth}{10.67618pt} +\global\@namedef{scr@dte@section@lastmaxnumwidth}{18.37404pt} +\global\@namedef{scr@dte@table@lastmaxnumwidth}{18.37404pt} +\global\@namedef{scr@dte@figure@lastmaxnumwidth}{18.37404pt} +\@writefile{toc}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file} +\@writefile{lof}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file} +\@writefile{lot}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file} +\gdef \@abspage@last{31} diff --git a/thesis/bachelor.bbl b/thesis/bachelor.bbl new file mode 100644 index 0000000..87e21f8 --- /dev/null +++ b/thesis/bachelor.bbl @@ -0,0 +1,173 @@ +% $ biblatex auxiliary file $ +% $ biblatex bbl format version 3.1 $ +% Do not modify the above lines! +% +% This is an auxiliary file used by the 'biblatex' package. +% This file may safely be deleted. It will be recreated by +% biber as required. +% +\begingroup +\makeatletter +\@ifundefined{ver@biblatex.sty} + {\@latex@error + {Missing 'biblatex' package} + {The bibliography requires the 'biblatex' package.} + \aftergroup\endinput} + {} +\endgroup + + +\refsection{0} + \datalist[entry]{anyt/global//global/global} + \entry{becher04:_feurig_hacken_mit_firew}{inproceedings}{} + \name{author}{2}{}{% + {{hash=9b3cc80bad616f9b1a14a1ff817c340b}{% + family={Becher}, + familyi={B\bibinitperiod}, + given={Michael}, + giveni={M\bibinitperiod}}}% + {{hash=996f6a7b5d7e6fce1d3d9149897fb2ea}{% + family={Dornseif}, + familyi={D\bibinitperiod}, + given={Maximillian}, + giveni={M\bibinitperiod}}}% + } + \strng{namehash}{2e447d6574416e669e938440136dd1c5} + \strng{fullhash}{2e447d6574416e669e938440136dd1c5} + \strng{bibnamehash}{2e447d6574416e669e938440136dd1c5} + \strng{authorbibnamehash}{2e447d6574416e669e938440136dd1c5} + \strng{authornamehash}{2e447d6574416e669e938440136dd1c5} + \strng{authorfullhash}{2e447d6574416e669e938440136dd1c5} + \field{labelalpha}{BD04} + \field{sortinit}{B} + \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{21C3: Proceedings of the 21st Chaos Communication Congress} + \field{month}{12} + \field{title}{{Feuriges Hacken - Spaß mit Firewire}} + \field{year}{2004} + \field{dateera}{ce} + \endentry + \entry{bellard2005qfa}{inproceedings}{} + \name{author}{1}{}{% + {{hash=4337d6f14dfa35071b858acc19f95129}{% + family={Bellard}, + familyi={B\bibinitperiod}, + given={Fabrice}, + giveni={F\bibinitperiod}}}% + } + \strng{namehash}{4337d6f14dfa35071b858acc19f95129} + \strng{fullhash}{4337d6f14dfa35071b858acc19f95129} + \strng{bibnamehash}{4337d6f14dfa35071b858acc19f95129} + \strng{authorbibnamehash}{4337d6f14dfa35071b858acc19f95129} + \strng{authornamehash}{4337d6f14dfa35071b858acc19f95129} + \strng{authorfullhash}{4337d6f14dfa35071b858acc19f95129} + \field{labelalpha}{Bel05} + \field{sortinit}{B} + \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{Proceedings of the USENIX Annual Technical Conference, FREENIX Track} + \field{title}{{QEMU, a fast and portable dynamic translator}} + \field{year}{2005} + \field{dateera}{ce} + \field{pages}{41\bibrangedash 46} + \range{pages}{6} + \endentry + \entry{boileau06}{inproceedings}{} + \name{author}{1}{}{% + {{hash=69a714b1aad3615b5e35fcc1a4976fef}{% + family={Boileau}, + familyi={B\bibinitperiod}, + given={Adam}, + giveni={A\bibinitperiod}}}% + } + \strng{namehash}{69a714b1aad3615b5e35fcc1a4976fef} + \strng{fullhash}{69a714b1aad3615b5e35fcc1a4976fef} + \strng{bibnamehash}{69a714b1aad3615b5e35fcc1a4976fef} + \strng{authorbibnamehash}{69a714b1aad3615b5e35fcc1a4976fef} + \strng{authornamehash}{69a714b1aad3615b5e35fcc1a4976fef} + \strng{authorfullhash}{69a714b1aad3615b5e35fcc1a4976fef} + \field{labelalpha}{Boi06} + \field{sortinit}{B} + \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{booktitle}{RUXCON} + \field{title}{{Hit by a Bus: Physical Access Attacks with Firewire}} + \field{year}{2006} + \field{dateera}{ce} + \endentry + \entry{green04}{online}{} + \name{author}{1}{}{% + {{hash=97aea4b1cf57268b17599c6760e3f694}{% + family={Green}, + familyi={G\bibinitperiod}, + given={Tom}, + giveni={T\bibinitperiod}}}% + } + \strng{namehash}{97aea4b1cf57268b17599c6760e3f694} + \strng{fullhash}{97aea4b1cf57268b17599c6760e3f694} + \strng{bibnamehash}{97aea4b1cf57268b17599c6760e3f694} + \strng{authorbibnamehash}{97aea4b1cf57268b17599c6760e3f694} + \strng{authornamehash}{97aea4b1cf57268b17599c6760e3f694} + \strng{authorfullhash}{97aea4b1cf57268b17599c6760e3f694} + \field{labelalpha}{Gre04} + \field{sortinit}{G} + \field{sortinithash}{62eb2aa29549e4fdbd3cb154ec5711cb} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{note}{Slide presentation at the WinHEC 2004} + \field{title}{{1394 Kernel Debugging Tips and Tricks}} + \field{urlday}{3} + \field{urlmonth}{6} + \field{urlyear}{2009} + \field{year}{2004} + \field{dateera}{ce} + \field{urldateera}{ce} + \verb{urlraw} + \verb http://download.microsoft.com/download/1/8/f/18f8cee2-0b64-41f2-893d-a6f2295b40c8/DW04001_WINHEC2004.ppt + \endverb + \verb{url} + \verb http://download.microsoft.com/download/1/8/f/18f8cee2-0b64-41f2-893d-a6f2295b40c8/DW04001_WINHEC2004.ppt + \endverb + \endentry + \entry{patent:4819234}{patent}{} + \name{author}{1}{}{% + {{hash=5175eb328916daa79d7df4e4a90143f1}{% + family={Huber}, + familyi={H\bibinitperiod}, + given={William\bibnamedelima S.}, + giveni={W\bibinitperiod\bibinitdelim S\bibinitperiod}}}% + } + \list{location}{1}{% + {Needham, MA}% + } + \strng{namehash}{5175eb328916daa79d7df4e4a90143f1} + \strng{fullhash}{5175eb328916daa79d7df4e4a90143f1} + \strng{bibnamehash}{5175eb328916daa79d7df4e4a90143f1} + \strng{authorbibnamehash}{5175eb328916daa79d7df4e4a90143f1} + \strng{authornamehash}{5175eb328916daa79d7df4e4a90143f1} + \strng{authorfullhash}{5175eb328916daa79d7df4e4a90143f1} + \field{labelalpha}{Hub89} + \field{sortinit}{H} + \field{sortinithash}{6db6145dae8dc9e1271a8d556090b50a} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{month}{4} + \field{number}{4819234} + \field{title}{Operating system debugger} + \field{year}{1989} + \field{dateera}{ce} + \verb{urlraw} + \verb http://www.freepatentsonline.com/4819234.html + \endverb + \verb{url} + \verb http://www.freepatentsonline.com/4819234.html + \endverb + \endentry + \enddatalist +\endrefsection +\endinput + diff --git a/thesis/bachelor.bcf b/thesis/bachelor.bcf new file mode 100644 index 0000000..208a684 --- /dev/null +++ b/thesis/bachelor.bcf @@ -0,0 +1,2396 @@ + + + + + + output_encoding + utf8 + + + input_encoding + utf8 + + + debug + 0 + + + mincrossrefs + 2 + + + minxrefs + 2 + + + sortcase + 1 + + + sortupper + 1 + + + + + + + alphaothers + + + + + labelalpha + 1 + + + labelnamespec + shortauthor + author + shorteditor + editor + translator + + + labeltitle + 0 + + + labeltitlespec + shorttitle + title + maintitle + + + labeltitleyear + 0 + + + labeldateparts + 0 + + + labeldatespec + date + year + eventdate + origdate + urldate + nodate + + + julian + 0 + + + gregorianstart + 1582-10-15 + + + maxalphanames + 3 + + + maxbibnames + 99 + + + maxcitenames + 3 + + + maxsortnames + 99 + + + maxitems + 3 + + + minalphanames + 1 + + + minbibnames + 1 + + + mincitenames + 1 + + + minsortnames + 1 + + + minitems + 1 + + + nohashothers + 0 + + + noroman + 0 + + + nosortothers + 0 + + + singletitle + 0 + + + skipbib + 0 + + + skipbiblist + 0 + + + skiplab + 0 + + + sortalphaothers + + + + + sortlocale + british + + + sortingtemplatename + anyt + + + sortsets + 0 + + + uniquelist + false + + + uniquename + false + + + uniqueprimaryauthor + 0 + + + uniquetitle + 0 + + + uniquebaretitle + 0 + + + uniquework + 0 + + + useprefix + 0 + + + useafterword + 1 + + + useannotator + 1 + + + useauthor + 1 + + + usebookauthor + 1 + + + usecommentator + 1 + + + useeditor + 1 + + + useeditora + 1 + + + useeditorb + 1 + + + useeditorc + 1 + + + useforeword + 1 + + + useholder + 1 + + + useintroduction + 1 + + + usenamea + 1 + + + usenameb + 1 + + + usenamec + 1 + + + usetranslator + 0 + + + useshortauthor + 1 + + + useshorteditor + 1 + + + + + + labelalpha + 1 + + + labelnamespec + shortauthor + author + shorteditor + editor + translator + + + labeltitle + 0 + + + labeltitlespec + shorttitle + title + maintitle + + + labeltitleyear + 0 + + + labeldateparts + 0 + + + labeldatespec + date + year + eventdate + origdate + urldate + nodate + + + maxalphanames + 3 + + + maxbibnames + 99 + + + maxcitenames + 3 + + + maxsortnames + 99 + + + maxitems + 3 + + + minalphanames + 1 + + + minbibnames + 1 + + + mincitenames + 1 + + + minsortnames + 1 + + + minitems + 1 + + + nohashothers + 0 + + + noroman + 0 + + + nosortothers + 0 + + + singletitle + 0 + + + skipbib + 0 + + + skiplab + 0 + + + skipbiblist + 0 + + + uniquelist + false + + + uniquename + false + + + uniqueprimaryauthor + 0 + + + uniquetitle + 0 + + + uniquebaretitle + 0 + + + uniquework + 0 + + + useprefix + 0 + + + useafterword + 1 + + + useannotator + 1 + + + useauthor + 1 + + + usebookauthor + 1 + + + usecommentator + 1 + + + useeditor + 1 + + + useeditora + 1 + + + useeditorb + 1 + + + useeditorc + 1 + + + useforeword + 1 + + + useholder + 1 + + + useintroduction + 1 + + + usenamea + 1 + + + usenameb + 1 + + + usenamec + 1 + + + usetranslator + 0 + + + useshortauthor + 1 + + + useshorteditor + 1 + + + + + datamodel + labelalphanametemplate + labelalphatemplate + inheritance + translit + uniquenametemplate + sortingnamekeytemplate + sortingtemplate + extradatespec + labelnamespec + labeltitlespec + labeldatespec + controlversion + alphaothers + sortalphaothers + presort + texencoding + bibencoding + sortingtemplatename + sortlocale + language + autolang + langhook + indexing + hyperref + backrefsetstyle + block + pagetracker + citecounter + citetracker + ibidtracker + idemtracker + opcittracker + loccittracker + labeldate + labeltime + dateera + date + time + eventdate + eventtime + origdate + origtime + urldate + urltime + alldatesusetime + alldates + alltimes + gregorianstart + autocite + notetype + uniquelist + uniquename + refsection + refsegment + citereset + sortlos + babel + datelabel + backrefstyle + arxiv + familyinits + giveninits + prefixinits + suffixinits + useafterword + useannotator + useauthor + usebookauthor + usecommentator + useeditor + useeditora + useeditorb + useeditorc + useforeword + useholder + useintroduction + usenamea + usenameb + usenamec + usetranslator + useshortauthor + useshorteditor + debug + loadfiles + safeinputenc + sortcase + sortupper + terseinits + abbreviate + dateabbrev + clearlang + sortcites + sortsets + backref + backreffloats + trackfloats + parentracker + labeldateusetime + datecirca + dateuncertain + dateusetime + eventdateusetime + origdateusetime + urldateusetime + julian + datezeros + timezeros + timezones + seconds + autopunct + punctfont + labelnumber + labelalpha + labeltitle + labeltitleyear + labeldateparts + nohashothers + nosortothers + noroman + singletitle + uniquetitle + uniquebaretitle + uniquework + uniqueprimaryauthor + defernumbers + locallabelwidth + bibwarn + useprefix + skipbib + skipbiblist + skiplab + dataonly + defernums + firstinits + sortfirstinits + sortgiveninits + labelyear + isbn + url + doi + eprint + related + subentry + bibtexcaseprotection + mincrossrefs + minxrefs + maxnames + minnames + maxbibnames + minbibnames + maxcitenames + mincitenames + maxsortnames + minsortnames + maxitems + minitems + maxalphanames + minalphanames + maxparens + dateeraauto + + + alphaothers + sortalphaothers + presort + indexing + citetracker + ibidtracker + idemtracker + opcittracker + loccittracker + uniquelist + uniquename + familyinits + giveninits + prefixinits + suffixinits + useafterword + useannotator + useauthor + usebookauthor + usecommentator + useeditor + useeditora + useeditorb + useeditorc + useforeword + useholder + useintroduction + usenamea + usenameb + usenamec + usetranslator + useshortauthor + useshorteditor + terseinits + abbreviate + dateabbrev + clearlang + labelnumber + labelalpha + labeltitle + labeltitleyear + labeldateparts + nohashothers + nosortothers + noroman + singletitle + uniquetitle + uniquebaretitle + uniquework + uniqueprimaryauthor + useprefix + skipbib + skipbiblist + skiplab + dataonly + skiplos + labelyear + isbn + url + doi + eprint + related + subentry + bibtexcaseprotection + labelalphatemplate + translit + sortexclusion + sortinclusion + labelnamespec + labeltitlespec + labeldatespec + maxnames + minnames + maxbibnames + minbibnames + maxcitenames + mincitenames + maxsortnames + minsortnames + maxitems + minitems + maxalphanames + minalphanames + + + noinherit + nametemplates + labelalphanametemplatename + uniquenametemplatename + sortingnamekeytemplatename + presort + indexing + citetracker + ibidtracker + idemtracker + opcittracker + loccittracker + uniquelist + uniquename + familyinits + giveninits + prefixinits + suffixinits + useafterword + useannotator + useauthor + usebookauthor + usecommentator + useeditor + useeditora + useeditorb + useeditorc + useforeword + useholder + useintroduction + usenamea + usenameb + usenamec + usetranslator + useshortauthor + useshorteditor + terseinits + abbreviate + dateabbrev + clearlang + labelnumber + labelalpha + labeltitle + labeltitleyear + labeldateparts + nohashothers + nosortothers + noroman + singletitle + uniquetitle + uniquebaretitle + uniquework + uniqueprimaryauthor + useprefix + skipbib + skipbiblist + skiplab + dataonly + skiplos + isbn + url + doi + eprint + related + subentry + bibtexcaseprotection + maxnames + minnames + maxbibnames + minbibnames + maxcitenames + mincitenames + maxsortnames + minsortnames + maxitems + minitems + maxalphanames + minalphanames + + + nametemplates + labelalphanametemplatename + uniquenametemplatename + sortingnamekeytemplatename + uniquelist + uniquename + familyinits + giveninits + prefixinits + suffixinits + terseinits + nohashothers + nosortothers + useprefix + + + nametemplates + labelalphanametemplatename + uniquenametemplatename + sortingnamekeytemplatename + uniquename + familyinits + giveninits + prefixinits + suffixinits + terseinits + useprefix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + prefix + family + + + + + shorthand + label + labelname + labelname + + + year + + + + + + labelyear + year + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + prefix + family + given + + + + + prefix + family + + + given + + + suffix + + + prefix + + + mm + + + + sf,sm,sn,pf,pm,pn,pp + family,given,prefix,suffix + boolean,integer,string,xml + default,transliteration,transcription,translation + + + article + artwork + audio + bibnote + book + bookinbook + booklet + collection + commentary + customa + customb + customc + customd + custome + customf + dataset + inbook + incollection + inproceedings + inreference + image + jurisdiction + legal + legislation + letter + manual + misc + movie + music + mvcollection + mvreference + mvproceedings + mvbook + online + patent + performance + periodical + proceedings + reference + report + review + set + software + standard + suppbook + suppcollection + suppperiodical + thesis + unpublished + video + xdata + + + sortyear + volume + volumes + abstract + addendum + annotation + booksubtitle + booktitle + booktitleaddon + chapter + edition + eid + entrysubtype + eprintclass + eprinttype + eventtitle + eventtitleaddon + gender + howpublished + indexsorttitle + indextitle + isan + isbn + ismn + isrn + issn + issue + issuesubtitle + issuetitle + issuetitleaddon + iswc + journalsubtitle + journaltitle + journaltitleaddon + label + langid + langidopts + library + mainsubtitle + maintitle + maintitleaddon + nameaddon + note + number + origtitle + pagetotal + part + relatedstring + relatedtype + reprinttitle + series + shorthandintro + subtitle + title + titleaddon + usera + userb + userc + userd + usere + userf + venue + version + shorthand + shortjournal + shortseries + shorttitle + sorttitle + sortshorthand + sortkey + presort + institution + lista + listb + listc + listd + liste + listf + location + organization + origlocation + origpublisher + publisher + afterword + annotator + author + bookauthor + commentator + editor + editora + editorb + editorc + foreword + holder + introduction + namea + nameb + namec + translator + shortauthor + shorteditor + sortname + authortype + editoratype + editorbtype + editorctype + editortype + bookpagination + nameatype + namebtype + namectype + pagination + pubstate + type + language + origlanguage + crossref + xref + date + endyear + year + month + day + hour + minute + second + timezone + season + endmonth + endday + endhour + endminute + endsecond + endtimezone + endseason + eventdate + eventendyear + eventyear + eventmonth + eventday + eventhour + eventminute + eventsecond + eventtimezone + eventseason + eventendmonth + eventendday + eventendhour + eventendminute + eventendsecond + eventendtimezone + eventendseason + origdate + origendyear + origyear + origmonth + origday + orighour + origminute + origsecond + origtimezone + origseason + origendmonth + origendday + origendhour + origendminute + origendsecond + origendtimezone + origendseason + urldate + urlendyear + urlyear + urlmonth + urlday + urlhour + urlminute + urlsecond + urltimezone + urlseason + urlendmonth + urlendday + urlendhour + urlendminute + urlendsecond + urlendtimezone + urlendseason + doi + eprint + file + verba + verbb + verbc + url + xdata + ids + entryset + related + keywords + options + relatedoptions + pages + execute + + + abstract + annotation + authortype + bookpagination + crossref + day + doi + eprint + eprintclass + eprinttype + endday + endhour + endminute + endmonth + endseason + endsecond + endtimezone + endyear + entryset + entrysubtype + execute + file + gender + hour + ids + indextitle + indexsorttitle + isan + ismn + iswc + keywords + label + langid + langidopts + library + lista + listb + listc + listd + liste + listf + minute + month + namea + nameb + namec + nameatype + namebtype + namectype + nameaddon + options + origday + origendday + origendhour + origendminute + origendmonth + origendseason + origendsecond + origendtimezone + origendyear + orighour + origminute + origmonth + origseason + origsecond + origtimezone + origyear + origlocation + origpublisher + origtitle + pagination + presort + related + relatedoptions + relatedstring + relatedtype + season + second + shortauthor + shorteditor + shorthand + shorthandintro + shortjournal + shortseries + shorttitle + sortkey + sortname + sortshorthand + sorttitle + sortyear + timezone + url + urlday + urlendday + urlendhour + urlendminute + urlendmonth + urlendsecond + urlendtimezone + urlendyear + urlhour + urlminute + urlmonth + urlsecond + urltimezone + urlyear + usera + userb + userc + userd + usere + userf + verba + verbb + verbc + xdata + xref + year + + + set + entryset + + + article + addendum + annotator + author + commentator + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + eid + issn + issue + issuetitle + issuesubtitle + issuetitleaddon + journalsubtitle + journaltitle + journaltitleaddon + language + note + number + origlanguage + pages + pubstate + series + subtitle + title + titleaddon + translator + version + volume + + + bibnote + note + + + book + author + addendum + afterword + annotator + chapter + commentator + edition + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + eid + foreword + introduction + isbn + language + location + maintitle + maintitleaddon + mainsubtitle + note + number + origlanguage + pages + pagetotal + part + publisher + pubstate + series + subtitle + title + titleaddon + translator + volume + volumes + + + mvbook + addendum + afterword + annotator + author + commentator + edition + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + foreword + introduction + isbn + language + location + note + number + origlanguage + pagetotal + publisher + pubstate + series + subtitle + title + titleaddon + translator + volume + volumes + + + inbook + bookinbook + suppbook + addendum + afterword + annotator + author + booktitle + bookauthor + booksubtitle + booktitleaddon + chapter + commentator + edition + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + eid + foreword + introduction + isbn + language + location + mainsubtitle + maintitle + maintitleaddon + note + number + origlanguage + part + publisher + pages + pubstate + series + subtitle + title + titleaddon + translator + volume + volumes + + + booklet + addendum + author + chapter + editor + editortype + eid + howpublished + language + location + note + pages + pagetotal + pubstate + subtitle + title + titleaddon + type + + + collection + reference + addendum + afterword + annotator + chapter + commentator + edition + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + eid + foreword + introduction + isbn + language + location + mainsubtitle + maintitle + maintitleaddon + note + number + origlanguage + pages + pagetotal + part + publisher + pubstate + series + subtitle + title + titleaddon + translator + volume + volumes + + + mvcollection + mvreference + addendum + afterword + annotator + author + commentator + edition + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + foreword + introduction + isbn + language + location + note + number + origlanguage + publisher + pubstate + subtitle + title + titleaddon + translator + volume + volumes + + + incollection + suppcollection + inreference + addendum + afterword + annotator + author + booksubtitle + booktitle + booktitleaddon + chapter + commentator + edition + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + eid + foreword + introduction + isbn + language + location + mainsubtitle + maintitle + maintitleaddon + note + number + origlanguage + pages + part + publisher + pubstate + series + subtitle + title + titleaddon + translator + volume + volumes + + + dataset + addendum + author + edition + editor + editortype + language + location + note + number + organization + publisher + pubstate + series + subtitle + title + titleaddon + type + version + + + manual + addendum + author + chapter + edition + editor + editortype + eid + isbn + language + location + note + number + organization + pages + pagetotal + publisher + pubstate + series + subtitle + title + titleaddon + type + version + + + misc + software + addendum + author + editor + editortype + howpublished + language + location + note + organization + pubstate + subtitle + title + titleaddon + type + version + + + online + addendum + author + editor + editortype + language + note + organization + pubstate + subtitle + title + titleaddon + version + + + patent + addendum + author + holder + location + note + number + pubstate + subtitle + title + titleaddon + type + version + + + periodical + addendum + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + issn + issue + issuesubtitle + issuetitle + issuetitleaddon + language + note + number + pubstate + season + series + subtitle + title + titleaddon + volume + + + mvproceedings + addendum + editor + editortype + eventday + eventendday + eventendhour + eventendminute + eventendmonth + eventendseason + eventendsecond + eventendtimezone + eventendyear + eventhour + eventminute + eventmonth + eventseason + eventsecond + eventtimezone + eventyear + eventtitle + eventtitleaddon + isbn + language + location + note + number + organization + pagetotal + publisher + pubstate + series + subtitle + title + titleaddon + venue + volumes + + + proceedings + addendum + chapter + editor + editortype + eid + eventday + eventendday + eventendhour + eventendminute + eventendmonth + eventendseason + eventendsecond + eventendtimezone + eventendyear + eventhour + eventminute + eventmonth + eventseason + eventsecond + eventtimezone + eventyear + eventtitle + eventtitleaddon + isbn + language + location + mainsubtitle + maintitle + maintitleaddon + note + number + organization + pages + pagetotal + part + publisher + pubstate + series + subtitle + title + titleaddon + venue + volume + volumes + + + inproceedings + addendum + author + booksubtitle + booktitle + booktitleaddon + chapter + editor + editortype + eid + eventday + eventendday + eventendhour + eventendminute + eventendmonth + eventendseason + eventendsecond + eventendtimezone + eventendyear + eventhour + eventminute + eventmonth + eventseason + eventsecond + eventtimezone + eventyear + eventtitle + eventtitleaddon + isbn + language + location + mainsubtitle + maintitle + maintitleaddon + note + number + organization + pages + part + publisher + pubstate + series + subtitle + title + titleaddon + venue + volume + volumes + + + report + addendum + author + chapter + eid + institution + isrn + language + location + note + number + pages + pagetotal + pubstate + subtitle + title + titleaddon + type + version + + + thesis + addendum + author + chapter + eid + institution + language + location + note + pages + pagetotal + pubstate + subtitle + title + titleaddon + type + + + unpublished + addendum + author + eventday + eventendday + eventendhour + eventendminute + eventendmonth + eventendseason + eventendsecond + eventendtimezone + eventendyear + eventhour + eventminute + eventmonth + eventseason + eventsecond + eventtimezone + eventyear + eventtitle + eventtitleaddon + howpublished + language + location + note + pubstate + subtitle + title + titleaddon + type + venue + + + abstract + addendum + afterword + annotator + author + bookauthor + booksubtitle + booktitle + booktitleaddon + chapter + commentator + editor + editora + editorb + editorc + foreword + holder + institution + introduction + issuesubtitle + issuetitle + issuetitleaddon + journalsubtitle + journaltitle + journaltitleaddon + location + mainsubtitle + maintitle + maintitleaddon + nameaddon + note + organization + origlanguage + origlocation + origpublisher + origtitle + part + publisher + relatedstring + series + shortauthor + shorteditor + shorthand + shortjournal + shortseries + shorttitle + sortname + sortshorthand + sorttitle + subtitle + title + titleaddon + translator + venue + + + article + book + inbook + bookinbook + suppbook + booklet + collection + incollection + suppcollection + manual + misc + mvbook + mvcollection + online + patent + periodical + suppperiodical + proceedings + inproceedings + reference + inreference + report + set + thesis + unpublished + + + date + year + + + + + set + + entryset + + + + article + + author + journaltitle + title + + + + book + mvbook + + author + title + + + + inbook + bookinbook + suppbook + + author + title + booktitle + + + + booklet + + + author + editor + + title + + + + collection + reference + mvcollection + mvreference + + editor + title + + + + incollection + suppcollection + inreference + + author + editor + title + booktitle + + + + dataset + + title + + + + manual + + title + + + + misc + software + + title + + + + online + + title + + url + doi + eprint + + + + + patent + + author + title + number + + + + periodical + + editor + title + + + + proceedings + mvproceedings + + title + + + + inproceedings + + author + title + booktitle + + + + report + + author + title + type + institution + + + + thesis + + author + title + type + institution + + + + unpublished + + author + title + + + + + isbn + + + issn + + + ismn + + + gender + + + + + + + own.bib + + + bellard2005qfa + bellard2005qfa + boileau06 + becher04:_feurig_hacken_mit_firew + green04 + patent:4819234 + + + + + presort + + + labelalpha + + + sortkey + + + sortname + author + editor + translator + sorttitle + title + + + sortyear + year + + + sorttitle + title + + + volume + 0 + + + + + + diff --git a/thesis/bachelor.blg b/thesis/bachelor.blg new file mode 100644 index 0000000..b82032e --- /dev/null +++ b/thesis/bachelor.blg @@ -0,0 +1,15 @@ +[0] Config.pm:311> INFO - This is Biber 2.16 +[0] Config.pm:314> INFO - Logfile is 'bachelor.blg' +[97] biber:340> INFO - === Mon Nov 13, 2023, 10:43:41 +[115] Biber.pm:415> INFO - Reading 'bachelor.bcf' +[198] Biber.pm:952> INFO - Found 5 citekeys in bib section 0 +[213] Biber.pm:4340> INFO - Processing section 0 +[225] Biber.pm:4531> INFO - Looking for bibtex format file 'own.bib' for section 0 +[229] bibtex.pm:1689> INFO - LaTeX decoding ... +[243] bibtex.pm:1494> INFO - Found BibTeX data source 'own.bib' +[317] UCollate.pm:68> INFO - Overriding locale 'en-GB' defaults 'normalization = NFD' with 'normalization = prenormalized' +[317] UCollate.pm:68> INFO - Overriding locale 'en-GB' defaults 'variable = shifted' with 'variable = non-ignorable' +[318] Biber.pm:4168> INFO - Sorting list 'anyt/global//global/global' of type 'entry' with template 'anyt' and locale 'en-GB' +[318] Biber.pm:4174> INFO - No sort tailoring available for locale 'en-GB' +[328] bbl.pm:654> INFO - Writing 'bachelor.bbl' with encoding 'UTF-8' +[332] bbl.pm:757> INFO - Output to bachelor.bbl diff --git a/thesis/bachelor.fdb_latexmk b/thesis/bachelor.fdb_latexmk new file mode 100644 index 0000000..0e2f37c --- /dev/null +++ b/thesis/bachelor.fdb_latexmk @@ -0,0 +1,345 @@ +# Fdb version 3 +["biber bachelor"] 1699868620 "bachelor.bcf" "bachelor.bbl" "bachelor" 1699868645 + "bachelor.bcf" 1699868647 107300 6a98151d58c42e56dc25a294a9aa0e89 "pdflatex" + "own.bib" 1699864795 2186 060e3fcc5089d4a3b48e44e3374bd944 "" + (generated) + "bachelor.bbl" + "bachelor.blg" +["pdflatex"] 1699868637 "bachelor.tex" "bachelor.pdf" "bachelor" 1699868645 + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmmono10-regular.luc" 1699867414 77648 4e7dd2d38b77b69ba450969ae7f3531c "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmmono12-regular.luc" 1699867415 77587 5ed05bd3b8de70927a157b833f0216cd "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmmono8-regular.luc" 1699867414 77255 504a271447ff2938786ee8d6cbbf7edc "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-bold.luc" 1699867409 124213 35b3d99d7206f00356f08e52ff18d04d "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-italic.luc" 1699867415 132135 dd1d63d11c56f4cb050020911d6351ed "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-regular.luc" 1699867408 123142 202d0f2c048b3deaab13b67540be18d9 "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman12-bold.luc" 1699867414 124110 6b193afb0f68b05db7612fa512ea583c "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman12-regular.luc" 1699867414 123481 69b7465b6451e46e78288f4a098f9014 "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman6-regular.luc" 1699867413 124323 2afd23c8c528256bd4255165fb9461b8 "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman7-regular.luc" 1699867414 124198 de3a77dd4552b581f4568d5c733f4b64 "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman8-regular.luc" 1699867413 123949 6be306f06852d441c7a7045fec50f13b "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmromancaps10-regular.luc" 1699867416 116074 4d500f5502307bb2d2c327e989a4c4ff "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans10-bold.luc" 1699867414 123911 13074d6e5a011c1685ae8875debf086d "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans10-regular.luc" 1699867414 123457 90e4b0e3e662caf7e5a34edf185c3091 "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans12-regular.luc" 1699867415 123964 1a4d3c00c97139d8212cc5d0b0b5a896 "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans8-regular.luc" 1699867414 123407 d90876b0ad34e0b1e611ef869b498a36 "" + "/home/studi/.texlive2020/texmf-var/luatex-cache/generic/names/luaotfload-names.luc" 1699867408 122893 cb3868fd4bbfab71545d612e43700618 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1136768653 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm" 1136768653 1528 abec98dbc43e172678c11b3b9031252a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi7.tfm" 1136768653 1528 e2423ae06dc7dee599cceb79d1c9dc32 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr10.tfm" 1136768653 1296 45809c5a464d5f32c8f98ba97c1bb47f "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr7.tfm" 1136768653 1300 53d07721103816e093902637bc167021 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy7.tfm" 1136768653 1120 2b3f9b25605010c69bc328bea6ac000f "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb" 1248133631 32726 0a1aea6fcd6468ee2cf64d891f5c43c8 "" + "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/babel-english/british.ldf" 1496785618 2764 33eb54e29f49ae828edec697cf357f2c "" + "/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf" 1496785618 7008 9ff5fdcc865b01beca2b0fe4a46231d4 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def" 1611697649 117888 66b7eb0f9cd7bd253f76713fb2e2ee4a "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty" 1611697649 37868 ba045e7d3943071ea1a8258e20cd3f09 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/luababel.def" 1611697649 52710 7e1c4d53b41230710fbffb4daccb2668 "" + "/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1576625273 7734 b98cbb34c81f667027c1e3ebdbfce34b "" + "/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.tex" 1585259975 632 940e8aface14758218a4d17bbe8c569b "" + "/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-en-gb.tex" 1554502952 58474 e5706c44eed482e95f780420ef6e36d1 "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1583617216 6501 4011d89d9621e0b0901138815ba5ff29 "" + "/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1576624944 13807 952b0226d4efca026f0e19dd266dcc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1600895880 17859 4409f8f50cd365c68e684407e5350b1b "" + "/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.lua" 1593380077 9447 5e9f52f1871707a5d27dea360afbe4cb "" + "/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1601326656 992 855ff26741653ab54814101ca36e153c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1601326656 43820 1fef971b75380574ab35a0d37fd92608 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1601326656 19324 f4e4c6403dd0f1605fd20ed22fa79dea "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1601326656 6038 ccb406740cc3f03bbfb58ad504fe8c27 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1601326656 6944 e12f8f7a7364ddf66f93ba30fb3a3742 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1601326656 4883 42daaf41e27c3735286e23e48d2d7af9 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1601326656 2544 8c06d2a7f0f469616ac9e13db6d2f842 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1601326656 44195 5e390c414de027626ca5e2df888fa68d "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1601326656 17311 2ef6b2e29e2fc6a2fc8d6d652176e257 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1601326656 21302 788a79944eb22192a4929e46963a3067 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1601326656 9690 01feb7cde25d4293ef36eef45123eb80 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1601326656 33335 dd1fa4814d4e51f18be97d88bf0da60c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1601326656 2965 4c2b1f4e0826925746439038172e5d6f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex" 1601326656 5196 2cc249e0ee7e03da5f5f6589257b1e5b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1601326656 20726 d4c8db1e2e53b72721d29916314a22ea "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1601326656 35249 abd4adf948f960299a4b3d27c5dddf46 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1601326656 21989 fdc867d05d228316de137a9fc5ec3bbe "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1601326656 8893 e851de2175338fdf7c17f3e091d94618 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex" 1601326656 1179 5483d86c1582c569e665c74efab6281f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex" 1601326656 3937 3f208572dd82c71103831da976d74f1a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex" 1601326656 2889 d698e3a959304efa342d47e3bb86da5b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1608933718 11518 738408f795261b70ce8dd47459171309 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1609106292 188275 555994923a0cb0c4aff9710e303272bb "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex" 1601326656 2563 d5b174eb7709fd6bdcc2f70953dbdf8e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1601326656 32995 ac577023e12c0e4bd8aa420b2e852d1a "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex" 1557692582 3063 8c415c68a0f3394e45cfeca0b65f6ee6 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1601326656 521 8e224a7af69b7fee4451d1bf76b46654 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1601326656 13391 84d29568c13bdce4133ab4a214711112 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1601326656 104935 184ed87524e76d4957860df4ce0cd1c3 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1601326656 10165 cec5fa73d49da442e56efc2d605ef154 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1601326656 28178 41c17713108e0795aac6fef3d275fbca "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1601326656 9989 c55967bf45126ff9b061fa2ca0c4694f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1601326656 3865 ac538ab80c5cf82b345016e474786549 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1557692582 3177 27d85c44fbfe09ff3b2cf2879e3ea434 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1601326656 10925 139ac69ce3e9a1892add56d0b818cf97 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1608933718 7854 4176998eeefd8745ac6d2d4bd9c98451 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1601326656 3379 781797a101f647bab82741a99944a229 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1601326656 92405 f515f31275db273f97b9d8f52e1b0736 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1601326656 37376 11cd75aac3da1c1b152b2848f30adc14 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1601326656 8471 c2883569d03f69e8e1cabfef4999cfd7 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1601326656 21201 08d231a2386e2b61d64641c50dc15abd "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1601326656 16121 346f9013d34804439f7436ff6786cef7 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1606168878 43260 c5ced91ac9ecf66ab0674d57bda14c1f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex" 1609106292 465 311958b39a263956b78fd69c4bc8a85c "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1601326656 926 2963ea0dcf6cc6c0a770b69ec46a477b "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1601326656 5546 f3f24d7898386cb7daac70bdd2c4d6dc "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.def" 1606168878 13244 6674e4de0678d77c2d7465acc4ea20d7 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1601326656 60544 7aef020a49f066dc86a26e7719af2a98 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1601326656 1896 b8e0ca0ac371d74c0ca05583f6313c91 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1601326656 7778 53c8b5623d80238f6a20aa1df1868e63 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1606168878 23997 a4bed72405fa644418bea7eac2887006 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1606168878 36938 2b5b0039ae51cc081ebb25d84b8a3408 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1601326656 37431 9abe862035de1b29c7a677f3205e3d9f "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1601326656 4494 af17fb7efeafe423710479858e42fa7e "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1601326656 7251 fb18c67117e09c64de82267e12cd8aa4 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1601326656 28579 1cdb9cf41947e1e5889d97a41f9bb448 "" + "/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1606168878 6860 2503857fc7e280acd60acdfa6c8c90c4 "" + "/usr/share/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty" 1575152242 21514 b7557edcee22835ef6b03ede1802dad4 "" + "/usr/share/texlive/texmf-dist/tex/generic/unicode-data/CaseFolding.txt" 1584044743 82810 5f9103a43f1de6931ccd535dc2d04777 "" + "/usr/share/texlive/texmf-dist/tex/generic/unicode-data/PropList.txt" 1584044743 126063 09a6b8a9bf45d76e1051f087476c584a "" + "/usr/share/texlive/texmf-dist/tex/generic/unicode-data/ScriptExtensions.txt" 1584044743 21036 0498414f4b3ea003decdfbdc05d5eee4 "" + "/usr/share/texlive/texmf-dist/tex/generic/unicode-data/Scripts.txt" 1584044743 175811 5f82197ad754fd20cee117a97732d384 "" + "/usr/share/texlive/texmf-dist/tex/generic/unicode-data/SpecialCasing.txt" 1584044743 16830 681d4e1ebc39c3362fbd6c293070a8ea "" + "/usr/share/texlive/texmf-dist/tex/generic/unicode-data/UnicodeData.txt" 1584044743 1851767 85879f1976cc8eb739ee5585a93938e2 "" + "/usr/share/texlive/texmf-dist/tex/generic/unicode-data/WordBreakProperty.txt" 1603745856 103240 40f00b28bda4ea42f0d09ea1cf5a646a "" + "/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex" 1605910342 19231 3cbf682090baecad8e17a66b7a271ed1 "" + "/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex" 1605910342 7677 cf3e6aa6a8d444f55327f61df80bfa0c "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1523134290 4161 7f6eb9092061a11f87d08ed13515b48d "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1523134290 2432 8ff93b1137020e8f21930562a874ae66 "" + "/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1609451599 2973 00085839f5881178c538db5970d3c38e "" + "/usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1610149055 2596 b3a02e33035865e9f0457e064d436fb8 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty" 1601675358 4947 8cb7717f0cc771eca0fda15160c7fee9 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty" 1580683321 5159 892429808d9e0e2b3548aaefd9a06ed0 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ltluatex.lua" 1601675358 19071 5eca6644e86be740ddc21c18c9b79330 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd" 1580683321 2431 b6cead9f069ed55f4fba0c637aa047b6 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx" 1566680006 1731 ebd75bda3dd71a7cbd30fde6e3bb6391 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx" 1609451401 25680 409c3f3d570418bc545e8065bebd0688 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.cfg" 1342308459 69 249fa6df04d948e51b6d5c67bea30c42 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.def" 1609451401 91946 e09bee3cd84fdc4250d6c8ee794f6a70 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.sty" 1609451401 506356 ad896deba0d157daf8e7a259dbff05c8 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty" 1609451401 8433 72f8188742e7214b7068f345cd0287ac "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-compat.def" 1609451401 13379 ae6b07c49ed3315284c100c6d2572fab "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-dm.def" 1609451401 32359 780383f3a2aaa99ffa09ced7a3363e81 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-unicode.def" 1609451401 3786 1f89d14780f0ad89ab94652b37f4e9b8 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx" 1510525977 4261 a05ff2d7f15400c462523859a171f7b4 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/british.lbx" 1597957911 2893 0f4ffdf8b9608cc904401c5aa668fe73 "" + "/usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/english.lbx" 1609451401 38558 7b6b5c4f86b076362a57cfdb9255a6c6 "" + "/usr/share/texlive/texmf-dist/tex/latex/bookmark/bkm-pdftex.def" 1604871679 8609 8ac7db65d9617618cf703bd16c1bd0b8 "" + "/usr/share/texlive/texmf-dist/tex/latex/bookmark/bookmark.sty" 1604871679 18237 5cbdfe9ef383a557f780a0a1f45cdb1c "" + "/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty" 1579038678 6078 f1cb470c9199e7110a27851508ed7a5c "" + "/usr/share/texlive/texmf-dist/tex/latex/caption/caption-koma.sto" 1603745920 6559 a1f99be1697762b19f714b4553fcaefa "" + "/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty" 1603745920 51746 e89c4da670ba533e6ab38e045ce6d1d9 "" + "/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty" 1603745920 67929 d50ae850e1d9604065e8337a75a41029 "" + "/usr/share/texlive/texmf-dist/tex/latex/caption/subcaption.sty" 1603745920 6133 46bea384e36e9b74bd53a238fc2d0654 "" + "/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.cfg" 1429144587 7068 06f8d141725d114847527a66439066b6 "" + "/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.def" 1609884275 20781 3b6db3c90061bfd8febbc13564777847 "" + "/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.sty" 1609884275 62512 52e9defd5096aff5aaf6a48571b466f7 "" + "/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/share/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty" 1602711807 11772 8d0db0794e6aeb45348f60bbe3a3e093 "" + "/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1601931149 46845 3b58f70c6e861a13d927bff09d35ecbc "" + "/usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty" 1274111957 27261 5ae6156674330dc345adb79b6e5d8966 "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1609797564 17084 8c1abc8567028945d60a2f6d71e86091 "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1611267390 43232 77215847fb982a414a0d843125e271d4 "" + "/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty" 1582325645 151809 9b29a813bdecad31db825cd830187121 "" + "/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.cfg" 1532898934 549 c4adac819276241fea8eb79c5ab7b99e "" + "/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.lua" 1582325645 3021 d32bd2298bedcca160fe737883f3615e "" + "/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.sty" 1582325645 1655 a1ec6f2670a260de25415d37e9c60e97 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/luatex.def" 1601931164 19052 d9eaaf91d2a0b7bc9d7f373ebd8346f3 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1601675358 18272 a8c6a275b34ab6717ceeb8fa04b104e2 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1601675358 7919 20fdfdd783821971c55bc8ee918cbe63 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1580683321 2590 e3b24ff953e5b58d924f163d25380312 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/lscape.sty" 1601675358 1757 1eb057df64f13cee0efe9d12f933a1e9 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1580683321 3976 d7fa7d81d2870d509d25b17d0245e735 "" + "/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hluatex.def" 1589664343 51510 4c6a1d1d230f9dc04992fe072da4f6ec "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1589664343 236775 8ab18a05f69e6caef423fa59cb0af03b "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1579642962 13244 0070bcab7b5a88187847128d22faf4d8 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1589664343 14134 c11767c54bd7ecab56984ee4e4e3158c "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1589664343 122447 8dcff5c67ff7f0649f41dc4abc99887f "" + "/usr/share/texlive/texmf-dist/tex/latex/hyphenat/hyphenat.sty" 1252025529 5798 0437b031e663035b68539cf7ac7c8eeb "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/listings.hak" 1601242066 5141 8132705b3913a24bbbabf15c005c32c4 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/lscape.hak" 1601242066 3322 ed874f0593a41229a3557ccba328b135 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrbase.sty" 1601242066 95060 8380c93cbe27347269875ef45d11e14b "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrhack.sty" 1601242066 7345 0711d4ef0403e0d957cdcc46f1287324 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrkbase.sty" 1601242066 21853 9e6272db95e3fde57b1effa42b4ce855 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty" 1601242066 9923 31d3db16e68a7aaf1a332070e86b06e8 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile.sty" 1601242066 2962 f87bece18d386f62887914a9e1742548 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlogo.sty" 1601242066 1954 c76cd0d2e16cfbd0b8ed1fac0f88e87e "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrreprt.cls" 1601242066 262672 5d0d9c834ae416032731f9a664535e99 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrsize11pt.clo" 1601242066 6383 4147a8128f986702d8952d5da6421109 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/setspace.hak" 1601242066 4054 4b8a915b1554e80cabab15e142f001a6 "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/tocbasic.sty" 1601242066 106047 3c92bee4025534d1b56f29872b3fb03b "" + "/usr/share/texlive/texmf-dist/tex/latex/koma-script/typearea.sty" 1601242066 55995 23fad029cff0dc77d57f6d5c6722cff1 "" + "/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1602274869 22521 d2fceb764a442a2001d257ef11db7618 "" + "/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-luatex.def" 1611959857 27468 d2adaae2ce051064051a1f8a94ae09e5 "" + "/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.lua" 1610315378 11444 857eb214ac75a51fe49d209ccae89937 "" + "/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty" 1610315378 6209 031757bc8d0350c53dd99ad8ae4875eb "" + "/usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty" 1603832142 4615 0436b95d48df75eb5f264ca6898802f6 "" + "/usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse-generic.tex" 1589555814 80141 edbf9289c99ff37db17116af7a3a423f "" + "/usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty" 1603832142 5905 c6eb253894f4e808af476e034b49df36 "" + "/usr/share/texlive/texmf-dist/tex/latex/lastpage/lastpage.sty" 1427756658 9922 eb7d00b99f0f5207f71a5cdcbafceac1 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/lualatexquotejobname.lua" 1308175312 1031 977f79ff10b802fc398926378bec58e9 "" + "/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1575499565 5766 13a9e8766c47f30327caf893ece86ac8 "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg" 1585170648 1830 e31effa752c61538383451ae21332364 "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty" 1585170648 80964 64e57373f36316e4a09b517cbf1aba2e "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty" 1585170648 204271 bae5b2d457283e99567249c1990510be "" + "/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty" 1585170648 77022 ee25ce086f4a79d8cf73bac6f94c02a5 "" + "/usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.def" 1284153563 1620 fb1c32b818f2058eca187e5c41dfae77 "" + "/usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.sty" 1284153563 6187 b27afc771af565d3a9ff1ca7d16d0d46 "" + "/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-luatex.def" 1607465040 40121 a2bc775a1162e79d741eed4cf5459f28 "" + "/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg" 1607465040 24929 baec9b115829e21e1ba4dfcaf6260d24 "" + "/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.lua" 1607465040 5587 03982a6f732888e1abb70c3263bd1e6c "" + "/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty" 1607465040 71807 0724aff58b422fcce3421aebcd5fc631 "" + "/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg" 1607465040 9832 c0155a843dbf27d8b04c41bed0a4d454 "" + "/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg" 1607465040 22870 85ef48580eb35bcb3beca9130657ae3b "" + "/usr/share/texlive/texmf-dist/tex/latex/pdflscape/pdflscape.sty" 1575674318 6575 25396d208d8f2b9395d06ef315d5886c "" + "/usr/share/texlive/texmf-dist/tex/latex/pdfpages/pdfpages.sty" 1610315791 54435 c13c1f26ce4ca4b9661298bbc274fe63 "" + "/usr/share/texlive/texmf-dist/tex/latex/pdfpages/ppluatex.def" 1610315791 5719 fa0778eef34b488a9197eda87d0e8040 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1601326656 1090 bae35ef70b3168089ef166db3e66f5b2 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1601326656 410 615550c46f918fcbee37641b02a862d9 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1601326656 21013 f4ff83d25bb56552493b030f27c075ae "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1601326656 989 c49c8ae06d96f8b15869da7428047b1e "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1601326656 339 c2e180022e3afdb99c7d0ea5ce469b7d "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1601326656 306 c56a323ca5bf9242f54474ced10fca71 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1601326656 443 8c872229db56122037e86bcda49e14f3 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1601326656 348 ee405e64380c11319f0e249fed57e6c5 "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1601326656 274 5ae372b7df79135d240456a1c6f2cf9a "" + "/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1601326656 325 f9f16d12354225b7dd52a3321f085955 "" + "/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1575674187 9715 b051d5b493d9fe5f4bc251462d039e5f "" + "/usr/share/texlive/texmf-dist/tex/latex/setspace/setspace.sty" 1324344192 22913 a27d7908fc6f0385466454a966a316eb "" + "/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg" 1579124948 4745 793d4d5a808c37a7085f620706b56fe1 "" + "/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty" 1582668387 273434 c3d90844d64bf82fded1b064359b4e14 "" + "/usr/share/texlive/texmf-dist/tex/latex/todonotes/todonotes.sty" 1598215170 20203 b53be911c83ae3d11ab3d092d6120a35 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty" 1601675358 12675 9a7bbb9e485cd81cdcc1d56212b088ff "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty" 1580683321 10216 5efd55f2010055e7b7875afd6a75be82 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/varioref.sty" 1601675358 44067 30ef5af64ca3b5b94c1e5e7e6c141383 "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty" 1580683321 4546 3e6071704acf4f66392376b7b66ae02c "" + "/usr/share/texlive/texmf-dist/tex/latex/translator/translator-basic-dictionary-English.dict" 1596662134 3535 7dc96051305a7e943219126c49c44cd6 "" + "/usr/share/texlive/texmf-dist/tex/latex/translator/translator.sty" 1596662134 8765 3368c4a5a4b5466261cafb836195e916 "" + "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty" 1463002160 55589 34128738f682d033422ca125f82e5d62 "" + "/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty" 1605910342 4902 efb3d66683a2da2a232f71e3a571a899 "" + "/usr/share/texlive/texmf-dist/tex/latex/xpatch/xpatch.sty" 1585258158 8314 7803f78066c4f9d008405191a4b43073 "" + "/usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua" 1609451617 131468 fd1313508308a0eb9829063570435aca "" + "/usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-basic.lua" 1609451617 2717 538b28c781d9675abf8ea106134f6a32 "" + "/usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-compat.lua" 1367794330 603 398583cb619d20952d67edcedae41608 "" + "/usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua" 1609451617 110513 18927093f376db6f759633b1df9ca47d "" + "/usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-extended.lua" 1609451617 4858 1d0213aca5cd664173ccbc672f7cfe2f "" + "/usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs.lua" 1609451617 3779 b5f9573f0df8b6653bae489078a3417b "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/fontloader-2021-01-07.lua" 1610835910 863258 ef54bfa34416e2c85fa48d3195c67fd2 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/fontloader-basics-gen.lua" 1599167189 12745 4bc43036e9796fccb0b8869f4b05bf2e "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua" 1610835910 32597 8e427ec79ced91d9fc6fbcece159d042 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-case.lua" 1609451516 6809 6c20d5dc2b2b4227f873e7df0fd25316 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua" 1610835910 15954 7c201914c79310d9e79e75dfc7ee982b "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua" 1610835910 31151 589ca99522479a0929d6824bafa36f63 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua" 1610835910 134863 4a0f9f3b500df0d8a8234a0954065e46 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua" 1610835910 1004 5506419bc583d450f252542b1105d6ce "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-fallback.lua" 1610835910 4047 a3c8c048b14a304d3352871014ef1343 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua" 1610835910 29002 33fdd06674606d043599dc4ea9b2a56b "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-define.lua" 1610835910 13468 1c9a663bb7bfa650b93dcf01d5450675 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-plug.lua" 1610835910 41599 8fdc1ba513a6026546b883259e559c7e "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua" 1610835910 19547 e3b832a9efc91c977044383640835069 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua" 1610835910 18645 1a518a55f6663ce13866416a5b94d6a4 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua" 1610835910 8840 d169564522ac7194e7410d8263cd1b31 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua" 1610835910 11323 809e4afac4e070b619512461a6fedd90 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua" 1609451516 275 b19c9cc34cf1d676c39f872cfb41aef6 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua" 1610835910 15068 db7b6c7791b4b909d12234620ff7973d "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua" 1610835910 12224 26fed1a76150718e05c8c56b1983ebdd "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua" 1610835910 30999 dba42cb2f6bbfa13b9a56d0e4a2b2f44 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua" 1610835910 10984 b387d9435738f7ce8cf1e6af86b565a6 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-scripts.lua" 1610835910 2506 2b924be852e17191e651faf5a2097e12 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua" 1610835910 6317 de8b416497205d269b31674daef0f48b "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-suppress.lua" 1610835910 2582 b07873bfeb7764f9b5b440cd6b170f63 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-szss.lua" 1610835910 6259 2413a2be98181fe77f7e110369194769 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-tounicode.lua" 1610835910 7528 e07e112222777070250fbc980b2e6b85 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua" 1610835910 7589 1d7fd6ab63640cb6c8e2091ac5a57915 "" + "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload.lua" 1610835910 13788 c3df7754a82557bc3e50d0714ad8a67c "" + "/usr/share/texmf/fonts/opentype/public/lm/lmmono10-regular.otf" 1254938640 64684 15a2082c8e31f411875a86ea2d29a0ee "" + "/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf" 1254938640 111240 0af0b64d6d3df41bead3f9de314afbd4 "" + "/usr/share/texmf/fonts/opentype/public/lm/lmroman10-italic.otf" 1254938640 118828 4d461c73423fe2666dad2ff0dfc3ca68 "" + "/usr/share/texmf/fonts/opentype/public/lm/lmroman10-regular.otf" 1254938640 111536 ae9d1b331000d544f47e5223081b7b54 "" + "/usr/share/texmf/fonts/opentype/public/lm/lmroman12-bold.otf" 1254938640 110496 b9c8767d4cc3bf3f4b21f676bf89aa78 "" + "/usr/share/texmf/fonts/opentype/public/lm/lmroman12-regular.otf" 1254938640 110400 d844cffffa1af59f9d2bb1bfdb6f1a2c "" + "/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-regular.otf" 1254938640 108740 82741d58d9334b5242a3acb1d982bd05 "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1699867299 165012 f177baa1c39a3ebd62c3096a43521a0d "" + "/var/lib/texmf/tex/generic/config/language.dat" 1699867299 3187 d50e945519bf2aba651d4d8448fa6d88 "" + "/var/lib/texmf/web2c/luahbtex/lualatex.fmt" 1699867303 3255911 da0559e0dd2073e4dab20770160db1d4 "" + "bachelor.aux" 1699868647 9276 af8f8fb5f1b6631bc1b3848d288eac59 "pdflatex" + "bachelor.bbl" 1699868624 6593 046c6f2bbbd38f93b729c568741e6e5e "biber bachelor" + "bachelor.lof" 1699868647 627 1f3a7ec4688f53d915ba92ecc5ab5f41 "pdflatex" + "bachelor.lot" 1699868647 524 fb1862d92ca8f940b4247154fcde6f1f "pdflatex" + "bachelor.out" 1699868645 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex" + "bachelor.run.xml" 1699868647 2398 eee79bf634b8c3a875d33d6fa4ad6c8b "pdflatex" + "bachelor.tdo" 1699868647 695 67a8e79e074f51c33fd5030295c08322 "pdflatex" + "bachelor.tex" 1699865741 2216 e37cbc38f6db56e4b42cf1c9cb76a6c5 "" + "bachelor.toc" 1699868647 1339 f679a5330be1bd1104e6babff01f143c "pdflatex" + "content/00_title.tex" 1699868610 923 0a1915c0d821b25b54eb96d7dbccd77a "" + "content/01_disclaimer.tex" 1699868379 384 38ad402c58382ac2a3a0ae56a794069c "" + "content/02_abstract.tex" 1699864795 432 12c340b18f04f495cfe9809bb37779e0 "" + "content/10_introduction.aux" 1699868646 6199 24be7d85599c1ac334b2d505d184a788 "pdflatex" + "content/10_introduction.tex" 1699864795 2940 1cafeb51f5b33118d995ec774c8897b1 "" + "content/20_state.aux" 1699868646 4481 48bbddb3d2ac8fd83ca3ba5e1677bd10 "pdflatex" + "content/20_state.tex" 1699864795 1666 250100c8b8c16bbab3ac8161d94ccba7 "" + "content/30_design.aux" 1699868647 4456 736d414654cd2230963fd056e7af095d "pdflatex" + "content/30_design.tex" 1699864795 1141 fb46754afb83b6b418ead2b87ca6dbf0 "" + "content/40_implementation.aux" 1699868647 4496 37d84b1123b2c679c14ae9633155decd "pdflatex" + "content/40_implementation.tex" 1699864795 1416 6514af18bfd2b5c8051fe136701e2e14 "" + "content/50_evaluation.aux" 1699868647 4477 edff479064ed372da6b8e0ca368f3833 "pdflatex" + "content/50_evaluation.tex" 1699864795 691 7410d8e95486bb6d26ac72f5a061b2a6 "" + "content/60_futurework.aux" 1699868647 4484 5170460d49df9b8c8ed811331026efeb "pdflatex" + "content/60_futurework.tex" 1699864795 172 4440cc43f61879c7be17bafb1f2e2e98 "" + "content/70_conclusion.aux" 1699868647 4505 ed3ba672293408c3e16e7a3b5ad7eca8 "pdflatex" + "content/70_conclusion.tex" 1699864795 1022 d2b31af45eb02e87242ae22aa9607c18 "" + "images/bachelor-aufgabe.pdf" 1699865575 33179 c1dccd2f5900d6647ce1db90475a60af "" + "images/squirrel.jpg" 1699864795 46491 deed9af86d29ec836ebc56dfbbb355ab "" + "preamble/color.tex" 1699864795 115 2a5d876b3b3e4c14519ae53c000ab6d4 "" + "preamble/newcommands.tex" 1699864795 216 38f94323ee10ec7d98cc8c7ab6f70357 "" + "preamble/packages.tex" 1699864795 1799 40f81f7a291415e18bb17ff488f4b454 "" + "preamble/style.tex" 1699864795 4191 a0d2121d88fdbbb6f726a2a880171b84 "" + (generated) + "content/40_implementation.aux" + "bachelor.run.xml" + "content/60_futurework.aux" + "content/70_conclusion.aux" + "bachelor.out" + "bachelor.bcf" + "bachelor.tdo" + "bachelor.log" + "content/20_state.aux" + "content/30_design.aux" + "bachelor.aux" + "bachelor.pdf" + "bachelor.toc" + "bachelor.lot" + "content/50_evaluation.aux" + "content/10_introduction.aux" + "bachelor.lof" diff --git a/thesis/bachelor.fls b/thesis/bachelor.fls new file mode 100644 index 0000000..59f5ce8 --- /dev/null +++ b/thesis/bachelor.fls @@ -0,0 +1,657 @@ +PWD /mnt/latex-template +INPUT /var/lib/texmf/web2c/luahbtex/lualatex.fmt +INPUT ./bachelor.tex +OUTPUT bachelor.log +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/lualatexquotejobname.lua +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ltluatex.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-main.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-init.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-basic.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-compat.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-extended.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-log.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/fontloader-basics-gen.lua +OUTPUT /home/studi/.texlive2020/texmf-var/m_t_x_t_e_s_t.tmp +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-parsers.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-configuration.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-status.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/fontloader-2021-01-07.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-fallback.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-multiscript.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-scripts.lua +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/ScriptExtensions.txt +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/Scripts.txt +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-loaders.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-database.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-unicode.lua +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/CaseFolding.txt +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/UnicodeData.txt +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/UnicodeData.txt +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/PropList.txt +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/WordBreakProperty.txt +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/SpecialCasing.txt +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-colors.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-resolvers.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-features.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-define.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-harf-plug.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-letterspace.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-embolden.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-notdef.lua +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/UnicodeData.txt +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/PropList.txt +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-suppress.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-szss.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-auxiliary.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-tounicode.lua +INPUT /usr/share/texlive/texmf-dist/tex/luatex/luaotfload/luaotfload-case.lua +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.lua +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrreprt.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrreprt.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrreprt.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrkbase.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrkbase.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrkbase.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrbase.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrbase.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrbase.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlogo.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlogo.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlogo.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/tocbasic.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/tocbasic.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/tocbasic.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrsize11pt.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrsize11pt.clo +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/names/luaotfload-names.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-regular.luc +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/typearea.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/typearea.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/typearea.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/luababel.def +INPUT /var/lib/texmf/tex/generic/config/language.dat +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/luababel.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/british.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/british.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-en-gb.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse-generic.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.lua +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.cfg +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-bold.luc +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.lua +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hluatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hluatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT ./preamble/packages.tex +INPUT ./preamble/packages.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-dm.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-dm.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-unicode.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-unicode.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/unicode-data/UnicodeData.txt +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-compat.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-compat.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/varioref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/varioref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/varioref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption-koma.sto +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/caption-koma.sto +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/subcaption.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/subcaption.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/caption/subcaption.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.lua +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/translator/translator.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/translator/translator.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/translator/translator.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdfpages/pdfpages.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdfpages/pdfpages.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdfpages/pdfpages.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdfpages/ppluatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdfpages/ppluatex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyphenat/hyphenat.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyphenat/hyphenat.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyphenat/hyphenat.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/todonotes/todonotes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/todonotes/todonotes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/todonotes/todonotes.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshadows.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +INPUT /usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code.tex +OUTPUT bachelor.pdf +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/setspace/setspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/setspace/setspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/setspace/setspace.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/lastpage/lastpage.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/lastpage/lastpage.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/lastpage/lastpage.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrhack.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrhack.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/scrhack.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xpatch/xpatch.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xpatch/xpatch.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/xpatch/xpatch.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/listings.hak +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/listings.hak +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/setspace.hak +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/setspace.hak +INPUT ./preamble/color.tex +INPUT ./preamble/color.tex +INPUT ./preamble/style.tex +INPUT ./preamble/style.tex +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +INPUT ./preamble/newcommands.tex +INPUT ./preamble/newcommands.tex +INPUT ./bachelor.aux +INPUT ./bachelor.aux +INPUT ./content/10_introduction.aux +INPUT ./content/10_introduction.aux +INPUT ./content/20_state.aux +INPUT ./content/20_state.aux +INPUT ./content/30_design.aux +INPUT ./content/30_design.aux +INPUT ./content/40_implementation.aux +INPUT ./content/40_implementation.aux +INPUT ./content/50_evaluation.aux +INPUT ./content/50_evaluation.aux +INPUT ./content/60_futurework.aux +INPUT ./content/60_futurework.aux +INPUT ./content/70_conclusion.aux +INPUT ./content/70_conclusion.aux +OUTPUT bachelor.aux +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT ./bachelor.out +INPUT ./bachelor.out +INPUT ./bachelor.out +INPUT ./bachelor.out +INPUT ./bachelor.out +OUTPUT bachelor.out +INPUT /usr/share/texlive/texmf-dist/tex/latex/bookmark/bookmark.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/bookmark/bookmark.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/bookmark/bookmark.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/bookmark/bkm-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/bookmark/bkm-pdftex.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/british.lbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/british.lbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/english.lbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/english.lbx +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty +OUTPUT bachelor.bcf +INPUT ./bachelor.bbl +INPUT ./bachelor.bbl +INPUT ./bachelor.bbl +INPUT ./bachelor.bbl +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/translator/translator-basic-dictionary-English.dict +INPUT /usr/share/texlive/texmf-dist/tex/latex/translator/translator-basic-dictionary-English.dict +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdflscape/pdflscape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdflscape/pdflscape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/pdflscape/pdflscape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/lscape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/lscape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/lscape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/lscape.hak +INPUT /usr/share/texlive/texmf-dist/tex/latex/koma-script/lscape.hak +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman8-regular.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman6-regular.luc +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr10.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg +INPUT /usr/share/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans10-regular.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans8-regular.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmmono10-regular.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmmono8-regular.luc +INPUT ./content/00_title.tex +INPUT ./content/00_title.tex +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman12-bold.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans10-bold.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman12-regular.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman7-regular.luc +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi7.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy7.tfm +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmsans12-regular.luc +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmmono12-regular.luc +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr10.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr7.tfm +INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./images/bachelor-aufgabe.pdf +INPUT ./content/01_disclaimer.tex +INPUT ./content/01_disclaimer.tex +INPUT ./content/02_abstract.tex +INPUT ./content/02_abstract.tex +INPUT ./bachelor.toc +INPUT ./bachelor.toc +OUTPUT bachelor.toc +INPUT ./bachelor.tdo +INPUT ./bachelor.tdo +OUTPUT bachelor.tdo +INPUT ./bachelor.lof +INPUT ./bachelor.lof +OUTPUT bachelor.lof +INPUT ./bachelor.lot +INPUT ./bachelor.lot +OUTPUT bachelor.lot +OUTPUT content/10_introduction.aux +INPUT ./content/10_introduction.tex +INPUT ./content/10_introduction.tex +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmroman10-italic.luc +INPUT ./images/squirrel.jpg +INPUT ./images/squirrel.jpg +INPUT ./images/squirrel.jpg +INPUT /home/studi/.texlive2020/texmf-var/luatex-cache/generic/fonts/otl/lmromancaps10-regular.luc +OUTPUT content/20_state.aux +INPUT ./content/20_state.tex +INPUT ./content/20_state.tex +OUTPUT content/30_design.aux +INPUT ./content/30_design.tex +INPUT ./content/30_design.tex +OUTPUT content/40_implementation.aux +INPUT ./content/40_implementation.tex +INPUT ./content/40_implementation.tex +OUTPUT content/50_evaluation.aux +INPUT ./content/50_evaluation.tex +INPUT ./content/50_evaluation.tex +OUTPUT content/60_futurework.aux +INPUT ./content/60_futurework.tex +INPUT ./content/60_futurework.tex +OUTPUT content/70_conclusion.aux +INPUT ./content/70_conclusion.tex +INPUT ./content/70_conclusion.tex +INPUT ./bachelor.aux +INPUT ./content/10_introduction.aux +INPUT ./content/10_introduction.aux +INPUT ./content/20_state.aux +INPUT ./content/20_state.aux +INPUT ./content/30_design.aux +INPUT ./content/30_design.aux +INPUT ./content/40_implementation.aux +INPUT ./content/40_implementation.aux +INPUT ./content/50_evaluation.aux +INPUT ./content/50_evaluation.aux +INPUT ./content/60_futurework.aux +INPUT ./content/60_futurework.aux +INPUT ./content/70_conclusion.aux +INPUT ./content/70_conclusion.aux +INPUT ./bachelor.out +INPUT ./bachelor.run.xml +OUTPUT bachelor.run.xml +INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb diff --git a/thesis/bachelor.lof b/thesis/bachelor.lof new file mode 100644 index 0000000..62145c3 --- /dev/null +++ b/thesis/bachelor.lof @@ -0,0 +1,16 @@ +\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax +\babel@toc {british}{} +\babel@toc {british}{} +\babel@toc {british}{} +\babel@toc {british}{} +\addvspace {10\p@ } +\contentsline {figure}{\numberline {1.1}{\ignorespaces Short description}}{2}{figure.caption.11}% +\contentsline {figure}{\numberline {1.2}{\ignorespaces A mindblowing figure\relax }}{2}{figure.caption.13}% +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file diff --git a/thesis/bachelor.log b/thesis/bachelor.log new file mode 100644 index 0000000..e13f06f --- /dev/null +++ b/thesis/bachelor.log @@ -0,0 +1,1878 @@ +This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/Debian) (format=lualatex 2023.11.13) 13 NOV 2023 10:43 + restricted system commands enabled. +**bachelor.tex +(./bachelor.tex +LaTeX2e <2020-10-01> patch level 4 +Lua module: luaotfload 2021-01-08 3.17 Lua based OpenType font support +Lua module: lualibs 2020-12-30 2.73 ConTeXt Lua standard libraries. +Lua module: lualibs-extended 2020-12-30 2.73 ConTeXt Lua libraries -- extended c +ollection. +luaotfload | conf : Root cache directory is "/home/studi/.texlive2020/texmf-var/ +luatex-cache/generic/names". +luaotfload | init : Loading fontloader "fontloader-2021-01-07.lua" from kpse-res +olved path "/usr/share/texlive/texmf-dist/tex/luatex/luaotfload/fontloader-2021- +01-07.lua". +Lua-only attribute luaotfload@noligature = 1 +Lua-only attribute luaotfload@syllabe = 2 +luaotfload | init : Context OpenType loader version 0x1.8e76c8b439581p+1 +Inserting `luaotfload.node_processor' at position 1 in `pre_linebreak_filter'. +Inserting `luaotfload.node_processor' at position 1 in `hpack_filter'. +Inserting `luaotfload.glyph_stream' at position 1 in `glyph_stream_provider'. +Inserting `luaotfload.define_font' at position 1 in `define_font'. +Lua-only attribute luaotfload_color_attribute = 3 +luaotfload | conf : Root cache directory is "/home/studi/.texlive2020/texmf-var/ +luatex-cache/generic/names". +Inserting `luaotfload.harf.strip_prefix' at position 1 in `find_opentype_file'. +Inserting `luaotfload.harf.strip_prefix' at position 1 in `find_truetype_file'. +Inserting `luaotfload.harf.finalize_vlist' at position 1 in `post_linebreak_filt +er'. +Inserting `luaotfload.harf.finalize_hlist' at position 2 in `hpack_filter'. +Inserting `luaotfload.cleanup_files' at position 1 in `wrapup_run'. +Inserting `luaotfload.harf.finalize_unicode' at position 1 in `finish_pdffile'. +Inserting `luaotfload.glyphinfo' at position 1 in `glyph_info'. +Inserting `luaotfload.aux.set_sscale_dimens' at position 1 in `luaotfload.patch_ +font'. +Inserting `luaotfload.aux.set_font_index' at position 2 in `luaotfload.patch_fon +t'. +Inserting `luaotfload.aux.patch_cambria_domh' at position 3 in `luaotfload.patch +_font'. +Inserting `luaotfload.aux.fixup_fontdata' at position 1 in `luaotfload.patch_fon +t_unsafe'. +Inserting `luaotfload.aux.set_capheight' at position 4 in `luaotfload.patch_font +'. +Inserting `luaotfload.aux.set_xheight' at position 5 in `luaotfload.patch_font'. +Inserting `luaotfload.rewrite_fontname' at position 6 in `luaotfload.patch_font' +. L3 programming layer <2021-01-09> xparse <2020-03-03> +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrreprt.cls +Document Class: scrreprt 2020/09/21 v3.32 KOMA-Script document class (report) +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrkbase.sty +Package: scrkbase 2020/09/21 v3.32 KOMA-Script package (KOMA-Script-dependent ba +sics and keyval usage) + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrbase.sty +Package: scrbase 2020/09/21 v3.32 KOMA-Script package (KOMA-Script-independent b +asics and keyval usage) + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile.sty +Package: scrlfile 2020/09/21 v3.32 KOMA-Script package (file load hooks) + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +Package: scrlfile-hook 2020/09/21 v3.32 KOMA-Script package (using LaTeX hooks) + +LaTeX3 Info: Defining command \BeforeFile with sig. 'm' on line 61. + + +LaTeX3 Info: Defining command \AfterFile with sig. 'm' on line 65. + + +LaTeX3 Info: Defining command \BeforeClass with sig. 'm' on line 69. + + +LaTeX3 Info: Defining command \BeforePackage with sig. 'm' on line 73. + + +LaTeX3 Info: Defining command \AfterAtEndOfClass with sig. 'smo+m' on line 83. + + +LaTeX3 Info: Defining command \AfterAtEndOfPackage with sig. 'smo+m' on line +(LaTeX3) 93. + + +LaTeX3 Info: Defining command \scrlfile@AfterClass with sig. 'smo+m' on line +(LaTeX3) 173. + + +LaTeX3 Info: Defining command \AfterClass with sig. '' on line 174. + + +LaTeX3 Info: Defining command \scrlfile@AfterPackage with sig. 'smo+m' on line +(LaTeX3) 191. + + +LaTeX3 Info: Defining command \AfterPackage with sig. '' on line 192. + + +LaTeX3 Info: Defining command \ReplaceInput with sig. '' on line 193. + + +LaTeX3 Info: Defining command \ReplaceClass with sig. 'mm' on line 196. + + +LaTeX3 Info: Defining command \ReplacePackage with sig. 'mm' on line 199. + + +LaTeX3 Info: Defining command \UnReplaceInput with sig. '' on line 200. + + +LaTeX3 Info: Defining command \UnReplaceClass with sig. 'm' on line 203. + + +LaTeX3 Info: Defining command \UnReplacePackage with sig. 'mm' on line 206. + + +LaTeX3 Info: Defining command \PreventPackageFromLoading with sig. 's+om' on +(LaTeX3) line 234. + + +LaTeX3 Info: Defining command \StorePreventPackageFromLoading with sig. 'm' on +(LaTeX3) line 242. + + +LaTeX3 Info: Defining command \ResetPreventPackageFromLoading with sig. '' on +(LaTeX3) line 247. + + +LaTeX3 Info: Defining command \UnPreventPackageFromLoading with sig. 'sm' on +(LaTeX3) line 261. + + +LaTeX3 Info: Defining command \BeforeClosingMainAux with sig. 'om' on line +(LaTeX3) 274. + + +LaTeX3 Info: Defining command \AfterReadingMainAux with sig. 'om' on line 287. + + +LaTeX3 Info: Defining command \protected@immediate@write with sig. 'm+m+m' on +(LaTeX3) line 298. + + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrlogo.sty +Package: scrlogo 2020/09/21 v3.32 KOMA-Script package (logo) +))) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks15 +))) +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/tocbasic.sty +Package: tocbasic 2020/09/21 v3.32 KOMA-Script package (handling toc-files) +\scr@dte@tocline@numberwidth=\skip47 +\scr@dte@tocline@numbox=\box47 +) +Package tocbasic Info: babel extension for `toc' omitted +(tocbasic) because of missing \bbl@set@language on input line 137. +Class scrreprt Info: You've used standard option `final'. +(scrreprt) This is correct! +(scrreprt) Internally I'm using `draft=false'. +(scrreprt) If you'd like to set the option with \KOMAoptions, +(scrreprt) you'd have to use `draft=false' there +(scrreprt) instead of `final', too. +Class scrreprt Info: File `scrsize11pt.clo' used instead of +(scrreprt) file `scrsize11.clo' to setup font sizes on input line 2434 +. + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrsize11pt.clo +File: scrsize11pt.clo 2020/09/21 v3.32 KOMA-Script font size class option (11pt) + +luaotfload | db : Font names database loaded from /home/studi/.texlive2020/texmf +-var/luatex-cache/generic/names/luaotfload-names.luc) +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/typearea.sty +Package: typearea 2020/09/21 v3.32 KOMA-Script package (type area) +\ta@bcor=\skip48 +\ta@div=\count173 +Package typearea Info: You've used standard option `a4paper'. +(typearea) This is correct! +(typearea) Internally I'm using `paper=a4'. +(typearea) If you'd like to set the option with \KOMAoptions, +(typearea) you'd have to use `paper=a4' there +(typearea) instead of `a4paper', too. +\ta@hblk=\skip49 +\ta@vblk=\skip50 +\ta@temp=\skip51 +\footheight=\skip52 +Package typearea Info: These are the values describing the layout: +(typearea) DIV = 12 +(typearea) BCOR = 42.67912pt +(typearea) \paperwidth = 597.50793pt +(typearea) \textwidth = 416.12161pt +(typearea) DIV departure = -6% +(typearea) \evensidemargin = 20.20148pt +(typearea) \oddsidemargin = 16.64487pt +(typearea) \paperheight = 845.04694pt +(typearea) \textheight = 609.40027pt +(typearea) \topmargin = -1.84941pt +(typearea) \headheight = 17.0pt +(typearea) \headsep = 20.40001pt +(typearea) \topskip = 11.0pt +(typearea) \footskip = 47.6pt +(typearea) \baselineskip = 13.6pt +(typearea) on input line 1740. +) +\c@part=\count174 +\c@chapter=\count175 +\c@section=\count176 +\c@subsection=\count177 +\c@subsubsection=\count178 +\c@paragraph=\count179 +\c@subparagraph=\count180 +\scr@dte@chapter@maxnumwidth=\skip53 +Class scrreprt Info: using compatibility default `afterindent=bysign' +(scrreprt) for `\chapter on input line 5627. +\scr@dte@section@maxnumwidth=\skip54 +Class scrreprt Info: using compatibility default `runin=bysign' +(scrreprt) for `\section on input line 5638. +Class scrreprt Info: using compatibility default `afterindent=bysign' +(scrreprt) for `\section on input line 5638. +\scr@dte@part@maxnumwidth=\skip55 +Class scrreprt Info: using compatibility default `afterindent=true' +(scrreprt) for `\part on input line 5647. +\scr@dte@subsection@maxnumwidth=\skip56 +Class scrreprt Info: using compatibility default `runin=bysign' +(scrreprt) for `\subsection on input line 5657. +Class scrreprt Info: using compatibility default `afterindent=bysign' +(scrreprt) for `\subsection on input line 5657. +\scr@dte@subsubsection@maxnumwidth=\skip57 +Class scrreprt Info: using compatibility default `runin=bysign' +(scrreprt) for `\subsubsection on input line 5667. +Class scrreprt Info: using compatibility default `afterindent=bysign' +(scrreprt) for `\subsubsection on input line 5667. +\scr@dte@paragraph@maxnumwidth=\skip58 +Class scrreprt Info: using compatibility default `runin=bysign' +(scrreprt) for `\paragraph on input line 5678. +Class scrreprt Info: using compatibility default `afterindent=bysign' +(scrreprt) for `\paragraph on input line 5678. +\scr@dte@subparagraph@maxnumwidth=\skip59 +Class scrreprt Info: using compatibility default `runin=bysign' +(scrreprt) for `\subparagraph on input line 5688. +Class scrreprt Info: using compatibility default `afterindent=bysign' +(scrreprt) for `\subparagraph on input line 5688. +\abovecaptionskip=\skip60 +\belowcaptionskip=\skip61 +\c@pti@nb@sid@b@x=\box48 +Package tocbasic Info: babel extension for `lof' omitted +(tocbasic) because of missing \bbl@set@language on input line 6925. +\scr@dte@figure@maxnumwidth=\skip62 +\c@figure=\count181 +Package tocbasic Info: babel extension for `lot' omitted +(tocbasic) because of missing \bbl@set@language on input line 6942. +\scr@dte@table@maxnumwidth=\skip63 +\c@table=\count182 +Class scrreprt Info: Redefining `\numberline' on input line 7111. +\bibindent=\dimen138 +) +(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2021/01/26 3.53 The Babel package + +(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def +File: babel.def 2021/01/26 3.53 Babel common definitions + +(/usr/share/texlive/texmf-dist/tex/generic/babel/luababel.def +\bbl@readstream=\read2 +\l@dumylang=\language2 +Package babel Info: Non-standard hyphenation setup on input line 117. +\l@nohyphenation=\language3 +\l@ukenglish=\language4 +\l@ngerman-x-2019-04-04=\language5 +\l@monogreek=\language6 +\l@german=\language7 +\l@ibycus=\language8 +\l@german-x-2019-04-04=\language9 +\l@greek=\language10 +\l@ancientgreek=\language11 +\l@swissgerman=\language12 +\l@ngerman=\language13 +\l@usenglishmax=\language14 +\babelcatcodetablenum=\catcodetable12 +\bbl@pattcodes=\catcodetable13 +) +\babel@savecnt=\count183 +\U@D=\dimen139 +\l@babelnohyphens=\language15 + +(/usr/share/texlive/texmf-dist/tex/generic/babel/luababel.def +\bbl@attr@locale=\attribute4 +)) +(/usr/share/texlive/texmf-dist/tex/generic/babel-english/british.ldf +Language: british 2017/06/06 v3.3r English support from the babel system + +(/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +Language: english 2017/06/06 v3.3r English support from the babel system +Package babel Info: \l@canadian = using hyphenrules for english +(babel) (\language0) on input line 102. +Package babel Info: \l@australian = using hyphenrules for ukenglish +(babel) (\language4) on input line 105. +Package babel Info: \l@newzealand = using hyphenrules for ukenglish +(babel) (\language4) on input line 108. + +(/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.te +x ASCII Hyphenation patterns for British English +(/usr/share/texlive/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-en-gb.te +x))))) (/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.sty +(/usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty +Package: expl3 2021-01-09 L3 programming layer (loader) + +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-luatex.def +File: l3backend-luatex.def 2020-01-29 L3 backend support: PDF output (LuaTeX) +\l__color_backend_stack_int=\count184 +\l__pdf_internal_box=\box49 +)) +Package: xparse 2020-10-27 L3 Experimental document command parser + +(/usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse-generic.tex)) +Package: fontspec 2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTeX +Lua module: fontspec 2020/02/21 2.7i Font selection for XeLaTeX and LuaLaTeX (/ +usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty +Package: fontspec-luatex 2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTe +X +\l__fontspec_script_int=\count185 +\l__fontspec_language_int=\count186 +\l__fontspec_strnum_int=\count187 +\l__fontspec_tmp_int=\count188 +\l__fontspec_tmpa_int=\count189 +\l__fontspec_tmpb_int=\count190 +\l__fontspec_tmpc_int=\count191 +\l__fontspec_em_int=\count192 +\l__fontspec_emdef_int=\count193 +\l__fontspec_strong_int=\count194 +\l__fontspec_strongdef_int=\count195 +\l__fontspec_tmpa_dim=\dimen140 +\l__fontspec_tmpb_dim=\dimen141 +\l__fontspec_tmpc_dim=\dimen142 + +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2020/08/10 v2.0s Standard LaTeX package +) +(/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.cfg))) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2020-05-15 v7.00e Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2020/03/06 v1.0d TeX engine tests +) +(/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO) + + +(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +\pdftexcmds@toks=\toks16 +) +(/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO) +) +\@linkdim=\dimen143 +\Hy@linkcounter=\count196 +\Hy@pagecounter=\count197 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2020-05-15 v7.00e Hyperref: PDFDocEncoding definition (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count198 +Package hyperref Info: Option `final' set `true' on input line 4338. +Package hyperref Info: Option `plainpages' set `false' on input line 4338. +Package hyperref Info: Option `pdfpagelabels' set `true' on input line 4338. +Package hyperref Info: Hyper figures OFF on input line 4464. +Package hyperref Info: Link nesting OFF on input line 4469. +Package hyperref Info: Hyper index ON on input line 4472. +Package hyperref Info: Plain pages OFF on input line 4479. +Package hyperref Info: Backreferencing OFF on input line 4484. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4717. +\c@Hy@tempcnt=\count199 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5076. +\XeTeXLinkMargin=\dimen144 + +(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO) + +)) +\Fld@menulength=\count266 +\Field@Width=\dimen145 +\Fld@charsize=\dimen146 +Package hyperref Info: Hyper figures OFF on input line 6347. +Package hyperref Info: Link nesting OFF on input line 6352. +Package hyperref Info: Hyper index ON on input line 6355. +Package hyperref Info: backreferencing OFF on input line 6362. +Package hyperref Info: Link coloring OFF on input line 6367. +Package hyperref Info: Link coloring with OCG OFF on input line 6372. +Package hyperref Info: PDF/A mode OFF on input line 6377. +LaTeX Info: Redefining \ref on input line 6417. +LaTeX Info: Redefining \pageref on input line 6421. + +(/usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2020/08/17 v1.0a Emulation of the original atbegshi packag +e +with kernel methods +) +\Hy@abspage=\count267 +\c@Item=\count268 +\c@Hfootnote=\count269 +) +Package hyperref Info: Driver (autodetected): hluatex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hluatex.def +File: hluatex.def 2020-05-15 v7.00e Hyperref driver for luaTeX + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2020-05-15 v7.00e Hyperref: PDF Unicode definition (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty +Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO) + +) +(/usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atvery package + +with kernel methods +) +\Fld@listcount=\count270 +\c@bookmark@seq@number=\count271 + +(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 28 +6. +) +\Hy@SectionHShift=\skip64 +) +(./preamble/packages.tex +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.sty +Package: biblatex 2020/12/31 v3.16 programmable bibliographies (PK/MW) + +(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count272 +) +(/usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.sty +Package: logreq 2010/08/04 v1.0 xml request logger +\lrq@indent=\count273 + +(/usr/share/texlive/texmf-dist/tex/latex/logreq/logreq.def +File: logreq.def 2010/08/04 v1.0 logreq spec v1.0 +)) +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +\c@tabx@nest=\count274 +\c@listtotal=\count275 +\c@listcount=\count276 +\c@liststart=\count277 +\c@liststop=\count278 +\c@citecount=\count279 +\c@citetotal=\count280 +\c@multicitecount=\count281 +\c@multicitetotal=\count282 +\c@instcount=\count283 +\c@maxnames=\count284 +\c@minnames=\count285 +\c@maxitems=\count286 +\c@minitems=\count287 +\c@citecounter=\count288 +\c@maxcitecounter=\count289 +\c@savedcitecounter=\count290 +\c@uniquelist=\count291 +\c@uniquename=\count292 +\c@refsection=\count293 +\c@refsegment=\count294 +\c@maxextratitle=\count295 +\c@maxextratitleyear=\count296 +\c@maxextraname=\count297 +\c@maxextradate=\count298 +\c@maxextraalpha=\count299 +\c@abbrvpenalty=\count300 +\c@highnamepenalty=\count301 +\c@lownamepenalty=\count302 +\c@maxparens=\count303 +\c@parenlevel=\count304 +\blx@tempcnta=\count305 +\blx@tempcntb=\count306 +\blx@tempcntc=\count307 +\blx@maxsection=\count308 +\blx@maxsegment@0=\count309 +\blx@notetype=\count310 +\blx@parenlevel@text=\count311 +\blx@parenlevel@foot=\count312 +\blx@sectionciteorder@0=\count313 +\blx@entrysetcounter=\count314 +\blx@biblioinstance=\count315 +\labelnumberwidth=\skip65 +\labelalphawidth=\skip66 +\biblabelsep=\skip67 +\bibitemsep=\skip68 +\bibnamesep=\skip69 +\bibinitsep=\skip70 +\bibparsep=\skip71 +\bibhang=\skip72 +\blx@bcfin=\read3 +\blx@bcfout=\write3 +\blx@langwohyphens=\language16 +\c@mincomprange=\count316 +\c@maxcomprange=\count317 +\c@mincompwidth=\count318 +Package biblatex Info: Trying to load biblatex default data model... +Package biblatex Info: ... file 'blx-dm.def' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-dm.def +File: blx-dm.def 2020/12/31 v3.16 biblatex localization (PK/MW) +) +Package biblatex Info: Trying to load biblatex style data model... +Package biblatex Info: ... file 'alphabetic.dbx' not found. +Package biblatex Info: Trying to load biblatex custom data model... +Package biblatex Info: ... file 'biblatex-dm.cfg' not found. +\c@afterword=\count319 +\c@savedafterword=\count320 +\c@annotator=\count321 +\c@savedannotator=\count322 +\c@author=\count323 +\c@savedauthor=\count324 +\c@bookauthor=\count325 +\c@savedbookauthor=\count326 +\c@commentator=\count327 +\c@savedcommentator=\count328 +\c@editor=\count329 +\c@savededitor=\count330 +\c@editora=\count331 +\c@savededitora=\count332 +\c@editorb=\count333 +\c@savededitorb=\count334 +\c@editorc=\count335 +\c@savededitorc=\count336 +\c@foreword=\count337 +\c@savedforeword=\count338 +\c@holder=\count339 +\c@savedholder=\count340 +\c@introduction=\count341 +\c@savedintroduction=\count342 +\c@namea=\count343 +\c@savednamea=\count344 +\c@nameb=\count345 +\c@savednameb=\count346 +\c@namec=\count347 +\c@savednamec=\count348 +\c@translator=\count349 +\c@savedtranslator=\count350 +\c@shortauthor=\count351 +\c@savedshortauthor=\count352 +\c@shorteditor=\count353 +\c@savedshorteditor=\count354 +\c@labelname=\count355 +\c@savedlabelname=\count356 +\c@institution=\count357 +\c@savedinstitution=\count358 +\c@lista=\count359 +\c@savedlista=\count360 +\c@listb=\count361 +\c@savedlistb=\count362 +\c@listc=\count363 +\c@savedlistc=\count364 +\c@listd=\count365 +\c@savedlistd=\count366 +\c@liste=\count367 +\c@savedliste=\count368 +\c@listf=\count369 +\c@savedlistf=\count370 +\c@location=\count371 +\c@savedlocation=\count372 +\c@organization=\count373 +\c@savedorganization=\count374 +\c@origlocation=\count375 +\c@savedoriglocation=\count376 +\c@origpublisher=\count377 +\c@savedorigpublisher=\count378 +\c@publisher=\count379 +\c@savedpublisher=\count380 +\c@language=\count381 +\c@savedlanguage=\count382 +\c@origlanguage=\count383 +\c@savedoriglanguage=\count384 +\c@pageref=\count385 +\c@savedpageref=\count386 +\shorthandwidth=\skip73 +\shortjournalwidth=\skip74 +\shortserieswidth=\skip75 +\shorttitlewidth=\skip76 +\shortauthorwidth=\skip77 +\shorteditorwidth=\skip78 +\locallabelnumberwidth=\skip79 +\locallabelalphawidth=\skip80 +\localshorthandwidth=\skip81 +\localshortjournalwidth=\skip82 +\localshortserieswidth=\skip83 +\localshorttitlewidth=\skip84 +\localshortauthorwidth=\skip85 +\localshorteditorwidth=\skip86 +Package biblatex Info: Trying to load enhanced support for Unicode engines... +Package biblatex Info: ... file 'blx-unicode.def' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-unicode.def) +Package biblatex Info: Trying to load compatibility code... +Package biblatex Info: ... file 'blx-compat.def' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-compat.def +File: blx-compat.def 2020/12/31 v3.16 biblatex compatibility (PK/MW) +) +Package biblatex Info: Trying to load generic definitions... +Package biblatex Info: ... file 'biblatex.def' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.def +File: biblatex.def 2020/12/31 v3.16 biblatex compatibility (PK/MW) +\c@textcitecount=\count387 +\c@textcitetotal=\count388 +\c@textcitemaxnames=\count389 +\c@biburlbigbreakpenalty=\count390 +\c@biburlbreakpenalty=\count391 +\c@biburlnumpenalty=\count392 +\c@biburlucpenalty=\count393 +\c@biburllcpenalty=\count394 +\biburlbigskip=\muskip17 +\biburlnumskip=\muskip18 +\biburlucskip=\muskip19 +\biburllcskip=\muskip20 +\c@smartand=\count395 +) +Package biblatex Info: Trying to load bibliography style 'alphabetic'... +Package biblatex Info: ... file 'alphabetic.bbx' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx +File: alphabetic.bbx 2020/12/31 v3.16 biblatex bibliography style (PK/MW) +Package biblatex Info: Trying to load bibliography style 'standard'... +Package biblatex Info: ... file 'standard.bbx' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +File: standard.bbx 2020/12/31 v3.16 biblatex bibliography style (PK/MW) +\c@bbx:relatedcount=\count396 +\c@bbx:relatedtotal=\count397 +)) +Package biblatex Info: Trying to load citation style 'alphabetic'... +Package biblatex Info: ... file 'alphabetic.cbx' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx +File: alphabetic.cbx 2020/12/31 v3.16 biblatex citation style (PK/MW) +Package biblatex Info: Redefining '\cite'. +Package biblatex Info: Redefining '\parencite'. +Package biblatex Info: Redefining '\footcite'. +Package biblatex Info: Redefining '\footcitetext'. +Package biblatex Info: Redefining '\smartcite'. +Package biblatex Info: Redefining '\textcite'. +Package biblatex Info: Redefining '\textcites'. +Package biblatex Info: Redefining '\cites'. +Package biblatex Info: Redefining '\parencites'. +Package biblatex Info: Redefining '\smartcites'. +) +Package biblatex Info: Trying to load configuration file... +Package biblatex Info: ... file 'biblatex.cfg' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/biblatex.cfg +File: biblatex.cfg +)) +(/usr/share/texlive/texmf-dist/tex/latex/tools/varioref.sty +Package: varioref 2020/08/11 v1.6e package for extended references (FMi) +\c@vrcnt=\count398 +) +(/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.sty +Package: csquotes 2021-01-04 v5.2k context-sensitive quotations (JAW) +\csq@reset=\count399 +\csq@gtype=\count400 +\csq@glevel=\count401 +\csq@qlevel=\count402 +\csq@maxlvl=\count403 +\csq@tshold=\count404 +\csq@ltx@everypar=\toks17 + +(/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.def +File: csquotes.def 2021-01-04 v5.2k csquotes generic definitions (JAW) +) +Package csquotes Info: Trying to load configuration file 'csquotes.cfg'... +Package csquotes Info: ... configuration file loaded successfully. + +(/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.cfg +File: csquotes.cfg +)) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2020/09/09 v1.2b Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2020/08/30 v1.4c Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: luatex.def on input line 105. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/luatex.def +File: luatex.def 2020/10/05 v1.2a Graphics/color driver for luatex +)) +\Gin@req@height=\dimen147 +\Gin@req@width=\dimen148 +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2020/10/26 v3.5g Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2020/10/21 v2.2e caption3 kernel (AR) +\captionmargin=\dimen149 +\captionmargin@=\dimen150 +\captionwidth=\dimen151 +\caption@tempdima=\dimen152 +\caption@indent=\dimen153 +\caption@parindent=\dimen154 +\caption@hangindent=\dimen155 +Package caption Info: KOMA-Script document class detected. + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption-koma.sto +File: caption-koma.sto 2020/09/21 v2.0b Adaption of the caption package to the K +OMA-Script document classes (AR) +)) +\c@caption@flags=\count405 +\c@continuedfloat=\count406 +Package caption Info: hyperref package is loaded. +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/subcaption.sty +Package: subcaption 2020/10/07 v1.3j Sub-captions (AR) +\c@subfigure=\count407 +\c@subtable=\count408 +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +\lst@mode=\count409 +\lst@gtempboxa=\box50 +\lst@token=\toks18 +\lst@length=\count410 +\lst@currlwidth=\dimen156 +\lst@column=\count411 +\lst@pos=\count412 +\lst@lostspace=\dimen157 +\lst@width=\dimen158 +\lst@newlines=\count413 +\lst@lineno=\count414 +\lst@maxwidth=\dimen159 + +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2020/03/24 1.8d (Carsten Heinz) +\c@lstnumber=\count415 +\lst@skipnumbers=\count416 +\lst@framebox=\box51 +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2020/03/24 1.8d listings configuration +)) +Package: listings 2020/03/24 1.8d (Carsten Heinz) + +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: luatex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen160 +\lightrulewidth=\dimen161 +\cmidrulewidth=\dimen162 +\belowrulesep=\dimen163 +\belowbottomsep=\dimen164 +\aboverulesep=\dimen165 +\abovetopsep=\dimen166 +\cmidrulesep=\dimen167 +\cmidrulekern=\dimen168 +\defaultaddspace=\dimen169 +\@cmidla=\count417 +\@cmidlb=\count418 +\@aboverulesep=\dimen170 +\@belowrulesep=\dimen171 +\@thisruleclass=\count419 +\@lastruleclass=\count420 +\@thisrulewidth=\dimen172 +) +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty +Package: microtype 2020/12/07 v2.8 Micro-typographical refinements (RS) +\MT@toks=\toks19 +\MT@count=\count421 +LaTeX Info: Redefining \textls on input line 788. +\MT@outer@kern=\dimen173 +LaTeX Info: Redefining \textmicrotypecontext on input line 1358. +\MT@listname@count=\count422 + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-luatex.def +File: microtype-luatex.def 2020/12/07 v2.8 Definitions specific to luatex (RS) +Module microtype Info: overwriting function `keepligature' on input line 59 +LaTeX Info: Redefining \lsstyle on input line 706. +LaTeX Info: Redefining \lslig on input line 706. +\MT@outer@space=\skip87 +) +Package microtype Info: Loading configuration file microtype.cfg. + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg +File: microtype.cfg 2020/12/07 v2.8 microtype main configuration file (RS) +)) +(/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty +Package: siunitx 2020/02/25 v2.8b A comprehensive (SI) units package + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks20 +\ex@=\dimen174 +)) +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty +Package: array 2020/10/01 v2.5c Tabular extension package (FMi) +\col@sep=\dimen175 +\ar@mcellbox=\box52 +\extrarowheight=\dimen176 +\NC@list=\toks21 +\extratabsurround=\skip88 +\backup@length=\skip89 +\ar@cellbox=\box53 +) +(/usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +Package: l3keys2e 2020-10-27 LaTeX2e option processing using LaTeX3 keys +) +\l__siunitx_tmp_box=\box54 +\l__siunitx_tmp_dim=\dimen177 +\l__siunitx_tmp_int=\count423 +\l__siunitx_number_mantissa_length_int=\count424 +\l__siunitx_number_uncert_length_int=\count425 +\l__siunitx_round_int=\count426 +\l__siunitx_process_decimal_int=\count427 +\l__siunitx_process_uncertainty_int=\count428 +\l__siunitx_process_fixed_int=\count429 +\l__siunitx_process_integer_min_int=\count430 +\l__siunitx_process_precision_int=\count431 +\l__siunitx_group_min_int=\count432 +\l__siunitx_angle_marker_box=\box55 +\l__siunitx_angle_unit_box=\box56 +\l__siunitx_angle_marker_dim=\dimen178 +\l__siunitx_angle_unit_dim=\dimen179 +\l__siunitx_unit_int=\count433 +\l__siunitx_unit_denominator_int=\count434 +\l__siunitx_unit_numerator_int=\count435 +\l__siunitx_unit_prefix_int=\count436 +\l__siunitx_unit_prefix_base_int=\count437 +\l__siunitx_unit_prefix_gram_int=\count438 +\l__siunitx_number_product_int=\count439 +\c__siunitx_one_fill_skip=\skip90 +\l__siunitx_table_unit_align_skip=\skip91 +\l__siunitx_table_exponent_dim=\dimen180 +\l__siunitx_table_integer_dim=\dimen181 +\l__siunitx_table_mantissa_dim=\dimen182 +\l__siunitx_table_marker_dim=\dimen183 +\l__siunitx_table_result_dim=\dimen184 +\l__siunitx_table_uncert_dim=\dimen185 +\l__siunitx_table_fill_pre_dim=\dimen186 +\l__siunitx_table_fill_post_dim=\dimen187 +\l__siunitx_table_fill_mid_dim=\dimen188 +\l__siunitx_table_pre_box=\box57 +\l__siunitx_table_post_box=\box58 +\l__siunitx_table_mantissa_box=\box59 +\l__siunitx_table_result_box=\box60 +\l__siunitx_table_number_align_skip=\skip92 +\l__siunitx_table_text_align_skip=\skip93 + +(/usr/share/texlive/texmf-dist/tex/latex/translator/translator.sty +Package: translator 2020-08-03 v1.12c Easy translation of strings in LaTeX +)) +(/usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty +Package: fancybox 2010/05/15 1.4 + +Style option: `fancybox' v1.4 <2010/05/15> (tvz) +\@fancybox=\box61 +\shadowsize=\dimen189 +\@Sbox=\box62 +\do@VerbBox=\toks22 +\the@fancyput=\toks23 +\this@fancyput=\toks24 +\EndVerbatimTokens=\toks25 +\Verbatim@Outfile=\write4 +\Verbatim@Infile=\read4 +) (/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2021/01/20 v3.7 verbatim text (tvz,hv) +\FV@CodeLineNo=\count440 +\FV@InFile=\read5 +\FV@TabBox=\box63 +\c@FancyVerbLine=\count441 +\FV@StepNumber=\count442 +\FV@OutFile=\write5 +LaTeX Info: Redefining \UseVerb on input line 1216. +) +(/usr/share/texlive/texmf-dist/tex/latex/pdfpages/pdfpages.sty +Package: pdfpages 2021/01/09 v0.5r Insert pages of external PDF documents (AM) + +(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ) +\calc@Acount=\count443 +\calc@Bcount=\count444 +\calc@Adimen=\dimen190 +\calc@Bdimen=\dimen191 +\calc@Askip=\skip94 +\calc@Bskip=\skip95 +LaTeX Info: Redefining \setlength on input line 80. +LaTeX Info: Redefining \addtolength on input line 81. +\calc@Ccount=\count445 +\calc@Cskip=\skip96 +) +(/usr/share/texlive/texmf-dist/tex/latex/eso-pic/eso-pic.sty +Package: eso-pic 2020/10/14 v3.0a eso-pic (RN) +\ESO@tempdima=\dimen192 +\ESO@tempdimb=\dimen193 +) +\AM@pagewidth=\dimen194 +\AM@pageheight=\dimen195 + +(/usr/share/texlive/texmf-dist/tex/latex/pdfpages/ppluatex.def +File: ppluatex.def 2021/01/09 v0.5r Pdfpages driver for LuaTeX (AM) +) +\pdfpages@includegraphics@status=\count446 +\AM@pagebox=\box64 +\AM@global@opts=\toks26 +\AM@pagecnt=\count447 +\AM@toc@title=\toks27 +\c@AM@survey=\count448 +\AM@templatesizebox=\box65 +) +(/usr/share/texlive/texmf-dist/tex/latex/hyphenat/hyphenat.sty +Package: hyphenat 2009/09/02 v2.3c hyphenation utilities +\langwohyphens=\language17 +LaTeX Info: Redefining \_ on input line 43. +) +(/usr/share/texlive/texmf-dist/tex/latex/todonotes/todonotes.sty +Package: todonotes 2020/08/18 v1.1.3 Todonotes source and documentation. +Package: todonotes 2018/11/22 + +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2020/11/20 v2.8 package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks28 +\XKV@tempa@toks=\toks29 +) +\XKV@depth=\count449 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks30 +\pgfutil@tempdima=\dimen196 +\pgfutil@tempdimb=\dimen197 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t +ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box66 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2020/12/27 v3.1.8b (3.1.8b) +)) +Package: pgf 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks31 +\pgfkeys@temptoks=\toks32 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t +ex +\pgfkeys@tmptoks=\toks33 +)) +\pgf@x=\dimen198 +\pgf@y=\dimen199 +\pgf@xa=\dimen256 +\pgf@ya=\dimen257 +\pgf@xb=\dimen258 +\pgf@yb=\dimen259 +\pgf@xc=\dimen260 +\pgf@yc=\dimen261 +\pgf@xd=\dimen262 +\pgf@yd=\dimen263 +\w@pgf@writea=\write6 +\r@pgf@reada=\read6 +\c@pgf@counta=\count450 +\c@pgf@countb=\count451 +\c@pgf@countc=\count452 +\c@pgf@countd=\count453 +\t@pgf@toka=\toks34 +\t@pgf@tokb=\toks35 +\t@pgf@tokc=\toks36 +\pgf@sys@id@count=\count454 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2020/12/27 v3.1.8b (3.1.8b) +) +Driver file for pgf: pgfsys-luatex.def + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.def +File: pgfsys-luatex.def 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de +f +File: pgfsys-common-pdf.def 2020/12/27 v3.1.8b (3.1.8b) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. +tex +File: pgfsyssoftpath.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgfsyssoftpath@smallbuffer@items=\count455 +\pgfsyssoftpath@bigbuffer@items=\count456 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. +tex +File: pgfsysprotocol.code.tex 2020/12/27 v3.1.8b (3.1.8b) +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen264 +\pgfmath@count=\count457 +\pgfmath@box=\box67 +\pgfmath@toks=\toks37 +\pgfmath@stack@operand=\toks38 +\pgfmath@stack@operation=\toks39 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet +ric.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod +e.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison +.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari +thmetics.code.tex))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count458 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te +x +File: pgfcorepoints.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgf@picminx=\dimen265 +\pgf@picmaxx=\dimen266 +\pgf@picminy=\dimen267 +\pgf@picmaxy=\dimen268 +\pgf@pathminx=\dimen269 +\pgf@pathmaxx=\dimen270 +\pgf@pathminy=\dimen271 +\pgf@pathmaxy=\dimen272 +\pgf@xx=\dimen273 +\pgf@xy=\dimen274 +\pgf@yx=\dimen275 +\pgf@yy=\dimen276 +\pgf@zx=\dimen277 +\pgf@zy=\dimen278 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. +code.tex +File: pgfcorepathconstruct.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgf@path@lastx=\dimen279 +\pgf@path@lasty=\dimen280 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code +.tex +File: pgfcorepathusage.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgf@shorten@end@additional=\dimen281 +\pgf@shorten@start@additional=\dimen282 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te +x +File: pgfcorescopes.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgfpic=\box68 +\pgf@hbox=\box69 +\pgf@layerbox@main=\box70 +\pgf@picture@serial@count=\count459 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c +ode.tex +File: pgfcoregraphicstate.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgflinewidth=\dimen283 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation +s.code.tex +File: pgfcoretransformations.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgf@pt@x=\dimen284 +\pgf@pt@y=\dimen285 +\pgf@pt@temp=\dimen286 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t +ex +File: pgfcoreobjects.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing +.code.tex +File: pgfcorepathprocessing.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te +x +File: pgfcorearrows.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgfarrowsep=\dimen287 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgf@max=\dimen288 +\pgf@sys@shading@range@num=\count460 +\pgf@shadingcount=\count461 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. +tex +File: pgfcoreexternal.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgfexternal@startupbox=\box71 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te +x +File: pgfcorelayers.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c +ode.tex +File: pgfcoretransparency.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. +tex +File: pgfcorepatterns.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex +File: pgfcorerdf.code.tex 2020/12/27 v3.1.8b (3.1.8b) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgfnodeparttextbox=\box72 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 +.sty +Package: pgfcomp-version-0-65 2020/12/27 v3.1.8b (3.1.8b) +\pgf@nodesepstart=\dimen289 +\pgf@nodesepend=\dimen290 +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 +.sty +Package: pgfcomp-version-1-18 2020/12/27 v3.1.8b (3.1.8b) +)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +Package: pgffor 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) +\pgffor@iter=\dimen291 +\pgffor@skip=\dimen292 +\pgffor@stack=\toks40 +\pgffor@toks=\toks41 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +Package: tikz 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers +.code.tex +File: pgflibraryplothandlers.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgf@plot@mark@count=\count462 +\pgfplotmarksize=\dimen293 +) +\tikz@lastx=\dimen294 +\tikz@lasty=\dimen295 +\tikz@lastxsaved=\dimen296 +\tikz@lastysaved=\dimen297 +\tikz@lastmovetox=\dimen298 +\tikz@lastmovetoy=\dimen299 +\tikzleveldistance=\dimen300 +\tikzsiblingdistance=\dimen301 +\tikz@figbox=\box73 +\tikz@figbox@bg=\box74 +\tikz@tempbox=\box75 +\tikz@tempbox@bg=\box76 +\tikztreelevel=\count463 +\tikznumberofchildren=\count464 +\tikznumberofcurrentchild=\count465 +\tikz@fig@count=\count466 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +File: pgfmodulematrix.code.tex 2020/12/27 v3.1.8b (3.1.8b) +\pgfmatrixcurrentrow=\count467 +\pgfmatrixcurrentcolumn=\count468 +\pgf@matrix@numberofcolumns=\count469 +) +\tikz@expandcount=\count470 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibrarytopaths.code.tex +File: tikzlibrarytopaths.code.tex 2020/12/27 v3.1.8b (3.1.8b) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibrarypositioning.code.tex +File: tikzlibrarypositioning.code.tex 2020/12/27 v3.1.8b (3.1.8b) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibraryshadows.code.tex +File: tikzlibraryshadows.code.tex 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibraryfadings.code.tex +File: tikzlibraryfadings.code.tex 2020/12/27 v3.1.8b (3.1.8b) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code +.tex +File: pgflibraryfadings.code.tex 2020/12/27 v3.1.8b (3.1.8b) +))) +\c@@todonotes@numberoftodonotes=\count471 +) (/usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty +Package: xspace 2014/10/28 v1.13 Space after command names (DPC,MH) +) +(/usr/share/texlive/texmf-dist/tex/latex/setspace/setspace.sty +Package: setspace 2011/12/19 v6.7a set line spacing +) + +Class scrreprt Warning: Usage of package `fancyhdr' together +(scrreprt) with a KOMA-Script class is not recommended. +(scrreprt) I'd suggest to use +(scrreprt) package `scrlayer' or `scrlayer-scrpage', because +(scrreprt) they support KOMA-Script classes. +(scrreprt) With `fancyhdr' several features of class `scrreprt' +(scrreprt) like options `headsepline', `footsepline' or command +(scrreprt) `\MakeMarkcase' and the commands `\setkomafont' and +(scrreprt) `\addtokomafont' for the page style elements need +(scrreprt) explicite user intervention to work. +(scrreprt) Nevertheless, using requested +(scrreprt) package `fancyhdr' on input line 34. + +(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2021/01/04 v4.0 Extensive control of page headers and footers +\f@nch@headwidth=\skip97 +\f@nch@O@elh=\skip98 +\f@nch@O@erh=\skip99 +\f@nch@O@olh=\skip100 +\f@nch@O@orh=\skip101 +\f@nch@O@elf=\skip102 +\f@nch@O@erf=\skip103 +\f@nch@O@olf=\skip104 +\f@nch@O@orf=\skip105 +) +(/usr/share/texlive/texmf-dist/tex/latex/lastpage/lastpage.sty +Package: lastpage 2015/03/29 v1.2m Refers to last page's name (HMM; JPG) +)) +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/scrhack.sty +Package: scrhack 2020/09/21 v3.32 KOMA-Script package (hacking other packages) + +(/usr/share/texlive/texmf-dist/tex/latex/xpatch/xpatch.sty +Package: xpatch 2020/03/25 v0.3a Extending etoolbox patching commands +) +Package scrhack Info: hyperref hack deactivated because of +(scrhack) detection of hyperref version, that doesn't +(scrhack) need that hack, on input line 162. +Package scrhack Info: loading listings hack on input line 183. + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/listings.hak +File: listings.hak 2020/09/21 v3.32 KOMA-Script scrhack part (hacking package li +stings) +Package tocbasic Info: setting babel extension for `lol' on input line 143. +Package scrhack Info: redefining \lstlistoflistings on input line 143. +) +Package scrhack Info: loading setspace hack on input line 197. + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/setspace.hak +File: setspace.hak 2020/09/21 v3.32 KOMA-Script scrhack part (hacking package se +tspace) +)) +(./preamble/color.tex) (./preamble/style.tex +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2020/03/24 1.8d listings language file +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2020/03/24 1.8d (Carsten Heinz) +)) +(./preamble/newcommands.tex) +Package csquotes Info: Checking for multilingual support... +Package csquotes Info: ... found 'babel' package. +Package csquotes Info: Adjusting default style. +Package csquotes Info: Redefining alias 'default' -> 'british'. + (./bachelor.aux (./content/10_introduction.aux) +(./content/20_state.aux) (./content/30_design.aux) +(./content/40_implementation.aux) (./content/50_evaluation.aux) +(./content/60_futurework.aux) (./content/70_conclusion.aux)) +\openout1 = bachelor.aux + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 43. +LaTeX Font Info: Trying to load font information for TS1+cmr on input line 43 +. + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 43. +LaTeX Font Info: ... okay on input line 43. +Package scrbase Info: activating british \contentsname on input line 43. +Package scrbase Info: activating british \listfigurename on input line 43. +Package scrbase Info: activating british \listtablename on input line 43. + +Package fontspec Info: Adjusting the maths setup (use [no-math] to avoid +(fontspec) this). + +\symlegacymaths=\mathgroup4 +LaTeX Font Info: Overwriting symbol font `legacymaths' in version `bold' +(Font) OT1/cmr/m/n --> OT1/cmr/bx/n on input line 43. +LaTeX Font Info: Redeclaring math accent \acute on input line 43. +LaTeX Font Info: Redeclaring math accent \grave on input line 43. +LaTeX Font Info: Redeclaring math accent \ddot on input line 43. +LaTeX Font Info: Redeclaring math accent \tilde on input line 43. +LaTeX Font Info: Redeclaring math accent \bar on input line 43. +LaTeX Font Info: Redeclaring math accent \breve on input line 43. +LaTeX Font Info: Redeclaring math accent \check on input line 43. +LaTeX Font Info: Redeclaring math accent \hat on input line 43. +LaTeX Font Info: Redeclaring math accent \dot on input line 43. +LaTeX Font Info: Redeclaring math accent \mathring on input line 43. +LaTeX Font Info: Redeclaring math symbol \colon on input line 43. +LaTeX Font Info: Redeclaring math symbol \Gamma on input line 43. +LaTeX Font Info: Redeclaring math symbol \Delta on input line 43. +LaTeX Font Info: Redeclaring math symbol \Theta on input line 43. +LaTeX Font Info: Redeclaring math symbol \Lambda on input line 43. +LaTeX Font Info: Redeclaring math symbol \Xi on input line 43. +LaTeX Font Info: Redeclaring math symbol \Pi on input line 43. +LaTeX Font Info: Redeclaring math symbol \Sigma on input line 43. +LaTeX Font Info: Redeclaring math symbol \Upsilon on input line 43. +LaTeX Font Info: Redeclaring math symbol \Phi on input line 43. +LaTeX Font Info: Redeclaring math symbol \Psi on input line 43. +LaTeX Font Info: Redeclaring math symbol \Omega on input line 43. +LaTeX Font Info: Redeclaring math symbol \mathdollar on input line 43. +LaTeX Font Info: Redeclaring symbol font `operators' on input line 43. +LaTeX Font Info: Encoding `OT1' has changed to `TU' for symbol font +(Font) `operators' in the math version `normal' on input line 43. +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> TU/lmr/m/n on input line 43. +LaTeX Font Info: Encoding `OT1' has changed to `TU' for symbol font +(Font) `operators' in the math version `bold' on input line 43. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> TU/lmr/m/n on input line 43. +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) TU/lmr/m/n --> TU/lmr/m/n on input line 43. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> TU/lmr/m/it on input line 43. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> TU/lmr/b/n on input line 43. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> TU/lmss/m/n on input line 43. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> TU/lmtt/m/n on input line 43. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) TU/lmr/m/n --> TU/lmr/b/n on input line 43. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> TU/lmr/b/it on input line 43. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> TU/lmss/b/n on input line 43. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> TU/lmtt/b/n on input line 43. +Package hyperref Info: Link coloring OFF on input line 43. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count472 +LaTeX Info: Redefining \Ref on input line 520. +) +LaTeX Info: Redefining \ref on input line 43. +LaTeX Info: Redefining \pageref on input line 43. +LaTeX Info: Redefining \nameref on input line 43. + +(./bachelor.out) (./bachelor.out) +\@outlinefile=\write7 + +\openout7 = bachelor.out +LaTeX Info: Redefining \Ref on input line 43. +Class scrreprt Info: loading recommended package `bookmark'. +(scrreprt) Using `bookmark' together with `hyperref' is recommended, +(scrreprt) because of handling of possible bookmark level gaps. +(scrreprt) You can avoid loading `bookmark' with KOMA-Script option +(scrreprt) `bookmarkpackage=false' before \begin{document} and +(scrreprt) you can avoid this message adding: +(scrreprt) \usepackage{bookmark} +(scrreprt) before \begin{document} on input line 43. + +(/usr/share/texlive/texmf-dist/tex/latex/bookmark/bookmark.sty +Package: bookmark 2020-11-06 v1.29 PDF bookmarks (HO) + +(/usr/share/texlive/texmf-dist/tex/latex/bookmark/bkm-pdftex.def +File: bkm-pdftex.def 2020-11-06 v1.29 bookmark driver for pdfTeX (HO) +\BKM@id=\count473 +)) +Package biblatex Info: Trying to load language 'british'... +Package biblatex Info: ... file 'british.lbx' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/british.lbx +File: british.lbx 2020/12/31 v3.16 biblatex localization (PK/MW) +Package biblatex Info: Trying to load language 'english'... +Package biblatex Info: ... file 'english.lbx' found. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/lbx/english.lbx +File: english.lbx 2020/12/31 v3.16 biblatex localization (PK/MW) +)) +Package biblatex Info: LuaTeX detected. +(biblatex) Assuming input encoding 'utf8'. +Package biblatex Info: Automatic encoding selection. +(biblatex) Assuming data encoding 'utf8'. +Package biblatex Info: Document encoding is UTF8 .... +Package biblatex Info: ... and expl3 +(biblatex) 2021-01-09 L3 programming layer (loader) +(biblatex) is new enough (at least 2020/04/06), +(biblatex) setting 'casechanger=expl3'. + +(/usr/share/texlive/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty +Package: blx-case-expl3 2020/12/31 v3.16 expl3 case changing code for biblatex +) +\openout3 = bachelor.bcf + +Package biblatex Info: Trying to load bibliographic data... +Package biblatex Info: ... file 'bachelor.bbl' found. + +(./bachelor.bbl) +Package biblatex Info: Reference section=0 on input line 43. +Package biblatex Info: Reference segment=0 on input line 43. + +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count474 +\scratchdimen=\dimen302 +\scratchbox=\box77 +\nofMPsegments=\count475 +\nofMParguments=\count476 +\everyMPshowfont=\toks42 +\MPscratchCnt=\count477 +\MPscratchDim=\dimen303 +\MPnumerator=\count478 +\makeMPintoPDFobject=\count479 +\everyMPtoPDFconversion=\toks43 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 48 +5. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live + +)) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: listings package is loaded. +Package caption Info: End \AtBeginDocument code. +\c@lstlisting=\count480 +LaTeX Info: Redefining \microtypecontext on input line 43. +Package microtype Info: Generating PDF output. +Package microtype Info: Character protrusion enabled (level 2). +Package microtype Info: Using default protrusion set `alltext'. +Package microtype Info: Automatic font expansion enabled (level 2), +(microtype) stretch: 20, shrink: 20, step: 1, non-selected. +Package microtype Info: Using default expansion set `alltext-nott'. +LaTeX Info: Redefining \showhyphens on input line 43. +Package microtype Info: No adjustment of tracking. +Package microtype Info: No adjustment of spacing. +Package microtype Info: No adjustment of kerning. + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg +File: mt-LatinModernRoman.cfg 2013/03/13 v1.0 microtype config. file: Latin Mode +rn Roman (RS) +) +(/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg +File: siunitx-abbreviations.cfg 2017/11/26 v2.7k siunitx: Abbreviated units +) +(/usr/share/texlive/texmf-dist/tex/latex/translator/translator-basic-dictionary +-English.dict +Dictionary: translator-basic-dictionary, Language: English +) (/usr/share/texlive/texmf-dist/tex/latex/pdflscape/pdflscape.sty +Package: pdflscape 2019/12/05 v0.12 Display of landscape pages in PDF (HO) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/lscape.sty +Package: lscape 2020/05/28 v3.02 Landscape Pages (DPC) +) +Package scrhack Info: loading lscape hack on input line 77. + +(/usr/share/texlive/texmf-dist/tex/latex/koma-script/lscape.hak +File: lscape.hak 2020/09/21 v3.32 KOMA-Script scrhack part (hacking package lsca +pe) +Package scrhack Info: \landscape patched to make \textheight change optional on +input line 90. +\scrh@LT@textheight=\skip106 +) +Package pdflscape Info: Auto-detected driver: pdftex on input line 81. +) +Package lastpage Info: Please have a look at the pageslts package at +(lastpage) https://www.ctan.org/pkg/pageslts +(lastpage) ! on input line 43. +Package scrhack Info: undefining \float@addtolists on input line 43. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <10.95> on input line 43. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 43. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 43. + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-cmr.cfg +File: mt-cmr.cfg 2013/05/19 v2.2 microtype config. file: Computer Modern Roman ( +RS) +) +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `lmss' (encoding: TU). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `lmtt' (encoding: TU). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. + +(./content/00_title.tex +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <14.4> on input line 26. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 26. + [1 + + + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +[2 + + +]) + +File: images/bachelor-aufgabe.pdf Graphic file (type pdf) + +Package luatex.def Info: images/bachelor-aufgabe.pdf used on input line 49. +(luatex.def) Requested size: 614.29349pt x 794.96806pt. +File: images/bachelor-aufgabe.pdf Graphic file (type pdf) + +Package luatex.def Info: images/bachelor-aufgabe.pdf used on input line 49. +(luatex.def) Requested size: 614.29349pt x 794.96806pt. + +File: images/bachelor-aufgabe.pdf Graphic file (type pdf) + +Package luatex.def Info: images/bachelor-aufgabe.pdf , page1 used on input line +49. +(luatex.def) Requested size: 614.29349pt x 794.96806pt. +File: images/bachelor-aufgabe.pdf Graphic file (type pdf) + +Package luatex.def Info: images/bachelor-aufgabe.pdf , page1 used on input line +49. +(luatex.def) Requested size: 597.78697pt x 773.60669pt. +File: images/bachelor-aufgabe.pdf Graphic file (type pdf) + +Package luatex.def Info: images/bachelor-aufgabe.pdf , page1 used on input line +49. +(luatex.def) Requested size: 597.78697pt x 773.60669pt. +File: images/bachelor-aufgabe.pdf Graphic file (type pdf) + +Package luatex.def Info: images/bachelor-aufgabe.pdf , page1 used on input line +49. +(luatex.def) Requested size: 597.78697pt x 773.60669pt. +File: images/bachelor-aufgabe.pdf Graphic file (type pdf) + +Package luatex.def Info: images/bachelor-aufgabe.pdf , page1 used on input line +49. +(luatex.def) Requested size: 597.78697pt x 773.60669pt. + [3<./images/bachelor-aufgabe.pdf>] [4 + + +] (./content/01_disclaimer.tex +[5] [6 + + +]) (./content/02_abstract.tex +Package hyperref Info: bookmark level for unknown todo defaults to 0 on input li +ne 13. +) [7 + + +] [8 + + +] +Package tocbasic Info: character protrusion at toc deactivated on input line 63. + + (./bachelor.toc +Overfull \hbox (7.56644pt too wide) detected at line 6 + []\TU/lmr/bx/n/10.95 XIII + [] + + +Overfull \hbox (2.05858pt too wide) detected at line 7 + []\TU/lmr/bx/n/10.95 XV + [] + +) +\tf@toc=\write8 + +\openout8 = bachelor.toc + [9 + +] [10 + + +] (./bachelor.tdo) +\tf@tdo=\write9 + +\openout9 = bachelor.tdo + [11 + +] [12 + + +] +Package tocbasic Info: character protrusion at lof deactivated on input line 71. + + (./bachelor.lof) +\tf@lof=\write10 + +\openout10 = bachelor.lof + [13 + +] [14 + + +] +Package tocbasic Info: character protrusion at lot deactivated on input line 74. + + +(./bachelor.lot) +\tf@lot=\write11 + +\openout11 = bachelor.lot + [15 + +] [16 + + +] +\openout2 = content/10_introduction.aux + (./content/10_introduction.tex +chapter 1. + +LaTeX Warning: Marginpar on page 1 moved. + + +LaTeX Warning: Marginpar on page 1 moved. + + +File: images/squirrel.jpg Graphic file (type jpg) + +Package luatex.def Info: images/squirrel.jpg used on input line 49. +(luatex.def) Requested size: 332.89856pt x 223.06395pt. + +Underfull \hbox (badness 4569) in paragraph at lines 52--52 +[][][]|\TU/lmr/m/n/10.95 A long de-scrip-tion of this squir-rel fig-ure. Im-age taken from + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 52--52 +[]$\TU/lmtt/m/n/10.95 http://commons.wikimedia.org/wiki/File:Sciurus-[]vulgaris_ + + [] + +[1 + + +] [2<./images/squirrel.jpg>]) +\openout2 = content/20_state.aux + (./content/20_state.tex +chapter 2. +[3 + + + + + + +] [4 + + +]) +\openout2 = content/30_design.aux + (./content/30_design.tex +chapter 3. +[5 + + + + +] [6 + + +]) +\openout2 = content/40_implementation.aux + (./content/40_implementation.tex +chapter 4. +[7 + + + + +] [8 + + +]) +\openout2 = content/50_evaluation.aux + (./content/50_evaluation.tex +chapter 5. +[9 + + + + +] [10 + + +]) +\openout2 = content/60_futurework.aux + (./content/60_futurework.tex +chapter 6. +[11 + + + + +] [12 + + +]) +\openout2 = content/70_conclusion.aux + (./content/70_conclusion.tex +chapter 7. +[13 + + + + +] [14 + + +]) +chapter without number + +AED: lastpage setting LastPage +[15 + + + +] (./bachelor.aux (./content/10_introduction.aux) (./content/20_state.aux) +(./content/30_design.aux) (./content/40_implementation.aux) +(./content/50_evaluation.aux) (./content/60_futurework.aux) +(./content/70_conclusion.aux)) +Package rerunfilecheck Info: File `bachelor.out' has not changed. +(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. +Package logreq Info: Writing requests to 'bachelor.run.xml'. + +\openout1 = bachelor.run.xml +) + +Here is how much of LuaTeX's memory you used: + 43640 strings out of 478824 + 100000,1977958 words of node,token memory allocated + 18683 words of node memory still in use: + 336 hlist, 34 vlist, 9 rule, 17 disc, 22 local_par, 439 glue, 9 kern, 30 pena +lty, 19 margin_kern, 191 glyph, 2417 attribute, 80 glue_spec, 1234 attribute_lis +t, 25 write, 22 save_pos, 753 pdf_literal, 2 pdf_action, 38 pdf_colorstack nodes + + avail lists: 1:5,2:1057,3:617,4:116,5:204,6:68,7:2968,8:112,9:451,10:13,11:11 +5 + 61331 multiletter control sequences out of 65536+600000 + 66 fonts using 6955727 bytes + 111i,17n,110p,10602b,2323s stack positions out of 5000i,500n,10000p,200000b,200000s + +Output written on bachelor.pdf (31 pages, 133100 bytes). + +PDF statistics: 379 PDF objects out of 1000 (max. 8388607) + 295 compressed objects within 3 object streams + 69 named destinations out of 1000 (max. 131072) + 296 words of extra memory for PDF output out of 10000 (max. 100000000) + diff --git a/thesis/bachelor.lot b/thesis/bachelor.lot new file mode 100644 index 0000000..a4ee631 --- /dev/null +++ b/thesis/bachelor.lot @@ -0,0 +1,15 @@ +\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax +\babel@toc {british}{} +\babel@toc {british}{} +\babel@toc {british}{} +\babel@toc {british}{} +\addvspace {10\p@ } +\contentsline {table}{\numberline {1.1}{\ignorespaces Some interesting numbers}}{1}{table.caption.10}% +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\addvspace {10\p@ } +\providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file diff --git a/thesis/bachelor.pdf b/thesis/bachelor.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5094fb7d2b890d14f8fb659995d761cd5ecaddec GIT binary patch literal 133100 zcmce;1CV7)+AiE>+paF#wr$(CZJS-TyKLJwyIftit-sEEGxs|;=EVFHabspjtet!3 z%Jt@Yxt?5^ZxYK1iBQwiFhdegEcPx8uFMP!K{Daf;oBNmKyq>6(<-^!8ROHc$r@M~ z8#>|BDmoiD{jEmC*1;N|_K)wswV=nR6%ep>!`J+}ln$Ss?tcz#d|GLJCkOLC>goUI z%-_Dh>J^L~ZJiwqjUDlszp50zNSRwX89RKHR{BoHLdJ%+Mqm9(8QYjTnc>qje$$_zmnG;0n^%#^~>7zJC32|Eyn>|9gC}{m1xV|F7~v z|Az+uGYX;q!wCL+8lh+S&vEkKwJrMpoN+Pyq3-{lP8j|$f&YwkF);pjIr$?@{)aeW z`R{V_hcW+WIAQ$51^;1P|0=|@ewq0H#`ymY@mVV4RY>&E8(Y;QaPV&tiDJq{Q`V6K zZJYzBDsP{ths>jQs1RyVb4FYb*Vna*cDy((w6<3%rw?wgUTF5{-1;?mv3Ry-wmo@- zsBmF2i7!7ExqVt~Nxu<%^J;eHWL(X@d{{{%^7H!!dG4(qKAn>;PhTT?`~13l3WkmX z<|rAoBlkxvJ=>KHu(k)M7m2H{UF>jL?k{j5QR%amOjQkb*|Wxmr5*UjUs zYgcocTNc)$cui<93#t?MO{;B?g;11xd-8<74vOA0o@<)|wLkeR`>m-h#&a}MWXOE2 zasjd{m%fw4=P}^CuxGz&7*SiKZtXkB@1ww;MsM#GIR!Cek`mCxq(Z%v03K zl2eK(7IQk#fT`0*o2n}F&s~pq-)DXv<&+koIBMQID7nk<)N<%Ep?kVX9|~>2IUfqc zHopEOuFF9Jt%pfT38m?*MiAUiQvJW@|8t1cQQf+8NU-c*f z-!sHM-rsF;x^l@BayX-82#+fbbG(9NGZ;&R7tv|7eRM-DLGwL4go9~~{hf5aD1!EB zClnS!mAH#;ZBV2w&>@w|)>=93Jg8I^L7&nfJE7s8t=rM}#zbH5T$!FfLpbIEQ`yxj zig#<<3+CLwyNR}72t3j^b483GEOjI~^=>3Y1 zn%XRskvRCWzZJ5!d(H~0H~s$42!-j-!S`Re2R-|ryaWG#-Gfn1OqEW~?vSB}ALyGQ z8OY9G^zp~DigpQ7xm5z>;fsT%a{i|g9 zDw+TI&+~PqgRPOX;TM&^H)In0pGGWSjsJGRS3{;R0xT?lKfVaCFn%3h^AG6V`pYyW}>8{C#9n!CI3T-e+J4dUl4_r zodN&<0>pptAYyCdgwOnUB=&WqhKj~cUm%+H3$1@)a$`5AuS@=*^$&o|%Kp~~nuq8A z*h;4Lq%>3jA3W&x>qmsY4bGBlv9mHff8|d>F#SBoA`zSjp`Rb#noD_M>>d4HSA2}x z%5kpmc^hXQ6e>k+@Zgw;iN;If1IWaJF3}pX$Au;z6l!+qpydwi#764$-k;AW4`p@| z&<(_fQK$~gAdVz4qmAU~0T9pvYC>W0_@X=W(+sXkj3s6Kc9WHO5KV_KA9+u-#z@uz z3=Gd|0#vrAs!-mxy2V`0x(32CygNV4Zr&rx$p2K8gt@i7tpkcAe)I0=?~_654!!*}LWqVpA2Wp@&Vj5}Z)KNy~57 z16aXSUGQ|R@_X)nw^o<>3%{2GTA_QKiFz8VKh&Ng!n2>&_muG1_}K92`0_$p!W=|A zf-O>*C9V?JJDoXCl;`i)5E<)j;pao%9~J%)gRM1yS{zfjB`TOcpM#iK+HPF{l%YX0 ze<9gFLymt)_A4U%<+$w6R;3+3ZZUw59P-E$Jbr8-H$SR{4=fPkPvwzkj@NS}PQgSm zM0N9U&tRPgwa=OPnR1IKzNXDt$>r`Wa<_f`v%#q*brGTmNJ@fGMXxldTlE-~u{jLb zwwoIFKqj`h4Bj28bFdxe64M;ijc@M{!OFTl&OYQ_s9JXGfu7R~J4X{o?PQVK{$1z&=#{X?*TO7a@JCobg(X3y2bW=+rqPkS_C>TwDhTBkk2 zCYaCk_GwRXPb(rcjP)bK10{lciU%Y&?3PpUv}xlb(o4wZHLt+-11*3V=`d_y}3w`yW|cObt2_vObF1SHq2{Yk8mR)a-09jk|85&>VmU(dU7j;FXU z9WU4qH!;XD@F4h6qx``w^hWR~r>3Ss{LldCSZlaTxg1KXa_c#~Nr2y0&0H|F+g}(K&`WRFK*Wi(0jrR$yWVS5{J#9hgqT@>F(3?oX z^XBa7U+Xb#r#L96^s&P8xQ_S=pOIe+$J^Dxjn(*)HTX_FSDhHCjEZ?$pFdNZHSQEBktyly4!x`=myF3^vlYes^39{dm{L88~E+2 zz9NB})Mk5|^NN8BF4i|B^V`;t;uRECJ`b-Dd;xQxW=rsI_c$}c8mv!$&KZ!`*`Zd+ z5f@mA90N;~`z`qh8$9e_?-f8%7>L?1^ltd<(CYAIaM5j$h-W~3*4g517&inoLrS7; z`j#9lvAFJydTNDsU!aSiQyE2=*urdjEk_Ib5kzonH_D3Z<(MJS+&@^IU7Vbmb#K4HoK9;lH!ZEL&aF3ySZj5b?W`x=Qzp}v zYu2qOYAd(?tY|RGYhT%?nn<)>$~>EZj{IfBB$n?dS8BGhRTfShadzLXx$)6dCQ;N# zx2~Z4>*V3VGD3IOEJ0$!+B$RZ!BV0-KWT0+NBCk{DFK^JQbAg>j4{DX5i{4n)sAvC z9<`YvJcGj%Vsqp71NmwwHcw8!0=Z}%gng@6py*(}vIg_z!fwz(^_dB2 ziy@QA0ci>ZRF3sRDJ5LoZudD*%~#60fQ#JE-#XHFi5D#^96UaOB&ufn7pRqQV~>#L z``;_)Hs;Ed>B>*rP2MVa&k>mg!zU}Fa)32rUi;yu3ZI-KY6n~p(SJfrV!GV7t?XYZ zR1FVz+6;1T@?PX*Vy>O2SY2F)S5#c9Q5Iowc#ID0Ehw_GGhI&dOfKOKCGmJ4Z&ux} zW=>6Zrpx_S?(@l?X`VgT*s&XBWWdQ81eJgy4rMrVsAXDbD(zDdXsDgqWUA^>8RnPc zM&Xe@GR^Ft$M%HVjgodWS$N%0TD#xq+)Y=iqdBrEirU&+9%@o>)gFV~Z8B%aW7oR4 z)>1Ehd}^r>kgtRiL7tS85GSbo1-ZZ~WxPHVpBXzh9}4RrM{!7TZ^O`k*3hQ;dVl#~ z_Z>ryY}Oj(SY&0Typ$UFr%$IrB~m1J;m&1AfUt%eJ##E)@qTNDN!fUxMYPkS1B$lv zxaCqVZ?2_zwn|s^kEQF6WGC>6JXJG!&aq4Mc3eHQStjt5z zj@dCqXRdLvu*qmLF(UhAZsXYERduJVOb)L(i<20VM%-wfEuMD7-e5I0D%oBMPQfio*n|9iaf`pxhhZYS{T5G zO+G1KQbe4eHs3%mv%3sj^P?04bg@EXf$F=aofJMH4$+w6-H!%*uJqtvN2&OgG&0!( zwGfdfVv3%wx)3S8m<0)+{3> zb2DhnPSwQ>t*VOnLsZoLI2LmZ8`4pmBS+EZZSk|x3;C(Bg*+mSmostBJqJ2y*5bw& zve>&#aOy=~PCuj8d^Cl7aq^nuF+FUNdx2$`*T~R?_#0AT@`VbA2(t+tXqJ}88y(IQ z1|7BPEMv|RV#V@gFIMq!>9uaJWdt`!LFVvQ#{IuF8l9@t83UHsIlxrV^# zCf~JY@R1)vzyLE^Co`l>(IqR;77-u1636i6ti1XeRiisZ>j-mGqdWwQkzrJ^gJ}*o zZ2ZQo`s5!4X51k=)XAX3NxemE7#TI*(h)tLvyITnL;VSZ@i;0*xiY01ms}DiVLXvI z`%}bN>pI0e>2mZbHR|!!ZSJN4kQQw!3Bg~Jv^_oQwROWugQGb5z+RAdTjjx?lAdNJ z0XF7tGR5k6jlo;n=OyBC&{Q|Yiv6_ht->AeuS4@jiR~WfhX_POb!5u4JLk zB;K*q{Nyx+$|d}cKLtdZT}&^H$?3jyOE=3y5&p^mK*kw^@n9pcc}vNEXCbR1rx5H0 zO(#<$qWSVS?XDdVvxO2F;Mx2aAj^xC%xaD`H#{OI_5hrDG;6Wx0|Jc*rD_Kxos5MH|itDXp*L~j#cQ0`OfCh168FX~8iX1$o*Y&*ts zJF#`bagr@j90QI76NHsbf?%+)^D-(T??cbhv+~xDr(D*JS}%D`(8~!#53y_W6u>xe zcyn5t8S0L7FZ;`bJ+Rko_~U|2AETBvnU142QD`78pn1H|{8Et5Q{{eFuUnCWu7fe- zuiF?ztzXC2qo;1f48D~q6GPRS#VU&U*Y8hD-PcRv!~G|5Zw_6Kc^oe-t>us0qCy0Vi)QbcSEF3WOQzqIp{e z>OphHyw?!bYcwE~-FqUSgp(CFR73|$1%0#HsbR78Ol)u^P`GqUaZ2|6%rqx#ZcNr^ z#G}USM7FOo1m$k+Ma%gkv!Wu(%CU)PAI%6WD#S%MWY&sBgWu*+-qEhV5jU+2wvqAS ze&WZ{=tbM=e&d5iyXL`Y-j?>G_I(l7<59ugym zw|j9gNv{#&E$0;fIkuJ;Y}sM%A+}LkF4clZQ{nFUt|=I;<-0n_AXoVP=?#dQW_?A> zgIuFr^A8S|?jEJ+<78?ze2J-r1>4Q%nlsx6Yr{1#TFB4ikI0zL`;EuLPt_%2px*80 z3|AiBHdL$&AE(E2;=^*7lR0G<*+b@(_4_MTo3yot;-=nuF4v12m;$9!P>oacdmD0Y z>5zq?U}IyFMDAe?@(7i7wdRGEFpov>u1v8QIbqTW=HWC#wZhEx^$8i>s>%_dY?mzo zv^`$c&~xXOU>teo3e*boJeJNWt&y)5GUW^*&= zP1g$#KBU6^6dTR8B*$r1-xno|*8`Q^tRd(EWY|s;HQ>>WCA*K8rYuYKPFDq3nq(CP z&c^a=?8H&%=YzLCK#jtco$<-(x_KZM-|rXH1G~XLQ4BC+P=3>Myqjor6xZ6fL7bXK zkgutsl+NBlY85$OV3*-L6K}e^ZCg+=l*kxisBm$;%oH}U#y zoF~rJvpD+I(<}rNIXu_|Z2R*ro(s?N{K@2m_pN3TLThQ(s*2Z9f)p${y zWeSbvMgFi@Hc?&G&My>}kE`k1ni0$+bPVJmYQ@ioxl>x7nqPYKdLi`pwa!jY8?FWg zrBD|wzZwrZI-3`C9|$u;O&W4Y~1hLh}Y_ z*z>I8zlVqbas+v-5ORSF12@l_;lIfAZ7|sqWhtEXct45eNj}wGMXZo~C{YyZcnddY z3-hAPe}L5ZgVBJ(PouHUwX^Kf^z5Xe(`1H&^-7?hXdnhTsRgyd&+0?mY;)kS%qTv> z;;{5#x5$P{+Yw{W=`-%_AmTLf!8V=Pfr`{BEI{b41nf3E-giP_a9!1r;fz!AjPMtyc7drc!E`^ox)sT`cJ%WyW)Rj;Us7HNhF`Eg*zg&O^u7=L8vEOPtHfLQ`9&Fq$xGRe8$ z{{$w!GOwXx?i^2sNf<29648Igjt*J1>_>fzX&z)^7ag)Joq+Ux!b#gaV3h9QQ@s-b z#9%ei?uVY)2wt~TIBX_H1R|VuBvC>h8vk+vI z1q>KbKz-wd9JzozA)_@q`sNF{sRjA4(~?GLIML?B(epfs2v2-mi6FxMwI9Hek_5=H z&_^Ucj8<}tDDfbPcjNth?d-skY{*2)G)q+q;*C<>AK`e^vSI?}82HGQ2?T51oH*gC zDGIH+(A%cmAW5bCQq|_Ec3+*E7&|y@iqg?Viv5A+-58^@3rIX9g z_Kd(&A{eu=<7D!}$0E|Q9LXjmGOFRg+&VCS zwDCjbh-;b^n`=pcEyE{cdJB4mfaF6qr~&$|MIogWtn&*{PR0?2DukE`Sxr(w{x@7g zmq4iFk3GY;i$j+JI_Sl?UiKW@%8*oBn8N0ymilvw8R-=|qTKK+ z{y8l{JHNsZ2$MQUrP(L1jp;)Q#wOZ5hH#8<%m@pJ=r-9#x=LNW!9J0~k0wazjk1nt$ z?%sFUM7ZGXV;k`+XA!pz6Vbe@sAu<&d1gEUn}l)DFdnfSoR=!B{I|kRo5jaPvaO<> zw8q4a@>JCaCz`nphFsUuzEb*t0e7X_+*lww(Kk}J^K>38l#v{{VW9YyNmdggXQB(G|#Lw8PV&s0&Yy@n$x zleC503-Zq2{647KEQ(10o5sgyAgzsM(<7JPrll1gG4~NbjuWdK+Y0gvIs3|!H-(RJ zWj+)S-nhEuwP{7L4=8cQ;kQuqH(lw~#H)YcM#OlRxj#;BQUZ9FD4o)Kek^-XRiRIB zpJ^lHgd2w$tmj@n@1%9IFjy|jsOD$LWW&7u2s?h?U1TiDH1Xnif!&D=(-Cn@i%CJ$5pWET zX|GKkM>}-`xi$}hWt!z|3f+RsEp*wIEV*h`G~*1Om6dx39+tV_Zv8BLI^1=ZnZEXn zh4LPrajdvhyIbiT-efm<+VG6HZN98@_;@i(yWJ=#&%CVgXg^dfKRSOuAGC$CEm+xA zPYj0|X^Ospgh>ivb4Ew|85wcl{wbL0(5Lw%S=#%2LV26X>sz$&>+@za1+JT_PMmQ2 zXgp-Jv_G~>i)l;p){xfJ$g?srwOZr4)l@R;WPabW<79r&cvIY|v`DtXp^r#})c!^; z1PS&#wgPNv=nLE+EXGR1494%*efg~ zl0jf%ur_cs)2ew`P3VPKFIs7&#CYcvP&QCB*abJfI$W*?KIs+|+%PV#ryAGG)pcm_ zC70TvS53jfGZBZ~MK37o>^kYpi**B!-?SdUls{-$p!R!84Co=ZYZCiq@ijB1q3cf8 zrtp;KC7WI76^d=veA{%ZY>TyR>Fs!PGDoFnrf0sV%f+wyVY~6kqN#@svrde~48}^G z)95LzU|MZk=LhZB@v3_rN-NSWLZ$>JM5Zyrqp&>mek6J??uYhN_?SG}kVM7d#d5+p;R2Kz>W{I9-|&Y9 zlVoTJ*Uzt-o!4J9NT`$#ui8XwJgRNg%BV|63vrsD6!@L{89tl!h_7?j*0$#xyce36 zS$3M7tW@mKR2F7zEKW(M+oynXXRtiV;BWqJ_j$B2OYhbxKfYLeIecBRoBW(s|pnukVs$X+o0JXs8vj;8~QL?Q#=3!-9VTs0ekH% z0Yo7%kuYM*R6%hp5s$*M&8njz>pWXlQ{t%+iDZ^#R!lX?{J{l>H&Lf$Rbo@u)4?3C z%~WEk1uVAie(UI=_o!=rl(6Q#CWz9>Cc415>kiu0i)zDo{`7`gZoPmHr+m_F^#MmT&B zX?~UR1kluYW5ixqJFY^e40xXXau-BzK7FSpNZ;?}=NGa2V&QdI3Vf*4&F!Fqa!9md z${FK7Uv3`zf@lF!=SGD%kU|J42Uh!@MwN)z?JRyX1BwC+>g^-;S8b($sqj2?NA;z8a{=jwrtFY)fV?_~ zpn1Uus^?d9>jdW@CTa7mfNl8&!_mJIWD@(R(0~uCku-OBT?w-R`T7Q;;Z5`qB9CwN zXs$r>=E{rrc$x*t_E;L-bLVe(Qz{A|Y>=?CwZ^2N{&Zb3s)%*(T&T(`TT^gWJ5 z(!9KiL1Stpr1Z1<&^q=gJ|y^kT?l_HiORT2b(tG-V{@L)!w=zhtP}1C)}Nzg6|?B0ktz>no2^Fyq+;~H^U1pZ^doRTf1@q!Q6Xm#LrEt&kRaiuxo43u#yj}9bNtCQ0s2E zN~=dr1z$o5N~-bb)9<)P9~)beVij^D}`EvG?SY-QZlWwnlH8u7+6DVJ|}r{@_49WNDvo zBiVhWW06z;$)==Vl9;qpT5pqzFO-3IV``5AFP8+9#m+6krK`FdwDU)|CQkP^EPPWxI|+co8jTG+jwhn4t0= zlIiO`e{WxW{$qXYxQm0FA$9T^%GY~-H)L74&y2|Acz`s>4b2psAo=ct3zDA76P#Nr zmR2!A7=?a=jgGW*NpTBei9-!nb+zo3u$=NE3k~rU(B8PJqE;?1-O=n|Jy#ZB6G@Dl zZoo=PG_>ZC2gb@85Wo$omWIgUilO>#I9ZFBTyCjX8-<6ptaMI399XgsF~4XW<)07v zS#Y9$(_=roeT9zkRu8v|!4iz=978OorA?5#xh+FLY}9k27d zQa7)PjSGMrDzUU=aT@Wi>MN)B%~%-A7HXy#KEa3(v&d+7mM=M=OSrUooKN{NdNMCS z4J11c7wQ`cpKBY>(hEZqPMWIHlGbV@*XE_XO9(-b$*ViQzEQEN;OZE6qIVp4REya5 zETKe>0m~Rv6I7(8H&1nSwP?T%FVAddtaz7Ox%d9Oi>0F5jj(|yyWxRZ0dH?sKYydr z!_vsBS8bX}KEU$OpFKCpU~kL9kbmie8VmCUODVqHqkrw6P^G^!{4_HaxG*Sxj)Q?U4v2IX$& zvqmdkm?IDY^-%(FEfekFASR2M#a)#JU5Y(1Lg*%6l_UCS^hE`2Ao}q4xkCgO2Ju69 zBeoF}F{=y2)x1XpNh0d}xPpN-L(D$-El%UA*7pu~tV-dm=lg)U)g6;6!7rNCh`zR# zk-^fyZVe;=kJ#Nt|LPim!hhsMFk2pn0(Dw zn`%qL6bl9!8LPa#11Y7HTMjsh^5g=NUEOoYW?Tcv$>tqAuX{LPPt!zA>6%Sx%B=g_ zBD6IoP%+BmiFL1z1|}P{&m%~n%n2(#G$0Ka?<9>L3r)vO!gz~ zMNKlecE(c}*K08A$I+`&3@zUlAhG-nh|t=!)RQ+-msMYN`V|z(TLT0m33SF4EK+jn zj9%YExz_KN@E7yGTnKLxrwqH%pmYdX#{~lcx*e35gmsVF_tQiZ^4O9p*CcIAV!cvU zR^@8ri15RdaoHS^>gJBTJT1gA%%9zzlqmzD1FF5Si*&meHJIh)Fb@3ut^9@6(aO)t zg8mE{iyrN?dQBV^0{&)=0rcHW%iB6i%qKE$$EDMgG_cK(S}2FgdE1u9F{X>Qzi) zV87D~qB;>$Dzp$Wp>zBcj_hs6Xeq`v@FSX&Fd(Hs7MisZ({z?91p&ystDqYh&d3B+ zF(_|W=^C3(W}DHPn;UBQ6Ur=BD76 zlI75dOGD(?uG}4D6fDDDUNoH1IDU&flzG?`u+7HW260uOL&3+C9t7147au|US@mo} z^$oHT-D=qCs434%ux1B~Wx?vH2_|-p&RlSd!h4whqh;jRFuPZ9fh2a8ZW8Vu)$YA~ zt2vT!vutGc4a~cRjfJ&f5k=_zkh!4gxXPGTha#QU3M#dIOOUPhE0B%Zr<-tjc?Z9f zbq&`u|1I8TLrO=JSInX0J&LdNt1+S1us67b#28d$#Ld_(1r8Ramw&XJz=-vJ7hkV+ z6HEZU_|lG_5&L;hB&?Q0?x6p6kBdMIC*5&RE|52@6KBn+e;p7`rgX)#GEME~c6vIH zY;{5P7F%g!WXY#o)BMunfTn75EKlXz8QJJYaOKOyT*zv^(!LI_@Jzv>Elo-{S@ z)5O@m?(mo$n)w;Y4R#itwZcEFL;$8)O7!XK_6bkwBf%zo24#Y!BdiC&Li92NirQb9j zEtIvTi2D)^O21KPLvDB>dtYtJjuZQc(!EdYzS{RAyeH*3>jEhbeck znxbYlTXA=@I7LfO?{b-@^?gdbMc4c=VDgvUinT?d&Ada&Xky2t&Aa>X98c_jI)l>X zc0{~myu}!61P)n;Sz6bkBCAO{Q0uj*g%nOuMwXyT7SQc6n4%sj`8C}foswUGyixQt z)25h(Ls40YTM=oBieH z{-+r-FU?1oCNqEZh3Yq`7C%6=F47Mi??kmh)qESyLH9xJ?1^xJ`7YrPh zxCsQDRFl$1Jf6@6Siw81`4I%>_Y+t#Go9A>8x=dL1wi&Ea%2J}g&aDw zp;ci{oz@_*NSZpa!P%tvl=eUORTq9P=p$J%ek8)8^}M^2e31sbQSnCUP438X87?+R zTj`Il!B$}`!6`=jp|@mqHJbjW*y}YA6Re_x{xSL2>+2DPW(IiS(`PoairfU zUv+X}-1}N?m(PkIAt_0epmb%=&d9<=L;74Ml;GNqh?sSRRdPLQ3rV~PV{UF`eZ?iq zz21t7y4-=JD1?yF;)I`_-rW$}fr0@=(v*OlVCeUa+OAl^nIdDnn~2J;zPppOy`2LC zYJ{BuS;E*)qRbH?@;NXQ#abseRD;dAXiJES@*y!22DJD~6~;6%4ungk`MpR2tmr|c zV~=M&Ce(;Au*C-Km_kEEdjlEl1lxu9@Nxy3Yd3=!sVU(T@{6zW7EbhF$sUuW`f@U( zJad0ScDRv3Z5#);cbEoCB2gv8$!xD0iA0Pkfw{ZwUM^Q=s{HPj*+hsyV_ISQSZ$gS z1^uw0l~|}kyjW&tslGD-3(k04?@dY0|_A2oZOi+5V>i z$a+ob#{+lR?k02BVnh>M3M-EB<_ZME^Wg)5R5_zU5r8nJ`7oyhIZ^|Rh3RpNcBzOZ z7Q_Pej1{s<2NM={7Gz2IIu06>aY<=ThD?d#Hm$c5a-k5u*Wi6xw#>~;?jO6b>mDp3ZcdKthZ~twS4@Y_h}lcGV@p;)MC0)( z$_M!)f}W!t)b{V89j#dm?X?{Pie)~;cZ)>$t6MGMVncGzp44iSunjzI&=>>L!Ag|~9{YozV(S^HkbctJ)G+eqSkB#+(4(4> zD{#>x_+CnVL0rcC8(a=l(-xtJ^ktEw!FDogJ&G1@Mg{3S*XA9^nmw+y8}+bNW7?mGD(4_^i^2j-KYx}rzXT)*8cm*MadbH>Bmn8 zifUVdWyu>w@`7Q8{zuUtvU-S3^JtQ2!oxh#Ua-rT>2Y1AnD?pLpO)OHstKxg?;m27 zgA9W7ut)8@T}`JZ%ja8*GEp-aOg+<)g*?1EoenqBs4G>i&l6S$rU%jLMkVwjZXv^o z2aQ&H>{1B6aa_EeX89X#h3HDKO4WN-`sWK;zct*yMBLHt&#e-HVjx z3>(Y#1ivgYjs3Vo+z^zFjd?_nkp(xP@rJnEe!Mla%ju0=zPh(0)9vr?7TvnE|LEMk zgy?QnICVQ7d#3E$Zr{D^x~p2bqerjav2OQ(6Fnb4h~5kr&1eoaz4si7K`l$IPVdM;v3rlHYRXPEMRd~yx$ z=00>too1hch+zygh0Q?-q|JQ>8HNhDlwJB|$c6^b$pU*5t$$yGY?Q!_s9*i0d zwxv0I*EhJh|Sgv)0rQFqH< zYBuF;$$~Z`?d`Vt9`&qj7cNnWGv2T1*smTII9M8y!$cA*d;uo2-(A824FtGIve6u) z`@1BD;VUD%D0zC%$0@JU!Eger_^;2#gk1}_#Frk39w#mlUOO6NHnXi^9b*fI7jHeL z*SIeq_M#rQ9q$gkM?E(w+d3O*s@F7+?>09r@hGhuqt$1*Ow5^MA;h9>g6UJ-2dPpg zcMtkaW}$KLCsOi*Os}7QABkyefBsre+VPn@YM1RN)VK$4Zx4MiXBTBcUvtgzMYyi_ zACAQho{E0g7!T8hvVp#{)CXLLP9^QBv#&+w06KOmj?q<96}_U`$g^pR2?Lu`r>MBj zqlq@>$e+`KI8Eh46>VFl$3;lRO?dEUs=+c`GEPc$(O?};s%M4$f%AkHfPV@8&u>dv z{+!MCA4-j3`Sbehf7J&Q-5<-b|2YBKS!vuRhz`2rQgsh3`JQm^`*$KT$)fC5<<6#( zkIzPyaQD*kMT&v66-Gm#7Cf+vchD4PEt}Y1o}pd(cq7zXtUrM4jub3b2VxA?^aPsU z+NNRg@xLMY$$lHCOF4`K0F7HAs#RABzb3Oh!f21EW*a=^A>;YM<)QkhPr>eX)}0(1 zy=zF~0xk{uOfKjyrJ7951W{1CXKJjUBw{$Tm8STZ4wU#ES=LaNQbTFhh_no0tLy>I zEqdr;8!XL*d($5r z#j-c;G;_w!;as9`%>LPwz7jHc=v z-+mB`zrczwf!1IF0)_Y$;B>%|D5XfBUW5iX3FPzfo9d_;&I0w@Z$96fk8j6p7TUzK z7~80}>qMzJlhW8Hr5=BYDp$rgP7RwIOF?)m7)qr|-R>}T1RT4CP?+E^WOBXv1Fkhz zFIT^G%C+>MdjShfJ%8`Flq5n&DOf0r3Yjeb^k(ZN-s+mxou6*g(Wp4jZw}j14rm;< zS-M(k(iq*&XpYy;6?|D)ydz$%KwR)xh;o?X15nc6Vzkc z1!@ZY{pDNb5LwieBeIzRrpu8N>w*~T4eOW{I7QU*YAjBZlN)1DhCIgnbmWB!G0QJ) zZ?g@5vJG(wI*pbqU!2H64$7ov(E8?ZY7ops4c>5dW+Fh=63-dOu*B&?j0 zgX=^)rS4Pm&M2--MRk%(mUd9nyiZ-X`x0{tuB5)%^Bl$RO^nuO35thxtXbmdjzly) z2C=lLnqa9wnnz?KG71$OR-nj5cS5(vji;AwkGe}yv2^~~ zCfWWAHc3zSZ)e{!F#M%ao~QK2{HB8rx#SYo@r&AJlOf2Hs9~&VFtsV~yvTldueKzW z&dURGaybZ*6NajMC(Suu)%!rF+hU#Z#*@iNA&lp*nLwY(^s&u+0~$*EVI{UnCn~u& zd0hS63e>~RXZP)n!;N$~6M$=~8Y5J<1W$EJCq`_@e-b~3SQgic&nla2%-=$~5>_+k zt?K2WR@=Sm@hNcqmI6$PIV<2G3{jJ4*)u|?f~_{Z{dshb!XrbPs|Mu3a=;OjVZ8a3 zWUUNw&hYnPwh|ZKvKY*$ddLhkFm@A$pt}8jSTy0!J$ue8wPtj;K zfO=Pfe%g=_pt`gbU>Q`voXL^+G8eF)FYEk4FLl*b7rOy-*3j~Jvi&UIxTbj?t=M7n z_pz%0Xg0ZbV2ywVa9Qza>?mg-n-+3+Q@O6h(Diajn`i+y3ff`PiH-%^06TN|hUpd* zwkXW~Uwxkp!DUnNK-US|VbF`b{V02QWc~J;-9WhlD~=%R1i9~oOJ~N*#VCCFd0Y=hG{0oUnHrVx<)uGOr2K%~5T0hFX!*60Qo*6!&m$*COoG*XW z2}N0|+$n3fk1ZXjG&Qy>C8Uos-DIn!;P=M+v}d@TUFlOjRae5UTXA~|zcNcR)P^*5 zySZt>c4ZZ`MB}=8Y)>W2mIsNo775MwyDwE*1{dBQD3h1BUX zy}7Ku0rAs^g#EK0(*Iw(2KKy`QJ=GIPy2|(eGJ$QND zbAUoOHK_RxOo&Lun0BgrdyBzmkimAi*$C6B)iZtt@8$D573shxUE%fg#Zc??IKT*d z1^Ag&lS~6|6x{zl%sDTYv4>6*5P!lFejoKQUA3r9WUG9^*?2OfqbnuWdKVyOuA6G( zM07`}-D1pg7|WAkfN6mBOW5J~P|O-2i_L(X}9CxHK0~y{co5Z#*PeK(;wZ z!bgsp(8bwET^uoU-w!>^?y{2dxN^fc@!HONdj(cuU<1?yx|skwqCjV&6JnreqQc)a z+^jx^MGUHLKoJAjO_EmA3b&R$j!tz{f#kkjHCm@KM+~L_#9u72HB=wI6oN9Qj~hb@ zh-Ms@Ekb`&@Le)0C%0R?UX|HkJAJ5O1a+CyhjJ+UVK@T>!I)1mda! zjGgS$(s5Te_U}lt1A}UVF$aGy132oPii1_h#SCrjLsqrtYk=L&^4DA5f_t&taRO?A zfh}`h9||DH8S&~qb0iK{H4e=TZJ=%+!^*v95DKN}#BJ6c_Zsl`6r@{D+FHWj-lLwu zfe!jUAkmz+guHs6p-WD-OWZs_XtWXy+%RJEy=u6!Ca0jDeFFh4inZ@JQ7#V<%?5uM z%&!w8)v^qpDxlw(XL9>TcAQn;bppcCyy!uCx3(-Ew-Q$TUw8}izYBBzAD|TdzYYBv zSpU2+(EnKAsTT0 z37W)*ot2SihRYS3!OkSvwL1`(jE9E5&?L*h8Y~_ZS$N{xa_EEAZO@ zeg7I@QNH;T2hxKUhV`@jlHk6qJZa><|6EQdu9#!u{TXL$Xu{P5eH6)8jfDGFCtac( zgf5drIRC)z?g`*N_G=JZjF~;2Z;iDx2SD5e+N@sTFfQM?089Xrb+R$c{S(lR&Z}uT zOOdy!S@5mF0Uu6P?@;HLpcVo#j9t9Dm?$NJNOK*Fc)AYs7Ug0=#B8 zRtH>lIBSynH@hzxe{{wZ4om$0DYgb2BObnYmA2Er6PJ)BM*u1MwIo+mvsc};BbTh9 z?uj5z+X+xOqyd!!d{-Nh1EQSJhC&}^(4W3fL!wWuFq;zU6uC-%x*&egc}6}pj47AF zMmQr#@HL1w^aj~am=NoC55|sEk9R2CUY;bH+!0EN*~GGrV2hnRh<}Bo9H4S10U|Em ze#g~Q+$<2DJP5wGK!i^R(xw?9pb%gSxY=O^D!{oGG=ZIBtb-B^Jmz-}fgC@V*Hgyg=~p>V*5gLL5PK@$&t9x0Exk1!At`GA8Bs^7Dw~!jV|u)t_egww5o$A_| zg3Bu!H9ZfH5)sOh3O%C47d0Xzf3T0-fNUt5I5|;7B~`$aE#xg6P)aP}YznugPtFK8 zo(1%bVgWr1Kpwu5Py9U$3)CPUrVx<{ERvFZ=qo|*+E9XzIM7fHPRP$AxUhrq!ggIv zW`%s^*$?ozG%RC9kSeGif+a(@UG#ZhFpOl z)M?%;ipYOgfi;i8s-6DM?~adEn6o2QUM&{vf?l8(kwSis4`=$1Rxz#!hUfVN^-j^l?gww>LCHmNM+I8fFU) zYuVj30`t>mA8Bb;kKcX>?wdXh3URwoUl27r9k(qQPh0e7T2@>_!CiE5kWCw!JmR-8 zc{9OS^4{h(k#a{@6^e2WURp-!q8Us+RfGTs+Ib&+Mzi@#rIvNpZlArd3m+ZAF@6z3 z8RuasqW16<6WNM=CFU?#L*c5=#|4WI_RsfC;X-Ns zHYdboINc;E?@;aYr-)6%+9c~V+dQ;+j@+kC+0R=XZN0`N24iaR1&NC`&acC0^|Rky zyLJoJP#^UK`93}DwVj7K>79x4F&0I21TAi7YVzx=hJENKObq)TX__sG=uecR{visH z(;`Mmx(9z!I$O1^X&xd{G!BxOF4S7(sR!K%to!0J05TqZ*JI7Rtz1leYrcED=wrsY_yVd z{5H0Jt_&ZY7eFTUh_E%!oMn9B!F8IX?k%41F{}O#O@dJwa4UD_L*0Srtz&pQa_Nkj z|Jeha;B=3lWCzag;h@)lMCk6uP0gbg;Qd#FsqLg*5aHviGpI(i$#e`&%?L0eni5 z3Stopd7>+6=;w=yfvR*KyJ1anQ})dQSrfHG$pXZg7p#^OgI?>#x~y|_5*35gv#W*p z{$=L{TFa^u)TJqjRy2P;oaVkTLs&vGe;=56z9=&D)0_CPoV9V=+tk~u5&_rs++OK5 zX+2^oXEZr^`f8ADJ4saMNG>thYOPly$f-v|q82BfJ17mX| zQV{dU(MgYo5-|A782HL8q{6dWhJ66}ps6eauk>Y(9yZ9CE>W~)wTwVne!ConRx0{z z#dnplv*>oS&=i#%%ekr9A92Slo3W%du$j5AAAwc9;|tlJy1p5?lG_({BX?WT=^ir4 zDA+KcHO|$HUTT0diNdeVH=k&DX~9JgQic+-E#zU6Av)Arlfm){1vJ$?lBdY9oPz}h z85b_p2wTmHUefZwdI_?%={>}8-+E7fNpYcT+?l_0L$tfg`n-p}S|v|O0AH0i`#=k8 z-b}ov<&3d*K@jEB{dUe$qsTFB4q)LaDm$8FsgHy zuTR>zVWp94Q-!boZNrKOivw*@*M41s+R8S;VBjM{1mT{?b-m++Q`BU!`(qOJam6KZ$QGeq-)V#Fm5X3K zygSarh9mWnMM2YP%i%i=rVz~V~VFxlW?|*{SIq8Tew~&~93dxi=VWz>@y(Y=QKdH@r@F4LT;8n^PBIJ)N3HTjxi);KG0pIN1NB-!` z3-|07cMc#|IFVWI()7426$_opzbYcQ?qv754rd~8xLo&IFfw3R$Um`2W8c9d4U zseUYhyjVT7*!8_FY{&cSlJE^n-S%Kx;6R)wlY+MmE61Y~jckphr}j0a)%~ZF)B;yY zM~B+-*wSI*Kn_{d?>|BYPWM+-FG5341@VG$Yt?Py_1`2xL~QWA!ALICU- z(bu@;Wkwb*iK3$}f2@KN8&a_c0f5!hk>L2VrBF;y%IzAxU`$0Cd3r`ry3)SvJG>G& zTVyNYte|womlp492c}CpVSF9)&P~7BUbY8oVA*(G#LRAtuUo=-KK4oxEaq%eCul0p z^Fns4c_3m~&c-@pA(X?Js`1Xfi{t3MnDq+yGXC8)i>851k|em6XcM4@pijFi)TIl$ z6L}Gwn&t3w!U@BWxL!gJ{$iK&G@As6TST*9qp&u)b}nN=mn zb_12>T6uC~KI*+z<$_nVB9|JY?l1e2(tY4!QL0^<$=I8TK--tn*wImM6@4E&$2G5d zo8`dx1=UuKTZiJa-fM&cTXZQw>0=)q!zH9c@WVMbG$n3=C|y9X8BVY+G#vBKS}$ZW zC6ioHQsL_CgGgg6+gKBN*3qz&1PEH%PU?-S$Rv@w1V6M7Mvk#Xc!z+gK^obhw_tec5!#7~Q5muN0I@7~-&S(NfhX2--MMee4w5el5LEq${KWs<6Kp?7#rnAJ>Wyno{GdQ%bUh$ z7qR+1>qz<@-1zp4Y+GtAiH;T%>hM=5Vw2HRc;<1mqHEL15RfJBTqwVs$ib4JOi7a& zXg>&lD%skZ!;f(%CzX_$gB05;;OC+pZ8;K-cg7LzahrR6lnaOH64C|l**!{7%0Z6V?Lr#6pm4L zKQppb2!;Qq@;WGy3DsfcBV@)y&}7H%r=`9aF3>Bx1WnPsg!z=nI7%G(-@FIRGpM!Q z7%aNCzO-tWLKuP7RMczm#^u6J6HVRoYN%u1f3@DUi_SmL(VAH15a!S|d>5pEV`l5s zs8wHiG+Al3#fvjwJ}i}Gx3tMRG%91M@7_5_X#S1i@-$l!NNO8MuiSddw_AFCwR#8j zy1m-YepmX$T6jFAPs}Tn@-TF-%nF&~Adi;U{QN{D8uxf*yv<1*V#Be0r|7kYR|(0K zJdQWoy^g`df_aQ^uVp>?gHF_Yd^snM__fU%)e=Re5V|;D%(%jK##~YZ^f$ho0($=G zwWwH-&$q>;-xrQP(WVKScD2uLBr{L-)y$y5I&^O??4wRsOp^6!W{89zVa+A_^b&`K zpLcXhY6^-?{WJs9i#)hq)f zXm@?*K!Xfvy}DoxMl1L}WsW&AH|V;PlDM5iLspm>?g?*!Iy$dtXOmYFN;DxU7<}gK z&%w~21Ms&gvZ4-~S4Mt(_uSlqo0b99rdQE) zt1QRGMYX#YJd^CkkGoZHYn-~>oWl01qRX+0)hB(xqEBQKAay{-_hjaD}lIM?KW$BGoA?qXaY=dk={Xk(Rn2 z82kt88;(oZfi;W*9%_t&^4ExUeH5)`2f5$7sworny|)z{FCn7d+Z#DsahK@8zh4u< z*0L%rIt5o@Vq@hPr$yN+a#*OAjanP<*5!nNW-OatnWPK6@>PqhdnM`MYN@-`72zAt zyh=+@ctcenv2v2<#B@VxoB@@5{b_mk$3{`ESW4?c%Guk8%`}&(ORqN_>!bp`es+S_ z0q6YBu=1Uhcj#QLbYjdo&YUfFI(M?p>l@E8qa!e`YWTa2rE$hFlq2CH6cvif<-uE> zoG!xN^W|rz#$;E$Si^%53>Uzep_{qJx9`u4MEdoN%stsvmn>9`7P5|1VpRZSVX{2U zsow=+N5sDml1NLTRKlte=;8EMWLC_mqNIL8H?8~1IdL&R@pg!C`8G-7;1nP&GeD?) zCAD{>2Cl|@FfD$pbm-EM5lMqOrcx^kH+5!RbAnC(>ijdrB9eCDe|Pv;nE%(oZYEaN z|0%|nr6y;;!iCuJpuUfyks#>{-VHdHEm~Ns9k1M{>32hsi#j!Ze&Rpuy;(>?Y)nO? zS5m;dlT>0k%wRd}W#U6|H#ahknSd6!ew;U8HhvGvlD4fWmg54i#`n2w@^&EjfQhB< zO8C1cOX!RtrAW82EDEjwzA@Dpb3B}J)RSjNkFi)Z8buhldj*#PHC&G%ic7HZER}O0 zMhg#dC$B#taZZ?iR6_v+l*Up0q*6yaa?WRiO}ZrsQ?|W=Cx$QTJM>IsdC$7O_}S1i zL;K&Vrdh0WBwN;9q@`S*@FfS=W$EKxKg(*dn8ruD>3ZD`ma7-%ESP_uaT~0$=dQZ( z;S`^>-fMTWi$#NRpkxMn-Ux=CNM&sKU~hOX_njyckVLTR(yn3Jkn1V*mE((BfLKqL z6;c;dUWVMdoO0h)V zXt5)gOC{wd&gC#1=A2oncfi*&paACR%0O@eAxdi~Lm#lCHm_B$?dBsYiWB>)_EC9k z8gdQropVpVj~TisLl|MCgv9g`Yk`Fh_Ke0tXRx&);5UaT=+I~8q!b(&XM0)9^VHi{ zRbeNI%xY50B&P@Va_%mr&f7^M`d|dVUe|$hse%qGE~m155bMxd8Gox;O`RATQ0PSs z5GV;GmhQeN(I8L3BP!#9?K{jI{%|k_L&Or)f>xF|$)DG=itRj|-Qh|d0O1{{g<&w^ zdXNXc`MG*C*IT(a2|vYG$;8%Vg5|dKVd^J}xVJO_in0UeR!LH^$XfeWUvKsmyK^Na zA(dM+@^Q`7YFRSTw~daEeDuYZG>M6=Yu8EwcnxzdrF_zpt4&FgGFIrfR_dd@KDAmq z#zjr#3T;bkEChP|l^PbZjH3L>Tw^-VmvXZcIm%1j`g7ch(TTjsWVK{sVov+Qv^2FC zemG=bx1inX9Qr)RBNz;Xc#g7kG~eRtghytEzWH(%m>ewAC&}+IP3SyhUK2Jr&b`?h z8!%MbVe%RM{w70kbs{CJg{N3g`n7@;f2M*{tAn$3T&;q7lAEY4OIoso-PHG;3bEuk z$Q)F#to)ATI#6R6%vXEM#&mb*UVAsfGu9PzvrQ1sZljS5+@=|fdl1CVS@k?@akdE7 zQ+5Uu$`74o=&1UHaWdW%TTFKE^dP~^Cif?efISJ&;&FbnsZ5D0H+r%oA}6$ni!l~1 z8hpOBK$vNZ_RjZyusGV^XWvR_5n8^Bc-GUEQ9r`}Oq8HKzjc`Yh(d2o%s3xDgUvQEhy75=^J%R6VU&_03{tJeIsdVX>Q>{%F4VPk zxA=MCc^!Z%EiNSv00V9GVDtdM^TsQnn1`hq03as^palQ`umE^46aY8~p@a5NFw|cd z0fbY*&;byj5)AYQ0K*4B{lWl10T{vGxB`s&4-ZHJ81t`d;X!=$U@X5dCJ1+eWBkJt zW(k1&BWD@_Kw6iVl2MQ+6;V)DR8SUDl~Rxg{HBPqF=>GK053ZKs{dE1X6nSq%m^|b z0F<+t>n#(}r5Sj0VAkKbE1dj~1|VVKRKGE_AOH{#0KkAq zkW4Hr%<&L^X$(FT5BWDn;H9M?+kpQ_g!+pP0Z4@TQy0iy ziLn3Fn+W#@qk`!0fAhm8`n<@8cLe|-P!mIc)dgxRQfOlQFC8G5m_Ymq|H6s?;E#Xl z5Beu9AHn{}2Wj*X{5M7+1!0Ka82$xA{bhZmo;;jC{Ggu8|1AgXrMvTgw-*c~29OW> zZ!Dk!7Nk#Y!C&%0gn~cvK@d>zNB%Di3HUQgkXj3%e#?L9!2;+%b-nQaWgk$z1^=>7 z!C&@y;er1bKjJ_5r4G;rvO5GRs04L60RDd(3I7uf#QWFC13>^ZXlDWKAXzY9UP^gO zYkRw2ru}4@hg!$oV~1Kr+DPK~h1q7aM`Af?EHAkw91nRKp7f zT@P*v`uqz!fH?o+aRQ?hp`f|@56|z}2C4(3C-yI$U*t3caQ?+Z@QePUTNi-nmkuxbPXLI2(SOZ&0Ld@@ z7y29^;1>@Z2(JNxe(4B?{Gw;@-+Jx=!hX|V$bj(Qb%B%s14R6h`9hEUgI_EV^_zzW z4AhpGzvM%}fF|Y3Sr8Ed6_D`40~rFsgn-0<*(doI4`{5xdZO~NPzH1J>S{oCfnf7uh=7Etm_4i<u89Q-)}k_8Sj`irt)9)HR|%KxH)FaUr;`ZCW^1mU?}_7@5V6DKq1 z4gz2TeMh|T{iOj2g1-iR{5=6cnELne?};U+AS%Xc2+~DfNEN6oB>PJ*P_le(d++m| z4(!&ngupKZ3GP38*kLu+g;?xx=HWDrX0#tfQpPs&bE7zTzri^L~#yG9-# z-6qe#3>!yH9MLT~>BhS>lj!S9F`uPUB<+(^iqSt-NDR2arIqc8aNpUUlJG`+Fq#Hf zgBg_w+brnhV71;keP}Usw}h>Dj_Th2_H(M#^fN;7;?%MjBJ1)a!VYA~+FrikE_Ze9 z)$%|#{Wvf_5rqV)C)YrfA*ePEqrtcCkTZcr5AKJC9bM;HWLEQ3i9U>1xnqOP(@Z6l zM9BBJw%S}t!Yz$;1l73IE(En|#@@IJE=JMX9^BLm7(;6su`1|Hwxy2h;+ulE_lVW? zoueyzDzyEBw9acoyk3`P*SKV@`8qywBfyEkJ0$&gJ$~yR8Tq_?69M=hPuF^U+*knL zr()Ho!uN57bL0^SuMJp9)oYw^FONUys*Jc_Dh_4QBw}Ay2iLclQsoJN-T(#+qZmTp}4%RZLtx_G>s_yw=RE92fDSwr{y#|O7xQwWCN z#*QAHEtM){_{@{Y>H(Rnaf=i8$pyojbgTs%i%Qa_^@EA^wiX#aqkF^?pm|XmmCS5i zrfLgRP1>sj!UcTYQ9yBd^X&%w%z7w&228q&VbDhwm6BwxZn1WxR=mGOx=))@fUR~+ zyl4-FsHFQKd=56GxpS()Z=#y>{oGH8hhqe~PxzKuBa{`0(N#2CwF{eHN{s+U`@-nIu?Gz7 zJzu|^FiAJ9fi^a}!0r>#Sz|{a@b0}U@Kc8vaCr|1 zbTJZBUtfl*gLpm5i$Dit#pu!-TTShpciOqmb}JfLs{ za?SvOX`^C5lr11Tn=cm7TNv0)i3=2ao$3k%gK-67gMspFe*ubhO96pqW9q7-kU-$K zDd22j98mZ73{~^=vk|zCw-S7~qz5M}R9J~CI)UE14-fIppp<8h!!vLgRhWP+d>Zjs`@xlsVKjvyQN-pNhwKU&A8oYgYxO^ zk4Etf@#zHQC3hb&3AY?$gT@Mr9s|Erh0NDIQGw3>%6Fn;S?KnlZ>?3?qHP#v(5+Ax zbn7$urvx4Smko6PeDN1ww&&jk==0C5`LE*do9iFKuVZR)Ss@ikQqZ8K`E?Wi`{EZM zq#`0E_1^{kCGbB=kiP*A2L9Ut09^tGI)2$f4w5oA=vM#RSBHGL&x2?ncL?Op|6ad= z9LImwZ^&=|S-&9*gZ*p$1`hU@2ZSsQ4*nO$f%y0O?U&^LvMT$Jb>@p+AUETA86X0H zg@%TKhJuBGfq{dAg-66hLPS77#6!nG!6d>bAtu5nBqXI|q#`A!rywMx=A@x#VrFAw zBcbBv<6_}uWMyM{5dsDW2ZxA&h>L`T%R)v-#`1r?J$C`nU_nl69|RaV02~br0uAiB z59Hhez@T1M#b7T!(XS1(z=MQ>hJl5HM*uN2fEL1F5D?&y5KvH%AO{-E_hkVHi3WvE z#w-Mlp=1a{?uf|}kdO;YAzagqr95>;$!g>j2nUaigNuj%>NOQL4J{ix2PYTzTMJ-vPX1A{}uBhxcqXXoY@7MC_Qx3+h7_x2AC&o3^ou5WIC+<|_6 z1(1MNX}_EGcgy}uyU<<+5hNr8B+N^@z`)%>I|Lde6d5x#x{wl#p(6%4O8_jUa6)cP zHyj14@)?$q(-b^5CELcU^OvUmYT5s;VS)djTK0Ft{%O||01*N-)X^Z&00Mx+2A)~i zJ~W-+bNbWiChihDS4%2_%y*sdW>U7s0;J7a=q58aon;#e7El@)H@bP%OD*5Znqozs z>zUiqgzjRSb*W(;-SY+ZvIDL>GMgOP6E&)fSQQ81Ajq%+hjIo}HMcU@{U zSZd-5v0ZU}txwUIm>MFYrL$n=4ismSM;T4%uDVb_($SWt47a7oM4Lb4i7RGTJEW5- z>BA2x>pAI>8x5$a>7v)$%R-=Hl|7lcOUNik9nz$h!le6lU~-u=Fo?!5dI-SGBU2Kz0h5aXc&UEK}gnru31aZC6HCEG0O zuX>y8@lq4qc-4Yu#j(@4YIECjhu3oyOVmzX=t( z;Cejbzf|Xx*s%%HGe^J;w@IIiQcc9w9C?gn(TD|9eTZnC#lf$VAJkyl#^zPm-gxlX z4R4twg004h8^l&wLooMLVvS=$dGBjI_sCo--sqU@YGQc%ew$>VEVE@TOo6hrVWR$R zN=VH`r~e`;sx^tqRE0fOUyT&PCjmB}plgVGwc2lj>OB2o9K|MOA|qi-jd3jA1pMMn zyww_0uWG;T$n5p(LBhZbJp)`@NU}WFNAGXoj|^tK^Yv4-uaVNn`4c`W7A@64D%Kypx>$}dz;IR zuUCG)5`D+1AKMO3J8#{uc`wJ`>L3Ur5Lv{9ywjGLIetZgCY4zj`h1q}8K8B__6!J* z!-|x_{|?k&lgPZCP@n0b5ocMznmS6BP)ZidlgdV@;xCRn(i#5{SAVzjntM)z1hF`u zs)W44BMjImhyUFs4PM!#dlIVUG48V9cLI|e zn*7AG=v(qFwtWSh^f^r316`|6^@x@H$@FnM`X8^C7b5V9lj}j~Y zP;moRo)QeyyS$p399mwK(MVzbzm0xH0ge;nc!YBb_!p##^kU#*X(6}_UxEfV0wvbz0-Bq=J>dxhdGJF_U2V4K%H(kGvsc&ku@j2) zM4a3q2_|L&z4mfOT6y%bzNf=sIC}JS!5s>1KbX_P5NBVnd-;{!)YhnxnF`19iP>4) zw^f{<#-G#JU<}HC&a#E?z(Wshl9=_b!DQNYV0l`1BZd%)2QEAx8D;|-}3pj&&xS_OfdyWT^4dD#GUQ^kl46WoNHwDGlNVG6ptQ) zMsZB^-7m>Le4WsqVf;2I=(RZ9&7>8bfQh;BfXn`prSq&>tBj}O>$PBYzQWNR3KSJ} z***@Ts@I7Ui~})4YO=%)v8GFXsu#NGSzbUG+wt_h^v;q{p>lmTMM#DAm827mFMemI zq-R#X(h4kRANlx|eyD8CR#beRx*>&kq)1-*rkDS?cV5!}*_HT)7_CrBC!lBiqNz~I zxVTE&en?^-i!v0CGFD>{oz#K9qx4ISX17|`B(G6TX1W@WA(nUTYDifx9rTLxzGtN{ zjyWKNs8vlx*XDgfP>z$QT^XaQp$rV~8Z?rV~U^((d>xXgNA#IRO%_B9G*87Vrr+q$X5w zNrRZvkovyT)t{vkxlJj?ET$Ab-)$De9-Esa1Rbhw17|8`;NN3am>l8LtE;UURdWqd zq;J^SuC1vM1j3$L&r+&tXyy;5NYL_l&xsO~MCpHp&eRd(>!O3mY1?&G^o^6f8LE~> zS6;ZVR@vb_L+2`=lhp$1Y_TI<7c{EZX^&%w(aS4s*_8-&V`|k%ff1F(IGw6~SJ&F0i9j=*c1FV_1Z=AB9rgW?n!GsH~_5FX~A?>1L8JDllXk zS1DXSLV2AAxsXk71^Dq++T;t zB3Z$pBC#+w#De79s=8B?k#DPj)Yh1?Cd<_?nqU&`HE+79`)X6<^~(B9l@jt?zq51> z9rudOgw`&HQs%70%*X75-Gs|Texa4Q)vo|KI;v{ulAjUj2Gf!hIwm<*8$f(7 z)`Kjz=`V>qp0AUouaqtV4wPj>xOfRKtY!=PF@L7aE}{@yx9B`^R|>JLXkt0qjjeD& z);x}zoi0w{TIMt9MjdN(n;CauMmRe{KB)`_9I0o^Xk$@Fs;SIInSqUpG6Z z*u3lTpFC1IXe?*J^XV8woEm)_yD9Nn zfg$v`H}`&qa=d<+g<~)#D4%9uf;6sAIb>if5&2Z0r&PZs@|y(}1bxf>1zlC5Be(Ui z6zZe0r1?3E)u*bjUn}!kNL`TCk?w=;=CM$;*3PlU>JF9+l9DwR#C@BH>Cji5HXF@z zFx;hKCRX@!l%BAT*D&h^Or-1r^P&x5{>WF>^;3w%n0!ed0MbX{?@uOU+fX1F-WnV%~j3ZGIM%r z2BmnSbEy)ZE~Ap@*b?T?9S9T+SgCm;-Yk`QyD~zy#&3u0jr^!~Q)tVWWw<*UuX7?> z4Y*I=T!OwN819ZItU1y1D#n;A)+$&pm?~QHos&jy9C5Q_xD~u9&1=y{s)pe4YP-y_ z8VU4HyLH0E2pVvX(`ulQ;n{Upqr4(Sk$*2u*p?w~C%>Pvv$U&1sk9TP<19^)?DuFR z0G~d`3K0g~DoG^~jt%&#pSG}^HK>wmq5DZVTSAal+m^-C6mhhXd6=rfRfZnmgz1N6 zDC%@Fz_A;K9dUEJFIQkWik03ujo=)#)UX#JR(i?5zdcil>1kXnPs=ARw_&K1>154O z|4H1oE~y=C0lnh~bj=&e^{pIzuYGn%QzwP_$ejjo)r3Rq>`e9gn*9;Iov~*CS40G4 zfcBEl(W`Rkhs7-tz2q@gq~0SfFP8=1G=Ts8=bjG9{Bb9a;LokhiBhZII%$hOZ5`i1 zd>Xti4QC8Ek8Kc9gqE@K!rzZGhR-0pDR-JgDy%s`$9M+#5v+%=K;*G?#Nl|9au`Bl$P3aA;KLZfBVhPIILMB!_wGtPI!(bo|#yz3qXk>zy z@$54`a!odPhXqZPmeEUYi$Oy}O8TpOQL9&8iHun|HV*8ega?0eQ9Ef&u!JN-6qF>7rudlJ-XW5>g8V1-C}OIcYY1iT43*=u4N2IrOKH#LPM>1mb| zSzm1!e+-lF#AX(F{W^FE?1m={>)4f`5BC&e7ptt8K=XY|eud_anm+WE?OQ1A#p1Rk z!g!yC$xnn&^~=wI5Pkw{w?tM)+Zq`hO$3+kLFv~7@ATfJp~g78mC7d&N=jDgk^ZFEEs7&S_h?Mc+nBH&#G%@sU>ryacJEth1c#e zW7J&>OxN#Nds~OdxQ)r?zBlI@_pE=1&Z0qlr{nj!a#5e5o|3nsg6HSDe@~g>tqU2C z^evy+#2#~rTDi7Ji`{N>42)i+$@aah0bMzlJ8a#n2WQ5h@yCb~FZP2}b^ z2ba|m`)F{EQz>NRR<-;Ojax#a+7N!tl_Ql79y~@rn|u5Q(>LG0`q$GYk?biiWfd48 zdrTI3Nf9y}y59SawCib8A4G4>fL7qZYgnP+Pox-;g~cnVxn4*=9xuhlCw`bjVe$cY@>E+_4WElVJ>u z1)63}nk$aOBXPZ0S41HdZjB`gc^@I(mA|7K=VdgWW}pyj3ItoA9)3KUrhk)oh{aQD zZGN_hOH<4zQ?G2NuOwz->EijS@~iA;3UFU2S1%^pfEZ_vdxBH+!DPU0>o}QoiO5$q zCV8zo*l(qEcq^j`YxVECD)tvV%igNR*jnTFQRhV>z+c8i-A8HeW2bydz15iv)rt85 z5eQS{{gcmn>Zp&O>hRO5N6X15G&VD2*W`%8nAGDD?Q}g}A@!Q%rRG=9BLs>aaT$Q* zUIU%zNPn$^ulLtcJh@YSXUT_fqK-0PI(OQbWneKRC&_g4_uLs{4vWujQB8Zki^E$0 zXH6N?-7z4=#hKHXHUNIcJ#q8kX8j{BsT+8FhKcTJk#MhDm-AhE0~OXsr&2yiif|#A zWN2+?lOg}8eHy6oZ9v|{Xm;1v1Xh~|ZK97m#`3ARWoI~-RIP4g!Y4p>I6m#Sgn5Zl z{=GEiQK z>34Zc6>!R~4cRG^sz*LjNMTc(l#Nm>y-)SS-4QZD0zZ+^bS!3t|LFjdZRq@unUFo+ZY!(pmXC_J(umi7k`LdD4SM zAB0~4%+Jf!vdOahFDjF-#vP+dIh_?a+kT8&p5Ta#XJ)wbz2Y@Eez!*wgSD$~>8~R8 z#*)liig*${z^0j~q~56MBSe50W_~Rnw3Vb}vZL0)2udL)aHs@93{y27%7dz(Yg&MC zWGGiQJY?wm1=vsOyqfAW0;M0ZOwNJcu~zv>B&mwYq!@!=ro%?@q=S7zJW5D^m;$Cd;YK#4*(32uBKH-)OgO?ZiEsy1JsM=Tqn-!H-A(!1$ zFlAM-i~&TK$>6G2OMc35vf2LnJmNIxIFDhoK~fRWkX!_$%BE1px_)tAe7ckWf&dKr-S>;2Q=7 z0RavX4Fw$?4FwGi1Dg;B0}~$$4GotJ7oUiTgoFeGhn$j}n39l~g!osu8+0iQGz>B< zEHW`B8Yc1o_4X^=4W-~iMDv5bGY_%XE1fU4*e^dd0 zfCK}F0zkunPBMeS&c8NLOdSH^?ToswQl*1b@$Pc1MmvvL_ zEjNV^^=|VsAc~DsyJw%JqhBE@M4C6x%p^!bg2M(~B$0LMLrpcNWQh~!Yv=B5v=w0D zmIO}(+9TU%#afGeuq3LF<7QG^Hs~2)M#biq!MP5>hEr{-rTFDOyl9!B2jW6jwfXij z?#4mUX7wpJqAPeBvE?g~jNGN=W}&<_i4?l)gjJ8#cwD4k2NAoN)}xVnGw;oEV+h>4 zB#{=L>Ias_tG0Of;c&iFZxuIP6_JzZ^{W$Wi=GXiHIwvlKLfl%xmuV{*O*t%EGyTt zO@hU@tJcI%#l5$t&3ZHFzfs`8>w37`p)?~Z$7KTLT%0|Xb=i`zE$JIV9O*FV6uIM-96!kTvwefw;3Y~V#GU=Ey#JAS;Tk%#U9<8-^9E5bnP;l2bY*L&g zX5N$$bFN^~c8d<)Xooav#l8gHSYKry z4Y{*`Wn~&W@Mm|vM>ObYgeZt>nryQ1-Gmtk`?8sN&{`L2QDul&)~pjv2fa`5CEhWi zdyD=*2UKm&Ll!w*~>Iw#X`!3`~K^Xd0?ttgk!fvey zIbXxbP&wqGF=MpfjsF|{f%?#U8C^9BdICoRPjf=){O{CPhLgl$M0Bg-3)-urMcNn) zmB;>;bq@ST)vtV6xHnT$8bPTwmo<|V>)`xGh*@_=X`{2>V#MadR4WPVS*SahiH5hD zJW8@~eeV~_{hU$C9^FS-TeO1l?ii*=qJ5?uHge!BZ`3ZCq2z!-ovWgZ}yakcEq0ryaGq%(+a4g z!4z6oL8+KEozIt&l_I#lmY~y_Zri{FdK{@xN&(atisZ{2zj)2q*R{Qy7M~j7*{b4` zs6NtaNMd`;9VG;dj-KL&j&kq|VanAEj%=O)b|8Cw*_~}-G7u68WL7Jfs$vw3{;tq|wMcRg%j?W6bezde=ae*- z_Iu$EVzip}++#;|Ig(z~Wv~`+v+VPBfsl&~yxz^>PyQ&DGPu#n>uBlqsb~~D4$MJ0 z$(GhOHRRC-K|iKMO^oN#M?WOZi%%dD8aLE2AsKe{8$|>7%7md_Z}{`FKW5ZNLj0dUN~14dE9d0JC#X!zO97 zf(IivWji}*AvbnPpHKI$#$WOJXw=s{2quUnBf`k%6)EOditMsMMmXWRZWUVSU{5$E zq_?wBCsU;>wj*1b<a@x4Z3Rt!&4ksuH+=A%`OqhfzsOn6}pCb#-w8=(zmN3ms6c1oo` z5ccD@D(b1M_-*kn^Q6d;t9TwYRm|PkCTGupc>z|*20lT6>ZgLH``e7<@Jw&zh&P(w z=vU^hE~^sqc|Qw%z(_NlaAK9{%OAz%+DuxOjox~lI!wA4!s`_zIcc}R&XB&sv>F`^ zPd>qBm?%yoJKk`iF@vCHh}wN3v#C>DS4b8(7QTTo*Gd(Hk_L}4Vf_J`r*5rP;vLnh zUD~m=dv76IJeR`7+oB|#uDqPC3{_=ayxP)>VvB)#pU~4VW_6RiMoP1M$n@n(8WCxU z7WNHgwMHeqp)Lm3lu8?5=|HC@l(Wt=pieFGq7j!h`|Kywfd$o;4{ytp(WG1x+#4WAg4inBV#O zQmfa1%UwK54t__LPH$jONU;eq5P+vefHkpa^maEpRu5&Px1REla8o*EyUUkIrnp4& zG-yB7*DtPAu!6}V41Vv}4e<qxoGv7o16^o1dQblx36`Gz-0^0wB)yYD4ow1nTx@+8?J zVOwm^U~P6EM118u*KTV_e`Vp^P=SYCUwLwLl_d8OL9EctDP5LFMmLUI;>y}SCt3xq zyNo3>CAhdB`pV@bbYxO&8gF%-RAum?-}KEbEtm&o@ST}Z7mxo)FK_8)xzQV-%AV*ZoC#iI5d@~c~O)7P6Qp9AWZ@BwjK_?0>GoDbRs|%~*)8QZ? z^Nxy6aC*URhLc9jKqT>j2f4QNVV$4=HpxQ)@7SY2&pX2FI~4{_^>6l1WVSFL*fcaN zceaDRB-`cR#d+x`DeN1*qEy(FK{@xPaYeACXiDLR$$(Y3cZvZNY zPh}|lVb?80KC-T$MP#J&DW6@sda$8u{b@ z0hvH%zaVgZD0nobmDK&oN#T1OdRJ1@>}~ZsRcO?10}L5(ayTIR9>%M>=9Y9zly5I> zv6L9t{{R6wIQe>gMMuLMrVV5C&`*bS13j9{8t-_{K<=b<6#ffTwF`Kt8U)KonD~`X z4Uer6peYgB>K24~a{#iaKMwEjkFT{fokgtD%jLh4z_Xwk+I>f{{#DkX_@L0nsAr`J z9>zH!Ws(^bGB;ig8PHW{M!7m{%?4HM zCmeU{>04GFMk@ft3@Md|9qTJAjxxMqk&e~vWpTjQk-J&HlmV4;(Sm=Au>N0KU!)i{ z8z^p~<~d`|3FI8|5595_%A7YUaY!KtM%EP>fU~~nF~oBor`R$4&%G86(?||TCe@2I z4KzNY`&We|pMD4Rs^+hyJhC)W2HK|qzID+jg+=1r9R21~{{YJa`Bq+7#P;O61My^< znQ@St!zFZaeO4jnn83>^UBvaya76=fn`cPN1Gz{wd)Bl@8kS?r8C#Ltzh9*y)N~h< zP?KWd#SqWT{{Z5Hn*@^NkO@N7l)Kql5LDz4Pg<>9$tzEgGBcCUL02ow2)@(}#^eVo zaySRq+LCJeHO0N+Z9?#{+DPXa>7UD*$nqXktqEkr*2M=dG1j7*)yc*w)|+AQg5dfQ zMg5F!9}jE_K|*;IvJ`b?RN1#)r{!K7cTv#&D&h7ZqXh@yQA=qXW8f53;X3Sx7E>-G zIQ?h|;{ztHw>o+-Cv7IY(?>g39@M<>P7EBAMQ|?eaam1;gRVx>d91GD!0bhDFk~5F zSuChI&S_?yD0IeZY0lL>ss3pieve|jZ#S+0HDR@%%!Cuy6;CV^nrWtLDuc^!#)r$1 zRO#$^=vjt&rwD-}1KO)isX(L>dVA9eHFc5&bjC48!xhP$$svofsmV2O{hwd2m}1Bn zYUP(2n;hVpXW<=e+iHl+-wPa5crtLvn*;JwKB@5Z%F(YiVnQ)o+rj$GQpSWh!5+1I zwY!bb9o4;(Jkn^;$22liSR0xX?MMd=T0QJ*{8YciC+IiGh9SV9@2lm1#NbDlHSy|ssQqa%t&cEMG#t)PLGHxQ)%0GMK|78-4|$Ps|a=tF*nmg(u8 zv5>C5jaHpH!IB`}PWZcmGmq*h*kf#Ebw;+n9=UEKl*ps1On*k|D0}@TD|HZRnsJp6 zDCF-@N4VvFzm;0;S}`B)mPpP%=I_(3WSXDZmlv=~BPVZ}vyZ5zl;)i!VdIW9woq?0 zRkK;{bnBazGK_f`R{&!eD&Kr|&UbwARayKuYdy)9&gJwiK>>6&>`XIzGV`?hjAFY) zacP&a87-~?p&W?VV0_f{q#h#hjJH9hvzSOoIY~SF0w~bW8>wiAic4!}8;f4nv}?bz zYWgG>)@%u6OLA3qo>*h29Q-{x)2&wTN7QYhyRg2V+%f==8T`zTMSr{pu@rW>X|3qd zqTNS#3bFgrL?(fI0L%tgKBw^&O1;u`Z89luZ7eLOiI}r2a^f?Sp1nc$JbD^wH2(l3 z!C$6r;vWx}w>J-Z_SZ#z8AjP)eDqS|l_%U|x4lxH>P-gW?5;HU?h;YC#GDp6AT(?S zLG>K=2O^w9;uX_pmKk*0i(7k_A)qeOutGWQ$j`k4t6f-KX~)RcAw-M~me=u=E_!7f z9Ch{2aa5B}-onDy_7Lm0dTyz9lgs}AB`F!&3wdnbhy0}bao^gJYH~?$Cgqsqak%^} z!ykJYAo_dLZC=rQf^RKuENx_O-Cbl{TbV!9LCTzW{HnjJX}6Xs8w-m&h^1C^n$~|Z zF2DZ0IuI#L*7rkL+FG#tEn0M&?C&Zf%^ucAIF3Qvp5I=Tt@dQN`vODcY&)0{hEhiy z`hT?{nsFp+8!vpJE`h8?NFuk$#=FHSqy9Nhi;zVDo#vc7CkoVGk&i#?pfCo zZcn^H^#1@d`8#sJQCl;>mQcI1rw!Kz5qUg)ftChoa_PUf-v4)Lq9LpS-%B$xjdV(^3oO)MC@cqo% zu9&UQnw)M@HzSVY@*~tyGFM`)eTj5gZoD(A4GQ&DW4KcBoPO?B9n_wLj;rbk9cuc5 z9YV!fA8zH!x{!9CW6os0chBBf({5_+;TJQaw@lc zWr}oNDh3xe_bYn>1HcWBJrws+tXO*F`c)eFBVNlV!P(HOSIGFiDk~ePFKtrh+Cd~v zGOQ|Ka!B;08fnuR?Dn#}UY!pW?QtenR#sOWWe2L;$33tdUW6qfL^jCn&KlhpO4*ERxKF6WIyO(Nnx-*uQ{ z<<5SUWRE3eBw+3!d(vGh;x^W9Z3LNncn~rX(6g~7uL;V(uo>c4{mS!rZX4SbB@X7x zK1K*^kU{#2t?C*9wG9-=SqA_f+~*(6S6Pk%WH0v#Brxldo+%HGAdW39rB&z6Ob=dp z{&h)0870?XXMv?>BaYNZJIAn{&4u{dn{rRx_o3Fo$^r>(jt>+Z z_IVk{HD;F7^Ti7-x3yAGPfQe`R}GN#6_otif^tP=Pr`xxXU#S@rWeZ}d{OUsl8lB1 zs)lpaaBFnAAYc<&)ZUA8q3ri5&%_C+8tgAa-jo?hJ$m=7E^+d!EfFa&`-}M*N`}X; zH0MFR^R0ZMekJHCs7_jlu(^AAL#f4E9# zyx;dg6wX|b?J}}yoiD+jGkZdjPWy51U3Wt9gi^o=lOrCr^3-hXLCLEwfvntGF5fYT zz~Gu|#QjcC)Vex3oE;xaf9hmC9<-ChA-X+q=)73i0n2Ccqpkc<8;rGSf2hJsOfvFS zop=0ab7Or6d#IMr#a#Lwd6=nO^Y2X|zG>5bPC(|X`<`n|BFvcHdy>ysjfM54;zC#t ztxpt#)`81=EaVicxxRE|qHGzU(quuFAY&9e>WEunFvjdu$)ram9?PbJe92egBv(h$ zRTkYqQVu;UnfOh^Y(BNrG`0rSa647w{496I+{vEaCdo0TPgAs3EGhvTcs;X`_*Au( z7R?SQS3QJYZ<@BLxp@s5?0?Iz$kvH`W0Cx}Ymm6z8jp>A_MU0JDmfuXIdxJ;Lykw* zuCjWNH;T6wFN0LDyxjvz7jVE=INkE9pNRYcq3U;L{>JKSOOE0h@U88Rp1crh)u`AR z+jO=Tw@Ny0;m66bRZVwCunYE&u-$3Xqk<%cMQopZbq1KimHsY(WNyDCb3YeoUMBGP zpAtO!X(!88gfgP{BOK@Dk6NQ#YnSlE$5qq5*KFs^GGu&17~^okKF6P(cDwCYSke$Y z8iBfvkKK_xz^CyHznxKai@Uk?Up`wn&Pg&ossb2eJjU1rdt}qr>YV^uIPKC}8`hUh z1V+ucC}A7?uznJKsZ7hKTri1Uc~2bKq+_NgFwBVb7K z(2t%?LM&dio7<~vq`0(oCkH4-RF31&gX#X&Y4F9|c9(M8&jgQV%vMB0lM{A0Jl8+a z^<G8*Jbdc&c zqbwviEC&IwexEwA#j4$D7g0|YquX3Y0^TAKh7J5`IuY&bis9ZL)uMP|ius-im-lwp z1pUxDE_#vapOsuK_1BwAhUQH`rPa3$k-1rOf+Ma#X`y*z-j4qOX)d4Qixa46 z*D#Gn-!Zg_f;VHM1Jy|W_@sU)(5-cgC%CaeYkzFZ_Pb>OAz(Apu{{G0pz~bM!rJxb zg{%v~FO?gNv5W#GjO2lg;ko>?-ns|=s?pxt{B16zB4tZ^i12W^KM6jdbk77-LJd1l zU-SO}f|FI~L2IsSI#kBy*5&83brL9UOfs(+=lED)6+QY@z8zysxN95vBN}|tb7?14 zNdP6HVmp1|@?tOu6-n0K+SgS{H2cWH-VDzL$Ne(RfCxC`ZUdg#pzazyI?n3t4g0 zqfe8r zZ>WaIkbek#ckP;6KaYEeXil{v@id7F`H~&0kO}n3t?CAnIaWwU9PG}}dV^kB$i@{% z;lhq_jE`DQv=^4bD=GzI#RxoxD&TtJrxgUJWM)7v7A%aik~!y$e_Gx~2#m*|8Kv6k z7SYA2fVs77xj+50!~R_TDS#_1Sp+h$;PxQY){`MUv{SVyV_kV{<78)&cXdOY0MLR- z_XnS?S}kU0XjRbfctf!qfOyEy*165@ul64p+KE~=kzgwt=PFqS#?PnSABd}8hxI!` z*Rh-LKkSRR^YJP<%8zgdA45&$#`vZJ5~f(7kjoHqrFUn7D!m3%#McQOvo8C29f|J3 zKv$ngMdyyELD2W?k!VW)Wk9} zO>F~0;Qs&)S-Au0R>rp9(M+!5qxJ^`Xna2{!5C#u{^N>6eQZ)Oy?#6>Z%puN%@Pr1 zeFnf@-C|!aw&D&s@4=;-D%i@LYsN->rq=rfHBP*3TK~6W-$WUv}=RVfkea^TZ+ik0shq| ze_T=H0;!DbrwRsIo7(CHFgJCotWpGQllW1V=4oa`K*VR#r<;#O<0kqo%d7z!k}?l^ zl{IE6S~&6teAQ6HI@@M!pjXQi*m~6~#C|rBV`wa$mJo3m=y>jZ`_&d~jqKR{Kf=l7 z&8GOpcFwys<;>CU-inz205^Qr(ZMV!13ywpJlD;?`m0)zmu=jE5xx)`fz5Sa+5Z6T z5pLs44R&ORV`|NgGsZLNMp8}wY!V;Kkk0FbK7 z$CBvKhm@c48&*=8wRoe+VEFHh9DWra{-ChNP_uifAI#N$8T|xaL_Ws`L>*XuG$qWC zoU*9gc;B-$n&ZV5fcz4S4!cHA;r{faRPjWNF&*MWy}0E3$4V?bdEUWf@*>qCj=3Zk zOXW{#=3xEpfS<(GV^GppC80>(A~0fewEYPE4M8TmddhcP+uW(i8*r!SX?@P6HN=}) zV~t1u0Cm`7=f)}6#YIr1w(JK`@P?awn^N6W=LECoY4;!4sh)Sj2LPBS55_l?0VEcAuz(E0)^bv7Rami`I}b#}m2!CMOJk z_|lPaGBX(80P;s4p{lJi$iHd&;x<8S0y4_LVUI#N=}c_(!*7FZ@+$7;H*A7Ce7LS= zZtjmHhg@|FMq26)kZzEfP#!|I8EWc8c6DfV)P=*xasL1;#AGAq%O|fLxu=?Ei7u^# zvD{9Q!7wW+LR=u2NFd80K&=K9A~GXubnR^ zk{Ocz&Q_Y#zF0W;*Z%M8R+}Fa8@*YtOp;F01q|ST-~a&09Z1Jo=;!Xvc+*sUGpTs4 zF9}>&-=?P8j-KNJLQ5ToxyMEX9m;-V8LM8C<2wygT1$APA813jU}5nijE7J245|7W z`OiS{3B0kEJIO@XD8xEQ2HE2{89(Y629xUA?f(FVwP-Iay!fJ44QT4BK*7mUdk}vS z=|*oHmB<&zC8T{x;%^dM=+iEx1IIn7C@v#jtBxDrr|DLRH7jFp=Epow5l=ccRv38C zAdkkrf3W?r>6-45d1tCZkzGu&;aPBwd$2u^Z^P>*hp&HzPxd=G+{NYQ0lPm5Nym%!c8Pra#_f-DYuc4L!9tEJ-ZK;Q~V3#2yX2m zig^r6CBnti9$OsbAM%jc>)6!#rn7IQc#FM>;y z7xy{OX_dd)L-`&$w?z=aPtifzCTe(t4EXY_J&?F%gwimK-mo39HDK_t0I;idG`3ryTEg+ksp7 zicuYck^u&EQZb&bkEK^UK=R%jxEgR`wYZIyQOIxImFxci$-8<|c%jOeS<0ARr>qMf z6CV$vmbkpJd#FKfTVV*me6pwUp!^$g8L`)IB9O`+^`lZiCjj7Q9Zx*fAO0XBzW)H! zo)gyeomuqVf_r%`0+M4#E0#XT7^_$8;@%w>!PXXV%_P!ZY6aS9h8{*@Nn`7hKRPTE zc)I@pm;V4@dgW!Y#4U8NbD1Yo$5XX8VEnlJs4ZSJx$#b&rv&(x2`*${It+ya>(Ajt z=@7U0z5Tq6XJuSm5gN&6J| z${4NSEC$%nWwGDTRa(;4cr^5$P)C?J2e3T;m2L5SU*b2m_9z=>;Lgh2djs^%53Q;# zthci++b9t2P&slx-+}8>EPSAtwAD97D*kyVku77$5^={;qp3dB!6DlkqAma!7@@TL zNrlX}*FgEQ4EcEf0HhB^`O_uJ0lOQ|A1X?4tpboSUA$tlq>_7hoTD(@I`^!haVtl~ z0vrtB=C%=Vc%yu?>0bFqjyhIDjhWJD2g~?+RtU4xiZ{vteEZ_OSo6**@QDee4z|GZ zMM{>#{J8#9TygRaqeqrP-6d(S9}q@`n4e0jYrZ$Vn(d*| zfVP4@1_#7N9ph_;heC8xSIl)%eMefOTErPkftDwzs&nFcztH?RJRd7tY_i+_&^1w} zU+I^@Cl?Sh$0KmaNc`%Pc*M`K&ft9yD@Vy{t#Gf&-Jh7^hm98DQdRrNcAWRC&m~PZ zZDYcoH(y|}#jx$c8RTP@IP|7!?Wu9ZALaE`gR9DN+mU$c9+PFRoHbP z4nN+$VUzZie;h*2&AO-rmN_Ha&{dPd9z0^HX&Wj?&5WLme^Xkx{Mbmy$>8OOqv$oi zwQeK`JvWRRg7)`Lk~5JLdyY@%T;Bfx##&~dY5xG!H5iK%f`zioeKv|7EokZrWr-t- zCg2x-qv=L@;sfHES4F#1n$dw+%!$T65moE^y)_sl*I@|%06XI}qV9QEe&yn0=#ml- z^`!cW-9ZtW;_lKcash{NKQ3}=k1A~C2Hg*C^<4ryLm_G8AmBp8lk^m-{^rhWZ#Ek> zw@?b^Yup@x-A6T8wbtX+uNu*$(|`mME1?CjdBD%>#cy%psG-|&bFb-&_#`0S4?lN| zf%?(0< zI+cc*Z*#Uo4xn42EP^r)eR6Y2{6%wT32fO|+3a8ew{6TZ$6WRGs?VPHL1D+zBzw(L zY0-SyZmwB?0j^6SKFgo>p>@f%Z9X$;e;xEJ8!H<+lmPz#+nTOwSFtRrOPAOIRSu(g z`gA=hUEZf}Bu8eK9Bf7vyw=Wo{b^Y{_AwoL9loavAO=3=R-B#5UKLX z?YT$mNY-h4jxpTSZ7iL8*I6UfzLp#T8aVVk{*|nkv9!C}C{JPA@uY%T^X=(g2_!k< zr;!7uyxKO2STAgk&x)0Am=$99VZdN84Oh&Pd)B5&agN_QizKkNszc?Mdk!INZr9JxQ--K(ERaQSa_FJ@cqPaYBPPSPa|qd z8{$Ee!9Bl`9`!@hwd~49_02=uM z(*8{j>PuO7%WE?RF$2gW_?P`d^A*ta-xizu8ylEzHecD5RFF9v$T>$oLYcXDLAw;n^6<8vaAkB>%NgYq7f=SSAp#CraNX@7VPz5TtjMq{XAL48`$nzTbqbs5+_}Z5QihwWOLt&MRBhG0MFv? zIU^TZ+rj22z!<>*x1l&cTBZKU{6RAKX34g_#DeljmB#@aYq9?T@&`Eft-M3xts?r) zEhgseRU_4!P*?A>NfVe!J-Ja%!6ef{vx`q<^Y)iIYPwb7o-MGhlX(@c;f?bE033DQ zo;~TGg74yo!u}CfF~(98=Py%;kg4m_4f@wSk6+Yp{75G-+ec?S#E98@#M8fnrMWH@op0rmj|{>40{Tz!|T`o0KfM-EuGWCVjr@ISV*rb znH+*jxnfw6o_o_c=7tLvy9dfiPU1+w8Ek$ux4{h?X>sZ%Ns8(O7*Y8Oxb5t5n$Ho> zd2yzqSt3a_)9rwET>aJ~(LgMILX(f0l2va{qS-@N0w`3|1sQ<;gd)1b1oLi5SWf;o`ql7AeZK~re<5!u;EJ3i@V z%RGnN_O9fX-~PooTCevIT-wEN5M~%>VtMO<{`FS8o>?z^i*fPimOT)9{Oaj^t$QmA zXw=BAVvCLd?%(fK&057Yl=74JlQGL5^AkePA7ae`NYTXGcqH;qsjRGq*L-2;lq0t| z#bqnNjwi_BMsQSC!86*n^sUr($2E|Qc@cSIs8D{j;>YsNXn?#5_h+d5sF6n|MvKs5 zh>bw3jSts8lvHuhvNNp6lRRUJo-`fn)lW_;L>S<8pf*V?Bc^DE00Bb-gVwhWcJO(l zLn0xgXX70!QgV14*Ns{hfTYoy-Nqs)BgY=HrD8{Zjj)dk@KWBpUsK*A2h2DT>t6?^9B1{$79^aiayL*oyFv8)mxaW?Pj?q-d9vy=> zJBMRW_A=Sw!N|*e$EV{$%PulZCKbvpAb4bOSzLff10%P!IkdaE)4>oNN=DXY>bdKK z{%?NOUbMLqKgI%+&QGl~wJyj&MGB_?lh&^CG{{&}7=?FHkWy7p3!X_mYI&yA&LfWP zz(LSI82o5WJ9A7znD-2iT$*(hJD`jYEUq|GIr-+Q^2#r=%M50zq9oV#h}X%A@^!$+ z!SIegU1@fssOpnO-emFxIR|r{$J-;dHMxVyiw;Oo4hO9)mKJ4QmY!kHLZ@gSN{`&n z?6UD8^eeQyzO{ck+E;<`f>4l8@~P$VHOx0al()KEWBzS?!cVWIO*N=i<|$MG&UjPo z1qAj;%1DXUA<&!?_)#(WZXGhYJQY6CCCr!frCMuA6TTE3pUwztAh@ohYhtyTH$vg`EPDlKgr zHZ~A`T;`*DCkJ>!MtJ~pR}rPZ-B7HfoSvuaTE3evl)#2kc^u#YRQ>9*>-6_UL}}6= zh{jN3xU5?cr)~hq=eesh>5O4r*(W*2ARm=@Y}lx0SXDsAG6~PM5qVe8H{n-kt}Tco zq4_A!=UCP(0SbhUzc8Vx>u0c7@6}r5_lma>GCG0_d7ZGWl1#l zBw`{?GDb3g3M6T6CwT{VAytz;*Bw-8ZA6k{< zIS~9xDgOZBhifjvyzqSotzpv;#f%2&f(YiWGh4xI@ZtUp}+D1DZ%5Mb8o z0OTs*{d0`b7E37ndeKjpNm&DwQaQoMrI#98$B+t=IqO{m?0#y8weoPl9jZxh!!@nm znq&kBz1u|L;Uzt@Lr(;ek^+)FM@ob~Gn$eSV4qQ2`!N)$i-kV}dQ>`X z@wAzvW?-+u$54G~F_7>x#&ceIj85WCMRlB9{{Y3Lnf6S<)rKD(`(}iW;!A6YSsQ5I z<|sbB4Izf%xNv$?Ii?fZqkjU_HDv)f%sZtS;F zNTLnBa2%_g`haPOX5~QTj+^IuY z?xSqXH0w0`9kYyVc>&tQdgG_hHNx~i5zlF)*=ehAZvOzpTHvnfGE#O55y}4mNFd|a zj4q1E%BcnyTMei;K3jS)`WUH!pKIB$?#TDi3AP81}0|4p!yt4qDP( zBD*QOx^paQ&bh|p$KmZ+PwpayHwax+0e}MM02UfdFbSTZ1Wgug% zRHm3VNn^jZItn*hx>ufQv+*C@t~(EEL?$6xQM+;y2=&kY1syICqdQq)? zw)#>SFxk)_e)N1#)94OZzWst}F04~1NF?LrIjcOldoT;BJ9C^KMmVaaie1AulD6$D zC*1=W_s(j?VQ}uR4ab=XPDvyjdsRG`+pzvLxT+z!v@19{2O}JH8K#!dLvrf`tjK_Z z+k5?J8|ik#7>x;I(4ME?@S=2W(#}W({20mP4tr9La!Tycgd*J!tznAY$XMi102@z0 zKi-W|GaZc{(s7N8yMyX;it%NUP@uLhSbq;7A45!SqMkHAXp>@}x`1c>s;W)xmT*f^ z1G==0W8ZZtTyg2RdUH|WyJpc?4Y&qL0|88DjZ2W`K)ZP=z%Sv7Uq6zPBK?{L?5@b$ zkGUg?>$FOXOa|uGWnYfs79^4ik_ISdfp&ay7RclVIQ%I2Vu~gqZV(n3Wo5#eAIpFp z$9f##g~0>mii^DlQLVH<5->z&Ev?Z`Xqc@cLxM_i#^&JuRpD4*UCSh{4?@X>C(|RL zt$xuOxJd%UNANS}^{O<>=-Eyovtuz9@aLLMs0F2g(ZopW0EFPr2#Cb?jP$~ z7@kB86w)ai^vBbVl?u_)Ns+iP?uBCjXN{^)HKSR{GZ8lI^~*Oul@;;Dhni(09r~YY zfu%=cB8_5KH`~-o7l62Q=pSsVEYYffPsJF? z{CTKjn$2Z9jAo< zR|ePo{{YFVY-#fF`HV;23^V#vClNfG#0uEX$5N;BsrHva518nOgOD5Z7^zLI#Dzps zDFAR;0c>{Tty`Y9SBKE9;u~aDmf0W6AS z5lsZ5L_c|X2i}JUSjpWcNgS`1Nc^bS^0({`Oc7h4Nv$E@`@-8m<+1%KHm9XUBxP3) zq~{~36>fo|C?h^vzfj-i9+~2_n%~WEs~9dh0~q=a#-7KKG$WVCqm$}ZQdmoZh0yjr z4J((+lmrNfeS6nV)%3XTVs8M z!{7&sJ4;nr5Zy^~$%Y*_a1YCpaqV3G-cZ*e-0kD&2^8N+zjz@IuEEjHNH`+{f)Cb< z3DpqM+5Z4!c6XQhv)nD($>dH-^NjF+g#Q5AI#<GxV^hO|j;VpI~oUU>&B?#F}&{^9^XDy~bZYPL^%uU{{ptlYpLvWW&` zvIhi%j(szaOi(^1<+Y?&no5w{PGqvW8gk4oFUHY#I9?+Mk0~+J-1g>&@s6(!f{@xm z5Kix%n8}opo(EtCDR!-@TliN%5?e61xRu^bjJV%1!OM5aC!qdRuS(D_r@n1-#M4I7 z+@|vkS>GcPF@f71IHR?&bztyXUusb;_098Jyu)ycB1k}b1CI5TW4S8~zFdkjB55Sf2?CYHlEaR*Z_zD6+lL~&+;Q@BWu&Y+$P`{_#iXbQ zT++!`;o`M|W{r+=aaYM6Aufl^{AV>5PUD<>s6@I105MY;KZp@a^4VF_=+fv4OR6AT zFs64?d(!Ln4Fhx9g_S8FPv}?-c}rOs?lFgy;U+lF$Z|X2Q=}a{71ifg7F`BO{&?>-oCv4R0Sl%xHCiW$^=XqO5_vN zfyn39wYjw}sVF{Ka7a_o`kd4TcUizHGDb3e1sVJ2C_K=395(|VwaxK%iA$2E3vU#g z3 z`$M=fMyZP*PArcp`@kHr>^lKl=3#!ndcrx!7snF*0w01PSM51k2b93EiZ z6PWUGxA^}6+Ld`*(W4w`D;`-vWQmq-fSlyFEPhofYk9XFlKdnBKqrrw=|Ne?ZMbcX z3!LN3laM}CMqhf5wu78y9ASQ#t43QX!$+b!UD7MT89~rK@XSAzK|FS)50VlvIVuUG z-ZQkgwNg(7ixw2VNX(J}A_&1Gd6B3%{{XmktNfRw$ylpx0A58K0g!WD>6wdjB;1v!1u;8SQuR-Hv`L% z;~6^R4vU*;>4eUy@28S$h+ZWZ17hAGqO&24EJ66`Wg z?8B0;t}<%%6`?Jd|#2A>A}a9DtO>A)cUO>A||B-(6CpEa?xg@=s#@ms}pZ!D^-XwJ+I z6oZ5E7{wMmp{ihC3GGlf+nxzbl3PZxoK^fV&gIQ)9Lnvx?ZK<3}d zz#)#{2h4icPc^NVh8BpKqXI=~9nN_JfDg*GidijLupAS?@5i`3Xqlx;h(f$7{A1z) zi+x8mAhcN*%Pi4keaQyl`1(}GDq1>NqymB@EH*|J&mnWy*9WK4h=xtGh?tZtIvx@J zy^VP`nQ+-KO&YSC?G2S-+>Fxuo0+u96=t)a$|v}jDt=hV6{m+T>g>(Uk5^PPx`8Hx zK3R?a?tT3Us^+_-EYYzeG9be!>ONwv+BMac`Y^YcZ7O~i;eqrc)AjbDwM#JjWQ>T} zM#fTk813@*HKBHA%N~v?u4z6=GR8g}lk=pEflw9B;rD^*it3v7j-gris$iyz1e?-~z?qR_N(whb5C;!y^l6yxEVW*-!f*a7+AQ}}0Tub>$fE2FGvI_$nC z@wN1mSX&zlSsFV<5^e@?s@sZ=2tvSf)1LLGh`e2=cv8{qM8@j%bGvceC7Fmjm;EEJ zKgzkzmE!AP4ESp1TPbbk)b68iFUcE3C9Y8o+3PaNAc6%l$dhtO z#(ov*cmvvs-99J^g6*9T!B(1{r+7S1uEy@LvkNO$!Bv+SGJBs-YQ4XiYYCLg{{TGe z@y#I5l)Zlu(xTB2Y1%cl^TxZtV`&QfO00Sude*vZ%WHT3A*|equ2nK)Vm7P$j+p@d zH8omA8@4mFurCOB?PPG@7U>h>B=eJ+$`a$mI)%)hcAq3o0}c-SWcRG9@?}qq?f(Gk zjQZ8y!bMwH#(PyJABDlkda~P2e6TuVu&}-^%(@)OC?garzj};Hc4s)K%lFL>E=wyd z1;;V&e>$E!o^Z#E^`)D(j@9Ut4!tQkc2>jgrTBO}P**bMA}d*?-lGSfS`KG#yUkJA zSF$N{?TUy#J7&FexKw0~!#q%)G6GgZ3^Gl|*w-gDN1jd6%2qPvn>ik&;;nkz#vLh8 zumVn}zA?p9%PcZR4tDG#Ip}?8v5y$h>%U0B@nGitm=(O!411e0fB9hNHFEIAj}Mj} z=@b&Bi6@}VRrHi+yfQv8zYr(;`Ba*gw{0$_+HKU=5$X2Pmz5xGvQGa1!hw%Llgac4 z6<#vUE)h1A;f6fqU2ku^GXgXw<~NXV0APM}y7t=Mdqudm%SKnOKRT%C{v~Y(Q%!$E zvD59IAV1{Her#@l@*93mNbj80gF^8HT8D}CBMgumJIvhqFrid{vB^aTu%_qXLKu0c zwb~cQ=SwDD4Qcc$ngtF3JBU0ABF-d;7M2&0lw^bb^{wxWYpEn;?M$2x=URybg_>V6 z<3{9$;kfE+HzT7$3(+0WiGwRdi?^N+f1OKhdvF)aw@eX*$>y~Z`R8^3QNYONy@f}d z%AtV=lkM&4LX*`nu}wQgj#)8iknbh-jqZ8Dpu~v*z-5tC;PMB|)-y*O3a*@N;AD)S zoi37h2uw&K!5$=TLy0cPn8WsrF+748aq~aQ zrG=afiPmf$q4WClLfgsqbQ`3ZV*da$Pq+{7+NX#Mg)I!TNrTHWs{`^Y&-dP~uSBN( zjANM{PnwfDsmoyJZ}a_VnEuCb3dPY+59#d7N{n*xG<$(oAhdlxqNYjz0D1(ZE4STn zKJfHEtsXMH5aXb)AyQ5D(j7@X&T*xm1p;e}~1m2w?onR^(JfDcAPe)zqE}NgO}Zf**f?BH%zga; z`c{o~X%ho=Zpd5^9#RPZ0Og<473bQ6u!kO6;~y3Zx0#kGi3$!Ip&9RzPc;qZ ztdPbL#_2k3$t|BlRJko6iZFX3xpnQu@xV~>HYgvE(_b6 z*_e_VPnQiNO^BAoQ>tAu#LZa%N;#A zsr=|ggqqqo1cNV2WWY_}l;HUM=wRvz?p4zC&Vqd}f_?%Y2LU8q_|Z;9cL%2(^< zpNHR%O6wo_H%Ik+#9f<8l$dZ$zHVyRs3A^A{-RmS!4+gQZ+ocRC zBu5RJbEV3uf^bOW4|+`y_^FMt+7|P$T z=ARaq99ov7#@gI3n{qc{fB+6pQ=Q#C>!#V?-``!!t==~1$r0OIl=$L+0fZR-CMW5d za}7p6)r;k~uSZ7I{6L8WdW6CoSwY!p3Jzh9fsi};WcSIaygh3AzMfj)_8FAF#rIGG za?F2=G>=ELvy$nxJz%(!X%xq6Co2-E_*9>tYT0!iM_JY1O47?EoNV5F!0ik``>H)U zXWFlRfi?6UCyDLt<$HY}Lb}v#;%$#`u;pFHTzhn^s|JasUPY(Ifo+C60fG9~RH(nU zS4YX7Sx3PgDTS-;P)~ZY>s}GmAacn8Af9nZn@_ogipdix`BoIM$~~hhUC|;)af8#= zr3<)ZdQ|#$lXp7+u`vgwSZ(|>aIt1UK*vl_ei=)mtyxxJMsr#mlh_(}f2J66Hk^u2 za}&p(hXRE0wCSQ6pjVWs>&|L9{`Tzf+=}u*cVvtbYiNd7YYsZ+(yPbORIH2>(4VKJ zdZ055jtS3!jAEjw(&l(7XzE2%WI?ZFseM`Mn(R0-zFS}EAVz!HVHAK#&+(n}Ya<}O1H2^$~dxfZxuF%uzg-Hr(ALHTzTy`&a#%26U!-_$7}XRbl%^s2>{ zthWWTuoXDzll2|y!DlQo!;>SkjB=#$o^zTMvCkfu%v>@nh}B^Z$79JH*!Wnt-X4ej z=qs3K^N0Z3KqSAF3hg6!Q;()T;%M0Cvh7ApFG!=^=*=ynr`Fj-cn2AJe@T z6|%FWXz(rzqlZp66OikU%sbTiYe=%|x<2JbO8bH7>?=Tx7ALmDmR;ppcwyXQ)Kr0$ z$`~7Uw2if*UFP> zgWjt74-(wusRzrINnziH9@yv8)|cEM1WIIem3j^5KQBUa(u=gq1?$iAmr9M>)sJt$J*6O%lfpBrAQ=ser@O_xXEMIUI4umt%G~Ao#jj+q*=i&7f zV480!l-!$G%Z-!9HzChv2k!cMaZ6)^lVS2?P+BLrvb2#;n&h!w0`rfrY5>_-c`qAH zA`!r6nC)Zo>H1Sxl3%m`0QC$yjy%-pJr5lyB(}DW>Pt(YSUxgO2iWoYifR~|>{@wm zp*PxW?3gXhw8RcP*rp{9vGk%6>ra>9M`4~q%BS)or@7LUONVrgoNQSYayJvB!&PZZMI=mj1GqBv z^#|6JM=#l=LICnu{rI{A{-y2n6wTll>P&Nmxl!<({o&Uc@A}giXS!fA#nrF&0KT$# z9iGNn1T1spvE7f6{!|RelEoXqcQWU4W3D=kdWvkmYb!%GBa|P7k3xM9&!^!-ItMbK z4IGPtK^@0%YgZaE^H-wX{{Ri%Ducq`wEJYbpUbn!`b~ z?EH&^$3NtJe|@Q`?;ZVrgC8>EB_rWElMF%qDli5p``FY4EP2k{_XJQ(rB5S@6D)54 z86f&mXif+o!i7`7#~$=tZI@OG52&am3{dVxJq|Dr%9(h61i00rjNu?&WM=F-lS?{V z?k%-&c<=M4IxU>iqQYANlYEVy$F)p!&MvkoF14yaU`A^wpK3-wj~wo9*w5)*U&69W zZ*DbRLUf+grrS&&T%M|n>P~s>T#rSY0pg6Z*u=O9hYc~~zhUZqE2MZyH4RGo8%rxl zu7qKfNWg@R5BUdW^*v2Dje?rdeDbgL3yAGz5jEEFCzBE16en(RpWD)Fg$IXZY|9Y2MPeigjd5fs5en&>*N zmc$>1s@K+1M&xbchVjO(Cn%+&jjU+VzJ3Aos(!DdpjP-t9V@F{L6j=PnyKry-+GkE zjeP;0H1=|RO3%w?0B|S-QVu#*w_df_g!HP@$F%0NCkkTHjWfhuzyrwaYG|PZfKPt4 zq)ek3>Fq^E0}O*wq76Ols(7Jue>T9m&H*Bjg^id-pnL~CJJqAb_TXIoq-TIB1a_O) z6vz31HIJRt<$q_=d`gxWHT1v13lA;0Qa+t3G`R~m9}gVSGDsV7Wh!^`>M_(BS#^ak zfH9BjREGO6I`kj*(JZ74jBrjm8j%V-j0Qmi;$v0#rF2zPX3K-Sj+v+0O|8|+h^=6G zIM1N@l4^3nN29Sx%Tyg}ZiKD}8S9MG#L;yrz<6v~;Un*^4r)&i_XBzn!1VNW9@Z4{-aDzWHblUCIgyUTeknWL87k-7p_mCS-Xmd<^vq}$jv z>!V$25XkD=u^VJJ&pg)p{CYLS4Q+8|g@E{EQHT6R7Ey#%rdBv7Cek@^mDN@Ea2OCV zQs3N$mwNJcU}vsq+uaWCE06g|-sT783iTeudeaRr!&4SZtGJ#Z7-3t3LzJ464myMV z@m@n0oi&@x*^g-?6Vo)t)fyR=G6P~jLG;gmp#*%1rgAqbv0QOcx(u_P2+}hf$g1aH zR{PPo>ZkkWnl$l;VZB$8oSp`HH_NtZRM?RS@`94UAN6{3>NK#-T?>{GF5&71?*9NR=9q*V*cr(l&33X(x2?6KQ?hLGSGG^L zVrnU-K{QUKm6cjI=Y6P z2t7aXR^g(plxZFT+Cjk-w&aABv4Nfd_suC4!&DpOQs}J9VyWiJ6-VyEhW=I0_2hx) zo9!#+BC!ep>z==zbnRM2OA<~2cFsKqHO+O5NpjGtp*bWz2qAIP-i3=JmS)0AAN2Mr z(X{YvWsxN!NtpR%@qvNgG}gmU^C4MUSzLKxif-p4t}ECrq#`SKScGbDtNw3nnssc6 zZviopx-;QrcY0Ls!MwC&a*kknhxv?h6A|%{b}8e(nwJxQ7lfl zI6nCVdsdb;=t@%FyBKNrFy2Kal=+TBk1boNJmYEa-yekqsK!h`^%>C*!uj~E^q`>nwl_B_*E6#)4gbig2! z&0jH;BkN=%EU1zs6M~T{{S^K>ph^_ z95hm%9~s)+IsW=ko*mi@vbxxOcNWt~@m_xMfZ*|vGuDQjwWY*QyvY-sKJW7MptVIe z5T(>W$2?3G!2Smq{8aJuG(ugAiw%>mN{~k$y+u8XN{qiEq}ZuD+WG zi8QBXQub|eZhDZ({6B~3PU4qo`$j*P8-|WA;u~Xas7nX=Sc9I_q>Q!!Jk_)Il45@m zOEgRfnG#Y*OqI#1pF4&=bRXz+U88hd4!m}v;?CelegzGH4o*7ajI z6w=>Nxra=!g<2#5?j&P^!{5<;tGf6vPJ1A8bh9I!%(2JisT~00_(gMH*`}8oK`qVJ z^nsi%5q>FtXVcocE~DZ*eJe?l2uv|dpafRs!yfJO^zB+0(u{0ZCAUbqrRrHjCCkdT z@G-;8-B0=yQk`4HdcLGu(??Scpj>^TSHnAc06GuM)gQyld97VVsA`u|OB6Xo3`)ic zCoFT{6?4<4(*>sMPc*8wOw71IJs0}-qILpN`!%)jwT;!fOL|`Bay~cSRAA!4$|zvZ}2i8t5rdD3d)2LM8%QC*PwZEDJw@c)GTwIt5wZcNoEA&ITg}1J5d=taaG+yECa_B zc`iauCmiukn&|@_r{!Gw>2^w0vMac2(4>m!>Ikl9;%y`=w2_V}OxSN|Pb4XoT=Re` zL~)UtiHR9g#w*1njOUMfOas3}UL{E63K>HyMh-^?kt}T)zy;KBGPopDJ!VifBD)NL zqF`sI6cV(c;fcWM$>Oklr&%Ru(fk#DJQws|;8TAWn<|dwS6XWJw!q4>RE$0J!bwaYBUK=se<(7L%pg%RiJc zFjMh!jFH#rOs=(iO)}bBYiLq7CoWX<`qIg7WsVu7jH;Gg#&M3_57w6WZqVwDHO8#| zRA@%^95ep_wOwO!xyk7h49YbGw*8VeujZ0h?JB*nI??)lrm3j07L9hS26HTBSLL|z zPG4EmEMnVbZ*LJl#kVa=^)D6AAo9eU5S}+TU-qd|<*2|qZX3xm&*7aIi1unanxu{n z&>MmE6io07d7dYid5oTLe=4BZ>%YA(9O7Al>z<#DT6B#>YGqxW(ar;&+4cER7AYlC zR9hdF2|J6lPri6_CA5$5@(qV+>@WF~>6Rm$$%InNc( zbxZ5H?qgXFLY@E>55*3Q4@1fBR!JBa7~D4>b4q8KBk?Z=R-Tp zcA~b@Uz6`ri5Je8ft4$qdlE2evBsdZR(YKJCyAM4RE*_9l>qiRBvJO#8LgDbfwg%V zzX<)hcjHd2HPNKRaVdWhkEt3C3wZec~IkVg(DI>nmsBJZ%}{-mQKgu}Q8|a)Qb-c8n@nZi5~1 zTnZB7u!~Fca}4>Ki=#$MmJ*SGSb5&~Qj~{$jSd zZ!D3)L(@OPf29F6!z+Y12OWFXt{CXf&pLYyX@ueJj^!CI6JwQb;*ap`k{ASJ;g!Rw z9F_MT+2`d+tRxd*WndXHQNPW>BkS6lX*US6g#@EZw~^TAIUiGs(1wI%w`GRL?nwwk z2mr)L!QeOXFUvS#^Qj;%BD_pwq4QNq#|%Ct_rc_SDjPD}3+(d91PNJ6N^>QU3tAgb)7!$y4u&G*V!tCXoY6h zM8jl_({Wz^0D+)&&@Cs4qknmLcN=-N=$Ai~=}2xaZrNEET;OndH=2&pb@>J^M!|K3Lia z^rb7w8SPKJbreu|uTg>kQaGn&RVSylAsq3Z^-{6uk+8%O(wSJU(pZkz0Q%4oC?!W+ z9MdaDRhOPXIjCiq*xyc%bgL5MbB<5)6?E|3lBApGF@yu*2b!tqE|ELDhYUw9e}H-l zY;_kSbWCE8pkv&BDwyb#piSZ{$U^DbGM_RGFzJF%Qhg0?Z($@#Z*?n(?(U|TNw|}M z$FeW+9y;_D&m+_?Ww?e55>_Mkq>$rxJxyILt}HZYVZDm^wQKOD7`ZDHWBjY^J-X8n zmF1M&;N9@UiVPqx*T(lHgvM!4vZ3|3ch17~EctgNi#K+5or zE86kC>8?0esz4nHs;;jVBW^0+dG}3K^|Ay_PU3%vhEC3PuYv<&sXCYM6_tiTtG9?x zz}}?Q4_A|85>7d)O`&PV%09IRlX6cxO#rXBb?HvLL_@{6bsW`hIesHqxwRo@8Vl5x z6ulBMWV~yGpK3>}U0Yhl#zH^=DKMavlK&k-SCX|uRKqB@=qE_3Wre0bMTSvQ7lsV6c_hlac6>q zoWHUIlHp>D%x+0N&T3m7K228S7$PJv`^C6gZKil`%6&8K*H>O`$v8`3KvFsq4^l=! zsf$IWTK$qH3UTqbTC}ppDxv&}M-#~|Q~oIO$3wHRK5UKVIqH3D+3%VOyr@RSJwp0W z@!m~zj3Z!N4mWX%U2-n1H?_da9^}yDj&pyT*k|Oz3b98;tm?vhASPm5CeUdXq{_>c z>~oBE`Or4EL54SDjB`^g5?wyuFe>AkCCWNs7Jf?F0&9#oKzQAO{rzZ!eZ%3(;WqvU zH8{~O9pm!UGUt=%XrZIrM&U{mo(H`|+Dk>@lm7ryAxRb6a^N3N*Yv3^97Axfz%mnt z2k<|Utsc&0W>Xt<^yyp26Oaod9Pmy$nq7>ksx+DwidT<6aFx%>v~l-xIv#0_#4@@p zhBJ~jx6FT0iqq^D5(2_D01OaEdY){Sz-(^a7}%$8WJ*x!m5mBX|OUh;T_5`cc-1S~eh?zE=puJBZ`!r+hduk{sg9y>cM^+NM1HbEzD+>DM^mfbca zAQCa2d+|qV2WQ5-t8%9t;*?xIPbV4Rkz3efqZ`PdqF5y%;vnD?kWXr11d^@0L{u7 zObj#rpojWWtrqNgLL_saHDeg+TabTBV|Ob}KGhkM$St3fGX9ySBe>ZTYQf=`$(|v= zw(aNUQ~6F3)hBI$fgs}w91~gzD?Y*BLfJ1>z?3>m%ujy(^-=37%8=n z%^5uaIiR(Y4b*JR_{ojNdv>T1md{7JxP=H;1}1M^!;j}gj<#oI-ipq*de{1`-Q#td zW{~|(XhiiSR|kmCe(xz&KU8}b4q*z;i&KL!PI70Eu$G`2LO*x zoqZ|bDEu?0#Fly%o^P&51~;FWp+2Y7)7UWDwk?+>3%m>AZEtLMQ0P{=ZHB`Z9f>#x z?|YN#Yo+PBU7=wrqTqZWHWdaxS{}mU{L8|a}>HmQCSJ@%(@Mt_LM9{8=;IadDw zs#h#dI}XB|^+IxXFlb|k2&UwWXZKM6zfAL4N~YCq5%$imUl}I_v-Pa1Q~L(ak6Bm_ zYb!L=GO@ZE%8qBi;<;>w=>X~s6%RE}*CqHI_Ny+ZF9#;7n$BHF^`~L@#728%8(GVP zo}|}5@mqOA1F1F9^@xZifH)P*yjtc-oOT(d@;V1Dimsqm2=^0%{yE%##oh6 z=uKNSq)VyfxRKgNV~`ChXq__dILCg~*z+}Y?De0sj4`OUb?jLSNet+$2#wCyP{NZ1t%0+x;f@Re3dYaMry15H`ktL6g#}`eY(rZykzc?aAtC zly(T`_i>zOtqEai4jLo02wFOicfzex3UMB zjzH;9$7wWdMsmHmsn#Y?GDRti_RAB1+d#*+YNXndgnABfR&6fhF)umBKDnx6$!?fD zxa(+X_Gnn-M!hh2td7Fhj6}bCIK_A+C`NJ9n%O2DLExHdg&dkBTL=jxMxbXWk4lhO z!bu8);^U=l6zi1)@OaHgXFa(Bywk;WJCiBGt;GcbhwRx^ya5om7oN3*qYUp zJG&8qv{2-WDOs8wip1fuk_Ud(YKUPG0XZYBC)0;G>7GqIwo{S7$l`*_*kZ@Ifjj~; zL|YMndJexzkM9f*YLK#`a(EaOO0vigUXaCX>aFqP7#+!~nTjwO&#MxoJKwH*inADxO9_vJyTl?ks`68=|P>qDrZvzDsgKrK~{Uk~@+5 zS8vfZdkr-su!71PUoimqW%!q#Se}dXub8y`PVz`1wpnJ7CSQ|)r`sRSx)+ChIj?IG zSaO3#4kuvV*wF$AC8<*WQoP z*HPAI2-kwf0LL)ffJ>iJ{+_~u@Lz}YJ72TdM{zcy6a%$l0wyca`f*)*NwkXIHD9yC z6M_E#wxW%fBF49{5sxQAdk+a&#cHU>c^ylxPv==ytX5J#JjOm4fJJ(z0Gcr+Mi~TE zRo$16Yk03^LCG~~<6eNrG?8X`k$RCsPjMI@d}gcn8jE9tid%Q6GOIT4&Z?r3GRovN z)MgCCgT*4eJITPHj;8Xq4nXYo1Fgq9@j442+67HP7|^6`h#v;MY=XZTT!S znpdf5;z58ZKPMwmZ5DXbRC5b|4u=Y*I26HrJfScntG%|ELHnPTG`G@00G0f!&B;!3 zwq0S0M>d1QczwY+`B45X{hbdG+Q!k|Nnv#g6^)g5A@(EsS7Nr&RO8?ug-bq|6a@)d z9yTRgCJtDo${Ic(@lS@lN8ww!7hAD)j2)?RicC-L8~W8fh0dd>EIw&5lgR7^eu7>2 zdJF4WEw1h3o*4$$jzkQsJqR_yKWhH~v8i->iFI!XXvS-47c#*K%f#9K5Pyf|PCp-v zT;Q#b;`07kDCBf;Xsy>KH9#X#gO2rG)T1{#o?~1pd?LCMcuU4>YVv>SODspNr|h@KTIRI2QD}D-#Gj5?(5gl|l7F*H`1o=`x5bWU&5C+WQBAe9Rkw{~7+^`G z5tcRDIO4vB(0}2@0|wT$nJ_x6DUAL#Yk$};f=po+-haEdCR37s%xRDG{{Sa0-63`7 z;K$a_k|nwWih$e?HvsqIzP_LK4dBML@}sg~*(Z5(lZD6Y%~JL6_;rKGj$JPGqmyn} zILJJHRTKRyELYe_eyfeTI8CJMwR6CuOsG_5tsW-*k@%}chs=r}wMV$A^2Z|>#~%5r zb>5$;*tv@8&UoDqA&`%qW@YhmLDZ1`KO-FWm{LeH!Ol8UD@(B);Af61y%emc1sEQ+ zg6r;{K|N>-8%#8&nl6V>6396lPv=vK!tVHi{#8hh{nkJ-NEI>Fraea)&MBxj>{4jA z{kLdh8;s!l8Xiqaqj8>@>q_*+zPwae;E}w;k%83LK=Aj3Vn8mnmRuDZV)yr^VU5XK z63d!6)wUwjwKE|xo(TNu%3K1Robg0!z8SZ+vXfD>_*Zs79Wk0sZ!f?>`B1XMfJ_+{ zMQDFxbI1d^t0kj?@wQ^e(S}hhWkxZ9Lp+_9%y?An-Sp>1_D9B=1!IQs1^QjR75_AFGG z%Eq}HMQlL8-JEe%d(ajgzWqLxZt+OU;BW^|da2%#jGonxm40T=k1xRqZx|Iu&N8^q z&;7+C)D!{cFLv6)(DpRm^n(G2L!Gz#J&Zt^7+!!OZQy=s@f@0sdYE85r|+L`lXo zf!t<*KNBefspIjf!{M1Xa>OVD(wJ+ZcuP!UVCAk91Mr3!1HC`eZe*NYT;!dhfFJ1{ z2j*(Er^<`wFgRei2h@{JbVonochQf9RPA4>{{U~&uN@uA%T}79?JsuVym%l1l0vD^ z^P=XnVP>W?lOnetLJ0bfeukB4SBwOLJS2=x0X?yR56_yj#df0JUE5CA+6FmJ`@cMX zG*r_^bXTt}%Sf%aB~)>aoMZK+(YY*Ol{0`r&ta3zSngtpZeBb9#diV^rU?A0WyQ8G z#_ScEHX*$Rb5?|Dl+5iFOQceg?OX)|BRy)L;xUVjfb^@Lr5uu602pMcTn>basQ9KV zTqL1RBwx&Rqk1!C*p*KsKRTTnAEUk_dcG~TsWRb{R&Q8QCjdvg|0O>iqg`;;%OPd z^O+97G1P(SUH8Htvov>%YS->Ij4G(v&OgXIeCpHTt9uw^h(~gzV@@nU3cN4jyKNdZirDW_(V22U`ShzQj0{(}tfZ$mH*7p0 zqGe@eWl*_6O-3?4BZ~F!VLS&F&gIr0I98%8@1>I;5ur=Vr$%~7muV(RNy7>f>JuQq zJW~5+VxW>}#GQv)y3E)`5+i4{a4JY`ola<|W>)Gbv?xalQ_eIIATlZ#5#T3pJoK=Md-swrZ902wq^${cU@f%|Ci--f(nec`=dOTHgw zWmcXrtQ#s0Lhy0UGwn;Qym$LF@j(j~qh@C#9$nOaQyy{rL*Bl0{i0aaeZ;;BZyjl6{S0YgIL7dn(y>I7kTL<;1LV>$UyWfd-wF!^HlBIMpD@GaX(7x*RQO)Cw6 zV35G{`teG&oo7r$6I*Gq;wJ!x2cK;B=z3L3<5mVSaF)?M#saI1?gQNa06GwAw|5KV zU4=-U@|Z$-C;R4v@ZX_@m9J-6@Yn4}M~JL9I%?T~xDrM;0gjbsy79M!p2?+cf6aEo z6-dv*epU1R^l?Ec3dN%*3dCbHF?dw`EExM#ylP0UUmF%p$ogt6MQ(gAaV&GB*2O<` z>eQ>uDuoY|j1OwG=~r2}kDt0JIYx~byDjjrCpa0-1sNM> z8Rs~qHj*P2TvE!n5z<<$#jV9+k^ z4tml{)eMi2H)9zT#J*BQC!x(Rz68G>ho5RD6~;puCvgzne0MSK;I9YiK{I?3G3o^u zbV#`^pM;Op&}FG7k1)2Yhi>JudE1JF#2?Fb$rDs`^L?cF{9%r~vk2Fn_;l zu&u;!&QOj_rw!QikLOV>P+V=aHj+e_QCxCWa8#aszbb*stg(^?$lR$XpwAz#>p;rP znu<(5xP)UlUis>2xb8bMGAep1C>dAst=Bz=)7GSQ1&PQ9 zrYmUGNWqMXqbjy*6B57$1k)QhWOiJF0qSu>d0;p0!v6qDWu@9pJgSIfc4PNr1k^p2 zF5VKiv$YYmz!DZ>HWv%^J?p&q2S>7Gx0lPERkpU>#gjgy4&K$xKW2ZkTdhHo?)po3 z;thopf<9**>*;R=_;O7;HDPsa@BlK2g2Uy~pYh<**rs`;T0AFf_IyikX&h2E0b+p< z&lP!#cEP)@Ii$Ko*0GF9a9#VC;+@9I%akCGYNwMceH6gg*|lY5Wh^pfWo2b?$IMW! zTyCfOTB`M=aH-rW#j6zpl9WFqIvO8a$&ZGQwvWtjYDsS`J<}u@8R}}>h7%dv!k~1b zk~POl-qH}`G-}%nbgL%Wa213T#T5m(v;iZl3^D1d22$6|5_^ zFe`dCENU?dk(HH|lu}HrtgNm$f@p!{4rp-g8KdeqiCE^X8CPJX4cZ2lZPDc9Qu!V* zPfBp`BQ7yZ?yNJ&qhp#tazb5;rk*wQu6_G()|*THnQPZkNwP+@Frmh9WcYe~iLQk< zn%VoNxi9=pY4bv1bB6$ip8_wH`)y3{sNxh{21VNX7l19Y7^{aI!M2 zSR02z2YMzIwsqRX9CAVH{{WLs^*sz})7{z$G9r^IK?i~d1k$U^CbottrIfUdFqH>t)s zrZP!)WoGivFlA6nC~v$y2haJ}InETK%P2y7k}0oi_DRfg!q`!UILGB%M6f!jS(Iet z1M5~Bdt1AOo=KumvK{*r=N*XsDRtk6ZL_-0;zY^#k%mY#!tx_^CIR4mz+TX#k*}E| zGL!J(xy=n6c7>!}$|O_pkUPJFrBXzW6KC{i%rL zi_%~v2`#h=zMIne# zcwvl+$1tG%-qdZqhDAn9T>k*0D5XWZ+Wyx}gvwq4yeV|j23XQ#a-aZnl*et^=kTCqz?2-D4T~hD zB@~YBWqchMkPCM9rax)OI3w?4=Um3qS(?&7^M!M_0Z{NM-G_>-ng0NLBcU9SM*_1s zE77a)%`0f=G2CtEKNAdmxT&6S6JXxPZ>2O=DPw&(H1K~ zG0L8V*AjVek~(6doG+KWbluO?R{FAlNM5CAWtm>rZ&09Sgz@nlQ*S~m(Y2X#$m8>% zgM3?u9e%Wat}!-2<$yn(Epzb@It4rF)Iv2(2Yz zqo*0B5*D1bVZp?4Ceg{p+B(&QvV?4HLKyp;lR!Vi97KV_kUn&Eh77E$(U*=r1yak$ zvVA^sZYP*-1g1gv&MD(uE8Ez}LHP1t1GaE~ziO>pKE`03z#o~Xw{h*UK&*2dcxCj- zB>uHDnkF)9p{}Ur7hU`S1{>ESpQb?kXbXFwZIxK@8#pKZJbxsj!TOAT6sG1+Hvp1Vmu@}%essd= z+Tz|qq%g676*`v(B-wVQ(qnhJ9PEJ7$&hIXqlb>_3ggWaQUJHk3Bi znn?_W@>~(msWrZ(YK>|XKko|zwDkE=cA9W1QfFfEAj!u7_2btjs~XOssK>9#Zm_$m zd=c&h1|#^79{sB?6dQEC8WWO=xh}$BwP%%9S+?NhaZ^og=I?1^3?h?iIq#07eSb=l z(&f%R*Jp5yyfX#dr`!=lIt!Rdk3L>-2+j=_P2S3-OG5bNxPnEDVWR_;t)vAdOppmD zEDt|FdNiurM6l`udV>(;2!WbD{!!bsjcuJ`6ST9wWk6FsZ8cDB~? zhDXkxT*q~5q)&AySlJ>bJ*NO1an_M&b}0HZ_tVQOGqy?UOCG;EjB(Rn!w}-9p(GSpr5M zmu_C2jQB>}v?k%sRT%78Y_3BTftE%m04T<4)8VZhtzr8{pv(($BU8`Tn5C_TiD)88 z%##t8X#mI`fKt?w>rmgZ{J2#09mQwn^5vc_M^XFxHauSj7+RFKFR!CZ`=Ha5fk^|f zG`;U-542||-i=5hjmku=BX`Nq<622*-^9v*^a?5y#~o15$C_KS+kH~<1wXxD3CY3a z(Cw?vcVb3d@sN90lE(~q4oUgcb0Ry1jxt6#z|9sMd!SRs?yTNjQbQOU`VqnBr%KQ9 zS%WFuWFYkZ{VU0I6EnXyU^#`9|nJcDxldE=gfqSJ0m zi4>kWq>^q8)qxefH%%El{5y8hC4w@JfUhEIOOqO3;z<>=#@;Dg5rx_E>3#minb`Ys%3LcOK6fN8(V|4b*&r{S^Un)aJLB1Weo?pZ-N4mvFglgM!3^^5;K+qirTxu98i;AYp*($m{d2^<>5F zh7BULC31f2_3F6l4J2FA08(-bGJSK!IiJgKJ)vyzyn3AV{c5;iJMu}uebh+O2a&cL za!e$${{R<$+3)()5HbhyAJD8n-G{{V2P*GasQm;PLplb$;o zy{|y2`#iN)h^jL02P*1$S6}N^PY>v}(~y&_jUPq$Gm%hOX*agnYl~?@j&rkhTRb$O za*>^^cwF(G{VT8RhozyupWtXh18*cjahrrVpcTlRL zsBSq7I{c~SwcAR )EO(@aN?u`IbK=sMma6-(`t9;=EqCRG_D>6%cpyiJ(Uk?G&? zuUhkQ$R$YZXsV2?*_hzo9lQX%diAWg)ZPhq2|9M9#&X=`R5D6I>r%vJl1lSzNI-W4D(z zl|Lw7nH6(oBywY(DC;|>hE+x%4OotzvLCzFy*e0t5T>y4g{nh%f~js09gQoCEDemd6I0jC4(&g#gn_5BgN3 z9I(Nr)67?Z*1z#Ns?B5I`&&hY zWRB`)+)HB&tMK;cme10@VuIpWZOmI^Lo|xcPu@Fo!1m84r^~O*it^UVT|P94TxVftY;swSbjsg>%EjZ?4{Q7i;V02wRK zuVMAAWV48fqxh5zGROx6dKw~G$lR%CBk$!yj3_}o5vAA{ie*Wz;?vq>2%t28wnG!pACTsTyLiGID@NTKVHH$k>q{@KqO9nH#u&+b^{bun$EK|vs)w$AN@vV2OMw#AB`}f6%^A2%1(6E9%@XR31A$Z*OeD?i@~-PO64;p}P|DfQzr726 za~i`X-1u16I0Mp(zgVnn($W9`MGMFCs^-6Ntm|gcZ;x(C-Habv>=5~~U#I>K^7Bi_ z#-s250JAi^sC8Xa$|K8(RIxqqIj8r@6e+gcf(r1XicjG!Jf+OnY`IwD$3FEwt#X#@ zH0rs=Fg;I7E@;MCct@o`ylj)lgXEvPAeqchmvE!5GfUdy7iQXiv<4@>l368@f>dDw z23dw2bUE!$L&l0*do!|mvXiyYP0?2SxFUuf2Uk&&j<&HRfhfy>S2_<{uJ-x7M-wd9C{HYv^PJz-; z+YT9u=jIJ;kTiZ;vXh(^_Qq?YYd#r!OH?tU>}kIGi~w=a`Wo`z!je73o+C1Ov4 zPbd2n31O0uSm%pJJGOz0`&*oRK>Ktx9jrGHv+WGR5FB6; zziA&%Dk(f1A-lPPNbtxu#&eD8M{jY(UEyhLugaS!7dG+-WkuKuWe6N{GmqAzmqwY0 zo)C6FRrEdUpuwWFXwbTcRKPrTt)j4wIAm1^Z*qNVsZr9%yD8RME4ztTD&quk)c*it zuR2AdHHw1_L4f#%I{yH@X>Vka%De)nt`9?sX=84z8CN4CA6~|+sUUKbpFsXv#t2(- zMsRX}l}s)4>zGnYW%B1!hEj3Q%C@|oMYT(s>ysv^5)1O@WQ40Q{WbC z`X5@d$wqE$j$IZ{w5~WctK5I8k}c=M)K)dtPhM)@Dq^h+WuF7@RAT6<;jzsxGv}!t zY8RB}9ACvXTkCPCk{D6w2B34wq%-Hb~;1N2kWI^c>fkL;yy#&Bi#W z!v#mAp(M6}4nX3Fup1l-BIQ8_mo$bq;F>yQQE=06RCl5#UJWPFZ-ZbQ)0tcp%`q2f zjSwqgsm`3>t}|8VY&9^_XTxBcq>*SkW9rKB7&3w@+8EiDm6esp8Ch9bTyd3^m6gXC zSy@?Jaq_qPW?%S$JX53T(M=%JS`R)2Diu7?NO6((xWVV9YmC9V_BjhW8KPcMTj3|v zdm8#T{xWQ|sIz9z?SngigrcsmSvKHD$agm?KzGR9>;?zvgua^_4UxZ+vb6Gxo ze>Go5kBZk0$!#9$c*xih)E_ak#(k<&c4v%1i3>&s=58tpWkg{SX4{?IdY+ZO0yJ^M z@Vf#@_56BrX*WZWPUw&9B11f$bF9vCSsMia$MU2alx%gN!g9|i#>@xZ9e~AHt`a!N z^N9_RGM)X8wF4|@CElA^-FAXU017lETLF?ITS;V;#|*M;+JoXFjDIsrwWqqnq#NYm z6jA^SgOYRU(~8zBOOre!%r4l;!NC5-1}ZJ79M|K2PC7;*_lfa(rp~ z0n2gO7jAGmIF)YW|jt|SNRrSk) z;dLZ?FF+_bZ6IsuBl|@0vYvy#)}sz6!ftQ-lb<}YV~#biL|Sj}70QUrN&wpJhWdKc zl3GQ0%&D^|yO?z2IHN|1Z6?>Zx{*1{0yCtYV~}inv*vf(w(Z_++vaZDcJH=r+qP}n zz1y~JYx>-nnD<1?xf3Vm)|XnJDl4LXmH%gD=96o;T%B3d%dn>;zn4dzY?otM$%@WBY)~FjrHf~&<(qb$VJBF=>at2aYwh6!W&Iwh z3Vnn5C^+Sk^a3e~REhV?f(Jr!*%60+ zS4jlM&f4j&1)2`G!*_bh=h`_)KfUkOD<6IBH_RLXzKJPJ!yZl>!bw=;=TNtq8|wwH zR7Y3S9NApaToqSQkSMGcB_@uH}XT`C9U!~wAT)VqMO86Q2uVrn`R!GA)Y1N z_HV@_BGwH8%YDkTY!ur;w`|Zf8opN2co**2Ce}J#zT@#6sU|fEQg$iex;gJZ5NKM) z+fd%sqOD%nD1`;zxUOqbj2575_56(;k3dX?1Z_ppi<>p@>rA5+$&Hs@@@d}TC2Z6g z6#*$x;W~b`av8fzGOiwH&v+HtKT8Z9e};~e1qe~>*nJ)nf)`=mPH3&z%QRMiAu))$ zjt(ozTsU(^0w~ea5cdJw6nwY92q*#;0ZBzRA zI%)kUM(lh)LuT;n73VIryBdJE+@pEX=+LKmT&#LldiyQU;UKw93mJ|$he9(}F}-Re=nrqIQI z(4YtH^Wo^hW1usTg&T63T{=_EhT7R))@}_C-smh?X?Q;5`5WNzc^BbK68Be4?s96h7#unFR z=~ecUyLxG5u>pNzSGI8bw?41!vy{~W*@HHIp1~q?lY8@zXb@y%7#bN}6{-|}e_fmi zQj>vPMuT!|J8b@O?wUECRbbGFbN^she;QOTQZig3dsFb}6k!b)ntWQZ1i56(Xc(5m z1~GSe?C|?H>U`e-C3}VRd2FA!xB^90^5HKI&^!S=Jp)j}92o{5&_H1}@Fi7r#<1Vs^+a5S{7YT^&P5L8Q^Wga=8k`&jqP93M$i5?*zo^D8>5_<3Z0zo5kn6@&<_K0 zkez=B!pQJ1gD|l({4L6Vf+Q+R+h7sEcV1Pe@b-L9Dg7u7LoT-~*jzuaJRSYD>aRu7 zdVl5I(+>5xT1!a_${jT9!42*O&^ykDc4v%@+q4OU6lSZ7z6Dy&35@y|(uChg)8Xz6 zqY=8gG5LzAyi4t?BH(BTuN}WX+#Eey<$5pI0ZFEad!wxruz#O4DP-0b@pabKb(lw* zjV15jqk^MEFTihm*RXD1P>N)r0?7(K-Ez7gP7iMiUnY>Ws3b!84eVP+E;e8g5&a{% z8MP(LOs@~0;71}tF(*DFnj@dNHbAyew3InC)PF68(` zlD2jL(v!Nduzrigr|a;+GLg*f2iwq?Gl6iQLd`i4YQ4Z0p!qm_86rp0PgZGM~VuYbZ1C_@B(++wxl1cs*2k3di)a=X&?_N$H-qTz+{9oghsbCyKz zs2p`NeAiiumW`SeVMOpoSFv%~ZhNx&auwg%QNyOwBYn#lltqsNatz=%44cjnDdLPJ z*@)s|JED}F+?o62NE6))=r_9qP1=K+7h(;dDgNP|)AM+KdRP8Ag{+OiEQG(G@y)G8 z6tI6kdG0eECX46WQ$NJii&N*r zrtdHyWEdzKnr#WnL@$3$m#_xb?w{0JrDnFN?H(50vN0kZ|N2QoXvm*K_z^s|$fl!A z=YI}1E^a0CKpD|Kt7}t? z8s$JZby7DQgKKRL=|FZON#O+$%;s4hOyiV%IGf1B~i!1 z%$vssUZTq`uEJ&Nq0Bhdio;5SBq5y7${LfzWHJG-%98#o<*IS$OgPmP=_|9$@yB!) zsFKtJ;@R}i{F3hkS^eRLM_J^gc0m44^X%qzIDXa*BYumni5Xn5-qajq*mY_zGzpN$ zoFg6bS})^>^9Dta!6*3-Kr=D_OV<8JK(qhLAj}MZ&+LECx#Lml-!kG3<y&nI8qsnyoe(XN?S)*LT}d5bbLC<8X%r7+ydr z6z~lXs|g1%D1+V@t_(u(`dddd%L?(>Xc3oDkxDcu*;sr^Av47Cz*ziz)CtL32`IjJ z`bcKq?+%Qrqto}Ft?u7>G-3QQ^cVCXHhBvg}E^FY09(a&#}}W**dvi)%sS$cE?0@ zsDk~#T^>aWJ<8A)z<9;3w90x?eR&oIvJrlJb3`@Y=;j^6(vnR;t8IZ07=`u>3B)d_ zuFUM0TaGKiSRj$?;M|htlgiwbs-`$O$pAx`V9B}`ePDGK)^k~SAmZwBW;9bL056l0Z$6MbtLM|P|3)- z3}A4DdE$1FdS&rl*#DS&a^T@+eam5Je#Pzgy&hu%T`>q|c5s5cC)g?0=SMN*`(=t) z&sN)sF8u8C$$p8T@!H?=lZdTbx$7DpY+k(HsUvt+Ty8#coLV zXbq$dMNZDImC;k>L{|>fI2YD56(VSoUfDiq2h16@_zI|#Y&(>aH@Q7A1Cc+JWh7-h zL?gY)XwL8a?riFWNQto2s)J=&VLKNfT~0k)E$pa3y0}v8W;)52a7s*a%vE>vg&8g{ zr9j>Y`1?dZ7EXbDrfgzKUoft>xW&|GMo-QyfnRv`tnyTC$}VTo+&ETbu$>lQW0}`fp;Io|3rgrsn#)e(dEYC;fmpeWhVo zk4`vINs<8f96?!aD%5lBG5Ke~Ye%)aSL5s>0$0W4S6A|-lTKH3n?}oiE2~JS9}F=5 z60T^)3mL1tY7gvV|3ERzzdiZ?Cls^%+mz4D^xtOVzbNkbi{kQ_1R-%BJ$#X~ADyi? zmB$o(-wGJN^Zto*mghr4-KCQ%Ld;yqe&pUiB}>`kW&>9lt{q-%CDlxkqoWF#Q%ZoH z^N`PYG;sUGHqXYw7%H8H!JsgDLSFY4;_PP^M!Rade&zT0(H%vfdXxWwwGez^Gi|30 z^7)9HZNubKe{$$izYI4-d*8EGOvFmOtCPGVK1H0n#Fxg$!(0M@u98t$)lvJj(xWNMgnB_C=5-k}=bhFNX z-Mk&GptjTW?KvezDf+_}GmU-%}Pe>gSu{>Hc^M_hp^ZTeVIGbAp-n1S)JZkszF+^zp>h@KUEAtZS{8p^U` zM+vd&SD+a0v^6U|zj1S=X?Rdc^IS%$f9sfc;~;r1h2j7RRKcdwOo@8r;$ctW0CqTx z%mNq&26vEJ3_j7Gwv5uCHUZh>+1oDEx*=(JO=4ImyQEnf{Sl%TtY07>+0hFo6a+Lx z`fX$PPx*ZvN$rsftKLeKO z`VA??4+O7Y-lvlLy)Q$sHSb%mLO4XO90%BzAXhoTNsx6fgH+qMZz|No%RWHfP565M ziS2(Y0{$m#v;JGQ>6sZA|C6HsrZiN?t zA^GWeeQJERsY2;mnW8;A(Y|wXSbP{;)h)JJxWit!>U3JX{Z{|_e7WPlS%USlTU1>8 z%rbje6!NKRtTAq34Q&*+L7T5PR0toj#QL{XMx5TlgLAHeqG3x|T8+QTU8&wk#4e-4x#!U=b0Mpw;t_{3UdND;wUMQa z))xp}T#=%_kpY`5HHjnMD~?|6uxlZE6A%&~avT}V7A`h971C;cBfCX>TCWyn>@ub* z1TNAn(jq5ye5n_yec8|@*<=m4hboPCChU_bPdX;9H1kJA$U9E8*1AEYR+#29E?m4;|2nCe3E|P0R^6$=e%i8<|KPMC=-ur2I6Ea4`^+|!t9hSd7A&3Hl)(gT_s6MBziKGIZ=PZkO7WHkPYVOobi$k-o1 z!1_p>L$=OyCCV9J?-e*P7g~XT;13p?9^m*#B^K4HC|03QoPs9|C$`~+#sg@rl&cxX zX_=p^`gi|gCKI<=I*E44&+fU1(&=IA`SvzC!T~*0Kjs(?zO+5@k!2sL?odKi-)dUj zazsfw79O#4IV^%VEIJ^%A4UPGU$}%fYxO(CC9!dCP|hX|ktIAK%B$g?vQ*`#B{K<- z^{{EkwxENk;hn_#{V?*yaR!+4p$X3SN#__TOb=ED{0o`lV7EC6Qfcidl{w9d*uk)r zJ?_l>B{p4b@pxQRnDo>O95;Tb_5%1ThHxAsLJ~PDh+GrgpD7`VQ-27v?r}_$L^Y(w zI{ge;15T%uFuK}XhDVD!eU}(zB|Y4fvI+R+uuY&|N3=JUUBs#?d7uB7VVx_)@td!m zc|i6TFoS|6jKuLk0ETAYWEFJjFV_n}#)nKRraNth*NP|G>Fag7j4WtRjbc8{QBw@O z@^XlB65St};QVA7V`t;C*+_~_+y|RNAC^GjaHIX$z-vtV(Kc%R`l}Bw1dveI@D|tR zY=(B_Ex4W>M_e|WydC?*24Yiw`c{}EuSSFxo%jv+J&#u3IY$v8{DzSGqzaeK3}`79 zjB(0{(bIcTk45Z3I`wI00CfG&sUR1m;2o7@thfO!5QXSGAZ(k0;PaxdmWm%QPhv~X zL?qB2%3S*)LL4i7M*483utE-r^p#11xSSI$&r>bkQbG0#lh)yQi6Q`DV|Fw02T$#- zR&4N3gVgiE>;iocM}`^n;7`=YBWa=iEE7-`%$)#weqAIFRvFj_8pN;@m?eLf0z+ON z3m59CSG>53go4<kPySmg(=Q{X?O?)QH@s6@nI$X2E{G5HB8Hm#>#+5T{fwuK)X_qG$bk9a7QN_Pfk2 zt8cF0V1-XBgHKOK_g5+0{FV6;>DN|Zq zP@;U2_)CeU0HYh1xV+Ty)RAKX^ARC;dUY|`@Vih(;YZ1A9eY+_Klj;o&mJT-QKAFro6zZsp*lT?ym=AE&u~|>?3u__DA5|EB^tGD#323heR4tXRFJ_=pmK^ zTMW(%^u1?bkDz5EBw1^p~gZ`29ZD!v-jMjzgygcD^g4tGT7i=kw_E4m?DL zgOJbRd*kU3A+p!g4uYgAsd@!WdJju#0oJ$W6DnUErK-QBsxM&M8Q8~fGH@=V+T#4` zmT4FC%9m4Vg(eNFif8u&|7#hd2qQ~Yk{d8jT+7VDZOE{;n{kS-fMFHkmRR?WO{Oyx z6KvS}ODgSGI&Wt3+=;E7FCWGyGwx$odq$C=jqT3+0yN^sw4GgmcOMMReu5SFsb6`P z)cDTWy|f(~kZFQ70ZE3`eNFjL{P@ByY^CK^O2&-8(?P5)hf}CsDUpDv=9pF?kUI31?1IBo3MIKLDR7oX~)vlKoquo-5M z5k4&=62G9|$o2YU?#8Yum1M#ORHo-B4_iKNANFLV5Y3~xFt>ss^XOo>8+-G*^m5Ql zSC6J}LAs}VPB=OX{*klqo3?6gfz`f|<1D5?g%istmYbK}P_GLVtSvaSL3gu~^>tu# z)IEk7x}Khj41-5uzz2En{h+Fe-;IJ6lBGEngSmwpOx5ZMyM!|yDo z=6QdC`)o9WS#Sg0Xu55W)UDq5^yb61i8q_n*cz%m9BNT#O2VW5uUDWf>t3rD_T}O? z_CLLJ6qceJe+1`Y?C?l8;=K~YISb&j#qBsBgK_n}xiYescAe%UxrH{4pY&$APefB2 z1YhBL3NDuM+(SO-aiHT}(#1Py<5RAd9G<7(8gDthHO6;ZTxXNbIWoO{^&>5s-nW91 zDsgR-lfP6Uk{ZKrs7|5K9vqn~gVEerFn*pIaa-S)WNkR0HHi(j)R<+67>SD>a=jAS z3_Ap*e-6&jMTOe4JsBs2E%9R6L~y^oOzL>Qf1+UMrcbAnB`X#*kSEH=1YY38NBUDe zf6W-yd3|ukM2Da#yFR8NZVJwhdQ4L4=;)l?Cm-lPRsJca~nBl^e5cP(s{j z)5kuAg?3Pp8fRLaQd&hO4V;L)IzJG{2mRmrfbqMy_wTym-|h4NG{yhcr!>&j-G;BB z>3TQU7U{3AQ-S?KCIK4rPm%tvL=+tL9sWy<2#O1d*jPLKrA+7q|KAFPiHY@ZUCjU7 z<_4-ls3I*rX8%aV$A=V5Aax>bbS#CEYo??DK~_Yr2+1qK7sKbnj|udQ$04mC9Kno{ z=A%$P4b!lLSg4L{QCu@et6gntyjpQC>U{6M;)TF}ZtHlto!p;VZ+)Wf{ylXC4aP{{ z%Z43QxnzDcsf{d%htzBc)bAE=LU!0~&7FOK5YW94kSPL?uLEpGqllQSQJrBE^7ytWar$eM7TK znZUW>E&Q9VQ&gWe2a~v7wYN>x8mR15>)BG3!^8T%d2xh7n4gioe2gjvJf+g|M{^XB zfov)lA>S!BF%)t&45BEdVB!tByHxMykg;BUEqe-%adc}!0v3iux{BYy6nr-*mzU?Q_dpc5p59{kqe}nNQt8=>yGPt&-|O3+C*1%rG=&Q z_q}W{E!K=W_0yADld|bwdbLx#b%XskS$p1%5%up+0nKCuQcT$?^f#b6Z2vu+l-Iu@QHV4)m@QKi;L&7&s;KHP(W7{p?(AL-q~SLbOW?LzZpEXs{Z zj-{iW=8Z)@iYk}I;{iHZ@l|;-7Bp!!R!u%)zuzW4ma4jD9~Fpqh^^Q%y@i%n`I;3> zU%H%Bo;&$!ALj^NFfS5Qs}N$G}b?ZD=s6}Dc*Y*MIK3V9v@hKS)* z2Rlb0^*wn4f`fTopRu<-<)hb~00s))!W1_lxf~6jBvz=~bz*};tL*sPJ5k>Dt@$+I z$c!sFi^B?xd|(E%>5_gUD26c|^Dw-bW2yl?y{^X`ivy)ng;K^|22dWdO{U**7G??# zKlo*4tKl#lTlDCJsP!%AxFyxci7nWl9OTB$ap2INYjg=F1Z-l+Z3mK+6#I4S%pHJz z*`&OF5UP%(Ax5r+km4KIv&6pxgIUwM0j2&D40#c_qO&js#dZ$~5Ij zy*H4!=5>Xh?1u{iQNBVXoH}O@$q5l)y4k7Na^p2)UzR}3B5=5sza`b)C=d6j+t zV14DaE%O(2My={L1>fmT2P!t#*h_e<0 zqD+~9DnL?mV49DO4$dY4jWcC<-V_6^I)7xH@}fIFC|B>d&p#e$S6)jDSggJfUKBti|m&zYISvf`wyKb zXla4NdXpRo1wGMgz6{Q;#tD)cI0&xs9@DXVaxVfuBddu(xX0lD*+y<6$NvQoGru zki@-E46gZCtlN62Cp*YxdxLXhQLA~op6;VjNtdgVeePtM>&aEC*Ikwyo3ciVb~l^9 zBDZtuI7lf7xlM1Ht8@XCr}6x1`KhGFJ21w5H99>zhonF)kIvA@lKUm!cV$Kh9{o%Akmlq?+i8pE&(_gJAiR=xM zLF?rP!qb9iH~6|;$d;K5yLg;OdvMI6O-QOQ1z|AG3%}IGKFP}KKqj7|cMuxamf6=@ zo`HH%22mcC4-T7@lu{K2FGhJ_R7xDnKC=?7ok^Q7$}i7vG{eJCeH~IK`h0vC2@sZYG@s-}mz!8o zZA!gb%@Rq;9@8qT`a5SAKX4J>pewn%d-~8v;YfT}{bq1)cv|b(a2OSlF5vl7rrmhL zmcyx|sUlxcP?_vaB9j+m;=VKdB%@)R*^q^~b~7O~09teA>| z^az}I&(%Y5wdFcf3N@aA-QA3ueFy+VSZs6^)B8OB02-0fSUO5x1d6~E%%XS7q-T3WVUtwocjzd&oxMNV*)AT*X($>usr4K;b2=lqJ z3^Y}$Fm4o6v9b~d#!@Jc?I)FKf|vgsknUTbl4t-u>8Hn#)rhX8rwhspotZ677GHQi zNdcRL1XW;cDF}#oLR$U=fLNT^*EYrm%p4D3csa3NzH!$3V3Xj=P)1`k zk>%EWJ4Dl(lwMdcbNueH)-oWH&+rAd0d>2)rNfRXLRx=dvYIxiEu1{gNr57kNyM%ZoDS}=yWK?R8GONE@l>B zqZc;y>3w^+LQ)hF2$kqiEl-Co%nue)HjGrv;0OO!&C$=(cVj&b;T?o93bWl#YYagT zM6yp(J_s!^t;RP;^Vui38*%J+JcO~NG!oB0gKk1#kmI6X97nCe-t9337fI9Xs zI9*T1)q_zQJlzk1-dB+Zm1E21ada2pl;IjA=!Yq2j(-Y*9R=7=8N5 zk9-i&Ki+{W#G8M0Wd_IB*AHI|^J=#*dheCB`}<<3oA<{3R9QKH%j%bN&^5Q^UWgo* zke(zR4ELDby_G_`Gq^PbbhUC)(sCY+-P_N}2eM&uMuq7|9BtICo{j+p!(Q?g6J7pf zjVH^(n$kdmC7v*us~ojE&QC9i`MhJ zOl!YPfF;j-#w0Lu4JP_BA0aD!8|}%LFC4ePv9JQ79LOvNHgT7E@>g5XG=nImq@JFI zZpLg1QWlKOgpcKS0=2HXMj|vQHVR+N&~(?~2cQj;RBSZfh}OctUU}GINVSn4w`Ry8 zIf{Q*pG$jxU$xE60#X=BN){Vm!<3-p92*JAUmYkHpzFNR)h%Fb%?(tqq~C*6e)lHw z@^qnZZS%uYYiQdw;QuZ9HvL3Jlm|5m?8q zk|6b9=#g0`43CX{SYx2@qQ$P3o~eM#O*~BPk8ZSZS_R2aaO9y~4u9yl&T9pZk?sR4-&K(m9lM2LBWy<4a z@`ZV-fCTCN4cg1$i|%#_h)Qp=(K`?p=p&p@s&#Wz2$SvSCr=%fT)CE&lPkv4n7-==hz$tyHId+_9K1ZsWdq#`4qq zd0J#v`XcAKw!9Z*8c9td2`0ZmhDennN#L}5TkIrre7F1katyq^+BK|?CR!jbsI=wB3WxU5oM=3zSV&+VdQ?I3_6^X(vF84_M-R<0pdufIHLKz zMhBcQBfZ(_fgOp8=-Sjp9 zUgg-adajY0t=J5VJ;sI1E64TtIjBv8K?V$rv%6$YT}SKa9TA^Iw@h4&U-!p1M~3UG zE`MyjBhCSRYkRF0vLxk;Tzf|69Gn&0q8ArCFReq6*LP18Ol#M0?bQt0 zor)v{m^E*|iylOroIUY@{ymfmao9hOif~;pnFoh^?2{B^3hmOo;nP2p!Jld( zbug*+tc4B->KI;o)U4sO*G43Y3-(H4pUzget8xIU>PqNNO0G@yQk#;@-Eyj^EpYELOG=l>4w)LiLg|` z*(UaJ2dOkf;+|`$u#Qp3TwlSuZPT%ioj#mt`{R#yFujq%7@3fyg`is7?eb0*JkePV zb&|N{xB3GBn0%=eA{7Vhg0#rFcOHN(ypu#ND%16_)PKXR>tYc+b8=M*ZF6;n1_Q!A&dUW95nf@;LFR0+0Pl=_CS%SKs;*k>;lNH>Q+`$cSOkPJPl*wJF0m zk(9R2k9F~8d!DqDsEH(6XE4STh&jh;n~jc7nlyg(Q(h5S!vNH|tpU0T`7gT{KSy=; z`a0~SWVFP+g7$Aew?4L&UKR6PDqbm#{8_ZVw0vlwu!$$Xd}*6Z=T%>>C+c1*X!_Un z7aqgOEYUwzc>e8F1T)J&kCb^PtXZ$}!3SM^Ag@6Y+wauyT#zEv4G<`bk?`}CZ(_RV zCh1yLUO;VjwSNwWA}131e(&$*WyBTPYI65hRunxDjn24GRB$9!`P7eJ*fedZxVxO4eMR)sHrTy?KEF;snxD>T;WkYYMi3g$_1_V=A2w;ozJGJg2lp{xAA`ReEi+~ z;BCp0SOs`_HQ(B9ICMmFD%XT|_TepRTzMXq_+aKmF_)0&rPoVzwElTr7B1}Qh{LiO zpjbDW^QL&(7o+Ip(ASA?D4g0X^kL%Fm~Y?vrZHD`rk+h{!(oJ^(Q2vw`%H<~CEi(q zT;Y@vYiq{T^HEDnCtiB0nC5zofHI&8AwY5%mk0EU9Mt!|$0N^8~ z+%%5y#L;^-R|QVsth$r2u3xezyWyEcr!Ii%!8;bzU<#jPj5P8!HKA;1{HNp*d<3S8 z3fR7fH3$SWX};P!82-xFz`_8Q5aa=o;179ZF+RmV#9a`%d*gSr_!WH<#No|yGYUYE z@3Q(xLK3+B#W3Wd1-$7KLfOI92LOc@D98>GyZw@C5ct&sAR)fTD!~_s&I$M(NBK+8 z2*df{5IGS?;&iD1)rjT&GE#E*;0R73q~!Gd0Mnz$VR3{N0l3Aav~z-i)rigbLB!Q- zz{J%009QD`KKU%AJ6&!sb|tN z{Bu3iQ_)jOK?T{ny3i9u(r7+S?0edlB^A~TBWzUj9k`ru7fhG<#$O-rXa0S!du7B8 z0eIl-60L3}tiP%!hp^zGIW%L0k+ozI`oK0z^B^?hTB+P(~qMfbldl)7=jtjm%O zC^3QzFjPq&u~l}}JuqZ;)xMHBreo6Ei+oCL^erk_$VSE|wK^#;w?H+Zb4ENGlFata zEqqq=0E9tn#(zkph(J^VP@#jB>$jVh-{7CmF9Z7nTN)^RPOW>&)S;~cG^i1? zoCMaSp&Q?B$VD^C%voGb<|fLolB7@rX6h*;Cr!^c&?(L0JY$C!$`gWGZ<(Xsvp%pi z&so(pxPE9QK-{>e$-upqp#rhI?{xnc5s5;lsTts+PvqXHi@#;+d1(it_QJ&0k*IZ4 zNG$?(RVot9^!^?0vnrV6j0GK9>Ig{WN5^e$_lCsJ46=&O3oNlI8uNr2c$#3UZQRqy zLN#d+u<=nrB~FW_vseMwn&vM`5^bWY*EgFux!m{L;3rlO>Bx)F?}Z#i2>l)S>H+gu zjPDUn>J|QPjup3=Q&C*N_k$7|&iEpsz&9)SUpN%-rnREEnZma|ek4T#mz3uG;);&# z&G8kc#7uV-m1qNdfIReIUm5Y?(c3<-RYKvqkm|n5dBh2XFP140ak@zkae9aoq<2Id zioS+#kWjJbRH^_^d86gF+hkoHP9_^e}JEk2tp!UL=3MgCGK9?ut z6F_1CW0T4VT3`Cs7%F?%%cAY}TU~4-aT|&!FRT^XaM@Ar7IDb7^O~ohV_&2!JBT}a zA3rX$nmyfJ<{2V7en?K(_-=j0)*V0)XkM?1mekW^amFc+v1--EOAFQ}(SPi3U+6)i z^owT}w*UA^q9Pdo>pHlffZ>mKEZ(d)=NUlURDY$PiVp)oRah2c7UZYt=>V{0mM&?7 zVtWb)IHro(mNvXjX4~_KUgYXXJU<+<{g6m4l-VgbxZHhakU` z0W+_h{)>k;^^wcVs3hFxQ-jw(qm-VPQC4S?)gA7)Y>utgEl0@)It_vD(>Mxd`RM}O zXlKy{N~&YhFbBOe61UeSChP9<%-a|DuJ=|RDoBMJ5d_@1R>Ns8Q?}XDXgI_q9 zJiK(ed6^KD%LBW1>SOuv;h{kRPxrfj6txHw{!@l!`Io&ZM)rU94n@X|oBQ)22R+>( z7l-q;)kKk+Ny6tcLx|Brh^x0TGm3J;n;6auZ+86-{h5GBN$!>Pwf<@6(6|Bur-?(C zvM#r*U+y+ZH=-RD6d?jN_=;)t6gCnIH{%40Rk;kyiEi>jn4H(nva4BVFl{II@zZTU zVgxVr0%(uh3;66{Ztax7#cQRkEk&WuFdJcn4?*TC!)YfC#Elc2$Re_cq}xy^K3 zcK7qU;uZD11X%%ltw^^7N{v7~0*5Kk(5NaQXTN)Q-ULS?T7<4+69(Z?%~XR-JB=ej zrnt25q%(hQVut#*;g-qKK@?}>muzkE^4!2&-yHQrr4}t`VdLi-#-fFlrQOlqViOcp z=$7bm$&hjDTIR>KhPrz72pW;>Q^-I3zTZCEf7yHd+j#4DkMI9Da=&|zF?2PuupTT| z!F&F^fIsj#Ko0&X(BDVV|9_5ZW|nWe#Q$l3{^tu+szJCYD6Mu8tjiTBqvqdhcd}9w zf`b4DPx7yr$5sj_)v*=2rx!`L*_b_EkdnEl6urpgeYqdLh59l$8{Z#v0!B4s7^?%MbdI^Q_in}fhl*Erd#-H==I{aZ6YSt>#-H zq)bFhR84pm^DqKRjO_}u5@9LaM6ec%BZgduU3>zx?3xOvt2t3At z7-&?FQC!zrPfQgb2PxKm@pnZt*?F36YG=q#-DW8d>s>NaUK7-#O=9ssWjW#TgYoWo z>36Dc$iHnpt{;Y{gORyz-jTXWkLNoTXk|F*JWub}F=81v-Rt5w6FJ}K4~sv~P8L%& zjJ>ejoSB&RiMIW}D@LqPs#j55Q@AUdlRp&z?3fNr{~*;8Vb5F8r3|*H7AIMVy*?fv z)m9Ik{(8u@_s<2_O^`n!JWZd3=~6BOX-)!&mIP50`DGwQ|5Ed-yuBf;1++N7CT1^h zDF=kTPPG*pd2GE$%Hbicos*-~Y5fp%fw&XGyww2_?9wMYkHEf~cVhh2E#=~=k6p7E zvcw2fFe_-8gkpVYxSr3T6-RM3eMC<+T7ArSG;9G?0|k&-#{&Nq3M3IQ!+0)wCj8iy z3beo48Fn7`iUh8u?UwVpYSm2#L~Y}O2aJv*FNR9aN~a#nTj9Za90D&x(=&iehu0+! z4zDCS3JA1OTQJCh4!~_1%H5*^;oSK=c0q2Sv(?qsfC4}eleg^-!s+KJ;w0g*BzA3v zS}Kr>M`TV4pj&1@!Oe_zLiKD3;dL#XBtHp+js3PI8-&bjlvJ>DE0wlu)FJ%6)D(!R z2&d#l4oq;goi#hr>}ck_=sKEqmY^*DacPEwZqwR?Onzhs?&tsrSe`$_$3&)2xVx2EAyPb)qs+6$h9S zdZx(W`_y}e^UvPqb)fMGotT9rm)ZeVPF_(pA{ZhBXt%+BsM`)Gr@LfX%YMaKDzh(j z0QLW#%B<8Wq8fTK#N&2vyLk&T*gu#;!V$GwlK1ogY1IMJ2OxC{J;Q`^Z;u{!vMMZ| z)pTRww)t$Y{(|Lky-SBYeEI_Q^2x(15=5>OiecVkndlmM2(u9OYlvv5INc3$($Rpr z!Fd1KETc(8Xe@Ly2XfMy2qJyarHmI}(miu_yOV{dI^n{CbqH&>MhxQ@aITn}BO|Y& za8jol8mIDT*wDrIr*?0n8 z0BF6_+6T0=+CHb0fZy-^(csOQ4ag6PhAcze>ZR6GM@8jM9q+Od3-TuLO7Swa3aTOU zpqbi&0SOEw?o-agU@EVwXd>E1(Ut)|XK?^wdX<_a{79S%&40%2IQDZ3b$q3dwWeyc zGD=wzN&<-gl#@#x0<$EqC|VJ02BpHG9wq@~BFnvC>MQ8!ZDM-B9C0z_SVi&u*=B+j zI%Q-rIxSR$HT#2^Fk#c;Q@Czg%7WlXhiye?!Nc2Ls*J4p8-Ni@`F+fLfjzV z>MMoK8@71Jw4x@yJD70Zl!0*xPt>glt!siW^EZfj`xnK0^9b+pi4$%kYaDk*($i#? z!G5H&?Mf63>62xq^mM9daJP%)Al`5<4iwJ1+P!&<$o}u`vQOUhOcxt1(rjo1MqljP z-d;ZRl9^w0%|j$pQ`Dl7#}ilYRj@?P zE9m)!(~~R;(lV2GQ~LIlMM%{=ZP?W_nJxKB)YN!%4RINO6xHgos@mE!y^>}gT#;7` zuWw%DI?zwdH6MNU)e3t`h&&)j?0lLDlZLVtfWj0kzuNp1NIeEa7+qXDqKkB_H+w^=p2_Y*c~CTuM8gt^|lyD1;qdZ z`jSRT>=ww@L18ut$*Y_FWoEt|{+`TCDOx^fV(3J@H)V~|(kW$A!j4_8B|XPKm^)7G zRSa{^X<-A^IzN|xHW{jJ*H~zb-ddxi7Z_Zu)oUcm2s4P&rR&+a<8y>&OHHfMBHDZ! zdS|al9#kiuE$@Xt=U5RD_#kMc!D^%$M)qo|2PTqostTOM4Fpu@t8aLHZVch@L*}J2 zcj{eOdqjWgFVvv2v^a%&lzHu%z<5N)mPqmlwSjPZJXsPd(Qk2`Lgm|@V zpEfM2cjgvk3d=i~%bH7m_LaT*kP>^p{&EW^@JYNSG2n78B{^J9y0rC882unbaSe6= zSzEb5;T&dIvDAVYBZGlR^+A$KJB}ROoP0ysG0fdVf;%p4cW=LgJ9ea6{J)$rr8Rw zBpMkBX=rJnxkvCqc4o=M!nwREdOxJ&>E^>UTQC+;Y!5c0w0^y(x^^&kbUYMr#!s)O zaOa^AUl@m~8ydVTy>9JCr5b|PDdbJo)ZCx`3%&s2p8PglUEQNXaF}@)tc!ML5_@Ti zQUfeOFih4s>GimHo0)Eh30?UB-TRP3y`=AiQAyW1Goj?nGW-g{h`TDrpWn5lM?48* zQw>Z>K?5%d@$Tty3)(dzG_}_jwwe-Pk-AYtlDJ7vNW=U6bz97y}*Y9m`}ptIi*cqt;DEvuIFZ# zwHnGxi8*>VSL})oqxjnB(kZKfW)D8Qw7R^so*AXGpaB(Syk_Ti(4tUK)78>4kNS9B zp3{%mHi{2ql%mejQTqoYq}$58<^Ry*j+Vv~T+rY4R-^XIsyjoDr6I z`*)+bJE<2@5eS?Ou7w(dIDaIgi;a^Au( zgy%d!?y*T8lKHd=gm`Ud=Fo7PIr_<1NLloa_&CF^zs(yh9X>B0J~LJT zq}64m3%%!OE+2Y7f?@+PP!vb(116WN=D2lepB$te-JpSvzXM3`K#j$tdT7~V)*g4~ zPmlw>@>o-~^P{;^Exj4J)HPYTz3Mu*O95)nqaW%-3{YYx%c+p#&pPER-kNGcIm&tR zAxg*PKlDdQqx<>T;yuGyFZPD0i#hdVArB1Vzqiw8Z7x{v#fRkGg?PA%=gS_*{IY1< z5~A;wa}v@0X|aoo-!(*6wgAX~kc#on(hH*#w#OI#oeC;D2*xjntdFO-G}bl;-bc5y zv~G|Q{-Zm?q@ZK0Q>TC!d+N;Bd*snDU_PI;PYpKTB|3bYRn_4zv|$O!*dC!^2x85_ z{ZaGzWW`OcP{oa+N<#RFWoL(oQl91yos8A_dDV4r)=^w7^}T;TS!vuox14iGzvA7a z-D3f4i}Q)_$;jzv3x1=2dK6+i+v2;4iyg~I#&$PTl~eidKfP)Tv$ai07^OPap;W1< znAt~#P<)0p(Rp30p54JE=<#oy(0~2Yas=pVNL8JeyA8}kbz|f2wg@qBagF=^hgaR5 zE(Q9HqgLMt+41X5_chU`Q8eRAUaRfAz4r9X2`jrViZUN{=cM0sH;HoAKcX) z61&5doWHS^DpDhqcKeAvi$M+6T~#04{pYb8?qFE9BooN|Yt;k+4i2m<=u#Fkxi9OMGS zvQE_aR-c0X)(XAQTx>L?yuU=TT4W{L@IjF!{zq)a2N-C%KbSQ|-fJi3uJ8yU_i&n1 zes8iTrNLBct`BhJVYlU)t%EB=1Ve|keu0RVbYdTyO*0^Ji3qEQW zlBY2q5%B42tey{imxE=>N2Y+9_u{P?v9Hm~=ZsFzZ+92kK?x*+EW*+uOyVSkhRCGe z@|@cFXxFlVtxMWSfEf!;@D^uVGlZDM zm=ZhjTuk$eg|0gs{J`WxG?leMf8gNlU&3+DyoAlF>q!gZ25*Lkf)W8skMb3yp;|JV zt3jTh!lp_mFkPnnwbqV7kClOa|OU?DO|i4GY$yj zOKf3%jLI1k){HFJfg>9;=M<2uvks*JKNk)oL1-CM19g&@o(FO*F0X*Sl3~-`N7uD) z)4j;8PRq&zNr-sr;rUqX8tm_;ddc`x0$>j162QdG2sl;dwhyoaPn}ZIQQ9btELOM7PY$l`YNpQPR+jK^8;OKxnyjO<((S(YC zA5`dDC}{n_Kx(*R5Avj?et^Ol3=uJW=`9t8Nb#6y)F^r^h$M;gr&izrjUgEp_^7rg zO90s#)vD*r0E$~NB^1dKM{RCd16zF(Ib7B}?&s9!Mtvx&ZAf`RRC{5I(nvH6mefa5 zqQ-OLd{h76{W1p8EF72uC_Xzm#$7_dk>rbXaMJvk{0I`;H>TVoXwhikp8Cy7d`js8 zCVvXufI|q7?d!<&w=vyF%4)Ixaejg4@Yy<6Xu(mvO=i)s{p3$CSqbwb)(d&CcNln0 z_+N#|vSXg%H@zNRk&re1-+ zOBkBYw3ja!Bp|^i4=+Az(<)~@9Y=KKxqMIt>mPQ#(e~4VmeKfF(eU`T;4qQ&r+z+- zCZucY)L6%dsRI6!Eib!fgi;QTNHV*Duc($uqZ=wuS7b}(i2SuBNqHg)PoHkjZa>ez zM|qSv65eOcKrgj^SaxmIubBxMaWP&1s;ff_OA7Pbm|{32Ea}KK$wPPi!Vgc47b%8X z@DbmqF8m^!MxN5Z2ob%p={;#~(da&8{dWHe*;Z$JN2);Z;{p)@`xns$XG(YUhLklY zw)G(UnqE|B$`c1KIis4T|1tYLsr_MD2gke~rNX!^9IB#@l5#)rF%0?@61K|z6J zf;C{61Y~`(*;9r~g5A900Ovw5joQhUoKyQYF8z)b?F-!|PC+RePcBZ>IMBEvYDk-n z+~eHQU3^4WU)rI2@U~8~A1m;7ChFudBZ*#I2QqvP#oljGU zsAO1d0h&|*Eiop`Qo4t+u9h@iv^`ffJEWAy60}U0FOiyd8j^qw|KkG!9Ek;>D;399%i&J`G7|AET#XyyKI5%m8ls*joZKT0nDk#&0~N!o7kAqBsDBQJs= zsIx`s8Y19JauG`sivv}6Fz5Jd1k@X6g8cL_I@TbPQwRgzy={%QKir;fZqDRRzUO_O z#y7eyFR!*JeLH9}{q9CoOkN0|eG8M9ALhBtURGC6W}mOSrPn%WKf#f(tscEmEdPDF z$qVLCerFtd)<5WezoPZAN##}fe!24WCU@%l>Y|-dK6A`$u6=I||MtaWr06VUP(4ny z=&V?orE)vW$^^6gZD9_}thpmPjFSZ37#15#s;u{8yadFJS6qf~*}Bt98YjB8)~Kdx z;ab|V7$&+Bx_Em!*5G!HTT&`(o*`oXyE8LzSuJ6wya=_YolH{_RotkWm$a9+G8mmL zmaqJFvBljIEIb!>JV)@i0-Qi8{5UU}@L_Hq!=2tNkV_7UPm=GH zCJdMfKq4QWJ0DjWpO!p~LkfEsOGgFo`~|qcM+l+`1biE09w{i?;9QiM-m?o---SPD zozO{amw3l-SNLzgWRSO5-91Ua{3RLjz$JbbaT-fM4uq3f_#FQKd!>^PKt?J{N6;@N zj2LQyUmj|Lcox&!KuSuuFb_dImC53+dfxHgioV}yIW}mUJd^3=eo0oreQ7Pn%slG3 z-iM>bm#oFSp#^bLNcnGf-v8+o?LQ$R|J#&>PNpY~>jq>nqjnVl=NT0Kza8|SRkHt^ zDGL)D`+u#Nd;b=^kW^c0P&yz9Tg2vtI-4rC`(U;Xh(v^;4Ycf3mp}nJL4?*_<^KYA zey~JW1yD6mL&-{mW3lC=1!)i*^d*=r?I6Q$uy_B-)xVVC8WA9{u6axZ0$JD zdiXiv{h>xTwv-$@hR9}~AEVa`T58{=EG>{3%}NrInHNdz zgNX%19~wn!Us}_wZ$1+rT*EiLfNy5s$0HF73RaEYga&kfnca`G_xV&kMfR@87N!9t zMLCqPozoM?PcASF_jVsSy_74O(nN(xMZm(qhAYeFayX9|UEE1Gmv(xH@2=E^1*O%= zIqS8lbPs8FZ)sm4#`E>SD96TvtAd>g0J>T!idrewF27YA7&y(-pYNWAwT-1gT%R}N z=hL4Dg`LtdyT`6v&4G-ZHl4TGRnur-V-_fS)@nAYbdwQqsdQ60Rnl;Yl)5-7RvJ2S zIEz_X9cn6;42^(viVA_ru8Yisr#Bo7i_$+b@AzFfoT@h)EZ0m6Ix+uUa5g`i? z%h@Y&CF==F$m(1tbs__6Hh?!^H-G^(0oANWwUW0MTNPT@j+0K%&dEIbGWtl-KaA0= z*Gyh#`p4Hsdr%)Wp9DGudR!Vmw?F@bV}bcj9VmJ=7<c%@O!%9B2v_-@S{DPX2;$JEvwc0j--qX5sqR~Y{n9& zoHf2}6~dGRZcUH$y$O&##NeD1AJ|i{SR=3zc{`|DS=R2W$6}A&;Ciuozv5NE*WuDh zJP#F-dlq=NvgCk5mZWCUKR`|jCpefQCWSND1+VU5MYYr$1;pNuS6RBr0l+B@i>BIC z_T;#u&hCGpnERc329ZY>74KEk;_@KZk$Tl+wYt9v;m8Ivs0r{=`fkdy1>8_5!n+I@ zx_3cy=yQ9k2?3A>Bl??3XGrMlGiDN%lBg|TyfV&#XY~POt%;p+hRF}uwc6gX%|`D* z&~rJ_uTcut=+m6wSI@muflN{#wKanQ+c(ZjSi;Z}n*T_1~zZlX4;(DtAfFJgunQ3>g3|T%MvMgEW=%dU%1${Fl_&$OOB5q3rxH-^y1zF=ztG{ zsZS7Y+v%tM3lWmk#yy_(w9ToX3>~CdAhgTp?MXddCS-a)_U!EKvneH8|NAH;UCWHj z##h!U?!v7ww&*>A0xzpEVwH4Qyt!48F%>@bf;lU8~Q`cGY+*TK^&&_8t zi6g#&*yO?!iVO~_dn0mkt`YR?QGd(k+QUrM6~R|ZN@b0dFXu#r9vz}i&=x^X@Ueve zEt-UZ@n8?Xc;^5s8#1EvF0S7P$RCu5;lc0GC*(toG+>lr9jNY{<7QWmx4?;~_)VMM z4E!PnK^4Qq$%nse)H2Y3c&n0F1(0Qd6ZmC_NuG_Tm=o5J0HfZ?@HTx{IhbPSmINP? zi=3BQLm?y@W4g2ECStbH(&GgmYC3}z8EUW$hp3Mtb@SRTl?F{gJd@X`DRq@hdZ}@t z0k`5vM~B&qV?ZDt99L8!Ty`F6&Ljn|Uu0&OPED<>0d)ECG5IGvic7Gx9VZU|%bb4* zODR`B2dPVfA&{sYzJgDBu z?5Ha;^qAz^K0X9Mw6W`rVu2N6U+NVe4Ia*Cq|Z+iq!|nrPY@?JAtgSo4AM-higQJ7 zeT1@Tc7cN@2%fIxjMC0b%#I6=g1QW+->gNG0)Us8&ek_@G_-a#)Z7hi#0Z<3A?vX3 z$TDvA7(GJaNu-HaI!v>hhtV&yx2FJ4g02)(+QWubVv~4Rh6LiOoML9?R}a>yF@xM< zA3GPto->BLIZDN8$0Mgl%VfN|+El&+$A*;HfWLhb&1w7hDedi%Qcg{f(0o$J+%N#T z2Y5ro0-pl5;btg&A#)0T&_B$rke)bs)c3|ywZ@-?YOn=kWb2c)QjGT$^-OQAU?>a} zST#({H{>fr?>^BrXNW7@0&tU5GY6Ozq?KLZTM(G#G#?RpTw%6I$2_TlqkW!MxDalA zpwT%VED?|r)z0m5qg{tTG!VleI4o}J>aHRwOS)SB6Q|qslOfr*7R;>gVrKYal%a-- zXS|V;Ft$eBpTu6?XDo@>YFyHiMiu!OYhwCD{bMYxrZGeVcI0`dokk>Aj2t;8S;Yi3 z{SsO|(T1;6M6zczIA6Ix36iM~oT-wi32q>obFRre!4IGw%x7yM^`><02brf?CGvn*J zwZiKdB)CtWmh|KtEpGd!-JyZOhbOkuS3gxi<5MC=WK*nWhM*+8VUC~>F2nDWtrubp zi^$B6BtZy~ZzHFGrsjftp%tD)6W?28;2lcJ`4h0j07TA;`mbK9WDT?@j;DrT`x-4% zYW0g^+RVZ5nyp_l!!c5E$uA)N?&p36R#Jc;OyV`Il`3P-+-p*G{c@ zBtycT)8%wDaq_;9MlZbZCJ8SUSOM?>JJ78T;&6M${9;95ZH7a}QP-JR^PtZDugj z9%-4gg(xxGtKT`v@&-(UG?Ef5#-tE?CWYk^#MmZ9RXv^#EfmdjMpQ>Jc>xyu9pg&r zQlisb7kV}0BBJfzC~wkxRbTQyo!@G`8>|tnDQC~VG>g6Fa0O+_bWNoYJ~r{&A^Ah} zQBCm`dr(Krz+iVeTppjAYQb+e+gtZjxp7*i`_#es> zWR}O*3N@^yl4d?GE$Z;E^*2)G`VQj%QKkwE+%cq?3Z^h*b#OHFMP?!-)8=x|QmxJS&UvEhKERT4e zz^Uo>RuxN@LyuUoQF)r|Ng~%FuE>Q999ts+EKISXQ!b;UnD%=veyBW&7QWL8IHuFy zu&ih!dra2z2cJI6m4{n>XmqYZ@VfJW7h&%A-lrPS@U<^dlc~cI*eb_#=Oakw5#$S>=tk!bn|o@VLVQOY;4Nnj0bNZmrg!894LyU_LyilppXn z1Up$ppCLKv*1G!UNX34Y=e9p)h$^J_5Oba!I6^y5Z&Z>eq5A&I`3bYD#YPKdGB8Wu zcDMDruSNIdP2kvrn#^Zc-oT-aq6|O3rzgK5nQX6QDx{7i+|thK8%crJ7_k^VPsN3Z zDFo}N`ANUsG4iVAh?*QhIklG`nKg586=zpbs-#My1{Avt<@$MZ=L?pEOz@gQF zvz~LH)|MN~olV^g#(bu$d$Wf8;W#ImB9@%YMrkQJMyZF066)&MK+dGf&sd5;f_8RN zB$UEkMOT#s?!p5O`#2_$6A(4w-8A@a0Um9G?~gW^pmmYXBpoqqo?-okf7Z5uS4@4M zoLOnUpk0nu5tJ=5>WR_j5sG)r1Y4RU=`isK>F~PrKnoOo=xAjZ4_|xnzJKf+P08j~ zHt9XcDg`Y|OFxntS5+OjF>A#;=HD8>!OIdGyE04rOA?|N{2eXn3_3Xoi&RWEx>=eS z&A?+YNMz`_-}y|aTm7-tVknkp%V!Z!iw5|NM8sA(WOa<0d3m{I&#x&L3CI6mRxn(b zHeIPTJg;sSvST*T-Z*L=!flvUF_gw`1Aap>Q{ca4KbxdVy;Ju37y5fU;>-q?ffLSx zD(xU|BNC&ybiFtf@`LIYXB6yMM)4IqTCz{95r@`~Yduy2_*r;Chxkshn0Ln^!VYm) z8+y7DJJ=E^asJi6jvu@PRpNG^@Mh8Awc(ep350B9|5jfacJ%4tE9aIiaL&iCQ9JuE zU<{qMnS8o-Xwq&kpuB=qc*8y(RZiY8X}5HN+NN#&!>M!o$Bt1(JMr55>p(;Z(8lj^ zii{$YyZ2u1+73QRlUZl}scz@^rmubTJEqP+u;Hw4sc+hy4|EiKk$jsSoP8c_aX&0v zc}BfH(WeW<_3KSBY+Ny8JR_(c#HA>OO}MwDb4VjzaQ3SPjzouV#5r0u+7;xrv`7!< z6mks4*g`;uKW0B~L(1J(WdPn_@_tTF;5GCIJkV9B6MZMmg6u#WF84JW4;6?co>j<- z>2`SLYMW$$Z4B$HYFN3~7Cr=Fe_)-`)<(oC_eH(YB0TD~9xbZ4lrAwfsbss;)-e%> z)|T7SSnOZBx_eSBxO;XBvaGPl^^hW?BPfYO|4wH0wx!~v7d~#QRG%Fb*3`g;X*&rc z`Xzm>*O;d=doH+7&Mar|Zm(`sTo})14|-}pptsNVPZ%I0i`jMt!W%dy-7zP-ztO{w zJl<3ou$zS@Aio0?UM?D=JODmktVi+{qCPbZFq{(Q{*-1%PvHj~TY{ed5GRrzofu&q zNkqy^$NxcIP;|Gqk?DttNh@q{GskN8cUlqYkfy30Ln|1Jp5IccyecnSHN`U;+n|iA zEYD zh^k|L3bl=brhj$pI2yx}LMXcuF@FMlKGh8DCh~nlw7j)h+5LA7_sz3ta#fo9oh!U1 z%CMQ7+1Q#=IZaMAjohcG0hi-_;rnw$bGEs~p!jV6aC`hK zvkwecS+zVJMgs$k2NyIg zmdMDV$XoZfVju~jZ;W=kvx#q-EPB{TY8@|)tSmFyz~i8LH$MJOT3_%>XVNoH1C0Kn zhRus4YhsbGFn$2}2cJy~`c6=o{;oL2kL*`z3%5u%R;6#f>6xrRhpjX}#vekp=A%kf zlnJ0k5BAEH8vbKzqPcTIGuv#vHCef-AFdOC zd%*g%sP;2*ixZ9ewR2l z&(wG%;ck6zBCLxv6{2dYKR*)#1R1&wE~7{v{$oCIuNZTIGHKH!iY_tav^R&uo}Tor z-E6I6S-FYYMlHCXz02G6|HTW#$n>A6rT<^m5%YhiV*iHCu^V*1Ve=dEHDI{9(SF=e zI(ohs7je-HR9eLq%}|I4flN}+Z`#~4I~}Ez|69akTYa&=o&JB)=JEeYn{yhg&(9?_ z$$am!SpTPq7b#in^iz_y{aJ9i`PM`QSxE*c|7XE}Z9eyBxf!-_0b*GX0; zu8IcD`NYhMJHXRuK>mSYxv`{lL!k9K6sc5-u^LZfgO(i=J6CP5F?N@^gw+3M-lifz~rJj)&}fzd{0eLIQtc zpT@4ihLAT7ya9~FPnf|U$u~w2rZQ(Rhk-!`nNN(T^j8Ql<4^Hi7!H;&(i?a|mJ&CJ zd^eaV{jw*pJU77-qT}E5VW_|75Cj!5GJyFHWI+DiRvLAr`NgN9WFq;FGX!l)#?bXB{ry+C`lULHV%rc&q!_5J`L zPJig3D*g%r1{nlGq5b*OPzBZc-_HL}gTnt!6wSu)pHIgBxA5QX0j7kcy7@yjd8tP@ z(I#R#1^v9koHA5qcBx%ou)wdzAt~=)Om%s^t^K|*IY7XMhZoSTXNzAytcDN;YG^ggd!8AcI8Se%@qT~!;C2*FtEMJF2!E%_YSf#)cP2!kRYynK zMPakKEKAnmaY)xJJ37|t!TpEpWc=EL_TwLBYUQRf#koBpKxE zr(Y285@efM%>A0F{Q>oZ(UW(w^%*$LySZEkvymyBV`x3W+(uk>JGK1Nc6lLjUNsm8_` z3j^u&^!n(6G~#PtI3#??#R`JykO; zwX~3HZjo|{ert8oKIfrgImR&%a1a~S_URT9`oRHhv60jpEO>QLBKk^Ut(FmKs_B5R-z%i8WKwM zupY5md0A^&ty#xu-f7%v@Tn^%Y38~?fBnELhE??NaEn^e?hX?sSY|zoq_s>K@84R4 zi(y*p18d(=?b{n7Z{l?Xp{$0&%Ql(z>|ayj;@b<2c1P9C!d$cO>amSfEAw{LbK+&M zx9y_mYR88w@4`VKP7b#XM;jYcy!N-?fXK}Of<$!1K9qG|s zYFL5x^w0Z4Pwr#&TVLkcOqLOHOq*fKLG0Jo``1dZo!^JwHjoVLBgX4NUK&3ss3a&W zv^ucmjfoMmG($1|Q6ZYbYEl*rx&QZ_>{q#8&7I(mL>C*bp38R=94K|Aoq zfMy$atpZxBecf)qexcx#^r`(@M|ji`;bu{(fGRwtKr&=+5|BBx6MhC?pe*;|ZhMa& zA-8kQWPo3SHFB~rF*5r&b7qs()eK>X#rv4~>|GUWz06a&g}vYQRCT^(t6Y)6#=%@9 zHP{Odg^3tx>{7N(=;^|PyKduYp`n5Tr^EBgH0G9NY>t&hu;L=R=L1JSFtx~9A3I+Q za*q4uV-%O3$sWPkS2=4OTd2F1*V{ts(ii=|JRPad=qfD-#nM~-&EM`q^Zsw~X5=L~ zZm(`Oumx9r3414*W`hnr9GwZ=f{3{zN)Y;z2H%#a=F1L7Ge)D>aYY7uEDr|()ma1v zigMQ>pvilK$%DsomX$KZN4E7`CMaM&I06X;2IDo=U>yeB!qpXRXgz%~ zpRN$UYXO=W49HY@NMicYqkqTWT8EYa?cRm#hES}98*g@pT5y*g%8+z1+HKCyqp?xX zd9a@y{x0X%NITa6yO$%_NB_|S-&m|`{}_3Dlw5v$zQY!R+(f-P|)-XQ8CnK*IE5SGX# zm>D_j^s`vIO$K;=+a2E}*#2 z`$BQ;u7~JR-Xtuw!PW|G2=jJW8F$xxjq!c4_&}ipN0)IrVpz>nra*{T?GD3w9(JN$ zcb?#u;5><1ZB)6AQQNItmJ3c380L`INMN#%^&{gMSim31t#LYD?zAzlO!NoflRpx1 zAhyBi3GmMTHOMne=UcvL2?Y1!a%AmJdaljk+I(@0`AaMqWyqUo4f=+CChe5n>!k*= zXqdl0#@k}c7cT{j8m|J=Qgi;>A zYCCY41vv-|Y>ew5lZCR`N-J`AJ}#D5-?0om`7)yf0hTOuutXi=bR|I1E3N1?z!f5h z0Ee!xEzH2=9{RP^gqS=CvS1kzd1Fc`Gk0X>@Qy>^W(N6b=tpd@{j(>W&hx=_zrnoX zn1E%3LYyQXXP+n!yiR(cVB7Q7y*R&Tu)MZ3?LQx4@?F5NlD(E2(!8@GO{IS`DBO$R zxD(6H%+BP?I4F);`(ulpBYd*(b!-WOT}$agYhR7J2M)g;sl)qqtqMa3-xA_W8j3cu1qo}*u3t6Atn zXI4s)E!IJqo@e{5ZLdk&j{kzeK?>K~W{PfJwa6i2=@DGK{d@#6pddx41V? z;k9Q6CDQZhR{pIsj@(C3DZ%aZIr=;JnP#QQ)26NUhg0bo-8zPOmXOj%N1IYU^gZI4 zY7I>dbe1wYMgy@M9?P5d2W{AsUwYy1I_nFE^w4_{3BHmYytpPY?yon~=Q2 zMhICCK}icB?2eu|kxgA2@3*>fKslg{jvME~&BUZXrV2jQ|8yqI{EG|*J9(A$O2u1Dg;Z+N3O%3ABv6Ib+m{Y ztulKn!I(eJEX?3Ie>^T#tf%UolckO_koCy1&mo({t9&hhRi%pq8U_$Z%JSuvrGD&w z$++)VPx;1|*Bu>A1Q}ks01SRQgJcQ`$o5MuTWtZC`%w&_)BI^nY6rc9N#T;vaQAtn z0j9>B&C72jDP2Wl<5ZPflK;R22h`0LcZAQmOuy>-9b=hsw-kGIXS0&G0$cPDENy9Q zj`G*K{+<`Jhnq(*m3*O14Kf-m^9fTTARs}QPjnHbuo75z-bRiR5mO?P39AI~*8-up zL))rbi%m*R=5y?BgTP*2m(`Af$aXyM4}{55@tjPCb7b$4D9(s0^)&jSUNIw{daJ9m z>q}cAMaB%S^=jXXQYM^Q_9DgY(7@-*^zF9j@!lM|)uE*cdR2Rx z5bzkZE*U8J9u0WU!PQ)@#k0B4Ew5GZnhH{L>ZCqhvD>W3lyjzLmRbQ8rp4;{^45Sd z58#`#;+N0>nv8_FXL4vNyH!t7IIS9C-CsYw+t6q>VU>K=nf{^LM%RI_Q{J`cH^%RD zNma@S;-VXi{L{z2}+$sIXgH}aFlnbD~$Ep*G z-sG!-8G2op9WLumf82l6(M5R)BpJB=5bJFvjhYI=L|c31dGd*p6*`Iq@zh1})1iPK zP7CRo(HZIBZ)BoQ)0UaJ8NTM56hE>pyV&2ym`ob}G@9lQM*kx!%UVucxn zg{DN(5l_izWd+kY1-`5uej6d-+g+^(QWax-?po-$EAhdelhq*H|En1|W?1_k1eZ9vzj&HAu_SNF`0 zSUEm9HBGiTs{l3a=RW%xx;f}XTwJkSIln?x+%g%QDiJBksJwmpc!&|ceK3@GJ4aqA zjJi7L%J)&7s{EN6!~>=N=jwjyzN-;!1`Py2#wigBNOP_rz^C~ZS<<&1hP3ZuzOoRV z9l9BOeIkxaLz*idTT|lEMH8^n_atbnw4~%%3Cz2cV8vYJ^tPS#hw?AXxB5rG>bL;1lEN14tv~+ZZ-c zbSHcGhiZ{}xR$V-@~u2s;OIguUWQ^xoYv|as|~pEiV^%VfVR&OfobE{<491MaF}Yw z^k$VVQ5jya5&1J<7c8XFppsZ|DB8k%jh$M&Y&7SNSD1Db`8H7az-X!_dLZL+<^Li!UFKB?{gttAd%(5bA-dZP?D` zM4K(FYo>TU&OeyImJ`g(nI!se;0WwG^I;a#?Q1;~UlV0~)D+r(IB~n|KS3X@auiHc zJ#)F(4{{vF7q<{mbHJ^(fT+e+PTXuBK^y?E$t#SauGiz$#c(TD+gf7@E^0Bp=ljwE zxD+X>X{BjYW(Jdv_3KbPNdl@&0=te-^IS}j(n8mOkZ92(1MPPBSOBDb(^Gw1X(2YgC}F?-B=c1ad|3#;AYhpV)TXIe@*pghf2IGe7uZnQ?5a( z)(u295K#8ybQ1lk+@&4M z_(@&8%d;kV(`{=Fq7u)z?0E0mNL`!6gZ_^F?#EC2J$13OErq!2 z1n3gHwmQ4!->v1xrw)SpiVvFNOqa(3k@e@@x~@s3DI}0E+6$Lv8|{5WL}}zJgGB^z`C{6i+KIA1)%st({Qe@i7W*M_62ed(N8DNDl6F7f!WL z9?59~D0|nl4lFSf$jO6(P`EY z#K26<{n3va$2Ex+$ign?r3yYrtBQ`#07$rmd4q{9qs?afz6@Nd?MEqncxUne=$N;p z(0-7Zn26|Ud(xXT-1Gr? zilT36S{tnu2UXf1%QH!B&BId3J4kDZd%prBk_YX(b(!b0awh!H`KnE?@$lJD-tX2w zrkai=!;QEPa_!r)E%v+f{o`iNLPv(c6n=*>qJD<5E72Kr-GeleK#g{}^+|mRAu8uP z@o(BL$ZsFjq4`W*d1~yli=KDxkTgO!LO<8gir2qiCRXt4UD{M;{418Gbah;7JJ7MP z$zr7)c>UM-O_m0Q-Rmj5AeBQEmPUsn*1Q6yABH z=nK^(uorI{ZcQdZ~7>+eFTJ>c+5BA`~fxfC?x~^nsFx%1er}U_RkK$-o9=fJl55S&TVHghl&NvmsA=o zL=8ktY=O=(sb@a_F=WV)cc`x3wSd;TOkI2H#Qv@Np|vbG?vMs!AaC~HgagB^bk3@F zv(rkYO2a3|>>@rt5|e**^Cb>0UZyNHFix}%wEI-)U6BK-cjaxS1j_gu#6r9N;+!04 zxPD9#^dZ_)6ip{&(i~i#H6#WRTKUZd=wrdrF!w_I=qt{Gg?e&j;;h#y8t8`F2Fyo| z%Y&&1cLrW4kF~`Ig&-Iche&aF6jXkIgezL46#H_D3TfT2EIV5u=WM@ua)DwhPcJa4 zF2V!3UHRjBfGtTXT^VU8?f46qeMpDH{wMWoJiPRJ)(lxQpLw1mzXm-Nt2(+tf(T;j z&}+?5CEyn3=%N5}+MKOK<6^bmN}L1L^+ZdycxM7d_mzZT!`EjS`-Q12Y*xIB5lrKL z(0M}142@l?$3u(s2P96ro`uBd@B%Ht1Y z&Lymn>(D{CL`6N$OLA-2HRRO6S7lF=4&#k#hN)R@!DSVuoj?}z10xQROufHi-OBs9 z)qtdx{906n65+C9^6SbT?Sa@#4KEqJ6Rmh=rCHUm-F&2#OS&Ar zIm{(z&3@x^7*6TvF8q4$1?o}?1;x+mpfMqqu6fzT!4?Fso~)I@3LGc-X|XIXDFsLn z4XP(7rFHoTyoWKFMDGDrk?rg*XXvebG%(ymfSb6nv4Tyw24M1cdJp}9yL>E;QEcVB z>FxpI)RUd9KY&Gh6Fcex%CyB*enB_7EAL-AP)PobIKbR^n;=B{6psaWy!dxqH_n)Z z=?(&6@7KU|}Lb{_V9?Ow!~-r!s01vbjOo^p17srJ$cZ0l?Sg=18$50HL((sZ9I zvPO%BMk~=C4|=n257pwJtEf0=nK?CQ`*3wR_RIrH{pYZ{f|WEd09Ne^I1s0-0@F)! zyr&yqofpU^@t`FN;QxQ%e2_vk@14sQg{by{n7T_5lDp3!JSs zM1?Eh9ow`9xFg1^B}<-1cL^}Sh#7kkOuVPkmeCKu6&?_RrHOHReR3#+P$0P{{zP#} z&4JaHo`Sr+&w=ZqHNpb}vorGpL6U(^HY)*TgO#jLL?n8lu1Lsx@d>N!)Np@N811{D zXbJ?H)H}(gO%t+v6vXrLKnS2U5$jd=vg9Lwn4V!&wNd;h#l~!K8)f_pN|RUC3a>ve zgIepy+S72jI2}p6x3@n>#@Af)i`G=m$KaGUNaF~XSt2suCl?0&#aT=Cl;^TSKV@UK z4Lh6csq40|q%&UUp9e?+4t^T8M1AQ4An||P^!^NUbacGEl4N~s&SnkH|I7IV?IG2@ zpP3WKvmFNz*W7nqBPOB#yFHHQ88nN*=(8-JM_V;*UKLhz zE3E_+9r0FmDfET@{^7k?(r{>sTm9qqgaBGC;?pJou%wS9D<($jk2J>q4d_~Ch{w=; z#r_h4=A@EOV;ctGA(Hn!$cu3nz>&Et5pr|)5*TL#d=7RMcPl5x^$H*XiS7+CwjtSn zAq2ywcLbCY|Dg|i?P_12;ed;AFUp-GDYeBmYwj?Se*nFX>?0W$jqPd+ zuV_sM?ns4?JNxUqN)*BE-jVs zobiLKjCi1;*w9o-RFp{t%*9%HB{$eK%@^+iTs{32q`B5u_rzyhW)BLax-jPCt&W~7 zxOYTp@eh@IVPvi3eB+`9%QQsvM&{CNq;B&;4GY#KhE1Lb2_LH)JXF9+jsr0}cr+cY zJ7X9+;S~d)AF7#9O<+)^D1K_CA@(b2Lxx zCz*5HV_YMc%)L>;Tv@*kE!xWGWF9xAkFW;x9WPFDkpdcGxdi6s18e0g@WN5F@+oo0 z>QL_QWnqzyU5&xvs&~g$x022C<%lSfHOWFdB>G#w^bJUN(@P zFv3N>7)5-!k*Z}$Xb8zU7t)YF?OJ)+8B)iXFfW#LsgJ)KH5$_hHJKb6IjAHoUZRk~ zO7l&4evun28gv@FDETc!28GLR*m6ge)B0G21_XQ+u;a!dJL*RAiHeR)v~^g~-lkaB z!GKM08xQAluHx&f7LiKi46e(BhQD993=T6@XTdrJ z-yol`WQwKGRejZDbm;Uun6SGxa8Ye8jy5|Yn`)Kf_(XZMGV@_Iy)JYwBXa9nikiq! zygrmj74M-c2M+s*{yFY#c-za!c{nQ?t`y18(a2a(rC10ntI%X#MI{owf5<(NPzPJp zN{ZJ2PJv=?-Ef8YAWBA50vM)eo&>jsY$t+YC_-Lk9gfz8JfHa!mtWtHt!2YV=*Wz= z6DIl-{ZGLwy~o~c$FwDMYlzYv_HQR#W=u=4Vas9V#^s6%6;WQw?>Zem9a!&>Nv3XH z)J|M|I)u!waB_R{u%JT9ROuNObOkg;@co4QHUAk|K5+)NTt3}D{hXh$pGG50wgH5H zoD2@Upu2N#NlyR+rm1cIIVi-fgxuJ_Qw3sgBh9gBk@B)23$a{u3k8ybS3aaY9eJAz z3Pb`cH@o(sga+hGjedch8&nN1d`6$_h$#xwOxvJ6)c);!l)J~K2A@^$KRKjRVC6NhVXW*p8>?)S>i^(OcX7eK#o zAKqx7=~B+q%;HU-7;2iOTC#-kb6MdO6laCoW2y`QtVlX<(0sp27Lh zCm%&h^?lh6xek6g7PV6_vgKxBh;M(qhY&13yXS`N*j~HJ-${-MW`-^5FW)d%DO1tF zD=Mc^Q@q!&>VPKZF18lrIT#hnlesE8v|f z7XI|wGwur%QVjFejXd}}WIkF@JzG}}tL;?OE-Dh{sr-f0x$c^)*;G&dyImZ_UJ`zCSc7Z4>$wX%ct{9P97jUys_kN__31@#TvDf1`qEl;D<@I*i0 z{7*W#EW3dpOc@ihdcLCf2mfQ~akhn9?hV%~DC`iqrkt;xQ#{VwdI;lOyj?OQ%s)pqwMjnUEtt=`1k`QvGqD=X{8;_q|M9zHtW7VEYj005xK_20}2|65uyJ2T_| zKnVXM8XA%!Z+*y!I(++$x*=S^Tiie=EhP;}>I$pb>SrN!&f1bvP1F!`hk(gi~E{=n-X_Yugdqf^~b!-Vd|jEbRWU9X}iJd!V76T)bNZ?W5sj>7b0oQK&HUR zJE6DcqOnNpj>!U{P$OA&KIwD!U~d6Ca`n{M9-+!}6Kt^pv+K`t!|flv7g4fp2pV>_n?6F#y=ie1aa?5^0I>Z7M!O*pT3ybenV zZ)?_|YnG>ZP(>6`c7)}PuUSCNRNsoQijPfz-O%xFL?0&6K@Pw*bqJ^o4@0YU_Uv^-TBQMHL%H7F5LD_&X%!Hv+9a6tGU<)C~;f<52@ zjEYR5Mp8w#(CWF!3OP|epDO?$8wh}+gRV@%1zXMpTSh*oE_VgbMV1d8KJ_O>#T~f< z5@$+OcR&@63IvS6|22@1P&b5Nb-_kgoB7}k=KqQ%RFu03_ zD(CZ`{)N9#a?cjtUQkAbqZl!)7OW^6|A>3d8TYoE2hsg?r9)VOn@qDLD}a5}HTEfI zLIoN7;1bF`y{kF&n|*6LZ`IoIg3GP#9cE`YZ)iqy`S}5Fj_q3E*zarV@SYy$j0)i! z$X#>v;=kRM|E;r)ne{)e%75II{|6bWhVI*3mcKucM-G4>v@q}o1%@CF00N55g7|M8 ziT|uX|Kn!*|HVzj!ou<&1k?X<6V?3R&4nAeh=~!A6{gY4(K!)nJ>Z(CZkv~(IFatE z<=l-SqC~)n_2uL6lJE)jb-;sMw1xg%?r1eN2TE0H)mrvdbiWH~TAp(UhWcdsD_`cH zcYfY*?n!x)m>+T;d~aWTZ#j9UH?R-y+>2JK_51$V4vD;=RizmAMo!SjRvimwD(p&3 z#YL?%U1=ByHxw~F>*7mmHn8NSXp*Sod=ueZ_O6#(HWS`sA$La^b|<#c=FRSy*{?+( zf8!+BF#mDdkC<`)*GY3%uZS7)<^RQwa0++4eqY>&u`*)0P+U7$+4;P&Q}>6ZPp_fFQN`luvAwx~Dr=XIBUP zy++fxBwkS}I5mkWuv3e@MET@-i)e5AUO_bM16&S4{$o-X_&C}H;&0l~9tj&3Hgqq9 zrZI9O_;i$$=njL$2COx}8m5hFCrMyF$E$vwS)iZL19iUx@MFtZk1OJq~$pSFGLSAOlfrf-!! zN?bY~|JhOX1M+M%v?x3HNL(Jvzr94tp(b!0c1`1>yQS6^neK`03R_<*H->AB$MsS6 zv%ViNn`pxZg)Z$R?*xwQ2Kfj>wNWQewfF;jQ$_>d9N1KzA%TG|x@x#sWs5fwMG4)v zhS_<)j5>UiLHtY*m+(M4u`>sJn2BjFiZ%NUXp3X}6+tXebA^(?N8R%mrG{1lB%}gx zsO}86rxqf#JfX~?QZ*skRW}A4clJJ442KhTOhJwH6kd^sl6`lSn9d3c9LXV zGwsF-4TWgCtjn^P>`8sj-(fjh+=a=Al5qzcuA1Av$jhuy(x!5j8v%d~<_e5Ai7rPR%4z$=@pj%jYb9=AMex z9h|RSJ=MX-X;Xywvo&l$LO+qM?3am3bE^HY<9ICZ-Y82~GxmRPnX9sX>S1kBO#n2Z zBHo)(p=Bk73Pqofh?`Gw7#}jb@?Y@ytP#Q_oRt09 zBhzOapWC_XZ&9ZwF2NMWTHHXohNn$0kdX6nWQ0>;xe3``?1CXci z`#+d}RNPMs`!;>w{|Ye<=vzrTxzKQT^3VJwO*5Zk)seX}f@#0dPR!nxYwA0wGr(516rW}k;U zwuKv;aGu%WzCR1R7Qmpv>-ToXq71Swvc2pw_}6em%bhU9OGC%Zs+pErT4W|dtNM}H zi*m8&-3hyLDAKhKG>PxUD4Kjx6AbklG(-jfay3iwjb=@Zk zf#7*V>KU8~2gB!#HCHI;yYdxzd$b3o|5p_5a?SzqvR=bD5=soi+_7_loe*%40|(^K z&3M8W=Sb%g2(>OjMsa+lw5y6*O0tTg(UCTAkDQM(FdSNI%QZKH@aj}PZv$_64kllm zYU4AqvX1WG4S!qi!}7`cJt0m`kMl&%sw~ilM2iDMq0c`WqW&(b&L(o$Egq{U`7H}0 z2x>!Zd+`MFdUbMdCZ?dOO?JHLVxGnRjT&4`3>DQvTA8Yu>LMZdwxDlEZfSg7idkEY zH3@dsywK4mrATMLER8n0haa1V!7O$3yd`5NEK28aO~@j^eK&`wL}fILP&vVQYFPrl zN?KTy)$-H@k#nG4`oUP?8hQs3`)0O}cpL>k#yCS)Qn4$?vtjrsZUunTrCwe_U|_e{ z0P9UMBW9-ilI@Otgtc2p~~kuFr4`~zXL!2hlK6=Pq@(8vl=vN1pB!N*W16c%8#Gl6q58paZw5lK!?Og!6fW8UVRkG z?25I}vKocPEx)IP4lQ^;H6Kj-&J-30ep8eh=jYMI0m3ZL0{DBp-?usnf8(P@ z`Yj4Dz2nwi>>UpY@l^*_k>Zul!C({x&9a(2+VXvRgB1;&_J~|^nYIcr!38H6Dt{C( z9YRMwj?hN*sIG+_Bpg!*18-o4*9ecX+!9=`l0jmFC?+-% z9Q6QIqhD-)xP={b`dyFgE6Cc9(-hQ#yV{pQ-diu!x zI(2)eCkFSDR7foZSRr%vDU`$V;MzEy$^S@3MR9WWqW~P5Q_T>}_86b~AYhPxxlx=Z zbU+w8qQfnEjRZ#bUJha$)pU=L1$UUv<1l5<673GV^pY~XoE-hg-RABZ|CQNI0p>o# zanv(&ThQZU=E_*%M?&U@C-uu0Rr%^0|IBOZ{b2W1Z%C@*5In=9*>^{}LsCebjPoZ7 zJp3meN(#Po?4MDzYAK`_&(6htNG8Y96jkJ*b6I_R(4@Vm29>QLd5mWu#U%Anj@7$f=14%MBTa>4xteg7*M5n?1)Vcj znmFfH8Y+pL3{JeiAJmE^&rZtGnY!cvP0M?`hs}!#x=C!h7}}Rr*)zQT^ye{AWp~mo zc)5F6n3Z?)g)+~acgdrTbZ$KNFyUj&v^d+oHEB6FP={_=7Iv^J(jGuZzBBKN-qq+d z&Ewz3oy&G1Yvp`X(NU~CEAJezj&a!$hcWl88|QBi(E3gMRoN?9JSzz%kO{P4WO)=b z7TDZf4J$0jw)|Mp?`Lm5&Q99g`&GXSd3r1^h=D@Oc9#i1v^M1Zii(^VTN5MMp`sw{ zo~j){Noy@QU$zh$NwO=bm#SPIAoXV)q6tNnlpfDwBETc|Ca;W%q^L0Y zml>$AV}ymWG=P#UFPFnPX_MIDDbBIEbG##f>Pk$qdSvDa(l|lN09`1paI0r7gk>36 z7hbn^CR|gK!HT^}0Y4qK@q-)kG;27a}=fj*K0$ zLjzWqN!?5dqEmd6uOpvnXx{9A%6vXll5fTRpcZ=9pKQ;U3Os8M6C!4RG8b|M@+npj zg~C#FUI*tLn-vo22j*$wPpPvym7~ga8^29?2!YB#!FIm3s_BR3OXA1V_Sh{7Nc2;% zGuiHJA6G+ir?$`gM%qGF)1S2;)7~+VNW#-Mc2W#=6|`0M%1D+9uKZP{ycV9lZuP~G z99O0dR%ik)8|iR19R^~0^X$&|`)j*h7|7{WYalV2Q1dN0OWu(kc>2pj}fo8Nn*cz^qU;1dQrhY-lH z3tYV#%@5!el_srfL5t7^Hzu1-tt&;gd>4Tyz?q3+9WgU%m zWiozQ8Z4ONiPOjH=V_er_zZn6PjRvpQU*jG?;qIJDini4+^%kpZ{K?BC`Db+Lu%kw-}_J7lk4pBmOpy%?7g&`Pffc zW4V7a8WW=fGdK~E+EDheAPi&iitkAt&WybPJ$^+iY{>>E-ml$pvJiC2Eao^ccVC`L z@2Z*>*g)3>UpsVl8GKD+*p|>l7q?M1r8=fHSW4k!7z1L2doW}rXoWNmp)}Z3ij}Nw zByO`u*w(h?Ku$r|93SfHqozFyr0aQKUVpvsWdDn06wG2Sd!4o>k}A3+{NP$K0{X4D zKdJ1c&244Qfsb342udvu?MEm0m5lnXk=PI z>pZs|#8Bzu3fv1r$yuABN-o|lE{|hq&Z`c`mxClnn@|(_gxrC5j(U`rJbkNm8q9;q zWw0#&()nC{FDg;KT)M>1oQ=9-YtpG$`Raip z=iHzU_d@0UGfNpyD4sEQgtSGmBy&97BBhh3v$1taM{uBmM6c_a0q0P^D1Xep>rnZ} z&TZ@2ZwC*Bjq1uI!qV&RxqT@)*aR9*5Pnp}SW9h#(gF|$B?T?mtN7lnkw2pwwXEo< zaMLcJ^Oj^C>L7r!X8uDYl8SO-NNdTwuM0cGSD%fAu_mTkUpu0Zk)}*koazzEwFwKt zCY(Ni5t?j@*-oFBl3{2;)7rqaijLJ7-31pqT`iMUa8>{Rxz{gQM+_)d;$k^ESf0nfESd6ozI(^+?D}->(Xh zu!hUpVmPK7QmCr4YO|{B+^EnsA&PkQN-cyohN4#+t{pC;UPFY`sn)_?8mYvP_V^|x zroX{8zn+pfNGtm;aCOU=6`)G_(*{(i{VWoP|)>6(1J+GNR(nTiQ9-lSJQy_94IX(;cxUK!8bgU7tO(53s6s> z5<)LN?h(7T;0HRld^)Rq#E(MQU?1Rn*aU-d!L`#OhQLeAbFp+};#o*#Bk41kgnX{Z z3eCXFe(HU$dggsDkrgDJvHUeV@f9Yghyd$^mqzu$z z$5_KW9t`E}`H=L=X)B%i?QN7QHSMJ1)Y9>)BI_nFY5rG@ljMyeNTdTLLG4Q`HCEa= z8I>(j@XV8(7#D?;!DdOdgw`(Xe7#_8_l^zkLMAnsPpOTTs8^AR&nN_Y>xPn_7lLQ5+WHRb6XJ%ABF{|2J8c!?}F00t4 zPmVDtpd8dKyjOL9ww4!?d=V3?0wZml{T;VtR@Dm-OsLeb6{(N>jQb07wvNF!OXbfWYSrSrJZeU2YVU$5X%&}#8CwzmDEBre7;pa zUxS5#g$I=PMiqBUU{=J(BC=&>O7u&#R%}n$ta1N`zo%EWQ;e=GU0$;EYcfYmvZioF z!Mfrp8PF22A>pBt>}L?k2n)Qb#Qked~jRiU9*$4CTS;iT>{b*^__l`AR8}=@Efz!)Z!20hv8`$ zHv$9Jjy3N**UtMJ|51F)g~+A`715ovJkg$n((pBXJB$ydsZAeH0n?9Grh{x{DA2lCWcWd8)25+z4im zAyLH;Uzvp9CW2OA%6rt|ld4p;_O$Xp_K0|!`b%-66Mvz*1 zT=qViLh!aPrm3W^oQxZ1`>iX(H3IVTiNtZg#--f=Y8(A{+AZ8l256%Bnq9`-Bg!)) z&*66LT^Jvv49-~Y?xvat8)!hp0&O6lS9L&aj5+u=S*t3SnA*w9j!tak;2{C0VVgBt zov!FUnEx0R?*{+wFGdRA~^3!mQ?F1oVcXvm~&tnuKx1yh4x;fxNhebRKgB$q6j-eqJ!eUKz)9)4U@ZNlgIgr9f2)qga>ItzKx+xuJUYNWU)R=1!8li{zKpsui>ZVA!FCAT7v$r^T!X@g$a52Q%2p zKEA6g{ec0QN%sxG*b!70y|r;MzYCslu7{TYykW(3yR%6t$k~-)me$i?g0r`5B?YT@ zM+G@K(R@73WcyZnNa@yUEn>DS3rM>q)U;#~?3f5`HwM5&@0rN_`o-|UE?6T(GO}p& ziLq}=>k58|cFr!!7v(|1Vp%Mm$hydhKnYN%S_J+R%BrC_ic?}3PmA>$@w$7Mf0HJW zLFA;9wE~?R^S5-MG~<=I1MtM?hgJwhZu+69<*jBWgxzK~dx2?>&TR(l6%hubbW*m# zqq3XqY5$?QQ+~(O9l-O=DsB^`%HKKYlJ5KN0e%Z|h{_>ac{^@bXP45Vl2gvqzyRIw z)V1F2&2(2W|4GyM$}$E?eVEShUIvK|9TgA5sZ{;+^a}R|I1;~E#aqJ@4TKL zGzEW?{l`O)L?(GK``y%Cgo=ScLmJ)JGEgE2lGGUP6nmpGync2IPc9m4mI*grH|Xp%Wh;4>!>2Tv5>Xaq@a-J zd18vzbAv|D*|2@ZCq;qvX167`=PPvoBA-Q&kV9;F&4$++3}y$ z5R+Nf6~iOAn^8TLU!_JUNECrLEj)6G?O4a_^RZ5(=$h|pH^QltpII_*jG*)&h~qx* zp*)vJ;Oi>)r=hdF{tUbp{A1r<5aC|@)44Du$Wv6g z_zy-WTJ#(d5w(wrQ~77C%>gEgvyNRo81)S^=+(#T5Ck;&LhI+kJ@$=_>X)t0l32-D zjA}hRI$x*5?Im0c5}8iUixx{*%vwa_qQ`GvBkhz%!mjF9#bq#AH zq+JcYH0^>k(^7LYQc7c~7kpkVE!7!Aeu@#-Bfd0a=<<%U=M3hvXLWs|m+OD>R9C9!7=!mEZGY+hjdw%50j%ZVur z$CsU+ARTzhON4BWE)=I;XFjM)*WwN6DUyT&Sv;hnmE1-YayIf6l@Z)hV+OStVQ-n# zs%I^-di5O^OY@Mq*qZF}n*0Q2_@2Qq5zg|TPhxCIII707hcU;D{*Zm9Rj;9b7cYvg zO%c@Vsv#+PrP%f}}+toe5{<_0I{j=v0_F5@IvmF%7^yp%qHGOf3e z1uGxADa9SY>6cTY)ZHbb5rBCF$v7oJktu+OQJGt}ik-k)DByTSpm+q`nHTiS&oCLY6Ek8CTjQ>^QVD>jWpU zQ!3%l_>}689X+YA2|BW?d<;dTF|gQlYmD$&A5U&g~ebJUokOFR6r$h~2Q<~pm?z7ZST6DR|zWY~Qo z&01u4;ejv@%M(I^NtSHd1Fvom-AnH*qJTQbB^?0 z-rm!OgIbtnPB!vrr)QVHQ!gC)TNb?_D{K5RIC;#{K2=@YZwR! z6ClYEEOz+W9U8tLIDZfxQO;Lo4+t37l~PqkHuI;J8v}K}L~poObJcr2?&X{1>))3n z|Fp-FV^r7To8%YT^8nxiFXnRsj_k6G@>qnK3Xa%0j2_rp=rCUu=<*&fH{^6CC*1aK z4c|N+{Gs<9-iE_Qw>Uj6oL0#|8%&r0Sygd)GN+PL*V2fgE!3Lkl?2$LsV%V?Ks4r( z;}Ql+hy>FR40aU)a4CWZceYM5Vw!*QT2@^^+4cyNzXN4WPsX%akUj!Pgimecdnp(W zXf~Z@1)G2?F!%Puvl-(KQTowLh>deq2^ky^=WSxw!b44+Ch|`d)F# zQ9Nv-@U~m4RjaK3ggTgM@|005lX`+B4cEV*h>qQu>F;h6@$rSm zKf4M$1NO`MG$`YaRP=Y_2uY-T8U$!M*$5tdNyc@J%`6*|Rqj7`DHiQnMzJ$9tj5DQ z8I!r=lRFvY&W+d9_3g_U>-e+A??=ejyrH+`BWn48<0wWcjP{|=dwz6&z@jcVZFXrh zw36N=D;lR9O4?qkY~5{GF_MBBE7z=&m8XILx*_*3WoBk%WeyiLi5KB+n>iXhj(4=Q zTFad^k3fFD4-L(|<>vEbotc>H`@v$@=p|eya5k)f2U*59LiLOgC!=-DWULWm1Y$m= zsr#lTn5g!HgTbMvr^f4Bei_0$m!7vzPQglw8K6n>di&0KQmZcTySCv$mOZr7XG|j+ z&b&iGk6YA<74$w`Z#j=crb-CMok&RDw0K>CXBc$nzGjWAQemo(j_B#)rAHafjun0e zf4C7j$W1wa#rc_YZ_gkix-{MtCu*T0??to`8%_0{s^i#VQ`1{7Q%YWoa{Ls6{a7_g z5P5xplq*q8U64a}55s5&kkFR+&u5lf=IAe1Xk0?skwy4(l(%pl-G*9;(uA8)38Q4> zjNfI28ma29oYdwMH!&)4!b0BRVbh>fN@ljIwHHF*PbFaw4;@3t<^Lq57zS$%YFSPF1`y%IU?cPf>1jetuapAEE*J=Lx>0(YBdl`-Cpx^Y z0n95dExQI)TFfLD?tRhjw(Y<2i7JoF3kn~CbP448i|z_V+g;EGP2;DTZiBYl{6Nv- zGHgav9^Z#skT9TswSz*q^eI4*bj|9&!T0cmB$+34erKYd?uN%^*xe|3h5U}xAg=by zC5{=H7}h3+fa&#@yb21ayK`wl6?#InT3K5Rsk>cdtT4dGSCUZpPOXQx1)0^zA`mEM z8iXWSq=5}mjI^6E^Zae0F}`_Lqy-;4M2eCNmW$10UHP(9k5S}TY`qvktfX!s6wG2fk5|~$54!jBi@6Bx z5Mw+1VW&)?G$TBZL3DcgyTQT^v#}EIGsTn=0=>|O<`pqnHMvNrhR*R&pxXiHv4zcd}8!_6s|E~cTVQ8PCV(HiXfz?yekSnz5Oag z$qZ^<<(MfjNs@F66&KA+w@jGtD(~?qHZ=25CD`R(lQDi|R6R(nG<{}qXE_>WHr%HF zqnG;=D|RZvn#42u#iI54J;+yr5I%bUY+~c*R-kpY4yGpZV%@KZQEk!ZII<|?1UckZ z*mIH@>MLs(pn_>wV%Z(cwQzN4qQo+jr@f5vI5@|~X%7)M1L#czg|(dM?|)QrSrQ>G zcZdb?baA3%^9&PxJvl2l?W83A+_9lwf}nPw*pl7HM#}|TmEQOV!33l!Z|~jW)!mkJ ztKXx7`a{U$PJB@4aMBpPVaVZKSQDRM-k6JX`yvRm8sO_EvePAgOY@Rq2;t}F!2({s!CD?9= zyqxalQAda{`HFFLhAX9DW>#uy>IC*6><-JK$rz^-(QK0*2L5o#Qcd6>BhQ1Fn#*A) zF7xldj*SHAnC$NTsx*g?8CVP#DIIEB-#A#GHiGgA+_`Q(yKrFR=E* z-8OnXIJ6DZgiY!B&n>F`lOOkpu?-Umta>&qC;Cwx9NeS*0zUuxnoD31>L$NVQr7H* zI8^nMiC1Ld4kLlLeTyV55)ZWDX+j|~Rof`d@Q5d6BfcFrMB#o6=Q=0n`ukPj=YiMC z%IFp|S=eL98|V9=&Lz?y!1(jRZ}Vz@dYbXM8t!bOnz{jR|c zqmeHWhtJbUT-V1I#;Iww+fl4YRab{b=?f=;l(T%h>DA)WNWKTtd~;bXYZ43wwg2fOLX_Kk$Dl zU8$PXuj_BHUNu}hxQPD7xO!2#3hVp84V|2cj7wnmigf!&ir*3w_MKs>V<-w3uxax) z@sWKV*3q9OZ1>&c@^q%DMhb`mFaks@rQpqoU}@==aC9KH`2j)%8>qqXOv=!1iacIWCnaJZ#VN^V!6lCG**}NAbD`cR=V{ekTZQsugXP5b(x0xRMo>`x~ z(?;e??7vg%1GfE>4w#Vyl!T;E3Udp7K#0hl41}blGQ)rDAO!^n{4^rgVg?{d!QhiV z?R~+)FoOrzPz5Pv($R4t6x_l<{9k|tm?ZPti{lXmG$bSr>I681knEYk}OJgamML71Qbc=zw)vw}A44gE@9@UHr3QFo7Gu2Y|E)lS$UV7w6Hzz%l!6 zi42lg`=lIrT|^3W$iTsQd3nJF=p}$T2KSNJ3Hnh2oxsk55)6U?Yw&+z=ml_&K)&H* z{KN4K&L9Q94cYuRi+BVf8G(%bg=_{GNy!KB%m89Qj6J{*R+&I}>Wo)$1~dF1uRwl! za6ptmpIuvd>wVCI27O6_t*s6i>WI@YAkIK*!ubaNv5lob&@l&~{syl9iZ>KUagz}4 zfdumjab)^$gMxr2ojidMA$If5;#(oZX`re6g9ZGEP(M{6oF}9hxxw3`U@$|4kiWR{ zh{1qcN47fC_HG-vhW2t9^Y~Yu5z}+N7$9A5Y6Ha>!?UC0E^pzhBL0kVc*gfRMv^hPL%ZvX_n5C8n| zb{p$=8}2XQk2j1CUJuMIU?B3NGL}B@?03bKBrY%q<$az@Fna8L!?NgJq>vMA^*8e z{)u_$tNbKr{+WHC>=G{M>(S}k`Wb?83J~b|el*s&iXEgBf{C36zv34r2>L;6KwpDD zxVg{MV?~85g5^vHeY}+pCQKo+sL!DXGrfET1bk-#m-3*3fL;zJ#Ou$(`V&x+J`(Un zuh`@;$wMJCSM1U=ib?(0Re&{xYm)wG`pE5}4gf%wF zr19-uRNW0>Cq81&`Y=?ZJc_SkNAShWxghktldCU}NR0Q}Q+C~Wou63a9z`q1ZCC!u zy*&B$7h#XPA8t|x*IicSVMpX@DQ(lEFLk^ubdTmArQ9GccL@9{k$onmgTar?OYjdf zLXhQhbZ3#fGkVRG;yd<6Jyg$VHIl?J(J+0a-qk*YNr6@T0!{p@ClyAD_de>yg{WO^~ zj_!%Xpjb8u?56Wy6U0l!omOo|9%c#^*;WbbzO>5N)&KqbH^)1~@g)r&-A;HcIM9#= z+)3#%=CoPoUB6rDbt8W3UphxoNnfX)@9$Q^+q(p7RR)=jzb<#F;stQo%r|WSG`?xH zrnr=LqHNqYas!%4R!y~C-990{6NU%`pOo0iiYq-WfW}#v?CVB1ZC9U_NUB|Oy8PHN zPU_<)p9zU!Cg~Hl*mv1Rcf9=%1hYdTcYh0CY1Wjo)~cE3gDR8& za8Uk`GQchQ^vMSnh(v9#D@xya{5HjrfU+{v06{z%$zIBJE%A2`dia>xyrrv89N6~U5%--hZ;KL z!9+s1gA|df_s&0a02IR*gpQWU4WUBeJ|5Ec{l;({Wm49^PaYt`#FiO(v3PR}(+1%e zm%JF;1|Nb6kr5Dfqb&S2;WFESy>Nj21S!fnA~OTgHwO#mpra3=TpGtpCbgQ~S&O{P z!LXB~CD=m5-*}4$;z3D;9H`_8sAhDq0XCcBFaq<#w+Cy|-%ri2IA)w0?3g>#rLecC z@x2G^(26z$zY{tf{mMN*W|-vyua!IhrhdMs5K9?18tVPacmt(Kui`R{aKly(;ad=_ z3P5YiVsCXD=bJB%hNZqSMRw&ZAqD@Q%+lI`*MV3|pz&wSfU?`VhQO*I*QA>a_{8(L z9#Kj`Pa5J7g*->k#ss)#X}nxV3oZgclQ>7RPX6r179QeyPP-{;UgLcv-$qxTnIJ#& zJ;!Xoh_4(!{vh)6MH;|~++rHqy0CPy46_mNIeOY|p6bk;&})X3>C3R9AVVp>TP+E! zaJ)H%|8wDAm!@P&0@EnRx>-6Gz~21@_k=nsQXek+!i%AUg0mJmM#$FcK3^I=WkXY1 z-;X)OAZx(lss}vsKjCTQNmH@$-j>Z`5uwQKDV@UI?7rk+*-|J>NKtR4Z%w?5wH(nh zX>+2-fBc1inclCIGVOpVz)?>6ZjIDSUF!u4I9*Kh(sz5QXoojCsV4DDQ14?48J z!S>L_?#yi|D4o4DBJtJGFNTal^#PBFA&NpC>Rn(wlsz*6(Et!G&fCDKqDwn{)Izqp z%g-MX|LfXRw{W*>r-D8Eo?QOp-R1|l*z!%ns_g5zxMOCNBHh5o6Pj-}^ohHs&uw^n zaqcEnZJNq9j=6UZ4msVQDjf!Ld)B?2gf%s)(uU($c&pNY!cn0@S??);E_j}?y!u>p zZmCgykIPgeesZvbO(--$c=zHWSP7#dtYolAbM1LpRZl_{7hY(mjO+J3)=q2&lN!?a zB^5wK7Y5JLRx z9+?coTqYcyB9igx7K0?O79CTrK*)@c;CFThbH+?H=PQ$>+q!)(RO zwgCWRrQ><*#Un!hQR$qV#}hYjo|XL-IsAcs2$L0*rW%ZjV27DIyROPLAIWHs&CXg} z6G(%AlwgLBV&-jd7}%hogGEH#g!8~1*QKJjpW~@BD_BMK#qQQ+K1eeyij-;SYX=tU zg-)52+ujieT`=*9-K4EwOdXoe5s#g7A1L`((oSZ*@62I1$+PS^fTUR zN>Jz>?CULtyr{GA$v29oX+DTcaxzNrA`_MDoOXY2s=jqa3{zj0W#0!JapP5I7M~ZH zwVv@?$k2PnsO6Bf*Og!TyeN!G&yx$oF1KL0b`;4kw@KzPuJ;z}Fal&s$(3&_X{r|N zKGqG=T~vzwU@HdF{!S&;W=kWL$63;o?kPS2@9hzfnScH=r58Y+5!79aODryTzEtJH zD$b=Q+wWEfr^{=EDqO8}Si!}8mr=-k5{@uuV|nZ5eq8{lIvWP-OuIa|K3<@45dduv zfAoU9V5WO#wD%uhD2zX5b+r1 z3Qm(VV9!i~`+RO18q8{=$!w>*MP$i~rIey^5;G^$qj!_ z6Ge-Z?+6h-I%$F&q`+9sEwIHs#fc9$hUJHms@-rl?C9vTWb8%_mflK5|F&e?g3dyc zt>ARH!XSxJT|4Gk@sKB6=A>b?7lxHo*=8PJGcQb!7J{^CHGUzkVNab#v(#lRS+FlWKh|NN%Y43UrBnvvfNLF(0RAPDUyAs~-L(b(h{_5$(}Bmy07=3K9oF zfI>AQM{_^XU<(@hvPdr1<|@HdbbeN-P4qRFAc!oJk4|}~nMl>9{%Ao_{iI zVoF>40i42bZIs8ElOi)(LJvA(-b3-f`&utGV{9^Lsau{*M~iaLjGyhk>SKhBtSXwF zOYx$gr)NcgL~U=r{gjl2G>(g6se!?hxLsST)al`H~cGdgW(yq`qrSeru(ERbL57`I#l;v7D)wBZ@ETLRdBRo@gla^v{uO{*t zK6)Unm%$atm?+AJg+%@kCU%^5ZZD7e@ZK!tNAgVSPnlUNr?y*nN65>JTn45w6-8nD zO?TTMzM5+v^Vqvmtf#H5O=5cC;g6HNjp-y$JfARHtR_lPbqqi_>5{dl@&DD>S3t$J zH0uTk5?m78-JJmjcXxLQgX_TH65Jt#pdkczcXtU60fM_FB)EnExx@VH+;h+S|99V8 zYj(}9+F#dK)xBr0neLwM!;>p=Rn>UB7b!`~fj(QO?kQDknNhuXO{<6XO9c#ies~dD zw?(FdR0=9rJ`HqTxMy~VBZ2V3Ib#C9+dSE76r|s=#N}*k$8ND`(fjZAe=S>WD?A`u zzT#GrHstViIl*=T>-slTZB23R_CPdhPF+o`g_-axnbexI^R#H_yYXGqW{+^aV4eQ9cGW=7aBi^jT0Y13Z6&C_ntVW2-_ z1l{M!8}nUO86VO*@pxb6j311BURfn1+Bpk6@)y-xqvWLRZ>>%tx-d^Sb8QzPa&YkRQ;uqS<7jY*1jZ`!qs!->j>`e(hT6Mt9H!Z~M*+{qfyors6+wBv0xAT*Skqg0Yp4*^4*|^H$rY*eZd+aB z9>!h~K`f6GOp2p=m!EHAeohL6J`>wvbz2{Be^>uNnP?G$TyAkOIreGe-u&39FyPE> z7z^VqKL79U1j;kXI-MD>?S6M`l3ct`4swf&qdWR z%d9(3?Ff7!!dVA%IG?FPd{}g4RDl=to8sfBXUj6?pg4R=ZUp3-CQG`a_j^v>?#+sO zKU%qod#`wPN|_LvgEyV_7J@|f1nTq$p&x^VCt#%2H={?s*RA5Kg;hf(FJHvIhYtHv zWO8?Nuce#p9HQEk)W%Gjt6L6`m9|+``wc@@OxJ`gH)H2JjWXu5m~>K}^IzLXU%}1y zg}UYD*r@P|^!l_Hy`kw70UqsCAcyD1{o%+NKEy>VQ{@4)HRG|*D7^7lvSHqgF$o5(;_bU#^4^M&ZE-7Lka z-G~gfTt{-Bu#>ur&w|4Z*|JppKEvRvhhqv$m&pWp*XN0Kt5d=fiY4h;^v_t{3r?SW z5A+|Y+#AdC{rN2xyI9R4*I|Km{>BOoT}h!MABG+a{l8H)GoehCh~}kGNYQ7%XO2Lt82KfiZ%s`#xLE zlM}92Xz^q7Y>+Zbx+ER?C^N;sD09hUOOv_=`w3%G;8hsx1S-tO;Ow zbaa&W=L)=Aev>5dXpe?3IbPX%d*T_<45%@lksShNNq zjZ0;^J74uUQ%GAjn>X{G)N!7Zn!eid)^f9R-$RFF5$qI*Elq4v4?D1uyZb)MQ*pog zoIjnW(NH3rM5ZPV3I)oA39i+s1pNF8jzfLVr5DO6;!$rzKE;2vDndP0QuU~e@e^}D zh0PQra9fWPX$Nv#!LUlc@R^o;t5Y06>C-w{n=-2D8{Cm=s37$C>Ze22>AMy^K-|a17&|d}t+0Vs}yVITZX^IFC z+|cFLa+ez9Onhn>XTOQw9xJ7Mj@>z`CY$3PW?`ei&Xti0{Am~TCg@)N(*GATt6`j5 zEv>jSKuSdTZ%Hxg~Xw06ucKHHc2ia^YB;r%;LP0`w7_c%~#i6d|0 zSmp#M@uB2h@~aJ{8-tx)>|2@fxuAVG+4VGoB=6ZsY_b&=HDBA!tM$I2k||OflDw5K zPG5^y_Q{MK-U=1n@!2BaHZI;PetY)tm4E%TB-uF&QsTw#D|1&z zp%Of6pFXkL77fvwa*pRLpxx@P6a68Yb!Z#8pF$>GOXx^y@M753JHkgfYgD0>Ep9@7 zLHI|DA3}xZF8`XK9HDSM2Jx)F=(q$`GWP0JVq0aSZwB2Pz0_1>+sNhLxF;0_9AovM z*KS7Z<9R)6wro7r%ns{s@dFy{&(5yer%fGybvQ&s$yg+brk;#eRO9p3jq+Bfc<=I? ztaJKbcck#Uj4kMGeZJYIDi5H^e2BSO&nqgCcaB;3WnC_cFM;mhc-RG3#|{Yddj6-U zG`+L6-OK0D-!~s&tLa*@lUk^Ruj||n(avw0d1Ux?8{hrw`J=gJ2{qB3B$C@AQgBE~ z#^6L^(YOFS;;slUZHSEjJ@S}f%DWSBy+l;}1GPOm=U74is4$|p;M*f~MhEK{>NkP( zBunw!n*C)Wd$DnCKw(AdpI>)ETO@okiM6D($603*{||c<1`2b-%m%!t9Ki&}w4JE@z4y&8#QwHx_ z(QPGijJhe7z0SaYR9C%ocvou^{h)m{Cf0>jIoSRw2#3cPf&E(>%A$@B%LaUT{O_Dx zKJ27`+D?K40_5*cEBp0_aH=>CuavDt*JzsSCx0rY*88S4PYklCc<5Yb z7dT83LKfEPgN^cM@Tw)Kx9CFB^d3D(>q6(38A~_6t(N22W#z^g`MK3cp1K@W7Ih2~ zueoPPxFwB}nUr9ksP-DV1RV6d(Nc2hBDIZ#&W|FUZ?3R(NmCy*_WS4so=Y*r?nE!Y z-kiAMT*`C2-LInbkI26Uq*;+n{Tb{viQK%DF1UPwmi8mlRBKCvJ+{kq#X2{b1e=UY zz2^pkXS+e*Ty@?sh&$2Cn=VPdc~4y_q5VBC>f$=wtD;Wn(4Y-uFtBbz(2x0Pt2p6% z&l}bH&tbe($9{V+)5r}NKQ^`B(3$}gcW1tUVxISWzg~t^KQNp-r#W``!KD~R1GB3$ zyAP4CMN5IFn#mJUaiFG+@_BR-Ms3`&PxL{A!UIBo26-3X9RtBUU3+{@6%)}JZR5v~(V zczM@mzc9@Mg+&!2v>lqLICBu?1bLnuYdGsW1+WF)V&cEu!d*F_sC~_K?4%$=VzAkG zt}xHh>1lPqJf_B1vTvCe)EeW(sNW?G;k&AGkRIfJPU~@yfB5-Ezg`E|41nR9&6ZgD zSmPX~A>#a9_3?4uEqd-Y6_I;#Ga4aW;H>ji;@l30ziB|Uh~oWjhO>3 z+iLV0v|Vc9(shA%R^gA5a6w}{`0vFq#I+kh9h+lRibtXWkNC@D78mrt7^c2p)$#F; z8S7DijTQEfcF4~^d!xSSAWdY>szW7@q77Exs5cUXF3Wpjrp;D$LPH~^V4^MBT-K7d zoJ4CCVA?ErK>lO>kg_;r4#1t3PG5+{Z(K6sfRgm#HY~*^qV}f_ZKu|)a}}@7ZK-dk z{eU%{Bq3_+0IKyL!KpU!RrS$P`{yw{RP071*%J4wX77UzoJrLO&$u>6(=@%-X75)X zgW!}Aed+(hXdD0kT=hl*;$iCoW;EvE2S5*gV@^&^i6`OwBrKkU$CGe*5{^&8n3ETJ zaB@ohw;2X?e^OykSRt4VrrJGSfT@3#lzp;5$#|dM!B65}g_$_C?K~Vo{~pWhCk#x0 zp3Y!lzywT%dH6fhzxiyQz<-gdKPfOMtdP}{3WLJ@{vEjGe>1>ve-&4GGQ%uRPiL^| zfO+$IQrVt_!jt$rZy5ORs)2ENK0*HBSMSO4w>O6;6_y&z2FnT-Dy)Y73I=xVA5|*- zR1QY*cRRqsgV|s?L7pJ6JYfOAy#D3zf6wkOl-836SiXOg{9Psgh!92wv%ms?#rlut zP>q)^Qu(_=JCj%6x;$rpxf@p&+TwOs{(1CLcM|TjER9i-$T^8c#C~4vB z{KTzoYv)c0eL-W8mxM;aN~sG1yF~JsnSV zZBt**b3u)7a;@UbdJM22-OMIP^}CPlGo<(iRK0|35k0K*DNSEgZ7OH5jSv!l4QAmG zSeSdGzFJR-Tpaw4D2k~B&LD*vM}!!aC@>w;%`(X6)=l* zH4wffP{J#dNj#tK95jd9BcefRuuRB@^J79>>NO#xX)3U?qU?BAfTK(W;v{cT!o~D> zo{!1^79w=_EA?kl**GRByF{xJsJhF^L~ZF>1TYprawywO5Yu|^a2(I&S= z@)h7fE}xyYfUM&P*4U^H`iL!AFECk>S9n}dBHV;aux7!>gr(*sdoQd<@LCsr?^_5- zUlB}eQAMf7_O5t!OKq88)H~#RA+mCJeo&6N8C+lApV2(ACp-_#Ptj>#>mA&51!PQ2 zIY;K>&Je4cVy2COMP*PTkCVI8)TUDVLD8S-#kmBsRnidMfDw@vW&Jg;mE%FBP9CSj zb6mZ_ujOht@8*_P5UPJUdg!uKoo(*TxN&)#Ja$%ul~Zi`_ys_Ox*zq8txNS+_gd@K-?<8g<$RTo`#saD!6LcCygXSp&S?gP8i7KS zF2y3o_6rUc7PHha9tBcvbPG?)+iyv!QbN$iH+G9TO$}o0ldsKrj)d@CT z2&|!=XH4!KNwi441b@7kyT4pGLn~Wrx+1YDO5UIDcg(eDnx>b-|3FIwvYZ_U&rRJ> zhW5V^b7x&}bJa7l4HXyZa+?FFbgC-zPir_(U(&DCC0u@3E!*+(R%0l;y;A;;=X*cj zw6G>+dsE>yoUvGEGgx80*Q_ks@!K5%t9^8*2A^Hcv2q}fCMamp6wu4DEUCtQ{uAxX zLk-JfnLn~Yi0@t%Vp*q4da>~Bxy`A>o#*E$VwoMk(P|w$h=ikV_lar{qp;d%mW^Jx>PJ@AO5X?-|l9|WP(x=JiGjsSOo2yGCqB;{1q;DO1 zUha&Ry>im;-}UHkG!(O6VjQ=>v$E$%{<|B~<#hk@`{S?gV-%l6fm40!5MzM>FWL4U9ju1VL&xf3j@y# zsi1cREI^caUA&Nt`|8W4qrrLyQ;8}?hl)I^2g2~qS%LJ(3%M7N`K=M06b()7LLE6l z?DpR+=qB(Xx5?jaJq5E(Lx0fG5^{*0+#91~M#OR_n3a3K`~^lK;&g>;v_q3J&i(OY z>6Zt3A0vJEpFGC5nUo57ey7Ldct=GccirJ+x=jNIh^$`RotfdxuNHR(!H=!p4MBpx z^_>Yq2`Ir9vk$f&Mpjl7!yeO%P&LBY@>ajWrJ}LCM1eSA8L7&1Dy*-L=!5t z!H%JwNSV8S%;NbQnQy$rHvGf$y*E_MEM&;oEaxV*G|!{Pj2(xFA)^pVs=G| zkiBnMTyv-(l}F!oP4#?;&>88qe3i@o(P?_hl7K=ka@@Q^DPKyL6PU%JzJQdruVWb% zT2mZ9?J6nGfM-#Yi-SKUz#JAjT{Mccl@nYbZ5mBWhK2(0_$~)7&=c*HEWxgm31gyy z=OzQHFP0P#W;Etu6UvjMdVL%RZ`1$NAp_f(+#!?k72Myd3L9>r(+wz7}FAAtfPQ8iLRvp!q$pVZJ>^l z^=={kD2}69fJ6P6Xnqs>T!oh8Jie}MlAjs6_Z+u$7@<6-dZ8oQF%R9OPaS%+46>eJ zABw!w3ZePZL;msFuaj!ikNnnu%mJ;&1n%rsTtF~}rTkKipobBcjUiX@N%G)(dmAp0 z5ROfk&Oqf%JIA`eSw}1K@Cq>2D^KM+sgq(rcZUqaL@u#{4;m5WF8W}fTOpcQY~iOO z`kRrxotn*plICv^+5%8toX_}k&WDOwyC^EJCh4ff*)0LGQUqp6B+aWXB<*i;*%8|Z zTl<(&EDiE(`&@m>aq`*XuiPZXB&l$t`h~SyvQ`*RalXU#%h9nYCP|D!IN>$M4r!^% zPSFD-J_$=V=p&Xq+I^C`chJ(vY%7Vf-N?kknd1gDNxdRDU<&hfoF#}ggrtl9oGmlR zyX)2AMM(V3_TrBy(C6aZsb8X7eZ}$v4o~fN19R9_b5it?l)VwhLa_zgN^A)JhP{S< zwa-*r4g`A4hc1L;Sf8+BWF8bs)Soo-n#-t*a$q27<)w_$v2nk7_cAk2apK4H3d z0wj8n!z#PsS;h@e$2cGv2y?X^lgA?&8QeSoq}AdO;}#C%Vtbx5bD@0@p;i!ktqjS; zNs`1(ZJ@*^usL)sGR(rS3Nye{W*}JoTKuw>%^RPbh_g9-zp)LVO&C1+kazTRt-YC{ z`@oLCEC#^JD%1dQH7xI9UtV3d-66@F@XDJAD7Q7L_EBpfTE}yW5D{1gq<4}yH6;Kp z9!5jD9iff z+%xhqO+gi<;?h{Jhy$jJ!z>l%J_~;BD$!&HG+gmsSy<9yJDB4wG0ii+sdr@})fi#< zk`H&2VSqZac{bgHxLo>;uHPr+H8=5DVC~HqNA)#UBC%>s>20I-J@p@VGEt&2&rOB) z+*`!2ZQFX49DynaD8v5sG+BJUH{m85OYuIpOB2w0&vJ4u60k2sy1Y8fKZ%tvsiqbv z>>qge)jNzfa(c^NsRGF%h|~3R;}6c_w9aF56&o_qd)}n-vxR&K$+>~N|EDoz6hJJ<;>`5EXykb_NEPXf#( zuB)A~P0ceIpt3wk2k*#8t>e$7MfX~{4a&Z5>=8POf$ZXZwCu0oZ2gM@(dL<}me`ll zmMq?+YF;ke-46_wQC5;klM*sOC0x5|hA&831>3r`ZZe8K)NDx9(GNP7bD9M|7&{l| zT@4b|7+Qrt0-`-il=(w_KXPBWyy;^G}L%i#B(ootxe)H;G*-ex+z@OO@S7e1mr~ zese&Bv`VZ~-k@=8>S6Ane^E*mTxEWtQG+)Ho7Su*iS3L^6%yP2o$W{_zRS$$Vp8f& zz+y#T5lh5}8WknnTE$p)K5Ii?8n&gJc@_eb^znuPS;GpMvCEm!Y*mmfM`hUB&WcAP z&+8BI?(^qI{w}OYo^;mej`W$qo%!vokO@s^t0nYc#SBa~jaftJy4~%2m+!aiMEpE> zNshAEA}{tllfKqnAHijZv_y;^sW&tR+ke0m1B!Q&O#)WLrNmd@zXY&lXLb7wMqB_s z^Z+X$P5tqE`>`uq zxbC;f;8mJo$H?;Wt%v#BJ7?45gdFjfmoi04GX0}M+iN7t{WpHUin{D_p zVsw5+|B85qcbH_lrVNo%-VY_%*d06R6dr381VaYrTu0Y5r`y8G&BnNvO z;)A0xPbSYhs~1HqPsEV+2VH&u+;-}W! zZMK>^`(U1w*Tr@zw&&hs@Sl3N{{82tz9z_;l0(7S3gk^`1f4hjG^yN#l0(bR7X&-! z(1V(}D0!d<)U4^^;z0@R27>}MpGsM~K((jtvL{U%iWHWX7T}TO7T}lR;^zbacx3>R zoIH}Uoct2J0(=qz07=pR9|)A`f1AE8$n~H9Z9z9TrKYX-vggd*+WdBllalhYi^OwM zY@8G`YB2{P&Jaq>JWg}EHaiEe!g6|Ew>4fB0_Qe6Ey&LHzyM={A#QH9kRy^ z?;7u=KUV$iZnpdSs@F;Tfe211P%#RSD$Z1(U0{k!&7?6R=Dr&cR+c9=$e8=?mQ_{( zXM|L6UL64<$2>AqlIp#M1nWy%jk^X%Wkom0LW?@qd%y^^Jn|P*$pp$ z;toNuh?rl zzRaA_OuaGoPl}7+0gmfx`yo>|qq==@$o>rgUq;NpH|1usC6bz0$}C!-xy5}jjXx=H zN{-cWDt!!K3GD|HDlV9guq+n5Fd+UWQFmSgacbJuCN)%I1~_g`%tqY z=vxpcrs2n?QJrd@A7OuL_~42Jq{1?B#mCPj*-rkN5A^;Viprm_k!C6A&ZF z17hNB#$SRr&^Z3MVPfX_k`E pMbp14KNpL5oZ9*KXOO#x1=zzI+AD|(?WGgs=0c^TlTnjJ{VzXPO|Sp} literal 0 HcmV?d00001 diff --git a/thesis/bachelor.run.xml b/thesis/bachelor.run.xml new file mode 100644 index 0000000..cf61182 --- /dev/null +++ b/thesis/bachelor.run.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + latex + + bachelor.bcf + + + bachelor.bbl + + + blx-dm.def + blx-unicode.def + blx-compat.def + biblatex.def + standard.bbx + alphabetic.bbx + alphabetic.cbx + biblatex.cfg + english.lbx + british.lbx + + + + biber + + biber + bachelor + + + bachelor.bcf + + + bachelor.bbl + + + bachelor.bbl + + + bachelor.bcf + + + own.bib + + + diff --git a/thesis/bachelor.tdo b/thesis/bachelor.tdo new file mode 100644 index 0000000..928b429 --- /dev/null +++ b/thesis/bachelor.tdo @@ -0,0 +1,12 @@ +\contentsline {todo}{write abstract}{VII}{section*.2}% +\contentsline {todo}{adopt title page}{1}{section*.7}% +\contentsline {todo}{adopt disclaimer}{1}{section*.8}% +\contentsline {todo}{write introduction}{1}{section*.9}% +\contentsline {todo}{add content}{1}{section*.12}% +\contentsline {todo}{Figure: Come up with a mindblowing figure.}{2}{figure.caption.13}% +\contentsline {todo}{write state}{3}{section*.14}% +\contentsline {todo}{write design}{5}{section*.15}% +\contentsline {todo}{write implementation}{7}{section*.16}% +\contentsline {todo}{write evaluation}{9}{section*.17}% +\contentsline {todo}{write future work}{11}{section*.18}% +\contentsline {todo}{write conclusion}{13}{section*.19}% diff --git a/thesis/bachelor.tex b/thesis/bachelor.tex new file mode 100644 index 0000000..9105831 --- /dev/null +++ b/thesis/bachelor.tex @@ -0,0 +1,102 @@ +\documentclass[ + a4paper, + abstract=true, + twoside, + listof=totoc, + numbers=noenddot, + bibliography=totoc, + BCOR=1.5cm, + headsepline, + DIV=12, + appendixprefix, + final +] {scrreprt} + +% You should select either american or british instead of english here: +\usepackage[british]{babel} +\usepackage{fontspec} + +\usepackage[citebordercolor={0.75 0.75 1}, +filebordercolor={0.75 0.75 1}, +linkbordercolor={0.75 0.75 1}, +% pagebordercolor={0.75 0.75 1}, +urlbordercolor={0.75 0.75 1}, +pdfborder={0.75 0.75 1}, +hidelinks, +plainpages=false,pdfpagelabels=true]{hyperref} +\hypersetup{% + pdftitle={Acceleration of Plannable Data-intensive Workloads in Heterogeneous Memory Systems using Intel Data Streaming Accelerator}, + pdfauthor={Anatol Constantin Fürst}, + pdfkeywords={intel,dsa,numa,memory,acceleration,bachelor}, +} + +\input{preamble/packages.tex} +\addbibresource{own.bib} +\input{preamble/color.tex} +\input{preamble/style.tex} +\input{preamble/newcommands.tex} + +% If you know when you will hand in your thesis, enter the date here. +%\date{30. April 2009} +%\newcommand{\printdate}{\@date} + +\begin{document} + +\pagenumbering{Roman} + +\input{content/00_title.tex} + +\includepdf{images/bachelor-aufgabe.pdf} +\cleardoublepage + +\input{content/01_disclaimer.tex} + +% NOTE: if you selected british or american above, change that here too +\selectlanguage{british} + +\begin{abstract} +\input{content/02_abstract.tex} +\end{abstract} + +\cleardoublepage + +\tableofcontents + +\cleardoublepage + +% remove this on final +\listoftodos +\cleardoublepage + +\listoffigures +\cleardoublepage + +\listoftables +\cleardoublepage + +\pagenumbering{arabic} +% use \input for small stuff (like a list you include twice or a tiks figure) +% and \include for large latex compilation workloads (like a chapter) to get faster builds. +\include{content/10_introduction} +\include{content/20_state} +\include{content/30_design} +\include{content/40_implementation} +\include{content/50_evaluation} +\include{content/60_futurework} +\include{content/70_conclusion} + +\appendix + +%\addchap{Glossar} + +% makeglossaries diplom +%\printglossary[style=altlist] +%\printglossary[type=\acronymtype,style=long] + +\printbibliograph +\iffalse + % an aid for Kile autocompletion + \bibliography{own.bib} +\fi + +\end{document} diff --git a/thesis/bachelor.toc b/thesis/bachelor.toc new file mode 100644 index 0000000..96e5d54 --- /dev/null +++ b/thesis/bachelor.toc @@ -0,0 +1,21 @@ +\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax +\babel@toc {british}{} +\babel@toc {british}{} +\babel@toc {british}{} +\babel@toc {british}{} +\contentsline {chapter}{\nonumberline List of Figures}{XIII}{chapter*.5}% +\contentsline {chapter}{\nonumberline List of Tables}{XV}{chapter*.6}% +\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}% +\contentsline {section}{\numberline {1.1}A Section}{1}{section.1.1}% +\contentsline {section}{\numberline {1.2}Another Section}{1}{section.1.2}% +\contentsline {section}{\numberline {1.3}Yet Another Section}{1}{section.1.3}% +\contentsline {section}{\numberline {1.4}Test commands}{1}{section.1.4}% +\contentsline {section}{\numberline {1.5}Test Special Chars}{1}{section.1.5}% +\contentsline {chapter}{\numberline {2}Technical Background}{3}{chapter.2}% +\contentsline {chapter}{\numberline {3}Design}{5}{chapter.3}% +\contentsline {chapter}{\numberline {4}Implementation}{7}{chapter.4}% +\contentsline {chapter}{\numberline {5}Evaluation}{9}{chapter.5}% +\contentsline {chapter}{\numberline {6}Future Work}{11}{chapter.6}% +\contentsline {chapter}{\numberline {7}Conclusion And Outlook}{13}{chapter.7}% +\contentsline {chapter}{\nonumberline Bibliography}{15}{chapter*.20}% +\providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file diff --git a/thesis/checkbiw/COPYING b/thesis/checkbiw/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/thesis/checkbiw/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/thesis/checkbiw/MAINTAINER b/thesis/checkbiw/MAINTAINER new file mode 100644 index 0000000..418d0c0 --- /dev/null +++ b/thesis/checkbiw/MAINTAINER @@ -0,0 +1 @@ +mailaddr hohmuth@os.inf.tu-dresden.de diff --git a/thesis/checkbiw/TODO b/thesis/checkbiw/TODO new file mode 100644 index 0000000..117518d --- /dev/null +++ b/thesis/checkbiw/TODO @@ -0,0 +1,17 @@ +- Diction does not really interpret "#" as a comment character in its + rules file -- we currently just hope it never matches. + +- Remove comments for `gosh' input, just as for LaTeX input. + +- Parse LaTeX's \include directives + +- A better algorithm for detecting double words + +- Add an option for showing the error message separate from the text + +- Should we return an error code when we found problems? + +- Add a method for disabling warnings on a per-sentence basis inside + the document. + +- Allow disabling warnings. Maybe introduce warning levels. diff --git a/thesis/checkbiw/contrib/diction/COPYING b/thesis/checkbiw/contrib/diction/COPYING new file mode 100644 index 0000000..a3f6b12 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/thesis/checkbiw/contrib/diction/INSTALL b/thesis/checkbiw/contrib/diction/INSTALL new file mode 100644 index 0000000..50dbe43 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/INSTALL @@ -0,0 +1,183 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/thesis/checkbiw/contrib/diction/Makefile.in b/thesis/checkbiw/contrib/diction/Makefile.in new file mode 100644 index 0000000..8b4294d --- /dev/null +++ b/thesis/checkbiw/contrib/diction/Makefile.in @@ -0,0 +1,108 @@ +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +srcdir= @srcdir@ +VPATH= @srcdir@ +prefix= @prefix@ +exec_prefix= @exec_prefix@ +datadir= @datadir@ +localedir= $(datadir)/locale + +CC= @CC@ +CFLAGS= @CFLAGS@ +CPPFLAGS= @CPPFLAGS@ -I. -DSHAREDIR=\"@datadir@\" -DLOCALEDIR=\"$(localedir)\" +LDFLAGS= @LDFLAGS@ +LIBM= -lm +LIBS= @LIBS@ + +CATALOGS= de.mo + +all: diction style all-po-@USE_NLS@ +all-po-no: +all-po-yes: $(CATALOGS) + +diction: diction.o sentence.o misc.o getopt.o getopt1.o + $(CC) -o $@ $(LDFLAGS) diction.o sentence.o misc.o \ + getopt.o getopt1.o $(LIBS) + +style: style.o sentence.o misc.o getopt.o getopt1.o + $(CC) -o $@ $(LDFLAGS) style.o sentence.o misc.o \ + getopt.o getopt1.o $(LIBM) $(LIBS) + +check: diction + for i in $(srcdir)/test/test*; do $$i || break; done + +install: all + [ -d $(DESTDIR)@bindir@ ] || @INSTALL@ -m 755 -d $(DESTDIR)@bindir@ + @INSTALL@ diction $(DESTDIR)@bindir@/diction + @INSTALL@ style $(DESTDIR)@bindir@/style + @INSTALL@ -m 755 -d $(DESTDIR)@datadir@/diction + @INSTALL@ -m 644 $(srcdir)/de $(DESTDIR)@datadir@/diction/de + @INSTALL@ -m 644 $(srcdir)/en $(DESTDIR)@datadir@/diction/en + (cd $(DESTDIR)@datadir@/diction; rm -f C; ln en C) + [ -d $(DESTDIR)@mandir@/man1 ] || @INSTALL@ -m 755 -d $(DESTDIR)@mandir@/man1 + @INSTALL@ -m 644 diction.1 $(DESTDIR)@mandir@/man1/diction.1 + @INSTALL@ -m 644 style.1 $(DESTDIR)@mandir@/man1/style.1 + make install-po-@USE_NLS@ +install-po-no: +install-po-yes: $(CATALOGS) + for cat in $(CATALOGS); do \ + dir=$(localedir)/`basename $$cat .mo`/LC_MESSAGES; \ + [ -d $(DESTDIR)$$dir ] || @INSTALL@ -m 755 -d $(DESTDIR)$$dir; \ + @INSTALL@ -m 644 $$cat $(DESTDIR)$$dir/diction.mo; \ + done + +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) $< + +.SUFFIXES: .po .mo + +.po.mo: + msgfmt -o $@ $< + +$(CATALOGS:.mo=.po): diction.pot + for cat in $@; do \ + [ -f $$cat ] || cp $(srcdir)/$$cat .; \ + if msgmerge $$cat $< -o $$cat.tmp; then \ + mv -f $$cat.tmp $$cat; \ + cmp -s $$cat $(srcdir)/$$cat || \ + cp $$cat $(srcdir)/$$cat; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$cat.tmp; \ + exit 1; \ + fi; \ + done + +diction.pot: $(srcdir)/*.c + (objdir=`pwd`; cd $(srcdir); \ + xgettext --add-comments --keyword=_ \ + --output=$$objdir/messages.po *.c ) + test -f messages.po && mv messages.po $@ +# The sources have changed -- update diction.pot in srcdir as well. + cp $@ $(srcdir)/$@ + +diction.html: diction.texi + makeinfo --html diction.texi + +diction.info: diction.texi + makeinfo diction.texi + +#{{{script}}}#{{{ clean +clean: + rm -f *.out core *.o *.mo diction.html diction.info +#}}} +#{{{ distclean +distclean: clean + rm -f diction style config.cache config.h config.log config.status Makefile diction.1 diction.texi style.1 test/rundiction + rm -rf autom4te.cache +#}}} +#{{{ tar +tar: distclean + (b=`pwd`; b=`basename $$b`; cd ..; tar zcvf $$b.tar.gz $$b/COPYING $$b/INSTALL $$b/Makefile.in $$b/README $$b/NEWS $$b/configure $$b/install-sh $$b/de $$b/en $$b/test $$b/[a-z]*.*) +#}}} diff --git a/thesis/checkbiw/contrib/diction/NEWS b/thesis/checkbiw/contrib/diction/NEWS new file mode 100644 index 0000000..81d1876 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/NEWS @@ -0,0 +1,10 @@ +The following things have been changed compared to version 1.02: + +o makefile bug fixed +o No default prefix of /usr on Linux (confuses packaging systems + when updating diction from source and a package was installed + before) +o Migration from catgets to GNU gettext inspired by patches from + Jochen Hein +o Diction loads phrase file for current locale by default, switching + to locale C if there is no phrase file diff --git a/thesis/checkbiw/contrib/diction/README b/thesis/checkbiw/contrib/diction/README new file mode 100644 index 0000000..93cccd4 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/README @@ -0,0 +1,22 @@ +GNU diction and style are free implementations of old standard unix +commands, that are not available on many modern systems, because they +have been unbundled. Diction prints wordy and commonly misused phrases. +Style analyses surface characteristics of a document, e.g. sentence +length and various readability measures, but unlike the original code, +it lacks sentence type, word usage and most sentence beginning processing. + +Both commands support English and German documents. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. diff --git a/thesis/checkbiw/contrib/diction/config.guess b/thesis/checkbiw/contrib/diction/config.guess new file mode 100755 index 0000000..9b1384b --- /dev/null +++ b/thesis/checkbiw/contrib/diction/config.guess @@ -0,0 +1,1400 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-11-30' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# This shell variable is my proudest work .. or something. --bje + +set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; +(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) + || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; +dummy=$tmpdir/dummy ; +files="$dummy.c $dummy.o $dummy.rel $dummy" ; +trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $files ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; +unset files' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + eval $set_cc_for_build + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null + if test "$?" = 0 ; then + case `$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + 3-1307) + UNAME_MACHINE="alphaev7" + ;; + esac + fi + rm -f $dummy.s $dummy && rmdir $tmpdir + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy && rmdir $tmpdir + fi ;; + esac + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i586-pc-interix3 + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 +rm -f $dummy.c $dummy && rmdir $tmpdir + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/thesis/checkbiw/contrib/diction/config.h.in b/thesis/checkbiw/contrib/diction/config.h.in new file mode 100644 index 0000000..7b6cc97 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/config.h.in @@ -0,0 +1,14 @@ +/* Define if you have the strerror function. */ +#undef HAVE_STRERROR + +/* Define if realloc(0,n) fails. */ +#undef BROKEN_REALLOC + +/* Define if you have the msgfmt(1) program and the gettext(3) function. */ +#undef HAVE_GETTEXT + +/* The version string. */ +#define VERSION @VERSION@ + +/* The package name. */ +#define PACKAGE @PACKAGE@ diff --git a/thesis/checkbiw/contrib/diction/config.sub b/thesis/checkbiw/contrib/diction/config.sub new file mode 100755 index 0000000..f0675aa --- /dev/null +++ b/thesis/checkbiw/contrib/diction/config.sub @@ -0,0 +1,1469 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-11-30' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39 | mipstx39el \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3d) + basic_machine=alpha-cray + os=-unicos + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic4x | c4x*) + basic_machine=tic4x-unknown + os=-coff + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/thesis/checkbiw/contrib/diction/configure b/thesis/checkbiw/contrib/diction/configure new file mode 100755 index 0000000..8a9ca16 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/configure @@ -0,0 +1,4326 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.57. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="diction.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA MSGFMT CPP EGREP VERSION UPDATED DATADIR USE_NLS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + ac_config_headers="$ac_config_headers config.h" + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +VERSION=1.03 +UPDATED='April 8, 2003' + +ALL_LINGUAS="de" + +if test "$prefix" = NONE +then + case $host in + *-linux-*) + PIPE="-pipe " + ;; + esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test "$GCC" = yes +then + CFLAGS="${CFLAGS} ${PIPE}-Wno-unused -Wshadow -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes -Wcast-align -Wcast-qual -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-declarations -Wnested-externs -Wundef -pedantic -fno-common" + LDFLAGS='-g' +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + +for ac_func in strerror +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +echo "$as_me:$LINENO: checking for broken realloc" >&5 +echo $ECHO_N "checking for broken realloc... $ECHO_C" >&6 +if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +static void sigsegv(int n) +{ + exit(1); +} + +int main(void) +{ + signal(SIGSEGV,sigsegv); + realloc((void*)0,1); + exit(0); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +cat >>confdefs.h <<\_ACEOF +#define BROKEN_REALLOC 1 +_ACEOF + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +USE_NLS=no +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MSGFMT"; then + ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MSGFMT="yes" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_MSGFMT" && ac_cv_prog_MSGFMT="no" +fi +fi +MSGFMT=$ac_cv_prog_MSGFMT +if test -n "$MSGFMT"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$MSGFMT" = yes +then + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in libintl.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + LIBINTL=yes +fi + +done + + if test "$LIBINTL" = yes + then + echo "$as_me:$LINENO: checking for library containing gettext" >&5 +echo $ECHO_N "checking for library containing gettext... $ECHO_C" >&6 +if test "${ac_cv_search_gettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_gettext=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gettext (); +int +main () +{ +gettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_gettext="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_gettext" = no; then + for ac_lib in intl; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gettext (); +int +main () +{ +gettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_gettext="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_gettext" >&5 +echo "${ECHO_T}$ac_cv_search_gettext" >&6 +if test "$ac_cv_search_gettext" != no; then + test "$ac_cv_search_gettext" = "none required" || LIBS="$ac_cv_search_gettext $LIBS" + cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + USE_NLS=yes +fi + + fi +fi + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + + + +eval DATADIR=$datadir + + + ac_config_files="$ac_config_files Makefile diction.1 diction.texi diction.spec style.1" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "diction.1" ) CONFIG_FILES="$CONFIG_FILES diction.1" ;; + "diction.texi" ) CONFIG_FILES="$CONFIG_FILES diction.texi" ;; + "diction.spec" ) CONFIG_FILES="$CONFIG_FILES diction.spec" ;; + "style.1" ) CONFIG_FILES="$CONFIG_FILES style.1" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@VERSION@,$VERSION,;t t +s,@UPDATED@,$UPDATED,;t t +s,@DATADIR@,$DATADIR,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/thesis/checkbiw/contrib/diction/configure.in b/thesis/checkbiw/contrib/diction/configure.in new file mode 100644 index 0000000..63991ff --- /dev/null +++ b/thesis/checkbiw/contrib/diction/configure.in @@ -0,0 +1,63 @@ +AC_INIT(diction.c) +AC_CONFIG_HEADER(config.h) +AC_CANONICAL_HOST +VERSION=1.03 +UPDATED='April 8, 2003' + +ALL_LINGUAS="de" + +if test "$prefix" = NONE +then + case $host in + *-linux-*) + PIPE="-pipe " + ;; + esac +fi + +AC_PROG_CC +if test "$GCC" = yes +then + CFLAGS="${CFLAGS} ${PIPE}-Wno-unused -Wshadow -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes -Wcast-align -Wcast-qual -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-declarations -Wnested-externs -Wundef -pedantic -fno-common" + LDFLAGS='-g' +fi + +AC_PROG_INSTALL +AC_CHECK_FUNCS(strerror) + +AC_MSG_CHECKING(for broken realloc) +AC_TRY_RUN([#include +#include +#include + +static void sigsegv(int n) +{ + exit(1); +} + +int main(void) +{ + signal(SIGSEGV,sigsegv); + realloc((void*)0,1); + exit(0); +} +],AC_MSG_RESULT(no),AC_DEFINE(BROKEN_REALLOC) AC_MSG_RESULT(yes)) + +USE_NLS=no +AC_CHECK_PROG(MSGFMT,msgfmt,yes,no) +if test "$MSGFMT" = yes +then + AC_CHECK_HEADERS(libintl.h,[LIBINTL=yes]) + if test "$LIBINTL" = yes + then + AC_SEARCH_LIBS(gettext,intl,[AC_DEFINE(HAVE_GETTEXT) USE_NLS=yes]) + fi +fi + +AC_DEFINE_UNQUOTED(VERSION,"$VERSION") +AC_SUBST(VERSION) +AC_SUBST(UPDATED) +eval DATADIR=$datadir +AC_SUBST(DATADIR) +AC_SUBST(USE_NLS) +AC_OUTPUT(Makefile diction.1 diction.texi diction.spec style.1) diff --git a/thesis/checkbiw/contrib/diction/de b/thesis/checkbiw/contrib/diction/de new file mode 100644 index 0000000..3b62d7d --- /dev/null +++ b/thesis/checkbiw/contrib/diction/de @@ -0,0 +1,61 @@ + Abnahme nimmt ab + Paradigma Nur als Synonym für "Beispiel, Muster" verwenden. + Zunahme nimmt zu + also folglich, d.h., demnach, demzufolge, daher, deswegen + auch ebenfalls, zusätzlich, in gleicher Weise, dementsprechend + beinhalten enthalten, umfassen, einschließen, abdecken + bekannt, daß bekanntlich + bereits + besitzen Dinge haben kein Eigentum, richtig ist: "haben, enthalten" + besitzt Dinge haben kein Eigentum, richtig ist: "hat, enthält" + besonders + bzw. Ggfs. "und" oder "oder" verwenden. + dabei hierzu, auf diese Weise + damit deshalb, so daß + darum folglich, d.h., demnach, demzufolge, daher, deswegen + doch + eben + eigentlich + erforderlich, daß muß, müssen + erstellen Nur als Synonym für "aufstellen, aufrichten" verwenden, ansonsten: "anfertigen, aufbauen, bauen, bilden, entwerfen, entwickeln, erarbeiten, erzeugen, herstellen, konstruieren, zusammenstellen" + folgt, daß folglich + genauso entsprechend + grundsätzlich + größer wie größer als + habe gezeigt, daß Wie ich gezeigt habe, ist + haben gezeigt, daß Wie wir gezeigt haben, ist + ist abhängig hängt ab + ist geeignet eignet sich + ist gleichbedeutend mit bedeutet so viel wie + konkret + konnte gezeigt werden, daß Wie gezeigt werden konnte, ist + kontrolle Falsche Übersetzung von "control", richtig ist "Steuerung". + kreieren erzeugen + nicht anzunehmen, daß kaum + nun + nun einmal + nämlich + prinzipiell + relativ + sehr + sicher + so "So" ist oft so überflüssig. + so daß ! + stellt Stellt es etwas dar oder ist es etwas? + tatsächlich + unterstützen Nur als Synonym für "helfen" verwenden, ansonsten: anbieten, ausführen einer Funktion + vorherigen vorhergehenden + vorigen vorhergehenden + welche Benutze "die", falls eine Einschränkung folgt. + welcher Benutze "der", falls eine Einschränkung folgt. + welches Benutze "das", falls eine Einschränkung folgt. + wesentliche grundsätzliche, bedeutende + wesentliches grundsätzliches, bedeutendes + wohl + ziemlich + zu berücksichtigen, daß allerdings + überaus +Und Anders formulieren. +faktor Nur bei multiplikativer Wirkung benutzen. +instanz Falsche Übersetzung von "instance", richtig ist: "Exemplar, Element, Objekt" +verbrauch Verbrauch oder Bedarf? diff --git a/thesis/checkbiw/contrib/diction/de.po b/thesis/checkbiw/contrib/diction/de.po new file mode 100644 index 0000000..3ca5dd8 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/de.po @@ -0,0 +1,389 @@ +msgid "" +msgstr "" +"Project-Id-Version: diction 1.03\n" +"POT-Creation-Date: 2004-03-10 16:55+0100\n" +"PO-Revision-Date: 2002-11-09 18:26+0100\n" +"Last-Translator: Michael Haardt \n" +"Language-Team: Deutsch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#: diction.c:79 diction.c:366 +#, c-format +msgid "diction: Opening `%s' failed (%s).\n" +msgstr "diction: Öffnen der Datei `%s' nicht möglich (%s).\n" + +#: diction.c:94 diction.c:106 diction.c:124 +msgid "diction: out of memory.\n" +msgstr "diction: verfügbarer Hauptspeicher ist erschöpft.\n" + +#: diction.c:116 +#, c-format +msgid "diction: Compiling regular expression `%s' failed (%s).\n" +msgstr "" +"diction: Compilieren des regulären Ausdrucks `%s' nicht möglich (%s).\n" + +#: diction.c:233 +msgid "Double word." +msgstr "Doppeltes Wort." + +#: diction.c:255 +msgid "" +"Usage: diction [-d] [-f file [-n|-L language]] [file ...]\n" +" diction [--ignore-double-words]\n" +" [--file file [--no-default-file|--language]] [file ...]\n" +" diction --version\n" +msgstr "" +"Aufruf: diction [-d] [-f Datei [-n|-L Sprache]] [Datei ...]\n" +" diction [--ignore-double-words]\n" +" [--file Datei [--no-default-file|--language]] [Datei ...]\n" +" diction --version\n" + +#: diction.c:294 +#, c-format +msgid "diction: Invalid string `..' in default phrase language `%s'.\n" +msgstr "diction: Ungültige Zeichenkette `..' in Default Phrasensprache `%s'.\n" + +#: diction.c:335 +msgid "Try `diction -h' or `diction --help' for more information.\n" +msgstr "" +"Versuchen Sie `diction -h' oder `diction --help' für weitere Informationen.\n" + +#: diction.c:342 +msgid "" +"Print wordy and commonly misused phrases in sentences.\n" +"\n" +"-d, --ignore-double-words do not complain about double words\n" +"-f, --file also read the specified database\n" +"-n, --no-default-file do not read the default phrase file\n" +"-L, --language set document language\n" +"-h, --help print this message\n" +" --version print the version\n" +msgstr "" +"Gibt wortreiche und häufig falsch verwendete Phrasen aus.\n" +"\n" +"-d, --ignore-double-words Beschwere Dich nicht über doppelte Worte\n" +"-f, --file Lies diese Datenbank zusätzlich\n" +"-n, --no-default-file Lies die Standard-Phrasendatei nicht\n" +"-L, --language Verwende die angegebene Sprache als " +"Dokumentensprache\n" +"-h, --help Anzeigen dieser Hilfe\n" +" --version Ausgabe der Versionsinformation\n" + +#: diction.c:351 style.c:892 +msgid "Report bugs to .\n" +msgstr "Berichten sie Fehler an .\n" + +#: diction.c:377 style.c:912 +msgid "No sentences found.\n" +msgstr "Keine Sätze gefunden.\n" + +#: diction.c:381 +msgid "No phrases " +msgstr "Keine Phrasen " + +#: diction.c:382 +msgid "1 phrase " +msgstr "Eine Phrase " + +#: diction.c:383 +#, c-format +msgid "%d phrases " +msgstr "%d Phrasen " + +#: diction.c:384 +msgid "in 1 sentence found.\n" +msgstr "in einem Satz gefunden.\n" + +#: diction.c:385 +#, c-format +msgid "in %d sentences found.\n" +msgstr "in %d Sätzen gefunden.\n" + +#: getopt.c:679 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: Option `%s' is mehrdeutig.\n" + +#: getopt.c:703 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: Option `--%s' erlaubt kein Argument.\n" + +#: getopt.c:708 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: Option `%c%s' erlaubt kein Argument.\n" + +#: getopt.c:725 getopt.c:898 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: Option `%s' benötigt ein Argument.\n" + +#. --option +#: getopt.c:754 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: Unbekannte Option `--%s'\n" + +#. +option or -option +#: getopt.c:758 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: Unbekannte Option `%c%s'\n" + +#. 1003.2 specifies the format of this message. +#: getopt.c:784 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: Ungültige Option -- %c\n" + +#: getopt.c:787 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: Ungültige Option -- %c\n" + +#. 1003.2 specifies the format of this message. +#: getopt.c:817 getopt.c:947 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Option benötigt ein Argument -- %c\n" + +#: getopt.c:864 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: Option `-W %s' ist mehrdeutig\n" + +#: getopt.c:882 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: Option `-W %s' erlaubt kein Argument\n" + +#: sentence.c:177 +#, c-format +msgid "%s: internal error, compiling a regular expression failed (%s).\n" +msgstr "" +"%s: interner Fehler, compilieren eines regulären Ausdrucks nicht möglich (%" +"s).\n" + +#: sentence.c:214 +#, c-format +msgid "%s: increasing sentence buffer failed: %s\n" +msgstr "%s: vergrößern des Satz-Puffers fehlgeschlagen: %s\n" + +#: style.c:71 style.c:85 +msgid "style: out of memory\n" +msgstr "style: kein zusätzlicher Hauptspeicher verfügbar\n" + +#: style.c:783 +msgid "" +"Usage: style [-L language] [-l length] [-r ari] [file ...]\n" +" style [--language language] [--print-long length] [--print-ari ari]\n" +" [file ...]\n" +" style --version\n" +msgstr "" +"Aufruf: style [-L Sprache] [-l Länge] [-r ari] [Dateiname ...]\n" +" style [--language Sprache] [--print-long Länge] [--print-ari ari]\n" +" [Dateiname ...]\n" +" style --version\n" + +#: style.c:872 +msgid "Try style -h|--help for more information.\n" +msgstr "style --help gibt weitere Informationen.\n" + +#: style.c:879 +msgid "" +"Analyse surface characteristics of a document.\n" +"\n" +msgstr "" + +#: style.c:880 +msgid "" +"-L, --language set the document language.\n" +"-l, --print-long print all sentences longer than words\n" +"-r, --print-ari print all sentences with an ARI greater than than " +"\n" +"-p, --print-passive print all sentences phrased in the passive voice\n" +"-N, --print-nom print all sentences containing nominalizations\n" +"-n, --print-nom-passive print all sentences phrased in the passive voice or\n" +" containing nominalizations\n" +msgstr "" +"Oberflächliche Charakteristiken eines Dokumente untersuchen.\n" +"\n" +"-L, --language Setze die Dokumentensprache\n" +"-l, --print-long Ausgabe aller Sätze länger als Wörter\n" +"-r, --print-ari Ausgabe aller Sätze mit einer ARI größer als \n" +"-p, --print-passive Ausgabe passiv formulierter Sätze\n" +"-N, --print-nom print all sentences containing nominalizations\n" +"-n, --print-nom-passive print all sentences phrased in the passive voice or\n" +" containing nominalizations\n" +"-h, --help Anzeigen dieser Hilfe\n" +" --version Ausgabe der Versionsinformation\n" + +#: style.c:888 +msgid "" +"-h, --help print this message\n" +" --version print the version\n" +msgstr "" +"-h, --help Diesen Text ausgeben\n" +" --version Die Version ausgeben\n" + +#: style.c:902 +#, c-format +msgid "style: Opening `%s' failed (%s).\n" +msgstr "style: Öffnen der Datei `%s' nicht möglich (%s).\n" + +#: style.c:920 +msgid "readability grades:\n" +msgstr "Lesbarkeits-Stufen:\n" + +#: style.c:921 +msgid "Kincaid" +msgstr "Kincaid" + +#: style.c:922 +msgid "ARI" +msgstr "ARI" + +#: style.c:923 +msgid "Coleman-Liau" +msgstr "Coleman-Liau" + +#: style.c:924 +msgid "Flesch Index" +msgstr "Flesch Index" + +#: style.c:925 +msgid "Fog Index" +msgstr "Fog Index" + +#: style.c:927 +msgid "1. WSTF Index" +msgstr "1. WSTF Index" + +#: style.c:928 +msgid "Wheeler-Smith Index" +msgstr "Wheeler-Smith Index" + +#: style.c:929 style.c:934 +msgid "below school year 5\n" +msgstr "niedriger als das fünfte Schuljahr\n" + +#: style.c:930 +msgid "higher than school year 10\n" +msgstr "höher als das zehnte Schuljahr\n" + +#: style.c:931 style.c:936 +#, c-format +msgid "school year %d\n" +msgstr "%d. Schuljahr\n" + +#: style.c:933 +msgid "Lix" +msgstr "Lix" + +#: style.c:935 +msgid "higher than school year 11\n" +msgstr "höher als das 11. Schuljahr\n" + +#: style.c:937 +msgid "SMOG-Grading" +msgstr "SMOG-Grading" + +#: style.c:939 +msgid "sentence info:\n" +msgstr "Satz-Information:\n" + +#: style.c:940 +#, c-format +msgid " %d characters\n" +msgstr " %d Zeichen\n" + +#: style.c:941 +#, c-format +msgid " %d words, average length %.2f characters = %.2f syllables\n" +msgstr " %d Worte, durschnittliche Länge %.2f Zeichen = %.2f Silben\n" + +#: style.c:942 +#, c-format +msgid " %d sentences, average length %.1f words\n" +msgstr " %d Sätze, durchschnittliche Länge %.1f Worte\n" + +#: style.c:946 +#, c-format +msgid " %d%% (%d) short sentences (at most %d words)\n" +msgstr " %d%% (%d) kurze Sätze (hoechstens %d Worte)\n" + +#: style.c:949 +#, c-format +msgid " %d%% (%d) long sentences (at least %d words)\n" +msgstr " %d%% (%d) lange Sätze (mindestens %d Worte)\n" + +#: style.c:950 +#, c-format +msgid " %d paragraphs, average length %.1f sentences\n" +msgstr " %d Absätze, durschnittliche Länge %.1f Sätze\n" + +#: style.c:951 +#, c-format +msgid " %d%% (%d) questions\n" +msgstr " %d%% (%d) Fragen\n" + +#: style.c:952 +#, c-format +msgid " %d%% (%d) passive sentences\n" +msgstr " %d%% (%d) passive Sätze\n" + +#: style.c:953 +#, c-format +msgid "" +" longest sent %d wds at sent %d; shortest sent %d wds at sent %d\n" +msgstr "" +" Längster Satz (%2d) enthält %d Wort\n" +" Kürzester Satz (%2d) enthält %d Worte\n" + +#: style.c:972 +msgid "word usage:\n" +msgstr "Wortwahl:\n" + +#: style.c:973 +msgid " verb types:\n" +msgstr " Verb Typen:\n" + +#: style.c:974 +#, c-format +msgid " to be (%d) auxiliary (%d) \n" +msgstr " \"sein\" (%d) Hilfsverb (%d) \n" + +#: style.c:975 +#, c-format +msgid " types as %% of total:\n" +msgstr " Typ in %% der Gesamtzahl:\n" + +#: style.c:976 +msgid "" +" conjunctions %1.f% (%d) pronouns %1.f% (%d) prepositions %1.f% (%d)\n" +msgstr "" +" Konjunktionen %1.f% (%d) Pronomen %1.f% (%d) Prýositionen %1.f% (%" +"d)\n" + +#: style.c:981 +msgid " nominalizations %1.f% (%d)\n" +msgstr " Substantivierungen %1.f% (%d)\n" + +#: style.c:985 +msgid "sentence beginnings:\n" +msgstr "Satzanfang:\n" + +#: style.c:986 +#, c-format +msgid " pronoun (%d) interrogative pronoun (%d) article (%d)\n" +msgstr " Pronomen (%d) Fragepronomen (%d) Artikel (%d)\n" + +#: style.c:989 +#, c-format +msgid "" +" subordinating conjunction (%d) conjunction (%d) preposition (%d)\n" +msgstr "" +" untergeordnete Konjunktion (%d) Konjunktion (%d) Präposition (%d)\n" diff --git a/thesis/checkbiw/contrib/diction/diction.1.in b/thesis/checkbiw/contrib/diction/diction.1.in new file mode 100644 index 0000000..95e50a1 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/diction.1.in @@ -0,0 +1,121 @@ +.TH DICTION 1 "@UPDATED@" "GNU" "User commands" +.SH NAME \"{{{roff}}}\"{{{ +diction \- print wordy and commonly misused phrases in sentences +.\"}}} +.SH SYNOPSIS \"{{{ +.ad l +.B diction +.RB [ \-f +.IR file +.RB [ \-n | \-L +.IR language ]] +.RI [ file ...] +.ad b +.br +.ad l +.B diction +.RB [ \-\-file +.IR file +.RB [ \-\-no-default-file | \-\-language +.IR language ]] +.RI [ file ...] +.ad b +.br +.ad l +.B diction +.BR \-h | \-\-help +.ad b +.br +.ad l +.B diction \-\-version +.ad b +.\"}}} +.SH DESCRIPTION \"{{{ +\fBDiction\fP finds all sentences in a document, that contain phrases +from a database of frequently misused, bad or wordy diction. It further +checks for double words. If no files are given, the document is read +from standard input. Each found phrase is enclosed in \fB[ ]\fP +(brackets). Suggestions and advice, if any, are printed headed by a +right arrow \fB->\fP. +A sentence is a sequence of words, that starts with a capitalised word and +ends with a full stop, double colon, question mark or exclaimation mark. +A single letter followed by a dot is considered an abbreviation, so it +does not terminate a sentence. Various multi-letter abbreviations are +recognized, they do not terminate a sentence as well. +.PP +\fBDiction\fP understands \fIcpp\fP(1) \fB#line\fP lines for being able to +give precise locations when printing sentences. +.\"}}} +.SH OPTIONS \"{{{ +.IP "\fB\-f\fP \fIfile\fP, \fB\-\-file\fP \fIfile\fP" +Read the user specified database from the specified \fIfile\fP in addition +to the default database. +.IP "\fB\-n\fP, \fB\-\-no-default-file\fP" +Do not read the default database, so only the user-specified database is used. +.IP "\fB\-L\fP \fIlanguage\fP, \fB\-\-language\fP \fIlanguage\fP" +Set the phrase file language. +.IP "\fB\-h\fP, \fB\-\-help\fP" +Print a short usage message. +.IP \fB\-\-version\fP +Print the version. +.\"}}} +.SH ERRORS \"{{{ +On usage errors, 1 is returned. Termination caused by lack of memory is +signalled by exit code 2. +.\"}}} +.SH EXAMPLE \"{{{ +The following example first removes all roff constructs and headers +from a document and feeds the result to diction with a German database: +.RS +.sp +deroff -s file.mm | diction -L de | fmt +.RE +.\"}}} +.SH ENVIRONMENT \"{{{ +.IP "\fBLC_MESSAGES\fP=\fBde\fP|\fBen\fP" +specifies the message language and is also used as default for the +phrase language. The default language is \fBen\fP. +.\"}}} +.SH FILES \"{{{ +.nf +@DATADIR@/diction/* databases for various languages +.fi +.\"}}} +.SH AUTHOR \"{{{ +This program is GNU software, copyright 1997, 1998, 1999, 2000, 2001, +2002 Michael Haardt . +.PP +The english phrase file contains contributions by Greg Lindahl +, Wil Baden, Gary D. Kline, Kimberly Hanks and +Beth Morris. +.PP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.PP +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +.\"}}} +.SH HISTORY \"{{{ +There has been a diction command on old UNIX systems, which is now part +of the AT&T DWB package. The original version was bound to roff by +enforcing a call to deroff. +.\"}}} +.SH "SEE ALSO" \"{{{ +deroff(1), fmt(1), style(1) +.PP +Cherry, L.L.; Vesterman, W.: \fIWriting Tools\(emThe STYLE and DICTION +programs\fP, Computer Science Technical Report 91, Bell Laboratories, +Murray Hill, N.J. (1981), republished as part of the 4.4BSD User's +Supplementary Documents by O'Reilly. +.PP +Strunk, William: \fIThe elements of style\fP, Ithaca, N.Y.: Priv. print., 1918, +http://coba.shsu.edu/help/strunk/ +.\"}}} diff --git a/thesis/checkbiw/contrib/diction/diction.c b/thesis/checkbiw/contrib/diction/diction.c new file mode 100644 index 0000000..eb78580 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/diction.c @@ -0,0 +1,389 @@ +/* Notes */ /*{{{C}}}*//*{{{*/ +/* + +This program is GNU software, copyright 1997-2004 +Michael Haardt . + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +/*}}}*/ +/* #includes */ /*{{{*/ +#undef _POSIX_SOURCE +#define _POSIX_SOURCE 1 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 2 + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_GETTEXT +#include +#define _(String) gettext(String) +#else +#define _(String) String +#endif +#include +#include +#include +#include +#include + +#include "getopt.h" +#include "misc.h" +#include "sentence.h" +/*}}}*/ +/* types */ /*{{{*/ +struct badPhrase +{ + char *phrase; + regex_t phrase_r; + char *suggest; +}; +/*}}}*/ + +static int doubleWords=1; +static char phraseLanguage[32]; +static struct badPhrase *badPhrases=(struct badPhrase *)0; +static int badPhraseCapacity=0; +static int badPhraseSize=0; +static int sentences,hits; + +static void loadPhrases(const char *file) /*{{{*/ +{ + FILE *fp; + char ln[1024]; + char *tab; + size_t l; + int fix,j; + + if ((fp=fopen(file,"r"))==(FILE*)0) + { + fprintf(stderr,_("diction: Opening `%s' failed (%s).\n"),file,strerror(errno)); + exit(1); + } + while (fgets(ln,sizeof(ln),fp)) + { + l=strlen(ln); + if (l && ln[l-1]=='\n') ln[--l]='\0'; + if (ln[0]) + { + int err; + + if (badPhraseSize==badPhraseCapacity) /* enlarge capacity */ /*{{{*/ + { + if ((badPhrases=realloc(badPhrases,(badPhraseCapacity=3*(badPhraseCapacity+32))*sizeof(struct badPhrase)))==(struct badPhrase*)0) + { + fprintf(stderr,_("diction: out of memory.\n")); + exit(2); + } + } + /*}}}*/ + if ((tab=strchr(ln,'\t'))) + { + *tab='\0'; + ++tab; + } + if ((badPhrases[badPhraseSize].phrase=malloc(strlen(ln)+1))==(char*)0) + { + fprintf(stderr,_("diction: out of memory.\n")); + exit(2); + } + strcpy(badPhrases[badPhraseSize].phrase,ln); +#if 0 + if ((err=regcomp(&badPhrases[badPhraseSize].phrase_r,ln,REG_EXTENDED))!=0) + { + char errmsg[1024]; + + regerror(err,&badPhrases[badPhraseSize].phrase_r,errmsg,sizeof(errmsg)); + fprintf(stderr,_("diction: Compiling regular expression `%s' failed (%s).\n"),ln,errmsg); + exit(2); + } +#endif + if (tab) + { + if ((badPhrases[badPhraseSize].suggest=malloc(strlen(tab)+1))==(char*)0) + { + fprintf(stderr,_("diction: out of memory.\n")); + exit(2); + } + strcpy(badPhrases[badPhraseSize].suggest,tab); + } + else badPhrases[badPhraseSize].suggest=(char*)0; + ++badPhraseSize; + } + } + /* resolve =phrase explainations */ /*{{{*/ + for (fix=0; fixphrase; + if (*badword==' ') /* beginning of sentence or word */ + { + if (s>sent && isalpha(*(s-1))) continue; + ++badword; + } + str=s; + while ((*badword==tolower(*str) || *badword==*str) && *badword && *str) { ++badword; ++str; } + if ((*badword=='\0' && !isalpha(*str)) || (*badword=='~' && isalpha(*str))) + { + if (bp->suggest && *bp->suggest!='!') + { + ++hits; + if (lastout==sent) printf("%s:%d: ",file,line); + while (lastoutsuggest) + { + putc(' ',stdout); + putc('-',stdout); + putc('>',stdout); + putc(' ',stdout); + fputs(bp->suggest,stdout); + } + putc(']',stdout); + } + s=str-1; + break; + } + } + /*}}}*/ + /* check for double words */ /*{{{*/ + if (doubleWords) + { + const char *badword,*str; + + if (s>sent && !isalpha(*(s-1))) + { + /* move back to end of last word */ + badword=s-1; + while (badword>=sent && !isalpha(*badword)) --badword; + if (badword>sent) + { + /* move back to begin of last word */ + while (badword>=sent && isalpha(*badword)) --badword; + if (!isalpha(*badword)) ++badword; + str=s; + while (*badword==*str && badword',stdout); + putc(' ',stdout); + fputs(_("Double word."),stdout); + putc(']',stdout); + lastWord=s; + s=str-1; + } + } + } + } + /*}}}*/ + ++s; + } + ++sentences; + if (lastout!=sent) + { + while (lastout.\n"),stdout); + exit(0); + } + /*}}}*/ + if (defaultPhrases[0]) loadPhrases(defaultPhrases); + if (userPhrases) loadPhrases(userPhrases); + sentences=0; + hits=0; + if (optind==argc) sentence("diction",stdin,"(stdin)",diction,phraseLanguage); + else while (optind, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2004-03-10 16:55+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: diction.c:79 diction.c:366 +#, c-format +msgid "diction: Opening `%s' failed (%s).\n" +msgstr "" + +#: diction.c:94 diction.c:106 diction.c:124 +msgid "diction: out of memory.\n" +msgstr "" + +#: diction.c:116 +#, c-format +msgid "diction: Compiling regular expression `%s' failed (%s).\n" +msgstr "" + +#: diction.c:233 +msgid "Double word." +msgstr "" + +#: diction.c:255 +msgid "" +"Usage: diction [-d] [-f file [-n|-L language]] [file ...]\n" +" diction [--ignore-double-words]\n" +" [--file file [--no-default-file|--language]] [file ...]\n" +" diction --version\n" +msgstr "" + +#: diction.c:294 +#, c-format +msgid "diction: Invalid string `..' in default phrase language `%s'.\n" +msgstr "" + +#: diction.c:335 +msgid "Try `diction -h' or `diction --help' for more information.\n" +msgstr "" + +#: diction.c:342 +msgid "" +"Print wordy and commonly misused phrases in sentences.\n" +"\n" +"-d, --ignore-double-words do not complain about double words\n" +"-f, --file also read the specified database\n" +"-n, --no-default-file do not read the default phrase file\n" +"-L, --language set document language\n" +"-h, --help print this message\n" +" --version print the version\n" +msgstr "" + +#: diction.c:351 style.c:892 +msgid "Report bugs to .\n" +msgstr "" + +#: diction.c:377 style.c:912 +msgid "No sentences found.\n" +msgstr "" + +#: diction.c:381 +msgid "No phrases " +msgstr "" + +#: diction.c:382 +msgid "1 phrase " +msgstr "" + +#: diction.c:383 +#, c-format +msgid "%d phrases " +msgstr "" + +#: diction.c:384 +msgid "in 1 sentence found.\n" +msgstr "" + +#: diction.c:385 +#, c-format +msgid "in %d sentences found.\n" +msgstr "" + +#: getopt.c:679 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: getopt.c:703 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: getopt.c:708 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: getopt.c:725 getopt.c:898 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +#. --option +#: getopt.c:754 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "" + +#. +option or -option +#: getopt.c:758 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "" + +#. 1003.2 specifies the format of this message. +#: getopt.c:784 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: getopt.c:787 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#. 1003.2 specifies the format of this message. +#: getopt.c:817 getopt.c:947 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: getopt.c:864 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "" + +#: getopt.c:882 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "" + +#: sentence.c:177 +#, c-format +msgid "%s: internal error, compiling a regular expression failed (%s).\n" +msgstr "" + +#: sentence.c:214 +#, c-format +msgid "%s: increasing sentence buffer failed: %s\n" +msgstr "" + +#: style.c:71 style.c:85 +msgid "style: out of memory\n" +msgstr "" + +#: style.c:783 +msgid "" +"Usage: style [-L language] [-l length] [-r ari] [file ...]\n" +" style [--language language] [--print-long length] [--print-ari ari]\n" +" [file ...]\n" +" style --version\n" +msgstr "" + +#: style.c:872 +msgid "Try style -h|--help for more information.\n" +msgstr "" + +#: style.c:879 +msgid "" +"Analyse surface characteristics of a document.\n" +"\n" +msgstr "" + +#: style.c:880 +msgid "" +"-L, --language set the document language.\n" +"-l, --print-long print all sentences longer than words\n" +"-r, --print-ari print all sentences with an ARI greater than than " +"\n" +"-p, --print-passive print all sentences phrased in the passive voice\n" +"-N, --print-nom print all sentences containing nominalizations\n" +"-n, --print-nom-passive print all sentences phrased in the passive voice or\n" +" containing nominalizations\n" +msgstr "" + +#: style.c:888 +msgid "" +"-h, --help print this message\n" +" --version print the version\n" +msgstr "" + +#: style.c:902 +#, c-format +msgid "style: Opening `%s' failed (%s).\n" +msgstr "" + +#: style.c:920 +msgid "readability grades:\n" +msgstr "" + +#: style.c:921 +msgid "Kincaid" +msgstr "" + +#: style.c:922 +msgid "ARI" +msgstr "" + +#: style.c:923 +msgid "Coleman-Liau" +msgstr "" + +#: style.c:924 +msgid "Flesch Index" +msgstr "" + +#: style.c:925 +msgid "Fog Index" +msgstr "" + +#: style.c:927 +msgid "1. WSTF Index" +msgstr "" + +#: style.c:928 +msgid "Wheeler-Smith Index" +msgstr "" + +#: style.c:929 style.c:934 +msgid "below school year 5\n" +msgstr "" + +#: style.c:930 +msgid "higher than school year 10\n" +msgstr "" + +#: style.c:931 style.c:936 +#, c-format +msgid "school year %d\n" +msgstr "" + +#: style.c:933 +msgid "Lix" +msgstr "" + +#: style.c:935 +msgid "higher than school year 11\n" +msgstr "" + +#: style.c:937 +msgid "SMOG-Grading" +msgstr "" + +#: style.c:939 +msgid "sentence info:\n" +msgstr "" + +#: style.c:940 +#, c-format +msgid " %d characters\n" +msgstr "" + +#: style.c:941 +#, c-format +msgid " %d words, average length %.2f characters = %.2f syllables\n" +msgstr "" + +#: style.c:942 +#, c-format +msgid " %d sentences, average length %.1f words\n" +msgstr "" + +#: style.c:946 +#, c-format +msgid " %d%% (%d) short sentences (at most %d words)\n" +msgstr "" + +#: style.c:949 +#, c-format +msgid " %d%% (%d) long sentences (at least %d words)\n" +msgstr "" + +#: style.c:950 +#, c-format +msgid " %d paragraphs, average length %.1f sentences\n" +msgstr "" + +#: style.c:951 +#, c-format +msgid " %d%% (%d) questions\n" +msgstr "" + +#: style.c:952 +#, c-format +msgid " %d%% (%d) passive sentences\n" +msgstr "" + +#: style.c:953 +#, c-format +msgid "" +" longest sent %d wds at sent %d; shortest sent %d wds at sent %d\n" +msgstr "" + +#: style.c:972 +msgid "word usage:\n" +msgstr "" + +#: style.c:973 +msgid " verb types:\n" +msgstr "" + +#: style.c:974 +#, c-format +msgid " to be (%d) auxiliary (%d) \n" +msgstr "" + +#: style.c:975 +#, c-format +msgid " types as %% of total:\n" +msgstr "" + +#: style.c:976 +msgid "" +" conjunctions %1.f% (%d) pronouns %1.f% (%d) prepositions %1.f% (%d)\n" +msgstr "" + +#: style.c:981 +msgid " nominalizations %1.f% (%d)\n" +msgstr "" + +#: style.c:985 +msgid "sentence beginnings:\n" +msgstr "" + +#: style.c:986 +#, c-format +msgid " pronoun (%d) interrogative pronoun (%d) article (%d)\n" +msgstr "" + +#: style.c:989 +#, c-format +msgid "" +" subordinating conjunction (%d) conjunction (%d) preposition (%d)\n" +msgstr "" diff --git a/thesis/checkbiw/contrib/diction/diction.spec b/thesis/checkbiw/contrib/diction/diction.spec new file mode 100644 index 0000000..3606002 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/diction.spec @@ -0,0 +1,57 @@ +%define prefix /usr + +%define RELEASE 1 +%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} + +Summary: analyze text for style +Name: diction +Version: 1.03 +Release: %rel +Copyright: GPL +Group: Text/Utilities +Source: http://www.moria.de/~michael/diction/diction-%{version}.tar.gz +BuildRoot: /var/tmp/%{name}-%{version}-root +URL: http://www.moria.de/~michael/diction/ +DocDir: %{prefix}/doc + +%description +diction [desc] + +%changelog +* Thu May 12 2000 HWN +- Initial spec file copied GGV + +%prep +%setup + +%build + +# Needed for snapshot releases. +if [ ! -f configure ]; then + CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh $ARCH_FLAGS --prefix=%{prefix} +else + CFLAGS="$RPM_OPT_FLAGS" ./configure $ARCH_FLAGS --prefix=%{prefix} +fi + +if [ "$SMP" != "" ]; then + (make "MAKE=make -k -j $SMP"; exit 0) + make +else + make +fi + +%install +rm -rf $RPM_BUILD_ROOT + +make prefix=$RPM_BUILD_ROOT%{prefix} install + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-, root, root) + +%doc COPYING README +%{prefix}/bin/* +%{prefix}/share/* +%{prefix}/man/* diff --git a/thesis/checkbiw/contrib/diction/diction.spec.in b/thesis/checkbiw/contrib/diction/diction.spec.in new file mode 100644 index 0000000..9509129 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/diction.spec.in @@ -0,0 +1,57 @@ +%define prefix /usr + +%define RELEASE 1 +%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} + +Summary: analyze text for style +Name: diction +Version: @VERSION@ +Release: %rel +Copyright: GPL +Group: Text/Utilities +Source: http://www.moria.de/~michael/diction/diction-%{version}.tar.gz +BuildRoot: /var/tmp/%{name}-%{version}-root +URL: http://www.moria.de/~michael/diction/ +DocDir: %{prefix}/doc + +%description +diction [desc] + +%changelog +* Thu May 12 2000 HWN +- Initial spec file copied GGV + +%prep +%setup + +%build + +# Needed for snapshot releases. +if [ ! -f configure ]; then + CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh $ARCH_FLAGS --prefix=%{prefix} +else + CFLAGS="$RPM_OPT_FLAGS" ./configure $ARCH_FLAGS --prefix=%{prefix} +fi + +if [ "$SMP" != "" ]; then + (make "MAKE=make -k -j $SMP"; exit 0) + make +else + make +fi + +%install +rm -rf $RPM_BUILD_ROOT + +make prefix=$RPM_BUILD_ROOT%{prefix} install + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-, root, root) + +%doc COPYING README +%{prefix}/bin/* +%{prefix}/share/* +%{prefix}/man/* diff --git a/thesis/checkbiw/contrib/diction/diction.texi.in b/thesis/checkbiw/contrib/diction/diction.texi.in new file mode 100644 index 0000000..b41a6ee --- /dev/null +++ b/thesis/checkbiw/contrib/diction/diction.texi.in @@ -0,0 +1,272 @@ +@c {{{Texinfo}}}@c {{{ Setup +\input texinfo +@setfilename diction.info +@settitle diction, print wordy and commonly misused phrases in sentences + +@syncodeindex ky cp +@syncodeindex pg cp +@syncodeindex tp cp + +@defcodeindex op +@syncodeindex op fn +@syncodeindex vr fn + +@ifinfo +@direntry +* diction: (diction). print wordy and commonly misused phrases in sentences. +@end direntry +This file documents @command{diction}, a program to print wordy and +commonly misused phrases in sentences. + +Published by the Free Software Foundation, +59 Temple Place - Suite 330 +Boston, MA 02111-1307, USA + +Copyright 1997, 1998, 1999, 2000 Michael Haardt + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by Michael Haardt. +@end ifinfo + +@setchapternewpage off +@c }}} +@c {{{ Title page +@titlepage +@title diction, print wordy and commonly misused phrases in sentences +@subtitle version @VERSION@, @UPDATED@ +@author Michael Haardt + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1997, 1998, 1999, 2000 Michael Haardt + +@sp 2 +Published by the Free Software Foundation, @* +59 Temple Place - Suite 330, @* +Boston, MA 02111-1307, USA + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by Michael Haardt. + +@end titlepage +@c }}} +@c {{{ Overview +@page +@ifnottex +@node Top +@top Diction + +@command{diction} prints wordy and commonly misused phrases in sentences. + +This document was produced for version @VERSION@ of @sc{gnu} +@command{diction}. +@end ifnottex + +@menu +* Introduction:: Introduction. +* Invoking:: Invoking @command{diction}; description of options. +* Diagnostics:: Exit status returned by @command{diction}. +* Reporting Bugs:: Reporting Bugs. +* Concept Index:: A menu with all the topics in this manual. +* Index:: A menu with all @command{diction} commands + and command-line options. +@end menu +@c }}} +@c {{{ Introduction +@node Introduction +@chapter Introduction + +@command{diction} finds all sentences in a document, that contain +phrases from a database of frequently misused, bad or wordy diction. +It further checks for double words. If no files are given, the document +is read from standard input. Each found phrase is enclosed in @code{[ ]} +(brackets). Suggestions and advice, if any, are printed headed by a right +arrow @code{->}. A sentence is a sequence of words, that starts with a +capitalised word and ends with a full stop, double colon, question mark +or exclaimation mark. A single letter followed by a dot is considered an +abbreviation, so it does not terminate a sentence. Various multi-letter +abbreviations are recognized, they do not terminate a sentence as well. + +@command{diction} understands @command{cpp} @code{#line} lines for being +able to give precise locations when printing sentences. + +There has been a diction command on old UNIX systems, which is now part +of the AT&T DWB package. The original version was bound to roff by +enforcing a call to @command{deroff}. This version is a reimplementation +and not must run in a pipe with @command{deroff} if you want to process +roff documents. Similarly, you can run it in a pipe with @command{dehtml} +or @command{detex} to process HTML or TeX documents. + +See also: + +Cherry, L.L.; Vesterman, W.: Writing Tools-The STYLE and DICTION +programs, Computer Science Technical Report 91, Bell Laboratories, +Murray Hill, N.J. (1981), republished as part of the 4.4BSD User's +Supplementary Documents by O'Reilly. + +Strunk, William: The elements of style, Ithaca, N.Y.: Priv. print., 1918, +@url{http://coba.shsu.edu/help/strunk/}. +@c }}} +@c {{{ Invoking +@node Invoking +@chapter Invoking @command{diction} + +@table @samp + +@item -f @var{file} +@itemx --file @var{file} +@opindex -f +@opindex --file +@cindex user specified database +Read the user specified database from the specified @var{file} in addition +to the default database. + +@item -n +@itemx --no-default-file +@opindex -n +@opindex --no-default-file +@cindex not loading default database +Do not read the default database, so only the user-specified database is used. + +@item -L @var{language} +@itemx --language @var{language} +@opindex -L +@opindex --language +@cindex set phrase file language +Set the phrase file language. + +@item -h +@itemx --help +@opindex -h +@opindex --help +@cindex print usage message +Print a short usage message. + +@itemx --version +@opindex --version +@cindex print version +Print the version. + +@end table + +@section Environment Variables + +Diction's behaviour is affected by the following environment variables. +@cindex environment variables + +@table @code + +@itemx LC_MESSAGES +@vindex LC_MESSAGES +@cindex language of messages +@cindex message language +@cindex national language support +@cindex NLS +@cindex translation of message language +This variable specifies the @code{LC_MESSAGES} locale, which determines +the language that @command{diction} uses for messages. American English +is used if the environment variable is not set, or if the message catalog +is not installed, or if @command{diction} was not compiled with national +language support (@sc{nls}). The variable is further used as default +for the phrase language. + +@end table + +@section Files + +@cindex files + +@table @code + +@itemx @DATADIR@/diction +This directory contains phrase databases for various languages. + +@end table +@c }}} +@c {{{ Diagnostics +@node Diagnostics +@chapter Diagnostics + +If no errors occur, exit status is 0. On usage errors, 1 is returned. +Termination caused by lack of memory is signalled by exit code 2. +@c }}} +@c {{{ Reporting Bugs +@node Reporting Bugs +@chapter Reporting Bugs + +If you find a bug in @command{diction}, please send electronic mail to +@email{michael@@moria.de}. Include the version number, which you can find +by running @command{diction --version}. Also include the hardware and +operating system, the compiler used to compile `diction', a description +of the bug behavior, and the input to `diction' that triggered the bug. +@c }}} +@c {{{ Author +@node Author +@chapter Author + +This program is GNU software, copyright 1997, 1998, 1999, 2000 Michael Haardt +@email{michael@@moria.de}. + +The english phrase file contains contributions by Greg Lindahl +@email{lindahl@@pbm.com}, Wil Baden, Gary D. Kline, Kimberly Hanks and +Beth Morris. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +@c }}} +@c {{{ Concept Index +@page +@node Concept Index +@unnumbered Concept Index + +This is a general index of all issues discussed in this manual, with the +exception of the @command{diction} command-line options. + +@printindex cp +@c }}} +@c {{{ Index +@page +@node Index +@unnumbered Index + +This is an alphabetical list of all @command{diction} command-line +options and environment variables. + +@printindex fn + +@contents +@c }}} +@bye diff --git a/thesis/checkbiw/contrib/diction/en b/thesis/checkbiw/contrib/diction/en new file mode 100644 index 0000000..ccf0fa7 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/en @@ -0,0 +1,680 @@ + a considerable amount of much + a large number of many + a lot of Often obsolete, should sometimes be replaced by "many" + a majority of most + a man who + a matter of concern (cliche, avoid) + a need for need + a number of many, several + a particular preference for + a small number of few + a tendency to + ability to + about which ! + absolutely complete complete + absolutely essential essential + accomplish do + accomplished did + accounted for by the fact that caused by + actually + adequate (weak definition) + adequate enough (weak definition) + administrate administer + affect "Affect" means "have an influence on", "produce an effect on", "concern", "effect a change in"; compare with "effect": "bring about", "cause", "produce, "result in." + affected = affect + affective "affective" or "effective"? + after which ! + all right (avoid) + all things being equal (cliche, avoid) + allude (an allusion is an indirect reference, while a reference is a direct reference) + alluded = allude + allusion = allude + along the line (avoid) + along the line of like (or omit) + along the lines (avoid) + along the lines of like (or omit) + along these lines (overworked phrase, avoid) + along those lines (avoid) + alternate Alternative refers to choosing the other of two possibilities. Alternate refers to another element of a set, without connoting choice. + alternative = alternate + among Choose "between" 2 options and "among" 3 or more. + an example of this is the fact that thus + an indication of + an order of magnitude faster 10 times faster + and/or (avoid) + anticipate Use "expect" for simple predictions and "anticipate" for more complex actions in advance of an event. + anticipated = anticipate + apparent that + are of the same opinion agree + arrive at a + arrive at a decision decide + as a consequence of because + as a last resort (cliche, avoid) + as a matter of fact in fact (or omit) + as a minimum (weak definition) + as a result so + as already stated (use active instead of passive voice) + as applicable (weak definition) + as appropriate (weak definition) + as can be seen from shows + as good or better than (use "as good as or better than" or possibly rearrange the sentence) + as is the case as happens + as long as when, if + as means of for, to + as necessary + as of this date today + as per + as shown in shows that + as to about (or omit) + as to whether whether + as yet (you can often replace with simply "yet," except at the beginning of a sentence) + ask the question ask + assure (use "assure" with people, "ensure" with things, and "insure" when talking about money) + assured = assure + assuring = assure + at above above + at an earlier date previously + at below below + at present + at the present + at the present time now + at the rate of + at the same time as while + at this point in time now + at this time + at which ! + attached hereto (cliche, avoid) + attempt try + authorization + avail yourself help + based on the fact that because + based on the fact, that because + basic principles principles + basically + be able to (weak definition) + be capable (weak definition) + between (choose "between" 2 options and "among" 3 or more) + between which ! + bring to a conclusion conclude + but not limited to (weak definition) + by means of by, with + by no means (cliche, avoid) + by the use of by + by which ! + call your attention to the fact that remind you, notify you + can (do not confuse with "may") + can not (use "cannot" unless you want to put special emphasis on the word "not") + capability of (weak definition) + capability to (weak definition) + carry out + case Avoid if used to describe the instance of a situation. + certainly Avoid if used to intensify any and every statement. + character Often redundant, except when discussing role-playing games. + check into check + check on check + check up on check + claim Do not use as substitute for "declare", "maintain" or "charge." + clear that + clever Greatly overused word, restrict to small matters. + clockwise ! + collect together collect + communicate with talk, telephone, write to + comparatively Avoid unless really comparing. + compare "Compare" to points out resemblances, "compare with" points out differences. + compare with = compare + compared = compare + compared with = compare + comparing = compare + comparing with = compare + complementary A "complimentary" comment is one which is flattering. A "complementary" comment is one which completes or complements another comment. + completely full full + complimentary = complementary + comprise Only use in the meaning of including something. + comprised = comprise + comprising = comprise + connected together connected + consensus of opinion consensus + consider Not followed by "as" when it means "believe to be". + considered = consider + considering = consider + conspicious by its absence (cliche, avoid) + contact When used as a transitive verb, "contact" is a poor choice. Get in touch with someone, or call them, instead of contacting them. + contacted = contact + contacting = contact + cope Should generally be used along with the word "with". + cope with ! + coped = cope + coped with ! + could = can + criteria = criterion + criterion "Criterion" is singular, "criteria" is plural. + currently Often redundant: This program is currently checking your document. + data is data are + deficiency lack + definitely + deleterious effect + dependable reliable, trustworthy + desert "Desert" and "dessert" are sometimes confused, to the delight of the masses. + despite the fact that although, though + despite the fact, that although, though + dessert = desert + different than Restrict to introducing a clause and use "different from" else. + discontentment discontent + disinterest Synonym for "impartial", do not confuse with "uninterested." + disinterested = disinterest + disinteresting = disinterest + doubt but doubt + doubtful that + due to Synonym for "attributable to", often confused with "through, because of, owing to." + due to the fact that because + due to the fact, that because + during the course of during, while + during the time that while + each and every one (avoid) + easier said than done (cliche, avoid) + easy (weak definition) + effect = affect + effected = effect + effecting = effect + effective (weak definition) + elucidate explain + elucidated = elucidate + elucidating = elucidate + enclosed herewith (cliche, avoid) + end result result + enormity Restrict to connoting abnormality or something more unusual than mere size. + ensure = assure + ensured = assure + ensuring = assure + enter in enter + enter into enter + enthuse (avoid) + enthused = enthuse + enthusing = enthuse + entirely eliminate eliminate + equitable fair + essentially + etc "Etc" should be avoided in formal writing. + etc. Do not use for persons or if "and the rest, and so forth" is insufficient and at the end of lists started with "such as, for example." Avoid in formal writing. + evident that + exactly equal equal + exception of + expect = anticipate + expect = anticipate + expected = anticipate + expected = anticipate + expecting = anticipate + experimentalize experiment + fabricate make + face up to face + facilitate help + facilitated = facilitate + facilitating = facilitate + facility Substitute if you can name the object. + fact Restrict use to matters that can be verified. + factor "component", "ingredient" or "element" outside mathematical contexts + fairly + farther "Farther" denotes distance, "further" denotes time or quantity. + fewer Use "fewer" for numbers and "less" for quantities. + finalise = finalize + finalised = finalized + finalising = finalizing + finalize end (or avoid) + finalized = ended (or avoid) + finalizing = ending (or avoid) + find it interesting to know Avoid + first of all first + firstly first + folks Avoid using "folks", when writing formally, to refer to your family or friends. + for the purpose of for + for the reason that since, because + for the reason, that since, because + for this reason since, because + for this reason so + for which ! + for your information + formalize Rewrite. + fortuitous A fortuitous event has the connotation of being an unexpected accident. + fortuitously = fortuitous + forward send (if used as verb) + from the point of view of for + from which + fuller A fuller is a hammer for spreading iron. You can't "fill your glass fuller." + funny Avoid "funny" when introducing something. Simply introduce it. + further = farther + give an indication of indicate + give encouragement to encourage + give rise to cause + got to + gotten The preferred form of this participle is "got," but it is unpleasant to the ear in either form. + gratuitous Synonym for "unearned" or "unwarranted", do not confuse with "free." + gratuitously = gratuitous + gratuitousness = gratuitous + grow Often misused as a transitive verb: You cannot `grow the economy'. In addition, you should not try `to grow the economy', even if you are President Clinton. Instead, you should endeavor to expand the economy, or stimulate economic growth. + hardy A "hardy" person can survive hardship. A "hearty" meal is a hourishing one. + has the capability of can + having regard to about + he is a man who he + hearty = hardy + help but + hollow tube tube + hopefully Restrict to "with hope", do not confuse with "I hope." Best avoid it. + however Means "in whatever way, to whatever extent" inside a sentence and "nevertheless" at the beginning of a sentence. + if and when (cliche, avoid) + if practical (weak definition) + impact Use something more precise, unless you are discussing a physical collision. + impacted = impact + impacting = impact + implied = imply + imply Something that is suggested is "implied", whereas something that is deduced is "inferred". + implying = imply + importantly (avoid) + importantly Rewrite. + in a hasty manner hastily + in a number of cases some + in a position to can, may + in a satisfactory manner satisfactorily + in a very real sense in a sense (or omit) + in accordance + in all probability probably + in an area where where + in an effort to to + in case if + in close proximity close, near + in close proximity to close to, near to + in color + in connection with about, concerning + in fact + in large measure largely + in length + in many cases often + in my opinion it is not an unjustifiable assumption that I think + in number + in order to to + in point of fact + in reference to (cliche, avoid) + in reference to concerning, about + in regard to = in regards to + in regards to as regards, in regard to, about or another simple preposition + in relation to toward, to + in respect to about + in short supply (cliche, avoid) + in size + in some cases sometimes + in spite of the fact that though, although + in such a manner + in terms of in, for, about (or avoid) + in the course of during + in the direction of toward + in the event + in the event that if + in the final analysis Avoid by rewriting the sentence. + in the foreseeable future (cliche, avoid) + in the form of as + in the last analysis + in the light of the fact that because + in the long run (cliche, avoid) + in the majority of cases usually, generally + in the majority of instances usually, generally + in the matter of (cliche, avoid) + in the nature of like + in the neighborhood of about,approximately,near + in the possession of has, have + in the vicinity of about,approximately,near + in view of the fact that since, as, because + in which ! + inasmuch as for, as + indicative of + infamous Synonym for "disreputable and widely known." + infamously = infamous + infer = imply + inferred = imply + inferring = imply + inflammable Only use as synonym for flammable or combustible. + infrequent rare + initiate begin, start + initiating beginning, starting + inside When inside is used as an adverb, add the word "of": I will be there inside of an hour. + inside of When inside is used as a preposition, the word "of" is not needed: I walked inside the building. + insightful Consider substituting "perceptive". + interesting Avoid using "interesting" when introducing something. Simply introduce it. + into which ! + involve the necessity of demand, require + irregardless regardless + is defined as is + is designed to be is + is equipped with has + is used to + is used to control controls + is when Only use to denote time; do not use in definitions. + is where Only use to denote place; do not use in definitions. + it can be seen that thus, so + it has long been known that I haven't bothered to look up the reference. + it is apparent that apparently + it is believed that I think + it is clear that clearly + it is considered desirable I or we want to + it is doubtful that possibly + it is evident that + it is of interest to note that + it is often the case that often + it is suggested that I think + it is worth pointing out in this context that note that + it may be that I think + it may, however, be noted that but + it should be noted that note that (or leave out) + it stands to reason + it stands to reason (cliche, avoid) + it was observed in the course of the experiments that we observed + it's = "it is" or "its"? + its = it's + join together join + kind of Do not use as substitute for "rather" or "something like." + lacked the ability to could not + large number of many + last but not least (avoid) + later on later + lay A transitive verb, not to be confused with the intransitive verb "lie". You "lie" down, and you "lay" an egg. However, note that the past tense of ``lie'' is ``lay'': Yesterday, I lay down and laid an egg. + lead The past tense of the verb "lead" is "led". + leave Do not use as substitute for "let:" Let go of my hand! Let it be! + led = lead + less Use "less" for quantities and "fewer" for numbers. + like Substitute by "as" before phrases or clauses: Our love was beautiful, as love was meant to be. + liken Avoid using the verb "liken," it is ugly. + likewise ! + literal = literally + literally Do not use to support exaggeration. + little data few data + little doubt that + loan Only use as a noun. "Lend" is a verb. + loath = loathe + loathe Only use as a verb, "loath" is an adjective. + loose As a verb, it means "to release", but it can also be used as adverb. It is not a tense of "lose." + loosed = loose + loosing = loose + lose out Means less than "lose" because of its commonness. + low quantity small quantity + majority of most + make a + make an + make an adjustment in adjust + manner + many and diverse (cliche, avoid) + may = Do not confuse with "can". + may be that + meaningful significant or rewrite, because it is an overused word + meaningfully = meaningful + memoranda "Memorandum" is singular, "memoranda" is plural. + memorandum = memoranda + might = can + might of might have + militate against prohibit + minor importance + mislead = lead + misled = lead + momento Use memento instead, even if Webster's claims momento is a word. + momentos = momento + most Do not use as substitute for "almost." + mostly (avoid) + much data many data + nature Omit if redundant. + nauseous Synonym for "sickening", do not confuse with the adjective "sick" or the verb "nauseate." + near by near, near at hand, close by, hard by + need for + needless to say (avoid and consider leaving out what follows) + neither Should be followed by "nor" instead of "or". + nice Use a more exact word. + nor Restrict to following "neither", but do not use instead of "or" in negative expressions. + normal (weak definition) + not under + not unique + not until + notorious = infamous + notorious = infamous + notoriously = infamous + notwithstanding + notwithstanding the fact that although + obselete Using obselete as a verb is ugly. + obseleted = obselete + obseleting = obselete + occurrence event + of great theoretical and practical importance useful + of interest + of the opinion that + of the same opinion + of which ! + oftentimes often + ofttimes often + on a daily basis daily + on account of because + on behalf of for + on the basis of by + on the grounds that since, because + on the occasion + on the order of magnitude of about + on the part of by, among, for + on the part on + on the right track (cliche, avoid) + on which ! + one When used as a pronoun, it must be used consistently: One must manage one's money carefully. + one of the most Do not use at the beginning of a paragraph, best avoid at all because it is an overused phrase. + ongoing (avoid) + only Put "only" right before the word it modifies. + oral = verbal + orientated oriented + otherwise ! + over which ! + owing to the fact that since, because + par for the course (cliche, avoid) + perform do + payed "Payed" is only used to refer to extending a rope. The past tense of "pay" is "paid." + people Do not use with numbers or as substitute for "public". + performed done + personal opinion opinion + personalize (avoid) + personalized = personalize + personalizing = personalize + personally (avoid) + pertaining to about, on + phase Do not use as substitute for "aspect, topic". + plum Do not confuse the fruit "plum" with "plumbing" a depth. + plumb = plum + plumed = plum + pluming = plum + plums = plum + please feel free to (cliche, avoid) + pooled together pooled + possess Do not use as substitute for "have" or "own." + possessed = possess + possessing = possess + powerful Overused, especially in computer industry press releases. + precede Synonym for "to come before," do not confuse with "proceed." + previous to, prior to before + prior to before + pursuant to your request (cliche, avoid) + presently (do not use as substitute for "now", restrict to synonym for "soon") + prestigious (an overused word) + preventative preventive + principal (a "principle" is a rule, while a "principal" is a person, when used as a noun, or means "chief", when used as an adjective, and the adverb for both words is spelt "principally") + principally = principal + principals = principal + principle = principal + principles = principal + principlly = principal + proceed to + provide for (weak definition) + put to use in building build + put to use in measuring measure + quite + rather + rather than + reason is because reason is that, because + reason to believe + reason why reason + refer = allude + reference to this + referred = allude + referring = allude + referred to as called + regarding the matter of (cliche, avoid) + relative to about + register up (means less than "register" because of its commonness) + regress back = revert back + regressed back = revert back + regressing back = revert back + regretful (do not use as substitute for "regrettable") + regretfully = regretful + reinitiate start again + reinitiated restarted + reinitiating restarting + relate (do not use as an intransitive verb: "I get along well with my advisor" instead of "I relate well to my advisor") + related = relate + relating = relate + repeat the same repeat the + representative of represents + requisite required + respective + respectively + revert back ("revert" means "to go back", so this expression is redundant) + reverted back = revert back + reverting back = revert back + rise to + secondly second + shall (shall is sometimes used with first person pronouns and the future tense. It expresses something you believe will happen, not something that you are determined to do. A drowning man shouts: "I shall drown, no one will save me!") + should of should have + sight = site + sign up (means less than "sign" because of its commonness) + site (a "site" is a place, a "sight" is related to "seeing") + situation (rewrite) + so (do not use as intensifier) + so as to to + so on ! + so that ! + sophisticated + sort of (do not use as substitute for "rather" or "something like") + slowly but surely (cliche, avoid) + small concentration low concentration + sufficient enough + state (if used as a verb, restrict to the meaning of "express fully or clearly") + stated = state + stating = state + still continue continue + still continues continues + strata = stratum + stratum ("stratum" is singular, "strata" is plural) + student body students + subsequent to after + subsequently to = subsequent to + succeed in + suggested that + suggestive of + system Frequently used without need. + take appropriate + take into consideration consider + terminate end + terminated ended, stopped + terminating ending, stopping + termination end + than (examine sentences containing "than" to insure that they are not missing words: I love my father more than my mother. I love my father more than my mother loves my father. I love my father more than I love my mother) + thank you in advance = thanking you in advance + thanking you in advance (write "thanking you" or "your attention to this matter would be appreciated" and acknowledge granted favors) + the author I + the authors we + the case that + the fact + the fact is (avoid) + the fact that + the fact was (avoid) + the foreseeable future soon, the future + the fullest possible extent most, completely or fully (or omit) + the great majority of most + the opinion is advanced that I think + the nature + the necessity of + the order of + the point that + the reason is because because + there is reason to believe I think + the question as to whether whether, the question whether + the truth is (a bad way to start a sentence) + the truth was = the truth is + there are (a dead phrase; rewrite the sentence and it will probably improve) + there are not many few + there is = there are + there is no doubt that no doubt, doubtless + there was = there are + they (do not use as substitute for "each, each one, everybody, every one, anybody, any one, somebody, some one") + thirdly third + this is a subject which this subject + this will acknowledge (cliche, avoid) + through the use of by, with + through which ! + thrust (use sparingly, unless you are writing a romance novel) + timely (weak definition) + to which ! + tortuous ("tortourous" involves torture, while "tortuous" merely involves twist) + torturous = tortuous + transition (only use as a noun) + transitioned = transition + transitioning = transition + transpire (restrict to "become known", do not confuse with "happen" or "occur") + transpired = transpire + transpiring = transpire + try and ("try" should be followed by an infinitive, not the word "and") + try out (means less than "try" because of its commonness) + type (do not use as synonym for "kind of") + under which ! + ultimate last + unique ("unique" or "uncommon"?) + uniquely = unique + uniqueness = unique + upon which ! + upshot + use to ("use to" or "used to"?) + used for (used for [...] purposes: used for [...]) + utilize use + utilize use + utilized used + utilizing using + varying (use "various" if a finite number of constant instances is meant) + was of the opinion that believed + we are pleased to advice (cliche, avoid) + we have insufficient knowledge we don't know + we wish to state (cliche, avoid) + we wish to thank we thank + varying amounts of varying + verbal ("verbal" can be either spoken or written down, "oral" refers to the mouth) + very (use sparingly; try to use words that are strong in themselves for emphasis) + viewpoint point of view (do not use as substitute for "view, opinion") + vital important + whether (avoid using "or not" after "whether," unless you mean "regardless of whether") + whether or not (restrict to synonym for "regardless of whether" else simply use "whether") + which (use "that" if clause is restrictive) + which was (often superfluous) + while (if used as substitute for "and, but" then replace by semicolon, do not use as substitute for "although" as it leads to ambiguity or absurdity, best use it only in the sense of "during the time that") + who is (often superfluous) + whom (often incorrectly used for "who") + will = shall + win out (means less than "win" because of its commonness) + wish to thank thank + with regard to concerning, about (or leave out) + with respect to about + with a view to to + with reference to concerning, about + with the exception of except + with which ! + with the aid of with + with the possible exception of except + with the result that so, therefore + without which ! + worth pointing out + worth while (restrict to actions, do not use for approval and consider using a stronger word) + worthwhile (only apply to actions and consider using a stronger word instead) + would (use "should" if used as conditional statement in the first person or for "shall" in indirect quotation after a verb in past tense. Consider omitting it for repeated actions) + would of would have + would seem to indicate indicates + you are hereby adviced (cliche, avoid) +inflammable (better use the preferred synonym "flammable", do not confuse with "combustible") +ing behavior (avoid the term [...]ing behaviour) +unwise (avoid words that end in -unwise) +wise (avoid words that end in -wise) diff --git a/thesis/checkbiw/contrib/diction/getopt.c b/thesis/checkbiw/contrib/diction/getopt.c new file mode 100644 index 0000000..4d40c10 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/getopt.c @@ -0,0 +1,1051 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to bug-glibc@gnu.org + before changing it! + + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98 + Free Software Foundation, Inc. + +NOTE: The canonical source of this file is maintained with the GNU C Library. +Bugs can be reported to bug-glibc@gnu.org. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +#define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#if !defined (__STDC__) || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +#include +#include +#endif /* GNU C library. */ + +#ifdef VMS +#include +#if HAVE_STRING_H - 0 +#include +#endif +#endif + +#if defined (WINDOWS32) && !defined (__CYGWIN32__) +/* It's not Unix, really. See? Capital letters. */ +#include +#define getpid() GetCurrentProcessId() +#endif + +/* This is for other GNU distributions with internationalized messages. + When compiling libc, the _ macro is predefined. */ +#ifdef USE_NLS +# include +# define _(msgid) gettext (msgid) +#else +# define _(msgid) (msgid) +#endif + +/* This version of `getopt' appears to the caller like standard Unix `getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "getopt.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum +{ + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +#include +#define my_index strchr +#else + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +char *getenv (); + +static char * +my_index (str, chr) + const char *str; + int chr; +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +#if !defined (__STDC__) || !__STDC__ +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen (const char *); +#endif /* not __STDC__ */ +#endif /* __GNUC__ */ + +#endif /* not __GNU_LIBRARY__ */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; + +static int original_argc; +static char *const *original_argv; + +extern pid_t __libc_pid; + +/* Make sure the environment variable bash 2.0 puts in the environment + is valid for the getopt call we must make sure that the ARGV passed + to getopt is that one passed to the process. */ +static void +__attribute__ ((unused)) +store_args_and_env (int argc, char *const *argv) +{ + /* XXX This is no good solution. We should rather copy the args so + that we can compare them later. But we must not use malloc(3). */ + original_argc = argc; + original_argv = argv; +} +text_set_element (__libc_subinit, store_args_and_env); + +# define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +#else /* !_LIBC */ +# define SWAP_FLAGS(ch1, ch2) +#endif /* _LIBC */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +#if defined (__STDC__) && __STDC__ +static void exchange (char **); +#endif + +static void +exchange (argv) + char **argv; +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ + +#ifdef _LIBC + /* First make sure the handling of the `__getopt_nonoption_flags' + string can work normally. Our top argument must be in the range + of the string. */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* We must extend the array. The user plays games with us and + presents new arguments. */ + char *new_str = malloc (top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len); + memset (&new_str[nonoption_flags_max_len], '\0', + top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS (bottom + i, middle + i); + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } + } + + /* Update records for the slots the non-options now occupy. */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +#if defined (__STDC__) && __STDC__ +static const char *_getopt_initialize (int, char *const *, const char *); +#endif +static const char * +_getopt_initialize (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#ifdef _LIBC + if (posixly_correct == NULL + && argc == original_argc && argv == original_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen (orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc (nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + { + memcpy (__getopt_nonoption_flags, orig_str, len); + memset (&__getopt_nonoption_flags[len], '\0', + nonoption_flags_max_len - len); + } + } + } + nonoption_flags_len = nonoption_flags_max_len; + } + else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int +_getopt_internal (argc, argv, optstring, longopts, longind, long_only) + int argc; + char *const *argv; + const char *optstring; + const struct option *longopts; + int *longind; + int long_only; +{ + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* Don't scan ARGV[0], the program name. */ + optstring = _getopt_initialize (argc, argv, optstring); + __getopt_initialized = 1; + } + + /* Test whether ARGV[optind] points to a non-option argument. + Either it does not have option syntax, or there is an environment flag + from the shell indicating it is not an option. The later information + is only used when the used in the GNU libc. */ +#ifdef _LIBC +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* Advance to the next ARGV-element. */ + + /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + moved back by the user (who may also have changed the arguments). */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ + + if (optind != argc && !strcmp (argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ + + if (optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* Decode the current option-ARGV-element. */ + + /* Check whether the ARGV-element is a long option. + + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. + + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". + + This distinction seems to be the most useful approach. */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + + nextchar += strlen (nextchar); + + optopt = pfound->val; + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[optind][1] == '-' + || my_index (optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* --option */ + fprintf (stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *nextchar++; + char *temp = my_index (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: illegal option -- %c\n"), + argv[0], c); + else + fprintf (stderr, _("%s: invalid option -- %c\n"), + argv[0], c); + } + optopt = c; + return '?'; + } + /* Convenience. Treat POSIX -W foo same as long option --foo */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + + /* optarg is now the argument, see if it's in the + table of longopts. */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + fprintf (stderr, _("\ +%s: option `-W %s' doesn't allow an argument\n"), + argv[0], pfound->name); + + nextchar += strlen (nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* Let the application handle it. */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } + else + optarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int +getopt (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + return _getopt_internal (argc, argv, optstring, + (const struct option *) 0, + (int *) 0, + 0); +} + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt (argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/thesis/checkbiw/contrib/diction/getopt.h b/thesis/checkbiw/contrib/diction/getopt.h new file mode 100644 index 0000000..f994e58 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/getopt.h @@ -0,0 +1,133 @@ +/* Declarations for getopt. + Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. + +NOTE: The canonical source of this file is maintained with the GNU C Library. +Bugs can be reported to bug-glibc@gnu.org. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. */ + +#ifndef _GETOPT_H +#define _GETOPT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int opterr; + +/* Set to an option character which was unrecognized. */ + +extern int optopt; + +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + +struct option +{ +#if defined (__STDC__) && __STDC__ + const char *name; +#else + char *name; +#endif + /* has_arg can't be an enum because some compilers complain about + type mismatches in all the code that assumes it is an int. */ + int has_arg; + int *flag; + int val; +}; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#if defined (__STDC__) && __STDC__ +#ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt (int argc, char *const *argv, const char *shortopts); +#else /* not __GNU_LIBRARY__ */ +/* extern int getopt (); */ +#endif /* __GNU_LIBRARY__ */ +extern int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); +extern int getopt_long_only (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind, + int long_only); +#else /* not __STDC__ */ +extern int getopt (); +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +#endif /* __STDC__ */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GETOPT_H */ diff --git a/thesis/checkbiw/contrib/diction/getopt1.c b/thesis/checkbiw/contrib/diction/getopt1.c new file mode 100644 index 0000000..a91c423 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/getopt1.c @@ -0,0 +1,189 @@ +/* getopt_long and getopt_long_only entry points for GNU getopt. + Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. + +NOTE: The canonical source of this file is maintained with the GNU C Library. +Bugs can be reported to bug-glibc@gnu.org. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "getopt.h" + +#if !defined (__STDC__) || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +#include +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 0); +} + +/* Like getopt_long, but '-' as well as '--' can indicate a long option. + If an option that starts with '-' (not '--') doesn't match a long option, + but does match a short option, it is parsed as a short option + instead. */ + +int +getopt_long_only (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 1); +} + + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +#include + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = + { + {"add", 1, 0, 0}, + {"append", 0, 0, 0}, + {"delete", 1, 0, 0}, + {"verbose", 0, 0, 0}, + {"create", 0, 0, 0}, + {"file", 1, 0, 0}, + {0, 0, 0, 0} + }; + + c = getopt_long (argc, argv, "abc:d:0123456789", + long_options, &option_index); + if (c == -1) + break; + + switch (c) + { + case 0: + printf ("option %s", long_options[option_index].name); + if (optarg) + printf (" with arg %s", optarg); + printf ("\n"); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case 'd': + printf ("option d with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/thesis/checkbiw/contrib/diction/install-sh b/thesis/checkbiw/contrib/diction/install-sh new file mode 100755 index 0000000..36f96f3 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/install-sh @@ -0,0 +1,276 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/#inst.$$# + rmtmp=$dstdir/#rm.$$# + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$src" "$dsttmp" && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# Now remove or move aside any old file at destination location. We try this +# two ways since rm can't unlink itself on some systems and the destination +# file might be busy for other reasons. In this case, the final cleanup +# might fail but the new file should still install successfully. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} diff --git a/thesis/checkbiw/contrib/diction/misc.c b/thesis/checkbiw/contrib/diction/misc.c new file mode 100644 index 0000000..a2c0099 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/misc.c @@ -0,0 +1,61 @@ +/* Notes */ /*{{{C}}}*//*{{{*/ +/* + +This file is free software; as a special exception the author gives +unlimited permission to copy and/or distribute it, with or without +modifications, as long as this notice is preserved. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +*/ +/*}}}*/ +/* #includes *//*{{{*/ +#ifndef NO_POSIX_SOURCE +#undef _POSIX_SOURCE +#define _POSIX_SOURCE 1 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 2 +#endif + +#ifdef DMALLOC +#include "dmalloc.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" + +#include "misc.h" +/*}}}*/ + +#ifdef BROKEN_REALLOC +/* myrealloc -- ANSI conforming realloc() */ /*{{{*/ +#undef realloc +void *myrealloc(void *p, size_t n) +{ + return (p==(void*)0 ? malloc(n) : realloc(p,n)); +} +/*}}}*/ +#endif +#ifndef HAVE_STRERROR +/* strerror -- ANSI strerror */ /*{{{*/ +extern int sys_nerr; +extern char *sys_errlist[]; + +char *strerror(int errno) +{ + assert(errno>=0); + assert(errno. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +/*}}}*/ +/* #includes */ /*{{{*/ +#undef _POSIX_SOURCE +#define _POSIX_SOURCE 1 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 2 + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_GETTEXT +#include +#define _(String) gettext(String) +#else +#define _(String) String +#endif +#include +#include +#include +#include + +#include "misc.h" +#include "sentence.h" +/*}}}*/ + +static const char *abbreviations_de[]= /*{{{*/ +{ + "Dr", + "bzw", + "etc", + "sog", + "usw", + (const char*)0 +}; +/*}}}*/ +static const char *abbreviations_en[]= /*{{{*/ +{ + "ch", + "Ch", + "ckts", + "dB", + "Dept", + "dept", + "Depts", + "depts", + "Dr", + "Drs", + "Eq", + "eq", + "etc", + "et al", + "Fig", + "fig", + "Figs", + "figs", + "ft", + "0 in", + "1 in", + "2 in", + "3 in", + "4 in", + "5 in", + "6 in", + "7 in", + "8 in", + "9 in", + "Inc", + "Jr", + "jr", + "mi", + "Mr", + "Mrs", + "Ms", + "No", + "no", + "Nos", + "nos", + "Ph", + "Ref", + "ref", + "Refs", + "refs", + "St", + "vs", + "yr", + (const char*)0 +}; +/*}}}*/ +static const char *abbreviations_none[]= /*{{{*/ +{ + (const char*)0 +}; +/*}}}*/ +static const char **abbreviations; + +static int endingInAbbrev(const char *s, size_t length, const char *lang) /*{{{*/ +{ + const char **abbrev=abbreviations; + size_t aLength; + + if (!isalpha(s[length-1])) return 0; + if (endingInPossesiveS(s,length)) return 0; + while (*abbrev!=(const char*)0) + { + if ((aLength=strlen(*abbrev))=3 && strncmp(s+length-2,"\'s",2)==0); +} +/*}}}*/ +void sentence(const char *cmd, FILE *in, const char *file, void (*process)(const char *, size_t, const char *, int), const char *lang) /*{{{*/ +{ + /* variables */ /*{{{*/ + int voc,oc,c; + char *sent=malloc(128); + size_t length=0,capacity=128; + int inWhiteSpace=0; + int inParagraph=0; + int ellipsis=0; + int line=1,beginLine=1; + int err; + regex_t hashLine; + char filebuf[_POSIX_PATH_MAX+1]; + /*}}}*/ + + if (strncmp(lang,"en",2)==0) abbreviations=abbreviations_en; + else if (strncmp(lang,"C",1)==0) abbreviations=abbreviations_en; + else if (strncmp(lang,"de",2)==0) abbreviations=abbreviations_de; + else abbreviations=abbreviations_none; + /* compile #line number "file" regular expression */ /*{{{*/ + if ((err=regcomp(&hashLine,"^[ \t]*line[ \t]*\\([0-9][0-9]*\\)[ \t]*\"\\([^\"]*\\)\"",0))) + { + char buf[256]; + size_t len=regerror(err,&hashLine,buf,sizeof(buf)-1); + buf[len]='\0'; + fprintf(stderr,_("%s: internal error, compiling a regular expression failed (%s).\n"),cmd,buf); + exit(2); + } + /*}}}*/ + voc='\n'; + c=getc(in); + while ((oc=c)!=EOF) + { + c=getc(in); + if (oc=='\n') ++line; + if (voc=='\n' && oc=='#') /* process cpp style #line, continue */ /*{{{*/ + { + char buf[_POSIX_PATH_MAX+20]; + regmatch_t found[3]; + + buf[0]=c; buf[1]='\0'; + (void)fgets(buf+1,sizeof(buf)-1,in); + if (regexec(&hashLine,buf,3,found,0)==0) /* #line */ /*{{{*/ + { + size_t len; + + line=strtol(buf+found[1].rm_so,(char**)0,10)-1; + len=found[2].rm_eo-found[2].rm_so; + if (len>_POSIX_PATH_MAX) len=_POSIX_PATH_MAX; + strncpy(filebuf,buf+found[2].rm_so,len); + filebuf[len]='\0'; + file=filebuf; + } + /*}}}*/ + c='\n'; + continue; + } + /*}}}*/ + if (length) + { + if (length>=(capacity-1) && (sent=realloc(sent,capacity*=2))==(char*)0) + { + fprintf(stderr,_("%s: increasing sentence buffer failed: %s\n"),cmd,strerror(errno)); + exit(2); + } + if (isspace(oc)) + { + if (!inWhiteSpace) + { + sent[length++]=' '; + inWhiteSpace=1; + } + } + else + { + sent[length++]=oc; + if + ( + (length==3 && strncmp(sent+length-3,"...",3)==0 && (c==EOF || isspace(c))) + || (length>=4 && strncmp(sent+length-4," ...",4)==0 && (c==EOF || isspace(c))) + ) + { + /* omission ellipsis */ + inWhiteSpace=0; + } + else if (length>=4 && !isspace(sent[length-4]) && strncmp(sent+length-3,"...",3)==0 && (c==EOF || isspace(c))) + { + /* beginning ellipsis */ + char foo; + + foo=sent[length-4]; + sent[length-4]='\0'; + process(sent,length-4,file,beginLine); + sent[length-4]=foo; + memmove(sent,sent-4,4); + length=4; + inParagraph=0; + inWhiteSpace=0; + beginLine=line; + } + else if (length>=4 && strncmp(sent+length-4,"...",3)==0 && (c==EOF || isspace(c))) + { + /* ending ellipsis */ + if (inWhiteSpace) --length; + sent[length]='\0'; + process(sent,length,file,beginLine); + length=0; + } + else if ((oc=='.' || oc==':' || oc=='!' || oc=='?') && (c==EOF || isspace(c)) && (oc!='.' || !endingInAbbrev(sent,length,lang))) + { + /* end of sentence */ + if (inWhiteSpace) --length; + sent[length]='\0'; + process(sent,length,file,beginLine); + length=0; + } + else + { + /* just a regular character */ + inWhiteSpace=0; + } + } + } + else if (isupper(oc)) + { + inParagraph=0; + sent[length++]=oc; + inWhiteSpace=0; + beginLine=line; + } + else if (!inParagraph && oc=='\n' && c==oc) + { + process("",0,file,line); + inParagraph=1; + } + voc=oc; + } + if (!inParagraph) process("",0,file,line); + regfree(&hashLine); +} +/*}}}*/ diff --git a/thesis/checkbiw/contrib/diction/sentence.h b/thesis/checkbiw/contrib/diction/sentence.h new file mode 100644 index 0000000..03ca659 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/sentence.h @@ -0,0 +1,32 @@ +/* Notes */ /*{{{C}}}*//*{{{*/ +/* + +This program is GNU software, copyright 1997, 1998, 1999, 2000, 2001 +Michael Haardt . + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +/*}}}*/ + +#ifndef SENTENCE_H +#define SENTENCE_H + +#include +#include + +void sentence(const char *cmd, FILE *in, const char *file, void (*process)(const char *, size_t, const char *, int), const char *lang); + +#endif diff --git a/thesis/checkbiw/contrib/diction/style.1.in b/thesis/checkbiw/contrib/diction/style.1.in new file mode 100644 index 0000000..4f3d887 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/style.1.in @@ -0,0 +1,390 @@ +' et +.TH STYLE 1 "@UPDATED@" "GNU" "User commands" +.SH NAME \"{{{roff}}}\"{{{ +style \- analyse surface characteristics of a document +.\"}}} +.SH SYNOPSIS \"{{{ +.\" Missing options: +.\" -a displays all sentences with their length and readability index. +.\" -e displays all sentences that begin with an expletive. +.\" -P displays parts of speech of the words in the document. +.\" -p displays all sentences that contain a passive verb. +.ad l +.B style +.RB [ \-L +.IR language ] +.RB [ \-l +.IR length ] +.RB [ \-r +.IR ari ] +.RI [ file ...] +.ad b +.br +.ad l +.B style +.RB [ \-\-language +.IR language ] +.RB [ \-\-print-long +.IR length ] +.RB [ \-\-print-ari +.IR ari ] +.RI [ file ...] +.ad b +.br +.ad l +.B style +.BR \-h | \-\-help +.ad b +.br +.ad l +.B style \-\-version +.ad b +.\"}}} +.SH DESCRIPTION \"{{{ +\fBStyle\fP analyses the surface characteristics of the writing style +of a document. It prints various readability grades, length of words, +sentences and paragraphs. +.\" sentence structure, word usage, verb type, sentence openers +It can further locate sentences with certain characteristics. +If no files are given, the document is read from standard input. +.PP +Numbers are counted as words with one syllable. +A sentence is a sequence of words, that starts with a capitalised word and +ends with a full stop, double colon, question mark or exclamation mark. +A single letter followed by a dot is considered an abbreviation, so it +does not end a sentence. Various multi-letter abbreviations are +recognized, they do not end a sentence as well. +A paragraph +consists of two or more new line characters. +.SS "Readability grades" +\fBStyle\fP understands \fIcpp\fP(1) \fB#line\fP lines for being able to +give precise locations when printing sentences. +.IP "Kincaid formula" \"{{{ +The Kincaid Formula has been developed for Navy training manuals, that +ranged in difficulty from 5.5 to 16.3. It is probably best applied +to technical documents, because it is based on adult training manuals +rather than school book text. Dialogs (often found in fictional texts) +are usually a series of short sentences, which lowers the score. On the +other hand, scientific texts with many long scientific terms are rated +higher, although they are not necessarily harder to read for people +who are familiar with those terms. +.sp +.\"{{{ Kincaid Index +.if t \{\ +.RS +.EQ +italic "Kincaid" = 11.8 * syllables over words + 0.39 * words over sentences - 15.59 +.EN +.RE +.\} +.if n \{\ +.ad l +Kincaid = 11.8*syllables/wds+0.39*wds/sentences-15.59 +.ad b +.\} +.\"}}} +.\"}}} +.IP "Automated Readability Index" \"{{{ +The Automated Readability Index is typically higher than Kincaid and +Coleman-Liau, but lower than Flesch. +.sp +.\"{{{ Automated Readability Index +.if t \{\ +.RS +.EQ +italic "ARI" = 4.71 * letters over words + 0.5 * words over sentences - 21.43 +.EN +.RE +.\} +.if n \{\ +.ad l +ARI = 4.71*chars/wds+0.5*wds/sentences-21.43 +.ad b +.\} +.\"}}} +.\"}}} +.IP "Coleman-Liau Formula" \"{{{ +The Coleman-Liau Formula usually gives a lower grade than Kincaid, +ARI and Flesch when applied to technical documents. +.sp +.\"{{{ Coleman-Liau Formula +.if t \{\ +.RS +.EQ +italic "Coleman-Liau" = 5.89 * letters over words - 0.3 * sentences over { 100 * words } - 15.8 +.EN +.RE +.\} +.if n \{\ +.ad l +Coleman-Liau = 5.89*chars/wds-0.3*sentences/(100*wds)-15.8 +.ad b +.\} +.\"}}} +.\"}}} +.IP "Flesh reading easy formula" \"{{{ +The Flesh reading easy formula has been developed by Flesh in 1948 and +it is based on school text covering grade 3 to 12. It is wide spread, +especially in the USA, because of good results and simple computation. +The index is usually between 0 (hard) and 100 (easy), standard English +documents averages approximately 60 to 70. Applying it to German +documents does not deliver good results because of the different language +structure. +.sp +.\"{{{ Flesh reading easy formula +.if t \{\ +.RS +.EQ +Flesch ~ Index = 206.835 - 84.6 * syllables over words - 1.015 * words over sentences +.EN +.RE +.\} +.if n \{\ +.ad l +Flesch Index = 206.835-84.6*syll/wds-1.015*wds/sent +.ad b +.\} +.\"}}} +.\"}}} +.IP "Fog Index" \"{{{ +The Fog index has been developed by Robert Gunning. Its value is a +school grade. The ``ideal'' Fog Index level is 7 or 8. A level above +12 indicates the writing sample is too hard for most people to read. +Only use it on texts of at least hundred words to get meaningful results. +Note that a correct implementation would not count words of three or +more syllables that are proper names, combinations of easy words, or +made three syllables by suffixes such as \(ened, \(enes, or \(ening. +.sp +.\"{{{ Fog Index formula +.if t \{\ +.RS +.EQ +Fog ~ Index = 0.4 * left ( words over sentences + 100 * { { words >= 3 ~ syllables } over words } right ) +.EN +.RE +.\} +.if n \{\ +.ad l +Fog Index = 0.4*(wds/sent+100*((wds >= 3 syll)/wds)) +.ad b +.\} +.\"}}} +.\"}}} +.\" might be wrong +.\".IP "WSFT Index" \"{{{ +.\"The first new Vienna text formula (1. neue Wiener Sachtextformel, WSTF) +.\"has been developed for German documents and its result is a school grade +.\"that could read the text. +.\".sp +.\"{{{ WSTF +.\".if t \{\ +.\".RS +.\".EQ +.\"matrix { +.\"col { WSTF ~ Index = above ~ } +.\"lcol { +.\"0.1935 * { words >= 3 ~ syllables } over words + 0.1672 * words over sentences - +.\"above +.\"down 70 { 0.1297 * { words > 6 ~ characters } over words - 0.0327 * { words = 1 ~ syllable } over words - 0.875 } +.\"} +.\"} +.\".EN +.\".RE +.\".\} +.\".if n \{\ +.\".ad l +.\"WSTF Index = 0.1935*(wds >= 3 syllables)/wds +.\" +0.1672*wds/sent +.\" -0.1297*(wds > 6 characters)/wds +.\" -0.0327*(wds = 1 syllable)/wds +.\" -0.875 +.\".ad b +.\".\} +.\"}}} +.\"}}} +.\" might be wrong +.\".IP "Wheeler-Smith Index" \"{{{ +.\"The Wheeler-Smith Index is mapped to school grades using a table: +.\".sp +.\"{{{ Wheeler-Smith Index +.\".if t \{\ +.\".RS +.\".EQ +.\"italic "Wheeler-Smith" ~ Index = +.\"words over sentences * 100 * { words >= 3 ~ syllables } over words +.\".EN +.\".RE +.\".\} +.\".if n \{\ +.\".ad l +.\"Wheeler-Smith Index = wds/sent*100*((wds >= 3 syll)/wds) +.\".ad b +.\".\} +.\"}}} +.\".sp +.\".RS +.\".TS +.\"tab(#); +.\"l c c c c c c c c c c c c c. +.\"Index#16##20##24##29##34##38##42 +.\"School year##5##6##7##8##9##10 +.\".TE +.\".RE +.\"}}} +.IP "Lix formula" \"{{{ +The Lix formula developed by Björnsson from Sweden is very simple and +employs a mapping table as well: +.sp +.\"{{{ Lix +.if t \{\ +.RS +.EQ +Lix = +words over sentences + 100 * { words > 6 ~ characters } over words +.EN +.RE +.\} +.if n \{\ +.ad l +Lix = wds/sent+100*(wds >= 6 char)/wds +.ad b +.\} +.\"}}} +.sp +.RS +.ne 2 +.TS +tab(#); +l c c c c c c c c c c c c c c c. +Index#34##38##41##44##48##51##54##57 +School year##5##6##7##8##9##10##11 +.TE +.RE +.\"}}} +.IP "SMOG-Grading" \"{{{ +The SMOG-Grading for English texts has been developed by McLaughlin +in 1969. Its result is a school grade. +.sp +.\"{{{ SMOG +.if t \{\ +.RS +.EQ +italic "SMOG-Grading" = sqrt { { (words >= 3 ~ syllables) } over sentences * 30 } + 3 +.EN +.RE +.\} +.if n \{\ +.ad l +SMOG-Grading = square root of (((wds >= 3 syll)/sent)*30) + 3 +.ad b +.\} +.\"}}} +.sp +It has been adapted to German by Bamberger & Vanecek in 1984, who changed +the constant +3 to \-2. +.\"}}} +.SS "Word usage" +The word usage counts are intended to help identify excessive use of particular +parts of speech. +.IP "Verb Phrases" \"{{{ +The category of verbs labeled "to be" identifies phrases using the passive +voice. Use the passive voice sparingly, in favor of more direct verb forms. +The flag \fB-p\fP causes \fBstyle\fP to list all occurrences of the passive +voice. +.PP +The verb category "aux" measures the use of modal auxiliary verbs, such as +"can", "could", and "should". Modal auxiliary verbs modify the mood of a verb. +.\"}}} +.IP "Conjunctions" \"{{{ +The conjunctions counted by style are coordinating and subordinating. +Coordinating conjunctions join grammatically equal sentence fragments, such as +a noun with a noun, a phrase with a phrase, or a clause to a clause. +Coordinating conjunctions are "and," "but," "or," "yet," and "nor." +.PP +Subordinating conjunctions connect clauses of unequal status. A subordinating +conjunction links a subordinate clause, which is unable to stand alone, to an +independent clause. Examples of subordinating conjunctions are "because," +"although," and "even if." +.\"}}} +.IP "Pronouns" \"{{{ +Pronouns are contextual references to nouns and noun phrases. Documents with +few pronouns generally lack cohesiveness and fluidity. Too many pronouns may +indicate ambiguity. +.\"}}} +.IP "Nominalizations" \"{{{ +Nominalizations are verbs that are changed to nouns. Style recognizes words +that end in "ment," "ance," "ence," or "ion" as nominalizations. +Examples are "endowment," "admittance," and "nominalization." Too much +nominalization in a document can sound abstract and be difficult to understand. +The flag \fB-N\fP causes \fBstyle\fP to list all nominalizations. The +flag \fB-n\fP prints all sentences with either the passive voice or a +nominalization. +.\"}}} +.\"}}} +.SH OPTIONS \"{{{ +.IP "\fB\-L\fP \fIlanguage\fP, \fB\-\-language\fP \fIlanguage\fP" +set the document language. +.IP "\fB\-l\fP \fIlength\fP, \fB\-\-print-long\fP \fIlength\fP" +print all sentences longer than \fIlength\fP words. +.IP "\fB\-r\fP \fIari\fP, \fB\-\-print-ari\fP \fIari\fP" +print all sentences whose readability index (ARI) is greater than \fIari\fP. +.IP "\fB\-p\fP \fIpassive\fP, \fB\-\-print-passive\fP" +print all sentences phrased in the passive voice. +.IP "\fB\-N\fP \fInominalizations\fP, \fB\-\-print-nom\fP" +print all sentences containing nominalizations. +.IP "\fB\-n\fP \fInominalizations-passive\fP, \fB\-\-print-nom-passive\fP" +print all sentences phrased in the passive voice or containing nominalizations. +.IP "\fB\-h\fP, \fB\-\-help\fP" +Print a short usage message. +.IP \fB\-\-version\fP +Print the version. +.\"}}} +.SH ERRORS \"{{{ +On usage errors, 1 is returned. Termination caused by lack of memory is +signalled by exit code 2. +.\"}}} +.SH ENVIRONMENT \"{{{ +.IP "\fBLC_MESSAGES\fP=\fBde\fP\^|\^\fBen\fP" +specifies the default document language. The default language is \fBen\fP. +.IP "\fBLC_CTYPE\fP=\fBiso-8859-1\fP" +specifies the document character set. The default character set is ASCII. +.\"}}} +.SH AUTHOR \"{{{ +This program is GNU software, copyright 1997, 1998, 2000, 2001, +2002 Michael Haardt . +.PP +It contains contributions by Jason Petrone and +Uschi Stegemeier . +.PP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.PP +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +.\"}}} +.SH HISTORY \"{{{ +There has been a style command on old UNIX systems, which is now part +of the AT&T DWB package. The original version was bound to roff by +enforcing a call to deroff. +.\"}}} +.SH "SEE ALSO" \"{{{ +deroff(1), diction(1) +.P +Cherry, L.L.; Vesterman, W.: \fIWriting Tools\(emThe STYLE and DICTION +programs\fP, Computer Science Technical Report 91, Bell Laboratories, +Murray Hill, N.J. (1981), republished as part of the 4.4BSD User's +Supplementary Documents by O'Reilly. +.\" +.\" De Vries, Hugo: \fIReading Ease@WWW\fP, http://www.shlrc.mq.edu.au/~hdevries/RE.html +.\" +.\" Norbert Groeben: Leserpsychologie: Textverständnis - Textverständlichkeit +.\" Münster, 1982. +.\"}}} diff --git a/thesis/checkbiw/contrib/diction/style.c b/thesis/checkbiw/contrib/diction/style.c new file mode 100644 index 0000000..bc1afbd --- /dev/null +++ b/thesis/checkbiw/contrib/diction/style.c @@ -0,0 +1,1001 @@ +/* Notes */ /*{{{C}}}*//*{{{*/ +/* + +This program is GNU software, copyright 1997-2003 +Michael Haardt . + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +/*}}}*/ +/* #includes */ /*{{{*/ +#undef _POSIX_SOURCE +#define _POSIX_SOURCE 1 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 2 + +#include "config.h" + +#include +#include +#include +#include +#ifdef HAVE_GETTEXT +#include +#define _(String) gettext(String) +#else +#define _(String) String +#endif +#include +#include +#include +#include + +#include "getopt.h" +#include "misc.h" +#include "sentence.h" +/*}}}*/ + +/* variables */ /*{{{*/ +static const char *lc_ctype; +enum lc_ctype_int { ASCII, ISO_8859_1 }; +static enum lc_ctype_int lc_ctype_int; +static const char *docLanguage; +static const char *phraseEnd = (const char*)0; +/*}}}*/ + +/* hit counting functions */ /*{{{*/ +struct Hit /*{{{*/ +{ + int *data; + int capacity; + int size; +}; +/*}}}*/ +static void newHit(struct Hit *hit) /*{{{*/ +{ + if ((hit->data=malloc((hit->capacity=3)*sizeof(int)))==(int*)0) + { + fprintf(stderr,_("style: out of memory\n")); + exit(1); + } + memset(hit->data,0,hit->capacity*sizeof(int)); + hit->size=0; +} +/*}}}*/ +static void noteHit(struct Hit *hit, int n) /*{{{*/ +{ + assert(n>0); + if (n>hit->capacity) + { + if ((hit->data=realloc(hit->data,n*2*sizeof(int)))==(int*)0) + { + fprintf(stderr,_("style: out of memory\n")); + exit(1); + } + memset(hit->data+hit->capacity,0,(n*2-hit->capacity)*sizeof(int)); + hit->capacity=n*2; + } + ++hit->data[n-1]; + if (n>hit->size) hit->size=n; +} +/*}}}*/ +/*}}}*/ +/* readability formulas */ /*{{{*/ +/** + * Calculate Kincaid Formula (reading grade). + * @param syllables number of syllables + * @param words number of words + * @param sentences number of sentences + */ +static double kincaid(int syllables, int words, int sentences) /*{{{*/ +{ + return 11.8*(((double)syllables)/words)+0.39*(((double)words)/sentences)-15.59; +} +/*}}}*/ + +/** + * Calculate Automated Readability Index (reading grade). + * @param letters number of letters + * @param words the number of words + * @param sentences the number of sentences + */ +static double ari(int letters, int words, int sentences) /*{{{*/ +{ + return 4.71*(((double)letters)/words)+0.5*(((double)words)/sentences)-21.43; +} +/*}}}*/ + +/** + * Calculate Coleman-Liau Formula. + * @param letters number of letters + * @param words the number of words + * @param sentences the number of sentences + */ +static double coleman_liau(int letters, int words, int sentences) /*{{{*/ +{ + return 5.89*(((double)letters)/words)-0.3*(((double)sentences)/(100*words))-15.8; +} +/*}}}*/ + +/** + * Calculate Flesch reading ease formula. + * @param syllables number of syllables + * @param words number of words + * @param sentences number of sentences + */ +static double flesch(int syllables, int words, int sentences) /*{{{*/ +{ + return 206.835-84.6*(((double)syllables)/words)-1.015*(((double)words)/sentences); +} +/*}}}*/ + +/** + * Calculate fog index. + * @param words the number of words in the text + * @param bigwords the number of words which contain more than 3 syllables + * @param sentences the number of sentences + */ +static double fog(int words, int bigwords, int sentences) /*{{{*/ +{ + return ((((double)words)/sentences+(100.0*bigwords)/words)*0.4); +} +/*}}}*/ + +/** + * Calculate 1. neue Wiener Sachtextformel (WSTF). MIGHT BE WRONG! + * @param words the number of words in the text + * @param shortwords the number of words that contain one syllable + * @param longwords the number of words that are longer than 6 characters + * @param bigwords the number of words that contain more than 3 syllables + * @param sentences number of sentences + */ +static double wstf(int words, int shortwords, int longwords, int bigwords, int sentences) /*{{{*/ +{ + return 0.1935*((double)bigwords)/words+0.1672*((double)words)/sentences-0.1297*((double)longwords)/words-0.0327*((double)shortwords)/words-0.875; +} +/*}}}*/ + +/** + * Calculate Wheeler-Smith formula. MIGHT BE WRONG! + * @param words the number of words in the text + * @param bigwords the number of words that contain more than 3 syllables + * @param sentences number of sentences + * @returns the wheeler smith index as result and the grade level in grade. + * If grade is 0, the index is lower than any grade, if the index is + * 99, it is higher than any grade. + */ +static double wheeler_smith(int *grade, int words, int bigwords, int sentences) /*{{{*/ +{ + double idx=(((double)words)/sentences) * 10.0 * (((double)bigwords)/words); + + if (idx<=16) *grade=0; + else if (idx<=20) *grade=5; + else if (idx<=24) *grade=6; + else if (idx<=29) *grade=7; + else if (idx<=34) *grade=8; + else if (idx<=38) *grade=9; + else if (idx<=42) *grade=10; + else *grade=99; + return idx; +} +/*}}}*/ + +/** + * Calculate Lix formula of Björnsson from Sweden. + * @param words the number of words in the text + * @param sentences number of sentences + * @param longwords the number of words that are longer than 6 characters + * @returns the wheeler smith index as result and the grade level in grade. + * If grade is 0, the index is lower than any grade, if the index is + * 99, it is higher than any grade. + */ +static double lix(int *grade, int words, int longwords, int sentences) /*{{{*/ +{ + double idx=((double)words)/sentences+100.0*((double)longwords)/words; + + if (idx<34) *grade=0; + else if (idx<38) *grade=5; + else if (idx<41) *grade=6; + else if (idx<44) *grade=7; + else if (idx<48) *grade=8; + else if (idx<51) *grade=9; + else if (idx<54) *grade=10; + else if (idx<57) *grade=11; + else *grade=99; + return idx; +} +/*}}}*/ + +/** + * Calculate SMOG-Grading. + * @param bigwords the number of words that contain more than 3 syllables + * @param sentences number of sentences + */ +static double smog(int bigwords, int sentences) /*{{{*/ +{ + if (strncmp(docLanguage,"de",2)==0) return sqrt((((double)bigwords)/((double)sentences))*30)-2.0; + else return sqrt((((double)bigwords)/((double)sentences))*30.0)+3.0; +} +/*}}}*/ +/*}}}*/ +/* word class checks */ /*{{{*/ +static int wordcmp(const char *r, const char *s) /*{{{*/ +{ + int res; + + while (*r) + { + if ((res=*r-tolower(*s))!=0) return res; + ++r; ++s; + } + return isalpha(*s); +} +/*}}}*/ + +/** + * Test if the word is an article. This function uses docLanguage to + * determine the used language. + */ +static int article(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* German articles */ /*{{{*/ + { + "der", "die", "das", "des", "dem", "den", "ein", "eine", "einer", + "eines", "einem", "einen", (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* English articles */ /*{{{*/ + { + "the", "a", "an", (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) if (wordcmp(*list,word)==0) return 1; else ++list; + return 0; +} +/*}}}*/ + +/** + * Test if the word is a pronoun. This function uses docLanguage to + * determine the used language. + */ +static int pronoun(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* Pronomen */ /*{{{*/ + { + "ich", "du", "er", "sie", "es", "wir", "ihr", "mein", "meine", "dein", + "deine", "sein", "seine", "unser", "unsere", "euer", "eure", "mir", + "mich", "dir", "dich", "ihre", (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* pronouns */ /*{{{*/ + { + "i", "me", "we", "us", "you", "he", "him", "she", "her", "it", "they", + "them", "thou", "thee", "ye", "myself", "yourself", "himself", + "herself", "itself", "ourselves", "yourselves", "themselves", + "oneself", "my", "mine", "his", "hers", "yours", "ours", "theirs", "its", + "our", "that", "their", "these", "this", "those", "your", (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) if (wordcmp(*list,word)==0) return 1; else ++list; + return 0; +} +/*}}}*/ + +/** + * Test if the word is an interrogative pronoun. This function uses + * docLanguage to determine the used language. + */ +static int interrogativePronoun(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* Interrogativpronomen */ /*{{{*/ + { + "wer", "was", "wem", "wen", "wessen", "wo", "wie", "warum", "weshalb", + "wann", "wieso", "weswegen", (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* interrogative pronouns */ /*{{{*/ + { + "why", "who", "what", "whom", "when", "where", "how", (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) if (wordcmp(*list,word)==0) return 1; else ++list; + return 0; +} +/*}}}*/ + +static int conjunction(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* Konjunktionen */ /*{{{*/ + { + "und", "oder", "aber", "sondern", "doch", "nur", "bloß", "denn", + "weder", "noch", "sowie", (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* conjunctions */ /*{{{*/ + { + "and", "but", "or", "yet", "nor", (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) if (wordcmp(*list,word)==0) return 1; else ++list; + return 0; +} +/*}}}*/ + +static int nominalization(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* Nominalisierungsendungen */ /*{{{*/ + { + "ung", "heit", "keit", "nis", "tum", (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* nominalization suffixes */ /*{{{*/ + { + /* a bit limited, but it is exactly what the original style(1) did */ + "tion", "ment", "ence", "ance", (const char*)0 + }; + /*}}}*/ + const char **list; + + /* exclude words too short to have such long suffixes */ + if (l < 7) return 0; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) if (wordcmp(*list,word+l-strlen(*list))==0) return 1; else ++list; + return 0; +} +/*}}}*/ + +static int subConjunction(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* unterordnende Konjunktionen */ /*{{{*/ + { + "weil", "da", "dadurch", "wenn", "falls", "sofern", "obwohl", + "obgleich", "als", "nachdem", "während", "wie", "ob", "je", + "desto", "damit", "dass", "indem", "um zu", (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* subordinating conjunctions */ /*{{{*/ + { + "after","because", "lest", "till", "'til", "although", "before", + "now that", "unless", "as", "even if", "provided that", "provided", + "until", "as if", "even though", "since", "as long as", "so that", + "whenever", "as much as", "if", "than", "as soon as", "inasmuch", + "in order that", "though", "while", (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) + { + if (wordcmp(*list,word)==0) + { + phraseEnd = word+strlen(*list); + return 1; + } + else ++list; + } + return 0; +} +/*}}}*/ + +static int preposition(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* Präpositionen */ /*{{{*/ + { + "aus", "außer", "bei", "mit", "nach", "seit", "von", "zu", + "bis", "durch", "für", "gegen", "ohne", "um", "an", "auf", + "hinter", "in", "neben", "über", "unter", "vor", "zwischen", + "anstatt", "statt", "trotz", "während", "wegen", (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* prepositions */ /*{{{*/ + { + "aboard", "about", "above", "according to", "across from", + "after", "against", "alongside", "alongside of", "along with", + "amid", "among", "apart from", "around", "aside from", "at", "away from", + "back of", "because of", "before", "behind", "below", "beneath", "beside", + "besides", "between", "beyond", "but", "by means of", + "concerning", "considering", "despite", "down", "down from", "during", + "except", "except for", "excepting for", "from among", + "from between", "from under", "in addition to", "in behalf of", + "in front of", "in place of", "in regard to", "inside of", "inside", + "in spite of", "instead of", "into", "like", "near to", "off", + "on account of", "on behalf of", "onto", "on top of", "on", "opposite", + "out of", "out", "outside", "outside of", "over to", "over", "owing to", + "past", "prior to", "regarding", "round about", "round", + "since", "subsequent to", "together", "with", "throughout", "through", + "till", "toward", "under", "underneath", "until", "unto", "up", + "up to", "upon", "with", "within", "without", "across", "along", + "by", "of", "in", "to", "near", "of", "from", (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) + { + if (wordcmp(*list,word)==0) + { + phraseEnd = word+strlen(*list); + return 1; + } + else ++list; + } + return 0; +} +/*}}}*/ + +static int auxVerb(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* Hilfsverben */ /*{{{*/ + { + "haben", "habe", "hast", "hat", "habt", "gehabt", "hätte", "hättest", + "hätten", "hättet", + "werden", "werde", "wirst", "wird", "werdet", "geworden", "würde", + "würdest", "würden", "würdet", + "können", "kann", "kannst", "könnt", "konnte", "konntest", "konnten", + "konntet", "gekonnt", "könnte", "könntest", "könnten", "könntet", + "müssen", "muss", "musst", "müsst", "musste", "musstest", "mussten", + "gemusst", "müsste", "müsstest", "müssten", "müsstet", + "sollen", "soll", "sollst", "sollt", "sollte", "solltest", "solltet", + "sollten", "gesollt", + (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* auxiliary verbs */ /*{{{*/ + { + "will", "shall", "cannot", "may", "need to", "would", "should", + "could", "might", "must", "ought", "ought to", "can't", "can", + (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) + { + if (wordcmp(*list,word)==0) + { + phraseEnd = word+strlen(*list); + return 1; + } + else ++list; + } + return 0; +} +/*}}}*/ + +static int tobeVerb(const char *word, size_t l) /*{{{*/ +{ + static const char *de[]= /* Hilfsverb sein */ /*{{{*/ + { + "sein", "bin", "bist", "ist", "sind", "seid", "war", "warst", "wart", + "waren", "gewesen", "wäre", "wärst", "wär", "wären", "wärt", "wäret", + (const char*)0 + }; + /*}}}*/ + static const char *en[]= /* auxiliary verb to be */ /*{{{*/ + { + "be", "being", "was", "were", "been", "are", "is", (const char*)0 + }; + /*}}}*/ + const char **list; + + if (strncmp(docLanguage,"de",2)==0) list=de; + else list=en; + while (*list) if (wordcmp(*list,word)==0) return 1; else ++list; + return 0; +} +/*}}}*/ +/*}}}*/ +/* syllable counting */ /*{{{*/ +/** + * Check if the character is pronounced as a vowel. + */ +static int vowel(char c) /*{{{*/ +{ + switch (lc_ctype_int) + { + case ASCII: return (c=='a' || c=='e' || c=='i' || c=='o' || c=='u' || c=='y'); + case ISO_8859_1: return (c=='a' || c=='ä' || c=='e' || c=='i' || c=='o' || c=='ö' || c=='u' || c=='ü' || c=='y'); + default: assert(0); + } +} +/*}}}*/ + +/** + * Count syllables for english words by counting vowel-consonant pairs. + * @param s the word + * @param l the word's length + */ +static int syll_en(const char *s, size_t l) /*{{{*/ +{ + int count=0; + + if (l>=2 && *(s+l-2)=='e' && *(s+l-1)=='d') l-=2; + while (l) + { + if (l>=2 && vowel(*s) && !vowel(*(s+1))) { ++count; s+=2; l-=2; } + else { ++s; --l; } + } + return (count==0 ? 1 : count); +} +/*}}}*/ + +/** + * Count syllables for German words by counting vowel-consonant or + * consonant-vowel pairs, depending on the first character being a vowel or + * not. If it is, a trailing e will be handled with a special rule. This + * algorithm fails on "vor-ueber". + * @param s the word + * @param l the word's length + */ +static int syll_de(const char *s, size_t l) /*{{{*/ +{ + int count=0; + size_t ol=l; + + if (vowel(*s)) + while (l) + { + if (l>=2 && vowel(*s) && !vowel(*(s+1))) { ++count; s+=2; l-=2; } + else if (l==1 && ol>1 && !vowel(*(s-1)) && *s=='e') { ++count; s+=1; l-=1; } + else { ++s; --l; } + } + else + while (l) + { + if (l>=2 && !vowel(*s) && vowel(*(s+1))) { ++count; s+=2; l-=2; } + else { ++s; --l; } + } + return (count==0 ? 1 : count); +} +/*}}}*/ + +/** + * Count syllables. First, charset is set to the used character set. + * Depending on the language, the right counting function is called. + * @param s the word + * @param l the word's length + */ +static int syll(const char *s, size_t l) /*{{{*/ +{ + assert(s!=(const char*)0); + assert(l>=1); + if (strncmp(docLanguage,"de",2)==0) return syll_de(s,l); + else return syll_en(s,l); +} +/*}}}*/ +/*}}}*/ + +/* global style() variables */ /*{{{*/ +static int characters; +static int syllables; +static int words; +static int shortwords; +static int longwords; +static int bigwords; +static int sentences; +static int questions; +static int passiveSent; +static int beginArticles; +static int beginPronouns; +static int pronouns; +static int beginInterrogativePronouns; +static int interrogativePronouns; +static int beginConjunctions; +static int conjunctions; +static int nominalizations; +static int prepositions; +static int beginPrepositions; +static int beginSubConjunctions; +static int subConjunctions; +static int auxVerbs; +static int tobeVerbs; +static int shortestLine,shortestLength; +static int longestLine,longestLength; +static int paragraphs; +static int printLongSentences=0; +static int printNomSentences=0; +static int printPassiveSentences=0; +static float printARI=0.0; +static struct Hit lengths; +/*}}}*/ + +/** + * Process one sentence. + * @param str sentence + * @param length its length + */ +static void style(const char *str, size_t length, const char *file, int line) /*{{{*/ +{ + int firstWord=1; + int inword=0; + int innumber=0; + int wordLength=-1; + int sentWords=0; + int sentLetters=0; + int count; + int passive=0; + int nom=0; + const char *s=str; + + if (length==0) { ++paragraphs; return; } + assert(str!=(const char*)0); + assert(length>=2); + phraseEnd = (const char*)0; + while (*s) + { + if (inword) + { + if (!isalpha(*s)) + { + inword=0; + count=syll(s-wordLength,wordLength); + syllables+=count; + if (count>=3) ++bigwords; + else if (count==1) ++shortwords; + if (wordLength>6) ++longwords; + if (s-wordLength > phraseEnd) + { + /* part of speech tagging-- order matters! */ + if (article(s-wordLength,wordLength) && firstWord) ++beginArticles; + else if (pronoun(s-wordLength,wordLength)) + { + ++pronouns; + if (firstWord) ++beginPronouns; + } + else if (interrogativePronoun(s-wordLength,wordLength)) + { + ++interrogativePronouns; + if (firstWord) ++beginInterrogativePronouns; + } + else if (conjunction(s-wordLength,wordLength)) + { + ++conjunctions; + if (firstWord) ++beginConjunctions; + } + else if (subConjunction(s-wordLength,wordLength)) + { + ++subConjunctions; + if (firstWord) ++beginSubConjunctions; + } + else if (preposition(s-wordLength,wordLength)) + { + ++prepositions; + if (firstWord) ++beginPrepositions; + } + else if (tobeVerb(s-wordLength,wordLength)) + { + ++passive; + ++tobeVerbs; + } + else if (auxVerb(s-wordLength,wordLength)) ++auxVerbs; + else if (nominalization(s-wordLength,wordLength)) + { + ++nom; + ++nominalizations; + } + } + if (firstWord) firstWord = 0; + } + else + { + ++wordLength; + ++characters; + ++sentLetters; + } + } + else if (innumber) + { + if (!isdigit(*s)) + { + innumber=0; + ++syllables; + } + else + { + ++wordLength; + ++characters; + ++sentLetters; + } + } + else + { + if (isalpha(*s)) + { + ++words; + ++sentWords; + inword=1; + wordLength=1; + ++characters; + ++sentLetters; + } + else if (isdigit(*s)) + { + ++words; + ++sentWords; + innumber=1; + wordLength=1; + ++characters; + ++sentLetters; + } + } + ++s; + } + ++sentences; + if (shortestLine==0 || sentWordslongestLength) + { + longestLine=sentences; + longestLength=sentWords; + } + if (str[length-1]=='?') ++questions; + noteHit(&lengths,sentWords); + if (passive) ++passiveSent; + if ((printLongSentences && sentWords>=printLongSentences) + || (printARI && ari(sentLetters,sentWords,1)>printARI) + || (printPassiveSentences && passive) + || (printNomSentences && nom)) printf("%s:%d: %s\n",file,line,str); +} +/*}}}*/ + +static void print_usage(FILE *handle) /*{{{*/ +{ + fputs(_("\ +Usage: style [-L language] [-l length] [-r ari] [file ...]\n\ + style [--language language] [--print-long length] [--print-ari ari]\n\ + [file ...]\n\ + style --version\n"),handle); +} +/*}}}*/ + +int main(int argc, char *argv[]) /*{{{*/ +{ + /* variables */ /*{{{*/ + int usage=0,c; + static struct option lopts[]= + { + { "help", no_argument, 0, 'h' }, + { "print-long", required_argument, 0, 'l' }, + { "language", required_argument, 0, 'L' }, + { "print-ari", required_argument, 0, 'r' }, + { "version", no_argument, 0, 'v' }, + { "print-passive", no_argument, 0, 'p' }, + { "print-nom", no_argument, 0, 'N' }, + { "print-nom-passive", no_argument, 0, 'N' }, + { (const char*)0, 0, 0, '\0' } + }; + /*}}}*/ + + /* locale */ /*{{{*/ + setlocale(LC_ALL,""); +#ifdef HAVE_GETTEXT + bindtextdomain("diction", LOCALEDIR); + textdomain("diction"); +#endif + /*}}}*/ + /* parse options */ /*{{{*/ +#if 0 + lc_ctype=setlocale(LC_CTYPE,(const char*)0); + docLanguage=setlocale(LC_MESSAGES,(const char*)0); +#else + if ((lc_ctype=getenv("LC_CTYPE"))==(const char*)0) lc_ctype="C"; + if ((docLanguage=getenv("LC_MESSAGES"))==(const char*)0) docLanguage="C"; +#endif + if (strcmp(docLanguage,"C")==0) docLanguage="en"; + if (strstr(lc_ctype,"8859-1")) lc_ctype_int=ISO_8859_1; + else lc_ctype_int=ASCII; + while ((c=getopt_long(argc,argv,"l:L:r:hpnN",lopts,(int*)0))!=EOF) switch(c) + { + case 'l': + { + char *end; + printLongSentences=strtol(optarg,&end,10); + if (end==optarg || *end!='\0') usage=1; + break; + } + case 'L': + { + docLanguage=optarg; + break; + } + case 'r': + { + char *end; + printARI=strtod(optarg,&end); + if (end==optarg || *end!='\0') usage=1; + break; + } + case 'p': + { + printPassiveSentences=1; + break; + } + case 'N': + { + printNomSentences=1; + break; + } + case 'n': + { + printNomSentences=1; + printPassiveSentences=1; + break; + } + case 'v': fputs("GNU style " VERSION "\n",stdout); exit(0); + case 'h': usage=2; break; + default: usage=1; break; + } + if (usage==1) + { + print_usage(stderr); + fputs("\n",stderr); + fputs(_("Try style -h|--help for more information.\n"),stderr); + exit(1); + } + else if (usage==2) + { + print_usage(stdout); + fputs("\n",stdout); + fputs(_("Analyse surface characteristics of a document.\n\n"),stdout); + fputs(_("\ +-L, --language set the document language.\n\ +-l, --print-long print all sentences longer than words\n\ +-r, --print-ari print all sentences with an ARI greater than than \n\ +-p, --print-passive print all sentences phrased in the passive voice\n\ +-N, --print-nom print all sentences containing nominalizations\n\ +-n, --print-nom-passive print all sentences phrased in the passive voice or\n\ + containing nominalizations\n"),stdout); + fputs(_("\ +-h, --help print this message\n\ + --version print the version\n"),stdout); + fputs("\n",stdout); + fputs(_("Report bugs to .\n"),stdout); + exit(0); + } + /*}}}*/ + newHit(&lengths); + if (optind==argc) sentence("style",stdin,"(stdin)",style,docLanguage); + else while (optindtest.in <test.ref <test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/thesis/checkbiw/contrib/diction/test/test02 b/thesis/checkbiw/contrib/diction/test/test02 new file mode 100755 index 0000000..da76275 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/test/test02 @@ -0,0 +1,22 @@ +#!/bin/sh + +echo -n $0: 'Ending ellipsis... ' + +cat >test.in <test.ref <test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/thesis/checkbiw/contrib/diction/test/test03 b/thesis/checkbiw/contrib/diction/test/test03 new file mode 100755 index 0000000..4450b5d --- /dev/null +++ b/thesis/checkbiw/contrib/diction/test/test03 @@ -0,0 +1,22 @@ +#!/bin/sh + +echo -n $0: 'Beginning ellipsis... ' + +cat >test.in <test.ref <test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/thesis/checkbiw/contrib/diction/test/test04 b/thesis/checkbiw/contrib/diction/test/test04 new file mode 100755 index 0000000..ac26881 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/test/test04 @@ -0,0 +1,22 @@ +#!/bin/sh + +echo -n $0: 'Omission ellipsis... ' + +cat >test.in <test.ref <test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/thesis/checkbiw/contrib/diction/test/test05 b/thesis/checkbiw/contrib/diction/test/test05 new file mode 100755 index 0000000..7c29da4 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/test/test05 @@ -0,0 +1,28 @@ +#!/bin/sh + +echo -n $0: 'Stemming... ' + +cat >test.in <test.db <test.ref < frob is evil]nification. + +1 phrase in 1 sentence found. +eof + +sh ./test/rundiction -f test.db test.in >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/thesis/checkbiw/contrib/diction/test/test06 b/thesis/checkbiw/contrib/diction/test/test06 new file mode 100755 index 0000000..4367e63 --- /dev/null +++ b/thesis/checkbiw/contrib/diction/test/test06 @@ -0,0 +1,29 @@ +#!/bin/sh + +echo -n $0: 'Recovery... ' + +cat >test.in <test.db <test.ref < flip prefix][flap -> flap alarm]. + +2 phrases in 1 sentence found. +eof + +sh ./test/rundiction -f test.db test.in >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/thesis/checkbiw/doc/manpage.txt b/thesis/checkbiw/doc/manpage.txt new file mode 100644 index 0000000..00b99a0 --- /dev/null +++ b/thesis/checkbiw/doc/manpage.txt @@ -0,0 +1,170 @@ + checkbiw(1) - Checks your prose's conformance to the "BUGS in + Writing" style guide + + Michael Hohmuth + +Synopsis +######## + +checkbiw [ -hnvc ] [ -iad _ruleset ..._ ] _files ..._ + +Description +########### + +The checkbiw tool finds and flags stylistic errors in English +documents. Checkbiw comes with a number of style rule sets that were +derived from Lyn Dupré's book ``BUGS in Writing---A Guide to Debugging +your prose.'' + +To adapt checkbiw to your needs, you can remove and add standard or +custom rule sets. + +Checkbiw outputs error information in a format typical for compilers, +allowing users of editors like Emacs to easily navigate to the error +location. Output is written to stdout. + +Checkbiw reads input from the files supplied on the command line. A +file name of '-' denotes stdin. + +Options +======= + +Checkbiw reads options from $HOME/.checkbiwrc, from ./.checkbiwrc, and +from the command line, in that order. It processes options from left +to right; later options can undo the effect of earlier ones. + +:-n: Clear current list of rule sets. Also removes all standard rule + sets + +:-v: Print the list of enabled rule sets after all option processing. + +:-h: Prints a short help texts and exits. + +:-c: Use colors for highlighting the output. + +:-a _ruleset_: Add rule set at the end of the set list. Before adding + the set, removes set of same type from the list (see next paragraph) + +:-i _ruleset_: Inserts rule set at the beginning of the list. Before adding + the set, removes set of same type from the list (see next + paragraph) + +:-d _rulesettype_: Deletes rule set of given type from the rule-set + list (see next paragraph) + +The -a, -i, and -d options remove rule sets according to their +``type,'' which is equivalent to the name of the rule set up to the +first '-' character. For example: + +* Option "-d lang" removes any of the rule sets "lang", "lang-american", + "lang-whatever" +* Option "-a emdash-space" first removes "emdash-nospace" + +Standard rule sets +================== + +Checkbiw comes with the following standard rule sets. Rule sets +enabled by default are shown with an asterisk (*). + +:* biw: The BUGS in Writing rule set; contains common style errors. + +:* lang-american: The American-English rule set; contains British + English misspellings + +:* cite-space: Checks for space characters before citations indicated + using 'cite' or square brackets [] + +:* emdash-nospace: Enforces that no space characters are set before or + after an em-dash '---' + +:emdash-space: Enforces that space characters _are set_ before or + after an em-dash '---'. + +:passive: Checks for passive-voice construction. This rule set is + disabled by default because it produces a significant number of + false positives, but it can be extremely useful. + +Writing custom rule sets +======================== + +You can write your own rule-set files and add them using the '-i' and +'-a' options. Custom rule sets are especially useful for removing +false positives from checkbiw's output; I give an example for this use +at the end of this section. + +Rule sets are defined in an extended diction(1) format. Rule-set +files contain one rule per line. Each line has two parts separated by +a tabulator character: The first part is the ``bad phrase,'' the +second is the advice. + +If the bad phrase starts with a space character, the rest of the +phrase matches only after nonalphabetic characters (i.e., after +whitespace and punctuation). If the bad phrase _does not_ end with a +tilde character '~', the phrase matches only before nonalphabetic +characters. Otherwise, the phrase match does not depend on +neighboring characters. + +An empty advice or an advice starting with "!" marks a phrase +checkbiw should ignore; this feature is useful for avoiding false +positives. + +For example: + +! as though......! +! even though....! +! though.........although, even though + +(In this example, I used dots to denote one tab character.) + +Environment +########### + +:$CHECKBIWPATH: + Colon-separated list of directories in which checkbiw searches for + rule-set files. Before searching these directories, checkbiw always + checks the current directory; after checking $CHECKBIWPATH, checkbiw + looks into the system directory {instprefix}/share/checkbiw/. + +:$DICTIONPATH: + Colon-separated list of directories in which checkbiw searches for + the GNU diction binary. Defaults to {instprefix}/bin. If checkbiw + cannot find in one of these directories, it additionally + searches the ones in $PATH. + +:$HOME: + User's home directory, used to find user-configuration file + +Files +##### + +:$HOME/.checkbiwrc: + User configuration. Checkbiw reads options from this file first. + +:./.checkbiwrc: + Directory configuration. Checkbiw processes options from this file + after reading $HOME/.checkbiwrc, but before it proceeds to the + command line. + +:{instprefix}/share/checkbiw/*: + Standard rule-set files + +See also +######## + +diction(1), bugsinwriting(7) + +Michael Hohmuth: "The tech-paper writer's ultimate BUGS in Writing +must-read list". File doc/mustread.pdf; hardcopy version of +bugsinwriting(7). + +Lyn Dupré: "BUGS in Writing---A Guide to Debugging Your Prose". +Addison--Wesley 1998 + +;Local Variables: +;mode:flyspell +;ispell-local-dictionary: "american" +;comment-start: ";" +;comment-start-skip: "; *" +;End: + +; LocalWords: Hohmuth checkbiw diff --git a/thesis/checkbiw/doc/manual.gosh b/thesis/checkbiw/doc/manual.gosh new file mode 100644 index 0000000..554e818 --- /dev/null +++ b/thesis/checkbiw/doc/manual.gosh @@ -0,0 +1,45 @@ +# -*- tcl -*- + +### WRITE HEADER OF TEX FILE ### +proc produce_head_latex {} { + global title authors + + puts {\documentclass[twoside]{article}} + puts {\special{papersize=8.5in,11in} % Letter paper - for `dvips'} + puts {\usepackage[T1]{fontenc}} + puts {\usepackage[utf8]{inputenc}} + #puts {\input macros.tex} + + puts {\date{\today}} + + if {$title != ""} { + puts "\\title{[out_latex $title]}" + if {$authors != ""} { + puts "\\author{[out_latex $authors]}" + } + } + puts {\begin{document}} + if {$title != ""} { + puts {\maketitle} + } + puts { \tableofcontents \clearpage} +} + +### WRITE TAIL OF TEX FILE ### +proc produce_tail_latex {} { +# puts "\\clearpage" + puts "\\bibliographystyle{plain}" +# puts "\\footnotesize" + puts "\\addcontentsline{toc}{section}{References}" + puts "\\index{references}" + puts "\\bibliography{own}" + puts "\\end{document}" +} + + +### DOCUMENT-SPECIFIC TEXT REPLACEMENTS ### +proc out_latex_private {string} { + regsub -all {LaTeX} $string "\\LaTeX{}" string +# regsub {\\\$Revision([ 0-9.]*)\\\$} $string {\\date{\\today{} --- Revision \1}} string + return $string +} diff --git a/thesis/checkbiw/doc/mustread.txt b/thesis/checkbiw/doc/mustread.txt new file mode 100644 index 0000000..8ac7593 --- /dev/null +++ b/thesis/checkbiw/doc/mustread.txt @@ -0,0 +1,307 @@ + The tech-paper writer's ultimate BUGS in Writing must-read list + + Michael Hohmuth + +Why you should read this document +################################# + +You are writing a paper, perhaps for a technical conference or another +tech-savvy audience? You want others to read your material, not +stumble over your writing bugs? You are a German? + +Then you must read the Book BUGS in Writing [BugsInWriting]. All of it. +This book teaches you good style and helps you avoid many of the most +common writing errors. + +But if you are in a hurry, then before you read the book, read this +document. It lists the (in my mind) most important subjects related +to the most common and worst writing errors, which everybody seems to +get wrong all the time. + +Assumptions +=========== + +I assume that you are writing in American English. + + +The most important orthography, grammar, and style rules +######################################################## + +The following subsections are (mostly) named like their counterparts +in BUGS in Writing. To find them in the book, use the book's Index of +Principles on pages 635ff. + +Passive Voice; you and your reader (§1, §2) +=========================================== + +Avoid passive voice. Mention the agent of an action as the sentence's +subject. Bad: ``The capability is revoked when it times out.'' Who +revokes the capability? Better: ``When the capability times out, the +kernel automatically revokes it.'' + +An especially bad excuse for not using active voice is to avoid +referring to yourself as ``I'' or ``we.'' Do not refer to yourself as +``the author''; do not call your audience ``the reader.'' Avoid using +``one''; as in ``One can only wonder who writes sentences as ugly as +this one.'' + +Address your reader as ``you.'' When guiding the reader through your +document or through a difficult problem, you can also use ``we.'' +When giving instructions, you can avoid pronouns altogether without +resorting to passive voice, as in: ``Avoid passive voice.'' + +Hyphens (§29) +============= + +Use hyphens in compound adjectives, as in ``microkernel-based +system,'' except if the adjective follows the term, as in ``the system +is microkernel based.'' + +There is no hyphen between adjectives (compound or not) and compound +nouns, as in ``microkernel operating system.'' + +Which versus That (§17) +======================= + +Use ``that'' when identifying single objects or persons, as in ``the +button that says `start'.'' Use ``which'' when conveying extra +information about an object that already has been identified: ``Emacs, +which is the best editor program of the world, has a working set of +eight megabytes.'' + +There is a comma in front of ``which,'' but never before ``that.'' + +Enumerations, And, semicolons, and commas (§23, §26) +==================================================== + +When enumerating items in a list, separate the items with commas or, +if the list items contain commas themselves, with semicolons. Put a +comma in front of the final item's ``and'' or ``or'' as well. The +only exception is a list that contains only two items---in this case, +no comma is necessary. + +I.e., E.g., Etc., and Et al. (§21) +================================== + +Use the Latin abbreviations ``i.e.'' (_id est_), ``e.g.'' +(_exempli gratia_), ``etc.'' (_et cetera_), and ``et al.'' (_et alii_) +only when writing for an academic audience, and only inside +parentheses. In regular text use ``that is,'' ``for example,'' +``and so on,'' and ``and colleagues,'' ``and associates,'' or ``and +coworkers.'' + +Do not set these abbreviations in italic type; use roman type. + +Undefined This (§8) +=================== + +Always use a noun after words such as ``this,'' ``these'', ``that,'' +and ``some.'' Leaving a ``this'' dangling in the air results in +information loss: _What_ exactly was it the ``this'' is referring to? + +Either and Both, Neither and Nor (§28, §99) +=========================================== + +Word before ``either'' and ``both'' apply to both alternatives, words +placed after ``either'' and ``both'' apply to only one. + +Use ``nor'' (instead of ``or'') with ``neither.'' Again, word order +matters: Place words that apply to both alternatives outside the +neither--nor phrase. + +Note that there is no comma after ``both'' and ``neither.'' + +Cannot versus Can Not (§104) +============================ + +The negation of ``can'' is ``cannot.'' Use ``can not'' only if +someone is able of not doing something, as in ``I can not snore.'' + +Abbreviations (§21) +=================== + +Always define abbreviations on first use, as in: ``...the Dresden +Real-Time Operating System (DROPS). DROPS provides support for...'' + +Remember that both the abstract and the main document count as +separate documents. Therefore, you need to introduce abbreviations in +both of these documents. + +Sections and Figures (§62) +========================== + +When referring to sections, figures, and the like by number, the word +preceding the number must be capitalized, as in +``Section [Sections and Figures (§62)].'' + +Citations (§65) +=============== + +Use regular citations (the ones using square brackets) only for +published material. When referring to unpublished or +aurally-transmitted material, use footnotes instead. + +Put a space in front of the opening bracket of your citation. You +can automate this task in LaTeX using: +! \usepackage{cite} + +The list of cited bibliographic references is called ``References,'' +not ``Bibliography''; the latter is a list of works that may or may +not relate to a given text. + +Rewords, Nonwords (§106, §134) +============================== + +Set rewords and nonwords---that is, words beginning with ``re'' or +with ``non''---as single, unhyphenated words. The exception are +nonwords in which the second term consists of multiple words or begins +with a capital letter (as in names). + +:Examples: reestimate, reentry, reevaluate, rerelease, nonmonotonic, + nontrivial, nonnuclear + +:Exceptions: re-sent (to avoid confusion with resent), non-Unix, + non-real-time system, non-Monte Carlo methods + +Em dashes and en dashes (§49, §77) +================================== + +There are three kinds of dashes: hyphens ("-"; LaTeX: '-'), en dashes +("--"; in roman script, it is as wide as the letter "n"; LaTeX: '--'), +and em dashes ("---"; as wide as "m"; LaTeX: '---'). + +Use hyphens to connect the terms in compound adjectives (see Section +[Hyphens (§29)]). LaTeX also uses it for hyphenation at the end of a line. + +Use en dashes in word pairs, such as ``input--output system'' (avoid +writing ``input/output system''). + +Use em dashes for bracketing tangential thoughts. Using em dashes +highlights tangential material, whereas parentheses "()" downplays it. +Note that there should not be whitespace next to em dashes---as in +this example---because the em dash already provides enough separation. +Em dashes are an excellent way to highlight clauses beginning with +``that is'' or ``for example.'' + +Quotation marks and quotations (§35, §41) +========================================= + +Use quotation marks only for quotations and for marking irony. Do not +use quotation marks when introducing new terms; use _italic type_ in +that case. + +In American English, commas and periods (but not semicolons or other +punctuation) that would normally come after a quotation move into the +quotation, ``as in this example.'' The exception to this rule is text +for which a literal quotation is important---for example, for text +that is intended to be typed into the reader's computer. + +(In British English and every other English dialect, commas and +periods belong outside the quotation marks.) + +Solidus (slash) and word pairs (§117) +===================================== + +The forward slash (``/'') is an abbreviation for ``and or.'' + +Generally, you should avoid using the slash. When you mean ``and +or,'' you usually can get away with just ``and.'' + +Do not use the slash to denote word pairs. Instead, use the en dash, +as in ``input--output system,'' ``doctor--patient relationship'' (see +Section [Em dashes and en dashes (§49, §77)]). + +Cap/lc: Capitalized section headings (§83) +========================================== + +The style in which section headings and captions are capitalized in a +funny way is called _Cap/lc_. There are very precise rules on what to +capitalize when using this style, and these rules are easy to get +wrong or forget. Therefore, I suggest you do _not_ use this style for +your headings and captions. + +If you really must use Cap/lc, look up the rules in [BugsInWriting], +Segment 83. + +Like versus Such As (§27) +========================= + +Use ``such as'' to select examples of a group. Use ``like'' only for +likeness, that is, when something resembles something else. + +Phrases to avoid +================ + +:as to whether (§50): + Use ``whether.'' + +:different than (§61): + Use ``different from.'' + +:is due to (§39): + Do not use this phrase when you mean ``is caused by'' or ``was + developed, written, invented, coined by.'' Instead, use phrases like + ``stems from'' and ``originates in.'' Use ``is due to'' only when + indicating reparations. + +:above and below (§48): + Do not use these terms when referring to other sections or parts of + your document. Instead, use phrases like ``Section 3,'' ``previous + section'' and ``next section.'' + +:all of (§108): + Just ``all'' suffices. + +:contractions (it's OK...) (§32): + Do not use contractions such as ``it's'', ``he's'', ``haven't,'' or + ``OK'' in formal writing. Always expand these terms. + +:is comprised of (§75): + The whole is not ``comprised of'' the parts; instead, the whole + comprises the parts. (Also, the parts constitute or make up the + whole.) + +:around (§90): + Use ``around'' only when referring to the surroundings of + something. When giving imprecise numbers, use phrases like + ``approximately,'' ``more or less,'' ``about,'' or ``roughly.'' + +:effort (§16): + Use effort only when describing physical activity such as climbing a + hill. In formal writing, you should avoid this cliché term. + +:equals (§57): + The correct wording is ``is equal to.'' + +:impact (§25): + Use impact only for physical encounters. Do not use this word when + you mean ``influence'' or ``effect.'' + +:issue (§111): + This is another cliché term you should avoid. Instead, state + clearly and precisely what you actually mean---maybe a problem or a + requirement? + +:the reason is because (§55): + Use just ``because'' or ``the reason is.'' + +:the fact that (§66): + Use just ``that'' or leave out the phrase. + +:though (§52): + Use ``although.'' + +:utilize (§109): + Normally, just ``use'' suffices. Use ``utilize'' only when + activating something that is usually not used. + + +;Local Variables: +;mode:flyspell +;ispell-local-dictionary: "american" +;comment-start: ";" +;comment-start-skip: "; *" +;End: + +; LocalWords: Hohmuth nonwords Solidus exempli gratia alii roman nonnuclear +; LocalWords: nonmonotonic usepackage diff --git a/thesis/checkbiw/doc/own.bib b/thesis/checkbiw/doc/own.bib new file mode 100644 index 0000000..6a8c780 --- /dev/null +++ b/thesis/checkbiw/doc/own.bib @@ -0,0 +1,7 @@ +@Book{BugsInWriting, + author = {Lyn Dupré}, + title = {BUGS in Writing --- A Guide to Debugging Your Prose}, + publisher = {Addison-Wesley}, + year = 1998 +} + diff --git a/thesis/checkbiw/src/biw b/thesis/checkbiw/src/biw new file mode 100644 index 0000000..6bec514 --- /dev/null +++ b/thesis/checkbiw/src/biw @@ -0,0 +1,331 @@ + as to whether whether §50 + different than different from §61 + is due to stems from, originates in, is caused by (do not use for origination) {warning} §39 + above preceding, previous (when referring to text) {warning} §48 + below next, following (when referring to text) {warning} §48 + last preceding, previous; final, closing, concluding ("last" is ambiguous) §87 + all of all, every (unless only "all of" makes sense) {warning} §108 + i'm I am §32 + you're you are §32 + he's he is §32 + she's she is §32 + it's it is §32 + we're we are §32 + they're they are §32 + i've I have §32 + you've you have §32 + we've we have §32 + they've they have §32 + ain't am not, are not, is not, have not, has not, do not, does not, did not §32 + aren't are not §32 + isn't is not §32 + haven't have not §32 + hasn't has not §32 + let's let us §32 + ok (avoid in formal writing) §32 + tho = though + thru through + hw hardware + is comprised of comprises §75 + work-around workaround + work around ! + works around ! + worked around ! + around approximately, more or less, roughly, about (when not referring to surroundings) {warning} §90 + best-effort ! + effort (avoid, only applies to physical activity) §16 + equals is equal to §57 + impact influence, effect (noun); affect (verb) §25 + impacts affects §25 + issue (use more precise term such as:) problem, need, requirement §111 + the reason is because because, the reason is, the reason why §55 + the fact that that §66 + as though ! + even though ! + though. nevertheless, however, on the other hand, at last (move to beginning of sentence) + though although, even though, albeit, notwithstanding §52 + utilize use (except when using something underutilized) {warning} §109 + utilizes uses (except when using something underutilized) {warning} §109 + utilizing using (except when using something underutilized) {warning} §109 + utilized used (except when using something underutilized) {warning} §109 + utilise use (except when using something underutilized) {warning} §109 + utilises uses (except when using something underutilized) {warning} §109 + utilising using (except when using something underutilized) {warning} §109 + utilised used (except when using something underutilized) {warning} §109 +, that is ! +,'' that is ! + however, that ! +, that which (or remove comma if "that" clause specifies object(s)) §17 +,'' that which (or remove comma if "that" clause specifies object(s)) §17 +, which ! +,'' which ! + (which ! + about which ! + after which ! + against which ! + at which ! + between which ! + by which ! + during which ! + for which ! + following which ! + from which ! + in which ! + into which ! + of which ! + on which ! + over which ! + through which ! + to which ! + under which ! + upon which ! + with which ! + without which ! + which that (or add comma if "which" clause does not specify object(s)) §17 + after. (dangling preposition, recast using "after which") {warning} §60 + against. (dangling preposition, recast using "against which") {warning} §60 + at. (dangling preposition, recast using "at which") {warning} §60 + between. (dangling preposition, recast using "between which") {warning} §60 + for. (dangling preposition, recast using "for which") {warning} §60 + from. (dangling preposition, recast using "from which") {warning} §60 + in. (dangling preposition, recast using "in which") {warning} §60 + into. (dangling preposition, recast using "into which") {warning} §60 + of. (dangling preposition, recast using "of which") {warning} §60 + on. (dangling preposition, recast using "on which") {warning} §60 + over. (dangling preposition, recast using "over which") {warning} §60 + through. (dangling preposition, recast using "through which") {warning} §60 + to. (dangling preposition, recast using "to which") {warning} §60 + under. (dangling preposition, recast using "under which") {warning} §60 + with. (dangling preposition, recast using "with which") {warning} §60 + without. (dangling preposition, recast using "without which") {warning} §60 + milli milli... ("milli" is a prefix, remove space or hyphen after it) + milli-~ = milli + µ-kernel microkernel ("µ-kernel" is pronounced as "müh-kernel") + \micro-kernel = µ-kernel + \micro ! + micro kernel microkernel + micro-kernel microkernel + micro micro... ("micro" is a prefix, remove space or hyphen after it) + micro-~ = micro + nano nano... ("nano" is a prefix, remove space or hyphen after it) + nano-~ = nano + pico pico... ("pico" is a prefix, remove space or hyphen after it) + pico-~ = pico + kilo kilo... ("kilo" is a prefix, remove space or hyphen after it) + kilo-~ = kilo + mega mega... ("mega" is a prefix, remove space or hyphen after it) + mega-~ = mega + giga giga... ("giga" is a prefix, remove space or hyphen after it) + giga-~ = giga + (i.e., ! + (i. e., ! + (i.\,e., ! + (\ie{}, ! + (\ie, ! + (i.e. (add comma after "i. e.") §21 + (i. e. = (i.e. + (i.\,e. = (i.e. + (\ie{} = (i.e. + (\ie = (i.e. + i.e. that is (if not in parentheses) §21 + i. e. = i.e. + i.\,e. = i.e. + \ie{} = i.e. + \ie = i.e. + (e.g., ! + (e. g., ! + (e.\,g., ! + (\eg{}, ! + (\eg, ! + (e.g. (add comma after "e. g.") §21 + (e. g. = (e.g. + (e.\,g. = (e.g. + (\eg{} = (e.g. + (\eg = (e.g. + e.g. for example, for instance (if not in parentheses) §21 + e. g. = e.g. + e.\,g. = e.g. + \eg{} = e.g. + \eg = e.g. + etc.) ! + etc. and so on (if not in parentheses) §21 + et al.) ! + et al. and colleagues/associates/coworkers (if not in parentheses) {warning} §21 + et al et al., and colleagues/associates/coworkers (if not in parentheses) §21 + et. al = et al + et.\,al = et al + et.al = et al + et.al. = et al + both, (remove comma after "both") {warning} + since because (use "since" only for relationships in time, not for causal relationships) {warning} §102 + either, because ! + either, since either, because (use "since" only for relationships in time, not for causal relationships) §102 + either, as ! + either, (remove comma after "either") {warning} + can not cannot (in most cases) {warning} §104 + non-real-time ! + non-~ (nonwords contain no hyphen, except for compound words or names) {warning} §106 + re-sent ! + re-~ (rewords contain no hyphen) §134 +;'' ''; (except for verbatim strings) {warning} §35 + I/O input--output §117, §32 + input/output input--output §117 + input-output input--output §117 + and/or and §117 + note, (remove comma after "note") §114 + Section \ref ! +# Section~\ref ! + Section [~ ! + section \ref Section §62 +# section~\ref Section §62 + section [~ Section §62 + Figure \ref ! +# Figure~\ref ! + Figure [~ ! + figure \ref Figure §62 +# figure~\ref Figure §62 + figure [~ Figure §62 + Table \ref ! +# Table~\ref ! + Table [~ ! + table \ref Table §62 +# table~\ref Table §62 + table [~ Table §62 + Chapter \ref ! +# Chapter~\ref ! + Chapter [~ ! + chapter \ref Chapter §62 +# chapter~\ref Chapter §62 + chapter [~ Chapter §62 + Part \ref ! +# Part~\ref ! + Part [~ ! + part \ref Part §62 +# part~\ref Part §62 + part [~ Part §62 + firstly first + secondly second +. however, ! +.'' however, ! +. however However, (add comma when meaning "nevertheless", "on the other hand") {warning} +.'' however However, (add comma when meaning "nevertheless", "on the other hand") {warning} +. therefore, ! +.'' therefore, ! +. therefore Therefore, (add comma) +.'' therefore Therefore, (add comma) +. also, Moreover, Additionally, (keep comma) +.'' also, Moreover, Additionally, (keep comma) +. also Moreover, Additionally, (add comma) +.'' also Moreover, Additionally, (add comma) +. moreover, ! +.'' moreover, ! +. moreover Moreover, (add comma) +.'' moreover Moreover, (add comma) +. additionally, ! +.'' additionally, ! +. additionally Additionally, (add comma) +.'' additionally Additionally, (add comma) + CPU ! + cpu CPU + algas algae §89 + appendixes appendices §89 + alumnuses alumni §89 + automatons automata §89 + axises axes §89 + curriculums curricula §89 + datas data §89 + ellipsises ellipses §89 + erratums errata §89 + formulas formulae §89 + indexes indices (use "indexes" only for look-up tables) {warning} §89 + matrixes matrices §89 + mediums media §89 + memorandums memoranda §89 + nucleuses nuclei §89 + radiuses radii §89 + schemas schemata §89 + symposiums symposia §89 + thesauruses thesauri §89 + vertexes vertices §89 + vitas vitae §89 + analysises analyses §89 + antithesises antitheses §89 + crisises crises §89 + parenthesises parentheses §89 + synopsises synopses §89 + synthesises syntheses §89 + thesises theses §89 + echos echoes §89 + fiascos fiascoes §89 + logoes logos §89 + zeroes zeros §89 + falling outs fallings out §89 + passerbys passersby §89 + runner ups runners up §89 + adress address + adresses addresses + ressource resource + ressources resources + one can you can, we can §2 + one has I have, we have §2 + one should you should §2 + the author I §2 + the authors we (or if it's not you, name authors) §2 + the reader you §2 + this is (undefined this, add noun after "this") §8 + these are (undefined this, add noun after "these") §8 + this means that thus, this assertion implies §8 + in order to to, so as to §76 + will likely be probably will be §100 + some (fuzzy; which ones/how many do you mean?) §36 + thing (fuzzy; name entity under discussion) §36 + very (fuzzy; omit, or use stronger adverb/adjective:) exceptionally, extremely, noticeably §36 + a lot of (avoid in formal writing; use more expressive term) §36 + actually (avoid for stressing; use only when emphasizing actual versus virtual) §36 + in fact = actually + truly = actually + really = actually + center on (avoid; choose verb conveying precise description of what is done) §40 + centers on = center on + centered on = center on + focus on = center on + focuses on = center on + focused on = center on + concentrate on = center on + concentrates on = center on + concentrated on = center on + as good or better than as good as OBJECT, or better/if not better + in many cases ("cases" is often fuzzy/redundant; omit, name circumstances) {warning} + been the case that (remove this phrase and recast sentence) + certainly (fuzzy; omit) + character (often redundant; omit) {warning} + nature (often redundant; omit) {warning} + factor out ! + factor (often redundant; omit) {warning} + clever (avoid in formal writing) + respective (often redundant; omit) {warning} + respectively (often redundant; omit) {warning} + a kind ! + the kind ! + this kind ! + that kind ! + one kind ! + kind of (unless meaning "type":) rather (before adjective/verb), something like (before noun) {warning} + sort of = kind of + oftentimes often + ofttimes often + viewpoint opinion, view; (in geometric sense:) point of view +. while although, whereas (unless "while" means "at the same time") {warning} +.'' while =. while +, while =. while +,'' while =. while + worth while (avoid in formal writing) + worthwhile (avoid in formal writing) +#Local Variables: +#mode:fundamental +#mode:flyspell +#tab-width:20 +#ispell-local-dictionary: "american" +#comment-start: ";" +#comment-start-skip: "; *" +#End: diff --git a/thesis/checkbiw/src/checkbiw b/thesis/checkbiw/src/checkbiw new file mode 100755 index 0000000..631170e --- /dev/null +++ b/thesis/checkbiw/src/checkbiw @@ -0,0 +1,213 @@ +: -*- sh -*- + +# Default rulesets +rulesets="biw lang-american emdash-nospace cite-space" + +# colors probably need some reworking ... +FILE_COLOR='\033[0;32;4;1m' +LINE_COLOR='\033[0;34;1m' +BRACKET_COLOR='\033[0;34m' +WARNING_COLOR='\033[0;31m' +CLAUSE_COLOR='\033[0;36m' +TEXT_COLOR='\033[0m' +WRONG_COLOR='\033[0;4m' +RIGHT_COLOR='\033[0;2m' + +toolpath=$(dirname "$0") +DICTIONPATH=${DICTIONPATH:-$toolpath/../diction/OBJ} +CHECKBIWPATH=.:${CHECKBIWPATH:+${CHECKBIWPATH}:}$toolpath + +set -e + +tmp=/tmp/$USER.checkbiw.$$ +trap "cd /; rm -rf $tmp" 0 1 2 15 +(umask 077; mkdir $tmp) + +argopts="aid" +shortopts="hnvc" +optfiles="$HOME/.checkbiwrc .checkbiwrc" + +process () { + file="$1" + +# if [ "x$file" = "x-" ] +# then +# file=/dev/stdin +# fi + + # - Remove LaTeX prelude (everything up to \begin{document}) + # - Mark paragraph endings as sentence endings by adding null + # sentence "~~~." + # - Add appropriate #line directive. + perl -w -e ' + { undef $/; $in = <>; } + @parts = split /begin\{document\}/, $in, 2; + if (scalar @parts > 1) + { + @lines = split /\n/, $parts[0]; + $in = "#line " . scalar(@lines) . " \"" . $ARGV . "\"\n" . $parts[1]; + $in =~ s/%.*$//mg; + } + else + { + $in = "#line " . 1 . " \"" . $ARGV . "\"\n" . $in; + } + $in =~ s/\n\n/\n~~~.\n/sg; + print $in; + ' "$file" > $tmp/preprocessed + + if [ "$opt_c" = true ] + then + ( export PATH=${DICTIONPATH}:$PATH + diction -s --no-default-file --ignore-double-words -f $tmp/rules \ + $tmp/preprocessed | \ + perl -p -e 's/\[([^]]*) -> ([^]]*?)( \{warning\})?( §[1-9][0-9]*)?\]/'${BRACKET_COLOR}'['${WRONG_COLOR}'$1'${BRACKET_COLOR}' -> '${RIGHT_COLOR}'$2'${WARNING_COLOR}'$3'${CLAUSE_COLOR}'$4'${BRACKET_COLOR}']'${TEXT_COLOR}'/g;' \ + -e 's/^(.*):([1-9][0-9]*): /'${FILE_COLOR}'$1'${TEXT_COLOR}':'${LINE_COLOR}'$2'${TEXT_COLOR}': /g' + ) + else + ( export PATH=${DICTIONPATH}:$PATH + diction -s --no-default-file --ignore-double-words -f $tmp/rules \ + $tmp/preprocessed) + fi +} + +findinpath () { + local pathvar="$1" + local path="$(eval 'echo $'"$pathvar" | sed 's/:/ /g')" + local file="$2" + local dir + + if [ "${file%${file#?}}" = / ] # check first character + then # have absolute pathname + if [ -f "$file" ] + then + echo "$file" + return + fi + else # have relative pathname + for dir in $path + do + if [ -f "$dir/$file" ] + then + echo "$dir/$file" + return + fi + done + fi + + echo "Cannot find file $file in path $pathvar" 1>&2 + exit 1 +} + +removefromlist () { + local setname="$1" + local typename="$(basename $setname | cut -f1 -d-)" + + # remove .../anypath/TYPENAME-anything from rulesets + rulesets=$(echo "$rulesets" | sed "s, \([^ ]*/\)*$typename\(-[^ ]*\)*,,g") +} + +usage () { + cat </dev/null +then + set -- $(getopt "$optstring" $(cat $optfiles 2>/dev/null) "$@") +else + usage 2 +fi + +# code for options -a/-i/-d depends on a space in front of each ruleset name +rulesets=" $rulesets" + +while [ $# -ge 1 ] +do + eval 'case "$1" in + -h) + usage 0 ;; + -n) + rulesets="" ;; + -a) + removefromlist "$2" + rulesets="$rulesets $2" + shift ;; + -i) + removefromlist "$2" + rulesets=" $2$rulesets" + shift ;; + -d) + removefromlist "$2" + shift ;; + -['"$argopts"']) + i="$1" + eval eval opt_\${i#?}=$2 + shift ;; + -['"$shortopts"']) + i="$1" + eval eval opt_\${i#?}=true ;; + --) + shift; break ;; + esac' + shift +done + +if [ "$opt_v" = true ] +then + echo "Using rulesets:$rulesets" 1>&2 +fi + +rulefiles="" +for i in $rulesets +do + rulefiles="$rulefiles $(findinpath CHECKBIWPATH $i)" +done + +cat $rulefiles > $tmp/rules + +# process files + +if [ $# -lt 1 ] +then + echo "No input files specified. Run \"`basename $0` -h\" for help." 1>&2 + exit 1 +fi + +while [ $# -ge 1 ] +do + process "$1" + shift +done diff --git a/thesis/checkbiw/src/cite-space b/thesis/checkbiw/src/cite-space new file mode 100644 index 0000000..fea565c --- /dev/null +++ b/thesis/checkbiw/src/cite-space @@ -0,0 +1,10 @@ + \cite ! +\cite (put space before \cite) +#Local Variables: +#mode:fundamental +#mode:flyspell +#tab-width:20 +#ispell-local-dictionary: "american" +#comment-start: ";" +#comment-start-skip: "; *" +#End: diff --git a/thesis/checkbiw/src/emdash-nospace b/thesis/checkbiw/src/emdash-nospace new file mode 100644 index 0000000..3fe629c --- /dev/null +++ b/thesis/checkbiw/src/emdash-nospace @@ -0,0 +1,19 @@ +---which ! +}---which ! +'---which ! +$---which ! +}---~ ! +'---~ ! +$---~ ! +---- ! + --- (remove space before and after ---) +--- (remove space after ---) + ---~ (remove space before ---) +#Local Variables: +#mode:fundamental +#mode:flyspell +#tab-width:20 +#ispell-local-dictionary: "american" +#comment-start: ";" +#comment-start-skip: "; *" +#End: diff --git a/thesis/checkbiw/src/emdash-space b/thesis/checkbiw/src/emdash-space new file mode 100644 index 0000000..7fb6041 --- /dev/null +++ b/thesis/checkbiw/src/emdash-space @@ -0,0 +1,13 @@ + --- which ! + --- ! + ---~ (add space after ---) +--- (add space before ---) +---~ (add space before and after ---) +#Local Variables: +#mode:fundamental +#mode:flyspell +#tab-width:20 +#ispell-local-dictionary: "american" +#comment-start: ";" +#comment-start-skip: "; *" +#End: diff --git a/thesis/checkbiw/src/lang-american b/thesis/checkbiw/src/lang-american new file mode 100644 index 0000000..dd2a1e1 --- /dev/null +++ b/thesis/checkbiw/src/lang-american @@ -0,0 +1,211 @@ +'', ,'' (except for verbatim strings) {warning} §35 +''. .'' (except for verbatim strings) {warning} §35 + acknowledgement acknowledgment §250 + afterwards afterward §250 + backwards backward §250 + cancelling canceling §250 + catalogue catalog §250 + centre center §250 + cheque check §250 + colour color §250 + dialogue dialog §250 + favour favor §250 + flavour flavor §250 +# forwards forward §250 + forwards-~ forward- §250 + grey gray §250 + judgement judgment §250 + labour labor §250 + modelling modeling §250 + modelled modeled §250 + theatre theater §250 + towards toward §250 + travelling traveling §250 + disc disk + discs disks + analyse analyze + analyses analyzes (except as plural of analysis) {warning} + analysing analyzing + analysed analyzed + optimise optimize + optimises optimizes + optimising optimizing + optimisation optimization + optimised optimized + penalise penalize + penalises penalizes + penalising penalizing + penalisation penalization + penalised penalized + itemise itemize + itemises itemizes + itemising itemizing + itemisation itemization + itemised itemized + minimise minimize + minimises minimizes + minimising minimizing + minimisation minimization + minimised minimized + maximise maximize + maximises maximizes + maximising maximizing + maximisation maximization + maximised maximized + localise localize + localises localizes + localising localizing + localisation localization + localised localized + stabilise stabilize + stabilises stabilizes + stabilising stabilizing + stabilisation stabilization + stabilised stabilized + normalise normalize + normalises normalizes + normalising normalizing + normalisation normalization + normalised normalized + generalise generalize + generalises generalizes + generalising generalizing + generalisation generalization + generalised generalized + specialise specialize + specialises specializes + specialising specializing + specialisation specialization + specialised specialized + customise customize + customises customizes + customising customizing + customisation customization + customised customized + organise organize + organises organizes + organising organizing + organisation organization + organised organized + organiser organizer + externalise externalize + externalises externalizes + externalising externalizing + externalisation externalization + externalised externalized + synchronise synchronize + synchronises synchronizes + synchronising synchronizing + synchronisation synchronization + synchronised synchronized + characterise characterize + characterises characterizes + characterising characterizing + characterisation characterization + characterised characterized + serialise serialize + serialises serializes + serialising serializing + serialisation serialization + serialised serialized + serialiser serializer + prioritise prioritize + prioritises prioritizes + prioritising prioritizing + prioritisation prioritization + prioritised prioritized + criticise criticize + criticises criticizes + criticising criticizing + criticised criticized + initialise initialize + initialises initializes + initialising initializing + initialisation initialization + initialised initialized + initialiser initializer + realise realize + realises realizes + realising realizing + realisation realization + realised realized + formalise formalize + formalises formalizes + formalising formalizing + formalisation formalization + formalised formalized + idealise idealize + idealises idealizes + idealising idealizing + idealisation idealization + idealised idealized + authorise authorize + authorises authorizes + authorising authorizing + authorisation authorization + authorised authorized + unauthorise unauthorize + unauthorises unauthorizes + unauthorising unauthorizing + unauthorised unauthorized + quantise quantize + quantises quantizes + quantising quantizing + quantisation quantization + quantised quantized + capitalise capitalize + capitalises capitalizes + capitalising capitalizing + capitalisation capitalization + capitalised capitalized + summarise summarize + summarises summarizes + summarising summarizing + summarisation summarization + summarised summarized + monopolise monopolize + monopolises monopolizes + monopolising monopolizing + monopolisation monopolization + monopolised monopolized + virtualise virtualize + virtualises virtualizes + virtualising virtualizing + virtualisation virtualization + virtualised virtualized + categorise categorize + categorises categorizes + categorising categorizing + categorisation categorization + categorised categorized + centralise centralize + centralises centralizes + centralising centralizing + centralisation centralization + centralised centralized + utilise utilize + utilises utilizes + utilising utilizing + utilisation utilization + utilised utilized + kernelise kernelize + kernelises kernelizes + kernelising kernelizing + kernelisation kernelization + kernelised kernelized + recognise recognize + recognises recognizes + recognising recognizing + recognised recognized + emphasise emphasize + emphasises emphasizes + emphasising emphasizing + emphasised emphasized +#Local Variables: +#mode:fundamental +#mode:flyspell +#tab-width:20 +#ispell-local-dictionary: "american" +#comment-start: ";" +#comment-start-skip: "; *" +#End: diff --git a/thesis/checkbiw/src/passive b/thesis/checkbiw/src/passive new file mode 100644 index 0000000..68e1158 --- /dev/null +++ b/thesis/checkbiw/src/passive @@ -0,0 +1,28 @@ + there are ! + are (passive voice) §1 + there was ! + was (passive voice) §1 + is needed (passive voice) §1 + has been (passive voice) §1 + has not been (passive voice) §1 + can be (passive voice) §1 + cannot be (passive voice) §1 + must be able ! + must be (passive voice) §1 + must not be (passive voice) §1 + should be (passive voice) §1 + should not be (passive voice) §1 + shall be (passive voice) §1 + shall not be (passive voice) §1 + will be (passive voice) §1 + will not be (passive voice) §1 + needs to be (passive voice) §1 + not needed (passive voice) §1 +#Local Variables: +#mode:fundamental +#mode:flyspell +#tab-width:20 +#ispell-local-dictionary: "american" +#comment-start: ";" +#comment-start-skip: "; *" +#End: diff --git a/thesis/content/00_title.tex b/thesis/content/00_title.tex new file mode 100644 index 0000000..ca370ce --- /dev/null +++ b/thesis/content/00_title.tex @@ -0,0 +1,28 @@ +\selectlanguage{british} + +\begin{singlespace} + + \subject{{\LARGE Bachelorarbeit}} + + \title{Acceleration of Plannable Data-Intensive Workloads in Heterogeneous Memory Systems using Intel Data Streaming Accelerator} + + \author{Anatol Constantin Fürst} + + \publishers{Technische Universität Dresden\\ + Fakultät Informatik\\ + Institut für Systemarchitektur\\ + Professur Betriebssysteme\\ + \begin{minipage}{\textwidth}%\\ + \vspace{6cm} + {\normalsize }\begin{tabular}{ll} + Betreuender Hochschullehrer: & + Prof.\ Dr.-Ing.\ Horst Schirmeier\tabularnewline + Betreuender Mitarbeiter: & + M.Sc.\ André Berthold\tabularnewline + \end{tabular} {\normalsize } + \end{minipage}} + + \maketitle +\end{singlespace} + +\cleardoublepage diff --git a/thesis/content/01_disclaimer.tex b/thesis/content/01_disclaimer.tex new file mode 100644 index 0000000..b41a6f7 --- /dev/null +++ b/thesis/content/01_disclaimer.tex @@ -0,0 +1,13 @@ +\selectlanguage{british} + +\section*{\vfill{} \thispagestyle{empty} +Selbständigkeitserklärung} + +Hiermit erkläre ich, dass ich diese Arbeit selbstständig erstellt +und keine anderen als die angegebenen Hilfsmittel benutzt habe. +\bigskip{} + +\noindent Dresden, den \today % \printdate % if you defined date earlier +\vspace{2.5cm} + +\noindent Anatol Constantin Fürst \cleardoublepage{} diff --git a/thesis/content/02_abstract.tex b/thesis/content/02_abstract.tex new file mode 100644 index 0000000..356d8d7 --- /dev/null +++ b/thesis/content/02_abstract.tex @@ -0,0 +1,19 @@ +% -*- Mode: Latex -*- + +% Zusammenfassung + +% Zu einer runden Arbeit gehört auch eine Zusammenfassung, die +% eigenständig einen kurzen Abriß der Arbeit gibt. Eine halbe bis ganze +% DINA4 Seite ist angemessen. Dafür läßt sich keine Gebrauchsanweisung +% geben (für irgendetwas müssen die Betreuer ja auch noch da +% sein). + +\ldots abstract \ldots + +\todo{write abstract} + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: + + diff --git a/thesis/content/10_introduction.aux b/thesis/content/10_introduction.aux new file mode 100644 index 0000000..91d77b8 --- /dev/null +++ b/thesis/content/10_introduction.aux @@ -0,0 +1,170 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{sec:intro}{{1}{1}{Introduction}{chapter.1}{}} +\@writefile{tdo}{\contentsline {todo}{adopt title page}{1}{section*.7}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{adopt disclaimer}{1}{section*.8}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{write introduction}{1}{section*.9}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1.1}A Section}{1}{section.1.1}\protected@file@percent } +\@writefile{lot}{\contentsline {table}{\numberline {1.1}{\ignorespaces Some interesting numbers}}{1}{table.caption.10}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{tab:numbers}{{1.1}{1}{Some interesting numbers}{table.caption.10}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.2}Another Section}{1}{section.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1.3}Yet Another Section}{1}{section.1.3}\protected@file@percent } +\@writefile{tdo}{\contentsline {todo}{add content}{1}{section*.12}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1.4}Test commands}{1}{section.1.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1.5}Test Special Chars}{1}{section.1.5}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces Short description}}{2}{figure.caption.11}\protected@file@percent } +\newlabel{fig:squirrel}{{1.1}{2}{Short description}{figure.caption.11}{}} +\@writefile{tdo}{\contentsline {todo}{Figure: Come up with a mindblowing figure.}{2}{figure.caption.13}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {1.2}{\ignorespaces A mindblowing figure\relax }}{2}{figure.caption.13}\protected@file@percent } +\newlabel{fig:todo}{{1.2}{2}{A mindblowing figure\relax }{figure.caption.13}{}} +\@setckpt{content/10_introduction}{ +\setcounter{page}{3} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{1} +\setcounter{section}{5} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{2} +\setcounter{table}{1} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{tabx@nest}{0} +\setcounter{listtotal}{0} +\setcounter{listcount}{0} +\setcounter{liststart}{0} +\setcounter{liststop}{0} +\setcounter{citecount}{0} +\setcounter{citetotal}{0} +\setcounter{multicitecount}{0} +\setcounter{multicitetotal}{0} +\setcounter{instcount}{6} +\setcounter{maxnames}{3} +\setcounter{minnames}{1} +\setcounter{maxitems}{3} +\setcounter{minitems}{1} +\setcounter{citecounter}{0} +\setcounter{maxcitecounter}{0} +\setcounter{savedcitecounter}{0} +\setcounter{uniquelist}{0} +\setcounter{uniquename}{0} +\setcounter{refsection}{0} +\setcounter{refsegment}{0} +\setcounter{maxextratitle}{0} +\setcounter{maxextratitleyear}{0} +\setcounter{maxextraname}{0} +\setcounter{maxextradate}{0} +\setcounter{maxextraalpha}{0} +\setcounter{abbrvpenalty}{50} +\setcounter{highnamepenalty}{50} +\setcounter{lownamepenalty}{25} +\setcounter{maxparens}{3} +\setcounter{parenlevel}{0} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\setcounter{afterword}{0} +\setcounter{savedafterword}{0} +\setcounter{annotator}{0} +\setcounter{savedannotator}{0} +\setcounter{author}{0} +\setcounter{savedauthor}{0} +\setcounter{bookauthor}{0} +\setcounter{savedbookauthor}{0} +\setcounter{commentator}{0} +\setcounter{savedcommentator}{0} +\setcounter{editor}{0} +\setcounter{savededitor}{0} +\setcounter{editora}{0} +\setcounter{savededitora}{0} +\setcounter{editorb}{0} +\setcounter{savededitorb}{0} +\setcounter{editorc}{0} +\setcounter{savededitorc}{0} +\setcounter{foreword}{0} +\setcounter{savedforeword}{0} +\setcounter{holder}{0} +\setcounter{savedholder}{0} +\setcounter{introduction}{0} +\setcounter{savedintroduction}{0} +\setcounter{namea}{0} +\setcounter{savednamea}{0} +\setcounter{nameb}{0} +\setcounter{savednameb}{0} +\setcounter{namec}{0} +\setcounter{savednamec}{0} +\setcounter{translator}{0} +\setcounter{savedtranslator}{0} +\setcounter{shortauthor}{0} +\setcounter{savedshortauthor}{0} +\setcounter{shorteditor}{0} +\setcounter{savedshorteditor}{0} +\setcounter{labelname}{0} +\setcounter{savedlabelname}{0} +\setcounter{institution}{0} +\setcounter{savedinstitution}{0} +\setcounter{lista}{0} +\setcounter{savedlista}{0} +\setcounter{listb}{0} +\setcounter{savedlistb}{0} +\setcounter{listc}{0} +\setcounter{savedlistc}{0} +\setcounter{listd}{0} +\setcounter{savedlistd}{0} +\setcounter{liste}{0} +\setcounter{savedliste}{0} +\setcounter{listf}{0} +\setcounter{savedlistf}{0} +\setcounter{location}{0} +\setcounter{savedlocation}{0} +\setcounter{organization}{0} +\setcounter{savedorganization}{0} +\setcounter{origlocation}{0} +\setcounter{savedoriglocation}{0} +\setcounter{origpublisher}{0} +\setcounter{savedorigpublisher}{0} +\setcounter{publisher}{0} +\setcounter{savedpublisher}{0} +\setcounter{language}{0} +\setcounter{savedlanguage}{0} +\setcounter{origlanguage}{0} +\setcounter{savedoriglanguage}{0} +\setcounter{pageref}{0} +\setcounter{savedpageref}{0} +\setcounter{textcitecount}{0} +\setcounter{textcitetotal}{0} +\setcounter{textcitemaxnames}{0} +\setcounter{biburlbigbreakpenalty}{100} +\setcounter{biburlbreakpenalty}{200} +\setcounter{biburlnumpenalty}{0} +\setcounter{biburlucpenalty}{0} +\setcounter{biburllcpenalty}{0} +\setcounter{smartand}{1} +\setcounter{bbx:relatedcount}{0} +\setcounter{bbx:relatedtotal}{0} +\setcounter{vrcnt}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} +\setcounter{lstnumber}{1} +\setcounter{FancyVerbLine}{0} +\setcounter{AM@survey}{0} +\setcounter{@todonotes@numberoftodonotes}{5} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +} diff --git a/thesis/content/10_introduction.tex b/thesis/content/10_introduction.tex new file mode 100644 index 0000000..71d0cfd --- /dev/null +++ b/thesis/content/10_introduction.tex @@ -0,0 +1,94 @@ +\chapter{Introduction} +\label{sec:intro} + +% Die Einleitung schreibt man zuletzt, wenn die Arbeit im Großen und +% Ganzen schon fertig ist. (Wenn man mit der Einleitung beginnt - ein +% häufiger Fehler - braucht man viel länger und wirft sie später doch +% wieder weg). Sie hat als wesentliche Aufgabe, den Kontext für die +% unterschiedlichen Klassen von Lesern herzustellen. Man muß hier die +% Leser für sich gewinnen. Das Problem, mit dem sich die Arbeit befaßt, +% sollte am Ende wenigsten in Grundzügen klar sein und dem Leser +% interessant erscheinen. Das Kapitel schließt mit einer Ãœbersicht über +% den Rest der Arbeit. Meist braucht man mindestens 4 Seiten dafür, mehr +% als 10 Seiten liest keiner. + +\todo{adopt title page} + +\todo{adopt disclaimer} + +\todo{write introduction} + +\section{A Section} + +Referencing other chapters: \ref{sec:state} \ref{sec:design} +\ref{sec:implementation} \ref{sec:evaluation} \ref{sec:futurework} +\ref{sec:conclusion} + +\begin{table}[htp] + \centering + \begin{tabular}{lrr} + \textbf{Name} & \textbf{Y} & \textbf{Z} \\ + \hline + \textit{Foo} & 20,614 & \SI{23}{\percent} \\ + \textit{Bar} & 9,914 & \SI{11}{\percent} \\ + \textit{Foo + Bar} & 30,528 & \SI{34}{\percent} \\ + \hline + \textit{total} & 88,215 & \SI{100}{\percent} \\ + + \end{tabular} + \caption[Some interesting numbers]{Various very important looking numbers and sums.} + \label{tab:numbers} +\end{table} + +More text referencing Table~\ref{tab:numbers}. + +\section{Another Section} + +\begin{figure}[tbp] + \centering + \includegraphics[width=0.8\textwidth]{images/squirrel} + \caption[Short description]{A long description of this squirrel figure. + Image taken from + \url{http://commons.wikimedia.org/wiki/File:Sciurus-vulgaris_hernandeangelis_stockholm_2008-06-04.jpg}} + \label{fig:squirrel} +\end{figure} + +Citing \cite{bellard2005qfa} other documents \cite{bellard2005qfa, boileau06} +and Figure~\ref{fig:squirrel}. + +Something with umlauts and a year/month date: +\cite{becher04:_feurig_hacken_mit_firew}. + +And some online resources: \cite{green04}, \cite{patent:4819234} + + +\section{Yet Another Section} + +\todo{add content} + +\begin{figure}[tbp] + \missingfigure{Come up with a mindblowing figure.} + \caption{A mindblowing figure} + \label{fig:todo} +\end{figure} + +\section{Test commands} + +\drops \LLinux \NOVA \QEMU +\texttt{memcpy} +A sentence about BASIC. And a correctly formatted one about ECC\@. + +\section{Test Special Chars} +Before you start writing your thesis please make sure that your build setup +compiles the following special chars correctly into the PDF! +If for example ß is printed as 'SS' then you should fix this! +There are a few hints in the repository in \mbox{\texttt{preamble/packages.txt}}. + +ö ä ü Ö Ä Ãœ ß < > + + +\cleardoublepage + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: diff --git a/thesis/content/20_state.aux b/thesis/content/20_state.aux new file mode 100644 index 0000000..152b2e5 --- /dev/null +++ b/thesis/content/20_state.aux @@ -0,0 +1,154 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Technical Background}{3}{chapter.2}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{sec:state}{{2}{3}{Technical Background}{chapter.2}{}} +\@writefile{tdo}{\contentsline {todo}{write state}{3}{section*.14}\protected@file@percent } +\@setckpt{content/20_state}{ +\setcounter{page}{5} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{2} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{tabx@nest}{0} +\setcounter{listtotal}{0} +\setcounter{listcount}{0} +\setcounter{liststart}{0} +\setcounter{liststop}{0} +\setcounter{citecount}{0} +\setcounter{citetotal}{0} +\setcounter{multicitecount}{0} +\setcounter{multicitetotal}{0} +\setcounter{instcount}{6} +\setcounter{maxnames}{3} +\setcounter{minnames}{1} +\setcounter{maxitems}{3} +\setcounter{minitems}{1} +\setcounter{citecounter}{0} +\setcounter{maxcitecounter}{0} +\setcounter{savedcitecounter}{0} +\setcounter{uniquelist}{0} +\setcounter{uniquename}{0} +\setcounter{refsection}{0} +\setcounter{refsegment}{0} +\setcounter{maxextratitle}{0} +\setcounter{maxextratitleyear}{0} +\setcounter{maxextraname}{0} +\setcounter{maxextradate}{0} +\setcounter{maxextraalpha}{0} +\setcounter{abbrvpenalty}{50} +\setcounter{highnamepenalty}{50} +\setcounter{lownamepenalty}{25} +\setcounter{maxparens}{3} +\setcounter{parenlevel}{0} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\setcounter{afterword}{0} +\setcounter{savedafterword}{0} +\setcounter{annotator}{0} +\setcounter{savedannotator}{0} +\setcounter{author}{0} +\setcounter{savedauthor}{0} +\setcounter{bookauthor}{0} +\setcounter{savedbookauthor}{0} +\setcounter{commentator}{0} +\setcounter{savedcommentator}{0} +\setcounter{editor}{0} +\setcounter{savededitor}{0} +\setcounter{editora}{0} +\setcounter{savededitora}{0} +\setcounter{editorb}{0} +\setcounter{savededitorb}{0} +\setcounter{editorc}{0} +\setcounter{savededitorc}{0} +\setcounter{foreword}{0} +\setcounter{savedforeword}{0} +\setcounter{holder}{0} +\setcounter{savedholder}{0} +\setcounter{introduction}{0} +\setcounter{savedintroduction}{0} +\setcounter{namea}{0} +\setcounter{savednamea}{0} +\setcounter{nameb}{0} +\setcounter{savednameb}{0} +\setcounter{namec}{0} +\setcounter{savednamec}{0} +\setcounter{translator}{0} +\setcounter{savedtranslator}{0} +\setcounter{shortauthor}{0} +\setcounter{savedshortauthor}{0} +\setcounter{shorteditor}{0} +\setcounter{savedshorteditor}{0} +\setcounter{labelname}{0} +\setcounter{savedlabelname}{0} +\setcounter{institution}{0} +\setcounter{savedinstitution}{0} +\setcounter{lista}{0} +\setcounter{savedlista}{0} +\setcounter{listb}{0} +\setcounter{savedlistb}{0} +\setcounter{listc}{0} +\setcounter{savedlistc}{0} +\setcounter{listd}{0} +\setcounter{savedlistd}{0} +\setcounter{liste}{0} +\setcounter{savedliste}{0} +\setcounter{listf}{0} +\setcounter{savedlistf}{0} +\setcounter{location}{0} +\setcounter{savedlocation}{0} +\setcounter{organization}{0} +\setcounter{savedorganization}{0} +\setcounter{origlocation}{0} +\setcounter{savedoriglocation}{0} +\setcounter{origpublisher}{0} +\setcounter{savedorigpublisher}{0} +\setcounter{publisher}{0} +\setcounter{savedpublisher}{0} +\setcounter{language}{0} +\setcounter{savedlanguage}{0} +\setcounter{origlanguage}{0} +\setcounter{savedoriglanguage}{0} +\setcounter{pageref}{0} +\setcounter{savedpageref}{0} +\setcounter{textcitecount}{0} +\setcounter{textcitetotal}{0} +\setcounter{textcitemaxnames}{0} +\setcounter{biburlbigbreakpenalty}{100} +\setcounter{biburlbreakpenalty}{200} +\setcounter{biburlnumpenalty}{0} +\setcounter{biburlucpenalty}{0} +\setcounter{biburllcpenalty}{0} +\setcounter{smartand}{1} +\setcounter{bbx:relatedcount}{0} +\setcounter{bbx:relatedtotal}{0} +\setcounter{vrcnt}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} +\setcounter{lstnumber}{1} +\setcounter{FancyVerbLine}{0} +\setcounter{AM@survey}{0} +\setcounter{@todonotes@numberoftodonotes}{6} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +} diff --git a/thesis/content/20_state.tex b/thesis/content/20_state.tex new file mode 100644 index 0000000..6a89320 --- /dev/null +++ b/thesis/content/20_state.tex @@ -0,0 +1,40 @@ +\chapter{Technical Background} +\label{sec:state} + +% Hier werden zwei wesentliche Aufgaben erledigt: + +% 1. Der Leser muß alles beigebracht bekommen, was er zum Verständnis +% der späteren Kapitel braucht. Insbesondere sind in unserem Fach die +% Systemvoraussetzungen zu klären, die man später benutzt. Zulässig ist +% auch, daß man hier auf Tutorials oder Ähnliches verweist, die hier auf +% dem Netz zugänglich sind. + +% 2. Es muß klar werden, was anderswo zu diesem Problem gearbeitet +% wird. Insbesondere sollen natürlich die Lücken der anderen klar +% werden. Warum ist die eigene Arbeit, der eigene Ansatz wichtig, um +% hier den Stand der Technik weiterzubringen? Dieses Kapitel wird von +% vielen Lesern übergangen (nicht aber vom Gutachter ;-), auch später +% bei Veröffentlichungen ist "Related Work" eine wichtige Sache. + +% Viele Leser stellen dann später fest, daß sie einige der Grundlagen +% doch brauchen und blättern zurück. Deshalb ist es gut, +% Rückwärtsverweise in späteren Kapiteln zu haben, und zwar so, daß man +% die Abschnitte, auf die verwiesen wird, auch für sich lesen +% kann. Diese Kapitel kann relativ lang werden, je größer der Kontext +% der Arbeit, desto länger. Es lohnt sich auch! Den Text kann man unter +% Umständen wiederverwenden, indem man ihn als "Tutorial" zu einem +% Gebiet auch dem Netz zugänglich macht. + +% Dadurch gewinnt man manchmal wertvolle Hinweise von Kollegen. Dieses +% Kapitel wird in der Regel zuerst geschrieben und ist das Einfachste +% (oder das Schwerste weil erste). + +\ldots state of the art \ldots + +\todo{write state} + +\cleardoublepage + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: diff --git a/thesis/content/30_design.aux b/thesis/content/30_design.aux new file mode 100644 index 0000000..d4cc04a --- /dev/null +++ b/thesis/content/30_design.aux @@ -0,0 +1,154 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Design}{5}{chapter.3}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{sec:design}{{3}{5}{Design}{chapter.3}{}} +\@writefile{tdo}{\contentsline {todo}{write design}{5}{section*.15}\protected@file@percent } +\@setckpt{content/30_design}{ +\setcounter{page}{7} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{3} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{tabx@nest}{0} +\setcounter{listtotal}{0} +\setcounter{listcount}{0} +\setcounter{liststart}{0} +\setcounter{liststop}{0} +\setcounter{citecount}{0} +\setcounter{citetotal}{0} +\setcounter{multicitecount}{0} +\setcounter{multicitetotal}{0} +\setcounter{instcount}{6} +\setcounter{maxnames}{3} +\setcounter{minnames}{1} +\setcounter{maxitems}{3} +\setcounter{minitems}{1} +\setcounter{citecounter}{0} +\setcounter{maxcitecounter}{0} +\setcounter{savedcitecounter}{0} +\setcounter{uniquelist}{0} +\setcounter{uniquename}{0} +\setcounter{refsection}{0} +\setcounter{refsegment}{0} +\setcounter{maxextratitle}{0} +\setcounter{maxextratitleyear}{0} +\setcounter{maxextraname}{0} +\setcounter{maxextradate}{0} +\setcounter{maxextraalpha}{0} +\setcounter{abbrvpenalty}{50} +\setcounter{highnamepenalty}{50} +\setcounter{lownamepenalty}{25} +\setcounter{maxparens}{3} +\setcounter{parenlevel}{0} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\setcounter{afterword}{0} +\setcounter{savedafterword}{0} +\setcounter{annotator}{0} +\setcounter{savedannotator}{0} +\setcounter{author}{0} +\setcounter{savedauthor}{0} +\setcounter{bookauthor}{0} +\setcounter{savedbookauthor}{0} +\setcounter{commentator}{0} +\setcounter{savedcommentator}{0} +\setcounter{editor}{0} +\setcounter{savededitor}{0} +\setcounter{editora}{0} +\setcounter{savededitora}{0} +\setcounter{editorb}{0} +\setcounter{savededitorb}{0} +\setcounter{editorc}{0} +\setcounter{savededitorc}{0} +\setcounter{foreword}{0} +\setcounter{savedforeword}{0} +\setcounter{holder}{0} +\setcounter{savedholder}{0} +\setcounter{introduction}{0} +\setcounter{savedintroduction}{0} +\setcounter{namea}{0} +\setcounter{savednamea}{0} +\setcounter{nameb}{0} +\setcounter{savednameb}{0} +\setcounter{namec}{0} +\setcounter{savednamec}{0} +\setcounter{translator}{0} +\setcounter{savedtranslator}{0} +\setcounter{shortauthor}{0} +\setcounter{savedshortauthor}{0} +\setcounter{shorteditor}{0} +\setcounter{savedshorteditor}{0} +\setcounter{labelname}{0} +\setcounter{savedlabelname}{0} +\setcounter{institution}{0} +\setcounter{savedinstitution}{0} +\setcounter{lista}{0} +\setcounter{savedlista}{0} +\setcounter{listb}{0} +\setcounter{savedlistb}{0} +\setcounter{listc}{0} +\setcounter{savedlistc}{0} +\setcounter{listd}{0} +\setcounter{savedlistd}{0} +\setcounter{liste}{0} +\setcounter{savedliste}{0} +\setcounter{listf}{0} +\setcounter{savedlistf}{0} +\setcounter{location}{0} +\setcounter{savedlocation}{0} +\setcounter{organization}{0} +\setcounter{savedorganization}{0} +\setcounter{origlocation}{0} +\setcounter{savedoriglocation}{0} +\setcounter{origpublisher}{0} +\setcounter{savedorigpublisher}{0} +\setcounter{publisher}{0} +\setcounter{savedpublisher}{0} +\setcounter{language}{0} +\setcounter{savedlanguage}{0} +\setcounter{origlanguage}{0} +\setcounter{savedoriglanguage}{0} +\setcounter{pageref}{0} +\setcounter{savedpageref}{0} +\setcounter{textcitecount}{0} +\setcounter{textcitetotal}{0} +\setcounter{textcitemaxnames}{0} +\setcounter{biburlbigbreakpenalty}{100} +\setcounter{biburlbreakpenalty}{200} +\setcounter{biburlnumpenalty}{0} +\setcounter{biburlucpenalty}{0} +\setcounter{biburllcpenalty}{0} +\setcounter{smartand}{1} +\setcounter{bbx:relatedcount}{0} +\setcounter{bbx:relatedtotal}{0} +\setcounter{vrcnt}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} +\setcounter{lstnumber}{1} +\setcounter{FancyVerbLine}{0} +\setcounter{AM@survey}{0} +\setcounter{@todonotes@numberoftodonotes}{7} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +} diff --git a/thesis/content/30_design.tex b/thesis/content/30_design.tex new file mode 100644 index 0000000..de42684 --- /dev/null +++ b/thesis/content/30_design.tex @@ -0,0 +1,29 @@ +\chapter{Design} +\label{sec:design} + +% Ist das zentrale Kapitel der Arbeit. Hier werden das Ziel sowie die +% eigenen Ideen, Wertungen, Entwurfsentscheidungen vorgebracht. Es kann +% sich lohnen, verschiedene Möglichkeiten durchzuspielen und dann +% explizit zu begründen, warum man sich für eine bestimmte entschieden +% hat. Dieses Kapitel sollte - zumindest in Stichworten - schon bei den +% ersten Festlegungen eines Entwurfs skizziert werden. +% Es wird sich aber in einer normal verlaufenden +% Arbeit dauernd etwas daran ändern. Das Kapitel darf nicht zu +% detailliert werden, sonst langweilt sich der Leser. Es ist sehr +% wichtig, das richtige Abstraktionsniveau zu finden. Beim Verfassen +% sollte man auf die Wiederverwendbarkeit des Textes achten. + +% Plant man eine Veröffentlichung aus der Arbeit zu machen, können von +% diesem Kapitel Teile genommen werden. Das Kapitel wird in der Regel +% wohl mindestens 8 Seiten haben, mehr als 20 können ein Hinweis darauf +% sein, daß das Abstraktionsniveau verfehlt wurde. + +\ldots design \ldots + +\todo{write design} + +\cleardoublepage + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: diff --git a/thesis/content/40_implementation.aux b/thesis/content/40_implementation.aux new file mode 100644 index 0000000..03e9f72 --- /dev/null +++ b/thesis/content/40_implementation.aux @@ -0,0 +1,154 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Implementation}{7}{chapter.4}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{sec:implementation}{{4}{7}{Implementation}{chapter.4}{}} +\@writefile{tdo}{\contentsline {todo}{write implementation}{7}{section*.16}\protected@file@percent } +\@setckpt{content/40_implementation}{ +\setcounter{page}{9} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{4} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{tabx@nest}{0} +\setcounter{listtotal}{0} +\setcounter{listcount}{0} +\setcounter{liststart}{0} +\setcounter{liststop}{0} +\setcounter{citecount}{0} +\setcounter{citetotal}{0} +\setcounter{multicitecount}{0} +\setcounter{multicitetotal}{0} +\setcounter{instcount}{6} +\setcounter{maxnames}{3} +\setcounter{minnames}{1} +\setcounter{maxitems}{3} +\setcounter{minitems}{1} +\setcounter{citecounter}{0} +\setcounter{maxcitecounter}{0} +\setcounter{savedcitecounter}{0} +\setcounter{uniquelist}{0} +\setcounter{uniquename}{0} +\setcounter{refsection}{0} +\setcounter{refsegment}{0} +\setcounter{maxextratitle}{0} +\setcounter{maxextratitleyear}{0} +\setcounter{maxextraname}{0} +\setcounter{maxextradate}{0} +\setcounter{maxextraalpha}{0} +\setcounter{abbrvpenalty}{50} +\setcounter{highnamepenalty}{50} +\setcounter{lownamepenalty}{25} +\setcounter{maxparens}{3} +\setcounter{parenlevel}{0} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\setcounter{afterword}{0} +\setcounter{savedafterword}{0} +\setcounter{annotator}{0} +\setcounter{savedannotator}{0} +\setcounter{author}{0} +\setcounter{savedauthor}{0} +\setcounter{bookauthor}{0} +\setcounter{savedbookauthor}{0} +\setcounter{commentator}{0} +\setcounter{savedcommentator}{0} +\setcounter{editor}{0} +\setcounter{savededitor}{0} +\setcounter{editora}{0} +\setcounter{savededitora}{0} +\setcounter{editorb}{0} +\setcounter{savededitorb}{0} +\setcounter{editorc}{0} +\setcounter{savededitorc}{0} +\setcounter{foreword}{0} +\setcounter{savedforeword}{0} +\setcounter{holder}{0} +\setcounter{savedholder}{0} +\setcounter{introduction}{0} +\setcounter{savedintroduction}{0} +\setcounter{namea}{0} +\setcounter{savednamea}{0} +\setcounter{nameb}{0} +\setcounter{savednameb}{0} +\setcounter{namec}{0} +\setcounter{savednamec}{0} +\setcounter{translator}{0} +\setcounter{savedtranslator}{0} +\setcounter{shortauthor}{0} +\setcounter{savedshortauthor}{0} +\setcounter{shorteditor}{0} +\setcounter{savedshorteditor}{0} +\setcounter{labelname}{0} +\setcounter{savedlabelname}{0} +\setcounter{institution}{0} +\setcounter{savedinstitution}{0} +\setcounter{lista}{0} +\setcounter{savedlista}{0} +\setcounter{listb}{0} +\setcounter{savedlistb}{0} +\setcounter{listc}{0} +\setcounter{savedlistc}{0} +\setcounter{listd}{0} +\setcounter{savedlistd}{0} +\setcounter{liste}{0} +\setcounter{savedliste}{0} +\setcounter{listf}{0} +\setcounter{savedlistf}{0} +\setcounter{location}{0} +\setcounter{savedlocation}{0} +\setcounter{organization}{0} +\setcounter{savedorganization}{0} +\setcounter{origlocation}{0} +\setcounter{savedoriglocation}{0} +\setcounter{origpublisher}{0} +\setcounter{savedorigpublisher}{0} +\setcounter{publisher}{0} +\setcounter{savedpublisher}{0} +\setcounter{language}{0} +\setcounter{savedlanguage}{0} +\setcounter{origlanguage}{0} +\setcounter{savedoriglanguage}{0} +\setcounter{pageref}{0} +\setcounter{savedpageref}{0} +\setcounter{textcitecount}{0} +\setcounter{textcitetotal}{0} +\setcounter{textcitemaxnames}{0} +\setcounter{biburlbigbreakpenalty}{100} +\setcounter{biburlbreakpenalty}{200} +\setcounter{biburlnumpenalty}{0} +\setcounter{biburlucpenalty}{0} +\setcounter{biburllcpenalty}{0} +\setcounter{smartand}{1} +\setcounter{bbx:relatedcount}{0} +\setcounter{bbx:relatedtotal}{0} +\setcounter{vrcnt}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} +\setcounter{lstnumber}{1} +\setcounter{FancyVerbLine}{0} +\setcounter{AM@survey}{0} +\setcounter{@todonotes@numberoftodonotes}{8} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +} diff --git a/thesis/content/40_implementation.tex b/thesis/content/40_implementation.tex new file mode 100644 index 0000000..01c5eb7 --- /dev/null +++ b/thesis/content/40_implementation.tex @@ -0,0 +1,31 @@ +\chapter{Implementation} +\label{sec:implementation} + +% Hier greift man einige wenige, interessante Gesichtspunkte der +% Implementierung heraus. Das Kapitel darf nicht mit Dokumentation oder +% gar Programmkommentaren verwechselt werden. Es kann vorkommen, daß +% sehr viele Gesichtspunkte aufgegriffen werden müssen, ist aber nicht +% sehr häufig. Zweck dieses Kapitels ist einerseits, glaubhaft zu +% machen, daß man es bei der Arbeit nicht mit einem "Papiertiger" +% sondern einem real existierenden System zu tun hat. Es ist sicherlich +% auch ein sehr wichtiger Text für jemanden, der die Arbeit später +% fortsetzt. Der dritte Gesichtspunkt dabei ist, einem Leser einen etwas +% tieferen Einblick in die Technik zu geben, mit der man sich hier +% beschäftigt. Schöne Bespiele sind "War Stories", also Dinge mit denen +% man besonders zu kämpfen hatte, oder eine konkrete, beispielhafte +% Verfeinerung einer der in Kapitel 3 vorgestellten Ideen. Auch hier +% gilt, mehr als 20 Seiten liest keiner, aber das ist hierbei nicht so +% schlimm, weil man die Lektüre ja einfach abbrechen kann, ohne den +% Faden zu verlieren. Vollständige Quellprogramme haben in einer Arbeit +% nichts zu suchen, auch nicht im Anhang, sondern gehören auf Rechner, +% auf denen man sie sich ansehen kann. + +\ldots implementation \ldots + +\todo{write implementation} + +\cleardoublepage + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: diff --git a/thesis/content/50_evaluation.aux b/thesis/content/50_evaluation.aux new file mode 100644 index 0000000..7ef4294 --- /dev/null +++ b/thesis/content/50_evaluation.aux @@ -0,0 +1,154 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Evaluation}{9}{chapter.5}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{sec:evaluation}{{5}{9}{Evaluation}{chapter.5}{}} +\@writefile{tdo}{\contentsline {todo}{write evaluation}{9}{section*.17}\protected@file@percent } +\@setckpt{content/50_evaluation}{ +\setcounter{page}{11} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{5} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{tabx@nest}{0} +\setcounter{listtotal}{0} +\setcounter{listcount}{0} +\setcounter{liststart}{0} +\setcounter{liststop}{0} +\setcounter{citecount}{0} +\setcounter{citetotal}{0} +\setcounter{multicitecount}{0} +\setcounter{multicitetotal}{0} +\setcounter{instcount}{6} +\setcounter{maxnames}{3} +\setcounter{minnames}{1} +\setcounter{maxitems}{3} +\setcounter{minitems}{1} +\setcounter{citecounter}{0} +\setcounter{maxcitecounter}{0} +\setcounter{savedcitecounter}{0} +\setcounter{uniquelist}{0} +\setcounter{uniquename}{0} +\setcounter{refsection}{0} +\setcounter{refsegment}{0} +\setcounter{maxextratitle}{0} +\setcounter{maxextratitleyear}{0} +\setcounter{maxextraname}{0} +\setcounter{maxextradate}{0} +\setcounter{maxextraalpha}{0} +\setcounter{abbrvpenalty}{50} +\setcounter{highnamepenalty}{50} +\setcounter{lownamepenalty}{25} +\setcounter{maxparens}{3} +\setcounter{parenlevel}{0} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\setcounter{afterword}{0} +\setcounter{savedafterword}{0} +\setcounter{annotator}{0} +\setcounter{savedannotator}{0} +\setcounter{author}{0} +\setcounter{savedauthor}{0} +\setcounter{bookauthor}{0} +\setcounter{savedbookauthor}{0} +\setcounter{commentator}{0} +\setcounter{savedcommentator}{0} +\setcounter{editor}{0} +\setcounter{savededitor}{0} +\setcounter{editora}{0} +\setcounter{savededitora}{0} +\setcounter{editorb}{0} +\setcounter{savededitorb}{0} +\setcounter{editorc}{0} +\setcounter{savededitorc}{0} +\setcounter{foreword}{0} +\setcounter{savedforeword}{0} +\setcounter{holder}{0} +\setcounter{savedholder}{0} +\setcounter{introduction}{0} +\setcounter{savedintroduction}{0} +\setcounter{namea}{0} +\setcounter{savednamea}{0} +\setcounter{nameb}{0} +\setcounter{savednameb}{0} +\setcounter{namec}{0} +\setcounter{savednamec}{0} +\setcounter{translator}{0} +\setcounter{savedtranslator}{0} +\setcounter{shortauthor}{0} +\setcounter{savedshortauthor}{0} +\setcounter{shorteditor}{0} +\setcounter{savedshorteditor}{0} +\setcounter{labelname}{0} +\setcounter{savedlabelname}{0} +\setcounter{institution}{0} +\setcounter{savedinstitution}{0} +\setcounter{lista}{0} +\setcounter{savedlista}{0} +\setcounter{listb}{0} +\setcounter{savedlistb}{0} +\setcounter{listc}{0} +\setcounter{savedlistc}{0} +\setcounter{listd}{0} +\setcounter{savedlistd}{0} +\setcounter{liste}{0} +\setcounter{savedliste}{0} +\setcounter{listf}{0} +\setcounter{savedlistf}{0} +\setcounter{location}{0} +\setcounter{savedlocation}{0} +\setcounter{organization}{0} +\setcounter{savedorganization}{0} +\setcounter{origlocation}{0} +\setcounter{savedoriglocation}{0} +\setcounter{origpublisher}{0} +\setcounter{savedorigpublisher}{0} +\setcounter{publisher}{0} +\setcounter{savedpublisher}{0} +\setcounter{language}{0} +\setcounter{savedlanguage}{0} +\setcounter{origlanguage}{0} +\setcounter{savedoriglanguage}{0} +\setcounter{pageref}{0} +\setcounter{savedpageref}{0} +\setcounter{textcitecount}{0} +\setcounter{textcitetotal}{0} +\setcounter{textcitemaxnames}{0} +\setcounter{biburlbigbreakpenalty}{100} +\setcounter{biburlbreakpenalty}{200} +\setcounter{biburlnumpenalty}{0} +\setcounter{biburlucpenalty}{0} +\setcounter{biburllcpenalty}{0} +\setcounter{smartand}{1} +\setcounter{bbx:relatedcount}{0} +\setcounter{bbx:relatedtotal}{0} +\setcounter{vrcnt}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} +\setcounter{lstnumber}{1} +\setcounter{FancyVerbLine}{0} +\setcounter{AM@survey}{0} +\setcounter{@todonotes@numberoftodonotes}{9} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +} diff --git a/thesis/content/50_evaluation.tex b/thesis/content/50_evaluation.tex new file mode 100644 index 0000000..28f6fdc --- /dev/null +++ b/thesis/content/50_evaluation.tex @@ -0,0 +1,21 @@ +\chapter{Evaluation} +\label{sec:evaluation} + +% Zu jeder Arbeit in unserem Bereich gehört eine Leistungsbewertung. Aus +% diesem Kapitel sollte hervorgehen, welche Methoden angewandt worden, +% die Leistungsfähigkeit zu bewerten und welche Ergebnisse dabei erzielt +% wurden. Wichtig ist es, dem Leser nicht nur ein paar Zahlen +% hinzustellen, sondern auch eine Diskussion der Ergebnisse +% vorzunehmen. Es wird empfohlen zunächst die eigenen Erwartungen +% bezüglich der Ergebnisse zu erläutern und anschließend eventuell +% festgestellte Abweichungen zu erklären. + +\ldots evaluation \ldots + +\todo{write evaluation} + +\cleardoublepage + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: diff --git a/thesis/content/60_futurework.aux b/thesis/content/60_futurework.aux new file mode 100644 index 0000000..afbe574 --- /dev/null +++ b/thesis/content/60_futurework.aux @@ -0,0 +1,154 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Future Work}{11}{chapter.6}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{sec:futurework}{{6}{11}{Future Work}{chapter.6}{}} +\@writefile{tdo}{\contentsline {todo}{write future work}{11}{section*.18}\protected@file@percent } +\@setckpt{content/60_futurework}{ +\setcounter{page}{13} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{6} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{tabx@nest}{0} +\setcounter{listtotal}{0} +\setcounter{listcount}{0} +\setcounter{liststart}{0} +\setcounter{liststop}{0} +\setcounter{citecount}{0} +\setcounter{citetotal}{0} +\setcounter{multicitecount}{0} +\setcounter{multicitetotal}{0} +\setcounter{instcount}{6} +\setcounter{maxnames}{3} +\setcounter{minnames}{1} +\setcounter{maxitems}{3} +\setcounter{minitems}{1} +\setcounter{citecounter}{0} +\setcounter{maxcitecounter}{0} +\setcounter{savedcitecounter}{0} +\setcounter{uniquelist}{0} +\setcounter{uniquename}{0} +\setcounter{refsection}{0} +\setcounter{refsegment}{0} +\setcounter{maxextratitle}{0} +\setcounter{maxextratitleyear}{0} +\setcounter{maxextraname}{0} +\setcounter{maxextradate}{0} +\setcounter{maxextraalpha}{0} +\setcounter{abbrvpenalty}{50} +\setcounter{highnamepenalty}{50} +\setcounter{lownamepenalty}{25} +\setcounter{maxparens}{3} +\setcounter{parenlevel}{0} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\setcounter{afterword}{0} +\setcounter{savedafterword}{0} +\setcounter{annotator}{0} +\setcounter{savedannotator}{0} +\setcounter{author}{0} +\setcounter{savedauthor}{0} +\setcounter{bookauthor}{0} +\setcounter{savedbookauthor}{0} +\setcounter{commentator}{0} +\setcounter{savedcommentator}{0} +\setcounter{editor}{0} +\setcounter{savededitor}{0} +\setcounter{editora}{0} +\setcounter{savededitora}{0} +\setcounter{editorb}{0} +\setcounter{savededitorb}{0} +\setcounter{editorc}{0} +\setcounter{savededitorc}{0} +\setcounter{foreword}{0} +\setcounter{savedforeword}{0} +\setcounter{holder}{0} +\setcounter{savedholder}{0} +\setcounter{introduction}{0} +\setcounter{savedintroduction}{0} +\setcounter{namea}{0} +\setcounter{savednamea}{0} +\setcounter{nameb}{0} +\setcounter{savednameb}{0} +\setcounter{namec}{0} +\setcounter{savednamec}{0} +\setcounter{translator}{0} +\setcounter{savedtranslator}{0} +\setcounter{shortauthor}{0} +\setcounter{savedshortauthor}{0} +\setcounter{shorteditor}{0} +\setcounter{savedshorteditor}{0} +\setcounter{labelname}{0} +\setcounter{savedlabelname}{0} +\setcounter{institution}{0} +\setcounter{savedinstitution}{0} +\setcounter{lista}{0} +\setcounter{savedlista}{0} +\setcounter{listb}{0} +\setcounter{savedlistb}{0} +\setcounter{listc}{0} +\setcounter{savedlistc}{0} +\setcounter{listd}{0} +\setcounter{savedlistd}{0} +\setcounter{liste}{0} +\setcounter{savedliste}{0} +\setcounter{listf}{0} +\setcounter{savedlistf}{0} +\setcounter{location}{0} +\setcounter{savedlocation}{0} +\setcounter{organization}{0} +\setcounter{savedorganization}{0} +\setcounter{origlocation}{0} +\setcounter{savedoriglocation}{0} +\setcounter{origpublisher}{0} +\setcounter{savedorigpublisher}{0} +\setcounter{publisher}{0} +\setcounter{savedpublisher}{0} +\setcounter{language}{0} +\setcounter{savedlanguage}{0} +\setcounter{origlanguage}{0} +\setcounter{savedoriglanguage}{0} +\setcounter{pageref}{0} +\setcounter{savedpageref}{0} +\setcounter{textcitecount}{0} +\setcounter{textcitetotal}{0} +\setcounter{textcitemaxnames}{0} +\setcounter{biburlbigbreakpenalty}{100} +\setcounter{biburlbreakpenalty}{200} +\setcounter{biburlnumpenalty}{0} +\setcounter{biburlucpenalty}{0} +\setcounter{biburllcpenalty}{0} +\setcounter{smartand}{1} +\setcounter{bbx:relatedcount}{0} +\setcounter{bbx:relatedtotal}{0} +\setcounter{vrcnt}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} +\setcounter{lstnumber}{1} +\setcounter{FancyVerbLine}{0} +\setcounter{AM@survey}{0} +\setcounter{@todonotes@numberoftodonotes}{10} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +} diff --git a/thesis/content/60_futurework.tex b/thesis/content/60_futurework.tex new file mode 100644 index 0000000..2885533 --- /dev/null +++ b/thesis/content/60_futurework.tex @@ -0,0 +1,12 @@ +\chapter{Future Work} +\label{sec:futurework} + +\ldots future work \ldots + +\todo{write future work} + +\cleardoublepage + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: diff --git a/thesis/content/70_conclusion.aux b/thesis/content/70_conclusion.aux new file mode 100644 index 0000000..3e2f295 --- /dev/null +++ b/thesis/content/70_conclusion.aux @@ -0,0 +1,154 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Conclusion And Outlook}{13}{chapter.7}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{lol}{\addvspace {10\p@ }} +\newlabel{sec:conclusion}{{7}{13}{Conclusion And Outlook}{chapter.7}{}} +\@writefile{tdo}{\contentsline {todo}{write conclusion}{13}{section*.19}\protected@file@percent } +\@setckpt{content/70_conclusion}{ +\setcounter{page}{15} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{7} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{tabx@nest}{0} +\setcounter{listtotal}{0} +\setcounter{listcount}{0} +\setcounter{liststart}{0} +\setcounter{liststop}{0} +\setcounter{citecount}{0} +\setcounter{citetotal}{0} +\setcounter{multicitecount}{0} +\setcounter{multicitetotal}{0} +\setcounter{instcount}{6} +\setcounter{maxnames}{3} +\setcounter{minnames}{1} +\setcounter{maxitems}{3} +\setcounter{minitems}{1} +\setcounter{citecounter}{0} +\setcounter{maxcitecounter}{0} +\setcounter{savedcitecounter}{0} +\setcounter{uniquelist}{0} +\setcounter{uniquename}{0} +\setcounter{refsection}{0} +\setcounter{refsegment}{0} +\setcounter{maxextratitle}{0} +\setcounter{maxextratitleyear}{0} +\setcounter{maxextraname}{0} +\setcounter{maxextradate}{0} +\setcounter{maxextraalpha}{0} +\setcounter{abbrvpenalty}{50} +\setcounter{highnamepenalty}{50} +\setcounter{lownamepenalty}{25} +\setcounter{maxparens}{3} +\setcounter{parenlevel}{0} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\setcounter{afterword}{0} +\setcounter{savedafterword}{0} +\setcounter{annotator}{0} +\setcounter{savedannotator}{0} +\setcounter{author}{0} +\setcounter{savedauthor}{0} +\setcounter{bookauthor}{0} +\setcounter{savedbookauthor}{0} +\setcounter{commentator}{0} +\setcounter{savedcommentator}{0} +\setcounter{editor}{0} +\setcounter{savededitor}{0} +\setcounter{editora}{0} +\setcounter{savededitora}{0} +\setcounter{editorb}{0} +\setcounter{savededitorb}{0} +\setcounter{editorc}{0} +\setcounter{savededitorc}{0} +\setcounter{foreword}{0} +\setcounter{savedforeword}{0} +\setcounter{holder}{0} +\setcounter{savedholder}{0} +\setcounter{introduction}{0} +\setcounter{savedintroduction}{0} +\setcounter{namea}{0} +\setcounter{savednamea}{0} +\setcounter{nameb}{0} +\setcounter{savednameb}{0} +\setcounter{namec}{0} +\setcounter{savednamec}{0} +\setcounter{translator}{0} +\setcounter{savedtranslator}{0} +\setcounter{shortauthor}{0} +\setcounter{savedshortauthor}{0} +\setcounter{shorteditor}{0} +\setcounter{savedshorteditor}{0} +\setcounter{labelname}{0} +\setcounter{savedlabelname}{0} +\setcounter{institution}{0} +\setcounter{savedinstitution}{0} +\setcounter{lista}{0} +\setcounter{savedlista}{0} +\setcounter{listb}{0} +\setcounter{savedlistb}{0} +\setcounter{listc}{0} +\setcounter{savedlistc}{0} +\setcounter{listd}{0} +\setcounter{savedlistd}{0} +\setcounter{liste}{0} +\setcounter{savedliste}{0} +\setcounter{listf}{0} +\setcounter{savedlistf}{0} +\setcounter{location}{0} +\setcounter{savedlocation}{0} +\setcounter{organization}{0} +\setcounter{savedorganization}{0} +\setcounter{origlocation}{0} +\setcounter{savedoriglocation}{0} +\setcounter{origpublisher}{0} +\setcounter{savedorigpublisher}{0} +\setcounter{publisher}{0} +\setcounter{savedpublisher}{0} +\setcounter{language}{0} +\setcounter{savedlanguage}{0} +\setcounter{origlanguage}{0} +\setcounter{savedoriglanguage}{0} +\setcounter{pageref}{0} +\setcounter{savedpageref}{0} +\setcounter{textcitecount}{0} +\setcounter{textcitetotal}{0} +\setcounter{textcitemaxnames}{0} +\setcounter{biburlbigbreakpenalty}{100} +\setcounter{biburlbreakpenalty}{200} +\setcounter{biburlnumpenalty}{0} +\setcounter{biburlucpenalty}{0} +\setcounter{biburllcpenalty}{0} +\setcounter{smartand}{1} +\setcounter{bbx:relatedcount}{0} +\setcounter{bbx:relatedtotal}{0} +\setcounter{vrcnt}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} +\setcounter{lstnumber}{1} +\setcounter{FancyVerbLine}{0} +\setcounter{AM@survey}{0} +\setcounter{@todonotes@numberoftodonotes}{11} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +} diff --git a/thesis/content/70_conclusion.tex b/thesis/content/70_conclusion.tex new file mode 100644 index 0000000..4535b08 --- /dev/null +++ b/thesis/content/70_conclusion.tex @@ -0,0 +1,27 @@ +\chapter{Conclusion And Outlook} +\label{sec:conclusion} + +% Schlußfolgerungen, Fragen, Ausblicke + +% Dieses Kapitel ist sicherlich das am Schwierigsten zu schreibende. Es +% dient einer gerafften Zusammenfassung dessen, was man gelernt hat. Es +% ist möglicherweise gespickt von Rückwärtsverweisen in den Text, um dem +% faulen aber interessierten Leser (der Regelfall) doch noch einmal die +% Chance zu geben, sich etwas fundierter weiterzubilden. Manche guten +% Arbeiten werfen mehr Probleme auf als sie lösen. Dies darf man ruhig +% zugeben und diskutieren. Man kann gegebenenfalls auch schreiben, was +% man in dieser Sache noch zu tun gedenkt oder den Nachfolgern ein paar +% Tips geben. Aber man sollte nicht um jeden Preis Fragen, die gar nicht +% da sind, mit Gewalt aufbringen und dem Leser suggerieren, wie +% weitsichtig man doch ist. Dieses Kapitel muß kurz sein, damit es +% gelesen wird. + +\ldots conclusion \ldots + +\todo{write conclusion} + +\cleardoublepage + +%%% Local Variables: +%%% TeX-master: "diplom" +%%% End: diff --git a/thesis/default.nix b/thesis/default.nix new file mode 100644 index 0000000..a7c485d --- /dev/null +++ b/thesis/default.nix @@ -0,0 +1 @@ +(import ./nix/release.nix {}).pdf diff --git a/thesis/gosh b/thesis/gosh new file mode 160000 index 0000000..99408ea --- /dev/null +++ b/thesis/gosh @@ -0,0 +1 @@ +Subproject commit 99408ea6326385817d54b1c94f8b6f8b43362953 diff --git a/thesis/images/bachelor-aufgabe.pdf b/thesis/images/bachelor-aufgabe.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96219879e11caec61862e407eb9e7b7e7f8bbcb6 GIT binary patch literal 33179 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⁡U1019e*$DilYdHl|kn-5ss5 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//archive/.tar.gz" + }, + "nixpkgs": { + "branch": "release-22.11", + "description": "Nix Packages collection", + "homepage": "", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "62ffdb32823e8d8caca00d0d75ac8e02212de76b", + "sha256": "0nfz26f2lc75av8ijvavq3ajq6cqwmlkn62fcy76222v9hyhqdcy", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/62ffdb32823e8d8caca00d0d75ac8e02212de76b.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + } +} diff --git a/thesis/nix/sources.nix b/thesis/nix/sources.nix new file mode 100644 index 0000000..23ab29b --- /dev/null +++ b/thesis/nix/sources.nix @@ -0,0 +1,197 @@ +# This file has been generated by Niv. + +let + + # + # The fetchers. fetch_ fetches specs of type . + # + + fetch_file = pkgs: name: spec: + let + name' = sanitizeName name + "-src"; + in + if spec.builtin or true then + builtins_fetchurl { inherit (spec) url sha256; name = name'; } + else + pkgs.fetchurl { inherit (spec) url sha256; name = name'; }; + + fetch_tarball = pkgs: name: spec: + let + name' = sanitizeName name + "-src"; + in + if spec.builtin or true then + builtins_fetchTarball { name = name'; inherit (spec) url sha256; } + else + pkgs.fetchzip { name = name'; inherit (spec) url sha256; }; + + fetch_git = name: spec: + let + ref = + if spec ? ref then spec.ref else + if spec ? branch then "refs/heads/${spec.branch}" else + if spec ? tag then "refs/tags/${spec.tag}" else + abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"; + submodules = if spec ? submodules then spec.submodules else false; + submoduleArg = + let + nixSupportsSubmodules = builtins.compareVersions builtins.nixVersion "2.4" >= 0; + emptyArgWithWarning = + if submodules == true + then + builtins.trace + ( + "The niv input \"${name}\" uses submodules " + + "but your nix's (${builtins.nixVersion}) builtins.fetchGit " + + "does not support them" + ) + { } + else { }; + in + if nixSupportsSubmodules + then { inherit submodules; } + else emptyArgWithWarning; + in + builtins.fetchGit + ({ url = spec.repo; inherit (spec) rev; inherit ref; } // submoduleArg); + + fetch_local = spec: spec.path; + + fetch_builtin-tarball = name: throw + ''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=tarball -a builtin=true''; + + fetch_builtin-url = name: throw + ''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=file -a builtin=true''; + + # + # Various helpers + # + + # https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695 + sanitizeName = name: + ( + concatMapStrings (s: if builtins.isList s then "-" else s) + ( + builtins.split "[^[:alnum:]+._?=-]+" + ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name) + ) + ); + + # The set of packages used when specs are fetched using non-builtins. + mkPkgs = sources: system: + let + sourcesNixpkgs = + import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; }; + hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath; + hasThisAsNixpkgsPath = == ./.; + in + if builtins.hasAttr "nixpkgs" sources + then sourcesNixpkgs + else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then + import { } + else + abort + '' + Please specify either (through -I or NIX_PATH=nixpkgs=...) or + add a package called "nixpkgs" to your sources.json. + ''; + + # The actual fetching function. + fetch = pkgs: name: spec: + + if ! builtins.hasAttr "type" spec then + abort "ERROR: niv spec ${name} does not have a 'type' attribute" + else if spec.type == "file" then fetch_file pkgs name spec + else if spec.type == "tarball" then fetch_tarball pkgs name spec + else if spec.type == "git" then fetch_git name spec + else if spec.type == "local" then fetch_local spec + else if spec.type == "builtin-tarball" then fetch_builtin-tarball name + else if spec.type == "builtin-url" then fetch_builtin-url name + else + abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}"; + + # If the environment variable NIV_OVERRIDE_${name} is set, then use + # the path directly as opposed to the fetched source. + replace = name: drv: + let + saneName = stringAsChars (c: if isNull (builtins.match "[a-zA-Z0-9]" c) then "_" else c) name; + ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}"; + in + if ersatz == "" then drv else + # this turns the string into an actual Nix path (for both absolute and + # relative paths) + if builtins.substring 0 1 ersatz == "/" then /. + ersatz else /. + builtins.getEnv "PWD" + "/${ersatz}"; + + # Ports of functions for older nix versions + + # a Nix version of mapAttrs if the built-in doesn't exist + mapAttrs = builtins.mapAttrs or ( + f: set: with builtins; + listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)) + ); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295 + range = first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257 + stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1)); + + # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269 + stringAsChars = f: s: concatStrings (map f (stringToCharacters s)); + concatMapStrings = f: list: concatStrings (map f list); + concatStrings = builtins.concatStringsSep ""; + + # https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331 + optionalAttrs = cond: as: if cond then as else { }; + + # fetchTarball version that is compatible between all the versions of Nix + builtins_fetchTarball = { url, name ? null, sha256 }@attrs: + let + inherit (builtins) lessThan nixVersion fetchTarball; + in + if lessThan nixVersion "1.12" then + fetchTarball ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) + else + fetchTarball attrs; + + # fetchurl version that is compatible between all the versions of Nix + builtins_fetchurl = { url, name ? null, sha256 }@attrs: + let + inherit (builtins) lessThan nixVersion fetchurl; + in + if lessThan nixVersion "1.12" then + fetchurl ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) + else + fetchurl attrs; + + # Create the final "sources" from the config + mkSources = config: + mapAttrs + ( + name: spec: + if builtins.hasAttr "outPath" spec + then + abort + "The values in sources.json should not have an 'outPath' attribute" + else + spec // { outPath = replace name (fetch config.pkgs name spec); } + ) + config.sources; + + # The "config" used by the fetchers + mkConfig = + { sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null + , sources ? if isNull sourcesFile then { } else builtins.fromJSON (builtins.readFile sourcesFile) + , system ? builtins.currentSystem + , pkgs ? mkPkgs sources system + }: rec { + # The sources, i.e. the attribute set of spec name to spec + inherit sources; + + # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers + inherit pkgs; + }; + +in +mkSources (mkConfig { }) // { __functor = _: settings: mkSources (mkConfig settings); } diff --git a/thesis/nix/tex-toolchain.nix b/thesis/nix/tex-toolchain.nix new file mode 100644 index 0000000..fa2ad79 --- /dev/null +++ b/thesis/nix/tex-toolchain.nix @@ -0,0 +1,14 @@ +{ pkgs }: +with pkgs; +texlive.combine { + inherit (texlive) scheme-small + biber + biblatex + csquotes + hyphenat + lastpage + latexmk + siunitx + todonotes + xpatch; +} diff --git a/thesis/own.bib b/thesis/own.bib new file mode 100644 index 0000000..c3b62f0 --- /dev/null +++ b/thesis/own.bib @@ -0,0 +1,74 @@ +% This file was created with JabRef 2.9.2. +% Encoding: UTF-8 + +@INPROCEEDINGS{becher04:_feurig_hacken_mit_firew, + author = {Michael Becher and Maximillian Dornseif}, + title = {{Feuriges Hacken - Spaß mit Firewire}}, + booktitle = {21C3: Proceedings of the 21st Chaos Communication Congress}, + date = {2004-12} +} + +@CONFERENCE{bellard2005qfa, + author = {Fabrice Bellard}, + title = {{QEMU, a fast and portable dynamic translator}}, + booktitle = {Proceedings of the USENIX Annual Technical Conference, FREENIX Track}, + date = {2005}, + pages = {41--46} +} + +@INPROCEEDINGS{boileau06, + author = {Adam Boileau}, + title = {{Hit by a Bus: Physical Access Attacks with Firewire}}, + booktitle = {RUXCON}, + date = {2006} +} + +@BOOK{frederick95, + author = {Brooks,Jr., Frederick P.}, + title = {The mythical man-month (anniversary ed.)}, + date = {1995}, + publisher = {Addison-Wesley Longman Publishing Co., Inc.}, + location = {Boston, MA, USA}, + isbn = {0-201-83595-9} +} + +@ARTICLE{collins97a, + author = {Robert R. Collins}, + title = {{In-Circuit Emulation: How the Microprocessor Evolved Over Time}}, + date = {1997-09}, + journal = {Dr. Dobbs Journal} +} + +@ARTICLE{feske07, + author = {Norman Feske}, + title = {{A case study on the cost and benefit of dynamic RPC marshalling + for low-level system components}}, + date = {2007}, + volume = {41}, + number = {4}, + pages = {40--48}, + issn = {0163-5980}, + doi = {http://doi.acm.org/10.1145/1278901.1278908}, + journal = {SIGOPS Operating Systems Review}, + location = {New York, NY, USA}, + publisher = {ACM} +} + +@ONLINE{green04, + author = {Tom Green}, + title = {{1394 Kernel Debugging Tips and Tricks}}, + date = {2004}, + url = {http://download.microsoft.com/download/1/8/f/18f8cee2-0b64-41f2-893d-a6f2295b40c8/DW04001_WINHEC2004.ppt}, + note = {Slide presentation at the WinHEC 2004}, + urldate = {2009-06-03} +} + +@PATENT{patent:4819234, + author = {Huber, William S.}, + title = {Operating system debugger}, + number = {4819234}, + date = {1989-04}, + location = {Needham, MA}, + url = {http://www.freepatentsonline.com/4819234.html} +} + diff --git a/thesis/preamble/color.tex b/thesis/preamble/color.tex new file mode 100644 index 0000000..50845b8 --- /dev/null +++ b/thesis/preamble/color.tex @@ -0,0 +1,3 @@ +\definecolor{mygreen}{rgb}{0,0.6,0} +\definecolor{mygray}{rgb}{0.5,0.5,0.5} +\definecolor{mymauve}{rgb}{0.58,0,0.82} diff --git a/thesis/preamble/newcommands.tex b/thesis/preamble/newcommands.tex new file mode 100644 index 0000000..85c53cf --- /dev/null +++ b/thesis/preamble/newcommands.tex @@ -0,0 +1,6 @@ +% some common commands +\newcommand{\drops}{\texorpdfstring{\textsc{Drops}\xspace}{DROPS}} +\newcommand{\LLinux}{\texorpdfstring{L$\!^4$Linux}{L4Linux}} + +\newcommand{\NOVA}{NOVA\xspace} +\newcommand{\QEMU}{QEMU\xspace} diff --git a/thesis/preamble/packages.tex b/thesis/preamble/packages.tex new file mode 100644 index 0000000..2101e12 --- /dev/null +++ b/thesis/preamble/packages.tex @@ -0,0 +1,39 @@ +% You can choose style "numeric" instead which is common in many papers. +% Without "maxbibnames=99" the bibliography entries only contain "First Name et al." +\usepackage[backend=biber,style=alphabetic,alldates=long,maxbibnames=99]{biblatex} + +% FONT SETTINGS & ENCODING +% By default this build setup uses lualatex which supports special characters +% (öäüß<>) out of the box. If you ever want to switch to pdflatex but also +% keep the support for lualatex, add these three packages: +% \usepackage[T1]{fontenc} +% \usepackage[utf8]{luainputenc} +% \usepackage{lmodern} + +\usepackage[nospace]{varioref} % nice refs +\usepackage{csquotes} +\usepackage{graphicx} % graphics +\usepackage{caption} % manipulate fugures +\usepackage{subcaption} % allow for subfigures +% Also checkout "minted" instead of "listings" - looks much nicer and supports +% more languages but requires "pygmentize" to be available on the command line +\usepackage{listings} % nice source code listings +\usepackage{xcolor} +\usepackage{booktabs} % nice tables +\usepackage{microtype} % better looking text borders +\usepackage{siunitx} % unified way of setting values with units +\usepackage{array} +\usepackage{fancybox} % provide nice boxes +\usepackage{fancyvrb} % algorithm-boxes +\usepackage{pdfpages} +\usepackage{hyphenat} +\usepackage{todonotes} +\usepackage{xspace} +\usepackage{setspace} +\usepackage{fancyhdr} % enables cool header line and footer line manipulations +\usepackage{lastpage} % enables the usage of the label "LastPage" to get the + % number of pages with \pageref{LastPage} + +% use this one last +% (redefines some macros for compatibility with KOMAScript) +\usepackage{scrhack} diff --git a/thesis/preamble/style.tex b/thesis/preamble/style.tex new file mode 100644 index 0000000..0a8cca7 --- /dev/null +++ b/thesis/preamble/style.tex @@ -0,0 +1,86 @@ +% Biblatex Style +\setcounter{secnumdepth}{3} % limit enumeration depth +\setcounter{tocdepth}{1} % limit TOC depth + +% Listing Style + +\lstset{ % + frame=shadowbox, + rulesepcolor=\color{blue}, + backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor} + % basicstyle=\footnotesize, % the size of the fonts that are used for the code + breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace + breaklines=true, % sets automatic line breaking + captionpos=b, % sets the caption-position to bottom + commentstyle=\color{mygreen}, % comment style + deletekeywords={...}, % if you want to delete keywords from the given language + escapeinside={\%*}{*)}, % if you want to add LaTeX within your code + extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 + frame=single, % adds a frame around the code + keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) + keywordstyle=\color{blue}, % keyword style + language=C, % the language of the code + % morekeywords={*,...}, % if you want to add more keywords to the set + numbers=left, % where to put the line-numbers; possible values are (none, left, right) + numbersep=7pt, % how far the line-numbers are from the code + numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers + rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) + showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' + showstringspaces=false, % underline spaces within strings only + showtabs=false, % show tabs within strings adding particular underscores + stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered + stringstyle=\color{mymauve}, % string literal style + tabsize=2, % sets default tabsize to 2 spaces + title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title +} + +% Typesetting options +\tolerance 2414 +\hbadness 2414 +\emergencystretch 1.5em +\hfuzz 0.3pt +\widowpenalty=10000 % Hurenkinder +\clubpenalty=10000 % Schusterjungen +\vfuzz \hfuzz +\raggedbottom + +% use nice footnote indentation +\deffootnote[1em]{1em}{1em}{\textsuperscript{\thefootnotemark}\,} + +% ######################################################## + +% - Roman/Serif font for all headings. +% Default is sans-serif which looks kind of unprofessional with the default font family. +% - Packages like titlesec don't work well together with KOMA +% - "disposition" means, that this setting is for all headings (chapter level, section level, ...) +% see: https://mirror.physik.tu-berlin.de/pub/CTAN/macros/latex/contrib/koma-script/doc/scrguide.pdf +\addtokomafont{disposition}{\rmfamily} + +% ######################################################## +% With the fancyhdr package we can let all pages look more professional. +% Each page (except for special ones such as chapters or the cover) will contain a +% header that looks like this: +% +% Chapter %NUM%. %CHAPTER_NAME% 3/10 +% +% On even pages the page number is on the left, on odd pages the page number is on the right. +% +\pagestyle{fancy} +% Reset all existing header styles +\fancyhf{} + +% Even pages (Ex) +% EL: even left: show page number +\fancyhead[EL]{\thepage~/~\pageref{LastPage}} +% ER: even right: show chapter +\fancyhead[ER]{\leftmark} + +% Odd pages (Ox) +% OL: odd left: show page number +\fancyhead[OR]{\thepage~/~\pageref{LastPage}} +% OR: odd right: show chapter +\fancyhead[OL]{\rightmark} + + +% Additionally page number always on the bottom +% \fancyfoot[EC,OC]{\thepage} diff --git a/thesis/shell.nix b/thesis/shell.nix new file mode 100644 index 0000000..8ad673e --- /dev/null +++ b/thesis/shell.nix @@ -0,0 +1,20 @@ +{ sources ? import ./nix/sources.nix +, pkgs ? import sources.nixpkgs { } +}: +let + thisPackage = import ./nix/release.nix { + inherit sources; + inherit pkgs; + }; +in +pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + # convenience for working with nix files + niv + nixpkgs-fmt + ]; + + inputsFrom = [ + thisPackage.pdf + ]; +}