An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
In this paper we introduce EKETAL, an event based programming language for runtime monitoring and dynamic instrumentation of distributed and concurrent applications. We argue that development, maintenance and evolution of distributed applications can be greatly improved by such a language. To suppor...
- Autores:
-
Benavides, Luis Daniel
Durán, David
Pimienta, Camilo
Arboleda, Hugo
- Tipo de recurso:
- Work document
- Fecha de publicación:
- 2016
- Institución:
- Escuela Colombiana de Ingeniería Julio Garavito
- Repositorio:
- Repositorio Institucional ECI
- Idioma:
- eng
- OAI Identifier:
- oai:repositorio.escuelaing.edu.co:001/3177
- Acceso en línea:
- https://repositorio.escuelaing.edu.co/handle/001/3177
https://repositorio.escuelaing.edu.co/
- Palabra clave:
- Eketal (Lenguaje de programación para computadores)
Software de aplicación
Application software
Desarrollo de software
Computer software - Development
Eketal (Computer programming language)
Debugging
Testing
Event patterns
Runtime monitoring
Event based languages
Distributed applications
Datarace error
Depuración
Pruebas
Patrones de eventos
Monitoreo de tiempo de ejecución
Lenguajes basados en eventos
Aplicaciones distribuidas
Error de carrera de datos
- Rights
- openAccess
- License
- http://purl.org/coar/access_right/c_abf2
id |
ESCUELAIG2_e0ede650d45c5e061e68d54d42b7fc09 |
---|---|
oai_identifier_str |
oai:repositorio.escuelaing.edu.co:001/3177 |
network_acronym_str |
ESCUELAIG2 |
network_name_str |
Repositorio Institucional ECI |
repository_id_str |
|
dc.title.eng.fl_str_mv |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs |
title |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs |
spellingShingle |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs Eketal (Lenguaje de programación para computadores) Software de aplicación Application software Desarrollo de software Computer software - Development Eketal (Computer programming language) Debugging Testing Event patterns Runtime monitoring Event based languages Distributed applications Datarace error Depuración Pruebas Patrones de eventos Monitoreo de tiempo de ejecución Lenguajes basados en eventos Aplicaciones distribuidas Error de carrera de datos |
title_short |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs |
title_full |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs |
title_fullStr |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs |
title_full_unstemmed |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs |
title_sort |
An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs |
dc.creator.fl_str_mv |
Benavides, Luis Daniel Durán, David Pimienta, Camilo Arboleda, Hugo |
dc.contributor.author.none.fl_str_mv |
Benavides, Luis Daniel Durán, David Pimienta, Camilo Arboleda, Hugo |
dc.contributor.researchgroup.spa.fl_str_mv |
CTG - Informática |
dc.subject.armarc.none.fl_str_mv |
Eketal (Lenguaje de programación para computadores) Software de aplicación Application software Desarrollo de software Computer software - Development Eketal (Computer programming language) |
topic |
Eketal (Lenguaje de programación para computadores) Software de aplicación Application software Desarrollo de software Computer software - Development Eketal (Computer programming language) Debugging Testing Event patterns Runtime monitoring Event based languages Distributed applications Datarace error Depuración Pruebas Patrones de eventos Monitoreo de tiempo de ejecución Lenguajes basados en eventos Aplicaciones distribuidas Error de carrera de datos |
dc.subject.proposal.eng.fl_str_mv |
Debugging Testing Event patterns Runtime monitoring Event based languages Distributed applications Datarace error |
dc.subject.proposal.spa.fl_str_mv |
Depuración Pruebas Patrones de eventos Monitoreo de tiempo de ejecución Lenguajes basados en eventos Aplicaciones distribuidas Error de carrera de datos |
description |
In this paper we introduce EKETAL, an event based programming language for runtime monitoring and dynamic instrumentation of distributed and concurrent applications. We argue that development, maintenance and evolution of distributed applications can be greatly improved by such a language. To support this claim, we first present the programming model and corresponding compiler implementation (compiler generates distributed AspectJ’s code), then we present micro-benchmarks of the runtime infrastructure and a qualitative study of the usage of the language for debugging and testing liveness and datarace problems found in BigData middleware. |
publishDate |
2016 |
dc.date.issued.none.fl_str_mv |
2016 |
dc.date.accessioned.none.fl_str_mv |
2024-07-16T22:02:04Z |
dc.date.available.none.fl_str_mv |
2024-07-16T22:02:04Z |
dc.type.spa.fl_str_mv |
Documento de trabajo |
dc.type.coarversion.fl_str_mv |
http://purl.org/coar/version/c_970fb48d4fbd8a85 |
dc.type.version.spa.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.coar.spa.fl_str_mv |
http://purl.org/coar/resource_type/c_8042 |
dc.type.content.spa.fl_str_mv |
Text |
dc.type.driver.spa.fl_str_mv |
info:eu-repo/semantics/workingPaper |
format |
http://purl.org/coar/resource_type/c_8042 |
status_str |
publishedVersion |
dc.identifier.uri.none.fl_str_mv |
https://repositorio.escuelaing.edu.co/handle/001/3177 |
dc.identifier.instname.spa.fl_str_mv |
Universidad Escuela Colombiana de Ingeniería Julio Garavito |
dc.identifier.reponame.spa.fl_str_mv |
Repositorio Digital |
dc.identifier.repourl.spa.fl_str_mv |
https://repositorio.escuelaing.edu.co/ |
url |
https://repositorio.escuelaing.edu.co/handle/001/3177 https://repositorio.escuelaing.edu.co/ |
identifier_str_mv |
Universidad Escuela Colombiana de Ingeniería Julio Garavito Repositorio Digital |
dc.language.iso.spa.fl_str_mv |
eng |
language |
eng |
dc.relation.references.spa.fl_str_mv |
J.-R. Abrial. Modeling in Event-B: System and Software Engineering. Cambridge University Press, New York, NY, USA, 1st edition, 2010. L. D. Benavides Navarro, R. Douence, and M. S¨ udholt. Debugging and testing middleware with aspect-based control-flow and causal patterns. In In Proc. of the 9th Int. Middleware Conference, Leuven, Belgium, Dec. 2008. Springer-Verlag. N. Benton, L. Cardelli, and C. Fournet. Modern concurrency abstractions for c#. In Proc. of the 16th European Conference on Object-Oriented Programming, ECOOP ’02, pages 415–440, London, UK, UK, 2002. Springer-Verlag. M. Butler and S. Hallerstede. The rodin formal modeling tool. In Proc. of the 2007th Int. Conference on Formal Methods in Industry, FACS-FMI’07, pages 2–2, Swinton, UK, UK, 2007. British Computer Society F. Chen and G. Ro¸ su. Mop: An efficient and generic runtime verification framework. SIGPLAN Not., 42(10):569–588, Oct. 2007. C. Colombo, G. J. Pace, and G. Schneider. Larva — safer monitoring of real-time java programs (tool paper). In Seventh IEEE International Conference on Software Engineering and Formal Methods (SEFM), pages 33–37. IEEE Computer Society, November 2009. A. Demers, J. Gehrke, M. Hong, M. Riedewald, and W. White. Towards expressive publish/subscribe systems. In Proc. of the 10th Int. Conf. on Advances in Database Technology, EDBT’06, pages 627–644, Berlin, Heidelberg, 2006. Springer-Verlag. M. Eriksen. Effective http://twitter.github.io/effectivescala/. scala, 2012. Available: P. Eugster and K. Jayaram. Eventjava: An extension of java for event correlation. In S. Drossopoulou, editor, ECOOP 2009– Object-Oriented Prog., volume 5653 of Lec. Notes in Computer Science, pages 570–594. Springer Berlin Heidelberg, 2009. C. Fournet and G. Gonthier. The reflexive cham and the join-calculus. In Proc. of the 23rd ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, POPL ’96, pages 372–385, New York, NY, USA, 1996. ACM. W. Inc. Whatsapp open https://www.whatsapp.com/opensource/. source, 2016. Available K. R. Jayaram and P. Eugster. Scalable efficient composite event detection. In Proc. of the 12th Int. Conf. on Coordination Models and Languages, COORDINATION’10, pages 168–182, Berlin, Heidelberg, 2010. Springer-Verlag. Jgroups home page. latest visit on June 2015, 2011. G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of aspectj. In Proc. of the 15th European Conf. on Object-Oriented Prog., ECOOP ’01, pages 327–353, London, UK, 2001. Springer-Verlag. P. Leger, E. Tanter, and H. Fukuda. An expressive stateful aspect language. Sci. Comput. Program., 102(C):108–141, May 2015. Q. Luo and G. Rosu. EnforceMOP: a runtime property enforcement system for multithreaded programs. In the 2013 International Symposium, pages 156–166, New York, New York, USA, 2013. ACM Press. F. Mattern. Virtual time and global states of distributed systems. In Proc. of the Int. Workshop on Parallel and distributed Algorithms, Chateau de Bonas, France, October 1988. A. Møller. dk.brics.automaton– finite-state automata and regular expressions for Java. latest visit on May 2011, 2010. V. Rivera and N. Cata˜ no. Translating event-b to jml-specified java programs. In Proc. of the 29th Annual ACM Symp. on Applied Computing, SAC ’14, pages 1264–1271, New York, NY, USA, 2014. ACM. K. Serebryany and T. Iskhodzhanov. Threadsanitizer: Data race detection in practice. In Proc. of the Workshop on Binary Instrumentation and Applications, WBIA ’09, pages 62–71, New York, NY, USA, 2009. ACM. J. C. TreeCache. A structured, replicated, transactional cache. user documentation., 2013. Available: http://docs.jboss.org/jbosscache/1.4.0/TreeCache/. Y. Zhuang and S. Chiba. Method slots: Supporting methods, events, and advices by a single language construct. In Proc. of the 12th Annual Int. Conf. on Aspectoriented Software Development, AOSD ’13, pages 197–208, N.Y., USA, 2013. ACM. |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.accessrights.spa.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
rights_invalid_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.format.extent.spa.fl_str_mv |
17 páginas |
dc.format.mimetype.spa.fl_str_mv |
application/pdf |
dc.publisher.spa.fl_str_mv |
Universidad Escuela Colombiana de Ingeniería Julio Garavito Universidad Icesi |
dc.publisher.place.spa.fl_str_mv |
Bogotá (Colombia) |
dc.source.spa.fl_str_mv |
http://ldbn.is.escuelaing.edu.co/workingpapers/Distributed_Debugging_of_Liveness_and_Datarace_Errors_Using_an_Event_Based_Language.pdf |
institution |
Escuela Colombiana de Ingeniería Julio Garavito |
bitstream.url.fl_str_mv |
https://repositorio.escuelaing.edu.co/bitstream/001/3177/4/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.txt https://repositorio.escuelaing.edu.co/bitstream/001/3177/3/Portada%20An%20event%20based%20programming%20lenguage%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.PNG https://repositorio.escuelaing.edu.co/bitstream/001/3177/5/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.jpg https://repositorio.escuelaing.edu.co/bitstream/001/3177/2/license.txt https://repositorio.escuelaing.edu.co/bitstream/001/3177/1/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf |
bitstream.checksum.fl_str_mv |
5fb55b7b690dc7167d2d40a188315086 b433fe057b305cfe3c5253a9ec6220f3 7deec4222d6641e7f273631d42a9020d 5a7ca94c2e5326ee169f979d71d0f06e c82d7cc9d7e54292076807053dcf19f0 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Escuela Colombiana de Ingeniería Julio Garavito |
repository.mail.fl_str_mv |
repositorio.eci@escuelaing.edu.co |
_version_ |
1814355615147884544 |
spelling |
Benavides, Luis Daniel668af73942f5b7ca6c267f71cc9cdcebDurán, David2199ee1705cf501a9c6086111bfec47fPimienta, Camiloedee336840ceb732be273e88017718c5Arboleda, Hugof8462780e6dbe96346932fa9632d2bf3CTG - Informática2024-07-16T22:02:04Z2024-07-16T22:02:04Z2016https://repositorio.escuelaing.edu.co/handle/001/3177Universidad Escuela Colombiana de Ingeniería Julio GaravitoRepositorio Digitalhttps://repositorio.escuelaing.edu.co/In this paper we introduce EKETAL, an event based programming language for runtime monitoring and dynamic instrumentation of distributed and concurrent applications. We argue that development, maintenance and evolution of distributed applications can be greatly improved by such a language. To support this claim, we first present the programming model and corresponding compiler implementation (compiler generates distributed AspectJ’s code), then we present micro-benchmarks of the runtime infrastructure and a qualitative study of the usage of the language for debugging and testing liveness and datarace problems found in BigData middleware.En este artículo presentamos EKETAL, un lenguaje de programación basado en eventos para monitoreo en tiempo de ejecución e instrumentación dinámica de aplicaciones distribuidas y concurrentes. Sostenemos que dicho lenguaje puede mejorar enormemente el desarrollo, el mantenimiento y la evolución de aplicaciones distribuidas. Para respaldar esta afirmación, primero presentamos el modelo de programación y la implementación del compilador correspondiente (el compilador genera el código de AspectJ distribuido), luego presentamos micro puntos de referencia de la infraestructura de tiempo de ejecución y un estudio cualitativo del uso del lenguaje para depurar y probar la vida y la carrera de datos. Problemas encontrados en el middleware BigData.17 páginasapplication/pdfengUniversidad Escuela Colombiana de Ingeniería Julio GaravitoUniversidad IcesiBogotá (Colombia)http://ldbn.is.escuelaing.edu.co/workingpapers/Distributed_Debugging_of_Liveness_and_Datarace_Errors_Using_an_Event_Based_Language.pdfAn Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed ProgramsDocumento de trabajoinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_8042Textinfo:eu-repo/semantics/workingPaperhttp://purl.org/coar/version/c_970fb48d4fbd8a85J.-R. Abrial. Modeling in Event-B: System and Software Engineering. Cambridge University Press, New York, NY, USA, 1st edition, 2010.L. D. Benavides Navarro, R. Douence, and M. S¨ udholt. Debugging and testing middleware with aspect-based control-flow and causal patterns. In In Proc. of the 9th Int. Middleware Conference, Leuven, Belgium, Dec. 2008. Springer-Verlag.N. Benton, L. Cardelli, and C. Fournet. Modern concurrency abstractions for c#. In Proc. of the 16th European Conference on Object-Oriented Programming, ECOOP ’02, pages 415–440, London, UK, UK, 2002. Springer-Verlag.M. Butler and S. Hallerstede. The rodin formal modeling tool. In Proc. of the 2007th Int. Conference on Formal Methods in Industry, FACS-FMI’07, pages 2–2, Swinton, UK, UK, 2007. British Computer SocietyF. Chen and G. Ro¸ su. Mop: An efficient and generic runtime verification framework. SIGPLAN Not., 42(10):569–588, Oct. 2007.C. Colombo, G. J. Pace, and G. Schneider. Larva — safer monitoring of real-time java programs (tool paper). In Seventh IEEE International Conference on Software Engineering and Formal Methods (SEFM), pages 33–37. IEEE Computer Society, November 2009.A. Demers, J. Gehrke, M. Hong, M. Riedewald, and W. White. Towards expressive publish/subscribe systems. In Proc. of the 10th Int. Conf. on Advances in Database Technology, EDBT’06, pages 627–644, Berlin, Heidelberg, 2006. Springer-Verlag.M. Eriksen. Effective http://twitter.github.io/effectivescala/. scala, 2012. Available:P. Eugster and K. Jayaram. Eventjava: An extension of java for event correlation. In S. Drossopoulou, editor, ECOOP 2009– Object-Oriented Prog., volume 5653 of Lec. Notes in Computer Science, pages 570–594. Springer Berlin Heidelberg, 2009.C. Fournet and G. Gonthier. The reflexive cham and the join-calculus. In Proc. of the 23rd ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, POPL ’96, pages 372–385, New York, NY, USA, 1996. ACM.W. Inc. Whatsapp open https://www.whatsapp.com/opensource/. source, 2016. AvailableK. R. Jayaram and P. Eugster. Scalable efficient composite event detection. In Proc. of the 12th Int. Conf. on Coordination Models and Languages, COORDINATION’10, pages 168–182, Berlin, Heidelberg, 2010. Springer-Verlag.Jgroups home page. latest visit on June 2015, 2011.G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of aspectj. In Proc. of the 15th European Conf. on Object-Oriented Prog., ECOOP ’01, pages 327–353, London, UK, 2001. Springer-Verlag.P. Leger, E. Tanter, and H. Fukuda. An expressive stateful aspect language. Sci. Comput. Program., 102(C):108–141, May 2015.Q. Luo and G. Rosu. EnforceMOP: a runtime property enforcement system for multithreaded programs. In the 2013 International Symposium, pages 156–166, New York, New York, USA, 2013. ACM Press.F. Mattern. Virtual time and global states of distributed systems. In Proc. of the Int. Workshop on Parallel and distributed Algorithms, Chateau de Bonas, France, October 1988.A. Møller. dk.brics.automaton– finite-state automata and regular expressions for Java. latest visit on May 2011, 2010.V. Rivera and N. Cata˜ no. Translating event-b to jml-specified java programs. In Proc. of the 29th Annual ACM Symp. on Applied Computing, SAC ’14, pages 1264–1271, New York, NY, USA, 2014. ACM.K. Serebryany and T. Iskhodzhanov. Threadsanitizer: Data race detection in practice. In Proc. of the Workshop on Binary Instrumentation and Applications, WBIA ’09, pages 62–71, New York, NY, USA, 2009. ACM.J. C. TreeCache. A structured, replicated, transactional cache. user documentation., 2013. Available: http://docs.jboss.org/jbosscache/1.4.0/TreeCache/.Y. Zhuang and S. Chiba. Method slots: Supporting methods, events, and advices by a single language construct. In Proc. of the 12th Annual Int. Conf. on Aspectoriented Software Development, AOSD ’13, pages 197–208, N.Y., USA, 2013. ACM.info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Eketal (Lenguaje de programación para computadores)Software de aplicaciónApplication softwareDesarrollo de softwareComputer software - DevelopmentEketal (Computer programming language)DebuggingTestingEvent patternsRuntime monitoringEvent based languagesDistributed applicationsDatarace errorDepuraciónPruebasPatrones de eventosMonitoreo de tiempo de ejecuciónLenguajes basados en eventosAplicaciones distribuidasError de carrera de datosTEXTAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.txtAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.txtExtracted texttext/plain42885https://repositorio.escuelaing.edu.co/bitstream/001/3177/4/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.txt5fb55b7b690dc7167d2d40a188315086MD54open accessTHUMBNAILPortada An event based programming lenguage for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.PNGPortada An event based programming lenguage for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.PNGimage/png153051https://repositorio.escuelaing.edu.co/bitstream/001/3177/3/Portada%20An%20event%20based%20programming%20lenguage%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.PNGb433fe057b305cfe3c5253a9ec6220f3MD53open accessAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.jpgAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.jpgGenerated Thumbnailimage/jpeg10306https://repositorio.escuelaing.edu.co/bitstream/001/3177/5/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.jpg7deec4222d6641e7f273631d42a9020dMD55open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-81881https://repositorio.escuelaing.edu.co/bitstream/001/3177/2/license.txt5a7ca94c2e5326ee169f979d71d0f06eMD52open accessORIGINALAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdfAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdfapplication/pdf373172https://repositorio.escuelaing.edu.co/bitstream/001/3177/1/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdfc82d7cc9d7e54292076807053dcf19f0MD51metadata only access001/3177oai:repositorio.escuelaing.edu.co:001/31772024-08-06 16:19:33.104metadata only accessRepositorio Escuela Colombiana de Ingeniería Julio Garavitorepositorio.eci@escuelaing.edu.coU0kgVVNURUQgSEFDRSBQQVJURSBERUwgR1JVUE8gREUgUEFSRVMgRVZBTFVBRE9SRVMgREUgTEEgQ09MRUNDScOTTiAiUEVFUiBSRVZJRVciLCBPTUlUQSBFU1RBIExJQ0VOQ0lBLgoKQXV0b3Jpem8gYSBsYSBFc2N1ZWxhIENvbG9tYmlhbmEgZGUgSW5nZW5pZXLDrWEgSnVsaW8gR2FyYXZpdG8gcGFyYSBwdWJsaWNhciBlbCB0cmFiYWpvIGRlIGdyYWRvLCBhcnTDrWN1bG8sIHZpZGVvLCAKY29uZmVyZW5jaWEsIGxpYnJvLCBpbWFnZW4sIGZvdG9ncmFmw61hLCBhdWRpbywgcHJlc2VudGFjacOzbiB1IG90cm8gKGVuICAgIGFkZWxhbnRlIGRvY3VtZW50bykgcXVlIGVuIGxhIGZlY2hhIAplbnRyZWdvIGVuIGZvcm1hdG8gZGlnaXRhbCwgeSBsZSBwZXJtaXRvIGRlIGZvcm1hIGluZGVmaW5pZGEgcXVlIGxvIHB1YmxpcXVlIGVuIGVsIHJlcG9zaXRvcmlvIGluc3RpdHVjaW9uYWwsIAplbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgbGEgTGV5IDQ0IGRlIDE5OTMsIHkgZGVtw6FzIGxleWVzIHkganVyaXNwcnVkZW5jaWEgdmlnZW50ZQphbCByZXNwZWN0bywgcGFyYSBmaW5lcyBlZHVjYXRpdm9zIHkgbm8gbHVjcmF0aXZvcy4gRXN0YSBhdXRvcml6YWNpw7NuIGVzIHbDoWxpZGEgcGFyYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIAp1c28gc29icmUgbGEgb2JyYSBlbiBmb3JtYXRvIGRpZ2l0YWwsIGVsZWN0csOzbmljbywgdmlydHVhbDsgeSBwYXJhIHVzb3MgZW4gcmVkZXMsIGludGVybmV0LCBleHRyYW5ldCwgeSBjdWFscXVpZXIgCmZvcm1hdG8gbyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyLgpFbiBtaSBjYWxpZGFkIGRlIGF1dG9yLCBleHByZXNvIHF1ZSBlbCBkb2N1bWVudG8gb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwgeSBsbyBlbGFib3LDqSBzaW4gCnF1ZWJyYW50YXIgbmkgc3VwbGFudGFyIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvcy4gUG9yIGxvIHRhbnRvLCBlcyBkZSBtaSBleGNsdXNpdmEgYXV0b3LDrWEgeSwgZW4gY29uc2VjdWVuY2lhLCAKdGVuZ28gbGEgdGl0dWxhcmlkYWQgc29icmUgw6lsLiBFbiBjYXNvIGRlIHF1ZWphIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyByZWZlcmVudGUgYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgCmVsIGRvY3VtZW50byBlbiBjdWVzdGnDs24sIGFzdW1pcsOpIGxhIHJlc3BvbnNhYmlsaWRhZCB0b3RhbCB5IHNhbGRyw6kgZW4gZGVmZW5zYSBkZSBsb3MgZGVyZWNob3MgYXF1w60gYXV0b3JpemFkb3MuIEVzdG8gCnNpZ25pZmljYSBxdWUsIHBhcmEgdG9kb3MgbG9zIGVmZWN0b3MsIGxhIEVzY3VlbGEgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KVG9kYSBwZXJzb25hIHF1ZSBjb25zdWx0ZSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIEVzY3VlbGEsIGVsIENhdMOhbG9nbyBlbiBsw61uZWEgdSBvdHJvIG1lZGlvIGVsZWN0csOzbmljbywgCnBvZHLDoSBjb3BpYXIgYXBhcnRlcyBkZWwgdGV4dG8sIGNvbiBlbCBjb21wcm9taXNvIGRlIGNpdGFyIHNpZW1wcmUgbGEgZnVlbnRlLCBsYSBjdWFsIGluY2x1eWUgZWwgdMOtdHVsbyBkZWwgdHJhYmFqbyB5IGVsIAphdXRvci5Fc3RhIGF1dG9yaXphY2nDs24gbm8gaW1wbGljYSByZW51bmNpYSBhIGxhIGZhY3VsdGFkIHF1ZSB0ZW5nbyBkZSBwdWJsaWNhciB0b3RhbCBvIHBhcmNpYWxtZW50ZSBsYSBvYnJhIGVuIG90cm9zIAptZWRpb3MuRXN0YSBhdXRvcml6YWNpw7NuIGVzdMOhIHJlc3BhbGRhZGEgcG9yIGxhcyBmaXJtYXMgZGVsIChsb3MpIGF1dG9yKGVzKSBkZWwgZG9jdW1lbnRvLiAKU8OtIGF1dG9yaXpvIChhbWJvcykK |