A framework for self healing systems

Today’s software systems face significant challenges in maintaining stability in the face of unforeseen disruptions, resulting in substantial costs. Existing self-healing solutions primarily target known or anticipated failures, leaving systems vulnerable to unforeseen states. This project presents...

Full description

Autores:
Cerino Pulido, Javier
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/75425
Acceso en línea:
https://hdl.handle.net/1992/75425
Palabra clave:
Self Healing
Framework
Dynamic
Reinforcement Learning
Scala
Ingeniería
Rights
openAccess
License
Attribution-NonCommercial-ShareAlike 4.0 International
id UNIANDES2_496ead05c4ee7d234ef9924cc106d0c4
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/75425
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.eng.fl_str_mv A framework for self healing systems
title A framework for self healing systems
spellingShingle A framework for self healing systems
Self Healing
Framework
Dynamic
Reinforcement Learning
Scala
Ingeniería
title_short A framework for self healing systems
title_full A framework for self healing systems
title_fullStr A framework for self healing systems
title_full_unstemmed A framework for self healing systems
title_sort A framework for self healing systems
dc.creator.fl_str_mv Cerino Pulido, Javier
dc.contributor.advisor.none.fl_str_mv Cardozo Álvarez, Nicolás
Sanabria Ardila, Mateo
dc.contributor.author.none.fl_str_mv Cerino Pulido, Javier
dc.contributor.jury.none.fl_str_mv Cardozo Álvarez, Nicolás
dc.subject.keyword.none.fl_str_mv Self Healing
Framework
Dynamic
Reinforcement Learning
Scala
topic Self Healing
Framework
Dynamic
Reinforcement Learning
Scala
Ingeniería
dc.subject.themes.spa.fl_str_mv Ingeniería
description Today’s software systems face significant challenges in maintaining stability in the face of unforeseen disruptions, resulting in substantial costs. Existing self-healing solutions primarily target known or anticipated failures, leaving systems vulnerable to unforeseen states. This project presents a modular framework for dynamic self-healing systems capable of addressing unforeseen error states through adaptive recovery strategies. By integrating continuous monitoring with Reinforcement Learning (RL), the framework detects disruptions based on a few predicates and learns corrective actions to restore system stability. The framework uses the foundations of Context-Oriented Programming (COP) for dynamic adaptation and employs the Scala programming language along with the REScala library to improve reactivity. Validation was performed using two case studies programmed in this project using already existing REScala application references: a graphical design application and a productivity task management system, demonstrating the framework’s ability to adapt to diverse reactive environments. This project lays the foundation for building more resilient self-healing systems that autonomously learn recovery strategies, reducing the reliance on predefined error handling mechanisms. The modularity and scalability of the framework aim to simplify integration across multiple domains, ensuring robustness and flexibility in reactive software systems.
publishDate 2024
dc.date.issued.none.fl_str_mv 2024-12-16
dc.date.accessioned.none.fl_str_mv 2025-01-15T14:55:34Z
dc.date.available.none.fl_str_mv 2025-01-15T14:55:34Z
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/75425
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/75425
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 Eugene Burmako. Unification of compile-time and runtime metaprogramming in Scala. Technical report, EPFL, 2017. URL https://infoscience.epfl.ch/entities/publication/392deeaa-2885-4fbb-979e-fccb8ebec360.
Nicolás Cardozo and Ivana Dusparic. Auto-COP: Adaptation Generation in Context- Oriented Programming using Reinforcement Learning Options, 2023. URL https://arxiv.org/abs/2103.06757. _eprint: 2103.06757.
Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, and Theo D’Hondt. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. In Proceedings - 2013 International Symposium on Theoretical Aspects of Software Engineering, TASE 2013, pages 191 – 198, July 2013. DOI 10.1109/TASE.2013.33.
Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, Jorge Vallejos, and Theo D’Hondt. Semantics for consistent activation in context-oriented systems. Information and Software Technology, 58:71–94, 2015. ISSN 0950-5849. DOI https://doi.org/10.1016/j.infsof.2014.10.002. URL https://www.sciencedirect.com/science/article/pii/S0950584914002134.
C. Cavaness. What Is a Framework? - Programming Jakarta Struts [Book]. URL https://www.oreilly.com/library/view/programming-jakarta-struts/0596003285/ch01s06.html. ISBN: 9780596003289.
Lyn Dupré. BUGS in Writing: A Guide to Debugging Your Prose. Revised edition, 1998. ISBN 0-201-37921-X.
Mira Mezini. Showcases - REScalaREScala. URL https://www.rescala-lang.com/showcases.html.
Heather Miller, Eugene Burmako, and Philipp Haller. Overview Reflection, . URL https://docs.scala-lang.org/overviews/reflection/overview.html.
Heather Miller, Eugene Burmako, and Philipp Haller. Scala Reflection Library 2.13.0-scala.reflect.api, . URL https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/index.html.
Harald Psaier and Schahram Dustdar. A survey on self-healing systems: Approaches and systems. Computing, 91:43–73, August 2011. DOI 10.1007/s00607-010-0107-y.
Guido Salva, Pascal Weisenburger, and Simon Sprankel. RESwing, October 2014. URL https://github.com/guidosalva/RESwing/tree/master.
Mateo Sanabria, Ivana Dusaric, and Nicolás Cardozo. Learning Recovery Strategies for Dynamic Self-healing in Reactive Systems. In Proceedings of the 19th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, SEAMS’24, pages 133–142, New York, NY, USA, 2024. Association for Computing Machinery. ISBN 9798400705854. DOI 10.1145/3643915.3644097. URL https://doi-org.ezproxy.uniandes.edu.co/10.1145/3643915.3644097. event-place: Lisbon, AA, Portugal.
William Strunk and E.B. White. The Elements of Style. Longman, fourth edition, 2000. ISBN 0-205-30902-X.
dc.rights.en.fl_str_mv Attribution-NonCommercial-ShareAlike 4.0 International
dc.rights.uri.none.fl_str_mv http://creativecommons.org/licenses/by-nc-sa/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-NonCommercial-ShareAlike 4.0 International
http://creativecommons.org/licenses/by-nc-sa/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 74 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/d96c319f-d70a-4408-aace-da928f17b746/download
https://repositorio.uniandes.edu.co/bitstreams/9e59aabe-31fe-46f4-99ca-bad5c30237a4/download
https://repositorio.uniandes.edu.co/bitstreams/bf6d2383-30fa-45b4-95e6-4b4b95aa23dd/download
https://repositorio.uniandes.edu.co/bitstreams/0c93afa6-6695-4dd6-a67b-b8505ddabc48/download
https://repositorio.uniandes.edu.co/bitstreams/27155d79-8be1-49e0-a862-15aef76efc06/download
https://repositorio.uniandes.edu.co/bitstreams/37c71097-7b91-46c1-924e-03ba3431bab4/download
https://repositorio.uniandes.edu.co/bitstreams/b3de7835-0bc8-4ed0-ae01-d7fc30a476d7/download
https://repositorio.uniandes.edu.co/bitstreams/b7c424b7-f6cd-4a5f-993f-b26b67e9fb37/download
bitstream.checksum.fl_str_mv 015e7b059d6a67b3c3842b352bcaf9b9
61ed574df2d3630d299f4cc858ff7a95
934f4ca17e109e0a05eaeaba504d7ce4
ae9e573a68e7f92501b6913cc846c39f
fd46a6f33b7077ecf0be70c47b3986bc
b085fb584fd7a3ee68cbcc57f26d4f6a
4989ac85465817731b4a6ebbcd82f603
4bbab0371b07ef2d52f6bcc159930886
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_ 1831927727776595968
spelling Cardozo Álvarez, Nicolásvirtual::21849-1Sanabria Ardila, MateoCerino Pulido, JavierCardozo Álvarez, Nicolásvirtual::21850-12025-01-15T14:55:34Z2025-01-15T14:55:34Z2024-12-16https://hdl.handle.net/1992/75425instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Today’s software systems face significant challenges in maintaining stability in the face of unforeseen disruptions, resulting in substantial costs. Existing self-healing solutions primarily target known or anticipated failures, leaving systems vulnerable to unforeseen states. This project presents a modular framework for dynamic self-healing systems capable of addressing unforeseen error states through adaptive recovery strategies. By integrating continuous monitoring with Reinforcement Learning (RL), the framework detects disruptions based on a few predicates and learns corrective actions to restore system stability. The framework uses the foundations of Context-Oriented Programming (COP) for dynamic adaptation and employs the Scala programming language along with the REScala library to improve reactivity. Validation was performed using two case studies programmed in this project using already existing REScala application references: a graphical design application and a productivity task management system, demonstrating the framework’s ability to adapt to diverse reactive environments. This project lays the foundation for building more resilient self-healing systems that autonomously learn recovery strategies, reducing the reliance on predefined error handling mechanisms. The modularity and scalability of the framework aim to simplify integration across multiple domains, ensuring robustness and flexibility in reactive software systems.Pregrado74 páginasapplication/pdfengUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería de Sistemas y ComputaciónAttribution-NonCommercial-ShareAlike 4.0 Internationalhttp://creativecommons.org/licenses/by-nc-sa/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2A framework for self healing systemsTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPSelf HealingFrameworkDynamicReinforcement LearningScalaIngenieríaEugene Burmako. Unification of compile-time and runtime metaprogramming in Scala. Technical report, EPFL, 2017. URL https://infoscience.epfl.ch/entities/publication/392deeaa-2885-4fbb-979e-fccb8ebec360.Nicolás Cardozo and Ivana Dusparic. Auto-COP: Adaptation Generation in Context- Oriented Programming using Reinforcement Learning Options, 2023. URL https://arxiv.org/abs/2103.06757. _eprint: 2103.06757.Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, and Theo D’Hondt. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. In Proceedings - 2013 International Symposium on Theoretical Aspects of Software Engineering, TASE 2013, pages 191 – 198, July 2013. DOI 10.1109/TASE.2013.33.Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, Jorge Vallejos, and Theo D’Hondt. Semantics for consistent activation in context-oriented systems. Information and Software Technology, 58:71–94, 2015. ISSN 0950-5849. DOI https://doi.org/10.1016/j.infsof.2014.10.002. URL https://www.sciencedirect.com/science/article/pii/S0950584914002134.C. Cavaness. What Is a Framework? - Programming Jakarta Struts [Book]. URL https://www.oreilly.com/library/view/programming-jakarta-struts/0596003285/ch01s06.html. ISBN: 9780596003289.Lyn Dupré. BUGS in Writing: A Guide to Debugging Your Prose. Revised edition, 1998. ISBN 0-201-37921-X.Mira Mezini. Showcases - REScalaREScala. URL https://www.rescala-lang.com/showcases.html.Heather Miller, Eugene Burmako, and Philipp Haller. Overview Reflection, . URL https://docs.scala-lang.org/overviews/reflection/overview.html.Heather Miller, Eugene Burmako, and Philipp Haller. Scala Reflection Library 2.13.0-scala.reflect.api, . URL https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/index.html.Harald Psaier and Schahram Dustdar. A survey on self-healing systems: Approaches and systems. Computing, 91:43–73, August 2011. DOI 10.1007/s00607-010-0107-y.Guido Salva, Pascal Weisenburger, and Simon Sprankel. RESwing, October 2014. URL https://github.com/guidosalva/RESwing/tree/master.Mateo Sanabria, Ivana Dusaric, and Nicolás Cardozo. Learning Recovery Strategies for Dynamic Self-healing in Reactive Systems. In Proceedings of the 19th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, SEAMS’24, pages 133–142, New York, NY, USA, 2024. Association for Computing Machinery. ISBN 9798400705854. DOI 10.1145/3643915.3644097. URL https://doi-org.ezproxy.uniandes.edu.co/10.1145/3643915.3644097. event-place: Lisbon, AA, Portugal.William Strunk and E.B. White. The Elements of Style. Longman, fourth edition, 2000. ISBN 0-205-30902-X.202020873Publicationhttps://scholar.google.es/citations?user=3iTzjQsAAAAJvirtual::21849-1https://scholar.google.es/citations?user=3iTzjQsAAAAJvirtual::21850-10000-0002-1094-9952virtual::21849-10000-0002-1094-9952virtual::21850-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21849-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21849-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21850-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21850-1ORIGINALA framework for self healing systems.pdfA framework for self healing systems.pdfapplication/pdf847101https://repositorio.uniandes.edu.co/bitstreams/d96c319f-d70a-4408-aace-da928f17b746/download015e7b059d6a67b3c3842b352bcaf9b9MD51autorizacion tesis.pdfautorizacion tesis.pdfHIDEapplication/pdf323007https://repositorio.uniandes.edu.co/bitstreams/9e59aabe-31fe-46f4-99ca-bad5c30237a4/download61ed574df2d3630d299f4cc858ff7a95MD52CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-81031https://repositorio.uniandes.edu.co/bitstreams/bf6d2383-30fa-45b4-95e6-4b4b95aa23dd/download934f4ca17e109e0a05eaeaba504d7ce4MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-82535https://repositorio.uniandes.edu.co/bitstreams/0c93afa6-6695-4dd6-a67b-b8505ddabc48/downloadae9e573a68e7f92501b6913cc846c39fMD54TEXTA framework for self healing systems.pdf.txtA framework for self healing systems.pdf.txtExtracted texttext/plain100287https://repositorio.uniandes.edu.co/bitstreams/27155d79-8be1-49e0-a862-15aef76efc06/downloadfd46a6f33b7077ecf0be70c47b3986bcMD55autorizacion tesis.pdf.txtautorizacion tesis.pdf.txtExtracted texttext/plain1944https://repositorio.uniandes.edu.co/bitstreams/37c71097-7b91-46c1-924e-03ba3431bab4/downloadb085fb584fd7a3ee68cbcc57f26d4f6aMD57THUMBNAILA framework for self healing systems.pdf.jpgA framework for self healing systems.pdf.jpgGenerated Thumbnailimage/jpeg6689https://repositorio.uniandes.edu.co/bitstreams/b3de7835-0bc8-4ed0-ae01-d7fc30a476d7/download4989ac85465817731b4a6ebbcd82f603MD56autorizacion tesis.pdf.jpgautorizacion tesis.pdf.jpgGenerated Thumbnailimage/jpeg11074https://repositorio.uniandes.edu.co/bitstreams/b7c424b7-f6cd-4a5f-993f-b26b67e9fb37/download4bbab0371b07ef2d52f6bcc159930886MD581992/75425oai:repositorio.uniandes.edu.co:1992/754252025-03-05 10:02:25.341http://creativecommons.org/licenses/by-nc-sa/4.0/Attribution-NonCommercial-ShareAlike 4.0 Internationalopen.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coPGgzPjxzdHJvbmc+RGVzY2FyZ28gZGUgUmVzcG9uc2FiaWxpZGFkIC0gTGljZW5jaWEgZGUgQXV0b3JpemFjacOzbjwvc3Ryb25nPjwvaDM+CjxwPjxzdHJvbmc+UG9yIGZhdm9yIGxlZXIgYXRlbnRhbWVudGUgZXN0ZSBkb2N1bWVudG8gcXVlIHBlcm1pdGUgYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBTw6luZWNhIHJlcHJvZHVjaXIgeSBkaXN0cmlidWlyIGxvcyByZWN1cnNvcyBkZSBpbmZvcm1hY2nDs24gZGVwb3NpdGFkb3MgbWVkaWFudGUgbGEgYXV0b3JpemFjacOzbiBkZSBsb3Mgc2lndWllbnRlcyB0w6lybWlub3M6PC9zdHJvbmc+PC9wPgo8cD5Db25jZWRhIGxhIGxpY2VuY2lhIGRlIGRlcMOzc2l0byBlc3TDoW5kYXIgc2VsZWNjaW9uYW5kbyBsYSBvcGNpw7NuIDxzdHJvbmc+J0FjZXB0YXIgbG9zIHTDqXJtaW5vcyBhbnRlcmlvcm1lbnRlIGRlc2NyaXRvcyc8L3N0cm9uZz4geSBjb250aW51YXIgZWwgcHJvY2VzbyBkZSBlbnbDrW8gbWVkaWFudGUgZWwgYm90w7NuIDxzdHJvbmc+J1NpZ3VpZW50ZScuPC9zdHJvbmc+PC9wPgo8aHI+CjxwPllvLCBlbiBtaSBjYWxpZGFkIGRlIGF1dG9yIGRlbCB0cmFiYWpvIGRlIHRlc2lzLCBtb25vZ3JhZsOtYSBvIHRyYWJham8gZGUgZ3JhZG8sIGhhZ28gZW50cmVnYSBkZWwgZWplbXBsYXIgcmVzcGVjdGl2byB5IGRlIHN1cyBhbmV4b3MgZGUgc2VyIGVsIGNhc28sIGVuIGZvcm1hdG8gZGlnaXRhbCB5L28gZWxlY3Ryw7NuaWNvIHkgYXV0b3Jpem8gYSBsYSBVbml2ZXJzaWRhZCBkZSBsb3MgQW5kZXMgcGFyYSBxdWUgcmVhbGljZSBsYSBwdWJsaWNhY2nDs24gZW4gZWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpc3RlbWEgbyBiYXNlIGRlIGRhdG9zIHByb3BpbyBvIGFqZW5vIGEgbGEgVW5pdmVyc2lkYWQgeSBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgTGV5IDQ0IGRlIDE5OTMsIERlY2lzacOzbiBBbmRpbmEgMzUxIGRlIDE5OTMsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBsYSBtYXRlcmlhLCB1dGlsaWNlIGVuIHRvZGFzIHN1cyBmb3JtYXMsIGxvcyBkZXJlY2hvcyBwYXRyaW1vbmlhbGVzIGRlIHJlcHJvZHVjY2nDs24sIGNvbXVuaWNhY2nDs24gcMO6YmxpY2EsIHRyYW5zZm9ybWFjacOzbiB5IGRpc3RyaWJ1Y2nDs24gKGFscXVpbGVyLCBwcsOpc3RhbW8gcMO6YmxpY28gZSBpbXBvcnRhY2nDs24pIHF1ZSBtZSBjb3JyZXNwb25kZW4gY29tbyBjcmVhZG9yIGRlIGxhIG9icmEgb2JqZXRvIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8uPC9wPgo8cD5MYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGVtaXRlIGVuIGNhbGlkYWQgZGUgYXV0b3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50byB5IG5vIGNvcnJlc3BvbmRlIGEgY2VzacOzbiBkZSBkZXJlY2hvcywgc2lubyBhIGxhIGF1dG9yaXphY2nDs24gZGUgdXNvIGFjYWTDqW1pY28gZGUgY29uZm9ybWlkYWQgY29uIGxvIGFudGVyaW9ybWVudGUgc2XDsWFsYWRvLiBMYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgZXh0ZW5zaXZhIG5vIHNvbG8gYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIHVzbyBzb2JyZSBsYSBvYnJhIGVuIGZvcm1hdG8gbyBzb3BvcnRlIG1hdGVyaWFsLCBzaW5vIHRhbWJpw6luIHBhcmEgZm9ybWF0byBlbGVjdHLDs25pY28sIHkgZW4gZ2VuZXJhbCBwYXJhIGN1YWxxdWllciBmb3JtYXRvIGNvbm9jaWRvIG8gcG9yIGNvbm9jZXIuPC9wPgo8cD5FbCBhdXRvciwgbWFuaWZpZXN0YSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zLCBwb3IgbG8gdGFudG8sIGxhIG9icmEgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgbGEgbWlzbWEuPC9wPgo8cD5FbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLjwvcD4KPHA+U2kgdGllbmUgYWxndW5hIGR1ZGEgc29icmUgbGEgbGljZW5jaWEsIHBvciBmYXZvciwgY29udGFjdGUgY29uIGVsIDxhIGhyZWY9Im1haWx0bzpiaWJsaW90ZWNhQHVuaWFuZGVzLmVkdS5jbyIgdGFyZ2V0PSJfYmxhbmsiPkFkbWluaXN0cmFkb3IgZGVsIFNpc3RlbWEuPC9hPjwvcD4K