# Name: smd_where_used v0.17 # Type: Admin/Client side plugin # Find which forms/pages/articles/plugins/text have been used where in your design # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTQ6InNtZF93aGVyZV91c2VkIjtzOjY6ImF1dGhvciI7czox MToiU3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjE3IjtzOjExOiJkZXNjcmlwdGlvbiI7 czo4MDoiRmluZCB3aGljaCBmb3Jtcy9wYWdlcy9hcnRpY2xlcy9wbHVnaW5zL3RleHQgaGF2 ZSBiZWVuIHVzZWQgd2hlcmUgaW4geW91ciBkZXNpZ24iO3M6NDoiY29kZSI7czoxMDc2NDoi Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgew0KCWFkZF9wcml2 cygnc21kX3d1JywnMSwyJyk7DQoNCgkvLyBFeHRlbnNpb25zIHRhYg0KCXJlZ2lzdGVyX3Rh YignZXh0ZW5zaW9ucycsICdzbWRfd3UnLCBzbWRfd3VfZ1R4dCgnc21kX3d1JykpOw0KCXJl Z2lzdGVyX2NhbGxiYWNrKCdzbWRfd3UnLCAnc21kX3d1Jyk7DQp9DQoNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CmZ1bmN0aW9uIHNtZF93dSgkZXZlbnQsICRzdGVwKSB7DQoJaWYoISRzdGVwIG9yICFpbl9h cnJheSgkc3RlcCwgYXJyYXkoDQoJCQknc21kX3d1X3NlYXJjaCcsDQoJCSkpKSB7DQoJCXNt ZF93dV9zaG93Zm9ybSgnJyk7DQoJfSBlbHNlICRzdGVwKCk7DQp9DQoNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CmZ1bmN0aW9uIHNtZF93dV9zaG93Zm9ybSgkbWVzc2FnZSwgJHRlcm09JycsICRzZWw9YXJy YXkoKSwgJGluY2w9MCwgJHdob2xlPTAsICRtb2RlPTAsICRwbHVndHlwZT0wKSB7DQoJcGFn ZXRvcChzbWRfd3VfZ1R4dCgnc21kX3d1JyksJG1lc3NhZ2UpOw0KCSRidG5TZWFyY2ggPSBm SW5wdXQoJ3N1Ym1pdCcsICdzbWRfd3Vfc2VhcmNoJywgZ1R4dCgnc2VhcmNoJyksICdzbWFs bGVyYm94Jykuc0lucHV0KCdzbWRfd3Vfc2VhcmNoJykuaElucHV0KCdwbHVndHlwZScsICgo JHBsdWd0eXBlPT0xKSA/IDAgOiAxKSk7DQoJJGJ0blN0eWxlID0gJyBzdHlsZT0iYm9yZGVy OjA7aGVpZ2h0OjI1cHgiJzsNCgkkcGxhY2UgPSBhcnJheSgnc2VjdGlvbnMnLCdwYWdlcycs J2Zvcm1zJywnYXJ0aWNsZXMnKTsNCgkkc2VsID0gKGVtcHR5KCRzZWwpKSA/ICRwbGFjZSA6 ICRzZWw7DQoNCgllY2hvICc8Zm9ybSBtZXRob2Q9InBvc3QiIG5hbWU9InNtZF93dV9mb3Jt Ij4nOw0KCWVjaG8gc3RhcnRUYWJsZSgnbGlzdCcpOw0KCWVjaG8gdHIoZkxhYmVsQ2VsbChz bWRfd3VfZ1R4dCgnc2VhcmNoX2xibCcpKSAuIHRkY3MoZklucHV0KCd0ZXh0JywgJ3NlYXJj aF9mb3InLCBzdHJpcHNsYXNoZXMoJHRlcm0pLCAnJywgJycsICcnLCAzMCksIDQpIC4gdGRh KCRidG5TZWFyY2gsICRidG5TdHlsZSkpOw0KCWVjaG8gdHIoZkxhYmVsQ2VsbChzbWRfd3Vf Z1R4dCgnZmlsdGVyJykpLnRkY3MocmFkaW8oJ21ldGgnLDAsKCgkaW5jbD09MCk/MTowKSku c21kX3d1X2dUeHQoJ2luY2x1c2lvbicpLiIgIiAuIHJhZGlvKCdtZXRoJywxLCgoJGluY2w9 PTEpPzE6MCkpLnNtZF93dV9nVHh0KCdleGNsdXNpb24nKS4gIiB8ICIgLiBzbWRfd3VfZ1R4 dCgnd2hvbGVfd29yZCcpLmNoZWNrYm94KCd3aG9sZScsIDEsICgoJHdob2xlPT0xKT8xOjAp KSwgNCkpOw0KCSRvdXQgPSAnJzsNCglmb3JlYWNoICgkcGxhY2UgYXMgJGhlcmUpIHsNCgkJ JG91dCAuPSBmTGFiZWxDZWxsKGdUeHQoJGhlcmUpIC4gY2hlY2tib3goJ3BsYWNlc1tdJywg JGhlcmUsIGluX2FycmF5KCRoZXJlLCRzZWwpKSk7DQoJfQ0KCWVjaG8gdHIoZkxhYmVsQ2Vs bChzbWRfd3VfZ1R4dCgnc2VhcmNoX3doZXJlX2xibCcpKSAuICRvdXQpOw0KCWVjaG8gZW5k VGFibGUoKTsNCgllY2hvICc8L2Zvcm0+JzsNCn0NCg0KDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBzbWRfd3Vfc2VhcmNoKCkgew0KCWV4dHJhY3QoZG9TbGFzaChncHNhKGFycmF5KCdzZWFy Y2hfZm9yJykpKSk7DQoJJHdob2xlID0gZ3BzKCd3aG9sZScpOw0KCSRtZXRoID0gZ3BzKCdt ZXRoJyk7IC8vIDAgPSBpbmNsdWRlLCAxID0gZXhjbHVkZQ0KCSRwbHVndHlwZSA9IGdwcygn cGx1Z3R5cGUnKTsgLy8gMCA9IGNsaWVudCwgMSA9IDArYWRtaW4sIDIgPSAxK2xpYnJhcnkN CgkkcGx1Z3R5cGUgPSAoaXNfbnVtZXJpYygkcGx1Z3R5cGUpICYmICRwbHVndHlwZSA8IDMp ID8gJHBsdWd0eXBlIDogMDsNCgkkam9pbm1lID0gKCRtZXRoID09IDApID8gIiBPUiAiIDog IiBBTkQgIjsNCgkkcGxhY2VzID0gZ3BzKCdwbGFjZXMnKTsNCgkkcGxhY2VzID0gaXNfYXJy YXkoJHBsYWNlcykgPyAkcGxhY2VzIDogYXJyYXkoKTsNCgkkbW9kZSA9ICgkc2VhcmNoX2Zv cikgPyAwIDogMTsNCglzbWRfd3Vfc2hvd2Zvcm0oJycsICRzZWFyY2hfZm9yLCAkcGxhY2Vz LCAkbWV0aCwgJHdob2xlLCAkbW9kZSwgJHBsdWd0eXBlKTsNCg0KCS8vIEVudHJpZXMgaW4g dGhlIHBsYWNlVGFibGUgYXJyYXkgYXJlOg0KCS8vICAwOiBUYWJsZSB0byBzZWFyY2gNCgkv LyAgMTogQ29sdW1uIHRvIHNlYXJjaA0KCS8vICAyOiBDb2x1bW4gdG8gcmV0dXJuDQoJLy8g IDM6IEhlYWRpbmcgdG8gZGlzcGxheSBpZiByZXN1bHRzIGZvdW5kDQoJLy8gIDQ6IEV2ZW50 IG9mIGRlc3RpbmF0aW9uIFVSTA0KCS8vICA1OiBTdGVwIG9mIGRlc3RpbmF0aW9uIFVSTA0K CS8vICA2OiBBZGRpdGlvbmFsIFVSTCB2YXINCgkvLyAgNzogQWRkaXRpb25hbCBVUkwgdmFy IHJlcGxhY2VtZW50ICh1c2VkIGluIHN0cnRyKQ0KCSRwbGFjZVRhYmxlID0gYXJyYXkoDQoJ CSdwYWdlcycgPT4gYXJyYXkoJ3R4cF9wYWdlJywgJ3VzZXJfaHRtbCcsICduYW1lJywgZ1R4 dCgncGFnZXMnKSwgJ3BhZ2UnLCAnJywgJ25hbWUnLCAne25hbWV9JyksDQoJCSdmb3Jtcycg PT4gYXJyYXkoJ3R4cF9mb3JtJywgJ2Zvcm0nLCAnbmFtZScsIGdUeHQoJ2Zvcm1zJyksICdm b3JtJywgJ2Zvcm1fZWRpdCcsICduYW1lJywgJ3tuYW1lfScpLA0KCQknYXJ0aWNsZXMnID0+ IGFycmF5KCd0ZXh0cGF0dGVybicsICdCb2R5LEV4Y2VycHQsb3ZlcnJpZGVfZm9ybSxzZWN0 aW9uLFRpdGxlLGtleXdvcmRzJywgJ0lELHRpdGxlJywgZ1R4dCgnYXJ0aWNsZXMnKSwgJ2Fy dGljbGUnLCAnZWRpdCcsICdJRCcsICd7SUR9JyksDQoJCSdzZWN0aW9ucycgPT4gYXJyYXko J3R4cF9zZWN0aW9uJywgJ3BhZ2UsY3NzJywgJ25hbWUnLCBnVHh0KCdzZWN0aW9ucycpLCAn c2VjdGlvbicsICcnLCAnIycsICdzZWN0aW9uLXtuYW1lfScpLA0KCSk7DQoNCgkkcnMgPSBh cnJheSgpOw0KCWVjaG8gbi4nPGhyIHdpZHRoPSI1MCUiIC8+JzsNCgllY2hvIHN0YXJ0VGFi bGUoJ2xpc3QnKTsNCgkkY29sSGVhZCA9IGFycmF5KCk7DQoJJGNvbEJvZHkgPSBhcnJheSgp Ow0KDQoJaWYgKCRzZWFyY2hfZm9yKSB7DQoJCWVjaG8gdHIodGRjcyh0YWcoZ1R4dCgnc2Vh cmNoX3Jlc3VsdHMnKSwgJ2gyJyksIDQpKTsNCgkJZm9yZWFjaCAoJHBsYWNlcyBhcyAkcGxh Y2UpIHsNCgkJCSRjcm93ID0gJHBsYWNlVGFibGVbJHBsYWNlXTsNCgkJCSR3aGVyZSA9IGFy cmF5KCk7DQoJCQkkd2l0ZW1zID0gZG9fbGlzdCgkY3Jvd1sxXSk7DQoJCQkkbGlzdCA9IGRv X2xpc3QoJGNyb3dbMl0pOw0KDQoJCQlmb3JlYWNoICgkd2l0ZW1zIGFzICRpdGVtKSB7DQoJ CQkJJHdoZXJlW10gPSAkaXRlbSAuICgoJG1ldGg9PTEpID8gJyBOT1QnIDogJycpIC4gKCgk d2hvbGU9PTEpID8gJyBSRUdFWFAgXCdbWzo8Ol1dJy4kc2VhcmNoX2Zvci4nW1s6PjpdXVwn JyA6ICIgTElLRSAnJSRzZWFyY2hfZm9yJSciKTsNCgkJCX0NCgkJCSRycyA9IHNhZmVfcm93 cygkY3Jvd1syXSwgJGNyb3dbMF0sICcoJy5qb2luKCRqb2lubWUsICR3aGVyZSkuJykgT1JE RVIgQlkgJy4kbGlzdFswXSk7DQoJCQkkY29sSGVhZFtdID0gdGQoc3Ryb25nKCRjcm93WzNd KSk7DQoJCQlpZiAoJHJzKSB7DQoJCQkJJG91dCA9ICc8dWw+JzsNCgkJCQlmb3JlYWNoICgk cnMgYXMgJHJvdykgew0KCQkJCQkkaGxpbmsgPSAnJzsNCgkJCQkJJHZhcnMgPSAnJzsNCgkJ CQkJZm9yZWFjaCAoJGxpc3QgYXMgJGNvbCkgew0KCQkJCQkJJGZyb20gPSAneycuJGNvbC4n fSc7DQoJCQkJCQlpZiAoc3RycG9zKCRjcm93WzddLCAkZnJvbSkgIT09IGZhbHNlKSB7DQoJ CQkJCQkJaWYgKCRjcm93WzZdID09ICIjIikgew0KCQkJCQkJCQkkdmFycyA9IGpvaW5fcXMo YXJyYXkoImV2ZW50IiA9PiAkY3Jvd1s0XSwgInN0ZXAiID0+ICRjcm93WzVdKSkuJGNyb3db Nl0uc3RydHIoJGNyb3dbN10sIGFycmF5KCRmcm9tID0+ICRyb3dbJGNvbF0pKTsNCgkJCQkJ CQl9IGVsc2Ugew0KCQkJCQkJCQkkdmFycyA9IGpvaW5fcXMoYXJyYXkoImV2ZW50IiA9PiAk Y3Jvd1s0XSwgInN0ZXAiID0+ICRjcm93WzVdLCAkY3Jvd1s2XSA9PiBzdHJ0cigkY3Jvd1s3 XSwgYXJyYXkoJGZyb20gPT4gJHJvd1skY29sXSkpKSk7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0K CQkJCQkJJGhsaW5rIC49ICRyb3dbJGNvbF0uIiAiOw0KCQkJCQl9DQoJCQkJCSRvdXQgLj0g KCRobGluaykgPyAnPGxpPicgLiAoKCR2YXJzKSA/ICc8YSBocmVmPSJpbmRleC5waHAnLiR2 YXJzLiciPicuJGhsaW5rLic8L2E+ICcgOiAkaGxpbmspIC4gJzwvbGk+JzogJyc7DQoJCQkJ fQ0KCQkJCSRvdXQgLj0gJzwvdWw+JzsNCgkJCQkkY29sQm9keVtdID0gdGQoJG91dCk7DQoJ CQl9IGVsc2Ugew0KCQkJCSRjb2xCb2R5W10gPSB0ZChnVHh0KCdub19yZXN1bHRzX2ZvdW5k JykpOw0KCQkJfQ0KCQl9DQoJCWVjaG8gdHIoam9pbigiICIsICRjb2xIZWFkKSk7DQoJCWVj aG8gdHIoam9pbigiICIsICRjb2xCb2R5KSk7DQoJfSBlbHNlIHsNCgkJLy8gTm8gc2VhcmNo IGNyaXRlcmlhLCBzbyBzaG93IG9ycGhhbnMNCgkJZWNobyB0cih0ZGNzKHRhZyhzbWRfd3Vf Z1R4dCgnb3JwaGFuX3Jlc3VsdHMnKSwgJ2gyJyksIDUpKTsNCg0KCQkvLyBSZXByb2dyYW0g dGhlIHBsYWNlcy9wbGFjZVRhYmxlDQoJCSRhcnRrZXkgPSBhcnJheV9zZWFyY2goJ2FydGlj bGVzJywgJHBsYWNlcyk7DQoJCWlmICgkYXJ0a2V5ICE9PSBmYWxzZSkgew0KCQkJdW5zZXQo JHBsYWNlc1skYXJ0a2V5XSk7DQoJCX0NCg0KCQkvLyBwYWdlcy9mb3Jtcy9zZWN0aW9ucyB0 byBpZ25vcmUgYmVjYXVzZSB0aGV5IGFyZSBzdGF0aWMgYW5kIGNhbm5vdCBiZSBkZWxldGVk DQoJCSRlc3NlbnRpYWxzID0gYXJyYXkoDQoJCQknc2VjdGlvbnMnID0+IGFycmF5KCdkZWZh dWx0JyksDQoJCQkncGFnZXMnID0+IGFycmF5KCdlcnJvcl9kZWZhdWx0JyksDQoJCQknZm9y bXMnID0+IGFycmF5KCdjb21tZW50cycsJ2NvbW1lbnRzX2Rpc3BsYXknLCdjb21tZW50X2Zv cm0nLCdkZWZhdWx0JywnTGlua3MnLCdmaWxlcycpLCAvLyBjb3BpZWQgZnJvbSB0eHBfZm9y bXMNCgkJKTsNCg0KCQkkcGxhY2VzW10gPSAncGx1Z2lucyc7DQoJCSRwbGFjZXNbXSA9ICdz dHlsZXNoZWV0cyc7DQoNCgkJJHBsYWNlVGFibGVbJ3BsdWdpbnMnXSA9IGFycmF5KCd0eHBf cGx1Z2luJywgJ25hbWUnLCAnbmFtZScsIGdUeHQoJ3BsdWdpbnMnKSwgJ3BsdWdpbicsICcn LCAnIycsICd7bmFtZX0nKTsNCgkJJHBsYWNlVGFibGVbJ3N0eWxlc2hlZXRzJ10gPSBhcnJh eSgndHhwX2NzcycsICduYW1lJywgJ25hbWUnLCBzbWRfd3VfZ1R4dCgnc3R5bGVzaGVldHMn KSwgJ2NzcycsICcnLCAnbmFtZScsICd7bmFtZX0nKTsNCg0KCQkkcGxhY2VUYWJsZVsnZm9y bXMnXVswXSA9ICJTRUxFQ1QgdGYubmFtZSBGUk9NICIgLnNhZmVfcGZ4KCd0eHBfZm9ybScp LiAiIEFTIHRmIFdIRVJFIHRmLm5hbWUgTk9UIElOICgiIC5kb1F1b3RlKGltcGxvZGUoIics JyIsJGVzc2VudGlhbHNbJ2Zvcm1zJ10pKS4gIikgT1JERVIgQlkgdGYubmFtZSI7IC8vIFdv dWxkIGJlIG5pY2UgdG8gZXhjbHVkZSBmb3JtcyB0aGF0IHJlZmVyZW5jZSBmb3JtcyBoZXJl IGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggdGhlbSBsYXRlcg0KCQkkcGxhY2VUYWJs ZVsncGFnZXMnXVswXSA9ICJTRUxFQ1QgdHAubmFtZSBGUk9NICIgLnNhZmVfcGZ4KCd0eHBf c2VjdGlvbicpLiAiIEFTIHRzIFJJR0hUIEpPSU4gIiAuc2FmZV9wZngoJ3R4cF9wYWdlJyku ICIgQVMgdHAgT04gdHMucGFnZSA9IHRwLm5hbWUgV0hFUkUgdHMucGFnZSBJUyBOVUxMIEFO RCB0cC5uYW1lIE5PVCBJTiAoIiAuZG9RdW90ZShpbXBsb2RlKCInLCciLCRlc3NlbnRpYWxz WydwYWdlcyddKSkuICIpIE9SREVSIEJZIHRwLm5hbWUiOw0KCQkkcGxhY2VUYWJsZVsncGx1 Z2lucyddWzBdID0gIlNFTEVDVCB0Zy5uYW1lLCB0Zy5jb2RlIEZST00gIiAuc2FmZV9wZngo J3R4cF9wbHVnaW4nKS4gIiBBUyB0ZyBXSEVSRSB0eXBlIDwgIiAuKCRwbHVndHlwZSsxKS4g IiBBTkQgdGcubmFtZSAhPSAnc21kX3doZXJlX3VzZWQnIE9SREVSIEJZIHRnLm5hbWUiOw0K CQkkcGxhY2VUYWJsZVsnc2VjdGlvbnMnXVswXSA9ICJTRUxFQ1QgdHMubmFtZSBGUk9NICIg LnNhZmVfcGZ4KCd0eHBfc2VjdGlvbicpLiAiIEFTIHRzIExFRlQgSk9JTiAiIC5zYWZlX3Bm eCgndGV4dHBhdHRlcm4nKS4gIiBBUyB0eHAgT04gdHMubmFtZSA9IHR4cC5zZWN0aW9uIFdI RVJFIElEIElTIE5VTEwgQU5EIHRzLm5hbWUgTk9UIElOICgiIC5kb1F1b3RlKGltcGxvZGUo IicsJyIsJGVzc2VudGlhbHNbJ3NlY3Rpb25zJ10pKS4gIikgT1JERVIgQlkgdHMubmFtZSI7 DQoJCSRwbGFjZVRhYmxlWydzdHlsZXNoZWV0cyddWzBdID0gIlNFTEVDVCB0Yy5uYW1lIEZS T00gIiAuc2FmZV9wZngoJ3R4cF9zZWN0aW9uJykuICIgQVMgdHMgUklHSFQgSk9JTiAiIC5z YWZlX3BmeCgndHhwX2NzcycpLiAiIEFTIHRjIE9OIHRzLmNzcyA9IHRjLm5hbWUgV0hFUkUg dHMucGFnZSBJUyBOVUxMIE9SREVSIEJZIHRjLm5hbWUiOw0KDQoJCS8vIEZvciAiYXdrd2Fy ZCIgcXVlcmllcyB0aGF0IGNhbid0IGJlIGRvbmUgaW4gb25lIHNob3QsIHRoZXJlIGFyZSB0 aHJlZSB0aGluZ3MgcmVxdWlyZWQgcGVyICRwbGFjZToNCgkJLy8gIDE6IHR4cCB0YWJsZSBu YW1lDQoJCS8vICAyOiBsaXN0IG9mIGNvbHVtbnMgdG8gY29tcGFyZQ0KCQkvLyAgMzogbWV0 aG9kIG9mIGNvbXBhcmlzb24gcGVyIGNvbHVtbiAoMCA9ICJkaXJlY3QgbWF0Y2giLCAxID0g Imxpa2UiKQ0KCQkkY1RhYmxlID0gYXJyYXkoDQoJCQkncGx1Z2lucycgPT4gYXJyYXkoDQoJ CQkJJ3R4cF9mb3JtJyA9PiBhcnJheSgnZm9ybScgPT4gMSksDQoJCQkJJ3R4cF9wYWdlJyA9 PiBhcnJheSgndXNlcl9odG1sJyA9PiAxKSwNCgkJCQkndGV4dHBhdHRlcm4nID0+IGFycmF5 KCdCb2R5JyA9PiAxLCAnRXhjZXJwdCcgPT4gMSksDQoJCQkpLA0KCQkJJ2Zvcm1zJyA9PiBh cnJheSgNCgkJCQkndHhwX2Zvcm0nID0+IGFycmF5KCdmb3JtJyA9PiAxKSwNCgkJCQkndHhw X3BhZ2UnID0+IGFycmF5KCd1c2VyX2h0bWwnID0+IDEpLA0KCQkJCSd0ZXh0cGF0dGVybicg PT4gYXJyYXkoJ0JvZHknID0+IDEsICdFeGNlcnB0JyA9PiAxLCAnb3ZlcnJpZGVfZm9ybScg PT4gMCksDQoJCQkpLA0KCQkpOw0KDQoJCS8vIFdvcmsgb24gYSBjb2x1bW4gYXQgYSB0aW1l DQoJCWZvcmVhY2ggKCRwbGFjZXMgYXMgJHBsYWNlKSB7DQoJCQkkY3JvdyA9ICRwbGFjZVRh YmxlWyRwbGFjZV07DQoJCQkkY29sUmVmcyA9IGRvX2xpc3QoJGNyb3dbMl0pOw0KCQkJJGNv bEhlYWRbXSA9IHRkKHN0cm9uZygkY3Jvd1szXSAuICgoJHBsYWNlID09ICdwbHVnaW5zJykg PyAoKCRwbHVndHlwZT09MCkgPyBzbWRfd3VfZ1R4dCgnY2xpZW50X3BsdWdpbnMnKSA6IHNt ZF93dV9nVHh0KCdhZG1pbl9wbHVnaW5zJykgKSA6ICcnKSApKTsNCgkJCSRycyA9IHN0YXJ0 Um93cygkY3Jvd1swXSk7DQoJCQlpZiAoJHJzKSB7DQoJCQkJJG91dCA9ICc8dWw+JzsNCgkJ CQl3aGlsZSAoJHJvdyA9IG5leHRSb3coJHJzKSkgew0KCQkJCQkvLyBDb3VudCB0aGUgbm8g b2YgcmVjb3JkcyBtYXRjaGluZyB0aGlzIG5hbWUgaW4gZWFjaCB0YWJsZS4NCgkJCQkJLy8g QW55IHRpbWUgdGhpcyBnb2VzIGFib3ZlIHplcm8sIHRoZSBpdGVtIGlzIHVzZWQgYW5kIGl0 IGNhbiBiZSBpZ25vcmVkDQoJCQkJCSRmbmFsaWFzZXMgPSBhcnJheSgpOw0KCQkJCQlpZiAo YXJyYXlfa2V5X2V4aXN0cygkcGxhY2UsICRjVGFibGUpKSB7DQoJCQkJCQkvLyBQbHVnaW4g ZnVuY3Rpb25zIGFyZSBub3QgbmVjZXNzYXJpbHkgdGhlIG5hbWUgb2YgdGhlIHBsdWdpbiBp dHNlbGYuDQoJCQkJCQkvLyBGaW5kIGFsbCBmdW5jdGlvbiBkZWZpbml0aW9ucyBhbmQgYnVp bGQgYSBsaXN0IG9mIGFsaWFzZXMNCgkJCQkJCWlmICgkcGxhY2UgPT0gJ3BsdWdpbnMnKSB7 DQoJCQkJCQkJJHJlID0gJy9mdW5jdGlvblxzKyhbQS1aYS16MC05X10rKVxzKlwoLyc7DQoJ CQkJCQkJJG51bSA9IHByZWdfbWF0Y2hfYWxsKCRyZSwgJHJvd1snY29kZSddLCAkZm5hbGlh c2VzKTsNCgkJCQkJCX0NCg0KCQkJCQkJJHJlY3MgPSAwOw0KCQkJCQkJZm9yZWFjaCAoJGNU YWJsZVskcGxhY2VdIGFzICR0YmwgPT4gJGNvbEluZm8pIHsNCgkJCQkJCQlpZiAoJHJlY3Mg PT0gMCkgew0KCQkJCQkJCQkkd2hlcmUgPSBhcnJheSgpOw0KCQkJCQkJCQlmb3JlYWNoICgk Y29sSW5mbyBhcyAkY29sTmFtZSA9PiAkcXJ5VHlwZSkgew0KCQkJCQkJCQkJJHdoZXJlW10g PSAkY29sTmFtZSAuICgoJHFyeVR5cGU9PTApID8gIiA9ICciIC4kcm93WyRjb2xSZWZzWzBd XS4gIiciIDogIiBMSUtFICclIiAuJHJvd1skY29sUmVmc1swXV0uICIlJyIpOw0KCQkJCQkJ CQkJaWYgKGNvdW50KCRmbmFsaWFzZXMpID4gMSkgew0KCQkJCQkJCQkJCWZvcmVhY2ggKCRm bmFsaWFzZXNbMV0gYXMgJGZuYWxpYXMpIHsNCgkJCQkJCQkJCQkJJHdoZXJlW10gPSAkY29s TmFtZSAuICgoJHFyeVR5cGU9PTApID8gIiA9ICciIC4kZm5hbGlhcy4gIiciIDogIiBMSUtF ICclIiAuJGZuYWxpYXMuICIlJyIpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJ CQkJfQ0KCQkJCQkJCQkkd2hlcmUgPSBqb2luKCIgT1IgIiwgJHdoZXJlKTsNCgkJCQkJCQkJ JHJlY3MgKz0gc2FmZV9jb3VudCgkdGJsLCAkd2hlcmUpOw0KCQkJCQkJCX0NCgkJCQkJCX0N Cg0KCQkJCQkJLy8gSWYgdGhlIGl0ZW0gaGFzIG5vdCBiZWVuIGZvdW5kLCBmbGFnIGl0DQoJ CQkJCQlpZiAoJHJlY3MgPT0gMCkgew0KCQkJCQkJCSRjb2xOYW1lcyA9ICRjb2xSZWZzOw0K CQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkkY29sTmFtZXMgPSBhcnJheSgpOw0KCQkJCQkJfQ0K CQkJCQl9IGVsc2Ugew0KCQkJCQkJJGNvbE5hbWVzID0gJGNvbFJlZnM7DQoJCQkJCX0NCg0K CQkJCQkvLyBNYWtlIHVwIHRoZSBzdHJpbmcgdG8gZGlzcGxheSwgYW5kIGh5cGVybGluayBp dCBpZiBkaXJlY3RlZA0KCQkJCQkkaGxpbmsgPSAnJzsNCgkJCQkJJHZhcnMgPSAnJzsNCgkJ CQkJZm9yZWFjaCAoJGNvbE5hbWVzIGFzICRjb2wpIHsNCgkJCQkJCSRmcm9tID0gJ3snLiRj b2wuJ30nOw0KCQkJCQkJaWYgKHN0cnBvcygkY3Jvd1s3XSwgJGZyb20pICE9PSBmYWxzZSkg ew0KCQkJCQkJCWlmICgkY3Jvd1s2XSA9PSAiIyIpIHsNCgkJCQkJCQkJJHZhcnMgPSBqb2lu X3FzKGFycmF5KCJldmVudCIgPT4gJGNyb3dbNF0sICJzdGVwIiA9PiAkY3Jvd1s1XSkpLiRj cm93WzZdLnN0cnRyKCRjcm93WzddLCBhcnJheSgkZnJvbSA9PiAkcm93WyRjb2xdKSk7DQoJ CQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkJJHZhcnMgPSBqb2luX3FzKGFycmF5KCJldmVudCIg PT4gJGNyb3dbNF0sICJzdGVwIiA9PiAkY3Jvd1s1XSwgJGNyb3dbNl0gPT4gc3RydHIoJGNy b3dbN10sIGFycmF5KCRmcm9tID0+ICRyb3dbJGNvbF0pKSkpOw0KCQkJCQkJCX0NCgkJCQkJ CX0NCgkJCQkJCSRobGluayAuPSAkcm93WyRjb2xdLiIgIjsNCgkJCQkJfQ0KCQkJCQkkb3V0 IC49ICgkaGxpbmspID8gJzxsaT4nIC4gKCgkdmFycykgPyAnPGEgaHJlZj0iaW5kZXgucGhw Jy4kdmFycy4nIj4nLiRobGluay4nPC9hPiAnIDogJGhsaW5rKSAuICc8L2xpPic6ICcnOw0K CQkJCX0NCgkJCQkkb3V0IC49ICc8L3VsPic7DQoJCQkJJGNvbEJvZHlbXSA9IHRkKCRvdXQp Ow0KCQkJfSBlbHNlIHsNCgkJCQkkY29sQm9keVtdID0gdGQoc21kX3d1X2dUeHQoJ25vX29y cGhhbnNfZm91bmQnKSk7DQoJCQl9DQoJCX0NCgkJZWNobyB0cihqb2luKCIgIiwgJGNvbEhl YWQpKTsNCgkJZWNobyB0cihqb2luKCIgIiwgJGNvbEJvZHkpKTsNCgl9DQoJZWNobyBlbmRU YWJsZSgpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQbHVnaW4tc3BlY2lmaWMgcmVwbGFjZW1l bnQgc3RyaW5ncyAtIGxvY2FsaXNlIGFzIHJlcXVpcmVkDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBzbWRfd3VfZ1R4dCgkd2hhdCwgJGF0dHMgPSBhcnJheSgpKSB7DQoJJGxhbmcgPSBhcnJh eSgNCgkJJ2FkbWluX3BsdWdpbnMnID0+ICcgWyBBK0MgXScsDQoJCSdjbGllbnRfcGx1Z2lu cycgPT4gJyBbIEMgXScsDQoJCSdleGNsdXNpb24nID0+ICdFeGNsdWRlJywNCgkJJ2luY2x1 c2lvbicgPT4gJ0luY2x1ZGUnLA0KCQknZmlsdGVyJyA9PiAnRmlsdGVyOicsDQoJCSdub19v cnBoYW5zX2ZvdW5kJyA9PiAnTm8gb3JwaGFucyBmb3VuZC4nLA0KCQknb3JwaGFuX3Jlc3Vs dHMnID0+ICdQb3NzaWJsZSBvcnBoYW5zJywNCgkJJ3NlYXJjaF9sYmwnID0+ICdGaW5kOics DQoJCSdzZWFyY2hfd2hlcmVfbGJsJyA9PiAnTG9vayBpbjonLA0KCQknc3R5bGVzaGVldHMn ID0+ICdTdHlsZXNoZWV0cycsDQoJCSdzbWRfd3UnID0+ICdXaGVyZSB1c2VkJywNCgkJJ3do b2xlX3dvcmQnID0+ICdXaG9sZSB3b3JkcycsDQoJKTsNCglyZXR1cm4gc3RydHIoJGxhbmdb JHdoYXRdLCAkYXR0cyk7DQp9IjtzOjQ6InR5cGUiO3M6MToiMSI7czo0OiJoZWxwIjtzOjYz NjM6Igk8cD48ZGl2IGlkPSJzbWRfaGVscCI+PC9wPgoKCTxoMT5zbWRfd2hlcmVfdXNlZDwv aDE+CgoJPHA+UmVhbGx5IHNpbXBsZSBhZG1pbi1zaWRlIHBsdWdpbiB0byBoZWxwIGZpbmQg d2hhdCB5b3UgbmVlZCB0byBlZGl0L2RlbGV0ZS4gSWYgeW91IGhhdmUgYSB0b25uZSBvZiBm b3JtcyBvciBwYWdlcyBhbmQgd2FudCB0byB0aWR5IHN0dWZmIHVwIGl0IGNhbiBiZSBhIGJp dCBvZiBhIHBhaW4gdG8gZmluZCB3aGF0JiM4MjE3O3MgYWN0dWFsbHkgaW4gdXNlLjwvcD4K Cgk8cD5TbyB1c2UgdGhpcyBwbHVnaW4gdG8gc2VhcmNoIHlvdXIgc2VjdGlvbnMsIHBhZ2Vz LCBmb3JtcyBvciBhcnRpY2xlcyBmb3IgcmVmZXJlbmNlcyB0byBwbHVnaW5zLCBvciBvdGhl ciBwYWdlcy9mb3JtcyBvciBldmVuIGp1c3QgcGxhaW4gdGV4dCBpbiBhcnRpY2xlcy48L3A+ CgoJPGgyIGNsYXNzPSJhdXRob3IiPkF1dGhvcjwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDov L3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVmIERhd3NvbjwvYT48L3A+CgoJPGgy IGNsYXNzPSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJ PHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4 dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTg0L3NtZF93aGVyZV91c2VkIj50ZXh0cGF0dGVybi5v cmc8L2E+LCBvciB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0 d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBl bmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0 cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yNzQ5MyI+Zm9ydW0gdGhyZWFkPC9hPiBm b3IgbW9yZSBpbmZvIGFuZCB0byByZXBvcnQgdGhlIHN1Y2Nlc3MgKG9yIG90aGVyd2lzZSkg b2YgdGhpcyBwbHVnaW4uPC9wPgoKCTxwPlVuaW5zdGFsbCBieSBzaW1wbHkgZGVsZXRpbmcg dGhlIHBsdWdpbiBmcm9tIHRoZSBBZG1pbi0mZ3Q7UGx1Z2lucyBwYW5lLjwvcD4KCgk8aDIg Y2xhc3M9InVzYWdlIj5Vc2FnZTwvaDI+CgoJPHA+VmlzaXQgdGhlIEV4dGVuc2lvbnMgdGFi IGFuZCBDbGljayAmIzgyMTY7V2hlcmUgdXNlZCYjODIxNzsgdG8gYWNjZXNzIHRoZSBzZWFy Y2ggZm9ybS4gVHlwZSBzb21lIHN0dWZmIHRvIGZpbmQsIHNlbGVjdCB3aGVyZSB5b3Ugd2Fu dCB0byBsb29rIGFuZCBoaXQgJiM4MjE2O1NlYXJjaCYjODIxNzsgb3IgcHJlc3MgRW50ZXIu IFlvdXIgcmVxdWVzdGVkIGxvY2F0aW9ucyB3aWxsIGJlIHNlYXJjaGVkIGZvciB0aGF0IHRl cm0gYW5kIHRoZSByZXN1bHRzIHRhYnVsYXRlZCwgd2l0aCBoeXBlcmxpbmtzIHRvIHRoZSBv ZmZlbmRpbmcgaXRlbXMgc28geW91IGNhbiBxdWlja2x5IGVkaXQgdGhlbS48L3A+CgoJPHA+ WW91IGNhbiBkZWNpZGUgd2hldGhlciB0byBzZWFyY2ggZm9yIHRoZSB0ZXJtICgmIzgyMjA7 SW5jbHVkZSYjODIyMTspIG9yIHRvIHNlYXJjaCBmb3Igc3R1ZmYgPHNwYW4gY2xhc3M9ImNh cHMiPk5PVDwvc3Bhbj4gY29udGFpbmluZyB0aGF0IHRlcm0gKCYjODIyMDtFeGNsdWRlJiM4 MjIxOykuIEFuZCB5b3UgbWF5IGFsc28gY2hvb3NlIHdoZXRoZXIgeW91ciBzZWFyY2ggdGVy bSBtYXRjaGVzL2RvZXMgbm90IG1hdGNoIGEgd2hvbGUgd29yZC48L3A+CgoJPHA+VGhpcyBp cyB3aGF0IHRoZSBwbHVnaW4gbG9va3MgYXQgd2hlbiB5b3Ugc2VsZWN0IGEgcGFydGljdWxh ciBjaGVja2JveCBmcm9tIHRoZSAmIzgyMjA7TG9vayBpbiYjODIyMTsgcm93OjwvcD4KCgk8 dWw+CgkJPGxpPiYjODIxNjtTZWN0aW9ucyYjODIxNzsgc2VhcmNoZXMgZXZlcnkgU2VjdGlv biBmb3IgcGFnZXMgb3Igc3R5bGVzaGVldHMgd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZTwvbGk+ CgkJPGxpPiYjODIxNjtQYWdlcyYjODIxNzsgc2VhcmNoZXMgZXZlcnkgUGFnZSBmb3IgZm9y bXMgLyBwbHVnaW5zIC8gdGV4dCB3aXRoIHRoZSBtYXRjaGluZyBuYW1lPC9saT4KCQk8bGk+ JiM4MjE2O0Zvcm1zJiM4MjE3OyBzZWFyY2hlcyBldmVyeSBGb3JtIGZvciBwbHVnaW5zIC8g b3RoZXIgZm9ybXMgLyB0ZXh0IHdpdGggdGhlIG1hdGNoaW5nIG5hbWU8L2xpPgoJCTxsaT4m IzgyMTY7QXJ0aWNsZXMmIzgyMTc7IHNlYXJjaGVzIGV2ZXJ5IEFydGljbGUgc2VjdGlvbiwg Ym9keSwgZXhjZXJwdCwgb3ZlcnJpZGVfZm9ybSwgdGl0bGUgYW5kIGtleXdvcmQgZm9yIG1l bnRpb24gb2YgdGhlIHRleHQgeW91IHNwZWNpZnk8L2xpPgoJPC91bD4KCgk8cD5JZiwgaG93 ZXZlciwgeW91IGxlYXZlIHRoZSAmIzgyMTY7RmluZCYjODIxNzsgYm94IGVtcHR5IGFuZCBj bGljayAmIzgyMTY7U2VhcmNoJiM4MjE3OyB0aGUgcGx1Z2luIHdpbGwgc2VhcmNoIGZvciBv cnBoYW5zLiBPcnBoYW5zIGFyZSBkZWZpbmVkIGFzIGZvbGxvd3M6PC9wPgoKCTx1bD4KCQk8 bGk+QW55IFBhZ2UgdGhhdCBpcyBub3QgYXNzaWduZWQgdG8gYSBTZWN0aW9uPC9saT4KCQk8 bGk+QW55IFN0eWxlc2hlZXQgdGhhdCBpcyBub3QgYXNzaWduZWQgdG8gYSBTZWN0aW9uPC9s aT4KCQk8bGk+QW55IFNlY3Rpb24gdGhhdCBoYXMgbm8gQXJ0aWNsZXMgaW4gaXQgKGV4Y2x1 ZGluZyDigJhkZWZhdWx04oCZIHdoaWNoIGNhbm5vdCBoYXZlIGFuIGFydGljbGUgYW55d2F5 KTwvbGk+CgkJPGxpPkFueSBQbHVnaW4gdGhhdCBpcyBub3QgcmVmZXJlbmNlZCBmcm9tIGFu IEFydGljbGUgKGJvZHkvZXhjZXJwdCkgb3IgYW5vdGhlciBGb3JtIG9yIFBhZ2U8L2xpPgoJ CTxsaT5BbnkgRm9ybSB0aGF0IGhhcyBubyByZWZlcmVuY2UgdG8gaXQgaW4gYW55IEFydGlj bGUgKGJvZHkvZXhjZXJwdC9vdmVycmlkZV9mb3JtKSBvciBhbm90aGVyIEZvcm0gb3IgUGFn ZTwvbGk+Cgk8L3VsPgoKCTxwPk5vdGVzOjwvcD4KCgk8dWw+CgkJPGxpPk9ycGhhbmVkIGFy dGljbGVzIGRvbiYjODIxNzt0IG1ha2Ugc2Vuc2Ugc28gdGhleSBhcmUgb21pdHRlZC4gVGhl IGNoZWNrYm94IGlzIGlnbm9yZWQ8L2xpPgoJCTxsaT5Fc3NlbnRpYWwgc2VjdGlvbnMgLyBw YWdlcyAvIGZvcm1zIHRoYXQgY2Fubm90IGJlIGRlbGV0ZWQgYXJlIG5vdCBsaXN0ZWQ8L2xp PgoJCTxsaT5TdHlsZXNoZWV0cyBhbmQgUGx1Z2lucyBhcmUgYWx3YXlzIGRpc3BsYXllZCBi ZWNhdXNlIHRoZXJlIGFyZSBubyBjaGVjayBib3hlcyBmb3IgdGhlbS4gVGhlIHJlYXNvbiBp cyB0aGF0IHRoZSBwbHVnaW4gZG9lcyBub3QgYWxsb3cgc2VhcmNoaW5nIHdpdGhpbiBhIHBs dWdpbiBvciBhIHN0eWxlc2hlZXQgZm9yIGEgcmVmZXJlbmNlIHRvIGEgd29yZCwgYnV0IGl0 IGRvZXMgY2hlY2sgb3RoZXIgcGxhY2VzIGZvciByZWZlcmVuY2VzIDxlbT50bzwvZW0+IHBs dWdpbnMgYW5kIHN0eWxlc2hlZXRzPC9saT4KCQk8bGk+UGx1Z2luIGxpc3QgY2FuIGJlIHRv Z2dsZWQgYmV0d2VlbiB0aGUgZGVmYXVsdCBjbGllbnQtb25seSBwbHVnaW5zIG9yIGJvdGgg Y2xpZW50IGFuZCBhZG1pbiBwbHVnaW5zLiBDbGljayAmIzgyMTY7U2VhcmNoJiM4MjE3OyBh Z2FpbiB0byB0b2dnbGU8L2xpPgoJCTxsaT5KdXN0IGJlY2F1c2UgYW4gaXRlbSBpcyBsaXN0 ZWQgYXMgb3JwaGFuZWQgZG9lcyA8ZW0+bm90IG5lY2Vzc2FyaWx5IG1lYW4gaXQgaXMgbm90 IHVzZWQ8L2VtPiEgRm9yIGV4YW1wbGUsIHJ2bV9tYWludGVuYW5jZSBjaGVja3MgZm9yIHRo ZSBleGlzdGVuY2Ugb2YgYW4gPGNvZGU+ZXJyb3JfNTAzPC9jb2RlPiBQYWdlLiBTaW5jZSBp dCBpcyBuZXZlciBhc3NpZ25lZCB0byBhIFNlY3Rpb24gaXQgd2lsbCBiZSBsaXN0ZWQgYXMg b3JwaGFuZWQuIElmIHlvdSBoYXZlIGEgZGVkaWNhdGVkIHN0eWxlc2hlZXQgZm9yIG1haW50 ZW5hbmNlIG1vZGUgdGhhdCwgdG9vLCB3aWxsIGJlIHNob3duIGFzIG9ycGhhbmVkLiBJbiBz aG9ydCwgYmUgY2FyZWZ1bCBhbmQgbWFrZSBhIGJhY2t1cCA6LSk8L2xpPgoJCTxsaT5QbHVn aW5zIHN1Y2ggYXMgcGFwX2NvbnRhY3RfY2xlYW5lciBhbmQgcnZtX21haW50ZW5hbmNlIGFy ZSBsaXN0ZWQgYXMgb3JwaGFucyBldmVuIHRob3VnaCB0aGV5IGFyZSB1c2VkIGJ5IG90aGVy IHBsdWdpbnMgLyB1c3VhbGx5IGRpc2FibGVkLiBJZiB5b3UgYXJlIHVuc3VyZSBhYm91dCBh IHBsdWdpbiwgY2hlY2sgaXQgYnkgdHlwaW5nIGEgcGFydGlhbCB0YWcgbmFtZSBpbnRvIHRo ZSBzZWFyY2ggYm94PC9saT4KCTwvdWw+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5n ZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4xNiBKdW4gMDggfCB2MC4xIHwgSW5pdGlhbCByZWxl YXNlPC9saT4KCQk8bGk+MTYgSnVuIDA4IHwgdjAuMTEgfCBBZGRlZCBzZWN0aW9uIHNlYXJj aCBhbmQgb3ZlcnJpZGVfZm9ybTwvbGk+CgkJPGxpPjE2IEp1biAwOCB8IHYwLjEyIHwgQWRk ZWQgaW5jbHVkZS9leGNsdWRlICh0aGFua3MgbXJkYWxlKTwvbGk+CgkJPGxpPjE2IEp1biAw OCB8IHYwLjEzIHwgQWRkZWQgYWJpbGl0eSB0byBtYXRjaCB3aG9sZSB3b3JkcyAodGhhbmtz IHphbnphKTwvbGk+CgkJPGxpPjE3IEp1biAwOCB8IHYwLjE0IHwgQWRkZWQgb3JwaGFuIHNl YXJjaCAodGhhbmtzIHVsaS9uZXQtY2FydmVyKTwvbGk+CgkJPGxpPjE4IEp1biAwOCB8IHYw LjE1IHwgRml4ZWQgcGx1Z2luIGxpc3Qgc28gaXQgZG9lcyBhIGRlZXAgc2VhcmNoIGluc2lk ZSB0aGUgc291cmNlIGNvZGUgZm9yIHRhZyBuYW1lczwvbGk+CgkJPGxpPjE4IEp1biAwOCB8 IHYwLjE2IHwgQWRkZWQgYWRtaW4vY2xpZW50IHNpZGUgcGx1Z2luIHRvZ2dsZSA7IHNlYXJj aGVzIG5vdyBleHRlbmRlZCB0byB0aXRsZSBhbmQga2V5d29yZHMgKGJvdGggdGhhbmtzIHVs aSk8L2xpPgoJCTxsaT4xOCBKdW4gMDggfCB2MC4xNyB8IEFydGljbGVzIGFyZSBsaW5rZWQg d2l0aCBJRCBhbmQgdGl0bGUgKHRoYW5rcyB1bGkpPC9saT4KCTwvdWw+CgoJPHA+PC9kaXY+ PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRl eHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS4zIDt9CiNzbWRfaGVscCBjb2Rl IHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNv dXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVs cCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAj OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46 MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21k X2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNz bWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFk ZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIw cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7 IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjNjkzOyBmb250OiBib2xkIDEycHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQg MTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAx MHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0dC1u YW1lIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5k OiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0 aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9o ZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzou NWVtIDA7fQo8L3N0eWxlPgo8IS0tIC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+CiI7czoz OiJtZDUiO3M6MzI6IjYxN2FjYzk0YjEyZTIxNTk1M2FmOGViMWRkMjM4OGY2Ijt9