hardtoget<-haven::read_xpt("/Users/christacrumrine/Downloads/LLCP2020.XPT ")
names(hardtoget)<-tolower(gsub(pattern = "_", replacement = "",x=names(hardtoget)))

Data Preperation

#Age cut into intervals
hardtoget$age<-cut(hardtoget$ageg5yr,
                   breaks=c(0,24,39,59,79,99))


#Hours of time spent as provider 
hardtoget$hoursofcare<-Recode(hardtoget$crgvhrs1, recodes="1=1; 2=2; 3=3; 4=4; else=NA", as.factor = T)
hardtoget$hoursofcare<-relevel(hardtoget$hoursofcare, ref = "1")

#has health coverage
hardtoget$healthinsurace_coverage<- car::Recode(hardtoget$hlthpln1,
                       recodes="1='no, has coverage'; 2='yes, no coverage';else=NA",
                       as.factor=T)
hardtoget$healthinsurace_coverage<-relevel(hardtoget$healthinsurace_coverage, ref='yes, no coverage')


#sex
hardtoget$male<-as.factor(ifelse(hardtoget$colgsex==1,
                                "Male",
                                "Female"))

#marital status
hardtoget$marst<-Recode(hardtoget$marital, recodes="1='married'; 2='divorced'; 3='widowed'; 4='separated'; 5='nm';6='cohab'; else=NA", as.factor=T)


#depression
hardtoget$depression<-Recode(hardtoget$addepev3, recodes="1=1; 2=0; else=NA")



#assist personal care
hardtoget$ADLcare<-Recode(hardtoget$crgvper1, recodes="1=1; 2=0; else=NA")

#assist home tasks
hardtoget$IADLcare<-Recode(hardtoget$crgvhou1, recodes="1=1; 2=0; else=NA")

#Poor or fair self rated health
hardtoget$badhealth<-Recode(hardtoget$genhlth,
                           recodes="4:5=1; 1:3=0; else=NA")

#Drink alcohol
hardtoget$drink<-Recode(hardtoget$drnkany5, recodes="1=1; 2=0; else=NA")

#length caring for someone 
hardtoget$cargving<-Recode(hardtoget$crgvlng1,
recodes="1='0less30'; 2='1to6mnths'; 3='2sixmnthsto2yrs'; 4='3twofvyears'; 5='4fvyrsormore';7:9=NA",
as.factor=T)
hardtoget$cargving<-relevel(hardtoget$cargving, ref='0less30')


#have you been told you have diabetes
hardtoget$hvdiab<-Recode(hardtoget$prediab1,
                       recodes="1:2 ='yes'; 3 ='no'; else = NA",
                       as.factor=T)

#Ever had a stroke
hardtoget$stroke<-Recode(hardtoget$cvdstrk3, recodes="1=1; 2=0; else=NA")

#smoked
hardtoget$smoked<-Recode(hardtoget$smoke100, recodes="1=1; 2=0; else=NA")


#race/ethnicity
hardtoget$black<-Recode(hardtoget$imprace,
                       recodes="2=1; 9=NA; else=0")
hardtoget$white<-Recode(hardtoget$imprace,
                       recodes="1=1; 9=NA; else=0")
hardtoget$other<-Recode(hardtoget$imprace,
                       recodes="3:4=1; 9=NA; else=0")
hardtoget$hispanic<-Recode(hardtoget$imprace,
                          recodes="5=1; 9=NA; else=0")

hardtoget$race_eth<-Recode(hardtoget$imprace,
                          recodes="1='nhwhite'; 2='nh_black'; 3='nh_other';4='nh_multirace'; 5='hispanic'; else=NA",
                          as.factor = T)

#education level
hardtoget$educ<-Recode(hardtoget$educa,
recodes="1:2='0Prim'; 3='1somehs'; 4='2hsgrad'; 5='3somecol'; 6='4colgrad';9=NA",
as.factor=T)
hardtoget$educ<-relevel(hardtoget$educ, ref='2hsgrad')

#BMI, in the brfss_17a the bmi variable has 2 implied decimal places,
#so we must divide by 100 to get real bmi's

hardtoget$bmi<-hardtoget$bmi5/100

#Healthy days
hardtoget$healthdays<-Recode(hardtoget$menthlth, recodes = "88=0; 77=NA; 99=NA")

The outcome variable that I am using is healthdays which the number of days someone reports there mental health wasn’t good.

Linear Term

hardtogetb<-hardtoget%>%

   select(   llcpwt, ststr, healthdays, race_eth, badhealth, marst, educ, age, bmi, hoursofcare, cargving)%>%
  filter(complete.cases(.))
#outcome badhealth, smooth term: age, hoursofcare and cargiving, rest are dummy variables
brfgam<-gam(badhealth ~ hoursofcare+ cargving+ marst+educ+race_eth+healthdays,
               data=hardtogetb,
            weights = llcpwt/mean(llcpwt, na.rm=T), #scales to mean of 1
            family=binomial)
summary(brfgam)
## 
## Family: binomial 
## Link function: logit 
## 
## Formula:
## badhealth ~ hoursofcare + cargving + marst + educ + race_eth + 
##     healthdays
## 
## Parametric coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             -2.616525   0.253011 -10.342  < 2e-16 ***
## hoursofcare2             0.409852   0.118318   3.464 0.000532 ***
## hoursofcare3            -0.005551   0.134086  -0.041 0.966976    
## hoursofcare4             0.147726   0.108222   1.365 0.172243    
## cargving1to6mnths       -0.021432   0.164904  -0.130 0.896591    
## cargving2sixmnthsto2yrs -0.176226   0.146413  -1.204 0.228733    
## cargving3twofvyears     -0.161141   0.146870  -1.097 0.272565    
## cargving4fvyrsormore     0.241645   0.131945   1.831 0.067040 .  
## marstdivorced            0.613513   0.205788   2.981 0.002870 ** 
## marstmarried             0.258903   0.189743   1.364 0.172412    
## marstnm                 -0.080519   0.200174  -0.402 0.687506    
## marstseparated           0.184327   0.276256   0.667 0.504623    
## marstwidowed             0.259565   0.256552   1.012 0.311659    
## educ0Prim                0.577610   0.270127   2.138 0.032493 *  
## educ1somehs              0.413115   0.144288   2.863 0.004195 ** 
## educ3somecol            -0.326855   0.100002  -3.269 0.001081 ** 
## educ4colgrad            -0.779479   0.125009  -6.235 4.51e-10 ***
## race_ethnh_black         0.687097   0.165846   4.143 3.43e-05 ***
## race_ethnh_multirace     1.346699   0.400664   3.361 0.000776 ***
## race_ethnh_other         1.126124   0.338904   3.323 0.000891 ***
## race_ethnhwhite          0.362027   0.142088   2.548 0.010837 *  
## healthdays               0.066658   0.003680  18.115  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## R-sq.(adj) =  0.129   Deviance explained =   12%
## UBRE = -0.189  Scale est. = 1         n = 4807
#outcome badhealth, smooth term: healthdays, rest are dummy variables
brfgam_1<-gam(badhealth ~ hoursofcare+ cargving+ marst+educ+race_eth+ s(healthdays),
               data=hardtogetb,
            weights = llcpwt/mean(llcpwt, na.rm=T), #scales to mean of 1
            family=binomial)
summary(brfgam_1)
## 
## Family: binomial 
## Link function: logit 
## 
## Formula:
## badhealth ~ hoursofcare + cargving + marst + educ + race_eth + 
##     s(healthdays)
## 
## Parametric coefficients:
##                         Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             -2.24301    0.25071  -8.947  < 2e-16 ***
## hoursofcare2             0.41294    0.11839   3.488 0.000487 ***
## hoursofcare3            -0.01213    0.13427  -0.090 0.928042    
## hoursofcare4             0.14861    0.10827   1.373 0.169901    
## cargving1to6mnths       -0.02805    0.16494  -0.170 0.864943    
## cargving2sixmnthsto2yrs -0.19495    0.14653  -1.330 0.183366    
## cargving3twofvyears     -0.16223    0.14706  -1.103 0.269987    
## cargving4fvyrsormore     0.25355    0.13212   1.919 0.054965 .  
## marstdivorced            0.63319    0.20562   3.079 0.002074 ** 
## marstmarried             0.28894    0.18986   1.522 0.128047    
## marstnm                 -0.07060    0.19974  -0.353 0.723758    
## marstseparated           0.21325    0.27601   0.773 0.439749    
## marstwidowed             0.30097    0.25719   1.170 0.241904    
## educ0Prim                0.58964    0.27027   2.182 0.029130 *  
## educ1somehs              0.41376    0.14428   2.868 0.004135 ** 
## educ3somecol            -0.32918    0.10001  -3.291 0.000997 ***
## educ4colgrad            -0.78252    0.12503  -6.259 3.88e-10 ***
## race_ethnh_black         0.68854    0.16625   4.142 3.45e-05 ***
## race_ethnh_multirace     1.35467    0.40273   3.364 0.000769 ***
## race_ethnh_other         1.14229    0.33994   3.360 0.000778 ***
## race_ethnhwhite          0.36164    0.14236   2.540 0.011078 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                 edf Ref.df Chi.sq p-value    
## s(healthdays) 3.102  3.761  329.4  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.131   Deviance explained = 12.2%
## UBRE = -0.18973  Scale est. = 1         n = 4807
plot(brfgam_1)

anova( brfgam_1,
       brfgam,
       test="Chisq")
library(survey)
des<-svydesign(ids = ~1,
               stata=~strata,
               weights = ~ llcpwt,
               data=hardtoget)

ex1<-svyglm(badhealth ~ cargving+ marst+educ+race_eth+healthdays,
    family=gaussian,
    des)

summary(ex1)
## 
## Call:
## svyglm(formula = badhealth ~ cargving + marst + educ + race_eth + 
##     healthdays, design = des, family = gaussian)
## 
## Survey design:
## svydesign(ids = ~1, stata = ~strata, weights = ~llcpwt, data = hardtoget)
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              0.057885   0.061206   0.946  0.34432    
## cargving1to6mnths        0.014521   0.032972   0.440  0.65966    
## cargving2sixmnthsto2yrs -0.014285   0.028139  -0.508  0.61173    
## cargving3twofvyears     -0.007362   0.026817  -0.275  0.78369    
## cargving4fvyrsormore     0.034694   0.027569   1.258  0.20828    
## marstdivorced            0.072669   0.051088   1.422  0.15496    
## marstmarried             0.023117   0.045313   0.510  0.60996    
## marstnm                 -0.020493   0.049124  -0.417  0.67657    
## marstseparated           0.019253   0.063819   0.302  0.76291    
## marstwidowed             0.034512   0.051789   0.666  0.50519    
## educ0Prim                0.087216   0.062248   1.401  0.16124    
## educ1somehs              0.057159   0.039101   1.462  0.14385    
## educ3somecol            -0.032756   0.022022  -1.487  0.13697    
## educ4colgrad            -0.091747   0.020069  -4.571 4.95e-06 ***
## race_ethnh_black         0.075672   0.039454   1.918  0.05517 .  
## race_ethnh_multirace     0.230245   0.089127   2.583  0.00981 ** 
## race_ethnh_other         0.127583   0.098336   1.297  0.19454    
## race_ethnhwhite          0.047101   0.029981   1.571  0.11623    
## healthdays               0.011044   0.001061  10.411  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.1800761)
## 
## Number of Fisher Scoring iterations: 2
LS0tCnRpdGxlOiAiSG9tZXdvcmsgOSAiCmF1dGhvcjogIkJyeWFuIFNvbG9tb24iCmRhdGU6ICI0LzEzLzIwMjIiCm91dHB1dDoKICAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgZmlnX2hlaWdodDogNwogICAgZmlnX3dpZHRoOiA3CiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKLS0tCgoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgoKYGBge3IgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShtZ2N2LCBxdWlldGx5ID0gVCkKbGlicmFyeShzcGxpbmVzLCBxdWlldGx5ID0gVCkKbGlicmFyeShBbWVsaWEsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KGZhY3RvZXh0cmEsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KEZhY3RvTWluZVIsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KHN0YXJnYXplciwgcXVpZXRseSA9IFQpCmxpYnJhcnkoc3VydmV5LCBxdWlldGx5ID0gVCkKbGlicmFyeShjYXIsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KHF1ZXN0aW9uciwgcXVpZXRseSA9IFQpCmxpYnJhcnkoZHBseXIsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KGZvcmNhdHMsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KHRpZHl2ZXJzZSwgcXVpZXRseSA9IFQpCmxpYnJhcnkoc3J2eXIsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KCBndHN1bW1hcnksIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KGNhcmV0LCBxdWlldGx5ID0gVCkKbGlicmFyeShWR0FNLCBxdWlldGx5ID0gVCkKbGlicmFyeShnZ3Bsb3QyLCBxdWlldGx5ID0gVCkKbGlicmFyeShzdnlWR0FNLCBxdWlldGx5ID0gVCkKbGlicmFyeShtaWNlLCBxdWlldGx5ID0gVCkKbGlicmFyeShlbW1lYW5zLCBxdWlldGx5ID0gVCkKYGBgCgoKCmBgYHtyfQpoYXJkdG9nZXQ8LWhhdmVuOjpyZWFkX3hwdCgiL1VzZXJzL2NocmlzdGFjcnVtcmluZS9Eb3dubG9hZHMvTExDUDIwMjAuWFBUICIpCmBgYAoKYGBge3J9Cm5hbWVzKGhhcmR0b2dldCk8LXRvbG93ZXIoZ3N1YihwYXR0ZXJuID0gIl8iLCByZXBsYWNlbWVudCA9ICIiLHg9bmFtZXMoaGFyZHRvZ2V0KSkpCmBgYAoKRGF0YSBQcmVwZXJhdGlvbiAKCmBgYHtyfQojQWdlIGN1dCBpbnRvIGludGVydmFscwpoYXJkdG9nZXQkYWdlPC1jdXQoaGFyZHRvZ2V0JGFnZWc1eXIsCiAgICAgICAgICAgICAgICAgICBicmVha3M9YygwLDI0LDM5LDU5LDc5LDk5KSkKCgojSG91cnMgb2YgdGltZSBzcGVudCBhcyBwcm92aWRlciAKaGFyZHRvZ2V0JGhvdXJzb2ZjYXJlPC1SZWNvZGUoaGFyZHRvZ2V0JGNyZ3ZocnMxLCByZWNvZGVzPSIxPTE7IDI9MjsgMz0zOyA0PTQ7IGVsc2U9TkEiLCBhcy5mYWN0b3IgPSBUKQpoYXJkdG9nZXQkaG91cnNvZmNhcmU8LXJlbGV2ZWwoaGFyZHRvZ2V0JGhvdXJzb2ZjYXJlLCByZWYgPSAiMSIpCgojaGFzIGhlYWx0aCBjb3ZlcmFnZQpoYXJkdG9nZXQkaGVhbHRoaW5zdXJhY2VfY292ZXJhZ2U8LSBjYXI6OlJlY29kZShoYXJkdG9nZXQkaGx0aHBsbjEsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nbm8sIGhhcyBjb3ZlcmFnZSc7IDI9J3llcywgbm8gY292ZXJhZ2UnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpoYXJkdG9nZXQkaGVhbHRoaW5zdXJhY2VfY292ZXJhZ2U8LXJlbGV2ZWwoaGFyZHRvZ2V0JGhlYWx0aGluc3VyYWNlX2NvdmVyYWdlLCByZWY9J3llcywgbm8gY292ZXJhZ2UnKQoKCiNzZXgKaGFyZHRvZ2V0JG1hbGU8LWFzLmZhY3RvcihpZmVsc2UoaGFyZHRvZ2V0JGNvbGdzZXg9PTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGZW1hbGUiKSkKCiNtYXJpdGFsIHN0YXR1cwpoYXJkdG9nZXQkbWFyc3Q8LVJlY29kZShoYXJkdG9nZXQkbWFyaXRhbCwgcmVjb2Rlcz0iMT0nbWFycmllZCc7IDI9J2Rpdm9yY2VkJzsgMz0nd2lkb3dlZCc7IDQ9J3NlcGFyYXRlZCc7IDU9J25tJzs2PSdjb2hhYic7IGVsc2U9TkEiLCBhcy5mYWN0b3I9VCkKCgojZGVwcmVzc2lvbgpoYXJkdG9nZXQkZGVwcmVzc2lvbjwtUmVjb2RlKGhhcmR0b2dldCRhZGRlcGV2MywgcmVjb2Rlcz0iMT0xOyAyPTA7IGVsc2U9TkEiKQoKCgojYXNzaXN0IHBlcnNvbmFsIGNhcmUKaGFyZHRvZ2V0JEFETGNhcmU8LVJlY29kZShoYXJkdG9nZXQkY3JndnBlcjEsIHJlY29kZXM9IjE9MTsgMj0wOyBlbHNlPU5BIikKCiNhc3Npc3QgaG9tZSB0YXNrcwpoYXJkdG9nZXQkSUFETGNhcmU8LVJlY29kZShoYXJkdG9nZXQkY3JndmhvdTEsIHJlY29kZXM9IjE9MTsgMj0wOyBlbHNlPU5BIikKCiNQb29yIG9yIGZhaXIgc2VsZiByYXRlZCBoZWFsdGgKaGFyZHRvZ2V0JGJhZGhlYWx0aDwtUmVjb2RlKGhhcmR0b2dldCRnZW5obHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSI0OjU9MTsgMTozPTA7IGVsc2U9TkEiKQoKI0RyaW5rIGFsY29ob2wKaGFyZHRvZ2V0JGRyaW5rPC1SZWNvZGUoaGFyZHRvZ2V0JGRybmthbnk1LCByZWNvZGVzPSIxPTE7IDI9MDsgZWxzZT1OQSIpCgojbGVuZ3RoIGNhcmluZyBmb3Igc29tZW9uZSAKaGFyZHRvZ2V0JGNhcmd2aW5nPC1SZWNvZGUoaGFyZHRvZ2V0JGNyZ3ZsbmcxLApyZWNvZGVzPSIxPScwbGVzczMwJzsgMj0nMXRvNm1udGhzJzsgMz0nMnNpeG1udGhzdG8yeXJzJzsgND0nM3R3b2Z2eWVhcnMnOyA1PSc0ZnZ5cnNvcm1vcmUnOzc6OT1OQSIsCmFzLmZhY3Rvcj1UKQpoYXJkdG9nZXQkY2FyZ3Zpbmc8LXJlbGV2ZWwoaGFyZHRvZ2V0JGNhcmd2aW5nLCByZWY9JzBsZXNzMzAnKQoKCiNoYXZlIHlvdSBiZWVuIHRvbGQgeW91IGhhdmUgZGlhYmV0ZXMKaGFyZHRvZ2V0JGh2ZGlhYjwtUmVjb2RlKGhhcmR0b2dldCRwcmVkaWFiMSwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxOjIgPSd5ZXMnOyAzID0nbm8nOyBlbHNlID0gTkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQoKI0V2ZXIgaGFkIGEgc3Ryb2tlCmhhcmR0b2dldCRzdHJva2U8LVJlY29kZShoYXJkdG9nZXQkY3Zkc3RyazMsIHJlY29kZXM9IjE9MTsgMj0wOyBlbHNlPU5BIikKCiNzbW9rZWQKaGFyZHRvZ2V0JHNtb2tlZDwtUmVjb2RlKGhhcmR0b2dldCRzbW9rZTEwMCwgcmVjb2Rlcz0iMT0xOyAyPTA7IGVsc2U9TkEiKQoKCiNyYWNlL2V0aG5pY2l0eQpoYXJkdG9nZXQkYmxhY2s8LVJlY29kZShoYXJkdG9nZXQkaW1wcmFjZSwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIyPTE7IDk9TkE7IGVsc2U9MCIpCmhhcmR0b2dldCR3aGl0ZTwtUmVjb2RlKGhhcmR0b2dldCRpbXByYWNlLAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjE9MTsgOT1OQTsgZWxzZT0wIikKaGFyZHRvZ2V0JG90aGVyPC1SZWNvZGUoaGFyZHRvZ2V0JGltcHJhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMzo0PTE7IDk9TkE7IGVsc2U9MCIpCmhhcmR0b2dldCRoaXNwYW5pYzwtUmVjb2RlKGhhcmR0b2dldCRpbXByYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjU9MTsgOT1OQTsgZWxzZT0wIikKCmhhcmR0b2dldCRyYWNlX2V0aDwtUmVjb2RlKGhhcmR0b2dldCRpbXByYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjE9J25od2hpdGUnOyAyPSduaF9ibGFjayc7IDM9J25oX290aGVyJzs0PSduaF9tdWx0aXJhY2UnOyA1PSdoaXNwYW5pYyc7IGVsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3RvciA9IFQpCgojZWR1Y2F0aW9uIGxldmVsCmhhcmR0b2dldCRlZHVjPC1SZWNvZGUoaGFyZHRvZ2V0JGVkdWNhLApyZWNvZGVzPSIxOjI9JzBQcmltJzsgMz0nMXNvbWVocyc7IDQ9JzJoc2dyYWQnOyA1PSczc29tZWNvbCc7IDY9JzRjb2xncmFkJzs5PU5BIiwKYXMuZmFjdG9yPVQpCmhhcmR0b2dldCRlZHVjPC1yZWxldmVsKGhhcmR0b2dldCRlZHVjLCByZWY9JzJoc2dyYWQnKQoKI0JNSSwgaW4gdGhlIGJyZnNzXzE3YSB0aGUgYm1pIHZhcmlhYmxlIGhhcyAyIGltcGxpZWQgZGVjaW1hbCBwbGFjZXMsCiNzbyB3ZSBtdXN0IGRpdmlkZSBieSAxMDAgdG8gZ2V0IHJlYWwgYm1pJ3MKCmhhcmR0b2dldCRibWk8LWhhcmR0b2dldCRibWk1LzEwMAoKI0hlYWx0aHkgZGF5cwpoYXJkdG9nZXQkaGVhbHRoZGF5czwtUmVjb2RlKGhhcmR0b2dldCRtZW50aGx0aCwgcmVjb2RlcyA9ICI4OD0wOyA3Nz1OQTsgOTk9TkEiKQpgYGAKClRoZSBvdXRjb21lIHZhcmlhYmxlIHRoYXQgSSBhbSB1c2luZyBpcyBoZWFsdGhkYXlzIHdoaWNoIHRoZSBudW1iZXIgb2YgZGF5cyBzb21lb25lIHJlcG9ydHMgdGhlcmUgbWVudGFsIGhlYWx0aCB3YXNuJ3QgZ29vZC4gCgpMaW5lYXIgVGVybQoKYGBge3J9CmhhcmR0b2dldGI8LWhhcmR0b2dldCU+JQoKICAgc2VsZWN0KCAgIGxsY3B3dCwgc3RzdHIsIGhlYWx0aGRheXMsIHJhY2VfZXRoLCBiYWRoZWFsdGgsIG1hcnN0LCBlZHVjLCBhZ2UsIGJtaSwgaG91cnNvZmNhcmUsIGNhcmd2aW5nKSU+JQogIGZpbHRlcihjb21wbGV0ZS5jYXNlcyguKSkKYGBgCgoKYGBge3IsIHdhcm5pbmc9RkFMU0V9CiNvdXRjb21lIGJhZGhlYWx0aCwgc21vb3RoIHRlcm06IGFnZSwgaG91cnNvZmNhcmUgYW5kIGNhcmdpdmluZywgcmVzdCBhcmUgZHVtbXkgdmFyaWFibGVzCmJyZmdhbTwtZ2FtKGJhZGhlYWx0aCB+IGhvdXJzb2ZjYXJlKyBjYXJndmluZysgbWFyc3QrZWR1YytyYWNlX2V0aCtoZWFsdGhkYXlzLAogICAgICAgICAgICAgICBkYXRhPWhhcmR0b2dldGIsCiAgICAgICAgICAgIHdlaWdodHMgPSBsbGNwd3QvbWVhbihsbGNwd3QsIG5hLnJtPVQpLCAjc2NhbGVzIHRvIG1lYW4gb2YgMQogICAgICAgICAgICBmYW1pbHk9Ymlub21pYWwpCnN1bW1hcnkoYnJmZ2FtKQpgYGAKCgpgYGB7ciwgd2FybmluZz1GQUxTRX0KI291dGNvbWUgYmFkaGVhbHRoLCBzbW9vdGggdGVybTogaGVhbHRoZGF5cywgcmVzdCBhcmUgZHVtbXkgdmFyaWFibGVzCmJyZmdhbV8xPC1nYW0oYmFkaGVhbHRoIH4gaG91cnNvZmNhcmUrIGNhcmd2aW5nKyBtYXJzdCtlZHVjK3JhY2VfZXRoKyBzKGhlYWx0aGRheXMpLAogICAgICAgICAgICAgICBkYXRhPWhhcmR0b2dldGIsCiAgICAgICAgICAgIHdlaWdodHMgPSBsbGNwd3QvbWVhbihsbGNwd3QsIG5hLnJtPVQpLCAjc2NhbGVzIHRvIG1lYW4gb2YgMQogICAgICAgICAgICBmYW1pbHk9Ymlub21pYWwpCnN1bW1hcnkoYnJmZ2FtXzEpCmBgYAoKYGBge3IsIHdhcm5pbmc9RkFMU0V9CnBsb3QoYnJmZ2FtXzEpCmBgYAoKCgoKCmBgYHtyfQphbm92YSggYnJmZ2FtXzEsCiAgICAgICBicmZnYW0sCiAgICAgICB0ZXN0PSJDaGlzcSIpCmBgYAoKYGBge3J9CmxpYnJhcnkoc3VydmV5KQpkZXM8LXN2eWRlc2lnbihpZHMgPSB+MSwKICAgICAgICAgICAgICAgc3RhdGE9fnN0cmF0YSwKICAgICAgICAgICAgICAgd2VpZ2h0cyA9IH4gbGxjcHd0LAogICAgICAgICAgICAgICBkYXRhPWhhcmR0b2dldCkKCmV4MTwtc3Z5Z2xtKGJhZGhlYWx0aCB+IGNhcmd2aW5nKyBtYXJzdCtlZHVjK3JhY2VfZXRoK2hlYWx0aGRheXMsCiAgICBmYW1pbHk9Z2F1c3NpYW4sCiAgICBkZXMpCgpzdW1tYXJ5KGV4MSkKYGBgCgo=