diff --git a/app/Http/Controllers/Assoziator.php b/app/Http/Controllers/Assoziator.php new file mode 100644 index 0000000000000000000000000000000000000000..a461f9a96561aada3aecf68257150b65ecbda10a --- /dev/null +++ b/app/Http/Controllers/Assoziator.php @@ -0,0 +1,122 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use LaravelLocalization; + +class Assoziator extends Controller +{ + public function asso(Request $request){ + $eingabe = $request->input('q', ''); + if(empty($eingabe)){ + return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), '/asso')); + } + + $url = "https://metager.de/meta/meta.ger3?eingabe=" . urlencode($eingabe) . "&out=atom10"; + + $ch = curl_init(); + + curl_setopt_array($ch, array( + CURLOPT_RETURNTRANSFER => 1, + CURLOPT_USERAGENT => $_SERVER["AGENT"], + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_CONNECTTIMEOUT => 10, + CURLOPT_MAXCONNECTS => 500, + CURLOPT_LOW_SPEED_LIMIT => 500, + CURLOPT_LOW_SPEED_TIME => 5, + CURLOPT_TIMEOUT => 10, + CURLOPT_URL => $url, + CURLOPT_HTTPHEADER, array( + "X_FORWARDED_FOR: " . $request->ip() + ) + )); + + + + $response = curl_exec($ch); + $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if($responseCode !== 200) + abort(500, "Server currently not available"); + + + $response = preg_replace("/^<\?.*\?>/s", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>", $response); + $content = simplexml_load_string($response); + + $words = []; + + foreach($content->entry as $entry){ + # + $title = $entry->title->__toString(); + $content = $entry->content->__toString(); + + $n_words = preg_match_all('/([a-zA-Z]|\xC3[\x80-\x96\x98-\xB6\xB8-\xBF]|\xC5[\x92\x93\xA0\xA1\xB8\xBD\xBE]){2,}/', $title, $match_arr); + + $wordsTmp = $match_arr[0]; + $n_words = preg_match_all('/([a-zA-Z]|\xC3[\x80-\x96\x98-\xB6\xB8-\xBF]|\xC5[\x92\x93\xA0\xA1\xB8\xBD\xBE]){2,}/', $content, $match_arr); + + $wordsTmp = array_merge($wordsTmp, $match_arr[0]); + # + + foreach($wordsTmp as $word){ + if(isset($words[$word])){ + $words[$word]++; + }else if(isset($words[ucfirst($word)])){ + $words[ucfirst($word)]++; + }else if(isset($words[strtolower($word)])){ + $words[strtolower($word)]++; + }else{ + $words[$word] = 1; + } + } + + + } + arsort($words); + + $eingabeWords = explode(" ", $eingabe); + foreach($eingabeWords as $eingabeWord){ + unset($words[$eingabeWord]); + unset($words[strtolower($eingabeWord)]); + unset($words[ucfirst($eingabeWord)]); + unset($words[strtoupper($eingabeWord)]); + } + + unset($words["de"]); + unset($words["com"]); + unset($words["wiki"]); + unset($words["Wiki"]); + + // Remove Stopwords + $stopWords = file(storage_path('app/public/stopwords.txt')); + + foreach($stopWords as $stopWord){ + $stopWord = trim($stopWord); + unset($words[$stopWord]); + unset($words[strtolower($stopWord)]); + unset($words[ucfirst($stopWord)]); + } + + $wordCount = 0; + + $i = 1; + $max = 60; + foreach($words as $key => $value){ + if($i > $max) + unset($words[$key]); + $wordCount += $value; + $i++; + } + + return view('assoziator.asso') + ->with('title', trans('titles.asso')) + ->with('navbarFocus', 'dienste') + ->with('words', $words) + ->with('keywords', $eingabe) + ->with('wordCount', $wordCount); + + die(var_dump($words)); + } +} diff --git a/app/Http/Controllers/StartpageController.php b/app/Http/Controllers/StartpageController.php index b7f8608de80b78aa2d3954ff3f1cc8befb797632..aeab97a45fea6967f12fae8f5f09406d84305b67 100644 --- a/app/Http/Controllers/StartpageController.php +++ b/app/Http/Controllers/StartpageController.php @@ -7,6 +7,8 @@ use Illuminate\Http\Request; use Jenssegers\Agent\Agent; use LaravelLocalization; use Response; +use DB; +use Log; class StartpageController extends Controller { @@ -41,6 +43,14 @@ class StartpageController extends Controller if ($lang === 'de' || $lang === "en") { $lang = 'all'; } + + # Sponsorenlinks + $sponsors = []; + try{ + $sponsors = DB::table('sponsorenlinks')->where('langcode', 'de')->orderByRaw('LENGTH(linktext)', 'ASC')->get(); + } catch(\Illuminate\Database\QueryException $e){ + Log::info($e); + } return view('index') ->with('title', trans('titles.index')) @@ -52,6 +62,7 @@ class StartpageController extends Controller ->with('request', $request->input('request', 'GET')) ->with('option_values', $option_values) ->with('autocomplete', $autocomplete) + ->with('sponsors', $sponsors) ->with('pluginmodal', $request->input('plugin-modal', 'off')); } diff --git a/app/Http/Middleware/HumanVerification.php b/app/Http/Middleware/HumanVerification.php index 0be2058000507fb79acf245d34a706eeb057117e..7aa3bc8bd8c09103650076e3b07dac62b186a706 100644 --- a/app/Http/Middleware/HumanVerification.php +++ b/app/Http/Middleware/HumanVerification.php @@ -126,7 +126,8 @@ class HumanVerification } catch (\Illuminate\Database\QueryException $e) { // Failure in contacting metager3.de } - $request->request->add(['verification_id' => $uid, 'verification_count' => $unusedResultPages]); + if(isset($uid) && isset($unusedResultPages)) + $request->request->add(['verification_id' => $uid, 'verification_count' => $unusedResultPages]); return $next($request); } } diff --git a/package-lock.json b/package-lock.json index 06ef39291a6ad5930716ac0f7fe80d693ebfb334..bb844cee5c3e9f281165dd65faafb829358ad861 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4366,6 +4366,7 @@ "version": "0.0.9", "bundled": true, "dev": true, + "optional": true, "requires": { "inherits": "~2.0.0" } @@ -4390,7 +4391,8 @@ "buffer-shims": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "caseless": { "version": "0.12.0", @@ -4407,12 +4409,14 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "combined-stream": { "version": "1.0.5", "bundled": true, "dev": true, + "optional": true, "requires": { "delayed-stream": "~1.0.0" } @@ -4425,17 +4429,20 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "cryptiles": { "version": "2.0.5", "bundled": true, "dev": true, + "optional": true, "requires": { "boom": "2.x.x" } @@ -4475,7 +4482,8 @@ "delayed-stream": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "delegates": { "version": "1.0.0", @@ -4507,7 +4515,8 @@ "extsprintf": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "forever-agent": { "version": "0.6.1", @@ -4630,6 +4639,7 @@ "version": "3.1.3", "bundled": true, "dev": true, + "optional": true, "requires": { "boom": "2.x.x", "cryptiles": "2.x.x", @@ -4677,6 +4687,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "1.0.1" } @@ -4690,7 +4701,8 @@ "isarray": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "isstream": { "version": "0.1.2", @@ -4763,12 +4775,14 @@ "mime-db": { "version": "1.27.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "mime-types": { "version": "2.1.15", "bundled": true, "dev": true, + "optional": true, "requires": { "mime-db": "1.27.0" } @@ -4844,7 +4858,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "oauth-sign": { "version": "0.8.2", @@ -4902,7 +4917,8 @@ "process-nextick-args": { "version": "1.0.7", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "punycode": { "version": "1.4.1", @@ -4940,6 +4956,7 @@ "version": "2.2.9", "bundled": true, "dev": true, + "optional": true, "requires": { "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", @@ -4991,7 +5008,8 @@ "safe-buffer": { "version": "5.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "semver": { "version": "5.3.0", @@ -5015,6 +5033,7 @@ "version": "1.0.9", "bundled": true, "dev": true, + "optional": true, "requires": { "hoek": "2.x.x" } @@ -5048,6 +5067,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5058,6 +5078,7 @@ "version": "1.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.0.1" } @@ -5086,6 +5107,7 @@ "version": "2.2.1", "bundled": true, "dev": true, + "optional": true, "requires": { "block-stream": "*", "fstream": "^1.0.2", @@ -5141,7 +5163,8 @@ "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "uuid": { "version": "3.0.1", diff --git a/resources/assets/less/metager/general.less b/resources/assets/less/metager/general.less index 8c0ccc2ef22e74a9e1b6804c941c98aa0eab8ec4..967d99ebf4bbe9cff7b73b4fb2462d77d8722790 100644 --- a/resources/assets/less/metager/general.less +++ b/resources/assets/less/metager/general.less @@ -1,6 +1,6 @@ /* Default Font */ -* { +body { font-family: Liberation Sans, sans-serif; } @@ -82,7 +82,7 @@ p { .first-last-child-margin-fix; } -* { +body { font-size: @default-font-size; .first-last-child-margin-fix; } diff --git a/resources/lang/de/asso.php b/resources/lang/de/asso.php new file mode 100644 index 0000000000000000000000000000000000000000..c1c451a6452262e3775bbfb515d599c017392d08 --- /dev/null +++ b/resources/lang/de/asso.php @@ -0,0 +1,8 @@ +<?php +return [ + 'head.1' => 'MetaGer Assoziator', + '1.1' => 'Wenn Sie mit Ihren Suchwörtern nicht weiter kommen: Vielleicht fehlen Ihnen die richtigen? Fragen Sie unseren Assoziator: Geben Sie hier einfach ein oder mehrere Wörter ein, zu denen Sie neue oder bessere Begriffe suchen. Versuchen Sie mit den dann gefundenen Wörtern eine neue Suche indem Sie das neue Wort in der Ausgabeseite anklicken. Es gilt unsere', + '1.2' => 'Datenschutzerklärung', + 'reasso.title' => 'Diesen Begriff assoziieren', + 'searchasso.title' => 'MetaGer Suche nach diesem Begriff durchführen', +]; \ No newline at end of file diff --git a/resources/lang/de/titles.php b/resources/lang/de/titles.php index 9d54b1767b444027dd6c2c8205b50af101edfc37..ee24ab4f4d68da59844250489436e2b8c7b95381 100644 --- a/resources/lang/de/titles.php +++ b/resources/lang/de/titles.php @@ -22,4 +22,5 @@ return [ 'faktencheck' => 'Fakten-Prüfung contra Fake-News', 'jugendschutz' => 'Jugendschutz', 'ad-info' => 'Werbung bei MetaGer', + 'asso' => 'Assoziator - MetaGer', ]; diff --git a/resources/views/assoziator/asso.blade.php b/resources/views/assoziator/asso.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..85599633663ec9a6498774d3ac5e68c5b8c495e6 --- /dev/null +++ b/resources/views/assoziator/asso.blade.php @@ -0,0 +1,68 @@ +@extends('layouts.subPages') + +@section('title', $title ) + +@section('content') + <style> + form div.input-group-addon button { + padding: 9px; + } + + .reasso { + color: rgb(0, 102, 204); + } + .reasso:hover { + color: red; + } + + td.association { + display: flex; + } + .asso-search-link { + margin-right: 10px; + } + </style> + <h1 class="page-title">{{ trans('asso.head.1') }}</h1> + <div class="card-heavy"> + <p>{{ trans('asso.1.1') }} <a href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), '/') }}" target="_blank">{{ trans('asso.1.2') }}</a>.</p> + + <form method="post"> + <div class="input-group"> + <input type="text" class="form-control" placeholder="Zu assoziierender Begriff" @if(isset($keywords)) value="{{$keywords}}" @endif name="q" required autofocus/> + <div class="input-group-addon"><button type="submit"><i class="fa fa-search" aria-hidden="true"></i></button></div> + </div> + </form> + </div> + @if(isset($words)) + <div class="card-heavy"> + <div class="table-responsive"> + <table class="table"> + <caption>Assoziationen für "{{ $keywords }}"</caption> + <thead> + <tr> + <th>#</th> + <th>Assoziation</th> + <th>Relevanz</th> + </tr> + </thead> + <tbody> + @php $i = 1; @endphp + @foreach($words as $key => $value) + <tr> + <td>{{ $i }}</td> + <td class="association"> + <a class="asso-search-link" href="{{ action('MetaGerSearch@search', ['eingabe' => $key]) }}" title="{{ trans('asso.searchasso.title') }}"><i class="fa fa-search" aria-hidden="true"></i></a> + <form method="POST"> + <button name="q" value="{{ $key }}" class="reasso" type="submit" title="{{ trans('asso.reasso.title') }}">{{ $key }}</button> + </form> + </td> + <td>{{ round(($value / $wordCount) * 100, 2) }}%</td> + @php $i++; @endphp + </tr> + @endforeach + </tbody> + </table> + </div> + </div> + @endif +@endsection diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 7afe1cfb42547e0e1e206d79445b24300d10d63e..5d03366064cd69f3056e22e82fc9ae0db3d1f787 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -25,13 +25,11 @@ <div id="sponsors"> <h2>{{ trans('index.sponsors.head.2') }}</h2> <ul class="startpage"> - @if (getenv('DB_CONNECTION')==='mysql') - @foreach(DB::table('sponsorenlinks')->where('langcode', 'de')->orderByRaw('LENGTH(linktext)', 'ASC')->get() as $link) - <li class="sponsor"> - <a href="{{ $link->link }}" target="_blank" rel="noopener"><p>{{ $link->linktext }}</p> <i class="fa fa-external-link"></i></a> - </li> - @endforeach - @endif + @foreach($sponsors as $link) + <li class="sponsor"> + <a href="{{ $link->link }}" target="_blank" rel="noopener"><p>{{ $link->linktext }}</p> <i class="fa fa-external-link"></i></a> + </li> + @endforeach </ul> </div> </div> diff --git a/resources/views/parts/sidebar.blade.php b/resources/views/parts/sidebar.blade.php index ed5e2fbf4dd6c03460f94ce2cdb5a8adc17bcca8..2058f23e2147967b38a83cfdf0d7fd81c7913938 100644 --- a/resources/views/parts/sidebar.blade.php +++ b/resources/views/parts/sidebar.blade.php @@ -26,7 +26,7 @@ <a href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/zitat-suche/") }}" tabindex="227">{{ trans('sidebar.nav22') }}</a> </li> <li> - <a class="inlink" href="https://metager.de/klassik/asso/" tabindex="228">{{ trans('sidebar.nav11') }}</a> + <a href="{{ action('Assoziator@asso') }}" tabindex="228">{{ trans('sidebar.nav11') }}</a> </li> <li> <a href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/app/") }}" tabindex="229">@lang('sidebar.nav25')</a> diff --git a/routes/web.php b/routes/web.php index f1ebb289a2c7cfd5ed37465d92e57eb96ac12300..c46f8d084ed169c783497021c67c15fd4275dedd 100644 --- a/routes/web.php +++ b/routes/web.php @@ -20,6 +20,13 @@ Route::group( Route::get('/', 'StartpageController@loadStartPage'); + Route::get('asso', function(){ + return view('assoziator.asso') + ->with('title', trans('titles.asso')) + ->with('navbarFocus', 'dienste'); + }); + Route::post('asso', 'Assoziator@asso'); + Route::get('img/piwik.png', 'ImageController@generateImage'); Route::get('impressum', function () { diff --git a/storage/app/public/stopwords.txt b/storage/app/public/stopwords.txt new file mode 100644 index 0000000000000000000000000000000000000000..d5ab95c3bc0376826ce3bdd878d99983866146ee --- /dev/null +++ b/storage/app/public/stopwords.txt @@ -0,0 +1,1982 @@ +ab +aber +abermaliges +abermals +abgerufen +abgerufene +abgerufener +abgerufenes +abgesehen +acht +aehnlich +aehnliche +aehnlichem +aehnlichen +aehnlicher +aehnliches +aehnlichste +aehnlichstem +aehnlichsten +aehnlichster +aehnlichstes +aeusserst +aeusserste +aeusserstem +aeussersten +aeusserster +aeusserstes +ähnlich +ähnliche +ähnlichem +ähnlichen +ähnlicher +ähnliches +ähnlichst +ähnlichste +ähnlichstem +ähnlichsten +ähnlichster +ähnlichstes +alle +allein +alleine +allem +allemal +allen +allenfalls +allenthalben +aller +allerdings +allerlei +alles +allesamt +allg +allg. +allgemein +allgemeine +allgemeinem +allgemeinen +allgemeiner +allgemeines +allgemeinste +allgemeinstem +allgemeinsten +allgemeinster +allgemeinstes +allmählich +allzeit +allzu +als +alsbald +also +am +an +and +andauernd +andauernde +andauerndem +andauernden +andauernder +andauerndes +ander +andere +anderem +anderen +anderenfalls +anderer +andererseits +anderes +anderm +andern +andernfalls +anderr +anders +anderst +anderweitig +anderweitige +anderweitigem +anderweitigen +anderweitiger +anderweitiges +anerkannt +anerkannte +anerkannter +anerkanntes +anfangen +anfing +angefangen +angesetze +angesetzt +angesetzten +angesetzter +ans +anscheinend +ansetzen +ansonst +ansonsten +anstatt +anstelle +arbeiten +auch +auf +aufgehört +aufgrund +aufhören +aufhörte +aufzusuchen +augenscheinlich +augenscheinliche +augenscheinlichem +augenscheinlichen +augenscheinlicher +augenscheinliches +augenscheinlichst +augenscheinlichste +augenscheinlichstem +augenscheinlichsten +augenscheinlichster +augenscheinlichstes +aus +ausdrücken +ausdrücklich +ausdrückliche +ausdrücklichem +ausdrücklichen +ausdrücklicher +ausdrückliches +ausdrückt +ausdrückte +ausgenommen +ausgenommene +ausgenommenem +ausgenommenen +ausgenommener +ausgenommenes +ausgerechnet +ausgerechnete +ausgerechnetem +ausgerechneten +ausgerechneter +ausgerechnetes +ausnahmslos +ausnahmslose +ausnahmslosem +ausnahmslosen +ausnahmsloser +ausnahmsloses +außen +ausser +ausserdem +außerhalb +äusserst +äusserste +äusserstem +äussersten +äusserster +äusserstes +author +autor +baelde +bald +bälde +bearbeite +bearbeiten +bearbeitete +bearbeiteten +bedarf +bedürfen +bedurfte +been +befahl +befiehlt +befiehlte +befohlene +befohlens +befragen +befragte +befragten +befragter +begann +beginnen +begonnen +behalten +behielt +bei +beide +beidem +beiden +beider +beiderlei +beides +beim +beinahe +beisammen +beispielsweise +beitragen +beitrugen +bekannt +bekannte +bekannter +bekanntlich +bekanntliche +bekanntlichem +bekanntlichen +bekanntlicher +bekanntliches +bekennen +benutzt +bereits +berichten +berichtet +berichtete +berichteten +besonders +besser +bessere +besserem +besseren +besserer +besseres +bestehen +besteht +bestenfalls +bestimmt +bestimmte +bestimmtem +bestimmten +bestimmter +bestimmtes +beträchtlich +beträchtliche +beträchtlichem +beträchtlichen +beträchtlicher +beträchtliches +betraechtlich +betraechtliche +betraechtlichem +betraechtlichen +betraechtlicher +betraechtliches +betreffend +betreffende +betreffendem +betreffenden +betreffender +betreffendes +bevor +bez +bez. +bezgl +bezgl. +bezueglich +bezüglich +bietet +bin +bis +bisher +bisherige +bisherigem +bisherigen +bisheriger +bisheriges +bislang +bisschen +bist +bitte +bleiben +bleibt +blieb +bloss +böden +boeden +brachte +brachten +brauchen +braucht +bräuchte +bringen +bsp +bsp. +bspw +bspw. +bzw +bzw. +ca +ca. +circa +da +dabei +dadurch +dafuer +dafür +dagegen +daher +dahin +dahingehend +dahingehende +dahingehendem +dahingehenden +dahingehender +dahingehendes +dahinter +damalige +damaligem +damaligen +damaliger +damaliges +damals +damit +danach +daneben +dank +danke +danken +dann +dannen +daran +darauf +daraus +darf +darfst +darin +darüber +darüberhinaus +darueber +darueberhinaus +darum +darunter +das +daß +dass +dasselbe +Dat +davon +davor +dazu +dazwischen +dein +deine +deinem +deinen +deiner +deines +dem +demgegenüber +demgegenueber +demgemaess +demgemäss +demnach +demselben +den +denen +denkbar +denkbare +denkbarem +denkbaren +denkbarer +denkbares +denn +dennoch +denselben +der +derart +derartig +derartige +derartigem +derartigen +derartiger +derem +deren +derer +derjenige +derjenigen +derselbe +derselben +derzeit +derzeitig +derzeitige +derzeitigem +derzeitigen +derzeitiges +des +deshalb +desselben +dessen +dessenungeachtet +desto +desungeachtet +deswegen +dich +die +diejenige +diejenigen +dies +diese +dieselbe +dieselben +diesem +diesen +dieser +dieses +diesseitig +diesseitige +diesseitigem +diesseitigen +diesseitiger +diesseitiges +diesseits +dinge +dir +direkt +direkte +direkten +direkter +doch +doppelt +dort +dorther +dorthin +dran +drauf +drei +dreißig +drin +dritte +drüber +drueber +drum +drunter +du +duerfte +duerften +duerftest +duerftet +dunklen +durch +durchaus +durchweg +durchwegs +dürfen +durfte +dürfte +durften +dürften +durftest +dürftest +durftet +dürftet +eben +ebenfalls +ebenso +ect +ect. +ehe +eher +eheste +ehestem +ehesten +ehester +ehestes +eigen +eigene +eigenem +eigenen +eigener +eigenes +eigenst +eigentlich +eigentliche +eigentlichem +eigentlichen +eigentlicher +eigentliches +ein +einbaün +eine +einem +einen +einer +einerlei +einerseits +eines +einfach +einführen +einführte +einführten +eingesetzt +einig +einige +einigem +einigen +einiger +einigermaßen +einiges +einmal +einmalig +einmalige +einmaligem +einmaligen +einmaliger +einmaliges +eins +einseitig +einseitige +einseitigen +einseitiger +einst +einstmals +einzig +empfunden +ende +entgegen +entlang +entsprechend +entsprechende +entsprechendem +entsprechenden +entsprechender +entsprechendes +entweder +er +ergänze +ergänzen +ergänzte +ergänzten +ergo +erhält +erhalten +erhielt +erhielten +erneut +eröffne +eröffnen +eröffnet +eröffnete +eröffnetes +erscheinen +erst +erste +erstem +ersten +erster +erstere +ersterem +ersteren +ersterer +ersteres +erstes +es +etc +etc. +etliche +etlichem +etlichen +etlicher +etliches +etwa +etwaige +etwas +euch +euer +eure +eurem +euren +eurer +eures +euretwegen +fall +falls +fand +fast +ferner +fertig +finde +finden +findest +findet +folgend +folgende +folgendem +folgenden +folgender +folgendermassen +folgendes +folglich +for +fordern +fordert +forderte +forderten +fort +fortsetzen +fortsetzt +fortsetzte +fortsetzten +fragte +frau +frei +freie +freier +freies +fuer +fuers +fünf +für +fürs +gab +gaenzlich +gaenzliche +gaenzlichem +gaenzlichen +gaenzlicher +gaenzliches +gängig +gängige +gängigen +gängiger +gängiges +ganz +ganze +ganzem +ganzen +ganzer +ganzes +gänzlich +gänzliche +gänzlichem +gänzlichen +gänzlicher +gänzliches +gar +gbr +geb +geben +geblieben +gebracht +gedurft +geehrt +geehrte +geehrten +geehrter +gefallen +gefälligst +gefällt +gefiel +gegeben +gegen +gegenüber +gegenueber +gehabt +gehalten +gehen +geht +gekommen +gekonnt +gemacht +gemaess +gemäss +gemeinhin +gemocht +genau +genommen +genug +gepriesener +gepriesenes +gerade +gern +gesagt +gesehen +gestern +gestrige +getan +geteilt +geteilte +getragen +getrennt +gewesen +gewiss +gewisse +gewissem +gewissen +gewisser +gewissermaßen +gewisses +gewollt +geworden +ggf +ggf. +gib +gibt +gilt +gleich +gleiche +gleichem +gleichen +gleicher +gleiches +gleichsam +gleichste +gleichstem +gleichsten +gleichster +gleichstes +gleichwohl +gleichzeitig +gleichzeitige +gleichzeitigem +gleichzeitigen +gleichzeitiger +gleichzeitiges +glücklicherweise +gluecklicherweise +gmbh +gottseidank +gratulieren +gratuliert +gratulierte +groesstenteils +grösstenteils +gruendlich +gründlich +gut +gute +guten +hab +habe +haben +habt +haette +haeufig +haeufige +haeufigem +haeufigen +haeufiger +haeufigere +haeufigeren +haeufigerer +haeufigeres +halb +hallo +halten +hast +hat +hätt +hatte +hätte +hatten +hätten +hattest +hattet +häufig +häufige +häufigem +häufigen +häufiger +häufigere +häufigeren +häufigerer +häufigeres +hen +her +heraus +herein +herum +heute +heutige +heutigem +heutigen +heutiger +heutiges +hier +hier +hierbei +hiermit +hiesige +hiesigem +hiesigen +hiesiger +hiesiges +hin +hindurch +hinein +hingegen +hinlanglich +hinlänglich +hinten +hintendran +hinter +hinterher +hinterm +hintern +hinunter +hoch +höchst +höchstens +http +hundert +ich +igitt +ihm +ihn +ihnen +ihr +ihre +ihrem +ihren +ihrer +ihres +ihretwegen +ihrige +ihrigen +ihriges +im +immer +immerhin +immerwaehrend +immerwaehrende +immerwaehrendem +immerwaehrenden +immerwaehrender +immerwaehrendes +immerwährend +immerwährende +immerwährendem +immerwährenden +immerwährender +immerwährendes +immerzu +important +in +indem +indessen +Inf. +info +infolge +infolgedessen +information +innen +innerhalb +innerlich +ins +insbesondere +insgeheim +insgeheime +insgeheimer +insgesamt +insgesamte +insgesamter +insofern +inzwischen +irgend +irgendein +irgendeine +irgendeinem +irgendeiner +irgendeines +irgendetwas +irgendjemand +irgendjemandem +irgendwann +irgendwas +irgendwelche +irgendwen +irgendwenn +irgendwer +irgendwie +irgendwo +irgendwohin +ist +ja +jaehrig +jaehrige +jaehrigem +jaehrigen +jaehriger +jaehriges +jährig +jährige +jährigem +jährigen +jähriges +je +jede +jedem +jeden +jedenfalls +jeder +jederlei +jedes +jedesmal +jedoch +jeglichem +jeglichen +jeglicher +jegliches +jemals +jemand +jemandem +jemanden +jemandes +jene +jenem +jenen +jener +jenes +jenseitig +jenseitigem +jenseitiger +jenseits +jetzt +jung +junge +jungem +jungen +junger +junges +kaeumlich +kam +kann +kannst +kaum +käumlich +kein +keine +keinem +keinen +keiner +keinerlei +keines +keineswegs +klar +klare +klaren +klares +klein +kleinen +kleiner +kleines +koennen +koennt +koennte +koennten +koenntest +koenntet +komme +kommen +kommt +konkret +konkrete +konkreten +konkreter +konkretes +könn +können +könnt +konnte +könnte +konnten +könnten +konntest +könntest +konntet +könntet +kuenftig +kuerzlich +kuerzlichst +künftig +kürzlich +kürzlichst +laengst +lag +lagen +langsam +längst +längstens +lassen +laut +lediglich +leer +legen +legte +legten +leicht +leider +lesen +letze +letzte +letzten +letztendlich +letztens +letztere +letzterem +letzterer +letzteres +letztes +letztlich +lichten +liegt +liest +links +mache +machen +machst +macht +machte +machten +mag +magst +mal +man +manch +manche +manchem +manchen +mancher +mancherlei +mancherorts +manches +manchmal +mann +margin +massgebend +massgebende +massgebendem +massgebenden +massgebender +massgebendes +massgeblich +massgebliche +massgeblichem +massgeblichen +massgeblicher +mehr +mehrere +mehrerer +mehrfach +mehrmalig +mehrmaligem +mehrmaliger +mehrmaliges +mein +meine +meinem +meinen +meiner +meines +meinetwegen +meins +meist +meiste +meisten +meistens +meistenteils +meta +mich +mindestens +mir +mit +miteinander +mitgleich +mithin +mitnichten +mittels +mittelst +mitten +mittig +mitunter +mitwohl +mochte +möchte +möchten +möchtest +moechte +moeglich +moeglichst +moeglichste +moeglichstem +moeglichsten +moeglichster +mögen +möglich +mögliche +möglichen +möglicher +möglicherweise +möglichst +möglichste +möglichstem +möglichsten +möglichster +morgen +morgige +muessen +muesst +muesste +muss +müssen +musst +müßt +musste +müsste +mussten +müssten +nach +nachdem +nacher +nachher +nachhinein +nächste +nacht +naechste +naemlich +nahm +nämlich +naturgemaess +naturgemäss +natürlich +ncht +neben +nebenan +nehmen +nein +neu +neue +neuem +neuen +neuer +neuerdings +neuerlich +neuerliche +neuerlichem +neuerlicher +neuerliches +neues +neulich +neun +nicht +nichts +nichtsdestotrotz +nichtsdestoweniger +nie +niemals +niemand +niemandem +niemanden +niemandes +nimm +nimmer +nimmt +nirgends +nirgendwo +noch +noetigenfalls +nötigenfalls +nun +nur +nutzen +nutzt +nützt +nutzung +ob +oben +ober +oberen +oberer +oberhalb +oberste +obersten +oberster +obgleich +obs +obschon +obwohl +oder +oefter +oefters +off +offenkundig +offenkundige +offenkundigem +offenkundigen +offenkundiger +offenkundiges +offensichtlich +offensichtliche +offensichtlichem +offensichtlichen +offensichtlicher +offensichtliches +oft +öfter +öfters +oftmals +ohne +ohnedies +online +paar +partout +per +persoenlich +persoenliche +persoenlichem +persoenlicher +persoenliches +persönlich +persönliche +persönlicher +persönliches +pfui +ploetzlich +ploetzliche +ploetzlichem +ploetzlicher +ploetzliches +plötzlich +plötzliche +plötzlichem +plötzlicher +plötzliches +pro +quasi +reagiere +reagieren +reagiert +reagierte +recht +rechts +regelmäßig +reichlich +reichliche +reichlichem +reichlichen +reichlicher +restlos +restlose +restlosem +restlosen +restloser +restloses +richtiggehend +richtiggehende +richtiggehendem +richtiggehenden +richtiggehender +richtiggehendes +rief +rund +rundheraus +rundum +runter +sage +sagen +sagt +sagte +sagten +sagtest +sagtet +samt +sämtliche +sang +sangen +sattsam +schätzen +schätzt +schätzte +schätzten +scheinbar +scheinen +schlechter +schlicht +schlichtweg +schließlich +schlussendlich +schnell +schon +schreibe +schreiben +schreibens +schreiber +schwerlich +schwerliche +schwerlichem +schwerlichen +schwerlicher +schwerliches +schwierig +sechs +sect +sehe +sehen +sehr +sehrwohl +seht +sei +seid +seien +seiest +seiet +sein +seine +seinem +seinen +seiner +seines +seit +seitdem +seite +seiten +seither +selbe +selben +selber +selbst +selbstredend +selbstredende +selbstredendem +selbstredenden +selbstredender +selbstredendes +seltsamerweise +senke +senken +senkt +senkte +senkten +setzen +setzt +setzte +setzten +sich +sicher +sicherlich +sie +sieben +siebte +siehe +sieht +sind +singen +singt +so +sobald +sodaß +soeben +sofern +sofort +sog +sogar +sogleich +solange +solc +solc hen +solch +solche +solchem +solchen +solcher +solches +soll +sollen +sollst +sollt +sollte +sollten +solltest +solltet +somit +sondern +sonst +sonstig +sonstige +sonstigem +sonstiger +sonstwo +sooft +soviel +soweit +sowie +sowieso +sowohl +später +spielen +startet +startete +starteten +statt +stattdessen +steht +steige +steigen +steigt +stellenweise +stellenweisem +stellenweisen +stets +stieg +stiegen +such +suchen +tages +tat +tät +tatsächlich +tatsächlichen +tatsächlicher +tatsächliches +tatsaechlich +tatsaechlichen +tatsaechlicher +tatsaechliches +tausend +teile +teilen +teilte +teilten +tief +titel +toll +total +trage +tragen +trägt +trotzdem +trug +tun +tust +tut +txt +übel +über +überall +überallhin +überaus +überdies +überhaupt +überll +übermorgen +üblicherweise +übrig +übrigens +ueber +ueberall +ueberallhin +ueberaus +ueberdies +ueberhaupt +uebermorgen +ueblicherweise +uebrig +uebrigens +um +ums +umso +umstaendehalber +umständehalber +unbedingt +unbedingte +unbedingter +unbedingtes +und +unerhoert +unerhoerte +unerhoertem +unerhoerten +unerhoerter +unerhoertes +unerhört +unerhörte +unerhörtem +unerhörten +unerhörter +unerhörtes +ungefähr +ungemein +ungewoehnlich +ungewoehnliche +ungewoehnlichem +ungewoehnlichen +ungewoehnlicher +ungewoehnliches +ungewöhnlich +ungewöhnliche +ungewöhnlichem +ungewöhnlichen +ungewöhnlicher +ungewöhnliches +ungleich +ungleiche +ungleichem +ungleichen +ungleicher +ungleiches +unmassgeblich +unmassgebliche +unmassgeblichem +unmassgeblichen +unmassgeblicher +unmassgebliches +unmoeglich +unmoegliche +unmoeglichem +unmoeglichen +unmoeglicher +unmoegliches +unmöglich +unmögliche +unmöglichen +unmöglicher +unnötig +uns +unsaeglich +unsaegliche +unsaeglichem +unsaeglichen +unsaeglicher +unsaegliches +unsagbar +unsagbare +unsagbarem +unsagbaren +unsagbarer +unsagbares +unsäglich +unsägliche +unsäglichem +unsäglichen +unsäglicher +unsägliches +unse +unsem +unsen +unser +unser +unsere +unserem +unseren +unserer +unseres +unserm +unses +unsre +unsrem +unsren +unsrer +unsres +unstreitig +unstreitige +unstreitigem +unstreitigen +unstreitiger +unstreitiges +unten +unter +unterbrach +unterbrechen +untere +unterem +unteres +unterhalb +unterste +unterster +unterstes +unwichtig +unzweifelhaft +unzweifelhafte +unzweifelhaftem +unzweifelhaften +unzweifelhafter +unzweifelhaftes +usw +usw. +vergangen +vergangene +vergangener +vergangenes +vermag +vermögen +vermutlich +vermutliche +vermutlichem +vermutlichen +vermutlicher +vermutliches +veröffentlichen +veröffentlicher +veröffentlicht +veröffentlichte +veröffentlichten +veröffentlichtes +verrate +verraten +verriet +verrieten +version +versorge +versorgen +versorgt +versorgte +versorgten +versorgtes +viel +viele +vielen +vieler +vielerlei +vieles +vielleicht +vielmalig +vielmals +vier +voellig +voellige +voelligem +voelligen +voelliger +voelliges +voelligst +vollends +völlig +völlige +völligem +völligen +völliger +völliges +völligst +vollstaendig +vollstaendige +vollstaendigem +vollstaendigen +vollstaendiger +vollstaendiges +vollständig +vollständige +vollständigem +vollständigen +vollständiger +vollständiges +vom +von +vor +voran +vorbei +vorgestern +vorher +vorherig +vorherige +vorherigem +vorheriger +vorne +vorüber +vorueber +wachen +waehrend +waehrenddessen +waere +während +währenddessen +wann +war +wär +wäre +waren +wären +warst +wart +warum +was +weder +weg +wegen +weil +weiß +weit +weiter +weitere +weiterem +weiteren +weiterer +weiteres +weiterhin +weitestgehend +weitestgehende +weitestgehendem +weitestgehenden +weitestgehender +weitestgehendes +weitgehend +weitgehende +weitgehendem +weitgehenden +weitgehender +weitgehendes +welche +welchem +welchen +welcher +welches +wem +wen +wenig +wenige +weniger +wenigstens +wenn +wenngleich +wer +werde +werden +werdet +weshalb +wessen +weswegen +wichtig +wie +wieder +wiederum +wieso +wieviel +wieviele +wievieler +wiewohl +will +willst +wir +wird +wirklich +wirklichem +wirklicher +wirkliches +wirst +wo +wobei +wodurch +wofuer +wofür +wogegen +woher +wohin +wohingegen +wohl +wohlgemerkt +wohlweislich +wolle +wollen +wollt +wollte +wollten +wolltest +wolltet +womit +womoeglich +womoegliche +womoeglichem +womoeglichen +womoeglicher +womoegliches +womöglich +womögliche +womöglichem +womöglichen +womöglicher +womögliches +woran +woraufhin +woraus +worden +worin +wuerde +wuerden +wuerdest +wuerdet +wurde +würde +wurden +würden +wurdest +würdest +wurdet +würdet +www +x +z.B. +zahlreich +zahlreichem +zahlreicher +zB +zb. +zehn +zeitweise +zeitweisem +zeitweisen +zeitweiser +ziehen +zieht +ziemlich +ziemliche +ziemlichem +ziemlichen +ziemlicher +ziemliches +zirka +zog +zogen +zu +zudem +zuerst +zufolge +zugleich +zuletzt +zum +zumal +zumeist +zumindest +zunächst +zunaechst +zur +zurück +zurueck +zusammen +zusehends +zuviel +zuviele +zuvieler +zuweilen +zwanzig +zwar +zwei +zweifelsfrei +zweifelsfreie +zweifelsfreiem +zweifelsfreien +zweifelsfreier +zweifelsfreies +zwischen +zwölf +i +me +my +myself +we +our +ours +ourselves +you +your +yours +yourself +yourselves +he +him +his +himself +she +her +hers +herself +it +its +itself +they +them +their +theirs +themselves +what +which +who +whom +this +that +these +those +am +is +are +was +were +be +been +being +have +has +had +having +do +does +did +doing +a +an +the +and +but +if +or +because +as +until +while +of +at +by +for +with +about +against +between +into +through +during +before +after +above +below +to +from +up +down +in +out +on +off +over +under +again +further +then +once +here +there +when +where +why +how +all +any +both +each +few +more +most +other +some +such +no +nor +not +only +own +same +so +than +too +very +s +t +can +will +just +don +should +now \ No newline at end of file