国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
40KB

  1. <module>
  2. <baseinfo>
  3. name=德得广告模块
  4. team=织梦团队
  5. time=2017-03-07
  6. email=tianya@desdev.cn
  7. url=http://ssp.desdev.cn
  8. hash=533c5b843ded8752b9857cc7c8e5b455
  9. indexname=
  10. indexurl=
  11. ismember=0
  12. autosetup=1
  13. autodel=1
  14. lang=utf-8
  15. moduletype=soft
  16. </baseinfo>
  17. <systemfile>
  18. <menustring>
  19. PG06dG9wIG5hbWU9J+W+t+W+l+W5v+WRiicgZGlzcGxheT0nYmxvY2snPg0KPG06aXRlbSBuYW1lPSflvrflvpfmqKHlnZcnIGxpbms9J21kYV9tYWluLnBocCcgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPG06aXRlbSBuYW1lPSflub/lkYrnrqHnkIYnIGxpbms9J21kYV9tYWluLnBocD9kb3Bvc3Q9cGxhY2UnIHJhbms9J3BsdXNf5bm/5ZGK566h55CGJyB0YXJnZXQ9J21haW4nLz4NCjxtOml0ZW0gbmFtZT0n5p+l55yL5oql6KGoJyBsaW5rPSdtZGFfbWFpbi5waHA/ZG9wb3N0PXJlcG9ydCcgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPG06aXRlbSBuYW1lPSfnu5PnrpfkuK3lv4MnIGxpbms9J21kYV9tYWluLnBocD9kb3Bvc3Q9YWNjb3VudCcgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPG06aXRlbSBuYW1lPSflvrflvpforr7nva4nIGxpbms9J21kYV9tYWluLnBocD9kb3Bvc3Q9c2V0dGluZycgcmFuaz0ncGx1c1/lub/lkYrnrqHnkIYnIHRhcmdldD0nbWFpbicvPg0KPC9tOnRvcD4=
  20. </menustring>
  21. <readme>
  22. PHAgc3R5bGU9J2xpbmUtaGVpZ2h0OjE1MCUnPjxwIHN0eWxlPSdsaW5lLWhlaWdodDoxNTAlJz48ZGl2IHN0eWxlPSdwYWRkaW5nLWxlZnQ6MjBweDtsaW5lLWhlaWdodDoxNTAlJz48YnIgLz48YnIgLz4NCjxwPueJiOadg+aJgOaciSAoYykyMDAzLTIwMTHvvIxEZWRlQ21zLmNvbSDkv53nlZnmiYDmnInmnYPliKnjgIIgPC9wPjxiciAvPjxiciAvPg0KPHA+5oSf6LCi5oKo6YCJ5oup57uH5qKm5YaF5a65566h55CG57O757uf77yI5Lul5LiL566A56ewRGVkZUNtc++8ie+8jERlZGVDbXPmmK/nm67liY3lm73lhoXmnIDlvLrlpKfjgIHmnIDnqLPlrprnmoTkuK3lsI/lnovpl6jmiLfnvZHnq5nlu7rorr7op6PlhrPmlrnmoYjkuYvkuIDvvIzlsYXkuo4gUEhQICsgTXlTUUwg55qE5oqA5pyv5byA5Y+R77yM5YWo6YOo5rqQ56CB5byA5pS+44CCRGVkZUNtcyDnmoTlrpjmlrnnvZHlnYDmmK/vvJogd3d3LmRlZGVjbXMuY29tICDkuqTmtYHorrrlnZvvvJogYmJzLmRlZGVjbXMuY29tPC9wPjxiciAvPjxiciAvPg0KPHA+5Li65LqG5L2/5L2g5q2j56Gu5bm25ZCI5rOV55qE5L2/55So5pys6L2v5Lu277yM6K+35L2g5Zyo5L2/55So5YmN5Yqh5b+F6ZiF6K+75riF5qWa5LiL6Z2i55qE5Y2P6K6u5p2h5qy+77yaPC9wPjxiciAvPjxiciAvPg0KPHA+PHN0cm9uZz7kuIDjgIHmnKzmjojmnYPljY/orq7pgILnlKjkuJTku4XpgILnlKjkuo4gRGVkZUNtcyA1LngueCDniYjmnKzvvIxEZWRlQ21z5a6Y5pa55a+55pys5o6I5p2D5Y2P6K6u55qE5pyA57uI6Kej6YeK5p2D44CCIDwvc3Ryb25nPjwvcD48YnIgLz48YnIgLz4NCjxwPjxzdHJvbmc+5LqM44CB5Y2P6K6u6K645Y+v55qE5p2D5YipIDwvc3Ryb25nPjxiciAvPjxiciAvPjxiciAvPg0KICAx44CB5oKo5Y+v5Lul5Zyo5a6M5YWo6YG15a6I5pys5pyA57uI55So5oi35o6I5p2D5Y2P6K6u55qE5Z+656GA5LiK77yM5bCG5pys6L2v5Lu25bqU55So5LqO6Z2e5ZWG5Lia55So6YCU77yM6ICM5LiN5b+F5pSv5LuY6L2v5Lu254mI5p2D5o6I5p2D6LS555So44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAy44CB5oKo5Y+v5Lul5Zyo5Y2P6K6u6KeE5a6a55qE57qm5p2f5ZKM6ZmQ5Yi26IyD5Zu05YaF5L+u5pS5IERlZGVDbXMg5rqQ5Luj56CB5oiW55WM6Z2i6aOO5qC85Lul6YCC5bqU5oKo55qE572R56uZ6KaB5rGC44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAz44CB5oKo5oul5pyJ5L2/55So5pys6L2v5Lu25p6E5bu655qE572R56uZ5YWo6YOo5YaF5a655omA5pyJ5p2D77yM5bm254us56uL5om/5ouF5LiO6L+Z5Lqb5YaF5a6555qE55u45YWz5rOV5b6L5LmJ5Yqh44CCIDxiciAvPjxiciAvPjxiciAvPg0KNOOAgeiOt+W+l+WVhuS4muaOiOadg+S5i+WQju+8jOaCqOWPr+S7peWwhuacrOi9r+S7tuW6lOeUqOS6juWVhuS4mueUqOmAlO+8jOWQjOaXtuS+neaNruaJgOi0reS5sOeahOaOiOadg+exu+Wei+S4reehruWumueahOaKgOacr+aUr+aMgeWGheWuue+8jOiHqui0reS5sOaXtuWIu+i1t++8jOWcqOaKgOacr+aUr+aMgeacn+mZkOWGheaLpeaciemAmui/h+aMh+WumueahOaWueW8j+iOt+W+l+aMh+WumuiMg+WbtOWGheeahOaKgOacr+aUr+aMgeacjeWKoeOAguWVhuS4muaOiOadg+eUqOaIt+S6q+acieWPjeaYoOWSjOaPkOWHuuaEj+ingeeahOadg+WKm++8jOebuOWFs+aEj+ingeWwhuiiq+S9nOS4uummluimgeiAg+iZke+8jOS9huayoeacieS4gOWumuiiq+mHh+e6s+eahOaJv+ivuuaIluS/neivgeOAgiA8L3A+PGJyIC8+PGJyIC8+DQo8cD48c3Ryb25nPuS6jOOAgeWNj+iuruinhOWumueahOe6puadn+WSjOmZkOWItiA8L3N0cm9uZz48YnIgLz48YnIgLz48YnIgLz4NCiAgMeOAgeacquiOt+WVhuS4muaOiOadg+S5i+WJje+8jOS4jeW+l+WwhuacrOi9r+S7tueUqOS6juWVhuS4mueUqOmAlO+8iOWMheaLrOS9huS4jemZkOS6juS8geS4mue9keermeOAgee7j+iQpeaAp+e9keermeOAgeS7peiQpeWIqeS4uuebrueahOaIluWunueOsOebiOWIqeeahOe9keerme+8ieOAgui0reS5sOWVhuS4muaOiOadg+ivt+eZu+mZhiBiYnMuZGVkZWNtcy5jb20g5LqG6Kej5pyA5paw6K+05piO44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAy44CB5pyq57uP5a6Y5pa56K645Y+v77yM5LiN5b6X5a+55pys6L2v5Lu25oiW5LiO5LmL5YWz6IGU55qE5ZWG5Lia5o6I5p2D6L+b6KGM5Ye656ef44CB5Ye65ZSu44CB5oq15oq85oiW5Y+R5pS+5a2Q6K645Y+v6K+B44CCIDxiciAvPjxiciAvPjxiciAvPg0KICAz44CB5LiN566h5L2g55qE572R56uZ5piv5ZCm5pW05L2T5L2/55SoIERlZGVDbXMg77yM6L+Y5piv6YOo5Lu95qCP55uu5L2/55SoIERlZGVDbXPvvIzlnKjkvaDkvb/nlKjkuoYgRGVkZUNtcyDnmoTnvZHnq5nkuLvpobXkuIrlv4XpobvliqDkuIogRGVkZUNtcyDlrpjmlrnnvZHlnYAod3d3LmRlZGVjbXMuY29tKeeahOmTvuaOpeOAgiA8YnIgLz48YnIgLz48YnIgLz4NCiAgNOOAgeacque7j+WumOaWueiuuOWPr++8jOemgeatouWcqCBEZWRlQ21zIOeahOaVtOS9k+aIluS7u+S9lemDqOWIhuWfuuehgOS4iuS7peWPkeWxleS7u+S9lea0vueUn+eJiOacrOOAgeS/ruaUueeJiOacrOaIluesrOS4ieaWueeJiOacrOeUqOS6jumHjeaWsOWIhuWPkeOAgiA8YnIgLz48YnIgLz48YnIgLz4NCjXjgIHlpoLmnpzmgqjmnKrog73pgbXlrojmnKzljY/orq7nmoTmnaHmrL7vvIzmgqjnmoTmjojmnYPlsIbooqvnu4jmraLvvIzmiYDooqvorrjlj6/nmoTmnYPliKnlsIbooqvmlLblm57vvIzlubbmib/mi4Xnm7jlupTms5XlvovotKPku7vjgIIgPC9wPjxiciAvPjxiciAvPg0KPHA+PHN0cm9uZz7kuInjgIHmnInpmZDmi4Xkv53lkozlhY3otKPlo7DmmI4gPC9zdHJvbmc+PGJyIC8+PGJyIC8+PGJyIC8+DQogIDHjgIHmnKzova/ku7blj4rmiYDpmYTluKbnmoTmlofku7bmmK/kvZzkuLrkuI3mj5Dkvpvku7vkvZXmmI7noa7nmoTmiJbpmpDlkKvnmoTotZTlgb/miJbmi4Xkv53nmoTlvaLlvI/mj5DkvpvnmoTjgIIgPGJyIC8+PGJyIC8+PGJyIC8+DQogIDLjgIHnlKjmiLflh7rkuo7oh6rmhL/ogIzkvb/nlKjmnKzova/ku7bvvIzmgqjlv4Xpobvkuobop6Pkvb/nlKjmnKzova/ku7bnmoTpo47pmanvvIzlnKjlsJrmnKrotK3kubDkuqflk4HmioDmnK/mnI3liqHkuYvliY3vvIzmiJHku6zkuI3mib/or7rlr7nlhY3otLnnlKjmiLfmj5Dkvpvku7vkvZXlvaLlvI/nmoTmioDmnK/mlK/mjIHjgIHkvb/nlKjmi4Xkv53vvIzkuZ/kuI3mib/mi4Xku7vkvZXlm6Dkvb/nlKjmnKzova/ku7bogIzkuqfnlJ/pl67popjnmoTnm7jlhbPotKPku7vjgIIgPGJyIC8+PGJyIC8+PGJyIC8+DQogIDPjgIHnlLXlrZDmlofmnKzlvaLlvI/nmoTmjojmnYPljY/orq7lpoLlkIzlj4zmlrnkuabpnaLnrb7nvbLnmoTljY/orq7kuIDmoLfvvIzlhbfmnInlrozlhajnmoTlkoznrYnlkIznmoTms5XlvovmlYjlipvjgILmgqjkuIDml6blvIDlp4vnoa7orqTmnKzljY/orq7lubblronoo4UgRGVkZUNtc++8jOWNs+iiq+inhuS4uuWujOWFqOeQhuino+W5tuaOpeWPl+acrOWNj+iurueahOWQhOmhueadoeasvu+8jOWcqOS6q+acieS4iui/sOadoeasvuaOiOS6iOeahOadg+WKm+eahOWQjOaXtu+8jOWPl+WIsOebuOWFs+eahOe6puadn+WSjOmZkOWItuOAguWNj+iuruiuuOWPr+iMg+WbtOS7peWklueahOihjOS4uu+8jOWwhuebtOaOpei/neWPjeacrOaOiOadg+WNj+iuruW5tuaehOaIkOS+teadg++8jOaIkeS7rOacieadg+maj+aXtue7iOatouaOiOadg++8jOi0o+S7pOWBnOatouaNn+Wus++8jOW5tuS/neeVmei/veeptuebuOWFs+i0o+S7u+eahOadg+WKm+OAgiA8YnIgLz48YnIgLz48YnIgLz4NCjTjgIHlpoLmnpzmnKzova/ku7bluKbmnInlhbblroPova/ku7bnmoTmlbTlkIhBUEnnpLrojIPkvovlrZDljIXvvIzov5nkupvmlofku7bniYjmnYPkuI3lsZ7kuo7mnKzova/ku7blrpjmlrnvvIzlubbkuJTov5nkupvmlofku7bmmK/msqHnu4/ov4fmjojmnYPlj5HluIPnmoTvvIzor7flj4LogIPnm7jlhbPova/ku7bnmoTkvb/nlKjorrjlj6/lkIjms5XnmoTkvb/nlKjjgII8L3A+PGJyIC8+PGJyIC8+DQo8cD7ljY/orq7lj5HluIPml7bpl7TvvJogIDIwMDflubQxMuaciDHml6UgQnkgRGVkZUNtcy5jb208L3A+PGJyIC8+PGJyIC8+DQo8cD48L3A+PC9wPjwvcD4=
  23. </readme>
  24. <setupsql40>
  25. RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX21kYV9zZXR0aW5nYDsNCkNSRUFURSBUQUJMRSBgI0BfX3BsdXNfbWRhX3NldHRpbmdgICgNCglgc2tleWAgVkFSQ0hBUigyNTUpIE5PVCBOVUxMIERFRkFVTFQgJycsDQoJYHN2YWx1ZWAgVEVYVCBOT1QgTlVMTCwNCglgc3RpbWVgIElOVCgxMCkgTk9UIE5VTEwsDQoJUFJJTUFSWSBLRVkgKGBza2V5YCkNCilUWVBFPU15SVNBTTsNCklOU0VSVCBJTlRPIGAjQF9fcGx1c19tZGFfc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ3ZlcnNpb24nLCAnMC4wLjEnLCAwKTsNCklOU0VSVCBJTlRPIGAjQF9fcGx1c19tZGFfc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ2NoYW5uZWxfdXVpZCcsICcnLCAwKTsNCklOU0VSVCBJTlRPIGAjQF9fcGx1c19tZGFfc2V0dGluZ2AgKGBza2V5YCwgYHN2YWx1ZWAsIGBzdGltZWApIFZBTFVFUyAoJ2NoYW5uZWxfc2VjcmV0JywgJycsIDApOw0KSU5TRVJUIElOVE8gYCNAX19wbHVzX21kYV9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTICgnZW1haWwnLCAnJywgMCk7
  26. </setupsql40>
  27. <delsql>
  28. RFJPUCBUQUJMRSBJRiBFWElTVFMgYCNAX19wbHVzX21kYV9zZXR0aW5nYDs=
  29. </delsql>
  30. <setup>
  31. </setup>
  32. <uninstall>
  33. </uninstall>
  34. <oldfilelist>
  35. ../include/helpers/mda.helper.php
  36. ../include/taglib/mda.lib.php
  37. mda_main.php
  38. </oldfilelist>
  39. </systemfile>
  40. <modulefiles>
  41. <file type='file' name='../include/helpers/mda.helper.php'>
  42. PD9waHAgaWYoIWRlZmluZWQoJ0RFREVJTkMnKSkgZXhpdCgnZGVkZWNtcycpOwoKZGVmaW5lKCdNREFfQVBJSE9TVCcsICdodHRwOi8vc3NwLmRlc2Rldi5jbicpOwoKZGVmaW5lKCdNREFfSlFVRVJZJywgTURBX0FQSUhPU1QuJy9hc3NldHMvanMvanF1ZXJ5Lm1pbi5qcycpOwpkZWZpbmUoJ01EQV9SRUdfVVJMJywgTURBX0FQSUhPU1QuJy9ob21lL3JlZ2lzdGVyJyk7CmRlZmluZSgnTURBX0ZPUkdPVF9QQVNTV09SRF9VUkwnLCBNREFfQVBJSE9TVC4nL2hvbWUvZm9yZ290X3Bhc3N3b3JkJyk7CmRlZmluZSgnTURBX1VQREFURV9VUkwnLCBNREFfQVBJSE9TVC4nL2hvbWUvdXBkYXRlJyk7CgpkZWZpbmUoJ01EQV9BUElfQklORF9VU0VSJywgTURBX0FQSUhPU1QuJy9hcGlfdjEvZGVkZWNtcy9iaW5kX3VzZXInKTsKZGVmaW5lKCdNREFfQVBJX0xPR0lOJywgTURBX0FQSUhPU1QuJy9hcGlfdjEvZGVkZWNtcy9sb2dpbicpOwpkZWZpbmUoJ01EQV9BUElfQ0hFQ0tfTE9HSU4nLCBNREFfQVBJSE9TVC4nL2FwaV92MS9kZWRlY21zL2NoZWNrX2xvZ2luJyk7CmRlZmluZSgnTURBX0FQSV9HRVRfUExBQ0UnLCBNREFfQVBJSE9TVC4nL2FwaV92MS9kZWRlY21zL2dldF9wbGFjZScpOwoKZGVmaW5lKCdNREFfVkVSJywgJzAuMC4xJyk7CgpmdW5jdGlvbiBtZGFfaHR0cF9zZW5kKCR1cmwsICRsaW1pdD0wLCAkcG9zdD0nJywgJGNvb2tpZT0nJywgJHRpbWVvdXQ9MTUpCnsKICAgICRyZXR1cm4gPSAnJzsKICAgICRtYXRjaGVzID0gcGFyc2VfdXJsKCR1cmwpOwogICAgJHNjaGVtZSA9ICRtYXRjaGVzWydzY2hlbWUnXTsKICAgICRob3N0ID0gJG1hdGNoZXNbJ2hvc3QnXTsKICAgICRwYXRoID0gJG1hdGNoZXNbJ3BhdGgnXSA/ICRtYXRjaGVzWydwYXRoJ10uKEAkbWF0Y2hlc1sncXVlcnknXSA/ICc/Jy4kbWF0Y2hlc1sncXVlcnknXSA6ICcnKSA6ICcvJzsKICAgICRwb3J0ID0gIWVtcHR5KCRtYXRjaGVzWydwb3J0J10pID8gJG1hdGNoZXNbJ3BvcnQnXSA6IDgwOwoKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpICYmIGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkc2NoZW1lLic6Ly8nLiRob3N0Lic6Jy4kcG9ydC4kcGF0aCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOwogICAgICAgIGlmICgkcG9zdCkgewogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgMSk7CiAgICAgICAgICAgICRjb250ZW50ID0gaXNfYXJyYXkoJHBvc3QpID8gaHR0cF9idWlsZF9xdWVyeSgkcG9zdCkgOiAkcG9zdDsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsIHVybGRlY29kZSgkY29udGVudCkpOwogICAgICAgIH0KICAgICAgICBpZiAoJGNvb2tpZSkgewogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFLCAkY29va2llKTsKICAgICAgICB9CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAkdGltZW91dCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDkwMCk7CiAgICAgICAgJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAkc3RhdHVzID0gY3VybF9nZXRpbmZvKCRjaCk7CiAgICAgICAgJGVycm5vID0gY3VybF9lcnJubygkY2gpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICAKICAgICAgICBpZiAoJGVycm5vICkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICEkbGltaXQgPyAkZGF0YSA6IHN1YnN0cigkZGF0YSwgMCwgJGxpbWl0KTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRwb3N0KSB7CiAgICAgICAgJGNvbnRlbnQgPSBpc19hcnJheSgkcG9zdCkgPyB1cmxkZWNvZGUoaHR0cF9idWlsZF9xdWVyeSgkcG9zdCkpIDogJHBvc3Q7CiAgICAgICAgJG91dCA9ICJQT1NUICRwYXRoIEhUVFAvMS4wXHJcbiI7CiAgICAgICAgJGhlYWRlciA9ICJBY2NlcHQ6ICovKlxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIkFjY2VwdC1MYW5ndWFnZTogemgtY25cclxuIjsKICAgICAgICAkaGVhZGVyIC49ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIlVzZXItQWdlbnQ6ICIuQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXS4iXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiSG9zdDogJGhvc3Q6JHBvcnRcclxuIjsKICAgICAgICAkaGVhZGVyIC49ICdDb250ZW50LUxlbmd0aDogJy5zdHJsZW4oJGNvbnRlbnQpLiJcclxuIjsKICAgICAgICAkaGVhZGVyIC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiQ29va2llOiAkY29va2llXHJcblxyXG4iOwogICAgICAgICRvdXQgLj0gJGhlYWRlci4kY29udGVudDsKICAgIH0gZWxzZSB7CiAgICAgICAgJG91dCA9ICJHRVQgJHBhdGggSFRUUC8xLjBcclxuIjsKICAgICAgICAkaGVhZGVyID0gIkFjY2VwdDogKi8qXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiQWNjZXB0LUxhbmd1YWdlOiB6aC1jblxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIlVzZXItQWdlbnQ6ICIuQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXS4iXHJcbiI7CiAgICAgICAgJGhlYWRlciAuPSAiSG9zdDogJGhvc3Q6JHBvcnRcclxuIjsKICAgICAgICAkaGVhZGVyIC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG4iOwogICAgICAgICRoZWFkZXIgLj0gIkNvb2tpZTogJGNvb2tpZVxyXG5cclxuIjsKICAgICAgICAkb3V0IC49ICRoZWFkZXI7CiAgICB9CgogICAgJGZwZmxhZyA9IDA7CiAgICAkZnAgPSBmYWxzZTsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2Zzb2NrZXRvcGVuJykpIHsKICAgICAgICAkZnAgPSBmc29ja2V0b3BlbigkaG9zdCwgJHBvcnQsICRlcnJubywgJGVycnN0ciwgJHRpbWVvdXQpOwogICAgfQogICAgaWYgKCEkZnApIHsKICAgICAgICAkY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgKICAgICAgICAgICAgJ2h0dHAnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ21ldGhvZCcgPT4gJHBvc3QgPyAnUE9TVCcgOiAnR0VUJywKICAgICAgICAgICAgICAgICdoZWFkZXInID0+ICRoZWFkZXIsCiAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJGNvbnRlbnQsCiAgICAgICAgICAgICAgICAndGltZW91dCcgPT4gJHRpbWVvdXQsCiAgICAgICAgICAgICksCiAgICAgICAgKSk7CiAgICAgICAgJGZwID0gQGZvcGVuKCRzY2hlbWUuJzovLycuJGhvc3QuJzonLiRwb3J0LiRwYXRoLCAnYicsIGZhbHNlLCAkY29udGV4dCk7CiAgICAgICAgJGZwZmxhZyA9IDE7CiAgICB9CgogICAgaWYgKCEkZnApIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9IGVsc2UgewogICAgICAgIHN0cmVhbV9zZXRfYmxvY2tpbmcoJGZwLCB0cnVlKTsKICAgICAgICBzdHJlYW1fc2V0X3RpbWVvdXQoJGZwLCAkdGltZW91dCk7CiAgICAgICAgQGZ3cml0ZSgkZnAsICRvdXQpOwogICAgICAgICRzdGF0dXMgPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZnApOwogICAgICAgIGlmICghJHN0YXR1c1sndGltZWRfb3V0J10pIHsKICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmcCkgJiYgISRmcGZsYWcpIHsKICAgICAgICAgICAgICAgIGlmICgoJGhlYWRlciA9IEBmZ2V0cygkZnApKSAmJiAoJGhlYWRlciA9PSAiXHJcbiIgfHwgICRoZWFkZXIgPT0gIlxuIikpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGxpbWl0KSB7CiAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3RyZWFtX2dldF9jb250ZW50cygkZnAsICRsaW1pdCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3RyZWFtX2dldF9jb250ZW50cygkZnApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEBmY2xvc2UoJGZwKTsKICAgICAgICByZXR1cm4gJHJldHVybjsKICAgIH0KfQoKZnVuY3Rpb24gbWRhX2dldF9zZXR0aW5nKCRza2V5LCAkdGltZT1mYWxzZSwgJHJlYWw9ZmFsc2UpCnsKICAgIGdsb2JhbCAkZHNxbDsKICAgIHN0YXRpYyAkc2V0dGluZyA9IGFycmF5KCk7CiAgICAkc2tleT1hZGRzbGFzaGVzKCRza2V5KTsKICAgIGlmIChlbXB0eSgkc2V0dGluZ1skc2tleV0pIHx8ICRyZWFsKSB7CiAgICAgICAgJHJvdyA9ICRkc3FsLT5HZXRPbmUoIlNFTEVDVCAqIEZST00gYCNAX19wbHVzX21kYV9zZXR0aW5nYCBXSEVSRSBza2V5PSd7JHNrZXl9JyIpOwogICAgICAgICRzZXR0aW5nWyRza2V5XVsnc3ZhbHVlJ109JHJvd1snc3ZhbHVlJ107CiAgICAgICAgJHNldHRpbmdbJHNrZXldWydzdGltZSddPSRyb3dbJ3N0aW1lJ107CiAgICB9CiAgICBpZiAoIWlzc2V0KCRzZXR0aW5nWyRza2V5XSkpIHJldHVybiAkdGltZSA/IGFycmF5KCkgOiBudWxsOwogICAgaWYgKCAkc2tleSA9PSAnY2hhbm5lbF91dWlkJyBBTkQgZW1wdHkoJHNldHRpbmdbJHNrZXldWydzdmFsdWUnXSkgKSByZXR1cm4gJzU4Yjc4MzE5YTBlZmUnOwogICAgaWYgKCAkc2tleSA9PSAnY2hhbm5lbF9zZWNyZXQnIEFORCBlbXB0eSgkc2V0dGluZ1skc2tleV1bJ3N2YWx1ZSddKSApIHJldHVybiAnbERROTdMSWI0Tlh3Q1Yyeic7CiAgICByZXR1cm4gJHRpbWUgPyAkc2V0dGluZ1skc2tleV0gOiAkc2V0dGluZ1skc2tleV1bJ3N2YWx1ZSddOwp9CgpmdW5jdGlvbiBtZGFfc2V0X3NldHRpbmcoJHNrZXksICRzdmFsdWUpCnsKICAgIGdsb2JhbCAkZHNxbDsKICAgICRzdGltZT10aW1lKCk7CiAgICAkc2tleT1hZGRzbGFzaGVzKCRza2V5KTsKICAgICRzdmFsdWU9YWRkc2xhc2hlcygkc3ZhbHVlKTsKICAgICRzcWw9IlVQREFURSBgI0BfX3BsdXNfbWRhX3NldHRpbmdgIFNFVCBzdmFsdWU9J3skc3ZhbHVlfScsc3RpbWU9J3skc3RpbWV9JyBXSEVSRSBza2V5PSd7JHNrZXl9JyAiOwogICAgJGRzcWwtPkV4ZWN1dGVOb25lUXVlcnkoJHNxbCk7Cn0KCmZ1bmN0aW9uIG1kYV9jaGVja19pc2xvZ2luKCkKewogICAgZ2xvYmFsICRkb3Bvc3Q7CiAgICAkanF1ZXJ5X3VybCA9IE1EQV9KUVVFUlk7CiAgICAkbWRhX2xvZ2luPU1EQV9BUElfQ0hFQ0tfTE9HSU47CiAgICBlY2hvIDw8PEVPVAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JGpxdWVyeV91cmx9Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgooZnVuY3Rpb24oJCl7CiAgICAkLmFqYXgoewogICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgIHVybDogInskbWRhX2xvZ2lufSIsCiAgICAgICAgZGF0YVR5cGUgOiAnanNvbnAnLAogICAgICAgIGpzb25wQ2FsbGJhY2s6ImNhbGxmdW5jIiwKICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihtc2cpewogICAgICAgICAgICBpZihtc2cuY29kZSAhPSAwKXsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmPSc/ZG9wb3N0PWxvZ2luJm5vbXNnPXllcyZmb3J3YXJkPXskZG9wb3N0fSc7CiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCBtc2cgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwp9KShqUXVlcnkpCjwvc2NyaXB0PiAgICAKRU9UOwogICAgLy9leGl0Owp9CgpmdW5jdGlvbiBtZGFfaXNsb2dpbigpCnsKICAgIGlmKGVtcHR5KCRfU0VTU0lPTlsnbWRhX2VtYWlsJ10pKSB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgJGVtYWlsID0gbWRhX2dldF9zZXR0aW5nKCdlbWFpbCcpOwogICAgJGNoYW5uZWxfdXVpZCA9IG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJyk7CiAgICAkY2hhbm5lbF9zZWNyZXQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0Jyk7CiAgICBpZihlbXB0eSgkZW1haWwpIE9SIGVtcHR5KCRjaGFubmVsX3V1aWQpIE9SIGVtcHR5KCRjaGFubmVsX3V1aWQpKSB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgcmV0dXJuIFRSVUU7Cn0KPz4K
  43. </file>
  44. <file type='file' name='../include/taglib/mda.lib.php'>
  45. PD9waHAgICBpZighZGVmaW5lZCgnREVERUlOQycpKSBleGl0KCdSZXF1ZXN0IEVycm9yIScpOwoKaGVscGVyKCdtZGEnKTsKaGVscGVyKCdjYWNoZScpOwoKZnVuY3Rpb24gbGliX21kYSgmJGN0YWcsJiRyZWZPYmopCnsKICAgIGdsb2JhbCAkZHNxbCwgJGVudnMsICRjZmdfc29mdF9sYW5nOwogICAgLy/lsZ7mgKflpITnkIYKICAgICR0eXBlID0gZW1wdHkoJHR5cGUpPyAnY29kZScgOiAkdHlwZTsKICAgICRjbGFzcyA9IGVtcHR5KCRjbGFzcyk/ICdfREVERUNZJyA6ICRjbGFzczsKICAgICR2ZXJzaW9uID0gTURBX1ZFUjsKICAgICRhdHRsaXN0PSJ1dWlkfCxuYW1lfCI7CiAgICBGaWxsQXR0c0RlZmF1bHQoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCRhdHRsaXN0KTsKICAgIGV4dHJhY3QoJGN0YWctPkNBdHRyaWJ1dGUtPkl0ZW1zLCBFWFRSX1NLSVApOwoKICAgIGlmICggZW1wdHkoJHV1aWQpIEFORCBlbXB0eSgkbmFtZSkgKSByZXR1cm4gJ+Whq+WGmeato+ehrueahHV1aWQg5oiWIG5hbWUnOwogICAgCiAgICAkcmV2YWw9IiI7CiAgICAKICAgIC8vaWYoICEkZHNxbC0+SXNUYWJsZSgiI0BfX3BsdXNfbWRhX3NldHRpbmciKSApIHJldHVybiAn5rKh5a6J6KOFPGEgaHJlZj0iJy5NREFfQVBJSE9TVC4nIiB0YXJnZXQ9Il9ibGFuayI+5b635b6X5bm/5ZGK5qih5Z2XPC9hPic7CiAgICAKICAgICRlbWFpbCA9IG1kYV9nZXRfc2V0dGluZygnZW1haWwnKTsKICAgICRjaGFubmVsX3V1aWQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfdXVpZCcpOwogICAgCiAgICAkY2hhbm5lbF9zZWNyZXQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0Jyk7CiAgICAgICAgCiAgICAvL2lmKGVtcHR5KCRjaGFubmVsX3V1aWQpKSByZXR1cm4gJ+Wwmuacque7keWumuW+t+W+l+W5v+WRiui0puWPt++8jOivtzxhIGhyZWY9IicuTURBX0FQSUhPU1QuJy9ob21lL3JlZ2lzdGVyIiB0YXJnZXQ9Il9ibGFuayI+5rOo5YaMPC9hPuW5tuWIsOezu+e7n+WQjuWPsOe7keWumic7CiAgICAKICAgICRwcmVmaXggPSAnbWRhJzsKICAgICRrZXkgPSAnY29kZScubWQ1KCR1dWlkLiRuYW1lKTsKICAgICRyb3cgPSBHZXRDYWNoZSgkcHJlZml4LCAka2V5KTsKCiAgICBpZighaXNfYXJyYXkoJHJvdykpCiAgICB7CiAgICAgICAgJHRzID0gdGltZSgpOwogICAgICAgICRwYXJhbXNBcnI9YXJyYXkoCiAgICAgICAgICAgICdjaGFubmVsX3V1aWQnPT4kY2hhbm5lbF91dWlkLCAKICAgICAgICAgICAgJ2NoYW5uZWxfc2VjcmV0Jz0+JGNoYW5uZWxfc2VjcmV0LAogICAgICAgICAgICAndHMnPT4kdHMsCiAgICAgICAgICAgICdjcmMnPT5tZDUoJGNoYW5uZWxfdXVpZC4kY2hhbm5lbF9zZWNyZXQuJHRzKSwKICAgICAgICApOwogICAgICAgIGlmICggIWVtcHR5KCR1dWlkKSApCiAgICAgICAgewogICAgICAgICAgICAkcGFyYW1zQXJyWydwbGFjZV91dWlkJ10gPSAkdXVpZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcGFyYW1zQXJyWyd0YWdfbmFtZSddID0gdXJsZW5jb2RlKCRuYW1lKTsKICAgICAgICB9CgogICAgICAgICRwbGFjZSA9IGpzb25fZGVjb2RlKG1kYV9odHRwX3NlbmQoTURBX0FQSV9HRVRfUExBQ0UsMCwkcGFyYW1zQXJyKSxUUlVFKTsKICAgICAgICAKICAgICAgICBpZiAoIWlzc2V0KCRwbGFjZVsnZGF0YSddWydwbGFjZV9jb2RlJ10pICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAn5bm/5ZGK5L2NQVBJ5o6l5Y+j6YCa5L+h6ZSZ6K+v77yM5p+l55yLPGEgaHJlZj0iJy5NREFfQVBJSE9TVC4nL2hlbHAvYXBpY29kZS8nLiRwbGFjZVsnY29kZSddLiciIHRhcmdldD0iX2JsYW5rIj7lvrflvpflub/lkYo8L2E+6I635Y+W5biu5YqpJzsKICAgICAgICB9CiAgICAKICAgICAgICAkcm93WydyZXZhbCddID0gaHRtbHNwZWNpYWxjaGFycygkcGxhY2VbJ2RhdGEnXVsncGxhY2VfY29kZSddKTsKICAgICAgICBTZXRDYWNoZSgkcHJlZml4LCAka2V5LCAkcm93LCA2MCo2MCoxMik7CiAgICB9CgogICAgaWYoJGNmZ19zb2Z0X2xhbmcgIT0gJ3V0Zi04JykgJHJvdyA9IEF1dG9DaGFyc2V0KCRyb3csICd1dGYtOCcsICdnYjIzMTInKTsKICAgIAogICAgJHJldmFsIC49IGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCRyb3dbJ3JldmFsJ10pOwogICAgICAgIAogICAgcmV0dXJuICRyZXZhbDsKfQoK
  46. </file>
  47. <file type='file' name='mda_main.php'>
  48. PD9waHANCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2NvbmZpZy5waHAnKTsNCnJlcXVpcmVfb25jZShERURFSU5DLiIvb3h3aW5kb3cuY2xhc3MucGhwIik7DQoNCmhlbHBlcignbWRhJyk7DQoNCiRpbnN0YWxsX3NxbHMgPSBhcnJheSgNCiJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgI0BfX3BsdXNfbWRhX3NldHRpbmdgICgNCiAgYHNrZXlgIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCBERUZBVUxUICcnLA0KICBgc3ZhbHVlYCB0ZXh0IE5PVCBOVUxMLA0KICBgc3RpbWVgIGludCgxMCkgTk9UIE5VTEwsDQogIFBSSU1BUlkgS0VZIChgc2tleWApDQopIFRZUEU9TXlJU0FNOyIsDQoiSU5TRVJUIElOVE8gYCNAX19wbHVzX21kYV9zZXR0aW5nYCAoYHNrZXlgLCBgc3ZhbHVlYCwgYHN0aW1lYCkgVkFMVUVTDQooJ3ZlcnNpb24nLCAnMC4wLjEnLCAwKSwNCignY2hhbm5lbF91dWlkJywgJzAnLCAwKSwNCignY2hhbm5lbF9zZWNyZXQnLCAnMCcsIDApLA0KKCdlbWFpbCcsICcwJywgMCk7IiwNCik7DQoNCiR1cGRhdGVfc3FscyA9IGFycmF5KA0KKTsNCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX2luc3RhbGwoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQppZiAoISAkZHNxbC0+SXNUYWJsZSgnI0BfX3BsdXNfbWRhX3NldHRpbmcnKSApDQp7DQogICAgJG15c3FsX3ZlcnNpb24gPSAkZHNxbC0+R2V0VmVyc2lvbihUUlVFKTsNCiAgICANCiAgICBmb3JlYWNoKCAkaW5zdGFsbF9zcWxzIGFzICRpbnN0YWxsX3NxbCApDQogICAgew0KICAgICAgICAkc3FsID0gcHJlZ19yZXBsYWNlKCIjRU5HSU5FPU15SVNBTSNpIiwgJ1RZUEU9TXlJU0FNJywgJGluc3RhbGxfc3FsKTsNCiAgICAgICAgJHNxbDQxdG1wID0gJ0VOR0lORT1NeUlTQU0gREVGQVVMVCBDSEFSU0VUPScuJGNmZ19kYl9sYW5ndWFnZTsNCiAgICAgICAgDQogICAgICAgIGlmKCRteXNxbF92ZXJzaW9uID49IDQuMSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHNxbCA9IHByZWdfcmVwbGFjZSgiI1RZUEU9TXlJU0FNI2kiLCAkc3FsNDF0bXAsICRzcWwpOw0KICAgICAgICB9DQogICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRzcWwpOw0KICAgIH0NCg0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX3VwZGF0ZSgpeyAgfQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCiR2ZXJzaW9uPW1kYV9nZXRfc2V0dGluZygndmVyc2lvbicpOw0KaWYgKGVtcHR5KCR2ZXJzaW9uKSkgJHZlcnNpb24gPSAnMC4wLjEnOw0KaWYgKHZlcnNpb25fY29tcGFyZSgkdmVyc2lvbiwgTURBX1ZFUiwgJzwnKSkgew0KICAgICRteXNxbF92ZXJzaW9uID0gJGRzcWwtPkdldFZlcnNpb24oVFJVRSk7DQoNCiAgICBmb3JlYWNoICgkdXBkYXRlX3NxbHMgYXMgJHZlciA9PiAkc3Fscykgew0KICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKCR2ZXIsICR2ZXJzaW9uLCc8JykpIHsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQogICAgICAgIGZvcmVhY2ggKCRzcWxzIGFzICRzcWwpIHsNCiAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIiNFTkdJTkU9TXlJU0FNI2kiLCAnVFlQRT1NeUlTQU0nLCAkc3FsKTsNCiAgICAgICAgICAgICRzcWw0MXRtcCA9ICdFTkdJTkU9TXlJU0FNIERFRkFVTFQgQ0hBUlNFVD0nLiRjZmdfZGJfbGFuZ3VhZ2U7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKCRteXNxbF92ZXJzaW9uID49IDQuMSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkc3FsID0gcHJlZ19yZXBsYWNlKCIjVFlQRT1NeUlTQU0jaSIsICRzcWw0MXRtcCwgJHNxbCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZHNxbC0+RXhlY3V0ZU5vbmVRdWVyeSgkc3FsKTsNCiAgICAgICAgfQ0KICAgICAgICBtZGFfc2V0X3NldHRpbmcoJ3ZlcnNpb24nLCAkdmVyKTsNCiAgICAgICAgJHZlcnNpb249bWRhX2dldF9zZXR0aW5nKCd2ZXJzaW9uJyk7DQogICAgfQ0KfQ0KDQppZihlbXB0eSgkZG9wb3N0KSkgJGRvcG9zdCA9ICcnOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX2xpbmsoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KaWYoJGRvcG9zdCA9PSAncGxhY2UnIE9SICRkb3Bvc3QgPT0gJ3JlcG9ydCcgT1IgJGRvcG9zdCA9PSAnYWNjb3VudCcgT1IgJGRvcG9zdCA9PSAnc2V0dGluZycpDQp7DQogICAgaWYgKCAhbWRhX2lzbG9naW4oKSApDQogICAgew0KICAgICAgICBTaG93TXNnKCLmgqjlsJrmnKrnmbvlvZXlvrflvpflub/lkYrvvIzor7flhYjnmbvlvZXlkI7nu6fnu63kvb/nlKjigKbigKbvvIEiLCc/ZG9wb3N0PWxvZ2luJyk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgbWRhX2NoZWNrX2lzbG9naW4oKTsNCg0KICAgIGlmKCRkb3Bvc3Q9PSdwbGFjZScpIA0KICAgIHsNCiAgICAgICAgJGNoYW5uZWxfdXVpZCA9IG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJyk7DQogICAgICAgICRtYW5hZ2VfdXJsID0gTURBX0FQSUhPU1QuIi9wbGFjZT9mcm9tPWRlZGVjbXMmdXVpZD17JGNoYW5uZWxfdXVpZH0iOw0KICAgICAgICAkcHRpdGxlID0gJ+W5v+WRiueuoeeQhic7DQogICAgfSBlbHNlaWYgKCRkb3Bvc3Q9PSdyZXBvcnQnKQ0KICAgIHsNCiAgICAgICAgJG1hbmFnZV91cmwgPSBNREFfQVBJSE9TVC4iL3JlcG9ydCI7DQogICAgICAgICRwdGl0bGUgPSAn5oql6KGo566h55CGJzsNCiAgICB9IGVsc2VpZiAoJGRvcG9zdD09J2FjY291bnQnKQ0KICAgIHsNCiAgICAgICAgJG1hbmFnZV91cmwgPSBNREFfQVBJSE9TVC4iL2FjY291bnQiOw0KICAgICAgICAkcHRpdGxlID0gJ+e7k+eul+S4reW/gyc7DQogICAgfSBlbHNlaWYgKCRkb3Bvc3Q9PSdzZXR0aW5nJykNCiAgICB7DQogICAgICAgICRtYW5hZ2VfdXJsID0gTURBX0FQSUhPU1QuIi9zZXR0aW5nIjsNCiAgICAgICAgJHB0aXRsZSA9ICflvrflvpforr7nva4nOw0KICAgIH0NCg0KICAgIGVjaG8gPDw8RU9UDQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eyRjZmdfc29mdF9sYW5nfSI+DQo8dGl0bGU+eyRwdGl0bGV9PC90aXRsZT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9iYXNlLmNzcyI+DQo8L2hlYWQ+DQo8Ym9keSBiYWNrZ3JvdW5kPSdpbWFnZXMvYWxsYmcuZ2lmJyBsZWZ0bWFyZ2luPSI4IiB0b3BtYXJnaW49JzgnPg0KPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjREZGOUFBIiBoZWlnaHQ9IjEwMCUiPg0KICA8dHI+DQogICAgPHRkIGhlaWdodD0iMjgiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNEQURBREEiIGJhY2tncm91bmQ9J2ltYWdlcy93YmcuZ2lmJz4NCiAgICANCiAgICA8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0Ij4mbmJzcDs8Yj7il4c8YSBocmVmPSI/Ij7lvrflvpflub/lkYo8L2E+IOOAi3skcHRpdGxlfTwvYj48L2Rpdj4NCiAgICA8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDttYXJnaW4tcmlnaHQ6MjBweDsiPuaCqOWlve+8mnskX1NFU1NJT05bJ21kYV9lbWFpbCddfSB7JGFjY291bnRfc3RyfTwvZGl2Pg0KICAgIDwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmFsaWduPSJ0b3AiIGJnY29sb3I9JyNmZmZmZmYnIHN0eWxlPSJwYWRkaW5nLXRvcDo1cHgiPjx0YWJsZSB3aWR0aD0nMTAwJScgIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzMnIGNlbGxzcGFjaW5nPScxJyBiZ2NvbG9yPScjREFEQURBJyBoZWlnaHQ9IjEwMCUiPg0KICAgICAgICA8dHIgYmdjb2xvcj0nI0RBREFEQSc+DQogICAgICAgICAgPHRkIGNvbHNwYW49JzInIGJhY2tncm91bmQ9J2ltYWdlcy93YmcuZ2lmJyBoZWlnaHQ9JzI2Jz48Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+eyRwdGl0bGV9PC9iPjwvZm9udD48L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgICB7JGFkZHN0cn0NCiAgICAgICAgPHRyIGJnY29sb3I9JyNGRkZGRkYnPg0KICAgICAgICAgIDx0ZCBjb2xzcGFuPScyJyBoZWlnaHQ9JzEwMCUnPjxpZnJhbWUgc3JjPSJ7JG1hbmFnZV91cmx9IiB7JGFkZHN0eWxlfSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBzdHlsZT0iYm9yZGVyOm5vbmUiIG9ubG9hZD0iaWYodGhpcy5wb3N0TWVzc2FnZSl7dGhpcy5wb3N0TWVzc2FnZSgnb2snKX0iPjwvaWZyYW1lPjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGQgYmdjb2xvcj0nI0Y1RjVGNSc+Jm5ic3A7PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgIDwvdGFibGU+PC90ZD4NCiAgPC90cj4NCjwvdGFibGU+DQo8cCBhbGlnbj0iY2VudGVyIj4gPGJyPg0KICA8YnI+DQo8L3A+DQo8L2JvZHk+DQo8L2h0bWw+DQoNCkVPVDsNCn0NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9fY2xlYXJjYWNoZSgpeyAgfQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQplbHNlIGlmKCRkb3Bvc3QgPT0gJ2NsZWFyY2FjaGUnKXsNCiAgICBpZiAoIWlzX2RpcihERURFREFUQSAuICIvY2FjaGUvbWRhLyIpIE9SICBSbVJlY3Vyc2UoREVERURBVEEgLiAiL2NhY2hlL21kYS8iKSApDQogICAgew0KICAgICAgICBTaG93TXNnKCLmiJDlip/muIXpmaTnvJPlrZjkv6Hmga8iLC0xKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIFNob3dNc2coIua4hemZpOe8k+WtmOWksei0pe+8jOivt+WwneivleaJi+W3peWIoOmZpCIuREVERURBVEEuIi9jYWNoZS9tZGEvIiwgJ2phdmFzY3JpcHQ6OycpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KfQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX19iaW5kX3VzZXIoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZWxzZSBpZigkZG9wb3N0ID09ICdiaW5kX3VzZXInKQ0Kew0KICAgICRlbWFpbCA9IGlzc2V0KCRlbWFpbCk/ICRlbWFpbCA6ICcnOw0KICAgICRwd2QgPSBpc3NldCgkcHdkKT8gJHB3ZCA6ICcnOw0KICAgICRkb21haW4gPSBpc3NldCgkZG9tYWluKT8gJGRvbWFpbiA6ICcnOw0KICAgICRjaGFubmVsX25hbWUgPSBpc3NldCgkY2hhbm5lbF9uYW1lKT8gJGNoYW5uZWxfbmFtZSA6ICcnOw0KICAgIGlmICggISRlbWFpbCBPUiAhJHB3ZCBPUiAhJGRvbWFpbiBPUiAhJGNoYW5uZWxfbmFtZSkNCiAgICB7DQogICAgICAgIFNob3dNc2coIuWhq+WGmeato+ehrueahOi0puWPt+S/oeaBr++8gSIsLTEpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgIGlmKCRjZmdfc29mdF9sYW5nPT0nZ2IyMzEyJykgJGNoYW5uZWxfbmFtZSA9IGdiMnV0ZjgoJGNoYW5uZWxfbmFtZSk7DQogICAgJHBhcmFtc0Fycj1hcnJheSgNCiAgICAgICAgJ2VtYWlsJz0+JGVtYWlsLCANCiAgICAgICAgJ3Bhc3N3b3JkJz0+JHB3ZCwNCiAgICAgICAgJ2RvbWFpbic9PiRkb21haW4sDQogICAgICAgICdjaGFubmVsX25hbWUnPT4kY2hhbm5lbF9uYW1lLA0KICAgICk7DQogICAgJHJzID0ganNvbl9kZWNvZGUobWRhX2h0dHBfc2VuZChNREFfQVBJX0JJTkRfVVNFUiwwLCRwYXJhbXNBcnIpLFRSVUUpOw0KICAgIGlmICggISRycyApDQogICAgew0KICAgICAgICBTaG93TXNnKCLor7fmsYJBUEnplJnor6/vvIzor7fph43or5XvvIEiLC0xKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICBpZiAoICRyc1snY29kZSddICE9IDAgKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi6K+35rGC5aSx6LSl77yM6ZSZ6K+v5Luj56CBW2NvZGU6eyRyc1snY29kZSddfV3vvIzmtojmga9beyRyc1snbXNnJ119XSIsLTEpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KICAgICRjaGFubmVsX3V1aWQgPSAkcnNbJ2RhdGEnXVsnY2hhbm5lbF91dWlkJ107DQogICAgJGNoYW5uZWxfc2VjcmV0ID0gJHJzWydkYXRhJ11bJ2NoYW5uZWxfc2VjcmV0J107DQoNCiAgICBtZGFfc2V0X3NldHRpbmcoJ2VtYWlsJywgJGVtYWlsKTsNCiAgICBtZGFfc2V0X3NldHRpbmcoJ2NoYW5uZWxfdXVpZCcsICRjaGFubmVsX3V1aWQpOw0KICAgIG1kYV9zZXRfc2V0dGluZygnY2hhbm5lbF9zZWNyZXQnLCAkY2hhbm5lbF9zZWNyZXQpOw0KICAgICRsb2dpbl91cmwgPSAiP2RvcG9zdD1sb2dpbiI7DQogICAgZWNobyA8PDxFT1QNCjxpZnJhbWUgc3JjPSJ7JGxvZ2luX3VybH0iIHNjcm9sbGluZz0ibm8iIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHN0eWxlPSJib3JkZXI6bm9uZSI+PC9pZnJhbWU+DQpFT1Q7DQogICAgU2hvd01zZygi57uR5a6a5oiQ5Yqf77yM5LiL6Z2i6Ieq5Yqo55m75b2V5b635b6X5bm/5ZGK5bmz5Y+wIiwgIj9kb3Bvc3Q9bG9naW4iKTsNCiAgICBleGl0KCk7DQp9DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfX2xvZ2luKCl7ICB9DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmVsc2UgaWYoJGRvcG9zdCA9PSAnbG9naW4nKQ0Kew0KICAgICRlbWFpbCA9IG1kYV9nZXRfc2V0dGluZygnZW1haWwnKTsNCiAgICAkY2hhbm5lbF91dWlkID0gbWRhX2dldF9zZXR0aW5nKCdjaGFubmVsX3V1aWQnKTsNCiAgICAkY2hhbm5lbF9zZWNyZXQgPSBtZGFfZ2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0Jyk7DQogICAgJHRzID0gdGltZSgpOw0KICAgICRwYXJhbXNBcnI9YXJyYXkoDQogICAgICAgICdjaGFubmVsX3V1aWQnPT4kY2hhbm5lbF91dWlkLCANCiAgICAgICAgJ2NoYW5uZWxfc2VjcmV0Jz0+JGNoYW5uZWxfc2VjcmV0LA0KICAgICAgICAnZW1haWwnPT4kZW1haWwsDQogICAgICAgICd0cyc9PiR0cywNCiAgICAgICAgJ2NyYyc9Pm1kNSgkY2hhbm5lbF91dWlkLiRjaGFubmVsX3NlY3JldC4kdHMpLA0KICAgICk7DQogICAgJGpxdWVyeV9maWxlID0gTURBX0pRVUVSWTsNCiAgICAkYXBpX2xvZ2luID0gTURBX0FQSV9MT0dJTjsNCiAgICAkcGFyYW1zID0ganNvbl9lbmNvZGUoJHBhcmFtc0Fycik7DQogICAgJHJzID0ganNvbl9kZWNvZGUobWRhX2h0dHBfc2VuZChNREFfQVBJX0xPR0lOLDAsJHBhcmFtc0FyciksVFJVRSk7DQogICAgaWYgKCBpc3NldCgkcnNbJ2NvZGUnXSkgQU5EICRyc1snY29kZSddID09IDAgKSB7DQogICAgICAkX1NFU1NJT05bJ21kYV9lbWFpbCddPSRlbWFpbDsNCiAgICB9IGVsc2Ugew0KICAgICAgdW5zZXQoJF9TRVNTSU9OWydtZGFfZW1haWwnXSk7DQogICAgICBoZWFkZXIoJ0xvY2F0aW9uOj9sb2dvdXQ9MScpOw0KICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICANCiAgICBlY2hvIDw8PEVPVA0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyRqcXVlcnlfZmlsZX0iPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCShmdW5jdGlvbigkKXsNCiAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgIHVybDogInskYXBpX2xvZ2lufSIsDQogICAgICAgICAgICBkYXRhVHlwZSA6ICdqc29ucCcsDQogICAgICAgICAgICBqc29ucENhbGxiYWNrOiJjYWxsZnVuYyIsDQogICAgICAgICAgICBkYXRhOiAkcGFyYW1zLA0KICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oIHJlc3BvbnNlICkgew0KICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmNvZGUgPT0gMCl7DQogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmPSc/ZG9wb3N0PW1haW4mbm9tc2c9eWVzJmZvcndhcmQ9eyRkb3Bvc3R9JzsNCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQoJfSkoalF1ZXJ5KTsNCjwvc2NyaXB0Pg0KRU9UOw0KICAgIGV4aXQ7DQp9IA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX19tYWluKCl7ICB9DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmVsc2UgaWYoJGRvcG9zdCA9PSAnbWFpbicpew0KICAgICRtZGFfdmVyc2lvbiA9IE1EQV9WRVI7DQogICAgJGNoYW5uZWxfdXVpZCA9IG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJyk7DQogICAgJGNoYW5uZWxfc2VjcmV0ID0gbWRhX2dldF9zZXR0aW5nKCdjaGFubmVsX3NlY3JldCcpOw0KICAgICRtc2cgPSA8PDxFT1QNCjxmb3JtIG5hbWU9J215Zm9ybScgbWV0aG9kPSdQT1NUJyBhY3Rpb249Jz8nPg0KPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZG9wb3N0JyB2YWx1ZT0nc2V0X3NlY3JldCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEiPg0KICA8dGJvZHk+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPueZu+W9leeUqOaIt++8mjwvdGQ+DQogICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPnskX1NFU1NJT05bJ2VtYWlsJ119IHskYWNjb3VudF9zdHJ9IDwhLS08YSBocmVmPSc/ZG9wb3N0PWxvZ291dCcgc3R5bGU9J2NvbG9yOmJsdWUnPlvpgIDlh7pdPC9hPi0tPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+5b635b6X5qih5Z2X54mI5pys77yaPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+dnskbWRhX3ZlcnNpb259IDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+Q2hhbm5lbCBVVUlE77yaPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IGNsYXNzPSJpbnB1dC14bGFyZ2UiIHR5cGU9InRleHQiIHZhbHVlPSJ7JGNoYW5uZWxfdXVpZH0iIGRpc2FibGVkPSJkaXNhYmxlZC8iIHN0eWxlPSJ3aWR0aDoyNjBweCI+IDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjE2JSIgaGVpZ2h0PSIzMCI+Q2hhbm5lbCBTZWNyZXTvvJo8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI4NCUiIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4NCiAgICAgICAgPGlucHV0IG5hbWU9ImNoYW5uZWxfc2VjcmV0IiBjbGFzcz0iaW5wdXQteGxhcmdlIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ieyRjaGFubmVsX3NlY3JldH0iIHN0eWxlPSJ3aWR0aDoyNjBweCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSLkv67mlLkiPg0KICAgICAgPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCBoZWlnaHQ9IjMwIiBjb2xzcGFuPSIyIj7mgqjlt7LmiJDlip/nmbvlvZXlvrflvpflub/lkYrvvIHmgqjlj6/ku6Xov5vooYzku6XkuIvmk43kvZzvvJo8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiPg0KICAgICAgICA8YSBocmVmPSc/ZG9wb3N0PXBsYWNlJyBzdHlsZT0nY29sb3I6Ymx1ZSc+W+W5v+WRiueuoeeQhl08L2E+IA0KICAgICAgICA8YSBocmVmPSc/ZG9wb3N0PXJlcG9ydCcgc3R5bGU9J2NvbG9yOmJsdWUnPlvmn6XnnIvmiqXooahdPC9hPiANCiAgICAgICAgPGEgaHJlZj0nP2RvcG9zdD1hY2NvdW50JyBzdHlsZT0nY29sb3I6Ymx1ZSc+W+e7k+eul+S4reW/g108L2E+IA0KICAgICAgICA8YSBocmVmPSc/ZG9wb3N0PXNldHRpbmcnIHN0eWxlPSdjb2xvcjpibHVlJz5b5b635b6X6K6+572uXTwvYT4gDQogICAgICAgIDxhIGhyZWY9Jz9kb3Bvc3Q9Y2xlYXJjYWNoZScgc3R5bGU9J2NvbG9yOmJsdWUnPlvmuIXnqbrnvJPlrZhdPC9hPiANCiAgICAgIDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgaGVpZ2h0PSIzMCIgY29sc3Bhbj0iMiI+DQogICAgICAgIDxocj4NCiAgICAgICAg5L2/55So6K+05piO77yaPGJyPg0KICAgICAgICDlnKjlub/lkYrnrqHnkIbkuK3liJvlu7rlr7nlupTlub/lkYrkvY3vvIzojrflj5blub/lkYrkvY3moIfnrb7vvIznva7lhaXmqKHmnb/nm7jlupTkvY3nva7ljbPlj6/jgIINCiAgICAgICAgPGhyPg0KICAgICAgICDlip/og73or7TmmI7vvJo8YnI+DQogICAgICAgIDxiPlvlub/lkYrnrqHnkIZdPC9iPueuoeeQhuermeeCueebuOW6lOeahOW5v+WRiuS9je+8mzxicj4NCiAgICAgICAgPGI+W+afpeeci+aKpeihqF08L2I+6I635Y+W5bm/5ZGK5L2N55u45bqU55qE57uf6K6h5oOF5Ya177ybPGJyPg0KICAgICAgICA8Yj5b57uT566X5Lit5b+DXTwvYj7mn6XnnIvmlLbnm4rnu5/orqHvvJs8YnI+DQogICAgICAgIDxiPlvlvrflvpforr7nva5dPC9iPuW+t+W+l+W5v+WRiuW5s+WPsOi0puWPt+S/oeaBr+mFjee9ru+8mzxicj4NCiAgICAgICAgPGI+W+a4heepuue8k+WtmF08L2I+5riF56m65bm/5ZGK5qCH562+57yT5a2Y77yM5aaC5p6c5pu05pS555m75b2V6LSm5Y+35bu66K6u5riF56m657yT5a2Y5YaN55Sf5oiQ77ybPGJyPg0KICAgICAgICA8aHI+DQogICAgICA8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIGhlaWdodD0iMzAiIGNvbHNwYW49IjIiIHN0eWxlPSJjb2xvcjojOTk5Ij48c3Ryb25nPuW+t+W+l+W5v+WRijwvc3Ryb25nPuaYr+S4gOS4queugOWNleWPi+WlveeahOW5v+WRiuW5s+WPsO+8jOa3seW6puiejeWQiOe7h+aipuezu+e7n++8jOW4ruWKqeaCqOiOt+WPluabtOWkmuaUtuebiuOAgjwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+DQo8L2Zvcm0+DQp7JGxvZ2luX3N0cn0NCnskY2hhbmdlX2lzdl9pZH0NCkVPVDsNCiAgICAgICAgJHdpbnRpdGxlID0gJ+W+t+W+l+W5v+WRiueuoeeQhic7DQogICAgICAgICR3ZWNvbWVfaW5mbyA9ICflvrflvpflub/lkYrmqKHlnZcg44CLJzsNCiAgICAgICAgJHdpbiA9IG5ldyBPeFdpbmRvdygpOw0KICAgICAgICAkd2luLT5BZGRUaXRsZSgkd2ludGl0bGUpOw0KICAgICAgICAkd2luLT5BZGRNc2dJdGVtKCRtc2cpOw0KICAgICAgICAkd2luZm9ybSA9ICR3aW4tPkdldFdpbmRvdygnaGFuZCcsICcmbmJzcDsnLCBmYWxzZSk7DQogICAgICAgICR3aW4tPkRpc3BsYXkoKTsNCiAgICAgICAgZXhpdDsNCn0gZWxzZSBpZigkZG9wb3N0ID09ICdzZXRfc2VjcmV0Jykgew0KICAgICRlbWFpbCA9IG1kYV9nZXRfc2V0dGluZygnZW1haWwnKTsNCiAgICAkY2hhbm5lbF91dWlkID0gbWRhX2dldF9zZXR0aW5nKCdjaGFubmVsX3V1aWQnKTsNCiAgICAkdHMgPSB0aW1lKCk7DQogICAgJHBhcmFtc0Fycj1hcnJheSgNCiAgICAgICAgJ2NoYW5uZWxfdXVpZCc9PiRjaGFubmVsX3V1aWQsIA0KICAgICAgICAnY2hhbm5lbF9zZWNyZXQnPT4kY2hhbm5lbF9zZWNyZXQsDQogICAgICAgICdlbWFpbCc9PiRlbWFpbCwNCiAgICAgICAgJ3RzJz0+JHRzLA0KICAgICAgICAnY3JjJz0+bWQ1KCRjaGFubmVsX3V1aWQuJGNoYW5uZWxfc2VjcmV0LiR0cyksDQogICAgKTsNCiAgICAkcnMgPSBqc29uX2RlY29kZShtZGFfaHR0cF9zZW5kKE1EQV9BUElfTE9HSU4sMCwkcGFyYW1zQXJyKSxUUlVFKTsNCiAgICBpZiAoICEkcnMgKQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi6K+35rGCQVBJ6ZSZ6K+v77yM6K+36YeN6K+V77yBIiwtMSk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgaWYgKCAkcnNbJ2NvZGUnXSAhPSAwICkNCiAgICB7DQogICAgICAgIFNob3dNc2coIuivt+axguWksei0pe+8jOmUmeivr+S7o+eggVtjb2RlOnskcnNbJ2NvZGUnXX1d77yM5raI5oGvW3skcnNbJ21zZyddfV0iLCc/ZG9wb3N0PW1haW4nKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICBpZiAoJHJzWydjb2RlJ10gPT0gMCl7DQogICAgICAgIFNob3dNc2coIkNoYW5uZWwgU2VjcmV0IOS/ruaUueaIkOWKn+KApuKApu+8gSIsJz9kb3Bvc3Q9bWFpbicpOw0KICAgICAgICBtZGFfc2V0X3NldHRpbmcoJ2NoYW5uZWxfc2VjcmV0JywgJGNoYW5uZWxfc2VjcmV0KTsNCiAgICB9DQp9DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9faW5kZXgoKXsgIH0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZWxzZSB7DQogICAgaWYgKCBtZGFfZ2V0X3NldHRpbmcoJ2VtYWlsJykgQU5EIG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF91dWlkJykgQU5EIG1kYV9nZXRfc2V0dGluZygnY2hhbm5lbF9zZWNyZXQnKSBBTkQgZW1wdHkoJGxvZ291dCkpDQogICAgew0KICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOj9kb3Bvc3Q9bG9naW4nKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQogICAgDQogICAgJG1kYV9yZWdfdXJsID0gTURBX1JFR19VUkw7DQogICAgJG1kYV9mb3JnZXRfcHdkX3VybCA9IE1EQV9GT1JHT1RfUEFTU1dPUkRfVVJMOw0KICAgICRkb21haW4gPSAhZW1wdHkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKT8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ107DQogICAgJG1kYV91cGRhdGVfdXJsID0gTURBX0FQSUhPU1QuIi9oZWxwL2RlZGVjbXNfbW9kdWxlX2Rvd25sb2FkIjsNCiAgICANCmVjaG8gPDw8RU9UDQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eyRjZmdfc29mdF9sYW5nfSI+DQo8dGl0bGU+5b635b6X5bm/5ZGKPC90aXRsZT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InskY2ZnX3BsdXNfZGlyfS9pbWcvYmFzZS5jc3MiPg0KPC9oZWFkPg0KPGJvZHkgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy9hbGxiZy5naWYnIGxlZnRtYXJnaW49IjgiIHRvcG1hcmdpbj0nOCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNERkY5QUEiPg0KICA8dHI+DQogICAgPHRkIGhlaWdodD0iMjgiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNEQURBREEiIGJhY2tncm91bmQ9J3skY2ZnX3BsdXNfZGlyfS9pbWcvd2JnLmdpZic+Jm5ic3A7PGI+PGEgaHJlZj0iPyI+5b635b6X5bm/5ZGKIDwvYT4gJmd0OyZndDsg6YWN572u5b635b6X5bm/5ZGKPC9iPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgPHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjgwIiBzdHlsZT0icGFkZGluZy10b3A6NXB4IiBiZ2NvbG9yPScjZmZmZmZmJz4NCiAgPGZvcm0gbmFtZT0nbXlmb3JtJyBtZXRob2Q9J1BPU1QnIGFjdGlvbj0nPyc+DQogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2RvcG9zdCcgdmFsdWU9J2JpbmRfdXNlcic+DQogIDx0YWJsZSB3aWR0aD0nMTAwJScgIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzMnIGNlbGxzcGFjaW5nPScxJyBiZ2NvbG9yPScjREFEQURBJz4NCiAgICA8dHIgYmdjb2xvcj0nI0RBREFEQSc+DQogICAgICA8dGQgY29sc3Bhbj0nMicgYmFja2dyb3VuZD0neyRjZmdfcGx1c19kaXJ9L2ltZy93YmcuZ2lmJyBoZWlnaHQ9JzI2Jz48Zm9udCBjb2xvcj0nIzY2NjYwMCc+PGI+5b635b6X5bm/5ZGKPC9iPjwvZm9udD48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyIGJnY29sb3I9JyNGRkZGRkYnPg0KICAgICAgPHRkIGNvbHNwYW49JzInICBoZWlnaHQ9JzEwMCc+DQogICAgICA8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjEiPg0KICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGlkPSJpc3ZzQ29udGVudCI+DQogICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSI5OCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIxIj4NCiAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTYlIiBoZWlnaHQ9IjMwIj7pgq7nrrHvvJo8L3RkPg0KICAgICAgICAgICAgICA8dGQgd2lkdGg9Ijg0JSIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPjxpbnB1dCBuYW1lPSJlbWFpbCIgdHlwZT0iZW1haWwiIGlkPSJlbWFpbCIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgdmFsdWU9IiIgLz4NCiAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJG1kYV9yZWdfdXJsIiBzdHlsZT0iY29sb3I6Ymx1ZSI+5YWN6LS55rOo5YaMPC9hPiDvvIzojrflj5bkuJPkuJrlub/lkYrmnI3liqE8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMzAiPuWvhuegge+8mjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9InB3ZCIgdHlwZT0icGFzc3dvcmQiIGlkPSJwd2QiIHNpemU9IjE2IiBzdHlsZT0id2lkdGg6MjAwcHgiPg0KICAgICAgICAgICAgICAgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IiRtZGFfZm9yZ2V0X3B3ZF91cmwiIHN0eWxlPSJjb2xvcjpibHVlIj7lv5jorrDlr4bnoIE8L2E+ICZuYnNwOyA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPuermeeCueWfn+WQje+8mjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9ImRvbWFpbiIgdHlwZT0idGV4dCIgaWQ9ImRvbWFpbiIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgdmFsdWU9InskZG9tYWlufSIgLz4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNiUiIGhlaWdodD0iMzAiPuWQjeensO+8mjwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODQlIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+PGlucHV0IG5hbWU9ImNoYW5uZWxfbmFtZSIgdHlwZT0idGV4dCIgaWQ9ImNoYW5uZWxfbmFtZSIgc2l6ZT0iMTYiIHN0eWxlPSJ3aWR0aDoyMDBweCIgdmFsdWU9InskY2ZnX3dlYm5hbWV9IiAvPg0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIzMCI+5qih5Z2X54mI5pys77yaPC90ZD4NCiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij57JHZlcnNpb259DQogICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJG1kYV91cGRhdGVfdXJsIiBzdHlsZT0iY29sb3I6Ymx1ZSI+5LiL6L295paw54mI5qih5Z2XPC9hPiAmbmJzcDsgPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgPC90Ym9keT4NCiAgICAgIDwvdGFibGU+DQogICAgICA8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIGNvbHNwYW49JzInIGJnY29sb3I9JyNGOUZDRUYnPjx0YWJsZSB3aWR0aD0nMjcwJyBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+DQogICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInIGhlaWdodD0nMjgnPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSc5MCc+PGlucHV0IG5hbWU9J2ltYWdlRmllbGQxJyB0eXBlPSdpbWFnZScgY2xhc3M9J25wJyBzcmM9J3skY2ZnX3BsdXNfZGlyfS9pbWcvYnV0dG9uX29rLmdpZicgd2lkdGg9JzYwJyBoZWlnaHQ9JzIyJyBib3JkZXI9JzAnIC8+PC90ZD4NCiAgICAgICAgICAgIDx0ZCB3aWR0aD0nOTAnPjwvdGQ+DQogICAgICAgICAgICA8dGQ+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPjwvdGQ+DQogICAgPC90cj4NCiAgPC90YWJsZT4NCiAgPC9mb3JtPg0KICA8L3RkPg0KICA8L3RyPg0KPC90YWJsZT4NCjxwIGFsaWduPSJjZW50ZXIiPiA8YnI+DQogIDxicj4NCjwvcD4NCjwvYm9keT4NCjwvaHRtbD4NCkVPVDsNCiAgICANCn0=
  49. </file>
  50. </modulefiles>
  51. </module>