# wlk_flem v0.2 # This plugin is for quick flash movie embed via the article writing tabby thingy. (with click to embed/run swfobject) # Walker Hamilton # http://www.walkerhamilton.com # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMiI7czo2OiJhdXRob3IiO3M6MTU6IldhbGtl ciBIYW1pbHRvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyOToiaHR0cDovL3d3dy53YWxrZXJo YW1pbHRvbi5jb20iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjExNjoiVGhpcyBwbHVnaW4gaXMg Zm9yIHF1aWNrIGZsYXNoIG1vdmllIGVtYmVkIHZpYSB0aGUgYXJ0aWNsZSB3cml0aW5nIHRh YmJ5IHRoaW5neS4gKHdpdGggY2xpY2sgdG8gZW1iZWQvcnVuIHN3Zm9iamVjdCkiO3M6NDoi dHlwZSI7aTowO3M6NDoibmFtZSI7czo4OiJ3bGtfZmxlbSI7czo0OiJoZWxwIjtzOjQ0NDQ6 Igk8aDE+d2xrX2ZsZW08L2gxPgoJPHA+djAuMjogYWN0dWFsbHkgc3VwcG9ydGluZyB0aGUg cGFyYW1zdHIgc2V0dGluZy4gQWxzbywgY29ycmVjdGVkIHRoZSBoZWxwIGRvY3MuPC9wPgoJ PHA+VGhpcyBwbHVnaW4gaXMgZm9yIHF1aWNrIGZsYXNoIG1vdmllIGVtYmVkIHZpYSB0aGUg YXJ0aWNsZSB3cml0aW5nIHRhYmJ5IHRoaW5neS4gKHdpdGggY2xpY2sgdG8gZW1iZWQvcnVu IHN3Zm9iamVjdCk8L3A+Cjxjb2RlPiZsdDt0eHA6d2xrX2ZsZW0gZmxhc2htb3ZpZT0iMyIg cG9zdGVyPSI1IiBmbGFzaHZlcnNpb249IjkiIHBhcmFtc3RyPSIkanNvJC5hZGRQYXJhbSgi c2FsaWduIiwidGwiKTsiICAvJmd0OzwvY29kZT4KCTxoMj5JbnN0YWxsYXRpb248L2gyPgoJ PHA+U2luY2UgeW91IGNhbiByZWFkIHRoaXMgaGVscCwgeW91IGhhdmUgaW5zdGFsbGVkIHRo ZSBwbHVnaW4gdG8gdHhwLjxiciAvPgpEaWQgeW91IGFjdGl2YXRlIGl0PzwvcD4KCTxoMj5V c2FnZTwvaDI+Cgk8cD5QbGFjZSB0aGUgd2xrX2ZsZW0gdGFnIGluIGFuIGFydGljbGUsIGZv cm0gb3IgcGFnZS48L3A+Cgk8cD5HbyB0byA8ZW0+YWRtaW48L2VtPiAtPiA8ZW0+cHJlZmVy ZW5jZXM8L2VtPiAtPiA8ZW0+YWR2YW5jZWQgcHJlZmVyZW5jZXM8L2VtPiBhbmQgY3JlYXRl IGEgY3VzdG9tIGZvcm0gZmllbGQgY2FsbGVkIGZsYXNobW92aWUuPC9wPgoJPHA+QDxiciAv Pgo8dHhwOndsa19mbGVtIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIiAvPjxiciAvPgpAPC9w PgoJPHA+SXQgdGFrZXMgYSBmZXcgb3B0aW9uczo8L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+ d2lkdGg8L3N0cm9uZz4gJiM4MjExOyBTcGVjaWZpZXMgd2lkdGguIERlZmF1bHRzIHRvOiAz MjBweCAoY2hlY2tzIGZvciBjdXN0b21fZmllbGQgJiM4MjIwO3dpZHRoJiM4MjIxOykuPC9s aT4KCQk8bGk+PHN0cm9uZz5oZWlnaHQ8L3N0cm9uZz4gJiM4MjExOyBTcGVjaWZpZXMgaGVp Z2h0LiBEZWZhdWx0cyB0bzogMjU2cHggKGNoZWNrcyBmb3IgY3VzdG9tX2ZpZWxkICYjODIy MDtoZWlnaHQmIzgyMjE7KS48L2xpPgoJCTxsaT48c3Ryb25nPmJnY29sb3I8L3N0cm9uZz4g JiM4MjExOyBDaGVja3MgdG8gc2VlIGlmIHlvdXZlIHNldCBhIGhleCBjb2xvciBmb3IgdGhl IGJhY2tncm91bmQgYmVoaW5kIHRoZSBmbGFzaCBtb3ZpZS4gRGVmYXVsdHMgdG86IEZGRkZG RjwvbGk+CgkJPGxpPjxzdHJvbmc+c2NhbGU8L3N0cm9uZz4gJiM4MjExOyBDaGVja3MgdG8g c2VlIGlmIHlvdSYjODIxNzt2ZSBkZWZpbmllZCB3aGF0IHRoZSBmbGFzaCBzaG91bGQgZG8u IERlZmF1bHRzIHRvOiBub3NjYWxlPC9saT4KCQk8bGk+PHN0cm9uZz5mbGFzaHZlcnNpb248 L3N0cm9uZz4gJiM4MjExOyBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIGZsYXNoIHRoYXQgc3dm b2JqZWN0IHdpbGwgZGVsaXZlciB0aGUgbW92aWUgdG8uIERlZmF1bHRzIHRvOiA5ICh5ZWFo LCB0aGF0JiM4MjE3O3MgcmlnaHQsIG9ubHkgdGhlIG5ld2VzdCBmb3IgdXMuKTwvbGk+CgkJ PGxpPjxzdHJvbmc+Zmxhc2htb3ZpZTwvc3Ryb25nPiAmIzgyMTE7IFRoaXMgaXMgdXNlZCB0 byBzcGVjaWZ5IHRoZSBmbGFzaCBtb3ZpZSBpbiB0aGUgdGFnLjwvbGk+CgkJPGxpPjxzdHJv bmc+cG9zdGVyPC9zdHJvbmc+ICYjODIxMTsgVGhpcyBpcyB1c2VkIGlmIHlvdSB3YW50IHRv IHNwZWNpZnkgYSBwb3N0ZXIgZm9yIGNsaWNrIHRvIGVtYmVkIGFjdGlvbi48L2xpPgoJCTxs aT48c3Ryb25nPm1vdmllZmllbGRuYW1lPC9zdHJvbmc+ICYjODIxMTsgVGhpcyBhbGxvd3Mg eW91IHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFyIGN1c3RvbV9maWVsZCBieSBuYW1lIHRoYXQg d2xrX2ZsZW0gc2hvdWxkIGNoZWNrIGluIHRvIHNlZSBpZiBhIG1vdmllIGlzIHNldC4gKGRl ZmF1bHRzIHRvICYjODIyMDtmbGFzaG1vdmllJiM4MjIxOyk8L2xpPgoJCTxsaT48c3Ryb25n PnBvc3RlcmZpZWxkbmFtZTwvc3Ryb25nPiAmIzgyMTE7IFRoaXMgYWxsb3dzIHlvdSB0byBz cGVjaWZ5IGEgcGFydGljdWxhciBjdXN0b21fZmllbGQgYnkgbmFtZSB0aGF0IHdsa19mbGVt IHNob3VsZCBjaGVjayBpbiB0byBzZWUgaWYgYSBwb3N0ZXIgaW1hZ2UgaXMgc2V0LiAoZGVm YXVsdHMgdG8gJiM4MjIwO3Bvc3RlciYjODIyMTspPC9saT4KCQk8bGk+PHN0cm9uZz53aWR0 aGZpZWxkbmFtZTwvc3Ryb25nPiAmIzgyMTE7IFRoaXMgYWxsb3dzIHlvdSB0byBzcGVjaWZ5 IGEgcGFydGljdWxhciBjdXN0b21fZmllbGQgYnkgbmFtZSB0aGF0IHdsa19mbGVtIHNob3Vs ZCBjaGVjayBpbiBmb3IgdGhlIGZsYXNoIGVtYmVkIHdpZHRoLiAoZGVmYXVsdHMgdG8gJiM4 MjIwO3dpZHRoJiM4MjIxOyk8L2xpPgoJCTxsaT48c3Ryb25nPmhlaWdodGZpZWxkbmFtZTwv c3Ryb25nPiAmIzgyMTE7IFRoaXMgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgcGFydGljdWxh ciBjdXN0b21fZmllbGQgYnkgbmFtZSB0aGF0IHdsa19mbGVtIHNob3VsZCBjaGVjayBpbiBm b3IgdGhlIGZsYXNoIGVtYmVkIGhlaWdodC4gKGRlZmF1bHRzIHRvICYjODIyMDtoZWlnaHQm IzgyMjE7KTwvbGk+CgkJPGxpPjxzdHJvbmc+cGFyYW1zdHI8L3N0cm9uZz4gJiM4MjExOyBt YW51YWxseSBzZXQgYWRkUGFyYW1zIG9yIHdoYXRldmVyIG90aGVyIGZ1bmN0aW9ucyBzd2Zv YmplY3Qgc3VwcG9ydHMuIFNob3VsZCBsb29rIGxpa2UgamF2YXNjcmlwdCwgZXhjZXB0IHdp dGggJGpzbyQgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IG5hbWUuPC9saT4KCTwvdWw+Cgk8aDI+ RW1iZWRkaW5nIGEgc3BlY2lmaWMgbW92aWUgaW4gYSBwYWdlOjwvaDI+Cgk8cD5JZiB5b3Ug c3BlY2lmeSB2aWRlbyBhcyBhbiBhdHRyaWJ1dGUgeW91IGNhbiB1c2UgdGhlIGZpbGUgbnVt YmVyIGZyb20gdGhlIGZpbGVzIHRhYiAoaWYgeW91IHVwbG9hZGVkIHRoZSB2aWRlbyBpbiB0 aGlzIG1hbm5lcik8L3A+Cgk8cD5iYy4uIDx0eHA6d2xrX2ZsZW0gZmxhc2htb3ZpZT0iNiIg Lz48L3A+Cgk8cD5vciB5b3UgY2FuIHVzZSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBmaWxlLjwv cD4KCTxwPmJjLi4gPHR4cDp3bGtfZmxlbSB2aWRlbz0iaHR0cDovL3d3dy5teWRvbWFpbi5j b20vbW92aWVzL215Zmxhc2htb3ZpZS5zd2YiIC8+PC9wPgoJPHA+b3I8L3A+Cgk8cD5iYy4u IDx0eHA6d2xrX2ZsZW0gdmlkZW89Ii9tb3ZpZXMvbXlmbGFzaG1vdmllLnN3ZiIgLz48L3A+ Cgk8aDI+QXR0YWNoaW5nIGEgZmxhc2htb3ZpZSB0byBhbiBhcnRpY2xlOjwvaDI+Cgk8cD5J biB0aGlzIGNhc2UsIHlvdSB1c2UgdGhhdCBjdXN0b20gJiM4MjE2O2ZsYXNobW92aWUmIzgy MTc7IGZpZWxkIGFuZCBlbnRlciB0aGUgZnVsbCBwYXRoIG9yIHlvdXIgZmlsZSBudW1iZXIg aW4gdGhhdCBmaWVsZC4gVGhlbiB0aGUgZm9ybSBiZWluZyB1c2VkIHRvIG91dHB1dCB0aGUg YXJ0aWNsZSBzaW1wbHkgbmVlZHMgPHR4cDp3bGtfZmxlbSAvPiBpbiBpdCBzb21ld2hlcmUg KHdpdGggYW55IG90aGVyIGF0dHJpYnV0ZXMgeW91IHdhbnQgdG8gc3BlY2lmeSAmIzgyMTE7 IGUuZy4gd2lkdGgsIGhlaWdodCkuPC9wPgoJPHA+TXkgZm9ybSBsb29rcyBsaWtlIHRoaXM6 PC9wPgoJPHA+YmMuLiA8aDM+PHR4cDpwZXJtbGluaz48dHhwOnRpdGxlIC8+PC90eHA6cGVy bWxpbms+PC9oMz48YnIgLz4KPHR4cDp3bGtfZmxlbSBwb3N0ZXI9IjQiIC8+PGJyIC8+Cjx0 eHA6Ym9keSAvPjwvcD4KCTxwPlRoYXQgb3V0cHV0cyB0aGUgYXJ0aWNsZSBvbiB0aGUgcGFn ZSB3aGVyZSB0aGlzIGZvcm0gaXMgdXNlZCB3aXRoIHRoZSB0aXRsZSBvZiB0aGUgYXJ0aWNs ZSBhcyBhIGhlYWRlciB0aGVuIGEgZGl2IHdpdGggaW1hZ2UgIzQgZnJvbSB0aGUgaW1hZ2Vz IHRhYiBpbiBpdC4gVGhlbiB0aGUgdGV4dCB0aGF0IHdhcyBpbiB0aGUgYm9keSBmaWVsZCBv ZiB0aGUgYXJ0aWNsZSBmb3JtLjwvcD4KCTxoMj5MaW5raW5nIHVwIHRoZSBqYXZhc2NyaXB0 LjwvaDI+Cgk8cD5Zb3UgbXVzdCBmaXJzdCB1cGxvYWQgPGEgaHJlZj0iaHR0cDovL2Jsb2cu ZGVjb25jZXB0LmNvbS9zd2ZvYmplY3QvIj5zd2ZvYmplY3QuanM8L2E+IHRvIHlvdXIgc2Vy dmVyLiAoeW91JiM4MjE3O2xsIG5lZWQgdG8gZG93bmxvYWQgaXQsIHVuemlwIGl0LCB0aGVu IHVwbG9hZCBpdCk8L3A+Cgk8cD5UaGVuIHB1dCB0aGlzIGluIHRoZSBoZWFkZXIgb2YgdGhl IHBhZ2UgeW91IHdpc2ggdG8gZGlzcGxheSBtb3ZpZXMgb24gKGV2ZXJ5IHBhZ2UmIzgyMzA7 Lnllcyk6PC9wPgoJPHA+YmMuLiA8dHhwOndsa19mbGVtc2NyaXB0bGluayBwYXRoPSJodHRw Oi8vbXlkb21haW4uY29tL3RoZS9wYXRoL3RvL3N3Zm9iamVjdC5qcyIgLz48L3A+Cgk8cD5X aGVyZSB5b3UgZmluZCAmIzgyMjA7aHR0cDovL215ZG9tYWluLmNvbS90aGUvcGF0aC90by9z d2ZvYmplY3QuanMmIzgyMjE7LCBtYWtlIHN1cmUgeW91IHB1dCB0aGUgZnVsbCBwYXRoIHRv IHRoZSBmaWxlLjwvcD4KCiAiO3M6NDoiY29kZSI7czoxMDMzMjoiCWZ1bmN0aW9uIHdsa19m bGVtKCRhdHRzKQoJewoJCWdsb2JhbCAkcHJlZnM7CgkJZ2xvYmFsICRwZXJtbGlua19tb2Rl OwoJCWdsb2JhbCAkdGhpc2FydGljbGU7CgoJCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJCSdm bGFzaG1vdmllJz0+JycsCgkJCSdwb3N0ZXInPT4nJywKCQkJJ3Btc2V0Jz0+J3RydWUnLAoJ CQknYmdjb2xvcic9PiAoIWVtcHR5KCRwcmVmc1snd2xrX2ZsZW1fYmdjb2xvciddKSk/JHBy ZWZzWyd3bGtfZmxlbV9iZ2NvbG9yJ106J0ZGRkZGRicsCgkJCSd2ZXJzaW9uJz0+ICghZW1w dHkoJHByZWZzWyd3bGtfZmxlbV9mbGFzaHZlcnNpb24nXSkpPyRwcmVmc1snd2xrX2ZsZW1f Zmxhc2h2ZXJzaW9uJ106JzknLAoJCQknd2lkdGgnPT4gKCFlbXB0eSgkcHJlZnNbJ3dsa19m bGVtX3dpZHRoJ10pKT8kcHJlZnNbJ3dsa19mbGVtX3dpZHRoJ106JzMyMCcsCgkJCSdoZWln aHQnPT4gKCFlbXB0eSgkcHJlZnNbJ3dsa19mbGVtX2hlaWdodCddKSk/JHByZWZzWyd3bGtf ZmxlbV9oZWlnaHQnXTonMjU2JywKCQkJJ3NjYWxlJz0+ICghZW1wdHkoJHByZWZzWyd3bGtf ZmxlbV9zY2FsZSddKSk/JHByZWZzWyd3bGtfZmxlbV9zY2FsZSddOidub3NjYWxlJywKCQkJ J3BhcmFtc3RyJz0+ICghZW1wdHkoJHByZWZzWyd3bGtfZmxlbV9wYXJhbXN0ciddKSk/JHBy ZWZzWyd3bGtfZmxlbV9wYXJhbXN0ciddOicnLAoJCQknbW92aWVmaWVsZG5hbWUnPT4oIWVt cHR5KCRwcmVmc1snd2xrX2ZsZW1fbW92aWVmaWVsZG5hbWUnXSkpPyRwcmVmc1snd2xrX2Zs ZW1fbW92aWVmaWVsZG5hbWUnXTonZmxhc2htb3ZpZScsCgkJCSdwb3N0ZXJmaWVsZG5hbWUn PT4oIWVtcHR5KCRwcmVmc1snd2xrX2ZsZW1fcG9zdGVyZmllbGRuYW1lJ10pKT8kcHJlZnNb J3dsa19mbGVtX3Bvc3RlcmZpZWxkbmFtZSddOidwb3N0ZXInLAoJCQknd2lkdGhmaWVsZG5h bWUnPT4oIWVtcHR5KCRwcmVmc1snd2xrX2ZsZW1fd2lkdGhmaWVsZG5hbWUnXSkpPyRwcmVm c1snd2xrX2ZsZW1fd2lkdGhmaWVsZG5hbWUnXTond2lkdGgnLAoJCQknaGVpZ2h0ZmllbGRu YW1lJz0+KCFlbXB0eSgkcHJlZnNbJ3dsa19mbGVtX2hlaWdodGZpZWxkbmFtZSddKSk/JHBy ZWZzWyd3bGtfZmxlbV9oZWlnaHRmaWVsZG5hbWUnXTonaGVpZ2h0JywKICAgICAgICAgICAg J2RlYnVnJz0+IGZhbHNlCgkJKSwkYXR0cykpOwoKCQkvKgoKCQkJQ2hlY2tpbmcgdG8gbWFr ZSBzdXJlIHRoZSBmbGFzaG1vdmllIGlzIHNldCBhbmQgdGhlcmUKCgkJKi8KCQlpZighZW1w dHkoJGZsYXNobW92aWUpKQoJCXsKCQkJaWYocHJlZ19tYXRjaCgiL1wvLyIsICRmbGFzaG1v dmllKSkKCQkJewoJCQkJCWlmKGZpbGVfZXhpc3RzKCRmbGFzaG1vdmllKSkKCQkJCQl7CgkJ CQkJCSRmbGFzaG1vdmllID0gaHUuJGZsYXNobW92aWU7CgkJCQkJCSRtc2dbXSA9ICd0eHA6 d2xrX2ZsZW06IGZsYXNobW92aWU9Jy4kYXR0c1snZmxhc2htb3ZpZSddLicuIEZpbGUgZm91 bmQgYW5kIHVzZWQgd2l0aCB0eHAgcHJlZiBwYXRoIGZyb20gcm9vdCAnLiRwcmVmc1sicGF0 aF9mcm9tX3Jvb3QiXTsKCQkJCQl9IGVsc2UgewoJCQkJCQkkZmxhc2htb3ZpZSA9ICRmbGFz aG1vdmllOwoJCQkJCQkkbXNnW10gPSAndHhwOndsa19mbGVtIFdhcm5pbmc6IGZsYXNobW92 aWU9Jy4kYXR0c1snZmxhc2htb3ZpZSddLicuIFBsdWdpbiBjYW5cJ3QgdmVyaWZ5IGZpbGUg ZXhpc3RlbnNpb24uIE1ha2Ugc3VyZSB0aGF0IGdpdmVuIGZpbGUgJy4kYXR0c1snZmxhc2ht b3ZpZSddLicgZXhpc3RzIGFuZCBoYXMgdmFpbGQgcGF0aC4nOwoJCQkJCX0KCQkJfSBlbHNl IHsKCQkJCWlmKGlzX251bWVyaWMoJGZsYXNobW92aWUpKQoJCQkJewoJCQkJCSRmbGFzaG1v dmllID0gd2xrX2ZsZW1fZ2V0X2ZpbGUoJ2lkPSInLmFkZHNsYXNoZXMoJGZsYXNobW92aWUp LiciJyk7CgkJCQkJJG1zZ1tdID0oJGZsYXNobW92aWUgPT0gZmFsc2UpPyd0eHA6d2xrX2Zs ZW0gRXJyb3I6IHZpZGVvPScuJGF0dHNbJ3ZpZGVvJ10uJy4gTm8gZmlsZSB3aXRoIHRoaXMg aWQgaXMgc3RvcmVkIGluIHR4cC4nOicnOwoJCQkJfSBlbHNlIHsKCQkJCQkkZmxhc2htb3Zp ZSA9IHdsa19mbGVtX2dldF9maWxlKCdmaWxlbmFtZT0iJy5hZGRzbGFzaGVzKCRmbGFzaG1v dmllKS4nIicpOwoJCQkJCSRtc2dbXSA9KCRmbGFzaG1vdmllID09IGZhbHNlKT8ndHhwOnds a19mbGVtIEVycm9yOiB2aWRlbz0nLiRhdHRzWyd2aWRlbyddLicuIE5vIGZpbGUgd2l0aCB0 aGlzIG5hbWUgaXMgc3RvcmVkIGluIHR4cC4nOicnOwoJCQkJfQoJCQl9CgkJfSBlbHNlIHsK CQkJaWYoIWVtcHR5KCR0aGlzYXJ0aWNsZVskZmxhc2htb3ZpZWZpZWxkbmFtZV0pKQoJCQl7 CgkJCQlpZihpc19udW1lcmljKCR0aGlzYXJ0aWNsZVskZmxhc2htb3ZpZWZpZWxkbmFtZV0p KQoJCQkJewoJCQkJCQkkZmxhc2htb3ZpZWZsYXNobW92aWUgPSB3bGtfZmxlbV9nZXRfZmls ZSgnaWQ9IicuYWRkc2xhc2hlcygkdGhpc2FydGljbGVbJGZpZWxkbmFtZV0pLiciJyk7CgkJ CQkJCSRtc2dbXSA9KCRmbGFzaG1vdmllZmxhc2htb3ZpZSA9PSBmYWxzZSk/J3R4cDp3bGtf ZmxlbSBFcnJvcjogQ3VzdG9tRmllbGRbJy4kZmllbGRuYW1lLiddPScuJHRoaXNhcnRpY2xl WyRmaWVsZG5hbWVdLicuIE5vIGZpbGUgd2l0aCB0aGlzIGlkIGlzIHN0b3JlZCBpbiB0eHAu JzonJzsKCQkJCX0gZWxzZSBpZihwcmVnX21hdGNoKCIvXC8vIiwgJHRoaXNhcnRpY2xlWyRm bGFzaG1vdmllZmllbGRuYW1lXSkpIHsKCQkJCQlpZihmaWxlX2V4aXN0cygkdGhpc2FydGlj bGVbJGZsYXNobW92aWVmaWVsZG5hbWVdKSkKCQkJCQl7CgkJCQkJCSRmbGFzaG1vdmllID0g aHUuJHRoaXNhcnRpY2xlWyRmbGFzaG1vdmllZmllbGRuYW1lXTsKCQkJCQkJJG1zZ1tdID0g J3R4cDp3bGtfZmxlbTogQ3VzdG9tRmllbGRbJy4kZmxhc2htb3ZpZWZpZWxkbmFtZS4nXT0n LiR0aGlzYXJ0aWNsZVskZmxhc2htb3ZpZWZpZWxkbmFtZV0uJy4gRmlsZSBmb3VuZCBhbmQg dXNlZCB3aXRoIHR4cCBwcmVmIHBhdGggZnJvbSByb290Jy4kcHJlZnNbInBhdGhfZnJvbV9y b290Il07CgkJCQkJfSBlbHNlIHsKCQkJCQkJJGZsYXNobW92aWUgPSAkdGhpc2FydGljbGVb JGZsYXNobW92aWVmaWVsZG5hbWVdOwoJCQkJCQkkbXNnW10gPSAndHhwOndsa19mbGVtIFdh cm5pbmc6IEN1c3RvbUZpZWxkW3ZpZGVvXT0nLiR0aGlzYXJ0aWNsZVskZmxhc2htb3ZpZWZp ZWxkbmFtZV0uJy4gTWFrZSBzdXJlIHRoYXQgZ2l2ZW4gZmlsZSBleGlzdHMgYW5kIGhhcyB2 YWlsZCBwYXRoLic7CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQkkZmxhc2htb3ZpZSA9IHds a19mbGVtX2dldF9maWxlKCdmaWxlbmFtZT0iJy5hZGRzbGFzaGVzKCR0aGlzYXJ0aWNsZVsk Zmxhc2htb3ZpZWZpZWxkbmFtZV0pLiciJyk7CgkJCQkJJG1zZ1tdID0oJGZsYXNobW92aWUg PT0gZmFsc2UpPyd0eHA6d2xrX2ZsZW0gRXJyb3I6IEN1c3RvbUZpZWxkWycuJGZsYXNobW92 aWVmaWVsZG5hbWUuJ109Jy4kdGhpc2FydGljbGVbJGZsYXNobW92aWVmaWVsZG5hbWVdLicu IE5vIGZpbGUgd2l0aCB0aGlzIG5hbWUgaXMgc3RvcmVkIGluIHR4cC4nOicnOwoJCQkJfQoJ CQl9IGVsc2UgewoJCQkJJG1zZ1tdID0gJ3R4cDp3bGtfZmxlbSBFcnJvcjogTm8gZmxhc2gg bW92aWUgZGVmaW5lZC4gVXNlIHRoZSBhdHRyaWJ1dGUgZmxhc2htb3ZpZSBvciBhIGN1c3Rv bS1maWVsZCBuYW1lZCBmbGFzaG1vdmllIHRvIGRlZmluZSBhIGZsYXNoIGZpbGUuJzsKCQkJ fQoJCX0KCQkvL0VuZCB2aWRlbyBjaGVjawoKCQkvKgoKCQkJQ2hlY2tpbmcgRm9yIFBvc3Rl ck1vdmllIGJlaW5nIHNldAoKCQkqLwoJCWlmKCFlbXB0eSgkcG9zdGVyKSkKCQl7CgkJCWlm KHByZWdfbWF0Y2goIi9cLy8iLCAkcG9zdGVyKSkKCQkJewoJCQkJCWlmKGZpbGVfZXhpc3Rz KCRwb3N0ZXIpKQoJCQkJCXsKCQkJCQkJJHBvc3RlciA9IGh1LiRwb3N0ZXI7CgkJCQkJCSRt c2dbXSA9ICd0eHA6d2xrX2ZsZW06IHBvc3Rlcj0nLiRhdHRzWydwb3N0ZXInXS4nLiBGaWxl IGZvdW5kIGFuZCB1c2VkIHdpdGggdHhwIHByZWYgcGF0aCBmcm9tIHJvb3QnLiRwcmVmc1si cGF0aF9mcm9tX3Jvb3QiXTsKCQkJCQl9IGVsc2UgewoJCQkJCQkkcG9zdGVyID0gJHBvc3Rl cjsKCQkJCQkJJG1zZ1tdID0gJ3R4cDp3bGtfZmxlbSBXYXJuaW5nOiBwb3N0ZXI9Jy4kYXR0 c1sncG9zdGVyJ10uJy4gUGx1Z2luIGNhblwndCB2ZXJpZnkgZmlsZSBleGlzdGVuY2UuIE1h a2Ugc3VyZSB0aGF0IGdpdmVuIGZpbGUgJy4kYXR0c1sncG9zdGVyJ10uJyBleGlzdHMgYW5k IGhhcyB2YWlsZCBwYXRoLic7CgkJCQkJfQoJCQl9IGVsc2UgewoJCQkJaWYoaXNfbnVtZXJp YygkcG9zdGVyKSkKCQkJCXsKCQkJCQkkcG9zdGVyID0gd2xrX2ZsZW1fZ2V0X2Zyb250KCdp ZD0iJy5hZGRzbGFzaGVzKCRwb3N0ZXIpLiciJyk7CgkJCQkJJG1zZ1tdID0oJHBvc3RlciA9 PSBmYWxzZSk/J3R4cDp3bGtfZmxlbSBFcnJvcjogdmlkZW89Jy4kYXR0c1sncG9zdGVyJ10u Jy4gTm8gaW1hZ2Ugb3IgZmlsZSB3aXRoIHRoaXMgaWQgaXMgc3RvcmVkIGluIHR4cC4nOicn OwoJCQkJfSBlbHNlIHsKCQkJCQkkcG9zdGVyID0gd2xrX2ZsZW1fZ2V0X2Zyb250KCduYW1l PSInLmFkZHNsYXNoZXMoJHBvc3RlcikuJyInKTsKCQkJCQkkbXNnW10gPSgkcG9zdGVyID09 IGZhbHNlKT8ndHhwOndsa19mbGVtIEVycm9yOiB2aWRlbz0nLiRhdHRzWydwb3N0ZXInXS4n LiBObyBpbWFnZSBvciBmaWxlIHdpdGggdGhpcyBuYW1lIGlzIHN0b3JlZCBpbiB0eHAuJzon JzsKCQkJCX0KCQkJfQoJCX0gZWxzZSB7CgkJCWlmKCFlbXB0eSgkdGhpc2FydGljbGVbJHBv c3RlcmZpZWxkbmFtZV0pKQoJCQl7CgkJCQlpZihwcmVnX21hdGNoKCIvXC8vIiwgJHRoaXNh cnRpY2xlWyRwb3N0ZXJmaWVsZG5hbWVdKSkKCQkJCXsKCQkJCQlpZihmaWxlX2V4aXN0cygk dGhpc2FydGljbGVbJHBvc3RlcmZpZWxkbmFtZV0pKQoJCQkJCXsKCQkJCQkJJHBvc3RlciA9 IGh1LiR0aGlzYXJ0aWNsZVskcG9zdGVyZmllbGRuYW1lXTsKCQkJCQkJJG1zZ1tdID0gJ3R4 cDp3bGtfZmxlbTogQ3VzdG9tRmllbGRbJy4kcG9zdGVyZmllbGRuYW1lLiddPScuJHRoaXNh cnRpY2xlWyRwb3N0ZXJmaWVsZG5hbWVdLicuIEZpbGUgZm91bmQgYW5kIHVzZWQgd2l0aCB0 eHAgcHJlZiBwYXRoIGZyb20gcm9vdCcuJHByZWZzWyJwYXRoX2Zyb21fcm9vdCJdOwoJCQkJ CX0gZWxzZSB7CgkJCQkJCSRwb3N0ZXIgPSAkdGhpc2FydGljbGVbJHBvc3RlcmZpZWxkbmFt ZV07CgkJCQkJCSRtc2dbXSA9ICd0eHA6d2xrX2ZsZW0gV2FybmluZzogQ3VzdG9tRmllbGRb Jy4kcG9zdGVyZmllbGRuYW1lLiddPScuJHRoaXNhcnRpY2xlWyRwb3N0ZXJmaWVsZG5hbWVd LicuIE1ha2Ugc3VyZSB0aGF0IGdpdmVuIGZpbGUgZXhpc3RzIGFuZCBoYXMgdmFpbGQgcGF0 aC4nOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJaWYoaXNfbnVtZXJpYygkdGhpc2FydGlj bGVbJHBvc3RlcmZpZWxkbmFtZV0pKQoJCQkJCXsKCQkJCQkJJHBvc3RlciA9IHdsa19mbGVt X2dldF9mcm9udCgnaWQ9IicuYWRkc2xhc2hlcygkdGhpc2FydGljbGVbJHBvc3RlcmZpZWxk bmFtZV0pLiciJywgJHBtdHlwZSk7CgkJCQkJCSRtc2dbXSA9KCRwb3N0ZXIgPT0gZmFsc2Up Pyd0eHA6d2xrX2ZsZW0gRXJyb3I6IEN1c3RvbUZpZWxkWycuJHBvc3RlcmZpZWxkbmFtZS4n XT0nLiR0aGlzYXJ0aWNsZVskcG9zdGVyZmllbGRuYW1lXS4nLiBObyBmaWxlIHdpdGggdGhp cyBpZCBpcyBzdG9yZWQgaW4gdHhwLic6Jyc7CgkJCQkJfSBlbHNlewoJCQkJCQkkcG9zdGVy ID0gd2xrX2ZsZW1fZ2V0X2Zyb250KCduYW1lPSInLmFkZHNsYXNoZXMoJHRoaXNhcnRpY2xl WyRwb3N0ZXJmaWVsZG5hbWVdKS4nIicsICRwbXR5cGUpOwoJCQkJCQkkbXNnW10gPSgkcG9z dGVyID09IGZhbHNlKT8ndHhwOndsa19mbGVtIEVycm9yOiBDdXN0b21GaWVsZFsnLiRwb3N0 ZXJmaWVsZG5hbWUuJ109Jy4kdGhpc2FydGljbGVbJHBvc3RlcmZpZWxkbmFtZV0uJy4gTm8g ZmlsZSB3aXRoIHRoaXMgbmFtZSBpcyBzdG9yZWQgaW4gdHhwLic6Jyc7CgkJCQkJfQoJCQkJ fQoJCQl9IGVsc2UgewoJCQkJJHBtc2V0ID0gZmFsc2U7CgkJCX0KCQl9CgkJLy9lbmQgcG9z dGVyIGNoZWNrCgkJJG91dCA9IGFycmF5KCk7CgkJJHV1aWQgPSBzdWJzdHIoc3RyX3JlcGxh Y2UoJy4nLCAnJywgdW5pcWlkKCcnLCB0cnVlKSksIDMsIDEwKTsKCgkJaWYoJGRlYnVnICYm ICRmbGFzaG1vdmllICE9ICcnKQoJCXsKCQkJaWYoJHBtc2V0KQogICAgICAgICAgICB7CgkJ CQkkb3V0W109JwoJCQkJCTxkaXYgaWQ9IicuJHV1aWQuJ2ZsYXNocmVwbGFjZW1lbnQiIHN0 eWxlPSJ3aWR0aDonLiR3aWR0aC4nO2hlaWdodDonLiRoZWlnaHQuJzsiPgoJCQkJCQk8YSBo cmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBvbmNsaWNrPSJDbCcuJHV1aWQuJ0ljaygpIj48 aW1nIHNyYz0iJy4kcG9zdGVyLiciIHdpZHRoPSInLiR3aWR0aC4nIiBoZWlnaHQ9IicuJGhl aWdodC4nIiBhbHQ9ImpwZWcgdGhhdCB3aWxsIGJlIHJlcGxhY2VkIGJ5IGZsYXNoIiB0aXRs ZT0iY2xpY2sgaGVyZSB0byBzdGFydCBmbGFzaCBjb250ZW50IiAvPjwvYT4KCQkJCQk8L2Rp dj4KCQkJCQknOwoJCQl9IGVsc2UgewoJCQkJJG91dFtdPScKCQkJCQk8ZGl2IGlkPSInLiR1 dWlkLidmbGFzaHJlcGxhY2VtZW50IiBzdHlsZT0id2lkdGg6Jy4kd2lkdGguJztoZWlnaHQ6 Jy4kaGVpZ2h0Lic7Ij4KCQkJCQkJPHA+U29ycnksIGJ1dCB5b3UgZG8gbm90IGhhdmUgdGhl IG1pbmltdW0gdmVyc2lvbiAoJy4kdmVyc2lvbi4nKSBvZiBmbGFzaCBwbGF5ZXIgcmVxdWly ZWQgdG8gcGxheSB0aGlzIGZsYXNoIG1vdmllLiBZb3UgY2FuIGluc3RhbGwgb3IgdXBncmFk ZSBmbGFzaCA8YSBocmVmPSJodHRwOi8vd3d3LmFkb2JlLmNvbS9zaG9ja3dhdmUvZG93bmxv YWQvZG93bmxvYWQuY2dpP1AxX1Byb2RfVmVyc2lvbj1TaG9ja3dhdmVGbGFzaCI+aGVyZTwv YT4uPC9wPgoJCQkJCTwvZGl2PgoJCQkJCSc7CgkJCX0KICAgICAgICAgICAgJG91dFtdPScK ICAgICAgICAgICAgCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQkJJzsKICAg ICAgICAgICAgaWYoJHBtc2V0KQogICAgICAgICAgICB7CiAgICAgICAgICAgIAkkb3V0W109 J2Z1bmN0aW9uIENsJy4kdXVpZC4nSWNrKCkgeyc7CiAgICAgICAgICAgIH0KCQkJJG91dFtd ID0gJwoJCQkJCXZhciB2Jy4kdXVpZC4nciA9IG5ldyBTV0ZPYmplY3QoIicuJGZsYXNobW92 aWUuJyIsICInLiR1dWlkLidmbGFzaCIsICInLiR3aWR0aC4nIiwgIicuJGhlaWdodC4nIiwg IicuJHZlcnNpb24uJyIsICIjJy4kYmdjb2xvci4nIik7CgkJCQkJdicuJHV1aWQuJ3IuYWRk UGFyYW0oInNjYWxlIiwgIicuJHNjYWxlLiciKTsnOwoJCQlpZigkcGFyYW1zdHIhPScnKQoJ CQl7CgkJCQkkb3V0W10gPSAnCgkJCQknLnN0cl9yZXBsYWNlKCckanNvJCcsICd2Jy4kdXVp ZC4ncicsICRwYXJhbXN0cikuJwoJCQkJJzsKCQkJfQoJCQkkb3V0W10gPSAnCgkJCQkJdicu JHV1aWQuJ3Iud3JpdGUoIicuJHV1aWQuJ2ZsYXNocmVwbGFjZW1lbnQiKTsKCQkJJzsKCQkJ Ly92Jy4kdXVpZC4nci5hZGRQYXJhbSgic2NhbGUiLCAibm9zY2FsZSIpOwoJCQlpZigkcG1z ZXQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgCSRvdXRbXT0nfSc7CiAgICAgICAgICAg IH0KCQkJJG91dFtdPSAnCgkJCQk8L3NjcmlwdD4KCQkJJzsKICAgICAgICAgICAgZWNobyBp bXBsb2RlKCIiLCRtc2cpOwogICAgICAgICAgICAkcmV0dXJuID0gaW1wbG9kZSgiIiwkb3V0 KTsKICAgICAgICAgICAgJHJldHVybiAuPSBodG1sZW50aXRpZXMoJHJldHVybik7CiAgICAg ICAgICAgIHJldHVybiAkcmV0dXJuOwoJCX0gZWxzZSBpZighJGRlYnVnICYmICRmbGFzaG1v dmllICE9ICcnKSB7CgkJCWlmKCRwbXNldCkKICAgICAgICAgICAgewoJCQkJJG91dFtdPScK CQkJCQk8ZGl2IGlkPSInLiR1dWlkLidmbGFzaHJlcGxhY2VtZW50IiBzdHlsZT0id2lkdGg6 Jy4kd2lkdGguJztoZWlnaHQ6Jy4kaGVpZ2h0Lic7Ij4KCQkJCQkJPGEgaHJlZj0iamF2YXNj cmlwdDp2b2lkKDApOyIgb25jbGljaz0iQ2wnLiR1dWlkLidJY2soKSI+PGltZyBzcmM9Iicu JHBvc3Rlci4nIiB3aWR0aD0iJy4kd2lkdGguJyIgaGVpZ2h0PSInLiRoZWlnaHQuJyIgYWx0 PSJqcGVnIHRoYXQgd2lsbCBiZSByZXBsYWNlZCBieSBmbGFzaCIgdGl0bGU9ImNsaWNrIGhl cmUgdG8gc3RhcnQgZmxhc2ggY29udGVudCIgLz48L2E+CgkJCQkJPC9kaXY+CgkJCQkJJzsK CQkJfSBlbHNlIHsKCQkJCSRvdXRbXT0nCgkJCQkJPGRpdiBpZD0iJy4kdXVpZC4nZmxhc2hy ZXBsYWNlbWVudCIgc3R5bGU9IndpZHRoOicuJHdpZHRoLic7aGVpZ2h0OicuJGhlaWdodC4n OyI+CgkJCQkJCTxwPlNvcnJ5LCBidXQgeW91IGRvIG5vdCBoYXZlIHRoZSBtaW5pbXVtIHZl cnNpb24gKCcuJHZlcnNpb24uJykgb2YgZmxhc2ggcGxheWVyIHJlcXVpcmVkIHRvIHBsYXkg dGhpcyBmbGFzaCBtb3ZpZS4gWW91IGNhbiBpbnN0YWxsIG9yIHVwZ3JhZGUgZmxhc2ggPGEg aHJlZj0iaHR0cDovL3d3dy5hZG9iZS5jb20vc2hvY2t3YXZlL2Rvd25sb2FkL2Rvd25sb2Fk LmNnaT9QMV9Qcm9kX1ZlcnNpb249U2hvY2t3YXZlRmxhc2giPmhlcmU8L2E+LjwvcD4KCQkJ CQk8L2Rpdj4KCQkJCQknOwoJCQl9CiAgICAgICAgICAgICRvdXRbXT0nCiAgICAgICAgICAg IAk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJCSc7CiAgICAgICAgICAgIGlm KCRwbXNldCkKICAgICAgICAgICAgewogICAgICAgICAgICAJJG91dFtdPSdmdW5jdGlvbiBD bCcuJHV1aWQuJ0ljaygpIHsnOwogICAgICAgICAgICB9CgkJCSRvdXRbXSA9ICcKCQkJCQl2 YXIgdicuJHV1aWQuJ3IgPSBuZXcgU1dGT2JqZWN0KCInLiRmbGFzaG1vdmllLiciLCAiJy4k dXVpZC4nZmxhc2giLCAiJy4kd2lkdGguJyIsICInLiRoZWlnaHQuJyIsICInLiR2ZXJzaW9u LiciLCAiIycuJGJnY29sb3IuJyIpOwoJCQkJCXYnLiR1dWlkLidyLmFkZFBhcmFtKCJzY2Fs ZSIsICInLiRzY2FsZS4nIik7JzsKCQkJaWYoJHBhcmFtc3RyIT0nJykKCQkJewoJCQkJJG91 dFtdID0gJwoJCQkJJy5zdHJfcmVwbGFjZSgnJGpzbyQnLCAndicuJHV1aWQuJ3InLCAkcGFy YW1zdHIpLicKCQkJCSc7CgkJCX0KCQkJJG91dFtdID0gJwoJCQkJCXYnLiR1dWlkLidyLndy aXRlKCInLiR1dWlkLidmbGFzaHJlcGxhY2VtZW50Iik7CgkJCSc7CgkJCWlmKCRwbXNldCkK ICAgICAgICAgICAgewogICAgICAgICAgICAJJG91dFtdPSd9JzsKICAgICAgICAgICAgfQoJ CQkkb3V0W109ICcKCQkJCTwvc2NyaXB0PgoJCQknOwogICAgICAgICAgICByZXR1cm4gaW1w bG9kZSgiIiwkb3V0KTsKCQl9Cgl9CgoJZnVuY3Rpb24gd2xrX2ZsZW1zY3JpcHRsaW5rKCRh dHRzKSB7CgkJJGpzZW1iZWQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy Yz0iJy4kYXR0c1sncGF0aCddLiciPjwvc2NyaXB0Pic7CgkJcmV0dXJuICRqc2VtYmVkOwoJ fQoKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vCQkJCUdldCBG aWxlCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0 aW9uIHdsa19mbGVtX2dldF9maWxlKCR3aGVyZSkKICAgIHsKCQlnbG9iYWwgJHBlcm1saW5r X21vZGU7CgkJJHRoaXNmaWxlID0gZmlsZURvd25sb2FkRmV0Y2hJbmZvKCR3aGVyZSk7CgkJ aWYoIWVtcHR5KCR0aGlzZmlsZVsnZmlsZW5hbWUnXSkpCiAgICAgICAgewoJCQkkcGxheWVy ID0gaHUuJ2ZpbGVzLycuJHRoaXNmaWxlWydmaWxlbmFtZSddOwoJCX0gZWxzZSB7CgkJCSRw bGF5ZXIgPSBmYWxzZTsKCQl9CgkJcmV0dXJuICRwbGF5ZXI7Cgl9CgogICAgZnVuY3Rpb24g d2xrX2ZsZW1fZ2V0X2Zyb250KCR3aGVyZSkKICAgIHsKCQlnbG9iYWwgJHBlcm1saW5rX21v ZGUsICR0eHBjZmc7CgkJJHF1ZXJ5ID0gc2FmZV9xdWVyeSgnU0VMRUNUIGlkLCBleHQgRlJP TSAnLiR0eHBjZmdbJ3RhYmxlX3ByZWZpeCddLid0eHBfaW1hZ2UgV0hFUkUgJy4kd2hlcmUu JyBMSU1JVCAxJyk7CgkJJGltZ3JvdyA9IG15c3FsX2ZldGNoX3JvdygkcXVlcnkpOwoJCSR0 aGlzZmlsZSA9IGFycmF5KCdmaWxlbmFtZSc9PiRpbWdyb3dbMF0uJGltZ3Jvd1sxXSk7CgkJ JHBsYXllciA9IGh1LidpbWFnZXMvJzsKCQlpZighZW1wdHkoJHRoaXNmaWxlWydmaWxlbmFt ZSddKSkKICAgICAgICB7CgkJCSRwbGF5ZXIgLj0gJHRoaXNmaWxlWydmaWxlbmFtZSddOwoJ CX0gZWxzZSB7CgkJCSRwbGF5ZXIgPSBmYWxzZTsKCQl9CgkJcmV0dXJuICRwbGF5ZXI7Cgl9 CgoKIjtzOjg6ImhlbHBfcmF3IjtzOjM3MDE6ImgxLiB3bGtfZmxlbQoKdjAuMjogYWN0dWFs bHkgc3VwcG9ydGluZyB0aGUgcGFyYW1zdHIgc2V0dGluZy4gQWxzbywgY29ycmVjdGVkIHRo ZSBoZWxwIGRvY3MuCgpUaGlzIHBsdWdpbiBpcyBmb3IgcXVpY2sgZmxhc2ggbW92aWUgZW1i ZWQgdmlhIHRoZSBhcnRpY2xlIHdyaXRpbmcgdGFiYnkgdGhpbmd5LiAod2l0aCBjbGljayB0 byBlbWJlZC9ydW4gc3dmb2JqZWN0KQoKQDx0eHA6d2xrX2ZsZW0gZmxhc2htb3ZpZT0iMyIg cG9zdGVyPSI1IiBmbGFzaHZlcnNpb249IjkiIHBhcmFtc3RyPSIkanNvJC5hZGRQYXJhbSgi c2FsaWduIiwidGwiKTsiICAvPkAKCmgyLiBJbnN0YWxsYXRpb24KClNpbmNlIHlvdSBjYW4g cmVhZCB0aGlzIGhlbHAsIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgcGx1Z2luIHRvIHR4cC4K RGlkIHlvdSBhY3RpdmF0ZSBpdD8KCmgyLiBVc2FnZQoKUGxhY2UgdGhlIHdsa19mbGVtIHRh ZyBpbiBhbiBhcnRpY2xlLCBmb3JtIG9yIHBhZ2UuCgpHbyB0byBfYWRtaW5fIC0+IF9wcmVm ZXJlbmNlc18gLT4gX2FkdmFuY2VkIHByZWZlcmVuY2VzXyBhbmQgY3JlYXRlIGEgY3VzdG9t IGZvcm0gZmllbGQgY2FsbGVkIGZsYXNobW92aWUuCgpACjx0eHA6d2xrX2ZsZW0gd2lkdGg9 IjMyMCIgaGVpZ2h0PSIyNDAiIC8+CkAKCkl0IHRha2VzIGEgZmV3IG9wdGlvbnM6CgoqICp3 aWR0aCogLSBTcGVjaWZpZXMgd2lkdGguIERlZmF1bHRzIHRvOiAzMjBweCAoY2hlY2tzIGZv ciBjdXN0b21fZmllbGQgIndpZHRoIikuCiogKmhlaWdodCogLSBTcGVjaWZpZXMgaGVpZ2h0 LiBEZWZhdWx0cyB0bzogMjU2cHggKGNoZWNrcyBmb3IgY3VzdG9tX2ZpZWxkICJoZWlnaHQi KS4KKiAqYmdjb2xvciogLSBDaGVja3MgdG8gc2VlIGlmIHlvdXZlIHNldCBhIGhleCBjb2xv ciBmb3IgdGhlIGJhY2tncm91bmQgYmVoaW5kIHRoZSBmbGFzaCBtb3ZpZS4gRGVmYXVsdHMg dG86IEZGRkZGRgoqICpzY2FsZSogLSBDaGVja3MgdG8gc2VlIGlmIHlvdSd2ZSBkZWZpbmll ZCB3aGF0IHRoZSBmbGFzaCBzaG91bGQgZG8uIERlZmF1bHRzIHRvOiBub3NjYWxlCiogKmZs YXNodmVyc2lvbiogLSBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIGZsYXNoIHRoYXQgc3dmb2Jq ZWN0IHdpbGwgZGVsaXZlciB0aGUgbW92aWUgdG8uIERlZmF1bHRzIHRvOiA5ICh5ZWFoLCB0 aGF0J3MgcmlnaHQsIG9ubHkgdGhlIG5ld2VzdCBmb3IgdXMuKQoqICpmbGFzaG1vdmllKiAt IFRoaXMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBmbGFzaCBtb3ZpZSBpbiB0aGUgdGFnLgoq ICpwb3N0ZXIqIC0gVGhpcyBpcyB1c2VkIGlmIHlvdSB3YW50IHRvIHNwZWNpZnkgYSBwb3N0 ZXIgZm9yIGNsaWNrIHRvIGVtYmVkIGFjdGlvbi4KKiAqbW92aWVmaWVsZG5hbWUqIC0gVGhp cyBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFyIGN1c3RvbV9maWVsZCBieSBu YW1lIHRoYXQgd2xrX2ZsZW0gc2hvdWxkIGNoZWNrIGluIHRvIHNlZSBpZiBhIG1vdmllIGlz IHNldC4gKGRlZmF1bHRzIHRvICJmbGFzaG1vdmllIikKKiAqcG9zdGVyZmllbGRuYW1lKiAt IFRoaXMgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgcGFydGljdWxhciBjdXN0b21fZmllbGQg YnkgbmFtZSB0aGF0IHdsa19mbGVtIHNob3VsZCBjaGVjayBpbiB0byBzZWUgaWYgYSBwb3N0 ZXIgaW1hZ2UgaXMgc2V0LiAoZGVmYXVsdHMgdG8gInBvc3RlciIpCiogKndpZHRoZmllbGRu YW1lKiAtIFRoaXMgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgcGFydGljdWxhciBjdXN0b21f ZmllbGQgYnkgbmFtZSB0aGF0IHdsa19mbGVtIHNob3VsZCBjaGVjayBpbiBmb3IgdGhlIGZs YXNoIGVtYmVkIHdpZHRoLiAoZGVmYXVsdHMgdG8gIndpZHRoIikKKiAqaGVpZ2h0ZmllbGRu YW1lKiAtIFRoaXMgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgcGFydGljdWxhciBjdXN0b21f ZmllbGQgYnkgbmFtZSB0aGF0IHdsa19mbGVtIHNob3VsZCBjaGVjayBpbiBmb3IgdGhlIGZs YXNoIGVtYmVkIGhlaWdodC4gKGRlZmF1bHRzIHRvICJoZWlnaHQiKQoqICpwYXJhbXN0ciog LSBtYW51YWxseSBzZXQgYWRkUGFyYW1zIG9yIHdoYXRldmVyIG90aGVyIGZ1bmN0aW9ucyBz d2ZvYmplY3Qgc3VwcG9ydHMuIFNob3VsZCBsb29rIGxpa2UgamF2YXNjcmlwdCwgZXhjZXB0 IHdpdGggJGpzbyQgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IG5hbWUuCgoKaDIuIEVtYmVkZGlu ZyBhIHNwZWNpZmljIG1vdmllIGluIGEgcGFnZToKCklmIHlvdSBzcGVjaWZ5IHZpZGVvIGFz IGFuIGF0dHJpYnV0ZSB5b3UgY2FuIHVzZSB0aGUgZmlsZSBudW1iZXIgZnJvbSB0aGUgZmls ZXMgdGFiIChpZiB5b3UgdXBsb2FkZWQgdGhlIHZpZGVvIGluIHRoaXMgbWFubmVyKQoKYmMu LiA8dHhwOndsa19mbGVtIGZsYXNobW92aWU9IjYiIC8+CgpwLiBvciB5b3UgY2FuIHVzZSB0 aGUgZnVsbCBwYXRoIHRvIHRoZSBmaWxlLgoKYmMuLiA8dHhwOndsa19mbGVtIHZpZGVvPSJo dHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9tb3ZpZXMvbXlmbGFzaG1vdmllLnN3ZiIgLz4KCnAu IG9yCgpiYy4uIDx0eHA6d2xrX2ZsZW0gdmlkZW89Ii9tb3ZpZXMvbXlmbGFzaG1vdmllLnN3 ZiIgLz4KCmgyLiBBdHRhY2hpbmcgYSBmbGFzaG1vdmllIHRvIGFuIGFydGljbGU6CgpJbiB0 aGlzIGNhc2UsIHlvdSB1c2UgdGhhdCBjdXN0b20gJ2ZsYXNobW92aWUnIGZpZWxkIGFuZCBl bnRlciB0aGUgZnVsbCBwYXRoIG9yIHlvdXIgZmlsZSBudW1iZXIgaW4gdGhhdCBmaWVsZC4g VGhlbiB0aGUgZm9ybSBiZWluZyB1c2VkIHRvIG91dHB1dCB0aGUgYXJ0aWNsZSBzaW1wbHkg bmVlZHMgPHR4cDp3bGtfZmxlbSAvPiBpbiBpdCBzb21ld2hlcmUgKHdpdGggYW55IG90aGVy IGF0dHJpYnV0ZXMgeW91IHdhbnQgdG8gc3BlY2lmeSAtIGUuZy4gd2lkdGgsIGhlaWdodCku CgpNeSBmb3JtIGxvb2tzIGxpa2UgdGhpczoKCmJjLi4gPGgzPjx0eHA6cGVybWxpbms+PHR4 cDp0aXRsZSAvPjwvdHhwOnBlcm1saW5rPjwvaDM+Cjx0eHA6d2xrX2ZsZW0gcG9zdGVyPSI0 IiAvPgo8dHhwOmJvZHkgLz4KCnAuIFRoYXQgb3V0cHV0cyB0aGUgYXJ0aWNsZSBvbiB0aGUg cGFnZSB3aGVyZSB0aGlzIGZvcm0gaXMgdXNlZCB3aXRoIHRoZSB0aXRsZSBvZiB0aGUgYXJ0 aWNsZSBhcyBhIGhlYWRlciB0aGVuIGEgZGl2IHdpdGggaW1hZ2UgIzQgZnJvbSB0aGUgaW1h Z2VzIHRhYiBpbiBpdC4gVGhlbiB0aGUgdGV4dCB0aGF0IHdhcyBpbiB0aGUgYm9keSBmaWVs ZCBvZiB0aGUgYXJ0aWNsZSBmb3JtLgoKaDIuIExpbmtpbmcgdXAgdGhlIGphdmFzY3JpcHQu CgpZb3UgbXVzdCBmaXJzdCB1cGxvYWQgInN3Zm9iamVjdC5qcyI6aHR0cDovL2Jsb2cuZGVj b25jZXB0LmNvbS9zd2ZvYmplY3QvIHRvIHlvdXIgc2VydmVyLiAoeW91J2xsIG5lZWQgdG8g ZG93bmxvYWQgaXQsIHVuemlwIGl0LCB0aGVuIHVwbG9hZCBpdCkKClRoZW4gcHV0IHRoaXMg aW4gdGhlIGhlYWRlciBvZiB0aGUgcGFnZSB5b3Ugd2lzaCB0byBkaXNwbGF5IG1vdmllcyBv biAoZXZlcnkgcGFnZS4uLi55ZXMpOgoKYmMuLiA8dHhwOndsa19mbGVtc2NyaXB0bGluayBw YXRoPSJodHRwOi8vbXlkb21haW4uY29tL3RoZS9wYXRoL3RvL3N3Zm9iamVjdC5qcyIgLz4K CnAuIFdoZXJlIHlvdSBmaW5kICJodHRwOi8vbXlkb21haW4uY29tL3RoZS9wYXRoL3RvL3N3 Zm9iamVjdC5qcyIsIG1ha2Ugc3VyZSB5b3UgcHV0IHRoZSBmdWxsIHBhdGggdG8gdGhlIGZp bGUuIjtzOjM6Im1kNSI7czozMjoiMGRkODdiNzQ0MDBhMWEzYzNjOGM4NWNhYTA2MGNhNzci O3M6ODoiY29tcHJlc3MiO2I6MDt9