GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales

La exploración de recursos geotérmicos es fundamental como parte del desarrollo económico y social de los gobiernos nacionales,para identificar el volumen, ubicación y profundidad de estos recursos utilizando métodos geológicos, geofísicos y geoquímicos. Este proceso requiere una clasificación preci...

Full description

Autores:
Rodriguez Rodriguez, Gilbert Fabian
Tipo de recurso:
Fecha de publicación:
2024
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
OAI Identifier:
oai:repository.udistrital.edu.co:11349/93784
Acceso en línea:
http://hdl.handle.net/11349/93784
Palabra clave:
Python
Magnetotelúrica
Clasificación geoeléctrica
Resistividad aparente
Modelo de capas
Exploracion geotérmica
Especialización en Sistemas de Información Geográfica -- Tesis y disertaciones académicas
Python
Magnetotelluric
Geoelectrical classification
Apparent resistivity
Layer model
Geothermal exploration
Rights
License
Abierto (Texto Completo)
id UDISTRITA2_03a812e615e1c43e71a66ca80c8df9d7
oai_identifier_str oai:repository.udistrital.edu.co:11349/93784
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.none.fl_str_mv GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
dc.title.titleenglish.none.fl_str_mv GeoModel-GIS: plug-in for QGIS for geological and geothermal classification of magnetotelluric data for the understanding of hydrothermal geothermal systems
title GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
spellingShingle GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
Python
Magnetotelúrica
Clasificación geoeléctrica
Resistividad aparente
Modelo de capas
Exploracion geotérmica
Especialización en Sistemas de Información Geográfica -- Tesis y disertaciones académicas
Python
Magnetotelluric
Geoelectrical classification
Apparent resistivity
Layer model
Geothermal exploration
title_short GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
title_full GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
title_fullStr GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
title_full_unstemmed GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
title_sort GeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermales
dc.creator.fl_str_mv Rodriguez Rodriguez, Gilbert Fabian
dc.contributor.advisor.none.fl_str_mv Ramírez Fernández, Salomón Einstein
dc.contributor.author.none.fl_str_mv Rodriguez Rodriguez, Gilbert Fabian
dc.subject.none.fl_str_mv Python
Magnetotelúrica
Clasificación geoeléctrica
Resistividad aparente
Modelo de capas
Exploracion geotérmica
topic Python
Magnetotelúrica
Clasificación geoeléctrica
Resistividad aparente
Modelo de capas
Exploracion geotérmica
Especialización en Sistemas de Información Geográfica -- Tesis y disertaciones académicas
Python
Magnetotelluric
Geoelectrical classification
Apparent resistivity
Layer model
Geothermal exploration
dc.subject.lemb.none.fl_str_mv Especialización en Sistemas de Información Geográfica -- Tesis y disertaciones académicas
dc.subject.keyword.none.fl_str_mv Python
Magnetotelluric
Geoelectrical classification
Apparent resistivity
Layer model
Geothermal exploration
description La exploración de recursos geotérmicos es fundamental como parte del desarrollo económico y social de los gobiernos nacionales,para identificar el volumen, ubicación y profundidad de estos recursos utilizando métodos geológicos, geofísicos y geoquímicos. Este proceso requiere una clasificación precisa de datos, clave para decisiones estratégicas en sectores como la energía y minería. En este contexto, se diseñó e implementó el Plug-In GeoModel-GIS en QGIS, utilizando metodologías ágiles como Scrum y prácticas de Extreme Programming (XP) para identificar requerimientos funcionales y no funcionales, y desarrollar una herramienta con una base de código robusta basada en PyQGIS y PyQt5. El diseño del Plug-In se apoyó en la arquitectura 4+1, con diagramas de clases, secuencias y actividades que guiaron el desarrollo. Su implementación automatizada mostró altos niveles de aceptación entre los profesionales consultados, aunque se identificó la necesidad de integrar métodos adicionales de exploración geológica, geofísica y geoquímica para mejorar el análisis y la comprensión de las zonas geotérmicas. El Plug-In GeoModel-GIS permite automatizar la clasificación de capas del subsuelo según valores de resistividad aparente de datos de magnetotelúrica , y asignar su correspondiente significado geológico y geotérmico. Esto facilita la identificación de componentes clave de sistemas geotérmicos hidrotermales, como capas sello, posibles reservorios y tipos de basamentos. La herramienta incluye una interfaz gráfica organizada en dos módulos principales para la clasificación y edición de datos, con soporte para archivos en formato .txt de los modelos unidimensionales de datos magnetotelúricos y ademas brinda una seria de validadores generados automaticamente que le permiten al usuario corregir errores en la carga o edición de los datos.
publishDate 2024
dc.date.created.none.fl_str_mv 2024-12-03
dc.date.accessioned.none.fl_str_mv 2025-03-18T17:53:19Z
dc.date.available.none.fl_str_mv 2025-03-18T17:53:19Z
dc.type.none.fl_str_mv bachelorThesis
dc.type.coar.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.degree.none.fl_str_mv Monografía
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/93784
url http://hdl.handle.net/11349/93784
dc.relation.references.none.fl_str_mv Abdul, M. 2012. Calidad en la industria del software. La norma ISO 9126. Instituto Politécnico Nacional “La técnica al servicio de la Patria”. Gobierno de Mexico. https://www.nacionmulticultural.unam.mx/empresasindigenas/docs/2094.pdf
Corbo, C. (2006). Modelo geofísico del acuífero guaraní: zona comprendida entre Uruguay y Argentina. Tesis de Maestria. Universidad Nacional Autónoma de México, México D.F. https://repositorio.unam.mx/contenidos?c=b7wv2o&d=false&q=*:*&i=5&v=1&t=search_1&as=0
Energy Sector Management Assistance Program (ESMAP). 2012. Manual de geotermia: como planificar y financiar la generación de electricidad. Informe Técnico 002/12. Banco Internacional para la Reconstrucción y el Desarrollo / Grupo del Banco Mundial. Washington D.C., EE. UU. https://www.esmap.org/sites/default/files/esmap- files/ESMAP_GEOTHERMAL_Spanish_book_Optimized.pdf
Martí, A. 2006. A Magnetotelluric investigation of Geoelectrical Dimensionality and Study of the Central Betic Crustal Structure (Ph.D. Thesis, Universitat de Barcelona). https://www.fundaciongarciasineriz.es/wp-content/uploads/attachments/AMarti.pdf
Nielse, J. y Landauer, K. 1993. A matematical model of the finding of usability problems. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems - CHI ’93. doi:10.1145/169059.169166
Organización latinoamericana de Energía (OLADE) y Banco Interamericano de Desarrollo (BID). 1994. Guía para estudios de reconocimiento y prefactibilidad geotérmicos. Quito, Ecuador. https://biblioteca.olade.org/opac-tmpl/Documentos/old0406.pdf
Pous, J., y Marcuello, A. (2003). El método magnetotelúrico: descripcion y aportaciones en investigaciones de ámbito regional. Barcelona, España: Boletín Geológico y Minero. https://diposit.ub.edu/dspace/bitstream/2445/34916/3/03.JLF_3de3.pdf
Shah, S.K., Verma, O. y Gogoi, K. (2020). Fundamentals of Stratigraphy, Stratigraphy and palaentology. Volumen 1, stratigraphy. Indira Gandhi National Open University School of Science. https://egyankosh.ac.in/handle/123456789/69596
Vozoff, K. (1991). The magnetotelluric method. In Nabighian, M. N. (Ed.), Electromagnetic Methods in Applied Geophysics, Vol. 2, Applications, Society of Exploration Geophysicists
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.acceso.none.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.none.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/f6e2dc2e-f4ae-482e-8e43-155d9527bab8/download
https://repository.udistrital.edu.co/bitstreams/1e4aa7d1-9a26-40f2-9401-21c5dd178544/download
https://repository.udistrital.edu.co/bitstreams/6a9c60ef-4cee-4668-9318-03f90bbbaf99/download
https://repository.udistrital.edu.co/bitstreams/f7bf3bcc-4675-40f9-9292-c69b3f331b57/download
https://repository.udistrital.edu.co/bitstreams/45f760fe-1598-452b-a0b9-45f521b3c547/download
bitstream.checksum.fl_str_mv f69574c399bf15e9a924fe2dad72451f
9870bf5d30381770dde7d48d41ac882f
997daf6c648c962d566d7b082dac908d
5fe5682c26dc7780a8416cbc28ea2205
d76d0fd4f6803502ce89cd54f076a95e
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1828165462927605760
spelling Ramírez Fernández, Salomón EinsteinRodriguez Rodriguez, Gilbert Fabian2025-03-18T17:53:19Z2025-03-18T17:53:19Z2024-12-03http://hdl.handle.net/11349/93784La exploración de recursos geotérmicos es fundamental como parte del desarrollo económico y social de los gobiernos nacionales,para identificar el volumen, ubicación y profundidad de estos recursos utilizando métodos geológicos, geofísicos y geoquímicos. Este proceso requiere una clasificación precisa de datos, clave para decisiones estratégicas en sectores como la energía y minería. En este contexto, se diseñó e implementó el Plug-In GeoModel-GIS en QGIS, utilizando metodologías ágiles como Scrum y prácticas de Extreme Programming (XP) para identificar requerimientos funcionales y no funcionales, y desarrollar una herramienta con una base de código robusta basada en PyQGIS y PyQt5. El diseño del Plug-In se apoyó en la arquitectura 4+1, con diagramas de clases, secuencias y actividades que guiaron el desarrollo. Su implementación automatizada mostró altos niveles de aceptación entre los profesionales consultados, aunque se identificó la necesidad de integrar métodos adicionales de exploración geológica, geofísica y geoquímica para mejorar el análisis y la comprensión de las zonas geotérmicas. El Plug-In GeoModel-GIS permite automatizar la clasificación de capas del subsuelo según valores de resistividad aparente de datos de magnetotelúrica , y asignar su correspondiente significado geológico y geotérmico. Esto facilita la identificación de componentes clave de sistemas geotérmicos hidrotermales, como capas sello, posibles reservorios y tipos de basamentos. La herramienta incluye una interfaz gráfica organizada en dos módulos principales para la clasificación y edición de datos, con soporte para archivos en formato .txt de los modelos unidimensionales de datos magnetotelúricos y ademas brinda una seria de validadores generados automaticamente que le permiten al usuario corregir errores en la carga o edición de los datos.The exploration of geothermal resources is fundamental as part of the economic and social development of national governments, where it seeks to identify the volume, location and depth of these resources using geological, geophysical and geochemical methods. This process requires precise classification of data, key for strategic decisions in sectors such as energy and mining. In this context, the GeoModel-GIS Plug-In was designed and implemented in QGIS, using agile methodologies such as Scrum and Extreme Programming (XP) practices to identify functional and non-functional requirements, and develop a tool with a robust code base based in PyQGIS and PyQt5. The design of the Plug-In was based on the 4+1 architecture, with class diagrams, sequences and activities that guided the development. Its automated implementation showed high levels of acceptance among the professionals consulted, although the need to integrate additional geological, geophysical and geochemical exploration methods was identified to improve the analysis and understanding of geothermal zones. The GeoModel-GIS Plug-In allows you to automate the classification of subsoil layers according to apparent resistivity values from magnetotelluric data, and assign their corresponding geological and geothermal meaning. This facilitates the identification of key components of hydrothermal geothermal systems, such as seal layers, possible reservoirs and basement types. The tool includes a graphical interface organized in two main modules for data classification and editing, with support for files in .txt format of the one-dimensional models of magnetotelluric data and also provides a series of automatically generated validators that allow the user to correct errors in loading or editing data.pdfPythonMagnetotelúricaClasificación geoeléctricaResistividad aparenteModelo de capasExploracion geotérmicaEspecialización en Sistemas de Información Geográfica -- Tesis y disertaciones académicasPythonMagnetotelluricGeoelectrical classificationApparent resistivityLayer modelGeothermal explorationGeoModel-GIS: plug-in para QGIS de clasificación geológica y geotérmica de datos de magnetotelúrica para la comprensión de sistemas geotérmicos hidrotermalesGeoModel-GIS: plug-in for QGIS for geological and geothermal classification of magnetotelluric data for the understanding of hydrothermal geothermal systemsbachelorThesisMonografíahttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Abdul, M. 2012. Calidad en la industria del software. La norma ISO 9126. Instituto Politécnico Nacional “La técnica al servicio de la Patria”. Gobierno de Mexico. https://www.nacionmulticultural.unam.mx/empresasindigenas/docs/2094.pdfCorbo, C. (2006). Modelo geofísico del acuífero guaraní: zona comprendida entre Uruguay y Argentina. Tesis de Maestria. Universidad Nacional Autónoma de México, México D.F. https://repositorio.unam.mx/contenidos?c=b7wv2o&d=false&q=*:*&i=5&v=1&t=search_1&as=0Energy Sector Management Assistance Program (ESMAP). 2012. Manual de geotermia: como planificar y financiar la generación de electricidad. Informe Técnico 002/12. Banco Internacional para la Reconstrucción y el Desarrollo / Grupo del Banco Mundial. Washington D.C., EE. UU. https://www.esmap.org/sites/default/files/esmap- files/ESMAP_GEOTHERMAL_Spanish_book_Optimized.pdfMartí, A. 2006. A Magnetotelluric investigation of Geoelectrical Dimensionality and Study of the Central Betic Crustal Structure (Ph.D. Thesis, Universitat de Barcelona). https://www.fundaciongarciasineriz.es/wp-content/uploads/attachments/AMarti.pdfNielse, J. y Landauer, K. 1993. A matematical model of the finding of usability problems. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems - CHI ’93. doi:10.1145/169059.169166Organización latinoamericana de Energía (OLADE) y Banco Interamericano de Desarrollo (BID). 1994. Guía para estudios de reconocimiento y prefactibilidad geotérmicos. Quito, Ecuador. https://biblioteca.olade.org/opac-tmpl/Documentos/old0406.pdfPous, J., y Marcuello, A. (2003). El método magnetotelúrico: descripcion y aportaciones en investigaciones de ámbito regional. Barcelona, España: Boletín Geológico y Minero. https://diposit.ub.edu/dspace/bitstream/2445/34916/3/03.JLF_3de3.pdfShah, S.K., Verma, O. y Gogoi, K. (2020). Fundamentals of Stratigraphy, Stratigraphy and palaentology. Volumen 1, stratigraphy. Indira Gandhi National Open University School of Science. https://egyankosh.ac.in/handle/123456789/69596Vozoff, K. (1991). The magnetotelluric method. In Nabighian, M. N. (Ed.), Electromagnetic Methods in Applied Geophysics, Vol. 2, Applications, Society of Exploration GeophysicistsORIGINALRodriguezRodriguezGilbertFabian2024.pdfRodriguezRodriguezGilbertFabian2024.pdfapplication/pdf1699377https://repository.udistrital.edu.co/bitstreams/f6e2dc2e-f4ae-482e-8e43-155d9527bab8/downloadf69574c399bf15e9a924fe2dad72451fMD51Licencia de uso y publicacion editable RIUD_.pdfLicencia de uso y publicacion editable RIUD_.pdfapplication/pdf249623https://repository.udistrital.edu.co/bitstreams/1e4aa7d1-9a26-40f2-9401-21c5dd178544/download9870bf5d30381770dde7d48d41ac882fMD52LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/6a9c60ef-4cee-4668-9318-03f90bbbaf99/download997daf6c648c962d566d7b082dac908dMD53THUMBNAILRodriguezRodriguezGilbertFabian2024.pdf.jpgRodriguezRodriguezGilbertFabian2024.pdf.jpgIM Thumbnailimage/jpeg3671https://repository.udistrital.edu.co/bitstreams/f7bf3bcc-4675-40f9-9292-c69b3f331b57/download5fe5682c26dc7780a8416cbc28ea2205MD54Licencia de uso y publicacion editable RIUD_.pdf.jpgLicencia de uso y publicacion editable RIUD_.pdf.jpgIM Thumbnailimage/jpeg12082https://repository.udistrital.edu.co/bitstreams/45f760fe-1598-452b-a0b9-45f521b3c547/downloadd76d0fd4f6803502ce89cd54f076a95eMD5511349/93784oai:repository.udistrital.edu.co:11349/937842025-03-19 01:04:39.406open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK