Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine

Este proyecto de investigación se enfocó en el desarrollo y la implementación de un modelo virtual de una mano robótica, la cual pudiera ser controlada mediante la captura de movimientos físicos a partir de una integración de datos en Unreal Engine. En ese sentido, se busca explorar y comprender la...

Full description

Autores:
Jáuregui Rozo, Juan Manuel
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2025
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
spa
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/76221
Acceso en línea:
https://hdl.handle.net/1992/76221
Palabra clave:
Unreal Engine
Blender
Visual Studio
Sockets
Robótica
Mano
Ingeniería
Rights
openAccess
License
Attribution 4.0 International
id UNIANDES2_c9df1ea755685db4f7512c42c0ba02ca
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/76221
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.spa.fl_str_mv Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
title Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
spellingShingle Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
Unreal Engine
Blender
Visual Studio
Sockets
Robótica
Mano
Ingeniería
title_short Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
title_full Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
title_fullStr Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
title_full_unstemmed Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
title_sort Desarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal Engine
dc.creator.fl_str_mv Jáuregui Rozo, Juan Manuel
dc.contributor.advisor.none.fl_str_mv Camargo Leyva, Jonathan
dc.contributor.author.none.fl_str_mv Jáuregui Rozo, Juan Manuel
dc.subject.keyword.eng.fl_str_mv Unreal Engine
Blender
Visual Studio
Sockets
topic Unreal Engine
Blender
Visual Studio
Sockets
Robótica
Mano
Ingeniería
dc.subject.keyword.spa.fl_str_mv Robótica
Mano
dc.subject.themes.spa.fl_str_mv Ingeniería
description Este proyecto de investigación se enfocó en el desarrollo y la implementación de un modelo virtual de una mano robótica, la cual pudiera ser controlada mediante la captura de movimientos físicos a partir de una integración de datos en Unreal Engine. En ese sentido, se busca explorar y comprender la integración entre la realidad virtual y la realidad física, enfocándose en cómo esta relación puede ser aprovechada para el desarrollo de aplicaciones en robótica. Adicionalmente, con este enfoque se puede replicar el comportamiento de sistemas físicos dentro de entornos virtuales altamente controlados y precisos, facilitando la validación de conceptos y el ajuste de comportamientos deseados sin necesidad de contar inicialmente con una implementación física. Actualmente, la robótica es una rama de la ingeniería que es fundamental para el desarrollo de nuevas tecnologías. En este contexto, el uso de manos robóticas es ampliamente extendido en la industria, donde desempeñan roles esenciales en diversos procesos productivos. No obstante, la implementación física de estas soluciones suele enfrentar múltiples desafíos, tales como altos costos, riesgos de fallos mecánicos y limitaciones de prueba. Ante esta situación, surge la necesidad de disponer de entornos virtuales que permitan validar hipótesis y optimizar diseños antes de su materialización. Este proyecto representa una aproximación a dicha necesidad, aprovechando el potencial de la realidad virtual para construir y probar nuevas tecnologías asociadas a manos robóticas, reduciendo las complicaciones inherentes a las implementaciones físicas. Para el desarrollo de este proyecto se utilizaron diversas herramientas tecnológicas, entre las cuales se destacan Blender, Unreal Engine y Visual Studio. Estas plataformas permitieron abordar diferentes etapas del proceso, desde el modelado y rigging del objeto 3D hasta la programación de su comportamiento en un entorno virtual interactivo. Asimismo, se contó con recursos externos, como un modelo CAD de una mano robótica, el cual sirvió como base para la construcción y adaptación del modelo virtual utilizado en esta investigación. Inicialmente, se utilizó Blender para realizar el rigging del modelo CAD de la mano robótica lo cual es fundamental para garantizar la funcionalidad del sistema en su conjunto. El rigging consiste en la creación de un esqueleto interno que permite dotar al modelo 3D de articulaciones y movilidad. En este caso, esta parte fue crucial ya que definió los puntos de rotación de cada falange. Esto permite que más adelante la mano pueda ser animada y controlada de manera precisa en Unreal Engine. Una vez completado el rigging, se realizó la exportación del modelo CAD con el esqueleto funcional a Unreal Engine para su integración dentro del entorno virtual. Utilizando Visual Studio se desarrolló una clase en C++ la cual permitió establecer los parámetros necesarios para permitir la rotación individual de cada falange. Esta integración entre el modelo visual y la lógica programada sentó las bases para que la mano pudiera responder de manera precisa a entradas programadas. Teniendo una mano robótica funcional dentro del entorno virtual, se procedió a desarrollar una interfaz gráfica en Unreal Engine que permitiera al usuario interactuar con el modelo de manera intuitiva y dinámica como si fuera un juego. Esta interfaz fue diseñada para ofrecer dos modos de juego distintos. El primero permite manipular la mano robótica utilizando un control de Xbox One, asignando funciones específicas a los botones para facilitar el movimiento de cada falange. El segundo modo habilita la recepción de ángulos de rotación enviados desde un servidor externo, permitiendo visualizar en tiempo real las transformaciones deseadas sobre la mano. La interfaz incluye un menú principal y un menú de pausa dándole al usuario una experiencia que le permita gestionar el sistema de forma sencilla y eficiente. Un aspecto clave que contribuyó significativamente al desarrollo de este proyecto fue el uso del sistema de Blueprints que ofrece Unreal Engine. Esta herramienta permitió implementar la lógica de interacción, animación y control del modelo. Principalmente, se lograron conectar eventos, estados del juego y gestionar transiciones entre los diferentes modos de juego de manera clara y eficiente. En conjunto con la programación en C++, los Blueprints ofrecieron una integración versátil que aceleró el desarrollo. Este proyecto integra un factor innovador que es la comunicación con sistemas externos que permitan simular entornos más cercanos a aplicaciones reales de la robótica. En este caso, se implementó un servidor utilizando sockets TCP, lo que permitió establecer una conexión estable entre una fuente externa de datos y el entorno virtual de Unreal Engine. A través de esta conexión, el servidor enviaba periódicamente ángulos de rotación para cada falange de la mano robótica, los cuales eran recibidos por el motor y aplicados directamente al modelo. La integración del protocolo TCP resultó clave para demostrar como la mano virtual puede responder a instrucciones en tiempo real provenientes de sistemas externos, abriendo la puerta a futuras aplicaciones en las que dispositivos físicos puedan ser simulados, controlados y probados de forma remota.
publishDate 2025
dc.date.accessioned.none.fl_str_mv 2025-05-30T13:05:09Z
dc.date.available.none.fl_str_mv 2025-05-30T13:05:09Z
dc.date.issued.none.fl_str_mv 2025-05-29
dc.type.none.fl_str_mv Trabajo de grado - Pregrado
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.none.fl_str_mv Text
dc.type.redcol.none.fl_str_mv http://purl.org/redcol/resource_type/TP
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/1992/76221
dc.identifier.instname.none.fl_str_mv instname:Universidad de los Andes
dc.identifier.reponame.none.fl_str_mv reponame:Repositorio Institucional Séneca
dc.identifier.repourl.none.fl_str_mv repourl:https://repositorio.uniandes.edu.co/
url https://hdl.handle.net/1992/76221
identifier_str_mv instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
repourl:https://repositorio.uniandes.edu.co/
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv Koenig, N., & Howard, A. (2004). Design and Use Paradigms for Gazebo, An Open-Source Multi-Robot Simulator. In IEEE/RSJ International Conference on Intelligent Robots and Systems.
Shah, S., Dey, D., Lovett, C., & Kapoor, A. (2017). AirSim: High-Fidelity Visual and Physical Simulation for Autonomous Vehicles. In Field and Service Robotics.
Holden, M. K. (2005). Virtual environments for motor rehabilitation: review. Cyberpsychology & Behavior, 8(3), 187-211.
Levine, S., Pastor, P., Krizhevsky, A., & Quillen, D. (2016). Learning Hand-Eye Coordination for Robotic Grasping with Deep Learning and Large-Scale Data Collection. In ISER.
Blender Foundation, “Blender Manual,” Blender Documentation. [Online]. Available: https://docs.blender.org/manual/en/latest/
Epic Games, “Unreal Engine Documentation,” Unreal Engine. [Online]. Available: https://docs.unrealengine.com/
Microsoft, “Set up the Xbox Wireless Controller on Windows,” Xbox Support. [Online]. Available: https://support.xbox.com/help/hardware-network/controller/connect-xbox-wireless-controller-to-pc
dc.rights.en.fl_str_mv Attribution 4.0 International
dc.rights.uri.none.fl_str_mv http://creativecommons.org/licenses/by/4.0/
dc.rights.accessrights.none.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.coar.none.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv Attribution 4.0 International
http://creativecommons.org/licenses/by/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 36 páginas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de los Andes
dc.publisher.program.none.fl_str_mv Ingeniería Mecánica
dc.publisher.faculty.none.fl_str_mv Facultad de Ingeniería
dc.publisher.department.none.fl_str_mv Departamento de Ingeniería Mecánica
publisher.none.fl_str_mv Universidad de los Andes
institution Universidad de los Andes
bitstream.url.fl_str_mv https://repositorio.uniandes.edu.co/bitstreams/5b7331ed-e762-4de5-800d-d05925810b51/download
https://repositorio.uniandes.edu.co/bitstreams/ef68a9a4-ecd4-41d6-be6e-3660e93062fc/download
https://repositorio.uniandes.edu.co/bitstreams/bdb6e80b-eefc-4705-8047-a093b957650e/download
https://repositorio.uniandes.edu.co/bitstreams/bd1bede5-67a6-49a2-b698-6aeae096f5e9/download
https://repositorio.uniandes.edu.co/bitstreams/28177ce8-d0b8-4185-8ec9-4cdbff815621/download
https://repositorio.uniandes.edu.co/bitstreams/e4a00b9f-9c72-4fe7-84ac-be30a8eef545/download
https://repositorio.uniandes.edu.co/bitstreams/96264978-3acd-40c4-9976-8fd13682a86a/download
https://repositorio.uniandes.edu.co/bitstreams/8104022a-fbc6-4681-bee1-a0ac6b15bb2e/download
bitstream.checksum.fl_str_mv a90e408f37e49782a7d0528737d440c6
096c32135584dd49d1d3f1db28d3d2a8
0175ea4a2d4caec4bbcc37e300941108
ae9e573a68e7f92501b6913cc846c39f
fdfc75d3170ac7fc2e779a90bee2fab4
7b43f7c998c5afe473e900d8fa6c6d12
8ebafa63c8ba78c4631c0e6ce52ff1ed
f5887fb014cf95e691fc49da98a562e1
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio institucional Séneca
repository.mail.fl_str_mv adminrepositorio@uniandes.edu.co
_version_ 1837005385790128128
spelling Al consultar y hacer uso de este recurso, está aceptando las condiciones de uso establecidas por los autoresAttribution 4.0 Internationalhttp://creativecommons.org/licenses/by/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Camargo Leyva, Jonathanvirtual::24123-1Jáuregui Rozo, Juan Manuel2025-05-30T13:05:09Z2025-05-30T13:05:09Z2025-05-29https://hdl.handle.net/1992/76221instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Este proyecto de investigación se enfocó en el desarrollo y la implementación de un modelo virtual de una mano robótica, la cual pudiera ser controlada mediante la captura de movimientos físicos a partir de una integración de datos en Unreal Engine. En ese sentido, se busca explorar y comprender la integración entre la realidad virtual y la realidad física, enfocándose en cómo esta relación puede ser aprovechada para el desarrollo de aplicaciones en robótica. Adicionalmente, con este enfoque se puede replicar el comportamiento de sistemas físicos dentro de entornos virtuales altamente controlados y precisos, facilitando la validación de conceptos y el ajuste de comportamientos deseados sin necesidad de contar inicialmente con una implementación física. Actualmente, la robótica es una rama de la ingeniería que es fundamental para el desarrollo de nuevas tecnologías. En este contexto, el uso de manos robóticas es ampliamente extendido en la industria, donde desempeñan roles esenciales en diversos procesos productivos. No obstante, la implementación física de estas soluciones suele enfrentar múltiples desafíos, tales como altos costos, riesgos de fallos mecánicos y limitaciones de prueba. Ante esta situación, surge la necesidad de disponer de entornos virtuales que permitan validar hipótesis y optimizar diseños antes de su materialización. Este proyecto representa una aproximación a dicha necesidad, aprovechando el potencial de la realidad virtual para construir y probar nuevas tecnologías asociadas a manos robóticas, reduciendo las complicaciones inherentes a las implementaciones físicas. Para el desarrollo de este proyecto se utilizaron diversas herramientas tecnológicas, entre las cuales se destacan Blender, Unreal Engine y Visual Studio. Estas plataformas permitieron abordar diferentes etapas del proceso, desde el modelado y rigging del objeto 3D hasta la programación de su comportamiento en un entorno virtual interactivo. Asimismo, se contó con recursos externos, como un modelo CAD de una mano robótica, el cual sirvió como base para la construcción y adaptación del modelo virtual utilizado en esta investigación. Inicialmente, se utilizó Blender para realizar el rigging del modelo CAD de la mano robótica lo cual es fundamental para garantizar la funcionalidad del sistema en su conjunto. El rigging consiste en la creación de un esqueleto interno que permite dotar al modelo 3D de articulaciones y movilidad. En este caso, esta parte fue crucial ya que definió los puntos de rotación de cada falange. Esto permite que más adelante la mano pueda ser animada y controlada de manera precisa en Unreal Engine. Una vez completado el rigging, se realizó la exportación del modelo CAD con el esqueleto funcional a Unreal Engine para su integración dentro del entorno virtual. Utilizando Visual Studio se desarrolló una clase en C++ la cual permitió establecer los parámetros necesarios para permitir la rotación individual de cada falange. Esta integración entre el modelo visual y la lógica programada sentó las bases para que la mano pudiera responder de manera precisa a entradas programadas. Teniendo una mano robótica funcional dentro del entorno virtual, se procedió a desarrollar una interfaz gráfica en Unreal Engine que permitiera al usuario interactuar con el modelo de manera intuitiva y dinámica como si fuera un juego. Esta interfaz fue diseñada para ofrecer dos modos de juego distintos. El primero permite manipular la mano robótica utilizando un control de Xbox One, asignando funciones específicas a los botones para facilitar el movimiento de cada falange. El segundo modo habilita la recepción de ángulos de rotación enviados desde un servidor externo, permitiendo visualizar en tiempo real las transformaciones deseadas sobre la mano. La interfaz incluye un menú principal y un menú de pausa dándole al usuario una experiencia que le permita gestionar el sistema de forma sencilla y eficiente. Un aspecto clave que contribuyó significativamente al desarrollo de este proyecto fue el uso del sistema de Blueprints que ofrece Unreal Engine. Esta herramienta permitió implementar la lógica de interacción, animación y control del modelo. Principalmente, se lograron conectar eventos, estados del juego y gestionar transiciones entre los diferentes modos de juego de manera clara y eficiente. En conjunto con la programación en C++, los Blueprints ofrecieron una integración versátil que aceleró el desarrollo. Este proyecto integra un factor innovador que es la comunicación con sistemas externos que permitan simular entornos más cercanos a aplicaciones reales de la robótica. En este caso, se implementó un servidor utilizando sockets TCP, lo que permitió establecer una conexión estable entre una fuente externa de datos y el entorno virtual de Unreal Engine. A través de esta conexión, el servidor enviaba periódicamente ángulos de rotación para cada falange de la mano robótica, los cuales eran recibidos por el motor y aplicados directamente al modelo. La integración del protocolo TCP resultó clave para demostrar como la mano virtual puede responder a instrucciones en tiempo real provenientes de sistemas externos, abriendo la puerta a futuras aplicaciones en las que dispositivos físicos puedan ser simulados, controlados y probados de forma remota.Pregrado36 páginasapplication/pdfspaUniversidad de los AndesIngeniería MecánicaFacultad de IngenieríaDepartamento de Ingeniería MecánicaDesarrollo de un modelo virtual de una mano robótica controlado por movimientos físicos mediante integración de datos en Unreal EngineTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPUnreal EngineBlenderVisual StudioSocketsRobóticaManoIngenieríaKoenig, N., & Howard, A. (2004). Design and Use Paradigms for Gazebo, An Open-Source Multi-Robot Simulator. In IEEE/RSJ International Conference on Intelligent Robots and Systems.Shah, S., Dey, D., Lovett, C., & Kapoor, A. (2017). AirSim: High-Fidelity Visual and Physical Simulation for Autonomous Vehicles. In Field and Service Robotics.Holden, M. K. (2005). Virtual environments for motor rehabilitation: review. Cyberpsychology & Behavior, 8(3), 187-211.Levine, S., Pastor, P., Krizhevsky, A., & Quillen, D. (2016). Learning Hand-Eye Coordination for Robotic Grasping with Deep Learning and Large-Scale Data Collection. In ISER.Blender Foundation, “Blender Manual,” Blender Documentation. [Online]. Available: https://docs.blender.org/manual/en/latest/Epic Games, “Unreal Engine Documentation,” Unreal Engine. [Online]. Available: https://docs.unrealengine.com/Microsoft, “Set up the Xbox Wireless Controller on Windows,” Xbox Support. [Online]. Available: https://support.xbox.com/help/hardware-network/controller/connect-xbox-wireless-controller-to-pc201922481Publication0bb50162-7add-44a0-8bf0-a4205f5869a5virtual::24123-10bb50162-7add-44a0-8bf0-a4205f5869a5virtual::24123-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000018833virtual::24123-1ORIGINALDesarrollo_de_un_Modelo_Virtual_de_una_Mano_Robótica.pdfDesarrollo_de_un_Modelo_Virtual_de_una_Mano_Robótica.pdfapplication/pdf1828757https://repositorio.uniandes.edu.co/bitstreams/5b7331ed-e762-4de5-800d-d05925810b51/downloada90e408f37e49782a7d0528737d440c6MD51Formato de Autorización y Entrega de Tesis al Sistema de Bibliotecas - IMEC.pdfFormato de Autorización y Entrega de Tesis al Sistema de Bibliotecas - IMEC.pdfHIDEapplication/pdf425121https://repositorio.uniandes.edu.co/bitstreams/ef68a9a4-ecd4-41d6-be6e-3660e93062fc/download096c32135584dd49d1d3f1db28d3d2a8MD52CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8908https://repositorio.uniandes.edu.co/bitstreams/bdb6e80b-eefc-4705-8047-a093b957650e/download0175ea4a2d4caec4bbcc37e300941108MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-82535https://repositorio.uniandes.edu.co/bitstreams/bd1bede5-67a6-49a2-b698-6aeae096f5e9/downloadae9e573a68e7f92501b6913cc846c39fMD54TEXTDesarrollo_de_un_Modelo_Virtual_de_una_Mano_Robótica.pdf.txtDesarrollo_de_un_Modelo_Virtual_de_una_Mano_Robótica.pdf.txtExtracted texttext/plain52022https://repositorio.uniandes.edu.co/bitstreams/28177ce8-d0b8-4185-8ec9-4cdbff815621/downloadfdfc75d3170ac7fc2e779a90bee2fab4MD55Formato de Autorización y Entrega de Tesis al Sistema de Bibliotecas - IMEC.pdf.txtFormato de Autorización y Entrega de Tesis al Sistema de Bibliotecas - IMEC.pdf.txtExtracted texttext/plain2042https://repositorio.uniandes.edu.co/bitstreams/e4a00b9f-9c72-4fe7-84ac-be30a8eef545/download7b43f7c998c5afe473e900d8fa6c6d12MD57THUMBNAILDesarrollo_de_un_Modelo_Virtual_de_una_Mano_Robótica.pdf.jpgDesarrollo_de_un_Modelo_Virtual_de_una_Mano_Robótica.pdf.jpgIM Thumbnailimage/jpeg7501https://repositorio.uniandes.edu.co/bitstreams/96264978-3acd-40c4-9976-8fd13682a86a/download8ebafa63c8ba78c4631c0e6ce52ff1edMD56Formato de Autorización y Entrega de Tesis al Sistema de Bibliotecas - IMEC.pdf.jpgFormato de Autorización y Entrega de Tesis al Sistema de Bibliotecas - IMEC.pdf.jpgIM Thumbnailimage/jpeg13991https://repositorio.uniandes.edu.co/bitstreams/8104022a-fbc6-4681-bee1-a0ac6b15bb2e/downloadf5887fb014cf95e691fc49da98a562e1MD581992/76221oai:repositorio.uniandes.edu.co:1992/762212025-05-31 04:07:49.496http://creativecommons.org/licenses/by/4.0/Attribution 4.0 Internationalopen.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coPGgzPjxzdHJvbmc+RGVzY2FyZ28gZGUgUmVzcG9uc2FiaWxpZGFkIC0gTGljZW5jaWEgZGUgQXV0b3JpemFjacOzbjwvc3Ryb25nPjwvaDM+CjxwPjxzdHJvbmc+UG9yIGZhdm9yIGxlZXIgYXRlbnRhbWVudGUgZXN0ZSBkb2N1bWVudG8gcXVlIHBlcm1pdGUgYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBTw6luZWNhIHJlcHJvZHVjaXIgeSBkaXN0cmlidWlyIGxvcyByZWN1cnNvcyBkZSBpbmZvcm1hY2nDs24gZGVwb3NpdGFkb3MgbWVkaWFudGUgbGEgYXV0b3JpemFjacOzbiBkZSBsb3Mgc2lndWllbnRlcyB0w6lybWlub3M6PC9zdHJvbmc+PC9wPgo8cD5Db25jZWRhIGxhIGxpY2VuY2lhIGRlIGRlcMOzc2l0byBlc3TDoW5kYXIgc2VsZWNjaW9uYW5kbyBsYSBvcGNpw7NuIDxzdHJvbmc+J0FjZXB0YXIgbG9zIHTDqXJtaW5vcyBhbnRlcmlvcm1lbnRlIGRlc2NyaXRvcyc8L3N0cm9uZz4geSBjb250aW51YXIgZWwgcHJvY2VzbyBkZSBlbnbDrW8gbWVkaWFudGUgZWwgYm90w7NuIDxzdHJvbmc+J1NpZ3VpZW50ZScuPC9zdHJvbmc+PC9wPgo8aHI+CjxwPllvLCBlbiBtaSBjYWxpZGFkIGRlIGF1dG9yIGRlbCB0cmFiYWpvIGRlIHRlc2lzLCBtb25vZ3JhZsOtYSBvIHRyYWJham8gZGUgZ3JhZG8sIGhhZ28gZW50cmVnYSBkZWwgZWplbXBsYXIgcmVzcGVjdGl2byB5IGRlIHN1cyBhbmV4b3MgZGUgc2VyIGVsIGNhc28sIGVuIGZvcm1hdG8gZGlnaXRhbCB5L28gZWxlY3Ryw7NuaWNvIHkgYXV0b3Jpem8gYSBsYSBVbml2ZXJzaWRhZCBkZSBsb3MgQW5kZXMgcGFyYSBxdWUgcmVhbGljZSBsYSBwdWJsaWNhY2nDs24gZW4gZWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpc3RlbWEgbyBiYXNlIGRlIGRhdG9zIHByb3BpbyBvIGFqZW5vIGEgbGEgVW5pdmVyc2lkYWQgeSBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgTGV5IDQ0IGRlIDE5OTMsIERlY2lzacOzbiBBbmRpbmEgMzUxIGRlIDE5OTMsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBsYSBtYXRlcmlhLCB1dGlsaWNlIGVuIHRvZGFzIHN1cyBmb3JtYXMsIGxvcyBkZXJlY2hvcyBwYXRyaW1vbmlhbGVzIGRlIHJlcHJvZHVjY2nDs24sIGNvbXVuaWNhY2nDs24gcMO6YmxpY2EsIHRyYW5zZm9ybWFjacOzbiB5IGRpc3RyaWJ1Y2nDs24gKGFscXVpbGVyLCBwcsOpc3RhbW8gcMO6YmxpY28gZSBpbXBvcnRhY2nDs24pIHF1ZSBtZSBjb3JyZXNwb25kZW4gY29tbyBjcmVhZG9yIGRlIGxhIG9icmEgb2JqZXRvIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8uPC9wPgo8cD5MYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGVtaXRlIGVuIGNhbGlkYWQgZGUgYXV0b3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50byB5IG5vIGNvcnJlc3BvbmRlIGEgY2VzacOzbiBkZSBkZXJlY2hvcywgc2lubyBhIGxhIGF1dG9yaXphY2nDs24gZGUgdXNvIGFjYWTDqW1pY28gZGUgY29uZm9ybWlkYWQgY29uIGxvIGFudGVyaW9ybWVudGUgc2XDsWFsYWRvLiBMYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgZXh0ZW5zaXZhIG5vIHNvbG8gYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIHVzbyBzb2JyZSBsYSBvYnJhIGVuIGZvcm1hdG8gbyBzb3BvcnRlIG1hdGVyaWFsLCBzaW5vIHRhbWJpw6luIHBhcmEgZm9ybWF0byBlbGVjdHLDs25pY28sIHkgZW4gZ2VuZXJhbCBwYXJhIGN1YWxxdWllciBmb3JtYXRvIGNvbm9jaWRvIG8gcG9yIGNvbm9jZXIuPC9wPgo8cD5FbCBhdXRvciwgbWFuaWZpZXN0YSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zLCBwb3IgbG8gdGFudG8sIGxhIG9icmEgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgbGEgbWlzbWEuPC9wPgo8cD5FbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLjwvcD4KPHA+U2kgdGllbmUgYWxndW5hIGR1ZGEgc29icmUgbGEgbGljZW5jaWEsIHBvciBmYXZvciwgY29udGFjdGUgY29uIGVsIDxhIGhyZWY9Im1haWx0bzpiaWJsaW90ZWNhQHVuaWFuZGVzLmVkdS5jbyIgdGFyZ2V0PSJfYmxhbmsiPkFkbWluaXN0cmFkb3IgZGVsIFNpc3RlbWEuPC9hPjwvcD4K