INTRODUCCIÓN
La precipitación es una variable espacial continua , que se estima a partir de procesos de interpolación espacial,pues se parte de los valores conocidos o muestras en puntos como las estaciones meteorologicas para obtener el valor de esta en todo un territorio.
Sabiendo que, el agua es un factor de producción y en muchas ocasiones limitante en las actividades agrícolas es importante llevar a cabo tareas de interpolación espacial que se adapten a la distribución de los datos para entender de forma correcta la variación de factores como la precipitación ,la humedad y el clima y evitar impactos a nivel social o económico. Sin embargo, en Colombia en número de estaciones meteorológicas es reducida, además no se encuentran distribuidas de forma uniforme, lo que limita el acceso a los datos de estas variables y sugiere una búsqueda de alternativas que puedan ser empleadas en los distintos métodos de interpolación. Debido a esto, el objetivo de este informe es aplicar las herramientas de R para realizar tareas de interpolación espacial con los datos de precipitación CHIRPS para el departamento de Vichada.
ZONA DE ESTUDIO
El departamento de Vichada se encuentra ubicado en la región Orinoquia, al oriente del país. Su localización está dada por las coordenadas 4° 26´ N 69° 18´ W y altitud 144 m. s. n. m . Limita por el Norte con el río Meta que lo separa de los departamentos de Casanare, Arauca y la República de Venezuela; Por el Este con el río Orinoco; Por el Oeste con Meta y Casanare y por el Sur con el río Guaviare, que lo separa de los departamentos de Guainía y Guaviare(González, 2005).Está conformado por 4 municipios (Puerto Carreño, Cumaribo, Santa Rosalía y La Primavera). Es el segundo departamento más grande de Colombia ocupando el 8.7% del territorio nacional con una extensión territorial de 105.947Km2 y una población aproximada para el 2020 de 112.958 habitantes según la proyección poblacional del DANE. (Universidad Nacional de Colombia sede Orinoquia, 2018)
El territorio del departamento de Vichada corresponde a la región de los Llanos Orientales, en ella se distingue cuatro conjuntos fisiográficos: La llanura aluvial de desborde de la Orinoquia en Puerto Carreño y la primavera, la altillanura de la Orinoquia que ocupa casi toda la extensión del departamento, la franja de aluviones de los grandes ríos y el escudo Guayanés en zonas alejadas hacia el oriente.(González, 2005) La temperatura en el departamento varía entre los 25 °C y 36 °C, según el periodo del año. Se distinguen tres áreas pluviométricas en el departamento: La más seca, hacia el norte, con una precipitación promedio anual menor a 1.500 mm; una franja intermedia, al centro y norte del territorio que presenta lluvias anuales entre 1.500 y 2.000 mm; Mientras que la zona más lluviosa, al sur, registra promedios anuales superiores a 2.000 mm. El régimen de lluvias es básicamente monomodal, con una temporada húmeda que comprende los meses de abril a octubre. (INCODER, 2012)
DATOS Y MÉTODOS
CHIRPS
CHIRPS (Climate Hazards Group InfraRed Precipitation with Station data) , es una base de datos de precipitación disponible al público desde 2014 creada por el Servicio Geológico de los Estados Unidos (USGS por sus siglas en inglés) y la Universidad de California - Santa Bárbara (UCSB) ; Usa como fuentes de datos: Climatologías de precipitación mensual (CHPclim), observaciones satelitales de sensores Infrarojo Geoestacionarios, datos de precipitaciones estimadas por la NOAA (CFSv2) y datos observados en superficie proporcionados por servicios meteorológicos (Funk et al., 2014).
Esta base de datos , tiene disponible información de la precipitación desde el año 1981 hasta la fecha con una resolución espacial de de 0.05º (Aproximadamente 5Km) para los lugares comprendidos entre los 50º de latitud norte y 50º de latitud sur en todas las longitudes .La precipitación viene dada en mm totales por intervalo de tiempo , debido a que estos datos están disponibles de forma diaria, pentadiaria (Cada 5 Días),mensual y anual (Funk et al., 2015). Para este trabajo , la información pentadiaria del 26 al 30 de abril de 2020 fue descargada en formato ráster (.tif) y se hizo uso de las funcionalidades de R Anexo 1 para transformarla en datos vectoriales (puntos) y reproyectarlas en coordenadas planas (MAGNA-SIRGAS), teniendo en cuenta que es más recomendable para realizar las tareas de interpolación y que los datos descargados se encontraban en coordenadas geográficas (DATUM WGS84).En la figura 2 se pueden ver los puntos que serán usados para realizar las tareas de interpolación
Métodos de Interpolación
La interpolación espacial consiste en estimar el valor de un atributo de un sitio no medido a través de los valores conocidos de un conjunto de datos que están distribuidos en el área de estudio.(Burrough, P.A. y McDonnell 1998 citado en Bautista et al., 2017). Con la interpolación se crean superficies continuas a través de diferentes métodos.Para este informe, los métodos de interpolación espacial seleccionados fueron : Poligonos de Thiessen Distancia Inversa Ponderada (IDW) y Kriging
Poligonos de Thiessen : Los poligonos de thiessen hacen parte de los métodos locales de interpolación. En este método de interpolación la estimación se hace a través de los valores de los puntos más cercanos y se basa en ponderar el valor que toma una variable en función de un área de influencia que viene determinada según la forma en que estén trazados los polígonos.Para determinar las áreas de influencia de cada uno de los puntos, cada punto se une con los más cercanos y posteriormente se trazan las mediatrices de estas uniones (Moreano,2008) .Cuando los puntos están distribuidos de forma regular , los poligonos resultantes de esta interpolación son cuadrados del mismo tamaño (Burrough, P.A. y McDonnell 1998 citado en Bautista, 2017),por tanto para aplicar este método se tomó una muestra aleatoria que suma el 60% de los datos Anexo 2 .
Distancia Inversa Ponderada (IDW): En este modelo, se estima el valor del punto de interés utilizando una combinación lineal de pesos relativos , que se determinan a partir del inverso de la distancia. Anexo 3 . En este tipo de interpolación a medida que la distancia se incrementa entre el punto de valor conocido y el que va a ser interpolado, la ponderación asociada con el valor muestreado decrece, es decir este método asigna un peso más alto a los puntos más cercanos que a aquellos que se encuentran más alejados (Toro y Melo, 2009 citado en Castro et al., 2017 ).La fórmula para estimar el valor mediante este método es la siguiente

Kriging Universal
El Kriging Universal es un método de interpolación geoestadístico que incorpora un modelo matematico para describir la variación espacial de los datos a través de una varianza que viene de una distancia dada entre pares de puntos y su representación gráfica : El semivariograma o variograma que se ajusta a un modelo teórico con parámetros como : Sill,Que hace referencia al valor asintótico de la varianza , nugguet: Que hace referencia a una varianza aleatoria y al valor que toma esta cuando la distancia es cero y el rango que es la máxima distancia en la cual un atributo es dependiente (Bautista et al., 2017).En específico el método de Kriging universal incorpora una tendencia de superficie local Anexo 4;La fórmula general para el método Kriging es:

RESULTADOS
Interpolación polígonos de Thiessen
El resultado obtenido para el método de interpolación con polígonos de Thiessen se muestan en la Figura 3
Método Inversa distancia ponderada
Al usar las funcionalidades del programa R para realizar este método de interpolación se obtiene el resultado que se muestra en la figura 4
Kriging Luego de encontrar un modelo de variograma que se ajustara a los datos y realizar el método de interpolación “Universal Kriging” en el anexo número 4 , se obtiene el resultado de la figura número 5
ANÁLISIS DE RESULTADOS
Poligonos de thiessen
La interpolación con poligonos de Thiessen muestra que la precipitación tiene una tendencia a aumentar hacia el sur , estimando valores de precipitación más altos hacia el sur de Cumaribo.Sin embargo, al hacer la muestra del 60% de los datos para realizar la tarea de interpolación hay puntos dentro de la misma no hay una manera de determinar a nivel general el error asociado a este método , por tanto las posibles falencias que pueda llegar a tener la estimación de este método son debido al número y la distribución de los puntos .
Validación Cruzada para método de distancia inversa ponderada
En el método de la distancia inversa ponderada , el valor que se le asigna a la potencia p es arbitrario , por tanto ese seria uno de los primeros factores asociados al error del método. Sin embargo , se hizo uso de la validación por omisión y el error cuadratico medio para poder elegir el valor de potencia que mas se ajustara a los datos.
El gráfico número 6 corresponde al diagrama de dispersión entre los datos observados y los datos estimados de precipitación.Allí se puede ver que el modelo se ajusta a la línea de referencia .
Además , el cálculo del error cuadrático medio dió un resultado de 2.234104 , lo que sugiere que el método de la distancia inversa ponderada con una potencia de 3 puede ser un buen interpolador considerando que los datos obtenidos para precipitación en Vichada varian de 0.4mm a 85mm Aún así , al usar un intervalo de confianza del 95% al 5% de datos de la muestra para la estimación de errores (Anexo 3) , da un rango con un valor mayor al del parámetro anterior .
Además podemos decir que para la distribución que fue evaluado el método parece funcionar mejor que la interpolación por poligonos de Thiessen, pues, se puede observar mejor la variación que tiene la precipitación en la parte central del departamento.Sin embargo por las condiciones iniciales del modelo mismo, al evaluarse para datos con una distribución irregular podria disminuir su exactitud
Kriging
El modelo de variograma que mejor se ajusta a los datos de precipitación para el departamento de vichada es de tipo gaussiano , pues puede apreciarse como los valores de semivarianza parecen tender a una distribución normal, este tipo de variograma varía más suavemente que los variogramas de tipo exponencial o esférico lo que sugiere una mayor relación con los puntos mas cercanos y contuinidad espacial
La figura número 8 , muestra los valores de varianza en mm2 encontrados para este método de interpolación
Los valores del mapa de la figura número 9 , representan la evaluación con un intervalo de confianza del 95% para el método de interpolación alli podemos ver que pueden ocurrir subestimaciones o sobreestimaciones para los valores de precipitación en un orden de los 5 mm .
Dado estos valores en la varianza y en los intervalos de confianza se puede afirmar que estos no suponen un error muy alto si se considera la variación que se presenta desde las muestras. Vemos entonces que los tres métodos de interpolación son coherentes con la información previa que se tenia de la zona de estudio , pues tanto en la interpolación con poligonos de Thiessen , distancia inversa ponderada y Universal Kriging se ven marcadas las zonas de precipitación alta , madia y baja para el departamento del Vichada. Aún así se ve marcada la diferencia en la estimación de valores con el método de los poligonos de thiessen , frente a las otras 2 técnicas de interpolación.
CONCLUSIONES
Considerando la estimación de los errores para cada método de interpolación, se concluye que tanto el método Kriging como el método de distancia inversa ponderada arrojan resultados similares para este conjunto de datos y logran hacer una buena estimación de los valores de precipitación , siendo el mejor método para este caso particular el de la distancia inversa ponderada , pues genera los mismos resultados de una manera más sencilla
Las principales fuentes de error en los métodos de interpolación , provienen de la distribución y la cantidad de datos , por tanto el número reducido de estaciones metereológicas en el país puede ser un limitante para llevar a cabo esta tarea.Sin embargo, datos satelitales como CHIRPS pueden ser una alternativa para producir mejores resultados
REFERENCIAS
Burrough, P.A. y McDonnell, R.A. (1998). Principles of Geographical Information Systems. Oxford University Press, New York. ISBN 978-90-9024981-0.
Bautista Zúñiga, F., Palacio Prieto, J. L., Delfín González, H., & Paéz Bistrain, R. (Eds.). (2011). Técnicas de muestreo para manejadores de recursos naturales (2. ed). Universidad Nacional Autónoma de México.
Castro, M., García, D. y Jiménez, A. (2017). Comparación de técnicas de interpolación espacial de propiedades del suelo en el piedemonte llanero colombiano. Revista Tecnura, 21(53), 78-95, doi: 10.14483/udis¬trital.jour.tecnura.2017.3.a05
Funk, C.C., Peterson, P.J., Landsfeld, M.F., Pedreros, D.H., Verdin, J.P., Rowland, J.D., Romero, B.E., Husak, G.J., Michaelsen, J.C., and Verdin, A.P. (2014). A quasi-global precipitation time series for drought monitoring: U.S. Geological Survey Data Series 832, 4 p., http://dx.doi.org/10.3133/ds832.
Funk, C., Peterson, P., Landsfeld, M., Pedreros, D., Verdin, J., Shukla, S., Husak, G., Rowland, J., Harrison, L., Hoell, A., & Michaelsen, J. (2015). The climate hazards infrared precipitation with stations—A new environmental record for monitoring extremes. Scientific Data, 2(1), 150066. https://doi.org/10.1038/sdata.2015.66
González, H. (2005). Evolución del sector agrícola en el departamento del meta y los llanos orientales 1991 – 2003 Consultado en : https://www.banrep.gov.co/documentos/publicaciones/regional/ESER/villavicencio/2005_septiembre_a.pdf
INCODER - Corporación Latinoamericana Misión Rural. (2012). Caracterización socioeconómica, ambiental y de tenencia de la tierra Informe final, Diciembre 2012.Consultado en : http://www.misionrural.net/fscommand/ambiental.pdf Li, J., & Geoscience Australia. (2008). A review of spatial interpolation methods for environmental scientists. Geoscience Australia.
Moreano, R. 2008.Sistema de información para la interpolación espacial y temporal de datos sobre el tiempo atmosférico y el clima de Ecuador.Escuela Politécnica Nacional. Recuperado de: https://bibdigital.epn.edu.ec/bitstream/15000/719/1/CD-1664%282008-09-15-10-33-24%29.pdf. Toro, G., y Melo, C. (2009). Aplicación de métodos de interpolación geoestadísticos para la predicción de niveles digitales de una imagen satelital con líneas perdidas y efecto sal y pimienta. Revista Tecnura, 12(24), 55-67.
Universidad Nacional de Colombia sede Orinoquia. (2018). Diagnóstico Departamento de Vichada. Consultado en http://orinoquia.unal.edu.co/fileadmin/user_upload/Diagnostico_Departamento__Vichada.pdf
LS0tCnRpdGxlOiAiSW50ZXJwb2xhY2nDs24gZXNwYWNpYWwgcGFyYSBkYXRvcyBkZSBQcmVjaXBpdGFjacOzbiBlbiBWaWNoYWRhIgphdXRob3I6IEFuZ2llIEFsZWphbmRyYSBKdXlvIEJ1aXRyYWdvCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnkiPgojIyMjICoqSU5UUk9EVUNDScOTTioqCgpMYSBwcmVjaXBpdGFjacOzbiBlcyB1bmEgdmFyaWFibGUgZXNwYWNpYWwgY29udGludWEgLCBxdWUgc2UgZXN0aW1hIGEgcGFydGlyIGRlIHByb2Nlc29zIGRlIGludGVycG9sYWNpw7NuIGVzcGFjaWFsLHB1ZXMgc2UgcGFydGUgZGUgbG9zIHZhbG9yZXMgY29ub2NpZG9zIG8gbXVlc3RyYXMgZW4gcHVudG9zIGNvbW8gbGFzIGVzdGFjaW9uZXMgbWV0ZW9yb2xvZ2ljYXMgcGFyYSBvYnRlbmVyIGVsIHZhbG9yIGRlIGVzdGEgZW4gdG9kbyB1biB0ZXJyaXRvcmlvLgoKU2FiaWVuZG8gcXVlLCBlbCBhZ3VhIGVzIHVuIGZhY3RvciBkZSBwcm9kdWNjacOzbiB5IGVuIG11Y2hhcyBvY2FzaW9uZXMgbGltaXRhbnRlIGVuIGxhcyBhY3RpdmlkYWRlcyBhZ3LDrWNvbGFzIGVzIGltcG9ydGFudGUgbGxldmFyIGEgY2FibyB0YXJlYXMgZGUgaW50ZXJwb2xhY2nDs24gZXNwYWNpYWwgcXVlIHNlIGFkYXB0ZW4gYSBsYSBkaXN0cmlidWNpw7NuIGRlIGxvcyBkYXRvcyBwYXJhIGVudGVuZGVyIGRlIGZvcm1hIGNvcnJlY3RhIGxhIHZhcmlhY2nDs24gZGUgZmFjdG9yZXMgY29tbyBsYSBwcmVjaXBpdGFjacOzbiAsbGEgaHVtZWRhZCB5IGVsIGNsaW1hIHkgZXZpdGFyIGltcGFjdG9zIGEgbml2ZWwgc29jaWFsIG8gZWNvbsOzbWljby4gU2luIGVtYmFyZ28sIGVuIENvbG9tYmlhIGVuIG7Dum1lcm8gZGUgZXN0YWNpb25lcyBtZXRlb3JvbMOzZ2ljYXMgZXMgcmVkdWNpZGEsIGFkZW3DoXMgbm8gc2UgZW5jdWVudHJhbiBkaXN0cmlidWlkYXMgZGUgZm9ybWEgdW5pZm9ybWUsIGxvIHF1ZSBsaW1pdGEgZWwgYWNjZXNvIGEgbG9zIGRhdG9zIGRlIGVzdGFzIHZhcmlhYmxlcyB5IHN1Z2llcmUgdW5hIGLDunNxdWVkYSBkZSBhbHRlcm5hdGl2YXMgcXVlIHB1ZWRhbiBzZXIgZW1wbGVhZGFzIGVuIGxvcyBkaXN0aW50b3MgbcOpdG9kb3MgZGUgaW50ZXJwb2xhY2nDs24uIERlYmlkbyBhIGVzdG8sIGVsIG9iamV0aXZvIGRlIGVzdGUgaW5mb3JtZSBlcyBhcGxpY2FyIGxhcyBoZXJyYW1pZW50YXMgZGUgUiBwYXJhIHJlYWxpemFyIHRhcmVhcyBkZSBpbnRlcnBvbGFjacOzbiBlc3BhY2lhbCBjb24gbG9zIGRhdG9zIGRlIHByZWNpcGl0YWNpw7NuIENISVJQUyBwYXJhIGVsIGRlcGFydGFtZW50byBkZSBWaWNoYWRhLgoKCiMjIyMgKipaT05BIERFIEVTVFVESU8qKgoKCgpFbCAgZGVwYXJ0YW1lbnRvIGRlIFZpY2hhZGEgc2UgZW5jdWVudHJhIHViaWNhZG8gZW4gbGEgcmVnacOzbiBPcmlub3F1aWEsIGFsIG9yaWVudGUgZGVsIHBhw61zLiBTdSBsb2NhbGl6YWNpw7NuIGVzdMOhIGRhZGEgcG9yIGxhcyBjb29yZGVuYWRhcyAgNMKwIDI2wrQgTiAgNjnCsCAxOMK0IFcgeSBhbHRpdHVkIDE0NCBtLiBzLiBuLiBtICAuIExpbWl0YSBwb3IgZWwgTm9ydGUgY29uIGVsIHLDrW8gTWV0YSBxdWUgbG8gc2VwYXJhIGRlIGxvcyBkZXBhcnRhbWVudG9zIGRlIENhc2FuYXJlLCBBcmF1Y2EgeSBsYSBSZXDDumJsaWNhIGRlIFZlbmV6dWVsYTsgUG9yIGVsIEVzdGUgY29uIGVsIHLDrW8gT3Jpbm9jbzsgUG9yIGVsIE9lc3RlIGNvbiBNZXRhIHkgQ2FzYW5hcmUgeSBwb3IgZWwgU3VyIGNvbiBlbCByw61vIEd1YXZpYXJlLCBxdWUgbG8gc2VwYXJhIGRlIGxvcyBkZXBhcnRhbWVudG9zIGRlIEd1YWluw61hIHkgR3VhdmlhcmUoR29uesOhbGV6LCAyMDA1KS5Fc3TDoSBjb25mb3JtYWRvIHBvciA0IG11bmljaXBpb3MgKFB1ZXJ0byBDYXJyZcOxbywgQ3VtYXJpYm8sIFNhbnRhIFJvc2Fsw61hIHkgTGEgUHJpbWF2ZXJhKS4gRXMgZWwgc2VndW5kbyBkZXBhcnRhbWVudG8gbcOhcyBncmFuZGUgZGUgQ29sb21iaWEgb2N1cGFuZG8gZWwgOC43JSBkZWwgdGVycml0b3JpbyBuYWNpb25hbCBjb24gdW5hIGV4dGVuc2nDs24gdGVycml0b3JpYWwgZGUgMTA1Ljk0N0ttMiB5IHVuYSBwb2JsYWNpw7NuIGFwcm94aW1hZGEgcGFyYSBlbCAyMDIwIGRlIDExMi45NTggaGFiaXRhbnRlcyBzZWfDum4gbGEgcHJveWVjY2nDs24gcG9ibGFjaW9uYWwgZGVsIERBTkUuIChVbml2ZXJzaWRhZCBOYWNpb25hbCBkZSBDb2xvbWJpYSBzZWRlIE9yaW5vcXVpYSwgMjAxOCkKCgpFbCB0ZXJyaXRvcmlvIGRlbCBkZXBhcnRhbWVudG8gZGUgVmljaGFkYSBjb3JyZXNwb25kZSBhIGxhIHJlZ2nDs24gZGUgbG9zIExsYW5vcyBPcmllbnRhbGVzLCBlbiBlbGxhIHNlIGRpc3Rpbmd1ZSBjdWF0cm8gY29uanVudG9zIGZpc2lvZ3LDoWZpY29zOiBMYSBsbGFudXJhIGFsdXZpYWwgZGUgZGVzYm9yZGUgZGUgbGEgT3Jpbm9xdWlhIGVuIFB1ZXJ0byBDYXJyZcOxbyB5IGxhIHByaW1hdmVyYSwgbGEgYWx0aWxsYW51cmEgZGUgbGEgT3Jpbm9xdWlhIHF1ZSBvY3VwYSBjYXNpIHRvZGEgbGEgZXh0ZW5zacOzbiBkZWwgZGVwYXJ0YW1lbnRvLCBsYSBmcmFuamEgZGUgYWx1dmlvbmVzIGRlIGxvcyBncmFuZGVzIHLDrW9zIHkgZWwgZXNjdWRvIEd1YXlhbsOpcyBlbiB6b25hcyBhbGVqYWRhcyBoYWNpYSBlbCBvcmllbnRlLihHb256w6FsZXosIDIwMDUpIExhIHRlbXBlcmF0dXJhIGVuIGVsIGRlcGFydGFtZW50byB2YXLDrWEgZW50cmUgbG9zIDI1IMKwQyB5IDM2IMKwQywgc2Vnw7puIGVsIHBlcmlvZG8gZGVsIGHDsW8uIFNlIGRpc3Rpbmd1ZW4gdHJlcyDDoXJlYXMgcGx1dmlvbcOpdHJpY2FzIGVuIGVsIGRlcGFydGFtZW50bzogTGEgbcOhcyBzZWNhLCBoYWNpYSBlbCBub3J0ZSwgY29uIHVuYSBwcmVjaXBpdGFjacOzbiBwcm9tZWRpbyBhbnVhbCBtZW5vciBhIDEuNTAwIG1tOyB1bmEgZnJhbmphIGludGVybWVkaWEsIGFsIGNlbnRybyB5IG5vcnRlIGRlbCB0ZXJyaXRvcmlvIHF1ZSBwcmVzZW50YSBsbHV2aWFzIGFudWFsZXMgZW50cmUgMS41MDAgeSAyLjAwMCBtbTsgTWllbnRyYXMgcXVlIGxhIHpvbmEgbcOhcyBsbHV2aW9zYSwgYWwgc3VyLCByZWdpc3RyYSBwcm9tZWRpb3MgYW51YWxlcyBzdXBlcmlvcmVzIGEgMi4wMDAgbW0uIEVsIHLDqWdpbWVuIGRlIGxsdXZpYXMgZXMgYsOhc2ljYW1lbnRlIG1vbm9tb2RhbCwgY29uIHVuYSB0ZW1wb3JhZGEgaMO6bWVkYSBxdWUgY29tcHJlbmRlIGxvcyBtZXNlcyBkZSBhYnJpbCBhIG9jdHVicmUuIChJTkNPREVSLCAyMDEyKSAKCjxjZW50ZXI+CgohWyAqKkZpZ3VyYSAxKiogOlpvbmEgZGUgZXN0dWRpbyAoSUdBQyldKEFDLnBuZykKCjwvY2VudGVyPgoKIyMjIyAqKkRBVE9TIFkgTcOJVE9ET1MqKgoKCioqQ0hJUlBTKioKCgpDSElSUFMgKENsaW1hdGUgSGF6YXJkcyBHcm91cCBJbmZyYVJlZCBQcmVjaXBpdGF0aW9uIHdpdGggU3RhdGlvbiBkYXRhKSAsIGVzIHVuYSBiYXNlIGRlIGRhdG9zIGRlIHByZWNpcGl0YWNpw7NuIGRpc3BvbmlibGUgYWwgcMO6YmxpY28gZGVzZGUgMjAxNCBjcmVhZGEgcG9yIGVsIFNlcnZpY2lvIEdlb2zDs2dpY28gZGUgbG9zIEVzdGFkb3MgVW5pZG9zIChVU0dTIHBvciBzdXMgc2lnbGFzIGVuIGluZ2zDqXMpIHkgbGEgVW5pdmVyc2lkYWQgZGUgQ2FsaWZvcm5pYSAtIFNhbnRhIELDoXJiYXJhIChVQ1NCKSA7IFVzYSBjb21vIGZ1ZW50ZXMgZGUgZGF0b3M6IENsaW1hdG9sb2fDrWFzIGRlIHByZWNpcGl0YWNpw7NuIG1lbnN1YWwgKENIUGNsaW0pLCBvYnNlcnZhY2lvbmVzIHNhdGVsaXRhbGVzIGRlIHNlbnNvcmVzIEluZnJhcm9qbyBHZW9lc3RhY2lvbmFyaW9zLCBkYXRvcyBkZSBwcmVjaXBpdGFjaW9uZXMgZXN0aW1hZGFzIHBvciBsYSBOT0FBIChDRlN2MikgeSBkYXRvcyBvYnNlcnZhZG9zIGVuIHN1cGVyZmljaWUgcHJvcG9yY2lvbmFkb3MgcG9yIHNlcnZpY2lvcyBtZXRlb3JvbMOzZ2ljb3MgKEZ1bmsgZXQgYWwuLCAyMDE0KS4KCkVzdGEgYmFzZSBkZSBkYXRvcyAsIHRpZW5lIGRpc3BvbmlibGUgaW5mb3JtYWNpw7NuIGRlIGxhIHByZWNpcGl0YWNpw7NuIGRlc2RlIGVsIGHDsW8gMTk4MSBoYXN0YSBsYSBmZWNoYSBjb24gdW5hIHJlc29sdWNpw7NuIGVzcGFjaWFsIGRlICBkZSAwLjA1wrogKEFwcm94aW1hZGFtZW50ZSA1S20pIHBhcmEgbG9zIGx1Z2FyZXMgY29tcHJlbmRpZG9zIGVudHJlIGxvcyA1MMK6IGRlIGxhdGl0dWQgbm9ydGUgeSA1MMK6IGRlIGxhdGl0dWQgc3VyIGVuIHRvZGFzIGxhcyBsb25naXR1ZGVzIC5MYSBwcmVjaXBpdGFjacOzbiB2aWVuZSBkYWRhIGVuIG1tIHRvdGFsZXMgcG9yIGludGVydmFsbyBkZSB0aWVtcG8gLCBkZWJpZG8gYSBxdWUgZXN0b3MgZGF0b3MgZXN0w6FuIGRpc3BvbmlibGVzIGRlIGZvcm1hIGRpYXJpYSwgcGVudGFkaWFyaWEgKENhZGEgNSAgRMOtYXMpLG1lbnN1YWwgeSBhbnVhbCAoRnVuayBldCBhbC4sIDIwMTUpLiBQYXJhIGVzdGUgdHJhYmFqbyAsIGxhIGluZm9ybWFjacOzbiBwZW50YWRpYXJpYSBkZWwgMjYgYWwgMzAgZGUgYWJyaWwgZGUgMjAyMCBmdWUgZGVzY2FyZ2FkYSBlbiBmb3JtYXRvIHLDoXN0ZXIgKC50aWYpIHkgc2UgaGl6byB1c28gZGUgbGFzIGZ1bmNpb25hbGlkYWRlcyBkZSBSIFtBbmV4byAxXShodHRwczovL3JwdWJzLmNvbS9BanV5by9EYXRvc19DSElSUFMpIHBhcmEgdHJhbnNmb3JtYXJsYSBlbiBkYXRvcyB2ZWN0b3JpYWxlcyAocHVudG9zKSB5IHJlcHJveWVjdGFybGFzIGVuIGNvb3JkZW5hZGFzIHBsYW5hcyAoTUFHTkEtU0lSR0FTKSwgdGVuaWVuZG8gZW4gY3VlbnRhIHF1ZSBlcyBtw6FzIHJlY29tZW5kYWJsZSBwYXJhIHJlYWxpemFyIGxhcyB0YXJlYXMgZGUgaW50ZXJwb2xhY2nDs24geSBxdWUgbG9zIGRhdG9zIGRlc2NhcmdhZG9zIHNlIGVuY29udHJhYmFuIGVuIGNvb3JkZW5hZGFzIGdlb2dyw6FmaWNhcyAoREFUVU0gV0dTODQpLkVuIGxhIGZpZ3VyYSAyIHNlIHB1ZWRlbiB2ZXIgbG9zIHB1bnRvcyBxdWUgc2Vyw6FuIHVzYWRvcyBwYXJhIHJlYWxpemFyIGxhcyB0YXJlYXMgZGUgaW50ZXJwb2xhY2nDs24KCjxjZW50ZXI+CgohWyAqKkZpZ3VyYSAyKiogOiBQdW50b3MgZGUgcHJlY2lwaXRhY2nDs24gcGFyYSBWaWNoYWRdKFB1bnRvc2RlY29sb3Jlcy5wbmcpCgo8L2NlbnRlcj4KCgoqKk3DqXRvZG9zIGRlIEludGVycG9sYWNpw7NuKiogCgpMYSBpbnRlcnBvbGFjacOzbiBlc3BhY2lhbCBjb25zaXN0ZSBlbiBlc3RpbWFyIGVsIHZhbG9yIGRlIHVuIGF0cmlidXRvIGRlIHVuIHNpdGlvIG5vIG1lZGlkbyBhIHRyYXbDqXMgZGUgbG9zIHZhbG9yZXMgY29ub2NpZG9zIGRlIHVuIGNvbmp1bnRvIGRlIGRhdG9zIHF1ZSBlc3TDoW4gZGlzdHJpYnVpZG9zIGVuIGVsIMOhcmVhIGRlIGVzdHVkaW8uKEJ1cnJvdWdoLCBQLkEuIHkgTWNEb25uZWxsIDE5OTggY2l0YWRvIGVuIEJhdXRpc3RhIGV0IGFsLiwgMjAxNykuIENvbiBsYSBpbnRlcnBvbGFjacOzbiBzZSBjcmVhbiBzdXBlcmZpY2llcyBjb250aW51YXMgYSB0cmF2w6lzIGRlIGRpZmVyZW50ZXMgIG3DqXRvZG9zLlBhcmEgZXN0ZSBpbmZvcm1lLCBsb3MgbcOpdG9kb3MgZGUgaW50ZXJwb2xhY2nDs24gZXNwYWNpYWwgc2VsZWNjaW9uYWRvcyBmdWVyb24gOiBQb2xpZ29ub3MgZGUgVGhpZXNzZW4gRGlzdGFuY2lhIEludmVyc2EgUG9uZGVyYWRhIChJRFcpIHkgS3JpZ2luZyAKCgoqKlBvbGlnb25vcyBkZSBUaGllc3NlbioqIDogTG9zIHBvbGlnb25vcyBkZSB0aGllc3NlbiBoYWNlbiBwYXJ0ZSBkZSBsb3MgbcOpdG9kb3MgbG9jYWxlcyBkZSBpbnRlcnBvbGFjacOzbi4gRW4gZXN0ZSBtw6l0b2RvIGRlIGludGVycG9sYWNpw7NuIGxhIGVzdGltYWNpw7NuIHNlIGhhY2UgYSB0cmF2w6lzIGRlIGxvcyB2YWxvcmVzIGRlIGxvcyBwdW50b3MgbcOhcyBjZXJjYW5vcyB5IHNlIGJhc2EgZW4gcG9uZGVyYXIgZWwgdmFsb3IgcXVlIHRvbWEgdW5hIHZhcmlhYmxlIGVuIGZ1bmNpw7NuIGRlIHVuIMOhcmVhIGRlIGluZmx1ZW5jaWEgcXVlIHZpZW5lIGRldGVybWluYWRhIHNlZ8O6biBsYSBmb3JtYSBlbiBxdWUgZXN0w6luIHRyYXphZG9zIGxvcyBwb2zDrWdvbm9zLlBhcmEgZGV0ZXJtaW5hciBsYXMgw6FyZWFzIGRlIGluZmx1ZW5jaWEgZGUgY2FkYSB1bm8gZGUgbG9zIHB1bnRvcywgY2FkYSBwdW50byBzZSB1bmUgY29uIGxvcyBtw6FzIGNlcmNhbm9zIHkgcG9zdGVyaW9ybWVudGUgc2UgdHJhemFuIGxhcyBtZWRpYXRyaWNlcyBkZSBlc3RhcyB1bmlvbmVzIChNb3JlYW5vLDIwMDgpIC5DdWFuZG8gbG9zIHB1bnRvcyBlc3TDoW4gZGlzdHJpYnVpZG9zIGRlIGZvcm1hIHJlZ3VsYXIgLCBsb3MgcG9saWdvbm9zIHJlc3VsdGFudGVzIGRlIGVzdGEgaW50ZXJwb2xhY2nDs24gc29uIGN1YWRyYWRvcyBkZWwgbWlzbW8gdGFtYcOxbyAoQnVycm91Z2gsIFAuQS4geSBNY0Rvbm5lbGwgMTk5OCBjaXRhZG8gZW4gQmF1dGlzdGEsIDIwMTcpLHBvciB0YW50byBwYXJhIGFwbGljYXIgZXN0ZSBtw6l0b2RvIHNlIHRvbcOzIHVuYSBtdWVzdHJhIGFsZWF0b3JpYSBxdWUgc3VtYSBlbCA2MCUgZGUgbG9zIGRhdG9zIFtBbmV4byAyXShodHRwczovL3JwdWJzLmNvbS9BanV5by9JbnRlcnBvbGFjaW9uX1RoaWVzc2VuKSAuIAoKCioqRGlzdGFuY2lhIEludmVyc2EgUG9uZGVyYWRhIChJRFcpKio6IEVuIGVzdGUgbW9kZWxvLCBzZSBlc3RpbWEgZWwgdmFsb3IgZGVsIHB1bnRvIGRlIGludGVyw6lzIHV0aWxpemFuZG8gdW5hIGNvbWJpbmFjacOzbiBsaW5lYWwgZGUgcGVzb3MgcmVsYXRpdm9zICwgcXVlIHNlIGRldGVybWluYW4gYSBwYXJ0aXIgZGVsIGludmVyc28gZGUgbGEgZGlzdGFuY2lhLiBbQW5leG8gM10oaHR0cHM6Ly9ycHVicy5jb20vQWp1eW8vSW50ZXJwb2xhY2lvbl9JRFcpIC4gRW4gZXN0ZSB0aXBvIGRlIGludGVycG9sYWNpw7NuIGEgbWVkaWRhIHF1ZSBsYSBkaXN0YW5jaWEgc2UgaW5jcmVtZW50YSBlbnRyZSBlbCBwdW50byBkZSB2YWxvciBjb25vY2lkbyB5IGVsIHF1ZSB2YSBhIHNlciBpbnRlcnBvbGFkbywgbGEgcG9uZGVyYWNpw7NuIGFzb2NpYWRhIGNvbiBlbCB2YWxvciBtdWVzdHJlYWRvIGRlY3JlY2UsIGVzIGRlY2lyIGVzdGUgbcOpdG9kbyBhc2lnbmEgdW4gcGVzbyBtw6FzIGFsdG8gYSBsb3MgcHVudG9zIG3DoXMgY2VyY2Fub3MgcXVlIGEgYXF1ZWxsb3MgcXVlIHNlIGVuY3VlbnRyYW4gbcOhcyBhbGVqYWRvcyAoVG9ybyB5IE1lbG8sIDIwMDkgY2l0YWRvIGVuIENhc3RybyBldCBhbC4sIDIwMTcgKS5MYSBmw7NybXVsYSBwYXJhIGVzdGltYXIgZWwgdmFsb3IgbWVkaWFudGUgZXN0ZSBtw6l0b2RvIGVzIGxhIHNpZ3VpZW50ZQoKPGNlbnRlcj4KCiFbXShtYXNwLnBuZykKCjwvY2VudGVyPgoKCioqS3JpZ2luZyBVbml2ZXJzYWwqKgoKRWwgS3JpZ2luZyBVbml2ZXJzYWwgZXMgdW4gbcOpdG9kbyBkZSBpbnRlcnBvbGFjacOzbiBnZW9lc3RhZMOtc3RpY28gcXVlIGluY29ycG9yYSB1biBtb2RlbG8gbWF0ZW1hdGljbyBwYXJhIGRlc2NyaWJpciBsYSB2YXJpYWNpw7NuIGVzcGFjaWFsIGRlIGxvcyBkYXRvcyBhIHRyYXbDqXMgZGUgdW5hIHZhcmlhbnphIHF1ZSB2aWVuZSBkZSB1bmEgZGlzdGFuY2lhIGRhZGEgZW50cmUgcGFyZXMgZGUgcHVudG9zIHkgc3UgcmVwcmVzZW50YWNpw7NuIGdyw6FmaWNhIDogRWwgc2VtaXZhcmlvZ3JhbWEgbyB2YXJpb2dyYW1hIHF1ZSBzZSBhanVzdGEgYSB1biAgbW9kZWxvIHRlw7NyaWNvIGNvbiBwYXLDoW1ldHJvcyBjb21vIDogU2lsbCxRdWUgaGFjZSByZWZlcmVuY2lhIGFsIHZhbG9yIGFzaW50w7N0aWNvIGRlIGxhIHZhcmlhbnphICwgIG51Z2d1ZXQ6IFF1ZSBoYWNlIHJlZmVyZW5jaWEgYSB1bmEgdmFyaWFuemEgYWxlYXRvcmlhIHkgYWwgdmFsb3IgcXVlIHRvbWEgZXN0YSBjdWFuZG8gbGEgZGlzdGFuY2lhIGVzIGNlcm8geSBlbCByYW5nbyBxdWUgZXMgbGEgbcOheGltYSBkaXN0YW5jaWEgZW4gbGEgY3VhbCB1biBhdHJpYnV0byBlcyBkZXBlbmRpZW50ZSAoQmF1dGlzdGEgZXQgYWwuLCAyMDE3KS5FbiBlc3BlY8OtZmljbyBlbCBtw6l0b2RvIGRlIEtyaWdpbmcgdW5pdmVyc2FsIGluY29ycG9yYSB1bmEgdGVuZGVuY2lhIGRlIHN1cGVyZmljaWUgbG9jYWwgW0FuZXhvIDRdKGh0dHBzOi8vcnB1YnMuY29tL0FqdXlvLzYzMjEyMCk7TGEgZsOzcm11bGEgZ2VuZXJhbCBwYXJhIGVsIG3DqXRvZG8gS3JpZ2luZyBlczogCgo8Y2VudGVyPgoKIVtdKHBlcXVlbmEucG5nKQoKPC9jZW50ZXI+CgojIyMjICoqUkVTVUxUQURPUyAqKgoKKipJbnRlcnBvbGFjacOzbiBwb2zDrWdvbm9zIGRlIFRoaWVzc2VuKioKCgpFbCByZXN1bHRhZG8gb2J0ZW5pZG8gcGFyYSBlbCBtw6l0b2RvIGRlIGludGVycG9sYWNpw7NuIGNvbiBwb2zDrWdvbm9zIGRlIFRoaWVzc2VuIHNlIG11ZXN0YW4gZW4gbGEgRmlndXJhIDMKCjxjZW50ZXI+CgohWyAqKkZpZ3VyYSAzKiogOiBQcmVkaWNjacOzbiBkZSBwcmVjaXBpdGFjacOzbiBwb2xpZ29ub3MgZGUgVGhpZXNzZW4gXShQb2Zvcm1hc3MucG5nKQoKPC9jZW50ZXI+CgoKCioqTcOpdG9kbyBJbnZlcnNhIGRpc3RhbmNpYSBwb25kZXJhZGEqKgoKQWwgdXNhciBsYXMgZnVuY2lvbmFsaWRhZGVzIGRlbCBwcm9ncmFtYSBSIHBhcmEgcmVhbGl6YXIgZXN0ZSBtw6l0b2RvIGRlIGludGVycG9sYWNpw7NuIHNlIG9idGllbmUgZWwgcmVzdWx0YWRvIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGZpZ3VyYSA0Cgo8Y2VudGVyPgoKIVsgKipGaWd1cmEgNCoqIDogUHJlZGljY2nDs24gZGUgcHJlY2lwaXRhY2nDs24gbcOpdG9kbyBJRFcgXShJRFcucG5nKQoKPC9jZW50ZXI+CgoKKipLcmlnaW5nKioKTHVlZ28gZGUgZW5jb250cmFyIHVuIG1vZGVsbyBkZSB2YXJpb2dyYW1hIHF1ZSBzZSBhanVzdGFyYSBhIGxvcyBkYXRvcyB5IHJlYWxpemFyIGVsIG3DqXRvZG8gZGUgaW50ZXJwb2xhY2nDs24gIlVuaXZlcnNhbCBLcmlnaW5nIiBlbiBlbCBhbmV4byBuw7ptZXJvIDQgLCBzZSBvYnRpZW5lIGVsIHJlc3VsdGFkbyBkZSBsYSBmaWd1cmEgbsO6bWVybyA1IAoKCjxjZW50ZXI+CgohWyAqKkZpZ3VyYSA1KiogOiBNw6l0b2RvIEtyaWdpbmcgXShJbnRLLnBuZykKCjwvY2VudGVyPgoKCgoKCgojIyMjICoqQU7DgUxJU0lTIERFIFJFU1VMVEFET1MqKgoKCioqUG9saWdvbm9zIGRlIHRoaWVzc2VuKioKCkxhIGludGVycG9sYWNpw7NuIGNvbiBwb2xpZ29ub3MgZGUgVGhpZXNzZW4gbXVlc3RyYSBxdWUgbGEgcHJlY2lwaXRhY2nDs24gdGllbmUgdW5hIHRlbmRlbmNpYSBhIGF1bWVudGFyIGhhY2lhIGVsIHN1ciAsIGVzdGltYW5kbyB2YWxvcmVzIGRlIHByZWNpcGl0YWNpw7NuIG3DoXMgYWx0b3MgaGFjaWEgZWwgc3VyIGRlIEN1bWFyaWJvLlNpbiBlbWJhcmdvLCBhbCBoYWNlciBsYSBtdWVzdHJhIGRlbCA2MCUgZGUgbG9zIGRhdG9zIHBhcmEgcmVhbGl6YXIgbGEgdGFyZWEgZGUgaW50ZXJwb2xhY2nDs24gaGF5IHB1bnRvcyBkZW50cm8gZGUgbGEgbWlzbWEgIG5vIGhheSB1bmEgbWFuZXJhIGRlIGRldGVybWluYXIgYSBuaXZlbCBnZW5lcmFsIGVsIGVycm9yIGFzb2NpYWRvIGEgZXN0ZSBtw6l0b2RvICwgcG9yIHRhbnRvIGxhcyBwb3NpYmxlcyBmYWxlbmNpYXMgcXVlIHB1ZWRhIGxsZWdhciBhIHRlbmVyIGxhIGVzdGltYWNpw7NuIGRlIGVzdGUgbcOpdG9kbyBzb24gZGViaWRvIGFsIG7Dum1lcm8geSBsYSBkaXN0cmlidWNpw7NuIGRlIGxvcyBwdW50b3MgLiAKCgoKCioqVmFsaWRhY2nDs24gQ3J1emFkYSBwYXJhIG3DqXRvZG8gZGUgZGlzdGFuY2lhIGludmVyc2EgcG9uZGVyYWRhKioKCkVuIGVsIG3DqXRvZG8gZGUgbGEgZGlzdGFuY2lhIGludmVyc2EgcG9uZGVyYWRhICwgZWwgdmFsb3IgcXVlIHNlIGxlIGFzaWduYSBhIGxhIHBvdGVuY2lhIHAgZXMgYXJiaXRyYXJpbyAsIHBvciB0YW50byBlc2Ugc2VyaWEgdW5vIGRlIGxvcyBwcmltZXJvcyBmYWN0b3JlcyBhc29jaWFkb3MgYWwgZXJyb3IgZGVsIG3DqXRvZG8uIFNpbiBlbWJhcmdvICwgc2UgaGl6byB1c28gZGUgbGEgdmFsaWRhY2nDs24gcG9yIG9taXNpw7NuIHkgZWwgZXJyb3IgY3VhZHJhdGljbyBtZWRpbyBwYXJhIHBvZGVyIGVsZWdpciBlbCB2YWxvciBkZSBwb3RlbmNpYSBxdWUgbWFzIHNlIGFqdXN0YXJhIGEgbG9zIGRhdG9zLgoKRWwgZ3LDoWZpY28gbsO6bWVybyA2IGNvcnJlc3BvbmRlIGFsIGRpYWdyYW1hIGRlIGRpc3BlcnNpw7NuIGVudHJlIGxvcyBkYXRvcyBvYnNlcnZhZG9zIHkgbG9zIGRhdG9zIGVzdGltYWRvcyBkZSBwcmVjaXBpdGFjacOzbi5BbGzDrSBzZSBwdWVkZSB2ZXIgcXVlIGVsIG1vZGVsbyBzZSBhanVzdGEgYSBsYSBsw61uZWEgZGUgcmVmZXJlbmNpYSAuIAoKCjxjZW50ZXI+CgohWyAqKkZpZ3VyYSA2KiogOiBWYWxpZGFjacOzbiBjcnV6YWRhIG3DqXRvZG8gSURXIF0oRGlzcGVyc2nDs24ucG5nKQoKPC9jZW50ZXI+CgoKQWRlbcOhcyAsIGVsIGPDoWxjdWxvIGRlbCBlcnJvciBjdWFkcsOhdGljbyBtZWRpbyBkacOzIHVuIHJlc3VsdGFkbyBkZSAyLjIzNDEwNCAsIGxvIHF1ZSBzdWdpZXJlIHF1ZSBlbCBtw6l0b2RvIGRlIGxhIGRpc3RhbmNpYSBpbnZlcnNhIHBvbmRlcmFkYSBjb24gdW5hIHBvdGVuY2lhIGRlIDMgcHVlZGUgc2VyIHVuIGJ1ZW4gaW50ZXJwb2xhZG9yIGNvbnNpZGVyYW5kbyBxdWUgbG9zIGRhdG9zIG9idGVuaWRvcyBwYXJhIHByZWNpcGl0YWNpw7NuIGVuIFZpY2hhZGEgdmFyaWFuIGRlIDAuNG1tIGEgODVtbSBBw7puIGFzw60gLCBhbCB1c2FyIHVuIGludGVydmFsbyBkZSBjb25maWFuemEgZGVsIDk1JSBhbCA1JSBkZSBkYXRvcyBkZSBsYSBtdWVzdHJhIHBhcmEgbGEgZXN0aW1hY2nDs24gZGUgZXJyb3JlcyAoQW5leG8gMykgLCAgZGEgdW4gcmFuZ28gY29uIHVuIHZhbG9yIG1heW9yIGFsIGRlbCBwYXLDoW1ldHJvIGFudGVyaW9yICAuCgoKQWRlbcOhcyBwb2RlbW9zIGRlY2lyIHF1ZSBwYXJhIGxhIGRpc3RyaWJ1Y2nDs24gcXVlIGZ1ZSBldmFsdWFkbyBlbCBtw6l0b2RvIHBhcmVjZSBmdW5jaW9uYXIgbWVqb3IgcXVlIGxhIGludGVycG9sYWNpw7NuIHBvciBwb2xpZ29ub3MgZGUgVGhpZXNzZW4sIHB1ZXMsIHNlIHB1ZWRlIG9ic2VydmFyIG1lam9yIGxhIHZhcmlhY2nDs24gcXVlIHRpZW5lIGxhIHByZWNpcGl0YWNpw7NuIGVuIGxhIHBhcnRlIGNlbnRyYWwgZGVsIGRlcGFydGFtZW50by5TaW4gZW1iYXJnbyBwb3IgbGFzIGNvbmRpY2lvbmVzIGluaWNpYWxlcyBkZWwgbW9kZWxvIG1pc21vLCBhbCBldmFsdWFyc2UgcGFyYSBkYXRvcyBjb24gdW5hIGRpc3RyaWJ1Y2nDs24gaXJyZWd1bGFyIHBvZHJpYSBkaXNtaW51aXIgc3UgZXhhY3RpdHVkCgoKKipLcmlnaW5nKiogCgpFbCBtb2RlbG8gZGUgdmFyaW9ncmFtYSBxdWUgbWVqb3Igc2UgYWp1c3RhIGEgbG9zIGRhdG9zIGRlIHByZWNpcGl0YWNpw7NuIHBhcmEgZWwgZGVwYXJ0YW1lbnRvIGRlIHZpY2hhZGEgZXMgZGUgdGlwbyBnYXVzc2lhbm8gLCBwdWVzIHB1ZWRlIGFwcmVjaWFyc2UgY29tbyBsb3MgdmFsb3JlcyBkZSBzZW1pdmFyaWFuemEgcGFyZWNlbiB0ZW5kZXIgYSB1bmEgZGlzdHJpYnVjacOzbiBub3JtYWwsIGVzdGUgdGlwbyBkZSB2YXJpb2dyYW1hIHZhcsOtYSBtw6FzIHN1YXZlbWVudGUgcXVlIGxvcyB2YXJpb2dyYW1hcyBkZSB0aXBvIGV4cG9uZW5jaWFsIG8gZXNmw6lyaWNvIGxvIHF1ZSBzdWdpZXJlIHVuYSBtYXlvciByZWxhY2nDs24gY29uIGxvcyBwdW50b3MgbWFzIGNlcmNhbm9zIHkgY29udHVpbmlkYWQgZXNwYWNpYWwKCjxjZW50ZXI+CgohWyAqKkZpZ3VyYSA3KiogOiBWYXJpb2dyYW1hIGRlIEFqdXN0ZSBdKE1WYXJpb2dyYW1hLnBuZykKCjwvY2VudGVyPgoKTGEgZmlndXJhIG7Dum1lcm8gOCAsIG11ZXN0cmEgbG9zIHZhbG9yZXMgZGUgdmFyaWFuemEgZW4gbW0yIGVuY29udHJhZG9zIHBhcmEgZXN0ZSBtw6l0b2RvIGRlIGludGVycG9sYWNpw7NuCgo8Y2VudGVyPgoKIVsgKipGaWd1cmEgOCoqIDogVmFyaWFuemEgXShLVmFyaWFuemEucG5nKQoKPC9jZW50ZXI+CgpMb3MgdmFsb3JlcyBkZWwgbWFwYSBkZSBsYSBmaWd1cmEgbsO6bWVybyA5ICwgcmVwcmVzZW50YW4gbGEgZXZhbHVhY2nDs24gY29uIHVuIGludGVydmFsbyBkZSBjb25maWFuemEgZGVsIDk1JSBwYXJhIGVsIG3DqXRvZG8gZGUgaW50ZXJwb2xhY2nDs24gYWxsaSBwb2RlbW9zIHZlciBxdWUgcHVlZGVuIG9jdXJyaXIgc3ViZXN0aW1hY2lvbmVzIG8gc29icmVlc3RpbWFjaW9uZXMgcGFyYSBsb3MgdmFsb3JlcyBkZSBwcmVjaXBpdGFjacOzbiBlbiB1biBvcmRlbiBkZSBsb3MgNSBtbSAuCgoKCgo8Y2VudGVyPgoKIVsgKipGaWd1cmEgOSoqIDogSW50ZXJ2YWxvIGRlIGNvbmZpYW56YSA5NSVdKEtDSS5wbmcpCgoKPC9jZW50ZXI+CgoKRGFkbyBlc3RvcyB2YWxvcmVzIGVuIGxhICB2YXJpYW56YSB5IGVuIGxvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBzZSBwdWVkZSBhZmlybWFyIHF1ZSBlc3RvcyBubyBzdXBvbmVuIHVuIGVycm9yIG11eSBhbHRvIHNpIHNlIGNvbnNpZGVyYSBsYSB2YXJpYWNpw7NuIHF1ZSBzZSBwcmVzZW50YSBkZXNkZSBsYXMgbXVlc3RyYXMuIFZlbW9zIGVudG9uY2VzIHF1ZSBsb3MgdHJlcyBtw6l0b2RvcyBkZSBpbnRlcnBvbGFjacOzbiBzb24gY29oZXJlbnRlcyBjb24gbGEgaW5mb3JtYWNpw7NuIHByZXZpYSBxdWUgc2UgdGVuaWEgZGUgbGEgem9uYSBkZSBlc3R1ZGlvICwgcHVlcyB0YW50byBlbiBsYSBpbnRlcnBvbGFjacOzbiBjb24gcG9saWdvbm9zIGRlIFRoaWVzc2VuICwgZGlzdGFuY2lhIGludmVyc2EgcG9uZGVyYWRhIHkgVW5pdmVyc2FsIEtyaWdpbmcgc2UgdmVuIG1hcmNhZGFzIGxhcyB6b25hcyBkZSBwcmVjaXBpdGFjacOzbiBhbHRhICwgbWFkaWEgeSBiYWphIHBhcmEgZWwgZGVwYXJ0YW1lbnRvIGRlbCBWaWNoYWRhLiBBw7puIGFzw60gc2UgdmUgbWFyY2FkYSBsYSBkaWZlcmVuY2lhIGVuIGxhIGVzdGltYWNpw7NuIGRlIHZhbG9yZXMgY29uIGVsIG3DqXRvZG8gZGUgbG9zIHBvbGlnb25vcyBkZSB0aGllc3NlbiAsIGZyZW50ZSBhIGxhcyBvdHJhcyAyIHTDqWNuaWNhcyBkZSBpbnRlcnBvbGFjacOzbi4KCiMjIyMgKipDT05DTFVTSU9ORVMqKgoKQ29uc2lkZXJhbmRvIGxhIGVzdGltYWNpw7NuIGRlIGxvcyBlcnJvcmVzIHBhcmEgY2FkYSBtw6l0b2RvIGRlIGludGVycG9sYWNpw7NuLCBzZSBjb25jbHV5ZSBxdWUgdGFudG8gZWwgbcOpdG9kbyBLcmlnaW5nIGNvbW8gZWwgbcOpdG9kbyBkZSBkaXN0YW5jaWEgaW52ZXJzYSBwb25kZXJhZGEgYXJyb2phbiByZXN1bHRhZG9zIHNpbWlsYXJlcyBwYXJhIGVzdGUgY29uanVudG8gZGUgZGF0b3MgeSBsb2dyYW4gaGFjZXIgIHVuYSBidWVuYSBlc3RpbWFjacOzbiBkZSBsb3MgdmFsb3JlcyBkZSBwcmVjaXBpdGFjacOzbiAsIHNpZW5kbyBlbCBtZWpvciBtw6l0b2RvIHBhcmEgZXN0ZSBjYXNvIHBhcnRpY3VsYXIgZWwgZGUgbGEgZGlzdGFuY2lhIGludmVyc2EgcG9uZGVyYWRhICwgcHVlcyBnZW5lcmEgbG9zIG1pc21vcyByZXN1bHRhZG9zIGRlIHVuYSBtYW5lcmEgbcOhcyBzZW5jaWxsYQoKTGFzIHByaW5jaXBhbGVzIGZ1ZW50ZXMgZGUgZXJyb3IgZW4gbG9zIG3DqXRvZG9zIGRlIGludGVycG9sYWNpw7NuICwgcHJvdmllbmVuIGRlIGxhIGRpc3RyaWJ1Y2nDs24geSBsYSBjYW50aWRhZCBkZSBkYXRvcyAsIHBvciB0YW50byBlbCBuw7ptZXJvIHJlZHVjaWRvIGRlIGVzdGFjaW9uZXMgbWV0ZXJlb2zDs2dpY2FzIGVuIGVsIHBhw61zIHB1ZWRlIHNlciB1biBsaW1pdGFudGUgcGFyYSBsbGV2YXIgYSBjYWJvIGVzdGEgdGFyZWEuU2luIGVtYmFyZ28sIGRhdG9zIHNhdGVsaXRhbGVzIGNvbW8gQ0hJUlBTIHB1ZWRlbiBzZXIgdW5hIGFsdGVybmF0aXZhIHBhcmEgcHJvZHVjaXIgbWVqb3JlcyByZXN1bHRhZG9zCgoKIyMjIyAqKlJFRkVSRU5DSUFTKioKCkJ1cnJvdWdoLCBQLkEuIHkgTWNEb25uZWxsLCBSLkEuICgxOTk4KS4gUHJpbmNpcGxlcyBvZiBHZW9ncmFwaGljYWwgSW5mb3JtYXRpb24gU3lzdGVtcy4gT3hmb3JkIFVuaXZlcnNpdHkgUHJlc3MsIE5ldyBZb3JrLiBJU0JOIDk3OC05MC05MDI0OTgxLTAuCgpCYXV0aXN0YSBaw7rDsWlnYSwgRi4sIFBhbGFjaW8gUHJpZXRvLCBKLiBMLiwgRGVsZsOtbiBHb256w6FsZXosIEguLCAmIFBhw6l6IEJpc3RyYWluLCBSLiAoRWRzLikuICgyMDExKS4gVMOpY25pY2FzIGRlIG11ZXN0cmVvIHBhcmEgbWFuZWphZG9yZXMgZGUgcmVjdXJzb3MgbmF0dXJhbGVzICgyLiBlZCkuIFVuaXZlcnNpZGFkIE5hY2lvbmFsIEF1dMOzbm9tYSBkZSBNw6l4aWNvLgoKCkNhc3RybywgTS4sIEdhcmPDrWEsIEQuIHkgSmltw6luZXosIEEuICgyMDE3KS4gQ29tcGFyYWNpw7NuIGRlIHTDqWNuaWNhcyBkZSBpbnRlcnBvbGFjacOzbiBlc3BhY2lhbCBkZSBwcm9waWVkYWRlcyBkZWwgc3VlbG8gZW4gZWwgcGllZGVtb250ZSBsbGFuZXJvIGNvbG9tYmlhbm8uIFJldmlzdGEgVGVjbnVyYSwgMjEoNTMpLCA3OC05NSwgZG9pOiAxMC4xNDQ4My91ZGlzwqx0cml0YWwuam91ci50ZWNudXJhLjIwMTcuMy5hMDUKCgpGdW5rLCBDLkMuLCBQZXRlcnNvbiwgUC5KLiwgTGFuZHNmZWxkLCBNLkYuLCBQZWRyZXJvcywgRC5ILiwgVmVyZGluLCBKLlAuLCBSb3dsYW5kLCBKLkQuLCBSb21lcm8sIEIuRS4sIEh1c2FrLCBHLkouLCBNaWNoYWVsc2VuLCBKLkMuLCBhbmQgVmVyZGluLCBBLlAuICgyMDE0KS4gQSBxdWFzaS1nbG9iYWwgcHJlY2lwaXRhdGlvbiB0aW1lIHNlcmllcyBmb3IgZHJvdWdodCBtb25pdG9yaW5nOiBVLlMuIEdlb2xvZ2ljYWwgU3VydmV5IERhdGEgU2VyaWVzIDgzMiwgNCBwLiwgaHR0cDovL2R4LmRvaS5vcmcvMTAuMzEzMy9kczgzMi4KCgpGdW5rLCBDLiwgUGV0ZXJzb24sIFAuLCBMYW5kc2ZlbGQsIE0uLCBQZWRyZXJvcywgRC4sIFZlcmRpbiwgSi4sIFNodWtsYSwgUy4sIEh1c2FrLCBHLiwgUm93bGFuZCwgSi4sIEhhcnJpc29uLCBMLiwgSG9lbGwsIEEuLCAmIE1pY2hhZWxzZW4sIEouICgyMDE1KS4gVGhlIGNsaW1hdGUgaGF6YXJkcyBpbmZyYXJlZCBwcmVjaXBpdGF0aW9uIHdpdGggc3RhdGlvbnPigJRBIG5ldyBlbnZpcm9ubWVudGFsIHJlY29yZCBmb3IgbW9uaXRvcmluZyBleHRyZW1lcy4gU2NpZW50aWZpYyBEYXRhLCAyKDEpLCAxNTAwNjYuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4L3NkYXRhLjIwMTUuNjYKCgpHb256w6FsZXosIEguICgyMDA1KS4gRXZvbHVjacOzbiBkZWwgc2VjdG9yIGFncsOtY29sYSBlbiBlbCBkZXBhcnRhbWVudG8gZGVsIG1ldGEgeSBsb3MgbGxhbm9zIG9yaWVudGFsZXMgMTk5MSDigJMgMjAwMyBDb25zdWx0YWRvIGVuIDogaHR0cHM6Ly93d3cuYmFucmVwLmdvdi5jby9kb2N1bWVudG9zL3B1YmxpY2FjaW9uZXMvcmVnaW9uYWwvRVNFUi92aWxsYXZpY2VuY2lvLzIwMDVfc2VwdGllbWJyZV9hLnBkZgoKSU5DT0RFUiAtIENvcnBvcmFjacOzbiBMYXRpbm9hbWVyaWNhbmEgTWlzacOzbiBSdXJhbC4gKDIwMTIpLiBDYXJhY3Rlcml6YWNpw7NuIHNvY2lvZWNvbsOzbWljYSwgYW1iaWVudGFsIHkgZGUgdGVuZW5jaWEgZGUgbGEgdGllcnJhIEluZm9ybWUgZmluYWwsIERpY2llbWJyZSAyMDEyLkNvbnN1bHRhZG8gZW4gOiBodHRwOi8vd3d3Lm1pc2lvbnJ1cmFsLm5ldC9mc2NvbW1hbmQvYW1iaWVudGFsLnBkZgpMaSwgSi4sICYgR2Vvc2NpZW5jZSBBdXN0cmFsaWEuICgyMDA4KS4gQSByZXZpZXcgb2Ygc3BhdGlhbCBpbnRlcnBvbGF0aW9uIG1ldGhvZHMgZm9yIGVudmlyb25tZW50YWwgc2NpZW50aXN0cy4gR2Vvc2NpZW5jZSBBdXN0cmFsaWEuCgpNb3JlYW5vLCBSLiAyMDA4LlNpc3RlbWEgZGUgaW5mb3JtYWNpw7NuIHBhcmEgbGEgaW50ZXJwb2xhY2nDs24gZXNwYWNpYWwgeSB0ZW1wb3JhbCBkZSBkYXRvcyBzb2JyZSBlbCB0aWVtcG8gYXRtb3Nmw6lyaWNvIHkgZWwgY2xpbWEgZGUgRWN1YWRvci5Fc2N1ZWxhIFBvbGl0w6ljbmljYSBOYWNpb25hbC4gUmVjdXBlcmFkbyBkZTogaHR0cHM6Ly9iaWJkaWdpdGFsLmVwbi5lZHUuZWMvYml0c3RyZWFtLzE1MDAwLzcxOS8xL0NELTE2NjQlMjgyMDA4LTA5LTE1LTEwLTMzLTI0JTI5LnBkZi4KVG9ybywgRy4sIHkgTWVsbywgQy4gKDIwMDkpLiBBcGxpY2FjacOzbiBkZSBtw6l0b2RvcyBkZSBpbnRlcnBvbGFjacOzbiBnZW9lc3RhZMOtc3RpY29zIHBhcmEgbGEgcHJlZGljY2nDs24gZGUgbml2ZWxlcyBkaWdpdGFsZXMgZGUgdW5hIGltYWdlbiBzYXRlbGl0YWwgY29uIGzDrW5lYXMgcGVyZGlkYXMgeSBlZmVjdG8gc2FsIHkgcGltaWVudGEuIFJldmlzdGEgVGVjbnVyYSwgMTIoMjQpLCA1NS02Ny4KClVuaXZlcnNpZGFkIE5hY2lvbmFsIGRlIENvbG9tYmlhIHNlZGUgT3Jpbm9xdWlhLiAoMjAxOCkuIERpYWduw7NzdGljbyBEZXBhcnRhbWVudG8gZGUgVmljaGFkYS4gQ29uc3VsdGFkbyBlbiBodHRwOi8vb3Jpbm9xdWlhLnVuYWwuZWR1LmNvL2ZpbGVhZG1pbi91c2VyX3VwbG9hZC9EaWFnbm9zdGljb19EZXBhcnRhbWVudG9fX1ZpY2hhZGEucGRmCgoKCgoKCgoKCjxkaXYvPg==