Library

library(formr)
library(dplyr)
## 
## Attache Paket: 'dplyr'
## Die folgenden Objekte sind maskiert von 'package:formr':
## 
##     first, last
## Die folgenden Objekte sind maskiert von 'package:stats':
## 
##     filter, lag
## Die folgenden Objekte sind maskiert von 'package:base':
## 
##     intersect, setdiff, setequal, union

Data

Load selected data based on 01_datawrangling

fulldata_selected_wrangled = read.csv(file = "fulldata_selected_wrangled.csv")[,-1]

Exclusion Process

data_included = fulldata_selected_wrangled

All participants younger than 18

From the initial dataset of respondents (N = 94,738), 26653 could not participate, because they were younger than 18 years of age.

data_included = fulldata_selected_wrangled %>%
  filter(age >= 18 |
         is.na(age))

nrow(data_included)
## [1] 68100
fulldata_selected_wrangled = data_included

The total number of responses was 68100.

All participants who do not identify as women

From the initial dataset of respondents (n = 68,100), we excluded 3221 participants because they did not identify as women (Men, Genderqueer/Nonbinary; None of the above; Prefer not to say; Other)

table(data_included$sex)
## 
## Genderqueer/Nonbinary                   Man     None of the above 
##                   840                  2055                    58 
##                 Other     Prefer not to say                 Woman 
##                    43                   225                 64879
data_included = data_included %>%
  filter((sex != "Man" &
         sex != "Genderqueer/Nonbinary" &
         sex != "None of the above" &
         sex != "Prefer not to say" &
         sex != "Other")  |
         is.na(sex))

table(data_included$sex)
## 
## Woman 
## 64879
table(is.na(data_included$sex))
## 
## FALSE 
## 64879

All participants who do not identify as heterosexual

From the initial dataset of respondents (n = 68,100), we excluded 13454 participants because they did not identify as heterosexual (Lesbian/Gay/Homosexual; Bisexual/Pansexual; Queer; Asexual; Prefer not to say; Other)

Consecutively, this means we excluded 11946 participants because they did not identify as heterosexual (Lesbian/Gay/Homosexual; Bisexual/Pansexual; Queer; Asexual; Prefer not to say; Other)

table(data_included$sexual_orientation)
## 
##                Asexual     Bisexual/Pansexual Lesbian/Gay/Homosexual 
##                    457                   8857                   1208 
##                  Other      Prefer not to say                  Queer 
##                    266                    584                    574 
##  Straight/Heterosexual 
##                  52933
data_included = data_included %>%
  filter((sexual_orientation != "Lesbian/Gay/Homosexual" & sexual_orientation != "Bisexual/Pansexual" &
         sexual_orientation != "Queer" & sexual_orientation != "Asexual" &
         sexual_orientation != "Prefer not to say" & sexual_orientation != "Other") |
         is.na(sexual_orientation))

table(data_included$sexual_orientation)
## 
## Straight/Heterosexual 
##                 52933
table(is.na(data_included$sexual_orientation)) 
## 
## FALSE 
## 52933

All participants who indicated being in a relationship

fulldata_selected_wrangled = fulldata_selected_wrangled %>%
  mutate(relationship_binary = ifelse(is.na(relationship), 0,
                                      ifelse(relationship %contains% "New (less than 1 month old) romantic and/or sexual relationship", 1,
                                             ifelse(relationship %contains% "Ongoing (longer than 1 month) uncommitted/non-exclusive romantic and/or sexual relationship", 1,
                                                    ifelse(relationship %contains% "Long-term committed/exclusive sexual relationship with one or more partners", 1,
                                                           ifelse(relationship %contains% "Other", 1, 0))))))
table(fulldata_selected_wrangled$relationship_binary)
## 
##     0     1 
## 24052 44048
data_included = data_included %>%
  mutate(relationship_binary = ifelse(is.na(relationship), 0,
                                      ifelse(relationship %contains% "New (less than 1 month old) romantic and/or sexual relationship", 1,
                                             ifelse(relationship %contains% "Ongoing (longer than 1 month) uncommitted/non-exclusive romantic and/or sexual relationship", 1,
                                                    ifelse(relationship %contains% "Long-term committed/exclusive sexual relationship with one or more partners", 1,
                                                           ifelse(relationship %contains% "Other", 1, 0))))))
table(data_included$relationship_binary)
## 
##     0     1 
## 18144 34789

From the initial dataset of respondents (n = 68,100), we excluded 4.4048^{4} participants because they indicated being in a relationship (New (less than 1 month old) romantic and/or sexual relationship ; Ongoing (longer than 1 month) uncommitted/non-exclusive romantic and/or sexual relationship; Long-term committed/exclusive sexual relationship with one or more partners) or participants where it was not sure whether they were currently single (Other).

Consecutively, we excluded 3.4789^{4} participants because they indicated being in a relationship (New (less than 1 month old) romantic and/or sexual relationship ; Ongoing (longer than 1 month) uncommitted/non-exclusive romantic and/or sexual relationship; Long-term committed/exclusive sexual relationship with one or more partners) or participants where it was not sure whether they were currently single (Other).

data_included = data_included %>% filter(relationship_binary == 0) %>%
  select(-relationship1, -relationship2, -relationship3, -relationship4, -relationship5, -relationship_binary)

All participants who did not specify their political orientation

From the initial dataset of respondents (n = 68,100), we excluded 15025 participants because they did not specify their political orientation.

Consecutively, we excluded 4329 participants because they did not specify their political orientation.

data_included = data_included %>%
  mutate(political_orientation = ifelse(political_orientation == "", NA, political_orientation))

table(is.na(data_included$political_orientation))
## 
## FALSE  TRUE 
## 13815  4329
data_included = data_included %>%
  filter(!is.na(political_orientation))

All participants who did not answer the survey seriously or chose not to answer the seriousness question

From the initial dataset of respondents (n = 68,100), we excluded 2070 participants because they indicated not answering the survey seriously (I did not answer seriously, please disregard my information; I choose not to answer)

Consecutively, we excluded 558 participants because they indicated not answering the survey seriously (I did not answer seriously, please disregard my information; I choose not to answer)

table(data_included$answer_accuracy)
## 
##                                              I choose not to answer. 
##                                                                  335 
##         I did not answer seriously; please disregard my information. 
##                                                                  223 
## I took the survey seriously; please use my information in the study. 
##                                                                12461
data_included = data_included %>%
  filter((answer_accuracy != "I did not answer seriously; please disregard my information." &
         answer_accuracy != "I choose not to answer.") |
         is.na(answer_accuracy))

We have 796 missings for answer_accuracy here. As mentioned in the preregistration, we included these participants in our analyses.

missings = data_included %>% filter(is.na(answer_accuracy))

Save Data

write.csv(data_included, file = "data_included.csv")
LS0tDQp0aXRsZTogPGZvbnQgY29sb3I9IiM2NkMyQTUiPkV4Y2x1c2lvbjwvZm9udD4NCmNzbDogYXBhLWN1c3RvbS1uby1pc3N1ZS5jc2wNCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KIyMgey50YWJzZXR9DQoNCiMjIyBMaWJyYXJ5DQpgYGB7ciBMaWJyYXJ5fQ0KbGlicmFyeShmb3JtcikNCmxpYnJhcnkoZHBseXIpDQpgYGANCg0KIyMjIERhdGENCkxvYWQgc2VsZWN0ZWQgZGF0YSBiYXNlZCBvbiAwMV9kYXRhd3JhbmdsaW5nDQpgYGB7ciBEYXRhfQ0KZnVsbGRhdGFfc2VsZWN0ZWRfd3JhbmdsZWQgPSByZWFkLmNzdihmaWxlID0gImZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkLmNzdiIpWywtMV0NCmBgYA0KDQojIyMgRXhjbHVzaW9uIFByb2Nlc3Mgey50YWJzZXQgLmFjdGl2ZX0NCmBgYHtyIEV4Y2x1c2lvbiBQcm9jZXNzfQ0KZGF0YV9pbmNsdWRlZCA9IGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkDQpgYGANCg0KIyMjIyBBbGwgcGFydGljaXBhbnRzIHlvdW5nZXIgdGhhbiAxOCB7LnRhYnNldCAuYWN0aXZlfQ0KRnJvbSB0aGUgaW5pdGlhbCBkYXRhc2V0IG9mIHJlc3BvbmRlbnRzIChOID0gOTQsNzM4KSwgYHIgc3VtKGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJGFnZSA8IDE4LCBuYS5ybSA9IFQpICsgc3VtKGlzLm5hKGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJGFnZSkpYCBjb3VsZCBub3QgcGFydGljaXBhdGUsIGJlY2F1c2UgdGhleSB3ZXJlIHlvdW5nZXIgdGhhbiAxOCB5ZWFycyBvZiBhZ2UuDQpgYGB7ciBBZ2V9DQpkYXRhX2luY2x1ZGVkID0gZnVsbGRhdGFfc2VsZWN0ZWRfd3JhbmdsZWQgJT4lDQogIGZpbHRlcihhZ2UgPj0gMTggfA0KICAgICAgICAgaXMubmEoYWdlKSkNCg0KbnJvdyhkYXRhX2luY2x1ZGVkKQ0KDQpmdWxsZGF0YV9zZWxlY3RlZF93cmFuZ2xlZCA9IGRhdGFfaW5jbHVkZWQNCmBgYA0KVGhlIHRvdGFsIG51bWJlciBvZiByZXNwb25zZXMgd2FzIGByIG5yb3coZGF0YV9pbmNsdWRlZClgLiANCg0KIyMjIyBBbGwgcGFydGljaXBhbnRzIHdobyBkbyBub3QgaWRlbnRpZnkgYXMgd29tZW4gey50YWJzZXR9DQpGcm9tIHRoZSBpbml0aWFsIGRhdGFzZXQgb2YgcmVzcG9uZGVudHMgKG4gPSA2OCwxMDApLCB3ZSBleGNsdWRlZCBgciBzdW0oZnVsbGRhdGFfc2VsZWN0ZWRfd3JhbmdsZWQkc2V4ID09ICJNYW4iLCBmdWxsZGF0YV9zZWxlY3RlZF93cmFuZ2xlZCRzZXggPT0gIkdlbmRlcnF1ZWVyL05vbmJpbmFyeSIsIGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJHNleCA9PSAiTm9uZSBvZiB0aGUgYWJvdmUiLCBmdWxsZGF0YV9zZWxlY3RlZF93cmFuZ2xlZCRzZXggPT0gIlByZWZlciBub3QgdG8gc2F5IiwgZnVsbGRhdGFfc2VsZWN0ZWRfd3JhbmdsZWQkc2V4ID09ICJPdGhlciIsIG5hLnJtID0gVClgIHBhcnRpY2lwYW50cyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBpZGVudGlmeSBhcyB3b21lbiAoTWVuLCBHZW5kZXJxdWVlci9Ob25iaW5hcnk7IE5vbmUgb2YgdGhlIGFib3ZlOyBQcmVmZXIgbm90IHRvIHNheTsgT3RoZXIpDQoNCmBgYHtyIFNleH0NCnRhYmxlKGRhdGFfaW5jbHVkZWQkc2V4KQ0KDQpkYXRhX2luY2x1ZGVkID0gZGF0YV9pbmNsdWRlZCAlPiUNCiAgZmlsdGVyKChzZXggIT0gIk1hbiIgJg0KICAgICAgICAgc2V4ICE9ICJHZW5kZXJxdWVlci9Ob25iaW5hcnkiICYNCiAgICAgICAgIHNleCAhPSAiTm9uZSBvZiB0aGUgYWJvdmUiICYNCiAgICAgICAgIHNleCAhPSAiUHJlZmVyIG5vdCB0byBzYXkiICYNCiAgICAgICAgIHNleCAhPSAiT3RoZXIiKSAgfA0KICAgICAgICAgaXMubmEoc2V4KSkNCg0KdGFibGUoZGF0YV9pbmNsdWRlZCRzZXgpDQp0YWJsZShpcy5uYShkYXRhX2luY2x1ZGVkJHNleCkpDQpgYGANCg0KIyMjIyBBbGwgcGFydGljaXBhbnRzIHdobyBkbyBub3QgaWRlbnRpZnkgYXMgaGV0ZXJvc2V4dWFsIHsudGFic2V0fQ0KRnJvbSB0aGUgaW5pdGlhbCBkYXRhc2V0IG9mIHJlc3BvbmRlbnRzIChuID0gNjgsMTAwKSwgd2UgZXhjbHVkZWQgYHIgc3VtKGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJHNleHVhbF9vcmllbnRhdGlvbiA9PSAiTGVzYmlhbi9HYXkvSG9tb3NleHVhbCIsIGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJHNleHVhbF9vcmllbnRhdGlvbiA9PSAiQmlzZXh1YWwvUGFuc2V4dWFsIiwgZnVsbGRhdGFfc2VsZWN0ZWRfd3JhbmdsZWQkc2V4dWFsX29yaWVudGF0aW9uID09ICJRdWVlciIsIGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJHNleHVhbF9vcmllbnRhdGlvbiA9PSAiQXNleHVhbCIsIGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJHNleHVhbF9vcmllbnRhdGlvbiA9PSAiUHJlZmVyIG5vdCB0byBzYXkiLCBmdWxsZGF0YV9zZWxlY3RlZF93cmFuZ2xlZCRzZXh1YWxfb3JpZW50YXRpb24gPT0gIk90aGVyIiwgbmEucm0gPSBUKWAgcGFydGljaXBhbnRzIGJlY2F1c2UgdGhleSBkaWQgbm90IGlkZW50aWZ5IGFzIGhldGVyb3NleHVhbCAoTGVzYmlhbi9HYXkvSG9tb3NleHVhbDsgQmlzZXh1YWwvUGFuc2V4dWFsOyBRdWVlcjsgQXNleHVhbDsgUHJlZmVyIG5vdCB0byBzYXk7IE90aGVyKQ0KDQpDb25zZWN1dGl2ZWx5LCB0aGlzIG1lYW5zIHdlIGV4Y2x1ZGVkIGByIHN1bShkYXRhX2luY2x1ZGVkJHNleHVhbF9vcmllbnRhdGlvbiA9PSAiTGVzYmlhbi9HYXkvSG9tb3NleHVhbCIsIGRhdGFfaW5jbHVkZWQkc2V4dWFsX29yaWVudGF0aW9uID09ICJCaXNleHVhbC9QYW5zZXh1YWwiLCBkYXRhX2luY2x1ZGVkJHNleHVhbF9vcmllbnRhdGlvbiA9PSAiUXVlZXIiLCBkYXRhX2luY2x1ZGVkJHNleHVhbF9vcmllbnRhdGlvbiA9PSAiQXNleHVhbCIsIGRhdGFfaW5jbHVkZWQkc2V4dWFsX29yaWVudGF0aW9uID09ICJQcmVmZXIgbm90IHRvIHNheSIsIGRhdGFfaW5jbHVkZWQkc2V4dWFsX29yaWVudGF0aW9uID09ICJPdGhlciIsIG5hLnJtID0gVClgIHBhcnRpY2lwYW50cyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBpZGVudGlmeSBhcyBoZXRlcm9zZXh1YWwgKExlc2JpYW4vR2F5L0hvbW9zZXh1YWw7IEJpc2V4dWFsL1BhbnNleHVhbDsgUXVlZXI7IEFzZXh1YWw7IFByZWZlciBub3QgdG8gc2F5OyBPdGhlcikgIA0KYGBge3IgU2V4dWFsaXR5fQ0KdGFibGUoZGF0YV9pbmNsdWRlZCRzZXh1YWxfb3JpZW50YXRpb24pDQoNCmRhdGFfaW5jbHVkZWQgPSBkYXRhX2luY2x1ZGVkICU+JQ0KICBmaWx0ZXIoKHNleHVhbF9vcmllbnRhdGlvbiAhPSAiTGVzYmlhbi9HYXkvSG9tb3NleHVhbCIgJiBzZXh1YWxfb3JpZW50YXRpb24gIT0gIkJpc2V4dWFsL1BhbnNleHVhbCIgJg0KICAgICAgICAgc2V4dWFsX29yaWVudGF0aW9uICE9ICJRdWVlciIgJiBzZXh1YWxfb3JpZW50YXRpb24gIT0gIkFzZXh1YWwiICYNCiAgICAgICAgIHNleHVhbF9vcmllbnRhdGlvbiAhPSAiUHJlZmVyIG5vdCB0byBzYXkiICYgc2V4dWFsX29yaWVudGF0aW9uICE9ICJPdGhlciIpIHwNCiAgICAgICAgIGlzLm5hKHNleHVhbF9vcmllbnRhdGlvbikpDQoNCnRhYmxlKGRhdGFfaW5jbHVkZWQkc2V4dWFsX29yaWVudGF0aW9uKQ0KdGFibGUoaXMubmEoZGF0YV9pbmNsdWRlZCRzZXh1YWxfb3JpZW50YXRpb24pKSANCmBgYA0KDQojIyMjIEFsbCBwYXJ0aWNpcGFudHMgd2hvIGluZGljYXRlZCBiZWluZyBpbiBhIHJlbGF0aW9uc2hpcCB7LnRhYnNldH0NCmBgYHtyfQ0KZnVsbGRhdGFfc2VsZWN0ZWRfd3JhbmdsZWQgPSBmdWxsZGF0YV9zZWxlY3RlZF93cmFuZ2xlZCAlPiUNCiAgbXV0YXRlKHJlbGF0aW9uc2hpcF9iaW5hcnkgPSBpZmVsc2UoaXMubmEocmVsYXRpb25zaGlwKSwgMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlbGF0aW9uc2hpcCAlY29udGFpbnMlICJOZXcgKGxlc3MgdGhhbiAxIG1vbnRoIG9sZCkgcm9tYW50aWMgYW5kL29yIHNleHVhbCByZWxhdGlvbnNoaXAiLCAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlbGF0aW9uc2hpcCAlY29udGFpbnMlICJPbmdvaW5nIChsb25nZXIgdGhhbiAxIG1vbnRoKSB1bmNvbW1pdHRlZC9ub24tZXhjbHVzaXZlIHJvbWFudGljIGFuZC9vciBzZXh1YWwgcmVsYXRpb25zaGlwIiwgMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVsYXRpb25zaGlwICVjb250YWlucyUgIkxvbmctdGVybSBjb21taXR0ZWQvZXhjbHVzaXZlIHNleHVhbCByZWxhdGlvbnNoaXAgd2l0aCBvbmUgb3IgbW9yZSBwYXJ0bmVycyIsIDEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZWxhdGlvbnNoaXAgJWNvbnRhaW5zJSAiT3RoZXIiLCAxLCAwKSkpKSkpDQp0YWJsZShmdWxsZGF0YV9zZWxlY3RlZF93cmFuZ2xlZCRyZWxhdGlvbnNoaXBfYmluYXJ5KQ0KDQpkYXRhX2luY2x1ZGVkID0gZGF0YV9pbmNsdWRlZCAlPiUNCiAgbXV0YXRlKHJlbGF0aW9uc2hpcF9iaW5hcnkgPSBpZmVsc2UoaXMubmEocmVsYXRpb25zaGlwKSwgMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlbGF0aW9uc2hpcCAlY29udGFpbnMlICJOZXcgKGxlc3MgdGhhbiAxIG1vbnRoIG9sZCkgcm9tYW50aWMgYW5kL29yIHNleHVhbCByZWxhdGlvbnNoaXAiLCAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlbGF0aW9uc2hpcCAlY29udGFpbnMlICJPbmdvaW5nIChsb25nZXIgdGhhbiAxIG1vbnRoKSB1bmNvbW1pdHRlZC9ub24tZXhjbHVzaXZlIHJvbWFudGljIGFuZC9vciBzZXh1YWwgcmVsYXRpb25zaGlwIiwgMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVsYXRpb25zaGlwICVjb250YWlucyUgIkxvbmctdGVybSBjb21taXR0ZWQvZXhjbHVzaXZlIHNleHVhbCByZWxhdGlvbnNoaXAgd2l0aCBvbmUgb3IgbW9yZSBwYXJ0bmVycyIsIDEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZWxhdGlvbnNoaXAgJWNvbnRhaW5zJSAiT3RoZXIiLCAxLCAwKSkpKSkpDQp0YWJsZShkYXRhX2luY2x1ZGVkJHJlbGF0aW9uc2hpcF9iaW5hcnkpDQpgYGANCg0KRnJvbSB0aGUgaW5pdGlhbCBkYXRhc2V0IG9mIHJlc3BvbmRlbnRzIChuID0gNjgsMTAwKSwgd2UgZXhjbHVkZWQgYHIgc3VtKGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJHJlbGF0aW9uc2hpcF9iaW5hcnksIG5hLnJtID0gVClgIHBhcnRpY2lwYW50cyBiZWNhdXNlIHRoZXkgaW5kaWNhdGVkIGJlaW5nIGluIGEgcmVsYXRpb25zaGlwIChOZXcgKGxlc3MgdGhhbiAxIG1vbnRoIG9sZCkgcm9tYW50aWMgYW5kL29yIHNleHVhbCByZWxhdGlvbnNoaXAgOyBPbmdvaW5nIChsb25nZXIgdGhhbiAxIG1vbnRoKSB1bmNvbW1pdHRlZC9ub24tZXhjbHVzaXZlIHJvbWFudGljIGFuZC9vciBzZXh1YWwgcmVsYXRpb25zaGlwOyBMb25nLXRlcm0gY29tbWl0dGVkL2V4Y2x1c2l2ZSBzZXh1YWwgcmVsYXRpb25zaGlwIHdpdGggb25lIG9yIG1vcmUgcGFydG5lcnMpIG9yIHBhcnRpY2lwYW50cyB3aGVyZSBpdCB3YXMgbm90IHN1cmUgd2hldGhlciB0aGV5IHdlcmUgY3VycmVudGx5IHNpbmdsZSAoT3RoZXIpLg0KDQpDb25zZWN1dGl2ZWx5LCB3ZSBleGNsdWRlZCBgciBzdW0oZGF0YV9pbmNsdWRlZCRyZWxhdGlvbnNoaXBfYmluYXJ5LCBuYS5ybSA9IFQpYCBwYXJ0aWNpcGFudHMgYmVjYXVzZSB0aGV5IGluZGljYXRlZCBiZWluZyBpbiBhIHJlbGF0aW9uc2hpcCAoTmV3IChsZXNzIHRoYW4gMSBtb250aCBvbGQpIHJvbWFudGljIGFuZC9vciBzZXh1YWwgcmVsYXRpb25zaGlwIDsgT25nb2luZyAobG9uZ2VyIHRoYW4gMSBtb250aCkgdW5jb21taXR0ZWQvbm9uLWV4Y2x1c2l2ZSByb21hbnRpYyBhbmQvb3Igc2V4dWFsIHJlbGF0aW9uc2hpcDsgTG9uZy10ZXJtIGNvbW1pdHRlZC9leGNsdXNpdmUgc2V4dWFsIHJlbGF0aW9uc2hpcCB3aXRoIG9uZSBvciBtb3JlIHBhcnRuZXJzKSBvciBwYXJ0aWNpcGFudHMgd2hlcmUgaXQgd2FzIG5vdCBzdXJlIHdoZXRoZXIgdGhleSB3ZXJlIGN1cnJlbnRseSBzaW5nbGUgKE90aGVyKS4NCg0KYGBge3J9DQpkYXRhX2luY2x1ZGVkID0gZGF0YV9pbmNsdWRlZCAlPiUgZmlsdGVyKHJlbGF0aW9uc2hpcF9iaW5hcnkgPT0gMCkgJT4lDQogIHNlbGVjdCgtcmVsYXRpb25zaGlwMSwgLXJlbGF0aW9uc2hpcDIsIC1yZWxhdGlvbnNoaXAzLCAtcmVsYXRpb25zaGlwNCwgLXJlbGF0aW9uc2hpcDUsIC1yZWxhdGlvbnNoaXBfYmluYXJ5KQ0KYGBgDQoNCg0KIyMjIyBBbGwgcGFydGljaXBhbnRzIHdobyBkaWQgbm90IHNwZWNpZnkgdGhlaXIgcG9saXRpY2FsIG9yaWVudGF0aW9uIHsudGFic2V0fQ0KRnJvbSB0aGUgaW5pdGlhbCBkYXRhc2V0IG9mIHJlc3BvbmRlbnRzIChuID0gNjgsMTAwKSwgd2UgZXhjbHVkZWQgYHIgc3VtKGlzLm5hKGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJHBvbGl0aWNhbF9vcmllbnRhdGlvbikpYCBwYXJ0aWNpcGFudHMgYmVjYXVzZSB0aGV5IGRpZCBub3Qgc3BlY2lmeSB0aGVpciBwb2xpdGljYWwgb3JpZW50YXRpb24uIA0KDQpDb25zZWN1dGl2ZWx5LCB3ZSBleGNsdWRlZCBgciBzdW0oaXMubmEoZGF0YV9pbmNsdWRlZCRwb2xpdGljYWxfb3JpZW50YXRpb24pKWAgcGFydGljaXBhbnRzIGJlY2F1c2UgdGhleSBkaWQgbm90IHNwZWNpZnkgdGhlaXIgcG9saXRpY2FsIG9yaWVudGF0aW9uLiANCmBgYHtyIFBvbGl0aWNhbCBPcmllbnRhdGlvbn0NCmRhdGFfaW5jbHVkZWQgPSBkYXRhX2luY2x1ZGVkICU+JQ0KICBtdXRhdGUocG9saXRpY2FsX29yaWVudGF0aW9uID0gaWZlbHNlKHBvbGl0aWNhbF9vcmllbnRhdGlvbiA9PSAiIiwgTkEsIHBvbGl0aWNhbF9vcmllbnRhdGlvbikpDQoNCnRhYmxlKGlzLm5hKGRhdGFfaW5jbHVkZWQkcG9saXRpY2FsX29yaWVudGF0aW9uKSkNCg0KZGF0YV9pbmNsdWRlZCA9IGRhdGFfaW5jbHVkZWQgJT4lDQogIGZpbHRlcighaXMubmEocG9saXRpY2FsX29yaWVudGF0aW9uKSkNCmBgYA0KDQojIyMjIEFsbCBwYXJ0aWNpcGFudHMgd2hvIGRpZCBub3QgYW5zd2VyIHRoZSBzdXJ2ZXkgc2VyaW91c2x5IG9yIGNob3NlIG5vdCB0byBhbnN3ZXIgdGhlIHNlcmlvdXNuZXNzIHF1ZXN0aW9uIHsudGFic2V0fQ0KRnJvbSB0aGUgaW5pdGlhbCBkYXRhc2V0IG9mIHJlc3BvbmRlbnRzIChuID0gNjgsMTAwKSwgd2UgZXhjbHVkZWQgYHIgc3VtKGZ1bGxkYXRhX3NlbGVjdGVkX3dyYW5nbGVkJGFuc3dlcl9hY2N1cmFjeSA9PSAiSSBkaWQgbm90IGFuc3dlciBzZXJpb3VzbHk7IHBsZWFzZSBkaXNyZWdhcmQgbXkgaW5mb3JtYXRpb24uIiwgZnVsbGRhdGFfc2VsZWN0ZWRfd3JhbmdsZWQkYW5zd2VyX2FjY3VyYWN5ID09ICJJIGNob29zZSBub3QgdG8gYW5zd2VyLiIsIG5hLnJtID0gVClgIHBhcnRpY2lwYW50cyBiZWNhdXNlIHRoZXkgaW5kaWNhdGVkIG5vdCBhbnN3ZXJpbmcgdGhlIHN1cnZleSBzZXJpb3VzbHkgKEkgZGlkIG5vdCBhbnN3ZXIgc2VyaW91c2x5LCBwbGVhc2UgZGlzcmVnYXJkIG15IGluZm9ybWF0aW9uOyBJIGNob29zZSBub3QgdG8gYW5zd2VyKQ0KDQpDb25zZWN1dGl2ZWx5LCB3ZSBleGNsdWRlZCBgciBzdW0oZGF0YV9pbmNsdWRlZCRhbnN3ZXJfYWNjdXJhY3kgPT0gIkkgZGlkIG5vdCBhbnN3ZXIgc2VyaW91c2x5OyBwbGVhc2UgZGlzcmVnYXJkIG15IGluZm9ybWF0aW9uLiIsIGRhdGFfaW5jbHVkZWQkYW5zd2VyX2FjY3VyYWN5ID09ICJJIGNob29zZSBub3QgdG8gYW5zd2VyLiIsIG5hLnJtID0gVClgIHBhcnRpY2lwYW50cyBiZWNhdXNlIHRoZXkgaW5kaWNhdGVkIG5vdCBhbnN3ZXJpbmcgdGhlIHN1cnZleSBzZXJpb3VzbHkgKEkgZGlkIG5vdCBhbnN3ZXIgc2VyaW91c2x5LCBwbGVhc2UgZGlzcmVnYXJkIG15IGluZm9ybWF0aW9uOyBJIGNob29zZSBub3QgdG8gYW5zd2VyKQ0KDQpgYGB7ciBBY2N1cmFjeX0NCnRhYmxlKGRhdGFfaW5jbHVkZWQkYW5zd2VyX2FjY3VyYWN5KQ0KZGF0YV9pbmNsdWRlZCA9IGRhdGFfaW5jbHVkZWQgJT4lDQogIGZpbHRlcigoYW5zd2VyX2FjY3VyYWN5ICE9ICJJIGRpZCBub3QgYW5zd2VyIHNlcmlvdXNseTsgcGxlYXNlIGRpc3JlZ2FyZCBteSBpbmZvcm1hdGlvbi4iICYNCiAgICAgICAgIGFuc3dlcl9hY2N1cmFjeSAhPSAiSSBjaG9vc2Ugbm90IHRvIGFuc3dlci4iKSB8DQogICAgICAgICBpcy5uYShhbnN3ZXJfYWNjdXJhY3kpKQ0KYGBgDQoNCldlIGhhdmUgYHIgc3VtKGlzLm5hKGRhdGFfaW5jbHVkZWQkYW5zd2VyX2FjY3VyYWN5KSlgIG1pc3NpbmdzIGZvciBhbnN3ZXJfYWNjdXJhY3kgaGVyZS4gQXMgbWVudGlvbmVkIGluIHRoZSBwcmVyZWdpc3RyYXRpb24sIHdlIGluY2x1ZGVkIHRoZXNlIHBhcnRpY2lwYW50cyBpbiBvdXIgYW5hbHlzZXMuDQpgYGB7ciBBY2N1cmFjeSBNaXNzaW5nc30NCm1pc3NpbmdzID0gZGF0YV9pbmNsdWRlZCAlPiUgZmlsdGVyKGlzLm5hKGFuc3dlcl9hY2N1cmFjeSkpDQpgYGANCg0KIyMjIFNhdmUgRGF0YQ0KYGBge3IgU2F2ZSBEYXRhfQ0Kd3JpdGUuY3N2KGRhdGFfaW5jbHVkZWQsIGZpbGUgPSAiZGF0YV9pbmNsdWRlZC5jc3YiKQ0KYGBgDQo=