Tema 4. T de Student

Ejercicio en clase 2
pagos <- c(107,92,97,95,105,101,91,99,95,104)
t.test(pagos,y=NULL,alternative="two.sided",mu=100,paired=FALSE,var.equal=FALSE,con.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
## 95 percent confidence interval:
## 94.63566 102.56434
## sample estimates:
## mean of x
## 98.6
Si es de una cola, alternative puede ser: “less” o “greater”
Si p value es mayor a 0,10 (por significancia del 10%) no se rechaza
H0
Conclusión: no se rechaza H0
Intervalo de Confianza entre: 95 y 101 USD
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:
H0 = x barra
H1 µ ≠ x barra
Paso 2:
α = 0.023
g.dl = 17
Paso 3:
t de tablas = 2.110
Paso 4:
t <- (87.61-77.38)/(19.48/sqrt(18))
t
## [1] 2.22804
Paso 5:
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
Tema 5. Anova

Ejercicio en clase 1
resistencia <- read.csv("C:\\Users\\alfon\\Downloads\\ANOVA Mezclas.csv")
resistencia$Mezcla <- as.factor(resistencia$Mezcla)
qf(.95,df1=3,df=20)
## [1] 3.098391
anova1 <- aov(Valor ~ Mezcla, data=resistencia)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## Mezcla 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 en clase 2
manchado <- read.csv("C:\\Users\\alfon\\Downloads\\ANOVA Grado.csv")
manchado$Manchado <- as.factor(manchado$Manchado)
qf(.99,df1=2,df2=12)
## [1] 6.926608
anova2 <- aov(Valor ~ Manchado, data=manchado)
summary(anova2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Manchado 2 0.0609 0.03043 0.987 0.401
## Residuals 12 0.3701 0.03084
Tema 6. Regresión lineal simple

Ejercico 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.8437
##
## 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 = "Ejercicio1")
abline(lm(y ~ x))





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
## -4.080 -2.105 -0.080 1.945 4.820
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.0800 0.9183 6.621 9.69e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.904 on 9 degrees of freedom
plot(a,b, pch = 16, cex = 1.3, col="blue", main = "Ejercicio2")
abline(lm(b ~ a))



## hat values (leverages) are all = 0.1
## and there are no factor predictors; no plot no. 5


Ejercicios del Mundo Real

11-26
Un estudio compara el número de horas de alivio que proporcionan
cinco marcas de antiácidos administrados a 25 personas diferentes, cada
una con acidez estomacal considerada fuerte. Los resultados son los
siguientes:
| 4.4 |
5.8 |
4.8 |
2.9 |
4.6 |
| 4.6 |
5.2 |
5.9 |
2.7 |
4.3 |
| 4.5 |
4.9 |
4.9 |
2.9 |
3.8 |
| 4.1 |
4.7 |
4.6 |
3.9 |
5.2 |
| 3.8 |
4.6 |
4.3 |
4.3 |
4.4 |
a) Calcule el cociente F. Para un nivel de significancia de
0.05
antiacidos <- read.csv("C:\\Users\\alfon\\Downloads\\antiacidos.csv")
antiacidos$marca <- as.factor(antiacidos$marca)
qf(.95,df=4,df2=20)
## [1] 2.866081
anova3 <- aov(horas ~ marca, data=antiacidos)
F 7.65, Fu 2.87, de forma que rechazamos H0.
Las marcas producen una cantidad de alivio significativamente
diferente.
11-38
En la ciudad de Bigville, una cadena de comida rápida está
adquiriendo una mala reputación debido a que tardan mucho en servir a
los clientes. Como la cadena tiene cuatro restaurantes en esa ciudad,
quiere saber si los cuatro restaurantes tienen el mismo tiempo promedio
de servicio. Uno de los dueños de la cadena ha decidido visitar cada
local y registrar el tiempo de servicio para 5 clientes escogidos al
azar. En sus cuatro visitas al medio día registró los siguientes tiempos
de servicio en minutos:
| 3 |
3 |
2 |
3 |
| 4 |
3.5 |
3.5 |
4 |
| 5.5 |
4.5 |
5 |
5.5 |
| 3.5 |
4 |
6.5 |
2.5 |
| 4 |
5.5 |
6 |
3 |
a) Utilice un nivel de significancia de 0.05, ¿todos los
restaurantes tienen el mismo tiempo medio de servicio?
restaurante <- read.csv("C:\\Users\\alfon\\Downloads\\restaurante.csv")
restaurante$restaurante <- as.factor(restaurante$restaurante)
qf(.95,df1=3,df2=16)
## [1] 3.238872
anova4 <- aov(tiempo ~ restaurante, data=restaurante)
summary(anova4)
## Df Sum Sq Mean Sq F value Pr(>F)
## restaurante 3 2.538 0.8458 0.509 0.682
## Residuals 16 26.600 1.6625
b) Según sus resultados, ¿deberá el dueño hacer algunas
recomendaciones a cualquiera de los administradores de los
restaurantes?
Debido a que ningún restaurante es peor que los otros,
cualquier recomendación tendría que hacerse a todos los
administradores
12-64
Un arrendador está interesado en ver si las rentas de sus
departamentos son las comunes. Para esto tomó una muestra aleatoria de
11 rentas y tamaños de departamentos en complejos de departamentos
similares. Los datos son los siguientes:
| 230 |
2 |
| 190 |
1 |
| 450 |
3 |
| 310 |
2 |
| 218 |
2 |
| 185 |
2 |
| 340 |
2 |
| 245 |
1 |
| 125 |
1 |
| 350 |
2 |
| 280 |
2 |
#a) Desarrolle la ecuación de estimación que mejor describa estos datos
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)
regresion3 <- lm (renta~recamaras)
summary(regresion3)
##
## 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
#b) Calcule el error estándar de la estimación para esta relación.
# r2 = 0.5762
#c) Para un mes con gastos de $28,000 en espectaculares, desarrolle un intervalo de confianza del 95% para las ventas mensuales esperadas ese mes.
recamaras1 <- 2
renta1 <- 55+115.90*recamaras1
renta1
## [1] 286.8
LS0tDQp0aXRsZTogIldvcmtzaG9wMl9BMDEyODQ5NzAiDQphdXRob3I6ICJBbGZvbnNvIFZpbGxhcnJlYWwgQTAxMjg0OTcwIg0KZGF0ZTogIjIwMjMtMDUtMjIiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0aGVtZTogdW5pdGVkDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KLS0tDQoNCiMgKio8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij4gVGVtYSA0LiBUIGRlIFN0dWRlbnQgPC9zcGFuPioqDQoNClwNCg0KIVtdKCJDOlxcVXNlcnNcXGFsZm9uXFxPbmVEcml2ZVxcRGVza3RvcFxcRGlhZ27Ds3N0aWNvIHBhcmEgbMOtbmVhcyBkZSBhY2Npw7NuXFxXb3Jrc2hvcCAyIGZvdG9zXFxHSUYxLmdpZiIpDQoNClwNCg0KIyMjICoqRWplcmNpY2lvIGVuIGNsYXNlIDIqKg0KYGBge3J9DQpwYWdvcyA8LSBjKDEwNyw5Miw5Nyw5NSwxMDUsMTAxLDkxLDk5LDk1LDEwNCkNCnQudGVzdChwYWdvcyx5PU5VTEwsYWx0ZXJuYXRpdmU9InR3by5zaWRlZCIsbXU9MTAwLHBhaXJlZD1GQUxTRSx2YXIuZXF1YWw9RkFMU0UsY29uLmxldmVsPTAuOTApDQpgYGANCg0KDQojIyMjIyBTaSBlcyBkZSB1bmEgY29sYSwgYWx0ZXJuYXRpdmUgcHVlZGUgc2VyOiAibGVzcyIgbyAiZ3JlYXRlciINCg0KIyMjIyMgU2kgcCB2YWx1ZSAgZXMgbWF5b3IgYSAwLDEwIChwb3Igc2lnbmlmaWNhbmNpYSBkZWwgMTAlKSBubyBzZSByZWNoYXphIEgwDQoNClwNCg0KIyMjIyMgKipDb25jbHVzacOzbjogbm8gc2UgcmVjaGF6YSBIMCoqDQojIyMjIyBJbnRlcnZhbG8gZGUgQ29uZmlhbnphIGVudHJlOiA5NSB5IDEwMSBVU0QNCg0KXA0KDQojIyMgKio4LTcwKioNCiMjIyMjIERyaXZlLWEtTGVtb24sIHJlbnRhIGF1dG9tw7N2aWxlcyBlbiBidWVuYXMgY29uZGljaW9uZXMgbWVjw6FuaWNhcywgcGVybyBtw6FzIGFudGlndW9zIHF1ZSBhcXVlbGxvcyBxdWUgcmVudGFuIGxhcyBncmFuZGVzIGNhZGVuYXMgbmFjaW9uYWxlcyBkZSByZW50YSBkZSBjb2NoZXMuIENvbW8gcmVzdWx0YWRvLCBhbnVuY2lhIHF1ZSBzdXMgdGFyaWZhcyBzb24gY29uc2lkZXJhYmxlbWVudGUgbcOhcyBiYWphcyBxdWUgbGFzIGRlIHN1cyBncmFuZGVzIGNvbXBldGlkb3Jlcy4gVW5hIGVuY3Vlc3RhIGVuIGxhIGluZHVzdHJpYSBlc3RhYmxlY2nDsyBxdWUgZWwgY2FyZ28gdG90YWwgcHJvbWVkaW8gcG9yIHJlbnRhIGVuIHVuYSBkZSBsYXMgbWF5b3JlcyBjb21wYcOxw61hcyBlcyBkZSAkNzcuMzggZMOzbGFyZXMuIFVuYSBtdWVzdHJhIGFsZWF0b3JpYSBkZSAxOCB0cmFuc2FjY2lvbmVzIHJlYWxpemFkYXMgcG9yIERyaXZlLWEtTGVtb24gbW9zdHLDsyB1biBjYXJnbyB0b3RhbCBwcm9tZWRpbyBkZSAkODcuNjEsIGNvbiB1bmEgZGVzdmlhY2nDs24gZXN0w6FuZGFyIGRlIGxhIG11ZXN0cmEgZGUgJDE5LjQ4LiBWZXJpZmlxdWUgcXVlLCBjb24gdW4gbml2ZWwgZGUgc2lnbmlmaWNhbmNpYSBkZSAwLjAyNSwgZWwgY2FyZ28gdG90YWwgcHJvbWVkaW8gZGUgRHJpdmUtYS1MZW1vbiBlcyBtw6FzIGFsdG8gcXVlIGVsIGRlIGxhcyBncmFuZGVzIGNvbXBhw7HDrWFzLiDCv0luZGljYSBlc3RlIHJlc3VsdGFkbyBxdWUgbGFzIHRhcmlmYXMgZGUgRHJpdmUtYS1MZW1vbiwgbm8gc29uIG3DoXMgYmFqYXMgcXVlIGxhcyBkZSBsYXMgZ3JhbmRlcyBjYWRlbmFzIG5hY2lvbmFsZXM/IEp1c3RpZmlxdWUgc3UgcmVzcHVlc3RhLg0KDQojIyMjIyAqKlJFU1BVRVNUQSoqDQojIyMjIyAqKlBhc28gMToqKg0KIyMjIyMgSDAgPSB4IGJhcnJhDQojIyMjIyBIMSDCtSDiiaAgeCBiYXJyYQ0KDQojIyMjIyAqKlBhc28gMjoqKiANCiMjIyMjIM6xID0gMC4wMjMNCiMjIyMjIGcuZGwgPSAxNw0KDQojIyMjIyAqKlBhc28gMzoqKg0KIyMjIyMgdCBkZSB0YWJsYXMgPSAyLjExMA0KDQojIyMjIyAqKlBhc28gNDoqKg0KYGBge3J9DQp0IDwtICg4Ny42MS03Ny4zOCkvKDE5LjQ4L3NxcnQoMTgpKQ0KdA0KYGBgDQoNCg0KIyMjIyMgKipQYXNvIDU6KioNCiMjIyMjIFNlIHJlY2hhemEgbGEgaGlww7N0ZXNpcyBudWxhLiBTaW4gZW1iYXJnbywgc2kgRHJpdmUtYS1MZW1vbiBubyB0aWVuZSBsYSBtaXNtYSBwcmVzZW5jaWEgYSBuaXZlbCBuYWNpb25hbCBxdWUgbGFzIHByaW5jaXBhbGVzIGNhZGVuYXMgZGVsIHBhw61zLCBlbnRvbmNlcyB1bmEgY29tcGFyYWNpw7NuIGRlIHN1cyB0YXNhcw0KDQpcDQoNCiMgKio8c3BhbiBzdHlsZT0iY29sb3I6cmVkOyI+IFRlbWEgNS4gQW5vdmEgPC9zcGFuPioqDQoNClwNCg0KIVtdKCJDOlxcVXNlcnNcXGFsZm9uXFxPbmVEcml2ZVxcRGVza3RvcFxcRGlhZ27Ds3N0aWNvIHBhcmEgbMOtbmVhcyBkZSBhY2Npw7NuXFxXb3Jrc2hvcCAyIGZvdG9zXFxHSUYyLmdpZiIpDQoNClwNCg0KIyMjICoqRWplcmNpY2lvIGVuIGNsYXNlIDEqKg0KYGBge3J9DQpyZXNpc3RlbmNpYSA8LSByZWFkLmNzdigiQzpcXFVzZXJzXFxhbGZvblxcRG93bmxvYWRzXFxBTk9WQSBNZXpjbGFzLmNzdiIpDQpyZXNpc3RlbmNpYSRNZXpjbGEgPC0gYXMuZmFjdG9yKHJlc2lzdGVuY2lhJE1lemNsYSkNCg0KcWYoLjk1LGRmMT0zLGRmPTIwKQ0KYW5vdmExIDwtIGFvdihWYWxvciB+IE1lemNsYSwgZGF0YT1yZXNpc3RlbmNpYSkNCnN1bW1hcnkoYW5vdmExKQ0KYGBgDQoNClwNCg0KIyMjICoqRWplcmNpY2lvIGVuIGNsYXNlIDIqKg0KYGBge3J9DQptYW5jaGFkbyA8LSByZWFkLmNzdigiQzpcXFVzZXJzXFxhbGZvblxcRG93bmxvYWRzXFxBTk9WQSBHcmFkby5jc3YiKQ0KbWFuY2hhZG8kTWFuY2hhZG8gPC0gYXMuZmFjdG9yKG1hbmNoYWRvJE1hbmNoYWRvKQ0KDQpxZiguOTksZGYxPTIsZGYyPTEyKQ0KYW5vdmEyIDwtIGFvdihWYWxvciB+IE1hbmNoYWRvLCBkYXRhPW1hbmNoYWRvKQ0Kc3VtbWFyeShhbm92YTIpDQpgYGANCg0KXA0KDQojICoqPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWU7Ij4gVGVtYSA2LiBSZWdyZXNpw7NuIGxpbmVhbCBzaW1wbGUgPC9zcGFuPioqDQoNClwNCg0KIVtdKCJDOlxcVXNlcnNcXGFsZm9uXFxPbmVEcml2ZVxcRGVza3RvcFxcRGlhZ27Ds3N0aWNvIHBhcmEgbMOtbmVhcyBkZSBhY2Npw7NuXFxXb3Jrc2hvcCAyIGZvdG9zXFxHSUYzLmdpZiIpDQoNClwNCg0KIyMjICoqRWplcmNpY28gMSoqDQpgYGB7cn0NCnggPC0gYygwLjIsMC41LDEsMiwzKQ0KeSA8LSBjKDgsMTAsMTgsMzUsNjApDQoNCnJlZ3Jlc2lvbiA8LSBsbSh5fngpDQpzdW1tYXJ5KHJlZ3Jlc2lvbikNCg0KcGxvdCh4LHksIHBjaCA9IDE2LCBjZXggPSAxLjMsIGNvbD0iYmx1ZSIsIG1haW4gPSAiRWplcmNpY2lvMSIpDQphYmxpbmUobG0oeSB+IHgpKQ0KcGxvdChyZWdyZXNpb24pDQpgYGANCg0KIyMjICoqRWplcmNpY2lvIDIqKg0KYGBge3J9DQphIDwtIGMoLTYsLTMsMCwzLDYsOSwxMiwxNSwyMCwyNSkNCmIgPC0gYygyLDIuOCwzLjksNC4yLDUuOCw2LjIsNy41LDguMiw5LjMsMTAuOSkNCg0KcmVncmVzaW9uMiA8LSBsbShifi1hKQ0Kc3VtbWFyeShyZWdyZXNpb24yKQ0KDQpwbG90KGEsYiwgcGNoID0gMTYsIGNleCA9IDEuMywgY29sPSJibHVlIiwgbWFpbiA9ICJFamVyY2ljaW8yIikNCmFibGluZShsbShiIH4gYSkpDQpwbG90KHJlZ3Jlc2lvbjIpDQpgYGANCg0KXA0KDQojICoqPHNwYW4gc3R5bGU9ImNvbG9yOnB1cnBsZTsiPiBFamVyY2ljaW9zIGRlbCBNdW5kbyBSZWFsIDwvc3Bhbj4qKg0KDQpcDQoNCiFbXSgiQzpcXFVzZXJzXFxhbGZvblxcT25lRHJpdmVcXERlc2t0b3BcXERpYWduw7NzdGljbyBwYXJhIGzDrW5lYXMgZGUgYWNjacOzblxcV29ya3Nob3AgMiBmb3Rvc1xcR0lGNC5naWYiKQ0KDQpcDQoNCiMjIyAqKjExLTI2KioNCiMjIyMjIFVuIGVzdHVkaW8gY29tcGFyYSBlbCBuw7ptZXJvIGRlIGhvcmFzIGRlIGFsaXZpbyBxdWUgcHJvcG9yY2lvbmFuIGNpbmNvIG1hcmNhcyBkZSBhbnRpw6FjaWRvcyBhZG1pbmlzdHJhZG9zIGEgMjUgcGVyc29uYXMgZGlmZXJlbnRlcywgY2FkYSB1bmEgY29uIGFjaWRleiBlc3RvbWFjYWwgY29uc2lkZXJhZGEgZnVlcnRlLiBMb3MgcmVzdWx0YWRvcyBzb24gbG9zIHNpZ3VpZW50ZXM6DQoNCnwgQSB8IEIgfCBDIHwgRCB8IEUgfA0KOi0tOnw6LTp8Oi06fDotOnw6LToNCnw0LjR8NS44fDQuOHwyLjl8NC42fA0KfDQuNnw1LjJ8NS45fDIuN3w0LjN8DQp8NC41fDQuOXw0Ljl8Mi45fDMuOHwNCnw0LjF8NC43fDQuNnwzLjl8NS4yfA0KfDMuOHw0LjZ8NC4zfDQuM3w0LjR8DQoNCiMjIyMgYSkgQ2FsY3VsZSBlbCBjb2NpZW50ZSBGLiBQYXJhIHVuIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMC4wNQ0KYGBge3J9DQphbnRpYWNpZG9zIDwtIHJlYWQuY3N2KCJDOlxcVXNlcnNcXGFsZm9uXFxEb3dubG9hZHNcXGFudGlhY2lkb3MuY3N2IikNCmFudGlhY2lkb3MkbWFyY2EgPC0gYXMuZmFjdG9yKGFudGlhY2lkb3MkbWFyY2EpDQpxZiguOTUsZGY9NCxkZjI9MjApDQphbm92YTMgPC0gYW92KGhvcmFzIH4gbWFyY2EsIGRhdGE9YW50aWFjaWRvcykNCmBgYA0KIyMjIyBGICA3LjY1LCBGdSAgMi44NywgZGUgZm9ybWEgcXVlIHJlY2hhemFtb3MgSDAuIA0KIyMjIyBMYXMgbWFyY2FzIHByb2R1Y2VuIHVuYSBjYW50aWRhZCBkZSBhbGl2aW8gc2lnbmlmaWNhdGl2YW1lbnRlIGRpZmVyZW50ZS4NCg0KDQojIyMgKioxMS0zOCoqDQojIyMjIEVuIGxhIGNpdWRhZCBkZSBCaWd2aWxsZSwgdW5hIGNhZGVuYSBkZSBjb21pZGEgcsOhcGlkYSBlc3TDoSBhZHF1aXJpZW5kbyB1bmEgbWFsYSByZXB1dGFjacOzbiBkZWJpZG8gYSBxdWUgdGFyZGFuIG11Y2hvIGVuIHNlcnZpciBhIGxvcyBjbGllbnRlcy4gQ29tbyBsYSBjYWRlbmEgdGllbmUgY3VhdHJvIHJlc3RhdXJhbnRlcyBlbiBlc2EgY2l1ZGFkLCBxdWllcmUgc2FiZXIgc2kgbG9zIGN1YXRybyByZXN0YXVyYW50ZXMgdGllbmVuIGVsIG1pc21vIHRpZW1wbyBwcm9tZWRpbyBkZSBzZXJ2aWNpby4gVW5vIGRlIGxvcyBkdWXDsW9zIGRlIGxhIGNhZGVuYSBoYSBkZWNpZGlkbyB2aXNpdGFyIGNhZGEgbG9jYWwgeSByZWdpc3RyYXIgZWwgdGllbXBvIGRlIHNlcnZpY2lvIHBhcmEgNSBjbGllbnRlcyBlc2NvZ2lkb3MgYWwgYXphci4gRW4gc3VzIGN1YXRybyB2aXNpdGFzIGFsIG1lZGlvIGTDrWEgcmVnaXN0csOzIGxvcyBzaWd1aWVudGVzIHRpZW1wb3MgZGUgc2VydmljaW8gZW4gbWludXRvczoNCg0KfCBSZXN0YXVyYW50ZSAxIHwgUmVzdGF1cmFudGUgMiB8IFJlc3RhdXJhbnRlIDMgfCBSZXN0YXVyYW50ZSA0IHwNCjotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS06DQp8ICAgICAgIDMgICAgICAgfCAgICAgICAzICAgICAgIHwgICAgICAgMiAgICAgICB8ICAgICAgIDMgICAgICAgfA0KfCAgICAgICA0ICAgICAgIHwgICAgICAzLjUgICAgICB8ICAgICAgMy41ICAgICAgfCAgICAgICA0ICAgICAgIHwNCnwgICAgICA1LjUgICAgICB8ICAgICAgNC41ICAgICAgfCAgICAgICA1ICAgICAgIHwgICAgICA1LjUgICAgICB8DQp8ICAgICAgMy41ICAgICAgfCAgICAgICA0ICAgICAgIHwgICAgICA2LjUgICAgICB8ICAgICAgMi41ICAgICAgfA0KfCAgICAgICA0ICAgICAgIHwgICAgICA1LjUgICAgICB8ICAgICAgIDYgICAgICAgfCAgICAgICAzICAgICAgIHwNCg0KIyMjIyBhKSBVdGlsaWNlIHVuIG5pdmVsIGRlIHNpZ25pZmljYW5jaWEgZGUgMC4wNSwgwr90b2RvcyBsb3MgcmVzdGF1cmFudGVzIHRpZW5lbiBlbCBtaXNtbyB0aWVtcG8gbWVkaW8gZGUgc2VydmljaW8/DQoNCmBgYHtyfQ0KcmVzdGF1cmFudGUgPC0gcmVhZC5jc3YoIkM6XFxVc2Vyc1xcYWxmb25cXERvd25sb2Fkc1xccmVzdGF1cmFudGUuY3N2IikNCnJlc3RhdXJhbnRlJHJlc3RhdXJhbnRlIDwtIGFzLmZhY3RvcihyZXN0YXVyYW50ZSRyZXN0YXVyYW50ZSkNCnFmKC45NSxkZjE9MyxkZjI9MTYpDQphbm92YTQgPC0gYW92KHRpZW1wbyB+IHJlc3RhdXJhbnRlLCBkYXRhPXJlc3RhdXJhbnRlKQ0Kc3VtbWFyeShhbm92YTQpDQpgYGANCiMjIyMgYikgU2Vnw7puIHN1cyByZXN1bHRhZG9zLCDCv2RlYmVyw6EgZWwgZHVlw7FvIGhhY2VyIGFsZ3VuYXMgcmVjb21lbmRhY2lvbmVzIGEgY3VhbHF1aWVyYSBkZSBsb3MgYWRtaW5pc3RyYWRvcmVzIGRlIGxvcyByZXN0YXVyYW50ZXM/DQojIyMjICoqRGViaWRvIGEgcXVlIG5pbmfDum4gcmVzdGF1cmFudGUgZXMgcGVvciBxdWUgbG9zIG90cm9zLCBjdWFscXVpZXIgcmVjb21lbmRhY2nDs24gdGVuZHLDrWEgcXVlIGhhY2Vyc2UgYSB0b2RvcyBsb3MgYWRtaW5pc3RyYWRvcmVzKioNCg0KXA0KDQojIyMgKioxMi02NCoqDQojIyMjIFVuIGFycmVuZGFkb3IgZXN0w6EgaW50ZXJlc2FkbyBlbiB2ZXIgc2kgbGFzIHJlbnRhcyBkZSBzdXMgZGVwYXJ0YW1lbnRvcyBzb24gbGFzIGNvbXVuZXMuIFBhcmEgZXN0byB0b23DsyB1bmEgbXVlc3RyYSBhbGVhdG9yaWEgZGUgMTEgcmVudGFzIHkgdGFtYcOxb3MgZGUgZGVwYXJ0YW1lbnRvcyBlbiBjb21wbGVqb3MgZGUgZGVwYXJ0YW1lbnRvcyBzaW1pbGFyZXMuIExvcyBkYXRvcyBzb24gbG9zIHNpZ3VpZW50ZXM6DQoNCnwgICBSZW50YSAgIHwgTsO6bWVybyBkZSByZWNhbWFyYXMgfCANCjotLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS06DQp8ICAgMjMwICAgICB8ICAgICAgICAgMiAgICAgICAgICAgfA0KfCAgIDE5MCAgICAgfCAgICAgICAgIDEgICAgICAgICAgIHwNCnwgICA0NTAgICAgIHwgICAgICAgICAzICAgICAgICAgICB8DQp8ICAgMzEwICAgICB8ICAgICAgICAgMiAgICAgICAgICAgfA0KfCAgIDIxOCAgICAgfCAgICAgICAgIDIgICAgICAgICAgIHwNCnwgICAxODUgICAgIHwgICAgICAgICAyICAgICAgICAgICB8DQp8ICAgMzQwICAgICB8ICAgICAgICAgMiAgICAgICAgICAgfA0KfCAgIDI0NSAgICAgfCAgICAgICAgIDEgICAgICAgICAgIHwNCnwgICAxMjUgICAgIHwgICAgICAgICAxICAgICAgICAgICB8DQp8ICAgMzUwICAgICB8ICAgICAgICAgMiAgICAgICAgICAgfA0KfCAgIDI4MCAgICAgfCAgICAgICAgIDIgICAgICAgICAgIHwNCg0KYGBge3J9DQojYSkgIERlc2Fycm9sbGUgbGEgZWN1YWNpw7NuIGRlIGVzdGltYWNpw7NuIHF1ZSBtZWpvciBkZXNjcmliYSBlc3RvcyBkYXRvcw0KcmVudGEgPC0gYygyMzAsIDE5MCwgNDUwLDMxMCwyMTgsMTg1LDM0MCwyNDUsMTI1LDM1MCwyODApDQpyZWNhbWFyYXMgPC0gYygyLDEsMywyLDIsMiwyLDEsMSwyLDIpDQoNCnJlZ3Jlc2lvbjMgPC0gbG0gKHJlbnRhfnJlY2FtYXJhcykNCnN1bW1hcnkocmVncmVzaW9uMykNCg0KI2IpIENhbGN1bGUgZWwgZXJyb3IgZXN0w6FuZGFyIGRlIGxhIGVzdGltYWNpw7NuIHBhcmEgZXN0YSByZWxhY2nDs24uDQojIHIyID0gMC41NzYyDQoNCiNjKSAgUGFyYSB1biBtZXMgY29uIGdhc3RvcyBkZSAkMjgsMDAwIGVuIGVzcGVjdGFjdWxhcmVzLCBkZXNhcnJvbGxlIHVuIGludGVydmFsbyBkZSBjb25maWFuemEgZGVsIDk1JSBwYXJhIGxhcyB2ZW50YXMgbWVuc3VhbGVzIGVzcGVyYWRhcyBlc2UgbWVzLg0KcmVjYW1hcmFzMSA8LSAyDQpyZW50YTEgPC0gNTUrMTE1LjkwKnJlY2FtYXJhczENCnJlbnRhMQ0KIyAkMjg2LjgwDQpgYGANCg0K