Questions 12, 22, 23, 31, 32. Behaviors related to flu.

## Create survey object.
options(digits = 4)
options(survey.lonely.psu = "adjust")
des <- svydesign(ids = ~1, weights = ~weight, data = df[is.na(df$weight)==F, ])

Q12. Which of the following actions do you take to avoid getting sick?

# subset question data, rename columns, gather into single column
q12_df <- df %>%
  select(CaseID, PPGENDER, PPAGE, ppagecat, PPETHM, PPINCIMP, PPEDUC, PPEDUCAT,
         work, PPWORK, marital, PPMARIT, PPMSACAT, ppreg9, PPSTATEN, PPHOUSE, PPRENT, PPNET, Q12_1:Q12_15, weight) %>%
  gather(Q12_q, Q12_r, Q12_1:Q12_15, na.rm = T) %>%
  mutate(Q12_q = as.factor(Q12_q))
# survey design
options(digits = 4)
options(survey.lonely.psu = "adjust")
des12 <- svydesign(ids = ~1, weights = ~weight, data = q12_df[is.na(q12_df$weight)==F, ])

Gender, age, ethnicity, income

# weighted data frame
q12 <- data.frame(svytable(~Q12_q + Q12_r + PPGENDER + ppagecat + PPETHM + PPINCIMP, des12, round = T))
# plot templates
title <- ggtitle("Which of the following actions do you take to avoid getting sick?")
## main plot
p <- ggplot(q12, aes(Q12_q, weight = Freq)) + ptext
p + geom_bar(position = 'fill') + aes(fill = Q12_r) + title

p2 <- ggplot(q12, aes(Q12_q, weight = Freq)) + ptext
p2 + geom_bar(position = "fill") + aes(Q12_q, fill = Q12_r)

p2 + geom_bar() + aes(Q12_r, fill = Q12_r) + facet_wrap(~Q12_q) + ptext2

p2 + geom_bar() + aes(Q12_q, fill = Q12_q) + facet_wrap(~Q12_r) + ptext2

# by gender
p2 + geom_bar() + aes(PPGENDER, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By gender")

p2 + geom_bar(position = "fill") + aes(PPGENDER, fill = Q12_r) + facet_wrap(~Q12_q)

p2 + geom_bar() + aes(Q12_q, fill = PPGENDER) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = PPGENDER) + facet_wrap(~Q12_r) + ggtitle("By gender")

p2 + geom_bar() + aes(PPGENDER, fill = PPGENDER) + facet_grid(Q12_q~Q12_r) + coord_flip() + ptext2

# by age group
p2 + geom_bar() + aes(ppagecat, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By age group")

p2 + geom_bar(position = "fill") + aes(ppagecat, fill = Q12_r) + facet_wrap(~Q12_q)

p2 + geom_bar() + aes(Q12_q, fill = ppagecat) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = ppagecat) + facet_wrap(~Q12_r) + ggtitle("By age group")

p2 + geom_bar() + aes(ppagecat, fill = ppagecat) + facet_grid(Q12_q~Q12_r) + ptext2

# by ethnic group
p2 + geom_bar() + aes(PPETHM, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By ethnic group")

p2 + geom_bar(position = "fill") + aes(PPETHM, fill = Q12_r) + facet_wrap(~Q12_q)

p2 + geom_bar() + aes(Q12_q, fill = PPETHM) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = PPETHM) + facet_wrap(~Q12_r) + ggtitle("By ethnic group")

p2 + geom_bar() + aes(PPETHM, fill = PPETHM) + facet_grid(Q12_q~Q12_r) + ptext2

p2 + geom_bar() + aes(Q12_r, fill = Q12_r) + facet_grid(Q12_q~PPETHM) + ptext2

# by income
p2 + geom_bar() + aes(PPINCIMP, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By income") + ptext2

p2 + geom_bar(position = "fill") + aes(PPINCIMP, fill = Q12_r) + facet_wrap(~Q12_q) + ptext2

p2 + geom_bar() + aes(Q12_q, fill = PPINCIMP) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = PPINCIMP) + facet_wrap(~Q12_r) + ggtitle("By income group")

p2 + geom_bar() + aes(PPINCIMP, fill = PPINCIMP) + facet_grid(Q12_q~Q12_r) + ptext2

Education, work, marital status

# update weighted data frame
q12.2 <- data.frame(svytable(~Q12_q + Q12_r + PPEDUC + PPEDUCAT + work + PPWORK + marital + PPMARIT, des12, round = T))
# restate plots
p3 <- ggplot(q12.2, aes(Q12_q, weight = Freq)) + ptext
# by education
p3 + geom_bar() + aes(PPEDUCAT, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By education")

p3 + geom_bar(position = "fill") + aes(PPEDUCAT, fill = Q12_r) + facet_wrap(~Q12_q)

p3 + geom_bar() + aes(Q12_q, fill = PPEDUCAT) + facet_wrap(~Q12_r)

p3 + geom_bar(position = "fill") + aes(Q12_q, fill = PPEDUCAT) + facet_wrap(~Q12_r) + ggtitle("By education")

p3 + geom_bar() + aes(PPEDUCAT, fill = PPEDUCAT) + facet_grid(Q12_q~Q12_r) + ptext2

p3 + geom_bar() + aes(Q12_r, fill = Q12_r) + facet_grid(Q12_q~PPEDUCAT) + ptext2

# by work
p3 + geom_bar() + aes(work, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By employment status")

p3 + geom_bar(position = "fill") + aes(work, fill = Q12_r) + facet_wrap(~Q12_q)

# by marital
p3 + geom_bar() + aes(marital, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By marital status")

p3 + geom_bar(position = "fill") + aes(marital, fill = Q12_r) + facet_wrap(~Q12_q)

Metro status, region, state, house type, housing status, internet availability

# update weighted data frame
q12.3 <- data.frame(svytable(~Q12_q + Q12_r + PPMSACAT + ppreg9 + PPSTATEN + PPHOUSE + PPRENT + PPNET, des12, round = T))
# restate plots
p4 <- ggplot(q12.3, aes(Q12_q, weight = Freq)) + ptext
# by metro status
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPMSACAT) + facet_wrap(~Q12_q) + ggtitle("By metro status")

p4 + geom_bar(position = "fill") + aes(PPMSACAT, fill = Q12_r) + facet_wrap(~Q12_q)

# by region
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = ppreg9) + facet_wrap(~Q12_q) + ggtitle("By region")

p4 + geom_bar() + aes(ppreg9, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By region")

# by state
p4 + geom_bar() + aes(Q12_r, fill = PPSTATEN) + facet_wrap(~Q12_q) + ggtitle("By state")

p4 + geom_bar() + aes(PPSTATEN, fill = Q12_q) + coord_flip() + ggtitle("By state")

# by house type
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPHOUSE) + facet_wrap(~Q12_q)

p4 + geom_bar(position = "fill") + aes(fill = PPHOUSE) + ggtitle("By house type")

# housing status
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPHOUSE) + facet_wrap(~Q12_q)

p4 + geom_bar() + aes(PPHOUSE, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By housing")

# by internet availability
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPNET) + facet_wrap(~Q12_q)

p4 + geom_bar(position = "fill") + aes(PPNET, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By internet availability")

Q22. Do you do any of the following when you have influenza symptoms?

# subset question data, rename columns, gather into single column
q22_df <- df %>%
  select(CaseID, PPGENDER, PPAGE, ppagecat, PPETHM, PPINCIMP, PPEDUC, PPEDUCAT,
         work, PPWORK, marital, PPMARIT, PPMSACAT, ppreg9, PPSTATEN, PPHOUSE, PPRENT, PPNET, Q22_1:Q22_9, weight) %>%
  gather(Q22_q, Q22_r, Q22_1:Q22_9, na.rm = T) %>%
  mutate(Q22_q = as.factor(Q22_q))
# survey design
options(digits = 4)
options(survey.lonely.psu = "adjust")
des22 <- svydesign(ids = ~1, weights = ~weight, data = q22_df[is.na(q22_df$weight)==F, ])

Gender, age, ethnicity, income

# weighted data frame
q22 <- data.frame(svytable(~Q22_q + Q22_r + PPGENDER + ppagecat + PPETHM + PPINCIMP, des22, round = T))
# plot templates
title <- ggtitle("Do you do any of the following when you have influenza symptoms?")
## main plot
p <- ggplot(q22, aes(Q22_q, weight = Freq)) + ptext
p + geom_bar(position = 'fill') + aes(fill = Q22_r) + title

p2 <- ggplot(q22, aes(Q22_q, weight = Freq)) + ptext
p2 + geom_bar(position = "fill") + aes(Q22_q, fill = Q22_r)

p2 + geom_bar() + aes(Q22_r, fill = Q22_r) + facet_wrap(~Q22_q) + ptext2

p2 + geom_bar() + aes(Q22_q, fill = Q22_q) + facet_wrap(~Q22_r) + ptext2

# by gender
p2 + geom_bar() + aes(PPGENDER, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By gender")

p2 + geom_bar(position = "fill") + aes(PPGENDER, fill = Q22_r) + facet_wrap(~Q22_q)

p2 + geom_bar() + aes(Q22_q, fill = PPGENDER) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = PPGENDER) + facet_wrap(~Q22_r) + ggtitle("By gender")

p2 + geom_bar() + aes(PPGENDER, fill = PPGENDER) + facet_grid(Q22_q~Q22_r) + coord_flip() + ptext2

# by age group
p2 + geom_bar() + aes(ppagecat, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By age group")

p2 + geom_bar(position = "fill") + aes(ppagecat, fill = Q22_r) + facet_wrap(~Q22_q)

p2 + geom_bar() + aes(Q22_q, fill = ppagecat) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = ppagecat) + facet_wrap(~Q22_r) + ggtitle("By age group")

p2 + geom_bar() + aes(ppagecat, fill = ppagecat) + facet_grid(Q22_q~Q22_r) + ptext2

# by ethnic group
p2 + geom_bar() + aes(PPETHM, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By ethnic group")

p2 + geom_bar(position = "fill") + aes(PPETHM, fill = Q22_r) + facet_wrap(~Q22_q)

p2 + geom_bar() + aes(Q22_q, fill = PPETHM) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = PPETHM) + facet_wrap(~Q22_r) + ggtitle("By ethnic group")

p2 + geom_bar() + aes(PPETHM, fill = PPETHM) + facet_grid(Q22_q~Q22_r) + ptext2

p2 + geom_bar() + aes(Q22_r, fill = Q22_r) + facet_grid(Q22_q~PPETHM) + ptext2

# by income
p2 + geom_bar() + aes(PPINCIMP, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By income") + ptext2

p2 + geom_bar(position = "fill") + aes(PPINCIMP, fill = Q22_r) + facet_wrap(~Q22_q) + ptext2

p2 + geom_bar() + aes(Q22_q, fill = PPINCIMP) + facet_wrap(~Q22_r)

p2 + geom_bar(position = 'fill') + aes(Q22_q, fill = PPINCIMP) + facet_wrap(~Q22_r) + ggtitle("By income group")

p2 + geom_bar() + aes(PPINCIMP, fill = PPINCIMP) + facet_grid(Q22_q~Q22_r) + ptext2

Education, work, marital status

# update weighted data frame
q22.2 <- data.frame(svytable(~Q22_q + Q22_r + PPEDUC + PPEDUCAT + work + PPWORK + marital + PPMARIT, des22, round = T))
# restate plots
p3 <- ggplot(q22.2, aes(Q22_q, weight = Freq)) + ptext
# by education
p3 + geom_bar() + aes(PPEDUCAT, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By education")

p3 + geom_bar(position = "fill") + aes(PPEDUCAT, fill = Q22_r) + facet_wrap(~Q22_q)

p3 + geom_bar() + aes(Q22_q, fill = PPEDUCAT) + facet_wrap(~Q22_r)

p3 + geom_bar(position = "fill") + aes(Q22_q, fill = PPEDUCAT) + facet_wrap(~Q22_r) + ggtitle("By education")

p3 + geom_bar() + aes(PPEDUCAT, fill = PPEDUCAT) + facet_grid(Q22_q~Q22_r) + ptext2

p3 + geom_bar() + aes(Q22_r, fill = Q22_r) + facet_grid(Q22_q~PPEDUCAT) + ptext2

# by work
p3 + geom_bar() + aes(work, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By employment status")

p3 + geom_bar(position = "fill") + aes(work, fill = Q22_r) + facet_wrap(~Q22_q)

# by marital
p3 + geom_bar() + aes(marital, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By marital status")

p3 + geom_bar(position = "fill") + aes(marital, fill = Q22_r) + facet_wrap(~Q22_q)

Metro status, region, state, house type, housing status, internet availability

# update weighted data frame
q22.3 <- data.frame(svytable(~Q22_q + Q22_r + PPMSACAT + ppreg9 + PPSTATEN + PPHOUSE + PPRENT + PPNET, des22, round = T))
# restate plots
p4 <- ggplot(q22.3, aes(Q22_q, weight = Freq)) + ptext
# by metro status
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPMSACAT) + facet_wrap(~Q22_q) + ggtitle("By metro status")

p4 + geom_bar(position = "fill") + aes(PPMSACAT, fill = Q22_r) + facet_wrap(~Q22_q)

# by region
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = ppreg9) + facet_wrap(~Q22_q) + ggtitle("By region")

p4 + geom_bar() + aes(ppreg9, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By region")

# by state
p4 + geom_bar() + aes(Q22_r, fill = PPSTATEN) + facet_wrap(~Q22_q) + ggtitle("By state")

p4 + geom_bar() + aes(PPSTATEN, fill = Q22_q) + coord_flip() + ggtitle("By state")

# by house type
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPHOUSE) + facet_wrap(~Q22_q)

p4 + geom_bar(position = "fill") + aes(fill = PPHOUSE) + ggtitle("By house type")

# housing status
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPHOUSE) + facet_wrap(~Q22_q)

p4 + geom_bar() + aes(PPHOUSE, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By housing")

# by internet availability
p4 + geom_bar(position = "fill") + aes(Q22_r, fill = PPNET) + facet_wrap(~Q22_q)

p4 + geom_bar(position = "fill") + aes(PPNET, fill = Q22_r) + facet_wrap(~Q22_q) + ggtitle("By internet availability")

Q23. Which of the following actions do you take when you have influenza symptoms to avoid someone else from getting sick?

# subset question data, rename columns, gather into single column
q23_df <- df %>%
  select(CaseID, PPGENDER, PPAGE, ppagecat, PPETHM, PPINCIMP, PPEDUC, PPEDUCAT,
         work, PPWORK, marital, PPMARIT, PPMSACAT, ppreg9, PPSTATEN, PPHOUSE, PPRENT, PPNET, Q23_1:Q23_11, weight) %>%
  gather(Q23_q, Q23_r, Q23_1:Q23_11, na.rm = T) %>%
  mutate(Q23_q = as.factor(Q23_q))
# survey design
options(digits = 4)
options(survey.lonely.psu = "adjust")
des23 <- svydesign(ids = ~1, weights = ~weight, data = q23_df[is.na(q23_df$weight)==F, ])

Gender, age, ethnicity, income

# weighted data frame
q23 <- data.frame(svytable(~Q23_q + Q23_r + PPGENDER + ppagecat + PPETHM + PPINCIMP, des23, round = T))
# plot templates
title <- ggtitle("Which of the following actions do you take when you have influenza symptoms to avoid someone else from getting sick?")
## main plot
p <- ggplot(q23, aes(Q23_q, weight = Freq)) + ptext
p + geom_bar(position = 'fill') + aes(fill = Q23_r) + title

p2 <- ggplot(q23, aes(Q23_q, weight = Freq)) + ptext
p2 + geom_bar(position = "fill") + aes(Q23_q, fill = Q23_r)

p2 + geom_bar() + aes(Q23_r, fill = Q23_r) + facet_wrap(~Q23_q) + ptext2

p2 + geom_bar() + aes(Q23_q, fill = Q23_q) + facet_wrap(~Q23_r) + ptext2

# by gender
p2 + geom_bar() + aes(PPGENDER, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By gender")

p2 + geom_bar(position = "fill") + aes(PPGENDER, fill = Q23_r) + facet_wrap(~Q23_q)

p2 + geom_bar() + aes(Q23_q, fill = PPGENDER) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = PPGENDER) + facet_wrap(~Q23_r) + ggtitle("By gender")

p2 + geom_bar() + aes(PPGENDER, fill = PPGENDER) + facet_grid(Q23_q~Q23_r) + coord_flip() + ptext2

# by age group
p2 + geom_bar() + aes(ppagecat, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By age group")

p2 + geom_bar(position = "fill") + aes(ppagecat, fill = Q23_r) + facet_wrap(~Q23_q)

p2 + geom_bar() + aes(Q23_q, fill = ppagecat) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = ppagecat) + facet_wrap(~Q23_r) + ggtitle("By age group")

p2 + geom_bar() + aes(ppagecat, fill = ppagecat) + facet_grid(Q23_q~Q23_r) + ptext2

# by ethnic group
p2 + geom_bar() + aes(PPETHM, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By ethnic group")

p2 + geom_bar(position = "fill") + aes(PPETHM, fill = Q23_r) + facet_wrap(~Q23_q)

p2 + geom_bar() + aes(Q23_q, fill = PPETHM) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = PPETHM) + facet_wrap(~Q23_r) + ggtitle("By ethnic group")

p2 + geom_bar() + aes(PPETHM, fill = PPETHM) + facet_grid(Q23_q~Q23_r) + ptext2

p2 + geom_bar() + aes(Q23_r, fill = Q23_r) + facet_grid(Q23_q~PPETHM) + ptext2

# by income
p2 + geom_bar() + aes(PPINCIMP, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By income") + ptext2

p2 + geom_bar(position = "fill") + aes(PPINCIMP, fill = Q23_r) + facet_wrap(~Q23_q) + ptext2

p2 + geom_bar() + aes(Q23_q, fill = PPINCIMP) + facet_wrap(~Q23_r)

p2 + geom_bar(position = 'fill') + aes(Q23_q, fill = PPINCIMP) + facet_wrap(~Q23_r) + ggtitle("By income group")

p2 + geom_bar() + aes(PPINCIMP, fill = PPINCIMP) + facet_grid(Q23_q~Q23_r) + ptext2

Education, work, marital status

# update weighted data frame
q23.2 <- data.frame(svytable(~Q23_q + Q23_r + PPEDUC + PPEDUCAT + work + PPWORK + marital + PPMARIT, des23, round = T))
# restate plots
p3 <- ggplot(q23.2, aes(Q23_q, weight = Freq)) + ptext
# by education
p3 + geom_bar() + aes(PPEDUCAT, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By education")

p3 + geom_bar(position = "fill") + aes(PPEDUCAT, fill = Q23_r) + facet_wrap(~Q23_q)

p3 + geom_bar() + aes(Q23_q, fill = PPEDUCAT) + facet_wrap(~Q23_r)

p3 + geom_bar(position = "fill") + aes(Q23_q, fill = PPEDUCAT) + facet_wrap(~Q23_r) + ggtitle("By education")

p3 + geom_bar() + aes(PPEDUCAT, fill = PPEDUCAT) + facet_grid(Q23_q~Q23_r) + ptext2

p3 + geom_bar() + aes(Q23_r, fill = Q23_r) + facet_grid(Q23_q~PPEDUCAT) + ptext2

# by work
p3 + geom_bar() + aes(work, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By employment status")

p3 + geom_bar(position = "fill") + aes(work, fill = Q23_r) + facet_wrap(~Q23_q)

# by marital
p3 + geom_bar() + aes(marital, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By marital status")

p3 + geom_bar(position = "fill") + aes(marital, fill = Q23_r) + facet_wrap(~Q23_q)

Metro status, region, state, house type, housing status, internet availability

# update weighted data frame
q23.3 <- data.frame(svytable(~Q23_q + Q23_r + PPMSACAT + ppreg9 + PPSTATEN + PPHOUSE + PPRENT + PPNET, des23, round = T))
# restate plots
p4 <- ggplot(q23.3, aes(Q23_q, weight = Freq)) + ptext
# by metro status
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPMSACAT) + facet_wrap(~Q23_q) + ggtitle("By metro status")

p4 + geom_bar(position = "fill") + aes(PPMSACAT, fill = Q23_r) + facet_wrap(~Q23_q)

# by region
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = ppreg9) + facet_wrap(~Q23_q) + ggtitle("By region")

p4 + geom_bar() + aes(ppreg9, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By region")

# by state
p4 + geom_bar() + aes(Q23_r, fill = PPSTATEN) + facet_wrap(~Q23_q) + ggtitle("By state")

p4 + geom_bar() + aes(PPSTATEN, fill = Q23_q) + coord_flip() + ggtitle("By state")

# by house type
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPHOUSE) + facet_wrap(~Q23_q)

p4 + geom_bar(position = "fill") + aes(fill = PPHOUSE) + ggtitle("By house type")

# housing status
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPHOUSE) + facet_wrap(~Q23_q)

p4 + geom_bar() + aes(PPHOUSE, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By housing")

# by internet availability
p4 + geom_bar(position = "fill") + aes(Q23_r, fill = PPNET) + facet_wrap(~Q23_q)

p4 + geom_bar(position = "fill") + aes(PPNET, fill = Q23_r) + facet_wrap(~Q23_q) + ggtitle("By internet availability")

Q31. How many hours of screen time (time spent watching television, a computer, smartphone, iPad, etc.) do you spend each day on average when you are not sick? Enter 0 if none

Q32. How many hours of screen time do you spend each day on average when you are sick? Enter 0 if none

LS0tCnRpdGxlOiAnQmVoYXZpb3IgcGFydCAzOiBGbHUgYWN0aW9ucycKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogcGFwZXIKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDIKICBodG1sX2RvY3VtZW50OgogICAgZmlnX2NhcHRpb246IHllcwogICAga2VlcF9tZDogeWVzCiAgICB0aGVtZTogcGFwZXIKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDIKLS0tCgpRdWVzdGlvbnMgMTIsIDIyLCAyMywgMzEsIDMyLgpCZWhhdmlvcnMgcmVsYXRlZCB0byBmbHUuCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GfQojIyBTZXR1cC4Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBULCBjYWNoZSA9IFQsIGNhY2hlLmNvbW1lbnRzID0gRiwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGLCBzaXplID0gInNtYWxsIikKcm0obGlzdCA9IGxzKGFsbC5uYW1lcyA9IFQpKQpsaWJyYXJ5KHJtYXJrZG93bik7IGxpYnJhcnkoa25pdHIpOyBsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeSh0aWR5cik7IGxpYnJhcnkoZHBseXIpOyBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KHN1cnZleSkKYGBgCgpgYGB7ciBsb2FkLWRhdGEsIGluY2x1ZGU9Rn0KIyMgTG9hZCBkYXRhLgpsb2FkKCJ+L2dpdC9mbHUtc3VydmV5L2RhdGEvY2xlYW5pbmcyLlJEYXRhIikKbG9hZCgifi9naXQvZmx1LXN1cnZleS9kYXRhL3JlY29kaW5nLlJEYXRhIikgICMgbG9hZCAiZGF0YXIiCmRmIDwtIGRhdGFyICAjIHJlY29kZWQgdmFyaWFibGVzCmBgYAoKYGBge3IgZ3JvdXAtZGF0YSwgaW5jbHVkZT1GfQojIyBSZWdyb3VwIHZhcmlhYmxlcy4KIyBpbmNvbWUKaW5jb21lLm1hcCA8LSBjKHJlcCgidW5kZXIgJDEwayIsIDMpLCByZXAoIiQxMGsgdG8gJDI1ayIsIDQpLAogICAgICAgICAgICAgICAgcmVwKCIkMjVrIHRvICQ1MGsiLCA0KSwgcmVwKCIkNTBrIHRvICQ3NWsiLCAyKSwKICAgICAgICAgICAgICAgIHJlcCgiJDc1ayB0byAkMTAwayIsIDIpLCByZXAoIiQxMDBrIHRvICQxNTBrIiwgMiksCiAgICAgICAgICAgICAgICByZXAoIm92ZXIgJDE1MGsiLCAyKSkKZGYkaW5jb21lIDwtIGNvZGUoZGF0YXIkUFBJTkNJTVAsIGluY29tZS5tYXAsICJ1bmRlciAkMTBrIikKaW5jb21lLmxhYiA8LSBjKCJ1bmRlciAkMTBrIiwgIiQxMGsgdG8gJDI1ayIsICIkMjVrIHRvICQ1MGsiLAogICAgICAgICAgICAgICAgIiQ1MGsgdG8gJDc1ayIsICIkNzVrIHRvICQxMDBrIiwgIiQxMDBrIHRvICQxNTBrIiwKICAgICAgICAgICAgICAgICJvdmVyICQxNTBrIikKZGYkaW5jb21lIDwtIGZhY3RvcihkZiRpbmNvbWUsIGxldmVscyA9IGluY29tZS5sYWIpCgojIG1hcml0YWwgc3RhdXMKbWFyaXRhbC5tYXAgPC0gYygic2luZ2xlIiwgInBhcnRuZXJlZCIsICJwYXJ0bmVyZWQiLCAic2luZ2xlIiwgInNpbmdsZSIsICJzaW5nbGUiKQpkZiRtYXJpdGFsIDwtIGNvZGUoZGF0YWYkUFBNQVJJVCwgbWFyaXRhbC5tYXAsICJzaW5nbGUiKQoKIyB3b3JrIHN0YXR1cwp3b3JrLm1hcCA8LSBjKHJlcCgidW5lbXBsb3llZCIsIDUpLAogICAgICAgICAgICAgIHJlcCgiZW1wbG95ZWQiLCAyKSkKZGYkd29yayA8LSBjb2RlKGRhdGFmJFBQV09SSywgd29yay5tYXAsICJ1bmVtcGxveWVkIikKYGBgCgpgYGB7ciBkZXMtc3VydmV5fQojIyBDcmVhdGUgc3VydmV5IG9iamVjdC4Kb3B0aW9ucyhkaWdpdHMgPSA0KQpvcHRpb25zKHN1cnZleS5sb25lbHkucHN1ID0gImFkanVzdCIpCgpkZXMgPC0gc3Z5ZGVzaWduKGlkcyA9IH4xLCB3ZWlnaHRzID0gfndlaWdodCwgZGF0YSA9IGRmW2lzLm5hKGRmJHdlaWdodCk9PUYsIF0pCmBgYAoKYGBge3IgcGxvdC10ZW1wLCBpbmNsdWRlPUZ9CiMjIENyZWF0ZSBnZ3Bsb3QgdGVtcGxhdGVzLgpwdGV4dCA8LSB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgwLjkpKSwKICAgICAgICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKcHRleHQyIDwtIHB0ZXh0ICsgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpCmBgYAoKCgojIyBRMTIuIFdoaWNoIG9mIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBkbyB5b3UgdGFrZSB0byBhdm9pZCBnZXR0aW5nIHNpY2s/CgpgYGB7ciBxMTItZGF0YX0KIyBzdWJzZXQgcXVlc3Rpb24gZGF0YSwgcmVuYW1lIGNvbHVtbnMsIGdhdGhlciBpbnRvIHNpbmdsZSBjb2x1bW4KcTEyX2RmIDwtIGRmICU+JQogIHNlbGVjdChDYXNlSUQsIFBQR0VOREVSLCBQUEFHRSwgcHBhZ2VjYXQsIFBQRVRITSwgUFBJTkNJTVAsIFBQRURVQywgUFBFRFVDQVQsCiAgICAgICAgIHdvcmssIFBQV09SSywgbWFyaXRhbCwgUFBNQVJJVCwgUFBNU0FDQVQsIHBwcmVnOSwgUFBTVEFURU4sIFBQSE9VU0UsIFBQUkVOVCwgUFBORVQsIFExMl8xOlExMl8xNSwgd2VpZ2h0KSAlPiUKICBnYXRoZXIoUTEyX3EsIFExMl9yLCBRMTJfMTpRMTJfMTUsIG5hLnJtID0gVCkgJT4lCiAgbXV0YXRlKFExMl9xID0gYXMuZmFjdG9yKFExMl9xKSkKCiMgc3VydmV5IGRlc2lnbgpvcHRpb25zKGRpZ2l0cyA9IDQpCm9wdGlvbnMoc3VydmV5LmxvbmVseS5wc3UgPSAiYWRqdXN0IikKZGVzMTIgPC0gc3Z5ZGVzaWduKGlkcyA9IH4xLCB3ZWlnaHRzID0gfndlaWdodCwgZGF0YSA9IHExMl9kZltpcy5uYShxMTJfZGYkd2VpZ2h0KT09RiwgXSkKYGBgCgojIyMgR2VuZGVyLCBhZ2UsIGV0aG5pY2l0eSwgaW5jb21lCgpgYGB7ciBxMTItcGxvdC0xfQojIHdlaWdodGVkIGRhdGEgZnJhbWUKcTEyIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflExMl9xICsgUTEyX3IgKyBQUEdFTkRFUiArIHBwYWdlY2F0ICsgUFBFVEhNICsgUFBJTkNJTVAsIGRlczEyLCByb3VuZCA9IFQpKQoKIyBwbG90IHRlbXBsYXRlcwp0aXRsZSA8LSBnZ3RpdGxlKCJXaGljaCBvZiB0aGUgZm9sbG93aW5nIGFjdGlvbnMgZG8geW91IHRha2UgdG8gYXZvaWQgZ2V0dGluZyBzaWNrPyIpCgojIyBtYWluIHBsb3QKcCA8LSBnZ3Bsb3QocTEyLCBhZXMoUTEyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CnAgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoZmlsbCA9IFExMl9yKSArIHRpdGxlCmBgYAoKYGBge3IgcTEyLXBsb3QtMWJ9CnAyIDwtIGdncGxvdChxMTIsIGFlcyhRMTJfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTEyX3EsIGZpbGwgPSBRMTJfcikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExMl9yLCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMTJfcSwgZmlsbCA9IFExMl9xKSArIGZhY2V0X3dyYXAoflExMl9yKSArIHB0ZXh0MgoKIyBieSBnZW5kZXIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExMl9xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTEyX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFExMl9xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTEyX3IpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfZ3JpZChRMTJfcX5RMTJfcikgKyBjb29yZF9mbGlwKCkgKyBwdGV4dDIKCiMgYnkgYWdlIGdyb3VwCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMTJfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflExMl9yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMTJfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflExMl9yKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X2dyaWQoUTEyX3F+UTEyX3IpICsgcHRleHQyCgoKIyBieSBldGhuaWMgZ3JvdXAKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQRVRITSwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IGV0aG5pYyBncm91cCIpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQRVRITSwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTEyX3EsIGZpbGwgPSBQUEVUSE0pICsgZmFjZXRfd3JhcCh+UTEyX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFExMl9xLCBmaWxsID0gUFBFVEhNKSArIGZhY2V0X3dyYXAoflExMl9yKSArIGdndGl0bGUoIkJ5IGV0aG5pYyBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVUSE0sIGZpbGwgPSBQUEVUSE0pICsgZmFjZXRfZ3JpZChRMTJfcX5RMTJfcikgKyBwdGV4dDIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExMl9yLCBmaWxsID0gUTEyX3IpICsgZmFjZXRfZ3JpZChRMTJfcX5QUEVUSE0pICsgcHRleHQyCgoKIyBieSBpbmNvbWUKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgaW5jb21lIikgKyBwdGV4dDIKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBJTkNJTVAsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBwdGV4dDIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExMl9xLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfd3JhcCh+UTEyX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFExMl9xLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfd3JhcCh+UTEyX3IpICsgZ2d0aXRsZSgiQnkgaW5jb21lIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfZ3JpZChRMTJfcX5RMTJfcikgKyBwdGV4dDIKCmBgYAoKIyMjIEVkdWNhdGlvbiwgd29yaywgbWFyaXRhbCBzdGF0dXMKCmBgYHtyIHExMi1wbG90LTJ9CiMgdXBkYXRlIHdlaWdodGVkIGRhdGEgZnJhbWUKcTEyLjIgPC0gZGF0YS5mcmFtZShzdnl0YWJsZSh+UTEyX3EgKyBRMTJfciArIFBQRURVQyArIFBQRURVQ0FUICsgd29yayArIFBQV09SSyArIG1hcml0YWwgKyBQUE1BUklULCBkZXMxMiwgcm91bmQgPSBUKSkKCiMgcmVzdGF0ZSBwbG90cwpwMyA8LSBnZ3Bsb3QocTEyLjIsIGFlcyhRMTJfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKYGBgCgpgYGB7ciBxMTItcGxvdC0yYn0KIyBieSBlZHVjYXRpb24KcDMgKyBnZW9tX2JhcigpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgZWR1Y2F0aW9uIikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBFRFVDQVQsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKcDMgKyBnZW9tX2JhcigpICsgYWVzKFExMl9xLCBmaWxsID0gUFBFRFVDQVQpICsgZmFjZXRfd3JhcCh+UTEyX3IpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFExMl9xLCBmaWxsID0gUFBFRFVDQVQpICsgZmFjZXRfd3JhcCh+UTEyX3IpICsgZ2d0aXRsZSgiQnkgZWR1Y2F0aW9uIikKcDMgKyBnZW9tX2JhcigpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUFBFRFVDQVQpICsgZmFjZXRfZ3JpZChRMTJfcX5RMTJfcikgKyBwdGV4dDIKcDMgKyBnZW9tX2JhcigpICsgYWVzKFExMl9yLCBmaWxsID0gUTEyX3IpICsgZmFjZXRfZ3JpZChRMTJfcX5QUEVEVUNBVCkgKyBwdGV4dDIKCgojIGJ5IHdvcmsKcDMgKyBnZW9tX2JhcigpICsgYWVzKHdvcmssIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBlbXBsb3ltZW50IHN0YXR1cyIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHdvcmssIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKCgojIGJ5IG1hcml0YWwKcDMgKyBnZW9tX2JhcigpICsgYWVzKG1hcml0YWwsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBtYXJpdGFsIHN0YXR1cyIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKG1hcml0YWwsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKCmBgYAoKIyMjIE1ldHJvIHN0YXR1cywgcmVnaW9uLCBzdGF0ZSwgaG91c2UgdHlwZSwgaG91c2luZyBzdGF0dXMsIGludGVybmV0IGF2YWlsYWJpbGl0eQoKYGBge3IgcTEyLXBsb3QtM30KIyB1cGRhdGUgd2VpZ2h0ZWQgZGF0YSBmcmFtZQpxMTIuMyA8LSBkYXRhLmZyYW1lKHN2eXRhYmxlKH5RMTJfcSArIFExMl9yICsgUFBNU0FDQVQgKyBwcHJlZzkgKyBQUFNUQVRFTiArIFBQSE9VU0UgKyBQUFJFTlQgKyBQUE5FVCwgZGVzMTIsIHJvdW5kID0gVCkpCgojIHJlc3RhdGUgcGxvdHMKcDQgPC0gZ2dwbG90KHExMi4zLCBhZXMoUTEyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CmBgYAoKYGBge3IgcTEyLXBsb3QtM2J9CiMgYnkgbWV0cm8gc3RhdHVzCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFExMl9yLCBmaWxsID0gUFBNU0FDQVQpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgbWV0cm8gc3RhdHVzIikKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBNU0FDQVQsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKCiMgYnkgcmVnaW9uCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFExMl9yLCBmaWxsID0gcHByZWc5KSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IHJlZ2lvbiIpCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhwcHJlZzksIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSByZWdpb24iKQoKIyBieSBzdGF0ZQpwNCArIGdlb21fYmFyKCkgKyBhZXMoUTEyX3IsIGZpbGwgPSBQUFNUQVRFTikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBzdGF0ZSIpCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhQUFNUQVRFTiwgZmlsbCA9IFExMl9xKSArIGNvb3JkX2ZsaXAoKSArIGdndGl0bGUoIkJ5IHN0YXRlIikKCiMgYnkgaG91c2UgdHlwZQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMTJfciwgZmlsbCA9IFBQSE9VU0UpICsgZmFjZXRfd3JhcCh+UTEyX3EpCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKGZpbGwgPSBQUEhPVVNFKSArIGdndGl0bGUoIkJ5IGhvdXNlIHR5cGUiKQoKIyBob3VzaW5nIHN0YXR1cwpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMTJfciwgZmlsbCA9IFBQSE9VU0UpICsgZmFjZXRfd3JhcCh+UTEyX3EpCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhQUEhPVVNFLCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgaG91c2luZyIpCgojIGJ5IGludGVybmV0IGF2YWlsYWJpbGl0eQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMTJfciwgZmlsbCA9IFBQTkVUKSArIGZhY2V0X3dyYXAoflExMl9xKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUE5FVCwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IGludGVybmV0IGF2YWlsYWJpbGl0eSIpCgpgYGAKCgoKIyMgUTIyLiBEbyB5b3UgZG8gYW55IG9mIHRoZSBmb2xsb3dpbmcgd2hlbiB5b3UgaGF2ZSBpbmZsdWVuemEgc3ltcHRvbXM/CgpgYGB7ciBxMjItZGF0YX0KIyBzdWJzZXQgcXVlc3Rpb24gZGF0YSwgcmVuYW1lIGNvbHVtbnMsIGdhdGhlciBpbnRvIHNpbmdsZSBjb2x1bW4KcTIyX2RmIDwtIGRmICU+JQogIHNlbGVjdChDYXNlSUQsIFBQR0VOREVSLCBQUEFHRSwgcHBhZ2VjYXQsIFBQRVRITSwgUFBJTkNJTVAsIFBQRURVQywgUFBFRFVDQVQsCiAgICAgICAgIHdvcmssIFBQV09SSywgbWFyaXRhbCwgUFBNQVJJVCwgUFBNU0FDQVQsIHBwcmVnOSwgUFBTVEFURU4sIFBQSE9VU0UsIFBQUkVOVCwgUFBORVQsIFEyMl8xOlEyMl85LCB3ZWlnaHQpICU+JQogIGdhdGhlcihRMjJfcSwgUTIyX3IsIFEyMl8xOlEyMl85LCBuYS5ybSA9IFQpICU+JQogIG11dGF0ZShRMjJfcSA9IGFzLmZhY3RvcihRMjJfcSkpCgojIHN1cnZleSBkZXNpZ24Kb3B0aW9ucyhkaWdpdHMgPSA0KQpvcHRpb25zKHN1cnZleS5sb25lbHkucHN1ID0gImFkanVzdCIpCmRlczIyIDwtIHN2eWRlc2lnbihpZHMgPSB+MSwgd2VpZ2h0cyA9IH53ZWlnaHQsIGRhdGEgPSBxMjJfZGZbaXMubmEocTIyX2RmJHdlaWdodCk9PUYsIF0pCmBgYAoKIyMjIEdlbmRlciwgYWdlLCBldGhuaWNpdHksIGluY29tZQoKYGBge3IgcTIyLXBsb3QtMX0KIyB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMiA8LSBkYXRhLmZyYW1lKHN2eXRhYmxlKH5RMjJfcSArIFEyMl9yICsgUFBHRU5ERVIgKyBwcGFnZWNhdCArIFBQRVRITSArIFBQSU5DSU1QLCBkZXMyMiwgcm91bmQgPSBUKSkKCiMgcGxvdCB0ZW1wbGF0ZXMKdGl0bGUgPC0gZ2d0aXRsZSgiRG8geW91IGRvIGFueSBvZiB0aGUgZm9sbG93aW5nIHdoZW4geW91IGhhdmUgaW5mbHVlbnphIHN5bXB0b21zPyIpCgojIyBtYWluIHBsb3QKcCA8LSBnZ3Bsb3QocTIyLCBhZXMoUTIyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CnAgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoZmlsbCA9IFEyMl9yKSArIHRpdGxlCmBgYAoKYGBge3IgcTIyLXBsb3QtMWJ9CnAyIDwtIGdncGxvdChxMjIsIGFlcyhRMjJfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIyX3EsIGZpbGwgPSBRMjJfcikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyMl9yLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IFEyMl9xKSArIGZhY2V0X3dyYXAoflEyMl9yKSArIHB0ZXh0MgoKIyBieSBnZW5kZXIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyMl9xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTIyX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFEyMl9xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTIyX3IpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfZ3JpZChRMjJfcX5RMjJfcikgKyBjb29yZF9mbGlwKCkgKyBwdGV4dDIKCiMgYnkgYWdlIGdyb3VwCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflEyMl9yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMjJfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflEyMl9yKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X2dyaWQoUTIyX3F+UTIyX3IpICsgcHRleHQyCgojIGJ5IGV0aG5pYyBncm91cApwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBFVEhNLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgZXRobmljIGdyb3VwIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBFVEhNLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF93cmFwKH5RMjJfcikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoUTIyX3EsIGZpbGwgPSBQUEVUSE0pICsgZmFjZXRfd3JhcCh+UTIyX3IpICsgZ2d0aXRsZSgiQnkgZXRobmljIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQRVRITSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF9ncmlkKFEyMl9xflEyMl9yKSArIHB0ZXh0MgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTIyX3IsIGZpbGwgPSBRMjJfcikgKyBmYWNldF9ncmlkKFEyMl9xflBQRVRITSkgKyBwdGV4dDIKCiMgYnkgaW5jb21lCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUElOQ0lNUCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IGluY29tZSIpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X3dyYXAoflEyMl9yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X3dyYXAoflEyMl9yKSArIGdndGl0bGUoIkJ5IGluY29tZSBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUElOQ0lNUCwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X2dyaWQoUTIyX3F+UTIyX3IpICsgcHRleHQyCgpgYGAKCiMjIyBFZHVjYXRpb24sIHdvcmssIG1hcml0YWwgc3RhdHVzCgpgYGB7ciBxMjItcGxvdC0yfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMi4yIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyMl9xICsgUTIyX3IgKyBQUEVEVUMgKyBQUEVEVUNBVCArIHdvcmsgKyBQUFdPUksgKyBtYXJpdGFsICsgUFBNQVJJVCwgZGVzMjIsIHJvdW5kID0gVCkpCgojIHJlc3RhdGUgcGxvdHMKcDMgPC0gZ2dwbG90KHEyMi4yLCBhZXMoUTIyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CmBgYAoKYGBge3IgcTIyLXBsb3QtMmJ9CiMgYnkgZWR1Y2F0aW9uCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflEyMl9yKQpwMyArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjJfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflEyMl9yKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X2dyaWQoUTIyX3F+UTIyX3IpICsgcHRleHQyCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfciwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X2dyaWQoUTIyX3F+UFBFRFVDQVQpICsgcHRleHQyCgojIGJ5IHdvcmsKcDMgKyBnZW9tX2JhcigpICsgYWVzKHdvcmssIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkgKyBnZ3RpdGxlKCJCeSBlbXBsb3ltZW50IHN0YXR1cyIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHdvcmssIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkKCiMgYnkgbWFyaXRhbApwMyArIGdlb21fYmFyKCkgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IG1hcml0YWwgc3RhdHVzIikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKQoKYGBgCgojIyMgTWV0cm8gc3RhdHVzLCByZWdpb24sIHN0YXRlLCBob3VzZSB0eXBlLCBob3VzaW5nIHN0YXR1cywgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CgpgYGB7ciBxMjItcGxvdC0zfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMi4zIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyMl9xICsgUTIyX3IgKyBQUE1TQUNBVCArIHBwcmVnOSArIFBQU1RBVEVOICsgUFBIT1VTRSArIFBQUkVOVCArIFBQTkVULCBkZXMyMiwgcm91bmQgPSBUKSkKCiMgcmVzdGF0ZSBwbG90cwpwNCA8LSBnZ3Bsb3QocTIyLjMsIGFlcyhRMjJfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKYGBgCgpgYGB7ciBxMjItcGxvdC0zYn0KIyBieSBtZXRybyBzdGF0dXMKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIyX3IsIGZpbGwgPSBQUE1TQUNBVCkgKyBmYWNldF93cmFwKH5RMjJfcSkgKyBnZ3RpdGxlKCJCeSBtZXRybyBzdGF0dXMiKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUE1TQUNBVCwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKQoKIyBieSByZWdpb24KcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIyX3IsIGZpbGwgPSBwcHJlZzkpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgcmVnaW9uIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKHBwcmVnOSwgZmlsbCA9IFEyMl9yKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IHJlZ2lvbiIpCgojIGJ5IHN0YXRlCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhRMjJfciwgZmlsbCA9IFBQU1RBVEVOKSArIGZhY2V0X3dyYXAoflEyMl9xKSArIGdndGl0bGUoIkJ5IHN0YXRlIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKFBQU1RBVEVOLCBmaWxsID0gUTIyX3EpICsgY29vcmRfZmxpcCgpICsgZ2d0aXRsZSgiQnkgc3RhdGUiKQoKIyBieSBob3VzZSB0eXBlCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyMl9yLCBmaWxsID0gUFBIT1VTRSkgKyBmYWNldF93cmFwKH5RMjJfcSkKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoZmlsbCA9IFBQSE9VU0UpICsgZ2d0aXRsZSgiQnkgaG91c2UgdHlwZSIpCgojIGhvdXNpbmcgc3RhdHVzCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyMl9yLCBmaWxsID0gUFBIT1VTRSkgKyBmYWNldF93cmFwKH5RMjJfcSkKcDQgKyBnZW9tX2JhcigpICsgYWVzKFBQSE9VU0UsIGZpbGwgPSBRMjJfcikgKyBmYWNldF93cmFwKH5RMjJfcSkgKyBnZ3RpdGxlKCJCeSBob3VzaW5nIikKCiMgYnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyMl9yLCBmaWxsID0gUFBORVQpICsgZmFjZXRfd3JhcCh+UTIyX3EpCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQTkVULCBmaWxsID0gUTIyX3IpICsgZmFjZXRfd3JhcCh+UTIyX3EpICsgZ2d0aXRsZSgiQnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5IikKCmBgYAoKCgojIyBRMjMuIFdoaWNoIG9mIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBkbyB5b3UgdGFrZSB3aGVuIHlvdSBoYXZlIGluZmx1ZW56YSBzeW1wdG9tcyB0byBhdm9pZCBzb21lb25lIGVsc2UgZnJvbSBnZXR0aW5nIHNpY2s/CgpgYGB7ciBxMjMtZGF0YX0KIyBzdWJzZXQgcXVlc3Rpb24gZGF0YSwgcmVuYW1lIGNvbHVtbnMsIGdhdGhlciBpbnRvIHNpbmdsZSBjb2x1bW4KcTIzX2RmIDwtIGRmICU+JQogIHNlbGVjdChDYXNlSUQsIFBQR0VOREVSLCBQUEFHRSwgcHBhZ2VjYXQsIFBQRVRITSwgUFBJTkNJTVAsIFBQRURVQywgUFBFRFVDQVQsCiAgICAgICAgIHdvcmssIFBQV09SSywgbWFyaXRhbCwgUFBNQVJJVCwgUFBNU0FDQVQsIHBwcmVnOSwgUFBTVEFURU4sIFBQSE9VU0UsIFBQUkVOVCwgUFBORVQsIFEyM18xOlEyM18xMSwgd2VpZ2h0KSAlPiUKICBnYXRoZXIoUTIzX3EsIFEyM19yLCBRMjNfMTpRMjNfMTEsIG5hLnJtID0gVCkgJT4lCiAgbXV0YXRlKFEyM19xID0gYXMuZmFjdG9yKFEyM19xKSkKCiMgc3VydmV5IGRlc2lnbgpvcHRpb25zKGRpZ2l0cyA9IDQpCm9wdGlvbnMoc3VydmV5LmxvbmVseS5wc3UgPSAiYWRqdXN0IikKZGVzMjMgPC0gc3Z5ZGVzaWduKGlkcyA9IH4xLCB3ZWlnaHRzID0gfndlaWdodCwgZGF0YSA9IHEyM19kZltpcy5uYShxMjNfZGYkd2VpZ2h0KT09RiwgXSkKYGBgCgojIyMgR2VuZGVyLCBhZ2UsIGV0aG5pY2l0eSwgaW5jb21lCgpgYGB7ciBxMjMtcGxvdC0xfQojIHdlaWdodGVkIGRhdGEgZnJhbWUKcTIzIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyM19xICsgUTIzX3IgKyBQUEdFTkRFUiArIHBwYWdlY2F0ICsgUFBFVEhNICsgUFBJTkNJTVAsIGRlczIzLCByb3VuZCA9IFQpKQoKIyBwbG90IHRlbXBsYXRlcwp0aXRsZSA8LSBnZ3RpdGxlKCJXaGljaCBvZiB0aGUgZm9sbG93aW5nIGFjdGlvbnMgZG8geW91IHRha2Ugd2hlbiB5b3UgaGF2ZSBpbmZsdWVuemEgc3ltcHRvbXMgdG8gYXZvaWQgc29tZW9uZSBlbHNlIGZyb20gZ2V0dGluZyBzaWNrPyIpCgojIyBtYWluIHBsb3QKcCA8LSBnZ3Bsb3QocTIzLCBhZXMoUTIzX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CnAgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoZmlsbCA9IFEyM19yKSArIHRpdGxlCmBgYAoKYGBge3IgcTIzLXBsb3QtMWJ9CnAyIDwtIGdncGxvdChxMjMsIGFlcyhRMjNfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIzX3EsIGZpbGwgPSBRMjNfcikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyM19yLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfcSwgZmlsbCA9IFEyM19xKSArIGZhY2V0X3dyYXAoflEyM19yKSArIHB0ZXh0MgoKIyBieSBnZW5kZXIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFEyM19xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTIzX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFEyM19xLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfd3JhcCh+UTIzX3IpICsgZ2d0aXRsZSgiQnkgZ2VuZGVyIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQR0VOREVSLCBmaWxsID0gUFBHRU5ERVIpICsgZmFjZXRfZ3JpZChRMjNfcX5RMjNfcikgKyBjb29yZF9mbGlwKCkgKyBwdGV4dDIKCiMgYnkgYWdlIGdyb3VwCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflEyM19yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMjNfcSwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X3dyYXAoflEyM19yKSArIGdndGl0bGUoIkJ5IGFnZSBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhwcGFnZWNhdCwgZmlsbCA9IHBwYWdlY2F0KSArIGZhY2V0X2dyaWQoUTIzX3F+UTIzX3IpICsgcHRleHQyCgojIGJ5IGV0aG5pYyBncm91cApwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBFVEhNLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgZXRobmljIGdyb3VwIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBFVEhNLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfcSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF93cmFwKH5RMjNfcikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoUTIzX3EsIGZpbGwgPSBQUEVUSE0pICsgZmFjZXRfd3JhcCh+UTIzX3IpICsgZ2d0aXRsZSgiQnkgZXRobmljIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQRVRITSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF9ncmlkKFEyM19xflEyM19yKSArIHB0ZXh0MgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTIzX3IsIGZpbGwgPSBRMjNfcikgKyBmYWNldF9ncmlkKFEyM19xflBQRVRITSkgKyBwdGV4dDIKCiMgYnkgaW5jb21lCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUElOQ0lNUCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKSArIGdndGl0bGUoIkJ5IGluY29tZSIpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfcSwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X3dyYXAoflEyM19yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMjNfcSwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X3dyYXAoflEyM19yKSArIGdndGl0bGUoIkJ5IGluY29tZSBncm91cCIpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUElOQ0lNUCwgZmlsbCA9IFBQSU5DSU1QKSArIGZhY2V0X2dyaWQoUTIzX3F+UTIzX3IpICsgcHRleHQyCgpgYGAKCiMjIyBFZHVjYXRpb24sIHdvcmssIG1hcml0YWwgc3RhdHVzCgpgYGB7ciBxMjMtcGxvdC0yfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMy4yIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyM19xICsgUTIzX3IgKyBQUEVEVUMgKyBQUEVEVUNBVCArIHdvcmsgKyBQUFdPUksgKyBtYXJpdGFsICsgUFBNQVJJVCwgZGVzMjMsIHJvdW5kID0gVCkpCgojIHJlc3RhdGUgcGxvdHMKcDMgPC0gZ2dwbG90KHEyMy4yLCBhZXMoUTIzX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CmBgYAoKYGBge3IgcTIzLXBsb3QtMmJ9CiMgYnkgZWR1Y2F0aW9uCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflEyM19yKQpwMyArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMjNfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflEyM19yKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X2dyaWQoUTIzX3F+UTIzX3IpICsgcHRleHQyCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfciwgZmlsbCA9IFEyM19yKSArIGZhY2V0X2dyaWQoUTIzX3F+UFBFRFVDQVQpICsgcHRleHQyCgojIGJ5IHdvcmsKcDMgKyBnZW9tX2JhcigpICsgYWVzKHdvcmssIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBnZ3RpdGxlKCJCeSBlbXBsb3ltZW50IHN0YXR1cyIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHdvcmssIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkKCiMgYnkgbWFyaXRhbApwMyArIGdlb21fYmFyKCkgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKSArIGdndGl0bGUoIkJ5IG1hcml0YWwgc3RhdHVzIikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKQoKYGBgCgojIyMgTWV0cm8gc3RhdHVzLCByZWdpb24sIHN0YXRlLCBob3VzZSB0eXBlLCBob3VzaW5nIHN0YXR1cywgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CgpgYGB7ciBxMjMtcGxvdC0zfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnEyMy4zIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflEyM19xICsgUTIzX3IgKyBQUE1TQUNBVCArIHBwcmVnOSArIFBQU1RBVEVOICsgUFBIT1VTRSArIFBQUkVOVCArIFBQTkVULCBkZXMyMywgcm91bmQgPSBUKSkKCiMgcmVzdGF0ZSBwbG90cwpwNCA8LSBnZ3Bsb3QocTIzLjMsIGFlcyhRMjNfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKYGBgCgpgYGB7ciBxMjMtcGxvdC0zYn0KIyBieSBtZXRybyBzdGF0dXMKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIzX3IsIGZpbGwgPSBQUE1TQUNBVCkgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBnZ3RpdGxlKCJCeSBtZXRybyBzdGF0dXMiKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUE1TQUNBVCwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKQoKIyBieSByZWdpb24KcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTIzX3IsIGZpbGwgPSBwcHJlZzkpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgcmVnaW9uIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKHBwcmVnOSwgZmlsbCA9IFEyM19yKSArIGZhY2V0X3dyYXAoflEyM19xKSArIGdndGl0bGUoIkJ5IHJlZ2lvbiIpCgojIGJ5IHN0YXRlCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhRMjNfciwgZmlsbCA9IFBQU1RBVEVOKSArIGZhY2V0X3dyYXAoflEyM19xKSArIGdndGl0bGUoIkJ5IHN0YXRlIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKFBQU1RBVEVOLCBmaWxsID0gUTIzX3EpICsgY29vcmRfZmxpcCgpICsgZ2d0aXRsZSgiQnkgc3RhdGUiKQoKIyBieSBob3VzZSB0eXBlCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyM19yLCBmaWxsID0gUFBIT1VTRSkgKyBmYWNldF93cmFwKH5RMjNfcSkKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoZmlsbCA9IFBQSE9VU0UpICsgZ2d0aXRsZSgiQnkgaG91c2UgdHlwZSIpCgojIGhvdXNpbmcgc3RhdHVzCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyM19yLCBmaWxsID0gUFBIT1VTRSkgKyBmYWNldF93cmFwKH5RMjNfcSkKcDQgKyBnZW9tX2JhcigpICsgYWVzKFBQSE9VU0UsIGZpbGwgPSBRMjNfcikgKyBmYWNldF93cmFwKH5RMjNfcSkgKyBnZ3RpdGxlKCJCeSBob3VzaW5nIikKCiMgYnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFEyM19yLCBmaWxsID0gUFBORVQpICsgZmFjZXRfd3JhcCh+UTIzX3EpCnA0ICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQTkVULCBmaWxsID0gUTIzX3IpICsgZmFjZXRfd3JhcCh+UTIzX3EpICsgZ2d0aXRsZSgiQnkgaW50ZXJuZXQgYXZhaWxhYmlsaXR5IikKCmBgYAoKCgoKCiMjIFEzMS4gSG93IG1hbnkgaG91cnMgb2Ygc2NyZWVuIHRpbWUgKHRpbWUgc3BlbnQgd2F0Y2hpbmcgdGVsZXZpc2lvbiwgYSBjb21wdXRlciwgc21hcnRwaG9uZSwgaVBhZCwgZXRjLikgZG8geW91IHNwZW5kIGVhY2ggZGF5IG9uIGF2ZXJhZ2Ugd2hlbiB5b3UgYXJlIG5vdCBzaWNrPyBFbnRlciAwIGlmIG5vbmUKCmBgYHtyfQoKYGBgCgoKCiMjIFEzMi4gSG93IG1hbnkgaG91cnMgb2Ygc2NyZWVuIHRpbWUgZG8geW91IHNwZW5kIGVhY2ggZGF5IG9uIGF2ZXJhZ2Ugd2hlbiB5b3UgYXJlIHNpY2s/IEVudGVyIDAgaWYgbm9uZQoKYGBge3J9CgpgYGAKCgoK