Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales
Introducción Por tratarse de una tarea altamente compleja y de importancia clínica, el diagnóstico del síndrome coronario agudo se presta para su exploración por medio de modelado mediante sistemas inteligentes. Objetivo desarrollar un sistema multiagente que ensamble las decisiones de varias redes...
- Autores:
-
Sprockel Díaz, John Jaime
Diaztagle Fernández, Juan José
González Guerrero, Enrique
- Tipo de recurso:
- Article of journal
- Fecha de publicación:
- 2017
- Institución:
- Fundación Universitaria de Ciencias de la Salud - FUCS
- Repositorio:
- Repositorio Digital Institucional ReDi
- Idioma:
- spa
- OAI Identifier:
- oai:repositorio.fucsalud.edu.co:001/1371
- Acceso en línea:
- https://repositorio.fucsalud.edu.co/handle/001/1371
- Palabra clave:
- Diagnóstico
Síndrome coronario agudo
Infarto agudo de miocardio
Angina inestable
Dolor torácico
Técnicas de diagnóstico cardiovascular
Infarto del miocardio
Dolor en el Pecho
- Rights
- openAccess
- License
- Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
id |
FUCS2_1bad1e1607511021205166fbcf54a59a |
---|---|
oai_identifier_str |
oai:repositorio.fucsalud.edu.co:001/1371 |
network_acronym_str |
FUCS2 |
network_name_str |
Repositorio Digital Institucional ReDi |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales |
dc.title.eng.fl_str_mv |
Automatic diagnosis of acute coronary syndrome using a multi-agent system based in neural networks |
title |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales |
spellingShingle |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales Diagnóstico Síndrome coronario agudo Infarto agudo de miocardio Angina inestable Dolor torácico Técnicas de diagnóstico cardiovascular Infarto del miocardio Dolor en el Pecho |
title_short |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales |
title_full |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales |
title_fullStr |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales |
title_full_unstemmed |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales |
title_sort |
Diagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronales |
dc.creator.fl_str_mv |
Sprockel Díaz, John Jaime Diaztagle Fernández, Juan José González Guerrero, Enrique |
dc.contributor.author.none.fl_str_mv |
Sprockel Díaz, John Jaime Diaztagle Fernández, Juan José González Guerrero, Enrique |
dc.subject.proposal.spa.fl_str_mv |
Diagnóstico Síndrome coronario agudo Infarto agudo de miocardio Angina inestable Dolor torácico |
topic |
Diagnóstico Síndrome coronario agudo Infarto agudo de miocardio Angina inestable Dolor torácico Técnicas de diagnóstico cardiovascular Infarto del miocardio Dolor en el Pecho |
dc.subject.decs.none.fl_str_mv |
Técnicas de diagnóstico cardiovascular Infarto del miocardio Dolor en el Pecho |
description |
Introducción Por tratarse de una tarea altamente compleja y de importancia clínica, el diagnóstico del síndrome coronario agudo se presta para su exploración por medio de modelado mediante sistemas inteligentes. Objetivo desarrollar un sistema multiagente que ensamble las decisiones de varias redes neuronales para el diagnóstico del dolor torácico enfocado a los síndromes coronarios agudos. Metodología estudio de pruebas diagnósticas en el que se entrenan un conjunto de redes neuronales con una precisión cercana al 70%, que luego son ensambladas mediante tres sistemas de votación para luego adicionar el resultado de redes especiales en poblaciones particulares y seleccionar la mejor configuración que hará parte de un sistema multiagente para el diagnóstico del dolor torácico. Resultados Se generaron 84 redes con precisión promedio del 72% en pruebas; al ensamblarse aumentan dicha precisión hasta llegar a un máximo del 84% que tras la adición de los grupos especiales alcanza el 89%. Se escoge una conformación que brinda una sensibilidad del 96% con una especificidad del 77%, con valores predictivos positivo y negativo de 87 y 93% respectivamente para el diagnóstico de síndrome coronario agudo. Conclusiones Es posible desarrollar una herramienta para el diagnóstico automático del síndrome coronario agudo a partir de un sistema multiagente que ensamble la disposición tomada por un conjunto de redes neuronales artificiales, cuyo rendimiento permite su consideración para su implementación dentro de un sistema de soporte a las decisiones clínicas. |
publishDate |
2017 |
dc.date.issued.none.fl_str_mv |
2017 |
dc.date.accessioned.none.fl_str_mv |
2021-03-24T21:13:16Z |
dc.date.available.none.fl_str_mv |
2021-03-24T21:13:16Z |
dc.type.spa.fl_str_mv |
Artículo de revista |
dc.type.coar.fl_str_mv |
http://purl.org/coar/resource_type/c_2df8fbb1 |
dc.type.coar.spa.fl_str_mv |
http://purl.org/coar/resource_type/c_6501 |
dc.type.driver.spa.fl_str_mv |
info:eu-repo/semantics/article |
dc.type.version.spa.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.content.spa.fl_str_mv |
Text |
dc.type.redcol.spa.fl_str_mv |
http://purl.org/redcol/resource_type/ART |
dc.type.coarversion.spa.fl_str_mv |
http://purl.org/coar/version/c_970fb48d4fbd8a85 |
format |
http://purl.org/coar/resource_type/c_6501 |
status_str |
publishedVersion |
dc.identifier.doi.none.fl_str_mv |
10.1016/j.rccar.2016.11.010 |
dc.identifier.uri.none.fl_str_mv |
https://repositorio.fucsalud.edu.co/handle/001/1371 |
identifier_str_mv |
10.1016/j.rccar.2016.11.010 |
url |
https://repositorio.fucsalud.edu.co/handle/001/1371 |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.relation.ispartof.none.fl_str_mv |
Revista Colombiana de Cardiología. ISSN 2357-3260 Vol. 24, No. 3 (2017) |
dc.relation.citationendpage.spa.fl_str_mv |
260 |
dc.relation.citationissue.spa.fl_str_mv |
3 |
dc.relation.citationstartpage.spa.fl_str_mv |
255 |
dc.relation.citationvolume.spa.fl_str_mv |
24 |
dc.relation.ispartofjournal.spa.fl_str_mv |
Revista Colombiana de Cardiología |
dc.rights.accessrights.spa.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.creativecommons.spa.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) |
dc.rights.uri.spa.fl_str_mv |
https://creativecommons.org/licenses/by/4.0/ |
dc.rights.coar.spa.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
eu_rights_str_mv |
openAccess |
rights_invalid_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) https://creativecommons.org/licenses/by/4.0/ http://purl.org/coar/access_right/c_abf2 |
dc.format.extent.spa.fl_str_mv |
5 p. |
dc.format.mimetype.spa.fl_str_mv |
application/pdf |
dc.publisher.spa.fl_str_mv |
Sociedad Colombiana de Cardiología y Cirugía Cardiovascular |
dc.publisher.place.spa.fl_str_mv |
Bogotá |
dc.source.spa.fl_str_mv |
https://www.elsevier.es/es-revista-revista-colombiana-cardiologia-203-articulo-diagnostico-automatico-del-sindrome-coronario-S0120563316302881 |
institution |
Fundación Universitaria de Ciencias de la Salud - FUCS |
bitstream.url.fl_str_mv |
https://repositorio.fucsalud.edu.co/bitstreams/d47a432d-e4bd-44a9-95cb-33f952b38851/download https://repositorio.fucsalud.edu.co/bitstreams/e18ac6e9-c9f9-43ce-ae78-af18928b38a4/download https://repositorio.fucsalud.edu.co/bitstreams/85ce4ce8-e9fa-4a0e-9c99-3acaecad4008/download https://repositorio.fucsalud.edu.co/bitstreams/b5529954-f45f-4239-981a-5c5c74018a4c/download |
bitstream.checksum.fl_str_mv |
e2dd42ad98634e33d16d24ec1a78aeb8 f6cfdd0a0be8a7a8b575d6cd88a94402 16524671d5063016da70d2dc20383515 d8f2587fc3bf376b83d099c07c9a8b74 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Digital de la Fundación Universitaria de Ciencias de la Salud |
repository.mail.fl_str_mv |
redi@fucsalud.edu.co |
_version_ |
1814355563495030784 |
spelling |
Sprockel Díaz, John Jaime00c96ba8a13b25e96ae9572726f69badDiaztagle Fernández, Juan José9b6bcf74590947ac4e7d862ba28343d3González Guerrero, Enrique1ef46526f289ed327976fe6b7e0d8ec92021-03-24T21:13:16Z20172021-03-24T21:13:16ZSociedad Colombiana de Cardiología y Cirugía CardiovascularBogotáIntroducción Por tratarse de una tarea altamente compleja y de importancia clínica, el diagnóstico del síndrome coronario agudo se presta para su exploración por medio de modelado mediante sistemas inteligentes. Objetivo desarrollar un sistema multiagente que ensamble las decisiones de varias redes neuronales para el diagnóstico del dolor torácico enfocado a los síndromes coronarios agudos. Metodología estudio de pruebas diagnósticas en el que se entrenan un conjunto de redes neuronales con una precisión cercana al 70%, que luego son ensambladas mediante tres sistemas de votación para luego adicionar el resultado de redes especiales en poblaciones particulares y seleccionar la mejor configuración que hará parte de un sistema multiagente para el diagnóstico del dolor torácico. Resultados Se generaron 84 redes con precisión promedio del 72% en pruebas; al ensamblarse aumentan dicha precisión hasta llegar a un máximo del 84% que tras la adición de los grupos especiales alcanza el 89%. Se escoge una conformación que brinda una sensibilidad del 96% con una especificidad del 77%, con valores predictivos positivo y negativo de 87 y 93% respectivamente para el diagnóstico de síndrome coronario agudo. Conclusiones Es posible desarrollar una herramienta para el diagnóstico automático del síndrome coronario agudo a partir de un sistema multiagente que ensamble la disposición tomada por un conjunto de redes neuronales artificiales, cuyo rendimiento permite su consideración para su implementación dentro de un sistema de soporte a las decisiones clínicas.Introduction Because it is a highly complex task of a great clinical importance, the diagnosis of acute coronary syndromes allows for their analysis by means of intelligent system models. Motivation To develop a multi-agent system that assembles the decisions of several neural networks for the diagnosis of chest pain with a focus on acute coronary syndromes. Methods A study of diagnostic tests where a series of neural networks are trained with a precision close to 70%, and are later on assembled with three voting systems. Then the results of special networks on specific populations are added to select the best configuration that will make part of a multi-agent system for diagnosing chest pain. Results A total of 84 networks were generated, with an average precision of 72% during testing; once assembled this precision rises up to a maximum of 84%, which then reaches 89% when the special groups are included. A configuration that offers a sensitivity of 96% with a specificity of 77% and positive and negative predictive values of 87 and 93% respectively is chosen for the diagnosis of acute coronary syndrome. Conclusions It is possible to develop a tool for the automatic diagnosis of acute coronary syndrome using a multi-agent system that assembles the dispositions taken by a set of artificial neural networks. Its performance allows taking it into consideration for implementing it within a clinical decision-making support system.https://www.elsevier.es/es-revista-revista-colombiana-cardiologia-203-articulo-diagnostico-automatico-del-sindrome-coronario-S01205633163028815 p.application/pdfDiagnóstico automático del síndrome coronario agudo utilizando un sistema multiagente basado en redes neuronalesAutomatic diagnosis of acute coronary syndrome using a multi-agent system based in neural networksArtículo de revistahttp://purl.org/coar/resource_type/c_6501http://purl.org/coar/resource_type/c_2df8fbb1info:eu-repo/semantics/articleinfo:eu-repo/semantics/publishedVersionTexthttp://purl.org/redcol/resource_type/ARThttp://purl.org/coar/version/c_970fb48d4fbd8a8510.1016/j.rccar.2016.11.010https://repositorio.fucsalud.edu.co/handle/001/1371spaRevista Colombiana de Cardiología. ISSN 2357-3260 Vol. 24, No. 3 (2017)260325524Revista Colombiana de Cardiologíainfo:eu-repo/semantics/openAccessAtribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)https://creativecommons.org/licenses/by/4.0/http://purl.org/coar/access_right/c_abf2DiagnósticoSíndrome coronario agudoInfarto agudo de miocardioAngina inestableDolor torácicoTécnicas de diagnóstico cardiovascularInfarto del miocardioDolor en el PechoPublicationORIGINAL24. Automatic diagnosis of acute coronary (1).pdf24. Automatic diagnosis of acute coronary (1).pdfapplication/pdf116392https://repositorio.fucsalud.edu.co/bitstreams/d47a432d-e4bd-44a9-95cb-33f952b38851/downloade2dd42ad98634e33d16d24ec1a78aeb8MD51LICENSElicense.txtlicense.txttext/plain; charset=utf-815424https://repositorio.fucsalud.edu.co/bitstreams/e18ac6e9-c9f9-43ce-ae78-af18928b38a4/downloadf6cfdd0a0be8a7a8b575d6cd88a94402MD52TEXT24. Automatic diagnosis of acute coronary (1).pdf.txt24. Automatic diagnosis of acute coronary (1).pdf.txtExtracted texttext/plain8542https://repositorio.fucsalud.edu.co/bitstreams/85ce4ce8-e9fa-4a0e-9c99-3acaecad4008/download16524671d5063016da70d2dc20383515MD53THUMBNAIL24. Automatic diagnosis of acute coronary (1).pdf.jpg24. Automatic diagnosis of acute coronary (1).pdf.jpgGenerated Thumbnailimage/jpeg13950https://repositorio.fucsalud.edu.co/bitstreams/b5529954-f45f-4239-981a-5c5c74018a4c/downloadd8f2587fc3bf376b83d099c07c9a8b74MD54001/1371oai:repositorio.fucsalud.edu.co:001/13712024-02-02 13:10:43.968https://creativecommons.org/licenses/by/4.0/open.accesshttps://repositorio.fucsalud.edu.coRepositorio Digital de la Fundación Universitaria de Ciencias de la Saludredi@fucsalud.edu.coQ09ORElDSU9ORVMgTEVHQUxFUyBERSBVU08gREVMIFBPUlRBTCBXRUIKd3d3LmZ1Y3NhbHVkLmVkdS5jbwogCkVsIFBvcnRhbCBXZWIgd3d3LmZ1Y3NhbHVkLmVkdS5jbyBoYSBzaWRvIGRpc2XDsWFkbyBwYXJhIGZhY2lsaXRhciBhbCB2aXNpdGFudGUsIGludGVyZXNhZG8sIGVzdHVkaWFudGUsIGRvY2VudGUsIGFkbWluaXN0cmF0aXZvIHkvbyB1c3VhcmlvIGVuIGdlbmVyYWwsIGVsIGFjY2VzbyBhIGxhIGluZm9ybWFjacOzbiBkZSBsYSBJbnN0aXR1Y2nDs24geSBhIHN1cyBzZXJ2aWNpb3MgZW4gbMOtbmVhLCBwb3IgbG8gY3VhbCBlc3RlIHNpdGlvIHdlYiB0aWVuZSBjb21vIGZ1bmNpw7NuIHByaW5jaXBhbCBwcm92ZWVyIGluZm9ybWFjacOzbiB5IHNlcnZpY2lvcywgYXPDrSBjb21vIGRpdnVsZ2FyIHkgcHJvbW92ZXIgbGFzIGFjdGl2aWRhZGVzIGFjYWTDqW1pY2FzLCBjaWVudMOtZmljYXMsIGN1bHR1cmFsZXMgeSBjb21lcmNpYWxlcyBkZSBsYSBGVUNTLCBwb3IgdGFudG8gbGEgYWNlcHRhY2nDs24gZGUgZXN0YXMgY29uZGljaW9uZXMgZGUgdXNvLCBzb24gb2JsaWdhdG9yaWFzIGUgaW5kaXNwZW5zYWJsZXMgcGFyYSBxdWUgZWwgdXN1YXJpbyB1dGlsaWNlIGVsIHNpdGlvLgogCkxhcyBwcmVzZW50ZXMgY29uZGljaW9uZXMgZGUgdXNvLCByZWd1bGFuIGxhIHV0aWxpemFjacOzbiBkZSBsYSBww6FnaW5hIHdlYiB3d3cuZnVjc2FsdWQuZWR1LmNvLgogClNlw7FvciB1c3VhcmlvLCBwb3IgZmF2b3IgbGVhIGRldGFsbGFkYSB5IGN1aWRhZG9zYW1lbnRlIGVzdGUgZG9jdW1lbnRvIGp1bnRvIGNvbiBsYXMgcG9sw610aWNhcyBkZSBwcml2YWNpZGFkIHkgcHJvdGVjY2nDs24gZGUgZGF0b3MsIGFudGVzIGRlIGluaWNpYXIgc3UgbmF2ZWdhY2nDs24uClNpIFVzdGVkIG5vIHNlIGVuY3VlbnRyYSBjb25mb3JtZSBjb24gbG9zIHTDqXJtaW5vcyBkZSB1c28gZGUgbGEgcMOhZ2luYSB3ZWIgbyBjdWFscXVpZXIgb3RyYSBkaXNwb3NpY2nDs24sIHBvciBmYXZvciBhYnN0ZW5nYXNlIGRlIGluZ3Jlc2FyIHkvbyB1dGlsaXphciBlc3RlIHNpdGlvIGRlIGN1YWxxdWllciBmb3JtYS4KIApBbCBhY2NlZGVyIGEgZXN0ZSBwb3J0YWwsIHN1cyBzaXRpb3MgeSB0b2RhcyBsYXMgcMOhZ2luYXMgcXVlIGxvIGNvbmZvcm1hbiwgc2UgZW50aWVuZGUgcXVlIFVzdGVkIGhhIGxlw61kbywgZW50ZW5kaWRvIHkgYWNlcHRhZG8gdG9kb3MgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGV4cHVlc3RvcyBlbiBlc3RlIGRvY3VtZW50bywgZGUgbGEgbWlzbWEgbWFuZXJhIGNvbW8gc2kgaHViaWVyYSBmaXJtYWRvIHVuIGFjdWVyZG8gZXNjcml0bywgZW50ZW5kaWVuZG8gZW4gdG9kbyBjYXNvIHF1ZSBzdSBwb3NpY2nDs24gZW4gZWwgYWN1ZXJkbyBzZXLDoSBpZGVudGlmaWNhZGEgZW4gdG9kbyBlc3RlIGRvY3VtZW50byBjb21vIOKAnGVsIFVzdWFyaW/igJ0uCiAKTGEgRlVDUyBwb2Ryw6EgbW9kaWZpY2FyIGxvcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBkZSBlc3RlIGRvY3VtZW50byBlbiBjdWFscXVpZXIgbW9tZW50bywgeSBlc3RhcyBtb2RpZmljYWNpb25lcyB0ZW5kcsOhbiB2YWxpZGV6IGRlc2RlIGVsIG1vbWVudG8gZW4gcXVlIHNlYW4gcHVibGljYWRhcyBlbiBlbCBzaXRpbyB3ZWIuCiAKMS4gQXNwZWN0b3MgZ2VuZXJhbGVzOgogCmEuIExhIGluZm9ybWFjacOzbiBjb250ZW5pZGEgZW4gZXN0ZSBwb3J0YWwgd2ViIChlbiBhZGVsYW50ZSBjb250ZW5pZG9zKSBkZWJlcsOhIHNlciB1dGlsaXphZGEgw7puaWNhbWVudGUgY29uIGZpbmVzIHBlcnNvbmFsZXMsIHBvciBsbyB0YW50byBlbCBVc3VhcmlvIG5vIHBvZHLDoSBkaXN0cmlidWlyLCBtb2RpZmljYXIsIHRyYW5zbWl0aXIsIGNvcGlhciwgYWxtYWNlbmFyLCBjb2RpZmljYXIsIGVudmlhciBvIHVzYXIgZXN0b3MgY29udGVuaWRvcyBwYXJhIHByb3DDs3NpdG9zIGNvbWVyY2lhbGVzIHUgb3Ryb3MgcXVlIGltcGxpcXVlbiBleHBsb3RhY2nDs24gZWNvbsOzbWljYSwgc2Fsdm8gcHJldmlhIGF1dG9yaXphY2nDs24gZXNjcml0YWxhIEZVQ1MuCiAKYi4gU2UgZW50ZW5kZXLDoSBxdWUgZWwgVXN1YXJpbyBoYSBsZcOtZG8sIGVudGVuZGlkbyB5IGFjZXB0YWRvIHRvZG9zIGxvcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBleHB1ZXN0b3MgZW4gZXN0ZSBkb2N1bWVudG8gZW4gbG9zIHNpZ3VpZW50ZXMgY2Fzb3M6CiAKQ29uc3VsdGEgZGUgY3VhbHF1aWVyIGNvbnRlbmlkbyBpbmNvcnBvcmFkbyBlbiBlbCBzaXRpbyB3ZWIuCkVudmnDsyBkZSBkYXRvcyBlbiBsb3MgZm9ybXVsYXJpb3MgZGUgcmVnaXN0cm8gZGVsIHNpdGlvIHdlYi4KTGEgdXRpbGl6YWNpw7NuIGRlIGN1YWxxdWllcmEgZGUgbG9zIHNlcnZpY2lvcyBkaXNwb25pYmxlcyBlbiBlbCBzaXRpbyB3ZWIuCkxhIGRlc2NhcmdhIGRlIGNvbnRlbmlkb3MgaW5jb3Jwb3JhZG9zIGVuIGVsIHNpdGlvIHdlYi4KTGEgbmF2ZWdhY2nDs24gZW4gZWwgc2l0aW8gd2ViIGRlIGN1YWxxdWllciBtYW5lcmEgY29ub2NpZGEgbyBwb3IgY29ub2Nlci4KIApjLiBFbCBVc3VhcmlvIHBvZHLDoSBuYXZlZ2FyIGxpYnJlIHkgZ3JhdHVpdGFtZW50ZSBhIHRyYXbDqXMgZGUgZXN0ZSBzaXRpby4KIApkLiBFbCBVc3VhcmlvIHNvbG8gcG9kcsOhIGRlc2NhcmdhciBjb250ZW5pZG9zIGRlbCBtaXNtbywgY3VhbmRvIGVsIHNpdGlvIGV4cHJlc2FtZW50ZSBsbyBhdXRvcmljZS4KIAplLiBQb2Ryw6FuIGV4aXN0aXIgYWxndW5vcyBjYXNvcyBlbiBsb3MgY3VhbGVzIHNlIGNvbmRpY2lvbmUgZWwgc2VydmljaW8gZW4gbMOtbmVhLCBhbCBwcmV2aW8gY3VtcGxpbWllbnRvIGRlbCBkaWxpZ2VuY2lhbWllbnRvIGRlIGZvcm11bGFyaW9zIHkvbyBwYWdvIHBvciBsYSBwcmVzdGFjacOzbiBkZWwgc2VydmljaW8uCiAKZi4gRWwgdXN1YXJpbyBhY2VwdGEgY29ub2NlciB5IGN1bXBsaXIgdG9kYXMgbGFzIGxleWVzIHkgbm9ybWFzIG5hY2lvbmFsZXMsIGNvbXVuaXRhcmlhcyBlIGludGVybmFjaW9uYWxlcyByZWxhY2lvbmFkYXMgY29uIHN1cyBvYmxpZ2FjaW9uZXMgeSBkZWJlcmVzIGJham8gZWwgcHJlc2VudGUgZG9jdW1lbnRvIGRlIGNvbmRpY2lvbmVzIGxlZ2FsZXMgZGUgdXNvLgogCjIuIEluZm9ybWFjacOzbiBkZSByZWdpc3RybzoKIApMb3Mgc2lndWllbnRlcyBzb24gbG9zIGxpbmVhbWllbnRvcyBkZSBudWVzdHJhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gY3VhbnRvIGFsIHJlY2F1ZG8sIGFjY2VzbyB5IHVzbyBkZSBsYSBpbmZvcm1hY2nDs24gZGUgcmVnaXN0cm8gcXVlIHN1bWluaXN0cmEgZWwgdXN1YXJpbyBhIHRyYXbDqXMgZGVsIHNpdGlvIHdlYi4KIApMYSBGVUNTIHByb3RlZ2Vyw6EgbG9zIGRhdG9zIG8gY3VhbHF1aWVyIGluZm9ybWFjacOzbiBwZXJzb25hbCBxdWUgZWwgdXN1YXJpbyBwcm9wb3JjaW9uZSBhbCBtb21lbnRvIGVuIHF1ZSBoYWNlIHVzbyBkZSBlc3RlIHNpdGlvd2VieSwgZXN0b3Mgc2UgdXRpbGl6YXLDoW4gZXhjbHVzaXZhbWVudGUgcGFyYSBjdW1wbGlyIGNvbiBsb3MgcHJvcMOzc2l0b3MgZGUgc3Ugc2l0aW8gd2ViIHkgc3UgdXNvIGVzIGVsIGVzdGFibGVjaWRvIGVuIGVsIHByZXNlbnRlIGRvY3VtZW50by4KRWwgdXN1YXJpbyBxdWUgcHJvcG9yY2lvbmUgc3VzIGRhdG9zIGVuIGVzdGUgc2l0aW8gd2ViIG8gYSB0cmF2w6lzIGRlIMOpbCwgZXhwcmVzYW1lbnRlIGF1dG9yaXphIGEgbGEgRlVDUyBwYXJhIHJlYWxpemFyIHN1IHRyYXRhbWllbnRvIHNlYSBvIG5vIGF1dG9tYXRpemFkbyB5IHBhcmEgdXNhcmxvcyBjb25mb3JtZSBhIGxvIGV4cHJlc2FkbyBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8sIGRlIGFjdWVyZG8gY29uIGxhIHBvbMOtdGljYSBpbnRlcm5hIGRlIHByb3RlY2Npw7NuIGRlIGRhdG9zLgpFbCBVc3VhcmlvIGVudGllbmRlIHkgYWNlcHRhIHF1ZSBsYSBGVUNTIHBvZHLDoSBlZmVjdHVhciBlbCB0cmF0YW1pZW50byBkZSBsb3MgZGF0b3MgZGVsIHVzdWFyaW8sIGRlIG1hbmVyYSBkaXJlY3RhIG8gYSB0cmF2w6lzIGRlIHRlcmNlcm9zIGV4cHJlc2FtZW50ZSBkZXNpZ25hZG9zIHBvciBlbGxhLCBxdWllbmVzIGFjdHVhcsOhbiBjb21vIGVuY2FyZ2Fkb3MgZGVsIHRyYXRhbWllbnRvIGRlIHN1IGluZm9ybWFjacOzbiBwZXJzb25hbCwgY29uIGxhcyBvYmxpZ2FjaW9uZXMgcXVlIGxhIGxleSBjb250ZW1wbGUuCkxhIGluZm9ybWFjacOzbiBkZSByZWdpc3RybyBxdWUgc2UgbGUgc29saWNpdGEgYWwgdXN1YXJpbyBlcyBsYSBtw61uaW1hIHBhcmEgZGFyIGN1bXBsaW1pZW50byBhIGxhIHBvbMOtdGljYSBkZSB0cmF0YW1pZW50byB5IHByb3RlY2Npw7NuIGRlIGRhdG9zIHBlcnNvbmFsZXMgZGUgbGEgRlVDUyB5IGFsYXMgbm9ybWFzIGxlZ2FsZXMgdmlnZW50ZXMgZW4gQ29sb21iaWEuCkVuIGVsIHByb2Nlc28gZGUgcmVnaXN0cm8sIHNlIGxlIGFkdmVydGlyw6EgYWwgdXN1YXJpbyBjb24gdW4gYXN0ZXJpc2NvICgqKSBxdcOpIGluZm9ybWFjacOzbiBkZWJlIHNlciBzdW1pbmlzdHJhZGEgb2JsaWdhdG9yaWFtZW50ZSB5IGN1w6FsIGVzIG9wY2lvbmFsLgpFbCB1c3VhcmlvIGRlIGVzdGUgc2l0aW8gd2ViIGVudGllbmRlIHkgYWNlcHRhIHF1ZSBzdXMgZGF0b3MgcGVyc29uYWxlcyBzZSByZWNvcGlsYW4gY29uIGVsIGZpbiBkZSBwcm9jdXJhcmxlIHVuIHNlcnZpY2lvIGVmaWNpZW50ZSB5IHBlcnNvbmFsaXphZG8sIHkgcXVlIHBvZHLDoW4gc2VyIHVzYWRvcyBjb24gZmluZXMgYWNhZMOpbWljb3MsIGludmVzdGlnYXRpdm9zIHkgY29tZXJjaWFsZXMsIHBvciBsbyBjdWFsIGF1dG9yaXphIGV4cHJlc2FtZW50ZSBxdWUgc2VhbiB1c2Fkb3MgcGFyYSByZW1pdGlyIGluZm9ybWFjacOzbiBkZSBzdXMgcHJvZ3JhbWFzIGFjYWTDqW1pY29zIGZvcm1hbGVzIGUgaW5mb3JtYWxlcywgcGFyYSBkYXIgY3VtcGxpbWllbnRvIGEgc3VzIG9ibGlnYWNpb25lcyBjb250cmFjdHVhbGVzIG8gbGVnYWxlcywgcGFyYSBldmFsdWFyIGxhIGNhbGlkYWQgZGVsIHNlcnZpY2lvLCBhc8OtIGNvbW8gcGFyYSByZW1pdGlyIGluZm9ybWFjacOzbiBkZSBzdXMgcHJveWVjdG9zLCBwbGFuZXMgeSBkZW3DoXMgaW5mb3JtYWNpw7NuIGluc3RpdHVjaW9uYWwgZGUgbGEgRlVDUy4gRW4gdG9kbyBjYXNvLCBlc3RhIGluZm9ybWFjacOzbiBzZXLDoSB1dGlsaXphZGEgZW4gZGVzYXJyb2xsbyBkZSBsYXMgZnVuY2lvbmVzIHByb3BpYXMgZGUgbGEgRlVDUy4KMy4gRGl2dWxnYWNpw7NuIGRlIGxhIGluZm9ybWFjacOzbiBkZSByZWdpc3RybzoKIApMYSBpbmZvcm1hY2nDs24gZGUgcmVnaXN0cm8gZGUgY2FkYSB1c3VhcmlvIGVzIGNvbmZpZGVuY2lhbCwgeSBubyBzZSBjb21wYXJ0aXLDoSBjb24gb3RyYXMgcGVyc29uYXMgbyBlbnRpZGFkZXMsIHNhbHZvIGN1YW5kbyBsYSBGVUNTIGNvbnNpZGVyZSBxdWUgc2UgcHJlc2VudGVuIGxvcyBzaWd1aWVudGVzIGNhc29zOgogCkN1YW5kbyBsYSBhdXRvcml6YWNpw7NuIGRlbCB0aXR1bGFyIG5vIHNlYSBvYmxpZ2F0b3JpYSAoTnVtZXJhbCA4LiDigJxBdXRvcml6YWNpw7NuIGRlbCBUaXR1bGFy4oCdIOKAkyBQb2zDrXRpY2EgZGUgVHJhdGFtaWVudG8geSBQcm90ZWNjacOzbiBkZSBEYXRvcyBQZXJzb25hbGVzIGRlIGxhIEZVQ1MpClBvciBsYSBleGlzdGVuY2lhIGRlIHVuIG1hbmRhdG8gbGVnYWwsIGRlYmVyIGVzdGF0dXRhcmlvIG8ganVkaWNpYWwgcXVlIG9ibGlndWUgYSBzdW1pbmlzdHJhcmxhLgpDdWFscXVpZXIgb3RyYSBleGNlcGNpw7NuIGRlZmluaWRhIGVuIGxhcyBsZXllcyBhcGxpY2FibGVzCkVuIHRvZG8gY2FzbywgZWwgVXN1YXJpbyBlbnRpZW5kZSB5IGFjZXB0YSBxdWUgc3VzIGRhdG9zIHBlcnNvbmFsZXMgZXZlbnR1YWxtZW50ZSBzZSBjb21wYXJ0aXLDoW4gY29uIG90cmFzIGVudGlkYWRlcyB1IG9yZ2FuaXphY2lvbmVzIHByaXZhZGFzIG8gZXN0YXRhbGVzLCBjb24gZWwgZmluIGRlIGN1bXBsaXIgY29uIGxvcyBkZWJlcmVzIHkgb2JsaWdhY2lvbmVzIHF1ZSBsZWdhbG1lbnRlIHRpZW5lIGNvbW8gSW5zdGl0dWNpw7NuIGRlIEVkdWNhY2nDs24gU3VwZXJpb3IuCiAKNC4gT2JsaWdhY2lvbmVzIHkgZGViZXJlcyBkZWwgdXN1YXJpbzoKIApFbCB1c3VhcmlvIGVzdMOhIGRlIGFjdWVyZG8gZW4gcHJvcG9yY2lvbmFyIGEgbGEgRlVDUywgaW5mb3JtYWNpw7NuIHZlcmRhZGVyYSwgcHJlY2lzYSwgYWN0dWFsaXphZGEgeSBjb21wbGV0YSwgc2Vnw7puIHNlIGluZGlxdWUgZW4gZWwgZm9ybXVsYXJpbyBkZSByZWdpc3Ryby4gSWd1YWxtZW50ZSwgZWwgdXN1YXJpbyBlc3TDoSBkZSBhY3VlcmRvIGVuIGNvbGFib3JhciBjb24gbGEgRlVDUywgcGFyYSBtYW50ZW5lciBlc3RhIGluZm9ybWFjacOzbiBhY3R1YWxpemFkYSB5IGNvbXBsZXRhLgogCkVsIHVzdWFyaW8gc2Ugb2JsaWdhIGEgbm8gcmVwcm9kdWNpciwgZHVwbGljYXIsIGNvcGlhciwgdmVuZGVyLCByZXZlbmRlciBvIGV4cGxvdGFyIHBhcmEgZmluZXMgY29tZXJjaWFsZXMsIGN1YWxxdWllciBzZWNjacOzbiBkZWwgc2VydmljaW8sIHVzbyBvIGFjY2VzbyBhbCBtaXNtby4gVGFudG8gZWwgc2VydmljaW8gY29tbyB0ZXJjZXJvcyBwb2Ryw6FuIHByb3BvcmNpb25hciB2w61uY3Vsb3MgYSBvdHJvcyBzaXRpb3MgbyByZWN1cnNvcyBkZSBsYSByZWQgbXVuZGlhbC4gRGViaWRvIGEgcXVlIGxhIEZVQ1Mgbm8gdGllbmUgY29udHJvbCBhbGd1bm8gc29icmUgZGljaG9zIHNpdGlvcyBvIHJlY3Vyc29zLCBlbCB1c3VhcmlvIHJlY29ub2NlIHkgYWNlcHRhIHF1ZSBsYSBGVUNTIG5vIHNlcsOhIHJlc3BvbnNhYmxlIHBvciBsYSBkaXNwb25pYmlsaWRhZCBkZSBsb3Mgc2l0aW9zIG8gcmVjdXJzb3MgZXh0ZXJub3MgbmkgcG9yIGN1YWxxdWllciBjb250ZW5pZG8sIHB1YmxpY2lkYWQsIHByb2R1Y3Rvcywgc2VydmljaW9zIHUgb3RybyB0aXBvIGRlIG1hdGVyaWFsIGNvbnRlbmlkbyDDsyBhIGRpc3Bvc2ljacOzbiBlbiB0YWxlcyBzaXRpb3MgbyByZWN1cnNvcy4KIApFbCB1c3VhcmlvIHJlY29ub2NlIHkgYWNlcHRhIHF1ZSBsYSBGVUNTIG5vIHNlcsOhIHJlc3BvbnNhYmxlLCBkaXJlY3RhIG8gaW5kaXJlY3RhbWVudGUsIHBvciBjdWFscXVpZXIgZGHDsW8gbyBwZXJqdWljaW8gY2F1c2FkbyBvIHF1ZSBzZSBwcmVzdW1hIHF1ZSBzZWEgY2F1c2FkbyBwb3IgdGFsZXMgY29udGVuaWRvcywgcHJvZHVjdG9zIG8gc2VydmljaW9zIGRpc3BvbmlibGVzIGVuIGRpY2hvcyBzaXRpb3MgbyByZWN1cnNvcyBleHRlcm5vcywgbyBwb3IgbGEgdXRpbGl6YWNpw7NuIG8gY29uZmlhbnphIGRlcG9zaXRhZGEgcG9yIGVsIHVzdWFyaW8gZW4gdGFsZXMgY29udGVuaWRvcywgcHJvZHVjdG9zIG8gc2VydmljaW9zLgogCkVsIHVzdWFyaW8gc2Ugb2JsaWdhIGEgTk8gdXRpbGl6YXIgZWwgcG9ydGFsIHdlYiBuaSBlc3RlIFNlcnZpY2lvIGNvbiBlbCBmaW4gZGU6CiAKUG9uZXIgYSBkaXNwb3NpY2nDs24gZGUgbG9zIGRlbcOhcywgZW52aWFyIHBvciBlLW1haWwgbywgZGUgY3VhbHF1aWVyIG1vZG8sIHRyYW5zbWl0aXIgY29udGVuaWRvcyBpbGVnYWxlcywgZGHDsWlub3MsIG1vbGVzdG9zLCBhbWVuYXphZG9yZXMsIGFidXNpdm9zLCB0b3J0dW9zb3MsIGRpZmFtYXRvcmlvcywgdnVsZ2FyZXMsIG9ic2Nlbm9zLCBpbnZhc29yZXMgZGUgbGEgaW50aW1pZGFkIGRlIHRlcmNlcm9zLCBvZGlvc29zLCB4ZW7Ds2ZvYm9zLCByYWNpc3RhcywgaWxlZ2FsZXMgbywgZGUgYWxnw7puIG1vZG8sIGluYWNlcHRhYmxlczsKSGFjZXJzZSBwYXNhciBvIGZpbmdpciBzZXIgY3VhbHF1aWVyIG90cmEgcGVyc29uYSBvIGVudGlkYWQsIGluY2x1eWVuZG8sIHNpbiBsaW1pdGFjacOzbiwgdW4gcmVwcmVzZW50YW50ZSBkZSBsYSBGVUNTLCBmdW5kYWRvciwgZ3XDrWEgbyBhbmZpdHJpw7NuIGRlIGZvcnVtcywgbyBkZSBjdWFscXVpZXIgb3RybyBtb2RvIG1lbnRpciBvIGZpbmdpciBzb2JyZSBzdSByZWxhY2nDs24gY29uIGN1YWxxdWllciBvdHJhIHBlcnNvbmEgbyBhZmlsaWFjacOzbiBhIGN1YWxxdWllciBlbnRpZGFkOwpQb25lciBhIGRpc3Bvc2ljacOzbiBkZSBsb3MgZGVtw6FzIHVzdWFyaW9zLCBlbnZpYXIgcG9yIGUtbWFpbCBvLCBkZSBhbGfDum4gbW9kbyB0cmFuc21pdGlyLCBjdWFscXVpZXIgY29udGVuaWRvIHF1ZSwgZGUgYWN1ZXJkbyBjb24gbGFzIGxleWVzIGFwbGljYWJsZXMgbyByZWxhY2lvbmVzIGNvbnRyYWN0dWFsZXMgZXhpc3RlbnRlcywgZWwgdXN1YXJpbyBubyBlc3TDoSBhdXRvcml6YWRvIGEgdHJhbnNtaXRpciAodGFsZXMgY29tbyBpbmZvcm1hY2nDs24gcHJpdmlsZWdpYWRhLCBpbmZvcm1hY2nDs24gcHJvdGVnaWRhIHBvciBkZXJlY2hvcyBkZSBwcm9waWVkYWQgaW5kdXN0cmlhbCBvIGludGVsZWN0dWFsIG8gaW5mb3JtYWNpw7NuIHNvYnJlIGxhIGN1YWwgdGllbmUgdW4gZGViZXIgZGUgY29uZmlkZW5jaWFsaWRhZCkuClBvbmVyIGEgZGlzcG9zaWNpw7NuIGRlIGxvcyBkZW3DoXMgdXN1YXJpb3MsIGVudmlhciBwb3IgZS1tYWlsIG8sIGRlIGFsZ8O6biBtb2RvLCB0cmFuc21pdGlyIGNvbnRlbmlkbyBhbGd1bm8gc3VzY2VwdGlibGUgZGUgaW5mcmluZ2lyIHBhdGVudGVzLCBtYXJjYXMsIHNlY3JldG9zIGNvbWVyY2lhbGVzLCBkZXJlY2hvcyBkZSBhdXRvciB1IG90cm9zIGRlcmVjaG9zIGRlIHRlcmNlcm9zICgiRGVyZWNob3MiKTsKUG9uZXIgYSBkaXNwb3NpY2nDs24gZGUgbG9zIGRlbcOhcyB1c3VhcmlvcywgZW52aWFyIHBvciBlLW1haWwgbywgZGUgYWxnw7puIG1vZG8sIHRyYW5zbWl0aXIgcHVibGljaWRhZCBubyBzb2xpY2l0YWRhIG8gYXV0b3JpemFkYSwgbWF0ZXJpYWwgcHVibGljaXRhcmlvLCAiY29ycmVvIGJhc3VyYSIsICJjYXJ0YXMgZW4gY2FkZW5hIiwgImVzdHJ1Y3R1cmFzIHBpcmFtaWRhbGVzIiwgbyBjdWFscXVpZXIgb3RyYSBmb3JtYSBkZSBzb2xpY2l0dWQ7ClBvbmVyIGEgZGlzcG9zaWNpw7NuIGRlIGxvcyBkZW3DoXMgdXN1YXJpb3MsIGVudmlhciBwb3IgZS1tYWlsIG8sIGRlIGFsZ8O6biBtb2RvLCB0cmFuc21pdGlyIG1hdGVyaWFsIGFsZ3VubyBxdWUgc2VhIHBvcnRhZG9yIGRlIHZpcnVzIG8gY3VhbHF1aWVyIG90cm8gY8OzZGlnbyBpbmZvcm3DoXRpY28sIGFyY2hpdm9zIG8gcHJvZ3JhbWFzIGRpc2XDsWFkb3MgcGFyYSBpbnRlcnJ1bXBpciwgZGVzdHJ1aXIgbyBsaW1pdGFyIGVsIGZ1bmNpb25hbWllbnRvIGRlIGN1YWxxdWllciBzb2Z0d2FyZSwgaGFyZHdhcmUgbyBlcXVpcG8gZGUgdGVsZWNvbXVuaWNhY2lvbmVzOwpQb25lciBhIGRpc3Bvc2ljacOzbiBkZSBsb3MgZGVtw6FzIHVzdWFyaW9zLCBlbnZpYXIgcG9yIGUtbWFpbCBvLCBkZSBhbGfDum4gbW9kbyB0cmFuc21pdGlyLCBjdWFscXVpZXIgY29udGVuaWRvIHF1ZSwgZGUgYWN1ZXJkbyBjb24gbGFzIGxleWVzIGFwbGljYWJsZXMsIHNlYSBkZSBjYXLDoWN0ZXIgaWxlZ2FsIG8gaW1wbGlxdWUsIGF5dWRlIG8gY29hZHl1dmUgbGEgY29taXNpw7NuIGRlIGNvbmR1Y3RhcyBkZWxpY3R1YWxlcyBvIGlsZWdhbGVzIGRlIGN1YWxxdWllciBtYW5lcmEuCkludGVycnVtcGlyIGVsIGN1cnNvIG5vcm1hbCBkZSBsYXMgY29udmVyc2FjaW9uZXMsIHByb3ZvY2FyIHF1ZSBsYSBwYW50YWxsYSBkZWwgb3JkZW5hZG9yIGFkcXVpZXJhIG1heW9yIHZlbG9jaWRhZCBkZSBsYSBub3JtYWwgY29uIGxhIHF1ZSBsb3MgdXN1YXJpb3MgcHVlZGVuIHBhcnRpY2lwYXIgZW4gZWwgU2VydmljaW8sIG8gZGUgYWxnw7puIG1vZG8gYWN0dWFyIGRlIG1hbmVyYSBxdWUgYWZlY3RlIGRlIGZvcm1hIG5lZ2F0aXZhIGEgbGEgcG9zaWJpbGlkYWQgZGUgY29tdW5pY2Fyc2UgZW4gdGllbXBvIHJlYWw7CkludGVyZmVyaXIgbyBpbnRlcnJ1bXBpciBlbCBTZXJ2aWNpbywgc2Vydmlkb3JlcyBvIHJlZGVzIGNvbmVjdGFkb3MgYWwgU2VydmljaW8sIG8gaW5jdW1wbGlyIGxvcyByZXF1aXNpdG9zLCBwcm9jZWRpbWllbnRvcyB5IHJlZ3VsYWNpb25lcyBkZSBsYSBwb2zDrXRpY2EgZGUgcmVkZXMgY29uZWN0YWRhcyBhbCBzZXJ2aWNpby4KNS4gTGltaXRhY2lvbmVzIGRlIGxhIFJlc3BvbnNhYmlsaWRhZDoKIApDb24gdG9kYSBsYSBleHRlbnNpw7NuIHBlcm1pdGlkYSBwb3IgbGFzIGxleWVzIG5hY2lvbmFsZXMgYXBsaWNhYmxlcywgbGEgRlVDUyBubyBhc3VtZSByZXNwb25zYWJpbGlkYWQgY29udHJhY3R1YWwgbyBleHRyYWNvbnRyYWN0dWFsIGFsZ3VuYSBkZSBsb3MgZGHDsW9zIHkgcGVyanVpY2lvcyBkaXJlY3RvcywgaW5kaXJlY3RvcywgaW5jaWRlbnRhbGVzLCBlc3BlY2lhbGVzIG8gZW1lcmdlbnRlcyAoaW5jbHVzbyBzaSBsYSBGdW5kYWNpw7NuIFVuaXZlcnNpdGFyaWEgZGUgQ2llbmNpYXMgZGUgbGEgU2FsdWQgaHViaWVyYSBzaWRvIGFkdmVydGlkbyBkZSBsYSBwb3NpYmlsaWRhZCBkZSBsb3MgbWlzbW9zKSBxdWUgdHJhaWdhbiBjYXVzYSBkZWw6IGVsIHVzbyBvIGRlIGxhIGltcG9zaWJpbGlkYWQgZGUgdXNhciBlbCBzZXJ2aWNpbzsgZWwgZGVsIGFjY2VzbyBubyBhdXRvcml6YWRvIMOzIGFsdGVyYWNpw7NuIGRlIHN1cyB0cmFuc21pc2lvbmVzIGRlIGRhdG9zOyBlbCBkZWNsYXJhY2lvbmVzIGRlIGNvbmR1Y3RhIGRlIHRlcmNlcm9zIGEgdHJhdsOpcyBkZWwgc2VydmljaW8uCiAKRWwgdXN1YXJpbyBhY3VlcmRhIGFkZW3DoXMgcXVlIGxhIEZ1bmRhY2nDs24gVW5pdmVyc2l0YXJpYSBkZSBDaWVuY2lhcyBkZSBsYSBTYWx1ZCBubyBzZXLDoSByZXNwb25zYWJsZSBkZSBuaW5nw7puIGRhw7FvIG8gcGVyanVpY2lvIGRlcml2YWRvIGRlIGxhIGludGVycnVwY2nDs24sIHN1c3BlbnNpw7NuIG8gdGVybWluYWNpw7NuIGRlbCBzZXJ2aWNpbywgaW5jbHV5ZW5kbywgcGVybyBubyBsaW1pdMOhbmRvc2UsIGEgZGHDsW9zLCBsdWNybyBjZXNhbnRlLCB1c28sIGRhdG9zIHUgb3Ryb3MgYmllbmVzIGludGFuZ2libGVzLCBvIHBlcmp1aWNpb3MgZGlyZWN0b3MsIGluZGlyZWN0b3MsIGluY2lkZW50YWxlcywgZXNwZWNpYWxlcywgY29uc2VjdWVudGVzLCBvIGVqZW1wbGFyZXMsIHlhIHNlYSBxdWUgdGFsIGludGVycnVwY2nDs24sIHN1c3BlbnNpw7NuIG8gdGVybWluYWNpw7NuIHNlYSBqdXN0aWZpY2FkYSBvIG5vLCBuZWdsaWdlbnRlIMOzIGludGVuY2lvbmFsLCBhZHZlcnRpZGEgw7MgaW5hZHZlcnRpZGEuCiAKTGEgRlVDUywgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGEgcmV0aXJhciBzaW4gcHJldmlhIG5vdGlmaWNhY2nDs24gYSBjdWFscXVpZXIgdXN1YXJpbyBxdWUgc2UgY29uc2lkZXJlIG9mZW5zaXZvIGVuIGxhcyBjb252ZXJzYWNpb25lcyBvIGRpw6Fsb2dvcyBkZSBsb3MgdXN1YXJpb3MgbyB2aXNpdGFudGVzIGRlbCBzaXRpbyB3ZWIgZW4gZm9yb3MgbyBjaGF0cy4KIApMYSBGVUNTIG5vIGVzIHJlc3BvbnNhYmxlIGNvbiByZXNwZWN0byBhIGxhIHByaXZhY2lkYWQgZGUgbGEgaW5mb3JtYWNpw7NuIHBlcnNvbmFsIHF1ZSBlbCB1c3VhcmlvIGRpdnVsZ3VlIG8gcmVtaXRhIGVuIGZvcm9zLCBzZXNpb25lcyBkZSBjaGF0IGRlbCBzaXRpbyB3ZWIsIGVuIGNvcnJlb3MgZWxlY3Ryw7NuaWNvcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpdGlvIHdlYi4gRWwgdXN1YXJpbyBlcyBleGNsdXNpdm8gcmVzcG9uc2FibGUgZGUgbGEgcHJpdmFjaWRhZCB5IGN1c3RvZGlhIGRlIGN1YWxxdWllciBkYXRvIHBlcnNvbmFsIHF1ZSBlbnRyZWd1ZSBhIHVuYSBwZXJzb25hIG8gZW1wcmVzYSBkaWZlcmVudGUgRlVDUy4KIAo2LiBEZXJlY2hvcyBkZSBQcm9waWVkYWQgSW50ZWxlY3R1YWw6CiAKRWwgVXN1YXJpbyByZWNvbm9jZSB5IGFjZXB0YSBxdWUgZWwgc2VydmljaW8geSBjdWFscXVpZXIgc29mdHdhcmUgdXNhZG8gZW4gcmVsYWNpw7NuIGNvbiBlbCBzZXJ2aWNpbyBxdWUgY29udGllbmUgaW5mb3JtYWNpw7NuIGNvbmZpZGVuY2lhbCB5IGRlIHByb3BpZWRhZCBhamVuYSBwcm90ZWdpZGEgcG9yIGxhIGxlZ2lzbGFjacOzbiBkZSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgeSBvdHJhcyBkaXNwb3NpY2lvbmVzIGxlZ2FsZXMuIEFkZW3DoXMgZWwgdXN1YXJpbyByZWNvbm9jZSB5IGFjZXB0YSBxdWUgZWwgY29udGVuaWRvIGluY2x1eWVuZG8sIHBlcm8gbm8gbGltaXTDoW5kb3NlLCB0ZXh0b3MsIHByb2dyYW1hcyAoYXBwbGV0cyksIGZvdG9ncmFmw61hcywgZ3LDoWZpY29zLCB2aWRlb3MgdSBvdHJvIG1hdGVyaWFsIGNvbnRlbmlkbyBlbiBlbCBzZXJ2aWNpbywgYXPDrSBjb21vIHRhbWJpw6luIGluZm9ybWFjaW9uZXMgZGl2dWxnYWRhcyBhbCB1c3VhcmlvIGEgdHJhdsOpcyBkZWwgc2VydmljaW8sIGVzdMOhIHByb3RlZ2lkbyBwb3IgZGVyZWNob3MgZGUgYXV0b3IsIG1hcmNhcyBjb21lcmNpYWxlcywgcGF0ZW50ZXMgeSBvdHJvcyBkZXJlY2hvcyBkZSBwcm9waWVkYWQgaW50ZWxlY3R1YWwsIGRlIGFjdWVyZG8gY29uIGxhIGxlZ2lzbGFjacOzbiBjb2xvbWJpYW5hLCBjb211bml0YXJpYSBlIGludGVybmFjaW9uYWwgYXBsaWNhYmxlLgogCkVsIFVzdWFyaW8gcmVjb25vY2UgeSBhY3VlcmRhIHF1ZSBzb2xhbWVudGUgcG9kcsOhIHV0aWxpemFyIHRhbGVzIG1hdGVyaWFsZXMgZSBpbmZvcm1hY2lvbmVzIHNlZ8O6biBsbyBleHByZXNhbWVudGUgYXV0b3JpemFkbyBwb3IgbGEgRlVDUywgeSBubyBwb2Ryw6EgY29waWFyLCByZXByb2R1Y2lyLCB0cmFuc21pdGlyLCBkaXN0cmlidWlyIG8gY3JlYXIgb2JyYXMgZGVyaXZhZGFzIGEgcGFydGlyIGRlIHRhbGVzIG1hdGVyaWFsZXMgbyBpbmZvcm1hY2lvbmVzIHNpbiBsYSBleHByZXNhIGF1dG9yaXphY2nDs24gZGVsIHJlc3BlY3Rpdm8gcHJvcGlldGFyaW8uCiAKRWwgVXN1YXJpbyBzZSBvYmxpZ2EgYSBubyBtb2RpZmljYXIgZWwgc29mdHdhcmUgaW52b2x1Y3JhZG8gZW4gZWwgcG9ydGFsIHdlYiBkZSBuaW5ndW5hIG1hbmVyYSwgbyB1dGlsaXphciB2ZXJzaW9uZXMgZGUgc29mdHdhcmUgbW9kaWZpY2FkYXMgY29uIGVsIGZpbiwgZW50cmUgb3Ryb3MsIGRlIG9idGVuZXIgYWNjZXNvIG5vIGF1dG9yaXphZG8gYWwgU2VydmljaW8uIEVsIFVzdWFyaW8gc2Ugb2JsaWdhIGEgbm8gYWNjZWRlciBhbCBTZXJ2aWNpbyBwb3Igb3Ryb3MgbWVkaW9zIHF1ZSBubyBzZWFuIGEgdHJhdsOpcyBkZSBsYSBpbnRlcmZheiBxdWUgbGEgRlVDUyBwcm9wb3JjaW9uYSBwYXJhIGFjY2VkZXIgYWwgU2VydmljaW8uCiAKNy4gR2FyYW50w61hIExpbWl0YWRhOgogCkVsIHVzbyBkZWwgc2VydmljaW8gc2Vyw6EgYmFqbyBleGNsdXNpdm8gcmllc2dvIHkgcmVzcG9uc2FiaWxpZGFkIGRlbCB1c3VhcmlvLiBFbCBzZXJ2aWNpbyBlcyBzdW1pbmlzdHJhZG8gZ3JhdHVpdGFtZW50ZSB5IGRlcGVuZGUgZGUgbGEgZnVuY2lvbmFsaWRhZCBkZSB2YXJpb3MgZmFjdG9yZXMsIGNvbW8gbGEgaW50ZXJhY2Npw7NuIGRlIHNlcnZpZG9yZXMgeSBzZXJ2aWNpb3MgZGUgdGVsZWNvbXVuaWNhY2lvbmVzIGRlIHRlcmNlcm9zLCBsYSBhZGVjdWFjacOzbiBkZSBsb3MgZXF1aXBvcyBkZSB1c3VhcmlvIHkgZGVzdGluYXRhcmlvIGRlbCBtZW5zYWplLiBDb25zaWRlcmFuZG8gdGFsZXMgZmFjdG9yZXMsIGxhIEZVQ1MgZW1wbGVhcsOhIHN1cyBtZWpvcmVzIGVzZnVlcnpvcyBwYXJhIHF1ZSBsb3MgbWVuc2FqZXMgZGUgZS1tYWlsIGVudmlhZG9zIGEgdHJhdsOpcyBkZWwgc2VydmljaW8sIHNlYW4gcmVjaWJpZG9zIHBvciBlbCBkZXN0aW5hdGFyaW8gZW4gZm9ybWEgY29ycmVjdGEgeSBzaW4gaW50ZXJmZXJlbmNpYXMuIFNpbiBlbWJhcmdvLCBwb3IgZXN0YXMgbWlzbWFzIHJhem9uZXMsIGxhIEZVQ1Mgbm8gcHVlZGUgZ2FyYW50aXphciBxdWUgbG9zIG1lbnNhamVzIHNlcsOhbiBlbnRyZWdhZG9zIGFsIGRlc3RpbmF0YXJpbyBjb3JyZWN0bywgZW4gdW4gcGxhem8gYWRlY3VhZG8sIG8gbm8gc3Vmcmlyw6FuIGV4dHJhdsOtbywgZGl2dWxnYWNpw7NuIG8gdmlvbGFjacOzbiBwb3IgcGFydGVzIGRlIHRlcmNlcm9zIG5vIGF1dG9yaXphZG9zLCBjb21vIHBvciBlamVtcGxvcyAiaGFja2VycyIuCiAKU2UgYWNvbnNlamEgYWwgdXN1YXJpbyBubyBjb25maWFyIGV4Y2x1c2l2YW1lbnRlIGVuIGVsIHNlcnZpY2lvIHBhcmEgZW52aWFyIGluZm9ybWFjaW9uZXMgaW1wb3J0YW50ZXMgbyBjb25maWRlbmNpYWxlcyB5IGxhIEZ1bmRhY2nDs24gVW5pdmVyc2l0YXJpYSBkZSBDaWVuY2lhcyBkZSBsYSBTYWx1ZCBubyBzZSByZXNwb25zYWJpbGl6YXLDoSBwb3IgbmluZ3VuYSBmYWxsYSByZXN1bHRhbnRlIGRlbCBlbnbDrW8gZGUgbWVuc2FqZXMgcG9yIHBhcnRlIGRlbCB1c3VhcmlvLgogCkxhIEZVQ1Mgbm8gZ2FyYW50aXphIHF1ZSBlbCBzZXJ2aWNpbyBzZSBwcmVzdGFyw6EgZGUgbWFuZXJhIGluaW50ZXJydW1waWRhLCBzZWd1cmEgbyBsaWJyZSBkZSBlcnJvci4gTGEgRlVDUyB0YW1wb2NvIG90b3JnYSBuaW5ndW5hIGdhcmFudMOtYSBlbiBjdWFudG8gYSBsb3MgcmVzdWx0YWRvcyBxdWUgc2UgcHVlZGFuIG9idGVuZXIgZGVsIHVzbyBkZWwgc2VydmljaW8sIG5pIHF1ZSBsb3MgZGVmZWN0b3MgZW4gbG9zIHByb2dyYW1hcyBzZXLDoW4gY29ycmVnaWRvcy4KIApFbCB1c3VhcmlvIHJlY29ub2NlIHkgYWN1ZXJkYSBxdWUgY3VhbHF1aWVyIG1hdGVyaWFsIHkvbyBpbmZvcm1hY2nDs24gb2J0ZW5pZGEgYSB0cmF2w6lzIGRlbCBzZXJ2aWNpbyBvIGRlIHN1IHV0aWxpemFjacOzbiwgZXN0YXLDoSBzdWpldGEgYSBzdSBlbnRlcm8gY3JpdGVyaW8geSByaWVzZ287IHkgcXVlIHNlcsOhIGVsIMO6bmljbyByZXNwb25zYWJsZSBkZSBjdWFscXVpZXIgZGHDsW8gb2N1cnJpZG8gZW4gc3UgY29tcHV0YWRvcmEgbyBww6lyZGlkYSBkZSBkYXRvcyBxdWUgcHVlZGEgcmVzdWx0YXIgZGUgcmVjaWJpciB0YWwgbWF0ZXJpYWwuCiAKTm90YTogc2kgcmVjaWJlIHVuIG1lbnNhamUgZGUgY29ycmVvIGVsZWN0csOzbmljbyBubyBzb2xpY2l0YWRvLCBvIGN1YWxxdWllciBtZW5zYWplIGFtZW5hemFkb3IgdSBvZmVuc2l2bywgbyBjb25zaWRlcmEgcXVlIG90cm8gdXN1YXJpbyBvIGN1YWxxdWllciBwZXJzb25hIGxlIGVzdMOhIHZ1bG5lcmFuZG8gdW4gZGVyZWNobyBjb25mb3JtZSBhIGVzdGUgZG9jdW1lbnRvLCByZW3DrXRhbm9zIHVuYSBjb3BpYSBjb21wbGV0YSB5IHNpbiBtb2RpZmljYXIgZGVsIG1lbnNhamUgZGUgY29ycmVvIGVsZWN0csOzbmljbyBjb24gbG9zIGVuY2FiZXphZG9zIGNvbXBsZXRvcyBhIGxhIHNpZ3VpZW50ZSBkaXJlY2Npw7NuIGVsZWN0csOzbmljYTogeWx0b3JvQGZ1Y3NhbHVkLmVkdS5jbwoKTGFzIHByZWd1bnRhcyBxdWUgZWwgdXN1YXJpbyBvIGN1YWxxdWllciBwZXJzb25hIGRlc2VlIHJlYWxpemFyIHNvYnJlIGxvIGV4cHJlc2FkbyBlbiBlc3RlIGRvY3VtZW50bywgbGFzIHB1ZWRlIGZvcm11bGFyIGEgbGEgc2lndWllbnRlIGRpcmVjY2nDs24gZWxlY3Ryw7NuaWNhOiB5bHRvcm9AZnVjc2FsdWQuZWR1LmNvCg== |