The Data
The Behavioral Risk Factor Surveillance System (BRFSS) is an annual telephone survey of 350,000 people in the United States. As its name implies, the BRFSS is designed to identify risk factors in the adult population and report emerging health trends. For example, respondents are asked about their diet and weekly physical activity, their HIV/AIDS status, possible tobacco use, and even their level of health care coverage. The BRFSS Web site (http://www.cdc.gov/brfss) contains a complete description of the survey, including the research questions that motivate the study and many interesting results derived from the data.We will focus on a random sample of 20,000 people from the BRFSS survey conducted in 2000. While there are over 200 variables in this data set, we will work with a small subset.
source("http://www.openintro.org/stat/data/cdc.R")
names(cdc)
[1] "genhlth" "exerany" "hlthplan" "smoke100" "height" "weight"
[7] "wtdesire" "age" "gender"
This returns the names genhlth, exerany, hlthplan, smoke100, height, weight, wtdesire, age, and gender. Each one of these variables corresponds to a question that was asked in the survey. For example, for genhlth, respondents were asked to evaluate their general health, responding either excellent, very good, good, fair or poor. The exerany variable indicates whether the respondent exercised in the past month (1) or did not (0). Likewise, hlthplan indicates whether the respondent had some form of health coverage (1) or did not (0). The smoke100 variable indicates whether the respondent had smoked at least 100 cigarettes in her lifetime. The other variables record the respondent’s height in inches, weight in pounds as well as their desired weight, wtdesire, age in years, and gender.
Exercise 1
How many cases are there in this data set? 20000 How many variables? 9 For each variable, identify its data type (e.g. categorical, discrete). Categorical: genhlth, exerany, hlthplan, smoke100
Quantitative: height (in), weight (lbs), wtdesire (lbs), age (yrs)
Summaries and Tables
summary(cdc$weight)
Min. 1st Qu. Median Mean 3rd Qu. Max.
68.0 140.0 165.0 169.7 190.0 500.0
mean(cdc$weight)
[1] 169.683
var(cdc$weight)
[1] 1606.484
median(cdc$weight)
[1] 165
table(cdc$smoke100)
0 1
10559 9441
table(cdc$smoke100)/20000
0 1
0.52795 0.47205
Analysis What I see from the output is that weight might be skewed right slightly because the mean is higher than the median.
The first table shows the counts of non-smokers (0) and smokers (1). This same information is more useful as a relative frequency table in which 52.8% of sample were non-smokers and 47.2% of sample were smokers.
Exercise 2
Create a numerical summary for height and age, and compute the interquartile range for each.
summary(cdc$height)
Min. 1st Qu. Median Mean 3rd Qu. Max.
48.00 64.00 67.00 67.18 70.00 93.00
summary(cdc$weight)
Min. 1st Qu. Median Mean 3rd Qu. Max.
68.0 140.0 165.0 169.7 190.0 500.0
IQR for height: 70 - 64 = 6 inches. IQR for age 57 - 31 = 26 years
Compute the relative frequency distribution for gender and exerany.
table(cdc$gender)/20000
m f
0.47845 0.52155
table(cdc$exerany)/20000
0 1
0.2543 0.7457
table(cdc$genhlth)
excellent very good good fair poor
4657 6972 5675 2019 677
How many males are in the sample? 47.8% of the sample was male
What proportion of the sample reports being in excellent health? while 74.6% of the sample report that they exercise, only 23.2% of the sample reports being in excellent health.
Exercise 3
What does the mosaic plot reveal about smoking habits and gender?
mosaicplot(table(cdc$gender, cdc$smoke100), main = "Association between Gender and Smoking Habits")

Analysis: Smoking habits and gender seem to be associated as females are less likely to report being smokers than males.
Exercise 4
Create a new object called under23 and smoke that contains all observations of respondents under the age of 23 that have smoked 100 cigarettes in their lifetime. Write the command you used to create the new object as the answer to this exercise.
a_and_under23 <- subset(cdc, cdc$smoke100 == "1" & cdc$age < 23)
620 subjects are under 23 and have smoked 100 ciggarettes in their lifetime
Quantitative Data
Exercise 5
What does this box plot show? Pick another categorical variable from the data set and see how it relates to BMI. List the variable you chose, why you might think it would have a relationship to BMI, and indicate what the figure seems to suggest.
boxplot(bmi ~ cdc$genhlth, horizontal = TRUE)

Analysis As general health goes down from excellent to poor, the average BMI increases and becomes more variable. All distributions are skewed high with many high outliers.
boxplot(bmi ~ cdc$gender, horizontal = TRUE)

Analysis It suprises me to see that the average BMI for females in the study is lower than that of the males. Both distributions are skewed high with many outliers, considering that the IQR for females tends to be about 7 (50% of women have a BMI measure pf between 22 and 28), while the males middle 50% is in a range of about 5 from a BMI measure of about 24 and 29.
On Your Own
1.Make a scatterplot of weight versus desired weight. Describe the relationship between these two variables.
plot(cdc$wtdesire ~ cdc$weight, main = "Weight Vs Desired Weight", xlab = "weight (lbs)", ylab = "Desired Weight (lbs)", xlim = c(75,500), ylim = c(75,700))

Analysis The association between a person’s weight and desired weight reveals that at the weights between 100 and 200, the weight and desired weight are relatively close to each other. However, at the higher weights between 200 and 300 pounds, the desired weight tends to be lower than the actual weight.
2.Let’s consider a new variable: the difference between desired weight (wtdesire) and current weight (weight). Create this new variable by subtracting the two columns in the data frame and assigning them to a new object called wdiff.
wtdiff <- (cdc$wtdesire - cdc$weight)
3.Analyze: What type of data is wdiff? Quantitative Data If an observation wdiff is 0, what does this mean about the person’s weight and desired weight?If the value is 0, then the person weighs what they desire What if wdiff is positive or negative?If the value is positive then the person wants to gain weight. If negative, the person wants to lose weight.
4.Make a histogram of wdiff Describe the distribution of wdiff in terms of its center, shape, and spread, including any plots you use. What does this tell us about how people feel about their current weight?
hist(wtdiff, main = "Weight Difference", xlab = "wtdesire - weight")

Analysis The distribution of weight difference shows that almost all of the subjects have a negative value for the weight difference variable, meaning that they desire to lose weight.
5.Subset wdiff into male and female groups. Using numerical summaries and a side-by-side box plot, determine if men tend to view their weight differently than women. EXPLAIN
boxplot(wtdiff ~ cdc$gender, xlab = "Weight Difference", ylab = "Gender", horizontal = TRUE)

Analysis It looks as if 25% of both groups are ok with their weight or would like to even gain weight. The 2 outliers for the men are questionable. Is it true that two men surveyed would like to gain 300 and over 400 pounds? In general, 75% of men and women would like to lose weight. Women tend to want to lose more weight than men. I’m suprised we don’t see more of a difference between the genders.
LS0tDQp0aXRsZTogIlNEQTIwIExhYiAyIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCiMjIyBKZXN1cyBUb3JyZXMNClN0YXRpc3RpY3MgYW5kIERhdGEgQW5hbHlzaXMNCg0KIyMjIFRoZSBEYXRhDQpUaGUgQmVoYXZpb3JhbCBSaXNrIEZhY3RvciBTdXJ2ZWlsbGFuY2UgU3lzdGVtIChCUkZTUykgaXMgYW4gYW5udWFsIHRlbGVwaG9uZSBzdXJ2ZXkgb2YgMzUwLDAwMCBwZW9wbGUgaW4gdGhlIFVuaXRlZCBTdGF0ZXMuIEFzIGl0cyBuYW1lIGltcGxpZXMsIHRoZSBCUkZTUyBpcyBkZXNpZ25lZCB0byBpZGVudGlmeSByaXNrIGZhY3RvcnMgaW4gdGhlIGFkdWx0IHBvcHVsYXRpb24gYW5kIHJlcG9ydCBlbWVyZ2luZyBoZWFsdGggdHJlbmRzLiBGb3IgZXhhbXBsZSwgcmVzcG9uZGVudHMgYXJlIGFza2VkIGFib3V0IHRoZWlyIGRpZXQgYW5kIHdlZWtseSBwaHlzaWNhbCBhY3Rpdml0eSwgdGhlaXIgSElWL0FJRFMgc3RhdHVzLCBwb3NzaWJsZSB0b2JhY2NvIHVzZSwgYW5kIGV2ZW4gdGhlaXIgbGV2ZWwgb2YgaGVhbHRoIGNhcmUgY292ZXJhZ2UuIFRoZSBCUkZTUyBXZWIgc2l0ZSAoaHR0cDovL3d3dy5jZGMuZ292L2JyZnNzKSBjb250YWlucyBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoZSBzdXJ2ZXksIGluY2x1ZGluZyB0aGUgcmVzZWFyY2ggcXVlc3Rpb25zIHRoYXQgbW90aXZhdGUgdGhlIHN0dWR5IGFuZCBtYW55IGludGVyZXN0aW5nIHJlc3VsdHMgZGVyaXZlZCBmcm9tIHRoZSBkYXRhLldlIHdpbGwgZm9jdXMgb24gYSByYW5kb20gc2FtcGxlIG9mIDIwLDAwMCBwZW9wbGUgZnJvbSB0aGUgQlJGU1Mgc3VydmV5IGNvbmR1Y3RlZCBpbiAyMDAwLiBXaGlsZSB0aGVyZSBhcmUgb3ZlciAyMDAgdmFyaWFibGVzIGluIHRoaXMgZGF0YSBzZXQsIHdlIHdpbGwgd29yayB3aXRoIGEgc21hbGwgc3Vic2V0Lg0KYGBge3J9DQpzb3VyY2UoImh0dHA6Ly93d3cub3BlbmludHJvLm9yZy9zdGF0L2RhdGEvY2RjLlIiKQ0KYGBgDQoNCmBgYHtyfQ0KbmFtZXMoY2RjKQ0KYGBgDQpUaGlzIHJldHVybnMgdGhlIG5hbWVzIGdlbmhsdGgsIGV4ZXJhbnksIGhsdGhwbGFuLCBzbW9rZTEwMCwgaGVpZ2h0LCB3ZWlnaHQsIHd0ZGVzaXJlLCBhZ2UsIGFuZCBnZW5kZXIuIEVhY2ggb25lIG9mIHRoZXNlIHZhcmlhYmxlcyBjb3JyZXNwb25kcyB0byBhIHF1ZXN0aW9uIHRoYXQgd2FzIGFza2VkIGluIHRoZSBzdXJ2ZXkuIEZvciBleGFtcGxlLCBmb3IgZ2VuaGx0aCwgcmVzcG9uZGVudHMgd2VyZSBhc2tlZCB0byBldmFsdWF0ZSB0aGVpciBnZW5lcmFsIGhlYWx0aCwgcmVzcG9uZGluZyBlaXRoZXIgZXhjZWxsZW50LCB2ZXJ5IGdvb2QsIGdvb2QsIGZhaXIgb3IgcG9vci4gVGhlIGV4ZXJhbnkgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlc3BvbmRlbnQgZXhlcmNpc2VkIGluIHRoZSBwYXN0IG1vbnRoICgxKSBvciBkaWQgbm90ICgwKS4gTGlrZXdpc2UsIGhsdGhwbGFuIGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25kZW50IGhhZCBzb21lIGZvcm0gb2YgaGVhbHRoIGNvdmVyYWdlICgxKSBvciBkaWQgbm90ICgwKS4gVGhlIHNtb2tlMTAwIHZhcmlhYmxlIGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25kZW50IGhhZCBzbW9rZWQgYXQgbGVhc3QgMTAwIGNpZ2FyZXR0ZXMgaW4gaGVyIGxpZmV0aW1lLiBUaGUgb3RoZXIgdmFyaWFibGVzIHJlY29yZCB0aGUgcmVzcG9uZGVudOKAmXMgaGVpZ2h0IGluIGluY2hlcywgd2VpZ2h0IGluIHBvdW5kcyBhcyB3ZWxsIGFzIHRoZWlyIGRlc2lyZWQgd2VpZ2h0LCB3dGRlc2lyZSwgYWdlIGluIHllYXJzLCBhbmQgZ2VuZGVyLg0KDQojIyMjIEV4ZXJjaXNlIDENCkhvdyBtYW55IGNhc2VzIGFyZSB0aGVyZSBpbiB0aGlzIGRhdGEgc2V0PyAqKjIwMDAwKiogSG93IG1hbnkgdmFyaWFibGVzPyAqKjkqKiBGb3IgZWFjaCB2YXJpYWJsZSwgIGlkZW50aWZ5IGl0cyBkYXRhIHR5cGUgKGUuZy4gY2F0ZWdvcmljYWwsIGRpc2NyZXRlKS4NCioqQ2F0ZWdvcmljYWw6IGdlbmhsdGgsIGV4ZXJhbnksIGhsdGhwbGFuLCBzbW9rZTEwMCoqDQoNCioqUXVhbnRpdGF0aXZlOiBoZWlnaHQgKGluKSwgd2VpZ2h0IChsYnMpLCB3dGRlc2lyZSAobGJzKSwgYWdlICh5cnMpKioNCg0KIyMgU3VtbWFyaWVzIGFuZCBUYWJsZXMNCmBgYHtyfQ0Kc3VtbWFyeShjZGMkd2VpZ2h0KQ0KYGBgDQoNCmBgYHtyfQ0KbWVhbihjZGMkd2VpZ2h0KQ0KdmFyKGNkYyR3ZWlnaHQpDQptZWRpYW4oY2RjJHdlaWdodCkNCmBgYA0KDQpgYGB7cn0NCnRhYmxlKGNkYyRzbW9rZTEwMCkNCmBgYA0KYGBge3J9DQp0YWJsZShjZGMkc21va2UxMDApLzIwMDAwDQpgYGANCioqQW5hbHlzaXMqKiBXaGF0IEkgc2VlIGZyb20gdGhlIG91dHB1dCBpcyB0aGF0IHdlaWdodCBtaWdodCBiZSBza2V3ZWQgcmlnaHQgc2xpZ2h0bHkgYmVjYXVzZSB0aGUgbWVhbiBpcyBoaWdoZXIgdGhhbiB0aGUgbWVkaWFuLg0KDQpUaGUgZmlyc3QgdGFibGUgc2hvd3MgdGhlIGNvdW50cyBvZiBub24tc21va2VycyAoMCkgYW5kIHNtb2tlcnMgKDEpLiBUaGlzIHNhbWUgaW5mb3JtYXRpb24gaXMgbW9yZSB1c2VmdWwgYXMgYSByZWxhdGl2ZSBmcmVxdWVuY3kgdGFibGUgaW4gd2hpY2ggNTIuOCUgb2Ygc2FtcGxlIHdlcmUgbm9uLXNtb2tlcnMgYW5kIDQ3LjIlIG9mIHNhbXBsZSB3ZXJlIHNtb2tlcnMuDQoNCiMjIyMgRXhlcmNpc2UgMg0KQ3JlYXRlIGEgbnVtZXJpY2FsIHN1bW1hcnkgZm9yIGhlaWdodCBhbmQgYWdlLCBhbmQgY29tcHV0ZSB0aGUgaW50ZXJxdWFydGlsZSByYW5nZSBmb3IgZWFjaC4NCg0KYGBge3J9DQpzdW1tYXJ5KGNkYyRoZWlnaHQpDQpgYGANCg0KYGBge3J9DQpzdW1tYXJ5KGNkYyR3ZWlnaHQpDQpgYGANCklRUiBmb3IgaGVpZ2h0OiA3MCAtIDY0ID0gNiBpbmNoZXMuIElRUiBmb3IgYWdlIDU3IC0gMzEgPSAyNiB5ZWFycw0KDQpDb21wdXRlIHRoZSByZWxhdGl2ZSBmcmVxdWVuY3kgZGlzdHJpYnV0aW9uIGZvciBnZW5kZXIgYW5kIGV4ZXJhbnkuDQpgYGB7cn0NCnRhYmxlKGNkYyRnZW5kZXIpLzIwMDAwDQpgYGANCmBgYHtyfQ0KdGFibGUoY2RjJGV4ZXJhbnkpLzIwMDAwDQpgYGANCmBgYHtyfQ0KdGFibGUoY2RjJGdlbmhsdGgpDQpgYGANCkhvdyBtYW55IG1hbGVzIGFyZSBpbiB0aGUgc2FtcGxlPyAqKjQ3LjglIG9mIHRoZSBzYW1wbGUgd2FzIG1hbGUqKiANCg0KV2hhdCBwcm9wb3J0aW9uIG9mIHRoZSBzYW1wbGUgcmVwb3J0cyBiZWluZyBpbiBleGNlbGxlbnQgaGVhbHRoPyAqKndoaWxlIDc0LjYlIG9mIHRoZSBzYW1wbGUgcmVwb3J0IHRoYXQgdGhleSBleGVyY2lzZSwgb25seSAyMy4yJSBvZiB0aGUgc2FtcGxlIHJlcG9ydHMgYmVpbmcgaW4gZXhjZWxsZW50IGhlYWx0aC4qKg0KDQojIyMjIEV4ZXJjaXNlIDMNCldoYXQgZG9lcyB0aGUgbW9zYWljIHBsb3QgcmV2ZWFsIGFib3V0IHNtb2tpbmcgaGFiaXRzIGFuZCBnZW5kZXI/DQpgYGB7cn0NCm1vc2FpY3Bsb3QodGFibGUoY2RjJGdlbmRlciwgY2RjJHNtb2tlMTAwKSwgbWFpbiA9ICJBc3NvY2lhdGlvbiBiZXR3ZWVuIEdlbmRlciBhbmQgU21va2luZyBIYWJpdHMiKQ0KYGBgDQoNCioqQW5hbHlzaXM6KiogU21va2luZyBoYWJpdHMgYW5kIGdlbmRlciBzZWVtIHRvIGJlIGFzc29jaWF0ZWQgYXMgZmVtYWxlcyBhcmUgbGVzcyBsaWtlbHkgdG8gcmVwb3J0IGJlaW5nIHNtb2tlcnMgdGhhbiBtYWxlcy4NCg0KIyMjIyBFeGVyY2lzZSA0DQpDcmVhdGUgYSBuZXcgb2JqZWN0IGNhbGxlZCB1bmRlcjIzIGFuZCBzbW9rZSB0aGF0IGNvbnRhaW5zIGFsbCBvYnNlcnZhdGlvbnMgb2YgcmVzcG9uZGVudHMgdW5kZXIgdGhlIGFnZSBvZiAyMyB0aGF0IGhhdmUgc21va2VkIDEwMCBjaWdhcmV0dGVzIGluIHRoZWlyIGxpZmV0aW1lLiBXcml0ZSB0aGUgY29tbWFuZCB5b3UgdXNlZCB0byBjcmVhdGUgdGhlIG5ldyBvYmplY3QgYXMgdGhlIGFuc3dlciB0byB0aGlzIGV4ZXJjaXNlLg0KYGBge3J9DQphX2FuZF91bmRlcjIzIDwtIHN1YnNldChjZGMsIGNkYyRzbW9rZTEwMCA9PSAiMSIgJiBjZGMkYWdlIDwgMjMpDQpgYGANCioqNjIwIHN1YmplY3RzIGFyZSB1bmRlciAyMyBhbmQgaGF2ZSBzbW9rZWQgMTAwIGNpZ2dhcmV0dGVzIGluIHRoZWlyIGxpZmV0aW1lKioNCg0KIyMjIFF1YW50aXRhdGl2ZSBEYXRhDQojIyMjIEV4ZXJjaXNlIDUNCldoYXQgZG9lcyB0aGlzIGJveCBwbG90IHNob3c/IFBpY2sgYW5vdGhlciBjYXRlZ29yaWNhbCB2YXJpYWJsZSBmcm9tIHRoZSBkYXRhIHNldCBhbmQgc2VlIGhvdyBpdCByZWxhdGVzIHRvIEJNSS4gTGlzdCB0aGUgdmFyaWFibGUgeW91IGNob3NlLCB3aHkgeW91IG1pZ2h0IHRoaW5rIGl0IHdvdWxkIGhhdmUgYSByZWxhdGlvbnNoaXAgdG8gQk1JLCBhbmQgaW5kaWNhdGUgd2hhdCB0aGUgZmlndXJlIHNlZW1zIHRvIHN1Z2dlc3QuDQpgYGB7cn0NCmJveHBsb3QoYm1pIH4gY2RjJGdlbmhsdGgsIGhvcml6b250YWwgPSBUUlVFKQ0KYGBgDQoqKkFuYWx5c2lzKiogQXMgZ2VuZXJhbCBoZWFsdGggZ29lcyBkb3duIGZyb20gZXhjZWxsZW50IHRvIHBvb3IsIHRoZSBhdmVyYWdlIEJNSSBpbmNyZWFzZXMgYW5kIGJlY29tZXMgbW9yZSB2YXJpYWJsZS4gQWxsIGRpc3RyaWJ1dGlvbnMgYXJlIHNrZXdlZCBoaWdoIHdpdGggbWFueSBoaWdoIG91dGxpZXJzLg0KDQpgYGB7cn0NCmJveHBsb3QoYm1pIH4gY2RjJGdlbmRlciwgaG9yaXpvbnRhbCA9IFRSVUUpDQpgYGANCg0KKipBbmFseXNpcyoqIEl0IHN1cHJpc2VzIG1lIHRvIHNlZSB0aGF0IHRoZSBhdmVyYWdlIEJNSSBmb3IgZmVtYWxlcyBpbiB0aGUgc3R1ZHkgaXMgbG93ZXIgdGhhbiB0aGF0IG9mIHRoZSBtYWxlcy4gQm90aCBkaXN0cmlidXRpb25zIGFyZSBza2V3ZWQgaGlnaCB3aXRoIG1hbnkgb3V0bGllcnMsIGNvbnNpZGVyaW5nIHRoYXQgdGhlIElRUiBmb3IgZmVtYWxlcyB0ZW5kcyB0byBiZSBhYm91dCA3ICg1MCUgb2Ygd29tZW4gaGF2ZSBhIEJNSSBtZWFzdXJlIHBmIGJldHdlZW4gMjIgYW5kIDI4KSwgd2hpbGUgdGhlIG1hbGVzIG1pZGRsZSA1MCUgaXMgaW4gYSByYW5nZSBvZiBhYm91dCA1IGZyb20gYSBCTUkgbWVhc3VyZSBvZiBhYm91dCAyNCBhbmQgMjkuDQoNCiMjIyBPbiBZb3VyIE93bg0KICAxLk1ha2UgYSBzY2F0dGVycGxvdCBvZiB3ZWlnaHQgdmVyc3VzIGRlc2lyZWQgd2VpZ2h0LiBEZXNjcmliZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIHZhcmlhYmxlcy4NCmBgYHtyfQ0KcGxvdChjZGMkd3RkZXNpcmUgfiBjZGMkd2VpZ2h0LCBtYWluID0gIldlaWdodCBWcyBEZXNpcmVkIFdlaWdodCIsIHhsYWIgPSAid2VpZ2h0IChsYnMpIiwgeWxhYiA9ICJEZXNpcmVkIFdlaWdodCAobGJzKSIsIHhsaW0gPSBjKDc1LDUwMCksIHlsaW0gPSBjKDc1LDcwMCkpDQpgYGANCg0KKipBbmFseXNpcyoqIFRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgcGVyc29uJ3Mgd2VpZ2h0IGFuZCBkZXNpcmVkIHdlaWdodCByZXZlYWxzIHRoYXQgYXQgdGhlIHdlaWdodHMgYmV0d2VlbiAxMDAgYW5kIDIwMCwgdGhlIHdlaWdodCBhbmQgZGVzaXJlZCB3ZWlnaHQgYXJlIHJlbGF0aXZlbHkgY2xvc2UgdG8gZWFjaCBvdGhlci4gSG93ZXZlciwgYXQgdGhlIGhpZ2hlciB3ZWlnaHRzIGJldHdlZW4gMjAwIGFuZCAzMDAgcG91bmRzLCB0aGUgZGVzaXJlZCB3ZWlnaHQgdGVuZHMgdG8gYmUgbG93ZXIgdGhhbiB0aGUgYWN0dWFsIHdlaWdodC4NCg0KICAyLkxldOKAmXMgY29uc2lkZXIgYSBuZXcgdmFyaWFibGU6IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZGVzaXJlZCB3ZWlnaHQgKHd0ZGVzaXJlKSBhbmQgY3VycmVudCB3ZWlnaHQgKHdlaWdodCkuIENyZWF0ZSB0aGlzIG5ldyB2YXJpYWJsZSBieSBzdWJ0cmFjdGluZyB0aGUgdHdvIGNvbHVtbnMgaW4gdGhlIGRhdGEgZnJhbWUgYW5kIGFzc2lnbmluZyB0aGVtIHRvIGEgbmV3IG9iamVjdCBjYWxsZWQgd2RpZmYuDQogIA0KYGBge3J9DQp3dGRpZmYgPC0gKGNkYyR3dGRlc2lyZSAtIGNkYyR3ZWlnaHQpDQpgYGANCg0KICAzLkFuYWx5emU6IFdoYXQgdHlwZSBvZiBkYXRhIGlzIHdkaWZmPyAqKlF1YW50aXRhdGl2ZSBEYXRhKiogSWYgYW4gb2JzZXJ2YXRpb24gd2RpZmYgaXMgMCwgd2hhdCBkb2VzIHRoaXMgbWVhbiBhYm91dCB0aGUgcGVyc29u4oCZcyB3ZWlnaHQgYW5kIGRlc2lyZWQgd2VpZ2h0PyoqSWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIHBlcnNvbiB3ZWlnaHMgd2hhdCB0aGV5IGRlc2lyZSoqIFdoYXQgaWYgd2RpZmYgaXMgcG9zaXRpdmUgb3IgbmVnYXRpdmU/KipJZiB0aGUgdmFsdWUgaXMgcG9zaXRpdmUgdGhlbiB0aGUgcGVyc29uIHdhbnRzIHRvIGdhaW4gd2VpZ2h0LiBJZiBuZWdhdGl2ZSwgdGhlIHBlcnNvbiB3YW50cyB0byBsb3NlIHdlaWdodC4qKg0KDQogIDQuTWFrZSBhIGhpc3RvZ3JhbSBvZiAgd2RpZmYgRGVzY3JpYmUgdGhlIGRpc3RyaWJ1dGlvbiBvZiB3ZGlmZiBpbiB0ZXJtcyBvZiBpdHMgY2VudGVyLCBzaGFwZSwgYW5kIHNwcmVhZCwgaW5jbHVkaW5nIGFueSBwbG90cyB5b3UgdXNlLiBXaGF0IGRvZXMgdGhpcyB0ZWxsIHVzIGFib3V0IGhvdyBwZW9wbGUgZmVlbCBhYm91dCB0aGVpciBjdXJyZW50IHdlaWdodD8NCmBgYHtyfQ0KaGlzdCh3dGRpZmYsIG1haW4gPSAiV2VpZ2h0IERpZmZlcmVuY2UiLCB4bGFiID0gInd0ZGVzaXJlIC0gd2VpZ2h0IikNCmBgYA0KKipBbmFseXNpcyoqIFRoZSBkaXN0cmlidXRpb24gb2Ygd2VpZ2h0IGRpZmZlcmVuY2Ugc2hvd3MgdGhhdCBhbG1vc3QgYWxsIG9mIHRoZSBzdWJqZWN0cyBoYXZlIGEgbmVnYXRpdmUgdmFsdWUgZm9yIHRoZSB3ZWlnaHQgZGlmZmVyZW5jZSB2YXJpYWJsZSwgbWVhbmluZyB0aGF0IHRoZXkgZGVzaXJlIHRvIGxvc2Ugd2VpZ2h0Lg0KDQogIDUuU3Vic2V0ICB3ZGlmZiAgIGludG8gbWFsZSBhbmQgZmVtYWxlIGdyb3Vwcy4gVXNpbmcgbnVtZXJpY2FsIHN1bW1hcmllcyBhbmQgYSBzaWRlLWJ5LXNpZGUgYm94IHBsb3QsIGRldGVybWluZSBpZiBtZW4gdGVuZCB0byB2aWV3IHRoZWlyIHdlaWdodCBkaWZmZXJlbnRseSB0aGFuIHdvbWVuLiBFWFBMQUlODQpgYGB7cn0NCmJveHBsb3Qod3RkaWZmIH4gY2RjJGdlbmRlciwgeGxhYiA9ICJXZWlnaHQgRGlmZmVyZW5jZSIsIHlsYWIgPSAiR2VuZGVyIiwgIGhvcml6b250YWwgPSBUUlVFKQ0KYGBgDQoqKkFuYWx5c2lzKiogSXQgbG9va3MgYXMgaWYgMjUlIG9mIGJvdGggZ3JvdXBzIGFyZSBvayB3aXRoIHRoZWlyIHdlaWdodCBvciB3b3VsZCBsaWtlIHRvIGV2ZW4gZ2FpbiB3ZWlnaHQuIFRoZSAyIG91dGxpZXJzIGZvciB0aGUgbWVuIGFyZSBxdWVzdGlvbmFibGUuIElzIGl0IHRydWUgdGhhdCB0d28gbWVuIHN1cnZleWVkIHdvdWxkIGxpa2UgdG8gZ2FpbiAzMDAgYW5kIG92ZXIgNDAwIHBvdW5kcz8gSW4gZ2VuZXJhbCwgNzUlIG9mIG1lbiBhbmQgd29tZW4gd291bGQgbGlrZSB0byBsb3NlIHdlaWdodC4gV29tZW4gdGVuZCB0byB3YW50IHRvIGxvc2UgbW9yZSB3ZWlnaHQgdGhhbiBtZW4uIEknbSBzdXByaXNlZCB3ZSBkb24ndCBzZWUgbW9yZSBvZiBhIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZ2VuZGVycy4NCg==