# Name: rss_pluginstaller v0.1 # Type: Admin/Client side plugin # Automatically install and update plugins from wilshire|one. # Author: Rob Sable # URL: http://www.wilshireone.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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjE3OiJyc3NfcGx1Z2luc3RhbGxlciI7czo2OiJhdXRob3Ii O3M6OToiUm9iIFNhYmxlIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI3OiJodHRwOi8vd3d3Lndp bHNoaXJlb25lLmNvbS8iO3M6NzoidmVyc2lvbiI7czozOiIwLjEiO3M6MTE6ImRlc2NyaXB0 aW9uIjtzOjU5OiJBdXRvbWF0aWNhbGx5IGluc3RhbGwgYW5kIHVwZGF0ZSBwbHVnaW5zIGZy b20gd2lsc2hpcmV8b25lLiI7czo0OiJjb2RlIjtzOjcwNjA6IgppZiAoQHR4cGludGVyZmFj ZSA9PSAnYWRtaW4nKSB7CiAgYWRkX3ByaXZzKCdwbHVnaW5zdGFsbCcsJzEnKTsKICAvLyBB ZGQgYSBuZXcgdGFiIHVuZGVyICdleHRlbnNpb25zJyBjYWxsZWQgJ1BsdWdJbnN0YWxsZXIn LCBmb3IgdGhlICdwbHVnaW5zdGFsbCcgZXZlbnQKICByZWdpc3Rlcl90YWIoImV4dGVuc2lv bnMiLCAicGx1Z2luc3RhbGwiLCAiUGx1Z0luc3RhbGxlciIpOwogIC8vICdyc3NfcGx1Z2lu c3RhbGxlcicgd2lsbCBiZSBjYWxsZWQgdG8gaGFuZGxlIHRoZSAncGx1Z2luc3RhbGwnIGV2 ZW50CiAgcmVnaXN0ZXJfY2FsbGJhY2soInJzc19wbHVnaW5zdGFsbGVyIiwgInBsdWdpbnN0 YWxsIik7Cn0KCmZ1bmN0aW9uIHJzc19wbHVnaW5zdGFsbGVyKCRldmVudCwgJHN0ZXApIHsK CWdsb2JhbCAkcHJlZnMsJHJzc19za2lwX3ByZXZpZXcsJHJzc19hY3RpdmF0ZTsKCglpZiAo IWlzc2V0KCRyc3Nfc2tpcF9wcmV2aWV3KSkgewoJCSRycyA9IHNldF9wcmVmKCJyc3Nfc2tp cF9wcmV2aWV3IiwgMCwgImFkbWluIiwgIjIiLCAieWVzbm9yYWRpbyIpOwoJfQoKCWlmICgh aXNzZXQoJHJzc19hY3RpdmF0ZSkpIHsKCQkkcnMgPSBzZXRfcHJlZigicnNzX2FjdGl2YXRl IiwgMCwgImFkbWluIiwgIjIiLCAieWVzbm9yYWRpbyIpOwoJfQoKCWlmIChwcygic2F2ZSIp KSB7CgkJCXBhZ2V0b3AoIlBsdWdJbnN0YWxsZXIiLCAiUHJlZmVyZW5jZXMgU2F2ZWQiKTsK CQkJc2FmZV91cGRhdGUoInR4cF9wcmVmcyIsICJ2YWwgPSAnIi5wcygncnNzX3NraXBfcHJl dmlldycpLiInIiwibmFtZSA9ICdyc3Nfc2tpcF9wcmV2aWV3JyBhbmQgcHJlZnNfaWQgPScx JyIpOwoJCQlzYWZlX3VwZGF0ZSgidHhwX3ByZWZzIiwgInZhbCA9ICciLnBzKCdyc3NfYWN0 aXZhdGUnKS4iJyIsIm5hbWUgPSAncnNzX2FjdGl2YXRlJyBhbmQgcHJlZnNfaWQgPScxJyIp OwoJCQloZWFkZXIoIkxvY2F0aW9uOiBpbmRleC5waHA/ZXZlbnQ9cGx1Z2luc3RhbGwiKTsK CQkJZXhpdDsKCX0KCglpZiAocHMoImluc3RhbGxfbmV3IikpIHsKCQkkY29udGVudHMgPSAg cnNzX2ZldGNoVVJMKHBzKCJwbHVnaW4iKSk7CgkJaWYgKCRjb250ZW50cykgewoJCQkkcGx1 Z2luNjQgPSBwcmVnX3JlcGxhY2UoJ0AuKlwkcGx1Z2luPVwnKFtcdz0rL10rKVwnLipAcycs ICckMScsICRjb250ZW50cyk7CgkJCSRfUE9TVFsncGx1Z2luJ10gPSAkcGx1Z2luNjQ7CgkJ CSRfUE9TVFsncGx1Z2luNjQnXSA9ICRwbHVnaW42NDsKCQkJJGV2ZW50ID0gInBsdWdpbiI7 CgkJCWluY2x1ZGUodHhwYXRoIC4gJy9pbmNsdWRlL3R4cF9wbHVnaW4ucGhwJyk7CgkJCWlm ICgkcnNzX3NraXBfcHJldmlldykgewoJCQkJJHJlcyA9IHBsdWdpbl9pbnN0YWxsKCk7CgkJ CQlpZiAoJHJzc19hY3RpdmF0ZSkgc2FmZV91cGRhdGUoJ3R4cF9wbHVnaW4nLCAic3RhdHVz ID0gMSIsICJuYW1lID0gJyIuZG9TbGFzaChwcygnbmFtZScpKS4iJyIpOwoJCQkJaGVhZGVy KCJMb2NhdGlvbjogaW5kZXgucGhwP2V2ZW50PXBsdWdpbnN0YWxsIik7CgkJCX0KCQkJZXhp dDsKCQl9Cgl9CgoJaWYgKCRzdGVwID09ICJzd2l0Y2hfc3RhdHVzIikgewoJCWV4dHJhY3Qo Z3BzYShhcnJheSgnbmFtZScsICdzdGF0dXMnKSkpOwoJCSRjaGFuZ2UgPSAoJHN0YXR1cykg PyAwIDogMTsKCQlzYWZlX3VwZGF0ZSgndHhwX3BsdWdpbicsICJzdGF0dXMgPSAkY2hhbmdl IiwgIm5hbWUgPSAnIi5kb1NsYXNoKCRuYW1lKS4iJyIpOwoJfQoKCWlmICgkc3RlcCA9PSAi cGx1Z2luX2RlbGV0ZSIpIHsKCQkkbmFtZSA9IGRvU2xhc2gocHMoJ3BsdWd0aXRsZScpKTsK CQlzYWZlX2RlbGV0ZSgndHhwX3BsdWdpbicsICJuYW1lID0gJyRuYW1lJyIpOwoJfQoKICBw YWdldG9wKCJQbHVnSW5zdGFsbGVyIik7CgoJaWYgKHBzKCJpbnN0YWxsX25ldyIpICYmICEk Y29udGVudHMpIHsKCQkJZWNobyBncmFmKHN0cm9uZygiQ291bGQgbm90IGNvbm5lY3QgdG8g d2lsc2hpcmV8b25lLiIpLCAnIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiJyk7Cgl9CgoJ JG1hZ2ZpbGVzID0gdHhwYXRoIC4gJy9tYWdwaWUvcnNzX2ZldGNoLmluYyc7CgoJaWYgKGZp bGVfZXhpc3RzKCRtYWdmaWxlcykpIHsKCQlyZXF1aXJlX29uY2UoJG1hZ2ZpbGVzKTsKCgkJ JE1BR1BJRV9DQUNIRV9PTiA9ICIxIjsKCQkkTUFHUElFX0NBQ0hFX0RJUiA9ICJjYWNoZSI7 CgkJJE1BR1BJRV9DQUNIRV9BR0UgPSAiMTgwMCI7CgkJJE1BR1BJRV9DQUNIRV9GUkVTSF9P TkxZID0gIjAiOwoKCQkkcnNzID0gZmV0Y2hfcnNzKCJodHRwOi8vd3d3LndpbHNoaXJlb25l LmNvbS8/cGx1Z2luZmVlZD0xIik7CgkJLy9kbXAoJHJzcyk7CgoJCWlmICgkcnNzKSB7CgoJ CQkkbXlwbHVncyA9IHNhZmVfcm93cygiKiwgbWQ1KGNvZGUpIGFzIG1kNSIsICJ0eHBfcGx1 Z2luIiwgIm5hbWUgbGlrZSAncnNzXyUnIG9yZGVyIGJ5IG5hbWUiKTsKCgkJCSR0ZGxhdHRz ID0gJyBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlOyInOwoJCQkkdGRhdHRzID0gJyBz dHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlOyInOwoJCQkk Y29sc3BhbiA9IDg7CgoJCQkkb3V0ID0gYXJyYXkoKTsKCQkJJG91dFtdID0gc3RhcnRUYWJs ZSgibGlzdCIsIiIsImVkaXQtdGFibGUiKS5uOwoJCQkkb3V0W10gPSB0cih0ZGEodGFnKCJ3 aWxzaGlyZXxvbmUgUGx1Z0luc3RhbGxlciIsJ2gxJyksICcgY29sc3Bhbj0iJy4kY29sc3Bh bi4nIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDojMWYxZjFmO2NvbG9y OiNmMWYxZjE7cGFkZGluZzogMTBweCAwIDA7bWFyZ2luOjA7IicpKTsKCgkJCSRvdXRbXSA9 IHRyKAoJCQkJCQl0ZGEoc3Ryb25nKCJQbHVnaW4gTmFtZSIpLCAkdGRsYXR0cykuCgkJCQkJ CXRkYShzdHJvbmcoIllvdXIgVmVyc2lvbiIpLCAkdGRhdHRzKS4KCQkJCQkJdGRhKHN0cm9u ZygiQ3VycmVudCBWZXJzaW9uIiksICR0ZGF0dHMpLgoJCQkJCQl0ZGEoc3Ryb25nKCJBY3Rp dmU/IiksICR0ZGF0dHMpLgoJCQkJCQl0ZGEoc3Ryb25nKCJIZWxwIiksICR0ZGF0dHMpLgoJ CQkJCQl0ZGEoc3Ryb25nKCJTdGF0dXMiKSwgJHRkYXR0cykuCgkJCQkJCXRkYShzdHJvbmco IkFkZCIpLCAkdGRhdHRzKS4KCQkJCQkJdGRhKHN0cm9uZygiUmVtb3ZlIiksICR0ZGF0dHMp CgkJCQkJKS5uOwoKCQkJZm9yZWFjaChhcnJheV9zbGljZSgkcnNzLT5pdGVtcywwKSBhcyAk cGx1ZykgewoJCQkJJGluc3RhbGxlZCA9IDA7CgkJCQkkbW9kaWZpZWQgPSAwOwoJCQkJZXh0 cmFjdCgkcGx1Zyk7CgoJCQkJZm9yZWFjaCgkbXlwbHVncyBhcyAkbXlwbHVnKXsKCQkJCQlp ZiAoYXJyYXlfc2VhcmNoKCR0aXRsZSwkbXlwbHVnKSkgewoJCQkJCQkkaW5zdGFsbGVkPSRt eXBsdWdbJ3ZlcnNpb24nXTsKCQkJCQkJJG1vZGlmaWVkID0gKHN0cnRvbG93ZXIoJG15cGx1 Z1snbWQ1J10pICE9IHN0cnRvbG93ZXIoJG15cGx1Z1snY29kZV9tZDUnXSkpOwoJCQkJCQli cmVhazsKCQkJCQl9CgkJCQl9CgoJCQkJJHRyYXR0cz0iIjsKCQkJCSRpc0luc3RhbGxlZCA9 ICgkaW5zdGFsbGVkICE9IDApOwoKCQkJCWlmICghJGlzSW5zdGFsbGVkKSB7CgkJCQkJJGlu c3RhbGxfc3RhdHVzID0gIk5vdCBpbnN0YWxsZWQiOwoJCQkJCSR0cmF0dHMgPSAnIGNsYXNz PSJzcGFtIic7CgkJCQl9IGVsc2UgewoJCQkJCSRpbnN0YWxsX3N0YXR1cyA9ICgkbXlwbHVn Wyd2ZXJzaW9uJ10gPT0gJHZlcnNpb24pID8gIk5vIFVwZGF0ZXMiIDogIiBVcGRhdGUgQXZh aWxhYmxlISI7CgkJCQl9CgoJCQkJJGluc3RsYWIgPSAoISRpc0luc3RhbGxlZCkgPyBnVHh0 KCdpbnN0YWxsJykgOiBnVHh0KCd1cGRhdGUnKTsKCQkJCSRpbnN0c3R5ID0gKCEkaXNJbnN0 YWxsZWQgfHwgJGluc3RhbGxfc3RhdHVzID09ICJObyBVcGRhdGVzIikgPyAic21hbGxlcmJv eCIgOiAicHVibGlzaCI7CgoJCQkJJGhlbHAgPSAoJGlzSW5zdGFsbGVkKSA/CgkJCQkJJzxh IGhyZWY9Ij9ldmVudD1wbHVnaW4nLmEuJ3N0ZXA9cGx1Z2luX2hlbHAnLmEuJ25hbWU9Jy4k dGl0bGUuJyI+Jy5nVHh0KCdoZWxwJykuJzwvYT4nIDoKCQkJCQkiJm5ic3A7IjsKCgkJCQkk b3V0W10gPQoJCQkJCXRyKAoJCQkJCQl0ZGEoJHRpdGxlLiIgIi4oJG1vZGlmaWVkID8gIiAo bW9kaWZpZWQpIiA6ICcnKSwgJHRkbGF0dHMpLgoJCQkJCQl0ZGEoKCRpc0luc3RhbGxlZCkg PyAkaW5zdGFsbGVkIDogIiZuYnNwOyIsICR0ZGF0dHMpLgoJCQkJCQl0ZGEoJHZlcnNpb24s ICR0ZGF0dHMpLgoJCQkJCQl0ZGEoKCRpc0luc3RhbGxlZCkgPyByc3Nfc3RhdHVzX2xpbmso JG15cGx1Z1snc3RhdHVzJ10sICR0aXRsZSwgeWVzX25vKCRteXBsdWdbJ3N0YXR1cyddKSkg OiAiJm5ic3A7IiwgJHRkYXR0cykuCgkJCQkJCXRkYSgkaGVscCwgJHRkYXR0cykuCgkJCQkJ CXRkYSgkaW5zdGFsbF9zdGF0dXMsICR0ZGF0dHMpLgoJCQkJCQl0ZGEoZm9ybSgKCQkJCQkJ CSc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwbHVnaW4iIHZhbHVlPSInLiRsaW5rLici IC8+Jy5uLgoJCQkJCQkJJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im5hbWUiIHZhbHVl PSInLiR0aXRsZS4nIiAvPicubi4KCQkJCQkJCQkJZklucHV0KCJzdWJtaXQiLCAiaW5zdGFs bF9uZXciLCAkaW5zdGxhYiwgJGluc3RzdHkpLm4uCgkJCQkJCQkJCWVJbnB1dCgicGx1Z2lu c3RhbGwiKS5zSW5wdXQoInBsdWdpbl92ZXJpZnkiKS5uCgkJCQkJCQkJKSwgJHRkYXR0cyku bi4KCQkJCQkJCQl0ZGEoKCRpc0luc3RhbGxlZCkgPyBkTGluaygncGx1Z2luc3RhbGwnLCAn cGx1Z2luX2RlbGV0ZScsICdwbHVndGl0bGUnLCAkdGl0bGUpIDogIiZuYnNwOyIsICR0ZGF0 dHMpLm4KCQkJCQksICR0cmF0dHMpLm47CgkJCX0KCgkJCSRwcmVmbGFiID0gJyBzdHlsZT0i dGV4dC1hbGlnbjpyaWdodDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiJzsKCgkJCSRvdXRbXSA9 IGZvcm0oCgkJCQl0cih0ZGEodGFnKCJ3aWxzaGlyZXxvbmUgUGx1Z0luc3RhbGxlciBQcmVm ZXJlbmNlcyIsJ2gxJyksICcgY29sc3Bhbj0iJy4kY29sc3Bhbi4nIiBzdHlsZT0idGV4dC1h bGlnbjpjZW50ZXI7YmFja2dyb3VuZDojMWYxZjFmO2NvbG9yOiNmMWYxZjE7cGFkZGluZzog MTBweCAwIDA7bWFyZ2luOjA7IicpKS4KCQkJCQl0cih0ZGEoIlNraXAgSW5zdGFsbCBQcmV2 aWV3OiIsICRwcmVmbGFiKS50ZGNzKHllc25vUmFkaW8oInJzc19za2lwX3ByZXZpZXciLCAk cnNzX3NraXBfcHJldmlldyksOCkpLgoJCQkJdHIodGRhKCJBY3RpdmUgb24gSW5zdGFsbDoi LCAkcHJlZmxhYikudGRjcyh5ZXNub1JhZGlvKCJyc3NfYWN0aXZhdGUiLCAkcnNzX2FjdGl2 YXRlKSw4KSkuCgkJCQl0cih0ZGNzKGZJbnB1dCgic3VibWl0Iiwic2F2ZSIsZ1R4dCgic2F2 ZV9idXR0b24iKSwicHVibGlzaCIpLmVJbnB1dCgicGx1Z2luc3RhbGwiKS5zSW5wdXQoJ3Nh dmVwcmVmcycpLDgpKS4KCQkJCXRyKHRkY3MoZ3JhZihocmVmKCJWaXNpdCB3aWxzaGlyZXxv bmUgVGV4dHBhdHRlcm4gUGx1Z2lucyIsJ2h0dHA6Ly93d3cud2lsc2hpcmVvbmUuY29tL3Rl eHRwYXR0ZXJuLXBsdWdpbnMnKSwgJyBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7IicpLDgp KSk7CgoJCQkkb3V0W10gPSBlbmRUYWJsZSgpLm47CgoKCQkJZWNobyBpbXBsb2RlKCcnLCAk b3V0KTsKCQl9IGVsc2UgewoJCQllY2hvIGdyYWYoc3Ryb25nKCJDb3VsZCBub3QgY29ubmVj dCB0byB3aWxzaGlyZXxvbmUuIiksICcgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyInKTsK CQl9Cgl9IGVsc2UgewoJCWVjaG8gZ3JhZihzdHJvbmcoIk1hZ3BpZSBGaWxlcyBOb3QgSW5z dGFsbGVkLiIuYnIuIlBsYWNlIGZpbGVzIGluIC90ZXh0cGF0dGVybi9tYWdwaWUiKSwgJyBz dHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7IicpOwoJfQp9CgovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlv biByc3NfZmV0Y2hVUkwoICR1cmwgKSB7CgogICAkdXJsX3BhcnNlZCA9IHBhcnNlX3VybCgk dXJsKTsKICAgJGhvc3QgPSAkdXJsX3BhcnNlZFsiaG9zdCJdOwogICAkcG9ydCA9IDgwOwog ICBpZiAoKGlzc2V0KCR1cmxfcGFyc2VkWyJwb3J0Il0pKSAmJiAkdXJsX3BhcnNlZFsicG9y dCJdIT0wKQogICAgICAgJHBvcnQgPSAkdXJsX3BhcnNlZFsicG9ydCJdOwogICAkcGF0aCA9 ICR1cmxfcGFyc2VkWyJwYXRoIl07CiAgIGlmICgoaXNzZXQoJHVybF9wYXJzZWRbInF1ZXJ5 Il0pKSAmJiAkdXJsX3BhcnNlZFsicXVlcnkiXSAhPSAiIikKICAgICAgICRwYXRoIC49ICI/ Ii4kdXJsX3BhcnNlZFsicXVlcnkiXTsKCiAgICRvdXQgPSAiR0VUICRwYXRoIEhUVFAvMS4w XHJcbkhvc3Q6ICRob3N0XHJcblxyXG4iOwoKICAgJGZwID0gZnNvY2tvcGVuKCRob3N0LCAk cG9ydCwgJGVycm5vLCAkZXJyc3RyLCAyMCk7CgogICBmd3JpdGUoJGZwLCAkb3V0KTsKICAg JGJvZHkgPSBmYWxzZTsKICAgJGluID0gIiI7CgogICBzdHJlYW1fc2V0X3RpbWVvdXQoJGZw LCA1KTsKICAgJGluZm8gPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZnApOwogICB3aGlsZSAo IWZlb2YoJGZwKSAmJiAhJGluZm9bJ3RpbWVkX291dCddKSB7CiAgICAgICAkcyA9IGZnZXRz KCRmcCwgMTAyNCk7CiAgICAgICBpZiAoICRib2R5ICkKICAgICAgICAgICAkaW4gLj0gJHM7 CiAgICAgICBpZiAoICRzID09ICJcclxuIiApCiAgICAgICAgICAgJGJvZHkgPSB0cnVlOwog ICB9CgogICBmY2xvc2UoJGZwKTsKCiAgIHJldHVybiAkaW47Cn0KCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZ1 bmN0aW9uIHJzc19zdGF0dXNfbGluaygkc3RhdHVzLCRuYW1lLCRsaW5rdGV4dCkgewoJJG91 dCA9ICc8YSBocmVmPSJpbmRleC5waHA/JzsKCSRvdXQgLj0gJ2V2ZW50PXBsdWdpbnN0YWxs JiMzODtzdGVwPXN3aXRjaF9zdGF0dXMmIzM4O3N0YXR1cz0nLgoJCSRzdGF0dXMuJyYjMzg7 bmFtZT0nLnVybGVuY29kZSgkbmFtZSkuJyInOwoJJG91dCAuPSAnPicuJGxpbmt0ZXh0Lic8 L2E+JzsKCXJldHVybiAkb3V0Owp9CgoiO3M6NDoidHlwZSI7czoxOiIxIjtzOjU6Im9yZGVy IjtzOjE6IjUiO3M6NDoiaGVscCI7czoyMDUyOiI8aDE+d2lsc2hpcmV8b25lIFBsdWdJbnN0 YWxsZXIgJiM4MjExOyBUZXh0cGF0dGVybiBQbHVnaW4gTWFuYWdlcjwvaDE+CgoJPHA+VGhl IDxhIGhyZWY9Imh0dHA6Ly93d3cud2lsc2hpcmVvbmUuY29tIj53aWxzaGlyZXxvbmU8L2E+ IFBsdWdJbnN0YWxsZXIgYWxsb3dzIHlvdSB0byBlYXNpbHkgaW5zdGFsbCwgdXBkYXRlIGFu ZCByZW1vdmUgYWxsIFRleHRwYXR0ZXJuIHBsdWdpbnMgcHVibGlzaGVkIGJ5IFJvYiBhdCB3 aWxzaGlyZXxvbmUgd2l0aG91dCBoYXZpbmcgdG8gZG93bmxvYWQgZWFjaCBpbmRpdmlkdWFs IHBsdWdpbiBmaWxlLjwvcD4KCgk8cD5UaGUgcGx1Z2luIHdpbGwgY3JlYXRlIGEgbmV3IFBs dWdJbnN0YWxsZXIgdGFiIHVuZGVyIHRoZSBtYWluIEV4dGVuc2lvbnMgdGFiLiBGcm9tIHRo aXMgdGFiLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIG1hbmFnZSBhbGwgd2lsc2hpcmV8b25lIHBs dWdpbnMuPC9wPgoKCTxoMj5JbnN0YWxsYXRpb248L2gyPgoKCTxvbD4KCQk8bGk+RG93bmxv YWQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIDxhIGhyZWY9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5u ZXQvcHJvamVjdC9zaG93ZmlsZXMucGhwP2dyb3VwX2lkPTU1NjkxIj5NYWdwaWVSU1M8L2E+ LjwvbGk+CgkJPGxpPkNyZWF0ZSBhIG5ldyBkaXJlY3RvcnkgaW4geW91ciAvdGV4dHBhdHRl cm4gZGlyZWN0b3J5IGNhbGxlZCAmIzgyMjA7bWFncGllJiM4MjIxOy48L2xpPgoJCTxsaT5D b3B5IHRoZSByc3NfY2FjaGUuaW5jLCByc3NfZmV0Y2guaW5jLCByc3NfcGFyc2UuaW5jIGFu ZCByc3NfdXRpbHMuaW5jIGZpbGVzIGFuZCB0aGUgZXh0bGliIGRpcmVjdG9yeSBmcm9tIHRo ZSBNYWdwaWUgZG93bmxvYWQgdG8gdGhlIG5ldyAvdGV4dHBhdHRlcm4vbWFncGllIGRpcmVj dG9yeS48L2xpPgoJCTxsaT5JbnN0YWxsIGFuZCBhY3RpdmF0ZSB0aGUgPGNvZGU+cnNzX3Bs dWdpbnN0YWxsZXI8L2NvZGU+IHBsdWdpbiBhcyBhbnkgb3RoZXIgcGx1Z2luLjwvbGk+Cgk8 L29sPgoKCTxoMj5QbHVnSW5zdGFsbGVyIFRhYiBGZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxs aT5JbnN0YWxsIG5ldyB3aWxzaGlyZXxvbmUgcGx1Z2lucy48L2xpPgoJCTxsaT5VcGRhdGUg cGx1Z2lucyB0byBuZXdlciB2ZXJzaW9ucy48L2xpPgoJCTxsaT5Qcm92aWRlIG5vdGlmaWNh dGlvbnMgd2hlbiBuZXcgcGx1Z2luIHZlcnNpb25zIGFyZSBhdmFpbGFibGUuPC9saT4KCQk8 bGk+QWN0aXZhdGUgYW5kIGRlYWN0aXZhdGUgcGx1Z2lucy48L2xpPgoJCTxsaT5Vbmluc3Rh bGwgcGx1Z2lucy48L2xpPgoJCTxsaT5WaWV3IHBsdWdpbiBoZWxwLjwvbGk+Cgk8L3VsPgoK CTxoMj5QbHVnSW5zdGFsbGVyIFRhYiBQcmVmZXJlbmNlczwvaDI+CgoJPHA+UHJlZmVyZW5j ZXMgZm9yIHRoZSBwbHVnaW4gY2FuIGJlIHNldCBhdCB0aGUgYm90dG9tIG9mIHRoZSBQbHVn SW5zdGFsbGVyIHRhYi4gIFRoZSBhdmFpbGFibGUgcHJlZmVyZW5jZXMgaW5jbHVkZTo8L3A+ CgoJPHVsPgoJCTxsaT48ZW0+U2tpcCBJbnN0YWxsIFByZXZpZXc8L2VtPiAmIzgyMTE7IEJ5 IGNob29zaW5nIDxlbT5ZZXM8L2VtPiwgdGhlIHBsdWdpbiB3aWxsIGJ5cGFzcyBUZXh0cGF0 dGVybiYjODIxNztzIHBsdWdpbiBpbnN0YWxsYXRpb24gcHJldmlldyBwcm9jZXNzIGFuZCBk aXJlY3RseSBpbnN0YWxsIHRoZSBwbHVnaW4gaW50byBUZXh0cGF0dGVybi4gIEJ5IGRlZmF1 bHQsIHRoZSBzdGFuZGFyZCBwbHVnaW4gcHJldmlldyBwcm9jZXNzIGlzIHVzZWQuPC9saT4K CQk8bGk+PGVtPkFjdGl2ZSBvbiBJbnN0YWxsPC9lbT4gJiM4MjExOyBCeSBjaG9vc2luZyA8 ZW0+WWVzPC9lbT4sIHRoZSBwbHVnaW4gd2lsbCBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlIHRo ZSBwbHVnaW4gd2hlbiBpdCBpcyBpbnN0YWxsZWQgaW50byBUZXh0cGF0dGVybi4gIEJ5IGRl ZmF1bHQsIHRoZSBwbHVnaW4gd2lsbCBub3QgYmUgYWN0aXZlLiBUaGlzIHByZWZlcmVuY2Ug b25seSBhcHBsaWVzIHdoZW4gPGVtPlNraXAgSW5zdGFsbCBQcmV2aWV3PC9lbT4gaXMgc2V0 IHRvIDxlbT5ZZXM8L2VtPi48L2xpPgoJPC91bD4iO3M6MzoibWQ1IjtzOjMyOiJkMzY0MjZh Y2Y5YmQ2M2IyZTFlOGFkN2IwMTFiNDVkNiI7fQ==