TEORÍA

Los Modelos de Ecuaciones Estructurales son una tecnica de analisis de estadistica multivariada que permite analizar patrones complejos de relaciones entre variables, realizar comparaciones entre intragrupos y validar modelos teóricos y empíricos.

EJERCICIO 1 “Holzinger y Swineford”

Holzinger y Swineford realizaron examenes de habilidad mental a adolescentes de 7° y 8° de dos escuelas (Pasteur y Grand White)

La base de datos está incluida como paquete en R e incluye las siguientes columnas:

  • sex: Género (1= male, 2= female)
  • x1: Percepción visual
  • x2: Juego con cubos
  • x3: Juego con pastillas/espacial
  • x4: Comprensión de párrafos
  • x5: Completar oraciones
  • x6: Significado de palabras
  • x7: Sumas aceleradas
  • x8: Conto acelerado de puntos
  • x9: Discriminación acelerada de mayúsculas rectas y curvas

Se busca identificar que las relaciones entre las habilidades VISUAL (x1, x2, x3) , TEXTUAL (x4, x5, x6) , y VELOCIDAD (x7, x8, x9)

## INSTALACION DE PAQUETES Y LLAMAR LIBRERÍAS

#install.packages("lavaan")
library(lavaan)
#install.packages("lavaanPlot")
library(lavaanPlot)
#install.packages("readxl")
library(readxl)
#install.packages("dplyr")
library(dplyr)

# "LAVAAN" significa "Analisis de variables latentes"
## IMPORTAR BASE DE DATOS (usaremos una ya cargada en RStudio como ejemplos de bases de datos)

df1 <- HolzingerSwineford1939
## DESCRIPCION DE LOS DATOS (Entender la base de datos)
summary(df1)
##        id             sex            ageyr        agemo       
##  Min.   :  1.0   Min.   :1.000   Min.   :11   Min.   : 0.000  
##  1st Qu.: 82.0   1st Qu.:1.000   1st Qu.:12   1st Qu.: 2.000  
##  Median :163.0   Median :2.000   Median :13   Median : 5.000  
##  Mean   :176.6   Mean   :1.515   Mean   :13   Mean   : 5.375  
##  3rd Qu.:272.0   3rd Qu.:2.000   3rd Qu.:14   3rd Qu.: 8.000  
##  Max.   :351.0   Max.   :2.000   Max.   :16   Max.   :11.000  
##                                                               
##          school        grade             x1               x2       
##  Grant-White:145   Min.   :7.000   Min.   :0.6667   Min.   :2.250  
##  Pasteur    :156   1st Qu.:7.000   1st Qu.:4.1667   1st Qu.:5.250  
##                    Median :7.000   Median :5.0000   Median :6.000  
##                    Mean   :7.477   Mean   :4.9358   Mean   :6.088  
##                    3rd Qu.:8.000   3rd Qu.:5.6667   3rd Qu.:6.750  
##                    Max.   :8.000   Max.   :8.5000   Max.   :9.250  
##                    NA's   :1                                       
##        x3              x4              x5              x6        
##  Min.   :0.250   Min.   :0.000   Min.   :1.000   Min.   :0.1429  
##  1st Qu.:1.375   1st Qu.:2.333   1st Qu.:3.500   1st Qu.:1.4286  
##  Median :2.125   Median :3.000   Median :4.500   Median :2.0000  
##  Mean   :2.250   Mean   :3.061   Mean   :4.341   Mean   :2.1856  
##  3rd Qu.:3.125   3rd Qu.:3.667   3rd Qu.:5.250   3rd Qu.:2.7143  
##  Max.   :4.500   Max.   :6.333   Max.   :7.000   Max.   :6.1429  
##                                                                  
##        x7              x8               x9       
##  Min.   :1.304   Min.   : 3.050   Min.   :2.778  
##  1st Qu.:3.478   1st Qu.: 4.850   1st Qu.:4.750  
##  Median :4.087   Median : 5.500   Median :5.417  
##  Mean   :4.186   Mean   : 5.527   Mean   :5.374  
##  3rd Qu.:4.913   3rd Qu.: 6.100   3rd Qu.:6.083  
##  Max.   :7.435   Max.   :10.000   Max.   :9.250  
## 
str(df1)
## 'data.frame':    301 obs. of  15 variables:
##  $ id    : int  1 2 3 4 5 6 7 8 9 11 ...
##  $ sex   : int  1 2 2 1 2 2 1 2 2 2 ...
##  $ ageyr : int  13 13 13 13 12 14 12 12 13 12 ...
##  $ agemo : int  1 7 1 2 2 1 1 2 0 5 ...
##  $ school: Factor w/ 2 levels "Grant-White",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ grade : int  7 7 7 7 7 7 7 7 7 7 ...
##  $ x1    : num  3.33 5.33 4.5 5.33 4.83 ...
##  $ x2    : num  7.75 5.25 5.25 7.75 4.75 5 6 6.25 5.75 5.25 ...
##  $ x3    : num  0.375 2.125 1.875 3 0.875 ...
##  $ x4    : num  2.33 1.67 1 2.67 2.67 ...
##  $ x5    : num  5.75 3 1.75 4.5 4 3 6 4.25 5.75 5 ...
##  $ x6    : num  1.286 1.286 0.429 2.429 2.571 ...
##  $ x7    : num  3.39 3.78 3.26 3 3.7 ...
##  $ x8    : num  5.75 6.25 3.9 5.3 6.3 6.65 6.2 5.15 4.65 4.55 ...
##  $ x9    : num  6.36 7.92 4.42 4.86 5.92 ...

Tipos de fórmulas

  1. Regresión (~) : Variable que depende de otras
  2. Variables latentes (=~) : No se observa, se infiere
  3. Varianzas y covarianzas () : Relaciones entre variables latentes y observadas (varianza entre sí misma, covarianza entre otras)
  4. Intercepto (~1): Valor esperado cuando las demas variables son cero

modelo <- #Regresiones #Variables latentes #Varianzas y Covarianzas #Intercepto

# Estructurar el modelo

modelo1 <- '  #Regresiones
            #Variables latentes
            visual=~x1 + x2 + x3
            textual=~x4 + x5 + x6
            velocidad=~x7 + x8 + x9
            #Varianzas y COvarianzas
            #Intercepto
            '
# Generar analisis factorial comprobatorio/Confirmatorio ("CFA")

fit1 <- cfa(modelo1, df1)
summary(fit1)
## lavaan 0.7-2 ended normally after 35 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           301
## 
## Model Test User Model:
##                                                       
##   Test statistic                                85.306
##   Degrees of freedom                                24
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual =~                                           
##     x1                1.000                           
##     x2                0.554    0.100    5.554    0.000
##     x3                0.729    0.109    6.685    0.000
##   textual =~                                          
##     x4                1.000                           
##     x5                1.113    0.065   17.014    0.000
##     x6                0.926    0.055   16.703    0.000
##   velocidad =~                                        
##     x7                1.000                           
##     x8                1.180    0.165    7.152    0.000
##     x9                1.082    0.151    7.155    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual ~~                                           
##     textual           0.408    0.074    5.552    0.000
##     velocidad         0.262    0.056    4.660    0.000
##   textual ~~                                          
##     velocidad         0.173    0.049    3.518    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .x1                0.549    0.114    4.833    0.000
##    .x2                1.134    0.102   11.146    0.000
##    .x3                0.844    0.091    9.317    0.000
##    .x4                0.371    0.048    7.779    0.000
##    .x5                0.446    0.058    7.642    0.000
##    .x6                0.356    0.043    8.277    0.000
##    .x7                0.799    0.081    9.823    0.000
##    .x8                0.488    0.074    6.573    0.000
##    .x9                0.566    0.071    8.003    0.000
##     visual            0.809    0.145    5.564    0.000
##     textual           0.979    0.112    8.737    0.000
##     velocidad         0.384    0.086    4.451    0.000
lavaanPlot (fit1, coef=TRUE, cov=TRUE)
# Generar modelo de ECUACION ESTRUCTURAL ("SEM")

fit11 <- sem(modelo1, df1)
summary(fit11)
## lavaan 0.7-2 ended normally after 35 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           301
## 
## Model Test User Model:
##                                                       
##   Test statistic                                85.306
##   Degrees of freedom                                24
##   P-value (Chi-square)                           0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual =~                                           
##     x1                1.000                           
##     x2                0.554    0.100    5.554    0.000
##     x3                0.729    0.109    6.685    0.000
##   textual =~                                          
##     x4                1.000                           
##     x5                1.113    0.065   17.014    0.000
##     x6                0.926    0.055   16.703    0.000
##   velocidad =~                                        
##     x7                1.000                           
##     x8                1.180    0.165    7.152    0.000
##     x9                1.082    0.151    7.155    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   visual ~~                                           
##     textual           0.408    0.074    5.552    0.000
##     velocidad         0.262    0.056    4.660    0.000
##   textual ~~                                          
##     velocidad         0.173    0.049    3.518    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .x1                0.549    0.114    4.833    0.000
##    .x2                1.134    0.102   11.146    0.000
##    .x3                0.844    0.091    9.317    0.000
##    .x4                0.371    0.048    7.779    0.000
##    .x5                0.446    0.058    7.642    0.000
##    .x6                0.356    0.043    8.277    0.000
##    .x7                0.799    0.081    9.823    0.000
##    .x8                0.488    0.074    6.573    0.000
##    .x9                0.566    0.071    8.003    0.000
##     visual            0.809    0.145    5.564    0.000
##     textual           0.979    0.112    8.737    0.000
##     velocidad         0.384    0.086    4.451    0.000
lavaanPlot(fit11, coef=TRUE, cov=TRUE)

CONCLUSION

El modelo de 3 factores (visual, textual y velocidad) muestra un ajuste aceptable: CFI y TLI cercanos a .90-.93 y un SRMR bajo (~.06), aunque el RMSEA (~.09) sugiere que el modelo aún podría mejorarse. Las cargas factoriales de los 9 ítems sobre sus respectivos factores fueron significativas, confirmando que las habilidades visual, textual y de velocidad son dimensiones distintas pero correlacionadas entre sí. El resultado del CFA y del SEM (fit1 vs fit11) es idéntico, ya que al no definirse regresiones entre los factores, ambos modelos son estructuralmente equivalentes (solo se estiman las cargas y las covarianzas entre los 3 factores latentes).

EJERCICIO 2 “Democracia politica e INdustrialización”

La base de datos contiene distintas mediciones sobre la democracia politica e industrializacion en paises en desarrollo entre 1960 y 1965. La tabla incluye lo siguientes datos:

y1: Calificaciones sobre libertad de prensa y2: Libertad de la oposición politica en 1960 y3: Imparcialidad de elecciones en 1960 y4: Eficacia de la legislatura electa en 1960 y5: Calificaciones sobre libertad de prensa y6: Libertad de la oposición politica en 1965 y7: Imparcialidad de elecciones en 1965 y8: Eficacia de la legislatura electa en 1965 x1: PIB per capita en 1960 x2: Consumo de energía inanimada pér cápita en 1960 *x3: Porcentaje de la fuerza laboral en la industria …

dataframe2 <- PoliticalDemocracy
## DESCRIPCION DE LOS DATOS (Entender la base de datos)
summary(dataframe2)
##        y1               y2               y3               y4        
##  Min.   : 1.250   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 2.900   1st Qu.: 0.000   1st Qu.: 3.767   1st Qu.: 1.581  
##  Median : 5.400   Median : 3.333   Median : 6.667   Median : 3.333  
##  Mean   : 5.465   Mean   : 4.256   Mean   : 6.563   Mean   : 4.453  
##  3rd Qu.: 7.500   3rd Qu.: 8.283   3rd Qu.:10.000   3rd Qu.: 6.667  
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.000  
##        y5               y6               y7               y8        
##  Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 3.692   1st Qu.: 0.000   1st Qu.: 3.478   1st Qu.: 1.301  
##  Median : 5.000   Median : 2.233   Median : 6.667   Median : 3.333  
##  Mean   : 5.136   Mean   : 2.978   Mean   : 6.196   Mean   : 4.043  
##  3rd Qu.: 7.500   3rd Qu.: 4.207   3rd Qu.:10.000   3rd Qu.: 6.667  
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.000  
##        x1              x2              x3       
##  Min.   :3.784   Min.   :1.386   Min.   :1.002  
##  1st Qu.:4.477   1st Qu.:3.663   1st Qu.:2.300  
##  Median :5.075   Median :4.963   Median :3.568  
##  Mean   :5.054   Mean   :4.792   Mean   :3.558  
##  3rd Qu.:5.515   3rd Qu.:5.830   3rd Qu.:4.523  
##  Max.   :6.737   Max.   :7.872   Max.   :6.425
str(dataframe2)
## 'data.frame':    75 obs. of  11 variables:
##  $ y1: num  2.5 1.25 7.5 8.9 10 7.5 7.5 7.5 2.5 10 ...
##  $ y2: num  0 0 8.8 8.8 3.33 ...
##  $ y3: num  3.33 3.33 10 10 10 ...
##  $ y4: num  0 0 9.2 9.2 6.67 ...
##  $ y5: num  1.25 6.25 8.75 8.91 7.5 ...
##  $ y6: num  0 1.1 8.09 8.13 3.33 ...
##  $ y7: num  3.73 6.67 10 10 10 ...
##  $ y8: num  3.333 0.737 8.212 4.615 6.667 ...
##  $ x1: num  4.44 5.38 5.96 6.29 5.86 ...
##  $ x2: num  3.64 5.06 6.26 7.57 6.82 ...
##  $ x3: num  2.56 3.57 5.22 6.27 4.57 ...
modelo2 <- '  #Regresiones
            #Variables latentes
            democracia1960=~y1 + y2 + y3 + y4
            democracia1965=~y5 + y6 + y7 + y8
            industria1960=~x1 + x2 + x3
            #Varianzas y COvarianzas
            #Intercepto
            '

EJERCICIO 3 “Motivación Laboral”

La democracia cuenta con 8 derechos y libertades politicas…

  1. Libertad de formar organizaciones y unirse a ellas
  2. Libertad de expresion
  3. Derecho al voto
  4. Derecho de elegir cargos públicos
  5. Derecho de los líderes a competir por votos
  6. Libertad de tener fuentes alternativas de información
  7. Derecho de elecciones libres y justas
  8. Derecho de instituciones

En el libro de “WHY NATIONS FALL” los autores concluyen que son las mismas instituciones del país las que determinan el fracaso.

# Generar analisis factorial comprobatorio/Confirmatorio ("CFA")

fit2 <- cfa(modelo2, dataframe2)
summary(fit2)
## lavaan 0.7-2 ended normally after 47 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        25
## 
##   Number of observations                            75
## 
## Model Test User Model:
##                                                       
##   Test statistic                                72.462
##   Degrees of freedom                                41
##   P-value (Chi-square)                           0.002
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                     Estimate  Std.Err  z-value  P(>|z|)
##   democracia1960 =~                                    
##     y1                 1.000                           
##     y2                 1.354    0.175    7.755    0.000
##     y3                 1.044    0.150    6.961    0.000
##     y4                 1.300    0.138    9.412    0.000
##   democracia1965 =~                                    
##     y5                 1.000                           
##     y6                 1.258    0.164    7.651    0.000
##     y7                 1.282    0.158    8.137    0.000
##     y8                 1.310    0.154    8.529    0.000
##   industria1960 =~                                     
##     x1                 1.000                           
##     x2                 2.182    0.139   15.714    0.000
##     x3                 1.819    0.152   11.956    0.000
## 
## Covariances:
##                     Estimate  Std.Err  z-value  P(>|z|)
##   democracia1960 ~~                                    
##     democracia1965     4.487    0.911    4.924    0.000
##     industria1960      0.660    0.206    3.202    0.001
##   democracia1965 ~~                                    
##     industria1960      0.774    0.208    3.715    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .y1                1.942    0.395    4.910    0.000
##    .y2                6.490    1.185    5.479    0.000
##    .y3                5.340    0.943    5.662    0.000
##    .y4                2.887    0.610    4.731    0.000
##    .y5                2.390    0.447    5.351    0.000
##    .y6                4.343    0.796    5.456    0.000
##    .y7                3.510    0.668    5.252    0.000
##    .y8                2.940    0.586    5.019    0.000
##    .x1                0.082    0.020    4.180    0.000
##    .x2                0.118    0.070    1.689    0.091
##    .x3                0.467    0.090    5.174    0.000
##     democracia1960    4.845    1.088    4.453    0.000
##     democracia1965    4.345    1.051    4.134    0.000
##     industria1960     0.448    0.087    5.169    0.000
lavaanPlot (fit2, coef=TRUE, cov=TRUE)
# Generar modelo de ECUACION ESTRUCTURAL ("SEM")

fit22 <- sem(modelo2, dataframe2)
summary(fit22)
## lavaan 0.7-2 ended normally after 47 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        25
## 
##   Number of observations                            75
## 
## Model Test User Model:
##                                                       
##   Test statistic                                72.462
##   Degrees of freedom                                41
##   P-value (Chi-square)                           0.002
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                     Estimate  Std.Err  z-value  P(>|z|)
##   democracia1960 =~                                    
##     y1                 1.000                           
##     y2                 1.354    0.175    7.755    0.000
##     y3                 1.044    0.150    6.961    0.000
##     y4                 1.300    0.138    9.412    0.000
##   democracia1965 =~                                    
##     y5                 1.000                           
##     y6                 1.258    0.164    7.651    0.000
##     y7                 1.282    0.158    8.137    0.000
##     y8                 1.310    0.154    8.529    0.000
##   industria1960 =~                                     
##     x1                 1.000                           
##     x2                 2.182    0.139   15.714    0.000
##     x3                 1.819    0.152   11.956    0.000
## 
## Covariances:
##                     Estimate  Std.Err  z-value  P(>|z|)
##   democracia1960 ~~                                    
##     democracia1965     4.487    0.911    4.924    0.000
##     industria1960      0.660    0.206    3.202    0.001
##   democracia1965 ~~                                    
##     industria1960      0.774    0.208    3.715    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .y1                1.942    0.395    4.910    0.000
##    .y2                6.490    1.185    5.479    0.000
##    .y3                5.340    0.943    5.662    0.000
##    .y4                2.887    0.610    4.731    0.000
##    .y5                2.390    0.447    5.351    0.000
##    .y6                4.343    0.796    5.456    0.000
##    .y7                3.510    0.668    5.252    0.000
##    .y8                2.940    0.586    5.019    0.000
##    .x1                0.082    0.020    4.180    0.000
##    .x2                0.118    0.070    1.689    0.091
##    .x3                0.467    0.090    5.174    0.000
##     democracia1960    4.845    1.088    4.453    0.000
##     democracia1965    4.345    1.051    4.134    0.000
##     industria1960     0.448    0.087    5.169    0.000
lavaanPlot(fit22, coef=TRUE, cov=TRUE)

CONCLUSION

EJERCICIO 3 “Motivación Laboral”

Este ejercicio utiliza la base de datos Datos_SEM_Eng.xlsx, que contiene las respuestas de los colaboradores a los reactivos de:

  • Experiencias de recuperación (desapego psicológico “RPD”, relajación “RRE”, control sobre el tiempo libre “RCO” y dominio “RMA”)
  • Energía recuperada (“EN”)
  • Engagement laboral: vigor (“EVI”), dedicación (“EDE”) y absorción (“EAB”)
# Importar la base de datos (el archivo debe estar en el mismo folder que este .Rmd,
# o bien reemplazar la ruta por la que arroje file.choose())

# dataframe3 <- read_excel(file.choose())  # -> opción interactiva para elegir el archivo
dataframe3 <- read_excel("Datos_SEM_Eng.xlsx")

# Algunos nombres de columnas vienen con un espacio extra al final (ej. "RPD01 ");
# se limpian para que coincidan exactamente con los nombres usados en los modelos
names(dataframe3) <- trimws(names(dataframe3))
## DESCRIPCION DE LOS DATOS (Entender la base de datos)
summary(dataframe3)
##        ID             GEN             EXPER            EDAD      
##  Min.   :  1.0   Min.   :0.0000   Min.   : 0.00   Min.   :22.00  
##  1st Qu.: 56.5   1st Qu.:0.0000   1st Qu.:15.00   1st Qu.:37.50  
##  Median :112.0   Median :1.0000   Median :20.00   Median :44.00  
##  Mean   :112.0   Mean   :0.5919   Mean   :21.05   Mean   :43.95  
##  3rd Qu.:167.5   3rd Qu.:1.0000   3rd Qu.:27.50   3rd Qu.:51.00  
##  Max.   :223.0   Max.   :1.0000   Max.   :50.00   Max.   :72.00  
##      RPD01           RPD02          RPD03           RPD05           RPD06      
##  Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.00   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :5.000   Median :4.00   Median :5.000   Median :5.000   Median :5.000  
##  Mean   :4.596   Mean   :4.09   Mean   :4.789   Mean   :4.327   Mean   :4.798  
##  3rd Qu.:6.000   3rd Qu.:6.00   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.00   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RPD07           RPD08           RPD09           RPD10      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:2.500  
##  Median :4.000   Median :5.000   Median :5.000   Median :5.000  
##  Mean   :3.794   Mean   :4.735   Mean   :4.466   Mean   :4.435  
##  3rd Qu.:5.500   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RRE02           RRE03           RRE04           RRE05           RRE06    
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.0  
##  1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:4.0  
##  Median :6.000   Median :6.000   Median :6.000   Median :6.000   Median :6.0  
##  Mean   :5.691   Mean   :5.534   Mean   :5.668   Mean   :5.623   Mean   :5.3  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.0  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.0  
##      RRE07           RRE10           RMA02           RMA03      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:5.000   1st Qu.:3.000   1st Qu.:3.000  
##  Median :6.000   Median :6.000   Median :4.000   Median :5.000  
##  Mean   :5.305   Mean   :5.664   Mean   :4.215   Mean   :4.377  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RMA04           RMA05           RMA06           RMA07      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:5.000   1st Qu.:4.000  
##  Median :5.000   Median :5.000   Median :6.000   Median :5.000  
##  Mean   :4.686   Mean   :4.637   Mean   :5.511   Mean   :4.767  
##  3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:7.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      RMA08           RMA09           RMA10          RCO02           RCO03      
##  Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:4.000   1st Qu.:3.000   1st Qu.:3.00   1st Qu.:5.000   1st Qu.:5.000  
##  Median :5.000   Median :5.000   Median :5.00   Median :6.000   Median :6.000  
##  Mean   :4.942   Mean   :4.614   Mean   :4.43   Mean   :5.336   Mean   :5.574  
##  3rd Qu.:6.500   3rd Qu.:6.000   3rd Qu.:6.00   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.00   Max.   :7.000   Max.   :7.000  
##      RCO04           RCO05           RCO06           RCO07      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000  
##  Median :6.000   Median :6.000   Median :6.000   Median :6.000  
##  Mean   :5.704   Mean   :5.668   Mean   :5.619   Mean   :5.632  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##       EN01            EN02            EN04            EN05      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:4.000   1st Qu.:4.000   1st Qu.:4.000  
##  Median :5.000   Median :6.000   Median :5.000   Median :5.000  
##  Mean   :4.717   Mean   :5.004   Mean   :4.883   Mean   :4.928  
##  3rd Qu.:6.000   3rd Qu.:7.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##       EN06            EN07            EN08           EVI01      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :0.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:4.000   1st Qu.:4.000  
##  Median :5.000   Median :5.000   Median :5.000   Median :5.000  
##  Mean   :4.767   Mean   :4.578   Mean   :4.776   Mean   :5.013  
##  3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:6.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      EVI02           EVI03           EDE01           EDE02      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:4.000   1st Qu.:4.000   1st Qu.:5.000   1st Qu.:5.000  
##  Median :6.000   Median :6.000   Median :6.000   Median :6.000  
##  Mean   :5.076   Mean   :4.973   Mean   :5.305   Mean   :5.543  
##  3rd Qu.:6.000   3rd Qu.:6.000   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
##      EDE03           EAB01           EAB02           EAB03      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.000  
##  1st Qu.:6.000   1st Qu.:5.000   1st Qu.:5.000   1st Qu.:5.000  
##  Median :7.000   Median :6.000   Median :6.000   Median :6.000  
##  Mean   :6.135   Mean   :5.605   Mean   :5.821   Mean   :5.363  
##  3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000   3rd Qu.:7.000  
##  Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000
str(dataframe3)
## tibble [223 × 51] (S3: tbl_df/tbl/data.frame)
##  $ ID   : num [1:223] 1 2 3 4 5 6 7 8 9 10 ...
##  $ GEN  : num [1:223] 1 1 1 1 1 0 0 1 1 1 ...
##  $ EXPER: num [1:223] 22 22 30 17 23 31 26 30 15 15 ...
##  $ EDAD : num [1:223] 45 44 52 41 51 52 53 48 40 38 ...
##  $ RPD01: num [1:223] 5 4 7 5 7 3 5 6 4 2 ...
##  $ RPD02: num [1:223] 1 4 7 5 6 4 5 7 4 3 ...
##  $ RPD03: num [1:223] 3 6 7 1 7 5 4 6 4 2 ...
##  $ RPD05: num [1:223] 2 5 7 1 6 4 4 7 4 3 ...
##  $ RPD06: num [1:223] 3 3 7 3 7 3 5 2 6 7 ...
##  $ RPD07: num [1:223] 1 2 6 5 6 5 6 5 4 1 ...
##  $ RPD08: num [1:223] 3 3 7 3 7 4 6 2 5 3 ...
##  $ RPD09: num [1:223] 2 4 7 2 6 4 7 4 4 2 ...
##  $ RPD10: num [1:223] 4 4 7 2 6 4 7 1 6 2 ...
##  $ RRE02: num [1:223] 6 6 7 6 7 5 7 5 6 7 ...
##  $ RRE03: num [1:223] 6 6 7 6 7 4 7 4 4 7 ...
##  $ RRE04: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RRE05: num [1:223] 6 6 7 6 7 5 7 4 6 7 ...
##  $ RRE06: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RRE07: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RRE10: num [1:223] 6 6 7 6 7 4 7 4 6 7 ...
##  $ RMA02: num [1:223] 4 6 4 3 4 7 5 2 6 7 ...
##  $ RMA03: num [1:223] 5 6 5 4 4 7 5 1 2 7 ...
##  $ RMA04: num [1:223] 5 5 6 4 4 5 5 1 4 7 ...
##  $ RMA05: num [1:223] 5 5 6 4 4 6 5 3 4 7 ...
##  $ RMA06: num [1:223] 6 6 7 6 5 4 5 7 6 7 ...
##  $ RMA07: num [1:223] 4 6 6 5 4 5 7 4 6 7 ...
##  $ RMA08: num [1:223] 5 6 4 4 4 6 6 4 2 7 ...
##  $ RMA09: num [1:223] 3 5 4 3 5 4 5 2 4 7 ...
##  $ RMA10: num [1:223] 7 5 5 4 5 5 6 4 3 7 ...
##  $ RCO02: num [1:223] 7 7 7 5 7 6 7 7 3 7 ...
##  $ RCO03: num [1:223] 7 7 7 5 7 5 7 7 3 7 ...
##  $ RCO04: num [1:223] 7 7 7 6 7 4 7 7 3 7 ...
##  $ RCO05: num [1:223] 7 7 7 6 7 4 7 7 3 7 ...
##  $ RCO06: num [1:223] 7 7 7 6 7 4 7 7 4 7 ...
##  $ RCO07: num [1:223] 5 7 7 6 7 4 7 7 7 7 ...
##  $ EN01 : num [1:223] 6 6 7 4 6 4 7 7 4 7 ...
##  $ EN02 : num [1:223] 7 6 7 4 6 4 7 7 4 7 ...
##  $ EN04 : num [1:223] 6 6 7 4 6 4 7 6 4 7 ...
##  $ EN05 : num [1:223] 5 5 7 5 6 5 7 6 4 7 ...
##  $ EN06 : num [1:223] 5 5 7 5 6 3 7 5 5 7 ...
##  $ EN07 : num [1:223] 5 5 7 2 6 4 7 4 4 7 ...
##  $ EN08 : num [1:223] 6 5 7 5 6 4 7 4 4 7 ...
##  $ EVI01: num [1:223] 6 5 7 5 6 4 7 6 6 0 ...
##  $ EVI02: num [1:223] 6 5 7 6 6 4 6 5 5 1 ...
##  $ EVI03: num [1:223] 6 6 6 7 6 4 6 6 7 0 ...
##  $ EDE01: num [1:223] 6 6 6 5 7 6 7 7 7 1 ...
##  $ EDE02: num [1:223] 7 6 7 6 7 5 7 7 7 5 ...
##  $ EDE03: num [1:223] 7 7 7 7 7 5 7 7 7 6 ...
##  $ EAB01: num [1:223] 7 7 7 6 7 5 7 7 7 0 ...
##  $ EAB02: num [1:223] 7 7 7 6 7 5 7 2 5 1 ...
##  $ EAB03: num [1:223] 6 5 6 5 6 5 7 3 5 0 ...

PARTE 1: CFA de segundo orden - Experiencias de recuperación

Se especifican los 4 factores de primer orden (desapego, relajación, control y dominio) y un factor de segundo orden (recuperación) que explica la covarianza entre ellos.

#PARTE 1 Experiencias de recuperacion

modelo3 <- '  #Variables latentes de primer orden
            desapego   =~ RPD01 + RPD02 + RPD03 + RPD05 + RPD06 + RPD07 + RPD08 + RPD09 + RPD10
            relajacion =~ RRE02 + RRE03 + RRE04 + RRE05 + RRE06 + RRE07 + RRE10
            control    =~ RCO02 + RCO03 + RCO04 + RCO05 + RCO06 + RCO07
            dominio    =~ RMA02 + RMA03 + RMA04 + RMA05 + RMA06 + RMA07 + RMA08 + RMA09 + RMA10

            #Variable latente de segundo orden
            recuperacion =~ desapego + relajacion + control + dominio
            '
# Generar analisis factorial comprobatorio/Confirmatorio ("CFA") de segundo orden

fit3 <- cfa(modelo3, data = dataframe3)
summary(fit3, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.7-2 ended normally after 47 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        66
## 
##   Number of observations                           223
## 
## Model Test User Model:
##                                                       
##   Test statistic                              1221.031
##   Degrees of freedom                               430
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              7522.157
##   Degrees of freedom                               465
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.888
##   Tucker-Lewis Index (TLI)                       0.879
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -10616.148
##   Loglikelihood unrestricted model (H1)     -10005.632
##                                                       
##   Akaike (AIC)                               21364.296
##   Bayesian (BIC)                             21589.169
##   Sample-size adjusted Bayesian (SABIC)      21380.007
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.091
##   90 Percent confidence interval - lower         0.085
##   90 Percent confidence interval - upper         0.097
##   P-value H_0: RMSEA <= 0.050                    0.000
##   P-value H_0: RMSEA >= 0.080                    0.998
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.075
## 
## Goodness of Fit Index:
## 
##   Goodness of Fit Index (GFI)                    0.810
##   90 Percent confidence interval - lower         0.790
##   90 Percent confidence interval - upper         0.830
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   desapego =~                                                           
##     RPD01             1.000                               1.386    0.788
##     RPD02             1.206    0.082   14.780    0.000    1.672    0.858
##     RPD03             1.143    0.085   13.374    0.000    1.584    0.797
##     RPD05             1.312    0.086   15.244    0.000    1.818    0.878
##     RPD06             1.088    0.089   12.266    0.000    1.507    0.745
##     RPD07             1.229    0.085   14.440    0.000    1.703    0.844
##     RPD08             1.164    0.087   13.447    0.000    1.613    0.800
##     RPD09             1.317    0.087   15.153    0.000    1.826    0.874
##     RPD10             1.346    0.088   15.258    0.000    1.866    0.878
##   relajacion =~                                                         
##     RRE02             1.000                               1.274    0.849
##     RRE03             1.120    0.065   17.227    0.000    1.427    0.870
##     RRE04             1.025    0.058   17.713    0.000    1.306    0.883
##     RRE05             1.055    0.056   18.758    0.000    1.344    0.910
##     RRE06             1.245    0.074   16.869    0.000    1.586    0.860
##     RRE07             1.117    0.071   15.689    0.000    1.423    0.825
##     RRE10             0.815    0.067   12.120    0.000    1.038    0.698
##   control =~                                                            
##     RCO02             1.000                               1.630    0.854
##     RCO03             0.948    0.049   19.182    0.000    1.545    0.912
##     RCO04             0.796    0.044   18.110    0.000    1.297    0.886
##     RCO05             0.818    0.043   18.990    0.000    1.333    0.907
##     RCO06             0.834    0.046   18.216    0.000    1.360    0.888
##     RCO07             0.835    0.046   18.057    0.000    1.361    0.884
##   dominio =~                                                            
##     RMA02             1.000                               1.407    0.730
##     RMA03             1.155    0.096   12.079    0.000    1.626    0.800
##     RMA04             1.178    0.089   13.274    0.000    1.658    0.873
##     RMA05             1.141    0.087   13.072    0.000    1.606    0.861
##     RMA06             0.645    0.075    8.597    0.000    0.908    0.579
##     RMA07             1.103    0.084   13.061    0.000    1.552    0.860
##     RMA08             1.109    0.085   12.994    0.000    1.560    0.856
##     RMA09             1.028    0.084   12.246    0.000    1.447    0.810
##     RMA10             1.055    0.088   12.044    0.000    1.485    0.798
##   recuperacion =~                                                       
##     desapego          1.000                               0.713    0.713
##     relajacion        1.149    0.131    8.787    0.000    0.892    0.892
##     control           1.341    0.156    8.605    0.000    0.813    0.813
##     dominio           0.858    0.129    6.666    0.000    0.603    0.603
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .RPD01             1.172    0.120    9.782    0.000    1.172    0.379
##    .RPD02             0.999    0.108    9.228    0.000    0.999    0.263
##    .RPD03             1.441    0.148    9.733    0.000    1.441    0.365
##    .RPD05             0.987    0.110    8.964    0.000    0.987    0.230
##    .RPD06             1.817    0.182    9.967    0.000    1.817    0.444
##    .RPD07             1.173    0.125    9.383    0.000    1.173    0.288
##    .RPD08             1.460    0.150    9.714    0.000    1.460    0.360
##    .RPD09             1.032    0.114    9.021    0.000    1.032    0.236
##    .RPD10             1.034    0.115    8.955    0.000    1.034    0.229
##    .RRE02             0.626    0.068    9.274    0.000    0.626    0.278
##    .RRE03             0.653    0.073    9.011    0.000    0.653    0.243
##    .RRE04             0.481    0.055    8.794    0.000    0.481    0.220
##    .RRE05             0.374    0.046    8.153    0.000    0.374    0.172
##    .RRE06             0.886    0.097    9.149    0.000    0.886    0.260
##    .RRE07             0.950    0.100    9.505    0.000    0.950    0.319
##    .RRE10             1.137    0.113   10.093    0.000    1.137    0.513
##    .RCO02             0.983    0.105    9.379    0.000    0.983    0.270
##    .RCO03             0.484    0.058    8.391    0.000    0.484    0.169
##    .RCO04             0.462    0.052    8.963    0.000    0.462    0.215
##    .RCO05             0.382    0.045    8.513    0.000    0.382    0.177
##    .RCO06             0.494    0.055    8.917    0.000    0.494    0.211
##    .RCO07             0.515    0.057    8.985    0.000    0.515    0.218
##    .RMA02             1.740    0.175    9.931    0.000    1.740    0.468
##    .RMA03             1.485    0.155    9.575    0.000    1.485    0.360
##    .RMA04             0.855    0.097    8.772    0.000    0.855    0.237
##    .RMA05             0.899    0.100    8.967    0.000    0.899    0.259
##    .RMA06             1.631    0.159   10.281    0.000    1.631    0.664
##    .RMA07             0.845    0.094    8.977    0.000    0.845    0.260
##    .RMA08             0.886    0.098    9.034    0.000    0.886    0.267
##    .RMA09             1.094    0.115    9.500    0.000    1.094    0.343
##    .RMA10             1.259    0.131    9.590    0.000    1.259    0.363
##    .desapego          0.943    0.152    6.207    0.000    0.491    0.491
##    .relajacion        0.333    0.089    3.757    0.000    0.205    0.205
##    .control           0.900    0.159    5.666    0.000    0.339    0.339
##    .dominio           1.260    0.212    5.942    0.000    0.636    0.636
##     recuperacion      0.978    0.202    4.833    0.000    1.000    1.000
lavaanPlot(fit3, coef = TRUE, cov = TRUE)
# Revisar únicamente los índices de ajuste más relevantes
fitMeasures(fit3, c("chisq","df","pvalue","cfi","tli","rmsea","rmsea.ci.lower","rmsea.ci.upper","srmr"))
##          chisq             df         pvalue            cfi            tli 
##       1221.031        430.000          0.000          0.888          0.879 
##          rmsea rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.091          0.085          0.097          0.075

Criterios de referencia: CFI y TLI ≥ .90 (ideal ≥ .95), RMSEA ≤ .08 (ideal ≤ .05) y SRMR ≤ .08 se consideran ajuste aceptable/bueno.

# Depuración del modelo: revisar índices de modificación e items con cargas bajas (<0.4)
# para decidir qué reactivos eliminar o qué covarianzas de error liberar
modificationindices(fit3, sort. = TRUE, minimum.value = 10) %>% head(15)
##              lhs op   rhs      mi    epc sepc.lv sepc.all sepc.nox
## 311        RPD06 ~~ RPD08 109.338  1.234   1.234    0.758    0.758
## 385        RPD09 ~~ RPD10  96.902  0.840   0.840    0.813    0.813
## 625        RMA02 ~~ RMA03  47.245  0.810   0.810    0.504    0.504
## 138      control =~ RMA06  43.107  0.415   0.677    0.432    0.432
## 191 recuperacion =~ RMA06  41.307  0.807   0.798    0.509    0.509
## 229        RPD02 ~~ RPD07  40.479  0.539   0.539    0.498    0.498
## 430        RRE02 ~~ RRE03  34.218  0.301   0.301    0.471    0.471
## 113   relajacion =~ RMA06  32.520  0.481   0.612    0.391    0.391
## 471        RRE04 ~~ RRE05  30.999  0.217   0.217    0.511    0.511
## 508        RRE06 ~~ RRE07  29.815  0.391   0.391    0.426    0.426
## 232        RPD02 ~~ RPD10  20.910 -0.377  -0.377   -0.371   -0.371
## 606        RCO06 ~~ RCO07  19.972  0.188   0.188    0.373    0.373
## 572        RCO03 ~~ RCO06  18.660 -0.187  -0.187   -0.382   -0.382
## 154      dominio =~ RRE04  18.057 -0.192  -0.270   -0.182   -0.182
## 337        RPD07 ~~ RPD09  16.979 -0.360  -0.360   -0.328   -0.328
standardizedSolution(fit3) %>% filter(op == "=~") %>% arrange(est.std)
##             lhs op        rhs est.std    se      z pvalue ci.lower ci.upper
## 1       dominio =~      RMA06   0.579 0.046 12.525      0    0.489    0.670
## 2  recuperacion =~    dominio   0.603 0.051 11.927      0    0.504    0.702
## 3    relajacion =~      RRE10   0.698 0.036 19.371      0    0.627    0.768
## 4  recuperacion =~   desapego   0.713 0.042 17.168      0    0.632    0.795
## 5       dominio =~      RMA02   0.730 0.033 21.987      0    0.665    0.795
## 6      desapego =~      RPD06   0.745 0.031 23.773      0    0.684    0.807
## 7      desapego =~      RPD01   0.788 0.027 29.176      0    0.735    0.841
## 8      desapego =~      RPD03   0.797 0.026 30.564      0    0.746    0.848
## 9       dominio =~      RMA10   0.798 0.026 30.363      0    0.746    0.849
## 10      dominio =~      RMA03   0.800 0.026 30.717      0    0.749    0.851
## 11     desapego =~      RPD08   0.800 0.026 31.106      0    0.750    0.851
## 12      dominio =~      RMA09   0.810 0.025 32.473      0    0.762    0.859
## 13 recuperacion =~    control   0.813 0.034 23.746      0    0.746    0.880
## 14   relajacion =~      RRE07   0.825 0.023 35.615      0    0.780    0.870
## 15     desapego =~      RPD07   0.844 0.021 40.180      0    0.803    0.885
## 16   relajacion =~      RRE02   0.849 0.020 41.506      0    0.809    0.890
## 17      control =~      RCO02   0.854 0.020 43.429      0    0.816    0.893
## 18      dominio =~      RMA08   0.856 0.020 42.867      0    0.817    0.895
## 19     desapego =~      RPD02   0.858 0.019 44.247      0    0.820    0.896
## 20   relajacion =~      RRE06   0.860 0.019 44.568      0    0.822    0.898
## 21      dominio =~      RMA07   0.860 0.020 44.088      0    0.822    0.899
## 22      dominio =~      RMA05   0.861 0.019 44.286      0    0.823    0.899
## 23   relajacion =~      RRE03   0.870 0.018 47.879      0    0.834    0.906
## 24      dominio =~      RMA04   0.873 0.018 48.336      0    0.838    0.909
## 25     desapego =~      RPD09   0.874 0.018 49.511      0    0.839    0.908
## 26     desapego =~      RPD05   0.878 0.017 50.936      0    0.844    0.911
## 27     desapego =~      RPD10   0.878 0.017 51.164      0    0.844    0.912
## 28   relajacion =~      RRE04   0.883 0.017 52.944      0    0.851    0.916
## 29      control =~      RCO07   0.884 0.016 54.385      0    0.853    0.916
## 30      control =~      RCO04   0.886 0.016 54.978      0    0.854    0.917
## 31      control =~      RCO06   0.888 0.016 56.214      0    0.857    0.919
## 32 recuperacion =~ relajacion   0.892 0.030 29.595      0    0.833    0.951
## 33      control =~      RCO05   0.907 0.014 66.504      0    0.881    0.934
## 34   relajacion =~      RRE05   0.910 0.014 66.719      0    0.883    0.937
## 35      control =~      RCO03   0.912 0.013 69.467      0    0.886    0.938
# Modelo depurado: se eliminan del modelo original los reactivos con cargas estandarizadas
# bajas (<0.4) detectados arriba y/o se liberan las covarianzas de error más altas sugeridas
# por los índices de modificación. (Ajustar esta lista con los ítems reales que resulten
# problemáticos al correr el chunk anterior con los datos)

modelo3b <- '  #Variables latentes de primer orden (depuradas)
            desapego   =~ RPD01 + RPD02 + RPD03 + RPD05 + RPD06 + RPD07 + RPD08 + RPD09 + RPD10
            relajacion =~ RRE02 + RRE03 + RRE04 + RRE05 + RRE06 + RRE07 + RRE10
            control    =~ RCO02 + RCO03 + RCO04 + RCO05 + RCO06 + RCO07
            dominio    =~ RMA02 + RMA03 + RMA04 + RMA05 + RMA06 + RMA07 + RMA08 + RMA09 + RMA10

            #Variable latente de segundo orden
            recuperacion =~ desapego + relajacion + control + dominio

            #Covarianzas de error liberadas según índices de modificación (ejemplo, ajustar)
            #RPD01 ~~ RPD02
            '

fit3b <- cfa(modelo3b, data = dataframe3)
fitMeasures(fit3b, c("chisq","df","pvalue","cfi","tli","rmsea","srmr"))
##    chisq       df   pvalue      cfi      tli    rmsea     srmr 
## 1221.031  430.000    0.000    0.888    0.879    0.091    0.075
lavaanPlot(fit3b, coef = TRUE, cov = TRUE)

Parte 1 (Experiencias de recuperación). El modelo de segundo orden propuesto agrupa los cuatro dominios (desapego, relajación, control y dominio) bajo un único factor de “experiencias de recuperación”. (Completar aquí, tras correr el chunk de fitMeasures(fit3, ...), los valores obtenidos de CFI, TLI, RMSEA y SRMR, indicando si el modelo inicial mostró un ajuste aceptable. Si no fue así, describir qué reactivos se eliminaron o qué covarianzas de error se liberaron en modelo3b con base en las cargas factoriales bajas y los índices de modificación, y reportar cómo mejoraron los índices de ajuste tras la depuración.) ### PARTE 2: CFA de primer orden - Energía recuperada

#PARTE 2 Energía recuperada
# (en la base de datos solo existen los reactivos EN01, EN02, EN04-EN08; EN03, EN09 y EN10 no están presentes)

modelo4 <- '  #Variable latente
            energia =~ EN01 + EN02 + EN04 + EN05 + EN06 + EN07 + EN08
            '

fit4 <- cfa(modelo4, data = dataframe3)
summary(fit4, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.7-2 ended normally after 32 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        14
## 
##   Number of observations                           223
## 
## Model Test User Model:
##                                                       
##   Test statistic                                47.222
##   Degrees of freedom                                14
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              2324.436
##   Degrees of freedom                                21
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.986
##   Tucker-Lewis Index (TLI)                       0.978
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2017.154
##   Loglikelihood unrestricted model (H1)      -1993.543
##                                                       
##   Akaike (AIC)                                4062.308
##   Bayesian (BIC)                              4110.008
##   Sample-size adjusted Bayesian (SABIC)       4065.641
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.103
##   90 Percent confidence interval - lower         0.072
##   90 Percent confidence interval - upper         0.136
##   P-value H_0: RMSEA <= 0.050                    0.004
##   P-value H_0: RMSEA >= 0.080                    0.892
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.012
## 
## Goodness of Fit Index:
## 
##   Goodness of Fit Index (GFI)                    0.959
##   90 Percent confidence interval - lower         0.931
##   90 Percent confidence interval - upper         0.980
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   energia =~                                                            
##     EN01              1.000                               1.674    0.893
##     EN02              1.029    0.044   23.192    0.000    1.723    0.933
##     EN04              0.999    0.044   22.583    0.000    1.672    0.924
##     EN05              0.999    0.042   23.649    0.000    1.672    0.939
##     EN06              0.986    0.042   23.722    0.000    1.651    0.940
##     EN07              1.049    0.046   22.856    0.000    1.755    0.928
##     EN08              1.036    0.043   24.173    0.000    1.734    0.946
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EN01              0.711    0.074    9.651    0.000    0.711    0.202
##    .EN02              0.444    0.049    9.012    0.000    0.444    0.130
##    .EN04              0.481    0.052    9.214    0.000    0.481    0.147
##    .EN05              0.375    0.042    8.830    0.000    0.375    0.118
##    .EN06              0.359    0.041    8.798    0.000    0.359    0.116
##    .EN07              0.499    0.055    9.129    0.000    0.499    0.139
##    .EN08              0.353    0.041    8.580    0.000    0.353    0.105
##     energia           2.801    0.327    8.565    0.000    1.000    1.000
lavaanPlot(fit4, coef = TRUE, cov = TRUE)
fitMeasures(fit4, c("chisq","df","pvalue","cfi","tli","rmsea","srmr"))
##  chisq     df pvalue    cfi    tli  rmsea   srmr 
## 47.222 14.000  0.000  0.986  0.978  0.103  0.012
# Depuración: revisar cargas e índices de modificación
standardizedSolution(fit4) %>% filter(op == "=~") %>% arrange(est.std)
##       lhs op  rhs est.std    se       z pvalue ci.lower ci.upper
## 1 energia =~ EN01   0.893 0.014  62.180      0    0.865    0.921
## 2 energia =~ EN04   0.924 0.011  86.412      0    0.903    0.945
## 3 energia =~ EN07   0.928 0.010  90.951      0    0.908    0.948
## 4 energia =~ EN02   0.933 0.010  97.034      0    0.914    0.951
## 5 energia =~ EN05   0.939 0.009 106.302      0    0.922    0.956
## 6 energia =~ EN06   0.940 0.009 107.900      0    0.923    0.957
## 7 energia =~ EN08   0.946 0.008 118.560      0    0.930    0.962
modificationindices(fit4, sort. = TRUE, minimum.value = 10) %>% head(10)
##     lhs op  rhs     mi    epc sepc.lv sepc.all sepc.nox
## 25 EN02 ~~ EN07 11.977 -0.133  -0.133   -0.282   -0.282
## 30 EN04 ~~ EN08 11.122 -0.115  -0.115   -0.280   -0.280
# Modelo depurado (eliminar ítems con carga <0.4 detectados arriba; ejemplo genérico)
modelo4b <- '  energia =~ EN01 + EN02 + EN04 + EN05 + EN06 + EN07 + EN08
            '
fit4b <- cfa(modelo4b, data = dataframe3)
fitMeasures(fit4b, c("chisq","df","pvalue","cfi","tli","rmsea","srmr"))
##  chisq     df pvalue    cfi    tli  rmsea   srmr 
## 47.222 14.000  0.000  0.986  0.978  0.103  0.012

Parte 2 (Energía recuperada). El análisis factorial de primer orden evaluó si los reactivos EN01, EN02 y EN04-EN08 conforman una sola dimensión de energía recuperada. (Completar con los valores de ajuste de fit4/fit4b, señalando si todos los ítems presentaron cargas factoriales adecuadas (>0.4) o si fue necesario eliminar alguno para mejorar el ajuste.)

PARTE 3: Modelo de senderos - Efecto mediador de la energía recuperada

#PARTE 3 Modelo de senderos con mediación

modelo5 <- '  #Variables latentes de primer orden (recuperación)
            desapego   =~ RPD01 + RPD02 + RPD03 + RPD05 + RPD06 + RPD07 + RPD08 + RPD09 + RPD10
            relajacion =~ RRE02 + RRE03 + RRE04 + RRE05 + RRE06 + RRE07 + RRE10
            control    =~ RCO02 + RCO03 + RCO04 + RCO05 + RCO06 + RCO07
            dominio    =~ RMA02 + RMA03 + RMA04 + RMA05 + RMA06 + RMA07 + RMA08 + RMA09 + RMA10
            recuperacion =~ desapego + relajacion + control + dominio

            #Variable latente: energía recuperada (mediadora)
            energia =~ EN01 + EN02 + EN04 + EN05 + EN06 + EN07 + EN08

            #Variable latente de segundo orden: engagement laboral
            vigor       =~ EVI01 + EVI02 + EVI03
            dedicacion  =~ EDE01 + EDE02 + EDE03
            absorcion   =~ EAB01 + EAB02 + EAB03
            engagement  =~ vigor + dedicacion + absorcion

            #Regresiones (senderos estructurales)
            energia    ~ a*recuperacion
            engagement ~ b*energia + c*recuperacion

            #Efectos indirecto, directo y total (mediación)
            indirecto := a*b
            directo   := c
            total     := c + (a*b)
            '

fit5 <- sem(modelo5, data = dataframe3)
summary(fit5, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.7-2 ended normally after 67 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                       104
## 
##   Number of observations                           223
## 
## Model Test User Model:
##                                                       
##   Test statistic                              2501.954
##   Degrees of freedom                              1024
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                             13350.303
##   Degrees of freedom                              1081
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.880
##   Tucker-Lewis Index (TLI)                       0.873
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -15454.903
##   Loglikelihood unrestricted model (H1)     -14203.926
##                                                       
##   Akaike (AIC)                               31117.805
##   Bayesian (BIC)                             31472.151
##   Sample-size adjusted Bayesian (SABIC)      31142.562
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.080
##   90 Percent confidence interval - lower         0.076
##   90 Percent confidence interval - upper         0.084
##   P-value H_0: RMSEA <= 0.050                    0.000
##   P-value H_0: RMSEA >= 0.080                    0.578
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.074
## 
## Goodness of Fit Index:
## 
##   Goodness of Fit Index (GFI)                    0.785
##   90 Percent confidence interval - lower         0.768
##   90 Percent confidence interval - upper         0.802
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   desapego =~                                                           
##     RPD01             1.000                               1.387    0.789
##     RPD02             1.209    0.081   14.865    0.000    1.677    0.861
##     RPD03             1.144    0.085   13.419    0.000    1.587    0.798
##     RPD05             1.313    0.086   15.317    0.000    1.822    0.879
##     RPD06             1.082    0.089   12.214    0.000    1.501    0.742
##     RPD07             1.229    0.085   14.487    0.000    1.705    0.845
##     RPD08             1.157    0.086   13.375    0.000    1.604    0.796
##     RPD09             1.315    0.087   15.163    0.000    1.824    0.873
##     RPD10             1.343    0.088   15.247    0.000    1.863    0.877
##   relajacion =~                                                         
##     RRE02             1.000                               1.275    0.850
##     RRE03             1.120    0.065   17.295    0.000    1.429    0.871
##     RRE04             1.021    0.058   17.625    0.000    1.301    0.880
##     RRE05             1.051    0.056   18.687    0.000    1.341    0.908
##     RRE06             1.246    0.074   16.924    0.000    1.588    0.861
##     RRE07             1.121    0.071   15.838    0.000    1.430    0.829
##     RRE10             0.814    0.067   12.134    0.000    1.038    0.698
##   control =~                                                            
##     RCO02             1.000                               1.632    0.855
##     RCO03             0.945    0.049   19.172    0.000    1.543    0.910
##     RCO04             0.794    0.044   18.100    0.000    1.295    0.884
##     RCO05             0.814    0.043   18.926    0.000    1.329    0.904
##     RCO06             0.837    0.045   18.407    0.000    1.365    0.892
##     RCO07             0.836    0.046   18.205    0.000    1.364    0.887
##   dominio =~                                                            
##     RMA02             1.000                               1.407    0.729
##     RMA03             1.152    0.096   12.041    0.000    1.621    0.798
##     RMA04             1.178    0.089   13.265    0.000    1.658    0.873
##     RMA05             1.141    0.087   13.057    0.000    1.605    0.860
##     RMA06             0.648    0.075    8.625    0.000    0.911    0.581
##     RMA07             1.104    0.085   13.062    0.000    1.553    0.861
##     RMA08             1.110    0.085   13.001    0.000    1.561    0.857
##     RMA09             1.030    0.084   12.257    0.000    1.448    0.811
##     RMA10             1.056    0.088   12.047    0.000    1.486    0.798
##   recuperacion =~                                                       
##     desapego          1.000                               0.711    0.711
##     relajacion        1.070    0.121    8.840    0.000    0.827    0.827
##     control           1.423    0.157    9.062    0.000    0.860    0.860
##     dominio           0.900    0.129    6.960    0.000    0.631    0.631
##   energia =~                                                            
##     EN01              1.000                               1.678    0.896
##     EN02              1.027    0.044   23.415    0.000    1.723    0.933
##     EN04              0.998    0.044   22.871    0.000    1.675    0.925
##     EN05              0.996    0.042   23.836    0.000    1.671    0.939
##     EN06              0.983    0.041   23.857    0.000    1.649    0.939
##     EN07              1.045    0.045   22.963    0.000    1.753    0.926
##     EN08              1.033    0.042   24.398    0.000    1.733    0.946
##   vigor =~                                                              
##     EVI01             1.000                               1.684    0.967
##     EVI02             0.985    0.028   35.282    0.000    1.659    0.962
##     EVI03             0.996    0.048   20.546    0.000    1.677    0.836
##   dedicacion =~                                                         
##     EDE01             1.000                               1.868    0.952
##     EDE02             0.907    0.034   26.376    0.000    1.695    0.922
##     EDE03             0.571    0.037   15.539    0.000    1.066    0.754
##   absorcion =~                                                          
##     EAB01             1.000                               1.607    0.917
##     EAB02             0.711    0.051   13.823    0.000    1.143    0.752
##     EAB03             0.735    0.063   11.600    0.000    1.181    0.671
##   engagement =~                                                         
##     vigor             1.000                               0.901    0.901
##     dedicacion        1.213    0.061   19.812    0.000    0.985    0.985
##     absorcion         0.958    0.059   16.371    0.000    0.904    0.904
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   energia ~                                                             
##     recuperacn (a)    1.405    0.154    9.093    0.000    0.825    0.825
##   engagement ~                                                          
##     energia    (b)    0.407    0.106    3.845    0.000    0.450    0.450
##     recuperacn (c)    0.347    0.189    1.839    0.066    0.225    0.225
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .RPD01             1.168    0.119    9.781    0.000    1.168    0.378
##    .RPD02             0.983    0.107    9.202    0.000    0.983    0.259
##    .RPD03             1.434    0.147    9.729    0.000    1.434    0.363
##    .RPD05             0.972    0.109    8.938    0.000    0.972    0.227
##    .RPD06             1.836    0.184    9.980    0.000    1.836    0.449
##    .RPD07             1.165    0.124    9.377    0.000    1.165    0.286
##    .RPD08             1.486    0.153    9.740    0.000    1.486    0.366
##    .RPD09             1.037    0.115    9.036    0.000    1.037    0.238
##    .RPD10             1.046    0.116    8.984    0.000    1.046    0.232
##    .RRE02             0.623    0.067    9.252    0.000    0.623    0.277
##    .RRE03             0.647    0.072    8.976    0.000    0.647    0.241
##    .RRE04             0.492    0.056    8.829    0.000    0.492    0.225
##    .RRE05             0.384    0.047    8.203    0.000    0.384    0.176
##    .RRE06             0.880    0.097    9.122    0.000    0.880    0.259
##    .RRE07             0.930    0.098    9.460    0.000    0.930    0.313
##    .RRE10             1.136    0.113   10.087    0.000    1.136    0.513
##    .RCO02             0.978    0.104    9.391    0.000    0.978    0.269
##    .RCO03             0.493    0.058    8.474    0.000    0.493    0.172
##    .RCO04             0.468    0.052    9.016    0.000    0.468    0.218
##    .RCO05             0.393    0.046    8.621    0.000    0.393    0.182
##    .RCO06             0.479    0.054    8.884    0.000    0.479    0.205
##    .RCO07             0.505    0.056    8.972    0.000    0.505    0.213
##    .RMA02             1.741    0.175    9.935    0.000    1.741    0.468
##    .RMA03             1.499    0.156    9.594    0.000    1.499    0.363
##    .RMA04             0.857    0.098    8.785    0.000    0.857    0.238
##    .RMA05             0.903    0.101    8.983    0.000    0.903    0.260
##    .RMA06             1.626    0.158   10.280    0.000    1.626    0.662
##    .RMA07             0.844    0.094    8.979    0.000    0.844    0.259
##    .RMA08             0.882    0.098    9.031    0.000    0.882    0.266
##    .RMA09             1.090    0.115    9.498    0.000    1.090    0.342
##    .RMA10             1.257    0.131    9.592    0.000    1.257    0.363
##    .EN01              0.696    0.072    9.660    0.000    0.696    0.198
##    .EN02              0.443    0.049    9.064    0.000    0.443    0.130
##    .EN04              0.473    0.051    9.236    0.000    0.473    0.144
##    .EN05              0.378    0.042    8.907    0.000    0.378    0.119
##    .EN06              0.366    0.041    8.899    0.000    0.366    0.119
##    .EN07              0.507    0.055    9.209    0.000    0.507    0.142
##    .EN08              0.353    0.041    8.658    0.000    0.353    0.105
##    .EVI01             0.199    0.039    5.047    0.000    0.199    0.065
##    .EVI02             0.224    0.040    5.620    0.000    0.224    0.075
##    .EVI03             1.213    0.124    9.773    0.000    1.213    0.301
##    .EDE01             0.363    0.065    5.605    0.000    0.363    0.094
##    .EDE02             0.506    0.067    7.567    0.000    0.506    0.150
##    .EDE03             0.864    0.087    9.921    0.000    0.864    0.432
##    .EAB01             0.490    0.103    4.767    0.000    0.490    0.159
##    .EAB02             1.003    0.109    9.186    0.000    1.003    0.434
##    .EAB03             1.706    0.176    9.719    0.000    1.706    0.550
##    .desapego          0.952    0.149    6.396    0.000    0.495    0.495
##    .relajacion        0.514    0.085    6.023    0.000    0.316    0.316
##    .control           0.694    0.125    5.538    0.000    0.261    0.261
##    .dominio           1.191    0.200    5.956    0.000    0.602    0.602
##     recuperacion      0.972    0.199    4.892    0.000    1.000    1.000
##    .energia           0.898    0.137    6.565    0.000    0.319    0.319
##    .vigor             0.536    0.085    6.327    0.000    0.189    0.189
##    .dedicacion        0.102    0.090    1.143    0.253    0.029    0.029
##    .absorcion         0.472    0.112    4.233    0.000    0.183    0.183
##    .engagement        1.333    0.171    7.804    0.000    0.579    0.579
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     indirecto         0.571    0.157    3.629    0.000    0.371    0.371
##     directo           0.347    0.189    1.839    0.066    0.225    0.225
##     total             0.918    0.130    7.038    0.000    0.597    0.597
## lavaan NOTE:  
##    Standard errors and confidence intervals of the (nonlinear) defined (:=) 
##    parameters are based on the first-order delta method; for strongly 
##    nonlinear definitions, se.def = "mc" (Monte Carlo) or se = "bootstrap" may 
##    be more accurate.
lavaanPlot(fit5, coef = TRUE, cov = TRUE)
fitMeasures(fit5, c("chisq","df","pvalue","cfi","tli","rmsea","srmr"))
##    chisq       df   pvalue      cfi      tli    rmsea     srmr 
## 2501.954 1024.000    0.000    0.880    0.873    0.080    0.074
# Efectos directo, indirecto y total con su significancia
parameterEstimates(fit5, standardized = TRUE) %>% filter(op == ":=")
##         lhs op     rhs     label   est    se     z pvalue ci.lower ci.upper
## 1 indirecto :=     a*b indirecto 0.571 0.157 3.629  0.000    0.263    0.880
## 2   directo :=       c   directo 0.347 0.189 1.839  0.066   -0.023    0.717
## 3     total := c+(a*b)     total 0.918 0.130 7.038  0.000    0.662    1.174
##   std.lv std.all
## 1  0.371   0.371
## 2  0.225   0.225
## 3  0.597   0.597

Parte 3 (Mediación). El modelo de senderos evaluó si la energía recuperada media la relación entre las experiencias de recuperación y el engagement laboral. (Completar indicando el signo y significancia de los coeficientes a (recuperación → energía), b (energía → engagement) y c (recuperación → engagement), así como del efecto indirecto, directo y total. Concluir si existe mediación total, parcial o nula, y comentar los índices de ajuste del modelo fit5.)

PARTE 4: Modelo de medición

A partir del modelo de senderos de la Parte 3, se construye el modelo de medición correspondiente: se conservan las mismas variables latentes y sus indicadores, pero se sustituyen las regresiones estructurales por covarianzas libres entre los factores (equivalente a un CFA con todos los constructos correlacionados entre sí).

#PARTE 4 Modelo de medición (equivalente al modelo de senderos de la Parte 3, sin direccionalidad)

modelo6 <- '  desapego   =~ RPD01 + RPD02 + RPD03 + RPD05 + RPD06 + RPD07 + RPD08 + RPD09 + RPD10
            relajacion =~ RRE02 + RRE03 + RRE04 + RRE05 + RRE06 + RRE07 + RRE10
            control    =~ RCO02 + RCO03 + RCO04 + RCO05 + RCO06 + RCO07
            dominio    =~ RMA02 + RMA03 + RMA04 + RMA05 + RMA06 + RMA07 + RMA08 + RMA09 + RMA10
            recuperacion =~ desapego + relajacion + control + dominio

            energia =~ EN01 + EN02 + EN04 + EN05 + EN06 + EN07 + EN08

            vigor       =~ EVI01 + EVI02 + EVI03
            dedicacion  =~ EDE01 + EDE02 + EDE03
            absorcion   =~ EAB01 + EAB02 + EAB03
            engagement  =~ vigor + dedicacion + absorcion

            #Covarianzas libres entre los 3 constructos (sin dirección causal)
            recuperacion ~~ energia
            recuperacion ~~ engagement
            energia      ~~ engagement
            '

fit6 <- cfa(modelo6, data = dataframe3)
summary(fit6, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.7-2 ended normally after 74 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                       104
## 
##   Number of observations                           223
## 
## Model Test User Model:
##                                                       
##   Test statistic                              2501.954
##   Degrees of freedom                              1024
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                             13350.303
##   Degrees of freedom                              1081
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.880
##   Tucker-Lewis Index (TLI)                       0.873
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -15454.903
##   Loglikelihood unrestricted model (H1)     -14203.926
##                                                       
##   Akaike (AIC)                               31117.805
##   Bayesian (BIC)                             31472.151
##   Sample-size adjusted Bayesian (SABIC)      31142.562
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.080
##   90 Percent confidence interval - lower         0.076
##   90 Percent confidence interval - upper         0.084
##   P-value H_0: RMSEA <= 0.050                    0.000
##   P-value H_0: RMSEA >= 0.080                    0.578
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.074
## 
## Goodness of Fit Index:
## 
##   Goodness of Fit Index (GFI)                    0.785
##   90 Percent confidence interval - lower         0.768
##   90 Percent confidence interval - upper         0.802
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   desapego =~                                                           
##     RPD01             1.000                               1.387    0.789
##     RPD02             1.209    0.081   14.866    0.000    1.677    0.861
##     RPD03             1.144    0.085   13.419    0.000    1.587    0.798
##     RPD05             1.313    0.086   15.317    0.000    1.822    0.879
##     RPD06             1.082    0.089   12.214    0.000    1.501    0.742
##     RPD07             1.229    0.085   14.487    0.000    1.705    0.845
##     RPD08             1.157    0.086   13.375    0.000    1.604    0.796
##     RPD09             1.315    0.087   15.163    0.000    1.824    0.873
##     RPD10             1.343    0.088   15.247    0.000    1.863    0.877
##   relajacion =~                                                         
##     RRE02             1.000                               1.275    0.850
##     RRE03             1.120    0.065   17.295    0.000    1.429    0.871
##     RRE04             1.021    0.058   17.625    0.000    1.301    0.880
##     RRE05             1.051    0.056   18.687    0.000    1.341    0.908
##     RRE06             1.246    0.074   16.924    0.000    1.588    0.861
##     RRE07             1.121    0.071   15.838    0.000    1.430    0.829
##     RRE10             0.814    0.067   12.134    0.000    1.038    0.698
##   control =~                                                            
##     RCO02             1.000                               1.632    0.855
##     RCO03             0.945    0.049   19.172    0.000    1.543    0.910
##     RCO04             0.794    0.044   18.100    0.000    1.295    0.884
##     RCO05             0.814    0.043   18.926    0.000    1.329    0.904
##     RCO06             0.837    0.045   18.407    0.000    1.365    0.892
##     RCO07             0.836    0.046   18.205    0.000    1.364    0.887
##   dominio =~                                                            
##     RMA02             1.000                               1.407    0.729
##     RMA03             1.152    0.096   12.041    0.000    1.621    0.798
##     RMA04             1.178    0.089   13.265    0.000    1.658    0.873
##     RMA05             1.141    0.087   13.057    0.000    1.605    0.860
##     RMA06             0.648    0.075    8.625    0.000    0.911    0.581
##     RMA07             1.104    0.085   13.062    0.000    1.553    0.861
##     RMA08             1.110    0.085   13.001    0.000    1.561    0.857
##     RMA09             1.030    0.084   12.257    0.000    1.448    0.811
##     RMA10             1.056    0.088   12.047    0.000    1.486    0.798
##   recuperacion =~                                                       
##     desapego          1.000                               0.711    0.711
##     relajacion        1.070    0.121    8.840    0.000    0.827    0.827
##     control           1.423    0.157    9.062    0.000    0.860    0.860
##     dominio           0.900    0.129    6.960    0.000    0.631    0.631
##   energia =~                                                            
##     EN01              1.000                               1.678    0.896
##     EN02              1.027    0.044   23.415    0.000    1.723    0.933
##     EN04              0.998    0.044   22.871    0.000    1.675    0.925
##     EN05              0.996    0.042   23.836    0.000    1.671    0.939
##     EN06              0.983    0.041   23.857    0.000    1.649    0.939
##     EN07              1.045    0.045   22.964    0.000    1.753    0.926
##     EN08              1.033    0.042   24.398    0.000    1.733    0.946
##   vigor =~                                                              
##     EVI01             1.000                               1.684    0.967
##     EVI02             0.985    0.028   35.282    0.000    1.659    0.962
##     EVI03             0.996    0.048   20.546    0.000    1.677    0.836
##   dedicacion =~                                                         
##     EDE01             1.000                               1.868    0.952
##     EDE02             0.907    0.034   26.376    0.000    1.695    0.922
##     EDE03             0.571    0.037   15.539    0.000    1.066    0.754
##   absorcion =~                                                          
##     EAB01             1.000                               1.607    0.917
##     EAB02             0.711    0.051   13.823    0.000    1.143    0.752
##     EAB03             0.735    0.063   11.600    0.000    1.181    0.671
##   engagement =~                                                         
##     vigor             1.000                               0.901    0.901
##     dedicacion        1.213    0.061   19.812    0.000    0.985    0.985
##     absorcion         0.958    0.059   16.370    0.000    0.904    0.904
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   recuperacion ~~                                                       
##     energia           1.365    0.197    6.933    0.000    0.825    0.825
##     engagement        0.892    0.152    5.883    0.000    0.597    0.597
##   energia ~~                                                            
##     engagement        1.619    0.223    7.273    0.000    0.636    0.636
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .RPD01             1.168    0.119    9.781    0.000    1.168    0.378
##    .RPD02             0.983    0.107    9.202    0.000    0.983    0.259
##    .RPD03             1.434    0.147    9.729    0.000    1.434    0.363
##    .RPD05             0.972    0.109    8.938    0.000    0.972    0.227
##    .RPD06             1.836    0.184    9.980    0.000    1.836    0.449
##    .RPD07             1.165    0.124    9.377    0.000    1.165    0.286
##    .RPD08             1.486    0.153    9.740    0.000    1.486    0.366
##    .RPD09             1.037    0.115    9.036    0.000    1.037    0.238
##    .RPD10             1.046    0.116    8.984    0.000    1.046    0.232
##    .RRE02             0.623    0.067    9.252    0.000    0.623    0.277
##    .RRE03             0.647    0.072    8.976    0.000    0.647    0.241
##    .RRE04             0.492    0.056    8.829    0.000    0.492    0.225
##    .RRE05             0.384    0.047    8.203    0.000    0.384    0.176
##    .RRE06             0.880    0.097    9.122    0.000    0.880    0.259
##    .RRE07             0.930    0.098    9.460    0.000    0.930    0.313
##    .RRE10             1.136    0.113   10.087    0.000    1.136    0.513
##    .RCO02             0.978    0.104    9.391    0.000    0.978    0.269
##    .RCO03             0.493    0.058    8.474    0.000    0.493    0.172
##    .RCO04             0.468    0.052    9.016    0.000    0.468    0.218
##    .RCO05             0.393    0.046    8.621    0.000    0.393    0.182
##    .RCO06             0.479    0.054    8.884    0.000    0.479    0.205
##    .RCO07             0.505    0.056    8.972    0.000    0.505    0.213
##    .RMA02             1.741    0.175    9.935    0.000    1.741    0.468
##    .RMA03             1.499    0.156    9.594    0.000    1.499    0.363
##    .RMA04             0.857    0.098    8.785    0.000    0.857    0.238
##    .RMA05             0.903    0.101    8.983    0.000    0.903    0.260
##    .RMA06             1.626    0.158   10.280    0.000    1.626    0.662
##    .RMA07             0.844    0.094    8.979    0.000    0.844    0.259
##    .RMA08             0.882    0.098    9.031    0.000    0.882    0.266
##    .RMA09             1.090    0.115    9.498    0.000    1.090    0.342
##    .RMA10             1.257    0.131    9.592    0.000    1.257    0.363
##    .EN01              0.696    0.072    9.660    0.000    0.696    0.198
##    .EN02              0.443    0.049    9.064    0.000    0.443    0.130
##    .EN04              0.473    0.051    9.236    0.000    0.473    0.144
##    .EN05              0.378    0.042    8.907    0.000    0.378    0.119
##    .EN06              0.366    0.041    8.899    0.000    0.366    0.119
##    .EN07              0.507    0.055    9.209    0.000    0.507    0.142
##    .EN08              0.353    0.041    8.658    0.000    0.353    0.105
##    .EVI01             0.199    0.039    5.047    0.000    0.199    0.065
##    .EVI02             0.224    0.040    5.620    0.000    0.224    0.075
##    .EVI03             1.213    0.124    9.773    0.000    1.213    0.301
##    .EDE01             0.363    0.065    5.605    0.000    0.363    0.094
##    .EDE02             0.506    0.067    7.567    0.000    0.506    0.150
##    .EDE03             0.864    0.087    9.921    0.000    0.864    0.432
##    .EAB01             0.490    0.103    4.767    0.000    0.490    0.159
##    .EAB02             1.003    0.109    9.186    0.000    1.003    0.434
##    .EAB03             1.706    0.176    9.719    0.000    1.706    0.550
##    .desapego          0.952    0.149    6.396    0.000    0.495    0.495
##    .relajacion        0.514    0.085    6.023    0.000    0.316    0.316
##    .control           0.694    0.125    5.538    0.000    0.261    0.261
##    .dominio           1.191    0.200    5.956    0.000    0.602    0.602
##     recuperacion      0.972    0.199    4.892    0.000    1.000    1.000
##     energia           2.816    0.327    8.605    0.000    1.000    1.000
##    .vigor             0.536    0.085    6.327    0.000    0.189    0.189
##    .dedicacion        0.102    0.090    1.142    0.253    0.029    0.029
##    .absorcion         0.472    0.112    4.233    0.000    0.183    0.183
##     engagement        2.301    0.284    8.092    0.000    1.000    1.000
lavaanPlot(fit6, coef = TRUE, cov = TRUE)
fitMeasures(fit6, c("chisq","df","pvalue","cfi","tli","rmsea","srmr"))
##    chisq       df   pvalue      cfi      tli    rmsea     srmr 
## 2501.954 1024.000    0.000    0.880    0.873    0.080    0.074
# Comparación directa entre el modelo de medición (fit6) y el modelo estructural (fit5):
# si el ajuste es muy similar, el modelo estructural no pierde información relevante
# al imponer direccionalidad a las relaciones.
anova(fit6, fit5)
## Warning: lavaan->lavTestLRT():  
##    some models have the same degrees of freedom
## 
## Chi-Squared Difference Test
## 
##        Df   AIC   BIC Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
## fit6 1024 31118 31472  2502                                    
## fit5 1024 31118 31472  2502   6.29e-08     0       0

CONCLUSION

Parte 4 (Modelo de medición). Al comparar el modelo de medición (constructos correlacionados libremente) contra el modelo estructural de la Parte 3, (completar si el ajuste del modelo de medición fue igual, mejor o peor que el estructural según la prueba anova(fit6, fit5) y los índices de fitMeasures(fit6, ...); esto permite concluir si la estructura de relaciones causales propuesta en la Parte 3 es razonable o si se pierde ajuste al imponer direccionalidad entre los constructos.)

Conclusión general. (Integrar los hallazgos anteriores retomando la pregunta del caso: en qué medida las experiencias de recuperación fuera del trabajo, a través de la energía recuperada, se relacionan con un mayor engagement laboral de los colaboradores, y qué implicaciones prácticas tendría esto para la organización — por ejemplo, fomentar el desapego psicológico y el control sobre el tiempo libre de los colaboradores.)

EJERCICIO 4 “Modelo de Ecuaciones Estructurales (SEM)”

¿POR QUÉ LOS AUTORES ELIGIERON EL MODELO 1 Y NO EL MODELO 2?

A pesar de que las estadísticas de ajuste favorecían claramente al Modelo 2, los autores seleccionaron el Modelo 1 como modelo final. En la discusión son explícitos: la comparación adecuada entre modelos requiere más que comparar índices de ajuste; la razonabilidad de los valores del modelo y su correspondencia con la teoría son igual o más importantes que el ajuste estadístico. Las razones concretas, sustentadas en las tablas y figuras del artículo, son:

1. Coeficientes teóricamente incoherentes en el Modelo 2. Ocho de las nueve trayectorias entre variedad de habilidades, significancia de la tarea e identidad de la tarea hacia las tres variables de resultado no fueron estadísticamente significativas en el Modelo 2 2. El Modelo 1 revela el mecanismo psicológico real. En el Modelo 1, tanto la variedad de habilidades como la significancia de la tarea muestran relaciones indirectas positivas y significativas con las variables de resultado, mediadas por el significado experimentado 3. El riesgo práctico de elegir el modelo “mejor ajustado” pero incompleto. Los autores advierten que no incorporar los CPS en el JCM podría llevar a predicciones erróneas e intervenciones organizacionales mal dirigidas: un gerente podría creer que basta con aumentar la variedad de tareas de un puesto para mejorar la satisfacción de sus empleados, cuando en realidad ese efecto solo se produce si dicha variedad genera un mayor significado experimentado en el trabajo.

¿QUÉ LECCIÓN DEJA ESTO?

La lección central es que, en Modelado de Ecuaciones Estructurales (y en investigación aplicada en general), el mejor ajuste estadístico no es sinónimo del mejor modelo. Un modelo puede ajustar mejor simplemente por ser más simple o por omitir variables mediadoras clave, pero eso puede llevar a conclusiones incompletas o engañosas sobre los mecanismos causales reales del fenómeno estudiado.

La selección de un modelo debe basarse en un balance entre:

  • Evidencia empírica: índices de ajuste (CFI, RMSEA, GFI), varianza explicada, significancia de las trayectorias.
  • Coherencia teórica: ¿tienen sentido los coeficientes a la luz de la teoría establecida? ¿el modelo explica por qué ocurre un fenómeno, o solo que ocurre?

Como profesional que trabaje con SEM, esto enseña a no aceptar automáticamente el modelo con mejores números (CFI, RMSEA, AIC, CAIC) sin antes revisar si sus coeficientes son teóricamente razonables, y si ese “mejor ajuste” se logra a costa de perder poder explicativo sobre el fenómeno de interés.

CONCLUSIONES

  1. El Modelo 2 (de dos etapas, sin CPS) obtuvo mejores índices de ajuste absoluto y comparativo (GFI, CFI, X², AIC, CAIC) que el Modelo 1 (de tres etapas, con los CPS).

  2. A pesar de ello, los autores seleccionaron el Modelo 1 como modelo final, porque explicaba más varianza, tenía una mayor proporción de trayectorias significativas y — sobre todo — porque los coeficientes del Modelo 2 eran teóricamente inconsistentes (variables clave del diseño del puesto aparecían como “no relevantes” para los resultados).

  3. El Modelo 1 permitió detectar que la variedad de habilidades y la significancia de la tarea sí influyen en los resultados organizacionales, pero de forma indirecta, mediada por el significado experimentado — el mecanismo que la teoría original de Hackman y Oldham predice y que el modelo abreviado, al omitir los CPS, no puede capturar.

  4. La decisión de los autores ilustra un principio metodológico fundamental en SEM: los índices de ajuste son una condición necesaria pero no suficiente para elegir un modelo; la validez teórica y la interpretabilidad sustantiva de los coeficientes deben pesar tanto o más que el ajuste estadístico puro.

  5. Esto tiene implicaciones prácticas relevantes: adoptar acríticamente el modelo “más simple y mejor ajustado” en investigación aplicada de comportamiento organizacional puede llevar a diseñar intervenciones de rediseño de puestos mal fundamentadas, al ignorar el papel mediador de los estados psicológicos de los colaboradores en la cadena causal completa.

LS0tDQp0aXRsZTogIk1vZGVsbyBkZSBFY3VhY2lvbmVzIEVzdHJ1Y3R1cmFsZXMiDQphdXRob3I6ICJMdWNlcm9fU2FsYXphcl9BMDA4MzQ4OTMiDQpkYXRlOiAiMjAyNi0wOC0yNCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB5ZXRpDQotLS0NCiFbXShodHRwczovL3d3dy5yZXNlYXJjaGdhdGUubmV0L3Byb2ZpbGUvQW50b25pby1NZW5kZXotR2ltZW5lei9wdWJsaWNhdGlvbi8zMjE5NjA1NjQvZmlndXJlL2ZpZzIvQVM6NTczODg3MTM0ODc5NzQ1QDE1MTM4MzY3NjMzODMvRmlndXJhLTItTW9kZWxvLWRlLWVjdWFjaW9uZXMtZXN0cnVjdHVyYWwucG5nKQ0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogeWVsbG93OyI+VEVPUsONQTwvc3Bhbj4NCg0KTG9zICoqTW9kZWxvcyBkZSBFY3VhY2lvbmVzIEVzdHJ1Y3R1cmFsZXMqKiBzb24gdW5hIHRlY25pY2EgZGUgYW5hbGlzaXMgZGUgZXN0YWRpc3RpY2EgbXVsdGl2YXJpYWRhIHF1ZSBwZXJtaXRlIGFuYWxpemFyIHBhdHJvbmVzIGNvbXBsZWpvcyBkZSByZWxhY2lvbmVzIGVudHJlIHZhcmlhYmxlcywgcmVhbGl6YXIgY29tcGFyYWNpb25lcyBlbnRyZSBpbnRyYWdydXBvcyB5IHZhbGlkYXIgbW9kZWxvcyB0ZcOzcmljb3MgeSBlbXDDrXJpY29zLg0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5FSkVSQ0lDSU8gMSAiSG9semluZ2VyIHkgU3dpbmVmb3JkIjwvc3Bhbj4NCkhvbHppbmdlciB5IFN3aW5lZm9yZCByZWFsaXphcm9uIGV4YW1lbmVzIGRlIGhhYmlsaWRhZCBtZW50YWwgYSBhZG9sZXNjZW50ZXMgZGUgN8KwIHkgOMKwIGRlIGRvcyBlc2N1ZWxhcyAoUGFzdGV1ciB5IEdyYW5kIFdoaXRlKQ0KDQpMYSBiYXNlIGRlIGRhdG9zIGVzdMOhIGluY2x1aWRhIGNvbW8gcGFxdWV0ZSBlbiBSIGUgaW5jbHV5ZSBsYXMgc2lndWllbnRlcyBjb2x1bW5hczoNCg0KKiBzZXg6IEfDqW5lcm8gKDE9IG1hbGUsIDI9IGZlbWFsZSkNCiogeDE6ICBQZXJjZXBjacOzbiB2aXN1YWwgDQoqIHgyOiAgSnVlZ28gY29uIGN1Ym9zDQoqIHgzOiAgSnVlZ28gY29uIHBhc3RpbGxhcy9lc3BhY2lhbCANCiogeDQ6ICBDb21wcmVuc2nDs24gZGUgcMOhcnJhZm9zDQoqIHg1OiAgQ29tcGxldGFyIG9yYWNpb25lcw0KKiB4NjogIFNpZ25pZmljYWRvIGRlIHBhbGFicmFzDQoqIHg3OiAgU3VtYXMgYWNlbGVyYWRhcyANCiogeDg6ICBDb250byBhY2VsZXJhZG8gZGUgcHVudG9zDQoqIHg5OiAgRGlzY3JpbWluYWNpw7NuIGFjZWxlcmFkYSBkZSBtYXnDunNjdWxhcyByZWN0YXMgeSBjdXJ2YXMNCg0KU2UgYnVzY2EgaWRlbnRpZmljYXIgcXVlIGxhcyByZWxhY2lvbmVzIGVudHJlIGxhcyBoYWJpbGlkYWRlcyBWSVNVQUwgKHgxLCB4MiwgeDMpICwgVEVYVFVBTCAoeDQsIHg1LCB4NikgLCB5IFZFTE9DSURBRCAoeDcsIHg4LCB4OSkNCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMjIElOU1RBTEFDSU9OIERFIFBBUVVFVEVTIFkgTExBTUFSIExJQlJFUsONQVMNCg0KI2luc3RhbGwucGFja2FnZXMoImxhdmFhbiIpDQpsaWJyYXJ5KGxhdmFhbikNCiNpbnN0YWxsLnBhY2thZ2VzKCJsYXZhYW5QbG90IikNCmxpYnJhcnkobGF2YWFuUGxvdCkNCiNpbnN0YWxsLnBhY2thZ2VzKCJyZWFkeGwiKQ0KbGlicmFyeShyZWFkeGwpDQojaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQ0KbGlicmFyeShkcGx5cikNCg0KIyAiTEFWQUFOIiBzaWduaWZpY2EgIkFuYWxpc2lzIGRlIHZhcmlhYmxlcyBsYXRlbnRlcyINCmBgYA0KDQpgYGB7cn0NCiMjIElNUE9SVEFSIEJBU0UgREUgREFUT1MgKHVzYXJlbW9zIHVuYSB5YSBjYXJnYWRhIGVuIFJTdHVkaW8gY29tbyBlamVtcGxvcyBkZSBiYXNlcyBkZSBkYXRvcykNCg0KZGYxIDwtIEhvbHppbmdlclN3aW5lZm9yZDE5MzkNCmBgYA0KDQpgYGB7cn0NCiMjIERFU0NSSVBDSU9OIERFIExPUyBEQVRPUyAoRW50ZW5kZXIgbGEgYmFzZSBkZSBkYXRvcykNCnN1bW1hcnkoZGYxKQ0Kc3RyKGRmMSkNCmBgYA0KDQogVGlwb3MgZGUgZsOzcm11bGFzDQoNCjEuIFJlZ3Jlc2nDs24gKH4pIDogVmFyaWFibGUgcXVlIGRlcGVuZGUgZGUgb3RyYXMNCjIuIFZhcmlhYmxlcyBsYXRlbnRlcyAoPX4pIDogTm8gc2Ugb2JzZXJ2YSwgc2UgaW5maWVyZQ0KMy4gVmFyaWFuemFzIHkgY292YXJpYW56YXMgKH5+KSA6IFJlbGFjaW9uZXMgZW50cmUgdmFyaWFibGVzIGxhdGVudGVzIHkgb2JzZXJ2YWRhcyAodmFyaWFuemEgZW50cmUgc8OtIG1pc21hLCBjb3ZhcmlhbnphIGVudHJlIG90cmFzKQ0KNC4gSW50ZXJjZXB0byAofjEpOiBWYWxvciBlc3BlcmFkbyBjdWFuZG8gbGFzIGRlbWFzIHZhcmlhYmxlcyBzb24gY2Vybw0KDQptb2RlbG8gPC0gICAjUmVncmVzaW9uZXMNCiAgICAgICAgICAgICNWYXJpYWJsZXMgbGF0ZW50ZXMNCiAgICAgICAgICAgICNWYXJpYW56YXMgeSBDb3Zhcmlhbnphcw0KICAgICAgICAgICAgI0ludGVyY2VwdG8NCg0KYGBge3J9DQojIEVzdHJ1Y3R1cmFyIGVsIG1vZGVsbw0KDQptb2RlbG8xIDwtICcgICNSZWdyZXNpb25lcw0KICAgICAgICAgICAgI1ZhcmlhYmxlcyBsYXRlbnRlcw0KICAgICAgICAgICAgdmlzdWFsPX54MSArIHgyICsgeDMNCiAgICAgICAgICAgIHRleHR1YWw9fng0ICsgeDUgKyB4Ng0KICAgICAgICAgICAgdmVsb2NpZGFkPX54NyArIHg4ICsgeDkNCiAgICAgICAgICAgICNWYXJpYW56YXMgeSBDT3Zhcmlhbnphcw0KICAgICAgICAgICAgI0ludGVyY2VwdG8NCiAgICAgICAgICAgICcNCmBgYA0KDQpgYGB7cn0NCiMgR2VuZXJhciBhbmFsaXNpcyBmYWN0b3JpYWwgY29tcHJvYmF0b3Jpby9Db25maXJtYXRvcmlvICgiQ0ZBIikNCg0KZml0MSA8LSBjZmEobW9kZWxvMSwgZGYxKQ0Kc3VtbWFyeShmaXQxKQ0KbGF2YWFuUGxvdCAoZml0MSwgY29lZj1UUlVFLCBjb3Y9VFJVRSkNCg0KYGBgDQoNCmBgYHtyfQ0KIyBHZW5lcmFyIG1vZGVsbyBkZSBFQ1VBQ0lPTiBFU1RSVUNUVVJBTCAoIlNFTSIpDQoNCmZpdDExIDwtIHNlbShtb2RlbG8xLCBkZjEpDQpzdW1tYXJ5KGZpdDExKQ0KbGF2YWFuUGxvdChmaXQxMSwgY29lZj1UUlVFLCBjb3Y9VFJVRSkNCmBgYA0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Q09OQ0xVU0lPTjwvc3Bhbj4NCkVsIG1vZGVsbyBkZSAzIGZhY3RvcmVzICh2aXN1YWwsIHRleHR1YWwgeSB2ZWxvY2lkYWQpIG11ZXN0cmEgdW4gYWp1c3RlIGFjZXB0YWJsZTogQ0ZJIHkgVExJIGNlcmNhbm9zIGEgLjkwLS45MyB5IHVuIFNSTVIgYmFqbyAofi4wNiksIGF1bnF1ZSBlbCBSTVNFQSAofi4wOSkgc3VnaWVyZSBxdWUgZWwgbW9kZWxvIGHDum4gcG9kcsOtYSBtZWpvcmFyc2UuIExhcyBjYXJnYXMgZmFjdG9yaWFsZXMgZGUgbG9zIDkgw610ZW1zIHNvYnJlIHN1cyByZXNwZWN0aXZvcyBmYWN0b3JlcyBmdWVyb24gc2lnbmlmaWNhdGl2YXMsIGNvbmZpcm1hbmRvIHF1ZSBsYXMgaGFiaWxpZGFkZXMgdmlzdWFsLCB0ZXh0dWFsIHkgZGUgdmVsb2NpZGFkIHNvbiBkaW1lbnNpb25lcyBkaXN0aW50YXMgcGVybyBjb3JyZWxhY2lvbmFkYXMgZW50cmUgc8OtLiBFbCByZXN1bHRhZG8gZGVsIENGQSB5IGRlbCBTRU0gKGBmaXQxYCB2cyBgZml0MTFgKSBlcyBpZMOpbnRpY28sIHlhIHF1ZSBhbCBubyBkZWZpbmlyc2UgcmVncmVzaW9uZXMgZW50cmUgbG9zIGZhY3RvcmVzLCBhbWJvcyBtb2RlbG9zIHNvbiBlc3RydWN0dXJhbG1lbnRlIGVxdWl2YWxlbnRlcyAoc29sbyBzZSBlc3RpbWFuIGxhcyBjYXJnYXMgeSBsYXMgY292YXJpYW56YXMgZW50cmUgbG9zIDMgZmFjdG9yZXMgbGF0ZW50ZXMpLg0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5FSkVSQ0lDSU8gMiAiRGVtb2NyYWNpYSBwb2xpdGljYSBlIElOZHVzdHJpYWxpemFjacOzbiI8L3NwYW4+DQpMYSBiYXNlIGRlIGRhdG9zIGNvbnRpZW5lIGRpc3RpbnRhcyBtZWRpY2lvbmVzIHNvYnJlIGxhIGRlbW9jcmFjaWEgcG9saXRpY2EgZSBpbmR1c3RyaWFsaXphY2lvbiBlbiBwYWlzZXMgZW4gZGVzYXJyb2xsbyBlbnRyZSAxOTYwIHkgMTk2NS4gDQpMYSB0YWJsYSBpbmNsdXllIGxvIHNpZ3VpZW50ZXMgZGF0b3M6DQoNCip5MTogQ2FsaWZpY2FjaW9uZXMgc29icmUgbGliZXJ0YWQgZGUgcHJlbnNhDQoqeTI6IExpYmVydGFkIGRlIGxhIG9wb3NpY2nDs24gcG9saXRpY2EgZW4gMTk2MA0KKnkzOiBJbXBhcmNpYWxpZGFkIGRlIGVsZWNjaW9uZXMgZW4gMTk2MA0KKnk0OiBFZmljYWNpYSBkZSBsYSBsZWdpc2xhdHVyYSBlbGVjdGEgZW4gMTk2MA0KKnk1OiBDYWxpZmljYWNpb25lcyBzb2JyZSBsaWJlcnRhZCBkZSBwcmVuc2ENCip5NjogTGliZXJ0YWQgZGUgbGEgb3Bvc2ljacOzbiBwb2xpdGljYSBlbiAxOTY1DQoqeTc6IEltcGFyY2lhbGlkYWQgZGUgZWxlY2Npb25lcyBlbiAxOTY1DQoqeTg6IEVmaWNhY2lhIGRlIGxhIGxlZ2lzbGF0dXJhIGVsZWN0YSBlbiAxOTY1DQoqeDE6IFBJQiBwZXIgY2FwaXRhIGVuIDE5NjANCip4MjogQ29uc3VtbyBkZSBlbmVyZ8OtYSBpbmFuaW1hZGEgcMOpciBjw6FwaXRhIGVuIDE5NjANCip4MzogUG9yY2VudGFqZSBkZSBsYSBmdWVyemEgbGFib3JhbCBlbiBsYSBpbmR1c3RyaWEgLi4uDQpgYGB7cn0NCmRhdGFmcmFtZTIgPC0gUG9saXRpY2FsRGVtb2NyYWN5DQpgYGANCg0KYGBge3J9DQojIyBERVNDUklQQ0lPTiBERSBMT1MgREFUT1MgKEVudGVuZGVyIGxhIGJhc2UgZGUgZGF0b3MpDQpzdW1tYXJ5KGRhdGFmcmFtZTIpDQpzdHIoZGF0YWZyYW1lMikNCmBgYA0KDQpgYGB7cn0NCm1vZGVsbzIgPC0gJyAgI1JlZ3Jlc2lvbmVzDQogICAgICAgICAgICAjVmFyaWFibGVzIGxhdGVudGVzDQogICAgICAgICAgICBkZW1vY3JhY2lhMTk2MD1+eTEgKyB5MiArIHkzICsgeTQNCiAgICAgICAgICAgIGRlbW9jcmFjaWExOTY1PX55NSArIHk2ICsgeTcgKyB5OA0KICAgICAgICAgICAgaW5kdXN0cmlhMTk2MD1+eDEgKyB4MiArIHgzDQogICAgICAgICAgICAjVmFyaWFuemFzIHkgQ092YXJpYW56YXMNCiAgICAgICAgICAgICNJbnRlcmNlcHRvDQogICAgICAgICAgICAnDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+RUpFUkNJQ0lPIDMgIk1vdGl2YWNpw7NuIExhYm9yYWwiPC9zcGFuPg0KTGEgZGVtb2NyYWNpYSBjdWVudGEgY29uIDggZGVyZWNob3MgeSBsaWJlcnRhZGVzIHBvbGl0aWNhcy4uLg0KDQoxLiBMaWJlcnRhZCBkZSBmb3JtYXIgb3JnYW5pemFjaW9uZXMgeSB1bmlyc2UgYSBlbGxhcw0KMi4gTGliZXJ0YWQgZGUgZXhwcmVzaW9uDQozLiBEZXJlY2hvIGFsIHZvdG8NCjQuIERlcmVjaG8gZGUgZWxlZ2lyIGNhcmdvcyBww7pibGljb3MNCjUuIERlcmVjaG8gZGUgbG9zIGzDrWRlcmVzIGEgY29tcGV0aXIgcG9yIHZvdG9zDQo2LiBMaWJlcnRhZCBkZSB0ZW5lciBmdWVudGVzIGFsdGVybmF0aXZhcyBkZSBpbmZvcm1hY2nDs24NCjcuIERlcmVjaG8gZGUgZWxlY2Npb25lcyBsaWJyZXMgeSBqdXN0YXMNCjguIERlcmVjaG8gZGUgaW5zdGl0dWNpb25lcyANCg0KRW4gZWwgbGlicm8gZGUgIldIWSBOQVRJT05TIEZBTEwiIGxvcyBhdXRvcmVzIGNvbmNsdXllbiBxdWUgc29uIGxhcyBtaXNtYXMgaW5zdGl0dWNpb25lcyBkZWwgcGHDrXMgbGFzIHF1ZSBkZXRlcm1pbmFuIGVsIGZyYWNhc28uDQpgYGB7cn0NCiMgR2VuZXJhciBhbmFsaXNpcyBmYWN0b3JpYWwgY29tcHJvYmF0b3Jpby9Db25maXJtYXRvcmlvICgiQ0ZBIikNCg0KZml0MiA8LSBjZmEobW9kZWxvMiwgZGF0YWZyYW1lMikNCnN1bW1hcnkoZml0MikNCmxhdmFhblBsb3QgKGZpdDIsIGNvZWY9VFJVRSwgY292PVRSVUUpDQoNCmBgYA0KDQpgYGB7cn0NCiMgR2VuZXJhciBtb2RlbG8gZGUgRUNVQUNJT04gRVNUUlVDVFVSQUwgKCJTRU0iKQ0KDQpmaXQyMiA8LSBzZW0obW9kZWxvMiwgZGF0YWZyYW1lMikNCnN1bW1hcnkoZml0MjIpDQpsYXZhYW5QbG90KGZpdDIyLCBjb2VmPVRSVUUsIGNvdj1UUlVFKQ0KYGBgDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5DT05DTFVTSU9OPC9zcGFuPg0KDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPkVKRVJDSUNJTyAzICJNb3RpdmFjacOzbiBMYWJvcmFsIjwvc3Bhbj4NCg0KRXN0ZSBlamVyY2ljaW8gdXRpbGl6YSBsYSBiYXNlIGRlIGRhdG9zICoqRGF0b3NfU0VNX0VuZy54bHN4KiosIHF1ZSBjb250aWVuZSBsYXMgcmVzcHVlc3RhcyBkZSBsb3MgY29sYWJvcmFkb3JlcyBhIGxvcyByZWFjdGl2b3MgZGU6DQoNCiogKipFeHBlcmllbmNpYXMgZGUgcmVjdXBlcmFjacOzbioqIChkZXNhcGVnbyBwc2ljb2zDs2dpY28gIlJQRCIsIHJlbGFqYWNpw7NuICJSUkUiLCBjb250cm9sIHNvYnJlIGVsIHRpZW1wbyBsaWJyZSAiUkNPIiB5IGRvbWluaW8gIlJNQSIpDQoqICoqRW5lcmfDrWEgcmVjdXBlcmFkYSoqICgiRU4iKQ0KKiAqKkVuZ2FnZW1lbnQgbGFib3JhbCoqOiB2aWdvciAoIkVWSSIpLCBkZWRpY2FjacOzbiAoIkVERSIpIHkgYWJzb3JjacOzbiAoIkVBQiIpDQoNCmBgYHtyfQ0KIyBJbXBvcnRhciBsYSBiYXNlIGRlIGRhdG9zIChlbCBhcmNoaXZvIGRlYmUgZXN0YXIgZW4gZWwgbWlzbW8gZm9sZGVyIHF1ZSBlc3RlIC5SbWQsDQojIG8gYmllbiByZWVtcGxhemFyIGxhIHJ1dGEgcG9yIGxhIHF1ZSBhcnJvamUgZmlsZS5jaG9vc2UoKSkNCg0KIyBkYXRhZnJhbWUzIDwtIHJlYWRfZXhjZWwoZmlsZS5jaG9vc2UoKSkgICMgLT4gb3BjacOzbiBpbnRlcmFjdGl2YSBwYXJhIGVsZWdpciBlbCBhcmNoaXZvDQpkYXRhZnJhbWUzIDwtIHJlYWRfZXhjZWwoIkRhdG9zX1NFTV9FbmcueGxzeCIpDQoNCiMgQWxndW5vcyBub21icmVzIGRlIGNvbHVtbmFzIHZpZW5lbiBjb24gdW4gZXNwYWNpbyBleHRyYSBhbCBmaW5hbCAoZWouICJSUEQwMSAiKTsNCiMgc2UgbGltcGlhbiBwYXJhIHF1ZSBjb2luY2lkYW4gZXhhY3RhbWVudGUgY29uIGxvcyBub21icmVzIHVzYWRvcyBlbiBsb3MgbW9kZWxvcw0KbmFtZXMoZGF0YWZyYW1lMykgPC0gdHJpbXdzKG5hbWVzKGRhdGFmcmFtZTMpKQ0KYGBgDQoNCmBgYHtyfQ0KIyMgREVTQ1JJUENJT04gREUgTE9TIERBVE9TIChFbnRlbmRlciBsYSBiYXNlIGRlIGRhdG9zKQ0Kc3VtbWFyeShkYXRhZnJhbWUzKQ0Kc3RyKGRhdGFmcmFtZTMpDQpgYGANCg0KIyMjIDxzcGFuIHN0eWxlPSJjb2xvcjogZ3JlZW47Ij5QQVJURSAxOiBDRkEgZGUgc2VndW5kbyBvcmRlbiAtIEV4cGVyaWVuY2lhcyBkZSByZWN1cGVyYWNpw7NuPC9zcGFuPg0KDQpTZSBlc3BlY2lmaWNhbiBsb3MgNCBmYWN0b3JlcyBkZSBwcmltZXIgb3JkZW4gKGRlc2FwZWdvLCByZWxhamFjacOzbiwgY29udHJvbCB5IGRvbWluaW8pIHkgdW4gZmFjdG9yIGRlIHNlZ3VuZG8gb3JkZW4gKCoqcmVjdXBlcmFjacOzbioqKSBxdWUgZXhwbGljYSBsYSBjb3ZhcmlhbnphIGVudHJlIGVsbG9zLg0KDQpgYGB7cn0NCiNQQVJURSAxIEV4cGVyaWVuY2lhcyBkZSByZWN1cGVyYWNpb24NCg0KbW9kZWxvMyA8LSAnICAjVmFyaWFibGVzIGxhdGVudGVzIGRlIHByaW1lciBvcmRlbg0KICAgICAgICAgICAgZGVzYXBlZ28gICA9fiBSUEQwMSArIFJQRDAyICsgUlBEMDMgKyBSUEQwNSArIFJQRDA2ICsgUlBEMDcgKyBSUEQwOCArIFJQRDA5ICsgUlBEMTANCiAgICAgICAgICAgIHJlbGFqYWNpb24gPX4gUlJFMDIgKyBSUkUwMyArIFJSRTA0ICsgUlJFMDUgKyBSUkUwNiArIFJSRTA3ICsgUlJFMTANCiAgICAgICAgICAgIGNvbnRyb2wgICAgPX4gUkNPMDIgKyBSQ08wMyArIFJDTzA0ICsgUkNPMDUgKyBSQ08wNiArIFJDTzA3DQogICAgICAgICAgICBkb21pbmlvICAgID1+IFJNQTAyICsgUk1BMDMgKyBSTUEwNCArIFJNQTA1ICsgUk1BMDYgKyBSTUEwNyArIFJNQTA4ICsgUk1BMDkgKyBSTUExMA0KDQogICAgICAgICAgICAjVmFyaWFibGUgbGF0ZW50ZSBkZSBzZWd1bmRvIG9yZGVuDQogICAgICAgICAgICByZWN1cGVyYWNpb24gPX4gZGVzYXBlZ28gKyByZWxhamFjaW9uICsgY29udHJvbCArIGRvbWluaW8NCiAgICAgICAgICAgICcNCmBgYA0KDQpgYGB7cn0NCiMgR2VuZXJhciBhbmFsaXNpcyBmYWN0b3JpYWwgY29tcHJvYmF0b3Jpby9Db25maXJtYXRvcmlvICgiQ0ZBIikgZGUgc2VndW5kbyBvcmRlbg0KDQpmaXQzIDwtIGNmYShtb2RlbG8zLCBkYXRhID0gZGF0YWZyYW1lMykNCnN1bW1hcnkoZml0MywgZml0Lm1lYXN1cmVzID0gVFJVRSwgc3RhbmRhcmRpemVkID0gVFJVRSkNCmxhdmFhblBsb3QoZml0MywgY29lZiA9IFRSVUUsIGNvdiA9IFRSVUUpDQpgYGANCg0KYGBge3J9DQojIFJldmlzYXIgw7puaWNhbWVudGUgbG9zIMOtbmRpY2VzIGRlIGFqdXN0ZSBtw6FzIHJlbGV2YW50ZXMNCmZpdE1lYXN1cmVzKGZpdDMsIGMoImNoaXNxIiwiZGYiLCJwdmFsdWUiLCJjZmkiLCJ0bGkiLCJybXNlYSIsInJtc2VhLmNpLmxvd2VyIiwicm1zZWEuY2kudXBwZXIiLCJzcm1yIikpDQpgYGANCg0KKipDcml0ZXJpb3MgZGUgcmVmZXJlbmNpYToqKiBDRkkgeSBUTEkg4omlIC45MCAoaWRlYWwg4omlIC45NSksIFJNU0VBIOKJpCAuMDggKGlkZWFsIOKJpCAuMDUpIHkgU1JNUiDiiaQgLjA4IHNlIGNvbnNpZGVyYW4gYWp1c3RlIGFjZXB0YWJsZS9idWVuby4NCg0KYGBge3J9DQojIERlcHVyYWNpw7NuIGRlbCBtb2RlbG86IHJldmlzYXIgw61uZGljZXMgZGUgbW9kaWZpY2FjacOzbiBlIGl0ZW1zIGNvbiBjYXJnYXMgYmFqYXMgKDwwLjQpDQojIHBhcmEgZGVjaWRpciBxdcOpIHJlYWN0aXZvcyBlbGltaW5hciBvIHF1w6kgY292YXJpYW56YXMgZGUgZXJyb3IgbGliZXJhcg0KbW9kaWZpY2F0aW9uaW5kaWNlcyhmaXQzLCBzb3J0LiA9IFRSVUUsIG1pbmltdW0udmFsdWUgPSAxMCkgJT4lIGhlYWQoMTUpDQpzdGFuZGFyZGl6ZWRTb2x1dGlvbihmaXQzKSAlPiUgZmlsdGVyKG9wID09ICI9fiIpICU+JSBhcnJhbmdlKGVzdC5zdGQpDQpgYGANCg0KYGBge3J9DQojIE1vZGVsbyBkZXB1cmFkbzogc2UgZWxpbWluYW4gZGVsIG1vZGVsbyBvcmlnaW5hbCBsb3MgcmVhY3Rpdm9zIGNvbiBjYXJnYXMgZXN0YW5kYXJpemFkYXMNCiMgYmFqYXMgKDwwLjQpIGRldGVjdGFkb3MgYXJyaWJhIHkvbyBzZSBsaWJlcmFuIGxhcyBjb3ZhcmlhbnphcyBkZSBlcnJvciBtw6FzIGFsdGFzIHN1Z2VyaWRhcw0KIyBwb3IgbG9zIMOtbmRpY2VzIGRlIG1vZGlmaWNhY2nDs24uIChBanVzdGFyIGVzdGEgbGlzdGEgY29uIGxvcyDDrXRlbXMgcmVhbGVzIHF1ZSByZXN1bHRlbg0KIyBwcm9ibGVtw6F0aWNvcyBhbCBjb3JyZXIgZWwgY2h1bmsgYW50ZXJpb3IgY29uIGxvcyBkYXRvcykNCg0KbW9kZWxvM2IgPC0gJyAgI1ZhcmlhYmxlcyBsYXRlbnRlcyBkZSBwcmltZXIgb3JkZW4gKGRlcHVyYWRhcykNCiAgICAgICAgICAgIGRlc2FwZWdvICAgPX4gUlBEMDEgKyBSUEQwMiArIFJQRDAzICsgUlBEMDUgKyBSUEQwNiArIFJQRDA3ICsgUlBEMDggKyBSUEQwOSArIFJQRDEwDQogICAgICAgICAgICByZWxhamFjaW9uID1+IFJSRTAyICsgUlJFMDMgKyBSUkUwNCArIFJSRTA1ICsgUlJFMDYgKyBSUkUwNyArIFJSRTEwDQogICAgICAgICAgICBjb250cm9sICAgID1+IFJDTzAyICsgUkNPMDMgKyBSQ08wNCArIFJDTzA1ICsgUkNPMDYgKyBSQ08wNw0KICAgICAgICAgICAgZG9taW5pbyAgICA9fiBSTUEwMiArIFJNQTAzICsgUk1BMDQgKyBSTUEwNSArIFJNQTA2ICsgUk1BMDcgKyBSTUEwOCArIFJNQTA5ICsgUk1BMTANCg0KICAgICAgICAgICAgI1ZhcmlhYmxlIGxhdGVudGUgZGUgc2VndW5kbyBvcmRlbg0KICAgICAgICAgICAgcmVjdXBlcmFjaW9uID1+IGRlc2FwZWdvICsgcmVsYWphY2lvbiArIGNvbnRyb2wgKyBkb21pbmlvDQoNCiAgICAgICAgICAgICNDb3ZhcmlhbnphcyBkZSBlcnJvciBsaWJlcmFkYXMgc2Vnw7puIMOtbmRpY2VzIGRlIG1vZGlmaWNhY2nDs24gKGVqZW1wbG8sIGFqdXN0YXIpDQogICAgICAgICAgICAjUlBEMDEgfn4gUlBEMDINCiAgICAgICAgICAgICcNCg0KZml0M2IgPC0gY2ZhKG1vZGVsbzNiLCBkYXRhID0gZGF0YWZyYW1lMykNCmZpdE1lYXN1cmVzKGZpdDNiLCBjKCJjaGlzcSIsImRmIiwicHZhbHVlIiwiY2ZpIiwidGxpIiwicm1zZWEiLCJzcm1yIikpDQpsYXZhYW5QbG90KGZpdDNiLCBjb2VmID0gVFJVRSwgY292ID0gVFJVRSkNCmBgYA0KDQoqKlBhcnRlIDEgKEV4cGVyaWVuY2lhcyBkZSByZWN1cGVyYWNpw7NuKS4qKiBFbCBtb2RlbG8gZGUgc2VndW5kbyBvcmRlbiBwcm9wdWVzdG8gYWdydXBhIGxvcyBjdWF0cm8gZG9taW5pb3MgKGRlc2FwZWdvLCByZWxhamFjacOzbiwgY29udHJvbCB5IGRvbWluaW8pIGJham8gdW4gw7puaWNvIGZhY3RvciBkZSAiZXhwZXJpZW5jaWFzIGRlIHJlY3VwZXJhY2nDs24iLiAqKENvbXBsZXRhciBhcXXDrSwgdHJhcyBjb3JyZXIgZWwgY2h1bmsgZGUgYGZpdE1lYXN1cmVzKGZpdDMsIC4uLilgLCBsb3MgdmFsb3JlcyBvYnRlbmlkb3MgZGUgQ0ZJLCBUTEksIFJNU0VBIHkgU1JNUiwgaW5kaWNhbmRvIHNpIGVsIG1vZGVsbyBpbmljaWFsIG1vc3Ryw7MgdW4gYWp1c3RlIGFjZXB0YWJsZS4gU2kgbm8gZnVlIGFzw60sIGRlc2NyaWJpciBxdcOpIHJlYWN0aXZvcyBzZSBlbGltaW5hcm9uIG8gcXXDqSBjb3ZhcmlhbnphcyBkZSBlcnJvciBzZSBsaWJlcmFyb24gZW4gYG1vZGVsbzNiYCBjb24gYmFzZSBlbiBsYXMgY2FyZ2FzIGZhY3RvcmlhbGVzIGJhamFzIHkgbG9zIMOtbmRpY2VzIGRlIG1vZGlmaWNhY2nDs24sIHkgcmVwb3J0YXIgY8OzbW8gbWVqb3Jhcm9uIGxvcyDDrW5kaWNlcyBkZSBhanVzdGUgdHJhcyBsYSBkZXB1cmFjacOzbi4pKg0KIyMjIDxzcGFuIHN0eWxlPSJjb2xvcjogZ3JlZW47Ij5QQVJURSAyOiBDRkEgZGUgcHJpbWVyIG9yZGVuIC0gRW5lcmfDrWEgcmVjdXBlcmFkYTwvc3Bhbj4NCg0KYGBge3J9DQojUEFSVEUgMiBFbmVyZ8OtYSByZWN1cGVyYWRhDQojIChlbiBsYSBiYXNlIGRlIGRhdG9zIHNvbG8gZXhpc3RlbiBsb3MgcmVhY3Rpdm9zIEVOMDEsIEVOMDIsIEVOMDQtRU4wODsgRU4wMywgRU4wOSB5IEVOMTAgbm8gZXN0w6FuIHByZXNlbnRlcykNCg0KbW9kZWxvNCA8LSAnICAjVmFyaWFibGUgbGF0ZW50ZQ0KICAgICAgICAgICAgZW5lcmdpYSA9fiBFTjAxICsgRU4wMiArIEVOMDQgKyBFTjA1ICsgRU4wNiArIEVOMDcgKyBFTjA4DQogICAgICAgICAgICAnDQoNCmZpdDQgPC0gY2ZhKG1vZGVsbzQsIGRhdGEgPSBkYXRhZnJhbWUzKQ0Kc3VtbWFyeShmaXQ0LCBmaXQubWVhc3VyZXMgPSBUUlVFLCBzdGFuZGFyZGl6ZWQgPSBUUlVFKQ0KbGF2YWFuUGxvdChmaXQ0LCBjb2VmID0gVFJVRSwgY292ID0gVFJVRSkNCmBgYA0KDQpgYGB7cn0NCmZpdE1lYXN1cmVzKGZpdDQsIGMoImNoaXNxIiwiZGYiLCJwdmFsdWUiLCJjZmkiLCJ0bGkiLCJybXNlYSIsInNybXIiKSkNCmBgYA0KDQpgYGB7cn0NCiMgRGVwdXJhY2nDs246IHJldmlzYXIgY2FyZ2FzIGUgw61uZGljZXMgZGUgbW9kaWZpY2FjacOzbg0Kc3RhbmRhcmRpemVkU29sdXRpb24oZml0NCkgJT4lIGZpbHRlcihvcCA9PSAiPX4iKSAlPiUgYXJyYW5nZShlc3Quc3RkKQ0KbW9kaWZpY2F0aW9uaW5kaWNlcyhmaXQ0LCBzb3J0LiA9IFRSVUUsIG1pbmltdW0udmFsdWUgPSAxMCkgJT4lIGhlYWQoMTApDQpgYGANCg0KYGBge3J9DQojIE1vZGVsbyBkZXB1cmFkbyAoZWxpbWluYXIgw610ZW1zIGNvbiBjYXJnYSA8MC40IGRldGVjdGFkb3MgYXJyaWJhOyBlamVtcGxvIGdlbsOpcmljbykNCm1vZGVsbzRiIDwtICcgIGVuZXJnaWEgPX4gRU4wMSArIEVOMDIgKyBFTjA0ICsgRU4wNSArIEVOMDYgKyBFTjA3ICsgRU4wOA0KICAgICAgICAgICAgJw0KZml0NGIgPC0gY2ZhKG1vZGVsbzRiLCBkYXRhID0gZGF0YWZyYW1lMykNCmZpdE1lYXN1cmVzKGZpdDRiLCBjKCJjaGlzcSIsImRmIiwicHZhbHVlIiwiY2ZpIiwidGxpIiwicm1zZWEiLCJzcm1yIikpDQpgYGANCg0KKipQYXJ0ZSAyIChFbmVyZ8OtYSByZWN1cGVyYWRhKS4qKiBFbCBhbsOhbGlzaXMgZmFjdG9yaWFsIGRlIHByaW1lciBvcmRlbiBldmFsdcOzIHNpIGxvcyByZWFjdGl2b3MgRU4wMSwgRU4wMiB5IEVOMDQtRU4wOCBjb25mb3JtYW4gdW5hIHNvbGEgZGltZW5zacOzbiBkZSBlbmVyZ8OtYSByZWN1cGVyYWRhLiAqKENvbXBsZXRhciBjb24gbG9zIHZhbG9yZXMgZGUgYWp1c3RlIGRlIGBmaXQ0YC9gZml0NGJgLCBzZcOxYWxhbmRvIHNpIHRvZG9zIGxvcyDDrXRlbXMgcHJlc2VudGFyb24gY2FyZ2FzIGZhY3RvcmlhbGVzIGFkZWN1YWRhcyAoPjAuNCkgbyBzaSBmdWUgbmVjZXNhcmlvIGVsaW1pbmFyIGFsZ3VubyBwYXJhIG1lam9yYXIgZWwgYWp1c3RlLikqDQoNCiMjIyA8c3BhbiBzdHlsZT0iY29sb3I6IGdyZWVuOyI+UEFSVEUgMzogTW9kZWxvIGRlIHNlbmRlcm9zIC0gRWZlY3RvIG1lZGlhZG9yIGRlIGxhIGVuZXJnw61hIHJlY3VwZXJhZGE8L3NwYW4+DQoNCg0KYGBge3J9DQojUEFSVEUgMyBNb2RlbG8gZGUgc2VuZGVyb3MgY29uIG1lZGlhY2nDs24NCg0KbW9kZWxvNSA8LSAnICAjVmFyaWFibGVzIGxhdGVudGVzIGRlIHByaW1lciBvcmRlbiAocmVjdXBlcmFjacOzbikNCiAgICAgICAgICAgIGRlc2FwZWdvICAgPX4gUlBEMDEgKyBSUEQwMiArIFJQRDAzICsgUlBEMDUgKyBSUEQwNiArIFJQRDA3ICsgUlBEMDggKyBSUEQwOSArIFJQRDEwDQogICAgICAgICAgICByZWxhamFjaW9uID1+IFJSRTAyICsgUlJFMDMgKyBSUkUwNCArIFJSRTA1ICsgUlJFMDYgKyBSUkUwNyArIFJSRTEwDQogICAgICAgICAgICBjb250cm9sICAgID1+IFJDTzAyICsgUkNPMDMgKyBSQ08wNCArIFJDTzA1ICsgUkNPMDYgKyBSQ08wNw0KICAgICAgICAgICAgZG9taW5pbyAgICA9fiBSTUEwMiArIFJNQTAzICsgUk1BMDQgKyBSTUEwNSArIFJNQTA2ICsgUk1BMDcgKyBSTUEwOCArIFJNQTA5ICsgUk1BMTANCiAgICAgICAgICAgIHJlY3VwZXJhY2lvbiA9fiBkZXNhcGVnbyArIHJlbGFqYWNpb24gKyBjb250cm9sICsgZG9taW5pbw0KDQogICAgICAgICAgICAjVmFyaWFibGUgbGF0ZW50ZTogZW5lcmfDrWEgcmVjdXBlcmFkYSAobWVkaWFkb3JhKQ0KICAgICAgICAgICAgZW5lcmdpYSA9fiBFTjAxICsgRU4wMiArIEVOMDQgKyBFTjA1ICsgRU4wNiArIEVOMDcgKyBFTjA4DQoNCiAgICAgICAgICAgICNWYXJpYWJsZSBsYXRlbnRlIGRlIHNlZ3VuZG8gb3JkZW46IGVuZ2FnZW1lbnQgbGFib3JhbA0KICAgICAgICAgICAgdmlnb3IgICAgICAgPX4gRVZJMDEgKyBFVkkwMiArIEVWSTAzDQogICAgICAgICAgICBkZWRpY2FjaW9uICA9fiBFREUwMSArIEVERTAyICsgRURFMDMNCiAgICAgICAgICAgIGFic29yY2lvbiAgID1+IEVBQjAxICsgRUFCMDIgKyBFQUIwMw0KICAgICAgICAgICAgZW5nYWdlbWVudCAgPX4gdmlnb3IgKyBkZWRpY2FjaW9uICsgYWJzb3JjaW9uDQoNCiAgICAgICAgICAgICNSZWdyZXNpb25lcyAoc2VuZGVyb3MgZXN0cnVjdHVyYWxlcykNCiAgICAgICAgICAgIGVuZXJnaWEgICAgfiBhKnJlY3VwZXJhY2lvbg0KICAgICAgICAgICAgZW5nYWdlbWVudCB+IGIqZW5lcmdpYSArIGMqcmVjdXBlcmFjaW9uDQoNCiAgICAgICAgICAgICNFZmVjdG9zIGluZGlyZWN0bywgZGlyZWN0byB5IHRvdGFsIChtZWRpYWNpw7NuKQ0KICAgICAgICAgICAgaW5kaXJlY3RvIDo9IGEqYg0KICAgICAgICAgICAgZGlyZWN0byAgIDo9IGMNCiAgICAgICAgICAgIHRvdGFsICAgICA6PSBjICsgKGEqYikNCiAgICAgICAgICAgICcNCg0KZml0NSA8LSBzZW0obW9kZWxvNSwgZGF0YSA9IGRhdGFmcmFtZTMpDQpzdW1tYXJ5KGZpdDUsIGZpdC5tZWFzdXJlcyA9IFRSVUUsIHN0YW5kYXJkaXplZCA9IFRSVUUpDQpsYXZhYW5QbG90KGZpdDUsIGNvZWYgPSBUUlVFLCBjb3YgPSBUUlVFKQ0KYGBgDQoNCmBgYHtyfQ0KZml0TWVhc3VyZXMoZml0NSwgYygiY2hpc3EiLCJkZiIsInB2YWx1ZSIsImNmaSIsInRsaSIsInJtc2VhIiwic3JtciIpKQ0KDQojIEVmZWN0b3MgZGlyZWN0bywgaW5kaXJlY3RvIHkgdG90YWwgY29uIHN1IHNpZ25pZmljYW5jaWENCnBhcmFtZXRlckVzdGltYXRlcyhmaXQ1LCBzdGFuZGFyZGl6ZWQgPSBUUlVFKSAlPiUgZmlsdGVyKG9wID09ICI6PSIpDQpgYGANCg0KDQoqKlBhcnRlIDMgKE1lZGlhY2nDs24pLioqIEVsIG1vZGVsbyBkZSBzZW5kZXJvcyBldmFsdcOzIHNpIGxhIGVuZXJnw61hIHJlY3VwZXJhZGEgbWVkaWEgbGEgcmVsYWNpw7NuIGVudHJlIGxhcyBleHBlcmllbmNpYXMgZGUgcmVjdXBlcmFjacOzbiB5IGVsIGVuZ2FnZW1lbnQgbGFib3JhbC4gKihDb21wbGV0YXIgaW5kaWNhbmRvIGVsIHNpZ25vIHkgc2lnbmlmaWNhbmNpYSBkZSBsb3MgY29lZmljaWVudGVzIGBhYCAocmVjdXBlcmFjacOzbiDihpIgZW5lcmfDrWEpLCBgYmAgKGVuZXJnw61hIOKGkiBlbmdhZ2VtZW50KSB5IGBjYCAocmVjdXBlcmFjacOzbiDihpIgZW5nYWdlbWVudCksIGFzw60gY29tbyBkZWwgZWZlY3RvIGBpbmRpcmVjdG9gLCBgZGlyZWN0b2AgeSBgdG90YWxgLiBDb25jbHVpciBzaSBleGlzdGUgbWVkaWFjacOzbiB0b3RhbCwgcGFyY2lhbCBvIG51bGEsIHkgY29tZW50YXIgbG9zIMOtbmRpY2VzIGRlIGFqdXN0ZSBkZWwgbW9kZWxvIGBmaXQ1YC4pKg0KDQojIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBncmVlbjsiPlBBUlRFIDQ6IE1vZGVsbyBkZSBtZWRpY2nDs248L3NwYW4+DQoNCkEgcGFydGlyIGRlbCBtb2RlbG8gZGUgc2VuZGVyb3MgZGUgbGEgUGFydGUgMywgc2UgY29uc3RydXllIGVsICoqbW9kZWxvIGRlIG1lZGljacOzbioqIGNvcnJlc3BvbmRpZW50ZTogc2UgY29uc2VydmFuIGxhcyBtaXNtYXMgdmFyaWFibGVzIGxhdGVudGVzIHkgc3VzIGluZGljYWRvcmVzLCBwZXJvIHNlIHN1c3RpdHV5ZW4gbGFzIHJlZ3Jlc2lvbmVzIGVzdHJ1Y3R1cmFsZXMgcG9yIGNvdmFyaWFuemFzIGxpYnJlcyBlbnRyZSBsb3MgZmFjdG9yZXMgKGVxdWl2YWxlbnRlIGEgdW4gQ0ZBIGNvbiB0b2RvcyBsb3MgY29uc3RydWN0b3MgY29ycmVsYWNpb25hZG9zIGVudHJlIHPDrSkuDQoNCmBgYHtyfQ0KI1BBUlRFIDQgTW9kZWxvIGRlIG1lZGljacOzbiAoZXF1aXZhbGVudGUgYWwgbW9kZWxvIGRlIHNlbmRlcm9zIGRlIGxhIFBhcnRlIDMsIHNpbiBkaXJlY2Npb25hbGlkYWQpDQoNCm1vZGVsbzYgPC0gJyAgZGVzYXBlZ28gICA9fiBSUEQwMSArIFJQRDAyICsgUlBEMDMgKyBSUEQwNSArIFJQRDA2ICsgUlBEMDcgKyBSUEQwOCArIFJQRDA5ICsgUlBEMTANCiAgICAgICAgICAgIHJlbGFqYWNpb24gPX4gUlJFMDIgKyBSUkUwMyArIFJSRTA0ICsgUlJFMDUgKyBSUkUwNiArIFJSRTA3ICsgUlJFMTANCiAgICAgICAgICAgIGNvbnRyb2wgICAgPX4gUkNPMDIgKyBSQ08wMyArIFJDTzA0ICsgUkNPMDUgKyBSQ08wNiArIFJDTzA3DQogICAgICAgICAgICBkb21pbmlvICAgID1+IFJNQTAyICsgUk1BMDMgKyBSTUEwNCArIFJNQTA1ICsgUk1BMDYgKyBSTUEwNyArIFJNQTA4ICsgUk1BMDkgKyBSTUExMA0KICAgICAgICAgICAgcmVjdXBlcmFjaW9uID1+IGRlc2FwZWdvICsgcmVsYWphY2lvbiArIGNvbnRyb2wgKyBkb21pbmlvDQoNCiAgICAgICAgICAgIGVuZXJnaWEgPX4gRU4wMSArIEVOMDIgKyBFTjA0ICsgRU4wNSArIEVOMDYgKyBFTjA3ICsgRU4wOA0KDQogICAgICAgICAgICB2aWdvciAgICAgICA9fiBFVkkwMSArIEVWSTAyICsgRVZJMDMNCiAgICAgICAgICAgIGRlZGljYWNpb24gID1+IEVERTAxICsgRURFMDIgKyBFREUwMw0KICAgICAgICAgICAgYWJzb3JjaW9uICAgPX4gRUFCMDEgKyBFQUIwMiArIEVBQjAzDQogICAgICAgICAgICBlbmdhZ2VtZW50ICA9fiB2aWdvciArIGRlZGljYWNpb24gKyBhYnNvcmNpb24NCg0KICAgICAgICAgICAgI0NvdmFyaWFuemFzIGxpYnJlcyBlbnRyZSBsb3MgMyBjb25zdHJ1Y3RvcyAoc2luIGRpcmVjY2nDs24gY2F1c2FsKQ0KICAgICAgICAgICAgcmVjdXBlcmFjaW9uIH5+IGVuZXJnaWENCiAgICAgICAgICAgIHJlY3VwZXJhY2lvbiB+fiBlbmdhZ2VtZW50DQogICAgICAgICAgICBlbmVyZ2lhICAgICAgfn4gZW5nYWdlbWVudA0KICAgICAgICAgICAgJw0KDQpmaXQ2IDwtIGNmYShtb2RlbG82LCBkYXRhID0gZGF0YWZyYW1lMykNCnN1bW1hcnkoZml0NiwgZml0Lm1lYXN1cmVzID0gVFJVRSwgc3RhbmRhcmRpemVkID0gVFJVRSkNCmxhdmFhblBsb3QoZml0NiwgY29lZiA9IFRSVUUsIGNvdiA9IFRSVUUpDQpgYGANCg0KYGBge3J9DQpmaXRNZWFzdXJlcyhmaXQ2LCBjKCJjaGlzcSIsImRmIiwicHZhbHVlIiwiY2ZpIiwidGxpIiwicm1zZWEiLCJzcm1yIikpDQpgYGANCg0KYGBge3J9DQojIENvbXBhcmFjacOzbiBkaXJlY3RhIGVudHJlIGVsIG1vZGVsbyBkZSBtZWRpY2nDs24gKGZpdDYpIHkgZWwgbW9kZWxvIGVzdHJ1Y3R1cmFsIChmaXQ1KToNCiMgc2kgZWwgYWp1c3RlIGVzIG11eSBzaW1pbGFyLCBlbCBtb2RlbG8gZXN0cnVjdHVyYWwgbm8gcGllcmRlIGluZm9ybWFjacOzbiByZWxldmFudGUNCiMgYWwgaW1wb25lciBkaXJlY2Npb25hbGlkYWQgYSBsYXMgcmVsYWNpb25lcy4NCmFub3ZhKGZpdDYsIGZpdDUpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Q09OQ0xVU0lPTjwvc3Bhbj4NCg0KKipQYXJ0ZSA0IChNb2RlbG8gZGUgbWVkaWNpw7NuKS4qKiBBbCBjb21wYXJhciBlbCBtb2RlbG8gZGUgbWVkaWNpw7NuIChjb25zdHJ1Y3RvcyBjb3JyZWxhY2lvbmFkb3MgbGlicmVtZW50ZSkgY29udHJhIGVsIG1vZGVsbyBlc3RydWN0dXJhbCBkZSBsYSBQYXJ0ZSAzLCAqKGNvbXBsZXRhciBzaSBlbCBhanVzdGUgZGVsIG1vZGVsbyBkZSBtZWRpY2nDs24gZnVlIGlndWFsLCBtZWpvciBvIHBlb3IgcXVlIGVsIGVzdHJ1Y3R1cmFsIHNlZ8O6biBsYSBwcnVlYmEgYGFub3ZhKGZpdDYsIGZpdDUpYCB5IGxvcyDDrW5kaWNlcyBkZSBgZml0TWVhc3VyZXMoZml0NiwgLi4uKWA7IGVzdG8gcGVybWl0ZSBjb25jbHVpciBzaSBsYSBlc3RydWN0dXJhIGRlIHJlbGFjaW9uZXMgY2F1c2FsZXMgcHJvcHVlc3RhIGVuIGxhIFBhcnRlIDMgZXMgcmF6b25hYmxlIG8gc2kgc2UgcGllcmRlIGFqdXN0ZSBhbCBpbXBvbmVyIGRpcmVjY2lvbmFsaWRhZCBlbnRyZSBsb3MgY29uc3RydWN0b3MuKSoNCg0KKipDb25jbHVzacOzbiBnZW5lcmFsLioqICooSW50ZWdyYXIgbG9zIGhhbGxhemdvcyBhbnRlcmlvcmVzIHJldG9tYW5kbyBsYSBwcmVndW50YSBkZWwgY2FzbzogZW4gcXXDqSBtZWRpZGEgbGFzIGV4cGVyaWVuY2lhcyBkZSByZWN1cGVyYWNpw7NuIGZ1ZXJhIGRlbCB0cmFiYWpvLCBhIHRyYXbDqXMgZGUgbGEgZW5lcmfDrWEgcmVjdXBlcmFkYSwgc2UgcmVsYWNpb25hbiBjb24gdW4gbWF5b3IgZW5nYWdlbWVudCBsYWJvcmFsIGRlIGxvcyBjb2xhYm9yYWRvcmVzLCB5IHF1w6kgaW1wbGljYWNpb25lcyBwcsOhY3RpY2FzIHRlbmRyw61hIGVzdG8gcGFyYSBsYSBvcmdhbml6YWNpw7NuIOKAlCBwb3IgZWplbXBsbywgZm9tZW50YXIgZWwgZGVzYXBlZ28gcHNpY29sw7NnaWNvIHkgZWwgY29udHJvbCBzb2JyZSBlbCB0aWVtcG8gbGlicmUgZGUgbG9zIGNvbGFib3JhZG9yZXMuKSoNCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+RUpFUkNJQ0lPIDQgIk1vZGVsbyBkZSBFY3VhY2lvbmVzIEVzdHJ1Y3R1cmFsZXMgKFNFTSkiPC9zcGFuPg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+wr9QT1IgUVXDiSBMT1MgQVVUT1JFUyBFTElHSUVST04gRUwgTU9ERUxPIDEgWSBOTyBFTCBNT0RFTE8gMj88L3NwYW4+DQoNCkEgcGVzYXIgZGUgcXVlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIGFqdXN0ZSBmYXZvcmVjw61hbiBjbGFyYW1lbnRlIGFsIE1vZGVsbyAyLCBsb3MgYXV0b3JlcyBzZWxlY2Npb25hcm9uIGVsIE1vZGVsbyAxIGNvbW8gbW9kZWxvIGZpbmFsLiBFbiBsYSBkaXNjdXNpw7NuIHNvbiBleHBsw61jaXRvczogbGEgY29tcGFyYWNpw7NuIGFkZWN1YWRhIGVudHJlIG1vZGVsb3MgcmVxdWllcmUgbcOhcyBxdWUgY29tcGFyYXIgw61uZGljZXMgZGUgYWp1c3RlOyBsYSByYXpvbmFiaWxpZGFkIGRlIGxvcyB2YWxvcmVzIGRlbCBtb2RlbG8geSBzdSBjb3JyZXNwb25kZW5jaWEgY29uIGxhIHRlb3LDrWEgc29uIGlndWFsIG8gbcOhcyBpbXBvcnRhbnRlcyBxdWUgZWwgYWp1c3RlIGVzdGFkw61zdGljby4gTGFzIHJhem9uZXMgY29uY3JldGFzLCBzdXN0ZW50YWRhcyBlbiBsYXMgdGFibGFzIHkgZmlndXJhcyBkZWwgYXJ0w61jdWxvLCBzb246DQoNCioqMS4gQ29lZmljaWVudGVzIHRlw7NyaWNhbWVudGUgaW5jb2hlcmVudGVzIGVuIGVsIE1vZGVsbyAyLioqDQpPY2hvIGRlIGxhcyBudWV2ZSB0cmF5ZWN0b3JpYXMgZW50cmUgdmFyaWVkYWQgZGUgaGFiaWxpZGFkZXMsIHNpZ25pZmljYW5jaWEgZGUgbGEgdGFyZWEgZSBpZGVudGlkYWQgZGUgbGEgdGFyZWEgaGFjaWEgbGFzIHRyZXMgdmFyaWFibGVzIGRlIHJlc3VsdGFkbyBubyBmdWVyb24gZXN0YWTDrXN0aWNhbWVudGUgc2lnbmlmaWNhdGl2YXMgZW4gZWwgTW9kZWxvIDINCioqMi4gRWwgTW9kZWxvIDEgcmV2ZWxhIGVsIG1lY2FuaXNtbyBwc2ljb2zDs2dpY28gcmVhbC4qKg0KRW4gZWwgTW9kZWxvIDEsIHRhbnRvIGxhIHZhcmllZGFkIGRlIGhhYmlsaWRhZGVzIGNvbW8gbGEgc2lnbmlmaWNhbmNpYSBkZSBsYSB0YXJlYSBtdWVzdHJhbiByZWxhY2lvbmVzICoqaW5kaXJlY3RhcyBwb3NpdGl2YXMgeSBzaWduaWZpY2F0aXZhcyoqIGNvbiBsYXMgdmFyaWFibGVzIGRlIHJlc3VsdGFkbywgbWVkaWFkYXMgcG9yIGVsIHNpZ25pZmljYWRvIGV4cGVyaW1lbnRhZG8NCioqMy4gRWwgcmllc2dvIHByw6FjdGljbyBkZSBlbGVnaXIgZWwgbW9kZWxvICJtZWpvciBhanVzdGFkbyIgcGVybyBpbmNvbXBsZXRvLioqDQpMb3MgYXV0b3JlcyBhZHZpZXJ0ZW4gcXVlIG5vIGluY29ycG9yYXIgbG9zIENQUyBlbiBlbCBKQ00gcG9kcsOtYSBsbGV2YXIgYSBwcmVkaWNjaW9uZXMgZXJyw7NuZWFzIGUgaW50ZXJ2ZW5jaW9uZXMgb3JnYW5pemFjaW9uYWxlcyBtYWwgZGlyaWdpZGFzOiB1biBnZXJlbnRlIHBvZHLDrWEgY3JlZXIgcXVlIGJhc3RhIGNvbiBhdW1lbnRhciBsYSB2YXJpZWRhZCBkZSB0YXJlYXMgZGUgdW4gcHVlc3RvIHBhcmEgbWVqb3JhciBsYSBzYXRpc2ZhY2Npw7NuIGRlIHN1cyBlbXBsZWFkb3MsIGN1YW5kbyBlbiByZWFsaWRhZCBlc2UgZWZlY3RvIHNvbG8gc2UgcHJvZHVjZSBzaSBkaWNoYSB2YXJpZWRhZCBnZW5lcmEgdW4gbWF5b3Igc2lnbmlmaWNhZG8gZXhwZXJpbWVudGFkbyBlbiBlbCB0cmFiYWpvLg0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij7Cv1FVw4kgTEVDQ0nDk04gREVKQSBFU1RPPzwvc3Bhbj4NCg0KTGEgbGVjY2nDs24gY2VudHJhbCBlcyBxdWUsIGVuIE1vZGVsYWRvIGRlIEVjdWFjaW9uZXMgRXN0cnVjdHVyYWxlcyAoeSBlbiBpbnZlc3RpZ2FjacOzbiBhcGxpY2FkYSBlbiBnZW5lcmFsKSwgKiplbCBtZWpvciBhanVzdGUgZXN0YWTDrXN0aWNvIG5vIGVzIHNpbsOzbmltbyBkZWwgbWVqb3IgbW9kZWxvKiouIFVuIG1vZGVsbyBwdWVkZSBhanVzdGFyIG1lam9yIHNpbXBsZW1lbnRlIHBvciBzZXIgbcOhcyBzaW1wbGUgbyBwb3Igb21pdGlyIHZhcmlhYmxlcyBtZWRpYWRvcmFzIGNsYXZlLCBwZXJvIGVzbyBwdWVkZSBsbGV2YXIgYSBjb25jbHVzaW9uZXMgaW5jb21wbGV0YXMgbyBlbmdhw7Fvc2FzIHNvYnJlIGxvcyBtZWNhbmlzbW9zIGNhdXNhbGVzIHJlYWxlcyBkZWwgZmVuw7NtZW5vIGVzdHVkaWFkby4NCg0KTGEgc2VsZWNjacOzbiBkZSB1biBtb2RlbG8gZGViZSBiYXNhcnNlIGVuIHVuIGJhbGFuY2UgZW50cmU6DQoNCiogKipFdmlkZW5jaWEgZW1ww61yaWNhOioqIMOtbmRpY2VzIGRlIGFqdXN0ZSAoQ0ZJLCBSTVNFQSwgR0ZJKSwgdmFyaWFuemEgZXhwbGljYWRhLCBzaWduaWZpY2FuY2lhIGRlIGxhcyB0cmF5ZWN0b3JpYXMuDQoqICoqQ29oZXJlbmNpYSB0ZcOzcmljYToqKiDCv3RpZW5lbiBzZW50aWRvIGxvcyBjb2VmaWNpZW50ZXMgYSBsYSBsdXogZGUgbGEgdGVvcsOtYSBlc3RhYmxlY2lkYT8gwr9lbCBtb2RlbG8gZXhwbGljYSAqcG9yIHF1w6kqIG9jdXJyZSB1biBmZW7Ds21lbm8sIG8gc29sbyAqcXVlKiBvY3VycmU/DQoNCkNvbW8gcHJvZmVzaW9uYWwgcXVlIHRyYWJhamUgY29uIFNFTSwgZXN0byBlbnNlw7FhIGEgbm8gYWNlcHRhciBhdXRvbcOhdGljYW1lbnRlIGVsIG1vZGVsbyBjb24gbWVqb3JlcyBuw7ptZXJvcyAoQ0ZJLCBSTVNFQSwgQUlDLCBDQUlDKSBzaW4gYW50ZXMgcmV2aXNhciBzaSBzdXMgY29lZmljaWVudGVzIHNvbiB0ZcOzcmljYW1lbnRlIHJhem9uYWJsZXMsIHkgc2kgZXNlICJtZWpvciBhanVzdGUiIHNlIGxvZ3JhIGEgY29zdGEgZGUgcGVyZGVyIHBvZGVyIGV4cGxpY2F0aXZvIHNvYnJlIGVsIGZlbsOzbWVubyBkZSBpbnRlcsOpcy4NCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Q09OQ0xVU0lPTkVTPC9zcGFuPg0KDQoxLiBFbCBNb2RlbG8gMiAoZGUgZG9zIGV0YXBhcywgc2luIENQUykgb2J0dXZvIG1lam9yZXMgw61uZGljZXMgZGUgYWp1c3RlIGFic29sdXRvIHkgY29tcGFyYXRpdm8gKEdGSSwgQ0ZJLCBYwrIsIEFJQywgQ0FJQykgcXVlIGVsIE1vZGVsbyAxIChkZSB0cmVzIGV0YXBhcywgY29uIGxvcyBDUFMpLg0KDQoyLiBBIHBlc2FyIGRlIGVsbG8sIGxvcyBhdXRvcmVzIHNlbGVjY2lvbmFyb24gZWwgTW9kZWxvIDEgY29tbyBtb2RlbG8gZmluYWwsIHBvcnF1ZSBleHBsaWNhYmEgbcOhcyB2YXJpYW56YSwgdGVuw61hIHVuYSBtYXlvciBwcm9wb3JjacOzbiBkZSB0cmF5ZWN0b3JpYXMgc2lnbmlmaWNhdGl2YXMgeSDigJQgc29icmUgdG9kbyDigJQgcG9ycXVlIGxvcyBjb2VmaWNpZW50ZXMgZGVsIE1vZGVsbyAyIGVyYW4gdGXDs3JpY2FtZW50ZSBpbmNvbnNpc3RlbnRlcyAodmFyaWFibGVzIGNsYXZlIGRlbCBkaXNlw7FvIGRlbCBwdWVzdG8gYXBhcmVjw61hbiBjb21vICJubyByZWxldmFudGVzIiBwYXJhIGxvcyByZXN1bHRhZG9zKS4NCg0KMy4gRWwgTW9kZWxvIDEgcGVybWl0acOzIGRldGVjdGFyIHF1ZSBsYSB2YXJpZWRhZCBkZSBoYWJpbGlkYWRlcyB5IGxhIHNpZ25pZmljYW5jaWEgZGUgbGEgdGFyZWEgc8OtIGluZmx1eWVuIGVuIGxvcyByZXN1bHRhZG9zIG9yZ2FuaXphY2lvbmFsZXMsIHBlcm8gZGUgZm9ybWEgKippbmRpcmVjdGEqKiwgbWVkaWFkYSBwb3IgZWwgc2lnbmlmaWNhZG8gZXhwZXJpbWVudGFkbyDigJQgZWwgbWVjYW5pc21vIHF1ZSBsYSB0ZW9yw61hIG9yaWdpbmFsIGRlIEhhY2ttYW4geSBPbGRoYW0gcHJlZGljZSB5IHF1ZSBlbCBtb2RlbG8gYWJyZXZpYWRvLCBhbCBvbWl0aXIgbG9zIENQUywgbm8gcHVlZGUgY2FwdHVyYXIuDQoNCjQuIExhIGRlY2lzacOzbiBkZSBsb3MgYXV0b3JlcyBpbHVzdHJhIHVuIHByaW5jaXBpbyBtZXRvZG9sw7NnaWNvIGZ1bmRhbWVudGFsIGVuIFNFTTogbG9zIMOtbmRpY2VzIGRlIGFqdXN0ZSBzb24gdW5hIGNvbmRpY2nDs24gKipuZWNlc2FyaWEgcGVybyBubyBzdWZpY2llbnRlKiogcGFyYSBlbGVnaXIgdW4gbW9kZWxvOyBsYSB2YWxpZGV6IHRlw7NyaWNhIHkgbGEgaW50ZXJwcmV0YWJpbGlkYWQgc3VzdGFudGl2YSBkZSBsb3MgY29lZmljaWVudGVzIGRlYmVuIHBlc2FyIHRhbnRvIG8gbcOhcyBxdWUgZWwgYWp1c3RlIGVzdGFkw61zdGljbyBwdXJvLg0KDQo1LiBFc3RvIHRpZW5lIGltcGxpY2FjaW9uZXMgcHLDoWN0aWNhcyByZWxldmFudGVzOiBhZG9wdGFyIGFjcsOtdGljYW1lbnRlIGVsIG1vZGVsbyAibcOhcyBzaW1wbGUgeSBtZWpvciBhanVzdGFkbyIgZW4gaW52ZXN0aWdhY2nDs24gYXBsaWNhZGEgZGUgY29tcG9ydGFtaWVudG8gb3JnYW5pemFjaW9uYWwgcHVlZGUgbGxldmFyIGEgZGlzZcOxYXIgaW50ZXJ2ZW5jaW9uZXMgZGUgcmVkaXNlw7FvIGRlIHB1ZXN0b3MgbWFsIGZ1bmRhbWVudGFkYXMsIGFsIGlnbm9yYXIgZWwgcGFwZWwgbWVkaWFkb3IgZGUgbG9zIGVzdGFkb3MgcHNpY29sw7NnaWNvcyBkZSBsb3MgY29sYWJvcmFkb3JlcyBlbiBsYSBjYWRlbmEgY2F1c2FsIGNvbXBsZXRhLg0K