# Name: rah_comments v0.4 # Type: Client side plugin # Paginated comments # Author: Jukka Svahn # URL: http://rahforum.biz # 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: # ..................................................................... YToxMDp7czo2OiJhdXRob3IiO3M6MTE6Ikp1a2thIFN2YWhuIjtzOjEwOiJhdXRob3JfdXJp IjtzOjE5OiJodHRwOi8vcmFoZm9ydW0uYml6IjtzOjExOiJkZXNjcmlwdGlvbiI7czoxODoi UGFnaW5hdGVkIGNvbW1lbnRzIjtzOjQ6ImhlbHAiO3M6OTQ5NDoiCTxoMT5yYWhfY29tbWVu dHM8L2gxPgoKCTxwPkFsbG93cyB5b3UgdG8gcGFnaW5hdGUgY29tbWVudHMgbGlrZSBhcnRp Y2xlcy4gSW4gb3RoZXIgd29yZHMsIGl0IG91dHB1dHMgcGFnaW5hdGlvbiBhbmQgcGcgbnVt YmVycyBiZWxvdyBjb21tZW50cy4gWW91IGNhbiBzdHlsZSBwYWdpbmF0aW9uIHdpdGggdmFy aW91cyBhdHRyaWJ1dGVzIGFuZCBvZmNvcnNlIHdpdGggYSA8YWJiciB0aXRsZT0iQ2FzY2Fk aW5nIFN0eWxlIFNoZWV0cyI+PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj48L2FiYnI+ LXN0eWxpbmcgbWFnaWMuPC9wPgoKCTx1bD4KCQk8bGk+VmVyc2lvbjogMC40PC9saT4KCQk8 bGk+VXBkYXRlZDogMjAwOC8wOS8xNCA2OjAwIEFNIDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8 L3NwYW4+KzI8L2xpPgoJPC91bD4KCgk8aDM+VGFibGUgb2YgQ29udGVudHM8L2gzPgoKCTx1 bD4KCQk8bGk+PGEgaHJlZj0iI2ludHJvLWFuZC1kZXNjcmlwdGlvbiI+SW50cm8gYW5kIGRl c2NyaXB0aW9uPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNsaXN0LW9mLWZlYXR1cmVzIj5M aXN0IG9mIGZlYXR1cmVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNyZXF1aXJlbWVudHMi PlJlcXVpcmVtZW50czwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjaW5zdGFsbGF0aW9uLWFu ZC11c2FnZSI+SW5zdGFsbGF0aW9uIGFuZCB1c2FnZTwvYT48L2xpPgoJCTxsaT48YSBocmVm PSIjYXR0cmlidXRlcyI+QXR0cmlidXRlczwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3Jh aF9jb21tZW50cyI+cmFoX2NvbW1lbnRzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNyYWhf cmVjZW50X2NvbW1lbnRzIj5yYWhfcmVjZW50X2NvbW1lbnRzPC9hPjwvbGk+Cgk8L3VsPjwv bGk+CgkJPGxpPjxhIGhyZWY9IiNleGFtcGxlIj5FeGFtcGxlPC9hPjwvbGk+CgkJPGxpPjxh IGhyZWY9IiNjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvYT48L2xpPgoJPC91bD4KCgk8aDMgaWQ9 ImludHJvLWFuZC1kZXNjcmlwdGlvbiI+SW50cm8gYW5kIGRlc2NyaXB0aW9uPC9oMz4KCgk8 cD5UaGUgcGx1Z2luLCByYWhfY29tbWVudHMsIHdvcmtzIGV4YXRseSBzYW1lIHdheSBsaWtl IHRoZSBpbiBidWlsZCBjb21tZW50IGxpc3RpbmcsIHR4cDpjb21tZW50cywgYnV0IHdpdGgg b25lIGFkZGl0aW9uOiBwYWdpbmF0aW9uLCBuYXZpZ2F0aW9uIGFuZCBwYWdlbnVtYmVycy4g WWVzLCB0aGUgcGx1Z2luIGNhbiBiZSB1c2VkIHRvIHBhZ2luYXRlIGNvbW1lbnRzLiBZb3Ug Y2FuIHN0eWxlIHBhZ2luYXRpb24gd2l0aCB2YXJpb3VzIGF0dHJpYnV0ZXMgYW5kIG9mY29y c2Ugd2l0aCBhIDxhYmJyIHRpdGxlPSJDYXNjYWRpbmcgU3R5bGUgU2hlZXRzIj48c3BhbiBj bGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjwvYWJicj4tc3R5bGluZyBtYWdpYy4gV29ya3Mgb25s eSBpbiBpbmRpdmlkdWFsIGFydGljbGUgcGFnZXMsIG5vdCBpbiBhIHNlY3Rpb24sIG5vciBh biBhcnRpY2xlIGxpc3QgcGFnZXMuPC9wPgoKCTxoMyBpZD0ibGlzdC1vZi1mZWF0dXJlcyI+ TGlzdCBvZiBmZWF0dXJlczwvaDM+CgoJPHVsPgoJCTxsaT5QYWdpbmF0ZWQgY29tbWVudCBs aXN0aW5nIGZvciBpbmRpdmlkdWFsIGFydGljbGVzPC9saT4KCQk8bGk+UGFnZW51bWJlcnMg YW5kIHByZXYgJmFtcDsgbmV4dCBsaW5rczwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0icmVxdWly ZW1lbnRzIj5SZXF1aXJlbWVudHM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gNC4wLjYrPC9saT4KCTwvdWw+CgoJPGgzIGlkPSJpbnN0YWxsYXRp b24tYW5kLXVzYWdlIj5JbnN0YWxsYXRpb24gYW5kIHVzYWdlPC9oMz4KCgk8cD5UaGUgYmFz aWMgbWV0aG9kIHN0YW5kczogcGFzdGUgcGx1Z2luIGNvZGUgdG8gdGhlIHBsdWdpbiBpbnN0 YWxsIHRleHRhcmVhIGFuZCBydW4gdGhlIGF1dG9tYXRpYyBzZXR1cC4gQWN0aXZhdGUgdGhl IHBsdWdpbiwgYW5kIHlvdSBhcmUgcmVhZHkgdG8gdXNlIHRoZSBuZXcgdGFnLCA8Y29kZT4m bHQ7dHhwOnJhaF9jb21tZW50cyAvJmd0OzwvY29kZT4gbGlrZSBvdGhlcnMuPC9wPgoKCTxw PkFmdGVyIHRoZSBpbnN0YWxsYXRpb24sIHRoZSB0YWcsIDxjb2RlPiZsdDt0eHA6cmFoX2Nv bW1lbnRzIC8mZ3Q7PC9jb2RlPiwgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgcmVn dWxhciBjb3JlIGNvbW1lbnRzIHRhZywgPGNvZGU+Jmx0O3R4cDpjb21tZW50cyAvJmd0Ozwv Y29kZT4gJiM4MjExOyBqdXN0IHJlcGxhY2UgaXQgd2l0aCA8Y29kZT4mbHQ7dHhwOnJhaF9j b21tZW50cyAvJmd0OzwvY29kZT4gd2l0aCB5b3VyIGRlc2lyZWQgYXR0cmlidXRlcywgc3R5 bGVzIGFuZCBzbyBvbi48L3A+CgoJPGgzIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9o Mz4KCgk8aDQgaWQ9InJhaF9jb21tZW50cyI+cmFoX2NvbW1lbnRzPC9oND4KCgk8cD5UaGUg dGFnIGlzIDxjb2RlPiZsdDt0eHA6cmFoX2NvbW1lbnRzIC8mZ3Q7PC9jb2RlPiBhbmQgYXR0 cmlidXRlcyBmb3IgaXQgZm9sbG93OjwvcD4KCgk8aDU+Tm9ybWFsIGNvbW1lbnQgcmVsYXRl ZCBhdHRyaWJ1dGVzPC9oNT4KCgk8cD48c3Ryb25nPmZvcm08L3N0cm9uZz48YnIgLz4KRm9y bSB0byBvdXRwdXQgdGhlIGNvbW1lbnRzLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5mb3JtPSZx dW90O2NvbW1lbnRzJnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtyYWhfY29t bWVudHMmcXVvdDs8L2NvZGU+LjwvcD4KCgk8cD48c3Ryb25nPnNvcnQ8L3N0cm9uZz48YnIg Lz4KSG93IHRvIHNvcnQgdGhlIHJlc3VsdGluZyBsaXN0LiBBdmFpbGFibGUgdmFsdWVzOiA8 Y29kZT5kaXNjdXNzaWQ8L2NvZGU+IChjb21tZW50IElEIyksIDxjb2RlPnBhcmVudGlkPC9j b2RlPiAoYXJ0aWNsZSBJRCMpLCA8Y29kZT5uYW1lPC9jb2RlPiwgPGNvZGU+ZW1haWw8L2Nv ZGU+LCA8Y29kZT53ZWI8L2NvZGU+LCA8Y29kZT5pcDwvY29kZT4gKElQIGFkZHJlc3MpLCA8 Y29kZT5wb3N0ZWQ8L2NvZGU+LCA8Y29kZT5tZXNzYWdlPC9jb2RlPiwgPGNvZGU+cmFuZCgp PC9jb2RlPiAocmFuZG9tKS48YnIgLz4KRGVmYXVsdDogPGNvZGU+c29ydD0mcXVvdDtwb3N0 ZWQgYXNjJnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtuYW1lIGRlc2MmcXVv dDs8L2NvZGU+LjwvcD4KCgk8cD48c3Ryb25nPndyYXB0YWc8L3N0cm9uZz48YnIgLz4KKFgp SFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMpIHRvIHdyYXAgYXJvdW5kIHRoZSBjb21tZW50 IGxpc3QuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPndyYXB0YWc9JnF1b3Q7JnF1b3Q7PC9jb2Rl PiAodW5zZXQpIEV4YW1wbGU6IDxjb2RlPiZxdW90O3VsJnF1b3Q7PC9jb2RlPi48L3A+CgoJ PHA+PHN0cm9uZz5icmVhazwvc3Ryb25nPjxiciAvPgooWClIVE1MIHRhZyAod2l0aG91dCBi cmFja2V0cykgb3Igc3RyaW5nIHVzZWQgdG8gc2VwYXJhdGUgY29tbWVudHMuPGJyIC8+CkRl ZmF1bHQ6IDxjb2RlPmJyZWFrPSZxdW90OyZxdW90OzwvY29kZT4gKHVuc2V0KSBFeGFtcGxl OiA8Y29kZT4mcXVvdDtsaSZxdW90OzwvY29kZT4uPC9wPgoKCTxwPjxzdHJvbmc+Y2xhc3M8 L3N0cm9uZz48YnIgLz4KKFgpSFRNTCBjbGFzcyBhdHRyaWJ1dGUgdG8gYmUgYXBwbGllZCB0 byB3cmFwdGFnLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5jbGFzcz0mcXVvdDsmcXVvdDs8L2Nv ZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90O2NvbW1lbnQmcXVvdDs8L2NvZGU+PC9wPgoKCTxw PjxzdHJvbmc+YnJlYWtjbGFzczwvc3Ryb25nPjxiciAvPgooWClIVE1MIGNsYXNzIGF0dHJp YnV0ZSB0byBiZSBhcHBsaWVkIHRvIGJyZWFrICh3aGVuIHZhbHVlIHN1cHBsaWVkIGlzIGEg dGFnKS48YnIgLz4KRGVmYXVsdDogPGNvZGU+YnJlYWtjbGFzcz0mcXVvdDsmcXVvdDs8L2Nv ZGU+ICh1bnNldCkgRXhhbXBsZTogPGNvZGU+JnF1b3Q7Y29tbWVudCZxdW90OzwvY29kZT4u PC9wPgoKCTxwPjxzdHJvbmc+b2Zmc2V0PC9zdHJvbmc+PGJyIC8+ClRoZSBudW1iZXIgb2Yg Y29tbWVudHMgdG8gc2tpcCBhdCB0aGUgZmlyc3QgcGFnZS4gU2hvdWxkIGFsd2F5cyBiZSB6 ZXJvICgwKS48YnIgLz4KRGVmYXVsdDogPGNvZGU+b2Zmc2V0PSZxdW90OzAmcXVvdDs8L2Nv ZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90OzUmcXVvdDs8L2NvZGU+LjwvcD4KCgk8cD48c3Ry b25nPmxpbWl0PC9zdHJvbmc+PGJyIC8+ClRoZSBudW1iZXIgb2YgY29tbWVudHMgdG8gZGlz cGxheSBwZXIgcGFnZS48YnIgLz4KRGVmYXVsdDogPGNvZGU+bGltaXQ9JnF1b3Q7MTAmcXVv dDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90OzUmcXVvdDs8L2NvZGU+LjwvcD4KCgk8 aDU+UGFnaW5hdGlvbiByZWxhdGVkIGF0dHJpYnV0ZXM8L2g1PgoKCTxwPjxzdHJvbmc+cHJl cGVuZDwvc3Ryb25nPjxiciAvPgpTaG93IHRoZSBwYWdlIGFuZCBuYXZpZ2F0aW9uIGxpbmtz IGJlZm9yZSBjb21tZW50cy48YnIgLz4KRGVmYXVsdDogPGNvZGU+cHJlcGVuZD0mcXVvdDsx JnF1b3Q7PC9jb2RlPiAoeWVzKSBFeGFtcGxlOiA8Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+ IChubykuPC9wPgoKCTxwPjxzdHJvbmc+YXBwZW5kPC9zdHJvbmc+PGJyIC8+ClNob3cgdGhl IHBhZ2UgYW5kIG5hdmlnYXRpb24gbGlua3MgYWZ0ZXIgY29tbWVudCBsaXN0LjxiciAvPgpE ZWZhdWx0OiA8Y29kZT5hcHBlbmQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gKHllcykgRXhhbXBs ZTogPGNvZGU+JnF1b3Q7JnF1b3Q7PC9jb2RlPiAobm8pLjwvcD4KCgk8cD48c3Ryb25nPnBn X3dyYXB0YWc8L3N0cm9uZz48YnIgLz4KKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMp IHRvIHdyYXAgYXJvdW5kIHRoZSBwYWdpbmF0aW9uIGxpbmtzIGFuZCBudW1iZXJzLiBEZWZh dWx0IGlzIHVuc2V0LjxiciAvPgpEZWZhdWx0OiA8Y29kZT5wZ193cmFwdGFnPSZxdW90O3Vs JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtwJnF1b3Q7PC9jb2RlPi48L3A+ CgoJPHA+PHN0cm9uZz5wZ19icmVhazwvc3Ryb25nPjxiciAvPgooWClIVE1MIHRhZyAod2l0 aG91dCBicmFja2V0cykgb3Igc3RyaW5nIHVzZWQgdG8gc2VwYXJhdGUgcGFnaW5hdGlvbiBs aW5rcy4gRGVmYXVsdCBpcyB1bnNldC48YnIgLz4KRGVmYXVsdDogPGNvZGU+cGdfd3JhcHRh Zz0mcXVvdDtsaSZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7JnF1b3Q7PC9j b2RlPi48L3A+CgoJPHA+PHN0cm9uZz5wZ19jbGFzczwvc3Ryb25nPjxiciAvPgooWClIVE1M IGNsYXNzIGF0dHJpYnV0ZSB0byBiZSBhcHBsaWVkIHRvIDxjb2RlPnBnX3dyYXB0YWc8L2Nv ZGU+IGVsZW1lbnQuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPmNsYXNzPSZxdW90OyZxdW90Ozwv Y29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7cGctY2xhc3MmcXVvdDs8L2NvZGU+LjwvcD4K Cgk8cD48c3Ryb25nPnBnX2JyZWFrY2xhc3M8L3N0cm9uZz48YnIgLz4KKFgpSFRNTCBjbGFz cyBhdHRyaWJ1dGUgdG8gYmUgYXBwbGllZCB0byA8Y29kZT5wZ19icmVhazwvY29kZT4gZWxl bWVudC48YnIgLz4KRGVmYXVsdDogPGNvZGU+Y2xhc3M9JnF1b3Q7JnF1b3Q7PC9jb2RlPiBF eGFtcGxlOiA8Y29kZT4mcXVvdDtteWNsYXNzJnF1b3Q7PC9jb2RlPi48L3A+CgoJPHA+PHN0 cm9uZz5sYWJlbF9uZXh0PC9zdHJvbmc+PGJyIC8+CkxhYmVsIHRleHQgYXBwbGllZCBmb3Ig bmV4dCBsaW5rLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5sYWJlbF9uZXh0PSZxdW90OyZndDsm Z3Q7JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtOZXh0IGNvbW1lbnRzJnF1 b3Q7PC9jb2RlPi48L3A+CgoJPHA+PHN0cm9uZz5sYWJlbF9wcmV2PC9zdHJvbmc+PGJyIC8+ CkxhYmVsIHRleHQgYXBwbGllZCBmb3IgcHJldiBsaW5rLjxiciAvPgpEZWZhdWx0OiA8Y29k ZT5sYWJlbF9wcmV2PSZxdW90OyZsdDsmbHQ7JnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29k ZT4mcXVvdDtQcmV2IGNvbW1lbnRzJnF1b3Q7PC9jb2RlPi48L3A+CgoJPHA+PHN0cm9uZz5j bGFzc19uZXh0PC9zdHJvbmc+PGJyIC8+CihYKUhUTUwgY2xhc3MgYXR0cmlidXRlIHRvIGJl IGFwcGxpZWQgdG8gbmV4dCBsaW5rLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5jbGFzc19uZXh0 PSZxdW90OyZxdW90OzwvY29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7bXljbGFzcyZxdW90 OzwvY29kZT4uPC9wPgoKCTxwPjxzdHJvbmc+Y2xhc3NfcHJldjwvc3Ryb25nPjxiciAvPgoo WClIVE1MIGNsYXNzIGF0dHJpYnV0ZSB0byBiZSBhcHBsaWVkIHRvIHByZXYgbGluay48YnIg Lz4KRGVmYXVsdDogPGNvZGU+Y2xhc3NfcHJldj0mcXVvdDsmcXVvdDs8L2NvZGU+IEV4YW1w bGU6IDxjb2RlPiZxdW90O215Y2xhc3MmcXVvdDs8L2NvZGU+LjwvcD4KCgk8cD48c3Ryb25n PnNob3dhbHdheXM8L3N0cm9uZz48YnIgLz4KU2hvdyBwYWdlIG51bWJlciBsaW5rcyBhbHdh eXMsIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBhIG9uZSBwYWdlLjxiciAvPgpEZWZhdWx0OiA8 Y29kZT5zaG93YWx3YXlzPSZxdW90OzEmcXVvdDs8L2NvZGU+ICh5ZXMpIEV4YW1wbGU6IDxj b2RlPiZxdW90OyZxdW90OzwvY29kZT4gKG5vKS48L3A+CgoJPGg0IGlkPSJyYWhfcmVjZW50 X2NvbW1lbnRzIj5yYWhfcmVjZW50X2NvbW1lbnRzPC9oND4KCgk8cD5PdXRwdXRzIGxpc3Qg b2YgcmVjZW50IGNvbW1lbnRzLCBsaWtlIHRoZSBkZWZhdWx0IGluYnVpbGQgPGNvZGU+cmVj ZW50X2NvbW1lbnRzPC9jb2RlPi4gVGhlIHRhZyBpcyA8Y29kZT4mbHQ7dHhwOnJhaF9yZWNl bnRfY29tbWVudHMgLyZndDs8L2NvZGU+IGFuZCBhdHRyaWJ1dGVzIGZvciBpdCBmb2xsb3c6 PC9wPgoKCTxwPjxzdHJvbmc+Y29tbWVudHNfbGltaXQ8L3N0cm9uZz48YnIgLz4KU2V0IHRo aXMgdG8gYmUgc2FtZSBhcyB0aGUgPGNvZGU+bGltaXQ8L2NvZGU+LXZhbHVlIGluIHRoZSA8 Y29kZT4mbHQ7dHhwOnJhaF9jb21tZW50cyAvJmd0OzwvY29kZT4uIFRoaXMgdGVsbHMgdG8g dGhlIHRhZyBob3cgbWFueSBjb21tZW50cyB0aGVyZSBpcyBpbiBhIG9uZSBwYWdlLjxiciAv PgpEZWZhdWx0OiA8Y29kZT5jb21tZW50c19saW1pdD0mcXVvdDsxMCZxdW90OzwvY29kZT4g RXhhbXBsZTogPGNvZGU+JnF1b3Q7NSZxdW90OzwvY29kZT48L3A+CgoJPHA+PHN0cm9uZz5j b21tZW50c19zb3J0PC9zdHJvbmc+PGJyIC8+ClNldCB0aGlzIHRvIGJlIHNhbWUgYXMgdGhl IDxjb2RlPnNvcnQ8L2NvZGU+LXZhbHVlIGluIHRoZSA8Y29kZT4mbHQ7dHhwOnJhaF9jb21t ZW50cyAvJmd0OzwvY29kZT4uIFRoaXMgdGVsbHMgdG8gdGhlIHRhZyBpbiB3aGljaCBvcmRl ciB0aGUgY29tbWVudHMgYXJlLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5jb21tZW50c19zb3J0 PSZxdW90O3Bvc3RlZCBhc2MmcXVvdDs8L2NvZGU+IEV4YW1wbGU6IDxjb2RlPiZxdW90O3Bv c3RlZCBkZXNjJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPndyYXB0YWc8L3N0cm9u Zz48YnIgLz4KKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMpIHRvIHdyYXAgYXJvdW5k IHRoZSBjb21tZW50IGxpc3QuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPndyYXB0YWc9JnF1b3Q7 JnF1b3Q7PC9jb2RlPiAodW5zZXQpIEV4YW1wbGU6IDxjb2RlPiZxdW90O3VsJnF1b3Q7PC9j b2RlPi48L3A+CgoJPHA+PHN0cm9uZz5icmVhazwvc3Ryb25nPjxiciAvPgooWClIVE1MIHRh ZyAod2l0aG91dCBicmFja2V0cykgb3Igc3RyaW5nIHVzZWQgdG8gc2VwYXJhdGUgY29tbWVu dHMuPGJyIC8+CkRlZmF1bHQ6IDxjb2RlPmJyZWFrPSZxdW90O2JyJnF1b3Q7PC9jb2RlPiBF eGFtcGxlOiA8Y29kZT4mcXVvdDsmcXVvdDs8L2NvZGU+LjwvcD4KCgk8cD48c3Ryb25nPmNs YXNzPC9zdHJvbmc+PGJyIC8+CihYKUhUTUwgY2xhc3MgYXR0cmlidXRlIHRvIGJlIGFwcGxp ZWQgdG8gd3JhcHRhZy48YnIgLz4KRGVmYXVsdDogPGNvZGU+Y2xhc3M9JnF1b3Q7cmVjZW50 X2NvbW1lbnRzJnF1b3Q7PC9jb2RlPiBFeGFtcGxlOiA8Y29kZT4mcXVvdDtjb21tZW50JnF1 b3Q7PC9jb2RlPjwvcD4KCgk8cD48c3Ryb25nPmxhYmVsPC9zdHJvbmc+PGJyIC8+CkxhYmVs IGZvciB0aGUgdG9wIG9mIHRoZSBsaXN0LjxiciAvPgpEZWZhdWx0IDxjb2RlPmxhYmVsPSZx dW90OyZxdW90OzwvY29kZT4gKHVuc2V0KSBFeGFtcGxlOiA8Y29kZT4mcXVvdDtyZWNlbnRf Y29tbWVudHMmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPjxzdHJvbmc+bGFiZWx0YWc8L3N0cm9u Zz48YnIgLz4KKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMpIHRvIHdyYXAgYXJvdW5k IGxhYmVsLjxiciAvPgpEZWZhdWx0OiA8Y29kZT5sYWJlbHRhZz0mcXVvdDsmcXVvdDs8L2Nv ZGU+ICh1bnNldCkgRXhhbXBsZTogPGNvZGU+JnF1b3Q7aDMmcXVvdDs8L2NvZGU+LjwvcD4K Cgk8cD48c3Ryb25nPmxpbWl0PC9zdHJvbmc+PGJyIC8+Ck51bWJlciBvZiBjb21tZW50cyB0 byBkaXNwbGF5LjxiciAvPgpEZWZhdWx0OiA8Y29kZT5saW1pdD0mcXVvdDsxMCZxdW90Ozwv Y29kZT4gRXhhbXBsZTogPGNvZGU+JnF1b3Q7NSZxdW90OzwvY29kZT4uPC9wPgoKCTxoMyBp ZD0iZXhhbXBsZSI+RXhhbXBsZTwvaDM+CgoJPHA+PGNvZGU+Jmx0O3R4cDpyYWhfY29tbWVu dHMgd3JhcHRhZz0mcXVvdDtkaXYmcXVvdDsgcGdfd3JhcHRhZz0mcXVvdDtwJnF1b3Q7IC8m Z3Q7PC9jb2RlPjwvcD4KCgk8aDMgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMz4KCgk8 cD48c3Ryb25nPlZlcnNpb24gMC40PC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+QWRkZWQg PGNvZGU+Jmx0O3R4cDpyYWhfcmVjZW50X2NvbW1lbnRzIC8mZ3Q7PC9jb2RlPiB0YWcuPC9s aT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5WZXJzaW9uIDAuMzwvc3Ryb25nPjwvcD4KCgk8dWw+ CgkJPGxpPlJlbW92ZWQgYXR0cmlidXRlczogPGNvZGU+YnJlYWtfbmF2PC9jb2RlPiBhbmQg PGNvZGU+YnJlYWtfcGFnZXM8L2NvZGU+LjwvbGk+CgkJPGxpPkZpeGVkIG1lc3N5IHVybCBt b2RlJiM4MjE3O3MgZXJyb3I6IG5vdyB3b3JrcyBmdWxseSBvbiBtZXNzeS48L2xpPgoJCTxs aT5BZGRlZCBhdHRyaWJ1dGVzOiA8Y29kZT5wZ19icmVhazwvY29kZT4sIDxjb2RlPnBnX2Jy ZWFrX2NsYXNzPC9jb2RlPiwgPGNvZGU+cHJlcGVuZDwvY29kZT4gYW5kIDxjb2RlPmFwcGVu ZDwvY29kZT4uPC9saT4KCQk8bGk+Tm93IHdvcmtzIGluIGFydGljbGUgbGlzdHMsIHNhbWUg d2F5IGxpa2UgPGNvZGU+Jmx0O3R4cDpjb21tZW50cyAvJmd0OzwvY29kZT4uPC9saT4KCQk8 bGk+QmV0dGVyIGRvY3VtZW50aW9uLjwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+VmVyc2lv biAwLjI8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT5Tb21lIG1pbm9yIGJ1ZyBmaXhlcy48 L2xpPgoJCTxsaT5SZW1vdmVkIHNvbWUgdHlwb3MgZnJvbSBkb2N1bWVudGlvbi48L2xpPgoJ PC91bD4KCgk8cD48c3Ryb25nPlZlcnNpb24gMC4xPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8 bGk+Rmlyc3QgcmVsZWFzZS48L2xpPgoJPC91bD4iO3M6NDoiY29kZSI7czozMzIxOiIJIyMj IyMjIyMjIyMjIyMjIwoJIwoJIwlyYWhfY29tbWVudHMtcGx1Z2luIGZvciBUZXh0cGF0dGVy bgoJIwl2ZXJzaW9uIDAuNAoJIwlieSBKdWtrYSBTdmFobgoJIwlodHRwOi8vcmFoZm9ydW0u Yml6CgkjCgkjIyMjIyMjIyMjIyMjIyMjCgoJZnVuY3Rpb24gcmFoX2NvbW1lbnRzKCRhdHRz KSB7CgkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsKCQlleHRyYWN0KGxBdHRzKGFycmF5KAoJCQkn Zm9ybScgPT4gJ2NvbW1lbnRzJywKCQkJJ3NvcnQnID0+ICdwb3N0ZWQgYXNjJywKCQkJJ3dy YXB0YWcnID0+ICcnLAoJCQknYnJlYWsnID0+ICcnLAoJCQknY2xhc3MnID0+ICcnLAoJCQkn YnJlYWtjbGFzcycgPT4gJycsCgkJCSdvZmZzZXQnID0+ICcnLAoJCQknbGltaXQnID0+IDEw LAoJCQkncHJlcGVuZCcgPT4gMSwKCQkJJ2FwcGVuZCcgPT4gMSwKCQkJJ3BnX3dyYXB0YWcn ID0+ICd1bCcsCgkJCSdwZ19icmVhaycgPT4gJ2xpJywKCQkJJ3BnX2NsYXNzJyA9PiAnJywK CQkJJ3BnX2JyZWFrY2xhc3MnID0+ICcnLAoJCQknbGFiZWxfbmV4dCcgPT4gJyZndDsmZ3Q7 JywKCQkJJ2xhYmVsX3ByZXYnID0+ICcmbHQ7Jmx0OycsCgkJCSdjbGFzc19uZXh0JyA9PiAn JywKCQkJJ2NsYXNzX3ByZXYnID0+ICcnLAoJCQknc2hvd2Fsd2F5cycgPT4gMSwKCQkpLCRh dHRzKSk7CgkJJG51bWJlciA9IGFycmF5KCk7CgkJaWYoaXNfbnVtZXJpYyhncHMoJ3BnJykp KSAkcGcgPSBncHMoJ3BnJyk7CgkJaWYoZW1wdHkoJHBnKSkgJHBnID0gMTsKCQkkaSA9IDA7 CgkJJHByZXZwZyA9ICRwZy0xOwoJCSRuZXh0cGcgPSAkcGcrMTsKCQkkbmV4dCA9ICcnOwoJ CSRwcmV2ID0gJyc7CgkJJHRvdGFsID0gJHRoaXNhcnRpY2xlWydjb21tZW50c19jb3VudCdd OwoJCSR0b3RhbHBnID0gJHRvdGFsLyRsaW1pdDsKCQkkdG90YWxwZyA9IGNlaWwoJHRvdGFs cGcpOwoJCSRzZXAgPSAoc2FmZV9maWVsZCgndmFsJywndHhwX3ByZWZzJywibmFtZT0ncGVy bWxpbmtfbW9kZSciKSA9PSAnbWVzc3knKSA/ICcmYW1wOycgOiAnPyc7CgkJaWYoMTwkcGcg JiYgMTwkdG90YWxwZykgJG51bWJlcltdID0gZG9UYWcoJGxhYmVsX3ByZXYsJ2EnLCRjbGFz c19wcmV2LCcgaHJlZj0iJy5wZXJtbGluayhhcnJheSgpKS4kc2VwLidwZz0nLiRwcmV2cGcu JyInKTsKCQl3aGlsZSAoJGk8JHRvdGFscGcpIHsKCQkJJGkrKzsKCQkJJG51bWJlcltdID0g ZG9UYWcoJGksJ2EnLCdwYWdlLScuJGksJyBocmVmPSInLnBlcm1saW5rKGFycmF5KCkpLiRz ZXAuJ3BnPScuJGkuJyInKTsKCQl9CgkJaWYoJHBnPCR0b3RhbHBnKSAkbnVtYmVyW10gPSBk b1RhZygkbGFiZWxfbmV4dCwnYScsJGNsYXNzX25leHQsJyBocmVmPSInLnBlcm1saW5rKGFy cmF5KCkpLiRzZXAuJ3BnPScuJG5leHRwZy4nIicpOwoJCSRwYWdpbmF0aW9uID0gKCRzaG93 YWx3YXlzICE9IDEgJiYgJHRvdGFscGcgPCAyKSA/ICcnIDogZG9XcmFwKCRudW1iZXIsICRw Z193cmFwdGFnLCAkcGdfYnJlYWssICRwZ19jbGFzcywgJHBnX2JyZWFrY2xhc3MpOwoJCWlm KDE8JHBnKXsKCQkJJG9mZnNldCA9ICRsaW1pdCokcGc7CgkJCSRvZmZzZXQgPSAkb2Zmc2V0 LSRsaW1pdDsKCQl9CgkJcmV0dXJuICgoJHByZXBlbmQpID8gJHBhZ2luYXRpb24gOiAnJyku Y29tbWVudHMoYXJyYXkoCgkJCSdzb3J0JyA9PiAkc29ydCwKCQkJJ2Zvcm0nID0+ICRmb3Jt LAoJCQknd3JhcHRhZycgPT4gJHdyYXB0YWcsCgkJCSdicmVha2NsYXNzJyA9PiAkYnJlYWtj bGFzcywKCQkJJ2JyZWFrJyA9PiAkYnJlYWssCgkJCSdjbGFzcycgPT4gJGNsYXNzLAoJCQkn b2Zmc2V0JyA9PiAkb2Zmc2V0LAoJCQknbGltaXQnID0+ICRsaW1pdAoJCSkpLigoJGFwcGVu ZCkgPyAkcGFnaW5hdGlvbiA6ICcnKTsKCX0KCglmdW5jdGlvbiByYWhfcmVjZW50X2NvbW1l bnRzKCRhdHRzKSB7CgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2NvbW1lbnRzX2xpbWl0 JyA9PiAxMCwKCQkJJ2NvbW1lbnRzX3NvcnQnID0+ICdwb3N0ZWQgYXNjJywKCQkJJ2JyZWFr JyA9PiAnYnInLAoJCQknY2xhc3MnID0+ICdyZWNlbnRfY29tbWVudHMnLAoJCQknbGFiZWwn ID0+ICcnLAoJCQknbGFiZWx0YWcnID0+ICcnLAoJCQknbGltaXQnID0+IDEwLAoJCQknc29y dCcgPT4gJ3Bvc3RlZCBkZXNjJywKCQkJJ3dyYXB0YWcnID0+ICcnCgkJKSwkYXR0cykpOwoK CQkkc2VwID0gKHNhZmVfZmllbGQoJ3ZhbCcsJ3R4cF9wcmVmcycsIm5hbWU9J3Blcm1saW5r X21vZGUnIikgPT0gJ21lc3N5JykgPyAnJmFtcDsnIDogJz8nOwoJCSRzb3J0ID0gcHJlZ19y ZXBsYWNlKCcvXGJwb3N0ZWRcYi8nLCAnZC5wb3N0ZWQnLCAkc29ydCk7CgkJJHJzID0gc3Rh cnRSb3dzKCdzZWxlY3QgZC5uYW1lLCBkLnBhcmVudGlkLCBkLmRpc2N1c3NpZCwgdC5JRCBh cyB0aGlzaWQsIHVuaXhfdGltZXN0YW1wKHQuUG9zdGVkKSBhcyBwb3N0ZWQsIHQuVGl0bGUg YXMgdGl0bGUsIHQuU2VjdGlvbiBhcyBzZWN0aW9uLCB0LnVybF90aXRsZSAnLidmcm9tICcu IHNhZmVfcGZ4KCd0eHBfZGlzY3VzcycpIC4nIGFzIGQgaW5uZXIgam9pbiAnLiBzYWZlX3Bm eCgndGV4dHBhdHRlcm4nKSAuJyBhcyB0IG9uIGQucGFyZW50aWQgPSB0LklEICcuJ3doZXJl IHQuU3RhdHVzID49IDQgYW5kIGQudmlzaWJsZSA9ICcuVklTSUJMRS4nIG9yZGVyIGJ5ICcu ZG9TbGFzaCgkc29ydCkuJyBsaW1pdCAwLCcuaW50dmFsKCRsaW1pdCkpOwoKCQlpZiAoJHJz KSB7CgkJCSRvdXQgPSBhcnJheSgpOwoJCQl3aGlsZSAoJGMgPSBuZXh0Um93KCRycykpIHsK CQkJCSRwb3NpdGlvbiA9IDA7CgkJCQkkcGcgPSAwOwkKCQkJCSRyczIgPSBzYWZlX3Jvd3Nf c3RhcnQoJ2Rpc2N1c3NpZCcsJ3R4cF9kaXNjdXNzJywidmlzaWJsZSA9ICIuVklTSUJMRS4i IGFuZCBwYXJlbnRpZCA9ICIuJGNbJ3BhcmVudGlkJ10uIiBvcmRlciBieSAkY29tbWVudHNf c29ydCIpOwoJCQkJd2hpbGUgKCR4ID0gbmV4dFJvdygkcnMyKSkgewoJCQkJCWV4dHJhY3Qo JHgpOwoJCQkJCSRwb3NpdGlvbisrOwoJCQkJCWlmKCRkaXNjdXNzaWQgPT0gJGNbJ2Rpc2N1 c3NpZCddKSBicmVhazsKCQkJCX0KCQkJCSRwZyA9IGNlaWwoJHBvc2l0aW9uLyRjb21tZW50 c19saW1pdCk7CgkJCQkkb3V0W10gPSBocmVmKCRjWyduYW1lJ10uJyAoJy5lc2NhcGVfdGl0 bGUoJGNbJ3RpdGxlJ10pLicpJyxwZXJtbGlua3VybCgkYykuJHNlcC4ncGc9Jy4kcGcuJyNj Jy4kY1snZGlzY3Vzc2lkJ10pOwoJCQl9CgkJCWlmICgkb3V0KSByZXR1cm4gZG9MYWJlbCgk bGFiZWwsICRsYWJlbHRhZykuZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFz cyk7CgkJfQoJCXJldHVybiAnJzsKCX0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6Im9yZGVy IjtzOjE6IjUiO3M6MzoibWQ1IjtzOjMyOiJjZTg4YjBmNTUzMzRiYTA1YzQ3NmFjMDIwODhk YTU5MyI7czo0OiJuYW1lIjtzOjEyOiJyYWhfY29tbWVudHMiO3M6NzoidmVyc2lvbiI7czoz OiIwLjQiO30=