Esta foto es obtenida del negocio de renta de bicis en Parque Fundidora, Monterrey. Por lo que se puede observar de primera mano como un negocio real puede usar lo visto a continuación

Paso 1. Importar archivo de renta de bicis en .csv

#file.choose()

base_de_datos <- read.csv("/Users/elenavela/Downloads/rentadebicis 3.csv")

Paso 2. Entender la base de datos

Mediante el resumen podemos observar las variables que se tienen, así como ver la cantidad de registros y cambiar errores (en caso de detectar).

resumen <- summary(base_de_datos)
resumen
##       hora            dia              mes              año      
##  Min.   : 0.00   Min.   : 1.000   Min.   : 1.000   Min.   :2011  
##  1st Qu.: 6.00   1st Qu.: 5.000   1st Qu.: 4.000   1st Qu.:2011  
##  Median :12.00   Median :10.000   Median : 7.000   Median :2012  
##  Mean   :11.54   Mean   : 9.993   Mean   : 6.521   Mean   :2012  
##  3rd Qu.:18.00   3rd Qu.:15.000   3rd Qu.:10.000   3rd Qu.:2012  
##  Max.   :23.00   Max.   :19.000   Max.   :12.000   Max.   :2012  
##     estacion     dia_de_la_semana     asueto         temperatura   
##  Min.   :1.000   Min.   :1.000    Min.   :0.00000   Min.   : 0.82  
##  1st Qu.:2.000   1st Qu.:2.000    1st Qu.:0.00000   1st Qu.:13.94  
##  Median :3.000   Median :4.000    Median :0.00000   Median :20.50  
##  Mean   :2.507   Mean   :4.014    Mean   :0.02857   Mean   :20.23  
##  3rd Qu.:4.000   3rd Qu.:6.000    3rd Qu.:0.00000   3rd Qu.:26.24  
##  Max.   :4.000   Max.   :7.000    Max.   :1.00000   Max.   :41.00  
##  sensacion_termica    humedad       velocidad_del_viento
##  Min.   : 0.76     Min.   :  0.00   Min.   : 0.000      
##  1st Qu.:16.66     1st Qu.: 47.00   1st Qu.: 7.002      
##  Median :24.24     Median : 62.00   Median :12.998      
##  Mean   :23.66     Mean   : 61.89   Mean   :12.799      
##  3rd Qu.:31.06     3rd Qu.: 77.00   3rd Qu.:16.998      
##  Max.   :45.45     Max.   :100.00   Max.   :56.997      
##  rentas_de_no_registrados rentas_de_registrados rentas_totales 
##  Min.   :  0.00           Min.   :  0.0         Min.   :  1.0  
##  1st Qu.:  4.00           1st Qu.: 36.0         1st Qu.: 42.0  
##  Median : 17.00           Median :118.0         Median :145.0  
##  Mean   : 36.02           Mean   :155.6         Mean   :191.6  
##  3rd Qu.: 49.00           3rd Qu.:222.0         3rd Qu.:284.0  
##  Max.   :367.00           Max.   :886.0         Max.   :977.0
plot(base_de_datos$temperatura,base_de_datos$rentas_totales,main="Influencia de la Temperatura sobre las Rentas", xlab="Temperatura (°C)",ylab="Cantidad de Rentas")

Herramienta: “El generador de valor de datos”

Paso 1. Definir el área del negocio que buscamos impactar o mejorar y su KPI.
Se busca impactar en el número de rentas, y mediante estas mismas se podrá ver si el plan de acción ha sido exitoso o no (KPI).
Paso 2. Seleccionar la plantilla (-s) para crear valor a partir de los datos de los clientes.
El negocio tendrá en cuenta el indicador de rentas. El departamento de mercadotecnia tomará en cuenta las variables que más impactan para generar estrategias que impacten positivamente a las ventas.
Vision | Segmentacion | Personalización | Contextualizacion
Paso 3. Generar ideas o conceptos específicos.
Elaborar un modelo predictivo de las rentas de bicicletas.
Paso 4. Reunir los datos requeridos.
Se tiene la base de datos de las variables que impactan a las rentas de bicicletas, mediante un modelo de regresión see observarán que variables impactan más a las rentas.
Paso 5. Plan de ejecucion.
Mercadotecnia elaborará un plan, aprovechando las vaiables, para desplegar el modelo predictivo. Modelo piloto se aplicará cuando se tengan una mayor cantidad de variables pertinentes en el ambiente.

Paso 3. Generar regresión lineal

En estadística, la regresión lineal o ajuste lineal es un modelo matemático usado para aproximar la relación de dependencia entre una variable dependiente Y (renta), y variables independientes X.

regresion <- lm(rentas_totales ~ hora + dia + mes + año + estacion + dia_de_la_semana + asueto + temperatura + sensacion_termica + humedad + velocidad_del_viento, data=base_de_datos)
summary(regresion)
## 
## Call:
## lm(formula = rentas_totales ~ hora + dia + mes + año + estacion + 
##     dia_de_la_semana + asueto + temperatura + sensacion_termica + 
##     humedad + velocidad_del_viento, data = base_de_datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -305.52  -93.64  -27.70   61.85  649.10 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -1.661e+05  5.496e+03 -30.217  < 2e-16 ***
## hora                  7.735e+00  2.070e-01  37.368  < 2e-16 ***
## dia                   3.844e-01  2.482e-01   1.549  0.12150    
## mes                   9.996e+00  1.682e+00   5.943 2.89e-09 ***
## año                   8.258e+01  2.732e+00  30.225  < 2e-16 ***
## estacion             -7.774e+00  5.177e+00  -1.502  0.13324    
## dia_de_la_semana      4.393e-01  6.918e-01   0.635  0.52545    
## asueto               -4.864e+00  8.365e+00  -0.582  0.56089    
## temperatura           1.582e+00  1.038e+00   1.524  0.12752    
## sensacion_termica     4.748e+00  9.552e-01   4.971 6.76e-07 ***
## humedad              -2.115e+00  7.884e-02 -26.827  < 2e-16 ***
## velocidad_del_viento  5.582e-01  1.809e-01   3.086  0.00203 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 141.7 on 10874 degrees of freedom
## Multiple R-squared:  0.3891, Adjusted R-squared:  0.3885 
## F-statistic: 629.6 on 11 and 10874 DF,  p-value: < 2.2e-16

Paso 4. Evaluar, y en caso necesario, ajustar la regresion lineal

regresion <- lm(rentas_totales ~ hora + mes + año + sensacion_termica + humedad + velocidad_del_viento, data=base_de_datos)
regresion
## 
## Call:
## lm(formula = rentas_totales ~ hora + mes + año + sensacion_termica + 
##     humedad + velocidad_del_viento, data = base_de_datos)
## 
## Coefficients:
##          (Intercept)                  hora                   mes  
##           -1.662e+05             7.734e+00             7.574e+00  
##                  año     sensacion_termica               humedad  
##            8.266e+01             6.172e+00            -2.121e+00  
## velocidad_del_viento  
##            6.208e-01
summary(regresion)
## 
## Call:
## lm(formula = rentas_totales ~ hora + mes + año + sensacion_termica + 
##     humedad + velocidad_del_viento, data = base_de_datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -308.60  -93.85  -28.34   61.05  648.09 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -1.662e+05  5.496e+03 -30.250  < 2e-16 ***
## hora                  7.734e+00  2.070e-01  37.364  < 2e-16 ***
## mes                   7.574e+00  4.207e-01  18.002  < 2e-16 ***
## año                   8.266e+01  2.732e+00  30.258  < 2e-16 ***
## sensacion_termica     6.172e+00  1.689e-01  36.539  < 2e-16 ***
## humedad              -2.121e+00  7.858e-02 -26.988  < 2e-16 ***
## velocidad_del_viento  6.208e-01  1.771e-01   3.506 0.000457 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 141.7 on 10879 degrees of freedom
## Multiple R-squared:  0.3886, Adjusted R-squared:  0.3883 
## F-statistic:  1153 on 6 and 10879 DF,  p-value: < 2.2e-16

Paso 5. Construir un modelo de prediccion

Tomando en cuenta los resultados del modelo de regresión, obtenemos las variables que más impactan a las rentas totales, pudiendo realizar una predicción de las rentas.

datos_nuevos <- data.frame(hora=12, mes=1:12, año=2013, sensacion_termica=24, humedad=62, velocidad_del_viento=13)
predict(regresion,datos_nuevos)
##        1        2        3        4        5        6        7        8 
## 279.1478 286.7215 294.2952 301.8690 309.4427 317.0164 324.5901 332.1638 
##        9       10       11       12 
## 339.7375 347.3112 354.8849 362.4587

Conclusiones

La regresión lineal permite predecir el comportamiento de una variable a partir de otra. Esta herramienta puede ser de gran utilidad para negocios, debido a que permite conocer una predicción de ventas, rentas, ingresos, o cualquier variable que sea de interés para el usuario.

Considero que mediante este ejemplo se pueden llegar a ver las posibilidades que tiene la regresión lineal, como en este caso vimos una predicción de las rentas de los próximos 12 meses de este negocio.

Al haber visto clases de estadística anteriormente, puedo entender la gran utilidad y lo frecuente que es el uso de la regresión lineal; sin embargo, esta resulta la primera vez que lo hago de manera tan eficaz, como es aquí en R.

Tomando en cuenta lo que obtenemos de la regresión lineal, obtenemos que en los proximos 12 meses, las rentas totales habrán crecido. Todo esto viendo que la hora sean las 12:00, en el año 2013, con una sensación térmica de 24, humedad de 62 y una velocidad del viento de 13. Al cumplirse, o parecerse lo más posible, estos datos, puede resultarr favorable para el negocio de la renta de bicicletas.

Esto mismo puede ser tomado en cuenta por el equipo de mercadotecnia, como fue indicado en la herramienta, ya que ellos tendrán la tarea de generar estrategias e ideas que potencialicen las rentas, principalmente tomando en cuenta los indicadores otorgados por la regresión lineal.

LS0tCnRpdGxlOiA8c3BhbiBzdHlsZT0iY29sb3I6cGluayI+KipNb2RlbG8gUHJlZGljdGl2bzoqKiAqUmVudGEgZGUgQmljaXMqCmF1dGhvcjogIkVsZW5hVmVsYV9BMDEyODM1MzUiCmRhdGU6ICIyMDIyLTA5LTA1IgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdGhlbWU6IHVuaXRlZAogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgY29kZV9kb3dubG9hZDogdHJ1ZQotLS0KCjxpbWcgc3JjPSIvVXNlcnMvZWxlbmF2ZWxhL0Rvd25sb2Fkcy9iaWNpLmpwZWciPiAgCipFc3RhIGZvdG8gZXMgb2J0ZW5pZGEgZGVsIG5lZ29jaW8gZGUgcmVudGEgZGUgYmljaXMgZW4gUGFycXVlIEZ1bmRpZG9yYSwgTW9udGVycmV5LiBQb3IgbG8gcXVlIHNlIHB1ZWRlIG9ic2VydmFyIGRlIHByaW1lcmEgbWFubyBjb21vIHVuIG5lZ29jaW8gcmVhbCBwdWVkZSB1c2FyIGxvIHZpc3RvIGEgY29udGludWFjacOzbiogCgoKIyMjIFBhc28gMS4gSW1wb3J0YXIgYXJjaGl2byBkZSByZW50YSBkZSBiaWNpcyBlbiAuY3N2CgpgYGB7cn0KI2ZpbGUuY2hvb3NlKCkKCmJhc2VfZGVfZGF0b3MgPC0gcmVhZC5jc3YoIi9Vc2Vycy9lbGVuYXZlbGEvRG93bmxvYWRzL3JlbnRhZGViaWNpcyAzLmNzdiIpCmBgYAoKCiMjIyBQYXNvIDIuIEVudGVuZGVyIGxhIGJhc2UgZGUgZGF0b3MKTWVkaWFudGUgZWwgcmVzdW1lbiBwb2RlbW9zIG9ic2VydmFyIGxhcyB2YXJpYWJsZXMgcXVlIHNlIHRpZW5lbiwgYXPDrSBjb21vIHZlciBsYSBjYW50aWRhZCBkZSByZWdpc3Ryb3MgeSBjYW1iaWFyIGVycm9yZXMgKGVuIGNhc28gZGUgZGV0ZWN0YXIpLgpgYGB7cn0KcmVzdW1lbiA8LSBzdW1tYXJ5KGJhc2VfZGVfZGF0b3MpCnJlc3VtZW4KCnBsb3QoYmFzZV9kZV9kYXRvcyR0ZW1wZXJhdHVyYSxiYXNlX2RlX2RhdG9zJHJlbnRhc190b3RhbGVzLG1haW49IkluZmx1ZW5jaWEgZGUgbGEgVGVtcGVyYXR1cmEgc29icmUgbGFzIFJlbnRhcyIsIHhsYWI9IlRlbXBlcmF0dXJhICjCsEMpIix5bGFiPSJDYW50aWRhZCBkZSBSZW50YXMiKQoKYGBgCgojIyMjIEhlcnJhbWllbnRhOiAiRWwgZ2VuZXJhZG9yIGRlIHZhbG9yIGRlIGRhdG9zIgoqKipQYXNvIDEuKiBEZWZpbmlyIGVsIMOhcmVhIGRlbCBuZWdvY2lvIHF1ZSBidXNjYW1vcyBpbXBhY3RhciBvIG1lam9yYXIgeSBzdSBLUEkuKiogICAKU2UgYnVzY2EgaW1wYWN0YXIgZW4gZWwgbsO6bWVybyBkZSByZW50YXMsIHkgbWVkaWFudGUgZXN0YXMgbWlzbWFzIHNlIHBvZHLDoSB2ZXIgc2kgZWwgcGxhbiBkZSBhY2Npw7NuIGhhIHNpZG8gZXhpdG9zbyBvIG5vIChLUEkpLiAgCioqKlBhc28gMi4qIFNlbGVjY2lvbmFyIGxhIHBsYW50aWxsYSAoLXMpIHBhcmEgY3JlYXIgdmFsb3IgYSBwYXJ0aXIgZGUgbG9zIGRhdG9zIGRlIGxvcyBjbGllbnRlcy4qKiAgCkVsIG5lZ29jaW8gdGVuZHLDoSBlbiBjdWVudGEgZWwgaW5kaWNhZG9yIGRlIHJlbnRhcy4gRWwgZGVwYXJ0YW1lbnRvIGRlIG1lcmNhZG90ZWNuaWEgdG9tYXLDoSBlbiBjdWVudGEgbGFzIHZhcmlhYmxlcyBxdWUgbcOhcyBpbXBhY3RhbiBwYXJhIGdlbmVyYXIgZXN0cmF0ZWdpYXMgcXVlIGltcGFjdGVuIHBvc2l0aXZhbWVudGUgYSBsYXMgdmVudGFzLiAgCioqKlZpc2lvbioqKiAgfCBTZWdtZW50YWNpb24gfCBQZXJzb25hbGl6YWNpw7NuIHwgQ29udGV4dHVhbGl6YWNpb24gIAoqKipQYXNvIDMuKiBHZW5lcmFyIGlkZWFzIG8gY29uY2VwdG9zIGVzcGVjw61maWNvcy4qKiAgCkVsYWJvcmFyIHVuIG1vZGVsbyBwcmVkaWN0aXZvIGRlIGxhcyByZW50YXMgZGUgYmljaWNsZXRhcy4gICAKKioqUGFzbyA0LiogUmV1bmlyIGxvcyBkYXRvcyByZXF1ZXJpZG9zLioqICAgClNlIHRpZW5lIGxhIGJhc2UgZGUgZGF0b3MgZGUgbGFzIHZhcmlhYmxlcyBxdWUgaW1wYWN0YW4gYSBsYXMgcmVudGFzIGRlIGJpY2ljbGV0YXMsIG1lZGlhbnRlIHVuIG1vZGVsbyBkZSByZWdyZXNpw7NuIHNlZSBvYnNlcnZhcsOhbiBxdWUgdmFyaWFibGVzIGltcGFjdGFuIG3DoXMgYSBsYXMgcmVudGFzLiAgIAoqKipQYXNvIDUuKiBQbGFuIGRlIGVqZWN1Y2lvbi4qKiAgCk1lcmNhZG90ZWNuaWEgZWxhYm9yYXLDoSB1biBwbGFuLCBhcHJvdmVjaGFuZG8gbGFzIHZhaWFibGVzLCBwYXJhIGRlc3BsZWdhciBlbCBtb2RlbG8gcHJlZGljdGl2by4gTW9kZWxvIHBpbG90byBzZSBhcGxpY2Fyw6EgY3VhbmRvIHNlIHRlbmdhbiB1bmEgbWF5b3IgY2FudGlkYWQgZGUgdmFyaWFibGVzIHBlcnRpbmVudGVzIGVuIGVsIGFtYmllbnRlLiAKCiMjIyBQYXNvIDMuIEdlbmVyYXIgcmVncmVzacOzbiBsaW5lYWwgIAoKRW4gZXN0YWTDrXN0aWNhLCBsYSByZWdyZXNpw7NuIGxpbmVhbCBvIGFqdXN0ZSBsaW5lYWwgZXMgdW4gbW9kZWxvIG1hdGVtw6F0aWNvIHVzYWRvIHBhcmEgYXByb3hpbWFyIGxhIHJlbGFjacOzbiBkZSBkZXBlbmRlbmNpYSBlbnRyZSB1bmEgdmFyaWFibGUgZGVwZW5kaWVudGUgWSAocmVudGEpLCB5IHZhcmlhYmxlcyBpbmRlcGVuZGllbnRlcyBYLgoKYGBge3J9CnJlZ3Jlc2lvbiA8LSBsbShyZW50YXNfdG90YWxlcyB+IGhvcmEgKyBkaWEgKyBtZXMgKyBhw7FvICsgZXN0YWNpb24gKyBkaWFfZGVfbGFfc2VtYW5hICsgYXN1ZXRvICsgdGVtcGVyYXR1cmEgKyBzZW5zYWNpb25fdGVybWljYSArIGh1bWVkYWQgKyB2ZWxvY2lkYWRfZGVsX3ZpZW50bywgZGF0YT1iYXNlX2RlX2RhdG9zKQpzdW1tYXJ5KHJlZ3Jlc2lvbikKYGBgCgoKIyMjIFBhc28gNC4gRXZhbHVhciwgeSBlbiBjYXNvIG5lY2VzYXJpbywgYWp1c3RhciBsYSByZWdyZXNpb24gbGluZWFsCgpgYGB7cn0KcmVncmVzaW9uIDwtIGxtKHJlbnRhc190b3RhbGVzIH4gaG9yYSArIG1lcyArIGHDsW8gKyBzZW5zYWNpb25fdGVybWljYSArIGh1bWVkYWQgKyB2ZWxvY2lkYWRfZGVsX3ZpZW50bywgZGF0YT1iYXNlX2RlX2RhdG9zKQpyZWdyZXNpb24KCnN1bW1hcnkocmVncmVzaW9uKQpgYGAKCiMjIyBQYXNvIDUuIENvbnN0cnVpciB1biBtb2RlbG8gZGUgcHJlZGljY2lvbgoKVG9tYW5kbyBlbiBjdWVudGEgbG9zIHJlc3VsdGFkb3MgZGVsIG1vZGVsbyBkZSByZWdyZXNpw7NuLCBvYnRlbmVtb3MgbGFzIHZhcmlhYmxlcyBxdWUgbcOhcyBpbXBhY3RhbiBhIGxhcyByZW50YXMgdG90YWxlcywgcHVkaWVuZG8gcmVhbGl6YXIgdW5hIHByZWRpY2Npw7NuIGRlIGxhcyByZW50YXMuIAoKYGBge3J9CmRhdG9zX251ZXZvcyA8LSBkYXRhLmZyYW1lKGhvcmE9MTIsIG1lcz0xOjEyLCBhw7FvPTIwMTMsIHNlbnNhY2lvbl90ZXJtaWNhPTI0LCBodW1lZGFkPTYyLCB2ZWxvY2lkYWRfZGVsX3ZpZW50bz0xMykKcHJlZGljdChyZWdyZXNpb24sZGF0b3NfbnVldm9zKQpgYGAKCgojIyMgQ29uY2x1c2lvbmVzCkxhICoqcmVncmVzacOzbiBsaW5lYWwqKiBwZXJtaXRlIHByZWRlY2lyIGVsIGNvbXBvcnRhbWllbnRvIGRlIHVuYSB2YXJpYWJsZSBhIHBhcnRpciBkZSBvdHJhLiBFc3RhIGhlcnJhbWllbnRhIHB1ZWRlIHNlciBkZSBncmFuIHV0aWxpZGFkIHBhcmEgbmVnb2Npb3MsIGRlYmlkbyBhIHF1ZSBwZXJtaXRlIGNvbm9jZXIgdW5hIHByZWRpY2Npw7NuIGRlIHZlbnRhcywgcmVudGFzLCBpbmdyZXNvcywgbyBjdWFscXVpZXIgdmFyaWFibGUgcXVlIHNlYSBkZSBpbnRlcsOpcyBwYXJhIGVsIHVzdWFyaW8uICAKCkNvbnNpZGVybyBxdWUgbWVkaWFudGUgZXN0ZSBlamVtcGxvIHNlIHB1ZWRlbiBsbGVnYXIgYSB2ZXIgbGFzIHBvc2liaWxpZGFkZXMgcXVlIHRpZW5lIGxhICoqcmVncmVzacOzbiBsaW5lYWwqKiwgY29tbyBlbiBlc3RlIGNhc28gdmltb3MgdW5hIHByZWRpY2Npw7NuIGRlIGxhcyByZW50YXMgZGUgbG9zIHByw7N4aW1vcyAxMiBtZXNlcyBkZSBlc3RlIG5lZ29jaW8uICAKCkFsIGhhYmVyIHZpc3RvIGNsYXNlcyBkZSBlc3RhZMOtc3RpY2EgYW50ZXJpb3JtZW50ZSwgcHVlZG8gZW50ZW5kZXIgbGEgZ3JhbiB1dGlsaWRhZCB5IGxvIGZyZWN1ZW50ZSBxdWUgZXMgZWwgdXNvIGRlIGxhICoqcmVncmVzacOzbiBsaW5lYWwqKjsgc2luIGVtYmFyZ28sIGVzdGEgcmVzdWx0YSBsYSBwcmltZXJhIHZleiBxdWUgbG8gaGFnbyBkZSBtYW5lcmEgdGFuIGVmaWNheiwgY29tbyBlcyBhcXXDrSBlbiBSLiAKClRvbWFuZG8gZW4gY3VlbnRhIGxvIHF1ZSBvYnRlbmVtb3MgZGUgbGEgKipyZWdyZXNpw7NuIGxpbmVhbCoqLCBvYnRlbmVtb3MgcXVlIGVuIGxvcyBwcm94aW1vcyAxMiBtZXNlcywgbGFzIHJlbnRhcyB0b3RhbGVzIGhhYnLDoW4gY3JlY2lkby4gVG9kbyBlc3RvIHZpZW5kbyBxdWUgbGEgaG9yYSBzZWFuIGxhcyAqMTI6MDAqLCBlbiBlbCBhw7FvIDIwMTMsIGNvbiB1bmEgc2Vuc2FjacOzbiB0w6lybWljYSBkZSAyNCwgaHVtZWRhZCBkZSA2MiB5IHVuYSB2ZWxvY2lkYWQgZGVsIHZpZW50byBkZSAxMy4gQWwgY3VtcGxpcnNlLCBvIHBhcmVjZXJzZSBsbyBtw6FzIHBvc2libGUsIGVzdG9zIGRhdG9zLCBwdWVkZSByZXN1bHRhcnIgZmF2b3JhYmxlIHBhcmEgZWwgbmVnb2NpbyBkZSBsYSByZW50YSBkZSBiaWNpY2xldGFzLiAgIAoKRXN0byBtaXNtbyBwdWVkZSBzZXIgdG9tYWRvIGVuIGN1ZW50YSBwb3IgZWwgZXF1aXBvIGRlIG1lcmNhZG90ZWNuaWEsIGNvbW8gZnVlIGluZGljYWRvIGVuIGxhIGhlcnJhbWllbnRhLCB5YSBxdWUgZWxsb3MgdGVuZHLDoW4gbGEgdGFyZWEgZGUgZ2VuZXJhciBlc3RyYXRlZ2lhcyBlIGlkZWFzIHF1ZSBwb3RlbmNpYWxpY2VuIGxhcyByZW50YXMsIHByaW5jaXBhbG1lbnRlIHRvbWFuZG8gZW4gY3VlbnRhIGxvcyBpbmRpY2Fkb3JlcyBvdG9yZ2Fkb3MgcG9yIGxhIHJlZ3Jlc2nDs24gbGluZWFsLiAKCg==