Does gender have an effect on wanting to pursue higher education? What contributes to Brazilian students’ indication of wanting to pursue higher education?

library(readr)
hw3alt <- read_csv("/Users/sophia.halkitis/Desktop/R/Datasets/kagglemath.csv", col_names = TRUE)
Parsed with column specification:
cols(
  .default = col_character(),
  age = col_integer(),
  Medu = col_integer(),
  Fedu = col_integer(),
  traveltime = col_integer(),
  studytime = col_integer(),
  failures = col_integer(),
  famrel = col_integer(),
  freetime = col_integer(),
  goout = col_integer(),
  Dalc = col_integer(),
  Walc = col_integer(),
  health = col_integer(),
  absences = col_integer(),
  G1 = col_integer(),
  G2 = col_integer(),
  G3 = col_integer()
)
See spec(...) for full column specifications.
head(hw3alt)
library(dplyr)
library(pander)
library(visreg)

Creating a subset of the data and recoding into binaries

highered <- subset(hw3alt, select = c(sex, Medu, Fedu, studytime, age, activities, higher))
head(highered)
highered$higher[highered$higher=="yes"] <- "1"
highered$higher[highered$higher=="no"] <- "0"
highered$higher <- as.integer(highered$higher)
head(highered)

Simple regression model between sex and student’s indication of wanting to pursue higher education

highered1 <- glm(higher ~ sex, family = "binomial", data = highered)
summary(highered1)

Call:
glm(formula = higher ~ sex, family = "binomial", data = highered)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.8111   0.1971   0.1971   0.4229   0.4229  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   3.9318     0.5048   7.788 6.79e-15 ***
sexM         -1.5628     0.5685  -2.749  0.00598 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 158.3  on 394  degrees of freedom
Residual deviance: 148.8  on 393  degrees of freedom
AIC: 152.8

Number of Fisher Scoring iterations: 6
coef(highered1)
(Intercept)        sexM 
   3.931826   -1.562751 
exp(-1.562751)
[1] 0.2095588
#exp of the log odds ratio (in coef) gives me the odds of pursuing higher education for males 

Creating a new variable for parental education

highered <- mutate(highered, 
                   Pedu = ifelse(Medu == 4, "1",
                           ifelse(Fedu == 4, "1", "0")))
#creates a variable that gives the value 1 if mother or father are college educated, 0 if neither are.                                 
head(highered)

Regression model with multiple IVs (sex, age, parental education, and time spent studying)

highered2 <- glm(higher ~ sex + age + Pedu + studytime, family = "binomial", data = highered)
summary(highered2)

Call:
glm(formula = higher ~ sex + age + Pedu + studytime, family = "binomial", 
    data = highered)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-2.95220   0.07616   0.16056   0.29203   1.54148  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)  11.1606     3.4208   3.263  0.00110 **
sexM         -0.9694     0.6384  -1.519  0.12887   
age          -0.5759     0.1923  -2.995  0.00274 **
Pedu1         2.2898     1.0465   2.188  0.02866 * 
studytime     1.0785     0.4565   2.363  0.01814 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 158.30  on 394  degrees of freedom
Residual deviance: 115.91  on 390  degrees of freedom
AIC: 125.91

Number of Fisher Scoring iterations: 8

Interactive regression model with multiple IVs (sex AND age, parental education, and time spent studying)

highered3 <- glm(higher ~ sex*age + studytime + Pedu, family = "binomial", data = highered)
summary(highered3)

Call:
glm(formula = higher ~ sex * age + studytime + Pedu, family = "binomial", 
    data = highered)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-2.85141   0.03434   0.10004   0.30782   1.28931  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)  34.7428    13.3356   2.605  0.00918 **
sexM        -28.1122    13.9097  -2.021  0.04327 * 
age          -1.9142     0.7336  -2.609  0.00907 **
studytime     1.3284     0.5078   2.616  0.00890 **
Pedu1         2.3505     1.0501   2.238  0.02520 * 
sexM:age      1.5228     0.7610   2.001  0.04539 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 158.30  on 394  degrees of freedom
Residual deviance: 110.13  on 389  degrees of freedom
AIC: 122.13

Number of Fisher Scoring iterations: 8

Likelihood ratio test to compare model fit and obtaining AIC and BIC

library(texreg)
screenreg(list(highered1, highered2, highered3))

================================================
                Model 1     Model 2    Model 3  
------------------------------------------------
(Intercept)       3.93 ***   11.16 **   34.74 **
                 (0.50)      (3.42)    (13.34)  
sexM             -1.56 **    -0.97     -28.11 * 
                 (0.57)      (0.64)    (13.91)  
age                          -0.58 **   -1.91 **
                             (0.19)     (0.73)  
Pedu1                         2.29 *     2.35 * 
                             (1.05)     (1.05)  
studytime                     1.08 *     1.33 **
                             (0.46)     (0.51)  
sexM:age                                 1.52 * 
                                        (0.76)  
------------------------------------------------
AIC             152.80      125.91     122.13   
BIC             160.75      145.80     146.00   
Log Likelihood  -74.40      -57.95     -55.06   
Deviance        148.80      115.91     110.13   
Num. obs.       395         395        395      
================================================
*** p < 0.001, ** p < 0.01, * p < 0.05
anova(highered1, highered2, highered3, test = "Chisq")
Analysis of Deviance Table

Model 1: higher ~ sex
Model 2: higher ~ sex + age + Pedu + studytime
Model 3: higher ~ sex * age + studytime + Pedu
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       393     148.79                          
2       390     115.91  3   32.889 3.399e-07 ***
3       389     110.13  1    5.779   0.01622 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
lmtest::lrtest(highered1, highered2, highered3)
Likelihood ratio test

Model 1: higher ~ sex
Model 2: higher ~ sex + age + Pedu + studytime
Model 3: higher ~ sex * age + studytime + Pedu
  #Df  LogLik Df   Chisq Pr(>Chisq)    
1   2 -74.398                          
2   5 -57.953  3 32.8889  3.399e-07 ***
3   6 -55.064  1  5.7793    0.01622 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Both the ANOVA and lmtest indicate that model two is the best fit

AIC and BIC alone

AIC(highered1, highered2, highered3)
BIC(highered1, highered2, highered3)

With the AIC and BIC, lower values indicate better fit. Keeping this in mind, the AIC best fit model is the third model, but is the second model in the BIC.



Visuals of model 2 – Looking at willingness to pursue higher education as a function of sex, age, and parental education

Willingness to pursue higher education by sex

visreg(highered2, "sex", scale = "response")

Females are more likely than males to want to pursue higher education.


Willingness to pursue higher education by sex and age

visreg(highered2, "sex", by = "age", scale = "response")

Willingness to pursue higher education decreases as age increases. The effect is stronger for males than for females.


Willingness to pursue higher education by sex and parental education

visreg(highered2, "sex", by = "Pedu", scale = "response")

Students who had a college educated parent were more likely to want to pursue higher education than those who did not have a college educated parent.


Summary of methods and results

In the present assignment we were asked to find a dataset and run several logistic regressions and to determine which model was the best fit. I decided on a dataset from Kaggle that surveyed students from two schools in Brazil on their alcohol consumption and average grades. Although I did not use either of these variables throughout the course of my analysis, there were several other variables of interest in the dataset, so I decided to focus on how certain factors (age, sex, parental education, and study time) contribute to a student’s intention to pursue higher education.

First, I created a subset of the data to only include the variables that I was interested in. Then I recoded the yes/no variable that asked students if they wanted to pursue higher education or not into a binary integer to use as a dependent variable. A simple regression between sex and intention to pursue higher education indicated that males were significantly less likely than females to want to pursue higher education. Upon determing the log odds ratio and then the odds of this value, we find that this disparity is not very large, with men being only .21 times less likely to want to pursue higher education than the female counterparts.

Then, I determined other variables that I think may contribute to this relationship and decided that age, parental education, and time spent studying would probably have an effect on intention to pursue higher education. I created a variable that conslidated mother and father’s education, such that if at least one of the student’s parents was college educated they were given the value “1”, and if neither were college educated, the value “0”. This made it easier to view the effect of higher parental education in my next regression with four IVs.

The results from the second regression tell us that age, parental education, and time spent studying are all significant contributors to a student’s indication of their willingness to pursue higher education. It is also worth mentioning that once these other variables are taken into account, the effect of gender alone becomes insignificant, indicating that these other variables play a larger role than gender does. Age was a significant contributor, such that as one gets older, they become less likely to want to pursue higher education. Both parental education and study time were facilitators to wanting to pursue higher education, where having a college educated parent made students more likely to want to pursue higher education themselves, which was the strongest indicator tested. Additionally, the more time spent studying also increased the likelihood of students to want higher education.

For my third regression, I ran the same four independent variables, but included an interaction term between age and sex. These findings rendered the differential effect that aging has on willingness to pursue higher education for males and females. As females get older they become less likely to want to get higher education and as males get older they become more likely to want to pursue higher education. Parental education, however, remains the strongest facilitator to student’s indication of wanting to pursue higher education.

After I ran all three regressions, I conducted a likelihood ratio test to determine which model was the best fit. I ran this test using both the anova and lmtest command, and they gave me the same results: that the second model (highered2) was the best model as it had the most significance. However, model three had the lowest deviance.

Lastly, I created three plots using the visreg package to visualize the data that I just interepreted. The first plot confirms the initial finding, that females are more likely than males to want to pursue higher education. The second plot exemplifies the relationship between age and gender, such that willingness to pursue higher education decreases as age increases. This plot also shows that this finding is more pronounced for males than for females. The last plot shows the relationship between parental education and gender, where students who had a college educated parent were more likely to want to pursue higher education themselves than their counterparts whose parents did not have college education.

LS0tCnRpdGxlOiAiR2VuZGVyIGFuZCBIaWdoZXIgRWR1Y2F0aW9uIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCiMjX0RvZXMgZ2VuZGVyIGhhdmUgYW4gZWZmZWN0IG9uIHdhbnRpbmcgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24/IFdoYXQgY29udHJpYnV0ZXMgdG8gQnJhemlsaWFuIHN0dWRlbnRzJyBpbmRpY2F0aW9uIG9mIHdhbnRpbmcgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24/XwpgYGB7cn0KbGlicmFyeShyZWFkcikKaHczYWx0IDwtIHJlYWRfY3N2KCIvVXNlcnMvc29waGlhLmhhbGtpdGlzL0Rlc2t0b3AvUi9EYXRhc2V0cy9rYWdnbGVtYXRoLmNzdiIsIGNvbF9uYW1lcyA9IFRSVUUpCmhlYWQoaHczYWx0KQoKbGlicmFyeShkcGx5cikKbGlicmFyeShwYW5kZXIpCmxpYnJhcnkodmlzcmVnKQpgYGAKKioqKioqCgoKIyMjQ3JlYXRpbmcgYSBzdWJzZXQgb2YgdGhlIGRhdGEgYW5kIHJlY29kaW5nIGludG8gYmluYXJpZXMKYGBge3J9CmhpZ2hlcmVkIDwtIHN1YnNldChodzNhbHQsIHNlbGVjdCA9IGMoc2V4LCBNZWR1LCBGZWR1LCBzdHVkeXRpbWUsIGFnZSwgYWN0aXZpdGllcywgaGlnaGVyKSkKaGVhZChoaWdoZXJlZCkKCmhpZ2hlcmVkJGhpZ2hlcltoaWdoZXJlZCRoaWdoZXI9PSJ5ZXMiXSA8LSAiMSIKaGlnaGVyZWQkaGlnaGVyW2hpZ2hlcmVkJGhpZ2hlcj09Im5vIl0gPC0gIjAiCmhpZ2hlcmVkJGhpZ2hlciA8LSBhcy5pbnRlZ2VyKGhpZ2hlcmVkJGhpZ2hlcikKaGVhZChoaWdoZXJlZCkKYGBgCgoqKioqKioKCgojIyNTaW1wbGUgcmVncmVzc2lvbiBtb2RlbCBiZXR3ZWVuIHNleCBhbmQgc3R1ZGVudCdzIGluZGljYXRpb24gb2Ygd2FudGluZyB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbgpgYGB7cn0KaGlnaGVyZWQxIDwtIGdsbShoaWdoZXIgfiBzZXgsIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBoaWdoZXJlZCkKc3VtbWFyeShoaWdoZXJlZDEpCmNvZWYoaGlnaGVyZWQxKQojZXhwIG9mIHRoZSBsb2cgb2RkcyByYXRpbyAoaW4gY29lZikgZ2l2ZXMgbWUgdGhlIG9kZHMgb2YgcHVyc3VpbmcgaGlnaGVyIGVkdWNhdGlvbiBmb3IgbWFsZXMgCmV4cCgtMS41NjI3NTEpCmBgYAoKKioqKioqCgoKIyMjQ3JlYXRpbmcgYSBuZXcgdmFyaWFibGUgZm9yIHBhcmVudGFsIGVkdWNhdGlvbgpgYGB7cn0KaGlnaGVyZWQgPC0gbXV0YXRlKGhpZ2hlcmVkLCAKICAgICAgICAgICAgICAgICAgIFBlZHUgPSBpZmVsc2UoTWVkdSA9PSA0LCAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShGZWR1ID09IDQsICIxIiwgIjAiKSkpCiNjcmVhdGVzIGEgdmFyaWFibGUgdGhhdCBnaXZlcyB0aGUgdmFsdWUgMSBpZiBtb3RoZXIgb3IgZmF0aGVyIGFyZSBjb2xsZWdlIGVkdWNhdGVkLCAwIGlmIG5laXRoZXIgYXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApoZWFkKGhpZ2hlcmVkKQpgYGAKCgoKIyMjUmVncmVzc2lvbiBtb2RlbCB3aXRoIG11bHRpcGxlIElWcyAoc2V4LCBhZ2UsIHBhcmVudGFsIGVkdWNhdGlvbiwgYW5kIHRpbWUgc3BlbnQgc3R1ZHlpbmcpCmBgYHtyfQpoaWdoZXJlZDIgPC0gZ2xtKGhpZ2hlciB+IHNleCArIGFnZSArIFBlZHUgKyBzdHVkeXRpbWUsIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBoaWdoZXJlZCkKc3VtbWFyeShoaWdoZXJlZDIpCmBgYAoKKioqKioqCgoKIyMjSW50ZXJhY3RpdmUgcmVncmVzc2lvbiBtb2RlbCB3aXRoIG11bHRpcGxlIElWcyAoc2V4IEFORCBhZ2UsIHBhcmVudGFsIGVkdWNhdGlvbiwgYW5kIHRpbWUgc3BlbnQgc3R1ZHlpbmcpCmBgYHtyfQpoaWdoZXJlZDMgPC0gZ2xtKGhpZ2hlciB+IHNleCphZ2UgKyBzdHVkeXRpbWUgKyBQZWR1LCBmYW1pbHkgPSAiYmlub21pYWwiLCBkYXRhID0gaGlnaGVyZWQpCnN1bW1hcnkoaGlnaGVyZWQzKQpgYGAKCioqKioqKgoKCiMjI0xpa2VsaWhvb2QgcmF0aW8gdGVzdCB0byBjb21wYXJlIG1vZGVsIGZpdCBhbmQgb2J0YWluaW5nIEFJQyBhbmQgQklDCmBgYHtyfQpsaWJyYXJ5KHRleHJlZykKc2NyZWVucmVnKGxpc3QoaGlnaGVyZWQxLCBoaWdoZXJlZDIsIGhpZ2hlcmVkMykpCgphbm92YShoaWdoZXJlZDEsIGhpZ2hlcmVkMiwgaGlnaGVyZWQzLCB0ZXN0ID0gIkNoaXNxIikKbG10ZXN0OjpscnRlc3QoaGlnaGVyZWQxLCBoaWdoZXJlZDIsIGhpZ2hlcmVkMykKYGBgCl9Cb3RoIHRoZSBBTk9WQSBhbmQgbG10ZXN0IGluZGljYXRlIHRoYXQgbW9kZWwgdHdvIGlzIHRoZSBiZXN0IGZpdF8KCiMjI0FJQyBhbmQgQklDIGFsb25lCmBgYHtyfQpBSUMoaGlnaGVyZWQxLCBoaWdoZXJlZDIsIGhpZ2hlcmVkMykKQklDKGhpZ2hlcmVkMSwgaGlnaGVyZWQyLCBoaWdoZXJlZDMpCmBgYApXaXRoIHRoZSBBSUMgYW5kIEJJQywgbG93ZXIgdmFsdWVzIGluZGljYXRlIGJldHRlciBmaXQuIEtlZXBpbmcgdGhpcyBpbiBtaW5kLCB0aGUgQUlDIGJlc3QgZml0IG1vZGVsIGlzIHRoZSB0aGlyZCBtb2RlbCwgYnV0IGlzIHRoZSBzZWNvbmQgbW9kZWwgaW4gdGhlIEJJQy4KCioqKioqKgoqKioqKioKCgojIyNfX1Zpc3VhbHMgb2YgbW9kZWwgMiAtLSBMb29raW5nIGF0IHdpbGxpbmduZXNzIHRvIHB1cnN1ZSBoaWdoZXIgZWR1Y2F0aW9uIGFzIGEgZnVuY3Rpb24gb2Ygc2V4LCBhZ2UsIGFuZCBwYXJlbnRhbCBlZHVjYXRpb25fXwojIyNXaWxsaW5nbmVzcyB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbiBieSBzZXgKYGBge3J9CnZpc3JlZyhoaWdoZXJlZDIsICJzZXgiLCBzY2FsZSA9ICJyZXNwb25zZSIpCmBgYApfRmVtYWxlcyBhcmUgbW9yZSBsaWtlbHkgdGhhbiBtYWxlcyB0byB3YW50IHRvIHB1cnN1ZSBoaWdoZXIgZWR1Y2F0aW9uLl8KCioqKioqKgogIAojIyNXaWxsaW5nbmVzcyB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbiBieSBzZXggYW5kIGFnZQpgYGB7cn0KdmlzcmVnKGhpZ2hlcmVkMiwgInNleCIsIGJ5ID0gImFnZSIsIHNjYWxlID0gInJlc3BvbnNlIikKYGBgCl9XaWxsaW5nbmVzcyB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbiBkZWNyZWFzZXMgYXMgYWdlIGluY3JlYXNlcy4gVGhlIGVmZmVjdCBpcyBzdHJvbmdlciBmb3IgbWFsZXMgdGhhbiBmb3IgZmVtYWxlcy5fICAKICAKKioqKioqCgojIyNXaWxsaW5nbmVzcyB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbiBieSBzZXggYW5kIHBhcmVudGFsIGVkdWNhdGlvbgpgYGB7cn0KdmlzcmVnKGhpZ2hlcmVkMiwgInNleCIsIGJ5ID0gIlBlZHUiLCBzY2FsZSA9ICJyZXNwb25zZSIpCmBgYApfU3R1ZGVudHMgd2hvIGhhZCBhIGNvbGxlZ2UgZWR1Y2F0ZWQgcGFyZW50IHdlcmUgbW9yZSBsaWtlbHkgdG8gd2FudCB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbiB0aGFuIHRob3NlIHdobyBkaWQgbm90IGhhdmUgYSBjb2xsZWdlIGVkdWNhdGVkIHBhcmVudC5fCgoqKioqKioKCgojI1N1bW1hcnkgb2YgbWV0aG9kcyBhbmQgcmVzdWx0cyAKSW4gdGhlIHByZXNlbnQgYXNzaWdubWVudCB3ZSB3ZXJlIGFza2VkIHRvIGZpbmQgYSBkYXRhc2V0IGFuZCBydW4gc2V2ZXJhbCBsb2dpc3RpYyByZWdyZXNzaW9ucyBhbmQgdG8gZGV0ZXJtaW5lIHdoaWNoIG1vZGVsIHdhcyB0aGUgYmVzdCBmaXQuIEkgZGVjaWRlZCBvbiBhIGRhdGFzZXQgZnJvbSBLYWdnbGUgdGhhdCBzdXJ2ZXllZCBzdHVkZW50cyBmcm9tIHR3byBzY2hvb2xzIGluIEJyYXppbCBvbiB0aGVpciBhbGNvaG9sIGNvbnN1bXB0aW9uIGFuZCBhdmVyYWdlIGdyYWRlcy4gQWx0aG91Z2ggSSBkaWQgbm90IHVzZSBlaXRoZXIgb2YgdGhlc2UgdmFyaWFibGVzIHRocm91Z2hvdXQgdGhlIGNvdXJzZSBvZiBteSBhbmFseXNpcywgdGhlcmUgd2VyZSBzZXZlcmFsIG90aGVyIHZhcmlhYmxlcyBvZiBpbnRlcmVzdCBpbiB0aGUgZGF0YXNldCwgc28gSSBkZWNpZGVkIHRvIGZvY3VzIG9uIGhvdyBjZXJ0YWluIGZhY3RvcnMgKGFnZSwgc2V4LCBwYXJlbnRhbCBlZHVjYXRpb24sIGFuZCBzdHVkeSB0aW1lKSBjb250cmlidXRlIHRvIGEgc3R1ZGVudCdzIGludGVudGlvbiB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbi4gCgpGaXJzdCwgSSBjcmVhdGVkIGEgc3Vic2V0IG9mIHRoZSBkYXRhIHRvIG9ubHkgaW5jbHVkZSB0aGUgdmFyaWFibGVzIHRoYXQgSSB3YXMgaW50ZXJlc3RlZCBpbi4gVGhlbiBJIHJlY29kZWQgdGhlIHllcy9ubyB2YXJpYWJsZSB0aGF0IGFza2VkIHN0dWRlbnRzIGlmIHRoZXkgd2FudGVkIHRvIHB1cnN1ZSBoaWdoZXIgZWR1Y2F0aW9uIG9yIG5vdCBpbnRvIGEgYmluYXJ5IGludGVnZXIgdG8gdXNlIGFzIGEgZGVwZW5kZW50IHZhcmlhYmxlLiBBIHNpbXBsZSByZWdyZXNzaW9uIGJldHdlZW4gc2V4IGFuZCBpbnRlbnRpb24gdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24gaW5kaWNhdGVkIHRoYXQgbWFsZXMgd2VyZSBzaWduaWZpY2FudGx5IGxlc3MgbGlrZWx5IHRoYW4gZmVtYWxlcyB0byB3YW50IHRvIHB1cnN1ZSBoaWdoZXIgZWR1Y2F0aW9uLiBVcG9uIGRldGVybWluZyB0aGUgbG9nIG9kZHMgcmF0aW8gYW5kIHRoZW4gdGhlIG9kZHMgb2YgdGhpcyB2YWx1ZSwgd2UgZmluZCB0aGF0IHRoaXMgZGlzcGFyaXR5IGlzIG5vdCB2ZXJ5IGxhcmdlLCB3aXRoIG1lbiBiZWluZyBvbmx5IC4yMSB0aW1lcyBsZXNzIGxpa2VseSB0byB3YW50IHRvIHB1cnN1ZSBoaWdoZXIgZWR1Y2F0aW9uIHRoYW4gdGhlIGZlbWFsZSBjb3VudGVycGFydHMuIAoKVGhlbiwgSSBkZXRlcm1pbmVkIG90aGVyIHZhcmlhYmxlcyB0aGF0IEkgdGhpbmsgbWF5IGNvbnRyaWJ1dGUgdG8gdGhpcyByZWxhdGlvbnNoaXAgYW5kIGRlY2lkZWQgdGhhdCBhZ2UsIHBhcmVudGFsIGVkdWNhdGlvbiwgYW5kIHRpbWUgc3BlbnQgc3R1ZHlpbmcgd291bGQgcHJvYmFibHkgaGF2ZSBhbiBlZmZlY3Qgb24gaW50ZW50aW9uIHRvIHB1cnN1ZSBoaWdoZXIgZWR1Y2F0aW9uLiBJIGNyZWF0ZWQgYSB2YXJpYWJsZSB0aGF0IGNvbnNsaWRhdGVkIG1vdGhlciBhbmQgZmF0aGVyJ3MgZWR1Y2F0aW9uLCBzdWNoIHRoYXQgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBzdHVkZW50J3MgcGFyZW50cyB3YXMgY29sbGVnZSBlZHVjYXRlZCB0aGV5IHdlcmUgZ2l2ZW4gdGhlIHZhbHVlICIxIiwgYW5kIGlmIG5laXRoZXIgd2VyZSBjb2xsZWdlIGVkdWNhdGVkLCB0aGUgdmFsdWUgIjAiLiBUaGlzIG1hZGUgaXQgZWFzaWVyIHRvIHZpZXcgdGhlIGVmZmVjdCBvZiBoaWdoZXIgcGFyZW50YWwgZWR1Y2F0aW9uIGluIG15IG5leHQgcmVncmVzc2lvbiB3aXRoIGZvdXIgSVZzLiAgCgpUaGUgcmVzdWx0cyBmcm9tIHRoZSBzZWNvbmQgcmVncmVzc2lvbiB0ZWxsIHVzIHRoYXQgYWdlLCBwYXJlbnRhbCBlZHVjYXRpb24sIGFuZCB0aW1lIHNwZW50IHN0dWR5aW5nIGFyZSBhbGwgc2lnbmlmaWNhbnQgY29udHJpYnV0b3JzIHRvIGEgc3R1ZGVudCdzIGluZGljYXRpb24gb2YgdGhlaXIgd2lsbGluZ25lc3MgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24uIEl0IGlzIGFsc28gd29ydGggbWVudGlvbmluZyB0aGF0IG9uY2UgdGhlc2Ugb3RoZXIgdmFyaWFibGVzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQsIHRoZSBlZmZlY3Qgb2YgZ2VuZGVyIGFsb25lIGJlY29tZXMgaW5zaWduaWZpY2FudCwgaW5kaWNhdGluZyB0aGF0IHRoZXNlIG90aGVyIHZhcmlhYmxlcyBwbGF5IGEgbGFyZ2VyIHJvbGUgdGhhbiBnZW5kZXIgZG9lcy4gQWdlIHdhcyBhIHNpZ25pZmljYW50IGNvbnRyaWJ1dG9yLCBzdWNoIHRoYXQgYXMgb25lIGdldHMgb2xkZXIsIHRoZXkgYmVjb21lIGxlc3MgbGlrZWx5IHRvIHdhbnQgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24uIEJvdGggcGFyZW50YWwgZWR1Y2F0aW9uIGFuZCBzdHVkeSB0aW1lIHdlcmUgZmFjaWxpdGF0b3JzIHRvIHdhbnRpbmcgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24sIHdoZXJlIGhhdmluZyBhIGNvbGxlZ2UgZWR1Y2F0ZWQgcGFyZW50IG1hZGUgc3R1ZGVudHMgbW9yZSBsaWtlbHkgdG8gd2FudCB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbiB0aGVtc2VsdmVzLCB3aGljaCB3YXMgdGhlIHN0cm9uZ2VzdCBpbmRpY2F0b3IgdGVzdGVkLiBBZGRpdGlvbmFsbHksIHRoZSBtb3JlIHRpbWUgc3BlbnQgc3R1ZHlpbmcgYWxzbyBpbmNyZWFzZWQgdGhlIGxpa2VsaWhvb2Qgb2Ygc3R1ZGVudHMgdG8gd2FudCBoaWdoZXIgZWR1Y2F0aW9uLiAKCkZvciBteSB0aGlyZCByZWdyZXNzaW9uLCBJIHJhbiB0aGUgc2FtZSBmb3VyIGluZGVwZW5kZW50IHZhcmlhYmxlcywgYnV0IGluY2x1ZGVkIGFuIGludGVyYWN0aW9uIHRlcm0gYmV0d2VlbiBhZ2UgYW5kIHNleC4gVGhlc2UgZmluZGluZ3MgcmVuZGVyZWQgdGhlIGRpZmZlcmVudGlhbCBlZmZlY3QgdGhhdCBhZ2luZyBoYXMgb24gd2lsbGluZ25lc3MgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24gZm9yIG1hbGVzIGFuZCBmZW1hbGVzLiBBcyBmZW1hbGVzIGdldCBvbGRlciB0aGV5IGJlY29tZSBsZXNzIGxpa2VseSB0byB3YW50IHRvIGdldCBoaWdoZXIgZWR1Y2F0aW9uIGFuZCBhcyBtYWxlcyBnZXQgb2xkZXIgdGhleSBiZWNvbWUgbW9yZSBsaWtlbHkgdG8gd2FudCB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbi4gUGFyZW50YWwgZWR1Y2F0aW9uLCBob3dldmVyLCByZW1haW5zIHRoZSBzdHJvbmdlc3QgZmFjaWxpdGF0b3IgdG8gc3R1ZGVudCdzIGluZGljYXRpb24gb2Ygd2FudGluZyB0byBwdXJzdWUgaGlnaGVyIGVkdWNhdGlvbi4gCgpBZnRlciBJIHJhbiBhbGwgdGhyZWUgcmVncmVzc2lvbnMsIEkgY29uZHVjdGVkIGEgbGlrZWxpaG9vZCByYXRpbyB0ZXN0IHRvIGRldGVybWluZSB3aGljaCBtb2RlbCB3YXMgdGhlIGJlc3QgZml0LiBJIHJhbiB0aGlzIHRlc3QgdXNpbmcgYm90aCB0aGUgYW5vdmEgYW5kIGxtdGVzdCBjb21tYW5kLCBhbmQgdGhleSBnYXZlIG1lIHRoZSBzYW1lIHJlc3VsdHM6IHRoYXQgdGhlIHNlY29uZCBtb2RlbCAoaGlnaGVyZWQyKSB3YXMgdGhlIGJlc3QgbW9kZWwgYXMgaXQgaGFkIHRoZSBtb3N0IHNpZ25pZmljYW5jZS4gSG93ZXZlciwgbW9kZWwgdGhyZWUgaGFkIHRoZSBsb3dlc3QgZGV2aWFuY2UuIAoKTGFzdGx5LCBJIGNyZWF0ZWQgdGhyZWUgcGxvdHMgdXNpbmcgdGhlIHZpc3JlZyBwYWNrYWdlIHRvIHZpc3VhbGl6ZSB0aGUgZGF0YSB0aGF0IEkganVzdCBpbnRlcmVwcmV0ZWQuIFRoZSBmaXJzdCBwbG90IGNvbmZpcm1zIHRoZSBpbml0aWFsIGZpbmRpbmcsIHRoYXQgZmVtYWxlcyBhcmUgbW9yZSBsaWtlbHkgdGhhbiBtYWxlcyB0byB3YW50IHRvIHB1cnN1ZSBoaWdoZXIgZWR1Y2F0aW9uLiBUaGUgc2Vjb25kIHBsb3QgZXhlbXBsaWZpZXMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFnZSBhbmQgZ2VuZGVyLCBzdWNoIHRoYXQgd2lsbGluZ25lc3MgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24gZGVjcmVhc2VzIGFzIGFnZSBpbmNyZWFzZXMuIFRoaXMgcGxvdCBhbHNvIHNob3dzIHRoYXQgdGhpcyBmaW5kaW5nIGlzIG1vcmUgcHJvbm91bmNlZCBmb3IgbWFsZXMgdGhhbiBmb3IgZmVtYWxlcy4gVGhlIGxhc3QgcGxvdCBzaG93cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gcGFyZW50YWwgZWR1Y2F0aW9uIGFuZCBnZW5kZXIsIHdoZXJlIHN0dWRlbnRzIHdobyBoYWQgYSBjb2xsZWdlIGVkdWNhdGVkIHBhcmVudCB3ZXJlIG1vcmUgbGlrZWx5IHRvIHdhbnQgdG8gcHVyc3VlIGhpZ2hlciBlZHVjYXRpb24gdGhlbXNlbHZlcyB0aGFuIHRoZWlyIGNvdW50ZXJwYXJ0cyB3aG9zZSBwYXJlbnRzIGRpZCBub3QgaGF2ZSBjb2xsZWdlIGVkdWNhdGlvbi4K