Simulación del control de contenedores usando el protocolo MQTT

El internet de las cosas (IoT) se ha convertido en una tecnología que ofrece soluciones, tanto a nivel de software como de hardware, especialmente en dispositivos físicos, los cuales sirven como herramienta en las labores diarias de los seres humanos. De igual manera, posee un conjunto de protocolos...

Full description

Autores:
Valiente Simbaqueba, Brayan David
Guevara Triana, Luis Fernando
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2024
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/41198
Acceso en línea:
http://hdl.handle.net/11349/41198
Palabra clave:
APIS
Broker
Contenedor
MQTT
Simulador
Topics
Ingeniería Telemática -- Tesis y disertaciones académicas
Internet de las cosas (IoT)
Protocolo MQTT
Control de contenedores refrigerados
Monitoreo en tiempo real
Seguridad en el transporte de carga
APIS
Broker
Container
MQTT
Simulator
Topics
Rights
License
Attribution-NonCommercial-NoDerivatives 4.0 Internacional
id UDISTRITA2_d80aac7a1b7461ebc0eef1dd3110c06b
oai_identifier_str oai:repository.udistrital.edu.co:11349/41198
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.none.fl_str_mv Simulación del control de contenedores usando el protocolo MQTT
dc.title.titleenglish.none.fl_str_mv Simulation of container control using the MQTT protocol
title Simulación del control de contenedores usando el protocolo MQTT
spellingShingle Simulación del control de contenedores usando el protocolo MQTT
APIS
Broker
Contenedor
MQTT
Simulador
Topics
Ingeniería Telemática -- Tesis y disertaciones académicas
Internet de las cosas (IoT)
Protocolo MQTT
Control de contenedores refrigerados
Monitoreo en tiempo real
Seguridad en el transporte de carga
APIS
Broker
Container
MQTT
Simulator
Topics
title_short Simulación del control de contenedores usando el protocolo MQTT
title_full Simulación del control de contenedores usando el protocolo MQTT
title_fullStr Simulación del control de contenedores usando el protocolo MQTT
title_full_unstemmed Simulación del control de contenedores usando el protocolo MQTT
title_sort Simulación del control de contenedores usando el protocolo MQTT
dc.creator.fl_str_mv Valiente Simbaqueba, Brayan David
Guevara Triana, Luis Fernando
dc.contributor.advisor.none.fl_str_mv Hernández Gutiérrez, Jairo
dc.contributor.author.none.fl_str_mv Valiente Simbaqueba, Brayan David
Guevara Triana, Luis Fernando
dc.contributor.orcid.none.fl_str_mv Hernández Gutiérrez, Jairo [0000-0003-3908-2763]
dc.subject.spa.fl_str_mv APIS
Broker
Contenedor
MQTT
Simulador
Topics
topic APIS
Broker
Contenedor
MQTT
Simulador
Topics
Ingeniería Telemática -- Tesis y disertaciones académicas
Internet de las cosas (IoT)
Protocolo MQTT
Control de contenedores refrigerados
Monitoreo en tiempo real
Seguridad en el transporte de carga
APIS
Broker
Container
MQTT
Simulator
Topics
dc.subject.lemb.none.fl_str_mv Ingeniería Telemática -- Tesis y disertaciones académicas
Internet de las cosas (IoT)
Protocolo MQTT
Control de contenedores refrigerados
Monitoreo en tiempo real
Seguridad en el transporte de carga
dc.subject.keyword.spa.fl_str_mv APIS
Broker
Container
MQTT
Simulator
Topics
description El internet de las cosas (IoT) se ha convertido en una tecnología que ofrece soluciones, tanto a nivel de software como de hardware, especialmente en dispositivos físicos, los cuales sirven como herramienta en las labores diarias de los seres humanos. De igual manera, posee un conjunto de protocolos para el flujo de mensajes que permiten la comunicación entre varias aplicaciones de forma asíncrona, lo cual es una alternativa para la interacción máquina a máquina (M2M). Una problemática que se viene presentado en la industria del transporte de carga y logística es la del control de sus contenedores refrigerados, que, en la mayoría de los casos, muestran inconvenientes frente a su ubicación en tiempo real y la revisión de temperatura; dos temas que preocupan al gremio transportador por la falta de seguridad en las carreteras y la conservación de los productos que distribuyen, llevando a una posible pérdida de mercancía. Se diseñó un aplicativo en JavaScript basado en el protocolo de comunicación MQTT que utiliza un modelo publicación y suscripción, definido por dos tipos de entidades de red: un broker de mensajes que hace el papel de servidor y los clientes que pueden ser sensores, aplicaciones u objetos que interactúan con el broker, dichos clientes se conectan con el broker por medio de una suscripción a un “Topic”, el cliente envía publicaciones al broker, y el broker se encarga de distribuirlas a todos los clientes que pertenecen a ese “Topic”. Como resultado se brinda la posibilidad de evaluar el estado de la mercancía remotamente, permitiendo consultar y cambiar los datos de refrigeración, asimismo, el estado de encendido y apagado del contenedor, configurar alertas a través de un envío de correo electrónico y verificar mediante un Sistema de Posicionamiento Global (GPS), en qué lugar se encuentra ubicado elvehículo; internamente existe un algoritmo que simula el envío de datos masivos y aleatorios vii cada quinientos milisegundos, y se establece la configuración de temperaturas que están bajo un rango de menos cincuenta a cincuenta grados, alcanzando así, una mayor precisión y control de los contenedores. Con la implementación del protocolo de comunicación MQTT y el desarrollo de la aplicación, se logró evidenciar en un ambiente controlado, la configuración, monitoreo y gestión de contenedores; teniendo como base un desempeño óptimo en la visualización de los datos en tiempo real, de igual forma, el diagnóstico de fallos y generación de alertas que permiten mitigar los daños de mercancía y disminuir los riesgos de seguridad en el transporte.
publishDate 2024
dc.date.accessioned.none.fl_str_mv 2024-10-03T16:05:32Z
dc.date.available.none.fl_str_mv 2024-10-03T16:05:32Z
dc.date.created.none.fl_str_mv 2024-04-11
dc.type.spa.fl_str_mv bachelorThesis
dc.type.degree.spa.fl_str_mv Monografía
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
format http://purl.org/coar/resource_type/c_7a1f
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/41198
url http://hdl.handle.net/11349/41198
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Attribution-NonCommercial-NoDerivatives 4.0 Internacional
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.acceso.spa.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Attribution-NonCommercial-NoDerivatives 4.0 Internacional
http://creativecommons.org/licenses/by-nc-nd/4.0/
Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.spa.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/3110943a-8a35-4461-a86e-74dc4ba97541/download
https://repository.udistrital.edu.co/bitstreams/b77f7b07-9235-42e8-ad92-62b2ae61d8b9/download
https://repository.udistrital.edu.co/bitstreams/d10e99ea-09c1-401d-b0d5-427d41206b83/download
https://repository.udistrital.edu.co/bitstreams/63d57e83-9368-497c-93fa-9c032c5e8d25/download
https://repository.udistrital.edu.co/bitstreams/6769a803-7d6a-4869-8740-28a60ff4a833/download
https://repository.udistrital.edu.co/bitstreams/2c405a04-53a7-493c-8f18-1be286b945b8/download
https://repository.udistrital.edu.co/bitstreams/9aa81990-9296-44e0-b0e0-51de93630dc3/download
bitstream.checksum.fl_str_mv 648d495193a5ca9f8a50efc8c65b2239
e0639cdea01c1fd52f0ad98c57c80648
54cd36d3ba8c78bf237bcfd3fa5fd124
4460e5956bc1d1639be9ae6146a50347
997daf6c648c962d566d7b082dac908d
200e42d9487086da4f86ec8b9c356a46
d4459952c9439a0dbe08154f86481b20
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1828165569814200320
spelling Hernández Gutiérrez, JairoValiente Simbaqueba, Brayan DavidGuevara Triana, Luis FernandoHernández Gutiérrez, Jairo [0000-0003-3908-2763]2024-10-03T16:05:32Z2024-10-03T16:05:32Z2024-04-11http://hdl.handle.net/11349/41198El internet de las cosas (IoT) se ha convertido en una tecnología que ofrece soluciones, tanto a nivel de software como de hardware, especialmente en dispositivos físicos, los cuales sirven como herramienta en las labores diarias de los seres humanos. De igual manera, posee un conjunto de protocolos para el flujo de mensajes que permiten la comunicación entre varias aplicaciones de forma asíncrona, lo cual es una alternativa para la interacción máquina a máquina (M2M). Una problemática que se viene presentado en la industria del transporte de carga y logística es la del control de sus contenedores refrigerados, que, en la mayoría de los casos, muestran inconvenientes frente a su ubicación en tiempo real y la revisión de temperatura; dos temas que preocupan al gremio transportador por la falta de seguridad en las carreteras y la conservación de los productos que distribuyen, llevando a una posible pérdida de mercancía. Se diseñó un aplicativo en JavaScript basado en el protocolo de comunicación MQTT que utiliza un modelo publicación y suscripción, definido por dos tipos de entidades de red: un broker de mensajes que hace el papel de servidor y los clientes que pueden ser sensores, aplicaciones u objetos que interactúan con el broker, dichos clientes se conectan con el broker por medio de una suscripción a un “Topic”, el cliente envía publicaciones al broker, y el broker se encarga de distribuirlas a todos los clientes que pertenecen a ese “Topic”. Como resultado se brinda la posibilidad de evaluar el estado de la mercancía remotamente, permitiendo consultar y cambiar los datos de refrigeración, asimismo, el estado de encendido y apagado del contenedor, configurar alertas a través de un envío de correo electrónico y verificar mediante un Sistema de Posicionamiento Global (GPS), en qué lugar se encuentra ubicado elvehículo; internamente existe un algoritmo que simula el envío de datos masivos y aleatorios vii cada quinientos milisegundos, y se establece la configuración de temperaturas que están bajo un rango de menos cincuenta a cincuenta grados, alcanzando así, una mayor precisión y control de los contenedores. Con la implementación del protocolo de comunicación MQTT y el desarrollo de la aplicación, se logró evidenciar en un ambiente controlado, la configuración, monitoreo y gestión de contenedores; teniendo como base un desempeño óptimo en la visualización de los datos en tiempo real, de igual forma, el diagnóstico de fallos y generación de alertas que permiten mitigar los daños de mercancía y disminuir los riesgos de seguridad en el transporte.The Internet of Things (IoT) has become a technology that offers solutions, both to software and hardware level, especially in physical devices, which serve as a tool in the daily work of human beings. Likewise, it has a set of protocols for the flow of messages that allow communication between several applications asynchronously, which is an alternative for machine-to-machine interaction machine (M2M). A problem that has been presented in the cargo transportation and logistics industry is the of the control of its refrigerated containers, which, in most cases, show inconveniences regarding its real-time location and temperature review; two topics that The transport union is concerned about the lack of safety on the roads and the conservation of the products they distribute, causing a possible loss of merchandise. A JavaScript application was designed based on the MQTT communication protocol that uses a publish-subscribe model, defined by two types of network entities: a broker messages that plays the role of server and clients that can be sensors, applications or that interact with the broker, said clients connect with objects of the broker through a subscription to a “Topic”, the client sends publications to the broker, and the broker is in charge of distribute them to all the clients that belong to that “Topic”. As a result, the possibility of evaluating the status of the merchandise remotely is provided, allowing you to consult and change the cooling data, as well as the power-on status and container shutdown, configure alerts via an email send and verify through a Global Positioning System (GPS), where the vehicle is located; Internally there is an algorithm that simulates the sending of massive and random data vii every five hundred milliseconds, and the temperature settings are established that are under a range of minus fifty to fifty degrees, thus achieving greater precision and control of The containers. With the implementation of the MQTT communication protocol and the development of the application, managed to demonstrate in a controlled environment, the configuration, monitoring and management of containers; based on optimal performance in the visualization of data in in real time, in the same way, the diagnosis of failures and generation of alerts that allow mitigating damage to merchandise and reduce security risks in transportation.pdfspaAttribution-NonCommercial-NoDerivatives 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2APISBrokerContenedorMQTTSimuladorTopicsIngeniería Telemática -- Tesis y disertaciones académicasInternet de las cosas (IoT)Protocolo MQTTControl de contenedores refrigeradosMonitoreo en tiempo realSeguridad en el transporte de cargaAPISBrokerContainerMQTTSimulatorTopicsSimulación del control de contenedores usando el protocolo MQTTSimulation of container control using the MQTT protocolbachelorThesisMonografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALValienteBrayanDavidYGuevaraLuisFernando2024.pdfValienteBrayanDavidYGuevaraLuisFernando2024.pdfTrabajo de gradoapplication/pdf1872541https://repository.udistrital.edu.co/bitstreams/3110943a-8a35-4461-a86e-74dc4ba97541/download648d495193a5ca9f8a50efc8c65b2239MD51ValienteBrayanDavidYGuevaraLuisFernandoAnexos2024.zipValienteBrayanDavidYGuevaraLuisFernandoAnexos2024.zipAnexos application/zip3936956https://repository.udistrital.edu.co/bitstreams/b77f7b07-9235-42e8-ad92-62b2ae61d8b9/downloade0639cdea01c1fd52f0ad98c57c80648MD52Licencia y autorización de los autores para publicar.pdfLicencia y autorización de los autores para publicar.pdfLicencia de uso y publicaciónapplication/pdf229128https://repository.udistrital.edu.co/bitstreams/d10e99ea-09c1-401d-b0d5-427d41206b83/download54cd36d3ba8c78bf237bcfd3fa5fd124MD53CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://repository.udistrital.edu.co/bitstreams/63d57e83-9368-497c-93fa-9c032c5e8d25/download4460e5956bc1d1639be9ae6146a50347MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/6769a803-7d6a-4869-8740-28a60ff4a833/download997daf6c648c962d566d7b082dac908dMD55THUMBNAILValienteBrayanDavidYGuevaraLuisFernando2024.pdf.jpgValienteBrayanDavidYGuevaraLuisFernando2024.pdf.jpgIM Thumbnailimage/jpeg2607https://repository.udistrital.edu.co/bitstreams/2c405a04-53a7-493c-8f18-1be286b945b8/download200e42d9487086da4f86ec8b9c356a46MD56Licencia y autorización de los autores para publicar.pdf.jpgLicencia y autorización de los autores para publicar.pdf.jpgIM Thumbnailimage/jpeg9503https://repository.udistrital.edu.co/bitstreams/9aa81990-9296-44e0-b0e0-51de93630dc3/downloadd4459952c9439a0dbe08154f86481b20MD5711349/41198oai:repository.udistrital.edu.co:11349/411982024-12-07 01:05:49.93http://creativecommons.org/licenses/by-nc-nd/4.0/Attribution-NonCommercial-NoDerivatives 4.0 Internacionalopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK