Trabajo elaborado para la asignatura “Programación y manejo de datos en la era del Big Data” de la Universitat de València durante el curso 2020-2021. El repo del trabajo está aquí. La página web de la asignatura y los trabajos de mis compañeros pueden verse aquí.


1. Introducción

El objetivo de este trabajo es reflejar la violencia que sufren las mujeres en España a partir de los datos disponibles en la Delegación del gobierno contra la Violencia de Género. La violencia de género ha sido el tema elegido para hacer este informe ya que, por desgracia, este tipo de violencia está presente en el conjunto del país y refleja una injustícia social, limitando los derechos y las libertades de las mujeres. De manera que, la misión mediante este estudio es hacer visible, concienciar y sensibilizar esta problemática que abunda en esta sociedad patriarcal.

En primer lugar, se analiza la evolución del número de llamadas pertinentes al 016. Este número de teléfono está vinculado a un servicio telefónico de atención a personas que están sufriendo posible violencia de género. Con este servicio, se ofrece información y asesoramiento frente a la situación en la que se encuentra la llamante.

Seguidamente, se plasmaran el número de denuncias realizadas por este tipo de violencia contra la mujer. En este apartado, se examina tanto la evolución, como el origen de estas.

A continuació, se incide con el número de víctimas mortales.En este punto se consideran las mujeres asesinadas en manos de sus parejas,exparejas, o que estan en fase de separación. Además, también se distingue la edad del agresor en cuestión y, finalmente, se distingue por provincias y comunidades autónomas donde se concentran más caso de asesinato de mujeres.

Por último, se hace hincapié en la incidencia de la Crisis del Covid-19 en este problema social. Aquí se presta atención a los efectos derivados de la declaración del Estado de Alarma y del confinamiento domiciliario establecidos por el Gobierno de España.

En las conclusiones se inferirá en las cuestiones abordadas a lo largo del trabajo destacando las actuaciones y compromisos para combatir esta problemática, de manera que se consiga un igualdad efectiva entre mujeres y hombres.

2. Datos

Los datos para realizar el informe se han sacado de la Delegación del Gobierno contra la Violencia de Género. Esta página web dispone de un portal estadístico donde se encuentran diversas variables de estudios y sus respectivas clasificaciones.

Por lo que, los datos se han descargado en formato Excel, de manera que se ha precisado del paquete readxl. Seguidamente se han creado las rutas para dotar de data frames, con la funció read_excel.

En cuanto a los datos, bajo mi punto de vista, considero que no reflejan la realidad exacta, ya que inciden muchos factores dentro de este tipo de violencia hacia las mujeres, que no estan recogidos en ninguna estadística y por tanto, no se tiene constancia de ello. Con esto me refiero a las agresiones y maltratos psicológicos, los micromachismos o la subordinació de la mujer en el ámbito doméstico, entre otras.

2.1. Procesando los datos

Una vez creados los data frames, se procede a modificar estos para que la manipulación de datos y elaboración para realizar diversos gráficos, tablas y mapas sea más sencilla y adecuada a lo que se pretende mostrar. En este caso, es necesario el paquete tidyverse para utilizar el operador pipe y a su vez, facilitar la lectura e interpretación del código. Además de poder transformar los dataframes considerados en este trabajo. La modificación de los data frames se ha basado, en primer lugar, por simplificar el nombre de las columnas, de manera que permite un mejor manejo. Para esto, se ha utilizado la función rename. Otro procesamiento que se ha tenido que hacer en la mayoria de data frames es convertir las variables que indican el período, ya que estas, en los datos primarios disponibles estaban en formato texto. Por lo que, para convertir a formato numérico se ha recurrido a la función mutate. Para finalizar, se borran los data frames los cuales se puede prescindir de ellos, y se mantiene en el que se va a trabajar. Además, se requieren otros paquetes como el plotly o hrbrthemes para suplementar los gráficos. Así como, para producir este informe se necesita el paquete knitr.

Data Frames

df_llamadas<-read_excel("./datos/llamadas016.xlsx")
df_denuncias<-read_excel("./datos/denuncias.xlsx")
df_victimas<-read_excel("./datos/victimas.xlsx")
df_tramoedad<- read_excel("./datos/victimas1.xlsx")
df_mapa<- read_excel("./datos/provinciasCCAA.xlsx")
load("./datos/geometrias.RData")
CCAA <- rio::import("https://github.com/perezp44/LAU2boundaries4spain/blob/master/data/CCAA.rda?raw=true")
objetos_no_borrar<-c("df_llamadas", "df_denuncias", "df_victimas", "df_tramoedad", "df_mapa", "CCAA", "Provincias")
rm(list = ls()[!ls() %in% objetos_no_borrar])

Modificación de Data Frames

#Dataframe de llamadas al 016
df<-df_llamadas%>% rename(llamadas= `Número de llamadas pertinentes`)
df_wide<- df%>%pivot_wider(names_from = Año, values_from= llamadas)
df_wide<- df_wide%>% rename("2007"= `Año 2007`,"2008"= `Año 2008`,"2009"= `Año 2009`, "2010" = `Año 2010`, "2011" = `Año 2011`, "2012"= `Año 2012`, "2013"= `Año 2013`, "2014"= `Año 2014`, "2015"= `Año 2015`, "2016"= `Año 2016`, "2017"= `Año 2017`, "2018"= `Año 2018`, "2019"= `Año 2019`, "2020"= `Año 2020`)
df<-df_wide%>%pivot_longer(cols = 1:14, names_to = "Año") 
df_llamadas<- df%>%rename(Numero_llamadas = value)%>%mutate(Año.num = as.numeric(as.character(Año)))

#Dataframe de denuncias por v.g
df<-df_denuncias%>% rename(Numero_denuncias= `Número de denuncias por violencia de género`, Origen_denuncia = `Origen de la denuncia`)
df_wide<- df%>%pivot_wider(names_from = Año, values_from= Numero_denuncias)
df_wide<- df_wide%>% rename("2009"= `Año 2009`, "2010" = `Año 2010`, "2011" = `Año 2011`, "2012"= `Año 2012`, "2013"= `Año 2013`, "2014"= `Año 2014`, "2015"= `Año 2015`, "2016"= `Año 2016`, "2017"= `Año 2017`, "2018"= `Año 2018`, "2019"= `Año 2019`, "2020"= `Año 2020`)
df<-df_wide%>%pivot_longer(cols = 2:13, names_to = "Año") 
df_denuncias<- df%>%rename(Numero_denuncias = value)%>%mutate(Año.num = as.numeric(as.character(Año)))
df_denuncias<-df_denuncias%>% select(Origen_denuncia, Año.num, Numero_denuncias)

#evolución por años de las denuncias
df_denuncias0<- df_denuncias%>%select(Año.num, Numero_denuncias)
df_denuncias0<- df_denuncias0%>%group_by(Año.num)%>%mutate(denuncias_acumuladas_por_año = sum(Numero_denuncias))
#Origen de denuncias
df_denuncias1<- df_denuncias%>% select(Origen_denuncia, Numero_denuncias)
df_denuncias1<- df_denuncias%>%transform(df_denuncias, Origen_denuncia = reorder(Origen_denuncia, -Numero_denuncias))
#Victimas mortales
df<-df_victimas%>% rename(victimas = `Número de mujeres víctimas mortales`)
df_wide<- df%>%pivot_wider(names_from = Año, values_from= victimas)
df_wide<- df_wide%>% rename("2003"= `Año 2003`, "2004"= `Año 2004`,"2005"= `Año 2005`, "2006"= `Año 2006`, "2007"= `Año 2007`,"2008"= `Año 2008`,"2009"= `Año 2009`, "2010" = `Año 2010`, "2011" = `Año 2011`, "2012"= `Año 2012`, "2013"= `Año 2013`, "2014"= `Año 2014`, "2015"= `Año 2015`, "2016"= `Año 2016`, "2017"= `Año 2017`, "2018"= `Año 2018`, "2019"= `Año 2019`, "2020"= `Año 2020`)
df<-df_wide%>%pivot_longer(cols = 2:19, names_to = "Año") 
df_victimas<- df%>%rename(Numero_victimas = value, Relacion = `Pareja - Expareja`)%>%mutate(Año.num = as.numeric(as.character(Año)))


#Tramo de edad
df<- df_tramoedad%>%rename(Tramo_edad = `Tramo de edad Agresor`, victimas = `Número de mujeres víctimas mortales`)
df_wide<- df%>%pivot_wider(names_from = Tramo_edad, values_from= victimas)
df<-df_wide%>% rename("16_17" = `16-17 años`, "18_20" = `18-20 años`, "21_30" = `21-30 años`, "31_40" = `31-40 años`, "41_50" = `41-50 años`, "51_60" = `51-60 años`, "61_70" = `61-70 años`, "71_84" = `71-84 años`,">85"= `>=85 años`, No_consta= `No consta`)
df<- df%>%pivot_longer(cols = 2:11, names_to = "Tramo_edad")
df<- df%>%rename(Numero_victimas = value, Relacion = `Pareja - Expareja`)
df_tramoedad<-df%>%filter(!is.na(Numero_victimas))

#mapas 
df_mapa<-df_mapa %>% rename(CCAA = `Comunidad autónoma`, Victimas = `Número de mujeres víctimas mortales`)
df_mapa1<- full_join(Provincias, df_mapa, by = c("NombreProv" = "Provincia"))
df_mapa1<- df_mapa1%>% select(c(NombreProv, NombreCCAA, geometry, Victimas))

df_mapa2<- df_mapa%>%mutate(Total = sum(Victimas)) %>%group_by(CCAA)%>% mutate(victimas_por_CCAA = sum (Victimas))%>%mutate(percent = victimas_por_CCAA/Total *100)
mapaCCAA<- full_join(df_mapa2, CCAA, by = c("CCAA" = "NombreCCAA"))
#tabla covid llamadas
df_1<-df_llamadas%>%select(Año.num, Numero_llamadas)%>%group_by(Año.num)%>%summarise(llamadas_por_año = sum(Numero_llamadas))
df_1<-df_1%>%pivot_wider(names_from = Año.num, values_from= llamadas_por_año)
df_1<-df_1%>%rename(año_2019= "2019", año_2020 = "2020")%>%select(año_2019, año_2020)%>%mutate(diferencia = (año_2020 - año_2019)/año_2019 *100)
df_2<-df_victimas%>%select(Año.num, Numero_victimas)%>%group_by(Año.num)%>%summarise(Victimas_por_año = sum(Numero_victimas))
df_2<-df_2%>%pivot_wider(names_from = Año.num, values_from= Victimas_por_año)
df_2<-df_2%>%rename(año_2019= "2019", año_2020 = "2020")%>%select(año_2019, año_2020)%>%mutate(diferencia = (año_2020 - año_2019) /año_2019 * 100)
df_3<-df_denuncias%>%select(Año.num, Numero_denuncias)%>%group_by(Año.num)%>%summarise(denuncias_por_año = sum(Numero_denuncias))
df_3<-df_3%>%pivot_wider(names_from = Año.num, values_from= denuncias_por_año)
df_3<-df_3%>%rename(año_2019= "2019", año_2020 = "2020")%>%select(año_2019, año_2020)%>%mutate(diferencia = (año_2020 - año_2019) /año_2019 * 100)
objetos_no_borrar<-c("df_llamadas", "df_denuncias", "df_victimas", "df_denuncias0", "df_denuncias1", "df_tramoedad", "df_mapa1", "df_1", "df_2", "df_3","mapaCCAA")
rm(list = ls()[!ls() %in% objetos_no_borrar])

Paquetes

  • library(tidyverse)
  • library(klippy)
  • library(knitr)
  • library(readxl)
  • library(sf)
  • library(plotly)
  • library(gganimate)
  • library(hrbrthemes)
  • library(readxl)

3. Estudio de la Violencia de Género

El concepto de la violencia de género engloba diversas definiciones, así pues, la Organización Mundial de la Salud (OMS) establece que las Naciones Unidas definen la violencia contra la mujer como:

“Todo acto de violencia de género, que resulte, o pueda tener como resultado un daño físico, sexual o psicológico para la mujer, inclusive las amenazas tales como actos, la coacción o la privación arbitraria de libertad, tanto si se producen en la vida pública como en la privada”

Así pues, el Programa de las Naciones Unidas para el Desarrollo aporta la definición como:

“La violencia sexual y de género es una violación de los derechos básicos que se da en todas las regiones y continentes del mundo, e impide que las mujeres ejerzan sus derechos economicos y políticos.”.

Ambas definiciones nos dan una visión de que en la violencia de género tiene como resultado todo tipo de daño hacia la mujer, solo por el mero hecho de serlo. Y que está presente, por desgracia, en todas las partes del mundo y no solo en nuestro país.

Por otro lado, desde el Instituto de la Mujer y para la Igualdad de Oportunidades de España, dentro del Ministerio de Sanidad, Servicios sociales e Igualdad, precisan que la violencia de género como:

“Es aquella que se ejerce sobre las mujeres por parte de quienes estén o hayan estado ligados a ellas por relaciones de afectividad (parejas o ex-parejas), cuyo objetivo del agresor es producir daño y conseguir el control sobre la mujer, por lo que se produce de manera continuada en el tiempo y sistemática en la forma, como parte de la misma estrategia”.

Y a su vez, declaran que:

“Ha sido y sigue siendo una de las manifestaciones más claras de la desigualdad, subordinación y de las relaciones de poder de los hombres sobre las mujeres”.

Como se manifiesta anteriormente, la Violencia de Género es un delito que vulnera los derechos de la mujer, asi como denota discriminación y limita el desarrollo de este colectivo. Para fundamentar esta evidencia se contrastan diversos datos.

3.1. Llamadas al número 016.

En este apartado se va a plasmar la evolución del número de llamadas pertinentes al 016. Como se ha referido anteriormente, este número oferta un servicio de atención para mujeres que sufren violencia de género. Esta llamada se puede realizar mediante un teléfono móvil o de manera online, de forma totalmente gratuita y sin constancia de ella. Es decir, no aparece el registro en la factura del movil,para así, evitar que el maltratador esté al corriente. Pero a su vez, se queda reflejada en la lista de llamadas realizadas en este aparato, por lo que se recomienda llamar desde un número público o ajeno a la víctima.

En el siguiente gráfico se puede ver la evolución de los llamamientos a este número desde el 2007 hasta el 2020. Examinandolo, podemos ver que el año donde se registró mayores llamadas fue en el 2016. Otro rasgo llamativo en este gráfico es el aumento sustancial de llamadas pertinentes entre el 2007 y 2008. Esto se debe a que este número empezó a ser operativo en el año 2007, de manera que se reconoció este servicio exclusivamente para las mujeres que se encuentran frente a esta situación.

Para la realización del gráfico se ha utilizado las funciones geom_point y geom_line.

3.2. Denuncias por violencia de género.

Aquí se plasman las denuncias realizadas por delitos relacionados con la Violencia de Género. Se ha realizado el mismo porcedimiento que en el anterior gráfico. En primer lugar, se representa la evolución de denuncias por años, desde el 2009 hasta el 2020.

Por lo que mediante el análisis de este gráfico se puede evidenciar que a partir del 2013 se experimentó un aumento de las denuncias por Violencia de Género, llegando en 2019 a un total de 168.168 denuncias registradas. Esto puede reflejar que el miedo de las víctimas a ser estigmatizadas por denunciar a su maltratador aminoró debido a la mayor presencia de conciencia generada a lo largo de los años.

En adición, se refleja una caída drástica en el último año, coincidiendo con la incidencia de la pandemia causada por el Covid-19. Donde todo indica a que pueda ser el efecto del confinamiento domiciliario y la cuarentena, como se indicará un apartado posteriormente.

Por otro lado, se distingue el origen de la denuncia. Es decir, quien ha sido el encargado de presentar la denuncia por malos tratos hacia la mujer. En este caso, se distinguen siete tipos:

  • Presentada por la víctima en juzgado.
  • Presentada por familiares de la víctima en juzgado.
  • Atestado policial con denuncia de la víctima.
  • Atestado policial con denuncia de familiares.
  • Atestado policial por intervención directa.
  • Parte de lesiones.
  • Servicios de asistencia y terceros en general

En este gráfico se denota el dominio de denuncias realizadas por atestado policial con denuncia de la víctima, con un total de 1.058.861. Por intervención directa policial se encuentra un total de 235.649 denuncias realizadas, mientras que las denuncias de origen por parte de lesiones son 173.476. Por otro lado, las presentadas directamente por la víctima en juzgado se posiciona en cuarto lugar, por lo que refleja el miedo y la inseguridad de la víctima frente a su maltratador. El total de estas denuncias es de 92.889. Las denuncias con origen de servicios de asistencia y terceros en general, por parte de atestado policial con denuncia de familiares y, presentada por familiares de la víctima en juzgado, respectivamente, representan un total de 38.864, 21.577 y 7.320 denuncias.

Para elaborar este gráfico se ha usado la función geom_bar.

3.3. Victimas mortales por violencia de género

En esta sección se va a hacer referencia a diversas clasificaciones:

3.3.1 Relación de la víctima con el agresor.

Como se ha referido anteriormente, la violencia de género recoge en su definición que este tipo de violencia es la que se genera a una mujer por parte de la persona con la que tiene o ha tenido una relación sentimental. Por lo que se distingue tres tipos:

  • si la agresión se ha ejecutado por la pareja de la víctima
  • si la ha llevado a cabo su expareja
  • si la víctima y el agresor se encuentran en situación de separación

Por tanto, para constatar cual es el mayor número de mujeres asesinadas, en función de la relación que mantenia con su homicida, se se ha recurrido a un gráfico de puntos o Scatter plot que simboliza la evolución individual de los tres tipos de relación entre la víctima y el asesino. Se evidencia, por tanto, el predominio de las victimas mortales a manos de su pareja, seguida por su expareja y, finalmente, si se encuentran en fase de separación.

Aquí, se aprecia en primer lugar, como se ha dicho anteriormente, en qué año fueron más mujeres victimas mortales por violencia de género. En 2010 fue el año donde más mujeres murieron, siendo 44, en manos de su marido. Por otro lado, el mayor número de mujeres asesinadas por su expareja fue en 2008, estas fueron 22. Por último, 16 mujeres que se encontraban en fase de separación con su esposo murieron en el 2015, y, otras 16 en el 2016, siendo estos los años donde se registraron más muertes por violencia de género en manos de este agresor.

3.3.2. Tramo de edad del agresor.

Por otra parte, se ha clasificado el número de víctimas, a parte de por la relación que se establece entre la víctima y su homicida, distinguiendo el tramo de edad de este último. En este gráfico de barras se muestra la clasificación siguiente:

En el caso de mujeres asesinadas en manos de su pareja y las víctimas que se encontraban en fase de separación, el principal perfil del agresor se encuentra en un rango de edad entre 31 y 40 años. Por debajo de estos, a su vez, predomina los hombres de 41 a 50 años. En cambio, los asesinatos por parte de la expareja, suceden a la inversa, siendo los agresores entre 41 y 50 años los predominantes.

Por otro lado, hay un número de victimas en la que no se conoce la edad del homicida. Dentro de este, son 21 las mujeres asesinadas por su expareja, 47 en el caso de que el agresor era la pareja actual y, 10 que se encontraban en fase de separación, la edad de estos agresores no está registrada.

3.3.3 Distribución en España de mujeres asesinadas.

Distribución por provincias de mujeres asesinadas

En esta parte del trabajo, se plasma la distribución por provincias del número de mujeres victimas mortales. Para mostrar este reparto se ha recurrido a un mapa de España, cargando un data frame con los datos geoespaciales.Estos datos vienen acompañados por un GRS de forma que se puede utilizar las aplicaciones GIS, y a su vez, manipular y mostrar correctamente estos datos. Además, mediante la función geom_sf del paquete correspondiente,sf, se configura el mapa de España, dividido por provincias donde se distribuyen el número de víctimas mortales por violencia de género

Examinando el mapa, son Madrid y Barcelona las que presentan más casos de asesinatos en comparación con el resto de provincias, debido a que concentran un mayor porcentaje de población.

Distribución por Comunidades Autónomas de mujeres asesinadas

En el caso de CCAA, se ha realizado el porcentaje del total de las víctimas mortales, por lo que se representa que Andalucía, Cataluña y la Comunidad Valenciana asentan mayores tasas de muertes. Mientras que las que presentan menos son, La Rioja, Cantábria, Navarra y Extremadura.

3.3.4. Los efectos del Covid-19 sobre la violencia de género.

La pandemia causada por el virus Covid-19 ocasionó una serie de nuevos comportamientos para la sociedad. El Gobierno de España decretó un Estado de Alarma y el establecimiento del confinamiento y cuarentena nacional a partir del día 13 de marzo del 2020. El 21 de junio se anunció el final del Estado de Alarma, pero con restricciones que mostraron una Nueva Normalidad para la población española. El 25 de octubre, el Consejo de Ministros volvió a establecer el Estado de Alarma, aunque esta vez con medidas menos estrictas. Estas son, principalmente, un toque de queda, la prohibición de viajar entre comunidades autónomas, y la limitación de grupos a seis personas no convivientes.

La medida excepcional de confinamiento domiciliario para contener el número de contagios apuntó en un recorte modesto de llamadas al 016, como se evidencia en la tasa anual acumulativa de los datos entre el 2019 y 2020. El número de llamadas para demandar socorro por parte de mujeres víctimas solo disminuyó en un 0.12% aproximadamente. Demostrando que, los maltratos hacia la mujer por el mero hecho de serlo contínuan presentes y precisan de los recursos que ofertan estos servicios en atención a la violencia.

Fórmula: \(TMAA = ((X_{2020} / X_{2019})/X_{2019} )*100\)
año_2019 año_2020 diferencia
68714 68631 -0.1207905

Ahora bien, en el caso de las denuncias sí se refleja el impacto de las medidas establecidas con el objetivo de descender los casos de contagios. Como se ha refenciado antes, el confinamiento causó que la población permaneciera en sus viviendas, suponiendo una presión sobre las mujeres que soportan coacción por parte de su conviviente para no presentar denuncia.Por ello, esta situación de aislamiento y control sobre la mujer provocó, como se evidencia en la siguiente tabla, una disminución en 2020 de más de la mitad de denucias que se registraron en el año anterior.

año_2019 año_2020 diferencia
168168 70761 -57.92243

Por otro lado, la tasa de víctimas anual acumulativa realizada, muestra también un descenso del 18% aproximadamente. Una de las causas principales de este dato es, relacionado con lo expresado anteriormente, el hecho de que el agresor domine los movimientos de su conyuge diariamente.

año_2019 año_2020 diferencia
55 45 -18.18182

4. Conclusiones

Como conclusión, mediante lo demostrado a lo largo del trabajo, se puede evidenciar a día de hoy que, la violencia sigue siendo un problema en nuestra sociedad que repercute y damnifica a las mujeres víctimas de esta violencia.

Este concepto tiene diversas definiciones, como se ha referenciado, según el órgano o la entidad que las ofrece, pero el eje central es el daño hacia la mujer.

El impacto que la violencia de género ejerce sobre la salud de la víctima tiene consecuencias perjudiciales tanto en su proceso de desarrollo personal y emocional, como en el de socialización e inclusión en una sociedad en continuo cambio y evolución.

La violencia es una herramienta que facilita el mantenimiento de la situación de poder del hombre contra la mujer, por eso, él agrede, manipula, arremete, ataca, entre otras cosas, porque este se siente superior a ella y por tanto quiere tener el dominio sobre la mujer.

Es importante tener en cuenta que la violencia contra la mujer adopta muchas formas, la más importante es el maltrato psicológico que tiene diversas manifestaciones como la violencia verbal, amenazas, gritos, insulto.

Como se ha analizado anteriormente, la crisis de Covid-19, además de afectar económicamente, ha tenido un impacto, especialmente, modificando las relaciones sociales,de manera que se han ralentizado los avances en términos de violencia de género.

Ante esta situación, es muy importante llevar a cabo acciones y medidas para defender y asegurar la igualdad de género. Algunas de ellas son, en primer lugar, concienciar a la sociedad, así como, movilizar a esta. En este caso, se requiere de una mayor transparencia a la hora de informar sobre esta problemática. Aquí, desde mi punto de vista, quiero destacar el trato de los medios de comunicación en este tema. Ya que se elaboran muchas notícias relacionadas con la violencia de género donde, tanto de manera indirecta como de manera directa (en el titular), se han intercambiado los papeles los partícipes del hecho. Es decir, al hombre, mediante el artículo, le corresponde el papel de víctima. Aquí podéis encontrar algunos de los ejemplos.

De esto deriva también, la necesidad de educar a la población bajo un lenguaje inclusivo, eliminar los micromachismos, invertir en la igualdad entre los géneros y potenciar el empoderamiento de las mujeres. Ya que, de una forma u otra, se tiende a justificar al maltratador y a culpabilizar a la víctima, como se puede mostrar en el ejemplo anterior. A su vez, también se requiere de voluntad política en esta cuestión. Mediante políticas de inserción, la implantación un sistema educativo igualitario,así como, adaptar y crear leyes que protejan los derechos de las mujeres, a la vez que estas aseguren que se haga justícia.

Finalmente, subrayar que el dia 25 de noviembre es el día internacional de la Eliminación de la Violencia contra la Mujer. Durante esta jornada, se realizan campañas de sensibilización y apoyo a las víctimas de violencia de género, así como manifestaciones multitudinarias con el objetivo de erradicar esta injusticia social.

Foto 1: Promotoras en acción
Foto 2: Las Províncias

5. Trabajos inspirados

Los trabajos y herramientas que se ha basado para realizar este informe son los siguientes:

LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBzb2JyZSBsYSBWaW9sZW5jaWEgZGUgR8OpbmVybyBlbiBFc3Bhw7FhIg0Kc3VidGl0bGU6ICJMYXVyYSBBbGJlcnQgTW9zY2FyZMOzIChsYXVhbG1vc0BhbHVtbmkudXYuZXMpIiANCmF1dGhvcjogIlVuaXZlcnNpdGF0IGRlIFZhbMOobmNpYSINCmRhdGU6ICJEaWNpZW1icmUgZGUgMjAyMCAoYWN0dWFsaXphZG8gZWwgYHIgZm9ybWF0KFN5cy50aW1lKCksICclZC0lbS0lWScpYCkiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgI2NzczogIi4vYXNzZXRzL215X2Nzc19maWxlLmNzcyINCiAgICB0aGVtZTogcGFwZXINCiAgICBoaWdobGlnaHQ6IHRleHRtYXRlIA0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogMyANCiAgICB0b2NfZmxvYXQ6IA0KICAgICAgY29sbGFwc2VkOiB0cnVlDQogICAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlDQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgZGZfcHJpbnQ6IGthYmxlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KZWRpdG9yX29wdGlvbnM6IA0KICBjaHVua19vdXRwdXRfdHlwZTogY29uc29sZQ0KLS0tDQoNCmBgYHtyIHBhY2thZ2VzLXNldHVwLCBpbmNsdWRlID0gRkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoa2xpcHB5KSAgDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KHNmKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGdnYW5pbWF0ZSkNCmxpYnJhcnkoaHJicnRoZW1lcykNCmBgYA0KDQpgYGB7ciBjaHVuay1zZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBldmFsID0gVFJVRSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIA0KICAgICAgICAgICAgICAgICAgICAgICNyZXN1bHRzID0gImhvbGQiLA0KICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gRkFMU0UsIGNhY2hlLnBhdGggPSAiL2NhY2hlcy8iLCBjb21tZW50ID0gIiM+IiwNCiAgICAgICAgICAgICAgICAgICAgICAjZmlnLndpZHRoID0gNywgI2ZpZy5oZWlnaHQ9IDcsICAgDQogICAgICAgICAgICAgICAgICAgICAgI291dC53aWR0aCA9IDcsIG91dC5oZWlnaHQgPSA3LA0KICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlID0gVFJVRSwgIGZpZy5zaG93ID0gImhvbGQiLA0KICAgICAgICAgICAgICAgICAgICAgIGZpZy5hc3AgPSA3LzksIG91dC53aWR0aCA9ICI2MCUiLCBmaWcuYWxpZ24gPSAiY2VudGVyIikNCmtuaXRyOjpvcHRzX2NodW5rJHNldChkZXYgPSAicG5nIiwgZGV2LmFyZ3MgPSBsaXN0KHR5cGUgPSAiY2Fpcm8tcG5nIikpDQpgYGANCg0KYGBge3Igb3B0aW9ucy1zZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQ0Kb3B0aW9ucyhzY2lwZW4gPSA5OTkpICMtIHBhcmEgcXVpdGFyIGxhIG5vdGFjacOzbiBjaWVudMOtZmljYQ0Kb3B0aW9ucygieWFtbC5ldmFsLmV4cHIiID0gVFJVRSkgDQpgYGANCg0KDQpgYGB7ciBrbGlwcHksIGVjaG8gPSBGQUxTRX0NCmtsaXBweTo6a2xpcHB5KHBvc2l0aW9uID0gYygidG9wIiwgInJpZ2h0IikpICMtIHJlbW90ZXM6Omluc3RhbGxfZ2l0aHViKCJybGVzdXIva2xpcHB5IikNCmBgYA0KPGRpdiBzdHlsZT0gInRleHQtYWxpZ246IGp1c3RpZnkiPjxkaXYvPg0KPGhyIGNsYXNzPSJsaW5lYS1ibGFjayI+DQoNClRyYWJham8gZWxhYm9yYWRvIHBhcmEgbGEgYXNpZ25hdHVyYSAiUHJvZ3JhbWFjacOzbiB5IG1hbmVqbyBkZSBkYXRvcyBlbiBsYSBlcmEgZGVsIEJpZyBEYXRhIiBkZSBsYSBVbml2ZXJzaXRhdCBkZSBWYWzDqG5jaWEgZHVyYW50ZSBlbCBjdXJzbyAyMDIwLTIwMjEuIEVsIHJlcG8gZGVsIHRyYWJham8gZXN0w6EgW2FxdcOtXShodHRwczovL2dpdGh1Yi5jb20vbGF1YWxtb3MvdHJhYmFqb19CaWdEYXRhKXt0YXJnZXQ9Il9ibGFuayJ9LiBMYSBww6FnaW5hIHdlYiBkZSBsYSBhc2lnbmF0dXJhIHkgbG9zIHRyYWJham9zIGRlIG1pcyBjb21wYcOxZXJvcyBwdWVkZW4gdmVyc2UgW2FxdcOtXShodHRwczovL3BlcmV6cDQ0LmdpdGh1Yi5pby9pbnRyby1kcy0yMC0yMS13ZWIvMDctdHJhYmFqb3MuaHRtbCl7dGFyZ2V0PSJfYmxhbmsifS4NCg0KPCEtLSBFbCBww6FycmFmbyBkZSBhcnJpYmEgaGFzIGRlIGRlamFybG8gY2FzaSBpZ3VhbCwgDQogICAgICAgIHNvbG8gSEFTIGRlIFNVU1RJVFVJUiBsYXMgMiB2ZWNlcyBxdWUgYXBhcmVjZSAicGVyZXpwNDQiIHBvciB0dSB1c3VhcmlvIGRlIEdpdGh1Yi0tPg0KICAgICAgICANCg0KPGhyIGNsYXNzPSJsaW5lYS1yZWQiPg0KIA0KIyA8Rk9OVCBDT0xPUj0gImUwNDdiMSI+ICoqMS4gSW50cm9kdWNjacOzbioqPEZPTlQ+DQoNCkVsIG9iamV0aXZvIGRlIGVzdGUgdHJhYmFqbyBlcyByZWZsZWphciBsYSB2aW9sZW5jaWEgcXVlIHN1ZnJlbiBsYXMgbXVqZXJlcyBlbiBFc3Bhw7FhIGEgcGFydGlyIGRlIGxvcyBkYXRvcyBkaXNwb25pYmxlcyBlbiBsYSBEZWxlZ2FjacOzbiBkZWwgZ29iaWVybm8gY29udHJhIGxhIFZpb2xlbmNpYSBkZSBHw6luZXJvLiBMYSB2aW9sZW5jaWEgZGUgZ8OpbmVybyBoYSBzaWRvIGVsIHRlbWEgZWxlZ2lkbyBwYXJhIGhhY2VyIGVzdGUgaW5mb3JtZSB5YSBxdWUsIHBvciBkZXNncmFjaWEsIGVzdGUgdGlwbyBkZSB2aW9sZW5jaWEgZXN0w6EgcHJlc2VudGUgZW4gZWwgY29uanVudG8gZGVsIHBhw61zIHkgcmVmbGVqYSB1bmEgaW5qdXN0w61jaWEgc29jaWFsLCBsaW1pdGFuZG8gbG9zIGRlcmVjaG9zIHkgbGFzIGxpYmVydGFkZXMgZGUgbGFzIG11amVyZXMuIERlIG1hbmVyYSBxdWUsIGxhIG1pc2nDs24gbWVkaWFudGUgZXN0ZSBlc3R1ZGlvIGVzIGhhY2VyIHZpc2libGUsIGNvbmNpZW5jaWFyIHkgc2Vuc2liaWxpemFyIGVzdGEgcHJvYmxlbcOhdGljYSBxdWUgYWJ1bmRhIGVuIGVzdGEgc29jaWVkYWQgcGF0cmlhcmNhbC4NCg0KRW4gcHJpbWVyIGx1Z2FyLCBzZSBhbmFsaXphIGxhIGV2b2x1Y2nDs24gZGVsIG7Dum1lcm8gZGUgbGxhbWFkYXMgcGVydGluZW50ZXMgYWwgMDE2LiBFc3RlIG7Dum1lcm8gZGUgdGVsw6lmb25vIGVzdMOhIHZpbmN1bGFkbyBhIHVuIHNlcnZpY2lvIHRlbGVmw7NuaWNvIGRlIGF0ZW5jacOzbiBhIHBlcnNvbmFzIHF1ZSBlc3TDoW4gc3VmcmllbmRvIHBvc2libGUgdmlvbGVuY2lhIGRlIGfDqW5lcm8uIENvbiBlc3RlIHNlcnZpY2lvLCBzZSBvZnJlY2UgaW5mb3JtYWNpw7NuIHkgYXNlc29yYW1pZW50byBmcmVudGUgYSBsYSBzaXR1YWNpw7NuIGVuIGxhIHF1ZSBzZSBlbmN1ZW50cmEgbGEgbGxhbWFudGUuDQoNClNlZ3VpZGFtZW50ZSwgc2UgcGxhc21hcmFuICBlbCBuw7ptZXJvIGRlIGRlbnVuY2lhcyByZWFsaXphZGFzIHBvciBlc3RlIHRpcG8gZGUgdmlvbGVuY2lhIGNvbnRyYSBsYSBtdWplci4gRW4gZXN0ZSBhcGFydGFkbywgc2UgZXhhbWluYSB0YW50byBsYSBldm9sdWNpw7NuLCBjb21vIGVsIG9yaWdlbiBkZSBlc3Rhcy4NCg0KQSBjb250aW51YWNpw7MsIHNlIGluY2lkZSBjb24gZWwgbsO6bWVybyBkZSB2w61jdGltYXMgbW9ydGFsZXMuRW4gZXN0ZSBwdW50byBzZSBjb25zaWRlcmFuIGxhcyBtdWplcmVzIGFzZXNpbmFkYXMgZW4gbWFub3MgZGUgc3VzIHBhcmVqYXMsZXhwYXJlamFzLCBvIHF1ZSBlc3RhbiBlbiBmYXNlIGRlIHNlcGFyYWNpw7NuLiBBZGVtw6FzLCB0YW1iacOpbiBzZSBkaXN0aW5ndWUgbGEgZWRhZCBkZWwgYWdyZXNvciBlbiBjdWVzdGnDs24geSwgZmluYWxtZW50ZSwgc2UgZGlzdGluZ3VlIHBvciBwcm92aW5jaWFzIHkgY29tdW5pZGFkZXMgYXV0w7Nub21hcyBkb25kZSBzZSBjb25jZW50cmFuIG3DoXMgY2FzbyBkZSBhc2VzaW5hdG8gZGUgbXVqZXJlcy4NCg0KUG9yIMO6bHRpbW8sIHNlIGhhY2UgaGluY2FwacOpIGVuIGxhIGluY2lkZW5jaWEgZGUgbGEgQ3Jpc2lzIGRlbCBDb3ZpZC0xOSBlbiBlc3RlIHByb2JsZW1hIHNvY2lhbC4gQXF1w60gc2UgcHJlc3RhIGF0ZW5jacOzbiBhIGxvcyBlZmVjdG9zIGRlcml2YWRvcyBkZSBsYSBkZWNsYXJhY2nDs24gZGVsIEVzdGFkbyBkZSBBbGFybWEgeSBkZWwgY29uZmluYW1pZW50byBkb21pY2lsaWFyaW8gZXN0YWJsZWNpZG9zIHBvciBlbCBHb2JpZXJubyBkZSBFc3Bhw7FhLg0KDQpFbiBsYXMgY29uY2x1c2lvbmVzIHNlIGluZmVyaXLDoSBlbiBsYXMgY3Vlc3Rpb25lcyBhYm9yZGFkYXMgYSBsbyBsYXJnbyBkZWwgdHJhYmFqbyBkZXN0YWNhbmRvIGxhcyBhY3R1YWNpb25lcyB5IGNvbXByb21pc29zIHBhcmEgY29tYmF0aXIgZXN0YSBwcm9ibGVtw6F0aWNhLCBkZSBtYW5lcmEgcXVlIHNlIGNvbnNpZ2EgdW4gaWd1YWxkYWQgZWZlY3RpdmEgZW50cmUgbXVqZXJlcyB5IGhvbWJyZXMuDQoNCmBgYHtyLCBldmFsPVRSVUUsIGVjaG89RkFMU0V9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiLi9pbWFnZW5lcy92aW9sZW5jaWFkZWdlbmVyby5qcGciKQ0KYGBgDQoNCg0KDQojIDxGT05UIENPTE9SPSAiZTA0N2IxIj4gKioyLiBEYXRvcyoqIDwvRk9OVD4NCkxvcyBkYXRvcyBwYXJhIHJlYWxpemFyIGVsIGluZm9ybWUgc2UgaGFuIHNhY2FkbyBkZSBsYSBEZWxlZ2FjacOzbiBkZWwgR29iaWVybm8gY29udHJhIGxhIFZpb2xlbmNpYSBkZSBHw6luZXJvLiBFc3RhIHDDoWdpbmEgd2ViIGRpc3BvbmUgZGUgdW4gcG9ydGFsIGVzdGFkw61zdGljbyBkb25kZSBzZSBlbmN1ZW50cmFuIGRpdmVyc2FzIHZhcmlhYmxlcyBkZSBlc3R1ZGlvcyB5IHN1cyByZXNwZWN0aXZhcyBjbGFzaWZpY2FjaW9uZXMuDQoNClBvciBsbyBxdWUsIGxvcyBkYXRvcyBzZSBoYW4gZGVzY2FyZ2FkbyBlbiBmb3JtYXRvIEV4Y2VsLCBkZSBtYW5lcmEgcXVlIHNlIGhhIHByZWNpc2FkbyBkZWwgcGFxdWV0ZSAqKnJlYWR4bCoqLiBTZWd1aWRhbWVudGUgc2UgaGFuIGNyZWFkbyBsYXMgcnV0YXMgcGFyYSBkb3RhciBkZSBkYXRhIGZyYW1lcywgY29uIGxhIGZ1bmNpw7MgKipyZWFkX2V4Y2VsKiouDQoNCkVuIGN1YW50byBhIGxvcyBkYXRvcywgYmFqbyBtaSBwdW50byBkZSB2aXN0YSwgY29uc2lkZXJvIHF1ZSBubyByZWZsZWphbiBsYSByZWFsaWRhZCBleGFjdGEsIHlhIHF1ZSBpbmNpZGVuIG11Y2hvcyBmYWN0b3JlcyBkZW50cm8gZGUgZXN0ZSB0aXBvIGRlIHZpb2xlbmNpYSBoYWNpYSBsYXMgbXVqZXJlcywgcXVlIG5vIGVzdGFuIHJlY29naWRvcyBlbiBuaW5ndW5hIGVzdGFkw61zdGljYSB5IHBvciB0YW50bywgbm8gc2UgdGllbmUgY29uc3RhbmNpYSBkZSBlbGxvLiBDb24gZXN0byBtZSByZWZpZXJvIGEgbGFzIGFncmVzaW9uZXMgeSBtYWx0cmF0b3MgcHNpY29sw7NnaWNvcywgbG9zIG1pY3JvbWFjaGlzbW9zIG8gbGEgc3Vib3JkaW5hY2nDsyBkZSBsYSBtdWplciBlbiBlbCDDoW1iaXRvIGRvbcOpc3RpY28sIGVudHJlIG90cmFzLg0KDQpgYGB7ciwgZXZhbCA9IFRSVUUsIGVjaG89IEZBTFNFfQ0KbGlicmFyeShyZWFkeGwpDQpgYGANCg0KDQojIyA8Rk9OVCBDT0xPUj0gImUwNDdiMSI+ICoqMi4xLiBQcm9jZXNhbmRvIGxvcyBkYXRvcyoqIDwvRk9OVD4gey50YWJzZXR9DQoNClVuYSB2ZXogY3JlYWRvcyBsb3MgZGF0YSBmcmFtZXMsIHNlIHByb2NlZGUgYSBtb2RpZmljYXIgZXN0b3MgcGFyYSBxdWUgbGEgbWFuaXB1bGFjacOzbiBkZSBkYXRvcyB5IGVsYWJvcmFjacOzbiBwYXJhIHJlYWxpemFyIGRpdmVyc29zIGdyw6FmaWNvcywgdGFibGFzIHkgbWFwYXMgc2VhIG3DoXMgc2VuY2lsbGEgeSBhZGVjdWFkYSBhIGxvIHF1ZSBzZSBwcmV0ZW5kZSBtb3N0cmFyLg0KRW4gZXN0ZSBjYXNvLCBlcyBuZWNlc2FyaW8gZWwgcGFxdWV0ZSAqKnRpZHl2ZXJzZSoqIHBhcmEgdXRpbGl6YXIgZWwgb3BlcmFkb3IgKipwaXBlKiogeSBhIHN1IHZleiwgZmFjaWxpdGFyIGxhIGxlY3R1cmEgZSBpbnRlcnByZXRhY2nDs24gZGVsIGPDs2RpZ28uIEFkZW3DoXMgZGUgcG9kZXIgdHJhbnNmb3JtYXIgbG9zIGRhdGFmcmFtZXMgY29uc2lkZXJhZG9zIGVuIGVzdGUgdHJhYmFqby4NCkxhIG1vZGlmaWNhY2nDs24gZGUgbG9zIGRhdGEgZnJhbWVzIHNlIGhhIGJhc2FkbywgZW4gcHJpbWVyIGx1Z2FyLCBwb3Igc2ltcGxpZmljYXIgZWwgbm9tYnJlIGRlIGxhcyBjb2x1bW5hcywgZGUgbWFuZXJhIHF1ZSBwZXJtaXRlIHVuIG1lam9yIG1hbmVqby4gUGFyYSBlc3RvLCBzZSBoYSB1dGlsaXphZG8gbGEgZnVuY2nDs24gKipyZW5hbWUqKi4gT3RybyBwcm9jZXNhbWllbnRvIHF1ZSBzZSBoYSB0ZW5pZG8gcXVlIGhhY2VyIGVuIGxhIG1heW9yaWEgZGUgZGF0YSBmcmFtZXMgZXMgY29udmVydGlyIGxhcyB2YXJpYWJsZXMgcXVlIGluZGljYW4gZWwgcGVyw61vZG8sIHlhIHF1ZSBlc3RhcywgZW4gbG9zIGRhdG9zIHByaW1hcmlvcyBkaXNwb25pYmxlcyBlc3RhYmFuIGVuIGZvcm1hdG8gdGV4dG8uIFBvciBsbyBxdWUsIHBhcmEgY29udmVydGlyIGEgZm9ybWF0byBudW3DqXJpY28gc2UgaGEgcmVjdXJyaWRvIGEgbGEgZnVuY2nDs24gKiptdXRhdGUqKi4gUGFyYSBmaW5hbGl6YXIsIHNlIGJvcnJhbiBsb3MgZGF0YSBmcmFtZXMgbG9zIGN1YWxlcyBzZSBwdWVkZSBwcmVzY2luZGlyIGRlIGVsbG9zLCB5IHNlIG1hbnRpZW5lIGVuIGVsIHF1ZSBzZSB2YSBhIHRyYWJhamFyLiBBZGVtw6FzLCBzZSByZXF1aWVyZW4gb3Ryb3MgcGFxdWV0ZXMgY29tbyBlbCAqKnBsb3RseSoqIG8gKipocmJydGhlbWVzKiogcGFyYSBzdXBsZW1lbnRhciBsb3MgZ3LDoWZpY29zLiBBc8OtIGNvbW8sIHBhcmEgcHJvZHVjaXIgZXN0ZSBpbmZvcm1lIHNlIG5lY2VzaXRhIGVsIHBhcXVldGUgKiprbml0cioqLg0KDQojIyMgRGF0YSBGcmFtZXMgey50YWJzZXR9DQoNCmBgYHtyLCBldmFsID0gVFJVRX0NCmRmX2xsYW1hZGFzPC1yZWFkX2V4Y2VsKCIuL2RhdG9zL2xsYW1hZGFzMDE2Lnhsc3giKQ0KZGZfZGVudW5jaWFzPC1yZWFkX2V4Y2VsKCIuL2RhdG9zL2RlbnVuY2lhcy54bHN4IikNCmRmX3ZpY3RpbWFzPC1yZWFkX2V4Y2VsKCIuL2RhdG9zL3ZpY3RpbWFzLnhsc3giKQ0KZGZfdHJhbW9lZGFkPC0gcmVhZF9leGNlbCgiLi9kYXRvcy92aWN0aW1hczEueGxzeCIpDQpkZl9tYXBhPC0gcmVhZF9leGNlbCgiLi9kYXRvcy9wcm92aW5jaWFzQ0NBQS54bHN4IikNCmxvYWQoIi4vZGF0b3MvZ2VvbWV0cmlhcy5SRGF0YSIpDQpDQ0FBIDwtIHJpbzo6aW1wb3J0KCJodHRwczovL2dpdGh1Yi5jb20vcGVyZXpwNDQvTEFVMmJvdW5kYXJpZXM0c3BhaW4vYmxvYi9tYXN0ZXIvZGF0YS9DQ0FBLnJkYT9yYXc9dHJ1ZSIpDQpvYmpldG9zX25vX2JvcnJhcjwtYygiZGZfbGxhbWFkYXMiLCAiZGZfZGVudW5jaWFzIiwgImRmX3ZpY3RpbWFzIiwgImRmX3RyYW1vZWRhZCIsICJkZl9tYXBhIiwgIkNDQUEiLCAiUHJvdmluY2lhcyIpDQpybShsaXN0ID0gbHMoKVshbHMoKSAlaW4lIG9iamV0b3Nfbm9fYm9ycmFyXSkNCmBgYA0KDQojIyMgTW9kaWZpY2FjacOzbiBkZSBEYXRhIEZyYW1lcyB7LnRhYnNldH0NCg0KYGBge3IsIGV2YWwgPSBUUlVFfQ0KI0RhdGFmcmFtZSBkZSBsbGFtYWRhcyBhbCAwMTYNCmRmPC1kZl9sbGFtYWRhcyU+JSByZW5hbWUobGxhbWFkYXM9IGBOw7ptZXJvIGRlIGxsYW1hZGFzIHBlcnRpbmVudGVzYCkNCmRmX3dpZGU8LSBkZiU+JXBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBBw7FvLCB2YWx1ZXNfZnJvbT0gbGxhbWFkYXMpDQpkZl93aWRlPC0gZGZfd2lkZSU+JSByZW5hbWUoIjIwMDciPSBgQcOxbyAyMDA3YCwiMjAwOCI9IGBBw7FvIDIwMDhgLCIyMDA5Ij0gYEHDsW8gMjAwOWAsICIyMDEwIiA9IGBBw7FvIDIwMTBgLCAiMjAxMSIgPSBgQcOxbyAyMDExYCwgIjIwMTIiPSBgQcOxbyAyMDEyYCwgIjIwMTMiPSBgQcOxbyAyMDEzYCwgIjIwMTQiPSBgQcOxbyAyMDE0YCwgIjIwMTUiPSBgQcOxbyAyMDE1YCwgIjIwMTYiPSBgQcOxbyAyMDE2YCwgIjIwMTciPSBgQcOxbyAyMDE3YCwgIjIwMTgiPSBgQcOxbyAyMDE4YCwgIjIwMTkiPSBgQcOxbyAyMDE5YCwgIjIwMjAiPSBgQcOxbyAyMDIwYCkNCmRmPC1kZl93aWRlJT4lcGl2b3RfbG9uZ2VyKGNvbHMgPSAxOjE0LCBuYW1lc190byA9ICJBw7FvIikgDQpkZl9sbGFtYWRhczwtIGRmJT4lcmVuYW1lKE51bWVyb19sbGFtYWRhcyA9IHZhbHVlKSU+JW11dGF0ZShBw7FvLm51bSA9IGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKEHDsW8pKSkNCg0KI0RhdGFmcmFtZSBkZSBkZW51bmNpYXMgcG9yIHYuZw0KZGY8LWRmX2RlbnVuY2lhcyU+JSByZW5hbWUoTnVtZXJvX2RlbnVuY2lhcz0gYE7Dum1lcm8gZGUgZGVudW5jaWFzIHBvciB2aW9sZW5jaWEgZGUgZ8OpbmVyb2AsIE9yaWdlbl9kZW51bmNpYSA9IGBPcmlnZW4gZGUgbGEgZGVudW5jaWFgKQ0KZGZfd2lkZTwtIGRmJT4lcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IEHDsW8sIHZhbHVlc19mcm9tPSBOdW1lcm9fZGVudW5jaWFzKQ0KZGZfd2lkZTwtIGRmX3dpZGUlPiUgcmVuYW1lKCIyMDA5Ij0gYEHDsW8gMjAwOWAsICIyMDEwIiA9IGBBw7FvIDIwMTBgLCAiMjAxMSIgPSBgQcOxbyAyMDExYCwgIjIwMTIiPSBgQcOxbyAyMDEyYCwgIjIwMTMiPSBgQcOxbyAyMDEzYCwgIjIwMTQiPSBgQcOxbyAyMDE0YCwgIjIwMTUiPSBgQcOxbyAyMDE1YCwgIjIwMTYiPSBgQcOxbyAyMDE2YCwgIjIwMTciPSBgQcOxbyAyMDE3YCwgIjIwMTgiPSBgQcOxbyAyMDE4YCwgIjIwMTkiPSBgQcOxbyAyMDE5YCwgIjIwMjAiPSBgQcOxbyAyMDIwYCkNCmRmPC1kZl93aWRlJT4lcGl2b3RfbG9uZ2VyKGNvbHMgPSAyOjEzLCBuYW1lc190byA9ICJBw7FvIikgDQpkZl9kZW51bmNpYXM8LSBkZiU+JXJlbmFtZShOdW1lcm9fZGVudW5jaWFzID0gdmFsdWUpJT4lbXV0YXRlKEHDsW8ubnVtID0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoQcOxbykpKQ0KZGZfZGVudW5jaWFzPC1kZl9kZW51bmNpYXMlPiUgc2VsZWN0KE9yaWdlbl9kZW51bmNpYSwgQcOxby5udW0sIE51bWVyb19kZW51bmNpYXMpDQoNCiNldm9sdWNpw7NuIHBvciBhw7FvcyBkZSBsYXMgZGVudW5jaWFzDQpkZl9kZW51bmNpYXMwPC0gZGZfZGVudW5jaWFzJT4lc2VsZWN0KEHDsW8ubnVtLCBOdW1lcm9fZGVudW5jaWFzKQ0KZGZfZGVudW5jaWFzMDwtIGRmX2RlbnVuY2lhczAlPiVncm91cF9ieShBw7FvLm51bSklPiVtdXRhdGUoZGVudW5jaWFzX2FjdW11bGFkYXNfcG9yX2HDsW8gPSBzdW0oTnVtZXJvX2RlbnVuY2lhcykpDQojT3JpZ2VuIGRlIGRlbnVuY2lhcw0KZGZfZGVudW5jaWFzMTwtIGRmX2RlbnVuY2lhcyU+JSBzZWxlY3QoT3JpZ2VuX2RlbnVuY2lhLCBOdW1lcm9fZGVudW5jaWFzKQ0KZGZfZGVudW5jaWFzMTwtIGRmX2RlbnVuY2lhcyU+JXRyYW5zZm9ybShkZl9kZW51bmNpYXMsIE9yaWdlbl9kZW51bmNpYSA9IHJlb3JkZXIoT3JpZ2VuX2RlbnVuY2lhLCAtTnVtZXJvX2RlbnVuY2lhcykpDQojVmljdGltYXMgbW9ydGFsZXMNCmRmPC1kZl92aWN0aW1hcyU+JSByZW5hbWUodmljdGltYXMgPSBgTsO6bWVybyBkZSBtdWplcmVzIHbDrWN0aW1hcyBtb3J0YWxlc2ApDQpkZl93aWRlPC0gZGYlPiVwaXZvdF93aWRlcihuYW1lc19mcm9tID0gQcOxbywgdmFsdWVzX2Zyb209IHZpY3RpbWFzKQ0KZGZfd2lkZTwtIGRmX3dpZGUlPiUgcmVuYW1lKCIyMDAzIj0gYEHDsW8gMjAwM2AsICIyMDA0Ij0gYEHDsW8gMjAwNGAsIjIwMDUiPSBgQcOxbyAyMDA1YCwgIjIwMDYiPSBgQcOxbyAyMDA2YCwgIjIwMDciPSBgQcOxbyAyMDA3YCwiMjAwOCI9IGBBw7FvIDIwMDhgLCIyMDA5Ij0gYEHDsW8gMjAwOWAsICIyMDEwIiA9IGBBw7FvIDIwMTBgLCAiMjAxMSIgPSBgQcOxbyAyMDExYCwgIjIwMTIiPSBgQcOxbyAyMDEyYCwgIjIwMTMiPSBgQcOxbyAyMDEzYCwgIjIwMTQiPSBgQcOxbyAyMDE0YCwgIjIwMTUiPSBgQcOxbyAyMDE1YCwgIjIwMTYiPSBgQcOxbyAyMDE2YCwgIjIwMTciPSBgQcOxbyAyMDE3YCwgIjIwMTgiPSBgQcOxbyAyMDE4YCwgIjIwMTkiPSBgQcOxbyAyMDE5YCwgIjIwMjAiPSBgQcOxbyAyMDIwYCkNCmRmPC1kZl93aWRlJT4lcGl2b3RfbG9uZ2VyKGNvbHMgPSAyOjE5LCBuYW1lc190byA9ICJBw7FvIikgDQpkZl92aWN0aW1hczwtIGRmJT4lcmVuYW1lKE51bWVyb192aWN0aW1hcyA9IHZhbHVlLCBSZWxhY2lvbiA9IGBQYXJlamEgLSBFeHBhcmVqYWApJT4lbXV0YXRlKEHDsW8ubnVtID0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoQcOxbykpKQ0KDQoNCiNUcmFtbyBkZSBlZGFkDQpkZjwtIGRmX3RyYW1vZWRhZCU+JXJlbmFtZShUcmFtb19lZGFkID0gYFRyYW1vIGRlIGVkYWQgQWdyZXNvcmAsIHZpY3RpbWFzID0gYE7Dum1lcm8gZGUgbXVqZXJlcyB2w61jdGltYXMgbW9ydGFsZXNgKQ0KZGZfd2lkZTwtIGRmJT4lcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IFRyYW1vX2VkYWQsIHZhbHVlc19mcm9tPSB2aWN0aW1hcykNCmRmPC1kZl93aWRlJT4lIHJlbmFtZSgiMTZfMTciID0gYDE2LTE3IGHDsW9zYCwgIjE4XzIwIiA9IGAxOC0yMCBhw7Fvc2AsICIyMV8zMCIgPSBgMjEtMzAgYcOxb3NgLCAiMzFfNDAiID0gYDMxLTQwIGHDsW9zYCwgIjQxXzUwIiA9IGA0MS01MCBhw7Fvc2AsICI1MV82MCIgPSBgNTEtNjAgYcOxb3NgLCAiNjFfNzAiID0gYDYxLTcwIGHDsW9zYCwgIjcxXzg0IiA9IGA3MS04NCBhw7Fvc2AsIj44NSI9IGA+PTg1IGHDsW9zYCwgTm9fY29uc3RhPSBgTm8gY29uc3RhYCkNCmRmPC0gZGYlPiVwaXZvdF9sb25nZXIoY29scyA9IDI6MTEsIG5hbWVzX3RvID0gIlRyYW1vX2VkYWQiKQ0KZGY8LSBkZiU+JXJlbmFtZShOdW1lcm9fdmljdGltYXMgPSB2YWx1ZSwgUmVsYWNpb24gPSBgUGFyZWphIC0gRXhwYXJlamFgKQ0KZGZfdHJhbW9lZGFkPC1kZiU+JWZpbHRlcighaXMubmEoTnVtZXJvX3ZpY3RpbWFzKSkNCg0KI21hcGFzIA0KZGZfbWFwYTwtZGZfbWFwYSAlPiUgcmVuYW1lKENDQUEgPSBgQ29tdW5pZGFkIGF1dMOzbm9tYWAsIFZpY3RpbWFzID0gYE7Dum1lcm8gZGUgbXVqZXJlcyB2w61jdGltYXMgbW9ydGFsZXNgKQ0KZGZfbWFwYTE8LSBmdWxsX2pvaW4oUHJvdmluY2lhcywgZGZfbWFwYSwgYnkgPSBjKCJOb21icmVQcm92IiA9ICJQcm92aW5jaWEiKSkNCmRmX21hcGExPC0gZGZfbWFwYTElPiUgc2VsZWN0KGMoTm9tYnJlUHJvdiwgTm9tYnJlQ0NBQSwgZ2VvbWV0cnksIFZpY3RpbWFzKSkNCg0KZGZfbWFwYTI8LSBkZl9tYXBhJT4lbXV0YXRlKFRvdGFsID0gc3VtKFZpY3RpbWFzKSkgJT4lZ3JvdXBfYnkoQ0NBQSklPiUgbXV0YXRlKHZpY3RpbWFzX3Bvcl9DQ0FBID0gc3VtIChWaWN0aW1hcykpJT4lbXV0YXRlKHBlcmNlbnQgPSB2aWN0aW1hc19wb3JfQ0NBQS9Ub3RhbCAqMTAwKQ0KbWFwYUNDQUE8LSBmdWxsX2pvaW4oZGZfbWFwYTIsIENDQUEsIGJ5ID0gYygiQ0NBQSIgPSAiTm9tYnJlQ0NBQSIpKQ0KI3RhYmxhIGNvdmlkIGxsYW1hZGFzDQpkZl8xPC1kZl9sbGFtYWRhcyU+JXNlbGVjdChBw7FvLm51bSwgTnVtZXJvX2xsYW1hZGFzKSU+JWdyb3VwX2J5KEHDsW8ubnVtKSU+JXN1bW1hcmlzZShsbGFtYWRhc19wb3JfYcOxbyA9IHN1bShOdW1lcm9fbGxhbWFkYXMpKQ0KZGZfMTwtZGZfMSU+JXBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBBw7FvLm51bSwgdmFsdWVzX2Zyb209IGxsYW1hZGFzX3Bvcl9hw7FvKQ0KZGZfMTwtZGZfMSU+JXJlbmFtZShhw7FvXzIwMTk9ICIyMDE5IiwgYcOxb18yMDIwID0gIjIwMjAiKSU+JXNlbGVjdChhw7FvXzIwMTksIGHDsW9fMjAyMCklPiVtdXRhdGUoZGlmZXJlbmNpYSA9IChhw7FvXzIwMjAgLSBhw7FvXzIwMTkpL2HDsW9fMjAxOSAqMTAwKQ0KZGZfMjwtZGZfdmljdGltYXMlPiVzZWxlY3QoQcOxby5udW0sIE51bWVyb192aWN0aW1hcyklPiVncm91cF9ieShBw7FvLm51bSklPiVzdW1tYXJpc2UoVmljdGltYXNfcG9yX2HDsW8gPSBzdW0oTnVtZXJvX3ZpY3RpbWFzKSkNCmRmXzI8LWRmXzIlPiVwaXZvdF93aWRlcihuYW1lc19mcm9tID0gQcOxby5udW0sIHZhbHVlc19mcm9tPSBWaWN0aW1hc19wb3JfYcOxbykNCmRmXzI8LWRmXzIlPiVyZW5hbWUoYcOxb18yMDE5PSAiMjAxOSIsIGHDsW9fMjAyMCA9ICIyMDIwIiklPiVzZWxlY3QoYcOxb18yMDE5LCBhw7FvXzIwMjApJT4lbXV0YXRlKGRpZmVyZW5jaWEgPSAoYcOxb18yMDIwIC0gYcOxb18yMDE5KSAvYcOxb18yMDE5ICogMTAwKQ0KZGZfMzwtZGZfZGVudW5jaWFzJT4lc2VsZWN0KEHDsW8ubnVtLCBOdW1lcm9fZGVudW5jaWFzKSU+JWdyb3VwX2J5KEHDsW8ubnVtKSU+JXN1bW1hcmlzZShkZW51bmNpYXNfcG9yX2HDsW8gPSBzdW0oTnVtZXJvX2RlbnVuY2lhcykpDQpkZl8zPC1kZl8zJT4lcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IEHDsW8ubnVtLCB2YWx1ZXNfZnJvbT0gZGVudW5jaWFzX3Bvcl9hw7FvKQ0KZGZfMzwtZGZfMyU+JXJlbmFtZShhw7FvXzIwMTk9ICIyMDE5IiwgYcOxb18yMDIwID0gIjIwMjAiKSU+JXNlbGVjdChhw7FvXzIwMTksIGHDsW9fMjAyMCklPiVtdXRhdGUoZGlmZXJlbmNpYSA9IChhw7FvXzIwMjAgLSBhw7FvXzIwMTkpIC9hw7FvXzIwMTkgKiAxMDApDQpvYmpldG9zX25vX2JvcnJhcjwtYygiZGZfbGxhbWFkYXMiLCAiZGZfZGVudW5jaWFzIiwgImRmX3ZpY3RpbWFzIiwgImRmX2RlbnVuY2lhczAiLCAiZGZfZGVudW5jaWFzMSIsICJkZl90cmFtb2VkYWQiLCAiZGZfbWFwYTEiLCAiZGZfMSIsICJkZl8yIiwgImRmXzMiLCJtYXBhQ0NBQSIpDQpybShsaXN0ID0gbHMoKVshbHMoKSAlaW4lIG9iamV0b3Nfbm9fYm9ycmFyXSkNCmBgYA0KDQojIyMgUGFxdWV0ZXMgey50YWJzZXR9DQoNCiAgLSBsaWJyYXJ5KHRpZHl2ZXJzZSkNCiAgLSBsaWJyYXJ5KGtsaXBweSkgIA0KICAtIGxpYnJhcnkoa25pdHIpDQogIC0gbGlicmFyeShyZWFkeGwpDQogIC0gbGlicmFyeShzZikNCiAgLSBsaWJyYXJ5KHBsb3RseSkNCiAgLSBsaWJyYXJ5KGdnYW5pbWF0ZSkNCiAgLSBsaWJyYXJ5KGhyYnJ0aGVtZXMpDQogIC0gbGlicmFyeShyZWFkeGwpDQoNCg0KDQojIDxGT05UIENPTE9SPSAiZTA0N2IxIj4gKiozLiBFc3R1ZGlvIGRlIGxhIFZpb2xlbmNpYSBkZSBHw6luZXJvKiogPC9GT05UPg0KDQpFbCBjb25jZXB0byBkZSBsYSB2aW9sZW5jaWEgZGUgZ8OpbmVybyBlbmdsb2JhIGRpdmVyc2FzIGRlZmluaWNpb25lcywgYXPDrSBwdWVzLCBsYSBPcmdhbml6YWNpw7NuIE11bmRpYWwgZGUgbGEgU2FsdWQgKE9NUykgZXN0YWJsZWNlIHF1ZSBsYXMgTmFjaW9uZXMgVW5pZGFzIGRlZmluZW4gbGEgdmlvbGVuY2lhIGNvbnRyYSBsYSBtdWplciBjb21vOg0KDQo+ICJUb2RvIGFjdG8gZGUgdmlvbGVuY2lhIGRlIGfDqW5lcm8sIHF1ZSByZXN1bHRlLCBvIHB1ZWRhIHRlbmVyIGNvbW8gcmVzdWx0YWRvIHVuIGRhw7FvIGbDrXNpY28sIHNleHVhbCBvIHBzaWNvbMOzZ2ljbyBwYXJhIGxhIG11amVyLCBpbmNsdXNpdmUgbGFzIGFtZW5hemFzIHRhbGVzIGNvbW8gYWN0b3MsIGxhIGNvYWNjacOzbiBvIGxhIHByaXZhY2nDs24gYXJiaXRyYXJpYSBkZSBsaWJlcnRhZCwgdGFudG8gc2kgc2UgcHJvZHVjZW4gZW4gbGEgdmlkYSBww7pibGljYSBjb21vIGVuIGxhIHByaXZhZGEiDQoNCkFzw60gcHVlcywgZWwgUHJvZ3JhbWEgZGUgbGFzIE5hY2lvbmVzIFVuaWRhcyBwYXJhIGVsIERlc2Fycm9sbG8gYXBvcnRhIGxhIGRlZmluaWNpw7NuIGNvbW86DQoNCj4gIkxhIHZpb2xlbmNpYSBzZXh1YWwgeSBkZSBnw6luZXJvIGVzIHVuYSB2aW9sYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBiw6FzaWNvcyBxdWUgc2UgZGEgZW4gdG9kYXMgbGFzIHJlZ2lvbmVzIHkgY29udGluZW50ZXMgZGVsIG11bmRvLCBlIGltcGlkZSBxdWUgbGFzIG11amVyZXMgZWplcnphbiBzdXMgZGVyZWNob3MgZWNvbm9taWNvcyB5IHBvbMOtdGljb3MuIi4NCg0KQW1iYXMgZGVmaW5pY2lvbmVzIG5vcyBkYW4gdW5hIHZpc2nDs24gZGUgcXVlIGVuIGxhIHZpb2xlbmNpYSBkZSBnw6luZXJvIHRpZW5lIGNvbW8gcmVzdWx0YWRvIHRvZG8gdGlwbyBkZSBkYcOxbyBoYWNpYSBsYSBtdWplciwgc29sbyBwb3IgZWwgbWVybyBoZWNobyBkZSBzZXJsby4gWSBxdWUgZXN0w6EgcHJlc2VudGUsIHBvciBkZXNncmFjaWEsIGVuIHRvZGFzIGxhcyBwYXJ0ZXMgZGVsIG11bmRvIHkgbm8gc29sbyBlbiBudWVzdHJvIHBhw61zLg0KDQpQb3Igb3RybyBsYWRvLCBkZXNkZSBlbCBJbnN0aXR1dG8gZGUgbGEgTXVqZXIgeSBwYXJhIGxhIElndWFsZGFkIGRlIE9wb3J0dW5pZGFkZXMgZGUgRXNwYcOxYSwgZGVudHJvIGRlbCBNaW5pc3RlcmlvIGRlIFNhbmlkYWQsIFNlcnZpY2lvcyBzb2NpYWxlcyBlIElndWFsZGFkLCBwcmVjaXNhbiBxdWUgbGEgdmlvbGVuY2lhIGRlIGfDqW5lcm8gY29tbzoNCg0KPiAiRXMgYXF1ZWxsYSBxdWUgc2UgZWplcmNlIHNvYnJlIGxhcyBtdWplcmVzIHBvciBwYXJ0ZSBkZSBxdWllbmVzIGVzdMOpbiBvIGhheWFuIGVzdGFkbyBsaWdhZG9zIGEgZWxsYXMgcG9yIHJlbGFjaW9uZXMgZGUgYWZlY3RpdmlkYWQgKHBhcmVqYXMgbyBleC1wYXJlamFzKSwgY3V5byBvYmpldGl2byBkZWwgYWdyZXNvciBlcyBwcm9kdWNpciBkYcOxbyB5IGNvbnNlZ3VpciBlbCBjb250cm9sIHNvYnJlIGxhIG11amVyLCBwb3IgbG8gcXVlIHNlIHByb2R1Y2UgZGUgbWFuZXJhIGNvbnRpbnVhZGEgZW4gZWwgdGllbXBvIHkgc2lzdGVtw6F0aWNhIGVuIGxhIGZvcm1hLCBjb21vIHBhcnRlIGRlIGxhIG1pc21hIGVzdHJhdGVnaWEiLg0KDQpZIGEgc3UgdmV6LCBkZWNsYXJhbiBxdWU6DQoNCj4gIkhhIHNpZG8geSBzaWd1ZSBzaWVuZG8gdW5hIGRlIGxhcyBtYW5pZmVzdGFjaW9uZXMgbcOhcyBjbGFyYXMgZGUgbGEgZGVzaWd1YWxkYWQsIHN1Ym9yZGluYWNpw7NuIHkgZGUgbGFzIHJlbGFjaW9uZXMgZGUgcG9kZXIgZGUgbG9zIGhvbWJyZXMgc29icmUgbGFzIG11amVyZXMiLg0KDQpDb21vIHNlIG1hbmlmaWVzdGEgYW50ZXJpb3JtZW50ZSwgbGEgVmlvbGVuY2lhIGRlIEfDqW5lcm8gZXMgdW4gZGVsaXRvIHF1ZSB2dWxuZXJhIGxvcyBkZXJlY2hvcyBkZSBsYSBtdWplciwgYXNpIGNvbW8gZGVub3RhIGRpc2NyaW1pbmFjacOzbiB5IGxpbWl0YSBlbCBkZXNhcnJvbGxvIGRlIGVzdGUgY29sZWN0aXZvLiANClBhcmEgZnVuZGFtZW50YXIgZXN0YSBldmlkZW5jaWEgc2UgY29udHJhc3RhbiBkaXZlcnNvcyBkYXRvcy4NCg0KIyMgPEZPTlQgQ09MT1I9ICJlMDQ3YjEiPiAqKjMuMS4gTGxhbWFkYXMgYWwgbsO6bWVybyAwMTYuKiogPC9GT05UPg0KDQpFbiBlc3RlIGFwYXJ0YWRvIHNlIHZhIGEgcGxhc21hciBsYSBldm9sdWNpw7NuIGRlbCBuw7ptZXJvIGRlIGxsYW1hZGFzIHBlcnRpbmVudGVzIGFsIDAxNi4gQ29tbyBzZSBoYSByZWZlcmlkbyBhbnRlcmlvcm1lbnRlLCBlc3RlIG7Dum1lcm8gb2ZlcnRhIHVuIHNlcnZpY2lvIGRlIGF0ZW5jacOzbiBwYXJhIG11amVyZXMgcXVlIHN1ZnJlbiB2aW9sZW5jaWEgZGUgZ8OpbmVyby4gRXN0YSBsbGFtYWRhIHNlIHB1ZWRlIHJlYWxpemFyIG1lZGlhbnRlIHVuIHRlbMOpZm9ubyBtw7N2aWwgbyBkZSBtYW5lcmEgb25saW5lLCBkZSBmb3JtYSB0b3RhbG1lbnRlIGdyYXR1aXRhIHkgc2luIGNvbnN0YW5jaWEgZGUgZWxsYS4gRXMgZGVjaXIsIG5vIGFwYXJlY2UgZWwgcmVnaXN0cm8gZW4gbGEgZmFjdHVyYSBkZWwgbW92aWwscGFyYSBhc8OtLCBldml0YXIgcXVlIGVsIG1hbHRyYXRhZG9yIGVzdMOpIGFsIGNvcnJpZW50ZS4gUGVybyBhIHN1IHZleiwgc2UgcXVlZGEgcmVmbGVqYWRhIGVuIGxhIGxpc3RhIGRlIGxsYW1hZGFzIHJlYWxpemFkYXMgZW4gZXN0ZSBhcGFyYXRvLCBwb3IgbG8gcXVlIHNlIHJlY29taWVuZGEgbGxhbWFyIGRlc2RlIHVuIG7Dum1lcm8gcMO6YmxpY28gbyBhamVubyBhIGxhIHbDrWN0aW1hLg0KICANCmBgYHtyLCBldmFsPVRSVUUsIGVjaG89RkFMU0V9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiLi9pbWFnZW5lcy8wMTYuanBnIikNCmBgYA0KIA0KICANCkVuIGVsIHNpZ3VpZW50ZSBncsOhZmljbyBzZSBwdWVkZSB2ZXIgbGEgZXZvbHVjacOzbiBkZSBsb3MgbGxhbWFtaWVudG9zIGEgZXN0ZSBuw7ptZXJvIGRlc2RlIGVsIDIwMDcgaGFzdGEgZWwgMjAyMC4gRXhhbWluYW5kb2xvLCBwb2RlbW9zIHZlciBxdWUgZWwgYcOxbyBkb25kZSBzZSByZWdpc3Ryw7MgbWF5b3JlcyBsbGFtYWRhcyBmdWUgZW4gZWwgMjAxNi4gDQpPdHJvIHJhc2dvIGxsYW1hdGl2byBlbiBlc3RlIGdyw6FmaWNvIGVzIGVsIGF1bWVudG8gc3VzdGFuY2lhbCBkZSBsbGFtYWRhcyBwZXJ0aW5lbnRlcyBlbnRyZSBlbCAyMDA3IHkgMjAwOC4gRXN0byBzZSBkZWJlIGEgcXVlIGVzdGUgbsO6bWVybyBlbXBlesOzIGEgc2VyIG9wZXJhdGl2byBlbiBlbCBhw7FvIDIwMDcsIGRlIG1hbmVyYSBxdWUgc2UgcmVjb25vY2nDsyBlc3RlIHNlcnZpY2lvIGV4Y2x1c2l2YW1lbnRlIHBhcmEgbGFzIG11amVyZXMgcXVlIHNlIGVuY3VlbnRyYW4gZnJlbnRlIGEgZXN0YSBzaXR1YWNpw7NuLiANCg0KUGFyYSBsYSByZWFsaXphY2nDs24gZGVsIGdyw6FmaWNvIHNlIGhhIHV0aWxpemFkbyBsYXMgZnVuY2lvbmVzICoqZ2VvbV9wb2ludCoqIHkgKipnZW9tX2xpbmUqKi4NCg0KYGBge3IsIGV2YWwgPSBUUlVFLCBlY2hvPSBGQUxTRX0NCmE8LWdncGxvdChkZl9sbGFtYWRhcywgYWVzKEHDsW8ubnVtLCBOdW1lcm9fbGxhbWFkYXMpKSArIGdlb21fbGluZShjb2xvciA9ICJtYWdlbnRhIikgKyBnZW9tX3BvaW50KGNvbG9yID0gIm1hZ2VudGEiKSArIHRoZW1lX21vZGVybl9yYygpICsgbGFicyh0aXRsZSA9ICJHcsOhZmljbyAxOiBFdm9sdWNpw7NuIGRlbCBuw7ptZXJvIGRlIGxsYW1hZGFzIiwgc3VidGl0bGUgPSAiZGVzZGUgZWwgYcOxbyAyMDA3IGhhc3RhIGVsIDIwMjAiKQ0KYQ0KDQpgYGANCg0KIyMgPEZPTlQgQ09MT1I9ICJlMDQ3YjEiPiAqKjMuMi4gRGVudW5jaWFzIHBvciB2aW9sZW5jaWEgZGUgZ8OpbmVyby4qKiA8L0ZPTlQ+DQoNCkFxdcOtIHNlIHBsYXNtYW4gbGFzIGRlbnVuY2lhcyByZWFsaXphZGFzIHBvciBkZWxpdG9zIHJlbGFjaW9uYWRvcyBjb24gbGEgVmlvbGVuY2lhIGRlIEfDqW5lcm8uIA0KU2UgaGEgcmVhbGl6YWRvIGVsIG1pc21vIHBvcmNlZGltaWVudG8gcXVlIGVuIGVsIGFudGVyaW9yIGdyw6FmaWNvLiBFbiBwcmltZXIgbHVnYXIsIHNlIHJlcHJlc2VudGEgbGEgZXZvbHVjacOzbiBkZSBkZW51bmNpYXMgcG9yIGHDsW9zLCBkZXNkZSBlbCAyMDA5IGhhc3RhIGVsIDIwMjAuIA0KDQpgYGB7ciwgZXZhbCA9IFRSVUUsIGVjaG89IEZBTFNFfQ0KYjwtIGdncGxvdChkZl9kZW51bmNpYXMwLCBhZXMoQcOxby5udW0sIGRlbnVuY2lhc19hY3VtdWxhZGFzX3Bvcl9hw7FvKSkgKyBnZW9tX2xpbmUoY29sb3IgPSAibWFnZW50YSIpICsgZ2VvbV9wb2ludChjb2xvciA9ICJtYWdlbnRhIikgKyB0aGVtZV9tb2Rlcm5fcmMoKSArIGxhYnModGl0bGUgPSAiR3LDoWZpY28gMjogRXZvbHVjacOzbiBkZWwgbsO6bWVybyBkZSBkZW51bmNpYXMiLCBzdWJ0aXRsZSA9ICJkZXNkZSBlbCBhw7FvIDIwMDkgaGFzdGEgZWwgMjAyMCIpDQpiDQpgYGANCg0KUG9yIGxvIHF1ZSBtZWRpYW50ZSBlbCBhbsOhbGlzaXMgZGUgZXN0ZSBncsOhZmljbyBzZSBwdWVkZSBldmlkZW5jaWFyIHF1ZSBhIHBhcnRpciBkZWwgMjAxMyBzZSBleHBlcmltZW50w7MgdW4gYXVtZW50byBkZSBsYXMgZGVudW5jaWFzIHBvciBWaW9sZW5jaWEgZGUgR8OpbmVybywgbGxlZ2FuZG8gZW4gMjAxOSBhIHVuIHRvdGFsIGRlIDE2OC4xNjggZGVudW5jaWFzIHJlZ2lzdHJhZGFzLiAgRXN0byBwdWVkZSByZWZsZWphciBxdWUgZWwgbWllZG8gZGUgbGFzIHbDrWN0aW1hcyBhIHNlciBlc3RpZ21hdGl6YWRhcyBwb3IgZGVudW5jaWFyIGEgc3UgbWFsdHJhdGFkb3IgYW1pbm9yw7MgZGViaWRvIGEgbGEgbWF5b3IgcHJlc2VuY2lhIGRlIGNvbmNpZW5jaWEgZ2VuZXJhZGEgYSBsbyBsYXJnbyBkZSBsb3MgYcOxb3MuDQoNCkVuIGFkaWNpw7NuLCBzZSByZWZsZWphIHVuYSBjYcOtZGEgZHLDoXN0aWNhIGVuIGVsIMO6bHRpbW8gYcOxbywgY29pbmNpZGllbmRvIGNvbiBsYSBpbmNpZGVuY2lhIGRlIGxhIHBhbmRlbWlhIGNhdXNhZGEgcG9yIGVsICpDb3ZpZC0xOSouIERvbmRlIHRvZG8gaW5kaWNhIGEgcXVlIHB1ZWRhIHNlciBlbCBlZmVjdG8gZGVsIGNvbmZpbmFtaWVudG8gZG9taWNpbGlhcmlvIHkgbGEgY3VhcmVudGVuYSwgY29tbyBzZSBpbmRpY2Fyw6EgdW4gYXBhcnRhZG8gcG9zdGVyaW9ybWVudGUuDQoNClBvciBvdHJvIGxhZG8sIHNlIGRpc3Rpbmd1ZSBlbCBvcmlnZW4gZGUgbGEgZGVudW5jaWEuIEVzIGRlY2lyLCBxdWllbiBoYSBzaWRvIGVsIGVuY2FyZ2FkbyBkZSBwcmVzZW50YXIgbGEgZGVudW5jaWEgcG9yIG1hbG9zIHRyYXRvcyBoYWNpYSBsYSBtdWplci4gRW4gZXN0ZSBjYXNvLCBzZSBkaXN0aW5ndWVuIHNpZXRlIHRpcG9zOiANCg0KICAtIFByZXNlbnRhZGEgcG9yIGxhIHbDrWN0aW1hIGVuIGp1emdhZG8uDQogIC0gUHJlc2VudGFkYSBwb3IgZmFtaWxpYXJlcyBkZSBsYSB2w61jdGltYSBlbiBqdXpnYWRvLg0KICAtIEF0ZXN0YWRvIHBvbGljaWFsIGNvbiBkZW51bmNpYSBkZSBsYSB2w61jdGltYS4NCiAgLSBBdGVzdGFkbyBwb2xpY2lhbCBjb24gZGVudW5jaWEgZGUgZmFtaWxpYXJlcy4NCiAgLSBBdGVzdGFkbyBwb2xpY2lhbCBwb3IgaW50ZXJ2ZW5jacOzbiBkaXJlY3RhLg0KICAtIFBhcnRlIGRlIGxlc2lvbmVzLg0KICAtIFNlcnZpY2lvcyBkZSBhc2lzdGVuY2lhIHkgdGVyY2Vyb3MgZW4gZ2VuZXJhbA0KDQpFbiBlc3RlIGdyw6FmaWNvIHNlIGRlbm90YSBlbCBkb21pbmlvIGRlIGRlbnVuY2lhcyByZWFsaXphZGFzIHBvciBhdGVzdGFkbyBwb2xpY2lhbCBjb24gZGVudW5jaWEgZGUgbGEgdsOtY3RpbWEsIGNvbiB1biB0b3RhbCBkZSAxLjA1OC44NjEuIFBvciBpbnRlcnZlbmNpw7NuIGRpcmVjdGEgcG9saWNpYWwgc2UgZW5jdWVudHJhIHVuIHRvdGFsIGRlIDIzNS42NDkgZGVudW5jaWFzIHJlYWxpemFkYXMsIG1pZW50cmFzIHF1ZSBsYXMgZGVudW5jaWFzIGRlIG9yaWdlbiBwb3IgcGFydGUgZGUgbGVzaW9uZXMgc29uIDE3My40NzYuIFBvciBvdHJvIGxhZG8sIGxhcyBwcmVzZW50YWRhcyBkaXJlY3RhbWVudGUgcG9yIGxhIHbDrWN0aW1hIGVuIGp1emdhZG8gc2UgcG9zaWNpb25hIGVuIGN1YXJ0byBsdWdhciwgcG9yIGxvIHF1ZSByZWZsZWphIGVsIG1pZWRvIHkgbGEgaW5zZWd1cmlkYWQgZGUgbGEgdsOtY3RpbWEgZnJlbnRlIGEgc3UgbWFsdHJhdGFkb3IuIEVsIHRvdGFsIGRlIGVzdGFzIGRlbnVuY2lhcyBlcyBkZSA5Mi44ODkuIExhcyBkZW51bmNpYXMgY29uIG9yaWdlbiBkZSBzZXJ2aWNpb3MgZGUgYXNpc3RlbmNpYSB5IHRlcmNlcm9zIGVuIGdlbmVyYWwsIHBvciBwYXJ0ZSBkZSBhdGVzdGFkbyBwb2xpY2lhbCBjb24gZGVudW5jaWEgZGUgZmFtaWxpYXJlcyB5LCBwcmVzZW50YWRhIHBvciBmYW1pbGlhcmVzIGRlIGxhIHbDrWN0aW1hIGVuIGp1emdhZG8sIHJlc3BlY3RpdmFtZW50ZSwgcmVwcmVzZW50YW4gdW4gdG90YWwgZGUgMzguODY0LCAyMS41NzcgeSA3LjMyMCBkZW51bmNpYXMuDQogDQpgYGB7ciwgZXZhbCA9IFRSVUUsIGVjaG89IEZBTFNFfQ0KYzwtZ2dwbG90KGRmX2RlbnVuY2lhczEsIGFlcyhPcmlnZW5fZGVudW5jaWEsIE51bWVyb19kZW51bmNpYXMsIGZpbGw9IE9yaWdlbl9kZW51bmNpYSkpICsgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSsgdGhlbWVfYncoKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF9ibGFuaygpKSsgbGFicyAodGl0bGUgPSAiR3LDoWZpY28gZGUgYmFycmFzOiBOw7ptZXJvIGRlIGRlbnVuY2lhcyBzZWfDum4gc3Ugb3JpZ2VuIikNCmMgKyB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsPSJzZWFzaGVsbCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9ImdyYXkwIikpDQoNCg0KYGBgDQoNClBhcmEgZWxhYm9yYXIgZXN0ZSBncsOhZmljbyBzZSBoYSB1c2FkbyBsYSBmdW5jacOzbiAqKmdlb21fYmFyKiouDQoNCiMjIDxGT05UIENPTE9SPSAiZTA0N2IxIj4gKiozLjMuIFZpY3RpbWFzIG1vcnRhbGVzIHBvciB2aW9sZW5jaWEgZGUgZ8OpbmVybyoqIDwvRk9OVD4NCg0KRW4gZXN0YSBzZWNjacOzbiBzZSB2YSBhIGhhY2VyIHJlZmVyZW5jaWEgYSBkaXZlcnNhcyBjbGFzaWZpY2FjaW9uZXM6DQoNCiMjIyA8Rk9OVCBDT0xPUj0gImUwNDdiMSI+ICoqMy4zLjEgUmVsYWNpw7NuIGRlIGxhIHbDrWN0aW1hIGNvbiBlbCBhZ3Jlc29yLioqIDwvRk9OVD4NCg0KQ29tbyBzZSBoYSByZWZlcmlkbyBhbnRlcmlvcm1lbnRlLCBsYSB2aW9sZW5jaWEgZGUgZ8OpbmVybyByZWNvZ2UgZW4gc3UgZGVmaW5pY2nDs24gcXVlIGVzdGUgdGlwbyBkZSB2aW9sZW5jaWEgZXMgbGEgcXVlIHNlIGdlbmVyYSBhIHVuYSBtdWplciBwb3IgcGFydGUgZGUgbGEgcGVyc29uYSBjb24gbGEgcXVlIHRpZW5lIG8gaGEgdGVuaWRvIHVuYSByZWxhY2nDs24gc2VudGltZW50YWwuIFBvciBsbyBxdWUgc2UgZGlzdGluZ3VlIHRyZXMgdGlwb3M6IA0KDQogIC0gc2kgbGEgYWdyZXNpw7NuIHNlIGhhIGVqZWN1dGFkbyBwb3IgbGEgcGFyZWphIGRlIGxhIHbDrWN0aW1hDQogIC0gc2kgbGEgaGEgbGxldmFkbyBhIGNhYm8gc3UgZXhwYXJlamENCiAgLSBzaSBsYSB2w61jdGltYSB5IGVsIGFncmVzb3Igc2UgZW5jdWVudHJhbiBlbiBzaXR1YWNpw7NuIGRlIHNlcGFyYWNpw7NuDQoNClBvciB0YW50bywgcGFyYSBjb25zdGF0YXIgY3VhbCBlcyBlbCBtYXlvciBuw7ptZXJvIGRlIG11amVyZXMgYXNlc2luYWRhcywgZW4gZnVuY2nDs24gZGUgbGEgcmVsYWNpw7NuIHF1ZSBtYW50ZW5pYSBjb24gc3UgaG9taWNpZGEsIHNlIHNlIGhhIHJlY3VycmlkbyBhIHVuIGdyw6FmaWNvIGRlIHB1bnRvcyBvICpTY2F0dGVyIHBsb3QqIHF1ZSBzaW1ib2xpemEgbGEgZXZvbHVjacOzbiBpbmRpdmlkdWFsIGRlIGxvcyB0cmVzIHRpcG9zIGRlIHJlbGFjacOzbiBlbnRyZSBsYSB2w61jdGltYSB5IGVsIGFzZXNpbm8uIFNlIGV2aWRlbmNpYSwgcG9yIHRhbnRvLCBlbCBwcmVkb21pbmlvIGRlIGxhcyB2aWN0aW1hcyBtb3J0YWxlcyBhIG1hbm9zIGRlIHN1IHBhcmVqYSwgc2VndWlkYSBwb3Igc3UgZXhwYXJlamEgeSwgZmluYWxtZW50ZSwgc2kgc2UgZW5jdWVudHJhbiBlbiBmYXNlIGRlIHNlcGFyYWNpw7NuLg0KDQoNCmBgYHtyLCBldmFsID0gVFJVRSwgZWNobz0gRkFMU0V9IA0KcHA8LWdncGxvdChkZl92aWN0aW1hcywgYWVzKHggPSBBw7FvLm51bSwgeSA9TnVtZXJvX3ZpY3RpbWFzLCBjb2xvciA9IFJlbGFjaW9uKSkgKw0KIGdlb21fcG9pbnQoKSArIHlsaW0oMCwgNTApICsgZmFjZXRfZ3JpZChyb3dzID0gdmFycyhSZWxhY2lvbikpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgyLjQsICJjbSIpKSArdGhlbWVfaXBzdW0oKSArIHRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGw9ImxpZ2h0eWVsbG93Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsIGNvbG91ciA9ImdyZXk3OCIpKSsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArIGxhYnMgKHRpdGxlID0gIlNjYXR0ZXIgcGxvdDogTsO6bWVybyBkZSB2w61jdGltYXMgcG9yIGHDsW9zIGVuIGZ1bmNpw7NuIGRlIGxhIHJlbGFjacOzbiBjb24gZWwgYWdyZXNvciIpICt0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIHNpemUgPSA4LCB2anVzdCA9IDEsNSkpDQpnZ3Bsb3RseShwcCkNCmBgYA0KDQpBcXXDrSwgc2UgYXByZWNpYSBlbiBwcmltZXIgbHVnYXIsIGNvbW8gc2UgaGEgZGljaG8gYW50ZXJpb3JtZW50ZSwgIGVuIHF1w6kgYcOxbyBmdWVyb24gbcOhcyBtdWplcmVzIHZpY3RpbWFzIG1vcnRhbGVzIHBvciB2aW9sZW5jaWEgZGUgZ8OpbmVyby4gRW4gMjAxMCBmdWUgZWwgYcOxbyBkb25kZSBtw6FzIG11amVyZXMgbXVyaWVyb24sIHNpZW5kbyA0NCwgZW4gbWFub3MgZGUgc3UgbWFyaWRvLiBQb3Igb3RybyBsYWRvLCBlbCBtYXlvciBuw7ptZXJvIGRlIG11amVyZXMgYXNlc2luYWRhcyBwb3Igc3UgZXhwYXJlamEgZnVlIGVuIDIwMDgsIGVzdGFzICBmdWVyb24gMjIuIFBvciDDumx0aW1vLCAxNiBtdWplcmVzIHF1ZSBzZSBlbmNvbnRyYWJhbiBlbiBmYXNlIGRlIHNlcGFyYWNpw7NuIGNvbiBzdSBlc3Bvc28gbXVyaWVyb24gZW4gZWwgMjAxNSwgeSwgb3RyYXMgMTYgZW4gZWwgMjAxNiwgc2llbmRvIGVzdG9zIGxvcyBhw7FvcyBkb25kZSBzZSByZWdpc3RyYXJvbiBtw6FzIG11ZXJ0ZXMgcG9yIHZpb2xlbmNpYSBkZSBnw6luZXJvIGVuIG1hbm9zIGRlIGVzdGUgYWdyZXNvci4NCg0KIyMjIDxGT05UIENPTE9SPSAiZTA0N2IxIj4gKiozLjMuMi4gVHJhbW8gZGUgZWRhZCBkZWwgYWdyZXNvci4qKiA8Rk9OVD4NCiANCiBQb3Igb3RyYSBwYXJ0ZSwgc2UgaGEgY2xhc2lmaWNhZG8gZWwgbsO6bWVybyBkZSB2w61jdGltYXMsIGEgcGFydGUgZGUgcG9yIGxhIHJlbGFjacOzbiBxdWUgc2UgZXN0YWJsZWNlIGVudHJlIGxhIHbDrWN0aW1hIHkgc3UgaG9taWNpZGEsIGRpc3Rpbmd1aWVuZG8gZWwgdHJhbW8gZGUgZWRhZCBkZSBlc3RlIMO6bHRpbW8uDQogRW4gZXN0ZSBncsOhZmljbyBkZSBiYXJyYXMgc2UgbXVlc3RyYSBsYSBjbGFzaWZpY2FjacOzbiBzaWd1aWVudGU6DQogDQpFbiBlbCBjYXNvIGRlIG11amVyZXMgYXNlc2luYWRhcyBlbiBtYW5vcyBkZSBzdSBwYXJlamEgeSBsYXMgdsOtY3RpbWFzIHF1ZSBzZSBlbmNvbnRyYWJhbiBlbiBmYXNlIGRlIHNlcGFyYWNpw7NuLCBlbCBwcmluY2lwYWwgcGVyZmlsIGRlbCBhZ3Jlc29yIHNlIGVuY3VlbnRyYSBlbiB1biByYW5nbyBkZSBlZGFkIGVudHJlIDMxIHkgNDAgYcOxb3MuIFBvciBkZWJham8gZGUgIGVzdG9zLCBhIHN1IHZleiwgcHJlZG9taW5hIGxvcyBob21icmVzIGRlIDQxIGEgNTAgYcOxb3MuIEVuIGNhbWJpbywgbG9zIGFzZXNpbmF0b3MgcG9yIHBhcnRlIGRlIGxhIGV4cGFyZWphLCBzdWNlZGVuIGEgbGEgaW52ZXJzYSwgc2llbmRvIGxvcyBhZ3Jlc29yZXMgZW50cmUgNDEgeSA1MCBhw7FvcyBsb3MgcHJlZG9taW5hbnRlcy4gDQoNCiBQb3Igb3RybyBsYWRvLCBoYXkgdW4gbsO6bWVybyBkZSB2aWN0aW1hcyBlbiBsYSBxdWUgbm8gc2UgY29ub2NlIGxhIGVkYWQgZGVsIGhvbWljaWRhLiBEZW50cm8gZGUgZXN0ZSwgc29uIDIxIGxhcyBtdWplcmVzIGFzZXNpbmFkYXMgcG9yIHN1IGV4cGFyZWphLCA0NyBlbiBlbCBjYXNvIGRlIHF1ZSBlbCBhZ3Jlc29yIGVyYSBsYSBwYXJlamEgYWN0dWFsIHksICAxMCBxdWUgc2UgZW5jb250cmFiYW4gZW4gZmFzZSBkZSBzZXBhcmFjacOzbiwgbGEgZWRhZCBkZSBlc3RvcyBhZ3Jlc29yZXMgbm8gZXN0w6EgcmVnaXN0cmFkYS4NCiANCiANCmBgYHtyLCBldmFsID0gVFJVRSwgZWNobz0gRkFMU0V9DQoNCmFiPC1nZ3Bsb3QoZGZfdHJhbW9lZGFkLCBhZXMoZmlsbD1UcmFtb19lZGFkLCB5PU51bWVyb192aWN0aW1hcywgeD1SZWxhY2lvbikpICsgDQogICAgZ2VvbV9iYXIocG9zaXRpb249ImRvZGdlIiwgc3RhdD0iaWRlbnRpdHkiKSArIHRoZW1lX3RpbnloYW5kKCkgKyB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIpKSArIHRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGw9InNlYXNoZWxsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPTAuNSwgbGluZXR5cGU9InNvbGlkIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0iZ3JheTAiKSkgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dCggc2l6ZSA9IDEyLCBhbmdsZT0gOTAsIGhqdXN0ID0gMC41LCB2anVzdCA9IDAuNSkpICsgbGFicyAodGl0bGUgPSAiR3LDoWZpY28gZGUgQmFycmFzOiBOw7ptZXJvIGRlIHbDrWN0aW1hcyBtb3J0YWxlcyBwb3IgcmVsYWNpw7NuIHkgdHJhbW8gZGUgZWRhZCAiKSArdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBzaXplID0gOCkpDQpnZ3Bsb3RseShhYikNCmBgYA0KDQojIyMgPEZPTlQgQ09MT1I9ICJlMDQ3YjEiPiAqKjMuMy4zIERpc3RyaWJ1Y2nDs24gZW4gRXNwYcOxYSBkZSBtdWplcmVzIGFzZXNpbmFkYXMuKiogPC9GT05UPiB7LnRhYnNldH0NCg0KIyMjIyA8Rk9OVCBDT0xPUj0gImUwNDdiMSI+ICoqRGlzdHJpYnVjacOzbiBwb3IgcHJvdmluY2lhcyBkZSBtdWplcmVzIGFzZXNpbmFkYXMqKiA8L0ZPTlQ+IHsudGFic2V0fQ0KDQpFbiBlc3RhIHBhcnRlIGRlbCB0cmFiYWpvLCBzZSBwbGFzbWEgbGEgZGlzdHJpYnVjacOzbiBwb3IgcHJvdmluY2lhcyBkZWwgbsO6bWVybyBkZSBtdWplcmVzIHZpY3RpbWFzIG1vcnRhbGVzLiBQYXJhIG1vc3RyYXIgZXN0ZSByZXBhcnRvIHNlIGhhIHJlY3VycmlkbyBhIHVuICoqbWFwYSoqIGRlIEVzcGHDsWEsIGNhcmdhbmRvIHVuIGRhdGEgZnJhbWUgY29uIGxvcyBkYXRvcyBnZW9lc3BhY2lhbGVzLkVzdG9zIGRhdG9zIHZpZW5lbiBhY29tcGHDsWFkb3MgcG9yIHVuICoqR1JTKiogZGUgZm9ybWEgcXVlIHNlIHB1ZWRlIHV0aWxpemFyIGxhcyBhcGxpY2FjaW9uZXMgKipHSVMqKiwgeSBhIHN1IHZleiwgbWFuaXB1bGFyIHkgbW9zdHJhciBjb3JyZWN0YW1lbnRlIGVzdG9zIGRhdG9zLiBBZGVtw6FzLCBtZWRpYW50ZSBsYSBmdW5jacOzbiAqKmdlb21fc2YqKiBkZWwgcGFxdWV0ZSBjb3JyZXNwb25kaWVudGUsKipzZioqLCBzZSBjb25maWd1cmEgZWwgbWFwYSBkZSBFc3Bhw7FhLCBkaXZpZGlkbyBwb3IgcHJvdmluY2lhcyBkb25kZSBzZSBkaXN0cmlidXllbiBlbCBuw7ptZXJvIGRlIHbDrWN0aW1hcyBtb3J0YWxlcyBwb3IgdmlvbGVuY2lhIGRlIGfDqW5lcm8gDQoNCkV4YW1pbmFuZG8gZWwgbWFwYSwgc29uIE1hZHJpZCB5IEJhcmNlbG9uYSBsYXMgcXVlIHByZXNlbnRhbiBtw6FzIGNhc29zIGRlIGFzZXNpbmF0b3MgZW4gY29tcGFyYWNpw7NuIGNvbiBlbCByZXN0byBkZSBwcm92aW5jaWFzLCBkZWJpZG8gYSBxdWUgY29uY2VudHJhbiB1biBtYXlvciBwb3JjZW50YWplIGRlIHBvYmxhY2nDs24uDQogDQoNCmBgYHtyLCBldmFsID0gVFJVRSwgZWNobz0gRkFMU0V9DQpnPC0gZ2dwbG90KGRmX21hcGExLGFlcyhnZW9tZXRyeSA9IGdlb21ldHJ5KSkgKyBnZW9tX3NmKGFlcyhmaWxsPSBWaWN0aW1hcykpICsgY29vcmRfc2YoeGxpbSA9IGMoLTIwLDEwKSkgKyBhbm5vdGF0ZShnZW9tID0gInRleHQiLCB4ID0gNCwgeSA9IDM3LCBsYWJlbCA9ICJNYXIgTWVkaXRlcnLDoW5lbyIsIGZvbnRmYWNlID0gIml0YWxpYyIsIGNvbG9yID0gImdyZXkyMiIsIHNpemUgPSAzKSArIGxhYnMgKHRpdGxlID0gIk1hcGEgMTogRGlzdHJpYnVjacOzbiBkZWwgbsO6bWVybyBkZSB2w61jdGltYXMgbW9ydGFsZXMgcG9yIHZpb2xlbmNpYSBtYWNoaXN0YSIsDQogICAgICAgc3VidGl0bGUgPSAiUG9yIHByb3bDrW5jaWFzIiwNCiAgICAgICBjYXB0aW9uID0gIkRhdG9zIHByb3ZlbmllbnRlcyBkZSBsYSBEZWxlZ2FjacOzbiBkZWwgR29iaWVybm8gY29udHJhIGxhIHZpb2xlbmNpYSBkZSBnw6luZXJvIikgKyB0aGVtZV92b2lkKCkgDQpnICsgc2NhbGVfZmlsbF92aXJpZGlzX2MoYWxwaGEgPSAuNikNCg0KYGBgDQoNCiMjIyMgPEZPTlQgQ09MT1I9ICJlMDQ3YjEiPiAqKkRpc3RyaWJ1Y2nDs24gcG9yIENvbXVuaWRhZGVzIEF1dMOzbm9tYXMgZGUgbXVqZXJlcyBhc2VzaW5hZGFzKiogey50YWJzZXR9DQoNCkVuIGVsIGNhc28gZGUgQ0NBQSwgc2UgaGEgcmVhbGl6YWRvIGVsIHBvcmNlbnRhamUgZGVsIHRvdGFsIGRlIGxhcyB2w61jdGltYXMgbW9ydGFsZXMsIHBvciBsbyBxdWUgc2UgcmVwcmVzZW50YSBxdWUgQW5kYWx1Y8OtYSwgQ2F0YWx1w7FhIHkgIGxhIENvbXVuaWRhZCBWYWxlbmNpYW5hIGFzZW50YW4gbWF5b3JlcyB0YXNhcyBkZSBtdWVydGVzLiBNaWVudHJhcyBxdWUgbGFzIHF1ZSBwcmVzZW50YW4gbWVub3Mgc29uLCBMYSBSaW9qYSwgQ2FudMOhYnJpYSwgTmF2YXJyYSB5IEV4dHJlbWFkdXJhLg0KDQpgYGB7ciwgZXZhbD1UUlVFLCBlY2hvPUZBTFNFfQ0KDQpmPC1nZ3Bsb3QobWFwYUNDQUEsIGFlcyhnZW9tZXRyeT1nZW9tZXRyeSkpICsgZ2VvbV9zZihhZXMoZmlsbCA9IHBlcmNlbnQpKSArbGFicyAodGl0bGUgPSAiTWFwYSAyOiBEaXN0cmlidWNpw7NuIGRlbCBuw7ptZXJvIGRlIHbDrWN0aW1hcyBtb3J0YWxlcyBwb3IgdmlvbGVuY2lhIG1hY2hpc3RhIiwNCiAgICAgICBzdWJ0aXRsZSA9ICJQb3IgQ29tdW5pZGFkZXMgQXV0w7Nub21hcyIsDQogICAgICAgY2FwdGlvbiA9ICJEYXRvcyBwcm92ZW5pZW50ZXMgZGUgbGEgRGVsZWdhY2nDs24gZGVsIEdvYmllcm5vIGNvbnRyYSBsYSB2aW9sZW5jaWEgZGUgZ8OpbmVybyIpICsgdGhlbWVfdm9pZCgpDQpmICsgc2NhbGVfZmlsbF92aXJpZGlzX2MoYWxwaGEgPSAuNikNCmBgYA0KDQoNCiMjIyA8Rk9OVCBDT0xPUj0gImUwNDdiMSI+ICoqMy4zLjQuIExvcyBlZmVjdG9zIGRlbCBDb3ZpZC0xOSBzb2JyZSBsYSB2aW9sZW5jaWEgZGUgZ8OpbmVyby4qKiA8L0ZPTlQ+DQoNCkxhIHBhbmRlbWlhIGNhdXNhZGEgcG9yIGVsIHZpcnVzICpDb3ZpZC0xOSogb2Nhc2lvbsOzIHVuYSBzZXJpZSBkZSBudWV2b3MgY29tcG9ydGFtaWVudG9zIHBhcmEgbGEgc29jaWVkYWQuIEVsIEdvYmllcm5vIGRlIEVzcGHDsWEgZGVjcmV0w7MgdW4gKipFc3RhZG8gZGUgQWxhcm1hKiogeSBlbCBlc3RhYmxlY2ltaWVudG8gZGVsICoqY29uZmluYW1pZW50byB5IGN1YXJlbnRlbmEgbmFjaW9uYWwqKiBhIHBhcnRpciBkZWwgZMOtYSAxMyBkZSBtYXJ6byBkZWwgMjAyMC4gDQpFbCAyMSBkZSBqdW5pbyBzZSBhbnVuY2nDsyBlbCBmaW5hbCBkZWwgRXN0YWRvIGRlIEFsYXJtYSwgcGVybyBjb24gcmVzdHJpY2Npb25lcyBxdWUgbW9zdHJhcm9uIHVuYSAqTnVldmEgTm9ybWFsaWRhZCogcGFyYSBsYSBwb2JsYWNpw7NuIGVzcGHDsW9sYS4gRWwgMjUgZGUgb2N0dWJyZSwgZWwgQ29uc2VqbyBkZSBNaW5pc3Ryb3Mgdm9sdmnDsyBhIGVzdGFibGVjZXIgZWwgRXN0YWRvIGRlIEFsYXJtYSwgYXVucXVlIGVzdGEgdmV6IGNvbiBtZWRpZGFzIG1lbm9zIGVzdHJpY3Rhcy4gRXN0YXMgc29uLCBwcmluY2lwYWxtZW50ZSwgdW4gdG9xdWUgZGUgcXVlZGEsIGxhIHByb2hpYmljacOzbiBkZSB2aWFqYXIgZW50cmUgY29tdW5pZGFkZXMgYXV0w7Nub21hcywgeSBsYSBsaW1pdGFjacOzbiBkZSBncnVwb3MgYSBzZWlzIHBlcnNvbmFzIG5vIGNvbnZpdmllbnRlcy4NCg0KTGEgbWVkaWRhIGV4Y2VwY2lvbmFsIGRlIGNvbmZpbmFtaWVudG8gZG9taWNpbGlhcmlvIHBhcmEgY29udGVuZXIgZWwgbsO6bWVybyBkZSBjb250YWdpb3MgYXB1bnTDsyBlbiB1biByZWNvcnRlIG1vZGVzdG8gZGUgbGxhbWFkYXMgYWwgMDE2LCBjb21vIHNlIGV2aWRlbmNpYSBlbiBsYSB0YXNhIGFudWFsIGFjdW11bGF0aXZhIGRlIGxvcyBkYXRvcyBlbnRyZSBlbCAyMDE5IHkgMjAyMC4gRWwgbsO6bWVybyBkZSBsbGFtYWRhcyBwYXJhIGRlbWFuZGFyIHNvY29ycm8gcG9yIHBhcnRlIGRlIG11amVyZXMgdsOtY3RpbWFzIHNvbG8gZGlzbWludXnDsyBlbiB1biAwLjEyJSBhcHJveGltYWRhbWVudGUuIERlbW9zdHJhbmRvIHF1ZSwgbG9zIG1hbHRyYXRvcyBoYWNpYSBsYSBtdWplciBwb3IgZWwgbWVybyBoZWNobyBkZSBzZXJsbyBjb250w61udWFuIHByZXNlbnRlcyB5IHByZWNpc2FuIGRlIGxvcyByZWN1cnNvcyBxdWUgb2ZlcnRhbiBlc3RvcyBzZXJ2aWNpb3MgZW4gYXRlbmNpw7NuIGEgbGEgdmlvbGVuY2lhLg0KDQoNCjxDRU5URVI+RsOzcm11bGE6ICRUTUFBID0gKChYX3syMDIwfSAvIFhfezIwMTl9KS9YX3syMDE5fSApKjEwMCQ8L0NFTlRFUj4NCg0KDQpgYGB7ciwgZXZhbD1UUlVFLCBlY2hvPSBGQUxTRX0NCmtuaXRyOjprYWJsZShkZl8xKQ0KYGBgDQoNCkFob3JhIGJpZW4sIGVuIGVsIGNhc28gZGUgbGFzIGRlbnVuY2lhcyBzw60gc2UgcmVmbGVqYSBlbCBpbXBhY3RvIGRlIGxhcyBtZWRpZGFzIGVzdGFibGVjaWRhcyBjb24gZWwgb2JqZXRpdm8gZGUgZGVzY2VuZGVyIGxvcyBjYXNvcyBkZSBjb250YWdpb3MuIENvbW8gc2UgaGEgcmVmZW5jaWFkbyBhbnRlcywgZWwgY29uZmluYW1pZW50byBjYXVzw7MgcXVlIGxhIHBvYmxhY2nDs24gcGVybWFuZWNpZXJhIGVuIHN1cyB2aXZpZW5kYXMsIHN1cG9uaWVuZG8gdW5hIHByZXNpw7NuIHNvYnJlIGxhcyBtdWplcmVzIHF1ZSBzb3BvcnRhbiBjb2FjY2nDs24gcG9yIHBhcnRlIGRlIHN1IGNvbnZpdmllbnRlIHBhcmEgbm8gcHJlc2VudGFyIGRlbnVuY2lhLlBvciBlbGxvLCBlc3RhIHNpdHVhY2nDs24gZGUgYWlzbGFtaWVudG8geSBjb250cm9sIHNvYnJlIGxhIG11amVyIHByb3ZvY8OzLCBjb21vIHNlIGV2aWRlbmNpYSBlbiBsYSBzaWd1aWVudGUgdGFibGEsIHVuYSBkaXNtaW51Y2nDs24gZW4gMjAyMCBkZSBtw6FzIGRlIGxhIG1pdGFkIGRlIGRlbnVjaWFzIHF1ZSBzZSByZWdpc3RyYXJvbiBlbiBlbCBhw7FvIGFudGVyaW9yLg0KDQpgYGB7ciwgZXZhbD1UUlVFLCBlY2hvPSBGQUxTRX0NCmtuaXRyOjprYWJsZShkZl8zKQ0KYGBgDQpQb3Igb3RybyBsYWRvLCBsYSB0YXNhIGRlIHbDrWN0aW1hcyBhbnVhbCBhY3VtdWxhdGl2YSByZWFsaXphZGEsIG11ZXN0cmEgdGFtYmnDqW4gdW4gZGVzY2Vuc28gZGVsIDE4JSBhcHJveGltYWRhbWVudGUuIFVuYSBkZSBsYXMgY2F1c2FzIHByaW5jaXBhbGVzIGRlIGVzdGUgZGF0byBlcywgcmVsYWNpb25hZG8gY29uIGxvIGV4cHJlc2FkbyBhbnRlcmlvcm1lbnRlLA0KZWwgaGVjaG8gZGUgcXVlIGVsIGFncmVzb3IgZG9taW5lIGxvcyBtb3ZpbWllbnRvcyBkZSBzdSBjb255dWdlIGRpYXJpYW1lbnRlLiANCg0KDQpgYGB7ciwgZXZhbD1UUlVFLCBlY2hvPSBGQUxTRX0NCmtuaXRyOjprYWJsZShkZl8yKQ0KYGBgDQoNCiMgPEZPTlQgQ09MT1I9ICJlMDQ3YjEiPiAqKjQuIENvbmNsdXNpb25lcyoqIDwvRk9OVD4NCg0KDQpDb21vIGNvbmNsdXNpw7NuLCBtZWRpYW50ZSBsbyBkZW1vc3RyYWRvIGEgbG8gbGFyZ28gZGVsIHRyYWJham8sIHNlIHB1ZWRlIGV2aWRlbmNpYXIgYSBkw61hIGRlIGhveSBxdWUsIGxhIHZpb2xlbmNpYSBzaWd1ZSBzaWVuZG8gdW4gcHJvYmxlbWEgZW4gbnVlc3RyYSBzb2NpZWRhZCBxdWUgcmVwZXJjdXRlIHkgZGFtbmlmaWNhIGEgbGFzIG11amVyZXMgdsOtY3RpbWFzIGRlIGVzdGEgdmlvbGVuY2lhLiANCg0KRXN0ZSBjb25jZXB0byB0aWVuZSBkaXZlcnNhcyBkZWZpbmljaW9uZXMsIGNvbW8gc2UgaGEgcmVmZXJlbmNpYWRvLCBzZWfDum4gZWwgw7NyZ2FubyBvIGxhIGVudGlkYWQgcXVlIGxhcyBvZnJlY2UsIHBlcm8gZWwgZWplIGNlbnRyYWwgZXMgZWwgZGHDsW8gaGFjaWEgbGEgbXVqZXIuIA0KDQpFbCBpbXBhY3RvIHF1ZSBsYSB2aW9sZW5jaWEgZGUgZ8OpbmVybyBlamVyY2Ugc29icmUgbGEgc2FsdWQgZGUgbGEgdsOtY3RpbWEgdGllbmUgY29uc2VjdWVuY2lhcyBwZXJqdWRpY2lhbGVzIHRhbnRvIGVuIHN1IHByb2Nlc28gZGUgZGVzYXJyb2xsbyBwZXJzb25hbCB5IGVtb2Npb25hbCwgY29tbyBlbiBlbCBkZSBzb2NpYWxpemFjacOzbiBlIGluY2x1c2nDs24gZW4gdW5hIHNvY2llZGFkIGVuIGNvbnRpbnVvIGNhbWJpbyB5IGV2b2x1Y2nDs24uDQoNCkxhIHZpb2xlbmNpYSBlcyB1bmEgaGVycmFtaWVudGEgcXVlIGZhY2lsaXRhIGVsIG1hbnRlbmltaWVudG8gZGUgbGEgc2l0dWFjacOzbiBkZSBwb2RlciBkZWwgaG9tYnJlIGNvbnRyYSBsYSBtdWplciwgcG9yIGVzbywgw6lsIGFncmVkZSwgbWFuaXB1bGEsIGFycmVtZXRlLCBhdGFjYSwgZW50cmUgb3RyYXMgY29zYXMsIHBvcnF1ZSBlc3RlIHNlIHNpZW50ZSBzdXBlcmlvciBhIGVsbGEgeSBwb3IgdGFudG8gIHF1aWVyZSB0ZW5lciBlbCBkb21pbmlvIHNvYnJlIGxhIG11amVyLg0KDQpFcyBpbXBvcnRhbnRlIHRlbmVyIGVuIGN1ZW50YSBxdWUgbGEgdmlvbGVuY2lhIGNvbnRyYSBsYSBtdWplciBhZG9wdGEgbXVjaGFzIGZvcm1hcywgbGEgbcOhcyBpbXBvcnRhbnRlIGVzIGVsIG1hbHRyYXRvIHBzaWNvbMOzZ2ljbyBxdWUgdGllbmUgZGl2ZXJzYXMgbWFuaWZlc3RhY2lvbmVzIGNvbW8gbGEgdmlvbGVuY2lhIHZlcmJhbCwgYW1lbmF6YXMsIGdyaXRvcywgaW5zdWx0by4NCg0KQ29tbyBzZSBoYSBhbmFsaXphZG8gYW50ZXJpb3JtZW50ZSwgbGEgY3Jpc2lzIGRlICpDb3ZpZC0xOSosIGFkZW3DoXMgZGUgYWZlY3RhciBlY29uw7NtaWNhbWVudGUsIGhhIHRlbmlkbyB1biBpbXBhY3RvLCBlc3BlY2lhbG1lbnRlLCBtb2RpZmljYW5kbyBsYXMgcmVsYWNpb25lcyBzb2NpYWxlcyxkZSBtYW5lcmEgcXVlIHNlIGhhbiByYWxlbnRpemFkbyBsb3MgYXZhbmNlcyBlbiB0w6lybWlub3MgZGUgdmlvbGVuY2lhIGRlIGfDqW5lcm8uDQoNCkFudGUgZXN0YSBzaXR1YWNpw7NuLCBlcyBtdXkgaW1wb3J0YW50ZSBsbGV2YXIgYSBjYWJvIGFjY2lvbmVzIHkgbWVkaWRhcyBwYXJhIGRlZmVuZGVyIHkgYXNlZ3VyYXIgbGEgaWd1YWxkYWQgZGUgZ8OpbmVyby4gQWxndW5hcyBkZSBlbGxhcyBzb24sIGVuIHByaW1lciBsdWdhciwgY29uY2llbmNpYXIgYSBsYSBzb2NpZWRhZCwgYXPDrSBjb21vLCBtb3ZpbGl6YXIgYSBlc3RhLiBFbiBlc3RlIGNhc28sIHNlIHJlcXVpZXJlIGRlIHVuYSBtYXlvciB0cmFuc3BhcmVuY2lhIGEgbGEgaG9yYSBkZSBpbmZvcm1hciBzb2JyZSBlc3RhIHByb2JsZW3DoXRpY2EuIEFxdcOtLCBkZXNkZSBtaSBwdW50byBkZSB2aXN0YSwgcXVpZXJvIGRlc3RhY2FyIGVsIHRyYXRvIGRlIGxvcyBtZWRpb3MgZGUgY29tdW5pY2FjacOzbiBlbiBlc3RlIHRlbWEuIFlhIHF1ZSBzZSBlbGFib3JhbiBtdWNoYXMgbm90w61jaWFzIHJlbGFjaW9uYWRhcyBjb24gbGEgdmlvbGVuY2lhIGRlIGfDqW5lcm8gZG9uZGUsIHRhbnRvIGRlIG1hbmVyYSBpbmRpcmVjdGEgY29tbyBkZSBtYW5lcmEgZGlyZWN0YSAoZW4gZWwgdGl0dWxhciksIHNlIGhhbiBpbnRlcmNhbWJpYWRvIGxvcyBwYXBlbGVzIGxvcyBwYXJ0w61jaXBlcyBkZWwgaGVjaG8uIEVzIGRlY2lyLCBhbCBob21icmUsIG1lZGlhbnRlIGVsIGFydMOtY3VsbywgbGUgY29ycmVzcG9uZGUgZWwgcGFwZWwgZGUgdsOtY3RpbWEuIFtBcXXDrV0oaHR0cHM6Ly93d3cucGlrYXJhbWFnYXppbmUuY29tLzIwMTkvMTIvbWFjaGlzbW8teS1tZWRpb3MtbG8tcGVvci1kZS0yMDE5LykgcG9kw6lpcyBlbmNvbnRyYXIgYWxndW5vcyBkZSBsb3MgZWplbXBsb3MuDQoNCkRlIGVzdG8gZGVyaXZhIHRhbWJpw6luLCBsYSBuZWNlc2lkYWQgZGUgZWR1Y2FyIGEgbGEgcG9ibGFjacOzbiBiYWpvIHVuIGxlbmd1YWplIGluY2x1c2l2bywgZWxpbWluYXIgbG9zIG1pY3JvbWFjaGlzbW9zLCBpbnZlcnRpciBlbiBsYSBpZ3VhbGRhZCBlbnRyZSBsb3MgZ8OpbmVyb3MgeSBwb3RlbmNpYXIgZWwgZW1wb2RlcmFtaWVudG8gZGUgbGFzIG11amVyZXMuIFlhIHF1ZSwgZGUgdW5hIGZvcm1hIHUgb3RyYSwgc2UgdGllbmRlIGEganVzdGlmaWNhciBhbCBtYWx0cmF0YWRvciB5IGEgY3VscGFiaWxpemFyIGEgbGEgdsOtY3RpbWEsIGNvbW8gc2UgcHVlZGUgbW9zdHJhciBlbiBlbCBlamVtcGxvIGFudGVyaW9yLg0KQSBzdSB2ZXosIHRhbWJpw6luIHNlIHJlcXVpZXJlIGRlIHZvbHVudGFkIHBvbMOtdGljYSBlbiBlc3RhIGN1ZXN0acOzbi4gTWVkaWFudGUgcG9sw610aWNhcyBkZSBpbnNlcmNpw7NuLCBsYSBpbXBsYW50YWNpw7NuIHVuIHNpc3RlbWEgZWR1Y2F0aXZvIGlndWFsaXRhcmlvLGFzw60gY29tbywgYWRhcHRhciB5IGNyZWFyIGxleWVzIHF1ZSBwcm90ZWphbiBsb3MgZGVyZWNob3MgZGUgbGFzIG11amVyZXMsIGEgbGEgdmV6IHF1ZSBlc3RhcyBhc2VndXJlbiBxdWUgc2UgaGFnYSBqdXN0w61jaWEuDQoNCkZpbmFsbWVudGUsIHN1YnJheWFyIHF1ZSBlbCBkaWEgMjUgZGUgbm92aWVtYnJlIGVzIGVsIGTDrWEgaW50ZXJuYWNpb25hbCBkZSBsYSAqRWxpbWluYWNpw7NuIGRlIGxhIFZpb2xlbmNpYSBjb250cmEgbGEgTXVqZXIqLiBEdXJhbnRlIGVzdGEgam9ybmFkYSwgc2UgcmVhbGl6YW4gY2FtcGHDsWFzIGRlIHNlbnNpYmlsaXphY2nDs24geSBhcG95byBhIGxhcyB2w61jdGltYXMgZGUgdmlvbGVuY2lhIGRlIGfDqW5lcm8sIGFzw60gY29tbyBtYW5pZmVzdGFjaW9uZXMgbXVsdGl0dWRpbmFyaWFzIGNvbiBlbCBvYmpldGl2byBkZSBlcnJhZGljYXIgZXN0YSBpbmp1c3RpY2lhIHNvY2lhbC4NCg0KYGBge3IsIGV2YWw9VFJVRSwgZWNobz1GQUxTRX0NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIuL2ltYWdlbmVzLzI1Ti5qcGciKQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIi4vaW1hZ2VuZXMvbWFuaWZlc3RhY2lvbi5qcGciKQ0KYGBgDQo8Q0VOVEVSPkZvdG8gMTogKlByb21vdG9yYXMgZW4gYWNjacOzbio8L0NFTlRFUj4NCjxDRU5URVI+Rm90byAyOiAqTGFzIFByb3bDrW5jaWFzKjwvQ0VOVEVSPg0KDQojIDxGT05UIENPTE9SPSAiZTA0N2IxIj4gKio1LiBUcmFiYWpvcyBpbnNwaXJhZG9zKiogPC9GT05UPg0KDQpMb3MgdHJhYmFqb3MgeSBoZXJyYW1pZW50YXMgcXVlIHNlIGhhIGJhc2FkbyBwYXJhIHJlYWxpemFyIGVzdGUgaW5mb3JtZSBzb24gbG9zIHNpZ3VpZW50ZXM6DQoNCi0gW1R1dG9yaWFsZXMgcHJvZ3JhbWFjacOzbiB5IG1hbmVqbyBkZSBkYXRvc10oaHR0cHM6Ly9wZXJlenA0NC5naXRodWIuaW8vaW50cm8tZHMtMjAtMjEtd2ViLzA0LXR1dG9yaWFsZXMuaHRtbCkNCi0gW1IgZ3JhcGggZ2FsbGVyeV0oaHR0cHM6Ly93d3cuci1ncmFwaC1nYWxsZXJ5LmNvbS9pbmRleC5odG1sKQ0KDQoNCiMgPEZPTlQgQ09MT1I9ICJlMDQ3YjEiPiAqKjUuIEJpYmxpb2dyYWZpYSoqIDwvRk9OVD4NCg0KTGEgaW5mb3JtYWNpw7NuIHkgZGF0b3MgZW1wbGVhZG9zOg0KDQotIFtPcmdhbml6YWNpw7NuIE11bmRpYWwgZGUgbGEgU2FsdWRdKGh0dHBzOi8vcnN0dWRpby5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTUvMDQvZ2dwbG90Mi1zcGFuaXNoLnBkZikNCi0gW1Byb2dyYW1hIGRlIGxhcyBOYWNpb25lcyBVbmlkYXMgcGFyYSBlbCBEZXNhcnJvbGxvXShodHRwczovL3d3dy51bmRwLm9yZy9jb250ZW50L3VuZHAvZXMvaG9tZS9nZW5kZXItZXF1YWxpdHkvZ2VuZGVyLWJhc2VkLXZpb2xlbmNlLmh0bWwpDQotIFtJbnN0aXR1dG8gZGUgbGEgbXVqZXIgeSBwYXJhIGxhIElndWFsZGFkIGRlIE9wb3J0dW5pZGFkZXNdKGh0dHBzOi8vd3d3LmlubXVqZXIuZ29iLmVzL3NlcnZSZWN1cnNvcy9mb3JtYWNpb24vUHltZXMvZG9jcy9JbnRyb2R1Y2Npb24vMDJfRGVmaW5pY2lvbl9kZV92aW9sZW5jaWFfZGVfZ2VuZXJvLnBkZikNCi0gW0RlbGVnYWNpw7NuIGRlbCBHb2JpZXJubyBjb250cmEgbGEgVmlvbGVuY2lhIGRlIEfDqW5lcm9dKGh0dHBzOi8vdmlvbGVuY2lhZ2VuZXJvLmlndWFsZGFkLmdvYi5lcy92aW9sZW5jaWFFbkNpZnJhcy9ob21lLmh0bSkNCg0KDQoNCg0KPGRpdiBjbGFzcyA9ICJjYWphLW1lZGl1bS1hcXVhbWFyaW5lIj4NCiANCjwvZGl2Pg0KDQo8YnI+DQoNCjxkaXYgY2xhc3MgPSAiY2FqYS1jcmltc29uIj4NCiANCjwvZGl2Pg0KDQo8YnI+DQoNCjxkaXYgY2xhc3MgPSAiY2FqYS1kYXJra2hha2kiPg0KDQo8L2Rpdj4NCg0KDQo8YnI+DQoNCjxkaXYgY2xhc3MgPSAiY2FqYS1saW5lYS12ZXJkZSI+DQoNCjwvZGl2Pg0KDQoNCjxicj4NCg0KPGhyIGNsYXNzPSJsaW5lYS1yZWQiPg0KDQoNCjxkaXYgY2xhc3MgPSAiY2FqYS1ncmlzLWdhaW5ib3JvIj4NCg0KPC9kaXY+DQoNCg0K