Als ersten Schritt wollen wir R und R-Studio herunterladen und installieren. R ist eine frei verfügbare Statistik Software, welche wir in unserem Kurs für ökonometrische Analysen verwenden. R kann über die Internetseite https://www.r-project.org bezogen werden. Hier werden spezielle “Mirrors” für einzelne Länder angegeben, aus welchen eine Seite zum Download herausgesucht werden kann. Wir befinden uns in Deutschland nehmen für diese Anleitung beispielhaft den “Mirror” in Münster. Gehen Sie hierfür auf die CRAN Seite der Uni Münster https://cran.uni-muenster.de/.
Installation von R
Installation für Windows
- Klicken Sie auf “Download R for Windows”
- Klicken Sie den Link “install R for the first time”
- Klicken Sie anschließend den Link “Download R 4.x.x for Windows” (wobei x die Versionsnummer beinhaltet)
- Speichern Sie die .exe Datei auf ihrem PC und führen Sie diese aus; folgen Sie den Installationsbeschreibungen
Installation für den Mac
- Klicken Sie auf “Download R for (Mac) OS X”
- Klicken Sie auf den Link welcher zuoberst genannt wird “R-4.x.x.pkg” (in den Folien zur Veranstaltung wird auf die neueste Versionsnummer hingewiesen) um die neueste Version von R herunterzuladen
- Speichern Sie die .pkg Datei auf ihrem PC und führen Sie diese aus; folgen Sie den Installationsbeschreibungen
Nachdem Sie R erfolgreich installiert haben sollten Sie noch RStudio installieren
Installation von RStudio
- Gehen Sie auf die Seite von https://www.rstudio.com/products/rstudio/download/ und klicken Sie auf “Download RStudio”
- Laden Sie die “RStudio Desktop” Version herunter, welche frei verfügbar ist (Open Source License)
- Laden Sie die für Sie benötigte Version von RStudio herunter (Windows/Mac/Linux)
- Führen Sie die Datei aus und folgend Sie den Installationsbeschreibungen
Installation von Paketen in R
Die von uns heruntergeladene R Version ist das Basissystem, auf dem wir nun aufbauen und weitere, für unsere späten Analysen wichtige, R Pakete herunterladen. Insbesondere Pakete aus dem “Tidyverse” sind für diese Vorlesung wichtig. Um diese Pakete herunterzuladen starten Sie RStudio und geben folgende Befehle ein:
install.packages("tidyverse")
Dieser Befehl läd alle Programme, welche im “Tidyverse” Paket enthalten sind auf ihren PC herunter und installiert diese in RStudio. Wenn Sie mehrere Pakete auf einmal herunterladen möchten, so können Sie diese in einem Vektor zusammenfassen. Hier ein Beispiel:
install.packages(c("tidyverse", "devtools", "ggplot2"))
Laden von Paketen in R
Nach der Installation von Paketen sind diese nicht automatisch in R verfügbar. Wenn Sie RStudio öffnen, dann öffnet sich immer nur die Basisversion. Um bestimmte Pakete in RStudio (und R in der Konsole) verfügbar zu machen, müssen Sie diese vorher laden. Dies geschieht wie folgt:
library(tidyverse)
- Achtung der Name des Pakets ist hier nicht in Anführungszeichen!
- “Tidyverse” ist hierbei eine Kollektion von verschiedenen Paketen. Der Befehl search() gibt alle zur Verfügung stehenden Pakete aus.
library(tidyverse)
search()
## [1] ".GlobalEnv" "package:forcats" "package:stringr"
## [4] "package:dplyr" "package:purrr" "package:readr"
## [7] "package:tidyr" "package:tibble" "package:ggplot2"
## [10] "package:tidyverse" "package:stats" "package:graphics"
## [13] "package:grDevices" "package:utils" "package:datasets"
## [16] "package:methods" "Autoloads" "package:base"
Update einer bereits vorhandenen R-Version und/oder R-Studio Version
Falls Sie bereits R und R-Studio installiert haben sollten Sie diese auf den neuesten Stand bringen.
R auf den neuesten Stand bringen (nutzen Sie hierfür direkt die R-Konsole und nicht R-Studio): Verwenden Sie entweder das Paket installr
mit der Funktion updateR()
oder laden Sie R manuell in der neuesten Version herunter.
Bitte beachten Sie:
- Falls Sie R in einer früheren Version installiert haben, bspw. 3.1.2, dann sind alle ihre Pakete auch unter dieser Version gespeichert.
- In diesem Fall müssen Sie die Pakete für die Version 3.x.x ebenfalls neu herunterladen bspw. aktualisieren. In den Folien zur Veranstaltung wird auf die neueste Versionsnummer hingewiesen.
- Wenn Sie den Befehl
updateR()
aus dem installr
Paket verwenden werden Sie direkt durch diesen Aktualisierungsprozess geführt
- Sie können jedoch Pakete auch durch den Befehl
update.packages()
aktualisieren
- Wenn es sich bei der neuen R Version um ein major release gehandelt hat (z.B. Upgrade von 3.x.x auf 4.x.x), dann hilft ihnen das Paket
installr
nicht weiter und Sie müssen die 4.x.x Version neu von Hand installieren.
R-Studio auf den neuesten Stand bringen:
- Laden Sie die aktuellste Version von R-Studio herunter und installieren Sie diese.
Installation und erste Schritte mit RTutor
In diesem Kurs werden Sie neben der Vorlesung das interative Tool RTutor benutzen. RTutor wurde von Prof. Kranz hier an der Universität Ulm entwickelt und wir haben zusammen sogenannte Problem Sets kreiert, welche auf diesen Kurs abgestimmt sind und vorlesungsbegleitend von ihnen bearbeitet werden sollen.
RTutor
können Sie mit dem folgenden Befehl herunterladen und dann mit library(RTutor)
aufrufen:
install.packages("RTutor",repos = c("https://skranz-repo.github.io/drat/",getOption("repos")))
library(RTutor)
Die Problem Sets sind als Vorleistung zu absolvieren. Ein erfolgreicher Abschluss aller Problem Sets ist die Voraussetzung zur Teilnahme an den Projekten und der multiple Choice Klausur zum Ende des Semesters. Durch die RTutor Problem Sets können Sie das in der Vorlesung Erlernte noch einmal praktisch üben und so direkt den Umgang mit R, RStudio und RMarkdown verinnerlichen.
Viel Spaß mit dem Projektkurs Data Science und Business Analytics!
LS0tCnRpdGxlOiAiSW5zdGFsbGF0aW9uIHZvbiBSIHVuZCBSU3R1ZGlvIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0aGVtZTogY29zbW8KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgpBbHMgZXJzdGVuIFNjaHJpdHQgd29sbGVuIHdpciBSIHVuZCBSLVN0dWRpbyBoZXJ1bnRlcmxhZGVuIHVuZCBpbnN0YWxsaWVyZW4uClIgaXN0IGVpbmUgZnJlaSB2ZXJmw7xnYmFyZSBTdGF0aXN0aWsgU29mdHdhcmUsIHdlbGNoZSB3aXIgaW4gdW5zZXJlbSBLdXJzIGbDvHIgw7Zrb25vbWV0cmlzY2hlIEFuYWx5c2VuIHZlcndlbmRlbi4gClIga2FubiDDvGJlciBkaWUgSW50ZXJuZXRzZWl0ZSBbaHR0cHM6Ly93d3cuci1wcm9qZWN0Lm9yZ10oaHR0cHM6Ly93d3cuci1wcm9qZWN0Lm9yZykgYmV6b2dlbiB3ZXJkZW4uIEhpZXIgd2VyZGVuIHNwZXppZWxsZSAiTWlycm9ycyIgZsO8ciBlaW56ZWxuZSBMw6RuZGVyIGFuZ2VnZWJlbiwgYXVzIHdlbGNoZW4gZWluZSBTZWl0ZSB6dW0gRG93bmxvYWQgaGVyYXVzZ2VzdWNodCB3ZXJkZW4ga2Fubi4gV2lyIGJlZmluZGVuIHVucyBpbiBEZXV0c2NobGFuZCBuZWhtZW4gZsO8ciBkaWVzZSBBbmxlaXR1bmcgYmVpc3BpZWxoYWZ0IGRlbiAiTWlycm9yIiBpbiBNw7xuc3Rlci4gR2VoZW4gU2llIGhpZXJmw7xyIGF1ZiBkaWUgQ1JBTiBTZWl0ZSBkZXIgVW5pIE3DvG5zdGVyIFtodHRwczovL2NyYW4udW5pLW11ZW5zdGVyLmRlL10oaHR0cHM6Ly9jcmFuLnVuaS1tdWVuc3Rlci5kZS8pLgoKIyBJbnN0YWxsYXRpb24gdm9uIFIKCiMjIEluc3RhbGxhdGlvbiBmw7xyIFdpbmRvd3MKCjEuIEtsaWNrZW4gU2llIGF1ZiAiRG93bmxvYWQgUiBmb3IgV2luZG93cyIKMi4gS2xpY2tlbiBTaWUgZGVuIExpbmsgImluc3RhbGwgUiBmb3IgdGhlIGZpcnN0IHRpbWUiCjMuIEtsaWNrZW4gU2llIGFuc2NobGllw59lbmQgZGVuIExpbmsgIkRvd25sb2FkIFIgNC54LnggZm9yIFdpbmRvd3MiICh3b2JlaSB4IGRpZSBWZXJzaW9uc251bW1lciBiZWluaGFsdGV0KQo0LiBTcGVpY2hlcm4gU2llIGRpZSAuZXhlIERhdGVpIGF1ZiBpaHJlbSBQQyB1bmQgZsO8aHJlbiBTaWUgZGllc2UgYXVzOyBmb2xnZW4gU2llIGRlbiBJbnN0YWxsYXRpb25zYmVzY2hyZWlidW5nZW4KCiMjIEluc3RhbGxhdGlvbiBmw7xyIGRlbiBNYWMKCjEuIEtsaWNrZW4gU2llIGF1ZiAiRG93bmxvYWQgUiBmb3IgKE1hYykgT1MgWCIKMi4gS2xpY2tlbiBTaWUgYXVmIGRlbiBMaW5rIHdlbGNoZXIgenVvYmVyc3QgZ2VuYW5udCB3aXJkICJSLTQueC54LnBrZyIgKGluIGRlbiBGb2xpZW4genVyIFZlcmFuc3RhbHR1bmcgd2lyZCBhdWYgZGllIG5ldWVzdGUgVmVyc2lvbnNudW1tZXIgaGluZ2V3aWVzZW4pIHVtIGRpZSBuZXVlc3RlIFZlcnNpb24gdm9uIFIgaGVydW50ZXJ6dWxhZGVuCjMuIFNwZWljaGVybiBTaWUgZGllIC5wa2cgRGF0ZWkgYXVmIGlocmVtIFBDIHVuZCBmw7xocmVuIFNpZSBkaWVzZSBhdXM7IGZvbGdlbiBTaWUgZGVuIEluc3RhbGxhdGlvbnNiZXNjaHJlaWJ1bmdlbgoKTmFjaGRlbSBTaWUgUiBlcmZvbGdyZWljaCBpbnN0YWxsaWVydCBoYWJlbiBzb2xsdGVuIFNpZSBub2NoIFJTdHVkaW8gaW5zdGFsbGllcmVuCgojIEluc3RhbGxhdGlvbiB2b24gUlN0dWRpbwoKMS4gR2VoZW4gU2llIGF1ZiBkaWUgU2VpdGUgdm9uIDxodHRwczovL3d3dy5yc3R1ZGlvLmNvbS9wcm9kdWN0cy9yc3R1ZGlvL2Rvd25sb2FkLz4gdW5kIGtsaWNrZW4gU2llIGF1ZiAiRG93bmxvYWQgUlN0dWRpbyIKMi4gTGFkZW4gU2llIGRpZSAiUlN0dWRpbyBEZXNrdG9wIiBWZXJzaW9uIGhlcnVudGVyLCB3ZWxjaGUgZnJlaSB2ZXJmw7xnYmFyIGlzdCAoT3BlbiBTb3VyY2UgTGljZW5zZSkKMy4gTGFkZW4gU2llIGRpZSBmw7xyIFNpZSBiZW7DtnRpZ3RlIFZlcnNpb24gdm9uIFJTdHVkaW8gaGVydW50ZXIgKFdpbmRvd3MvTWFjL0xpbnV4KQo0LiBGw7xocmVuIFNpZSBkaWUgRGF0ZWkgYXVzIHVuZCBmb2xnZW5kIFNpZSBkZW4gSW5zdGFsbGF0aW9uc2Jlc2NocmVpYnVuZ2VuCgojIEluc3RhbGxhdGlvbiB2b24gUGFrZXRlbiBpbiBSCgpEaWUgdm9uIHVucyBoZXJ1bnRlcmdlbGFkZW5lIFIgVmVyc2lvbiBpc3QgZGFzIEJhc2lzc3lzdGVtLCBhdWYgZGVtIHdpciBudW4gYXVmYmF1ZW4gdW5kIHdlaXRlcmUsIGbDvHIgdW5zZXJlIHNww6R0ZW4gQW5hbHlzZW4gd2ljaHRpZ2UsIFIgUGFrZXRlIGhlcnVudGVybGFkZW4uCkluc2Jlc29uZGVyZSBQYWtldGUgYXVzIGRlbSBbIlRpZHl2ZXJzZSJdKGh0dHBzOi8vd3d3LnRpZHl2ZXJzZS5vcmcvcGFja2FnZXMvKSBzaW5kIGbDvHIgZGllc2UgVm9ybGVzdW5nIHdpY2h0aWcuClVtIGRpZXNlIFBha2V0ZSBoZXJ1bnRlcnp1bGFkZW4gc3RhcnRlbiBTaWUgUlN0dWRpbyB1bmQgZ2ViZW4gZm9sZ2VuZGUgQmVmZWhsZSBlaW46CgpgYGAKaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKYGBgCgpEaWVzZXIgQmVmZWhsIGzDpGQgYWxsZSBQcm9ncmFtbWUsIHdlbGNoZSBpbSAiVGlkeXZlcnNlIiBQYWtldCBlbnRoYWx0ZW4gc2luZCBhdWYgaWhyZW4gUEMgaGVydW50ZXIgdW5kIGluc3RhbGxpZXJ0IGRpZXNlIGluIFJTdHVkaW8uCldlbm4gU2llIG1laHJlcmUgUGFrZXRlIGF1ZiBlaW5tYWwgaGVydW50ZXJsYWRlbiBtw7ZjaHRlbiwgc28ga8O2bm5lbiBTaWUgZGllc2UgaW4gZWluZW0gVmVrdG9yIHp1c2FtbWVuZmFzc2VuLiAKSGllciBlaW4gQmVpc3BpZWw6CgpgYGAKaW5zdGFsbC5wYWNrYWdlcyhjKCJ0aWR5dmVyc2UiLCAiZGV2dG9vbHMiLCAiZ2dwbG90MiIpKQpgYGAKCiMgTGFkZW4gdm9uIFBha2V0ZW4gaW4gUgoKTmFjaCBkZXIgSW5zdGFsbGF0aW9uIHZvbiBQYWtldGVuIHNpbmQgZGllc2UgbmljaHQgYXV0b21hdGlzY2ggaW4gUiB2ZXJmw7xnYmFyLiBXZW5uIFNpZSBSU3R1ZGlvIMO2ZmZuZW4sIGRhbm4gw7ZmZm5ldCBzaWNoIGltbWVyIG51ciBkaWUgQmFzaXN2ZXJzaW9uLiBVbSBiZXN0aW1tdGUgUGFrZXRlIGluIFJTdHVkaW8gKHVuZCBSIGluIGRlciBLb25zb2xlKSB2ZXJmw7xnYmFyIHp1IG1hY2hlbiwgbcO8c3NlbiBTaWUgZGllc2Ugdm9yaGVyIGxhZGVuLiBEaWVzIGdlc2NoaWVodCB3aWUgZm9sZ3Q6CmBgYApsaWJyYXJ5KHRpZHl2ZXJzZSkKYGBgCi0gKkFjaHR1bmcqIGRlciBOYW1lIGRlcyBQYWtldHMgaXN0IGhpZXIgbmljaHQgaW4gQW5mw7xocnVuZ3N6ZWljaGVuIQotIFsiVGlkeXZlcnNlIl0oaHR0cHM6Ly93d3cudGlkeXZlcnNlLm9yZy9wYWNrYWdlcy8pIGlzdCBoaWVyYmVpIGVpbmUgS29sbGVrdGlvbiB2b24gdmVyc2NoaWVkZW5lbiBQYWtldGVuLiBEZXIgQmVmZWhsIHNlYXJjaCgpIGdpYnQgYWxsZSB6dXIgVmVyZsO8Z3VuZyBzdGVoZW5kZW4gUGFrZXRlIGF1cy4KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKQpzZWFyY2goKQpgYGAKCiMgVXBkYXRlIGVpbmVyIGJlcmVpdHMgdm9yaGFuZGVuZW4gUi1WZXJzaW9uIHVuZC9vZGVyIFItU3R1ZGlvIFZlcnNpb24KCkZhbGxzIFNpZSBiZXJlaXRzIFIgdW5kIFItU3R1ZGlvIGluc3RhbGxpZXJ0IGhhYmVuIHNvbGx0ZW4gU2llIGRpZXNlIGF1ZiBkZW4gbmV1ZXN0ZW4gU3RhbmQgYnJpbmdlbi4KClIgYXVmIGRlbiBuZXVlc3RlbiBTdGFuZCBicmluZ2VuIChudXR6ZW4gU2llIGhpZXJmw7xyIGRpcmVrdCBkaWUgUi1Lb25zb2xlIHVuZCBfbmljaHRfIFItU3R1ZGlvKToKVmVyd2VuZGVuIFNpZSBlbnR3ZWRlciBkYXMgUGFrZXQgYGluc3RhbGxyYCBtaXQgZGVyIEZ1bmt0aW9uIGB1cGRhdGVSKClgIG9kZXIgbGFkZW4gU2llIFIgbWFudWVsbCBpbiBkZXIgW25ldWVzdGVuIFZlcnNpb25dKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnLykgaGVydW50ZXIuCgpCaXR0ZSBiZWFjaHRlbiBTaWU6CgotIEZhbGxzIFNpZSBSIGluIGVpbmVyIGZyw7xoZXJlbiBWZXJzaW9uIGluc3RhbGxpZXJ0IGhhYmVuLCBic3B3LiAzLjEuMiwgZGFubiBzaW5kIGFsbGUgaWhyZSBQYWtldGUgYXVjaCB1bnRlciBkaWVzZXIgVmVyc2lvbiBnZXNwZWljaGVydC4gCiAgICAtIEluIGRpZXNlbSBGYWxsIG3DvHNzZW4gU2llIGRpZSBQYWtldGUgZsO8ciBkaWUgVmVyc2lvbiAzLngueCBlYmVuZmFsbHMgbmV1IGhlcnVudGVybGFkZW4gYnNwdy4gYWt0dWFsaXNpZXJlbi4gSW4gZGVuIEZvbGllbiB6dXIgVmVyYW5zdGFsdHVuZyB3aXJkIGF1ZiBkaWUgbmV1ZXN0ZSBWZXJzaW9uc251bW1lciBoaW5nZXdpZXNlbi4KICAgIC0gIFdlbm4gU2llIGRlbiBCZWZlaGwgYHVwZGF0ZVIoKWAgYXVzIGRlbSBgaW5zdGFsbHJgIFBha2V0IHZlcndlbmRlbiB3ZXJkZW4gU2llIGRpcmVrdCBkdXJjaCBkaWVzZW4gQWt0dWFsaXNpZXJ1bmdzcHJvemVzcyBnZWbDvGhydAotIFNpZSBrw7ZubmVuIGplZG9jaCBQYWtldGUgYXVjaCBkdXJjaCBkZW4gQmVmZWhsIGB1cGRhdGUucGFja2FnZXMoKWAgYWt0dWFsaXNpZXJlbgotIFdlbm4gZXMgc2ljaCBiZWkgZGVyIG5ldWVuIFIgVmVyc2lvbiB1bSBlaW4gbWFqb3IgcmVsZWFzZSBnZWhhbmRlbHQgaGF0ICh6LkIuIFVwZ3JhZGUgdm9uIDMueC54IGF1ZiA0LngueCksIGRhbm4gaGlsZnQgaWhuZW4gZGFzIFBha2V0IGBpbnN0YWxscmAgbmljaHQgd2VpdGVyIHVuZCBTaWUgbcO8c3NlbiBkaWUgNC54LnggVmVyc2lvbiBuZXUgdm9uIEhhbmQgaW5zdGFsbGllcmVuLgoKUi1TdHVkaW8gYXVmIGRlbiBuZXVlc3RlbiBTdGFuZCBicmluZ2VuOgoKLSBMYWRlbiBTaWUgZGllIGFrdHVlbGxzdGUgVmVyc2lvbiB2b24gW1ItU3R1ZGlvXShodHRwczovL3d3dy5yc3R1ZGlvLmNvbS9wcm9kdWN0cy9yc3R1ZGlvL2Rvd25sb2FkLykgaGVydW50ZXIgdW5kIGluc3RhbGxpZXJlbiBTaWUgZGllc2UuCgoKIyBJbnN0YWxsYXRpb24gdW5kIGVyc3RlIFNjaHJpdHRlIG1pdCBSVHV0b3IKCkluIGRpZXNlbSBLdXJzIHdlcmRlbiBTaWUgbmViZW4gZGVyIFZvcmxlc3VuZyBkYXMgaW50ZXJhdGl2ZSBUb29sIFtSVHV0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9za3JhbnovUlR1dG9yKSBiZW51dHplbi4KUlR1dG9yIHd1cmRlIHZvbiBQcm9mLiBLcmFueiBoaWVyIGFuIGRlciBVbml2ZXJzaXTDpHQgVWxtIGVudHdpY2tlbHQgdW5kIHdpciBoYWJlbiB6dXNhbW1lbiBzb2dlbmFubnRlIFByb2JsZW0gU2V0cyBrcmVpZXJ0LCB3ZWxjaGUgYXVmIGRpZXNlbiBLdXJzIGFiZ2VzdGltbXQgc2luZCB1bmQgdm9ybGVzdW5nc2JlZ2xlaXRlbmQgdm9uIGlobmVuIGJlYXJiZWl0ZXQgd2VyZGVuIHNvbGxlbi4KCmBSVHV0b3JgIGvDtm5uZW4gU2llIG1pdCBkZW0gZm9sZ2VuZGVuIEJlZmVobCBoZXJ1bnRlcmxhZGVuIHVuZCBkYW5uIG1pdCBgbGlicmFyeShSVHV0b3IpYCBhdWZydWZlbjoKCmBgYAppbnN0YWxsLnBhY2thZ2VzKCJSVHV0b3IiLHJlcG9zID0gYygiaHR0cHM6Ly9za3JhbnotcmVwby5naXRodWIuaW8vZHJhdC8iLGdldE9wdGlvbigicmVwb3MiKSkpCmxpYnJhcnkoUlR1dG9yKQpgYGAKCkRpZSBQcm9ibGVtIFNldHMgc2luZCBhbHMgKipWb3JsZWlzdHVuZyoqIHp1IGFic29sdmllcmVuLiAKRWluIGVyZm9sZ3JlaWNoZXIgQWJzY2hsdXNzIGFsbGVyIFByb2JsZW0gU2V0cyBpc3QgZGllIFZvcmF1c3NldHp1bmcgenVyIFRlaWxuYWhtZSBhbiBkZW4gUHJvamVrdGVuIHVuZCBkZXIgbXVsdGlwbGUgQ2hvaWNlIEtsYXVzdXIgenVtIEVuZGUgZGVzIFNlbWVzdGVycy4gRHVyY2ggZGllIFJUdXRvciBQcm9ibGVtIFNldHMga8O2bm5lbiBTaWUgZGFzIGluIGRlciBWb3JsZXN1bmcgRXJsZXJudGUgbm9jaCBlaW5tYWwgcHJha3Rpc2NoIMO8YmVuIHVuZCBzbyBkaXJla3QgZGVuIFVtZ2FuZyBtaXQgUiwgUlN0dWRpbyB1bmQgUk1hcmtkb3duIHZlcmlubmVybGljaGVuLgoKKipWaWVsIFNwYcOfIG1pdCBkZW0gUHJvamVrdGt1cnMgRGF0YSBTY2llbmNlIHVuZCBCdXNpbmVzcyBBbmFseXRpY3MhKioK