Para esta parte tomar como referencia el libro “An Introduction to Statistics and Data Analysis Using Stata” de Daniels y Minot.

Capítulo 4: Ejercicio 1

A veinticinco estudiantes universitarios se les hicieron cuatro preguntas sobre sus hábitos de ver televisión y películas:

  1. ¿Qué servicio de televisión usa con más frecuencia para ver programas de televisión y películas?
table(tablita$TV_Source)

AmazonPrime       Cable    HuluPlus      iTunes     Netflix 
          3           2           3           9           8 

iTunes es el servicio más utilizado.

  1. ¿Cuántas horas a la semana dedica a ver televisión o películas?
table(tablita$Hours_per_Week)

 2  5  7  8 10 12 13 14 15 17 18 19 20 21 22 23 24 30 
 1  1  1  2  3  2  1  3  1  1  2  1  1  1  1  1  1  1 
sum(tablita$Hours_per_Week)
[1] 366

Los encuestados dedicaron un total de 366 horas a ver TV en una semana.

hist(tablita$Hours_per_Week, xlab="Horas por semana", main = "Distribución de horas dedicadas a ver TV")

  1. ¿Con qué frecuencia ve televisión en exceso (viendo más de tres episodios seguidos del mismo programa)? Podían elegir entre (a) nada, (b) a veces, de una a tres veces por semana, y (c) con frecuencia, más de tres veces por semana.
table(tablita$Binge_Frequency)

Frequently Not_at_all  Sometimes 
        11          2         12 
  1. Ingrese los datos para cada una de las cuatro variables. Para las tres variables categóricas, cree un código numérico para cada respuesta. Por ejemplo, para TV Source, 1 = Amazon Prime, 2 = Cable, 3 = Hulu Plus, 4 = iTunes y 5 = Netflix.
tablita$TV_Source[tablita$TV_Source=="AmazonPrime"] <- 1
tablita$TV_Source[tablita$TV_Source=="Cable"] <- 2
tablita$TV_Source[tablita$TV_Source=="HuluPlus"] <- 3
tablita$TV_Source[tablita$TV_Source=="iTunes"] <- 4
tablita$TV_Source[tablita$TV_Source=="Netflix"] <- 5

knitr::kable(tablita)
Student TV_Source Hours_per_Week Binge_Frequency Gender
1 3 14 Not_at_all Male
2 1 18 Sometimes Female
3 3 20 Frequently Female
4 5 5 Frequently Male
5 5 12 Frequently Male
6 4 10 Not_at_all Female
7 4 8 Frequently Female
8 4 7 Sometimes Male
9 2 24 Frequently Male
10 3 30 Sometimes Female
11 5 10 Sometimes Male
12 5 15 Frequently Female
13 4 12 Sometimes Male
14 4 14 Sometimes Female
15 1 2 Sometimes Female
16 5 8 Frequently Male
17 4 10 Frequently Male
18 2 19 Sometimes Female
19 5 18 Sometimes Female
20 4 21 Frequently Male
21 4 22 Sometimes Male
22 4 23 Frequently Female
23 5 17 Frequently Female
24 5 14 Sometimes Male
25 1 13 Sometimes Female
NA
prop.table(table(tablita$Gender))*100

Female   Male 
    52     48 

52% hombres y 48% mujeres.

table(tablita$TV_Source)

1 2 3 4 5 
3 2 3 9 8 

iTunes (4) con una frecuencia de 9 estudiantes.

prop.table(table(tablita$Binge_Frequency))*100

Frequently Not_at_all  Sometimes 
        44          8         48 

44% de los estudiantes ven TV con frecuencia.

Capítulo 5: Ejercicio 2

Use el conjunto de datos GSS2016 para completar los siguientes ejercicios que generan una variable categórica a partir de una variable continua.

  1. Genere una tabla de cuántos hijos tiene un encuestado (childs).
table(GSS2016$childs)

  0   1   2   3   4   5   6   7   8 
797 459 733 467 213  92  51  25  22 
  1. Genere una nueva variable que sea igual a 1 si el encuestado tiene hijos y 2 si el encuestado no tiene hijos.
GSS2016$Hijos[GSS2016$childs == 0] <- 2
GSS2016$Hijos[GSS2016$childs >= 1] <- 1
head(GSS2016$Hijos, 10)
 [1] "1" "2" "1" "1" "1" "1" "1" "1" "1" "1"
  1. Cree una etiqueta de variable “Respondent has children” y aplíquela a su nueva variable.
GSS2016$Hijos2 <- ifelse(GSS2016$Hijos == 1, "Respondent has children", "Not")
head(GSS2016$Hijos2, 10)
 [1] "Respondent has children" "Not"                     "Respondent has children"
 [4] "Respondent has children" "Respondent has children" "Respondent has children"
 [7] "Respondent has children" "Respondent has children" "Respondent has children"
[10] "Respondent has children"
  1. Cree etiquetas de valor para que 1 sea “Yes” y 2 sea “No”.
GSS2016$Hijos[GSS2016$Hijos == 1] <- "Yes"
GSS2016$Hijos[GSS2016$Hijos == 2] <- "No"
head(GSS2016$Hijos, 10)
 [1] "Yes" "No"  "Yes" "Yes" "Yes" "Yes" "Yes" "Yes" "Yes" "Yes"
  1. Genere una tabla de su nueva variable.
table(GSS2016$Hijos)

  No  Yes 
 797 2062 
  1. (Cap. 5 - ejercicio 3)
  1. Utilice el comando egen para generar una variable que sea el valor mediano del ingreso real (realinc) de todos los encuestados en el conjunto de datos.
mediana_realinc <- median(GSS2016$realinc)
print(mediana_realinc)
[1] 25740
  1. Genere una nueva variable que sea la diferencia entre el ingreso real de un individuo (realinc) y el ingreso medio de todos los individuos.
GSS2016$dif_ingresos <- GSS2016$realinc-mediana_realinc
head(GSS2016$dif_ingresos, 10)
 [1] 105936.7      0.0  12870.0 105936.7 105936.7   5850.0 105936.7 -10530.0   5850.0   5850.0
  1. Genere una nueva variable que sea igual a 1 si un individuo gana por encima del ingreso medio y 0 si el individuo gana por debajo del ingreso medio.
GSS2016$cat_ingresos <- ifelse(GSS2016$realinc>mediana_realinc,1,0)
head(GSS2016$cat_ingresos, 10)
 [1] 1 0 1 1 1 1 1 0 1 1
  1. Defina y aplique etiquetas de valor a la variable que creó en la Parte “c”.

Se definió la etiqueta “alto” para quienes tienen un ingreso mayor que el ingreso medio y la etiqueta “bajo” para quienes no.

GSS2016$cat_ingresos2 <- ifelse(GSS2016$cat_ingresos==1,"Alto","Bajo")
head(GSS2016$cat_ingresos2, 10)
 [1] "Alto" "Bajo" "Alto" "Alto" "Alto" "Alto" "Alto" "Bajo" "Alto" "Alto"
  1. Cree una tabla que muestre la región de los Estados Unidos en las filas y la variable que creó en la Parte “c” en las columnas. Haga que esta tabla se agregue a través de las filas y no incluya frecuencias.
t <- table(GSS2016$region,GSS2016$cat_ingresos)
prop.table(t, margin=1)*100
   
           0        1
  1 45.91195 54.08805
  2 54.31655 45.68345
  3 56.39913 43.60087
  4 66.66667 33.33333
  5 57.37705 42.62295
  6 63.78378 36.21622
  7 63.73626 36.26374
  8 58.74439 41.25561
  9 53.97727 46.02273

Conclusión: Se observo que el 54% de los encuestados que viven en la region de New England tienen ingresos por encima de la mediana de ingresos muestral. Es el estado con ingresos mas altos. En contraste, el 66,7% de los encuestados que viven en la region de west north central tienen ingresos por debajo de la mediana de ingresos muestral.

Capítulo 6: Ejercicio 4

  1. Genere una tabla sin ponderaciones que muestre el género en las filas (sex) y si el encuestado experimentó discriminación en el trabajo en los últimos 5 años (discwk5). Muestre solo los porcentajes y decida si desea utilizar porcentajes de fila o de columna.

Se decidió muestrar los porcentajes condicionados por filas para mostrar cómo se distribuyen los niveles de discriminación dado el sexo.

tabla1 <- table(GSS2016$sex, GSS2016$discwk5)
prop.table(tabla1, margin =1)*100
   
            1         2         3
  1 19.136691 76.978417  3.884892
  2 17.871222 73.455979  8.672799
  1. Genere la misma tabla que en la Parte “a”, pero aplique los pesos (wtss) a la tabla.
library(survey)
design <- svydesign(ids = ~1, data = GSS2016, weights = ~wtss)
# Crea la tabla de contingencia utilizando los pesos del muestreo
tabla2 <- svytable(~sex + discwk5, design)
prop.table(tabla2, margin =1)*100
   discwk5
sex         1         2         3
  1 19.327549 76.363896  4.308555
  2 16.670950 76.142740  7.186310
LS0tCnRpdGxlOiAiUHJpbWVyIFRyYWJham8gRXNjcml0byAtIFBBUlRFIElJIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpQYXJhIGVzdGEgcGFydGUgdG9tYXIgY29tbyByZWZlcmVuY2lhIGVsIGxpYnJvICrigJxBbiBJbnRyb2R1Y3Rpb24gdG8gU3RhdGlzdGljcyBhbmQgRGF0YSBBbmFseXNpcwpVc2luZyBTdGF0YeKAnSogZGUgRGFuaWVscyB5IE1pbm90LiAKCiMjIENhcMOtdHVsbyA0OiBFamVyY2ljaW8gMQpBIHZlaW50aWNpbmNvIGVzdHVkaWFudGVzIHVuaXZlcnNpdGFyaW9zIHNlIGxlcyBoaWNpZXJvbiBjdWF0cm8gcHJlZ3VudGFzIHNvYnJlIHN1cyBow6FiaXRvcyBkZSB2ZXIgdGVsZXZpc2nDs24geSBwZWzDrWN1bGFzOgoKYS4gwr9RdcOpIHNlcnZpY2lvIGRlIHRlbGV2aXNpw7NuIHVzYSBjb24gbcOhcyBmcmVjdWVuY2lhIHBhcmEgdmVyIHByb2dyYW1hcyBkZSB0ZWxldmlzacOzbiB5IHBlbMOtY3VsYXM/CgpgYGB7cn0KdGFibGUodGFibGl0YSRUVl9Tb3VyY2UpCmBgYAppVHVuZXMgZXMgZWwgc2VydmljaW8gbcOhcyB1dGlsaXphZG8uCgpiLiDCv0N1w6FudGFzIGhvcmFzIGEgbGEgc2VtYW5hIGRlZGljYSBhIHZlciB0ZWxldmlzacOzbiBvIHBlbMOtY3VsYXM/CgpgYGB7cn0KdGFibGUodGFibGl0YSRIb3Vyc19wZXJfV2VlaykKc3VtKHRhYmxpdGEkSG91cnNfcGVyX1dlZWspCmBgYApMb3MgZW5jdWVzdGFkb3MgZGVkaWNhcm9uIHVuIHRvdGFsIGRlIDM2NiBob3JhcyBhIHZlciBUViBlbiB1bmEgc2VtYW5hLgoKYGBge3J9Cmhpc3QodGFibGl0YSRIb3Vyc19wZXJfV2VlaywgeGxhYj0iSG9yYXMgcG9yIHNlbWFuYSIsIG1haW4gPSAiRGlzdHJpYnVjacOzbiBkZSBob3JhcyBkZWRpY2FkYXMgYSB2ZXIgVFYiKQpgYGAKYy4gwr9Db24gcXXDqSBmcmVjdWVuY2lhIHZlIHRlbGV2aXNpw7NuIGVuIGV4Y2VzbyAodmllbmRvIG3DoXMgZGUgdHJlcyBlcGlzb2Rpb3Mgc2VndWlkb3MgZGVsIG1pc21vIHByb2dyYW1hKT8gUG9kw61hbiBlbGVnaXIgZW50cmUgKGEpIG5hZGEsIChiKSBhIHZlY2VzLCBkZSB1bmEgYSB0cmVzIHZlY2VzIHBvciBzZW1hbmEsIHkgKGMpIGNvbiBmcmVjdWVuY2lhLCBtw6FzIGRlIHRyZXMgdmVjZXMgcG9yIHNlbWFuYS4KCmBgYHtyfQp0YWJsZSh0YWJsaXRhJEJpbmdlX0ZyZXF1ZW5jeSkKYGBgCgpkLiBJbmdyZXNlIGxvcyBkYXRvcyBwYXJhIGNhZGEgdW5hIGRlIGxhcyBjdWF0cm8gdmFyaWFibGVzLiBQYXJhIGxhcyB0cmVzIHZhcmlhYmxlcyBjYXRlZ8OzcmljYXMsIGNyZWUgdW4gY8OzZGlnbyBudW3DqXJpY28gcGFyYSBjYWRhIHJlc3B1ZXN0YS4gUG9yIGVqZW1wbG8sIHBhcmEgVFYgU291cmNlLCAxID0gQW1hem9uIFByaW1lLCAyID0gQ2FibGUsIDMgPSBIdWx1IFBsdXMsIDQgPSBpVHVuZXMgeSA1ID0gTmV0ZmxpeC4KCmBgYHtyfQp0YWJsaXRhJFRWX1NvdXJjZVt0YWJsaXRhJFRWX1NvdXJjZT09IkFtYXpvblByaW1lIl0gPC0gMQp0YWJsaXRhJFRWX1NvdXJjZTFbdGFibGl0YSRUVl9Tb3VyY2U9PSJDYWJsZSJdIDwtIDIKdGFibGl0YSRUVl9Tb3VyY2VbdGFibGl0YSRUVl9Tb3VyY2U9PSJIdWx1UGx1cyJdIDwtIDMKdGFibGl0YSRUVl9Tb3VyY2VbdGFibGl0YSRUVl9Tb3VyY2U9PSJpVHVuZXMiXSA8LSA0CnRhYmxpdGEkVFZfU291cmNlW3RhYmxpdGEkVFZfU291cmNlPT0iTmV0ZmxpeCJdIDwtIDUKCmtuaXRyOjprYWJsZSh0YWJsaXRhKQoKYGBgCiogwr9RdcOpIHBvcmNlbnRhamUgZGUgbGEgbXVlc3RyYSBzZSBpZGVudGlmaWNhIGNvbW8gaG9tYnJlIHkgbXVqZXI/CgpgYGB7cn0KcHJvcC50YWJsZSh0YWJsZSh0YWJsaXRhJEdlbmRlcikpKjEwMApgYGAKNTIlIGhvbWJyZXMgeSA0OCUgbXVqZXJlcy4KCiogwr9RdcOpIHRpcG8gZGUgc2VydmljaW8gZGUgVFYgc2UgdXNhIGNvbiBtw6FzIGZyZWN1ZW5jaWE/CmBgYHtyfQp0YWJsZSh0YWJsaXRhJFRWX1NvdXJjZSkKYGBgCmlUdW5lcyAoNCkgY29uIHVuYSBmcmVjdWVuY2lhIGRlIDkgZXN0dWRpYW50ZXMuCgoqIFF1w6kgcG9yY2VudGFqZSBkZSBlc3R1ZGlhbnRlcyBzZSBkYW4gdW4gYXRyYWPDs24gZGUgdGVsZXZpc2nDs24gY29uIGZyZWN1ZW5jaWE/CmBgYHtyfQpwcm9wLnRhYmxlKHRhYmxlKHRhYmxpdGEkQmluZ2VfRnJlcXVlbmN5KSkqMTAwCmBgYAo0NCUgZGUgbG9zIGVzdHVkaWFudGVzIHZlbiBUViBjb24gZnJlY3VlbmNpYS4KCgoKIyMgQ2Fww610dWxvIDU6IEVqZXJjaWNpbyAyClVzZSBlbCBjb25qdW50byBkZSBkYXRvcyBHU1MyMDE2IHBhcmEgY29tcGxldGFyIGxvcyBzaWd1aWVudGVzIGVqZXJjaWNpb3MgcXVlIGdlbmVyYW4gdW5hIHZhcmlhYmxlIGNhdGVnw7NyaWNhIGEgcGFydGlyIGRlIHVuYSB2YXJpYWJsZSBjb250aW51YS4KCmEuIEdlbmVyZSB1bmEgdGFibGEgZGUgY3XDoW50b3MgaGlqb3MgdGllbmUgdW4gZW5jdWVzdGFkbyAoKmNoaWxkcyopLgoKYGBge3J9CnRhYmxlKEdTUzIwMTYkY2hpbGRzKQpgYGAKYi4gR2VuZXJlIHVuYSBudWV2YSB2YXJpYWJsZSBxdWUgc2VhIGlndWFsIGEgMSBzaSBlbCBlbmN1ZXN0YWRvIHRpZW5lIGhpam9zIHkgMiBzaSBlbCBlbmN1ZXN0YWRvIG5vIHRpZW5lIGhpam9zLgoKYGBge3J9CkdTUzIwMTYkSGlqb3NbR1NTMjAxNiRjaGlsZHMgPT0gMF0gPC0gMgpHU1MyMDE2JEhpam9zW0dTUzIwMTYkY2hpbGRzID49IDFdIDwtIDEKaGVhZChHU1MyMDE2JEhpam9zLCAxMCkKYGBgCmMuIENyZWUgdW5hIGV0aXF1ZXRhIGRlIHZhcmlhYmxlICJSZXNwb25kZW50IGhhcyBjaGlsZHJlbiIgeSBhcGzDrXF1ZWxhIGEgc3UgbnVldmEgdmFyaWFibGUuCgpgYGB7cn0KR1NTMjAxNiRIaWpvczIgPC0gaWZlbHNlKEdTUzIwMTYkSGlqb3MgPT0gMSwgIlJlc3BvbmRlbnQgaGFzIGNoaWxkcmVuIiwgIk5vdCIpCmhlYWQoR1NTMjAxNiRIaWpvczIsIDEwKQpgYGAKZC4gIENyZWUgZXRpcXVldGFzIGRlIHZhbG9yIHBhcmEgcXVlIDEgc2VhICJZZXMiIHkgMiBzZWEgIk5vIi4KCmBgYHtyfQpHU1MyMDE2JEhpam9zW0dTUzIwMTYkSGlqb3MgPT0gMV0gPC0gIlllcyIKR1NTMjAxNiRIaWpvc1tHU1MyMDE2JEhpam9zID09IDJdIDwtICJObyIKaGVhZChHU1MyMDE2JEhpam9zLCAxMCkKYGBgCmUuIEdlbmVyZSB1bmEgdGFibGEgZGUgc3UgbnVldmEgdmFyaWFibGUuCgpgYGB7cn0KdGFibGUoR1NTMjAxNiRIaWpvcykKYGBgCgozLiAoQ2FwLiA1IC0gZWplcmNpY2lvIDMpIAoKYS4gVXRpbGljZSBlbCBjb21hbmRvIGVnZW4gcGFyYSBnZW5lcmFyIHVuYSB2YXJpYWJsZSBxdWUgc2VhIGVsIHZhbG9yIG1lZGlhbm8gZGVsIGluZ3Jlc28gcmVhbCAocmVhbGluYykgZGUgdG9kb3MgbG9zIGVuY3Vlc3RhZG9zIGVuIGVsIGNvbmp1bnRvIGRlIGRhdG9zLgoKYGBge3J9Cm1lZGlhbmFfcmVhbGluYyA8LSBtZWRpYW4oR1NTMjAxNiRyZWFsaW5jKSAjIE1lZGlhbmEgCnByaW50KG1lZGlhbmFfcmVhbGluYykKYGBgCgpiLiBHZW5lcmUgdW5hIG51ZXZhIHZhcmlhYmxlIHF1ZSBzZWEgbGEgZGlmZXJlbmNpYSBlbnRyZSBlbCBpbmdyZXNvIHJlYWwgZGUgdW4gaW5kaXZpZHVvIChyZWFsaW5jKSB5IGVsIGluZ3Jlc28gbWVkaW8gZGUgdG9kb3MgbG9zIGluZGl2aWR1b3MuCgpgYGB7cn0KR1NTMjAxNiRkaWZfaW5ncmVzb3MgPC0gR1NTMjAxNiRyZWFsaW5jLW1lZGlhbmFfcmVhbGluYyAjIE51ZXZhIHZhcmlhYmxlIGRpZl9pbmdyZXNvcwpoZWFkKEdTUzIwMTYkZGlmX2luZ3Jlc29zLCAxMCkgIyBNdWVzdHJhIGxvcyBwcmltZXJvcyB2YWxvcmVzIGRlIGxhIG51ZXZhIHZhcmlhYmxlCmBgYApjLiBHZW5lcmUgdW5hIG51ZXZhIHZhcmlhYmxlIHF1ZSBzZWEgaWd1YWwgYSAxIHNpIHVuIGluZGl2aWR1byBnYW5hIHBvciBlbmNpbWEgZGVsIGluZ3Jlc28gbWVkaW8geSAwIHNpIGVsIGluZGl2aWR1byBnYW5hIHBvciBkZWJham8gZGVsIGluZ3Jlc28gbWVkaW8uCgpgYGB7cn0KR1NTMjAxNiRjYXRfaW5ncmVzb3MgPC0gaWZlbHNlKEdTUzIwMTYkcmVhbGluYz5tZWRpYW5hX3JlYWxpbmMsMSwwKQpoZWFkKEdTUzIwMTYkY2F0X2luZ3Jlc29zLCAxMCkKYGBgCiBkLiBEZWZpbmEgeSBhcGxpcXVlIGV0aXF1ZXRhcyBkZSB2YWxvciBhIGxhIHZhcmlhYmxlIHF1ZSBjcmXDsyBlbiBsYSBQYXJ0ZSAiYyIuCiAKIFNlIGRlZmluacOzIGxhIGV0aXF1ZXRhICJhbHRvIiBwYXJhIHF1aWVuZXMgdGllbmVuIHVuIGluZ3Jlc28gbWF5b3IgcXVlIGVsIGluZ3Jlc28gbWVkaW8geSBsYSBldGlxdWV0YSAiYmFqbyIgcGFyYSBxdWllbmVzIG5vLgogCmBgYHtyfQpHU1MyMDE2JGNhdF9pbmdyZXNvczIgPC0gaWZlbHNlKEdTUzIwMTYkY2F0X2luZ3Jlc29zPT0xLCJBbHRvIiwiQmFqbyIpCmhlYWQoR1NTMjAxNiRjYXRfaW5ncmVzb3MyLCAxMCkKYGBgCiAgZS4gQ3JlZSB1bmEgdGFibGEgcXVlIG11ZXN0cmUgbGEgcmVnacOzbiBkZSBsb3MgRXN0YWRvcyBVbmlkb3MgZW4gbGFzIGZpbGFzIHkgbGEgdmFyaWFibGUgcXVlIGNyZcOzIGVuIGxhIFBhcnRlICJjIiBlbiBsYXMgY29sdW1uYXMuIEhhZ2EgcXVlIGVzdGEgdGFibGEgc2UgYWdyZWd1ZSBhIHRyYXbDqXMgZGUgbGFzIGZpbGFzIHkgbm8gaW5jbHV5YSBmcmVjdWVuY2lhcy4KICAKYGBge3J9CnQgPC0gdGFibGUoR1NTMjAxNiRyZWdpb24sR1NTMjAxNiRjYXRfaW5ncmVzb3MpCnByb3AudGFibGUodCwgbWFyZ2luPTEpKjEwMAoKYGBgCiAgCioqQ29uY2x1c2nDs246KiogU2Ugb2JzZXJ2byBxdWUgZWwgNTQlIGRlIGxvcyBlbmN1ZXN0YWRvcyBxdWUgdml2ZW4gZW4gbGEgcmVnaW9uIGRlIE5ldyBFbmdsYW5kIAp0aWVuZW4gaW5ncmVzb3MgcG9yIGVuY2ltYSBkZSBsYSBtZWRpYW5hIGRlIGluZ3Jlc29zIG11ZXN0cmFsLiBFcyBlbCBlc3RhZG8gY29uIGluZ3Jlc29zIG1hcyBhbHRvcy4gCkVuIGNvbnRyYXN0ZSwgZWwgNjYsNyUgZGUgbG9zIGVuY3Vlc3RhZG9zIHF1ZSB2aXZlbiBlbiBsYSByZWdpb24gZGUgd2VzdCBub3J0aCBjZW50cmFsIHRpZW5lbgppbmdyZXNvcyBwb3IgZGViYWpvIGRlIGxhIG1lZGlhbmEgZGUgaW5ncmVzb3MgbXVlc3RyYWwuCgoKIyBDYXDDrXR1bG8gNjogRWplcmNpY2lvIDQKCmEuIEdlbmVyZSB1bmEgdGFibGEgc2luIHBvbmRlcmFjaW9uZXMgcXVlIG11ZXN0cmUgZWwgZ8OpbmVybyBlbiBsYXMgZmlsYXMgKHNleCkgeSBzaSBlbCBlbmN1ZXN0YWRvIGV4cGVyaW1lbnTDsyBkaXNjcmltaW5hY2nDs24gZW4gZWwgdHJhYmFqbyBlbiBsb3Mgw7psdGltb3MgNSBhw7FvcyAoZGlzY3drNSkuIE11ZXN0cmUgc29sbyBsb3MgcG9yY2VudGFqZXMgeSBkZWNpZGEgc2kgZGVzZWEgdXRpbGl6YXIgcG9yY2VudGFqZXMgZGUgZmlsYSBvIGRlIGNvbHVtbmEuCgpTZSBkZWNpZGnDsyBtdWVzdHJhciBsb3MgcG9yY2VudGFqZXMgY29uZGljaW9uYWRvcyBwb3IgZmlsYXMgcGFyYSBtb3N0cmFyIGPDs21vIHNlIGRpc3RyaWJ1eWVuIGxvcyBuaXZlbGVzIGRlIGRpc2NyaW1pbmFjacOzbiBkYWRvIGVsIHNleG8uCgpgYGB7cn0KdGFibGExIDwtIHRhYmxlKEdTUzIwMTYkc2V4LCBHU1MyMDE2JGRpc2N3azUpCnByb3AudGFibGUodGFibGExLCBtYXJnaW4gPTEpKjEwMApgYGAKCmIuIEdlbmVyZSBsYSBtaXNtYSB0YWJsYSBxdWUgZW4gbGEgUGFydGUgImEiLCBwZXJvIGFwbGlxdWUgbG9zIHBlc29zICh3dHNzKSBhIGxhIHRhYmxhLgoKYGBge3J9CmxpYnJhcnkoc3VydmV5KQpkZXNpZ24gPC0gc3Z5ZGVzaWduKGlkcyA9IH4xLCBkYXRhID0gR1NTMjAxNiwgd2VpZ2h0cyA9IH53dHNzKQojIENyZWEgbGEgdGFibGEgZGUgY29udGluZ2VuY2lhIHV0aWxpemFuZG8gbG9zIHBlc29zIGRlbCBtdWVzdHJlbwp0YWJsYTIgPC0gc3Z5dGFibGUofnNleCArIGRpc2N3azUsIGRlc2lnbikKcHJvcC50YWJsZSh0YWJsYTIsIG1hcmdpbiA9MSkqMTAwCgpgYGAKCg==