# Name: soo_wordfest v0.2 # Type: Client side plugin # Word game for article comments # Author: Jeff Soo # URL: http://ipsedixit.net/txp/ # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzb29fd29yZGZlc3QiO3M6NjoiYXV0aG9yIjtzOjg6 IkplZmYgU29vIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI1OiJodHRwOi8vaXBzZWRpeGl0Lm5l dC90eHAvIjtzOjc6InZlcnNpb24iO3M6MzoiMC4yIjtzOjExOiJkZXNjcmlwdGlvbiI7czoz MDoiV29yZCBnYW1lIGZvciBhcnRpY2xlIGNvbW1lbnRzIjtzOjQ6ImhlbHAiO3M6NzcwNzoi PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KZGl2I3NlZF9oZWxwIHByZSB7cGFkZGluZzogMC41 ZW0gMWVtOyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBkYXNoZWQgI2NjYzt9CmRp diNzZWRfaGVscCBoMSwgZGl2I3NlZF9oZWxwIGgyLCBkaXYjc2VkX2hlbHAgaDMsIGRpdiNz ZWRfaGVscCBoMyBjb2RlIHtmb250LWZhbWlseTogc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6 IGJvbGQ7fQpkaXYjc2VkX2hlbHAgaDEsIGRpdiNzZWRfaGVscCBoMiwgZGl2I3NlZF9oZWxw IGgzIHttYXJnaW4tbGVmdDogLTFlbTt9CmRpdiNzZWRfaGVscCBoMiwgZGl2I3NlZF9oZWxw IGgzIHttYXJnaW4tdG9wOiAyZW07fQpkaXYjc2VkX2hlbHAgaDEge2ZvbnQtc2l6ZTogMi40 ZW07fQpkaXYjc2VkX2hlbHAgaDIge2ZvbnQtc2l6ZTogMS44ZW07fQpkaXYjc2VkX2hlbHAg aDMge2ZvbnQtc2l6ZTogMS40ZW07fQpkaXYjc2VkX2hlbHAgaDQge2ZvbnQtc2l6ZTogMS4y ZW07fQpkaXYjc2VkX2hlbHAgaDUge2ZvbnQtc2l6ZTogMWVtO21hcmdpbi1sZWZ0OjFlbTtm b250LXN0eWxlOm9ibGlxdWU7fQpkaXYjc2VkX2hlbHAgaDYge2ZvbnQtc2l6ZTogMWVtO21h cmdpbi1sZWZ0OjJlbTtmb250LXN0eWxlOm9ibGlxdWU7fQpkaXYjc2VkX2hlbHAgbGkge2xp c3Qtc3R5bGUtdHlwZTogZGlzYzt9CmRpdiNzZWRfaGVscCBsaSBsaSB7bGlzdC1zdHlsZS10 eXBlOiBjaXJjbGU7fQpkaXYjc2VkX2hlbHAgbGkgbGkgbGkge2xpc3Qtc3R5bGUtdHlwZTog c3F1YXJlO30KZGl2I3NlZF9oZWxwIGxpIGEgY29kZSB7Zm9udC13ZWlnaHQ6IG5vcm1hbDt9 CmRpdiNzZWRfaGVscCBsaSBjb2RlOmZpcnN0LWNoaWxkIHtiYWNrZ3JvdW5kOiAjZGRkO3Bh ZGRpbmc6MCAuM2VtO21hcmdpbi1sZWZ0Oi0uM2VtO30KZGl2I3NlZF9oZWxwIGxpIGxpIGNv ZGU6Zmlyc3QtY2hpbGQge2JhY2tncm91bmQ6bm9uZTtwYWRkaW5nOjA7bWFyZ2luLWxlZnQ6 MDt9CmRpdiNzZWRfaGVscCBkZm4ge2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHlsZTpvYmxp cXVlO30KZGl2I3NlZF9oZWxwIC5yZXF1aXJlZCwgZGl2I3NlZF9oZWxwIC53YXJuaW5nIHtj b2xvcjpyZWQ7fQpkaXYjc2VkX2hlbHAgLmRlZmF1bHQge2NvbG9yOmdyZWVuO30KPC9zdHls ZT4KIDxkaXYgaWQ9InNlZF9oZWxwIj4KCgk8aDE+c29vX3dvcmRmZXN0PC9oMT4KCiA8ZGl2 IGlkPSJ0b2MiPgoKCTxoMj5Db250ZW50czwvaDI+CgoJPHVsPgoJCTxsaT48YSBocmVmPSIj b3ZlcnZpZXciPk92ZXJ2aWV3PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN1c2FnZSI+VXNh Z2U8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3RhZ3MiPlRhZ3M8L2E+Cgk8dWw+CgkJPGxp PjxhIGhyZWY9IiNzb29fd29yZGZlc3QiPnNvb193b3JkZmVzdDwvYT48L2xpPgoJCTxsaT48 YSBocmVmPSIjc29vX3dvcmRmZXN0X3J1bGVzIj5zb29fd29yZGZlc3RfcnVsZXM8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI3Nvb19pZl93b3JkZmVzdCI+c29vX2lmX3dvcmRmZXN0PC9h PjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNzb29faWZfd29yZGZlc3RpdmUiPnNvb19pZl93b3Jk ZmVzdGl2ZTwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjZXhhbXBsZXMi PkV4YW1wbGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNub3RlcyI+Tm90ZXM8L2E+PC9s aT4KCQk8bGk+PGEgaHJlZj0iI3N1cHBvcnQiPlN1cHBvcnQ8L2E+PC9saT4KCQk8bGk+PGEg aHJlZj0iI2hpc3RvcnkiPkhpc3Rvcnk8L2E+PC9saT4KCTwvdWw+CgogPC9kaXY+CgoJPGgy IGlkPSJvdmVydmlldyI+T3ZlcnZpZXc8L2gyPgoKCTxwPlN1YnZlcnQgdGhlIGRvbWluYW50 IHBhcmFkaWdtIGFuZCBhZGQgZmVzdGl2aXR5IHRvIHlvdXIgY29tbWVudHMgd2l0aCB0aGlz IFRleHRwYXR0ZXJuIHZlcnNpb24gb2YgQWxsZW4gQ2hhbmcmIzgyMTc7cyBkZWxpZ2h0ZnVs bHkgY2xldmVyIDxhIGhyZWY9Imh0dHA6Ly9jaGFvdGljcGF0dGVybi5jb20vYWJvdXQvI29u LXdvcmRmZXN0Ij5Xb3JkZmVzdCBnYW1lPC9hPiBmb3IgPGEgaHJlZj0iaHR0cDovL3N5bXBo b255LWNtcy5jb20vIj5TeW1waG9ueSA8c3BhbiBjbGFzcz0iY2FwcyI+Q01TPC9zcGFuPjwv YT4gY29tbWVudGVycy4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92 aWV3dG9waWMucGhwP2lkPTMwMDY5Ij48c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBQ YWNrPC9hPiBjb21wYXRpYmxlIChidXQgZm9yIG5vbi1FbmdsaXNoIHVzYWdlIHBsZWFzZSBz ZWUgPGEgaHJlZj0iI25vdGVzIj5Ob3RlczwvYT4pLjwvcD4KCgk8cD5UaGUgb2JqZWN0IG9m IDxzdHJvbmc+V29yZGZlc3Q8L3N0cm9uZz4gaXMgdG8gbWVldCBhIHNldCBvZiBjb25zdHJh aW50cyBvbiB3cml0aW5nIGEgY29tbWVudCBtZXNzYWdlLiBUaGVyZSBpcyBhIGNvbmRpdGlv bmFsIHRhZyB0aGF0IGFsbG93cyB5b3UgdG8gZmxhZyBzdWNjZXNzZnVsIGNvbW1lbnRzIGhv d2V2ZXIgeW91IGNob29zZS48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNhZ2U8L2gyPgoKCTxw PkF0IGEgbWluaW11bSwgeW91IG11c3Qgc3RpY2sgYSA8Y29kZT5zb29fd29yZGZlc3Q8L2Nv ZGU+IHRhZyBzb21ld2hlcmUgYWJvdmUgdGhlIGFydGljbGUgY29tbWVudHMsIHRoZW4gdXNl IG9uZSBvciBtb3JlIDxzdHJvbmc+c29vX3dvcmRmZXN0PC9zdHJvbmc+IG91dHB1dCB0YWdz IGluIHlvdXIgYXJ0aWNsZSBhbmQvb3IgY29tbWVudCBmb3Jtcy48L3A+CgoJPGgyIGlkPSJ0 YWdzIj5UYWdzPC9oMj4KCgk8aDMgaWQ9InNvb193b3JkZmVzdCI+c29vX3dvcmRmZXN0PC9o Mz4KCgk8cD5BIHNpbmdsZSB0YWcgeW91IHVzZSB0byBzZXQgdGhlIHJ1bGVzIG9mIHRoZSBn YW1lLiBZb3UgY291bGQgcHJvYmFibHkgcHV0IGl0IGFueXdoZXJlLCBzbyBsb25nIGFzIGl0 IGNvbWVzIGJlZm9yZSBhbnkgb3RoZXIgPHN0cm9uZz5zb29fd29yZGZlc3Q8L3N0cm9uZz4g dGFncywgYnV0IHRoZSBpbnRlbnQgaXMgdG8gdXNlIGl0IGRpcmVjdGx5IGluIGFuIGFydGlj bGUgYm9keS4gVGhpcyBhbGxvd3MgeW91IHRvIGVuYWJsZSBhbmQgc2V0IHJ1bGVzIGZvciB0 aGUgZ2FtZSBvbiBhIHBlci1hcnRpY2xlIGJhc2lzOyBpdCB3b3VsZG4mIzgyMTc7dCBiZSBw YXJ0aWN1bGFybHkgZmVzdGl2ZSB0byBoYXZlIHRoZSBzYW1lIHJ1bGVzIGFjcm9zcyBhcnRp Y2xlcy4gVGhlIHRhZyBpdHNlbGYgZG9lc24mIzgyMTc7dCBvdXRwdXQgYW55dGhpbmc7IGl0 IGp1c3Qgc2V0cyBnbG9iYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIG90aGVyIHRhZ3MuPC9w PgoKCTxwPjxzcGFuIGNsYXNzPSJ3YXJuaW5nIj5Ob3RlOjwvc3Bhbj4gd2hpbGUgdGhlcmUg aXMgc29tZSBtaWxkIGVycm9yIGNoZWNraW5nLCBpdCBpcyByZWFsbHkgdXAgdG8geW91IHRv IHBpY2sgYSBzZW5zaWJsZSBzZXQgb2YgcnVsZXMuPC9wPgoKPHByZT4mbHQ7dHhwOnNvb193 b3JkZmVzdCAvJmd0Owo8L3ByZT4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHA+QWxsIGF0 dHJpYnV0ZXMgPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IHRvIGVtcHR5 LCBzbyB5b3UgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5tdXN0PC9zcGFuPiBzZXQgYXQgbGVh c3Qgb25lIGF0dHJpYnV0ZSB0byBlbmFibGUgPHN0cm9uZz5Xb3JkZmVzdDwvc3Ryb25nPi4g RWFjaCBhdHRyaWJ1dGUgeW91IHNldCBjcmVhdGVzIGFuIGFkZGl0aW9uYWwgcnVsZSBmb3Ig dGhlIGdhbWUuPC9wPgoKCTxwPkFsbCBvZiB0aGUgdGV4dCBhdHRyaWJ1dGVzIGFyZSBjYXNl LWluc2Vuc2l0aXZlLiAoRm9yIG5vbi1FbmdsaXNoIHdlYnNpdGVzIHBsZWFzZSBzZWUgPGEg aHJlZj0iI25vdGVzIj5Ob3RlczwvYT4uKTwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPm11c3Rf Y29udGFpbjwvY29kZT4gPGVtPih0ZXh0KTwvZW0+PGJyIC8+ClRleHQgdGhhdCBtdXN0IGFw cGVhciBzb21ld2hlcmUgaW4gdGhlIGNvbW1lbnQuPC9saT4KCQk8bGk+PGNvZGU+bXVzdF9i ZWdpbjwvY29kZT4gPGVtPih0ZXh0KTwvZW0+PGJyIC8+ClRleHQgdGhhdCBtdXN0IGFwcGVh ciBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbW1lbnQuPC9saT4KCQk8bGk+PGNvZGU+bXVzdF9l bmQ8L2NvZGU+IDxlbT4odGV4dCk8L2VtPjxiciAvPgpUZXh0IHRoYXQgbXVzdCBhcHBlYXIg YXQgdGhlIGVuZCBvZiB0aGUgY29tbWVudC48L2xpPgoJCTxsaT48Y29kZT5hbmFncmFtPC9j b2RlPiA8ZW0+KHRleHQpPC9lbT48YnIgLz4KVGV4dCBmb3Igd2hpY2ggYW4gYW5hZ3JhbSBt dXN0IGFwcGVhciBzb21ld2hlcmUgaW4gdGhlIGNvbW1lbnQuPC9saT4KCQk8bGk+PGNvZGU+ d29yZF9jb3VudDwvY29kZT4gPGVtPihpbnRlZ2VyKTwvZW0+PGJyIC8+CkV4YWN0IG51bWJl ciBvZiB3b3JkcyBhbGxvd2VkLjwvbGk+CgkJPGxpPjxjb2RlPm1heF93b3JkX2NvdW50PC9j b2RlPiA8ZW0+KGludGVnZXIpPC9lbT48YnIgLz4KTWF4aW11bSBudW1iZXIgb2Ygd29yZHMg YWxsb3dlZC48L2xpPgoJCTxsaT48Y29kZT5taW5fd29yZF9sZW5ndGg8L2NvZGU+IDxlbT4o aW50ZWdlcik8L2VtPjxiciAvPgpNaW5pbXVtIHdvcmQgbGVuZ3RoLjwvbGk+CgkJPGxpPjxj b2RlPm1heF93b3JkX2xlbmd0aDwvY29kZT4gPGVtPihpbnRlZ2VyKTwvZW0+PGJyIC8+Ck1h eGltdW0gd29yZCBsZW5ndGguPC9saT4KCQk8bGk+PGNvZGU+bm90X3dvcmRfbGVuZ3RoPC9j b2RlPiA8ZW0+KGludGVnZXIpPC9lbT48YnIgLz4KV29yZCBsZW5ndGggdGhhdCBtdXN0IGJl IGF2b2lkZWQuPC9saT4KCTwvdWw+CgoJPGgzIGlkPSJzb29fd29yZGZlc3RfcnVsZXMiPnNv b193b3JkZmVzdF9ydWxlczwvaDM+CgoJPHA+QSBzaW5nbGUgdGFnIHRoYXQgZGlzcGxheXMg dGhlIHJ1bGVzIGluIGVmZmVjdC4gSXQgaXNuJiM4MjE3O3QgY29udGV4dCBzZW5zaXRpdmUs IHNvIHlvdSBjYW4gdXNlIGl0IGFueXdoZXJlIGZvbGxvd2luZyB0aGUgPGEgaHJlZj0iI3Nv b193b3JkZmVzdCI+PGNvZGU+c29vX3dvcmRmZXN0PC9jb2RlPjwvYT4gdGFnLCBidXQgcHJl c3VtYWJseSB5b3Ugd2lsbCB3YW50IHRvIHVzZSBpdCBpbiBhbiBhcnRpY2xlIG9yIGNvbW1l bnQgZm9ybS48L3A+CgoJPHA+VXNlcyB0aGUgc3RyaW5ncyBzZXQgaW4gdGhlIHBsdWdpbiYj ODIxNztzIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGlj LnBocD9pZD0zMDA2OSI+PHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gUGFjazwvYT4g ZGVmaW5pdGlvbnMsIHNvIHlvdSBjYW4gdHJhbnNsYXRlIG9yIGVkaXQgdGhlc2UgYXMgZGVz aXJlZC48L3A+Cgo8cHJlPiZsdDt0eHA6c29vX3dvcmRmZXN0X3J1bGVzIC8mZ3Q7CjwvcHJl PgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8cD5TdGFuZGFyZCBUeHAgYXR0cmlidXRlczsg bm9uZSAgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj4uPC9wPgoKCTx1 bD4KCQk8bGk+PGNvZGU+aHRtbF9pZDwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5jbGFzczwv Y29kZT48L2xpPgoJCTxsaT48Y29kZT53cmFwdGFnPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2Rl PmJyZWFrPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0ic29vX2lmX3dvcmRmZXN0Ij5z b29faWZfd29yZGZlc3Q8L2gzPgoKCTxwPkEgc3RhbmRhcmQgVHhwIGNvbmRpdGlvbmFsIHRh ZyB0aGF0IHNpbXBseSBjaGVja3Mgd2hldGhlciBvciBub3QgYW55IDxzdHJvbmc+V29yZGZl c3Q8L3N0cm9uZz4gcnVsZXMgaGF2ZSBiZWVuIHNldC48L3A+Cgo8cHJlPiZsdDt0eHA6c29v X2lmX3dvcmRmZXN0Jmd0OwouLi4gb3V0cHV0IGlmIFdvcmRmZXN0IHJ1bGVzIGFyZSBpbiBl ZmZlY3QgLi4uCiZsdDt0eHA6ZWxzZSAvJmd0OwouLi4gb3RoZXJ3aXNlIHRoaXMgLi4uCiZs dDsvdHhwOnNvb19pZl93b3JkZmVzdCZndDsKPC9wcmU+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0 PgoKCTxwPk5vbmUuPC9wPgoKCTxoMyBpZD0ic29vX2lmX3dvcmRmZXN0aXZlIj5zb29faWZf d29yZGZlc3RpdmU8L2gzPgoKCTxwPkEgc3RhbmRhcmQgVHhwIGNvbmRpdGlvbmFsIHRhZyB0 aGF0IGNoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCBjb21tZW50IG1lZXRzIHRo ZSBjdXJyZW50IDxzdHJvbmc+V29yZGZlc3Q8L3N0cm9uZz4gcnVsZXMuIDxzcGFuIGNsYXNz PSJyZXF1aXJlZCI+VXNlIG9ubHk8L3NwYW4+IGluIGEgY29tbWVudCBkaXNwbGF5IGZvcm0u PC9wPgoKPHByZT4mbHQ7dHhwOnNvb19pZl93b3JkZmVzdGl2ZSZndDsKLi4uIG91dHB1dCBp ZiBjb21tZW50IGlzIHByb3Blcmx5IFdvcmRmZXN0aXZlIC4uLgombHQ7dHhwOmVsc2UgLyZn dDsKLi4uIG90aGVyd2lzZSB0aGlzIC4uLgombHQ7L3R4cDpzb29faWZfd29yZGZlc3RpdmUm Z3Q7CjwvcHJlPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8cD5Ob25lLjwvcD4KCgk8aDIg aWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPHA+U2VlIDxhIGhyZWY9Imh0dHA6Ly9p cHNlZGl4aXQubmV0L3R4cC84OC93b3JkZmVzdCI+aHR0cDovL2lwc2VkaXhpdC5uZXQvdHhw Lzg4L3dvcmRmZXN0PC9hPiBmb3Igd29ya2luZyBleGFtcGxlcy48L3A+CgoJPGgyIGlkPSJu b3RlcyI+Tm90ZXM8L2gyPgoKCTxoMz5JbnRlcm5hdGlvbmFsaXphdGlvbjwvaDM+CgoJPHA+ RGVzcGl0ZSBoYXZpbmcgYWRkZWQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0 dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0zMDA2OSI+PHNwYW4gY2xhc3M9ImNhcHMiPk1M UDwvc3Bhbj4gUGFjazwvYT4gZnVuY3Rpb25zLCBJIHJlYWxseSBoYXZlIG5vIGV4cGVyaWVu Y2UgaW4gZGVhbGluZyB3aXRoIGludGVybmF0aW9uYWxpemF0aW9uLiBJJiM4MjE3O20gcXVp dGUgc3VyZSB0aGUgYW5hZ3JhbSBmdW5jdGlvbiBjdXJyZW50bHkgb25seSB3b3JrcyB3aXRo aW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5BU0NJSTwvc3Bhbj4gc2V0LiBJIGZlYXIgdGhl IG90aGVyIHRleHQtYmFzZWQgZnVuY3Rpb25zIGFyZSBzaW1pbGFyeSBsaW1pdGVkLCB1c2lu ZyA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiBmdW5jdGlvbnMgc3VjaCBhcyA8Y29k ZT5zdWJzdHIoKTwvY29kZT4gdGhhdCBvbmx5IHdvcmsgd2l0aCBzaW5nbGUtYnl0ZSB0ZXh0 LiBBbnkgaGludHMgb3Igc3VnZ2VzdGlvbnMgYXBwcmVjaWF0ZWQuPC9wPgoKCTxoMiBpZD0i c3VwcG9ydCI+U3VwcG9ydDwvaDI+CgoJPHVsPgoJCTxsaT48YSBocmVmPSJodHRwOi8vZm9y dW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MzE0MzAiPlRleHRwYXR0ZXJu IHN1cHBvcnQgZm9ydW0gdGhyZWFkPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9p cHNlZGl4aXQubmV0L3R4cC84OC93b3JkZmVzdCI+T25saW5lIGRvY3VtZW50YXRpb248L2E+ PC9saT4KCQk8bGk+PGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQvaW5mby8yL2NvbnRh Y3QiPkNvbnRhY3QgdGhlIGF1dGhvcjwvYT48L2xpPgoJPC91bD4KCgk8aDIgaWQ9Imhpc3Rv cnkiPlZlcnNpb24gSGlzdG9yeTwvaDI+CgoJPGgzPjAuMiAoQXVndXN0IDIsIDIwMDkpPC9o Mz4KCgk8cD5BZGRlZCA8Y29kZT5hbmFncmFtPC9jb2RlPiBhdHRyaWJ1dGUgdG8gPGNvZGU+ c29vX3dvcmRmZXN0PC9jb2RlPi48L3A+CgoJPGgzPjAuMSAoQXVndXN0IDEsIDIwMDkpPC9o Mz4KCgk8cD5Ib3Qgb2ZmIHRoZSBncmlsbC48L3A+CgogPC9kaXY+IjtzOjQ6ImNvZGUiO3M6 NTgxNToiCmZ1bmN0aW9uIHNvb193b3JkZmVzdCggJGF0dHMgKSB7CglnbG9iYWwgJHNvb193 b3JkZmVzdDsKCSRpbnRlZ2VyX2F0dHMgPSBhcnJheSgKCQknd29yZF9jb3VudCcJCT0+ICcn LAoJCSdtYXhfd29yZF9jb3VudCcJPT4gJycsCgkJJ21pbl93b3JkX2xlbmd0aCcJPT4gJycs CgkJJ21heF93b3JkX2xlbmd0aCcJPT4gJycsCgkJJ25vdF93b3JkX2xlbmd0aCcJPT4gJycs CgkpOwoJJGF0dHMgPSBsQXR0cyhhcnJheSgKCQknbXVzdF9jb250YWluJwkJPT4gJycsCgkJ J211c3RfYmVnaW4nCQk9PiAnJywKCQknbXVzdF9lbmQnCQkJPT4gJycsCgkJJ2FuYWdyYW0n CQkJPT4gJycsCgkpICsgJGludGVnZXJfYXR0cywgJGF0dHMpOwoJZm9yZWFjaCAoICRhdHRz IGFzICRuYW1lID0+ICR2YWx1ZSApIHsKCQlpZiAoIGFycmF5X2tleV9leGlzdHMoJG5hbWUs ICRpbnRlZ2VyX2F0dHMpICkKCQkJJHZhbHVlID0gYWJzKGludHZhbCgkdmFsdWUpKTsKCQlp ZiAoIGlzX3N0cmluZygkdmFsdWUpICkKCQkJJHZhbHVlID0gdHJpbSgkdmFsdWUpOwoJCWlm ICggJG5hbWUgPT0gJ2FuYWdyYW0nICkKCQkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvW15h LXpcc1wnXS9pJywgJycsICR2YWx1ZSk7CgkJaWYgKCAkdmFsdWUgKQoJCQkkc29vX3dvcmRm ZXN0WyRuYW1lXSA9ICR2YWx1ZTsKCX0KfQoKZnVuY3Rpb24gc29vX3dvcmRmZXN0X3J1bGVz KCAkYXR0cyApIHsKCWdsb2JhbCAkc29vX3dvcmRmZXN0OwoJZXh0cmFjdChsQXR0cyhhcnJh eSgKCQknaHRtbF9pZCcJCT0+CScnLAoJCSdjbGFzcycJCQk9PgknJywKIAkJJ3dyYXB0YWcn CQk9PgknJywKIAkJJ2JyZWFrJwkJCT0+CScnLAoJKSwgJGF0dHMpKTsKCglmb3JlYWNoICgg JHNvb193b3JkZmVzdCBhcyAkcnVsZSA9PiAkdmFsdWUgKSB7CgkJJGRpc3BsYXkgPSBzb29f d29yZGZlc3RfZ1R4dCgkcnVsZSk7CgkJaWYgKCBpc19zdHJpbmcoJHZhbHVlKSApIHsKCQkJ JGlzX3BsdXJhbCA9IHN0cl93b3JkX2NvdW50KCR2YWx1ZSkgPiAxOwoJCQkkcGF0dGVybiA9 ICcvXHsoW159XSspXHwoW159XSspXH0vJzsKCQkJcHJlZ19tYXRjaCgkcGF0dGVybiwgJGRp c3BsYXksICRtYXRjaCk7CgkJCWlmICggY291bnQoJG1hdGNoKSApIHsKCQkJCSRyZXBsYWNl bWVudCA9ICRpc19wbHVyYWwgPyAkbWF0Y2hbMl0gOiAkbWF0Y2hbMV07CgkJCQkkZGlzcGxh eSA9IHByZWdfcmVwbGFjZSgkcGF0dGVybiwgJHJlcGxhY2VtZW50LCAkZGlzcGxheSk7CgkJ CX0KCQkJJHZhbHVlID0gc29vX3dvcmRmZXN0X2dUeHQoJ2xxdW8nKSAuICR2YWx1ZSAuCgkJ CQlzb29fd29yZGZlc3RfZ1R4dCgncnF1bycpOwoJCX0KCQkkZGlzcGxheSA9IHN0cl9yZXBs YWNlKCd7eH0nLCAkdmFsdWUsICRkaXNwbGF5KTsKCQlpZiAoICR2YWx1ZSApCgkJCSRvdXRb XSA9ICRkaXNwbGF5OwoJfQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFr LCAkY2xhc3MsICcnLCAnJywgJycsICRodG1sX2lkKTsKfQoKZnVuY3Rpb24gc29vX2lmX3dv cmRmZXN0KCAkYXR0cywgJHRoaW5nICkgewoJZ2xvYmFsICRzb29fd29yZGZlc3Q7CglyZXR1 cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCBpc19hcnJheSgkc29vX3dvcmRmZXN0KSkpOwp9 CgpmdW5jdGlvbiBzb29faWZfd29yZGZlc3RpdmUoICRhdHRzLCAkdGhpbmcgKSB7CgoJZ2xv YmFsICRzb29fd29yZGZlc3QsICR0aGlzY29tbWVudDsKCglpZiAoIGlzX2FycmF5KCRzb29f d29yZGZlc3QpICkKCQlleHRyYWN0KCRzb29fd29yZGZlc3QpOwoJZWxzZQoJCXJldHVybjsK Cglhc3NlcnRfY29tbWVudCgpOwoJJGNvbW1lbnQgPSB0cmltKHN0cnRvbG93ZXIoc3RyaXBf dGFncygkdGhpc2NvbW1lbnRbJ21lc3NhZ2UnXSkpKTsKCgkkcGFzcyA9IHRydWU7CgoJaWYg KCAhIGVtcHR5KCRtdXN0X2NvbnRhaW4pICkKCQlpZiAoICRjb21tZW50ID09IHN0cl9pcmVw bGFjZSgkbXVzdF9jb250YWluLCAnJywgJGNvbW1lbnQpICkKCQkJJHBhc3MgPSBmYWxzZTsK CglpZiAoICRwYXNzIGFuZCAhIGVtcHR5KCRtdXN0X2JlZ2luKSApCgkJaWYgKCBzdHJ0b2xv d2VyKCRtdXN0X2JlZ2luKSAhPSBzdWJzdHIoJGNvbW1lbnQsIDAsIHN0cmxlbigkbXVzdF9i ZWdpbikpICkKCQkJJHBhc3MgPSBmYWxzZTsKCglpZiAoICRwYXNzIGFuZCAhIGVtcHR5KCRt dXN0X2VuZCkgKQoJCWlmICggc3RydG9sb3dlcigkbXVzdF9lbmQpICE9IHN1YnN0cigkY29t bWVudCwgLSBzdHJsZW4oJG11c3RfZW5kKSkgKQoJCQkkcGFzcyA9IGZhbHNlOwoKCWlmICgg JHBhc3MgYW5kICEgZW1wdHkoJHdvcmRfY291bnQpICkKCQlpZiAoICR3b3JkX2NvdW50ICE9 IHN0cl93b3JkX2NvdW50KCRjb21tZW50KSApCgkJCSRwYXNzID0gZmFsc2U7CgoJaWYgKCAk cGFzcyBhbmQgISBlbXB0eSgkbWF4X3dvcmRfY291bnQpICkKCQlpZiAoICRtYXhfd29yZF9j b3VudCA8IHN0cl93b3JkX2NvdW50KCRjb21tZW50KSApCgkJCSRwYXNzID0gZmFsc2U7CgoJ aWYgKCAkcGFzcyBhbmQgKCAhIGVtcHR5KCRtaW5fd29yZF9sZW5ndGgpIG9yICEgZW1wdHko JG1heF93b3JkX2xlbmd0aCkKCQlvciAhIGVtcHR5KCRub3Rfd29yZF9sZW5ndGgpIG9yICEg ZW1wdHkoJGFuYWdyYW0pICkgKSB7CgoJCSR3b3JkcyA9IHByZWdfc3BsaXQoJy9bXFddKy8n LCAkY29tbWVudCk7CgkJZm9yZWFjaCAoICR3b3JkcyBhcyAkd29yZCApCgkJCSR3b3JkX2xl bmd0aHNbXSA9IHN0cmxlbigkd29yZCk7CgkJJHNfd29yZF9sZW5ndGhzID0gYXJyYXlfdW5p cXVlKCR3b3JkX2xlbmd0aHMpOwoJCXNvcnQoJHNfd29yZF9sZW5ndGhzKTsKCQlpZiAoICRz X3dvcmRfbGVuZ3Roc1swXSA9PSAwICkKCQkJYXJyYXlfc2hpZnQoJHNfd29yZF9sZW5ndGhz KTsKCgkJaWYgKCAhIGVtcHR5KCRtaW5fd29yZF9sZW5ndGgpICkKCQkJaWYgKCAkbWluX3dv cmRfbGVuZ3RoID4gJHNfd29yZF9sZW5ndGhzWzBdICkKCQkJCSRwYXNzID0gZmFsc2U7CgoJ CWlmICggJHBhc3MgYW5kICEgZW1wdHkoJG1heF93b3JkX2xlbmd0aCkgKQoJCQlpZiAoICRt YXhfd29yZF9sZW5ndGggPCAkc193b3JkX2xlbmd0aHNbY291bnQoJHNfd29yZF9sZW5ndGhz KSAtIDFdICkKCQkJCSRwYXNzID0gZmFsc2U7CgoJCWlmICggJHBhc3MgYW5kICEgZW1wdHko JG5vdF93b3JkX2xlbmd0aCkgKQoJCQlpZiAoIGluX2FycmF5KCRub3Rfd29yZF9sZW5ndGgs ICRzX3dvcmRfbGVuZ3RocykgKQoJCQkJJHBhc3MgPSBmYWxzZTsKCgkJaWYgKCAkcGFzcyBh bmQgISBlbXB0eSgkYW5hZ3JhbSkgKSB7CgkJCSRhbmFncmFtID0gc3RydG9sb3dlcihwcmVn X3JlcGxhY2UoJy9bXmEtel0vaScsICcnLCAkYW5hZ3JhbSkpOwoJCQkkbGV0dGVycyA9IHN0 cl9zcGxpdCgkYW5hZ3JhbSk7CgkJCXNvcnQoJGxldHRlcnMpOwoJCQkkY291bnQgPSBjb3Vu dCgkbGV0dGVycyk7CgkJCSR3b3JkcyA9IHByZWdfcmVwbGFjZSgnL1teYS16XS9pJywgJycs ICR3b3Jkcyk7CgkJCSRtYXRjaCA9IGZhbHNlOwoJCQl3aGlsZSAoICEgJG1hdGNoIGFuZCBj b3VudCgkd29yZHMpICkgewoJCQkJJHRlc3Rfc3RyaW5nID0gJHdvcmRzWzBdOwoJCQkJJGNf bWF0Y2ggPSBzdHJsZW4oJHRlc3Rfc3RyaW5nKSA9PSAkY291bnQ7CgkJCQkkaSA9IDE7CgkJ CQl3aGlsZSAoICEgJGNfbWF0Y2ggYW5kICRpIDwgY291bnQoJHdvcmRzKSApIHsKCQkJCQkk dGVzdF9zdHJpbmcgLj0gJHdvcmRzWyRpXTsKCQkJCQkkY19tYXRjaCA9IHN0cmxlbigkdGVz dF9zdHJpbmcpID09ICRjb3VudDsKCQkJCQlpZiAoIHN0cmxlbigkdGVzdF9zdHJpbmcpID4g JGNvdW50ICkKCQkJCQkJJGkgPSBjb3VudCgkd29yZHMpOwoJCQkJCSRpKys7CgkJCQl9CgkJ CQlpZiAoICRjX21hdGNoICkgewoJCQkJCSR0ZXN0X3N0cmluZyA9IHN0cnRvbG93ZXIoJHRl c3Rfc3RyaW5nKTsKCQkJCQkkdGVzdF9hcnJheSA9IHN0cl9zcGxpdCgkdGVzdF9zdHJpbmcp OwoJCQkJCXNvcnQoJHRlc3RfYXJyYXkpOwoJCQkJCSRtYXRjaCA9ICggJGxldHRlcnMgPT0g JHRlc3RfYXJyYXkgYW5kICRhbmFncmFtICE9ICR0ZXN0X3N0cmluZyApOwoJCQkJfQoJCQkJ YXJyYXlfc2hpZnQoJHdvcmRzKTsKCQkJfQoJCQkkcGFzcyA9ICRtYXRjaDsKCQl9Cgl9CgoJ cmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgJHBhc3MpKTsKfQoKICAvLy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS8vCiAvLwkJCQkJCQlNTFAgUGFjayBkZWZpbml0aW9ucwkJCQkJCS8vCi8vLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLy8KCmRlZmluZSgnU09PX1dPUkRGRVNUX1BSRUZJWCcsICdzb29fZmVz dCcpOwpnbG9iYWwgJHNvb193b3JkZmVzdF9zdHJpbmdzOwokc29vX3dvcmRmZXN0X3N0cmlu Z3MgPSBhcnJheSgKCSdtdXN0X2NvbnRhaW4nCQk9PiAnY29udGFpbiB0aGUge3dvcmR8cGhy YXNlfSB7eH0nLAoJJ211c3RfYmVnaW4nCQk9PiAnYmVnaW4gd2l0aCB0aGUge3dvcmR8cGhy YXNlfSB7eH0nLAoJJ211c3RfZW5kJwkJCT0+ICdlbmQgd2l0aCB0aGUge3dvcmR8cGhyYXNl fSB7eH0nLAoJJ3dvcmRfY291bnQnCQk9PiAnYmUgZXhhY3RseSB7eH0gd29yZHMgbG9uZycs CgknbWF4X3dvcmRfY291bnQnCT0+ICdub3QgZXhjZWVkIHt4fSB3b3JkcycsCgknbWluX3dv cmRfbGVuZ3RoJwk9PiAnb25seSB1c2Ugd29yZHMgdGhhdCBhcmUgYXQgbGVhc3Qge3h9IGxl dHRlcnMgbG9uZycsCgknbWF4X3dvcmRfbGVuZ3RoJwk9PiAnb25seSB1c2Ugd29yZHMgdGhh dCBhcmUgbm90IG1vcmUgdGhhbiB7eH0gbGV0dGVycyBsb25nJywKCSdub3Rfd29yZF9sZW5n dGgnCT0+ICdhdm9pZCB1c2luZyB7eH0tbGV0dGVyIHdvcmRzJywKCSdhbmFncmFtJwkJCT0+ ICdjb250YWluIGFuIGFuYWdyYW0gb2Yge3h9JywKCSdscXVvJwkJCQk9PiAnJmxkcXVvOycs CgkncnF1bycJCQkJPT4gJyZyZHF1bzsnLAopOwoKcmVnaXN0ZXJfY2FsbGJhY2soJ3Nvb193 b3JkZmVzdF9lbnVtZXJhdGVfc3RyaW5ncycsICdsMTBuLmVudW1lcmF0ZV9zdHJpbmdzJyk7 CgpmdW5jdGlvbiBzb29fd29yZGZlc3RfZW51bWVyYXRlX3N0cmluZ3MoICRldmVudCwgJHN0 ZXAgPSAnJywgJHByZSA9IDAgKSB7CglnbG9iYWwgJHNvb193b3JkZmVzdF9zdHJpbmdzOwoJ JHIgPSBhcnJheSgKCQknb3duZXInCQk9PiAnc29vX3dvcmRmZXN0JywKCQkncHJlZml4Jwk9 PiBTT09fV09SREZFU1RfUFJFRklYLAoJCSdsYW5nJwkJPT4gJ2VuLXVzJywKCQknZXZlbnQn CQk9PiAncHVibGljJywKCQknc3RyaW5ncycJPT4gJHNvb193b3JkZmVzdF9zdHJpbmdzLAoJ CQkJKTsKCXJldHVybiAkcjsKfQoKZnVuY3Rpb24gc29vX3dvcmRmZXN0X2dUeHQoICR3aGF0 ICwgJGFyZ3MgPSBhcnJheSgpICkgewoJZ2xvYmFsICR0ZXh0YXJyYXk7CglnbG9iYWwgJHNv b193b3JkZmVzdF9zdHJpbmdzOwoKCSRrZXkgPSBTT09fV09SREZFU1RfUFJFRklYIC4gJy0n IC4gJHdoYXQ7Cgkka2V5ID0gc3RydG9sb3dlcigka2V5KTsKCglpZihpc3NldCgkdGV4dGFy cmF5WyRrZXldKSkKCQkkc3RyID0gJHRleHRhcnJheVska2V5XTsKCgllbHNlIHsKCQkka2V5 ID0gc3RydG9sb3dlcigkd2hhdCk7CgoJCWlmKCBpc3NldCggJHNvb193b3JkZmVzdF9zdHJp bmdzWyRrZXldICkgKQoJCQkkc3RyID0gJHNvb193b3JkZmVzdF9zdHJpbmdzWyRrZXldOwoJ CWVsc2UKCQkJJHN0ciA9ICR3aGF0OwoJfQoKCWlmKCAhZW1wdHkoJGFyZ3MpICkKCQkkc3Ry ID0gc3RydHIoICRzdHIgLCAkYXJncyApOwoKCXJldHVybiAkc3RyOwp9CiI7czo0OiJ0eXBl IjtzOjE6IjAiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjM6 Im1kNSI7czozMjoiNWI2MDA2MjExYTRlNTBiYTJmZTliM2ZjNTliZTkwNjciO30=