Towards a choreography-based approach for service integration in smart cities

Integrating heterogeneous services in smart cities demands scalable, secure, agile, and flexible solutions that can adapt to complex, dynamic environments. Current approaches primarily use orchestration, which relies on a central controller, leading to limitations such as increased bottlenecks, redu...

Full description

Autores:
Zuliani Escalante, Marco
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2024
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
eng
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/75427
Acceso en línea:
https://hdl.handle.net/1992/75427
Palabra clave:
Service integration
Choreography
Smart cities
Ingeniería
Rights
openAccess
License
https://repositorio.uniandes.edu.co/static/pdf/aceptacion_uso_es.pdf
id UNIANDES2_777fd85815d44440227af894529eb544
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/75427
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.eng.fl_str_mv Towards a choreography-based approach for service integration in smart cities
title Towards a choreography-based approach for service integration in smart cities
spellingShingle Towards a choreography-based approach for service integration in smart cities
Service integration
Choreography
Smart cities
Ingeniería
title_short Towards a choreography-based approach for service integration in smart cities
title_full Towards a choreography-based approach for service integration in smart cities
title_fullStr Towards a choreography-based approach for service integration in smart cities
title_full_unstemmed Towards a choreography-based approach for service integration in smart cities
title_sort Towards a choreography-based approach for service integration in smart cities
dc.creator.fl_str_mv Zuliani Escalante, Marco
dc.contributor.advisor.none.fl_str_mv Bocanegra Garcia, Jose Joaquin
dc.contributor.author.none.fl_str_mv Zuliani Escalante, Marco
dc.subject.keyword.eng.fl_str_mv Service integration
Choreography
Smart cities
topic Service integration
Choreography
Smart cities
Ingeniería
dc.subject.themes.spa.fl_str_mv Ingeniería
description Integrating heterogeneous services in smart cities demands scalable, secure, agile, and flexible solutions that can adapt to complex, dynamic environments. Current approaches primarily use orchestration, which relies on a central controller, leading to limitations such as increased bottlenecks, reduced adaptability, and greater data vulnerability. This project proposes a choreography-based approach to address these limitations by enabling decentralized service communication through events and messages. To implement this solution, a systematic selection process identified the most suitable tool for choreography, beginning with broad criteria that narrowed down to three tools and concluding with a metrics-based evaluation of performance and technical suitability. This comparative analysis resulted in the selection of the tool best suited for choreography in smart city use cases. The findings suggest that choreography enhances scalability, reduces bottlenecks, and allows each service to manage its own data autonomously, ensuring control and minimizing sensitive data leaks. Overall, this research contributes to identifying the most effective tool for implementing choreography-based service integration in smart cities.
publishDate 2024
dc.date.issued.none.fl_str_mv 2024-12-11
dc.date.accessioned.none.fl_str_mv 2025-01-15T15:15:22Z
dc.date.available.none.fl_str_mv 2025-01-15T15:15:22Z
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/75427
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/75427
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 eng
language eng
dc.relation.references.none.fl_str_mv Schuch, R., Frantz, R. Z., Bocanegra, J., Roos-Frantz, F., Sawicki, S., & Molina-Jiménez, C. (2024). Digital services integration in smart cities: A trusted execution environment-based solution. In Proceedings of the 27th Ibero-American Congress on Software Engineering (CIBSE 2024) (pp. 437-438). Porto Alegre: Sociedade Brasileira de Computação. https://doi.org/10.5753/cibse.2024.28534
Peltz, C. (2023). Web services orchestration and choreography. Computer, 36(10), 46–52. https://doi.org/10.1109/MC.2003.1236471
Brogi, A., Canal, C., & Pimentel, E. (2004). Formalizing web service choreographies. Electronic Notes in Theoretical Computer Science. https://doi.org/10.1016/j.entcs.2004.05.007
Valderas, P., Torres Bosch, M. V., & Pelechano Ferragud, V. (2020). A microservice composition approach based on the choreography of BPMN fragments. Information and Software Technology, 127, 1-17. https://doi.org/10.1016/j.infsof.2020.106370
Savara Project. (2014). Savara – Architecture: From art to engineering. https://www.jboss.org/savara
Cloud Native Computing Foundation. (2023). Cloud Native Landscape. https://landscape.cncf.io/
Apache Kafka Project. (2024). Apache Kafka. https://kafka.apache.org/
Apache Pulsar Project. (2024). Apache Pulsar. https://pulsar.apache.org/
RabbitMQ. (2024). RabbitMQ. https://www.rabbitmq.com/
Guo, F., Zhang, Y., & Yu, G. (2020). A fair comparison of message queuing systems. IEEE Access, 8, 3046503. https://doi.org/10.1109/ACCESS.2020.3046503
Schumeth, J. (2024). Evaluation of message brokers for interprocess communication in a microservice architecture (Masters thesis). University of Applied Sciences FH Campus Wien.
Normelli, G. (2024). Benchmarking message brokers on Kubernetes: A case study in how to evaluate inter-service communication technology (Masters thesis). KTH, School of Electrical Engineering and Computer Science (EECS).
Andström, V. (2024). A comparative analysis of Apache Kafka and Apache Pulsar (Master’s thesis). University of Helsinki, Faculty of Science.
Chy, M. S. H., et al. (2023). Comparative evaluation of Java Virtual Machine-based message queue services: A study on Kafka, Artemis, Pulsar, and RocketMQ. Electronics, 12(23). https://doi.org/10.3390/electronics12234792
Japink, P. (2022). Redis, Apache Kafka, RabbitMQ: Effect of choosing event-streaming middleware upon architectural constraints defined by non-functional requirements in event-driven microservice architectures. Enschede, The Netherlands.
dc.rights.uri.none.fl_str_mv https://repositorio.uniandes.edu.co/static/pdf/aceptacion_uso_es.pdf
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 https://repositorio.uniandes.edu.co/static/pdf/aceptacion_uso_es.pdf
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 23 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 de Sistemas y Computación
dc.publisher.faculty.none.fl_str_mv Facultad de Ingeniería
dc.publisher.department.none.fl_str_mv Departamento de Ingeniería de Sistemas y Computación
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/9cadbf21-c8c1-4d89-be37-79f2d51e0fb1/download
https://repositorio.uniandes.edu.co/bitstreams/fc9d4491-03ad-4304-970c-945b11cf199f/download
https://repositorio.uniandes.edu.co/bitstreams/c7afe6b5-08c5-4531-8f12-cb6b624f8261/download
https://repositorio.uniandes.edu.co/bitstreams/2a41ab81-ffa8-4057-840f-17bf702fc5cd/download
https://repositorio.uniandes.edu.co/bitstreams/649a79e3-0ce9-4349-b3f9-1bec94c3c1f9/download
https://repositorio.uniandes.edu.co/bitstreams/a0eaf811-0794-422c-bbc6-b5790217c42e/download
https://repositorio.uniandes.edu.co/bitstreams/3c72c491-8bd8-42eb-8b0d-8f09bc7b03fa/download
bitstream.checksum.fl_str_mv 18e9cb9c38f366cdead955650b0af8d9
450ce7d249a7dd969ab60e4aa0d34b3d
ae9e573a68e7f92501b6913cc846c39f
b123805438bede15248dcc8e67ab40f3
c9d5b145b57590aa54425e31974d722e
48c8f638a98e5db1875eebd74582ca62
47f71dfa6bbe8a26d5f4ec983844f6e3
bitstream.checksumAlgorithm.fl_str_mv 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_ 1831927723579146240
spelling Bocanegra Garcia, Jose Joaquinvirtual::22104-1Zuliani Escalante, Marco2025-01-15T15:15:22Z2025-01-15T15:15:22Z2024-12-11https://hdl.handle.net/1992/75427instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Integrating heterogeneous services in smart cities demands scalable, secure, agile, and flexible solutions that can adapt to complex, dynamic environments. Current approaches primarily use orchestration, which relies on a central controller, leading to limitations such as increased bottlenecks, reduced adaptability, and greater data vulnerability. This project proposes a choreography-based approach to address these limitations by enabling decentralized service communication through events and messages. To implement this solution, a systematic selection process identified the most suitable tool for choreography, beginning with broad criteria that narrowed down to three tools and concluding with a metrics-based evaluation of performance and technical suitability. This comparative analysis resulted in the selection of the tool best suited for choreography in smart city use cases. The findings suggest that choreography enhances scalability, reduces bottlenecks, and allows each service to manage its own data autonomously, ensuring control and minimizing sensitive data leaks. Overall, this research contributes to identifying the most effective tool for implementing choreography-based service integration in smart cities.Pregrado23 páginasapplication/pdfengUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería de Sistemas y Computaciónhttps://repositorio.uniandes.edu.co/static/pdf/aceptacion_uso_es.pdfinfo:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Towards a choreography-based approach for service integration in smart citiesTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPService integrationChoreographySmart citiesIngenieríaSchuch, R., Frantz, R. Z., Bocanegra, J., Roos-Frantz, F., Sawicki, S., & Molina-Jiménez, C. (2024). Digital services integration in smart cities: A trusted execution environment-based solution. In Proceedings of the 27th Ibero-American Congress on Software Engineering (CIBSE 2024) (pp. 437-438). Porto Alegre: Sociedade Brasileira de Computação. https://doi.org/10.5753/cibse.2024.28534Peltz, C. (2023). Web services orchestration and choreography. Computer, 36(10), 46–52. https://doi.org/10.1109/MC.2003.1236471Brogi, A., Canal, C., & Pimentel, E. (2004). Formalizing web service choreographies. Electronic Notes in Theoretical Computer Science. https://doi.org/10.1016/j.entcs.2004.05.007Valderas, P., Torres Bosch, M. V., & Pelechano Ferragud, V. (2020). A microservice composition approach based on the choreography of BPMN fragments. Information and Software Technology, 127, 1-17. https://doi.org/10.1016/j.infsof.2020.106370Savara Project. (2014). Savara – Architecture: From art to engineering. https://www.jboss.org/savaraCloud Native Computing Foundation. (2023). Cloud Native Landscape. https://landscape.cncf.io/Apache Kafka Project. (2024). Apache Kafka. https://kafka.apache.org/Apache Pulsar Project. (2024). Apache Pulsar. https://pulsar.apache.org/RabbitMQ. (2024). RabbitMQ. https://www.rabbitmq.com/Guo, F., Zhang, Y., & Yu, G. (2020). A fair comparison of message queuing systems. IEEE Access, 8, 3046503. https://doi.org/10.1109/ACCESS.2020.3046503Schumeth, J. (2024). Evaluation of message brokers for interprocess communication in a microservice architecture (Masters thesis). University of Applied Sciences FH Campus Wien.Normelli, G. (2024). Benchmarking message brokers on Kubernetes: A case study in how to evaluate inter-service communication technology (Masters thesis). KTH, School of Electrical Engineering and Computer Science (EECS).Andström, V. (2024). A comparative analysis of Apache Kafka and Apache Pulsar (Master’s thesis). University of Helsinki, Faculty of Science.Chy, M. S. H., et al. (2023). Comparative evaluation of Java Virtual Machine-based message queue services: A study on Kafka, Artemis, Pulsar, and RocketMQ. Electronics, 12(23). https://doi.org/10.3390/electronics12234792Japink, P. (2022). Redis, Apache Kafka, RabbitMQ: Effect of choosing event-streaming middleware upon architectural constraints defined by non-functional requirements in event-driven microservice architectures. Enschede, The Netherlands.202022412Publication0000-0002-8342-7346virtual::22104-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000425192virtual::22104-185f75f85-ca3a-4d29-bd1c-312b6813e2a8virtual::22104-185f75f85-ca3a-4d29-bd1c-312b6813e2a8virtual::22104-1ORIGINALTowards a Choreography-Based Approach for Service Integration in Smart Cities.pdfTowards a Choreography-Based Approach for Service Integration in Smart Cities.pdfapplication/pdf863525https://repositorio.uniandes.edu.co/bitstreams/9cadbf21-c8c1-4d89-be37-79f2d51e0fb1/download18e9cb9c38f366cdead955650b0af8d9MD51autorizacion tesis.pdfautorizacion tesis.pdfHIDEapplication/pdf312737https://repositorio.uniandes.edu.co/bitstreams/fc9d4491-03ad-4304-970c-945b11cf199f/download450ce7d249a7dd969ab60e4aa0d34b3dMD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82535https://repositorio.uniandes.edu.co/bitstreams/c7afe6b5-08c5-4531-8f12-cb6b624f8261/downloadae9e573a68e7f92501b6913cc846c39fMD53TEXTTowards a Choreography-Based Approach for Service Integration in Smart Cities.pdf.txtTowards a Choreography-Based Approach for Service Integration in Smart Cities.pdf.txtExtracted texttext/plain71128https://repositorio.uniandes.edu.co/bitstreams/2a41ab81-ffa8-4057-840f-17bf702fc5cd/downloadb123805438bede15248dcc8e67ab40f3MD54autorizacion tesis.pdf.txtautorizacion tesis.pdf.txtExtracted texttext/plain2009https://repositorio.uniandes.edu.co/bitstreams/649a79e3-0ce9-4349-b3f9-1bec94c3c1f9/downloadc9d5b145b57590aa54425e31974d722eMD56THUMBNAILTowards a Choreography-Based Approach for Service Integration in Smart Cities.pdf.jpgTowards a Choreography-Based Approach for Service Integration in Smart Cities.pdf.jpgGenerated Thumbnailimage/jpeg7728https://repositorio.uniandes.edu.co/bitstreams/a0eaf811-0794-422c-bbc6-b5790217c42e/download48c8f638a98e5db1875eebd74582ca62MD55autorizacion tesis.pdf.jpgautorizacion tesis.pdf.jpgGenerated Thumbnailimage/jpeg10963https://repositorio.uniandes.edu.co/bitstreams/3c72c491-8bd8-42eb-8b0d-8f09bc7b03fa/download47f71dfa6bbe8a26d5f4ec983844f6e3MD571992/75427oai:repositorio.uniandes.edu.co:1992/754272025-03-05 10:02:24.261https://repositorio.uniandes.edu.co/static/pdf/aceptacion_uso_es.pdfopen.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coPGgzPjxzdHJvbmc+RGVzY2FyZ28gZGUgUmVzcG9uc2FiaWxpZGFkIC0gTGljZW5jaWEgZGUgQXV0b3JpemFjacOzbjwvc3Ryb25nPjwvaDM+CjxwPjxzdHJvbmc+UG9yIGZhdm9yIGxlZXIgYXRlbnRhbWVudGUgZXN0ZSBkb2N1bWVudG8gcXVlIHBlcm1pdGUgYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBTw6luZWNhIHJlcHJvZHVjaXIgeSBkaXN0cmlidWlyIGxvcyByZWN1cnNvcyBkZSBpbmZvcm1hY2nDs24gZGVwb3NpdGFkb3MgbWVkaWFudGUgbGEgYXV0b3JpemFjacOzbiBkZSBsb3Mgc2lndWllbnRlcyB0w6lybWlub3M6PC9zdHJvbmc+PC9wPgo8cD5Db25jZWRhIGxhIGxpY2VuY2lhIGRlIGRlcMOzc2l0byBlc3TDoW5kYXIgc2VsZWNjaW9uYW5kbyBsYSBvcGNpw7NuIDxzdHJvbmc+J0FjZXB0YXIgbG9zIHTDqXJtaW5vcyBhbnRlcmlvcm1lbnRlIGRlc2NyaXRvcyc8L3N0cm9uZz4geSBjb250aW51YXIgZWwgcHJvY2VzbyBkZSBlbnbDrW8gbWVkaWFudGUgZWwgYm90w7NuIDxzdHJvbmc+J1NpZ3VpZW50ZScuPC9zdHJvbmc+PC9wPgo8aHI+CjxwPllvLCBlbiBtaSBjYWxpZGFkIGRlIGF1dG9yIGRlbCB0cmFiYWpvIGRlIHRlc2lzLCBtb25vZ3JhZsOtYSBvIHRyYWJham8gZGUgZ3JhZG8sIGhhZ28gZW50cmVnYSBkZWwgZWplbXBsYXIgcmVzcGVjdGl2byB5IGRlIHN1cyBhbmV4b3MgZGUgc2VyIGVsIGNhc28sIGVuIGZvcm1hdG8gZGlnaXRhbCB5L28gZWxlY3Ryw7NuaWNvIHkgYXV0b3Jpem8gYSBsYSBVbml2ZXJzaWRhZCBkZSBsb3MgQW5kZXMgcGFyYSBxdWUgcmVhbGljZSBsYSBwdWJsaWNhY2nDs24gZW4gZWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpc3RlbWEgbyBiYXNlIGRlIGRhdG9zIHByb3BpbyBvIGFqZW5vIGEgbGEgVW5pdmVyc2lkYWQgeSBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgTGV5IDQ0IGRlIDE5OTMsIERlY2lzacOzbiBBbmRpbmEgMzUxIGRlIDE5OTMsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBsYSBtYXRlcmlhLCB1dGlsaWNlIGVuIHRvZGFzIHN1cyBmb3JtYXMsIGxvcyBkZXJlY2hvcyBwYXRyaW1vbmlhbGVzIGRlIHJlcHJvZHVjY2nDs24sIGNvbXVuaWNhY2nDs24gcMO6YmxpY2EsIHRyYW5zZm9ybWFjacOzbiB5IGRpc3RyaWJ1Y2nDs24gKGFscXVpbGVyLCBwcsOpc3RhbW8gcMO6YmxpY28gZSBpbXBvcnRhY2nDs24pIHF1ZSBtZSBjb3JyZXNwb25kZW4gY29tbyBjcmVhZG9yIGRlIGxhIG9icmEgb2JqZXRvIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8uPC9wPgo8cD5MYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGVtaXRlIGVuIGNhbGlkYWQgZGUgYXV0b3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50byB5IG5vIGNvcnJlc3BvbmRlIGEgY2VzacOzbiBkZSBkZXJlY2hvcywgc2lubyBhIGxhIGF1dG9yaXphY2nDs24gZGUgdXNvIGFjYWTDqW1pY28gZGUgY29uZm9ybWlkYWQgY29uIGxvIGFudGVyaW9ybWVudGUgc2XDsWFsYWRvLiBMYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgZXh0ZW5zaXZhIG5vIHNvbG8gYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIHVzbyBzb2JyZSBsYSBvYnJhIGVuIGZvcm1hdG8gbyBzb3BvcnRlIG1hdGVyaWFsLCBzaW5vIHRhbWJpw6luIHBhcmEgZm9ybWF0byBlbGVjdHLDs25pY28sIHkgZW4gZ2VuZXJhbCBwYXJhIGN1YWxxdWllciBmb3JtYXRvIGNvbm9jaWRvIG8gcG9yIGNvbm9jZXIuPC9wPgo8cD5FbCBhdXRvciwgbWFuaWZpZXN0YSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zLCBwb3IgbG8gdGFudG8sIGxhIG9icmEgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgbGEgbWlzbWEuPC9wPgo8cD5FbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLjwvcD4KPHA+U2kgdGllbmUgYWxndW5hIGR1ZGEgc29icmUgbGEgbGljZW5jaWEsIHBvciBmYXZvciwgY29udGFjdGUgY29uIGVsIDxhIGhyZWY9Im1haWx0bzpiaWJsaW90ZWNhQHVuaWFuZGVzLmVkdS5jbyIgdGFyZ2V0PSJfYmxhbmsiPkFkbWluaXN0cmFkb3IgZGVsIFNpc3RlbWEuPC9hPjwvcD4K