# Name: smd_calendar v0.42c # Type: Client side plugin # Calendar / event / schedule system with events as TXP articles # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfY2FsZW5kYXIiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuNDJjIjtzOjExOiJkZXNjcmlwdGlvbiI7 czo2MjoiQ2FsZW5kYXIgLyBldmVudCAvIHNjaGVkdWxlIHN5c3RlbSB3aXRoIGV2ZW50cyBh cyBUWFAgYXJ0aWNsZXMiO3M6NDoiY29kZSI7czo2MDcxMjoiaWYoICRkYXRlID0gZ3BzKCdk YXRlJykgKSB7DQoJJF9HRVRbJ21vbnRoJ10gPSAkZGF0ZTsNCn0NCmZ1bmN0aW9uIHNtZF9j YWxlbmRhcigkYXR0cywgJHRoaW5nPScnKSB7DQoJZ2xvYmFsICRwcmV0ZXh0LCAkdGhpc2Fy dGljbGUsICR2YXJpYWJsZSwgJHByZWZzLCAkc21kX2NhbF9mbGFnLCAkc21kX2RhdGUsICRz bWRfY2FsaW5mbywgJHNtZF9jYWxfdWNsczsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJ CSd0aW1lJyA9PiAnYW55JywNCgkJJ3NpemUnID0+ICdsYXJnZScsDQoJCSdleHBpcmVkJyA9 PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJJ3NlY3Rpb24nID0+ICcnLA0KCQknYXV0 aG9yJyA9PiAnJywNCgkJJ3JlYWxuYW1lJyA9PiAnJywNCgkJJ3N0YXR1cycgPT4gJ2xpdmUn LA0KCQknc2hvd2FsbCcgPT4gJzAnLA0KCQknc3RhdGljJyA9PiAnJywNCgkJJ2Zvcm0nID0+ ICcnLA0KCQknc3BhbmZvcm0nID0+ICdTTURfU0FNRScsDQoJCSdyZWN1cmZvcm0nID0+ICdT TURfU0FNRScsDQoJCSdjZWxsZm9ybScgPT4gJycsDQoJCSdzdGVwZmllbGQnID0+ICcnLA0K CQknc2tpcGZpZWxkJyA9PiAnJywNCgkJJ29taXRmaWVsZCcgPT4gJycsDQoJCSdleHRyYWZp ZWxkJyA9PiAnJywNCgkJJ2V4dHJhc3RyaWN0JyA9PiAnMCcsDQoJCSdkYXRlZmllbGRzJyA9 PiAnJywNCgkJJ3Nob3dza2lwcGVkJyA9PiAnMCcsDQoJCSdzaG93c3Bhbm5lZCcgPT4gJzEn LA0KCQknaG9saWRheXMnID0+ICcnLA0KCQknaG9saWRheWZsYWdzJyA9PiAnc3RhbmRhcmQn LA0KCQknY2xhc3NsZXZlbHMnID0+ICdjZWxsLCBldmVudCcsDQoJCSdsaW5rcG9zdGVkJyA9 PiAncmVjdXIsIG11bHRpLCBtdWx0aXByZXYsIG11bHRpbGFzdCcsDQoJCSdjbGFzc3ByZWZp eGVzJyA9PiAnc21kX2NhbF8sIHNtZF9jYWxfZXZfJywNCgkJJ2NsYXNzJyA9PiAnJywNCgkJ J3Jvd2NsYXNzJyA9PiAnJywNCgkJJ2NlbGxjbGFzcycgPT4gJycsDQoJCSdlbXB0eWNsYXNz JyA9PiAnZW1wdHknLA0KCQknaXNvd2Vla2NsYXNzJyA9PiAnd2VlaycsDQoJCSduYXZjbGFz cycgPT4gJ25hdnByZXYsIG5hdm5leHQnLA0KCQknbmF2YXJyb3cnID0+ICcmIzYwOywgJiM2 MjsnLA0KCQknbmF2aWQnID0+ICcnLA0KCQknZXZlbnRjbGFzc2VzJyA9PiAnY2F0ZWdvcnkn LA0KCQknZXZlbnR3cmFwdGFnJyA9PiAnc3BhbicsDQoJCSdzZWxlY3QnID0+ICcnLA0KCQkn c2VsZWN0YnRuJyA9PiAnJywNCgkJJ215Y2xhc3MnID0+ICcnLA0KCQknbXl3cmFwdGFnJyA9 PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ3dlZWsnID0+ICcnLA0KCQknbW9udGgnID0+ICcn LA0KCQkneWVhcicgPT4gJycsDQoJCSdyZW1hcCcgPT4gJycsDQoJCSd5ZWFyd2lkdGgnID0+ ICcwJywNCgkJJ2lzb3dlZWtzJyA9PiAnJywNCgkJJ2RheWZvcm1hdCcgPT4gJ0FCQlInLA0K CQknbW9udGhmb3JtYXQnID0+ICdGVUxMJywNCgkJJ2ZpcnN0ZGF5JyA9PiAwLA0KCQknbWFp bnRhaW4nID0+ICdjYWxpZCcsDQoJCSduYW1ldmFsJyA9PiAnJywNCgkJJ2dtdCcgPT4gMCwN CgkJJ2xhbmcnID0+ICcnLA0KCQknZGVidWcnID0+IDAsDQoJKSwgJGF0dHMpKTsNCg0KCSRm dXR1cmUgPSAoICR0aW1lICE9ICdwYXN0JyApID8gdHJ1ZSA6IGZhbHNlOw0KCSRzdGF0dXMg PSAoJHN0YXR1cykgPyAkc3RhdHVzIDogJ2xpdmUnOw0KCSRmaXJzdGRheSA9ICgkaXNvd2Vl a3MgPT0gJycpID8gJGZpcnN0ZGF5IDogMTsNCgkkc3BhbmZvcm0gPSAoJHNwYW5mb3JtID09 ICdTTURfU0FNRScpID8gJGZvcm0gOiAkc3BhbmZvcm07DQoJJHJlY3VyZm9ybSA9ICgkcmVj dXJmb3JtID09ICdTTURfU0FNRScpID8gJGZvcm0gOiAkcmVjdXJmb3JtOw0KCSRjZWxsZm9y bSA9IChlbXB0eSgkY2VsbGZvcm0pKSA/ICcnIDogZmV0Y2hfZm9ybSgkY2VsbGZvcm0pOw0K CSRmcm9udHBhZ2UgPSAoJHNlY3Rpb249PScnICYmICRwcmV0ZXh0WydzJ109PSdkZWZhdWx0 JykgPyB0cnVlIDogZmFsc2U7DQoNCgkkY2xldnMgPSBkb19saXN0KCRjbGFzc2xldmVscyk7 DQoJJGNscyA9IGRvX2xpc3QoJGNsYXNzcHJlZml4ZXMpOw0KCSRjbHNfcGZ4ID0gJGV2Y19w ZnggPSAkY2xzWzBdOw0KCWlmIChjb3VudCgkY2xzKSA+IDEpew0KCQkkZXZjX3BmeCA9ICRj bHNbMV07DQoJfQ0KDQoJJG1haW50YWluID0gZG9fbGlzdCgkbWFpbnRhaW4pOw0KCSRuYXZh cnJvdyA9IGRvX2xpc3QoJG5hdmFycm93KTsNCgkkbmF2cGFyciA9ICRuYXZhcnJvd1swXTsN CgkkbmF2bmFyciA9IChjb3VudCgkbmF2YXJyb3cpID4gMSkgPyAkbmF2YXJyb3dbMV0gOiAk bmF2YXJyb3dbMF07DQoJJG5hdmNsYXNzID0gZG9fbGlzdCgkbmF2Y2xhc3MpOw0KCSRuYXZw Y2xhc3MgPSAkbmF2Y2xhc3NbMF07DQoJJG5hdm5jbGFzcyA9IChjb3VudCgkbmF2Y2xhc3Mp ID4gMSkgPyAkbmF2Y2xhc3NbMV0gOiAkbmF2Y2xhc3NbMF07DQoNCgkkZm9wdHMgPSBhcnJh eSgpOw0KCSRjYXRTUUwgPSAkc2VjU1FMID0gJGF1dGhTUUwgPSAkZnBTUUwgPSAnJzsNCglp ZigkY2F0ZWdvcnkpIHsNCgkJJGZvcHRzWydjJ10gPSAkY2F0ZWdvcnk7DQoJCSRjYXRTUUwg PSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkY2F0ZWdvcnkpKSkpOw0K CQkkY2F0U1FMID0gIiBBTkQgKCBDYXRlZ29yeTEgSU4gKCIuJGNhdFNRTC4iKSBPUiBDYXRl Z29yeTIgSU4gKCIuJGNhdFNRTC4iKSApICI7DQoJfQ0KCWlmKCRzZWN0aW9uKSB7DQoJCSRz ZWNzID0gZG9fbGlzdCgkc2VjdGlvbik7DQoJCSRzbWRfY2FsaW5mb1sncyddID0gJHNlY3Nb MF07DQoJCSRzZWNTUUwgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goJHNlY3MpKSk7 DQoJCSRzZWNTUUwgPSAiIEFORCBTZWN0aW9uIElOICgiLiRzZWNTUUwuIikgIjsNCgl9DQoJ aWYoJHJlYWxuYW1lKSB7DQoJCSRhdXRob3JzID0gc2FmZV9jb2x1bW4oJ25hbWUnLCAndHhw X3VzZXJzJywgJ1JlYWxOYW1lIElOICgnLiBkb1F1b3RlKGpvaW4oIicsJyIsIGRvQXJyYXko ZG9fbGlzdCgkcmVhbG5hbWUpLCAndXJsZGVjb2RlJykpKSAuJyknICk7DQoJCSRhdXRob3Ig PSBqb2luKCcsJywgJGF1dGhvcnMpOw0KCX0NCglpZigkYXV0aG9yKSB7DQoJCSRmb3B0c1sn YXV0aG9yJ10gPSBodG1sZW50aXRpZXMoZ3BzKCdhdXRob3InKSk7DQoJCSRhdXRoU1FMID0g ZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGF1dGhvcikpKSk7DQoJCSRh dXRoU1FMID0gIiBBTkQgQXV0aG9ySUQgSU4gKCIuJGF1dGhTUUwuIikgIjsNCgl9DQoJaWYg KCRmcm9udHBhZ2UgJiYgISRzaG93YWxsKSB7DQoJCSRmcFNRTCA9IGZpbHRlckZyb250UGFn ZSgpOw0KCX0NCgkkc21kX2NhbGluZm9bJ2FydGlkJ10gPSAkdGhpc2FydGljbGVbJ3RoaXNp ZCddOw0KCSRzbWRfY2FsaW5mb1snYXJ0aXRsZSddID0gJHRoaXNhcnRpY2xlWyd1cmxfdGl0 bGUnXTsNCgkkbmFtZXZhbCA9IGRvX2xpc3QoJG5hbWV2YWwpOw0KCWZvcmVhY2ggKCRuYW1l dmFsIGFzICRudikgew0KCQkkbnYgPSBleHBsb2RlKCI9IiwgJG52KTsNCgkJaWYgKCRudlsw XSkgew0KCQkJJGZvcHRzWyRudlswXV0gPSAoKGlzc2V0KCRudlsxXSkpID8gJG52WzFdIDog JycpOw0KCQl9DQoJfQ0KCSRzdGF0dXMgPSBkb19saXN0KCRzdGF0dXMpOw0KCSRzdGF0aSA9 IGFycmF5KCk7DQoJZm9yZWFjaCAoJHN0YXR1cyBhcyAkc3RhdCkgew0KCQlpZiAoZW1wdHko JHN0YXQpKSB7DQoJCQljb250aW51ZTsNCgkJfSBlbHNlIGlmIChpc19udW1lcmljKCRzdGF0 KSkgew0KCQkJJHN0YXRpW10gPSAkc3RhdDsNCgkJfSBlbHNlIHsNCgkJCSRzdGF0aVtdID0g Z2V0U3RhdHVzTnVtKCRzdGF0KTsNCgkJfQ0KCX0NCgkkc3RhdGkgPSAiIFN0YXR1cyBJTiAo Ii5qb2luKCcsJywgJHN0YXRpKS4iKSI7DQoNCgkkZXhwaXJlZCA9ICgkZXhwaXJlZCkgPyAk ZXhwaXJlZCA6ICRwcmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ107DQoJJGV4cGly ZWQgPSAoKCRleHBpcmVkKSA/ICcnIDogJyBBTkQgKG5vdygpIDw9IEV4cGlyZXMgT1IgRXhw aXJlcyA9ICcuTlVMTERBVEVUSU1FLicpJyk7DQoJJGV2ZW50Y2xhc3NlcyA9IGRvX2xpc3Qo JGV2ZW50Y2xhc3Nlcyk7DQoJJGhvbGlkYXlmbGFncyA9IGRvX2xpc3QoJGhvbGlkYXlmbGFn cyk7DQoJJGxpbmtwb3N0ZWQgPSBkb19saXN0KCRsaW5rcG9zdGVkKTsNCgkkZGF0ZWZpZWxk cyA9IGRvX2xpc3QoJGRhdGVmaWVsZHMpOw0KDQoJJGZpbHQgPSAkc3RhdGkgLiAoKCRjYXRl Z29yeSkgPyAkY2F0U1FMIDogJycpIC4gKCgkc2VjdGlvbikgPyAkc2VjU1FMIDogJycpIC4g KCgkYXV0aG9yKSA/ICRhdXRoU1FMIDogJycpIC4gJGZwU1FMOw0KCSRlYXJsaWVzdCA9IHNh ZmVfZmllbGQoJ3VuaXhfdGltZXN0YW1wKFBvc3RlZCkgQVMgdVBvc3RlZCcsICd0ZXh0cGF0 dGVybicsICRmaWx0IC4nIE9SREVSIEJZIFBvc3RlZCBBU0MgTElNSVQgMCwgMScsICRkZWJ1 Zyk7DQoJJGxwID0gc2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAoUG9zdGVkKSBBUyB1UG9z dGVkJywgJ3RleHRwYXR0ZXJuJywgJGZpbHQgLicgT1JERVIgQlkgUG9zdGVkIERFU0MgTElN SVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxtID0gc2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAo TGFzdE1vZCkgQVMgdUxhc3RNb2QnLCAndGV4dHBhdHRlcm4nLCAkZmlsdCAuJyBPUkRFUiBC WSBMYXN0TW9kIERFU0MgTElNSVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxhdGVzdCA9ICgkdGlt ZT09InBhc3QiKSA/IHRpbWUoKSA6ICgoJGxwID4gJGxtKSA/ICRscCA6ICRsbSk7DQoNCgkk eWVhcndpZHRoID0gZG9fbGlzdCgkeWVhcndpZHRoKTsNCgkkeWVhcndpZHRoWzBdID0gKGVt cHR5KCR5ZWFyd2lkdGhbMF0pKSA/IDAgOiAkeWVhcndpZHRoWzBdOw0KCWlmIChjb3VudCgk eWVhcndpZHRoKSA9PSAxKSB7DQoJCSR5ZWFyd2lkdGhbMV0gPSAkeWVhcndpZHRoWzBdOw0K CX0NCgkkdXNlbm93ID0gYXJyYXkoZmFsc2UsZmFsc2UpOw0KCWZvcmVhY2ggKCR5ZWFyd2lk dGggYXMgJHlyaWR4ID0+ICR5cml0ZW0pIHsNCgkJaWYgKHN0cnBvcygkeXJpdGVtLCJjIikg IT09IGZhbHNlKSB7DQoJCQkkeWVhcndpZHRoWyR5cmlkeF0gPSBpbnR2YWwoJHlyaXRlbSk7 DQoJCQkkdXNlbm93WyR5cmlkeF0gPSB0cnVlOw0KCQl9DQoJfQ0KDQoJJHJlbWFwID0gZG9f bGlzdCgkcmVtYXApOw0KCSRkbWFwID0gYXJyYXkoInkiID0+ICJ5IiwgIm0iID0+ICJtIiwg InciID0+ICJ3Iik7DQoJZm9yZWFjaCAoJHJlbWFwIGFzICRkcGFpcikgew0KCQkkZHBhaXIg PSBkb19saXN0KCRkcGFpciwgJzonKTsNCgkJJGRtYXBbJGRwYWlyWzBdXSA9IChpc3NldCgk ZHBhaXJbMV0pKSA/ICRkcGFpclsxXSA6ICRkcGFpclswXTsNCgl9DQoJJGVhcmxpZXN0ID0g ZGF0ZSgiWSIsIHN0cnRvdGltZSgiLSIuJHllYXJ3aWR0aFswXS4iIHllYXIiLCAoIChlbXB0 eSgkZWFybGllc3QpIHx8ICR1c2Vub3dbMF09PXRydWUpID8gdGltZSgpIDogJGVhcmxpZXN0 KSApICk7DQoJJGxhdGVzdCA9IGRhdGUoIlkiLCBzdHJ0b3RpbWUoIisiLiR5ZWFyd2lkdGhb MV0uIiB5ZWFyIiwgKCAoZW1wdHkoJGxhdGVzdCkgfHwgJHVzZW5vd1sxXT09dHJ1ZSkgPyB0 aW1lKCkgOiAkbGF0ZXN0KSApICk7DQoNCgkkaW5fY2FsaWQgPSBncHMoJ2NhbGlkJyk7DQoJ JGluX3llYXIgPSAoZ3BzKCRkbWFwWyJ5Il0pIGFuZCBpc19udW1lcmljKGdwcygkZG1hcFsi eSJdKSkpID8gKGludClncHMoJGRtYXBbInkiXSkgOiAnJzsNCgkkaW5fbW9udGggPSAoZ3Bz KCRkbWFwWyJtIl0pIGFuZCBpc19udW1lcmljKGdwcygkZG1hcFsibSJdKSkpID8gKGludCln cHMoJGRtYXBbIm0iXSkgOiAnJzsNCgkkaW5fd2VlayA9IChncHMoJGRtYXBbInciXSkgYW5k IGlzX251bWVyaWMoZ3BzKCRkbWFwWyJ3Il0pKSkgPyAoaW50KWdwcygkZG1hcFsidyJdKSA6 ICcnOw0KDQoJaWYoJHN0YXRpYykgew0KCQlpZighJHllYXIpIHsgJHllYXIgPSBzYWZlX3N0 cmZ0aW1lKCclWScpOyB9DQoJCWlmKCEkbW9udGgpIHsgJG1vbnRoID0gc2FmZV9zdHJmdGlt ZSgnJW0nKTsgfQ0KCX0gZWxzZSB7DQoJCWlmKCAkaWQgPT0gJGluX2NhbGlkICkgew0KCQkJ JHllYXIgPSAoJGluX3llYXIpID8gJGluX3llYXIgOiAoKCR5ZWFyKSA/ICR5ZWFyIDogc2Fm ZV9zdHJmdGltZSgnJVknKSk7DQoJCQkkbW9udGggPSAoJGluX21vbnRoKSA/ICRpbl9tb250 aCA6ICgoJG1vbnRoKSA/ICRtb250aCA6IHNhZmVfc3RyZnRpbWUoJyVtJykpOw0KCQkJJHdl ZWsgPSAkaW5fd2VlazsNCgkJCWlmICgkd2Vlaykgew0KCQkJCSRtb250aCA9IHNhZmVfc3Ry ZnRpbWUoIiVtIiwgc3RydG90aW1lKCR5ZWFyLiJXIi5zdHJfcGFkKCR3ZWVrLCAyLCAnMCcs IFNUUl9QQURfTEVGVCkpKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmKCEkeWVhcikgeyAk eWVhciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJCWlmKCEkbW9udGgpIHsgJG1vbnRo ID0gc2FmZV9zdHJmdGltZSgnJW0nKTsgfQ0KCQkJaWYoJHdlZWspIHsgJG1vbnRoID0gc2Fm ZV9zdHJmdGltZSgiJW0iLCBzdHJ0b3RpbWUoJHllYXIuIlciLnN0cl9wYWQoJHdlZWssIDIs ICcwJywgU1RSX1BBRF9MRUZUKSkpOyB9DQoJCX0NCgl9DQoJJHNtZF9jYWxpbmZvWydpZCdd ID0gKCRpbl9jYWxpZCkgPyAkaW5fY2FsaWQgOiAkaWQ7DQoJJHNtZF9kYXRlWyd5J10gPSAk eWVhcjsgJHNtZF9kYXRlWydtJ10gPSAkbW9udGg7DQoNCgkkdHNfZmlyc3QgPSBta3RpbWUo MCwgMCwgMCwgJG1vbnRoLCAxLCAkeWVhcik7DQoJJHRzX2xhc3QgPSBta3RpbWUoMjMsIDU5 LCA1OSwgJG1vbnRoLCBkYXRlKCd0JywkdHNfZmlyc3QpLCAkeWVhcik7DQoNCgkkZXh0cmFz cWwgPSAkY2F0U1FMIC4gJHNlY1NRTCAuICRhdXRoU1FMIC4gJGZwU1FMOw0KCXN3aXRjaCgk dGltZSkgew0KCQljYXNlICJhbnkiIDogYnJlYWs7DQoJCWNhc2UgImZ1dHVyZSIgOiAkZXh0 cmFzcWwgLj0gIiBBTkQgUG9zdGVkID4gQ1VSREFURSgpIjsgYnJlYWs7DQoJCWRlZmF1bHQg OiAkZXh0cmFzcWwgLj0gIiBBTkQgUG9zdGVkIDwgQ1VSREFURSgpIjsgYnJlYWs7DQoJfQ0K DQoJJGhvbGlkYXlzID0gZG9fbGlzdCgkaG9saWRheXMpOw0KCSR0eHBob2xzID0gZG9fbGlz dCgkaG9saWRheXNbMF0sICI6Iik7DQoJaWYgKCR0eHBob2xzWzBdID09ICJ0eHB2YXIiKSB7 DQoJCSRob2xpZGF5cyA9IGRvX2xpc3QoJHZhcmlhYmxlWyR0eHBob2xzWzFdXSk7DQoJfQ0K DQoJZm9yZWFjaCAoJGhvbGlkYXlzIGFzICRrZXkgPT4gJHZhbCkgew0KCQlpZiAoZW1wdHko JHZhbCkpIGNvbnRpbnVlOw0KCQkkbnVtcGFydHMgPSBwcmVnX21hdGNoKCcvXihbXGRcd10r KS4/KFtcZFx3XSspLj8oW1xkXHddKyk/JC8nLCAkdmFsLCAkcGFydHMpOw0KDQoJCWlmICgk bnVtcGFydHMpIHsNCgkJCWlmIChjb3VudCgkcGFydHMpID09IDMpIHsNCgkJCQkkcGFydHNb M10gPSAkeWVhcjsNCiAgICAgICAgIH0NCgkJCSR2YWwgPSBzdHJfcGFkKCRwYXJ0c1sxXSwg MiwgJzAnLCBTVFJfUEFEX0xFRlQpLictJy5zdHJfcGFkKCRwYXJ0c1syXSwgMiwgJzAnLCBT VFJfUEFEX0xFRlQpLictJy4kcGFydHNbM107DQoJCX0NCgkJJGhvbGlkYXlzWyRrZXldID0g ZGF0ZSgiZC1NLVkiLCBzdHJ0b3RpbWUoJHZhbCkpOw0KCX0NCg0KCWlmICgkZGVidWcgPiAw ICYmICFlbXB0eSgkaG9saWRheXMpICYmICRob2xpZGF5c1swXSAhPSAnJykgew0KCQllY2hv ICIrKyBIT0xJREFZUyArKyAiOw0KCQlkbXAoJGhvbGlkYXlzKTsNCgl9DQoNCgkkZXZlbnRz ID0gYXJyYXkoKTsNCgkkc3FsMiA9ICRzdGF0aSAuICIgSEFWSU5HIHVQb3N0ZWQgPD0gIi4k dHNfbGFzdCAuICRleHBpcmVkIC4gJGV4dHJhc3FsIC4iIE9SREVSIEJZIFBvc3RlZCBBU0Mi Ow0KCSRncmFiQ29scyA9ICcqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQs IHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLCB1bml4X3RpbWVzdGFtcChF eHBpcmVzKSBhcyB1RXhwaXJlcyc7DQoJJGV2bGlzdCA9IHNhZmVfcm93cygkZ3JhYkNvbHMs ICd0ZXh0cGF0dGVybicsICRzcWwyLCAkZGVidWcpOw0KCWFydGljbGVfcHVzaCgpOw0KDQoJ Zm9yZWFjaCAoJGV2bGlzdCBhcyAkcm93KSB7DQoJCSRpZHggPSAwOw0KCQkkc3RhcnQgPSAo IWVtcHR5KCRkYXRlZmllbGRzWzBdKSAmJiAhZW1wdHkoJHJvd1skZGF0ZWZpZWxkc1swXV0p ICYmICgkc3RkdCA9IHN0cnRvdGltZSgkcm93WyRkYXRlZmllbGRzWzBdXSkpICE9PSBmYWxz ZSkgPyAkc3RkdCA6ICRyb3dbJ3VQb3N0ZWQnXTsNCgkJJHN0YXJ0X2RhdGUgPSBkYXRlKCJZ LW0tZCIsICRzdGFydCk7DQoJCSRyZWFsX2VuZCA9IChpc3NldCgkZGF0ZWZpZWxkc1sxXSkg JiYgIWVtcHR5KCRyb3dbJGRhdGVmaWVsZHNbMV1dKSAmJiAoJGVuZHQgPSBzdHJ0b3RpbWUo JHJvd1skZGF0ZWZpZWxkc1sxXV0pKSAhPT0gZmFsc2UpID8gJGVuZHQgOiAkcm93Wyd1RXhw aXJlcyddOw0KDQoJCWlmICgkcmVhbF9lbmQgIT0gMCAmJiAkcmVhbF9lbmQgPD0gJHN0YXJ0 KSB7DQoJCQkkc3RhcnQgPSAkcm93Wyd1UG9zdGVkJ107DQoJCQkkcmVhbF9lbmQgPSAkcm93 Wyd1RXhwaXJlcyddOw0KCQkJdHJpZ2dlcl9lcnJvcignRXhwaXJ5IGNhbm5vdCBiZSBiZWZv cmUgc3RhcnQgZGF0ZSBpbiAiJy4kcm93WydUaXRsZSddLiciOiBpZ25vcmVkJywgRV9VU0VS X1dBUk5JTkcpOw0KCQl9DQoNCgkJJGVuZCA9ICgkcmVhbF9lbmQgIT0gMCAmJiAkcmVhbF9l bmQgPCAkdHNfbGFzdCkgPyAkcmVhbF9lbmQgOiAkdHNfbGFzdDsNCgkJJHJlYWxfZGlmZiA9 ICgkcmVhbF9lbmQ9PTApID8gMCA6ICRyZWFsX2VuZCAtICRzdGFydDsNCgkJJGZha2VfZGlm ZiA9IHN0cnRvdGltZShkYXRlKCJZLU0tZCIsICRyZWFsX2VuZCkgLiAiIDIzOjU5OjU5Iik7 DQoJCSRkaWZmID0gKCRyZWFsX2VuZD09MCkgPyAwIDogJGZha2VfZGlmZiAtICRzdGFydDsN CgkJJHNtZF9jYWxfZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KDQoJCWlmICgk ZGVidWcgPiAxKSB7DQoJCQllY2hvICcrKyBFVkVOVCBTVEFSVCAvLyBFTkQgLy8gUkVBTCBF TkQgKysnOw0KCQkJZG1wKCRyb3dbJ1RpdGxlJ10pOw0KCQkJZG1wKGRhdGUoJ2QtTS1ZIEg6 aTpzJywgJHN0YXJ0KSAuJyAvLyAnLiBkYXRlKCdkLU0tWSBIOmk6cycsICRlbmQpIC4nIC8v ICcuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHJlYWxfZW5kKSk7DQoJCQlpZiAoJGRlYnVnID4g Mikgew0KCQkJCWRtcCgkcm93KTsNCgkJCX0NCgkJfQ0KDQoJCSRtdWx0aSA9ICgkcmVhbF9l bmQgPiAkc3RhcnQgJiYgJHJlYWxfZW5kID4gJHRzX2ZpcnN0ICYmIChkYXRlKCJkLW0tWSIs ICRyZWFsX2VuZCkgIT0gZGF0ZSgiZC1tLVkiLCAkc3RhcnQpKSkgPyB0cnVlIDogZmFsc2U7 DQoJCSRyZWN1ciA9IChlbXB0eSgkcm93WyRzdGVwZmllbGRdKSkgPyBmYWxzZSA6IHRydWU7 DQoJCSRob2xfaGl0ID0gaW5fYXJyYXkoZGF0ZSgiZC1NLVkiLCAkc3RhcnQpLCAkaG9saWRh eXMpOw0KCQkkZXZjbGFzc2VzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJGV2ZW50Y2xhc3Nl cyBhcyAkZXZjbHMpIHsNCgkJCXN3aXRjaCAoJGV2Y2xzKSB7DQoJCQkJY2FzZSAiIjoNCgkJ CQkJYnJlYWs7DQoJCQkJY2FzZSAiZ2NhdCI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsn YyddKSAmJiAhZW1wdHkoJHByZXRleHRbJ2MnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9 ICRldmNfcGZ4LiRwcmV0ZXh0WydjJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2Fz ZSAiY2F0ZWdvcnkiOg0KCQkJCQlpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnkxJ10pICYmICFl bXB0eSgkcm93WydDYXRlZ29yeTEnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNf cGZ4LiRyb3dbJ0NhdGVnb3J5MSddOw0KCQkJCQl9DQoJCQkJCWlmIChpc3NldCgkcm93WydD YXRlZ29yeTInXSkgJiYgIWVtcHR5KCRyb3dbJ0NhdGVnb3J5MiddKSkgew0KCQkJCQkJJGV2 Y2xhc3Nlc1tdID0gJGV2Y19wZnguJHJvd1snQ2F0ZWdvcnkyJ107DQoJCQkJCX0NCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAic2VjdGlvbiI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsn cyddKSAmJiAhZW1wdHkoJHByZXRleHRbJ3MnXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9 ICRldmNfcGZ4LiRwcmV0ZXh0WydzJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2Fz ZSAiYXV0aG9yIjoNCgkJCQkJaWYgKGlzc2V0KCRwcmV0ZXh0WydhdXRob3InXSkgJiYgIWVt cHR5KCRwcmV0ZXh0WydhdXRob3InXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNf cGZ4LiRwcmV0ZXh0WydhdXRob3InXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQlkZWZh dWx0Og0KCQkJCQlpZiAoaXNzZXQoJHJvd1skZXZjbHNdKSAmJiAhZW1wdHkoJHJvd1skZXZj bHNdKSkgew0KCQkJCQkJJGV2Y2xhc3Nlc1tdID0gJGV2Y19wZnguJHJvd1skZXZjbHNdOw0K CQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJCSRldmNsYXNzZXMgPSAoJGV2Y2xh c3NlcykgPyAnICcuIGpvaW4oJyAnLCAkZXZjbGFzc2VzKSA6ICcnOw0KCQkkaWdub3JlID0g JG9taXQgPSAkY2ZsYWcgPSBhcnJheSgpOw0KDQoJCWlmICgkZGVidWcgPiAxICYmICRldmNs YXNzZXMpIHsNCgkJCWVjaG8gJysrIEVWRU5UIENMQVNTRVMgKysnOw0KCQkJZG1wKCRldmNs YXNzZXMpOw0KCQl9DQoNCgkJaWYgKCRzdGFydCA8ICRlbmQgJiYgJHN0YXJ0ID4gJHRzX2Zp cnN0KSB7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJaWYgKCRzaG93c3Bh bm5lZCAmJiAkbXVsdGkgJiYgISRyZWN1cikgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdt dWx0aWZpcnN0JzsNCgkJCX0NCgkJCWlmICgkcmVjdXIpIHsNCgkJCQkkc21kX2NhbF9mbGFn W10gPSAncmVjdXJmaXJzdCc7DQoJCQl9DQoJCQlpZiAoISRzbWRfY2FsX2ZsYWcpIHsNCgkJ CQkkc21kX2NhbF9mbGFnW10gPSAnc3RhbmRhcmQnOw0KCQkJfQ0KCQkJaWYgKCAoICRob2xf aGl0ICYmICFpbl9hcnJheSgnbXVsdGknLCRob2xpZGF5ZmxhZ3MpICYmIGluX2FycmF5KCdt dWx0aWZpcnN0Jywkc21kX2NhbF9mbGFnKSApIHx8ICggJGhvbF9oaXQgJiYgIWluX2FycmF5 KCdzdGFuZGFyZCcsJGhvbGlkYXlmbGFncykgJiYgaW5fYXJyYXkoJ3N0YW5kYXJkJywkc21k X2NhbF9mbGFnKSApICkgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdjYW5jZWwnOw0KCQkJ fQ0KCQkJZm9yZWFjaCAoJHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgew0KCQkJCSRjZmxhZ1td ID0gJGNsc19wZnguJGl0ZW07DQoJCQl9DQoNCgkJCSRpZHggPSAkc21kX2RhdGVbJ2QnXSA9 IChpbnQpc3RyZnRpbWUoJyVkJywgJHN0YXJ0KTsNCgkJCSRzbWRfZGF0ZVsndyddID0gc3Ry ZnRpbWUoJyVWJywgJHN0YXJ0KTsNCgkJCSRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCcl RycsICRzdGFydCk7DQoJCQkkb3AgPSAoJHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRm b3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogKCgkc2l6ZT09InNtYWxsIikgPyAnJyA6IGhy ZWYoJHJvd1snVGl0bGUnXSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1sn VGl0bGUnXS4nIicpKSApOw0KCQkJJGV2ZW50c1skaWR4XVtdID0gYXJyYXkoJ2V2JyA9PiAk b3AsICdmbGFnJyA9PiAkc21kX2NhbF9mbGFnLCAnY2xhc3NlcycgPT4gKCgkY2ZsYWcpID8g am9pbignICcsYXJyYXlfbWVyZ2UoJGNmbGFnLCAkc21kX2NhbF91Y2xzKSkgOiAnJykuJGV2 Y2xhc3NlcywgJ3Bvc3RlZCcgPT4gJHN0YXJ0X2RhdGUpOw0KCQkJJHNtZF9jYWxfZmxhZyA9 ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQl9DQoNCgkJaWYgKCRza2lw ZmllbGQgJiYgJHJvd1skc2tpcGZpZWxkXSAhPSAnJykgew0KCQkJJGlnbm9yZXMgPSBkb19s aXN0KCRyb3dbJHNraXBmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJGlnbm9yZXMgYXMgJHZhbCkg ew0KCQkJCSRpZ3JuZyA9IHNtZF9leHBhbmRfZGF0ZXJhbmdlKCR2YWwsICRzdGFydCwgJGVu ZCk7DQoJCQkJZm9yZWFjaCAoJGlncm5nIGFzICR0aGV2YWwpIHsNCgkJCQkJJGlnbm9yZVtd ID0gZGF0ZSgiZC1NLVkiLCAkdGhldmFsKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRv bWl0ZmllbGQgJiYgJHJvd1skb21pdGZpZWxkXSAhPSAnJykgew0KCQkJJG9taXRzID0gZG9f bGlzdCgkcm93WyRvbWl0ZmllbGRdKTsNCgkJCWZvcmVhY2ggKCRvbWl0cyBhcyAkdmFsKSB7 DQoJCQkJJG9tcm5nID0gc21kX2V4cGFuZF9kYXRlcmFuZ2UoJHZhbCwgJHN0YXJ0LCAkZW5k KTsNCgkJCQlmb3JlYWNoICgkb21ybmcgYXMgJHRoZXZhbCkgew0KCQkJCQkkb21pdFtdID0g ZGF0ZSgiZC1NLVkiLCAkdGhldmFsKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRkZWJ1 ZyA+IDEgJiYgKCRpZ25vcmUgfHwgJG9taXQpKSB7DQoJCQllY2hvICcrKyBPTUlUVEVEIERB VEVTICsrJzsNCgkJCWRtcCgkb21pdCk7DQoJCQllY2hvICcrKyBDQU5DRUxMRUQgREFURVMg KysnOw0KCQkJZG1wKCRpZ25vcmUpOw0KCQl9DQoNCgkJaWYgKCRzdGVwZmllbGQgJiYgJHJv d1skc3RlcGZpZWxkXSAhPSAnJykgew0KCQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0ZXBm aWVsZF0pOw0KCQkJZm9yZWFjaCAoJGZyZXEgYXMgJGludGVydmFsKSB7DQoJCQkJJG1heF9s b29wID0gOTk5OTk7DQoJCQkJJG9yaWdlcnZhbCA9ICRpbnRlcnZhbDsNCgkJCQkkaW50ZXJ2 YWwgPSBzdHJfcmVwbGFjZSgiP21vbnRoIiwgZGF0ZSgnRicsIGdtbWt0aW1lKDAsMCwwLCRt b250aCwxKSksICRpbnRlcnZhbCk7DQoJCQkJJGludGVydmFsID0gc3RyX3JlcGxhY2UoIj95 ZWFyIiwgJHllYXIsICRpbnRlcnZhbCk7DQoJCQkJaWYgKHN0cnBvcygkaW50ZXJ2YWwsICJs YXN0IikgPT09IDApIHsNCgkJCQkJJGludGVydmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3Ry dG90aW1lKCRpbnRlcnZhbCwgbWt0aW1lKDEyLCAwLCAwLCBkYXRlKCJuIixta3RpbWUoMCww LDAsJG1vbnRoLDEsJHllYXIpKSsxLCAxLCAkeWVhcikpKTsNCgkJCQkJJG1heF9sb29wID0g MTsNCgkJCQl9IGVsc2UgaWYgKHN0cnBvcygkaW50ZXJ2YWwsICJmaXJzdCIpID09PSAwKSB7 DQoJCQkJCSRpbnRlcnZhbCA9IGRhdGUoImwsIEYgalMgWSIsIHN0cnRvdGltZSgkaW50ZXJ2 YWwsIG1rdGltZSgxMiwgMCwgMCwgKCgkbW9udGg+MSkgPyAkbW9udGgtMSA6IDEyKSwgZGF0 ZSgidCIsbWt0aW1lKDAsMCwwLCRtb250aC0xLDEsKCgkbW9udGg9PTEpID8gJHllYXItMTog JHllYXIpKSksICgoJG1vbnRoPT0xKSA/ICR5ZWFyLTE6ICR5ZWFyKSkpKTsNCgkJCQkJJG1h eF9sb29wID0gMTsNCgkJCQl9DQoJCQkJJHRzX2xvb3AgPSAwOw0KCQkJCSR0c19jdXJyID0g JHN0YXJ0Ow0KCQkJCWlmIChzdHJwb3MoJG9yaWdlcnZhbCwgIj9tb250aCIpIHx8IHN0cnBv cygkb3JpZ2VydmFsLCAiP3llYXIiKSkgew0KCQkJCQkkbWF4X2xvb3AgPSAxOw0KCQkJCX0N Cg0KCQkJCXdoaWxlICgkdHNfY3VyciA8ICRlbmQgJiYgJHRzX2xvb3AgPCAkbWF4X2xvb3Ap IHsNCgkJCQkJaWYgKCRtYXhfbG9vcCA9PSAxKSB7DQoJCQkJCQkkdHNfY3VyciA9IHN0cnRv dGltZSgkaW50ZXJ2YWwpOw0KCQkJCQkJJHRzX2N1cnIgPSAoJHRzX2N1cnIgPCAkc3RhcnQg fHwgJHRzX2N1cnIgPiAkZW5kKSA/ICRzdGFydCA6ICR0c19jdXJyOw0KCQkJCQl9IGVsc2Ug ew0KCQkJCQkJJHRzX2N1cnIgPSBzdHJ0b3RpbWUoJGludGVydmFsLCAkdHNfY3Vycik7DQoJ CQkJCX0NCgkJCQkJaWYgKCR0c19jdXJyID09PSBmYWxzZSkgew0KCQkJCQkJJHRzX2xvb3Ar KzsNCgkJCQkJCWJyZWFrOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJaWYgKCRkZWJ1ZyA+IDEp IHsNCgkJCQkJCQlkbXAoIklOVEVSVkFMOiAiLiBkYXRlKCdkLU0tWSBIOmk6cycsICR0c19j dXJyKSk7DQoJCQkJCQl9DQoJCQkJCQlpZiAoJHRzX2N1cnIgPCAkZW5kICYmICR0c19jdXJy ID49ICR0c19maXJzdCAmJiAkdHNfY3VyciAhPSAkc3RhcnQpIHsNCgkJCQkJCQlwb3B1bGF0 ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJCQkJCSRvcCA9ICcnOw0KCQkJCQkJCSRpZHggPSAo aW50KXN0cmZ0aW1lKCclZCcsICR0c19jdXJyKTsNCgkJCQkJCQkkc21kX2NhbF9mbGFnW10g PSAncmVjdXInOw0KCQkJCQkJCSR0aGlzZGF0ZSA9IGRhdGUoImQtTS1ZIiwgJHRzX2N1cnIp Ow0KCQkJCQkJCSRvbWl0X21lID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkb21pdCk7DQoJCQkJ CQkJJHNob3dfbWUgPSAhaW5fYXJyYXkoJHRoaXNkYXRlLCAkaWdub3JlKTsNCgkJCQkJCQkk aG9sX2hpdCA9IGluX2FycmF5KCR0aGlzZGF0ZSwgJGhvbGlkYXlzKTsNCgkJCQkJCQkkc2hv d19ob2wgPSAoJGhvbF9oaXQgJiYgIWluX2FycmF5KCdyZWN1cicsJGhvbGlkYXlmbGFncykg KSA/IGZhbHNlIDogdHJ1ZTsNCgkJCQkJCQlpZiAoICRvbWl0X21lICkgew0KCQkJCQkJCQkk c21kX2NhbF9mbGFnW10gPSAnb21pdCc7DQoJCQkJCQkJfQ0KCQkJCQkJCWlmICggKCEkc2hv d19tZSB8fCAhJHNob3dfaG9sKSAmJiAhJG9taXRfbWUgKSB7DQoJCQkJCQkJCSRzbWRfY2Fs X2ZsYWdbXSA9ICdjYW5jZWwnOw0KCQkJCQkJCX0NCgkJCQkJCQlmb3JlYWNoICgkc21kX2Nh bF9mbGFnIGFzICRpdGVtKSB7DQoJCQkJCQkJCSRjZmxhZ1tdID0gJGNsc19wZnguJGl0ZW07 DQoJCQkJCQkJfQ0KDQoJCQkJCQkJaWYgKCEkb21pdF9tZSkgew0KCQkJCQkJCQlpZiAoKCRz aG93X21lICYmICRzaG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkJCQkkc21k X2RhdGVbJ2QnXSA9ICRpZHg7DQoJCQkJCQkJCQkkc21kX2RhdGVbJ3cnXSA9IHN0cmZ0aW1l KCclVicsICR0c19jdXJyKTsNCgkJCQkJCQkJCSRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1l KCclRycsICR0c19jdXJyKTsNCgkJCQkJCQkJCSRvcCA9ICgkcmVjdXJmb3JtKSA/IHBhcnNl X2Zvcm0oJHJlY3VyZm9ybSkgOiAoKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkc2l6 ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoJHJvd1snVGl0bGUnXSwgcGVybWxpbmt1cmwoJHJv dyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUnXS4nIicpKSApOw0KCQkJCQkJCQl9DQoJCQkJ CQkJfQ0KCQkJCQkJCSR1c2VkID0gYXJyYXkoKTsNCgkJCQkJCQlpZiAoaXNzZXQoJGV2ZW50 c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSAhPSBOVUxMKSB7DQoJCQkJCQkJCWZvcmVhY2gg KCRldmVudHNbJGlkeF0gYXMgJGV2KSB7DQoJCQkJCQkJCQkkdXNlZFtdID0gJGV2Wydldidd Ow0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCWlmIChpc3NldCgkZXZlbnRzWyRpZHhd KSAmJiAkZXZlbnRzWyRpZHhdID09IE5VTEwgfHwgIWluX2FycmF5KCRvcCwgJHVzZWQpKSB7 DQoJCQkJCQkJCSRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZmxhZycg PT4gJHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFy cmF5X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNzZXMsICdw b3N0ZWQnID0+ICRzdGFydF9kYXRlKTsNCgkJCQkJCQl9DQoJCQkJCQkJJHNtZF9jYWxfZmxh ZyA9ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJCQkJfQ0KCQkJCQkJ JHRzX2xvb3ArKzsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfSBlbHNlIGlmICgkc2hvd3Nw YW5uZWQgJiYgJG11bHRpKSB7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJ JGxhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCclZCcsICRlbmQpOw0KCQkJJHJlYWxfbGFzdGRh eSA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHJlYWxfZW5kKTsNCgkJCXdoaWxlICgrKyRpZHgg PD0gJGxhc3RkYXkpIHsNCgkJCQkkb3AgPSAnJzsNCgkJCQkkbXVsdGlmbGFnID0gKCRpZHg9 PSRyZWFsX2xhc3RkYXkpID8gJ211bHRpbGFzdCcgOiAoKCRpZHg9PTEpID8gJ211bHRpcHJl dicgOiAnbXVsdGknKTsNCgkJCQkkc21kX2NhbF9mbGFnW10gPSAkbXVsdGlmbGFnOw0KCQkJ CSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAsIDAsICRtb250aCwgJGlkeCwgJHllYXIpOw0K CQkJCSR0aGlzZGF0ZSA9IGRhdGUoImQtTS1ZIiwgJHRoaXN0aW1lKTsNCgkJCQkkb21pdF9t ZSA9IGluX2FycmF5KCR0aGlzZGF0ZSwgJG9taXQpOw0KCQkJCSRzaG93X21lID0gIWluX2Fy cmF5KCR0aGlzZGF0ZSwgJGlnbm9yZSk7DQoJCQkJJGhvbF9oaXQgPSBpbl9hcnJheSgkdGhp c2RhdGUsICRob2xpZGF5cyk7DQoJCQkJJHNob3dfaG9sID0gKCRob2xfaGl0ICYmICFpbl9h cnJheSgnbXVsdGknLCRob2xpZGF5ZmxhZ3MpICkgPyBmYWxzZSA6IHRydWU7DQoJCQkJaWYg KCAkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ29taXQnOw0KCQkJCX0N CgkJCQlpZiAoICghJHNob3dfbWUgfHwgISRzaG93X2hvbCkgJiYgISRvbWl0X21lICkgew0K CQkJCQkkc21kX2NhbF9mbGFnW10gPSAnY2FuY2VsJzsNCgkJCQl9DQoJCQkJZm9yZWFjaCAo JHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgew0KCQkJCQkkY2ZsYWdbXSA9ICRjbHNfcGZ4LiRp dGVtOw0KCQkJCX0NCgkJCQlpZiAoISRvbWl0X21lKSB7DQoJCQkJCWlmICggKCRzaG93X21l ICYmICRzaG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkkc21kX2RhdGVbJ2Qn XSA9ICRpZHg7DQoJCQkJCQkkc21kX2RhdGVbJ3cnXSA9IHN0cmZ0aW1lKCclVicsICR0aGlz dGltZSk7DQoJCQkJCQkkc21kX2RhdGVbJ2l5J10gPSBzdHJmdGltZSgnJUcnLCAkdGhpc3Rp bWUpOw0KCQkJCQkJJG9wID0gKCRzcGFuZm9ybSkgPyBwYXJzZV9mb3JtKCRzcGFuZm9ybSkg OiAoKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkc2l6ZT09InNtYWxsIikgPyAnJyA6 IGhyZWYoJyZyYXJyOycsIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1Rp dGxlJ10uJyInKSkgKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkZXZlbnRzWyRpZHhdW10gPSBh cnJheSgnZXYnID0+ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9 PiAoKCRjZmxhZykgPyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3Vj bHMpKSA6ICcnKS4kZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7DQoJCQkJ JHNtZF9jYWxfZmxhZyA9ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJ fQ0KCQl9DQoJCWlmICgkZXh0cmFmaWVsZCAmJiAkcm93WyRleHRyYWZpZWxkXSAhPSAnJykg ew0KCQkJJHh0cmEgPSBkb19saXN0KCRyb3dbJGV4dHJhZmllbGRdKTsNCgkJCSRldl9ociA9 IGRhdGUoJ0gnLCAkc3RhcnQpOw0KCQkJJGV2X21uID0gZGF0ZSgnaScsICRzdGFydCk7DQoJ CQkkZXZfc2MgPSBkYXRlKCdzJywgJHN0YXJ0KTsNCgkJCSRzdGFtcG9mZiA9IChpbnQpKDM2 MDAqJGV2X2hyKSArIChpbnQpKDYwKiRldl9tbikgKyAoaW50KSRldl9zYzsNCgkJCWZvcmVh Y2ggKCR4dHJhIGFzICR2YWwpIHsNCgkJCQlpZiAoc3RycG9zKCR2YWwsICIrIikgPT09IGZh bHNlKSB7DQoJCQkJCSRleHJuZyA9IHNtZF9leHBhbmRfZGF0ZXJhbmdlKCR2YWwpOw0KCQkJ CQkkdmFsID0gZGF0ZSgiWS1tLWQiLCAkZXhybmdbMF0pOw0KCQkJCQkkc3BpZHRoID0gY291 bnQoJGV4cm5nKTsNCgkJCQkJJHNwZXggPSAwOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRjaGsg PSAkc2hvd3NwYW5uZWQgJiYgISRyZWN1cjsNCgkJCQkJJHNwaWR0aCA9ICRjaGsgPyBjZWls KCRkaWZmIC8gKDYwKjYwKjI0KSkgOiAxOw0KCQkJCQkkdmFsID0gcnRyaW0oJHZhbCwgJysn KTsNCgkJCQkJJHNwZXggPSAkY2hrID8gMSA6IDA7DQoJCQkJfQ0KDQoJCQkJZm9yICgkamR4 ID0gMTsgJGpkeCA8PSAkc3BpZHRoOyAkamR4KyspIHsNCgkJCQkJJHRtID0gc3RydG90aW1l KCR2YWwgLiAoKCRqZHg9PTEpID8gJycgOiAnKycuKCRqZHgtMSkuJyBkYXlzJykpOw0KCQkJ CQlpZiAoJGRpZmYgPiAwICYmICRqZHggPT0gMSkgew0KCQkJCQkJJGV4cHN0YW1wID0gJHRt KyRzdGFtcG9mZiskcmVhbF9kaWZmOw0KCQkJCQl9DQoJCQkJCSRpZHggPSAkc21kX2RhdGVb J2QnXSA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHRtKTsNCgkJCQkJJGR0ID0gZGF0ZSgiWS1t LWQiLCAkdG0pOw0KCQkJCQkkbHN0ID0gKCRleHRyYXN0cmljdCkgPyAkZW5kIDogJHRzX2xh c3Q7DQoJCQkJCWlmICgkdG0gPCAkbHN0ICYmICR0bSA+PSAkdHNfZmlyc3QpIHsNCgkJCQkJ CSRmYWtlcm93ID0gJHJvdzsNCgkJCQkJCSRmYWtlcm93WydQb3N0ZWQnXSA9IGRhdGUoIlkt bS1kIEg6aTpzIiwgJHRtKyRzdGFtcG9mZik7DQoJCQkJCQkkZmFrZXJvd1sndVBvc3RlZCdd ID0gJHRtKyRzdGFtcG9mZjsNCgkJCQkJCWlmICgkZGlmZj4wKSB7DQoJCQkJCQkJJGZha2Vy b3dbJ0V4cGlyZXMnXSA9IGRhdGUoIlktbS1kIEg6aTpzIiwgJGV4cHN0YW1wKTsNCgkJCQkJ CQkkZmFrZXJvd1sndUV4cGlyZXMnXSA9ICRleHBzdGFtcDsNCgkJCQkJCX0NCg0KCQkJCQkJ cG9wdWxhdGVBcnRpY2xlRGF0YSgkZmFrZXJvdyk7DQoJCQkJCQkkc21kX2NhbF9mbGFnW10g PSAnZXh0cmEnOw0KCQkJCQkJJGNmbGFnW10gPSAkY2xzX3BmeC4nZXh0cmEnOw0KCQkJCQkJ JG9taXRfbWUgPSBmYWxzZTsNCgkJCQkJCSRzaG93X21lID0gJHNob3dfaG9sID0gdHJ1ZTsN CgkJCQkJCWlmICgkc3BleCkgew0KCQkJCQkJCSRtdWx0aWZsYWcgPSAoJGpkeD09MSkgPyAn bXVsdGlmaXJzdCcgOiAoKCRqZHg9PSRzcGlkdGgpID8gJ211bHRpbGFzdCcgOiAoKCRpZHg9 PTEpID8gJ211bHRpcHJldicgOiAnbXVsdGknKSk7DQoJCQkJCQkJJHRoaXNkYXRlID0gZGF0 ZSgiZC1NLVkiLCAkdG0pOw0KCQkJCQkJCSRvbWl0X21lID0gaW5fYXJyYXkoJHRoaXNkYXRl LCAkb21pdCk7DQoJCQkJCQkJJHNob3dfbWUgPSAhaW5fYXJyYXkoJHRoaXNkYXRlLCAkaWdu b3JlKTsNCgkJCQkJCQkkaG9sX2hpdCA9IGluX2FycmF5KCR0aGlzZGF0ZSwgJGhvbGlkYXlz KTsNCgkJCQkJCQkkc2hvd19ob2wgPSAoJGhvbF9oaXQgJiYgIWluX2FycmF5KCdtdWx0aScs JGhvbGlkYXlmbGFncykgKSA/IGZhbHNlIDogdHJ1ZTsNCgkJCQkJCQlpZiAoJG9taXRfbWUp IHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ29taXQnOw0KCQkJCQkJCX0NCgkJCQkJ CQlpZiAoICghJHNob3dfbWUgfHwgISRzaG93X2hvbCkgJiYgISRvbWl0X21lICkgew0KCQkJ CQkJCQkkc21kX2NhbF9mbGFnW10gPSAnY2FuY2VsJzsNCgkJCQkJCQl9DQoJCQkJCQkJJHNt ZF9jYWxfZmxhZ1tdID0gJG11bHRpZmxhZzsNCgkJCQkJCQkkY2ZsYWdbXSA9ICRjbHNfcGZ4 LiRtdWx0aWZsYWc7DQoJCQkJCQl9DQoJCQkJCQlpZiAoISRvbWl0X21lKSB7DQoJCQkJCQkJ aWYgKCAoJHNob3dfbWUgJiYgJHNob3dfaG9sKSB8fCAkc2hvd3NraXBwZWQpIHsNCgkJCQkJ CQkJJHNtZF9kYXRlWyd3J10gPSBzdHJmdGltZSgnJVYnLCAkdG0pOw0KCQkJCQkJCQkkc21k X2RhdGVbJ2l5J10gPSBzdHJmdGltZSgnJUcnLCAkdG0pOw0KCQkJCQkJCQkkb3AgPSAoJHNw ZXggJiYgJHNwYW5mb3JtKSA/IHBhcnNlX2Zvcm0oJHNwYW5mb3JtKSA6ICgoJHRoaW5nKSA/ IHBhcnNlKCR0aGluZykgOiAoKCRmb3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogKCgkc2l6 ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoKCgkc3BleCAmJiAkamR4PjEpID8gJyZyYXJyOycg OiAkcm93WydUaXRsZSddKSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1sn VGl0bGUnXS4nIicpKSApKTsNCgkJCQkJCQkJJGV2ZW50c1skaWR4XVtdID0gYXJyYXkoJ2V2 JyA9PiAkb3AsICdmbGFnJyA9PiAkc21kX2NhbF9mbGFnLCAnY2xhc3NlcycgPT4gKCgkY2Zs YWcpID8gam9pbignICcsYXJyYXlfbWVyZ2UoJGNmbGFnLCAkc21kX2NhbF91Y2xzKSkgOiAn JykuJGV2Y2xhc3NlcywgJ3Bvc3RlZCcgPT4gJGR0KTsNCgkJCQkJCQkJJHNtZF9jYWxfZmxh ZyA9ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJCQkJCX0NCgkJCQkJ CX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglhcnRpY2xlX3BvcCgpOw0KDQoJ aWYgKCRkZWJ1ZyA+IDEgJiYgJGV2ZW50cykgew0KCQllY2hvICcrKyBBTEwgRVZFTlRTICsr JzsNCgkJZG1wKCRldmVudHMpOw0KCX0NCg0KCWlmKCAkc2l6ZSA9PSAic21hbGwiICkgew0K CQkkY2FsZW5kYXIgPSBuZXcgU01EX1NtYWxsX0NhbGVuZGFyKCR5ZWFyLCAkbW9udGgsICRl dmVudHMsICRzZWN0aW9uLCAkY2F0ZWdvcnkpOw0KCX0gZWxzZSB7DQoJCSRjYWxlbmRhciA9 IG5ldyBTTURfQ2FsZW5kYXIoJHllYXIsICRtb250aCwgJGV2ZW50cyk7DQoJfQ0KCSRjYWxl bmRhci0+c2V0V2Vlaygkd2Vlayk7DQoJJGNhbGVuZGFyLT5zZXRHTVQoJGdtdCk7DQoJJGNh bGVuZGFyLT5zZXRMYW5nKCRsYW5nKTsNCgkkY2FsZW5kYXItPnNldENsYXNzTGV2ZWxzKCRj bGV2cyk7DQoJJGNhbGVuZGFyLT5zZXRDbGFzc1ByZWZpeCgkY2xzX3BmeCk7DQoJJGNhbGVu ZGFyLT5zZXRFdmVudFdyYXB0YWcoJGV2ZW50d3JhcHRhZyk7DQoJJGNhbGVuZGFyLT5zZXRD ZWxsRm9ybSgkY2VsbGZvcm0pOw0KCSRjYWxlbmRhci0+c2V0TVlXcmFwdGFnKCRteXdyYXB0 YWcpOw0KCSRjYWxlbmRhci0+c2V0VGFibGVJRCgkaWQpOw0KCSRjYWxlbmRhci0+c2V0VGFi bGVDbGFzcygkY2xhc3MpOw0KCSRjYWxlbmRhci0+c2V0Um93Q2xhc3MoJHJvd2NsYXNzKTsN CgkkY2FsZW5kYXItPnNldENlbGxDbGFzcygkY2VsbGNsYXNzKTsNCgkkY2FsZW5kYXItPnNl dEVtcHR5Q2xhc3MoJGVtcHR5Y2xhc3MpOw0KCSRjYWxlbmRhci0+c2V0SVNPV2Vla0NsYXNz KCRpc293ZWVrY2xhc3MpOw0KCSRjYWxlbmRhci0+c2V0TmF2SW5mbygkbmF2cGNsYXNzLCRu YXZuY2xhc3MsJG5hdnBhcnIsJG5hdm5hcnIsJG5hdmlkKTsNCgkkY2FsZW5kYXItPnNldE5h dktlZXAoJG1haW50YWluKTsNCgkkY2FsZW5kYXItPnNldE1ZQ2xhc3MoJG15Y2xhc3MpOw0K CSRjYWxlbmRhci0+c2V0TmFtZUZvcm1hdCgkZGF5Zm9ybWF0LCAiZCIpOw0KCSRjYWxlbmRh ci0+c2V0TmFtZUZvcm1hdCgkbW9udGhmb3JtYXQsICJtIik7DQoJJGNhbGVuZGFyLT5zZXRS ZW1hcCgkZG1hcCk7DQoJJGNhbGVuZGFyLT5zZXRTaG93SVNPV2VlaygkaXNvd2Vla3MpOw0K CSRjYWxlbmRhci0+c2V0RVllYXIoJGVhcmxpZXN0KTsNCgkkY2FsZW5kYXItPnNldExZZWFy KCRsYXRlc3QpOw0KCSRjYWxlbmRhci0+c2V0RmlsdGVyT3B0cygkZm9wdHMpOw0KCSRjYWxl bmRhci0+c2V0SG9saWRheXMoJGhvbGlkYXlzKTsNCgkkY2FsZW5kYXItPnNldFNlbGVjdG9y cyhkb19saXN0KCRzZWxlY3QpLCAkc2VsZWN0YnRuKTsNCgkkY2FsZW5kYXItPnNldEZpcnN0 RGF5T2ZXZWVrKCRmaXJzdGRheSk7DQoJJGNhbGVuZGFyLT5zZXRMaW5rUG9zdGVkKCRsaW5r cG9zdGVkKTsNCg0KCXJldHVybiAkY2FsZW5kYXItPmRpc3BsYXkoJHN0YXRpYywgJGZ1dHVy ZSk7DQp9DQoNCmNsYXNzIFNNRF9DYWxlbmRhciBleHRlbmRzIFNNRF9SYXdfQ2FsZW5kYXIg ew0KCWZ1bmN0aW9uIFNNRF9DYWxlbmRhcigkeWVhciwkbW9udGgsJGV2ZW50cykgew0KCQkk dGhpcy0+ZXZlbnRzID0gJGV2ZW50czsNCgkJJHRoaXMtPlNNRF9SYXdfQ2FsZW5kYXIoJHll YXIsJG1vbnRoKTsNCgl9DQoNCglmdW5jdGlvbiBkc3BEYXlDZWxsKCR0aGVkYXkpIHsNCgkJ Z2xvYmFsICRzbWRfY2FsX2ZsYWcsICRzbWRfY2FsaW5mbywgJHNtZF9jYWxfdWNscywgJHNt ZF9kYXRlOw0KDQoJCSRzbWRfY2FsX2ZsYWcgPSAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsN CgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXldKTsNCgkJJHRo ZWRhdGUgPSBnbW1rdGltZSgwLCAwLCAwLCAkdGhpcy0+bW9udGgsICR0aGVkYXksICR0aGlz LT55ZWFyKTsNCgkJJGhvbF9oaXQgPSBpbl9hcnJheShkYXRlKCJkLU0tWSIsICR0aGVkYXRl KSwgJHRoaXMtPmhvbGlkYXlzKTsNCgkJaWYgKCRoYXNhcnRpY2xlKSB7DQoJCQkkc21kX2Nh bF9mbGFnW10gPSAnZXZlbnQnOw0KCQl9DQoJCWlmICgkaG9sX2hpdCkgew0KCQkJJHNtZF9j YWxfZmxhZ1tdID0gJ2hvbHMnOw0KCQl9DQoJCSRjZmxhZyA9IGFycmF5KCk7DQoJCWZvcmVh Y2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCSRjZmxhZ1tdID0gJHRoaXMtPmNs c19wZnguJGl0ZW07DQoJCX0NCgkJJHRkY2xhc3MgPSB0cmltKCR0aGlzLT5jZWxsY2xhc3Mg LiAoKCRjZmxhZykgPyAnICcuam9pbignICcsICRjZmxhZykgOiAnJykpOw0KCQkkcnVubmlu Z2NsYXNzID0gKGluX2FycmF5KCJjZWxsIiwgJHRoaXMtPmNsc19sZXYpIHx8IGluX2FycmF5 KCJjZWxscGx1cyIsICR0aGlzLT5jbHNfbGV2KSkgPyBleHBsb2RlKCcgJywgJHRkY2xhc3Mp IDogYXJyYXkoKTsNCgkJaWYoJHRoaXMtPnllYXIgPT0gZGF0ZSgnWScsdGltZSgpK3R6X29m ZnNldCgpICkgYW5kICR0aGlzLT5tb250aCA9PSBkYXRlKCduJyx0aW1lKCkrdHpfb2Zmc2V0 KCkgKSBhbmQgJHRoZWRheSA9PSBkYXRlKCdqJyx0aW1lKCkrdHpfb2Zmc2V0KCkpICkgew0K CQkJJHNtZF9jYWxfZmxhZ1tdID0gJ3RvZGF5JzsNCgkJCSRydW5uaW5nY2xhc3NbXSA9ICR0 aGlzLT5jbHNfcGZ4Lid0b2RheSc7DQoJCX0NCg0KCQkkb3V0ID0gJGZsYWdzID0gYXJyYXko KTsNCgkJJGZvdXQgPSBhcnJheSgnc3RhbmRhcmQnPT5hcnJheSgpLCdyZWN1cic9PmFycmF5 KCksJ3JlY3VyZmlyc3QnPT5hcnJheSgpLCdtdWx0aWZpcnN0Jz0+YXJyYXkoKSwnbXVsdGkn PT5hcnJheSgpLCdtdWx0aXByZXYnPT5hcnJheSgpLCdtdWx0aWxhc3QnPT5hcnJheSgpLCdj YW5jZWwnPT5hcnJheSgpLCdleHRyYSc9PmFycmF5KCkpOw0KCQlpZiAoZW1wdHkoJHRoaXMt PmNlbGxmb3JtKSkgew0KCQkJJG91dFtdID0gaGVkKCR0aGVkYXksNCk7DQoJCX0NCgkJaWYo IGlzc2V0KCR0aGlzLT5ldmVudHNbJHRoZWRheV0pICkgew0KCQkJJGRheXNfZXZlbnRzID0g JHRoaXMtPmV2ZW50c1skdGhlZGF5XTsNCgkJCWZvcmVhY2goJGRheXNfZXZlbnRzIGFzICRl dikgew0KCQkJCSRldmNsYXNzID0gdHJpbSgkZXZbJ2NsYXNzZXMnXSk7DQoJCQkJJGZsYWdz ID0gYXJyYXlfbWVyZ2UoJGZsYWdzLCAkZXZbJ2ZsYWcnXSk7DQoJCQkJaWYgKGluX2FycmF5 KCJjZWxscGx1cyIsICR0aGlzLT5jbHNfbGV2KSkgew0KCQkJCQlmb3JlYWNoIChleHBsb2Rl KCcgJywgJGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJCSRydW5uaW5nY2xhc3NbXT0gJGV2 YzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkY2xzID0gKCRldmNsYXNzICYmIGluX2FycmF5KCJl dmVudCIsICR0aGlzLT5jbHNfbGV2KSkgPyAnIGNsYXNzPSInLnRyaW0oJGV2Y2xhc3MpLici JyA6ICcnOw0KCQkJCSRvcCA9ICgkdGhpcy0+ZXZ3cmFwdGFnKSA/IHRhZygkZXZbJ2V2J10s ICR0aGlzLT5ldndyYXB0YWcsICRjbHMpIDogJGV2WydldiddOw0KCQkJCWZvcmVhY2ggKCRl dlsnZmxhZyddIGFzICRmbGV2KSB7DQoJCQkJCSRmb3V0WyRmbGV2XVtdID0gJG9wOw0KCQkJ CX0NCgkJCQkkb3V0W10gPSAkb3A7DQoJCQl9DQoJCX0NCg0KCQkkcnVubmluZ2NsYXNzID0g YXJyYXlfdW5pcXVlKCRydW5uaW5nY2xhc3MpOw0KCQlpZiAoaW5fYXJyYXkoImNlbGxwbHVz IiwgJHRoaXMtPmNsc19sZXYpKSB7DQoJCQkkc21kX2NhbF9mbGFnID0gYXJyYXlfbWVyZ2Uo JHNtZF9jYWxfZmxhZywgJGZsYWdzKTsNCgkJfQ0KDQoJCWlmICgkdGhpcy0+Y2VsbGZvcm0p IHsNCgkJCSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAsIDAsICR0aGlzLT5tb250aCwgJHRo ZWRheSwgJHRoaXMtPnllYXIpOw0KCQkJJHNtZF9jYWxpbmZvWydpZCddID0gJHRoaXMtPnRh YmxlSUQ7DQoJCQkkc21kX2RhdGVbJ3knXSA9ICR0aGlzLT55ZWFyOw0KCQkJJHNtZF9kYXRl WydtJ10gPSAkdGhpcy0+bW9udGg7DQoJCQkkc21kX2RhdGVbJ3cnXSA9IHN0cmZ0aW1lKCIl ViIsICR0aGlzdGltZSk7DQoJCQkkc21kX2RhdGVbJ2l5J10gPSBzdHJmdGltZSgiJUciLCAk dGhpc3RpbWUpOw0KCQkJJHNtZF9kYXRlWydkJ10gPSAkdGhlZGF5Ow0KCQkJJHJlcHMgPSBh cnJheSgNCgkJCQkne3N0YW5kYXJkfScgPT4gam9pbignJywkZm91dFsnc3RhbmRhcmQnXSks DQoJCQkJJ3tyZWN1cn0nID0+IGpvaW4oJycsJGZvdXRbJ3JlY3VyJ10pLA0KCQkJCSd7cmVj dXJmaXJzdH0nID0+IGpvaW4oJycsJGZvdXRbJ3JlY3VyZmlyc3QnXSksDQoJCQkJJ3thbGxy ZWN1cn0nID0+IGpvaW4oJycsYXJyYXlfbWVyZ2UoJGZvdXRbJ3JlY3VyJ10sICRmb3V0Wydy ZWN1cmZpcnN0J10pKSwNCgkJCQkne211bHRpZmlyc3R9JyA9PiBqb2luKCcnLCRmb3V0Wydt dWx0aWZpcnN0J10pLA0KCQkJCSd7bXVsdGlwcmV2fScgPT4gam9pbignJywkZm91dFsnbXVs dGlwcmV2J10pLA0KCQkJCSd7bXVsdGl9JyA9PiBqb2luKCcnLCRmb3V0WydtdWx0aWxhc3Qn XSksDQoJCQkJJ3ttdWx0aWxhc3R9JyA9PiBqb2luKCcnLCRmb3V0WydtdWx0aWxhc3QnXSks DQoJCQkJJ3thbGxtdWx0aX0nID0+IGpvaW4oJycsYXJyYXlfbWVyZ2UoJGZvdXRbJ211bHRp Zmlyc3QnXSwkZm91dFsnbXVsdGknXSwkZm91dFsnbXVsdGlwcmV2J10sJGZvdXRbJ211bHRp bGFzdCddKSksDQoJCQkJJ3tjYW5jZWx9JyA9PiBqb2luKCcnLCRmb3V0WydjYW5jZWwnXSks DQoJCQkJJ3tleHRyYX0nID0+IGpvaW4oJycsJGZvdXRbJ2V4dHJhJ10pLA0KCQkJCSd7ZXZl bnRzfScgPT4gam9pbignJywkb3V0KSwNCgkJCQkne2RheX0nID0+ICR0aGVkYXksDQoJCQkJ J3t3ZWVrZGF5fScgPT4gKChpc19hcnJheSgkdGhpcy0+ZGF5TmFtZUZtdCkpID8gJHRoaXMt PmRheU5hbWVzW2RhdGUoJ3cnLCR0aGlzdGltZSldIDogc3RyZnRpbWUoJHRoaXMtPmRheU5h bWVGbXQsICR0aGlzdGltZSkpLA0KCQkJCSd7d2Vla30nID0+ICRzbWRfZGF0ZVsndyddLA0K CQkJCSd7bW9udGh9JyA9PiAkdGhpcy0+bW9udGgsDQoJCQkJJ3ttb250aG5hbWV9JyA9PiAo KGlzX2FycmF5KCR0aGlzLT5tdGhOYW1lRm10KSkgPyAkdGhpcy0+bXRoTmFtZXNbZGF0ZSgn bicsJHRoaXN0aW1lKV0gOiBzdHJmdGltZSgkdGhpcy0+bXRoTmFtZUZtdCwgJHRoaXN0aW1l KSksDQoJCQkJJ3t5ZWFyfScgPT4gJHRoaXMtPnllYXIsDQoJCQkJJ3tzaG9ydHllYXJ9JyA9 PiBzdHJmdGltZSgiJXkiLCAkdGhpc3RpbWUpLA0KCQkJCSd7aXNveWVhcn0nID0+ICRzbWRf ZGF0ZVsnaXknXSwNCgkJCQkne3Nob3J0aXNveWVhcn0nID0+IHN0cmZ0aW1lKCIlZyIsICR0 aGlzdGltZSksDQoJCQkpOw0KCQkJJGNlbGxvdXQgPSBwYXJzZShzdHJ0cigkdGhpcy0+Y2Vs bGZvcm0sICRyZXBzKSk7DQoJCQkkY2FycmF5ID0gYXJyYXlfbWVyZ2UoJHJ1bm5pbmdjbGFz cywgJHNtZF9jYWxfdWNscyk7DQoJCQkkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCg0KCQkJ cmV0dXJuIGRvVGFnKCRjZWxsb3V0LCd0ZCcsam9pbignICcsJGNhcnJheSkpOw0KCQl9IGVs c2Ugew0KCQkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJG91dCksJ3RkJyxqb2luKCcgJywkcnVu bmluZ2NsYXNzKSk7DQoJCX0NCgl9DQoNCglmdW5jdGlvbiBkaXNwbGF5KCRzdGF0aWM9ZmFs c2UsICRmdXR1cmU9ZmFsc2UpIHsNCgkJJGlkID0gKCR0aGlzLT50YWJsZUlEKSA/ICcgaWQ9 IicuJHRoaXMtPnRhYmxlSUQuJyInIDogJyc7DQoJCSRjW10gPSAkdGhpcy0+ZHNwSGVhZGVy KCRzdGF0aWMsICRmdXR1cmUpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheU5hbWVzKCk7DQoJ CSRjW10gPSAkdGhpcy0+ZHNwRGF5Q2VsbHMoKTsNCg0KCQlyZXR1cm4gZG9UYWcoam9pbign JywkYyksJ3RhYmxlJywkdGhpcy0+dGFibGVjbGFzcywkaWQpOw0KCX0NCg0KCWZ1bmN0aW9u IGRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKSB7DQoJCWdsb2JhbCAkcHJldGV4dCwgJHNt ZF9jYWxpbmZvOw0KDQoJCSRjdXJybW8gPSAkdGhpcy0+bW9udGg7DQoJCSRjdXJyeXIgPSAk dGhpcy0+eWVhcjsNCgkJJG5hdnBjbGFzcyA9ICR0aGlzLT5nZXROYXZJbmZvKCJwYyIpOw0K CQkkbmF2bmNsYXNzID0gJHRoaXMtPmdldE5hdkluZm8oIm5jIik7DQoJCSRuYXZwYXJyb3cg PSAkdGhpcy0+Z2V0TmF2SW5mbygicGEiKTsNCgkJJG5hdm5hcnJvdyA9ICR0aGlzLT5nZXRO YXZJbmZvKCJuYSIpOw0KCQkkbmF2aWQgPSAkdGhpcy0+Z2V0TmF2SW5mbygiaWQiKTsNCgkJ JG5hdnBjbGFzcyA9ICgkbmF2cGNsYXNzKSA/ICcgY2xhc3M9IicuJG5hdnBjbGFzcy4nIicg OiAnJzsNCgkJJG5hdm5jbGFzcyA9ICgkbmF2bmNsYXNzKSA/ICcgY2xhc3M9IicuJG5hdm5j bGFzcy4nIicgOiAnJzsNCgkJJGZvcHRzID0gJHRoaXMtPmZvcHRzOw0KDQoJCSRzZWMgPSAo aXNzZXQoJHNtZF9jYWxpbmZvWydzJ10pICYmICFlbXB0eSgkc21kX2NhbGluZm9bJ3MnXSkp ID8gJHNtZF9jYWxpbmZvWydzJ10gOiAnJzsNCgkJZm9yZWFjaCAoJHRoaXMtPm1haW50YWlu IGFzICRjb2wpIHsNCgkJCXN3aXRjaCAoJGNvbCkgew0KCQkJCWNhc2UgInNlY3Rpb24iOg0K CQkJCQkkc2VjID0gKCRwcmV0ZXh0WydzJ10pID8gJHByZXRleHRbJ3MnXSA6ICRzZWM7DQoJ CQkJCWJyZWFrOw0KCQkJCWNhc2UgImFydGljbGUiOg0KCQkJCQlpZiAoJHByZXRleHRbJ2lk J10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdpZCcgPT4gJHByZXRleHRbJ2lkJ10pICsg JGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhdGVnb3J5IjoNCgkJ CQkJaWYgKCRwcmV0ZXh0WydjJ10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdjJyA9PiAk cHJldGV4dFsnYyddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNl ICJhdXRob3IiOg0KCQkJCQlpZiAoZ3BzKCdhdXRob3InKSkgew0KCQkJCQkJJGZvcHRzID0g YXJyYXkoJ2F1dGhvcicgPT4gZ3BzKCdhdXRob3InKSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJ CQkJYnJlYWs7DQoJCQkJY2FzZSAicGciOg0KCQkJCQlpZiAoJHByZXRleHRbJ3BnJ10pIHsN CgkJCQkJCSRmb3B0cyA9IGFycmF5KCdwZycgPT4gJHByZXRleHRbJ3BnJ10pICsgJGZvcHRz Ow0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhbGlkIjoNCgkJCQkJaWYgKCR0 aGlzLT50YWJsZUlEKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnY2FsaWQnID0+ICR0aGlz LT50YWJsZUlEKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0 Og0KCQkJCQlpZiAoZ3BzKCRjb2wpKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgkY29sID0+ IGdwcygkY29sKSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0N CgkJJGZvcHRzID0gYXJyYXlfdW5pcXVlKCRmb3B0cyk7DQoJCSRmaWx0ZXJzID0gYXJyYXko KTsNCgkJJGZpbHRlckhpZCA9IGFycmF5KCk7DQoJCWlmICghJHN0YXRpYykgew0KCQkJZm9y ZWFjaCgkZm9wdHMgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGZpbHRlcnNbXSA9ICRrZXku Jz0nLiR2YWw7DQoJCQkJJGZpbHRlckhpZFtdID0gaElucHV0KCRrZXksICR2YWwpOw0KCQkJ fQ0KCQl9DQoJCSRmaWx0ZXJVUkwgPSBqb2luKGEsICRmaWx0ZXJzKTsNCg0KCQlpZiAoJHRo aXMtPnVzZVNlbGVjdG9yKCd3ZWVrJykgJiYgISRzdGF0aWMpIHsNCgkJCSRjdXJyd2sgPSAo JHRoaXMtPndlZWspID8gJHRoaXMtPndlZWsgOiBkYXRlKCdXJywgc3RydG90aW1lKCRjdXJy eXIuIi0iLiRjdXJybW8uIi0xIDEyOjAwIikpOw0KCQkJZm9yICggJGlkeCA9IDE7ICRpZHgg PD0gNTM7ICRpZHgrKyApIHsNCgkJCQkkdGFnYXR0cyA9ICcgdmFsdWU9IicuJGlkeC4nIic7 DQoJCQkJaWYgKCAkaWR4ID09ICRjdXJyd2sgKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJz ZWxlY3RlZCInOw0KCQkJCSRvcHRpb250YWdzW10gPSBkb1RhZygkdGhpcy0+c2VscGZ4Wyd3 ZWVrJ10uc3RyX3BhZCgkaWR4LCAyLCAnMCcsIFNUUl9QQURfTEVGVCkuJHRoaXMtPnNlbHNm eFsnd2VlayddLCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3Rv cltdID0gZG9UYWcoam9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5t eXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0iJy4kdGhpcy0+cmVt YXBbJ3cnXS4nIicuKCgkdGhpcy0+c2VsYnRuKSA/ICcnIDogJyBvbmNoYW5nZT0ic3VibWl0 KCkiJyksICcnKQ0KICAgCQkJCS4gKCgkdGhpcy0+dXNlU2VsZWN0b3IoJ3llYXInKSkgPyAn JyA6IGhJbnB1dCgkdGhpcy0+cmVtYXBbJ3knXSwgJGN1cnJ5cikpOw0KCQkJJG9wdGlvbnRh Z3MgPSBhcnJheSgpOw0KCQl9DQoNCgkJaWYgKCEkdGhpcy0+dXNlU2VsZWN0b3IoJ3dlZWsn KSkgew0KCQkJaWYgKCR0aGlzLT51c2VTZWxlY3RvcignbW9udGgnKSAmJiAhJHN0YXRpYykg ew0KCQkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDEyOyAkaWR4KysgKSB7DQoJCQkJCSR0 YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQkJaWYgKCAkaWR4ID09ICRjdXJy bW8gKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0KCQkJCQkkb3B0aW9u dGFnc1tdID0gZG9UYWcoJHRoaXMtPnNlbHBmeFsnbW9udGgnXS4oKGlzX2FycmF5KCR0aGlz LT5tdGhOYW1lRm10KSkgPyAkdGhpcy0+bXRoTmFtZXNbZGF0ZSgnbicsZ21ta3RpbWUoMTIs MCwwLCRpZHgsMSkpXSA6IHN0cmZ0aW1lKCR0aGlzLT5tdGhOYW1lRm10LCBnbW1rdGltZSgx MiwwLDAsJGlkeCwxKSkpLiR0aGlzLT5zZWxzZnhbJ21vbnRoJ10sICdvcHRpb24nLCAnJywg JHRhZ2F0dHMpOw0KCQkJCX0NCgkJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKGpvaW4obiwgJG9w dGlvbnRhZ3MpLCAnc2VsZWN0JywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMt Pm15Y2xhc3MpLCAnIG5hbWU9IicuJHRoaXMtPnJlbWFwWydtJ10uJyInLigoJHRoaXMtPnNl bGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCgkgICAJCQkJLiAo KCR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpKSA/ICcnIDogaElucHV0KCR0aGlzLT5yZW1h cFsneSddLCAkY3VycnlyKSk7DQoJCQkJJG9wdGlvbnRhZ3MgPSBhcnJheSgpOw0KCQkJfSBl bHNlIHsNCgkJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKCR0aGlzLT5nZXRNb250aE5hbWUoKSwg J3NwYW4nLCAoKCR0aGlzLT5teXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcykpOw0K CQkJfQ0KCQl9DQoNCgkJJHkwID0gJHRoaXMtPmV5cjsNCgkJJHkxID0gJHRoaXMtPmx5cjsN CgkJaWYgKCR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpICYmICgkeTAgIT0gJHkxKSAmJiAh JHN0YXRpYykgew0KCQkJZm9yICggJGlkeCA9ICR5MDsgJGlkeCA8PSAkeTE7ICRpZHgrKyAp IHsNCgkJCQkkdGFnYXR0cyA9ICcgdmFsdWU9IicuJGlkeC4nIic7DQoJCQkJaWYgKCAkaWR4 ID09ICRjdXJyeXIgKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0KCQkJ CSRvcHRpb250YWdzW10gPSBkb1RhZygkdGhpcy0+c2VscGZ4Wyd5ZWFyJ10uJGlkeC4kdGhp cy0+c2Vsc2Z4Wyd5ZWFyJ10sICdvcHRpb24nLCAnJywgJHRhZ2F0dHMpOw0KCQkJfQ0KCQkJ JHNlbGVjdG9yW10gPSBkb1RhZyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcsICgo JHRoaXMtPm15d3JhcHRhZykgPyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSInLiR0 aGlzLT5yZW1hcFsneSddLiciJy4oKCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hhbmdl PSJzdWJtaXQoKSInKSwgJycpDQoJCQkJCS4gKCgkdGhpcy0+dXNlU2VsZWN0b3IoJ21vbnRo JykgfHwgJHRoaXMtPnVzZVNlbGVjdG9yKCd3ZWVrJykpID8gJycgOiBoSW5wdXQoJHRoaXMt PnJlbWFwWydtJ10sICRjdXJybW8pKTsNCgkJfSBlbHNlIHsNCgkJCSRzZWxlY3RvcltdID0g ZG9UYWcoJGN1cnJ5ciwgJ3NwYW4nLCAoKCR0aGlzLT5teXdyYXB0YWcpID8gJycgOiAkdGhp cy0+bXljbGFzcykpOw0KCQl9DQoNCgkJJGV4dHJhcyA9ICcnOw0KCQlpZiAoISRzdGF0aWMg JiYgKCAkdGhpcy0+dXNlU2VsZWN0b3IoJ21vbnRoJykgfHwgJHRoaXMtPnVzZVNlbGVjdG9y KCd5ZWFyJykgKSkgew0KCQkJaWYgKCR0aGlzLT5zZWxidG4pIHsNCgkJCQkkZXh0cmFzIC49 IGRvVGFnKCcnLCAnaW5wdXQnLCAnc21kX2NhbF9pbnB1dCcsICcgdHlwZT0ic3VibWl0IiB2 YWx1ZT0iJy4kdGhpcy0+c2VsYnRuLiciJyk7DQoJCQl9DQoJCQkkZXh0cmFzIC49IGpvaW4o JycsICRmaWx0ZXJIaWQpOw0KCQl9DQoNCgkJJHVybHAgPSBwYXJzZV91cmwoJHByZXRleHRb J3JlcXVlc3RfdXJpJ10pOw0KCQkkc2VsZWN0b3IgPSAnPGZvcm0gYWN0aW9uPSInLiR1cmxw WydwYXRoJ10uJyIgbWV0aG9kPSJnZXQiJy4oKCRuYXZpZCkgPyAnIGlkPSInLiRuYXZpZC4n IicgOiAnJykuJz4nLmRvVGFnKGpvaW4oc3AsICRzZWxlY3RvcikuJGV4dHJhcywgJHRoaXMt Pm15d3JhcHRhZywgJHRoaXMtPm15Y2xhc3MpLic8L2Zvcm0+JzsNCg0KCQkkbmF2X2JhY2tf bGluayA9ICR0aGlzLT5uYXZpZ2F0aW9uKCRjdXJyeXIsICRjdXJybW8sICctJywgJGZpbHRl clVSTCwgJHNlYyk7DQoJCSRuYXZfZndkX2xpbmsgID0gJHRoaXMtPm5hdmlnYXRpb24oJGN1 cnJ5ciwgJGN1cnJtbywgJysnLCAkZmlsdGVyVVJMLCAkc2VjKTsNCg0KCQkkbmF2X2JhY2sg PSAoISRzdGF0aWMgJiYgJG5hdl9iYWNrX2xpbmspID8gJzxhIGhyZWY9IicuJG5hdl9iYWNr X2xpbmsuJyInLiRuYXZwY2xhc3MuJz4nLiRuYXZwYXJyb3cuJzwvYT4nIDogJyZuYnNwOyc7 DQoJCSRuYXZfZndkICA9ICghJHN0YXRpYyAmJiAkZnV0dXJlICYmICRuYXZfZndkX2xpbmsp ID8gJzxhIGhyZWY9IicuJG5hdl9md2RfbGluay4nIicuJG5hdm5jbGFzcy4nPicuJG5hdm5h cnJvdy4nPC9hPicgOiAnJm5ic3A7JzsNCg0KCQkkY1tdID0gZG9UYWcoJG5hdl9iYWNrLCd0 aCcpOw0KCQkkY1tdID0gJzx0aCBjb2xzcGFuPSInLigoJHRoaXMtPnNob3dJU09XZWVrKSA/ IDYgOiA1KS4nIj4nLiRzZWxlY3Rvci4nPC90aD4nOw0KCQkkY1tdID0gZG9UYWcoJG5hdl9m d2QsJ3RoJyk7DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0cicsICdzbWRfY2Fs X25hdnJvdycpOw0KCX0NCg0KCWZ1bmN0aW9uIG5hdmlnYXRpb24oJHllYXIsJG1vbnRoLCRk aXJlY3Rpb24sJGZsdCwkc2VjPScnKSB7DQoJCWdsb2JhbCAkcGVybWxpbmtfbW9kZTsNCg0K CQlpZigkZGlyZWN0aW9uID09ICctJykgew0KCQkJaWYoJG1vbnRoIC0gMSA8IDEpIHsNCgkJ CQkkbW9udGggPSAxMjsNCgkJCQkkeWVhciAtPSAxOw0KCQkJfSBlbHNlIHsNCgkJCQkkbW9u dGggLT0gMTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmKCRtb250aCArIDEgPiAxMikgew0K CQkJCSRtb250aCA9IDE7DQoJCQkJJHllYXIgKz0gMTsNCgkJCX0gZWxzZSB7DQoJCQkJJG1v bnRoICs9IDE7DQoJCQl9DQoJCX0NCg0KCQlpZiAoJHllYXIgPCAkdGhpcy0+ZXlyIHx8ICR5 ZWFyID4gJHRoaXMtPmx5cikgew0KCQkJcmV0dXJuICcnOw0KCQl9DQoJCSRmbHQgPSAoJGZs dCkgPyBhLiRmbHQgOiAnJzsNCgkJaWYoJHBlcm1saW5rX21vZGUgIT0gJ21lc3N5Jykgew0K CQkJJHVybCA9ICcnOw0KCQkJaWYgKCRzZWMgJiYgc3RycG9zKCRwZXJtbGlua19tb2RlLCAn c2VjdGlvbicgIT09IGZhbHNlKSkgew0KCQkJCSR1cmwgPSBodS4kc2VjLicvJy4oKCRwZXJt bGlua19tb2RlPT0nc2VjdGlvbl9pZF90aXRsZScpID8gJHNtZF9jYWxpbmZvWydhcnRpZCdd IDogJycpLiRzbWRfY2FsaW5mb1snYXJ0aXRsZSddOw0KCQkJfQ0KCQkJcmV0dXJuICR1cmwu Ij8iLiR0aGlzLT5yZW1hcFsnbSddLiI9JG1vbnRoIi5hLiR0aGlzLT5yZW1hcFsneSddLiI9 JHllYXIiLiRmbHQ7DQoJCX0gZWxzZSB7DQoJCQkkb3V0ID0gbWFrZU91dCgnaWQnLCdzJywn YycsJ3EnLCdwZycsJ3AnLCdtb250aCcpOw0KCQkJJG91dFsncyddID0gKCRzZWMpID8gJHNl YyA6ICRvdXRbJ3MnXTsNCgkJCSRyID0gJz8nOw0KCQkJZm9yZWFjaCgkb3V0IGFzICRrZXkg PT4gJHZhbCApIHsNCgkJCQkkciAuPSAoJHZhbCkgPyAiJGtleT0kdmFsIi5hIDogJyc7DQoJ CQl9DQoJCQlyZXR1cm4gJHIuJHRoaXMtPnJlbWFwWydtJ10uIj0kbW9udGgiLmEuJHRoaXMt PnJlbWFwWyd5J10uIj0keWVhciIuJGZsdDsNCgkJfQ0KCX0NCn0NCg0KY2xhc3MgU01EX1Nt YWxsX0NhbGVuZGFyIGV4dGVuZHMgU01EX0NhbGVuZGFyIHsNCgl2YXIgJHNlY3Rpb24gPSAn JzsNCgl2YXIgJGNhdGVnb3J5ID0gJyc7DQoJZnVuY3Rpb24gU01EX1NtYWxsX0NhbGVuZGFy KCR5ZWFyLCRtb250aCwkZXZlbnRzLCRzZWN0aW9uLCRjYXRlZ29yeSkgew0KCQkkdGhpcy0+ c2VjdGlvbiA9ICRzZWN0aW9uOw0KCQkkdGhpcy0+Y2F0ZWdvcnkgPSAkY2F0ZWdvcnk7DQoJ CSR0aGlzLT5TTURfQ2FsZW5kYXIoJHllYXIsJG1vbnRoLCRldmVudHMpOw0KCX0NCg0KCWZ1 bmN0aW9uIGRzcERheUNlbGwoJHRoZWRheSkgew0KCQlnbG9iYWwgJHBlcm1saW5rX21vZGU7 DQoJCSRoYXNhcnRpY2xlID0gaXNzZXQoJHRoaXMtPmV2ZW50c1skdGhlZGF5XSk7DQoJCSRj bGFzcyA9IGFycmF5KCk7DQoJCSR0ZGNsYXNzID0gJHRoaXMtPmNlbGxjbGFzcy4nICcuICgo JGhhc2FydGljbGUpID8gJHRoaXMtPmNsc19wZnguJ2V2ZW50JyA6ICcnKTsNCgkJaWYgKHRy aW0oJHRkY2xhc3MpICE9ICIiKSB7DQoJCQkkY2xhc3NbXSA9ICR0ZGNsYXNzOw0KCQl9DQoJ CWlmICgoaW5fYXJyYXkoIGRhdGUoJ2QtTS1ZJywgZ21ta3RpbWUoIDAsIDAsIDAsICR0aGlz LT5tb250aCwgJHRoZWRheSwgJHRoaXMtPnllYXIpICksICR0aGlzLT5ob2xpZGF5cykpICkg ew0KCQkJJGNsYXNzW10gPSAkdGhpcy0+Y2xzX3BmeC4naG9scyc7DQoJCX0NCgkJaWYoJHRo aXMtPnllYXIgPT0gZGF0ZSgnWScsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGlzLT5t b250aCA9PSBkYXRlKCduJyx0aW1lKCkrdHpfb2Zmc2V0KCkgKSBhbmQgJHRoZWRheSA9PSBk YXRlKCdqJyx0aW1lKCkrdHpfb2Zmc2V0KCkpICkgew0KCQkJJGNsYXNzW10gPSAkdGhpcy0+ Y2xzX3BmeC4ndG9kYXknOw0KCQl9DQoNCgkJaWYoIGlzc2V0KCR0aGlzLT5ldmVudHNbJHRo ZWRheV0pICkgew0KCQkJJGRheXNfZXZlbnRzID0gJHRoaXMtPmV2ZW50c1skdGhlZGF5XTsN CgkJCWZvcmVhY2goJGRheXNfZXZlbnRzIGFzICRldikgew0KCQkJCSRldmNsYXNzID0gdHJp bSgkZXZbJ2NsYXNzZXMnXSk7DQoJCQkJZm9yZWFjaCAoZXhwbG9kZSgnICcsICRldmNsYXNz KSBhcyAkZXZjKSB7DQoJCQkJCSRjbGFzc1tdPSAkZXZjOw0KCQkJCX0NCg0KCQkJCSRvdXRb XSA9ICgkdGhpcy0+ZXZ3cmFwdGFnKSA/IHRhZygkZXZbJ2V2J10sICR0aGlzLT5ldndyYXB0 YWcsICgoJGV2Y2xhc3MpID8gJyBjbGFzcz0iJy50cmltKCRldmNsYXNzKS4nIicgOiAnJykp IDogJGV2WydldiddOw0KCQkJfQ0KCQkJJHVzZV9wb3N0ZWQgPSBmYWxzZTsNCgkJCWZvcmVh Y2ggKCR0aGlzLT5saW5rcG9zdGVkIGFzICRkbGlua3MpIHsNCgkJCQlpZiAoaW5fYXJyYXko JGRsaW5rcywgJGNsYXNzKSkgew0KCQkJCQkkdXNlX3Bvc3RlZCA9IHRydWU7DQoJCQkJCWJy ZWFrOw0KCQkJCX0NCgkJCX0NCgkJCWlmKCAkcGVybWxpbmtfbW9kZSAhPSAneWVhcl9tb250 aF9kYXlfdGl0bGUnICkgew0KCQkJCSRsaW5rZGF0ZSA9ICgkdXNlX3Bvc3RlZCkgPyAkZXZb J3Bvc3RlZCddIDogJHRoaXMtPnllYXIuJy0nLiR0aGlzLT5kb3VibGVkaWdpdCgkdGhpcy0+ bW9udGgpLictJy4kdGhpcy0+ZG91YmxlZGlnaXQoJHRoZWRheSk7DQoJCQkJJGhyZWYgPSAn IGhyZWY9IicuaHUuJz9kYXRlPScuJGxpbmtkYXRlOw0KCQkJCWlmKCR0aGlzLT5zZWN0aW9u KSB7ICRocmVmID0gJGhyZWYuYS4ncz0nLiR0aGlzLT5zZWN0aW9uOyB9DQoJCQkJaWYoJHRo aXMtPmNhdGVnb3J5KSB7ICRocmVmID0gJGhyZWYuYS4nYz0nLiR0aGlzLT5jYXRlZ29yeTsg fQ0KCQkJCSRocmVmIC49ICciJzsNCgkJCX0gZWxzZSB7DQoJCQkJJHNlY3Rpb24gPSAoJHRo aXMtPnNlY3Rpb24pID8gJHRoaXMtPnNlY3Rpb24uJy8nIDogJyc7DQoJCQkJJGxpbmtkYXRl ID0gKCR1c2VfcG9zdGVkKSA/IHByZWdfcmVwbGFjZSgiLSIsICIvIiwgJGV2Wydwb3N0ZWQn XSkgOiAkdGhpcy0+eWVhci4nLycuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0aGlzLT5tb250aCku Jy8nLiR0aGlzLT5kb3VibGVkaWdpdCgkdGhlZGF5KTsNCgkJCQkkaHJlZiA9ICcgaHJlZj0i Jy5odS4kc2VjdGlvbi4kbGlua2RhdGUuJyInOw0KCQkJfQ0KDQoJCQkkY1tdID0gZG9UYWco JHRoZWRheS5qb2luKCcnLCRvdXQpLCdhJywnJywkaHJlZik7DQoJCX0gZWxzZSB7DQoJCQkk Y1tdID0gJHRoZWRheTsNCgkJfQ0KDQoJCXJldHVybiBkb1RhZyhqb2luKCcnLCRjKSwndGQn LGpvaW4oJyAnLCRjbGFzcykpOw0KCX0NCg0KCWZ1bmN0aW9uIGRvdWJsZWRpZ2l0KCRuKSB7 DQoJCWlmKCRuIDwgMTApIHsgJG4gPSAnMCcuKGludCkkbjsgfQ0KCQlyZXR1cm4gJG47DQoJ fQ0KDQp9DQoNCmNsYXNzIFNNRF9SYXdfQ2FsZW5kYXIgew0KdmFyICRnbXQgPSAxLCAkbGFu ZzsNCnZhciAkeWVhciwgJGV5ciwgJGx5ciwgJG1vbnRoLCAkd2VlazsNCnZhciAkZGF5TmFt ZUZtdCwgJG10aE5hbWVGbXQsICRkYXlOYW1lcywgJG10aE5hbWVzLCAkc3RhcnREYXksICRl bmREYXksICRmaXJzdERheU9mV2VlayA9IDAsICRzdGFydE9mZnNldCA9IDA7DQp2YXIgJHNl bGVjdG9ycywgJHNlbGJ0biwgJHNlbHBmeCwgJHNlbHNmeDsNCnZhciAkc2hvd0lTT1dlZWss ICRJU09XZWVrSGVhZCwgJElTT1dlZWtDZWxsOw0KdmFyICRjbHNfbGV2LCAkY2xzX3BmeCwg JGZvcHRzOw0KdmFyICRldndyYXB0YWcsICRteXdyYXB0YWc7DQp2YXIgJHJvd2NsYXNzLCAk Y2VsbGNsYXNzLCAkZW1wdHljbGFzcywgJGlzb2NsYXNzLCAkbXljbGFzcywgJHRhYmxlSUQ7 DQp2YXIgJG5hdnBjbGFzcywgJG5hdm5jbGFzcywgJG5hdnBhcnJvdywgJG5hdm5hcnJvdywg JG5hdmlkOw0KdmFyICRob2xpZGF5cywgJGxpbmtwb3N0ZWQsICRjZWxsZm9ybSwgJG1haW50 YWluLCAkcmVtYXA7DQpmdW5jdGlvbiBTTURfUmF3X0NhbGVuZGFyICgkeXIsICRtbykgew0K CSR0aGlzLT5zZXRZZWFyKCR5cik7DQoJJHRoaXMtPnNldE1vbnRoKCRtbyk7DQoJJHRoaXMt PnNldENsYXNzUHJlZml4KCdzbWRfY2FsXycpOw0KDQoJJHRoaXMtPnN0YXJ0VGltZSA9IHN0 cnRvdGltZSggIiR5ci0kbW8tMDEgMDA6MDAiICk7DQoJJHRoaXMtPnN0YXJ0RGF5CT0gZGF0 ZSggJ0QnLCAkdGhpcy0+c3RhcnRUaW1lICk7DQoJJHRoaXMtPmVuZERheSA9IGRhdGUoICd0 JywgJHRoaXMtPnN0YXJ0VGltZSApOw0KCSR0aGlzLT5lbmRUaW1lICAgPSBzdHJ0b3RpbWUo ICIkeXItJG1vLSIuJHRoaXMtPmVuZERheS4iIDIzOjU5IiApOw0KDQoJJHRoaXMtPnNldE5h bWVGb3JtYXQoJyVhJywgJ2QnKTsNCgkkdGhpcy0+c2V0TmFtZUZvcm1hdCgnJUInLCAnbScp Ow0KCSR0aGlzLT5zZXRGaXJzdERheU9mV2VlaygwKTsNCgkkdGhpcy0+c2V0U2hvd0lTT1dl ZWsoJycpOw0KCSR0aGlzLT5zZXRUYWJsZUlEKCcnKTsNCgkkdGhpcy0+c2V0VGFibGVDbGFz cygnJyk7DQp9DQoNCmZ1bmN0aW9uIHVzZVNlbGVjdG9yKCR2YWwpIHsgcmV0dXJuIGluX2Fy cmF5KCR2YWwsICR0aGlzLT5zZWxlY3RvcnMpOyB9DQpmdW5jdGlvbiBnZXREYXlOYW1lKCRk YXkpIHsgcmV0dXJuICgkdGhpcy0+ZGF5TmFtZXNbJGRheSU3XSk7IH0NCmZ1bmN0aW9uIGdl dE1vbnRoTmFtZSgpIHsNCglpZiAoaXNfYXJyYXkoJHRoaXMtPm10aE5hbWVGbXQpKSB7DQoJ CXJldHVybiAkdGhpcy0+bXRoTmFtZXNbZGF0ZSgnbicsJHRoaXMtPnN0YXJ0VGltZSldOw0K CX0gZWxzZSB7DQoJCXJldHVybiBzdHJmdGltZSgkdGhpcy0+bXRoTmFtZUZtdCwgJHRoaXMt PnN0YXJ0VGltZSk7DQoJfQ0KfQ0KZnVuY3Rpb24gZ2V0TmF2SW5mbygkdHlwZSkgew0KCSRy ID0gJyc7DQoJc3dpdGNoICgkdHlwZSkgew0KCQljYXNlICJpZCI6ICRyID0gJHRoaXMtPm5h dmlkOyBicmVhazsNCgkJY2FzZSAicGMiOiAkciA9ICR0aGlzLT5uYXZwY2xhc3M7IGJyZWFr Ow0KCQljYXNlICJuYyI6ICRyID0gJHRoaXMtPm5hdm5jbGFzczsgYnJlYWs7DQoJCWNhc2Ug InBhIjogJHIgPSAkdGhpcy0+bmF2cGFycm93OyBicmVhazsNCgkJY2FzZSAibmEiOiAkciA9 ICR0aGlzLT5uYXZuYXJyb3c7IGJyZWFrOw0KCX0NCglyZXR1cm4gJHI7DQp9DQoNCmZ1bmN0 aW9uIHNldEdNVCgkYil7ICR0aGlzLT5nbXQgPSAkYjsgfQ0KZnVuY3Rpb24gc2V0TGFuZygk Y29kZSl7ICR0aGlzLT5sYW5nID0gJGNvZGU7IH0NCmZ1bmN0aW9uIHNldENlbGxGb3JtKCRm cm0peyAkdGhpcy0+Y2VsbGZvcm0gPSAkZnJtOyB9DQpmdW5jdGlvbiBzZXRUYWJsZUlEKCRp ZCl7ICR0aGlzLT50YWJsZUlEID0gJGlkOyB9DQpmdW5jdGlvbiBzZXRZZWFyKCR5cil7ICR0 aGlzLT55ZWFyID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRFWWVhcigkeXIpeyAkdGhpcy0+ZXly ID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRMWWVhcigkeXIpeyAkdGhpcy0+bHlyID0gJHlyOyB9 DQpmdW5jdGlvbiBzZXRNb250aCgkbXRoKXsgJHRoaXMtPm1vbnRoID0gKGludCkkbXRoOyB9 DQpmdW5jdGlvbiBzZXRXZWVrKCR3ayl7DQoJaWYgKCR3aykgew0KCQkkd2sgPSBzdHJfcGFk KCR3aywgMiwgJzAnLCBTVFJfUEFEX0xFRlQpOw0KCQkkdGhpcy0+d2VlayA9ICR3azsNCgkJ JHRoaXMtPm1vbnRoID0gc2FmZV9zdHJmdGltZSgiJW0iLCBzdHJ0b3RpbWUoJHRoaXMtPnll YXIuIlciLiR3aykpOw0KCX0NCn0NCmZ1bmN0aW9uIHNldE5hdktlZXAoJGFyKXsgJHRoaXMt Pm1haW50YWluID0gJGFyOyB9DQpmdW5jdGlvbiBzZXRTaG93SVNPV2VlaygkdmFsKSB7DQoJ JHRoaXMtPnNob3dJU09XZWVrID0gKCR2YWwpID8gdHJ1ZSA6IGZhbHNlOw0KCWlmICgkdmFs KSB7DQoJCSR2YWwgPSBkb19saXN0KCR2YWwpOw0KCQkkdGhpcy0+SVNPV2Vla0hlYWQgPSAk dmFsWzBdOw0KCQkkdGhpcy0+SVNPV2Vla0NlbGwgPSAoaXNzZXQoJHZhbFsxXSkpID8gJHZh bFsxXSA6ICd7d2Vla30nOw0KCX0NCn0NCmZ1bmN0aW9uIHNldFJlbWFwKCRtYXApeyAkdGhp cy0+cmVtYXAgPSAkbWFwOyB9DQpmdW5jdGlvbiBzZXRDbGFzc0xldmVscygkY2xzKXsgJHRo aXMtPmNsc19sZXYgPSAkY2xzOyB9DQpmdW5jdGlvbiBzZXRDbGFzc1ByZWZpeCgkY2xzKXsg JHRoaXMtPmNsc19wZnggPSAkY2xzOyB9DQpmdW5jdGlvbiBzZXRFdmVudFdyYXB0YWcoJHdy YXApeyAkdGhpcy0+ZXZ3cmFwdGFnID0gJHdyYXA7IH0NCmZ1bmN0aW9uIHNldE1ZV3JhcHRh Zygkd3JhcCl7ICR0aGlzLT5teXdyYXB0YWcgPSAkd3JhcDsgfQ0KZnVuY3Rpb24gc2V0VGFi bGVDbGFzcygkY2xzKSB7ICR0aGlzLT50YWJsZWNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNs c19wZnguJGNscyA6ICcnOyB9DQpmdW5jdGlvbiBzZXRSb3dDbGFzcygkY2xzKXsgJHRoaXMt PnJvd2NsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsc19wZnguJGNscyA6ICcnOyB9DQpmdW5j dGlvbiBzZXRDZWxsQ2xhc3MoJGNscyl7ICR0aGlzLT5jZWxsY2xhc3MgPSAoJGNscykgPyAk dGhpcy0+Y2xzX3BmeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNldEVtcHR5Q2xhc3MoJGNs cyl7ICR0aGlzLT5lbXB0eWNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsc19wZnguJGNscyA6 ICcnOyB9DQpmdW5jdGlvbiBzZXRJU09XZWVrQ2xhc3MoJGNscyl7ICR0aGlzLT5pc29jbGFz cyA9ICgkY2xzKSA/ICR0aGlzLT5jbHNfcGZ4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0 TmF2SW5mbygkY2xzcCwgJGNsc24sICRhcnJwLCAkYXJybiwgJG5pZCl7DQoJJHRoaXMtPm5h dnBjbGFzcyA9ICgkY2xzcCkgPyAkdGhpcy0+Y2xzX3BmeC4kY2xzcCA6ICcnOw0KCSR0aGlz LT5uYXZuY2xhc3MgPSAoJGNsc24pID8gJHRoaXMtPmNsc19wZnguJGNsc24gOiAnJzsNCgkk dGhpcy0+bmF2cGFycm93ID0gKCRhcnJwKSA/ICRhcnJwIDogJyc7DQoJJHRoaXMtPm5hdm5h cnJvdyA9ICgkYXJybikgPyAkYXJybiA6ICcnOw0KCSR0aGlzLT5uYXZpZCA9ICgkbmlkKSA/ ICR0aGlzLT5jbHNfcGZ4LiRuaWQgOiAnJzsNCn0NCmZ1bmN0aW9uIHNldE1ZQ2xhc3MoJGNs cyl7ICR0aGlzLT5teWNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsc19wZnguJGNscyA6ICcn OyB9DQpmdW5jdGlvbiBzZXRGaWx0ZXJPcHRzKCRmKSB7ICR0aGlzLT5mb3B0cyA9ICRmOyB9 DQpmdW5jdGlvbiBzZXRMaW5rUG9zdGVkKCRkbCkgew0KCWZvcmVhY2ggKCRkbCBhcyAkZHZh bCkgew0KCQkkdGhpcy0+bGlua3Bvc3RlZFtdID0gJHRoaXMtPmNsc19wZnguJGR2YWw7DQoJ fQ0KfQ0KZnVuY3Rpb24gc2V0SG9saWRheXMoJGhvbHMpIHsgJHRoaXMtPmhvbGlkYXlzID0g JGhvbHM7IH0NCmZ1bmN0aW9uIHNldFNlbGVjdG9ycygkc2VsLCAkYnRuKSB7DQoJZm9yZWFj aCAoJHNlbCBhcyAkaWR4ID0+ICRpdGVtKSB7DQoJCSRzZWxwYXJ0cyA9IGV4cGxvZGUoIjoi LCAkaXRlbSk7DQoJCSRzZWxbJGlkeF0gPSAkc2VscGFydHNbMF07DQoJCSR0aGlzLT5zZWxw ZnhbJHNlbHBhcnRzWzBdXSA9IChpc3NldCgkc2VscGFydHNbMV0pKSA/ICRzZWxwYXJ0c1sx XSA6ICcnOw0KCQkkdGhpcy0+c2Vsc2Z4WyRzZWxwYXJ0c1swXV0gPSAoaXNzZXQoJHNlbHBh cnRzWzJdKSkgPyAkc2VscGFydHNbMl0gOiAnJzsNCgl9DQoJJHRoaXMtPnNlbGVjdG9ycyA9 ICRzZWw7DQoJJHRoaXMtPnNlbGJ0biA9ICRidG47DQp9DQpmdW5jdGlvbiBzZXRGaXJzdERh eU9mV2VlaygkZCkgew0KCSR0aGlzLT5maXJzdERheU9mV2VlayA9ICgoaW50KSRkIDw9IDYg YW5kIChpbnQpJGQgPj0gMCkgPyAoaW50KSRkIDogMDsNCg0KCSR0aGlzLT5zdGFydE9mZnNl dCA9IGRhdGUoICd3JywgJHRoaXMtPnN0YXJ0VGltZSApLSR0aGlzLT5maXJzdERheU9mV2Vl azsNCglpZiAoICR0aGlzLT5zdGFydE9mZnNldCA8IDAgKSB7DQoJCSR0aGlzLT5zdGFydE9m ZnNldCA9IDcgLSBhYnMoJHRoaXMtPnN0YXJ0T2Zmc2V0KTsNCgl9DQp9DQovKioNCiogZnJt OiBhbnkgdmFsaWQgUEhQIHN0cmZ0aW1lKCkgc3RyaW5nIG9yIEFCQlIvRlVMTA0KKiB0eXA6 IGQgdG8gc2V0IGRheSwgbSB0byBzZXQgbW9udGggZm9ybWF0DQoqLw0KZnVuY3Rpb24gc2V0 TmFtZUZvcm1hdCgkZnJtLCAkdHlwPSJkIikgew0KCXN3aXRjaCAoJGZybSkgew0KCQljYXNl ICJmdWxsIjoNCgkJY2FzZSAiRlVMTCI6DQoJCQkkZm10ID0gKCR0eXAgPT0gJ2QnKSA/ICIl QSIgOiAiJUIiOw0KCQkJYnJlYWs7DQoJCWNhc2UgImFiYnIiOg0KCQljYXNlICJBQkJSIjoN CgkJCSRmbXQgPSAoJHR5cCA9PSAnZCcpID8gIiVhIiA6ICIlYiI7DQoJCQlicmVhazsNCgkJ ZGVmYXVsdDoNCgkJCWlmIChzdHJwb3MoJGZybSwgJyUnKSA9PT0gMCkgew0KCQkJCSRmbXQg PSAkZnJtOw0KCQkJfSBlbHNlIHsNCgkJCQkkZnJtID0gdHJpbSgkZnJtLCAne30nKTsNCgkJ CQkkZnJtID0gZG9fbGlzdCgkZnJtKTsNCgkJCQkkZm10ID0gJGZybTsNCgkJCX0NCgkJCWJy ZWFrOw0KCX0NCg0KCWlmICgkdHlwID09ICJkIikgew0KCQkkdGhpcy0+ZGF5TmFtZUZtdCA9 ICRmbXQ7DQoJCSR0aGlzLT5kYXlOYW1lcyA9IGFycmF5KCk7DQoNCgkJJHNlcnZlcm9mZnNl dCA9IGdtbWt0aW1lKDAsMCwwKSAtIG1rdGltZSgwLDAsMCk7DQoJCSRzdGFydCA9ICgkc2Vy dmVyb2Zmc2V0IDwgMCkgPyA0IDogMzsNCgkJJGVuZCA9ICRzdGFydCArIDc7DQoJCWZvcigk aT0kc3RhcnQ7ICRpPCRlbmQ7ICRpKyspIHsNCgkJCWlmIChpc19hcnJheSgkZm10KSkgew0K CQkJCSR0aGlzLT5kYXlOYW1lc1tdID0gJGZtdFskaS0kc3RhcnRdOw0KCQkJfSBlbHNlIHsN CgkJCQkkdGhpcy0+ZGF5TmFtZXNbXSA9IHVjZmlyc3Qoc2FmZV9zdHJmdGltZSgkZm10LCA4 NjQwMCokaSAtIHR6X29mZnNldCgpLCAkdGhpcy0+Z210LCAkdGhpcy0+bGFuZyApKTsNCgkJ CX0NCgkJfQ0KCX0gZWxzZSB7DQoJCSR0aGlzLT5tdGhOYW1lRm10ID0gJGZtdDsNCgkJJHRo aXMtPm10aE5hbWVzID0gYXJyYXkoKTsNCgkJZm9yICgkaT0wOyAkaTwxMjsgJGkrKykgew0K CQkJaWYgKGlzX2FycmF5KCRmbXQpKSB7DQoJCQkJJHRoaXMtPm10aE5hbWVzWyRpKzFdID0g JGZtdFskaV07DQoJCQl9IGVsc2Ugew0KCQkJCSR0aGlzLT5tdGhOYW1lc1skaSsxXSA9IHVj Zmlyc3Qoc2FmZV9zdHJmdGltZSgkZm10LCA4NjQwMCokaSAtIHR6X29mZnNldCgpLCAkdGhp cy0+Z210LCAkdGhpcy0+bGFuZyApKTsNCgkJCX0NCgkJfQ0KCX0NCn0NCi8qKg0KKiBSZXR1 cm4gbWFya3VwIGZvciBkaXNwbGF5aW5nIHRoZSBjYWxlbmRhci4NCiogQHJldHVybg0KKiBA cHVibGljDQoqLw0KZnVuY3Rpb24gZGlzcGxheSAoICkgew0KCSRpZCA9ICgkdGhpcy0+dGFi bGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELiciJyA6ICcnOw0KCSRjW10gPSAnPHRh YmxlJy4kaWQuJz4nOw0KCSRjW10gPSAkdGhpcy0+ZHNwRGF5TmFtZXMoKTsNCgkkY1tdID0g JHRoaXMtPmRzcERheUNlbGxzKCk7DQoJJGNbXSA9ICc8L3RhYmxlPic7DQoNCglyZXR1cm4g am9pbignJywkYyk7DQp9DQpmdW5jdGlvbiBkc3BEYXlOYW1lcyAoICkgew0KCSRjW10gPSAn PHRyIGNsYXNzPSJzbWRfY2FsX2RheW5hbWVzIj4nOw0KDQoJJGkgPSAkdGhpcy0+Zmlyc3RE YXlPZldlZWs7DQoJJGogPSAwOw0KCSRlbmQgPSBmYWxzZTsNCg0KCWlmICgkdGhpcy0+c2hv d0lTT1dlZWspIHsNCgkJJGNbXSA9ICI8dGg+Ii4kdGhpcy0+SVNPV2Vla0hlYWQuIjwvdGg+ IjsNCgl9DQoJZm9yKCRqID0gMDsgJGo8PTY7ICRqKyssICRpKyspIHsNCgkJaWYoJGkgPT0g NykgeyAkaSA9IDA7IH0NCgkJJGNbXSA9ICc8dGg+Jy4kdGhpcy0+Z2V0RGF5TmFtZSgkaSku IjwvdGg+IjsNCgl9DQoNCgkkY1tdID0gJzwvdHI+JzsNCglyZXR1cm4gam9pbignJywkYyk7 DQp9DQpmdW5jdGlvbiBkc3BEYXlDZWxscyAoICkgew0KCSRpID0gMDsNCgkkZW1wdHlDbGFz cyA9ICR0aGlzLT5lbXB0eWNsYXNzOw0KCSRpc29DbGFzcyA9ICR0aGlzLT5pc29jbGFzczsN Cgkkcm93Q2xhc3MgPSAkdGhpcy0+cm93Y2xhc3M7DQoJJHJvd0NsYXNzID0gKCRyb3dDbGFz cykgPyAnIGNsYXNzPSInLiRyb3dDbGFzcy4nIicgOiAnJzsNCg0KCSRjW10gPSAnPHRyJy4k cm93Q2xhc3MuJz4nOw0KDQoJaWYgKCR0aGlzLT5zaG93SVNPV2Vlaykgew0KCQkkcmVwcyA9 IGFycmF5KA0KCQkJJ3t3ZWVrfScgPT4gZGF0ZSgnVycsICR0aGlzLT5zdGFydFRpbWUpLA0K CQkJJ3ttb250aH0nID0+IGRhdGUoJ24nLCAkdGhpcy0+c3RhcnRUaW1lKSwNCgkJCSd7eWVh cn0nID0+IGRhdGUoJ1knLCAkdGhpcy0+c3RhcnRUaW1lKSwNCgkJCSd7aXNveWVhcn0nID0+ IGRhdGUoJ28nLCAkdGhpcy0+c3RhcnRUaW1lKSwNCgkJKTsNCgkJJHdrY2VsbCA9IHN0cnRy KCR0aGlzLT5JU09XZWVrQ2VsbCwgJHJlcHMpOw0KCQkkY1tdID0gJzx0ZCBjbGFzcz0iJy4k aXNvQ2xhc3MuJyI+Jy4kd2tjZWxsLic8L3RkPic7DQoJfQ0KDQoJZm9yKCAkaj0wOyAkajwk dGhpcy0+c3RhcnRPZmZzZXQ7ICRqKysgKQl7DQoJCSRpKys7DQoJCSRjW10gPSAnPHRkIGNs YXNzPSInLiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsNCgl9DQoNCglmb3IoICRkPTE7 ICRkPD0kdGhpcy0+ZW5kRGF5OyAkZCsrICkgew0KCQkkaSsrOw0KCQkkY1tdID0gJHRoaXMt PmRzcERheUNlbGwoICRkICk7DQoJCWlmICggJGklNyA9PSAwICkgeyAkY1tdID0gJzwvdHI+ JzsgfQ0KCQlpZiAoICRkPCR0aGlzLT5lbmREYXkgJiYgJGklNyA9PSAwICkgew0KCQkJJGNb XSA9ICc8dHInLiRyb3dDbGFzcy4nPic7DQoJCQlpZiAoJHRoaXMtPnNob3dJU09XZWVrKSB7 DQoJCQkJJHRoZVRpbWUgPSBzdHJ0b3RpbWUoJHRoaXMtPnllYXIuIi0iLiR0aGlzLT5tb250 aC4iLSIuKGludCkoJGQgKyAxKSAuIiAwMDowMCIpOw0KCQkJCSRyZXBzID0gYXJyYXkoDQoJ CQkJCSd7d2Vla30nID0+IGRhdGUoJ1cnLCAkdGhlVGltZSksDQoJCQkJCSd7bW9udGh9JyA9 PiBkYXRlKCduJywgJHRoZVRpbWUpLA0KCQkJCQkne3llYXJ9JyA9PiBkYXRlKCdZJywgJHRo ZVRpbWUpLA0KCQkJCQkne2lzb3llYXJ9JyA9PiBkYXRlKCdvJywgJHRoZVRpbWUpLA0KCQkJ CSk7DQoJCQkJJHdrY2VsbCA9IHN0cnRyKCR0aGlzLT5JU09XZWVrQ2VsbCwgJHJlcHMpOw0K CQkJCSRjW10gPSAnPHRkIGNsYXNzPSInLiRpc29DbGFzcy4nIj4nLiR3a2NlbGwuJzwvdGQ+ JzsNCgkJCX0NCgkJfQ0KCX0NCg0KCSRsZWZ0ID0gNyAtICggJGklNyApOw0KCWlmICggJGxl ZnQgPCA3KQl7DQoJCWZvciAoICRqPTA7ICRqPCRsZWZ0OyAkaisrICkJew0KCQkgICRjW10g PSAnPHRkIGNsYXNzPSInLiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsNCgkJfQ0KCQkk Y1tdID0gIlxuXHQ8L3RyPiI7DQoJfQ0KCXJldHVybiBqb2luKCcnLCRjKTsNCn0NCmZ1bmN0 aW9uIGRzcERheUNlbGwgKCAkZGF5ICkgew0KCXJldHVybiAnPHRkPicuJGRheS4nPC90ZD4n Ow0KfQ0KfSAvLyBlbmQgY2xhc3MNCg0KZnVuY3Rpb24gc21kX2lmX2NhbCgkYXR0cywgJHRo aW5nKSB7DQoJZ2xvYmFsICRzbWRfY2FsX2ZsYWcsICRzbWRfY2FsaW5mbywgJHNtZF9kYXRl Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2ZsYWcnID0+ICcnLA0KCQknY2FsaWQn ID0+ICcnLA0KCQknaXNveWVhcicgPT4gJycsDQoJCSd5ZWFyJyA9PiAnJywNCgkJJ21vbnRo JyA9PiAnJywNCgkJJ3dlZWsnID0+ICcnLA0KCQknZGF5JyA9PiAnJywNCgkJJ2xvZ2ljJyA9 PiAnb3InLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJJGZsYWcgPSBk b19saXN0KCRmbGFnKTsNCgkkY3RyID0gJG51bSA9IDA7DQoNCglpZiAoJGRlYnVnKSB7DQoJ CWRtcCgkYXR0cyk7DQoJfQ0KDQoJaWYgKCRmbGFnICYmICRmbGFnWzBdICE9ICcnKSB7DQoJ CSRudW0gKz0gY291bnQoJGZsYWcpOw0KCQlmb3JlYWNoICgkZmxhZyBhcyAkd2hhdG5vdCkg ew0KCQkJaWYgKGVtcHR5KCR3aGF0bm90KSkgY29udGludWU7DQoJCQkkY3RyICs9IChpbl9h cnJheSgkd2hhdG5vdCwgJHNtZF9jYWxfZmxhZykgfHwgKCR3aGF0bm90ID09ICdTTURfQU5Z JyAmJiAhZW1wdHkoJHNtZF9jYWxfZmxhZykpKSA/IDEgOiAwOw0KCQl9DQoJfQ0KCWlmICgk Y2FsaWQpIHsNCgkJJG51bSsrOw0KCQkkY3RyICs9ICgkc21kX2NhbGluZm9bJ2lkJ10gPT09 ICRjYWxpZCkgPyAxIDogMDsNCgl9DQoJZm9yZWFjaCAoYXJyYXkoIml5IiA9PiAiaXNveWVh ciIsICJ5IiA9PiAieWVhciIsICJtIiA9PiAibW9udGgiLCAidyIgPT4gIndlZWsiLCAiZCIg PT4gImRheSIpIGFzICRpZHggPT4gJHRlc3QpIHsNCgkJJHRlc3RlciA9ICQkdGVzdDsNCgkJ JGNvbXBhcmUgPSAkc21kX2RhdGVbJGlkeF07DQoNCgkJaWYgKCR0ZXN0ZXIpIHsNCgkJCSRu dW0rKzsNCgkJCXByZWdfbWF0Y2goJy8oWyE9PD5dKyk/KFtcZF0rKS8nLCAkdGVzdGVyLCAk bWF0Y2hlcyk7DQoJCQlpZiAoJGRlYnVnKSB7DQoJCQkJZG1wKCJURVNUIElGOiAiLiAkY29t cGFyZS4gKCgkbWF0Y2hlc1sxXSkgPyAkbWF0Y2hlc1sxXSA6ICc9JykgLiAkbWF0Y2hlc1sy XSApOw0KCQkJfQ0KCQkJc3dpdGNoICgkbWF0Y2hlc1sxXSkgew0KCQkJCWNhc2UgIiEiOg0K CQkJCQkkY3RyICs9ICgkY29tcGFyZSE9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJy ZWFrOw0KCQkJCWNhc2UgIj4iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT4kbWF0Y2hlc1sy XSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPj0iOg0KCQkJCQkkY3RyICs9 ICgkY29tcGFyZT49JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNh c2UgIjwiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTwkbWF0Y2hlc1syXSkgPyAxIDogMDsN CgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPD0iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTw9 JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJ CSRjdHIgKz0gKCRjb21wYXJlPT0kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7 DQoJCQl9DQoJCX0NCgl9DQoJJHJlc3VsdCA9ICgoJGN0ciA9PT0gJG51bSAmJiAkbG9naWMg PT0gImFuZCIpIHx8ICRjdHIgPiAwICYmICRsb2dpYyA9PSAib3IiKSA/IHRydWUgOiBmYWxz ZTsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmVzdWx0KSk7DQp9DQoNCmZ1 bmN0aW9uIHNtZF9jYWxfaW5mbygkYXR0cykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNh cnRpY2xlLCAkc21kX2NhbF9mbGFnLCAkc21kX2NhbGluZm8sICRzbWRfZGF0ZTsNCg0KCWV4 dHJhY3QobEF0dHMoYXJyYXkoDQoJCSd0eXBlJyA9PiAnZmxhZycsDQoJCSdqb2luJyA9PiAn ICcsDQoJCSdqb2luX3ByZWZpeCcgPT4gJ1NNRF9BVVRPJywNCgkJJ2h0bWwnID0+IDAsDQoJ CSdlc2NhcGUnID0+ICdodG1sJywNCgkpLCAkYXR0cykpOw0KDQoJJG1hcCA9IGFycmF5KA0K CQkneWVhcicgPT4gYXJyYXkoMCwgJ3knLCksDQoJCSdpc295ZWFyJyA9PiBhcnJheSgwLCAn aXknLCAneScpLA0KCQknbW9udGgnID0+IGFycmF5KDAsICdtJyksDQoJCSd3ZWVrJyA9PiBh cnJheSgwLCAndycpLA0KCQknZGF5JyA9PiBhcnJheSgwLCAnZCcpLA0KCQknc2VjdGlvbicg PT4gYXJyYXkoMywgJycsICdzJyksDQoJCSdjYXRlZ29yeTEnID0+IGFycmF5KDMsICcnLCAn YycpLA0KCQknY2F0ZWdvcnkyJyA9PiBhcnJheSgzLCAnJywgJ2MnKSwNCgkJJ3RoaXNpZCcg PT4gYXJyYXkoMywgJ3RoaXNpZCcsICdpZCcpLA0KCQknYXJ0aWNsZScgPT4gYXJyYXkoMSwg J2FydGlkJywgJ2lkJyksDQoJCSdjYWxpZCcgPT4gYXJyYXkoMSwgJ2lkJywgJ2NhbGlkJyks DQoJCSdjYXRlZ29yeScgPT4gYXJyYXkoMiwgJ2MnKSwNCgkJJ3JlYWxuYW1lJyA9PiBhcnJh eSgyLCAnYXV0aG9yJyksDQoJKTsNCgkkam9pbiA9ICgkaHRtbCkgPyBhIDogJGpvaW47DQoJ JHR5cGUgPSBkb19saXN0KCR0eXBlKTsNCgkkcmV0ID0gYXJyYXkoKTsNCglmb3JlYWNoICgk dHlwZSBhcyAkaXRlbSkgew0KCQkkcHRzID0gZG9fbGlzdCgkaXRlbSwgJzonKTsNCgkJJGl0 ZW0gPSAkcHRzWzBdOw0KDQoJCWlmIChlbXB0eSgkaXRlbSkpIGNvbnRpbnVlOw0KCQkkaGlk ID0gKGlzc2V0KCRtYXBbJGl0ZW1dKSkgPyAoKGlzc2V0KCRtYXBbJGl0ZW1dWzJdKSkgPyAk bWFwWyRpdGVtXVsyXSA6ICRtYXBbJGl0ZW1dWzFdKSA6ICRpdGVtOw0KCQkkaGlkID0gKGNv dW50KCRwdHMpID4gMSAmJiAhZW1wdHkoJHB0c1sxXSkpID8gJHB0c1sxXSA6ICRoaWQ7DQoJ CWlmICgkaXRlbSA9PSAiZmxhZyIpIHsNCgkJCSRyZXRbXSA9ICgoJGpvaW5fcHJlZml4PT0i U01EX0FVVE8iKSA/ICRqb2luIDogJycpLmpvaW4oJGpvaW4sICRzbWRfY2FsX2ZsYWcpOw0K CQl9IGVsc2UgaWYgKCRpdGVtID09ICJhdXRob3IiIHx8ICRpdGVtID09ICJyZWFsbmFtZSIp IHsNCgkJCSRjdXJyYXV0aG9yID0gKCR0aGlzYXJ0aWNsZSA9PSBOVUxMKSA/ICcnIDogYXV0 aG9yKGFycmF5KCkpOw0KCQkJaWYgKCRjdXJyYXV0aG9yKSB7DQoJCQkJJHJldFtdID0gKCgk aHRtbCkgPyAkaGlkLic9JyA6ICcnKSAuICRjdXJyYXV0aG9yOw0KCQkJfQ0KCQl9IGVsc2Ug aWYgKCRpdGVtID09ICJzIikgew0KCQkJJHNlYyA9ICghZW1wdHkoJHByZXRleHRbJ3MnXSkp ID8gJHByZXRleHRbJ3MnXSA6ICgoaXNzZXQoJHNtZF9jYWxpbmZvWydzJ10pICYmICFlbXB0 eSgkc21kX2NhbGluZm9bJ3MnXSkpID8gJHNtZF9jYWxpbmZvWydzJ10gOiAnJyk7DQoJCQlp ZiAoJHNlYykgew0KCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAk c2VjOw0KCQkJfQ0KCQl9IGVsc2UgaWYgKGlzc2V0KCRtYXBbJGl0ZW1dKSkgew0KCQkJJHR5 cCA9ICRtYXBbJGl0ZW1dWzBdOw0KCQkJJGlkeCA9IGVtcHR5KCRtYXBbJGl0ZW1dWzFdKSA/ ICRpdGVtIDogJG1hcFskaXRlbV1bMV07DQoJCQlzd2l0Y2ggKCR0eXApIHsNCgkJCQljYXNl IDA6DQoJCQkJCWlmICgkc21kX2RhdGVbJGlkeF0pIHsNCgkJCQkJCSRyZXRbXSA9ICgoJGh0 bWwpID8gJGhpZC4nPScgOiAnJykgLiAkc21kX2RhdGVbJGlkeF07DQoJCQkJCX0NCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAxOg0KCQkJCQlpZiAoIWVtcHR5KCRzbWRfY2FsaW5mb1skaWR4 XSkpIHsNCgkJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkc21k X2NhbGluZm9bJGlkeF07DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAyOg0KCQkJ CQlpZiAoIWVtcHR5KCRwcmV0ZXh0WyRpZHhdKSkgew0KCQkJCQkJJHJldFtdID0gKCgkaHRt bCkgPyAkaGlkLic9JyA6ICcnKSAuICRwcmV0ZXh0WyRpZHhdOw0KCQkJCQl9DQoJCQkJCWJy ZWFrOw0KCQkJCWNhc2UgMzoNCgkJCQkJaWYgKCR0aGlzYXJ0aWNsZSAhPSBOVUxMICYmIGlz c2V0KCR0aGlzYXJ0aWNsZVskaWR4XSkgJiYgIWVtcHR5KCR0aGlzYXJ0aWNsZVskaWR4XSkp IHsNCgkJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkdGhpc2Fy dGljbGVbJGlkeF07DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0gZWxzZSBpZiAo YXJyYXlfa2V5X2V4aXN0cygkaXRlbSwgJHByZXRleHQpKSB7DQoJCQlpZiAoJHByZXRleHRb JGl0ZW1dKSB7DQoJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAkaGlkLic9JyA6ICcnKSAuICRw cmV0ZXh0WyRpdGVtXTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmICgkdGhpc2FydGljbGUg IT0gTlVMTCAmJiBpc3NldCgkdGhpc2FydGljbGVbJGl0ZW1dKSAmJiAhZW1wdHkoJHRoaXNh cnRpY2xlWyRpdGVtXSkpIHsNCgkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDog JycpIC4gJHRoaXNhcnRpY2xlWyRpdGVtXTsNCgkJCX0NCgkJfQ0KCX0NCgkkcmV0ID0gYXJy YXlfdW5pcXVlKCRyZXQpOw0KCSRvdXQgPSAoKCRqb2luX3ByZWZpeD09IlNNRF9BVVRPIikg PyAoKCRodG1sKSA/ICc/JyA6ICcnKSA6ICRqb2luX3ByZWZpeCkuam9pbigkam9pbiwgJHJl dCk7DQoJcmV0dXJuICgkZXNjYXBlPT0naHRtbCcpID8gaHRtbHNwZWNpYWxjaGFycygkb3V0 KSA6ICRvdXQ7DQp9DQoNCmZ1bmN0aW9uIHNtZF9jYWxfbm93KCRhdHRzKSB7DQoJZ2xvYmFs ICRkYXRlZm9ybWF0Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2Zvcm1hdCcgPT4g JGRhdGVmb3JtYXQsDQoJCSdub3cnID0+ICcnLA0KCQknb2Zmc2V0JyA9PiAnJywNCgkJJ2dt dCcgPT4gJycsDQoJCSdsYW5nJyA9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJJHRoZURheSA9 IChncHMoJ2QnKSAmJiBpc19udW1lcmljKGdwcygnZCcpKSkgPyAoaW50KWdwcygnZCcpIDog c2FmZV9zdHJmdGltZSgnJWQnKTsNCgkkdGhlTW9udGggPSAoZ3BzKCdtJykgJiYgaXNfbnVt ZXJpYyhncHMoJ20nKSkpID8gKGludClncHMoJ20nKSA6IHNhZmVfc3RyZnRpbWUoJyVtJyk7 DQoJJHRoZVllYXIgPSAoZ3BzKCd5JykgJiYgaXNfbnVtZXJpYyhncHMoJ3knKSkpID8gKGlu dClncHMoJ3knKSA6IHNhZmVfc3RyZnRpbWUoJyVZJyk7DQoJaWYgKCRub3cpIHsNCgkJJG5v dyA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMTIsMCwwLCR0 aGVNb250aCwkdGhlRGF5LCR0aGVZZWFyKSksICRub3cpOw0KCQkkbm93ID0gc3RyX3JlcGxh Y2UoIj95ZWFyIiwgJHRoZVllYXIsICRub3cpOw0KCQkkbm93ID0gc3RyX3JlcGxhY2UoIj9k YXkiLCAkdGhlRGF5LCAkbm93KTsNCgkJJG5vdyA9IHN0cnRvdGltZSgkbm93KTsNCgl9IGVs c2Ugew0KCQkkbm93ID0gdGltZSgpOw0KCX0NCg0KCWlmICgkb2Zmc2V0KSB7DQoJCSRub3cg PSBzdHJ0b3RpbWUoJG9mZnNldCwgJG5vdyk7DQoJfQ0KDQoJcmV0dXJuIHNhZmVfc3RyZnRp bWUoJGZvcm1hdCwgJG5vdywgJGdtdCwgJGxhbmcpOw0KfQ0KDQpmdW5jdGlvbiBzbWRfY2Fs X2NsYXNzKCRhdHRzKSB7DQoJZ2xvYmFsICRzbWRfY2FsX3VjbHM7DQoNCglleHRyYWN0KGxB dHRzKGFycmF5KA0KCQknbmFtZScgPT4gJycsDQoJKSwgJGF0dHMpKTsNCg0KCSRuYW1lID0g ZG9fbGlzdCgkbmFtZSk7DQoJJHNtZF9jYWxfdWNscyA9IGFycmF5X21lcmdlKCRzbWRfY2Fs X3VjbHMsICRuYW1lKTsNCn0NCg0KZnVuY3Rpb24gc21kX2FydGljbGVfZXZlbnQoJGF0dHMs ICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJlZnMsICRwcmV0ZXh0LCAkdGhpc3BhZ2U7DQoN CglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndGltZScgPT4gJ2FueScsDQoJCSd0eXBlJyA9 PiAnc3RhbmRhcmQscmVjdXIsbXVsdGknLA0KCQknZXhwaXJlZCcgPT4gJycsDQoJCSdpZCcg PT4gJycsDQoJCSdjYXRlZ29yeScgPT4gJycsDQoJCSdzZWN0aW9uJyA9PiAnJywNCgkJJ2F1 dGhvcicgPT4gJycsDQoJCSdyZWFsbmFtZScgPT4gJycsDQoJCSdzdGF0dXMnID0+ICdsaXZl JywNCgkJJ3NvcnQnID0+ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdzdGVwZmllbGQnID0+ ICcnLA0KCQknc2tpcGZpZWxkJyA9PiAnJywNCgkJJ29taXRmaWVsZCcgPT4gJycsDQoJCSdl eHRyYWZpZWxkJyA9PiAnJywNCgkJJ2FsbHNwYW5uZWQnID0+ICcwJywNCgkJJ2RhdGVmaWVs ZHMnID0+ICcnLA0KCQknbW9udGgnID0+ICcnLA0KCQknZnJvbScgPT4gJycsDQoJCSd0bycg PT4gJycsDQoJCSdvZmZzZXQnID0+IDAsDQoJCSdsaW1pdCcgPT4gJzEwJywNCgkJJ2V2ZW50 bGltaXQnID0+ICcxMCcsDQoJCSdwYWdpbmcnID0+ICcxJywNCgkJJ3BhZ2VieScgPT4gJycs DQoJCSdwZ29ubHknID0+ICcnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycgPT4g JycsDQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykpOw0K DQoJJGZpbHRTUUwgPSAkc3ViU1FMID0gYXJyYXkoKTsNCglpZigkY2F0ZWdvcnkpIHsNCgkJ JHRtcCA9IGRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRjYXRlZ29yeSkp KSk7DQoJCSRmaWx0U1FMW10gPSAnKCBDYXRlZ29yeTEgSU4gKCcuJHRtcC4nKSBPUiBDYXRl Z29yeTIgSU4gKCcuJHRtcC4nKSApJzsNCgl9DQoJaWYoJHNlY3Rpb24pIHsNCgkJJGZpbHRT UUxbXSA9ICdTZWN0aW9uIElOICgnLmRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19s aXN0KCRzZWN0aW9uKSkpKS4nKSc7DQoJfQ0KCWlmKCRyZWFsbmFtZSkgew0KCQkkYXV0aG9y cyA9IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4cF91c2VycycsICdSZWFsTmFtZSBJTiAoJy4g ZG9RdW90ZShqb2luKCInLCciLCBkb0FycmF5KGRvX2xpc3QoJHJlYWxuYW1lKSwgJ3VybGRl Y29kZScpKSkgLicpJyApOw0KCQkkYXV0aG9yID0gam9pbignLCcsICRhdXRob3JzKTsNCgl9 DQoJaWYoJGF1dGhvcikgew0KCQkkZmlsdFNRTFtdID0gJ0F1dGhvcklEIElOICgnLmRvUXVv dGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRhdXRob3IpKSkpLicpJzsNCgl9DQoJ aWYoJGlkKSB7DQoJCSRmaWx0U1FMW10gPSAnSUQgSU4gKCcuam9pbignLCcsIGFycmF5X21h cCgnaW50dmFsJywgZG9fbGlzdCgkaWQpKSkuJyknOw0KCX0NCgkkdHlwZSA9IGRvX2xpc3Qo JHR5cGUpOw0KCSRwYWdlYnkgPSAoZW1wdHkoJHBhZ2VieSkgPyAkbGltaXQgOiAkcGFnZWJ5 KTsNCg0KCWZvcmVhY2ggKCR0eXBlIGFzICRldnR5cCkgew0KCQlzd2l0Y2goJGV2dHlwKSB7 DQoJCQljYXNlICdzdGFuZGFyZCc6DQoJCQkJaWYgKCRzdGVwZmllbGQpIHsNCgkJCQkJJHN1 YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiA9ICcnIEFORCBFeHBpcmVzID0gIi5OVUxMREFU RVRJTUUuIikiOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgJ3JlY3VyJzoNCgkJCQlp ZiAoJHN0ZXBmaWVsZCkgew0KCQkJCQkkc3ViU1FMW10gPSAiKCIuJHN0ZXBmaWVsZC4iICE9 ICcnKSI7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnbXVsdGknOg0KCQkJCWlmICgk c3RlcGZpZWxkKSB7DQoJCQkJCSRzdWJTUUxbXSA9ICIoIi4kc3RlcGZpZWxkLiIgPSAnJyBB TkQgRXhwaXJlcyAhPSAiLk5VTExEQVRFVElNRS4iKSI7DQoJCQkJfQ0KCQkJCWJyZWFrOw0K CQl9DQoJfQ0KCWlmICgkc3ViU1FMKSB7DQoJCSRmaWx0U1FMW10gPSAnKCcuam9pbignIE9S ICcsICRzdWJTUUwpLicpJzsNCgl9DQoNCgkkc3RhdHVzID0gKCRzdGF0dXMpID8gJHN0YXR1 cyA6ICdsaXZlJzsNCgkkc3RhdHVzID0gZG9fbGlzdCgkc3RhdHVzKTsNCgkkc3RhdGkgPSBh cnJheSgpOw0KCWZvcmVhY2ggKCRzdGF0dXMgYXMgJHN0YXQpIHsNCgkJaWYgKGVtcHR5KCRz dGF0KSkgew0KCQkJY29udGludWU7DQoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkp IHsNCgkJCSRzdGF0aVtdID0gJHN0YXQ7DQoJCX0gZWxzZSB7DQoJCQkkc3RhdGlbXSA9IGdl dFN0YXR1c051bSgkc3RhdCk7DQoJCX0NCgl9DQoJJGZpbHRTUUxbXSA9ICdTdGF0dXMgSU4g KCcuZG9RdW90ZShqb2luKCInLCciLCAkc3RhdGkpKS4nKSc7DQoNCgkkZXhwaXJlZCA9ICgk ZXhwaXJlZCkgPyAkZXhwaXJlZCA6ICRwcmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVz J107DQoJaWYgKCEkZXhwaXJlZCkgew0KCQkkZmlsdFNRTFtdID0gJyhub3coKSA8PSBFeHBp cmVzIE9SIEV4cGlyZXMgPSAnLk5VTExEQVRFVElNRS4nKSc7DQoJfQ0KDQoJJHNvcnQgPSAo ZW1wdHkoJHNvcnQpKSA/ICdQb3N0ZWQgYXNjJyA6ICRzb3J0Ow0KCSRzb3J0ID0gZG9fbGlz dCgkc29ydCk7DQoJJHNvcnRQcmVmaXggPSAiU09SVF8iOw0KCSRzb3J0T3JkZXIgPSBhcnJh eSgpOw0KCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7ICRpZHgrKykgew0K CQkkc29ydGllcyA9IGV4cGxvZGUoJyAnLCAkc29ydFskaWR4XSk7DQoJCWlmIChjb3VudCgk c29ydGllcykgPD0gMSkgew0KCQkJJHNvcnRpZXNbMV0gPSAiYXNjIjsNCgkJfQ0KCQkkc29y dGllc1sxXSA9ICRzb3J0UHJlZml4LigoJHNvcnRpZXNbMV0gPT0gImRlc2MiKSA/ICdERVND JyA6ICdBU0MnKTsNCgkJJHNvcnRPcmRlcltdID0gYXJyYXkoImJ5IiA9PiAkc29ydGllc1sw XSwgImRpciIgPT4gJHNvcnRpZXNbMV0pOw0KCX0NCg0KCSRmaWx0U1FMID0gam9pbignIEFO RCAnLCAkZmlsdFNRTCk7DQoJJGZpbHRTUUwgLj0gJyBPUkRFUiBCWSAnLmpvaW4oJywnLGRv U2xhc2goJHNvcnQpKTsNCg0KCSRncmFiQ29scyA9ICcqLCB1bml4X3RpbWVzdGFtcChQb3N0 ZWQpIGFzIHVQb3N0ZWQsIHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLCB1 bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcyc7DQoJJGV2bGlzdCA9IHNhZmVf cm93cygkZ3JhYkNvbHMsICd0ZXh0cGF0dGVybicsICRmaWx0U1FMLCAkZGVidWcpOw0KDQoJ aWYgKCRkZWJ1Zz4yKSB7DQoJCWVjaG8gIisrIFJFQ09SRCBTRVQgKysiOw0KCQlkbXAoJGV2 bGlzdCk7DQoJfQ0KCSRhbGxfZXZzID0gJGV2X3RhbGx5ID0gYXJyYXkoKTsNCgkkbm93ID0g dGltZSgpOw0KDQoJJGV2ZW50bGltaXQgPSBkb19saXN0KCRldmVudGxpbWl0KTsNCglpZiAo Y291bnQoJGV2ZW50bGltaXQpID09IDEpIHsNCgkJJGV2ZW50bGltaXRbMV0gPSAkZXZlbnRs aW1pdFswXTsNCgl9DQoNCgkkZGF0ZWZpZWxkcyA9IGRvX2xpc3QoJGRhdGVmaWVsZHMpOw0K DQoJZm9yZWFjaCAoJGV2bGlzdCBhcyAkcm93KSB7DQoJCSRldl9wb3N0ZWQgPSAoIWVtcHR5 KCRkYXRlZmllbGRzWzBdKSAmJiAhZW1wdHkoJHJvd1skZGF0ZWZpZWxkc1swXV0pICYmICgk c3RkdCA9IHN0cnRvdGltZSgkcm93WyRkYXRlZmllbGRzWzBdXSkpICE9PSBmYWxzZSkgPyAk c3RkdCA6ICRyb3dbJ3VQb3N0ZWQnXTsNCgkJJGV2X2V4cGlyZXMgPSAoaXNzZXQoJGRhdGVm aWVsZHNbMV0pICYmICFlbXB0eSgkcm93WyRkYXRlZmllbGRzWzFdXSkgJiYgKCRlbmR0ID0g c3RydG90aW1lKCRyb3dbJGRhdGVmaWVsZHNbMV1dKSkgIT09IGZhbHNlKSA/ICRlbmR0IDog JHJvd1sndUV4cGlyZXMnXTsNCg0KCQlpZiAoJGV2X2V4cGlyZXMgIT0gMCAmJiAkZXZfZXhw aXJlcyA8PSAkZXZfcG9zdGVkKSB7DQoJCQkkZXZfcG9zdGVkID0gJHJvd1sndVBvc3RlZCdd Ow0KCQkJJGV2X2V4cGlyZXMgPSAkcm93Wyd1RXhwaXJlcyddOw0KCQkJdHJpZ2dlcl9lcnJv cignRXhwaXJ5IGNhbm5vdCBiZSBiZWZvcmUgc3RhcnQgZGF0ZSBpbiAiJy4kcm93WydUaXRs ZSddLiciOiBpZ25vcmVkJywgRV9VU0VSX1dBUk5JTkcpOw0KCQl9DQoNCgkJJHJvd1sndVBv c3RlZCddID0gJGV2X3Bvc3RlZDsNCgkJJHJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBI Omk6cyIsICRldl9wb3N0ZWQpOw0KCQkkcm93Wyd1RXhwaXJlcyddID0gJGV2X2V4cGlyZXM7 DQoJCSRyb3dbJ0V4cGlyZXMnXSA9IGRhdGUoIlktbS1kIEg6aTpzIiwgJGV2X2V4cGlyZXMp Ow0KDQoJCSRkaWZmID0gKCRldl9leHBpcmVzID09IDApID8gMCA6ICRldl9leHBpcmVzIC0g JGV2X3Bvc3RlZDsNCgkJJGV2X21vbnRoID0gZGF0ZSgnbScsICRldl9wb3N0ZWQpOw0KCQkk ZXZfeWVhciA9IGRhdGUoJ1knLCAkZXZfcG9zdGVkKTsNCgkJJGV2X2hyID0gZGF0ZSgnSCcs ICRldl9wb3N0ZWQpOw0KCQkkZXZfbW4gPSBkYXRlKCdpJywgJGV2X3Bvc3RlZCk7DQoJCSRl dl9zYyA9IGRhdGUoJ3MnLCAkZXZfcG9zdGVkKTsNCgkJJGlnbm9yZSA9IGFycmF5KCk7DQoN CgkJaWYgKCRza2lwZmllbGQgJiYgJHJvd1skc2tpcGZpZWxkXSAhPSAnJykgew0KCQkJJGln bm9yZXMgPSBkb19saXN0KCRyb3dbJHNraXBmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJGlnbm9y ZXMgYXMgJHZhbCkgew0KCQkJCSRpZ3JuZyA9IHNtZF9leHBhbmRfZGF0ZXJhbmdlKCR2YWws ICRldl9wb3N0ZWQsICRldl9leHBpcmVzKTsNCgkJCQlmb3JlYWNoICgkaWdybmcgYXMgJHRo ZXZhbCkgew0KCQkJCQkkaWdub3JlW10gPSBkYXRlKCJkLU0tWSIsICR0aGV2YWwpOw0KCQkJ CX0NCgkJCX0NCgkJfQ0KCQlpZiAoJG9taXRmaWVsZCAmJiAkcm93WyRvbWl0ZmllbGRdICE9 ICcnKSB7DQoJCQkkb21pdHMgPSBkb19saXN0KCRyb3dbJG9taXRmaWVsZF0pOw0KCQkJZm9y ZWFjaCAoJG9taXRzIGFzICR2YWwpIHsNCgkJCQkkb21ybmcgPSBzbWRfZXhwYW5kX2RhdGVy YW5nZSgkdmFsLCAkZXZfcG9zdGVkLCAkZXZfZXhwaXJlcyk7DQoJCQkJZm9yZWFjaCAoJG9t cm5nIGFzICR0aGV2YWwpIHsNCgkJCQkJJGlnbm9yZVtdID0gZGF0ZSgiZC1NLVkiLCAkdGhl dmFsKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDEgJiYgJGlnbm9yZSkg ew0KCQkJZWNobyAnKysgSUdOT1JFRCBEQVRFUyArKyc7DQoJCQlkbXAoJGlnbm9yZSk7DQoJ CX0NCg0KCQlpZiAoc21kX2luY2x1ZGVfZXZlbnQoJGV2X3Bvc3RlZCwgJG5vdywgJGlnbm9y ZSwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250aCkpIHsNCgkJCSRhbGxfZXZzW10gPSAkcm93 Ow0KCQkJJGV2X3RhbGx5WyRyb3dbJ3VQb3N0ZWQnXV0gPSAoaXNzZXQoJGV2X3RhbGx5WyRy b3dbJ3VQb3N0ZWQnXV0pKSA/ICRldl90YWxseVskcm93Wyd1UG9zdGVkJ11dKzEgOiAxOw0K CQl9DQoNCgkJaWYgKCRleHRyYWZpZWxkICYmICRyb3dbJGV4dHJhZmllbGRdICE9ICcnKSB7 DQoJCQkkeHRyYSA9IGRvX2xpc3QoJHJvd1skZXh0cmFmaWVsZF0pOw0KCQkJJHh0cmFzID0g YXJyYXkoKTsNCgkJCWZvcmVhY2ggKCR4dHJhIGFzICR2YWwpIHsNCgkJCQkkeHRyYXMgPSBh cnJheV9tZXJnZSgkeHRyYXMsIHNtZF9leHBhbmRfZGF0ZXJhbmdlKCR2YWwsICcnLCAnJywg IiVkICVCICVZIikpOw0KCQkJfQ0KCQkJJHN0YW1wb2ZmID0gKGludCkoMzYwMCokZXZfaHIp ICsgKGludCkoNjAqJGV2X21uKSArIChpbnQpJGV2X3NjOw0KCQkJZm9yZWFjaCAoJHh0cmFz IGFzICR2YWwpIHsNCgkJCQkkdmFsID0gcnRyaW0oJHZhbCwgJysnKTsNCgkJCQkkdG0gPSBz dHJ0b3RpbWUoJHZhbCk7DQoNCgkJCQlpZiAoc21kX2luY2x1ZGVfZXZlbnQoJHRtKyRzdGFt cG9mZiwgJG5vdywgYXJyYXkoKSwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250aCkpIHsNCgkJ CQkJJGZha2Vyb3cgPSAkcm93Ow0KCQkJCQkkZmFrZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZ LW0tZCBIOmk6cyIsICR0bSskc3RhbXBvZmYpOw0KCQkJCQkkZmFrZXJvd1sndVBvc3RlZCdd ID0gJHRtKyRzdGFtcG9mZjsNCgkJCQkJaWYgKCRkaWZmID4gMCkgew0KCQkJCQkJJGZha2Vy b3dbJ0V4cGlyZXMnXSA9IGRhdGUoIlktbS1kIEg6aTpzIiwgJHRtKyRzdGFtcG9mZiskZGlm Zik7DQoJCQkJCQkkZmFrZXJvd1sndUV4cGlyZXMnXSA9ICR0bSskc3RhbXBvZmYrJGRpZmY7 DQoJCQkJCX0NCgkJCQkJJGFsbF9ldnNbXSA9ICRmYWtlcm93Ow0KCQkJCQkkZXZfdGFsbHlb JGZha2Vyb3dbJ3VQb3N0ZWQnXV0gPSAoaXNzZXQoJGV2X3RhbGx5WyRmYWtlcm93Wyd1UG9z dGVkJ11dKSkgPyAkZXZfdGFsbHlbJGZha2Vyb3dbJ3VQb3N0ZWQnXV0rMSA6IDE7DQoJCQkJ fQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKCRzdGVwZmllbGQgJiYgJHJvd1skc3RlcGZpZWxkXSAh PSAnJykgew0KCQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0ZXBmaWVsZF0pOw0KCQkJJG1v bnRobHkgPSBmYWxzZTsNCgkJCSRjc3RhbXAgPSAkZXZfcG9zdGVkOw0KCQkJJGN1cnJtb250 aCA9ICRldl9tb250aDsNCgkJCSRjdXJyeWVhciA9ICRldl95ZWFyOw0KCQkJZm9yZWFjaCAo JGZyZXEgYXMgJGludGVydmFsKSB7DQoJCQkJJGZha2Vyb3cgPSAkcm93Ow0KCQkJCSRzdGFt cG9mZiA9IDA7DQoJCQkJZm9yKCRpZHggPSAwOyAkaWR4IDwgOTk5OTk7ICRpZHgrKykgew0K CQkJCQkkbHN0YW1wID0gJGNzdGFtcDsNCgkJCQkJaWYgKChpc3NldCgkZXZfdGFsbHlbJHJv d1sndVBvc3RlZCddXSkgJiYgKCRldl90YWxseVskcm93Wyd1UG9zdGVkJ11dID49ICRldmVu dGxpbWl0WzBdKSkgfHwgKCR0byAmJiAkY3N0YW1wID4gc3RydG90aW1lKCR0bykpKSB7DQoJ CQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQkkaXZhbCA9IHN0cl9yZXBsYWNlKCI/bW9udGgi LCBkYXRlKCdGJywgZ21ta3RpbWUoMCwwLDAsJGN1cnJtb250aCwxKSksICRpbnRlcnZhbCk7 DQoJCQkJCSRpdmFsID0gc3RyX3JlcGxhY2UoIj95ZWFyIiwgJGN1cnJ5ZWFyLCAkaXZhbCk7 DQoNCgkJCQkJaWYgKHN0cnBvcygkaXZhbCwgImxhc3QiKSA9PT0gMCkgew0KCQkJCQkJJGl2 YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUoJGl2YWwsIG1rdGltZSgxMiwgMCwg MCwgZGF0ZSgibiIsbWt0aW1lKDAsMCwwLCRjdXJybW9udGgsMSwkY3VycnllYXIpKSsxLCAx LCAkY3VycnllYXIpKSk7DQoJCQkJCQkkbW9udGhseSA9IHRydWU7DQoJCQkJCX0gZWxzZSBp ZiAoc3RycG9zKCRpdmFsLCAiZmlyc3QiKSA9PT0gMCkgew0KCQkJCQkJJGl2YWwgPSBkYXRl KCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUoJGl2YWwsIG1rdGltZSgxMiwgMCwgMCwgKCgkY3Vy cm1vbnRoPjEpID8gJGN1cnJtb250aC0xIDogMTIpLCBkYXRlKCJ0Iixta3RpbWUoMCwwLDAs JGN1cnJtb250aC0xLDEsKCgkY3Vycm1vbnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3Vycnll YXIpKSksICgoJGN1cnJtb250aD09MSkgPyAkY3VycnllYXItMTogJGN1cnJ5ZWFyKSkpKTsN CgkJCQkJCSRtb250aGx5ID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCQlpZiAoc3RycG9zKCRpbnRl cnZhbCwgIj9tb250aCIpIHx8IHN0cnBvcygkaW50ZXJ2YWwsICI/eWVhciIpKSB7DQoJCQkJ CQkkbW9udGhseSA9IHRydWU7DQoJICAgICAgICAgICAgfQ0KDQoJCQkJCWlmICgkbW9udGhs eSkgew0KCQkJCQkJJGNzdGFtcCA9IHN0cnRvdGltZSgkaXZhbCk7DQoJCQkJCQkkc3RhbXBv ZmYgPSAoJHN0YW1wb2ZmPT0wKSA/IChpbnQpKDM2MDAqJGV2X2hyKSArIChpbnQpKDYwKiRl dl9tbikgKyAoaW50KSRldl9zYyA6ICRzdGFtcG9mZjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJ CSRjc3RhbXAgPSBzdHJ0b3RpbWUoJGl2YWwsICRjc3RhbXApOw0KCQkJCQl9DQoNCgkJCQkJ JGRpZmZzdGFtcCA9ICRjc3RhbXAgLSAkbHN0YW1wOw0KCQkJCQlpZiAoJGRpZmZzdGFtcCA8 IDApIHsNCgkJCQkJCWlmICgkZGlmZnN0YW1wID4gLSg2MCo2MCoyNCozMSkrNjAwKSB7DQoJ CQkJCQkJJGNzdGFtcCA9IGZhbHNlOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlicmVhazsN CgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoJGNzdGFtcCAhPT0gZmFsc2UpIHsNCgkJCQkJ CWlmICgkZGVidWcgPiAxKSB7DQoJCQkJCQkJZG1wKCJJTlRFUlZBTDogIi4gJGNzdGFtcCAu ICcgLy8gJyAuZGF0ZSgnZC1NLVkgSDppOnMnLCAkY3N0YW1wKSk7DQoJCQkJCQl9DQoNCgkJ CQkJCWlmICgoJGNzdGFtcCA8ICRldl9leHBpcmVzIHx8ICRldl9leHBpcmVzID09ICcwJykg JiYgKCRjc3RhbXAgIT0gJGV2X3Bvc3RlZCkpIHsNCgkJCQkJCQkkc2hvd19tZSA9IHNtZF9p bmNsdWRlX2V2ZW50KCRjc3RhbXAsICRub3csICRpZ25vcmUsICR0aW1lLCAkZnJvbSwgJHRv LCAkbW9udGgpOw0KCQkJCQkJCWlmICgkc2hvd19tZSkgew0KCQkJCQkJCQkkZmFrZXJvd1sn UG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBIOmk6cyIsICRjc3RhbXArJHN0YW1wb2ZmKTsNCgkJ CQkJCQkJJGZha2Vyb3dbJ3VQb3N0ZWQnXSA9ICRjc3RhbXArJHN0YW1wb2ZmOw0KCQkJCQkJ CQkkYWxsX2V2c1tdID0gJGZha2Vyb3c7DQoJCQkJCQkJCSRldl90YWxseVskcm93Wyd1UG9z dGVkJ11dID0gKGlzc2V0KCRldl90YWxseVskcm93Wyd1UG9zdGVkJ11dKSkgPyAkZXZfdGFs bHlbJHJvd1sndVBvc3RlZCddXSsxIDogMTsNCgkJCQkJCQl9DQoJCQkJCQl9IGVsc2Ugew0K CQkJCQkJCWJyZWFrOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWlmICgkbW9udGhseSkgew0K CQkJCQkJJGN1cnJ5ZWFyID0gKCRjdXJybW9udGg9PTEyKSA/ICRjdXJyeWVhcisxIDogJGN1 cnJ5ZWFyOw0KCQkJCQkJJGN1cnJtb250aCA9ICgkY3Vycm1vbnRoPT0xMikgPyAxIDogJGN1 cnJtb250aCsxOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmICgkZGVidWc+MSkgew0KCQkJCQlp ZiAoaXNzZXQoJGV2X3RhbGx5WyRyb3dbJ3VQb3N0ZWQnXV0pKSB7DQoJCQkJCQlkbXAoIlRB TExZOiAiLiAkZXZfdGFsbHlbJHJvd1sndVBvc3RlZCddXSk7DQoJCQkJCX0NCgkJCQl9DQoJ CQl9DQoJCX0gZWxzZSBpZiAoJGFsbHNwYW5uZWQgJiYgZGF0ZSgiZC1tLVkiLCAkZXZfZXhw aXJlcykgIT0gZGF0ZSgiZC1tLVkiLCAkZXZfcG9zdGVkKSkgew0KCQkJJHBvc3RkYXRlID0g ZGF0ZSgiZC1tLVkiLCAkZXZfcG9zdGVkKTsNCgkJCSRmYWtlX2RpZmYgPSBzdHJ0b3RpbWUo ZGF0ZSgiWS1NLWQiLCAkZXZfZXhwaXJlcykgLiAiIDIzOjU5OjU5Iik7DQoJCQkkZGlmZiA9 ICgkZXZfZXhwaXJlcz09MCkgPyAwIDogJGZha2VfZGlmZiAtICRldl9wb3N0ZWQ7DQoJCQkk c3BpZHRoID0gY2VpbCgkZGlmZiAvICg2MCo2MCoyNCkpOw0KCQkJZm9yICgkamR4ID0gMTsg JGpkeCA8PSAkc3BpZHRoOyAkamR4KyspIHsNCgkJCQkkdG0gPSBzdHJ0b3RpbWUoJHBvc3Rk YXRlLicrJy4kamR4LicgZGF5cycpOw0KCQkJCSRzaG93X21lID0gc21kX2luY2x1ZGVfZXZl bnQoJHRtLCAkbm93LCAkaWdub3JlLCAkdGltZSwgJGZyb20sICR0bywgJG1vbnRoKTsNCgkJ CQlpZiAoJHNob3dfbWUpIHsNCgkJCQkJJGZha2Vyb3cgPSAkcm93Ow0KCQkJCQkkZmFrZXJv d1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBIOmk6cyIsICR0bSk7DQoJCQkJCSRmYWtlcm93 Wyd1UG9zdGVkJ10gPSAkdG07DQoJCQkJCSRhbGxfZXZzW10gPSAkZmFrZXJvdzsNCgkJCQl9 DQoJCQl9DQoJCX0NCgl9DQoNCglpZiAoJGRlYnVnPjIpIHsNCgkJZWNobyAiKysgUFJFLVNP UlRFRCArKyI7DQoJCWRtcCgkYWxsX2V2cyk7DQoJfQ0KDQoJZm9yZWFjaCgkYWxsX2V2cyBh cyAka2V5ID0+ICRyb3cpIHsNCgkJZm9yZWFjaCAoJHJvdyBhcyAkaWRlbnRpZmllciA9PiAk aXRlbSkgew0KCQkJJHZhcm5hbWUgPSAiY29sXyIuJGlkZW50aWZpZXI7DQoJCQkkeyR2YXJu YW1lfVska2V5XSA9ICRpdGVtOw0KCQl9DQoJfQ0KCWlmKGNvdW50KCRhbGxfZXZzKSA+IDAp IHsNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0T3JkZXIpOyAkaWR4Kysp IHsNCgkJCSRzb3J0YXJnc1tdID0gJyRjb2xfJy4kc29ydE9yZGVyWyRpZHhdWydieSddOw0K CQkJJHNvcnRhcmdzW10gPSAkc29ydE9yZGVyWyRpZHhdWydkaXInXTsNCgkJfQ0KCQkkc29y dGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29ydGFyZ3MpLicsICRh bGxfZXZzKTsnOw0KCQlldmFsKCRzb3J0aXQpOw0KCX0NCg0KCWlmICgkZGVidWc+Mikgew0K CQllY2hvICIrKyBQT1NULVNPUlRFRCArKyI7DQoJCWRtcCgkYWxsX2V2cyk7DQoJfQ0KDQoJ aWYgKCRwYWdpbmcpIHsNCgkJJGdyYW5kX3RvdGFsID0gY291bnQoJGFsbF9ldnMpOw0KCQkk dG90YWwgPSAkZ3JhbmRfdG90YWwgLSAkb2Zmc2V0Ow0KCQkkbnVtUGFnZXMgPSBjZWlsKCR0 b3RhbC8kcGFnZWJ5KTsNCgkJJHBnID0gKCEkcHJldGV4dFsncGcnXSkgPyAxIDogJHByZXRl eHRbJ3BnJ107DQoJCSRwZ29mZnNldCA9ICRvZmZzZXQgKyAoKCRwZyAtIDEpICogJHBhZ2Vi eSk7DQoJCSRwYWdlb3V0WydwZyddID0gJHBnOw0KCQkkcGFnZW91dFsnbnVtUGFnZXMnXSA9 ICRudW1QYWdlczsNCgkJJHBhZ2VvdXRbJ3MnXSA9ICRwcmV0ZXh0WydzJ107DQoJCSRwYWdl b3V0WydjJ10gPSAkcHJldGV4dFsnYyddOw0KCQkkcGFnZW91dFsnZ3JhbmRfdG90YWwnXSA9 ICRncmFuZF90b3RhbDsNCgkJJHBhZ2VvdXRbJ3RvdGFsJ10gPSAkdG90YWw7DQoNCgkJaWYg KGVtcHR5KCR0aGlzcGFnZSkpDQoJCQkkdGhpc3BhZ2UgPSAkcGFnZW91dDsNCgkJaWYgKCRw Z29ubHkpDQoJCQlyZXR1cm47DQoJfSBlbHNlIHsNCgkJJHBnb2Zmc2V0ID0gJG9mZnNldDsN Cgl9DQoNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY3RyID0gMDsNCglhcnRpY2xlX3B1c2goKTsN Cglmb3JlYWNoICgkYWxsX2V2cyBhcyAkaWR4ID0+ICRyb3cpIHsNCgkJaWYgKCRpZHggPj0g JHBnb2Zmc2V0ICYmICRjdHIgPCAkbGltaXQpIHsNCgkJCXBvcHVsYXRlQXJ0aWNsZURhdGEo JHJvdyk7DQoJCQkkb3V0W10gPSAoJHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRmb3Jt KSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogaHJlZigkcm93WydQb3N0ZWQnXSwgcGVybWxpbmt1 cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUnXS4nIicpICk7DQoJCQkkY3RyKys7 DQoJCX0NCgl9DQoJYXJ0aWNsZV9wb3AoKTsNCglyZXR1cm4gZG9XcmFwKCRvdXQsICR3cmFw dGFnLCAkYnJlYWssICRjbGFzcyk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9pbmNsdWRlX2V2ZW50 KCR0cywgJG5vdywgJGlnbiwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250aCkgew0KCSRzaG93 ID0gYXJyYXkoKTsNCgkkc2hvd1tdID0gIWluX2FycmF5KGRhdGUoImQtTS1ZIiwgJHRzKSwg JGlnbik7DQoJc3dpdGNoKCR0aW1lKSB7DQoJCWNhc2UgImFueSI6IGJyZWFrOw0KCQljYXNl ICJmdXR1cmUiOiAkc2hvd1tdID0gKCR0cyA+ICRub3cpID8gdHJ1ZSA6IGZhbHNlOyBicmVh azsNCgkJZGVmYXVsdCA6ICRzaG93W10gPSAoJHRzIDwgJG5vdykgPyB0cnVlIDogZmFsc2U7 IGJyZWFrOw0KCX0NCglpZiAoJGZyb20pIHsgJHNob3dbXSA9ICgkdHMgPj0gc3RydG90aW1l KCRmcm9tKSkgPyB0cnVlIDogZmFsc2U7IH0NCglpZiAoJHRvKSB7ICRzaG93W10gPSAoJHRz IDw9IHN0cnRvdGltZSgkdG8pKSA/IHRydWUgOiBmYWxzZTsgfQ0KCWlmICgkbW9udGgpIHsg JHNob3dbXSA9IChkYXRlKCJZLW0iLCAkdHMpID09ICRtb250aCkgPyB0cnVlIDogZmFsc2U7 IH0NCg0KCXJldHVybiAoIWluX2FycmF5KDAsICRzaG93KSkgPyB0cnVlIDogZmFsc2U7DQp9 DQoNCmZ1bmN0aW9uIHNtZF9leHBhbmRfZGF0ZXJhbmdlKCRyYW5nZSwgJHN0YXJ0PScnLCAk ZW5kPScnLCAkZm10PSclcycpIHsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkcm5nID0gZG9fbGlz dCgkcmFuZ2UsICI9PiIpOw0KDQoJaWYgKGNvdW50KCRybmcpID4gMSkgew0KCQkvLyBSYW5n ZSBleHBhbnNpb24NCgkJJGRpZmYgPSBzdHJ0b3RpbWUoJHJuZ1sxXSkgLSBzdHJ0b3RpbWUo JHJuZ1swXSk7DQoJCSRkaWZmZGF5cyA9IGNlaWwoJGRpZmYgLyAoNjAqNjAqMjQpKTsNCgkJ Zm9yICgkamR4ID0gMDsgJGpkeCA8PSAkZGlmZmRheXM7ICRqZHgrKykgew0KCQkJJG91dFtd ID0gc2FmZV9zdHJmdGltZSgkZm10LCBzdHJ0b3RpbWUoJHJuZ1swXSAuICgoJGpkeD09MCkg PyAnJyA6ICcrJy4kamR4LicgZGF5cycpKSk7DQoJCX0NCgl9IGVsc2UgaWYgKCRzdGFydCAm JiAkZW5kICYmIHN0cnBvcygkcmFuZ2UsICd7JykgPT09IDAgJiYgc3RycG9zKCRyYW5nZSwg J30nKSA9PT0gc3RybGVuKCRyYW5nZSktMSkgew0KCQkvLyBEYXkgb2Ygd2VlayBleHBhbnNp b24NCgkJJGRheXMgPSBkb19saXN0KHRyaW0oJHJhbmdlLCd7fScpLCAnOicpOw0KCQkkZGlm ZmRheXMgPSBjZWlsKCgkZW5kLSRzdGFydCkgLyAoNjAqNjAqMjQpKTsNCgkJZm9yICgkamR4 ID0gMDsgJGpkeCA8PSAkZGlmZmRheXM7ICRqZHgrKykgew0KCQkJJHRtID0gJHN0YXJ0ICsg KCRqZHgqNjAqNjAqMjQpOw0KCQkJaWYgKGluX2FycmF5KGRhdGUoJ0QnLCAkdG0pLCAkZGF5 cykpIHsNCgkJCQkkb3V0W10gPSBzYWZlX3N0cmZ0aW1lKCRmbXQsICR0bSk7DQoJCQl9DQoJ CX0NCgl9IGVsc2Ugew0KCQkvLyBTaW5nbGUgZGF0ZQ0KCQkkb3V0W10gPSBzYWZlX3N0cmZ0 aW1lKCRmbXQsIHN0cnRvdGltZSgkcm5nWzBdKSk7DQoJfQ0KCXJldHVybiAkb3V0Ow0KfSI7 czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czox OiIwIjtzOjQ6ImhlbHAiO3M6NjQ0MjU6IjxkaXYgaWQ9InNtZF9oZWxwIj4KCgk8aDEgaWQ9 InRvcCI+c21kX2NhbGVuZGFyPC9oMT4KCgk8cD5SZW5kZXIgYSBjYWxlbmRhciB3aXRoIG9u ZSBvciBtb3JlIGFydGljbGVzIGFzIGV2ZW50cyBvbiBlYWNoIGRheS4gVXNlZnVsIGZvciBn aWcgZ3VpZGVzLCAmIzgyMjA7d2hhdCYjODIxNztzIG9uJiM4MjIxOyBvciBzY2hlZHVsaW5n IGFwcHMuPC9wPgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJ PGxpPkZ1bGwvbWluaSBjYWwgYnkgbW9udGgsIHdpdGggb3B0aW9uYWwgaXNvIHdlZWs8L2xp PgoJCTxsaT5OYXY6IG5leHQvcHJldiBtb250aCBvciBtb250aC95ZWFyIGRyb3Bkb3duLiBZ ZWFyIHJhbmdlIGNhbiBiZSBmcm9tIGZpcnN0L2xhc3QgYXJ0aWNsZSBvciArLy0gTiB5ZWFy cyBpbiBlaXRoZXIgZGlyZWN0aW9uPC9saT4KCQk8bGk+T25lIGFydGljbGUgPSBvbmUgZXZl bnQsIG5hdGl2ZSB0byBUZXh0cGF0dGVybjogUG9zdGVkIGRhdGUgPSB0aGUgZGF0ZSBpdCBh cHBlYXJzIGluIHRoZSBjYWxlbmRhciAodW5sZXNzIG92ZXJyaWRkZW4pPC9saT4KCQk8bGk+ RmlsdGVyIGV2ZW50cyBieSBjYXRlZ29yeSAvIHNlY3Rpb24gLyBhdXRob3IgLyBzdGF0dXMg LyB0aW1lIG9yIGV4cGlyeTwvbGk+CgkJPGxpPkN1c3RvbSBmaWVsZCB0byBzcGVjaWZ5IGV2 ZW50IGZyZXF1ZW5jeSAoMSB3ZWVrIC8gMTAgZGF5cyAvIDMgbW9udGhzIC8gZXRjKTwvbGk+ CgkJPGxpPkN1c3RvbSBmaWVsZHMgZm9yIGluL2V4Y2x1c2lvbnMgKGEgbGlzdCBvZiBkYXRl cyBvbiB3aGljaCB0aGF0IGV2ZW50IGlzIChyZSlzY2hlZHVsZWQvY2FuY2VsbGVkL29taXR0 ZWQpPC9saT4KCQk8bGk+TXVsdGktZGF5IHNwYW5uZWQgZXZlbnRzIGJhc2VkIG9uIHRoZSBh cnRpY2xl4oCZcyBleHBpcnk8L2xpPgoJCTxsaT5EaXNwbGF5IGZ1dHVyZSwgZXhwaXJlZCBv ciBzdGlja3kgZXZlbnRzPC9saT4KCQk8bGk+SG9saWRheXMgb24gYSBwZXItY2FsZW5kYXIg YmFzaXM8L2xpPgoJCTxsaT5FYWNoIGV2ZW50IGNhbiBiZSBwYXNzZWQgdG8gYSBmb3JtL2Nv bnRhaW5lciBzbyB5b3UgY2FuIGJ1aWxkIGl0IHlvdXIgd2F5LiBTcGFubmVkIGFuZC9vciBy ZWN1cnJpbmcgZXZlbnRzIGNhbiBiZSBzZW50IHRvIGEgc2VwYXJhdGUgZm9ybS4gT3Igc2Vu ZCB0aGUgZW50aXJlIGNlbGwgdG8gYSBmb3JtPC9saT4KCQk8bGk+Q29uZGl0aW9uYWwgdGVz dHMgZm9yIGZsYWdzIGFuZCBkYXRlcyBzbyB5b3UgY2FuIGJ1aWxkIHlvdXIgb3duIGxvZ2lj PC9saT4KCQk8bGk+VGFibGUtLCByb3ctLCBjZWxsLSwgYW5kIGV2ZW50LWxldmVsIGNsYXNz ZXMgZm9yIGluZGljYXRpbmcgZGlmZmVyZW50IHNjZW5hcmlvczsgY3VzdG9tIGNsYXNzZXMg Y2FuIGJlIGRlZmluZWQ8L2xpPgoJCTxsaT5UYWdzIHRvIGRpc3BsYXkgcmVjdXJyaW5nIGV2 ZW50cyA7IGV2ZW50L2NhbGVuZGFyIGNoYXJhY3RlcmlzdGljcyA7IG9yIHRoZSBjdXJyZW50 IGRhdGUvdGltZTwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iYXV0aG9yIj5BdXRob3IgLyBjcmVk aXRzPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZv cm0iPlN0ZWYgRGF3c29uPC9hPi4gSm9pbnRseSBmdW5kZWQgYnkgZ2VuZXJvdXMgZG9uYXRv cnM6IG1yZGFsZSwgd29vZiwgamFrb2IsIHJlbm9iaXJkIGFuZCBqb2ViYWljaC4gQmFzZWQg b3JpZ2luYWxseSBvbiBtZHBfY2FsZW5kYXIuIEFsbCBwcm9wcyB0byB0aGUgb3JpZ2luYWwg YXV0aG9yLCBhbmQgb2YgY291cnNlIHRoZSBjbGFzcyB1cG9uIHdoaWNoIHRoZSBjYWxlbmRh ciBpcyBiYXNlZC4gQW5kIG5vdCBmb3JnZXR0aW5nIG91ciBhd2Vzb21lIFRleHRwYXR0ZXJu IGRldnMgd2hvIGNvbnRpbnVlIHRvIHB1c2ggdGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+Q01T PC9zcGFuPiB0byB0aGUgc3RhcnMuPC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0 aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwIGNsYXNzPSJyZXF1aXJlZCI+UmVxdWly ZXMgVGV4dHBhdHRlcm4gNC4wLjcrPC9wPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJv bSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzEwNTIv c21kX2NhbGVuZGFyIj50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgPGEgaHJlZj0iaHR0 cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhlIGNv ZGUgaW50byB0aGUgVGV4dHBhdHRlcm4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0 YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9m b3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yOTM3NSI+Zm9ydW0gdGhy ZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBv dGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBkZWxldGUg ZnJvbSB0aGUgQWRtaW4gLSZndDsgUGx1Z2lucyBwYWdlLjwvcD4KCgk8aDIgaWQ9Im5hbWlu ZyI+TmFtaW5nIGNvbnZlbnRpb248L2gyPgoKCTxwPlRoZSBjb3JlIG9mIHRoZSBwbHVnaW4g aXMgdGhlIHNtZF9jYWxlbmRhciB0YWcsIHdoaWNoIHJlbmRlcnMgYSBzdGFuZGFyZCBjYWxl bmRhciB3aXRoIGVhY2ggY2VsbCBjb250YWluaW5nIG9uZSBvciBtb3JlIGV2ZW50cy4gQmVm b3JlIGRpdmluZyBpbnRvIHRoZSB0YWdzIHRoZXJlJiM4MjE3O3MgYSBsaXR0bGUgYml0IG9m IG5vbWVuY2xhdHVyZSB0byBncmFzcDo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Y2FsaWQ8L3NwYW4+IDogeW91IG1heSBwdXQgbW9yZSB0aGFuIG9uZSBjYWxlbmRh ciBvbiBhIHBhZ2U6IGVhY2ggY2FuIGJlIHVuaXF1ZWx5IHJlZmVyZW5jZWQgd2l0aCBhIGNh bGVuZGFyIElEPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNlbGw8L3NwYW4+IDog YSBzcGVjaWZpYyBkYXkgb24gdGhlIGNhbGVuZGFyIGluIGEgcGFydGljdWxhciBtb250aC95 ZWFyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50PC9zcGFuPiA6IGFuIGFy dGljbGUuIEl0JiM4MjE3O3MgYmVzdCB0byB1c2UgYSBkZWRpY2F0ZWQgc2VjdGlvbiBmb3Ig ZXZlbnRzIHRvIGtlZXAgdGhpbmdzIG5lYXRlciwgYnV0IHlvdSBjYW4gZGlzcGxheSBldmVu dHMgZnJvbSBtb3JlIHRoYW4gb25lIHNlY3Rpb24gaWYgeW91IHdpc2guIEFueSBhcnRpY2xl IHdyaXR0ZW4gaW4gdGhlIGdpdmVuIHNlY3Rpb24ocykgd2lsbCBhcHBlYXIgb24gdGhlIGNh bGVuZGFyIGFzIGxvbmcgYXMgaXRzIGV4cGlyeSBoYXNuJiM4MjE3O3QgYmVlbiBtZXQuIE1v cmUgdGhhbiBvbmUgZXZlbnQgbWF5IGFwcGVhciBpbiBlYWNoIGNlbGw8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2VsbCBmbGFnPC9zcGFuPiA6IGEgc2VyaWVzIG9mIGZsYWdz IGFyZSB1c2VkIHRvIGxhYmVsIGVhY2ggY2VsbCBhY2NvcmRpbmcgdG8gd2hhdCBpdCBjb250 YWlucy4gQ2VsbHMgY2FuIGVpdGhlciBiZSA8Y29kZT5lbXB0eTwvY29kZT4gKGkuZS4gbm8g ZGF0ZTogdGhlIGZpbGxlciBjZWxscyBhdCB0aGUgc3RhcnQvZW5kIG9mIHRoZSBtb250aCks IHRoZXkgY2FuIGJlIGEgcmVndWxhciBkYXkgKG5vIGZsYWcpLCB0aGV5IGNhbiBjb250YWlu IGFuIDxjb2RlPmV2ZW50PC9jb2RlPiwgb3IgbWF5IGJlIGEgaG9saWRheSAoPGEgaHJlZj0i I2hvbGlkYXlzIj5ob2xzPC9hPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZl bnQgZmxhZzwvc3Bhbj4gOiBlYWNoIGNlbGwgY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgZXZl bnRzLiBFdmVudHMgY2FuIGVpdGhlciBiZSA8YSBocmVmPSIjZXZlbnRzIj5zdGFuZGFyZDwv YT4sIHRoZXkgY2FuIDxhIGhyZWY9IiNyZWN1ciI+cmVjdXI8L2E+LCB0aGV5IGNhbiBzcGFu IG1vcmUgdGhhbiBvbmUgZGF5ICg8YSBocmVmPSIjbXVsdGkiPm11bHRpPC9hPiksIGRhdGVz IGNhbiBiZSB1bnNjaGVkdWxlZCBvciBvbWl0dGVkICg8YSBocmVmPSIjY2FuY2VsIj5jYW5j ZWwgLyBvbWl0PC9hPikgZnJvbSB0aGUgY2FsZW5kYXIsIG9yIDxhIGhyZWY9IiNleHRyYSI+ ZXh0cmE8L2E+IGRhdGVzIGNhbiBiZSBhZGRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5jbGFzcyBsZXZlbDwvc3Bhbj4gOiAoZXhwbG9yZWQgaW4gdGhlIDxhIGhyZWY9IiNh dHRzdHlsZXMiPmNsYXNzbGV2ZWxzPC9hPiBhdHRyaWJ1dGUpLiBFYWNoIGZsYWdnZWQgY2Vs bCBjYW4gYmUgZ2l2ZW4gYSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBi YXNlZCBvbiBpdHMgZmxhZyBuYW1lKHMpLiBUaGUgY2xhc3MgbmFtZXMgYXJlIHNpbXBseSBl YWNoIGZsYWcgbmFtZSBwcmVmaXhlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbiBpbiB0aGUgPGNv ZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gYXR0cmlidXRlLiBTdWNoIGNsYXNzZXM6Cgk8dWw+ CgkJPGxpPmFwcGVhciBpbiBhIGNlbGwsIHNvIHlvdSBjYW4gc3R5bGUgdGhlIHdob2xlIGNl bGw8L2xpPgoJCTxsaT5hcHBlYXIgb24gZWFjaCBldmVudCwgc28geW91IGNhbiBzdHlsZSBw YXJ0aWN1bGFyIHR5cGVzIG9mIGV2ZW50PC9saT4KCQk8bGk+bWF5IGJlICYjODIxNjtjb3Bp ZWQmIzgyMTc7IGZyb20gdGhlIGV2ZW50IHRvIHRoZSBjZWxsIGl0c2VsZiwgc28geW91IGNh biBzdHlsZSB0aGUgd2hvbGUgY2VsbCBiYXNlZCBvbiB0aGUgZXZlbnRzIGl0IGNvbnRhaW5z PC9saT4KCTwvdWw+PC9saT4KCTwvdWw+CgoJPHA+RmxhZ3MgcHJvdmlkZSBpbmZvcm1hdGlv biA8ZW0+YWJvdXQ8L2VtPiB0aGUgY2VsbCAvIGV2ZW50ICAmIzgyMTI7IGFuZCBjYW4gYmUg dGVzdGVkIHdpdGggdGhlIGNvbmRpdGlvbmFsIHRhZyAmIzgyMTI7IHdoaWxlIHRoZSBjb3Jy ZXNwb25kaW5nIGNsYXNzIG5hbWVzIGFyZSBqdXN0IHRoZXJlIGZvciB5b3VyIDxzcGFuIGNs YXNzPSJjYXBzIj5DU1M8L3NwYW4+IHVzZS48L3A+CgoJPHA+V2hlbiBhc3NpZ25lZCBhcyBj bGFzc2VzLCBmbGFncyA8c3Ryb25nPmFsd2F5czwvc3Ryb25nPiB0YWtlIHRoZSAmIzgyMTY7 Y2xhc3MmIzgyMTc7IHByZWZpeCAoaS5lLiB0aGUgMXN0IGl0ZW0gZ2l2ZW4gaW4gc21kX2Nh bGVuZGFyJiM4MjE3O3MgPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gYXR0cmlidXRlKSAm IzgyMTI7IHdoZXRoZXIgdGhleSBhcHBlYXIgYXQgdGhlIDxlbT5ldmVudDwvZW0+IG9yIDxl bT5jZWxsPC9lbT4gbGV2ZWxzLiBUaGUgb25seSBjbGFzc2VzIHRoYXQgdGFrZSB0aGUgb3B0 aW9uYWwgMm5kICYjODIxNjtldmVudCYjODIxNzsgcHJlZml4IGFyZSB0aGUgZmllbGRzIHlv dSBzcGVjaWZ5IGluIHRoZSA8Y29kZT5ldmVudGNsYXNzZXM8L2NvZGU+IGF0dHJpYnV0ZS48 L3A+CgoJPHA+SXQmIzgyMTc7cyBhbHNvIHdvcnRoIGJlYXJpbmcgaW4gbWluZCB0aGUgPGEg aHJlZj0iI2RhdGVzIj5kYXRlIGNhdmVhdHM8L2E+IHRoYXQgbWF5IHdlbGwgYml0ZSB5b3Uu PC9wPgoKCTxoMiBpZD0iZXZlbnRzIj5TdGFuZGFyZCBjZWxscyBhbmQgZXZlbnRzPC9oMj4K Cgk8cD5UaGUgZm9sbG93aW5nIGN1bXVsYXRpdmUgbmFtaW5nIHJ1bGVzIGFwcGx5OjwvcD4K Cgk8dWw+CgkJPGxpPk5vcm1hbCAoZGF5KSBjZWxscyBkb24mIzgyMTc7dCBoYXZlIGEgY2xh c3MgYXNzaWduZWQgdG8gdGhlbSB1bmxlc3MgeW91IHNwZWNpZnkgb25lIHdpdGggPGNvZGU+ Y2VsbGNsYXNzPC9jb2RlPjwvbGk+CgkJPGxpPkFueSBjZWxsIHRoYXQgY29udGFpbnMgYW4g ZXZlbnQgKG9mIGFueSB0eXBlKSBpcyBmbGFnZ2VkIGFzIGFuIDxjb2RlPmV2ZW50PC9jb2Rl PjwvbGk+CgkJPGxpPkFueSBjZWxsIHRoYXQgZmFsbHMgb24gYSBob2xpZGF5IGlzIGdpdmVu IHRoZSBmbGFnIDxjb2RlPmhvbHM8L2NvZGU+PC9saT4KCQk8bGk+VGhlIGN1cnJlbnQgZGF5 IGlzIGdpdmVuIHRoZSBmbGFnIDxjb2RlPnRvZGF5PC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxw PkEgc2luZ2xlIGV2ZW50IChha2EgYXJ0aWNsZSkgd2l0aCBhIFBvc3RlZCBkYXRlIHdpbGwg YmUgZmxhZ2dlZCA8Y29kZT5zdGFuZGFyZDwvY29kZT4sIHVubGVzcyBpdCByZWN1cnMgb3Ig c3BhbnMgbW9yZSB0aGFuIG9uZSBkYXkuPC9wPgoKCTxoMiBpZD0icmVjdXIiPlJlY3Vycmlu ZyBldmVudHM8L2gyPgoKCTxwPklmIHlvdSBoYXZlIG5vbWluYXRlZCBhIGZpZWxkIGFzIHlv dXIgPGNvZGU+c3RlcGZpZWxkPC9jb2RlPiB5b3UgbWF5IGVudGVyIGEgY29tbWEtc2VwYXJh dGVkIGxpc3Qgb2YgZnJlcXVlbmNpZXMgYXQgd2hpY2ggdGhlIGV2ZW50IGlzIHRvIHJlcGVh dC4gVGhlIGZvcm1hdCBvZiB0aGUgcmVwZXRpdGlvbiBpcyA8c3Ryb25nPm51bWJlciBpbnRl cnZhbDwvc3Ryb25nPiwgZS5nLiA8Y29kZT40IHdlZWtzPC9jb2RlPiBvciA8Y29kZT4xMCBk YXlzPC9jb2RlPiBvciA8Y29kZT42IG1vbnRoczwvY29kZT4uIFRoZSBwbHVnaW4gd2lsbCBk byBpdHMgYmVzdCB0byBmaWd1cmUgb3V0IHdoYXQgeW91IG1lYW4uIFNlZSA8YSBocmVmPSJo dHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGFyL21hbnVhbC9odG1sX25vZGUvRGF0ZS1p bnB1dC1mb3JtYXRzLmh0bWwiPmRhdGUgaW5wdXQgZm9ybWF0czwvYT4gZm9yIG1vcmUuPC9w PgoKCTxwPkEgZmV3IHBvaW50czo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5zZWNvbmQgdHVl c2RheTwvY29kZT4gd2lsbCBzaG93IGFuIGV2ZW50IDxlbT5ldmVyeTwvZW0+IDJuZCBUdWVz ZGF5IGZyb20gdGhlIHN0YXJ0IGRhdGUgKGkuZS4gZm9ydG5pZ2h0bHkpPC9saT4KCQk8bGk+ PGNvZGU+c2Vjb25kIHR1ZXNkYXkgP21vbnRoID95ZWFyPC9jb2RlPiB3aWxsIHN1YnN0aXR1 dGUgdGhlIGN1cnJlbnQgbW9udGggYW5kIHllYXIgaW4gZmlyc3QsIGFuZCA8ZW0+dGhlbjwv ZW0+IGNhbGN1bGF0ZSB0aGUgZGF0ZSwgcmVzdWx0aW5nIGluIHRoZSBldmVudCBvbmx5IHJl Y3VycmluZyBvbiB0aGUgMm5kIFR1ZXNkYXkgb2YgZWFjaCBtb250aC4gWW91IDxzdHJvbmc+ bXVzdDwvc3Ryb25nPiB1c2UgYm90aCA8Y29kZT4/bW9udGg8L2NvZGU+IGFuZCA8Y29kZT4/ eWVhcjwvY29kZT4gaWYgeW91IGNob29zZSB0aGlzIHR5cGUgb2YgZGF0ZSBvciB5b3VyIGV2 ZW50IHdvbiYjODIxNzt0IGFwcGVhcjwvbGk+CgkJPGxpPjxjb2RlPjIwID9tb250aDwvY29k ZT4gd2lsbCBzaG93IHRoZSBldmVudCBvbiB0aGUgMjB0aCBvZiBldmVyeSBtb250aDwvbGk+ CgkJPGxpPnRoaW5ncyBsaWtlIDxjb2RlPmZpcnN0IHRodXJzZGF5PC9jb2RlPiBvciA8Y29k ZT5sYXN0IGZyaWRheTwvY29kZT4gZG9uJiM4MjE3O3QgbmVlZCB0aGUgPGNvZGU+P21vbnRo PC9jb2RlPiBvciA8Y29kZT4/eWVhcjwvY29kZT4gYmVjYXVzZSB0aGV5IGNhbiA8ZW0+b25s eTwvZW0+IG9jY3VyIG1vbnRobHksIGFuZCB3aWxsIG9ubHkgc2hvdyB0aGUgZXZlbnQgb24g dGhlIGdpdmVuIGZpcnN0L2xhc3QgZGF5IG9mIHRoZSBtb250aDwvbGk+Cgk8L3VsPgoKCTxw PklmIHlvdSBjYW4gZmluZCBhIHVzZSBmb3IgaXQsIHlvdSBtYXkgc3BlY2lmeSBtdWx0aXBs ZSBmcmVxdWVuY2llcywgZm9yIGV4YW1wbGUgPGNvZGU+MyBkYXlzLCAxIHdlZWs8L2NvZGU+ LiBUaGF0IG1lYW5zIHlvdSB3b3VsZCBzZWUgdGhlIGV2ZW50IG9uIHRoZSAxc3QgZGF5LCB0 aGVuIHRoZSAzcmQsIDZ0aCwgN3RoLCA5dGgsIDEydGgsIDE0dGgsIDE1dGgsIDE4dGgsIDIx c3QsIDI0dGgmIzgyMzA7IGRheXMgdGhlcmVhZnRlci4gTm90ZSB0aGF0IHRoZSBldmVudCBv bmx5IG9jY3VycyBvbmNlIG9uIHRoZSAyMXN0IGRheSBldmVuIHRob3VnaCB0aGUgdHdvIGZy ZXF1ZW5jaWVzIGNsYXNoLjwvcD4KCgk8cD5SZWN1ciBydWxlczo8L3A+CgoJPHVsPgoJCTxs aT5UaGUgcmVwZXRpdGlvbiB3aWxsIGNvbnRpbnVlIGZvcmV2ZXI8c3VwIGNsYXNzPSJmb290 bm90ZSI+PGEgaHJlZj0iI2ZuMTUwMDgxNDY2ODQ5ZTA4ZDU3NzQ0ZTgiPjE8L2E+PC9zdXA+ IHVubGVzcyB5b3Ugc3BlY2lmeSBhbiBleHBpcnkgdGltZTwvbGk+CgkJPGxpPlRoZSB2ZXJ5 IGZpcnN0IGV2ZW50IG9mIGEgcmVjdXJyaW5nIHNldCB3aWxsIGJlIGZsYWdnZWQgd2l0aCA8 Y29kZT5yZWN1cmZpcnN0PC9jb2RlPjwvbGk+CgkJPGxpPkVhY2ggZm9sbG93aW5nIGNlbGwg dGhhdCBjb250YWlucyBhIHJlY3VycmluZyBldmVudCB3aWxsIGJlIGZsYWdnZWQgd2l0aCA8 Y29kZT5yZWN1cjwvY29kZT48L2xpPgoJCTxsaT5Cb3RoIGZsYWdzIGFyZSBhcHBsaWVkIHRv IHRoZSBldmVudCBhcyBjbGFzc2VzIHVzaW5nIHRoZSBjbGFzcyBwcmVmaXg8L2xpPgoJCTxs aT5SZXBlYXRlZCBldmVudHMgbWF5IGJlIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbGxlZCBv ciBvbWl0dGVkPC9hPiBvbiBhIHBlci1kYXRlIGJhc2lzPC9saT4KCTwvdWw+CgoJPHAgY2xh c3M9InNtYWxsIiBpZD0iZm4xNTAwODE0NjY4NDllMDhkNTc3NDRlOCI+PHN1cD4xPC9zdXA+ ICYjODIxNjtmb3JldmVyJiM4MjE3OyBpcyBsaW1pdGVkIHRvIDk5OTk5IHJlY3VycmVuY2Vz IHBlciBldmVudCwgb3IgMjc0IHllYXJzJiM4MjE3OyB3b3J0aCBvZiBkYWlseSBldmVudHMu IEVpdGhlciA8c3BhbiBjbGFzcz0iY2FwcyI+VU5JWDwvc3Bhbj4gd2lsbCBydW4gb3V0IG9m IGRhdGVzIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IHdpbGwgcnVuIG91dCBv ZiBtZW1vcnkgbG9uZyBiZWZvcmUgcmVhY2hpbmcgdGhpcyBsaW1pdCA6LSk8L3A+CgoJPGgy IGlkPSJtdWx0aSI+TXVsdGktZGF5IChzcGFubmVkKSBldmVudHM8L2gyPgoKCTxwPkFueSBl dmVudCB0aGF0IGhhczo8L3A+CgoJPHVsPgoJCTxsaT5hIHN0YXJ0IGRhdGU8L2xpPgoJCTxs aT5hbiBleHBpcnkgZGF0ZSB0aGF0IGlzIGEgZGF5IG9yIG1vcmUgbGF0ZXIgdGhhbiB0aGUg c3RhcnQgZGF0ZSwgYW5kPC9saT4KCQk8bGk+PGVtPmRvZXMgbm90PC9lbT4gaGF2ZSBhbnkg cmVwZXRpdGlvbiBpbiBpdHMgPGNvZGU+c3RlcGZpZWxkPC9jb2RlPjwvbGk+Cgk8L3VsPgoK CTxwPmlzIGZsYWdnZWQgYXMgYSA8Y29kZT5tdWx0aTwvY29kZT4uIEJ5IGRlZmF1bHQgdGhl IGZpcnN0IGV2ZW50IGlzIGRpc3BsYXllZCBpbiBmdWxsIGFuZCBlYWNoICYjODIxNjtjb250 aW51YXRpb24mIzgyMTc7IGV2ZW50IGlzIHNob3duIG9ubHkgYXMgYSByaWdodCBhcnJvdyBp biBzdWJzZXF1ZW50IGNlbGxzLiBFdmVudHMgbWF5IHNwYW4gbW9udGhzIG9yIHllYXJzIGFu ZCB0aGUgcGx1Z2luIGZpZ3VyZXMgZXZlcnl0aGluZyBvdXQgdXNpbmcgZmxhZyBydWxlczo8 L3A+CgoJPHVsPgoJCTxsaT5UaGUgZmlyc3QgY2VsbCBvZiBhIHNwYW5uZWQgc2V0IGlzIDxj b2RlPm11bHRpZmlyc3Q8L2NvZGU+PC9saT4KCQk8bGk+VGhlIGxhc3QgY2VsbCBpcyA8Y29k ZT5tdWx0aWxhc3Q8L2NvZGU+PC9saT4KCQk8bGk+RXZlcnkgb3RoZXIgY2VsbCBpcyBhIDxj b2RlPm11bHRpPC9jb2RlPiA8ZW0+ZXhjZXB0PC9lbT4gaWYgdGhlIGV2ZW50IHJvbGxzIG92 ZXIgaW50byB0aGUgbmV4dCBtb250aC4gSW4gdGhhdCBjYXNlLCB0aGUgZW50cnkgb24gdGhl IDFzdCBvZiB0aGUgbW9udGggaXMgYSA8Y29kZT5tdWx0aXByZXY8L2NvZGU+IHRvIGluZGlj YXRlIGl0IGJlbG9uZ3MgdG8gYSBwcmV2aW91cyBldmVudDwvbGk+CgkJPGxpPklmIHRoZSAx c3QgZGF5IG9mIHRoZSBtb250aCBpcyB0aGUgbGFzdCBkYXkgb2YgdGhlIGV2ZW50LCB0aGUg PGNvZGU+bXVsdGlwcmV2PC9jb2RlPiBpcyBkcm9wcGVkIGluIGZhdm91ciBvZiA8Y29kZT5t dWx0aWxhc3Q8L2NvZGU+PC9saT4KCTwvdWw+CgoJPHA+U3dpdGNoIG9mZiBzcGFubmluZyBj b21wbGV0ZWx5IHdpdGggPGNvZGU+c2hvd3NwYW5uZWQ9JnF1b3Q7MCZxdW90OzwvY29kZT4u IEV2ZW50cyB0aGF0IGhhdmUgYW4gZXhwaXJ5IGFyZSB0aGVuIGp1c3Qgc3RhbmRhcmQgZXZl bnRzLjwvcD4KCgk8cD4mIzgyMTY7Q29udGludWF0aW9uJiM4MjE3OyBjZWxscyBtYXkgYmUg cHJvY2Vzc2VkIHdpdGggYSBzZXBhcmF0ZSBmb3JtICg8Y29kZT5zcGFuZm9ybTwvY29kZT4p LiBJZiB5b3UgY2hvb3NlIG5vdCB0byB1c2UgYSA8Y29kZT5zcGFuZm9ybTwvY29kZT4sIHRo ZSBzdGFuZGFyZCA8Y29kZT5mb3JtPC9jb2RlPiBvciBjb250YWluZXIgd2lsbCBiZSB1c2Vk IGFuZCB5b3Ugd2lsbCBoYXZlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGRpZmZlcmVu dCBtdWx0aSBmbGFncyB5b3Vyc2VsZiB1c2luZyB0aGUgPGEgaHJlZj0iI2lmY2FsIj5jb25k aXRpb25hbCB0YWc8L2E+LjwvcD4KCgk8cD5Zb3UgY2FuIGFsc28gPGEgaHJlZj0iI2NhbmNl bCI+Y2FuY2VsIG9yIG9taXQ8L2E+IGRheXMgb2YgYSBzcGFubmVkIGV2ZW50IGluIHRoZSBz YW1lIG1hbm5lciBhcyB5b3UgZG8gd2l0aCA8YSBocmVmPSIjcmVjdXIiPnJlY3VycmluZyBl dmVudHM8L2E+LCBleGNlcHQgeW91IGNhbm5vdCBjYW5jZWwgdGhlIGZpcnN0IGRheTsgeW91 IHNob3VsZCBtb3ZlIHRoZSBldmVudCBzdGFydCBkYXRlIGFuZCBhcG9sb2dpc2UhPC9wPgoK CTxoMiBpZD0iY2FuY2VsIj5DYW5jZWxsaW5nIGFuZCBvbWl0dGluZyBldmVudHM8L2gyPgoK CTxwPlBsYW5zIGNoYW5nZSBhbmQgeW91IG1heSBmaW5kIHRoYXQgYSBnaWcgaGFzIHRvIGJl IGNhbmNlbGxlZC4gUGVyaGFwcyB5b3UgYWR2ZXJ0aXNlIGEgd2Vla2x5IGJvb3QgZmFpciBi dXQgdGhlIGZpZWxkIGlzIHdhdGVybG9nZ2VkIG9uZSB3ZWVrLiBObyBwcm9ibGVtOiBub21p bmF0ZSBhIDxjb2RlPnNraXBmaWVsZDwvY29kZT4gaW4geW91ciA8Y29kZT5zbWRfY2FsZW5k YXI8L2NvZGU+IHRhZyBhbmQgZW50ZXIgdGhlIGRhdGUgb2YgdGhlIGNhbmNlbGxlZCBldmVu dC48L3A+CgoJPHA+SWYgeW91IHJ1biBhIHRoZWF0cmUgd2ViIHNpdGUgdGhhdCBoYXMgYSAz LXdlZWsgcHJvZHVjdGlvbiBwZXJmb3JtYW5jZSBvbiB3ZWVrbmlnaHRzIG9ubHkuIEluc3Rl YWQgb2Ygc2V0dGluZyB1cCB0aHJlZSBzZXBhcmF0ZSBldmVudHMgJiM4MjEyOyBvbmUgZm9y IGVhY2ggd2VlayAmIzgyMTI7IG5vbWluYXRlIGFuIDxjb2RlPm9taXRmaWVsZDwvY29kZT4g YW5kIGxpc3QgdGhlIGRhdGVzIG9uIHdoaWNoIHRoZSBwZXJmb3JtYW5jZSBkb2VzIG5vdCBh aXIuIE9taXR0ZWQgZGF0ZXMgd2lsbCBub3QsIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLCBh cHBlYXIgb24gdGhlIGNhbGVuZGFyIGFuZCB0aGV5IG92ZXJyaWRlIGNhbmNlbGxlZCBkYXRl cy9ob2xpZGF5cy4gSWYgPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IG1vZGUgaXMgdXNlZCwgeW91 IHdpbGwgaG93ZXZlciBzZWUgYSBjZWxsIGZsYWcgbGFiZWxsZWQgPGNvZGU+b21pdDwvY29k ZT4gKHBsdXMgY2xhc3MgcHJlZml4KSBpbiBjYXNlIHlvdSBkbyB3aXNoIHRvIHN0eWxlIHN1 Y2ggY2VsbHMuPC9wPgoKCTxwPlRvIHNwZWNpZnkgdGhlIGRhdGVzIGluIGVpdGhlciBmaWVs ZCwgdXNlIGFueSBhY2NlcHRhYmxlIGRhdGUgZm9ybWF0LCBidXQgZGVyaXZhdGl2ZXMgb2Yg ZGQtbW9udGhuYW1lLXl5eXkgb3IgbW9udGhuYW1lLWRkLXl5eXkgYXJlIHRoZSBtb3N0IHVu YW1iaWd1b3VzIHRvIGF2b2lkIHByb2JsZW1zIChlLmcuIGlzICYjODIyMDsxLzUmIzgyMjE7 IEphbiA1dGggb3IgTWF5IDFzdCkuIFlvdSBjYW4gc3BlY2lmeSBhcyBtYW55IGNhbmNlbGxh dGlvbnMgb3Igb21pc3Npb25zIGFzIHlvdSBsaWtlOyBjb21tYS1zZXBhcmF0ZSBlYWNoIG9u ZS4gWW91IG1heSBhbHNvIHNwZWNpZnkgcmFuZ2VzIG9mIGRhdGVzIHRvIG9taXQvY2FuY2Vs IGJ5IHVzaW5nIHRoZSBub3RhdGlvbiA8Y29kZT5zdGFydCBkYXRlID0mZ3Q7IGVuZCBkYXRl PC9jb2RlPi48L3A+CgoJPHA+QnkgZGVmYXVsdCwgY2FuY2VsbGVkIGV2ZW50cyB3aWxsIG5v dCBhcHBlYXIgb24gdGhlIGNhbGVuZGFyLiBJZiB5b3UgdXNlIDxjb2RlPnNob3dza2lwcGVk PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoZSBldmVudCB3aWxsIGFwcGVhciBpbiB0aGUgY2Vs bCBhcyBub3JtYWwgYW5kIHRoZSA8Y29kZT5jYW5jZWw8L2NvZGU+IGZsYWcgd2lsbCBhcHBs eSB0byB0aGUgZXZlbnQgKGFuZCBjZWxsIGlmIHlvdSBjaG9vc2UpIHNvIHlvdSBtYXkgZGV0 ZWN0L3N0eWxlIGl0LjwvcD4KCgk8aDIgaWQ9ImV4dHJhIj5FeHRyYSBkYXRlczwvaDI+CgoJ PHA+V2hlbiBldmVudHMgYXJlIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbGxlZDwvYT4geW91 IG1heSBlbGVjdCB0byByZXNjaGVkdWxlIHRoZSBldmVudCBvbiBhIGRpZmZlcmVudCBkYXRl IGluc3RlYWQgb2YgaGF2aW5nIHRvIGNyZWF0ZSBhIG5ldyBldmVudCB3aXRoIGlkZW50aWNh bCBkZXRhaWxzLiBVc2UgdGhlIDxjb2RlPmV4dHJhZmllbGQ8L2NvZGU+IHRvIHNpbXBseSBh ZGQgaXQgdG8gdGhlIGNhbGVuZGFyIG9uIGl0cyBuZXcgZGF5LiBZb3UgbWlnaHQgYWxzbyB1 c2UgdGhpcyBmZWF0dXJlIGlmIHlvdSBoYXZlIGEgPGEgaHJlZj0iI3JlY3VyIj5yZWN1cnJp bmc8L2E+IGV2ZW50IG9uIHRoZSAxc3Qgb2YgZXZlcnkgbW9udGggYnV0IGZvciBzb21lIHJl YXNvbiB5b3UgaGF2ZSB0byBtb3ZlIG9uZSBvZiB0aGUgZXZlbnRzIGEgZGF5IG9yIHR3by4g U2ltcGx5IGNhbmNlbCB0aGUgb2ZmZW5kaW5nIGRhdGUgYW5kIGFkZCB0aGUgbmV3IGRhdGUg dXNpbmcgPGNvZGU+ZXh0cmFmaWVsZDwvY29kZT4uPC9wPgoKCTxwPlRoZSBsaXN0IG9mIGRh dGVzIGNhbiBiZSBpbiBhbnkgc3RhbmRhcmQgZGF0ZSBmb3JtYXQgKGluY2x1ZGluZyBkYXRl IHJhbmdlcyB1c2luZyA8Y29kZT5zdGFydCA9Jmd0OyBlbmQ8L2NvZGU+KS4gVGhleSB3aWxs IGJlIGFkZGVkIHRvIHRoZSBjYWxlbmRhciBhbmQgZmxhZ2dlZCBhcyA8Y29kZT5leHRyYTwv Y29kZT4uIEFsc28gc2VlIHRoZSA8Y29kZT5leHRyYXN0cmljdDwvY29kZT4gYXR0cmlidXRl LjwvcD4KCgk8cD5JZiB5b3VyIG9yaWdpbmFsIGV2ZW50IHNwYW5zIG1vcmUgdGhhbiBvbmUg ZGF5LCB5b3UgbWF5IGVsZWN0IHRvIHNjaGVkdWxlIHRoZSBlbnRpcmUgYmxvY2sgYWdhaW4u IEFkZCBhICYjODIxNjsrJiM4MjE3OyBhZnRlciBhbnkgZGF0ZSB5b3Ugd2lzaCB0byByZXBl YXQgaW4gaXRzIGVudGlyZXR5LCBlLmcuIDxjb2RlPjIwMDktTWFyLTEyKywgMjAwOS1KdW4t MTgrLCAyMDA5LUZlYi0xOTwvY29kZT4gd291bGQgY29weSB0aGUgZW50aXJlIGV2ZW50IGJs b2NrIHRvIE1hcmNoIGFuZCBKdW5lLCBidXQgb25seSB0aGUgMXN0IGRhdGUgdG8gRmViIDE5 dGguIEV2ZW50cy9jZWxscyBhcmUgZmxhZ2dlZCBhcyBib3RoIDxjb2RlPmV4dHJhPC9jb2Rl PiBhbmQgPGNvZGU+bXVsdGk8L2NvZGU+IHdoZXJlIGFwcGxpY2FibGUuPC9wPgoKCTxwPk5v dGVzOjwvcD4KCgk8dWw+CgkJPGxpPmlmIHlvdSBzY2hlZHVsZSBhbiBleHRyYSBldmVudCBv biBhIGRheSB0aGF0IGFscmVhZHkgY29udGFpbnMgdGhlIHNhbWUgZXZlbnQgKHBlcmhhcHMg b24gYSBzcGFubmVkIG9yIHJlY3VycmluZyBkYXRlKSB5b3UgbWF5IHNlZSB0d28gaWRlbnRp Y2FsIGV2ZW50cyBvbiB0aGUgc2FtZSBkYXkuIFRyeSBhbmQgYXZvaWQgdGhpcywgdW5sZXNz IGl0JiM4MjE3O3MgeW91ciBpbnRlbmRlZCBiZWhhdmlvdXI8L2xpPgoJCTxsaT5kYXRlIHJh bmdlcyBhbmQgdGhlICYjODIxNjsrJiM4MjE3OyBzeW50YXggYXJlIG11dHVhbGx5IGV4Y2x1 c2l2ZSBvbiBhbnkgZGF0ZSAoZS5nLiA8Y29kZT4yMDA5LU1hci0xMCsgPSZndDsgMjAwOS1N YXItMTU8L2NvZGU+IGlzIGlsbGVnYWwpPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJob2xpZGF5 cyI+SG9saWRheXM8L2gyPgoKCTxwPlB1YmxpYyBob2xpZGF5cyBuZWVkIG5vdCBiZSBhIG51 aXNhbmNlIHRvIHlvdXIgZXZlbnRzLiBHaXZlIHRoZSBwbHVnaW4gYSBob2xpZGF5IGxpc3Qg YW5kIGl0JiM4MjE3O2xsIG1ha2Ugc3VyZSBhbnkgcmVjdXJyaW5nIG9yIG11bHRpIGV2ZW50 cyBhcmUgbm90IHNjaGVkdWxlZCBvbiB0aG9zZSBkYXlzLiA8YSBocmVmPSIjZXZlbnRzIj5T dGFuZGFyZDwvYT4gb25lLW9mZiBldmVudHMgYXJlIHBlcm1pdHRlZCBieSBkZWZhdWx0IGJl Y2F1c2UgeW91IG1pZ2h0IHdhbnQgdG8gb3JnYW5pc2UgYSBzcGVjaWFsIGV2ZW50IG9uIHRo YXQgZGF5LCB0aG91Z2ggeW91IGNhbiBmb3JiaWQgdGhvc2UgdG9vIGlmIHlvdSB3aXNoLjwv cD4KCgk8cD5UaGUgbGlzdCBvZiBkYXRlcyB5b3Ugc3BlY2lmeSBjYW4gYmUgZW50ZXJlZCBk aXJlY3RseSBpbiBhIHN0cmluZyBpbiB0aGUgPGNvZGU+aG9saWRheXM8L2NvZGU+IGF0dHJp YnV0ZSBvciBpbiBhIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+OjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6dmFyaWFi bGUgbmFtZT0mcXVvdDtuYXRfaG9scyZxdW90OwogICAgIHZhbHVlPSZxdW90O0RlYyAyNSwg MjYgRGVjLCAzMS9EZWMsIEphbi0xLAogICAgICAgIE1heSA0IDIwMDksIDIwMDktMDgtMzEm cXVvdDsgLyZndDsKJmx0O3R4cDpzbWRfY2FsZW5kYXIgaG9saWRheXM9JnF1b3Q7dHhwdmFy Om5hdF9ob2xzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IGxpc3Qgc2hv d3Mgc29tZSBvZiB0aGUgdmFyaWV0eSBhbmQgYnJlYWR0aCBvZiBmb3JtYXRzIHRoZSBwbHVn aW4gYWxsb3dzLiBOb3RlIHRoYXQgZXZlbnRzIHdpdGhvdXQgYSB5ZWFyIG9jY3VyIG9uIHRo ZSBzYW1lIGRhdGUgZXZlcnkgeWVhciwgd2hlcmVhcyBvbmVzIHdpdGggYSB5ZWFyIHdpbGwg b25seSBvY2N1ciBvbiB0aGF0IHNwZWNpZmljIGRhdGUuPC9wPgoKCTxwPk9uY2UgeW91ciBk YXRlcyBhcmUgZGVmaW5lZCB5b3UgY29udHJvbCB3aGljaCBldmVudHMgYXJlIGFsbG93ZWQg dG8gZmFsbCBvbiB0aG9zZSBkYXRlcyB2aWEgPGNvZGU+aG9saWRheWZsYWdzPC9jb2RlPi4g Q29tYmluaW5nIHRoYXQgYXR0cmlidXRlLCA8Y29kZT5zaG93c3Bhbm5lZDwvY29kZT4sIDxj b2RlPnNob3dza2lwcGVkPC9jb2RlPiBhbmQgdGhlIGZvcm1zICYjODIxMjsgYWxvbmcgd2l0 aCB0aGUgY29uZGl0aW9uYWwgdGFnICYjODIxMjsgY2FuIGdpdmUgYSB3aWRlIHZhcmlldHkg b2Ygd2F5cyB0byBkaXNwbGF5IGV2ZW50cyBhbmQgY2VsbHMuPC9wPgoKCTxwPkhvbGlkYXkg Y2VsbHMgYXJlIGdpdmVuIHRoZSBmbGFnIDxjb2RlPmhvbHM8L2NvZGU+LCBhbmQgYW55IGV2 ZW50IHRoYXQgaXMgbm90IHNwZWNpZmljYWxseSBwZXJtaXR0ZWQgYnkgPGNvZGU+aG9saWRh eWZsYWdzPC9jb2RlPiBpcyBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIGEgPGNvZGU+Y2FuY2Vs PC9jb2RlPiBmbGFnIGlmIGl0IGZhbGxzIG9uIG9uZSBvZiB0aGUgZGF5cy4gT21pdHRlZCBk YXRlcyB3aWxsLCBob3dldmVyLCBjYXVzZSB0aGUgPGNvZGU+Y2FuY2VsPC9jb2RlPiBmbGFn IHRvIGJlIHJlbW92ZWQuPC9wPgoKCTxoMiBpZD0ic21kY2FsIj48Y29kZT4mbHQ7dHhwOnNt ZF9jYWxlbmRhciAvJmd0OzwvY29kZT48L2gyPgoKCTxwPlB1dCB0aGlzIHRhZyB3aGVyZXZl ciB5b3Ugd2FudCB5b3VyIGNhbGVuZGFyIHRvIGFwcGVhci4gVXNlIHRoZSBmb2xsb3dpbmcg YXR0cmlidXRlcyB0byBjb250cm9sIGl0cyBvdXRwdXQgYW5kIHVzZSB0aGUgPGEgaHJlZj0i I2F0dHN0eWxlcyI+c3R5bGUgYXR0cmlidXRlczwvYT4gdG8gZGV0ZXJtaW5lIGhvdyB0byBh cHBseSBzdHlsZXMgdG8gdGhlIHZhcmlvdXMgZXZlbnRzIGFuZCBjZWxscy48L3A+CgoJPGgz IGNsYXNzPSJhdHRzICIgaWQ9ImF0dHJpYnV0ZXMiPk1haW4gYXR0cmlidXRlczwvaDM+CgoJ PHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2l6ZTwvc3Bhbj4gOiBjYWxlbmRhciBz aXplLCA8Y29kZT5sYXJnZTwvY29kZT4gb3IgPGNvZGU+c21hbGw8L2NvZGU+LiBGdW5jdGlv bmFsbHkgdGhlcmUgPGEgaHJlZj0iI3NpemVkaWZmIj5pc24mIzgyMTc7dCBtdWNoIGJldHdl ZW4gdGhlbTwvYT4uIERlZmF1bHQ6IDxjb2RlPmxhcmdlPC9jb2RlPjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IHNob3cgPGNvZGU+cGFzdDwvY29kZT4s IDxjb2RlPmZ1dHVyZTwvY29kZT4sIG9yIDxjb2RlPmFueTwvY29kZT4gZXZlbnQuIERlZmF1 bHQ6IDxjb2RlPmFueTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXhw aXJlZDwvc3Bhbj4gOiBoaWRlICgwKSBvciBzaG93ICgxKSBleHBpcmVkIGV2ZW50cy4gTGVh dmUgYmxhbmsgdG8gdXNlIHRoZSBUZXh0cGF0dGVybiBBZHZhbmNlZCBQcmVmICYjODIxNjtQ dWJsaXNoIGV4cGlyZWQgYXJ0aWNsZXMmIzgyMTc7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmZpcnN0ZGF5PC9zcGFuPiA6IHRoZSAxc3QgZGF5IG9mIHRoZSB3ZWVrIHRvIHNo b3cgaW4gdGhlIGNhbGVuZGFyLiAwPVN1bmRheSwgMT1Nb25kYXkgJiM4MjMwOyA2PVNhdHVy ZGF5LiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRheWZvcm1h dDwvc3Bhbj4gOiB0aGUgd2F5IGluIHdoaWNoIHRoZSBkYXkgbmFtZXMgYXJlIHJlbmRlcmVk LiA8Y29kZT5BQkJSPC9jb2RlPiAodGhlIGRlZmF1bHQpIHNob3dzIHRoZSBkYXlzIGFzIE1v biwgVHVlLCBXZWQsIGV0YyBvciA8Y29kZT5GVUxMPC9jb2RlPiByZW5kZXJzIHRoZWlyIGZ1 bGwgbmFtZXMuIEFsdGVybmF0aXZlbHksIHN1cHBseSBhbnkgdmFsaWQgPGEgaHJlZj0iaHR0 cDovL3VrMi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBjb2RlcyB0byB1c2Ug dGhhdCBpbnN0ZWFkLiBMb2NhbGUtc3BlY2lmaWMgbmFtZXMgYXJlIHJldHVybmVkLjxkaXYg Y2xhc3M9ImJyZWFrIj5Zb3UgY2FuIGhhcmQtY29kZSB5b3VyIG93biBkYXkgbmFtZXM7IHdy aXRlIGVhY2ggaXRlbSBhcyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IHN1cnJvdW5kZWQgYnkg Y3VybHkgYnJhY2tldHMuIElmIHlvdSB3YW50ZWQgdHdvLWxldHRlciBHZXJtYW4gd2VlayBk YXlzIHlvdSBjb3VsZCB1c2U6IDxjb2RlPmRheWZvcm1hdD0mcXVvdDt7U28sTW8sRGksTWks RG8sRnIsU2F9JnF1b3Q7PC9jb2RlPi4gVGhlIGZpcnN0IGRheSBpbiB0aGUgbGlzdCA8c3Ry b25nPm11c3Q8L3N0cm9uZz4gcmVwcmVzZW50IFN1bmRheSBvciB0aGluZ3Mgd2lsbCBicmVh azwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tb250aGZvcm1hdDwvc3Bh bj4gOiB0aGUgd2F5IGluIHdoaWNoIHRoZSBtb250aCBuYW1lcyBhcmUgcmVuZGVyZWQuIDxj b2RlPkZVTEw8L2NvZGU+ICh0aGUgZGVmYXVsdCkgc2hvd3MgdGhlIGZ1bGwgbW9udGggbmFt ZXMgb3IgPGNvZGU+QUJCUjwvY29kZT4gcmVuZGVycyB0aGVpciBhYmJyZXZpYXRlZCBuYW1l cy4gQWx0ZXJuYXRpdmVseSwgc3VwcGx5IGFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vdWsy LnBocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IGNvZGVzIHRvIHVzZSB0aGF0IGlu c3RlYWQuIExvY2FsZS1zcGVjaWZpYyBuYW1lcyBhcmUgcmV0dXJuZWQuPGRpdiBjbGFzcz0i YnJlYWsiPllvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duIG1vbnRoIG5hbWVzOyB3cml0ZSBl YWNoIGl0ZW0gYXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBzdXJyb3VuZGVkIGJ5IGN1cmx5 IGJyYWNrZXRzLiBJZiB5b3Ugd2FudGVkIHNpbmdsZS1sZXR0ZXIgbW9udGggbmFtZXMgeW91 IGNvdWxkIHVzZTogPGNvZGU+bW9udGhmb3JtYXQ9JnF1b3Q7e0osRixNLEEsTSxKLEosQSxT LE8sTixEfSZxdW90OzwvY29kZT4uIFRoZSBmaXJzdCBtb250aCBpbiB0aGUgbGlzdCA8c3Ry b25nPm11c3Q8L3N0cm9uZz4gcmVwcmVzZW50IEphbnVhcnkgb3IgdGhpbmdzIHdpbGwgYnJl YWs8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VsZWN0PC9zcGFuPiA6 IHVzZSBhIHNlbGVjdCBkcm9wZG93biBmb3IgcmFwaWQgYWNjZXNzIHRvIHdlZWtzLCBtb250 aHMgb3IgeWVhcnMgaW5zdGVhZCBvZiBzZWVpbmcganVzdCB0aGUgbmFtZXMuIERlZmF1bHQ6 IHVuc2V0LCBidXQgeW91IG1heSBtYWtlIGEgbGlzdCBmcm9tIGVpdGhlciA8Y29kZT53ZWVr PC9jb2RlPiAvIDxjb2RlPm1vbnRoPC9jb2RlPiBvciA8Y29kZT55ZWFyPC9jb2RlPiAod2Vl ayBhbmQgbW9udGggYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSkuPGRpdiBjbGFzcz0iYnJlYWsi PllvdSBtYXkgYWxzbyBzcGVjaWZ5IHVwIHRvIHR3byBleHRyYSBhcmd1bWVudHMsIHNlcGFy YXRlZCBieSA8Y29kZT46PC9jb2RlPiBjaGFycy4gVGhlc2UgYWRkIHRleHQgaW4gZnJvbnQg b2YgYW5kIGJlaGluZCB0aGUgd2Vlay9tb250aC95ZWFyLCByZXNwZWN0aXZlbHkuIEZvciBl eGFtcGxlOiA8Y29kZT5zZWxlY3Q9JnF1b3Q7d2VlazpXRUVLIywgeWVhcjombHQ7OiZndDsm cXVvdDs8L2NvZGU+IHdvdWxkIHJlbmRlciBhIHNlbGVjdCBsaXN0IHdpdGggZW50cmllcyB0 aGF0IG1pZ2h0IGxvb2sgbGlrZSB0aGlzOiA8Y29kZT5XRUVLIzE1ICZsdDsyMDA5Jmd0Ozwv Y29kZT48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VsZWN0YnRuPC9z cGFuPiA6IGJ5IGRlZmF1bHQsIHRoZSBzZWxlY3QgZHJvcGRvd25zIHdpbGwgYXV0by1zdWJt aXQgd2hlbiB0aGV5IGFyZSBjaGFuZ2VkLiBJZiB5b3UgcHJlZmVyIGEgZGVkaWNhdGVkIHN1 Ym1pdCBidXR0b24sIGdpdmUgdGhlIHRleHQgeW91IHdpc2ggdG8gYXBwZWFyIG9uIHRoZSBi dXR0b24gaGVyZS4gVGhlIGJ1dHRvbiBoYXMgYSBmaXhlZCBjbGFzcyBvZiA8Y29kZT5zbWRf Y2FsX2lucHV0PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pc293ZWVr czwvc3Bhbj4gOiBzaG93IGlzbyB3ZWVrIG51bWJlcnMgYXMgYSBjb2x1bW4gYXQgdGhlIHN0 YXJ0IG9mIHRoZSBjYWxlbmRhci4gQW55IHRleHQgaW4gdGhpcyBhdHRyaWJ1dGUgZW5hYmxl cyB0aGUgZmVhdHVyZSwgYW5kIGJlY29tZXMgdGhlIGhlYWRpbmcgb2YgdGhlIGlzbyB3ZWVr IGNvbHVtbi4gWW91IG1heSBjaGFuZ2UgdGhlIGRlZmF1bHQgd2VlayBudW1iZXIgaW4gZWFj aCBjZWxsIGJ5IGFkZGluZyBhIGNvbW1hIGFuZCBzb21lIHRleHQ7IHdoYXRldmVyIHlvdSBl bnRlciB3aWxsIGJlIHB1dCBpbiBlYWNoIGlzbyB3ZWVrIGNlbGwuIFVzZSB0aGUgcmVwbGFj ZW1lbnQgY29kZXMgPGNvZGU+e3dlZWt9PC9jb2RlPiwgPGNvZGU+e21vbnRofTwvY29kZT4s IDxjb2RlPnt5ZWFyfTwvY29kZT4gb3IgPGNvZGU+e2lzb3llYXJ9PC9jb2RlPiBpbiB5b3Vy IG1hcmt1cCB0byBpbnNlcnQgdGhlIHJlbGV2YW50IGluZm8uPGRpdiBjbGFzcz0iYnJlYWsi PkV4YW1wbGU6IDxjb2RlPmlzb3dlZWtzPSZxdW90O3drLCAje3dlZWt9JnF1b3Q7PC9jb2Rl PiB3aWxsIHJlbmRlciAmIzgyMTY7d2smIzgyMTc7IGF0IHRoZSB0b3Agb2YgdGhlIGNvbHVt biBhbmQgc29tZXRoaW5nIGxpa2UgPGNvZGU+IzI0PC9jb2RlPiwgPGNvZGU+IzI1PC9jb2Rl PiwgPGNvZGU+IzI2PC9jb2RlPiYjODIzMDsgYmVuZWF0aCBpdC4gSWYgdGhlIGZpcnN0IGl0 ZW0gaXMgb21pdHRlZCwgdGhlcmUgd2lsbCBiZSBubyBjb2x1bW4gaGVhZGluZy48L2Rpdj48 ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVk LCA8Y29kZT5maXJzdGRheTwvY29kZT4gd2lsbCBiZSBmb3JjZWQgdG8gc3RhcnQgb24gYSBN b25kYXkgYXMgZ292ZXJuZWQgYnkgdGhlIGlzbyBzcGVjLiBEZWZhdWx0OiB1bnNldDwvZGl2 PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3NwYW4+IDogZXZlbnRz IGluIHRoaXMgbGlzdCBvZiBzdGF0dXMgYXJlIHB1Ymxpc2hlZC4gRGVmYXVsdDogPGNvZGU+ bGl2ZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3Nw YW4+IDogZmlsdGVyIGV2ZW50cyBieSB0aGlzIGxpc3Qgb2YgY2F0ZWdvcmllcy4gRGVmYXVs dDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4g OiBmaWx0ZXIgZXZlbnRzIGJ5IHRoaXMgbGlzdCBvZiBzZWN0aW9ucy4gRGVmYXVsdDogdW5z ZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IGZpbHRl ciBldmVudHMgYnkgdGhpcyBsaXN0IG9mIGF1dGhvciBsb2dpbiBuYW1lcy4gRGVmYXVsdDog dW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cmVhbG5hbWU8L3NwYW4+IDog ZmlsdGVyIGV2ZW50cyBieSB0aGlzIGxpc3Qgb2YgYXV0aG9yIFJlYWwgTmFtZXMgKG5vdGU6 IGFkZHMgb25lIGV4dHJhIHF1ZXJ5KS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+c2hvd2FsbDwvc3Bhbj4gOiBpZiB5b3VyIGNhbGVuZGFyIGFwcGVh cnMgb24gdGhlIGZyb250IHBhZ2UgYW5kIHlvdSBoYXZlIDxlbT5ub3Q8L2VtPiB1c2VkIHRo ZSA8Y29kZT5zZWN0aW9uPC9jb2RlPiBhdHRyaWJ1dGUgdGhlIGNhbGVuZGFyIG9ubHkgc2hv d3MgZXZlbnRzIGZyb20gc2VjdGlvbnMgdGhhdCBoYXZlIHRoZWlyIDxjb2RlPk9uIGZyb250 IHBhZ2U8L2NvZGU+IHJhZGlvIGJ1dHRvbiBzZXQuIFVzZSA8Y29kZT5zaG93YWxsPSZxdW90 OzEmcXVvdDs8L2NvZGU+IHRvIHNob3cgYWxsIGV2ZW50cyBmcm9tIGFsbCBzZWN0aW9ucyBv biBmcm9udCBwYWdlIGNhbGVuZGFyczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5p ZDwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IElEIHRvIGFw cGx5IHRvIHRoZSB0YWJsZSB0aGF0IGhvbGRzIHRoZSBjYWxlbmRhci4gVGhpcyBpcyB0aGUg dmFsdWUgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIDxj b2RlPmNhbGlkPC9jb2RlPi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+bmF2aWQ8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiBJRCB0byBhcHBseSB0byB0aGUgcHJldi9uZXh0L21vbnRoL3llYXIgbmF2aWdhdGlv biBmb3JtLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5u YXZhcnJvdzwvc3Bhbj4gOiBjb21tYS1zZXBhcmF0ZWQgcGFpciBvZiBpdGVtcyB5b3Ugd2Fu dCB0byBhcHBlYXIgYXMgcHJldi9uZXh0IGFycm93cyBpbiB0aGUgY2FsZW5kYXIuIERlZmF1 bHQ6IDxjb2RlPiZhbXA7IzYwOywgJmFtcDsjNjI7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5tb250aDwvc3Bhbj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgb24gdGhp cyBtb250aCBmcm9tIDEgKEphbnVhcnkpIHRvIDEyIChEZWNlbWJlcikuIE5vcm1hbCBjYWxl bmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRlcyB0aGlzIHZhbHVlLiBJZiA8Y29kZT5zdGF0aWM8 L2NvZGU+IGlzIHVzZWQsIHRoaXMgbW9udGggYmVjb21lcyB0aGUgb25seSBvbmUgeW91IG1h eSB2aWV3LiBJZiB1bnNldCwgYW5kIG5vIDxjb2RlPm09PC9jb2RlPiB2YWx1ZSBhcHBlYXJz IG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lLCB0aGUgY3VycmVu dCBtb250aCBpcyB1c2VkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndlZWs8L3Nw YW4+IDogc3RhcnQgdGhlIGNhbGVuZGFyIGR1cmluZyB0aGUgbW9udGggY29udGFpbmluZyB0 aGlzIGlzbyB3ZWVrIChmcm9tIDEgdG8gNTMpLiBJZ25vcmVkIGlmIDxjb2RlPnN0YXRpYzwv Y29kZT4gb3Igb25lIG9mIHRoZSBjYWxlbmRhciBuYXZpZ2F0aW9uIGNvbnRyb2xzIGlzIHVz ZWQuIElmIGEgPGNvZGU+dz08L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBnaXZlbiB3ZWVrIG92ZXJyaWRlcyBh bnkgbW9udGggdmFsdWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+eWVhcjwvc3Bh bj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgYXQgdGhpcyA0LWRpZ2l0IHllYXIuIE5vcm1hbCBj YWxlbmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRlcyB0aGlzIHZhbHVlLiBJZiA8Y29kZT5zdGF0 aWM8L2NvZGU+IGlzIHVzZWQsIHRoaXMgeWVhciBiZWNvbWVzIHRoZSBvbmx5IG9uZSB5b3Ug bWF5IHZpZXcuIElmIHVuc2V0LCBhbmQgbm8gPGNvZGU+eT08L2NvZGU+IHZhbHVlIGFwcGVh cnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBjdXJy ZW50IHllYXIgaXMgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj55ZWFyd2lk dGg8L3NwYW4+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBkaWN0YXRpbmcgaG93IG1hbnkg eWVhcnMgeW91ciBjYWxlbmRhciBzcGFucy4gVGhlIGRlZmF1bHQgKDApIHVzZXMgdGhlIGVh cmxpZXN0IChwb3N0ZWQpIGV2ZW50IGluIHRoZSBzZWN0aW9uIGFzIHRoZSBlYXJsaWVzdCB5 ZWFyLCBhbmQgdGhlIGxhdGVzdCAobW9kaWZpZWQgb3IgcG9zdGVkLCB3aGljaGV2ZXIgaXMg Z3JlYXRlcikgZXZlbnQgYXMgdGhlIGxhdGVzdCB5ZWFyLiBZb3Ugd2lsbCBub3QgYmUgcGVy bWl0dGVkIHRvIG5hdmlnYXRlIHRoZSBjYWxlbmRhciBvdXRzaWRlIHRoaXMgcmFuZ2UuPGRp diBjbGFzcz0iYnJlYWsiPlRvIHdpZGVuIHRoZSByYW5nZSBmb3IgZXhhbXBsZSA8Y29kZT55 ZWFyd2lkdGg9JnF1b3Q7Miw0JnF1b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgd2hvbGUg eWVhcnMgZnJvbSB0aGUgZWFybGllc3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRv IHRoZSBsYXRlc3QgZXZlbnQuIElmIHlvdSBzcGVjaWZ5IGEgc2luZ2xlIG51bWJlciwgdGhh dCB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSByYW5nZSBlcXVhbGx5IGluIGJv dGggZGlyZWN0aW9ucy48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+IElmIHlvdSBhZGQgJiM4 MjE2O2MmIzgyMTc7IHRvIGVpdGhlciB2YWx1ZSB0aGUgY3VycmVudCB5ZWFyIGlzIHVzZWQg aW5zdGVhZCBvZiB0aGUgZWFybGllc3Qgb3IgbGF0ZXN0IGV2ZW50LCBlLmcuIDxjb2RlPnll YXJ3aWR0aD0mcXVvdDsyLDRjJnF1b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgeWVhcnMg ZnJvbSB0aGUgZWFybGllc3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRvIHRvZGF5 JiM4MjE3O3MgZGF0ZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5yZW1h cDwvc3Bhbj4gOiB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBjYWxlbmRhcnMgb24gYSBw YWdlIGl0IGlzIG9mdGVuIGJlbmVmaWNpYWwgdG8gdXNlIGRpZmZlcmVudCBuYW1lcyBmb3Ig PGNvZGU+dz08L2NvZGU+LCA8Y29kZT5tPTwvY29kZT4gb3IgPGNvZGU+eT08L2NvZGU+IGlu IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBzbyB5b3UgY2FuIG5hdmlnYXRl IGNhbGVuZGFycyBpbmRpdmlkdWFsbHkuIFJlbmFtZSB0aGUgdywgbSwgJmFtcDsgeSB2YXJp YWJsZXMsIGZvciBleGFtcGxlOiA8Y29kZT5yZW1hcD0mcXVvdDt3OndrLCB5OnlyJnF1b3Q7 PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHVz ZSB0aGlzIFRleHRwYXR0ZXJuIGZvcm0gdG8gcHJvY2VzcyBlYWNoIGV2ZW50LiBJZiB0aGUg Y2FsZW5kYXIgdGFnIGlzIHVzZWQgYXMgYSBjb250YWluZXIgaXQgd2lsbCBiZSB1c2VkIGlu IHByZWZlcmVuY2UgdG8gdGhlIGZvcm0uIElmIG5laXRoZXIgYXJlIHVzZWQsIGEgZGVmYXVs dCBpcyB1c2VkIChMYXJnZTogaHlwZXJsaW5rZWQgYXJ0aWNsZSB0aXRsZSwgU21hbGw6IGVt cHR5IGV2ZW50KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zcGFuZm9ybTwvc3Bh bj4gOiByZW5kZXIgc3Bhbm5lZCBldmVudHMgZGlmZmVyZW50bHkgdG8gc3RhbmRhcmQgZXZl bnRzOyB0aGV5IHVzdWFsbHkgdXNlIHRoZSBzYW1lIGZvcm0vY29udGFpbmVyLiBJZiBuZWl0 aGVyIGFyZSBzcGVjaWZpZWQsIGEgcmlnaHQtYXJyb3cgd2lsbCBiZSB1c2VkIHRvIGluZGlj YXRlIGNvbnRpbnVhdGlvbiBvZiB0aGUgcHJldmlvdXMgZGF5JiM4MjE3O3MgZXZlbnQuIE5v dGUgdGhlIGZpcnN0IGRheSBvZiBhIHNwYW5uZWQgc2V0IGlzIDxlbT5ub3Q8L2VtPiBwYXNz ZWQgdG8gdGhlIDxjb2RlPnNwYW5mb3JtPC9jb2RlPjsgb25seSBjb250aW51YXRpb24gY2Vs bHMgYXJlIHBhc3NlZCB0byBpdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5yZWN1 cmZvcm08L3NwYW4+IDogcmVuZGVyIHJlY3VycmluZyBldmVudHMgZGlmZmVyZW50bHkgdG8g c3RhbmRhcmQgZXZlbnRzLiBUaGUgZmlyc3QgZXZlbnQgb2YgYSByZWN1cnJpbmcgc2V0IGlz IDxlbT5ub3Q8L2VtPiBwYXNzZWQgdG8gPGNvZGU+cmVjdXJmb3JtPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jZWxsZm9ybTwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJy ZXF1aXJlZCI+b25seSBvbiBsYXJnZSBjYWxlbmRhcnM8L3NwYW4+KSA6IHVzZSB0aGlzIGlm IHlvdSB3aXNoIHRvIGJ1aWxkIGVhY2ggY2VsbCBlbnRpcmVseSBmcm9tIHNjcmF0Y2guIFRo ZXJlIGFyZSBzb21lIDxhIGhyZWY9IiNjZWxsZm9ybSI+cmVwbGFjZW1lbnQgdmFyaWFibGVz PC9hPiB5b3UgY2FuIHVzZSB0byBpbnNlcnQgZHluYW1pYyBwaWVjZXMgb2YgaW5mb3JtYXRp b24gaW4geW91ciBjZWxsczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGVwZmll bGQ8L3NwYW4+IDogdGhlIElEIG9mIGEgZmllbGQgd2l0aGluIHdoaWNoIGFuIGV2ZW50IG1h eSBiZSB0b2xkIHRvIHJlcGVhdC4gTm90ZSBpdCBpcyB0aGUgZmllbGQmIzgyMTc7cyBJRCA8 ZW0+bm90IGl0cyBuYW1lPC9lbT4sIHNvIGZvciBjdXN0b20gZmllbGRzIHlvdSBtdXN0IHVz ZSA8Y29kZT5jdXN0b21fMTwvY29kZT4gb3IgPGNvZGU+Y3VzdG9tXzI8L2NvZGU+IGV0Yy4g V2l0aG91dCB0aGlzIGF0dHJpYnV0ZSwgbm8gPGEgaHJlZj0iI3JlY3VyIj5yZWN1cnJpbmcg ZXZlbnRzPC9hPiBtYXkgYmUgZGVmaW5lZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5vbWl0ZmllbGQ8L3NwYW4+IDogdGhlIElEIChub3QgbmFtZSkgb2YgYSBmaWVsZCB0aGF0 IGNvbnRhaW5zIGEgbGlzdCBvZiBkYXRlcyBvbiB3aGljaCB0aGlzIGV2ZW50IGlzIHRvIGJl IDxhIGhyZWY9IiNjYW5jZWwiPm9taXR0ZWQ8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnNraXBmaWVsZDwvc3Bhbj4gOiB0aGUgSUQgKG5vdCBuYW1lKSBvZiBhIGZpZWxk IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGRhdGVzIG9uIHdoaWNoIHRoaXMgZXZlbnQgaXMg PGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2VsbGVkPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5leHRyYWZpZWxkPC9zcGFuPiA6IHRoZSBJRCAobm90IG5hbWUpIG9mIGEgZmll bGQgZnJvbSB3aGljaCBhIGxpc3Qgb2YgPGEgaHJlZj0iI2V4dHJhIj5hZGRpdGlvbmFsIGV2 ZW50IGRhdGVzPC9hPiBtYXkgYmUgZ2l2ZW47IHRoZSBzYW1lIGV2ZW50IGRldGFpbHMgd2ls bCBiZSBjb3BpZWQgdG8gdGhlIG5ldyBkYXkocyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+ZXh0cmFzdHJpY3Q8L3NwYW4+IDogYW55IGRhdGVzIGluIDxjb2RlPmV4dHJhZmll bGQ8L2NvZGU+IGF1dG9tYXRpY2FsbHkgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciwgYnV0IHlv dSBtYXkgY2hvb3NlIHRvIHJlc3RyaWN0IG5ldyBkYXRlcyBmcm9tIGFwcGVhcmluZyBhZnRl ciB0aGUgZXZlbnQmIzgyMTc7cyBleHBpcnkgZGF0ZSBieSBzZXR0aW5nIDxjb2RlPmV4dHJh c3RyaWN0PSZxdW90OzEmcXVvdDs8L2NvZGU+LiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnNob3dza2lwcGVkPC9zcGFuPiA6IHNob3cgKDEpIG9yIGhpZGUg KDApIGNhbmNlbGxlZCBldmVudHMgb24gdGhlIGNhbGVuZGFyLiBEZWZhdWx0OiAwPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNob3dzcGFubmVkPC9zcGFuPiA6IHNob3cgKDEp IG9yIGhpZGUgKDApIHNwYW5uZWQgZXZlbnRzIG9uIHRoZSBjYWxlbmRhci4gRGVmYXVsdDog MTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kYXRlZmllbGRzPC9zcGFuPiA6IHRo ZSBJRHMgKG5vdCBuYW1lcykgb2YgdXAgdG8gdHdvIGZpZWxkcyBmcm9tIHdoaWNoIHBvc3Rl ZCBhbmQgZXhwaXJ5IGRhdGUgc3RhbXBzIG1heSBiZSBnaXZlbi4gQ29tbWEtc2VwYXJhdGUg dGhlIGZpZWxkIG5hbWVzOyB0aGUgZmlyc3Qgd2lsbCBiZSB1c2VkIGFzIHRoZSBQb3N0ZWQg ZGF0ZSBhbmQgdGhlIHNlY29uZCBhcyB0aGUgRXhwaXJ5LiBJZiBlaXRoZXIgaXMgb21pdHRl ZCBvciBtYW5nbGVkLCB0aGUgYXJ0aWNsZSYjODIxNztzICYjODIyMDtyZWFsJiM4MjIxOyBw b3N0ZWQvZXhwaXJ5IGRhdGUgd2lsbCBiZSB1c2VkIGluc3RlYWQuIElmIHRoZSBleHBpcnkg ZGF0ZSBvY2N1cnMgYmVmb3JlIHRoZSBzdGFydCBkYXRlLCB5b3VyIGRhdGVmaWVsZHMgd2ls bCBiZSBpZ25vcmVkIGFuZCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+aG9saWRheXM8L3NwYW4+IDogbGlzdCBvZiBkYXRlcyB0aGF0 IGFyZSBkZWNyZWVkIGFzIDxhIGhyZWY9IiNob2xpZGF5cyI+aG9saWRheXM8L2E+LiBNYXkg YmUgZGVmZXJyZWQgdG8gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiwg aW4gd2hpY2ggY2FzZSBkZWZpbmUgeW91ciBsaXN0IGluIGEgbmFtZWQgdmFyaWFibGUgYW5k IHVzZSA8Y29kZT5ob2xpZGF5cz0mcXVvdDt0eHB2YXI6bXlfdmFyX25hbWUmcXVvdDs8L2Nv ZGU+IHRvIHJlYWQgdGhlbSBpbnRvIHRoZSBwbHVnaW48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aG9saWRheWZsYWdzPC9zcGFuPiA6IHBlcm1pdCBjZXJ0YWluIDxhIGhyZWY9 IiNuYW1pbmciPmV2ZW50IGZsYWdzPC9hPiB0byBiZSBzY2hlZHVsZWQgb24gaG9saWRheXMu IERlZmF1bHQ6IDxjb2RlPnN0YW5kYXJkPC9jb2RlPiBidXQgb3RoZXJzIG1heSBiZSBsaXN0 ZWQgYXMgd2VsbC4gQ2hvb3NlIGZyb20gPGNvZGU+c3RhbmRhcmQ8L2NvZGU+LCA8Y29kZT5y ZWN1cjwvY29kZT4gb3IgPGNvZGU+bXVsdGk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmxpbmtwb3N0ZWQ8L3NwYW4+ICg8c3BhbiBjbGFzcz0icmVxdWlyZWQiPm9u bHkgb24gc21hbGwgY2FsZW5kYXJzPC9zcGFuPikgOiBlYWNoIGNlbGwgdGhhdCBjb250YWlu cyBhbiA8YSBocmVmPSIjbmFtaW5nIj5ldmVudCBmbGFnPC9hPiBvZiB0aGUgZ2l2ZW4gdHlw ZShzKSB3aWxsIGhhdmUgaXRzIGRheSBudW1iZXIgbGlua2VkIHRvIHRoZSBldmVudCYjODIx NztzIHRydWUgc3RhcnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSBjZWxsJiM4MjE3O3MgZGF0ZS4g VGh1cywgaWYgeW91IGhhdmUgYSB3ZWVrbHkgZXZlbnQgdGhhdCBzdGFydHMgb24gdGhlIDIw dGggRGVjZW1iZXIgMjAwOCwgc2V0dGluZyA8Y29kZT5saW5rcG9zdGVkPSZxdW90O3JlY3Vy JnF1b3Q7PC9jb2RlPiB3aWxsIGNhdXNlIHRoZSBsaW5rIHRvIGJlIDxjb2RlPmRhdGU9MjAw OC0xMi0yMDwvY29kZT4gZXZlcnkgd2Vlay4gVGhpcyBhbGxvd3MgeW91IHRvIGFsd2F5cyBs aW5rIHRvIGEgdmFsaWQgYXJ0aWNsZS9ldmVudC4gV2l0aG91dCBsaW5rcG9zdGVkLCB0aGUg ZGF0ZXMgd291bGQgYmUgMjAwOC0xMi0yMCwgMjAwOC0xMi0yNywgMjAwOS0wMS0wMywgYW5k IHNvIG9uLiBEZWZhdWx0OiA8Y29kZT5yZWN1ciwgbXVsdGksIG11bHRpcHJldiwgbXVsdGls YXN0PC9jb2RlPiAoaS5lLiBhbnkgcmVjdXJyaW5nIG9yIHNwYW5uZWQgZXZlbnQpLiBOb3Rl IHRoYXQgaWYgbW9yZSB0aGFuIG9uZSBldmVudCBvY2N1cnMgaW4gdGhlIGNlbGwsIHRoZSBs aW5rIHdpbGwgb25seSBiZSB0byB0aGUgZmlyc3QgZXZlbnQgdGhlIHBsdWdpbiBmaW5kczwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYWludGFpbjwvc3Bhbj4gOiBrZWVwIHRy YWNrIG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiB3aGVuIG5hdmlnYXRpbmcgdGhlIGNhbGVuZGFyIHVzaW5nIHRoZSBuZXh0L3By ZXYgb3IgbW9udGgveWVhciBzZWxlY3QgbGlzdHMuIEl0ZW1zIHRoYXQgeW91IHdhbnQgdG8g cHJlc2VydmUgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4gQ2hvb3NlIGZyb20gPGNvZGU+ Y2FsaWQ8L2NvZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+Y2F0ZWdvcnk8L2Nv ZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5hcnRpY2xlPC9jb2RlPiwgPGNvZGU+ cGc8L2NvZGU+IG9yIHlvdXIgb3duIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZh cmlhYmxlLiBEZWZhdWx0OiA8Y29kZT5jYWxpZDwvY29kZT4uPGRpdiBjbGFzcz0iYnJlYWsi PlVzZSA8Y29kZT5tYWludGFpbj0mcXVvdDtzZWN0aW9uLCBhcnRpY2xlLCBjYWxpZCZxdW90 OzwvY29kZT4gaWYgeW91IGhhdmUgYW4gaW5kaXZpZHVhbCBhcnRpY2xlIHBhZ2Ugd2l0aCBh IGNhbGVuZGFyIGluIGEgc2lkZWJhciwgc28gdGhlIGN1cnJlbnRseSB2aWV3ZWQgYXJ0aWNs ZSB3aWxsIHJlbWFpbiBpbiB2aWV3IHdoZW4gY2hhbmdpbmcgZGF0ZS4gSWYgeW91IHdpc2gg dG8gbWFpbnRhaW4gc3RhdGUgeW91cnNlbGYgb3IgZG8gc29tZXRoaW5nIGV4b3RpYywgZW1w dHkgdGhpcyBhdHRyaWJ1dGUgZmlyc3QgdG8gYXZvaWQgd2VpcmRuZXNzPC9kaXY+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hbWV2YWw8L3NwYW4+IDogYWRkIHlvdXIgb3du IG5hbWUvdmFsdWUgcGFpcnMgdG8gdGhlIGNhbGVuZGFyJiM4MjE3O3MgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4uIGUuZy4gPGNvZGU+bmFtZXZhbD0mcXVvdDt0cmFja2VyPW15 Y2FsLCBrZWVwPTEmcXVvdDs8L2NvZGU+IHdvdWxkIGFkZCA8Y29kZT4/dHJhY2tlcj1teWNh bCZhbXA7a2VlcD0xPC9jb2RlPiB0byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4uIFVzZWZ1bCBpZiB5b3Ugd2FudCB0byA8Y29kZT5tYWludGFpbjwvY29kZT4gc29tZSB2 YWx1ZXMgd2hpY2ggeW91IGNhbiYjODIxNzt0IGFkZCB0byB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPlVSTDwvc3Bhbj4gb24gcGFnZSBsb2FkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnN0YXRpYzwvc3Bhbj4gOiBmb3JjZSB0aGUgY2FsZW5kYXIgdG8gYmUgZml4ZWQgdG8g b25lIG1vbnRoL3llYXIgKGkuZS4gbm8gbmF2aWdhdGlvbikuIE1vbnRoIGFuZCB5ZWFyIGRl Y2lkZWQgYnkgYXR0cmlidXRlcyA8Y29kZT5tb250aDwvY29kZT4gYW5kIDxjb2RlPnllYXI8 L2NvZGU+IG9yICYjODIxMjsgaWYgb21pdHRlZCAmIzgyMTI7IHRoZSBjdXJyZW50IGRhdGUg d2lsbCBiZSB1c2VkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdtdDwvc3Bhbj4g OiBjdXJyZW50bHkgdW51c2VkLCBwZW5kaW5nIHJldmlldzwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5sYW5nPC9zcGFuPiA6IGN1cnJlbnRseSB1bnVzZWQsIHBlbmRpbmcgcmV2 aWV3PC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHN0eWxlcyI+U3R5 bGUgYXR0cmlidXRlczwvaDM+CgoJPHA+T25jZSB5b3UgaGF2ZSB0d2Vha2VkIHlvdXIgYmFz aWMgY2FsZW5kYXIgYXMgZGVzY3JpYmVkIGFib3ZlIHlvdSBjYW4gc3R5bGUgaXQgdXNpbmcg dGhlc2UgYXR0cmlidXRlczo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Y2xhc3NsZXZlbHM8L3NwYW4+IDogY2xhc3NlcyBjYW4gYmUgYXBwbGllZCB0byBldmVudHMs IGNlbGxzLCBvciBib3RoLiBZb3UgbWF5IGFsc28gcHJvbW90ZSAoaS5lLiBjb3B5KSBhbGwg ZXZlbnQtbGV2ZWwgY2xhc3NlcyB0aGF0IG9jY3VyIGluIGEgZGF5IHRvIHRoZSBjZWxsIGxl dmVsIHNvIHlvdSBjYW4gY29sb3VyIHRoZSBjZWxsIGJhc2VkIG9uIHRoZSBldmVudHMgdGhh dCBpdCBjb250YWlucy4gVXNlIGFueSBvZiA8Y29kZT5ldmVudDwvY29kZT4sIDxjb2RlPmNl bGw8L2NvZGU+LCBvciA8Y29kZT5jZWxscGx1czwvY29kZT4gKGZvciBjb3B5aW5nIHVuaXF1 ZSBldmVudCBjbGFzc2VzIHRvIHRoZSBjZWxsKS4gTm90ZSB5b3Ugc2hvdWxkIG5vdCB1c2Ug PGNvZGU+Y2VsbDwvY29kZT4gYW5kIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiB0b2dldGhlciBi ZWNhdXNlIHRoZSBsYXR0ZXIgb3ZlcnJpZGVzIHRoZSBmb3JtZXIuIERlZmF1bHQ6IDxjb2Rl PmNlbGwsIGV2ZW50PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFz c3ByZWZpeGVzPC9zcGFuPiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdXAgdG8gdHdv IHByZWZpeGVzIHRvIGFwcGx5IHRvIHlvdXIgY2xhc3MgbmFtZXMuIFRoZSBmaXJzdCBwcmVm aXggaXMgYXBwbGllZCB0byBjZWxsLWxldmVsIGNsYXNzZXMgKGFuZCBmbGFncykgYW5kIHRo ZSBzZWNvbmQgcHJlZml4IGlzIGFwcGxpZWQgdG8gZXZlbnQgY2xhc3NlcyAoc2VlIDxjb2Rl PmV2ZW50Y2xhc3NlczwvY29kZT4pLiBJZiB5b3Ugb25seSBzcGVjaWZ5IG9uZSBwcmVmaXgs IGl0IHdpbGwgYmUgdXNlZCBmb3IgYm90aC4gSWYgeW91IHVzZSA8Y29kZT5jbGFzc3ByZWZp eGVzPSZxdW90OyZxdW90OzwvY29kZT4gdGhlbiBubyBwcmVmaXhlcyB3aWxsIGJlIHVzZWQg YXQgYWxsLiBEZWZhdWx0OiA8Y29kZT5zbWRfY2FsXywgc21kX2NhbF9ldl88L2NvZGU+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBu YW1lIG9mIHRoZSBjYWxlbmRhciB0YWJsZSBpdHNlbGYuIERlZmF1bHQ6IHVuc2V0PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJvd2NsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBu YW1lIG9mIGVhY2ggdGFibGUgcm93LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5jZWxsY2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgb2YgZWFj aCB0YWJsZSBjZWxsLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5lbXB0eWNsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIG9mIGFueSBjZWxscyB0 aGF0IGRvbiYjODIxNzt0IGNvbnRhaW4gYSBkYXkgbnVtYmVyIChpLmUuIHRoZSBibGFuayBj ZWxscyBhdCB0aGUgc3RhcnQgYW5kIGVuZCBvZiBhIG1vbnRoKS4gRGVmYXVsdDogPGNvZGU+ ZW1wdHk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlzb3dlZWtjbGFz czwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSBvZiBlYWNoIGNlbGwgY29udGFpbmluZyBhbiBp c28gd2Vlay4gRGVmYXVsdDogPGNvZGU+d2VlazwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+bmF2Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgb2YgdGhlIHBy ZXYvbmV4dCBtb250aCBuYXYgYXJyb3dzLiBJZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGlz IHVzZWQsIHRoZSBmaXJzdCBpdGVtIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9m IHRoZSBwcmV2aW91cyBtb250aCwgdGhlIDJuZCBpdGVtIG9mIHRoZSBuZXh0IG1vbnRoLiBJ ZiBhIHNpbmdsZSB2YWx1ZSBpcyB1c2VkLCBib3RoIGNsYXNzIG5hbWVzIHdpbGwgYmUgdGhl IHNhbWUuIERlZmF1bHQ6IDxjb2RlPm5hdnByZXYsIG5hdm5leHQ8L2NvZGU+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm15Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUg b2YgYm90aCB0aGUgbW9udGggYW5kIHllYXIgaW4gdGhlIGNhbGVuZGFyIGhlYWRlciAoZWl0 aGVyIHRoZSA8Y29kZT4mbHQ7c3BhbiZndDs8L2NvZGU+IG9yIDxjb2RlPiZsdDtzZWxlY3Qm Z3Q7PC9jb2RlPiB0YWdzKS4gSWYgPGNvZGU+bXl3cmFwdGFnPC9jb2RlPiBpcyB1c2VkLCB0 aGUgY2xhc3MgaXMgYXBwbGllZCB0byB0aGUgd3JhcHRhZyBpbnN0ZWFkLiBEZWZhdWx0OiB1 bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ldmVudGNsYXNzZXM8L3NwYW4+ IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpdGVtcyB0byBhZGQgYXMgY2xhc3NlcyB0 byBlYWNoIGV2ZW50IChlYWNoIHByZWZpeGVkIHdpdGggdGhlIGV2ZW50IHByZWZpeCkuIEl0 IGRlZmF1bHRzIHRvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiBzbyBpdCBhZGRzIHRoZSBDYXRl Z29yeTEgYW5kIDIgbmFtZXMgYXMgY2xhc3MgaWRlbnRpZmllcnMgdG8gZWFjaCBldmVudC48 ZGl2IGNsYXNzPSJicmVhayI+SWYgeW91IHdpc2ggdG8gZXh0ZW5kIG9yIGFsdGVyIHRoaXMs IGdpdmUgYSBsaXN0IG9mIGZpZWxkcyB0aGF0IHlvdSB3YW50IHRvIGFwcGx5IHRvIHRoZSBl dmVudCAoZS5nLiA8Y29kZT5ldmVudGNsYXNzZXM9JnF1b3Q7SUQsIEF1dGhvcklELCBjdXN0 b21fNSZxdW90OzwvY29kZT4gd291bGQgYWRkIHRocmVlIGNsYXNzZXMgdG8gZWFjaCBldmVu dCBjb3JyZXNwb25kaW5nIHRvIHRoZSBldmVudCYjODIxNztzIElELCBpdHMgYXV0aG9yIChs b2dpbikgbmFtZSBhbmQgdGhlIGNvbnRlbnRzIG9mIGN1c3RvbV81KS4gSWYgeW91IHVzZSA8 Y29kZT5jZWxscGx1czwvY29kZT4sIHRoZXNlIGNsYXNzZXMgd2lsbCBiZSBjb3BpZWQgdG8g dGhlIGNlbGwgbGV2ZWwuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPlNvbWUgc3BlY2lhbCBu YW1lcyBleGlzdDogPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+IHJldHVybnMgYm90aCBDYXRlZ29y eTEgYW5kIENhdGVnb3J5MiAoaWYgc2V0KTsgPGNvZGU+Z2NhdDwvY29kZT4gd2lsbCByZXR1 cm4gdGhlIGN1cnJlbnQgJiM4MjE2O2dsb2JhbCYjODIxNzsgY2F0ZWdvcnkgKGlmIGZpbHRl cmluZyBieSBjYXRlZ29yeSk7IDxjb2RlPmF1dGhvcjwvY29kZT4gcmV0dXJucyB0aGUgYXV0 aG9yIElEIChpZiBmaWx0ZXJpbmcgYnkgYXV0aG9yKTsgPGNvZGU+c2VjdGlvbjwvY29kZT4g Z2l2ZXMgdGhlIGN1cnJlbnQgc2VjdGlvbjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5ldmVudHdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3aXRob3V0 IGl0cyBicmFja2V0cywgdG8gd3JhcCBlYWNoIGV2ZW50IHdpdGguIERlZmF1bHQ6IDxjb2Rl PnNwYW48L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm15d3JhcHRhZzwv c3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcsIHdpdGhvdXQgaXRzIGJyYWNrZXRzLCB0byB3cmFw IGFyb3VuZCA8ZW0+Ym90aDwvZW0+IG1vbnRoICsgeWVhciBkcm9wZG93biBzZWxlY3QgbGlz dHMgYW5kIHN1Ym1pdCBidXR0b24gKGl0IHdyYXBzIHRoZSBsb3QsIGNvbWJpbmVkKS4gRGVm YXVsdDogdW5zZXQ8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNlbGxmb3JtIj5Vc2luZyBhIDxj b2RlPmNlbGxmb3JtPC9jb2RlPiB3aXRoIHJlcGxhY2VtZW50IHZhcmlhYmxlczwvaDI+CgoJ PHA+SWYgeW91IGRvbiYjODIxNzt0IGxpa2UgdGhlIGxheW91dCBvZiB0aGUgZGVmYXVsdCBj ZWxsLCB5b3UgY2FuIGRvIGl0IHlvdXJzZWxmIHdpdGggdGhlIDxjb2RlPmNlbGxmb3JtPC9j b2RlPiBhdHRyaWJ1dGUuIFRoZSBjZWxscyBhcmUgZ2VuZXJhdGVkIDxlbT5sYXN0PC9lbT4s IHNvIGJ5IHRoZSB0aW1lIHRoZSBwbHVnaW4gcmVhY2hlcyB0aGlzIGF0dHJpYnV0ZSwgYWxs IGV2ZW50cyBoYXZlIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQgYnkgYW55IG9mIHlvdXIgZm9y bXMvY29udGFpbmVycy48L3A+CgoJPHA+VG8gYnVpbGQgeW91ciBvd24gY2VsbHMgeW91IG9m dGVuIG5lZWQgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgZXZlbnRzIHRoYXQgZmFsbCBvbiBh IHBhcnRpY3VsYXIgZGF5OyBvciB0aGUgd2VlaywgbW9udGggb3IgZGF5IG51bWJlcnMsIGV0 Yy4gU28gJiM4MjEyOyBpbiBhZGRpdGlvbiB0byB5b3VyIHVzdWFsIG1hcmt1cCBhbmQgVGV4 dHBhdHRlcm4gdGFncyAmIzgyMTI7IHlvdSBtYXkgYWxzbyBpbnNlcnQgYW55IG9mIHRoZSBm b2xsb3dpbmcgJiM4MjE2O3JlcGxhY2VtZW50cyYjODIxNzsgdG8gaGF2ZSB0aGUgcmVsZXZh bnQgdmFsdWUgaW5zZXJ0ZWQgYXQgdGhhdCBwbGFjZSBpbiB0aGUgY2VsbDo8L3A+CgoJPHVs PgoJCTxsaT48Y29kZT57ZGF5fTwvY29kZT4gOiBjdXJyZW50IGRheSAoYXMgYSBudW1iZXIg ZnJvbSAxIHRvIDMxKTwvbGk+CgkJPGxpPjxjb2RlPnt3ZWVrZGF5fTwvY29kZT4gOiBjdXJy ZW50IHdlZWtkYXkgYXMgYSB3b3JkIGluIHRoZSBsb2NhbCBsYW5ndWFnZSwgb3IgZnJvbSB5 b3VyIDxjb2RlPmRheWZvcm1hdDwvY29kZT4gbGlzdDwvbGk+CgkJPGxpPjxjb2RlPnt3ZWVr fTwvY29kZT4gOiBjdXJyZW50IGlzbyB3ZWVrIG51bWJlcjwvbGk+CgkJPGxpPjxjb2RlPntt b250aH08L2NvZGU+IDogY3VycmVudCBtb250aCAoYXMgYSBudW1iZXIgZnJvbSAxIHRvIDEy KTwvbGk+CgkJPGxpPjxjb2RlPnttb250aG5hbWV9PC9jb2RlPiA6IG1vbnRoIG5hbWUgaW4g dGhlIGxvY2FsIGxhbmd1YWdlLCBvciBmcm9tIHlvdXIgPGNvZGU+bW9udGhmb3JtYXQ8L2Nv ZGU+IGxpc3Q8L2xpPgoJCTxsaT48Y29kZT57eWVhcn08L2NvZGU+IDogY3VycmVudCB5ZWFy ICg0IGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57c2hvcnR5ZWFyfTwvY29kZT4gOiBjdXJy ZW50IHllYXIgKDIgZGlnaXRzKTwvbGk+CgkJPGxpPjxjb2RlPntpc295ZWFyfTwvY29kZT4g OiBjdXJyZW50IGlzbyB5ZWFyICg0IGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57c2hvcnRp c295ZWFyfTwvY29kZT4gOiBjdXJyZW50IGlzbyB5ZWFyICgyIGRpZ2l0cyk8L2xpPgoJCTxs aT48Y29kZT57ZXZlbnRzfTwvY29kZT4gOiBhbGwgZXZlbnRzIGZvciB0aGUgZGF5PC9saT4K CQk8bGk+PGNvZGU+e3N0YW5kYXJkfTwvY29kZT4gOiBvbmx5IHN0YW5kYXJkIGV2ZW50czwv bGk+CgkJPGxpPjxjb2RlPntyZWN1cmZpcnN0fTwvY29kZT4gLyA8Y29kZT57cmVjdXJ9PC9j b2RlPiA6IHRoZSBjaG9zZW4gdHlwZSBvZiByZWN1cnJpbmcgZXZlbnQ8L2xpPgoJCTxsaT48 Y29kZT57YWxscmVjdXJ9PC9jb2RlPiA6IGFsbCByZWN1cnJpbmcgZXZlbnRzIGZvciB0aGUg ZGF5PC9saT4KCQk8bGk+PGNvZGU+e211bHRpZmlyc3R9PC9jb2RlPiAvIDxjb2RlPnttdWx0 aX08L2NvZGU+IC8gPGNvZGU+e211bHRpcHJldn08L2NvZGU+IC8gPGNvZGU+e211bHRpbGFz dH08L2NvZGU+IDogdGhlIGNob3NlbiB0eXBlIG9mIG11bHRpIGV2ZW50PC9saT4KCQk8bGk+ PGNvZGU+e2FsbG11bHRpfTwvY29kZT4gOiBhbGwgbXVsdGkgZXZlbnRzIGZvciB0aGUgZGF5 PC9saT4KCQk8bGk+PGNvZGU+e2NhbmNlbH08L2NvZGU+IDogb25seSBjYW5jZWxsZWQgZXZl bnRzPC9saT4KCQk8bGk+PGNvZGU+e2V4dHJhfTwvY29kZT4gOiBvbmx5IGV4dHJhIGV2ZW50 czwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0ic2l6ZWRpZmYiPkRpZmZlcmVuY2VzIGJldHdlZW4g bGFyZ2UgYW5kIHNtYWxsIGNhbGVuZGFyczwvaDI+CgoJPHA+Tm90IGEgbG90ISBCdXQgdGhl cmUgYXJlIHNvbWUgc3VidGxldGllczo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5jZWxsZm9y bTwvY29kZT4gY2Fubm90IGJlIHVzZWQgb24gYSBzbWFsbCBjYWxlbmRhcjwvbGk+CgkJPGxp PkJ5IGRlZmF1bHQsIG5vIGV2ZW50cyBhcmUgcGxhY2VkIGluIHRoZSBzbWFsbCBjYWxlbmRh ci4gWW91IGNhbiBhZGQgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2lzaCBiZWNhdXNlIHlvdSBj YW4gdXNlIHRoZSBzYW1lIGZvcm0vY29udGFpbmVyIG1lY2hhbmlzbSBhcyB0aGUgbGFyZ2Ug Y2FsZW5kYXI8L2xpPgoJCTxsaT5UaGUgb25seSB0aGluZyByZW5kZXJlZCBpbiBhIHNtYWxs IGNhbGVuZGFyIGNlbGwgaXMgdGhlIGh5cGVybGlua2VkIGRhdGUgYW5kIGFueSA8YSBocmVm PSIjbmFtaW5nIj5mbGFnczwvYT4gc28geW91IGNhbiBzdHlsZSB0aGUgYm94ZXM8L2xpPgoJ CTxsaT48Y29kZT5jbGFzc2xldmVsczwvY29kZT4gYXJlIGlnbm9yZWQ6IGV2ZXJ5dGhpbmcg aXMgYXV0b21hdGljYWxseSBhc3NpZ25lZCBhdCB0aGUgY2VsbCBsZXZlbCAoaS5lLiA8Y29k ZT5jZWxscGx1czwvY29kZT4gaXMgc2V0KTwvbGk+CgkJPGxpPjxjb2RlPmV2ZW50Y2xhc3Nl czwvY29kZT4gYXJlIHN0aWxsIGhvbm91cmVkIGlmIHlvdSB3aXNoIHRvIHVzZSBhIDxjb2Rl PmZvcm08L2NvZGU+IHRvIHByb2Nlc3MgdGhlbSB5b3Vyc2VsZjwvbGk+CgkJPGxpPlRoZSBz bWFsbCBjYWxlbmRhciBvdXRwdXRzIHllYXItbW9udGgtZGF5LXRpdGxlIG9yIG1lc3N5IHBl cm1saW5rcyBvbmx5PC9saT4KCTwvdWw+CgoJPHA+QXNpZGUgZnJvbSB0aGF0IHRoZXkmIzgy MTc7cmUgcHJldHR5IG11Y2ggaWRlbnRpY2FsLjwvcD4KCgk8aDIgaWQ9ImlmY2FsIj5UYWc6 IDxjb2RlPiZsdDt0eHA6c21kX2lmX2NhbCZndDs8L2NvZGU+PC9oMj4KCgk8cD5UaGlzIGNv bmRpdGlvbmFsIHRhZyBhbGxvd3MgeW91ICYjODIxMjsgaW5zaWRlIHlvdXIgY29udGFpbmVy L2Zvcm1zICAmIzgyMTI7IHRvIHRlc3QgY2VydGFpbiBjb25kaXRpb25zIG9mIHRoZSBjdXJy ZW50IGV2ZW50L2NlbGwuIEZvciBlbmhhbmNlZCBjb25kaXRpb25hbCBjaGVja2luZyAocGVy aGFwcyBpbiBjb25qdW5jdGlvbiB3aXRoIDxhIGhyZWY9IiNjYWxub3ciPnNtZF9jYWxfbm93 PC9hPiksIGNvbnNpZGVyIHRoZSBzbWRfaWYgcGx1Z2luLjwvcD4KCgk8aDMgY2xhc3M9ImF0 dHMgIiBpZD0iYXR0c2lmY2FsIj5BdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5mbGFnPC9zcGFuPiA6IHRoZSBjZWxsIG9yIGV2ZW50IGZsYWcocykg eW91IHdhbnQgdG8gdGVzdCwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBjb21tYS4gQ2hvb3NlIGZy b206IDxjb2RlPmV2ZW50PC9jb2RlPiwgPGNvZGU+c3RhbmRhcmQ8L2NvZGU+LCA8Y29kZT5y ZWN1cmZpcnN0PC9jb2RlPiwgPGNvZGU+cmVjdXI8L2NvZGU+LCA8Y29kZT5tdWx0aWZpcnN0 PC9jb2RlPiwgPGNvZGU+bXVsdGlsYXN0PC9jb2RlPiwgPGNvZGU+bXVsdGk8L2NvZGU+LCA8 Y29kZT5tdWx0aXByZXY8L2NvZGU+LCA8Y29kZT5jYW5jZWw8L2NvZGU+LCA8Y29kZT5vbWl0 PC9jb2RlPiwgPGNvZGU+ZXh0cmE8L2NvZGU+LCA8Y29kZT5ob2xzPC9jb2RlPiwgPGNvZGU+ dG9kYXk8L2NvZGU+LCBvciB0aGUgc3BlY2lhbCBmbGFnIDxjb2RlPlNNRF9BTlk8L2NvZGU+ IHdoaWNoIHdpbGwgdHJpZ2dlciBpZiB0aGUgY2VsbCBvciBldmVudCBjb250YWlucyBhbnkg b2YgdGhlIGFib3ZlLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5jYWxpZDwvc3Bhbj4gOiB0aGUgY2FsZW5kYXIgSUQgeW91IHdpc2ggdG8gY2hlY2sg Zm9yIGEgbWF0Y2guIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnllYXI8L3NwYW4+IDogdGhlIHllYXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4g RGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXNveWVhcjwv c3Bhbj4gOiB0aGUgaXNvIHllYXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVs dDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bW9udGg8L3NwYW4+IDog dGhlIG1vbnRoIG51bWJlciAoMS0xMikgdGhhdCB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGlu LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53ZWVrPC9z cGFuPiA6IHRoZSBpc28gd2VlayBudW1iZXIgdGhhdCB0aGUgY3VycmVudCBjZWxsIGZhbGxz IGluLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kYXk8 L3NwYW4+IDogdGhlIGRheSBudW1iZXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVm YXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bG9naWM8L3NwYW4+ IDogd2hldGhlciB5b3Ugd2FudCB0byBjaGVjayBpZiA8ZW0+YWxsPC9lbT4gdGVzdHMgeW91 IG5vbWluYXRlZCBhcmUgdHJ1ZSBpbiB0aGUgY3VycmVudCBjZWxsICg8Y29kZT5sb2dpYz0m cXVvdDthbmQmcXVvdDs8L2NvZGU+KSBvciA8ZW0+YXQgbGVhc3Qgb25lPC9lbT4gb2YgdGhl IHRlc3RzIGlzIHRydWUgKDxjb2RlPmxvZ2ljPSZxdW90O29yJnF1b3Q7PC9jb2RlPikuIERl ZmF1bHQ6IDxjb2RlPm9yPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPiYjODIxNjtBbmQmIzgy MTc7IGxvZ2ljIGlzIGdvb2QgZm9yIGNoZWNraW5nIGlmIHRoZSBjZWxsIGlzIG9mIGEgY2Vy dGFpbiB0eXBlIDxzcGFuIGNsYXNzPSJjYXBzIj5BTkQ8L3NwYW4+IGlzIGxhdGVyIHRoYW4g dGhlIDE1dGggb2YgdGhlIG1vbnRoLCBmb3IgZXhhbXBsZS48L3A+CgoJPHA+UnVkaW1lbnRh cnkgY29tcGFyYXRvcnMgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIDxjb2RlPihpc28peWVhcjwv Y29kZT4sIDxjb2RlPm1vbnRoPC9jb2RlPiwgPGNvZGU+d2VlazwvY29kZT4gYW5kIDxjb2Rl PmRheTwvY29kZT4gYXR0cmlidXRlcy4gTm9ybWFsbHkgdGhlIHZhbHVlIHlvdSBzdXBwbHkg d2lsbCBiZSB0ZXN0ZWQgZm9yIGFuIGV4YWN0IG1hdGNoIGJ1dCBpZiB5b3UgcHJlZml4IGl0 IHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIHNlcXVlbmNlcyB0aGVuIHRo ZSBiZWhhdmlvdXIgY2hhbmdlczo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4mZ3Q7PC9jb2Rl PiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPmdyZWF0ZXIgdGhhbjwvZW0+IHRoZSBnaXZl biB2YWx1ZSAoZS5nLiA8Y29kZT55ZWFyPSZxdW90OyZndDsyMDA4JnF1b3Q7PC9jb2RlPik8 L2xpPgoJCTxsaT48Y29kZT4mZ3Q7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlzIDxl bT5ncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG88L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4g PGNvZGU+bW9udGg9JnF1b3Q7Jmd0Oz03JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48Y29k ZT4mbHQ7PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPmxlc3MgdGhhbjwvZW0+ IHRoZSBnaXZlbiB2YWx1ZSAoZS5nLiA8Y29kZT5kYXk9JnF1b3Q7Jmx0OzE1JnF1b3Q7PC9j b2RlPik8L2xpPgoJCTxsaT48Y29kZT4mbHQ7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRl IGlzIDxlbT5sZXNzIHRoYW4gb3IgZXF1YWwgdG88L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUu Zy4gPGNvZGU+bW9udGg9JnF1b3Q7Jmx0Oz01JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48 Y29kZT4hPC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPm5vdDwvZW0+IHRoZSBn aXZlbiB2YWx1ZSAoZS5nLiA8Y29kZT5kYXk9JnF1b3Q7ITE1JnF1b3Q7PC9jb2RlPik8L2xp PgoJPC91bD4KCgk8aDIgaWQ9ImNhbGluZm8iPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRfY2Fs X2luZm8gLyZndDs8L2NvZGU+PC9oMj4KCgk8cD5JbnNpZGUgeW91ciBjb250YWluZXIvZm9y bXMsIHVzZSB0aGlzIHRhZyB0byBvdXRwdXQgY2VydGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgY3VycmVudCBldmVudC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxp bmZvIj5BdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50 eXBlPC9zcGFuPiA6IHRoZSB0eXBlKHMpIG9mIGluZm9ybWF0aW9uIHlvdSB3YW50IHRvIHJl dHVybiwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBjb21tYS4gQ2hvb3NlIGZyb206IDxjb2RlPmZs YWc8L2NvZGU+LCA8Y29kZT5jYWxpZDwvY29kZT4sIDxjb2RlPihpc28peWVhcjwvY29kZT4g LyA8Y29kZT5tb250aDwvY29kZT4gLyA8Y29kZT53ZWVrPC9jb2RlPiAvIDxjb2RlPmRheTwv Y29kZT4sIDxjb2RlPnM8L2NvZGU+IChjdXJyZW50IHNlY3Rpb24pIC8gPGNvZGU+Y2F0ZWdv cnk8L2NvZGU+IC8gPGNvZGU+YXV0aG9yPC9jb2RlPiAob3IgPGNvZGU+cmVhbG5hbWU8L2Nv ZGU+KSwgPGNvZGU+YXJ0aWNsZTwvY29kZT4gKGlkIG9mIHRoZSBjdXJyZW50bHkgdmlld2Vk IGFydGljbGUpLCBvciBhbnkgb3RoZXIgYXJ0aWNsZSB2YXJpYWJsZSBzdWNoIGFzIDxjb2Rl PnNlY3Rpb248L2NvZGU+ICh0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3Mgc2VjdGlvbiks IDxjb2RlPmF1dGhvcmlkPC9jb2RlPiwgPGNvZGU+YXJ0aWNsZV9pbWFnZTwvY29kZT4sIGV0 YzxkaXYgY2xhc3M9ImJyZWFrIj5JZiB1c2luZyB0aGUgPGNvZGU+aHRtbDwvY29kZT4gYXR0 cmlidXRlLCB5b3UgbWF5IG9wdGlvbmFsbHkgc3BlY2lmeSB0aGUgbmFtZSB5b3Ugd2FudCB0 aGUgdmFyaWFibGUgdG8gYXBwZWFyIGFzIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiBzdHJpbmcuIFRoZSB2YXJpYWJsZXMgYWxsIHRha2Ugb24gc2Vuc2libGUgZGVm YXVsdHMgKGUuZy4gJiM4MjE2O3NlY3Rpb24mIzgyMTc7IGJlY29tZXMgPGNvZGU+P3M9Jmx0 O3NlY3Rpb24gbmFtZSZndDs8L2NvZGU+LCAmIzgyMTY7Y2F0ZWdvcnkxJiM4MjE3OyBiZWNv bWVzIDxjb2RlPj9jPSZsdDtjYXRlZ29yeTEgbmFtZSZndDs8L2NvZGU+LCBldGMpIGJ1dCBp Ziwgc2F5LCB5b3Ugd2FudGVkIGNhdGVnb3J5MSB0byBiZSBrbm93biBhcyA8Y29kZT50aGVf Y2F0PC9jb2RlPiB5b3UgY291bGQgd3JpdGUgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8g dHlwZT0mcXVvdDtjYXRnZW9yeTp0aGVfY2F0JnF1b3Q7IGh0bWw9JnF1b3Q7MSZxdW90OyAv Jmd0OzwvY29kZT4uIFlvdSB3b3VsZCB0aGVuIHNlZSA8Y29kZT4/dGhlX2NhdD0mbHQ7Y2F0 ZWdvcnkxIG5hbWUmZ3Q7PC9jb2RlPjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5qb2luPC9zcGFuPiA6IHRoZSBjaGFyYWN0ZXJzIHlvdSB3YW50IHRvIHVzZSB0byBz ZXBhcmF0ZSBlYWNoIGl0ZW0geW91IGFza2VkIGZvci4gTm90ZSBpdCBpcyB0aGUgY2hhcmFj dGVycyA8ZW0+YmV0d2VlbjwvZW0+IGVhY2ggaXRlbSBzbyB0aGUgdmVyeSBmaXJzdCBlbnRy eSB3aWxsIDxzdHJvbmc+bm90PC9zdHJvbmc+IGhhdmUgdGhlIDxjb2RlPmpvaW48L2NvZGU+ IGluIGZyb250IG9mIGl0IChzZWUgPGNvZGU+am9pbl9wcmVmaXg8L2NvZGU+KS4gRGVmYXVs dDogYSBzcGFjZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5qb2luX3ByZWZpeDwv c3Bhbj4gOiB0aGUgc3RyaW5nIHlvdSB3YW50IHRvIHB1dCBpbiBmcm9udCBvZiB0aGUgZmly c3QgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdC4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IHRo aXMgYXR0cmlidXRlIGl0IGRlZmF1bHRzIHRvIDxjb2RlPlNNRF9BVVRPPC9jb2RlPiB3aGlj aCB0cmllcyB0byBiZSBjbGV2ZXI6Cgk8dWw+CgkJPGxpPmlmIHVzaW5nIDxjb2RlPnR5cGU9 JnF1b3Q7ZmxhZyZxdW90OzwvY29kZT4gdGhlIGpvaW5fcHJlZml4IGlzIHNldCB0byB0aGUg c2FtZSBhcyA8Y29kZT5qb2luPC9jb2RlPi4gVGh1cyB3aXRoIDxjb2RlPmpvaW49JnF1b3Q7 IGNhbF8mcXVvdDs8L2NvZGU+IHlvdSBtaWdodCBnZXQgPGNvZGU+IGNhbF9tdWx0aSBjYWxf dG9kYXkgY2FsX2hvbHM8L2NvZGU+PC9saT4KCQk8bGk+aWYgdXNpbmcgPGNvZGU+aHRtbD0m cXVvdDsxJnF1b3Q7PC9jb2RlPiB0aGUgam9pbl9wcmVmaXggaXMgc2V0IHRvIGEgcXVlc3Rp b24gbWFyaywgdGh1czogPGNvZGU+dHlwZT0mcXVvdDttb250aCx5ZWFyLGNhdGVnb3J5JnF1 b3Q7IGh0bWw9JnF1b3Q7MSZxdW90OzwvY29kZT4gbWlnaHQgcmVuZGVyIDxjb2RlPj9tPTEy JmFtcDt5PTIwMDgmYW1wO2M9Z2lnczwvY29kZT4sIHdoaWNoIGNhbiBiZSBwdXQgc3RyYWln aHQgb24gdGhlIGVuZCBvZiBhbiBhbmNob3I8L2xpPgoJPC91bD48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+aHRtbDwvc3Bhbj4gOiBJZiBzZXQgdG8gMSwgcmV0dXJucyBub3Qg b25seSB0aGUgdmFsdWVzIHlvdSBzcGVjaWZpZWQgYnV0IHRoZWlyIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIG5hbWVzIGFzIHdlbGwsIGdpdmluZyB5b3UgdGhl IGVudGlyZSBzdHJpbmcgYXMgYSB2YWxpZCBzZXQgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gcGFyYW1ldGVycyB3aGljaCBjYW4gYmUgYWRkZWQgdG8gYW4gYW5jaG9yLiBJ dCBvdmVycmlkZXMgdGhlIDxjb2RlPmpvaW48L2NvZGU+IGF0dHJpYnV0ZSBhbmQgc2V0cyBp dCB0byBhbiBhbXBlcnNhbmQuIERlZmF1bHQ6IDAuPGRpdiBjbGFzcz0iYnJlYWsiPlRoaXMg YXR0cmlidXRlIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGJ1aWxkaW5nIHlvdXIgb3duIGNvbnRl bnQgaW5zaWRlIGVhY2ggY2VsbCB2aWEgYSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQgd2lzaCB0 byBtYWludGFpbiB0aGUgY3VycmVudCBzZWFyY2ggZW52aXJvbm1lbnQuIElmIHlvdSBhbGxv dyBwZW9wbGUgdG8gZmlsdGVyIGV2ZW50cyBieSBjYXRlZ29yeSBvciBhdXRob3IgeW91IGNh biB1c2UgdGhpcyB0byByZXR1cm4gdGhlICYjODIxNjtjdXJyZW50JiM4MjE3OyBzdGF0ZSBv ZiBjZXJ0YWluIHZhcmlhYmxlcyBzbyB5b3UgY2FuIHBhc3MgdGhlbSB0byB0aGUgbmV4dCBw YWdlIGFuZCBtYWludGFpbiBzdGF0ZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5lc2NhcGU8L3NwYW4+IDogZXNjYXBlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiBlbnRpdGllcyBzdWNoIGFzIDxjb2RlPiZsdDs8L2NvZGU+LCA8Y29kZT4mZ3Q7PC9j b2RlPiBhbmQgPGNvZGU+JmFtcDs8L2NvZGU+IGZvciBwYWdlIHZhbGlkYXRpb24gcHVycG9z ZXMuIFNldCB0byA8Y29kZT5lc2NhcGU9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0dXJuIGl0 IG9mZi4gRGVmYXVsdDogPGNvZGU+aHRtbDwvY29kZT48L2xpPgoJPC91bD4KCgk8aDIgaWQ9 ImNhbGNsYXNzIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9jbGFzcyAvJmd0OzwvY29k ZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3JtcywgdXNlIHRoaXMgdGFn IHRvIGFkZCBhIGxpc3Qgb2YgY2xhc3NlcyB0byB0aGUgY3VycmVudCBjZWxsL2V2ZW50LiBW ZXJ5IHVzZWZ1bCBpZiBidWlsZGluZyBjZWxscyB5b3Vyc2VsZiBiZWNhdXNlIGluc2lkZSBh IDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWw8L2E+IHRhZyB5b3UgY291bGQgYWRkIHBh cnRpY3VsYXIgY2xhc3MgbmFtZXMgYmFzZWQgb24gc29tZSB2YWx1ZSBpbiBhIGNlbGwuPC9w PgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRzY2FsY2xhc3MiPkF0dHJpYnV0ZXM8L2gz PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hbWU8L3NwYW4+IDogYSBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBjbGFzc25hbWVzIHRvIGFkZCB0byB0aGUgY3VycmVudCBj ZWxsL2V2ZW50LiBUaGVzZSBhcmUgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gc3ViamVjdCB0byBh bnkgPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gc28gd2lsbCBhbHdheXMgYXBwZWFyIGV4 YWN0bHkgYXMgeW91IHdyaXRlIHRoZW08L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNhbG5vdyI+ VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+ UmV0dXJuIHRoZSBjdXJyZW50IGRhdGUvdGltZSwgZm9ybWF0dGVkIGhvd2V2ZXIgeW91IHBs ZWFzZS4gVXNlZnVsIGZvciBleHRyYWN0aW5nIHBhcnRzIG9mIHRoZSBjdXJyZW50IHN5c3Rl bSB0aW1lc3RhbXAgdG8gY29tcGFyZSB0aGluZ3MgdmlhIG90aGVyIGNvbmRpdGlvbmFsIHBs dWdpbnMgb3IgdGhlIDxjb2RlPiZsdDt0eHA6c21kX2lmX2NhbCZndDs8L2NvZGU+IHRhZy48 L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxub3ciPkF0dHJpYnV0ZXM8L2gz PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm1hdDwvc3Bhbj4gOiB0aGUg d2F5IHlvdSB3YW50IHRoZSBkYXRlL3RpbWUgcmVwcmVzZW50ZWQuIFVzZSBhbnkgdmFsaWQg PGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBz dHJpbmcuIERlZmF1bHRzIHRvIHRoZSBkYXRlIGZvcm1hdCB5b3Ugc2V0IGluIEJhc2ljIFBy ZWZzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5vdzwvc3Bhbj4gOiBpZiB5b3Ug ZG9uJiM4MjE3O3Qgd2FudCB0aGUgdGltZSB0byBiZSwgdW1tLCAmIzgyMTY7bm93JiM4MjE3 OyB5b3UgY2FuIHN0YXRlIHdoYXQgdGltZSAmIzgyMTY7bm93JiM4MjE3OyBpcyEgVXNlIGFu eSBzdGFuZGFyZCBkYXRlL3RpbWUgZm9ybWF0LiAgRGVmYXVsdDogdGhlIHRpbWUgYXQgd2hp Y2ggeW91IGNhbGwgdGhlIHRhZy48ZGl2IGNsYXNzPSJicmVhayI+WW91IG1heSBhbHNvIHVz ZSB0aGUgY29kZXMgPGNvZGU+P2RheTwvY29kZT4sIDxjb2RlPj9tb250aDwvY29kZT4gb3Ig PGNvZGU+P3llYXI8L2NvZGU+IGluIHlvdXIgdGltZSBzdHJpbmcgd2hpY2ggd2lsbCBkbyBv bmUgb2YgdHdvIHRoaW5nczoKCTx1bD4KCQk8bGk+cmVwbGFjZSB0aGUgY29kZXMgd2l0aCB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGFyYW1ldGVycyA8Y29kZT5kPTwv Y29kZT4sIDxjb2RlPm09PC9jb2RlPiBvciA8Y29kZT55PTwvY29kZT4sIGlmIHRoZXkgYXJl IGJlaW5nIHVzZWQ8L2xpPgoJCTxsaT51c2UgdGhlIGN1cnJlbnQgZGF5LCBtb250aCBvciB5 ZWFyIChpLmUuIHRoZSBwYXJ0cyBvZiB0b2RheSYjODIxNztzIGRhdGUpPGJyIC8+CjwvZGl2 PjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3Nw YW4+IDogYW4gb2Zmc2V0IGludG8gdGhlIGZ1dHVyZSB0aGF0IHlvdSB3aXNoIHRvIGFwcGx5 IHRvIDxjb2RlPm5vdzwvY29kZT4uIGUuZy4gPGNvZGU+MiBtb250aHM8L2NvZGU+LiBTZWUg PGEgaHJlZj0iI2VnNiI+RXhhbXBsZSA2PC9hPiBmb3IgYSBwcmFjdGljYWwgYXBwbGljYXRp b24gb2YgdGhpcyBhdHRyaWJ1dGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z210 PC9zcGFuPiA6IHJldHVybiBlaXRoZXIgbG9jYWwgdGltZSAoMCkgYWNjb3JkaW5nIHRvIHRo ZSB0aW1lIHpvbmUgc2V0IGluIEJhc2ljIFByZWZzLCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+ R01UPC9zcGFuPiB0aW1lICgxKS4gRGVmYXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5sYW5nPC9zcGFuPiA6IGFuIGlzbyBsYW5ndWFnZSBjb2RlIHRoYXQgZm9ybWF0 cyB0aW1lIHN0cmluZ3Mgc3VpdGFibGUgZm9yIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgKG9y IGxvY2FsZSkgYXMgZGVmaW5lZCBieSA8YSBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlhLm9y Zy93aWtpL0lTT182MzkiPmlzbyA2Mzk8L2E+LiBEZWZhdWx0OiB1bnNldCAoaS5lLiB1c2Ug dGhlIHZhbHVlIGFzIHN0YXRlZCBpbiBUZXh0cGF0dGVybiBwcmVmcyk8L2xpPgoJPC91bD4K Cgk8aDIgaWQ9ImFydGV2Ij5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQg LyZndDs8L2NvZGU+PC9oMj4KCgk8cD5XaGVuIHlvdSBjcmVhdGUgZXZlbnRzLCB0aGV5IHJl YWxseSBvbmx5IGV4aXN0IG9uY2UgYXMgYSBzaW5nbGUgYXJ0aWNsZTsgdGhlIHJlcGV0aXRp b24gaXMgYSB0cmljay4gVGh1cyB0aGUgYnVpbHQtaW4gYXJ0aWNsZSB0YWdzIG9ubHkgc2hv dyB0aGUgc2luZ2xlLCByZWFsIGFydGljbGVzLjwvcD4KCgk8cD5UaGlzIHRhZyAmIzgyMTI7 IHNpbWlsYXIgaW4gZnVuY3Rpb24gdG8gPGNvZGU+Jmx0O3R4cDphcnRpY2xlX2N1c3RvbSAv Jmd0OzwvY29kZT4gJiM4MjEyOyBhbGxvd3MgeW91IHRvIHNlZSByZWN1cnJpbmcgYXJ0aWNs ZXMgYXMgaWYgdGhleSB3ZXJlICYjODIxNjtyZWFsJiM4MjE3OyBhcnRpY2xlcyBpbiB0aGUg ZGF0YWJhc2UuIEluc2lkZSB0aGUgdGFnJiM4MjE3O3MgPGNvZGU+Zm9ybTwvY29kZT4gb3Ig Y29udGFpbmVyIHlvdSBjYW4gdXNlIGFsbCBleGlzdGluZyBhcnRpY2xlIHRhZ3MgdG8gZGlz cGxheSBhbnkgaW5mb3JtYXRpb24geW91IGxpa2UgYWJvdXQgZWFjaCAmIzgyMTY7dmlydHVh bCYjODIxNzsgYXJ0aWNsZS48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNhcnRl diI+QXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3Rl cGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgc21kX2NhbGVuZGFyPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnNraXBmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIHNtZF9jYWxlbmRhcjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbWl0ZmllbGQ8L3NwYW4+IDogc2FtZSBh cyBzbWRfY2FsZW5kYXI8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXh0cmFmaWVs ZDwvc3Bhbj4gOiBzYW1lIGFzIHNtZF9jYWxlbmRhcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5kYXRlZmllbGRzPC9zcGFuPiA6IHNhbWUgYXMgc21kX2NhbGVuZGFyPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmFsbHNwYW5uZWQ8L3NwYW4+IDogbm9ybWFsbHks IGFueSBldmVudCB0aGF0IGhhcyBhIHN0YXJ0IGRhdGUgaW4gdGhlIHBhc3Qgd2lsbCBiZSBv bWl0dGVkIGZyb20gdGhlIGxpc3QuIFdoZW4gZGVhbGluZyB3aXRoIHNwYW5uZWQgZXZlbnRz LCB5b3UgbWF5IHdpc2ggdG8gc2hvdyByZW1haW5pbmcgZGF5cyBpbiBhIEJyb2Fkd2F5IHNo b3cmIzgyMTc7cyBzY2hlZHVsZSBldmVuIHRob3VnaCB0aGUgZXZlbnQgc3RhcnRlZCBzb21l IG1vbnRocyBhZ28uIFNldCA8Y29kZT5hbGxzcGFubmVkPSZxdW90OzEmcXVvdDs8L2NvZGU+ IHRvIGRvIHRoaXMuIERlZmF1bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ dHlwZTwvc3Bhbj4gOiB0aGUgdHlwZXMgb2YgZXZlbnQgdG8gZGlzcGxheS4gRGVmYXVsdDog PGNvZGU+c3RhbmRhcmQsIHJlY3VyLCBtdWx0aTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEg bGlzdCBvZiBzZWN0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0byBhIGxp c3Qgb2YgY2F0ZWdvcmllcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8gYSBsaXN0 IG9mIGF1dGhvciBsb2dpbiBuYW1lcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+cmVhbG5hbWU8L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0 byBhIGxpc3Qgb2YgYXV0aG9yIFJlYWwgTmFtZXMgKG5vdGU6IGFkZHMgb25lIGV4dHJhIHF1 ZXJ5KS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8 L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0byBhIGxpc3Qgb2YgYXJ0aWNsZSBJRHMu IERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0YXR1czwv c3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIHRoaXMgbGlzdCBvZiBhcnRpY2xlIHN0 YXR1cy4gRGVmYXVsdDogPGNvZGU+bGl2ZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+ZXhwaXJlZDwvc3Bhbj4gOiBkZWZpbml0aXZlbHkgaGlkZSAoMCkgb3Igc2hv dyAoMSkgZXhwaXJlZCBldmVudHMuIExlYXZlIGJsYW5rIHRvIHVzZSB0aGUgVGV4dHBhdHRl cm4gQWR2YW5jZWQgUHJlZmVyZW5jZSAmIzgyMTY7UHVibGlzaCBleHBpcmVkIGFydGljbGVz JiM4MjE3OzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IG9u bHkgc2hvdyBldmVudHMgaW4gdGhpcyB0aW1lIGZyYW1lLiBDaG9vc2UgZnJvbSA8Y29kZT5h bnk8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxjb2RlPnBhc3Q8L2NvZGU+LiBE ZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pm1vbnRoPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgdGhhdCBvY2N1ciBpbiB0aGUgZ2l2 ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPllZWVk8L3NwYW4+LW1tLiBEZWZhdWx0OiB1bnNldDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mcm9tPC9zcGFuPiA6IG9ubHkgc2hvdyBl dmVudHMgZnJvbSB0aGlzIHN0YXJ0IGRhdGUuIENhbiBiZSBhbnkgdmFsaWQgZGF0ZSBmb3Jt YXQuIERlZmF1bHQ6IHVuc2V0IChpLmUuIGFsbCBkYXRlcyk8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+dG88L3NwYW4+IDogb25seSBzaG93IGV2ZW50cyB1cCB0byB0aGlzIGVu ZCBkYXRlLiBDYW4gYmUgYW55IHZhbGlkIGRhdGUgZm9ybWF0LiBEZWZhdWx0OiB1bnNldCAo aS5lLiBhbGwgZGF0ZXMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3Nw YW4+IDogb3JkZXIgdGhlIGV2ZW50cyBieSB0aGlzIGNvbHVtbi4gVGhlIG1vc3QgdXNlZnVs IHZhbHVlIGlzIHRoZSBkZWZhdWx0OiA8Y29kZT5Qb3N0ZWQgYXNjPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHBhc3MgZWFjaCBtYXRjaGlu ZyBldmVudCB0byB0aGUgZ2l2ZW4gVGV4dHBhdHRlcm4gZm9ybS4gRGVmYXVsdDogdW5zZXQu IE5vdGUgdGhhdCB1c2luZyB0aGUgY29udGFpbmVyIG92ZXJyaWRlcyB0aGlzIGF0dHJpYnV0 ZSwgYW5kIGlmIHlvdSBzcGVjaWZ5IG5laXRoZXIgYSBmb3JtIG5vciBjb250YWluZXIsIHlv dSB3aWxsIHNlZSBhIGxpc3Qgb2YgYXJ0aWNsZSBwb3N0ZWQgZGF0ZXM8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+cGFnaW5nPC9zcGFuPiA6IHVubGlrZSBhcnRpY2xlX2N1c3Rv bSwgZXZlbnRzIGZyb20gdGhlIHNtZF9hcnRpY2xlX2V2ZW50IHRhZyBtYXkgYmUgcGFnZWQg dXNpbmcgPGNvZGU+Jmx0O3R4cDpvbGRlciAvJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt0 eHA6bmV3ZXIgLyZndDs8L2NvZGU+LiBJZiB5b3Ugd2lzaCB0byBzaG93IGFuIGV2ZW50IGxp c3Qgb24gdGhlIHNhbWUgcGFnZSBhcyBhIHN0YW5kYXJkIGFydGljbGUgbGlzdCwgdGhlIG9s ZGVyL25ld2VyIHRhZ3Mgd2lsbCBuYXZpZ2F0ZSBib3RoIGxpc3RzIHNpbXVsdGFuZW91c2x5 IHNvIHlvdSBtYXkgbmVlZCB0byB0dXJuIHBhZ2luZyBvbiAoMSkgb3Igb2ZmICgwKS4gRGVm YXVsdDogMTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZzZXQ8L3NwYW4+IDog YmVnaW4gZGlzcGxheWluZyBldmVudHMgZnJvbSB0aGlzIHBvc2l0aW9uLCBpbnN0ZWFkIG9m IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaXN0IG9mIGV2ZW50cy4gRGVmYXVsdDogMDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBvbmx5IHNob3cgdGhp cyBtYW55IGV2ZW50cyBtYXhpbXVtIDxzdHJvbmc+cGVyIHBhZ2U8L3N0cm9uZz4sIGkuZS4g dGhlIG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheSwgd2hldGhlciB0aGV5IGNvbWUgZnJv bSBvbmUgJiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGUgb3IgbWFueS4gRGVmYXVsdDogMTA8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnRsaW1pdDwvc3Bhbj4gOiBvbmx5 IHNob3cgdGhpcyBtYW55IGV2ZW50cyBtYXhpbXVtLCA8c3Ryb25nPnBlciBldmVudDwvc3Ry b25nPi4gU28gaWYgeW91IGhhdmUgYSB3ZWVrbHkgcmVwZWF0ZWQgZXZlbnQgdGhhdCBsYXN0 cyBmb3IgZm91ciBtb250aHMgYW5kIHlvdSBzZXQgPGNvZGU+ZXZlbnRsaW1pdD0mcXVvdDs2 JnF1b3Q7PC9jb2RlPiB5b3Ugd2lsbCBvbmx5IHNlZSBhIG1heGltdW0gb2YgNiBldmVudHMg ZnJvbSBldmVyeSBhcnRpY2xlIGNvbnRhaW5pbmcgcmVwZXRpdGlvbi4gVGhlIHJhbmdlIChz dGFydCBhbmQgZW5kIGRhdGUpIGlzIGRldGVybWluZWQgYnkgb3RoZXIgcGx1Z2luIGF0dHJp YnV0ZXMuIERlZmF1bHQ6IDEwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vi eTwvc3Bhbj4gOiBlc290ZXJpYyBwYWdpbmcgZmVhdHVyZSwgaWRlbnRpY2FsIHRvIDxjb2Rl PiZsdDt0eHA6YXJ0aWNsZSAvJmd0OzwvY29kZT4uIERlZmF1bHQ6IHNhbWUgYXMgPGNvZGU+ bGltaXQ8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBnb25seTwvc3Bh bj4gOiBzZXQgdG8gMSB0byBwZXJmb3JtIHRoZSBwYWdpbmcgYWN0aW9uIHdpdGhvdXQgZGlz cGxheWluZyBhbnl0aGluZy4gUHJvYmFibHkgdXNlbGVzcy4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRN TCB0YWcgd2l0aG91dCBicmFja2V0cyB0byB3cmFwIHRoZSBsaXN0IGluLiBEZWZhdWx0OiB1 bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUg KFgpSFRNTCB0YWcgdG8gc2VwYXJhdGUgZWFjaCBpdGVtIHdpdGguIERlZmF1bHQ6IHVuc2V0 PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFuPiA6IHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyB0byBhcHBseSB0byB0aGUgd3JhcHRh Zy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJPC91bD4KCgk8cD5JdCBpcyB3b3J0aCBub3Rpbmcg dGhhdCB0aGlzIHRhZyBleGVjdXRlcyBpbiAzLXBoYXNlczo8L3A+CgoJPG9sPgoJCTxsaT5Q cmUtZmlsdGVyOiBhbGwgZXZlbnRzIHRoYXQgbWF0Y2ggPGNvZGU+dHlwZTwvY29kZT4sIDxj b2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+c2VjdGlvbjwvY29kZT4sIDxjb2RlPmF1dGhv cjwvY29kZT4sIDxjb2RlPnN0YXR1czwvY29kZT4sIDxjb2RlPmlkPC9jb2RlPiwgYW5kIDxj b2RlPmV4cGlyZWQ8L2NvZGU+IGFyZSBleHRyYWN0ZWQ8L2xpPgoJCTxsaT5UaW1lLWZpbHRl cjogYW55ICYjODIyMDt0aW1lLWJhc2VkJiM4MjIxOyBhdHRyaWJ1dGVzIGFyZSB0aGVuIGFw cGxpZWQgdG8gdGhlIGFib3ZlIGxpc3QuIEF0IHRoaXMgcG9pbnQsIGFueSA8Y29kZT5leHRy YWZpZWxkPC9jb2RlPiwgPGNvZGU+c3RlcGZpZWxkPC9jb2RlPiwgPGNvZGU+b21pdGZpZWxk PC9jb2RlPiwgb3IgPGNvZGU+c2tpcGZpZWxkPC9jb2RlPiBhcmUgY2FsY3VsYXRlZCB0byBm aW5kIHJlcGVhdGVkIGRhdGVzICh1cCB0byBhcyBtYW55IGFzIDxjb2RlPmV2ZW50bGltaXQ8 L2NvZGU+IGFsbG93cyBvciB0aGUgY2FsY3VsYXRpb24gZXhjZWVkcyB0aGUgZXZlbnQmIzgy MTc7cyBleHBpcnkgdGltZSkuIFRoZSBhdHRyaWJ1dGVzIDxjb2RlPnRpbWU8L2NvZGU+LCA8 Y29kZT5tb250aDwvY29kZT4sIDxjb2RlPmZyb208L2NvZGU+LCBhbmQgPGNvZGU+dG88L2Nv ZGU+IGFyZSB1c2VkIHRvIHJlZmluZSB0aGUgZmlsdHJhdGlvbiBoZXJlPC9saT4KCQk8bGk+ T3V0cHV0OiB3aGF0ZXZlciB0aGUgcHJldmlvdXMgcGhhc2VzIGhhdmUgbGVmdCBiZWhpbmQg aXMgc3ViamVjdCB0byBhbnkgPGNvZGU+cGFnaW5nPC9jb2RlPiwgPGNvZGU+b2Zmc2V0PC9j b2RlPiBhbmQgPGNvZGU+bGltaXQ8L2NvZGU+IHlvdSBtYXkgaGF2ZSBzcGVjaWZpZWQsIHRo ZW4gd3JhcHBlZCBhbmQgZGlzcGxheWVkPC9saT4KCTwvb2w+CgoJPGgyIGlkPSJkYXRlcyI+ RGF0ZSBnb3RjaGFzPC9oMj4KCgk8cD5JZiB0aGVyZSB3YXMgb25lIGdsb2JhbCB0aW1lIHpv bmUgdGhlIHdvcmxkIHdvdWxkIGJlIHNpbXBsZXIuIFNhZGx5LCB3ZSBhbGwgbGl2ZSBpbiBk aWZmZXJlbnQgcGxhY2VzIGFuZCB0aGUgSW50ZXJuZXQgQmVhdCBoYXNuJiM4MjE3O3QgcmVh bGx5IHRha2VuIG9mZi4gRXZlbiBtb3JlIHNhZGx5LCBjZXJ0YWluIHBlb3BsZSBpbiBwb3dl ciBkZWNyZWUgdGhhdCB0d2ljZSBhIHllYXIgc29tZSBjb3VudHJpZXMgbXVzdCBhbHRlciB0 aGVpciBjbG9ja3MgdG8gPGVtPlNhdmUgRGF5bGlnaHQ8L2VtPi48L3A+CgoJPHA+VGV4dHBh dHRlcm4gZG9lcyBpdHMgYmVzdCB0byBzaGllbGQgeW91IGZyb20gdGhpcyBtYXloZW0gYnkg YWxsb3dpbmcgeW91IHRvIHNwZWNpZnkgeW91ciBsb2NhbGUsIHRpbWUgb2Zmc2V0LCBhbmQg d2hlbiA8c3BhbiBjbGFzcz0iY2FwcyI+RFNUPC9zcGFuPiBhcHBsaWVzIGluIHlvdXIgdGlt ZSB6b25lIChub3QgZm9yZ2V0dGluZyB0aGUgdGltZSB6b25lIG9mIHlvdXIgc2VydmVyIGlm IGl0IGhhcHBlbnMgdG8gYmUgbm93aGVyZSBuZWFyIHlvdSkuIEFuZCB0aGVyZWluIGxpZXMg dGhlIHJ1Yi48L3A+CgoJPHA+Rm9yIGEgY2FsZW5kYXIgc3lzdGVtLCB3aGVuIHlvdSBzYXkg YW4gZXZlbnQgaXMgZ29pbmcgdG8gb2NjdXIgYXQgOHBtIGluIHNpeCBtb250aHMmIzgyMTc7 IHRpbWUsIHBlc2t5IERheWxpZ2h0IFNhdmluZ3MgbWF5IHRoZW4gYmUgaW4gZWZmZWN0IGFu ZCB5b3VyIGV2ZW50IHdpbGwgYXBwZWFyIGFuIGhvdXIgJiM4MjE2O29mZiYjODIxNzsgKGl0 IG1heSBsb29rIHdyb25nIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UgYXMgd2VsbCBhcyBpbiB5 b3VyIGNhbGVuZGFyLCBkZXBlbmRpbmcgb24gdGhlIHNldHRpbmdzKS48L3A+CgoJPHA+QWxz bywgaWYgeW91ciBzZXJ2ZXIgb3IgeW91ciBvZmZpY2UgaXMgcmVsb2NhdGVkIGFuZCB5b3Ug aGF2ZSB0byBhZGp1c3QgdGltZSB6b25lLCBhbGwgeW91ciBiZWF1dGlmdWxseSBjcmFmdGVk IGRhdGVzIHdpbGwgYmUgc2hpZnRlZC4gVGhleSYjODIxNztyZSBub3QgYWN0dWFsbHkgY2hh bmdlZCBpbiB0aGUgZGF0YWJhc2UgdW5sZXNzIHlvdSBlZGl0IGFuIGFydGljbGUgYW5kIHJl LXNhdmUgaXQsIGJ1dCB0aGV5IDxlbT5hcHBlYXI8L2VtPiB0byBoYXZlIHNoaWZ0ZWQgYmVj YXVzZSBUZXh0cGF0dGVybiBpcyB0cnlpbmcgdG8gc2hpZWxkIHlvdSBmcm9tIHRpbWUgYnVy ZWF1Y3JhY3kgaW4gYSB3b3JsZCBnb25lIG1hZC48L3A+CgoJPHA+VW5mb3J0dW5hdGVseSB0 aGVyZSBpcyBsaXR0bGUgd2UgY2FuIGRvIGFib3V0IHRoaXMgYXQgdGhlIG1vbWVudCB1bnRp bCB0aGUgd2F5IGRhdGVzIGFyZSBoYW5kbGVkIGluIFRleHRwYXR0ZXJuIChvciB0aGUgd29y bGQhKSBpcyBjaGFuZ2VkLiBCdXQgdGhlcmUgYXJlIHNvbWUgc2V0dGluZ3MgdGhhdCB5b3Ug Y2FuIHBsYXkgd2l0aCB0byB0cnkgYW5kIG1ha2Ugc2Vuc2Ugb2YgaXQgYWxsLiBOYW1lbHkg dGhlIDxjb2RlPmdtdDwvY29kZT4gYXR0cmlidXRlIGluIGFueSBvZiBUZXh0cGF0dGVybiYj ODIxNztzIGRhdGUtYmFzZWQgdGFncyBzdWNoIGFzIDxjb2RlPiZsdDt0eHA6cG9zdGVkIC8m Z3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDpleHBpcmVzIC8mZ3Q7PC9jb2RlPi4gT3Ig dHJ5IHVzaW5nIHlvdXIgb3duIDxjb2RlPmRhdGVmaWVsZHM8L2NvZGU+LiBTb21ldGltZXMg ZmlkZGxpbmcgd2l0aCB0aGF0IGFuZCB0aGUgdGltZSB6b25lL0RTVCBmbGFncyB3aWxsIGhl bHAuIE90aGVyIHRpbWVzIHlvdSYjODIxNztsbCBnZXQgaW4gYSByaWdodCBvbGQgbWVzcy48 L3A+CgoJPHA+SWYgYWxsIHRoYXQgZmFpbHMsIHRoZSBjb25kaXRpb25hbCB0YWcgbWF5IGJl IGFibGUgdG8gaGVscCB5b3UgY29tcGFyZSBkYXRlcyBhbmQgYXBwbHkgZGlmZmVyZW50IGF0 dHJpYnV0ZXMgZGVwZW5kaW5nIG9uIHRoZSBkYXkgb2YgdGhlIHllYXIuIEZhaWxpbmcgdGhh dCwganVzdCB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gYW5kIHJlZnVzZSB0 byBvYnNlcnZlIDxzcGFuIGNsYXNzPSJjYXBzIj5EU1Q8L3NwYW4+IDotKTwvcD4KCgk8aDIg Y2xhc3M9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPGgzIGlkPSJlZzEiPkV4YW1wbGUg MTwvaDM+CgoJPHA+VGhlIGJlYXV0eSBvZiB0aGUgcGx1Z2luIGlzIHRoYXQgeW91IGhhdmUg dGhlIGVudGlyZSBhcnNlbmFsIG9mIFRleHRwYXR0ZXJuIHRhZ3MgYXZhaWxhYmxlIHRvIHlv dSBpZiB5b3UgY2hvb3NlIHRvIHVzZSBhIDxjb2RlPmZvcm08L2NvZGU+LiBUaHVzIHlvdSBj YW4gc2V0IHRoZSBhcnRpY2xlJiM4MjE3O3Mgc3RhcnQgYW5kIGVuZCBkYXRlcyB0byB0aGUg c2FtZSBkYXkgYW5kIHNldCB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lcyB0byBpbmRpY2F0ZSB0 aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgZXZlbnQuIFlvdSBjYW4gdGhlbiB1c2Ugc3RhbmRh cmQgPGNvZGU+Jmx0O3R4cDpwb3N0ZWQgLyZndDs8L2NvZGU+IG9yIDxjb2RlPiZsdDt0eHA6 ZXhwaXJlcyAvJmd0OzwvY29kZT4gdGFncyB3aXRoIHZhcmlvdXMgPGNvZGU+Zm9ybWF0PC9j b2RlPiBzdHJpbmdzIHRvIHJlbmRlciB0aGUgZXZlbnQmIzgyMTc7cyBjcml0ZXJpYS48L3A+ CgoJPHA+U2ltaWxhcmx5IHlvdSBjYW4gdXNlIGFueSBvdGhlciBUZXh0cGF0dGVybiB0YWdz IHRvIHNob3cgYXMgbXVjaCBvciBhcyBsaXR0bGUgZGV0YWlsIGFzIHlvdSBsaWtlIGluIHRo ZSBjYWxlbmRhciBjZWxsLjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6c21kX2NhbGVuZGFyIHNlY3Rpb249JnF1b3Q7ZXZlbnRzJnF1b3Q7 Jmd0OwombHQ7ZGl2Jmd0OwogICBFdmVudDogJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhw OnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDticiAvJmd0OyZsdDt0 eHA6ZXhjZXJwdCAvJmd0OwombHQ7L2RpdiZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDtldnRp bWUmcXVvdDsmZ3Q7CiAgIFN0YXJ0OiAmbHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JUg6 JU0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7ZXZ0aW1l JnF1b3Q7Jmd0OwogICBFbmQ6ICZsdDt0eHA6ZXhwaXJlcyBmb3JtYXQ9JnF1b3Q7JUg6JU0m cXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDsvdHhwOnNtZF9jYWxlbmRhciZndDsKPC9j b2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI8L2gzPgoKCTxwPlVzaW5nIHRo ZSBjb25kaXRpb25hbCB0YWcgeW91IGNhbiB0YWtlIGFjdGlvbiBpZiBjZXJ0YWluIGV2ZW50 cyBjb250YWluIHBhcnRpY3VsYXIgZmxhZ3MuIFRoaXMgZXhhbXBsZSBhbHNvIHNob3cgYSBj b21wbGV0ZWx5IHVzZWxlc3MgbWFubmVyIG9mIGVtcGxveWluZyA8Y29kZT4mbHQ7dHhwOnNt ZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPi48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj5UaW1lIGlzOiAmbHQ7dHhwOnNtZF9jYWxfbm93IGZvcm1hdD0mcXVv dDslVCZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9jYWxlbmRhciBmb3JtPSZxdW90O2V2Zm9y bSZxdW90OwogICAgIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMyZxdW90OyBza2lwZmllbGQ9 JnF1b3Q7Y3VzdG9tXzYmcXVvdDsKICAgICBzcGFuZm9ybT0mcXVvdDttdWx0aXMmcXVvdDsg LyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkluIGZvcm0gPGNvZGU+ZXZmb3JtPC9jb2RlPjo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNt ZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1ciZxdW90OyZndDsKICAmbHQ7dHhwOnBlcm1saW5r Jmd0OyhSRUNVUikmbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAg ICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1s aW5rJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDttdWx0aWZpcnN0JnF1 b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtyaWdodCZxdW90OyZndDsmYW1w O2xhcXVvOy0tJmx0Oy9zcGFuJmd0OwogICAmbHQ7L3R4cDpzbWRfaWZfY2FsJmd0OwogICAm bHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1cmZpcnN0JnF1b3Q7Jmd0OwogICAg ICAmbHQ7c3BhbiZndDtPbmUgb2YgbWFueS4uLiZsdDsvc3BhbiZndDsKICAgJmx0Oy90eHA6 c21kX2lmX2NhbCZndDsKJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPkFuZCBpbiBmb3JtIDxjb2RlPm11bHRpczwvY29kZT46PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1 b3Q7bXVsdGksIG11bHRpcHJldiZxdW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZndDst LSZhbXA7cmFxdW87LS0mbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21kX2lmX2Nh bCZndDsKJmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGlsYXN0JnF1b3Q7Jmd0 OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDts ZWZ0JnF1b3Q7Jmd0Oy0tJmFtcDtyYXF1bzsmbHQ7L3NwYW4mZ3Q7IEVORCAmbHQ7dHhwOnRp dGxlIC8mZ3Q7CiAgICZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4cDpzbWRfaWZfY2Fs Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90aWNlIHRoYXQgPGNvZGU+bXVsdGlmaXJzdDwv Y29kZT4gaXMgdGVzdGVkIGluc2lkZSB0aGUgc2FtZSBmb3JtIGFzIHN0YW5kYXJkIGV2ZW50 cy4gVGhpcyBpcyBiZWNhdXNlIG9ubHkgPGVtPmNvbnRpbnVhdGlvbiBzcGFubmVkIGNlbGxz PC9lbT4gYXJlIHBhc3NlZCB0byB0aGUgPGNvZGU+c3BhbmZvcm08L2NvZGU+OyB0aGUgZmly c3QgZXZlbnQgb2YgYSBzcGFubmVkIGdyb3VwIGlzIGp1c3QgbGlrZSBhbnkgc3RhbmRhcmQg ZXZlbnQuIFNpbWlsYXJseSwgaWYgeW91IGhhZCBiZWVuIHVzaW5nIDxjb2RlPnJlY3VyZm9y bTwvY29kZT4gdGhlIGZpcnN0IGV2ZW50IG9mIHRoZSByZWN1cnJpbmcgc2V0IHdvdWxkIGJl IHByb2Nlc3NlZCBpbiB0aGUgdXN1YWwgZm9ybS9jb250YWluZXIgYW5kIGV2ZXJ5IHN1YnNl cXVlbnQgZXZlbnQgd291bGQgYmUgcGFzc2VkIHRvIHRoZSBkZWRpY2F0ZWQgZm9ybS48L3A+ CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzwvaDM+CgoJPHA+WW91IGNvdWxkIHVzZSB0aGUg Y2FsZW5kYXIgdGFncyB0byBvdXRwdXQgdmFyaW91cyBwaWVjZXMgb2YgZmxhZyBpbmZvcm1h dGlvbiB0byBidWlsZCB5b3VyIG93biBjbGFzcyBuYW1lcy4gVGhpcyBleGFtcGxlIGFsc28g ZGVtb25zdHJhdGVzIHRoZSA8Y29kZT5odG1sPC9jb2RlPiBhdHRyaWJ1dGUgb2YgPGNvZGU+ Jmx0O3R4cDpzbWRfY2FsX2luZm8gLyZndDs8L2NvZGU+IHRvIGJ1aWxkIHVwIGEgcXVlcnkg c3RyaW5nIHRoYXQgaXMgcGFzc2VkIGFsb25nIHdpdGggYW4gZXZlbnQmIzgyMTc7cyA8Y29k ZT5jYXRlZ29yeTE8L2NvZGU+IHdoZW4gYSB2aXNpdG9yIGNsaWNrcyB0aGUgYW5jaG9yLjwv cD4KCgk8cD5UaGlzIGFsbG93cyB5b3VyIHNpdGUgdmlzaXRvcnMgdG8gZmlsdGVyIGV2ZW50 cyBieSBjYXRlZ29yeSB3aGlsZSByZXRhaW5pbmcgdGhlIGFiaWxpdHkgdG8gc2hvdyB0aGUg Y2FsZW5kYXIgZm9yIHRoZSBjdXJyZW50IG1vbnRoL3llYXIgYW5kIHNlY3Rpb24gdGhleSBh cmUgdmlld2luZyBpbnN0ZWFkIG9mIGRyb3BwaW5nIGJhY2sgdG8gdGhlIGN1cnJlbnQgbW9u dGgveWVhciBsaWtlIG90aGVyIGNhbGVuZGFyIHN5c3RlbXMgb2Z0ZW4gZG8uPC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfY2FsZW5k YXIgaXNvd2Vla3M9JnF1b3Q7V0VFSyMmcXVvdDsKICAgICB5ZWFyd2lkdGg9JnF1b3Q7MCwy JnF1b3Q7IHNlbGVjdD0mcXVvdDt5ZWFyLCBtb250aCZxdW90OwogICAgIHN0ZXBmaWVsZD0m cXVvdDtjdXN0b21fMSZxdW90OyBza2lwZmllbGQ9JnF1b3Q7Y3VzdG9tXzImcXVvdDsKICAg ICBzaG93c2tpcHBlZD0mcXVvdDsxJnF1b3Q7IGV4cGlyZWQ9JnF1b3Q7MSZxdW90OyZndDsK ICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Jmx0O3R4cDpzbWRfY2FsX2luZm8gam9pbj0mcXVv dDsgY2FsXyZxdW90OyAvJmd0OyZxdW90OyZndDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZn dDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICAgICZsdDth IGhyZWY9JnF1b3Q7P2M9Jmx0O3R4cDpjYXRlZ29yeTEKICAgICAgICAgLyZndDsmYW1wOyZs dDt0eHA6c21kX2NhbF9pbmZvIHR5cGU9JnF1b3Q7cywgeWVhciwKICAgICAgICAgbW9udGgs IGNhbGlkJnF1b3Q7IGh0bWw9JnF1b3Q7MSZxdW90OyBqb2luX3ByZWZpeD0mcXVvdDsmcXVv dDsKICAgICAgICAgLyZndDsmcXVvdDsmZ3Q7Jmx0O3R4cDpjYXRlZ29yeTEgdGl0bGU9JnF1 b3Q7MSZxdW90OyAvJmd0OyZsdDsvYSZndDsKICAgJmx0Oy9zcGFuJmd0OwombHQ7L3R4cDpz bWRfY2FsZW5kYXImZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaGF0IGlzIGFsc28gdXNlZnVs IGFib3V0IHRoZSA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfaW5mbyAvJmd0OzwvY29kZT4gdGFn IGlzIHRoYXQgaWYgYSBwYXJ0aWN1bGFyIHZhbHVlIGlzIG5vdCBzZXQgaXQgd2lsbCA8ZW0+ bm90PC9lbT4gYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC48L3A+CgoJPGgzIGlkPSJlZzQi PkV4YW1wbGUgNDwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7aDImZ3Q7VXBjb21pbmcgRXZlbnRzJmx0Oy9oMiZndDsKJmx0O3R4cDpzbWRfYXJ0 aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsKICAgICB3cmFwdGFn PSZxdW90O2RsJnF1b3Q7IHRpbWU9JnF1b3Q7ZnV0dXJlJnF1b3Q7IGV2ZW50bGltaXQ9JnF1 b3Q7NSZxdW90OyZndDsKICAgJmx0O3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICAgJmx0O2R0 Jmd0OyZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslQiAlWSZxdW90OyAvJmd0OyZsdDsv ZHQmZ3Q7CiAgICZsdDsvdHhwOmlmX2RpZmZlcmVudCZndDsKICAgJmx0O2RkJmd0OwogICAg ICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0bGUvJmd0OyZsdDsvdHhwOnBlcm1s aW5rJmd0OwogICAgICAmbHQ7dHhwOnBvc3RlZCAvJmd0OwogICAmbHQ7L2RkJmd0OwombHQ7 L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgbGlz dHMgdGhlIG5leHQgNSB1cGNvbWluZyAmIzgyMTI7IHJlY3VycmluZyAmIzgyMTI7IGV2ZW50 cywgcGx1cyBhbnkgc3RhbmRhcmQgYW5kIHNwYW5uZWQgZXZlbnRzLCBmb3JtYXR0aW5nIHRo ZW0gYXMgYSBkZWZpbml0aW9uIGxpc3QuIElmIHlvdSBhZGQgcGFnaW5hdGlvbiB0YWdzIHlv dSBjYW4gZmxpcCB0aHJvdWdoIGFsbCB0aGUgZXZlbnRzOyB0aGV5IHdpbGwgYmUgZGlzcGxh eWVkIDEwIGF0IGEgdGltZSBvbiBlYWNoIHBhZ2UgKGlmIHlvdSB3YW50IHRvIGtlZXAgdHJh Y2sgb2Ygd2hpY2ggcGFnZSB5b3UgYXJlIG9uIGFzIHlvdSBmbGlwIHRocm91Z2ggYSBjYWxl bmRhciB0aGF0IGlzIGluIGEgc2lkZWJhciwgYWRkIDxjb2RlPnBnPC9jb2RlPiB0byB0aGUg PGNvZGU+bWFpbnRhaW48L2NvZGU+IGF0dHJpYnV0ZSBpbiB5b3VyIGNhbGVuZGFyKS48L3A+ CgoJPHA+Tm90ZSB0aGUgaHlwZXJsaW5rZWQgdGl0bGUgc2hvd24gaGVyZSB3aWxsIGRpc3Bs YXkgdGhlICYjODIxNjtyZWFsJiM4MjE3OyBhcnRpY2xlIHdoZW4gY2xpY2tlZC4gSWYgeW91 IHdhbnRlZCB0byBhbGxvdyBwZW9wbGUgdG8gYm9vayBhbiBldmVudCBvbiB5b3VyIGluZGl2 aWR1YWwgYXJ0aWNsZSwgdHJ5IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7CiAmbHQ7 dHhwOmFydGljbGUgbGltaXQ9JnF1b3Q7MSZxdW90OyZndDsKICAmbHQ7aDMmZ3Q7Jmx0O3R4 cDp0aXRsZSAvJmd0OyZsdDsvaDMmZ3Q7CiAgJmx0O3R4cDpib2R5IC8mZ3Q7CiAgJmx0O3Am Z3Q7UGxlYXNlIGNob29zZSBhIGRhdGUgdG8gYm9vazombHQ7L3AmZ3Q7CiAgJmx0O3NlbGVj dCZndDsKICAmbHQ7dHhwOnNtZF9hcnRpY2xlX2V2ZW50IHN0ZXBmaWVsZD0mcXVvdDtjdXN0 b21fMSZxdW90OwogICAgdHlwZT0mcXVvdDtyZWN1ciZxdW90OyBpZD0mIzM5OyZsdDt0eHA6 YXJ0aWNsZV9pZCAvJmd0OyYjMzk7Jmd0OwogICAgJmx0O29wdGlvbgogICAgIHZhbHVlPSYj Mzk7Jmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZxdW90OyVHLSVtLSVkJnF1b3Q7LyZndDsmIzM5 OyZndDsKICAgICAgJmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZxdW90OyVtICVkLCAkRyZxdW90 OyAvJmd0OwogICAgJmx0Oy9vcHRpb24mZ3Q7CiAgJmx0Oy90eHA6c21kX2FydGljbGVfZXZl bnQmZ3Q7CiAgJmx0Oy9zZWxlY3QmZ3Q7CiAmbHQ7L3R4cDphcnRpY2xlJmd0OwombHQ7L3R4 cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRoIHNv bWUgY3VubmluZyB5b3UgY291bGQgZXZlbiBhZGQgdGhlICYjODIxNjt2aXJ0dWFsJiM4MjE3 OyBkYXRlIHRoYXQgdGhleSBjaG9zZSBpbiB5b3VyIG9yaWdpbmFsIGFydGljbGVfZXZlbnQg bGlzdCBhbmQgcGFzcyBpdCBhcyBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZh cmlhYmxlIHRvIHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xlIHdoZXJlIHlvdSBjb3VsZCByZWFk IHRoZSB2YWx1ZSBhbmQgcHJlLXNlbGVjdCB0aGUgZGF0ZSBmb3IgdGhlIHZpc3Rvci48L3A+ CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTwvaDM+CgoJPHA+SG93IGFib3V0IGJlaW5nIGFi bGUgdG8gb3V0cHV0IHlvdXIgZXZlbnRzIGluIGlDYWwgZm9ybWF0IHNvIG90aGVyIHBlb3Bs ZSBjYW4gc3luYyB0aGVpciBjYWxlbmRhcnMgdG8geW91cnM/IFB1dCB0aGlzIGluIGEgbmV3 IFBhZ2UgdGVtcGxhdGUgaW4gaXRzIG93biBTZWN0aW9uOjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPkJFR0lOOlZDQUxFTkRBUgpWRVJTSU9OOjIuMApY LVdSLUNBTE5BTUU6R2lncyBDYWxlbmRhcgpQUk9ESUQ6LS8vQXBwbGUgQ29tcHV0ZXIsIElu Yy8vaUNhbCAxLjUvL0VOClgtV1ItVElNRVpPTkU6RXVyb3BlL0xvbmRvbgombHQ7dHhwOnNt ZF9hcnRpY2xlX2V2ZW50IGZvcm09JnF1b3Q7aWNzaXRlbSZxdW90OyB0aW1lPSZxdW90O2Fu eSZxdW90OwpzZWN0aW9uPSZxdW90O2dpZ3MmcXVvdDsgbGltaXQ9JnF1b3Q7MTAwMCZxdW90 OyZndDsKIEJFR0lOOlZFVkVOVAogRFRTVEFSVDombHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1 b3Q7JVklbSVkVCVIJWklcyZxdW90OyAvJmd0OwogRFRFTkQ6Jmx0O3R4cDpleHBpcmVzIGZv cm1hdD0mcXVvdDslWSVtJWRUJUglaSVzJnF1b3Q7IC8mZ3Q7CiBTVU1NQVJZOiZsdDt0eHA6 dGl0bGUgLyZndDsKIEVORDpWRVZFTlQKJmx0Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7 CkVORDpWQ0FMRU5EQVIKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd2lsbCBvdXRwdXQgYW4g aUNhbC1mb3JtYXR0ZWQgZ2lnIGxpc3QgKHJlcGVhdGVkIG9yIG90aGVyd2lzZSkuIElmIHlv dSBnb3QgZnJlYWt5IHdpdGggaXQgYW5kIGFkZGVkIHNvbWUgY29uZGl0aW9uYWwgbG9naWMg aW5zaWRlIHRoZSB0ZW1wbGF0ZSB5b3UgY291bGQgZXZlbiByZWFkIGluIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlcyBhbmQgcGx1ZyB0aGVtIGluLiBUaHVzIHlv dSBjb3VsZCBsaW5rIHRvIGl0IGRpcmVjdGx5IG9mZiB0aGUgY2FsZW5kYXIgaXRzZWxmLCBw YXNzIGluIHRoZSBzZWN0aW9uLCBjYXRlZ29yeSBvciBldmVudCBpbmZvIGFuZCBoYXZlIGEg Y3VzdG9taXNlZCBpQ2FsIHN0cmVhbSBwdW1wZWQgb3V0IG9mIFRleHRwYXR0ZXJuLjwvcD4K Cgk8cD5UaGFua3MgdG8gd29vZiBmb3IgYnJpbmdpbmcgdGhlIG9yaWdpbmFsIDxhIGhyZWY9 Imh0dHA6Ly9kZS1vbmxpbmUuY28udWsvMjAwNi8wNS8wNS90ZXh0cGF0dGVybi1hbmQtaWNh bCI+RGF2aWQgRW1lcnk8L2E+IGFydGljbGUgdG8gbXkgYXR0ZW50aW9uLjwvcD4KCgk8aDMg aWQ9ImVnNiI+RXhhbXBsZSA2PC9oMz4KCgk8cD5Vc2luZyB0aGUgPGNvZGU+bm93PC9jb2Rl PiBhbmQgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhdHRyaWJ1dGVzIG9mIDxjb2RlPiZsdDt0eHA6 c21kX2NhbF9ub3cgLyZndDs8L2NvZGU+IHlvdSBjYW4gc2V0ICYjODIxNjtub3cmIzgyMTc7 IHRvIGJlIGFueSB0aW1lIHlvdSBsaWtlIGFuZCBtYWtlIGNhbGN1bGF0aW9ucyBiYXNlZCBv biBhIHBhcnRpY3VsYXIgZGF0ZS48L3A+CgoJPHA+UGx1Z2dpbmcgdGhlIDxjb2RlPj9tb250 aDwvY29kZT4gYW5kIDxjb2RlPj95ZWFyPC9jb2RlPiBjb2RlcyBpbiBhbGxvd3MgeW91IHRv IG1ha2UgPGNvZGU+Jmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCAvJmd0OzwvY29kZT4gdHJh Y2sgdGhlIGNhbGVuZGFyLiBTbyB5b3UgY2FuIGF1dG9tYXRpY2FsbHkgc2hvdyBvbmx5IHRo ZSBldmVudHMgdGhhdCBvY2N1ciBpbiB0aGUgbW9udGggdGhlIHZpc2l0b3IgaXMgYnJvd3Np bmcgdmlhIHRoZSBjYWxlbmRhcjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9jYWxlbmRhciBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9t XzEmcXVvdDsgLyZndDsKJmx0O2gyJmd0O0V2ZW50cyB0aGlzIG1vbnRoJmx0Oy9oMiZndDsK Jmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVv dDsKICAgICBmcm9tPSYjMzk7Jmx0O3R4cDpzbWRfY2FsX25vdyBub3c9JnF1b3Q7MDEtP21v bnRoLT95ZWFyJnF1b3Q7IC8mZ3Q7JiMzOTsKICAgICB0bz0mIzM5OyZsdDt0eHA6c21kX2Nh bF9ub3cgbm93PSZxdW90Oz9tb250aC0/eWVhciZxdW90OwogICAgICAgIG9mZnNldD0mcXVv dDsxIG1vbnRoJnF1b3Q7IC8mZ3Q7JiMzOTsgdGltZT0mcXVvdDthbnkmcXVvdDsgd3JhcHRh Zz0mcXVvdDt1bCZxdW90OyZndDsKJmx0O2xpJmd0OyZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0 O2ImZ3Q7Jmx0O3R4cDp0aXRsZS8mZ3Q7Jmx0Oy9iJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0 OyZsdDsvbGkmZ3Q7CiZsdDsvdHhwOnNtZF9hcnRpY2xlX2V2ZW50Jmd0Owo8L2NvZGU+PC9w cmU+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0 eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hl bHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBO ZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQoj c21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBk b3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsg bWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGlu aywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbTox cHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJs dWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJs dWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBm b250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjog Y2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFj azsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwg c2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDogYm9sZCAx MnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEw cHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRl cmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2Vy aWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsg Y29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRl cjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQt YWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRf aGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRf aGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5yZXF1aXJl ZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4 OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0t ICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6ImY1MDVjYTUx OWNkMDMxZWQ4YzdlNzU4MzQwZDk3NTdjIjt9