PORCENTAJE

1-pnorm(30,25.5,4.5)
## [1] 0.1586553
#R= El 15.9% de autos recorre 30mpg o más (es la respuesta de abajo de la curva).
Si un fabricante desea desarrollar un auto que supere al 95% de los compactos actuales, ¿cuál debe ser el rendimeinto (mpg)?

X

qnorm(0.95,25.5,4.5)
## [1] 32.90184
#R=El nuevo auto compacto debe recorrer 32.9mpg para superar al 95% de los autos actuales. 

EJERCICIO 2 Suponga que los diámetros de tallos no soportados en la base, de una especie particular de girasol, tienen una distribución normal con un diámetro promedio de 35mm y una desviación estándar de 3mm.

a)-¿Cuál es la probabilidad de que una planta de girasol tenga un diámetro de base de más de 40mm?
1-pnorm(40,35,3)
## [1] 0.04779035
#MEDIDAS DE TENDENCIA CENTRAL
z41 <- (40-35)/3
z41
## [1] 1.666667
p41 <- 1-pnorm(40, 35,3)
p41
## [1] 0.04779035
z <- 40
promedio <- 35
desviacion_estandar <- 3

#función de densidad de probabilidad (normal)
x_densidad <- seq(promedio-3*desviacion_estandar, promedio+3*desviacion_estandar, length=1000)
y_densidad <- dnorm(x_densidad, promedio, desviacion_estandar)
plot(x_densidad, y_densidad, type="l", xlab="x", ylab="f(x)", main="FUNCIÓN DE DENSIDAD DE PROBABILIDAD (NORMAL)",col="pink")

#función de densidad de probabilidad (normal)
x_densidad <- seq()
#R= El 4.8% es la probabilidad de que una planta de girasol tenga un diámetro de base de más de 40mm

#función de distribución normal
x_distribucion<-seq(promedio-3*desviacion_estandar,promedio+3+desviacion_estandar,length=1000)
y_distribucion<-pnorm(x_distribucion,promedio,desviacion_estandar)
plot(x_distribucion,y_distribucion,type="l",lty=1,xlab="x",ylab="f(x)",main="FUNCIÓN DE DISTRIBUCIÓN DE PROBABILIDAD (NORMAL)",col="red")

b)-Si 2 plantas de girasol se seleccionan al azar, ¿cuál es la probabilidad de que ambas plantas tengan un diámetro de base de más de 40mm?

0.04779035*0.04779035
## [1] 0.002283918
#FORMA DE HACERLO CON EL PROFE
p42 <- p41*p41
0.048*0.048
## [1] 0.002304
#R= El 0.229% es la probabilidad de que dos plantas de girasol tengan un diámetro de base de más de 40mm

C)¿Dentro de qué límites esperaría usted que se encuentren los diámetros de base, con probabilidad de 0.95?

conf_interval <- c(35 - qnorm((1 - 0.95) / 2) * 3,
                   35 + qnorm((1 - 0.95) / 2) * 3)

print(conf_interval)
## [1] 40.87989 29.12011
#con el profe
conf_interval <- c(35-qnorm((1 - 0.95) / 2) * 3, 35 + qnorm((1 - 0.95) / 2) * 3)
print(conf_interval)
## [1] 40.87989 29.12011
p43_li <- qnorm(0.025, 35, 3)

#Para una probabilidad de 97.5%, de tablas obtenemos que z=1.96

p43_ls <- qnorm(0.0975,35,3)

#R= El 95% de los girasoles van desde 29.1 hasta 40.9

d)-¿Qué diámetro representa el 90% percentil de la distribución de diámetros?

qnorm(0.90,35,3)
## [1] 38.84465

###ACTIVIDAD 3.2 Un nuevo proceso para producir diamantes sintéticos es rentable sólo si el peso de estos es mayor a0.5 quilates, para evaluarlo se generaron 6 diamantes con los siguientes pesos: 0.46,0.61,,0.52,0.48,0.57,0.54

peso_diamantes <- c(.46,.61,.52,.48,.57,.54)
peso_diamantes
## [1] 0.46 0.61 0.52 0.48 0.57 0.54
promedio <- mean(peso_diamantes)
promedio
## [1] 0.53
desviacion_estandar_muestral<- sqrt(var(peso_diamantes))
desviacion_estandar_muestral
## [1] 0.05585696
n<-6
miu_o<-0.5

t<- (promedio-miu_o)/(desviacion_estandar_muestral/sqrt(n))
#View(t)

#R= No se rechaza H0 los datos no presentan suficiente evidencia para indicar que el peso medio de los diamantes exceda los 0.5 quilates.

#función de densidad de probabilidad (t student)
x_densidad<- seq(-4,4,length=100)
y_densidad<- dt(x_densidad,df=5)
plot(x_densidad,y_densidad,type="l",lty=1,xlab="t",ylab="f(t)",main="FUNCIÓN DE DENSIDAD DE PROBABILIDAD (T STUDENT)")

x_distribucion<- seq(-4,4,length=100)
y_distribucion<- pt(x_distribucion,df=5)
plot(x_distribucion,y_distribucion,type="l",lty=1,xlab="t",ylab="f(t)",main="FUNCIÓN DE DISTRIBUCIÓN  DE PROBABILIDAD (T STUDENT)")

###Actividad 3.6

oxigeno<- c(4.9,5.1,4.9,5.0,5.0,4.7)
oxigeno
## [1] 4.9 5.1 4.9 5.0 5.0 4.7
promedio_oxigeno<-mean(oxigeno)
promedio_oxigeno
## [1] 4.933333
desviacion_estandar_oxigeno<- sqrt(var(oxigeno))
desviacion_estandar_oxigeno
## [1] 0.136626
n_oxigeno<-6
miu_oxigeno<-5

t_oxigeno=(promedio_oxigeno-miu_oxigeno)/(desviacion_estandar_oxigeno/sqrt(n_oxigeno))
t_oxigeno
## [1] -1.195229
#R= No se rechaza H0 los datos no presentan suficiente evidencia para indicar que el peso medio de los diamantes exceda los 0.5 kilates.

#WINSORIZING VS TRIMING
peso_diamantes_con_error<- c(.46,.61,.52,.48,.57,54)
#el 54 le quitamos ek punto para dejarlo con "error" y que se vea la diferencia
boxplot(peso_diamantes_con_error,horizontal=TRUE)
#install.packages("DescTools")
library(DescTools)

peso_diamantes_winsorizado<-Winsorize(peso_diamantes_con_error,0.1)
peso_diamantes_winsorizado
## [1]  0.4600  0.6100  0.5200  0.4800  0.5700 40.6525
peso_diamantes_recortado<-Trim(peso_diamantes_con_error,1)
Shiny applications not supported in static R Markdown documents
LS0tDQp0aXRsZTogIkFDVElWSURBRCAzLjIgTFVJU0EgRkVSTkFOREEgQkVMVFLDgU4gUk9EUsONR1VFWiINCmF1dGhvcjogIkxVSVNBIEZFUk5BTkRBIEJFTFRSw4FOIFJPUsONR1VFWiBBMDE1NzA2OTAiDQpkYXRlOiAiMjAyMy0wOC0yNSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiAiY29zbW8iDQotLS0NCiFbXShDOlxcVXNlcnNcXENodXdpXFxEb2N1bWVudHNcXFIgTFVJU0FcXE1PRFVMTyAzXFxBQ1RJVklEQUQzXzNcXGZvdG8yMi5qcGcpDQoNCiAgUE9SQ0VOVEFKRSANCmBgYHtyfQ0KMS1wbm9ybSgzMCwyNS41LDQuNSkNCiNSPSBFbCAxNS45JSBkZSBhdXRvcyByZWNvcnJlIDMwbXBnIG8gbcOhcyAoZXMgbGEgcmVzcHVlc3RhIGRlIGFiYWpvIGRlIGxhIGN1cnZhKS4NCmBgYA0KICAgIFNpIHVuIGZhYnJpY2FudGUgZGVzZWEgZGVzYXJyb2xsYXIgdW4gYXV0byBxdWUgc3VwZXJlIGFsIDk1JSBkZSBsb3MgY29tcGFjdG9zIGFjdHVhbGVzLCDCv2N1w6FsIGRlYmUgc2VyIGVsIHJlbmRpbWVpbnRvIChtcGcpPw0KICAgWA0KYGBge3J9DQpxbm9ybSgwLjk1LDI1LjUsNC41KQ0KI1I9RWwgbnVldm8gYXV0byBjb21wYWN0byBkZWJlIHJlY29ycmVyIDMyLjltcGcgcGFyYSBzdXBlcmFyIGFsIDk1JSBkZSBsb3MgYXV0b3MgYWN0dWFsZXMuIA0KYGBgDQogIA0KICBFSkVSQ0lDSU8gMg0KICBTdXBvbmdhIHF1ZSBsb3MgZGnDoW1ldHJvcyBkZSB0YWxsb3Mgbm8gc29wb3J0YWRvcyBlbiBsYSBiYXNlLCBkZSB1bmEgZXNwZWNpZSBwYXJ0aWN1bGFyIGRlIGdpcmFzb2wsICB0aWVuZW4gdW5hIGRpc3RyaWJ1Y2nDs24gbm9ybWFsIGNvbiB1biBkacOhbWV0cm8gcHJvbWVkaW8gZGUgMzVtbSB5IHVuYSBkZXN2aWFjacOzbiBlc3TDoW5kYXIgZGUgM21tLg0KDQogICAgYSktwr9DdcOhbCBlcyBsYSBwcm9iYWJpbGlkYWQgZGUgcXVlIHVuYSBwbGFudGEgZGUgZ2lyYXNvbCB0ZW5nYSB1biBkacOhbWV0cm8gZGUgYmFzZSBkZSBtw6FzIGRlIDQwbW0/DQpgYGB7cn0NCjEtcG5vcm0oNDAsMzUsMykNCg0KI01FRElEQVMgREUgVEVOREVOQ0lBIENFTlRSQUwNCno0MSA8LSAoNDAtMzUpLzMNCno0MQ0KcDQxIDwtIDEtcG5vcm0oNDAsIDM1LDMpDQpwNDENCg0KeiA8LSA0MA0KcHJvbWVkaW8gPC0gMzUNCmRlc3ZpYWNpb25fZXN0YW5kYXIgPC0gMw0KDQojZnVuY2nDs24gZGUgZGVuc2lkYWQgZGUgcHJvYmFiaWxpZGFkIChub3JtYWwpDQp4X2RlbnNpZGFkIDwtIHNlcShwcm9tZWRpby0zKmRlc3ZpYWNpb25fZXN0YW5kYXIsIHByb21lZGlvKzMqZGVzdmlhY2lvbl9lc3RhbmRhciwgbGVuZ3RoPTEwMDApDQp5X2RlbnNpZGFkIDwtIGRub3JtKHhfZGVuc2lkYWQsIHByb21lZGlvLCBkZXN2aWFjaW9uX2VzdGFuZGFyKQ0KcGxvdCh4X2RlbnNpZGFkLCB5X2RlbnNpZGFkLCB0eXBlPSJsIiwgeGxhYj0ieCIsIHlsYWI9ImYoeCkiLCBtYWluPSJGVU5DScOTTiBERSBERU5TSURBRCBERSBQUk9CQUJJTElEQUQgKE5PUk1BTCkiLGNvbD0icGluayIpDQoNCiNmdW5jacOzbiBkZSBkZW5zaWRhZCBkZSBwcm9iYWJpbGlkYWQgKG5vcm1hbCkNCnhfZGVuc2lkYWQgPC0gc2VxKCkNCiNSPSBFbCA0LjglIGVzIGxhIHByb2JhYmlsaWRhZCBkZSBxdWUgdW5hIHBsYW50YSBkZSBnaXJhc29sIHRlbmdhIHVuIGRpw6FtZXRybyBkZSBiYXNlIGRlIG3DoXMgZGUgNDBtbQ0KDQojZnVuY2nDs24gZGUgZGlzdHJpYnVjacOzbiBub3JtYWwNCnhfZGlzdHJpYnVjaW9uPC1zZXEocHJvbWVkaW8tMypkZXN2aWFjaW9uX2VzdGFuZGFyLHByb21lZGlvKzMrZGVzdmlhY2lvbl9lc3RhbmRhcixsZW5ndGg9MTAwMCkNCnlfZGlzdHJpYnVjaW9uPC1wbm9ybSh4X2Rpc3RyaWJ1Y2lvbixwcm9tZWRpbyxkZXN2aWFjaW9uX2VzdGFuZGFyKQ0KcGxvdCh4X2Rpc3RyaWJ1Y2lvbix5X2Rpc3RyaWJ1Y2lvbix0eXBlPSJsIixsdHk9MSx4bGFiPSJ4Iix5bGFiPSJmKHgpIixtYWluPSJGVU5DScOTTiBERSBESVNUUklCVUNJw5NOIERFIFBST0JBQklMSURBRCAoTk9STUFMKSIsY29sPSJyZWQiKQ0KYGBgDQogIA0KICANCiAgYiktU2kgMiBwbGFudGFzIGRlIGdpcmFzb2wgc2Ugc2VsZWNjaW9uYW4gYWwgYXphciwgwr9jdcOhbCBlcyBsYSBwcm9iYWJpbGlkYWQgZGUgcXVlIGFtYmFzIHBsYW50YXMgdGVuZ2FuIHVuIGRpw6FtZXRybyBkZSBiYXNlIGRlIG3DoXMgZGUgNDBtbT8NCmBgYHtyfQ0KMC4wNDc3OTAzNSowLjA0Nzc5MDM1DQoNCiNGT1JNQSBERSBIQUNFUkxPIENPTiBFTCBQUk9GRQ0KcDQyIDwtIHA0MSpwNDENCjAuMDQ4KjAuMDQ4DQojUj0gRWwgMC4yMjklIGVzIGxhIHByb2JhYmlsaWRhZCBkZSBxdWUgZG9zIHBsYW50YXMgZGUgZ2lyYXNvbCB0ZW5nYW4gdW4gZGnDoW1ldHJvIGRlIGJhc2UgZGUgbcOhcyBkZSA0MG1tDQpgYGANCiAgQynCv0RlbnRybyBkZSBxdcOpIGzDrW1pdGVzIGVzcGVyYXLDrWEgdXN0ZWQgcXVlIHNlIGVuY3VlbnRyZW4gbG9zIGRpw6FtZXRyb3MgZGUgYmFzZSwgY29uIHByb2JhYmlsaWRhZCBkZSAwLjk1Pw0KYGBge3J9DQpjb25mX2ludGVydmFsIDwtIGMoMzUgLSBxbm9ybSgoMSAtIDAuOTUpIC8gMikgKiAzLA0KICAgICAgICAgICAgICAgICAgIDM1ICsgcW5vcm0oKDEgLSAwLjk1KSAvIDIpICogMykNCg0KcHJpbnQoY29uZl9pbnRlcnZhbCkNCg0KDQojY29uIGVsIHByb2ZlDQpjb25mX2ludGVydmFsIDwtIGMoMzUtcW5vcm0oKDEgLSAwLjk1KSAvIDIpICogMywgMzUgKyBxbm9ybSgoMSAtIDAuOTUpIC8gMikgKiAzKQ0KcHJpbnQoY29uZl9pbnRlcnZhbCkNCg0KcDQzX2xpIDwtIHFub3JtKDAuMDI1LCAzNSwgMykNCg0KI1BhcmEgdW5hIHByb2JhYmlsaWRhZCBkZSA5Ny41JSwgZGUgdGFibGFzIG9idGVuZW1vcyBxdWUgej0xLjk2DQoNCnA0M19scyA8LSBxbm9ybSgwLjA5NzUsMzUsMykNCg0KI1I9IEVsIDk1JSBkZSBsb3MgZ2lyYXNvbGVzIHZhbiBkZXNkZSAyOS4xIGhhc3RhIDQwLjkNCmBgYA0KICBkKS3Cv1F1w6kgZGnDoW1ldHJvIHJlcHJlc2VudGEgZWwgOTAlIHBlcmNlbnRpbCBkZSBsYSBkaXN0cmlidWNpw7NuIGRlIGRpw6FtZXRyb3M/DQpgYGB7cn0NCnFub3JtKDAuOTAsMzUsMykNCmBgYA0KICAjIyNBQ1RJVklEQUQgMy4yDQogIFVuIG51ZXZvIHByb2Nlc28gcGFyYSBwcm9kdWNpciBkaWFtYW50ZXMgc2ludMOpdGljb3MgZXMgcmVudGFibGUgc8OzbG8gc2kgZWwgcGVzbyBkZSBlc3RvcyBlcyBtYXlvciBhMC41IHF1aWxhdGVzLCBwYXJhIGV2YWx1YXJsbyBzZSBnZW5lcmFyb24gNiBkaWFtYW50ZXMgY29uIGxvcyBzaWd1aWVudGVzIHBlc29zOg0KICAwLjQ2LDAuNjEsLDAuNTIsMC40OCwwLjU3LDAuNTQNCmBgYHtyfQ0KcGVzb19kaWFtYW50ZXMgPC0gYyguNDYsLjYxLC41MiwuNDgsLjU3LC41NCkNCnBlc29fZGlhbWFudGVzDQoNCnByb21lZGlvIDwtIG1lYW4ocGVzb19kaWFtYW50ZXMpDQpwcm9tZWRpbw0KDQpkZXN2aWFjaW9uX2VzdGFuZGFyX211ZXN0cmFsPC0gc3FydCh2YXIocGVzb19kaWFtYW50ZXMpKQ0KZGVzdmlhY2lvbl9lc3RhbmRhcl9tdWVzdHJhbA0KDQpuPC02DQptaXVfbzwtMC41DQoNCnQ8LSAocHJvbWVkaW8tbWl1X28pLyhkZXN2aWFjaW9uX2VzdGFuZGFyX211ZXN0cmFsL3NxcnQobikpDQojVmlldyh0KQ0KDQojUj0gTm8gc2UgcmVjaGF6YSBIMCBsb3MgZGF0b3Mgbm8gcHJlc2VudGFuIHN1ZmljaWVudGUgZXZpZGVuY2lhIHBhcmEgaW5kaWNhciBxdWUgZWwgcGVzbyBtZWRpbyBkZSBsb3MgZGlhbWFudGVzIGV4Y2VkYSBsb3MgMC41IHF1aWxhdGVzLg0KDQojZnVuY2nDs24gZGUgZGVuc2lkYWQgZGUgcHJvYmFiaWxpZGFkICh0IHN0dWRlbnQpDQp4X2RlbnNpZGFkPC0gc2VxKC00LDQsbGVuZ3RoPTEwMCkNCnlfZGVuc2lkYWQ8LSBkdCh4X2RlbnNpZGFkLGRmPTUpDQpwbG90KHhfZGVuc2lkYWQseV9kZW5zaWRhZCx0eXBlPSJsIixsdHk9MSx4bGFiPSJ0Iix5bGFiPSJmKHQpIixtYWluPSJGVU5DScOTTiBERSBERU5TSURBRCBERSBQUk9CQUJJTElEQUQgKFQgU1RVREVOVCkiKQ0KDQp4X2Rpc3RyaWJ1Y2lvbjwtIHNlcSgtNCw0LGxlbmd0aD0xMDApDQp5X2Rpc3RyaWJ1Y2lvbjwtIHB0KHhfZGlzdHJpYnVjaW9uLGRmPTUpDQpwbG90KHhfZGlzdHJpYnVjaW9uLHlfZGlzdHJpYnVjaW9uLHR5cGU9ImwiLGx0eT0xLHhsYWI9InQiLHlsYWI9ImYodCkiLG1haW49IkZVTkNJw5NOIERFIERJU1RSSUJVQ0nDk04gIERFIFBST0JBQklMSURBRCAoVCBTVFVERU5UKSIpDQpgYGANCiAgICAjIyNBY3RpdmlkYWQgMy42DQpgYGB7cn0NCm94aWdlbm88LSBjKDQuOSw1LjEsNC45LDUuMCw1LjAsNC43KQ0Kb3hpZ2Vubw0KDQpwcm9tZWRpb19veGlnZW5vPC1tZWFuKG94aWdlbm8pDQpwcm9tZWRpb19veGlnZW5vDQoNCmRlc3ZpYWNpb25fZXN0YW5kYXJfb3hpZ2VubzwtIHNxcnQodmFyKG94aWdlbm8pKQ0KZGVzdmlhY2lvbl9lc3RhbmRhcl9veGlnZW5vDQoNCm5fb3hpZ2VubzwtNg0KbWl1X294aWdlbm88LTUNCg0KdF9veGlnZW5vPShwcm9tZWRpb19veGlnZW5vLW1pdV9veGlnZW5vKS8oZGVzdmlhY2lvbl9lc3RhbmRhcl9veGlnZW5vL3NxcnQobl9veGlnZW5vKSkNCnRfb3hpZ2Vubw0KDQojUj0gTm8gc2UgcmVjaGF6YSBIMCBsb3MgZGF0b3Mgbm8gcHJlc2VudGFuIHN1ZmljaWVudGUgZXZpZGVuY2lhIHBhcmEgaW5kaWNhciBxdWUgZWwgcGVzbyBtZWRpbyBkZSBsb3MgZGlhbWFudGVzIGV4Y2VkYSBsb3MgMC41IGtpbGF0ZXMuDQoNCiNXSU5TT1JJWklORyBWUyBUUklNSU5HDQpwZXNvX2RpYW1hbnRlc19jb25fZXJyb3I8LSBjKC40NiwuNjEsLjUyLC40OCwuNTcsNTQpDQojZWwgNTQgbGUgcXVpdGFtb3MgZWsgcHVudG8gcGFyYSBkZWphcmxvIGNvbiAiZXJyb3IiIHkgcXVlIHNlIHZlYSBsYSBkaWZlcmVuY2lhDQpib3hwbG90KHBlc29fZGlhbWFudGVzX2Nvbl9lcnJvcixob3Jpem9udGFsPVRSVUUpDQojaW5zdGFsbC5wYWNrYWdlcygiRGVzY1Rvb2xzIikNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KDQpwZXNvX2RpYW1hbnRlc193aW5zb3JpemFkbzwtV2luc29yaXplKHBlc29fZGlhbWFudGVzX2Nvbl9lcnJvciwwLjEpDQpwZXNvX2RpYW1hbnRlc193aW5zb3JpemFkbw0KDQpwZXNvX2RpYW1hbnRlc19yZWNvcnRhZG88LVRyaW0ocGVzb19kaWFtYW50ZXNfY29uX2Vycm9yLDEpDQpgYGANCg0KYGBge3IsIGVjaG89IEZBTFNFfQ0KbGlicmFyeShzaGlueSkNCmxpYnJhcnkoc2hpbnl0aGVtZXMpDQoNCiMgRGVmaW5lIFVJIGZvciBhcHBsaWNhdGlvbiB0aGF0IGRyYXdzIGEgaGlzdG9ncmFtDQp1aSA8LSBmbHVpZFBhZ2UodGhlbWU9c2hpbnl0aGVtZSgiY2VydWxlYW4iKSwNCiAgICAgICAgICAgICAgICBuYXZiYXJQYWdlKCJBcGxpY2FjaW9uZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiUGFuZWwoIkRpc3RyaWJ1Y2lvbmVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGViYXJQYW5lbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyRoMygiSW5ncmVzYSBsb3Mgc2lndWllbnRlcyBkYXRvczoiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY0lucHV0KCJ4IiwgIng6IiwgIjEiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY0lucHV0KCJwcm9tZWRpbyIsICJQcm9tZWRpbzoiLCAiMCIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljSW5wdXQoImRlc3ZpYWNpb25fZXN0YW5kYXIiLCAiRGVzdmlhY2nDs24gRXN0w6FuZGFyOiIsIjEiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5QYW5lbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdE91dHB1dCgiZGVuc2lkYWQiKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RPdXRwdXQoImRpc3RyaWJ1Y2lvbiIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICksDQogICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJQYW5lbCgiVGFiIDIiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlBhbmVsKCJUYWIgMyIpKQ0KKQ0KDQpzZXJ2ZXIgPC0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCkgew0KICBvdXRwdXQkZGVuc2lkYWQgPC0gcmVuZGVyUGxvdCh7DQogICAgI0Z1bmNpw7NuIGRlIGRlbnNpZGFkIGRlIHByb2JhYmlsaWRhZCAobm9ybWFsKQ0KICAgIHhfZGVuc2lkYWQgPC0gc2VxKGlucHV0JHByb21lZGlvLTMqaW5wdXQkZGVzdmlhY2lvbl9lc3RhbmRhciwgaW5wdXQkcHJvbWVkaW8rMyppbnB1dCRkZXN2aWFjaW9uX2VzdGFuZGFyLCBsZW5ndGg9MTAwMCkNCiAgICB5X2RlbnNpZGFkIDwtIGRub3JtKHhfZGVuc2lkYWQsIGlucHV0JHByb21lZGlvLCBpbnB1dCRkZXN2aWFjaW9uX2VzdGFuZGFyKQ0KICAgIHBsb3QoeF9kZW5zaWRhZCwgeV9kZW5zaWRhZCwgdHlwZT0ibCIsIGx0eT0xLCB4bGFiPSJ4IiwgeWxhYj0iZih4KSIsIG1haW49IkZ1bmNpw7NuIGRlIERlbnNpZGFkIGRlIFByb2JhYmlsaWRhZCAoTm9ybWFsKSIsIGNvbD0icmVkIikNCiAgfSkNCiAgb3V0cHV0JGRpc3RyaWJ1Y2lvbiA8LSByZW5kZXJQbG90KHsNCiAgICAjRnVuY2nDs24gZGUgRGlzdHJpYnVjacOzbiBkZSBQb2JhYmlsaWRhZCAoTm9ybWFsKQ0KICAgIHhfZGlzdHJpYnVjaW9uIDwtIHNlcShpbnB1dCRwcm9tZWRpby0zKmlucHV0JGRlc3ZpYWNpb25fZXN0YW5kYXIsIGlucHV0JHByb21lZGlvKzMqaW5wdXQkZGVzdmlhY2lvbl9lc3RhbmRhciwgbGVuZ3RoPTEwMDApDQogICAgeV9kaXN0cmlidWNpb24gPC0gcG5vcm0oeF9kaXN0cmlidWNpb24sIGlucHV0JHByb21lZGlvLCBpbnB1dCRkZXN2aWFjaW9uX2VzdGFuZGFyKQ0KICAgIHBsb3QoeF9kaXN0cmlidWNpb24sIHlfZGlzdHJpYnVjaW9uLCB0eXBlPSJsIiwgbHR5PTEsIHhsYWI9IngiLCB5bGFiPSJmKHgpIiwgbWFpbj0iRnVuY2nDs24gZGUgRGlzdHJpYnVjacOzbiBkZSBQb2JhYmlsaWRhZCAoTm9ybWFsKSIsIGNvbD0iYmx1ZSIpDQogIH0pDQp9DQpzaGlueUFwcCh1aSA9IHVpLCBzZXJ2ZXIgPSBzZXJ2ZXIpDQpgYGANCg0K