Utilizar el documento (el código de R) para responder a cada pregunta.

Preguntas del estudio, en el contexto de los chances de ser admitido a la UCLA:
  1. ¿Qué tan importante es realmente el inglés (toefl) para ser aceptado en la UCLA, sobre todo si se toma en cuenta en conjunto con los puntajes de GRE y cgpa?

  2. ¿Cuál es el odds ratio (OR) de ser admitido, entre los aplicantes con experiencia en investigación y los que no tienen experiencia en investigación?

  3. Ranking de la universidad de orígen

  1. Cuáles son los chances (odds) de un aplicante que viene de una unversidad de categoría dos (b) de ser admitido en la UCLA?
  2. Son los chances de ser admitido significativamente mayores si un aplicante viene de una universidad de primera categoría, comparados con los que vienen de otra universidad de segunda categoría?
  3. ¿Cuál es el papel de la experiencia en investigación, cuando se toma en cuenta en en conjunto con el ranking de la universidad de origen? ¿La importancia de la experiencia de investigación en la admisión, depende del ranking de la universidad de origen?

Packages

if(!require(FSA)){install.packages("FSA")}
if(!require(tidyverse)){install.packages("tidyverse")}
if(!require(psych)){install.packages("psych")}
if(!require(lme4)){install.packages("lme4")}
if(!require(lmerTest)){install.packages("lmerTest")}
if(!require(nlme)){install.packages("nlme")}
if(!require(car)){install.packages("car")}
if(!require(plotly)){install.packages("plotly")}
if(!require(reshape2)){install.packages("reshape2")}

#
library(googlesheets4); gs4_deauth()
library(AICcmodavg)
library(tidyverse)
library(lme4)
library(psych)
library(plotly)
library(reshape2)

Datos

####en hoja Excel en G-Classroom [primera hoja]

ss='https://docs.google.com/spreadsheets/d/1mFSGQ_rKVKtO1_J4ifju8LFlHDaKpJ7YQW9LP12NSFc/edit?usp=sharing'
hoja='UCLA_admission'
rango= 'B2:J402'
ucla.i <- read_sheet(ss,
                  col_names = TRUE,
                  sheet= hoja,
                  range= rango,
                  col_types = NULL,
                  na= "NA")
✔ Reading from Admission_UCLA.
✔ Range ''UCLA_admission'!B2:J402'.
ucla.i$admit.F <- as.factor(ucla.i$admit)
ucla.i$research.F <- as.factor(ucla.i$Research)
str(ucla.i)
tibble [400 × 11] (S3: tbl_df/tbl/data.frame)
 $ gre       : num [1:400] 337 324 316 322 314 330 321 308 302 323 ...
 $ toefl     : num [1:400] 118 107 104 110 103 115 109 101 102 108 ...
 $ u.rating  : num [1:400] 4 4 3 3 2 5 3 2 1 3 ...
 $ u.rank.F  : chr [1:400] "b" "b" "c" "c" ...
 $ SOP       : num [1:400] 4.5 4 3 3.5 2 4.5 3 3 2 3.5 ...
 $ LOR       : num [1:400] 4.5 4.5 3.5 2.5 3 3 4 4 1.5 3 ...
 $ cgpa      : num [1:400] 9.65 8.87 8 8.67 8.21 9.34 8.2 7.9 8 8.6 ...
 $ Research  : num [1:400] 1 1 1 1 0 1 1 0 0 0 ...
 $ admit     : num [1:400] 1 0 0 1 0 1 0 0 0 0 ...
 $ admit.F   : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 1 1 1 1 ...
 $ research.F: Factor w/ 2 levels "0","1": 2 2 2 2 1 2 2 1 1 1 ...

Plots

GRE.

Admitidos Vrs. NO dmitidos . gre - toefl - SOP - LOR - cgpa
data <- ucla.i[,c("gre", "toefl", "cgpa", "SOP", "LOR", "admit")]
tmp <- melt(data=data, id.vars = "admit")

p <- ggplot(tmp, aes(x= as.factor(admit), y = value, fill=factor(admit)))
p + geom_boxplot() +
  geom_point(position = position_jitter(width= 0.2, height= 0.2 ), size=0.5 ) +
  facet_wrap(~variable, scales="free_y")

NA
NA
Poner atención> Las cartas se califican en base a escalas ordinales son prácticamente variables categóricas-ordinales.

Research experience

Admitidos Vrs. NO dmitidos [ admit.F ~ research.F ]
p <- ggplot(data= ucla.i, aes(x =research.F, y= admit.F, fill= admit.F) )
p + 
  geom_col()

University Ranking

Admitidos Vrs. NO dmitidos [admit.F~ u.rank.F]
p <- ggplot(data= ucla.i, aes(x = u.rank.F, y= admit.F, fill= admit.F) )
p + 
  geom_col()

GLM

Pregunta 1: ¿Qué tan importante es realmente el inglés (toefl) para ser aceptado en la UCLA, sobre todo si se toma en cuenta en conjunto con los puntajes de GRE y cgpa?

m.toefl <- glm(data= ucla.i, admit.F ~ toefl, family= binomial )
summary(m.toefl)

Call:
glm(formula = admit.F ~ toefl, family = binomial, data = ucla.i)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -55.77147    5.81613  -9.589   <2e-16 ***
toefl         0.50373    0.05286   9.530   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 502.99  on 399  degrees of freedom
Residual deviance: 246.85  on 398  degrees of freedom
AIC: 250.85

Number of Fisher Scoring iterations: 6
m.intx.toefl <- glm(data= ucla.i, admit.F ~ toefl + gre + cgpa, family= binomial )
summary(m.intx.toefl)

Call:
glm(formula = admit.F ~ toefl + gre + cgpa, family = binomial, 
    data = ucla.i)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -94.54004   13.20713  -7.158 8.17e-13 ***
toefl         0.11238    0.07275   1.545   0.1224    
gre           0.08697    0.04629   1.879   0.0603 .  
cgpa          6.08228    1.00226   6.069 1.29e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 502.99  on 399  degrees of freedom
Residual deviance: 156.45  on 396  degrees of freedom
AIC: 164.45

Number of Fisher Scoring iterations: 7

Pregunta 2: ¿Cuál es el odds ratio (OR) de ser admitido, entre los aplicantes con experiencia en investigación y los que no tienen experiencia en investigación?

m.research <- glm(data= ucla.i, admit.F ~ research.F, family= binomial )
summary(m.research)

Call:
glm(formula = admit.F ~ research.F, family = binomial, data = ucla.i)

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -2.9503     0.3419  -8.628   <2e-16 ***
research.F1   3.1426     0.3679   8.542   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 502.99  on 399  degrees of freedom
Residual deviance: 373.15  on 398  degrees of freedom
AIC: 377.15

Number of Fisher Scoring iterations: 5

Plot: [admit ~ research]

p <- ggplot(data= ucla.i, aes(x = Research, y= admit))
p + geom_point(aes(col=admit),  position = position_jitter(width=0.1, height =0.1 )) +
  geom_smooth(method = "glm", method.args= list(family="binomial"))

Pregunta 3

Ranking de la universidad de orígen
a) Cuáles son los chances (odds) de un aplicante que viene de una unversidad de categoría dos (b) de ser admitido en la UCLA?
b) Son los chances de ser admitido significativamente mayores si un aplicante viene de una universidad de primera categoría, comparados con los que vienen de otra universidad de segunda categoría?
m.uRank <- glm(data= ucla.i, admit.F ~ u.rank.F, family= binomial )
summary(m.uRank)

Call:
glm(formula = admit.F ~ u.rank.F, family = binomial, data = ucla.i)

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   1.8718     0.3798   4.929 8.28e-07 ***
u.rank.Fb    -1.1989     0.4524  -2.650  0.00805 ** 
u.rank.Fc    -3.5458     0.4481  -7.913 2.51e-15 ***
u.rank.Fd    -4.6952     0.5664  -8.290  < 2e-16 ***
u.rank.Fe    -5.0907     1.0879  -4.679 2.88e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 502.99  on 399  degrees of freedom
Residual deviance: 312.51  on 395  degrees of freedom
AIC: 322.51

Number of Fisher Scoring iterations: 5
table(ucla.i$u.rank.F, ucla.i$admit.F)
   
      0   1
  a   8  52
  b  25  49
  c 112  21
  d 101   6
  e  25   1
(49/25)
[1] 1.96
(52/8)/(49/25)
[1] 3.316327
odds.b <- exp(m.uRank$coefficients[1]+m.uRank$coefficients[2])

OR.a.Vrs.b <- exp(m.uRank$coefficients[1])/exp(m.uRank$coefficients[1]+m.uRank$coefficients[2])

as.numeric(odds.b)
[1] 1.96
as.numeric(OR.a.Vrs.b)
[1] 3.316327
c) ¿Cuál es el papel de la experiencia en investigación, cuando se toma en cuenta en en conjunto con el ranking de la universidad de origen?
¿La importancia de la experiencia de investigación en la admisión, depende del ranking de la universidad de origen?
m.intx <- glm(data= ucla.i, admit.F ~ u.rank.F * Research, family= binomial )
summary(m.intx)

Call:
glm(formula = admit.F ~ u.rank.F * Research, family = binomial, 
    data = ucla.i)

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)         -1.9459     1.0690  -1.820   0.0687 .  
u.rank.Fb            0.9343     1.2181   0.767   0.4431    
u.rank.Fc           -1.0330     1.2219  -0.845   0.3979    
u.rank.Fd           -2.3582     1.4685  -1.606   0.1083    
u.rank.Fe          -15.6202   863.3100  -0.018   0.9856    
Research             5.8777     1.4705   3.997 6.41e-05 ***
u.rank.Fb:Research  -3.6985     1.6115  -2.295   0.0217 *  
u.rank.Fc:Research  -3.9787     1.6085  -2.474   0.0134 *  
u.rank.Fd:Research  -3.2601     1.8474  -1.765   0.0776 .  
u.rank.Fe:Research  10.3020   863.3113   0.012   0.9905    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 502.99  on 399  degrees of freedom
Residual deviance: 245.75  on 390  degrees of freedom
AIC: 265.75

Number of Fisher Scoring iterations: 16
#
p <- ggplot(data= ucla.i, aes(x = Research, y= admit, col= u.rank.F) )
p + geom_point(position = position_jitter(width=0.1, height =0.1 )) +
  geom_smooth(method ="glm", method.args= list(family="binomial"), se=FALSE)

LS0tDQp0aXRsZTogIlRhcmVhX0FkbWlzc2lvbnMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMjIFV0aWxpemFyIGVsIGRvY3VtZW50byAoZWwgY8OzZGlnbyBkZSBSKSBwYXJhIHJlc3BvbmRlciBhIGNhZGEgcHJlZ3VudGEuDQoNCiMjIyMjIFByZWd1bnRhcyBkZWwgZXN0dWRpbywgZW4gZWwgY29udGV4dG8gZGUgbG9zIGNoYW5jZXMgZGUgc2VyIGFkbWl0aWRvIGEgbGEgVUNMQToNCg0KMS4gwr9RdcOpIHRhbiBpbXBvcnRhbnRlIGVzIHJlYWxtZW50ZSBlbCBpbmdsw6lzICh0b2VmbCkgcGFyYSBzZXIgYWNlcHRhZG8gZW4gbGEgVUNMQSwgc29icmUgdG9kbyBzaSBzZSB0b21hIGVuIGN1ZW50YSBlbiBjb25qdW50byBjb24gbG9zIHB1bnRhamVzIGRlIEdSRSB5IGNncGE/DQoNCjIuIMK/Q3XDoWwgZXMgZWwgb2RkcyByYXRpbyAoT1IpIGRlIHNlciBhZG1pdGlkbywgZW50cmUgbG9zIGFwbGljYW50ZXMgY29uIGV4cGVyaWVuY2lhIGVuIGludmVzdGlnYWNpw7NuIHkgbG9zIHF1ZSBubyB0aWVuZW4gZXhwZXJpZW5jaWEgZW4gaW52ZXN0aWdhY2nDs24/IA0KDQozLiBSYW5raW5nIGRlIGxhIHVuaXZlcnNpZGFkIGRlIG9yw61nZW4gDQphKSBDdcOhbGVzIHNvbiBsb3MgY2hhbmNlcyAob2RkcykgZGUgdW4gYXBsaWNhbnRlIHF1ZSB2aWVuZSBkZSB1bmEgdW52ZXJzaWRhZCBkZSBjYXRlZ29yw61hIGRvcyAoYikgZGUgc2VyIGFkbWl0aWRvIGVuIGxhIFVDTEE/IA0KYikgU29uIGxvcyBjaGFuY2VzIGRlIHNlciBhZG1pdGlkbyBzaWduaWZpY2F0aXZhbWVudGUgbWF5b3JlcyBzaSB1biBhcGxpY2FudGUgdmllbmUgZGUgdW5hIHVuaXZlcnNpZGFkIGRlIHByaW1lcmEgY2F0ZWdvcsOtYSwgY29tcGFyYWRvcyBjb24gbG9zIHF1ZSB2aWVuZW4gZGUgb3RyYSB1bml2ZXJzaWRhZCBkZSBzZWd1bmRhIGNhdGVnb3LDrWE/DQpjKSDCv0N1w6FsIGVzIGVsIHBhcGVsIGRlIGxhIGV4cGVyaWVuY2lhIGVuIGludmVzdGlnYWNpw7NuLCBjdWFuZG8gc2UgdG9tYSBlbiBjdWVudGEgZW4gZW4gY29uanVudG8gY29uIGVsIHJhbmtpbmcgZGUgbGEgdW5pdmVyc2lkYWQgZGUgb3JpZ2VuPw0Kwr9MYSBpbXBvcnRhbmNpYSBkZSBsYSBleHBlcmllbmNpYSBkZSBpbnZlc3RpZ2FjacOzbiBlbiBsYSBhZG1pc2nDs24sIGRlcGVuZGUgZGVsIHJhbmtpbmcgZGUgbGEgdW5pdmVyc2lkYWQgZGUgb3JpZ2VuPw0KDQojIyMgUGFja2FnZXMNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQppZighcmVxdWlyZShGU0EpKXtpbnN0YWxsLnBhY2thZ2VzKCJGU0EiKX0NCmlmKCFyZXF1aXJlKHRpZHl2ZXJzZSkpe2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpfQ0KaWYoIXJlcXVpcmUocHN5Y2gpKXtpbnN0YWxsLnBhY2thZ2VzKCJwc3ljaCIpfQ0KaWYoIXJlcXVpcmUobG1lNCkpe2luc3RhbGwucGFja2FnZXMoImxtZTQiKX0NCmlmKCFyZXF1aXJlKGxtZXJUZXN0KSl7aW5zdGFsbC5wYWNrYWdlcygibG1lclRlc3QiKX0NCmlmKCFyZXF1aXJlKG5sbWUpKXtpbnN0YWxsLnBhY2thZ2VzKCJubG1lIil9DQppZighcmVxdWlyZShjYXIpKXtpbnN0YWxsLnBhY2thZ2VzKCJjYXIiKX0NCmlmKCFyZXF1aXJlKHBsb3RseSkpe2luc3RhbGwucGFja2FnZXMoInBsb3RseSIpfQ0KaWYoIXJlcXVpcmUocmVzaGFwZTIpKXtpbnN0YWxsLnBhY2thZ2VzKCJyZXNoYXBlMiIpfQ0KDQojDQpsaWJyYXJ5KGdvb2dsZXNoZWV0czQpOyBnczRfZGVhdXRoKCkNCmxpYnJhcnkoQUlDY21vZGF2ZykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShsbWU0KQ0KbGlicmFyeShwc3ljaCkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShyZXNoYXBlMikNCmBgYCAgDQoNCiMjIERhdG9zIA0KIyMjI2VuIGhvamEgRXhjZWwgZW4gRy1DbGFzc3Jvb20gW3ByaW1lcmEgaG9qYV0NCmBgYHtyfQ0Kc3M9J2h0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFtRlNHUV9yS1ZLdE8xX0o0aWZqdThMRmxIRGFLcEo3WVFXOUxQMTJOU0ZjL2VkaXQ/dXNwPXNoYXJpbmcnDQpob2phPSdVQ0xBX2FkbWlzc2lvbicNCnJhbmdvPSAnQjI6SjQwMicNCnVjbGEuaSA8LSByZWFkX3NoZWV0KHNzLA0KICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgIHNoZWV0PSBob2phLA0KICAgICAgICAgICAgICAgICAgcmFuZ2U9IHJhbmdvLA0KICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gTlVMTCwNCiAgICAgICAgICAgICAgICAgIG5hPSAiTkEiKQ0KdWNsYS5pJGFkbWl0LkYgPC0gYXMuZmFjdG9yKHVjbGEuaSRhZG1pdCkNCnVjbGEuaSRyZXNlYXJjaC5GIDwtIGFzLmZhY3Rvcih1Y2xhLmkkUmVzZWFyY2gpDQpzdHIodWNsYS5pKQ0KYGBgICANCiMjIFBsb3RzDQojIyMjIEdSRS4gDQojIyMjIyBBZG1pdGlkb3MgVnJzLiBOTyBkbWl0aWRvcyAuIGdyZSAtIHRvZWZsIC0gU09QIC0gTE9SIC0gY2dwYQ0KYGBge3IgLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9OH0NCmRhdGEgPC0gdWNsYS5pWyxjKCJncmUiLCAidG9lZmwiLCAiY2dwYSIsICJTT1AiLCAiTE9SIiwgImFkbWl0IildDQp0bXAgPC0gbWVsdChkYXRhPWRhdGEsIGlkLnZhcnMgPSAiYWRtaXQiKQ0KDQpwIDwtIGdncGxvdCh0bXAsIGFlcyh4PSBhcy5mYWN0b3IoYWRtaXQpLCB5ID0gdmFsdWUsIGZpbGw9ZmFjdG9yKGFkbWl0KSkpDQpwICsgZ2VvbV9ib3hwbG90KCkgKw0KICBnZW9tX3BvaW50KHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKHdpZHRoPSAwLjIsIGhlaWdodD0gMC4yICksIHNpemU9MC41ICkgKw0KICBmYWNldF93cmFwKH52YXJpYWJsZSwgc2NhbGVzPSJmcmVlX3kiKQ0KDQoNCmBgYCAgDQojIyMjIyBQb25lciBhdGVuY2nDs24+IExhcyBjYXJ0YXMgc2UgY2FsaWZpY2FuIGVuIGJhc2UgYSBlc2NhbGFzIG9yZGluYWxlcyBzb24gcHLDoWN0aWNhbWVudGUgdmFyaWFibGVzIGNhdGVnw7NyaWNhcy1vcmRpbmFsZXMuDQoNCiMjIyMgUmVzZWFyY2ggZXhwZXJpZW5jZQ0KIyMjIyMgQWRtaXRpZG9zIFZycy4gTk8gZG1pdGlkb3MgWyBhZG1pdC5GIH4gcmVzZWFyY2guRiBdDQpgYGB7ciwgZmlnLndpZHRoPTYsIGZpZy5oZWlnaHQ9NH0NCnAgPC0gZ2dwbG90KGRhdGE9IHVjbGEuaSwgYWVzKHggPXJlc2VhcmNoLkYsIHk9IGFkbWl0LkYsIGZpbGw9IGFkbWl0LkYpICkNCnAgKyANCiAgZ2VvbV9jb2woKQ0KYGBgICANCg0KIyMjIyBVbml2ZXJzaXR5IFJhbmtpbmcNCiMjIyMjIEFkbWl0aWRvcyBWcnMuIE5PIGRtaXRpZG9zIFthZG1pdC5GfiB1LnJhbmsuRl0NCmBgYHtyLCBmaWcud2lkdGg9NiwgZmlnLmhlaWdodD01fQ0KcCA8LSBnZ3Bsb3QoZGF0YT0gdWNsYS5pLCBhZXMoeCA9IHUucmFuay5GLCB5PSBhZG1pdC5GLCBmaWxsPSBhZG1pdC5GKSApDQpwICsgDQogIGdlb21fY29sKCkNCmBgYCAgDQoNCiMjIEdMTQ0KIyMjIyAgUHJlZ3VudGEgMTogwr9RdcOpIHRhbiBpbXBvcnRhbnRlIGVzIHJlYWxtZW50ZSBlbCBpbmdsw6lzICh0b2VmbCkgcGFyYSBzZXIgYWNlcHRhZG8gZW4gbGEgVUNMQSwgc29icmUgdG9kbyBzaSBzZSB0b21hIGVuIGN1ZW50YSBlbiBjb25qdW50byBjb24gbG9zIHB1bnRhamVzIGRlIEdSRSB5IGNncGE/DQpgYGB7cn0NCm0udG9lZmwgPC0gZ2xtKGRhdGE9IHVjbGEuaSwgYWRtaXQuRiB+IHRvZWZsLCBmYW1pbHk9IGJpbm9taWFsICkNCnN1bW1hcnkobS50b2VmbCkNCg0KbS5pbnR4LnRvZWZsIDwtIGdsbShkYXRhPSB1Y2xhLmksIGFkbWl0LkYgfiB0b2VmbCArIGdyZSArIGNncGEsIGZhbWlseT0gYmlub21pYWwgKQ0Kc3VtbWFyeShtLmludHgudG9lZmwpDQpgYGAgIA0KDQoNCiMjIyMgIFByZWd1bnRhIDI6IMK/Q3XDoWwgZXMgZWwgb2RkcyByYXRpbyAoT1IpIGRlIHNlciBhZG1pdGlkbywgZW50cmUgbG9zIGFwbGljYW50ZXMgY29uIGV4cGVyaWVuY2lhIGVuIGludmVzdGlnYWNpw7NuIHkgbG9zIHF1ZSBubyB0aWVuZW4gZXhwZXJpZW5jaWEgZW4gaW52ZXN0aWdhY2nDs24/ICANCmBgYHtyfQ0KbS5yZXNlYXJjaCA8LSBnbG0oZGF0YT0gdWNsYS5pLCBhZG1pdC5GIH4gcmVzZWFyY2guRiwgZmFtaWx5PSBiaW5vbWlhbCApDQpzdW1tYXJ5KG0ucmVzZWFyY2gpDQpgYGAgIA0KDQojIyMjIFBsb3Q6IFthZG1pdCB+IHJlc2VhcmNoXQ0KYGBge3J9DQpwIDwtIGdncGxvdChkYXRhPSB1Y2xhLmksIGFlcyh4ID0gUmVzZWFyY2gsIHk9IGFkbWl0KSkNCnAgKyBnZW9tX3BvaW50KGFlcyhjb2w9YWRtaXQpLCAgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIod2lkdGg9MC4xLCBoZWlnaHQgPTAuMSApKSArDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLCBtZXRob2QuYXJncz0gbGlzdChmYW1pbHk9ImJpbm9taWFsIikpDQpgYGAgIA0KDQojIyMjIFByZWd1bnRhIDMNCiMjIyMjIFJhbmtpbmcgZGUgbGEgdW5pdmVyc2lkYWQgZGUgb3LDrWdlbiANCiMjIyMjIGEpIEN1w6FsZXMgc29uIGxvcyBjaGFuY2VzIChvZGRzKSBkZSB1biBhcGxpY2FudGUgcXVlIHZpZW5lIGRlIHVuYSB1bnZlcnNpZGFkIGRlIGNhdGVnb3LDrWEgZG9zIChiKSBkZSBzZXIgYWRtaXRpZG8gZW4gbGEgVUNMQT8gDQojIyMjIyBiKSBTb24gbG9zIGNoYW5jZXMgZGUgc2VyIGFkbWl0aWRvIHNpZ25pZmljYXRpdmFtZW50ZSBtYXlvcmVzIHNpIHVuIGFwbGljYW50ZSB2aWVuZSBkZSB1bmEgdW5pdmVyc2lkYWQgZGUgcHJpbWVyYSBjYXRlZ29yw61hLCBjb21wYXJhZG9zIGNvbiBsb3MgcXVlIHZpZW5lbiBkZSBvdHJhIHVuaXZlcnNpZGFkIGRlIHNlZ3VuZGEgY2F0ZWdvcsOtYT8gIA0KYGBge3J9DQptLnVSYW5rIDwtIGdsbShkYXRhPSB1Y2xhLmksIGFkbWl0LkYgfiB1LnJhbmsuRiwgZmFtaWx5PSBiaW5vbWlhbCApDQpzdW1tYXJ5KG0udVJhbmspDQoNCnRhYmxlKHVjbGEuaSR1LnJhbmsuRiwgdWNsYS5pJGFkbWl0LkYpDQoNCig0OS8yNSkNCg0KKDUyLzgpLyg0OS8yNSkNCg0Kb2Rkcy5iIDwtIGV4cChtLnVSYW5rJGNvZWZmaWNpZW50c1sxXSttLnVSYW5rJGNvZWZmaWNpZW50c1syXSkNCg0KT1IuYS5WcnMuYiA8LSBleHAobS51UmFuayRjb2VmZmljaWVudHNbMV0pL2V4cChtLnVSYW5rJGNvZWZmaWNpZW50c1sxXSttLnVSYW5rJGNvZWZmaWNpZW50c1syXSkNCg0KYXMubnVtZXJpYyhvZGRzLmIpDQoNCmFzLm51bWVyaWMoT1IuYS5WcnMuYikNCmBgYCAgDQojIyMjIyBjKSDCv0N1w6FsIGVzIGVsIHBhcGVsIGRlIGxhIGV4cGVyaWVuY2lhIGVuIGludmVzdGlnYWNpw7NuLCBjdWFuZG8gc2UgdG9tYSBlbiBjdWVudGEgZW4gZW4gY29uanVudG8gY29uIGVsIHJhbmtpbmcgZGUgbGEgdW5pdmVyc2lkYWQgZGUgb3JpZ2VuPw0KIyMjIyMgwr9MYSBpbXBvcnRhbmNpYSBkZSBsYSBleHBlcmllbmNpYSBkZSBpbnZlc3RpZ2FjacOzbiBlbiBsYSBhZG1pc2nDs24sIGRlcGVuZGUgZGVsIHJhbmtpbmcgZGUgbGEgdW5pdmVyc2lkYWQgZGUgb3JpZ2VuPw0KYGBge3J9DQptLmludHggPC0gZ2xtKGRhdGE9IHVjbGEuaSwgYWRtaXQuRiB+IHUucmFuay5GICogUmVzZWFyY2gsIGZhbWlseT0gYmlub21pYWwgKQ0Kc3VtbWFyeShtLmludHgpDQojDQpwIDwtIGdncGxvdChkYXRhPSB1Y2xhLmksIGFlcyh4ID0gUmVzZWFyY2gsIHk9IGFkbWl0LCBjb2w9IHUucmFuay5GKSApDQpwICsgZ2VvbV9wb2ludChwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcih3aWR0aD0wLjEsIGhlaWdodCA9MC4xICkpICsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0iZ2xtIiwgbWV0aG9kLmFyZ3M9IGxpc3QoZmFtaWx5PSJiaW5vbWlhbCIpLCBzZT1GQUxTRSkNCmBgYCAg