From 72c11ff25d9898578c53f2b40e65f7d73c454f76 Mon Sep 17 00:00:00 2001 From: Frie Date: Mon, 22 Aug 2022 12:18:44 +0200 Subject: [PATCH] transfer analysis from github repo --- .gitignore | 4 + 00-exploration.html | 569 ++++++++++++++++++ 00-exploration.qmd | 237 ++++++++ 01-quarto-interactive.html | 343 +++++++++++ 01-quarto-interactive.qmd | 99 +++ bedarfsanalyse.Rproj | 13 + data/processed/survey_with_labels.rds | Bin 0 -> 230327 bytes .../raw/limesurvey_survey_227824.txt | 75 +-- .../survey_227824_R_data_file-2022-08-13.csv | 0 .../survey_227824_R_syntax_file-2022-08-13.R | 4 +- 10 files changed, 1269 insertions(+), 75 deletions(-) create mode 100644 .gitignore create mode 100644 00-exploration.html create mode 100644 00-exploration.qmd create mode 100644 01-quarto-interactive.html create mode 100644 01-quarto-interactive.qmd create mode 100644 bedarfsanalyse.Rproj create mode 100644 data/processed/survey_with_labels.rds rename limesurvey_survey_227824.txt => data/raw/limesurvey_survey_227824.txt (78%) rename survey_227824_R_data_file-2022-08-13.csv => data/raw/survey_227824_R_data_file-2022-08-13.csv (100%) rename survey_227824_R_syntax_file-2022-08-13.R => data/raw/survey_227824_R_syntax_file-2022-08-13.R (99%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b6a065 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata diff --git a/00-exploration.html b/00-exploration.html new file mode 100644 index 0000000..1719bf1 --- /dev/null +++ b/00-exploration.html @@ -0,0 +1,569 @@ + + + + + + + + + +Local-IT Bedarfsanalyse + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+

Local-IT Bedarfsanalyse

+
+ + + +
+ + + +
+ + +
+ +
+

Analyse

+
+ +Datenbereinigung + +
+
+Show the code +
# Datenbereinigung 
+library(tidyverse)
+library(janitor)
+survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))
+
+
+
+
+Show the code +
survey <- survey_raw %>% 
+  mutate(
+    # G1Q06_SQ001 = ehrenamtlich engagiert fix missings
+    G1Q06_SQ001 = case_when(is.na(G1Q06_SQ001) & G1Q04 == "Keine" ~ "Ja",
+                            TRUE ~ as.character(G1Q06_SQ001)
+                            ),
+    # G1Q06_SQ002 = hauptamtlich engagiert fix missings
+    G1Q06_SQ002 = case_when(is.na(G1Q06_SQ002) & G1Q04 == "Keine" ~ "Nicht gewählt",
+                            TRUE ~ as.character(G1Q06_SQ002)
+                            ),
+    G1Q06_SQ001 = as_factor(G1Q06_SQ001),
+    G1Q06_SQ002 = as_factor(G1Q06_SQ002),
+    # generate one variable that combines the multiple choice information about the role of the respondent 
+    role_respondent = case_when(
+      # decision: Teilnehmende die beide Rollen angegeben haben werden zu hauptamtlich gezählt (es sind nur 6 und eine binary Variable ist besser geeignet für Gruppenvergleiche)
+      G1Q06_SQ001 == "Ja" & G1Q06_SQ002 == "Ja" ~ "ehrenamtlich", 
+      G1Q06_SQ001 == "Ja" ~ "ehrenamtlich",
+      G1Q06_SQ002 == "Ja" ~ "hauptamlich",
+      # decision: Teilnehmende die keine der Kategorien angegeben haben werden zu NA anstatt eine vierte Kategorie "keine" einzuführen, da das wahrcheinlich nicht von Interesse ist.
+      G1Q06_SQ001 == "Nicht gewählt" & G1Q06_SQ002 == "Nicht gewählt" ~ NA_character_,
+      is.na(G1Q06_SQ001) & is.na(G1Q06_SQ002) ~ NA_character_,
+      TRUE ~ "error")
+    )
+
+
+
+

G1Q06_SQ001 filter

+

Wir sind daran interessiert zu wissen, ob die Teilnehmenden selbst ehrenamtlich, hauptamtlich oder in beiden Positionen arbeiten. Diese Information findet sich in der Frage G1Q06: “Welche Rolle(n) haben sie in der Organisation. Die Filterführung des Fragebogens hat allerdings dazu geführt, dass Personen die angegeben haben, dass in ihrer Organisation keine hauptamtlichen Mitarbeiten vorhanden, sind die G1Q06 Frage nicht bekommen haben, da schon klar ist, dass sie dann ehrenamtlich sind. Dadurch haben sie momentan Missings auf den Variablen die zur G1Q06 Frage gehören. Die logische Verbindung zwischen G1Q04 und G1Q06 wollen wir also im Nachhinein recoden.

+
+
+Show the code +
survey_raw %>% tabyl(G1Q04, G1Q06_SQ001)
+
+
+
 G1Q04 Ja Nicht gewählt NA_
+ Keine  0             0  36
+   < 5 10            22   0
+  5-10  9            16   0
+ 11-50  2            29   0
+  > 50  5            21   0
+  <NA>  0             8  26
+
+
+Show the code +
#TODO wurde der Filter auch für G1Q05 gesetzt? Sieht nicht so aus ()
+survey_raw %>% tabyl(G1Q05, G1Q06_SQ002)
+
+
+
   G1Q05 Ja Nicht gewählt NA_
+   Keine  7             0   1
+     < 5  9             0   5
+  5 - 10 10             8  15
+ 11 - 50 26             4  10
+    > 50 41             8   5
+    <NA>  1             8  26
+
+
+

36 Personen haben angegeben, dass sich keine Hauptamtlichen in der Org. befinden -> die wollen wir recodieren

+
+
+Show the code +
survey %>% tabyl(G1Q06_SQ001, G1Q06_SQ002)
+
+
+
   G1Q06_SQ001 Ja Nicht gewählt NA_
+            Ja  6            56   0
+ Nicht gewählt 88             8   0
+          <NA>  0             0  26
+
+
+
+
+Show the code +
testthat::expect_equal(survey %>% filter(role_respondent == "error") %>% nrow(), 0)
+
+
+
+
+ +
+

Stichprobe

+
+
+Show the code +
# TODO: Analyse der Missings (wie weit sind Fragebögen ausgefuellt? schmeißen wir sie alle weg?)
+
+
+
+

Rolle der befragten Personen

+
+
+Show the code +
survey %>% count(role_respondent)
+
+
+
  role_respondent  n
+1    ehrenamtlich 62
+2     hauptamlich 88
+3            <NA> 34
+
+
+
+
+

Anzahl Hauptamtlicher und Ehrenamtlicher

+
+
+Show the code +
# facet wrap plot: beide Fragen haben die gleiche Skala
+tmp_long <- survey %>% 
+  select(id, G1Q05, G1Q04) %>% 
+  pivot_longer(-id, names_to = "var", values_to = "value")
+
+tmp_long %>% 
+  ggplot(aes(x = value)) +
+  geom_bar()+
+  facet_wrap(~var)+
+  labs(caption = "G1Q04 Anzahl Hauptamtlicher\nG1Q05 Anzahl Ehrenamtlicher", 
+       title = "Anzahl Hauptamtlicher (G1Q04) \n und Anzahl Ehrenamtlicher (G1Q05)")+
+  coord_flip()
+
+
+

+
+
+
+
+Show the code +
create_dot_plot <- function(data, x_var, y_var) {
+  tmp <- data %>% 
+    count({{ x_var }}, {{ y_var }}) %>% 
+    drop_na({{ x_var }}, {{ y_var }})
+  
+  x_var_pos <- which(attributes(survey)$names == enexpr(x_var))
+  x_var_lab <- attributes(survey)$variable.labels[x_var_pos] %>% 
+    str_replace(pattern = "\\?.+$", replacement = "?") 
+
+  y_var_pos <- which(attributes(survey)$names == enexpr(y_var))
+  y_var_lab <- attributes(survey)$variable.labels[y_var_pos] %>% 
+    str_replace(pattern = "\\?.+$", replacement = "?") 
+  
+  # plot
+  ggplot(tmp) +
+    aes(x = {{ x_var }},
+        y = {{ y_var }},
+        size = n,
+        label = n) +
+    geom_point() +
+    labs(caption = glue::glue("{enexpr(x_var)}: {x_var_lab} \n {enexpr(y_var)}: {y_var_lab}")) +
+    scale_fill_viridis_c() +
+    theme_minimal()
+}
+
+create_dot_plot(survey, G1Q04, G1Q05)
+
+
+

+
+
+
+
+
+

Hypothesen

+
    +
  1. Grundsätzlich
  2. +
+

Gibt es signifikante Zusammenhänge zwischen - G1Q04 Anzahl Hauptamtlicher - G1Q05 Anzahl Ehrenamtlicher - G5Q04 Bereich (Sport/ Bidung etc) Und allen anderen Fragen.

+
+
+Show the code +
tmp <- survey_raw %>% 
+  count(G1Q05, G1Q04) %>% 
+  drop_na(G1Q05, G1Q04)
+
+ggplot(tmp) +
+ aes(x = G1Q05, y = G1Q04, fill = n) +
+ geom_tile(size = 1.2) +
+labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + 
+  scale_fill_viridis_c()+
+ theme_minimal()
+
+
+

+
+
+
+
+Show the code +
ggplot(tmp) +
+ aes(x = G1Q05, y = G1Q04, size = n) +
+ geom_point() +
+labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + 
+  scale_fill_viridis_c()+
+ theme_minimal()
+
+
+

+
+
+Show the code +
p <- survey_raw %>%
+  count(G4Q02, G1Q04) %>%
+  drop_na() %>% 
+  ggplot() +
+  aes(x = G4Q02, y = G1Q04, size = n) +
+  geom_point() +
+  labs(y = "Anzahl Hauptamtlicher", x = "Nutzung") +
+  coord_flip()+
+  theme_light() 
+p
+
+
+

+
+
+
+
+Show the code +
survey_raw %>% 
+  select(G4Q02, G1Q04) %>% 
+  drop_na() %>% 
+  janitor::tabyl(G4Q02, G1Q04) %>% 
+  janitor::adorn_totals() %>% 
+  janitor::adorn_percentages() %>% 
+  janitor::adorn_pct_formatting()
+
+
+
                                               G4Q02 Keine   < 5  5-10 11-50
+          nutzen wir in unserer Organisation aktuell 40.5% 21.4% 11.9% 11.9%
+              haben wir mal genutzt oder ausprobiert 25.0% 18.8% 18.8% 31.2%
+            nutzen wir nicht in unserer Organisation 15.8% 28.9% 21.1% 18.4%
+ ich weiß nicht ob wir sie nutzen oder genutzt haben  6.2% 18.8%  6.2% 37.5%
+                         ich kenne den Begriff nicht  0.0% 33.3% 33.3% 33.3%
+                                               Total 24.3% 23.5% 15.7% 20.9%
+  > 50
+ 14.3%
+  6.2%
+ 15.8%
+ 31.2%
+  0.0%
+ 15.7%
+
+
+

Erklärungsansaetze für Ergebnisse: - Sampling Bias in der Umfrage -

+
+

Anzahl ehrenamtliche

+
+
+Show the code +
survey_raw %>%
+  count(G4Q02) %>%
+  drop_na() %>% 
+  ggplot(aes(x = G4Q02, y = n))+
+  geom_col()+
+  coord_flip()
+
+
+

+
+
+Show the code +
survey_raw %>%
+  count(G4Q02, G1Q05) %>%
+  drop_na() %>% 
+  ggplot() +
+  aes(x = G4Q02, y = G1Q05, size = n) +
+  geom_point() +
+  labs(y = "Anzahl Ehrenamtlicher", x = "Nutzung") +
+  coord_flip()+
+  theme_minimal()
+
+
+

+
+
+Show the code +
survey_raw %>% 
+  select(G4Q02, G1Q05) %>% 
+  drop_na() %>% 
+  janitor::tabyl(G4Q02, G1Q05) %>% 
+  janitor::adorn_totals() %>% 
+  janitor::adorn_percentages(denominator = "col") %>% 
+  janitor::adorn_pct_formatting()
+
+
+
                                               G4Q02  Keine    < 5 5 - 10
+          nutzen wir in unserer Organisation aktuell  33.3%  45.5%  37.0%
+              haben wir mal genutzt oder ausprobiert   0.0%   0.0%  11.1%
+            nutzen wir nicht in unserer Organisation  50.0%  36.4%  44.4%
+ ich weiß nicht ob wir sie nutzen oder genutzt haben  16.7%  18.2%   7.4%
+                         ich kenne den Begriff nicht   0.0%   0.0%   0.0%
+                                               Total 100.0% 100.0% 100.0%
+ 11 - 50   > 50
+   40.7%  30.2%
+   22.2%  16.3%
+   25.9%  27.9%
+    7.4%  20.9%
+    3.7%   4.7%
+  100.0% 100.0%
+
+
+

Chi-Square Test, um zu sehen, ob zw. den zwei kategorialen Variablen ein signifikanter Zusammenhang besteht:

+
+
+Show the code +
chisq.test(survey$G4Q02, survey$G1Q05)
+
+
+
Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
+incorrect
+
+
+

+    Pearson's Chi-squared test
+
+data:  survey$G4Q02 and survey$G1Q05
+X-squared = 12.462, df = 16, p-value = 0.7116
+
+
+

Werden Cluster sichtbar?

+
    +
  1. Für welche Organisationen ist SKA interessant? Hypothesen:
  2. +
  3. Große Organisationen mit vielen Hauptamtlichen und eigenen IT Abteilungen haben kein Interessen an Open Source Lösungen sondern entscheiden sich für bekannte, teure propritäre Tools
  4. +
  5. Organisationen mit eigenen IT Abteilungen haben Wissen und Kompetenz selbst Open Source Lösungen aufzusetzen (also Zugang) und nutzen sie somit häufiger.
  6. +
+

G2Q02 Wer kümmert sich um eure digitale Infrastruktur G1Q04 Wie viele hauptamtlich Mitarbeitende hat deine Organisation? In Korrelation zu Bisherige Erfahrung mit Open Source (G4Q02) oder der Wichtigkeit bestimmter Eigenschaften des Tools (G03Q03 und G03Q03b)

+
+
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/00-exploration.qmd b/00-exploration.qmd new file mode 100644 index 0000000..668750e --- /dev/null +++ b/00-exploration.qmd @@ -0,0 +1,237 @@ +--- +title: "Local-IT Bedarfsanalyse" +format: + html: + code-fold: true + code-summary: "Show the code" +--- +# Analyse +
+Datenbereinigung +```{r import data, message=FALSE} +# Datenbereinigung +library(tidyverse) +library(janitor) +survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds")) +``` + +```{r wrangle data} +survey <- survey_raw %>% + mutate( + # G1Q06_SQ001 = ehrenamtlich engagiert fix missings + G1Q06_SQ001 = case_when(is.na(G1Q06_SQ001) & G1Q04 == "Keine" ~ "Ja", + TRUE ~ as.character(G1Q06_SQ001) + ), + # G1Q06_SQ002 = hauptamtlich engagiert fix missings + G1Q06_SQ002 = case_when(is.na(G1Q06_SQ002) & G1Q04 == "Keine" ~ "Nicht gewählt", + TRUE ~ as.character(G1Q06_SQ002) + ), + G1Q06_SQ001 = as_factor(G1Q06_SQ001), + G1Q06_SQ002 = as_factor(G1Q06_SQ002), + # generate one variable that combines the multiple choice information about the role of the respondent + role_respondent = case_when( + # decision: Teilnehmende die beide Rollen angegeben haben werden zu hauptamtlich gezählt (es sind nur 6 und eine binary Variable ist besser geeignet für Gruppenvergleiche) + G1Q06_SQ001 == "Ja" & G1Q06_SQ002 == "Ja" ~ "ehrenamtlich", + G1Q06_SQ001 == "Ja" ~ "ehrenamtlich", + G1Q06_SQ002 == "Ja" ~ "hauptamlich", + # decision: Teilnehmende die keine der Kategorien angegeben haben werden zu NA anstatt eine vierte Kategorie "keine" einzuführen, da das wahrcheinlich nicht von Interesse ist. + G1Q06_SQ001 == "Nicht gewählt" & G1Q06_SQ002 == "Nicht gewählt" ~ NA_character_, + is.na(G1Q06_SQ001) & is.na(G1Q06_SQ002) ~ NA_character_, + TRUE ~ "error") + ) +``` + + +## G1Q06_SQ001 filter + +Wir sind daran interessiert zu wissen, ob die Teilnehmenden selbst ehrenamtlich, hauptamtlich oder in beiden Positionen arbeiten. Diese Information findet sich in der Frage `G1Q06`: "Welche Rolle(n) haben sie in der Organisation. Die Filterführung des Fragebogens hat allerdings dazu geführt, dass Personen die angegeben haben, dass in ihrer Organisation keine hauptamtlichen Mitarbeiten vorhanden, sind die `G1Q06` Frage nicht bekommen haben, da schon klar ist, dass sie dann ehrenamtlich sind. Dadurch haben sie momentan Missings auf den Variablen die zur `G1Q06` Frage gehören. Die logische Verbindung zwischen `G1Q04` und `G1Q06` wollen wir also im Nachhinein recoden. + +```{r explore G1Q06_SQ001 filter, inlcude = FALSE} +survey_raw %>% tabyl(G1Q04, G1Q06_SQ001) +#TODO wurde der Filter auch für G1Q05 gesetzt? Sieht nicht so aus () +survey_raw %>% tabyl(G1Q05, G1Q06_SQ002) +``` + +36 Personen haben angegeben, dass sich keine Hauptamtlichen in der Org. befinden -> die wollen wir recodieren + +```{r} +survey %>% tabyl(G1Q06_SQ001, G1Q06_SQ002) +``` + +```{r} +testthat::expect_equal(survey %>% filter(role_respondent == "error") %>% nrow(), 0) +``` +
+ +# Stichprobe +```{r} +# TODO: Analyse der Missings (wie weit sind Fragebögen ausgefuellt? schmeißen wir sie alle weg?) +``` + +## Rolle der befragten Personen +```{r} +survey %>% count(role_respondent) +``` + + +## Anzahl Hauptamtlicher und Ehrenamtlicher +```{r} +# facet wrap plot: beide Fragen haben die gleiche Skala +tmp_long <- survey %>% + select(id, G1Q05, G1Q04) %>% + pivot_longer(-id, names_to = "var", values_to = "value") + +tmp_long %>% + ggplot(aes(x = value)) + + geom_bar()+ + facet_wrap(~var)+ + labs(caption = "G1Q04 Anzahl Hauptamtlicher\nG1Q05 Anzahl Ehrenamtlicher", + title = "Anzahl Hauptamtlicher (G1Q04) \n und Anzahl Ehrenamtlicher (G1Q05)")+ + coord_flip() +``` + + +```{r} +create_dot_plot <- function(data, x_var, y_var) { + tmp <- data %>% + count({{ x_var }}, {{ y_var }}) %>% + drop_na({{ x_var }}, {{ y_var }}) + + x_var_pos <- which(attributes(survey)$names == enexpr(x_var)) + x_var_lab <- attributes(survey)$variable.labels[x_var_pos] %>% + str_replace(pattern = "\\?.+$", replacement = "?") + + y_var_pos <- which(attributes(survey)$names == enexpr(y_var)) + y_var_lab <- attributes(survey)$variable.labels[y_var_pos] %>% + str_replace(pattern = "\\?.+$", replacement = "?") + + # plot + ggplot(tmp) + + aes(x = {{ x_var }}, + y = {{ y_var }}, + size = n, + label = n) + + geom_point() + + labs(caption = glue::glue("{enexpr(x_var)}: {x_var_lab} \n {enexpr(y_var)}: {y_var_lab}")) + + scale_fill_viridis_c() + + theme_minimal() +} + +create_dot_plot(survey, G1Q04, G1Q05) + + +``` + + + +# Hypothesen + +1. Grundsätzlich + +Gibt es signifikante Zusammenhänge zwischen +- G1Q04 Anzahl Hauptamtlicher +- G1Q05 Anzahl Ehrenamtlicher +- G5Q04 Bereich (Sport/ Bidung etc) +Und allen anderen Fragen. + + +```{r} +tmp <- survey_raw %>% + count(G1Q05, G1Q04) %>% + drop_na(G1Q05, G1Q04) + +ggplot(tmp) + + aes(x = G1Q05, y = G1Q04, fill = n) + + geom_tile(size = 1.2) + +labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + + scale_fill_viridis_c()+ + theme_minimal() +``` + +```{r} +ggplot(tmp) + + aes(x = G1Q05, y = G1Q04, size = n) + + geom_point() + +labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + + scale_fill_viridis_c()+ + theme_minimal() + + +p <- survey_raw %>% + count(G4Q02, G1Q04) %>% + drop_na() %>% + ggplot() + + aes(x = G4Q02, y = G1Q04, size = n) + + geom_point() + + labs(y = "Anzahl Hauptamtlicher", x = "Nutzung") + + coord_flip()+ + theme_light() +p +``` + + +```{r} +survey_raw %>% + select(G4Q02, G1Q04) %>% + drop_na() %>% + janitor::tabyl(G4Q02, G1Q04) %>% + janitor::adorn_totals() %>% + janitor::adorn_percentages() %>% + janitor::adorn_pct_formatting() +``` + + +Erklärungsansaetze für Ergebnisse: +- Sampling Bias in der Umfrage +- + +## Anzahl ehrenamtliche +```{r} + +survey_raw %>% + count(G4Q02) %>% + drop_na() %>% + ggplot(aes(x = G4Q02, y = n))+ + geom_col()+ + coord_flip() + + +survey_raw %>% + count(G4Q02, G1Q05) %>% + drop_na() %>% + ggplot() + + aes(x = G4Q02, y = G1Q05, size = n) + + geom_point() + + labs(y = "Anzahl Ehrenamtlicher", x = "Nutzung") + + coord_flip()+ + theme_minimal() + + +survey_raw %>% + select(G4Q02, G1Q05) %>% + drop_na() %>% + janitor::tabyl(G4Q02, G1Q05) %>% + janitor::adorn_totals() %>% + janitor::adorn_percentages(denominator = "col") %>% + janitor::adorn_pct_formatting() +``` + +Chi-Square Test, um zu sehen, ob zw. den zwei kategorialen Variablen ein signifikanter Zusammenhang besteht: + +```{r} +chisq.test(survey$G4Q02, survey$G1Q05) +``` + +Werden Cluster sichtbar? + + + +2. Für welche Organisationen ist SKA interessant? +Hypothesen: +1. Große Organisationen mit vielen Hauptamtlichen und eigenen IT Abteilungen haben kein Interessen an Open Source Lösungen sondern entscheiden sich für bekannte, teure propritäre Tools +2. Organisationen mit eigenen IT Abteilungen haben Wissen und Kompetenz selbst Open Source Lösungen aufzusetzen (also Zugang) und nutzen sie somit häufiger. + +G2Q02 Wer kümmert sich um eure digitale Infrastruktur +G1Q04 Wie viele hauptamtlich Mitarbeitende hat deine Organisation? +In Korrelation zu +Bisherige Erfahrung mit Open Source (G4Q02) oder der Wichtigkeit bestimmter Eigenschaften des Tools (G03Q03 und G03Q03b) diff --git a/01-quarto-interactive.html b/01-quarto-interactive.html new file mode 100644 index 0000000..0a13431 --- /dev/null +++ b/01-quarto-interactive.html @@ -0,0 +1,343 @@ + + + + + + + + + +Untitled + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+

Untitled

+
+ + + +
+ + + +
+ + +
+ +
+

R: Import Data

+
+
library(tidyverse)
+# install.packages("here)
+
+
+
data <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))
+
+
+

R: Transpose Data for OJS

+
+
data_ojs <- data %>% transpose()
+
+
+
+
+

Exploration

+
+

R: Expose Data to JS

+
+
ojs_define(data = data_ojs)
+ojs_define(varnames = names(data))
+ojs_define(qlabels = attributes(data)$variable.labels)
+
+
+
+
+

R + OJS: Interaction

+
+

OJS: Dropdown

+
+
viewof varname_selected = Inputs.select(varnames,
+  {label: "Filter nach:"}
+)
+
+
+ +
+
+
+
+
viewof filter_val = Inputs.select(varnames,
+  {label: "Filter nach:"}
+)
+
+
+ +
+
+
+
+
+

OJS: Table

+
+
viewof tableData = Inputs.table(
+  data,
+    {
+      sort: varname_selected, required: false
+    }
+)
+
+
+ +
+
+
+
+
+

MAIN: Dynamic ggplot

+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+ +
+ + + + + +
+ + + + \ No newline at end of file diff --git a/01-quarto-interactive.qmd b/01-quarto-interactive.qmd new file mode 100644 index 0000000..2d9ab47 --- /dev/null +++ b/01-quarto-interactive.qmd @@ -0,0 +1,99 @@ +--- +title: "Untitled" +format: html +--- + +# R: Import Data + +```{r warning=FALSE, message=FALSE} +library(tidyverse) +# install.packages("here) + +``` + +```{r} +data <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds")) +``` + +```{r include=FALSE} +head(data) +``` +## R: Transpose Data for OJS + +```{r} +data_ojs <- data %>% transpose() +``` + +# Exploration + +## R: Expose Data to JS + +```{r} +ojs_define(data = data_ojs) +ojs_define(varnames = names(data)) +ojs_define(qlabels = attributes(data)$variable.labels) +``` + +# R + OJS: Interaction + +## OJS: Dropdown + +```{ojs} +viewof varname_selected = Inputs.select(varnames, + {label: "Filter nach:"} +) +``` + +```{ojs} +viewof filter_val = Inputs.select(varnames, + {label: "Filter nach:"} +) +``` + +## OJS: Table + +```{ojs} +viewof tableData = Inputs.table( + data, + { + sort: varname_selected, required: false + } +) +``` + +## MAIN: Dynamic ggplot + +```{ojs} +//| echo: false +viewof var_x = Inputs.select(varnames, + {label: "X Variable"} +) +``` + + +```{ojs} +//| echo: false +viewof var_y = Inputs.select(varnames, + {label: "Y Variable"} +) +``` + +```{ojs} +//| echo: false +chart = Plot.plot({ + inset: 8, + grid: true, + marks: [ + Plot.dot(data, + Plot.group({r: "count", fill: "count"}, {x: var_x, y: var_y}) + ) + ], + color: { + type: "linear", + range: ["steelblue", "orange"] // uses d3.interpolateRgb + }, + r: { + range: [0, 20] + }, +}) +``` diff --git a/bedarfsanalyse.Rproj b/bedarfsanalyse.Rproj new file mode 100644 index 0000000..8e3c2eb --- /dev/null +++ b/bedarfsanalyse.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX diff --git a/data/processed/survey_with_labels.rds b/data/processed/survey_with_labels.rds new file mode 100644 index 0000000000000000000000000000000000000000..fb9d1ad3ae560d5b6f4e38b239155fc6852901a9 GIT binary patch literal 230327 zcmeFaNt0yPbtV`IctS|1MN%r((A{P&FST_US%m~+9#kq-fCM;!pjZM#sAhO(dS*H^ z2AD?#AYpZ^R{bx;1(&s^X~9LB3vj126#kL|JcJk*gR`!3sUu-M#VJAOwv9kZsezC2{hn@Uu7c2XJyW&h5&*!x9(T%;BG%OW2Z`P)uTU99X+$Hm?+ z^5Y_{$X^!uu*lzb@~(@O{k!90?-%)Tkyhj{i+ot*Z##L<#mfG@ak2M{{J2Of@|Q(E zEb_OVyzgRV|Ngkx`$c|Sq!szgA|Dp{+fL40tnAOm#ojOS<07rdUl#eW$ltoe;Tzz; z2jBRgppc`L8_@sJ+TQN!&DAyhKVDt^Q~&=tLC$ILB12mDbMJX+h0mGv*?K-(_Bms{ z$k3%NLWL!tZc)#c{d7HFWR}*~%BPz_RlbPqr|bFLv$O@ve`gXdoOxfi^^9t+aSr<>&ostEdQjn2tdgXOaOg5@{y?^n?N>qY*v zPU^T{?0x>T7!|6>r{{l6|9|`cb{!CkxF5T}^SGczBvOM7>+q~B9;hO7G z@n!uk>Q|js#ym~m@N0ixkkopX&e_h+0o|*F()I+18CbUEhzHqpcJ9 zQi>D~X7>fl?ycbW?@Vvbj_w}M4<`pJSFWp_!1Zx;O;p$enx)rW& zg{udotH*+?C*-StD|`X}M5_P2_Qu-w>gLAk*4FxZndQdL>e|}s`o`u)aR9QjzPGu# zx3L|N&8^+Ft@X8CLDpB-R(CeGR(IC~+1uIM+}YgOP}w)uc968YwXwPIY_IRE@2;-z zY$<7D6>T=x5@c<6XC33MtMwaed+S?Ut83ePo9ex`w!4j#^|i&o7-oBI4~q!Q?iLoY zvA(sav%0#zzPquyt8s1szqhrGAtPyTePerT1OD)=Ztr0UpyIiKk{E7nXHj=|V`m5Z zxxJWgV`FV|b8CCiX>ARAyt)&c^~T!T8n$YCdws9eeSK?fXJcb^FZ%56t#9tE?`-d= z@!HPr#`fOU)&c>@4%!Ow#@hPo-ufDLPvhTM-`(2TSlwQa{odQ%-rU&ONwaQlVE^}a z7N-PTyR)~uxxLtx-QBfSoT%+pjk3A7hAOydiUSwS=IZL!9**I`rflMD$AaEq*`4+6 zy^Y1Z*w($>o!!;AhITeKchKpK$Ur4--f-jzNJatSligyTE&9miobzLx3;#{7Uyss*Y5iI z#@@yviFd>%PC%Ta?X`_PTnFm`Szq1S-p2hF*Y^$F6FZw&WSk>x_0GmFu0(D3&Kji}uj8WQEvm9RSR&5hs?Hfs^d4?T>|Q`{CF5$rGSqn;SIZVY z*p}`P-ZN`kd%8Go?5yGZ;o?=<8@LLwAY4;wyn!2L7x$GMxT$b=uWfCtsxe-Iwy@uO zn_D{1yiy6;iEHDHwND%hg|WT68mImS?$xbL zY>W^X2CuNIKrGG?wh?D?XEm-uTu|G1z1fMY19PpeZEWqObF{UCn{5j(7uvhE4J>ne z6}a%=C31CV75^_h+!)*{k+qJq2zzHeJa`qwWw*N)?*n-K*xOpeo^EL58@Q`ivE|!~ z0e5kEWva%%@~mGK(P%N8$j_;hIO04^nrhEA~qn|R;c!V(tO z#Rk@cH{eBUyppVMw9<}(<#Dh7-q#|(~iy&7LC_Vys+#pUVd=a@qB>pnhvjv+juFAXMs1c+kD|eZ9#Bx z<85zo-`&{Tz*UB=QxTk_9lrNq2TKmFhCRIS0kv2Xdf;yL`?4KNe4P&t+pFuE1266CyV#T6c-`OwGu|||@g@@6f(Jl6 zeB!BDjq!%YH<{S~8@qVl$2(;@uRA-q74d4j*p*G}E{5Av?;D%E%dv5bMz|F4PPll` zy}|LY#!X!dH;{nmwY5bfyj$Q=aW_Bi;KIhM&_>)fuVV+cw-@h$H*hPgu3_1lglopu z<3(t374ojZt+f-ok4LO+{#!$k*Ee|2Y~WRF<<&pHHwyk9{7T_h4GQQQ_|+^828jM^ zMy==r(({an<@k|ejl7<0^^bmrAjoHUQfbT_$TfF&Yb|U>&5%Zk0(X@#*c2_AKyEeoZXs^Pj25oJ}UmvPp32K zU;EL?>3DKG2%d z|B&uS?zyu;0d?~)r1sVCTXRU;2R;2TwxlV z;w}}FL@w7G`P3OBgXoXhphpdZ0aEQMAO1Gaf?zIV0McVOI5MD=r<9wcGk`6C*Y#WKj618$HQqZaQYLM#2tVPk9dSqk4_RwZz-v z8h^?v-+|ZP!~HeIa(F9^rf>cHE$Kfvy!FGPzy87L?C$B=5q{w8oLlY{)gHXd%10-b ze?+eS8L$_P>o(x)ADm9^oPIi;e>OSj*4zAO+GUT`jq%#gCiBxNf4uJLHl?fbzq~g& zz5mwuz1jTs{pnNJdeRxX-ml*Ks~*N1T^}S_a6Ov{>gNX2a3tv)A6HU-@Q9MIz7Ns!t`kTms30}@WFtud|&%u zdT{IH^yKu>ua54_@H$tny9*7~fxgBU&+*yOo$;6RENDqDt?d5YWH>jOVaEGn>ql%v zA1J>E$8(h-kQt_G1qMDo2l0KDKGvbUZa9EOh65Rt-+xC&PlsiG&LNKVMur0!#OE4f zt{DzwkUxK!t93uPygy@P5bLon>-ZWB3TR|FfO@qIPBLg@IDl9~bw&mQB%5_dhJzTY zV)+><_l_A0wpt^69*4~NzBdLZhzNIpu=l56ETRZIAM!7xvA zGoSUZ8xCZUpJ+(s66^a=Bz5_6UHUZB$Y6lz8yOBD#;zF-WRPn38q8ge2^?ISkF$6! zNb1Cl3M; zY*Ep<9FFdngh2rjL#CgS7)swJg93_ehR(R^__h|?F-2ER;^@XPT0-H2Z}Uoroe>reSb@A19q zXODh$|Db&J`w8EaVzSaT?~?SuU@)y%D-5Z8U@|^*#U+UY=PRb_r#PkI0E%AJjh^H) zHy0S%@)gl?D=D>CL^DK#h=BZFcs)C~tRDCQ`7zN>s@BWjT!K7*4CLhVbu zb4KV8U5l=_ZN{j3oYHUr$xo^L@EH+Zp5A7Kqr47Q4tI_9<#)Wn0U}QQGy`#2=UnuS z3Z=-*$`^(Oh0l^PpT(evp$3LNkk4T2@(fWs)vV(5gQC8dw(OYyX(ve!Vq2Il#AI$9E?%?oH<72l)Qc_{00tLwzUrn;*^Q znG@_n#1k zuhf1vyZvB#aD*?ao{aCEonmUfpi#4bI-yB_ycd!h5lbCh-N z>vh8c{Wu?eS z5PhsMG91KEy%(hSr61(87!)#S1ZFN->yw@H8Izsk)MK9v21x55UhAOl`342#F-Xsc z%rp8N1}7O5F>`ZeROEHaqK}G<^l?T{wRCZ}9Ds(|gA{nK}uaC~PvA0JNd&!_Y0_=l6TPfjO?-FH&D zTk+21?xWw#$N1Li1o!Rn++)ityo*9d7q9Rye>%ep4DR?DUM)(ilTW6f&!z_lZO?AO zdq4Vc{PP%w%VX;C*(p9fa(p(wJ-svj*5_}1_bq&$q}vhTzdyr|@_)MwJ^Znf^Iu}V zbKsEpCf5b zZl9Q_xhoBqvLHT3WDp8ML=jL?qsMcdt$ z{NX!OzK(Ilc%?eQzxDHGRKGTP*}z?)f58_x)WN-WcJ}}`9QOF_v%9DB$-OZi!b%hW ze)xr|F6(yX|I)m0;YxWAXZ>6GUGLj(jwc5P)A3|}i%-r+<4}tY>4>_^A7GGi>hwk+Y zM!mcrec501s)yo~%XEYW>%rg77`PIvdeLV%kU^1KblQ(&t#8YVT+MAg)+s(>os-@62rMyTsNRn@DCURm z{SAs3YKm9?SiPJ(NB6UKL@TOR%IQEETj_|UscRhb7#AB9P}tC8_vJSzpxDi%=RQ51 zIAIM6DEF!Gj2RK#eCMqvY645WT95Jv{23cL2B5g)cr5#d8of~xw){1V#J6Q zrwxkzpq_1m0g5~6GM?6cN5AfO^-ujT%|G?8zGRdBe%RG@`DE8+_XWZ~z?bNMF@11~ zueu(eVqvtIjs-ah*4);3^ngp z);$OD3rW?Z1XVfau7$6)Gd{DhWT4)PXWZJ72@DFo!Z?6K`E;S*iEnLOvOBi24 z!ZC;VHaBeMl0l9&S36z4BCA@&kwKN8w$Z!j8NJ|(S&WEe7v19qgA7t`E42r$zqO+u zYZ(q=s1c(N#N2BC3=T3#SeNE5_t8#QO>f?)#~d+p8a{V!V12eC18Z=Ip=w5t(+^Ug zW#^>D#vYYi<;6N1f5Z&|@@4$Py!r;Dud?eDtBX~leeBd@FoP>czSloTR`pYl*ol1AU zBvv}5xatGH>{zS82~xghaoar9#i%E{s)LYvM_u?-vxj9Jalr+q*zNp^t51%*u6mT9 zjL&PLUv^s~$3iz&D{C=VyR{ZQaKy+*+3A;f=diPL*D20`RwdbDvY)!@RJ-z+n#xlx z&rLa1E%Xqcy`+0CbI72m1>JE*@4~NK;WDO;4b{#V>6Fr|x~Z@Hl5vF_Kp^?6HJgVP z>nOIc-m~@5Zhdfhj{KBjsG7fB19Q&vDdtl3C_#!=V*7-HCBMe(nEIBbgLhV)0Z(tSHABeFp}BtI`Jtd?+)WJEA%RtIb=|a zQH?e~<1$9Lh#QKMLG;Pr$~I3}NzE(VvO7on=Qv~6vQ~pa230l9U9lfgH{k+buyJLz zxyaF+k(25umL+j+vzAysN%}#`(|)UmB;$%zHA`+UMtsgO7@)KVFW}D6RN4uxrjq7^ z#hI&O2)UgxSub(l9bsEZJQ>uhReXc_h9DW#o5|eW_h)Ruw6)!4ti*e@5u%T{oSXG! zIlkYlO9lnb-0bXD&o*G5)B0$)KDa8ZFw1blKZ!iAX4|K=bDtce-r8_gYoRSnmYsfy zcaF|_eys~1rmA#J27jFCq&v1?vQBKSqulHZe96zdBV1dDe)ln_Au zORsi@Y*UvlUAFp#DfpQ}KJAFj;o`3%ql*I_+3x=V@2Eoro2~_MOU@ zqN|q22l7;-ch*xa)ettzHcx##r8CLjA_+bwyUD8c(nuF#MO#~%Q;!s8HlS1wY_Gkm9eUod*-~1^}4A>m4hBpt6&D> zj19yGv4G02+LH29y3U&7;`11Nph4X{6m$DpTOaM>Q?HQn3sY>bv$B{y@Qp98MVRn4 zH5GT6`q1|CRcco_`ZAV!Yr~b-UDX$sveRF{ouk#XyC}PzHv6@D`tr)#n#!s0%mGLJ zZp8~*v5ZT4>|DuXe?jj&dXwi@K$^;+ofM=NR>3 zM-9009(#?1qg`>y_Z|sX)kBW=F1bUo)>ri{Jt|D&tJYZhcn#_qOTD$>ihj_2R$;R2 z^e^Dfsa9Sl%x9^MYvmP2D^Y%tfo=S8HOX&KKy9y{Z2*x$gR#cn>u<~)$feJ4AcJ~& zjc+L4n+G}WGbm!HkxL&aFj+T7>N%?`jWNT43~GA^)({jIT=Xw?o7>twyy{Vcgm;{| zD}2>8lCYkWvD8}|u3k-Hvh4IP@XpCQ6g!XUtDVVqnLe*B*I*v)?33>G2lCrqy?o~6 zJeaDfvy^kP-aA`47ka)DbDru;YQ`*u7pAf~ub6$nj-wCcSaY@8YwE>T9nWce?H*>V z_9E6)ay4^>MLXJxwKB&%kF~^Y9{nKI&~=piMLlz9Z_UhAp4TZj&r?p8o&NmqoFzXN z(|yA9_r5nfozMPeyz;CcF#?@8oY!PN#?CO{1ixJhm(wRx{AS6c zQ{IBl{X%}~-HA`5E_=F&cX`9mWRS3W*AEP0dY6~X@B9^x*o>DA8BaL!85B_TH8&Se z88E#c{bZ1^{Y?MZ8U?%vymNA<8Qy*a8ht_X!WKQuszh-FH*z1q{ z*l*QMHDfNuK(WsTLku+K&=0rGp zQ3ppZ_2P@Um)Nlvj2jMQ5c5?d>KdG65c|d6Ko{Pn!2$AogVHiwdEVSNbmb6B9n^~% zoMcd*C2;V^`V2L9PxN`r$8s%o~j!9fO9IDH_%1_v1wE0PYWE6!u|w=si*42pbnv(BZjWw@%Gfq2`$cO|n1 zxWcgxs5dKphQkoUJy>H2)_Wo+>ZN?YYL!R7V#yaX%ePFnxx&Gp*BA9Np1N?9h65<_ z3`S;{F)Q@I3&S{dkk>URWRUv}3K7y@Ka)t|QEFvK|qT~|Ti6{jp5XO(!x4ayKRPF8H0u6ULi+xTM! z`Ili8rvz2A7#w6!tQ&gX+nC!B5EDa|O$qAdC11=dpFtsmBF|ump+=5;l9zYqs6#7P zx)l$eZN&UFhLU-pm>hbnF6#yZ+@Gj}a^9A?yHj0}q2&^>PSHdxp_95KQf z6j08O8O=jgOmq0WC0?zawZQ7>edMFR=+V#MAcF#HZuVwu`>01qqy?tb@P0`bw%4DS zjDtC}j=b*Ji;~x?i5k^q% zpSfg^#~`DQ!61WF!{;@3Ev_iVi(lA5Nla##fukSfwz;~{i(Sn>gh{?w4@zlGOYZ_= zGN(H7SM`7mo7l`Sm7~5xHuIwfb=Ckm)}W9S5?J95N627zf1}Fc@O_vpwX?@vJ`%t2m|DpgfL=B?c60%(}r4 zXMffemt?GE#z4`-U<@%aWX3?1G&r7yhw9MR@8i!xghK28x=}jot=laEPJmyykv!9uV)3v!&fx>y6uDvxn7)M_UATY33+jwVrO*s-eCCz}%FSBXI(gS4X94RiPK zE)Xv!P7F16E%{X2&mR4t9?skybt5jUWWohTKFR^zaR|lQphqtC);2gm;m^9k5JUBv zl=OkB9<&VyG1Tb0%tuUN)zE@@Cey&mwz)nzc2F+yHjk~mP$XK*fK;T5M{Sa;5aW???4T8qK4jEP+q z8}es7buqD^$JS~wt!;3KFaJG9ot{==*vGC|wVwp5oaZT@w*OFG_GR5*JPAK-?vvy_ z3HEWbU$oXmagXbl<4;oai@S3$WjrMeO`PKf1EklLDA%omU zDczue0xMn8ppZd)Z5zxt1Tw>nIU0ZT1tw}`OxB4h9D9=OjHM3B>xg*`fy~5#RZ}v2 z!V*)kQCG1cS@5xT+Cw<{KoO%3zEBSX5Y(GlK7+E1hcNJ++xIf=oUhPNKs@QEUc1la z;zR0(_+0nNfQfR z_59BG!{bkGzH|K9(fI7}9)85`^z+kFrw_ zpQKAY@MCC5KfxGBXQ!XzPh}rI`t|Mmr_)mWYb-uH;V2IdCi89?uV@+93hK4HliR1q zh_3ttm<#-S@Dsn$Bj=Cb{=v!k5I+EiNq&CJpY=O<^s9ULOWsG_8lR@@)t?P}hCdrt z-ZywIPA5lqe&_bTTmQS0v%9(;C-=s8@H4SLc{ks+-+C86+IciNJpDHQt~~D6xc$n# zHpAWbPXY3bEFMO7|!hhb?xIe)Q5XT?io#JO? z#~+-|&mNqfVO{F7c-`o5C)0yl{JTg`eyd;IlNY!ryR-8rAMt|1PvoEZk3pZ@ntpzK z4=1WS8P9fMU7fk+O)8#7N4To<6NBE_<)^%EIDkfm1Bg!!dk$?Q?H+a)PxhBYw&VRCuo0A*Di{)Ck7}wpVFYz)A z{ldGR>l9seDqP8{e8iWWwpOm8obWYy@>A+0%BS2ch4G%u$$VaI;Jin{XI=HxS20QN z+0^#F^nn~_t}gUqt9Hh_&OBlYPQ56d<);)wRc@Bbl`q@Uy=KXezN`yU9%b*^G9tlvzkr)3|d}XD34B#KD?C!a*{SgPJ`;_ump02!2HjyHFo zyRK^HQbTn-R%(O~m{@P46C=);>~ozp#ZUuFAINQU)%Bq{i0RGF95P5fDXV%0hZw5j zEk4^>*R0;Z@p1E4-K9~GO#w?e5=fp0kD~1bS zs~61DIPf}?j%o1P{iXTD=bWq~bdfxroxq+`Bd`OQDmD<0`sdA+Vo^^%))W_?W9S2U zeRFl8XB(j&9=>=lQ=C4rK>-EE++4&NJBNE~05*IELkyL56wBAd;LHX8xHacGdR47* z*dG+@dm(pDH5I!T*6MvH3{H?@?n^eYRULx^l<`A)^e}+QAg^t%MtDopd^N{V{WMe56fVW8b0&Y5o&NmqoTvZZ(^Gvx zy8D;eYwzAZKABBcUiL4hcB^^)d-vzZhqJT8mwr88^!e!a^K0+pSE(MK9N#@1zkBE2 z^o8$gH^pc+KYse}KYh_VdDXx9HpTDyH{9YY!SPPRca)als@|n?Jjb&CJbfq!zIZZv zl3dmrsy9?)2sh*#%FRCJfMZ_Tif3IuN>JobHykdDQ992S=NA48@72(3%wOVHkHI)| zKrxfKS=;nogaPaIfUm0E*16n&m9rbDH1&|n=yU>PISTRnUis?+9P zG|vD$kI$=|2V8aL zT6-u*z9+#dXGpenT6-ub`<@h^bDu?L-^cYv{6gnpXpYC#9?E$ZANpNr*2}+ho@EtZ z#ax`3>Ms2%uJL)UY1w|kf1xYhW!9fNokN)UojC6C*uYGZ>!9fPm=A5e0>Z-~4 zMuvkJs?Pzbd82lTT~AnHSjYX$D>&bCVnM1Y8CXM543%|=VGY%xl%FxKS(tn-h#@x4 zfx!Uz9F*XZ;Q(R{uWz)H4V^fzYfwOeGdCA8*+mkk{g50nMn((7<1@e4F#&&Q^J^cR z&JGW!<4=zd4#uCKHQp)zG-G&w-+wynJN~0w1^CU9?m+)U{{sH?5)1c}e2SQR>1cQV zh;jNA8yO4`ZT8MF&dB_@j-b=$Y*0Ws#{6qWZ-*Jm)%w(jk~lGIyU(DAp?WPy?+5AY zU>xLg8x%4qp9fz%d?UjFG%_5>puFB(&vOg_GD!6_JF%RHb7~%8=;s=U$@NDDhZw5x zF0((yM)ZT!*L#|~+?V%0VkPctD7mBJt9o_5m-1fp^>F@f4b?tt-Hri-=R*6(bK=*o zd9pMksdLHwC9?)O@4aITPLRhSqmR+s`Q2wQ$RJ|<8iLF<+pL>Ge!(`*_876dLaTI?_9BQwuy70ESoeoDpUi}e|TVyN;*ui|5#`ykm%byRy~aDsdegF*&* zUxPvhsRsShqnE)+Mj6Ckj`u~*n;E9o#WiaGuQ!?Y@?jd49y*+|Y`%URJ3<{{S z&0UMVhsilc;FyE9;Q;bngF*%oTh%stOK)>E>gie^(N6|3m%UiGt*!O;)@A^Mh-ZJj zm#`MGtS6?=>lhR<)OK#ir+DN5>$5Qix^6BO`$fC>GA`?$BV3k9WnW?`wGP*dzuGhU z3Zkg-R_vwl1_eY6`%5yH=SIEL>!9NlYiDSCs%BhAr3do@ zYcR+l)+K8WpWWafgJ>(4Qdq~8IDKB*popPH9(^F%z8^);YxEf738NkvC!gv_2F6eT z6gcRy?&4=JUxz^f<=)h}hwd{dnPIB#h<*@ptUodwK(gtJy)s79+RV+xT4fg*y#dqu zMvRfs0(D>7d(qDm7U6pa$-Nej3mhs<_lbK( zdt^9(XmhV5GgkS`)4fEUc;dVcq{oZj_Z@m%BgLQdbxkmzI`he#A>T`yg?`5w6cBqT zM|r~Le65KXpV^?0LBy+ua@(1i&ln}K!l}RH$Pg4mCEl4nP<4&LzHT^>L97vM^mI0J zt{Dzw5bF`A{qh?08xCTq#0X2N{h?p`p!3RFJ{u(CT5HT_aDrIJ=b>&mfHX(0r5@_9 zbM7-4lE@(1(F3}0KCi(6>a7p0G5f8@ubAF`*<9!;b zI?T`4bv0ATaZJ&fSIuQ`fZ859XYxl5u&n2E8x)W*l$xtIQ-kw08l0evUg()4W0GA{rcIjolNiZTZnh(-LDZW-*qhCSggI@aPQesi~fe!$bP@? zFZi3h;wmhw(Bxco-c{;~xei-9FC3-rw5;pwxv$CVoIjMO`CJ+j$RJ`>ldlGO zX3b0KF-Yq9Y${iE(ix1p>g^aq0W!#IK{75~l34o1QPhX~uRfJ=>53@?3MZ z+Y9RAC3hWvlUH}AZT@)j<`}G8D2GVf zFU7qE?d&UhuCF@uNsmhkzNn*ksS#NDi;UcYQ(fVGjj0Cx5reMTl$Y(SD=%_cQw&w{ zyr;TUJ*UA&ZTdmVi}lb4?$wabppZezRZY#ZOnP19<#_Cqv0~{>X*iHUfj2i}@4^pv zo+Yn^m>kP`tdVsyH@D#P{bhQwTkHt(371JDB4NzU*b%Rld|F-JnXD@wXM(vG$QNER z@38w)4ee@R(L!qsEb%FaesNn{btH2w`Ld)gTUeLuCx%L&Gku`IWZf89)brZruDGi5 zyi4mbM+{ZxA!dNj`xhy{)*)G8RF4wmvr!rjWKiUpn_-6^?&^FIM+SL4b9K4Sc;-vJ zbF})rds=nGFp#f~Q-Q*7ZgyuJYR0s>+a*`|+9la}m)%$DE03_B>*mc=mhD01y{!^rs&bIp$_nQ?XbF@x+lqQ44zXYy5Gp3<2_`-Z`3BXFzt| zIq6!JuL5HY<;dqb#^D!dM74e8@K;#b1_k6j%+)xfIbSuRPr*7S>AjgzvZ_O@7^>GR zGHNjn@|hs3-o=)$s-0pzzac2jIQl@2H&+*WvGW|Uhr&`yhZ=F{+6(s)Lk49`Z%)Lu zCyZ6SbIf3fp+=nnpXO-mdTruCp_`kFJ%Bm5H}n&m`O@#4m=cX$hm4gcT`P_q$$EO3<_v4 z4*yWCe06)=SfQ>FGs_PdSc5?ZX%TD)vYg93^? zgFy!Qyyog+tuSN16f08e^K}C!TkFYw#lpuL;*#rm$>(cgj6P80LXUdJNEeGai>*Az z8d0T&xmvHQ^Htxbx}2{NUR zWKh+|+!g!Yn^$q>Nv9M;4L|gD)@*0Jnt^$$M+s6q{O~EidUZ|MSf{WCg$(jsb9J#F zjX!!3N50fMhZ8v)8!c8GD~E4r#qCN|M`xjpv!3cm*A7;>1|Y~W=4z)yRla0Zr(ivn zboCInmDO&S9x)H>d?m^+nQKwcw$CwCulS;_!2wdP=JkB@P`7UC*@o#oi%^*_(=HIOSASc6jxwerhm z9ON;BLIwqvy3x}}bJrq|aj@?bb;Cg{oAQF(TZ?KK6f!6<27?TW`sQZXfh8u#sJAv; zUMKkn*VV-@@!vTyb($nrs3|2|OluRDeOYI$vMjpylz-*Rd*{U3F{92`oX0eOFGl>bb#-}{ zc;|R$PSAB)oI(1))frEid{#0h?tkXDc=|G@xcg}*pK9g$nkoAnH<0JpKFSx)t{<)ZoiQ0 z3;G3j-G?6k&G%V*>sLSRR7`e@xjTP<2$n{J|TH@G@kSCqt5P) z@133E@1`H!d2@VgdUEn|{-Ju@P5P1vsB*R-a6G#^zB9!ibDqo}oW4o_ z?BsMDpFKUDo;}@uVSt_Q&kpzpqkYJ~I=nl%H@*46ClmZ4tGS;eHu-FFGX4}NZ+80u zKG*sge!tc93;pvn82kVG!Q|-kF+LE_-TKqsY^T`?i(r))VvflmCPyI@JD~J3; z@%XdZSnsXb!JV_Cd)=}>o$+*i_xKo#?yk(w&&G6)-#)sBjsEm_KK^Kii}L8?aB_ql zI>c!j;{=WmkMB(9M>sP-n;-vT`rtH$@8hGwM{kZlo6Zh!UE^Y(9%1)T9-H|Yt_a>4 zaN~2qC%5m8-skFAi0n!spJRupJWKhp%aFRjnTg72l{R|E= zC}yN?IEbOflM{WQh(qtK#o){gv%W%5;6#Cr7-HuC5L z#Xdrh>#Wrcj?9;L=dcT?x{8V&tID>)AcLwLbJt=QVa6^MY}hTf*hBSv_f$)DD49bB zwRLkW?{M4=$cbLm4F@r8FtJtLfq1SR^@szxout=-9W@y<95TaP8b@phU-e}zP}DFt zI~!_XsWT?dcGejOF)v@Wv6d2xx&}wfaK${(+gd(H@mF=^Gbm#EsDs-1qlY1w`SR`@ zPEokp5p_pwa4O{y2l5>;SI@@-lFvfB1553a=T|iJYL^WTagI@!pAw|CR?-j{;)1W% zUwnggSp($jOEUM;{ILfHAQ==mbFDEd+dGtb$ekU@D@9b@i}T#pM!$+%cHYWoi+I3n!6~@TB7*oO@HK?l&Wy^3y9J<$|lx|SS zpzvkgV2J6LJ|r2>80oFw;1DYYsX4245(kR9&~+8LZ@><}AxH*AzQK4Lw|Ll9&t>_< zEsG8Lfsg%UE}1w`*0r9D?X3qnJ)FTw2E|;^g$tj-ImE=$4~pLAW^L0azWh4}&0;F* zVBf7GwK`!GlU>CPNg(%`t8u24C#ihefzLTv2gdV?Pq}Sg*uYcQ*>``bk@f0~DW~9k zE`vb^c|FLOx6xI%nvEF40hIF`V{no|zBb4z*BI&VP4r>Rh-jp_tLvBan1ens)TjZy zn(-W4^9nz-k3MJWBW&(httHLk_1j$9Am+qclJ0d44)NvPIqD#ZrdmmF@{FMliXAW* zWKc{m9WrXsN84~{8Lpfg82GauJ+nX8%5~(I4^lfGy@Y8cbI7en3uY2;y|>0Zt8|ZW|*<2#;=;ap2&%q zbmoGh7WAsuve+`eAwa&oI|rqGWsor`^}^MT2?JT>&@TAit{Va%?Y?l5+QH~;0FyzE zF;^G;^MujBo};OdnacBz$>4wPs>{)+S!% zBc}bRYRhj>TE4tHhn+w^xw%@Ol@jwwsW+JFtO#2$`K(1gFxoAb3ES>Qj{AHmSM>tJ zI;B=yCuUA@%}`<6c(L0vtz1dXGAMJ6m2RH{$CwzZ>g7GndR#@oMh)t$0ji|AYjO1| zUi`5p;p8VSv1ZD?=mT7iS2asL&!b-Kz_)QgqDP8FO~q3z=Af_m1HbTH)~9VtM^5cs zA!7wYdcw!96x@Y&rL8$sFZtS;qQ_93loz{79Q`>)UtzDun7H^Ak2Nw5%KoLZG`OhI z`V9_oidAc7927Oo&1#NVt74R5s8yVPP<4gD4h;3ju>keD z<;6bHC%<&b%X`m3)4{W{=v-fU^n>E6F*m(NwGy~}2N)L*`Em^L_KZf&oJ(EyKu*LA zK~T)GOg99?EhgK-P=eSe_JOwH0IGbjt9guwf-xv9!=*YgH!+}|O`rUd21VTZTD!#| zUR|w=I#TkO)%eZsC;-6FRJ~#RYA5Q0o zv!k=ayK{Vo6+8OUf8NnQT;DD3x_>D4i5Jx+fBn1o=pjeJ`DZ1Pe6ZFF7}JAquZRX=pDao6S_rTe~%xJ zk6U;d_?i9PCpHa@$RL0BGALsD3hP}??{GaVb3pAoXV{2&ErYU*5eobe=5g_%oG106 zN31RDLv<8~^rr^eg?sBr*r;!CiWw)%rUbbS*{f%aCV$oqh8U`9L~Z$m$x<;%#bEmk z^k-%q6txWo86@1`>;?cC)T?W7whULVhcM^IF7sdboB-6D3_gDzq%<5rl{7dqD=r`G zsL5Cx7f$k78iaFRhiytzC4aYrn}3eUJO^bN7%l;S10I4^A+dFRBwpgYIUCRfC1L6U=$DsE87 zpuj=D$SwxnkkB$*=f+$7)7ZHO^rcrAYlD0q$T;it(KZ}1!whWpOGmu7KlCvU>eVxM zFZ_?g0&=9E!6B=v)lq(RUfv5CAz&(x8w*ULVrWW0CUpdMmCx zgEGX5L;CtD&%-T=4dxL0h2A-FMlr_Vt{MVlP_=?=Q_r@+X!%*=ZM~%yE=i(7xT8FuY z!w|oaJEu1pClYfikgk-$NfkFJWKh(k4j#-i1jwLgiW>?%E9V)qK2%q6$o4&_w~mZm zQmeN=DW_MDH9*z=8XPUd<++lKg9huFhXNn9i(ltHuT{QYJ@zPE)nTp7#Lx!$`Y8>E zmf`C45a#^Y7yK0htxobntII2*o^6BC^0UU4!d0O)gFA+u7S&cTKlT)*wuQjUIlm!T-`a`g)6?=gD1TPF8|KKh1q*fhELD5 z@r=vKK|QRwyY|Bs&!)^F8xG6(S>wyfqh+{ydGrwn z8r-++&$_`7%MTfAkx!T`g=;agDKi@kP;Wl^#0F&<6T=ut_?Xk+6f-WpmFLGU``c(XYvbk!?^iw|>}Bld(2#aAbbgc&_!ddY%D#%s*65apn|0@6OQ`GFX$fRL`K0 zL5`I)D4Ai#)s*!H)2p!z%RG?qQQO>IUEx0KGHk(D82W}7?&wEdc8i6-nkUDX0mtHLyYcN`7 zoSglzeHO_aqYesu)(wUjYOe--ktdww5S}s6;9AW?{d&ZMxgSe=8G<0yb*yZIl6je* z7|_xlFXYaNE5fw2j^+leT`?QImQbH#jn1ARhH{-t*KkL-fe{P!Gi++dHRs zCW&DUP}DaVV*1IlDM4;a8kEd1qfgcwOs@v8Ri6ewIH&3}H#2iVy?XSC4azbmhB45& zc*YHfAwEC${GZmo;y;=8%s++k75O2yt9|%#{xD+qBSo+I9~C*lz5nH$@@lS^CcNGDEy=z2d3UmK$h>b>8|XHdl1M?L$ggL*!5_fo%}XnlRews`r9 zzxOhyyo{kh5DXjz!npY4pvdd5%(RkO9W!I2qeb?#tS=Zbd5 zQwM2Hy_g}GnOJaKTeKMmRejA}gS~W40uSi9eJ}4{5be~o#Rla(CQfnblJZl6Vs+4a z^@}es1_vmvF6xE@88ozey|_8F*SES7S`2M5)ZSTzuQ!u$%99k9aq9GgLP|F%nV0#O zVa~(1vDVHtse{^cpesG*Hh?lK2Qtnm>T+pc7eFUIXA9ILy!#WU2*2_=o9l1%NQ9{)ipTCpy&&I5Mv04q4w58 zAJ}tKJbD|PV#dK-SI&uC#tes+m-#aenCN*PzKylE!I8O*!;Uo&2a3K1gACG|2G?T% zh=~=`2U6}(-65aw(MvT9$`HTMJEvOR&@}R4*t`N?Y4$C{5d)5$p`LAn0qR|G=I;J( z!=2~IdhQYHVr|wUg92|b#87+dp)dIrk6Oy51nH{tzUHn)O_=BQC4Lzr6g{C2)?qFv zaOP%h)0Y`$RSR~kfjCfA&)n7JK&^5aYnhnBUWYm{pk6L~7wR>HGdRUB{hbrLz?Bw` z-D+*F8kDcN3Tqx->^96?zlRl`I5B->P~Z)QSboT=w(JyNnokVzDaUIS|FXR3X8;Z{ z+<}2USciF_z?qx1O=W@shZN4;?DmV5?9TztKqg3maCOh;|DBRA^lNK=MQMdxeY*qM2fepb8Glh-HJ9NH0kJTW^n?7&o2wVP zbJ{CUXWs8B)@d28-W78m2Kd;U^KguT&aI7jRf{%r>5>LToPE>_SF49FY=Z%cy9@fceVTaGY5lat z289d?yulDd)mg22w|>}5^NAH36p(7h+6>Oj!en2oXAJbg{>%Zz?B-@|)0Y`$RSR}? zEzr(*>L9JD7c&Gi6IP)rS7s|ug;8k}}7 zaEvQI<;2z1`KpA~M+5qQ;L&JcegcTR7Y+Q~3%Zw1*WeD*=t z*@*h`2~P>??XbB!cCX53EXRvpVE`HIO>E0>=`7_Mc_zhU4{{CWgR6e2CS%L;qMrdY z#Bc`&`d}UAfdXf4F2@eVnGcRxsS}qOruUG{u~sJrJhX?^oXi6a`Mf`3F~<m_kJACsnd{Y4z9g{f z6K7EQ#DKKkh#Q<@#=+HI(q0>f&^ss2xVkTs7%+BAI%IDp*+(4h##h;fAjs!1 zR~I#5YPX{gvBZ%-Wd!r)WLd+ zQ-UHl>jon;%&JyvXDoG4i?7aA8#iW@97%(+jEMmc?P07(xx`ABgiq%_@bU@M$`^X) z=#0m7?KHAi>NDsog>PuZ;bRUl8Q0nd2gv6zSNm5A{b;%;=Z>S&-=+;gA`o@&XTE4_D`WNxz>HQ)>m1_4JF?F)kLS*s&Y*gYp^6eYAVocM;vM z`ciigZwQKsqYkRDvRi3zWM(`wV<6RxJJ8_FEKK&bdd5Jn_AO&Gj($+A#bC7D#$mU2 zPA^|Mk_KfN69e{|#DHQy3`SvF>MU{_oFbx9^|M?!7s_ zGdVdKpTHVV4i2W{_l}Q0na(Gtv*V+aPbTxzqv?G7tB;!RKRLQHJsO_?hcoq({1nO6oX_P?p!5aC^ zHoti@KR@JXuJE%C8I=UN4$1nSE1y9DY0Z>c zkM?V1aEhVQ@AZ;THDiv1uog-!P;Pea?@$_24~72cz-ZXLmot6VCYVqu}=)qdOP&h^a?{`Tnj;P~F(`gwTg z`1S*A=l70}PAAyK`BC>gi6_?XQL=2;*MB&{--zu_A)hewUP0f!JH3A}#RKQ~M<3pN z@A&YODbD2Q-}z{UYvl-6$ZYJF)uZ3spX2H{c`$$UtGhttD!(faK3MZEZm*lOqnpQk zUiTYfIy*TX-#$1#yK`@P>&zeAaU35`Zr{iLO>W(P^sA$LvwJV?esx#g^dr0i-1iIV z7H52c-=Kkym23LA#eDCa3|G?n}+`>x@uRC5ryvgU|pHBbg)HmwptqK0r@0_m~ zKRUwSeLgvzpW(G+{uVb0FLD3pkMPeewBZW`Uah9(A7RsjTPLTV%#ZKQCx?fgUtVzd zqV)dk_Wbzd_%2_b?u>6AzvZuq?@Z3n*nd$1ZyEkIWi);8=+{Sh)$xDajSr{u2k`L~ z?iW+MjFo?eaqN4KeshEuNc`&zfSV|YvC#kS^aTI><7+9sZy(*7;g*?qS~etpsb z@Y2W^+pos`htvJf{qN%XwR1Fn8)s*JgnwLrioNl72fWq9jniF-uf2DC@-n~tbgTH9 zFZDzheys7U{x){b`mhJzcw4WQ`1{$sQ7?aA;-3y9Lo-l3Vw#)r2&+d!mnEi0M?L0B z#-k$Zf#qke9vh|Sdcx($-ZtOytXY_G$Ivz$$e*nfkQ3{stlwZ39U4cOFs>o7P$QODejb?2N4)8VRrI*eAjSD|lwz^DJ| z_-%aA5${l+pY{Ax{tKe#|L%C1Uv>PSD(64A$DOAg)rx(3ERHK8a|ea##SB4^;+|vf z>aNbB(?2S#tCn(PIDjJGV30w~(M-g~nJjwDM%!>8gV;xNRubsIq zYu(XP7=x0Te%heCf7+XfA)e1|><|3aj03i68!2tP=LB`bs-E#~INbx+2_d<-me0E2&a}0V9 z4s3;+OcMXA%@C2j!!<}mCxJ}m{NDr$Y6j*hJzSt zoMZVYL3v$049cMAm-Nol85g!AS7LxmxK}J;n=$bv3j0Tx+WOBz$iV zON@D5i+1v{u4?)I!j3tKBZI0LVaGljqs4~Idr@JGs4w%Kr(Jlhn>2Q1gt57EuW|gM zj|>VZ&XBnoSDa&uk2z73I+*pi%c`q8mv)>Hg8}lM=IY9I2&xd5pXHK!mN6hO$=H866Cu>j=lV_klG8|fli@nGr!vW;^ z=4!Vd>cwW=Yekp5UhENN(K(OS%6h_%7#Bm;ez7ibWa@c6oK1TuynJpO0GVNW9r=nK zKE)x~OY^^CFhIol>_)4^4GI|)Yk{sc2HxN#qs%LS>Ki7Q*S`VtS3l)9eNNsQe}GS| zoZ_1-znSxE`uxfxKC6N+wEEXd`Joeht?_|>eeEv3tUDdQ|LE8FG|TP#<;yXjpUofr z=Jtboh~16v?tJ6V#%rtpDPlzrM#0%3zT4rQBQix+uR&$|1Po3;s)UWZa^~UTRNyp2fTdsO!AQFB{$bes*av zK-5)Bapi?HA`{MFkU_a0^EE@{!WaDv1{oAS=$>QrF7g@o+QsKytKA%=TscJ}r@kY10r z;Q*4qn$JA6s6{*Zyk4<=pAq&o7oYCq@TJ`FDF-s|LByFuZtndr=f5<4YK)q9HFnmx zh&qdKcw%vK>?|ET#@u8ziN99{Ho{D;1EO2b@L3=y(XmANMH0c z7-SIZjtV>0V1SsfI+`KQHe&L5-(q`?!2tPekjr{{+=wi-%+;lLUdC$=^Sqo#=Yx98 z%DOGXrTKkk*qS%{U1u(cabcscF|w!?{^Ik!F(SHL?z7i0dKU9mv%(*J|Nr*BrAM+O zJFiJKIWwYWMwVpRmLIzILTbv@-6V(eAT=VZt6wDhIV^HoVu~JRb=|7UsjSRWKDsz< zNe)>CEZ8t?z=Gk0fDvrM8w1`LAhh7ZP;Io;U(m)|Zw(ldzwbnx$P;nz%~xghL+n7E ziWBD*Cr&)>y>TDuD21|VPg3^)4n36UHYBvbGF7+H@!&)!K7l5RhWKE$&dT@KhZ0bZv||8lh|VS+)jAqoZ^ytG%W& zd9Sk^BTriZ)mI%UJ1~%}eyk64#m_44fG7l7w2Sgthkr<_rz1-2lkV`(0%-u{i*Mv3 zMVi6m2njURP3m!AB2i!X4u}O5qixcWr0fJ0Jg?dYEqmgq-WL$mE7Kh_asqAx5f0F8R2A!*$S-GO1@$)9=ZEgaWT zt9df=D2JpGi_r#+5g@%15z7lQ(j&wj{voN(S%(4vDYwP40_!>(AelKq=BxvP6nVr0 zNKXN;)puYZQTD9EzZ^g!Pi-V}foJ)wL*n9qAPJ5<`sGj{ASq8{k?Yxhkb0q0H}j%x z@WmGg1S#SU1qDmLj zzNwuU!62t}wXZq#Syvp54g~@dWzIVMLlVE8px&QA6aND}*2!|9sh>$5V5{%yN3Jr=2c4ZAZwHYuEp1+LSCp|n0f9`twhaE^>>Gb+*#oI5h z6}QLZ?Xr9E8Xi?|Z?{LNf1@)xYV*De+tM3l<4zfqn?Jcln=BI+9_vyxzon zRNG^`48T_biYuE}uND}S@*;qLW}a*5HpI~PSl8NPksBX891rnKf7yF;^729POFD^S zi$dg%I9A(-h|3TCDBA3{@9&2Yd?}2?sMOSqMd`ls%Vq&&hv4Ock2pxz@a_Z}gz?ki z8(UbHH_HJAj@+?}>u0fn7b+%C$~U>-tGXEHRI-*~%QM^HJwuYtSw(UtKG1bPn2` z;x!z}(4>R@OwW7`zp~ZY<(St~2{Rk^O1!+b-M_zv^HCg%KACB8R+~~|(e>GWIB6Crvys@wAxy1YB_5l{6rOnM!@JTz~zGmBrR_ef_>C0g_dsg~}9<<}_U3P9~Bin^f3Q9~J(&+}Z4vI@DZEmI~d zYp+CqEWZiQ?NAQM+EP4e4`if%$`V&_Kom$*eBK;7ww_wN&Q_*3SG~|tzhgaW+uBpw zNprP{e5!x5_;r3f(wS3<7Cl00Y!!KcM2}_Fu{@vyC(FmeDXv5B(C zlb-V&2u%Q1r5>d*x41)rfE42Z{7IQPF&^~E;omHPh_nNFMZS(U%ib)$+SI&Beipw@ z?}?u|aU`ktXk{F!w#B3ynM%*p@u(jl+Elqbhg`Hz9+H%i%Sd)W<^js*a!O+kh;~(u zH1b$R5*g$bpUHFhw+KKywhMUFxAZ!DnQYXnlT{jY#AmB(d5W(pM?IBT*4c*KT>e|# zM>=z252YS7d(9RB56J93^n)u7y z;ITgH5FGv?t$OCfSkbn_KLS#$-=UBLNOQ}oE_5E(%$d6_>g%lhG-l46H>l^{tDEyy z^)q|(-O@L4!brYx5AS%%ojmz$GC#mP^xwEU!d*b#^23feKFWog_xdHRJv=y3e8^j6 z!_o2QBYsvZJm6qV&-=YPxbVwYa3kv4xVO)nv+ZtYbo}Y4;1}P9xHG#Z|M~H%e+aIX+e`yoX&OrSzgqqMdg=m8|sm`&Z=(~zpnn%I7xeKGbfI|x|S*}j}ppr>8ZZvxgDjS zB)2v#Zf%0Tl)u)7#bGb5Ocu8?bvR_BAB*VK**Yzn`lWeOJ+t_AdQacXscQvkNO1%> z6q;aOxh8$3ugVVXAw}O6*W3ZI&_uT~i{P-g)C@R@A1BdWux&A}i|EZG`&7)F*t2XA zQc`vxECLWuqM4WHwY98Xoqe^1ymm{?>Zq)xodmb`fG-tWYhxZ?maS(V+g1kkNMCDi zc^03=x3Y>q6*DIp>FW8i`I!~XoMr2;(^H=`rwmeUyPN0^jFZA5wyiAig=U=9bts%R z%&Kn|zs|oWf9B*~H?^{fK1+XIz1+?!%jyGj#hdKU;y39v(XBm;H_0n~5n0vI{3N<+ zW0g7lS!m|7?$ek#&u-%^wio%uxjFGHE>H1~2Y!KWqCFd@GEVtRcGX{R^REK@lzBs| zfL#3z*6^0j2Lt@b5?;Q&-0nTVn~RO&O=gtt&HapdyDxtYQYF7=xsS|G-{yO{^2)h? zk!pP9B?wK=ZY75{}VEKVCpQ{&=9WVQ_D zP8(3gOkd~qVVbRJym{@b+$wF+=3|*TQ)dQTn#y+&$U${9&-wF~RbTUY^{m`9UCXmL z^^s<_8!{^!u@1(T1*p#Sbza-kY)#|MYhUGHYo)P!Hghzx%#mb7AYVGl({$Co1A>%{ zzP#)}$YCCtT<0{(tMp@^^Ku2sY zqwAogp!%9CeUW^cE_ku+7N>or$a5&v0mw-#>tr4U4Svk@bzVQF*_y_i*S^ZF(iUx= z#>{zkU;f#By=V8IF}3RNRX(FXiwhQrCx3j*-07Wq^hEon@*MU5w%X^ggD*c#dYZ`CS_QF<-{i3>c@~3eI^jK%k(j%VHK@xrB zOGjC4I3PJ#p2aDLG}HHaWE_M}8&>JZG+Wbni?$KAmhRKKx*p5Snc9M7qNP#MysoA5 z(4c?XGbgrP>r%h+veIonkBpT+EgXKtcAT^h*lJuc9#uWdwBeD=oFvNABE=RUHAd2b zSqG}4d7aEWG}YI99-Ulfnl5-T7P*||ITY#uLtZCIr(*8N1z zoH)AZ;XDAb6CW#B50ccaxdXB&K&5eXTb{*P2U4S+1CxL>Q^rB)v|*KgOtUqOw`dz- zYvFMi`KhJTde!B%$%uFhf9r-bYRwj>L8zLyH3~AjGcvjP&;Zv%Qm+> z;EAu6XLT$-kBpT+Eqs-JOtUqOw`ki|X^VBA#>{zkckv5(chSFT^5*q-Z{6kZ+IHjj zSn=K0opP_spVZvOXIk6*RaMZ;@8v=qpMu3;e7f#C`4<1;=KZ}M-fArI!)^Qg{O1Gw z;w*prQ@(b4dG_zVJ#Ec?=I_%rOrN;^@;6^F-KU*VTaDzAAi19~MEH8Qb& z%TrzCF>cDQqc!m;o6G0rDZ0^rYX^8jSAES-~|>N{ee`=C)r~ ze{PR5NJ;Op?C@_HfLd(BJo=Dl-Hkedzi@0>H_}u+xUQL!}2Ayp#b zK%5uq^g&D3eU|67m&+}xOZjO!;4#*Zr2n3|0?`@elK;sncSs8}{;jtcbVl?4K5$a^IR76#(Gtjx^;3&Bj4el zg*uw@a~{ieG?lkG62#Z7I!Et0*mTWewvQu15ZYd17R9~EwMsgtJg%gHfe)kX~dD#b|cS0C!95a$JmRz?wM zG3vB~RFQEY&I1rz$Un+Y)3N+%at_QKR9^EYeonV#>JluCI8tr@IAJx%5A4Ji%YY=_ zxr_sWfYc}lUi6c=!#@I2#2pHRzY#NMS|n-mWNkFRgk90?FjqN&`1CfA~_`-4>&4HN1G&%B=k36hwvobc;I_7J)@| zAs=H|SC8c{VLR!Y-2OcFCggpZ{>&s#Lt}WK(KJC zGbi!T)=C^HwidYdPQ_~n<}?61=@FD;y^2qhabPYAP>FS@E@-hmq#-4KIS}Rrh*s=R z(}jFecP<J>bvul`?9_0Z{-dy2vZG>u5$Vk*A$pJ}*zvjkbcFicfX6 zo|u^<-qUlo5NT#_I0zAt5?NbTTyqD6fE1(UP*@b|^g(0qMPDrLP*?;O)usG29m}64 z=fKQC<&oFMtch;z&_6Al?adRjTkZS95!b;^S3rK9_Wd{NQsZowRKr$8`2uKxQ zPGjagd&uky`HG7pU$n-H~u6mTzX|w}gFW{aYdbUdV5Fx%Kab{F0|f zJ8uTLcT{d&2$AoLXVyb~>%S`OGwbj8Jj%W6gs>j!i}dS(e$~sbUkmw_kbfuSmqUJc zU681M%}IGZ_`M$Vl&|^vw3L@jQ{PRr+#RhH4pun z*SoIcB(!f``#r`r_@Q<)JL?(;9Y3?{wcRSObRAD&T&f>=z8>a5j9(bn6*-M_R=>*W{9ac%^*fu7I_{%h zXs?#@Jdb0AfA@b$V3fWd#@G6~k5{CJbyUku`I$5IA8LWM=bbnCJn;a}As28!kbVL{ z-g6HBkRl&=qVLEJvdAfy*mNKuDP8P2Atm;0U5P$*DX+jXfn_ACr#@PJ!5suGps4;t zee#i1SMykx6Sl7}lZ!HeF19Ie0Y#BxPC8PQ11>RjKnO^zpM6k~A1h-7JswIxvt_Ci)IqwC^Y}kx^O6ov^Atf^2QsI4K_av_Z(OkbmNg zKmYtPUX0o5;v5uGUxCn94vs(V^@QLBUfk|HCp}b!%?@X!OxRfqIWAC(vp64ARy&FO1%yY0+O~@d~`xe zbv!M3bofhX5hu>q@M0ET%Gw&<-|LQt!$AGnciQ8_5oqIXJ7fLK`(?XZ%X#tAR%bLG z1QWk_X=}Hn)&6i;_R3yKckpv;wdTHZchEoRk2?L{{F4|B zdfqp7l9L8_F66``I24c?%j7vq1Q{o2#TIRg{lHgy&#`Q276(h^lAJOMD#J38$T>ly zZlzu1TR>6mM<2;YQhJg*VI{oUI&yvLDOet9NEP25hyvN0IV0 zcR-LRA7va03P6+kv`juytj9@lB1@jqY_2%?N&A(~Tmfjb0X+IgdQCa{8Thg6Kv1x} zCR&im>x;gq9&@BT1~c2`MC~!ooFsbQn@P{*WjI^gBG3~%lq1dIA5tayN^|5IKJYx! zQlA5ZfK;*TggmJO#aJJ4@-3if>xlM2PxQ1*U8GuGpeHd=SqDTxY0ODO5_?Y232w`| zjPjT(4z$*u%BY;?l%E4^e4;#UC|Da!G%I6q$|EKH!m_0)9_TT?4g?GS?CUh&)}#ll z5h+HZ4tJC=GER!Aj-^=~q7~aYpJhw4I9L^Z(kP?AGJ$2J3a&JpI}|Kf9&zR6bS;yQ zRO_449VIdu2ZDm-k%m<9-GN9zO6qb#nzWf^r2(yth03U$=9FI+XhXr;Xrfsei&Gvc z#@$JA5)UnF4t8uKX%?Q%97d-J(nw7rtn%a|seWa>bYNOAvZABBoUUc^k<@-|?nES& zAx!~j)FTZk)@^Y|j*%tqNXc?1qW?{jFT}F87>%t&hP0foayF-og3?(= ziZ&Gwd90shhkq7Gv!FanvpD%kiB4X2l*nWp2nvBGevyV$@!f$)K&to;T8x!Lfq<0T z(A6<%GvyqmgZz{{sW-?)ngc;0@L0dpNjg%Dk&|L9s}0GO$6NtuYzt{fiO)_*b$$7m zb_ldZO)XBmXKR{Tq&$<`D8+gl1PDm9r9B<_N)LIg&w)TdinKahX(o?7>p&zRi4Dyi z5CW3Ytv~9c@@jJ@>Zv|y3P4p)?b-MUFO!Wvkd74l!l6Jwih4QjKu{o$IFkCXRPJCv z!P;t~Ss9B{9!Y$1KnO^&El!H5&z449;gKA3w8u1Rv1j0j;wr%FIj%O; ze$J0&M~hYcL@)5grb9s?&~+q4KIpc7izhuqJ4m)JX|oe@LXR?2c(EQMlh8;vych$J zMb7ew+cJujkA0#%=86Ngu~6Bh&AAN9(MR%Tl%uSJpaRe&KBOZlP5p?v;6>a~GWhL) z5RioLfDn+hU1HM-X>xpH+0!1wF(S?Y#Er&eXARnpX7id#u90U}AMt#zdSWZTm1A%}PWr;gdCbCj? zLh^ETIB5z%qYdH>5Ze;?EGtcN2ZDm(Rr~>OYJIeU6!n}GCvDMk$Yb3QlX#J?@JNn1 z+L~#ROL`Ixs*Xm`_O{qz3y>OZI$=-vEL)nz!K$@G83mPL8EKji>T^xB(|Q~X5s>ow zZLj4#mbDIzQzGLapa3-TNJEmc6Lf;xaxSAh=86MN>Q*{)1)wSu{Ut3x9Zh*juJ)KC zMV>=}fRxZ|+2RfbB=N}sAs~sa142MjpCesq4v4}NF>~ml&YY4>N30-Bg#4aL$b7J*9mLF zvt@%vKOwGmlKNGax#B=)j<8&YUBI5+D z;>x!Sp(Y)f1$~qtlK%+cqNV%RJHBpvwj?&O~k|qAu+JIPW zlhq;pBtTmV)=m@6$^egTqC8T?M@v(jxy2m{79QKosYH@qAt_yZi>%)As;E0>u^VjiH!K~ zKu`dxZA$zlA4zOGAOxhOE+?cI>lhD}Q$EXzGgkl_>BJX=#BXa;?KIJppXZcEitTVx zti(Y3IL0Q|@p_MGhk#K@z*PkdB;=19ty+<`zqvNj^_gcV0zq6=2E5%d#1>JpHmo|B^YHOE7lHWE85 zt1NTHfodPnenm#*G^Y$eWDTyqDNp$coi-GVuIZ**5NkVf_ARv)0JjYUvZ3iL&DasOeq-41hQl-ySHjZYM(;RB* zpRJ?Po*CeWbp_KLS!>!wG4^XW7#p!7(R#j7n{5EMAfE z-bHzlwX}e1R1#aP$I5Ei(kxDX9Z*I=`79$<{0TJr6Ky#ZEEt~1DbLWOE@*j7)VAhL zKEzQ#`$&|J^#QNwIS>g*w*DAHC#=cnQ8}fvtT=N8ph~wsTRf?c@)<58Vh%7pZ4Qkj>kAtm*DsY%3Qjo+#|@$D+< zJ5|yf71FD(R7u*^5(Mvk)*u@fk;;1#uBJUXkxC=srIJW^QW6PIN+RJ&NhCZeiG(L5 zk?^D>5<*HN;Ymp(JSmC9w~_%Uqcy4i+f{zz%Nx}JgtQv zUqL9;3`*aatTHcMXCbRPl2pe?O{$Jkld2<0t2T<0u^Xi(gC~+E12vK+Lr6(x>_*aL z>_$@NecDx!dac@QPf8R$DQUJRCC&Dvq}iU7G~1JsW_wc7Y)?v>Eu^&Bo|H7(lQQpZ zvwuqZK0RnynyOlww%pRR>6WH#w=`|MrD^LeP1|Z{v9X5siiXM1UeyR#T1`9RI&9@? z+VN`M4jaF(`uJ@n11BMB%?VLMm=Lw@gs7D#M2%uX)G#JQjiV*TKw4sqq$S2sCd9fH z#b73qbuEhFjFL8HJa~suP}+ zIN?c&6P}bf;Yo=To|HJ@NjjgU+22VbB_w~olXRCSC4PBQ;+H2SetD8E7RJ1;uZEPk z>J^g)c~auNkm9lvY}r7+aQ&N;GY~0gBcw2KA7c4ji6m8diN^A|5=oPGN7BUoNSZV< zk|r&Rq)EUcX%a9cnRZ9gq}L*;>U~^OCk=Wv@!rp<#Fi%|wmc~bp(nlWFU{kH^j8M` zqYHX5{Z(90>-GJgW`bXT&>nQ!Tix;kJ|b0ihuBo$H`x9nTuH6y+S`Bk=8bpSqhcGM zvMP%^gWYzoGsLHT`@KRa?Or+9Z})nmvbbIzfYdwweDtuhi%(yT@EJ(?aL&v3%I^KW zvUtD5ca4WT{lP)8N0Xh@;M;%pCqdzxt<8RKIO^adS05LPDt~kjb{}-gZdu&wjCQ*n z`Hr$w$j@UX>4x!%iYyAL4Z z&5u}T0SICIwU&GdEqJ%2k$XBkSamTxM8A)UE1g|*MYl7AclaEdAH0L&YNr?alEhvc zT_z4G2TWxpH zh6ZQIfJ3Y7trhJaB2gA&%#^`!#7RQxl}?F)UKS6>;S1kIIl6!0>PhSkZJtx2j`P0d|bQ>_OR@3VH|8B$QLf?#0csYAN2d(A*S*9u-*=_^;%rU^0qq| zA09&B+`|hS7mCf!Zm-?-hVFqoY#$!Joan^yd!@fWJ}5CRdpMwA`!!fVuW|Jn6qmdG z@%GE-|LjjNf6C(cbA;7DdZI5?~ZhybsEf0## za)4=aIsyAP^V{x^Fetm-{#tQq2==LtlJB?tR6LznyVi#X zIQs3DBP>gyZ8zHo?YlS}qgn0YkBS}K#o0o%Pqmf%tq;lpCimET6Fj-n?{9a@QyOO5 zX5bHs8<=Q3!khW7Zx27BvDI%6wnHm#bp{wom|ooyXRoKYHh$8&i4)?( zZhJJ6lXyR`4)&f#e*e}*oIZq;daP+j?d}Lm%;`k^H|(MOG!8cZ z>eLT{Lmcn?X&TOEaLB_iuoO7SIO1Wtv&#dao|pZR8O}w1;Ja8{#?dT{w^beW=J#zd z&9`FlBi;NpHymSEa&(*Di{D=D5pDj8$E!bz&0qO@a~`?ow>Vn)(Q5v>e{hl`)cn=_ zx|u5TAC=~}KUndRX#SeJD?9qkU*~TweZ-l+j$88|W#%#JFK#b!pXjI@@QU$jk6)WF zJK?$r=W2ug&JK4Uj{LryTvB4Qi&spep!N0{Zz%EZI#<$RFVTbK9nLH$zqu($q|RKn6UA@) zEgon;0B>a-)~oF*woH>&ke5&A-e22c7NnufBo(YW(b=Y!z|Kt5<9u%D%Bo*Fj}F8JF|eJ02An z&{$>p=;A*9<0lOLrZ?Bz$$s4>{PG8`k9*kS)%zj;vGvio*eG{#vqU!cq8oR)NqoSS zyN&fq{PEj^g92ub+Iw9rjwN>Xu){W4{RVzd(C^IQ!VFiT+>&3)wO;EU_RB&z@G}Q+ zV|x-Ne^*6U-B2yo+QUJAE8GZJuvXt6PHGJscDn5uH*t!?_5eGFrS322ZjNl;*?rCr zu$jo6cUg`;`9plexrgOL2!=xZKxTuKwSXEottTW7p{Z-T^jnd5zl{ z3~*uZ57tA!i-hYp-n;O$0k*Y9V}DaF1aXM{m&LvC>)5b$i8~o3E8rbHY#_?cw48m& z_HP(u@*1;x3fjs9<3IoWtCVrx((wHMvc|{bV0x-qY|lzH?j7oOsTHn8~fu z?6$$M&;4=kLZ9#S&f~V-d79J(;q7c60B!MSX4l3&+{Tl;eC$!|t78Lb+}kR*vDrTI z^K^3C^aFG5U%7-Y&iQ@(C2jv!z3u9SFq?_JD9(Xp+JM_b>E`W{cHU{aa$VBiH(R`) zv83{M?RDppHr`6FAD6Up)pVo1JY1@;ezi5(i(Jy5x6+HcC9S+Cmucp9zug&Js%dXl z&pe97CS!MwIemotr@S4-XAQQouC&L;Kjt+XHt3E&=e_E(huM9PKQ~ljbsF+E@#|Rh zu>p+bdE$@m;r+hp-Gvr_RXg(U>K$2ZwOF-N2lFf~tFE+h2d!?Xue$QB#zkw@HFajK zaI3B`yW#UFqG@-br>~u>ZtUKSg?82T?ayA7S6$`NVoUg{tKXfz-mkj4HZGQN!H9c? z{^S))Jx}TY*~i80lGmiXn4B#1xC%J_6ifdB4i+`gi}&%?%;~Kk1J|E$28y*c6cyomv{cL z(S~E#it7Bt)X953;qfB2v6Vjtj%NJbx*!v!xQ=pnCKP46K(yYLHJukwuHio){WO;`~6eOxyk?)XPw9v*e% zBtk}!T*Gj471jGYw;y1y0asCI6whska2K}-u>rZy-37g&jrNXkgJ19Ku4Gi+!Rf(( zj|&wyWG{9_k@#bFkm(#;9-?jM*c;vcE^0d*!}ZKcn*Kjp zAK_6D>}Qn4hu9nb73=|(y~*inaqc6GkD-kBrDA>q&x?!?S7rX6nHduH z+^4!h+it30l>THNx`@w+o9F;4kNC?ES?(V%$G9+Fow%%1wA?x7jTT&$lR zdHEF7vm@{P=Y!9Vyw8rj_WI!2k@wk=w{p?A`Xlcj%F9-`Ucx(HLu7ru`sG+Gc8@>Z z!t?X?A{%GtIOF{gcT_ti-rvCuKwM63m3-lZZ=Zm-_3-EduWR;Y`xN(PsFJ>s;IEbC zSr?d~uHJC@BYSS~Wcl{oms_}~#B~~PNtOQ28!lCNYmKK|ys9Ri-J9ahFgFo!ouGRJ z5|7YkYHOlM4Py5xdY*)ll#KVuJzaa){_haz=L#F6|$GChz%` zV}BK8I*7fq4H4h1(2@}^ zfJVBh{lBppwKu?x`m)ar@H7l^>Eky=!V8H_Exy6l@YeQ7n&jW*GM3xDhhs#rJ(gRE zkFB}Sy~c~!vcN6%9oz`xy+3Xu*f;2gTP5B)!5!b;uD>P8OAJ2Vd!yfbSRV2wA>PsI z+~3Ema53B=Q0P`(c=!tugkJhI8#9%`!bbwOFavo%B8-X#f3OYv_#*da>k2yf_>b{^ z65dkX<&@xtOs_>~fjf!-Hl1f*pO-W)I2BgMLok4G%QvOM|Av9%ls4yurs7 zc%Qx4#`>^>xP7e8 zmjk|=+QSP#9DR0*_R2jxwkNmT{rh&|c0OLS+~wXOLjNx6^Cr1iyz`?&?1~)NeN+GB z3sw#8ZCwy~JVM}K)suT>*bd>K0P|yBpR+=L8=p_*$RPP(56|=@Hc!5A{UsK19I3c0 zj~>ca=*Vx{$Tk!t-MEtGs zOL)(cuinXvqHlk8;?<~qIlP0zvb=JD2I5_;AvQ#C7&?%N$=M*@gM&vV z!pjH<02dnH>;8>wnKnUrGA=lw;+wuE!hUXr!6kcUk0u8G8Ib=eLw_GHm4|&sbfgSx z9<8rzUjP0b*&6o4*@#VAng~8h*Z*7=PVXb;1CAbeq6^!PJT9;w{ox#wZdi^Ua#Q_x za6*CYVw{y=Hb=cZuB1T)gC46NRB%v*(jy&?&;7!?2l4I*&Mvm#Os_KAVJYp4rs*x)SSBh5UL=n+A7|1T8p_-9My5ih*IyZc|B1xJ*@Nt#YJ4uJ~Y@9#Z zZ6E@?C&06@d%zhgIpg5jWP#m4Y!b&%a`^Cp>*7eZv2lRIED!c8?dADOr|Vtycd%}^ zHhIY4^ALDr$-mG%?C)X}Vm$II5je2+wimU!Bdw7mj(_OfPs1>z{ThPn51uxMBb2{! zvRoUsq_%LsigN~MYIq2rtG<7o+8_GDq8OgOTq;^u@p?w}@WG`BeXwYdy0WCnDL^T` z!&`Jbbcfj&?s)oXie=Le={Mt>;dX^~i6Y;H1YN zUfTnlTVn9~_t$u&za94Mc$2C+p0`Rl@xwM5&!f7NujCA+?h#JHarMmWx{t=Vi0vMK ziY+1ew$^D>?VEkCrB|OghVPVk^c2^U_g2=jKf-g&u~pet6VE5H`z0Td!I|Vm)XH5h z@nYmpH4t&^x?pFwhaJ$>Mcp_3xAn~jp3umnRQw{3-@frDi2Gffc<##0G0Hc-;VYY7+Ls;*T_Sovx0xMSapZ+GxD5PcK; z!Y%AE9mxw+2iTy%DL|Lc0~WkrHtOtj9%6?@6y&Cw-qw7DcVB1-)_5z8_eAju^Jn+> zWTSbb)8#h+hHdVMb#c>8^}gHM*q^$H2$tQhKXW>f%?~*6_&J64&S-f4BBM0k z8S?&uZ1i}<`9Uv)%>oyh9F){PEsO5qTWPmbY*MyzXP_y}r;&uDW| zJ3+VqMr)&daQsjN!%?FQ%M;K@)3+RWf4cvRfRmJ&>-^Z}>w_S0G!A(|