3. REPORTING BY PROGRAM AREA
MALARIA
- Number of children under 5 years of age with confirmed malaria who received treatment for malaria from an appropriate provider in USG-supported areas [15 fee proxy]


Kinkondja est une ZS relativement moins peuplee, mais elle a connut plusieurs cas de paludisme que des ZS plus peuplee comme Kabondo dianda et Kaniama. De septembre a Decembre le nombre de cas de palu connait une chute.
Percent of pregnant women who received doses of sulfadoxine/ pyrimethamine (S/P) for Intermittent Preventive Treatment (IPT) during ANC visits [2.4]


La performance generale de la province se situe autour de 77%, La ZS de Lwamba a realise la performance la plus faible de 64%, elle est suivie par Butumba et Mulongo.
MATERNAL, NEONATAL, AND CHILD HEALTH
- Number of children under five years of age that received treatment for an acute respiratory infection from an appropriate provider [5 fee proxy]


Les grandes ZS pourvoyeuses des cas de pneumonie sont Malemba Nkulu et Bukama, parmi les ZS a forte densite qui rapportent moins il y a la ZS de Kabongo, Kabondo Dianda. il faudrait s’assurer si la definition de cas est respectee dans ces ZS.
- Number of insecticide-treated nets (ITN) distributed during antenatal and/or child immunization visits


depuis septembre la distribution des Milds connait une chute dans toutes les ZS sauf en decembre ou s’est tenu la campagne de distribution de milds. Voir si les milds de routine etaien disponibles dans les ZS en septembre, octobre et decembre, le pic observe en decembre ne serai-il- pas du aux Milds de la campagne?.
- Number of cases of child diarrhea treated in USG-supported programs [7 fee proxy]


Le nombre de cas de diarrhee sont plus eleves dans les ZS riverraines: Malemba, Kinkondja,Bukama,Mulongo a l’exception de Mukanga. il faudrait documenter comment la lutte contre la diarrhee se Fait a Mukanga pour partager cette experience avec les autres ZS
- Number of children less than 12 months of age who received three doses of pentavalent vaccine [9 fee proxy]


En novembre,il y a eu legere augmentation du nombre des enfants vaccine au pentavalent. Les ZS Baka, Kayamba et Kinda ont vacine moins des enfants du fait de leur population faible
- Percent of children less than 12 months of age who received measles vaccine from USG-supported programs [10]


Comme vu pour le pentavalent, le VAR a connu un rebound en novembre mais le mois de decembre est caracterise par une contre performance a 63%. plusieurs ZS n’ont pas atteint la cible de 90% parmis les plus concernes il y a Mukanga,Bukama,Kinda,Kayamba et Baka
- Percentage of pregnant women attending at least one antenatal care (ANC) visit with a skilled provider from USG- supported health facilities


Le taux de frequentation CPN connait une legere chute au cours de cette periode, les ZS plus concernees sont:Baka, Kamina et Songa. Les mini campagnes pour l’utulisation de la CPN devraient se faire regulierement dans ces ZS.
- Percentage of pregnant women attending at least one and at least 4 antenatal care (ANC) with a skilled provider from USG-supported health facilities [12 fee]


le taux de frequentation CPN4 est au dessus de la norme de 60% pour la province sauf en decembre. Dans plusieurs ZS, il approche 80% comme Bukama, Kayamba, Malemba et Mukanga. Ne serait ce pas l’effet achat des performances?
- Percentage of deliveries with an SBA in USG-supported facilities


En octobre, le taux d’accouchement assiste a ete le plus faible de l’annee, les ZS a problemes sont :Kabongo,Kabondo,Kitenge et Butumba.Le cas de la ZS de Kabongo doit etre investigue.
- Number of women giving birth who received uterotonics in the third stage of labor (OR immediately after birth) through USG-supported programs [2.1.4]


Le nombre de cas de Gatpa a connu une evolution en dents de scie cette periode mais le cas de la ZS de Malemba qui se retrouve parmi les plus faibles alors qu’elle est une ZS tres peuplee merite une investigation poussee, sur entre autre la disponibilite de l’Ocytocin.
- Number and percentage of newborns receiving essential newborn care through USG-supported programs


La performance en soins essentiels des nouveaux nes est autour de 94%, plus de 6 enfants sur 100 manquent aux soins dans les ZS suivant:Kabondo, Kitenge.
- Number of postpartum/newborn visits within three days of birth in USG-supported programs [2.1.6]


Les visites CPON1 ont connu une chute en decembre, la principale raison serait la completude des donnees qui est tres faible.
- Drop-out rate in DTP-HepB-Hib3 among children less than 12 months of age [2.1.9]
NUTRITION
Number of individuals receiving nutrition-related professional training through USG supported nutrion programs [2.1.10]
Number of children under-five (0-59 months) reached by USG-supported nutrition programs [2.1.11]


La ZS de Malemba a une forte frequentation en CPS, elle est suivi par Kinkondja.
REPRODUCTIVE HEALTH/FAMILY PLANNING
- Number of new acceptors using modern contraceptive methods in USG-supported facilities [3 fee proxy]


Le nombre des nouvelles acceptantes connait une diminution en novembre, la ZS de Kabondo dianda et Kamina sont plus peuplees mais le nombre des nouvelles acceptantes est faible malgre les activites de DBC mis en place.
- Number of counseling visits for FP/ RH as result of USG support [2.3]
WATER, SANITATION, AND HYGIENE
Number of people gaining access to basic drinking water services as a result of USG assistance [2.6.2]
Number of people gaining access to a basic sanitation service as a result of USG assistance [2.6.3]
4.REPORTING BY PROGRAM ACTIVITIES
cfr rapport programmatique
LS0tDQp0aXRsZTogIkFuYWx5c2VfRG9ubmVlc19PY3RvYnJlX0RlY2VtYnJlX0hMIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0UsZWNobz1GLGZpZy5hbGlnbj0iY2VudGVyIn0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UpDQpvdXQud2lkdGg9IjUwJSINCm91dC5oZWlnaHQ9IjUwJSINCmBgYA0KDQombmJzcDsNCg0KDQojIyAzLiBSRVBPUlRJTkcgQlkgUFJPR1JBTSBBUkVBDQombmJzcDsNCg0KYGBge3IsZWNobz1GLG1lc3NhZ2U9Rn0NCmRhdGFiPC1yZWFkLmNzdigiRGF0YWIuY3N2IikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShSQ29sb3JCcmV3ZXIpDQoNCm5hbWVzKGRhdGFiKVs2OjhdPC1wYXN0ZTAoIlNQIiwxOjMpDQpuYW1lcyhkYXRhYilbMjU6MjZdPC1wYXN0ZTAoInBhbHUiLGMoInMiLCJnIiksc2VwPSJfIikNCm5hbWVzKGRhdGFiKVsyMDoyMV08LXBhc3RlMCgiRGlhcnJfc2V2IiwxOjIpDQoNCiNkYXRhZyRwZXJpb2RuYW1lPC1hcy5jaGFyYWN0ZXIoZGF0YWckcGVyaW9kbmFtZSkNCiNkYXRhZyRwZXJpb2RuYW1lW2RhdGFnJHBlcmlvZG5hbWU9PSJKdWlsbGV0Il08LSIxLkp1aWxsZXQiDQpkYXRhYiRwZXJpb2RuYW1lPC1wYXN0ZTAobWF0Y2goZGF0YWIkcGVyaW9kbmFtZSxjKCJKdWlsbGV0IiwiQW/Du3QiLCJTZXB0ZW1icmUiLCJPY3RvYnJlIiwiTm92ZW1icmUiLCJEw6ljZW1icmUiKSksIi4iLGRhdGFiJHBlcmlvZG5hbWUpDQpkYXRhZzwtZGF0YWJbZGF0YWIkcGVyaW9kbmFtZSAlaW4lIGMoIjUuTm92ZW1icmUiLCI0Lk9jdG9icmUiLCI2LkTDqWNlbWJyZSIpLF0NCg0KbmFtZXMoZGF0YWIpWzMxOjM1XTwtcGFzdGUwKCJNaWxkQ3BzIiwxOjUpDQojc2luaygiTmFtZXNiLnR4dCIpDQojbmFtZXMoZGF0YWIpDQojc2luaygpDQoNCmRhdGFnPC1hZ2dyZWdhdGUoZGF0YWdbLDQ6bmNvbChkYXRhZyldLGxpc3QoZGF0YWckenMsZGF0YWckcGVyaW9kbmFtZSksc3VtLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbMToyXTwtYygienMiLCJwZXJpb2RuYW1lIikNCm5hbWVzKGRhdGFnKVszXTwtIkNQTiINCm5hbWVzKGRhdGFiKVs0XTwtIkNQTiINCm5hbWVzKGRhdGFnKVs0XTwtIkNQTjQiDQpuYW1lcyhkYXRhYilbNV08LSJDUE40Ig0KI3NpbmsoIk5hbWVzZy50eHQiKQ0KI25hbWVzKGRhdGFnKQ0KI3NpbmsoKQ0KDQp0b3QyIDwtIGZ1bmN0aW9uKHhkKXsNCiAgcDwtYyhhcy5jaGFyYWN0ZXIoeGRbLDFdKSwnVG90YWwnKQ0KICBhPC1hcHBseSh4ZFssMjpuY29sKHhkKV0sMixzdW0sbmEucm09VCkNCiAgYTwtcmJpbmQoeGRbLDI6bmNvbCh4ZCldLGEpDQogIHU8LWRhdGEuZnJhbWUocCxhKQ0KICBuYW1lcyh1KVsxXTwtIk1vaXMiDQogIGFzc2lnbigidG90YWwiLHUsZW52aXI9Lkdsb2JhbEVudikNCn0NCg0KY2libGVzPC1yZWFkLmNzdigiQzovVXNlcnMvTXV5dW5nYVAvRG9jdW1lbnRzL1BST1NBTkkgVVNBSUQvUVVBUlRFUiBSRVBPUlQvWTIgUkVQT1JUL0NJQkxFUzIuY3N2IikNCmNpYmxlYTwtcmVhZC5jc3YyKCJDOi9Vc2Vycy9NdXl1bmdhUC9Eb2N1bWVudHMvUFJPU0FOSSBVU0FJRC9BTkFMWVNJUy9ZMi9jaWJsZXMuY3N2IikNCg0KY2x1czwtZGF0YS5mcmFtZSh6cz11bmlxdWUoZGF0YWIkenMpKQ0KY2x1cyRwb3A8LWlmZWxzZShjbHVzJHpzJWluJWMoIkJha2EiLCJLYXlhbWJhIiwiS2luZGEiLCJMd2FtYmEiKSwiMU1vaW5zIHBldXBsw6llIixpZmVsc2UoY2x1cyR6cyVpbiVjKCJCdXR1bWJhIiwiS2Fib25kb0QiLCJLYW1pbmEiLCJLaW5rb25kamEiLCJNdWthbmdhIiwiU29uZ2EiKSwiMlBldXBsw6llIiwiM1BsdXMgcGV1cGzDqWUiKSkNCmNsdXM8LWNsdXNbb3JkZXIoY2x1cyR6cyksXQ0KYGBgDQogICAgDQoNCiMjIE1BTEFSSUENCg0KJm5ic3A7DQoNCg0KJm5ic3A7DQotICoqTnVtYmVyIG9mIGNoaWxkcmVuIHVuZGVyIDUgeWVhcnMgb2YgYWdlIHdpdGggY29uZmlybWVkIG1hbGFyaWEgd2hvIHJlY2VpdmVkIHRyZWF0bWVudCBmb3IgbWFsYXJpYSBmcm9tIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGVyIGluIFVTRy1zdXBwb3J0ZWQgYXJlYXMgWzE1IGZlZSBwcm94eV0qKiAgDQoNCiZuYnNwOw0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCI5NDA3IiksYygiNzQ0MzAiKSxjKCIxMjYuNCIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7DQoNCmBgYHtyLHJlc3VsdHM9ImhpZGUifQ0KYTwtZGF0YWcNCmEkcGFsdTwtcm93U3VtcyhhWywyNDoyNV0pDQphPC1hZ2dyZWdhdGUoYVssYygyMCw2NildLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQphJGNpYmxlPC1yb3VuZChjaWJsZXMkUGFsdWRpc21lWzNdLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQojdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkcGFsdSoxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KYjwtZGF0YWINCmIkcGFsdTwtcm93U3VtcyhiWywyNToyNl0sbmEucm09VCkNCiNkYXRhZyRQYWx1PC1yb3dTdW1zKGRhdGFnWywyMDoyMV0sbmEucm09VCkNCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKFBhbHU9c3VtKHBhbHVzXytwYWx1Z18pKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVBhbHUsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1QYWx1KSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoUGFsdT1zdW0ocGFsdSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1QYWx1KSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFBhbHUsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9YygyMDAwMCw0MDAwMCkpDQogIA0KICAjZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGZpbGw9ImxpZ2h0Ymx1ZSIsY29sPSJ0b21hdG8iLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPVBhbHUpLGNleD0zLHZqdXN0PTIpDQoNCmBgYA0KJm5ic3A7DQombmJzcDsNCktpbmtvbmRqYSBlc3QgdW5lIFpTIHJlbGF0aXZlbWVudCBtb2lucyBwZXVwbGVlLCBtYWlzIGVsbGUgYSBjb25udXQgcGx1c2lldXJzIGNhcyBkZSBwYWx1ZGlzbWUgcXVlIGRlcyBaUyBwbHVzIHBldXBsZWUgY29tbWUgS2Fib25kbyBkaWFuZGEgZXQgS2FuaWFtYS4gRGUgc2VwdGVtYnJlIGEgRGVjZW1icmUgbGUgbm9tYnJlIGRlIGNhcyBkZSBwYWx1IGNvbm5haXQgdW5lIGNodXRlLg0KJm5ic3A7DQombmJzcDsNCg0KKipQZXJjZW50IG9mIHByZWduYW50IHdvbWVuIHdobyByZWNlaXZlZCBkb3NlcyBvZiBzdWxmYWRveGluZS8gcHlyaW1ldGhhbWluZSAoUy9QKSBmb3IgSW50ZXJtaXR0ZW50IFByZXZlbnRpdmUgVHJlYXRtZW50IChJUFQpIGR1cmluZyBBTkMgdmlzaXRzIFsyLjRdKioNCg0KJm5ic3A7DQombmJzcDsNCg0KYGBge3IscmVzdWx0cz0iaGlkZSJ9DQphPC1kYXRhZw0KYSRTUDwtcm93U3VtcyhhWyw1OjddKQ0KYTwtYWdncmVnYXRlKGFbLGMoMyw1MCldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQphJGNpYmxlPC1hWywyXSozDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRTUCoxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KYiRTUDwtcm93U3VtcyhiWyw2OjhdLG5hLnJtPVQpDQoNCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKHNwYT1zdW0oU1AxK1NQMitTUDMsbmEucm09VCksY3BuYT1zdW0oQ1BOLG5hLnJtPVQpKSU+JSBtdXRhdGUoU1A9cm91bmQoc3BhKjEwMC8oY3BuYSozKSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9U1AsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1TUCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKHNwYT1zdW0oU1AxK1NQMitTUDMsbmEucm09VCksY3BuYT1zdW0oQ1BOLG5hLnJtPVQpKSU+JSBtdXRhdGUoU1A9cm91bmQoc3BhKjEwMC8oY3BuYSozKSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1TUCkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChTUCwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiUgU1AiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDUwLDkwKSkNCg0KYGBgDQombmJzcDsNCiZuYnNwOw0KTGEgcGVyZm9ybWFuY2UgZ2VuZXJhbGUgZGUgbGEgcHJvdmluY2Ugc2Ugc2l0dWUgYXV0b3VyIGRlIDc3JSwgTGEgWlMgZGUgTHdhbWJhIGEgcmVhbGlzZSBsYSBwZXJmb3JtYW5jZSBsYSBwbHVzIGZhaWJsZSBkZSA2NCUsIGVsbGUgZXN0IHN1aXZpZSBwYXIgQnV0dW1iYSBldCBNdWxvbmdvLg0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCI5MS4wIiksYygiMzc1MTgiKSxjKCI0MTI0NSIpLGMoIjEwMCIpLGMoJzkxLjAnKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsJ051bWVyYXRvcicsJ0Rlbm9taW5hdG9yJywiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsgIA0KJm5ic3A7ICANCg0KDQojIyBNQVRFUk5BTCwgTkVPTkFUQUwsIEFORCBDSElMRCBIRUFMVEgNCiZuYnNwOw0KJm5ic3A7DQotCSoqTnVtYmVyIG9mIGNoaWxkcmVuIHVuZGVyIGZpdmUgeWVhcnMgb2YgYWdlIHRoYXQgcmVjZWl2ZWQgdHJlYXRtZW50IGZvciBhbiBhY3V0ZSByZXNwaXJhdG9yeSBpbmZlY3Rpb24gZnJvbSBhbiBhcHByb3ByaWF0ZSBwcm92aWRlciBbNSBmZWUgcHJveHldKiogDQpgYGB7cixmaWcuYWxpZ249ImNlbnRlciJ9DQphPC1kYXRhZw0KYSRQbmV1bW9uaWU8LXJvd1N1bXMoYVssMjI6MjNdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMTgsNjYpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJFBuZXVtb25pZVszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJFBuZXVtb25pZSoxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KYiRwbmV1bTwtcm93U3VtcyhiWywyMzoyNF0sbmEucm09VCkNCg0KbmFtZXMoZGF0YWcpWzIyOjIzXTwtYygiUG5ldW1vbmlzIiwiUG5ldW1vbmlnIikNCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKHBuZXVtPXN1bShQbmV1bW9uaXMrUG5ldW1vbmlnLG5hLnJtPVQpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PXBuZXVtLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9cG5ldW0pLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzIzOjI0XTwtYygiUG5ldW1vbmlzIiwiUG5ldW1vbmlnIikNCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShwbmV1bT1zdW0ocG5ldW0sbmEucm09VCkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1wbmV1bSkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChwbmV1bSwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IlBuZXVtb25pZSA8IDUiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDUwMDAsMTAwMDApKQ0KICANCiAgI2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5JyxmaWxsPSJsaWdodGJsdWUiLGNvbD0idG9tYXRvIixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1wbmV1bSksY2V4PTMsdmp1c3Q9MikNCmBgYA0KTGVzIGdyYW5kZXMgWlMgcG91cnZveWV1c2VzIGRlcyBjYXMgZGUgcG5ldW1vbmllIHNvbnQgTWFsZW1iYSBOa3VsdSBldCBCdWthbWEsIHBhcm1pIGxlcyBaUyBhIGZvcnRlIGRlbnNpdGUgcXVpIHJhcHBvcnRlbnQgbW9pbnMgaWwgeSBhIGxhIFpTIGRlIEthYm9uZ28sIEthYm9uZG8gRGlhbmRhLiBpbCBmYXVkcmFpdCBzJ2Fzc3VyZXIgc2kgbGEgZGVmaW5pdGlvbiBkZSBjYXMgZXN0IHJlc3BlY3RlZSBkYW5zIGNlcyBaUy4NCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMTk4NzIiKSxjKCIyMTU4MSIpLGMoIjkyLjEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUoJSkiKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQombmJzcDsgIA0KDQoNCg0KDQombmJzcDsNCiZuYnNwOw0KDQotICoqTnVtYmVyIG9mIGluc2VjdGljaWRlLXRyZWF0ZWQgbmV0cyAoSVROKSBkaXN0cmlidXRlZCBkdXJpbmcgYW50ZW5hdGFsIGFuZC9vciBjaGlsZCBpbW11bml6YXRpb24gdmlzaXRzKioNCg0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIyMjk1OCIpLGMoIjI2MDQ1IiksYygiODguMSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpiPC1kYXRhYg0KYiRNaWxkPC1yb3dTdW1zKGJbLDMwOjM2XSxuYS5ybT1UKQ0KbmFtZXMoZGF0YWcpWzI5OjM1XTwtcGFzdGUwKCJtaWxkIiwxOjcpDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShNaWxkPXN1bShtaWxkMSttaWxkMittaWxkMyttaWxkNCttaWxkNSttaWxkNittaWxkNykpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9TWlsZCxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPU1pbGQpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShNaWxkPXN1bShNaWxkKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PU1pbGQpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoTWlsZCwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHRpdGxlPSJNSUlMRCIsIHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMCwxODAwMCkpDQoNCmBgYA0KDQombmJzcDsNCiZuYnNwOw0KZGVwdWlzIHNlcHRlbWJyZSBsYSBkaXN0cmlidXRpb24gZGVzIE1pbGRzIGNvbm5haXQgdW5lIGNodXRlIGRhbnMgdG91dGVzIGxlcyBaUyBzYXVmIGVuIGRlY2VtYnJlIG91IHMnZXN0IHRlbnUgbGEgY2FtcGFnbmUgZGUgZGlzdHJpYnV0aW9uIGRlIG1pbGRzLiBWb2lyIHNpIGxlcyBtaWxkcyBkZSByb3V0aW5lIGV0YWllbiBkaXNwb25pYmxlcyBkYW5zIGxlcyBaUyBlbiBzZXB0ZW1icmUsIG9jdG9icmUgZXQgZGVjZW1icmUsIGxlIHBpYyBvYnNlcnZlIGVuIGRlY2VtYnJlIG5lIHNlcmFpLWlsLSBwYXMgZHUgYXV4IE1pbGRzIGRlIGxhIGNhbXBhZ25lPy4NCg0KJm5ic3A7DQoNCi0JKipOdW1iZXIgb2YgY2FzZXMgb2YgY2hpbGQgZGlhcnJoZWEgdHJlYXRlZCBpbiBVU0ctc3VwcG9ydGVkIHByb2dyYW1zIFs3IGZlZSBwcm94eV0qKg0KJm5ic3A7DQpgYGB7cn0NCmE8LWRhdGFnDQphJERpYXJyaGVlPC1yb3dTdW1zKGFbLDIxOjIzXSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDE1LDY2KV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyREaWFycmhlZVszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJERpYXJyaGVlKjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmI8LWRhdGFiDQpiJERpYXJyaDwtcm93U3VtcyhiWywyMDoyMl0sbmEucm09VCkNCm5hbWVzKGIpWzIyXTwtImRpYXMiDQpuYW1lcyhkYXRhZylbMjFdPC0iZGlhcyINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKERpYXJyaD1zdW0oRGlhcnJfc2V2MStEaWFycl9zZXYyK2RpYXMsbmEucm09VCkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9RGlhcnJoLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9RGlhcnJoKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoRGlhcnJoPXN1bShEaWFycmgpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9RGlhcnJoKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKERpYXJyaCwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIsdGl0bGU9IkRpYXJyaGVlIDwgNSBhbnMiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDgwMDAsMTQwMDApKQ0KDQoNCmBgYA0KDQombmJzcDsNCiZuYnNwOw0KTGUgbm9tYnJlIGRlIGNhcyBkZSBkaWFycmhlZSBzb250IHBsdXMgZWxldmVzIGRhbnMgbGVzIFpTIHJpdmVycmFpbmVzOiBNYWxlbWJhLCBLaW5rb25kamEsQnVrYW1hLE11bG9uZ28gYSBsJ2V4Y2VwdGlvbiBkZSBNdWthbmdhLiBpbCBmYXVkcmFpdCBkb2N1bWVudGVyIGNvbW1lbnQgbGEgbHV0dGUgY29udHJlIGxhIGRpYXJyaGVlIHNlIEZhaXQgYSBNdWthbmdhIHBvdXIgcGFydGFnZXIgY2V0dGUgZXhwZXJpZW5jZSBhdmVjIGxlcyBhdXRyZXMgWlMNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMjU1NDMiKSxjKCIyNTQ4NiIpLGMoIjEwMC4yIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQoNCiZuYnNwOw0KDQoNCiZuYnNwOw0KJm5ic3A7DQoNCg0KLQkqKk51bWJlciBvZiBjaGlsZHJlbiBsZXNzIHRoYW4gMTIgbW9udGhzIG9mIGFnZSB3aG8gcmVjZWl2ZWQgdGhyZWUgZG9zZXMgb2YgcGVudGF2YWxlbnQgdmFjY2luZSBbOSBmZWUgcHJveHldKioNCiZuYnNwOw0KYGBge3IsZmlnLmFsaWduPSJjZW50ZXIifQ0KYTwtZGF0YWcNCmEkUGVudGE8LXJvd1N1bXMoYVssNDE6NDNdKQ0KYTwtYWdncmVnYXRlKGFbLGMoNDEsNjYpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtLG5hLnJtPVQpDQphJGNpYmxlPC1yb3VuZChjaWJsZXMkUGVudGFbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRQZW50YSoxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KYiRQZW50YTwtcm93U3VtcyhiWywyNzoyOV0sbmEucm09VCkNCm5hbWVzKGRhdGFnKVsyNjoyOF08LXBhc3RlMCgiUGVudGEiLDE6MykNCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKFBlbnRhPXN1bShQZW50YTErUGVudGEyK1BlbnRhMykpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9UGVudGEsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1QZW50YSksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKFBlbnRhPXN1bShQZW50YSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1QZW50YSkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChQZW50YSwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIsdGl0bGU9IlZBQ0NJTiBQRU5UQVZBTEVOVCIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoODAwMCwxNDAwMCkpDQogIA0KYGBgDQombmJzcDsNCkVuIG5vdmVtYnJlLGlsIHkgYSBldSBsZWdlcmUgYXVnbWVudGF0aW9uIGR1IG5vbWJyZSBkZXMgZW5mYW50cyB2YWNjaW5lIGF1IHBlbnRhdmFsZW50LiBMZXMgWlMgQmFrYSwgS2F5YW1iYSBldCBLaW5kYSBvbnQgdmFjaW5lIG1vaW5zIGRlcyBlbmZhbnRzIGR1IGZhaXQgZGUgbGV1ciBwb3B1bGF0aW9uIGZhaWJsZQ0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzA2NTIiKSxjKCIzMTM1MyIpLGMoIjk3LjgiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQombmJzcDsgIA0KDQoNCi0JKipQZXJjZW50IG9mIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIHdobyByZWNlaXZlZCBtZWFzbGVzIHZhY2NpbmUgZnJvbSBVU0ctc3VwcG9ydGVkIHByb2dyYW1zIFsxMF0qKg0KJm5ic3A7DQpgYGB7cixmaWcuYWxpZ249ImNlbnRlciJ9DQphPC1kYXRhZw0KYSRWQVI8LXJvd1N1bXMoYVssMzE6MzNdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMzEsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJFZBUlszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJFZBUioxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbNDE6NDNdPC1wYXN0ZTAoIlZhciIsMTozKQ0KbmFtZXMoZGF0YWcpWzQ3XTwtInBvcCINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKFZhcmE9c3VtKFZhcjErVmFyMitWYXIzLG5hLnJtPVQpLHBvcGE9c3VtKHBvcCxuYS5ybT1UKSklPiUgbXV0YXRlKFZhcj1yb3VuZChWYXJhKjEyMDAwMC8ocG9wYSo0KSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9VmFyLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9VmFyKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpuYW1lcyhiKVs0Mjo0NF08LXBhc3RlMCgiVmFyIiwxOjMpDQpuYW1lcyhiKVs0OF08LSJwb3AiDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoVmFyYT1zdW0oVmFyLG5hLnJtPVQpLHBvcGE9c3VtKHBvcCxuYS5ybT1UKSklPiUgbXV0YXRlKFZhcj1yb3VuZChWYXJhKjEyMDAwMC8ocG9wYSo0KSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1WYXIpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoVmFyLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iJSBWQVIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDQwLDkwKSkNCg0KYGBgDQombmJzcDsNCiZuYnNwOw0KQ29tbWUgdnUgcG91ciBsZSBwZW50YXZhbGVudCwgbGUgVkFSIGEgY29ubnUgdW4gcmVib3VuZCBlbiBub3ZlbWJyZSBtYWlzIGxlIG1vaXMgZGUgZGVjZW1icmUgZXN0IGNhcmFjdGVyaXNlIHBhciB1bmUgY29udHJlIHBlcmZvcm1hbmNlIGEgNjMlLiBwbHVzaWV1cnMgWlMgbidvbnQgcGFzIGF0dGVpbnQgbGEgY2libGUgZGUgOTAlIHBhcm1pcyBsZXMgcGx1cyBjb25jZXJuZXMgaWwgeSBhIE11a2FuZ2EsQnVrYW1hLEtpbmRhLEtheWFtYmEgZXQgQmFrYQ0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzE0MDgiKSxjKCIzMDE2OCIpLGMoIjk2LjEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQogDQombmJzcDsNCiZuYnNwOw0KDQotICoqUGVyY2VudGFnZSBvZiBwcmVnbmFudCB3b21lbiBhdHRlbmRpbmcgYXQgbGVhc3Qgb25lIGFudGVuYXRhbCBjYXJlIChBTkMpIHZpc2l0IHdpdGggYSBza2lsbGVkICBwcm92aWRlciBmcm9tIFVTRy0gc3VwcG9ydGVkIGhlYWx0aCBmYWNpbGl0aWVzKioNCiZuYnNwOw0KYGBge3IsZmlnLmFsaWduPSJjZW50ZXIifQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjkxIiksYygiMzc1MTgiKSxjKCI0MTI0NSIpLGMoIjEwMCIpLGMoIjkxIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJOdW1lcmF0b3IiLCJEZW5vbWluYXRvciIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpiPC1kYXRhYg0KI2IkVmFyPC1yb3dTdW1zKGJbLDQyOjQ0XSxuYS5ybT1UKQ0KI25hbWVzKGRhdGFnKVs0MTo0M108LXBhc3RlMCgiVmFyIiwxOjMpDQojbmFtZXMoZGF0YWcpWzQ3XTwtInBvcCINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKGNwbmE9c3VtKENQTixuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShDUE49cm91bmQoY3BuYSoxMjAwMDAvKHBvcGEqNCkpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUNQTixmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPUNQTiksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KI25hbWVzKGIpWzQyOjQ0XTwtcGFzdGUwKCJWYXIiLDE6MykNCm5hbWVzKGIpWzQ4XTwtInBvcCINCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShjcG5hPXN1bShDUE4sbmEucm09VCkscG9wYT1zdW0ocG9wLG5hLnJtPVQpKSU+JSBtdXRhdGUoQ1BOPXJvdW5kKGNwbmEqMTIwMDAwLyhwb3BhKjQpKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUNQTikpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUE4sMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix5PSIiLHRpdGxlPSIlIENQTjEiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDQwLDEyMCkpDQoNCmBgYA0KDQombmJzcDsgIA0KJm5ic3A7ICANCkxlIHRhdXggZGUgZnJlcXVlbnRhdGlvbiBDUE4gY29ubmFpdCB1bmUgbGVnZXJlIGNodXRlIGF1IGNvdXJzIGRlIGNldHRlIHBlcmlvZGUsIGxlcyBaUyBwbHVzIGNvbmNlcm5lZXMgc29udDpCYWthLCBLYW1pbmEgZXQgU29uZ2EuIExlcyBtaW5pIGNhbXBhZ25lcyBwb3VyIGwndXR1bGlzYXRpb24gZGUgbGEgQ1BOIGRldnJhaWVudCBzZSBmYWlyZSByZWd1bGllcmVtZW50IGRhbnMgY2VzIFpTLg0KJm5ic3A7DQoNCi0JKipQZXJjZW50YWdlIG9mIHByZWduYW50IHdvbWVuIGF0dGVuZGluZyBhdCBsZWFzdCBvbmUgYW5kIGF0IGxlYXN0IDQgYW50ZW5hdGFsIGNhcmUgKEFOQykgd2l0aCBhIHNraWxsZWQgcHJvdmlkZXIgZnJvbSBVU0ctc3VwcG9ydGVkIGhlYWx0aCBmYWNpbGl0aWVzIFsxMiBmZWVdKioNCiZuYnNwOw0KYGBge3J9DQphPC1kYXRhZw0KYSRDUE5fNDwtYVssNF0NCmE8LWFnZ3JlZ2F0ZShhWyxjKDQsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJENQTjRbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRDUE5fNCoxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoY3BuYT1zdW0oQ1BONCxuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShDUE40PXJvdW5kKGNwbmEqMTIwMDAwLyhwb3BhKjQpKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1DUE40LGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9Q1BONCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KI25hbWVzKGIpWzQyOjQ0XTwtcGFzdGUwKCJWYXIiLDE6MykNCm5hbWVzKGIpWzQ4XTwtInBvcCINCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShjcG5hPXN1bShDUE40LG5hLnJtPVQpLHBvcGE9c3VtKHBvcCxuYS5ybT1UKSklPiUgbXV0YXRlKENQTjQ9cm91bmQoY3BuYSoxMjAwMDAvKHBvcGEqNCkpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9Q1BONCkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUE40LDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCw3MCkpDQoNCmBgYA0KDQombmJzcDsNCmxlIHRhdXggZGUgZnJlcXVlbnRhdGlvbiBDUE40IGVzdCBhdSBkZXNzdXMgZGUgbGEgbm9ybWUgZGUgNjAlIHBvdXIgbGEgcHJvdmluY2Ugc2F1ZiBlbiBkZWNlbWJyZS4gRGFucyBwbHVzaWV1cnMgWlMsIGlsIGFwcHJvY2hlIDgwJSBjb21tZSBCdWthbWEsIEtheWFtYmEsIE1hbGVtYmEgZXQgTXVrYW5nYS4gTmUgc2VyYWl0IGNlIHBhcyBsJ2VmZmV0IGFjaGF0IGRlcyBwZXJmb3JtYW5jZXM/DQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIxOTg2MCIpLGMoIjE3ODk3IiksYygiMTExIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsNCg0KLQkqKlBlcmNlbnRhZ2Ugb2YgZGVsaXZlcmllcyB3aXRoIGFuIFNCQSBpbiBVU0ctc3VwcG9ydGVkIGZhY2lsaXRpZXMqKiAgDQoNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkQWNjPC1hWyw4XQ0KYTwtYWdncmVnYXRlKGFbLGMoOCwzNyw1MCldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQp0b3QyKGEpDQojdG90YWwkQWNjX1A8LXJvdW5kKHRvdGFsJEFjYyoxMjAwLyh0b3RhbFssM10qLjA0KSwwKQ0KdG90YWwkY2libGU0PC1yb3VuZCh0b3RhbFssM10qLjA0LzEyKQ0KdG90YWxbLDI6M108LU5VTEwNCnRvdGFsJGNpYmxlPTkwDQojdG90YWw8LXRvdGFsWyxjKDEsMiw0LDUsMyldDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIk1vaXMiLCJBY2NBc3Npc3QiLCJDaWJsZTQiLCJDaWJsZTkwIiwiJSIpKQ0KDQpiPC1kYXRhYg0KI2IkVmFyPC1yb3dTdW1zKGJbLDQyOjQ0XSxuYS5ybT1UKQ0KbmFtZXMoZGF0YWcpWzhdPC0iQWNjb3VjaF9hc3MiDQpuYW1lcyhkYXRhZylbNjJdPC0iQWNjb3VjaCINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKEFjY291Y2hhPXN1bShBY2NvdWNoX2FzcyxuYS5ybT1UKSxhY2NhPXN1bShBY2NvdWNoLG5hLnJtPVQpKSU+JSBtdXRhdGUoQWNjb3VjaF9hc3M9cm91bmQoQWNjb3VjaGEqMTAwL2FjY2EpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUFjY291Y2hfYXNzLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9QWNjb3VjaF9hc3MpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzldPC0iQWNjb3VjaF9hc3MiDQpuYW1lcyhiKVs2M108LSJBY2NvdWNoIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKEFjY291Y2hhPXN1bShBY2NvdWNoX2FzcyxuYS5ybT1UKSxhY2NhPXN1bShBY2NvdWNoLG5hLnJtPVQpKSU+JSBtdXRhdGUoQWNjb3VjaF9hc3M9cm91bmQoQWNjb3VjaGEqMTAwL2FjY2EpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9QWNjb3VjaF9hc3MpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoQWNjb3VjaF9hc3MsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix5PSIiLHRpdGxlPSIlIEFjY291Y2hlbWVudHMgYXNzaXN0w6lzIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCwxNDApKQ0KDQpgYGANCiZuYnNwOw0KRW4gb2N0b2JyZSwgbGUgdGF1eCBkJ2FjY291Y2hlbWVudCBhc3Npc3RlIGEgZXRlIGxlIHBsdXMgZmFpYmxlIGRlIGwnYW5uZWUsIGxlcyBaUyBhIHByb2JsZW1lcyBzb250IDpLYWJvbmdvLEthYm9uZG8sS2l0ZW5nZSBldCBCdXR1bWJhLkxlIGNhcyBkZSBsYSBaUyBkZSBLYWJvbmdvIGRvaXQgZXRyZSBpbnZlc3RpZ3VlLg0KDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjc2IiksYygiMzEzNjQiKSxjKCI0MTI0NSIpLGMoIjkwIiksYygiODQuNSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIlExIEFjaGlldmVtZW50IiwiTnVtZXJhdG9yIiwiRGVub21pbmF0b3IiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOw0KDQombmJzcDsNCg0KLQkqKk51bWJlciBvZiB3b21lbiBnaXZpbmcgYmlydGggd2hvIHJlY2VpdmVkIHV0ZXJvdG9uaWNzIGluIHRoZSB0aGlyZCBzdGFnZSBvZiBsYWJvciAoT1IgaW1tZWRpYXRlbHkgYWZ0ZXIgYmlydGgpIHRocm91Z2ggVVNHLXN1cHBvcnRlZCBwcm9ncmFtcyBbMi4xLjRdKioNCiZuYnNwOw0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIxNTg0IiksYygiMjE3OCIpLGMoIjcyLjciKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYjwtZGF0YWINCm5hbWVzKGIpWzEwXTwtIkdBVFBBIg0KbmFtZXMoZGF0YWcpWzldPC0iR0FUUEEiDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShHQVRQQT1zdW0oR0FUUEEpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUdBVFBBLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9R0FUUEEpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShHQVRQQT1zdW0oR0FUUEEsbmEucm09VCkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1HQVRQQSkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChHQVRQQSwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLCB5PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDQwMCwxNDAwKSkNCmBgYA0KDQombmJzcDsNCiZuYnNwOw0KTGUgbm9tYnJlIGRlIGNhcyBkZSBHYXRwYSBhIGNvbm51IHVuZSBldm9sdXRpb24gZW4gZGVudHMgZGUgc2NpZSBjZXR0ZSBwZXJpb2RlIG1haXMgbGUgY2FzIGRlIGxhIFpTIGRlIE1hbGVtYmEgcXVpIHNlIHJldHJvdXZlIHBhcm1pIGxlcyBwbHVzIGZhaWJsZXMgYWxvcnMgcXUnZWxsZSBlc3QgdW5lIFpTIHRyZXMgcGV1cGxlZSBtZXJpdGUgdW5lIGludmVzdGlnYXRpb24gcG91c3NlZSwgc3VyIGVudHJlIGF1dHJlIGxhIGRpc3BvbmliaWxpdGUgZGUgbCdPY3l0b2Npbi4NCg0KLQkqKk51bWJlciBhbmQgcGVyY2VudGFnZSBvZiBuZXdib3JucyByZWNlaXZpbmcgZXNzZW50aWFsIG5ld2Jvcm4gY2FyZSB0aHJvdWdoIFVTRy1zdXBwb3J0ZWQgcHJvZ3JhbXMqKg0KDQpgYGB7cn0NCmE8LWRhdGFnDQphJFNvaW5zX2VzczwtYVssMjldDQphPC1hZ2dyZWdhdGUoYVssYyg5LDI5LDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCnRvdDIoYSkNCnRvdGFsJGNpYmxlPC0xMDANCiN0b3RhbCRTb2Vzc19QPC1yb3VuZCh0b3RhbCRTb2luc19lc3MqMTAwL3RvdGFsWywyXSkNCnRvdGFsWywzXTwtTlVMTA0KdG90YWwkY2libGU9MTAwDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIk1vaXMiLCJOYWlzc1ZpdiIsIlNvaW5zRXNzIiwiQ2libGUiLCIlIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbMzhdPC0iU29lc3MiDQpuYW1lcyhkYXRhZylbMTFdPC0iTmFpc3N2Ig0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoU29lc3NhPXN1bShTb2VzcyxuYS5ybT1UKSxuYWlzc3ZhPXN1bShOYWlzc3YsbmEucm09VCkpJT4lIG11dGF0ZShTb2Vzcz1yb3VuZChTb2Vzc2EqMTAwL25haXNzdmEpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVNvZXNzLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9U29lc3MpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzM5XTwtIlNvZXNzIg0KbmFtZXMoYilbMTJdPC0iTmFpc3N2Ig0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKFNvZXNzYT1zdW0oU29lc3MsbmEucm09VCksbmFpc3N2YT1zdW0oTmFpc3N2LG5hLnJtPVQpKSU+JSBtdXRhdGUoU29lc3M9cm91bmQoU29lc3NhKjEwMC9uYWlzc3ZhKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PVNvZXNzKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFNvZXNzLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCwxMDApKQ0KDQpgYGANCg0KJm5ic3A7DQpMYSBwZXJmb3JtYW5jZSBlbiBzb2lucyBlc3NlbnRpZWxzIGRlcyBub3V2ZWF1eCBuZXMgZXN0IGF1dG91ciBkZSA5NCUsIHBsdXMgZGUgNiBlbmZhbnRzIHN1ciAxMDAgbWFucXVlbnQgYXV4IHNvaW5zIGRhbnMgbGVzIFpTIHN1aXZhbnQ6S2Fib25kbywgS2l0ZW5nZS4NCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjkwIiksYygiMTAwIiksYygiODkuOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7DQoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQotCSoqTnVtYmVyIG9mIHBvc3RwYXJ0dW0vbmV3Ym9ybiB2aXNpdHMgd2l0aGluIHRocmVlIGRheXMgb2YgYmlydGggaW4gVVNHLXN1cHBvcnRlZCBwcm9ncmFtcyBbMi4xLjZdKioNCg0KYGBge3J9DQphPC1kYXRhZw0KYSRDUE9OXzE8LWFbLDI4XQ0KYTwtYWdncmVnYXRlKGFbLGMoMjgsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoY2libGVzJENQb04xWzNdKSkvMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRDUE9OXzEqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCm5hbWVzKGRhdGFnKVszN108LSJDcG9uMSINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKENwb24xPXN1bShDcG9uMSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9Q3BvbjEsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1DcG9uMSksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbMzhdPC0iQ3BvbjEiDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoQ3BvbjE9c3VtKENwb24xLG5hLnJtPVQpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9Q3BvbjEpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoQ3BvbjEsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIiwgeT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg4MDAwLDE0MDAwKSkNCg0KYGBgDQoNCiZuYnNwOw0KTGVzIHZpc2l0ZXMgQ1BPTjEgb250IGNvbm51IHVuZSBjaHV0ZSBlbiBkZWNlbWJyZSwgbGEgcHJpbmNpcGFsZSByYWlzb24gc2VyYWl0IGxhIGNvbXBsZXR1ZGUgZGVzIGRvbm5lZXMgcXVpIGVzdCB0cmVzIGZhaWJsZS4NCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMjgwMjgiKSxjKCIyMzU1OSIpLGMoIjExOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpgYGANCg0KJm5ic3A7DQogICANCiZuYnNwOw0KDQotCSoqRHJvcC1vdXQgcmF0ZSBpbiBEVFAtSGVwQi1IaWIzIGFtb25nIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIFsyLjEuOV0qKg0KDQombmJzcDsNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMi4zIiksYygiNCIpLGMoIjE0Mi44IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbNzU6NzddPC1wYXN0ZTAoIlBlbnRhXzEiLDE6MykNCm5hbWVzKGRhdGFnKVsyNjoyOF08LXBhc3RlMCgiUGVudGFfMyIsMTozKQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoUGVudGExPXN1bShQZW50YV8xMStQZW50YV8xMitQZW50YV8xMyxuYS5ybT1UKSxQZW50YTM9c3VtKFBlbnRhXzMxK1BlbnRhXzMyK1BlbnRhXzMzLG5hLnJtPVQpKSU+JSBtdXRhdGUoRHJvcD1yb3VuZCgoUGVudGExLVBlbnRhMykvUGVudGExLDIpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQojZ2dwbG90KHAsYWVzKHg9enMseT1Ecm9wLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9RHJvcCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbNzY6NzhdPC1wYXN0ZTAoIlBlbnRhXzEiLDE6MykNCm5hbWVzKGIpWzI3OjI5XTwtcGFzdGUwKCJQZW50YV8zIiwxOjMpDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoUGVudGExPXN1bShQZW50YV8xMStQZW50YV8xMitQZW50YV8xMyxuYS5ybT1UKSxQZW50YTM9c3VtKFBlbnRhXzMxK1BlbnRhXzMyK1BlbnRhXzMzLG5hLnJtPVQpKSU+JSBtdXRhdGUoRHJvcD1yb3VuZCgoUGVudGExLVBlbnRhMykvUGVudGExLDIpKS0+cA0KDQojZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PURyb3ApKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoRHJvcCwyKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMCwxLjUpKQ0KDQpgYGANCg0KJm5ic3A7ICANCg0KDQombmJzcDsNCiZuYnNwOw0KJm5ic3A7DQoNCiMjIE5VVFJJVElPTg0KDQotCU51bWJlciBvZiBpbmRpdmlkdWFscyByZWNlaXZpbmcgbnV0cml0aW9uLXJlbGF0ZWQgcHJvZmVzc2lvbmFsIHRyYWluaW5nIHRocm91Z2ggVVNHIHN1cHBvcnRlZCBudXRyaW9uIHByb2dyYW1zIFsyLjEuMTBdDQoNCi0JTnVtYmVyIG9mIGNoaWxkcmVuIHVuZGVyLWZpdmUgKDAtNTkgbW9udGhzKSByZWFjaGVkIGJ5IFVTRy1zdXBwb3J0ZWQgbnV0cml0aW9uIHByb2dyYW1zIFsyLjEuMTFdDQoNCiZuYnNwOw0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzUzMDkxIiksYygiMTU4NDU2IiksYygiNDQuOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpiPC1kYXRhYg0KbmFtZXMoZGF0YWcpWzQwXTwtIkNQUyINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKENQUz1zdW0oQ1BTKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1DUFMsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1DUFMpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzQxXTwtIkNQUyINCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShDUFM9c3VtKENQUyxuYS5ybT1UKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUNQUykpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUFMsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIiwgeT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg1MDAwMCw4MDAwMCkpDQoNCmBgYA0KDQombmJzcDsNCkxhIFpTIGRlIE1hbGVtYmEgYSB1bmUgZm9ydGUgZnJlcXVlbnRhdGlvbiBlbiBDUFMsIGVsbGUgZXN0IHN1aXZpIHBhciBLaW5rb25kamEuDQoNCiZuYnNwOw0KJm5ic3A7DQombmJzcDsNCg0KIyMgUkVQUk9EVUNUSVZFIEhFQUxUSC9GQU1JTFkgUExBTk5JTkcNCiZuYnNwOw0KLQkqKk51bWJlciBvZiBuZXcgYWNjZXB0b3JzIHVzaW5nIG1vZGVybiBjb250cmFjZXB0aXZlIG1ldGhvZHMgaW4gVVNHLXN1cHBvcnRlZCBmYWNpbGl0aWVzIFszIGZlZSBwcm94eV0qKg0KDQpgYGB7cn0NCmE8LWRhdGFnDQphJEFjY2VwdDwtKGFbLDEwXSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDEwLDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyROb3V2ZWxsZS5hY2NlcHRhbnRlWzNdLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQojdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkQWNjZXB0KjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmI8LWRhdGFiDQpuYW1lcyhkYXRhZylbMTJdPC0iQWNjZXB0Ig0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoQWNjZXB0PXN1bShBY2NlcHQpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUFjY2VwdCxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPUFjY2VwdCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbMTNdPC0iQWNjZXB0Ig0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKEFjY2VwdD1zdW0oQWNjZXB0LG5hLnJtPVQpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9QWNjZXB0KSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKEFjY2VwdCwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLCB5PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDEwMDAwLDIzMDAwKSkNCg0KYGBgDQombmJzcDsNCkxlIG5vbWJyZSBkZXMgbm91dmVsbGVzIGFjY2VwdGFudGVzIGNvbm5haXQgdW5lIGRpbWludXRpb24gZW4gbm92ZW1icmUsIGxhIFpTIGRlIEthYm9uZG8gZGlhbmRhIGV0IEthbWluYSBzb250IHBsdXMgcGV1cGxlZXMgbWFpcyBsZSBub21icmUgZGVzIG5vdXZlbGxlcyBhY2NlcHRhbnRlcyBlc3QgZmFpYmxlIG1hbGdyZSBsZXMgYWN0aXZpdGVzIGRlIERCQyBtaXMgZW4gcGxhY2UuDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIzMzM3MiIpLGMoIjIwNDA1IiksYygiMTYzLjUiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUoJSkiKSkNCg0KYGBgDQoNCiZuYnNwOw0KDQombmJzcDsNCg0KLQkqKk51bWJlciBvZiBjb3Vuc2VsaW5nIHZpc2l0cyBmb3IgRlAvIFJIIGFzIHJlc3VsdCBvZiBVU0cgc3VwcG9ydCBbMi4zXSoqDQoNCg0KDQoNCiMjIFRVQkVSQ1VMT1NJUw0KDQotCVRCIG5vdGlmaWNhdGlvbiByYXRlIHRocm91Z2ggVVNHLSBzdXBwb3J0ZWQgcHJvZ3JhbXMgWzIuMS4xN10NCg0KLQlOdW1iZXIgb2YgbXVsdGktZHJ1ZyByZXNpc3RhbnQgVEIgKE1EUi1UQikgY2FzZXMgZGV0ZWN0ZWQgWzIuMS4yMF0NCg0KIyMgV0FURVIsIFNBTklUQVRJT04sIEFORCBIWUdJRU5FDQoNCi0JTnVtYmVyIG9mIHBlb3BsZSBnYWluaW5nIGFjY2VzcyB0byBiYXNpYyBkcmlua2luZyB3YXRlciBzZXJ2aWNlcyBhcyBhIHJlc3VsdCBvZiBVU0cgYXNzaXN0YW5jZSBbMi42LjJdDQoNCi0JTnVtYmVyIG9mIHBlb3BsZSBnYWluaW5nIGFjY2VzcyB0byBhIGJhc2ljIHNhbml0YXRpb24gc2VydmljZSBhcyBhIHJlc3VsdCBvZiBVU0cgYXNzaXN0YW5jZSBbMi42LjNdDQoNCiMgNC5SRVBPUlRJTkcgQlkgUFJPR1JBTSBBQ1RJVklUSUVTDQoNCiMjIGNmciByYXBwb3J0IHByb2dyYW1tYXRpcXVlDQoNCg==