rm(list=ls())

1 Packages

library(tidyverse)
library(lme4)

2 Input

load(file="H:/processed_data/df_mmfc.rda")

load(file="H:/processed_data/df_mmfc_r2.rda")

load(file="H:/processed_data/df_noother.rda")

3 Non-linear effects of t

df_mmfc$t2 <- df_mmfc$t^2
df_mmfc$t3 <- df_mmfc$t^3
df_mmfc$t4 <- df_mmfc$t^4
df_mmfc$t5 <- df_mmfc$t^5
df_mmfc$t6 <- df_mmfc$t^6

4 Check linearity t and log real pay

linearmod <- lm(log_realpay ~ t, data=df_mmfc)

summary(linearmod)

ggplot(broom::augment(linearmod), aes(t, log_realpay)) +
 geom_point() +
 stat_smooth(method="lm", se=FALSE) +
 geom_segment(aes(xend = t, yend = .fitted), color="red", size=0.3)
par(mfrow = c(2,2))
plot(linearmod)
lm1 <- lm(log_realpay ~ t, data=df_mmfc)
lm2 <- lm(log_realpay ~ t + t2, data=df_mmfc)
lm3 <- lm(log_realpay ~ t + t2 + t3, data=df_mmfc)
lm4 <- lm(log_realpay ~ t + t2 + t3 + t4, data=df_mmfc)
lm5 <- lm(log_realpay ~ t + t2 + t3 + t4 + t5, data=df_mmfc)
lm6 <- lm(log_realpay ~ t + t2 + t3 + t4 + t5 + t6, data=df_mmfc)

AIC(lm1)
AIC(lm2)
AIC(lm3)
AIC(lm4)
AIC(lm5)
AIC(lm6)

5 Some releveling

levels(as.factor(df_mmfc$phd_disci))
summary(as.factor(df_mmfc$phd_disci))

df_mmfc$phd_disci <- factor(df_mmfc$phd_disci, levels=c("Health sciences", "Social sciences", "Natural sciences and mathematics", "Engineering", "Humanities"))

df_mmfc <- df_mmfc %>% 
  mutate(gender = ifelse(gender==1, "men", "women"))

df_mmfc$gender <- factor(df_mmfc$gender, levels=c("men", "women"))


df_mmfc$temporary_emp <- haven::zap_labels(df_mmfc$temporary_emp)

6 Overall - pay

# Null model: random intercept
M0 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

# Compute ICC
icc_ip <- as.data.frame(VarCorr(M0))[4]
icc <- icc_ip[1,1] / sum(icc_ip)

# M1: Transition effect and controls
M1 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)


# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
M2 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + as.factor(child_u5)*as.factor(gender) + child_u5_b*as.factor(gender) + basehours_month*as.factor(gender) + basehours_month_b*as.factor(gender) + as.factor(temporary_emp)*as.factor(gender) + temporary_emp_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + child_u5_b*t*as.factor(gender) + basehours_month_b*t*as.factor(gender) + temporary_emp_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

7 By gender: pay

Creating separate datasets for men and women

df_men <- df_mmfc %>% filter(gender=="men")
df_wom <- df_mmfc %>% filter(gender=="women")

7.1 MEN

# Null model: random intercept
M0m <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# Compute ICC
icc_ip <- as.data.frame(VarCorr(M0m))[4]
icc_m <- icc_ip[1,1] / sum(icc_ip)

# M1: Transition effect and controls
M1m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)


# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
M2m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

7.2 WOMEN

# Null model: random intercept
M0w <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

# Compute ICC
icc_ip <- as.data.frame(VarCorr(M0w))[4]
icc_w <- icc_ip[1,1] / sum(icc_ip)

# M1: Transition effect and controls
M1w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
M2w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

8 Adding mechanisms step-by-step

8.1 Discipline

M2_disci <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

# men
M2m_disci <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# women
M2w_disci <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

8.2 Child < 5

M2_child <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + as.factor(child_u5)*as.factor(gender) + child_u5_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + child_u5_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

# men
M2m_child <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# women
M2w_child <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

8.3 Hours

M2_hrs <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + as.factor(child_u5)*as.factor(gender) + child_u5_b*as.factor(gender) + basehours_month*as.factor(gender) + basehours_month_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + child_u5_b*t*as.factor(gender) + basehours_month_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

# men
M2m_hrs <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# women
M2w_hrs <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

8.4 Temporary employment

(These are the original models)

9 Robustness checks

9.1 R5: Shorter career span (included as supplementary analysis)

df_mmfc %>%
  filter(t<6) -> df_mmfc_r5


df_men_r5 <- df_mmfc_r5 %>% filter(gender=="men")
df_wom_r5 <- df_mmfc_r5 %>% filter(gender=="women")

Men

# MAX 5 YEARS POST-PHD
# M0
R5_M0m <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men_r5)

# M1
R5_M1m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men_r5)

# M2
R5_M2m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men_r5)

Women

# MAX 5 YEARS POST-PHD
# M0
R5_M0w <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom_r5)

# M1
R5_M1w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom_r5)

# M2
R5_M2w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom_r5)

Overall results

# MAX 5 YEARS POST-PHD
# M0
R5_M0 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc_r5)

# M1
R5_M1 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc_r5)

# M2
R5_M2 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + as.factor(child_u5)*as.factor(gender) + child_u5_b*as.factor(gender) + basehours_month*as.factor(gender) + basehours_month_b*as.factor(gender) + as.factor(temporary_emp)*as.factor(gender) + temporary_emp_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + child_u5_b*t*as.factor(gender) + basehours_month_b*t*as.factor(gender) + temporary_emp_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc_r5)

10 Transition * t^2 / t^3

# OVERALL 
# Null model: random intercept
R7_M0 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)


# M1: Transition effect and controls
R7_M1 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + as.factor(trans_lt)*t2*as.factor(gender) + trans_lt_b*t2*as.factor(gender) + as.factor(trans_lt)*t3*as.factor(gender) + trans_lt_b*t3*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R7_M2 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + as.factor(child_u5)*as.factor(gender) + child_u5_b*as.factor(gender) + basehours_month*as.factor(gender) + basehours_month_b*as.factor(gender) + as.factor(temporary_emp)*as.factor(gender) + temporary_emp_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + as.factor(trans_lt)*t2*as.factor(gender) + trans_lt_b*t2*as.factor(gender) + as.factor(trans_lt)*t3*as.factor(gender) + trans_lt_b*t3*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + child_u5_b*t*as.factor(gender) + basehours_month_b*t*as.factor(gender) + temporary_emp_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)


# BY GENDER

# MEN

# Null model: random intercept
R7_M0m <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# M1: Transition effect and controls
R7_M1m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + as.factor(trans_lt)*t2 + trans_lt_b*t2 + as.factor(trans_lt)*t3 + trans_lt_b*t3 + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R7_M2m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t  + as.factor(trans_lt)*t2 + trans_lt_b*t2 + as.factor(trans_lt)*t3 + trans_lt_b*t3 + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# WOMEN

# Null model: random intercept
R7_M0w <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

# M1: Transition effect and controls
R7_M1w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + as.factor(trans_lt)*t2 + trans_lt_b*t2 + as.factor(trans_lt)*t3 + trans_lt_b*t3 + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R7_M2w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + as.factor(trans_lt)*t2 + trans_lt_b*t2 + as.factor(trans_lt)*t3 + trans_lt_b*t3 + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

11 Log(hourly wage)

# BY GENDER: MEN
# Null model: random intercept
R10_M0m <- lmer(log_realwage ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# M1: Transition effect and controls
R10_M1m <- lmer(log_realwage ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R10_M2m <- lmer(log_realwage ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men)

# BY GENDER: WOMEN
# Null model: random intercept
R10_M0w <- lmer(log_realwage ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

# M1: Transition effect and controls
R10_M1w <- lmer(log_realwage ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R10_M2w <- lmer(log_realwage ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b +  as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(otherjob) + otherjob_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + otherjob_b*t + phd_disci*t + child_u5_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom)


# OVERALL
# Null model: random intercept
R10_M0 <- lmer(log_realwage ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

# M1: Transition effect and controls
R10_M1 <- lmer(log_realwage ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R10_M2 <- lmer(log_realwage ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + as.factor(child_u5)*as.factor(gender) + child_u5_b*as.factor(gender) + as.factor(temporary_emp)*as.factor(gender) + temporary_emp_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(otherjob)*as.factor(gender) + otherjob_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + otherjob_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + child_u5_b*t*as.factor(gender) + temporary_emp_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_mmfc)

12 No other job

df_noother$t2 <- df_noother$t^2
df_noother$t3 <- df_noother$t^3
df_noother$t4 <- df_noother$t^4
df_noother$t5 <- df_noother$t^5
df_noother$t6 <- df_noother$t^6

df_noother$phd_disci <- factor(df_noother$phd_disci, levels=c("Health sciences", "Social sciences", "Natural sciences and mathematics", "Engineering", "Humanities"))

df_noother$temporary_emp <- haven::zap_labels(df_noother$temporary_emp)

df_noother %>% filter(gender=="men") -> df_men_noo
df_noother %>% filter(gender=="women") -> df_wom_noo


# OVERALL 
# Null model: random intercept
R9_M0 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_noother)

# M1: Transition effect and controls
R9_M1 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) + as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_noother)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R9_M2 <- lmer(log_realpay ~ 1 + t*as.factor(gender) + t2*as.factor(gender) + t3*as.factor(gender) + as.factor(trans_st)*as.factor(gender) + as.factor(trans_lt)*as.factor(gender) + trans_lt_b*as.factor(gender) + as.factor(phd_disci)*as.factor(gender) + as.factor(child_u5)*as.factor(gender) + child_u5_b*as.factor(gender) + basehours_month*as.factor(gender) + basehours_month_b*as.factor(gender) + as.factor(temporary_emp)*as.factor(gender) + temporary_emp_b*as.factor(gender) + phd_coh*as.factor(gender) + phd_sat*as.factor(gender) + as.factor(partnered)*as.factor(gender) + partnered_b*as.factor(gender) + as.factor(sector_gov)*as.factor(gender) + as.factor(sector_nonpr)*as.factor(gender) + sector_gov_b*as.factor(gender) + sector_nonpr_b*as.factor(gender) + break_job*as.factor(gender) + break_job_b*as.factor(gender) + abroad_time*as.factor(gender) + abroad_time_b*as.factor(gender) +  as.factor(trans_lt)*t*as.factor(gender) + trans_lt_b*t*as.factor(gender) + phd_coh*t*as.factor(gender) + phd_sat*t*as.factor(gender) + partnered_b*t*as.factor(gender) + sector_gov_b*t*as.factor(gender) + sector_nonpr_b*t*as.factor(gender) + break_job_b*t*as.factor(gender) + abroad_time_b*t*as.factor(gender) + phd_disci*t*as.factor(gender) + child_u5_b*t*as.factor(gender) + basehours_month_b*t*as.factor(gender) + temporary_emp_b*t*as.factor(gender) + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_noother)

# BY GENDER

# MEN

# Null model: random intercept
R9_M0m <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men_noo)

# M1: Transition effect and controls
R9_M1m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men_noo)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R9_M2m <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(trans_lt)*t + trans_lt_b*t  + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_men_noo)

# WOMEN

# Null model: random intercept
R9_M0w <- lmer(log_realpay ~ 1 + t + t2 + t3 + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom_noo)

# M1: Transition effect and controls
R9_M1w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom_noo)

# M2: Adding explanatory variables (hours worked, discipline, parental status, temporary contract)
R9_M2w <- lmer(log_realpay ~ 1 + t + t2 + t3 + as.factor(trans_st) + as.factor(trans_lt) + trans_lt_b + as.factor(phd_disci) + as.factor(child_u5) + child_u5_b + basehours_month + basehours_month_b + as.factor(temporary_emp) + temporary_emp_b + phd_coh + phd_sat + as.factor(partnered) + partnered_b + as.factor(sector_gov) + as.factor(sector_nonpr) + sector_gov_b + sector_nonpr_b + break_job + break_job_b + abroad_time + abroad_time_b + as.factor(trans_lt)*t + trans_lt_b*t + phd_coh*t + phd_sat*t + partnered_b*t + sector_gov_b*t + sector_nonpr_b*t + break_job_b*t + abroad_time_b*t +  phd_disci*t + child_u5_b*t + basehours_month_b*t + temporary_emp_b*t + (1 + t + t2 | RINPERSOON) + (-1 + t3 | RINPERSOON), data=df_wom_noo)
LS0tDQp0aXRsZTogIkxlYXZpbmcgZm9yIG1vcmUgb3Igc2V0dGxpbmcgZm9yIGxlc3M6IG1haW4gYW5hbHlzZXMgKGxvZyBtb250aGx5IHBheSkiDQpkYXRlOiAiTGFzdCBjb21waWxlZCBvbiBgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY3NzOiB0d2Vha3MuY3NzDQogICAgdG9jOiAgdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogc2hvdw0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KLS0tDQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCnJtKGxpc3Q9bHMoKSkNCg0KYGBgDQoNCg0KDQojIFBhY2thZ2VzDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobG1lNCkNCg0KYGBgDQoNCg0KDQojIElucHV0IA0KDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQpsb2FkKGZpbGU9Ikg6L3Byb2Nlc3NlZF9kYXRhL2RmX21tZmMucmRhIikNCg0KbG9hZChmaWxlPSJIOi9wcm9jZXNzZWRfZGF0YS9kZl9tbWZjX3IyLnJkYSIpDQoNCmxvYWQoZmlsZT0iSDovcHJvY2Vzc2VkX2RhdGEvZGZfbm9vdGhlci5yZGEiKQ0KDQoNCg0KYGBgDQoNCg0KDQojIE5vbi1saW5lYXIgZWZmZWN0cyBvZiB0DQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCmRmX21tZmMkdDIgPC0gZGZfbW1mYyR0XjINCmRmX21tZmMkdDMgPC0gZGZfbW1mYyR0XjMNCmRmX21tZmMkdDQgPC0gZGZfbW1mYyR0XjQNCmRmX21tZmMkdDUgPC0gZGZfbW1mYyR0XjUNCmRmX21tZmMkdDYgPC0gZGZfbW1mYyR0XjYNCg0KYGBgDQoNCg0KDQojIENoZWNrIGxpbmVhcml0eSB0IGFuZCBsb2cgcmVhbCBwYXkNCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KbGluZWFybW9kIDwtIGxtKGxvZ19yZWFscGF5IH4gdCwgZGF0YT1kZl9tbWZjKQ0KDQpzdW1tYXJ5KGxpbmVhcm1vZCkNCg0KZ2dwbG90KGJyb29tOjphdWdtZW50KGxpbmVhcm1vZCksIGFlcyh0LCBsb2dfcmVhbHBheSkpICsNCiBnZW9tX3BvaW50KCkgKw0KIHN0YXRfc21vb3RoKG1ldGhvZD0ibG0iLCBzZT1GQUxTRSkgKw0KIGdlb21fc2VnbWVudChhZXMoeGVuZCA9IHQsIHllbmQgPSAuZml0dGVkKSwgY29sb3I9InJlZCIsIHNpemU9MC4zKQ0KDQpgYGANCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KcGFyKG1mcm93ID0gYygyLDIpKQ0KcGxvdChsaW5lYXJtb2QpDQoNCmBgYA0KDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQpsbTEgPC0gbG0obG9nX3JlYWxwYXkgfiB0LCBkYXRhPWRmX21tZmMpDQpsbTIgPC0gbG0obG9nX3JlYWxwYXkgfiB0ICsgdDIsIGRhdGE9ZGZfbW1mYykNCmxtMyA8LSBsbShsb2dfcmVhbHBheSB+IHQgKyB0MiArIHQzLCBkYXRhPWRmX21tZmMpDQpsbTQgPC0gbG0obG9nX3JlYWxwYXkgfiB0ICsgdDIgKyB0MyArIHQ0LCBkYXRhPWRmX21tZmMpDQpsbTUgPC0gbG0obG9nX3JlYWxwYXkgfiB0ICsgdDIgKyB0MyArIHQ0ICsgdDUsIGRhdGE9ZGZfbW1mYykNCmxtNiA8LSBsbShsb2dfcmVhbHBheSB+IHQgKyB0MiArIHQzICsgdDQgKyB0NSArIHQ2LCBkYXRhPWRmX21tZmMpDQoNCkFJQyhsbTEpDQpBSUMobG0yKQ0KQUlDKGxtMykNCkFJQyhsbTQpDQpBSUMobG01KQ0KQUlDKGxtNikNCg0KYGBgDQoNCg0KDQojIFNvbWUgcmVsZXZlbGluZyANCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KbGV2ZWxzKGFzLmZhY3RvcihkZl9tbWZjJHBoZF9kaXNjaSkpDQpzdW1tYXJ5KGFzLmZhY3RvcihkZl9tbWZjJHBoZF9kaXNjaSkpDQoNCmRmX21tZmMkcGhkX2Rpc2NpIDwtIGZhY3RvcihkZl9tbWZjJHBoZF9kaXNjaSwgbGV2ZWxzPWMoIkhlYWx0aCBzY2llbmNlcyIsICJTb2NpYWwgc2NpZW5jZXMiLCAiTmF0dXJhbCBzY2llbmNlcyBhbmQgbWF0aGVtYXRpY3MiLCAiRW5naW5lZXJpbmciLCAiSHVtYW5pdGllcyIpKQ0KDQpkZl9tbWZjIDwtIGRmX21tZmMgJT4lIA0KICBtdXRhdGUoZ2VuZGVyID0gaWZlbHNlKGdlbmRlcj09MSwgIm1lbiIsICJ3b21lbiIpKQ0KDQpkZl9tbWZjJGdlbmRlciA8LSBmYWN0b3IoZGZfbW1mYyRnZW5kZXIsIGxldmVscz1jKCJtZW4iLCAid29tZW4iKSkNCg0KDQpkZl9tbWZjJHRlbXBvcmFyeV9lbXAgPC0gaGF2ZW46OnphcF9sYWJlbHMoZGZfbW1mYyR0ZW1wb3JhcnlfZW1wKQ0KDQpgYGANCg0KDQoNCg0KIyBPdmVyYWxsIC0gcGF5DQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCiMgTnVsbCBtb2RlbDogcmFuZG9tIGludGVyY2VwdA0KTTAgPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0KmFzLmZhY3RvcihnZW5kZXIpICsgdDIqYXMuZmFjdG9yKGdlbmRlcikgKyB0Myphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmMpDQoNCiMgQ29tcHV0ZSBJQ0MNCmljY19pcCA8LSBhcy5kYXRhLmZyYW1lKFZhckNvcnIoTTApKVs0XQ0KaWNjIDwtIGljY19pcFsxLDFdIC8gc3VtKGljY19pcCkNCg0KIyBNMTogVHJhbnNpdGlvbiBlZmZlY3QgYW5kIGNvbnRyb2xzDQpNMSA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQqYXMuZmFjdG9yKGdlbmRlcikgKyB0Miphcy5mYWN0b3IoZ2VuZGVyKSArIHQzKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX3N0KSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmMpDQoNCg0KIyBNMjogQWRkaW5nIGV4cGxhbmF0b3J5IHZhcmlhYmxlcyAoaG91cnMgd29ya2VkLCBkaXNjaXBsaW5lLCBwYXJlbnRhbCBzdGF0dXMsIHRlbXBvcmFyeSBjb250cmFjdCkNCk0yIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfc3QpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihjaGlsZF91NSkqYXMuZmFjdG9yKGdlbmRlcikgKyBjaGlsZF91NV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYmFzZWhvdXJzX21vbnRoKmFzLmZhY3RvcihnZW5kZXIpICsgYmFzZWhvdXJzX21vbnRoX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodGVtcG9yYXJ5X2VtcCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0ZW1wb3JhcnlfZW1wX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX3NhdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihwYXJ0bmVyZWQpKmFzLmZhY3RvcihnZW5kZXIpICsgcGFydG5lcmVkX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9nb3ZfYiphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9ub25wcl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZSphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Iob3RoZXJqb2IpKmFzLmZhY3RvcihnZW5kZXIpICsgb3RoZXJqb2JfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9jb2gqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9ub25wcl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBicmVha19qb2JfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWVfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgb3RoZXJqb2JfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2Rpc2NpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBjaGlsZF91NV9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBiYXNlaG91cnNfbW9udGhfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgdGVtcG9yYXJ5X2VtcF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tbWZjKQ0KDQpgYGANCg0KDQoNCg0KIyBCeSBnZW5kZXI6IHBheQ0KDQoNCkNyZWF0aW5nIHNlcGFyYXRlIGRhdGFzZXRzIGZvciBtZW4gYW5kIHdvbWVuDQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCmRmX21lbiA8LSBkZl9tbWZjICU+JSBmaWx0ZXIoZ2VuZGVyPT0ibWVuIikNCmRmX3dvbSA8LSBkZl9tbWZjICU+JSBmaWx0ZXIoZ2VuZGVyPT0id29tZW4iKQ0KIA0KYGBgDQoNCg0KDQojIyBNRU4NCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KIyBOdWxsIG1vZGVsOiByYW5kb20gaW50ZXJjZXB0DQpNMG0gPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21lbikNCg0KIyBDb21wdXRlIElDQw0KaWNjX2lwIDwtIGFzLmRhdGEuZnJhbWUoVmFyQ29ycihNMG0pKVs0XQ0KaWNjX20gPC0gaWNjX2lwWzEsMV0gLyBzdW0oaWNjX2lwKQ0KDQojIE0xOiBUcmFuc2l0aW9uIGVmZmVjdCBhbmQgY29udHJvbHMNCk0xbSA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBwaGRfY29oKnQgKyBwaGRfc2F0KnQgKyBwYXJ0bmVyZWRfYip0ICsgc2VjdG9yX2dvdl9iKnQgKyBzZWN0b3Jfbm9ucHJfYip0ICsgYnJlYWtfam9iX2IqdCArIGFicm9hZF90aW1lX2IqdCArIG90aGVyam9iX2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21lbikNCg0KDQojIE0yOiBBZGRpbmcgZXhwbGFuYXRvcnkgdmFyaWFibGVzIChob3VycyB3b3JrZWQsIGRpc2NpcGxpbmUsIHBhcmVudGFsIHN0YXR1cywgdGVtcG9yYXJ5IGNvbnRyYWN0KQ0KTTJtIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSArIGFzLmZhY3RvcihjaGlsZF91NSkgKyBjaGlsZF91NV9iICsgYmFzZWhvdXJzX21vbnRoICsgYmFzZWhvdXJzX21vbnRoX2IgKyBhcy5mYWN0b3IodGVtcG9yYXJ5X2VtcCkgKyB0ZW1wb3JhcnlfZW1wX2IgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgcGhkX2Rpc2NpKnQgKyBjaGlsZF91NV9iKnQgKyBiYXNlaG91cnNfbW9udGhfYip0ICsgdGVtcG9yYXJ5X2VtcF9iKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tZW4pDQoNCmBgYA0KDQoNCg0KIyMgV09NRU4NCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KIyBOdWxsIG1vZGVsOiByYW5kb20gaW50ZXJjZXB0DQpNMHcgPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX3dvbSkNCg0KIyBDb21wdXRlIElDQw0KaWNjX2lwIDwtIGFzLmRhdGEuZnJhbWUoVmFyQ29ycihNMHcpKVs0XQ0KaWNjX3cgPC0gaWNjX2lwWzEsMV0gLyBzdW0oaWNjX2lwKQ0KDQojIE0xOiBUcmFuc2l0aW9uIGVmZmVjdCBhbmQgY29udHJvbHMNCk0xdyA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBwaGRfY29oKnQgKyBwaGRfc2F0KnQgKyBwYXJ0bmVyZWRfYip0ICsgc2VjdG9yX2dvdl9iKnQgKyArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfd29tKQ0KDQojIE0yOiBBZGRpbmcgZXhwbGFuYXRvcnkgdmFyaWFibGVzIChob3VycyB3b3JrZWQsIGRpc2NpcGxpbmUsIHBhcmVudGFsIHN0YXR1cywgdGVtcG9yYXJ5IGNvbnRyYWN0KQ0KTTJ3IDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSArIGFzLmZhY3RvcihjaGlsZF91NSkgKyBjaGlsZF91NV9iICsgYmFzZWhvdXJzX21vbnRoICsgYmFzZWhvdXJzX21vbnRoX2IgKyBhcy5mYWN0b3IodGVtcG9yYXJ5X2VtcCkgKyB0ZW1wb3JhcnlfZW1wX2IgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgcGhkX2Rpc2NpKnQgKyBjaGlsZF91NV9iKnQgKyBiYXNlaG91cnNfbW9udGhfYip0ICsgdGVtcG9yYXJ5X2VtcF9iKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl93b20pDQoNCmBgYA0KDQoNCg0KDQojIEFkZGluZyBtZWNoYW5pc21zIHN0ZXAtYnktc3RlcA0KDQoNCiMjIERpc2NpcGxpbmUNCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KTTJfZGlzY2kgPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0KmFzLmZhY3RvcihnZW5kZXIpICsgdDIqYXMuZmFjdG9yKGdlbmRlcikgKyB0Myphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19zdCkqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKmFzLmZhY3RvcihnZW5kZXIpICsgdHJhbnNfbHRfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihwaGRfZGlzY2kpKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9kaXNjaSp0KmFzLmZhY3RvcihnZW5kZXIpICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbW1mYykNCg0KIyBtZW4NCk0ybV9kaXNjaSA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgcGhkX2Rpc2NpKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tZW4pDQoNCiMgd29tZW4NCk0yd19kaXNjaSA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgcGhkX2Rpc2NpKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl93b20pDQoNCmBgYA0KDQoNCg0KIyMgQ2hpbGQgPCA1DQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCk0yX2NoaWxkIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfc3QpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihjaGlsZF91NSkqYXMuZmFjdG9yKGdlbmRlcikgKyBjaGlsZF91NV9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9kaXNjaSp0KmFzLmZhY3RvcihnZW5kZXIpICsgY2hpbGRfdTVfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbW1mYykNCg0KIyBtZW4NCk0ybV9jaGlsZCA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkgKyBhcy5mYWN0b3IoY2hpbGRfdTUpICsgY2hpbGRfdTVfYiArIHBoZF9jb2ggKyBwaGRfc2F0ICsgYXMuZmFjdG9yKHBhcnRuZXJlZCkgKyBwYXJ0bmVyZWRfYiArIGFzLmZhY3RvcihzZWN0b3JfZ292KSArIGFzLmZhY3RvcihzZWN0b3Jfbm9ucHIpICsgc2VjdG9yX2dvdl9iICsgc2VjdG9yX25vbnByX2IgKyBicmVha19qb2IgKyBicmVha19qb2JfYiArIGFicm9hZF90aW1lICsgYWJyb2FkX3RpbWVfYiArIGFzLmZhY3RvcihvdGhlcmpvYikgKyBvdGhlcmpvYl9iICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0ICsgdHJhbnNfbHRfYip0ICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgc2VjdG9yX25vbnByX2IqdCArIGJyZWFrX2pvYl9iKnQgKyBhYnJvYWRfdGltZV9iKnQgKyBvdGhlcmpvYl9iKnQgKyBwaGRfZGlzY2kqdCArIGNoaWxkX3U1X2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21lbikNCg0KIyB3b21lbg0KTTJ3X2NoaWxkIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSArIGFzLmZhY3RvcihjaGlsZF91NSkgKyBjaGlsZF91NV9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBwaGRfY29oKnQgKyBwaGRfc2F0KnQgKyBwYXJ0bmVyZWRfYip0ICsgc2VjdG9yX2dvdl9iKnQgKyBzZWN0b3Jfbm9ucHJfYip0ICsgYnJlYWtfam9iX2IqdCArIGFicm9hZF90aW1lX2IqdCArIG90aGVyam9iX2IqdCArIHBoZF9kaXNjaSp0ICsgY2hpbGRfdTVfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfd29tKQ0KDQpgYGANCg0KDQoNCiMjIEhvdXJzDQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCk0yX2hycyA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQqYXMuZmFjdG9yKGdlbmRlcikgKyB0Miphcy5mYWN0b3IoZ2VuZGVyKSArIHQzKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX3N0KSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IoY2hpbGRfdTUpKmFzLmZhY3RvcihnZW5kZXIpICsgY2hpbGRfdTVfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJhc2Vob3Vyc19tb250aCphcy5mYWN0b3IoZ2VuZGVyKSArIGJhc2Vob3Vyc19tb250aF9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9kaXNjaSp0KmFzLmZhY3RvcihnZW5kZXIpICsgY2hpbGRfdTVfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYmFzZWhvdXJzX21vbnRoX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmMpDQoNCiMgbWVuDQpNMm1faHJzIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSArIGFzLmZhY3RvcihjaGlsZF91NSkgKyBjaGlsZF91NV9iICsgYmFzZWhvdXJzX21vbnRoICsgYmFzZWhvdXJzX21vbnRoX2IgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgcGhkX2Rpc2NpKnQgKyBjaGlsZF91NV9iKnQgKyBiYXNlaG91cnNfbW9udGhfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbWVuKQ0KDQojIHdvbWVuDQpNMndfaHJzIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSArIGFzLmZhY3RvcihjaGlsZF91NSkgKyBjaGlsZF91NV9iICsgYmFzZWhvdXJzX21vbnRoICsgYmFzZWhvdXJzX21vbnRoX2IgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgcGhkX2Rpc2NpKnQgKyBjaGlsZF91NV9iKnQgKyBiYXNlaG91cnNfbW9udGhfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfd29tKQ0KDQpgYGANCg0KDQoNCiMjIFRlbXBvcmFyeSBlbXBsb3ltZW50DQoNCihUaGVzZSBhcmUgdGhlIG9yaWdpbmFsIG1vZGVscykNCg0KDQoNCg0KIyBSb2J1c3RuZXNzIGNoZWNrcw0KDQoNCiMjIFI1OiBTaG9ydGVyIGNhcmVlciBzcGFuIChpbmNsdWRlZCBhcyBzdXBwbGVtZW50YXJ5IGFuYWx5c2lzKQ0KDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQpkZl9tbWZjICU+JQ0KICBmaWx0ZXIodDw2KSAtPiBkZl9tbWZjX3I1DQoNCg0KZGZfbWVuX3I1IDwtIGRmX21tZmNfcjUgJT4lIGZpbHRlcihnZW5kZXI9PSJtZW4iKQ0KZGZfd29tX3I1IDwtIGRmX21tZmNfcjUgJT4lIGZpbHRlcihnZW5kZXI9PSJ3b21lbiIpDQoNCmBgYA0KDQoNCg0KTWVuIA0KDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQojIE1BWCA1IFlFQVJTIFBPU1QtUEhEDQojIE0wDQpSNV9NMG0gPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21lbl9yNSkNCg0KIyBNMQ0KUjVfTTFtIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbWVuX3I1KQ0KDQojIE0yDQpSNV9NMm0gPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArIGFzLmZhY3Rvcih0cmFuc19zdCkgKyBhcy5mYWN0b3IodHJhbnNfbHQpICsgdHJhbnNfbHRfYiArIGFzLmZhY3RvcihwaGRfZGlzY2kpICsgYXMuZmFjdG9yKGNoaWxkX3U1KSArIGNoaWxkX3U1X2IgKyBiYXNlaG91cnNfbW9udGggKyBiYXNlaG91cnNfbW9udGhfYiArIGFzLmZhY3Rvcih0ZW1wb3JhcnlfZW1wKSArIHRlbXBvcmFyeV9lbXBfYiArIHBoZF9jb2ggKyBwaGRfc2F0ICsgYXMuZmFjdG9yKHBhcnRuZXJlZCkgKyBwYXJ0bmVyZWRfYiArIGFzLmZhY3RvcihzZWN0b3JfZ292KSArIGFzLmZhY3RvcihzZWN0b3Jfbm9ucHIpICsgc2VjdG9yX2dvdl9iICsgc2VjdG9yX25vbnByX2IgKyBicmVha19qb2IgKyBicmVha19qb2JfYiArIGFicm9hZF90aW1lICsgYWJyb2FkX3RpbWVfYiArIGFzLmZhY3RvcihvdGhlcmpvYikgKyBvdGhlcmpvYl9iICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0ICsgdHJhbnNfbHRfYip0ICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgc2VjdG9yX25vbnByX2IqdCArIGJyZWFrX2pvYl9iKnQgKyBhYnJvYWRfdGltZV9iKnQgKyBvdGhlcmpvYl9iKnQgKyBwaGRfZGlzY2kqdCArIGNoaWxkX3U1X2IqdCArIGJhc2Vob3Vyc19tb250aF9iKnQgKyB0ZW1wb3JhcnlfZW1wX2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21lbl9yNSkNCg0KYGBgDQoNCg0KDQpXb21lbiANCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KIyBNQVggNSBZRUFSUyBQT1NULVBIRA0KIyBNMA0KUjVfTTB3IDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl93b21fcjUpDQoNCiMgTTENClI1X00xdyA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBwaGRfY29oKnQgKyBwaGRfc2F0KnQgKyBwYXJ0bmVyZWRfYip0ICsgc2VjdG9yX2dvdl9iKnQgKyBzZWN0b3Jfbm9ucHJfYip0ICsgYnJlYWtfam9iX2IqdCArIGFicm9hZF90aW1lX2IqdCArIG90aGVyam9iX2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX3dvbV9yNSkNCg0KIyBNMg0KUjVfTTJ3IDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSArIGFzLmZhY3RvcihjaGlsZF91NSkgKyBjaGlsZF91NV9iICsgYmFzZWhvdXJzX21vbnRoICsgYmFzZWhvdXJzX21vbnRoX2IgKyBhcy5mYWN0b3IodGVtcG9yYXJ5X2VtcCkgKyB0ZW1wb3JhcnlfZW1wX2IgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgcGhkX2Rpc2NpKnQgKyBjaGlsZF91NV9iKnQgKyBiYXNlaG91cnNfbW9udGhfYip0ICsgdGVtcG9yYXJ5X2VtcF9iKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl93b21fcjUpDQoNCmBgYA0KDQoNCg0KT3ZlcmFsbCByZXN1bHRzDQoNCg0KYGBge3IsIGV2YWw9RkFMU0V9DQoNCiMgTUFYIDUgWUVBUlMgUE9TVC1QSEQNCiMgTTANClI1X00wIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tbWZjX3I1KQ0KDQojIE0xDQpSNV9NMSA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQqYXMuZmFjdG9yKGdlbmRlcikgKyB0Miphcy5mYWN0b3IoZ2VuZGVyKSArIHQzKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX3N0KSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmNfcjUpDQoNCiMgTTINClI1X00yIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfc3QpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihjaGlsZF91NSkqYXMuZmFjdG9yKGdlbmRlcikgKyBjaGlsZF91NV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYmFzZWhvdXJzX21vbnRoKmFzLmZhY3RvcihnZW5kZXIpICsgYmFzZWhvdXJzX21vbnRoX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodGVtcG9yYXJ5X2VtcCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0ZW1wb3JhcnlfZW1wX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX3NhdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihwYXJ0bmVyZWQpKmFzLmZhY3RvcihnZW5kZXIpICsgcGFydG5lcmVkX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9nb3ZfYiphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9ub25wcl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZSphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Iob3RoZXJqb2IpKmFzLmZhY3RvcihnZW5kZXIpICsgb3RoZXJqb2JfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9jb2gqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9ub25wcl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBicmVha19qb2JfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWVfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgb3RoZXJqb2JfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2Rpc2NpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBjaGlsZF91NV9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBiYXNlaG91cnNfbW9udGhfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgdGVtcG9yYXJ5X2VtcF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tbWZjX3I1KQ0KDQpgYGANCg0KDQoNCg0KDQojIFRyYW5zaXRpb24gKiB0XjIgLyB0XjMNCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KIyBPVkVSQUxMIA0KIyBOdWxsIG1vZGVsOiByYW5kb20gaW50ZXJjZXB0DQpSN19NMCA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQqYXMuZmFjdG9yKGdlbmRlcikgKyB0Miphcy5mYWN0b3IoZ2VuZGVyKSArIHQzKmFzLmZhY3RvcihnZW5kZXIpICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbW1mYykNCg0KDQojIE0xOiBUcmFuc2l0aW9uIGVmZmVjdCBhbmQgY29udHJvbHMNClI3X00xIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfc3QpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX3NhdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihwYXJ0bmVyZWQpKmFzLmZhY3RvcihnZW5kZXIpICsgcGFydG5lcmVkX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9nb3ZfYiphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9ub25wcl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZSphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Iob3RoZXJqb2IpKmFzLmZhY3RvcihnZW5kZXIpICsgb3RoZXJqb2JfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqdDIqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQyKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0Myphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqdDMqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmMpDQoNCiMgTTI6IEFkZGluZyBleHBsYW5hdG9yeSB2YXJpYWJsZXMgKGhvdXJzIHdvcmtlZCwgZGlzY2lwbGluZSwgcGFyZW50YWwgc3RhdHVzLCB0ZW1wb3JhcnkgY29udHJhY3QpDQpSN19NMiA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQqYXMuZmFjdG9yKGdlbmRlcikgKyB0Miphcy5mYWN0b3IoZ2VuZGVyKSArIHQzKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX3N0KSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IoY2hpbGRfdTUpKmFzLmZhY3RvcihnZW5kZXIpICsgY2hpbGRfdTVfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJhc2Vob3Vyc19tb250aCphcy5mYWN0b3IoZ2VuZGVyKSArIGJhc2Vob3Vyc19tb250aF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRlbXBvcmFyeV9lbXApKmFzLmZhY3RvcihnZW5kZXIpICsgdGVtcG9yYXJ5X2VtcF9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQyKmFzLmZhY3RvcihnZW5kZXIpICsgdHJhbnNfbHRfYip0Miphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqdDMqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQzKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCp0KmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX3NhdCp0KmFzLmZhY3RvcihnZW5kZXIpICsgcGFydG5lcmVkX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9nb3ZfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX25vbnByX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBvdGhlcmpvYl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfZGlzY2kqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGNoaWxkX3U1X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGJhc2Vob3Vyc19tb250aF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0ZW1wb3JhcnlfZW1wX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmMpDQoNCg0KIyBCWSBHRU5ERVINCg0KIyBNRU4NCg0KIyBOdWxsIG1vZGVsOiByYW5kb20gaW50ZXJjZXB0DQpSN19NMG0gPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21lbikNCg0KIyBNMTogVHJhbnNpdGlvbiBlZmZlY3QgYW5kIGNvbnRyb2xzDQpSN19NMW0gPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArIGFzLmZhY3Rvcih0cmFuc19zdCkgKyBhcy5mYWN0b3IodHJhbnNfbHQpICsgdHJhbnNfbHRfYiArIHBoZF9jb2ggKyBwaGRfc2F0ICsgYXMuZmFjdG9yKHBhcnRuZXJlZCkgKyBwYXJ0bmVyZWRfYiArIGFzLmZhY3RvcihzZWN0b3JfZ292KSArIGFzLmZhY3RvcihzZWN0b3Jfbm9ucHIpICsgc2VjdG9yX2dvdl9iICsgc2VjdG9yX25vbnByX2IgKyBicmVha19qb2IgKyBicmVha19qb2JfYiArIGFicm9hZF90aW1lICsgYWJyb2FkX3RpbWVfYiArIGFzLmZhY3RvcihvdGhlcmpvYikgKyBvdGhlcmpvYl9iICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0ICsgdHJhbnNfbHRfYip0ICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0MiArIHRyYW5zX2x0X2IqdDIgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQzICsgdHJhbnNfbHRfYip0MyArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbWVuKQ0KDQojIE0yOiBBZGRpbmcgZXhwbGFuYXRvcnkgdmFyaWFibGVzIChob3VycyB3b3JrZWQsIGRpc2NpcGxpbmUsIHBhcmVudGFsIHN0YXR1cywgdGVtcG9yYXJ5IGNvbnRyYWN0KQ0KUjdfTTJtIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyBhcy5mYWN0b3IodHJhbnNfc3QpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSArIHRyYW5zX2x0X2IgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSArIGFzLmZhY3RvcihjaGlsZF91NSkgKyBjaGlsZF91NV9iICsgYmFzZWhvdXJzX21vbnRoICsgYmFzZWhvdXJzX21vbnRoX2IgKyBhcy5mYWN0b3IodGVtcG9yYXJ5X2VtcCkgKyB0ZW1wb3JhcnlfZW1wX2IgKyBwaGRfY29oICsgcGhkX3NhdCArIGFzLmZhY3RvcihwYXJ0bmVyZWQpICsgcGFydG5lcmVkX2IgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSArIHNlY3Rvcl9nb3ZfYiArIHNlY3Rvcl9ub25wcl9iICsgYnJlYWtfam9iICsgYnJlYWtfam9iX2IgKyBhYnJvYWRfdGltZSArIGFicm9hZF90aW1lX2IgKyBhcy5mYWN0b3Iob3RoZXJqb2IpICsgb3RoZXJqb2JfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCAgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQyICsgdHJhbnNfbHRfYip0MiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdDMgKyB0cmFuc19sdF9iKnQzICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgc2VjdG9yX25vbnByX2IqdCArIGJyZWFrX2pvYl9iKnQgKyBhYnJvYWRfdGltZV9iKnQgKyBvdGhlcmpvYl9iKnQgKyBwaGRfZGlzY2kqdCArIGNoaWxkX3U1X2IqdCArIGJhc2Vob3Vyc19tb250aF9iKnQgKyB0ZW1wb3JhcnlfZW1wX2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21lbikNCg0KIyBXT01FTg0KDQojIE51bGwgbW9kZWw6IHJhbmRvbSBpbnRlcmNlcHQNClI3X00wdyA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfd29tKQ0KDQojIE0xOiBUcmFuc2l0aW9uIGVmZmVjdCBhbmQgY29udHJvbHMNClI3X00xdyA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQyICsgdHJhbnNfbHRfYip0MiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdDMgKyB0cmFuc19sdF9iKnQzICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgKyBzZWN0b3Jfbm9ucHJfYip0ICsgYnJlYWtfam9iX2IqdCArIGFicm9hZF90aW1lX2IqdCArIG90aGVyam9iX2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX3dvbSkNCg0KIyBNMjogQWRkaW5nIGV4cGxhbmF0b3J5IHZhcmlhYmxlcyAoaG91cnMgd29ya2VkLCBkaXNjaXBsaW5lLCBwYXJlbnRhbCBzdGF0dXMsIHRlbXBvcmFyeSBjb250cmFjdCkNClI3X00ydyA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkgKyBhcy5mYWN0b3IoY2hpbGRfdTUpICsgY2hpbGRfdTVfYiArIGJhc2Vob3Vyc19tb250aCArIGJhc2Vob3Vyc19tb250aF9iICsgYXMuZmFjdG9yKHRlbXBvcmFyeV9lbXApICsgdGVtcG9yYXJ5X2VtcF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQyICsgdHJhbnNfbHRfYip0MiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdDMgKyB0cmFuc19sdF9iKnQzICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgc2VjdG9yX25vbnByX2IqdCArIGJyZWFrX2pvYl9iKnQgKyBhYnJvYWRfdGltZV9iKnQgKyBvdGhlcmpvYl9iKnQgKyBwaGRfZGlzY2kqdCArIGNoaWxkX3U1X2IqdCArIGJhc2Vob3Vyc19tb250aF9iKnQgKyB0ZW1wb3JhcnlfZW1wX2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX3dvbSkNCg0KYGBgDQoNCg0KDQoNCiMgTG9nKGhvdXJseSB3YWdlKQ0KDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQojIEJZIEdFTkRFUjogTUVODQojIE51bGwgbW9kZWw6IHJhbmRvbSBpbnRlcmNlcHQNClIxMF9NMG0gPC0gbG1lcihsb2dfcmVhbHdhZ2UgfiAxICsgdCArIHQyICsgdDMgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tZW4pDQoNCiMgTTE6IFRyYW5zaXRpb24gZWZmZWN0IGFuZCBjb250cm9scw0KUjEwX00xbSA8LSBsbWVyKGxvZ19yZWFsd2FnZSB+IDEgKyB0ICsgdDIgKyB0MyArIGFzLmZhY3Rvcih0cmFuc19zdCkgKyBhcy5mYWN0b3IodHJhbnNfbHQpICsgdHJhbnNfbHRfYiArIHBoZF9jb2ggKyBwaGRfc2F0ICsgYXMuZmFjdG9yKHBhcnRuZXJlZCkgKyBwYXJ0bmVyZWRfYiArIGFzLmZhY3RvcihzZWN0b3JfZ292KSArIGFzLmZhY3RvcihzZWN0b3Jfbm9ucHIpICsgc2VjdG9yX2dvdl9iICsgc2VjdG9yX25vbnByX2IgKyBicmVha19qb2IgKyBicmVha19qb2JfYiArIGFicm9hZF90aW1lICsgYWJyb2FkX3RpbWVfYiArIGFzLmZhY3RvcihvdGhlcmpvYikgKyBvdGhlcmpvYl9iICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0ICsgdHJhbnNfbHRfYip0ICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgc2VjdG9yX25vbnByX2IqdCArIGJyZWFrX2pvYl9iKnQgKyBhYnJvYWRfdGltZV9iKnQgKyBvdGhlcmpvYl9iKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tZW4pDQoNCiMgTTI6IEFkZGluZyBleHBsYW5hdG9yeSB2YXJpYWJsZXMgKGhvdXJzIHdvcmtlZCwgZGlzY2lwbGluZSwgcGFyZW50YWwgc3RhdHVzLCB0ZW1wb3JhcnkgY29udHJhY3QpDQpSMTBfTTJtIDwtIGxtZXIobG9nX3JlYWx3YWdlIH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkgKyBhcy5mYWN0b3IoY2hpbGRfdTUpICsgY2hpbGRfdTVfYiArIGFzLmZhY3Rvcih0ZW1wb3JhcnlfZW1wKSArIHRlbXBvcmFyeV9lbXBfYiArIHBoZF9jb2ggKyBwaGRfc2F0ICsgYXMuZmFjdG9yKHBhcnRuZXJlZCkgKyBwYXJ0bmVyZWRfYiArIGFzLmZhY3RvcihzZWN0b3JfZ292KSArIGFzLmZhY3RvcihzZWN0b3Jfbm9ucHIpICsgc2VjdG9yX2dvdl9iICsgc2VjdG9yX25vbnByX2IgKyBicmVha19qb2IgKyBicmVha19qb2JfYiArIGFicm9hZF90aW1lICsgYWJyb2FkX3RpbWVfYiArIGFzLmZhY3RvcihvdGhlcmpvYikgKyBvdGhlcmpvYl9iICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0ICsgdHJhbnNfbHRfYip0ICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgc2VjdG9yX25vbnByX2IqdCArIGJyZWFrX2pvYl9iKnQgKyBhYnJvYWRfdGltZV9iKnQgKyBvdGhlcmpvYl9iKnQgKyBwaGRfZGlzY2kqdCArIGNoaWxkX3U1X2IqdCArIHRlbXBvcmFyeV9lbXBfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbWVuKQ0KDQojIEJZIEdFTkRFUjogV09NRU4NCiMgTnVsbCBtb2RlbDogcmFuZG9tIGludGVyY2VwdA0KUjEwX00wdyA8LSBsbWVyKGxvZ19yZWFsd2FnZSB+IDEgKyB0ICsgdDIgKyB0MyArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX3dvbSkNCg0KIyBNMTogVHJhbnNpdGlvbiBlZmZlY3QgYW5kIGNvbnRyb2xzDQpSMTBfTTF3IDwtIGxtZXIobG9nX3JlYWx3YWdlIH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBwaGRfY29oKnQgKyBwaGRfc2F0KnQgKyBwYXJ0bmVyZWRfYip0ICsgc2VjdG9yX2dvdl9iKnQgKyArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgb3RoZXJqb2JfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfd29tKQ0KDQojIE0yOiBBZGRpbmcgZXhwbGFuYXRvcnkgdmFyaWFibGVzIChob3VycyB3b3JrZWQsIGRpc2NpcGxpbmUsIHBhcmVudGFsIHN0YXR1cywgdGVtcG9yYXJ5IGNvbnRyYWN0KQ0KUjEwX00ydyA8LSBsbWVyKGxvZ19yZWFsd2FnZSB+IDEgKyB0ICsgdDIgKyB0MyArIGFzLmZhY3Rvcih0cmFuc19zdCkgKyBhcy5mYWN0b3IodHJhbnNfbHQpICsgdHJhbnNfbHRfYiArIGFzLmZhY3RvcihwaGRfZGlzY2kpICsgYXMuZmFjdG9yKGNoaWxkX3U1KSArIGNoaWxkX3U1X2IgKyAgYXMuZmFjdG9yKHRlbXBvcmFyeV9lbXApICsgdGVtcG9yYXJ5X2VtcF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKG90aGVyam9iKSArIG90aGVyam9iX2IgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQgKyB0cmFuc19sdF9iKnQgKyBwaGRfY29oKnQgKyBwaGRfc2F0KnQgKyBwYXJ0bmVyZWRfYip0ICsgc2VjdG9yX2dvdl9iKnQgKyBzZWN0b3Jfbm9ucHJfYip0ICsgYnJlYWtfam9iX2IqdCArIGFicm9hZF90aW1lX2IqdCArIG90aGVyam9iX2IqdCArIHBoZF9kaXNjaSp0ICsgY2hpbGRfdTVfYip0ICsgdGVtcG9yYXJ5X2VtcF9iKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl93b20pDQoNCg0KIyBPVkVSQUxMDQojIE51bGwgbW9kZWw6IHJhbmRvbSBpbnRlcmNlcHQNClIxMF9NMCA8LSBsbWVyKGxvZ19yZWFsd2FnZSB+IDEgKyB0KmFzLmZhY3RvcihnZW5kZXIpICsgdDIqYXMuZmFjdG9yKGdlbmRlcikgKyB0Myphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmMpDQoNCiMgTTE6IFRyYW5zaXRpb24gZWZmZWN0IGFuZCBjb250cm9scw0KUjEwX00xIDwtIGxtZXIobG9nX3JlYWx3YWdlIH4gMSArIHQqYXMuZmFjdG9yKGdlbmRlcikgKyB0Miphcy5mYWN0b3IoZ2VuZGVyKSArIHQzKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX3N0KSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX21tZmMpDQoNCiMgTTI6IEFkZGluZyBleHBsYW5hdG9yeSB2YXJpYWJsZXMgKGhvdXJzIHdvcmtlZCwgZGlzY2lwbGluZSwgcGFyZW50YWwgc3RhdHVzLCB0ZW1wb3JhcnkgY29udHJhY3QpDQpSMTBfTTIgPC0gbG1lcihsb2dfcmVhbHdhZ2UgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfc3QpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGhkX2Rpc2NpKSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihjaGlsZF91NSkqYXMuZmFjdG9yKGdlbmRlcikgKyBjaGlsZF91NV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRlbXBvcmFyeV9lbXApKmFzLmZhY3RvcihnZW5kZXIpICsgdGVtcG9yYXJ5X2VtcF9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKG90aGVyam9iKSphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIG90aGVyam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9kaXNjaSp0KmFzLmZhY3RvcihnZW5kZXIpICsgY2hpbGRfdTVfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgdGVtcG9yYXJ5X2VtcF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tbWZjKQ0KDQpgYGANCg0KDQoNCg0KIyBObyBvdGhlciBqb2INCg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KZGZfbm9vdGhlciR0MiA8LSBkZl9ub290aGVyJHReMg0KZGZfbm9vdGhlciR0MyA8LSBkZl9ub290aGVyJHReMw0KZGZfbm9vdGhlciR0NCA8LSBkZl9ub290aGVyJHReNA0KZGZfbm9vdGhlciR0NSA8LSBkZl9ub290aGVyJHReNQ0KZGZfbm9vdGhlciR0NiA8LSBkZl9ub290aGVyJHReNg0KDQpkZl9ub290aGVyJHBoZF9kaXNjaSA8LSBmYWN0b3IoZGZfbm9vdGhlciRwaGRfZGlzY2ksIGxldmVscz1jKCJIZWFsdGggc2NpZW5jZXMiLCAiU29jaWFsIHNjaWVuY2VzIiwgIk5hdHVyYWwgc2NpZW5jZXMgYW5kIG1hdGhlbWF0aWNzIiwgIkVuZ2luZWVyaW5nIiwgIkh1bWFuaXRpZXMiKSkNCg0KZGZfbm9vdGhlciR0ZW1wb3JhcnlfZW1wIDwtIGhhdmVuOjp6YXBfbGFiZWxzKGRmX25vb3RoZXIkdGVtcG9yYXJ5X2VtcCkNCg0KZGZfbm9vdGhlciAlPiUgZmlsdGVyKGdlbmRlcj09Im1lbiIpIC0+IGRmX21lbl9ub28NCmRmX25vb3RoZXIgJT4lIGZpbHRlcihnZW5kZXI9PSJ3b21lbiIpIC0+IGRmX3dvbV9ub28NCg0KDQojIE9WRVJBTEwgDQojIE51bGwgbW9kZWw6IHJhbmRvbSBpbnRlcmNlcHQNClI5X00wIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9ub290aGVyKQ0KDQojIE0xOiBUcmFuc2l0aW9uIGVmZmVjdCBhbmQgY29udHJvbHMNClI5X00xIDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCphcy5mYWN0b3IoZ2VuZGVyKSArIHQyKmFzLmZhY3RvcihnZW5kZXIpICsgdDMqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfc3QpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX2x0KSphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX3NhdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3RvcihwYXJ0bmVyZWQpKmFzLmZhY3RvcihnZW5kZXIpICsgcGFydG5lcmVkX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX2dvdikqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3Ioc2VjdG9yX25vbnByKSphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9nb3ZfYiphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9ub25wcl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iKmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZSphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IodHJhbnNfbHQpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfY29oKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwaGRfc2F0KnQqYXMuZmFjdG9yKGdlbmRlcikgKyBwYXJ0bmVyZWRfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgc2VjdG9yX2dvdl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYnJlYWtfam9iX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIGFicm9hZF90aW1lX2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX25vb3RoZXIpDQoNCiMgTTI6IEFkZGluZyBleHBsYW5hdG9yeSB2YXJpYWJsZXMgKGhvdXJzIHdvcmtlZCwgZGlzY2lwbGluZSwgcGFyZW50YWwgc3RhdHVzLCB0ZW1wb3JhcnkgY29udHJhY3QpDQpSOV9NMiA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQqYXMuZmFjdG9yKGdlbmRlcikgKyB0Miphcy5mYWN0b3IoZ2VuZGVyKSArIHQzKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRyYW5zX3N0KSphcy5mYWN0b3IoZ2VuZGVyKSArIGFzLmZhY3Rvcih0cmFuc19sdCkqYXMuZmFjdG9yKGdlbmRlcikgKyB0cmFuc19sdF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IoY2hpbGRfdTUpKmFzLmZhY3RvcihnZW5kZXIpICsgY2hpbGRfdTVfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJhc2Vob3Vyc19tb250aCphcy5mYWN0b3IoZ2VuZGVyKSArIGJhc2Vob3Vyc19tb250aF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHRlbXBvcmFyeV9lbXApKmFzLmZhY3RvcihnZW5kZXIpICsgdGVtcG9yYXJ5X2VtcF9iKmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2NvaCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqYXMuZmFjdG9yKGdlbmRlcikgKyBhcy5mYWN0b3IocGFydG5lcmVkKSphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpKmFzLmZhY3RvcihnZW5kZXIpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3Jfbm9ucHJfYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYiphcy5mYWN0b3IoZ2VuZGVyKSArIGJyZWFrX2pvYl9iKmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWUqYXMuZmFjdG9yKGdlbmRlcikgKyBhYnJvYWRfdGltZV9iKmFzLmZhY3RvcihnZW5kZXIpICsgIGFzLmZhY3Rvcih0cmFuc19sdCkqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHRyYW5zX2x0X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9jb2gqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBoZF9zYXQqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHBhcnRuZXJlZF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBzZWN0b3JfZ292X2IqdCphcy5mYWN0b3IoZ2VuZGVyKSArIHNlY3Rvcl9ub25wcl9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBicmVha19qb2JfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgYWJyb2FkX3RpbWVfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgcGhkX2Rpc2NpKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBjaGlsZF91NV9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyBiYXNlaG91cnNfbW9udGhfYip0KmFzLmZhY3RvcihnZW5kZXIpICsgdGVtcG9yYXJ5X2VtcF9iKnQqYXMuZmFjdG9yKGdlbmRlcikgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9ub290aGVyKQ0KDQojIEJZIEdFTkRFUg0KDQojIE1FTg0KDQojIE51bGwgbW9kZWw6IHJhbmRvbSBpbnRlcmNlcHQNClI5X00wbSA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbWVuX25vbykNCg0KIyBNMTogVHJhbnNpdGlvbiBlZmZlY3QgYW5kIGNvbnRyb2xzDQpSOV9NMW0gPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArIGFzLmZhY3Rvcih0cmFuc19zdCkgKyBhcy5mYWN0b3IodHJhbnNfbHQpICsgdHJhbnNfbHRfYiArIHBoZF9jb2ggKyBwaGRfc2F0ICsgYXMuZmFjdG9yKHBhcnRuZXJlZCkgKyBwYXJ0bmVyZWRfYiArIGFzLmZhY3RvcihzZWN0b3JfZ292KSArIGFzLmZhY3RvcihzZWN0b3Jfbm9ucHIpICsgc2VjdG9yX2dvdl9iICsgc2VjdG9yX25vbnByX2IgKyBicmVha19qb2IgKyBicmVha19qb2JfYiArIGFicm9hZF90aW1lICsgYWJyb2FkX3RpbWVfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfbWVuX25vbykNCg0KIyBNMjogQWRkaW5nIGV4cGxhbmF0b3J5IHZhcmlhYmxlcyAoaG91cnMgd29ya2VkLCBkaXNjaXBsaW5lLCBwYXJlbnRhbCBzdGF0dXMsIHRlbXBvcmFyeSBjb250cmFjdCkNClI5X00ybSA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgYXMuZmFjdG9yKHBoZF9kaXNjaSkgKyBhcy5mYWN0b3IoY2hpbGRfdTUpICsgY2hpbGRfdTVfYiArIGJhc2Vob3Vyc19tb250aCArIGJhc2Vob3Vyc19tb250aF9iICsgYXMuZmFjdG9yKHRlbXBvcmFyeV9lbXApICsgdGVtcG9yYXJ5X2VtcF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0ICsgdHJhbnNfbHRfYip0ICArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgcGhkX2Rpc2NpKnQgKyBjaGlsZF91NV9iKnQgKyBiYXNlaG91cnNfbW9udGhfYip0ICsgdGVtcG9yYXJ5X2VtcF9iKnQgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl9tZW5fbm9vKQ0KDQojIFdPTUVODQoNCiMgTnVsbCBtb2RlbDogcmFuZG9tIGludGVyY2VwdA0KUjlfTTB3IDwtIGxtZXIobG9nX3JlYWxwYXkgfiAxICsgdCArIHQyICsgdDMgKyAoMSArIHQgKyB0MiB8IFJJTlBFUlNPT04pICsgKC0xICsgdDMgfCBSSU5QRVJTT09OKSwgZGF0YT1kZl93b21fbm9vKQ0KDQojIE0xOiBUcmFuc2l0aW9uIGVmZmVjdCBhbmQgY29udHJvbHMNClI5X00xdyA8LSBsbWVyKGxvZ19yZWFscGF5IH4gMSArIHQgKyB0MiArIHQzICsgYXMuZmFjdG9yKHRyYW5zX3N0KSArIGFzLmZhY3Rvcih0cmFuc19sdCkgKyB0cmFuc19sdF9iICsgcGhkX2NvaCArIHBoZF9zYXQgKyBhcy5mYWN0b3IocGFydG5lcmVkKSArIHBhcnRuZXJlZF9iICsgYXMuZmFjdG9yKHNlY3Rvcl9nb3YpICsgYXMuZmFjdG9yKHNlY3Rvcl9ub25wcikgKyBzZWN0b3JfZ292X2IgKyBzZWN0b3Jfbm9ucHJfYiArIGJyZWFrX2pvYiArIGJyZWFrX2pvYl9iICsgYWJyb2FkX3RpbWUgKyBhYnJvYWRfdGltZV9iICsgYXMuZmFjdG9yKHRyYW5zX2x0KSp0ICsgdHJhbnNfbHRfYip0ICsgcGhkX2NvaCp0ICsgcGhkX3NhdCp0ICsgcGFydG5lcmVkX2IqdCArIHNlY3Rvcl9nb3ZfYip0ICsgKyBzZWN0b3Jfbm9ucHJfYip0ICsgYnJlYWtfam9iX2IqdCArIGFicm9hZF90aW1lX2IqdCArICgxICsgdCArIHQyIHwgUklOUEVSU09PTikgKyAoLTEgKyB0MyB8IFJJTlBFUlNPT04pLCBkYXRhPWRmX3dvbV9ub28pDQoNCiMgTTI6IEFkZGluZyBleHBsYW5hdG9yeSB2YXJpYWJsZXMgKGhvdXJzIHdvcmtlZCwgZGlzY2lwbGluZSwgcGFyZW50YWwgc3RhdHVzLCB0ZW1wb3JhcnkgY29udHJhY3QpDQpSOV9NMncgPC0gbG1lcihsb2dfcmVhbHBheSB+IDEgKyB0ICsgdDIgKyB0MyArIGFzLmZhY3Rvcih0cmFuc19zdCkgKyBhcy5mYWN0b3IodHJhbnNfbHQpICsgdHJhbnNfbHRfYiArIGFzLmZhY3RvcihwaGRfZGlzY2kpICsgYXMuZmFjdG9yKGNoaWxkX3U1KSArIGNoaWxkX3U1X2IgKyBiYXNlaG91cnNfbW9udGggKyBiYXNlaG91cnNfbW9udGhfYiArIGFzLmZhY3Rvcih0ZW1wb3JhcnlfZW1wKSArIHRlbXBvcmFyeV9lbXBfYiArIHBoZF9jb2ggKyBwaGRfc2F0ICsgYXMuZmFjdG9yKHBhcnRuZXJlZCkgKyBwYXJ0bmVyZWRfYiArIGFzLmZhY3RvcihzZWN0b3JfZ292KSArIGFzLmZhY3RvcihzZWN0b3Jfbm9ucHIpICsgc2VjdG9yX2dvdl9iICsgc2VjdG9yX25vbnByX2IgKyBicmVha19qb2IgKyBicmVha19qb2JfYiArIGFicm9hZF90aW1lICsgYWJyb2FkX3RpbWVfYiArIGFzLmZhY3Rvcih0cmFuc19sdCkqdCArIHRyYW5zX2x0X2IqdCArIHBoZF9jb2gqdCArIHBoZF9zYXQqdCArIHBhcnRuZXJlZF9iKnQgKyBzZWN0b3JfZ292X2IqdCArIHNlY3Rvcl9ub25wcl9iKnQgKyBicmVha19qb2JfYip0ICsgYWJyb2FkX3RpbWVfYip0ICsgIHBoZF9kaXNjaSp0ICsgY2hpbGRfdTVfYip0ICsgYmFzZWhvdXJzX21vbnRoX2IqdCArIHRlbXBvcmFyeV9lbXBfYip0ICsgKDEgKyB0ICsgdDIgfCBSSU5QRVJTT09OKSArICgtMSArIHQzIHwgUklOUEVSU09PTiksIGRhdGE9ZGZfd29tX25vbykNCg0KDQpgYGANCg==


Copyright © 2025