Creando el ambiente

library(psych)

Attaching package: ‘psych’

The following object is masked from ‘package:boot’:

    logit

The following objects are masked from ‘package:ggplot2’:

    %+%, alpha

The following object is masked from ‘package:lavaan’:

    cor2cov

Cargar los datos

barrera_raw <- 
  read_csv(here("PLS-SEM/data",
                "/nayra_116.csv"))

── Column specification ────────────────────────────────────────────────────────────
cols(
  .default = col_double(),
  `Marca temporal` = col_character(),
  `Dirección de correo electrónico` = col_character(),
  `Nombre y apellidos` = col_character(),
  `Grado de escolaridad` = col_character(),
  `Nombre del emprendimiento` = col_character(),
  `Clasificación del emprendimiento de acuerdo a su actividad` = col_character(),
  `Años de creación del emprendimiento` = col_character(),
  ER_01 = col_character(),
  ER_02 = col_character(),
  ER_03 = col_character(),
  ER_04 = col_character(),
  ER_05 = col_character(),
  FI_01 = col_character()
)
ℹ Use `spec()` for the full column specifications.

Limpiando los datos

barrera_clean %>% dim()
[1] 112  24

Organizar los datos

Extrayendo la estructura de la red

Seleccionamos los empresarios que respondierone esta pregunta

barrera_empren_ER %>% dim()
[1] 112   5

Vamos a calcular la estructura de la red social (densidad y huecos estructurales)

        edge_list = rbind(df_entre, df_c1, df_c2, df_c3, df_c4)
Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match

Pegamos las nuevas variables a los datos iniciales

barrera_tidy %>% dim()
[1] 112  28

Cronbach alpha

Marketing emprendedor

psych::alpha(barrera_tidy %>% 
        select(ME_CD_01, ME_CD_02, ME_CD_03,ME_CD_04, ME_CD_05,ME_CD_06,ME_CD_07,ME_CD_08,ME_CD_09,ME_CD_10,ME_CD_11,ME_CD_12))

Reliability analysis   
Call: psych::alpha(x = barrera_tidy %>% select(ME_CD_01, ME_CD_02, 
    ME_CD_03, ME_CD_04, ME_CD_05, ME_CD_06, ME_CD_07, ME_CD_08, 
    ME_CD_09, ME_CD_10, ME_CD_11, ME_CD_12))

 

 lower alpha upper     95% confidence boundaries
0.87 0.9 0.93 

 Reliability if an item is dropped:

 Item statistics 

Non missing response frequency for each item
            1    2    3    4    5 miss
ME_CD_01 0.01 0.02 0.21 0.30 0.46    0
ME_CD_02 0.00 0.02 0.12 0.32 0.54    0
ME_CD_03 0.01 0.02 0.11 0.31 0.55    0
ME_CD_04 0.03 0.10 0.19 0.31 0.38    0
ME_CD_05 0.03 0.08 0.28 0.33 0.29    0
ME_CD_06 0.09 0.12 0.26 0.23 0.29    0
ME_CD_07 0.00 0.03 0.19 0.30 0.48    0
ME_CD_08 0.02 0.10 0.21 0.34 0.34    0
ME_CD_09 0.08 0.04 0.27 0.38 0.22    0
ME_CD_10 0.01 0.07 0.23 0.35 0.34    0
ME_CD_11 0.01 0.06 0.17 0.34 0.42    0
ME_CD_12 0.04 0.10 0.24 0.24 0.38    0

Fortaleza del enlace

psych::alpha(barrera_tidy %>% 
        select(FR_01, 
               FR_02, 
               FR_03))

Reliability analysis   
Call: psych::alpha(x = barrera_tidy %>% select(FR_01, FR_02, FR_03))

 

 lower alpha upper     95% confidence boundaries
0.88 0.91 0.94 

 Reliability if an item is dropped:

 Item statistics 

Non missing response frequency for each item
         1    2    3    4    5 miss
FR_01 0.16 0.11 0.28 0.28 0.18    0
FR_02 0.18 0.13 0.29 0.26 0.14    0
FR_03 0.19 0.11 0.25 0.22 0.23    0

FINTECH

psych::alpha(barrera_tidy %>% 
        select(FI_02, 
               FI_03, 
               FI_04,
               FI_05))

Reliability analysis   
Call: psych::alpha(x = barrera_tidy %>% select(FI_02, FI_03, FI_04, 
    FI_05))

 

 lower alpha upper     95% confidence boundaries
0.88 0.91 0.94 

 Reliability if an item is dropped:

 Item statistics 

Non missing response frequency for each item
         1    2    3    4    5 miss
FI_02 0.02 0.03 0.12 0.35 0.49    0
FI_03 0.02 0.04 0.13 0.29 0.53    0
FI_04 0.01 0.03 0.12 0.29 0.55    0
FI_05 0.02 0.00 0.07 0.32 0.59    0

PLS-SEM Model

Creamos el modelo

Análisis del modelo

barrera_PLS_mod <- 
  plsm(data = barrera_tidy, 
       strucmod = barrera_model_sm, 
       measuremod = barrera_model_mm)
Error in plsm(data = barrera_tidy, strucmod = barrera_model_sm, measuremod = barrera_model_mm) : 
  The manifest variables must be contained in the data.
barrera_PLS_fit <- 
  sempls(model = barrera_PLS_mod, 
         data = barrera_tidy)
All 112 observations are valid.
Converged after 7 iterations.
Tolerance: 1e-07
Scheme: centroid
plsLoadings(barrera_PLS_fit)
             ME   ER   FR   FI
ME_CD_01   0.54    .    .    .
ME_CD_02   0.65    .    .    .
ME_CD_03   0.60    .    .    .
ME_CD_04   0.72    .    .    .
ME_CD_05   0.72    .    .    .
ME_CD_06   0.64    .    .    .
ME_CD_07   0.73    .    .    .
ME_CD_08   0.78    .    .    .
ME_CD_09   0.70    .    .    .
ME_CD_10   0.68    .    .    .
ME_CD_11   0.81    .    .    .
ME_CD_12   0.72    .    .    .
constraint    . 1.00    .    .
FR_01         .    . 0.93    .
FR_02         .    . 0.93    .
FR_03         .    . 0.89    .
FI_02         .    .    . 0.93
FI_03         .    .    . 0.88
FI_04         .    .    . 0.88
FI_05         .    .    . 0.85

Cada variable latente tiene un carga fuerte con su variable manifiesta, si su carga está por encima de 0.3 o 0.5 para todas las variables manifiestas. Por lo tanto, no nos preocupamos por el tamaño de la muestra o la confiabilidad en las medidas.

Ahora examinamos los coeficientes estructurales entre variables latentes

pathCoeff(barrera_PLS_fit)
   ME     ER     FR     FI
ME  .  0.343  0.480  0.424
ER  .      .      . -0.169
FR  .      .      . -0.026
FI  .      .      .      .

En esta tabla mostramos que el ME influye positivamente en ER, FR y FI. Sin embargo, ER y FR no influyen en que un emprendedor adopte FINTECH

Visualizando el modelo

pathDiagram(barrera_PLS_fit, 
            file = "barrera_PLS_fit", 
            full = FALSE, 
            digits = 2, 
            edge.labels = "values", 
            output.type = "graphics", 
            graphics.fmt = "pdf")
Running  dot -Tpdf -o barrera_PLS_fit.pdf  barrera_PLS_fit.dot 
sh: 1: dot: not found
error in running command

Evaluando el modelo PLS-SEM

Como los modelos de PLS-SEM no evaluan el ajuste del modelo en general, se mostrará dos métodos por los cuales se puede entender su comportamiento.

Revisando los valores de R2

rSquared(barrera_PLS_fit)
   R-squared
ME         .
ER      0.12
FR      0.23
FI      0.15

Los R2 dieron altos en todas las variables latentes menos para ME. Es por esto que es importante utilizar más métodos para validar el modelo.

Haciendo un bootstrapping

barrera_PLS_boot <- 
  bootsempls(barrera_PLS_fit, 
             nboot = 500, 
             start = "ones")
Resample:   1  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500 Done.

Solo el 6.2% de los modelos no se pudieron generar a través de esta técnica. Esto quiere decir que el modelo en general se pude considerar bueno. También es importante ver los resutlados de todos los modelos para compararlos entre si.

Las líneas grises en la siguiente figura representan bootstrap estimados de forma individual, las líneas rojas la mediana (línea sólida) y los intervalos de confianza a un 95% (líneas punteadas). Esta gráfica se lee analizando la dispersión a través de las líneas horizontales. Por ejemplo, las gran mayoría de estimaciones se ubican a la derecha del punto 0 (línea punteada vertical) para ME, lo uqe quiere decir que la gran mayoría de resultados dicen que hay una relación positiva entre ME y FI, FR y ER. Sin embargo, esta gráfica confirma que la gran mayoría de datos para FR y ER son negativos validando que la fortaleza del enlace y la estructura de la red social no influyen en la adopción de FINTECH.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCmVkaXRvcl9vcHRpb25zOiAKICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lCi0tLQoKIyBDcmVhbmRvIGVsIGFtYmllbnRlIAoKYGBge3J9CmxpYnJhcnkobGF2YWFuKQpsaWJyYXJ5KHNlbVBMUykKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoaGVyZSkKbGlicmFyeShpZ3JhcGgpCmxpYnJhcnkocHN5Y2gpCmBgYAoKIyBDYXJnYXIgbG9zIGRhdG9zCgpgYGB7cn0KYmFycmVyYV9yYXcgPC0gCiAgcmVhZF9jc3YoaGVyZSgiUExTLVNFTS9kYXRhIiwKICAgICAgICAgICAgICAgICIvbmF5cmFfMTE2LmNzdiIpKQpgYGAKIyBMaW1waWFuZG8gbG9zIGRhdG9zCgpgYGB7cn0KYmFycmVyYV9jbGVhbiA8LSAKICBiYXJyZXJhX3JhdyAlPiUgCiAgc2VsZWN0KGBEaXJlY2Npw7NuIGRlIGNvcnJlbyBlbGVjdHLDs25pY29gLAogICAgICAgICBNRV9DRF8wMTpGSV8wNSkgJT4lIAogIHNlbGVjdCgtRVJfMDEsIC1GSV8wMSkgJT4lIAogIHJlbmFtZShlbWFpbCA9IGBEaXJlY2Npw7NuIGRlIGNvcnJlbyBlbGVjdHLDs25pY29gKSAlPiUgCiAgdW5pcXVlKCkgJT4lICAjIEVsaW5hcm9uIGRvcyBkdXBsaWNhZG9zCiAgZmlsdGVyKCFkdXBsaWNhdGVkKGVtYWlsKSkgIyBhcnJvenNhbnBlZHJvQHlhaG9vLmVzCiAgCmJhcnJlcmFfY2xlYW4gJT4lIGRpbSgpCmBgYAoKCiMgT3JnYW5pemFyIGxvcyBkYXRvcwoKRXh0cmF5ZW5kbyBsYSBlc3RydWN0dXJhIGRlIGxhIHJlZAoKU2VsZWNjaW9uYW1vcyBsb3MgZW1wcmVzYXJpb3MgcXVlIHJlc3BvbmRpZXJvbmUgZXN0YSBwcmVndW50YQoKYGBge3J9CmJhcnJlcmFfZW1wcmVuX0VSIDwtCiAgYmFycmVyYV9jbGVhbiAlPiUgCiAgc2VsZWN0KGVtYWlsLCBFUl8wMjpFUl8wNSkKCmJhcnJlcmFfZW1wcmVuX0VSICU+JSBkaW0oKQpgYGAKClZhbW9zIGEgY2FsY3VsYXIgbGEgZXN0cnVjdHVyYSBkZSBsYSByZWQgc29jaWFsIChkZW5zaWRhZCB5IGh1ZWNvcyBlc3RydWN0dXJhbGVzKQoKYGBge3J9CnRibF9lZ29uZXQgPC0gCiAgdGliYmxlKGVtYWlsID0gY2hhcmFjdGVyKCksCiAgICAgICAgIGNvbnN0cmFpbnQgPSBudW1lcmljKCksCiAgICAgICAgIGNsdXN0ZXJpbmcgPSBudW1lcmljKCksCiAgICAgICAgIGNlbnRyYWxpdHkgPSBudW1lcmljKCksCiAgICAgICAgIGRlbnNpdHkgPSBudW1lcmljKCkpCgpmb3IgKGkgaW4gYmFycmVyYV9lbXByZW5fRVIkZW1haWwpIHsKICAgICAgICAKICAgICAgICByb3cgPSBiYXJyZXJhX2VtcHJlbl9FUltiYXJyZXJhX2VtcHJlbl9FUiRlbWFpbCA9PSBpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJlbWFpbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRVJfMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVSXzAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFUl8wNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRVJfMDUiKV0KICAgICAgICAKICAgICAgICBkZl9lbnRyZSA9IGRhdGEuZnJhbWUoU291cmNlID0gaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ID0gYygiRW1wcmVuZGVkb3IgMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHJlbmRlZG9yIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXByZW5kZWRvciAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wcmVuZGVkb3IgNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHJlbmRlZG9yIDUiKSkKICAgICAgICAKICAgICAgICBkZl9jMSA9IGRhdGEuZnJhbWUoU291cmNlID0gIkVtcHJlbmRlZG9yIDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgPSBzdHJzcGxpdCh4ID0gcm93JEVSXzAyLCBzcGxpdCA9ICIsIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKICAgICAgICBuYW1lcyhkZl9jMSkgPSBjKCJTb3VyY2UiLCAiVGFyZ2V0IikKICAgICAgICAKICAgICAgICBkZl9jMiA9IGRhdGEuZnJhbWUoU291cmNlID0gIkVtcHJlbmRlZG9yIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgPSBzdHJzcGxpdCh4ID0gcm93JEVSXzAzLCBzcGxpdCA9ICIsIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKICAgICAgICBuYW1lcyhkZl9jMikgPSBjKCJTb3VyY2UiLCAiVGFyZ2V0IikKICAgICAgICAKICAgICAgICBkZl9jMyA9IGRhdGEuZnJhbWUoU291cmNlID0gIkVtcHJlbmRlZG9yIDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgPSBzdHJzcGxpdCh4ID0gcm93JEVSXzA0LCBzcGxpdCA9ICIsIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKICAgICAgICBuYW1lcyhkZl9jMykgPSBjKCJTb3VyY2UiLCAiVGFyZ2V0IikKICAgICAgICAKICAgICAgICBkZl9jNCA9IGRhdGEuZnJhbWUoU291cmNlID0gIkVtcHJlbmRlZG9yIDQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgPSBzdHJzcGxpdCh4ID0gcm93JEVSXzA1LCBzcGxpdCA9ICIsIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKICAgICAgICBuYW1lcyhkZl9jNCkgPSBjKCJTb3VyY2UiLCAiVGFyZ2V0IikKICAgICAgICAKICAgICAgICBlZGdlX2xpc3QgPSByYmluZChkZl9lbnRyZSwgZGZfYzEsIGRmX2MyLCBkZl9jMywgZGZfYzQpCiAgICAgICAgCiAgICAgICAgZWRnZV9saXN0ID0gZWRnZV9saXN0W2NvbXBsZXRlLmNhc2VzKGVkZ2VfbGlzdCkgPT0gVFJVRSxdCiAgICAgICAgCiAgICAgICAgZ3JhcGhfMSA9IGdyYXBoLmRhdGEuZnJhbWUoZWRnZV9saXN0LCBkaXJlY3RlZCA9IEZBTFNFKQogICAgICAgIAogICAgICAgIG5ldF9tZXRyaWNzID0gZGF0YS5mcmFtZShlbWFpbCA9IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50KGdyYXBoXzEpWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyaW5nID0gdHJhbnNpdGl2aXR5KGdyYXBoXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJsb2NhbCIpWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50cmFsaXR5ID0gZWlnZW5fY2VudHJhbGl0eShncmFwaF8xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RlZCA9IEZBTFNFKSR2ZWN0b3JbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbnNpdHkgPSBlZGdlX2RlbnNpdHkoZ3JhcGhfMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKICAgICAgICAKICAgICAgICB0YmxfZWdvbmV0ID0gcmJpbmQobmV0X21ldHJpY3MsIHRibF9lZ29uZXQpCn0KCnJtKHJvdywgZGZfYzEsIGRmX2MyLCBkZl9jMywgZGZfYzQsIGRmX2VudHJlKQoKYGBgCgpQZWdhbW9zIGxhcyBudWV2YXMgdmFyaWFibGVzIGEgbG9zIGRhdG9zIGluaWNpYWxlcwoKYGBge3J9CmJhcnJlcmFfdGlkeSA8LQogIHRibF9lZ29uZXQgJT4lIAogIHJpZ2h0X2pvaW4oYmFycmVyYV9jbGVhbiwgYnkgPSAiZW1haWwiKQoKYmFycmVyYV90aWR5ICU+JSBkaW0oKQpgYGAKCiMgQ3JvbmJhY2ggYWxwaGEKCk1hcmtldGluZyBlbXByZW5kZWRvcgoKYGBge3J9CnBzeWNoOjphbHBoYShiYXJyZXJhX3RpZHkgJT4lIAogICAgICAgIHNlbGVjdChNRV9DRF8wMSwgCiAgICAgICAgICAgICAgIE1FX0NEXzAyLCAKICAgICAgICAgICAgICAgTUVfQ0RfMDMsCiAgICAgICAgICAgICAgIE1FX0NEXzA0LAogICAgICAgICAgICAgICBNRV9DRF8wNSwKICAgICAgICAgICAgICAgTUVfQ0RfMDYsCiAgICAgICAgICAgICAgIE1FX0NEXzA3LAogICAgICAgICAgICAgICBNRV9DRF8wOCwKICAgICAgICAgICAgICAgTUVfQ0RfMDksCiAgICAgICAgICAgICAgIE1FX0NEXzEwLAogICAgICAgICAgICAgICBNRV9DRF8xMSwKICAgICAgICAgICAgICAgTUVfQ0RfMTIpKQpgYGAKCkZvcnRhbGV6YSBkZWwgZW5sYWNlCgpgYGB7cn0KcHN5Y2g6OmFscGhhKGJhcnJlcmFfdGlkeSAlPiUgCiAgICAgICAgc2VsZWN0KEZSXzAxLCAKICAgICAgICAgICAgICAgRlJfMDIsIAogICAgICAgICAgICAgICBGUl8wMykpCmBgYAoKRklOVEVDSAoKYGBge3J9CnBzeWNoOjphbHBoYShiYXJyZXJhX3RpZHkgJT4lIAogICAgICAgIHNlbGVjdChGSV8wMiwgCiAgICAgICAgICAgICAgIEZJXzAzLCAKICAgICAgICAgICAgICAgRklfMDQsCiAgICAgICAgICAgICAgIEZJXzA1KSkKYGBgCgojIFBMUy1TRU0gTW9kZWwKCkNyZWFtb3MgZWwgbW9kZWxvCgpgYGB7cn0KYmFycmVyYV9tb2RlbF9tbSA8LSAKICBtYXRyaXgoYygKICAgICJNRSIsICJNRV9DRF8wMSIsCiAgICAiTUUiLCAiTUVfQ0RfMDIiLAogICAgIk1FIiwgIk1FX0NEXzAzIiwKICAgICJNRSIsICJNRV9DRF8wNCIsCiAgICAiTUUiLCAiTUVfQ0RfMDUiLCAKICAgICJNRSIsICJNRV9DRF8wNiIsCiAgICAiTUUiLCAiTUVfQ0RfMDciLAogICAgIk1FIiwgIk1FX0NEXzA4IiwKICAgICJNRSIsICJNRV9DRF8wOSIsCiAgICAiTUUiLCAiTUVfQ0RfMTAiLAogICAgIk1FIiwgIk1FX0NEXzExIiwKICAgICJNRSIsICJNRV9DRF8xMiIsCiAgICAiRVIiLCAiY29uc3RyYWludCIsCiAgIyAgIkVSIiwgImNsdXN0ZXJpbmciLAogICAjICJFUiIsICJjZW50cmFsaXR5IiwgIyBjYXJnYXMgcG9yIGRlYmFqbyBkZSAwLjMgCiAgIyAiRVIiLCAiZGVuc2l0eSIsCiAgICAiRlIiLCAiRlJfMDEiLAogICAgIkZSIiwgIkZSXzAyIiwKICAgICJGUiIsICJGUl8wMyIsCiAgICAiRkkiLCAiRklfMDIiLAogICAgIkZJIiwgIkZJXzAzIiwKICAgICJGSSIsICJGSV8wNCIsCiAgICAiRkkiLCAiRklfMDUiKSwKICAgIG5jb2wgPSAyLCBieXJvdyA9IFRSVUUKICApCmBgYAoKYGBge3J9CmJhcnJlcmFfbW9kZWxfc20gPC0gCiAgbWF0cml4KGMoCiAgICAiTUUiLCAiRVIiLAogICAgIk1FIiwgIkZSIiwKICAgICJNRSIsICJGSSIsCiAgICAiRVIiLCAiRkkiLAogICAgIkZSIiwgIkZJIiksCiAgICBuY29sID0gMiwgYnlyb3cgPSBUUlVFCiAgKQpgYGAKCiMgQW7DoWxpc2lzIGRlbCBtb2RlbG8KCmBgYHtyfQpiYXJyZXJhX1BMU19tb2QgPC0gCiAgcGxzbShkYXRhID0gYmFycmVyYV90aWR5LCAKICAgICAgIHN0cnVjbW9kID0gYmFycmVyYV9tb2RlbF9zbSwgCiAgICAgICBtZWFzdXJlbW9kID0gYmFycmVyYV9tb2RlbF9tbSkKYGBgCgpgYGB7cn0KYmFycmVyYV9QTFNfZml0IDwtIAogIHNlbXBscyhtb2RlbCA9IGJhcnJlcmFfUExTX21vZCwgCiAgICAgICAgIGRhdGEgPSBiYXJyZXJhX3RpZHkpCmBgYAoKYGBge3J9CnBsc0xvYWRpbmdzKGJhcnJlcmFfUExTX2ZpdCkKYGBgCgpDYWRhIHZhcmlhYmxlIGxhdGVudGUgdGllbmUgdW4gY2FyZ2EgZnVlcnRlIGNvbiBzdSB2YXJpYWJsZSBtYW5pZmllc3RhLCBzaSBzdSBjYXJnYSBlc3TDoSBwb3IgZW5jaW1hIGRlIDAuMyBvIDAuNSBwYXJhIHRvZGFzIGxhcyB2YXJpYWJsZXMgbWFuaWZpZXN0YXMuIFBvciBsbyB0YW50bywgbm8gbm9zIHByZW9jdXBhbW9zIHBvciBlbCB0YW1hw7FvIGRlIGxhIG11ZXN0cmEgbyBsYSBjb25maWFiaWxpZGFkIGVuIGxhcyBtZWRpZGFzLgoKQWhvcmEgZXhhbWluYW1vcyBsb3MgY29lZmljaWVudGVzIGVzdHJ1Y3R1cmFsZXMgZW50cmUgdmFyaWFibGVzIGxhdGVudGVzCgpgYGB7cn0KcGF0aENvZWZmKGJhcnJlcmFfUExTX2ZpdCkKYGBgCgpFbiBlc3RhIHRhYmxhIG1vc3RyYW1vcyBxdWUgZWwgTUUgaW5mbHV5ZSBwb3NpdGl2YW1lbnRlIGVuIEVSLCBGUiB5IEZJLiAKU2luIGVtYmFyZ28sIEVSIHkgRlIgbm8gaW5mbHV5ZW4gZW4gcXVlIHVuIGVtcHJlbmRlZG9yIGFkb3B0ZSBGSU5URUNICgojIFZpc3VhbGl6YW5kbyBlbCBtb2RlbG8KCmBgYHtyfQpwYXRoRGlhZ3JhbShiYXJyZXJhX1BMU19maXQsIAogICAgICAgICAgICBmaWxlID0gImJhcnJlcmFfUExTX2ZpdCIsIAogICAgICAgICAgICBmdWxsID0gRkFMU0UsIAogICAgICAgICAgICBkaWdpdHMgPSAyLCAKICAgICAgICAgICAgZWRnZS5sYWJlbHMgPSAidmFsdWVzIiwgCiAgICAgICAgICAgIG91dHB1dC50eXBlID0gImdyYXBoaWNzIiwgCiAgICAgICAgICAgIGdyYXBoaWNzLmZtdCA9ICJwZGYiKQpgYGAKCiMgRXZhbHVhbmRvIGVsIG1vZGVsbyBQTFMtU0VNCgpDb21vIGxvcyBtb2RlbG9zIGRlIFBMUy1TRU0gbm8gZXZhbHVhbiBlbCBhanVzdGUgZGVsIG1vZGVsbyBlbiBnZW5lcmFsLCBzZSBtb3N0cmFyw6EgZG9zIG3DqXRvZG9zIHBvciBsb3MgY3VhbGVzIHNlIHB1ZWRlIGVudGVuZGVyIHN1IGNvbXBvcnRhbWllbnRvLgoKIyBSZXZpc2FuZG8gbG9zIHZhbG9yZXMgZGUgUjIKCmBgYHtyfQpyU3F1YXJlZChiYXJyZXJhX1BMU19maXQpCmBgYAoKTG9zIFIyIGRpZXJvbiBhbHRvcyBlbiB0b2RhcyBsYXMgdmFyaWFibGVzIGxhdGVudGVzIG1lbm9zIHBhcmEgTUUuCkVzIHBvciBlc3RvIHF1ZSBlcyBpbXBvcnRhbnRlIHV0aWxpemFyIG3DoXMgbcOpdG9kb3MgcGFyYSB2YWxpZGFyIGVsIG1vZGVsby4KCiMgSGFjaWVuZG8gdW4gYm9vdHN0cmFwcGluZwoKYGBge3J9CnNldC5zZWVkKDA0NDYwKQpiYXJyZXJhX1BMU19ib290IDwtIAogIGJvb3RzZW1wbHMoYmFycmVyYV9QTFNfZml0LCAKICAgICAgICAgICAgIG5ib290ID0gNTAwLCAKICAgICAgICAgICAgIHN0YXJ0ID0gIm9uZXMiKQpgYGAKClNvbG8gZWwgNi4yJSBkZSBsb3MgbW9kZWxvcyBubyBzZSBwdWRpZXJvbiBnZW5lcmFyIGEgdHJhdsOpcyBkZSBlc3RhIHTDqWNuaWNhLiBFc3RvIHF1aWVyZSBkZWNpciBxdWUgZWwgbW9kZWxvIGVuIGdlbmVyYWwgc2UgcHVkZSBjb25zaWRlcmFyIGJ1ZW5vLiBUYW1iacOpbiBlcyBpbXBvcnRhbnRlIHZlciBsb3MgcmVzdXRsYWRvcyBkZSB0b2RvcyBsb3MgbW9kZWxvcyBwYXJhIGNvbXBhcmFybG9zIGVudHJlIHNpLgoKTGFzIGzDrW5lYXMgZ3Jpc2VzIGVuIGxhIHNpZ3VpZW50ZSBmaWd1cmEgcmVwcmVzZW50YW4gYm9vdHN0cmFwIGVzdGltYWRvcyBkZSBmb3JtYSBpbmRpdmlkdWFsLCBsYXMgbMOtbmVhcyByb2phcyBsYSBtZWRpYW5hIChsw61uZWEgc8OzbGlkYSkgeSBsb3MgaW50ZXJ2YWxvcyBkZSBjb25maWFuemEgYSB1biA5NSUgKGzDrW5lYXMgcHVudGVhZGFzKS4gRXN0YSBncsOhZmljYSBzZSBsZWUgYW5hbGl6YW5kbyBsYSBkaXNwZXJzacOzbiBhIHRyYXbDqXMgZGUgbGFzIGzDrW5lYXMgaG9yaXpvbnRhbGVzLiBQb3IgZWplbXBsbywgbGFzIGdyYW4gbWF5b3LDrWEgZGUgZXN0aW1hY2lvbmVzIHNlIHViaWNhbiBhIGxhIGRlcmVjaGEgZGVsIHB1bnRvIDAgKGzDrW5lYSBwdW50ZWFkYSB2ZXJ0aWNhbCkgcGFyYSBNRSwgbG8gdXFlIHF1aWVyZSBkZWNpciBxdWUgbGEgZ3JhbiBtYXlvcsOtYSBkZSByZXN1bHRhZG9zIGRpY2VuIHF1ZSBoYXkgdW5hIHJlbGFjacOzbiBwb3NpdGl2YSBlbnRyZSBNRSB5IEZJLCBGUiB5IEVSLiBTaW4gZW1iYXJnbywgZXN0YSBncsOhZmljYSBjb25maXJtYSBxdWUgbGEgZ3JhbiBtYXlvcsOtYSBkZSBkYXRvcyBwYXJhIEZSIHkgRVIgc29uIG5lZ2F0aXZvcyB2YWxpZGFuZG8gcXVlIGxhIGZvcnRhbGV6YSBkZWwgZW5sYWNlIHkgbGEgZXN0cnVjdHVyYSBkZSBsYSByZWQgc29jaWFsIG5vIGluZmx1eWVuIGVuIGxhIGFkb3BjacOzbiBkZSBGSU5URUNILgoKYGBge3J9CnBhcmFsbGVscGxvdChiYXJyZXJhX1BMU19ib290LCAKICAgICAgICAgICAgIHJlZmxpbmVzQXQgPSAwLCAKICAgICAgICAgICAgIGFscGhhID0gMC44LCAKICAgICAgICAgICAgIHZhcm5hbWVzID0gYXR0cihiYXJyZXJhX1BMU19ib290JHQsICJwYXRoIilbMjE6MjVdLCAKICAgICAgICAgICAgIG1haW4gPSAiQ2FtaW5vcyBkZSBjb2VmaWNpZW50ZXMgaW4gNTAwIFBMUyBib3N0cmFwIGludGVyYWNjaW9uZXMoTiA9IDExMikiKQpgYGAKCgoK