# Name: smd_xml v0.2 # Type: Client side plugin # Extract any XML/feed info and reformat it # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjc6InNtZF94bWwiO3M6NjoiYXV0aG9yIjtzOjExOiJTdGVm IERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdzb24uY29t LyI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMiI7czoxMToiZGVzY3JpcHRpb24iO3M6NDE6IkV4 dHJhY3QgYW55IFhNTC9mZWVkIGluZm8gYW5kIHJlZm9ybWF0IGl0IjtzOjQ6ImNvZGUiO3M6 MTQ5MjU6ImZ1bmN0aW9uIHNtZF94bWwoJGF0dHMsICR0aGluZz1OVUxMKSB7DQoJZ2xvYmFs ICRwcmV0ZXh0LCAkdGhpc3BhZ2UsICRzbWRfeG1sX3BnaW5mbzsNCg0KCWV4dHJhY3QobEF0 dHMoYXJyYXkoDQoJCSdkYXRhJyA9PiAnJywNCgkJJ3JlY29yZCcgPT4gJycsDQoJCSdmaWVs ZHMnID0+ICcnLA0KCQknc2tpcCcgPT4gJycsDQoJCSd1cHBlcmNhc2UnID0+ICcwJywNCgkJ J2NvbnZlcnQnID0+ICcnLCAvLyBzZWFyY2g6cmVwbGFjZSwgc2VhcmNoOnJlcGxhY2UsIC4u Lg0KCQkndGFyZ2V0X2VuYycgPT4gJ1VURi04JywNCgkJJ2Zvcm0nID0+ICcnLA0KCQknbGlt aXQnID0+IDAsDQoJCSdvZmZzZXQnID0+IDAsDQoJCSdsaW5raWZ5JyA9PiAnJywNCgkJJ3Bh Z2Vmb3JtJyA9PiAnJywNCgkJJ3BhZ2V2YXInID0+ICdwZycsDQoJCSdwYWdlcG9zJyA9PiAn YmVsb3cnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycgPT4gJycsDQoJCSdjbGFz cycgPT4gJycsDQoJCSdkZWxpbScgPT4gJywnLA0KCQkncGFyYW1fZGVsaW0nID0+ICc6JywN CgkJJ2NvbmNhdF9kZWxpbScgPT4gJyAnLA0KCQknY29uY2F0JyA9PiAnMScsDQoJCSdjYWNo ZV90aW1lJyA9PiAnMCcsIC8vIGluIHNlY29uZHMNCgkJJ2hhc2hzaXplJyA9PiAnNjo1JywN CgkJJ2RlYnVnJyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCSRzcmMgPSAnJzsNCgkkdGhp bmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0KDQoJ aWYgKGVtcHR5KCRkYXRhKSkgew0KCQl0cmlnZ2VyX2Vycm9yKCJzbWRfeG1sIHJlcXVpcmVz IGEgZGF0YSBzb3VyY2UiKTsNCgl9DQoJaWYgKGVtcHR5KCRyZWNvcmQpKSB7DQoJCXRyaWdn ZXJfZXJyb3IoInNtZF94bWwgcmVxdWlyZXMgYSByZWNvcmQgbmFtZSB3aXRoaW4geW91ciBk YXRhIHN0cmVhbSIpOw0KCX0NCglpZiAoZW1wdHkoJGZpZWxkcykpIHsNCgkJdHJpZ2dlcl9l cnJvcigic21kX3htbCByZXF1aXJlcyBhIGxpc3Qgb2YgZmllbGRzIHRvIGV4dHJhY3QgZnJv bSB3aXRoaW4geW91ciByZWNvcmRzIik7DQoJfQ0KDQoJJHBhZ2ViaXQgPSAkcm93aW5mbyA9 IGFycmF5KCk7DQoJaWYgKCRwYWdlZm9ybSkgew0KCQkkcGFnZVBvc0FsbG93ZWQgPSBhcnJh eSgiYmVsb3ciLCAiYWJvdmUiKTsNCgkJJHBhZ2Vmb3JtID0gZmV0Y2hfZm9ybSgkcGFnZWZv cm0pOw0KCQkkcGFnZXBvcyA9IHN0cl9yZXBsYWNlKCdzbWRfJywgJycsICRwYWdlcG9zKTsg Ly8gRm9yIGNvbnZlbmllbmNlDQoJCSRwYWdlcG9zID0gZG9fbGlzdCgkcGFnZXBvcywgJGRl bGltKTsNCgkJZm9yZWFjaCAoJHBhZ2Vwb3MgYXMgJHBhZ2VpdGVtKSB7DQoJCQkkcGFnZWJp dFtdID0gKGluX2FycmF5KCRwYWdlaXRlbSwgJHBhZ2VQb3NBbGxvd2VkKSkgPyAkcGFnZWl0 ZW0gOiAkcGFnZVBvc0FsbG93ZWRbMF07DQoJCX0NCgl9DQoNCgkkdGFyZ2V0X2VuYyA9IChp bl9hcnJheSgkdGFyZ2V0X2VuYywgYXJyYXkoJ0lTTy04ODU5LTEnLCAnVVMtQVNDSUknLCAn VVRGLTgnKSkpID8gJHRhcmdldF9lbmMgOiAnVVRGLTgnOw0KDQoJLy8gTWFrZSBhIHVuaXF1 ZSBoYXNoIHZhbHVlIGZvciB0aGlzIGluc3RhbmNlIHNvIHRoZSBYTUwgZG9jdW1lbnQgY2Fu IGJlIGNhY2hlZCBpbiB0eHBfcHJlZnMNCgkkdW5pcSA9ICcnOw0KCSRtZDUgPSBtZDUoJGRh dGEuJHJlY29yZC4kZmllbGRzKTsNCglsaXN0KCRoYXNoTGVuLCAkaGFzaFNraXApID0gZXhw bG9kZSgnOicsICRoYXNoc2l6ZSk7DQoJZm9yICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQg PCAkaGFzaExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRoYXNoU2tpcCkgJSBzdHJsZW4o JG1kNSkpKSB7DQoJCSR1bmlxIC49ICRtZDVbJGlkeF07DQoJfQ0KDQoJJHZhcl9sYXN0bW9k ID0gJ3NtZF94bWxfbG1vZF8nLiR1bmlxOw0KCSR2YXJfZGF0YSA9ICdzbWRfeG1sX2RhdGFf Jy4kdW5pcTsNCgkkbGFzdG1vZCA9IGdldF9wcmVmKCR2YXJfbGFzdG1vZCwgMCk7DQoJJHJl YWRfY2FjaGUgPSAoKCRjYWNoZV90aW1lID4gMCkgJiYgKCh0aW1lKCkgLSAkbGFzdG1vZCkg PCAkY2FjaGVfdGltZSkpID8gdHJ1ZSA6IGZhbHNlOw0KCSRyZWFkX2NhY2hlID0gZ3BzKCdm b3JjZV9yZWFkJykgPyBmYWxzZSA6ICRyZWFkX2NhY2hlOyAvLyBPdmVycmlkZSBjYWNoZV90 aW1lDQoJJGNydXNoID0gZnVuY3Rpb25fZXhpc3RzKCdnemNvbXByZXNzJykgJiYgZnVuY3Rp b25fZXhpc3RzKCdnenVuY29tcHJlc3MnKTsNCgkkcGFnZXZhciA9ICgkcGFnZXZhciA9PSAn U01EX1hNTF9VTklRVUVfSUQnKSA/ICR1bmlxIDogJHBhZ2V2YXI7DQoNCgkvLyBDYWNoZWQg ZG9jdW1lbnQgaXMgZ3ppcHBlZCBhbmQgdGhlbiAoeXVrISkgYmFzZTY0J2QgaWYgemxpYiBp cyBjb21waWxlZCBpbi4NCgkvLyBXb3VsZCBwcmVmZXIgdG8gc3RvcmUgYmluYXJ5IGRhdGEg ZGlyZWN0bHkgYnV0IHRyeWluZyB0byBpbnNlcnQgaXQgaW50byBhIHR4cF9wcmVmcw0KCS8v IHRleHQgZmllbGQgYWx3YXlzIGdhdmUgcHJvYmxlbXMgb24gaW5zZXJ0aW9uIGFuZC9vciBy ZXRyaWV2YWwNCglpZiAoJHJlYWRfY2FjaGUpIHsNCgkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJ CWRtcCAoJysrIFJFQURJTkcgQ0FDSEUgJy4kdmFyX2RhdGEuJyArKycpOw0KCQl9DQoJCSRz cmMgPSAkY3J1c2ggPyBnenVuY29tcHJlc3MoYmFzZTY0X2RlY29kZShnZXRfcHJlZigkdmFy X2RhdGEpKSkgOiBnZXRfcHJlZigkdmFyX2RhdGEpOw0KCX0gZWxzZSB7DQoJCWlmICgoc3Ry cG9zKCRkYXRhLCAnaHR0cDonKSA9PT0gMCkgfHwgKHN0cnBvcygkZGF0YSwgJ2h0dHBzOicp ID09PSAwKSkgew0KCQkJLy8gVGhlIGRhdGEgaXMgdG8gYmUgZmV0Y2hlZCBmcm9tIGEgVVJM DQoJCQlpZiggaXNfY2FsbGFibGUoJ2Zzb2Nrb3BlbicpICkNCgkJCQkkdHJhbnNwb3J0ID0g J2Zzb2NrJzsNCgkJCWVsc2VpZiggaXNfY2FsbGFibGUoJ2N1cmxfaW5pdCcpICkgew0KCQkJ CSR0cmFuc3BvcnQgPSAnY3VybCc7DQoJCQl9IGVsc2Ugew0KCQkJCSR0cmFuc3BvcnQgPSAn JzsNCgkJCX0NCg0KCQkJc3dpdGNoICgkdHJhbnNwb3J0KSB7DQoJCQkJY2FzZSAnY3VybCc6 DQoJCQkJCSRjID0gY3VybF9pbml0KCk7DQoJCQkJCWN1cmxfc2V0b3B0KCRjLCBDVVJMT1BU X1VSTCwgJGRhdGEpOw0KCQkJCQljdXJsX3NldG9wdCgkYywgQ1VSTE9QVF9SRUZFUkVSLCBo dSk7DQoJCQkJCWN1cmxfc2V0b3B0KCRjLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVl KTsNCgkJCQkJY3VybF9zZXRvcHQoJGMsIENVUkxPUFRfVkVSQk9TRSwgZmFsc2UpOw0KCQkJ CQljdXJsX3NldG9wdCgkYywgQ1VSTE9QVF9USU1FT1VULCAxMCk7DQoJCQkJCSRzcmMgPSBj dXJsX2V4ZWMoJGMpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdmc29jayc6DQoJCQkJCSR1 cmwgPSBwYXJzZV91cmwoJGRhdGEpOw0KCQkJCQkkZnAgPSBmc29ja29wZW4gKCR1cmxbJ2hv c3QnXSwgODAsICRlcnJubywgJGVycnN0ciwgMTApOw0KCQkJCQkkcXJ5ID0gJ0dFVCAnLiR1 cmxbJ3BhdGgnXTsNCgkJCQkJJHFyeSAuPSAiIEhUVFAvMS4wXHJcbiI7DQoJCQkJCSRxcnkg Lj0gIkhvc3Q6ICIuJHVybFsnaG9zdCddLiJcclxuIjsNCgkJCQkJJHFyeSAuPSAiVXNlci1B Z2VudDogTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1HQjsg cnY6MS45LjEuNikgR2Vja28vMjAwOTEyMDEgRmlyZWZveC8zLjUuNlxyXG5cclxuIjsgLy8g KnNocnVnKg0KDQoJCQkJCWZwdXRzKCRmcCwgJHFyeSk7DQoJCQkJCXN0cmVhbV9zZXRfdGlt ZW91dCgkZnAsIDEwKTsNCgkJCQkJJGluZm8gPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZnAp Ow0KDQoJCQkJCSRoZHJzID0gdHJ1ZTsNCgkJCQkJd2hpbGUgKCghZmVvZigkZnApKSAmJiAo ISRpbmZvWyd0aW1lZF9vdXQnXSkpIHsNCgkJCQkJCSRsaW5lID0gZmdldHMoJGZwLCA4MTky KTsNCgkJCQkJCSRsaW5lID0gcHJlZ19yZXBsYWNlKCJbXHJcbl0iLCAiIiwgJGxpbmUpOw0K CQkJCQkJaWYgKCRoZHJzID09IGZhbHNlKSB7DQoJCQkJCQkJJHNyYyAuPSAkbGluZS4iXG4i Ow0KCQkJCQkJfQ0KCQkJCQkJaWYgKHN0cmxlbigkbGluZSkgPT0gMCkgJGhkcnMgPSBmYWxz ZTsNCgkJCQkJfQ0KCQkJCQlpZiAoJGluZm9bJ3RpbWVkX291dCddKSB7DQoJCQkJCQkkc3Jj ID0gJyc7DQoJCQkJCX0NCgkJCQkJZmNsb3NlKCRmcCk7DQoJCQkJCWJyZWFrOw0KCQkJCWRl ZmF1bHQ6DQoJCQkJCSRzcmMgPSAnJzsNCgkJCX0NCgkJfSBlbHNlICB7DQoJCQkvLyBBc3N1 bWUgZGF0YSBpcyBwcmVzZW50ZWQgaW4gcmF3IFhNTA0KCQkJJHNyYyA9ICRkYXRhOw0KCQl9 DQoJfQ0KDQoJLy8gU3RvcmUgdGhlIGN1cnJlbnQgZG9jdW1lbnQgaW4gdGhlIGNhY2hlIGFu ZCBkYXRlc3RhbXAgaXQNCglpZiAoJGNhY2hlX3RpbWUgPiAwICYmICEkcmVhZF9jYWNoZSkg ew0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZG1wKCcrKyBEQVRBIENBQ0hFRCB0byAnLiR2 YXJfZGF0YS4nICsrJyk7DQoJCX0NCgkJJHNyY2luZm8gPSAkY3J1c2ggPyBiYXNlNjRfZW5j b2RlKGd6Y29tcHJlc3MoJHNyYykpIDogZG9TbGFzaCgkc3JjKTsNCgkJc2V0X3ByZWYoJHZh cl9sYXN0bW9kLCB0aW1lKCksICdzbWRfeG1sJywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0 Jyk7DQoJCXNldF9wcmVmKCR2YXJfZGF0YSwgJHNyY2luZm8sICdzbWRfeG1sJywgUFJFRl9I SURERU4sICd0ZXh0X2lucHV0Jyk7DQoJfQ0KDQoJLy8gTWFrZSB1cCBhIHJlcGxhY2VtZW50 IGFycmF5IGZvciBkZWNvZGVkIGVudGl0aWVzLi4uDQoJJGNvbnZlcnNpb25zID0gYXJyYXko KTsNCgkkY29udmVydCA9IGRvX2xpc3QoJGNvbnZlcnQsICRkZWxpbSk7DQoJZm9yZWFjaCAo JGNvbnZlcnQgYXMgJHBhaXIpIHsNCgkJaWYgKGVtcHR5KCRwYWlyKSkgY29udGludWU7DQoN CgkJJHBhaXIgPSBkb19saXN0KCRwYWlyLCAkcGFyYW1fZGVsaW0pOw0KCQkkY29udmVyc2lv bnNbJHBhaXJbMF1dID0gJHBhaXJbMV07DQoJfQ0KDQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJ ZWNobyAiKysgQ09OVkVSU0lPTlMgKysiOw0KCQlkbXAoJGNvbnZlcnNpb25zKTsNCgl9DQoN CgkvLyAuLi4gYW5kIHJlcGxhY2UgdGhlbQ0KCSRzcmMgPSBzdHJ0cigkc3JjLCAkY29udmVy c2lvbnMpOw0KDQoJaWYgKCRkZWJ1ZyA+IDIpIHsNCgkJZWNobyAiKysgRklMVEVSRUQgU09V UkNFIERBVEEgKysiOw0KCQlkbXAoJHNyYyk7DQoJfQ0KDQoJaWYgKCFlbXB0eSgkc3JjKSkg ew0KDQoJCS8vIFBhZ2luZyBpbmZvcm1hdGlvbg0KCQkkcm93aW5mb1snbnVtcmVjcyddID0g c3Vic3RyX2NvdW50KCRzcmMsICc8Jy4kcmVjb3JkLic+Jyk7DQoJCSRyb3dpbmZvWydwYWdl X3Jvd2NudCddID0gMDsNCgkJJHJvd2luZm9bJ2xpbWl0J10gPSAoJGxpbWl0IDwgJHJvd2lu Zm9bJ251bXJlY3MnXSkgPyAkbGltaXQgOiAwOw0KCQlpZiAoJG9mZnNldCA+PSAwKSB7DQoJ CQlpZiAoJG9mZnNldCA8ICRyb3dpbmZvWydudW1yZWNzJ10pIHsNCgkJCQkkcm93aW5mb1sn b2Zmc2V0J10gPSAkb2Zmc2V0Ow0KCQkJfSBlbHNlIHsNCgkJCQkkcm93aW5mb1snb2Zmc2V0 J10gPSAkcm93aW5mb1snbnVtcmVjcyddOw0KCQkJCSRyb3dpbmZvWydsaW1pdCddID0gMDsN CgkJCX0NCgkJfSBlbHNlIHsNCgkJCSRuZWdvZmYgPSAkcm93aW5mb1snbnVtcmVjcyddICsg JG9mZnNldDsNCgkJCWlmICgkbmVnb2ZmID4gMCkgew0KCQkJCSRyb3dpbmZvWydvZmZzZXQn XSA9ICRuZWdvZmY7DQoJCQl9IGVsc2Ugew0KCQkJCSRyb3dpbmZvWydvZmZzZXQnXSA9IDA7 DQoJCQkJJHJvd2luZm9bJ2xpbWl0J10gPSAkcm93aW5mb1snbnVtcmVjcyddOw0KCQkJfQ0K CQl9DQoNCgkJLy8gUmUtYXNzaWduIHRoZSBhdHRzIGluIGNhc2UgdGhleSd2ZSBiZWVuIGNo YW5nZWQgYnkgcmVhY2hpbmcgdGhlIGJvdW5kcyBvZiB0aGUgZG9jdW1lbnQNCgkJJG9mZnNl dCA9ICRyb3dpbmZvWydvZmZzZXQnXTsNCgkJJGxpbWl0ID0gJHJvd2luZm9bJ2xpbWl0J107 DQoNCgkJaWYgKCRsaW1pdCA+IDApIHsNCgkJCSRrZWVwc2FmZSA9ICR0aGlzcGFnZTsNCgkJ CSRyb3dpbmZvWyd0b3RhbCddID0gJHJvd2luZm9bJ251bXJlY3MnXSAtICRvZmZzZXQ7DQoJ CQkkcm93aW5mb1snbnVtUGFnZXMnXSA9IGNlaWwoJHJvd2luZm9bJ3RvdGFsJ10gLyAkbGlt aXQpOw0KCQkJJHJvd2luZm9bJ3BnJ10gPSAoIWdwcygkcGFnZXZhcikpID8gMSA6IGdwcygk cGFnZXZhcik7DQoJCQkkcm93aW5mb1sncGdvZmZzZXQnXSA9ICRvZmZzZXQgKyAoKCRyb3dp bmZvWydwZyddIC0gMSkgKiAkbGltaXQpOw0KCQkJJHJvd2luZm9bJ3ByZXZwZyddID0gKCgk cm93aW5mb1sncGcnXS0xKSA+IDApID8gJHJvd2luZm9bJ3BnJ10tMSA6ICcnOw0KCQkJJHJv d2luZm9bJ25leHRwZyddID0gKCgkcm93aW5mb1sncGcnXSsxKSA8PSAkcm93aW5mb1snbnVt UGFnZXMnXSkgPyAkcm93aW5mb1sncGcnXSsxIDogJyc7DQoJCQkkcm93aW5mb1sncGFnZXJv d3MnXSA9ICgkcm93aW5mb1sncGcnXSA9PSAkcm93aW5mb1snbnVtUGFnZXMnXSkgPyAkcm93 aW5mb1sndG90YWwnXS0oJGxpbWl0ICogKCRyb3dpbmZvWydudW1QYWdlcyddLTEpKSA6ICRs aW1pdDsNCgkJCSRyb3dpbmZvWyd1bmlxdWVfaWQnXSA9ICR1bmlxOw0KDQoJCQkvLyBzZW5k IHBhZ2luZyBpbmZvIHRvIHR4cDpuZXdlciBhbmQgdHhwOm9sZGVyDQoJCQkkcGFnZW91dFsn cGcnXSA9ICRyb3dpbmZvWydwZyddOw0KCQkJJHBhZ2VvdXRbJ251bVBhZ2VzJ10gPSAkcm93 aW5mb1snbnVtUGFnZXMnXTsNCgkJCSRwYWdlb3V0WydzJ10gPSAkcHJldGV4dFsncyddOw0K CQkJJHBhZ2VvdXRbJ2MnXSA9ICRwcmV0ZXh0WydjJ107DQoJCQkkcGFnZW91dFsnZ3JhbmRf dG90YWwnXSA9ICRyb3dpbmZvWydudW1yZWNzJ107DQoJCQkkcGFnZW91dFsndG90YWwnXSA9 ICRyb3dpbmZvWyd0b3RhbCddOw0KCQkJJHRoaXNwYWdlID0gJHBhZ2VvdXQ7DQoJCX0gZWxz ZSB7DQoJCQkkcm93aW5mb1sncGdvZmZzZXQnXSA9ICRvZmZzZXQ7DQoJCX0NCg0KCQkkcm93 aW5mb1sncnVubmluZ19yb3djbnQnXSA9ICRyb3dpbmZvWydwZ29mZnNldCddLSRvZmZzZXQ7 DQoJCSRyb3dpbmZvWydmaXJzdF9yZWMnXSA9ICRyb3dpbmZvWydydW5uaW5nX3Jvd2NudCdd ICsgMTsNCgkJJHJvd2luZm9bJ2xhc3RfcmVjJ10gPSAoJGxpbWl0ID4gMCkgPyAkcm93aW5m b1snZmlyc3RfcmVjJ10gKyAkcm93aW5mb1sncGFnZXJvd3MnXSAtIDEgOiAkcm93aW5mb1sn bnVtcmVjcyddOw0KCQlpZiAoJGxpbWl0ID4gMCkgew0KCQkJJHJvd2luZm9bJ3ByZXZfcm93 cyddID0gKCgkcm93aW5mb1sncHJldnBnJ10pID8gJGxpbWl0IDogMCk7DQoJCQkkcm93aW5m b1snbmV4dF9yb3dzJ10gPSAoKCRyb3dpbmZvWyduZXh0cGcnXSkgPyAoKCRyb3dpbmZvWyds YXN0X3JlYyddKyRsaW1pdCsxKSA+ICRyb3dpbmZvWyd0b3RhbCddID8gJHJvd2luZm9bJ3Rv dGFsJ10tJHJvd2luZm9bJ2xhc3RfcmVjJ10gOiAkbGltaXQpIDogMCk7DQoJCX0NCg0KCQlp ZiAoJGRlYnVnID4gMCkgew0KCQkJZWNobyAnKysgUEFHSU5HIElORk8gKysnOw0KCQkJZG1w KCRyb3dpbmZvKTsNCgkJfQ0KDQoJCS8vIERvIHRoZSBkaXJ0eSBYTUwgZGVlZA0KCQkkcmVm ID0gbmV3IHNtZF94bWxfcGFyc2VyKCRzcmMsICRmaWVsZHMsICRyZWNvcmQsICRza2lwLCAk dXBwZXJjYXNlLCAkdGFyZ2V0X2VuYywgJGxpbmtpZnksICR0aGluZywgJGRlbGltLCAkcGFy YW1fZGVsaW0sICRjb25jYXQsICRjb25jYXRfZGVsaW0sICRyb3dpbmZvLCAkZGVidWcpOw0K CQkkcmVzdWx0ID0gJHJlZi0+Z2V0UmVzdWx0cygpOw0KDQoJCS8vIENyZWF0ZSB0aGUgcGFn ZSBmb3JtDQoJCSRwYWdlYmxvY2sgPSAnJzsNCgkJJGZpbmFsb3V0ID0gJHJlcGFnZW1lbnRz ID0gYXJyYXkoKTsNCg0KCQlpZiAoJHJvd2luZm9bJ2xpbWl0J10gPiAwKSB7DQoJCQkkcmVw YWdlbWVudHNbJ3tzbWRfeG1sX3RvdGFscmVjc30nXSA9ICRyb3dpbmZvWyd0b3RhbCddOw0K CQkJJHJlcGFnZW1lbnRzWyd7c21kX3htbF9wYWdlcmVjc30nXSA9ICRyb3dpbmZvWydwYWdl cm93cyddOw0KCQkJJHJlcGFnZW1lbnRzWyd7c21kX3htbF9wYWdlc30nXSA9ICRyb3dpbmZv WydudW1QYWdlcyddOw0KCQkJJHJlcGFnZW1lbnRzWyd7c21kX3htbF9wcmV2cGFnZX0nXSA9 ICRyb3dpbmZvWydwcmV2cGcnXTsNCgkJCSRyZXBhZ2VtZW50c1sne3NtZF94bWxfdGhpc3Bh Z2V9J10gPSAkcm93aW5mb1sncGcnXTsNCgkJCSRyZXBhZ2VtZW50c1sne3NtZF94bWxfbmV4 dHBhZ2V9J10gPSAkcm93aW5mb1snbmV4dHBnJ107DQoJCQkkcmVwYWdlbWVudHNbJ3tzbWRf eG1sX3JlY19zdGFydH0nXSA9ICRyb3dpbmZvWydmaXJzdF9yZWMnXTsNCgkJCSRyZXBhZ2Vt ZW50c1sne3NtZF94bWxfcmVjX2VuZH0nXSA9ICRyb3dpbmZvWydsYXN0X3JlYyddOw0KCQkJ JHJlcGFnZW1lbnRzWyd7c21kX3htbF9yZWNzX3ByZXZ9J10gPSAkcm93aW5mb1sncHJldl9y b3dzJ107DQoJCQkkcmVwYWdlbWVudHNbJ3tzbWRfeG1sX3JlY3NfbmV4dH0nXSA9ICRyb3dp bmZvWyduZXh0X3Jvd3MnXTsNCgkJCSRyZXBhZ2VtZW50c1sne3NtZF94bWxfdW5pcXVlX2lk fSddID0gJHJvd2luZm9bJ3VuaXF1ZV9pZCddOw0KCQkJJHNtZF94bWxfcGdpbmZvID0gJHJl cGFnZW1lbnRzOw0KCQkJJHBhZ2VibG9jayA9IHBhcnNlKHN0cnRyKCRwYWdlZm9ybSwgJHJl cGFnZW1lbnRzKSk7DQoJCX0NCg0KCQkvLyBNYWtlIHVwIHRoZSBmaW5hbCBvdXRwdXQNCgkJ aWYgKGluX2FycmF5KCJhYm92ZSIsICRwYWdlYml0KSkgew0KCQkJJGZpbmFsb3V0W10gPSAk cGFnZWJsb2NrOw0KCQl9DQoJCSRmaW5hbG91dFtdID0gZG9XcmFwKCRyZXN1bHQsICR3cmFw dGFnLCAkYnJlYWssICRjbGFzcyk7DQoJCWlmIChpbl9hcnJheSgiYmVsb3ciLCAkcGFnZWJp dCkpIHsNCgkJCSRmaW5hbG91dFtdID0gJHBhZ2VibG9jazsNCgkJfQ0KDQoJCS8vIFJlc3Rv cmUgdGhlIHBhZ2luZyBvdXRzaWRlIHRoZSBwbHVnaW4gY29udGFpbmVyDQoJCWlmICgkbGlt aXQgPiAwKSB7DQoJCQkkdGhpc3BhZ2UgPSAka2VlcHNhZmU7DQoJCX0NCg0KCQlyZXR1cm4g am9pbignJywgJGZpbmFsb3V0KTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gJyc7DQoJfQ0KfQ0K DQpjbGFzcyBzbWRfeG1sX3BhcnNlciB7DQoJcHJpdmF0ZSAkZGF0YTsNCglwcml2YXRlICRm aWVsZHM7DQoJcHJpdmF0ZSAkcmVjOw0KCXByaXZhdGUgJHNraXA7DQoJcHJpdmF0ZSAkY2Y7 DQoJcHJpdmF0ZSAkb3V0ZW5jOw0KCXByaXZhdGUgJGxpbmtpZnk7DQoNCglwcml2YXRlICRp bnRhZzsNCglwcml2YXRlICRpbmRhdGE7DQoJcHJpdmF0ZSAkc2tpcHRhZzsNCglwcml2YXRl ICR4bWx0YWc7DQoJcHJpdmF0ZSAkeG1sYXR0czsNCglwcml2YXRlICR4bWxkYXRhOw0KCXBy aXZhdGUgJHRoaW5nOw0KCXByaXZhdGUgJG91dDsNCglwcml2YXRlICRwZGVsaW07DQoJcHJp dmF0ZSAkY2RlbGltOw0KCXByaXZhdGUgJGNvbmNhdDsNCglwcml2YXRlICRyb3dpbmZvOw0K CXByaXZhdGUgJHNob3dfcmVjb3JkOw0KCXByaXZhdGUgJGRlYnVnOw0KDQoJLyoqDQoJKiBj b25zdHJ1Y3Rvcg0KCSovDQoJZnVuY3Rpb24gc21kX3htbF9wYXJzZXIoJGRhdGEsICRmaWVs ZHMsICRyZWMsICRza2lwLCAkY2YsICRvdXRlbmMsICRsaW5raWZ5LCAkdGhpbmcsICRkZWxp bSwgJHBkZWxpbSwgJGNvbmNhdCwgJGNkZWxpbSwgJHJpbmZvLCAkZGVidWc9MCkgew0KCQkk dGhpcy0+ZGF0YSA9ICRkYXRhOw0KCQkkdGhpcy0+ZmllbGRzID0gZG9fbGlzdCgkZmllbGRz LCAkZGVsaW0pOw0KCQkkdGhpcy0+c2tpcCA9IGRvX2xpc3QoJHNraXAsICRkZWxpbSk7DQoJ CSR0aGlzLT5yZWMgPSAkcmVjOw0KCQkkdGhpcy0+Y2YgPSAkY2Y7IC8vIENhc2UgZm9sZGlu Zw0KCQkkdGhpcy0+b3V0ZW5jID0gJG91dGVuYzsgLy8gVGFyZ2V0IGVuY29kaW5nDQoJCSR0 aGlzLT5saW5raWZ5ID0gZG9fbGlzdCgkbGlua2lmeSwgJGRlbGltKTsNCgkJJHRoaXMtPnRo aW5nID0gJHRoaW5nOw0KCQkkdGhpcy0+cGRlbGltID0gJHBkZWxpbTsNCgkJJHRoaXMtPmNk ZWxpbSA9ICRjZGVsaW07DQoJCSR0aGlzLT5jb25jYXQgPSAkY29uY2F0Ow0KCQkkdGhpcy0+ cm93aW5mbyA9ICRyaW5mbzsNCgkJJHRoaXMtPmRlYnVnID0gJGRlYnVnOw0KDQoJCSR0aGlz LT5pbnRhZyA9IGZhbHNlOw0KCQkkdGhpcy0+ZXhpc3RzID0gZmFsc2U7DQoJCSR0aGlzLT5z a2lwdGFnID0gJyc7DQoJCSR0aGlzLT54bWx0YWcgPSAnJzsNCgkJJHRoaXMtPnhtbHRhdHRz ID0gJyc7DQoJCSR0aGlzLT54bWxkYXRhID0gYXJyYXkoKTsNCgkJJHRoaXMtPm91dCA9IGFy cmF5KCk7DQoNCgkJJHRoaXMtPnBhcnNlKCk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdl dFJlc3VsdHMoKSB7DQoJCWlmICgkdGhpcy0+b3V0KSB7DQoJCQlyZXR1cm4gJHRoaXMtPm91 dDsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiAnJzsNCgkJfQ0KCX0NCg0KCXByaXZhdGUgZnVu Y3Rpb24gcGFyc2UoKSB7DQoJCSR0aGlzLT5kYXRhID0gcHJlZ19yZXBsYWNlKCIvPiIuIltb OnNwYWNlOl1dKyIuIjwvaSIsICI+PCIsICR0aGlzLT5kYXRhKTsgLy8gS2lsbCB3aGl0ZXNw YWNlIGluIGRhdGENCgkJJHhtbHBhcnNlciA9IHhtbF9wYXJzZXJfY3JlYXRlKCk7DQoJCXht bF9zZXRfb2JqZWN0KCR4bWxwYXJzZXIsICR0aGlzKTsNCgkJeG1sX3BhcnNlcl9zZXRfb3B0 aW9uKCR4bWxwYXJzZXIsIFhNTF9PUFRJT05fQ0FTRV9GT0xESU5HLCAkdGhpcy0+Y2YpOw0K CQl4bWxfcGFyc2VyX3NldF9vcHRpb24oJHhtbHBhcnNlciwgWE1MX09QVElPTl9UQVJHRVRf RU5DT0RJTkcsICR0aGlzLT5vdXRlbmMpOw0KCQl4bWxfc2V0X2VsZW1lbnRfaGFuZGxlcigk eG1scGFyc2VyLCAic21kX3htbF9zdGFydF90YWciLCAic21kX3htbF9lbmRfdGFnIik7DQoJ CXhtbF9zZXRfY2hhcmFjdGVyX2RhdGFfaGFuZGxlcigkeG1scGFyc2VyLCAic21kX3htbF90 YWdfY29udGVudHMiKTsNCgkJeG1sX3BhcnNlKCR4bWxwYXJzZXIsICR0aGlzLT5kYXRhKTsN CgkJeG1sX3BhcnNlcl9mcmVlKCR4bWxwYXJzZXIpOw0KCX0NCg0KCXByaXZhdGUgZnVuY3Rp b24gc21kX3htbF9zdGFydF90YWcoJHBhcnNlciwgJG5hbWUsICRhdHRyaWJzKSB7DQoJCSRw Z3ZhbCA9ICR0aGlzLT5yb3dpbmZvWydwZ29mZnNldCddIC0gMTsNCgkJJGxpbSA9ICR0aGlz LT5yb3dpbmZvWydsaW1pdCddID4gMDsNCgkJJHRoaXMtPnNob3dfcmVjb3JkID0gJGxpbSA/ ICgoJHRoaXMtPnJvd2luZm9bJ3BhZ2Vfcm93Y250J10gPiAkcGd2YWwpICYmICgkdGhpcy0+ cm93aW5mb1sncGFnZV9yb3djbnQnXSA8PSAkcGd2YWwgKyAkdGhpcy0+cm93aW5mb1sncGFn ZXJvd3MnXSkpIDogJHRoaXMtPnJvd2luZm9bJ3BhZ2Vfcm93Y250J10gPiAkcGd2YWw7DQoN CgkJaWYgKCRuYW1lID09ICR0aGlzLT5yZWMgJiYgJHRoaXMtPnNob3dfcmVjb3JkKSB7DQoJ CQkkdGhpcy0+aW50YWcgPSB0cnVlOw0KCQl9DQoJCWlmICgkdGhpcy0+aW50YWcpIHsNCgkJ CWlmIChpbl9hcnJheSgkbmFtZSwgJHRoaXMtPnNraXApKSB7DQoJCQkJJHRoaXMtPnhtbHRh ZyA9ICcnOw0KCQkJCSR0aGlzLT54bWxhdHRzID0gYXJyYXkoKTsNCgkJCQkkdGhpcy0+c2tp cHRhZyA9ICRuYW1lOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGhpcy0+eG1sdGFnID0gJG5hbWU7 DQoJCQkJJHRoaXMtPnhtbGF0dHMgPSAkYXR0cmliczsNCgkJCQlpZiAoJHRoaXMtPmNvbmNh dCAmJiBpc3NldCgkdGhpcy0+eG1sZGF0YVsneycuJHRoaXMtPnhtbHRhZy4nfSddKSkgew0K CQkJCQkkdGhpcy0+ZXhpc3RzID0gdHJ1ZTsNCiAgICAgICAgCSB9IGVsc2Ugew0KCQkJCQkk dGhpcy0+ZXhpc3RzID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCSR0aGlzLT5pbmRh dGEgPSBmYWxzZTsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHNtZF94bWxfZW5kX3RhZygk cGFyc2VyLCAkbmFtZSkgew0KCQlpZiAoJG5hbWUgPT0gJHRoaXMtPnJlYyAmJiAkbmFtZSAh PSAkdGhpcy0+c2tpcHRhZykgew0KCQkJJHRoaXMtPmludGFnID0gZmFsc2U7DQoJCQkkbGlt ID0gKCR0aGlzLT5yb3dpbmZvWydsaW1pdCddID4gMCkgPyB0cnVlIDogZmFsc2U7DQoNCgkJ CS8vIEFwcGVuZCByb3cgY291bnRlciBpbmZvcm1hdGlvbg0KCQkJJHRoaXMtPnhtbGRhdGFb J3tzbWRfeG1sX3RvdGFscmVjc30nXSA9ICRsaW0gPyAkdGhpcy0+cm93aW5mb1sndG90YWwn XSA6ICR0aGlzLT5yb3dpbmZvWydudW1yZWNzJ10gLSAkdGhpcy0+cm93aW5mb1sncGdvZmZz ZXQnXTsNCgkJCSR0aGlzLT54bWxkYXRhWyd7c21kX3htbF9wYWdlcmVjc30nXSA9ICRsaW0g PyAkdGhpcy0+cm93aW5mb1sncGFnZXJvd3MnXSA6ICR0aGlzLT54bWxkYXRhWyd7c21kX3ht bF90b3RhbHJlY3N9J107DQoJCQkkdGhpcy0+eG1sZGF0YVsne3NtZF94bWxfcGFnZXN9J10g PSAkbGltID8gJHRoaXMtPnJvd2luZm9bJ251bVBhZ2VzJ10gOiAxOw0KCQkJJHRoaXMtPnht bGRhdGFbJ3tzbWRfeG1sX3RoaXNwYWdlfSddID0gJGxpbSA/ICR0aGlzLT5yb3dpbmZvWydw ZyddIDogMTsNCgkJCSR0aGlzLT54bWxkYXRhWyd7c21kX3htbF90aGlzaW5kZXh9J10gPSAk dGhpcy0+cm93aW5mb1sncGFnZV9yb3djbnQnXSAtICR0aGlzLT5yb3dpbmZvWydvZmZzZXQn XTsNCgkJCSR0aGlzLT54bWxkYXRhWyd7c21kX3htbF90aGlzcmVjfSddID0gJHRoaXMtPnJv d2luZm9bJ3BhZ2Vfcm93Y250J10gLSAkdGhpcy0+cm93aW5mb1snb2Zmc2V0J10gKyAxOw0K CQkJJHRoaXMtPnhtbGRhdGFbJ3tzbWRfeG1sX3J1bmluZGV4fSddID0gJHRoaXMtPnJvd2lu Zm9bJ3J1bm5pbmdfcm93Y250J107DQoJCQkkdGhpcy0+eG1sZGF0YVsne3NtZF94bWxfcnVu cmVjfSddID0gJHRoaXMtPnJvd2luZm9bJ3J1bm5pbmdfcm93Y250J10gKyAxOw0KDQoJCQlp ZiAoJHRoaXMtPmRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyArKyI7 DQoJCQkJZG1wKCR0aGlzLT54bWxkYXRhKTsNCgkJCX0NCg0KCQkJaWYgKCR0aGlzLT5zaG93 X3JlY29yZCkgew0KCQkJCSR0aGlzLT5vdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGlzLT50aGlu ZywgJHRoaXMtPnhtbGRhdGEpKTsNCgkJCX0NCg0KCQkJLy8gUHJlcGFyZSBmb3IgbmV4dCBp dGVyYXRpb24NCgkJCSR0aGlzLT5yb3dpbmZvWydydW5uaW5nX3Jvd2NudCddID0gJHRoaXMt PnJvd2luZm9bJ3J1bm5pbmdfcm93Y250J10rMTsNCgkJCSR0aGlzLT5yb3dpbmZvWydwYWdl X3Jvd2NudCddID0gJHRoaXMtPnJvd2luZm9bJ3BhZ2Vfcm93Y250J10rMTsNCgkJCSR0aGlz LT54bWxkYXRhID0gYXJyYXkoKTsNCgkJCSR0aGlzLT5pbmRhdGEgPSBmYWxzZTsNCgkJfQ0K CQlpZiAoJG5hbWUgPT0gJHRoaXMtPnNraXB0YWcpIHsNCgkJCSR0aGlzLT5za2lwdGFnID0g Jyc7DQoJCX0NCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHNtZF94bWxfdGFnX2NvbnRlbnRz KCRwYXJzZXIsICRkYXRhKSB7DQoJCWlmICgkdGhpcy0+aW50YWcgJiYgISR0aGlzLT5za2lw dGFnKSB7DQoJCQlpZiAoJHRoaXMtPmRlYnVnID4gMSkgew0KCQkJCWRtcCgkdGhpcy0+eG1s dGFnIC4gIiA6ICIuICRkYXRhKTsNCgkJCX0NCg0KCQkJaWYgKGluX2FycmF5KCR0aGlzLT54 bWx0YWcsICR0aGlzLT5maWVsZHMpKSB7DQoJCQkJaWYgKGluX2FycmF5KCR0aGlzLT54bWx0 YWcsICR0aGlzLT5saW5raWZ5KSkgew0KCQkJCQkkZGF0YSA9IHByZWdfcmVwbGFjZSgnQCho dHRwcz86Ly8oWy1cd1wuXSspKyg6XGQrKT8oLyhbXHcvX1wuXSooXD9cUyspPyk/KT8pQCcs ICc8YSBocmVmPSIkMSI+JDE8L2E+JywgJGRhdGEpOw0KCQkJCX0NCgkJCQlpZiAoJHRoaXMt PmluZGF0YSkgew0KCQkJCQlpZiAoJHRoaXMtPmV4aXN0cykgew0KCQkJCQkJJHRoaXMtPnht bGRhdGFbJ3snLiR0aGlzLT54bWx0YWcuJ30nXSAuPSAkdGhpcy0+Y2RlbGltLiRkYXRhOw0K CQkJCQl9IGVsc2Ugew0KCQkJCQkJJHRoaXMtPnhtbGRhdGFbJ3snLiR0aGlzLT54bWx0YWcu J30nXSAuPSAkZGF0YTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmICgkdGhpcy0+ ZXhpc3RzKSB7DQoJCQkJCQkkdGhpcy0+eG1sZGF0YVsneycuJHRoaXMtPnhtbHRhZy4nfSdd IC49ICR0aGlzLT5jZGVsaW0uJGRhdGE7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkdGhpcy0+ eG1sZGF0YVsneycuJHRoaXMtPnhtbHRhZy4nfSddID0gJGRhdGE7DQoJCQkJCX0NCgkJCQl9 DQoJCQkJaWYgKCR0aGlzLT54bWxhdHRzKSB7DQoJCQkJCWZvcmVhY2ggKCR0aGlzLT54bWxh dHRzIGFzICR4a2V5ID0+ICR4dmFsKSB7DQoJCQkJCQkkdGhpcy0+eG1sZGF0YVsneycuJHRo aXMtPnhtbHRhZy4kdGhpcy0+cGRlbGltLiR4a2V5Lid9J10gPSAkeHZhbDsNCgkJCQkJfQ0K CQkJCX0NCgkJCQkkdGhpcy0+aW5kYXRhID0gdHJ1ZTsNCgkJCX0NCgkJfQ0KCX0NCn0NCg0K Ly8gQ29udmVuaWVuY2UgZnVuY3Rpb25zIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYSBwcmV2L25l eHQgcGFnZSBkZWZpbmVkLiBDb3VsZCBhbHNvIHVzZSBzbWRfaWYNCmZ1bmN0aW9uIHNtZF94 bWxfaWZfcHJldigkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRzbWRfeG1sX3BnaW5mbzsN Cg0KCSRyZXMgPSAkc21kX3htbF9wZ2luZm8gJiYgJHNtZF94bWxfcGdpbmZvWyd7c21kX3ht bF9wcmV2cGFnZX0nXSAhPSAnJzsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2Uoc3RydHIoJHRo aW5nLCAkc21kX3htbF9wZ2luZm8pLCAkcmVzKSk7DQp9DQpmdW5jdGlvbiBzbWRfeG1sX2lm X25leHQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX3htbF9wZ2luZm87DQoNCgkk cmVzID0gJHNtZF94bWxfcGdpbmZvICYmICRzbWRfeG1sX3BnaW5mb1sne3NtZF94bWxfbmV4 dHBhZ2V9J10gIT0gJyc7DQoJcmV0dXJuIHBhcnNlKEV2YWxFbHNlKHN0cnRyKCR0aGluZywg JHNtZF94bWxfcGdpbmZvKSwgJHJlcykpOw0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToi b3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6MjIyNzE6 IjxkaXYgaWQ9InNtZF9oZWxwIj4KCgk8aDE+c21kX3htbDwvaDE+CgoJPHA+WWFuayBiaXRz IG91dCBvZiBhbnkgaHVuayBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9zcGFuPiBhbmQg cmVmb3JtYXQgaXQgdG8geW91ciBvd24gbmVlZHMuIEdyZWF0IGZvciBwdWxsaW5nIGZlZWQg aW5mbyBpbnRvIHlvdXIgVGV4dHBhdHRlcm4gc2l0ZSwgZm9yIGV4YW1wbGUgZnJvbSBkZWxp Y2lvdXMuY29tLjwvcD4KCgk8aDI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+U3BlY2lm eSB5b3VyIDxzcGFuIGNsYXNzPSJjYXBzIj5YTUw8L3NwYW4+IGRhdGEgZnJvbSBhbnkgPHNw YW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gJiM4MjEyOyBpbnRlcm5hbCBvciBleHRlcm5h bCB0byA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPjwvbGk+CgkJPGxpPlNlbGVjdGl2 ZWx5IGV4dHJhY3QgYW55IGl0ZW1zIGluIHlvdXIgcmVjb3JkIHNldDwvbGk+CgkJPGxpPlVz ZSBhIEZvcm0gb3IgdGhlIHBsdWdpbiBjb250YWluZXIgdG8gb3V0cHV0IGRhdGEgeW91IGhh dmUgZXh0cmFjdGVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImNhcHMiPlhNTDwvc3Bhbj4g dGFnIGF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSBhcyB3ZWxsPC9saT4KCQk8bGk+U3VwcG9y dHMgcGFnaW5hdGlvbiBvZiByZXN1bHRzIHdpdGggbGltaXQvb2Zmc2V0PC9saT4KCTwvdWw+ CgoJPGgyIGlkPSJhdXRob3IiPkF1dGhvcjwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0 ZWZkYXdzb24uY29tL2NvbnRhY3QiPlN0ZWYgRGF3c29uPC9hPi4gRm9yIG90aGVyIHNvZnR3 YXJlIGJ5IG1lLCBvciB0byBtYWtlIGEgZG9uYXRpb24sIHNlZSB0aGUgPGEgaHJlZj0iaHR0 cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPi48L3A+CgoJPGgyIGlk PSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHAgY2xh c3M9InJlcXVpcmVkIj5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiA1 KzwvcD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0 dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMTM4L3NtZF94bWwiPnRleHRwYXR0ZXJu Lm9yZzwvYT4sIG9yIHRoZSBzb2Z0d2FyZSBwYWdlIGFib3ZlLCBwYXN0ZSB0aGUgY29kZSBp bnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVn aW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEg aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMy NzE4Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRo ZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyByZW1v dmUgdGhlIHBsdWdpbiwgc2ltcGx5IGRlbGV0ZSBpdCBmcm9tIHRoZSBBZG1pbi0mZ3Q7UGx1 Z2lucyB0YWIuPC9wPgoKCTxoMj5Vc2FnZTogc21kX3htbDwvaDI+CgoJPHA+UGxhY2UgYSA8 Y29kZT4mbHQ7dHhwOnNtZF94bWwmZ3Q7PC9jb2RlPiB0YWcgd2hlcmUgeW91IHdpc2ggdG8g cHJvY2VzcyA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9zcGFuPiBkYXRhICYjODIxMjsgdGhp cyBjb3VsZCBiZSBmcm9tIGEgZmVlZC4gU2luY2UgdGhpcyBwbHVnaW4gaXMgYmVzdCBleHBs YWluZWQgYnkgZXhhbXBsZSwgYXNzdW1lIHRoZSBmb2xsb3dpbmcgPHNwYW4gY2xhc3M9ImNh cHMiPlhNTDwvc3Bhbj4gZG9jdW1lbnQgaXMgcHJlc2VudGVkIHRvIHRoZSBwbHVnaW46PC9w PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2VtcGxveWVl cyZndDsKICAgJmx0O2VtcGxveWVlJmd0OwogICAgICAmbHQ7bmFtZSBpZD0mcXVvdDt3aWxl X2VfY295b3RlJnF1b3Q7Jmd0O1dpbGUgRS4gQ295b3RlJmx0Oy9uYW1lJmd0OwogICAgICAm bHQ7am9iX3RpdGxlJmd0O1NjaGVtZXImbHQ7L2pvYl90aXRsZSZndDsKICAgICAgJmx0O2Rl cHQmZ3Q7QUNNRSBjb3JwJmx0Oy9kZXB0Jmd0OwogICAgICAmbHQ7cXVhbGl0eSZndDtDdW5u aW5nJmx0Oy9xdWFsaXR5Jmd0OwogICAgICAmbHQ7cXVhbGl0eSZndDtEZXZpb3VzbmVzcyZs dDsvcXVhbGl0eSZndDsKICAgICAgJmx0O3F1YWxpdHkmZ3Q7UGVyc2lzdGVuY2UmbHQ7L3F1 YWxpdHkmZ3Q7CiAgICZsdDsvZW1wbG95ZWUmZ3Q7CiAgICZsdDtlbXBsb3llZSZndDsKICAg ICAgJmx0O25hbWUgaWQ9JnF1b3Q7cm9hZF9ydW5uZXImcXVvdDsmZ3Q7Um9hZCBSdW5uZXIm bHQ7L25hbWUmZ3Q7CiAgICAgICZsdDtqb2JfdGl0bGUmZ3Q7U2VlZCBleHBlcnQmbHQ7L2pv Yl90aXRsZSZndDsKICAgICAgJmx0O2RlcHQmZ3Q7RXZhc2lvbiZsdDsvZGVwdCZndDsKICAg ICAgJmx0O3F1YWxpdHkmZ3Q7U3BlZWQmbHQ7L3F1YWxpdHkmZ3Q7CiAgICAgICZsdDtxdWFs aXR5Jmd0O01lZXAgbWVlcCZsdDsvcXVhbGl0eSZndDsKICAgJmx0Oy9lbXBsb3llZSZndDsK Jmx0Oy9lbXBsb3llZXMmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDM+QXR0cmlidXRlczogPGNv ZGU+c21kX3htbDwvY29kZT48L2gzPgoKCTxwPlVzZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0 ZXMgdG8gY29uZmlndXJlIHRoZSBzbWRfeG1sIHBsdWdpbiAoc2hhZGVkIGF0dHJpYnV0ZXMg YXJlIG1hbmRhdG9yeSkgOjwvcD4KCgk8aDQ+RGF0YSBpbXBvcnQ8L2g0PgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0gbWFuZCI+ZGF0YTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlhNTDwvc3Bhbj4gZGF0YSBzb3VyY2UuIE1vc3Qgb2YgdGhlIHRpbWUgdGhp cyB3aWxsIGJlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4sIHRob3VnaCB5b3Ug Y291bGQgaGFyZC1jb2RlIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9zcGFuPiBkYXRh IG90IHVzZSBhbm90aGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZyBoZXJl IChlLmcuIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+KTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIG1hbmQiPnJlY29yZDwvc3Bhbj4gOiB0aGUgbmFtZSBvZiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlhNTDwvc3Bhbj4gdGFnIHRoYXQgc3Vycm91bmRzIGVh Y2ggcmVjb3JkIG9mIGRhdGEgaW4geW91ciBmZWVkLiBUaHVzIHlvdSB3b3VsZCBuZWVkIDxj b2RlPnJlY29yZD0mcXVvdDtlbXBsb3llZSZxdW90OzwvY29kZT4gaW4gdGhlIGFib3ZlIGRv Y3VtZW50PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0gbWFuZCI+ZmllbGRzPC9zcGFu PiA6IGxpc3Qgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlhNTDwvc3Bhbj4gZmllbGRzIHlvdSB3 YW50IHRvIGV4dHJhY3QgZnJvbSBlYWNoIHJlY29yZC4gRm9yIGV4YW1wbGUsIDxjb2RlPmZp ZWxkcz0mcXVvdDtuYW1lLCBkZXB0JnF1b3Q7PC9jb2RlPi4gRWFjaCB0YWcgeW91IHNwZWNp ZnkgaGVyZSB3aWxsICBjcmVhdGUgYSBzaW1pbGFybHktbmFtZWQgPGEgaHJlZj0iI3JlcHMi PnJlcGxhY2VtZW50IHRhZzwvYT4gdGhhdCB5b3UgbWF5IHVzZSBpbiB5b3VyIGZvcm0vY29u dGFpbmVyIHRvIGRpc3BsYXkgdGhlIHJlbGV2YW50IHBpZWNlIG9mIGRhdGEuIEluIHRoaXMg Y2FzZSwgPGNvZGU+e25hbWV9PC9jb2RlPiBhbmQgPGNvZGU+e2RlcHR9PC9jb2RlPiB3b3Vs ZCBiZSBhdmFpbGFibGUgaW4geW91ciBvdXRwdXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+c2tpcDwvc3Bhbj4gOiBsaXN0IG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5YTUw8L3Nw YW4+IGZpZWxkcyB5b3Ugd2FudCB0byBza2lwIG92ZXIgaW4gZWFjaCByZWNvcmQuIFVzZWZ1 bCBpZiBhIGZpZWxkIHlvdSB3aXNoIHRvIGV4dHJhY3QgaXMgdXNlZCBpbiB0d28gcGxhY2Vz IGluIHRoZSBzYW1lIHJlY29yZC4gU2VlIDxhIGhyZWY9IiNlZzIiPmV4YW1wbGUgMjwvYT4g Zm9yIGEgcHJhY3RpY2FsIGFwcGxpY2F0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmNhY2hlX3RpbWU8L3NwYW4+IDogaWYgc2V0LCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PlhNTDwvc3Bhbj4gZG9jdW1lbnQgaXMgY2FjaGVkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBwcmVmcy4gU3Vic2VxdWVudCBjYWxscyB0byBzbWRfeG1sIChlLmcu IHJlZnJlc2hpbmcgdGhlIHBhZ2UpIHdpbGwgcmVhZCB0aGUgY2FjaGVkIGluZm9ybWF0aW9u IGluc3RlYWQgb2YgaGl0dGluZyB0aGUgPGNvZGU+ZGF0YTwvY29kZT4gPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4sIHRodXMgY3V0dGluZyBkb3duIG9uIG5ldHdvcmsgdHJhZmZp Yy4gQWZ0ZXIgPGNvZGU+Y2FjaGVfdGltZTwvY29kZT4gJiM4MjEyOyBzcGVjaWZpZWQgaW4g c2Vjb25kcyAmIzgyMTI7IGhhcyBlbGFwc2VkLCB0aGUgbmV4dCBwYWdlIHJlZnJlc2ggd2ls bCBjYXVzZSB0aGUgZG9jdW1lbnQgdG8gYmUgZmV0Y2hlZCBmcm9tIHRoZSA8Y29kZT5kYXRh PC9jb2RlPiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBhZ2Fpbi4gWW91IG1heSwg aG93ZXZlciwgZm9yY2UgYSByZWZyZXNoIGZyb20gdGhlIGRhdGEgPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj4gYXQgYW55IHRpbWUgYnkgYWRkaW5nIDxjb2RlPiZhbXA7Zm9yY2Vf cmVhZD0xPC9jb2RlPiB0byB0aGUgYnJvd3NlciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiAoeW91IGNhbiB1c2Ugc21kX3ByZWZhbGl6ZXIgYW5kIHNlYXJjaCBmb3IgJiM4MjE2 O3NtZF94bWwmIzgyMTc7IHRvIGZpbmQgdGhlIGNhY2hlZCBkb2N1bWVudHMgJiM4MjEyOyBl YWNoIGlzIHJlZmVyZW5jZWQgYnkgaXRzIHVuaXF1ZSBJRCk8L2xpPgoJPC91bD4KCgk8aDQ+ TWFuaXB1bGF0aW9uPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj51cHBl cmNhc2U8L3NwYW4+IDogc2V0IHRvIDEgdG8gZm9yY2UgYWxsIDxzcGFuIGNsYXNzPSJjYXBz Ij5YTUw8L3NwYW4+IHRhZyBuYW1lcyB0byBiZSBpbiB1cHBlciBjYXNlLCB0aHVzIHlvdSB3 b3VsZCBoYXZlIHRvIHNwZWNpZnkgPGNvZGU+ZmllbGRzPSZxdW90O05BTUUsIERFUFQmcXVv dDs8L2NvZGU+IGluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseSBleHRyYWN0IHRob3NlIGZpZWxk czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50YXJnZXRfZW5jPC9zcGFuPiA6IGNo YXJhY3RlciBlbmNvZGluZyB0byBhcHBseSB0byB0aGUgcGFyc2VkIDxzcGFuIGNsYXNzPSJj YXBzIj5YTUw8L3NwYW4+IGRhdGEuIENob29zZSBmcm9tIDxjb2RlPklTTy04ODU5LTE8L2Nv ZGU+LCA8Y29kZT5VUy1BU0NJSTwvY29kZT4sIG9yIDxjb2RlPlVURi04PC9jb2RlPi4gRGVm YXVsdDogPGNvZGU+VVRGLTg8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmNvbmNhdDwvc3Bhbj4gOiBhbnkgZHVwbGljYXRlIHRhZ3MgaW4gdGhlIHN0cmVhbSBhcmUg dXN1YWxseSBjb25jYXRlbmF0ZWQgdG9nZXRoZXIuIElmIHlvdSB3aXNoIHRvIHR1cm4gdGhp cyBmZWF0dXJlIG9mZiBzbyB0aGF0IG9ubHkgdGhlIGxhc3QgdGFnJiM4MjE3O3MgY29udGVu dHMgcmVtYWlucywgc2V0IDxjb2RlPmNvbmNhdD0mcXVvdDswJnF1b3Q7PC9jb2RlPi4gRGVm YXVsdDogMTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb252ZXJ0PC9zcGFuPiA6 IGlmIHlvdXIgZGF0YSBzdHJlYW0gY29udGFpbnMgZGF0YSB5b3UgZG9uJiM4MjE3O3Qgd2Fu dCBvciBkYXRhIHRoYXQgeW91IHdpc2ggdG8gdHJhbnNsYXRlIChmb3IgZXhhbXBsZSwgY2hh cmFjdGVyIGVudGl0aWVzKSB5b3UgY2FuIGxpc3QgdGhlbSBoZXJlLiBJdGVtcyBhcmUgc3Bl Y2lmaWVkIGluIHBhaXJzIHNlcGFyYXRlZCBieSA8Y29kZT5wYXJhbV9kZWxpbTwvY29kZT47 IHRoZSBmaXJzdCBpcyB0aGUgaXRlbSB0byBzZWFyY2ggZm9yIGFuZCB0aGUgc2Vjb25kIGlz IGl0cyByZXBsYWNlbWVudC4gRm9yIGV4YW1wbGU6IDxjb2RlPmNvbnZlcnQ9JnF1b3Q7JmFt cDthbXA7IzAzOTomIzM5OyZxdW90OzwvY29kZT4gd291bGQgcmVwbGFjZSBhbGwgb2NjdXJy ZW5jZXMgb2YgPGNvZGU+JmFtcDthbXA7IzAzOTwvY29kZT4gd2l0aCBhbiBhcG9zdHJvcGhl IGNoYXJhY3Rlci4gTm90ZSB0aGF0IHRoZSByZXBsYWNlbWVudHMgYXJlIHBlcmZvcm1lZCBv biB0aGUgcmF3IHN0cmVhbSA8ZW0+YmVmb3JlPC9lbT4gaXQgaXMgcGFyc2VkIGFuZCA8ZW0+ YWZ0ZXI8L2VtPiBpdCBpcyBjYWNoZWQuIEFsc28gdGFrZSBjYXJlIHdoZW4gZGVjb2Rpbmcg ZG91YmxlIHF1b3RlczsgdGhpcyBpcyB0aGUgY29ycmVjdCBtZXRob2Q6IDxjb2RlPmNvbnZl cnQ9JnF1b3Q7JmFtcDthbXA7cXVvdDs6JnF1b3Q7JnF1b3Q7JnF1b3Q7PC9jb2RlPiAobm90 ZSB0aGUgZG91YmxlIHF1b3RlIGlzIGVzY2FwZWQgYnkgcHV0dGluZyA8ZW0+dHdvPC9lbT4g ZG91YmxlIHF1b3RlIGNoYXJhY3RlcnMgaW4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmxpbmtpZnk8L3NwYW4+IDogbGlzdCBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9z cGFuPiB0YWcgbmFtZXMgdGhhdCBtYXkgY29udGFpbiBoeXBlcmxpbmtzLiBBbnkgbGluayBp biB0aGUgZ2l2ZW4gZmllbGRzIHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGh0bWwgYW5jaG9y IGh5cGVybGluazwvbGk+Cgk8L3VsPgoKCTxoND5Gb3JtcyBhbmQgcGFnaW5nPC9oND4KCgk8 dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBGb3JtIHdpdGggd2hpY2ggdG8gcGFyc2UgZWFjaCBy ZWNvcmQuIFlvdSBtYXkgdXNlIHRoZSBwbHVnaW4gYXMgYSBjb250YWluZXIgaW5zdGVhZCBp ZiB5b3UgcHJlZmVyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vmb3JtPC9z cGFuPiA6IG9wdGlvbmFsIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNl ZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgYW55IHBhZ2luZyBuYXZpZ2F0aW9uIGFuZCBz dGF0aXN0aWNzIHN1Y2ggYXMgcGFnZSBudW1iZXIsIHF1YW50aXR5IG9mIHJlY29yZHMgcGVy IHBhZ2UsIHRvdGFsIG51bWJlciBvZiByZWNvcmRzLCBldGMuIFNlZSA8YSBocmVmPSIjcGdy ZXBzIj5wYWdpbmcgcmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+cGFnZXBvczwvc3Bhbj4gOiB0aGUgcG9zaXRpb24gb2YgdGhlIHBhZ2luZyBp bmZvcm1hdGlvbi4gT3B0aW9ucyBhcmUgPGNvZGU+YmVsb3c8L2NvZGU+ICh0aGUgZGVmYXVs dCksIDxjb2RlPmFib3ZlPC9jb2RlPiwgb3IgYm90aCBvZiB0aGVtIHNlcGFyYXRlZCBieSA8 Y29kZT5kZWxpbTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8 L3NwYW4+IDogc2hvdyB0aGlzIG1hbnkgcmVzdWx0cyBwZXIgcGFnZS4gU2V0dGluZyBhIDxj b2RlPmxpbWl0PC9jb2RlPiBzbWFsbGVyIHRoYW4gdGhlIHRvdGFsIG51bWJlciByZWNvcmRz IHN3aXRjaGVzIHBhZ2luZyBvbiBhdXRvbWF0aWNhbGx5IHNvIHlvdSBjYW4gdXNlIHRoZSA8 Y29kZT4mbHQ7dHhwOm9sZGVyIC8mZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDpuZXdl ciAvJmd0OzwvY29kZT4gdGFncyBpbnNpZGUgeW91ciA8Y29kZT5wYWdlZm9ybTwvY29kZT4g dG8gc3RlcCB0aHJvdWdoIGVhY2ggcGFnZSBvZiByZXN1bHRzLiBZb3UgbWF5IGFsc28gY29u c3RydWN0IHlvdXIgb3duIHBhZ2luZyAoc2VlIDxhIGhyZWY9IiNlZzMiPmV4YW1wbGUgMzwv YT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9mZnNldDwvc3Bhbj4gOiBza2lw IHRoaXMgbWFueSByb3dzIGJlZm9yZSBvdXRwdXR0aW5nIHRoZSByZXN1bHRzLiBJZiB5b3Ug c3BlY2lmeSBhIG5lZ2F0aXZlIDxjb2RlPm9mZnNldDwvY29kZT4geW91IHN0YXJ0IHRoYXQg bWFueSByZWNvcmRzIGZyb20gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+cGFnZXZhcjwvc3Bhbj4gOiBpZiB5b3UgYXJlIHB1dHRpbmcg c21kX3htbCBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgc3RhbmRhcmQgYXJ0aWNsZSBsaXN0LCB0 aGUgYnVpbHQtaW4gbmV3ZXIgYW5kIG9sZGVyIHRhZ3Mgd2lsbCBjbGFzaCB3aXRoIHRob3Nl IG9mIHNtZF94bWw7IGNsaWNraW5nIG5leHQvcHJldiB3aWxsIHN0ZXAgdGhyb3VnaCBib3Ro IHlvdXIgcmVzdWx0IHNldCBhbmQgeW91ciBhcnRpY2xlIGxpc3QuIFNwZWNpZnkgYSBkaWZm ZXJlbnQgdmFyaWFibGUgbmFtZSBoZXJlIHNvIHRoZSB0d28gbGlzdHMgY2FuIGJlIG5hdmln YXRlZCBpbmRlcGVuZGVudGx5LCBlLmcuIDxjb2RlPnBhZ2V2YXI9JnF1b3Q7eHBhZ2UmcXVv dDs8L2NvZGU+LiBOb3RlIHRoYXQgaWYgeW91IGNoYW5nZSB0aGlzLCB5b3Ugd2lsbCBoYXZl IHRvIGdlbmVyYXRlIHlvdXIgb3duIGN1c3RvbSBuZXdlci9vbGRlciBsaW5rcyAoc2VlIDxh IGhyZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4pIGFuZCB0aGUgPGEgaHJlZj0iI3NtZF94aWYi PmNvbmRpdGlvbmFsIHRhZ3M8L2E+LiBUaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCB2YWx1ZSA8 Y29kZT5TTURfWE1MX1VOSVFVRV9JRDwvY29kZT4gd2hpY2ggYXNzaWducyB0aGUgdGFncyYj ODIxNzsgdW5pcXVlIElEIGFzIHRoZSBwYWdpbmcgdmFyaWFibGUuIFNlZSA8YSBocmVmPSIj ZWc1Ij5leGFtcGxlIDU8L2E+IGZvciBtb3JlLiBEZWZhdWx0OiA8Y29kZT5wZzwvY29kZT48 L2xpPgoJPC91bD4KCgk8aDQ+VGFnL2NsYXNzL2Zvcm1hdHRpbmcgYXR0cmlidXRlczwvaDQ+ CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUg KFgpSFRNTCB0YWcsIHdpdGhvdXQgYnJhY2tldHMsIHRvIHN1cnJvdW5kIGVhY2ggcmVjb3Jk IHlvdSBvdXRwdXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnLCB3aXRob3V0IGJyYWNrZXRzLCB0byBzdXJyb3VuZCBlYWNo IGZpZWxkIHlvdSBvdXRwdXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8 L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUg dG8gYXBwbHkgdG8gdGhlIDxjb2RlPndyYXB0YWc8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGg0 PlBsdWdpbiBjdXN0b21pc2F0aW9uPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5kZWxpbTwvc3Bhbj4gOiB0aGUgZGVsaW1pdGVyIHRvIHVzZSBiZXR3ZWVuIGl0ZW1z IGluIHRoZSBwbHVnaW4gYXR0cmlidXRlcy4gRGVmYXVsdDogY29tbWE8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+cGFyYW1fZGVsaW08L3NwYW4+IDogdGhlIGRlbGltaXRlciB0 byB1c2UgYmV0d2VlbiBpdGVtcyBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9zcGFuPiBk YXRhIGF0dHJpYnV0ZXMuIERlZmF1bHQ6IGNvbG9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmNvbmNhdF9kZWxpbTwvc3Bhbj4gOiB0aGUgZGVsaW1pdGVyIHRvIHVzZSBiZXR3 ZWVuIGlkZW50aWNhbGx5LW5hbWVkIHRhZ3MgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5Y TUw8L3NwYW4+IGRhdGEgc3RyZWFtLiBEZWZhdWx0OiBzcGFjZTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5oYXNoc2l6ZTwvc3Bhbj4gOiAoc2hvdWxkIG5vdCBiZSBuZWVkZWQp LiBXaGVuIHNwZWNpZnlpbmcgYSA8Y29kZT5jYWNoZV90aW1lPC9jb2RlPiB0aGUgcGx1Z2lu IGFzc2lnbnMgYSAzMi1jaGFyYWN0ZXIsIHVuaXF1ZSByZWZlcmVuY2UgdG8gdGhlIGN1cnJl bnQgc21kX3htbCBiYXNlZCBvbiB5b3VyIGltcG9ydCBhdHRyaWJ1dGVzLiA8Y29kZT5oYXNo c2l6ZTwvY29kZT4gZ292ZXJucyB0aGUgbWVjaGFuaXNtIGZvciBtYWtpbmcgdGhpcyBsb25n IHJlZmVyZW5jZSBzaG9ydGVyLiBJdCBjb21wcmlzZXMgdHdvIG51bWJlcnMgc2VwYXJhdGVk IGJ5IGEgY29sb247IHRoZSBmaXJzdCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSB1bmlxZSBJRCwg dGhlIHNlY29uZCBpcyBob3cgbWFueSBjaGFyYWN0ZXJzIHRvIHNraXAgcGFzdCBlYWNoIHRp bWUgYSBjaGFyYWN0ZXIgaXMgY2hvc2VuLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHVuaXF1ZV9y ZWZlcmVuY2Ugd2FzIDxjb2RlPjBjZjI4NTg3OWJmOWQ2YjgxMjUzOWViNzQ4ZmJjOGY2PC9j b2RlPiB0aGVuIDxjb2RlPmhhc2hzaXplPSZxdW90OzY6NSZxdW90OzwvY29kZT4gd291bGQg bWFrZSBhIDYtY2hhcmFjdGVyIHVuaXF1ZSBJRCB1c2luZyBldmVyeSA1dGggY2hhcmFjdGVy OyBpbiBvdGhlciB3b3JkcyA8Y29kZT4wNWY4OTg8L2NvZGU+LiBJZiBhdCBhbnkgdGltZSwg eW91ICYjODIyMDtmYWxsIG9mZiYjODIyMTsgdGhlIGVuZCBvZiB0aGUgbG9uZyBzdHJpbmcs IHRoZSBwbHVnaW4gd3JhcHMgYmFjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcg YW5kIGNvbnRpbnVlcyBjb3VudGluZy4gRGVmYXVsdDogPGNvZGU+Njo1PC9jb2RlPjwvbGk+ Cgk8L3VsPgoKCTxoMyBpZD0icmVwcyI+UmVwbGFjZW1lbnQgdGFnczwvaDM+CgoJPHA+RWFj aCA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9zcGFuPiBmaWVsZCB5b3UgZXh0cmFjdCBmcm9t IHlvdXIgZGF0YSBzdHJlYW0gaGFzIGFuIGVxdWl2YWxlbnRseS1uYW1lZCByZXBsYWNlbWVu dCB0YWcgYXZhaWxhYmxlIHNvIHlvdSBtYXkgdXNlIGl0IGFueXdoZXJlIHlvdSBsaWtlIGlu IHlvdXIgRm9ybS9jb250YWluZXIuIFNvLCBpZiB5b3UgY2hvc2UgdG8gZXh0cmFjdCA8Y29k ZT5maWVsZHM9JnF1b3Q7bmFtZSwgam9iX3RpdGxlLCBxdWFsaXR5JnF1b3Q7PC9jb2RlPiB5 b3Ugd291bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHJlcGxhY2VtZW50IHRhZ3MgYXZhaWxhYmxl IGR1cmluZyB0aGUgZmlyc3QgcmVjb3JkOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPntuYW1l fTwvY29kZT4gOiBXaWxlIEUuIENveW90ZTwvbGk+CgkJPGxpPjxjb2RlPntuYW1lOmlkfTwv Y29kZT4gOiB3aWxlX2VfY295b3RlPC9saT4KCQk8bGk+PGNvZGU+e2pvYl90aXRsZX08L2Nv ZGU+IDogU2NoZW1lcjwvbGk+CgkJPGxpPjxjb2RlPntxdWFsaXR5fTwvY29kZT4gOiBDdW5u aW5nIERldmlvdXNuZXNzIFBlcnNpc3RlbmNlPC9saT4KCTwvdWw+CgoJPHA+QW5kIGR1cmlu ZyB0aGUgc2Vjb25kIHJlY29yZCwgdGhlIHNhbWUgcmVwbGFjZW1lbnQgdGFnIG5hbWVzIHdv dWxkIHJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgaXRlbXM6PC9wPgoKCTx1bD4KCQk8bGk+PGNv ZGU+e25hbWV9PC9jb2RlPiA6IFJvYWQgUnVubmVyPC9saT4KCQk8bGk+PGNvZGU+e25hbWU6 aWR9PC9jb2RlPiA6IHJvYWRfcnVubmVyPC9saT4KCQk8bGk+PGNvZGU+e2pvYl90aXRsZX08 L2NvZGU+IDogU2VlZCBleHBlcnQ8L2xpPgoJCTxsaT48Y29kZT57cXVhbGl0eX08L2NvZGU+ IDogU3BlZWQgTWVlcCBtZWVwPC9saT4KCTwvdWw+CgoJPHA+Tm90ZSB0aGF0IHRoZSBhdHRy aWJ1dGUgY2FsbGVkIDxjb2RlPmlkPC9jb2RlPiB0aGF0IGlzIHBhcnQgb2YgdGhlIDxjb2Rl PiZsdDtuYW1lJmd0OzwvY29kZT4gPHNwYW4gY2xhc3M9ImNhcHMiPlhNTDwvc3Bhbj4gdGFn IGhhcyBiZWVuIGV4dHJhY3RlZCBhbmQgaXMgbWFkZSBhdmFpbGFibGUgYXV0b21hdGljYWxs eS4gQnkgZGVmYXVsdCwgdGhlIG5hbWVzIG9mIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgYXMg PGNvZGU+e3RhZzphdHRyaWJ1dGV9PC9jb2RlPi4gVGhlIGNvbG9uIGNhbiBiZSBhbHRlcmVk IHVzaW5nIDxjb2RlPnBhcmFtX2RlbGltPC9jb2RlPjsgdGhpcyBpcyBzb21ldGltZXMgbmVj ZXNzYXJ5IGlmIHRoZSB0YWcgbmFtZSBpdHNlbGYgY29udGFpbnMgYSBjb2xvbiAoZGVsaWNp b3VzLmNvbSBkb2VzIHRoaXMpLjwvcD4KCgk8cD5UaGUgPGNvZGU+e3F1YWxpdHl9PC9jb2Rl PiB0YWcgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgZXhhbXBsZSBkb2N1bWVudCBh Ym92ZS4gWW91IGNhbiBpbmZsdWVuY2UgaXRzIG91dHB1dCB1c2luZyB0aGUgPGNvZGU+Y29u Y2F0PC9jb2RlPiBhbmQgPGNvZGU+Y29uY2F0X2RlbGltPC9jb2RlPiBhdHRyaWJ1dGVzLCBl LmcuIHVzaW5nIDxjb2RlPmNvbmNhdF9kZWxpbT0mcXVvdDt8JnF1b3Q7PC9jb2RlPiB3b3Vs ZCByZW5kZXIgdGhlIGZvbGxvd2luZyByZXBsYWNlbWVudCB2YXJpYWJsZSBvbiB0aGUgZmly c3QgcmVjb3JkOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPntxdWFsaXR5fTwvY29kZT4gOiBD dW5uaW5nfERldmlvdXNuZXNzfFBlcnNpc3RlbmNlPC9saT4KCTwvdWw+CgoJPHA+d2hpbGUg PGNvZGU+Y29uY2F0PSZxdW90OzAmcXVvdDs8L2NvZGU+IHdvdWxkIHJlbmRlciB0aGlzOjwv cD4KCgk8dWw+CgkJPGxpPjxjb2RlPntxdWFsaXR5fTwvY29kZT4gOiBQZXJzaXN0ZW5jZTwv bGk+Cgk8L3VsPgoKCTxwPlRoZXJlIGFyZSBhbHNvIHNvbWUgc3BlY2lhbCBzdGF0aXN0aWNh bCB0YWdzIGF2YWlsYWJsZSBpbiBlYWNoIHJlY29yZDo8L3A+CgoJPHVsPgoJCTxsaT48Y29k ZT57c21kX3htbF90b3RhbHJlY3N9PC9jb2RlPiA6IHRoZSB0b3RhbCBudW1iZXIgb2YgcmVj b3JkcyBmb3VuZCBpbiB5b3VyIDxzcGFuIGNsYXNzPSJjYXBzIj5YTUw8L3NwYW4+IGRvY3Vt ZW50PC9saT4KCQk8bGk+PGNvZGU+e3NtZF94bWxfcGFnZXJlY3N9PC9jb2RlPiA6IHRoZSBu dW1iZXIgb2YgcmVjb3JkcyBvbiB0aGlzIHBhZ2UgKGlmIG5vdCB1c2luZyBwYWdpbmcsIHRo aXMgaXMgdGhlIHNhbWUgYXMgYWJvdmUpPC9saT4KCQk8bGk+PGNvZGU+e3NtZF94bWxfcGFn ZXN9PC9jb2RlPiA6IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHBhZ2VzPC9saT4KCQk8bGk+ PGNvZGU+e3NtZF94bWxfdGhpc3BhZ2V9PC9jb2RlPiA6IHRoZSBwYWdlIG51bWJlciBvZiB0 aGUgY3VycmVudGx5IHZpc2libGUgcGFnZTwvbGk+CgkJPGxpPjxjb2RlPntzbWRfeG1sX3Ro aXNyZWN9PC9jb2RlPiA6IHRoZSByZWNvcmQgbnVtYmVyLCBzdGFydGluZyBhdCAxPC9saT4K CQk8bGk+PGNvZGU+e3NtZF94bWxfdGhpc2luZGV4fTwvY29kZT4gOiB0aGUgcmVjb3JkIG51 bWJlciwgc3RhcnRpbmcgYXQgMDwvbGk+CgkJPGxpPjxjb2RlPntzbWRfeG1sX3J1bnJlY308 L2NvZGU+IDogdGhlIHJlY29yZCBudW1iZXIsIHN0YXJ0aW5nIGF0IDEgYW5kIGluY2x1ZGlu ZyBhbnkgb2Zmc2V0PC9saT4KCQk8bGk+PGNvZGU+e3NtZF94bWxfcnVuaW5kZXh9PC9jb2Rl PiA6IHRoZSByZWNvcmQgbnVtYmVyLCBzdGFydGluZyBhdCAwIGFuZCBpbmNsdWRpbmcgYW55 IG9mZnNldDwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0icGdyZXBzIj5QYWdpbmcgcmVwbGFjZW1l bnQgdGFnczwvaDM+CgoJPHA+SW4geW91ciA8Y29kZT5wYWdlZm9ybTwvY29kZT4geW91IGNh biBlbXBsb3kgYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVwbGFjZW1lbnQgdGFncyB0byBidWls ZCB1cCBhIG5hdmlnYXRpb24gc3lzdGVtIGZvciBzdGVwcGluZyB0aHJvdWdoIHlvdXIgPHNw YW4gY2xhc3M9ImNhcHMiPlhNTDwvc3Bhbj4gZG9jdW1lbnQ6PC9wPgoKCTx1bD4KCQk8bGk+ PGNvZGU+e3NtZF94bWxfdG90YWxyZWNzfTwvY29kZT4gOiB0aGUgdG90YWwgbnVtYmVyIG9m IHJlY29yZHMgZm91bmQgaW4geW91ciA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9zcGFuPiBk b2N1bWVudDwvbGk+CgkJPGxpPjxjb2RlPntzbWRfeG1sX3BhZ2VyZWNzfTwvY29kZT4gOiB0 aGUgbnVtYmVyIG9mIHJlY29yZHMgb24gdGhpcyBwYWdlPC9saT4KCQk8bGk+PGNvZGU+e3Nt ZF94bWxfcGFnZXN9PC9jb2RlPiA6IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHBhZ2VzPC9s aT4KCQk8bGk+PGNvZGU+e3NtZF94bWxfcHJldnBhZ2V9PC9jb2RlPiA6IHRoZSBwYWdlIG51 bWJlciBvZiB0aGUgcHJldmlvdXMgcGFnZSAmIzgyMTI7IGVtcHR5IGlmIG9uIGZpcnN0IHBh Z2U8L2xpPgoJCTxsaT48Y29kZT57c21kX3htbF90aGlzcGFnZX08L2NvZGU+IDogdGhlIHBh Z2UgbnVtYmVyIG9mIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48Y29kZT57c21kX3ht bF9uZXh0cGFnZX08L2NvZGU+IDogdGhlIHBhZ2UgbnVtYmVyIG9mIHRoZSBuZXh0IHBhZ2Ug JiM4MjEyOyBlbXB0eSBpZiBvbiBsYXN0IHBhZ2U8L2xpPgoJCTxsaT48Y29kZT57c21kX3ht bF9yZWNfc3RhcnR9PC9jb2RlPiA6IHRoZSByZWNvcmQgbnVtYmVyIG9mIHRoZSBmaXJzdCBy ZWNvcmQgb24gdGhpcyBwYWdlIChjb3VudGVkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSByZWNv cmQgc2V0KTwvbGk+CgkJPGxpPjxjb2RlPntzbWRfeG1sX3JlY19lbmR9PC9jb2RlPiA6IHRo ZSByZWNvcmQgbnVtYmVyIG9mIHRoZSBsYXN0IHJlY29yZCBvbiB0aGlzIHBhZ2UgKGNvdW50 ZWQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHJlY29yZCBzZXQpPC9saT4KCQk8bGk+PGNvZGU+ e3NtZF94bWxfcmVjc19wcmV2fTwvY29kZT4gOiB0aGUgbnVtYmVyIG9mIHJlY29yZHMgb24g dGhlIHByZXZpb3VzIHBhZ2U8L2xpPgoJCTxsaT48Y29kZT57c21kX3htbF9yZWNzX25leHR9 PC9jb2RlPiA6IHRoZSBudW1iZXIgb2YgcmVjb3JkcyBvbiB0aGUgbmV4dCBwYWdlPC9saT4K CQk8bGk+PGNvZGU+e3NtZF94bWxfdW5pcXVlX2lkfTwvY29kZT4gOiB0aGUgdW5pcXVlIHJl ZmVyZW5jZSBudW1iZXIgYXNzaWduZWQgdG8gdGhpcyBzbWRfeG1sIHRhZyAoc2VlIDxhIGhy ZWY9IiNlZzUiPmV4YW1wbGUgNTwvYT4gZm9yIHVzYWdlIG9mIHRoaXMpPC9saT4KCTwvdWw+ CgoJPGgyIGlkPSJzbWRfeGlmIj5Vc2FnZTogPGNvZGU+Jmx0O3R4cDpzbWRfeG1sX2lmX3By ZXYmZ3Q7IC8gJmx0O3R4cDpzbWRfeG1sX2lmX25leHQmZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+ VXNlIHRoZXNlIGNvbnRhaW5lciB0YWdzIHRvIGRldGVybWluZSBpZiB0aGVyZSBpcyBhIG5l eHQgb3IgcHJldmlvdXMgcGFnZSBhbmQgdGFrZSBhY3Rpb24gaWYgc28uIENhbiBvbmx5IGJl IHVzZWQgaW5zaWRlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiwgdGh1cyBhbGwgPGEgaHJlZj0i I3BncmVwcyI+cGFnaW5nIHJlcGxhY2VtZW50IHZhcmlhYmxlczwvYT4gYXJlIGF2YWlsYWJs ZSBpbnNpZGUgdGhlc2UgdGFncy48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF94bWxfaWZfcHJldiZndDtQcmV2aW91cyBwYWdlJmx0 Oy90eHA6c21kX3htbF9pZl9wcmV2Jmd0OwombHQ7dHhwOnNtZF94bWxfaWZfbmV4dCZndDtO ZXh0IHBhZ2UmbHQ7L3R4cDpzbWRfeG1sX2lmX25leHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5UaGUgdGFncyBzdXBwcnQgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7PC9jb2RlPlNlZSA8 YSBocmVmPSIjZWc1Ij5leGFtcGxlIDU8L2E+IGZvciBtb3JlLjwvcD4KCgk8aDI+RXhhbXBs ZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6IGRlbGljaW91cyBsaW5rczwvaDM+ CgoJPHA+U3dhcCA8Y29kZT5yb2FkcnVubmVyPC9jb2RlPiBpbiB0aGlzIGNvZGUgd2l0aCB5 b3VyIGRlbGljaW91cyB1c2VybmFtZSB0byBnZXQgeW91ciBvd24gZmVlZDo8L3A+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF94bWwgZGF0 YT0mcXVvdDtodHRwOi8vZmVlZHMuZGVsaWNpb3VzLmNvbS92Mi9yc3Mvcm9hZHJ1bm5lciZx dW90OwogICAgIHJlY29yZD0mcXVvdDtpdGVtJnF1b3Q7IGZpZWxkcz0mcXVvdDt0aXRsZSwg bGluaywgcHViRGF0ZSwgZGVzY3JpcHRpb24mcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2Rs JnF1b3Q7Jmd0OwogICAmbHQ7ZHQmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDt7bGlua30mcXVvdDsm Z3Q7e3RpdGxlfSZsdDsvYSZndDsmbHQ7L2R0Jmd0OwogICAmbHQ7ZGQmZ3Q7UG9zdGVkOiB7 cHViRGF0ZX0mbHQ7YnIgLyZndDt7ZGVzY3JpcHRpb259Jmx0Oy9kZCZndDsKJmx0Oy90eHA6 c21kX3htbCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI6IHR3 aXR0ZXIgZmVlZDwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF94bWwKICAgICBkYXRhPSZxdW90O2h0dHA6Ly90d2l0dGVyLmNvbS9z dGF0dXNlcy91c2VyX3RpbWVsaW5lL3RleHRwYXR0ZXJuLnhtbCZxdW90OwogICAgIHJlY29y ZD0mcXVvdDtzdGF0dXMmcXVvdDsgZmllbGRzPSZxdW90O2lkLCB0ZXh0LCBjcmVhdGVkX2F0 JnF1b3Q7IHNraXA9JnF1b3Q7dXNlciZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7dWwmcXVv dDsgbGlua2lmeT0mcXVvdDt0ZXh0JnF1b3Q7Jmd0OwogICAmbHQ7bGkmZ3Q7CiAgICAgICZs dDthIGhyZWY9JnF1b3Q7aHR0cDovL3R3aXR0ZXIuY29tL3RleHRwYXR0ZXJuL3N0YXR1c2Vz L3tpZH0mcXVvdDsmZ3Q7CiAgICAgICAgIHtjcmVhdGVkX2F0fQogICAgICAmbHQ7L2EmZ3Q7 CiAgICAgICZsdDticiAvJmd0O3t0ZXh0fQogICAmbHQ7L2xpJmd0OwombHQ7L3R4cDpzbWRf eG1sJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90aWNlIHRoYXQgd2UgPGNvZGU+c2tpcDwv Y29kZT4gdGhlIHdob2xlIDxlbT51c2VyPC9lbT4gYmxvY2sgaW4gdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5YTUw8L3NwYW4+IGRhdGEgc3RyZWFtLiBUaGlzIGlzIGZvciB0d28gcmVhc29u czo8L3A+CgoJPG9sPgoJCTxsaT5pdCBpcyByZWR1bmRhbnQgaW5mb3JtYXRpb24gdGhhdCBh cHBlYXJzIGluIGV2ZXJ5IHJlY29yZCAmIzgyMTI7IHdlIGFscmVhZHkga25vdyB0byB3aGlj aCB1c2VyIHRoZSBmZWVkIGJlbG9uZ3MgYmVjYXVzZSB0aGV5ciYjODIxNztlIGFsbCBmcm9t IHRoZSBzYW1lIHVzZXI8L2xpPgoJCTxsaT48ZW0+Y3JlYXRlZF9hdDwvZW0+IGlzIHVzZWQg aW5zaWRlIHRoZSB1c2VyIGJsb2NrIGFzIHdlbGwgYXMgaW4gdGhlIG91dGVyIHN0YXR1cyBi bG9jayBzbyB3ZSBnZXQgdHdvIGRhdGVzdGFtcHMsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdh bnQgKGlmIHdlIHNpbXBseSB1c2VkIDxjb2RlPmNvbmNhdD0mcXVvdDswJnF1b3Q7PC9jb2Rl PiB0byBvbmx5IGdyYWIgb25lIG9mIHRoZSBjcmVhdGVkX2F0IGVudHJpZXMsIHRoZSBsYXN0 IG9uZSB3b3VsZCBwcmV2YWlsICYjODIxMjsgdGhlIG9uZSBmcm9tIHRoZSB1c2VyIGJsb2Nr KTwvbGk+Cgk8L29sPgoKCTxoMyBpZD0iZWczIj5FeGFtcGxlIDM6IGxpbWl0IGFuZCBwYWdp bmc8L2gzPgoKCTxwPlZpZXdpbmcgdGhlIEkgTG92ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiBmZWVkIDMgcmVjb3JkcyBhdCBhIHRpbWUuIE5vdGUgdGhhdCBzaW5jZSB0aGUg c2l0ZSBpcyBub3QgdXBkYXRlZCBmcmVxdWVudGx5LCB0aGUgY2FjaGVfdGltZSBvZiA4NjQw MCBzZWNvbmRzICgxIGRheSkgaXMgYW1wbGUgdG8gYXZvaWQgaGFtbWVyaW5nIHRoZSBuZXR3 b3JrOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0 eHA6c21kX3htbAogICAgIGRhdGE9JnF1b3Q7aHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29t L3dlbG92ZXR4cCZxdW90OwogICAgIHJlY29yZD0mcXVvdDtpdGVtJnF1b3Q7IGZpZWxkcz0m cXVvdDt0aXRsZSxkZXNjcmlwdGlvbiwgbGluaywgcHViRGF0ZSZxdW90OwogICAgIHdyYXB0 YWc9JnF1b3Q7dWwmcXVvdDsgbGltaXQ9JnF1b3Q7MyZxdW90OyBwYWdlZm9ybT0mcXVvdDtw YWdlciZxdW90OwogICAgIGNhY2hlX3RpbWU9JnF1b3Q7ODY0MDAmcXVvdDsmZ3Q7CiAgICZs dDtsaSZndDsKICAgICAgJmx0O2EgaHJlZj0mcXVvdDt7bGlua30mcXVvdDsmZ3Q7CiAgICAg ICAgIHt0aXRsZX0KICAgICAgJmx0Oy9hJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3B1Ymxp c2hlZCZxdW90OyZndDt7cHViRGF0ZX0mbHQ7L3NwYW4mZ3Q7CiAgICAgICZsdDticiAvJmd0 O3tkZXNjcmlwdGlvbn0KICAgJmx0Oy9saSZndDsKJmx0Oy90eHA6c21kX3htbCZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPkFuZCBpbiBmb3JtIDxjb2RlPnBhZ2VyPC9jb2RlPjo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5QYWdlIHtzbWRfeG1sX3Ro aXNwYWdlfSBvZiB7c21kX3htbF9wYWdlc30KJmx0O3R4cDpuZXdlciZndDtQcmV2aW91cyBw YWdlJmx0Oy90eHA6bmV3ZXImZ3Q7CiZsdDt0eHA6b2xkZXImZ3Q7TmV4dCBwYWdlJmx0Oy90 eHA6b2xkZXImZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JZiB5b3Ugd2FudGVkIHRvIHZpZXcg dGhlIGxhc3QgdGhyZWUgZW50cmllcyBpbiB0aGUgZmVlZCBpbnN0ZWFkIG9mIHRoZSBmaXJz dCB0aHJlZSwgeW91IGNvdWxkIHNldCA8Y29kZT5vZmZzZXQ9JnF1b3Q7LTMmcXVvdDs8L2Nv ZGU+LjwvcD4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0OiB1c2luZyA8Y29kZT5wYWdldmFy PC9jb2RlPjwvaDM+CgoJPHA+QWRkaW5nIDxjb2RlPnBhZ2V2YXI9JnF1b3Q7eG1scGcmcXVv dDs8L2NvZGU+IHRvIGV4YW1wbGUgMyBhbGxvd3MgcGFnaW5nIGluZGVwZW5kZW50bHkgb2Yg dHhwOm9sZGVyIGFuZCB0eHA6bmV3ZXIgdGFncy4gWW91IHRoZW4gbmVlZCB0byBidWlsZCB5 b3VyIG93biBsaW5rcyBpbiB5b3VyIDxjb2RlPnBhZ2VyPC9jb2RlPiBmb3JtLCBsaWtlIHRo aXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+UGFnZSB7 c21kX3htbF90aGlzcGFnZX0gb2Yge3NtZF94bWxfcGFnZXN9IHwKICAgU2hvd2luZyByZWNv cmRzIHtzbWRfeG1sX3JlY19zdGFydH0gdG8ge3NtZF94bWxfcmVjX2VuZH0KICAgb2Yge3Nt ZF94bWxfdG90YWxyZWNzfSB8CiAgJmx0O2EgaHJlZj0mcXVvdDs/eG1scGc9e3NtZF94bWxf cHJldnBhZ2V9JnF1b3Q7Jmd0O1ByZXZpb3VzIHtzbWRfeG1sX3JlY3NfcHJldn0mbHQ7L2Em Z3Q7CiAgJmx0O2EgaHJlZj0mcXVvdDs/eG1scGc9e3NtZF94bWxfbmV4dHBhZ2V9JnF1b3Q7 Jmd0O05leHQge3NtZF94bWxfcmVjc19uZXh0fSZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPlRoYXQgY3JlYXRlcyBsaW5rcyB0byBuZXh0IGFuZCBwcmV2aW91cyByZWNvcmQgc2V0 cyB1c2luZyB0aGUgYXNzaWduZWQgPGNvZGU+cGFnZXZhcjwvY29kZT4gYXMgdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHBhcmFtZXRlci48L3A+CgoJPGgzIGlkPSJlZzUi PkV4YW1wbGUgNTogY29uZGl0aW9uYWwgbmF2aWdhdGlvbiBhbmQgdGhlIHVuaXF1ZSBJRDwv aDM+CgoJPHA+QWdhaW4gdXNpbmcgZXhhbXBsZSAzLCBpZiB5b3UgdXNlZCA8Y29kZT5wYWdl dmFyPSZxdW90O1NNRF9YTUxfVU5JUVVFX0lEJnF1b3Q7PC9jb2RlPiB0aGUgcGFnZXZhciB3 b3VsZCBiZSBhc3NpZ25lZCB0aGUgdmFsdWUgPGNvZGU+ZjI5MGI4PC9jb2RlPi4gSW4gdGhp cyBjYXNlIHdlIGNvdWxkIHVzZSBpdCBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+UGFnZSB7c21kX3htbF90aGlzcGFnZX0gb2Yge3Nt ZF94bWxfcGFnZXN9IHwKICAgU2hvd2luZyByZWNvcmRzIHtzbWRfeG1sX3JlY19zdGFydH0g dG8ge3NtZF94bWxfcmVjX2VuZH0KICAgb2Yge3NtZF94bWxfdG90YWxyZWNzfSB8CiZsdDt0 eHA6c21kX3htbF9pZl9wcmV2Jmd0OwogICZsdDthIGhyZWY9JnF1b3Q7P3tzbWRfeG1sX3Vu aXF1ZV9pZH09e3NtZF94bWxfcHJldnBhZ2V9JnF1b3Q7Jmd0O1ByZXZpb3VzIHtzbWRfeG1s X3JlY3NfcHJldn0mbHQ7L2EmZ3Q7CiZsdDsvdHhwOnNtZF94bWxfaWZfcHJldiZndDsKJmx0 O3R4cDpzbWRfeG1sX2lmX25leHQmZ3Q7CiAgJmx0O2EgaHJlZj0mcXVvdDs/e3NtZF94bWxf dW5pcXVlX2lkfT17c21kX3htbF9uZXh0cGFnZX0mcXVvdDsmZ3Q7TmV4dCB7c21kX3htbF9y ZWNzX25leHR9Jmx0Oy9hJmd0OwombHQ7L3R4cDpzbWRfeG1sX2lmX25leHQmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBjb25kaXRpb25hbCB0 YWdzIHRvIG9ubHkgZGlzcGxheSB0aGUgbmV4dCBhbmQgcHJldmlvdXMgbGlua3MgaWYgdGhl IG5leHQvcHJldiBwYWdlIGV4aXN0cyBhbmQgYWxzbyB0aGF0IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiBsaW5rIGlzIGdlbmVyYXRlZCB1c2luZyA8Y29kZT57c21kX3ht bF91bmlxdWVfaWR9PC9jb2RlPi4gWW91IGNvdWxkIGNvbmNlaXZhYmx5IHVzZSB0aGlzIHNh bWUgcGFnZWZvcm0gb24gbW9yZSB0aGFuIG9uZSA8c3BhbiBjbGFzcz0iY2FwcyI+WE1MPC9z cGFuPiBmZWVkIG9uIHRoZSBzYW1lIHBhZ2UgYW5kIG5hdmlnYXRlIHRoZSB0d28gZmVlZHMg aW5kcGVuZWRlbnRseSwgdGhvdWdoIHlvdSB3b3VsZCBoYXZlIHRvIHdvcmsgb3V0IGEgY2xl dmVyIHdheSBvZiBhbWFsZ2FtYXRpbmcgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHZhcnMgKHBlcmhhcHMgdXNpbmcgdGhlIGFkaV9ncHMgcGx1Z2luKS48L3A+CgoJPGgy IGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4wMiBKYW4g MTAgfCAwLjEgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4wMyBKYW4gMTAgfCAwLjIg fCBBZGRlZCBjYWNoZSBzdXBwb3J0ICh0aGFua3MgdmFyaWFhcykgOyBhZGRlZCA8Y29kZT5s aW1pdDwvY29kZT4sIDxjb2RlPm9mZnNldDwvY29kZT4gYW5kIHBhZ2luZyBmZWF0dXJlcyA7 IGFkZGVkIDxjb2RlPmxpbmtpZnk8L2NvZGU+ICh0aGFua3MgSmFybyk8L2xpPgoJPC91bD4K CjwvZGl2Pgo8IS0tICoqKiBCRUdJTiBQTFVHSU4gQ1NTICoqKiAtLT4KPHN0eWxlIHR5cGU9 InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBj b2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIs IGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRf aGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRl ZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJn aW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAj c21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjogbm9u ZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9 CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsg dGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsg cGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6 IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50 ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBw YWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5z LXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEycHgg QXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAw IDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsg bGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06 IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xv cjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFw eCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGln bjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxw IHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxw IHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJlcXVpcmVkIHtj b2xvcjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7IH0K I3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0gKioq IEVORCBQTFVHSU4gQ1NTICoqKiAtLT4KIjtzOjM6Im1kNSI7czozMjoiMjBhMDMyNjIyNzg0 MWYwZTk3MDAyZmMwNmE2MWM1MmQiO30=