# Name: smd_if v0.61 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNjEi O3M6ODoicmV2aXNpb24iO3M6MDoiIjtzOjY6ImF1dGhvciI7czoxMToiU3RlZiBEYXdzb24i O3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS8iO3M6MTE6 ImRlc2NyaXB0aW9uIjtzOjM1OiJHZW5lcmljIG11bHRpcGxlIGlmIGNvbmRpdGlvbiB0ZXN0 cyI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czoyMzM3ODoiCTxwPjxkaXYgaWQ9 InNtZF9oZWxwIj48L3A+CgoJPGgxPnNtZF9pZjwvaDE+CgoJPHA+QSByZWFsbHkgc2ltcGxl LCBnZW5lcmljICYjODIxNjtpZiBjb25kaXRpb24mIzgyMTc7IHRlc3Rlci4gQ2FuIHRlc3Qg YW55IGZpZWxkIGluIHRoZSBjdXJyZW50IGFydGljbGUsIGZpbGUgb3IgbGluayBjb250ZXh0 IGZvciBhIHZhcmlldHkgb2YgYXR0cmlidXRlcyBhbmQgdGFrZSBhY3Rpb24gaWYgPHNwYW4g Y2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwv c3Bhbj4uPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0cyBt b3N0IG1ham9yIGFydGljbGUsIGZpbGUgYW5kIGxpbmsgdmFyaWFibGVzIHN1Y2ggYXMgc2Vj dGlvbiwgY2F0ZWdvcnksIGN1c3RvbSBmaWVsZHMsIGlkLCBxdWVyeSBzdHJpbmcsIGF1dGhv ciwgYm9keSwgZXhjZXJwdCwgeWFoZGUgeWFoZGUsIHBsdXMgdXJsIHZhcnMsIHNlcnZlciB2 YXJzIGFuZCBzdWItY2F0ZWdvcnkvcGFyZW50IGNoZWNraW5nPC9saT4KCQk8bGk+VGVzdHMg aW5jbHVkZSBlcXVhbGl0eSwgaW5lcXVhbGl0eSwgbGVzcyB0aGFuLCBncmVhdGVyIHRoYW4s IGVtcHR5LCB1c2VkLCBkZWZpbmVkLCBiZWdpbnMsIGVuZHMsIGNvbnRhaW5zLCBpcyBudW1l cmljIC8gYWxwaGEgLyBhbHBoYW51bWVyaWMgLyBsb3dlcmNhc2UgLyB1cHBlcmNhc2UsIGFt b25nIG90aGVyczwvbGk+CgkJPGxpPlRlc3RzIGZvciBtb3JlIHRoYW4gb25lIGNvbmRpdGlv biBhdCBvbmNlIGFuZCBhcHBsaWVzIGVpdGhlciA8c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9z cGFuPiBsb2dpYyAoYWxsIHRlc3RzIG11c3QgcGFzcykgb3IgT1IgbG9naWMgKGFueSB0ZXN0 IG11c3QgcGFzcyk8L2xpPgoJCTxsaT5VZ2x5IGFuZCB2ZXJ5IGRpcnR5LiBVc2VzIDxzcGFu IGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+JiM4MjE3O3MgPGNvZGU+ZXZhbCgpPC9jb2RlPiBj b21tYW5kIHdoaWNoIG1vc3QgcHJvZ3JhbW1lcnMgY29uY3VyIHNob3VsZCBiZSByZW5hbWVk IDxjb2RlPmV2aWwoKTwvY29kZT48L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yPC9oMj4KCgk8 cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3 c29uPC9hPi4gQmFzZWQgb24gYW4gaWRlYSBicmV3aW5nIGluIHRoZSBiYWNrIG9mIG15IG1p bmQgd2hpbGUgaGFja2luZyBjaHNfaWZfdXJsdmFyLjwvcD4KCgk8aDI+SW5zdGFsbGF0aW9u IC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBl aXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzkzMC9zbWRf aWYiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRh d3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBh bmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0i aHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTI1MzU3Ij5m b3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNj ZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGws IHNpbXBseSBkZWxldGUgZnJvbSB0aGUgQWRtaW4gLSZndDsgUGx1Z2lucyBwYWdlLjwvcD4K Cgk8aDI+VXNhZ2U8L2gyPgoKCTxwPlVzZSB0aGUgdGFnIGluIGFueSBwYWdlLCBmb3JtIG9y IGFydGljbGUgY29udGV4dC4gQ2FuIGFsc28gYmUgdXNlZCBpbnNpZGUgZmlsZSBvciBsaW5r IGxpc3RzIHRvIHRha2UgYWN0aW9uIGRlcGVuZGluZyBvbiBhdHRyaWJ1dGVzIG9mIHRoZSBj dXJyZW50IGl0ZW0uPC9wPgoKCTxoMyBjbGFzcz0idGFnIj5zbWRfaWY8L2gzPgoKCTxwIGNs YXNzPSJ0YWctc3VtbWFyeSI+QXQgdGhlIHBsYWNlIHlvdSB3aXNoIHRvIGNvbXBhcmUgYSA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCB3aXRoIGFub3RoZXIgdmFsdWUs IHB1dCB0aGlzIHRhZyB3aXRoIGFsbCB0aHJlZSBtYW5kYXRvcnkgYXR0cmlidXRlcyBzaGFk ZWQgYmVsb3cuIEVhY2ggdGFrZSBhIHNlcmllcyBvZiBjb21tYS1zZXBhcmF0ZWQgbGlzdHMg JiM4MjEyOyB0aG91Z2ggdGhlIDxhIGhyZWY9IiNwYXJhbWRlbGltIj5jb21tYSBpcyBvdmVy cmlkYWJsZTwvYT4gd2l0aCB0aGUgcGFyYW1fZGVsaW0gYXR0cmlidXRlLiBJZiB0aGUgcmVz dWx0IG9mIHRoZSBjb21wYXJpc29uIHRlc3RzIGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVF PC9zcGFuPiB0aGUgY29udGFpbmVkIGJsb2NrIHdpbGwgYmUgZXhlY3V0ZWQuIElmIHRoZSBy ZXN1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPiwgYW55IDxjb2RlPiZs dDt0eHA6ZWxzZSAvJmd0OzwvY29kZT4gd2lsbCBiZSBleGVjdXRlZCBpbnN0ZWFkLiBXaXRo b3V0IGFueSA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2NvZGU+IGJsb2NrLCBub3RoaW5n IGlzIG91dHB1dCBpZiB0aGUgcmVzdWx0IGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwv c3Bhbj4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1 dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj5maWVs ZDwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gPGEgaHJlZj0i I2ZpZWxkIj5maWVsZHM8L2E+IHRvIHRlc3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 LW5hbWUgbWFuZCI+b3BlcmF0b3I8L3NwYW4+IDogdGhlIDxhIGhyZWY9IiNvcGVyYXRvciI+ b3BlcmF0aW9uczwvYT4gZm9yIGNvbXBhcmlzb24gd2l0aCB0aGF0IGZpZWxkIChlLmcuIDxj b2RlPmVxPC9jb2RlPiwgPGNvZGU+bm90PC9jb2RlPiwgPGNvZGU+YmVnaW5zPC9jb2RlPiwg ZXRjKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj52YWx1ZTwvc3Bh bj4gOiB0aGUgPGEgaHJlZj0iI3ZhbHVlIj52YWx1ZXM8L2E+IHdpdGggd2hpY2ggdG8gY29t cGFyZSB0aGUgZmllbGRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5sb2dp Yzwvc3Bhbj4gOiBob3cgbXVsdGlwbGUgdGVzdHMgYXJlIGpvaW5lZDogPHNwYW4gY2xhc3M9 ImNhcHMiPkFORDwvc3Bhbj4gb3IgT1IuIERlZmF1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMi PkFORDwvc3Bhbj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhc2Vfc2Vu c2l0aXZlPC9zcGFuPiA6IDEgPSBjYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uOyAwID0gaWdu b3JlIGNhc2UuIERlZmF1bHQgaXMgMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+cGFyYW1fZGVsaW08L3NwYW4+IDogZGVsaW1pdGVyIHRvIHVzZSB3aGVuIHNwZWNpZnlp bmcgZmllbGQsIG9wZXJhdG9yIG9yIHZhbHVlIGxpc3RzLiBEZWZhdWx0IGlzIHRoZSBjb21t YSAoLCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1vZF9kZWxpbTwvc3Bh bj4gOiBkZWxpbWl0ZXIgdG8gdXNlIHdoZW4gc3BlY2lmeWluZyBmaWVsZCBvciBvcGVyYXRv ciBtb2RpZmllcnMuIERlZmF1bHQgaXMgdGhlIGNvbG9uICg6KTwvbGk+Cgk8L3VsPgoKCTxw PlRoZSBsaXN0cyBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyLCBpLmUuIHRoZSAxc3QgZmllbGQg dXNlcyB0aGUgMXN0IG9wZXJhdG9yIGluIHRoZSBsaXN0IGFuZCBjb21wYXJlcyBpdCB0byB0 aGUgMXN0IHZhbHVlOyB0aGUgMm5kIGZpZWxkIHVzZXMgdGhlIDJuZCBvcGVyYXRvciBpbiB0 aGUgbGlzdCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIDJuZCB2YWx1ZSwgYW5kIHNvIG9uLiBW YWx1ZXMgc2hvdWxkIHVzdWFsbHkgYmUgc3BlY2lmaWVkIHdpdGggcGxhY2Vob2xkZXJzIHRv IG1haW50YWluIG9yZGVyOiBlLmcuIDxjb2RlPnZhbHVlPSZxdW90OywgNCwsIHRvcCZxdW90 OzwvY29kZT48L3A+CgoJPHA+Tm90ZSB0aGF0LCBhbHRob3VnaCB0aGUgZmlyc3QgdGhyZWUg YXR0cmlidXRlcyBhcmUgY29uc2lkZXJlZCBtYW5kYXRvcnksIGlmIHlvdSBoYXBwZW4gdG8g cmVxdWlyZSB0aGUgZGVmYXVsdCBvcGVyYXRvciBmb3IgYWxsIHlvdXIgdGVzdHMsIHlvdSBj YW4gc2FmZWx5IG9taXQgPGNvZGU+b3BlcmF0b3I8L2NvZGU+LiBTaW1pbGFybHkgd2l0aCB2 YWx1ZXM6IGlmIHlvdSBhcmUgZW50aXJlbHkgdGVzdGluZyB0aGUgZXhpc3RlbmNlIG9yIHR5 cGUgb2YgdmFyaWFibGVzLCB5b3UgY2FuIG9taXQgdGhlIDxjb2RlPnZhbHVlPC9jb2RlPiBw YXJhbWV0ZXIgaWYgeW91IHdpc2guPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0i ZmllbGQiPmZpZWxkPC9oND4KCgk8cD5MaXN0IG9mIFRleHRQYXR0ZXJuIGZpZWxkcyB0byBs b29rIGF0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgoJPHVsPgoJCTxsaT48Y29kZT5zZWN0aW9u PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPmNhdGVnb3J5PC9jb2RlPiAob3IgPGNvZGU+Y2F0 ZWdvcnkxPC9jb2RlPiwgb3IgPGNvZGU+Y2F0ZWdvcnkyPC9jb2RlPiBpZiBvbiBhbiBhcnRp Y2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+YXV0aG9yaWQ8L2NvZGU+IG9yIDxjb2RlPmF1 dGhvcjwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5pZDwvY29kZT4gKGZpbGUvbGluay9hcnRp Y2xlIElEKTwvbGk+CgkJPGxpPjxjb2RlPnF1ZXJ5PC9jb2RlPiAodGhlIHF1ZXJ5IHN0cmlu ZyBmcm9tIHRoZSBzZWFyY2ggZm9ybSk8L2xpPgoJCTxsaT48Y29kZT5wZzwvY29kZT4gKHRo ZSBjdXJyZW50IHBhZ2UgbnVtYmVyIGluIGxpc3RzKTwvbGk+CgkJPGxpPjxjb2RlPm1vbnRo PC9jb2RlPiAoY3VycmVudCBtb250aCBmaWVsZCBmcm9tIHRoZSBhZGRyZXNzIGJhcik8L2xp PgoJCTxsaT48Y29kZT5zdGF0dXM8L2NvZGU+IChkb2N1bWVudCBzdGF0dXM6IDIwMCwgNDA0 LCA0MDMsIGV0Yyk8L2xpPgoJCTxsaT48Y29kZT5wYWdlPC9jb2RlPiAodGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IFBhZ2UgdGVtcGxhdGUgdXNlZCBieSB0aGlzIHNlY3Rp b24pPC9saT4KCQk8bGk+PGNvZGU+bmV4dF9pZDwvY29kZT4gLyA8Y29kZT5wcmV2X2lkPC9j b2RlPiAoSUQgb2YgbmV4dC9wcmV2IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xp PgoJCTxsaT48Y29kZT5uZXh0X3RpdGxlPC9jb2RlPiAvIDxjb2RlPnByZXZfdGl0bGU8L2Nv ZGU+KFRpdGxlIG9mIG5leHQvcHJldiBkb2N1bWVudCBpZiBvbiBhcnRpY2xlIHBhZ2UpPC9s aT4KCQk8bGk+PGNvZGU+bmV4dF91dGl0bGU8L2NvZGU+IC8gPGNvZGU+cHJldl91dGl0bGU8 L2NvZGU+ICh1cmwtdGl0bGUgb2YgbmV4dC9wcmV2IGRvY3VtZW50IGlmIG9uIGFydGljbGUg cGFnZSk8L2xpPgoJCTxsaT48Y29kZT5wZXJtbGlua19tb2RlPC9jb2RlPiAodGFrZSBhY3Rp b24gYmFzZWQgb24gb25lIG9mIHRoZSBtZXNzeS9jbGVhbiA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBzY2hlbWVzKTwvbGk+CgkJPGxpPjxjb2RlPm90aGVyIGFydGljbGUvZmls ZS9saW5rIGZpZWxkPC9jb2RlPiAoZS5nLiBib2R5LCBleGNlcnB0LCBhcnRpY2xlX2ltYWdl LCBrZXl3b3JkcywgbGlua2FubWUsIGZpbGVuYW1lLCBkb3dubG9hZHMsICYjODIzMDspPC9s aT4KCQk8bGk+PGNvZGU+bXlfY3VzdG9tX2ZpZWxkX25hbWU8L2NvZGU+IChhbnkgY3VzdG9t IGZpZWxkcyB5b3UgaGF2ZSBkZWZpbmVkKTwvbGk+CgkJPGxpPjxjb2RlPnVybHZhcjpteV92 YXJpYWJsZV9uYW1lPC9jb2RlPiAoYW55IHZhcmlhYmxlIGluIHRoZSBhZGRyZXNzIGJhciBh ZnRlciB0aGUgPGNvZGU+PzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+c3ZydmFyOm15X3Zh cmlhYmxlX25hbWU8L2NvZGU+IChhbnkgc2VydmVyIHZhcmlhYmxlLCBlLmcuIDxzcGFuIGNs YXNzPSJjYXBzIj5IVFRQPC9zcGFuPl9VU0VSX0FHRU5UKTwvbGk+CgkJPGxpPjxjb2RlPnBh cmVudDpvcHRpb25hbF9tb2RpZmllcnM8L2NvZGU+ICh3aGV0aGVyIHRoZSBnaXZlbiBjYXRl Z29yeSBpcyBhIGRlc2NlbmRlbnQgb2YgYW5vdGhlciBjYXRlZ29yeSk8L2xpPgoJPC91bD48 L3A+CgoJPHA+SWYgeW91IHNwZWNpZnkgYSBmaWVsZCBuYW1lIHRoYXQgZG9lcyBub3QgZXhp c3QsIHRoZSB0ZXh0IHlvdSB1c2Ugd2lsbCBiZSB0YWtlbiB2ZXJiYXRpbSBpbiBtb3N0IGNh c2VzLjwvcD4KCgk8cD5UaGUgc3BlY2lhbCBmaWVsZCA8Y29kZT5wYXJlbnQ8L2NvZGU+IGNo ZWNrcyB0aGUgcGFyZW50IGNhdGVnb3J5IGZvciBhIG1hdGNoLiBVbmxpa2UgdGhlIG90aGVy IGZpZWxkIHR5cGVzLCB0aGUgZGVmYXVsdCA8YSBocmVmPSIjb3BlcmF0b3IiPm9wZXJhdG9y PC9hPiBmb3IgcGFyZW50IGlzICYjODIxNjtjb250YWlucyYjODIxNzsuIFRoaXMgaXMgYmVj YXVzZSB0aGUgZW50aXJlIHRyZWUgaXMgY2hlY2tlZCBmb3IgYSBtYXRjaCwgc3RhcnRpbmcg ZnJvbSB0aGUgdG9wIG9mIHRoZSB0cmVlIGRvd24gdG8gdGhlIGN1cnJlbnQgY2F0ZWdvcnku IEludGVybmFsbHksIHRoZSBwbHVnaW4gbWFrZXMgdXAgYSAmIzgyMjA7YnJlYWRjcnVtYiB0 cmFpbCYjODIyMTsgb2YgY2F0ZWdvcmllcyBpbiB0aGUgY3VycmVudCBicmFuY2gsIGVhY2gg c2VwYXJhdGVkIGJ5IGEgc3BhY2UsIHNvIHRlc3RpbmcgZm9yIGVxdWFsaXR5IHdvdWxkIHJl cXVpcmUgcHV0dGluZyB0aGVtIGFsbCBpbiB0aGUgPGEgaHJlZj0iI3ZhbHVlIj52YWx1ZTwv YT4gcGFyYW1ldGVyLjwvcD4KCgk8cD5Zb3UgYXJlIG9mIGNvdXJzZSBmcmVlIHRvIGNob29z ZSBhbiBhbHRlcm5hdGl2ZSBvcGVyYXRvcjsgPGNvZGU+YmVnaW5zPC9jb2RlPiBpcyB2ZXJ5 IHVzZWZ1bCBmb3IgdGVzdGluZyBpZiB0aGUgdG9wIGxldmVsIGNhdGVnb3J5IG1hdGNoZXMg dGhlIG9uZSBnaXZlbiBpbiB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IGZpZWxkLjwvcD4KCgk8 cD5JZiB5b3UgdXNlIDxjb2RlPnBhcmVudDpMVkxuPC9jb2RlPiwgdGhlIGNvbXBhcmlzb24g d2lsbCBiZSByZXN0cmljdGVkIHRvIHRoYXQgJiM4MjIwO2xldmVsJiM4MjIxOyBvZiBzdWIt Y2F0ZWdvcnk7IExWTDEgaXMgdGhlICYjODIyMDt0b3AmIzgyMjE7IGxldmVsLCBMVkwyIGlz IHRoZSBuZXh0IHN1Yi1jYXRlZ29yeSBsZXZlbCwgYW5kIHNvIG9uLiBXaGVuIHVzaW5nIHRo ZXNlIG1vZGlmaWVycywgdGhlICYjODIxNjtlcSYjODIxNzsgb3BlcmF0b3IgYmVjb21lcyBt b3JlIHVzZWZ1bCBiZWNhdXNlIHlvdSBhcmUgY29tcGFyaW5nIGEgc2luZ2xlIHBhcmVudCBj YXRlZ29yeS48L3A+CgoJPHA+V2hlbiB1c2luZyBhcnRpY2xlcywgeW91IGNhbiBmdXJ0aGVy IG1vZGlmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBwYXJlbnQgdXNpbmcgdGhlIDxjb2RlPkNB VG48L2NvZGU+IHN5bnRheCAod2hlcmUgJiM4MjE2O24mIzgyMTc7IGlzIDEgb3IgMikuIFNw ZWNpZnlpbmcgJiM4MjIwO3BhcmVudCYjODIyMTsgd2l0aG91dCA8Y29kZT5DQVRuPC9jb2Rl PiB3aWxsIHVzZSB0aGUgZ2xvYmFsIGNhdGVnb3J5ICg8Y29kZT4/Yz08L2NvZGU+KS4gSWYg eW91IGFkZCA8Y29kZT46Q0FUbjwvY29kZT4gaXQgd2lsbCBpbnN0ZWFkIGNvbXBhcmUgdGhl IGFydGljbGUmIzgyMTc7cyBjYXRlZ29yeTEgb3IgY2F0ZWdvcnkyIHJlc3BlY3RpdmVseS48 L3A+CgoJPHA+WW91IGNhbiB1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPkNBVDwvc3Bhbj4gYW5k IDxzcGFuIGNsYXNzPSJjYXBzIj5MVkw8L3NwYW4+IGluIGNvbWJpbmF0aW9uLCBpbmRlcGVu ZGVudGx5IG9yIG5vdCBhdCBhbGwuIFRoaXMgYWxsb3dzIGNvbXBhcmlzb25zIHN1Y2ggYXMg JiM4MjIwO2lmIHRoZSAybmQgc3ViLWNhdGVnb3J5IG9mIGNhdGVnb3J5MSBlcXVhbHMgYmxh aGJsYWgmIzgyMjE7IG9yICYjODIyMDtpZiBjYXRlZ29yeTIgaXMgYSBjaGlsZCBvZiBibGFo YmxhaCYjODIyMTsuIFNlZSA8YSBocmVmPSIjZWc0Ij5FeGFtcGxlIDQ8L2E+LjwvcD4KCgk8 aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9Im9wZXJhdG9yIj5vcGVyYXRvcjwvaDQ+CgoJPHA+ TGlzdCBvZiBvcGVyYXRvcnMgdG8gYXBwbHksIGluIG9yZGVyLCB0byBlYWNoIGZpZWxkLiBD aG9vc2UgZnJvbTo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5lcTwvY29kZT4gRXF1YWwgKHRo ZSBkZWZhdWx0IGZvciBhbGwgZXhjZXB0ICYjODIxNjtwYXJlbnQmIzgyMTc7KTwvbGk+CgkJ PGxpPjxjb2RlPm5vdDwvY29kZT4gTm90IGVxdWFsPC9saT4KCQk8bGk+PGNvZGU+bHQ8L2Nv ZGU+IExlc3MgdGhhbjwvbGk+CgkJPGxpPjxjb2RlPmd0PC9jb2RlPiBHcmVhdGVyIHRoYW48 L2xpPgoJCTxsaT48Y29kZT5sZTwvY29kZT4gTGVzcyB0aGFuIG9yIGVxdWFsIHRvPC9saT4K CQk8bGk+PGNvZGU+Z2U8L2NvZGU+IEdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bzwvbGk+CgkJ PGxpPjxjb2RlPmJlZ2luczwvY29kZT4gVmFyaWFibGUgYmVnaW5zIHdpdGggYSBzZXF1ZW5j ZSBvZiBjaGFyYWN0ZXJzPC9saT4KCQk8bGk+PGNvZGU+Y29udGFpbnM8L2NvZGU+IFZhcmlh YmxlIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyAoZGVmYXVsdCBmb3IgJiM4 MjE2O3BhcmVudCYjODIxNzspPC9saT4KCQk8bGk+PGNvZGU+ZW5kczwvY29kZT4gVmFyaWFi bGUgZW5kcyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVyczwvbGk+CgkJPGxpPjxjb2Rl PmlzZW1wdHk8L2NvZGU+IFZhcmlhYmxlIGlzIGVtcHR5IChjb250YWlucyBub3RoaW5nKTwv bGk+CgkJPGxpPjxjb2RlPmlzdXNlZDwvY29kZT4gVmFyaWFibGUgaGFzIHNvbWUgdmFsdWU8 L2xpPgoJCTxsaT48Y29kZT5kZWZpbmVkPC9jb2RlPiBWYXJpYWJsZSBpcyBzZXQgKHVzZWZ1 bCB3aXRoIHVybHZhciB2YXJpYWJsZXMpPC9saT4KCQk8bGk+PGNvZGU+dW5kZWZpbmVkPC9j b2RlPiBWYXJpYWJsZSBpcyBub3Qgc2V0LCBvciBtaXNzaW5nIGZyb20gdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmU8L2xpPgoJCTxsaT48Y29kZT5pc251bTwvY29k ZT4gVmFyaWFibGUgaXMgYSBudW1iZXI8L2xpPgoJCTxsaT48Y29kZT5pc2FscGhhPC9jb2Rl PiBWYXJpYWJsZSBjb250YWlucyBjaGFyYWN0ZXJzIG9ubHk8L2xpPgoJCTxsaT48Y29kZT5p c2FsbnVtPC9jb2RlPiBWYXJpYWJsZSBjb250YWlucyBhbHBoYW51bWVyaWMgY2hhcmFjdGVy cyBvbmx5PC9saT4KCQk8bGk+PGNvZGU+aXNsb3dlcjwvY29kZT4gRXZlcnkgY2hhcmFjdGVy IGluIHRoZSB2YXJpYWJsZSBpcyBsb3dlciBjYXNlPC9saT4KCQk8bGk+PGNvZGU+aXN1cHBl cjwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRoZSB2YXJpYWJsZSBpcyB1cHBlciBjYXNl PC9saT4KCQk8bGk+PGNvZGU+aXNwdW5jdDwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRo ZSB2YXJpYWJsZSBpcyBzb21lIHB1bmN0dWF0aW9uIG1hcms8L2xpPgoJCTxsaT48Y29kZT5p c3NwYWNlPC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHZhcmlhYmxlIGlzIGEgd2hp dGVzcGFjZSBjaGFyYWN0ZXIgKG9yIHRhYiwgbmV3bGluZSwgZXRjKTwvbGk+Cgk8L3VsPgoK CTxwPldpdGggdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIChndCwgbHQsIGdlLCBsZSkgeW91 IG1heSBmaW5kIG9kZCBiZWhhdmlvdXIgd2hlbiBjb21wYXJpbmcgbnVtYmVycy4gRm9yIGV4 YW1wbGUsIDxjb2RlPnVybHZhcjpwaWMgZ3QgNjwvY29kZT4gd2lsbCByZXR1cm4gPHNwYW4g Y2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IGlmIHRoZSA8Y29kZT5waWM8L2NvZGU+IHZhcmlh YmxlIGlzIHNldCB0byAmIzgyMjA7ZnJlZCYjODIyMTsuIFRoaXMgaXMgYmVjYXVzZSB0aGUg d29yZCAmIzgyMjA7ZnJlZCYjODIyMTsgKG9yIGF0IGxlYXN0IHRoZSAmIzgyMjA7Y2hhcmFj dGVyIGYmIzgyMjE7KSBpcyBncmVhdGVyIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+QVND SUk8L3NwYW4+IHRhYmxlIHRoYW4gdGhlICYjODIyMDtjaGFyYWN0ZXIgNiYjODIyMTsuPC9w PgoKCTxwPlRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCB5b3UgbWF5IGFwcGVuZCA8Y29k ZT46TlVNPC9jb2RlPiB0byB0aGUgZW5kIG9mIGFueSBvZiB0aGVzZSA0IG9wZXJhdG9ycyB0 byBmb3JjZSB0aGUgcGx1Z2luIHRvIGNoZWNrIHRoYXQgdGhlIHZhbHVlcyBhcmUgaW50ZWdl cnMuPC9wPgoKCTxwPkFueSBvZiB0aGUgPGNvZGU+aXM8L2NvZGU+IG9wZXJhdG9ycyAoZXhj ZXB0IDxjb2RlPmlzc3BhY2U8L2NvZGU+KSBjYW4gdGFrZSBhbiBleHRyYSBwYXJhbWV0ZXIg YXMgd2VsbC4gU2luY2UgdGhleSBjb21wYXJlIGV2ZXJ5IGNoYXJhY3RlciBhZ2FpbnN0IHRo ZSBnaXZlbiBiZWhhdmlvdXIsIHNwYWNlIGNoYXJhY3RlcnMgY2FuIG1lc3MgdGhpbmdzIHVw IGEgYml0LiBGb3IgZXhhbXBsZSA8Y29kZT5jdXN0b20xIGlzbG93ZXI8L2NvZGU+IHdpbGwg ZmFpbCBpZiBjdXN0b20xIGNvbnRhaW5zICYjODIyMDt0aGlzIGlzIGEgdGVzdCYjODIyMTsu IFRvIGNpcmN1bXZlbnQgdGhpcywgYWRkIDxjb2RlPjpOT1NQQUNFPC9jb2RlPiB0byB0aGUg b3BlcmF0b3Igd2hpY2ggd2lsbCByZW1vdmUgYWxsIHNwYWNlcyBmcm9tIHRoZSBzdHJpbmcg YmVmb3JlIHRlc3RpbmcgaXQuPC9wPgoKCTxwPk5vdGUgYWxzbyB0aGF0IHdoaWxlIDxjb2Rl PmRlZmluZWQ8L2NvZGU+IGFuZCA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IGRpZmZlciBzZW1h bnRpY2FsbHkgZnJvbSA8Y29kZT5pc3VzZWQ8L2NvZGU+IGFuZCA8Y29kZT5pc2VtcHR5PC9j b2RlPiAocmVzcGVjdGl2ZWx5KSwgdGhlIHdheSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiBhc3NpZ25zIHZhcmlhYmxlcyBtZWFucyB0aGF0LCBmb3IgdGhlIG1vc3QgcGFydCwg dGhlIHRlcm1zIGFyZSBpbnRlcmNoYW5nZWFibGUuIFdoZW4gZGVhbGluZyB3aXRoIHVybHZh cnMgYW5kIHN2cnZhcnMsIHRoZSB0d28gc2V0cyBvZiBvcGVyYXRvcnMgYmVoYXZlIGluZGVw ZW5kZW50bHksIGFzIHlvdSB3b3VsZCBleHBlY3QuIFNlZSA8YSBocmVmPSIjZWc1Ij5FeGFt cGxlIDU8L2E+IGZvciBtb3JlLiBOZWl0aGVyIDxjb2RlPmRlZmluZWQ8L2NvZGU+IG5vciA8 Y29kZT51bmRlZmluZWQ8L2NvZGU+IG1ha2Ugc2Vuc2Ugd2l0aCA8Y29kZT5wYXJlbnQ8L2Nv ZGU+LCBzbyB0aGV5IGFyZSBmb3JiaWRkZW4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUg IiBpZD0idmFsdWUiPnZhbHVlPC9oND4KCgk8cD5MaXN0IG9mIHZhbHVlcyB0byBjb21wYXJl IGVhY2ggZmllbGQgaW4gdHVybiB0by4gQ2FuIGJlIHN0YXRpYyB2YWx1ZXMvdGV4dCBvciB0 aGUgbmFtZSBvZiBhbnkgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGQsIGxp a2UgdGhvc2UgZ2l2ZW4gaW4gPGEgaHJlZj0iI2ZpZWxkIj5maWVsZDwvYT4gKGV4Y2VwdCAm IzgyMjA7cGFyZW50JiM4MjIxOykuPC9wPgoKCTxwPlRvIGRpc3Rpbmd1aXNoIGEgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGQgZnJvbSBzdGF0aWMgdGV4dCwgcHJlZml4 IHRoZSBmaWVsZCBuYW1lIHdpdGggPGNvZGU+PzwvY29kZT4uIEZvciBleGFtcGxlOiA8Y29k ZT52YWx1ZT0mcXVvdDt0aXRsZSZxdW90OzwvY29kZT4gd2lsbCBjb21wYXJlIHlvdXIgY2hv c2VuIGZpZWxkIGFnYWluc3QgdGhlIHdvcmQgJiM4MjIwO3RpdGxlJiM4MjIxOywgd2hlcmVh cyA8Y29kZT52YWx1ZT0mcXVvdDs/dGl0bGUmcXVvdDs8L2NvZGU+IHdpbGwgY29tcGFyZSB5 b3VyIGZpZWxkIGFnYWluc3QgdGhlIGN1cnJlbnQgYXJ0aWNsZSYjODIxNztzIHRpdGxlLjwv cD4KCgk8cD5Ob3RlIHRoYXQgeW91IG1heSBmaW5kIHVzaW5nIGRvdWJsZS1xdW90ZXMgaW4g ZmllbGRzIGdpdmVzIHVuZXhwZWN0ZWQgcmVzdWx0cy4gVGhleSBhcmUgYmVzdCBhdm9pZGVk LCBvciB3b3JrZWQgYXJvdW5kIGJ5IHVzaW5nIDxjb2RlPmNvbnRhaW5zPC9jb2RlPiBpbnN0 ZWFkIG9mIDxjb2RlPmVxPC9jb2RlPi48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlk PSJsb2dpYyI+bG9naWM8L2g0PgoKCTxwPkNhbiBiZSBvbmUgb2YgPGNvZGU+YW5kPC9jb2Rl PiAodGhlIGRlZmF1bHQpIG9yIDxjb2RlPm9yPC9jb2RlPi4gSWYgdXNpbmcgPGNvZGU+YW5k PC9jb2RlPiwgYWxsIGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQgZm9yIGEgPHNwYW4gY2xhc3M9 ImNhcHMiPlRSVUU8L3NwYW4+IHJlc3VsdC4gSWYgdXNpbmcgPGNvZGU+b3I8L2NvZGU+LCBh bnkgb2YgdGhlIGNvbmRpdGlvbnMgdGhhdCBtYXRjaCB3aWxsIGdpdmUgYSA8c3BhbiBjbGFz cz0iY2FwcyI+VFJVRTwvc3Bhbj4gcmVzdWx0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1l ICIgaWQ9ImNhc2VzZW5zZSI+Y2FzZV9zZW5zaXRpdmU8L2g0PgoKCTxwPkJ5IGRlZmF1bHQs IGFsbCBjb21wYXJpc29ucyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSAoMCkuIElmIHlvdSB3aXNo IHRvIG1ha2UgdGhlbSBzZW5zaXRpdmUgdG8gY2FwdGlsaXNhdGlvbiwgc3BlY2lmeSA8Y29k ZT5jYXNlX3NlbnNpdGl2ZT0mcXVvdDsxJnF1b3Q7PC9jb2RlPi4gTm90ZSB0aGF0IGlmIHVz aW5nIDxjb2RlPmlzbG93ZXI8L2NvZGU+IG9yIDxjb2RlPmlzdXBwZXI8L2NvZGU+IGluIGEg Y29tcGFyaXNvbiwgY2FzZSBzZW5zaXRpdml0eSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc3dp dGNoZWQgb24gd2hpbGUgdGhlIHRlc3QgaXMgdGFraW5nIHBsYWNlLjwvcD4KCgk8aDQgY2xh c3M9ImF0dC1uYW1lICIgaWQ9InBhcmFtZGVsaW0iPnBhcmFtX2RlbGltPC9oND4KCgk8cD5Z b3Ugbm9ybWFsbHkgc3BlY2lmeSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgdG8gdGhlIDxjb2Rl PmZpZWxkPC9jb2RlPiwgPGNvZGU+b3BlcmF0b3I8L2NvZGU+IGFuZCA8Y29kZT52YWx1ZTwv Y29kZT4gcGFyYW1ldGVycy4gU29tZXRpbWVzIHRoaXMgbWlnaHQgbm90IGJlIGRlc2lyYWJs ZSBpZiB5b3UgaGF2ZSB1c2VkIHRoYXQgY2hhcmFjdGVyIGluIHRoZSBuYW1lIG9mIGEgY3Vz dG9tIGZpZWxkLCBmb3IgZXhhbXBsZS4gVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBjaGFu Z2UgdGhlIGRlbGltaXRlciB0byBhbG1vc3QgYW55dGhpbmcgeW91IGxpa2UsIGUuZy4gc3Bl Y2lmeWluZyA8Y29kZT5wYXJhbV9kZWxpbT0mcXVvdDsvLyZxdW90OzwvY29kZT4gbWVhbnMg eW91IHdvdWxkIHNwZWNpZnkgPGVtPmFsbDwvZW0+IHlvdXIgcGFyYW1ldGVyIGxpc3RzIGxp a2UgdGhpczo8L3A+CgoJPHA+PGNvZGU+ZmllbGQ9JnF1b3Q7c2VjdGlvbiAvLyB1cmx2YXI6 dHlwZSZxdW90OyBvcGVyYXRvcj0mcXVvdDtlcSAvLyBiZWdpbnMmcXVvdDsgdmFsdWU9JnF1 b3Q7YW5pbWFscyAvLyB0aWdlciZxdW90OzwvY29kZT48L3A+CgoJPGg0IGNsYXNzPSJhdHQt bmFtZSAiIGlkPSJtb2RkZWxpbSI+bW9kX2RlbGltPC9oND4KCgk8cD5WZXJ5IHNpbWlsYXIg dG8gPGEgaHJlZj0iI3BhcmFtZGVsaW0iPnBhcmFtX2RlbGltPC9hPiwgdGhpcyBnb3Zlcm5z IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gYW4gb3B0aW9uIGFuZCBpdHMgbW9kaWZp ZXIgKGUuZy4gdGhlIHRoaW5nIHNlcGFyYXRpbmcgdXJsdmFyIG9yIHN2cnZhciBmcm9tIHRo ZSB2YXJpYWJsZSBuYW1lLCBvciBwYXJlbnQgZnJvbSA8Y29kZT5MVkw8L2NvZGU+IGFuZCA8 Y29kZT5DQVQ8L2NvZGU+LCBhbmQgYWxzbyB0aGUgY2hhcmFjdGVyKHMpIHRoYXQgc2VwYXJh dGUgYW4gb3BlcmF0b3IgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTTwvc3Bhbj4g b3IgPHNwYW4gY2xhc3M9ImNhcHMiPk5PU1BBQ0U8L3NwYW4+IG1vZGlmaWVycykuIEl0IGlz IHRoZSBjb2xvbiAoOikgYnkgZGVmYXVsdC48L3A+CgoJPHA+Tm90ZSB0aGF0IGluIGJvdGgg JiM4MjE2O2RlbGltJiM4MjE3OyBhdHRyaWJ1dGVzLCBzb21lIGNoYXJhY3RlciBzZXF1ZW5j ZXMgbWF5IGNhdXNlIHByb2JsZW1zIChxdW90ZXMgJiM4MjEyOyBzaW5nbGUgb3IgZG91Ymxl ICYjODIxMjsgc3ByaW5nIHRvIG1pbmQ7IG90aGVycyBsaWtlIHBhcmVudGhlc2VzIG1heSBh bHNvIGNhdXNlIHRoZSBwbHVnaW4gdG8gZXhwbG9kZSkuPC9wPgoKCTxoMj5FeGFtcGxlczwv aDI+CgoJPGgzIGlkPSJlZzEiPkV4YW1wbGUgMTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtzZWN0aW9u LCBpZCZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2JlZ2lucywgZ3QmcXVvdDsKICAgICB2 YWx1ZT0mcXVvdDtsaW9uLCAxMiZxdW90OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0Owom bHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0 OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGVja3MgaWYgdGhl IGN1cnJlbnQgc2VjdGlvbiBuYW1lIGJlZ2lucyB3aXRoIHRoZSB3b3JkICYjODIyMDtsaW9u JiM4MjIxOyBhbmQgdGhlIGFydGljbGUgSUQgaXMgZ3JlYXRlciB0aGFuIDEyLiBEaXNwbGF5 cyB0aGUgYXJ0aWNsZSBpZiBib3RoIGNvbmRpdGlvbnMgYXJlIG1ldCBvciBkaXNwbGF5cyB0 aGUgdGV4dCAmIzgyMjA7Tm90IHRvZGF5LCB0aGFua3MmIzgyMjE7IGlmIG5vdC48L3A+CgoJ PGgzIGlkPSJlZzIiPkV4YW1wbGUgMjwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtzdW1tYXJ5LCBjYXRl Z29yeSwgdXJsdmFyOnBpYyZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2lzdXNlZCwgZXEs IGlzbnVtJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7LCBhbmltYWwgLCZxdW90OyAmZ3Q7CiAm bHQ7dHhwOmFydGljbGUgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtOb3Qg dG9kYXksIHRoYW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+Q2hlY2tzIGlmIHRoZSBjdXN0b20gZmllbGQgbGFiZWxsZWQgJiM4MjIwO3N1 bW1hcnkmIzgyMjE7IGhhcyBzb21lIGRhdGEgaW4gaXQsIGNoZWNrcyBpZiB0aGUgZ2xvYmFs IGNhdGVnb3J5IGVxdWFscyAmIzgyMjA7YW5pbWFsJiM4MjIxOyBhbmQgdGVzdHMgaWYgdGhl IHVybHZhciA8Y29kZT5waWM8L2NvZGU+IGlzIG51bWVyaWMgKGUuZy4gPGNvZGU+P3BpYz01 PC9jb2RlPikuPC9wPgoKCTxwPklmIGFsbCB0aGVzZSBjb25kaXRpb25zIGFyZSBtZXQgdGhl IGFydGljbGUgaXMgZGlzcGxheWVkLCBlbHNlIHRoZSBtZXNzYWdlIGlzIHNob3duLiBOb3Rl IHRoYXQgPGNvZGU+aXN1c2VkPC9jb2RlPiBhbmQgPGNvZGU+aXNudW08L2NvZGU+IGRvbiYj ODIxNzt0IHRha2UgYXJndW1lbnRzIGZvciA8Y29kZT52YWx1ZTwvY29kZT4gYW5kIHRoZWly IHBvc2l0aW9ucyBhcmUgaGVsZCBieSBlbXB0eSBjb21tYXMgKHRlY2huaWNhbGx5IHRoZSBs YXN0IGNvbW1hIGlzbiYjODIxNzt0IG5lZWRlZCBidXQgaXQgaGVscHMga2VlcCBldmVyeXRo aW5nIG5lYXQgaWYgeW91IGFkZCBmdXJ0aGVyIHRlc3RzIGxhdGVyIG9uKS48L3A+CgoJPGgz IGlkPSJlZzMiPkV4YW1wbGUgMzwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDthcnRpY2xlX2ltYWdlLCBz dnJ2YXI6SFRUUF9VU0VSX0FHRU5UJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7ZXEsIGNv bnRhaW5zJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7dXJsdmFyOnBpYywgU2FmYXJpJnF1b3Q7 CiAgICAgbG9naWM9JnF1b3Q7b3ImcXVvdDsmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZndDsK Jmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRoYW5rcyZsdDsvcCZn dDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q29tcGFyZXMgKGZv ciBlcXVhbGl0eSkgdGhlIGN1cnJlbnQgYXJ0aWNsZSBpbWFnZSBpZCB3aXRoIHRoZSB2YWx1 ZSBvZiB0aGUgdXJsIHZhcmlhYmxlIDxjb2RlPnBpYzwvY29kZT4gYW5kIGNoZWNrcyBpZiB0 aGUgdmFsdWUgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVFRQPC9zcGFuPl9VU0VSX0FH RU5UIHN0cmluZyBjb250YWlucyAmIzgyMjA7U2FmYXJpJiM4MjIxOy4gVGhpcyBleGFtcGxl IHVzZXMgdGhlICYjODIxNjtvciYjODIxNzsgbG9naWMsIGhlbmNlIGlmIDxlbT5laXRoZXI8 L2VtPiBjb25kaXRpb24gaXMgbWV0IHRoZSBhcnRpY2xlIGlzIHNob3duLCBvdGhlcndpc2Ug dGhlICYjODIxNjtub3QgdG9kYXkmIzgyMTc7IG1lc3NhZ2UgaXMgZGlzcGxheWVkLjwvcD4K Cgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3BhcmVudDpMVkwy JnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7ZXEmcXVvdDsKICAgICB2YWx1ZT0mcXVvdDtt YW1tYWwmcXVvdDsmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZndDsKJmx0O3R4cDplbHNlIC8m Z3Q7CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRoYW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6c21k X2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hlY2tzIHRoZSAybmQgc3ViLWNhdGVnb3J5 IG9mIHRoZSBnbG9iYWwgY2F0ZWdvcnkmIzgyMTc7cyB0cmVlIHRvIHNlZSBpZiBpdCBlcXVh bHMgJiM4MjIwO21hbW1hbCYjODIyMTsuIElmIGl0IGRvZXMsIHNob3cgdGhlIGFydGljbGU7 IGlmIG5vdCBzaG93IHRoZSBtZXNzYWdlLiBSZW1vdmluZyB0aGUgPGNvZGU+OkxWTDI8L2Nv ZGU+ICh3aGljaCBhbGxvd3MgeW91IHRvIGFsc28gcmVtb3ZlIHRoZSBvcGVyYXRvciBwYXJh bWV0ZXIgdG8gZm9yY2UgdGhlIGNvbXBhcmlzb24gdG8gYmUgdGhlIGRlZmF1bHQgJiM4MjIw O2NvbnRhaW5zJiM4MjIxOykgY2hlY2tzIGlmIHRoZSBjdXJyZW50IGdsb2JhbCBjYXRlZ29y eSBpcyBhIGNoaWxkIG9mICYjODIxNjttYW1tYWwmIzgyMTc7IChhdCBhbnkgbGV2ZWwpLjwv cD4KCgk8cD5DaGFuZ2UgdGhlIGZpZWxkIHRvIDxjb2RlPnBhcmVudDpDQVQxPC9jb2RlPiB0 byBzZWUgaWYgdGhlIGFydGljbGUmIzgyMTc7cyBjYXRlZ29yeTEgbWF0Y2hlcyAmIzgyMTY7 bWFtbWFsJiM4MjE3OyBhdCBhbnkgbGV2ZWwsIG9yIHVzZSA8Y29kZT5maWVsZD0mcXVvdDtw YXJlbnQ6Q0FUMTpMVkwyJnF1b3Q7PC9jb2RlPiB0byBjb21iaW5lIHRoZSBjaGVja3MuPC9w PgoKCTxoMyBpZD0iZWc1Ij5FeGFtcGxlIDU8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOnBp YywgdXJsdmFyOnBhZ2UmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtndDpOVU0sIHVuZGVm aW5lZCZxdW90OwogICAgIHZhbHVlPSZxdW90Oz9hcnRpY2xlX2ltYWdlLCZxdW90OyZndDsK ICZsdDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05v dCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5UZXN0cyBpZiB0aGUgdXJsIHZhcmlhYmxlIDxjb2RlPnBpYzwvY29kZT4g aXMgc3RyaWN0bHkgbnVtZXJpY2FsbHkgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBpbiB0aGUg Y3VycmVudCBhcnRpY2xlJiM4MjE3O3MgPGNvZGU+YXJ0aWNsZV9pbWFnZTwvY29kZT4gZmll bGQgYW5kIHRoYXQgdGhlIHVybCB2YXJpYWJsZSA8Y29kZT5wYWdlPC9jb2RlPiBpcyBtaXNz aW5nIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MuIENv bXBhcmUgdGhlIG91dGNvbWUgb2YgdGhpcyB0ZXN0IHdpdGggdGhlIG90aGVyIG9wZXJhdG9y cyB1c2luZyB0aGUgZm9sbG93aW5nIHRhYmxlIHdoZW4gdGVzdGluZyB0aGUgPGNvZGU+cGFn ZTwvY29kZT4gdXJsdmFyOjwvcD4KCgk8dGFibGU+CgkJPHRyPgoJCQk8dGg+PHNwYW4gY2xh c3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9zcGFuPiA8L3RoPgoJ CQk8dGg+ZGVmaW5lZCA8L3RoPgoJCQk8dGg+dW5kZWZpbmVkIDwvdGg+CgkJCTx0aD5pc3Vz ZWQgPC90aD4KCQkJPHRoPmlzZW1wdHkgPC90aD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBp bmRleC5waHA/cGFnIDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNs YXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xh c3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4K CQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9z cGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xh c3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJ PHRkPiBpbmRleC5waHA/cGFnZT0gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+ PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxz cGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFu PiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+ RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48 c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJPC90cj4KCQk8 dHI+CgkJCTx0ZD4gaW5kZXgucGhwP3BhZ2U9NCA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNz PSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJ CTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bh bj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNz PSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0i Y2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8 L3RyPgoJPC90YWJsZT4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2PC9oMz4KCgk8cD5QdXQg dGhpcyBpbnNpZGUgeW91ciA8Y29kZT5wbGFpbmxpbmtzPC9jb2RlPiBmb3JtIGFuZCBleGVj dXRlIGEgPGNvZGU+Jmx0O3R4cDpsaW5rbGlzdCAvJmd0OzwvY29kZT4gZnJvbSBhbiBhcnRp Y2xlIHBhZ2UvZm9ybTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtpZCwgaWQmcXVvdDsKICAgICBvcGVy YXRvcj0mcXVvdDtnZTpOVU0sIGxlOk5VTSZxdW90OwogICAgIHZhbHVlPSZxdW90O3VybHZh cjptaW4sIHVybHZhcjptYXgmcXVvdDsmZ3Q7CiAgJmx0O3R4cDpsaW5rZGVzY3RpdGxlIC8m Z3Q7Jmx0O2JyIC8mZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxw PlRoYXQgd2lsbCBsaXN0IG9ubHkgdGhlIGxpbmtzIHRoYXQgaGF2ZSBJRHMgYmV0d2VlbiB0 aGUgPGNvZGU+bWluPC9jb2RlPiBhbmQgPGNvZGU+bWF4PC9jb2RlPiB2YXJpYWJsZXMgc3Bl Y2lmaWVkIG9uIHRoZSBhZGRyZXNzIGJhci48L3A+CgoJPGgzIGlkPSJlZzciPkV4YW1wbGUg NzwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9pZiBmaWVsZD0mcXVvdDt1cmx2YXI6cHJvZHVjdF9jb2RlJnF1b3Q7CiAgICAgb3Bl cmF0b3I9JnF1b3Q7aXNhbG51bSZxdW90OyZndDsKICAmbHQ7dHhwOm91dHB1dF9mb3JtIGZv cm09JnF1b3Q7c2hvd19wcm9kdWN0JnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0Owog Jmx0O3AmZ3Q7SW52YWxpZCBwcm9kdWN0IGNvZGUmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9p ZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRlc3RzIHRvIHNlZSBpZiB0aGUgcHJvZHVjdF9j b2RlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIGlzIGFscGhhbnVt ZXJpYyBhbmQgZGlzcGxheXMgYSBmb3JtIGlmIHNvLjwvcD4KCgk8aDIgY2xhc3M9ImNoYW5n ZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxpPjMwIERlYyAwNyB8IDxhIGhyZWY9 Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2lmX3YwLjEudHh0Ij52MC4x PC9hPiB8IEluaXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjMwIERlYyAwNyB8IDxhIGhyZWY9 Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2lmX3YwLjIudHh0Ij52MC4y PC9hPiB8IEFkZGVkIHBhcmVudCBjYXRlZ29yeSBjaGVja2luZyAodGhhbmtzIHRoZV9naG9z dCk8L2xpPgoJCTxsaT4wMiBKYW4gMDggfCA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5j b20vZG93bmxvYWRzL3NtZF9pZl92MC4zLnR4dCI+djAuMzwvYT4gfCBBZGRlZCBkZWZpbmVk L3VuZGVmaW5lZCBhbmQgc3RyaWN0IG51bWVyaWMgY29tcGFyaXNvbnM8L2xpPgoJCTxsaT4w NiBKYW4gMDggfCA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3Nt ZF9pZl92MC40LnR4dCI+djAuNDwvYT4gfCBBZGRlZCA8Y29kZT4/PC9jb2RlPiBub3RhdGlv biB0byBhbGxvdyB0aGUgdmFsdWUgdG8gcmVhZCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiBmaWVsZHM7IGJldHRlciBxdW90ZSBzdXBwb3J0IChib3RoIHRoYW5rcyBOZWlsQSk8 L2xpPgoJCTxsaT4wNiBKYW4gMDggfCA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20v ZG93bmxvYWRzL3NtZF9pZl92MC40MS50eHQiPnYwLjQxPC9hPiB8IEZpeGVkIGxvd2VyIGNh c2UgZmllbGQgbmFtZXMgYW5kIHVuZGVmaW5lZCBpbmRleCBlcnJvciAodGhhbmtzIHBldGVy aik8L2xpPgoJCTxsaT4xNCBKYW4gMDggfCA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5j b20vZG93bmxvYWRzL3NtZF9pZl92MC41LnR4dCI+djAuNTwvYT4gfCBBZGRlZCBjYXNlX3Nl bnNpdGl2ZSBvcHRpb247IG1hZGUgJiM4MjE2O2NvbnRhaW5zJiM4MjE3OyB0aGUgZGVmYXVs dCBmb3IgJiM4MjE2O3BhcmVudCYjODIxNzsgdGVzdHM7IGltcHJvdmVkIGhlbHAgKGFsbCB0 aGFua3MgdGhlX2dob3N0KTsgYWRkZWQgZGVsaW0gb3B0aW9uczwvbGk+CgkJPGxpPjE1IEph biAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2lm X3YwLjUxLnR4dCI+djAuNTE8L2E+IHwgRml4ZWQgZGVmaW5lZC91bmRlZmluZWQgc3ludGF4 IGVycm9yOyB0aWdodGVuZWQgaXN1c2VkL2lzZW1wdHkgdG8gZGlzdGluZ3Vpc2ggdGhlbSBm cm9tIGRlZmluZWQvdW5kZWZpbmVkPC9saT4KCQk8bGk+MjUgTWF5IDA4IHwgPGEgaHJlZj0i aHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfaWZfdjAuNi50eHQiPnYwLjY8 L2E+IHwgRml4ZWQgJiM4MjE2O3VuZGVmaW5lZCBpbmRleCYjODIxNzsgZXJyb3JzICh0aGFu a3MgcmVkYm90IGFuZCB0aGVfZ2hvc3QpIDsgYWRkZWQgbW9yZSBwcmV0ZXh0IHZhcmlhYmxl cyA7IGFkZGVkIG1vcmUgPGNvZGU+aXM8L2NvZGU+IGNoZWNrcyAoYW5kIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+Tk9TUEFDRTwvc3Bhbj4gbW9kaWZpZXIpIDsgYWxsb3dlZCBmaWxlIGFu ZCBsaW5rIHRlc3RzIChpbmNsdWRpbmcgcGFyZW50IGNhdGVnb3JpZXMpPC9saT4KCQk8bGk+ MjYgTWF5IDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9z bWRfaWZfdjAuNjEudHh0Ij52MC42MTwvYT4gfCBGaXggc3R1cGlkIG92ZXJzaWdodCBpbiBm aWVsZCBuYW1lIGdlbmVyYXRpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IG5hbWVzIGluc3RlYWQg b2YgZm9yY2luZyAkdGhpc2FydGljbGUgKHRoYW5rcyB0byBKb2FuYSBDYXJ2YWxobyBmb3Ig bGVhZGluZyBtZSB0byB0aGlzKTwvbGk+Cgk8L3VsPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAt LS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNz bWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuMyA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2Vp Z2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25v c3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9j ayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dy b3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAy MHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlz aXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpo b3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlv bjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9t OjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEs IHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVs cCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAg MDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21k X2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNl cmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWws IHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3Rl eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQt d2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3Jk ZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6MTAwJTsgdGV4 dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3Nt ZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KPC9z dHlsZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBDU1MgLS0tIC0tPgoiO3M6MzoiY3NzIjtzOjEy NzM6IjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEu MyA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMw JSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6 ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsg Ym9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlz cGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3Nt ZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0 LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRk aW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZl IHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTog MnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNv bG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsg dGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFw eCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3 cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5Mzsg Zm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4 OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7fQojc21kX2hl bHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFj aW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7 IH0KI3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxw IC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNz bWRfaGVscCB0YWJsZSB7d2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmct Ym90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNv bGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KPC9zdHlsZT4iO3M6NDoiY29kZSI7czo3OTY0 OiJmdW5jdGlvbiBzbWRfaWYoJGF0dHMsJHRoaW5nKSB7CglnbG9iYWwgJHRoaXNhcnRpY2xl LCAkcHJldGV4dCwgJHRoaXNmaWxlLCAkdGhpc2xpbms7CgoJZXh0cmFjdChsQXR0cyhhcnJh eSgKCQknZmllbGQnID0+ICcnLAoJCSdvcGVyYXRvcicgPT4gJycsCgkJJ3ZhbHVlJyA9PiAn JywKCQknbG9naWMnID0+ICdhbmQnLAoJCSdjYXNlX3NlbnNpdGl2ZScgPT4gMCwKCQkncGFy YW1fZGVsaW0nID0+ICcsJywKCQknbW9kX2RlbGltJyA9PiAnOicsCgkJJ2RlYnVnJyA9PiAn MCcsCgkpLCAkYXR0cykpOwoKCS8vIFNwZWNpYWwgZmllbGQgbmFtZXMgdGhhdCByZWZlciB0 byAkcHJldGV4dCBvciBlbHNld2hlcmUgLSBldmVyeXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0 bwoJLy8gZXhpc3QgaW4gJHRoaXNhcnRpY2xlIHNvIGN1c3RvbSBmaWVsZHMgY2FuIGJlIHVz ZWQKCSRhbGxQdHh0ID0gYXJyYXkoCgkJImlkIiA9PiAnJHByZXRleHRbImlkIl0nLAoJCSJz ZWN0aW9uIiA9PiAnJHByZXRleHRbInMiXScsCgkJImNhdGVnb3J5IiA9PiAnJHByZXRleHRb ImMiXScsCgkJInF1ZXJ5IiA9PiAnJHByZXRleHRbInEiXScsCgkJInBnIiA9PiAnJHByZXRl eHRbInBnIl0nLAoJCSJtb250aCIgPT4gJyRwcmV0ZXh0WyJtb250aCJdJywKCQkiYXV0aG9y IiA9PiAnJHByZXRleHRbImF1dGhvciJdJywKCQkic3RhdHVzIiA9PiAnJHByZXRleHRbInN0 YXR1cyJdJywKCQkicGFnZSIgPT4gJyRwcmV0ZXh0WyJwYWdlIl0nLAoJCSJuZXh0X2lkIiA9 PiAnJHByZXRleHRbIm5leHRfaWQiXScsCgkJIm5leHRfdGl0bGUiID0+ICckcHJldGV4dFsi bmV4dF90aXRsZSJdJywKCQkibmV4dF91dGl0bGUiID0+ICckcHJldGV4dFsibmV4dF91dGl0 bGUiXScsCgkJInByZXZfaWQiID0+ICckcHJldGV4dFsicHJldl9pZCJdJywKCQkicHJldl90 aXRsZSIgPT4gJyRwcmV0ZXh0WyJwcmV2X3RpdGxlIl0nLAoJCSJwcmV2X3V0aXRsZSIgPT4g JyRwcmV0ZXh0WyJwcmV2X3V0aXRsZSJdJywKCQkicGVybWxpbmtfbW9kZSIgPT4gJyRwcmV0 ZXh0WyJwZXJtbGlua19tb2RlIl0nLAoJKTsKCS8vIEVhY2ggZW50cnkgaGFzIHRoZSBvcGVy YXRpb24gdG8gYmUgZXZhbCgpZCBsYXRlciBhbmQgYSBsaXN0IG9mIGRpc2FsbG93ZWQgZmll bGRzCgkkYWxsT3BzID0gYXJyYXkoCgkJJ2VxJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkg JiYgRklFTEQgPT09IFZBTFVFJywgJycpLAoJCSdub3QnID0+IGFycmF5KCdpc3NldChWQVJO QU1FKSAmJiBGSUVMRCAhPT0gVkFMVUUnLCAnJyksCgkJJ2d0JyA9PiBhcnJheSgnaXNzZXQo VkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA+IENBU1QgVkFMVUUnLCAnJyksCgkJJ2dlJyA9PiBh cnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA+PSBDQVNUIFZBTFVFJywgJycp LAoJCSdsdCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPCBDQVNU IFZBTFVFJywgJycpLAoJCSdsZScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1Qg RklFTEQgPD0gQ0FTVCBWQUxVRScsICcnKSwKCQknYmVnaW5zJyA9PiBhcnJheSgnaXNzZXQo VkFSTkFNRSkgJiYgc3RycG9zKEZJRUxELCBWQUxVRSkgPT09IDAnLCAnJyksCgkJJ2NvbnRh aW5zJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgc3RycG9zKEZJRUxELCBWQUxVRSkg IT09IGZhbHNlJywgJycpLAoJCSdlbmRzJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYg c3Vic3RyKEZJRUxELCBzdHJsZW4oRklFTEQpIC0gc3RybGVuKFZBTFVFKSkgPT09IFZBTFVF JywgJycpLAoJCSdkZWZpbmVkJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSknLCAncGFyZW50 JyksCgkJJ3VuZGVmaW5lZCcgPT4gYXJyYXkoJyFpc3NldChWQVJOQU1FKScsICdwYXJlbnQn KSwKCQknaXNlbXB0eScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIEZJRUxEID09ICIi JywgJycpLAoJCSdpc3VzZWQnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBGSUVMRCAh PSAiIicsICcnKSwKCQknaXNudW0nID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBjdHlw ZV9kaWdpdCgoc3RyaW5nKUZJRUxEKScsICcnKSwKCQknaXNhbHBoYScgPT4gYXJyYXkoJ2lz c2V0KFZBUk5BTUUpICYmIGN0eXBlX2FscGhhKChzdHJpbmcpRklFTEQpJywgJycpLAoJCSdp c2FsbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxudW0oKHN0cmlu ZylGSUVMRCknLCAnJyksCgkJJ2lzbG93ZXInID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAm JiBjdHlwZV9sb3dlcigoc3RyaW5nKUZJRUxEKScsICcnKSwKCQknaXN1cHBlcicgPT4gYXJy YXkoJ2lzc2V0KFZBUk5BTUUpICYmIGN0eXBlX3VwcGVyKChzdHJpbmcpRklFTEQpJywgJycp LAoJCSdpc3B1bmN0JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfcHVuY3Qo KHN0cmluZylGSUVMRCknLCAnJyksCgkJJ2lzc3BhY2UnID0+IGFycmF5KCdpc3NldChWQVJO QU1FKSAmJiBjdHlwZV9zcGFjZSgoc3RyaW5nKUZJRUxEKScsICcnKSwKCSk7CgoJJG51bWVy aWNPcHMgPSAiZ3QsIGdlLCBsdCwgbGUiOwoJJGNhc2VPcHMgPSAiaXNsb3dlciwgaXN1cHBl ciI7Cgkkc3BhY2VPcHMgPSAiaXNudW0sIGlzYWxwaGEsIGlzYWxudW0sIGlzbG93ZXIsIGlz dXBwZXIsIGlzcHVuY3QiOwoJJGZpZWxkcyA9IGRvX2xpc3QoJGZpZWxkLCAkcGFyYW1fZGVs aW0pOwoJJG9wcyA9IGRvX2xpc3QoJG9wZXJhdG9yLCAkcGFyYW1fZGVsaW0pOwoJJG51bU9w cyA9IGNvdW50KCRvcHMpOwoJJHZhbHMgPSBkb19saXN0KCR2YWx1ZSwgJHBhcmFtX2RlbGlt KTsKCSRudW1WYWxzID0gY291bnQoJHZhbHMpOwoJJHBhcmVudENhdHMgPSAnJzsgLy8gUGxh Y2Vob2xkZXIgZm9yIHRoZSBjb25jYXRlbmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBsZWFmIG5v ZGVzCgkkdHlwZSA9ICgkdGhpc2ZpbGUpID8gImZpbGUiIDogKCgkdGhpc2xpbmspID8gImxp bmsiIDogImFydGljbGUiKTsKCSRvdXQgPSBhcnJheSgpOwoKCWZvciAoJGlkeCA9IDA7ICRp ZHggPCBjb3VudCgkZmllbGRzKTsgJGlkeCsrKSB7CgkJJGZsZCA9ICRmaWVsZHNbJGlkeF07 CgkJJGZsZFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkZmxkKTsKCQkkdmFsID0gKCRp ZHggPCAkbnVtVmFscykgPyAkdmFsc1skaWR4XSA6ICcnOwoJCSR2YWxQYXJ0cyA9IGV4cGxv ZGUoJG1vZF9kZWxpbSwgJHZhbCk7CgkJJG9wID0gKCRpZHggPCAkbnVtT3BzICYmICRvcHNb JGlkeF0gIT0gJycpID8gJG9wc1skaWR4XSA6ICgoJGZsZFBhcnRzWzBdPT0icGFyZW50Iikg PyAiY29udGFpbnMiIDogImVxIik7CgkJJG9wUGFydHMgPSBleHBsb2RlKCRtb2RfZGVsaW0s ICRvcCk7CgkJJG9wID0gJHN0b3JlZE9wID0gKGFycmF5X2tleV9leGlzdHMoJG9wUGFydHNb MF0sICRhbGxPcHMpKSA/ICRvcFBhcnRzWzBdIDogImVxIjsKCQkkY2FzdCA9ICgoY291bnQo JG9wUGFydHMpID09IDIpICYmICgkb3BQYXJ0c1sxXSA9PT0gIk5VTSIpICYmIChpbl9saXN0 KCRvcCwgJG51bWVyaWNPcHMpKSkgPyAnKGludCknIDogJyc7CgkJJGtpbGxTcGFjZXMgPSAo KGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAoJG9wUGFydHNbMV0gPT09ICJOT1NQQUNFIikg JiYgKGluX2xpc3QoJG9wLCAkc3BhY2VPcHMpKSkgPyB0cnVlIDogZmFsc2U7CgkJJGNhc2Vf c2Vuc2l0aXZlID0gKGluX2xpc3QoJG9wLCAkY2FzZU9wcykpID8gMSA6ICRjYXNlX3NlbnNp dGl2ZTsKCQlpZiAoJGRlYnVnKSB7CgkJCWVjaG8gJ1RFU1QgJy4oJGlkeCsxKS5uOwoJCQlk bXAoJGZsZFBhcnRzLCAkb3BQYXJ0cywgJHZhbFBhcnRzKTsKCQl9CgkJLy8gR2V0IHRoZSBv cGVyYXRvciByZXBsYWNlbWVudCBjb2RlCgkJJGV4Y2x1ZGUgPSBkb19saXN0KCRhbGxPcHNb JG9wXVsxXSk7CgkJJG9wID0gJGFsbE9wc1skb3BdWzBdOwoKCQkvLyBBcyBsb25nIGFzIHRo ZSBjdXJyZW50IG9wZXJhdG9yIGFsbG93cyB0aGlzIGZpZWxkLi4uCgkJaWYgKCFpbl9hcnJh eSgkZmxkUGFydHNbMF0sICRleGNsdWRlKSkgewoJCQkvLyBNYWtlIHVwIHRoZSB0ZXN0IGZp ZWxkIHZhcmlhYmxlCgkJCWlmIChpc3NldCgkdGhpc2ZpbGVbJGZsZFBhcnRzWzBdXSkpIHsK CQkJCSRmbGQgPSAnJHRoaXNmaWxlWyInLiRmbGRQYXJ0c1swXS4nIl0nOwoJCQl9IGVsc2Ug aWYgKGlzc2V0KCR0aGlzbGlua1skZmxkUGFydHNbMF1dKSkgewoJCQkJJGZsZCA9ICckdGhp c2xpbmtbIicuJGZsZFBhcnRzWzBdLiciXSc7CgkJCX0gZWxzZSBpZiAoYXJyYXlfa2V5X2V4 aXN0cygkZmxkUGFydHNbMF0sICRhbGxQdHh0KSkgewoJCQkJJGZsZCA9ICRhbGxQdHh0WyRm bGRQYXJ0c1swXV07CgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJwYXJlbnQiKSB7 CgkJCQkkbGV2ZWwgPSAnJzsKCQkJCWZvcmVhY2ggKCRmbGRQYXJ0cyBhcyAkcGFydCkgewoJ CQkJCWlmICgkcGFydCA9PSAicGFyZW50IikgewoJCQkJCQkkdGhlQ2F0ID0gKCR0aGlzZmls ZSkgPyAkdGhpc2ZpbGVbJ2NhdGVnb3J5J10gOiAoKCR0aGlzbGluaykgPyAkdGhpc2xpbmtb J2NhdGVnb3J5J10gOiAkcHJldGV4dFsnYyddKTsKCQkJCQl9IGVsc2UgaWYgKHN0cnBvcygk cGFydCwgIkNBVCIpID09PSAwKSB7CgkJCQkJCSR0aGVDYXQgPSAkdGhpc2FydGljbGVbImNh dGVnb3J5Ii5zdWJzdHIoJHBhcnQsIDMpXTsKCQkJCQl9IGVsc2UgaWYgKHN0cnBvcygkcGFy dCwgIkxWTCIpID09PSAwKSB7CgkJCQkJCSRsZXZlbCA9IHN1YnN0cigkcGFydCwgMyk7CgkJ CQkJfQoJCQkJfQoKCQkJCSR0cmVlID0gZ2V0VHJlZVBhdGgoZG9TbGFzaCgkdGhlQ2F0KSwg JHR5cGUpOwoJCQkJaWYgKCRkZWJ1ZykgewoJCQkJCWVjaG8gIkNBVEVHT1JZIFRSRUU6IjsK CQkJCQlkbXAoJHRyZWUpOwoJCQkJfQoJCQkJJGl0ZW1zID0gYXJyYXkoKTsKCQkJCWZvcmVh Y2ggKCR0cmVlIGFzICRsZWFmKSB7CgkJCQkJaWYgKCRsZWFmWyduYW1lJ10gPT0gInJvb3Qi IHx8ICRsZWFmWyduYW1lJ10gPT0gJHRoZUNhdCkgewoJCQkJCQljb250aW51ZTsKCQkJCQl9 IGVsc2UgaWYgKCRsZXZlbCA9PSAnJyB8fCAkbGV2ZWwgPT0gJGxlYWZbJ2xldmVsJ10pIHsK CQkJCQkJJGl0ZW1zW10gPSAkbGVhZlsnbmFtZSddOwoJCQkJCX0KCQkJCX0KCQkJCSRwYXJl bnRDYXRzID0gaW1wbG9kZSgiICIsICRpdGVtcyk7CgkJCQkkZmxkID0gJyRwYXJlbnRDYXRz JzsKCQkJfSBlbHNlIGlmICgkZmxkUGFydHNbMF0gPT0gInVybHZhciIpIHsKCQkJCWlmIChj b3VudCgkZmxkUGFydHMpID09IDIpIHsKCQkJCQkkZmxkID0gJyRfR0VUWyInLiRmbGRQYXJ0 c1sxXS4nIl0nOwoJCQkJfQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAic3ZydmFy IikgewoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPT0gMikgewoJCQkJCSRmbGQgPSAnJF9T RVJWRVJbIicuJGZsZFBhcnRzWzFdLiciXSc7CgkJCQl9CgkJCX0gZWxzZSBpZiAoaXNzZXQo JHRoaXNhcnRpY2xlWyRmbGRQYXJ0c1swXV0pKSB7CgkJCQkkZmxkID0gJyR0aGlzYXJ0aWNs ZVsiJy5zdHJ0b2xvd2VyKCRmbGRQYXJ0c1swXSkuJyJdJzsKCQkJfSBlbHNlIHsKCQkJCSRz bWRfaWZfdmFyID0gJGZsZFBhcnRzWzBdOwoJCQkJJGZsZCA9ICckc21kX2lmX3Zhcic7CgkJ CX0KCgkJCS8vIFRha2UgYSBjb3B5IG9mICRmbGQgdG8gdXNlIGluIGFueSBpc3NldCgpIHJl cXVlc3RzCgkJCSRmbGRDbGVhbiA9ICRmbGQ7CgkJCWlmICgka2lsbFNwYWNlcykgewoJCQkJ JGZsZCA9ICdwcmVnX3JlcGxhY2UoIi9ccysvIiwiIiwnLiRmbGQuJyknOwoJCQl9CgoJCQkv LyBGaW5kIHRoZSByZWFsIHZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdCAobWF5IGJlIGFub3Ro ZXIgZmllbGQpCgkJCWlmICgkdmFsUGFydHNbMF0gPT0gInVybHZhciIpIHsKCQkJCWlmIChj b3VudCgkdmFsUGFydHMpID09IDIpIHsKCQkJCQkkdmFsID0gKGlzc2V0KCRfR0VUWyR2YWxQ YXJ0c1sxXV0pICYmICRfR0VUWyR2YWxQYXJ0c1sxXV0gIT0gIiIpID8gJyRfR0VUWyInLiR2 YWxQYXJ0c1sxXS4nIl0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2YWxQ YXJ0c1sxXSkpOwoJCQkJfQoJCQl9IGVsc2UgaWYgKCR2YWxQYXJ0c1swXSA9PSAic3ZydmFy IikgewoJCQkJaWYgKGNvdW50KCR2YWxQYXJ0cykgPT0gMikgewoJCQkJCSR2YWwgPSAoaXNz ZXQoJF9TRVJWRVJbJHZhbFBhcnRzWzFdXSkgJiYgJF9TRVJWRVJbJHZhbFBhcnRzWzFdXSAh PSAiIikgPyAnJF9TRVJWRVJbIicuJHZhbFBhcnRzWzFdLiciXScgOiBkb1F1b3RlKHN0cl9y ZXBsYWNlKCciJywgJ1wiJywgJHZhbFBhcnRzWzFdKSk7CgkJCQl9CgkJCX0gZWxzZSBpZiAo c3RycG9zKCR2YWxQYXJ0c1swXSwgIj8iKSA9PT0gMCkgewoJCQkJJHZhbFBhcnRzWzBdID0g c3Vic3RyKHN0cnRvbG93ZXIoJHZhbFBhcnRzWzBdKSwgMSk7CgkJCQlpZiAoaXNzZXQoJHRo aXNmaWxlWyR2YWxQYXJ0c1swXV0pKSB7CgkJCQkJJHZhbCA9ICckdGhpc2ZpbGVbIicuJHZh bFBhcnRzWzBdLiciXSc7CgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzbGlua1skdmFsUGFy dHNbMF1dKSkgewoJCQkJCSR2YWwgPSAnJHRoaXNsaW5rWyInLiR2YWxQYXJ0c1swXS4nIl0n OwoJCQkJfSBlbHNlIGlmIChhcnJheV9rZXlfZXhpc3RzKCR2YWxQYXJ0c1swXSwgJGFsbFB0 eHQpKSB7CgkJCQkJJHZhbCA9ICRhbGxQdHh0WyR2YWxQYXJ0c1swXV07CgkJCQl9IGVsc2Ug aWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskdmFsUGFydHNbMF1dKSkgewoJCQkJCSR2YWwgPSAn JHRoaXNhcnRpY2xlWyInLiR2YWxQYXJ0c1swXS4nIl0nOwoJCQkJfSBlbHNlIHsKCQkJCQkk dmFsID0gZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2YWxQYXJ0c1swXSkpOwoJ CQkJfQoJCQl9IGVsc2UgewoJCQkJJHZhbCA9IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAn XCInLCAkdmFsUGFydHNbMF0pKTsKCQkJfQoKCQkJLy8gUmVwbGFjZSB0aGUgc3RyaW5nIHBh cnRzLi4uCgkJCSRjbWQgPSBzdHJfcmVwbGFjZSgiQ0FTVCIsICRjYXN0LCAkb3ApOwoJCQkk Y21kID0gc3RyX3JlcGxhY2UoIkZJRUxEIiwgKCgkY2FzZV9zZW5zaXRpdmUpID8gJGZsZCA6 ICdzdHJ0b2xvd2VyKCcuJGZsZC4nKScpLCAkY21kKTsKCQkJJGNtZCA9IHN0cl9yZXBsYWNl KCJWQVJOQU1FIiwgJGZsZENsZWFuLCAkY21kKTsKCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJW QUxVRSIsICgoJGNhc2Vfc2Vuc2l0aXZlKSA/ICdWQUxVRScgOiAnc3RydG9sb3dlcihWQUxV RSknKSwgJGNtZCk7CgkJCSRjbWQgPSAiXCRvdXRbXSA9ICgiLnN0cl9yZXBsYWNlKCJWQUxV RSIsICgoJHZhbD09PSInJyIgJiYgc3RycG9zKCRvcCwgInN0cnBvcyIpICE9PSBmYWxzZSkg PyAiJyAnIiA6ICR2YWwpLCAkY21kKS4iKSA/ICd0cnVlJyA6ICdmYWxzZSc7IjsKCQkJaWYg KCRkZWJ1ZykgewoJCQkJZG1wKCRjbWQpOwoJCQl9CgkJCS8vIC4uLiBhbmQgZXZhbHVhdGUg dGhlIGV4cHJlc3Npb24KCQkJZXZhbCgkY21kKTsKCQl9Cgl9CglpZiAoJGRlYnVnKSB7CgkJ ZWNobyAiUkVTVUxUOiI7CgkJZG1wKCRvdXQpOwoJfQoJaWYgKCRkZWJ1ZyA9PSAyKSB7CgkJ ZWNobyAiUFJFVEVYVDoiOwoJCWRtcCgkcHJldGV4dCk7CgkJZWNobyAiVEhJUyBBUlRJQ0xF OiI7CgkJZG1wKCR0aGlzYXJ0aWNsZSk7CgkJZWNobyAiVEhJUyBGSUxFOiI7CgkJZG1wKCR0 aGlzZmlsZSk7CgkJZWNobyAiVEhJUyBMSU5LOiI7CgkJZG1wKCR0aGlzbGluayk7Cgl9Cgkv LyBDaGVjayBsb2dpYwoJJHJlc3VsdCA9IHRydWU7CglpZiAoc3RydG9sb3dlcigkbG9naWMp ID09ICJhbmQiICYmIGluX2FycmF5KCJmYWxzZSIsICRvdXQpKSB7CgkJJHJlc3VsdCA9IGZh bHNlOwoJfQoJaWYgKHN0cnRvbG93ZXIoJGxvZ2ljKSA9PSAib3IiICYmICFpbl9hcnJheSgi dHJ1ZSIsICRvdXQpKSB7CgkJJHJlc3VsdCA9IGZhbHNlOwoJfQoKCXJldHVybiBwYXJzZShF dmFsRWxzZSgkdGhpbmcsICRyZXN1bHQpKTsKfSI7czozOiJtZDUiO3M6MzI6IjM4YTlkOTg2 MjBkNWM5ZDVkODBkMzI4NGY5NjcyZTZkIjt9