TEMA 4. T de Student

#8-70
#Drive-a-Lemon, renta automóviles en buenas condiciones mecánicas, pero más antiguos que aquellos que rentan las grandes cadenas nacionales de renta de coches. Como resultado, anuncia que sus tarifas son considerablemente más bajas que las de sus grandes competidores. Una encuesta en la industria estableció que el cargo total promedio por renta en una de las mayores compañías es de $77.38 dólares. Una muestra aleatoria de 18 transacciones realizadas por Drive-a-Lemon mostró un cargo total promedio de $87.61, con una desviación estándar de la muestra de $19.48. Verifique que, con un nivel de significancia de 0.025, el cargo total promedio de Drive-a- Lemon es más alto que el de las grandes compañías. ¿Indica este resultado que las tarifas de Drive-a-Lemon, no son más bajas que las de las grandes cadenas nacionales? Justifique su respuesta.
#RESPUESTA
#Paso 1. Plantear hipótesis
#H0: μ = xbar
#H1: μ > xbar
#Paso 2. Nivel de confianza y grados de libertad
# a = 0.025
#GL = 17
#Paso 3. Zona de aceptación/rechazo
# t de Tabla = 2.110
#Paso 4. Fórmula
t <- (87.61 - 77.38)/(19.48/sqrt(18))
t
## [1] 2.22804
#Paso 5. Conclusión
#Se rechaza H0
#RESPUESTA del libro <- t = 2.228 (x = 87.61), tU = 2.110 (xbar = 87.07), de modo que se rechaza la hipótesis nula. Sin embargo, si Drive-a-Lemon no tiene la misma presencia a nivel nacional que las principales cadenas del país, entonces una comparación de sus tasas promedio con el promedio nacional de las grandes cadenas puede conducir a una conclusión errónea.
#8-70 #Drive-a-Lemon, renta automóviles en buenas
condiciones mecánicas, pero más antiguos que aquellos que rentan las
grandes cadenas nacionales de renta de coches. Como resultado, anuncia
que sus tarifas son considerablemente más bajas que las de sus grandes
competidores. Una encuesta en la industria estableció que el cargo total
promedio por renta en una de las mayores compañías es de $77.38 dólares.
Una muestra aleatoria de 18 transacciones realizadas por Drive-a-Lemon
mostró un cargo total promedio de $87.61, con una desviación estándar de
la muestra de $19.48. Verifique que, con un nivel de significancia de
0.025, el cargo total promedio de Drive-a-Lemon es más alto que el de
las grandes compañías. ¿Indica este resultado que las tarifas de
Drive-a-Lemon, no son más bajas que las de las grandes cadenas
nacionales? Justifique su respuesta.
#Paso 1. Plantear hipotesis #H0: Xbar = μ #H1: Xbar = α
#Paso 2. Nivel de siginificancia #α = 0.025 #GL = 17
#Paso 3. Zona de aceptación/rechazo
t de tabla = 2.110
#Paso 4. Formula
t <- (87.61 - 77.38)/(19.48/sqrt(18))
pagos <- c(107, 92, 97, 95, 105, 101, 91, 99, 95, 104)
# X, Y(segunda muestra),
t.test(pagos, y=NULL,alternative = "two.sided", mu= 100, paired = FALSE, var.equal = FALSE, conf.level = 0.90 )
##
## One Sample t-test
##
## data: pagos
## t = -0.79888, df = 9, p-value = 0.4449
## alternative hypothesis: true mean is not equal to 100
## 90 percent confidence interval:
## 95.38755 101.81245
## sample estimates:
## mean of x
## 98.6
# si es de una cola, alternative puede ser: "less" o "greater"
# promedio poblacional
# pariado, es cuando se tiene dos muestras, pero de los mismos objetos
# si p value es mayor al nivel de significancia no se rechaza Ho
# el p value tiene que ser mayor al nivel de significancia para rechazar H0
# conclusion no se rechaza H0
# intervalo de confianza: entre 95 y 101 dolares
TEMA 4. ANOVA

# Ejercicio 1
resistencia <- read.csv("/Users/marianaguevara/Downloads/Resistencia.csv")
resistencia$Caja <- as.factor(resistencia$Caja)
qf(.95,df1=3,df2=20)
## [1] 3.098391
anova1 <- aov(Resistencia ~ Caja, data=resistencia)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## Caja 3 127375 42458 25.09 5.53e-07 ***
## Residuals 20 33839 1692
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Ejercicio 2
manchado <- read.csv("/Users/marianaguevara/Downloads/Grado.csv")
manchado$Mezcla <- as.factor(manchado$Mezcla)
qf(.99,df1=2,df2=12)
## [1] 6.926608
anova2 <- aov(Grado.de.manchado ~ Mezcla, data=manchado)
summary(anova2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Mezcla 2 0.0609 0.03043 0.987 0.401
## Residuals 12 0.3701 0.03084
TEMA 6. Regresion lineal
simple

##REGRESIÓN LINEAL SIMPLE
#Ejercicio 1
x <- c(0.2,0.5,1,2,3)
y <- c(8,10,18,35,60)
regresion <- lm(y~x)
summary(regresion)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## 1 2 3 4 5
## 3.0591 -0.5354 -1.8596 -3.5079 2.8438
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.211 2.451 0.494 0.65510
## x 18.648 1.450 12.863 0.00101 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.341 on 3 degrees of freedom
## Multiple R-squared: 0.9822, Adjusted R-squared: 0.9763
## F-statistic: 165.5 on 1 and 3 DF, p-value: 0.001014
plot(x,y,pch = 16, cex = 1.3, col = "blue", main = "Ejercicio 1")
abline(lm(x ~ y))

#Ejercicio 2
a <- c(-6,-3,0,3,6,9,12,15,20,25)
b <- c(2,2.8,3.9,4.2,5.8,6.2,7.5,8.2,9.3,10.9)
regresion2 <- lm(b~a)
summary(regresion2)
##
## Call:
## lm(formula = b ~ a)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.41088 -0.12507 -0.03329 0.14807 0.32493
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.746694 0.101162 37.04 3.10e-10 ***
## a 0.288062 0.008087 35.62 4.22e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2438 on 8 degrees of freedom
## Multiple R-squared: 0.9937, Adjusted R-squared: 0.993
## F-statistic: 1269 on 1 and 8 DF, p-value: 4.223e-10
plot(a,b,pch = 16, cex = 1.3, col = "blue", main = "Ejercicio 2")
abline(lm(b~a))

plot(regresion2)




EJERCICIOS DEL MUNDO REAL
En un estudio se compararon los efectos de cuatro promociones
mensuales sobre las ventas. A continuación, presentamos las ventas
unitarias de 5 tiendas que utilizaron las 4 promociones en meses
diferentes: 
Al nivel de significancia de 0.01 ¿las promociones producen
diferentes efectos sobre las ventas?
##12-64 #Un arrendador está interesado en ver si las rentas
de sus departamentos son las típicas. Para esto tomó una muestra
aleatoria de 11 rentas y tamaños de departamentos en complejos de
departamentos similares. Los datos son los siguientes:
a) Desarrolle la ecuación de estimación que mejor describa estos datos.
b) Calcule el coeficiente de determinación. c) Pronostique la renta para
un departamento de dos recámaras.
#a)
renta <- c(230,190,450,310,218,185,340,245,125,350,280)
recamaras <- c(2,1,3,2,2,2,2,1,1,2,2)
regresion4 <- lm(renta~recamaras)
summary(regresion4)
##
## Call:
## lm(formula = renta ~ recamaras)
##
## Residuals:
## Min 1Q Median 3Q Max
## -101.80 -51.35 19.10 50.25 74.10
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 55.00 63.19 0.870 0.40667
## recamaras 115.90 33.13 3.498 0.00675 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 63.19 on 9 degrees of freedom
## Multiple R-squared: 0.5762, Adjusted R-squared: 0.5291
## F-statistic: 12.23 on 1 and 9 DF, p-value: 0.006746
#Renta = 55.00 + 115.90*Recamaras
#b)
#r2 = 0.5762
#c)
recamaras2 <- 2
renta2 <- 55.00 + 115.90*recamaras2
renta2
## [1] 286.8
#286.80
LS0tCnRpdGxlOiAiV29ya3Nob3AgMiIKYXV0aG9yOiAiTWFyaWFuYSBHdWV2YXJhIgpkYXRlOiAiMjAyMy0wNS0yMiIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKLS0tCgojIDxzcGFuIHN0eWxlID0gImNvbG9yOiB2aW9sZXQ7Ij4gVEVNQSA0LiBUIGRlIFN0dWRlbnQ8L3NwYW4+IAoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KcGFnb3MgPC0gYygxMDcsOTIsOTcsOTUsMTA1LDEwMSw5MSw5OSw5NSwxMDQpCnQudGVzdChwYWdvcywgeT1OVUxMLCBhbHRlcm5hdGl2ZT0idHdvLnNpZGVkIiwgbXU9MTAwLCBwYWlyZWQ9RkFMU0UsIHZhci5lcXVhbD1GQUxTRSwgY29uZi5sZXZlbD0wLjkwKQoKI1NpIGVzIGRlIHVuYSBjb2xhLCBhbHRlcm5hdGl2ZSBwdWVkZSBzZXI6ICJsZXNzIiBvICJncmVhdGVyIi4KCiNTaSBwIHZhbHVlIGVzIG1heW9yIGEgMC4xMCAocG9yIHNpZ25pZmljYW5jaWEgZGVsIDEwJSkgbm8gc2UgcmVjaGF6YSBIMC4KCiNDb25jbHVzacOzbjogbm8gc2UgcmVjaGF6YSBIMC4KI0ludGVydmFsbyBkZSBjb25maWFuemE6IGVudHJlIDk1IHkgMTAwIGTDs2xhcmVzLgoKI3BhcmEgcmVjaGF6YXIgcCB2YWx1ZSB0aWVuZSBxdWUgc2VyIE1FTk9SIGEgbGEgc2lnbmlmaWNhbmNpYS4KI3NpIHAgdmFsdWUgZXMgTUFZT1IgYWwgbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBubyBzZSByZWNoYXphIEgwLgpgYGAKCgohW10oL1VzZXJzL21hcmlhbmFndWV2YXJhL0Rlc2t0b3AvTG9nby1DYXJyZW50LXNsb2dhbi1ncmFuZGUtMTAucG5nKQoKYGBge3J9CiM4LTcwCgojRHJpdmUtYS1MZW1vbiwgcmVudGEgYXV0b23Ds3ZpbGVzIGVuIGJ1ZW5hcyBjb25kaWNpb25lcyBtZWPDoW5pY2FzLCBwZXJvIG3DoXMgYW50aWd1b3MgcXVlIGFxdWVsbG9zIHF1ZSByZW50YW4gbGFzIGdyYW5kZXMgY2FkZW5hcyBuYWNpb25hbGVzIGRlIHJlbnRhIGRlIGNvY2hlcy4gQ29tbyByZXN1bHRhZG8sIGFudW5jaWEgcXVlIHN1cyB0YXJpZmFzIHNvbiBjb25zaWRlcmFibGVtZW50ZSBtw6FzIGJhamFzIHF1ZSBsYXMgZGUgc3VzIGdyYW5kZXMgY29tcGV0aWRvcmVzLiBVbmEgZW5jdWVzdGEgZW4gbGEgaW5kdXN0cmlhIGVzdGFibGVjacOzIHF1ZSBlbCBjYXJnbyB0b3RhbCBwcm9tZWRpbyBwb3IgcmVudGEgZW4gdW5hIGRlIGxhcyBtYXlvcmVzIGNvbXBhw7HDrWFzIGVzIGRlICQ3Ny4zOCBkw7NsYXJlcy4gVW5hIG11ZXN0cmEgYWxlYXRvcmlhIGRlIDE4IHRyYW5zYWNjaW9uZXMgcmVhbGl6YWRhcyBwb3IgRHJpdmUtYS1MZW1vbiBtb3N0csOzIHVuIGNhcmdvIHRvdGFsIHByb21lZGlvIGRlICQ4Ny42MSwgY29uIHVuYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgZGUgbGEgbXVlc3RyYSBkZSAkMTkuNDguIFZlcmlmaXF1ZSBxdWUsIGNvbiB1biBuaXZlbCBkZSBzaWduaWZpY2FuY2lhIGRlIDAuMDI1LCBlbCBjYXJnbyB0b3RhbCBwcm9tZWRpbyBkZSBEcml2ZS1hLSBMZW1vbiBlcyBtw6FzIGFsdG8gcXVlIGVsIGRlIGxhcyBncmFuZGVzIGNvbXBhw7HDrWFzLiDCv0luZGljYSBlc3RlIHJlc3VsdGFkbyBxdWUgbGFzIHRhcmlmYXMgZGUgRHJpdmUtYS1MZW1vbiwgbm8gc29uIG3DoXMgYmFqYXMgcXVlIGxhcyBkZSBsYXMgZ3JhbmRlcyBjYWRlbmFzIG5hY2lvbmFsZXM/IEp1c3RpZmlxdWUgc3UgcmVzcHVlc3RhLgoKI1JFU1BVRVNUQSAKI1Bhc28gMS4gUGxhbnRlYXIgaGlww7N0ZXNpcyAKI0gwOiDOvCA9IHhiYXIgCiNIMTogzrwgPiB4YmFyIAoKI1Bhc28gMi4gTml2ZWwgZGUgY29uZmlhbnphIHkgZ3JhZG9zIGRlIGxpYmVydGFkIAojIGEgPSAwLjAyNQojR0wgPSAxNwoKI1Bhc28gMy4gWm9uYSBkZSBhY2VwdGFjacOzbi9yZWNoYXpvIAojIHQgZGUgVGFibGEgPSAyLjExMAoKI1Bhc28gNC4gRsOzcm11bGEgCnQgPC0gKDg3LjYxIC0gNzcuMzgpLygxOS40OC9zcXJ0KDE4KSkKdAoKI1Bhc28gNS4gQ29uY2x1c2nDs24gCiNTZSByZWNoYXphIEgwIAoKI1JFU1BVRVNUQSBkZWwgbGlicm8gPC0gdCA9IDIuMjI4ICh4ID0gODcuNjEpLCB0VSA9IDIuMTEwICh4YmFyID0gODcuMDcpLCBkZSBtb2RvIHF1ZSBzZSByZWNoYXphIGxhIGhpcMOzdGVzaXMgbnVsYS4gU2luIGVtYmFyZ28sIHNpIERyaXZlLWEtTGVtb24gbm8gdGllbmUgbGEgbWlzbWEgcHJlc2VuY2lhIGEgbml2ZWwgbmFjaW9uYWwgcXVlIGxhcyBwcmluY2lwYWxlcyBjYWRlbmFzIGRlbCBwYcOtcywgZW4CdG9uY2VzIHVuYSBjb21wYXJhY2nDs24gZGUgc3VzIHRhc2FzIHByb21lZGlvIGNvbiBlbCBwcm9tZWRpbyBuYWNpb25hbCBkZSBsYXMgZ3JhbmRlcyBjYWRlbmFzIHB1ZWRlIGNvbmR1Y2lyIGEgdW5hIGNvbmNsdXNpw7NuIGVycsOzbmVhLgpgYGAKCgojKjgtNzAqCiNEcml2ZS1hLUxlbW9uLCByZW50YSBhdXRvbcOzdmlsZXMgZW4gYnVlbmFzIGNvbmRpY2lvbmVzIG1lY8OhbmljYXMsIHBlcm8gbcOhcyBhbnRpZ3VvcyBxdWUgYXF1ZWxsb3MgcXVlIHJlbnRhbiBsYXMgZ3JhbmRlcyBjYWRlbmFzIG5hY2lvbmFsZXMgZGUgcmVudGEgZGUgY29jaGVzLiBDb21vIHJlc3VsdGFkbywgYW51bmNpYSBxdWUgc3VzIHRhcmlmYXMgc29uIGNvbnNpZGVyYWJsZW1lbnRlIG3DoXMgYmFqYXMgcXVlIGxhcyBkZSBzdXMgZ3JhbmRlcyBjb21wZXRpZG9yZXMuIFVuYSBlbmN1ZXN0YSBlbiBsYSBpbmR1c3RyaWEgZXN0YWJsZWNpw7MgcXVlIGVsIGNhcmdvIHRvdGFsIHByb21lZGlvIHBvciByZW50YSBlbiB1bmEgZGUgbGFzIG1heW9yZXMgY29tcGHDscOtYXMgZXMgZGUgJDc3LjM4IGTDs2xhcmVzLiBVbmEgbXVlc3RyYSBhbGVhdG9yaWEgZGUgMTggdHJhbnNhY2Npb25lcyByZWFsaXphZGFzIHBvciBEcml2ZS1hLUxlbW9uIG1vc3Ryw7MgdW4gY2FyZ28gdG90YWwgcHJvbWVkaW8gZGUgJDg3LjYxLCBjb24gdW5hIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBkZSBsYSBtdWVzdHJhIGRlICQxOS40OC4gVmVyaWZpcXVlIHF1ZSwgY29uIHVuIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMC4wMjUsIGVsIGNhcmdvIHRvdGFsIHByb21lZGlvIGRlIERyaXZlLWEtTGVtb24gZXMgbcOhcyBhbHRvIHF1ZSBlbCBkZSBsYXMgZ3JhbmRlcyBjb21wYcOxw61hcy4gwr9JbmRpY2EgZXN0ZSByZXN1bHRhZG8gcXVlIGxhcyB0YXJpZmFzIGRlIERyaXZlLWEtTGVtb24sIG5vIHNvbiBtw6FzIGJhamFzIHF1ZSBsYXMgZGUgbGFzIGdyYW5kZXMgY2FkZW5hcyBuYWNpb25hbGVzPyBKdXN0aWZpcXVlIHN1IHJlc3B1ZXN0YS4KCiNQYXNvIDEuIFBsYW50ZWFyIGhpcG90ZXNpcyAKI0gwOiBYYmFyID0gzrwKI0gxOiBYYmFyID0gzrEKCiNQYXNvIDIuIE5pdmVsIGRlIHNpZ2luaWZpY2FuY2lhCiPOsSA9IDAuMDI1CiNHTCA9IDE3CgojUGFzbyAzLiBab25hIGRlIGFjZXB0YWNpw7NuL3JlY2hhem8KCnQgZGUgdGFibGEgPSAyLjExMAoKI1Bhc28gNC4gRm9ybXVsYQpgYGB7cn0KdCA8LSAoODcuNjEgLSA3Ny4zOCkvKDE5LjQ4L3NxcnQoMTgpKQoKcGFnb3MgPC0gYygxMDcsIDkyLCA5NywgOTUsIDEwNSwgMTAxLCA5MSwgOTksIDk1LCAxMDQpCgojIFgsIFkoc2VndW5kYSBtdWVzdHJhKSwgCnQudGVzdChwYWdvcywgeT1OVUxMLGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIsIG11PSAxMDAsIHBhaXJlZCA9IEZBTFNFLCB2YXIuZXF1YWwgPSBGQUxTRSwgY29uZi5sZXZlbCA9IDAuOTAgKQoKIyBzaSBlcyBkZSB1bmEgY29sYSwgYWx0ZXJuYXRpdmUgcHVlZGUgc2VyOiAibGVzcyIgbyAiZ3JlYXRlciIKIyBwcm9tZWRpbyBwb2JsYWNpb25hbCAKIyBwYXJpYWRvLCBlcyBjdWFuZG8gc2UgdGllbmUgZG9zIG11ZXN0cmFzLCBwZXJvIGRlIGxvcyBtaXNtb3Mgb2JqZXRvcwoKIyBzaSBwIHZhbHVlIGVzIG1heW9yIGFsIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgbm8gc2UgcmVjaGF6YSBIbwoKIyBlbCBwIHZhbHVlIHRpZW5lIHF1ZSBzZXIgbWF5b3IgYWwgbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBwYXJhIHJlY2hhemFyIEgwCgojIGNvbmNsdXNpb24gbm8gc2UgcmVjaGF6YSBIMAojIGludGVydmFsbyBkZSBjb25maWFuemE6IGVudHJlIDk1IHkgMTAxIGRvbGFyZXMKYGBgCgoKIyA8c3BhbiBzdHlsZSA9ICJjb2xvcjogdmlvbGV0OyI+IFRFTUEgNC4gQU5PVkE8L3NwYW4+IAoKIVtdKC9Vc2Vycy9tYXJpYW5hZ3VldmFyYS9EZXNrdG9wL2NhcnRvbi1ib3hlcy1jYXJ0b29uLWlsbHVzdHJhdGlvbi1kZXNpZ24tdmVjdG9yLmpwZykKCmBgYHtyfQojIEVqZXJjaWNpbyAxCgpyZXNpc3RlbmNpYSA8LSByZWFkLmNzdigiL1VzZXJzL21hcmlhbmFndWV2YXJhL0Rvd25sb2Fkcy9SZXNpc3RlbmNpYS5jc3YiKQpyZXNpc3RlbmNpYSRDYWphIDwtIGFzLmZhY3RvcihyZXNpc3RlbmNpYSRDYWphKQpxZiguOTUsZGYxPTMsZGYyPTIwKQphbm92YTEgPC0gYW92KFJlc2lzdGVuY2lhIH4gQ2FqYSwgZGF0YT1yZXNpc3RlbmNpYSkKc3VtbWFyeShhbm92YTEpCgpgYGAKCmBgYHtyfQojRWplcmNpY2lvIDIKCm1hbmNoYWRvIDwtIHJlYWQuY3N2KCIvVXNlcnMvbWFyaWFuYWd1ZXZhcmEvRG93bmxvYWRzL0dyYWRvLmNzdiIpCm1hbmNoYWRvJE1lemNsYSA8LSBhcy5mYWN0b3IobWFuY2hhZG8kTWV6Y2xhKQpxZiguOTksZGYxPTIsZGYyPTEyKQphbm92YTIgPC0gYW92KEdyYWRvLmRlLm1hbmNoYWRvIH4gTWV6Y2xhLCBkYXRhPW1hbmNoYWRvKQpzdW1tYXJ5KGFub3ZhMikKCmBgYAoKCiMgPHNwYW4gc3R5bGUgPSAiY29sb3I6IHZpb2xldDsiPiBURU1BIDYuIFJlZ3Jlc2lvbiBsaW5lYWwgc2ltcGxlPC9zcGFuPiAKCiFbXSgvVXNlcnMvbWFyaWFuYWd1ZXZhcmEvRGVza3RvcC9XWmhRbVNNQ0dFSmdMSGhuaWtPY3VNbnUuanBnKQpgYGB7cn0KIyNSRUdSRVNJw5NOIExJTkVBTCBTSU1QTEUKCiNFamVyY2ljaW8gMQoKeCA8LSBjKDAuMiwwLjUsMSwyLDMpCnkgPC0gYyg4LDEwLDE4LDM1LDYwKQpyZWdyZXNpb24gPC0gbG0oeX54KQpzdW1tYXJ5KHJlZ3Jlc2lvbikKcGxvdCh4LHkscGNoID0gMTYsIGNleCA9IDEuMywgY29sID0gImJsdWUiLCBtYWluID0gIkVqZXJjaWNpbyAxIikKYWJsaW5lKGxtKHggfiB5KSkKCiNFamVyY2ljaW8gMgphIDwtIGMoLTYsLTMsMCwzLDYsOSwxMiwxNSwyMCwyNSkKYiA8LSBjKDIsMi44LDMuOSw0LjIsNS44LDYuMiw3LjUsOC4yLDkuMywxMC45KQpyZWdyZXNpb24yIDwtIGxtKGJ+YSkKc3VtbWFyeShyZWdyZXNpb24yKQpwbG90KGEsYixwY2ggPSAxNiwgY2V4ID0gMS4zLCBjb2wgPSAiYmx1ZSIsIG1haW4gPSAiRWplcmNpY2lvIDIiKQphYmxpbmUobG0oYn5hKSkKcGxvdChyZWdyZXNpb24yKQpgYGAKCgojIDxzcGFuIHN0eWxlID0gImNvbG9yOiB2aW9sZXQ7Ij4gRUpFUkNJQ0lPUyBERUwgTVVORE8gUkVBTDwvc3Bhbj4KCkVuIHVuIGVzdHVkaW8gc2UgY29tcGFyYXJvbiBsb3MgZWZlY3RvcyBkZSBjdWF0cm8gcHJvbW9jaW9uZXMgbWVuc3VhbGVzIHNvYnJlIGxhcyB2ZW50YXMuIEEKY29udGludWFjacOzbiwgcHJlc2VudGFtb3MgbGFzIHZlbnRhcyB1bml0YXJpYXMgZGUgNSB0aWVuZGFzIHF1ZSB1dGlsaXphcm9uIGxhcyA0IHByb21vY2lvbmVzIGVuCm1lc2VzIGRpZmVyZW50ZXM6CiFbXSgvVXNlcnMvbWFyaWFuYWd1ZXZhcmEvRGVza3RvcC9TY3JlZW4gU2hvdCAyMDIzLTA1LTI0IGF0IDEzLjE0LjI4LnBuZykKCkFsIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMC4wMSDCv2xhcyBwcm9tb2Npb25lcyBwcm9kdWNlbiBkaWZlcmVudGVzIGVmZWN0b3Mgc29icmUgbGFzIHZlbnRhcz8KCiMjKjEyLTY0KgojVW4gYXJyZW5kYWRvciBlc3TDoSBpbnRlcmVzYWRvIGVuIHZlciBzaSBsYXMgcmVudGFzIGRlIHN1cyBkZXBhcnRhbWVudG9zIHNvbiBsYXMgdMOtcGljYXMuIFBhcmEgZXN0byB0b23DsyB1bmEgbXVlc3RyYSBhbGVhdG9yaWEgZGUgMTEgcmVudGFzIHkgdGFtYcOxb3MgZGUgZGVwYXJ0YW1lbnRvcyBlbiBjb21wbGVqb3MgZGUgZGVwYXJ0YW1lbnRvcyBzaW1pbGFyZXMuIExvcyBkYXRvcyBzb24gbG9zIHNpZ3VpZW50ZXM6CiFbXSgvVXNlcnMvbWFyaWFuYWd1ZXZhcmEvRGVza3RvcC9TY3JlZW4gU2hvdCAyMDIzLTA1LTI1IGF0IDE0LjAxLjA1LnBuZykKYSkgRGVzYXJyb2xsZSBsYSBlY3VhY2nDs24gZGUgZXN0aW1hY2nDs24gcXVlIG1lam9yIGRlc2NyaWJhIGVzdG9zIGRhdG9zLgpiKSBDYWxjdWxlIGVsIGNvZWZpY2llbnRlIGRlIGRldGVybWluYWNpw7NuLgpjKSBQcm9ub3N0aXF1ZSBsYSByZW50YSBwYXJhIHVuIGRlcGFydGFtZW50byBkZSBkb3MgcmVjw6FtYXJhcy4KYGBge3J9CiNhKQpyZW50YSA8LSBjKDIzMCwxOTAsNDUwLDMxMCwyMTgsMTg1LDM0MCwyNDUsMTI1LDM1MCwyODApCnJlY2FtYXJhcyA8LSBjKDIsMSwzLDIsMiwyLDIsMSwxLDIsMikKcmVncmVzaW9uNCA8LSBsbShyZW50YX5yZWNhbWFyYXMpCnN1bW1hcnkocmVncmVzaW9uNCkKCiNSZW50YSA9IDU1LjAwICsgMTE1LjkwKlJlY2FtYXJhcwoKI2IpCiNyMiA9IDAuNTc2MgoKI2MpCnJlY2FtYXJhczIgPC0gMgpyZW50YTIgPC0gNTUuMDAgKyAxMTUuOTAqcmVjYW1hcmFzMgpyZW50YTIKCiMyODYuODAKYGBgCgoKCgoKCgoKCgoKCgo=