# Name: smd_featured v0.34 # Type: Admin/Public side plugin # Quickly label and display featured articles for your site's home / landing pages # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMzQiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJjb2RlIjtzOjMzOTAxOiJp ZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQsICRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzLCAkc21kX2ZlYXR1cmVkX3N0eWxl czsNCg0KCSRzbWRfZmVhdHVyZWRfZXZlbnQgPSAnc21kX2ZlYXR1cmVkJzsNCgkkc21kX2Zl YXR1cmVkX3ByaXZzID0gZ2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9wcml2cycsICcxLDInKTsN Cgkkc21kX2ZlYXR1cmVkX3ByZWZfcHJpdnMgPSAnMSwyJzsNCgkkc21kX2ZlYXR1cmVkX3Rl eHRpbGVfb3B0cyA9IGFycmF5KA0KCQkwID0+ICd0aXRsZScsDQoJCTEgPT4gJ2Rlc2MnLA0K CSk7DQoJJHNtZF9mZWF0dXJlZF9zdHlsZXMgPSBhcnJheSgNCgkJJ2NvbW1vbicgPT4NCiAg ICAgICAgICcjc21kX2FsbCBoMyB7IG1hcmdpbjoxNXB4IDA7IH0NCiAgICAgICAgICNzbWRf ZmVhdHVyZWRfY3BhbmVsIGZvcm0gZmllbGRzZXQgeyBib3JkZXI6MDsgfQ0KICAgICAgICAg I3NtZF9mZWF0dXJlZF9jcGFuZWwgZm9ybSBsZWdlbmQgeyBtYXJnaW46MTJweCAwOyB9DQog ICAgICAgICAuZmllbGRzZXRfaW5uZXIgeyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IGJhY2tn cm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGJvcmRlcjowOyB9DQogICAgICAgICAjc21kX2Zl YXR1cmVkX2NwYW5lbCBzZWxlY3QsICNzbWRfZmVhdHVyZWRfY3BhbmVsIGlucHV0W3R5cGU9 InRleHQiXSB7IG1hcmdpbi1ib3R0b206MTBweDsgfQ0KICAgICAgICAgI3NtZF9mZWF0dXJl ZF9jcGFuZWwgaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZzozcHg7IH0NCiAgICAgICAg ICNjb250cm9sIGlucHV0LCAjY29udHJvbCBzZWxlY3QgeyBtYXJnaW46MDsgfQ0KICAgICAg ICAgLnNtZF9oaWRkZW4geyBkaXNwbGF5Om5vbmU7IH0NCiAgICAgICAgIC5zbWRfZmVhdHVy ZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlMmRmY2U7IH0NCiAgICAgICAgIC5zbWRfZmVhdHVy ZWQgYSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjojODA1NTFlOyB9DQogICAgICAgICAj c21kX2ZlYXR1cmVkX2NvbnRyb2xfcGFuZWwgeyBtYXJnaW46MCBhdXRvIDIwcHg7IHdpZHRo OjUwMHB4OyB9DQogICAgICAgICAjc21kX2ZlYXR1cmVkX3ByZWZzIHsgbWFyZ2luLWxlZnQ6 MTJweDsgfQ0KICAgICAgICAgLnNtZF9mZWF0dXJlZF9zYXZlIHsgZmxvYXQ6cmlnaHQ7IH0N CiAgICAgICAgIC5zbWRfZmVhdHVyZWRfc3VicGFuZWwgeyBmbG9hdDpsZWZ0OyB9DQogICAg ICAgICAuc21kX2ZlYXR1cmVkX3RhYmxlIHsgd2lkdGg6ODAwcHg7IG1hcmdpbjowIGF1dG8g ODBweDsgfQ0KICAgICAgICAgLnNtZF9jbGVhciB7IGNsZWFyOmJvdGg7IH0NCiAgICAgICAg IC5zbWRfZmVhdHVyZWRfdGFibGUgZGl2IHsgZmxvYXQ6bGVmdDsgd2lkdGg6e2J3fXB4OyBo ZWlnaHQ6e2JofXB4OyBib3JkZXI6MXB4IHNvbGlkICNhYWE7IHBhZGRpbmc6NHB4OyBvdmVy ZmxvdzpoaWRkZW47IH0nLA0KCQknbG9hZGluZycgPT4NCiAgICAgICAgICdjb2xvcjojODA1 NTFlOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIwMCU7IGZvbnQtc3R5bGU6aXRh bGljOyB3aWR0aDo1MDBweDsgaGVpZ2h0OjEwMHB4OyBtYXJnaW46MCBhdXRvOyBib3JkZXI6 MXB4IHNvbGlkICM3Nzc7IGJhY2tncm91bmQ6I2UyZGZjZTtkaXNwbGF5OmJsb2NrJywNCgkJ J2xvYWRpbmdfZGl2JyA9Pg0KICAgICAgICAgJ21hcmdpbi10b3A6MzBweDsnLA0KCSk7DQoN CglhZGRfcHJpdnMoJHNtZF9mZWF0dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9wcml2cyk7 DQoJcmVnaXN0ZXJfdGFiKCJjb250ZW50IiwgJHNtZF9mZWF0dXJlZF9ldmVudCwgc21kX2Zl YXR1cmVkX2dUeHQoJ3RhYl9uYW1lJykpOw0KCXJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRfZmVh dHVyZWRfbWFuYWdlJywgJHNtZF9mZWF0dXJlZF9ldmVudCk7DQoJcmVnaXN0ZXJfY2FsbGJh Y2soJ3NtZF9mZWF0dXJlZF93ZWxjb21lJywgJ3BsdWdpbl9saWZlY3ljbGUuc21kX2ZlYXR1 cmVkJyk7DQp9DQoNCmlmICghZGVmaW5lZCgnU01EX0ZFQVQnKSkgew0KCWRlZmluZSgiU01E X0ZFQVQiLCAnc21kX2ZlYXR1cmVkJyk7DQp9DQoNCi8vICoqKioqKioqKioNCi8vIEFETUlO IFNJREUNCi8vICoqKioqKioqKioNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVu Y3Rpb24gc21kX2ZlYXR1cmVkX21hbmFnZSgkZXZ0LCAkc3RwKSB7DQoJaWYgKCRzdHAgPT0g J3NhdmVfcGFuZV9zdGF0ZScpIHsNCgkJc21kX2ZlYXR1cmVkX3NhdmVfcGFuZV9zdGF0ZSgp Ow0KCX0gZWxzZSB7DQoJCWlmKCEkc3RwIG9yICFpbl9hcnJheSgkc3RwLCBhcnJheSgNCgkJ CQknc21kX2ZlYXR1cmVkX3RhYmxlX2luc3RhbGwnLA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFi bGVfcmVtb3ZlJywNCgkJCQknc21kX2ZlYXR1cmVkX3ByZWZzYXZlJywNCgkJCQknc21kX2Zl YXR1cmVkX3NhdmUnLA0KCQkJCSdzbWRfZmVhdHVyZWRfdGFnaXQnLA0KCQkJCSdzbWRfZmVh dHVyZWRfY2hhbmdlX3BhZ2VieScsDQoJCQkpKSkgew0KCQkJc21kX2ZlYXR1cmVkX2xpc3Qo JycpOw0KCQl9IGVsc2UgJHN0cCgpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfd2VsY29tZSgkZXZ0LCAkc3RwKSB7DQoJ JG1zZyA9ICcnOw0KCXN3aXRjaCAoJHN0cCkgew0KCQljYXNlICdpbnN0YWxsZWQnOg0KCQkJ c21kX2ZlYXR1cmVkX3RhYmxlX2luc3RhbGwoMCk7DQoJCQkkbXNnID0gJ1RoYW5rcyBmb3Ig aW5zdGFsbGluZyBzbWRfZmVhdHVyZWQuIFBsZWFzZSByZWFkIHRoZSBkb2NzIDotKSc7DQoJ CQlicmVhazsNCgkJY2FzZSAnZGVsZXRlZCc6DQoJCQlzbWRfZmVhdHVyZWRfdGFibGVfcmVt b3ZlKDApOw0KCQkJYnJlYWs7DQoJfQ0KCXJldHVybiAkbXNnOw0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9saXN0KCRtc2c9Jycp IHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9ldmVudCwgJHNtZF9mZWF0dXJlZF9saXN0X3Bh Z2VieSwgJHNtZF9mZWF0dXJlZF90ZXh0aWxlX29wdHMsICRzbWRfZmVhdHVyZWRfc3R5bGVz Ow0KDQoJcGFnZXRvcChzbWRfZmVhdHVyZWRfZ1R4dCgndGFiX25hbWUnKSwgJG1zZyk7DQoJ ZXh0cmFjdChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVhdF9sYWJlbCcsICdz bWRfZmVhdF9zZWFyY2hrZWVwJywgJ3NtZF9mZWF0X2ZpbHRrZWVwJywgJ3BhZ2UnKSkpOw0K DQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgxKSkgew0KCQkkZmVhdGxpc3QgPSBz YWZlX3Jvd3MoJyonLCBTTURfRkVBVCwgJzE9MScpOw0KCQkkZmVhdGxpc3QgPSBlbXB0eSgk ZmVhdGxpc3QpID8gYXJyYXkoKSA6ICRmZWF0bGlzdDsNCgkJJGVkaXRuYW1lID0gJGZlYXRf bGFiZWwgPSAkZmVhdF90aXRsZSA9ICRmZWF0X2Rlc2MgPSAnJzsNCg0KCQkkZXR5cGVzID0g JGZ0eXBlcyA9ICRmbGlzdCA9IGFycmF5KCk7DQoJCSRldHlwZXNbJyddID0gc21kX2ZlYXR1 cmVkX2dUeHQoJ3VubGFiZWxsZWQnKTsNCgkJJGZ0eXBlc1snc21kX3VubGFiZWxsZWQnXSA9 IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmxhYmVsbGVkJyk7DQoJCWZvcmVhY2ggKCRmZWF0bGlz dCBhcyAkaXRlbSkgew0KCQkJaWYgKGlzc2V0KCRpdGVtWydsYWJlbCddKSAmJiAhZW1wdHko JGl0ZW1bJ2xhYmVsJ10pKSB7DQoJCQkJJGZ0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkZXR5 cGVzWyRpdGVtWydsYWJlbCddXSA9ICRpdGVtWydsYWJlbCddOw0KCQkJfQ0KCQkJJGZsaXN0 WyRpdGVtWydmZWF0X2lkJ11dID0gYXJyYXkoJ2xhYmVsJyA9PiAkaXRlbVsnbGFiZWwnXSwg J3RpdGxlJyA9PiAkaXRlbVsnZmVhdF90aXRsZSddLCAndGl0bGVfaHRtbCcgPT4gJGl0ZW1b J2ZlYXRfdGl0bGVfaHRtbCddLCAnZGVzY3JpcHRpb24nID0+ICRpdGVtWydkZXNjcmlwdGlv biddLCAnZGVzY19odG1sJyA9PiAkaXRlbVsnZGVzY19odG1sJ10pOw0KCQl9DQoNCgkJJGZl YXRsaXN0ID0gJGZsaXN0Ow0KDQoJCS8vIEdldCBhZGRpdGlvbmFsIGZpbHRlcmluZyBmcm9t IGhpZGRlbiBwcmVmcw0KCQkkd2hlcmUgPSBhcnJheSgnMT0xJyk7DQoJCSRzZWNsaXN0ID0g Z2V0X3ByZWYoJ3NtZF9mZWF0dXJlZF9zZWN0aW9uX2xpc3QnLCAnJyk7DQoJCWlmICgkc2Vj bGlzdCkgew0KCQkJJHdoZXJlW10gPSAiU2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9f bGlzdCgkc2VjbGlzdCkpLiInKSI7DQoJCX0NCgkJJHdoZXJlW10gPSAiU3RhdHVzIElOICg0 LDUpIjsNCg0KCQkkb3JkZXJieSA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfc29ydCcsICdQ b3N0ZWQgZGVzYycsIDEpOw0KCQkkb3JkZXJxcnkgPSAoJG9yZGVyYnkpID8gJyBPUkRFUiBC WSAnLmRvU2xhc2goJG9yZGVyYnkpIDogJyc7DQoJCSRjdXJyT3JkZXIgPSBleHBsb2RlKCcg JywgJG9yZGVyYnkpOw0KCQkkY3Vyck9yZGVyWzBdID0gKGlzc2V0KCRjdXJyT3JkZXJbMF0p KSA/ICRjdXJyT3JkZXJbMF0gOiAnUG9zdGVkJzsNCgkJJGN1cnJPcmRlclsxXSA9IChpc3Nl dCgkY3Vyck9yZGVyWzFdKSkgPyAkY3Vyck9yZGVyWzFdIDogJ2Rlc2MnOw0KCQkkZGlzcGxh eSA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfZGlzcGxheScsICdhbGwnLCAxKTsNCg0KCQkv LyBHZW5lcmF0ZSB0aGUgZXh0cmEgY3JpdGVyaWEgaWYgaW4gbGlzdCB2aWV3DQoJCWlmICgk ZGlzcGxheT09J3BhZ2luYXRlZCcpIHsNCgkJCWlmICgkc21kX2ZlYXRfc2VhcmNoa2VlcCkg ew0KCQkJCSRpdGVtcyA9IGRvX2xpc3QoJHNtZF9mZWF0X3NlYXJjaGtlZXAsICcgJyk7DQoJ CQkJJGl0bGlzdCA9IGFycmF5KCk7DQoJCQkJZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7 DQoJCQkJCWlmICh0cmltKCRpdGVtKSAhPSAnJykgew0KCQkJCQkJJGl0bGlzdFtdID0gIlRp dGxlIGxpa2UgJyUkaXRlbSUnIjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkd2hlcmVbXSA9ICco Jy5qb2luKCcgT1IgJywgJGl0bGlzdCkuJyknOw0KCQkJfQ0KCQkJaWYgKCRzbWRfZmVhdF9m aWx0a2VlcCkgew0KCQkJCSRsYmwgPSAoJHNtZF9mZWF0X2ZpbHRrZWVwID09ICdzbWRfdW5s YWJlbGxlZCcpID8gJycgOiAkc21kX2ZlYXRfZmlsdGtlZXA7DQoJCQkJJGlkcyA9IHNhZmVf Y29sdW1uKCdmZWF0X2lkJywgU01EX0ZFQVQsICJCSU5BUlkgbGFiZWwgPSAnJGxibCciKTsN CgkJCQkkd2hlcmVbXSA9ICJJRCBJTiAoJyIuam9pbigiJywnIiwgJGlkcykuIicpIjsNCgkJ CX0NCgkJfQ0KDQoJCSR3aGVyZSA9IGpvaW4oJyBBTkQgJywgJHdoZXJlKTsNCgkJJHRvdGFs ID0gc2FmZV9jb3VudCgndGV4dHBhdHRlcm4nLCAkd2hlcmUpOw0KCQkkZG9fcGFnID0gISRz bWRfZmVhdF9maWx0a2VlcCAmJiAhJHNtZF9mZWF0X3NlYXJjaGtlZXA7DQoNCgkJJGxpbWl0 ID0gKCRkaXNwbGF5PT0ncGFnaW5hdGVkJyAmJiAkZG9fcGFnKSA/IG1heCgkc21kX2ZlYXR1 cmVkX2xpc3RfcGFnZWJ5LCAxNSkgOiA5OTk5OTsNCgkJbGlzdCgkcGFnZSwgJG9mZnNldCwg JG51bVBhZ2VzKSA9IHBhZ2VyKCR0b3RhbCwgJGxpbWl0LCAkcGFnZSk7DQoNCgkJJHJzID0g c2FmZV9yb3dzKCcqJywgJ3RleHRwYXR0ZXJuJywgJHdoZXJlLiAkb3JkZXJxcnkgLiAiIGxp bWl0ICRvZmZzZXQsICRsaW1pdCIpOw0KCQkkb3V0ID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAo JHJzIGFzICRyb3cpIHsNCgkJCSRmdHlwZSA9IGlzc2V0KCRmZWF0bGlzdFskcm93WydJRCdd XVsnbGFiZWwnXSkgPyAkZmVhdGxpc3RbJHJvd1snSUQnXV1bJ2xhYmVsJ10gOiAnJzsNCgkJ CSRvdXRbXSA9IGFycmF5KCRyb3dbJ0lEJ10sICRyb3dbJ1RpdGxlJ10sICRmdHlwZSk7DQoJ CQlpZiAoJHNtZF9mZWF0X2lkICYmICRyb3dbJ0lEJ10gPT0gJHNtZF9mZWF0X2lkKSB7DQoJ CQkJJGVkaXRuYW1lID0gJHJvd1snVGl0bGUnXTsNCgkJCQkkZmVhdF9sYWJlbCA9ICRmZWF0 bGlzdFskc21kX2ZlYXRfaWRdWydsYWJlbCddOw0KCQkJCSRmZWF0X3RpdGxlID0gJGZlYXRs aXN0WyRzbWRfZmVhdF9pZF1bJ3RpdGxlJ107DQoJCQkJJGZlYXRfZGVzYyA9IGRvU3RyaXAo c3RyX3JlcGxhY2UoJ1xyXG4nLCcNCicsICRmZWF0bGlzdFskc21kX2ZlYXRfaWRdWydkZXNj cmlwdGlvbiddKSk7DQoJCQl9DQoJCX0NCg0KCQkkc29ydG9wdHMgPSBhcnJheSgNCgkJCSdQ b3N0ZWQnID0+ICdQb3N0ZWQnLA0KCQkJJ0V4cGlyZXMnID0+ICdFeHBpcnknLA0KCQkJJ0xh c3RNb2QnID0+ICdNb2RpZmllZCcsDQoJCQknVGl0bGUnID0+ICdUaXRsZScsDQoJCQknU2Vj dGlvbicgPT4gJ1NlY3Rpb24nLA0KCQkJJ0NhdGVnb3J5MScgPT4gJ0NhdGVnb3J5MScsDQoJ CQknQ2F0ZWdvcnkyJyA9PiAnQ2F0ZWdvcnkyJywNCgkJKTsNCgkJJHNvcnRkaXJzID0gYXJy YXkoDQoJCQknYXNjJyA9PiAnQXNjZW5kaW5nJywNCgkJCSdkZXNjJyA9PiAnRGVzY2VuZGlu ZycsDQoJCSk7DQoJCSRkaXNwbGF5b3B0cyA9IGFycmF5KA0KCQkJJ2FsbCcgPT4gJ0FsbCcs DQoJCQkncGFnaW5hdGVkJyA9PiAnUGFnaW5hdGVkJywNCgkJKTsNCgkJJHRleHRpbGVvbm9m ZiA9IHNtZF9mZWF0dXJlZF9wcmVmX2V4cGxvZGUoJHNtZF9mZWF0dXJlZF90ZXh0aWxlX29w dHMsIGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfdGV4dGlsZScsICcxMScsIDEpKTsNCg0KCQkk c2l6ZXMgPSBkb19saXN0KGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfYm94X3NpemUnLCAnMTUw eDQwJywgMSksICd4Jyk7DQoJCSRzaXplc1swXSA9IChpc3NldCgkc2l6ZXNbMF0pICYmIGlz X251bWVyaWMoJHNpemVzWzBdKSkgPyAkc2l6ZXNbMF0gOiAnMTUwJzsNCgkJJHNpemVzWzFd ID0gKGlzc2V0KCRzaXplc1sxXSkgJiYgaXNfbnVtZXJpYygkc2l6ZXNbMV0pKSA/ICRzaXpl c1sxXSA6ICc0MCc7DQoJCSRkaXNwbGF5X2pzID0gKCRkaXNwbGF5PT0nYWxsJykgPyAxIDog MDsNCgkJJHN0eWxlcmVwcyA9IGFycmF5KA0KCQkJJ3tid30nID0+ICRzaXplc1swXSwNCgkJ CSd7Ymh9JyA9PiAkc2l6ZXNbMV0sDQoJCSk7DQoNCgkJZWNobyAnPGRpdiBpZD0ic21kX2xv YWRpbmciIHN0eWxlPSInLiRzbWRfZmVhdHVyZWRfc3R5bGVzWydsb2FkaW5nJ10uJyI+PGRp diBzdHlsZT0iJy4kc21kX2ZlYXR1cmVkX3N0eWxlc1snbG9hZGluZ19kaXYnXS4nIj5Mb2Fk aW5nLi4uPC9kaXY+PC9kaXY+JzsNCgkJZWNobyAnPGRpdiBpZD0ic21kX2NvbnRhaW5lciIg c3R5bGU9ImRpc3BsYXk6bm9uZTsiPic7DQoJCWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2Zl YXR1cmVkX2NvbnRyb2xfcGFuZWwiIGNsYXNzPSJ0eHAtY29udHJvbC1wYW5lbCI+PGxlZ2Vu ZCBjbGFzcz0icGxhaW4gbGV2ZXInLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3Bh bmVsX3Zpc2libGUnKSA/ICcgZXhwYW5kZWQnIDogJycpLiciPjxhIGhyZWY9IiNzbWRfZmVh dHVyZWRfY3BhbmVsIj4nLnNtZF9mZWF0dXJlZF9nVHh0KCdjb250cm9sX3BhbmVsJykuJzwv YT48L2xlZ2VuZD4nOw0KCQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdHVyZWRfY3BhbmVsIiBj bGFzcz0idG9nZ2xlIiBzdHlsZT0iZGlzcGxheTonLihnZXRfcHJlZigncGFuZV9zbWRfZmVh dHVyZWRfY3BhbmVsX3Zpc2libGUnKSA/ICdibG9jaycgOiAnbm9uZScpLiciPic7DQoNCgkJ ZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0X2ZpbHRmb3JtIiBhY3Rpb249ImluZGV4LnBocCIg bWV0aG9kPSJwb3N0IiBvbnN1Ym1pdD0ic21kX2ZlYXR1cmVkX2VkaXRrZWVwKDApO3JldHVy biBmYWxzZTsiPic7DQoJCWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2ZpbHQi IGNsYXNzPSJzbWRfZmVhdHVyZWRfc3VicGFuZWwiPjxsZWdlbmQ+Jy5zbWRfZmVhdHVyZWRf Z1R4dCgoKCRkaXNwbGF5PT0nYWxsJykgPyAnc2VhcmNoX2xpdmUnIDogJ3NlYXJjaF9zdGFu ZGFyZCcpKS4nPC9sZWdlbmQ+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfc2Vh cmNoIj4nLnNtZF9mZWF0dXJlZF9nVHh0KCdieV9uYW1lJykuJzwvbGFiZWw+Jy5mSW5wdXQo J3RleHQnLCAnc21kX2ZlYXRfc2VhcmNoJywgJHNtZF9mZWF0X3NlYXJjaGtlZXAsICcnLCAn JywgJycsICcnLCAnJywgJ3NtZF9mZWF0X3NlYXJjaCcpLg0KCQkJKCgkZnR5cGVzKSA/ICc8 ZGl2IGlkPSJzbWRfZmVhdHVyZWRfYnlsYWJlbCI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgnYnlf bGFiZWwnKS5zZWxlY3RJbnB1dCgnc21kX2ZlYXRfZmlsdCcsICRmdHlwZXMsICRzbWRfZmVh dF9maWx0a2VlcCwgMSwgJycsICdzbWRfZmVhdF9maWx0JykuJzwvZGl2PicgOiAnJyk7DQoJ CWVjaG8gKCRkaXNwbGF5PT0ncGFnaW5hdGVkJykgPyBmSW5wdXQoJ3N1Ym1pdCcsICcnLCBn VHh0KCdnbycpLCAnc21hbGxlcmJveCBzbWRfZmVhdHVyZWRfc2F2ZScsICcnLCAncmV0dXJu IHNtZF9mZWF0dXJlZF9lZGl0a2VlcCgwKTsnKSA6ICcnOw0KCQllY2hvIGVJbnB1dCgkc21k X2ZlYXR1cmVkX2V2ZW50KS5zSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8g JzwvZmllbGRzZXQ+JzsNCgkJZWNobyAnPC9mb3JtPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9 InNtZF9mZWF0X3ByZWZzIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOw0K CQllY2hvICc8ZmllbGRzZXQgaWQ9InNtZF9mZWF0dXJlZF9wcmVmcyIgY2xhc3M9InNtZF9m ZWF0dXJlZF9zdWJwYW5lbCI+PGxlZ2VuZD4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmcycp Lic8L2xlZ2VuZD4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVm Ij4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9kaXNwbGF5Ij4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdwcmVmX2Rpc3BsYXknKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRf ZmVhdF9kaXNwbGF5JywgJGRpc3BsYXlvcHRzLCAkZGlzcGxheSwgJycsICcnLCAnc21kX2Zl YXRfZGlzcGxheScpOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9 InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9z b3J0Ij4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmX3NvcnQnKS4nPC9sYWJlbD4nLnNlbGVj dElucHV0KCdzbWRfZmVhdF9zb3J0JywgJHNvcnRvcHRzLCAkY3Vyck9yZGVyWzBdLCAnJywg JycsICdzbWRfZmVhdF9zb3J0JykuDQoJCQlzZWxlY3RJbnB1dCgnc21kX2ZlYXRfc29ydGRp cicsICRzb3J0ZGlycywgJGN1cnJPcmRlclsxXSwgJycsICcnLCAnc21kX2ZlYXRfc29ydGRp cicpOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0 dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdF9kaXNwbGF5X2JveCI+ JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfYm94c2l6ZSI+Jy5zbWRfZmVhdHVy ZWRfZ1R4dCgncHJlZl9ib3hzaXplJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21k X2ZlYXRfYm94X3gnLCAkc2l6ZXNbMF0sICcnLCAnJywgJycsICczJywgJycsICdzbWRfZmVh dF9ib3hzaXplJykuDQoJCQlzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9ib3hzaXplYnknKS5m SW5wdXQoJ3RleHQnLCAnc21kX2ZlYXRfYm94X3knLCAkc2l6ZXNbMV0sICcnLCAnJywgJycs ICczJyk7DQoJCWVjaG8gJzwvZGl2Pic7DQoNCgkJZWNobyAnPGRpdiBjbGFzcz0ic21kX2Zl YXR1cmVkX3ByZWYgc21kX2ZlYXRfdGV4dGlsZSI+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0i c21kX2ZlYXRfdGV4dGlsZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgndGV4dGlsZScpLic8L2xh YmVsPic7DQoJCWZvcmVhY2ggKCR0ZXh0aWxlb25vZmYgYXMgJGtleSA9PiAkdmFsKSB7DQoJ CQllY2hvIGNoZWNrYm94KCdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSwgMSwgJHRleHRpbGVv bm9mZlska2V5XSwgJycsICdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSkuc3Auc21kX2ZlYXR1 cmVkX2dUeHQoJ3RleHRpbGVfJy4ka2V5KTsNCgkJfQ0KCQllY2hvIGZJbnB1dCgnaGlkZGVu JywgJ3NtZF9mZWF0X3RleHRpbGUnLCBpbXBsb2RlKCR0ZXh0aWxlb25vZmYpLCcnLCcnLCcn LCcnLCcnLCdzbWRfZmVhdF90ZXh0aWxlJyk7DQoJCWVjaG8gJzwvZGl2Pic7DQoNCgkJZWNo byAnPC9kaXY+JzsNCg0KCQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS5zSW5w dXQoJ3NtZF9mZWF0dXJlZF9wcmVmc2F2ZScpOw0KCQllY2hvIGZJbnB1dCgnc3VibWl0Jywg JycsIGdUeHQoJ3NhdmUnKSwgJ3NtYWxsZXJib3ggc21kX2ZlYXR1cmVkX3NhdmUnLCAnJywg J3NtZF9mZWF0X3ByZXN1YigpOycpOw0KCQllY2hvICc8L2ZpZWxkc2V0Pic7DQoJCWVjaG8g JzwvZm9ybT4nOw0KDQoJCWVjaG8gJyZuYnNwOyc7IC8vIFdpdGhvdXQgdGhpcyAnY29udGVu dCcgalF1ZXJ5IDEuMy4yIHdvbid0IC50b2dnbGUoKSBhbiBlbGVtZW50IHdpdGggZW50aXJl bHkgZmxvYXRlZCBpbm5lciBlbGVtZW50cyA6LXMNCgkJZWNobyAnPC9kaXY+JzsNCgkJZWNo byAnPC9maWVsZHNldD4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9lZGl0Zm9y bSIgYWN0aW9uPSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCI+JzsNCgkJZWNobyBoSW5wdXQo J3NtZF9mZWF0X3NlYXJjaGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9maWx0 a2VlcCcsICcnKS4NCgkJCQloSW5wdXQoJ3NtZF9mZWF0X2lkJywgJycpLg0KCQkJCWVJbnB1 dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0 Jyk7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9z YXZlZm9ybSIgYWN0aW9uPSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCIgb25zdWJtaXQ9InJl dHVybiBzbWRfZmVhdHVyZWRfc2F2ZWtlZXAoKTsiPic7DQoJCWVjaG8gc3RhcnRUYWJsZSgn Y29udHJvbCcsJycsJycsJzMnKTsNCgkJaWYgKCRzbWRfZmVhdF9pZCkgew0KCQkJZWNobyB0 cigNCgkJCQl0ZCgnJm5ic3A7JykudGRjcyhnVHh0KCdlZGl0Jykuc3Auc3Ryb25nKCRlZGl0 bmFtZSksIDIpDQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ2xh YmVsJyksICcnLCAnc21kX2ZlYXRfbGFiZWwnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0 ZXh0JywgJ3NtZF9mZWF0X2xhYmVsJywgJGZlYXRfbGFiZWwsICcnLCAnJywgJycsICcnLCAn JywgJ3NtZF9mZWF0X2xhYmVsJykuDQoJCQkJCXNlbGVjdElucHV0KCdzbWRfZmVhdF9sYWJl bGNob29zZScsICRldHlwZXMsICRmZWF0X2xhYmVsLCAwLCAnJywgJ3NtZF9mZWF0X2xhYmVs Y2hvb3NlJykNCgkJCQkpDQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdU eHQoJ3RpdGxlJyksICcnLCAnc21kX2ZlYXRfdGl0bGUnKS4NCgkJCQl0ZCgNCgkJCQkJZklu cHV0KCd0ZXh0JywgJ3NtZF9mZWF0X3RpdGxlJywgJGZlYXRfdGl0bGUsICcnLCAnJywgJycs ICcnLCAnJywgJ3NtZF9mZWF0X3RpdGxlJykNCgkJCQkpDQoJCQkpOw0KCQkJZWNobyB0cigN CgkJCQlmTGFiZWxDZWxsKGdUeHQoJ2Rlc2NyaXB0aW9uJyksICcnLCAnc21kX2ZlYXRfZGVz YycpLg0KCQkJCXRkKHRleHRfYXJlYSgnc21kX2ZlYXRfZGVzYycsIDgwLCA0MDAsICRmZWF0 X2Rlc2MsICdzbWRfZmVhdF9kZXNjJykpLg0KCQkJCXRkKGZJbnB1dCgnc3VibWl0JywgJycs IGdUeHQoJ3NhdmUnKSwgJ3NtYWxsZXJib3gnKSkuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9z ZWFyY2hrZWVwJywgJycpLg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfZmlsdGtlZXAnLCAnJyku DQoJCQkJaElucHV0KCdzbWRfZmVhdF9pZCcsICRzbWRfZmVhdF9pZCkuDQoJCQkJZUlucHV0 KCRzbWRfZmVhdHVyZWRfZXZlbnQpLg0KCQkJCXNJbnB1dCgnc21kX2ZlYXR1cmVkX3NhdmUn KQ0KCQkJKTsNCgkJfQ0KCQllY2hvIGVuZFRhYmxlKCk7DQoJCWVjaG8gJzwvZm9ybT4nOw0K DQoJCSRlZGJ0biA9IHNtYWxsKCdbJy5nVHh0KCdlZGl0JykuJ10nKTsNCg0KCQlpZiAoJG91 dCkgew0KCQkJJHJvd3MgPSBjb3VudCgkcnMpOw0KCQkJJHRibG91dCA9IGFycmF5KCk7DQoJ CQkkYXR0cyA9ICcgY2xhc3M9InNtZF9mZWF0dXJlZF90YWJsZSBzbWRfY2xlYXIiIGlkPSJz bWRfJy4kZGlzcGxheS4nIiBhbGlnbj0iY2VudGVyIic7DQoNCgkJCSR0YmxvdXRbXSA9IGhl ZChzbWRfZmVhdHVyZWRfZ1R4dCgnbWFuYWdlX2xibCcsIGFycmF5KCksICdyYXcnKSwgMywg JyBjbGFzcz0ic21kX2NsZWFyIicpOw0KCQkJZm9yICgkaWR4ID0gMDsgJGlkeCA8ICRyb3dz OyAkaWR4KyspIHsNCgkJCQkkaXNmZWF0ID0gKGlzc2V0KCRvdXRbJGlkeF0pICYmIGFycmF5 X2tleV9leGlzdHMoJG91dFskaWR4XVswXSwgJGZlYXRsaXN0KSk7DQoJCQkJJGNlbGxjbGFz cyA9ICRpc2ZlYXQgPyAnIGNsYXNzPSJzbWRfZmVhdHVyZWQiJyA6ICcnOw0KCQkJCSRlZGxp bmsgPSAkaXNmZWF0ID8gJzxhIGNsYXNzPSJlZGxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJl dHVybiBzbWRfZmVhdHVyZWRfZWRpdGtlZXAoXCcnLiRvdXRbJGlkeF1bMF0uJ1wnKTsiPicu JGVkYnRuLic8L2E+Jy5zcCA6ICcnOw0KCQkJCSRyb3dkYXRhID0gKGlzc2V0KCRvdXRbJGlk eF0pKSA/ICc8c3BhbiBuYW1lPSJzbWRfZmVhdF9uYW1lIiBjbGFzcz0ic21kX2hpZGRlbiI+ Jy4kb3V0WyRpZHhdWzFdLic8L3NwYW4+JyA6ICcnOw0KCQkJCSRyb3dkYXRhIC49ICRpc2Zl YXQgPyAnPHNwYW4gbmFtZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlk ZGVuIj4nLiRvdXRbJGlkeF1bMl0uJzwvc3Bhbj4nIDogJyc7DQoJCQkJJHRibG91dFtdID0g KGlzc2V0KCRvdXRbJGlkeF0pKSA/ICc8ZGl2Jy4kY2VsbGNsYXNzLic+Jy4kZWRsaW5rLic8 YSBocmVmPSIjIiBvbmNsaWNrPSJyZXR1cm4gc21kX2ZlYXR1cmVkX3NlbGVjdCh0aGlzLCBc JycuJG91dFskaWR4XVswXS4nXCcpIj4nLiRvdXRbJGlkeF1bMV0uJzwvYT4nLiRyb3dkYXRh Lic8L2Rpdj4nIDogJzxkaXY+PC9kaXY+JzsNCgkJCX0NCgkJCWVjaG8gdGFnKGpvaW4oIiIs JHRibG91dCksICdkaXYnLCAkYXR0cyk7DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJzbWRfY2xl YXIiPjwvZGl2Pic7DQoJCQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnICYmICRkb19wYWcp IHsNCgkJCQllY2hvIG4uJzxkaXYgaWQ9IicuJHNtZF9mZWF0dXJlZF9ldmVudC4nX25hdmln YXRpb24iIGNsYXNzPSJ0eHAtbmF2aWdhdGlvbiI+Jy4NCgkJCQkJbi5uYXZfZm9ybSgkc21k X2ZlYXR1cmVkX2V2ZW50LCAkcGFnZSwgJG51bVBhZ2VzLCAnJywgJycsICcnLCAnJywgJHRv dGFsLCAkbGltaXQpLg0KCQkJCQluLnBhZ2VieV9mb3JtKCRzbWRfZmVhdHVyZWRfZXZlbnQs ICRzbWRfZmVhdHVyZWRfbGlzdF9wYWdlYnkpOw0KCQkJCQluLic8L2Rpdj4nOw0KCQkJfQ0K CQl9DQoNCgkJJHFzID0gYXJyYXkoDQoJCQkiZXZlbnQiID0+ICRzbWRfZmVhdHVyZWRfZXZl bnQsDQoJCSk7DQoNCgkJJHFzVmFycyA9ICJpbmRleC5waHAiLmpvaW5fcXMoJHFzKTsNCgkJ JHZlcmlmeVR4dCA9IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmZlYXR1cmVfY29uZmlybScpOw0K DQoJCWVjaG8gPDw8RU9KUw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KLy8g Q29uY2F0ZW5hdGUgY2hlY2tib3ggb3B0aW9ucyBmb3Igc3RvcmFnZQ0KZnVuY3Rpb24gc21k X2ZlYXRfcHJlc3ViKCkgew0KCXZhciBzbWRfb3V0ID0gIiI7DQoJalF1ZXJ5KCIuc21kX2Zl YXRfdGV4dGlsZSA6Y2hlY2tib3giKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQlzbWRfb3V0ICs9 ICh0aGlzLmNoZWNrZWQpID8gMSA6IDA7DQoJfSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfdGV4 dGlsZSIpLnZhbChzbWRfb3V0KTsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQpmdW5jdGlvbiBz bWRfZmVhdHVyZWRfc2VsZWN0KG9iaiwgaWQpIHsNCglvYmogPSBqUXVlcnkob2JqKS5wYXJl bnQoKTsNCg0KCS8vIE4uQi4gTmVnYXRpdmUgbG9naWMgdXNlZCBoZXJlIGJlY2F1c2Ugd2Un cmUgY2hlY2tpbmcgdGhlIGNsYXNzIF9iZWZvcmVfIGl0J3MgYmVlbiB0b2dnbGVkDQoJdmFy IGFjdGlvbiA9ICgob2JqKS5oYXNDbGFzcygic21kX2ZlYXR1cmVkIikpID8gJ3JlbW92ZScg OiAnYWRkJzsNCglpZiAoYWN0aW9uID09ICdyZW1vdmUnKSB7DQoJCXZhciByZXQgPSBjb25m aXJtKCd7JHZlcmlmeVR4dH0nKTsNCgkJaWYgKHJldCA9PSBmYWxzZSkgew0KCQkJcmV0dXJu IGZhbHNlOw0KCQl9DQoJfQ0KCWpRdWVyeS5wb3N0KCd7JHFzVmFyc30nLCB7IHN0ZXA6ICJz bWRfZmVhdHVyZWRfdGFnaXQiLCBzbWRfZmVhdF9pZDogaWQsIHNtZF9mZWF0X2FjdGlvbjog YWN0aW9uIH0sDQoJCWZ1bmN0aW9uKGRhdGEpIHsNCgkJCW9iai50b2dnbGVDbGFzcygnc21k X2ZlYXR1cmVkJyk7DQoJCQlpZiAoYWN0aW9uID09ICdhZGQnKSB7DQoJCQkJb2JqLnByZXBl bmQoJzxhIGNsYXNzPSJlZGxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBzbWRfZmVh dHVyZWRfZWRpdGtlZXAoXCcnK2lkKydcJykiPnskZWRidG59PC9hPiZuYnNwOycpOw0KCQkJ CW9iai5hcHBlbmQoJzxzcGFuIG5hbWU9InNtZF9mZWF0X2xhYmVsIiBjbGFzcz0iZXh0cmEg c21kX2hpZGRlbiI+PC9zcGFuPicpOw0KCQkJfSBlbHNlIHsNCgkJCQlvYmouZmluZCgnYS5l ZGxpbmsnKS5yZW1vdmUoKTsNCgkJCQlvYmouZmluZCgnc3Bhbi5leHRyYScpLnJlbW92ZSgp Ow0KCQkJCWlmIChqUXVlcnkoIiNzbWRfZmVhdF9zZWFyY2giKS52YWwoKSAhPSAnJykgalF1 ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikua2V5dXAoKTsNCgkJCQlpZiAoalF1ZXJ5KCIjc21k X2ZlYXRfZmlsdCIpLnZhbCgpICE9ICcnKSBqUXVlcnkoIiNzbWRfZmVhdF9maWx0IikuY2hh bmdlKCk7DQoJCQl9DQoJCX0NCgkpOw0KCXJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24g c21kX2ZlYXR1cmVkX2VkaXRrZWVwKGlkKSB7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZv cm0gW25hbWU9J3NtZF9mZWF0X3NlYXJjaGtlZXAnXSIpLnZhbChqUXVlcnkoIiNzbWRfZmVh dF9zZWFyY2giKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZvcm0gW25hbWU9 J3NtZF9mZWF0X2ZpbHRrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXR1cmVkX2J5bGFi ZWwgI3NtZF9mZWF0X2ZpbHQgb3B0aW9uOnNlbGVjdGVkIikudmFsKCkpOw0KCWpRdWVyeSgi I3NtZF9mZWF0X2VkaXRmb3JtIFtuYW1lPSdzbWRfZmVhdF9pZCddIikudmFsKGlkKTsNCglq UXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSIpLnN1Ym1pdCgpOw0KfQ0KDQpmdW5jdGlvbiBz bWRfZmVhdHVyZWRfc2F2ZWtlZXAoKSB7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2F2ZWZvcm0g W25hbWU9J3NtZF9mZWF0X3NlYXJjaGtlZXAnXSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdF9z ZWFyY2giKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2F2ZWZvcm0gW25hbWU9J3Nt ZF9mZWF0X2ZpbHRrZWVwJ10iKS52YWwoalF1ZXJ5KCIjc21kX2ZlYXR1cmVkX2J5bGFiZWwg I3NtZF9mZWF0X2ZpbHQgb3B0aW9uOnNlbGVjdGVkIikudmFsKCkpOw0KfQ0KDQpmdW5jdGlv biBzbWRfZmVhdF9maWx0ZXIoc2VsZWN0b3IsIHF1ZXJ5LCBuYW0sIGNzZW5zZSwgZXhhY3Qp IHsNCglpZiAoeyRkaXNwbGF5X2pzfSA9PSAxKSB7DQoJCXZhciBxdWVyeSA9IGpRdWVyeS50 cmltKHF1ZXJ5KTsNCgkJY3NlbnNlID0gKGNzZW5zZSkgPyAiIiA6ICJpIjsNCgkJcXVlcnkg PSBxdWVyeS5yZXBsYWNlKC8gL2dpLCAnfCcpOyAvLyBhZGQgT1IgZm9yIHJlZ2V4IHF1ZXJ5 DQoJCWlmIChleGFjdCkgew0KCQkJdG1wID0gcXVlcnkuc3BsaXQoJ3wnKTsNCgkJCWZvciAo dmFyIGlkeCA9IDA7IGlkeCA8IHRtcC5sZW5ndGg7IGlkeCsrKSB7DQoJCQkJdG1wW2lkeF0g PSAnXicrdG1wW2lkeF0rJyQnOw0KCQkJfQ0KCQkJcXVlcnkgPSB0bXAuam9pbignfCcpOw0K CQl9DQoJCXZhciByZSA9IG5ldyBSZWdFeHAocXVlcnksIGNzZW5zZSk7DQoJCWpRdWVyeShz ZWxlY3RvcikuZWFjaChmdW5jdGlvbigpIHsNCgkJCXNlbCA9ICh0eXBlb2YgbmFtPT0idW5k ZWZpbmVkIiB8fCBuYW09PScnKSA/IGpRdWVyeSh0aGlzKSA6IGpRdWVyeSh0aGlzKS5maW5k KCJzcGFuW25hbWU9JyIrbmFtKyInXSIpOw0KCQkJaWYgKHF1ZXJ5ID09ICcnKSB7DQoJCQkJ aWYgKHNlbC5sZW5ndGggPT0gMSAmJiBzZWwudGV4dCgpID09ICcnKSB7DQoJCQkJCWpRdWVy eSh0aGlzKS5zaG93KCk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJalF1ZXJ5KHRoaXMpLmhpZGUo KTsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmIChzZWwudGV4dCgpLnNlYXJjaChyZSkg PCAwKSB7DQoJCQkJCWpRdWVyeSh0aGlzKS5oaWRlKCk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJ alF1ZXJ5KHRoaXMpLnNob3coKTsNCgkJCQl9DQoJCQl9DQoJCX0pOw0KCX0NCn0NCg0KalF1 ZXJ5KGZ1bmN0aW9uKCkgew0KCWpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLmtleXVwKGZ1 bmN0aW9uKGV2ZW50KSB7DQoJCWpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS52YWwoJzAnKTsg Ly8gQ2xlYXIgdGhlIGZpbHRlciBkcm9wZG93bg0KCQkvLyBpZiBlc2MgaXMgcHJlc3NlZCBv ciBub3RoaW5nIGlzIGVudGVyZWQNCgkJaWYgKGV2ZW50LmtleUNvZGUgPT0gMjcgfHwgalF1 ZXJ5KHRoaXMpLnZhbCgpID09ICcnKSB7DQoJCQlqUXVlcnkodGhpcykudmFsKCcnKTsNCgkJ CWlmICh7JGRpc3BsYXlfanN9ID09IDEpIHsNCgkJCQlqUXVlcnkoIi5zbWRfZmVhdHVyZWRf dGFibGUgZGl2Om5vdCgudGJsaGVhZCkiKS5zaG93KCk7DQoJCQl9DQoJCX0gZWxzZSB7DQoJ CQlzbWRfZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVh ZCknLCBqUXVlcnkodGhpcykudmFsKCksICdzbWRfZmVhdF9uYW1lJywgMCwgMCk7DQoJCX0N Cgl9KTsNCglpZiAoJ3skc21kX2ZlYXRfc2VhcmNoa2VlcH0nICE9ICcnKSB7DQoJCWpRdWVy eSgiI3NtZF9mZWF0X3NlYXJjaCIpLmtleXVwKCk7DQoJfQ0KCWpRdWVyeSgiI3NtZF9mZWF0 X2ZpbHQiKS5jaGFuZ2UoZnVuY3Rpb24oZXZlbnQpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRf c2VhcmNoIikudmFsKCcnKTsgLy8gRW1wdHkgdGhlIHNlYXJjaCBib3gNCgkJaWYgKGpRdWVy eSh0aGlzKS52YWwoKSA9PSAnJykgew0KCQkJaWYgKHskZGlzcGxheV9qc30gPT0gMSkgew0K CQkJCWpRdWVyeSgnLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50YmxoZWFkKScpLnNo b3coKTsNCgkJCX0NCgkJfSBlbHNlIGlmIChqUXVlcnkodGhpcykudmFsKCkgPT0gJ3NtZF91 bmxhYmVsbGVkJykgew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1cmVkX3RhYmxl IGRpdjpub3QoLnRibGhlYWQpJywgJycsICdzbWRfZmVhdF9sYWJlbCcsIDAsIDApOw0KCQl9 IGVsc2Ugew0KCQkJc21kX2ZlYXRfZmlsdGVyKCcuc21kX2ZlYXR1cmVkX3RhYmxlIGRpdjpu b3QoLnRibGhlYWQpJywgalF1ZXJ5KHRoaXMpLnZhbCgpLCAnc21kX2ZlYXRfbGFiZWwnLCAx LCAxKTsNCgkJfQ0KCX0pOw0KCWlmICgneyRzbWRfZmVhdF9maWx0a2VlcH0nICE9ICcnKSB7 DQoJCWpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS5jaGFuZ2UoKTsNCgl9DQoJaWYgKCd7JHNt ZF9mZWF0X2lkfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfbGFiZWwiKS5mb2N1 cygpOw0KCQlqUXVlcnkoIiNzbWRfZmVhdF9sYWJlbGNob29zZSIpLmNoYW5nZShmdW5jdGlv bihldmVudCkgew0KCQkJalF1ZXJ5KCIjc21kX2ZlYXRfbGFiZWwiKS52YWwoalF1ZXJ5KHRo aXMpLnZhbCgpKTsNCgkJfSk7DQoJfQ0KCWpRdWVyeSgiI3NtZF9sb2FkaW5nIikuaGlkZSgp Ow0KCWpRdWVyeSgiI3NtZF9jb250YWluZXIiKS5zaG93KCk7DQp9KTsNCg0KPC9zY3JpcHQ+ DQpFT0pTOw0KDQoJCS8vIEluamVjdCBzdHlsZXMNCgkJZWNobyAnPHN0eWxlIHR5cGU9InRl eHQvY3NzIj4nOw0KCQllY2hvIHN0cnRyKCRzbWRfZmVhdHVyZWRfc3R5bGVzWydjb21tb24n XSwgJHN0eWxlcmVwcyk7DQoJCWVjaG8gJzwvc3R5bGU+JzsNCgkJZWNobyAnPC9kaXY+JzsN Cgl9IGVsc2Ugew0KCQkvLyBUYWJsZSBub3QgaW5zdGFsbGVkDQoJCSRidG5JbnN0YWxsID0g Jzxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/ZXZlbnQ9Jy4kc21kX2ZlYXR1cmVkX2V2 ZW50LmEuJ3N0ZXA9c21kX2ZlYXR1cmVkX3RhYmxlX2luc3RhbGwiIHN0eWxlPSJkaXNwbGF5 OmlubGluZSI+Jy5mSW5wdXQoJ3N1Ym1pdCcsICdzdWJtaXQnLCBzbWRfZmVhdHVyZWRfZ1R4 dCgndGJsX2luc3RhbGxfbGJsJyksICdzbWFsbGVyYm94JykuJzwvZm9ybT4nOw0KCQkkYnRu U3R5bGUgPSAnIHN0eWxlPSJib3JkZXI6MDtoZWlnaHQ6MjVweCInOw0KCQllY2hvIHN0YXJ0 VGFibGUoJ2xpc3QnKTsNCgkJZWNobyB0cih0ZGEoc3Ryb25nKHNtZF9mZWF0dXJlZF9nVHh0 KCdwcmVmc19zb21lX3RibCcpKS5ici5icg0KCQkJCS5zbWRfZmVhdHVyZWRfZ1R4dCgncHJl ZnNfc29tZV9leHBsYWluJykuYnIuYnINCgkJCQkuc21kX2ZlYXR1cmVkX2dUeHQoJ3ByZWZz X3NvbWVfb3B0cycpLCAnIGNvbHNwYW49IjIiJykNCgkJKTsNCgkJZWNobyB0cih0ZGEoJGJ0 bkluc3RhbGwsICRidG5TdHlsZSkpOw0KCQllY2hvIGVuZFRhYmxlKCk7DQoJfQ0KfQ0KDQov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfY2hhbmdlX3BhZ2VieSgpIHsNCgln bG9iYWwgJHNtZF9mZWF0dXJlZF9ldmVudDsNCgkNCglldmVudF9jaGFuZ2VfcGFnZWJ5KCRz bWRfZmVhdHVyZWRfZXZlbnQpOw0KCXNtZF9mZWF0dXJlZF9saXN0KCk7DQp9DQoNCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gVXBkYXRlIHRoZSBwYXNzZWQgcmVjb3JkIGlu IHRoZSBmZWF0dXJlZCB0YWJsZQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3NhdmUoKSB7DQoJ Z2xvYmFsICRzbWRfZmVhdHVyZWRfZXZlbnQsICRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRz Ow0KDQoJZXh0cmFjdChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVhdF9sYWJl bCcsICdzbWRfZmVhdF90aXRsZScsICdzbWRfZmVhdF9kZXNjJykpKTsNCglhc3NlcnRfaW50 KCRzbWRfZmVhdF9pZCk7DQoNCgkkc21kX2ZlYXRfdGl0bGV0aWxlID0gJHNtZF9mZWF0X3Rp dGxlOw0KCSRzbWRfZmVhdF9kZXNjdGlsZSA9ICRzbWRfZmVhdF9kZXNjOw0KCSRzbWRfZmVh dF9sYWJlbCA9IGRvU2xhc2goJHNtZF9mZWF0X2xhYmVsKTsNCg0KCWlmIChzbWRfZmVhdHVy ZWRfdGFibGVfZXhpc3QoKSkgew0KCQlAaW5jbHVkZV9vbmNlIHR4cGF0aC4nL2xpYi9jbGFz c1RleHRpbGUucGhwJzsNCgkJQGluY2x1ZGVfb25jZSB0eHBhdGguJy9wdWJsaXNoLnBocCc7 DQoNCgkJJHRleHRpbGVvbm9mZiA9IHNtZF9mZWF0dXJlZF9wcmVmX2V4cGxvZGUoJHNtZF9m ZWF0dXJlZF90ZXh0aWxlX29wdHMsIGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfdGV4dGlsZScs ICcxMScpKTsNCg0KCQlpZiAoY2xhc3NfZXhpc3RzKCdUZXh0aWxlJykpIHsNCgkJCSR0ZXh0 aWxlID0gbmV3IFRleHRpbGUoKTsNCgkJCSRzbWRfZmVhdF90aXRsZXRpbGUgPSBkb1NsYXNo KCgoJHRleHRpbGVvbm9mZlsndGl0bGUnXSA9PSAnMScpID8gJHRleHRpbGUtPlRleHRpbGVU aGlzKHBhcnNlKCRzbWRfZmVhdF90aXRsZSkpIDogcGFyc2UoJHNtZF9mZWF0X3RpdGxlKSkp Ow0KCQkJJHNtZF9mZWF0X2Rlc2N0aWxlID0gZG9TbGFzaCgoKCR0ZXh0aWxlb25vZmZbJ2Rl c2MnXSA9PSAnMScpID8gJHRleHRpbGUtPlRleHRpbGVUaGlzKHBhcnNlKCRzbWRfZmVhdF9k ZXNjKSkgOiBwYXJzZSgkc21kX2ZlYXRfZGVzYykpKTsNCgkJfQ0KDQoJCSRzbWRfZmVhdF90 aXRsZSA9IGRvU2xhc2goJHNtZF9mZWF0X3RpdGxlKTsNCgkJJHNtZF9mZWF0X2Rlc2MgPSBk b1NsYXNoKCRzbWRfZmVhdF9kZXNjKTsNCgkJJHJldCA9IHNhZmVfdXBzZXJ0KFNNRF9GRUFU LCAibGFiZWw9JyRzbWRfZmVhdF9sYWJlbCcsIGZlYXRfdGl0bGU9JyRzbWRfZmVhdF90aXRs ZScsIGZlYXRfdGl0bGVfaHRtbD0nJHNtZF9mZWF0X3RpdGxldGlsZScsIGRlc2NyaXB0aW9u PSckc21kX2ZlYXRfZGVzYycsIGRlc2NfaHRtbD0nJHNtZF9mZWF0X2Rlc2N0aWxlJyIsICJm ZWF0X2lkPSckc21kX2ZlYXRfaWQnIik7DQoJCXVuc2V0KCRfUE9TVFsnc21kX2ZlYXRfaWQn XSk7DQoJfQ0KDQoJc21kX2ZlYXR1cmVkX2xpc3Qoc21kX2ZlYXR1cmVkX2dUeHQoJ3NhdmVk JykpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENyZWF0ZSBhbiBl bXB0eSBlbnRyeSBpbiB0aGUgZmVhdHVyZWQgdGFibGUgb3IgZGVzdHJveSBpdA0KZnVuY3Rp b24gc21kX2ZlYXR1cmVkX3RhZ2l0KCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVkX2V2ZW50 Ow0KCWV4dHJhY3QoZG9TbGFzaChncHNhKGFycmF5KCdzbWRfZmVhdF9pZCcsICdzbWRfZmVh dF9hY3Rpb24nKSkpKTsNCg0KCWFzc2VydF9pbnQoJHNtZF9mZWF0X2lkKTsNCg0KCWlmICgk c21kX2ZlYXRfYWN0aW9uID09ICdhZGQnKSB7DQoJCSRyZXQgPSBzYWZlX3Vwc2VydChTTURf RkVBVCwgImxhYmVsPScnIiwgImZlYXRfaWQ9JyRzbWRfZmVhdF9pZCciKTsNCgl9IGVsc2Ug aWYgKCRzbWRfZmVhdF9hY3Rpb24gPT0gJ3JlbW92ZScpIHsNCgkJJHJldCA9IHNhZmVfZGVs ZXRlKFNNRF9GRUFULCAiZmVhdF9pZD0nJHNtZF9mZWF0X2lkJyIpOw0KCX0NCn0NCg0KLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3ByZWZzYXZlKCkgew0KCWV4dHJhY3Qo Z3BzYShhcnJheSgnc21kX2ZlYXRfZGlzcGxheScsICdzbWRfZmVhdF9zb3J0JywgJ3NtZF9m ZWF0X3NvcnRkaXInLCAnc21kX2ZlYXRfYm94X3gnLCAnc21kX2ZlYXRfYm94X3knLCAnc21k X2ZlYXRfdGV4dGlsZScpKSk7DQoJJG1zZyA9ICcnOw0KDQoJaWYgKCRzbWRfZmVhdF9kaXNw bGF5KSB7DQoJCXNldF9wcmVmKCJzbWRfZmVhdHVyZWRfZGlzcGxheSIsICRzbWRfZmVhdF9k aXNwbGF5LCAnc21kX2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwg UFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJ fQ0KDQoJaWYgKCRzbWRfZmVhdF9zb3J0ICYmICRzbWRfZmVhdF9zb3J0ZGlyKSB7DQoJCSRz b3J0X2NyaXQgPSAkc21kX2ZlYXRfc29ydC4nICcuICRzbWRfZmVhdF9zb3J0ZGlyOw0KCQlz ZXRfcHJlZigic21kX2ZlYXR1cmVkX3NvcnQiLCAkc29ydF9jcml0LCAnc21kX2ZlYXR1cmVk JywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwgUFJFRl9QUklWQVRFKTsNCgkJJG1z ZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJfQ0KDQoJaWYgKCRzbWRfZmVhdF9i b3hfeCAmJiAkc21kX2ZlYXRfYm94X3kpIHsNCgkJJGRpbXMgPSAkc21kX2ZlYXRfYm94X3gu J3gnLiRzbWRfZmVhdF9ib3hfeTsNCgkJc2V0X3ByZWYoInNtZF9mZWF0dXJlZF9ib3hfc2l6 ZSIsICRkaW1zLCAnc21kX2ZlYXR1cmVkJywgUFJFRl9ISURERU4sICd0ZXh0X2lucHV0Jywg MCwgUFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7 DQoJfQ0KDQoJaWYgKCRzbWRfZmVhdF90ZXh0aWxlKSB7DQoJCXNldF9wcmVmKCJzbWRfZmVh dHVyZWRfdGV4dGlsZSIsICRzbWRfZmVhdF90ZXh0aWxlLCAnc21kX2ZlYXR1cmVkJywgUFJF Rl9ISURERU4sICd0ZXh0X2lucHV0JywgMCwgUFJFRl9QUklWQVRFKTsNCgkJJG1zZyA9IGdU eHQoJ3ByZWZlcmVuY2VzX3NhdmVkJyk7DQoJfQ0KDQoJc21kX2ZlYXR1cmVkX2xpc3QoJG1z Zyk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gU3BsaXQgYSBtdWx0 aS1jaGFyIHByZWZlcmVuY2UgdmFsdWUgaW50byBhbiBhcnJheSBvZiBrZXlzL3ZhbHVlcy4N Ci8vIE5vdGU6IHZhbHVlIGlzIHBhc3NlZCBpbiBhbmQgbm90IHJlYWQgZGlyZWN0bHkgZnJv bSB0aGUgcHJlZnMgYXJyYXkgaW4gdGhpcyBmdW5jdGlvbiAtIGludGVudGlvbmFsbHkNCmZ1 bmN0aW9uIHNtZF9mZWF0dXJlZF9wcmVmX2V4cGxvZGUoJGl0ZW1zLCAkb3B0dmFsKSB7DQoJ JG9ub2ZmID0gYXJyYXlfdmFsdWVzKHByZWdfc3BsaXQoJy8vJywgJG9wdHZhbCwgLTEsIFBS RUdfU1BMSVRfTk9fRU1QVFkpKTsNCgkkb3V0ID0gYXJyYXkoKTsNCglmb3JlYWNoKCRpdGVt cyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQkkb3V0WyhzdHJpbmcpJHZhbHVlXSA9ICRvbm9m Zlska2V5XTsNCgl9DQoJcmV0dXJuICRvdXQ7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IHNtZF9mZWF0dXJlZF9zYXZlX3BhbmVfc3RhdGUoKSB7DQoJJHBhbmVzID0gYXJyYXkoJ3Nt ZF9mZWF0dXJlZF9jcGFuZWwnKTsNCgkkcGFuZSA9IGdwcygncGFuZScpOw0KCWlmIChpbl9h cnJheSgkcGFuZSwgJHBhbmVzKSkNCgl7DQoJCXNldF9wcmVmKCJwYW5lX3skcGFuZX1fdmlz aWJsZSIsIChncHMoJ3Zpc2libGUnKSA9PSAndHJ1ZScgPyAnMScgOiAnMCcpLCAnc21kX2Zl YXR1cmVkJywgUFJFRl9ISURERU4sICd5ZXNub3JhZGlvJywgMCwgUFJFRl9QUklWQVRFKTsN CgkJc2VuZF94bWxfcmVzcG9uc2UoKTsNCgl9IGVsc2Ugew0KCQlzZW5kX3htbF9yZXNwb25z ZShhcnJheSgnaHR0cC1zdGF0dXMnID0+ICc0MDAgQmFkIFJlcXVlc3QnKSk7DQoJfQ0KfQ0K DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEFkZCBmZWF0dXJlZCB0YWJsZSBp ZiBub3QgYWxyZWFkeSBpbnN0YWxsZWQNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9p bnN0YWxsKCRzaG93cGFuZT0nMScpIHsNCgkkR0xPQkFMU1sndHhwX2Vycl9jb3VudCddID0g MDsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJHNxbFtdID0gIkNSRUFURSBU QUJMRSBJRiBOT1QgRVhJU1RTIGAiLlBGWC5TTURfRkVBVC4iYCAoDQoJCWBmZWF0X2lkYCBp bnQoOCkgTk9UIE5VTEwgZGVmYXVsdCAnMCcsDQoJCWBsYWJlbGAgdmFyY2hhcigzMikgTlVM TCBkZWZhdWx0ICcnLA0KCQlgZmVhdF90aXRsZWAgdmFyY2hhcigyNTUpIE5VTEwgZGVmYXVs dCAnJywNCgkJYGZlYXRfdGl0bGVfaHRtbGAgdmFyY2hhcigyNTUpIE5VTEwgZGVmYXVsdCAn JywNCgkJYGRlc2NyaXB0aW9uYCB0ZXh0IE5VTEwgZGVmYXVsdCAnJywNCgkJYGRlc2NfaHRt bGAgdGV4dCBOVUxMIGRlZmF1bHQgJycsDQoJCVBSSU1BUlkgS0VZIChgZmVhdF9pZGApDQoJ KSBFTkdJTkU9TXlJU0FNIjsNCg0KCWlmKGdwcygnZGVidWcnKSkgew0KCQlkbXAoJHNxbCk7 DQoJfQ0KCWZvcmVhY2ggKCRzcWwgYXMgJHFyeSkgew0KCQkkcmV0ID0gc2FmZV9xdWVyeSgk cXJ5KTsNCgkJaWYgKCRyZXQ9PT1mYWxzZSkgew0KCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291 bnQnXSsrOw0KCQkJZWNobyAiPGI+Ii4kR0xPQkFMU1sndHhwX2Vycl9jb3VudCddLiIuPC9i PiAiLm15c3FsX2Vycm9yKCkuIjxiciAvPlxuIjsNCgkJCWVjaG8gIjwhLS1cbiAkcXJ5IFxu LS0+XG4iOw0KCQl9DQoJfQ0KDQoJLy8gSGFuZGxlIHVwZ3JhZGVzIGZyb20gcHJldmlvdXMg dmVyc2lvbnMNCgkkY29scyA9IGdldFRoaW5ncygnZGVzY3JpYmUgYCcuUEZYLlNNRF9GRUFU LidgJyk7DQoJaWYgKCFpbl9hcnJheSgnZmVhdF9pZCcsICRjb2xzKSkgew0KCQlzYWZlX2Fs dGVyKFNNRF9GRUFULCAiQ0hBTkdFIGBpZGAgYGZlYXRfaWRgIGludCggOCApIE5PVCBOVUxM IERFRkFVTFQgJzAnIik7DQoJfQ0KCWlmICghaW5fYXJyYXkoJ2ZlYXRfdGl0bGUnLCAkY29s cykpIHsNCgkJc2FmZV9hbHRlcihTTURfRkVBVCwgIkFERCBgZmVhdF90aXRsZWAgdmFyY2hh ciggMjU1ICkgTlVMTCBERUZBVUxUICcnIEFGVEVSIGBsYWJlbGAiKTsNCgl9DQoJaWYgKCFp bl9hcnJheSgnZmVhdF90aXRsZV9odG1sJywgJGNvbHMpKSB7DQoJCXNhZmVfYWx0ZXIoU01E X0ZFQVQsICJBREQgYGZlYXRfdGl0bGVfaHRtbGAgdmFyY2hhciggMjU1ICkgTlVMTCBERUZB VUxUICcnIEFGVEVSIGBmZWF0X3RpdGxlYCIpOw0KCX0NCg0KCS8vIFNwaXQgb3V0IHJlc3Vs dHMNCglpZiAoJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9PSAwKSB7DQoJCWlmICgkc2hv d3BhbmUpIHsNCgkJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9pbnN0YWxs ZWQnKTsNCgkJCXNtZF9mZWF0dXJlZF9saXN0KCRtZXNzYWdlKTsNCgkJfQ0KCX0gZWxzZSB7 DQoJCWlmICgkc2hvd3BhbmUpIHsNCgkJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQo J3RibF9ub3RfaW5zdGFsbGVkJyk7DQoJCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2FnZSk7 DQoJCX0NCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gRHJvcCB0 YWJsZSBpZiBpbiBkYXRhYmFzZQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX3RhYmxlX3JlbW92 ZSgpIHsNCgkkcmV0ID0gJyc7DQoJJHNxbCA9IGFycmF5KCk7DQoJJEdMT0JBTFNbJ3R4cF9l cnJfY291bnQnXSA9IDA7DQoJaWYgKHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgpKSB7DQoJ CSRzcWxbXSA9ICJEUk9QIFRBQkxFIElGIEVYSVNUUyAiIC5QRlguU01EX0ZFQVQuICI7ICI7 DQoJCWlmKGdwcygnZGVidWcnKSkgew0KCQkJZG1wKCRzcWwpOw0KCQl9DQoJCWZvcmVhY2gg KCRzcWwgYXMgJHFyeSkgew0KCQkJJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQoJCQlpZiAo JHJldD09PWZhbHNlKSB7DQoJCQkJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSsrOw0KCQkJ CWVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4gIi5teXNxbF9l cnJvcigpLiI8YnIgLz5cbiI7DQoJCQkJZWNobyAiPCEtLVxuICRxcnkgXG4tLT5cbiI7DQoJ CQl9DQoJCX0NCgl9DQoJaWYgKCRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10gPT0gMCkgew0K CQkkbWVzc2FnZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0YmxfcmVtb3ZlZCcpOw0KCX0gZWxz ZSB7DQoJCSRtZXNzYWdlID0gc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9ub3RfcmVtb3ZlZCcp Ow0KCQlzbWRfZmVhdHVyZWRfbGlzdCgkbWVzc2FnZSk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9leGlzdCgk YWxsPScnKSB7DQoJaWYgKCRhbGwpIHsNCgkJJHRibHMgPSBhcnJheShTTURfRkVBVCA9PiA2 KTsNCgkJJG91dCA9IGNvdW50KCR0YmxzKTsNCgkJZm9yZWFjaCAoJHRibHMgYXMgJHRibCA9 PiAkY29scykgew0KCQkJaWYgKGdwcygnZGVidWcnKSkgew0KCQkJCWVjaG8gIisrIFRBQkxF ICIuJHRibC4iIEhBUyAiLmNvdW50KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSkuIiBD T0xVTU5TOyBSRVFVSVJFUyAiLiRjb2xzLiIgKysiLmJyOw0KCQkJfQ0KCQkJaWYgKGNvdW50 KEBzYWZlX3Nob3coJ2NvbHVtbnMnLCAkdGJsKSkgPT0gJGNvbHMpIHsNCgkJCQkkb3V0LS07 DQoJCQl9DQoJCX0NCgkJcmV0dXJuICgkb3V0PT09MCkgPyAxIDogMDsNCgl9IGVsc2Ugew0K CQlpZiAoZ3BzKCdkZWJ1ZycpKSB7DQoJCQllY2hvICIrKyBUQUJMRSAiLlNNRF9GRUFULiIg SEFTICIuY291bnQoQHNhZmVfc2hvdygnY29sdW1ucycsIFNNRF9GRUFUKSkuIiBDT0xVTU5T OyI7DQoJCX0NCgkJcmV0dXJuKEBzYWZlX3Nob3coJ2NvbHVtbnMnLCBTTURfRkVBVCkpOw0K CX0NCn0NCg0KLy8gKioqKioqKioqKioqKioqKg0KLy8gUFVCTElDIFNJREUgVEFHUw0KLy8g KioqKioqKioqKioqKioqKg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBzbWRfZmVhdHVyZWQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVk X2luZm8sICRzbWRfcHJpb3JfZmVhdHVyZWQsICRwcmVmczsNCg0KCWV4dHJhY3QobEF0dHMo YXJyYXkoDQoJCSdsYWJlbCcgICAgPT4gJycsDQoJCSd1bmxhYmVsJyAgPT4gJ0ZlYXR1cmVk JywNCgkJJ2xhYmVsdGFnJyA9PiAnJywNCgkJJ3RpbWUnICAgICA9PiAncGFzdCcsDQoJCSdz dGF0dXMnICAgPT4gJzQsNScsDQoJCSdzZWN0aW9uJyAgPT4gJycsDQoJCSdoaXN0b3J5JyAg PT4gJzEnLA0KCQknbGltaXQnICAgID0+ICcxMCcsDQoJCSdzb3J0JyAgICAgPT4gJycsDQoJ CSdmb3JtJyAgICAgPT4gJycsDQoJCSd3cmFwdGFnJyAgPT4gJycsDQoJCSdicmVhaycgICAg PT4gJycsDQoJCSdjbGFzcycgICAgPT4gJycsDQoJCSdodG1sX2lkJyAgPT4gJycsDQoJKSwk YXR0cykpOw0KDQoJaWYgKGlzc2V0KCRhdHRzWydsYWJlbCddKSkgew0KCQlpZiAoJGxhYmVs KSB7DQoJCQkkd2hlcmUgPSAiQklOQVJZIGxhYmVsIFJFR0VYUCAnIi4kYXR0c1snbGFiZWwn XS4iJyI7DQoJCX0gZWxzZSB7DQoJCQkkd2hlcmUgPSAibGFiZWw9JyciOw0KCQl9DQoJCXVu c2V0KCRhdHRzWydsYWJlbCddKTsNCgl9IGVsc2Ugew0KCQkvLyBJZiBubyBsYWJlbCBhdHRy aWJ1dGUgaGFzIGJlZW4gZ2l2ZW4sIHRyZWF0IHRoaXMgYXMgJ2FsbCBmZWF0dXJlZCBpdGVt cycNCgkJJGlkcyA9IHNhZmVfY29sdW1uKCdmZWF0X2lkJywgU01EX0ZFQVQsICcxPTEnKTsN CgkJJGlkcyA9IGpvaW4oIicsJyIsIGRvU2xhc2goJGlkcykpOw0KCQkkd2hlcmUgPSAic21k ZmVhdC5mZWF0X2lkIElOICgnJGlkcycpIjsNCgl9DQoNCgkvLyBFeGNsdWRlIHByZXZpb3Vz bHkgc2VlbiBhcnRpY2xlcw0KCWlmICgkaGlzdG9yeSAmJiAhZW1wdHkoJHNtZF9wcmlvcl9m ZWF0dXJlZCkpIHsNCgkJJHdoZXJlIC49ICcgQU5EIHNtZGZlYXQuZmVhdF9pZCBOT1QgSU4o JyAuIGpvaW4oJywnLCAkc21kX3ByaW9yX2ZlYXR1cmVkKSAuICcpJzsNCgl9DQoNCgkvLyBO T1RFOiB0aW1lIGlzIGxlZnQgaW4gdGhlICRhdHRzIGFycmF5IGFuZCBwYXNzZWQgdG8gYXJ0 aWNsZV9jdXN0b20uIE90aGVyd2lzZSB0aGUgZGVmYXVsdA0KCS8vIHRpbWUgdmFsdWUgKHBh c3QpIHdpbGwgYmUgdXNlZA0KCWlmICgkdGltZSkgew0KCQlzd2l0Y2ggKCR0aW1lKSB7DQoJ CQljYXNlICdhbnknOg0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnZnV0dXJlJzoNCgkJCQkkd2hl cmUgLj0gIiBBTkQgUG9zdGVkID4gbm93KCkiOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoN CgkJCQkkd2hlcmUgLj0gIiBBTkQgUG9zdGVkIDw9IG5vdygpIjsNCgkJfQ0KCQlpZiAoISRw cmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ10pIHsNCgkJCSR3aGVyZSAuPSAiIEFO RCAobm93KCkgPD0gRXhwaXJlcyBPUiBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUuIikiOw0K CQl9DQoJfQ0KDQoJaWYgKCRzdGF0dXMpIHsNCgkJJHdoZXJlIC49ICcgQU5EIFN0YXR1cyBJ TiAoJy5qb2luKCcsJywgZG9fbGlzdCgkc3RhdHVzKSkuJyknOw0KCQl1bnNldCgkYXR0c1sn c3RhdHVzJ10pOw0KCX0NCg0KCWlmICgkc2VjdGlvbikgew0KCQkkd2hlcmUgLj0gIiBBTkQg U2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9fbGlzdCgkc2VjdGlvbikpLiInKSI7DQoJ CXVuc2V0KCRhdHRzWydzZWN0aW9uJ10pOw0KCX0NCg0KCWlmICgkc29ydCkgew0KCQkkd2hl cmUgLj0nIE9SREVSIEJZICcuJHNvcnQ7DQoJCXVuc2V0KCRhdHRzWydzb3J0J10pOw0KCX0N Cg0KCS8vIExlYXZlIGxpbWl0IGluIHRoZSAkYXR0cyBhcnJheSB0b28gc28gaXQgZG9lc24n dCBkZWZhdWx0IHRvIGFydGljbGVfY3VzdG9tJ3MgdmFsdWUgaWYgc2V0IGhlcmUNCglpZiAo JGxpbWl0KSB7DQoJCSR3aGVyZSAuPScgTElNSVQgJy4kbGltaXQ7DQoJfQ0KDQoJLy8gRG9u J3QgcGFzcyB0aGUgcmVtYWluaW5nIGF0dHJpYnV0ZXMgd2UndmUgYWxyZWFkeSBoYW5kbGVk IG9udG8gdGhlIGFydGljbGVfY3VzdG9tIHRhZw0KCXVuc2V0KA0KCQkkYXR0c1snbGFiZWwn XSwNCgkJJGF0dHNbJ3VubGFiZWwnXSwNCgkJJGF0dHNbJ2xhYmVsdGFnJ10sDQoJCSRhdHRz Wyd3cmFwdGFnJ10sDQoJCSRhdHRzWydicmVhayddLA0KCQkkYXR0c1snY2xhc3MnXSwNCgkJ JGF0dHNbJ2hpc3RvcnknXSwNCgkJJGF0dHNbJ2h0bWxfaWQnXQ0KCSk7DQoNCgkkcnMgPSBn ZXRSb3dzKCdTRUxFQ1QgKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLCB1 bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcywgdW5peF90aW1lc3RhbXAoTGFz dE1vZCkgYXMgdUxhc3RNb2QgRlJPTSAnLlBGWC4ndGV4dHBhdHRlcm4gQVMgdHhwIExFRlQg Sk9JTiAnLlBGWC5TTURfRkVBVC4nIEFTIHNtZGZlYXQgT04gdHhwLklEPXNtZGZlYXQuZmVh dF9pZCBXSEVSRSAnLiR3aGVyZSk7DQoNCgkkdHJ1ZVBhcnQgPSBFdmFsRWxzZSgkdGhpbmcs IDEpOw0KCSRmYWxzZVBhcnQgPSBFdmFsRWxzZSgkdGhpbmcsIDApOw0KDQoJJG91dCA9IGFy cmF5KCk7DQoJaWYgKCRycykgew0KCQlmb3JlYWNoICgkcnMgYXMgJHJvdykgew0KCQkJJHNt ZF9mZWF0dXJlZF9pbmZvWydsYWJlbCddID0gJHJvd1snbGFiZWwnXTsNCgkJCSRzbWRfZmVh dHVyZWRfaW5mb1sndGl0bGUnXSA9ICRyb3dbJ2ZlYXRfdGl0bGVfaHRtbCddOw0KCQkJJHNt ZF9mZWF0dXJlZF9pbmZvWydkZXNjcmlwdGlvbiddID0gJHJvd1snZGVzY19odG1sJ107DQoJ CQkkYXR0c1snaWQnXSA9ICRyb3dbJ0lEJ107DQoNCgkJCSRhcnRvdXQgPSBhcnRpY2xlX2N1 c3RvbSgkYXR0cywgJHRydWVQYXJ0KTsNCg0KCQkJaWYgKCRhcnRvdXQpIHsNCgkJCQkkc21k X3ByaW9yX2ZlYXR1cmVkW10gPSAkcm93WydJRCddOw0KCQkJCSRvdXRbXSA9ICRhcnRvdXQ7 DQoJCQl9DQoJCX0NCgl9IGVsc2Ugew0KCQlyZXR1cm4gcGFyc2UoJGZhbHNlUGFydCk7DQoJ fQ0KCWlmICgkb3V0KSB7DQoJCXJldHVybiAoKCRsYWJlbHRhZykgPyBkb0xhYmVsKCAoICgk bGFiZWwgPT0gJycpID8gJHVubGFiZWwgOiAkbGFiZWwpLCAkbGFiZWx0YWcgKSA6ICcnKQ0K CQkJLmRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICcnLCAnJywgJycs ICRodG1sX2lkKTsNCgl9DQoJcmV0dXJuICcnOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF91bmZlYXR1cmVkKCRhdHRzLCAkdGhpbmcpIHsNCgln bG9iYWwgJHNtZF9wcmlvcl9mZWF0dXJlZCwgJHRoaXNwYWdlLCAkcHJldGV4dDsNCg0KCSR0 aW1lID0gKGlzc2V0KCRhdHRzWyd0aW1lJ10pKSA/ICRhdHRzWyd0aW1lJ10gOiAnJzsNCgkk c3RhdHVzID0gKGlzc2V0KCRhdHRzWydzdGF0dXMnXSkpID8gJGF0dHNbJ3N0YXR1cyddIDog NDsNCgkkc2VjdGlvbiA9IChpc3NldCgkYXR0c1snc2VjdGlvbiddKSkgPyAkYXR0c1snc2Vj dGlvbiddIDogJyc7DQoJJGhpc3RvcnkgPSAoaXNzZXQoJGF0dHNbJ2hpc3RvcnknXSkpID8g JGF0dHNbJ2hpc3RvcnknXSA6ICcxJzsNCgl1bnNldCgkYXR0c1snaGlzdG9yeSddKTsNCg0K CSR3aGVyZSA9ICIxPTEiOw0KDQoJaWYgKCR0aW1lKSB7DQoJCXN3aXRjaCAoJHRpbWUpIHsN CgkJCWNhc2UgJ2FueSc6DQoJCQkJYnJlYWs7DQoJCQljYXNlICdmdXR1cmUnOg0KCQkJCSR3 aGVyZSAuPSAiIEFORCBQb3N0ZWQgPiBub3coKSI7DQoJCQkJYnJlYWs7DQoJCQlkZWZhdWx0 Og0KCQkJCSR3aGVyZSAuPSAiIEFORCBQb3N0ZWQgPD0gbm93KCkiOw0KCQl9DQoJCWlmICgh JHByZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0aWNsZXMnXSkgew0KCQkJJHdoZXJlIC49ICIg QU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4cGlyZXMgPSAiLk5VTExEQVRFVElNRS4iKSI7 DQoJCX0NCgl9DQoNCglpZiAoJHN0YXR1cykgew0KCQkkd2hlcmUgLj0gJyBBTkQgU3RhdHVz IElOICgnLmpvaW4oJywnLCBkb19saXN0KCRzdGF0dXMpKS4nKSc7DQoJfQ0KDQoJaWYgKCRz ZWN0aW9uKSB7DQoJCSR3aGVyZSAuPSAiIEFORCBTZWN0aW9uIElOICgnIi5qb2luKCInLCci LCBkb19saXN0KCRzZWN0aW9uKSkuIicpIjsNCgl9DQoNCgkvLyBFeGNsdWRlIHByZXZpb3Vz bHkgc2VlbiBhcnRpY2xlcw0KCWlmICgkaGlzdG9yeSAmJiAhZW1wdHkoJHNtZF9wcmlvcl9m ZWF0dXJlZCkpIHsNCgkJJHdoZXJlIC49ICcgQU5EIGlkIE5PVCBJTignIC4gam9pbignLCcs ICRzbWRfcHJpb3JfZmVhdHVyZWQpIC4gJyknOw0KCX0NCg0KCSRvZmZzZXQgPSAoaXNzZXQo JGF0dHNbJ29mZnNldCddKSkgPyAkYXR0c1snb2Zmc2V0J10gOiAwOw0KDQoJaWYgKGlzc2V0 KCRhdHRzWydsaW1pdCddKSAmJiBpc3NldCgkYXR0c1sncGFnZWJ5J10pKSB7DQoJCSRsaW1p dCA9ICRhdHRzWydsaW1pdCddOw0KCQkkcGFnZWJ5ID0gJGF0dHNbJ3BhZ2VieSddOw0KCQkk cGFnZWJ5ID0gKCRwYWdlYnkgPT0gJ2xpbWl0JykgPyAkbGltaXQgOiAkcGFnZWJ5Ow0KCQkk cGcgPSBncHMoJ3BnJyk7DQoNCgkJJGdyYW5kX3RvdGFsID0gc2FmZV9jb3VudCgndGV4dHBh dHRlcm4nLCR3aGVyZSk7DQoJCSR0b3RhbCA9ICRncmFuZF90b3RhbCAtICRvZmZzZXQ7DQoJ CSRudW1QYWdlcyA9IGNlaWwoJHRvdGFsLyRwYWdlYnkpOw0KCQkkcGcgPSAoISRwZykgPyAx IDogJHBnOw0KCQkkcGdvZmZzZXQgPSAkb2Zmc2V0ICsgKCgkcGcgLSAxKSAqICRwYWdlYnkp Ow0KCQkvLyBzZW5kIHBhZ2luZyBpbmZvIHRvIHR4cDpuZXdlciBhbmQgdHhwOm9sZGVyDQoJ CSRwYWdlb3V0WydwZyddICAgICAgICAgID0gJHBnOw0KCQkkcGFnZW91dFsnbnVtUGFnZXMn XSAgICA9ICRudW1QYWdlczsNCgkJJHBhZ2VvdXRbJ3MnXSAgICAgICAgICAgPSAkcHJldGV4 dFsncyddOw0KCQkkcGFnZW91dFsnYyddICAgICAgICAgICA9ICRwcmV0ZXh0WydjJ107DQoJ CSRwYWdlb3V0Wydjb250ZXh0J10gICAgID0gJ2FydGljbGUnOw0KCQkkcGFnZW91dFsnZ3Jh bmRfdG90YWwnXSA9ICRncmFuZF90b3RhbDsNCgkJJHBhZ2VvdXRbJ3RvdGFsJ10gICAgICAg PSAkdG90YWw7DQoNCgkJaWYgKGVtcHR5KCR0aGlzcGFnZSkpIHsNCgkJCSR0aGlzcGFnZSA9 ICRwYWdlb3V0Ow0KCQl9DQoJfSBlbHNlIHsNCgkJJHBnb2Zmc2V0ID0gJG9mZnNldDsNCgl9 DQoNCgkkdHJ1ZVBhcnQgPSBFdmFsRWxzZSgkdGhpbmcsIDEpOw0KCSRmYWxzZVBhcnQgPSBF dmFsRWxzZSgkdGhpbmcsIDApOw0KDQoJJHJzID0gc2FmZV9jb2x1bW4oJ0lEJywgJ3RleHRw YXR0ZXJuJywgJHdoZXJlKTsNCglpZiAoJHJzKSB7DQoJCSRhdHRzWydvZmZzZXQnXSA9ICRw Z29mZnNldDsNCgkJJGF0dHNbJ2lkJ10gPSBqb2luKCcsJywgJHJzKTsNCgkJJG91dCA9IGFy dGljbGVfY3VzdG9tKCRhdHRzLCAkdHJ1ZVBhcnQpOw0KCQlyZXR1cm4gJG91dDsNCgl9IGVs c2Ugew0KCQlyZXR1cm4gcGFyc2UoJGZhbHNlUGFydCk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9pbmZvKCRhdHRzKSB7 DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRfaW5mbzsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXko DQoJCSdpdGVtJyA9PiAnJywNCgkpLCRhdHRzKSk7DQoNCglyZXR1cm4gKGlzc2V0KCRzbWRf ZmVhdHVyZWRfaW5mb1skaXRlbV0pID8gJHNtZF9mZWF0dXJlZF9pbmZvWyRpdGVtXSA6ICcn KTsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfaWZf ZmVhdHVyZWQoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVkX2luZm8s ICR0aGlzYXJ0aWNsZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdpZCcgPT4gJycs DQoJCSdsYWJlbCcgPT4gJycsDQoJKSwkYXR0cykpOw0KDQoJaWYgKCRpZCkgew0KCQkkaWQg PSBqb2luKCInLCciLCBkb19saXN0KGRvU2xhc2goJGlkKSkpOw0KCX0NCg0KCWlmICghJGlk ICYmICR0aGlzYXJ0aWNsZSkgew0KCQkkaWQgPSAkdGhpc2FydGljbGVbJ3RoaXNpZCddOw0K CX0NCg0KCSR3aGVyZVtdID0gImZlYXRfaWQgSU4gKCciLiRpZC4iJykiOw0KDQoJaWYgKGlz c2V0KCRhdHRzWydsYWJlbCddKSkgew0KCQkkbGFiZWwgPSBleHBsb2RlKCcsJywgZG9TbGFz aCgkbGFiZWwpKTsNCgkJJGxibHdoZXJlID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJGxhYmVs IGFzICRsYmwpIHsNCgkJCSRsYmx3aGVyZVtdID0gIiciLnRyaW0oJGxibCkuIiciOw0KCQl9 DQoJCWlmICgkbGJsd2hlcmUpIHsNCgkJCSR3aGVyZVtdID0gJyggQklOQVJZIGxhYmVsIElO ICgnIC4gam9pbignLCcsICRsYmx3aGVyZSkgLiAnKSApJzsNCgkJfQ0KCX0NCg0KCSRyZXQg PSBzYWZlX3JvdygnZmVhdF9pZCcsIFNNRF9GRUFULCBqb2luKCcgQU5EJywgJHdoZXJlKSk7 DQoNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmV0KSk7DQp9DQoNCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUGx1Z2luLXNwZWNpZmljIHJlcGxhY2VtZW50 IHN0cmluZ3MgLSBsb2NhbGlzZSBhcyByZXF1aXJlZA0KLy8gVE9ETzogbWFrZSB0aGVzZSBp bnRvIGEgdGV4dHBhY2sgd2hlbiBwbHVnaW4gY29tcG9zZXIgc3VwcG9ydHMgdGhlbQ0KZnVu Y3Rpb24gc21kX2ZlYXR1cmVkX2dUeHQoJHdoYXQsICRhdHRzID0gYXJyYXkoKSkgew0KCSRs YW5nID0gYXJyYXkoDQoJCSdieV9sYWJlbCcgPT4gJ0J5IGxhYmVsOiAnLA0KCQknYnlfbmFt ZScgPT4gJ0J5IG5hbWU6ICcsDQoJCSdjb250cm9sX3BhbmVsJyA9PiAnQ29udHJvbCBwYW5l bCcsDQoJCSdtYW5hZ2VfbGJsJyA9PiAnQ2xpY2sgdG8gc2VsZWN0IGZlYXR1cmVkIGFydGlj bGVzLCB3aGljaCB3aWxsIHRoZW4gYmUgZGlzcGxheWVkIDxzcGFuIGNsYXNzPSJzbWRfZmVh dHVyZWQiPjxhIGhyZWY9IiMiIHN0eWxlPSJtYXJnaW46MCA4cHg7Ij5IaWdobGlnaHRlZDwv YT48L3NwYW4+LicsDQoJCSdwcmVmcycgPT4gJ1ByZWZlcmVuY2VzJywNCgkJJ3ByZWZfYm94 c2l6ZScgPT4gJ0JveCBzaXplOiAnLA0KCQkncHJlZl9ib3hzaXplYnknID0+ICcgeCAnLA0K CQkncHJlZl9kaXNwbGF5JyA9PiAnRGlzcGxheTogJywNCgkJJ3ByZWZfc29ydCcgPT4gJ1Nv cnQgYnk6ICcsDQoJCSdwcmVmc19zb21lX2V4cGxhaW4nID0+ICdUaGlzIGlzIGVpdGhlciBh IG5ldyBpbnN0YWxsYXRpb24gb3IgYSBkaWZmZXJlbnQgdmVyc2lvbicuYnIuJ29mIHRoZSBw bHVnaW4gdG8gb25lIHlvdSBoYWQgYmVmb3JlLicsDQoJCSdwcmVmc19zb21lX29wdHMnID0+ ICdDbGljayAiSW5zdGFsbCB0YWJsZSIgdG8gYWRkIG9yIHVwZGF0ZSB0aGUgdGFibGUnLmJy LidsZWF2aW5nIGFsbCBleGlzdGluZyBkYXRhIHVudG91Y2hlZC4nLA0KCQkncHJlZnNfc29t ZV90YmwnID0+ICdOb3QgYWxsIHRhYmxlIGluZm8gYXZhaWxhYmxlLicsDQoJCSdzYXZlZCcg PT4gJ0FydGljbGUgaW5mbyB1cGRhdGVkJywNCgkJJ3NlYXJjaF9saXZlJyA9PiAnQXJ0aWNs ZSBsaXZlIHNlYXJjaCcsDQoJCSdzZWFyY2hfc3RhbmRhcmQnID0+ICdBcnRpY2xlIHNlYXJj aCcsDQoJCSd0YWJfbmFtZScgPT4gJ0ZlYXR1cmVkIGFydGljbGVzJywNCgkJJ3RibF9pbnN0 YWxsX2xibCcgPT4gJ0luc3RhbGwgdGFibGUnLA0KCQkndGJsX2luc3RhbGxlZCcgPT4gJ1Rh YmxlIGluc3RhbGxlZCcsDQoJCSd0Ymxfbm90X2luc3RhbGxlZCcgPT4gJ1RhYmxlIG5vdCBp bnN0YWxsZWQnLA0KCQkndGJsX3JlbW92ZWQnID0+ICdUYWJsZSByZW1vdmVkJywNCgkJJ3Ri bF9ub3RfcmVtb3ZlZCcgPT4gJ1RhYmxlIG5vdCByZW1vdmVkJywNCgkJJ3RleHRpbGUnID0+ ICdUZXh0aWxlOiAnLA0KCQkndGV4dGlsZV9kZXNjJyA9PiAnRGVzY3JpcHRpb24nLA0KCQkn dGV4dGlsZV90aXRsZScgPT4gJ1RpdGxlJywNCgkJJ3VuZmVhdHVyZV9jb25maXJtJyA9PiAn QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGFydGljbGUgZnJvbSB0aGUg ZmVhdHVyZWQgbGlzdD8nLA0KCQkndW5sYWJlbGxlZCcgPT4gJ1t1bmxhYmVsbGVkXScsDQoJ KTsNCglyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRdLCAkYXR0cyk7DQp9IjtzOjQ6InR5cGUi O3M6MToiMSI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjIiO3M6NDoi aGVscCI7czoyMjIyNjoiPGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfZmVhdHVyZWQ8 L2gxPgoKCTxwPlB1bGwgb25lIG9yIG1vcmUgYXJ0aWNsZXMgb3V0IG9mIHRoZSByZWd1bGFy IGFydGljbGUgZmxvdyBhbmQgcGltcCB0aGVtICYjODIxMjsgcGVyaGFwcyBvbiBhIHNlY3Rp b24gbGFuZGluZyBwYWdlIG9yIHlvdXIgaG9tZSBwYWdlLjwvcD4KCgk8aDI+RmVhdHVyZXM8 L2gyPgoKCTx1bD4KCQk8bGk+T25lLWNsaWNrIHNlbGVjdGlvbiBvZiBhcnRpY2xlcyB0byBm ZWF0dXJlPC9saT4KCQk8bGk+TGFiZWwgeW91ciBmZWF0dXJlZCBhcnRpY2xlcywgYWxsb3dp bmcgeW91IHRvIGdyb3VwIHRoZW0gaW50byBhcmVhcyBsaWtlIEZlYXR1cmVkLCBUZWFzZXJz LCBldGM8L2xpPgoJCTxsaT5BZGQgYW4gb3B0aW9uYWwgdGl0bGUvZGVzY3JpcHRpb24gdG8g ZWFjaCBhcnRpY2xlIHNvIHlvdSBjYW4gdXNlIHRoYXQgYXMgY29weSwgaW5zdGVhZCBvZiBz b21ldGhpbmcgZnJvbSB0aGUgYXJ0aWNsZSBpdHNlbGYgKHN1cHBvcnRzIFRleHRpbGUgYW5k IHNvbWUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyk8L2xpPgoJCTxsaT5T ZWFyY2ggeW91ciBmZWF0dXJlZCBhcnRpY2xlcyBieSBuYW1lIG9yIGxhYmVsOyBmaWx0ZXJp bmcgaW4gcmVhbC10aW1lIGlmIHlvdSB3aXNoPC9saT4KCQk8bGk+SGlkZGVuIHByZWYgYWxs b3dzIHByZS1maWx0ZXJpbmcgYnkgYW4gYWRtaW5pc3RyYXRvciBzbyBvbmx5IGFydGljbGVz IGZyb20gY2VydGFpbiBzZWN0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBwaW1wYWdlPC9saT4K CQk8bGk+RGlzcGxheSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmZWF0dXJlZCBhcnRpY2xlcyB1 c2luZyByZWd1bGFyIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFydGljbGUgdGFn czwvbGk+CgkJPGxpPktlZXBzIHRyYWNrIG9mIHdoaWNoIGFydGljbGVzIGhhdmUgYmVlbiBz ZWVuIGFscmVhZHkgb24gdGhlIHBhZ2Ugc28gbGF0ZXIgZmVhdHVyZWQgKG9yIHVuZmVhdHVy ZWQpIGFydGljbGVzIGFyZW4mIzgyMTc7dCBkdXBsaWNhdGVkPC9saT4KCTwvdWw+CgoJPGgy PkF1dGhvciAvIENyZWRpdHM8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAv IFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5SZXF1aXJlcyBU ZXh0cGF0dGVybiA0LjMuMCs8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVp dGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTE3NC9zbWRf ZmVhdHVyZWQiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8v c3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBp bnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVn aW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEg aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMz OTM4Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRo ZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5XaGVuIHlv dSBpbnN0YWxsIHRoZSBwbHVnaW4sIHRoZSBuZWNlc3NhcnkgdGFibGUgaXMgYXV0b21hdGlj YWxseSBpbnN0YWxsZWQgZm9yIHlvdS4gVGhlcmUmIzgyMTc7cyBjdXJyZW50bHkgbm8gZmFj aWxpdHkgZm9yIHJlbW92aW5nIGl0IGR1cmluZyBwbHVnaW4gb3BlcmF0aW9uLCBidXQgaXQg d2lsbCBiZSBkZWxldGVkIGlmIHRoZSBwbHVnaW4gaXMgZGVsZXRlZCBmcm9tIHlvdXIgc3lz dGVtLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIHNpbXBseSBkZWxldGUgdGhlIHBsdWdpbiBm cm9tIHRoZSA8ZW0+QWRtaW4tJmd0O1BsdWdpbnM8L2VtPiBwYWdlLjwvcD4KCgk8cCBjbGFz cz0iaW1wb3J0YW50Ij5VbmRlciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjIu MCwgaWYgeW91IGNoYW5nZSBhbnkgb2YgdGhlIHByZWZzIGFuZCBzYXZlIHRoZW0sIHlvdSBu ZWVkIHRvIHJlbG9hZCB0aGUgcGx1Z2luIHRhYiAoanVzdCBjbGljayBpdCkgdG8gYWN0dWFs bHkgc2VlIHRoZW0gdGFrZSBlZmZlY3QuIFRoaXMgc2l0dWF0aW9uIGlzIGZpeGVkIHVuZGVy IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuMy4wLjwvcD4KCgk8aDI+Q29uZmln dXJpbmcgZmVhdHVyZWQgYXJ0aWNsZXM8L2gyPgoKCTxwPlZpc2l0IHRoZSA8ZW0+Q29udGVu dC0mZ3Q7RmVhdHVyZWQgYXJ0aWNsZXM8L2VtPiB0YWIuIEEgbGlzdCBvZiBhbGwgYXJ0aWNs ZXMgKGZyb20gdGhlIGFkbWluLXNlbGVjdGVkIHNlY3Rpb25zKSBhcmUgcHJlc2VudGVkIGlu IGEgZ3JpZC48L3A+CgoJPGgzPlRvIGZlYXR1cmUgYW4gYXJ0aWNsZTwvaDM+CgoJPHA+Q2xp Y2sgaXRzIG5hbWUuIEl0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQgYW5kIGFuIDxjb2RlPltFZGl0 XTwvY29kZT4gYnV0dG9uIGFwcGVhcnMgYmVzaWRlIGl0LiBJZiB5b3UgY2hvb3NlIG5vdCB0 byBlZGl0IHRoZSBhcnRpY2xlIGluZm9ybWF0aW9uLCBpdCB3aWxsIGJlIGZlYXR1cmVkIGJ1 dCB1bmxhYmVsbGVkLjwvcD4KCgk8cD5DbGlja2luZyA8Y29kZT5bRWRpdF08L2NvZGU+IHdp bGwgZGlzcGxheSB0aHJlZSBpbnB1dCBib3hlczo8L3A+CgoJPHVsPgoJCTxsaT48c3Ryb25n PkxhYmVsPC9zdHJvbmc+IDogYWxsb3dzIHlvdSB0byBsYWJlbCAoZ3JvdXApIHRoZSBhcnRp Y2xlIHdpdGggb3RoZXJzIG9mIGEgc2ltaWxhciBmZWF0dXJlZCBzdGF0dXMuIEZvciBleGFt cGxlLCB5b3UgY291bGQgbGFiZWwgc29tZSBhcnRpY2xlcyB0byBnbyBpbiBhICYjODIxNjt0 ZWFzZXJzJiM4MjE3OyBibG9jayBvbiB5b3VyIGhvbWUgcGFnZSBieSBsYWJlbGxpbmcgZWFj aCBwb3RlbnRpYWwgYXJ0aWNsZSB3aXRoIDxjb2RlPlRlYXNlcjwvY29kZT4uIEJlIGNhcmVm dWw6IDxzdHJvbmc+bGFiZWxzIGFyZSBjYXNlIHNlbnNpdGl2ZTwvc3Ryb25nPi4gVG8gaGVs cCwgeW91IG1heSBjaG9vc2UgYSBsYWJlbCBmcm9tIHRoZSBkcm9wZG93biBsaXN0IG9mIGFs bCBjdXJyZW50bHkgZGVmaW5lZCBsYWJlbHM8L2xpPgoJCTxsaT48c3Ryb25nPlRpdGxlPC9z dHJvbmc+IDogYWxsb3dzIHlvdSB0byBzdG9yZSBzb21lIFRleHRpbGUtYXdhcmUgdGl0bGUg cmVsYXRlZCB0byB0aGUgYXJ0aWNsZS4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYXJ0 aWNsZSYjODIxNztzIGFjdHVhbCBUaXRsZSBhbmQgY2FuIGJlIHVzZWQgZm9yIGFueSBwdXJw b3NlIHlvdSBzZWUgZml0PC9saT4KCQk8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbjwvc3Ryb25n PiA6IGFsbG93cyB5b3UgdG8gc3RvcmUgc29tZSBUZXh0aWxlLWF3YXJlIHN1cHBvcnRpbmcg aW5mb3JtYXRpb24gYWJvdXQgdGhlIGFydGljbGUuIFRoaXMgY291bGQgc2ltcGx5IGJlIGFk ZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIHlvdXIgb3duIHVzZSwgb3Igc29tZSBjb3B5IHRo YXQgeW91IG1heSB3aXNoIHRvIGRpc3BsYXkgaW4geW91ciB0ZWFzZXJzIGJsb2NrIHRvIGVu dGljZSBwZW9wbGUgdG8gcmVhZCB0aGUgYXJ0aWNsZS4gSXQgY2FuIGJlIGFzIHNpbXBsZSBv ciBhcyBjb21wbGV4IGFzIHlvdSBsaWtlIGFuZCBjYW4gY29udGFpbiA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiB0YWdzIChpZiB0aGV5IG1ha2Ugc2Vuc2UgdG8gdXNlIGF0IHRo YXQgcG9pbnQgJiM4MjEyOyBhcnRpY2xlIHRhZ3MgY2Fubm90IGJlIHVzZWQsIGZvciBleGFt cGxlLCBidXQgPGNvZGU+Jmx0O3R4cDpzaXRlX3VybCAvJmd0OzwvY29kZT4gY2FuKTwvbGk+ Cgk8L3VsPgoKCTxwPldoZW4geW91JiM4MjE3O3JlIGhhcHB5IHdpdGggeW91ciBjYXRlZ29y aXNhdGlvbiBhbmQvb3IgZGVzY3JpcHRpb24gdGV4dCwgaGl0IFNhdmUgdG8gc3RvcmUgaXQu IFlvdSBjYW4gZWRpdCB0aGUgaW5mb3JtYXRpb24gYXQgYW55IHRpbWUgYnkgY2xpY2tpbmcg dGhlIGFwcHJvcHJpYXRlIDxjb2RlPltFZGl0XTwvY29kZT4gYnV0dG9uIGZyb20gdGhlIGZl YXR1cmVkIGFydGljbGUgbGlzdC48L3A+CgoJPGgzPlRvIHVuZmVhdHVyZSBhbiBhcnRpY2xl PC9oMz4KCgk8cD5DbGljayBpdHMgbmFtZSBhZ2Fpbi4gV2hlbiB5b3UgY29uZmlybSB0aGF0 IHlvdSBhcmUgc3VyZSwgdGhlIGFydGljbGUmIzgyMTc7cyBsYWJlbCBhbmQgZGVzY3JpcHRp b24gYXJlIGRlbGV0ZWQsIHNvIGJlIHN1cmUgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0 aGVtLCBvciBoYXZlIGJhY2tlZCB0aGUgaW5mb3JtYXRpb24gdXAgc29tZXdoZXJlLjwvcD4K Cgk8aDM+RmluZGluZyBhcnRpY2xlcyB0byBmZWF0dXJlPC9oMz4KCgk8cD5XaXRoIGxhcmdl IGFydGljbGUgbGlzdHMgaXQgY2FuIGJlY29tZSBkaWZmaWN1bHQgdG8gZmluZCB0aGUgb25l IHlvdSB3YW50LiBBYm92ZSB0aGUgZ3JpZCBpcyBhIGNvbnRyb2wgcGFuZWwuIENsaWNrIGl0 IHRvIHJldmVhbCB0aGUgcGx1Z2luIG9wdGlvbnMuICBPbiB0aGUgbGVmdCBpcyB0aGUgQXJ0 aWNsZSBzZWFyY2ggYXJlYSBhbmQgb24gdGhlIHJpZ2h0IGFyZSB0aGUgcGx1Z2luIHByZWZl cmVuY2VzLiBJZiB5b3UgYXJlIGluIDxlbT5EaXNwbGF5OiBBbGw8L2VtPiBtb2RlLCBzaW1w bHkgc3RhcnQgdHlwaW5nIGluIHRoZSA8ZW0+QnkgbmFtZTwvZW0+IGJveCBhbmQgeW91ciBh cnRpY2xlIGxpc3Qgd2lsbCBiZSByZWR1Y2VkIGFzIHlvdSB0eXBlIHRvIG9ubHkgdGhvc2Ug dGhhdCBtYXRjaC4gVHlwZSBtdWx0aXBsZSB3b3JkcyB0byBmaW5kIGFydGljbGVzIHRoYXQg Y29udGFpbiBhbnkgb2YgdGhlIGdpdmVuIHdvcmRzLiBUbyBxdWlja2x5IGNsZWFyIHRoZSBi b3gsIGhpdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkVTQzwvc3Bhbj5hcGUga2V5LjwvcD4K Cgk8cD5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgc2VsZWN0IGxpc3QgdG8gY2hv b3NlIGFsbCBhcnRpY2xlcyB3aXRoIGEgcGFydGljdWxhciBsYWJlbC4gVGhlIGVtcHR5IGVu dHJ5IGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QgbWVhbnMgJiM4MjIwO2FsbCBhcnRpY2xlcyYj ODIyMTsuIElmIHlvdSBoYXZlIGZlYXR1cmVkIGFuIGFydGljbGUgYnV0IGRvbiYjODIxNzt0 IHN1cHBseSBhIGxhYmVsIHlvdSBjYW4gZmlsdGVyIGl0IGJ5IGNob29zaW5nIHRoZSA8Y29k ZT5bdW5sYWJlbGxlZF08L2NvZGU+IGl0ZW0gZnJvbSB0aGUgbGlzdC4gSWYgeW91IGhhdmUg bGFiZWxsZWQgYW55IGFydGljbGVzLCBlYWNoIGxhYmVsIHlvdSBoYXZlIHN1cHBsaWVkIHdp bGwgYWxzbyBiZSBhbiBvcHRpb24gaW4gdGhlIGxpc3QuIFJlbWVtYmVyIHRoYXQgbGFiZWxz IGFyZSBjYXNlIHNlbnNpdGl2ZS48L3A+CgoJPHA+Tm90ZSB0aGF0IGZpbHRlcmluZyBieSBu YW1lIG9yIGJ5IGxhYmVsIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgYWN0aW9uczogc2VsZWN0 aW5nIHNvbWV0aGluZyBmcm9tIHRoZSBkcm9wZG93biB3aWxsIGNsZWFyIHRoZSB0ZXh0IGJv eCwgYW5kIHR5cGluZyBzb21ldGhpbmcgaW4gdGhlIHRleHQgYm94IHdpbGwgcmVzZXQgdGhl IGRyb3Bkb3duLjwvcD4KCgk8cD5Zb3VyIHNlYXJjaCBjcml0ZXJpYSBhcmUgcmVtZW1iZXJl ZCBiZXR3ZWVuIGVkaXQvbGlzdCB2aWV3cyBzbyB5b3Ugd29uJiM4MjE3O3QgbG9zZSB5b3Vy IHBsYWNlLiBJZiB5b3UgYXJlIGluIDxlbT5EaXNwbGF5OiBQYWdpbmF0ZWQ8L2VtPiBtb2Rl LCB0aGUgc2VhcmNoIHdvcmtzIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGJ1dCB5b3UgaGF2 ZSB0byBoaXQgRW50ZXIgb3IgY2xpY2sgPGVtPkdvPC9lbT4gdG8gc3VibWl0IHRoZSBzZWFy Y2ggY3JpdGVyaWEuPC9wPgoKCTxoMz5QbHVnaW4gcHJlZmVyZW5jZXM8L2gzPgoKCTxwPlVz ZXJzIG9mIHRoZSA8ZW0+RmVhdHVyZWQgYXJ0aWNsZXM8L2VtPiB0YWIgYWxzbyBoYXZlIGEg ZmV3IHByZWZlcmVuY2VzIGF0IHRoZWlyIGRpc3Bvc2FsIHdoaWNoIGNhbiBiZSBhbHRlcmVk IGF0IHdpbGw6PC9wPgoKCTxvbD4KCQk8bGk+PHN0cm9uZz5EaXNwbGF5PC9zdHJvbmc+IDog Y2hvb3NlIHdoZXRoZXIgeW91IHdpc2ggdG8gZGlzcGxheSBhbGwgYXJ0aWNsZXMgb24gb25l IHBhZ2UgKGFuZCB1c2UgdGhlIGxpdmUgc2VhcmNoIHRvIGZpbHRlciB0aGVtKSBvciBjaG9v c2UgYSBwYWdpbmF0ZWQgdmlldyAoYW5kIHVzZSB0aGUgdHJhZGl0aW9uYWwgc2VhcmNoKS4g VGhlIHRyYWRpdGlvbmFsIHNlYXJjaCBtaWdodCBiZSB1c2VmdWwgaWYgeW91IGhhdmUgYSBs b3Qgb2YgYXJ0aWNsZXMgKG92ZXIgMTAwMCkgYmVjYXVzZSB0aGUgbGl2ZSBzZWFyY2ggbWln aHQgc2xvdyBkb3duIHNpZ25pZmljYW50bHkuIE5vdGUgdGhhdCB3aGVuIHlvdSBzZWFyY2gg Zm9yIHNvbWV0aGluZyBpbiBwYWdpbmF0ZWQgbW9kZSwgdGhlIHJlc3VsdHMgdGhlbXNlbHZl cyBhcmVuJiM4MjE3O3QgcGFnaW5hdGVkPC9saT4KCQk8bGk+PHN0cm9uZz5Tb3J0IGJ5PC9z dHJvbmc+IDogZGVmaW5lIHRoZSBzb3J0IG9yZGVyIG9mIHRoZSBhcnRpY2xlIGxpc3Q8L2xp PgoJCTxsaT48c3Ryb25nPkJveCBzaXplPC9zdHJvbmc+IDogc3BlY2lmeSB0aGUgPGNvZGU+ d2lkdGg8L2NvZGU+IGFuZCA8Y29kZT5oZWlnaHQ8L2NvZGU+IHZhbHVlcyBpbiBwaXhlbHMg b2YgZWFjaCBjZWxsIGluIHRoZSBncmlkLiBEZWZhdWx0IGlzIDxjb2RlPjE1MHg0MDwvY29k ZT48L2xpPgoJCTxsaT48c3Ryb25nPlRleHRpbGU8L3N0cm9uZz46IGNob29zZSB0aGUgaXRl bXMgdG8gd2hpY2ggeW91IHdpc2ggdG8gYXBwbHkgVGV4dGlsZSB3aGVuIHlvdSBFZGl0IGFu ZCBTYXZlIGEgZmVhdHVyZWQgYXJ0aWNsZS4gPHN0cm9uZz5Ob3RlIHRoaXMgb25seSBhZmZl Y3RzIGZlYXR1cmVkIGFydGljbGVzIHNhdmVkIGZyb20gdGhpcyBwb2ludCBmb3J3YXJkPC9z dHJvbmc+LiBUaHVzIGlmIHlvdSB3aXNoIHRvIGFwcGx5IGEgbmV3IFRleHRpbGUgc2V0dGlu ZyB0byBleGlzdGluZyBhcnRpY2xlcyB5b3UgbmVlZCB0byB2aXNpdCBlYWNoIG9uZSBpbiB0 dXJuIGJ5IGNsaWNraW5nIDxjb2RlPltFZGl0XTwvY29kZT4gYW5kIHRoZW4gPGVtPlNhdmU8 L2VtPi48L2xpPgoJPC9vbD4KCgk8cD5Zb3UgKGFzIGFkbWluaXN0cmF0b3IpIGNhbiBhbHNv IGFsdGVyIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHBsdWdpbiBieSBjcmVhdGluZyBzb21lIGhp ZGRlbiBwcmVmZXJlbmNlcyAodGhlIHNtZF9wcmVmYWxpemVyIHBsdWdpbiBjYW4gaGVscCBo ZXJlKS4gVGhlcmUgYXJlIHR3byBwcmVmcyB5b3UgbWF5IGRlZmluZTo8L3A+CgoJPG9sPgoJ CTxsaT48c3Ryb25nPnNtZF9mZWF0dXJlZF9wcml2czwvc3Ryb25nPiA6IGEgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgcHJpdiBsZXZlbCBudW1iZXJzIHRoYXQgY2FuIGFjY2VzcyB0aGUg PGVtPkZlYXR1cmVkIGFydGljbGVzPC9lbT4gdGFiLiBEZWZhdWx0OiA8Y29kZT4xLDI8L2Nv ZGU+PC9saT4KCQk8bGk+PHN0cm9uZz5zbWRfZmVhdHVyZWRfc2VjdGlvbl9saXN0PC9zdHJv bmc+OiBkZWZpbmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzZWN0aW9uIG5hbWVzLiBU aGVzZSB3aWxsIGJlIHRoZSBvbmx5IHNlY3Rpb25zIGZyb20gd2hpY2ggYXJ0aWNsZXMgYXJl IGFsbG93ZWQgdG8gYmUgZmVhdHVyZWQ8L2xpPgoJPC9vbD4KCgk8cD5JZiB1c2luZyBzbWRf cHJlZmFsaXplciB0byBjcmVhdGUgdGhlIHByZWZzLCBzZXQgdGhlIG5hbWUgYW5kIHZhbHVl IGFzIGFib3ZlIGFuZCB0aGVuIHNldCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcGFyYW1l dGVyczo8L3A+CgoJPHVsPgoJCTxsaT48c3Ryb25nPnR5cGU8L3N0cm9uZz4gOiBoaWRkZW48 L2xpPgoJCTxsaT48c3Ryb25nPmV2ZW50PC9zdHJvbmc+IDogc21kX2ZlYXR1cmVkPC9saT4K CQk8bGk+PHN0cm9uZz5pbnB1dCBjb250cm9sPC9zdHJvbmc+IDogdGV4dF9pbnB1dDwvbGk+ CgkJPGxpPjxzdHJvbmc+dXNlcjwvc3Ryb25nPiA6IC8gZW1wdHkgLzwvbGk+CgkJPGxpPjxz dHJvbmc+cG9zaXRpb248L3N0cm9uZz46IDA8L2xpPgoJPC91bD4KCgk8aDI+RGlzcGxheWlu ZyBmZWF0dXJlZCBhcnRpY2xlczwvaDI+CgoJPHA+T25jZSB5b3UgaGF2ZSBjaG9zZW4geW91 ciBmZWF0dXJlZCBhcnRpY2xlcywgeW91IG5lZWQgYSB3YXkgdG8gZGlzcGxheSB0aGVtOjwv cD4KCgk8aDM+PGNvZGU+Jmx0O3R4cDpzbWRfZmVhdHVyZWQgLyZndDs8L2NvZGU+PC9oMz4K Cgk8cD5BY3RzIGEgYml0IGxpa2UgdGhlIHN0YW5kYXJkIDxjb2RlPiZsdDt0eHA6YXJ0aWNs ZSAvJmd0OzwvY29kZT4gdGFnIHRvIGRpc3BsYXkgZmVhdHVyZWQgYXJ0aWNsZXMuIEF0dHJp YnV0ZXM6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxhYmVsPC9zcGFu PiA6IGRpc3BsYXkgZmVhdHVyZWQgYXJ0aWNsZXMgd2l0aCB0aGlzIGxhYmVsLiBTcGVjaWZ5 IDxjb2RlPmxhYmVsPSZxdW90OyZxdW90OzwvY29kZT4gdG8gZGlzcGxheSB1bmxhYmVsbGVk IGFydGljbGVzICh3aGljaCBhcmUgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gdGhlIHNhbWUgYXMg dW5mZWF0dXJlZCBhcnRpY2xlcykuIElmIHRoaXMgYXR0cmlidXRlIGlzIG9taXR0ZWQsIGFs bCBmZWF0dXJlZCBhcnRpY2xlcyAmIzgyMTI7IGlycmVzcGVjdGl2ZSBvZiBsYWJlbCAmIzgy MTI7IHdpbGwgYmUgZGlzcGxheWVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxh YmVsdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgyMTI7IHdpdGhvdXQgYnJhY2tl dHMgJiM4MjEyOyB0byBhcHBseSB0byB0aGUgbGFiZWwgYXR0cmlidXRlLiBJZiB0aGlzIGF0 dHJpYnV0ZSBpcyBzcGVjaWZpZWQgdGhlIGxhYmVsIGl0c2VsZiBpcyBkaXNwbGF5ZWQgYXQg dGhlIGhlYWQgb2YgeW91ciBmZWF0dXJlZCBhcnRpY2xlIGxpc3QuIElmIHlvdSB3aXNoIHRv IGRpc3BsYXkgdW5sYWJlbGxlZCBhcnRpY2xlcyB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSA8 Y29kZT51bmxhYmVsPC9jb2RlPiBhdHRyaWJ1dGUgb3IgeW91JiM4MjE3O2xsIHNlZSBubyBs YWJlbC4gTm90ZSB0aGF0IHRoaXMgdGFnIGRpZmZlcnMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gY29udmVudGlvbjogeW91IHdpbGwgPGVtPm9ubHk8L2VtPiBz ZWUgdGhlIGxhYmVsIGlmIHlvdSBzcGVjaWZ5IHRoZSA8Y29kZT5sYWJlbHRhZzwvY29kZT4u IFlvdSBjYW4gZGlzcGxheSB0aGUgbGFiZWwgaW5zaWRlIHlvdXIgYXJ0aWNsZXMgdXNpbmcg dGhlIDxjb2RlPiZsdDt0eHA6ZmVhdHVyZWRfaW5mbyAvJmd0OzwvY29kZT4gdGFnPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnVubGFiZWw8L3NwYW4+IDogd2hlbiB1c2luZyA8 Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2NvZGU+ICh0byBzaG93IHVubGFiZWxsZWQgYXJ0 aWNsZXMpIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgbGFiZWwgdG8gdXNlIGluc2lk ZSB0aGUgPGNvZGU+bGFiZWx0YWc8L2NvZGU+LiBEZWZhdWx0OiAmIzgyMjA7RmVhdHVyZWQm IzgyMjE7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRpbWU8L3NwYW4+IDogbGlt aXQgdGhlIGFydGljbGVzIHRvIHRob3NlIGluIHRoZSA8Y29kZT5wYXN0PC9jb2RlPiwgdGhl IDxjb2RlPmZ1dHVyZTwvY29kZT4gb3IgPGNvZGU+YW55PC9jb2RlPi4gRGVmYXVsdDogPGNv ZGU+cGFzdDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdHVzPC9z cGFuPiA6IG9ubHkgZGlzcGxheSBhcnRpY2xlcyBvZiB0aGUgZ2l2ZW4gc3RhdHVzIG51bWJl cihzKS4gRGVmYXVsdDogPGNvZGU+NCw1PC9jb2RlPiAoYS5rLmEuIGxpdmUgYW5kIHN0aWNr eSkuIE5vdGUgdGhhdCB0aGlzIGF0dHJpYnV0ZSBtYXkgYmUgaWdub3JlZCBpZiB5b3UgYXJl IHRyeWluZyB0byB2aWV3IGFueXRoaW5nIG90aGVyIGxpdmUgYW5kIHN0aWNreSBhcnRpY2xl cyAoc2luY2UgYXJ0aWNsZV9jdXN0b20gZG9lcyB0aGUgc2FtZSk8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiBvbmx5IGRpc3BsYXkgYXJ0aWNsZXMg ZnJvbSB0aGUgZ2l2ZW4gc2VjdGlvbihzKS4gSWYgdGhlIHNlY3Rpb24gbGlzdCBpcyByZXN0 cmljdGVkIHVzaW5nIHRoZSBwbHVnaW4gcHJlZmVyZW5jZXMsIHRoZSBzZWN0aW9ucyB1c2Vk IGhlcmUgbXVzdCBhbHNvIGJlIGluIHRoYXQgbGlzdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5oaXN0b3J5PC9zcGFuPiA6IGRldGVybWluZXMgd2hldGhlciB0byByZW1lbWJl ciBwcmV2aW91c2x5IHNlZW4gYXJ0aWNsZXMgYW5kIHRodXMgZXhjbHVkZSB0aGVtIGZyb20g ZnV0dXJlIHNtZF9mZWF0dXJlZCAvIHNtZF91bmZlYXR1cmVkIHRhZ3MuIElmIHlvdSBhcmUg dXNpbmcgdGhlIHNhbWUgZmVhdHVyZWQgdGFnIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1l IHBhZ2UgYW5kIHdhbnQgaXQgdG8gYWx3YXlzIG91dHB1dCB0aGUgc2FtZSBsaXN0LCBzZXQg dGhpcyBhdHRyaWJ1dGUgdG8gMC4gRGVmYXVsdDogMTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5mb3JtPC9zcGFuPiA6IHVzZSB0aGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IGZvcm0gdG8gZGlzcGxheSBlYWNoIGFydGljbGUsIGluc3RlYWQgb2YgdXNpbmcg dGhlIGNvbnRhaW5lciBjb250ZW50czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5s aW1pdDwvc3Bhbj4gOiBtYXhpbXVtIG51bWJlciBvZiBmZWF0dXJlZCBhcnRpY2xlcyB0byBk aXNwbGF5LiBEZWZhdWx0OiAxMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zb3J0 PC9zcGFuPiA6IG9yZGVyIHRoZSBmZWF0dXJlZCBhcnRpY2xlcyBieSA8Y29kZT5pZDwvY29k ZT4sIDxjb2RlPmxhYmVsPC9jb2RlPiwgPGNvZGU+VGl0bGU8L2NvZGU+LCA8Y29kZT5Qb3N0 ZWQ8L2NvZGU+LCBhbmQgc28gb24uIFRoZSBzYW1lIGxpc3QgYXZhaWxhYmxlIGZvciB0aGUg PGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPiB0YWcgYXJlIHVzYWJsZSBoZXJl LiBBZGQgPGNvZGU+YXNjPC9jb2RlPiBvciA8Y29kZT5kZXNjPC9jb2RlPiB0byB0aGUgYXR0 cmlidXRlIHRvIGFsdGVyIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNvcnQuIFlvdSBtYXkgYWxz byB1c2UgPGNvZGU+cmFuZCgpPC9jb2RlPiB0byBzb3J0IHRoZSBhcnRpY2xlcyByYW5kb21s eTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAo WClIVE1MIHRhZyAmIzgyMTI7IHdpdGhvdXQgYnJhY2tldHMgJiM4MjEyOyB0byB3cmFwIGFy b3VuZCB0aGUgbGlzdCBvZiBmZWF0dXJlZCBhcnRpY2xlczwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgJiM4MjEyOyB3aXRo b3V0IGJyYWNrZXRzICYjODIxMjsgb3IgdGV4dCB0byBwdXQgYmV0d2VlbiBlYWNoIGFydGlj bGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhl IHdyYXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aHRtbF9pZDwvc3Bhbj4g OiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5ET008L3NwYW4+IElEIHRvIGFwcGx5IHRvIHRoZSB3 cmFwdGFnPC9saT4KCTwvdWw+CgoJPHA+WW91IG1heSB1c2UgdGhlIHRhZyBhcyBhIGNvbnRh aW5lciBhbmQgYW55IHRhZ3MgeW91IHNwZWNpZnkgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gZWFj aCBmZWF0dXJlZCBhcnRpY2xlLiBZb3UgY2FuIHVzZSBzdGFuZGFyZCBhcnRpY2xlIHRhZ3Mg c3VjaCBhcyA8Y29kZT4mbHQ7dHhwOnRpdGxlIC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4 cDpleGNlcnB0IC8mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpwZXJtbGluayAvJmd0Ozwv Y29kZT4sIGV0YywgYWx0aG91Z2ggc29tZSBhcnRpY2xlcyBhcmUgbm90IGRpc3BsYXlhYmxl IGJ5IFRleHRwYXR0ZXJuIChlLmcuIGhpZGRlbiwgcGVuZGluZyBhbmQgZHJhZnQgYXJ0aWNs ZXMpLjwvcD4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5Ob3RlIHRoYXQgeW91IGNhbiYjODIx Nzt0IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCZndDs8L2NvZGU+IGluc2lkZSBh biBhcnRpY2xlIG9yIGFuIEFydGljbGUgRm9ybS4gRG9pbmcgc28gd2lsbCB0cmlnZ2VyIGEg d2FybmluZyBiZWNhdXNlIGl0JiM4MjE3O3MgdGhlIHNhbWUgYXMgcHV0dGluZyBhbm90aGVy IGFydGljbGUgdGFnIGluc2lkZSBhbiBhcnRpY2xlLiBVc2UgdGhlIHRhZyBvbmx5IGluIFBh Z2VzLCBvciBpbiBhIEZvcm0gdGhhdCBpcyBuZXZlciBkaXJlY3RseSB1c2VkIHRvIGRpc3Bs YXkgYXJ0aWNsZSBjb250ZW50LjwvcD4KCgk8cD5FYWNoIHRpbWUgeW91IHVzZSA8Y29kZT4m bHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29kZT4gaXQgbWFrZXMgYSBub3RlIG9mIHRo ZSBhcnRpY2xlcyBpdCBoYXMgZGlzcGxheWVkIGFuZCB3aWxsIG5vdCBkdXBsaWNhdGUgYXJ0 aWNsZXMgaW4gbGF0ZXIgdGFncy4gWW91IGNhbiB1c2UgPGNvZGU+Jmx0O3R4cDplbHNlIC8m Z3Q7PC9jb2RlPiBpbiB5b3VyIGZvcm0gLyBjb250YWluZXIgdG8gdGFrZSBhY3Rpb24gaWYg dGhlIGZlYXR1cmVkIGxpc3QgaXMgZW1wdHkuPC9wPgoKCTxoMz48Y29kZT4mbHQ7dHhwOnNt ZF9mZWF0dXJlZF9pbmZvIC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+QWxsb3dzIHlvdSB0byBk aXNwbGF5IHRoZSBsYWJlbCBvciB0aGUgZGVzY3JpcHRpb24gd2l0aGluIHlvdXIgPGNvZGU+ Jmx0O3R4cDpzbWRfZmVhdHVyZWQgLyZndDs8L2NvZGU+ICBmb3JtL2NvbnRhaW5lci48L3A+ CgoJPHA+SGFzIG9uZSBhdHRyaWJ1dGU6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPml0ZW08L3NwYW4+IDogdGhlIHRoaW5nIHlvdSB3YW50IHRvIGRpc3BsYXkuIENo b29zZSBmcm9tOgoJPHVsPgoJCTxsaT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+OiB0aGUgbGFi ZWw8L2xpPgoJCTxsaT48c3Ryb25nPnRpdGxlPC9zdHJvbmc+OiB0aGUgKHBvc3NpYmx5IFRl eHRpbGUtcHJvY2Vzc2VkKSB0aXRsZTwvbGk+CgkJPGxpPjxzdHJvbmc+ZGVzY3JpcHRpb248 L3N0cm9uZz46IHRoZSAocG9zc2libHkgVGV4dGlsZS1wcm9jZXNzZWQpIGRlc2NyaXB0aW9u PC9saT4KCTwvdWw+PC9saT4KCTwvdWw+CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21kX3VuZmVh dHVyZWQgLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5Vc2UgdGhpcyB0YWcgaWYgeW91IHdpc2gg dG8gc2hvdyB0aGUgJiM4MjE2O3JlbWFpbmluZyYjODIxNzsgYXJ0aWNsZXMgJiM4MjEyOyBp LmUuIG9uZXMgbm90IGFscmVhZHkgZGlzcGxheWVkIGJ5IGFueSBwcmVjZWRpbmcgPGNvZGU+ Jmx0O3R4cDpzbWRfZmVhdHVyZWQgLyZndDs8L2NvZGU+IHRhZ3MuIEl0IGFjdHMgdmVyeSBt dWNoIGxpa2UgdGhlIGJ1aWx0LWluIGFydGljbGVfY3VzdG9tIHRhZywgYW5kIHRha2VzIGFs bCB0aGUgc2FtZSBhdHRyaWJ1dGVzLiBUaHVzLCBieSBkZWZhdWx0LCBpdHMgY29udGV4dCBp cyAmIzgyMjA7YW55IGFydGljbGVzIGZyb20gYW55IHNlY3Rpb24gZGVmaW5lZCBpbiB0aGUg c21kX2ZlYXR1cmVkIHBsdWdpbiB0aGF0IGhhdmUgbm90IGJlZW4gZGlzcGxheWVkIGFscmVh ZHkmIzgyMjE7LiBZb3UgY2FuIHJlZHVjZSB0aGlzIGxpc3QgYnkgPGNvZGU+c2VjdGlvbjwv Y29kZT4sIDxjb2RlPnRpbWU8L2NvZGU+IG9yIDxjb2RlPnN0YXR1czwvY29kZT4uPC9wPgoK CTxwPlVubGlrZSBhcnRpY2xlX2N1c3RvbSwgPGNvZGU+Jmx0O3R4cDpzbWRfdW5mZWF0dXJl ZCAvJmd0OzwvY29kZT4gc3VwcG9ydHMgcGFnaW5hdGlvbiBhbmQgPGNvZGU+Jmx0O3R4cDpl bHNlIC8mZ3Q7PC9jb2RlPiAoZm9yIHdoZW4geW91ciB1bmZlYXR1cmVkIGxpc3QgcmV0dXJu cyBub3RoaW5nKS4gWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIDxjb2RlPmhpc3Rvcnk8L2Nv ZGU+IGF0dHJpYnV0ZSBhbmQgaXQgd29ya3MgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgaXQg ZG9lcyBmb3IgPGNvZGU+Jmx0O3R4cDpzbWRfZmVhdHVyZWQgLyZndDs8L2NvZGU+LiBUaHVz IGl0IGNhbiBiZSBhIHZlcnkgdXNlZnVsLCBwYWdlYWJsZSBkaXJlY3QgcmVwbGFjZW1lbnQg dGFnIGZvciBhcnRpY2xlX2N1c3RvbSBpZiB5b3UgdXNlIDxjb2RlPmhpc3Rvcnk9JnF1b3Q7 MCZxdW90OzwvY29kZT4uPC9wPgoKCTxwPk5vdGVzOjwvcD4KCgk8dWw+CgkJPGxpPnRvIHVz ZSBwYWdpbmF0aW9uLCByZW1vdmUgYW55IGFydGljbGUgdGFnIGFuZCBhZGQgdGhlIDxjb2Rl PnBhZ2VieTwvY29kZT4gYXR0cmlidXRlIChhbmQgb2YgY291cnNlIDxjb2RlPmxpbWl0PC9j b2RlPikgdG8gdGhlIHNtZF91bmZlYXR1cmVkIHRhZy4gTm90ZSB5b3UgbWF5IGdldCBhIHdh cm5pbmcgYWJvdXQgbm8gYXJ0aWNsZSB0YWcgb24gdGhlIHBhZ2UsIGJ1dCB5b3UgY2FuIGln bm9yZSBpdDwvbGk+CgkJPGxpPmlmIHlvdSB3aXNoIHRoZSA8Y29kZT5wYWdlYnk8L2NvZGU+ IGF0dHJpYnV0ZSB0byB0cmFjayBhbnkgPGNvZGU+bGltaXQ8L2NvZGU+IHlvdSBzZXQsIHNw ZWNpZnkgPGNvZGU+cGFnZWJ5PSZxdW90O2xpbWl0JnF1b3Q7PC9jb2RlPjwvbGk+CgkJPGxp PmlmIHlvdSBoYXZlIGFueSBvdGhlciBwYWdpbmcgaW4gZWZmZWN0IG9uIHRoZSBwYWdlLCB1 bmZlYXR1cmVkIHBhZ2luYXRpb24gd2lsbCBiZSBpZ25vcmVkPC9saT4KCTwvdWw+CgoJPGgz Pjxjb2RlPiZsdDt0eHA6c21kX2lmX2ZlYXR1cmVkJmd0OzwvY29kZT48L2gzPgoKCTxwPlRo aXMgdGFnIGFsbG93cyB5b3UgdG8gZGV0ZWN0IGlmIHRoZSBjdXJyZW50IChpbmRpdmlkdWFs KSBhcnRpY2xlIGlzIGZlYXR1cmVkIGFuZC9vciBoYXMgYSBwYXJ0aWN1bGFyIGxhYmVsLiBZ b3UgbWF5IGFsc28gdXNlIHRoaXMgb3V0c2lkZSBhbiBhcnRpY2xlIGNvbnRleHQgYnkgc3Vw cGx5aW5nIGEgbGlzdCBvZiBhcnRpY2xlIElEcy48L3A+CgoJPHA+SGFzIHR3byBhdHRyaWJ1 dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiBs aXN0IG9mIGFydGljbGUgSURzIG9mIHdoaWNoIHlvdSB3aXNoIHRvIGNoZWNrIHRoZSBmZWF0 dXJlZCBzdGF0dXMuIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGFydGlj bGUgKGlmIHVzZWQgaW5zaWRlIGEgPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2Rl PiBjb250YWluZXIvZm9ybSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFiZWw8 L3NwYW4+IDogbGlzdCBvZiBsYWJlbHMgdG8gY29tcGFyZSB0aGUgZ2l2ZW4gSUQocykgd2l0 aC4gU3BlY2lmeSA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIGNoZWNrIGZv ciB1bmxhYmVsbGVkIGFydGljbGVzLCBvciB1c2UgYW4gZW1wdHkgaXRlbSBpZiBzcGVjaWZ5 aW5nIGEgbGlzdCwgZS5nLiA8Y29kZT5sYWJlbD0mcXVvdDssIEZlYXR1cmVkLCBUZWFzZXIm cXVvdDs8L2NvZGU+LiBSZW1lbWJlciB0aGF0IGxhYmVscyBhcmUgY2FzZSBzZW5zaXRpdmU8 L2xpPgoJPC91bD4KCgk8cD5JZiB0aGUgYXJ0aWNsZSBtYXRjaGVzIG9uZSBvZiB0aGUgZ2l2 ZW4gbGFiZWxzIHRoZSBjb250YWluZWQgY29udGVudCB3aWxsIGJlIGV4ZWN1dGVkLiBJZiBu byBsYWJlbCBpcyBnaXZlbiB0aGUgYXJ0aWNsZShzKSB3aWxsIGJlIGNoZWNrZWQgaWYgdGhl eSBhcmUgZmVhdHVyZWQsIGlycmVzcGVjdGl2ZSBvZiBsYWJlbC48L3A+CgoJPGgyPkV4YW1w bGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxOiBDb21wbGV0ZSBkaXJlY3Rvcnkg b2YgZmVhdHVyZWQgYXJ0aWNsZXM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWx0YWc9JnF1b3Q7aDImcXVv dDsgbGltaXQ9JnF1b3Q7MjAmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2RsJnF1b3Q7IHNv cnQ9JnF1b3Q7bGFiZWwmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0Owog ICAgICAmbHQ7aDImZ3Q7Jmx0O3R4cDpzbWRfZmVhdHVyZWRfaW5mbyBpdGVtPSZxdW90O2xh YmVsJnF1b3Q7IC8mZ3Q7Jmx0Oy9oMiZndDsKICAgJmx0Oy90eHA6aWZfZGlmZmVyZW50Jmd0 OwogICAmbHQ7ZHQmZ3Q7CiAgICAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRs ZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7L2R0Jmd0OwogICAmbHQ7ZGQm Z3Q7CiAgICAgICZsdDt0eHA6ZXhjZXJwdCAvJmd0OwogICAmbHQ7L2RkJmd0OwombHQ7L3R4 cDpzbWRfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBs ZSAyOiBPbmUgZmVhdHVyZWQgYXJ0aWNsZSBhbmQgc2l4IHRlYXNlcnMgb24gdGhlIGhvbWUg cGFnZTwvaDM+CgoJPHA+U2VsZWN0IGFuIGFydGljbGUgYW5kIGxhYmVsIGl0IDxjb2RlPmZl YXR1cmU8L2NvZGU+LiBTZWxlY3Qgc2l4IG90aGVycyBhbmQgbGFiZWwgdGhlbSA8Y29kZT50 ZWFzZXJzPC9jb2RlPi4gQWRkIHNvbWUgZGVzY3JpcHRpb24gdGV4dCB0byB5b3VyIHRlYXNl ciBhcnRpY2xlcy48L3A+CgoJPHA+SW4geW91ciBkZWZhdWx0IFBhZ2UsIHB1dCB0aGlzOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2ZlYXR1cmVkIGxhYmVsPSZxdW90O2ZlYXR1cmUmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90 O2RpdiZxdW90OyBodG1sX2lkPSZxdW90O21haW5fZmVhdHVyZSZxdW90OyZndDsKICAgJmx0 O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxpbmsm Z3Q7CiAgICZsdDt0eHA6YXJ0aWNsZV9pbWFnZSBjbGFzcz0mcXVvdDtmZWF0X2ltYWdlJnF1 b3Q7IC8mZ3Q7CiAgICZsdDtwIGNsYXNzPSZxdW90O2xlYWRpbiZxdW90OyZndDsmbHQ7dHhw OmV4Y2VycHQgLyZndDsmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsKPC9j b2RlPjwvcHJlPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfZmVhdHVyZWQgbGFiZWw9JnF1b3Q7dGVhc2VycyZxdW90OwogICAgIHdyYXB0 YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgaHRtbF9pZD0mcXVvdDt0 ZWFzZXJfYmxvY2smcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0 aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7cCBjbGFzcz0mcXVvdDts ZWFkaW4mcXVvdDsmZ3Q7Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7Jmx0Oy9wJmd0OwombHQ7L3R4 cDpzbWRfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JZiB5b3Ugd2FudGVkIHRv IGhhdmUgc29tZSBvdGhlciBhcnRpY2xlcyBiZW5lYXRoIHRob3NlLCBidXQgZGlkbiYjODIx Nzt0IHdhbnQgYW55IGR1cGxpY2F0ZXMgdG8gYXBwZWFyIHlvdSBjb3VsZCB1c2U6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfdW5m ZWF0dXJlZCBmb3JtPSZxdW90O215X2xpc3QmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxoMyBpZD0iZWczIj5FeGFtcGxlIDM6IFBlci1zZWN0aW9uIGxhbmRpbmcgcGFnZSBmZWF0 dXJlZCBhcnRpY2xlczwvaDM+CgoJPHA+SWYgeW91IGhhZCBhIHpvbyBzaXRlIHdpdGggYSBz ZWN0aW9uIGZvciBwcmltYXRlcywgYSBzZWN0aW9uIGZvciBtYW1tYWxzIGFuZCBhIHNlY3Rp b24gZm9yIHJlcHRpbGVzLCB3aGVuIHlvdSBzZXQgdXAgeW91ciBmZWF0dXJlZCBhcnRpY2xl IGxpc3QgZGVmaW5lIHRoZWlyIG5hbWVzIGxpa2UgdGhpczo8L3A+CgoJPHVsPgoJCTxsaT5G ZWF0dXJlZCBwcmltYXRlczwvbGk+CgkJPGxpPkZlYXR1cmVkIG1hbW1hbHM8L2xpPgoJCTxs aT5GZWF0dXJlZCByZXB0aWxlczwvbGk+Cgk8L3VsPgoKCTxwPk9uIHlvdXIgc2VjdGlvbiBs YW5kaW5nIHBhZ2UgdGVtcGxhdGUgeW91IGNhbiB0aGVuIGRvIHRoaXMgdG8gZGlzcGxheSBm b3VyIGFydGljbGVzIGZyb20gdGhlIHJlbGV2YW50IChjdXJyZW50KSBzZWN0aW9uOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtoMiZndDtMb29r IHdobyYjMzk7cyBoZXJlOiZsdDsvaDImZ3Q7CiZsdDt0eHA6c21kX2ZlYXR1cmVkIGxhYmVs PSYjMzk7RmVhdHVyZWQgJmx0O3R4cDpzZWN0aW9uIC8mZ3Q7JiMzOTsKICAgICBzZWN0aW9u PSYjMzk7Jmx0O3R4cDpzZWN0aW9uIC8mZ3Q7JiMzOTsgbGltaXQ9JnF1b3Q7NCZxdW90Owog ICAgIHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7IGh0bWxfaWQ9JnF1b3Q7ZmVhdF9ibG9jayZx dW90OyZndDsKICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtwaW1wZWRfYXJ0aWNsZSZxdW90OyZn dDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90 eHA6cGVybWxpbmsmZ3Q7CiAgICAgICZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gaXRlbT0m cXVvdDtkZXNjcmlwdGlvbiZxdW90OyAvJmd0OwogICAmbHQ7L2RpdiZndDsKJmx0Oy90eHA6 c21kX2ZlYXR1cmVkJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUg NDogQ29uZGl0aW9uYWwgY2hlY2sgZm9yIGZlYXR1cmVkLW5lc3M8L2gzPgoKCTxwPklmIGEg c2l0ZSB2aXNpdG9yIGhhcyBuYXZpZ2F0ZWQgYXdheSBmcm9tIHlvdXIgZnJvbnQgcGFnZSBh bmQgaXMgdmlld2luZyBhbiBhcnRpY2xlLCB5b3UgbWF5IHdpc2ggdG8gaGlnaGxpZ2h0IHRo ZSBmYWN0IHRoZSBjdXJyZW50IGFydGljbGUgaXMgYSBmZWF0dXJlZCBwcm9kdWN0LiBTbywg c29tZXdoZXJlIGluc2lkZSB5b3UgYXJ0aWNsZSBmb3JtIGFkZDo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZl9mZWF0dXJlZCZn dDsKICAgJmx0O3AgY2xhc3M9JnF1b3Q7aGlsaWdodCZxdW90OyZndDtGRUFUVVJFRCBQUk9E VUNUJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5PciBpZiB5b3Ugd2FudGVkIHRvIG9ubHkgaGlnaGxpZ2h0IHRoZSBhcnRpY2xl IGlmIGl0IHdhcyBhIGZlYXR1cmVkIG9yIG9uIHNwZWNpYWwgb2ZmZXI6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWZfZmVhdHVy ZWQgbGFiZWw9JnF1b3Q7RmVhdHVyZWQsIFNwZWNpYWwmcXVvdDsmZ3Q7CiAgICZsdDtwIGNs YXNzPSZxdW90O2hpbGlnaHQmcXVvdDsmZ3Q7QXMgZmVhdHVyZWQgb24gdGhlIGZyb250IHBh Z2UhJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3By ZT4KCgk8aDIgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxpPjE4 IEp1biAxMCB8IDAuMTAgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4wNyBTZXAgMTAg fCAwLjIwIHwgUmVuYW1lZCBpZCBjb2x1bW4gdG8gZmVhdF9pZCA7IGZpeGVkIDxjb2RlPmxh YmVsPC9jb2RlPiBhdHRyaWJ1dGUgYnVnIChib3RoIHRoYW5rcyBwaWVtYW4pIDsgbGFiZWwg c2VhcmNoZXMgYXJlIG5vdyBleGFjdCBtYXRjaGVzIDsgYWRkZWQgcHJlZnMgYW5kIHBhZ2lu YXRpb24gc3VwcG9ydCBmb3IgYWRtaW4gc2lkZSA7IGFkZGVkIDxjb2RlPiZsdDt0eHA6c21k X2lmX2ZlYXR1cmVkJmd0OzwvY29kZT4gOyBhZGRlZCBsYWJlbCBzZWxlY3Rpb24gZnJvbSBk cm9wZG93biBkdXJpbmcgZWRpdGluZyAodGhhbmtzIHR5ZSk8L2xpPgoJCTxsaT4xMyBTZXAg MTAgfCAwLjIxIHwgQWRkZWQgJiM4MjE2O3RpdGxlJiM4MjE3OyBhbmQgVGV4dGlsZSBvcHRp b25zIChib3RoIHRoYW5rcyBiZyk8L2xpPgoJCTxsaT4xMyBTZXAgMTAgfCAwLjIyIHwgRml4 ZWQgbWlzc2luZyBkb1NsYXNoKCkgb24gdW50ZXh0aWxlZCBodG1sIGNvbnRlbnQgKHRoYW5r cyBiZyk8L2xpPgoJCTxsaT4wNSBPY3QgMTAgfCAwLjMwIHwgVXNlIDxjb2RlPmFydGljbGVf Y3VzdG9tKCk8L2NvZGU+IG5vdCA8Y29kZT5hcnRpY2xlKCk8L2NvZGU+IHRvIHNpZGVzdGVw IGluZGl2aWR1YWwgYXJ0aWNsZSBjb250ZXh0ICh0aGFua3Mgam9obnN0ZXBoZW5zKSA7IHBh c3MgPGNvZGU+dGltZTwvY29kZT4gYW5kIDxjb2RlPmxpbWl0PC9jb2RlPiB0byA8Y29kZT5h cnRpY2xlX2N1c3RvbSgpPC9jb2RlPiA7IDxjb2RlPmxpbWl0PC9jb2RlPiBoYXMgZGVmYXVs dCBvZiAxMDwvbGk+CgkJPGxpPjExIE9jdCAxMCB8IDAuMzEgfCBCZXR0ZXIgdGhlbWUgaW50 ZWdyYXRpb24gKHRoYW5rcyB0aGVib21ic2l0ZSk8L2xpPgoJCTxsaT4wMSBOb3YgMTAgfCAw LjMyIHwgQWRkZWQgb2xkZXIvbmV3ZXIgcGFnaW5hdGlvbiBzdXBwb3J0IHRvIDxjb2RlPiZs dDt0eHA6c21kX3VuZmVhdHVyZWQgLyZndDs8L2NvZGU+IGFuZCBwZXJtaXR0ZWQgPGNvZGU+ c2VjdGlvbjwvY29kZT4sIDxjb2RlPnN0YXR1czwvY29kZT4gYW5kIDxjb2RlPnRpbWU8L2Nv ZGU+IGZpbHRlcmluZyA7IGZpeGVkIHNvbWUgc3R5bGluZyBpc3N1ZXM8L2xpPgoJCTxsaT4x NyBKYW4gMTEgfCAwLjMzIHwgQWRkZWQgPGNvZGU+aGlzdG9yeTwvY29kZT4gYXR0cmlidXRl IDsgZml4ZWQgc21kX3VuZmVhdHVyZWQgdG8gd29yayBjb3JyZWN0bHkgaW4gaW5kaXZpZHVh bCBhcnRpY2xlIGNvbnRleHQgYWZ0ZXIgdGhlIHYwLjMyIGJsb29wZXIgKHRoYW5rcyBqb2hu c3RlcGhlbnMpIDsgZml4ZWQgc21kX3VuZmVhdHVyZWQgYnVnIHRvIHN0b3AgdHhwOmFydGlj bGUmIzgyMTc7cyBkZWZhdWx0IG91dHB1dCBpZiB1bmZlYXR1cmVkIGxpc3QgZW1wdHk8L2xp PgoJCTxsaT4xNyBKYW4gMTEgfCAwLjM0IHwgQWRkZWQgdHhwOmVsc2Ugc3VwcG9ydCB0byBm ZWF0dXJlZCAvIHVuZmVhdHVyZWQgdGFnczwvbGk+Cgk8L3VsPgoKPC9kaXY+CjwhLS0gKioq IEJFR0lOIFBMVUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21k X2hlbHAgeyBsaW5lLWhlaWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdo dDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3Nw YWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBjb2xvcjojMzMzOyB9CiNzbWRfaGVs cCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAj OTk5OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBw eDsgfQojc21kX2hlbHAgaDEgeyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1h cmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1i b3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgZm9udDogMTdweCBH ZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGZvbnQ6IGJvbGQgMTJweCBB cmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAyMHB4IDAg MDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfQojc21kX2hlbHAgaDQgeyBmb250OiBi b2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdp bjogMTBweCAwIDA7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5h dG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5k OiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHsgd2lk dGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtOyB9CiNzbWRf aGVscCB0ZCwgI3NtZF9oZWxwIHRoIHsgYm9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5n Oi41ZW0gMDsgfQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNz bWRfaGVscCAuaW1wb3J0YW50IHsgY29sb3I6cmVkOyB9CiNzbWRfaGVscCBsaSB7IG1hcmdp bjo1cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1 cHg7IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoiO3M6Mzoi bWQ1IjtzOjMyOiJiY2FiOWEwNWE5MGQ1ODAyY2M4ZDIwN2NmNTZmOTI4YyI7fQ==