<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>avplayer</name>
	<version>1.3</version>
  <mincmsversion>1.8.1</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJCQkJPHA+VGhpcyBtb2R1bGUgbWFuYWdlcyBhbmQgZGlzcGxheXMgYW4gaXRlbSBjYXRhbG9ndWUuPC9wPg0KCQkJPGJyLz48aDM+SG93IERvIEkgVXNlIEl0PzwvaDM+DQoJCQkJPGJyLz48aDQ+UGVybWlzc2lvbnM8L2g0Pg0KCQkJCQk8cD5NYWtlIHN1cmUgeW91ciB1c2VycyBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucy4gSWYgeW91IGFyZSBub3QgdXNpbmcgdGhlIGFjY2VzcyByZXN0cmljdGlvbiBvcHRpb24gKHNlZSBzZXR0aW5ncyksIHRoZSAiYXZwbGF5ZXI6IE5vcm1hbCB1c2VyIiBwZXJtaXNzaW9uIHdpbGwgYmUgZW5vdWdoIHRvIHVzZSB0aGUgbW9kdWxlLiBJbiB0aGUgc2V0dGluZ3MgdGFiLCB5b3UgY2FuIGNob29zZSB3aGljaCB0YWJzIHdpbGwgYmUgZGlzcGxheWVkIGZvciB0aGUgbm9ybWFsIHVzZXIuIE9ubHkgdGhlIGFkbWluaXN0cmF0b3IgYW5kIHVzZXJzIHdpdGggdGhlICJhdnBsYXllcjogQWR2YW5jZWQiIHBlcm1pc3Npb24gd2lsbCBoYXZlIGFjY2VzcyB0byBzZXR0aW5ncyB0YWIuPGJyLz4NCgkJCQkJSWYgeW91IHdpc2ggdG8gZGVmaW5lIGxldmVsLXNwZWNpZmljIHBlcm1pc3Npb25zLCBhY3RpdmF0ZSB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiBpbiB0aGUgc2V0dGluZ3MgdGFiIGFuZCBnaXZlIHRoZSAiYXZwbGF5ZXI6IE1hbmFnZSBuYW1lX29mX2xldmVsIiBwZXJtaXNzaW9uIHRvIHRoZSBhcHByb3ByaWF0ZSB1c2Vycy48L3A+DQoJCQkJPGJyLz48aDQ+QmFzaWNzPC9oND4NCgkJCQkJPHA+VG8gY2FsbCB0aGUgbW9kdWxlLCBzaW1wbHkgdXNlIHRoZSBmb2xsb3dpbmcgdGFnOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIifTwvcD4NCgkJCQkJPHA+SW4gdGhpcyBjYXNlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IGxldmVsIGVsZW1lbnRzIChtZWRpYWZpbGUpIHdpbGwgYmUgZGlzcGxheWVkLiBUbyBzZWxlY3QgYSBsZXZlbCwgdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIHdoYXQ9Im1lZGlhZmlsZSJ9PGJyLz4NCgkJCQkJPGk+VGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlICJ3aGF0IiBwYXJhbWV0ZXIgYXJlIDogcGxheWVyLCBtZWRpYWZpbGU8L2k+PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGFsc28gYXNrIGZvciBlbGVtZW50cyB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50Ojxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIHBhcmVudD0iYWxpYXNfb2ZfcGFyZW50In08L3A+DQoJCQkJCTxwPllvdSBtYXkgZmluYWxseSBhc2sgZm9yIGEgc3BlY2lmaWMgZWxlbWVudDo8YnI+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFsaWFzPSJhbGlhc19vZl9pdGVtIn08L3A+DQoJCQkJPGJyLz48aDQ+U2VwYXJhdGluZyBpbnRvIHBhZ2VzPC9oND4NCgkJCQkJPHA+WW91IG1heSBsaW1pdCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGJlIHNob3duIG9uIG9uZSBwYWdlOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIG5icGVycGFnZT0iNSJ9PGJyLz4NCgkJCQkJSW4gdGhlIHRlbXBsYXRlLCB5b3UgY2FuIGJ1aWxkIHRoZSBwYWdlIG1lbnUgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWdzOjxici8+DQoJCQkJCXskcGFnZV9zaG93aW5nfSwgeyRwYWdlX3RvdGFsaXRlbXN9LCB7JHBhZ2VfcGFnZW51bWJlcnN9LCB7JHBhZ2VfbmV4dH0sIHskcGFnZV9wcmV2aW91c308L3A+DQoJCQkJPGJyLz48aDQ+VXNpbmcgcXVlcmllczwvaDQ+DQoJCQkJCTxwPlRvIGdldCBhIGxpc3Qgb2YgaXRlbSB0aGF0IG1lZXQgc3BlY2lmaWMgY3JpdGVyaWEsIHlvdSBjYW4gY3JlYXRlIGEgcXVlcnkgdXNpbmcgdGhlIHF1ZXJpZXMgdGFiIG9mIHRoZSBhZG1pbiBwYW5lbCwgYW5kIGNhbGwgdGhlbSB1c2luZyB0aGUgInF1ZXJ5IiBwYXJhbWV0ZXI6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJhdnBsYXllciIgcXVlcnk9IjUifTwvcD4NCgkJCQkJPHA+PGk+SWYgdGhlIG9wdGlvbiB0byBhbGxvdyBtYW51ZWwgc3FsIHF1ZXJpZXMgaXMgZW5hYmxlZDwvaT4gKHNlZSAiU2V0dGluZ3MiIHRhYiksIHlvdSBtYXkgYWxzbyBwcm92aWRlIHRoZSBzcWwgcXVlcnkgZGlyZWN0bHkgd2l0aCB0aGUgcXVlcnkgcGFyYW1ldGVyLiBGb3IgZXhhbXBsZTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9ImF2cGxheWVyIiB3aGF0PSJtZWRpYWZpbGUiIHF1ZXJ5PSJBLmRhdGVfbW9kaWZpZWQgPiAnMjAwOS0wMy0xNScgQU5EIEEuYWN0aXZlID0gMSJ9PGJyLz4NCgkJCQkJVGhlIHF1ZXJ5IHBhcmFtZXRlciBjYW4gb25seSBob2xkIHRoZSBXSEVSRSBjbGF1c2Ugb2YgdGhlIHF1ZXJ5LCBhbmQgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBXSEVSRSBjb21tYW5kIGl0c2VsZi4gVG8gYXZvaWQgcHJvYmxlbXMsIHRoZSBwcmVmaXggIkEuIiBzaG91bGQgYmUgdXNlZCBiZWZvcmUgZmllbGQgbmFtZXMgKHdoZXJlIGFwcGxpY2FibGUsIHRoZSAiQi4iIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj4ibGluayI8L2I+IHRvIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRlZmF1bHQgYWN0aW9uLCB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXJzOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0ibGluayIgd2hhdD0ibWVkaWFmaWxlIiByYW5kb209IjEifTxici8+DQoJCQkJCXdvdWxkIGNyZWF0ZSBhIGxpbmsgdG8gYSByYW5kb20gZWxlbWVudCBvZiB0aGlzIGxldmVsLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2l0ZW1hcCBhY3Rpb248L2g0Pg0KCQkJCQk8cD5JZiB5b3VyIG1vZHVsZSBpcyBub3Qgc2hhcmluZyBjaGlsZHJlbiwgeW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj4ic2l0ZW1hcCI8L2I+IHRvIGNyZWF0ZSBhIG1vZHVsZSBzaXRlbWFwOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0ic2l0ZW1hcCJ9PGJyLz4NCgkJCQkJWW91IGNhbiBzZWxlY3QgdGhlIGxldmVscyB1c2luZyB0aGUgIndoYXQiIHBhcmFtZXRlciwgYW5kIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSB1c2luZyAifCIgOiB3aGF0PSJsZXZlbDF8bGV2ZWwyIi48YnIvPg0KCQkJCQlPdGhlciBhdmFpbGFibGUgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24gYXJlICJkZXRhaWxwYWdlIiBhbmQgImlubGluZSIuPGJyLz4NCgkJCQkJVG8gY3JlYXRlIGEgZ29vZ2xlIHNpdGVtYXAsIHNlZSB0aGUgPGEgaHJlZj0iLi4vbW9kdWxlcy9hdnBsYXllci9kb2MvZmFxLmh0bWwjcTE2IiB0YXJnZXQ9Il9ibGFuayI+RkFRPC9hPi48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGZyb250ZW5kIGVkaXQgYWN0aW9uPC9oND4NCgkJCQkJPHA+QSBmb3JtIGZvciB0aGUgZnJvbnRlbmQgZWRpdGlvbiBvZiBlbGVtZW50cyBjYW4gYmUgY2FsbGVkIHVzaW5nOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0iZnJvbnRlbmRfZWRpdCIgd2hhdD0ibWVkaWFmaWxlIn08YnIvPg0KCQkJCQlUaGlzIHRhZyB3b3VsZCBzaG93IGFuIGVtcHR5IGZvcm0sIGFuZCBjcmVhdGUgYSBuZXcgZWxlbWVudCBvZiB0aGUgbGV2ZWwgIm1lZGlhZmlsZSIuIEluIG9yZGVyIHRvIGVkaXQgYW4gZXhpc3RpbmcgZWxlbWVudCwgeW91IHNpbXBseSBoYXZlIHRvIHNwZWNpZnkgdGhlIGFsaWFzOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0iZnJvbnRlbmRfZWRpdCIgd2hhdD0ibWVkaWFmaWxlIiBhbGlhcz0iaXRlbV9hbGlhcyJ9PC9wPg0KCQkJCQk8cD5JZiB5b3Ugd2lzaCB0byBkaXNwbGF5IGEgbGluayB0byB0aGUgZWRpdGlvbiBvZiBhbiBpdGVtLCB1c2UgdGhlICJsaW5rIiBhY3Rpb246PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJhdnBsYXllciIgYWN0aW9uPSJsaW5rIiB0b2FjdGlvbj0iZnJvbnRlbmRfZWRpdCIgd2hhdD0ibWVkaWFmaWxlIiBhbGlhcz0iaXRlbV9hbGlhcyJ9PGJyLz4NCgkJCQkJWW91IGNvdWxkLCBmb3IgZXhhbXBsZSwgZG8gdGhpcyBpbiBhIGxpc3QgdGVtcGxhdGUuLi48L3A+DQoJCQkJCTxwPihTZWUgdGhlIHNldHRpbmdzIHRhYiBmb3Igb3B0aW9ucyBhYm91dCB0aGUgZnJvbnRlbmRfZWRpdCBmZWF0dXJlKTxici8+DQoJCQkJCUl0IGlzIHJlY29tbWFuZGVkIHRoYXQgdGhlIGZyb250ZW5kIGVkaXQgZmVhdHVyZSBiZSB1c2VkIHdpdGggdGhlIEZyb250IEVuZCBVc2VycyBtb2R1bGUgZm9yIHBlcm1pc3Npb25zIG1hbmFnZW1lbnQuIFNlZSA8YSBocmVmPSIuLi9tb2R1bGVzL2F2cGxheWVyL2RvYy9mYXEuaHRtbCNxMjAiIHRhcmdldD0iX2JsYW5rIj5GQVE8L2E+IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkbyB0aGlzLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2VhcmNoIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPllvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+InNlYXJjaCI8L2I+IHRvIGRpc3BsYXkgYSBzZWFyY2ggZm9ybTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9ImF2cGxheWVyIiBhY3Rpb249InNlYXJjaCJ9PGJyLz4NCgkJCQkJVXNlIHRoZSAic2VhcmNobW9kZSIgcGFyYW1ldGVyIHRvIHN3aXRjaCBiZXR3ZWVuIGFkdmFuY2VkIChkZWZhdWx0KSBhbmQgc2ltcGxlIG1vZGUuIFlvdSBtYXkgc3BlY2lmeSB0aGUgbGV2ZWwgaW4gd2hpY2ggdG8gc2VhcmNoIHVzaW5nIHRoZSAid2hhdCIgcGFyYW1ldGVyLiBZb3UgY2Fubm90IHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoIG1vZGUgaW4gYWxsIGxldmVscyBhdCB0aGUgc2FtZSB0aW1lLjxici8+DQoJCQkJCVRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCB3aXRoIHRoZSBzZWFyY2ggYWN0aW9uOiB3aGF0LCBsaW1pdCwgbmJwZXJwYWdlLCBvcmRlcmJ5LCBkZXRhaWxwYWdlLCBsaXN0dGVtcGxhdGUsIGlubGluZSwgc2VhcmNobW9kZS48YnIvPg0KCQkJCQlTZWUgYXZwbGF5ZXIvdGVtcGxhdGVzL3NlYXJjaC50cGwgdG8gbW9kaWZ5IHRoZSBzZWFyY2ggZm9ybS48L3A+PGJyLz4NCg0KCQkJCTxoND5BdWRpby9WaWRlbyBQbGF5ZXJzPC9oND4NCgkJCQlXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgcGxheWVycyB3aXRoIEFWUGxheWVyLCBpdCBoYXMgYmVlbiBjb25maWd1cmVkIG9wdGltYWxseSBmb3IgDQoJCQkJdGhlIDxzdHJvbmc+TmVvTGFvIFBsYXllcjwvc3Ryb25nPjxiciAvPg0KCQkJCUZvciBWaWRlbywgZG93bmxvYWQgdGhlIDxzdHJvbmc+TmVvTGFvIFZpZGVvIChGTFYgUGxheWVyKTwvc3Ryb25nPiBmcm9tOg0KCQkJCTxhIGhyZWY9Imh0dHA6Ly9mbHYtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2Rvd25sb2FkPC9hPjxiciAvPg0KCQkJCVVwbG9hZCB0byB5b3VyIHNpdGUgYW5kIHBsYWNlIHRoZSBwYXRoIGludG8gdGhlIGxvY2F0aW9uIGZpZWxkIG9mIHRoZSBQbGF5ZXIsIGllOg0KCQkJCXVwbG9hZHMvRkxWUGxheWVyL3BsYXllcl9mbHZfbWF4aS5zd2Y8YnIgLz4NCgkJCQlGb3IgPHN0cm9uZz5NUDMnczwvc3Ryb25nPiBwbGVhc2UgZG93bmxvYWQgdGhlIDxzdHJvbmc+TmVvTGFvIEZsYXNoIE1QMyBQbGF5ZXI8L3N0cm9uZz4gZnJvbSA6PGJyPg0KCQkJCTxhIGhyZWY9Imh0dHA6Ly9mbGFzaC1tcDMtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZmxhc2gtbXAzLXBsYXllci5uZXQvcGxheWVycy9tYXhpL2Rvd25sb2FkPC9hPjxiciAvPg0KCQkJCWZvciA8c3Ryb25nPlBsYXllciBQYXJhbWV0ZXJzPC9zdHJvbmc+IAlwbGVhc2UgcmVmZXIgdG86PGEgaHJlZj0iaHR0cDovL2Zsdi1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9nZW5lcmF0b3IiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2dlbmVyYXRvcjwvYT48YnIgLz4NCg0KCQkJCQ0KCQkJCTxiciAvPg0KDQoNCgkJCQk8cD5Gb3IgbW9yZSBoZWxwIG9uIG1vZHVsZSB1c2UsIHlvdSBtYXkgdGFrZSBhIGxvb2sgYXQgdGhlIDxhIGhyZWY9Ii4uL21vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+RkFRPC9hPi48L3A+DQoJCQk8YnIvPjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KCQkJCTxwPlRoaXMgbW9kdWxlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuPC9wPjxici8+PGJyLz48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gUG9zc2libGUgYWN0aW9uczogImxpbmsiLCAic2VhcmNoIiwgImJyZWFkY3J1bWJzIiwgImRlZmF1bHQiLCAic2l0ZW1hcCIgYW5kICJmcm9udGVuZF9lZGl0Ii48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHdoYXQ9IiIgLSBBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIGxldmVsIHlvdSB3aXNoIHRvIGRpc3BsYXkuIFBvc3NpYmxlIHZhbHVlcyBhcmUgOiA8aT5wbGF5ZXIsIG1lZGlhZmlsZTwvaT48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGFsaWFzPSIiIC0gQWxpYXMgb2YgdGhlIGl0ZW0geW91IHdpc2ggdG8gZGlzcGxheS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNob3dkZWZhdWx0PSIiIC0gU2V0IHRvICJ0cnVlIiBpZiB5b3Ugd2lzaCB0byBkaXNwbGF5IHRoZSBkZWZhdWx0IGVsZW1lbnQuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBwYXJlbnQ9IiIgLSBJZiB5b3Ugd2lzaCB0byBsaW1pdCB0aGUgZGlzcGxheWVkIGVsZW1lbnRzIHRvIHRob3NlIHdobyBiZWxvbmcgdG8gYSBzcGVjaWZpYyBwYXJlbnQsIGVudGVyIHRoZSBwYXJlbnQgYWxpYXMgaGVyZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxpbWl0PSIwIiAtIExpbWl0IHRoZSBudW1iZXIgb2YgaXRlbSByZXR1cm5lZCBieSB0aGUgcXVlcnkgKDAgPSBubyBsaW1pdCk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG5icGVycGFnZT0iMCIgLSBTZXQgdGhlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gb3JkZXJieT0iMCIgLSBZb3UgY2FuIHNldCB0byAibW9kaWZpZWQiLCAiY3JlYXRlZCIgb3IgdGhlIG5hbWUgb2YgYSBmaWVsZCB0byBvcmRlciBpdGVtcyBpbiB0aGlzIHdheS4gQW55IG90aGVyIHZhbHVlIHdpbGwgb3JkZXIgd2l0aCB0aGUgaXRlbSBvcmRlci48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRldGFpbHBhZ2U9IiIgLSBTcGVjaWZ5IHRoZSBhbGlhcyBvZiB0aGUgcGFnZSBpbiB3aGljaCBsaW5rcyB0byBjaGlsZCBlbGVtZW50cyBzaG91bGQgYmUgc2VudCAoaWYgbm9uZSBpcyBzcGVjaWZpZWQsIGN1cnJlbnQgcGFnZSBpcyB1c2VkKTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmFuZG9tPSIwIiAtIFNldCB0byBhIG51bWJlciB0byBzaG93IGEgbnVtYmVyIG9mIHJhbmRvbSBlbGVtZW50cyBmcm9tIHlvdXIgcXVlcnkuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsaXN0dGVtcGxhdGU9IiIgLSBTcGVjaWZ5IHRoZSB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UgZm9yIHRoZSBsaXN0IHZpZXcuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBmaW5hbHRlbXBsYXRlPSIiIC0gU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgZGV0YWlsIHZpZXcgb2YgdGhlIGZpbmFsIGxldmVsLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9yY2VsaXN0PSIwIiAtIFNldCB0byAxIGlmIHlvdSB3aXNoIHRvIGRpc3BsYXkgYSBsaXN0IHZpZXcgZXZlbiB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGVsZW1lbnQuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBpbmxpbmU9IjAiIC0gTWFrZXMgdGhlIGxpbmtzIGlubGluZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNlYXJjaG1vZGU9ImFkdmFuY2VkIiAtIEZvciB1c2Ugd2l0aCB0aGUgInNlYXJjaCIgYWN0aW9uLiBTZXQgdG8gInNpbXBsZSIgdG8gc2VhcmNoIGluIGFsbCB0ZXh0IGZpZWxkcywgYW5kICJhZHZhbmNlZCIgdG8gc2VhcmNoIGluIHNwZWNpZmljIGZpZWxkcy48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHF1ZXJ5PSIwIiAtIEZvciBvcHRpb25hbCB1c2Ugd2l0aCB0aGUgImRlZmF1bHQiIGFjdGlvbi4gU3BlY2lmaWVzIHRoZSBpZCBvZiB0aGUgcXVlcnkgdG8gdXNlLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdG9hY3Rpb249IiIgLSBGb3IgdXNlIHdpdGggdGhlICJsaW5rIiBhY3Rpb24uIFNldHMgdGhlIGFjdGlvbiB0byB3aGljaCB0aGUgbGluayBzaG91bGQgcmVkaXJlY3QuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBNYXJ0aW4gV29vZHMgJmx0O213Y291cnRlbmF5QHlhaG9vLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjM8YnIgLz4=]]></about>
	<description><![CDATA[Player front end]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addfiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYoIWlzc2V0KCRfRklMRVMpIHx8ICFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKXsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCkpOwp9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiRyZXNpemUgPSBpc3NldCgkcGFyYW1zWydzaXplJ10pPyRwYXJhbXNbJ3NpemUnXTpmYWxzZTsKJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7CiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOwoKJGN1cmRpciA9IChpc3NldCgkcGFyYW1zWydjdXJkaXInXSkgPyAkcGFyYW1zWydjdXJkaXInXS4nLycgOiAnJyk7CiRzdGFydGRpciA9IChpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSA/ICRwYXJhbXNbJ3N0YXJ0ZGlyJ10uJy8nIDogJycpOwokZGVzdGluYXRpb24gPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkc3RhcnRkaXIuJGN1cmRpcik7CgokYWxsb3dlZGV4dCA9IGZhbHNlOwppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsKCiRlcnJvcnMgPSAiIjsKJHppcGZpZWxkID0gJGlkLid1cGxvYWR6aXBmaWxlJzsKCmlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHppcGZpbGUiXSkpewoJCgkkZGlyID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIpOwoJaWYoJHJlc2l6ZSAmJiAhaXNfYXJyYXkoJHJlc2l6ZSkpCSRyZXNpemUgPSBleHBsb2RlKCJ4IiwkcmVzaXplKTsKCQoJaWYoaXNzZXQoJF9GSUxFU1skemlwZmllbGRdKSAmJiBpc3NldCgkX0ZJTEVTWyR6aXBmaWVsZF1bJ25hbWUnXSkgJiYgJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10gIT0gIiIpewoJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN0cnJjaHIoJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10sICIuIikpOwoJCSR6YSA9IG5ldyBaaXBBcmNoaXZlKCk7CgkJaWYoc3RydG9sb3dlcigkZXh0ZW5zaW9uKSA9PSAnLnppcCcgJiYgJHphLT5vcGVuKCRfRklMRVNbJHppcGZpZWxkXVsndG1wX25hbWUnXSkpIHsKCQkJJGkgPSAwOwoJCQl3aGlsZSgkaSA8ICR6YS0+bnVtRmlsZXMpIHsKCQkJCSRmaWxlc3RhdHMgPSAkemEtPnN0YXRJbmRleCgkaSk7CgkJCQkkZmlsZW5hbWUgPSAkZmlsZXN0YXRzWyduYW1lJ107CgkJCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksMSkpOwoJCQkJaWYoICRleHRlbnNpb24gIT0gIiIgJiYgKCAhJGFsbG93ZWRleHQgfHwgaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICkgKXsKCQkJCQkkZmlsZW5hbWUgPSAkdGhpcy0+dXBsb2FkX2NoZWNrZmlsZW5hbWUoJGZpbGVuYW1lLCRkaXIpOwoJCQkJCSRmcCA9IGZvcGVuKCRkaXIuJGZpbGVuYW1lLCAidyIpOwoJCQkJCWlmKGZ3cml0ZSgkZnAsJHphLT5nZXRGcm9tSW5kZXgoJGkpKSl7CgkJCQkJCWZjbG9zZSgkZnApOwoJCQkJCQljaG1vZCgkZGlyLiRmaWxlbmFtZSwgMDc3Nyk7CgkJCQkJCWlmKCRyZXNpemUgJiYgY291bnQoJHJlc2l6ZSkgPT0gMikgJHRoaXMtPnBsUmVzaXplKCRkaXIuJGZpbGVuYW1lLCAnJywgJHJlc2l6ZVswXSwgJHJlc2l6ZVsxXSx0cnVlLGlzc2V0KCRwYXJhbXNbJ2Nyb3AnXSkpOwoJCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKHN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iLiRmaWxlbmFtZSksICRwYXJhbXNbJ3RhYmxlbmFtZSddLCAkaXRlbWlkLCAkcGFyYW1zWydmaWVsZCddLCAkdGh1bWJzaXplLCBpc3NldCgkcGFyYW1zWydjcm9wdGh1bWInXSkpOwoJCQkJCX1lbHNlewoJCQkJCQlmY2xvc2UoJGZwKTsKCQkJCQkJJGVycm9ycyA9ICc8bGk+Jy4kZmlsZW5hbWUuJzogJy5sYW5nKCdmaWxlbm90dXBsb2FkZWQnKS4nPC9saT4nOwoJCQkJCX0KCQkJCX1lbHNlewoJCQkJCSRlcnJvcnMgPSAnPGxpPicuJGZpbGVuYW1lLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX3dyb25nZmlsZXR5cGUnKS4nPC9saT4nOwoJCQkJfQoJCQkJJGkrKzsKCQkJfQoJCX1lbHNlewoJCQkkZXJyb3JzID0gJzxsaT4nLiRfRklMRVNbJHppcGZpZWxkXVsnbmFtZSddLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRhcmNoaXZlJykuJzwvbGk+JzsKCQl9Cgl9CgkKfWVsc2V7CgkKCWZvcmVhY2goJF9GSUxFUyBhcyAkZmllbGRuYW1lPT4kZmlsZSl7CgkJaWYoJGZpZWxkbmFtZSAhPSAkemlwZmllbGQgJiYgaXNzZXQoJGZpbGVbJ25hbWUnXSkgJiYgJGZpbGVbJ25hbWUnXSAhPSAiIil7CgkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlWyduYW1lJ10sICIuIiksMSkpOwoJCQlpZiggISRhbGxvd2VkZXh0IHx8IGluX2FycmF5KCRleHRlbnNpb24sICRhbGxvd2VkZXh0KSApewoJCQkJaWYoICRmaWxlcGF0aCA9ICR0aGlzLT5wbFVwbG9hZEZpbGUoJGZpbGUsICRkZXN0aW5hdGlvbiwgJHJlc2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgKXsKCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKCRmaWxlcGF0aCwgJHBhcmFtc1sndGFibGVuYW1lJ10sICRpdGVtaWQsICRwYXJhbXNbJ2ZpZWxkJ10sICR0aHVtYnNpemUsIGlzc2V0KCRwYXJhbXNbJ2Nyb3B0aHVtYiddKSk7CgkJCQl9ZWxzZXsKCQkJCQkkZXJyb3JzIC49ICI8bGk+Ii4kZmlsZVsnbmFtZSddLic6ICcubGFuZygnZmlsZW5vdHVwbG9hZGVkJykuIjwvbGk+IjsKCQkJCX0KCQkJfWVsc2V7CgkJCQkkZXJyb3JzID0gJzxsaT4nLiRmaWxlWyduYW1lJ10uJzogJy4kdGhpcy0+TGFuZygnZXJyb3Jfd3JvbmdmaWxldHlwZScpLic8L2xpPic7CgkJCX0KCQl9Cgl9CgkKfQoKJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJG5ld3BhcmFtc1snYWN0aXZlX3RhYiddID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOwppZigkZXJyb3JzICE9ICIiKQkkbmV3cGFyYW1zWydtb2R1bGVfbWVzc2FnZSddID0gJzx1bD4nLiRlcnJvcnMuJzwvdWw+JzsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLiRwYXJhbXNbJ3ByZWZpeCddLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMgKTsJCQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.adminquery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmVjaG8gIjxoMj4iLiR0aGlzLT5MYW5nKCJjcmVhdGVxdWVyeSIpLiI8L2gyPjxici8+IjsKCmlmKCFpc3NldCgkcGFyYW1zWyJ3aGF0Il0pKXsKCQoJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsKCSRsZXZlbG9wdGlvbnMgPSBhcnJheSgpOwoJZm9yZWFjaCgkbGV2ZWxhcnJheSBhcyAkb25lKQkkbGV2ZWxvcHRpb25zWyRvbmVdID0gJG9uZTsKCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoInByb21wdF9xdWVyeSIpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImFkbWlucXVlcnkiLCAkcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIndoYXQiLCRsZXZlbG9wdGlvbnMpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHF1ZXJ5Il0pKXsKCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCSR3aGF0ID0gJHBhcmFtc1sid2hhdCJdOwoJJG11bHRpcGxlbGlzdGZpZWxkcyA9IGFycmF5KCk7CgoKCS8vIHdlIHBhcnNlIHRoZSBrZXl3b3JkcwoJJHdoZXJlID0gJHRoaXMtPmdldFdoZXJlRnJvbVBhcmFtcygkcGFyYW1zKTsKCQoJbGlzdCgkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcykgPSAkdGhpcy0+YnVpbGRXaGVyZSgkd2hlcmUsICR3aGF0KTsKCSRjdXN0b21vcmRlciA9IChpc3NldCgkcGFyYW1zWyJvcmRlciJdKSAmJiAkcGFyYW1zWyJvcmRlciJdICE9ICIiKT8kcGFyYW1zWyJvcmRlciJdLiIgIi4kcGFyYW1zWyJvcmRlcl90eXBlIl06IiI7CgkKCSR0bXBpZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJzYXZlZF9xdWVyaWVzX3NlcSIpOwoJJG5hbWUgPSBpc3NldCgkcGFyYW1zWyJxdWVyeW5hbWUiXSk/YWRkc2xhc2hlcygkcGFyYW1zWyJxdWVyeW5hbWUiXSk6IiI7CgkKCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXMgU0VUIGlkPT8sIG5hbWU9Pywgd2hhdD0/LCB3aGVyZWNsYXVzZT0/LCB3aGVyZXZhbHVlcz0/LCBxdWVyeW9yZGVyPT8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRtcGlkLCAkbmFtZSwgJHdoYXQsICR3aGVyZWNsYXVzZSwgc2VyaWFsaXplKCR3aGVyZXZhbHVlcyksICRjdXN0b21vcmRlcikpOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4icXVlcmllcyIsIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSkpOwoKfWVsc2V7Cgkkd2hhdCA9ICRwYXJhbXNbIndoYXQiXTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJhZG1pbnF1ZXJ5IiwgJHJldHVybmlkKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIndoYXQiLCAkd2hhdCk7CgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJxdWVyeW5hbWUiKS4iOiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJxdWVyeW5hbWUiLCIiLDMwKS4iPC9wPiI7CgkkdGhpcy0+Y3JlYXRlRmllbGRGb3JtKCR3aGF0LCAkaWQsIGZhbHNlKTsKCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdHF1ZXJ5IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQkJCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.assignfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCmlmKCFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgpKTsNCg0KJGZpbGVwYXRoID0gaXNzZXQoJHBhcmFtc1snZmlsZXBhdGgnXSk/JHBhcmFtc1snZmlsZXBhdGgnXTonJzsNCmlmKCRmaWxlcGF0aCAhPSAnJyAmJiBpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSAmJiAkcGFyYW1zWydzdGFydGRpciddICE9ICcvJykJJGZpbGVwYXRoID0gJHBhcmFtc1snc3RhcnRkaXInXS4nLycuJGZpbGVwYXRoOw0KJGZpbGVwYXRoID0gc3RyX3JlcGxhY2UoJy8vJywnLycsJGZpbGVwYXRoKTsNCiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOw0KJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7DQoNCiR0aGlzLT5wbEFzc2lnbkZpbGUoJGZpbGVwYXRoLCAkcGFyYW1zWyd0YWJsZW5hbWUnXSwgJGl0ZW1pZCwgJHBhcmFtc1snZmllbGQnXSwgJHRodW1ic2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKTsNCg0KJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpICRuZXdwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0Jy4kcGFyYW1zWydwcmVmaXgnXSwgJHJldHVybmlkLCAkbmV3cGFyYW1zICk7CQkNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.browsefiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMjIGFjdGlvbi5Ccm93c2VmaWxlcy5waHANCiMjIEJ5OiBQaWVycmUtTHVjIEdlcm1haW4NCiMjIFBBUkFNUzoNCiMjICRwYXJhbXNbJ21vZGUnXSA6IGltYWdlcyB8fCBmaWxlcw0KIyMgJHBhcmFtc1snZXh0ZW5zaW9ucyddIDogYXJyYXkgb2Ygc2hvd24gZmlsZSBleHRlbnNpb25zDQojIyAkcGFyYW1zWydzdGFydGRpciddIDogdGhlIGZvbGRlciB0byBzdGFydCBhdCAoIHVwbG9hZHMvIFtzdGFydGRpcl0gLyApDQojIyAkcGFyYW1zWyd0YWJsZW5hbWUnXSA6IHRoZSBuYW1lIG9mIHRoZSBkYiB0YWJsZQ0KIyMgJHBhcmFtc1sncHJlZml4J10gOiB0aGUgdmFyaWFibGUgcHJlZml4DQojIyAkcGFyYW1zW3ByZWZpeC4naWQnXSA6IHRoZSBpZCBvZiB0aGUgaXRlbSB0byB3aGljaCB0aGUgaW1hZ2Ugd2lsbCBiZSBhc3NpZ25lZCAodmFsdWUgaXMgbm90IHVzZWQsIGJ1dCByZXR1cm5lZCBhdCB0aGUgZW5kKQ0KIyMgJHBhcmFtc1snZmllbGQnXSA6IG9ubHkgYSBwYXNzLXRocm91Z2ggdG8gdGhlIGFzc2lnbiBhY3Rpb24NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgUEFSQU1TIEFORCBDT05GSUdTLi4uDQojDQppZiAoIWlzc2V0KCRwYXJhbXNbJ21vZGUnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWydwcmVmaXgnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWyd0YWJsZW5hbWUnXSkgKSBleGl0Ow0KDQokaGlkZXRodW1icyA9IHRydWU7IC8vIHdpbGwgaGlkZSBJbWFnZSBNYW5hZ2VyIHRodW1ibmFpbHMsIGJ1dCBhbHNvIGhpZGUgYWxsIGZpbGVzIHRoYXQgc3RhcnQgd2l0aCAidGh1bWJfIi4uLg0KJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoNCiMjIGRlZmluaW5nIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnM6DQokbWVkaWFleHQgPSBhcnJheSgnc3dmJywnZmx2JywnanBlZycsJ2pwZycsJ3BuZycsJ2dpZicsJ21wMycpOw0KJGRvY2V4dCA9IGFycmF5KCdkb2MnLCdkb2N4JywneGxzJywneGxzeCcsJ3J0ZicsJ3R4dCcsJ3BkZicpOw0KDQppZigkcGFyYW1zWydtb2RlJ10gPT0gJ2ltYWdlcycgfHwgJHBhcmFtc1snbW9kZSddID09ICdpbWFnZScpIHsNCgkkbW9kZSA9ICdpbWFnZSc7DQoJJGFsbG93ZWRleHQgPSAkbWVkaWFleHQ7DQp9ZWxzZXsNCgkkbW9kZSA9ICdvdGhlcic7DQoJJGFsbG93ZWRleHQgPSBhcnJheV9tZXJnZSgkbWVkaWFleHQsJGRvY2V4dCk7DQp9DQppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsNCmlmKCRtb2RlID09ICdpbWFnZScgJiYgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzaG93dGh1bWJuYWlscyIsdHJ1ZSkpCSRtb2RlID0gJ290aGVyJzsNCg0KJGFkZGZpbGVzID0gKCBpc3NldCgkcGFyYW1zWydhZGRmaWxlcyddKSAmJiAkcGFyYW1zWydhZGRmaWxlcyddICk7DQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgU09NRSBGVU5DVElPTlMuLi4NCiMNCg0KZnVuY3Rpb24gc3RybGltaXQoJHN0cmluZyl7DQoJLy8gZnVuY3Rpb24gdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZW5hbWVzDQoJaWYgKHN1YnN0cigkc3RyaW5nLDAsMjEpID09ICRzdHJpbmcpew0KCQlyZXR1cm4gJHN0cmluZzsNCgl9ZWxzZXsNCgkJcmV0dXJuIHN1YnN0cigkc3RyaW5nLDAsMTkpLicuLi4nOw0KCX0NCn0NCmZ1bmN0aW9uIGdldF90aHVtYm5haWwoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciwgJHJldHVybmFycmF5PWZhbHNlKXsNCgkkdGh1bWJwYXRoID0gJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZTsNCgkkdGh1bWJuYW1lID0gJGZpbGVuYW1lOw0KCWlmIChmaWxlX2V4aXN0cygkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RodW1iXycuJGZpbGVuYW1lKSkgew0KCQkkdGh1bWJuYW1lID0gJ3RodW1iXycuJGZpbGVuYW1lOw0KCX1lbHNlaWYoZmlsZV9leGlzdHMoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHRodW1iXycuJGZpbGVuYW1lKSl7DQoJCSR0aHVtYm5hbWUgPSAncGx0aHVtYl8nLiRmaWxlbmFtZTsNCgl9DQoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHRodW1ibmFtZSk7DQoJaWYoISRpbWdpbmYgfHwgIWlzc2V0KCRpbWdpbmZbMV0pKQlyZXR1cm4gZmFsc2U7DQoJbGlzdCgkd2lkdGgsICRoZWlnaHQpID0gJGltZ2luZjsNCgkkdGh1bWJuYWlscmF0aW8gPSBtYXgoJHdpZHRoIC8gMTA2LCRoZWlnaHQgLyAxMDYpOw0KCWlmICgkdGh1bWJuYWlscmF0aW8gPCAxKSAkdGh1bWJuYWlscmF0aW8gPSAxOw0KCSR0aGVpZ2h0ID0gZmxvb3IoJGhlaWdodCAvICR0aHVtYm5haWxyYXRpbyk7DQoJJHR3aWR0aCA9IGZsb29yKCR3aWR0aCAvICR0aHVtYm5haWxyYXRpbyk7DQoJaWYoJHJldHVybmFycmF5KXsNCgkJcmV0dXJuIGFycmF5KCRiYXNldXJsLicvJy4kdGh1bWJuYW1lLCAkdHdpZHRoLCAkdGhlaWdodCk7DQoJfWVsc2V7DQoJCXJldHVybiAnPGltZyBib3JkZXI9MCBzcmM9IicuJGJhc2V1cmwuJy8nLiR0aHVtYm5hbWUuJyIgd2lkdGg9IicuJHR3aWR0aC4nIiBoZWlnaHQ9IicuJHRoZWlnaHQuJyIgLz4nOw0KCX0NCn0NCmZ1bmN0aW9uIGltYWdlbW9kZV9idWlsZGxpbmtjb250ZW50KCRiYXNldXJsLCAkZmlsZW5hbWUsICRkaXI9Jycpew0KCS8vIGNyZWF0ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGxpbmsgaW4gaW1hZ2UgbW9kZQ0KCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlbmFtZSwgIi4iKSwgMSkpOw0KCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdqcGVnJywnanBnJywncG5nJywnZ2lmJykpKXsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyKTsNCgkJcmV0dXJuICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4nLiR0aGV0aHVtYi4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KCX0NCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2ZsdicsJ3N3ZicsJ3dtdicsJ21vdicpKSl7DQoJCSRwaWMgPSAkdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9maWxldHlwZXMvZm1lZGlhLmdpZiIpOw0KCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpew0KCQkkcGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL2ZwYWludC5naWYiKTsNCgl9ZWxzZXsNCgkJJHBpYyA9ICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiIpOw0KCX0NCglyZXR1cm4gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPicuJHBpYy4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KfQ0KDQpmdW5jdGlvbiBtYWtlRGlyT2JqKCRmaWxlbmFtZSwkZGlyLCRtb2R1bGUsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCl7DQoJZ2xvYmFsICRnQ21zOw0KCSR0aGVhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCSRwYXJlbnQgPSAoJGZpbGVuYW1lID09ICcuLicpOw0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSB0cnVlOw0KCSRlbXB0eSA9IGFycmF5KCJleHQiLCJzaXplIiwiaW1hZ2VzaXplIiwiZGVsZXRlbGluayIsIm1vZGlmaWVkIiwib3duZXIiLCJwZXJtaXNzaW9ucyIpOw0KCWZvcmVhY2goJGVtcHR5IGFzICRmaWVsZCkJJG9iai0+JGZpZWxkID0gJyc7DQoJJG9iai0+ZmlsZW5hbWUgPSAkZmlsZW5hbWU7DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzLyIuKCRwYXJlbnQ/InVwIjoiIikuImZvbGRlci5naWYiKTsNCglpZigkcGFyZW50KXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJJG9iai0+dGhlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICcuLicsICRuZXdwYXJhbXMpOw0KCX1lbHNlew0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCSRvYmotPnRoZWxpbmsgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPi4nLiRmaWxlbmFtZS4nPC9hPicuJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJGZpbGVuYW1lLCAkbmV3cGFyYW1zKTsNCgl9DQoJcmV0dXJuICRvYmo7DQp9DQpmdW5jdGlvbiBtYWtlRmlsZU9iaigkZmlsZW5hbWUsJGRpciwkbW9kdWxlLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKXsNCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJJGluZm8gPSAkbW9kdWxlLT5wbEdldEZpbGVJbmZvKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpOw0KCSRleHRlbnNpb24gPSAkaW5mb1snZXh0J107DQoJJG9iaiA9IG5ldyBTdGRDbGFzcygpOw0KCSRvYmotPmZvbGRlciA9IGZhbHNlOw0KCSRvYmotPmZpbGVuYW1lID0gJGZpbGVuYW1lOw0KCSRvYmotPmV4dCA9ICRleHRlbnNpb247DQoJJG9iai0+c2l6ZSA9ICc8YSBzdHlsZT0iZGlzcGxheTpub25lOyI+Jy4kaW5mb1sic2l6ZSJdLic8L2E+Jy4kaW5mb1sic2l6ZV93Zm9ybWF0Il07DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgkaW5mb1siZmlsZWljb24iXSk7DQoJJG9iai0+aW1hZ2VzaXplID0gJyc7DQoJJG9iai0+dmlld2xpbmsgPSAnJzsNCglpZigkaW5mb1siaW1hZ2VzaXplIl0pew0KCQkkb2JqLT5pbWFnZXNpemUgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPicuJGluZm9bIndpZHRoIl0uJzwvYT4nLiRpbmZvWyJpbWFnZXNpemUiXTsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyLCB0cnVlKTsNCgkJaWYoJHRoZXRodW1iKQkkb2JqLT52aWV3bGluayA9ICcgPGEgaHJlZj0iJy4kdGhldGh1bWJbMF0uJyIgdGl0bGU9IicuJG1vZHVsZS0+TGFuZygiaW5zdGFudHByZXZpZXciKS4nIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0icmV0dXJuIGRpc3BsYXl0aHVtYih0aGlzLFwnJy4kdGhldGh1bWJbMF0uJ1wnLCcuJHRoZXRodW1iWzFdLicsJy4kdGhldGh1bWJbMl0uJyk7Ij4nLiR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS92aWV3LmdpZiIpLic8L2E+JzsNCgl9DQoJJG9iai0+ZGVsZXRlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2RlbGV0ZWZpbGUnPT4kZmlsZW5hbWUpKSkuJG9iai0+dmlld2xpbms7DQoJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdmaWxlbmFtZSc9PiRmaWxlbmFtZSwgJ2ZpbGVwYXRoJyA9PiAkY3VyZGlyLicvJy4kZmlsZW5hbWUpKTsNCgkkb2JqLT50aGVsaW5rID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdhc3NpZ25maWxlJywgJHJldHVybmlkLCAkZmlsZW5hbWUsICRuZXdwYXJhbXMpOw0KCSRvYmotPm1vZGlmaWVkID0gJzxhIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4nLiRpbmZvWyJmaWxlbXRpbWUiXS4nPC9hPicuJGluZm9bIm1vZGlmaWVkIl07DQoJJG9iai0+b3duZXIgPSAkaW5mb1sib3duZXIiXTsNCgkkb2JqLT5wZXJtaXNzaW9ucyA9ICRpbmZvWyJwZXJtaXNzaW9ucyJdOw0KCXJldHVybiAkb2JqOw0KfQ0KDQoNCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgQ1VSUkVOVCBQQVRILi4uDQojDQoNCiRzdGFydGRpciA9IGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pPyRwYXJhbXNbJ3N0YXJ0ZGlyJ106Jyc7DQppZigkc3RhcnRkaXIgIT0gJycgJiYgc3Vic3RyKCRzdGFydGRpciwwLDEpICE9ICcvJyAmJiBzdWJzdHIoJHN0YXJ0ZGlyLDAsMSkgIT0gJ1xcJykgJHN0YXJ0ZGlyID0gRElSRUNUT1JZX1NFUEFSQVRPUi4kc3RhcnRkaXI7DQppZighZmlsZV9leGlzdHMoJGdDbXMtPmNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHN0YXJ0ZGlyKSkgQG1rZGlyKCRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpcik7DQoNCiRwYXJlbnRkaXIgPSAoaXNzZXQoJHBhcmFtc1sncGFyZW50ZGlyJ10pID8gJHBhcmFtc1sncGFyZW50ZGlyJ10gOiAnJyk7DQokY3VyZGlyID0gKGlzc2V0KCRwYXJhbXNbJ2N1cmRpciddKSA/ICRwYXJhbXNbJ2N1cmRpciddIDogJycpOw0KJGRpciA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpci4kY3VyZGlyOw0KaWYoIWlzX2RpcigkZGlyKSl7DQoJJGRpciA9ICRnQ21zLT5jb25maWdbInVwbG9hZHNfcGF0aCJdOw0KCSRjdXJkaXIgPSAnJzsNCgkkcGFyZW50ZGlyID0gJyc7DQp9DQokYmFzZXVybCA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfdXJsJ10uJHN0YXJ0ZGlyLiRjdXJkaXI7DQoNCmlmIChpc3NldCgkcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkvLyBXZSdyZSBkZWxldGluZyBhIGZpbGUNCglpZihmaWxlX2V4aXN0cygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pICYmIHVubGluaygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfZGVsZXRlZCIpKTsNCgl9DQp9DQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFBSRVBBUklORyBISURERU4gRklFTERTIEZPUiBVUExPQUQNCiMNCg0KJGhpZGRlbiA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2N1cmRpcicsJGN1cmRpcikuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZmllbGQnLCRwYXJhbXNbJ2ZpZWxkJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYmxlbmFtZScsJHBhcmFtc1sndGFibGVuYW1lJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ21vZGUnLCRwYXJhbXNbJ21vZGUnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwncHJlZml4JywkcGFyYW1zWydwcmVmaXgnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwkcGFyYW1zWydwcmVmaXgnXS4naWQnLCRwYXJhbXNbJHBhcmFtc1sncHJlZml4J10uJ2lkJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snZXh0ZW5zaW9ucyddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdleHRlbnNpb25zJywkcGFyYW1zWydleHRlbnNpb25zJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc3RhcnRkaXInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnc3RhcnRkaXInLCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc2l6ZSddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdzaXplJywkcGFyYW1zWydzaXplJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1sndGh1bWInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGh1bWInLCRwYXJhbXNbJ3RodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjcm9wJywkcGFyYW1zWydjcm9wJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKSAkaGlkZGVuIC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2Nyb3B0aHVtYicsJHBhcmFtc1snY3JvcHRodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWRkZmlsZXMnXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnYWRkZmlsZXMnLCRwYXJhbXNbJ2FkZGZpbGVzJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdhY3RpdmVfdGFiJywkcGFyYW1zWydhY3RpdmVfdGFiJ10pOw0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgRklMRVMgJiBGT0xERVJTDQojDQoNCiRkaCAgPSBvcGVuZGlyKCRkaXIpOw0KJGZvbGRlcnMgPSBhcnJheSgpOw0KJGZpbGVzID0gYXJyYXkoKTsNCiR1cGZvbGRlciA9IGZhbHNlOw0Kd2hpbGUgKCRmaWxlbmFtZSA9IHJlYWRkaXIoJGRoKSl7DQoJaWYoaXNfZGlyKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpICYmICRmaWxlbmFtZSE9Jy4nKXsNCgkJCWlmICgkZmlsZW5hbWU9PScuLicpIHsNCgkJCQlpZiAoJGN1cmRpciAhPSAnJykJCSR1cGZvbGRlciA9IHRydWU7DQoJCQl9ZWxzZXsNCgkJCQkkZm9sZGVyc1tdID0gJGZpbGVuYW1lOw0KCQkJfQ0KCX1lbHNlew0KCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksIDEpKTsNCgkJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICYmICghJGhpZGV0aHVtYnMgfHwgc3Vic3RyKCRmaWxlbmFtZSwwLDYpICE9ICd0aHVtYl8nKSAmJiBzdWJzdHIoJGZpbGVuYW1lLDAsOCkgIT0gJ3BsdGh1bWJfJyl7DQoJCQkkZmlsZXNbXSA9ICRmaWxlbmFtZTsNCgkJfQ0KCX0NCn0NCmlmIChpc3NldCgkZGgpKQljbG9zZWRpcigkZGgpOw0Kc29ydCgkZm9sZGVycyk7DQpzb3J0KCRmaWxlcyk7DQoNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBESVNQTEFZSU5HLi4uDQojDQoNCmVjaG8gJzxkaXYgaWQ9ImN0bG1tX3N1Ym1pdG1lc3NhZ2UiIGNsYXNzPSJwYWdlbWNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4nLiR0aGlzLT5MYW5nKCJzdWJtaXR0aW5nX2ZpbGUiKS4nPC9kaXY+JzsNCg0KaWYoJG1vZGUgPT0gJ2ltYWdlJyl7DQoJLy8gaW1hZ2UgbW9kZSAod2l0aCB0aHVtYm5haWxzKSAtIG5vIHRlbXBsYXRlDQoJZWNobyAnPGgyPicuJHRoaXMtPkxhbmcoJ2Jyb3dzZWZpbGVzdGl0bGUnKS4nPC9oMj4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Nob3dpbmdkaXInKS4nIDogJy4kZGlyLic8L3A+JzsNCgllY2hvICc8ZGl2IGlkPSJmaWxlc2VsZWN0IiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0icGFkZGluZzogNHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2OyBiYWNrZ3JvdW5kOiAjRkZGRkZGOyBvdmVyZmxvdzogYXV0bzsiPjxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+JzsNCgkkZGl2b3B0aW9uID0gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxNjVweDsgaGVpZ2h0OiAxODBweDsiPjxici8+JzsNCgkkY2xvc2VkaXYgPSAnPC9kaXY+DQonOw0KCWlmKCR1cGZvbGRlcil7DQoJCWVjaG8gJGRpdm9wdGlvbjsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL3VwZm9sZGVyLmdpZiIpLic8YnIvPicuJHRoaXMtPkxhbmcoJ3BhcmVudGRpcicpLCAkbmV3cGFyYW1zKTsNCgkJZWNobyAkY2xvc2VkaXY7DQoJfQ0KCWZvcmVhY2goJGZvbGRlcnMgYXMgJGZpbGVuYW1lKXsNCgkJZWNobyAkZGl2b3B0aW9uOw0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48aW1nIGJvcmRlcj0wIHNyYz0iLi4vbGliL2ZpbGVtYW5hZ2VyL0ltYWdlTWFuYWdlci9pbWcvZm9sZGVyLmdpZiIgLz48L2Rpdj4nLiRmaWxlbmFtZSwgJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCglmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZW5hbWUpew0KCQllY2hvICRkaXZvcHRpb247DQoJCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnZmlsZW5hbWUnPT4kZmlsZW5hbWUsICdmaWxlcGF0aCcgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYXNzaWduZmlsZScsICRyZXR1cm5pZCwgaW1hZ2Vtb2RlX2J1aWxkbGlua2NvbnRlbnQoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciksICRuZXdwYXJhbXMpLic8YnIvPic7DQoJCSRpbWdpbmYgPSBnZXRpbWFnZXNpemUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZSk7DQoJCWlmKCRpbWdpbmYgJiYgaXNzZXQoJGltZ2luZlsxXSkpCWVjaG8gJygnLiRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV0uJykgJzsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdkZWxldGVmaWxlJz0+JGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCgllY2hvICc8L2Rpdj48L2Rpdj4nOw0KCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZGRmaWxlcycsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpOw0KCWVjaG8gJzxoMz4nLmxhbmcoJ3VwbG9hZGZpbGUnKS4nOjwvaDM+PGRpdj4nOw0KCWlmKCRhZGRmaWxlcyl7DQoJCWVjaG8gJzxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+PGxlZ2VuZD48Yj4nLiR0aGlzLT5MYW5nKCJ1cGxvYWR6aXBmaWxlIikuJzwvYj48L2xlZ2VuZD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCJ6aXBmaWxlbm90aWNlIikuJzwvcD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWR6aXBmaWxlJykuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdHppcGZpbGUnLGxhbmcoJ3NlbmQnKSkuJzwvcD48L2ZpZWxkc2V0Pic7DQoJfQ0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpLic8L3A+JzsNCglpZihpc3NldCgkcGFyYW1zWyJzaXplIl0pKQllY2hvICc8cD4oJy4kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKS4nKTwvcD4nOw0KCWVjaG8gJzxkaXYgaWQ9ImZpbGVpbnB1dHMiPjxwPicuJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZGZpbGUnKS4nPC9wPjwvZGl2Pic7DQoJaWYoJGFkZGZpbGVzKQllY2hvICc8cD48YSBocmVmPSJqYXZhc2NyaXB0OmFkZGZpbGVpbnB1dChcJ2ZpbGVpbnB1dHNcJyx0aGlzKTsiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7Ij4nLiR0aGlzLT5MYW5nKCJhZGRmaWxlaW5wdXQiKS4nPC9hPjwvcD4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpLic8L3A+JzsNCgllY2hvICRoaWRkZW47DQoJZWNobyAnPC9kaXY+JzsJCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCn1lbHNlew0KCS8vIGxpc3QgbW9kZSAobm8gdGh1bWJuYWlscykgLSB1c2VzIGEgdGVtcGxhdGUNCgkNCgkkaW5zdGFudHNlYXJjaCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLGZhbHNlKTsNCgkkaW5zdGFudHNvcnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9pbnN0YW50c29ydCIsZmFsc2UpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJvd3NldGl0bGUiLCR0aGlzLT5MYW5nKCdicm93c2VmaWxlc3RpdGxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigidXBsb2FkdGl0bGUiLGxhbmcoJ3VwbG9hZGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzaG93aW5nZGlyIiwkdGhpcy0+TGFuZygnc2hvd2luZ2RpcicpLicgOiAnLiRkaXIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybXN0YXJ0IiwkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGZpbGVzJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybWVuZCIsJGhpZGRlbi4kdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInJlc2l6ZW5vdGljZSIsaXNzZXQoJHBhcmFtc1sic2l6ZSJdKT8kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKTpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwb3N0bWF4c2l6ZSIsJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNoZmlsZXRhYmxlIiwgIiIsIDEwLCA2NCwgJyBvbmtleXVwPSJjdGxtbV9zZWFyY2godGhpcy52YWx1ZSxcJ2ZpbGVsaXN0X3RhYmxlXCcpOyInKTpmYWxzZSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcHRpdGxlIiwgJHRoaXMtPkxhbmcoInVwbG9hZHppcGZpbGUiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBub3RpY2UiLCAkdGhpcy0+TGFuZygiemlwZmlsZW5vdGljZSIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcGlucHV0IiwgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZHppcGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXR6aXBmaWxlJyxsYW5nKCdzZW5kJykpKTsNCg0KCWlmKCRhZGRmaWxlcyl7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZmlsZWlucHV0IiwnPGRpdiBpZD0iZmlsZWlucHV0cyI+PHA+Jy4kdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwndXBsb2FkZmlsZScpLic8L3A+PC9kaXY+Jyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkZmlsZWlucHV0IiwnPGEgaHJlZj0iamF2YXNjcmlwdDphZGRmaWxlaW5wdXQoXCdmaWxlaW5wdXRzXCcsdGhpcyk7IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyI+Jy4kdGhpcy0+TGFuZygiYWRkZmlsZWlucHV0IikuJzwvYT4nKTsNCgl9ZWxzZXsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWxlaW5wdXQiLCc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWRmaWxlJykuJzwvcD4nKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRmaWxlaW5wdXQiLGZhbHNlKTsNCgl9DQoJDQoJJHNvcnRsaW5rcyA9IGFycmF5KCk7DQoJJG51bWVyaWNfc29ydGxpbmtzID0gYXJyYXkoKTsNCgkkaSA9IDA7DQoJd2hpbGUoJGkgPCAxMCl7DQoJCWlmKCRpbnN0YW50c29ydCl7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ2ZpbGVsaXN0X3RhYmxlXCcsJy4kaS4nLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZiIgYWx0PSJ2Ii8+PC9hPjwvZGl2PiAmbmJzcDsnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsZmFsc2UsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZiIgYWx0PSJeIi8+PC9hPjxici8+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsdHJ1ZSx0cnVlKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYiIGFsdD0idiIvPjwvYT48L2Rpdj4gJm5ic3A7JzsNCgkJfWVsc2V7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICcnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICcnOw0KCQl9DQoJCSRpKys7DQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigic29ydGxpbmtzIiwkc29ydGxpbmtzKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm51bWVyaWNfc29ydGxpbmtzIiwkbnVtZXJpY19zb3J0bGlua3MpOw0KCQ0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSAiIjsNCgkkb2JqLT5maWxlbmFtZSA9ICR0aGlzLT5MYW5nKCJmaWxlbmFtZSIpOw0KCSRvYmotPmV4dCA9ICR0aGlzLT5MYW5nKCJmaWxlZXh0Iik7DQoJJG9iai0+c2l6ZSA9ICR0aGlzLT5MYW5nKCJmaWxlc2l6ZSIpOw0KCSRvYmotPnBpYyA9ICIiOw0KCSRvYmotPmltYWdlc2l6ZSA9ICR0aGlzLT5MYW5nKCJpbWFnZXNpemUiKTsNCgkkb2JqLT5kZWxldGVsaW5rID0gJHRoaXMtPkxhbmcoIkFjdGlvbnMiKTsNCgkkb2JqLT5tb2RpZmllZCA9ICR0aGlzLT5MYW5nKCJsYXN0bW9kIik7DQoJJG9iai0+b3duZXIgPSAkdGhpcy0+TGFuZygiZmlsZW93bmVyIik7DQoJJG9iai0+cGVybWlzc2lvbnMgPSAkdGhpcy0+TGFuZygiZmlsZXBlcm1zIik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJoZWFkZXJzIiwkb2JqKTsNCgkNCgkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCWlmKCR1cGZvbGRlcikJJGl0ZW1saXN0W10gPSBtYWtlRGlyT2JqKCIuLiIsJGRpciwkdGhpcywkcGFyYW1zLCRjdXJkaXIsJHBhcmVudGRpciwkaWQsJHJldHVybmlkKTsNCglmb3JlYWNoKCRmb2xkZXJzIGFzICRmb2xkZXIpCSRpdGVtbGlzdFtdID0gbWFrZURpck9iaigkZm9sZGVyLCRkaXIsJHRoaXMsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCk7DQoJZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGVuYW1lKQkkaXRlbWxpc3RbXSA9IG1ha2VGaWxlT2JqKCRmaWxlbmFtZSwkZGlyLCR0aGlzLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOw0KCQ0KCWVjaG8gJw0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCic7DQoJaWYoJGluc3RhbnRzZWFyY2gpCWVjaG8gJHRoaXMtPmdldEZpbGVDb250ZW50KCJpbnN0YW50c2VhcmNoLmpzIik7DQoJaWYoJGluc3RhbnRzb3J0KQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNvcnQuanMiKTsNCgllY2hvICcNCgk8L3NjcmlwdD4NCic7DQoNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImJyb3dzZWZpbGVzLnRwbCIpOw0KfQ0KDQplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp2YXIgY3RsbW1fZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInLiRpZC4nbW9kdWxlZm9ybV8xIik7DQppZihjdGxtbV9mb3JtKQljdGxtbV9mb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oKSB7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN0bG1tX3N1Ym1pdG1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCn0NCmZ1bmN0aW9uIGRpc3BsYXl0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJZWxlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJdmFyIHRoZWltZyA9IG5ldyBJbWFnZSgpOw0KCXRoZWltZy53aWR0aCA9IHdpZHRoOw0KCXRoZWltZy5oZWlnaHQgPSBoZWlnaHQ7DQoJdGhlaW1nLnNyYyA9IHRodW1icGF0aDsNCgl0aGVpbWcuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOw0KCXRoZWltZy5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IGhpZGV0aHVtYih0aGlzKTsgfTsNCgllbGUucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGVpbWcpOw0KCXJldHVybiBmYWxzZTsNCn0NCmZ1bmN0aW9uIGhpZGV0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJdmFyIHBhcmVudCA9IGVsZS5wYXJlbnROb2RlOw0KCXBhcmVudC5yZW1vdmVDaGlsZChlbGUpOw0KCXZhciB0aGVhcyA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOw0KCXRoZWFzW3RoZWFzLmxlbmd0aC0xXS5zdHlsZS5kaXNwbGF5ID0gImlubGluZSI7DQp9DQoNCnZhciBuYmZpbGVpbnB1dCA9IDE7DQoNCmZ1bmN0aW9uIGFkZGZpbGVpbnB1dChjb250YWluZXJpZCwgYnRuKXsNCgl2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyaWQpOw0KCWlmKCFjb250YWluZXIpIHJldHVybiBmYWxzZTsNCgluYmZpbGVpbnB1dCsrOw0KCXZhciB0bXBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQoJdG1waW5wdXQudHlwZSA9ICJmaWxlIjsNCgl0bXBpbnB1dC5uYW1lID0gIicuJGlkLid1cGxvYWRmaWxlIituYmZpbGVpbnB1dDsNCgl2YXIgdGhlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsNCgl0aGVwLmFwcGVuZENoaWxkKHRtcGlucHV0KTsNCgljb250YWluZXIuYXBwZW5kQ2hpbGQodGhlcCk7DQoJaWYobmJmaWxlaW5wdXQgPT0gMTIpCWJ0bi5zdHlsZS5kaXNwbGF5ID0gZmFsc2U7DQp9DQo8L3NjcmlwdD4nOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIHdlIG5lZWQgdG8ga25vdyB3aGljaCBsZXZlbCBpcyB0aGUgZmluYWwgbGV2ZWwNCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQokZmluYWxsZXZlbCA9ICJtZWRpYWZpbGUiOw0KDQovLyB3ZSBjaGVjayB3aGF0IGxldmVsIHdlJ3JlIHdhdGNoaW5nLi4uIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB3ZSB1c2UgdGhlIGZpbmFsIGxldmVsDQokd2hhdCA9IChpc3NldCgkcGFyYW1zWyJ3aGF0Il0pICYmIGluX2FycmF5KCRwYXJhbXNbIndoYXQiXSwkbGV2ZWxhcnJheSkpPyRwYXJhbXNbIndoYXQiXTokZmluYWxsZXZlbDsNCi8vIHdlIGdpdmUgaXQgYmFjayB0byB0aGUgcGFyYW1zIGZvciBwcmV0dHkgdXJscyBhbmQgcGFnZSB2aWV3DQppZighaXNzZXQoJHBhcmFtc1sid2hhdCJdKSB8fCAkcGFyYW1zWyJ3aGF0Il0gPT0gIiIpCSRwYXJhbXNbIndoYXQiXSA9ICR3aGF0Ow0KJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKTsNCg0KLy8gd2UgcmV0cmlldmUgc29tZSBvdGhlciBwYXJhbWV0ZXJzDQppZigkd2hhdCAhPSAkZmluYWxsZXZlbCl7DQoJJGZvcmNlbGlzdCA9IHRydWU7CQkvLyBBbHdheXMgZGlzcGxheSBhcyBsaXN0IHdoZW4gd2UncmUgbm90IG9uIHRoZSBmaW5hbCBsZXZlbA0KfWVsc2VpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7DQoJJGZvcmNlbGlzdCA9IGZhbHNlOwkJLy8gbmV2ZXIgZGlzcGxheSBhIGxpc3Qgd2hlbiB0aGUgYWxpYXMgaXMgc3BlY2lmaWVkDQp9ZWxzZXsNCgkvLyBkZWZhdWx0IHZhbHVlDQoJJGZvcmNlbGlzdCA9IGlzc2V0KCRwYXJhbXNbImZvcmNlbGlzdCJdKT8kcGFyYW1zWyJmb3JjZWxpc3QiXTokdGhpcy0+R2V0UHJlZmVyZW5jZSgiZm9yY2VfbGlzdCIsZmFsc2UpOw0KfQ0KJG9yZGVyYnkgPSBpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pPyRwYXJhbXNbIm9yZGVyYnkiXTpmYWxzZTsNCiRpbmxpbmUgPSAoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pICYmICRwYXJhbXNbImlubGluZSJdKT90cnVlOmZhbHNlOw0KJGxpbWl0ID0gaXNzZXQoJHBhcmFtc1sibGltaXQiXSk/JHBhcmFtc1sibGltaXQiXTowOw0KJGxpbWl0ID0gKGludCkgJGxpbWl0Ow0KaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pICYmICRwYXJhbXNbIm5icGVycGFnZSJdID4gJGxpbWl0KXsNCgkkbmJwZXJwYWdlID0gKGludCkgJHBhcmFtc1sibmJwZXJwYWdlIl07DQp9ZWxzZXsNCgkvLyBkZWZhdWx0IHBhZ2luYXRpb24NCgkkZGVmYXVsdF9uYnBlcnBhZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkd2hhdC4iX3BhZ2luYXRpb24iLDApOw0KCSRuYnBlcnBhZ2UgPSAoJGRlZmF1bHRfbmJwZXJwYWdlID4gJGxpbWl0KT8kZGVmYXVsdF9uYnBlcnBhZ2U6ZmFsc2U7DQoJJHBhcmFtc1sibmJwZXJwYWdlIl0gPSAkbmJwZXJwYWdlOwkvLyBnaXZlIGl0IGJhY2sgZm9yIGxpbmtzDQp9DQppZigkbmJwZXJwYWdlKQkkbGltaXQgPSAoKChpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSk/JHBhcmFtc1sicGFnZWluZGV4Il06MSktMSkgKiAkbmJwZXJwYWdlKS4iLCIuJG5icGVycGFnZTsNCg0KLy8gd2UgYnVpbGQgdGhlIHF1ZXJ5LiBGaXJzdCwgd2UgY2hlY2sgaWYgd2UncmUgdXNpbmcgYSBzYXZlZCBxdWVyeSA6DQppZihpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSl7DQoJJHF1ZXJ5aWQgPSAoaW50KSAkcGFyYW1zWyJxdWVyeSJdOw0KCWlmKCRxdWVyeSA9ICR0aGlzLT5nZXRfcXVlcmllcyhhcnJheSgiaWQiPT4kcXVlcnlpZCkpKXsNCgkJLy8gd2UgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBkbyB0aGUgcXVlcnkNCgkJJHF1ZXJ5ID0gJHF1ZXJ5WzBdOw0KCQkkd2hhdCA9ICRxdWVyeS0+d2hhdDsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0Ow0KCQkkcGFyZW50bGV2ZWwgPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCwgZmFsc2UpOw0KCQkkd2hlcmVjbGF1c2UgPSAkcXVlcnktPndoZXJlY2xhdXNlOw0KCQkkd2hlcmV2YWx1ZXMgPSAkcXVlcnktPndoZXJldmFsdWVzOw0KCQkkY3VzdG9tb3JkZXIgPSAoJHF1ZXJ5LT5xdWVyeW9yZGVyID09ICIiP2ZhbHNlOiRxdWVyeS0+cXVlcnlvcmRlcik7DQoJfWVsc2VpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWxsb3dfc3FsIixmYWxzZSkpew0KCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7DQoJCSRwYXJlbnRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0LCBmYWxzZSk7DQoJCSR3aGVyZWNsYXVzZSA9ICRwYXJhbXNbInF1ZXJ5Il07IC8vIHF1ZXJ5IHNob3VsZCBiZSBzYW5pdGl6ZWQuLi4NCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJJGN1c3RvbW9yZGVyID0gZmFsc2U7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCwgJHF1ZXJ5KTsNCgl9ZWxzZXsNCgkJJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygiZXJyb3Jfd3JvbmdxdWVyeSIpOw0KCQlpZigkcXVlcnlpZCAhPSAkcXVlcnkgJiYgJG1zZyA9IG15c3FsX2Vycm9yKCkpCQkkbWVzc2FnZSAuPSAiPGJyLz4iLiR0aGlzLT5MYW5nKCJnaXZlbmVycm9yIikuJG1zZzsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkbWVzc2FnZSk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmICRuYnBlcnBhZ2Upew0KCQkvLyB3ZSBuZWVkIHBhZ2luYXRpb24gLSBzbyB3ZSBmaXJzdCByZXRyaWV2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGZpdHRpbmcgdGhlIHF1ZXJ5DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkd2hhdCwiaWQiLGFycmF5KCksJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMsICRwYXJlbnRsZXZlbCk7DQoJfQ0KCWlmKGlzc2V0KCR0b3RhbCkgJiYgJHRvdGFsID09IDApew0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOwkvLyB3ZSBhbHJlYWR5IGtub3cgdGhlcmUncyBub3RoaW5nIHRvIHF1ZXJ5DQoJfWVsc2V7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCwgJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMsICRjdXN0b21vcmRlcik7DQoJfQ0KfWVsc2V7DQoJLy8gd2UncmUgbm90IHVzaW5nIGEgc2F2ZWQgcXVlcnksIHNvIHdlIHBhcnNlIHRoZSBwYXJhbWV0ZXJzDQoJLy8gd2UgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBkbyB0aGUgcXVlcnkNCgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7DQoJLy8gVGhlICR3aGVyZSBob2xkcyBlbGVtZW50cyBvZiB0aGUgV0hFUkUgY2xhdXNlIG9mIHRoZSBxdWVyeSwgaW4gdGhlIGZvcm0gZmllbGRfbmFtZT0+ZmllbGRfdmFsdWUNCglpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkcGFyYW1zWyJhbGlhcyJdICE9ICIiKSB7DQoJCSR3aGVyZSA9IGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbImFsaWFzIl0pOw0KCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgJiYgJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgew0KCQkkd2hlcmUgPSBhcnJheSgiaXNkZWZhdWx0Ij0+MSk7DQoJfWVsc2V7DQoJCSR3aGVyZSA9IGFycmF5KCk7DQoJfQ0KCWlmKGlzc2V0KCRwYXJhbXNbInBhcmVudCJdKSAmJiAkcGFyYW1zWyJwYXJlbnQiXSAhPSAiIikgJHdoZXJlWyJwYXJlbnQiXSA9ICRwYXJhbXNbInBhcmVudCJdOw0KDQoJJHdoZXJlWyJhY3RpdmUiXSA9IDE7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmICRuYnBlcnBhZ2Upew0KCQkvLyB3ZSBuZWVkIHBhZ2luYXRpb24gLSBzbyB3ZSBmaXJzdCByZXRyaWV2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGZpdHRpbmcgdGhlIHF1ZXJ5DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkd2hhdCwiaWQiLCR3aGVyZSxmYWxzZSxhcnJheSgpLCRwYXJlbnRsZXZlbCk7DQoJfQ0KCWlmKGlzc2V0KCR0b3RhbCkgJiYgJHRvdGFsID09IDApew0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOwkvLyB3ZSBhbHJlYWR5IGtub3cgdGhlcmUncyBub3RoaW5nIHRvIHF1ZXJ5DQoJfWVsc2V7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJHdoZXJlLCBmYWxzZSwgIiIsICIiLCAkb3JkZXJieSwgJGxpbWl0KTsNCgl9DQp9DQoNCi8vIEludGVncmF0aW9uIHdvdWxkIHJlcXVpcmUgc29tZSBjaGFuZ2VzIHRvIENhcnRNYWRlU2ltcGxlDQovLyAkaXRlbWxpc3QgPSAkdGhpcy0+YWRkQ2FydFVybHMoJGl0ZW1saXN0LCRpZCwkcmV0dXJuaWQpOw0KDQoNCg0KLy8gIFNUQVJUIFBST0NFU1NJTkcNCg0KaWYoY291bnQoJGl0ZW1saXN0KSA9PSAxICYmICEkZm9yY2VsaXN0KXsNCgkNCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyBXRSBBUkUgRElTUExBWUlORyBBTiBJVEVNIElOIERFVEFJTCBWSUVXDQoJDQoJJGl0ZW09JGl0ZW1saXN0WzBdOw0KDQoJLy8gaWYgYSB0ZW1wbGF0ZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHdlIHRyeSB0byByZXRyaWV2ZSBpdAkNCgkkdGVtcGxhdGUgPSBmYWxzZTsNCglpZihpc3NldCgkcGFyYW1zWyJmaW5hbHRlbXBsYXRlIl0pICYmICRwYXJhbXNbImZpbmFsdGVtcGxhdGUiXSAhPSAiIil7DQoJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJmaW5hbHRlbXBsYXRlIl0pOw0KCX0NCg0KCS8vIGlmIG5vIHRlbXBsYXRlIGhhcyBiZWVuIHNwZWNpZmllZCwgd2UgcmV0cmlldmUgdGhlIGRlZmF1bHQgZmluYWwgdGVtcGxhdGUNCglpZighJHRlbXBsYXRlIHx8ICR0ZW1wbGF0ZSA9PSAiIil7DQoJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIpOw0KCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7DQoJfQ0KCS8vIHdlIHJldHJpZXZlIHRoZSBwYXJlbnQgdHJlZToNCgkkcGFyZW50dHJlZSA9ICR0aGlzLT5nZXRfb2JqdHJlZSggJGl0ZW0tPnBhcmVudF9pZCwgJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKSApOw0KCSRpdGVtLT5wYXJlbnRfb2JqZWN0ID0gJHBhcmVudHRyZWU7DQoNCgkNCgkvLyBpZiB0aGUgaXRlbSBoYXMgcGFyZW50cywgd2UgYXNzaWduIGxpbmtzIHRvIHRoYXQgcGFyZW50DQoJaWYoaXNzZXQoJGl0ZW0tPnBhcmVudF9hbGlhcykpew0KCQkkcHJldHR5dXJsID0gJHRoaXMtPkJ1aWxkUHJldHR5VXJscyhhcnJheSgicGFyZW50Ij0+JGl0ZW0tPnBhcmVudF9hbGlhcywgIndoYXQiPT4kd2hhdCksICRyZXR1cm5pZCk7DQoJCSRpdGVtLT5wYXJlbnRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgJGl0ZW0tPnBhcmVudF9uYW1lLCBhcnJheSgicGFyZW50Ij0+JGl0ZW0tPnBhcmVudF9hbGlhcyksICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKTsNCgkJJGl0ZW0tPnBhcmVudHVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICIiLCBhcnJheSgicGFyZW50Ij0+JGl0ZW0tPnBhcmVudF9hbGlhcyksICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpOw0KCX0NCgkNCgkvLyB3ZSByZXRyaWV2ZSBhIGxhYmVsIGZvciBlYWNoIG9mIHRoZSBpdGVtJ3MgZmllbGQgYW5kIGFzc2lnbiBpdCB0byBzbWFydHkNCgkkbGFiZWxzID0gbmV3IFN0ZENsYXNzKCk7DQoJZm9yZWFjaCgkaXRlbSBhcyAka2V5PT4kdmFsdWUpew0KCQkkbGFiZWxzLT4ka2V5ID0gJHRoaXMtPkxhbmcoJHdoYXQuIl8iLiRrZXkpOwkJDQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGFiZWxzIiwgJGxhYmVscyk7DQoJDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtIiwkaXRlbSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsNCg0KCWlmKCFpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibG9hZF9uZXh0cHJldmlvdXMiLGZhbHNlKSl7DQoJCS8vIHdlIGxvYWQgbGlua3MgdG8gbmV4dCBhbmQgcHJldmlvdXMgaXRlbXMNCgkJLy8gYXMgdGhpcyBpbXBsaWVzIHR3byBtb3JlIHF1ZXJpZXMsIGl0IG11c3QgYmUgYWN0aXZhdGVkIGluIHRoZSBzZXR0aW5ncyB0YWJzDQoJCSRuZXd3aGVyZSA9IGFycmF5KCJhY3RpdmUiPT4xKTsNCgkJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsNCgkJCSRuZXd3aGVyZVsicGFyZW50Il0gPSAkcGFyYW1zWyJwYXJlbnQiXTsJDQoJCX1lbHNlaWYoaXNzZXQoJGl0ZW0tPnBhcmVudF9hbGlhcykgJiYgJHRoaXMtPmdldE9yZGVyVHlwZSgkd2hhdCkpew0KCQkJJG5ld3doZXJlWyJwYXJlbnQiXSA9ICRpdGVtLT5wYXJlbnRfYWxpYXM7DQoJCX0NCgkJJG5leHRpdGVtID0gZmFsc2U7DQoJCSRuZXd3aGVyZVsiaXRlbV9vcmRlciJdID0gJGl0ZW0tPml0ZW1fb3JkZXIgKyAxOw0KCQkkbmV3cGFybXMgPSAkcGFyYW1zOw0KCQkkdG1waXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJG5ld3doZXJlKTsNCgkJaWYoaXNzZXQoJHRtcGl0ZW1bMF0pKXsNCgkJCSRuZXdwYXJtc1siYWxpYXMiXSA9ICR0bXBpdGVtWzBdLT5hbGlhczsNCgkJCSRuZXh0aXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJHRtcGl0ZW1bMF0sJG5ld3Bhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQl9DQoJCSRwcmV2aXRlbSA9IGZhbHNlOw0KCQlpZigkaXRlbS0+aXRlbV9vcmRlciA+IDEpew0KCQkJJG5ld3doZXJlWyJpdGVtX29yZGVyIl0gPSAkaXRlbS0+aXRlbV9vcmRlciAtIDE7DQoJCQkkdG1waXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJG5ld3doZXJlKTsNCgkJCWlmKGlzc2V0KCR0bXBpdGVtWzBdKSl7DQoJCQkJJG5ld3Bhcm1zWyJhbGlhcyJdID0gJHRtcGl0ZW1bMF0tPmFsaWFzOw0KCQkJCSRwcmV2aXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJHRtcGl0ZW1bMF0sJG5ld3Bhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQkJfQ0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibmV4dF9pdGVtIiwkbmV4dGl0ZW0pOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInByZXZpb3VzX2l0ZW0iLCRwcmV2aXRlbSk7DQoJfQ0KCQ0KCS8vIHdlIHByb2Nlc3MgdGhlIHRlbXBsYXRlDQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgkNCn1lbHNlaWYoY291bnQoJGl0ZW1saXN0KSA+IDApew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRSBESVNQTEFZSU5HIEEgTElTVCBWSUVXDQoJJHBhcmVudG9iaiA9IGZhbHNlOw0KCS8vIGlmIHdlIGFyZSB3YXRjaGluZyBpdGVtcyBmcm9tIGEgc3BlY2lmaWMgcGFyZW50cywgd2Ugd2FudCB0byBoYXZlIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhpcyBwYXJlbnQgYXZhaWxhYmxlDQoJLy8gaW4gdGhlIHRlbXBsYXRlIChmb3IgZXhhbXBsZSwgaWYgd2Ugd2FudCB0byBkaXNwbGF5IGEgY2F0ZWdvcnkgcGFnZSwgd2UgbWlnaHQgd2FudCB0byBzaG93IHRoZSBjYXRlZ29yeSBkZXNjcmlwdGlvbikNCgkvLyBpZiBpdCBpcyB0aGUgY2FzZSwgd2UgcmV0cmlldmUgdGhlIHBhcmVudCBhbmQgZ2l2ZSBpdCB0byBzbWFydHkNCglpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkgJiYgJHBhcmFtc1sicGFyZW50Il0gIT0gIiIpew0KCQkkcGFyZW50b2JqID0gJHRoaXMtPmdldF9vYmp0cmVlKCRwYXJhbXNbInBhcmVudCJdLCAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCxmYWxzZSksICJhbGlhcyIpOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsJHBhcmVudG9iaik7DQoJDQoJJHNlbGVjdGVkYWxpYXMgPSBmYWxzZTsNCgkvLyB3ZSBjaGVjayBpZiB0aGUgY3VycmVudCBwYWdlIGhhcyBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIG1vZHVsZSB3aGljaCBhcmUgaW4gYWN0aW9uDQoJJGdsb2IgPSAkdGhpcy0+Z2V0X21vZHVsZUdldFZhcnMoKTsNCglpZigkd2hhdCA9PSAkZmluYWxsZXZlbCAmJiBpc3NldCgkZ2xvYlsiYWxpYXMiXSkpew0KCQkkc2VsZWN0ZWRhbGlhcyA9ICRnbG9iWyJhbGlhcyJdOw0KCX1lbHNlaWYoaXNzZXQoJGdsb2JbInBhcmVudCJdKSAmJiBpc3NldCgkZ2xvYlsid2hhdCJdKSAmJiAkZ2xvYlsid2hhdCJdID09ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0KSl7DQoJCSRzZWxlY3RlZGFsaWFzID0gJGdsb2JbInBhcmVudCJdOw0KCX0NCglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgaXNzZXQoJGdsb2JbInBhZ2VpbmRleCJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRnbG9iWyJwYWdlaW5kZXgiXTsNCglpZighaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkdGhpcy0+YnVpbGRHbG9iYWxUcmVlKCk7DQoJaWYoaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkc2VsZWN0ZWRhbGlhcyA9ICR0aGlzLT5wbGN1cnJlbnRbJHdoYXRdOw0KCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICR0aGlzLT5jdXJyZW50cGFnZWluZGV4Ow0KCSRsaW5rcmV0dXJuaWQgPSAoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSk/JHRoaXMtPmdldF9wYWdlaWQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTokcmV0dXJuaWQ7DQoNCgkvLyB3ZSByZXRyaWV2ZSB0aGUgdGVtcGxhdGUNCglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkgJiYgJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0gIT0gIiIgJiYgJGN1c3RvbXRwbCA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSwgJHRoaXMtPkdldE5hbWUoKSkpew0KCQkkdGVtcGxhdGUgPSAkY3VzdG9tdHBsOw0KCX1lbHNlew0KCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiR3aGF0KTsNCgkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCX0NCg0KCS8vIGlmIFJBTkRPTSBvcHRpb24gaXMgc2V0LCB3ZSByYW5kb21seSBzZWxlY3RlZCBvbmx5IGEgbnVtYmVyIG9mIHRoZSBpdGVtcyByZXRyaWV2ZWQNCglpZiggaXNzZXQoJHBhcmFtc1sicmFuZG9tIl0pICYmICRwYXJhbXNbInJhbmRvbSJdID4gMCAmJiAkcGFyYW1zWyJyYW5kb20iXSA8IGNvdW50KCRpdGVtbGlzdCkgKXsNCgkJJG5ld2xpc3QgPSBhcnJheSgpOw0KCQkkaSA9IDE7DQoJCSRzZWxlY3RlZCA9IGFycmF5KCk7DQoJCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJd2hpbGUoJGkgPD0gJHBhcmFtc1sicmFuZG9tIl0pew0KCQkJd2hpbGUoaW5fYXJyYXkoJGN1cnJhbmQsICRzZWxlY3RlZCkgJiYgY291bnQoJHNlbGVjdGVkKSA8IGNvdW50KCRpdGVtbGlzdCkpCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJCSRuZXdsaXN0W10gPSAkaXRlbWxpc3RbJGN1cnJhbmRdOw0KCQkJJHNlbGVjdGVkW10gPSAkY3VycmFuZDsNCgkJCSRpKys7DQoJCX0NCgkJJGl0ZW1saXN0ID0gJG5ld2xpc3Q7DQoJfQ0KCQkNCgkvLyBmaW5hbCBwcm9jZXNzaW5nIC0gd2UgY3JlYXRlIHRoZSBkZXRhaWxsaW5rcyBmb3IgZWFjaCBpdGVtDQoJJG5ld2xpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJJGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRsaW5rcmV0dXJuaWQpOw0KCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSAoJGl0ZW0tPmFsaWFzID09ICRzZWxlY3RlZGFsaWFzKT90cnVlOmZhbHNlOw0KCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJfQ0KCSRpdGVtbGlzdCA9ICRuZXdsaXN0Ow0KCQ0KCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwkdG90YWwsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsNCgkNCgkvLyB3ZSBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5IGFuZCBwcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1jb3VudCIsY291bnQoJGl0ZW1saXN0KSk7DQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgkNCn1lbHNlew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRU4nVCBESVNQTEFZSU5HIEFOWVRISU5HIEFUIEFMTA0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZXJyb3JfbXNnIiwoaXNzZXQoJHBhcmFtc1siYWxpYXMiXSk/JHRoaXMtPkxhbmcoImVycm9yX25vdGZvdW5kIik6JHRoaXMtPkxhbmcoImVycm9yX25vaXRlbWZvdW5kIikpKTsNCgkkcGFyZW50b2JqID0gZmFsc2U7DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmICRwYXJlbnRsZXZlbCl7DQoJCSR0bXBmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kcGFyZW50bGV2ZWw7DQoJCSRwYXJlbnRvYmogPSAkdGhpcy0+JHRtcGZ1bmN0aW9uKGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbInBhcmVudCJdKSk7DQoJCSRwYXJlbnRvYmogPSBpc3NldCgkcGFyZW50b2JqWzBdKT8kcGFyZW50b2JqWzBdOmZhbHNlOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsJHBhcmVudG9iaik7DQoJDQoJJHRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImVtcHR5dGVtcGxhdGUiLCIqKiIpOw0KCWlmKCR0ZW1wbGF0ZSA9PSAiKioiKXsNCgkJLy8gd2UgdXNlIHRoZSBsaXN0IHRlbXBsYXRlDQoJCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSAmJiAkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSAhPSAiIiAmJiAkY3VzdG9tdHBsID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdLCAkdGhpcy0+R2V0TmFtZSgpKSl7DQoJCQkkdGVtcGxhdGUgPSAkY3VzdG9tdHBsOw0KCQl9ZWxzZXsNCgkJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlXyIuJHdoYXQpOw0KCQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGV2ZWx0aXRsZSIsJHRoaXMtPkxhbmcoJHdoYXQuIl9wbHVyYWwiKSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWNvdW50IiwwKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJwYWdlX3Nob3dpbmciPT5mYWxzZSwicGFnZV90b3RhbGl0ZW1zIj0+ZmFsc2UsInBhZ2VfcGFnZW51bWJlcnMiPT5mYWxzZSwicGFnZV9uZXh0Ij0+ZmFsc2UsInBhZ2VfcHJldmlvdXMiPT5mYWxzZSkpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOw0KCX1lbHNlew0KCQkvLyB3ZSB1c2UgdGhlIG5vcmVzdWx0IHRlbXBsYXRlDQoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOw0KCX0NCg0KfQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQokYWN0aXZlX3RhYiA9IGlzc2V0KCRwYXJhbXNbImFjdGl2ZV90YWIiXSk/JHBhcmFtc1siYWN0aXZlX3RhYiJdOiJwbGF5ZXIiOw0KDQokaGFzX2FkdmFuY2VkX3Blcm0gPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpOw0KDQokZmlsdGVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImRpc3BsYXlfZmlsdGVyIixmYWxzZSk7DQokaW5zdGFudHNlYXJjaCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLGZhbHNlKTsNCiRpbnN0YW50c29ydCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzb3J0IixmYWxzZSk7DQokYWRtaW5wYWdlcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhZG1pbnBhZ2VzIiwwKTsNCiR1c2VfaGllcmFyY2h5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZV9oaWVyYXJjaHkiLGZhbHNlKTsNCiR1c2Vfc2Vzc2lvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ1c2Vfc2Vzc2lvbiIsdHJ1ZSk7DQoNCmlmKCRpbnN0YW50c29ydCB8fCAkaW5zdGFudHNlYXJjaCl7DQoJZWNobyAnDQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KJzsNCglpZigkaW5zdGFudHNlYXJjaCkJZWNobyAkdGhpcy0+Z2V0RmlsZUNvbnRlbnQoImluc3RhbnRzZWFyY2guanMiKTsNCglpZigkaW5zdGFudHNvcnQpCWVjaG8gJHRoaXMtPmdldEZpbGVDb250ZW50KCJpbnN0YW50c29ydC5qcyIpOw0KCWVjaG8gIg0KCTwvc2NyaXB0Pg0KIjsNCn0NCg0KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9wbGF5ZXIiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfcGxheWVyIikgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigicGxheWVyIiwgJHRoaXMtPkxhbmcoInBsYXllcl9wbHVyYWwiKSwgInBsYXllciIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOw0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X21lZGlhZmlsZSIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX21hbmFnZV9tZWRpYWZpbGUiKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJtZWRpYWZpbGUiLCAkdGhpcy0+TGFuZygibWVkaWFmaWxlX3BsdXJhbCIpLCAibWVkaWFmaWxlIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7DQoJfQ0KCWlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfZmllbGRvcHRpb25zIixmYWxzZSkgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiZmllbGRvcHRpb25zIiwgJHRoaXMtPkxhbmcoImZpZWxkb3B0aW9ucyIpLCAiZmllbGRvcHRpb25zIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7CQkNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJNb2RpZnkgVGVtcGxhdGVzIikgfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfdGVtcGxhdGVzIixmYWxzZSkgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidGVtcGxhdGVzIiwgJHRoaXMtPkxhbmcoInRlbXBsYXRlcyIpLCAidGVtcGxhdGVzIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7CQkNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9xdWVyaWVzIixmYWxzZSkgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigicXVlcmllcyIsICR0aGlzLT5MYW5nKCJxdWVyaWVzIiksICJxdWVyaWVzIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7CQkNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJwcmVmZXJlbmNlcyIsICR0aGlzLT5MYW5nKCJwcmVmZXJlbmNlcyIpLCAicHJlZmVyZW5jZXMiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsJCQ0KCX0NCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsNCg0KDQoNCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOw0KDQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfcGxheWVyIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiYXZwbGF5ZXJfbWFuYWdlX3BsYXllciIpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJwbGF5ZXIiKTsNCg0KCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgpOw0KCQkkZmlsdGVyb3V0cHV0ID0gZmFsc2U7DQoNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWx0ZXIiLCAkZmlsdGVyb3V0cHV0KTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpbnN0YW50c2VhcmNoIiwgJGluc3RhbnRzZWFyY2g/JHRoaXMtPkxhbmcoInNlYXJjaHRoaXN0YWJsZSIpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgInNlYXJjaHRhYmxlX3BsYXllciIsICIiLCAxMCwgNjQsICcgb25rZXl1cD0iY3RsbW1fc2VhcmNoKHRoaXMudmFsdWUsXCdwbGF5ZXJfdGFibGVcJyk7IicpOmZhbHNlKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXRBIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGRfcGxheWVyIikpKTsNCgkJJHJlb3JkZXJfYnRuID0gZmFsc2U7aWYoJGhhc19hZHZhbmNlZF9wZXJtIHx8ICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgicmVzdHJpY3RfcGVybWlzc2lvbnMiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfcGxheWVyIikpCSRyZW9yZGVyX2J0biA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9yZW9yZGVyLmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikpOw0KCQkJDQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicmVvcmRlciIsICRyZW9yZGVyX2J0bik7DQoJCSRsaW1pdCA9IGZhbHNlOw0KCQlpZigkYWRtaW5wYWdlcyl7DQoJCQkkbGltaXQgPSAoKGlzc2V0KCRwYXJhbXNbInBsYXllcl9wYWdlIl0pPyRwYXJhbXNbInBsYXllcl9wYWdlIl06MCkgKiAkYWRtaW5wYWdlcykuIiwiLiRhZG1pbnBhZ2VzOw0KCQl9DQoJCQ0KCQkJJGl0ZW1saXN0ID0gJHRoaXMtPmdldF9sZXZlbF9wbGF5ZXIoaXNzZXQoJHdoZXJlY2xhdXNlKT8kd2hlcmVjbGF1c2U6YXJyYXkoKSx0cnVlLCAkaWQsICRyZXR1cm5pZCwgZmFsc2UsICRsaW1pdCk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRhYmxlaWQiLCAicGxheWVyX3RhYmxlIik7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0KTsNCgkJCSRhZG1pbnNob3cgPSBhcnJheSgNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJhY3RpdmUiKSwidG9nZ2xlYWN0aXZlIix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygicmVvcmRlciIpLCJtb3ZlbGlua3MiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkNCgkJCQkpOw0KCQkJaWYoJGluc3RhbnRzb3J0ICYmIGNvdW50KCRpdGVtbGlzdCk+MSl7DQoJCQkJJGkgPSAwOw0KCQkJCXdoaWxlKCRpPGNvdW50KCRhZG1pbnNob3cpKXsNCgkJCQkJaWYoISRhZG1pbnNob3dbJGldWzJdKQkkYWRtaW5zaG93WyRpXVswXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwncGxheWVyX3RhYmxlXCcsJy4kaS4nKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfdXAuZ2lmIiBhbHQ9Il4iLz48L2E+PGJyLz48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCdwbGF5ZXJfdGFibGVcJywnLiRpLicsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmIiBhbHQ9InYiLz48L2E+PC9kaXY+PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6IDI0cHg7Ij4gJm5ic3A7Jy4kYWRtaW5zaG93WyRpXVswXS4iPC9kaXY+IjsNCgkJCQkJJGkrKzsNCgkJCQl9DQoJCQl9DQoJCQlsaXN0KCRwYWdlaW5mbywgJG5leHRwYWdlLCAkcHJldmlvdXNwYWdlLCAkcGFnZXMpID0gJHRoaXMtPmFkbWluX3BhZ2luYXRlKCJwbGF5ZXIiLCRhZG1pbnBhZ2VzLCRpZCwkcmV0dXJuaWQsJHBhcmFtcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5leHRwYWdlIiwgJG5leHRwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicHJldmlvdXNwYWdlIiwgJHByZXZpb3VzcGFnZSk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VpbmZvIiwgJHBhZ2VpbmZvKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZXMiLCAkcGFnZXMpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCg0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KDQp9DQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfbWVkaWFmaWxlIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiYXZwbGF5ZXJfbWFuYWdlX21lZGlhZmlsZSIpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJtZWRpYWZpbGUiKTsNCg0KCWlmKCR0aGlzLT5jb3VudHNvbWV0aGluZygicGxheWVyIikgPiAwKXsNCg0KCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgpOw0KCQkkZmlsdGVyb3V0cHV0ID0gZmFsc2U7DQoNCgkJCWlmKCRmaWx0ZXIpew0KCQkJCSRjdXJfZmlsdGVyID0gZmFsc2U7DQoJCQkJaWYoaXNzZXQoJHBhcmFtc1sibWVkaWFmaWxlX3Nob3dvbmx5Il0pKXsNCgkJCQkJJGN1cl9maWx0ZXIgPSAkcGFyYW1zWyJtZWRpYWZpbGVfc2hvd29ubHkiXTsNCgkJCQkJaWYoJHVzZV9zZXNzb2luKQkkX1NFU1NJT05bImN0bG1tX2ZpbHRlcl9tZWRpYWZpbGUiXSA9ICRwYXJhbXNbIm1lZGlhZmlsZV9zaG93b25seSJdOw0KCQkJCX1lbHNlaWYoJHVzZV9zZXNzaW9uICYmIGlzc2V0KCRfU0VTU0lPTlsiY3RsbW1fZmlsdGVyX21lZGlhZmlsZSJdKSAmJiAkX1NFU1NJT05bImN0bG1tX2ZpbHRlcl9tZWRpYWZpbGUiXSl7DQoJCQkJCSRjdXJfZmlsdGVyID0gJF9TRVNTSU9OWyJjdGxtbV9maWx0ZXJfbWVkaWFmaWxlIl07DQoJCQkJfQ0KCQkJCWlmKCRjdXJfZmlsdGVyICYmICRjdXJfZmlsdGVyICE9ICIiKXsNCgkJCQkJJGZpbHRlcm9wdGlvbnMgPSBhcnJheV9mbGlwKCR0aGlzLT5nZXRfb3B0aW9ucygicGxheWVyIikpOw0KCQkJCQkkZmlsdGVyb3V0cHV0ID0gaXNzZXQoJGZpbHRlcm9wdGlvbnNbJHBhcmFtc1sibWVkaWFmaWxlX3Nob3dvbmx5Il1dKT8kdGhpcy0+TGFuZygic2hvd2luZ29ubHkiKS4kZmlsdGVyb3B0aW9uc1skcGFyYW1zWyJtZWRpYWZpbGVfc2hvd29ubHkiXV0uIiAiOiIiOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoInNob3dhbGwiKSwgYXJyYXkoImFjdGl2ZV90YWIiID0+ICJtZWRpYWZpbGUiLCAibWVkaWFmaWxlX3Nob3dvbmx5Ij0+ZmFsc2UpKTsNCgkJCQkJJHdoZXJlY2xhdXNlID0gYXJyYXkoInBhcmVudF9pZCI9PiRwYXJhbXNbIm1lZGlhZmlsZV9zaG93b25seSJdKTsNCgkJCQl9ZWxzZXsJCQkJCQ0KCQkJCQlpZigkdXNlX2hpZXJhcmNoeSl7DQoJCQkJCQkkZmlsdGVyb3B0aW9ucyA9ICR0aGlzLT5nZXRfYWRtaW5faGllcmFyY2h5b3B0aW9ucygibWVkaWFmaWxlIix0cnVlKTsNCgkJCQkJfWVsc2V7DQoJCQkJCQkkZmlsdGVyb3B0aW9ucyA9ICR0aGlzLT5nZXRfb3B0aW9ucygicGxheWVyIik7DQoJCQkJCX0NCgkJCQkJJGZpbHRlcm91dHB1dCA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+TGFuZygiZmlsdGVyYnlfcGxheWVyIikuIiA6ICI7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAibWVkaWFmaWxlX3Nob3dvbmx5IiwgJGZpbHRlcm9wdGlvbnMsIC0xKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiYWN0aXZlX3RhYiIsICJtZWRpYWZpbGUiKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAiICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCQkJCX0NCgkJCX0NCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWx0ZXIiLCAkZmlsdGVyb3V0cHV0KTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpbnN0YW50c2VhcmNoIiwgJGluc3RhbnRzZWFyY2g/JHRoaXMtPkxhbmcoInNlYXJjaHRoaXN0YWJsZSIpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgInNlYXJjaHRhYmxlX21lZGlhZmlsZSIsICIiLCAxMCwgNjQsICcgb25rZXl1cD0iY3RsbW1fc2VhcmNoKHRoaXMudmFsdWUsXCdtZWRpYWZpbGVfdGFibGVcJyk7IicpOmZhbHNlKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXRCIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGRfbWVkaWFmaWxlIikpKTsNCgkJJHJlb3JkZXJfYnRuID0gZmFsc2U7aWYoJGhhc19hZHZhbmNlZF9wZXJtIHx8ICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgicmVzdHJpY3RfcGVybWlzc2lvbnMiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfbWVkaWFmaWxlIikpCSRyZW9yZGVyX2J0biA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9yZW9yZGVyLmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikpOw0KCQkJDQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicmVvcmRlciIsICRyZW9yZGVyX2J0bik7DQoJCSRsaW1pdCA9IGZhbHNlOw0KCQlpZigkYWRtaW5wYWdlcyl7DQoJCQkkbGltaXQgPSAoKGlzc2V0KCRwYXJhbXNbIm1lZGlhZmlsZV9wYWdlIl0pPyRwYXJhbXNbIm1lZGlhZmlsZV9wYWdlIl06MCkgKiAkYWRtaW5wYWdlcykuIiwiLiRhZG1pbnBhZ2VzOw0KCQl9DQoJCQ0KCQkJJGl0ZW1saXN0ID0gJHRoaXMtPmdldF9sZXZlbF9tZWRpYWZpbGUoaXNzZXQoJHdoZXJlY2xhdXNlKT8kd2hlcmVjbGF1c2U6YXJyYXkoKSx0cnVlLCAkaWQsICRyZXR1cm5pZCwgZmFsc2UsICRsaW1pdCk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRhYmxlaWQiLCAibWVkaWFmaWxlX3RhYmxlIik7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0KTsNCgkJCSRhZG1pbnNob3cgPSBhcnJheSgNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJhY3RpdmUiKSwidG9nZ2xlYWN0aXZlIix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygiaXNkZWZhdWx0IiksInRvZ2dsZWRlZmF1bHQiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwiZGVsZXRlbGluayIsdHJ1ZSkJCQ0KCQkJCSk7DQoJCQlpZigkaW5zdGFudHNvcnQgJiYgY291bnQoJGl0ZW1saXN0KT4xKXsNCgkJCQkkaSA9IDA7DQoJCQkJd2hpbGUoJGk8Y291bnQoJGFkbWluc2hvdykpew0KCQkJCQlpZighJGFkbWluc2hvd1skaV1bMl0pCSRhZG1pbnNob3dbJGldWzBdID0gJzxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCdtZWRpYWZpbGVfdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ21lZGlhZmlsZV90YWJsZVwnLCcuJGkuJyx0cnVlKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYiIGFsdD0idiIvPjwvYT48L2Rpdj48ZGl2IHN0eWxlPSJsaW5lLWhlaWdodDogMjRweDsiPiAmbmJzcDsnLiRhZG1pbnNob3dbJGldWzBdLiI8L2Rpdj4iOw0KCQkJCQkkaSsrOw0KCQkJCX0NCgkJCX0NCgkJCWxpc3QoJHBhZ2VpbmZvLCAkbmV4dHBhZ2UsICRwcmV2aW91c3BhZ2UsICRwYWdlcykgPSAkdGhpcy0+YWRtaW5fcGFnaW5hdGUoIm1lZGlhZmlsZSIsJGFkbWlucGFnZXMsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibmV4dHBhZ2UiLCAkbmV4dHBhZ2UpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwcmV2aW91c3BhZ2UiLCAkcHJldmlvdXNwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZWluZm8iLCAkcGFnZWluZm8pOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlcyIsICRwYWdlcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOw0KCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KDQoJfWVsc2V7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoImVycm9yX25vcGFyZW50IikuIjwvcD4iOw0KCX0NCg0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KDQp9DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJuZXh0cGFnZSI9PmZhbHNlLCJwcmV2aW91c3BhZ2UiPT5mYWxzZSwicGFnZWluZm8iPT5mYWxzZSwicGFnZXMiPT5mYWxzZSkpOw0KDQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiTW9kaWZ5IFRlbXBsYXRlcyIpIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X2ZpZWxkb3B0aW9ucyIsZmFsc2UpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJmaWVsZG9wdGlvbnMiKTsNCg0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA2MDBweDtcIj48bGVnZW5kPjxiPihwbGF5ZXIpIHVzZXJkZWZpbmVkMSA6PC9iPjwvbGVnZW5kPjx1bD4iOw0KCSRvcHRpb25zID0gJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoInBsYXllcl91c2VyZGVmaW5lZDEiLHRydWUpOw0KCWVjaG8gJzx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPic7DQoJJHJvd2NsYXNzID0gMTsNCglmb3JlYWNoKCRvcHRpb25zIGFzICRvcHRpb24pew0KCQkkbmV3cGFyYW1zID0gYXJyYXkoImZpZWxkIj0+InBsYXllcl91c2VyZGVmaW5lZDEiLCAib3B0aW9uaWQiPT4kb3B0aW9uLT5pZCwgImN1cnJlbnRvcmRlciI9PiRvcHRpb24tPml0ZW1fb3JkZXIpOw0KCQllY2hvICINCgkJPHRyIGNsYXNzPVwicm93Ii4kcm93Y2xhc3MuIlwiPjx0ZD4iLiRvcHRpb24tPm5hbWUuIjwvdGQ+PHRkIHdpZHRoPVwiMTIwXCI+IjsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJyZW5hbWVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9lZGl0LmdpZiIsIGxhbmcoImVkaXQiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZSgkbmV3cGFyYW1zLCBhcnJheSgib3B0aW9ubmFtZSI9PiRvcHRpb24tPm5hbWUpKSkuIiAiOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlbGV0ZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYiLGxhbmcoImRlbGV0ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksICRuZXdwYXJhbXMsICR0aGlzLT5MYW5nKCJwcm9tcHRfZGVsZXRlb3B0aW9uIikpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9hcnJvdy11LmdpZiIsbGFuZygidXAiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZSgkbmV3cGFyYW1zLCBhcnJheSgibW92ZSI9PiJ1cCIpKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIixsYW5nKCJkb3duIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoJG5ld3BhcmFtcywgYXJyYXkoIm1vdmUiPT4iZG93biIpKSk7DQoJCWVjaG8gIjwvdGQ+PC90cj4iOw0KCQkkcm93Y2xhc3MgPSAkcm93Y2xhc3MgPT0gMT8yOjE7DQoJfQ0KCWVjaG8gIjwvdGFibGU+IjsNCgllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiYWRkX29wdGlvbnZhbHVlIik7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoImFkZG9wdGlvbiIpLiI6ICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICJvcHRpb25uYW1lIiwgIiIsIDIwLCA2NCk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZpZWxkIiwgInBsYXllcl91c2VyZGVmaW5lZDEiKTsNCgkJZWNobyAiICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4iPC9wPiI7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCWVjaG8gIjwvcD48L2ZpZWxkc2V0Pjxici8+PGJyLz4iOw0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA2MDBweDtcIj48bGVnZW5kPjxiPihtZWRpYWZpbGUpIHVzZXJkZWZpbmVkMiA6PC9iPjwvbGVnZW5kPjx1bD4iOw0KCSRvcHRpb25zID0gJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiLHRydWUpOw0KCWVjaG8gJzx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPic7DQoJJHJvd2NsYXNzID0gMTsNCglmb3JlYWNoKCRvcHRpb25zIGFzICRvcHRpb24pew0KCQkkbmV3cGFyYW1zID0gYXJyYXkoImZpZWxkIj0+Im1lZGlhZmlsZV91c2VyZGVmaW5lZDIiLCAib3B0aW9uaWQiPT4kb3B0aW9uLT5pZCwgImN1cnJlbnRvcmRlciI9PiRvcHRpb24tPml0ZW1fb3JkZXIpOw0KCQllY2hvICINCgkJPHRyIGNsYXNzPVwicm93Ii4kcm93Y2xhc3MuIlwiPjx0ZD4iLiRvcHRpb24tPm5hbWUuIjwvdGQ+PHRkIHdpZHRoPVwiMTIwXCI+IjsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJyZW5hbWVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9lZGl0LmdpZiIsIGxhbmcoImVkaXQiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZSgkbmV3cGFyYW1zLCBhcnJheSgib3B0aW9ubmFtZSI9PiRvcHRpb24tPm5hbWUpKSkuIiAiOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlbGV0ZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYiLGxhbmcoImRlbGV0ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksICRuZXdwYXJhbXMsICR0aGlzLT5MYW5nKCJwcm9tcHRfZGVsZXRlb3B0aW9uIikpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9hcnJvdy11LmdpZiIsbGFuZygidXAiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZSgkbmV3cGFyYW1zLCBhcnJheSgibW92ZSI9PiJ1cCIpKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIixsYW5nKCJkb3duIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoJG5ld3BhcmFtcywgYXJyYXkoIm1vdmUiPT4iZG93biIpKSk7DQoJCWVjaG8gIjwvdGQ+PC90cj4iOw0KCQkkcm93Y2xhc3MgPSAkcm93Y2xhc3MgPT0gMT8yOjE7DQoJfQ0KCWVjaG8gIjwvdGFibGU+IjsNCgllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiYWRkX29wdGlvbnZhbHVlIik7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoImFkZG9wdGlvbiIpLiI6ICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICJvcHRpb25uYW1lIiwgIiIsIDIwLCA2NCk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZpZWxkIiwgIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiKTsNCgkJZWNobyAiICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4iPC9wPiI7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCWVjaG8gIjwvcD48L2ZpZWxkc2V0Pjxici8+PGJyLz4iOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJmaWx0ZXIiPT5mYWxzZSwicmVvcmRlciI9PmZhbHNlLCJpbnN0YW50c2VhcmNoIj0+ZmFsc2UsInRhYmxlaWQiPT5mYWxzZSkpOw0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIk1vZGlmeSBUZW1wbGF0ZXMiKSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV90ZW1wbGF0ZXMiLGZhbHNlKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigidGVtcGxhdGVzIik7DQoJDQogICAgZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDYwMHB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygiZGVmYXVsdHRlbXBsYXRlcyIpLiI8L2I+PC9sZWdlbmQ+IjsNCiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiY2hhbmdlZGVmdGVtcGxhdGVzIiwgJHJldHVybmlkKTsNCiAgICAkdGVtcGxhdGVsaXN0ID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoJHRoaXMtPkdldE5hbWUoKSk7DQogICAgJGRlZnRwbHMgPSAkdGhpcy0+Z2V0RGVmYXVsdFRlbXBsYXRlcygpOw0KICAgICR0cGxvcHRpb25zID0gYXJyYXkoKTsNCiAgICAkaXRlbWxpc3QgPSBhcnJheSgpOw0KICAgIGZvcmVhY2goJHRlbXBsYXRlbGlzdCBhcyAkb25ldHBsKXsNCgkgICAkdHBsb3B0aW9uc1skb25ldHBsXSA9ICRvbmV0cGw7DQoJICAgJHRwbCA9IG5ldyBzdGRDbGFzcygpOw0KCSAgICR0cGwtPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgImVkaXRUZW1wbGF0ZSIsICRyZXR1cm5pZCwgJG9uZXRwbCwgYXJyYXkoInRwbG5hbWUiPT4kb25ldHBsKSApOw0KCSAgICR0cGwtPmRlbGV0ZWxpbmsgPSBpbl9hcnJheSgkb25ldHBsLCAkZGVmdHBscyk/IiI6JHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgImRlbGV0ZXRwbCIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYiLCAkdGhpcy0+TGFuZygiZGVsZXRlIiksICIiLCAiIiwgInN5c3RlbWljb24iKSwgYXJyYXkoInRwbG5hbWUiPT4kb25ldHBsKSApOw0KCSAgIGFycmF5X3B1c2goJGl0ZW1saXN0LCAkdHBsKTsNCiAgICB9DQoNCgkgICBlY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZ0ZW1wbGF0ZWZvciIpLiIgXCJwbGF5ZXJcIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwibGlzdHRlbXBsYXRlX3BsYXllciIsJHRwbG9wdGlvbnMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9wbGF5ZXIiKSkuIjwvcD4NCgkJPC9kaXY+DQogICAgIjsNCgkgICBlY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZ0ZW1wbGF0ZWZvciIpLiIgXCJtZWRpYWZpbGVcIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwibGlzdHRlbXBsYXRlX21lZGlhZmlsZSIsJHRwbG9wdGlvbnMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9tZWRpYWZpbGUiKSkuIjwvcD4NCgkJPC9kaXY+DQogICAgIjsNCiAgICBlY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZkZXRhaWx0ZW1wbGF0ZSIpLiI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZpbmFsdGVtcGxhdGUiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIikpLiI8L3A+DQoJCTwvZGl2Pg0KCSI7DQoJJHRwbG9wdGlvbnNbJHRoaXMtPkxhbmcoInVzZWxldmVsbGlzdHRwbCIpXSA9ICIqKiI7DQoJZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmc2VhcmNocmVzdWx0c3RlbXBsYXRlIikuIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwic2VhcmNocmVzdWx0c3RlbXBsYXRlIiwkdHBsb3B0aW9ucywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNocmVzdWx0c3RlbXBsYXRlIiwiKioiKSkuIjwvcD4NCgkJPC9kaXY+DQoJIjsNCgllY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZlbXB0eXRlbXBsYXRlIikuIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiZW1wdHl0ZW1wbGF0ZSIsJHRwbG9wdGlvbnMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoImVtcHR5dGVtcGxhdGUiLCIqKiIpKS4iPC9wPg0KCQk8L2Rpdj4NCiAgICA8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXQiLCBsYW5nKCJzdWJtaXQiKSkuIjwvcD4iOw0KICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCg0KICAgIGVjaG8gIjwvZmllbGRzZXQ+PGJyLz48YnIvPiI7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsICRpdGVtbGlzdCk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRuZXciLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJlZGl0VGVtcGxhdGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmIiwgIiIsIiIsIiIsInN5c3RlbWljb24iKS4iICIuJHRoaXMtPkxhbmcoImFkZHRlbXBsYXRlIikpKTsNCiAgICAkYWRtaW5zaG93ID0gYXJyYXkoCWFycmF5KCR0aGlzLT5MYW5nKCJ0ZW1wbGF0ZSIpLCAiZWRpdGxpbmsiLCBmYWxzZSksIGFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksICJkZWxldGVsaW5rIiwgZmFsc2UpCSk7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsNCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfcXVlcmllcyIsZmFsc2UpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJxdWVyaWVzIik7DQoNCgkJJGl0ZW1saXN0ID0gJHRoaXMtPmdldF9xdWVyaWVzKCR3aGVyZT1hcnJheSgpLCB0cnVlLCAkaWQsICRyZXR1cm5pZCk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3Q/JGl0ZW1saXN0OmFycmF5KCkpOw0KCQkkYWRtaW5zaG93ID0gYXJyYXkoIGFycmF5KCJpZCIsImlkIiksDQoJCQkJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwgIm5hbWUiKSwNCgkJCQkJCQlhcnJheSgkdGhpcy0+TGFuZygiQWN0aW9ucyIpLCAiYWN0aW9ucyIpDQoJCQkJCQkJKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRuZXciLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJhZG1pbnF1ZXJ5IiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJjcmVhdGVxdWVyeSIpKSk7DQoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCgkJDQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoInByZWZlcmVuY2VzIik7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImNoYW5nZXByZWZlcmVuY2VzIiwgJHJldHVybmlkKTsNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNDY1cHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmX3RhYmRpc3BsYXkiKS4iOjwvYj48L2xlZ2VuZD48dWw+DQoJIjsNCgkkdGFiZGlzcGxheSA9IGFycmF5KCJwbGF5ZXIiLCJtZWRpYWZpbGUiLCJmaWVsZG9wdGlvbnMiLCJ0ZW1wbGF0ZXMiLCJxdWVyaWVzIik7DQoJZm9yZWFjaCgkdGFiZGlzcGxheSBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxsaT4iLiR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgInRhYmRpc3BsYXlfIi4kb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfIi4kb25lcHJlZixmYWxzZSkpLiR0aGlzLT5MYW5nKCRvbmVwcmVmKS4iPC9saT4NCgkiOw0KCX0NCgllY2hvICI8L3VsPjxici8+PHA+Ii4kdGhpcy0+TGFuZygiaGVscF90YWJkaXNwbGF5IikuIjwvcD4NCjwvZmllbGRzZXQ+PGJyLz4NCiI7DQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDQ2NXB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl9zZWFyY2htb2R1bGVfaW5kZXgiKS4iOjwvYj48L2xlZ2VuZD48dWw+DQoJIjsNCglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPGxpPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAic2VhcmNobW9kdWxlX2luZGV4XyIuJG9uZXByZWYsIHRydWUsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfIi4kb25lcHJlZixmYWxzZSkpLiR0aGlzLT5MYW5nKCRvbmVwcmVmKS4iPC9saT4NCgkiOw0KCX0NCgllY2hvICI8L3VsPjxici8+PHA+Ii4kdGhpcy0+TGFuZygiaGVscF9zZWFyY2htb2R1bGVfaW5kZXgiKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNDY1cHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmX25ld2l0ZW1zZmlyc3QiKS4iOjwvYj48L2xlZ2VuZD48dWw+DQoJIjsNCglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPGxpPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAibmV3aXRlbXNmaXJzdF8iLiRvbmVwcmVmLCB0cnVlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF8iLiRvbmVwcmVmLGZhbHNlKSkuJHRoaXMtPkxhbmcoJG9uZXByZWYpLiI8L2xpPg0KCSI7DQoJfQ0KCWVjaG8gIjwvdWw+PGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX25ld2l0ZW1zZmlyc3QiKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCg0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA0NjVweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZfbGV2ZWxwYWdpbmF0aW9uIikuIjo8L2I+PC9sZWdlbmQ+PHVsPg0KCSI7DQoJZm9yZWFjaCgkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxsaT4iLiR0aGlzLT5MYW5nKCRvbmVwcmVmKS4iOiAiOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAkb25lcHJlZi4iX3BhZ2luYXRpb24iLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkb25lcHJlZi4iX3BhZ2luYXRpb24iLDApLCAxMiwgMykuIjwvbGk+DQoJIjsNCgl9DQoJZWNobyAiPC91bD48YnIvPjxwPiIuJHRoaXMtPkxhbmcoImhlbHBfbGV2ZWxwYWdpbmF0aW9uIikuIjwvcD4NCjwvZmllbGRzZXQ+PGJyLz4NCiI7DQoNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNjAwcHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmX2Zyb250ZW5kIikuIjo8L2I+PC9sZWdlbmQ+DQoJIjsNCgkkY2hlY2tib3hwcmVmcyA9IGFycmF5KCJmZV93eXNpd3lnIiwiZmVfZGVjb2RlZW50aXRpZXMiLCJmZV9hbGxvd2ZpbGVzIiwiZmVfYWxsb3duYW1lY2hhbmdlIiwiZmVfYWxsb3dhZGRuZXciLCJmZV91c2VjYXB0Y2hhIik7DQoJZm9yZWFjaCgkY2hlY2tib3hwcmVmcyBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJG9uZXByZWYsZmFsc2UpKS4kdGhpcy0+TGFuZygicHJlZl8iLiRvbmVwcmVmKS4iPC9wPg0KCSI7DQoJfQ0KCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoInByZWZfZmVfbWF4ZmlsZXNpemUiKS4iOiIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICJmZV9tYXhmaWxlc2l6ZSIsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmZV9tYXhmaWxlc2l6ZSIsIiIpLCAxMiwgMTIpLiI8L3A+DQoJIjsNCgkkY250b3BlcmF0aW9ucyA9ICRnQ21zLT5nZXRDb250ZW50T3BlcmF0aW9ucygpOw0KCSRjdXJfcmVkaXJlY3QgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWZ0ZXJzdWJtaXQiLC0xKTsNCgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJwcmVmX2ZlX2FmdGVyc3VibWl0IikuJGNudG9wZXJhdGlvbnMtPkNyZWF0ZUhpZXJhcmNoeURyb3Bkb3duKCIiLCRjdXJfcmVkaXJlY3QsJGlkLiJmZV9hZnRlcnN1Ym1pdCIpLiI8L3A+DQoJIjsNCgllY2hvICI8YnIvPjxwPiIuJHRoaXMtPkxhbmcoImhlbHBfZnJvbnRlbmQiKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCg0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA2MDBweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZlcmVuY2VzIikuIjo8L2I+PC9sZWdlbmQ+DQoJIjsNCgkkY2hlY2tib3hwcmVmcyA9IGFycmF5KCJsb2FkX25iY2hpbGRyZW4iLCJsb2FkX25leHRwcmV2aW91cyIsInJlc3RyaWN0X3Blcm1pc3Npb25zIiwidXNlX2hpZXJhcmNoeSIsIm9yZGVyYnluYW1lIiwiZGlzcGxheV9maWx0ZXIiLCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLCJkaXNwbGF5X2luc3RhbnRzb3J0IiwiZWRpdGFibGVfYWxpYXNlcyIsImF1dG9pbmNyZW1lbnRfYWxpYXMiLCJhbGxvd19zcWwiLCJmb3JjZV9saXN0Iiwic2hvd3RodW1ibmFpbHMiLCJkZWxldGVfZmlsZXMiLCJhbGxvd19jb21wbGV4X29yZGVyIiwidXNlX3Nlc3Npb24iKTsNCglmb3JlYWNoKCRjaGVja2JveHByZWZzIGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICRvbmVwcmVmLCB0cnVlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkb25lcHJlZixmYWxzZSkpLiIgIi4kdGhpcy0+TGFuZygicHJlZl8iLiRvbmVwcmVmKS4iPC9wPg0KCSI7DQoJfQ0KCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoInByZWZfYWRtaW5wYWdlcyIpLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAiYWRtaW5wYWdlcyIsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhZG1pbnBhZ2VzIiwwKSwgMTIsIDMpLiI8L3A+DQoJIjsNCgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJwcmVmX21heHNob3ducGFnZXMiKS4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgIm1heHNob3ducGFnZXMiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibWF4c2hvd25wYWdlcyIsNyksIDEyLCAyKS4iPC9wPg0KCSI7DQoJZWNobyAiPC9maWVsZHNldD48YnIvPjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4iPC9wPiI7DQogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCWVjaG8gIjxici8+PHA+Ii4kYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZXhwb3J0IiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygiZXhwb3J0X3RpdGxlIikpLiIgfCAiLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImltcG9ydCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoImltcG9ydF90aXRsZSIpKS4iPC9wPiI7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQoNCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.editA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfcGxheWVyIikpICl7DQoJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIiA9PiAicGxheWVyIik7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSkJJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2UiXSA9ICR0aGlzLT5MYW5nKCJlcnJvcl9kZW5pZWQiKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KJHVzZXJkZWZpbmVkMW9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygicGxheWVyX3VzZXJkZWZpbmVkMSIpOw0KJHBsYXllcnR5cGVvcHRpb25zID0gJHRoaXMtPmdldF9wcmVkZWZpbmVkb3B0aW9ucygicGxheWVyX3BsYXllcnR5cGUiKTsNCg0KDQppZihpc3NldCgkcGFyYW1zWyJBaWQiXSkpIHsNCgkvLyBpZiB3ZSBhcmUgd29ya2luZyBvbiBhbiBpdGVtIHRoYXQgZXhpc3RzLCB3ZSBsb2FkIGl0LiBXZSBtdXN0IGRvIHRoaXMgZXZlbiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgb3RoZXJ3aXNlIHdlIHdvbid0IGhhdmUgdGhlIGZpbGUgZmllbGRzDQoJJGl0ZW1zID0gJHRoaXMtPmdldF9sZXZlbF9wbGF5ZXIoYXJyYXkoImlkIj0+JHBhcmFtc1siQWlkIl0pKTsNCgkkaXRlbSA9ICRpdGVtc1swXTsNCn0NCg0KLy8gQ0hFQ0sgSUYgVEhFIEZPUk0gSVMgQkVJTkcgU1VCTUlUVEVEIDoNCi8vICh3ZSBtdXN0IGRldGVjdCBhbGwga2luZHMgb2Ygc3VibWl0IGJ1dHRvbnMsIGluY2x1ZGluZyBmaWxlcywgc2luY2UgaW5mb3JtYXRpb24gbXVzdCBiZSBzYXZlZCBiZWZvcmUgd2UgZ28gdG8gZmlsZSBzdWJtaXNzaW9uKQ0KaWYgKGlzc2V0KCRwYXJhbXNbInN1Ym1pdCJdKSB8fCANCglpc3NldCgkcGFyYW1zWyJhcHBseSJdKSANCgkpDQp7DQoJZGVidWdfYnVmZmVyKCJFZGl0IEZvcm0gaGFzIGJlZW4gc3VibWl0dGVkIi5fX0xJTkVfXyk7DQoNCgkvLyBSRVRSSUVWSU5HIFRIRSBGT1JNIFZBTFVFUyAoYW5kIGVzY2FwaW5nIGl0LCBpZiBuZWVkZWQpDQoJaWYoIWlzc2V0KCRpdGVtKSkgJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCglpZihpc3NldCgkcGFyYW1zWyJBaXRlbV9vcmRlciJdKSkgJGl0ZW0tPml0ZW1fb3JkZXIgPSAkcGFyYW1zWyJBaXRlbV9vcmRlciJdOw0KCSRpdGVtLT5sb2NhdGlvbiA9ICRwYXJhbXNbIkFsb2NhdGlvbiJdOw0KCQkkaXRlbS0+d2lkdGggPSAkcGFyYW1zWyJBd2lkdGgiXTsNCgkJJGl0ZW0tPmhlaWdodCA9ICRwYXJhbXNbIkFoZWlnaHQiXTsNCgkJJGl0ZW0tPnBhcmFtZXRlcnMgPSAkcGFyYW1zWyJBcGFyYW1ldGVycyJdOw0KCQkkaXRlbS0+dXNlcmRlZmluZWQxID0gJHBhcmFtc1siQXVzZXJkZWZpbmVkMSJdOw0KCQkkaXRlbS0+cGxheWVydHlwZSA9ICRwYXJhbXNbIkFwbGF5ZXJ0eXBlIl07DQoJCSRpdGVtLT5uYW1lID0gJHBhcmFtc1siQW5hbWUiXTsNCgkJDQoJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJCWlmKGlzc2V0KCRwYXJhbXNbIkFhbGlhcyJdKSl7DQoJCQkkdG1wYWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcyh0cmltKCRwYXJhbXNbIkFhbGlhcyJdKSk7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXMgPT0gIiI/JHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOiR0bXBhbGlhczsNCgkJfWVsc2V7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJCX0NCgl9ZWxzZXsNCgkJJGl0ZW0tPmFsaWFzID0gJHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOw0KCX0NCgkNCgkkYXV0b2luY3JlbWVudGFsaWFzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9pbmNyZW1lbnRfYWxpYXMiLGZhbHNlKTsNCg0KCS8vIENIRUNLIElGIFRIRSBORUVERUQgVkFMVUVTIEFSRSBUSEVSRQ0KCWlmKAkhaXNzZXQoJHBhcmFtc1siQWxvY2F0aW9uIl0pIHx8ICRwYXJhbXNbIkFsb2NhdGlvbiJdID09ICIiDQoJCSB8fCAhaXNzZXQoJHBhcmFtc1siQW5hbWUiXSkgfHwgJHBhcmFtc1siQW5hbWUiXSA9PSAiIg0KCQkgKQ0KCXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfbWlzc2dpbnZhbHVlIikpOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIiLCAkaXRlbS0+YWxpYXMsIGlzc2V0KCRwYXJhbXNbIkFpZCJdKT8kcGFyYW1zWyJBaWQiXTpmYWxzZSkpew0KCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvcl9hbHJlYWR5ZXhpc3RzIikpOw0KCX1lbHNlew0KCQkjIyMjIyMjIyMjIyMgRE9JTkcgVEhFIFVQREFURQ0KDQoJCWlmKCRhdXRvaW5jcmVtZW50YWxpYXMpew0KCQkJJGJhc2VhbGlhcyA9ICRpdGVtLT5hbGlhczsNCgkJCSR0bXBhbGlhcyA9ICRpdGVtLT5hbGlhczsNCgkJCSRpID0gMTsNCgkJCXdoaWxlKCEkdGhpcy0+Y2hlY2thbGlhcygibW9kdWxlX2F2cGxheWVyX3BsYXllciIsICR0bXBhbGlhcywgaXNzZXQoJHBhcmFtc1siQWlkIl0pPyRwYXJhbXNbIkFpZCJdOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKGlzc2V0KCRpdGVtLT5pZCk/IlVQREFURSAiOiJJTlNFUlQgSU5UTyAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIgU0VUIA0KCQkJbG9jYXRpb249PywNCgkJCXdpZHRoPT8sDQoJCQloZWlnaHQ9PywNCgkJCXBhcmFtZXRlcnM9PywNCgkJCXVzZXJkZWZpbmVkMT0/LA0KCQkJcGxheWVydHlwZT0/LA0KCQkJbmFtZT0/LA0KCQlhbGlhcz0/LA0KCQlkYXRlX21vZGlmaWVkPT8sDQoJCWFjdGl2ZT0iLihpc3NldCgkaXRlbS0+YWN0aXZlKT8kaXRlbS0+YWN0aXZlOjEpLiIsDQoJCWlzZGVmYXVsdD0iLihpc3NldCgkaXRlbS0+aXNkZWZhdWx0KT8kaXRlbS0+aXNkZWZhdWx0OjApLiIiOw0KCQkJDQoJCS8vIFZBTFVFUw0KCQkkdmFsdWVzID0gYXJyYXkoYWRkc2xhc2hlcygkaXRlbS0+bG9jYXRpb24pLA0KCQkJYWRkc2xhc2hlcygkaXRlbS0+d2lkdGgpLA0KCQkJYWRkc2xhc2hlcygkaXRlbS0+aGVpZ2h0KSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPnBhcmFtZXRlcnMpLA0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMSwNCgkJCSRpdGVtLT5wbGF5ZXJ0eXBlLA0KCQkJYWRkc2xhc2hlcygkaXRlbS0+bmFtZSksJGl0ZW0tPmFsaWFzLHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpKTsNCg0KCQlpZihpc3NldCgkaXRlbS0+aWQpKXsNCgkJCSRldmVudCA9ICJhdnBsYXllcl9tb2RpZmllZCI7DQoJCQkkcXVlcnkgLj0gIiBXSEVSRSBpZD0/OyI7DQoJCQlhcnJheV9wdXNoKCR2YWx1ZXMsJGl0ZW0tPmlkKTsNCgkJfWVsc2V7DQoJCQkvLyBORVcgSVRFTQ0KCQkJJHF1ZXJ5IC49ICIsIGRhdGVfY3JlYXRlZD0/IjsNCgkJCSR2YWx1ZXNbXSA9IHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpOw0KCQkJJGV2ZW50ID0gImF2cGxheWVyX2FkZGVkIjsNCgkJCS8vIGdldCBhIG5ldyBpZCBmcm9tIHRoZSBzZXF1ZW5jZSB0YWJsZQ0KCQkJJGl0ZW0tPmlkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXJfc2VxIik7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF9wbGF5ZXIiLGZhbHNlKSl7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgdG9wIC0gc28gd2UgbXVzdCBwdXQgYWxsIG90aGVyIGl0ZW1zIGRvd24gZnJvbSBvbmUgc3RlcCwgYW5kIHRoZW4gc2V0IHRoaXMgaXRlbSdzIG9yZGVyIHRvIDENCgkJCQkkcXVlcnkyID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSI7DQoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeTIpOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9MSwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9ZWxzZXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSBib3R0b20gLSBzbyB3ZSBtdXN0IHNldCB0aGUgaXRlbV9vcmRlciB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zICsgMQ0KCQkJCSRpdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJwbGF5ZXIiKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X3BsYXllciIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4icGxheWVyIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInBsYXllciIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKCRyZWRpcmVjdCA9PSBmYWxzZSl7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFwcGx5Il0pKXsNCgkJCQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCgkJCX1lbHNlew0KCQkJCSRwYXJhbXMgPSBhcnJheSgibW9kdWxlX21lc3NhZ2UiID0+ICR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIiksICJhY3RpdmVfdGFiIj0+InBsYXllciIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRwYXJhbXMpOwkNCgkJCX0NCgl9DQoJLy8gRU5EIE9GIEZPUk0gU1VCTUlTU0lPTg0KfQ0KDQoNCg0KLyogIyMgUFJFUEFSSU5HIFNNQVJUWSBFTEVNRU5UUw0KQ3JlYXRlSW5wdXRUZXh0IDogKGlkLG5hbWUsdmFsdWUsc2l6ZSxtYXhsZW5ndGgpDQpDcmVhdGVUZXh0QXJlYSA6ICh3eXNpd3lnLGlkLHRleHQsbmFtZSkNCkNyZWF0ZUlucHV0U2VsZWN0TGlzdCA6IChpZCxuYW1lLGl0ZW1zLHNlbGVjdGVkaXRlbXMsc2l6ZSkNCkNyZWF0ZUlucHV0RHJvcGRvd24gOiAoaWQsbmFtZSxpdGVtcyxzaW5kZXgsc3ZhbHVlKQ0KKi8NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsb2NhdGlvbl9sYWJlbCIsICR0aGlzLT5MYW5nKCJwbGF5ZXJfbG9jYXRpb24iKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImxvY2F0aW9uX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkFsb2NhdGlvbiIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5sb2NhdGlvbjoiIiw1MCwyNTUpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigid2lkdGhfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3dpZHRoIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ3aWR0aF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBd2lkdGgiLGlzc2V0KCRpdGVtKT8kaXRlbS0+d2lkdGg6IiIsMzAsMTApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiaGVpZ2h0X2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9oZWlnaHQiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImhlaWdodF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBaGVpZ2h0Iixpc3NldCgkaXRlbSk/JGl0ZW0tPmhlaWdodDoiIiwzMCwxMCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJhbWV0ZXJzX2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9wYXJhbWV0ZXJzIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJhbWV0ZXJzX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkFwYXJhbWV0ZXJzIixpc3NldCgkaXRlbSk/JGl0ZW0tPnBhcmFtZXRlcnM6IiIsNzUsMjAwMCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDFfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3VzZXJkZWZpbmVkMSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidXNlcmRlZmluZWQxX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJBdXNlcmRlZmluZWQxIiwkdXNlcmRlZmluZWQxb3B0aW9ucywtMSxpc3NldCgkaXRlbSk/JGl0ZW0tPnVzZXJkZWZpbmVkMTowKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBsYXllcnR5cGVfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3BsYXllcnR5cGUiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBsYXllcnR5cGVfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIkFwbGF5ZXJ0eXBlIiwkcGxheWVydHlwZW9wdGlvbnMsLTEsaXNzZXQoJGl0ZW0pPyRpdGVtLT5wbGF5ZXJ0eXBlOjApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJuYW1lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkFuYW1lIixpc3NldCgkaXRlbSk/JGl0ZW0tPm5hbWU6IiIsNTAsNjQpKTsNCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlZGl0YWJsZV9hbGlhc2VzIixmYWxzZSkpew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfbGFiZWwiLCAkdGhpcy0+TGFuZygiYWxpYXMiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBYWxpYXMiLGlzc2V0KCRpdGVtKT8kaXRlbS0+YWxpYXM6IiIsNTAsNjQpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsZmFsc2UpOw0KfWVsc2V7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGlzc2V0KCRpdGVtLT5hbGlhcyk/IihhbGlhcyA6ICIuJGl0ZW0tPmFsaWFzLiIpIjpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsIGZhbHNlKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlZGl0dGl0bGUiLCAkdGhpcy0+TGFuZygiZWRpdF9wbGF5ZXIiKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigic3VibWl0IiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImFwcGx5IiwgKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKT8kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiYXBwbHkiLCBsYW5nKCJhcHBseSIpKToiIik7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNhbmNlbCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkpOw0KDQoNCi8vIERJU1BMQVlJTkcNCmlmKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKXsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRBIiwgJHJldHVybmlkKTsNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJlZGl0QS50cGwiKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQWlkIiwgJGl0ZW0tPmlkKTsNCgkJaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5wYXJlbnQpKSBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJvbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQWl0ZW1fb3JkZXIiLCAkaXRlbS0+aXRlbV9vcmRlcik7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCg0KfWVsc2V7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRBIiwgJHJldHVybmlkKTsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRBLnRwbCIpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/action.editB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfbWVkaWFmaWxlIikpICl7DQoJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIiA9PiAibWVkaWFmaWxlIik7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSkJJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2UiXSA9ICR0aGlzLT5MYW5nKCJlcnJvcl9kZW5pZWQiKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KDQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgidXNlX2hpZXJhcmNoeSIsZmFsc2UpKXsNCgkkcGFyZW50b3B0aW9ucyA9ICR0aGlzLT5nZXRfYWRtaW5faGllcmFyY2h5b3B0aW9ucygibWVkaWFmaWxlIixmYWxzZSk7DQp9ZWxzZXsNCgkkcGFyZW50b3B0aW9ucyA9ICR0aGlzLT5nZXRfb3B0aW9ucygicGxheWVyIik7DQp9JHVzZXJkZWZpbmVkMm9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygibWVkaWFmaWxlX3VzZXJkZWZpbmVkMiIpOw0KDQoNCmlmKGlzc2V0KCRwYXJhbXNbIkJpZCJdKSkgew0KCS8vIGlmIHdlIGFyZSB3b3JraW5nIG9uIGFuIGl0ZW0gdGhhdCBleGlzdHMsIHdlIGxvYWQgaXQuIFdlIG11c3QgZG8gdGhpcyBldmVuIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBvdGhlcndpc2Ugd2Ugd29uJ3QgaGF2ZSB0aGUgZmlsZSBmaWVsZHMNCgkkaXRlbXMgPSAkdGhpcy0+Z2V0X2xldmVsX21lZGlhZmlsZShhcnJheSgiaWQiPT4kcGFyYW1zWyJCaWQiXSkpOw0KCSRpdGVtID0gJGl0ZW1zWzBdOw0KfQ0KDQovLyBDSEVDSyBJRiBUSEUgRk9STSBJUyBCRUlORyBTVUJNSVRURUQgOg0KLy8gKHdlIG11c3QgZGV0ZWN0IGFsbCBraW5kcyBvZiBzdWJtaXQgYnV0dG9ucywgaW5jbHVkaW5nIGZpbGVzLCBzaW5jZSBpbmZvcm1hdGlvbiBtdXN0IGJlIHNhdmVkIGJlZm9yZSB3ZSBnbyB0byBmaWxlIHN1Ym1pc3Npb24pDQppZiAoaXNzZXQoJHBhcmFtc1sic3VibWl0Il0pIHx8IA0KCWlzc2V0KCRwYXJhbXNbImFwcGx5Il0pIHx8DQoJaXNzZXQoJHBhcmFtc1siYWRkX21lZGlhZmlsZSJdKSB8fA0KCWlzc2V0KCRwYXJhbXNbInJlbW92ZV9tZWRpYWZpbGUiXSkgfHwNCglpc3NldCgkcGFyYW1zWyJhZGRfcGljdHVyZSJdKSB8fA0KCWlzc2V0KCRwYXJhbXNbInJlbW92ZV9waWN0dXJlIl0pIA0KCSkNCnsNCglkZWJ1Z19idWZmZXIoIkVkaXQgRm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQiLl9fTElORV9fKTsNCg0KCS8vIFJFVFJJRVZJTkcgVEhFIEZPUk0gVkFMVUVTIChhbmQgZXNjYXBpbmcgaXQsIGlmIG5lZWRlZCkNCglpZighaXNzZXQoJGl0ZW0pKSAkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCWlmKGlzc2V0KCRwYXJhbXNbIkJpdGVtX29yZGVyIl0pKSAkaXRlbS0+aXRlbV9vcmRlciA9ICRwYXJhbXNbIkJpdGVtX29yZGVyIl07DQoJJGl0ZW0tPnVzZXJkZWZpbmVkMiA9ICRwYXJhbXNbIkJ1c2VyZGVmaW5lZDIiXTsNCgkJJGl0ZW0tPnBhcmVudCA9ICRwYXJhbXNbIkJwYXJlbnQiXTsNCgkJJGl0ZW0tPm5hbWUgPSAkcGFyYW1zWyJCbmFtZSJdOw0KCQkNCglpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZWRpdGFibGVfYWxpYXNlcyIsZmFsc2UpKXsNCgkJaWYoaXNzZXQoJHBhcmFtc1siQmFsaWFzIl0pKXsNCgkJCSR0bXBhbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKHRyaW0oJHBhcmFtc1siQmFsaWFzIl0pKTsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhcyA9PSAiIj8kdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk6JHRtcGFsaWFzOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTsNCgkJfQ0KCX1lbHNlew0KCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJfQ0KCQ0KCSRhdXRvaW5jcmVtZW50YWxpYXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYXV0b2luY3JlbWVudF9hbGlhcyIsZmFsc2UpOw0KDQoJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFDQoJaWYoCSFpc3NldCgkcGFyYW1zWyJCbmFtZSJdKSB8fCAkcGFyYW1zWyJCbmFtZSJdID09ICIiDQoJCSApDQoJew0KCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvcl9taXNzZ2ludmFsdWUiKSk7DQoJfWVsc2VpZighJGF1dG9pbmNyZW1lbnRhbGlhcyAmJiBmYWxzZSA9PSAkdGhpcy0+Y2hlY2thbGlhcygibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siQmlkIl0pPyRwYXJhbXNbIkJpZCJdOmZhbHNlKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIiwgJHRtcGFsaWFzLCBpc3NldCgkcGFyYW1zWyJCaWQiXSk/JHBhcmFtc1siQmlkIl06ZmFsc2UpKXsNCgkJCQkkdG1wYWxpYXMgPSAkYmFzZWFsaWFzLiJfIi4kaTsNCgkJCQkkaSsrOw0KCQkJfQ0KCQkJJGl0ZW0tPmFsaWFzID0gJHRtcGFsaWFzOw0KCQl9DQoNCgkJLy8gRklFTERTIFRPIFVQREFURQ0KCQkkcXVlcnkgPSAoaXNzZXQoJGl0ZW0tPmlkKT8iVVBEQVRFICI6IklOU0VSVCBJTlRPICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgDQoJCQl1c2VyZGVmaW5lZDI9PywNCgkJCXBhcmVudD0/LA0KCQkJbmFtZT0/LA0KCQlhbGlhcz0/LA0KCQlkYXRlX21vZGlmaWVkPT8sDQoJCWFjdGl2ZT0iLihpc3NldCgkaXRlbS0+YWN0aXZlKT8kaXRlbS0+YWN0aXZlOjEpLiIsDQoJCWlzZGVmYXVsdD0iLihpc3NldCgkaXRlbS0+aXNkZWZhdWx0KT8kaXRlbS0+aXNkZWZhdWx0OjApLiIiOw0KCQkJDQoJCS8vIFZBTFVFUw0KCQkkdmFsdWVzID0gYXJyYXkoJGl0ZW0tPnVzZXJkZWZpbmVkMiwNCgkJCSRpdGVtLT5wYXJlbnQsDQoJCQlhZGRzbGFzaGVzKCRpdGVtLT5uYW1lKSwkaXRlbS0+YWxpYXMsc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSkpOw0KDQoJCWlmKGlzc2V0KCRpdGVtLT5pZCkpew0KCQkJJGV2ZW50ID0gImF2cGxheWVyX21vZGlmaWVkIjsNCgkJCSRxdWVyeSAuPSAiIFdIRVJFIGlkPT87IjsNCgkJCWFycmF5X3B1c2goJHZhbHVlcywkaXRlbS0+aWQpOw0KCQl9ZWxzZXsNCgkJCS8vIE5FVyBJVEVNDQoJCQkkcXVlcnkgLj0gIiwgZGF0ZV9jcmVhdGVkPT8iOw0KCQkJJHZhbHVlc1tdID0gc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSk7DQoJCQkkZXZlbnQgPSAiYXZwbGF5ZXJfYWRkZWQiOw0KCQkJLy8gZ2V0IGEgbmV3IGlkIGZyb20gdGhlIHNlcXVlbmNlIHRhYmxlDQoJCQkkaXRlbS0+aWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZV9zZXEiKTsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3AgLSBzbyB3ZSBtdXN0IHB1dCBhbGwgb3RoZXIgaXRlbXMgZG93biBmcm9tIG9uZSBzdGVwLCBhbmQgdGhlbiBzZXQgdGhpcyBpdGVtJ3Mgb3JkZXIgdG8gMQ0KCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIHBhcmVudD0/IjsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9MSwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9ZWxzZXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSBib3R0b20gLSBzbyB3ZSBtdXN0IHNldCB0aGUgaXRlbV9vcmRlciB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zICsgMQ0KCQkJCSRpdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJaWYoaXNzZXQoJHBhcmFtc1sib2xkcGFyZW50Il0pICYmICRwYXJhbXNbIm9sZHBhcmVudCJdICE9ICRpdGVtLT5wYXJlbnQpew0KCQkvLyB0aGUgaXRlbSBpcyBjaGFuZ2luZyBwYXJlbnQsIGFuZCB3ZSdyZSBvcmRlcmluZyBieSBwYXJlbnRzDQoJCQ0KCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF9tZWRpYWZpbGUiLGZhbHNlKSl7DQoJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3ANCgkJCQ0KCQkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMgV0lUSCBUSEUgT0xEIFBBUkVOVA0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyBBTkQgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPml0ZW1fb3JkZXIsICRwYXJhbXNbIm9sZHBhcmVudCJdKSk7DQoJCQkvLyBHRVQgTkVXIElURU0gT1JERVINCgkJCSRpdGVtLT5pdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoNCgkJfWVsc2V7DQoNCgkJCS8vIFVQREFURSBUSEUgT1JERVIgT0YgVEhFIElURU1TIFdJVEggVEhFIE9MRCBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gQU5EIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkcGFyYW1zWyJvbGRwYXJlbnQiXSkpOw0KCQkJLy8gVVBEQVRFIE5FVyBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJLy8gR0VUIE5FVyBJVEVNIE9SREVSDQoJCQkkaXRlbS0+aXRlbV9vcmRlciA9IDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoJCQ0KCQl9DQoJfQ0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4ibWVkaWFmaWxlIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgIm1lZGlhZmlsZSIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKGlzc2V0KCRwYXJhbXNbImFkZF9tZWRpYWZpbGUiXSkpew0KCQkJCSRwYXJhbXMgPSBhcnJheSgiQmlkIj0+JGl0ZW0tPmlkLCJmaWVsZCI9PiJtZWRpYWZpbGUiLCJ0YWJsZW5hbWUiPT4iYXZwbGF5ZXJfbWVkaWFmaWxlIiwicHJlZml4Ij0+IkIiLCAic3RhcnRkaXIiPT4ibWVkaWEiLCAibW9kZSI9PiJmaWxlIik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImJyb3dzZWZpbGVzIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicmVtb3ZlX21lZGlhZmlsZSJdKSl7DQoJCQkJJHBhcmFtcyA9IGFycmF5KCJCaWQiPT4kaXRlbS0+aWQsImZpZWxkIj0+Im1lZGlhZmlsZSIsImxldmVsIj0+Im1lZGlhZmlsZSIsInRhYmxlbmFtZSI9PiJhdnBsYXllcl9tZWRpYWZpbGUiLCJwcmVmaXgiPT4iQiIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJhc3NpZ25maWxlIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYWRkX3BpY3R1cmUiXSkpew0KCQkJCSRwYXJhbXMgPSBhcnJheSgiQmlkIj0+JGl0ZW0tPmlkLCJmaWVsZCI9PiJwaWN0dXJlIiwidGFibGVuYW1lIj0+ImF2cGxheWVyX21lZGlhZmlsZSIsInByZWZpeCI9PiJCIiwgInN0YXJ0ZGlyIj0+IiIsICJzaXplIj0+IjEyMHgxMDAiLCAibW9kZSI9PiJpbWFnZSIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJicm93c2VmaWxlcyIsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInJlbW92ZV9waWN0dXJlIl0pKXsNCgkJCQkkcGFyYW1zID0gYXJyYXkoIkJpZCI9PiRpdGVtLT5pZCwiZmllbGQiPT4icGljdHVyZSIsImxldmVsIj0+Im1lZGlhZmlsZSIsInRhYmxlbmFtZSI9PiJhdnBsYXllcl9tZWRpYWZpbGUiLCJwcmVmaXgiPT4iQiIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJhc3NpZ25maWxlIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoJHJlZGlyZWN0ID09IGZhbHNlKXsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYXBwbHkiXSkpew0KCQkJCWVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpOw0KCQkJfWVsc2V7DQoJCQkJJHBhcmFtcyA9IGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgImFjdGl2ZV90YWIiPT4ibWVkaWFmaWxlIik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHBhcmFtcyk7CQ0KCQkJfQ0KCX0NCgkvLyBFTkQgT0YgRk9STSBTVUJNSVNTSU9ODQp9DQoNCg0KDQovKiAjIyBQUkVQQVJJTkcgU01BUlRZIEVMRU1FTlRTDQpDcmVhdGVJbnB1dFRleHQgOiAoaWQsbmFtZSx2YWx1ZSxzaXplLG1heGxlbmd0aCkNCkNyZWF0ZVRleHRBcmVhIDogKHd5c2l3eWcsaWQsdGV4dCxuYW1lKQ0KQ3JlYXRlSW5wdXRTZWxlY3RMaXN0IDogKGlkLG5hbWUsaXRlbXMsc2VsZWN0ZWRpdGVtcyxzaXplKQ0KQ3JlYXRlSW5wdXREcm9wZG93biA6IChpZCxuYW1lLGl0ZW1zLHNpbmRleCxzdmFsdWUpDQoqLw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm1lZGlhZmlsZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfbWVkaWFmaWxlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtZWRpYWZpbGVfaW5wdXQiLCAoKGlzc2V0KCRpdGVtLT5tZWRpYWZpbGUpICYmICRpdGVtLT5tZWRpYWZpbGUpPyRpdGVtLT5tZWRpYWZpbGUtPnBpYy4nPGEgaHJlZj0iJy4kaXRlbS0+bWVkaWFmaWxlLT51cmwuJyIgPicuJGl0ZW0tPm1lZGlhZmlsZS0+ZmlsZXBhdGguIjwvYT4gKCIuJGl0ZW0tPm1lZGlhZmlsZS0+c2l6ZV93Zm9ybWF0LiIpPGJyLz4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInJlbW92ZV9tZWRpYWZpbGUiLCR0aGlzLT5MYW5nKCJSZW1vdmUiKSkuIiAiOiIiKS4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJhZGRfbWVkaWFmaWxlIiwkdGhpcy0+TGFuZygibWVkaWFmaWxlX3NlbGVjdF9tZWRpYWZpbGUiKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwaWN0dXJlX2xhYmVsIiwgJHRoaXMtPkxhbmcoIm1lZGlhZmlsZV9waWN0dXJlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwaWN0dXJlX2lucHV0IiwgKChpc3NldCgkaXRlbS0+cGljdHVyZSkgJiYgJGl0ZW0tPnBpY3R1cmUpPyc8aW1nIHNyYz0iJy4kaXRlbS0+cGljdHVyZS0+dXJsLiciIC8+PGJyLz4nLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInJlbW92ZV9waWN0dXJlIiwkdGhpcy0+TGFuZygiUmVtb3ZlIikpLiIgIjoiIikuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwiYWRkX3BpY3R1cmUiLCR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfc2VsZWN0X3BpY3R1cmUiKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDJfbGFiZWwiLCAkdGhpcy0+TGFuZygibWVkaWFmaWxlX3VzZXJkZWZpbmVkMiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidXNlcmRlZmluZWQyX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJCdXNlcmRlZmluZWQyIiwkdXNlcmRlZmluZWQyb3B0aW9ucywtMSxpc3NldCgkaXRlbSk/JGl0ZW0tPnVzZXJkZWZpbmVkMjowKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5hbWVfbGFiZWwiLCAkdGhpcy0+TGFuZygibmFtZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCbmFtZSIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5uYW1lOiIiLDUwLDY0KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudF9sYWJlbCIsICR0aGlzLT5MYW5nKCJwbGF5ZXIiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiQnBhcmVudCIsJHBhcmVudG9wdGlvbnMsLTEsaXNzZXQoJGl0ZW0pPyRpdGVtLT5wYXJlbnQ6MCkpO2lmKGlzc2V0KCRpdGVtKSkgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19sYWJlbCIsICR0aGlzLT5MYW5nKCJhbGlhcyIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJhbGlhcyIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5hbGlhczoiIiw1MCw2NCkpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWFsaWFzIixmYWxzZSk7DQp9ZWxzZXsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsaXNzZXQoJGl0ZW0tPmFsaWFzKT8iKGFsaWFzIDogIi4kaXRlbS0+YWxpYXMuIikiOmZhbHNlKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgZmFsc2UpOw0KfQ0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImVkaXR0aXRsZSIsICR0aGlzLT5MYW5nKCJlZGl0X21lZGlhZmlsZSIpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiYXBwbHkiLCAoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpPyR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJhcHBseSIsIGxhbmcoImFwcGx5IikpOiIiKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FuY2VsIiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKSk7DQoNCg0KLy8gRElTUExBWUlORw0KaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpew0KCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRCLnRwbCIpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaWQiLCAkaXRlbS0+aWQpOw0KCQlpZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPnBhcmVudCkpIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaXRlbV9vcmRlciIsICRpdGVtLT5pdGVtX29yZGVyKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCQ0KDQp9ZWxzZXsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiZWRpdEIudHBsIik7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.editTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCiR0cGxjb250ZW50ID0gJyc7CmlmKCAoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSApICYmIGlzc2V0KCRwYXJhbXNbJ3RwbG5hbWUnXSkgKXsKCWlmKCRwYXJhbXNbJ3RwbG5hbWUnXSAhPSAnJyl7CgkJaWYoaXNzZXQoJHBhcmFtc1snaXNuZXcnXSkpCSRwYXJhbXNbJ3RwbG5hbWUnXSA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1sndHBsbmFtZSddLCBmYWxzZSk7CgkJJHRwbGNvbnRlbnQgPSAkcGFyYW1zWyd0cGxjb250ZW50J107CgkJaWYoJHRoaXMtPlNldFRlbXBsYXRlKCRwYXJhbXNbJ3RwbG5hbWUnXSwkcGFyYW1zWyd0cGxjb250ZW50J10sJHRoaXMtPkdldE5hbWUoKSkpOwoJCWlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCQl9ZWxzZXsKCQkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSk7CgkJfQoJfWVsc2V7CgkJZWNobyAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9taXNzZ2ludmFsdWUnKS4nPC9kaXY+JzsKCX0KfWVsc2VpZiggaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSApewoJJHRwbGNvbnRlbnQgPSAkdGhpcy0+R2V0VGVtcGxhdGUoICRwYXJhbXNbJ3RwbG5hbWUnXSwgJHRoaXMtPkdldE5hbWUoKSApOwp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidGVtcGxhdGUiLCAkdGhpcy0+TGFuZygidGVtcGxhdGUiKSwgdHJ1ZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoImhlbHB0YWIiLCAkdGhpcy0+TGFuZygidGVtcGxhdGV2YXJzIiksIGZhbHNlKTsJCQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigidGVtcGxhdGUiKTsKCQllY2hvICc8aDE+Jy4kdGhpcy0+TGFuZygiZWRpdHRlbXBsYXRlIikuJzwvaDE+JzsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkKTsKCQkvL2VjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImFwcGx5IiwgbGFuZygiYXBwbHkiKSkuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkuJzwvcD48YnIvPjxici8+JzsKCQllY2hvICcJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+TGFuZygnbmFtZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CgkJaWYoaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSAmJiAkcGFyYW1zWyd0cGxuYW1lJ10gIT0gJycpewoJCSAgICBlY2hvICRwYXJhbXNbJ3RwbG5hbWUnXS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAidHBsbmFtZSIsICRwYXJhbXNbJ3RwbG5hbWUnXSk7CgkJfWVsc2V7CgkJICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3RwbG5hbWUnLCcnLDMwLDY0KTsKCQl9CgkJZWNobyAnPC9wPgoJCSAgICA8L2Rpdj4KCQknOwoJCWVjaG8gJwk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5MYW5nKCd0ZW1wbGF0ZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdHBsY29udGVudCwndHBsY29udGVudCcpLic8L3A+CgkJICAgIDwvZGl2PgoJCSc7CgkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLicgJy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiYXBwbHkiLCBsYW5nKCJhcHBseSIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKS4nPC9wPic7CgkJaWYoIWlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgfHwgJHBhcmFtc1sidHBsbmFtZSJdID09ICcnKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJpc25ldyIsICJ5ZXMiKTsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigiaGVscHRhYiIpOwoJCWVjaG8gJzxkaXYgaWQ9InRlbXBsYXRlaGVscCI+Jy4kdGhpcy0+TGFuZygndGVtcGxhdGVoZWxwJykuJzwvZGl2Pic7CgkJZWNobyAnCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWZ1bmN0aW9uIGN0bG1tX2Rpc3BsYXl0b2dnbGUoZWxlKXsKCQlpZighZWxlIHx8ICFlbGUucGFyZW50Tm9kZSkJcmV0dXJuIGZhbHNlOwoJCXZhciB0aGVkaXYgPSBlbGUucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2IilbMF07CgkJaWYoIXRoZWRpdikJcmV0dXJuIGZhbHNlOwoJCWlmKHRoZWRpdi5zdHlsZS5kaXNwbGF5ID09ICJub25lIil7CgkJCXRoZWRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCQkJZWxlLmlubmVySFRNTCA9ICJWIiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDQpOwoJCX1lbHNlewoJCQl0aGVkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQkJZWxlLmlubmVySFRNTCA9ICImZ3Q7IiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDEpOwoJCX0KCX0KCXZhciB0aGVkaXZzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlbXBsYXRlaGVscCIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTsKCWZvcihpPTA7aTx0aGVkaXZzLmxlbmd0aDtpKyspewoJCWlmKHRoZWRpdnNbaV0uY2xhc3NOYW1lID09ICJ0cGx2YXJzX2hpZGUiKQl0aGVkaXZzW2ldLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cgl9Cjwvc2NyaXB0PgonOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.export.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ2RvZXhwb3J0J10pKXsKCQoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCgkkb3V0cHV0ID0gJyc7Cglmb3JlYWNoKCRwYXJhbXNbJ3NlbGVjdGVkbGV2ZWxzJ10gYXMgJGxldmVsKXsKCQkkb3V0cHV0IC49ICcKPHRhYmxlIG5hbWU9IicuJGxldmVsLiciPgoJJzsKCQkKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJGxldmVsOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSRvdXRwdXQgLj0gIjxpdGVtPgoJCSI7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkb3V0cHV0IC49ICIKCTwvaXRlbT4KCSI7CgkJfQoJCSRvdXRwdXQgLj0gIgo8L3RhYmxlPgoKIjsKCX0KCgoKCS8vIGV4cG9ydGluZyBtdWx0aXBsZSBmaWxlIGZpZWxkcyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX211bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSR0bXBvdXRwdXQgLj0gJzxpdGVtPgoJCSc7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkdG1wb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkdG1wb3V0cHV0IC49ICcKCTwvaXRlbT4KCSc7CgkJfQoJCQoJCWlmKCR0bXBvdXRwdXQgIT0gJycpCSRvdXRwdXQgLj0gJwo8dGFibGUgbmFtZT0ibXVsdGlwbGVmaWxlc2ZpZWxkcyI+CgknLiR0bXBvdXRwdXQuJwo8L3RhYmxlPgoKJzsKCgoKCS8vIGV4cG9ydGluZyBsaXN0b3B0aW9ucyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX2ZpZWxkb3B0aW9ucyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJd2hpbGUgKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApIHsKCQkJJHRtcG91dHB1dCAuPSAnPGl0ZW0+CgkJJzsKCQkJZm9yZWFjaCgkcm93IGFzICRmaWVsZD0+JHZhbHVlKXsKCQkJCSR0bXBvdXRwdXQgLj0gJzwnLiRmaWVsZC4nPjwhW0NEQVRBWycuc3RyaXBzbGFzaGVzKCR2YWx1ZSkuJ11dPjwvJy4kZmllbGQuJz4KCQknOwoJCQl9CgkJCSR0bXBvdXRwdXQgLj0gJwoJPC9pdGVtPgoJJzsKCQl9CgkJCgkJaWYoJHRtcG91dHB1dCAhPSAnJykJJG91dHB1dCAuPSAnCjx0YWJsZSBuYW1lPSJmaWVsZG9wdGlvbnMiPgoJJy4kdG1wb3V0cHV0LicKPC90YWJsZT4KCic7CgoKCgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2V4cG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snZXhwb3J0X3RlbXBsYXRlcyddKXsKCQlmb3JlYWNoKCR0aGlzLT5MaXN0VGVtcGxhdGVzKCkgYXMgJHRwbG5hbWUpewoJCQkkb3V0cHV0IC49ICcKPHRlbXBsYXRlIG5hbWU9IicuJHRwbG5hbWUuJyI+PCFbQ0RBVEFbJy4kdGhpcy0+R2V0VGVtcGxhdGUoJHRwbG5hbWUpLiddXT48L3RlbXBsYXRlPgonOwoJCX0KCX0KCQoJaWYoJG91dHB1dCA9PSAnJyl7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2V4cG9ydCcsICRyZXR1cm5pZCk7Cgl9ZWxzZXsKCQkkb3V0cHV0ID0gIjxyb290PiIuJG91dHB1dC4iPC9yb290PiI7CgkJCgkJJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOyAKCQlmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQkJCgoJCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKCQloZWFkZXIoJ0V4cGlyZXM6IDAnKTsKCQloZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcpOwoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwoJCWhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwoJCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94bWwnKTsKCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLiR0aGlzLT5HZXROYW1lKCkuJy54bWwiJyApOwoJCWhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBzdHJsZW4oJG91dHB1dCkpOwoJCgkJcHJpbnQoJG91dHB1dCk7CgkKCQlAZmx1c2goKTsgQG9iX2ZsdXNoKCk7IEBvYl9mbHVzaCgpOwoJfQkKCn1lbHNlewoJCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZXhwb3J0IiwgJHJldHVybmlkKTsKCWVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdleHBvcnRfdGl0bGUnKS4nPC9oMz4nOwoJZWNobyAnPGZpZWxkc2V0PjxsZWdlbmQ+PGI+Jy4kdGhpcy0+TGFuZygnZXhwb3J0d2hpY2hsZXZlbHMnKS4nPC9iPjwvbGVnZW5kPic7CgkkY2hvaWNlcyA9IGFycmF5KCk7Cglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRsZXZlbCkJJGNob2ljZXNbJGxldmVsXSA9ICRsZXZlbDsKCWVjaG8gJHRoaXMtPkRvQ2hlY2tib3hlcygkaWQsICdzZWxlY3RlZGxldmVscycsICRjaG9pY2VzLCAkY2hvaWNlcykuJzwvZmllbGRzZXQ+PGJyLz4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImV4cG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdleHBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9leHBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.FEaddA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyB3ZSByZXRyaWV2ZSBzb21lIHByZWZlcmVuY2VzDQokZGVjb2RlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2RlY29kZWVudGl0aWVzIixmYWxzZSk7DQokd3lzaXd5ZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmZV93eXNpd3lnIiwgZmFsc2UpOw0KJGFsbG93ZmlsZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3dmaWxlcyIsIGZhbHNlKTsNCiRhbGxvd25hbWVjaGFuZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3duYW1lY2hhbmdlIiwgZmFsc2UpOw0KJGFsbG93YWRkbmV3ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2FsbG93YWRkbmV3IiwgZmFsc2UpOw0KJGZpbGVtYXhzaXplID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfbWF4ZmlsZXNpemUiLCAiIik7DQoNCiRjYXB0Y2hhID0gZmFsc2U7DQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfdXNlY2FwdGNoYSIsIGZhbHNlKSAmJiBpc3NldCgkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdKSAmJiAkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdWyJhY3RpdmUiXSl7DQoJJGNhcHRjaGEgPSAkdGhpcy0+Z2V0TW9kdWxlSW5zdGFuY2UoIkNhcHRjaGEiKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KDQokaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KJGl0ZW0tPmlkID0gZmFsc2U7DQoNCi8vIGhlcmUgd2UgcmV0cmlldmUgdGhlIGl0ZW0gd2UncmUgd29ya2luZyB3aXRoLg0KLy8gV2UgY2FuJ3Qgd29yayB3aXRoIGVpdGhlciBpZCBvciBhbGlhcyBhbG9uZSwgYXMgaXQgaXMgYWxpYXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBpbiB0aGUgdGFncyBidXQgYWxpYXMgY2FuIGNoYW5nZS4uLg0KaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmIGlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJmZWFkZF9pZCJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn1lbHNlaWYoIWlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pICYmIGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIFdIRVJFIGFsaWFzPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJhbGlhcyJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn0NCg0KLy8gd2UgY2hlY2sgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBwZXJtaXNzaW9uICggZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCBkb2VzIG1vc3Qgb2YgdGhlIGpvYiAtIHNlZSBGQVEpDQppZigJKCEkYWxsb3dhZGRuZXcgJiYgISRpdGVtLT5pZCkJfHwNCgkoISR0aGlzLT5mZWFkZF9wZXJtY2hlY2soInBsYXllciIsICRpdGVtLT5pZCwgJGl0ZW0tPmlkPyRpdGVtLT5hbGlhczpmYWxzZSkpDQogICl7DQoJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9mZWFkZGRlbmllZCIpLiI8L2Rpdj4iOw0KCXJldHVybiBmYWxzZTsNCn0NCg0KaWYoaXNzZXQoJHBhcmFtc1siZmVhZGRfaWQiXSkgJiYgaXNzZXQoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0pKXsNCgkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tdWx0aXBsZWZpbGVzZmllbGRzIFdIRVJFIGZpbGVpZD0/IEFORCBpdGVtaWQ9PyBMSU1JVCAxIjsNCgkkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0sICRpdGVtLT5pZCkgKTsNCgl1bnNldCgkcGFyYW1zWyJmZWFkZGZpbGVkZWxldGUiXSk7DQp9DQoNCiR1c2VyZGVmaW5lZDFvcHRpb25zID0gJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoInBsYXllcl91c2VyZGVmaW5lZDEiKTsNCiRwbGF5ZXJ0eXBlb3B0aW9ucyA9ICR0aGlzLT5nZXRfcHJlZGVmaW5lZG9wdGlvbnMoInBsYXllcl9wbGF5ZXJ0eXBlIik7DQoNCg0KLy8gQkVHSU4gRk9STSBTVUJNSVNTSU9ODQppZiAoaXNzZXQoJHBhcmFtc1siZmVhZGRzdWJtaXQiXSkpIHsNCgkNCglkZWJ1Z19idWZmZXIoIkVkaXQgRm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQiLl9fTElORV9fKTsNCg0KCS8vIFJFVFJJRVZJTkcgVEhFIEZPUk0gVkFMVUVTIChhbmQgZXNjYXBpbmcgaXQsIGlmIG5lZWRlZCkNCglpZihpc3NldCgkcGFyYW1zWyJmZWFkZF9pdGVtX29yZGVyIl0pKSAkaXRlbS0+aXRlbV9vcmRlciA9ICRwYXJhbXNbImZlYWRkX2l0ZW1fb3JkZXIiXTsNCgkkaXRlbS0+bG9jYXRpb24gPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF9sb2NhdGlvbiJdKTokcGFyYW1zWyJmZWFkZF9sb2NhdGlvbiJdOw0KCQkkaXRlbS0+d2lkdGggPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF93aWR0aCJdKTokcGFyYW1zWyJmZWFkZF93aWR0aCJdOw0KCQkkaXRlbS0+aGVpZ2h0ID0gJGRlY29kZT9odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1siZmVhZGRfaGVpZ2h0Il0pOiRwYXJhbXNbImZlYWRkX2hlaWdodCJdOw0KCQkkaXRlbS0+cGFyYW1ldGVycyA9ICRkZWNvZGU/aHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbImZlYWRkX3BhcmFtZXRlcnMiXSk6JHBhcmFtc1siZmVhZGRfcGFyYW1ldGVycyJdOw0KCQkkaXRlbS0+dXNlcmRlZmluZWQxID0gJGRlY29kZT9odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1siZmVhZGRfdXNlcmRlZmluZWQxIl0pOiRwYXJhbXNbImZlYWRkX3VzZXJkZWZpbmVkMSJdOw0KCQkkaXRlbS0+cGxheWVydHlwZSA9ICRkZWNvZGU/aHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbImZlYWRkX3BsYXllcnR5cGUiXSk6JHBhcmFtc1siZmVhZGRfcGxheWVydHlwZSJdOw0KCQkkaXRlbS0+bmFtZSA9ICRkZWNvZGU/aHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbImZlYWRkX25hbWUiXSk6JHBhcmFtc1siZmVhZGRfbmFtZSJdOw0KCQkNCgkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJDQoJJGF1dG9pbmNyZW1lbnRhbGlhcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhdXRvaW5jcmVtZW50X2FsaWFzIixmYWxzZSk7DQoNCglpZigkY2FwdGNoYSAmJiAhJGNhcHRjaGEtPmNoZWNrQ2FwdGNoYSgkcGFyYW1zWyJjYXB0Y2hhX2lucHV0Il0pKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9jYXB0Y2hhIikuIjwvZGl2PiI7DQoJfWVsc2VpZigJIWlzc2V0KCRwYXJhbXNbImZlYWRkX2xvY2F0aW9uIl0pIHx8ICRwYXJhbXNbImZlYWRkX2xvY2F0aW9uIl0gPT0gIiINCgkJCSB8fCAhaXNzZXQoJHBhcmFtc1siZmVhZGRfbmFtZSJdKSB8fCAkcGFyYW1zWyJmZWFkZF9uYW1lIl0gPT0gIiINCgkJCSApDQoJew0KCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpLiI8L2Rpdj4iOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIiLCAkaXRlbS0+YWxpYXMsICRpdGVtLT5pZD8kaXRlbS0+aWQ6ZmFsc2UpKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9hbHJlYWR5ZXhpc3RzIikuIjwvZGl2PiI7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIiwgJHRtcGFsaWFzLCAkaXRlbS0+aWQ/JGl0ZW0tPmlkOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKCRpdGVtLT5pZD8iVVBEQVRFICI6IklOU0VSVCBJTlRPICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciBTRVQgDQoJCQlsb2NhdGlvbj0/LA0KCQkJCXdpZHRoPT8sDQoJCQkJaGVpZ2h0PT8sDQoJCQkJcGFyYW1ldGVycz0/LA0KCQkJCXVzZXJkZWZpbmVkMT0/LA0KCQkJCXBsYXllcnR5cGU9PywNCgkJCQluYW1lPT8sDQoJCWFsaWFzPT8sDQoJCWRhdGVfbW9kaWZpZWQ9PywNCgkJYWN0aXZlPSIuKGlzc2V0KCRpdGVtLT5hY3RpdmUpPyRpdGVtLT5hY3RpdmU6MSkuIiwNCgkJaXNkZWZhdWx0PSIuKGlzc2V0KCRpdGVtLT5pc2RlZmF1bHQpPyRpdGVtLT5pc2RlZmF1bHQ6MCkuIiI7DQoJCQkNCgkJLy8gVkFMVUVTDQoJCSR2YWx1ZXMgPSBhcnJheShhZGRzbGFzaGVzKCRpdGVtLT5sb2NhdGlvbiksDQoJCQkJYWRkc2xhc2hlcygkaXRlbS0+d2lkdGgpLA0KCQkJCWFkZHNsYXNoZXMoJGl0ZW0tPmhlaWdodCksDQoJCQkJYWRkc2xhc2hlcygkaXRlbS0+cGFyYW1ldGVycyksDQoJCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMSwNCgkJCQkkaXRlbS0+cGxheWVydHlwZSwNCgkJCQlhZGRzbGFzaGVzKCRpdGVtLT5uYW1lKSwkaXRlbS0+YWxpYXMsc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSkpOw0KDQoJCWlmKCRpdGVtLT5pZCl7DQoJCQkkZXZlbnQgPSAiYXZwbGF5ZXJfbW9kaWZpZWQiOw0KCQkJJHF1ZXJ5IC49ICIgV0hFUkUgaWQ9PzsiOw0KCQkJYXJyYXlfcHVzaCgkdmFsdWVzLCRpdGVtLT5pZCk7DQoJCX1lbHNlew0KCQkJLy8gTkVXIElURU0NCgkJCSRldmVudCA9ICJhdnBsYXllcl9hZGRlZCI7DQoJCQkkcXVlcnkgLj0gIiwgZGF0ZV9jcmVhdGVkPT8iOw0KCQkJJHZhbHVlc1tdID0gc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSk7DQoJCQkvLyBnZXQgYSBuZXcgaWQgZnJvbSB0aGUgc2VxdWVuY2UgdGFibGUNCgkJCSRpdGVtLT5pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyX3NlcSIpOw0KCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoIm5ld2l0ZW1zZmlyc3RfcGxheWVyIixmYWxzZSkpew0KCQkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIHRvcCAtIHNvIHdlIG11c3QgcHV0IGFsbCBvdGhlciBpdGVtcyBkb3duIGZyb20gb25lIHN0ZXAsIGFuZCB0aGVuIHNldCB0aGlzIGl0ZW0ncyBvcmRlciB0byAxDQoJCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkiOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkyKTsNCgkJCQkkcXVlcnkgLj0gIixpdGVtX29yZGVyPTEsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfWVsc2V7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgYm90dG9tIC0gc28gd2UgbXVzdCBzZXQgdGhlIGl0ZW1fb3JkZXIgdG8gdGhlIG51bWJlciBvZiBpdGVtcyArIDENCgkJCQkkaXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygicGxheWVyIikgKyAxOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9Ii4kaXRlbV9vcmRlci4iLCBpZD0iLiRpdGVtLT5pZDsNCgkJCX0NCgkJfQ0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsNCg0KDQoJCQ0KDQoJCWlmKCRkYi0+QWZmZWN0ZWRfUm93cygpKXsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfcGxheWVyIixmYWxzZSkpew0KCQkJCS8vIElGIEFOWVRISU5HIFdBUyBNT0RJRklFRCwgV0UgTVVTVCBVUERBVEUgVEhFIFNFQVJDSCBJTkRFWCBBTkQgU0VORCBBTiBFVkVOVC4uLg0KCQkJCWlmKGlzc2V0KCRldmVudCkpCSR0aGlzLT5TZW5kRXZlbnQoJGV2ZW50LCBhcnJheSgid2hhdCI9PiJwbGF5ZXIiLCAiaXRlbWlkIiA9PiAkaXRlbS0+aWQsICJhbGlhcyI9PiRpdGVtLT5hbGlhcykpOw0KCQkJCSRtb2R1bGUgPSYgJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCJTZWFyY2giKTsNCgkJCQlpZigkbW9kdWxlKSB7DQoJCQkJCWRlYnVnX2J1ZmZlcigiU0VBUkhDIElOREVYIFdBUyBVUERBVEVEICIuX19MSU5FX18pOw0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInBsYXllciIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKS4iPC9kaXY+IjsNCgkJfQ0KCQkNCgkJLy8gaWYgYSBjb250ZW50IHJlZGlyZWN0aW9uIGhhcyBiZWVuIHNldCwgd2UgcmVkaXJlY3QuLi4NCgkJJHJlZGlyZWN0X3RvX2lkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2FmdGVyc3VibWl0IiwtMSk7DQoJCWlmKCAkcmVkaXJlY3RfdG9faWQgPiAxICkJJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmVkaXJlY3RfdG9faWQpOw0KCX0NCgkvLyBFTkQgT0YgRk9STSBTVUJNSVNTSU9ODQoJDQoJaWYoIWlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pICYmIGlzc2V0KCRpdGVtLT5pZCkpCSRwYXJhbXNbImZlYWRkX2lkIl0gPSAkaXRlbS0+aWQ7DQp9DQoNCmlmKCRpdGVtLT5pZCkgew0KCS8vIGlmIHdlIGFyZSB3b3JraW5nIG9uIGFuIGl0ZW0gdGhhdCBleGlzdHMsIHdlIGxvYWQgaXQuIFdlIG11c3QgZG8gdGhpcyBldmVuIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBvdGhlcndpc2Ugd2Ugd29uJ3QgaGF2ZSB0aGUgZmlsZSBmaWVsZHMNCgkkaXRlbXMgPSAkdGhpcy0+Z2V0X2xldmVsX3BsYXllcihhcnJheSgiaWQiPT4kaXRlbS0+aWQpKTsNCgkkaXRlbSA9ICRpdGVtc1swXTsNCn0NCg0KDQovKiAjIyBQUkVQQVJJTkcgU01BUlRZIEVMRU1FTlRTDQpDcmVhdGVJbnB1dFRleHQgOiAoaWQsbmFtZSx2YWx1ZSxzaXplLG1heGxlbmd0aCkNCkNyZWF0ZVRleHRBcmVhIDogKHd5c2l3eWcsaWQsdGV4dCxuYW1lKQ0KQ3JlYXRlSW5wdXRTZWxlY3RMaXN0IDogKGlkLG5hbWUsaXRlbXMsc2VsZWN0ZWRpdGVtcyxzaXplKQ0KQ3JlYXRlSW5wdXREcm9wZG93biA6IChpZCxuYW1lLGl0ZW1zLHNpbmRleCxzdmFsdWUpDQoqLw0KDQppZighJGl0ZW0tPmlkIHx8ICRhbGxvd25hbWVjaGFuZ2Upew0KCSRuYW1laW5wdXQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfbmFtZSIsJGl0ZW0tPmlkPyRpdGVtLT5uYW1lOiIiLDUwLDY0KTsNCn1lbHNlew0KCSRuYW1laW5wdXQgPSAkaXRlbS0+bmFtZS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZmVhZGRfbmFtZSIsICRpdGVtLT5uYW1lKTsNCn0NCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJuYW1lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2lucHV0IiwgJG5hbWVpbnB1dCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImxvY2F0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9sb2NhdGlvbiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibG9jYXRpb25faW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfbG9jYXRpb24iLCRpdGVtLT5pZD8kaXRlbS0+bG9jYXRpb246IiIsNTAsMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIndpZHRoX2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl93aWR0aCIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigid2lkdGhfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfd2lkdGgiLCRpdGVtLT5pZD8kaXRlbS0+d2lkdGg6IiIsMzAsMTApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiaGVpZ2h0X2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9oZWlnaHQiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImhlaWdodF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmZWFkZF9oZWlnaHQiLCRpdGVtLT5pZD8kaXRlbS0+aGVpZ2h0OiIiLDMwLDEwKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmFtZXRlcnNfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3BhcmFtZXRlcnMiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmFtZXRlcnNfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfcGFyYW1ldGVycyIsJGl0ZW0tPmlkPyRpdGVtLT5wYXJhbWV0ZXJzOiIiLDUwLDI1NSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDFfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3VzZXJkZWZpbmVkMSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidXNlcmRlZmluZWQxX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJmZWFkZF91c2VyZGVmaW5lZDEiLCR1c2VyZGVmaW5lZDFvcHRpb25zLC0xLCRpdGVtLT5pZD8kaXRlbS0+dXNlcmRlZmluZWQxOjApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGxheWVydHlwZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGxheWVydHlwZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiZmVhZGRfcGxheWVydHlwZSIsJHBsYXllcnR5cGVvcHRpb25zLC0xLCRpdGVtLT5pZD8kaXRlbS0+cGxheWVydHlwZTowKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsaXNzZXQoJGl0ZW0tPmFsaWFzKT8iKGFsaWFzIDogIi4kaXRlbS0+YWxpYXMuIikiOmZhbHNlKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfaW5wdXQiLCBmYWxzZSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZWRpdHRpdGxlIiwgJHRoaXMtPkxhbmcoImVkaXRfcGxheWVyIikpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJmZWFkZHN1Ym1pdCIsICR0aGlzLT5MYW5nKCJzdWJtaXQiKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjYW5jZWwiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZmVhZGRjYW5jZWwiLCAkdGhpcy0+TGFuZygiY2FuY2VsIikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FwdGNoYV9pbWFnZSIsICRjYXB0Y2hhPyRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCk6ZmFsc2UpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjYXB0Y2hhX2lucHV0IiwgJGNhcHRjaGE/JHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImNhcHRjaGFfaW5wdXQiLCIiLDMwLDEwKTpmYWxzZSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNhcHRjaGFfcHJvbXB0IiwgJGNhcHRjaGE/JHRoaXMtPkxhbmcoInByb21wdF9jYXB0Y2hhIik6ZmFsc2UpOw0KDQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbSIsICRpdGVtKTsNCg0KDQovLyBESVNQTEFZSU5HDQoJDQplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiRkVhZGRBIiwgJHJldHVybmlkLCAicG9zdCIsICJtdWx0aXBhcnQvZm9ybS1kYXRhIik7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImZyb250ZW5kX2FkZF9wbGF5ZXIudHBsIik7DQoNCmlmKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKXsNCgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmZWFkZF9pZCIsICRpdGVtLT5pZCk7DQoJaWYoaXNzZXQoJGl0ZW0tPnBhcmVudCkpIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZlYWRkX29sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZlYWRkX2l0ZW1fb3JkZXIiLCAkaXRlbS0+aXRlbV9vcmRlcik7DQp9DQplY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.FEaddB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyB3ZSByZXRyaWV2ZSBzb21lIHByZWZlcmVuY2VzDQokZGVjb2RlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2RlY29kZWVudGl0aWVzIixmYWxzZSk7DQokd3lzaXd5ZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmZV93eXNpd3lnIiwgZmFsc2UpOw0KJGFsbG93ZmlsZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3dmaWxlcyIsIGZhbHNlKTsNCiRhbGxvd25hbWVjaGFuZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3duYW1lY2hhbmdlIiwgZmFsc2UpOw0KJGFsbG93YWRkbmV3ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2FsbG93YWRkbmV3IiwgZmFsc2UpOw0KJGZpbGVtYXhzaXplID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfbWF4ZmlsZXNpemUiLCAiIik7DQoNCiRjYXB0Y2hhID0gZmFsc2U7DQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfdXNlY2FwdGNoYSIsIGZhbHNlKSAmJiBpc3NldCgkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdKSAmJiAkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdWyJhY3RpdmUiXSl7DQoJJGNhcHRjaGEgPSAkdGhpcy0+Z2V0TW9kdWxlSW5zdGFuY2UoIkNhcHRjaGEiKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KDQokaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KJGl0ZW0tPmlkID0gZmFsc2U7DQoNCi8vIGhlcmUgd2UgcmV0cmlldmUgdGhlIGl0ZW0gd2UncmUgd29ya2luZyB3aXRoLg0KLy8gV2UgY2FuJ3Qgd29yayB3aXRoIGVpdGhlciBpZCBvciBhbGlhcyBhbG9uZSwgYXMgaXQgaXMgYWxpYXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBpbiB0aGUgdGFncyBidXQgYWxpYXMgY2FuIGNoYW5nZS4uLg0KaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmIGlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJmZWFkZF9pZCJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn1lbHNlaWYoIWlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pICYmIGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFdIRVJFIGFsaWFzPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJhbGlhcyJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn0NCg0KLy8gd2UgY2hlY2sgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBwZXJtaXNzaW9uICggZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCBkb2VzIG1vc3Qgb2YgdGhlIGpvYiAtIHNlZSBGQVEpDQppZigJKCEkYWxsb3dhZGRuZXcgJiYgISRpdGVtLT5pZCkJfHwNCgkoISR0aGlzLT5mZWFkZF9wZXJtY2hlY2soIm1lZGlhZmlsZSIsICRpdGVtLT5pZCwgJGl0ZW0tPmlkPyRpdGVtLT5hbGlhczpmYWxzZSkpDQogICl7DQoJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9mZWFkZGRlbmllZCIpLiI8L2Rpdj4iOw0KCXJldHVybiBmYWxzZTsNCn0NCg0KaWYoaXNzZXQoJHBhcmFtc1siZmVhZGRfaWQiXSkgJiYgaXNzZXQoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0pKXsNCgkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tdWx0aXBsZWZpbGVzZmllbGRzIFdIRVJFIGZpbGVpZD0/IEFORCBpdGVtaWQ9PyBMSU1JVCAxIjsNCgkkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0sICRpdGVtLT5pZCkgKTsNCgl1bnNldCgkcGFyYW1zWyJmZWFkZGZpbGVkZWxldGUiXSk7DQp9DQoNCg0KaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZV9oaWVyYXJjaHkiLGZhbHNlKSl7DQoJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2FkbWluX2hpZXJhcmNoeW9wdGlvbnMoIm1lZGlhZmlsZSIsZmFsc2UpOw0KfWVsc2V7DQoJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X29wdGlvbnMoInBsYXllciIpOw0KfSR1c2VyZGVmaW5lZDJvcHRpb25zID0gJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiKTsNCg0KDQovLyBCRUdJTiBGT1JNIFNVQk1JU1NJT04NCmlmIChpc3NldCgkcGFyYW1zWyJmZWFkZHN1Ym1pdCJdKSkgew0KCQ0KCWRlYnVnX2J1ZmZlcigiRWRpdCBGb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZCIuX19MSU5FX18pOw0KDQoJLy8gUkVUUklFVklORyBUSEUgRk9STSBWQUxVRVMgKGFuZCBlc2NhcGluZyBpdCwgaWYgbmVlZGVkKQ0KCWlmKGlzc2V0KCRwYXJhbXNbImZlYWRkX2l0ZW1fb3JkZXIiXSkpICRpdGVtLT5pdGVtX29yZGVyID0gJHBhcmFtc1siZmVhZGRfaXRlbV9vcmRlciJdOw0KCSRpdGVtLT51c2VyZGVmaW5lZDIgPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF91c2VyZGVmaW5lZDIiXSk6JHBhcmFtc1siZmVhZGRfdXNlcmRlZmluZWQyIl07DQoJCSRpdGVtLT5wYXJlbnQgPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF9wYXJlbnQiXSk6JHBhcmFtc1siZmVhZGRfcGFyZW50Il07DQoJCSRpdGVtLT5uYW1lID0gJGRlY29kZT9odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1siZmVhZGRfbmFtZSJdKTokcGFyYW1zWyJmZWFkZF9uYW1lIl07DQoJCQ0KCSRpdGVtLT5hbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTsNCgkNCgkkYXV0b2luY3JlbWVudGFsaWFzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9pbmNyZW1lbnRfYWxpYXMiLGZhbHNlKTsNCg0KCWlmKCRjYXB0Y2hhICYmICEkY2FwdGNoYS0+Y2hlY2tDYXB0Y2hhKCRwYXJhbXNbImNhcHRjaGFfaW5wdXQiXSkpew0KCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX2NhcHRjaGEiKS4iPC9kaXY+IjsNCgl9ZWxzZWlmKAkhaXNzZXQoJHBhcmFtc1siZmVhZGRfbmFtZSJdKSB8fCAkcGFyYW1zWyJmZWFkZF9uYW1lIl0gPT0gIiINCgkJCSApDQoJew0KCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpLiI8L2Rpdj4iOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUiLCAkaXRlbS0+YWxpYXMsICRpdGVtLT5pZD8kaXRlbS0+aWQ6ZmFsc2UpKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9hbHJlYWR5ZXhpc3RzIikuIjwvZGl2PiI7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIiwgJHRtcGFsaWFzLCAkaXRlbS0+aWQ/JGl0ZW0tPmlkOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKCRpdGVtLT5pZD8iVVBEQVRFICI6IklOU0VSVCBJTlRPICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgDQoJCQl1c2VyZGVmaW5lZDI9PywNCgkJCQlwYXJlbnQ9PywNCgkJCQluYW1lPT8sDQoJCWFsaWFzPT8sDQoJCWRhdGVfbW9kaWZpZWQ9PywNCgkJYWN0aXZlPSIuKGlzc2V0KCRpdGVtLT5hY3RpdmUpPyRpdGVtLT5hY3RpdmU6MSkuIiwNCgkJaXNkZWZhdWx0PSIuKGlzc2V0KCRpdGVtLT5pc2RlZmF1bHQpPyRpdGVtLT5pc2RlZmF1bHQ6MCkuIiI7DQoJCQkNCgkJLy8gVkFMVUVTDQoJCSR2YWx1ZXMgPSBhcnJheSgkaXRlbS0+dXNlcmRlZmluZWQyLA0KCQkJCSRpdGVtLT5wYXJlbnQsDQoJCQkJYWRkc2xhc2hlcygkaXRlbS0+bmFtZSksJGl0ZW0tPmFsaWFzLHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpKTsNCg0KCQlpZigkaXRlbS0+aWQpew0KCQkJJGV2ZW50ID0gImF2cGxheWVyX21vZGlmaWVkIjsNCgkJCSRxdWVyeSAuPSAiIFdIRVJFIGlkPT87IjsNCgkJCWFycmF5X3B1c2goJHZhbHVlcywkaXRlbS0+aWQpOw0KCQl9ZWxzZXsNCgkJCS8vIE5FVyBJVEVNDQoJCQkkZXZlbnQgPSAiYXZwbGF5ZXJfYWRkZWQiOw0KCQkJJHF1ZXJ5IC49ICIsIGRhdGVfY3JlYXRlZD0/IjsNCgkJCSR2YWx1ZXNbXSA9IHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpOw0KCQkJLy8gZ2V0IGEgbmV3IGlkIGZyb20gdGhlIHNlcXVlbmNlIHRhYmxlDQoJCQkkaXRlbS0+aWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZV9zZXEiKTsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3AgLSBzbyB3ZSBtdXN0IHB1dCBhbGwgb3RoZXIgaXRlbXMgZG93biBmcm9tIG9uZSBzdGVwLCBhbmQgdGhlbiBzZXQgdGhpcyBpdGVtJ3Mgb3JkZXIgdG8gMQ0KCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIHBhcmVudD0/IjsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9MSwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9ZWxzZXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSBib3R0b20gLSBzbyB3ZSBtdXN0IHNldCB0aGUgaXRlbV9vcmRlciB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zICsgMQ0KCQkJCSRpdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJaWYoaXNzZXQoJHBhcmFtc1siZmVhZGRfb2xkcGFyZW50Il0pICYmICRwYXJhbXNbImZlYWRkX29sZHBhcmVudCJdICE9ICRpdGVtLT5wYXJlbnQpew0KCQkvLyB0aGUgaXRlbSBpcyBjaGFuZ2luZyBwYXJlbnQsIGFuZCB3ZSdyZSBvcmRlcmluZyBieSBwYXJlbnRzDQoJCQ0KCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF9tZWRpYWZpbGUiLGZhbHNlKSl7DQoJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3ANCgkJCQ0KCQkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMgV0lUSCBUSEUgT0xEIFBBUkVOVA0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyBBTkQgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPml0ZW1fb3JkZXIsICRwYXJhbXNbImZlYWRkX29sZHBhcmVudCJdKSk7DQoJCQkvLyBHRVQgTkVXIElURU0gT1JERVINCgkJCSRpdGVtLT5pdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoNCgkJfWVsc2V7DQoNCgkJCS8vIFVQREFURSBUSEUgT1JERVIgT0YgVEhFIElURU1TIFdJVEggVEhFIE9MRCBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gQU5EIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkcGFyYW1zWyJmZWFkZF9vbGRwYXJlbnQiXSkpOw0KCQkJLy8gVVBEQVRFIE5FVyBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJLy8gR0VUIE5FVyBJVEVNIE9SREVSDQoJCQkkaXRlbS0+aXRlbV9vcmRlciA9IDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoJCQ0KCQl9DQoJfQ0KDQoNCgkJaWYoaXNzZXQoJGl0ZW0tPmlkKSAmJiBpc3NldCgkX0ZJTEVTKSAmJiBpc3NldCgkX0ZJTEVTWyRpZC4iZmVmaWxlX21lZGlhZmlsZSJdKSAmJiAkX0ZJTEVTWyRpZC4iZmVmaWxlX21lZGlhZmlsZSJdWyJuYW1lIl0gIT0gIiIpew0KCQkJaWYoJGZpbGVtYXhzaXplICYmICRmaWxlbWF4c2l6ZSA+IDAgJiYgJF9GSUxFU1skaWQuImZlZmlsZV9tZWRpYWZpbGUiXVsic2l6ZSJdID4gJGZpbGVtYXhzaXplKXsNCgkJCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX2ZpbGV0b29iaWciKS4iPC9kaXY+IjsNCgkJCX1lbHNlew0KCQkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRfRklMRVNbJGlkLiJmZWZpbGVfbWVkaWFmaWxlIl1bIm5hbWUiXSwgIi4iKSwxKSk7DQoJCQkJJGFsbG93ZWRleHQgPSBmYWxzZTsNCgkJCQlpZiggISRhbGxvd2VkZXh0IHx8IGluX2FycmF5KCRleHRlbnNpb24sICRhbGxvd2VkZXh0KSApew0KCQkJCQlpZiggJGZpbGVwYXRoID0gJHRoaXMtPnBsVXBsb2FkRmlsZSgkX0ZJTEVTWyRpZC4iZmVmaWxlX21lZGlhZmlsZSJdLCAibWVkaWEiLCBmYWxzZSwgZmFsc2UpICl7DQoJCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKCRmaWxlcGF0aCwgImF2cGxheWVyX21lZGlhZmlsZSIsICRpdGVtLT5pZCwgIm1lZGlhZmlsZSIsIGZhbHNlLCBmYWxzZSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYoaXNzZXQoJGl0ZW0tPmlkKSAmJiBpc3NldCgkX0ZJTEVTKSAmJiBpc3NldCgkX0ZJTEVTWyRpZC4iZmVmaWxlX3BpY3R1cmUiXSkgJiYgJF9GSUxFU1skaWQuImZlZmlsZV9waWN0dXJlIl1bIm5hbWUiXSAhPSAiIil7DQoJCQlpZigkZmlsZW1heHNpemUgJiYgJGZpbGVtYXhzaXplID4gMCAmJiAkX0ZJTEVTWyRpZC4iZmVmaWxlX3BpY3R1cmUiXVsic2l6ZSJdID4gJGZpbGVtYXhzaXplKXsNCgkJCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX2ZpbGV0b29iaWciKS4iPC9kaXY+IjsNCgkJCX1lbHNlew0KCQkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRfRklMRVNbJGlkLiJmZWZpbGVfcGljdHVyZSJdWyJuYW1lIl0sICIuIiksMSkpOw0KCQkJCSRhbGxvd2VkZXh0ID0gZmFsc2U7DQoJCQkJaWYoICEkYWxsb3dlZGV4dCB8fCBpbl9hcnJheSgkZXh0ZW5zaW9uLCAkYWxsb3dlZGV4dCkgKXsNCgkJCQkJaWYoICRmaWxlcGF0aCA9ICR0aGlzLT5wbFVwbG9hZEZpbGUoJF9GSUxFU1skaWQuImZlZmlsZV9waWN0dXJlIl0sICIiLCAiMTIweDEwMCIsIGZhbHNlKSApew0KCQkJCQkJJHRoaXMtPnBsQXNzaWduRmlsZSgkZmlsZXBhdGgsICJhdnBsYXllcl9tZWRpYWZpbGUiLCAkaXRlbS0+aWQsICJwaWN0dXJlIiwgIiIsIGZhbHNlKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkNCg0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4ibWVkaWFmaWxlIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJtZWRpYWZpbGUiLCAkdGV4dCwgTlVMTCk7DQoJCQkJfQ0KCQkJfQ0KCQkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikuIjwvZGl2PiI7DQoJCX0NCgkJDQoJCS8vIGlmIGEgY29udGVudCByZWRpcmVjdGlvbiBoYXMgYmVlbiBzZXQsIHdlIHJlZGlyZWN0Li4uDQoJCSRyZWRpcmVjdF90b19pZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmZV9hZnRlcnN1Ym1pdCIsLTEpOw0KCQlpZiggJHJlZGlyZWN0X3RvX2lkID4gMSApCSR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJlZGlyZWN0X3RvX2lkKTsNCgl9DQoJLy8gRU5EIE9GIEZPUk0gU1VCTUlTU0lPTg0KCQ0KCWlmKCFpc3NldCgkcGFyYW1zWyJmZWFkZF9pZCJdKSAmJiBpc3NldCgkaXRlbS0+aWQpKQkkcGFyYW1zWyJmZWFkZF9pZCJdID0gJGl0ZW0tPmlkOw0KfQ0KDQppZigkaXRlbS0+aWQpIHsNCgkvLyBpZiB3ZSBhcmUgd29ya2luZyBvbiBhbiBpdGVtIHRoYXQgZXhpc3RzLCB3ZSBsb2FkIGl0LiBXZSBtdXN0IGRvIHRoaXMgZXZlbiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgb3RoZXJ3aXNlIHdlIHdvbid0IGhhdmUgdGhlIGZpbGUgZmllbGRzDQoJJGl0ZW1zID0gJHRoaXMtPmdldF9sZXZlbF9tZWRpYWZpbGUoYXJyYXkoImlkIj0+JGl0ZW0tPmlkKSk7DQoJJGl0ZW0gPSAkaXRlbXNbMF07DQp9DQoNCg0KLyogIyMgUFJFUEFSSU5HIFNNQVJUWSBFTEVNRU5UUw0KQ3JlYXRlSW5wdXRUZXh0IDogKGlkLG5hbWUsdmFsdWUsc2l6ZSxtYXhsZW5ndGgpDQpDcmVhdGVUZXh0QXJlYSA6ICh3eXNpd3lnLGlkLHRleHQsbmFtZSkNCkNyZWF0ZUlucHV0U2VsZWN0TGlzdCA6IChpZCxuYW1lLGl0ZW1zLHNlbGVjdGVkaXRlbXMsc2l6ZSkNCkNyZWF0ZUlucHV0RHJvcGRvd24gOiAoaWQsbmFtZSxpdGVtcyxzaW5kZXgsc3ZhbHVlKQ0KKi8NCg0KaWYoISRpdGVtLT5pZCB8fCAkYWxsb3duYW1lY2hhbmdlKXsNCgkkbmFtZWlucHV0ID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZlYWRkX25hbWUiLCRpdGVtLT5pZD8kaXRlbS0+bmFtZToiIiw1MCw2NCk7DQp9ZWxzZXsNCgkkbmFtZWlucHV0ID0gJGl0ZW0tPm5hbWUuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZlYWRkX25hbWUiLCAkaXRlbS0+bmFtZSk7DQp9DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5hbWVfbGFiZWwiLCAkdGhpcy0+TGFuZygibmFtZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9pbnB1dCIsICRuYW1laW5wdXQpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtZWRpYWZpbGVfbGFiZWwiLCAkdGhpcy0+TGFuZygibWVkaWFmaWxlX21lZGlhZmlsZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibWVkaWFmaWxlX2lucHV0IiwgKChpc3NldCgkaXRlbS0+bWVkaWFmaWxlKSAmJiAkaXRlbS0+bWVkaWFmaWxlKT8kaXRlbS0+bWVkaWFmaWxlLT5waWMuJzxhIGhyZWY9IicuJGl0ZW0tPm1lZGlhZmlsZS0+dXJsLiciID4nLiRpdGVtLT5tZWRpYWZpbGUtPmZpbGVwYXRoLiI8L2E+ICgiLiRpdGVtLT5tZWRpYWZpbGUtPnNpemVfd2Zvcm1hdC4iKTxici8+IjoiIikuKCRhbGxvd2ZpbGVzPyR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCJmZWZpbGVfbWVkaWFmaWxlIik6IiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGljdHVyZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfcGljdHVyZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGljdHVyZV9pbnB1dCIsICgoaXNzZXQoJGl0ZW0tPnBpY3R1cmUpICYmICRpdGVtLT5waWN0dXJlKT8nPGltZyBzcmM9IicuJGl0ZW0tPnBpY3R1cmUtPnVybC4nIiAvPjxici8+JzoiIikuKCRhbGxvd2ZpbGVzPyR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCJmZWZpbGVfcGljdHVyZSIpOiIiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInVzZXJkZWZpbmVkMl9sYWJlbCIsICR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfdXNlcmRlZmluZWQyIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDJfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZlYWRkX3VzZXJkZWZpbmVkMiIsJHVzZXJkZWZpbmVkMm9wdGlvbnMsLTEsJGl0ZW0tPmlkPyRpdGVtLT51c2VyZGVmaW5lZDI6MCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZlYWRkX3BhcmVudCIsJHBhcmVudG9wdGlvbnMsLTEsJGl0ZW0tPmlkPyRpdGVtLT5wYXJlbnQ6MCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGlzc2V0KCRpdGVtLT5hbGlhcyk/IihhbGlhcyA6ICIuJGl0ZW0tPmFsaWFzLiIpIjpmYWxzZSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgZmFsc2UpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImVkaXR0aXRsZSIsICR0aGlzLT5MYW5nKCJlZGl0X21lZGlhZmlsZSIpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZmVhZGRzdWJtaXQiLCAkdGhpcy0+TGFuZygic3VibWl0IikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FuY2VsIiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImZlYWRkY2FuY2VsIiwgJHRoaXMtPkxhbmcoImNhbmNlbCIpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNhcHRjaGFfaW1hZ2UiLCAkY2FwdGNoYT8kY2FwdGNoYS0+Z2V0Q2FwdGNoYSgpOmZhbHNlKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FwdGNoYV9pbnB1dCIsICRjYXB0Y2hhPyR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJjYXB0Y2hhX2lucHV0IiwiIiwzMCwxMCk6ZmFsc2UpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjYXB0Y2hhX3Byb21wdCIsICRjYXB0Y2hhPyR0aGlzLT5MYW5nKCJwcm9tcHRfY2FwdGNoYSIpOmZhbHNlKTsNCg0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW0iLCAkaXRlbSk7DQoNCg0KLy8gRElTUExBWUlORw0KCQ0KZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgIkZFYWRkQiIsICRyZXR1cm5pZCwgInBvc3QiLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpOw0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJmcm9udGVuZF9hZGRfbWVkaWFmaWxlLnRwbCIpOw0KDQppZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPmlkKSl7DQoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZmVhZGRfaWQiLCAkaXRlbS0+aWQpOw0KCWlmKGlzc2V0KCRpdGVtLT5wYXJlbnQpKSBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmZWFkZF9vbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmZWFkZF9pdGVtX29yZGVyIiwgJGl0ZW0tPml0ZW1fb3JkZXIpOw0KfQ0KZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGl0bGUnKS4nPC9oMz4nOwoKaWYoaXNzZXQoJF9GSUxFUykgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXSkgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXVsnbmFtZSddKSAmJiAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyduYW1lJ10gIT0gJycpIHsKCQoJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyd0bXBfbmFtZSddICk7CgkkcGFyc2VyID0geG1sX3BhcnNlcl9jcmVhdGUoJycpOwoJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCRwYXJzZXIsIFhNTF9PUFRJT05fVEFSR0VUX0VOQ09ESU5HLCAnVVRGLTgnKTsKCXhtbF9wYXJzZXJfc2V0X29wdGlvbigkcGFyc2VyLCBYTUxfT1BUSU9OX0NBU0VfRk9MRElORywgMCk7Cgl4bWxfcGFyc2VyX3NldF9vcHRpb24oJHBhcnNlciwgWE1MX09QVElPTl9TS0lQX1dISVRFLCAxKTsKCgkkeG1sZGF0YSA9IGFycmF5KCk7Cgl4bWxfcGFyc2VfaW50b19zdHJ1Y3QoJHBhcnNlciwgdHJpbSgkeG1sKSwgJHhtbGRhdGEpOwoJeG1sX3BhcnNlcl9mcmVlKCRwYXJzZXIpOwoJaWYgKCEkeG1sZGF0YSkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2ltcG9ydCcsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWR4bWwnKSkgKTsKCgkkdGFibGVzID0gYXJyYXkoKTsKCSR0ZW1wbGF0ZXMgPSBhcnJheSgpOwoJJGVudHJpZXMgPSAwOwoJJGN1cnJlbnR0YWJsZSA9IGZhbHNlOwoJJGN1cnJlbnRpdGVtID0gZmFsc2U7CgoJJGV4aXN0aW5nX3RhYmxlcyA9IGFycmF5X21lcmdlKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpLCBhcnJheSgnZmllbGRvcHRpb25zJywgJ211bHRpcGxlZmlsZXNmaWVsZHMnKSk7CgkKCQoJZm9yZWFjaCAoJHhtbGRhdGEgYXMgJGRhdGEpIHsKCQlzd2l0Y2goJGRhdGFbJ3R5cGUnXSkgewoJCQljYXNlICdvcGVuJzoKCQkJCWlmKCRkYXRhWydsZXZlbCddID09IDIgJiYgJGRhdGFbJ3RhZyddID09ICd0YWJsZScgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXSkgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXVsnbmFtZSddKSApewoJCQkJCSR0YWJsZW5hbWUgPSAkZGF0YVsnYXR0cmlidXRlcyddWyduYW1lJ107CgkJCQkJaWYoaW5fYXJyYXkoJHRhYmxlbmFtZSwgJGV4aXN0aW5nX3RhYmxlcykpewoJCQkJCQkkdGFibGVzWyR0YWJsZW5hbWVdID0gYXJyYXkoKTsKCQkJCQkJJGN1cnJlbnR0YWJsZSA9ICR0YWJsZW5hbWU7CgkJCQkJfWVsc2V7CgkJCQkJCSRjdXJyZW50dGFibGUgPSBmYWxzZTsKCQkJCQl9CgkJCQl9ZWxzZWlmKCRkYXRhWydsZXZlbCddID09IDMgJiYgJGRhdGFbJ3RhZyddID09ICdpdGVtJyl7CgkJCQkJJGN1cnJlbnRpdGVtID0gYXJyYXkoKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjbG9zZSc6CgkJCQlpZigkY3VycmVudHRhYmxlICYmICRjdXJyZW50aXRlbSAhPSBmYWxzZSAmJiAkZGF0YVsnbGV2ZWwnXSA9PSAzICYmICRkYXRhWyd0YWcnXSA9PSAnaXRlbScpewoJCQkJCWlmKGNvdW50KCRjdXJyZW50aXRlbSkgPiAwKXsKCQkJCQkJYXJyYXlfcHVzaCgkdGFibGVzWyRjdXJyZW50dGFibGVdLCAkY3VycmVudGl0ZW0pOwoJCQkJCQkkZW50cmllcysrOwoJCQkJCX0KCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjb21wbGV0ZSc6CgkJCQlpZigkZGF0YVsnbGV2ZWwnXSA9PSA0KXsKCQkJCQkkY3VycmVudGl0ZW1bJGRhdGFbJ3RhZyddXSA9ICRkYXRhWyd2YWx1ZSddOwoJCQkJfWVsc2VpZigkZGF0YVsnbGV2ZWwnXSA9PSAxICYmICRkYXRhWyd0YWcnXSA9PSAndGVtcGxhdGUnICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ10pICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXSkgKXsKCQkJCQkkdGVtcGxhdGVzWyRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXV0gPSAkZGF0YVsndmFsdWUnXTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCX0KCglpZihjb3VudCgkdGFibGVzKSA9PSAwKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnaW1wb3J0JywgJHJldHVybmlkLCBhcnJheSgnbW9kdWxlX21lc3NhZ2UnPT4kdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHhtbCcpKSApOwoJCgkkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddID0gYXJyYXkoKTsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddID0gJHRhYmxlczsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddID0gJHRlbXBsYXRlczsKCQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImltcG9ydCIsICRyZXR1cm5pZCk7CgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZW50cmllcycsJGVudHJpZXMpLic8L3A+JzsKCWVjaG8gJzxmaWVsZHNldD48bGVnZW5kPjxiPicuJHRoaXMtPkxhbmcoJ2ltcG9ydHdoaWNobGV2ZWxzJykuJzwvYj48L2xlZ2VuZD4nOwoJJGNob2ljZXMgPSBhcnJheSgpOwoJZm9yZWFjaCgkdGFibGVzIGFzICRrZXk9PiR2YWx1ZSl7CgkJaWYoY291bnQoJHZhbHVlKSA+MCkJJGNob2ljZXNbJGtleS4nICgnLmNvdW50KCR2YWx1ZSkuJyknXSA9ICRrZXk7Cgl9CgllY2hvICR0aGlzLT5Eb0NoZWNrYm94ZXMoJGlkLCAnc2VsZWN0ZWRsZXZlbHMnLCAkY2hvaWNlcywgJGNob2ljZXMpLic8L2ZpZWxkc2V0Pjxici8+JzsKCWlmKGNvdW50KCR0ZW1wbGF0ZXMpID4gMCkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF9kZWxldGUiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfZGVsZXRlJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9pbXBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwoKfWVsc2VpZihpc3NldCgkcGFyYW1zWydkb2ltcG9ydCddKSAmJiBpc3NldCgkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddKSAmJiBpc3NldCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddKSl7CgoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJJHRhYmxlcHJlZml4ID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIjsKCSRlcnJvcnMgPSAnJzsKCSRhZGRlZCA9IDA7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2ltcG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snaW1wb3J0X3RlbXBsYXRlcyddICYmIGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddKSApewoJCWZvcmVhY2goJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGVtcGxhdGVzJ10gYXMgJHRwbG5hbWU9PiR0ZW1wbGF0ZSl7CgkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdHBsbmFtZSwgJHRlbXBsYXRlKTsKCQl9Cgl9CgkKCSRkZWxldGUgPSAoaXNzZXQoJHBhcmFtc1snaW1wb3J0X2RlbGV0ZSddKSAmJiAkcGFyYW1zWydpbXBvcnRfZGVsZXRlJ10gKTsKCQoJZm9yZWFjaCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddIGFzICR0YWJsZW5hbWUpewoJCQoJCWlmKGlzX2NhbGxhYmxlKGFycmF5KCRkYiwnTWV0YUNvbHVtbk5hbWVzJykpKXsKCQkJJGV4aXN0aW5nX2ZpZWxkcyA9IGFycmF5KCk7CgkJCSRjb2x1bW5zID0gJGRiLT5NZXRhQ29sdW1uTmFtZXMoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCQlmb3JlYWNoKCRjb2x1bW5zIGFzICRjb2wpCWFycmF5X3B1c2goJGV4aXN0aW5nX2ZpZWxkcyxzdHJ0b2xvd2VyKCRjb2wpKTsKCQl9ZWxzZXsKCQkJJGNvbHVtbnMgPSBmYWxzZTsKCQl9CgkJCgkJJHByb2NlZWQgPSB0cnVlOwoJCSRoaWdoZXN0aWQgPSAwOwoJCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdKSl7CgkJCWlmKCRkZWxldGUpCSRkYi0+RXhlY3V0ZSgiVFJVTkNBVEUgVEFCTEUgIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZSk7CgkJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCQkkaSA9IDA7CgkJCXdoaWxlKCRwcm9jZWVkICYmICRpIDwgY291bnQoJHRhYmxlKSl7CgkJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJCSRxdWVyeSA9ICcnOwoJCQkJZm9yZWFjaCgkdGFibGVbJGldIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJCSRxdWVyeSAuPSAoJHF1ZXJ5PT0nJz8nJzonLCAnKS4iYCIuJGtleS4iYD0/IjsKCQkJCQkJJHZhbHVlc1tdID0gKCR2YWx1ZT09PU5VTEw/Jyc6JHZhbHVlKTsKCQkJCQl9CgkJCQl9CgkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZS4iIFNFVCAiLiRxdWVyeTsKCQkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJCWlmKGlzc2V0KCR0YWJsZVskaV1bJ2lkJ10pICYmICR0YWJsZVskaV1bJ2lkJ10gPiAkaGlnaGVzdGlkKQkkaGlnaGVzdGlkID0gJHRhYmxlWyRpXVsnaWQnXTsKCQkJCQkkYWRkZWQrKzsKCQkJCX1lbHNlewoJCQkJCSRwcm9jZWVkID0gZmFsc2U7CgkJCQkJJGVycm9ycyAuPSAoJGVycm9ycz09Jyc/Jyc6JywgJykuJHRhYmxlbmFtZTsKCQkJCX0JCgkJCQkkaSsrOwoJCQl9CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9Cgl9CgkKCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWydtdWx0aXBsZWZpbGVzZmllbGRzJ10pKXsKCQkkdGFibGVuYW1lID0gIm11bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnZmlsZWlkJ10pICYmICR0YWJsZVskaV1bJ2ZpbGVpZCddID4gJGhpZ2hlc3RpZCkJJGhpZ2hlc3RpZCA9ICR0YWJsZVskaV1bJ2ZpbGVpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJaWYoaXNzZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGFibGVzJ11bJ2ZpZWxkb3B0aW9ucyddKSl7CgkJJHRhYmxlbmFtZSA9ICJmaWVsZG9wdGlvbnMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnaWQnXSkgJiYgJHRhYmxlWyRpXVsnaWQnXSA+ICRoaWdoZXN0aWQpCSRoaWdoZXN0aWQgPSAkdGFibGVbJGldWydpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJZWNobyBteXNxbF9lcnJvcigpOwoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJdW5zZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXSk7CgkKCSRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ2ltcG9ydF9kb25lJywkYWRkZWQpOwoJaWYoJGVycm9ycyAhPSAnJykgJG1lc3NhZ2UgLj0gJzxici8+Jy4kdGhpcy0+TGFuZygnY291bGRub3RpbXBvcnQnKS4kZXJyb3JzOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JG1lc3NhZ2UpICk7Cgp9ZWxzZXsKCgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZmlsZXByb21wdCcpLic8L3A+JzsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdpbXBvcnQnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3htbGZpbGUnKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.movesomething.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1sibGV2ZWxuYW1lIl0pP2FycmF5KCJhY3RpdmVfdGFiIj0+JHBhcmFtc1sibGV2ZWxuYW1lIl0pOmFycmF5KCk7DQoNCmlmICghaXNzZXQoJHBhcmFtc1sibW92ZSJdKSB8fCAhaXNzZXQoJHBhcmFtc1sidGFibGVuYW1lIl0pIHx8ICFpc3NldCgkcGFyYW1zWyJwcmVmaXgiXSkgfHwgIWlzc2V0KCRwYXJhbXNbImN1cnJlbnRvcmRlciJdKSApDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KJGRidGFibGUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiRwYXJhbXNbInRhYmxlbmFtZSJdOw0KJG9yZGVyID0gJHBhcmFtc1siY3VycmVudG9yZGVyIl07DQokaXRlbWlkID0gJHBhcmFtc1skcGFyYW1zWyJwcmVmaXgiXS4iaWQiXTsNCiR3cGFyZW50ID0gaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pPyIgQU5EIHBhcmVudD0nIi4kcGFyYW1zWyJwYXJlbnQiXS4iJyI6IiI7DQoNCnN3aXRjaCgkcGFyYW1zWyJtb3ZlIl0pew0KCQ0KCWNhc2UgImRlbGV0ZSI6DQoJCWlmKGlzc2V0KCRwYXJhbXNbInNoYXJlY2hpbGRyZW4iXSkgJiYgJHBhcmFtc1sic2hhcmVjaGlsZHJlbiJdKXsNCgkJCS8vIHRoaXMgbGV2ZWwgc2hhcmUgaXRzIGNoaWxkcmVuLi4uIHdlIGRlbGV0ZSB0aGUgaXRlbSdzIGxpbmtzIHRvIGNoaWxkcmVuDQoJCQlpZigkY2hpbGRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCRwYXJhbXNbImxldmVsbmFtZSJdKSl7DQoJCQkJJGxpbmt0YWJsZSA9ICRkYnRhYmxlLiJfaGFzXyIuJGNoaWxkbGV2ZWw7DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWyJsZXZlbG5hbWUiXS4iX2lkPT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJjaGlsZCJdKSAmJiAkcGFyYW1zWyJjaGlsZCJdICE9ICIiKXsNCgkJCS8vIHRoaXMgbGV2ZWwgZG9lc24ndCBzaGFyZSBpdHMgY2hpbGRyZW4uLi4gd2UgZGVsZXRlIHRoZSBpdGVtJ3MgY2hpbGRyZW4NCgkJCSRjaGlsZHRhYmxlID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kcGFyYW1zWyJjaGlsZCJdOw0KCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRjaGlsZHRhYmxlIFdIRVJFIHBhcmVudCA9ID8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWlmKGlzc2V0KCRwYXJhbXNbInNoYXJlZGJ5cGFyZW50cyJdKSAmJiAkcGFyYW1zWyJzaGFyZWRieXBhcmVudHMiXSl7DQoJCQkvLyB0aGlzIGl0ZW0gaXMgc2hhcmVkIGJ5IGl0cyBwYXJlbnRzLi4uIHdlIGRlbGV0ZSBsaW5rcyBmcm9tIHBhcmVudHMgdG8gdGhpcyBjaGlsZA0KCQkJaWYoJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHBhcmFtc1sibGV2ZWxuYW1lIl0sIGZhbHNlKSl7DQoJCQkJJGxpbmt0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyXyIuJHBhcmVudGxldmVsLiJfaGFzXyIuJHBhcmFtc1sibGV2ZWxuYW1lIl07DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWyJsZXZlbG5hbWUiXS4iX2lkPT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYoaXNzZXQoJHBhcmFtc1siZmlsZXMiXSkgJiYgJHBhcmFtc1siZmlsZXMiXSAhPSAiIiAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGVsZXRlX2ZpbGVzIixmYWxzZSkgKXsNCgkJCSRmaWxlZmllbGRzID0gZXhwbG9kZSgiLCIsJHBhcmFtc1siZmlsZXMiXSk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAkZGJ0YWJsZSBXSEVSRSBpZCA9ID8iOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJCWZvcmVhY2goJGZpbGVmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJaWYoJHJvd1skZmllbGRdICE9ICIiICYmICRyb3dbJGZpZWxkXSAhPSAiLyIpew0KCQkJCQkJJGZpbGVwYXRoID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uKHN1YnN0cigkcm93WyJmaWxlcGF0aCJdLDAsMSk9PSIvIj8iIjoiLyIpLiRyb3dbJGZpZWxkXTsNCgkJCQkJCSR0bXBleHAgPSBleHBsb2RlKCIvIiwkcm93WyRmaWVsZF0pOw0KCQkJCQkJJGZpbGVuYW1lID0gJHRtcGV4cFtjb3VudCgkdG1wZXhwKSAtMV07DQoJCQkJCQkkdGh1bWJwYXRoID0gc3RyX3JlcGxhY2UoJGZpbGVuYW1lLCJwbHRodW1iXyIuJGZpbGVuYW1lLCRmaWxlcGF0aCk7DQoJCQkJCQlpZihmaWxlX2V4aXN0cygkdGh1bWJwYXRoKSkJdW5saW5rKCR0aHVtYnBhdGgpOw0KCQkJCQkJaWYoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkJdW5saW5rKCRmaWxlcGF0aCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gaWYgdGhlIGxldmVsIGhhcyBmaWVsZHMgb2YgdGhlIHR5cGUgIlVuZGVmaW5lZCBhbW91bnQgb2YgZmlsZXMiLCB3ZSBkZWxldGUgdGhlIGZpbGVzDQoJCWlmKGlzc2V0KCRwYXJhbXNbImFkZGZpbGVzIl0pICYmICRwYXJhbXNbImFkZGZpbGVzIl0gIT0gIiIpew0KCQkJJGZpZWxkcyA9IGV4cGxvZGUoIiwiLCRwYXJhbXNbImFkZGZpbGVzIl0pOw0KCQkJaWYoY291bnQoJGZpZWxkcykgPiAwKXsNCgkJCQkkd2hlcmUgPSAiIjsNCgkJCQkkdmFsdWVzID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJJHdoZXJlIC49ICgkd2hlcmUgPT0gIiI/IiI6IiBPUiAiKS4iIGZpZWxkbmFtZT0/IjsNCgkJCQkJJHZhbHVlc1tdID0gJGZpZWxkOw0KCQkJCX0NCgkJCQkkYWRkZmlsZXN0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX211bHRpcGxlZmlsZXNmaWVsZHMiOw0KDQoJCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImRlbGV0ZV9maWxlcyIsZmFsc2UpKXsNCgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gJGFkZGZpbGVzdGFibGUgV0hFUkUgKCR3aGVyZSkgQU5EIGl0ZW1pZD0iLiRpdGVtaWQ7DQoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KCQkJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkJCQkkZmlsZXBhdGggPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS4oc3Vic3RyKCRyb3dbImZpbGVwYXRoIl0sMCwxKT09Ii8iPyIiOiIvIikuJHJvd1siZmlsZXBhdGgiXTsNCgkJCQkJCWlmKGZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpCXVubGluaygkZmlsZXBhdGgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAkYWRkZmlsZXN0YWJsZSBXSEVSRSAoJHdoZXJlKSBBTkQgaXRlbWlkPSIuJGl0ZW1pZDsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsNCgkJCX0NCgkJfQ0KCQkJDQoJCQ0KCQkkcXVlcnkgPSAiREVMRVRFIEZST00gJGRidGFibGUgV0hFUkUgaWQgPSA/IExJTUlUIDEiOw0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7DQoNCgkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyAiLiR3cGFyZW50Ow0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkb3JkZXIpKTsNCg0KCQlpZihpc3NldCgkcGFyYW1zWyJsZXZlbG5hbWUiXSkpCSR0aGlzLT5TZW5kRXZlbnQoImF2cGxheWVyX2RlbGV0ZWQiLCBhcnJheSgid2hhdCI9PiRwYXJhbXNbImxldmVsbmFtZSJdKSk7DQoJCSRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlIl0gPSAkdGhpcy0+bGFuZygibWVzc2FnZV9kZWxldGVkIik7DQoJCWJyZWFrOwkNCg0KCWNhc2UgInVwIjoNCgkJaWYgKCRvcmRlciAhPSAxKXsNCgkJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgaXRlbV9vcmRlciA9ID8gJHdwYXJlbnQgTElNSVQgMTsiOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyLTEpKTsNCgkJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaWQgPSA/IExJTUlUIDE7IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJfQ0KCQlicmVhazsNCgkJDQoJY2FzZSAiZG93biI6DQoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA9ID8gJHdwYXJlbnQgTElNSVQgMTsiOw0KCQlpZiggJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyKzEpKSApew0KCQkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSBXSEVSRSBpZCA9ID8gTElNSVQgMTsiOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWJyZWFrOw0KfQ0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.reorder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9ICR0aGlzLT5HZXREYigpOwokbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOwokb3JkZXJlZGJ5cGFyZW50ID0gYXJyYXkoInBsYXllciIsIm1lZGlhZmlsZSIpOwppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkpewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwiZGVmYXVsdGFkbWluIiwkcmV0dXJuaWQpOwp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHJlb3JkZXIiXSkpewoJZXhwbG9kZSgiLCIsJHBhcmFtc1sibmV3b3JkZXIiXSk7Cgkkb3JkZXIgPSBhcnJheSgpOwoJJGxhc3RpZCA9IGFycmF5KCk7Cglmb3JlYWNoKGV4cGxvZGUoIiwiLCRwYXJhbXNbIm5ld29yZGVyIl0pIGFzICRpdGVtKXsKCQlsaXN0KCRsZXZlbCwkaXRlbWlkKSA9IGV4cGxvZGUoIl8iLCRpdGVtKTsKCQkkbGFzdGlkWyRsZXZlbF0gPSAkaXRlbWlkOwoJCWlmKCFpc3NldCgkb3JkZXJbJGxldmVsXSkpCSRvcmRlclskbGV2ZWxdPWFycmF5KCk7CgkJaWYoJGxldmVsPT0xKXsKCQkJJG9yZGVyWzFdW109JGl0ZW1pZDsKCQl9ZWxzZXsKCQkJaWYoIWlzc2V0KCRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXSkpCSRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXT1hcnJheSgpOwoJCQkkb3JkZXJbJGxldmVsXVskbGFzdGlkWyRsZXZlbC0xXV1bXSA9ICRpdGVtaWQ7CgkJfQoJfQoJZm9yZWFjaCgkb3JkZXIgYXMgJGtleT0+JGl0ZW1zKXsKCQkkbGV2ZWwgPSAkbGV2ZWxhcnJheVska2V5LTFdOwoJCSRpdGVtX29yZGVyID0gMTsKCQlpZigka2V5PT0xKXsKCQkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pewoJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyXyIuJGxldmVsLiIgU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IExJTUlUIDEiOwoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaXRlbV9vcmRlciwkaXRlbSkpOwoJCQkJJGl0ZW1fb3JkZXIrKzsKCQkJfQoJCX1lbHNlewoJCQlmb3JlYWNoKCRpdGVtcyBhcyAkcGFyZW50PT4kY2hpbGRyZW4pewoJCQkJaWYoaW5fYXJyYXkoJGxldmVsLCAkb3JkZXJlZGJ5cGFyZW50KSkJJGl0ZW1fb3JkZXIgPSAxOwoJCQkJZm9yZWFjaCgkY2hpbGRyZW4gYXMgJGNoaWxkKXsKCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kbGV2ZWwuIiBTRVQgaXRlbV9vcmRlcj0/IFdIRVJFIGlkPT8gTElNSVQgMSI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaXRlbV9vcmRlciwkY2hpbGQpKTsKCQkJCQkkaXRlbV9vcmRlcisrOwoJCQkJfQoJCQl9CQkJCgkJCQkKCQl9CgkJCgl9CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCJkZWZhdWx0YWRtaW4iLCRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7Cn0KCmVjaG8gIjxoMT4iLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikuIjwvaDE+IjsKJGkgPSAwOwokc2VsZWN0ID0gIiI7CiR0YWJsZXMgPSAiIjsKJG9yZGVyID0gIiI7CndoaWxlKCRpIDwgY291bnQoJGxldmVsYXJyYXkpKXsKCSRsZXZlbCA9ICRsZXZlbGFycmF5WyRpXTsKCSRpKys7Cgkkc2VsZWN0IC49ICgkc2VsZWN0PT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuaWQgdGFibGUiLiRpLiJfaWQsIHRhYmxlIi4kaS4iLm5hbWUgdGFibGUiLiRpLiJfbmFtZSI7CglpZigkaSA9PSAxKXsKCQkkdGFibGVzID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kbGV2ZWwuIiB0YWJsZSIuJGkuICIgT04gdGFibGUiLigkaS0xKS4iLmlkPXRhYmxlIi4kaS4iLnBhcmVudCI7Cgl9Cgkkb3JkZXIgLj0gKCRvcmRlcj09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLml0ZW1fb3JkZXIiOwp9CiRxdWVyeSA9ICJTRUxFQ1QgJHNlbGVjdCBGUk9NICR0YWJsZXMgT1JERVIgQlkgJG9yZGVyIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokbGFzdCA9IGFycmF5KCk7CiRsaXN0cyA9IGFycmF5KCk7CiRjb250YWlubWVudCA9IGFycmF5KCk7CiRwYXJzZWxldmVsID0gMTsKZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICdwb3N0JywgJycsIGZhbHNlLCAnJywgYXJyYXkoKSwgJyBvbnN1Ym1pdD0icmV0dXJuIGN0bG1tX3N1Ym1pdF9yZW9yZGVyKCk7IicpOwp3aGlsZSgkcGFyc2VsZXZlbCA8PSAkaSl7CgkkbGFzdFskcGFyc2VsZXZlbF0gPSBmYWxzZTsKCSRsaXN0c1skcGFyc2VsZXZlbF0gPSBhcnJheSgpOwoJJGNvbnRhaW5tZW50WyRwYXJzZWxldmVsXSA9ICIiOwoJJHBhcnNlbGV2ZWwrKzsKfQplY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInN1Ym1pdHJlb3JkZXIiLGxhbmcoInN1Ym1pdCIpKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwicmVzZXRvcmRlciIsJHRoaXMtPkxhbmcoInJlc2V0b3JkZXIiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImNhbmNlbCIsbGFuZygiY2FuY2VsIikpLiI8L3A+IjsKJGN1cnJlbnRsZXZlbCA9IDE7CmVjaG8gJzx1bCBjbGFzcz0ic29ydGFibGVMaXN0IiBpZD0iY3RsbW1fYmlnc29ydGxpc3QiPic7CndoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsKCSRwYXJzZWxldmVsID0gMTsKCXdoaWxlKCRwYXJzZWxldmVsIDw9ICRpKXsKCQlpZigkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdICE9ICRsYXN0WyRwYXJzZWxldmVsXSl7CgkJCWlmKCRjdXJyZW50bGV2ZWwgPT0gJHBhcnNlbGV2ZWwpewoJCQkJaWYoJGxhc3RbJGN1cnJlbnRsZXZlbF0pCWVjaG8gIjwvbGk+IjsKCQkJfWVsc2VpZigkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJd2hpbGUoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCQllY2hvICI8L2xpPjwvdWw+PC9saT4iOwoJCQkJCSRjdXJyZW50bGV2ZWwtLTsKCQkJCX0KCQkJfWVsc2VpZigkY3VycmVudGxldmVsIDwgJHBhcnNlbGV2ZWwpewoJCQkJJGxpc3RpZCA9ICJsaXN0XyIuJGxldmVsYXJyYXlbJHBhcnNlbGV2ZWxdLiJfIi4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdOwoJCQkJJGN1cnJlbnRsZXZlbCsrOwoJCQkJZWNobyAnPHVsIGlkPSInLiRsaXN0aWQuJyIgY2xhc3M9InNvcnRhYmxlTGlzdCI+JzsKCQkJCSRsaXN0c1skcGFyc2VsZXZlbF1bXSA9ICRsaXN0aWQ7CgkJCQkkY29udGFpbm1lbnRbJHBhcnNlbGV2ZWxdIC49ICgkY29udGFpbm1lbnRbJHBhcnNlbGV2ZWxdPT0iIj8iIjoiLCIpLiciJy4kbGlzdGlkLiciJzsKCQkJfQoJCQllY2hvICc8bGkgaWQ9ImN0bG1tbGV2ZWwnLiRwYXJzZWxldmVsLidfJy4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdLiciPicuJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfbmFtZSJdOwoJCQkkbGFzdFskcGFyc2VsZXZlbF0gPSAkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdOwoJCX0KCQkkcGFyc2VsZXZlbCsrOwoJfQp9CmVjaG8gIjwvbGk+IjsKd2hpbGUoJGN1cnJlbnRsZXZlbCA+IDEpewoJZWNobyAiPC91bD48L2xpPiI7CgkkY3VycmVudGxldmVsLS07Cn0KZWNobyAiPC91bD4iOwplY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInN1Ym1pdHJlb3JkZXIiLGxhbmcoInN1Ym1pdCIpKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwicmVzZXRvcmRlciIsJHRoaXMtPkxhbmcoInJlc2V0b3JkZXIiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImNhbmNlbCIsbGFuZygiY2FuY2VsIikpLiI8L3A+IjsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJuZXdvcmRlciIsIiIsJyBpZD0iY3RsbW1fbmV3b3JkZXIiJyk7CmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCiRyZXN0cmljdGVkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSk7CmlmKCRyZXN0cmljdGVkICYmICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIikpCSRyZXN0cmljdGVkID0gZmFsc2U7CgplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cic7CmlmKCEkcmVzdHJpY3RlZCB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJwcm9kY2F0YWxvZ3VlX21hbmFnZV8iLiRsZXZlbGFycmF5WzBdKSkJZWNobyAnU29ydGFibGUuY3JlYXRlKCJjdGxtbV9iaWdzb3J0bGlzdCIpOwonOwoKZm9yZWFjaCgkbGlzdHMgYXMgJGxldmVsbnVtYmVyPT4kbGV2ZWwpewoJaWYoISRyZXN0cmljdGVkIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX21hbmFnZV8iLiRsZXZlbGFycmF5WyRsZXZlbG51bWJlci0xXSkpewoJCWZvcmVhY2goJGxldmVsIGFzICRsaXN0KXsKCQkJLyoKCQkJICogd2UgZG9uJ3QgdXNlIGNvbnRhaW5tZW50IHlldCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIGNoYW5naW5nIHBhcmVudHMuLi4geWV0Li4uCgkJCSAqIGVjaG8gJ1NvcnRhYmxlLmNyZWF0ZSgiJy4kbGlzdC4nIicuKGNvdW50KCRsZXZlbCk+MT8iLHtjb250YWlubWVudDpbIi4kY29udGFpbm1lbnRbJGxldmVsbnVtYmVyXS4iXSwgZHJvcE9uRW1wdHk6ZmFsc2V9IjoiIikuIik7CgkJCSAqICI7CgkJCSAqLwoJCQllY2hvICdTb3J0YWJsZS5jcmVhdGUoIicuJGxpc3QuJyIpOwoJJzsKCQl9Cgl9Cn0KZWNobyAnCmZ1bmN0aW9uIGN0bG1tX3N1Ym1pdF9yZW9yZGVyKCl7Cgl2YXIgbmV3b3JkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3RsbW1fbmV3b3JkZXIiKTsKCXZhciBsaXN0bm9kZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3RsbW1fYmlnc29ydGxpc3QiKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKCWZvcihpPTA7aTxsaXN0bm9kZXMubGVuZ3RoO2krKyl7CgkJaWYobmV3b3JkZXIudmFsdWUgIT0gIiIpIG5ld29yZGVyLnZhbHVlICs9ICIsIjsKCQluZXdvcmRlci52YWx1ZSArPSBsaXN0bm9kZXNbaV0uaWQuc3Vic3RyKDEwKTsKCX0KCXJldHVybiB0cnVlOwkKfQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJy4kaWQuJ21vZHVsZWZvcm1fMSIpLm9uc3VibWl0ID0gZnVuY3Rpb24oKXsKCXJldHVybiBjdGxtbV9zdWJtaXRfcmVvcmRlcigpOwp9Cjwvc2NyaXB0Pic7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.search.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRmaW5hbGxldmVsID0gIm1lZGlhZmlsZSI7Cgokc2VhcmNobW9kZSA9IChpc3NldCgkcGFyYW1zWyJzZWFyY2htb2RlIl0pICYmIGluX2FycmF5KCRwYXJhbXNbInNlYXJjaG1vZGUiXSwgYXJyYXkoInNpbXBsZSIsImFkdmFuY2VkIikpKT8kcGFyYW1zWyJzZWFyY2htb2RlIl06ImFkdmFuY2VkIjsKCmlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHNlYXJjaCJdKSl7CgkvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgkvLyAjIFNFQVJDSCBSRVNVTFRTCgkkaW5saW5lID0gKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSAmJiAkcGFyYW1zWyJpbmxpbmUiXSk/dHJ1ZTpmYWxzZTsKCSRsaW5rcmV0dXJuaWQgPSAoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSk/JHRoaXMtPmdldF9wYWdlaWQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTpmYWxzZTsKCWlmKCEkbGlua3JldHVybmlkKQkkbGlua3JldHVybmlkID0gJHJldHVybmlkOwoJJHdoYXQgPSAkcGFyYW1zWyJ3aGF0Il07CgkkbGltaXQgPSBpc3NldCgkcGFyYW1zWyJsaW1pdCJdKT8kcGFyYW1zWyJsaW1pdCJdOjA7CglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgJHBhcmFtc1sibmJwZXJwYWdlIl0gPiAwKXsKCQkkbmJwZXJwYWdlID0gKGludCkgJHBhcmFtc1sibmJwZXJwYWdlIl07CgkJJGxpbWl0ID0gKCgoaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pPyRwYXJhbXNbInBhZ2VpbmRleCJdOjEpLTEpICogJG5icGVycGFnZSkuIiwiLiRuYnBlcnBhZ2U7Cgl9ZWxzZXsKCQkkbmJwZXJwYWdlID0gZmFsc2U7Cgl9CgkKCSRlbXB0eXRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImVtcHR5dGVtcGxhdGUiLCIqKiIpOwoJCgkvLyB3ZSBwcmVwYXJlIHRoZSAiZG8gYW5vdGhlciBzZWFyY2giIGxpbmssIGtlZXBpbmcgdGhlIHNlYXJjaCBwYXJhbWV0ZXJzCgkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kd2hhdCwgInNlYXJjaG1vZGUiPT4kc2VhcmNobW9kZSk7CglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCSRuZXdwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdID0gJHBhcmFtc1sibGlzdHRlbXBsYXRlIl07CglpZihpc3NldCgkcGFyYW1zWyJsaW1pdCJdKSkJCQkkbmV3cGFyYW1zWyJsaW1pdCJdID0gJHBhcmFtc1sibGltaXQiXTsKCWlmKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSkJCSRuZXdwYXJhbXNbImlubGluZSJdID0gJHBhcmFtc1siaW5saW5lIl07CglpZihpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pKQkJJG5ld3BhcmFtc1sib3JkZXJieSJdID0gJHBhcmFtc1sib3JkZXJieSJdOwoJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkJJG5ld3BhcmFtc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWyJuYnBlcnBhZ2UiXTsKCWlmKGlzc2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkpCSRuZXdwYXJhbXNbImRldGFpbHBhZ2UiXSA9ICRwYXJhbXNbImRldGFpbHBhZ2UiXTsKCSRiYWNrbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInNlYXJjaCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoInNlYXJjaGFnYWluIiksICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCBmYWxzZSk7CQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJiYWNrbGluayIsJGJhY2tsaW5rKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJlYWRjcnVtYnMiLGZhbHNlKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFyZW50b2JqIixmYWxzZSk7CgkKCSRtdWx0aXBsZWxpc3RmaWVsZHMgPSBhcnJheSgpOwoJCglpZigkc2VhcmNobW9kZSA9PSAiYWR2YW5jZWQiKXsKCQkvLyBBRFZBTkNFRCBTRUFSQ0gKCQkKCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCQkKCQkvLyB3ZSBwYXJzZSB0aGUga2V5d29yZHMKCQkkd2hlcmUgPSAkdGhpcy0+Z2V0V2hlcmVGcm9tUGFyYW1zKCRwYXJhbXMsIHRydWUpOwoJCWxpc3QoJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMpID0gJHRoaXMtPmJ1aWxkV2hlcmUoJHdoZXJlLCAkd2hhdCk7CgkJCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0OwoJCS8vIHdlIGRvIHRoZSBxdWVyeQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06MCwgJGxpbWl0LCAkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcyk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtY291bnQiLGNvdW50KCRpdGVtbGlzdCkpOwoJCQoJCWlmKGNvdW50KCRpdGVtbGlzdCkgPiAwKXsKCQkKCQkJJHRvdGFsID0gJG5icGVycGFnZT8kdGhpcy0+Y291bnRzb21ldGhpbmcoJHdoYXQsImlkIixhcnJheSgpLCR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzKTpmYWxzZTsKCQkJJHRoaXMtPnBhZ2luYXRlKCR3aGF0LCR0b3RhbCwkaWQsJHJldHVybmlkLCRwYXJhbXMsInNlYXJjaCIpOwoJCQkKCQkJLy8gd2UgbXVzdCBidWlsZCBhIGRldGFpbCBsaW5rIGZvciBlYWNoIHJlc3VsdCBlbGVtZW50CgkJCSRuZXdsaXN0ID0gYXJyYXkoKTsKCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pewoJCQkJJGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRsaW5rcmV0dXJuaWQpOwoJCQkJJGl0ZW0tPmlzX3NlbGVjdGVkID0gZmFsc2U7CgkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7CgkJCX0KCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRuZXdsaXN0KTsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsKCQkJCgkJfWVsc2V7CgkJCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwwLCRpZCwkcmV0dXJuaWQsJHBhcmFtcywic2VhcmNoIik7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRuZXdsaXN0KTsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlcnJvcl9tc2ciLCR0aGlzLT5MYW5nKCJlcnJvcl9ub2l0ZW1mb3VuZCIpKTsKCQl9CgkJCgkJLy8gd2UgcmV0cmlldmUgdGhlIGRpc3BsYXkgdGVtcGxhdGUKCQlpZihjb3VudCgkaXRlbWxpc3QpID09IDAgJiYgJGVtcHR5dGVtcGxhdGUgIT0gIioqIil7CgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkZW1wdHl0ZW1wbGF0ZSk7CgkJfWVsc2V7CgkJCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCWlmKCFpc3NldCgkdGVtcGxhdGUpIHx8ICEkdGVtcGxhdGUpewoJCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiLCIqKiIpOwoJCQkJaWYoJHRlbXBsYXRlbmFtZSA9PSAiKioiKQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiR3aGF0KTsKCQkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQkJfQkJCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7CgkJfQoJCQoJfWVsc2V7CgkJLy8gU0lNUExFIFNFQVJDSAoJCQoJCSR0ZW1wbGF0ZSA9IGZhbHNlOwoJCSRsZXZlbHMgPSAoJHdoYXQgPT0gIi1hbGwiKT8kbGV2ZWxhcnJheTphcnJheSgkd2hhdCk7CgkJCgkJLy8gd2UgcmV0cmlldmUgdGhlIGRpc3BsYXkgdGVtcGxhdGUKCQkvLyBpZiB0aGUgdXNlciBoYXMgYXNrZWQgZm9yIGEgc3BlY2lmaWMgZGlzcGxheSB0ZW1wbGF0ZSwgd2Ugd2lsbCB1c2UgaXQgZm9yIGV2ZXJ5IGNhdGVnb3J5IDoKCQlpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0sICR0aGlzLT5HZXROYW1lKCkpOwoJCWlmKCFpc3NldCgkdGVtcGxhdGUpIHx8ICEkdGVtcGxhdGUpewoJCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIsIioqIik7CgkJCWlmKCR0ZW1wbGF0ZW5hbWUgPT0gIioqIil7CgkJCQlpZihjb3VudCgkbGV2ZWxzKSA9PSAxKXsKCQkJCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiRsZXZlbHNbMF0pOwoJCQkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQkJCX1lbHNlewoJCQkJCSR0ZW1wbGF0ZSA9IGZhbHNlOwoJCQkJfQoJCQl9ZWxzZXsKCQkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQkJfQoJCX0KCgkJCgkJZm9yZWFjaCgkbGV2ZWxzIGFzICRsZXZlbCl7CgkJCSR3aGVyZWNsYXVzZSA9ICIiOwoJCQkkZmllbGRzID0gJHRoaXMtPmdldF9sZXZlbHNlYXJjaGZpZWxkcygkbGV2ZWwpOwoJCQkka2V5d29yZHMgPSAkdGhpcy0+cGFyc2VrZXl3b3JkcyhodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1sic2VhcmNoZmllbGQiXSkpOwoJCQlmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKXsKCQkJCWZvcmVhY2goJGtleXdvcmRzIGFzICRrZXl3b3JkKXsKCQkJCQkkd2hlcmVjbGF1c2UgLj0gKCR3aGVyZWNsYXVzZSA9PSAiIj8iIjoiIE9SICIpLiJBLiIuJGZpZWxkLiIgTElLRSAnJSIuYWRkc2xhc2hlcygka2V5d29yZCkuIiUnIjsKCQkJCX0KCQkJfQoJCQkkd2hlcmVjbGF1c2UgPSAiQS5hY3RpdmU9MSIuKCR3aGVyZWNsYXVzZSA9PSAiIj8iIjoiIEFORCAoIi4kd2hlcmVjbGF1c2UuIikiKTsKCQkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRsZXZlbDsKCQkJJGl0ZW1saXN0ID0gJHRoaXMtPiRnZXRmdW5jdGlvbihhcnJheSgpLCBmYWxzZSwgIiIsICIiLCBpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pPyRwYXJhbXNbIm9yZGVyYnkiXTowLCAkbGltaXQsICR3aGVyZWNsYXVzZSk7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWNvdW50Iixjb3VudCgkaXRlbWxpc3QpKTsKCQkJCgkJCWlmKGNvdW50KCRpdGVtbGlzdCkgPiAwKXsKCgkJCQkkdG90YWwgPSAkbmJwZXJwYWdlPyR0aGlzLT5jb3VudHNvbWV0aGluZygkbGV2ZWwsImlkIixhcnJheSgpLCR3aGVyZWNsYXVzZSwgYXJyYXkoKSk6ZmFsc2U7CgkJCQkkdGhpcy0+cGFnaW5hdGUoJHdoYXQsJHRvdGFsLCRpZCwkcmV0dXJuaWQsJHBhcmFtcywic2VhcmNoIik7CgkJCQkKCQkJCS8vIHdlIG11c3QgYnVpbGQgYSBkZXRhaWwgbGluayBmb3IgZWFjaCByZXN1bHQgZWxlbWVudAoJCQkJJG5ld2xpc3QgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pewoJCQkJCSRpdGVtID0gJHRoaXMtPmFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkbGlua3JldHVybmlkKTsKCQkJCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSBmYWxzZTsKCQkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7CgkJCQl9CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkbmV3bGlzdCk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImxldmVsdGl0bGUiLCR0aGlzLT5MYW5nKCRsZXZlbC4iX3BsdXJhbCIpKTsKCQkJCQkJCQoJCQkJaWYoJHRlbXBsYXRlID09IEZBTFNFKXsKCQkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaF9nZW5lcmFscmVzdWx0cy50cGwiKTsKCQkJCX1lbHNlewoJCQkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7CQkJCQoJCQkJfQoJCQkJCgkJCX1lbHNlewoJCQkJJHRoaXMtPnBhZ2luYXRlKCR3aGF0LDAsJGlkLCRyZXR1cm5pZCwkcGFyYW1zLCJzZWFyY2giKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImVycm9yX21zZyIsJHRoaXMtPkxhbmcoImVycm9yX25vaXRlbWZvdW5kIikpOwoJCQl9CgkJCWlmKGNvdW50KCRpdGVtbGlzdCkgPT0gMCAmJiAkZW1wdHl0ZW1wbGF0ZSAhPSAiKioiKXsKCQkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkZW1wdHl0ZW1wbGF0ZSk7CQkJCQoJCQl9ZWxzZWlmKCR0ZW1wbGF0ZSA9PSBGQUxTRSl7CgkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaF9nZW5lcmFscmVzdWx0cy50cGwiKTsKCQkJfWVsc2V7CgkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwoJCQl9CgkJfQoJCQoJfQoJCgkvLyAjIEVORCBTRUFSQ0ggUkVTVUxUUwoJLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKfWVsc2V7CgkKCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCS8vICMgU0VBUkNIIEZPUk0JCgkKCSR3aGF0ID0gKGlzc2V0KCRwYXJhbXNbIndoYXQiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sid2hhdCJdLCRsZXZlbGFycmF5KSk/JHBhcmFtc1sid2hhdCJdOiItYWxsIjsKCWlmKCRzZWFyY2htb2RlID09ICJhZHZhbmNlZCIgJiYgJHdoYXQgPT0gIi1hbGwiKQkJJHdoYXQgPSAkZmluYWxsZXZlbDsKCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAic2VhcmNoIiwgJHJldHVybmlkKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIndoYXQiLCAkd2hhdCk7CgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJzZWFyY2htb2RlIiwgJHNlYXJjaG1vZGUpOwoJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJsaXN0dGVtcGxhdGUiLCAkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSk7CglpZihpc3NldCgkcGFyYW1zWyJsaW1pdCJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAibGltaXQiLCAkcGFyYW1zWyJsaW1pdCJdKTsKCWlmKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiaW5saW5lIiwgJHBhcmFtc1siaW5saW5lIl0pOwoJaWYoaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAib3JkZXJieSIsICRwYXJhbXNbIm9yZGVyYnkiXSk7CglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkpCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJuYnBlcnBhZ2UiLCAkcGFyYW1zWyJuYnBlcnBhZ2UiXSk7CglpZihpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJkZXRhaWxwYWdlIiwgJHBhcmFtc1siZGV0YWlscGFnZSJdKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigic2VhcmNodGl0bGUiLCAkdGhpcy0+TGFuZygic2VhcmNodGl0bGUiKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIndoYXQiLCAoJHdoYXQgPT0gIi1hbGwiKT9mYWxzZTokdGhpcy0+TGFuZygkd2hhdCkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0c2VhcmNoIiwgJHRoaXMtPkxhbmcoInNlYXJjaGJ0biIpKSk7CgoJaWYoJHNlYXJjaG1vZGUgPT0gInNpbXBsZSIpewoJCS8vIFdFIEFSRSBET0lORyBBIFNJTVBMRSBTRUFSQ0gKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNlYXJjaGZpZWxkIiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsInNlYXJjaGZpZWxkIiwiIiw1MCkpOwoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgic2VhcmNoLnRwbCIpOwoJCQoJfWVsc2V7CgkJLy8gV0UgQVJFIERPSU5HIEFOIEFEVkFOQ0VEIFNFQVJDSAoKCQkkdGhpcy0+Y3JlYXRlRmllbGRGb3JtKCR3aGF0LCAkaWQsIHRydWUpOwoKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaF8iLiR3aGF0LiIudHBsIik7CgkJCgl9CgkKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQoJLy8gIyBFTkQgU0VBUkNIIEZPUk0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgkKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.sitemap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRtb2RlID0gKGlzc2V0KCRwYXJhbXNbIm1vZGUiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sibW9kZSJdLGFycmF5KCJnb29nbGUiLCJ1cmxsaXN0IiwiZnJvbnRlbmQiKSkpPyRwYXJhbXNbIm1vZGUiXToiZnJvbnRlbmQiOwokd2hhdCA9IGlzc2V0KCRwYXJhbXNbIndoYXQiXSk/ZXhwbG9kZSgnfCcsJHBhcmFtc1sid2hhdCJdKTokbGV2ZWxhcnJheTsKJGxpbmtyZXR1cm5pZCA9IChpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKT8kdGhpcy0+Z2V0X3BhZ2VpZCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOiRyZXR1cm5pZDsKJGlubGluZSA9IChpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkgJiYgJHBhcmFtc1siaW5saW5lIl0pP3RydWU6ZmFsc2U7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGkgPSAwOwokc2VsZWN0ID0gIiI7CiR0YWJsZXMgPSAiIjsKJG9yZGVyID0gIiI7CndoaWxlKCRpIDwgY291bnQoJGxldmVsYXJyYXkpKXsKCSRsZXZlbCA9ICRsZXZlbGFycmF5WyRpXTsKCSRpKys7Cgkkc2VsZWN0IC49ICgkc2VsZWN0PT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuYWxpYXMgdGFibGUiLiRpLiJfYWxpYXMsIHRhYmxlIi4kaS4iLm5hbWUgdGFibGUiLiRpLiJfbmFtZSI7CglpZigkaSA9PSAxKXsKCQkkdGFibGVzID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGkuICIgT04gdGFibGUiLigkaS0xKS4iLmlkPXRhYmxlIi4kaS4iLnBhcmVudCI7Cgl9Cgkkb3JkZXIgLj0gKCRvcmRlcj09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLml0ZW1fb3JkZXIiOwp9CiRxdWVyeSA9ICJTRUxFQ1QgJHNlbGVjdCBGUk9NICR0YWJsZXMgT1JERVIgQlkgJG9yZGVyIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokbGFzdCA9IGFycmF5KCk7CiRjdXJyZW50bGV2ZWwgPSAxOwppZigkbW9kZSA9PSAnZnJvbnRlbmQnKQllY2hvICc8dWwgaWQ9IicuJHRoaXMtPkdldE5hbWUoKS4nX21hcCI+JzsKd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpewoJJHBhcnNlbGV2ZWwgPSAxOwoJd2hpbGUoJHBhcnNlbGV2ZWwgPD0gJGkpewoJCWlmKGluX2FycmF5KCRsZXZlbGFycmF5WyRwYXJzZWxldmVsLTFdLCR3aGF0KSAmJiAoIWlzc2V0KCRsYXN0WyRwYXJzZWxldmVsXSkgfHwgJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfYWxpYXMiXSAhPSAkbGFzdFskcGFyc2VsZXZlbF0pICl7CgkJCSR3YW50ZWR3aGF0ID0gKCRwYXJzZWxldmVsPT0kaSk/JGxldmVsYXJyYXlbJGktMV06JGxldmVsYXJyYXlbJHBhcnNlbGV2ZWxdOwoJCQkkd2FudGVkcGFyYW0gPSAoJHBhcnNlbGV2ZWw9PSRpKT8iYWxpYXMiOiJwYXJlbnQiOwoJCQkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kd2FudGVkd2hhdCwgJHdhbnRlZHBhcmFtPT4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9hbGlhcyJdKTsKCQkJJHByZXR0eXVybCA9ICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJGxpbmtyZXR1cm5pZCk7CgkJCWlmKCRtb2RlID09ICdmcm9udGVuZCcpewoJCQkJaWYoJGN1cnJlbnRsZXZlbCA9PSAkcGFyc2VsZXZlbCl7CgkJCQkJaWYoJGxhc3RbJGN1cnJlbnRsZXZlbF0pCWVjaG8gIjwvbGk+IjsKCQkJCX1lbHNlaWYoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCQl3aGlsZSgkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJCQllY2hvICI8L2xpPjwvdWw+PC9saT4iOwoJCQkJCQkkY3VycmVudGxldmVsLS07CgkJCQkJfQoJCQkJfWVsc2VpZigkY3VycmVudGxldmVsIDwgJHBhcnNlbGV2ZWwpewoJCQkJCSRjdXJyZW50bGV2ZWwrKzsKCQkJCQllY2hvICc8dWw+JzsKCQkJCX0KCQkJCWVjaG8gJzxsaT4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9uYW1lIl0sICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKTsKCQkJfWVsc2VpZigkbW9kZSA9PSAndXJsbGlzdCcpewoJCQkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJGxpbmtyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpLicKJzsKCQkJfWVsc2VpZigkbW9kZSA9PSAnZ29vZ2xlJyl7CgkJCQkkcHJpb3JpdHkgPSA5IC0gJHBhcnNlbGV2ZWw7CgkJCQlpZigkcHJpb3JpdHkgPCAwKQkkcHJpb3JpdHkgPSAxOwoJCQkJJHByaW9yaXR5ID0gIjAuIi4kcHJpb3JpdHk7CgkJCQllY2hvICcKCTx1cmw+CgkJPGxvYz4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAiIiwgJG5ld3BhcmFtcywgIiIsIHRydWUsICRpbmxpbmUsICIiLCBmYWxzZSwgJHByZXR0eXVybCkuJzwvbG9jPgoJCTxwcmlvcml0eT4nLiRwcmlvcml0eS4nPC9wcmlvcml0eT4KCTwvdXJsPic7CgkJCX0KCQkJCgkJCSRsYXN0WyRwYXJzZWxldmVsXSA9ICRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX2FsaWFzIl07CgkJfQoJCSRwYXJzZWxldmVsKys7Cgl9Cn0KaWYoJG1vZGUgPT0gJ2Zyb250ZW5kJyl7CgllY2hvICI8L2xpPiI7Cgl3aGlsZSgkY3VycmVudGxldmVsID4gMSl7CgkJZWNobyAiPC91bD48L2xpPiI7CgkJJGN1cnJlbnRsZXZlbC0tOwoJfQoJZWNobyAiPC91bD4iOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.toggle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qIFBBUkFNUyA6DQp3aGF0KiA6ICdhY3RpdmUnIHx8ICdkZWZhdWx0Jw0KdGFibGVuYW1lKg0KcHJlZml4DQpwcmVmaXguaWQNCm5ld3ZhbCA6IG5ldyB2YWx1ZSBmb3IgYWN0aXZlICggMCB8fCAxICkNCiovDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1snbGV2ZWxuYW1lJ10pP2FycmF5KCdhY3RpdmVfdGFiJz0+JHBhcmFtc1snbGV2ZWxuYW1lJ10pOmFycmF5KCk7DQoNCmlmKCAhaXNzZXQoJHBhcmFtc1snd2hhdCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoNCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCiRkYnRhYmxlID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kcGFyYW1zWyd0YWJsZW5hbWUnXTsNCiRmaWVsZCA9ICRwYXJhbXNbJ3doYXQnXTsNCiRpdGVtaWQgPSBpc3NldCgkcGFyYW1zWydwcmVmaXgnXSk/JHBhcmFtc1skcGFyYW1zWydwcmVmaXgnXS4naWQnXTpmYWxzZTsNCiR2YWx1ZSA9IGlzc2V0KCRwYXJhbXNbJ25ld3ZhbCddKT8kcGFyYW1zWyduZXd2YWwnXToxOw0KDQppZigkZmllbGQgPT0gJ2FjdGl2ZScpew0KCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGFjdGl2ZT0/IFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdmFsdWUsICRpdGVtaWQpKTsNCn1lbHNlaWYoJGZpZWxkID09ICdkZWZhdWx0Jyl7DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmIGlzc2V0KCRwYXJhbXNbInBhcmVudGRlZmF1bHQiXSkgJiYgJHBhcmFtc1sicGFyZW50ZGVmYXVsdCJdKSB7DQoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGlzZGVmYXVsdD0wIFdIRVJFIHBhcmVudD0/IjsNCgkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJwYXJlbnQiXSkpOw0KCX1lbHNlew0KCQkkcXVlcnkgPSAiVVBEQVRFICRkYnRhYmxlIFNFVCBpc2RlZmF1bHQ9MCI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCX0NCglpZigkaXRlbWlkKXsNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXNkZWZhdWx0PTEgV0hFUkUgaWQ9PyI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1pZCkpOw0KCX0NCn0NCg0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/avplayer.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogYXZwbGF5ZXINCiMgVmVyc2lvbjogMS4zLCANCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCJzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojIFRoaXMgbW9kdWxlIHdhcyBjcmVhdGVkIHdpdGggQ1RMTW9kdWxlTWFrZXIgMS44LjkuMw0KIyBDVExNb2R1bGVNYWtlciB3YXMgY3JlYXRlZCBieSBQaWVycmUtTHVjIEdlcm1haW4gYW5kIGlzIHJlbGVhc2VkIHVuZGVyIEdOVQ0KIyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2N0bG1vZHVsZW1ha2VyDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBhdnBsYXllciBleHRlbmRzIENNU01vZHVsZQ0Kew0KCXZhciAkY3VycmVudHRyZWUgPSBmYWxzZTsNCgl2YXIgJGN1cnJlbnRwYWdlaW5kZXggPSAxOw0KCXZhciAkcGxjdXJyZW50ID0gYXJyYXkoKTsNCg0KCWZ1bmN0aW9uIEdldE5hbWUoKQ0KCXsNCgkJcmV0dXJuICJhdnBsYXllciI7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRGcmllbmRseU5hbWUoKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCgkgICBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQicyBzaG93biBpbiB0aGUNCgkgICBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4NCgkgICBjb21wb25lbnQpLg0KCSAgIA0KCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldFZlcnNpb24oKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQoJICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4NCgkgICBUaGUgQ01TIHdpbGwgdXNlIHRoaXMgdG8gaWRlbnRpZnkgd2hldGhlciBvciBub3QNCgkgICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCgkgICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUNCgkgICBpdHNlbGYgaWYgcmVxdWVzdGVkLgkgICANCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpDQoJew0KCQlyZXR1cm4gIjEuMyI7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldERlcGVuZGVuY2llcygpDQoJICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQNCgkgICBiZWZvcmUgeW91IGNhbiBpbnN0YWxsIGl0Lg0KCSAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHRob3NlIGRlcGVuZGVuY2llcyBhbmQNCgkgICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLg0KCSAgIA0KCSAgIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuDQoJICAgcmV0dXJuIGFycmF5KCJzb21lbW9kdWxlIj0+IjEuMCIsICJvdGhlcm1vZHVsZSI9PiIxLjEiKTsNCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkNCgl7DQoJCXJldHVybiBhcnJheSgpOw0KCX0NCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0SGVscCgpDQoJICAgVGhpcyByZXR1cm5zIEhUTUwgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZS4NCgkgICBUeXBpY2FsbHksIHlvdSJsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvDQoJICAgdXNlIHRoZSBtb2R1bGUuDQoJICAgDQoJICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0SGVscCgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImhlbHAiKTsNCgl9DQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldEF1dGhvcigpDQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUNCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0QXV0aG9yKCkNCgl7DQoJCXJldHVybiAiTWFydGluIFdvb2RzIjsNCgkJLy8gb2YgY291cnNlIHlvdSBtYXkgY2hhbmdlIHRoaXMsIGJ1dCBpdCB3b3VsZCBiZSBuaWNlDQoJCS8vIHRvIGtlZXAgYSBtZW50aW9uIG9mIHRoZSBDVExNb2R1bGVNYWtlciBzb21ld2hlcmUNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0QXV0aG9yRW1haWwoKQ0KCSAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgTW9kdWxlDQoJICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzDQoJICAgb2YgeW91ciBtb2R1bGUgZ2V0IGluIHRvdWNoIHdpdGggeW91IHRvIHNlbmQgYnVnIHJlcG9ydHMsDQoJICAgcXVlc3Rpb25zLCBjYXNlcyBvZiBiZWVyLCBhbmQvb3IgbGFyZ2Ugc3VtcyBvZiBtb25leS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQ0KCXsNCgkJcmV0dXJuICJtd2NvdXJ0ZW5heUB5YWhvby5jb20iOw0KCX0NCg0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBJc1BsdWdpbk1vZHVsZSgpDQoJICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyB1cG9uDQoJICAgd2hldGhlciB1c2VycyBjYW4gaW5jbHVkZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvcg0KCSAgIHRlbXBsYXRlIHVzaW5nIGEgc21hcnR5IHRhZyBvZiB0aGUgZm9ybQ0KCSAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iUHJvZCIgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQ0KCSAgIA0KCSAgIElmIHlvdXIgbW9kdWxlIGRvZXMgbm90IGdldCBpbmNsdWRlZCBpbiBwYWdlcyBvcg0KCSAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQ0KCXsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEhhc0FkbWluKCkNCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBib29sZWFuIHZhbHVlLCBkZXBlbmRpbmcgb24NCgkgICB3aGV0aGVyIHlvdXIgbW9kdWxlIGFkZHMgYW55dGhpbmcgdG8gdGhlIEFkbWluIGFyZWEgb2YNCgkgICB0aGUgc2l0ZS4gRm9yIHRoZSByZXN0IG9mIHRoZXNlIGNvbW1lbnRzLCBJImxsIGJlIGNhbGxpbmcNCgkgICB0aGUgYWRtaW4gcGFydCBvZiB5b3VyIG1vZHVsZSB0aGUgIkFkbWluIFBhbmVsIiBmb3INCgkgICB3YW50IG9mIGEgYmV0dGVyIHRlcm0uDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEhhc0FkbWluKCkgewlyZXR1cm4gdHJ1ZTsJfQ0KCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHtyZXR1cm4gImNvbnRlbnQiO30NCglmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkge3JldHVybiAkdGhpcy0+TGFuZygiYWRtaW5kZXNjcmlwdGlvbiIpO30NCg0KCWZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpew0KCQlyZXR1cm4gKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX25vcm1hbHVzZXIiKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpKTsNCgl9DQoJDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBNb2R1bGUgQ29uc3RydWN0b3IgDQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBhdnBsYXllcigpDQoJew0KCQlnbG9iYWwgJGdDbXM7DQogICAgCSRzbWFydHkgPSYgJGdDbXMtPkdldFNtYXJ0eSgpOw0KCQkkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigiYXZwbGF5ZXJfYnJlYWRjcnVtYnMiLCBhcnJheSgmJHRoaXMsImZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzIikpOw0KCQkkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigiYXZwbGF5ZXJfZ2V0X2xldmVsaXRlbSIsIGFycmF5KCYkdGhpcywiZnVuY3Rpb25fZ2V0X2xldmVsaXRlbSIpKTsNCgkJcGFyZW50OjpDTVNNb2R1bGUoKTsNCgl9DQoJDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBTZXRQYXJhbWV0ZXJzKCkNCgkgICBUaGlzIGZ1bmN0aW9uIGVuYWJsZXMgeW91IHRvIGNyZWF0ZSBtYXBwaW5ncyBmb3INCgkgICB5b3VyIG1vZHVsZSB3aGVuIHVzaW5nICJQcmV0dHkgVXJscyIuDQoJICAgDQoJICAgVHlwaWNhbGx5LCBtb2R1bGVzIGNyZWF0ZSBpbnRlcm5hbCBsaW5rcyB0aGF0IGhhdmUNCgkgICBiaWcgdWdseSBzdHJpbmdzIGFsb25nIHRoZSBsaW5lcyBvZjoNCgkgICBpbmRleC5waHA/bWFjdD1Nb2ROYW1lLGNudG50MDEsYWN0aW9uTmFtZSwwJmNudG50MDFwYXJhbTE9MSZjbnRudDAxcGFyYW0yPTImY250bnQwMXJldHVybmlkPTMNCgkgICANCgkgICBZb3UgbWlnaHQgcHJlZmVyIHRoZXNlIHRvIGxvb2sgbGlrZToNCgkgICAvTW9kdWxlRnVuY3Rpb24vMi8zDQoJICAgDQoJICAgVG8gZG8gdGhpcywgeW91IGhhdmUgdG8gcmVnaXN0ZXIgcm91dGVzIGFuZCBtYXANCgkgICB5b3VyIHBhcmFtZXRlcnMgaW4gYSB3YXkgdGhhdCB0aGUgQVBJIHdpbGwgYmUgYWJsZQ0KCSAgIHRvIHVuZGVyc3RhbmQuDQoNCgkgICBBbHNvIG5vdGUgdGhhdCBhbnkgY2FsbHMgdG8gQ3JlYXRlTGluayB3aWxsIG5lZWQgdG8NCgkgICBiZSB1cGRhdGVkIHRvIHBhc3MgdGhlIHByZXR0eSB1cmwgcGFyYW1ldGVyLg0KCSAgIA0KCSAgIFNpbmNlIHRoZSBTa2VsZXRvbiBkb2VzbiJ0IHJlYWxseSBjcmVhdGUgYW55IGxpbmtzLA0KCSAgIHRoZSBzZWN0aW9uIGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIGJ1dCB5b3UgY2FuDQoJICAgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgcHJldHR5IHVybHMuDQoJICAgDQoJICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkNCgl7DQoNCgkJLy8gdGhlc2UgYXJlIGZvciBpbnRlcm5hbCBwcmV0dHkgVVJMUy4NCgkJLy8geW91IG1heSBjaGFuZ2UgdGhlc2UsIGJ1dCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gY2hhbmdlIHRoZSBCdWlsZFByZXR0eVVSTHMgZnVuY3Rpb24gYmVsb3cgYWNjb3JkaW5nbHkNCgkJLy8gc2VlIEZBUSBmb3IgbW9yZSBpbmZvIG9uIHRoaXMNCgkJJGRlZmFjdCA9IGFycmF5KCJhY3Rpb24iPT4iZGVmYXVsdCIpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1thQV12cGxheWVyXC8oW1FxXXVlcnkpXC8oP1A8cXVlcnk+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1thQV12cGxheWVyXC8oW1FxXXVlcnkpXC8oP1A8cXVlcnk+WzAtOV0rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bYUFddnBsYXllclwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXZwbGF5ZXJcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bYUFddnBsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhcmVudD5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXZwbGF5ZXJcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXZwbGF5ZXJcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkNCgkJJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOw0KCQkNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiYWN0aW9uIiwgImRlZmF1bHQiLCAkdGhpcy0+TGFuZygicGhlbHBfYWN0aW9uIikpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJ3aGF0IiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF93aGF0IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgid2hhdCIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiYWxpYXMiLCAiIiwgJHRoaXMtPkxhbmcoInBoZWxwX2FsaWFzIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiYWxpYXMiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInNob3dkZWZhdWx0IiwgZmFsc2UsICR0aGlzLT5MYW5nKCJwaGVscF9zaG93ZGVmYXVsdCIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInNob3dkZWZhdWx0IixDTEVBTl9JTlQpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJwYXJlbnQiLCAiIiwgJHRoaXMtPkxhbmcoInBoZWxwX3BhcmVudCIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInBhcmVudCIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigibGltaXQiLCAwLCAkdGhpcy0+TGFuZygicGhlbHBfbGltaXQiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJsaW1pdCIsQ0xFQU5fSU5UKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigibmJwZXJwYWdlIiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX25icGVycGFnZSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoIm5icGVycGFnZSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigib3JkZXJieSIsIDAsICR0aGlzLT5MYW5nKCJwaGVscF9vcmRlcmJ5IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgib3JkZXJieSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiZGV0YWlscGFnZSIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfZGV0YWlscGFnZSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoImRldGFpbHBhZ2UiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInJhbmRvbSIsIDAsICR0aGlzLT5MYW5nKCJwaGVscF9yYW5kb20iKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJyYW5kb20iLENMRUFOX0lOVCk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImxpc3R0ZW1wbGF0ZSIsICIiLCAkdGhpcy0+bGFuZygicGhlbHBfbGlzdHRlbXBsYXRlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgibGlzdHRlbXBsYXRlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJmaW5hbHRlbXBsYXRlIiwgIiIsICR0aGlzLT5sYW5nKCJwaGVscF9maW5hbHRlbXBsYXRlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiZmluYWx0ZW1wbGF0ZSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigiZm9yY2VsaXN0IiwgIjAiLCAkdGhpcy0+bGFuZygicGhlbHBfZm9yY2VsaXN0IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiZm9yY2VsaXN0IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJpbmxpbmUiLCAwLCAkdGhpcy0+bGFuZygicGhlbHBfaW5saW5lIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiaW5saW5lIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJzZWFyY2htb2RlIiwgImFkdmFuY2VkIiwgJHRoaXMtPmxhbmcoInBoZWxwX3NlYXJjaG1vZGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJzZWFyY2htb2RlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJxdWVyeSIsIDAsICR0aGlzLT5sYW5nKCJwaGVscF9xdWVyeSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInF1ZXJ5IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJ0b2FjdGlvbiIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfdG9hY3Rpb24iKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJ0b2FjdGlvbiIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInBhZ2VpbmRleCIsQ0xFQU5fSU5UKTsNCg0KCQkvLyBmb3IgdGhlIHNlYXJjaCBmb3JtICh0cmljayBmcm9tIGlrdWxpcykgOg0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9kYXRlXy4qLyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQLiIvZmllbGRfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9jb21wYXJlXy4qLyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInN1Ym1pdHNlYXJjaCIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInNlYXJjaGZpZWxkIixDTEVBTl9TVFJJTkcpOw0KCQkNCgkJLy8gZm9yIHRoZSBmcm9udGVuZCBhZGQgYWN0aW9uDQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2ZlYWRkLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9mZWZpbGUuKi8iLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJjYXB0Y2hhX2lucHV0IiwgQ0xFQU5fU1RSSU5HKTsNCgkJDQoJfQ0KDQogICAgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbigkZXZlbnRuYW1lKQ0KICAgIHsNCgkJJGV2ZW50bmFtZSA9IHN0cl9yZXBsYWNlKCJhdnBsYXllciIsICIiLCAkZXZlbnRuYW1lKTsNCgkJcmV0dXJuICR0aGlzLT5sYW5nKCJldmVudGRlc2MiLiRldmVudG5hbWUpOw0KICAgIH0NCiAgICANCglmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KCXsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCJwb3N0aW5zdGFsbCIpOw0KCX0NCglmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoInBvc3R1bmluc3RhbGwiKTsNCgl9DQoJZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoInJlYWxseV91bmluc3RhbGwiKTsNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgSW5zdGFsbCgpDQoJICAgV2hlbiB5b3VyIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lDQoJICAgc2V0dXAuIFR5cGljYWwgdGhpbmdzIHRoYXQgaGFwcGVuIGhlcmUgYXJlIHRoZSBjcmVhdGlvbg0KCSAgIGFuZCBwcmVwb3B1bGF0aW9uIG9mIGRhdGFiYXNlIHRhYmxlcywgZGF0YWJhc2Ugc2VxdWVuY2VzLA0KCSAgIHBlcm1pc3Npb25zLCBwcmVmZXJlbmNlcywgZXRjLg0KCSAgIAkgICANCgkgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGNyZWF0aW9uIG9mIGRhdGFiYXNlIHRhYmxlcywNCgkgICBjaGVjayBvdXQgdGhlIEFET0RCIERhdGEgRGljdGlvbmFyeSBwYWdlIGF0DQoJICAgaHR0cDovL3BocGxlbnMuY29tL2xlbnMvYWRvZGIvZG9jcy1kYXRhZGljdC5odG0NCgkgICANCgkgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBzdHJpbmcgaW4gY2FzZSBvZiBhbnkgZXJyb3IsDQoJICAgYW5kIENNUyB3aWxsIG5vdCBjb25zaWRlciB0aGUgbW9kdWxlIGluc3RhbGxlZC4NCgkgICBTdWNjZXNzZnVsIGluc3RhbGxzIHNob3VsZCByZXR1cm4gRkFMU0Ugb3Igbm90aGluZyBhdCBhbGwuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEluc3RhbGwoKQ0KCXsNCgkJZ2xvYmFsICRnQ21zOw0KCQlyZXF1aXJlICJtZXRob2QuaW5zdGFsbC5waHAiOw0KCX0NCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgVW5pbnN0YWxsKCkNCgkgICBTb21ldGltZXMsIGFuIGV4Y2VwdGlvbmFsbHkgdW5lbmxpZ2h0ZW5lZCBvciBpZ25vcmFudA0KCSAgIGFkbWluIHdpbGwgd2lzaCB0byB1bmluc3RhbGwgeW91ciBtb2R1bGUuIFdoaWxlIGl0DQoJICAgd291bGQgYmUgYmVzdCB0byBsYXkgaW50byB0aGVzZSBpZGlvdHMgd2l0aCBhIGNsdWVzdGljaywNCgkgICB3ZSB3aWxsIGRvIHRoZSBtYWduYW5pbW91cyB0aGluZyBhbmQgcmVtb3ZlIHRoZSBtb2R1bGUNCgkgICBhbmQgY2xlYW4gdXAgdGhlIGRhdGFiYXNlLCBwZXJtaXNzaW9ucywgYW5kIHByZWZlcmVuY2VzDQoJICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gaXQuDQoJICAgVGhpcyBpcyB0aGUgbWV0aG9kIHdoZXJlIHdlIGRvIHRoaXMuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIFVuaW5zdGFsbCgpDQoJew0KCQlnbG9iYWwgJGdDbXM7DQoJCXJlcXVpcmUgIm1ldGhvZC51bmluc3RhbGwucGhwIjsNCgl9DQoNCg0KICAgIGZ1bmN0aW9uIFNlYXJjaFJlc3VsdCgkcmV0dXJuaWQsICRpdGVtaWQsICRsZXZlbCA9ICIiKQ0KICAgIHsNCgkJJHJlc3VsdCA9IGFycmF5KCk7DQoJCSR3YW50ZWRwYXJhbSA9IGZhbHNlOw0KCQkkbmV3cGFyYW1zID0gYXJyYXkoKTsNCgkJaWYoJGxldmVsID09ICJtZWRpYWZpbGUiKXsNCgkJCS8vIHdlIHNlZWsgYW4gZWxlbWVudCBvZiB0aGUgbGFzdCBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgZGV0YWlsIHZpZXcNCgkJCSR3YW50ZWRwYXJhbSA9ICJhbGlhcyI7DQoJCX1lbHNlew0KCQkJaWYoJG5ld3BhcmFtc1sid2hhdCJdID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJGxldmVsKSl7DQoJCQkvLyB3ZSBzZWVrIGFuIGVsZW1lbnQgb2YgYW5vdGhlciBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgbGlzdCB2aWV3IG9mIGl0cyBjaGlsZHJlbg0KCQkJCSR3YW50ZWRwYXJhbSA9ICJwYXJlbnQiOw0KCQkJfQ0KCQl9DQoJCWlmICgkd2FudGVkcGFyYW0pew0KCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyXyIuJGxldmVsOw0KCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJJHF1ZXJ5ID0gIlNFTEVDVCBuYW1lLCBhbGlhcyBGUk9NICR0YWJsZW5hbWUgV0hFUkUgaWQgPSA/IjsNCgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJGl0ZW1pZCApICk7DQoJCQlpZiAoJGRicmVzdWx0KXsNCgkJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOw0KCQkJCSRuZXdwYXJhbXNbJHdhbnRlZHBhcmFtXSA9ICRyb3dbImFsaWFzIl07DQoNCgkJCQkvLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4NCgkJCQkkcmVzdWx0WzBdID0gJHRoaXMtPkdldEZyaWVuZGx5TmFtZSgpOw0KDQoJCQkJLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQ0KCQkJCSRyZXN1bHRbMV0gPSAkcm93WyJuYW1lIl07DQoJCQ0KCQkJCS8vMiBwb3NpdGlvbiBpcyB0aGUgVVJMIHRvIHRoZSB0aXRsZS4NCgkJCQkkcmVzdWx0WzJdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCBmYWxzZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICRyZXN1bHQ7DQoJfQ0KCQ0KCWZ1bmN0aW9uIFNlYXJjaFJlaW5kZXgoJiRtb2R1bGUpDQogICAgew0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfcGxheWVyIixmYWxzZSkpew0KCQkJJGl0ZW1saXN0ID0gJHRoaXMtPmdldF9sZXZlbF9wbGF5ZXIoKTsNCgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJJG1vZHVsZS0+QWRkV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJGl0ZW0tPmlkLCAicGxheWVyIiwgJHRleHQsIE5VTEwpOw0KCQkJfQ0KCQl9DQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfbWVkaWFmaWxlIixmYWxzZSkpew0KCQkJJGl0ZW1saXN0ID0gJHRoaXMtPmdldF9sZXZlbF9tZWRpYWZpbGUoKTsNCgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJJG1vZHVsZS0+QWRkV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJGl0ZW0tPmlkLCAibWVkaWFmaWxlIiwgJHRleHQsIE5VTEwpOw0KCQkJfQ0KCQl9DQoJCQ0KICAgIH0JDQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KTk9UIFBBUlQgT0YgVEhFIE5PUk1BTCBNT0RVTEUgQVBJDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KICAgIGZ1bmN0aW9uIGdldERlZmF1bHRUZW1wbGF0ZXMoKXsNCiAgICAJLy8gcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgdGVtcGxhdGVzIHRoYXQgYXJlIHNlbGVjdGVkIGFzIGRlZmF1bHQgKGp1c3Qgc28gdGhhdCB3ZSBkb24ndCBkZWxldGUgdGhlbSkNCgkgICAkcmVzdWx0ID0gYXJyYXkoKTsNCgkgICAkcmVzdWx0W10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiKTsNCgkgICAkcmVzdWx0W10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX3BsYXllciIpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfbWVkaWFmaWxlIik7DQoJICAgcmV0dXJuICRyZXN1bHQ7DQogICAgfQ0KCQ0KICAgIGZ1bmN0aW9uIGdldE9yZGVyVHlwZSgkd2hhdCl7DQoJCS8vIHJldHVybnMgd2hldGhlciBhIGxldmVsIGlzIG9yZGVyZWQgYnkgcGFyZW50IG9yIG5vdA0KCQkkcmV0dXJuID0gYXJyYXkoInBsYXllciI9PnRydWUsIm1lZGlhZmlsZSI9PnRydWUpOw0KCQlyZXR1cm4gKGlzc2V0KCRyZXR1cm5bJHdoYXRdKT8kcmV0dXJuWyR3aGF0XTpmYWxzZSk7DQogICAgfQ0KDQoJZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpew0KCQlnbG9iYWwgJGdDbXM7DQoJCQ0KCQlzd2l0Y2goJGFjdGlvbil7DQoJCQljYXNlICJsaW5rIjoNCgkJCQkkdG9hY3Rpb24gPSBpc3NldCgkcGFyYW1zWyJ0b2FjdGlvbiJdKT8kcGFyYW1zWyJ0b2FjdGlvbiJdOiJkZWZhdWx0IjsNCgkJCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwkdG9hY3Rpb24sJHJldHVybmlkLCIiLCRwYXJhbXMsIiIsdHJ1ZSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJicmVhZGNydW1icyI6DQoJCQkJJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7DQoJCQkJJHRoaXMtPmZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzKCRwYXJhbXMsICRzbWFydHkpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiZnJvbnRlbmRfZWRpdCI6DQoJCQkJJHdoYXQgPSBpc3NldCgkcGFyYW1zWyJ3aGF0Il0pPyRwYXJhbXNbIndoYXQiXToibWVkaWFmaWxlIjsNCgkJCQlzd2l0Y2goJHdoYXQpew0KCQkJCQljYXNlICJwbGF5ZXIiOg0KCQkJCQkJcmVxdWlyZSAiYWN0aW9uLkZFYWRkQS5waHAiOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2UgIm1lZGlhZmlsZSI6DQoJCQkJCQlyZXF1aXJlICJhY3Rpb24uRkVhZGRCLnBocCI7DQoJCQkJCQlicmVhazsNCgkJCQkJDQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiY2hhbmdlcHJlZmVyZW5jZXMiOg0KCQkJCWlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpKXsNCgkJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoImVycm9yX2RlbmllZCIpKSk7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCQkkcHJlZnMgPSBhcnJheSgicmVzdHJpY3RfcGVybWlzc2lvbnMiLCJ1c2VfaGllcmFyY2h5Iiwib3JkZXJieW5hbWUiLCJkaXNwbGF5X2ZpbHRlciIsImRpc3BsYXlfaW5zdGFudHNlYXJjaCIsImRpc3BsYXlfaW5zdGFudHNvcnQiLCJlZGl0YWJsZV9hbGlhc2VzIiwiYXV0b2luY3JlbWVudF9hbGlhcyIsImFsbG93X3NxbCIsImZvcmNlX2xpc3QiLCJkZWxldGVfZmlsZXMiLCJ0YWJkaXNwbGF5X3RlbXBsYXRlcyIsInRhYmRpc3BsYXlfZmllbGRvcHRpb25zIiwidGFiZGlzcGxheV9xdWVyaWVzIiwic2hvd3RodW1ibmFpbHMiLCJmZV93eXNpd3lnIiwiZmVfZGVjb2RlZW50aXRpZXMiLCJmZV9hbGxvd2ZpbGVzIiwiZmVfYWxsb3duYW1lY2hhbmdlIiwiZmVfYWxsb3dhZGRuZXciLCJmZV91c2VjYXB0Y2hhIiwiYWxsb3dfY29tcGxleF9vcmRlciIsImxvYWRfbmV4dHByZXZpb3VzIiwibG9hZF9uYmNoaWxkcmVuIiwidXNlX3Nlc3Npb24iLCJyZXRyaWV2ZXRyZWUiKTsNCgkJCQlmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRsZXZlbCl7DQoJCQkJCSRwcmVmc1tdID0gIm5ld2l0ZW1zZmlyc3RfIi4kbGV2ZWw7DQoJCQkJCSRwcmVmc1tdID0gInNlYXJjaG1vZHVsZV9pbmRleF8iLiRsZXZlbDsNCgkJCQkJJHByZWZzW10gPSAidGFiZGlzcGxheV8iLiRsZXZlbDsNCgkJCQl9DQoJCQkJZm9yZWFjaCgkcHJlZnMgYXMgJHByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRwcmVmLCBpc3NldCgkcGFyYW1zWyRwcmVmXSkpOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZlX2FmdGVyc3VibWl0Il0pKQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZmVfYWZ0ZXJzdWJtaXQiLCAkcGFyYW1zWyJmZV9hZnRlcnN1Ym1pdCJdKTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJmZV9tYXhmaWxlc2l6ZSJdKSkJJHRoaXMtPlNldFByZWZlcmVuY2UoImZlX21heGZpbGVzaXplIiwgJHBhcmFtc1siZmVfbWF4ZmlsZXNpemUiXSk7DQoJCQkJJG1heHNob3ducGFnZXMgPSAoaW50KSRwYXJhbXNbIm1heHNob3ducGFnZXMiXTsNCgkJCQkkYWRtaW5wYWdlcyA9IChpbnQpJHBhcmFtc1siYWRtaW5wYWdlcyJdOw0KCQkJCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJGxldmVsKXsNCgkJCQkJJG5icGVycGFnZSA9IChpbnQpIChpc3NldCgkcGFyYW1zWyRsZXZlbC4iX3BhZ2luYXRpb24iXSk/JHBhcmFtc1skbGV2ZWwuIl9wYWdpbmF0aW9uIl06MCk7DQoJCQkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRsZXZlbC4iX3BhZ2luYXRpb24iLCAkbmJwZXJwYWdlKTsNCgkJCQl9DQoJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoIm1heHNob3ducGFnZXMiLCAkbWF4c2hvd25wYWdlcyk7DQoJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoImFkbWlucGFnZXMiLCAkYWRtaW5wYWdlcyk7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4icHJlZmVyZW5jZXMiLCAibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiOg0KCQkJCWZvcmVhY2goJHBhcmFtcyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSAgICBpZigka2V5ICE9ICJzdWJtaXQiKQkgICAkdGhpcy0+c2V0UHJlZmVyZW5jZSgka2V5LCAkdmFsdWUpOw0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJ0ZW1wbGF0ZXMiLCAibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGV0cGwiOg0KCQkJCSRuZXdwYXJhbXMgPSBhcnJheSgiYWN0aXZlX3RhYiI9PiJ0ZW1wbGF0ZXMiKTsNCgkJCQkkZGVmdGVtcGxhdGVzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsNCgkJCSAgICBpZihpc3NldCgkcGFyYW1zWyJ0cGxuYW1lIl0pICYmICFpbl9hcnJheSgkcGFyYW1zWyJ0cGxuYW1lIl0sICRkZWZ0ZW1wbGF0ZXMpKXsNCgkJCQkgICAgaWYoJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCRwYXJhbXNbInRwbG5hbWUiXSkpCSAgICRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlPiJdID0gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKTsNCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGVxdWVyeSI6DQoJCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIj0+InF1ZXJpZXMiKTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeWlkIl0pKXsNCgkJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJCQlpZigkZGItPkV4ZWN1dGUoIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfc2F2ZWRfcXVlcmllcyBXSEVSRSBpZD0/IExJTUlUIDEiLCBhcnJheSgkcGFyYW1zWyJxdWVyeWlkIl0pKSl7DQoJCQkJCQkkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZSJdID0gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfZGVsZXRlZCIpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAidGVzdHF1ZXJ5IjoNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeWlkIl0pICYmICRxdWVyeSA9ICR0aGlzLT5nZXRfcXVlcmllcyhhcnJheSgiaWQiPT4kcGFyYW1zWyJxdWVyeWlkIl0pKSl7DQoJCQkJCSRxdWVyeSA9ICRxdWVyeVswXTsNCgkJCQkJZWNobyAiPHA+PGI+Ii4kdGhpcy0+TGFuZygicXVlcnkiKS4iOjwvYj4gIi4kcXVlcnktPm5hbWU7DQoJCQkJCWlmKCRxdWVyeS0+b3JkZXIgIT0gIiIpCWVjaG8gIiBPUkRFUiBCWSAiLiRxdWVyeS0+b3JkZXI7DQoJCQkJCWVjaG8gIjwvcD4iOw0KCQkJCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHF1ZXJ5LT53aGF0Ow0KCQkJCQkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCksIGZhbHNlLCAiIiwgIiIsIDAsIDAsICRxdWVyeS0+d2hlcmVjbGF1c2UsICRxdWVyeS0+d2hlcmV2YWx1ZXMsICgkcXVlcnktPnF1ZXJ5b3JkZXIgPT0gIiI/ZmFsc2U6JHF1ZXJ5LT5xdWVyeW9yZGVyKSk7DQoJCQkJCWVjaG8gIjxwPjxiPiIuJHRoaXMtPkxhbmcoInJlc3VsdHMiKS4iICgiLmNvdW50KCRpdGVtbGlzdCkuIikgOjwvYj48L3A+IjsNCgkJCQkJZWNobyAiPHVsPiI7DQoJCQkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKQllY2hvICI8bGk+Ii4kaXRlbS0+bmFtZS4iPC9saT4iOw0KCQkJCQllY2hvICI8L3VsPiI7DQoJCQkJfQ0KCQkJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBsYW5nKCJiYWNrIiksIGFycmF5KCJhY3RpdmVfdGFiIj0+InF1ZXJpZXMiKSkuIjwvcD4iOw0KCQkJCWJyZWFrOw0KCQkJCQkNCg0KCQkJY2FzZSAiYWRkX29wdGlvbnZhbHVlIjoNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJmaWVsZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25uYW1lIl0pICYmICRwYXJhbXNbIm9wdGlvbm5hbWUiXSAhPSAiIil7DQoJCQkJCSR0YWJsZW5hbWUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9maWVsZG9wdGlvbnMiOw0KCQkJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCQkJCSRpdGVtaWQgPSAkZGItPkdlbklEKCR0YWJsZW5hbWUuIl9zZXEiKTsNCgkJCQkJJGl0ZW1vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygiZmllbGRvcHRpb25zIiwgImlkIiwgYXJyYXkoImZpZWxkIj0+JHBhcmFtc1siZmllbGQiXSkpICsgMTsNCgkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlbmFtZS4iIFNFVCBpZD0/LCBmaWVsZD0/LCBuYW1lPT8sIGl0ZW1fb3JkZXI9PyI7DQoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1pZCwkcGFyYW1zWyJmaWVsZCJdLCRwYXJhbXNbIm9wdGlvbm5hbWUiXSwkaXRlbW9yZGVyKSk7DQoJCQkJfQ0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+ImZpZWxkb3B0aW9ucyIpICk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGVfb3B0aW9udmFsdWUiOg0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZpZWxkIl0pICYmIGlzc2V0KCRwYXJhbXNbIm9wdGlvbmlkIl0pICYmICRwYXJhbXNbIm9wdGlvbmlkIl0gPiAwKXsNCgkJCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX2ZpZWxkb3B0aW9ucyI7DQoJCQkJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgaWQ9PyBBTkQgZmllbGQ9PyBMSU1JVCAxIjsNCgkJCQkJaWYoJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJvcHRpb25pZCJdLCAkcGFyYW1zWyJmaWVsZCJdKSkpew0KCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyLTEpIFdIRVJFIGZpZWxkPT8gQU5EIGl0ZW1fb3JkZXIgPiA/IjsNCgkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbImN1cnJlbnRvcmRlciJdKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgIm1vdmVfb3B0aW9udmFsdWUiOg0KCQkJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJCQkkdGFibGVuYW1lID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfZmllbGRvcHRpb25zIjsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJmaWVsZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25pZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJtb3ZlIl0pICYmIGlzc2V0KCRwYXJhbXNbImN1cnJlbnRvcmRlciJdKSl7DQoJCQkJCWlmKCRwYXJhbXNbIm1vdmUiXSA9PSAidXAiICYmICRwYXJhbXNbImN1cnJlbnRvcmRlciJdICE9IDEpew0KCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIGZpZWxkPT8gQU5EIGl0ZW1fb3JkZXIgPSA/IExJTUlUIDE7IjsNCgkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbImN1cnJlbnRvcmRlciJdIC0xKSk7DQoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgZmllbGQ9PyBBTkQgaWQgPSA/IExJTUlUIDE7IjsNCgkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbIm9wdGlvbmlkIl0pKTsNCgkJCQkJfWVsc2VpZigkcGFyYW1zWyJtb3ZlIl0gPT0gImRvd24iKXsNCgkJCQkJCSRxdWVyeSA9ICJVUERBVEUgJHRhYmxlbmFtZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBmaWVsZD0/IEFORCBpdGVtX29yZGVyID0gPyBMSU1JVCAxOyI7DQoJCQkJCQlpZigkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyJmaWVsZCJdLCAkcGFyYW1zWyJjdXJyZW50b3JkZXIiXSArMSkpKXsNCgkJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgZmllbGQ9PyBBTkQgaWQgPSA/IExJTUlUIDE7IjsNCgkJCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyJmaWVsZCJdLCAkcGFyYW1zWyJvcHRpb25pZCJdKSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgInJlbmFtZV9vcHRpb252YWx1ZSI6DQoJCQkJaWYoIWlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25pZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJmaWVsZCJdKSAmJiBpc3NldCgkcGFyYW1zWyJvcHRpb25uYW1lIl0pICl7DQoJCQkJCWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdCJdKSAmJiAkcGFyYW1zWyJvcHRpb25uYW1lIl0gIT0gIiIgKXsNCgkJCQkJCSR0YWJsZW5hbWUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9maWVsZG9wdGlvbnMiOw0KCQkJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCBuYW1lPT8gV0hFUkUgZmllbGQ9PyBBTkQgaWQ9PyI7DQoJCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYXJhbXNbIm9wdGlvbm5hbWUiXSwgJHBhcmFtc1siZmllbGQiXSwgJHBhcmFtc1sib3B0aW9uaWQiXSkpOw0KCQkJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQkJfWVsc2V7DQoJCQkJCQllY2hvICI8aDI+Ii4kdGhpcy0+TGFuZygibW9kaWZ5YW5vcHRpb24iKS4iPC9oMj4iOw0KCQkJCQkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInJlbmFtZV9vcHRpb252YWx1ZSIsICRyZXR1cm5pZCk7DQoJCQkJCQllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJvcHRpb25uYW1lIiwkcGFyYW1zWyJvcHRpb25uYW1lIl0sNDAsNjQpLiI8L3A+IjsNCgkJCQkJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiY2FuY2VsIiwgbGFuZygiY2FuY2VsIikpLiI8L3A+IjsNCgkJCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9wdGlvbmlkIiwgJHBhcmFtc1sib3B0aW9uaWQiXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZpZWxkIiwgJHBhcmFtc1siZmllbGQiXSk7DQoJCQkJCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWZhdWx0IjoNCgkJCWRlZmF1bHQ6DQoJCQkJcGFyZW50OjpEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7DQoJCQkJYnJlYWs7DQoJCX0NCg0KDQoJfQ0KCWZ1bmN0aW9uIHBsY3JlYXRlYWxpYXMoJG5hbWUpew0KCQkvLyB0cmFuc2Zvcm1zICRuYW1lIGludG8gYSB1cmwtZnJpZW5kbHkgYWxpYXMNCgkJDQoJCS8vIGFzIGEgc3VnZ2VzdGlvbiBmcm9tIEFNVCwgdGhlIGZpcnN0IHBhcnQgZGVhbHMgd2l0aCBzbWFydCBxdW90ZXMNCiAJCSRzZWFyY2ggPSBhcnJheShjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5OCksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDk5KSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OWMpLA0KCQkJCQkJICBjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5ZCksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDkzKSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OTQpKTsNCiAJCSRuYW1lID0gc3RyX3JlcGxhY2UoJHNlYXJjaCwgIiIsICRuYW1lKTsNCgkJDQogCQkvLyB0aGUgc2Vjb25kIHBhcnQgdXNlcyB0aGUgY21zIHZlcnNpb24NCiAJCSRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJG5hbWUsIGZhbHNlKTsNCiAJCXJldHVybiAkYWxpYXM7DQoJfQ0KDQoJZnVuY3Rpb24gY2hlY2thbGlhcygkZGJ0YWJsZSwgJGFsaWFzLCAkaXRlbWlkPWZhbHNlLCAkaWRmaWVsZD0iaWQiLCAkYWxpYXNmaWVsZD0iYWxpYXMiKXsNCgkJLy8gY2hlY2tzIGlmIHRoaXMgYWxpYXMgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGxldmVsDQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4kaWRmaWVsZC4iIEZST00gIi5jbXNfZGJfcHJlZml4KCkuJGRidGFibGUuIiBXSEVSRSAiLiRhbGlhc2ZpZWxkLiIgPSA/IjsNCgkJaWYoJGl0ZW1pZCkgJHF1ZXJ5IC49ICIgQU5EICIuJGlkZmllbGQuIiE9Ii4kaXRlbWlkOw0KCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkYWxpYXMpKTsNCgkJJHRhcmdldGlkID0gMDsNCgkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpICR0YXJnZXRpZCA9ICRyb3dbImlkIl07DQoJCXJldHVybiAoJHRhcmdldGlkID09IDApOw0KCX0NCglmdW5jdGlvbiBCdWlsZFByZXR0eVVybHMoJHBhcmFtcywgJHJldHVybmlkPS0xKXsNCgkJLy8gdHJhbnNmb3JtcyBnaXZlbiBwYXJhbXMgaW50byBhIHByZXR0eSB1cmwNCgkJJHByZXR0eXVybCA9ICR0aGlzLT5HZXROYW1lKCkuIi8iOw0KCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSl7DQoJCQkkcHJldHR5dXJsIC49ICJxdWVyeS8iLiRwYXJhbXNbInF1ZXJ5Il07CQ0KCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsNCgkJCSRwcmV0dHl1cmwgLj0gImRldGFpbC8iLiRwYXJhbXNbImFsaWFzIl07DQoJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsNCgkJCSRwcmV0dHl1cmwgLj0gJHBhcmFtc1sid2hhdCJdLiIvIi4kcGFyYW1zWyJwYXJlbnQiXTsNCgkJfWVsc2V7DQoJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXTsNCgkJfQ0KCQlpZighaXNzZXQoJHBhcmFtc1siYWxpYXMiXSkgJiYgaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pICYmIGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSkJJHByZXR0eXVybCAuPSAiLyIuJHBhcmFtc1sicGFnZWluZGV4Il0uIi8iLiRwYXJhbXNbIm5icGVycGFnZSJdOw0KCQkkcHJldHR5dXJsIC49ICIvIi4kcmV0dXJuaWQ7DQoJCXJldHVybiAkcHJldHR5dXJsOw0KCX0NCglmdW5jdGlvbiBEb0NoZWNrYm94ZXMoJGlkLCAkbmFtZSwgJGNob2ljZXMsICRzZWxlY3RlZD1hcnJheSgpLCAkZGVsaW1pdGVyPSI8YnIvPiIpew0KCQkvLyBwcmV0dHkgbXVjaCBsaWtlIENyZWF0ZUlucHV0UmFkaW9Hcm91cCwgYnV0IHVzaW5nIGNoZWNrYm94ZXMNCgkJaWYoIWlzX2FycmF5KCRzZWxlY3RlZCkpCSRzZWxlY3RlZCA9IGFycmF5KCk7DQoJCSRvdXRwdXQgPSAiIjsNCgkJZm9yZWFjaCgkY2hvaWNlcyBhcyAka2V5PT4kdmFsdWUpew0KCQkJJG91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICRuYW1lLiJbXSIsICR2YWx1ZSwgKGluX2FycmF5KCR2YWx1ZSwgJHNlbGVjdGVkKT8kdmFsdWU6MCkpLiIgIi4ka2V5LiRkZWxpbWl0ZXI7DQoJCX0NCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCWZ1bmN0aW9uIHBhcnNla2V5d29yZHMoJHN0cmluZyl7DQoJCS8vIGN1dHMgdGhlIHNlYXJjaHdvcmRzIG9mIHRoZSBzZWFyY2ggZm9ybSBpbnRvIHBpZWNlcw0KCQkvLyBiYXNjaWFsbHksIHRoaXMgZXhwbG9kZXMgdGhlICRzdHJpbmcsIGJ1dCB0YWtlcyBub3RpY2Ugb2YgdGhlIHF1b3Rlcw0KCQkNCgkJJGluc2lkZSA9IChzdWJzdHIoJHN0cmluZywwLDEpID09ICciJyk7DQoJCSRwYXJ0cyA9IGV4cGxvZGUoJyInLCRzdHJpbmcpOw0KCQ0KCQlpZihjb3VudCgkcGFydHMpIDwgMil7DQoJCQlpZigkaW5zaWRlKXsNCgkJCQlyZXR1cm4gYXJyYXkoc3RyX3JlcGxhY2UoJyInLCIiLCRzdHJpbmcpKTsNCgkJCX1lbHNlew0KCQkJCXJldHVybiBleHBsb2RlKCIgIiwkc3RyaW5nKTsNCgkJCX0NCgkJfQ0KCQ0KCQkka2V5d29yZHMgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCl7DQoJCQlpZigkcGFydCAhPSAiIil7DQoJCQkJaWYoJGluc2lkZSl7DQoJCQkJCSRrZXl3b3Jkc1tdID0gJHBhcnQ7DQoJCQkJfWVsc2V7DQoJCQkJCSR3b3JkcyA9IGV4cGxvZGUoIiAiLHRyaW0oJHBhcnQpKTsNCgkJCQkJZm9yZWFjaCgkd29yZHMgYXMgJHdvcmQpew0KCQkJCQkJaWYodHJpbSgkd29yZCkgIT0gIiIpCSRrZXl3b3Jkc1tdID0gJHdvcmQ7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJGluc2lkZSA9ICEkaW5zaWRlOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAka2V5d29yZHM7DQoJfQ0KDQoNCglmdW5jdGlvbiBmZWFkZF9wZXJtY2hlY2soJHdoYXQsICRpdGVtaWQsICRhbGlhcyl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJJHJldHVybiA9IHRydWU7DQoJCXJlcXVpcmUgImZ1bmN0aW9uLmZlYWRkX3Blcm1jaGVjay5waHAiOw0KCQlyZXR1cm4gJHJldHVybjsNCgl9DQoNCglmdW5jdGlvbiBnZXRfbGV2ZWxhcnJheSgpew0KCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBsZXZlbHMgKHRvcCB0byBib3R0b20pDQoJCXJldHVybiBhcnJheSgicGxheWVyIiwibWVkaWFmaWxlIik7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X21vZHVsZWhpZXJhcmNoeSgkbGV2ZWw9ZmFsc2Upew0KCQkkaGllcmFyY2h5ID0gYXJyYXkoKTsNCgkJCSRoaWVyYXJjaHlbMV0gPSAicGxheWVyIjsNCgkJCSRoaWVyYXJjaHlbMl0gPSAibWVkaWFmaWxlIjsNCgkJcmV0dXJuICRoaWVyYXJjaHk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldF9sZXZlbHNlYXJjaGZpZWxkcygkbGV2ZWwpew0KCQkvLyByZXR1cm5zIHRoZSBmaWVsZCBvZiBhIGxldmVsIHdoaWNoIGFyZSBzZWFyY2hhYmxlIChmb3IgdGhlIHNpbXBsZSBzZWFyY2ggYWN0aW9uKQ0KCQkkZmllbGRzID0gYXJyYXkoKTsNCgkJc3dpdGNoKCRsZXZlbCl7DQoJCQljYXNlICJwbGF5ZXIiOg0KCQkJCSRmaWVsZHMgPSBhcnJheSgibG9jYXRpb24iLCJ3aWR0aCIsImhlaWdodCIsInBhcmFtZXRlcnMiLCJuYW1lIik7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJtZWRpYWZpbGUiOg0KCQkJCSRmaWVsZHMgPSBhcnJheSgibmFtZSIpOw0KCQkJCWJyZWFrOw0KCQkJCQkJDQoJCX0NCgkJcmV0dXJuICRmaWVsZHM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9oaWVyYXJjaHlvcHRpb25zKCRlbmQ9ZmFsc2UsICR3aXRoZW1wdHlyb3c9dHJ1ZSwgJGRlcHRoc3ltYm9sPSImbmJzcDstJm5ic3A7Iil7DQoJCS8vIHJldHVybnMgYW4gYXJyYXkgb2YgcGFyZW50IG9wdGlvbnMgZm9yIGEgbGlua2VkIHRvIGEgc2VsZWN0ZWQgbGV2ZWwNCgkJLy8gdXNlZCBmb3IgdGhlIGhpZXJhcmNoeSBkcm9wZG93biBsaXN0IGluIHNlYXJjaCBhY3Rpb24NCgkJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJIGlmKCFpbl9hcnJheSgkZW5kLCAkbGV2ZWxhcnJheSkpCSRlbmQgPSAkbGV2ZWxhcnJheVtjb3VudCgkbGV2ZWxhcnJheSktMV07DQoJCQ0KCQkvLyBidWlsZGluZyB0aGUgam9pbmVkIHF1ZXJ5DQoJCSR0YWJsZXMgPSAiIjsNCgkJJGZpZWxkcyA9ICIiOw0KCQkkb3JkZXJieSA9ICIiOw0KCQkkd2hlcmUgPSAiIjsNCgkJJGZpbmlzaGVkID0gZmFsc2U7DQoJCSRpID0gMTsNCgkJZm9yZWFjaCgkbGV2ZWxhcnJheSBhcyAkbGV2ZWwpew0KCQkJaWYoJGxldmVsID09ICRlbmQpCSRmaW5pc2hlZCA9IHRydWU7DQoJCQlpZighJGZpbmlzaGVkKXsNCgkJCQkkdGFibGVzIC49ICgkdGFibGVzID09ICIiPyIiOiIsICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJGxldmVsLiIgdCIuJGkuIiAiOw0KCQkJCSRmaWVsZHMgLj0gKCRmaWVsZHMgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIuaWQgaWQiLiRpLiIsIHQiLiRpLiIubmFtZSBuYW1lIi4kaTsNCgkJCQkkb3JkZXJieSAuPSAoJG9yZGVyYnkgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIuaXRlbV9vcmRlciBERVNDIjsNCgkJCQlpZigkaSA+IDEpICR3aGVyZSAuPSAiIEFORCB0Ii4oJGktMSkuIi5pZCA9IHQiLiRpLiIucGFyZW50ICI7DQoJCQkJJHdoZXJlIC49ICgkd2hlcmUgPT0gIiI/IiI6IiBBTkQgIikuIiB0Ii4kaS4iLmFjdGl2ZT0xIjsNCgkJCQkkaSsrOw0KCQkJfQ0KCQl9DQoJCWlmKCRmaWVsZHMgPT0gIiIpCXJldHVybiBmYWxzZTsNCgkJDQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLiRmaWVsZHMuIiBGUk9NICIuJHRhYmxlcy4iIFdIRVJFICIuJHdoZXJlLiIgT1JERVIgQlkgIi4kb3JkZXJieTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCgkJLy8gcGFyc2luZyByZXN1bHRzDQoJCSRjdXJyZW50ID0gYXJyYXkoKTsNCgkJJHRtcGxhc3RsZXZlbCA9IGFycmF5KCk7DQoJCSRyZXN1bHRzID0gYXJyYXkoKTsNCgkJJGZpbmFsID0gJGkgLTE7DQoJCXdoaWxlKCRqIDwgJGZpbmFsICl7DQoJCQkkY3VycmVudFskal0gPSBhcnJheSgiaWQiPT5mYWxzZSwibmFtZSI9PiIiKTsNCgkJCSRqKys7DQoJCX0NCgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJLy8gZWFjaCByb3cgaGFzIGEgZnVsbCBoaWVyYXJjaHksIGZyb20gdG9wIHBhcmVudCB0byBmaW5hbCBjaGlsZA0KCQkJJGogPSAkZmluYWw7DQoJCQl3aGlsZSgkaiA+IDAgKXsNCgkJCQlpZigkcm93WyJpZCIuJGpdICE9ICRjdXJyZW50WyRqXVsiaWQiXSl7DQoJCQkJCWlmKCRjdXJyZW50WyRqXVsiaWQiXSAmJiBjb3VudCgkY3VycmVudFskal1bInJlcyJdKSA+IDApew0KCQkJCQkJJGtleSA9IHN0cl9yZXBlYXQoJGRlcHRoc3ltYm9sLCAoJGogLTEpKS4kY3VycmVudFskal1bIm5hbWUiXTsNCgkJCQkJCSRyZXN1bHRzWyRrZXldID0gaW1wbG9kZSgiLCIsJGN1cnJlbnRbJGpdWyJyZXMiXSk7DQoJCQkJCX0NCgkJCQkJJGN1cnJlbnRbJGpdID0gYXJyYXkoImlkIj0+JHJvd1siaWQiLiRqXSwgIm5hbWUiPT4kcm93WyJuYW1lIi4kal0sICJyZXMiPT5hcnJheSgpKTsNCgkJCQl9DQoJCQkJJGN1cnJlbnRbJGpdWyJyZXMiXVtdID0gJHJvd1siaWQiLiRmaW5hbF07DQoJCQkJJGotLTsNCgkJCX0NCgkJCSRyZXN1bHRzW3N0cl9yZXBlYXQoJGRlcHRoc3ltYm9sLCAoJGZpbmFsIC0xKSkuJHJvd1sibmFtZSIuJGZpbmFsXV0gPSAkcm93WyJpZCIuJGZpbmFsXTsNCgkJfQ0KCQkvLyB3ZSBjbG9zZSB0aGUgcmVtYWluaW5nIHNldHMNCgkJJGogPSAkZmluYWwgLTE7DQoJCXdoaWxlKCRqID4gMCApew0KCQkJJGtleSA9IHN0cl9yZXBlYXQoJGRlcHRoc3ltYm9sLCAoJGogLTEpKS4kY3VycmVudFskal1bIm5hbWUiXTsNCgkJCSRyZXN1bHRzWyRrZXldID0gaW1wbG9kZSgiLCIsJGN1cnJlbnRbJGpdWyJyZXMiXSk7DQoJCQkkai0tOw0KCQl9DQoJCWlmKCR3aXRoZW1wdHlyb3cpCSRyZXN1bHRzWyIiXSA9ICIiOw0KCQlyZXR1cm4gYXJyYXlfcmV2ZXJzZSgkcmVzdWx0cyk7DQoJfQ0KCWZ1bmN0aW9uIGdldF9hZG1pbl9oaWVyYXJjaHlvcHRpb25zKCRlbmQ9ZmFsc2UsICR3aXRoZW1wdHlyb3c9dHJ1ZSwgJHNlcGFyYXRvcj0iICZndDsgIiwgJG9yZGVyYnluYW1lPWZhbHNlKXsNCgkJLy8gcmV0dXJucyBhbiBhcnJheSBvZiBwYXJlbnQgb3B0aW9ucyBsaW5rZWQgdG8gYSBzZWxlY3RlZCBsZXZlbA0KCQkvLyB1c2VkIGZvciB0aGUgcGFyZW50IGFuZCBmaWx0ZXIgZHJvcGRvd24gaW4gdGhlIGFkbWluDQoJCS8vIHNob3dzIGVtcHR5IHBhcmVudHMgdG9vDQoJCSRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCWlmKCFpbl9hcnJheSgkZW5kLCAkbGV2ZWxhcnJheSkpCSRlbmQgPSAiaXRlbSI7DQoJCQ0KCQkvLyBidWlsZGluZyB0aGUgam9pbmVkIHF1ZXJ5DQoJCSR0YWJsZXMgPSAiIjsNCgkJJGZpZWxkcyA9ICIiOw0KCQkkb3JkZXJieSA9ICIiOw0KCQkkZmluaXNoZWQgPSBmYWxzZTsNCgkJJGkgPSAxOw0KCQlmb3JlYWNoKCRsZXZlbGFycmF5IGFzICRsZXZlbCl7DQoJCQlpZigkbGV2ZWwgPT0gJGVuZCkJJGZpbmlzaGVkID0gdHJ1ZTsNCgkJCWlmKCEkZmluaXNoZWQpew0KCQkJCSR0YWJsZXMgLj0gKCRpPT0xPyIiOiIgTEVGVCBKT0lOICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJGxldmVsLiIgdCIuJGkuIiAiOw0KCQkJCWlmKCRpPjEpCSR0YWJsZXMgLj0gIk9OIHQiLigkaS0xKS4iLmlkID0gdCIuJGkuIi5wYXJlbnQgIjsNCgkJCQkkZmllbGRzIC49ICgkZmllbGRzID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLmlkIGlkIi4kaS4iLCB0Ii4kaS4iLm5hbWUgbmFtZSIuJGk7DQoJCQkJaWYoJG9yZGVyYnluYW1lKXsNCgkJCQkJJG9yZGVyYnkgLj0gKCRvcmRlcmJ5ID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLm5hbWUiOw0KCQkJCX1lbHNlew0KCQkJCQkkb3JkZXJieSAuPSAoJG9yZGVyYnkgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIuaXRlbV9vcmRlciwgdCIuJGkuIi5uYW1lIjsNCgkJCQl9DQoJCQkJJGkrKzsNCgkJCX0NCgkJfQ0KCQlpZigkZmllbGRzID09ICIiKQlyZXR1cm4gYXJyYXkoKTsNCgkJDQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLiRmaWVsZHMuIiBGUk9NICIuJHRhYmxlcy4iIE9SREVSIEJZICIuJG9yZGVyYnk7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCQkkb3B0aW9ucyA9IGFycmF5KCk7DQoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCS8vIGVhY2ggcm93IGhhcyBhIGZ1bGwgaGllcmFyY2h5LCBmcm9tIHRvcCBwYXJlbnQgdG8gZmluYWwgY2hpbGQNCgkJCSR2YWx1ZSA9ICRyb3dbImlkIi4oJGktMSldOw0KCQkJJGogPSAxOw0KCQkJJG9wdGlvbl9uYW1lID0gIiI7DQoJCQl3aGlsZSgkaiA8ICRpKXsNCgkJCQkkb3B0aW9uX25hbWUgLj0gKCRqPT0xPyIiOiRzZXBhcmF0b3IpLiRyb3dbIm5hbWUiLiRqXTsNCgkJCQkkaisrOw0KCQkJfQ0KCQkJJG9wdGlvbnNbJG9wdGlvbl9uYW1lXSA9ICR2YWx1ZTsNCgkJfQ0KCQlpZigkd2l0aGVtcHR5cm93KQkkb3B0aW9uc1siIl0gPSAiIjsNCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCglmdW5jdGlvbiBnZXRfbW9kdWxlR2V0VmFycygpew0KCQkvLyB1bm9ydGhvZG94IGhhY2sgc28gdGhhdCBkaWZmZXJlbnQgY2FsbHMgb2YgdGhlIG1vZHVsZSBzcGVhayB3aXRoIGVhY2ggb3RoZXINCgkJLy8gYmFzaWNhbGx5LCB3ZSByZXRyaWV2ZSBwYXJhbWV0ZXJzIGluIHRoZSB1cmwgdGhhdCB3ZXJlIG1lYW50IGZvciBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIG1vZHVsZQ0KCQkvLyBzZWUgRkFRIGZvciBtb3JlIGluZm8gb24gdGhpcw0KCQlnbG9iYWwgJF9HRVQ7DQoJCWdsb2JhbCAkZ0NtczsNCgkJJHJlZGlyZWN0aW9uID0gZmFsc2U7DQoJCWlmKGlzc2V0KCRnQ21zLT5jb25maWdbInVybF9yZXdyaXRpbmciXSkpew0KCQkJLy8gY29yZSAxLjYgb3IgbW9yZQ0KCQkJJHJlZGlyZWN0aW9uID0gJGdDbXMtPmNvbmZpZ1sidXJsX3Jld3JpdGluZyJdOw0KCQl9ZWxzZXsNCgkJCS8vIGNvcmUgYmVsb3cgMS42DQoJCQlpZigkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7DQoJCQkJJHJlZGlyZWN0aW9uID0gIm1vZF9yZXdyaXRlIjsNCgkJCX1lbHNlaWYoISRnQ21zLT5jb25maWdbImFzc3VtZV9tb2RfcmV3cml0ZSJdICYmICRnQ21zLT5jb25maWdbImludGVybmFsX3ByZXR0eV91cmxzIl0gJiYgaXNzZXQoJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pKXsNCgkJCQkkcmVkaXJlY3Rpb24gPSAiaW50ZXJuYWwiOw0KCQkJfQ0KCQl9DQoJCSRwYXJhbXMgPSBhcnJheSgpOw0KCQkkZ2xvYmFsbW9kdWxldmFycyA9IGFycmF5KCk7DQoJCWlmKGlzc2V0KCRfR0VUWyJtYWN0Il0pKXsNCgkJCS8vIGlmIHdlIGFyZW4ndCB1c2luZyBwcmV0dHkgdXJscy4uLg0KCQkJJG1vZGluZm8gPSBleHBsb2RlKCIsIiwkX0dFVFsibWFjdCJdKTsNCgkJCWlmKGlzc2V0KCRtb2RpbmZvKSAmJiAkbW9kaW5mb1swXSA9PSAkdGhpcy0+R2V0TmFtZSgpKXsNCgkJCQlpZihpc3NldCgkX0dFVFskbW9kaW5mb1sxXS4icGFyZW50Il0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFyZW50Il09JF9HRVRbJG1vZGluZm9bMV0uInBhcmVudCJdOw0KCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sid2hhdCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il07DQoJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uImFsaWFzIl0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXT0kX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXTsNCgkJCQlpZihpc3NldCgkX0dFVFskbW9kaW5mb1sxXS4icGFnZWluZGV4Il0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFnZWluZGV4Il09JF9HRVRbJG1vZGluZm9bMV0uInBhZ2VpbmRleCJdOw0KCQkJfQ0KCQl9ZWxzZWlmKCRyZWRpcmVjdGlvbiA9PSAibW9kX3Jld3JpdGUiIHx8ICRyZWRpcmVjdGlvbiA9PSAiaW50ZXJuYWwiKXsNCgkJCSRwYXJhbXMgPSBhcnJheSgpOw0KCQkJaWYoJHJlZGlyZWN0aW9uID09ICJtb2RfcmV3cml0ZSIgJiYgaXNzZXQoJF9HRVRbInBhZ2UiXSkpew0KCQkJCS8vIGlmIHdlIGFyZSB1c2luZyBhbiBleHRlcm5hbCBtb2RfcmV3cml0ZSwgYXNzdW1pbmcgeW91IGFyZSB1c2luZyB0aGUgdmVyeQ0KCQkJCS8vIGJhc2ljIHJld3JpdGUgd2hpY2ggcHV0cyB0aGUgbW9kdWxlIGluZm9ybWF0aW9ucyBpbnNpZGUgdGhlIHBhZ2UgdmFyaWFibGUNCgkJCQkkcGFydHMgPSBleHBsb2RlKCIvIiwkX0dFVFsicGFnZSJdKTsNCgkJCQlmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCl7DQoJCQkJCWlmKCRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsNCgkJCQl9DQoJCQl9ZWxzZWlmKCRyZWRpcmVjdGlvbiA9PSAiaW50ZXJuYWwiKXsNCgkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgdGhlIGludGVybmFsIHByZXR0eSB1cmxzDQoJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pOw0KCQkJCSRzdGFydGVkID0gZmFsc2U7DQoJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpew0KCQkJCQlpZigkc3RhcnRlZCAmJiAkcGFydCAhPSAiIikJJHBhcmFtc1tdID0gJHBhcnQ7DQoJCQkJCWlmKHN0cnRvbG93ZXIoJHBhcnQpID09ICJpbmRleC5waHAiKQkkc3RhcnRlZCA9IHRydWU7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoaXNzZXQoJHBhcmFtc1swXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzBdKSA9PSBzdHJ0b2xvd2VyKCR0aGlzLT5HZXROYW1lKCkpKXsNCgkJCQkgLy8gd2UgYXJlIGluIGEgbW9kdWxlIGFjdGlvbg0KCQkJCSAvLyB0aGlzIHBhcnQgc2hvdWxkIGJlIGNoYW5nZWQgaWYgeW91IGNoYW5nZSB0aGUgcHJldHR5IHVybHMgc3RydWN0dXJlDQoJCQkJaWYoIWlzc2V0KCRwYXJhbXNbMV0pIHx8IHN0cnRvbG93ZXIoJHBhcmFtc1sxXSkgPT0gInF1ZXJ5Iil7DQoNCgkJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbMV0pICYmIHN0cnRvbG93ZXIoJHBhcmFtc1sxXSkgPT0gImRldGFpbCIpew0KCQkJCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il0gPSAkbGV2ZWxzW2NvdW50KCRsZXZlbHMpLTFdOw0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXSA9ICRwYXJhbXNbMl07DQoJCQkJfWVsc2V7DQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il0gPSAkcGFyYW1zWzFdOw0KCQkJCQlzd2l0Y2goY291bnQoJHBhcmFtcykpew0KCQkJCQkJY2FzZSA2Og0KCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYWdlaW5kZXgiXSA9ICRwYXJhbXNbM107DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIm5icGVycGFnZSJdID0gJHBhcmFtc1s0XTsNCgkJCQkJCWNhc2UgNDoNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFyZW50Il0gPSAkcGFyYW1zWzJdOw0KCQkJCQkJCWJyZWFrOw0KCQkJCQkJY2FzZSA1Og0KCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYWdlaW5kZXgiXSA9ICRwYXJhbXNbMl07DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIm5icGVycGFnZSJdID0gJHBhcmFtc1szXTsNCgkJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJGdsb2JhbG1vZHVsZXZhcnM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9vYmp0cmVlKCRjdXJpZCwgJGN1cmxldmVsPWZhbHNlLCAkZmllbGQ9ImlkIil7DQoJCS8vIHRoaXMgYnVpbGRzIGFuIG9iamVjdCB0cmVlICgkaXRlbS0+cGFyZW50X29iamVjdC0+cGFyZW50X29iamVjdC4uLikNCgkJLy8gd2UgZmlyc3QgcHV0IGFsbCB0aGUgcGFyZW50cyBpbiBhbiBhcnJheQ0KCQkkcGFyZW50cyA9IGFycmF5KCk7DQoJCSRsZXZlbHMgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJaWYoISRjdXJsZXZlbCkJJGN1cmxldmVsID0gJGxldmVsc1tjb3VudCgkbGV2ZWxzKS0xXTsNCgkJJGkgPSBjb3VudCgkbGV2ZWxzKTsNCgkJJHN0YXJ0ZWQgPSBmYWxzZTsNCgkJd2hpbGUoJGN1cmlkICYmICRpID4gMCl7DQoJCQlpZigkbGV2ZWxzWyRpIC0xXSA9PSAkY3VybGV2ZWwpCSRzdGFydGVkID0gdHJ1ZTsNCgkJCWlmKCRzdGFydGVkKXsNCgkJCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJGxldmVsc1skaSAtMV07DQoJCQkJJGl0ZW0gPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCRmaWVsZD0+JGN1cmlkKSk7DQoJCQkJJGl0ZW0gPSBpc19hcnJheSgkaXRlbSk/JGl0ZW1bMF06JGl0ZW07DQoJCQkJJGl0ZW0tPl9fd2hhdCA9ICRsZXZlbHNbJGktMV07DQoJCQkJJHBhcmVudHNbXSA9ICRpdGVtOw0KCQkJCSRmaWVsZCA9ICJpZCI7DQoJCQkJJGN1cmlkID0gaXNzZXQoJGl0ZW0tPnBhcmVudF9pZCk/JGl0ZW0tPnBhcmVudF9pZDpmYWxzZTsNCgkJCX0NCgkJCSRpLS07DQoJCX0NCgkJDQoJCS8vIG5leHQsIHdlIHByb2Nlc3MgdGhlIGFycmF5IG9mIHBhcmVudHMgdG8gYnVpbGQgdGhlIHBhcmVudCB0cmVlDQoJCSRwYXJlbnR0cmVlID0gZmFsc2U7DQoJCSRpID0gY291bnQoJHBhcmVudHMpIC0gMTsNCgkJd2hpbGUoJGkgPj0gMCl7DQoJCQlpZigkcGFyZW50dHJlZSl7DQoJCQkJJG5ld3RyZWUgPSAkcGFyZW50c1skaV07DQoJCQkJJG5ld3RyZWUtPnBhcmVudF9vYmplY3QgPSAkcGFyZW50dHJlZTsNCgkJCQkkcGFyZW50dHJlZSA9ICRuZXd0cmVlOw0KCQkJfWVsc2V7DQoJCQkJJHBhcmVudHRyZWUgPSAkcGFyZW50c1skaV07DQoJCQl9DQoJCQkkaS0tOw0KCQl9DQoJCSR0aGlzLT5jdXJyZW50dHJlZSA9ICRwYXJlbnR0cmVlOw0KCQlyZXR1cm4gJHBhcmVudHRyZWU7DQoJfQ0KCWZ1bmN0aW9uIGJ1aWxkR2xvYmFsVHJlZSgpew0KCQkvLyB0aGlzIHNhdmVzIHRoZSBjdXJyZW50IHRyZWUgaW4gdGhlIG1vZHVsZS4uLg0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCSRnbG9iID0gJHRoaXMtPmdldF9tb2R1bGVHZXRWYXJzKCk7DQoJCWlmKGlzc2V0KCRnbG9iWyJwYWdlaW5kZXgiXSkpCSR0aGlzLT5jdXJyZW50cGFnZWluZGV4ID0gJGdsb2JbInBhZ2VpbmRleCJdOw0KCQlpZihpc3NldCgkZ2xvYlsiYWxpYXMiXSkpew0KCQkJJHRyZWUgPSAkdGhpcy0+Z2V0X29ianRyZWUoJGdsb2JbImFsaWFzIl0sICRsZXZlbHNbY291bnQoJGxldmVscyktMV0sICJhbGlhcyIpOw0KCQl9ZWxzZWlmKGlzc2V0KCRnbG9iWyJwYXJlbnQiXSkgJiYgaXNzZXQoJGdsb2JbIndoYXQiXSkpew0KCQkJJHRyZWUgPSAkdGhpcy0+Z2V0X29ianRyZWUoJGdsb2JbInBhcmVudCJdLCAkdGhpcy0+Z2V0X25leHRsZXZlbCgkZ2xvYlsid2hhdCJdLGZhbHNlKSwgImFsaWFzIik7DQoJCX0NCgkJDQoJCWlmKGlzc2V0KCR0cmVlKSAmJiAkdHJlZSl7DQoJCQkkdGhpcy0+Y3VycmVudHRyZWUgPSAkdHJlZTsNCgkJCS8vIHRoaXMgc2F2ZXMgdGhlIHNlbGVjdGVkIGl0ZW0gZm9yIGVhY2ggbGV2ZWwNCgkJCSR0aGlzLT5wbGN1cnJlbnRbJHRyZWUtPl9fd2hhdF0gPSAkdHJlZS0+YWxpYXM7DQoJCQl3aGlsZShpc3NldCgkdHJlZS0+cGFyZW50X29iamVjdCkpew0KCQkJCSR0cmVlID0gJHRyZWUtPnBhcmVudF9vYmplY3Q7DQoJCQkJJHRoaXMtPnBsY3VycmVudFskdHJlZS0+X193aGF0XSA9ICR0cmVlLT5hbGlhczsNCgkJCX0NCgkJfQ0KCX0NCglmdW5jdGlvbiBmdW5jdGlvbl9tb2RicmVhZGNydW1icygkcGFyYW1zLCAmJHNtYXJ0eSl7DQoJCS8vIHJlZ2lzdGVyZWQgc21hcnR5IGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIGJyZWFkY3J1bWJzDQoJCS8vIHVzZXMgc2ltaWxhciBwYXJhbWV0ZXJzIHRvIHRoZSBjb3JlIGJyZWFkY3J1bWJzIGZ1bmN0aW9uDQoJCWlmKCEkdGhpcy0+Y3VycmVudHRyZWUpCQkkdGhpcy0+YnVpbGRHbG9iYWxUcmVlKCk7DQoJCQ0KCQlpZigkdGhpcy0+Y3VycmVudHRyZWUpew0KCQkJZ2xvYmFsICRnQ21zOw0KCQkJJHJldHVybmlkID0gJGdDbXMtPnZhcmlhYmxlc1siY29udGVudF9pZCJdOw0KCQkJLy8gd2UgY3JlYXRlIHRoZSBicmVhZGNydW1icw0KCQkJJGNsYXNzaWQgPSBpc3NldCgkcGFyYW1zWyJjbGFzc2lkIl0pPyIgY2xhc3M9XCIiLiRwYXJhbXNbImNsYXNzaWQiXS4iXCIiOiIiOw0KCQkJJGN1cnJlbnRjbGFzc2lkID0gaXNzZXQoJHBhcmFtc1siY3VycmVudGNsYXNzaWQiXSk/IiBjbGFzcz1cIiIuJHBhcmFtc1siY3VycmVudGNsYXNzaWQiXS4iXCIiOiIgY2xhc3M9XCJsYXN0aXRlbVwiIjsNCgkJCSRzdGFydGxldmVsID0gaXNzZXQoJHBhcmFtc1sic3RhcnRsZXZlbCJdKT8kdGhpcy0+Z2V0X25leHRsZXZlbCgkcGFyYW1zWyJzdGFydGxldmVsIl0sIGZhbHNlKTpmYWxzZTsNCgkJCSRkZWxpbWl0ZXIgPSBpc3NldCgkcGFyYW1zWyJkZWxpbWl0ZXIiXSk/JHBhcmFtc1siZGVsaW1pdGVyIl06JHRoaXMtPkxhbmcoImJyZWFkY3J1bWJzX2RlbGltaXRlciIpOw0KCQkJJGluaXRpYWwgPSBpc3NldCgkcGFyYW1zWyJpbml0aWFsIl0pPyRwYXJhbXNbImluaXRpYWwiXTokdGhpcy0+TGFuZygieW91YXJlaGVyZSIpOw0KDQoJCQkkb3V0cHV0ID0gIiI7DQoJCQkkY3VycmVudCA9ICR0aGlzLT5jdXJyZW50dHJlZTsNCgkJCSRnb2luZ29uID0gZmFsc2U7DQoJCQl3aGlsZShpc3NldCgkY3VycmVudC0+cGFyZW50X29iamVjdCkpew0KCQkJCSRjdXJyZW50ID0gJGN1cnJlbnQtPnBhcmVudF9vYmplY3Q7DQoJCQkJaWYoJGN1cnJlbnQtPl9fd2hhdCA9PSAkc3RhcnRsZXZlbCkJJGVuZGVkID0gdHJ1ZTsNCgkJCQlpZighJGVuZGVkKXsNCgkJCQkJJHBhcmFtcyA9IGFycmF5KCJ3aGF0Ij0+JHRoaXMtPmdldF9uZXh0bGV2ZWwoJGN1cnJlbnQtPl9fd2hhdCksICJwYXJlbnQiPT4kY3VycmVudC0+YWxpYXMpOw0KCQkJCQkkcHJldHR5dXJsID0gJHRoaXMtPkJ1aWxkUHJldHR5VXJscygkcGFyYW1zLCAkcmV0dXJuaWQpOw0KCQkJCQkkb3V0cHV0ID0gIjxzcGFuIi4kY2xhc3NpZC4iPiIuJHRoaXMtPkNyZWF0ZUxpbmsoIiIsICJkZWZhdWx0IiwgJHJldHVybmlkLCAkY3VycmVudC0+bmFtZSwgJHBhcmFtcywgIiIsIGZhbHNlLCBmYWxzZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKS4iPC9zcGFuPiIuJGRlbGltaXRlci4kb3V0cHV0Ow0KCQkJCX0NCgkJCX0NCgkJCWlmKCRvdXRwdXQgIT0gIiIpICRvdXRwdXQgPSAkaW5pdGlhbC4kb3V0cHV0LiI8c3BhbiIuJGN1cnJlbnRjbGFzc2lkLiI+Ii4kdGhpcy0+Y3VycmVudHRyZWUtPm5hbWUuIjwvc3Bhbj4iOw0KCQkJDQoJCQlpZihpc3NldCgkcGFyYW1zWyJhc3NpZ24iXSkgJiYgJHBhcmFtc1siYXNzaWduIl0gIT0gIiIpew0KCQkJCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJhc3NpZ24iXSwgJG91dHB1dCk7DQoJCQl9ZWxzZXsNCgkJCQllY2hvICRvdXRwdXQ7DQoJCQl9DQoJCX0NCgl9DQoJZnVuY3Rpb24gZnVuY3Rpb25fZ2V0X2xldmVsaXRlbSgkcGFyYW1zLCAmJHNtYXJ0eSl7DQoJCS8vIHJlZ2lzdGVyZWQgc21hcnR5IGZ1bmN0aW9uIHRoYXQgcmV0cmlldmVzIGEgZ2l2ZW4gaXRlbSAoYWxpYXMpIG9mIGEgZ2l2ZW4gbGV2ZWwgKHdoYXQpDQoJCWlmKAkhaXNzZXQoJHBhcmFtc1siYXNzaWduIl0pIHx8ICRwYXJhbXNbImFzc2lnbiJdID09ICIiIHx8ICFpc3NldCgkcGFyYW1zWyJ3aGF0Il0pIHx8ICFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSApCXJldHVybiBmYWxzZTsNCgkJaWYoIWluX2FycmF5KCRwYXJhbXNbIndoYXQiXSwgJHRoaXMtPmdldF9sZXZlbGFycmF5KCkpKQlyZXR1cm4gZmFsc2U7DQoJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kcGFyYW1zWyJ3aGF0Il07DQoJCSRyZXN1bHRzID0gJHRoaXMtPiRnZXRmdW5jdGlvbihhcnJheSgiYWxpYXMiPT4kcGFyYW1zWyJhbGlhcyJdKSk7DQoJCSRpdGVtID0gaXNzZXQoJHJlc3VsdHNbMF0pPyRyZXN1bHRzWzBdOmZhbHNlOw0KCQkkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1siYXNzaWduIl0sICRpdGVtKTsNCgl9DQoJZnVuY3Rpb24gY291bnRzb21ldGhpbmcoJHRhYmxlbmFtZSwkd2hhdD0iaWQiLCR3aGVyZT1hcnJheSgpLCR3aGVyZXN0cmluZz1mYWxzZSwkd2hlcmV2YWx1ZXM9YXJyYXkoKSwkcGFyZW50PWZhbHNlKXsNCgkJLy8gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdGFibGUgY29ycmVzcG9uZGluZyB0byBjcml0ZXJpYXMNCgkJaWYoISRwYXJlbnQgJiYgaXNzZXQoJHdoZXJlWyJwYXJlbnQiXSkpCXVuc2V0KCR3aGVyZVsicGFyZW50Il0pOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCWlmKCR3aGVyZXN0cmluZyl7DQoJCQkkd2hlcmVzdHJpbmcgPSAiIFdIRVJFICIuJHdoZXJlc3RyaW5nOw0KCQl9ZWxzZXsNCgkJCSR3aGVyZXN0cmluZyA9ICIiOw0KCQkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJCWZvcmVhY2goJHdoZXJlIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJaWYoJGtleSA9PSAicGFyZW50Iil7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIgV0hFUkUgIjoiIEFORCAiKS4iQS5wYXJlbnQ9Qi5pZCBBTkQgQi5hbGlhcz0/IjsNCgkJCQl9ZWxzZXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiBXSEVSRSAiOiIgQU5EICIpLiJBLiIuJGtleS4iPT8iOw0KCQkJCX0NCgkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCX0NCgkJfQ0KCQkkcXVlcnkgPSAiU0VMRUNUIENPVU5UKEEuJHdoYXQpIG91cmNvdW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl8iLiR0YWJsZW5hbWUuIiBBIjsNCgkJaWYoJHBhcmVudCAmJiBpc3NldCgkd2hhdFsicGFyZW50Il0pKQkkcXVlcnkgLj0gIiwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl8iLiRwYXJlbnQuIiBCIjsNCgkJJHF1ZXJ5IC49ICR3aGVyZXN0cmluZzsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQlpZiAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJcmV0dXJuICRyb3dbIm91cmNvdW50Il07DQoJCX1lbHNlew0KCQkJcmV0dXJuIDA7DQoJCX0NCgl9DQoJDQoJDQoJZnVuY3Rpb24gYWRtaW5fcGFnaW5hdGUoJGxldmVsLCRuYnBlcnBhZ2UsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKXsNCgkJLy8gc2FtZSBhcyBwYWdpbmF0ZSwgYnV0IGZvciB0aGUgYWRtaW4gcGFuZWxzDQoJCSR3aGVyZWNsYXVzZSA9IGFycmF5KCk7DQoJCWlmKGlzc2V0KCRwYXJhbXNbJGxldmVsLiJfc2hvd29ubHkiXSkgJiYgJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdICE9ICIiKQkkd2hlcmVjbGF1c2VbInBhcmVudCJdID0gJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdOw0KCQkkdG90YWwgPSAkdGhpcy0+Y291bnRzb21ldGhpbmcoJGxldmVsLCJpZCIsJHdoZXJlY2xhdXNlKTsNCgkJJG5leHRwYWdlID0gZmFsc2U7DQoJCSRwcmV2aW91c3BhZ2UgPSBmYWxzZTsNCgkJJHBhZ2VpbmZvID0gZmFsc2U7DQoJCSRwYWdlcyA9IGZhbHNlOw0KCQlpZigkbmJwZXJwYWdlID4gMCAmJiAkdG90YWwgPiAkbmJwZXJwYWdlKXsNCgkJCSRjdXJwYWdlID0gaXNzZXQoJHBhcmFtc1skbGV2ZWwuIl9wYWdlIl0pPyRwYXJhbXNbJGxldmVsLiJfcGFnZSJdOjA7DQoJCQkkbmJwYWdlcyA9IGNlaWwoJHRvdGFsLyRuYnBlcnBhZ2UpOw0KCQkJJHBhZ2VpbmZvID0gKCgkY3VycGFnZSAqICRuYnBlcnBhZ2UpICsgMSk7DQoJCQkkdG1wZW5kID0gJHBhZ2VpbmZvICsgJG5icGVycGFnZSAtIDE7DQoJCQlpZigkdG1wZW5kID4gJHRvdGFsKQkkdG1wZW5kID0gJHRvdGFsOw0KCQkJaWYoJHRtcGVuZCAhPSAkcGFnZWluZm8pCSRwYWdlaW5mbyAuPSAiLSIuJHRtcGVuZDsNCgkJCSRwYWdlaW5mbyAuPSAiIC8gIi4kdG90YWw7DQoJCQkkcGFnZXBhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIj0+JGxldmVsKTsNCgkJCWlmKGlzc2V0KCRwYXJhbXNbJGxldmVsLiJfc2hvd29ubHkiXSkgJiYgJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdICE9ICIiKXsNCgkJCQkkcGFnZXBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdID0gJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdOw0KCQkJfQ0KCQkJaWYoJGN1cnBhZ2UgPiAwKXsNCgkJCQkkcGFnZXBhcmFtc1skbGV2ZWwuIl9wYWdlIl0gPSAkY3VycGFnZSAtIDE7DQoJCQkJJHByZXZpb3VzcGFnZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoInByZXZpb3VzcGFnZSIpLCAkcGFnZXBhcmFtcyk7DQoJCQl9DQoJCQlpZigkY3VycGFnZSA8ICgkbmJwYWdlcy0xKSl7DQoJCQkJJHBhZ2VwYXJhbXNbJGxldmVsLiJfcGFnZSJdID0gJGN1cnBhZ2UgKyAxOw0KCQkJCSRuZXh0cGFnZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoIm5leHRwYWdlIiksICRwYWdlcGFyYW1zKTsNCgkJCX0NCgkJCSRpID0gMDsNCgkJCSRwYWdlcyA9ICR0aGlzLT5MYW5nKCJwYWdlcyIpOw0KCQkJd2hpbGUoJGkgPCAkbmJwYWdlcyl7DQoJCQkJaWYoJGkgPiAwKQkkcGFnZXMgLj0gIiZuYnNwOyAiOw0KCQkJCWlmKCRpID09ICRjdXJwYWdlKXsNCgkJCQkJJHBhZ2VzIC49ICRpOw0KCQkJCX1lbHNlew0KCQkJCQkkcGFnZXBhcmFtc1skbGV2ZWwuIl9wYWdlIl0gPSAkaTsNCgkJCQkJJHBhZ2VzIC49ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJGksICRwYWdlcGFyYW1zKTsNCgkJCQl9DQoJCQkJJGkrKzsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gYXJyYXkoJHBhZ2VpbmZvLCAkbmV4dHBhZ2UsICRwcmV2aW91c3BhZ2UsICRwYWdlcyk7DQoJfQ0KDQoJZnVuY3Rpb24gcGFnaW5hdGUoJHdoYXQsJHRvdGFsLCRpZCwkcmV0dXJuaWQsJHBhcmFtcywkYWN0aW9uPSJkZWZhdWx0Iil7DQoJCS8vIGZvciBmcm9udGVuZCB1c2FnZQ0KCQkvLyB0aGlzIGFzc2lnbnMgdGhlIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgcGFnZSBtZW51DQoJCQ0KCQkkbmJwZXJwYWdlID0gaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pPyRwYXJhbXNbIm5icGVycGFnZSJdOjA7DQoJCSRuYnBlcnBhZ2UgPSAoaW50KSAkbmJwZXJwYWdlOw0KCQlpZigkbmJwZXJwYWdlID09IDAgfHwgJG5icGVycGFnZSA+PSAkdG90YWwpew0KCQkJLy8gd2UncmUgbm90IHVzaW5nIHBhZ2luYXRpb24NCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbihhcnJheSgicGFnZV9zaG93aW5nIj0+ZmFsc2UsInBhZ2VfdG90YWxpdGVtcyI9PmZhbHNlLCJwYWdlX3BhZ2VudW1iZXJzIj0+ZmFsc2UsInBhZ2VfbmV4dCI9PmZhbHNlLCJwYWdlX3ByZXZpb3VzIj0+ZmFsc2UpKTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJLy8gd2UncmUgdXNpbmcgcGFnaW5hdGlvbg0KCQkkY3VycGFnZSA9IGlzc2V0KCRwYXJhbXNbInBhZ2VpbmRleCJdKT8kcGFyYW1zWyJwYWdlaW5kZXgiXToxOw0KCQkkbmJwYWdlcyA9IGNlaWwoJHRvdGFsLyRuYnBlcnBhZ2UpOw0KCQkkc2hvd2luZyA9ICgoKCRjdXJwYWdlIC0xKSAqICRuYnBlcnBhZ2UpICsgMSk7DQoJCSR0bXBlbmQgPSAkc2hvd2luZyArICRuYnBlcnBhZ2UgLSAxOw0KCQlpZigkdG1wZW5kID4gJHRvdGFsKQkkdG1wZW5kID0gJHRvdGFsOw0KCQlpZigkdG1wZW5kICE9ICRzaG93aW5nKQkkc2hvd2luZyAuPSAiLSIuJHRtcGVuZDsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlX3Nob3dpbmciLCRzaG93aW5nKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlX3RvdGFsaXRlbXMiLCR0b3RhbCk7DQoNCgkJJG5ld3BhcmFtcyA9ICRwYXJhbXM7DQoJCSRwcmV2aW91c2xpbmsgPSBmYWxzZTsNCgkJJG5leHRsaW5rID0gZmFsc2U7DQoJCWlmKCRjdXJwYWdlID4gMSl7DQoJCQkvLyB3ZSBjcmVhdGUgdGhlIGxpbmsgdG8gdGhlIHByZXZpb3VzIHBhZ2UNCgkJCSRuZXdwYXJhbXNbInBhZ2VpbmRleCJdID0gJGN1cnBhZ2UgLSAxOw0KCQkJJHByZXZpb3VzbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAiJmx0OyIsICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgdHJ1ZSwgIiBjbGFzcz1cInByZXZpb3VzbGlua1wiIiwgZmFsc2UsICgkYWN0aW9uICE9ICJkZWZhdWx0Iik/IiI6JHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpKTsNCgkJfQ0KCQlpZigkY3VycGFnZSA8ICRuYnBhZ2VzKXsNCgkJCS8vIHdlIGNyZWF0ZSB0aGUgbGluayB0byB0aGUgbmV4dCBwYWdlDQoJCQkkbmV3cGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRjdXJwYWdlICsgMTsNCgkJCSRuZXh0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAiJmd0OyIsICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgdHJ1ZSwgIiBjbGFzcz1cIm5leHRsaW5rXCIiLCBmYWxzZSwgKCRhY3Rpb24gIT0gImRlZmF1bHQiKT8iIjokdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZV9uZXh0IiwkbmV4dGxpbmspOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VfcHJldmlvdXMiLCRwcmV2aW91c2xpbmspOwkNCgkJCQkNCgkJLy8gd2UgY3JlYXRlIGxpbmtzIGZvciBlYWNoIHBhZ2UgbnVtYmVyDQoJCSRpID0gMTsNCgkJJGxpbmtzID0gYXJyYXkoKTsNCgkJd2hpbGUoJGkgPD0gJG5icGFnZXMgJiYgJG5icGFnZXMgPiAxKXsNCgkJCSRuZXdwYXJhbXNbInBhZ2VpbmRleCJdID0gJGk7DQoJCQlpZigkaSA9PSAkY3VycGFnZSl7DQoJCQkJJGxpbmtzW10gPSAiPGEgY2xhc3M9XCJwYWdlbnVtYmVyIGN1cnJlbnRcIj4iLiRpLiI8L2E+IjsNCgkJCX1lbHNlew0KCQkJCSRsaW5rc1tdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICRpLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsIHRydWUsICIgY2xhc3M9XCJwYWdlbnVtYmVyXCIiLCBmYWxzZSwgKCRhY3Rpb24gIT0gImRlZmF1bHQiKT8iIjokdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQkJfQ0KCQkJJGkrKzsNCgkJfQ0KCQkkaSA9IDA7DQoJCSR0bXBmbGFnID0gdHJ1ZTsNCgkJJG1heHBhZ2VzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoIm1heHNob3ducGFnZXMiLDcpOw0KCQkkbWF4cGFnZXMgPSAoaW50KSAkbWF4cGFnZXM7DQoJCSRwYWdlbWVudSA9ICIiOw0KCQlpZigkbWF4cGFnZXMgPCAxKQkkbWF4cGFnZXMgPSA5OTk7DQoJCXdoaWxlKCRpIDwgY291bnQoJGxpbmtzKSl7DQoJCQlpZigkaSA8ICgkbWF4cGFnZXMtMSkgfHwgJG5icGFnZXMgPD0gJG1heHBhZ2VzKXsNCgkJCQkkcGFnZW1lbnUgLj0gKCRwYWdlbWVudSA9PSAiIj8iIjokdGhpcy0+TGFuZygicGFnZW1lbnVkZWxpbWl0ZXIiKSkuJGxpbmtzWyRpXTsNCgkJCX1lbHNlaWYoJGkgPT0gY291bnQoJGxpbmtzKSl7DQoJCQkJJHBhZ2VtZW51IC49ICRsaW5rc1skaV07DQoJCQl9ZWxzZWlmKCR0bXBmbGFnKXsNCgkJCQkkdG1wZmxhZyA9IGZhbHNlOw0KCQkJCSRwYWdlbWVudSAuPSAiPHNwYW4gY2xhc3M9XCJwYWdlbWVudW92ZXJmbG93XCI+Ii4kdGhpcy0+TGFuZygicGFnZW1lbnVvdmVyZmxvdyIpLiI8L3NwYW4+IjsNCgkJCX0NCgkJCSRpKys7DQoJCX0NCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlX3BhZ2VudW1iZXJzIiwkcGFnZW1lbnUpOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9kaXN0YW5jZXRvbGV2ZWwoJHBhcmVudG5hbWUsJGNoaWxkbmFtZT1mYWxzZSl7DQoJCS8vIGdldCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0d28gbGV2ZWxzIChtb3N0IGxpa2VseSBiZXR3ZWVuIGEgbGV2ZWwgYW5kIHRoZSBmaW5hbCBsZXZlbCkNCgkJJGxldmVscyA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQlpZighJGNoaWxkbmFtZSkJJGNoaWxkbmFtZSA9ICRsZXZlbHNbY291bnQoJGxldmVscyktMV07DQoJCSRwYXJlbnRwb3NpdGlvbiA9IGZhbHNlOw0KCQkkY2hpbGRwb3NpdGlvbiA9IGZhbHNlOw0KCQkkY291bnRlciA9IDA7DQoJCWZvcmVhY2goJGxldmVscyBhcyAkbGV2ZWwpew0KCQkJJGNvdW50ZXIrKzsNCgkJCWlmKCRsZXZlbCA9PSAkcGFyZW50bmFtZSkgJHBhcmVudHBvc2l0aW9uID0gJGNvdW50ZXI7DQoJCQlpZigkbGV2ZWwgPT0gJGNoaWxkbmFtZSkgJGNoaWxkcG9zaXRpb24gPSAkY291bnRlcjsNCgkJfQ0KCQlpZigkY2hpbGRwb3NpdGlvbiAmJiAkcGFyZW50cG9zaXRpb24pew0KCQkJcmV0dXJuIGFicygkcGFyZW50cG9zaXRpb24gLSAkY2hpbGRwb3NpdGlvbik7DQoJCX0NCgl9DQoJZnVuY3Rpb24gZ2V0X25leHRsZXZlbCgkY3VybGV2ZWwsJGZpbmRjaGlsZD10cnVlKXsNCgkJLy8gcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsZXZlbCBiZWxvdyAoJGZpbmRjaGlsZD10cnVlKSBvciBhYm92ZSAoJGZpbmRjaGlsZD1mYWxzZSkNCgkJJGxldmVscyA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQkkaSA9IDA7DQoJCSR3YW50ZWRsZXZlbCA9IGZhbHNlOw0KCQl3aGlsZSgkaSA8IGNvdW50KCRsZXZlbHMpKXsNCgkJCSRuZXh0ID0gJGZpbmRjaGlsZD8kaSsxOiRpLTE7DQoJCQlpZigkbGV2ZWxzWyRpXSA9PSAkY3VybGV2ZWwgJiYgaXNzZXQoJGxldmVsc1skbmV4dF0pKSAkd2FudGVkbGV2ZWwgPSAkbGV2ZWxzWyRuZXh0XTsNCgkJCSRpKys7DQoJCX0NCgkJcmV0dXJuICR3YW50ZWRsZXZlbDsNCgl9DQoJZnVuY3Rpb24gZ2V0X3BhcmVudHMoJHBhcmVudG5hbWUsJGNoaWxkbmFtZSwkY2hpbGRpZCl7DQoJCS8vIHdoZW4gdXNpbmcgdGhlIHNoYXJlY2hpbGRyZW4gb3B0aW9uLCByZXRyaWV2ZXMgdGhlIHBhcmVudHMgb2YgYSBnaXZlbiBlbGVtZW50DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLiRwYXJlbnRuYW1lLiJfaWQgcGFyZW50aWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJHBhcmVudG5hbWUuIl9oYXNfIi4kY2hpbGRuYW1lLiIgV0hFUkUgIi4kY2hpbGRuYW1lLiJfaWQ9PyI7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGNoaWxkaWQpKTsNCgkJJHBhcmVudHMgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJHBhcmVudHNbXSA9ICRyb3dbInBhcmVudGlkIl07DQoJCX0NCgkJcmV0dXJuICRwYXJlbnRzOw0KCX0NCglmdW5jdGlvbiBnZXRfb3B0aW9ucygkdGFibGVuYW1lLCRvbmx5YWN0aXZlPWZhbHNlLCRmdWxsb2JqZWN0PWZhbHNlKXsNCgkJLy8gcmV0dXJucyB0aGUgZWxlbWVudHMgb2YgYW55IHRhYmxlIGFzIG9wdGlvbnMgdG8gdXNlIGZvciBhIGRyb3Bkb3duIGxpc3QNCgkJLy8gcmV0dXJucyBhbiBhcnJheSBvZiAkbGFiZWw9PiR2YWx1ZQ0KCQkkb3JkZXJieW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgib3JkZXJieW5hbWUiLGZhbHNlKTsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuKCRmdWxsb2JqZWN0PyIqIjoiaWQsIG5hbWUiKS4iIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl8iLiR0YWJsZW5hbWU7DQoJCWlmKCRvbmx5YWN0aXZlKQkkcXVlcnkgLj0gIiBXSEVSRSBhY3RpdmU9MSI7DQoJCSRxdWVyeSAuPSAiIE9SREVSIEJZICIuKCRvcmRlcmJ5bmFtZT8ibmFtZSI6Iml0ZW1fb3JkZXIiKTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCSRvcHRpb25zID0gYXJyYXkoKTsNCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCWlmKCRmdWxsb2JqZWN0KXsNCgkJCQkkb2JqID0gbmV3IFN0ZENsYXNzKCk7DQoJCQkJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSkJJG9iai0+JGtleSA9ICR2YWx1ZTsNCgkJCQkkb3B0aW9uc1tdID0gJG9iajsNCgkJCX1lbHNlew0KCQkJCSRvcHRpb25zWyRyb3dbIm5hbWUiXV0gPSAkcm93WyJpZCJdOw0KCQkJfQ0KCQl9DQoJCQ0KCQlyZXR1cm4gJG9wdGlvbnM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9maWVsZG9wdGlvbnMoJGZpZWxkLCRmdWxsb2JqZWN0PWZhbHNlKXsNCgkJLy8gcmV0dXJucyBmaWVsZCBvcHRpb25zIGFzIG9wdGlvbnMgdG8gdXNlIGZvciBhIGRyb3Bkb3duIGxpc3QNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX2ZpZWxkb3B0aW9ucyBXSEVSRSBmaWVsZD0/IE9SREVSIEJZIGl0ZW1fb3JkZXIiOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWVsZCkpOw0KCQkkb3B0aW9ucyA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQlpZigkZnVsbG9iamVjdCl7DQoJCQkJJG9iaiA9IG5ldyBTdGRDbGFzcygpOw0KCQkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpCSRvYmotPiRrZXkgPSAkdmFsdWU7DQoJCQkJJG9wdGlvbnNbXSA9ICRvYmo7DQoJCQl9ZWxzZXsNCgkJCQkkb3B0aW9uc1skcm93WyJuYW1lIl1dID0gJHJvd1siaWQiXTsNCgkJCX0NCgkJfQ0KCQkNCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCglmdW5jdGlvbiBnZXRfcGFnZWlkKCRhbGlhcyl7DQoJCS8vIHJldHVybnMgdGhlIHBhZ2UgaWQgZnJvbSBhbiBhbGlhcw0KCQlnbG9iYWwgJGdDbXM7DQoJCSRtYW5hZ2VyID0mICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7DQoJCSRub2RlID0mICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJGFsaWFzKTsNCgkJaWYgKGlzc2V0KCRub2RlKSkgew0KCQkJJGNvbnRlbnQgPSYgJG5vZGUtPkdldENvbnRlbnQoKTsJDQoJCQlpZiAoaXNzZXQoJGNvbnRlbnQpKQlyZXR1cm4gJGNvbnRlbnQtPklkKCk7DQoJCX1lbHNlew0KCQkJJG5vZGUgPSYgJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkYWxpYXMpOw0KCQkJaWYgKGlzc2V0KCRub2RlKSkgcmV0dXJuICRhbGlhczsNCgkJfQ0KCX0NCglmdW5jdGlvbiBhZGRmcm9udGVuZHVybHMoJGl0ZW0sJHBhcmFtcywkaWQsJHJldHVybmlkKXsNCgkJLy8gYWRkcyAkaXRlbS0+ZGV0YWlsbGluayBhbmQgJGl0ZW0tPmRldGFpbHVybCB0byBhIGdpdmVuICRpdGVtDQoJCSRuZXh0bGV2ZWwgPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkaXRlbS0+X193aGF0KTsNCgkJaWYoISRuZXh0bGV2ZWwpew0KCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJ3aGF0Ij0+JGl0ZW0tPl9fd2hhdCwgImFsaWFzIj0+JGl0ZW0tPmFsaWFzKTsNCgkJfWVsc2V7DQoJCQkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kbmV4dGxldmVsLCAicGFyZW50Ij0+JGl0ZW0tPmFsaWFzKTsNCgkJCWlmKGlzc2V0KCRwYXJhbXNbImZvcmNlbGlzdCJdKSAmJiAkcGFyYW1zWyJmb3JjZWxpc3QiXSkJJG5ld3BhcmFtc1siZm9yY2VsaXN0Il0gPSB0cnVlOw0KCQkJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pICYmICRwYXJhbXNbIm5icGVycGFnZSJdID4gMCkJJG5ld3BhcmFtc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWyJuYnBlcnBhZ2UiXTsNCgkJCWlmKGlzc2V0KCRwYXJhbXNbInBhZ2VpbmRleCJdKSAmJiAkcGFyYW1zWyJwYWdlaW5kZXgiXSA+IDEpCSRuZXdwYXJhbXNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1sicGFnZWluZGV4Il07DQoJCX0NCgkJJGlubGluZSA9IChpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkgJiYgJHBhcmFtc1siaW5saW5lIl0pP3RydWU6ZmFsc2U7DQoJCWlmKCRpbmxpbmUpCSRuZXdwYXJhbXNbImlubGluZSJdID0gdHJ1ZTsNCgkJJGl0ZW0tPmRldGFpbGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJHJldHVybmlkLCAkaXRlbS0+bmFtZSwgJG5ld3BhcmFtcywgIiIsIGZhbHNlLCAkaW5saW5lLCAiIiwgZmFsc2UsICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCSRpdGVtLT5kZXRhaWx1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJHJldHVybmlkLCAiIiwgJG5ld3BhcmFtcywgIiIsIHRydWUsICRpbmxpbmUsICIiLCBmYWxzZSwgJHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpKTsNCgkJcmV0dXJuICRpdGVtOw0KCX0NCglmdW5jdGlvbiBhZGRDYXJ0VXJscygkaXRlbWxpc3QsJGlkLCRyZXR1cm5pZCl7DQoJCS8vIGZvciBldmVudHVhbCB1c2Ugd2l0aCBDYXJ0TWFkZVNpbXBsZQ0KCQkvLyBob3dldmVyLCBpbnRlZ3JhdGlvbiByZXF1aXJlcyBjaGFuZ2VzIHRvIENhcnRNYWRlU2ltcGxlDQoJCSRDYXJ0TWFkZVNpbXBsZSA9IGZhbHNlOw0KCQlpZiAoaXNzZXQoJGdDbXMtPm1vZHVsZXNbIkNhcnRNYWRlU2ltcGxlIl0pICYmICRnQ21zLT5tb2R1bGVzWyJDYXJ0TWFkZVNpbXBsZSJdWyJhY3RpdmUiXSkJJENhcnRNYWRlU2ltcGxlID0gJGdDbXMtPm1vZHVsZXNbIkNhcnRNYWRlU2ltcGxlIl1bIm9iamVjdCJdOw0KCQlpZighJENhcnRNYWRlU2ltcGxlKQlyZXR1cm4gJGl0ZW1saXN0Ow0KCQkkY2FydHBhcmFtcyA9IGFycmF5KCJwZXJmYWN0aW9uIj0+ImFkZF9wcm9kdWN0IiwgInF0eSI9PjEsICJyZXR1cm5tb2QiPT4kdGhpcy0+R2V0TmFtZSgpKTsNCgkJJG5ld2xpc3QgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRpdGVtbGlzdCBhcyAkaXRlbSl7DQoJCQkkY2FydHBhcmFtc1sicHJvZHVjdF9pZCJdID0gJGl0ZW0tPmlkOw0KCQkJJGNhcnRwYXJhbXNbIm5hbWUiXSA9ICRpdGVtLT5uYW1lOw0KCQkJJGl0ZW0tPmFkZHRvY2FydGxpbmsgPSAkQ2FydE1hZGVTaW1wbGUtPkNyZWF0ZUxpbmsoJGlkLCAiY2FydCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoImFkZHRvY2FydCIpLCAkY2FydHBhcmFtcyk7DQoJCQkkaXRlbS0+YWRkdG9jYXJ0dXJsID0gJENhcnRNYWRlU2ltcGxlLT5DcmVhdGVMaW5rKCRpZCwgImNhcnQiLCAkcmV0dXJuaWQsICIiLCAkY2FydHBhcmFtcywgIiIsIHRydWUpOw0KCQkJYXJyYXlfcHVzaCgkbmV3bGlzdCwgJGl0ZW0pOw0KCQl9DQoJCXJldHVybiAkbmV3bGlzdDsNCgl9DQoJZnVuY3Rpb24gYWRkYWRtaW5saW5rcygkaXRlbSwkcGFyYW1zLCRpZCwkcmV0dXJuaWQpew0KCQkvLyBhZGRzIHRoZSBhZG1pbiBsaW5rcyB0byB0aGUgbGV2ZWwgaXRlbXMuLi4NCgkJLyogJHBhcmFtcyA6IHRoZSBiYXNlIHBhcmFtZXRlcnMgZm9yIHRoZSBhZG1pbiBsaW5rcw0KCQkJCXByZWZpeA0KCQkJCXRhYmxlbmFtZQ0KCQkJCWNoaWxkIChpZiB0aGUgbGV2ZWwgaGFzIGEgY2hpbGQgbGV2ZWwsIHRoZSBuYW1lIG9mIHRoZSBjaGlsZCBsZXZlbCkNCgkJCQlsZXZlbG5hbWUNCgkJCQlwYXJlbnRkZWZhdWx0IChib29sLi4uIHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGEgZGVmYXVsdCBlbGVtZW50IGZvciBlYWNoIHBhcmVudCkNCgkJCQlvcmRlcmJ5cGFyZW50IChib29sKQ0KCQkJCWFkZGZpbGVzDQoJCQkJc2hhcmVjaGlsZHJlbiAoYm9vbCkNCgkJCQlzaGFyZWRieXBhcmVudHMgKGJvb2wpDQoJCQkJZmlsZXMgKHN0cmluZyxjc3YpDQoJCSovDQoNCgkJZ2xvYmFsICRnQ21zOw0KCQkkYWRtaW50aGVtZSA9ICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXTsNCgkJDQoJCWlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgicmVzdHJpY3RfcGVybWlzc2lvbnMiLGZhbHNlKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkdGhpcy0+R2V0TmFtZSgpLiJfYWR2YW5jZWQiKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkdGhpcy0+R2V0TmFtZSgpLiJfbWFuYWdlXyIuJHBhcmFtc1sibGV2ZWxuYW1lIl0pICl7DQoJCQkvLyBubyBhY2Nlc3MgLSB3ZSBkb24ndCBjcmVhdGUgbGlua3MNCgkJCSRpdGVtLT5lZGl0bGluayA9ICRpdGVtLT5uYW1lOw0KCQkJJGl0ZW0tPmRlbGV0ZWxpbmsgPSAiIjsNCgkJCSRpdGVtLT5tb3ZlbGlua3MgPSAiIjsNCgkJCSRpdGVtLT50b2dnbGVhY3RpdmUgPSAkaXRlbS0+YWN0aXZlPT0xPyRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsIiIsIiIsIiIsInN5c3RlbWljb24iKTokYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiwiIiwiIiwiIiwic3lzdGVtaWNvbiIpOw0KCQkJJGl0ZW0tPnRvZ2dsZWRlZmF1bHQgPSAkaXRlbS0+aXNkZWZhdWx0PT0xPyRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsIiIsIiIsIiIsInN5c3RlbWljb24iKTokYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiwiIiwiIiwiIiwic3lzdGVtaWNvbiIpOw0KCQkJcmV0dXJuICRpdGVtOw0KCQl9DQoJCQ0KCQkkcHJlZml4ID0gJHBhcmFtc1sicHJlZml4Il07DQoJCSRtb3ZlcGFyYW1zID0gJHBhcmFtczsNCgkJJG1vdmVwYXJhbXNbJHByZWZpeC4iaWQiXSA9ICRpdGVtLT5pZDsNCgkJJG1vdmVwYXJhbXNbImN1cnJlbnRvcmRlciJdID0gJGl0ZW0tPml0ZW1fb3JkZXI7DQoJCWlmKGlzc2V0KCRtb3ZlcGFyYW1zWyJmaWxlcyJdKSkJdW5zZXQoJG1vdmVwYXJhbXNbImZpbGVzIl0pOw0KCQlpZigkbW92ZXBhcmFtc1sib3JkZXJieXBhcmVudCJdICYmIGlzc2V0KCRpdGVtLT5wYXJlbnRfaWQpKSAkbW92ZXBhcmFtc1sicGFyZW50Il0gPSAkaXRlbS0+cGFyZW50X2lkOw0KDQoJCSRpdGVtLT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXQiLiRwcmVmaXgsICRyZXR1cm5pZCwgJGl0ZW0tPm5hbWUsIGFycmF5KCRwcmVmaXguImlkIj0+JGl0ZW0tPmlkKSk7DQoJCSRpdGVtLT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZXNvbWV0aGluZyIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYiLGxhbmcoImRlbGV0ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJtb3ZlIj0+ImRlbGV0ZSIsImZpbGVzIj0+JHBhcmFtc1siZmlsZXMiXSksJG1vdmVwYXJhbXMpLCR0aGlzLT5MYW5nKCJwcm9tcHRfZGVsZXRlIi4kcGFyYW1zWyJsZXZlbG5hbWUiXSwgc3RyX3JlcGxhY2UoIiciLCJcJyIsJGl0ZW0tPm5hbWUpKSk7DQoJCSRpdGVtLT5tb3ZldXBsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZXNvbWV0aGluZyIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LXUuZ2lmIixsYW5nKCJ1cCIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJtb3ZlIj0+InVwIiksJG1vdmVwYXJhbXMpKTsNCgkJJGl0ZW0tPm1vdmVkb3dubGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVzb21ldGhpbmciLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9hcnJvdy1kLmdpZiIsbGFuZygiZG93biIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJtb3ZlIj0+ImRvd24iKSwkbW92ZXBhcmFtcykpOw0KCQkkaXRlbS0+bW92ZWxpbmtzID0gJGl0ZW0tPm1vdmV1cGxpbmsgLiIgIi4gJGl0ZW0tPm1vdmVkb3dubGluazsNCgkJDQoJCS8vIHdlIHJlYnVpbGQgdGhlIHBhcmFtcywgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHNvIG1hbnkgZm9yIHRoZSB0b2dnbGUgYWN0aW9uDQoJCSR0b2dnbGVwYXJhbXMgPSBhcnJheSgkcHJlZml4LiJpZCI9PiRpdGVtLT5pZCwgInByZWZpeCI9PiRwcmVmaXgsICJ0YWJsZW5hbWUiPT4kcGFyYW1zWyJ0YWJsZW5hbWUiXSwgImxldmVsbmFtZSI9PiRwYXJhbXNbImxldmVsbmFtZSJdKTsNCgkJaWYoJHBhcmFtc1sicGFyZW50ZGVmYXVsdCJdICYmIGlzc2V0KCRpdGVtLT5wYXJlbnRfaWQpKXsNCgkJCSR0b2dnbGVwYXJhbXNbInBhcmVudCJdID0gJGl0ZW0tPnBhcmVudF9pZDsNCgkJCSR0b2dnbGVwYXJhbXNbInBhcmVudGRlZmF1bHQiXSA9IDE7DQoJCX0NCgkJaWYgKCRpdGVtLT5hY3RpdmUgPT0gMSl7DQoJCQkkaXRlbS0+dG9nZ2xlYWN0aXZlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAidG9nZ2xlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdHJ1ZS5naWYiLGxhbmcoInNldGZhbHNlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIndoYXQiPT4iYWN0aXZlIiwibmV3dmFsIj0+MCksJHRvZ2dsZXBhcmFtcykpOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT50b2dnbGVhY3RpdmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9mYWxzZS5naWYiLGxhbmcoInNldHRydWUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJhY3RpdmUiLCJuZXd2YWwiPT4xKSwkdG9nZ2xlcGFyYW1zKSk7DQoJCX0NCg0KCQlpZiAoJGl0ZW0tPmlzZGVmYXVsdCA9PSAxKXsNCgkJCSRpdGVtLT50b2dnbGVkZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAidG9nZ2xlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdHJ1ZS5naWYiLGxhbmcoInNldGZhbHNlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIndoYXQiPT4iZGVmYXVsdCIsIm5ld3ZhbCI9PjApLCR0b2dnbGVwYXJhbXMpKTsNCgkJfWVsc2V7DQoJCQkkaXRlbS0+dG9nZ2xlZGVmYXVsdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRvZ2dsZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsbGFuZygic2V0dHJ1ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJ3aGF0Ij0+ImRlZmF1bHQiLCJuZXd2YWwiPT4xKSwkdG9nZ2xlcGFyYW1zKSk7DQoJCX0NCgkJcmV0dXJuICRpdGVtOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9wcmVkZWZpbmVkb3B0aW9ucygkZmllbGQsJHJldHJpZXZlPWZhbHNlKXsNCgkJLy8gcmV0dXJuIHRoZSBvcHRpb25zIGZvciBhIHByZWRlZmluZWQgbGlzdA0KCQlpZigkcmV0cmlldmUpew0KCQkJc3dpdGNoKCRmaWVsZCl7DQoJCQkJY2FzZSAicGxheWVyX3BsYXllcnR5cGUiOg0KCQkJCQlyZXR1cm4gYXJyYXkoIjAiPT4kdGhpcy0+TGFuZygicGxheWVyX3BsYXllcnR5cGVfb3B0aW9uXzAiKSwgIjEiPT4kdGhpcy0+TGFuZygicGxheWVyX3BsYXllcnR5cGVfb3B0aW9uXzEiKSk7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9ZWxzZXsNCgkJCXN3aXRjaCgkZmllbGQpew0KCQkJCWNhc2UgInBsYXllcl9wbGF5ZXJ0eXBlIjoNCgkJCQkJcmV0dXJuIGFycmF5KCR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZV9vcHRpb25fMCIpPT4iMCIsICR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZV9vcHRpb25fMSIpPT4iMSIpOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCX0NCglmdW5jdGlvbiBzcGxpdF9pbnRvX3BhZ2VzKCRpdGVtbGlzdCwgJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMsICRhY3Rpb249ImRlZmF1bHQiLCAkcHJldHR5dXJscz10cnVlKXsNCgkJLy8gZGVwcmVjYXRlZCAtIHNob3VsZCB1c2UgZnVuY3Rpb24gcGFnaW5hdGUgaW5zdGVhZA0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCglmdW5jdGlvbiBnZXRfcXVlcmllcygkd2hlcmU9YXJyYXkoKSwgJGFkbWluPWZhbHNlLCAkaWQ9ZmFsc2UsICRyZXR1cm5pZD1mYWxzZSl7DQoJCS8vIHJldHJpdmVzIHF1ZXJpZXMgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cw0KCQlnbG9iYWwgJGdDbXM7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiR0aGlzLT5HZXROYW1lKCkuIl9zYXZlZF9xdWVyaWVzIjsNCgkJJHdoZXJlY2xhdXNlID0gIiI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCWlmKGNvdW50KCR3aGVyZSk+MCl7DQoJCQlmb3JlYWNoKCR3aGVyZSBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSR3aGVyZWNsYXVzZSAuPSAoJHdoZXJlY2xhdXNlID09ICIiPyIgV0hFUkUgIjoiIEFORCAiKS4ka2V5LiI9PyI7DQoJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQl9DQoJCX0NCgkJJHF1ZXJ5IC49ICR3aGVyZWNsYXVzZTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJJGl0ZW0tPndoZXJldmFsdWVzID0gdW5zZXJpYWxpemUoJGl0ZW0tPndoZXJldmFsdWVzKTsNCgkJCWlmKCFpc19hcnJheSgkaXRlbS0+dmFsdWVzKSkJJGl0ZW0tPnZhbHVlcyA9IGFycmF5KCk7DQoJCQlpZigkYWRtaW4pew0KCQkJCSRpdGVtLT5hY3Rpb25zID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVsZXRlcXVlcnkiLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIsbGFuZygiZGVsZXRlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXkoInF1ZXJ5aWQiPT4kaXRlbS0+aWQpKTsNCgkJCQkkaXRlbS0+YWN0aW9ucyAuPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0ZXN0cXVlcnkiLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdmlldy5naWYiLGxhbmcoInZpZXciKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheSgicXVlcnlpZCI9PiRpdGVtLT5pZCkpOw0KCQkJfQ0KCQkJJGl0ZW1saXN0W10gPSAkaXRlbTsNCgkJfQ0KCQlyZXR1cm4gKGNvdW50KCRpdGVtbGlzdCk+MD8kaXRlbWxpc3Q6ZmFsc2UpOw0KCX0NCg0KCWZ1bmN0aW9uIGNyZWF0ZUZpZWxkRm9ybSgkd2hhdCwkaWQsJGFzc2lnbj10cnVlKXsNCgkJcmVxdWlyZSAiZnVuY3Rpb24uY3JlYXRlRmllbGRGb3JtLnBocCI7DQoJfQ0KCQ0KDQoJZnVuY3Rpb24gYnVpbGRXaGVyZSgkd2hlcmU9YXJyYXkoKSwkd2hhdD0iIil7DQoJCSRtdWx0aXBsZWxpc3RmaWVsZHMgPSBhcnJheSgpOw0KCQkkd2hlcmVjbGF1c2UgPSAiQS5hY3RpdmU9MSI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCWZvcmVhY2goJHdoZXJlIGFzICRjbGF1c2Upew0KCQkJaWYoaW5fYXJyYXkoJHdoYXQuIl8iLiRjbGF1c2VbMF0sICRtdWx0aXBsZWxpc3RmaWVsZHMpKXsNCgkJCQkvLyBsaXN0IHdpdGggbXVsdGlwbGUgc2VsZWN0ZWQgdmFsdWVzIGFyZSBzYXZlZCBpbiBhIHNlcmlhbGl6ZWQgYXJyYXksIHNvIHdlIGhhdmUgdG8gdHdlYWsgdGhlIHZhbHVlDQoJCQkJJGNsYXVzZVsxXSA9ICciJy4kY2xhdXNlWzFdLiciJzsNCgkJCQkkY2xhdXNlWzJdID0gMTsNCgkJCX0NCgkJCWlmKCRjbGF1c2VbMF0gPT0gInBhcmVudCIpew0KCQkJCQkkY3JpdGVyaWEgPSBleHBsb2RlKCIsIiwkY2xhdXNlWzFdKTsNCgkJCQkJaWYoY291bnQoJGNyaXRlcmlhKSA+IDEpew0KCQkJCQkJJHRtcCA9ICIiOw0KCQkJCQkJZm9yZWFjaCgkY3JpdGVyaWEgYXMgJGNyaXQpew0KCQkJCQkJCSR0bXAgPSAoJHRtcD09IiI/IiI6IiBPUiAiKS4iQS5wYXJlbnQ9Ii4kY3JpdDsNCgkJCQkJCX0NCgkJCQkJCSR0bXAgPSAiIEFORCAoIi4kdG1wLiIpIjsNCgkJCQkJfWVsc2V7DQoJCQkJCQkkdG1wID0gIiBBTkQgQS5wYXJlbnQ9PyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICRjbGF1c2VbMV07DQoJCQkJCX0NCgkJCQkJJHdoZXJlY2xhdXNlIC49ICR0bXA7DQoJCQkJDQoJCQl9ZWxzZXsNCgkJCQlzd2l0Y2goJGNsYXVzZVsyXSl7DQoJCQkJCWNhc2UgMDoNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iPT8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV0pOwkJCQkJDQoJCQkJCQlicmVhazsNCgkJCQkJDQoJCQkJCWNhc2UgMToNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iIExJS0UgJyUiLmFkZHNsYXNoZXMoJGNsYXVzZVsxXSkuIiUnIjsNCgkJCQkJCWJyZWFrOw0KCQkJCQkNCgkJCQkJY2FzZSAyOg0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiIgIT0gPyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7DQoJCQkJCQlicmVhazsNCgkJCQkJCQ0KCQkJCQljYXNlIDM6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIiA+ID8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV0pOwkJCQkJDQoJCQkJCQlicmVhazsNCgkJCQkJCQ0KCQkJCQljYXNlIDQ6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIiA8ID8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV0pOwkJCQkJDQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSA1Og0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIChBLiIuJGNsYXVzZVswXS4iID4gPyBBTkQgQS4iLiRjbGF1c2VbMF0uIiA8ID8pIjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdWzBdKTsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdWzFdKTsNCgkJCQkJCWJyZWFrOwkJCQkJDQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiBhcnJheSgkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcyk7DQoJfQ0KCWZ1bmN0aW9uIGdldFdoZXJlRnJvbVBhcmFtcygkcGFyYW1zLCAkaHRtbGVuY29kZWQ9ZmFsc2Upew0KCQkvLyB1c2VkIGZvciBxdWVyeSBjcmVhdGlvbiBhbmQgZnJvbnRlbmQgYWR2YW5jZWQgc2VhcmNoIGFjdGlvbg0KCQkvLyB0cmFuc2Zvcm1zIHBhcmFtZXRlcnMgaW50byAkd2hlcmUgLSBhbiBhcnJheSBvZiBjcml0ZXJpYToNCgkJLy8gJHdoZXJlW10gPSBhcnJheSgkZmllbGRuYW1lLCAkc2VhcmNodmFsdWUsICRjb21wYXJpc29uX3R5cGUpDQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHdoZXJlID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQlpZihzdWJzdHIoJGtleSwwLDYpID09ICJmaWVsZF8iICYmIHRyaW0oJHZhbHVlKSAhPSAiIil7DQoJCQkJJGtleSA9IHN1YnN0cigka2V5LDYpOw0KCQkJCWlmKGlzX2FycmF5KCR2YWx1ZSkgJiYgY291bnQoJHZhbHVlKT09MSkJJHZhbHVlID0gJHZhbHVlWzBdOw0KCQkJCSRjb21wYXJlID0gaXNzZXQoJHBhcmFtc1siY29tcGFyZV8iLiRrZXldKT8kcGFyYW1zWyJjb21wYXJlXyIuJGtleV06MDsNCgkJCQlpZigkdmFsdWUgPT0gIl9fZGF0ZV9maWVsZCIpew0KCQkJCQlpZigkY29tcGFyZSAhPSAiTkEiKXsNCgkJCQkJCS8vIFRoZSBjb2RlIGlzIHN1Y2ggdGhhdCByZW1vdmluZyBhbnkgcGFydCBvZiB0aGUgdGltZSBpbnB1dCBmcm9tIHRoZSBmb3JtIHdpbGwgcmVzdWx0IGluIHVzaW5nIHRoZSBkZWZhdWx0IHZhbHVlDQoJCQkJCQkkdGltZWlucHV0cyA9IGFycmF5KCJIb3VyIj0+IkgiLCJNaW51dGUiPT4iaSIsIlNlY29uZCI9PiJzIiwiTW9udGgiPT4ibiIsIkRheSI9PiJqIiwiWWVhciI9PiJZIik7DQoJCQkJCQkkcGFydHMgPSBhcnJheSgpOw0KCQkJCQkJZm9yZWFjaCgkdGltZWlucHV0cyBhcyAkaW5wdXRuYW1lPT4kZGF0ZXBhcnQpewkNCgkJCQkJCQkkcGFydHNbXSA9IChpc3NldCgkcGFyYW1zWyJkYXRlXyIuJGtleS4iXyIuJGlucHV0bmFtZV0pKT8kcGFyYW1zWyJkYXRlXyIuJGtleS4iXyIuJGlucHV0bmFtZV06ZGF0ZSgkZGF0ZXBhcnQpOw0KCQkJCQkJfQ0KCQkJCQkJJHZhbHVlID0gbWt0aW1lKCRwYXJ0c1swXSwkcGFydHNbMV0sJHBhcnRzWzJdLCRwYXJ0c1szXSwkcGFydHNbNF0sJHBhcnRzWzVdKTsNCgkJCQkJCSR2YWx1ZSA9IHN0cl9yZXBsYWNlKCJcJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCgkdmFsdWUpKTsNCgkJCQkJCQ0KCQkJCQkJaWYoJGNvbXBhcmUgPT0gNSl7DQoJCQkJCQkJJHBhcnRzID0gYXJyYXkoKTsNCgkJCQkJCQlmb3JlYWNoKCR0aW1laW5wdXRzIGFzICRpbnB1dG5hbWU9PiRkYXRlcGFydCl7CQ0KCQkJCQkJCQkkcGFydHNbXSA9IChpc3NldCgkcGFyYW1zWyJkYXRlXyIuJGtleS4iX3BhcnQyXyIuJGlucHV0bmFtZV0pKT8kcGFyYW1zWyJkYXRlXyIuJGtleS4iX3BhcnQyXyIuJGlucHV0bmFtZV06ZGF0ZSgkZGF0ZXBhcnQpOw0KCQkJCQkJCX0NCgkJCQkJCQkkdmFsdWUyID0gbWt0aW1lKCRwYXJ0c1swXSwkcGFydHNbMV0sJHBhcnRzWzJdLCRwYXJ0c1szXSwkcGFydHNbNF0sJHBhcnRzWzVdKTsNCgkJCQkJCQkkdmFsdWUyID0gc3RyX3JlcGxhY2UoIlwnIiwiIiwkZGItPkRCVGltZVN0YW1wKCR2YWx1ZTIpKTsNCgkJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksIGFycmF5KCR2YWx1ZSwkdmFsdWUyKSwgJGNvbXBhcmUpOw0KCQkJCQkJfWVsc2V7CQ0KCQkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJHZhbHVlLCAkY29tcGFyZSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJaWYoaXNfYXJyYXkoJHZhbHVlKSl7DQoJCQkJCQlmb3JlYWNoKCR2YWx1ZSBhcyAkb25ldmFsdWUpCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJG9uZXZhbHVlLCAxKTsNCgkJCQkJfWVsc2VpZigkY29tcGFyZSA9PSAxKXsNCgkJCQkJCSRrZXl3b3JkcyA9ICR0aGlzLT5wYXJzZWtleXdvcmRzKCR2YWx1ZSk7DQoJCQkJCQlmb3JlYWNoKCRrZXl3b3JkcyBhcyAkdmFsdWUpew0KCQkJCQkJCWlmKCRodG1sZW5jb2RlZCkJJHZhbHVlID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR2YWx1ZSk7DQoJCQkJCQkJJHZhbHVlID0gYWRkc2xhc2hlcygkdmFsdWUpOwkJCQkJCQkNCgkJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksICR2YWx1ZSwgJGNvbXBhcmUpOw0KCQkJCQkJfQ0KCQkJCQl9ZWxzZXsNCgkJCQkJCWlmKCRodG1sZW5jb2RlZCkJJHZhbHVlID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR2YWx1ZSk7DQoJCQkJCQkkdmFsdWUgPSBhZGRzbGFzaGVzKCR2YWx1ZSk7DQoJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksICR2YWx1ZSwgJGNvbXBhcmUpOw0KCQkJCQl9DQoJCQkJfQkJCQkNCgkJCX0NCgkJfQkJDQoJCXJldHVybiAkd2hlcmU7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X2xldmVsX3BsYXllcigkd2hlcmU9YXJyYXkoKSwkYWRtaW49ZmFsc2UsJGlkPSIiLCRyZXR1cm5pZD0iIiwkb3JkZXI9ZmFsc2UsJGxpbWl0PTAsJGN1c3RvbXdoZXJlPWZhbHNlLCRjdXN0b212YWx1ZXM9YXJyYXkoKSwkY3VzdG9tb3JkZXI9ZmFsc2Upew0KCQlnbG9iYWwgJGdDbXM7DQoJCSRsb2FkX25iY2hpbGRyZW4gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibG9hZF9uYmNoaWxkcmVuIix0cnVlKTsNCgkJaWYoJGFkbWluKQkkYWRtaW50aGVtZSA9ICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXTsNCgkJaWYoISRvcmRlcikJJG9yZGVyID0gIiI7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJGZpZWxkcyA9IGFycmF5KCJsb2NhdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwicGFyYW1ldGVycyIsInVzZXJkZWZpbmVkMSIsInBsYXllcnR5cGUiLCJpZCIsIm5hbWUiLCJhbGlhcyIsIml0ZW1fb3JkZXIiLCJhY3RpdmUiLCJpc2RlZmF1bHQiKTsNCgkJDQoJCSR3aGVyZXN0cmluZyA9ICIiOw0KCQkkd2hlcmV2YWx1ZXMgPSBhcnJheSgpOw0KCQkNCg0KCQlpZigkY3VzdG9td2hlcmUpew0KCQkJJHdoZXJlc3RyaW5nID0gJGN1c3RvbXdoZXJlOw0KCQkJJHdoZXJldmFsdWVzID0gJGN1c3RvbXZhbHVlczsNCgkJfWVsc2V7DQoJCQlmb3JlYWNoKCR3aGVyZSBhcyAka2V5PT4kdmFsdWUpew0KCQkJCWlmKGluX2FycmF5KHN0cnRvbG93ZXIoJGtleSksICRmaWVsZHMpKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuJGtleS4iPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIgQSAiLigkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBXSEVSRSAiLiR3aGVyZXN0cmluZyk7DQoJCSRxdWVyeSAuPSAoJGN1c3RvbW9yZGVyPyIgT1JERVIgQlkgIi4kY3VzdG9tb3JkZXI6IiBPUkRFUiBCWSBpdGVtX29yZGVyIik7DQoNCgkJaWYoJGxpbWl0ICYmICRsaW1pdCAhPSAiMCIgJiYgJGxpbWl0ICE9ICIiKQkkcXVlcnkgLj0gIiBMSU1JVCAiLiRsaW1pdDsNCg0KCQkJJG9wdGlvbnNfdXNlcmRlZmluZWQxID0gYXJyYXlfZmxpcCgkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygicGxheWVyX3VzZXJkZWZpbmVkMSIpKTsNCgkJCSRvcHRpb25zX3BsYXllcnR5cGUgPSAkdGhpcy0+Z2V0X3ByZWRlZmluZWRvcHRpb25zKCJwbGF5ZXJfcGxheWVydHlwZSIsdHJ1ZSk7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHdoZXJldmFsdWVzKTsNCgkJJGl0ZW1saXN0ID0gYXJyYXkoKTsNCgkJJGlkbGlzdCA9ICIiOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJCSRpdGVtLT5fX3doYXQgPSAicGxheWVyIjsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJJGl0ZW0tPmxvY2F0aW9uID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5sb2NhdGlvbik7DQoJCQkkaXRlbS0+d2lkdGggPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPndpZHRoKTsNCgkJCSRpdGVtLT5oZWlnaHQgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPmhlaWdodCk7DQoJCQkkaXRlbS0+cGFyYW1ldGVycyA9IHN0cmlwc2xhc2hlcygkaXRlbS0+cGFyYW1ldGVycyk7DQoJCQkkaXRlbS0+dXNlcmRlZmluZWQxID0gKGlzc2V0KCRvcHRpb25zX3VzZXJkZWZpbmVkMVskaXRlbS0+dXNlcmRlZmluZWQxXSkpPyRpdGVtLT51c2VyZGVmaW5lZDE6ZmFsc2U7DQoJCQkkaXRlbS0+dXNlcmRlZmluZWQxX25hbWV2YWx1ZSA9IChpc3NldCgkb3B0aW9uc191c2VyZGVmaW5lZDFbJGl0ZW0tPnVzZXJkZWZpbmVkMV0pKT8kb3B0aW9uc191c2VyZGVmaW5lZDFbJGl0ZW0tPnVzZXJkZWZpbmVkMV06IiI7DQoJCQkkaXRlbS0+cGxheWVydHlwZSA9IChpc3NldCgkb3B0aW9uc19wbGF5ZXJ0eXBlWyRpdGVtLT5wbGF5ZXJ0eXBlXSkpPyRpdGVtLT5wbGF5ZXJ0eXBlOmZhbHNlOw0KCQkJJGl0ZW0tPnBsYXllcnR5cGVfbmFtZXZhbHVlID0gKGlzc2V0KCRvcHRpb25zX3BsYXllcnR5cGVbJGl0ZW0tPnBsYXllcnR5cGVdKSk/JG9wdGlvbnNfcGxheWVydHlwZVskaXRlbS0+cGxheWVydHlwZV06IiI7DQoJCQkkaXRlbS0+bmFtZSA9IHN0cmlwc2xhc2hlcygkaXRlbS0+bmFtZSk7DQoJCQkkaXRlbS0+YWxpYXMgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPmFsaWFzKTsNCg0KCQkJaWYoJGFkbWluID09IHRydWUpew0KCQkJCS8vICRwYXJtcyB3aWxsIGJlIHRoZSBiYXNlIGZvciBwYXJhbWV0ZXJzIG9mIHRoZSBhZG1pbiBsaW5rcw0KCQkJCSRwYXJtcyA9IGFycmF5KA0KCQkJCQkicHJlZml4Ij0+IkEiLA0KCQkJCQkidGFibGVuYW1lIj0+ImF2cGxheWVyX3BsYXllciIsDQoJCQkJCSJsZXZlbG5hbWUiPT4icGxheWVyIiwNCgkJCQkJImNoaWxkIj0+ImF2cGxheWVyX21lZGlhZmlsZSIsDQoJCQkJCSJwYXJlbnRkZWZhdWx0Ij0+ZmFsc2UsDQoJCQkJCSJvcmRlcmJ5cGFyZW50Ij0+dHJ1ZSwNCgkJCQkJImFkZGZpbGVzIj0+IiIsDQoJCQkJCSJzaGFyZWNoaWxkcmVuIj0+ZmFsc2UsDQoJCQkJCSJzaGFyZWRieXBhcmVudHMiPT5mYWxzZSwNCgkJCQkJImZpbGVzIj0+IiINCgkJCQkJKTsNCgkJCQkkaXRlbSA9ICR0aGlzLT5hZGRhZG1pbmxpbmtzKCRpdGVtLCRwYXJtcywkaWQsJHJldHVybmlkKTsNCgkJCX0NCgkJCSRpZGxpc3QgLj0gKCRpZGxpc3Q9PSIiPyIiOiIgT1IgIikuIiBwYXJlbnQ9JyIuJGl0ZW0tPmlkLiInIjsNCgkJCWFycmF5X3B1c2goJGl0ZW1saXN0LCRpdGVtKTsNCgkJfQ0KDQoJCWlmKCRhZG1pbiB8fCAkbG9hZF9uYmNoaWxkcmVuKXsNCgkJCSRuYmNoaWxkcmVucyA9IGFycmF5KCk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUIHBhcmVudCwgY291bnQoaWQpIG5iY2hpbGRyZW4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBXSEVSRSAoIi4kaWRsaXN0LiIpICIuKCRhZG1pbj8iIjoiQU5EIGFjdGl2ZT0xICIpLiJHUk9VUCBCWSBwYXJlbnQiOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkJJG5iY2hpbGRyZW5zWyRyb3dbInBhcmVudCJdXSA9ICRyb3dbIm5iY2hpbGRyZW4iXTsNCgkJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCQkkaXRlbS0+bmJjaGlsZHJlbiA9IGlzc2V0KCRuYmNoaWxkcmVuc1skaXRlbS0+aWRdKT8kbmJjaGlsZHJlbnNbJGl0ZW0tPmlkXTpmYWxzZTsNCgkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJCQl9DQoJCQkkaXRlbWxpc3QgPSAkbmV3bGlzdDsNCgkJfQ0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCg0KCWZ1bmN0aW9uIGdldF9sZXZlbF9tZWRpYWZpbGUoJHdoZXJlPWFycmF5KCksJGFkbWluPWZhbHNlLCRpZD0iIiwkcmV0dXJuaWQ9IiIsJG9yZGVyPWZhbHNlLCRsaW1pdD0wLCRjdXN0b213aGVyZT1mYWxzZSwkY3VzdG9tdmFsdWVzPWFycmF5KCksJGN1c3RvbW9yZGVyPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkbG9hZF9uYmNoaWxkcmVuID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxvYWRfbmJjaGlsZHJlbiIsdHJ1ZSk7DQoJCWlmKCRhZG1pbikJJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJCWlmKCEkb3JkZXIpCSRvcmRlciA9ICIiOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRmaWVsZHMgPSBhcnJheSgibWVkaWFmaWxlIiwicGljdHVyZSIsInVzZXJkZWZpbmVkMiIsInBhcmVudCIsImlkIiwibmFtZSIsImFsaWFzIiwiaXRlbV9vcmRlciIsImFjdGl2ZSIsImlzZGVmYXVsdCIpOw0KCQkNCgkJJHdoZXJlc3RyaW5nID0gIiI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCQ0KDQoJCWlmKCRjdXN0b213aGVyZSl7DQoJCQkkd2hlcmVzdHJpbmcgPSAkY3VzdG9td2hlcmU7DQoJCQkkd2hlcmV2YWx1ZXMgPSAkY3VzdG9tdmFsdWVzOw0KCQl9ZWxzZXsNCgkJCWZvcmVhY2goJHdoZXJlIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJaWYoJGtleSA9PSAicGFyZW50Iil7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJCLmFsaWFzPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9ZWxzZWlmKCRrZXkgPT0gInBhcmVudF9pZCIpew0KCQkJCQkkd2hlcmVzdHJpbmcgLj0gKCR3aGVyZXN0cmluZyA9PSAiIj8iIjoiIEFORCAiKS4iQi5pZD0/IjsNCgkJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQkJfWVsc2VpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRrZXkpLCAkZmllbGRzKSl7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJBLiIuJGtleS4iPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJDQoJCSRxdWVyeSA9ICJTRUxFQ1QgQS4qLCBCLmlkIHBhcmVudF9pZCwgQi5uYW1lIHBhcmVudF9uYW1lLCBCLmFsaWFzIHBhcmVudF9hbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIEEsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIEIgV0hFUkUgQS5wYXJlbnQgPSBCLmlkICIuKCR3aGVyZXN0cmluZyA9PSAiIj8iIjoiIEFORCAiKS4kd2hlcmVzdHJpbmc7DQoJCWlmKCRjdXN0b21vcmRlcil7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS4iLiRjdXN0b21vcmRlcjsNCgkJfWVsc2VpZigkb3JkZXIgPT0gIm1vZGlmaWVkIil7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS5kYXRlX21vZGlmaWVkIERFU0MiOw0KCQl9ZWxzZWlmKCRvcmRlciA9PSAiY3JlYXRlZCIpew0KCQkJICRxdWVyeSAuPSAiIE9SREVSIEJZIEEuaWQgREVTQyI7DQoJCX1lbHNlaWYoICRvcmRlciAhPSAiIiAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImFsbG93X2NvbXBsZXhfb3JkZXIiLGZhbHNlKSB8fCBpbl9hcnJheShzdHJ0b2xvd2VyKCRvcmRlciksICRmaWVsZHMpKSApew0KCQkJJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS4iLiRvcmRlcjsNCgkJfWVsc2V7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQi5pdGVtX29yZGVyLCBBLml0ZW1fb3JkZXIiOw0KCQl9DQoJCWlmKCRsaW1pdCAmJiAkbGltaXQgIT0gIjAiICYmICRsaW1pdCAhPSAiIikJJHF1ZXJ5IC49ICIgTElNSVQgIi4kbGltaXQ7DQoNCgkJCSRvcHRpb25zX3VzZXJkZWZpbmVkMiA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiKSk7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHdoZXJldmFsdWVzKTsNCgkJJGl0ZW1saXN0ID0gYXJyYXkoKTsNCgkJJGlkbGlzdCA9ICIiOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJCSRpdGVtLT5fX3doYXQgPSAibWVkaWFmaWxlIjsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJaWYoJGl0ZW0tPm1lZGlhZmlsZSAhPSAiIiAmJiAkaXRlbS0+bWVkaWFmaWxlICE9ICIvIil7DQoJCQkJJGZpbGUgPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCQkkZmlsZS0+ZmlsZXBhdGggPSAoc3Vic3RyKCRpdGVtLT5tZWRpYWZpbGUsMCwxKT09Ii8iPyIiOiIvIikuJGl0ZW0tPm1lZGlhZmlsZTsNCgkJCQkkZmlsZS0+dXJsID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc191cmwiXS4kZmlsZS0+ZmlsZXBhdGg7DQoJCQkJJGluZm8gPSAkdGhpcy0+cGxHZXRGaWxlSW5mbygkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS4kZmlsZS0+ZmlsZXBhdGgpOw0KCQkJCWZvcmVhY2goJGluZm8gYXMgJGtleT0+JHZhbHVlKQkkZmlsZS0+JGtleSA9ICR2YWx1ZTsNCgkJCQlpZigkZmlsZS0+ZmlsZWljb24gPT0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIikJJGZpbGUtPmltYWdlID0gJzxpbWcgc3JjPSInLiRmaWxlLT51cmwuJyIgYWx0PSIiLz4nOw0KCQkJCWlmKCRhZG1pbikJJGZpbGUtPnBpYyA9ICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJGZpbGUtPmZpbGVpY29uKTsNCgkJCX1lbHNlew0KCQkJCSRmaWxlID0gZmFsc2U7DQoJCQl9DQoJCQkkaXRlbS0+bWVkaWFmaWxlID0gJGZpbGU7DQoJCQlpZigkaXRlbS0+cGljdHVyZSAhPSAiIiAmJiAkaXRlbS0+cGljdHVyZSAhPSAiLyIpew0KCQkJCSRmaWxlID0gbmV3IFN0ZENsYXNzKCk7DQoJCQkJJGZpbGUtPmZpbGVwYXRoID0gKHN1YnN0cigkaXRlbS0+cGljdHVyZSwwLDEpPT0iLyI/IiI6Ii8iKS4kaXRlbS0+cGljdHVyZTsNCgkJCQkkZmlsZS0+dXJsID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc191cmwiXS4kZmlsZS0+ZmlsZXBhdGg7DQoJCQkJJGluZm8gPSAkdGhpcy0+cGxHZXRGaWxlSW5mbygkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS4kZmlsZS0+ZmlsZXBhdGgpOw0KCQkJCWZvcmVhY2goJGluZm8gYXMgJGtleT0+JHZhbHVlKQkkZmlsZS0+JGtleSA9ICR2YWx1ZTsNCgkJCQlpZigkZmlsZS0+ZmlsZWljb24gPT0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIikJJGZpbGUtPmltYWdlID0gJzxpbWcgc3JjPSInLiRmaWxlLT51cmwuJyIgYWx0PSIiLz4nOw0KCQkJCWlmKCRhZG1pbikJJGZpbGUtPnBpYyA9ICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJGZpbGUtPmZpbGVpY29uKTsNCgkJCX1lbHNlew0KCQkJCSRmaWxlID0gZmFsc2U7DQoJCQl9DQoJCQkkaXRlbS0+cGljdHVyZSA9ICRmaWxlOw0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMiA9IChpc3NldCgkb3B0aW9uc191c2VyZGVmaW5lZDJbJGl0ZW0tPnVzZXJkZWZpbmVkMl0pKT8kaXRlbS0+dXNlcmRlZmluZWQyOmZhbHNlOw0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMl9uYW1ldmFsdWUgPSAoaXNzZXQoJG9wdGlvbnNfdXNlcmRlZmluZWQyWyRpdGVtLT51c2VyZGVmaW5lZDJdKSk/JG9wdGlvbnNfdXNlcmRlZmluZWQyWyRpdGVtLT51c2VyZGVmaW5lZDJdOiIiOw0KCQkJJGl0ZW0tPm5hbWUgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPm5hbWUpOw0KCQkJJGl0ZW0tPmFsaWFzID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5hbGlhcyk7DQoJCSRpdGVtLT5uYmNoaWxkcmVuID0gZmFsc2U7DQoJCQ0KCQkJaWYoJGFkbWluID09IHRydWUpew0KCQkJCS8vICRwYXJtcyB3aWxsIGJlIHRoZSBiYXNlIGZvciBwYXJhbWV0ZXJzIG9mIHRoZSBhZG1pbiBsaW5rcw0KCQkJCSRwYXJtcyA9IGFycmF5KA0KCQkJCQkicHJlZml4Ij0+IkIiLA0KCQkJCQkidGFibGVuYW1lIj0+ImF2cGxheWVyX21lZGlhZmlsZSIsDQoJCQkJCSJsZXZlbG5hbWUiPT4ibWVkaWFmaWxlIiwNCgkJCQkJImNoaWxkIj0+ZmFsc2UsDQoJCQkJCSJwYXJlbnRkZWZhdWx0Ij0+ZmFsc2UsDQoJCQkJCSJvcmRlcmJ5cGFyZW50Ij0+dHJ1ZSwNCgkJCQkJImFkZGZpbGVzIj0+IiIsDQoJCQkJCSJzaGFyZWNoaWxkcmVuIj0+ZmFsc2UsDQoJCQkJCSJzaGFyZWRieXBhcmVudHMiPT5mYWxzZSwNCgkJCQkJImZpbGVzIj0+Im1lZGlhZmlsZSxwaWN0dXJlIg0KCQkJCQkpOw0KCQkJCSRpdGVtID0gJHRoaXMtPmFkZGFkbWlubGlua3MoJGl0ZW0sJHBhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQkJfQ0KCQkJJGlkbGlzdCAuPSAoJGlkbGlzdD09IiI/IiI6IiBPUiAiKS4iIHBhcmVudD0nIi4kaXRlbS0+aWQuIiciOw0KCQkJYXJyYXlfcHVzaCgkaXRlbWxpc3QsJGl0ZW0pOw0KCQl9DQoNCgkJcmV0dXJuICRpdGVtbGlzdDsNCgl9DQoJZnVuY3Rpb24gcGxSZXNpemUoJGZ1bGxwYXRoLCAkbmV3cGF0aCwgJG5ld3dpZHRoLCAkbmV3aGVpZ2h0PWZhbHNlLCAkdHJhbnNwYXJlbmN5PWZhbHNlLCAkY3JvcD1mYWxzZSkgew0KCQlyZXF1aXJlICJmdW5jdGlvbi5wbHJlc2l6ZS5waHAiOw0KCQlyZXR1cm4gJHJldHVybjsNCgl9DQoJDQoJZnVuY3Rpb24gcGxHZXRGaWxlSW5mbygkZmlsZXBhdGgpew0KCQlpZighZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkJcmV0dXJuIGZhbHNlOw0KCQlyZXF1aXJlICJmdW5jdGlvbi5wbEdldEZpbGVJbmZvLnBocCI7DQoJCXJldHVybiAkaW5mbzsNCgl9DQoJDQoJZnVuY3Rpb24gdXBsb2FkX2NoZWNrZmlsZW5hbWUoJGZpbGVuYW1lLCAkZGlyKXsNCgkJLy8gaWYgYSBmaWxlIG9mIHRoYXQgbmFtZSBleGlzdHMsIGFwcGVuZHMgbnVtYmVyIHRvIHRoZSBmaWxlbmFtZQ0KCQkkdG1wZmlsZW5hbWUgPSBzdHJfcmVwbGFjZSgiICIsIl8iLCRmaWxlbmFtZSk7DQoJCSRleHRlbnNpb24gPSBzdHJyY2hyKCR0bXBmaWxlbmFtZSwgIi4iKTsNCgkJJGNsZWFuZmlsZW5hbWUgPSBzdHJfcmVwbGFjZSgkZXh0ZW5zaW9uLCAiIiwgJHRtcGZpbGVuYW1lKTsNCg0KCQkkZGVzdGRpciA9ICRkaXIuJHRtcGZpbGVuYW1lOw0KCQkkaSA9IDE7DQoJCXdoaWxlKGZpbGVfZXhpc3RzKCRkZXN0ZGlyKSl7DQoJCQkkdG1wZmlsZW5hbWUgPSAkY2xlYW5maWxlbmFtZS4iXyIuJGkuJGV4dGVuc2lvbjsNCgkJCSRkZXN0ZGlyID0gJGRpci4kdG1wZmlsZW5hbWU7DQoJCQkkaSsrOw0KCQl9DQoJCXJldHVybiAkdG1wZmlsZW5hbWU7DQoJfQ0KCQ0KCWZ1bmN0aW9uIHBsVXBsb2FkRmlsZSgkZmlsZSwgJGRlc3RpbmF0aW9uPSIiLCAkcmVzaXplPWZhbHNlLCAkY3JvcD1mYWxzZSl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJJGRpciA9ICRnQ21zLT5jb25maWdbInVwbG9hZHNfcGF0aCJdLnN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iKTsNCgkJDQoJCSRmaWxlbmFtZSA9ICR0aGlzLT51cGxvYWRfY2hlY2tmaWxlbmFtZSgkZmlsZVsibmFtZSJdLCRkaXIpOw0KCQkNCgkJaWYgKGNtc19tb3ZlX3VwbG9hZGVkX2ZpbGUoJGZpbGVbInRtcF9uYW1lIl0sICRkaXIuJGZpbGVuYW1lKSkgew0KCQkJaWYoJHJlc2l6ZSAmJiAhaXNfYXJyYXkoJHJlc2l6ZSkpCSRyZXNpemUgPSBleHBsb2RlKCJ4IiwkcmVzaXplKTsNCgkJCWlmKCRyZXNpemUgJiYgY291bnQoJHJlc2l6ZSkgPT0gMikgJHRoaXMtPnBsUmVzaXplKCRkaXIuJGZpbGVuYW1lLCAnJywgJHJlc2l6ZVswXSwgJHJlc2l6ZVsxXSx0cnVlLCRjcm9wKTsNCgkJCXJldHVybiBzdHJfcmVwbGFjZSgiLy8iLCIvIiwiLyIuJGRlc3RpbmF0aW9uLiIvIi4kZmlsZW5hbWUpOw0KCQl9ZWxzZXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCgkNCglmdW5jdGlvbiBwbEFzc2lnbkZpbGUoJGZpbGVwYXRoLCAkdGFibGUsICRpdGVtaWQsICRmaWVsZCwgJHRodW1ic2l6ZT1mYWxzZSwgJGNyb3B0aHVtYj1mYWxzZSl7DQoJCSR0YWJsZW5hbWUgPSBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV8nLiR0YWJsZTsNCgkJJGZpbGVwYXRoID0gc3RyX3JlcGxhY2UoIi8vIiwiLyIsJGZpbGVwYXRoKTsNCg0KCQlpZigkdGh1bWJzaXplICYmICFpc19hcnJheSgkdGh1bWJzaXplKSkJJHRodW1ic2l6ZSA9IGV4cGxvZGUoIngiLCR0aHVtYnNpemUpOw0KCQlpZiggJGZpbGVwYXRoICE9ICIiICYmICR0aHVtYnNpemUgJiYgY291bnQoJHRodW1ic2l6ZSkgPT0yICkgew0KCQkJZ2xvYmFsICRnQ21zOw0KCQkJJGJhc2VwYXRoID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl07DQoJCQkkZXhwbG9kZWQgPSBleHBsb2RlKCIvIiwkZmlsZXBhdGgpOw0KCQkJJGV4cGxvZGVkW2NvdW50KCRleHBsb2RlZCktMV0gPSAicGx0aHVtYl8iLiRleHBsb2RlZFtjb3VudCgkZXhwbG9kZWQpLTFdOw0KCQkJJHRodW1icGF0aCA9IGltcGxvZGUoIi8iLCRleHBsb2RlZCk7DQoJCQkkdGhpcy0+cGxSZXNpemUoJGJhc2VwYXRoLiIvIi4kZmlsZXBhdGgsICRiYXNlcGF0aC4iLyIuJHRodW1icGF0aCwgJHRodW1ic2l6ZVswXSwgJHRodW1ic2l6ZVsxXSwgdHJ1ZSwgJGNyb3B0aHVtYik7DQoJCX0NCg0KCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsNCg0KCQlpZiggJHRhYmxlID09ICR0aGlzLT5HZXROYW1lKCkuIl9tdWx0aXBsZWZpbGVzZmllbGRzIiApIHsNCgkJCSRuZXdpZCA9ICRkYi0+R2VuSUQoJHRhYmxlbmFtZS4iX3NlcSIpOw0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICR0YWJsZW5hbWUgU0VUIGZpbGVpZD0/LCBpdGVtaWQ9PywgZmllbGRuYW1lPT8sIGZpbGVwYXRoPT8iOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCRuZXdpZCwgJGl0ZW1pZCwgJGZpZWxkLCAkZmlsZXBhdGgpICk7DQoJCX1lbHNlew0KCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCAkZmllbGQ9PyBXSEVSRSBpZD0/IExJTUlUIDEiOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZmlsZXBhdGgsJGl0ZW1pZCkpOw0KCQl9DQoJCQ0KCQlyZXR1cm4gJGRicmVzdWx0Ow0KCX0NCglmdW5jdGlvbiBnZXRGaWxlQ29udGVudCgkZmlsZW5hbWUpew0KCQkvLyByZXR1cm5zIHRoZSBjb250ZW50IG9mIGEgZmlsZQ0KCQkkZmlsZXBhdGggPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZTsNCgkJaWYoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSl7DQoJCQkkZmhhbmRsZSA9IGZvcGVuKCRmaWxlcGF0aCwgInIrIik7DQoJCQkkY29udGVudCA9IGZyZWFkKCRmaGFuZGxlLCBmaWxlc2l6ZSgkZmlsZXBhdGgpKTsNCgkJCXJldHVybiAkY29udGVudDsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9DQoNCn0NCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/avplayer_auto_export.dna</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YToyOntzOjU6ImluZm9zIjthOjE0OntzOjQ6Im5hbWUiO3M6ODoiYXZwbGF5ZXIiO3M6MTI6ImZyaWVuZGx5bmFtZSI7czo4OiJBVlBsYXllciI7czoxMToiZGVzY3JpcHRpb24iO3M6MTY6IlBsYXllciBmcm9udCBlbmQiO3M6ODoibmJsZXZlbHMiO3M6MToiMiI7czoxMjoibmFtZW9mbW9kdWxlIjtzOjg6ImF2cGxheWVyIjtzOjEzOiJ0ZW1wbGF0ZWxldmVsIjtzOjE6IjAiO3M6OToiZG91cGdyYWRlIjtiOjA7czoxNDoidXBncmFkZXF1ZXJpZXMiO2E6MDp7fXM6MTM6Im1vZGlmaWNhdGlvbnMiO2E6MDp7fXM6NzoidmVyc2lvbiI7czozOiIxLjMiO3M6MTE6ImRlbGV0ZWZpbGVzIjtiOjA7czoxMzoiZWRpdGFibGVhbGlhcyI7YjowO3M6NzoiZG9mZWFkZCI7czoxOiIxIjtzOjk6ImxhbmdmaWxlcyI7YToxOntpOjA7czo5OiJlbl9VUy5waHAiO319czo2OiJsZXZlbHMiO2E6Mjp7aTowO2E6MTA6e2k6MDtzOjY6InBsYXllciI7aToxO3M6MToiQSI7aToyO3M6MToiMCI7aTozO3M6MToiNiI7aTo2O3M6MToiMSI7aTo3O3M6MToiMCI7aTo4O3M6MToiMSI7aTo0O2E6Njp7aTowO2E6ODp7aTowO3M6ODoibG9jYXRpb24iO2k6NztzOjg6IkxvY2F0aW9uIjtpOjE7czoxOiI0IjtpOjI7czoxOiIxIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX1pOjE7YTo4OntpOjA7czo1OiJ3aWR0aCI7aTo3O3M6NToiV2lkdGgiO2k6MTtzOjE6IjEiO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fWk6MjthOjg6e2k6MDtzOjY6ImhlaWdodCI7aTo3O3M6NjoiSGVpZ2h0IjtpOjE7czoxOiIxIjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX1pOjM7YTo4OntpOjA7czoxMDoicGFyYW1ldGVycyI7aTo3O3M6MTA6IlBhcmFtZXRlcnMiO2k6MTtzOjE6IjQiO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fWk6NDthOjg6e2k6MDtzOjEyOiJ1c2VyZGVmaW5lZDEiO2k6NztzOjEzOiJVc2VyRGVmaW5lZCAxIjtpOjE7czoxOiI3IjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX1pOjU7YTo4OntpOjA7czoxMDoicGxheWVydHlwZSI7aTo3O3M6MTE6IlBsYXllciBUeXBlIjtpOjE7czoxOiI2IjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjc6Im1wMyxmbHYiO3M6ODoibGlzdG1vZGUiO3M6MToiMSI7czo4OiJ1cGZvbGRlciI7czowOiIiO3M6NToidGh1bWIiO3M6MDoiIjtzOjQ6InNpemUiO3M6MDoiIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319fWk6NTtzOjIxOiJuYW1lLGFjdGl2ZSxtb3ZlbGlua3MiO2k6OTthOjI6e2k6MDtzOjY6IlBsYXllciI7aToxO3M6NjoiUGxheWVyIjt9fWk6MTthOjEwOntpOjA7czo5OiJtZWRpYWZpbGUiO2k6MTtzOjE6IkIiO2k6MjtpOjA7aTozO3M6MToiMyI7aTo2O3M6MToiMSI7aTo3O3M6MToiMCI7aTo4O3M6MToiMSI7aTo0O2E6Mzp7aTowO2E6ODp7aTowO3M6OToibWVkaWFmaWxlIjtpOjc7czo5OiJNZWRpYWZpbGUiO2k6MTtzOjE6IjkiO2k6MjtzOjE6IjEiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6NToibWVkaWEiO3M6NToidGh1bWIiO3M6MDoiIjtzOjQ6InNpemUiO3M6MDoiIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319aToxO2E6ODp7aTowO3M6NzoicGljdHVyZSI7aTo3O3M6OToiVGh1bWJuYWlsIjtpOjE7czoxOiI4IjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czo3OiIxMjB4MTAwIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319aToyO2E6ODp7aTowO3M6MTI6InVzZXJkZWZpbmVkMiI7aTo3O3M6MTM6IlVzZXJEZWZpbmVkIDIiO2k6MTtzOjE6IjciO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fX1pOjU7czozMToibmFtZSxhY3RpdmUsaXNkZWZhdWx0LG1vdmVsaW5rcyI7aTo5O2E6Mjp7aTowO3M6OToiTWVkaWFmaWxlIjtpOjE7czo1OiJNZWRpYSI7fX19fQ==]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/faq.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkNUTE1vZHVsZU1ha2VyIEZBUTwvdGl0bGU+CQoJPHN0eWxlPgoJCWEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCQlhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCQlkaXYucWRpdiB7IG1hcmdpbjogMjVweCAyNXB4IDgwcHggMjVweDsgfQoJCWgxIHsKCQkJdGV4dC1hbGlnbjogcmlnaHQ7CgkJCW1hcmdpbi1ib3R0b206IDA7CgkJfQoJCWRpdiNub3RpY2UgewoJCQl0ZXh0LWFsaWduOiByaWdodDsKCQl9CgkJI21lbnUgewoJCQlmb250LWZhbWlseTogVmVyZGFuYTsKCQkJcGFkZGluZzogMjVweCAwIDI1cHggNzVweDsKCQkJZm9udC13ZWlnaHQ6IGJvbGQ7CgkJfQoJCSNtZW51IGxpIHsKCQkJbWFyZ2luOiAycHg7CgkJfQoJCWRpdi5hbnN3ZXIgewoJCQliYWNrZ3JvdW5kLWNvbG9yIDogI2UxZWNmZTsKCQkJcGFkZGluZzogMTBweDsKCQkJYm9yZGVyOiAxcHggc29saWQgRGFya2JsdWU7CgkJCWJvcmRlci10b3A6IG5vbmU7CgkJfQoJCWRpdi5xdWVzdGlvbiB7IAoJCQlmb250LXdlaWdodDogYm9sZDsKCQkJYmFja2dyb3VuZC1jb2xvciA6ICNhNGM1ZmY7CgkJCXBhZGRpbmc6IDEwcHg7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtibHVlOwoJCQlib3JkZXItYm90dG9tOiBub25lOwoJCX0KCQkuY29kZSB7CgkJCWRpc3BsYXk6IGJsb2NrOwoJCQliYWNrZ3JvdW5kLWNvbG9yOiBMaWdodEdyZXk7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtHcmV5OwoJCQlwYWRkaW5nOiA1cHg7CgkJCW1hcmdpbjogMTBweDsKCQl9CgkJCgkJCQoJPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGgxPkNUTE1vZHVsZU1ha2VyIEZBUTwvaDE+CjxkaXYgaWQ9Im5vdGljZSI+Q292ZXJzIHRoZSBjcmVhdGVkIG1vZHVsZXMsIG5vdCBDVExNb2R1bGVNYWtlciBpdHNlbGYuLi48YnIvPmNsaWNrIDxhIGhyZWY9ImhlbHAuaHRtbCI+aGVyZTwvYT4gZm9yIGhlbHAgYWJvdXQgdGhlIG1vZHVsZSBjcmVhdGlvbi48L2Rpdj4KPHVsIGlkPSJtZW51Ij4KCgk8bGk+PGEgaHJlZj0iI3ExMCI+TW9kaWZ5aW5nIHRoZSBtb2R1bGUgLSB3aGVyZSB0byBzdGFydD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTkiPkNhbiBJIHB1dCA8aT5zbWFydHkgdGFnczwvaT4gaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E1Ij5Ib3cgY2FuIEkgcmV0cmlldmUgPGk+aW1hZ2VzPC9pPiBpbiB0aGUgZGlzcGxheSB0ZW1wbGF0ZXM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMiI+SG93IGNhbiBJIGRpc3BsYXkgdmFsdWVzIGluc2lkZSBhbiA8aT5BcnJheTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNSI+SG93IGNhbiBJIGNoYW5nZSB0aGUgPGk+ZGF0ZXMgZGlzcGxheSBmb3JtYXQ8L2k+PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMTgiPkhvdyBjYW4gSSBmb3JtYXQgdGhlIDxpPnBhZ2UgbWVudTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyMiI+SG93IGNhbiBJIGRpc3BsYXkgYSBsaXN0IG9mIGVsZW1lbnRzIHNvcnRlZCBpbiBhIGNlcnRhaW4gd2F5PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjQiPkhvdyBjYW4gSSBnZXQgdGhlIDxpPm51bWJlciBvZiBlbGVtZW50czwvaT4gaW4gYSBjYXRlZ29yeT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTYiPkknbSB0cnlpbmcgdG8gZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMsIGJ1dCB0aGUgZGV0YWlsIHRlbXBsYXRlIGlzIHVzZWQgaW5zdGVhZC4gV2hhdCdzIGdvaW5nIG9uPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjMiPkFkbWluIHBhbmVsIGJyZWFrcyB3aGVuIEkgYWRkIGFuIGltYWdlIHRvIGFuIGl0ZW0uIFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTIxIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMSI+V2FybmluZzogbW9kdWxlIDxpPiJpcyBub3QgcHJvcGVybHkgY2xlYW5pbmcgaW5wdXQgcGFyYW1zLiI8L2k+IFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTEzIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW5mb3JtYXRpb25zIGFib3V0IGFuIG9iamVjdCBvdGhlciB0aGFuIHRoZSBvbmUgSSdtIHdhdGNoaW5nPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMSI+Q2FuIEkgY2hhbmdlIHRoZSBmaWVsZCBpbnB1dHMgdGhhdCBhcmUgZGlzcGxheWVkIGluIHRoZSBtb2R1bGUncyA8aT5zZWFyY2ggZm9ybTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E0Ij5DYW4gSSBjaGFuZ2UgdGhlIDxpPmVkaXQgZm9ybTwvaT4gZm9yIGEgbGV2ZWw/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNyI+SG93IGNhbiBJIGFkZCBhIDxpPmNvbmRpdGlvbjwvaT4gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E3Ij5Ib3cgYXJlIHRoZSA8aT5kZWZhdWx0YWRtaW4gcGFuZWxzPC9pPiBnZW5lcmF0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyIj5Db3VsZCBJIHNob3cgdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gaW4sIHNheSwgdGhlIHBhZ2UncyA8PC8+dGl0bGU+IHRhZz88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE2Ij5Ib3cgY2FuIEkgYWRkIG1vZHVsZSBlbGVtZW50cyB0byBteSA8aT5nb29nbGUgc2l0ZW1hcDwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExOSI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjAiPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTMiPkNhbiBJIGNoYW5nZSBob3cgdGhlIDxpPnByZXR0eSB1cmxzPC9pPiBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTgiPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE0Ij5XaGF0J3Mgd2l0aCB0aGlzIGdldF9tb2R1bGVHZXRWYXJzKCkgZnVuY3Rpb24/PC9hPjwvbGk+CgkKPC91bD4KCjxkaXYgaWQ9InF1ZXN0aW9ucyI+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTAiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Nb2RpZnlpbmcgdGhlIG1vZHVsZSAtIHdoZXJlIHRvIHN0YXJ0PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+VG8gZ2V0IHlvdSBzdGFydGVkLCBoZXJlJ3MgYSBiYXNpYyBleHBsYW5hdGlvbiBvZiB0aGUgc3RydWN0dXJlIG9mIHRoZSBjcmVhdGVkIG1vZHVsZS48L3A+CgkJPHA+PGI+VGhlIGxhbmd1YWdlIGZpbGVzPC9iPjwvcD4KCQk8cD5JbiB0aGUgbGFuZy8gZm9sZGVyLCB5b3Ugd2lsbCBmaW5kIG9uZSBmaWxlIGZvciBlYWNoIHN1cHBvcnRlZCBsYW5ndWFnZS4gSW5zaWRlIGVhY2ggZmlsZSwgeW91IHNob3VsZCBoYXZlIHNldmVyYWwgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+JGxhbmdbInBvc3RpbnN0YWxsIl0gPSAiTW9kdWxlIHN1Y2Nlc3NmdWxseSBhZGRlZC4iOzwvcHJlPgoJCTxwPlRoaXMgbGluZSBkZWZpbmVzIGEgc3RyaW5nIHJlZmVycmVkIHRvIGFzICJwb3N0aW5zdGFsbCIuIEluIGV2ZXJ5IGxhbmd1YWdlIGZpbGUsIHRoZXJlIHNob3VsZCBiZSBhIHN0cmluZyBmb3IgdGhpcyBrZXkuIFdoZW4gdGhlIG1vZHVsZXMgd2lzaGVzIHRvIGRpc3BsYXkgc29tZSB0ZXh0LCBpdCB3aWxsIGxvb2sgZm9yIHRoZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUga2V5IGluIHRoZSBsYW5ndWFnZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVzZXIncyBsYW5ndWFnZS4gWW91IHdpbGwgbW9zdCBsaWtlbHkgd2lzaCB0byBjaGFuZ2UgdGhlc2UgZmlsZXMsIGJ1dCBiZSBjYXJlZnVsLiBFYWNoIHN0cmluZyBpcyBkZWxpbWl0ZWQgd2l0aCBxdW90ZXMgKGVpdGhlciAnIG9yICIpLCBhbmQgb2J2aW91c2x5IHlvdSBjYW4ndCB1c2UgdGhlc2UgZGVsaW1pdGVycyBpbnNpZGUgdGhlIHN0cmluZy4gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSdsbCBoYXZlIHRvIHVzZSBhbiBlc2NhcGUgc2lnbiA6IFwiIHdpbGwgZGlzcGxheSBhIHF1b3RlIHdpdGhvdXQgYmVpbmcgY29uc2lkZXJlZCBhcyBhIGRlbGltaXRlci48L3A+CgkJPHA+PGI+VGhlIHRlbXBsYXRlczwvYj48L3A+CgkJPHA+VGhlIGZpbGVzIGluIHRoZSB0ZW1wbGF0ZXMvIGZvbGRlciBjb250YWluIG5vIHBocCAtIGp1c3QgcGxhaW4gaHRtbCBhbmQgc21hcnR5IHRhZ3MuIFRoZXkgYXJlIHVzZWQgZm9yIHRoZSBsYXlvdXQgb2YgbW9zdCBhY3Rpb25zLjxici8+CgkJPHA+PGk+YWRtaW5wYW5lbC50cGw8L2k+IGlzIHRoZSBsYXlvdXQgZm9yIHRoZSBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggbGV2ZWwgaW4gdGhlIGFkbWluIHBhbmVsICh0byBtb2RpZnkgdGhpcywgc2VlIDxhIGhyZWY9IiNxNyI+dGhpcyB0b3BpYzwvYT4pPGJyLz4KCQk8aT5ub3Jlc3VsdC50cGw8L2k+IGlzIHVzZWQgd2hlbiB0aGVyZSBhcmUgbm8gaXRlbSB0byBkaXNwbGF5LiBUeXBpY2FsbHksIHRoaXMgaXMganVzdCBhIG1lc3NhZ2Ugc2F5aW5nIHRoYXQgbm90aGluZyB3YXMgZm91bmQuPGJyLz4KCQk8aT5zZWFyY2gudHBsPC9pPiBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzaW1wbGUgc2VhcmNoIGZvcm0gKHdoZW4gY2FsbGluZyB0aGUgc2VhcmNoIGFjdGlvbiB3aXRoIHNlYXJjaG1vZGU9InNpbXBsZSIpLCB3aGljaCBzZWFyY2hlcyBpbiBhbGwgbGV2ZWxzLjxici8+CgkJPGk+c2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbDwvaT4gaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIHJlc3VsdHMgd2hlbiB5b3UgYXJlIHNlYXJjaGluZyBpbiBtb3JlIHRoYW4gb25lIGxldmVsIChvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGxpc3QgdGVtcGxhdGUgZm9yIHRoYXQgbGV2ZWwgaXMgdXNlZCkuPGJyLz4KCQk8aT5icm93c2VmaWxlcy50cGw8L2k+IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciB0aGUgZmlsZSBzZWxlY3Rpb24gcGFnZSAod2hlbiB1c2luZyB0YWJsZSBkaXNwbGF5KS48YnIvPgoJCUZvciBlYWNoIGxldmVsLCB5b3Ugc2hvdWxkIGhhdmUgYSA8aT5lZGl0TEVWRUxQUkVGSVgudHBsPC9pPiwgYSA8aT5zZWFyY2hfTEVWRUxOQU1FLnRwbDwvaT4gYW5kIHBvc3NpYmx5IGEgPGk+ZnJvbnRlbmRfYWRkX0xFVkVMUFJFRklYLnRwbDwvaT4uIFRoZSBmaXJzdCBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBhZG1pbiBmb3JtLCB3aGVuIGFuIGl0ZW0gb2YgdGhpcyBsZXZlbCBpcyBhZGRlZCBvciBlZGl0ZWQuIFRoZSBzZWNvbmQgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0uIFRoZSBsYXN0IGlzIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGZyb250ZW5kIGFkZCBhY3Rpb24gZm9yIHRoaXMgbGV2ZWwgKGlmIHlvdSBjaG9zZSB0byBjcmVhdGUgb25lKS48L3A+CgkJPHA+PGI+VGhlIGFjdGlvbiBmaWxlczwvYj48L3A+CgkJPHA+SW4gdGhlIHJvb3Qgb2YgdGhlIG1vZHVsZSBmb2xkZXJzLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCBmaWxlcyBoYXZlIGEgcHJlZml4IChlaXRoZXIgImFjdGlvbiIgb3IgIm1ldGhvZCIpLCBleGNlcHQgZm9yIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIHdoaWNoIGNvbnRhaW5zIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0cyBvZiB0aGUgY29kZS4gTWV0aG9kcyBhcmUgY2FsbGVkIHdoZW4gdGhlIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHVuaW5zdGFsbGVkLCBvciB1cGdyYWRlZCAtIGFuZCBhdCBubyBvdGhlciBtb21lbnQuIEFjdGlvbnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgY21zIGFza3MgdGhlIG1vZHVsZSB0byBkbyBzb21ldGhpbmcgLSBlaXRoZXIgaW4gdGhlIGZyb250ZW5kIG9yIHRoZSBhZG1pbi4gQnV0IHRoZSBtb2R1bGUgaGFzIG1vcmUgYWN0aW9ucyB0aGFuIHRoZSBmaWxlcyB5b3Ugc2VlIHRoZXJlLiBPcGVuIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIGFuZCBsb29rIGZvciB0aGUgZnVuY3Rpb24gPGI+RG9BY3Rpb248L2I+IChzaG91bGQgYmUgYXJvdW5kIHRoZSA0MDB0aCBsaW5lKS4gWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CWZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkPS0xKXsKCQlnbG9iYWwgJGdDbXM7CgkJc3dpdGNoKCRhY3Rpb24pewoJCQljYXNlICJsaW5rIjoKCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCJkZWZhdWx0IiwkcmV0dXJuaWQsIiIsJHBhcmFtcywiIix0cnVlKTsKCQkJCWJyZWFrOwoJCQljYXNlICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiOgoJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkgICAgaWYoJGtleSAhPSAic3VibWl0IikJICAgJHRoaXMtPnNldFByZWZlcmVuY2UoJGtleSwgJHZhbHVlKTsKCQkJCX0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiJtZXNzYWdlX21vZGlmaWVkIikpOwoJCQkJYnJlYWs7CgkJCWNhc2UgImRlbGV0ZXRwbCI6CgkJCQkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4idGVtcGxhdGVzIik7CgkJCQkkZGVmdGVtcGxhdGVzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsKCQkJICAgIGlmKGlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgJiYgIWluX2FycmF5KCRwYXJhbXNbInRwbG5hbWUiXSwgJGRlZnRlbXBsYXRlcykpewoJCQkJICAgIGlmKCR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyJ0cGxuYW1lIl0pKQkgICAkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZT4iXSA9ICR0aGlzLT5sYW5nKCJtZXNzYWdlX21vZGlmaWVkIik7CgkJCQl9CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsKCQkJCWJyZWFrOzwvcHJlPgoJCTxwPmFuZCBzbyBvbi4uLjxici8+CgkJU29tZSBhY3Rpb25zIChtb3N0bHkgYmVjYXVzZSB0aGV5IGFyZSBzbWFsbCkgZG9uJ3QgaGF2ZSB0aGVpciBvd24gZmlsZS4gRWFjaCAiY2FzZSIsIGhlcmUsIGlzIHN1Y2ggYW4gYWN0aW9uLiBXaGVuIGFza2VkIGZvciBhbiBhY3Rpb24gdGhhdCBpcyBub3QgaW4gdGhlIGxpc3QsIHRoZSBtb2R1bGUgd2lsbCBsb29rIGZvciB0aGUgYWNjb3JkaW5nIGZpbGUgKGFjdGlvbi5BQ1RJT05OQU1FLnBocCkuPC9wPgoJCTxwPlNvIGhlcmUncyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBhY3Rpb25zIHlvdSBtaWdodCBub3RpY2UgaW4geW91ciBtb2R1bGU6CgkJPHVsPgoJCTxsaT48aT5saW5rPC9pPjogdGhlIGZyb250ZW5kICJsaW5rIiBhY3Rpb24sIHdoaWNoIGNyZWF0ZXMgYSBsaW5rIHRvIGFub3RoZXIgYWN0aW9uPC9saT4KCQk8bGk+PGk+ZGVmYXVsdDwvaT46IHRoZSBmcm9udGVuZCBkZWZhdWx0IGFjdGlvbiwgd2hpY2ggZGlzcGxheXMgZWxlbWVudHMgb3IgbGlzdCBvZiBlbGVtZW50czwvbGk+CgkJPGxpPjxpPnNlYXJjaDwvaT46IHRoZSBmcm9udGVuZCAic2VhcmNoIiBhY3Rpb24sIHdoaWNoIGRpc3BsYXlzIHRoZSBzZWFyY2ggZm9ybSBhbmQgc2VhcmNoIHJlc3VsdHM8L2xpPgoJCTxsaT48aT5mcm9udGVuZF9lZGl0PC9pPjogdGhlIGZyb250ZW5kIGFjdGlvbiB0byBhZGQvZWRpdCBlbGVtZW50cyAoYnJlYWtzIGludG8gRkVhZGRfKiBhY3Rpb25zKTwvbGk+CgkJPGxpPjxpPmRlZmF1bHRhZG1pbjwvaT46IHRoZSBhY3Rpb24gZm9yIHRoZSBhZG1pbiBwYW5lbCB3aGljaCBkaXNwbGF5cyB0aGUgbGlzdCBvZiBsZXZlbHMsIGVsZW1lbnRzLCB0ZW1wbGF0ZXMgYW5kIHNvIG9uPC9saT4KCQk8bGk+PGk+ZWRpdFRlbXBsYXRlPC9pPjogd2hlbiBhIG1vZHVsZSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L2xpPgoJCTxsaT48aT5kZWxldGV0cGw8L2k+OiB3aGVuIGEgbW9kdWxlIHRlbXBsYXRlIGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5hZGRfb3B0aW9udmFsdWU8L2k+LDxpPnJlbmFtZV9vcHRpb252YWx1ZTwvaT4sPGk+bW92ZV9vcHRpb252YWx1ZTwvaT4gYW5kIDxpPmRlbGV0ZV9vcHRpb252YWx1ZTwvaT4gbWFuYWdlIHRoZSBvcHRpb25zIGZvciB0aGUgZHluYW1pYyBsaXN0IGZpZWxkczwvbGk+CgkJPGxpPjxpPmVkaXRMRVZFTFBSRUZJWDwvaT46IGZvciBlYWNoIGxldmVsLCB0aGUgYWN0aW9uIHRvIGFkZCBvciBlZGl0IGFuIGVsZW1lbnQgb2YgdGhlIGxldmVsPC9saT4KCQk8bGk+PGk+dG9nZ2xlPC9pPjogdXNlZCB3aGVuIGEgbGluayBpbiB0aGUgYWRtaW5wYW5lbCBpcyBjbGlja2VkIHRvIGNoYW5nZSB0aGUgImFjdGl2ZSIgb3IgImRlZmF1bHQiIHZhbHVlIG9mIGFuIGVsZW1lbnQ8L2xpPgoJCTxsaT48aT5tb3Zlc29tZXRoaW5nPC9pPjogdXNlZCB3aGVuIHRoZSBvcmRlciBvZiBlbGVtZW50cyBpcyBjaGFuZ2VkIGluIHRoZSBhZG1pbiBwYW5lbCwgb3Igd2hlbiBhbiBlbGVtZW50IGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5icm93c2VmaWxlczwvaT46IHVzZWQgd2hlbiB5b3Ugc2VsZWN0IGEgZmlsZSBmb3IgYW4gZWxlbWVudC4gSXQgZGlzcGxheXMgYSBsaXN0IG9mIHRoZSBjdXJyZW50IGZpbGVzIGFuZCB0aGUgdXBsb2FkIGZvcm0uPC9saT4KCQk8bGk+PGk+YWRkZmlsZXM8L2k+OiB1c2VkIHdoZW4gbmV3IGZpbGUocykgaXMoYXJlKSB1cGxvYWRlZC4gVGhpcyBhY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGJyb3dzZWZpbGVzIGFjdGlvbiAoaW1hZ2VzIGFyZSByZXNpemVkIGhlcmUpLjwvbGk+CgkJPGxpPjxpPmFzc2lnbmZpbGU8L2k+OiBhc3NpZ25zIGFuIGV4aXN0aW5nIGZpbGUgdG8gdGhlIGl0ZW0gaW4gdGhlIGRhdGFiYXNlPC9saT4KCQk8L3VsPgoJCTxwPjxiPlRoZSBmdW5jdGlvbnM8L2I+PC9wPgoJCTxwPkFzaWRlIGZyb20gRG9BY3Rpb24sIHRoZSBtb2R1bGUgZmlsZSBjb250YWlucyBhIGxvdCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCBpbiBhbnkgYWN0aW9uLiBNb3N0IG9mIHRoZW0gYXJlIHNpbXBseSBwcm9jZWR1cmVzIHRoYXQgdGhlIG1vZHVsZSBuZWVkcyB0byBkbyBxdWl0ZSBvZnRlbi4gSSd2ZSB0cmllZCB0byBjb21tZW50IHRoZW0gYXQgbGVhc3QgdG8gc2F5IHdoYXQgdGhleSdyZSB0aGVyZSBmb3IsIGJ1dCBoZXJlIEknbGwgdHJ5IHRvIGRlc2NyaWJlIHNvbWUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IG9uZXMuPC9wPgoJCTx1bD4KCQk8bGk+VGhlIDxpPkJ1aWxkUHJldHR5VXJscygpPC9pPiBhbmQgPGk+U2V0UGFyYW1ldGVycygpPC9pPiBmdW5jdGlvbnMgY29udHJvbCBhcmUgbW9zdGx5IHVzZWQgZm9yIHByZXR0eSB1cmxzIChtb3JlIGluZm9ybWF0aW9ucyA8YSBocmVmPSIjcTMiPmhlcmU8L2E+KTwvbGk+CgkJPGxpPlRoZSA8aT5nZXRfbW9kdWxlR2V0VmFycygpPC9pPiBpcyB1c2VkIHRvIHJldHJpZXZlIGluZm9ybWF0aW9ucyBmcm9tIHRoZSB1cmwgYWJvdXQgb3RoZXIgY2FsbHMgb2YgdGhlIG1vZHVsZS4gSW4gbW9zdCBjYXNlcywgdGhpcyBpcyB3aGF0IHByb3ZpZGVzIHRoZSAkaXRlbS0+aXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9mIGl0ZW1zLjwvbGk+CgkJPGxpPlRoZSA8aT5wbFJlc2l6ZSgpPC9pPiBmdW5jdGlvbiAobG9jYXRlZCBpbiBmdW5jdGlvbi5wbHJlc2l6ZS5waHApIGlzIHVzZWQgdG8gcmVzaXplIGltYWdlcyBhbmQgY3JlYXRlIHRodW1ibmFpbHM8L2xpPgoJCTxsaT5Gb3IgZWFjaCBsZXZlbCwgeW91IHdpbGwgaGF2ZSBhIDxpPmdldF9sZXZlbF9OQU1FT0ZMRVZFTCgpPC9pPi4gVGhlcmUgYXJlIGFtb25nIHRoZSBtb3N0IGltcG9ydGFudCwgYXMgdGhleSBhcmUgY2FsbCBldmVyeXRoaW5nIGFuIGVsZW1lbnQgKG9yIGxpc3Qgb2YgZWxlbWVudHMpIGlzIHJlcXVlc3RlZC4gSXQgd2lsbCBiZSBleHBsYWluZWQgYmVsb3cuPC9saT4KCQk8bGk+VGhlIDxpPmFkZGFkbWlubGlua3MoKTwvaT4gZnVuY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGFkbWluIHBhbmVsIGFuZCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYSA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24uIEl0IHRha2VzIGV2ZXJ5IGl0ZW0gYW5kIGFkZCBsaW5rcyB0byBlZGl0LCBtb3ZlLCBkZWxldGUgdGhlIGl0ZW0gYW5kIHNvIG9uLjwvbGk+CgkJPC91bD4KCQk8cD48Yj5UaGUgZ2V0X2xldmVsIGZ1bmN0aW9uczwvYj48L3A+CgkJPHA+RWFjaCA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24gcXVlcmllcyBlbGVtZW50cyBmcm9tIHRoZSBkYXRhYmFzZSwgY3JlYXRlcyBhbiBvYmplY3QgZm9yIGVhY2gsIGFuZCByZXR1cm4gYW4gYXJyYXkgb2YgdGhlc2Ugb2JqZWN0cyAoYmFzaWNhbGx5LCB0aGUgJGl0ZW1saXN0IHlvdSdyZSB1c2luZyBpbiB0ZW1wbGF0ZXMpLjxici8+CgkJVGhlIGZ1bmN0aW9uIGFjY2VwdHMgc2V2ZXJhbCBwYXJhbWV0ZXJzLCB3aGljaCBJJ2xsIGV4bGFpbiBoZXJlOjwvcD4KCQk8dWw+CgkJPGxpPjxpPiR3aGVyZTwvaT4gaXMgYW4gYXJyYXkgb2YgY29uZGl0aW9ucywgaW4gdGhlIGZvcm0gJGZpZWxkPT4kdmFsdWUuIEZvciBleGFtcGxlLCA8Y29kZT4kd2hlcmU9YXJyYXkoImFjdGl2ZSI9PjEpPC9jb2RlPiB3b3VsZCBtZWFuIHRoYXQgb25seSB0aGUgaXRlbXMgd2VyZSB0aGUgImFjdGl2ZSIgZmllbGQgaXMgZXF1YWwgdG8gMSBhcmUgcXVlcmllZC48L2xpPgoJCTxsaT48aT4kYWRtaW48L2k+IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGFkZGFkbWlubGlua3MoKSBqdXN0IGRpc2N1c3NlZCBzaG91bGQgYmUgY2FsbGVkLiBJZiBpdCBpcywgdGhlICRpZCBhbmQgJHJldHVybmlkIHBhcmFtZXRlcnMgYXJlIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlIHRoZXkgYXJlbid0LjwvbGk+CgkJPGxpPjxpPiRvcmRlcjwvaT4gY29udHJvbHMgdGhlIHdheSB0aGUgbGlzdCBvZiBlbGVtZW50cyBzaG91bGQgYmUgb3JkZXJlZC4gUG9zc2libGUgdmFsdWVzIGFyZSAibW9kaWZpZWQiLCAiY3JlYXRlZCIsICJuYW1lIiBvciBmYWxzZSAoaW4gd2hpY2ggY2FzZSB0aGUgaXRlbSBvcmRlciBkZWZpbmVkIGluIHRoZSBhZG1pbiBwYW5lbCBpcyB1c2VkKTwvbGk+CgkJPGxpPjxpPiRsaW1pdDwvaT4gY29udHJvbHMgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkPC9saT4KCQk8bGk+PGk+JGN1c3RvbXdoZXJlPC9pPiBhbmQgPGk+JGN1c3RvbXZhbHVlczwvaT4gYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlICR3aGVyZSBwYXJhbWV0ZXIuIFdoZW4geW91IHdhbnQgdG8gY3JlYXRlIGEgcXVlcnkgbW9yZSBjb21wbGljYXRlZCB0aGFuIHRoZSAkd2hlcmUgcGFyYW1ldGVyIGFsbG93cywgeW91IGNhbiBwcm92aWRlIHRoZSBzdHJpbmcgcXVlcnkgaW4gJGN1c3RvbXdoZXJlIGFuZCB0aGUgYXJyYXkgb2YgdmFsdWVzIGluICRjdXN0b212YWx1ZXMuPC9saT4KCQk8L3VsPgoJCTxwPkhvcGUgdGhpcyBnZXRzIHlvdSBnb2luZy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9uLCBvciB3aXNoIHRvIHNoYXJlIHRoZSBtb2RpZmljYXRpb25zIHlvdSd2ZSBkb25lLCBmZWVsIHRvIGNvbnRhY3QgbWUsIGVpdGhlciBhdCB0aGUgZm9yZ2Ugb3Igb24gdGhlIGZvcnVtLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTkiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBwdXQgc21hcnR5IHRhZ3MgaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5ZZXMuPC9wPgoJCTxwPkxldCdzIHNheSB5b3UgaGF2ZSBwcm9kdWN0cyB3aGljaCBoYXZlIGEgZGVzY3JpcHRpb24gZmllbGQsIGFuZCBpbiB0aGF0IGRlc2NyaXB0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIHB1dCBzb21lIHNtYXJ0eSBjb2RlLiBJZiB5b3UgdHJ5IGFuZCBwdXQsIHNheSwge3RpdGxlfSBpbiBhbiBhdHRlbXB0IHRvIGRpc3BsYXkgdGhlIHBhZ2UgdGl0bGUsIHlvdSBzaG91bGQgbm90aWNlIHRoYXQgInt0aXRsZX0iIHdpbGwgYmUgZGlzcGxheWVkIGV4YWN0bHkgbGlrZSB0aGF0IGluIHRoZSBwcm9kdWN0J3MgZGVzY3JpcHRpb24uIFRoYXQgaXMgYmVjYXVzZSBpdGVtcycgZmllbGRzIGFyZW4ndCBldmFsdWF0ZWQuPC9wPgoJCTxwPkhvd2V2ZXIsIGluIHlvdXIgdGVtcGxhdGUsIHlvdSBtYXkgY2hvb3NlIHRvIGV2YWx1YXRlIHRoZSBmaWVsZHMuIEZvciBleGFtcGxlLCBpbiB5b3VyIHRlbXBsYXRlLCBpZiBpbnN0ZWFkIG9mIHRoZSBzaW1wbGUgPGNvZGU+eyRpdGVtLT5kZXNjcmlwdGlvbn08L2NvZGU+IHlvdSB3cml0ZTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2V2YWwgdmFyPSRpdGVtLT5kZXNjcmlwdGlvbn08L3ByZT4KCQk8cD5Zb3Ugd2lsbCB0aGVuIG5vdGljZSB0aGF0IHt0aXRsZX0gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIHBhZ2UncyB0aXRsZSBpcyBkaXNwbGF5ZWQuPGJyLz4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW1hZ2VzIGluIHRoZSBkaXNwbGF5IHRlbXBsYXRlcz88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPllvdSBwdXQgeyRpdGVtLT5pbWFnZWZpZWxkfSBpbiB5b3VyIHRlbXBsYXRlLCBhbmQgdGhlIGltYWdlIGRvZXNuJ3Qgc2hvdyB1cC4uLjwvcD4KCQk8cD5UaGF0J3MgcHJldHR5IG11Y2ggbm9ybWFsLiAkaXRlbS0+aW1hZ2VmaWVsZCBpcyBpdHNlbGYgYW4gb2JqZWN0LCB0aGF0IGhhcyBzZXZlcmFsIGF0dHJpYnV0ZXM6PC9wPgoJCTx1bD4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtmaWxlcGF0aCAocmVsYXRpdmUgdXJsKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7ZXh0ICh0aGUgZmlsZSBleHRlbnNpb24pPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDt1cmwgKGFic29sdXRlIHVybCk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3NpemUgKHNpemUgaW4gYnl0ZXMpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtpbWFnZXNpemUgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3dpZHRoIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ltYWdlIChpbWFnZSB0YWc7IGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3RodW1ibmFpbCAodGh1bWJuYWlsIHVybCwgaWYgYXBwbGljYWJsZSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7bW9kaWZpZWQgKGxhc3QgbW9kaWZpZWQsIGZvcm1hdGVkIHRpbWUpPC9saT4KCQk8L3VsPgoJCTxwPlRvIGRpc3BsYXkgdGhlIGltYWdlLCB5b3UgY2FuIHVzZSB7JGl0ZW0tPmltYWdlZmllbGQtPmltYWdlfSwgb3IgaWYgeW91IHdpc2ggbW9yZSBvcHRpb25zLCB5b3UgY2FuIGNyZWF0ZSB0aGUgaW1hZ2UgdGFnIHlvdXJzZWxmOjxici8+CgkJPHByZSBjbGFzcz0iY29kZSI+PDwvPmltZyBzcmM9InVwbG9hZHMveyRpdGVtLT5pbWFnZWZpZWxkLT5maWxlcGF0aH0iIGFsdD0iIi8+PC9wcmU+PC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTIiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZGlzcGxheSB2YWx1ZXMgaW5zaWRlIGFuIEFycmF5PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+SWYgeW91IGhhdmUgYSBsaXN0IGZpZWxkIHRoYXQgYWxsb3dzIG11bHRpcGxlIGNob2ljZXMgKGNoZWNrYm94ZXMgb3Igc2VsZWN0IGxpc3QpIGFuZCBzaW1wbHkgdXNlIHskaXRlbS0+ZmllbGRuYW1lfSBvciB7JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWV9IGluIHlvdXIgdGVtcGxhdGUsIHlvdSdsbCBwcm9iYWJseSBlbmQgdXAgd2l0aCB0aGlzIGJlaW5nIGRpc3BsYXllZDo8L3A+PHByZSBjbGFzcz0iY29kZSI+QXJyYXk8L3ByZT4KCQk8cD5UaGlzIGlzIG5vcm1hbC4gQXMgdGhlIGZpZWxkIGNvbnRhaW5zIChvciBjYW4gY29udGFpbikgbXVsdGlwbGUgdmFsdWVzLCBpdCBpcyBpbmRlZWQgYW4gYXJyYXkgb2YgdmFsdWVzLiBUbyBnZXQgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLCB5b3UgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcyBpbiBhIHdheSBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPjw8Lz51bD4KCXtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWUgaXRlbT0ib25ldmFsdWUifQoJCTw8Lz5saT57JG9uZXZhbHVlfTw8Lz4vbGk+Cgl7L2ZvcmVhY2h9Cjw8Lz4vdWw+PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgY2hhbmdlIHRoZSA8aT5kYXRlcyBkaXNwbGF5IGZvcm1hdDwvaT4/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5Qb3N0ZWQgQnk6IFNvbHV0aWMgb24gRGF0ZTogMjAwOS0wNS0wNyAxMDozMTxici8+CgkJVXNlOiA8Y29kZT57JGl0ZW0tPnlvdXJWYXJ8ZGF0ZV9mb3JtYXQ6IiVIOiVNIn08L2NvZGU+PC9wPgoJCTxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXIuZGF0ZS5mb3JtYXQucGhwIj5TZWUgdGhlIHNtYXJ0eSBlbnRyeSBhYm91dCBkYXRlIGZvcm1hdCBtb2RpZmllcjwvYT4gb3IgdGhlIG1vc3QgdXNlZnVsIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXJzLnBocCI+c21hcnR5IGxpc3Qgb2YgdmFyaWFibGUgbW9kaWZpZXJzPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTgiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZm9ybWF0IHRoZSBwYWdlIG1lbnU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5UaGUgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHBhZ2VtZW51IGlzIHNwbGl0X2ludG9fcGFnZXMgKGluIG1vZHVsZSBmaWxlKSwgYnV0IHlvdSBzaG91bGQgYmUgYWJsZSB0byBmb3JtYXQgaXQgdGhlIHdheSB5b3UgbGlrZSB3aXRob3V0IG1vZGlmeWluZyB0aGUgZnVuY3Rpb24uPC9wPgoJCTxwPjxiPkNsYXNzZXMgYW5kIENTUzwvYj48YnIvPgoJCVRoZSBwYWdlbWVudSBpcyBpbiBhIGRpdiB3aXRoIGNsYXNzICJwYWdpbmF0aW9uIi4gRWFjaCBwYWdlIG51bWJlciBpcyBhbiBhbmNob3IoPDwvPmE+KSB3aXRoIGNsYXNzICJwYWdlbnVtYmVyIiwgYW5kIHRoZSBjdXJyZW50IHBhZ2UgYWxzbyBoYXMgdGhlIGNsYXNzICJjdXJyZW50Ii4gVGhlICIuLi4iIHNob3duIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHBhZ2VzIGFyZSBzcGFucyB3aXRoIHRoZSBjbGFzcyAicGFnZW1lbnVvdmVyZmxvdyIsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJyb3dzIGFyZSBhbmNob3JzIHJlc3BlY3RpdmVseSB3aXRoIGNsYXNzZXMgInByZXZpb3VzbGluayIgYW5kICJuZXh0bGluayIuPGJyLz4KCQlZb3UgbWF5IHVzZSB0aGVzZSBjbGFzc2VzIHRvIHN0eWxlIHlvdXIgcGFnZSBtZW51LiBZb3UgY2FuIGZpbmQgZXhhbXBsZXMgb2Ygc3R5bGVzIDxhIGhyZWY9Imh0dHA6Ly93d3cubWlzLWFsZ29yaXRtb3MuY29tLzIwMDcvMDMvMTYvc29tZS1zdHlsZXMtZm9yLXlvdXItcGFnaW5hdGlvbi8iIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiAoSSB0cmllZCB0byB1c2UgdGhlIHNhbWUgY2xhc3NlcywgYnV0IGZvciB1bmlmb3JtaXR5IHJlYXNvbnMgSSBkaWRuJ3QgdXNlIHNwYW5zLCBzbyBkb3VibGUtY2hlY2sgdGhlIGNzcykuPC9wPgoJCTxwPjxiPlN0cmluZ3M8L2I+PGJyLz4KCQlUbyBjaGFuZ2UgdGhlIHBhZ2UgZGVsaW1pdGVyICgifCIpIG9yIHRoZSAiLi4uIiwgbG9vayBhdCB0aGUgZmlyc3QgbGluZXMgbGFuZ3VhZ2UgZmlsZXMsIHJlc3BlY3RpdmVseSBhdCB0aGUgZW50cmllcyAicGFnZW1lbnVkZWxpbWl0ZXIiIGFuZCAicGFnZW1lbnVvdmVyZmxvdyIuPGJyLz4KCQlBcyBmb3IgdGhlICZsdDsgYW5kICZndDssIHRoZXkgYXJlIGhhcmQtY29kZWQgaW4gdGhlIGZ1bmN0aW9uIHNwbGl0X2ludG9fcGFnZXMsIGJ1dCBpdCBzaG91bGRuJ3QgYmUgdG9vIGRpZmZpY3VsdCB0byBjaGFuZ2UuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBkaXNwbGF5IGEgbGlzdCBvZiBlbGVtZW50cyBzb3J0ZWQgaW4gYSBjZXJ0YWluIHdheT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPldlIHdpbGwgbG9vayBhdCBob3cgdG8gY3JlYXRlIGEgbGlzdCBvZiBzb3J0ZWQgZWxlbWVudHMgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJCTx1bD4KCQkJPGxpPltTb3J0aW5nIGZpZWxkXTx1bD4KCQkJCTxsaT5bZWxlbWVudF08L2xpPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+W2VsZW1lbnRdPC9saT4KCQkJPC91bD48L2xpPgoJCQk8bGk+W1NvcnRpbmcgZmllbGRdPHVsPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+Li4uPC9saT4KCQkJPC91bD48L2xpPgoJCTwvdWw+CgkJPHA+VGhlIGJhc2ljIGlkZWEgd2lsbCBiZSB0byBvcmRlciBlbGVtZW50cyBieSB0aGUgc29ydGluZyBmaWVsZCwgYW5kIG5vdGljZSB3aGVuIHRoZXJlJ3MgYSBjaGFuZ2UuPC9wPjxici8+CgkJPHA+PGI+T3JkZXIgYnkgcGFyZW50czwvYj48YnIvPgoJCUNyZWF0ZSB0aGUgZm9sbG93aW5nIHRlbXBsYXRlICh3aGljaCBJJ2xsIGNhbGwgIm9yZGVyX2J5X3BhcmVudHMiKTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz51bD4KCQkJe2Fzc2lnbiB2YXI9InBhcmVudGZsYWciIHZhbHVlPWZhbHNlfQoJCQl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQkJCXtpZiAkaXRlbS0+cGFyZW50X25hbWUgIT0gJHBhcmVudGZsYWd9CgkJCQkJe2lmICRwYXJlbnRmbGFnfTw8Lz4vdWw+PDwvPi9saT57L2lmfQoJCQkJCTw8Lz5saT57JGl0ZW0tPnBhcmVudF9uYW1lfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0icGFyZW50ZmxhZyIgdmFsdWU9JGl0ZW0tPnBhcmVudF9uYW1lfQoJCQkJey9pZn0KCQkJCTw8Lz5saT57JGl0ZW0tPm5hbWV9PDwvPi9saT4KCQkJey9mb3JlYWNofQoJCQk8PC8+L3VsPgoJCTwvcHJlPgoJCTxwPmFuZCBjYWxsIGl0IHVzaW5nIHtjbXNfbW9kdWxlIG1vZHVsZT0ibXltb2R1bGUiIHdoYXQ9Iml0ZW0iIGxpc3R0ZW1wbGF0ZT0ib3JkZXJfYnlfcGFyZW50cyJ9PC9wPgoJCTxwPjxiPk9yZGVyIGJ5IGZpZWxkPC9iPjxici8+CgkJTGV0J3Mgc2F5IHlvdXIgbGV2ZWwgaGFzIGEgZHJvcGRvd24gZmllbGQgbmFtZWQgIm15ZmllbGQiLCBhbmQgeW91IHdpc2ggdG8gbGlzdCBlbGVtZW50cyBzb3J0ZWQgb24gdGhhdCBmaWVsZC4gQ3JlYXRlIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUgKHdoaWNoIEknbGwgY2FsbCAib3JkZXJfYnlfbXlmaWVsZCIpOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkJPDwvPnVsPgoJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT1mYWxzZX0KCQkJe2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CgkJCQl7aWYgJGl0ZW0tPm15ZmllbGQgIT0gJGZpZWxkZmxhZ30KCQkJCQl7aWYgJGZpZWxkZmxhZ308PC8+L3VsPjw8Lz4vbGk+ey9pZn0KCQkJCQk8PC8+bGk+eyRpdGVtLT5teWZpZWxkfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT0kaXRlbS0+bXlmaWVsZH0KCQkJCXsvaWZ9CgkJCQk8PC8+bGk+eyRpdGVtLT5uYW1lfTw8Lz4vbGk+CgkJCXsvZm9yZWFjaH0KCQkJPDwvPi91bD4KCQk8L3ByZT4KCQk8cD5hbmQgY2FsbCBpdCB1c2luZyB7Y21zX21vZHVsZSBtb2R1bGU9Im15bW9kdWxlIiB3aGF0PSJpdGVtIiBsaXN0dGVtcGxhdGU9Im9yZGVyX2J5X215ZmllbGQiIG9yZGVyYnk9Im15ZmllbGQifTwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTI0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY2F0ZWdvcnk/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgZGlzcGxheWluZyBhIGxpc3QgdmlldyBvZiBoaWdoZXItbGV2ZWwgb2JqZWN0cyAobGlrZSBjYXRlZ29yaWVzKSwgeW91IGNhbiBzaW1wbHkgdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW0tPm5iY2hpbGRyZW59PC9wcmU+CgkJPHA+KHByb3ZpZGVkIGl0IGlzIGxvYWRlZCAtIHNlZSB0aGUgc2V0dGluZ3MgdGFiKTwvcD4KCQk8cD4kaXRlbS0+bmJjaGlsZHJlbiBnaXZlcyB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoaXMgdmVyeSAkaXRlbSBoYXMgKG5vdCB0aGUgY2F0ZWdvcnkgdGhpcyBpdGVtIGlzIGluKS4gSW4gb3RoZXIgd29yZHMsIGlmIHlvdSdyZSBvbiB0aGUgZmluYWwgbGV2ZWwsIHlvdSBjYW5ub3QgdXNlIHRoaXMgYXR0cmlidXRlIChmb3IgZmluYWwgbGV2ZWwgaXRlbXMgaGF2ZSBubyBjaGlsZHJlbikuPC9wPgoJCTxwPklmIHRoYXQncyB0aGUgY2FzZSwgYW5kIHlvdSB3aXNoIHRvIGdldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHlvdXIgYXJlIGRpc3BsYXlpbmcsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW1jb3VudH08L3ByZT4KCQk8cD5JZiB5b3Ugc2VwYXJhdGUgeW91ciBjb250ZW50IGludG8gcGFnZXMsICRpdGVtY291bnQgd2lsbCBzaG93IHRoZSBudW1iZXIgb2YgaXRlbXMgY3VycmVudGx5IGRpc3BsYXllZCBvbiB0aGUgcGFnZS4gVG8gZ2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgd2hlbiBzZXBhcmF0aW5nIGludG8gcGFnZXMsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JHBhZ2VfdG90YWxpdGVtc308L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE2Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SSdtIHRyeWluZyB0byBkaXNwbGF5IGEgbGlzdCBvZiBpdGVtcywgYnV0IHRoZSBkZXRhaWwgdGVtcGxhdGUgaXMgdXNlZCBpbnN0ZWFkLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgb24gdGhlIGZpbmFsIGxldmVsIGFuZCB0aGVyZSdzIG9ubHkgb25lIGl0ZW0gdG8gc2hvdywgdGhlIG1vZHVsZSB3b24ndCBkaXNwbGF5IHRoZSBsaXN0IHZpZXcgYnV0IHdpbGwgaW1tZWRpYXRlbHkgc2hvdyB0aGUgZGV0YWlscyBvZiB0aGlzIGl0ZW0sIHNvIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBoYXZlIHRvIGNsaWNrIHR3aWNlIGZvciBubyByZWFzb24uPC9wPgoJCTxwPklmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGxpc3QgdmlldyBhbnl3YXksIHRoZXJlIGlzIG5vdyAgYSAiZm9yY2VsaXN0IiBwYXJhbWV0ZXIgdGhhdCB3aWxsIGRvIHRoZSBqb2IgKHNlZSB0aGUgaGVscCBvZiB5b3VyIG1vZHVsZSkuIFlvdXIgdGFnIHNob3VsZCBiZWNvbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPntjbXNfbW9kdWxlIG1vZHVsZT0icHJvZHVjdHMiIHdoYXQ9InByb2R1Y3QiIGZvcmNlbGlzdD0iMSJ9PC9wcmU+CgkJPHA+VG8gc2V0IGZvcmNlbGlzdCB0byB0cnVlIGJ5IGRlZmF1bHQsIDxhIGhyZWY9IiNxOCI+bG9vayBoZXJlPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5BZG1pbiBwYW5lbCBicmVha3Mgd2hlbiBJIGFkZCBhbiBpbWFnZSB0byBhbiBpdGVtLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5EdXJpbmcgbW9kdWxlIGNyZWF0aW9uLCB5b3UgY2hvc2UgZm9yIGVhY2ggbGV2ZWwgd2hpY2ggZmllbGRzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdCBvZiBpdGVtcy4gSW4gdGhlIGhlbHAgdGFiIG9uIHRoaXMgc3RlcCBvZiB0aGUgbW9kdWxlIGNyZWF0aW9uLCBpdCB3YXMgc3BlY2lmaWNhbGx5IHdyaXR0ZW4gdGhhdCB5b3UgY2Fubm90IG5vcm1hbGx5IHVzZSBmaWxlIGZpZWxkcyBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdHMgKHRvIGRvIHNvLCB5b3Ugd291bGQgaGF2ZSB0byBhZGQgYSBjb25kaXRpb24gaW4gYWRtaW5wYW5lbC50cGwgYXMgZXhwbGFpbmVkIDxhIGhyZWY9IiNxNyI+aGVyZTwvYT4pLjwvcD4KCQk8cD5SZW1vdmUgdGhlIGZpbGUgZmllbGQgZnJvbSB0aGUgYWRtaW4gcGFuZWwgdmlldy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD48Yj5ZZXMuPC9iPiBJbiBmYWN0LCB0aGUgQ29tbWVudHMgbW9kdWxlIG1ha2VzIHRoaXMgdmVyeSBlYXN5IGZvciBhbnkgb3RoZXIgbW9kdWxlLjwvcD4KCQk8cD5PcGVuIHRoZSBkZXRhaWwgdGVtcGxhdGUgZm9yIHlvdXIgbGFzdCBsZXZlbCBlbGVtZW50cywgYW5kIHNpbXBseSBhZGQgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2Ntc19tb2R1bGUgbW9kdWxlPSJjb21tZW50cyIgbW9kdWxlbmFtZT0iTkFNRU9GWU9VUk1PRFVMRSIgcGFnZWlkPSRpdGVtLT5pZH08L3ByZT4KCQk8cD5XaGVyZSBOQU1FT0ZZT1VSTU9EVUxFIGlzLCBvZiBjb3Vyc2UsIHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMSI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPldhcm5pbmc6IG1vZHVsZSAiaXMgbm90IHByb3Blcmx5IGNsZWFuaW5nIGlucHV0IHBhcmFtcy4iIFdoYXQncyBnb2luZyBvbj88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlsqKiogVGhhbmtzIHRvIGlrdWxpcywgdGhpcyB3YXMgZGVmaW5pdGVseSBmaXhlZCBpbiAxLjguNC4yIGFuZCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtIGFueW1vcmUgKioqXTwvcD4KCQk8cD5UaGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0gd291bGQgbmVlZCB0byByZWdpc3RlciBhIHBhcmFtIGZvciBlYWNoIGZpZWxkIG9mIGVhY2ggbGV2ZWwsIHdoaWNoIEkgZmluZCByYXRoZXIgaW5lbGVnYW50LiBGb3IgdGhhdCByZWFzb24gdGhlIFJlc3RyaWN0VW5rbm93blBhcmFtcyBvcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQuPC9wPgoJCTxwPjxiPklmIHlvdSBhcmUgbm90IHVzaW5nIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybTwvYj4sIHlvdSBjYW4gc2FmZWx5IGFjdGl2YXRlIHRoZSBSZXN0cmljdFVua25vd25QYXJhbXMoKSBvcHRpb24uIEVkaXQgdGhlIG1vZHVsZSBmaWxlIChtb2R1bGVuYW1lLm1vZHVsZS5waHApLCBmaW5kIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24sIGFuZCBlZGl0IHRoZSBmb2xsb3dpbmcgbGluZSA6CgkJPHByZSBjbGFzcz0iY29kZSI+CQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKGZhbHNlKTs8L3ByZT4KCQl0bzoKCQk8cHJlIGNsYXNzPSJjb2RlIj4JCSR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTs8L3ByZT48L3A+CgkJPHA+PGI+SWYgeW91IGRvIHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoPC9iPiwgSSB3b3VsZCBzdWdnZXN0IGRpc2FibGluZyB0aGUgIkFsbG93IHBhcmFtZXRlciBjaGVja3MgdG8gY3JlYXRlIHdhcm5pbmcgbWVzc2FnZXMiIGluIHRoZSBDTVMgR2xvYmFsIFNldHRpbmdzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMyI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSByZXRyaWV2ZSBpbmZvcm1hdGlvbnMgYWJvdXQgYW4gb2JqZWN0IG90aGVyIHRoYW4gdGhlIG9uZSBJJ20gd2F0Y2hpbmc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JbiBhbnkgbW9kdWxlIHRlbXBsYXRlLCB5b3UgY2FuIHJldHJpZXZlIGEgd2hvbGUgaXRlbSBvYmplY3QgdXNpbmcgdGhlIGZvbGxvd2luZyBzbWFydHkgdGFnOiA8Y29kZT57TU9EVUxFTkFNRV9nZXRfbGV2ZWxpdGVtfTwvY29kZT4uPC9wPgoJCTxwPlRoZSB0YWcgcmVxdWlyZXMgMyBwYXJhbWV0ZXJzIDogd2hhdCAocmV0cmlldmUgYW4gaXRlbSBmcm9tIHdoaWNoIGxldmVsKSwgYWxpYXMgKHRoZSBpdGVtJ3MgYWxpYXMpIGFuZCBhc3NpZ24gKGluIHdoaWNoIHNtYXJ0eSB2YXJpYWJsZSB0aGlzIHNob3VsZCBiZSBzdG9yZWQpLjxici8+CgkJU28gYSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJe215bW9kdWxlX2dldF9sZXZlbGl0ZW0gd2hhdD0iY2F0ZWdvcnkiIGFsaWFzPSJteWZpcnN0Y2F0ZWdvcnkiIGFzc2lnbj0iY2F0b2JqZWN0In08L3ByZT4KCQk8cD5BbmQgeW91IGNhbiB0aGVuIHVzZSB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGRpc3BsYXkgaW5mb3JtYXRpb246PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJeyRjYXRvYmplY3QtPm5hbWV9PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGZpZWxkIGlucHV0cyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIG1vZHVsZSdzIGFkdmFuY2VkIHNlYXJjaCBmb3JtPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+WWVzLjwvYj48L3A+CgkJPHA+RnJvbSBDVExNb2R1bGVNYWtlciAxLjguMywgaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIHdoaWNoIGZpZWxkcyB3aWxsIGJlIHNob3duIGluIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybSB1cG9uIGZpZWxkIGNyZWF0aW9uLiBJZiB5b3UgaGF2ZSBjcmVhdGVkIHlvdXIgbW9kdWxlIHdpdGggYW4gZWFybGllciB2ZXJzaW9uIG9yIGRvIG5vdCB3YW50IHRvIGNyZWF0ZSBpdCBhZ2FpbiwgdGhlcmUncyBhbm90aGVyIHdheSBhcm91bmQuPC9wPgoJCTxwPlRoZSBzZWFyY2ggZm9ybSBmb3IgdGhlIG1vZHVsZSdzIHNlYXJjaCBhY3Rpb24gYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgInRlbXBsYXRlcyIgZm9sZGVyIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8cD5UaGUgInNlYXJjaC50cGwiIGZpbGUgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIGZvcm0gd2hlbiB0aGUgInNpbXBsZSIgc2VhcmNobW9kZSBpcyBjaG9zZW4uPC9wPgoJCTxwPlRoZSAic2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbCIgZmlsZSBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHdlIGFyZSBzZWFyY2hpbmcgaW4gbW9yZSB0aGFuIG9uZSBsZXZlbCBhdCB0aGUgc2FtZSB0aW1lLiBPdGhlcndpc2UsIHRoZSBsZXZlbCdzIGRlZmF1bHQgbGlzdCBtb2R1bGUgaXMgdXNlZC48L3A+CgkJPHA+Rm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZXJlIHNob3VsZCBiZSBhIGZpbGUgbmFtZWQgInNlYXJjaF9OQU1FT0ZUSEVMRVZFTC50cGwiLiBUaGlzIGNvbnRhaW5zIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGFkdmFuY2VkIHNlYXJjaCBmb3JtIGZvciB0aGlzIGxldmVsLiBJZiB5b3Ugd2FudCB0byByZW1vdmUgYSBmaWVsZCBpbnB1dCBmcm9tIHRoZSBzZWFyY2ggZm9ybSwgeW91IGNhbiBzaW1wbHkgZGVsZXRlIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIHRoZSB0ZW1wbGF0ZS4gKEkgd291bGQgcmVjb21tYW5kIHRvIG1ha2UgYSBiYWNrdXAgb2YgdGhlIG9yaWdpbmFsIHRlbXBsYXRlLCBpZiB5b3UgZXZlciBjaGFuZ2UgeW91ciBtaW5kISk8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTQiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGVkaXQgZm9ybSBmb3IgYSBsZXZlbD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPlRoZSBlZGl0IGZvcm1zIGZvciBlYWNoIGxldmVsIGFyZSBnZW5lcmF0ZWQgZnJvbSB0ZW1wbGF0ZXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlICJ0ZW1wbGF0ZXMiIGZvbGRlciBvZiB5b3VyIG1vZHVsZS4gRm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGVkaXQgZm9ybXJlIHNob3VsZCBiZSBpbiBhIGZpbGUgbmFtZWQgImVkaXRQUkVGSVhPRlRIRUxFVkVMLnRwbCIuPC9wPgoJCTxwPllvdSBjYW4gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSwgYnV0IGtlZXAgdHdvIHRoaW5ncyBpbiBtaW5kOjxici8+CgkJLSBJZiB5b3UgcmVtb3ZlIGFuIGlucHV0LCB0aGUgZm9ybSBtaWdodCBub3Qgd29yayBhbnltb3JlLjxici8+CgkJLSBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIGZpZWxkIGxhYmVscywgeW91IHNob3VsZCBwcmVmZXJhYmx5IGRvIHNvIGluIHRoZSBsYW5ndWFnZSBmaWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgkKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTciPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBhZGQgYSBjb25kaXRpb24gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5PbmUgb2YgeW91ciBsZXZlbCBoYXMsIGZvciBleGFtcGxlLCBhIG51bWVyaWMgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSwgYW5kIHlvdSB3aXNoIHRvIG1ha2Ugc3VyZSBpdCdzIGJldHdlZW4sIHNheSwgMCBhbmQgMTAwPyBPZiBjb3Vyc2UgaXQncyBwb3NzaWJsZSwgYnV0IHlvdSdsbCBuZWVkIHRvIGVkaXQgdGhlIGNvZGUuPC9wPgoJCTxwPk9wZW4gdGhlIGVkaXQgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxldmVsIChhY3Rpb24uZWRpdExFVkVMUFJFRklYLnBocCkuIFNvbWV3aGVyZSBub3Qgc28gZmFyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSwgeW91IHdpbGwgZmluZCB0aGUgZm9sbG93aW5nIGNvZGUgOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkvLyBDSEVDSyBJRiBUSEUgTkVFREVEIFZBTFVFUyBBUkUgVEhFUkUKIzEJCWlmKAkhaXNzZXQoJHBhcmFtc1siaXRlbW5hbWUiXSkgfHwgJHBhcmFtc1siaXRlbW5hbWUiXSA9PSAiIiApewojMgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKIzMJCX1lbHNlaWYoZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9tb2R1bGVuYW1lX2l0ZW0iLCAkaXRlbS0+YWxpYXMsIGlzc2V0KCRwYXJhbXNbIml0ZW1pZCJdKT8kcGFyYW1zWyJpdGVtaWQiXTpmYWxzZSkpewojNAkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7CiM1CQl9ZWxzZXsKCQkjIyMjIyMjIyMjIyMgRE9JTkcgVEhFIFVQREFURQoJCTwvcHJlPgoJCTxwPkhlcmUgdHdvIGNvbmRpdGlvbnMgYXJlIGNoZWNrZWQgYmVmb3JlIHVwZGF0aW5nL2FkZGluZyB0aGUgZWxlbWVudDogZmlyc3QsIG9uIGxpbmUgIzEsIHdlIGNoZWNrIGlmIGEgbmFtZSB3YXMgZ2l2ZW4gKGFuZCBhbnkgb3RoZXIgbWFuZGF0b3J5IHZhbHVlLCBpZiBhbnkpLCBhbmQgaWYgaXQgd2Fzbid0LCB3ZSBkaXNwbGF5IGFuIGVycm9yIChsaW5lICMyKS4gT24gbGluZSAjMywgd2UgY2hlY2sgaWYgYW5vdGhlciBlbGVtZW50IGFscmVhZHkgaGFzIHRoZSBzYW1lIGFsaWFzIGFuZCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKGxpbmUgIzQpIGlmIGl0IGlzIHRoZSBjYXNlLiBJZiBubyBwcm9ibGVtIGlzIG1ldCwgd2UgZ2V0IHRvIGxpbmUgIzUgYW5kIGdvIG9uIHdpdGggdGhlIHVwZGF0ZS48L3A+CgkJPHA+QmFzaWNhbGx5LCB5b3UgY2FuIGFkZCBhbnkgY29uZGl0aW9uIHlvdSBsaWtlIHRvIHRoZXNlLiBTbyB3aXRoIG91ciBleGFtcGxlLCBpdCBjb3VsZCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFCgkJaWYoCSFpc3NldCgkcGFyYW1zWyJpdGVtbmFtZSJdKSB8fCAkcGFyYW1zWyJpdGVtbmFtZSJdID09ICIiICl7CgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKCQl9ZWxzZWlmKGZhbHNlID09ICR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfbW9kdWxlbmFtZV9pdGVtIiwgJGl0ZW0tPmFsaWFzLCBpc3NldCgkcGFyYW1zWyJpdGVtaWQiXSk/JHBhcmFtc1siaXRlbWlkIl06ZmFsc2UpKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfYWxyZWFkeWV4aXN0cyIpKTsKCQl9ZWxzZWlmKCBmYWxzZSA9PSAoJGl0ZW0tPm15ZmllbGQgPiAwICYmICRpdGVtLT5teWZpZWxkIDw9IDEwMCkgKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygibXlfY3VzdG9tX2Vycm9yX21lc3NhZ2UiKSk7CgkJfWVsc2V7CgkJIyMjIyMjIyMjIyMjIERPSU5HIFRIRSBVUERBVEUKCQk8L3ByZT4KCQk8cD5XZSBqdXN0IGNoZWNrIGlmIHRoZSBmaWVsZCBpcyBvdmVyIDAgYW5kIGJlbG93L2VxdWFsIHRvIDEwMC4gSWYgaXQgaXMsIHdlIGdvIG9uIHdpdGggdGhlIHN1Ym1pc3Npb24uIE90aGVyd2lzZSB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKHdoaWNoIHlvdSdkIG5lZWQgdG8gYWRkIHRvIHRoZSBsYW5ndWFnZSBmaWxlcywgb3RoZXJ3aXNlIHlvdSBjYW4gaGFyZGNvZGUgdGhlIGVycm9yIG1lc3NhZ2UuLi4pPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE3Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGFyZSB0aGUgZGVmYXVsdGFkbWluIHBhbmVscyBnZW5lcmF0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3Ugb3BlbiB0aGUgL3RlbXBsYXRlcy8gZm9sZGVyLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCB0aGVyZSdzIG9ubHkgb25lIHRlbXBsYXRlIGZvciB0aGUgZGVmYXVsdGFkbWluIDogYWRtaW5wYW5lbC50cGwuIFRoaXMgaXMgdXNlZCBmb3IgYWxsIGxldmVscy4gU28gdGhlIGRpZmZlcmVuY2UgaXMgdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuIEJlZm9yZSB0YWtpbmcgYSBsb29rIGF0IGl0LCBsZXQncyBzZWUgdGhhdCBpbmZvcm1hdGlvbi48YnIvPgoJCU9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0YWRtaW4ucGhwIG9mIHlvdXIgbW9kdWxlLiBZb3Ugd2lsbCBub3RpY2UgdGhhdCBpdCBpcyBkaXZpZGVkIGludG8gdGFicyAoZGVsaW1pdGVkIGJ5IDxjb2RlPmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJuYW1lb2ZsZXZlbCIpOzwvY29kZT4gYW5kIDxjb2RlPmVjaG8gJHRoaXMtPkVuZFRhYigpOzwvY29kZT4pLiBGb3IgZWFjaCBsZXZlbCB0YWIsIHRoZSBsaXN0IG9mIGl0cyBpdGVtcyBpcyBmZXRjaGVkIGFuZCBzdG9yZWQgaW50byA8Y29kZT4kaXRlbWxpc3Q8L2NvZGU+LCB3aGljaCBpcyB0aGVuIHBhc3NlZCB0byBzbWFydHkuICRpdGVtbGlzdCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIGhhdmluZyB5b3VyIGZpZWxkcyBhcyBhdHRyaWJ1dGVzICgkaXRlbS0+ZmllbGQpLjxici8+CgkJSnVzdCBiZWxvdyB0aGF0LCB5b3Ugd2lsbCBub3RpY2UgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJJGFkbWluc2hvdyA9IGFycmF5KAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygiYWxpYXMiKSwiYWxpYXMiLGZhbHNlKSwKCQkJYXJyYXkoJHRoaXMtPkxhbmcoImFjdGl2ZSIpLCJ0b2dnbGVhY3RpdmUiLHRydWUpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmJjaGlsZHJlbiIpLCJuYmNoaWxkcmVuIixmYWxzZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkKCQkJKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidGFibGVpZCIsICJsZXZlbG5hbWVfdGFibGUiKTsKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7PC9wcmU+CgkJPHA+VGhlIDxjb2RlPiRhZG1pbnNob3c8L2NvZGU+IHZhcmlhYmxlIGNvbnRhaW5zIHdoYXQgc2hvdWxkIGJlIHNob3duIGluIHRoZSBhZG1pbnBhbmVsIG9mIHRoYXQgbGV2ZWwuIFdlIHRoZW4gcGFzcyB0aGlzIHZhcmlhYmxlIHRvIHNtYXJ0eSAoYW5kIGFsc28gYSBuYW1lIGZvciB0aGUgdGFibGUpLCBhbmQgdGhlIGxhc3QgbGluZSB0ZWxscyBzbWFydHkgdG8gZGlzcGxheSB0aGUgdGVtcGxhdGUgImFkbWlucGFuZWwudHBsIi48YnIvPgoJCSRhZG1pbnNob3cgaXMgYW4gYXJyYXksIHdoZXJlIGVhY2ggZWxlbWVudCByZXByZXNlbnRzIGEgY29sdW1uIG9mIHRoZSBhZG1pbnBhbmVsLiBFYWNoIGNvbHVtbiwgaW4gdHVybiwgaXMgYW4gYXJyYXkgY29udGFpbmluZyB0aHJlZSB2YWx1ZXM6IHRoZSBmaXJzdCAocG9zaXRpb24gMCkgaXMgdGhlIHRpdGxlIG9mIHRoZSBjb2x1bW4sIGFuZCB0aGUgc2Vjb25kIChwb3NpdGlvbiAxKSBpcyB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0J3MgZmllbGQgdGhhdCBzaG91bGQgYmUgc2hvd24gaW4gdGhpcyBjb2x1bW4sIGFuZCB0aGUgdGhpcmQgKHBvc2l0aW9uIDIpIGlzIHdoZXRoZXIgdGhlIGluc3RhbnQgc2VhcmNoICh0aGUgc2VhcmNoYm94IGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgYWRtaW5wYW5lbCkgc2hvdWxkIHNraXAgdGhpcyBjb2x1bW4uPC9wPgoJCTxwPkZvciBleGFtcGxlLCA8Y29kZT5hcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpPC9jb2RlPiBtZWFucywgaGVyZSwgdGhhdCB3ZSB0YWtlICR0aGlzLT5MYW5nKCJuYW1lIikgKCJuYW1lIiBpbiB0aGUgbGFuZ3VhZ2UgdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkKSB0byBiZSB0aGUgdGl0bGUgb2YgdGhlIGNvbHVtbiwgYW5kIHRoYXQgZm9yIGVhY2ggcm93IG9mIHRoZSB0YWJsZSwgd2hhdGV2ZXIgaXMgaW4gJG9uZWl0ZW0tPmVkaXRsaW5rIHdpbGwgYmUgZGlzcGxheWVkICh0aGlzIHBhcnRpY3VsYXIgdmFsdWUgaXMgbm90IHN0cmljdGx5IHNwZWFraW5nIGEgZmllbGQgb2YgdGhlIGxldmVsLCBidXQgYW4gYXR0cmlidXRlIGNyZWF0ZWQgYnkgdGhlIGFkZGFkbWlubGlua3MoKSBmdW5jdGlvbikuIEl0IGFsc28gbWVhbnMgdGhhdCB0aGUgaW5zdGFudCBzZWFyY2ggd2lsbCA8aT5ub3Q8L2k+IHNraXAgdGhpcyBjb2x1bW4sIHNvIHRoZSB0ZXh0IGRpc3BsYXllZCB3aWxsIGJlIHVzZWQgdG8gc2VlIGlmIHRoZSByb3cgbWF0Y2hlcyB0aGUgc2VhcmNoIHdvcmRzLjwvcD4KCQk8cD5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBhZG1pbnBhbmVsLnRwbCBmaWxlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCTw8Lz5kaXY+CiMyCQk8PC8+dGFibGUge2lmICR0YWJsZWlkfWlkPSJ7JHRhYmxlaWR9IiB7L2lmfWNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIzMJCTw8Lz50aGVhZD48PC8+dHI+CiM0CQkJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQojNQkJCQk8PC8+dGg+eyRjb2x1bW5bMF19PDwvPi90aD4KIzYJCQl7L2ZvcmVhY2h9CiM3CQk8PC8+L3RyPjw8Lz4vdGhlYWQ+CiM4CQk8PC8+dGJvZHk+CiM5CQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzcyByZXNldD10cnVlfQojMTAJCXtmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0KIzExCQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KIzEyCQk8PC8+dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgojMTMJCQl7Zm9yZWFjaCBmcm9tPSRhZG1pbnNob3cgaXRlbT1jb2x1bW59CiMxNAkJCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KIzE1CQkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+eyRvbmVpdGVtLT4kb25ldmFsfTw8Lz4vdGQ+CiMxNgkJCXsvZm9yZWFjaH0KIzE3CQk8PC8+L3RyPgojMTgJCXsvZm9yZWFjaH0KIzE5CQk8PC8+L3Rib2R5PgojMjAJCTw8Lz4vdGFibGU+CiMyMQkJPDwvPi9kaXY+PC9wcmU+CgkJPHA+Tm93LCBJIHdpbGwgYXNzdW1lIHRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhlIGh0bWwgdGFncywgYW5kIHdpbGwgbGVhdmUgYWxvbmUgdGhlIGNvZGUgY29uY2VybmluZyB0aGUgY2xhc3Nlcy4gSSB3aWxsIGV4cGxhaW4gbGluZXMgIzQgdG8gIzYsIHdoaWNoIHdyaXRlIHRoZSB0YWJsZSBoZWFkZXIgKHRoZSB0aXRsZXMgb2YgdGhlIGNvbHVtbnMpLCBhbmQgbGluZXMgIzkgdG8gIzE4LCB3aGljaCB3cml0ZSB0aGUgdGFibGUgcm93cy48L3A+CgkJPHA+TGluZSAjNSBpcyBleGVjdXRlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSAkYWRtaW5zaG93IHZhcmlhYmxlOyBpbiBvdGhlciB3b3JkcywgZm9yIGVhY2ggY29sdW1uIG9mIHRoZSB0YWJsZS4gTm93LCByZW1lbWJlciB0aGF0IGVhY2ggZWxlbWVudCBvZiB0aGUgJGFkbWluc2hvdyB2YXJpYWJsZSBpcyBhbiBhcnJheSBvZiB0d28gZWxlbWVudHMsIHNvIHdoYXQgbGluZSAjNSBkb2VzIGlzIGRpc3BsYXkgdGhlIGZpcnN0IChwb3NpdGlvbiBbMF0pIG9mIHRoZXNlIHR3byBlbGVtZW50cyBhcyB0aGUgY29sdW1uIGhlYWRlci48L3A+CgkJPHA+TGluZXMgIzExIHRvICMxNyBhcmUgcmVwZWF0ZWQgZm9yIGVhY2ggaXRlbSBpbiAkaXRlbWxpc3QgKGZvciBlYWNoIHJvdyBvZiB0aGUgdGFibGUpLiBGb3IgZWFjaCByb3csIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlICRhZG1pbnNob3cgdmFyaWFibGUsIGxpbmVzICMxNCBhbmQgIzE1IGFyZSByZXBlYXRlZC4gTGluZSAjMTQgZmV0Y2ggdGhlIG5hbWUgb2YgdGhlIG9iamVjdCdzIGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgKHBvc2l0aW9uIFsxXSBvZiB0aGUgYWRtaW5zaG93IGVsZW1lbnQpLCBhbmQgbGluZSAjMTUgZGlzcGxheXMgdGhpcyBhdHRyaWJ1dGUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LjwvcD4KCQk8cD5BcyBvZiB0aGUgPGNvZGU+Y3RsbW1fbm9zZWFyY2g8L2NvZGU+IGNsYXNzLCBpdCBvbmx5IG1lYW5zIHRoYXQgdGhlIGluc3RhbnQgc2VhcmNoIHdpbGwgbm90IGNoZWNrIGludG8gdGhpcyBjb2x1bW4uPC9wPgoJCTxwPjxiPkFscmlnaHQuLi4gaG93IGNhbiBJIGNoYW5nZSB0aGlzPzwvYj48L3A+CgkJPHA+SWYgeW91IHdhbnQgdG8gbWFrZSBtYWpvciBjaGFuZ2VzLCB0aGUgYmVzdCB0aGluZyB0byBkbyB3b3VsZCBiZSB0byBjcmVhdGUgYW4gaW5kaXZpZHVhbCB0ZW1wbGF0ZSBmb3IgeW91ciBsZXZlbC4gSW4gdGhlIHRlbXBsYXRlcy8gZm9sZGVyLCBjcmVhdGUgYSBmaWxlIChsaWtlICJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpLCBwdXQgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBpbiBpdCwgYW5kIGluIHRoZSBhY2NvcmRpbmcgdGFiIG9mIHRoZSBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCBmaWxlLCBjaGFuZ2U8YnIvPgoJCTxjb2RlPmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTs8L2NvZGU+PGJyLz4KCQl0bzxici8+CgkJPGNvZGU+ZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpOzwvY29kZT48L3A+CgkJPHA+Tm93LCBsZXQncyBzYXkgeW91IHdpc2ggdG8gbWFrZSBhIHZlcnkgc2ltcGxlIG1vZGlmaWNhdGlvbi4gRm9yIGV4YW1wbGUsIHlvdSBhcmUgZGlzcGxheWluZyBhIGZpbGUgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSBvbiB0aGUgYWRtaW5wYW5lbCwgYnV0IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgZmlsZXBhdGggeW91IHdvdWxkIGxpa2UgdG8gc2hvdyB0aGUgcGljdHVyZS4gV2hhdCB5b3UgY291bGQgZG8gaXMgdGhpczo8YnIvPgoJCUluIHRoZSBhZG1pbnBhbmVsLnRwbCB0ZW1wbGF0ZSBmaWxlLCB5b3UgY291bGQgY2hhbmdlIGxpbmUgIzE1IHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+CgkJCXtpZiAkb25ldmFsID09ICdteWZpZWxkJ30KCQkJCXtpZiAkb25laXRlbS0+JG9uZXZhbCAhPSAiIn08PC8+aW1nIHNyYz0ie3Jvb3RfdXJsfS91cGxvYWRzL3skb25laXRlbS0+JG9uZXZhbH0iIC8+ey9pZn0KCQkJe2Vsc2V9CgkJCQl7JG9uZWl0ZW0tPiRvbmV2YWx9CgkJCXsvaWZ9PDwvPi90ZD48L3ByZT4KCQk8cD5UaGlzIG1lYW5zIHRoYXQgc21hcnR5IGNoZWNrcyBpZiB0aGUgZmllbGQgd2UncmUgZGlzcGxheWluZyBpcyAnbXlmaWVsZCcsIGlmIGl0IGlzLCBhbmQgaWYgdGhlIHZhbHVlIGlzbid0IGVtcHR5LCBpdCBkaXNwbGF5cyB0aGUgaW1hZ2UuIElmIGl0IGlzbid0LCBpdCBqdXN0IGRpc3BsYXlzIHRoZSBmaWVsZCB2YWx1ZSBub3JtYWxseS48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyIj4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+Q291bGQgSSBzaG93IHRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBpdGVtIGluLCBzYXksIHRoZSBwYWdlJ3MgPDwvPnRpdGxlPiB0YWc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5bKioqIFNlZSB1cGRhdGUgYmVsb3cuLi4gKioqXTwvcD4KCQk8cD48Yj5UaGUgc2hvcnQgYW5zd2VyOjwvYj4gbm8uPC9wPgoJCTxwPjxiPlRoZSBsb25nIGFuc3dlcjo8L2I+IHllcywgbW9zdCBvZiB0aGUgdGltZS48L3A+CgkJPHA+VGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gb3IgY2F0ZWdvcnkgaXMgcmV0cmlldmVkIG9ubHkgd2hlbiB0aGUgPGNvZGU+e2Ntc19tb2R1bGUgbW9kdWxlPSJ5b3VybW9kdWxlIn08L2NvZGU+IHRhZyBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgdGVtcGxhdGUgLSB3aGljaCBpcyBxdWl0ZSBhbHdheXMgd2F5IGFmdGVyIHRoZSBwYWdlJ3MgaGVhZC4gSG93ZXZlciwgaW4gbW9zdCBjYXNlcyBpbiBjb3VsZCBiZSByZXRyaWV2ZWQgYnkgYSB1c2VyLWRlZmluZWQgdGFnIChVRFQpLjwvcD4KCQk8cCBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5Ob3RlIHRoYXQgdGhpcyB3aWxsIG5vIHdvcmsgd2hlbiB0aGUgdGFnIGlzIGRpcmVjdGx5IGNhbGxlZCBvbiB0aGUgcGFnZSwgYW5kIHdpbGwgb25seSB3b3JrIHdoZW4gd2UgYXJlIGZvbGxvd2luZyBhIG1vZHVsZSBhY3Rpb24gKHdoZW4geW91IGhhdmUgY2xpY2tlZCBvbiBhIGxpbmspPC9wPgoJCTxwPkNyZWF0ZSB0aGUgZm9sbG93aW5nIFVEVCwgcmVwbGFjaW5nIE5BTUVfT0ZfWU9VUl9NT0RVTEUgd2l0aCB5b3VyIG1vZHVsZSdzIG5hbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPiRtb2R1bGVuYW1lID0gJ05BTUVfT0ZfWU9VUl9NT0RVTEUnOwpnbG9iYWwgJGdDbXM7CmlmKCBpc3NldCgkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV0pICYmCiAgICAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bJ2FjdGl2ZSddICYmCiAgICBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKXsKCWdsb2JhbCAkc21hcnR5OwoJJGluc3RhbmNlID0gJGdDbXMtPm1vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXTsKCSRnbG9iID0gJGluc3RhbmNlLT5nZXRfbW9kdWxlR2V0VmFycygpOwoJJHdhbnRlZGxldmVsID0gZmFsc2U7CgkkbW9kbGV2ZWxzID0gJGluc3RhbmNlLT5nZXRfbGV2ZWxhcnJheSgpOwoJaWYoaXNzZXQoJGdsb2JbJ2FsaWFzJ10pKXsKCQkkd2FudGVkbGV2ZWwgPSBpc3NldCgkZ2xvYlsnd2hhdCddKT8kZ2xvYlsnd2hhdCddOiRtb2RsZXZlbHNbY291bnQoJG1vZGxldmVscyktMV07CgkJJGFsaWFzID0gJGdsb2JbJ2FsaWFzJ107Cgl9ZWxzZWlmKGlzc2V0KCRnbG9iWydwYXJlbnQnXSkpewoJCWlmKGlzc2V0KCRnbG9iWyd3aGF0J10pKXsKCQkJJHdhbnRlZGxldmVsID0gJGluc3RhbmNlLT5nZXRfbmV4dGxldmVsKCRnbG9iWyd3aGF0J10sIGZhbHNlKTsKCQl9ZWxzZXsKCQkJJHdhbnRlZGxldmVsID0kbW9kbGV2ZWxzW2NvdW50KCRtb2RsZXZlbHMpLTJdOwoJCX0KCQkkYWxpYXMgPSAkZ2xvYlsncGFyZW50J107Cgl9CglpZigkd2FudGVkbGV2ZWwpewoJCSRnZXRmdW5jdGlvbiA9ICdnZXRfbGV2ZWxfJy4kd2FudGVkbGV2ZWw7CgkJJGl0ZW0gPSAkaW5zdGFuY2UtPiRnZXRmdW5jdGlvbihhcnJheSgnYWxpYXMnPT4kYWxpYXMpKTsKCQlpZihpc3NldCgkaXRlbVswXSkpCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkaXRlbVswXSk7Cgl9Cn0KCTwvcHJlPgoJPHA+TGV0J3Mgc2F5IHlvdSd2ZSBuYW1lZCB5b3VyIHRhZyAicmV0cmlldmVtb2RpbmZvIi4gVGhlbiwgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIHBhZ2UncyB0ZW1wbGF0ZSwgeW91IHJldHJpZXZlIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGJ5IHVzaW5nIHRoZSB0YWcgPGNvZGU+e3JldHJpZXZlbW9kaW5mbyBhc3NpZ249ImN1cnJlbnRlbGVtZW50In08L2NvZGU+LiBUaGlzIG1lYW5zIHRoYXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGl0ZW0gYXJlIHN0b3JlZCBpbiB0aGUgdmFyaWFibGUgJGN1cnJlbnRlbGVtZW50ICh3aGljaCBjb3VsZCBoYXZlIGJlZW4gYW55dGhpbmcpLiBTbyBpbiB0aGUgPDwvPnRpdGxlPiB0YWcgb2YgeW91ciB0ZW1wbGF0ZSwgeW91IGNvdWxkIHdyaXRlOiA8Y29kZT57aWYgJGN1cnJlbnRlbGVtZW50fXskY3VycmVudGVsZW1lbnQtPm5hbWV9ey9pZn08L2NvZGU+LCB3aGljaCB3b3VsZCBkaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgaWYgaXQgY291bGQgaGF2ZSBiZWVuIHJldHJpZXZlZC48L3A+Cgk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5VUERBVEU6IHNpbmNlIHZlcnNpb24gMS44LCB5b3UgY2FuIGRvIHRoZSBzYW1lIHRoaW5nIG11Y2ggbW9yZSBlYXNpbHkganVzdCBieSB1c2luZyB0aGUgImJyZWFkY3J1bWJzIiBhY3Rpb24gYW5kIGl0cyBwYXJhbWV0ZXJzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExNiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBhZGQgbW9kdWxlIGVsZW1lbnRzIHRvIG15IGdvb2dsZSBzaXRlbWFwPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5UaGlzIHdpbGwgaGVscCB5b3UgaW5jbHVkZSB0aGUgbW9kdWxlIGVudHJpZXMgdG8gYSBnb29nbGUgc2l0ZW1hcCwgPHU+cHJvdmlkZWQgdGhhdCB5b3VyIG1vZHVsZSBlbGVtZW50cyBhcmUgYWxsIGRpc3BsYXllZCBvbiB0aGUgc2FtZSBwYWdlPC91Pi48L3A+PGJyLz4KCTxwPjxiPklmIHlvdSBhcmUgdXNpbmcgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ3NnZW5lcmF0b3IiPmdvb2dsZSBzaXRlbWFwIGdlbmVyYXRvciBtb2R1bGU8L2E+OjwvYj48L3A+Cgk8L3A+T3BlbiB5b3VyIHNpdGVtYXAgZ2VuZXJhdG9yIChnc2l0ZW1hcC5waHApLCBhbmQganVzdCBiZWZvcmUgdGhlIGNsb3N1cmUgb2YgdGhlIHVybHNldCAoPGNvZGU+ZWNobyAnICA8PC8+L3VybHNldD4nLiAiXG4iOzwvY29kZT4pLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lczo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRtb2R1bGVuYW1lID0gIk5BTUVPRk1PRFVMRSI7CS8vIENIQU5HRSBUSElTIFRPIFRIRSBOQU1FIE9GIFlPVVIgTU9EVUxFCglpZiggIGlzc2V0KCRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXSkKCQkmJiAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bImFjdGl2ZSJdCgkJJiYgJHRoZW1vZHVsZSA9ICRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXVsib2JqZWN0Il0KCQkpewoJCQkKCQkvLyBIRVJFIFlPVSBNVVNUIFBVVCBUSEUgSUQgT1IgQUxJQVMgT0YgVEhFIFBBR0UgVVNFRCBUTyBESVNQTEFZIFRIRSBNT0RVTEUgRUxFTUVOVFM6CgkJJGRldGFpbHBhZ2UgPSAiTVlQQUdFIjsKCQkKCQkkcGFyYW1zID0gYXJyYXkoIm1vZGUiPT4iZ29vZ2xlIiwgImRldGFpbHBhZ2UiPT4kZGV0YWlscGFnZSk7CgkJJHRoZW1vZHVsZS0+RG9BY3Rpb24oInNpdGVtYXAiLCAiIiwgJHBhcmFtcyk7Cgl9Cgk8L3ByZT4KCTxwPk9mIGNvdXJzZSwgcmVwbGFjZSBOQU1FT0ZNT0RVTEUgaW4gdGhlIGZpcnN0IGxpbmUgd2l0aCB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZSwgYW5kIGVudGVyIGEgZGV0YWlscGFnZSwgYmUgaXQgYW4gaWQgb3IgcGFnZSBhbGlhcy48L3A+Cgk8cD5Ob3RlIHRoYXQgeW91IGNvdWxkIGFsc28gdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyIHRvIHNwZWNpZnkgd2hpY2ggbGV2ZWxzIHlvdSB3aXNoIHRvIHNlZSBkaXNwbGF5ZWQgKHlvdSBjYW4gc3BlY2lmeSBzZXZlcmFsIGxldmVscyB3aXRoICJsZXZlbDF8bGV2ZWwyIiBhbmQgc28gb24pLiBPdGhlcndpc2UsIGFsbCBsZXZlbHMgd2lsbCBiZSBkaXNwbGF5ZWQuPC9wPjwvYnI+Cgk8cD48Yj5JZiB5b3UgYXJlIHVzaW5nIHRoZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NpdGVtYXBtcyI+U2l0ZU1hcCBNYWRlIFNpbXBsZTwvYT4gbW9kdWxlOjwvYj48L3A+Cgk8cD5TaW1wbHkgcHV0IHRoZSBjb2RlIGFib3ZlIGluIGEgVURUICh1c2VyLWRlZmluZWQtdGFnKSwgYW5kIGNhbGwgdGhlIFVEVCBhdCB0aGUgZW5kIG9mIHlvdXIgc2l0ZW1hcCdzIHRlbXBsYXRlLCBqdXN0IGJlZm9yZSA8Y29kZT48PC8+L3VybHNldD48L2NvZGU+LjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE5Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5Zb3Ugd2lzaCB0byBhZGQgYSBkYXRlIGZpZWxkIHRoYXQgd2lsbCBkZWNpZGUgd2hlbiB0aGUgaXRlbSB3aWxsIGJlIGRpc3BsYXllZCBvciBub3QgKGxpa2UgaW4gdGhlIG5ld3MgbW9kdWxlKS4gSXQgc2hvdWxkbid0IGJlIHZlcnkgaGFyZC48L3A+Cgk8cD5UbyBkbyB0aGlzLCB5b3Ugd2lsbCBuZWVkIHR3byBmaWVsZHMgKG9yIHRocmVlKTo8L3A+Cgk8dWw+CgkJPGxpPkEgImNoZWNrYm94IiB0eXBlIGZpZWxkIHRvIGNob29zZSB3aGV0aGVyIHRoZSBleHBpcmF0aW9uIGRhdGUgd2lsbCBiZSB1c2VkIG9yIG5vdCAod2UnbGwgY2FsbCBpdCAidXNlX2V4cGlyYXRpb24iKTwvbGk+CgkJPGxpPkEgImRhdGUiIHR5cGUgZmllbGQgdG8gY2hvb3NlIHRoZSBleHBpcmF0aW9uIGRhdGUgKHdlJ2xsIGNhbGwgaXQgImV4cGlyYXRpb25fZGF0ZSIpPC9saT4KCQk8bGk+KG9wdGlvbmFsbHkpIEFub3RoZXIgZGF0ZSBmaWVsZCAoZm9yIGJlZ2luIGRhdGUpPC9saT4KCTwvdWw+Cgk8cD5Gb3Igc2ltcGxpY2l0eSwgSSB3aWxsIGFzc3VtZSB3ZSBuZWVkIG9ubHkgb25lIGRhdGUgKHlvdSBzaG91bGQgZmlndXJlIG91dCB0aGUgcGFydCBmb3IgdGhlIHNlY29uZCBkYXRlKS48L3A+Cgk8cD5JbiB5b3VyIGxpc3QgdGVtcGxhdGUsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cgl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQl7aWYgJGl0ZW0tPnVzZV9leHBpcmF0aW9uICYmICgkaXRlbS0+ZXhwaXJhdGlvbl9kYXRlfGRhdGVfZm9ybWF0OiIlcyIgJmx0OyAkc21hcnR5Lm5vdyl9CgkJCXRoZSBjb2RlIHRvIGRpc3BsYXkgdGhlIGl0ZW0uLi4KCQl7L2lmfQoJey9mb3JlYWNofQoJPC9wcmU+Cgk8cD5CYXNpY2FsbHksIHdlIG9ubHkgZGlzcGxheSB0aGUgaXRlbSB3aGVuIGEgY29uZGl0aW9uIGlzIG1ldCwgbmFtZWx5IHRoYXQgdXNlX2V4cGlyYXRpb24gaXMgb24sIGFuZCB0aGF0IHRoZSBleHBpcmF0aW9uIGRhdGUgaXMgbG93ZXIgKGJlZm9yZSkgdGhlIGN1cnJlbnQgZGF0ZS4gVG8gZG8gdGhlIG9wcG9zaXRlLCB5b3UgY2FuIGp1c3QgY2hhbmdlIHRoZSAmbHQ7IHRvIGEgJmd0Oy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJPHA+VGhpcyBpcyBkb25lIGluIHR3byBwYXJ0cy4gVGhlIGZpcnN0IHBhcnQgaXMgdG8gZGlzcGxheSB0aGUgZWRpdCBsaW5rIG9yIGVkaXQgZm9ybSBvbmx5IHRvIHNlbGVjdGVkIHVzZXJzIChvciBsb2dnZWQgaW4gdXNlcnMpLiBUaGlzIGlzIHRvIGJlIGRvbmUgd2l0aCB0aGUgRkVVIG1vZHVsZSAoYW5kIHBvc3NpYmx5IEN1c3RvbSBDb250ZW50KSwgYW5kIGFzIHN1Y2ggd2lsbCBub3QgYmUgY292ZXJlZCBoZXJlLiBUaGlzIGlzIG9ubHkgYWJvdXQgPGk+aGlkaW5nPC9pPiB0aGUgZWRpdGlvbiBmcm9tIG90aGVyIHVzZXJzLiBUaGUgc2Vjb25kIHBhcnQsIHdoaWNoIHdpbGwgYmUgY292ZXJlZCBoZXJlLCBpcyBhYm91dCB0aGUgcmVhbCBwcm90ZWN0aW9uLiBTYWRseSwgdGhpcyB3aWxsIHJlcXVpcmUgYSBsaXR0bGUgcHJvZ3JhbW1pbmcsIGJ1dCBldmVyeW9uZSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhyb3VnaCB0aGlzIGVhc2lseS48L3A+Cgk8cD5JZiB5b3UncmUgd29uZGVyaW5nIGhvdyB0byBjaGFuZ2UgdGhlIGxvb2sgb2YgdGhlIGZvcm0sIHNlZSB0aGUgZnJvbnRlbmRfYWRkXyoudHBsIHRlbXBsYXRlcyBpbiB0aGUgdGVtcGxhdGVzIGZvbGRlci48L3A+Cgk8cD5CZWZvcmUgZWRpdGluZyBhbiBpdGVtIHRocm91Z2ggdGhlIGZyb250ZW5kLCB0aGUgZnVuY3Rpb24gZmVhZGRfcGVybWNoZWNrICh3aG9zZSBjb250ZW50IGlzIGluIHRoZSBmaWxlIGZ1bmN0aW9uLmZlYWRkX3Blcm1jaGVjay5waHApIGlzIGNhbGxlZC4gSWYgaXQgcmV0dXJucyB0cnVlIChpZiB0aGUgdmFsdWUgb2YgdGhlICRyZXR1cm4gdmFyaWFibGUgaXMgc2V0IHRvIHRydWUpLCB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBlZGl0IHRoZSBpdGVtLCBvdGhlcndpc2UgKGlmIGl0IHJldHVybnMgZmFsc2UpLCB0aGUgYWNjZXNzIGlzIGRlbmllZC48YnIvPgoJSWYgeW91IG9wZW4gdGhlIGZpbGUgZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCwgeW91IHdpbGwgbm90aWNlIHRoYXQgYXNpZGUgZnJvbSBjb21tZW50cywgdGhlIGZ1bmN0aW9uIGlzIGVtcHR5LiBXZSB3aWxsIGhhdmUgdG8gZmlsbCBpdCBvdXQgZGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2lzaCB0byBkby48L3A+Cgk8cD5UaGUgdmFyaWFibGVzIGF0IG91ciBkaXNwb3NpdGlvbiBhcmUgdGhlIGZvbGxvd2luZzo8dWw+CgkJPGxpPiRnQ21zICh0aGUgZ2xvYmFsIGNtcyBvYmplY3QsIHRocm91Z2ggd2hpY2ggd2Ugd2lsbCBiZSBhYmxlIHRvIGNhbGwgdGhlIEZFVSBtb2R1bGUpPC9saT4KCQk8bGk+JHdoYXQgKHRoZSBsZXZlbCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LCBhcyBnaXZlbiBieSB0aGUgIndoYXQiIHBhcmFtZXRlcik8L2xpPgoJCTxsaT4kYWxpYXMgKHRoZSBhbGlhcyBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkYWxpYXMgc2hvdWxkIGJlIGZhbHNlKTwvbGk+CgkJPGxpPiRpdGVtaWQgKHRoZSBpZCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkaXRlbWlkIHNob3VsZCBiZSBmYWxzZSk8L2xpPgoJPC91bD48L3A+Cgk8cD5Zb3UgbWlnaHQgbmVlZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvZiB0aGUgRkVVIG1vZHVsZTo8dWw+CgkJPGxpPkxvZ2dlZEluKCkgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4sIGFuZCBmYWxzZSBvdGhlcndpc2UuPC9saT4KCQk8bGk+TG9nZ2VkSW5JZCgpIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPkxvZ2dlZEluTmFtZSgpCXdpbGwgcmV0dXJuIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwkZ3JvdXBpZCkJCXJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgZ3JvdXAsIGZhbHNlIG90aGVyd2lzZTwvbGk+CgkJPGxpPkdldEdyb3VwSUQoJGdyb3VwbmFtZSkJcmV0dXJucyB0aGUgZ3JvdXAgaWQgYXNzb2NpYXRlZCB0byBhIGdyb3VwIG5hbWU8L2xpPgoJPC91bD48L3A+PGJyLz4KCTxwPk5vdywgaGVyZSBhcmUgdGhyZWUgYmFzaWMgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLjwvcD4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbG9nZ2VkIGluIHVzZXJzPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbG9nZ2VkIGluIHVzZXJzIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVICYmICRGRVUtPkxvZ2dlZEluKCkpewoJCSRyZXR1cm4gPSB0cnVlOwoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbWVtYmVycyBvZiBhIGdyb3VwPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbWVtYmVycyBvZiB0aGUgZ3JvdXAgIm15Z3JvdXAiIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJpZCA9ICRGRVUtPkxvZ2dlZEluSWQoKTsKCQkJJGdyb3VwaWQgPSAkRkVVLT5HZXRHcm91cElEKCJteWdyb3VwIik7CgkJCWlmKCRGRVUtPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwgJGdyb3VwaWQpKXsKCQkJCSRyZXR1cm4gPSB0cnVlOwoJCQl9CgkJfQoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG1lbWJlcnMgdG8gZWRpdCBvbmx5IGEgc2luZ2xlIGVsZW1lbnQ8L2I+PGJyLz4KCVN1cHBvc2UgeW91IGhhdmUgYSBGRVUgbWVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBvZiB5b3VyIGl0ZW0sIGFuZCB0aGF0IHRoZSB1c2VybmFtZSBvZiB0aGF0IG1lbWJlciBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0gKHNlZSBiZWxvdyBvbiBob3cgdG8gZG8gdGhpcykuIFlvdSBjb3VsZCByZXN0cmljdCBhY2Nlc3MgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJuYW1lID0gJEZFVS0+TG9nZ2VkSW5OYW1lKCk7CgkJCWlmKCR1c2VybmFtZSA9PSAkYWxpYXMpewoJCQkJJHJldHVybiA9IHRydWU7CgkJCX0KCQl9Cgl9Cgk8L3ByZT4KCTxwPlVzaW5nICRGRVUtPkdldFVzZXJQcm9wZXJ0eSgkcHJvcGVydHluYW1lKSwgeW91IGNvdWxkIHVzZSBzb21ldGhpbmcgZWxzZSB0aGFuIHRoZSB1c2VybmFtZS48YnIvPgoJSWYgcGVybWlzc2lvbnMgZGVwZW5kIG9uIHRoZSBhbGlhcyBvZiB0aGUgaXRlbSwgeW91IHNob3VsZCBtYWtlIHN1cmUgKHNlZSBTZXR0aW5ncykgdGhhdCB5b3VyIGZyb250ZW5kIHVzZXJzIGNhbid0IGNoYW5nZSBpdC48L3A+PGJyLz4KCTxwPlNob3VsZCB5b3UgbmVlZCBtb3JlIGluZm9ybWF0aW9ucyBhYm91dCB0aGUgaXRlbSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzbmlwcGV0IHRvIGxvYWQgdGhlIGZ1bGwgaXRlbSBvYmplY3Q6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7CgkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCJpZCI9PiRpdGVtaWQpKTsKCSRpdGVtID0gaXNzZXQoJGl0ZW1saXN0WzBdKT8kaXRlbWxpc3RbMF06ZmFsc2U7PC9wcmU+PGJyLz4KCTxwPkZpbmFsbHksIHlvdSBtYXkgdXNlICR3aGF0IHZhcmlhYmxlIHRvIGhhdmUgZGlmZmVyZW50IHBlcm1pc3Npb24gbWFuYWdlbWVudCBmb3IgZWFjaCBsZXZlbC4gQSBzd2l0Y2ggd291bGQgYmUgdGhlIHR5cGljYWwgc29sdXRpb246PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cglzd2l0Y2goJHdoYXQpewoJCWNhc2UgImxldmVsMSI6CgkJCS8vIGNvZGUKCQkJYnJlYWs7CgkJY2FzZSAibGV2ZWwyIjoKCQkJLy9jb2RlCgkJCWJyZWFrOwoJCS4uLihhbmQgc28gb24pCgl9PC9wcmU+PGJyLz4KCTxwPjxiPlRyaWdnZXJpbmcgdGhlIGNyZWF0aW9uIG9mIGEgRkVVIG1lbWJlciBmb3IgZWFjaCBpdGVtPC9iPjxici8+CglJZiB5b3UncmUgdXNpbmcgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhlIGxhc3QgZXhhbXBsZSwgeW91IG5lZWQgdG8gaGF2ZSBhIEZFVSB1c2VyIGZvciBlYWNoIGl0ZW0uIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgZXZlbnRzLjxici8+CglFdmVyeXRpbWUgYW4gaXRlbSBpcyBhZGRlZCwgbW9kaWZpZWQgb3IgZGVsZXRlZCwgdGhlIG1vZHVsZXMgc2VuZHMgYW4gPGk+ZXZlbnQ8L2k+IHRvIHRoZSBjbXMuIElmIHlvdSBnbyBpbnRvIEV4dGVuc2lvbnMgLT4gRXZlbnQgTWFuYWdlciwgeW91IHNob3VsZCBmaW5kIHRoZSBldmVudHMgc2VudCBieSB5b3VyIG1vZHVsZSBpbiB0aGUgbGlzdC4gQ2xpY2ssIGZvciBleGFtcGxlLCBvbiB0aGUgbW9kdWxlbmFtZV9hZGRlZCBldmVudC4gWW91IHdpbGwgbm90aWNlIHRoYXQgaGVyZSwgeW91IGNhbiBzZWxlY3QgYSBVc2VyIERlZmluZWQgVGFnIChVRFQpIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLiBTbyB3ZSBzaW1wbHkgbmVlZCB0byBkZXNpZ24gYW4gVURUIHRoYXQgd2lsbCBhZGQgYSBtZW1iZXIgd2hlbiBhIG5ldyBpdGVtIGlzIGNyZWF0ZWQuPC9wPgoJPHA+V2Ugd2lsbCBhc3N1bWUgeW91ciBpdGVtIGhhcyBhIGZpZWxkIG5hbWVkICJwYXNzd29yZCIsIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyB0aGUgRkVVIHBhc3N3b3JkLCB0aGF0IHlvdXIgbW9kdWxlIGlzIG5hbWVkICJOQU1FT0ZNT0RVTEUiLCBhbmQgdGhlIGxldmVsIGlzIG5hbWVkICJNWUxFVkVMIi4gTG9vayBhdCB0aGUgZm9sbG93aW5nIFVEVDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkvLyBmaXJzdCwgd2UgY2hlY2sgaWYgYW4gaXRlbSBoYXMgYmVlbiBhZGRlZCBvbiB0aGUgbGV2ZWwgd2UncmUgY29uY2VybmVkIHdpdGgKCWlmKCRwYXJhbXNbIndoYXQiXSAhPSAiTVlMRVZFTCIpCXJldHVybiBmYWxzZTsKCQoJLy8gd2UgcmV0cmlldmUgdGhlIHR3byBtb2R1bGVzCgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CgkkbXltb2QgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ05BTUVPRk1PRFVMRScpOwoJaWYoISRGRVUgfHwgISRteW1vZCkJcmV0dXJuIGZhbHNlOwoJCgkvLyB3ZSB0aGVuIHJldHJpZXZlIHRoZSBpdGVtCgkkaXRlbWxpc3QgPSAkbXltb2QtPmdldF9NWUxFVkVMKGFycmF5KCJpZCI9PiRwYXJhbXNbIml0ZW1pZCJdKSk7CglpZighaXNzZXQoJGl0ZW1saXN0WzBdKSkJcmV0dXJuIGZhbHNlOwoJJGl0ZW0gPSAkaXRlbWxpc3RbMF07CgkKCS8vIHdlIHRoZW4gYWRkIHRoZSBGRVUgdXNlcgoJJGV4cGlyZXNfaW4gPSAzNjU7IC8vIHNldHMgdGhlIG51bWJlciBvZiBkYXlzIHVudGlsIGV4cGlyYXRpb24KCSRleHBpcmVzID0gc3RydG90aW1lKHNwcmludGYoIislZCBkYXlzIiwkZXhwaXJlc19pbiksIHRpbWUoKSk7CgkkRkVVLT5BZGRVc2VyKCRpdGVtLT5uYW1lLCAkaXRlbS0+cGFzc3dvcmQsICRleHBpcmVzKTsKCQk8L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgaG93IHRoZSBwcmV0dHkgdXJscyBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcywgdG8gc29tZSBleHRlbnQuPC9iPjwvcD4KCQk8cD5JJ2xsIHRyeSB0byBtYWtlIHRoaXMgdmVyeSBjb21wcmVoZW5zaXZlLiBCZWZvcmUgdGFsa2luZyBvZiBtb2R5aW5nIGl0LCBsZXQncyBzZWUgaG93IHRoaXMgd29ya3MuPC9wPgoJCTxwPkJhc2ljYWxseSwgdGhlIG1vZHVsZSBoYXMgdHdvIGtpbmRzIG9mIHVybHM6PGJyPgoJCVR5cGUgQTogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL2RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+PGJyLz4KCQlhbmQ8YnIvPgoJCVR5cGUgQjogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL25hbWVvZmxldmVsL25hbWVvZnBhcmVudC81LzwvY29kZT48YnIvPgoJCShpZiB5b3UgYXJlIHNlcGFyYXRpbmcgZWxlbWVudHMgaW50byBwYWdlcywgeW91IHdpbGwgbm90aWNlIHRoYXQgdHlwZSBCIGhhcyBzb21lIHZhcmlhdGlvbnMuLi4gd2Ugd2lsbCBkaXNjdXNzIHRoaXMgbGF0ZXIuKTwvcD4KCQk8cD5UeXBlIEEgaXMgdXNlZCB3aGVuIHdlIGFyZSBsb29raW5nIGF0IHRoZSBkZXRhaWxzIG9mIGEgbGFzdC1sZXZlbCBvYmplY3QuIFR5cGUgQiBpcyB1c2VkIHdoZW4gd2UgZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMuIE5vdywgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGhhcyB0byBjb250YWluIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgZGlzcGxheWVkLiBTbyBsZXQncyB0YWtlIGEgbG9vayBhYm91dCB3aGF0J3MgY29tbW9uIHRvIGJvdGggdHlwZXMgb2YgdXJsczo8L3A+CgkJPHA+VGhlIDxiPm5hbWVvZm1vZHVsZS88L2I+IHRlbGxzIHVzIHRoYXQgdGhlIG1vZHVsZSBzaG91bGQgYmUgY2FsbGVkLjxici8+CgkJVGhlIDxiPjUvPC9iPiAodGhhdCBhbm5veWluZyBudW1iZXIpIGlzIHRoZSByZXR1cm5pZCBvZiB0aGUgcGFnZS4gSW4gb3RoZXIgd29yZHMsIGl0IHRlbGxzIHVzIG9uIHdoYXQgcGFnZSBvZiB0aGUgY21zIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhlIG1vZHVsZSBzaG91bGQgYmUgc2hvd24uIEV2ZW4gdGhvdWdoIHRoZSBwYWdlIGNvbnRlbnQgaXMgcmVwbGFjZWQgYnkgd2hhdCB0aGUgbW9kdWxlIGhhcyB0byBkaXNwbGF5LCB0aGlzIGlzIHZlcnkgaW1wb3J0YW50IGFzIGl0IGRldGVybWluZXMsIGZvciBpbnN0YW5jZSwgd2hhdCBwYWdlIHRlbXBsYXRlIHNob3VsZCBiZSB1c2VkLjwvcD4KCQk8cD5XaGVuIHRoZSA8Yj4vZGV0YWlsLzwvYj4gaXMgaW4gdGhlIHVybCwgdGhlIG1vZHVsZSBrbm93cyB0aGF0IHdlJ3JlIGRpc3BsYXlpbmcgdGhlIGRldGFpbHMgb2YgYSBsYXN0IGxldmVsIGl0ZW0uIEFsbCB3ZSBuZWVkIHRvIHNwZWNpZnkgaXMgd2hpY2ggaXRlbSB0byBkaXNwbGF5LCBhbmQgdGhhdHMgdGhlIDxiPm5hbWVvZm9iamVjdDwvYj4gcGFydC48L3A+CgkJPHA+V2hlbiB0aGUgPGI+L2RldGFpbC88L2I+IDxpPmlzbid0PC9pPiBpbiB0aGUgdXJsLCB0aGUgbW9kdWxlIGNvbmNsdWRlcyB0aGF0IHdlIGFyZSBkaXNwbGF5aW5nIGEgbGlzdCBvZiBzb21ldGhpbmcqLiBUaGUgZWxlbWVudHMgb2Ygd2hhdCBsZXZlbCBhcmUgZGlzcGxheWVkIGlzIGRldGVybWluZWQgYnkgd2hhdGV2ZXIgaXMgaW4gdGhlIHBsYWNlIG9mICIvZGV0YWlsLyI6IGluIG91ciBjYXNlLCA8Yj5uYW1lb2ZsZXZlbC88L2I+LiBBIHVybCBsaWtlIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzUvPC9jb2RlPiB3b3VsZCBiZSB2YWxpZCwgYW5kIHdvdWxkIHRlbGwgdGhlIG1vZHVsZSB0byBkaXNwbGF5IGFsbCBlbGVtZW50cyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLjxici8+CgkJVGhlIDxiPi9uYW1lb2ZwYXJlbnQvPC9iPiBwYXJ0IHRlbGxzIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBvbmx5IHRoZSBpdGVtcyBvZiB0aGUgY2hvc2VuIGxldmVsIHRoYXQgaGF2ZSAibmFtZW9mcGFyZW50IiBhcyBhIHBhcmVudC48L3A+CgkJPHA+VGhlIHByZXR0eSB1cmxzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgdGhlIG1haW4gbW9kdWxlIGZpbGUgKHdoaWNoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBOQU1FT0ZZT1VSTU9EVUxFLm1vZHVsZS5waHApLiBPcGVuIHRoaXMgZmlsZSwgYW5kIGRvIGEgc2VhcmNoIHRvIGZpbmQgdGhlIGZ1bmN0aW9uLiBXaGF0IG1hdHRlcnMgaW4gdGhlcmUgaXMgdGhlIGxpbmVzIHRoYXQgbG9vayBsaWtlIHRoaXMgKHdpdGhvdXQgdGhlIG51bWJlcnMgb24gdGhlIGxlZnQpIDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CiMxCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzIJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzMJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojNAkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzUJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTs8L3ByZT4KCQk8cD5FYWNoIGxpbmUgaGVyZSByZWdpc3RlciBhIGRpZmZlcmVudCB1cmwgc3RydWN0dXJlLjxici8+CgkJTGluZSAjMSByZWdpc3RlcnMgdGhlIFR5cGUgQSB1cmxzLjxici8+CgkJQWxsIHRoZSBvdGhlciBsaW5lcyByZWdpc3RlciBUeXBlIEIgdXJsczo8YnIvPgoJCUxpbmUgIzIgaXMgZm9yIHdoZW4gbm8gcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvNTwvY29kZT48YnIvPgoJCUxpbmUgIzMgaXMgdXNlZCB3aGVuIGEgcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvbmFtZW9mcGFyZW50LzU8L2NvZGU+PGJyLz4KCQlMaW5lICM0IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzIgdGhhdCBoYW5kbGVzIHNlcGFyYXRpb24gaW50byBwYWdlcyAod2hlbiB3ZSBzZXBhcmF0ZSBpbnRvIHBhZ2VzLCB3ZSBuZWVkIHRvIGtub3cgd2hpY2ggcGFnZSB3ZSdyZSBsb29raW5nIGF0KS4gRm9yIGV4YW1wbGUsIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzIvMTAvNTwvY29kZT4gd291bGQgbWVhbiB0aGF0IHdlIGFyZSBsb29raW5nIGF0IHRoZSBsaXN0IG9mIGFsbCBpdGVtcyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLCB0aGF0IHdlIGFyZSBzZXBhcmF0aW5nIGluIHBhZ2VzIHdpdGggIjEwIiBlbGVtZW50cyBwZXIgcGFnZSwgYW5kIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIHBhZ2UgIjIiLjxici8+CgkJSW4gcHJldHR5IG11Y2ggdGhlIHNhbWUgd2F5LCBsaW5lICM1IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzMuPC9wPgoJCTxwPlRoZSA8PC8+cGFyYW1uYW1lPiB0aGluZyBtZWFucyB0aGF0IHdoYXRldmVyIGlzIGluIHRoYXQgcGxhY2UgaW4gdGhlIHVybCB3aWxsIGJlIGludGVycHJldGVkIGFzIHRoZSAicGFyYW1uYW1lIiBwYXJhbWV0ZXIuIEluIG90aGVyIHdvcmRzLCBlYWNoIHVybCBzdHJ1Y3R1cmUgb3V0cHV0IGRpZmZlcmVudCBwYXJhbWV0ZXJzIHRoYXQgd2lsbCB0ZWxsIHRoZSBtb2R1bGUgd2hhdCB0byBkby48L3A+CgkJPHA+PGI+TW9kaWZ5aW5nIGFsbCB0aGlzLi4uPC9iPjxici8+CgkJVGhlcmUgYXJlIHNvbWUgdGhpbmdzIHRoYXQgeW91IGNhbiBjaGFuZ2UsIHNvbWUgdGhhdCB5b3UgY2FuJ3QsIGFuZCBzb21lIHRoYXQgeW91IGNhbiBhdCBhIHByaWNlLjwvcD4KCQk8cD5MZXQncyBzYXkgeW91IGRvbid0IGxpa2UgdGhlIHdvcmQgIjxiPmRldGFpbDwvYj4iIGluIHRoZSB1cmwsIGFuZCB3b3VsZCBsaWtlIHRvIGNoYW5nZSBpdCB0byBzb21ldGhpbmcgZWxzZSoqLiBGaXJzdCwgbGV0J3Mgbm90IHRoYXQgdGhlICJbRGRdIiBwYXJ0IGluIHRoZSB1cmwgc3RydWN0dXJlIHNheXMgdGhhdCB0aGVyZSBjYW4gYmUgZWl0aGVyIGEgIkQiIG9yIGEgImQiIGhlcmUuIAoJCUluIG90aGVyIHdvcmRzLCA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvZGV0YWlsL25hbWVvZm9iamVjdC81LzwvY29kZT4gaXMgdGhlIHNhbWUgdGhpbmcgYXMgPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL0RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+Ljxici8+CgkJWW91IGNhbiBjaGFuZ2UgdGhlIHdvcmQgImRldGFpbCIgZm9yIHNvbWV0aGluZyBlbHNlLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBhbmQgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGNhcnJ5IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgc2hvd24uIEZvciBleGFtcGxlLCBpZiBvbmUgb2YgeW91ciBsZXZlbCBpcyBuYW1lZCAicHJvZHVjdCIsIHlvdSBjb3VsZG4ndCByZXBsYWNlIHRoZSB3b3JkICJkZXRhaWwiIGJ5IHRoZSB3b3JkICJwcm9kdWN0Ii4gSWYgeW91IGRpZCwgdGhlIG1vZHVsZSBjb3VsZG4ndCBrbm93IGlmIHRoZSB3b3JkICJwcm9kdWN0IiBpdCBlbmNvdW50ZXJzIG1lYW5zIHRoYXQgd2UncmUgd2F0Y2hpbmcgdGhlIGRldGFpbHMgb2YgYW4gaXRlbSwgb3IgaWYgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgd2F0Y2hpbmcgYSBsaXN0IG9mIHRoZSBpdGVtcyBpbiB0aGUgInByb2R1Y3QiIGxldmVsLjwvcD4KCQk8cD5TbyBsZXQncyBzYXkgd2Ugd2FudCB0byBjaGFuZ2UgImRldGFpbCIgZm9yICJ2aWV3IiAocHJvdmlkZWQgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBhIGxldmVsIGNhbGxlZCAidmlldyIpLiBJbiBsaW5lICMxLCB3ZSB3b3VsZCByZXBsYWNlIDxjb2RlPihbRGRdZXRhaWwpPC9jb2RlPiB3aXRoIDxjb2RlPih2aWV3KTwvY29kZT4gKG9yIDxjb2RlPihbVnZdaWV3KTwvY29kZT4sIGlmIHlvdSB3YW50IGl0IHRvIGFjY2VwdCBib3RoICJWaWV3IiBhbmQgInZpZXciKS48L3A+CgkJPHA+PHU+QnV0IHRoaXMgaXMgbm90IGVub3VnaC48L3U+IFlvdSd2ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIHVybHMgYXJlIGludGVycHJldGVkLCBidXQgbm90IHRoZSB3YXkgdGhleSBhcmUgY3JlYXRlZC4gSW4gdGhlIHNhbWUgZmlsZSwgc2VhcmNoIGZvciB0aGUgQnVpbGRQcmV0dHlVUkxzIGZ1bmN0aW9uLiBJdCBzaG91bGQgY29udGFpbiBzb21ldGhpbmcgbGlrZSB0aGlzOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCSRwcmV0dHl1cmwgPSAibmFtZW9mbW9kdWxlLyI7CiMyCQlpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7CiMzCQkJJHByZXR0eXVybCAuPSAiZGV0YWlsLyIuJHBhcmFtc1siYWxpYXMiXTsKIzQJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsKIzUJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXS4iLyIuJHBhcmFtc1sicGFyZW50Il07CiM2CQl9ZWxzZXsKIzcJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXTsKIzgJCX0KIzkJCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiBpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkkcHJldHR5dXJsIC49ICIvIi4kcGFyYW1zWyJwYWdlaW5kZXgiXS4iLyIuJHBhcmFtc1sibmJwZXJwYWdlIl07CiMxMAkJJHByZXR0eXVybCAuPSAiLyIuJHJldHVybmlkOwojMTEJCXJldHVybiAkcHJldHR5dXJsOzwvcHJlPgoJCTxwPlRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyB0aGUgcGFyYW1ldGVycyBpbnRvIGEgdXJsLjxici8+CgkJTGluZSAjMSBzdGFydHMgd2l0aCB0aGUgbW9kdWxlJ3MgbmFtZS48YnIvPgoJCUluIGxpbmVzICMyLSMzLCBpZiB3ZSB3YW50IHRvIHdhdGNoIHRoZSBkZXRhaWxzIG9mIGFuIGl0ZW0sIHdlIGFkZCB0aGUgImRldGFpbC8iIGJsb2NrIHRvIHRoZSB1cmwuPGJyLz4KCQlJZiB0aGlzIGlzbid0IHRoZSBjYXNlLCB3ZSBhZGQgdGhlIGxldmVsIG9mIHRoZSBpdGVtcyB3ZSB3YW50IHRvIHNob3cgYW5kLCBpZiBzcGVjaWZpZWQsIHRoZSBwYXJlbnQgKGxpbmVzICM0IHRvICM4KS4gSW4gbGluZSAjOSwgaWYgd2UncmUgc2VwYXJhdGluZyBpbnRvIHBhZ2VzIHdlIGFkZCB0aGUgcGFnZSB3ZSB3aXNoIHRvIGxvb2sgYW5kIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHBhZ2UuCgkJRmluYWxseSwgaW4gbGluZSAjMTAsIHdlIGFkZCB0aGUgaWQgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggaXQgc2hvdWxkIGJlIGRpc3BsYXllZC48L3A+CgkJPHA+SWYgd2UgY2hhbmdlZCAiW0RkXWV0YWlsIiB0byAiW1Z2XWlldyIgaW4gdGhlIFNldFBhcmFtZXRlcnMoKSBmdW5jdGlvbiwgd2UgbXVzdCBhbHNvIGNoYW5nZSB0aGUgImRldGFpbC8iIGluIGxpbmUgIzMgZm9yICJ2aWV3LyIuPGJyLz5Ob3csIHRoaXMgc2hvdWxkIGRvIHRoZSB0cmljay48L3A+CgkJPHA+PGI+Q2FuIEkgZ2V0IHJpZCBvZiB0aGUgcmV0dXJuaWQ/PC9iPjxici8+Tm8sIG5vdCByZWFsbHkuIEhvd2V2ZXIsIGlmIHlvdSB0aGUgbW9kdWxlIGlzIDx1PmFsd2F5czwvdT4gZGlzcGxheWVkIGluIHRoZSBzYW1lIHBhZ2UgKGkuZS4sIGlmIGl0J3MgPHU+YWx3YXlzPC91PiB0aGUgc2FtZSBudW1iZXIpLCB3ZSBjb3VsZCByZW1vdmUgaXQgZnJvbSB0aGUgdXJsIGFuZCBwcm92aWRlIGl0IGluIGFub3RoZXIgd2F5LiBIZXJlJ3MgaG93IHRvIGRvIGl0OjwvcD4KCQk8cD5MZXQncyBzYXkgdGhlIGlkIG9mIHRoZSBwYWdlIGluIHdoaWNoIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGNhbGxlZCAodGhlIG51bWJlciB3ZSdyZSB0cnlpbmcgdG8gZ2V0IHJpZCBvZikgaXMgNS48YnIvPgoJCTEuIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgeW91ciBtb2R1bGUsIHJlbW92ZSBhbGwgPGNvZGU+XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKTwvY29kZT4gcGFydHMuIChpdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0byBjb3B5IGFuZCBwYXN0ZSB0aGUgb3JpZ2luYWwgbGluZXMganVzdCBpbiBjYXNlLi4uIHlvdSBjYW4gY29tbWVudCBsaW5lcyB1c2luZyA8Y29kZT4vLzwvY29kZT4pLjxici8+CgkJMi4gaW4gdGhlIEJ1aWxkUHJldHR5VVJMcygpIGZ1bmN0aW9uIG9mIHlvdXIgbW9kdWxlLCBjb21tZW50IChhZGQgPGNvZGU+Ly88L2NvZGU+IGJlZm9yZSBpdCkgdGhlIGxpbmUgIzEwICg8Y29kZT4vLyAkcHJldHR5dXJsIC49ICIvIi4kcmV0dXJuaWQ7PC9jb2RlPikuPGJyLz4KCQkzLiB3ZSBub3cgbmVlZCB0byBwcm92aWRlIHRoZSBpZC4gR28gYmFjayB0byB0aGUgU2V0UGFyYW1ldGVycygpIGZ1bmN0aW9uLCBhbmQgZm9yIGVhY2ggbGluZSwganVzdCBhZnRlciB0aGUgPGNvZGU+JCIvPC9jb2RlPiBwYXJ0IChhbmQgYmVmb3JlIHRoZSBjbG9zdXJlIG9mIHRoZSBwYXJlbnRoZXNpcyksIGFkZCA8Y29kZT4sIGFycmF5KCJyZXR1cm5pZCI9PjUpPC9jb2RlPiAod2l0aCB0aGUgY29tbWEpLCB3aGVyZSAiNSIgaXMgeW91ciBpZC4gRm9yIGV4YW1wbGUsIHRoaXM6PGJyLz4KCQk8Y29kZT4kdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspJC8iKTs8L2NvZGU+PGJyLz4KCQlzaG91bGQgYmVjb21lOjxici8+CgkJPGNvZGU+JHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyhbRGRdZXRhaWwpXC8oP1A8YWxpYXM+W15cL10rKSQvIiwgYXJyYXkoInJldHVybmlkIj0+NSkpOzwvY29kZT48YnIvPgoJCShSZW1lbWJlciBub3QganVzdCB0byBjb3B5IGFuZCBwYXN0ZSBsaW5lcyBmcm9tIHRoaXMgaGVscCwgYmVjYXVzZSB5b3VyIG1vZHVsZSBpcyBwcm9iYWJseSA8aT5ub3Q8L2k+IG5hbWVkICJuYW1lb2Ztb2R1bGUiKTxici8+CgkJVGhpcyBzaG91bGQgZG8gdGhlIHRyaWNrLCBidXQgdGhlIG1vZHVsZSB3aWxsIG5ldmVyIHVzZSBhbm90aGVyIHBhZ2UgdG8gZGlzcGxheSBpdHMgY29udGVudC48L3A+CgkJPHA+PHU+RmluYWwgbm90aWNlOjwvdT4gSWYgeW91IGNoYW5nZSB0aGUgcHJldHR5IHVybHMgYW5kIG1ha2UgdXNlIG9mIHRoZSAiaXNfc2VsZWN0ZWQiIGF0dHJpYnV0ZXMgaW4geW91ciB0ZW1wbGF0ZXMsIHlvdSBtaWdodCBhbHNvIGhhdmUgdG8gY2hhbmdlIHRoZSBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uICh0YWtlIGEgbG9vayA8YSBocmVmPSIjcTE0Ij5oZXJlPC9hPikuPC9wPgoJCTxwIHN0eWxlPSJmb250LXNpemU6IDExcHg7Ij48YnIvPiogaWYgdGhlcmUgaXMgb25seSBvbmUgaXRlbSB0byBkaXNwbGF5LCBhbmQgaWYgeW91IGFyZW4ndCB1c2luZyB0aGUgImZvcmNlbGlzdCIgcGFyYW1ldGVyLCB0aGUgZGV0YWlscyB3aWxsIGJlIGRpc3BsYXllZCBpbnN0ZWFkIG9mIGEgbGlzdC48YnIvPgoJCSoqIG5vLCB5b3UgY2FuJ3QganVzdCBnZXQgcmlkIG9mIGl0LCB1bmxlc3MgeW91IGNoYW5nZSBhbGwgcmVnaXN0ZXJlZCB1cmxzLi4uIGZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIGhhdmluZyBhICIvZGV0YWlsLyIsIGFsbCBvdGhlciB1cmxzIGNvdWxkIGhhdmUgYSAiL2xpc3QvIiBibG9jay48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxOCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlNpbmNlIDEuOC42LCB0aGlzIGhhcyBiZWNvbWUgYSBzaW1wbGUgb3B0aW9uIHRvIHR1cm4gb24gaW4gdGhlICJTZXR0aW5ncyIgdGFiLi4uPC9wPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPk9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0LnBocCBmaWxlLiBBcm91bmQgdGhlIGxpbmUgIzE2IHlvdSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJCSRmb3JjZWxpc3QgPSBpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSk/JHBhcmFtc1siZm9yY2VsaXN0Il06ZmFsc2U7PC9wcmU+CgkJPHA+V2hhdCB0aGlzIHNheXMgaXMgdGhhdCBpZiB0aGUgZm9yY2VsaXN0IHBhcmFtZXRlciBoYXMgYmVlbiBzZXQsIHdlIHVzZSB0aGlzIHZhbHVlLCBhbmQgaWYgaXQgaGFzbid0LCB3ZSB1c2UgdGhlIHZhbHVlICJmYWxzZSIuPGJyLz4KCQlDaGFuZ2luZyB0aGlzIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBhIDxjb2RlPnRydWU8L2NvZGU+IHdvdWxkIG1lYW4gdGhhdCB0aGUgZm9yY2VsaXN0IG1vZGUgaXMgYWx3YXlzIGVuYWJsZWQsIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLjxici8+CgkJQnV0IHRoYXQncyBub3QgZXhhY3RseSB3aGF0IHdlIHdhbnQsIGZvciB0aGlzIHdvdWxkIG1lYW4gdGhhdCB3ZSBhbHdheXMgZGlzcGxheSBhIGxpc3QsIGV2ZW4gd2hlbiB3ZSdyZSB0cnlpbmcgdG8gZGlzcGxheSBhbiBpdGVtJ3MgZGV0YWlscy4gU28gdGhlIHByb3BlciBjb2RlIHdvdWxkIGJlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkkZm9yY2VsaXN0ID0gaXNzZXQoJHBhcmFtc1siZm9yY2VsaXN0Il0pPyRwYXJhbXNbImZvcmNlbGlzdCJdOihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKT9mYWxzZTp0cnVlKTs8L3ByZT4KCQk8cD5UaGlzIHdheSwgJGZvcmNlbGlzdCB3aWxsIGJlIGZhbHNlIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLCBhbmQgdW5sZXNzIGFuIGFsaWFzICh1c2VkIGluIGRldGFpbCBsaW5rcykgaXMgc3BlY2lmaWVkLjwvcD4KCQk8cD4oVHdvIGxpbmVzIGJlbG93LCB5b3UgY291bGQgZG8gdGhlIHNhbWUga2luZCBvZiB0aGluZyBmb3IgdGhlICJpbmxpbmUiIHBhcmFtZXRlci4uLik8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+V2hhdCdzIHdpdGggdGhpcyBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+V2hhdCBpcyBpdCBmb3I/IEFuZCB3aHkgaXMgaXQgc3VjaCBhIG1lc3M/PC9iPjwvcD4KCQk8cD5JbiB0aGUgbWFpbiBtb2R1bGUgZmlsZSwgdGhlcmUgaXMgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0X21vZHVsZUdldFZhcnMoKS4gQmFzaWNhbGx5LCB0aGUgZnVuY3Rpb24gcmV0cmlldmUgdGhlIG1vZHVsZSBhY3Rpb24gcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwuPGJyLz4KCQlJbWFnaW5lIHRoYXQgaW4geW91ciB0ZW1wbGF0ZSwgaW4gYSBjb2x1bW4gb24gdGhlIGxlZnQsIHlvdSBjYWxsIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBhIGNhdGVnb3J5IGxpc3QuIFdoZW4geW91IGNsaWNrIG9uIGFuIGNhdGVnb3J5LCB0aGUgbGlzdCBzdGF5cyB0aGVyZSwgYnV0IHRoZSBtYWluIGNvbnRlbnQgYmxvY2sgZGlzcGxheXMgdGhlIGNoaWxkcmVuIHdpdGhpbiB0aGF0IGNhdGVnb3J5LiBOb3csIGluIHRoZSBjYXRlZ29yeSBsaXN0LCB5b3UgbWlnaHQgd2FudCB0byBzaG93IHdoaWNoIGNhdGVnb3J5IGlzIHNlbGVjdGVkICh1c2luZyB0aGUgJGl0ZW0tPmlzX3NlbGVjdGVkIGF0dHJpYnV0ZSkuIEJ1dCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjYXRlZ29yeSBsaXN0IGlzIGNhbGxlZCA8aT5iZWZvcmU8L2k+IHRoZSBtYWluIG1vZHVsZSBhY3Rpb24gKHRoZSBsaXN0IG9mIGNoaWxkcmVuKSwgYW5kIHRodXMgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzIGFyZW4ndCB5ZXQgcGFyc2VkLjxici8+CgkJVGhpcyBzdWJqZWN0IGhhcyBiZWVuIGRpc2N1c3NlZCBpbiB0aGUgZm9ydW1zICg8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL3RvcGljLDMzMzM0LjAuaHRtbCI+aGVyZTwvYT4pLCBhbmQgSSBjaG9zZSB0aGUgc29sdXRpb24gdGhhdCBpcyB0aGUgZWFzaWVzdCB0byBpbXBsZW1lbnQgZm9yIHRoZSB1c2VyOiByZXRyaWV2ZSB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwgZXZlbiBiZWZvcmUgdGhleSBhcmUgcGFyc2VkIGJ5IHRoZSBjbXMuIEl0J3MgYSByYXRoZXIgY29tcGxpY2F0ZWQgZnVuY3Rpb24gYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgcHJldHR5dXJscyBhbmQgcmV3cml0dGVuIHVybHMuLi48YnIvPgoJCU9mIGNvdXJzZSwgaXQgbWVhbnMgdGhhdCBpZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIHdheSBwcmV0dHl1cmxzIGFyZSBtYWRlIGFuZCBzdGlsbCB1c2UgdGhlIGlzX3NlbGVjdGVkIGF0dHJpYnV0ZSwgeW91J3JlIGdvbm5hIGhhdmUgdG8gcGxheSBpbiB0aGlzIGluZWxlZ2FudCBjb2RlLiBCdXQgaGV5LCBJJ20gd3JpdGluZyB0aGlzIGp1c3QgdG8gbWFrZSBpdCBjbGVhcmVyLi4uPC9wPgoJCTxici8+PHA+PGI+SG93IGRvZXMgaXQgd29yaywgYW5kIGhvdyB0byBjaGFuZ2UgaXQ/PC9iPjwvcD4KCQk8cD5CZWZvcmUgd2UgZ28sIGhlcmUncyBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCWZ1bmN0aW9uIGdldF9tb2R1bGVHZXRWYXJzKCl7CiMxCQkvLyB1bm9ydGhvZG94IGhhY2sgc28gdGhhdCBkaWZmZXJlbnQgY2FsbHMgb2YgdGhlIG1vZHVsZSBzcGVhayB3aXRoIGVhY2ggb3RoZXIKIzIJCS8vIGJhc2ljYWxseSwgd2UgcmV0cmlldmUgcGFyYW1ldGVycyBpbiB0aGUgdXJsIHRoYXQgd2VyZSBtZWFudCBmb3Igb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBtb2R1bGUKIzMJCWdsb2JhbCAkX0dFVDsKIzQJCWdsb2JhbCAkZ0NtczsKIzUJCSRnbG9iYWxtb2R1bGV2YXJzID0gYXJyYXkoKTsKIzYJCWlmKGlzc2V0KCRfR0VUWyJtYWN0Il0pKXsKIzcJCQkvLyBpZiB3ZSBhcmVuJ3QgdXNpbmcgcHJldHR5IHVybHMuLi4KIzgJCQkkbW9kaW5mbyA9IGV4cGxvZGUoIiwiLCRfR0VUWyJtYWN0Il0pOwojOQkJCWlmKGlzc2V0KCRtb2RpbmZvKSAmJiAkbW9kaW5mb1swXSA9PSAkdGhpcy0+R2V0TmFtZSgpKXsKIzEwCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXSkpCiMxMQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhcmVudCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXTsKIzEyCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il0pKQojMTMJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il09JF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXTsKIzE0CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdKSkKIzE1CQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXT0kX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXTsKIzE2CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXSkpCiMxNwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXTsKIzE4CQkJfQojMTkJCX1lbHNlaWYoJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSB8fCAkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSl7CiMyMAkJCSRwYXJhbXMgPSBhcnJheSgpOwojMjEJCQlpZigkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7CiMyMgkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgYW4gZXh0ZXJuYWwgbW9kX3Jld3JpdGUsIGFzc3VtaW5nIHlvdSBhcmUgdXNpbmcgdGhlIHZlcnkKIzIzCQkJCS8vIGJhc2ljIHJld3JpdGUgd2hpY2ggcHV0cyB0aGUgbW9kdWxlIGluZm9ybWF0aW9ucyBpbnNpZGUgdGhlIHBhZ2UgdmFyaWFibGUKIzI0CQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfR0VUWyJwYWdlIl0pOwojMjUJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpewojMjYJCQkJCWlmKCRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsKIzI3CQkJCX0KIzI4CQkJfWVsc2VpZighJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0gJiYgJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSAmJiBpc3NldCgkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSkpewojMjkJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIHRoZSBpbnRlcm5hbCBwcmV0dHkgdXJscwojMzAJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pOwojMzEJCQkJJHN0YXJ0ZWQgPSBmYWxzZTsKIzMyCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsKIzMzCQkJCQlpZigkc3RhcnRlZCAmJiAkcGFydCAhPSAiIikJJHBhcmFtc1tdID0gJHBhcnQ7CiMzNAkJCQkJaWYoc3RydG9sb3dlcigkcGFydCkgPT0gImluZGV4LnBocCIpCSRzdGFydGVkID0gdHJ1ZTsKIzM1CQkJCX0KIzM2CQkJfQojMzcJCQlpZihpc3NldCgkcGFyYW1zWzBdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMF0pID09IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSkpewojMzgJCQkJIC8vIHdlIGFyZSBpbiBhIG1vZHVsZSBhY3Rpb24KIzM5CQkJCWlmKCFpc3NldCgkcGFyYW1zWzFdKSB8fCBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJxdWVyeSIpewojNDAKIzQxCQkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sxXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAiZGV0YWlsIil7CiM0MgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICJ0c3ViYSI7CiM0MwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbImFsaWFzIl0gPSAkcGFyYW1zWzJdOwojNDQJCQkJfWVsc2V7CiM0NQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRwYXJhbXNbMV07CiM0NgkJCQkJc3dpdGNoKGNvdW50KCRwYXJhbXMpKXsKIzQ3CQkJCQkJY2FzZSA2OgojNDgJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1szXTsKIzQ5CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbNF07CiM1MAkJCQkJCWNhc2UgNDoKIzUxCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXSA9ICRwYXJhbXNbMl07CiM1MgkJCQkJCQlicmVhazsKIzUzCQkJCQkJY2FzZSA1OgojNTQJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1syXTsKIzU1CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbM107CiM1NgkJCQkJCQlicmVhazsKIzU3CQkJCQl9CiM1OAkJCQl9CiM1OQkJCX0KIzYwCQl9CiM2MQkJcmV0dXJuICRnbG9iYWxtb2R1bGV2YXJzOwoJfTwvcHJlPgoJCTxwPk5vdyB0aGVyZSBhcmUgZm91ciBwb3NzaWJsZSBzY2VuYXJpb3M6PGJyLz4KCQkxLiBUaGVyZSBpcyBubyByZXdyaXRlIG9yIHByZXR0eXVybHMgYXQgYWxsICh0aGF0J3MgdGhlIGVhc2llc3QuLi4gbGluZXMgNyB0byAxOCBkZWFsIHdpdGggdGhpcyk8YnIvPgoJCTIuIFdlIGFyZSB1c2luZyBpbnRlcm5hbCBwcmV0dHl1cmxzIHdpdGhvdXQgbW9kX3Jld3JpdGUgKGxpbmVzIDI5IHRvIDM1LCBhbmQgMzcgdG8gNTkpPGJyLz4KCQkzLiBXZSBhcmUgdXNpbmcgaW50ZXJuYWwgcHJldHR5dXJscyBhbG9uZyB3aXRoIHRoZSBzdGFuZGFyZCBhc3N1bWVkIG1vZF9yZXdyaXRlIChsaW5lcyAyMiB0byAzNywgYW5kIDM3IHRvIDU5KTxici8+CgkJNC4gV2UgYXJlIHVzaW5nIGEgbm9uLXN0YW5kYXJkIG1vZF9yZXdyaXRlLi4uIGluIHRoYXQgY2FzZSwgeW91J2xsIGVpdGhlciBoYXZlIHRvIGZvcmdldCBhYm91dCB0aGUgaXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9yIHRvIHdyaXRlIHRoZSBjb2RlIHlvdXJzZWxmLjwvcD4KCQk8cD48Yj5DYXNlIDE6IGdvb2Qgb2wnIHVybHM8L2I+PGJyLz4KCQlJZiB3ZSBmaW5kIHRoZSAibWFjdCIgaW4gdGhlIEdFVCBwYXJhbWV0ZXJzLCB0aGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggc3RhbmRhcmQgdXJscy4gV2UganVzdCBoYXZlIHRvIGJyZWFrIHRoZSBtYWN0IHZhbHVlIGludG8gcGllY2VzLCBtYWtlIHN1cmUgaXQncyBhbiBhY3Rpb24gb2Ygb3VyIG1vZHVsZSwgYW5kIHJldHJpZXZlIHRoZSBkaWZmZXJlbnQgcGFyYW1ldGVycyBieSB0aGVpciBuYW1lIChhbG9uZyB3aXRoIHRoZSAkaWQpLjwvcD4KCQk8cD48Yj5DYXNlIDI6IGludGVybmFsIHByZXR0eSB1cmxzPC9iPjxici8+CgkJTGluZXMgMjkgdG8gMzUgcmV0cmlldmUgdGhlIHVybCwgc2VwYXJhdGUgaXQgaW50byBwYXJ0cyAoZWFjaCBwYXJ0IGJlaW5nIGEgZmFrZSBmb2xkZXIgaW4gdGhlIHVybCksIGFuZCBvbmx5IGtlZXAgdGhlIHBhcnRzIHRoYXQgYXJlIGFmdGVyIHRoZSAiaW5kZXgucGhwLyIuPC9wPgoJCTxwPkxpbmVzIDM3IHRvIDU5IHRyeSB0byBmaWd1cmUganVzdCB3aGF0IHBhcmFtZXRlcnMgdGhlc2UgcGFydHMgY291bGQgYmUuIFJlbWVtYmVyIHRoYXQgd2UgaGFkIHRoZSBmb2xsb3dpbmcgcm91dGVzIHJlZ2lzdGVyZWQ6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgojMQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMyCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMzCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzQJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiM1CSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7PC9wcmU+CgkJPHA+Um91dGUgIzEgaXMgaGFuZGxlZCBieSB0aGUgbGluZXMgNDEtNDMuIE90aGVyd2lzZSwgaXQgd2lsbCBkZXBlbmQgb24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzLiBJZiB0aGVyZSBhcmUgNiwgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNSA6ICRwYXJhbXNbMF0gaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSwgJHBhcmFtc1sxXSB0aGUgbmFtZSBvZiB0aGUgbGV2ZWwgKHdoYXQpLCAkcGFyYW1zWzJdIHRoZSBuYW1lIG9mIHRoZSBwYXJlbnQsICRwYXJhbXNbM10gdGhlIHBhZ2VpbmRleCwgYW5kIHNvIG9uLi4uPGJyLz4KCQlMaWtld2lzZSwgaWYgd2UgaGF2ZSA1IHBhcmFtcywgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNCwgYW5kIHdpdGggNCBwYXJhbXMsIHdlIGtub3cgd2UncmUgdXNpbmcgcm91dGUgIzMuIElmIHdlIHdlcmUgdXNpbmcgcm91dGUgIzIsIHRoZXJlIHdvdWxkbid0IGJlIGFueXRoaW5nIHRvIHJldHJpZXZlIGFueXdheS48YnIvPgoJCUlmIHRoZSBtb2R1bGUgYWN0aW9uIGlzIGEgcXVlcnkgKGxpbmVzIDM5LTQwKSwgd2UgZG9uJ3QgcmV0cmlldmUgYW55dGhpbmcuLi48L3A+CgkJPHA+U28gYmFzaWNhbGx5LCBpZiB5b3UgY2hhbmdlIHRoZSByb3V0ZXMsIHlvdSd2ZSBnb3QgdG8gY2hhbmdlIGxpbmVzIDM3IHRvIDU5LjwvcD4KCQk8cD48Yj5DYXNlIDM6IGludGVybmFsIHByZXR0eSB1cmxzIHdpdGggc3RhbmRhcmQgbW9kX3Jld3JpdGU8L2I+PGJyLz4JCQoJCUluIHRoaXMgY2FzZSwgdGhlIHBhdGggdGhhdCdzIGFmdGVyICJpbmRleC5waHAvIiBpbiBjYXNlIDIgaXMgc2ltcGx5IHBhc3NlZCB0aHJvdWdoIHRoZSAicGFnZSIgR0VUIHBhcmFtZXRlci4gU28gb25jZSB3ZSd2ZSByZXRyaWV2ZWQgaXQsIHRoZSB0YXNrIGlzIGp1c3QgbGlrZSBjYXNlIDIuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CQkKCQkKPC9kaXY+CjxwIGFsaWduPSJyaWdodCI+UGllcnJlLUx1YyBHZXJtYWluPC9wPgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/function.createFieldForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjw/cGhwCgkJJGNvbXBhcmVjaG9pY2VzID0gYXJyYXkoJHRoaXMtPkxhbmcoImNvbnRhaW5zIikgPT4xLCAkdGhpcy0+TGFuZygiaXNleGFjdGx5IikgPT4wLCAkdGhpcy0+TGFuZygiaXNub3QiKSA9PjIsICR0aGlzLT5MYW5nKCJpc2hpZ2hlcnRoYW4iKSA9PjMsICR0aGlzLT5MYW5nKCJpc2xvd2VydGhhbiIpID0+NCk7CgkJJGRhdGVjb21wYXJlY2hvaWNlcyA9IGFycmF5KCR0aGlzLT5MYW5nKCJxdWVyeXVzZSIpID0+ICJOQSIsICR0aGlzLT5MYW5nKCJpc2FmdGVyIikgPT4zLCAkdGhpcy0+TGFuZygiaXNiZWZvcmUiKSA9PjQsICR0aGlzLT5MYW5nKCJpc2JldHdlZW4iKSA9PjUpOwoJCSRvcmRlcmNob2ljZXMgPSBhcnJheSgiQVNDIj0+IkFTQyIsIkRFU0MiPT4iREVTQyIpOwoKCQkkb3V0cHV0ID0gYXJyYXkoKTsKCgkJc3dpdGNoKCR3aGF0KXsKCQkJY2FzZSAicGxheWVyIjoKCQkJCSRvdXRwdXRbImxvY2F0aW9uIl0gPSBhcnJheSgkdGhpcy0+TGFuZygicGxheWVyX2xvY2F0aW9uIiksICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9sb2NhdGlvbiIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfbG9jYXRpb24iLCIiLDMwKSk7CgkJCQkkb3V0cHV0WyJ3aWR0aCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInBsYXllcl93aWR0aCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfd2lkdGgiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX3dpZHRoIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsiaGVpZ2h0Il0gPSBhcnJheSgkdGhpcy0+TGFuZygicGxheWVyX2hlaWdodCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfaGVpZ2h0IiwkY29tcGFyZWNob2ljZXMsLTEsMSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmaWVsZF9oZWlnaHQiLCIiLDMwKSk7CgkJCQkkb3V0cHV0WyJwYXJhbWV0ZXJzIl0gPSBhcnJheSgkdGhpcy0+TGFuZygicGxheWVyX3BhcmFtZXRlcnMiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX3BhcmFtZXRlcnMiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX3BhcmFtZXRlcnMiLCIiLDMwKSk7CgkJCQkkdG1wb3B0aW9ucyA9ICR0aGlzLT5nZXRfZmllbGRvcHRpb25zKCJwbGF5ZXJfdXNlcmRlZmluZWQxIik7CgkJCQkkdG1wb3B0aW9uc1siIl0gPSAiIjsKCQkJCSRvdXRwdXRbInVzZXJkZWZpbmVkMSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInBsYXllcl91c2VyZGVmaW5lZDEiKSwkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwiZmllbGRfdXNlcmRlZmluZWQxW10iLCR0bXBvcHRpb25zKSk7CgkJCQkkdG1wb3B0aW9ucyA9ICR0aGlzLT5nZXRfcHJlZGVmaW5lZG9wdGlvbnMoInBsYXllcl9wbGF5ZXJ0eXBlIik7CgkJCQkkdG1wb3B0aW9uc1siIl0gPSAiIjsKCQkJCSRvdXRwdXRbInBsYXllcnR5cGUiXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZSIpLCR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCJmaWVsZF9wbGF5ZXJ0eXBlW10iLCR0bXBvcHRpb25zKSk7CgkJCQkkb3V0cHV0WyJuYW1lIl0gPSBhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfbmFtZSIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfbmFtZSIsIiIsMzApKTsKCQkJCQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXB0aW1lIiwgdGltZSgpKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigic19hbmQiLCAkdGhpcy0+TGFuZygidGhpc2FuZHRoaXMiKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF8iKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wX3ByZWZpeDIiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF9wYXJ0Ml8iKTsKCQkJCSR0bXB0ZW1wbGF0ZSA9ICd7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSB9PGRpdiBpZD0iJy4kaWQuJ2RhdGVfbW9kaWZpZWRfcGFydDIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+IHskc19hbmR9IHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kdG1wX3ByZWZpeDIgdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgfTwvZGl2Pic7CgkJCQkkdG1wb3V0ID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2RhdGVfbW9kaWZpZWQiLCRkYXRlY29tcGFyZWNob2ljZXMsLTEsIk5BIiwiIG9uY2hhbmdlPVwiZGF0ZWlucHV0X2NoYW5nZWNvbXBhcmUoJyIuJGlkLiJkYXRlX21vZGlmaWVkJywgdGhpcy52YWx1ZSk7XCIiKS4iICIuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXB0ZW1wbGF0ZSk7CgkJCQkkdG1wb3V0IC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsImZpZWxkX2RhdGVfbW9kaWZpZWQiLCAiX19kYXRlX2ZpZWxkIik7CgkJCQkkb3V0cHV0WyJkYXRlX21vZGlmaWVkIl0gPSBhcnJheSgkdGhpcy0+TGFuZygiZGF0ZV9tb2RpZmllZCIpLCAkdG1wb3V0KTsKCQkJCSRvcmRlcmZpZWxkb3B0aW9ucyA9IGFycmF5KCIiPT4iIiwibG9jYXRpb24iPT4ibG9jYXRpb24iLCJ3aWR0aCI9PiJ3aWR0aCIsImhlaWdodCI9PiJoZWlnaHQiLCJwYXJhbWV0ZXJzIj0+InBhcmFtZXRlcnMiLCJ1c2VyZGVmaW5lZDEiPT4idXNlcmRlZmluZWQxIiwicGxheWVydHlwZSI9PiJwbGF5ZXJ0eXBlIiwiaWQiPT4iaWQiLCJuYW1lIj0+Im5hbWUiLCJhbGlhcyI9PiJhbGlhcyIsIml0ZW1fb3JkZXIiPT4iaXRlbV9vcmRlciIsImRhdGVfbW9kaWZpZWQiPT4iZGF0ZV9tb2RpZmllZCIpOwoJCQkJJG91dHB1dFsib3JkZXJieSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm9yZGVyYnlmaWVsZCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyIiwkb3JkZXJmaWVsZG9wdGlvbnMpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyX3R5cGUiLCRvcmRlcmNob2ljZXMpKTsKCQkJCWJyZWFrOwoJCQljYXNlICJtZWRpYWZpbGUiOgoJCQkJJHRtcG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygibWVkaWFmaWxlX3VzZXJkZWZpbmVkMiIpOwoJCQkJJHRtcG9wdGlvbnNbIiJdID0gIiI7CgkJCQkkb3V0cHV0WyJ1c2VyZGVmaW5lZDIiXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfdXNlcmRlZmluZWQyIiksJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsImZpZWxkX3VzZXJkZWZpbmVkMltdIiwkdG1wb3B0aW9ucykpOwoJCQkJJG91dHB1dFsicGFyZW50Il0gPSBhcnJheSgkdGhpcy0+TGFuZygicGFyZW50IikpOwoJCQkJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2hpZXJhcmNoeW9wdGlvbnMoIm1lZGlhZmlsZSIpOwoJCQkJJG91dHB1dFsicGFyZW50Il1bXSA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiZmllbGRfcGFyZW50IiwkcGFyZW50b3B0aW9ucyk7CgkJCQkkb3V0cHV0WyJuYW1lIl0gPSBhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfbmFtZSIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfbmFtZSIsIiIsMzApKTsKCQkJCQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXB0aW1lIiwgdGltZSgpKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigic19hbmQiLCAkdGhpcy0+TGFuZygidGhpc2FuZHRoaXMiKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF8iKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wX3ByZWZpeDIiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF9wYXJ0Ml8iKTsKCQkJCSR0bXB0ZW1wbGF0ZSA9ICd7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSB9PGRpdiBpZD0iJy4kaWQuJ2RhdGVfbW9kaWZpZWRfcGFydDIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+IHskc19hbmR9IHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kdG1wX3ByZWZpeDIgdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgfTwvZGl2Pic7CgkJCQkkdG1wb3V0ID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2RhdGVfbW9kaWZpZWQiLCRkYXRlY29tcGFyZWNob2ljZXMsLTEsIk5BIiwiIG9uY2hhbmdlPVwiZGF0ZWlucHV0X2NoYW5nZWNvbXBhcmUoJyIuJGlkLiJkYXRlX21vZGlmaWVkJywgdGhpcy52YWx1ZSk7XCIiKS4iICIuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXB0ZW1wbGF0ZSk7CgkJCQkkdG1wb3V0IC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsImZpZWxkX2RhdGVfbW9kaWZpZWQiLCAiX19kYXRlX2ZpZWxkIik7CgkJCQkkb3V0cHV0WyJkYXRlX21vZGlmaWVkIl0gPSBhcnJheSgkdGhpcy0+TGFuZygiZGF0ZV9tb2RpZmllZCIpLCAkdG1wb3V0KTsKCQkJCSRvcmRlcmZpZWxkb3B0aW9ucyA9IGFycmF5KCIiPT4iIiwidXNlcmRlZmluZWQyIj0+InVzZXJkZWZpbmVkMiIsInBhcmVudCI9PiJwYXJlbnQiLCJpZCI9PiJpZCIsIm5hbWUiPT4ibmFtZSIsImFsaWFzIj0+ImFsaWFzIiwiaXRlbV9vcmRlciI9PiJpdGVtX29yZGVyIiwiZGF0ZV9tb2RpZmllZCI9PiJkYXRlX21vZGlmaWVkIik7CgkJCQkkb3V0cHV0WyJvcmRlcmJ5Il0gPSBhcnJheSgkdGhpcy0+TGFuZygib3JkZXJieWZpZWxkIiksICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwib3JkZXIiLCRvcmRlcmZpZWxkb3B0aW9ucykuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwib3JkZXJfdHlwZSIsJG9yZGVyY2hvaWNlcykpOwoJCQkJYnJlYWs7CgkJCQoJCX0KCQllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CglmdW5jdGlvbiBkYXRlaW5wdXRfY2hhbmdlY29tcGFyZShmaWVsZG5hbWUsIG5ld3ZhbHVlKXsKCQlpZihuZXd2YWx1ZSA9PSA1KXsKCQkJdmFyIG5ld3N0YXRlID0gImlubGluZSI7CgkJfWVsc2V7CgkJCXZhciBuZXdzdGF0ZSA9ICJub25lIjsKCQl9CgkJaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmllbGRuYW1lKyJfcGFydDIiKSkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmllbGRuYW1lKyJfcGFydDIiKS5zdHlsZS5kaXNwbGF5ID0gbmV3c3RhdGU7CgkJcmV0dXJuIHRydWU7Cgl9Cjwvc2NyaXB0PgonOwoJCWlmKCRhc3NpZ24pewoJCQlmb3JlYWNoKCRvdXRwdXQgYXMgJGtleT0+JHZhbHVlKXsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigka2V5LiJfbGFiZWwiLCAkdmFsdWVbMF0pOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXkuIl9pbnB1dCIsICR2YWx1ZVsxXSk7CgkJCX0KCQl9ZWxzZXsKCQkJZWNobyAiPHRhYmxlIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBMaWdodEdyYXk7IHBhZGRpbmctbGVmdDogMTBweDtcIj4iOwoJCQlmb3JlYWNoKCRvdXRwdXQgYXMgJGtleT0+JHZhbHVlKXsKCQkJCWlmKCRrZXkgIT0gIm9yZGVyYnkiKQllY2hvICIKCQkJCTx0cj48dGQ+Ii4kdmFsdWVbMF0uIjwvdGQ+PHRkPiIuJHZhbHVlWzFdLiI8L3RkPjwvdHI+IjsKCQkJfQoJCQkJZWNobyAiCgkJCTwvdGFibGU+PGJyLz4iOwoJCQllY2hvICI8cD4iLiRvdXRwdXRbIm9yZGVyYnkiXVswXS4iOiAiLiRvdXRwdXRbIm9yZGVyYnkiXVsxXS4iPC9wPiI7CgkJfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.feadd_permcheck.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyogVGhpcyBmdW5jdGlvbiB3aWxsIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgZnJvbnRlbmQgdXNlciBoYXMgYWNjZXNzIHRvIHRoZSBlZGl0aW9uCiAqIAogKiBUaGUgYWNjZXNzaWJsZSB2YXJpYWJsZXMgYXJlIDoKICogCQkkZ0NtcyAodGhlIGdsb2JhbCBjbXMgb2JqZWN0LCB0aHJvdWdoIHdoaWNoIHdlIHdpbGwgYmUgYWJsZSB0byBjYWxsIHRoZSBGRVUgbW9kdWxlKQogKgkJJHdoYXQgKHRoZSBsZXZlbCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LCBhcyBnaXZlbiBieSB0aGUgIndoYXQiIHBhcmFtZXRlcikKICoJCSRhbGlhcyAodGhlIGFsaWFzIG9mIHRoZSBpdGVtIHdlIGFyZSBhdHRlbXB0aW5nIHRvIGVkaXQuIElmIGl0IGlzIGEgbmV3IGl0ZW0sICRhbGlhcyBzaG91bGQgYmUgZmFsc2UpCiAqIAogKiBUaGUgJHJldHVybiB2YXJpYWJsZSwgd2hpY2ggc3RhcnRzIG91dCB0cnVlLCBzaG91bGQgYmUgc2V0IHRvIHRydWUgdG8gZ2l2ZSBwZXJtaXNzaW9uIGFuZCB0byBmYWxzZSB0byBkZW55IGl0LgogKiAKICogWW91IHNob3VsZCBiZWdpbiBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBGRVUgbW9kdWxlIGlzIHByZXNlbnQgYW5kIHdvcmtpbmcuIFRoZSBmb2xsb3dpbmcgY29kZToKICogJEZFVSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOwogKiB3aWxsIG1ha2UgJEZFVSB0aGUgbW9kdWxlIG9iamVjdCBmb3IgdGhlIEZFVSBtb2R1bGUgaWYgaXQgaXMgcHJlc2VudCwgYW5kIHdpbGwgc2V0ICRGRVUgdG8gZmFsc2U7CiAqIAogKiBJbXBvcnRhbnQgRkVVIGZ1bmN0aW9ucyAocHJvdmlkZWQgdGhhdCAkRkVVIGlzIG5vdCBmYWxzZSkgYXJlIDoKICogICRGRVUtPkxvZ2dlZEluKCkgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4sIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAqCSRGRVUtPkxvZ2dlZEluSWQoKQkJcmV0dXJucyB0aGUgaWQgb2YgdGhlIHVzZXIKICoJJEZFVS0+TG9nZ2VkSW5OYW1lKCkJCXJldHVybnMgdGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyCiAqICAkRkVVLT5NZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpCQlyZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2YgdGhlIGdyb3VwLCBmYWxzZSBvdGhlcndpc2UKICogCSRGRVUtPkdldEdyb3VwSUQoJGdyb3VwbmFtZSkJcmV0dXJucyB0aGUgZ3JvdXAgaWQgYXNzb2NpYXRlZCB0byBhIGdyb3VwIG5hbWUKICogCiAqLyAKPz4K]]></data>
	</file>
	<file>
	  <filename>/function.plGetFileInfo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCWlmKCFpc3NldCgkZmlsZXBhdGgpKQlleGl0OwoJCgkkaW5mbyA9IGFycmF5KCk7CgkKCSRpbmZvWyJmaWxlbmFtZSJdID0gYmFzZW5hbWUoJGZpbGVwYXRoKTsKCQoJJHNpemUgPSBmaWxlc2l6ZSgkZmlsZXBhdGgpOwoJJGluZm9bInNpemUiXSA9ICRzaXplOwoJaWYoJHNpemUgPiAxMDczNzQxODI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDczNzQxODI0KSwyKS4nIEdCJzsKCX1lbHNlaWYoJHNpemUgPiAxMDQ4NTc2KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDQ4NTc2KSwyKS4nIE1CJzsKCX1lbHNlaWYoJHNpemUgPiAxMDI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDI0KSwyKS4nIEtCJzsKCX1lbHNlewoJCSRzaXplIC49ICcgYnl0ZXMnOwoJfQoJJGluZm9bInNpemVfd2Zvcm1hdCJdID0gJHNpemU7CgkKCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlcGF0aCwgIi4iKSwgMSkpOwoJJGluZm9bImV4dCJdID0gJGV4dGVuc2lvbjsKCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdmbHYnLCdzd2YnLCd3bXYnLCdtb3YnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mbWVkaWEuZ2lmIjsKCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIjsKCX1lbHNlewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiI7Cgl9CgkKCSRpbmZvWyJpbWFnZXNpemUiXSA9IGZhbHNlOwoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZmlsZXBhdGgpOwoJaWYoaXNzZXQoJGltZ2luZlsxXSkpewoJCSRpbmZvWyJ3aWR0aCJdID0gJGltZ2luZlswXTsKCQkkaW5mb1siaGVpZ2h0Il0gPSAkaW1naW5mWzFdOwoJCSRpbmZvWyJpbWFnZXNpemUiXSA9ICRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV07CgkJaWYoaXNzZXQoJGltZ2luZlsibWltZSJdKSkJJGluZm9bIm1pbWUiXSA9ICRpbWdpbmZbIm1pbWUiXTsKCX0KCQoJJGluZm9bIm93bmVyIl0gPSBmaWxlb3duZXIoJGZpbGVwYXRoKTsKCSRpbmZvWyJwZXJtaXNzaW9ucyJdID0gZmlsZXBlcm1zKCRmaWxlcGF0aCk7CgkKCSRpbmZvWyJmaWxlbXRpbWUiXSA9IGZpbGVtdGltZSgkZmlsZXBhdGgpOwoJJGluZm9bIm1vZGlmaWVkIl0gPSBkYXRlKCJZLW0tZCBHOmkiLCAkaW5mb1siZmlsZW10aW1lIl0pOwoJCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.plresize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZnVuY3Rpb24gcGxSZXNpemUoJGZ1bGxwYXRoLCAkbmV3cGF0aCwgJG5ld3dpZHRoLCAkbmV3aGVpZ2h0PWZhbHNlLCAkdHJhbnNwYXJlbmN5PWZhbHNlLCAkY3JvcD1mYWxzZSkgewoJJG5hbWUgPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkZnVsbHBhdGgpOwoJaWYoIWZpbGVfZXhpc3RzKCRuYW1lKSkJcmV0dXJuIGZhbHNlOwoJJGltYWdlX2luZm9zID0gZ2V0aW1hZ2VzaXplKCRuYW1lKTsKCQoJJGRvcmVzaXplID0gdHJ1ZTsKCWlmKCAkaW1hZ2VfaW5mb3NbMF0gPD0gJG5ld3dpZHRoICYmICgkbmV3aGVpZ2h0ID09IGZhbHNlIHx8ICRpbWFnZV9pbmZvc1sxXSA8PSAkbmV3aGVpZ2h0KSApewoJCSRyZXR1cm4gPSBmYWxzZTsKCX1lbHNlewoJCSRuZXduYW1lID0gKCRuZXdwYXRoID09ICcnPyRmdWxscGF0aDokbmV3cGF0aCk7CgkJJGFyciA9IHNwbGl0KCJcLiIsJG5hbWUpOwoJCSRleHQgPSBzdHJ0b2xvd2VyKCRhcnJbY291bnQoJGFyciktMV0pOwoKCQlpZigkZXh0PT0ianBlZyIgfHwgJGV4dD09ImpwZyIpewoJCQkkaW1nID0gQGltYWdlY3JlYXRlZnJvbWpwZWcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJJGltZyA9IEBpbWFnZWNyZWF0ZWZyb21wbmcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCSRpbWcgPSBAaW1hZ2VjcmVhdGVmcm9tZ2lmKCRuYW1lKTsKCQl9CgkJaWYoISRpbWcpICAgcmV0dXJuIGZhbHNlOwoKCQkkb2xkX3ggPSBpbWFnZVNYKCRpbWcpOwoJCSRvbGRfeSA9IGltYWdlU1koJGltZyk7CgoJCWlmKCRuZXdoZWlnaHQgJiYgJGNyb3ApewoJCQkvLyBmaW5kIHRoZSB3YW50ZWQgcmF0aW8KCQkJJHdhbnRlZHJhdGlvID0gJG5ld3dpZHRoLyRuZXdoZWlnaHQ7CgkJCSRjdXJyZW50cmF0aW8gPSAkb2xkX3gvJG9sZF95OwoJCQlpZigkY3VycmVudHJhdGlvID4gJHdhbnRlZHJhdGlvKXsKCQkJCS8vIHdpZHRoIGlzIHRvbyBsYXJnZQoJCQkJJGNyb3BfeCA9IChpbnQpICgkb2xkX3kgKiAkd2FudGVkcmF0aW8pOwoJCQkJJGNyb3BfeSA9ICRvbGRfeTsKCQkJCSRpbnRfdyA9IChpbnQpICgoJG9sZF94IC0gJGNyb3BfeCkgLyAyKTsKCQkJCSRpbnRfaCA9IDA7CgkJCX1lbHNlaWYoJGN1cnJlbnRyYXRpbyA8ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyBoZWlnaHQgaXMgdG9vIGxhcmdlCgkJCQkkY3JvcF94ID0gJG9sZF94OwoJCQkJJGNyb3BfeSA9IChpbnQpICgkb2xkX3ggLyAkd2FudGVkcmF0aW8pOwoJCQkJJGludF9oID0gKGludCkgKCgkb2xkX3kgLSAkY3JvcF95KSAvIDIpOwoJCQkJJGludF93ID0gMDsKCQkJfQoJCQlpZigkY3VycmVudHJhdGlvICE9ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyB3ZSBmaXJzdCBjcm9wCgkJCQkkZGltZyA9IEltYWdlQ3JlYXRlVHJ1ZUNvbG9yKCRjcm9wX3gsICRjcm9wX3kpOwoJCQkJaWYoaW1hZ2Vjb3B5cmVzYW1wbGVkKCRkaW1nLCRpbWcsMCwwLCRpbnRfdywkaW50X2gsJGNyb3BfeCwkY3JvcF95LCRjcm9wX3gsJGNyb3BfeSkpewoJCQkJCWltYWdlZGVzdHJveSgkaW1nKTsKCQkJCQkkaW1nID0gJGRpbWc7CgkJCQl9CgkJCX0KCQkJJG9sZF94ID0gJGNyb3BfeDsKCQkJJG9sZF95ID0gJGNyb3BfeTsKCQkJJHRodW1iX2ggPSAkbmV3aGVpZ2h0OwoJCQkkdGh1bWJfdyA9ICRuZXd3aWR0aDsKCQl9ZWxzZXsKCQkJJHJhdGlvID0gJG5ld2hlaWdodD9taW4oJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdLCAkbmV3aGVpZ2h0IC8gJGltYWdlX2luZm9zWzFdKTooJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdKTsKCQkJJHRodW1iX2ggPSAkaW1hZ2VfaW5mb3NbMV0gKiAkcmF0aW87CgkJCSR0aHVtYl93ID0gJGltYWdlX2luZm9zWzBdICogJHJhdGlvOwoJCX0KCgkJJG5ld19pbWcgPSBJbWFnZUNyZWF0ZVRydWVDb2xvcigkdGh1bWJfdywgJHRodW1iX2gpOwoJICAgCgkJaWYoJHRyYW5zcGFyZW5jeSkgewoJCQlpZigkZXh0PT0icG5nIikgewoJCQkJaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1nLCBmYWxzZSk7CgkJCQkkY29sb3JUcmFuc3BhcmVudCA9IGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCRuZXdfaW1nLCAwLCAwLCAwLCAxMjcpOwoJCQkJaW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCAkY29sb3JUcmFuc3BhcmVudCk7CgkJCQlpbWFnZXNhdmVhbHBoYSgkbmV3X2ltZywgdHJ1ZSk7CgkJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCQkkdHJucHJ0X2luZHggPSBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJGltZyk7CgkJCQlpZiAoJHRybnBydF9pbmR4ID49IDApIHsKCQkJCQkvL2l0cyB0cmFuc3BhcmVudAoJCQkJCSR0cm5wcnRfY29sb3IgPSBpbWFnZWNvbG9yc2ZvcmluZGV4KCRpbWcsICR0cm5wcnRfaW5keCk7CgkJCQkJJHRybnBydF9pbmR4ID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRuZXdfaW1nLCAkdHJucHJ0X2NvbG9yWydyZWQnXSwgJHRybnBydF9jb2xvclsnZ3JlZW4nXSwgJHRybnBydF9jb2xvclsnYmx1ZSddKTsKCQkJCQlpbWFnZWZpbGwoJG5ld19pbWcsIDAsIDAsICR0cm5wcnRfaW5keCk7CgkJCQkJaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRuZXdfaW1nLCAkdHJucHJ0X2luZHgpOwoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJSW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCBpbWFnZWNvbG9yYWxsb2NhdGUoJG5ld19pbWcsIDI1NSwgMjU1LCAyNTUpKTsKCQl9CgkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCRuZXdfaW1nLCAkaW1nLCAwLDAsMCwwLCAkdGh1bWJfdywgJHRodW1iX2gsICRvbGRfeCwgJG9sZF95KTsKCgkJaWYoZmlsZV9leGlzdHMoJG5ld25hbWUpKQlAdW5saW5rKCRuZXduYW1lKTsKCgkJaWYoJGV4dD09ImpwZWciIHx8ICRleHQ9PSJqcGciKXsKCQkJaW1hZ2VqcGVnKCRuZXdfaW1nLCAkbmV3bmFtZSk7CgkJCSRyZXR1cm4gPSB0cnVlOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJaW1hZ2VwbmcoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfSBlbHNlaWYoJGV4dD09ImdpZiIpIHsKCQkJaW1hZ2VnaWYoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfQoJCWltYWdlZGVzdHJveSgkbmV3X2ltZyk7CgkJaW1hZ2VkZXN0cm95KCRpbWcpOwoJCWlmKCRyZXR1cm4pICRyZXR1cm4gPSAkbmV3bmFtZTsKCX0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQABAAOf/AAABAAIABQADDwAECAAIJAQJGAcKBgIMHwMNLAANOwAFkgAPNwwQEwARMw8RDgAQRw0JegATTBcZFwcaTwEdUAscPxwbHgQeXhIfMh4fHQAiaQoaoQAhiAEjdwAjfAAjhA4mWSUmJCclKQApeCUmLRcoZCIqQAEskRYtUAAuiissLBEwdws0bTIyNTIzMRQwrQc7hSU3YQA+lhM8fBg8cDY4Qzk4Ozg6NwA/rBY/kzA+Xj89QCdBbD4+TDtAQhFFlCxBeCZBikFCPwBKsSZDuzRHbRFKwEZIS0dJRjtNawRYv0tPUlFOUjVRiE5QTU1PYDFSmylWiw9ctVJSWyZVy0hWhFhWWVZXVQBg/1NYWlhWaD1bjCpbzD9dmF1aaVleYFxccV1eW19dYV5faAFs/xll/yRm1lFigU1jkABx/19kckVjyV5kemRmY2RnajdwpVBpomhpcjNv2B914z9ytWttagZ8/2tsgW9tcTB24WdviGFxjl9yll1yoXFye3BygVh2rXV0dzt73nV2cyeB/kJ/zieF7Ex/vHl6d3x7f3h9fyiJ/zyG6Xp9liON/3yAjm+Dq0WK54GCi2WGwC6T/4aFiGmF4YWHhFmNzUmQ7TGX/0CU9oaMpkWZ9YqOnI2Ol4+OkkCe/5CSj1Gb8XSU45CSp4mVsZSVnpeVmU+i+Eal/06k82Gi5lui/ZmbmHyf1Fan/Zydpp+doZGfvE6t/5efs3Gm+W2q9p+js2et/lyx/6Smo6emqqansWO3/5es06urqW21/6ystq+tsXq5/rKvwHC9/4628quzxYu3/LW1v7i1ura4tX/B/4fG/r68wLm+wb2/y8HBvsPAxZnH/5TM/6rH+KfJ/8bIxcXH0srIzKbQ/8HR5NHP09DQ283S1dLT0K7b/7zY/dLX2tHX59rY3NjZ47/f/eTe3eDf497f6c/k/8To/+Pl4uPk7tzm9Ofk6efp5uvo7d3s/+nq9O/s8eTy/+/w+vPx9fH08O32/vf1+fz5/vf9//7//P///yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAABAAEAAAAj+AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNiVJEBgMaPBzO0G9cCAMiT/wYA87fPmxgAKDUCYFIJlTdyYgDExAjARqIvSLLsAABgp0UAPkCFcYIkA1GjFkPEwycriwqiUCs6wOavnrtYA4hmnQggUb996rK1IDpWIoAjiQLx8saEaNuIAEQkcuMEiQ2iCh2EAKDwxIkUJ1XwquMEiQqiCQGowNZOAoCDJ3J0gXIixUcH4PxpC+TCAFGEAL7k8+ePlwGDKYI0QiULzokRGQGI8ofPnTcRRBECsPIsHT9++3YAKJhCj6RPsnr9+IDgIgAf+Pi5MxdnAACEDAL+CQM1CFQ3VCIAEEzRx8+jT7GWQfpw4aKFRINkefs0AMBBAEJMs4widYThggigLMMAAAJ5MIknfkjySSzDKBNEBxYNgAceVyDBBANEGSTBJfn4U88wX4RwwzL4+AMKAP94AAg3avwhySexCCMNIB80QJEBoChyhRM3GEBUQQC0MA1r+/AjjxhilINPPfj0E0YCUOiDixeVyBJLLMJMM0sKE0wEgCj+lFPJEQ4QVRAAYggjiyvd7DONFaDUg089fPpjygfH9PMHHqIAw0wvvTwTDQwXSARAG/7s4w45TBBFEAAhgMILKIOE4UQWYjyDD5987oPMCHPYQ84Yg4iyCzP+ywjzjDZddCCRCNrsQw85khBFEABXtOMPNHVcIUQGeKSDD6n17JPNClxU4080YiAiyi7MYDOMMuBA0sEBEDEQiBuJKBPLAAAQZIAorO3DTzc+qMALPvjwyec+6gBhhC7n+IPLFYiIsgsz2DyjDDimdIDAQwCIEUgYSNzAAFECASDCJ8+Uww8/5eCRSDn42MsnPvVUgQMtzazTzyNXICLKLsxgo80y3SAzwgIOAQAKL1kgIYQDRAkEABO9yKKIG6DIYoUs9IpcDz778JFCK804Y489cVyBiCi7MIPNN89ok80KCTQEQB3+7COMGBIQ9Q8AEuwijyx1tIGEBExog4/+03zyw0kHmxjTTDD6vJNFGIiIsgsz2IAzjTbdzDABQwAg4c8+7rjjB1H/AIAEOKzJw4sQGVQiDz5818OPMBoYYkwzsDiiDzlHhIGIKLswgw042mjTTRMTMMQAKunQo84pBhA1gBjl+MMPPvzwcsQy+6Rezz7ZlCCHL8boQgYl/URzRBiIiLILM9iA03s5W0SwEABiBNJGL9mIQNQAeCgDCi/w7IOKD93Ah/XwUY8iDEEXvvAFIbDQCn8gwwdZQIQodsEMbICjG9ooBxoioBAA7CARYXCCEERAlBCAgheVGEQYsiAGPJQDHyKj1z74sQ953EEGqkjgIshQBlv4Axf+NehBDfAADGZgAxzf0EY5+PCAhABgCcNogxOQkAGihCEe/RhGHa7gghCgoh74qAc+9sGPfcijHMrwxBliAINQ+CIYlEiDHciQDH/U4gl30IIFKiENbICjG9pABx8ekBAX5MMf0wiECgDgAFewZmPTaMERtLGPetArHc/whB6KwIIZ5EAJc8iFL3ShCTsQghB2oEY/aqEFZcgjDi1gBjbA0Q1toIMPD0AIAFzQjX24oxcGEMEptBGPjZUDD4mABz7qgY90sCEGM/iBFASxiVDQgha+aIYuQrEIR3jTEdfoRyn+4I16dMMCosAGOMahDXTw4QEJAYADYpENETChF7L+UEQdZCELK/ACH/bihyd+sIpgNMMZzfCFLmihCl3oQhOUoIQmJkqJbejDFHcoRjbSsQM3gAMc49AGOviQAIUAYAAtAEY6UFGHNiBBAl/oBj5Etg89FIId4mhGMGDRilCEYhOwgIUmNuHTom7DHqYAQymK4Q0rLOGj49AGOvaQAIYYQBr+SAcqbiACUNQDH07bhx4wwY5mFDUUqkgrLWARilak9a3bsIcpwNCIUmTDCkj46Di0gY49JKAhGUiHP3ixhGfsw2l82scfMMEOYrw1qEGlBSzSCllYqGIb9jAFGPTAiWgwwQkfHYc2ynGGBTQEAEsIxAAC4Q/E8okfjzj+xDmMAYtr2va2uKVFNeZhCjDogRPFsEEdPjoObZTjDA04yEGIAgADPKMfrt3HKd4QDmPk9rq2rcY8ZuGFOzSiFBZwBTbA0Q1tlCMJCFCuegEggnjsA7H4GEYUwtGM66aCFrrIrTPWMQsv3KERT3ABM7ABjm5ooxs6IIB61QuAL/ADH/aShzzq0Q0eOKMZtAiqhmHRiVHYVsOpIMY6fuGFO4DBApeABjbA0Q1tdAMFB1iwegGACn/UQ8I4hkcSWOGMUaRiFJ0IciciEYlUGNnIo+jELc7xix7UgARtAAYzsAGO3kWjAgWQsXozAI994Bge8MCHGujgjFFk4syZILL+IAQh5E6geRTi+IUNbFAHV+yCGdgAR++E0YABaFm5ABADP+oBZni4ox6ooEEzRrHmRudBDlxgRCQYQWlGCCIS1rDGEsKACFHsghnYAMc0uuEJBAzgz8oFACr6AQ93wCNz5TBBIUZhBi7Ymgq4JoIZ8iAIOfja18m4hhrCgAhR7IIZ2PjGM7rxBwIMANXKZYA29gFmdaiDHpVAAAgmwO0JUODbIADBEKhgay5QwQik2IYeroAIUeyCGdjQxjO68YQCQFu5ALBBPeRh7X5XIgx4wEMgElGJSsgCGEIQgAaIQIQXOHwN24DEFRAhil0wAxvTeMY0TCCAeysXAHjgh7X+zUFydXjj5CinRzeYQJQBNCAFL9iAAjaQjFd8ARGi2AUzsLGMZ/TiAAHwuHIBwIt9kPzoSFfHPYYhAqIIZAACoAAHFKAASxxDDYMQxS6YAQ1hTMMPBRiA0JVrgXLQA+nm8IY56AGPQBiAKAUZwAEuAAEiJIMPgxAFL5gxDGE8owcCGLtyAXAEfKjj6N4wxz2G0QLmHiQAA0CABmwxCTyIAhjDiIUwYnGAAQheuQBIxD7McXJ3wCMQBiCKjAcwgCbYQg+JQMUnYqGMMQQAAKjOvQGWcQ9z3EMbO2AuqgcQhUn44RGf6MUpCjCA3DtfBOnYByoYQBTn/wMAGFCDJ041EYsaBAAA1kc1AJggBuaG/x8AYMAU4tAC1p8f1cx9/0AAMACiyP/++M+//vfP//77//8LFhAAOw==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/instantsearch.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc2VhcmNoKHdoYXQsaW53aGF0KXsKCXZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlud2hhdCk7CglpZighZGVzdGluYXRpb24pIHJldHVybjsKCXZhciBldmVuID0gZmFsc2U7Cgl2YXIgdGhlcm93cyA9IGRlc3RpbmF0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpOwoJZm9yKGk9MDtpPHRoZXJvd3MubGVuZ3RoO2krKyl7CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJdmFyIG5ld3N0eWxlID0gIm5vbmUiOwoJCXZhciB0aGVjb2x1bW5zID0gdGhlcm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKCQlmb3Ioaj0wO2o8dGhlY29sdW1ucy5sZW5ndGg7aisrKXsKCQkJaWYodGhlY29sdW1uc1tqXS5jbGFzc05hbWUgIT0gImN0bG1tX25vc2VhcmNoIil7CgkJCQl2YXIgdG1wYSA9IHRoZWNvbHVtbnNbal0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTsKCQkJCWlmKHRtcGEgJiYgdG1wYS5pbm5lckhUTUwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHdoYXQudG9Mb3dlckNhc2UoKSkgPj0gMCkJbmV3c3R5bGUgPSAidGFibGUtcm93IjsKCQkJCWlmKCF0bXBhICYmIHRoZWNvbHVtbnNbal0uaW5uZXJIVE1MLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih3aGF0LnRvTG93ZXJDYXNlKCkpID49IDApCQluZXdzdHlsZSA9ICJ0YWJsZS1yb3ciOwoJCQl9CgkJfQoJCXRoZXJvd3NbaV0uc3R5bGUuZGlzcGxheSA9IG5ld3N0eWxlOwoJCWlmKG5ld3N0eWxlICE9ICJub25lIil7CgkJCXRoZXJvd3NbaV0uY2xhc3NOYW1lID0gdGhlY2xhc3M7CgkJCXRoZXJvd3NbaV0ub25tb3VzZW92ZXIgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSArPSAiaG92ZXIiOyB9OwoJCQl0aGVyb3dzW2ldLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCQlldmVuID0gIWV2ZW47CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/instantsort.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc29ydFJvd3ModGFibGVpZCxjb2xpbmRleCxkZXNjLG51bWVyaWMpewoJLy8gdGFibGVpZCBpcyB0aGUgaWQgb2YgdGhlIHRhYmxlIHRvIHNvcnQKCS8vIGNvbGluZGV4IGlzIGFnYWluc3Qgd2hpY2ggY29sdW1uIHRvIHNvcnQgKDAtPiBmaXJzdCwgMS0+IHNlY29uZC4uLikKCS8vIGRlc2MgbWFrZXMgdGhlIHNvcnQgZGVzY2VuZGluZwoJLy8gbnVtZXJpYyBtYWtlcyB0aGUgc29ydCBudW1lcmljCglpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkpCXJldHVybiBmYWxzZTsKCXZhciB0aGVyb3dzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIik7CglpZighdGhlcm93c1swXSB8fCAhdGhlcm93c1swXS5jZWxsc1tjb2xpbmRleF0pCXJldHVybiBmYWxzZTsKCQoJdmFyIHNvcnRlZCA9IG5ldyBBcnJheSgpOwoJZm9yKGk9MDsgaTx0aGVyb3dzLmxlbmd0aDsgaSsrKXsKCQl2YXIgdGhlYXMgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOwoJCWlmKHRoZWFzWzBdKXsKCQkJdmFyIHNvcnRkYXRhID0gdGhlYXNbMF0uaW5uZXJIVE1MOwoJCX1lbHNlewoJCQl2YXIgc29ydGRhdGEgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5pbm5lckhUTUw7CgkJfQoJCXNvcnRlZC5wdXNoKFtzb3J0ZGF0YSwgdGhlcm93c1tpXV0pOwoJCXRoZXJvd3NbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGVyb3dzW2ldKTsKCQlpLS07Cgl9CglpZihudW1lcmljKXsKCQlpZihkZXNjKXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGJbMF0tYVswXTsgfSk7CgkJfWVsc2V7CgkJCXNvcnRlZC5zb3J0KGZ1bmN0aW9uKGEsYil7IHJldHVybiBhWzBdLWJbMF07IH0pOwoJCX0KCX1lbHNlewoJCWlmKGRlc2MpewoJCQlzb3J0ZWQuc29ydChmdW5jdGlvbihhLGIpeyByZXR1cm4gYVswXS50b0xvd2VyQ2FzZSgpIDwgYlswXS50b0xvd2VyQ2FzZSgpOyB9KTsKCQl9ZWxzZXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGFbMF0udG9Mb3dlckNhc2UoKSA+IGJbMF0udG9Mb3dlckNhc2UoKTsgfSk7CgkJfQoJfQoKCXZhciB0YWJsZWJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZWlkKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXTsKCXZhciBldmVuID0gdHJ1ZTsKCWZvcihpPTA7IGk8c29ydGVkLmxlbmd0aDsgaSsrKXsKCQlldmVuID0gIWV2ZW47CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJc29ydGVkW2ldWzFdLmNsYXNzTmFtZSA9IHRoZWNsYXNzOwoJCXNvcnRlZFtpXVsxXS5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uKCl7IHRoaXMuY2xhc3NOYW1lICs9ICJob3ZlciI7IH07CgkJc29ydGVkW2ldWzFdLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCXRhYmxlYm9keS5hcHBlbmRDaGlsZChzb3J0ZWRbaV1bMV0pOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCgkkbGFuZ1siZnJpZW5kbHluYW1lIl0gPSAiQVZQbGF5ZXIiOw0KCSRsYW5nWyJtb2RkZXNjcmlwdGlvbiJdID0gIlBsYXllciBmcm9udCBlbmQiOw0KCSRsYW5nWyJhZG1pbmRlc2NyaXB0aW9uIl0gPSAiUGxheWVyIGZyb250IGVuZCI7DQoNCgkkbGFuZ1sicGFnZW1lbnVkZWxpbWl0ZXIiXSA9ICImbmJzcDsmIzEyNDsmbmJzcDsiOw0KCSRsYW5nWyJwYWdlbWVudW92ZXJmbG93Il0gPSAiJm5ic3A7Li4uJm5ic3A7IjsNCgkNCi8vIHN0cmluZ3MgZm9yIHBsYXllcg0KCSRsYW5nWyJwbGF5ZXIiXSA9ICJQbGF5ZXIiOw0KCSRsYW5nWyJwbGF5ZXJfcGx1cmFsIl0gPSAiUGxheWVyIjsNCgkkbGFuZ1siYWRkX3BsYXllciJdID0gIkFkZCBQbGF5ZXIiOw0KCSRsYW5nWyJlZGl0X3BsYXllciJdID0gIkVkaXQgUGxheWVyIjsNCgkkbGFuZ1siZmlsdGVyYnlfcGxheWVyIl0gPSAiRmlsdGVyIGJ5IFBsYXllciI7DQoJJGxhbmdbInBsYXllcl9sb2NhdGlvbiJdID0gIkxvY2F0aW9uIjsNCgkkbGFuZ1sicGxheWVyX3dpZHRoIl0gPSAiV2lkdGgiOw0KCSRsYW5nWyJwbGF5ZXJfaGVpZ2h0Il0gPSAiSGVpZ2h0IjsNCgkkbGFuZ1sicGxheWVyX3BhcmFtZXRlcnMiXSA9ICJQYXJhbWV0ZXJzIChzZXBhcmF0ZSB3aXRoICZhbXA7KSI7DQoJJGxhbmdbInBsYXllcl91c2VyZGVmaW5lZDEiXSA9ICJVc2VyRGVmaW5lZCAxIjsNCgkkbGFuZ1sicGxheWVyX3BsYXllcnR5cGUiXSA9ICJQbGF5ZXIgVHlwZSI7DQoJJGxhbmdbInBsYXllcl9wbGF5ZXJ0eXBlX29wdGlvbl8wIl0gPSAibXAzIjsNCgkkbGFuZ1sicGxheWVyX3BsYXllcnR5cGVfb3B0aW9uXzEiXSA9ICJmbHYiOw0KCSRsYW5nWyJwcm9tcHRfZGVsZXRlcGxheWVyIl0gPSAiWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhpcyBQbGF5ZXIgKCVzKT8gQWxsIGNoaWxkcmVuIHdpbGwgYmUgbG9zdC4gRG8geW91IHdpc2ggdG8gY29udGludWU/IjsNCgkNCi8vIHN0cmluZ3MgZm9yIG1lZGlhZmlsZQ0KCSRsYW5nWyJtZWRpYWZpbGUiXSA9ICJNZWRpYWZpbGUiOw0KCSRsYW5nWyJtZWRpYWZpbGVfcGx1cmFsIl0gPSAiTWVkaWEiOw0KCSRsYW5nWyJhZGRfbWVkaWFmaWxlIl0gPSAiQWRkIE1lZGlhZmlsZSI7DQoJJGxhbmdbImVkaXRfbWVkaWFmaWxlIl0gPSAiRWRpdCBNZWRpYWZpbGUiOw0KCSRsYW5nWyJmaWx0ZXJieV9tZWRpYWZpbGUiXSA9ICJGaWx0ZXIgYnkgTWVkaWFmaWxlIjsNCgkkbGFuZ1sibWVkaWFmaWxlX21lZGlhZmlsZSJdID0gIk1lZGlhZmlsZSI7DQoJJGxhbmdbIm1lZGlhZmlsZV9zZWxlY3RfbWVkaWFmaWxlIl0gPSAiU2VsZWN0IE1lZGlhZmlsZSI7DQoJJGxhbmdbIm1lZGlhZmlsZV9waWN0dXJlIl0gPSAiVGh1bWJuYWlsIjsNCgkkbGFuZ1sibWVkaWFmaWxlX3NlbGVjdF9waWN0dXJlIl0gPSAiU2VsZWN0IFRodW1ibmFpbCI7DQoJJGxhbmdbIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiXSA9ICJVc2VyRGVmaW5lZCAyIjsNCgkkbGFuZ1sicHJvbXB0X2RlbGV0ZW1lZGlhZmlsZSJdID0gIllvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoaXMgTWVkaWFmaWxlICglcyk/IERvIHlvdSB3aXNoIHRvIGNvbnRpbnVlPyI7DQoJJGxhbmdbInRlbXBsYXRlaGVscCJdID0gJzxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgdmFyaWFibGVzIGZvciBsaXN0IHRlbXBsYXRlIG9mOiBwbGF5ZXI8L2gzPjxkaXYgY2xhc3M9InRwbHZhcnNfaGlkZSI+PHVsPg0KCTxsaT4kbGV2ZWx0aXRsZTwvbGk+DQoJPGxpPiRwYXJlbnRvYmogKGlmIHBhcmVudCBpcyBzcGVjaWZpZWQpPC9saT4NCgk8bGk+JGl0ZW1saXN0IChhcnJheSBvZiBpdGVtcyk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNfc2VsZWN0ZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bmJjaGlsZHJlbiAoaWYgbG9hZGVkKTwvbGk+DQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2FsaWFzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RldGFpbGxpbms8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsdXJsPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2xvY2F0aW9uPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3dpZHRoPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2hlaWdodDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJhbWV0ZXJzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMTwvbGk+DQoJPGxpPiRpdGVtLSZndDt1c2VyZGVmaW5lZDFfbmFtZXZhbHVlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BsYXllcnR5cGU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGxheWVydHlwZV9uYW1ldmFsdWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj48ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgbGlzdCB0ZW1wbGF0ZSBvZjogbWVkaWFmaWxlPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPjx1bD4NCgk8bGk+JGxldmVsdGl0bGU8L2xpPg0KCTxsaT4kcGFyZW50b2JqIChpZiBwYXJlbnQgaXMgc3BlY2lmaWVkKTwvbGk+DQoJPGxpPiRpdGVtbGlzdCAoYXJyYXkgb2YgaXRlbXMpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2lzX3NlbGVjdGVkPC9saT4NCgk8bGk+JGl0ZW0tJmd0O25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsbGluazwvbGk+DQoJPGxpPiRpdGVtLSZndDtkZXRhaWx1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bWVkaWFmaWxlIChmaWxlIG9iamVjdCk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGljdHVyZSAoZmlsZSBvYmplY3QpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMjwvbGk+DQoJPGxpPiRpdGVtLSZndDt1c2VyZGVmaW5lZDJfbmFtZXZhbHVlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj48ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgdGhlIGRldGFpbCB0ZW1wbGF0ZTwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj48dWw+DQoJPGxpPiRsZXZlbHRpdGxlPC9saT4NCgk8bGk+JHByZXZpb3VzX2l0ZW0gKGlmIGxvYWRlZCk8L2xpPg0KCTxsaT4kbmV4dF9pdGVtIChpZiBsb2FkZWQpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bWVkaWFmaWxlIChmaWxlIG9iamVjdCk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGljdHVyZSAoZmlsZSBvYmplY3QpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMjwvbGk+DQoJPGxpPiRpdGVtLSZndDt1c2VyZGVmaW5lZDJfbmFtZXZhbHVlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8bGk+JGxhYmVscy0+Li4uPC9saT4NCgk8L3VsPjxici8+PHA+SW4gdGhlIGZpbmFsIGxldmVsIGRldGFpbCB0ZW1wbGF0ZSwgdXNlIHRoZSBvYmplY3QgJGxhYmVscyB0byBwcmludCBsYW5ndWFnZS1zZW5zaWJsZSBmaWVsZCBsYWJlbHMgKCRsYWJlbHMtPmZpZWxkbmFtZSkuPC9wPjxwPllvdSBtYXkgcmVhY2ggdGhlIHBhcmVudCBvYmplY3RzIHVzaW5nICRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJlbnRfb2JqZWN0LT4uLi4gYW5kIHNvIG9uLjwvcD48YnIvPjwvZGl2PjwvZGl2Pg0KPGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IEZpbGUgT2JqZWN0PC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPg0KPHVsPg0KPGxpPiRmaWxlLSZndDtmaWxlcGF0aCAocmVsYXRpdmUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7ZXh0PC9saT4NCjxsaT4kZmlsZS0mZ3Q7dXJsIChhYnNvbHV0ZSB1cmwpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7c2l6ZSAoc2l6ZSBpbiBieXRlcyk8L2xpPg0KPGxpPiRmaWxlLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7aW1hZ2VzaXplIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7d2lkdGggKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtpbWFnZSAoaW1hZ2UgdGFnOyBmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7dGh1bWJuYWlsICh0aHVtYm5haWwgdXJsLCBpZiBhcHBsaWNhYmxlKTwvbGk+DQo8bGk+JGZpbGUtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+DQo8bGk+JGZpbGUtJmd0O21vZGlmaWVkIChsYXN0IG1vZGlmaWVkLCBmb3JtYXRlZCB0aW1lKTwvbGk+DQo8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj4NCjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBCcmVhZGNydW1iczwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj4NCgkJCQk8cD5XaGVuIHlvdSBhcmUgaW4gYSBtb2R1bGUgdGVtcGxhdGUsIHlvdSBtYXkgY2FsbCB0aGUgYnJlYWRjcnVtYnMgdXNpbmcgdGhlIHthdnBsYXllcl9icmVhZGNydW1ic30gdGFnLiBZb3UgbWF5IHVzZSB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzIHRoZSBjbXMgY29yZSBicmVhZGNydW1icyB0YWcgKGluaXRpYWwsIGRlbGltaXRlciwgY2xhc3NpZCwgY3VycmVudGNsYXNzaWQpLCBhcyB3ZWxsIGFzIHRoZSAic3RhcnRsZXZlbCIgcGFyYW1ldGVyLjxici8+DQoJCQkJT3V0c2lkZSBtb2R1bGUgdGVtcGxhdGVzLCBhbnl3aGVyZSBvbiB0aGUgcGFnZSwgeW91IG1heSBjYWxsIHRoZSBicmVhZGNydW1icyBhY3Rpb24ge2Ntc19tb2R1bGUgbW9kdWxlPSJhdnBsYXllciIgYWN0aW9uPSJicmVhZGNydW1icyJ9LCBvbmNlIGFnYWluIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMuPC9wPjwvZGl2PjwvZGl2Pic7DQoNCi8vIEZvciBmaWxlIGZpZWxkcw0KJGxhbmdbIlJlbW92ZSJdID0gIlJlbW92ZSI7DQokbGFuZ1siZGVsZXRlIl0gPSAiRGVsZXRlIjsNCiRsYW5nWyJicm93c2VmaWxlc3RpdGxlIl0gPSAiVXBsb2FkIGEgbmV3IGZpbGUgb3Igc2VsZWN0IGEgZmlsZSBiZWxvdy4iOw0KJGxhbmdbInNob3dpbmdkaXIiXSA9ICJTaG93aW5nIGRpcmVjdG9yeSI7DQokbGFuZ1siYnJvd3NlZmlsZXNyZXNpemUiXSA9ICJUaGUgcGljdHVyZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVzaXplZCBmb3IgdGhlIG1vZHVsZS4iOw0KJGxhbmdbImJyb3dzZWZpbGVjdXJyZW50cGF0aCJdID0gIkN1cnJlbnRseSBzZWVpbmcgZmlsZXMgaW4gOiAiOw0KJGxhbmdbInBhcmVudGRpciJdID0gIlBhcmVudCBEaXJlY3RvcnkiOw0KJGxhbmdbImFkZGFmaWxlIl0gPSAiQWRkIGZpbGUocykiOw0KJGxhbmdbInN1Ym1pdHRpbmdfZmlsZSJdID0gIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBmaWxlIGlzIGJlaW5nIHVwbG9hZGVkLi4uIjsNCiRsYW5nWyJmaWxlbmFtZSJdID0gIkZpbGVuYW1lIjsNCiRsYW5nWyJpbWFnZXNpemUiXSA9ICJJbWFnZSBzaXplIjsNCiRsYW5nWyJmaWxlZXh0Il0gPSAiRXh0IjsNCiRsYW5nWyJmaWxlc2l6ZSJdID0gIkZpbGUgc2l6ZSI7DQokbGFuZ1sibGFzdG1vZCJdID0gIkxhc3QgbW9kaWZpZWQiOw0KJGxhbmdbImZpbGVvd25lciJdID0gIk93bmVyIjsNCiRsYW5nWyJmaWxlcGVybXMiXSA9ICJQZXJtaXNzaW9ucyI7DQokbGFuZ1sidmlld2FsbGltYWdlcyJdID0gIlZpZXcgYWxsIGltYWdlcyI7DQokbGFuZ1sicG9zdG1heHNpemUiXSA9ICJOb3RpY2U6IHRoZSBwb3N0IG1heCBzaXplIGlzICI7DQokbGFuZ1siYWRkZmlsZWlucHV0Il0gPSAiQWRkIGFub3RoZXIgZmlsZSI7DQokbGFuZ1siemlwZmlsZW5vdGljZSJdID0gIlRoZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhlIHJvb3Qgb2YgdGhlIGFyY2hpdmUuIjsNCiRsYW5nWyJ1cGxvYWR6aXBmaWxlIl0gPSAiVXBsb2FkIHppcCBhcmNoaXZlIjsNCg0KLy8gc3RyaW5ncyBmb3IgZ2VuZXJhbCBmaWVsZHMNCiRsYW5nWyJpZCJdID0gImlkIjsNCiRsYW5nWyJuYW1lIl0gPSAiTmFtZSI7DQokbGFuZ1siYWxpYXMiXSA9ICJBbGlhcyI7DQokbGFuZ1siaXNkZWZhdWx0Il0gPSAiSXMgZGVmYXVsdD8iOw0KJGxhbmdbImFjdGl2ZSJdID0gIkFjdGl2ZSI7DQokbGFuZ1sicGFyZW50Il0gPSAiUGFyZW50IjsNCiRsYW5nWyJzdWJtaXQiXSA9ICJTdWJtaXQiOw0KJGxhbmdbImNhbmNlbCJdID0gIkNhbmNlbCI7DQokbGFuZ1sibmJjaGlsZHJlbiJdID0gIk5iIG9mIGl0ZW1zIjsNCiRsYW5nWyJkYXRlX21vZGlmaWVkIl0gPSAiTGFzdCBtb2RpZmljYXRpb24iOw0KJGxhbmdbImRhdGVfY3JlYXRlZCJdID0gIkNyZWF0aW9uIjsNCgkNCi8vIEdFTkVSQUwNCiRsYW5nWyJwYWdlcyJdID0gIlBhZ2VzOiAiOw0KJGxhbmdbIm5leHRwYWdlIl0gPSAiTmV4dCBwYWdlIjsNCiRsYW5nWyJwcmV2aW91c3BhZ2UiXSA9ICJQcmV2aW91cyBwYWdlIjsNCiRsYW5nWyJhY3RpdmF0ZSJdID0gIkFjdGl2YXRlIjsNCiRsYW5nWyJ1bmFjdGl2YXRlIl0gPSAiVHVybiBvZmYiOw0KJGxhbmdbInNlYXJjaHRoaXN0YWJsZSJdID0gIlNlYXJjaCB0aGlzIHRhYmxlIGZvcjoiOw0KJGxhbmdbInJlc2V0b3JkZXIiXSA9ICJSZXNldCBvcmRlciI7DQokbGFuZ1siWWVzIl0gPSAiWWVzIjsNCiRsYW5nWyJObyJdID0gIk5vIjsNCiRsYW5nWyJBY3Rpb25zIl0gPSAiQWN0aW9ucyI7DQokbGFuZ1sicmVvcmRlciJdID0gIlJlb3JkZXIiOw0KJGxhbmdbImxpc3R0ZW1wbGF0ZSJdID0gIkxpc3QgdGVtcGxhdGUgZm9yIjsNCiRsYW5nWyJ0ZW1wbGF0ZXMiXSA9ICJUZW1wbGF0ZXMiOw0KJGxhbmdbInRlbXBsYXRlIl0gPSAiVGVtcGxhdGUiOw0KJGxhbmdbImRlZmF1bHR0ZW1wbGF0ZXMiXSA9ICJEZWZhdWx0IHRlbXBsYXRlcyI7DQokbGFuZ1sidGVtcGxhdGV2YXJzIl0gPSAiVGVtcGxhdGUgdmFyaWFibGVzIjsNCiRsYW5nWyJlZGl0dGVtcGxhdGUiXSA9ICJFZGl0IHRlbXBsYXRlIjsNCiRsYW5nWyJkZWZ0ZW1wbGF0ZWZvciJdID0gIkRlZmF1bHQgbGlzdCB0ZW1wbGF0ZSBmb3IgbGV2ZWwgIjsNCiRsYW5nWyJkZWZkZXRhaWx0ZW1wbGF0ZSJdID0gIkRlZmF1bHQgZGV0YWlsIHRlbXBsYXRlIjsNCiRsYW5nWyJkZWZzZWFyY2hyZXN1bHRzdGVtcGxhdGUiXSA9ICJEZWZhdWx0IHRlbXBsYXRlIGZvciBzZWFyY2ggcmVzdWx0cyI7DQokbGFuZ1siZGVmZW1wdHl0ZW1wbGF0ZSJdID0gIlRlbXBsYXRlIGZvciBlbXB0eSByZXN1bHQgc2V0cyI7DQokbGFuZ1sidXNlbGV2ZWxsaXN0dHBsIl0gPSAiVXNlIHRoZSBsaXN0IHRlbXBsYXRlIG9mIHRoZSBhcHByb3ByaWF0ZSBsZXZlbCI7DQokbGFuZ1siYWRkdGVtcGxhdGUiXSA9ICJBZGQgdGVtcGxhdGUiOw0KJGxhbmdbImZpbHRlcmJ5Il0gPSAiRmlsdGVyIGJ5IjsNCiRsYW5nWyJzaG93aW5nb25seSJdID0gIkZpbHRlcjogIjsNCiRsYW5nWyJzaG93YWxsIl0gPSAiU2hvdyBhbGwgKG5vIGZpbHRlcikiOw0KJGxhbmdbImZpZWxkb3B0aW9ucyJdID0gIkZpZWxkIG9wdGlvbnMiOw0KJGxhbmdbImFkZG9wdGlvbiJdID0gIkFkZCBhbiBvcHRpb24iOw0KJGxhbmdbIm1vZGlmeWFub3B0aW9uIl0gPSAiTW9kaWZ5IGFuIG9wdGlvbiI7DQokbGFuZ1sibWVzc2FnZV9kZWxldGVkIl0gPSAiRWxlbWVudCBkZWxldGVkIjsNCiRsYW5nWyJtZXNzYWdlX21vZGlmaWVkIl0gPSAiTW9kaWZpY2F0aW9uIHNhdmVkIjsNCiRsYW5nWyJ3YXJuaW5nX3RhYiJdID0gIk5vdGljZTogU2F2ZSBjaGFuZ2VzIGluIG90aGVyIHRhYnMgYmVmb3JlIHdvcmtpbmcgaW4gdGhpcyBvbmUuLi4iOw0KJGxhbmdbImVycm9yX21pc3NnaW52YWx1ZSJdID0gIk9uZSBvciBtb3JlIG5lY2Vzc2FyeSB2YWx1ZXMgaGF2ZSBub3QgYmVlbiBlbnRlcmVkLiI7DQokbGFuZ1siZXJyb3JfYWxyZWFkeWV4aXN0cyJdID0gIlRoZXJlIGlzIGFscmVhZHkgYW4gZWxlbWVudCBiZWFyaW5nIHRoYXQgbmFtZS4iOw0KJGxhbmdbImVycm9yX2RhdGUiXSA9ICJUaGUgZGF0ZSB5b3UgaGF2ZSBlbnRlcmVkIGlzIGludmFsaWQuIjsNCiRsYW5nWyJlcnJvcl9ub3BhcmVudCJdID0gIk5vIHBhcmVudCBpcyBkZWZpbmVkISI7DQokbGFuZ1siZXJyb3Jfbm90Zm91bmQiXSA9ICJUaGUgaXRlbSBjb3VsZCBub3QgYmUgZm91bmQuIjsNCiRsYW5nWyJlcnJvcl9ub2l0ZW1mb3VuZCJdID0gIk5vIGl0ZW0gZm91bmQuIjsNCiRsYW5nWyJlcnJvcl9kZW5pZWQiXSA9ICJQZXJtaXNzaW9uIGRlbmllZCI7DQokbGFuZ1siZXJyb3Jfd3JvbmdxdWVyeSJdID0gIkludmFsaWQgcXVlcnkuIjsNCiRsYW5nWyJlcnJvcl9mZWFkZGRlbmllZCJdID0gIllvdSBkbyBub3QgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byBjb250aW51ZS4iOw0KJGxhbmdbImVycm9yX3dyb25nZmlsZXR5cGUiXSA9ICJUaGlzIHR5cGUgb2YgZmlsZSBpcyBub3QgYWxsb3dlZCBoZXJlLiI7DQokbGFuZ1siZXJyb3JfY2FwdGNoYSJdID0gIlRoZSB0ZXh0IGdpdmVuIGRvZXMgbm90IG1hdGNoIHRoZSBjYXB0Y2hhIGltYWdlLiI7DQokbGFuZ1siZXJyb3JfZmlsZXRvb2JpZyJdID0gIlRoZSBmaWxlIGlzIHRvIGJpZyB0byBiZSB1cGxvYWRlZCBoZXJlLiI7DQokbGFuZ1siZ2l2ZW5lcnJvciJdID0gIkVycm9yOiAiOw0KJGxhbmdbImZpbmFsdGVtcGxhdGUiXSA9ICJEaXNwbGF5IHRlbXBsYXRlIGZvciBmaW5hbCBsZXZlbCAobWVkaWFmaWxlKSI7DQokbGFuZ1sicHJvbXB0X2RlbGV0ZW9wdGlvbiJdID0gIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBvcHRpb24/IjsNCiRsYW5nWyJwcm9tcHRfZ2VuZXJhbGRlbGV0ZSJdID0gIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcz8iOw0KJGxhbmdbInByb21wdF9jYXB0Y2hhIl0gPSAiRW50ZXIgdGhlIHRleHQgZnJvbSB0aGUgaW1hZ2UuIjsNCiRsYW5nWyJxdWVyaWVzIl0gPSAiUXVlcmllcyI7DQokbGFuZ1sicXVlcnkiXSA9ICJRdWVyeSI7DQokbGFuZ1sicmVzdWx0cyJdID0gIlJlc3VsdHMiOw0KJGxhbmdbImNyZWF0ZXF1ZXJ5Il0gPSAiQ3JlYXRlIGEgbmV3IHF1ZXJ5IjsNCiRsYW5nWyJwcm9tcHRfcXVlcnkiXSA9ICJDcmVhdGUgYSBxdWVyeSBmb3Igd2hpY2ggbGV2ZWw/IjsNCiRsYW5nWyJvcmRlcmJ5ZmllbGQiXSA9ICJPcmRlciBieSI7DQokbGFuZ1siZGF0ZV9tb2RpZmllZCJdID0gIkRhdGUgbW9kaWZpZWQiOw0KJGxhbmdbImZyb250ZW5kX3N1Ym1pdCJdID0gIlN1Ym1pdCI7DQoNCg0KLy8gQlJFQURDUlVNQlMgOg0KJGxhbmdbInlvdWFyZWhlcmUiXSA9ICJZb3UgYXJlIGhlcmU6ICI7DQokbGFuZ1siYnJlYWRjcnVtYnNfZGVsaW1pdGVyIl0gPSAiICZndDsgIjsNCg0KLy8gU0VBUkNIIDoNCiRsYW5nWyJzZWFyY2h0aXRsZSJdID0gIlNlYXJjaCI7DQokbGFuZ1sic2VhcmNoYWdhaW4iXSA9ICJEbyBhbm90aGVyIHNlYXJjaCI7DQokbGFuZ1sic2VhcmNoYnRuIl0gPSAiU2VhcmNoISI7DQokbGFuZ1siY29udGFpbnMiXSA9ICJDb250YWlucyI7DQokbGFuZ1siaXNleGFjdGx5Il0gPSAiSXMgZXhhY3RseSI7DQokbGFuZ1siaXNub3QiXSA9ICJJcyBub3QiOw0KJGxhbmdbImlzaGlnaGVydGhhbiJdID0gIklzIGhpZ2hlciB0aGFuIjsNCiRsYW5nWyJpc2xvd2VydGhhbiJdID0gIklzIGxvd2VyIHRoYW4iOw0KJGxhbmdbImlzYWZ0ZXIiXSA9ICJJcyBhZnRlciI7DQokbGFuZ1siaXNiZWZvcmUiXSA9ICJJcyBiZWZvcmUiOw0KJGxhbmdbImlzYmV0d2VlbiJdID0gIklzIGJldHdlZW4iOw0KJGxhbmdbInRoaXNhbmR0aGlzIl0gPSAiYW5kIjsNCiRsYW5nWyJxdWVyeXVzZSJdID0gIk5vdCB1c2VkIjsNCiRsYW5nWyJxdWVyeW5hbWUiXSA9ICJRdWVyeSBuYW1lIjsNCg0KLy8gSU1QT1JUIC8gRVhQT1JUDQokbGFuZ1siZXhwb3J0X3RpdGxlIl0gPSAiRXhwb3J0IGl0ZW1zIHRvIHhtbCI7DQokbGFuZ1siZXhwb3J0d2hpY2hsZXZlbHMiXSA9ICJXaGljaCB0YWJsZXMgc2hvdWxkIGJlIGV4cG9ydGVkPyI7DQokbGFuZ1siZXhwb3J0X3RlbXBsYXRlcyJdID0gIkV4cG9ydCB0ZW1wbGF0ZXMgdG9vPyI7DQokbGFuZ1siaW1wb3J0X3RpdGxlIl0gPSAiSW1wb3J0IGZyb20geG1sIGZpbGUiOw0KJGxhbmdbImltcG9ydF9maWxlcHJvbXB0Il0gPSAiU2VsZWN0IHhtbCBmaWxlIGZyb20gd2hpY2ggdG8gaW1wb3J0LiI7DQokbGFuZ1siaW1wb3J0X2RvbmUiXSA9ICJJbXBvcnQgZG9uZS4gJXMgcmVjb3JkcyB3aGVyZSBpbXBvcnRlZC4iOw0KJGxhbmdbImltcG9ydF9lbnRyaWVzIl0gPSAiVGhlIGZpbGUgY29udGFpbnMgJXMgcmVjb3Jkcy4iOw0KJGxhbmdbImltcG9ydF9kZWxldGUiXSA9ICJEZWxldGUgdGFibGUgY29udGVudCBiZWZvcmUgaW1wb3J0aW5nPyI7DQokbGFuZ1siaW1wb3J0d2hpY2hsZXZlbHMiXSA9ICJXaGljaCB0YWJsZXMgc2hvdWxkIGJlIGltcG9ydGVkPyI7DQokbGFuZ1siaW1wb3J0X3RlbXBsYXRlcyJdID0gIkltcG9ydCB0ZW1wbGF0ZXMgdG9vPyI7DQokbGFuZ1siY291bGRub3RpbXBvcnQiXSA9ICJUaGVyZSB3YXMgYW4gZXJyb3IgaW1wb3J0aW5nIHJlY29yZHMgZm9yOiAiOw0KJGxhbmdbImVycm9yX2ludmFsaWR4bWwiXSA9ICJUaGUgZmlsZSB5b3UgcHJvdmlkZWQgaXMgbm90IGEgdmFsaWQgeG1sIGV4cG9ydCBmb3IgdGhpcyBtb2R1bGUuIjsNCg0KLy8gTU9EVUxFIElOVEVSQUNUSU9ODQokbGFuZ1sicG9zdGluc3RhbGwiXSA9ICJNb2R1bGUgc3VjY2Vzc2Z1bGx5IGFkZGVkLjxici8+SWYgdGhpcyBtb2R1bGUgaGFzIGFueSBmaWxlIGZpZWxkcywgcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBleGlzdCBpbiB0aGUgdXBsb2FkcyBmb2xkZXIuIERvbid0IGZvcmdldCB0byBnaXZlIHlvdXIgdXNlcnMgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgbW9kdWxlISI7DQokbGFuZ1sicG9zdHVuaW5zdGFsbCJdID0gIk1vZHVsZSBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4iOw0KJGxhbmdbInJlYWxseV91bmluc3RhbGwiXSA9ICJBbGwgb2YgdGhpcyBtb2R1bGUncyBjb250ZW50IHdpbGwgYmUgbG9zdC4gQ29udGludWU/IjsNCiRsYW5nWyJ1bmluc3RhbGxlZCJdID0gIk1vZHVsZSBVbmluc3RhbGxlZC4iOw0KJGxhbmdbImluc3RhbGxlZCJdID0gIk1vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4iOw0KJGxhbmdbImhlbHAiXSA9ICI8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCgkJCQk8cD5UaGlzIG1vZHVsZSBtYW5hZ2VzIGFuZCBkaXNwbGF5cyBhbiBpdGVtIGNhdGFsb2d1ZS48L3A+DQoJCQk8YnIvPjxoMz5Ib3cgRG8gSSBVc2UgSXQ/PC9oMz4NCgkJCQk8YnIvPjxoND5QZXJtaXNzaW9uczwvaDQ+DQoJCQkJCTxwPk1ha2Ugc3VyZSB5b3VyIHVzZXJzIGhhdmUgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zLiBJZiB5b3UgYXJlIG5vdCB1c2luZyB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiAoc2VlIHNldHRpbmdzKSwgdGhlIFwiYXZwbGF5ZXI6IE5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbiB3aWxsIGJlIGVub3VnaCB0byB1c2UgdGhlIG1vZHVsZS4gSW4gdGhlIHNldHRpbmdzIHRhYiwgeW91IGNhbiBjaG9vc2Ugd2hpY2ggdGFicyB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhlIG5vcm1hbCB1c2VyLiBPbmx5IHRoZSBhZG1pbmlzdHJhdG9yIGFuZCB1c2VycyB3aXRoIHRoZSBcImF2cGxheWVyOiBBZHZhbmNlZFwiIHBlcm1pc3Npb24gd2lsbCBoYXZlIGFjY2VzcyB0byBzZXR0aW5ncyB0YWIuPGJyLz4NCgkJCQkJSWYgeW91IHdpc2ggdG8gZGVmaW5lIGxldmVsLXNwZWNpZmljIHBlcm1pc3Npb25zLCBhY3RpdmF0ZSB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiBpbiB0aGUgc2V0dGluZ3MgdGFiIGFuZCBnaXZlIHRoZSBcImF2cGxheWVyOiBNYW5hZ2UgbmFtZV9vZl9sZXZlbFwiIHBlcm1pc3Npb24gdG8gdGhlIGFwcHJvcHJpYXRlIHVzZXJzLjwvcD4NCgkJCQk8YnIvPjxoND5CYXNpY3M8L2g0Pg0KCQkJCQk8cD5UbyBjYWxsIHRoZSBtb2R1bGUsIHNpbXBseSB1c2UgdGhlIGZvbGxvd2luZyB0YWc6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIn08L3A+DQoJCQkJCTxwPkluIHRoaXMgY2FzZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBsZXZlbCBlbGVtZW50cyAobWVkaWFmaWxlKSB3aWxsIGJlIGRpc3BsYXllZC4gVG8gc2VsZWN0IGEgbGV2ZWwsIHVzZSB0aGUgXCJ3aGF0XCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgd2hhdD1cIm1lZGlhZmlsZVwifTxici8+DQoJCQkJCTxpPlRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBcIndoYXRcIiBwYXJhbWV0ZXIgYXJlIDogcGxheWVyLCBtZWRpYWZpbGU8L2k+PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGFsc28gYXNrIGZvciBlbGVtZW50cyB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50Ojxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgcGFyZW50PVwiYWxpYXNfb2ZfcGFyZW50XCJ9PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGZpbmFsbHkgYXNrIGZvciBhIHNwZWNpZmljIGVsZW1lbnQ6PGJyPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJhdnBsYXllclwiIGFsaWFzPVwiYWxpYXNfb2ZfaXRlbVwifTwvcD4NCgkJCQk8YnIvPjxoND5TZXBhcmF0aW5nIGludG8gcGFnZXM8L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24gb24gb25lIHBhZ2U6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBuYnBlcnBhZ2U9XCI1XCJ9PGJyLz4NCgkJCQkJSW4gdGhlIHRlbXBsYXRlLCB5b3UgY2FuIGJ1aWxkIHRoZSBwYWdlIG1lbnUgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWdzOjxici8+DQoJCQkJCXsiLickJy4icGFnZV9zaG93aW5nfSwgeyIuJyQnLiJwYWdlX3RvdGFsaXRlbXN9LCB7Ii4nJCcuInBhZ2VfcGFnZW51bWJlcnN9LCB7Ii4nJCcuInBhZ2VfbmV4dH0sIHsiLickJy4icGFnZV9wcmV2aW91c308L3A+DQoJCQkJPGJyLz48aDQ+VXNpbmcgcXVlcmllczwvaDQ+DQoJCQkJCTxwPlRvIGdldCBhIGxpc3Qgb2YgaXRlbSB0aGF0IG1lZXQgc3BlY2lmaWMgY3JpdGVyaWEsIHlvdSBjYW4gY3JlYXRlIGEgcXVlcnkgdXNpbmcgdGhlIHF1ZXJpZXMgdGFiIG9mIHRoZSBhZG1pbiBwYW5lbCwgYW5kIGNhbGwgdGhlbSB1c2luZyB0aGUgXCJxdWVyeVwiIHBhcmFtZXRlcjo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJhdnBsYXllclwiIHF1ZXJ5PVwiNVwifTwvcD4NCgkJCQkJPHA+PGk+SWYgdGhlIG9wdGlvbiB0byBhbGxvdyBtYW51ZWwgc3FsIHF1ZXJpZXMgaXMgZW5hYmxlZDwvaT4gKHNlZSBcIlNldHRpbmdzXCIgdGFiKSwgeW91IG1heSBhbHNvIHByb3ZpZGUgdGhlIHNxbCBxdWVyeSBkaXJlY3RseSB3aXRoIHRoZSBxdWVyeSBwYXJhbWV0ZXIuIEZvciBleGFtcGxlOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgd2hhdD1cIm1lZGlhZmlsZVwiIHF1ZXJ5PVwiQS5kYXRlX21vZGlmaWVkID4gJzIwMDktMDMtMTUnIEFORCBBLmFjdGl2ZSA9IDFcIn08YnIvPg0KCQkJCQlUaGUgcXVlcnkgcGFyYW1ldGVyIGNhbiBvbmx5IGhvbGQgdGhlIFdIRVJFIGNsYXVzZSBvZiB0aGUgcXVlcnksIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIFdIRVJFIGNvbW1hbmQgaXRzZWxmLiBUbyBhdm9pZCBwcm9ibGVtcywgdGhlIHByZWZpeCBcIkEuXCIgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIGZpZWxkIG5hbWVzICh3aGVyZSBhcHBsaWNhYmxlLCB0aGUgXCJCLlwiIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cImxpbmtcIjwvYj4gdG8gY3JlYXRlIGEgbGluayB0byB0aGUgZGVmYXVsdCBhY3Rpb24sIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnM6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJsaW5rXCIgd2hhdD1cIm1lZGlhZmlsZVwiIHJhbmRvbT1cIjFcIn08YnIvPg0KCQkJCQl3b3VsZCBjcmVhdGUgYSBsaW5rIHRvIGEgcmFuZG9tIGVsZW1lbnQgb2YgdGhpcyBsZXZlbC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIHNpdGVtYXAgYWN0aW9uPC9oND4NCgkJCQkJPHA+SWYgeW91ciBtb2R1bGUgaXMgbm90IHNoYXJpbmcgY2hpbGRyZW4sIHlvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+XCJzaXRlbWFwXCI8L2I+IHRvIGNyZWF0ZSBhIG1vZHVsZSBzaXRlbWFwOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgYWN0aW9uPVwic2l0ZW1hcFwifTxici8+DQoJCQkJCVlvdSBjYW4gc2VsZWN0IHRoZSBsZXZlbHMgdXNpbmcgdGhlIFwid2hhdFwiIHBhcmFtZXRlciwgYW5kIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSB1c2luZyBcInxcIiA6IHdoYXQ9XCJsZXZlbDF8bGV2ZWwyXCIuPGJyLz4NCgkJCQkJT3RoZXIgYXZhaWxhYmxlIHBhcmFtZXRlcnMgZm9yIHRoaXMgYWN0aW9uIGFyZSBcImRldGFpbHBhZ2VcIiBhbmQgXCJpbmxpbmVcIi48YnIvPg0KCQkJCQlUbyBjcmVhdGUgYSBnb29nbGUgc2l0ZW1hcCwgc2VlIHRoZSA8YSBocmVmPVwiLi4vbW9kdWxlcy9hdnBsYXllci9kb2MvZmFxLmh0bWwjcTE2XCIgdGFyZ2V0PVwiX2JsYW5rXCI+RkFRPC9hPi48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGZyb250ZW5kIGVkaXQgYWN0aW9uPC9oND4NCgkJCQkJPHA+QSBmb3JtIGZvciB0aGUgZnJvbnRlbmQgZWRpdGlvbiBvZiBlbGVtZW50cyBjYW4gYmUgY2FsbGVkIHVzaW5nOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgYWN0aW9uPVwiZnJvbnRlbmRfZWRpdFwiIHdoYXQ9XCJtZWRpYWZpbGVcIn08YnIvPg0KCQkJCQlUaGlzIHRhZyB3b3VsZCBzaG93IGFuIGVtcHR5IGZvcm0sIGFuZCBjcmVhdGUgYSBuZXcgZWxlbWVudCBvZiB0aGUgbGV2ZWwgXCJtZWRpYWZpbGVcIi4gSW4gb3JkZXIgdG8gZWRpdCBhbiBleGlzdGluZyBlbGVtZW50LCB5b3Ugc2ltcGx5IGhhdmUgdG8gc3BlY2lmeSB0aGUgYWxpYXM6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJmcm9udGVuZF9lZGl0XCIgd2hhdD1cIm1lZGlhZmlsZVwiIGFsaWFzPVwiaXRlbV9hbGlhc1wifTwvcD4NCgkJCQkJPHA+SWYgeW91IHdpc2ggdG8gZGlzcGxheSBhIGxpbmsgdG8gdGhlIGVkaXRpb24gb2YgYW4gaXRlbSwgdXNlIHRoZSBcImxpbmtcIiBhY3Rpb246PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJsaW5rXCIgdG9hY3Rpb249XCJmcm9udGVuZF9lZGl0XCIgd2hhdD1cIm1lZGlhZmlsZVwiIGFsaWFzPVwiaXRlbV9hbGlhc1wifTxici8+DQoJCQkJCVlvdSBjb3VsZCwgZm9yIGV4YW1wbGUsIGRvIHRoaXMgaW4gYSBsaXN0IHRlbXBsYXRlLi4uPC9wPg0KCQkJCQk8cD4oU2VlIHRoZSBzZXR0aW5ncyB0YWIgZm9yIG9wdGlvbnMgYWJvdXQgdGhlIGZyb250ZW5kX2VkaXQgZmVhdHVyZSk8YnIvPg0KCQkJCQlJdCBpcyByZWNvbW1hbmRlZCB0aGF0IHRoZSBmcm9udGVuZCBlZGl0IGZlYXR1cmUgYmUgdXNlZCB3aXRoIHRoZSBGcm9udCBFbmQgVXNlcnMgbW9kdWxlIGZvciBwZXJtaXNzaW9ucyBtYW5hZ2VtZW50LiBTZWUgPGEgaHJlZj1cIi4uL21vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sI3EyMFwiIHRhcmdldD1cIl9ibGFua1wiPkZBUTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGRvIHRoaXMuPC9wPg0KCQkJCTxici8+PGg0PlRoZSBzZWFyY2ggYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cInNlYXJjaFwiPC9iPiB0byBkaXNwbGF5IGEgc2VhcmNoIGZvcm06PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJzZWFyY2hcIn08YnIvPg0KCQkJCQlVc2UgdGhlIFwic2VhcmNobW9kZVwiIHBhcmFtZXRlciB0byBzd2l0Y2ggYmV0d2VlbiBhZHZhbmNlZCAoZGVmYXVsdCkgYW5kIHNpbXBsZSBtb2RlLiBZb3UgbWF5IHNwZWNpZnkgdGhlIGxldmVsIGluIHdoaWNoIHRvIHNlYXJjaCB1c2luZyB0aGUgXCJ3aGF0XCIgcGFyYW1ldGVyLiBZb3UgY2Fubm90IHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoIG1vZGUgaW4gYWxsIGxldmVscyBhdCB0aGUgc2FtZSB0aW1lLjxici8+DQoJCQkJCVRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCB3aXRoIHRoZSBzZWFyY2ggYWN0aW9uOiB3aGF0LCBsaW1pdCwgbmJwZXJwYWdlLCBvcmRlcmJ5LCBkZXRhaWxwYWdlLCBsaXN0dGVtcGxhdGUsIGlubGluZSwgc2VhcmNobW9kZS48YnIvPg0KCQkJCQlTZWUgYXZwbGF5ZXIvdGVtcGxhdGVzL3NlYXJjaC50cGwgdG8gbW9kaWZ5IHRoZSBzZWFyY2ggZm9ybS48L3A+PGJyLz4NCg0KCQkJCTxoND5BdWRpby9WaWRlbyBQbGF5ZXJzPC9oND4NCgkJCQlXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgcGxheWVycyB3aXRoIEFWUGxheWVyLCBpdCBoYXMgYmVlbiBjb25maWd1cmVkIG9wdGltYWxseSBmb3IgDQoJCQkJdGhlIDxzdHJvbmc+TmVvTGFvIFBsYXllcjwvc3Ryb25nPjxiciAvPg0KCQkJCUZvciBWaWRlbywgZG93bmxvYWQgdGhlIDxzdHJvbmc+TmVvTGFvIFZpZGVvIChGTFYgUGxheWVyKTwvc3Ryb25nPiBmcm9tOg0KCQkJCTxhIGhyZWY9XCJodHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2Rvd25sb2FkXCIgdGFyZ2V0PVwiX2JsYW5rXCI+aHR0cDovL2Zsdi1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9kb3dubG9hZDwvYT48YnIgLz4NCgkJCQlVcGxvYWQgdG8geW91ciBzaXRlIGFuZCBwbGFjZSB0aGUgcGF0aCBpbnRvIHRoZSBsb2NhdGlvbiBmaWVsZCBvZiB0aGUgUGxheWVyLCBpZToNCgkJCQl1cGxvYWRzL0ZMVlBsYXllci9wbGF5ZXJfZmx2X21heGkuc3dmPGJyIC8+DQoJCQkJRm9yIDxzdHJvbmc+TVAzJ3M8L3N0cm9uZz4gcGxlYXNlIGRvd25sb2FkIHRoZSA8c3Ryb25nPk5lb0xhbyBGbGFzaCBNUDMgUGxheWVyPC9zdHJvbmc+IGZyb20gOjxicj4NCgkJCQk8YSBocmVmPVwiaHR0cDovL2ZsYXNoLW1wMy1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9kb3dubG9hZFwiIHRhcmdldD1cIl9ibGFua1wiPmh0dHA6Ly9mbGFzaC1tcDMtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQ8L2E+PGJyIC8+DQoJCQkJZm9yIDxzdHJvbmc+UGxheWVyIFBhcmFtZXRlcnM8L3N0cm9uZz4gCXBsZWFzZSByZWZlciB0bzo8YSBocmVmPVwiaHR0cDovL2Zsdi1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9nZW5lcmF0b3JcIiB0YXJnZXQ9XCJfYmxhbmtcIj5odHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2dlbmVyYXRvcjwvYT48YnIgLz4NCg0KCQkJCQ0KCQkJCTxiciAvPg0KDQoNCgkJCQk8cD5Gb3IgbW9yZSBoZWxwIG9uIG1vZHVsZSB1c2UsIHlvdSBtYXkgdGFrZSBhIGxvb2sgYXQgdGhlIDxhIGhyZWY9XCIuLi9tb2R1bGVzL2F2cGxheWVyL2RvYy9mYXEuaHRtbFwiIHRhcmdldD1cIl9ibGFua1wiPkZBUTwvYT4uPC9wPg0KCQkJPGJyLz48aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCgkJCQk8cD5UaGlzIG1vZHVsZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLjwvcD48YnIvPjxici8+IjsNCg0KLy9FVkVOVFMNCiRsYW5nWyJldmVudGRlc2NfbW9kaWZpZWQiXSA9ICJDYWxsZWQgYWZ0ZXIgYW4gZWxlbWVudCBoYXMgYmVlbiBtb2RpZmllZC4gUGFyYW1zOiBcIndoYXRcIj0+bGV2ZWwgb2YgdGhlIGVsZW1lbnQsIFwiaXRlbWlkXCI9PmlkIG9mIHRoZSBlbGVtZW50LCBcImFsaWFzXCI9PmFsaWFzIG9mIHRoZSBlbGVtZW50LiI7DQokbGFuZ1siZXZlbnRkZXNjX2RlbGV0ZWQiXSA9ICJDYWxsZWQgYWZ0ZXIgYW4gZWxlbWVudCBoYXMgYmVlbiBkZWxldGVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudC4iOw0KJGxhbmdbImV2ZW50ZGVzY19hZGRlZCJdID0gIkNhbGxlZCBhZnRlciBhbiBlbGVtZW50IGhhcyBiZWVuIGFkZGVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudCwgXCJpdGVtaWRcIj0+aWQgb2YgdGhlIGVsZW1lbnQsIFwiYWxpYXNcIj0+YWxpYXMgb2YgdGhlIGVsZW1lbnQuIjsNCg0KLy9QUkVGRVJFTkNFUw0KJGxhbmdbInByZWZlcmVuY2VzIl0gPSAiU2V0dGluZ3MiOw0KJGxhbmdbInByZWZfdGFiZGlzcGxheSJdID0gIkFkbWluIHRhYnMgc2hvd24gdG8gdGhlIG5vcm1hbCB1c2VyIjsNCiRsYW5nWyJoZWxwX3RhYmRpc3BsYXkiXSA9ICIoTm9ybWFsIHVzZXJzIGFyZSB0aG9zZSB3aG8gaGF2ZSBiZWVuIGdpdmVuIHRoZSBcImF2cGxheWVyOiBub3JtYWwgdXNlclwiIHBlcm1pc3Npb24uIFRoZSBsZXZlbC1zcGVjaWZpYyBtYW5hZ2UgcGVybWlzc2lvbnMgb3ZlcnJpZGUgdGhlIHZpc2libGUgdGFicyBzZWxlY3RlZCBoZXJlLikiOw0KJGxhbmdbInByZWZfc2VhcmNobW9kdWxlX2luZGV4Il0gPSAiSW5kZXggdGhlIGZvbGxvd2luZyBsZXZlbHMgZm9yIHRoZSBzZWFyY2ggbW9kdWxlIjsNCiRsYW5nWyJoZWxwX3NlYXJjaG1vZHVsZV9pbmRleCJdID0gIihUaGlzIGhhcyBubyBlZmZlY3Qgb24gdGhpcyBtb2R1bGUgb3duIGludGVybmFsIHNlYXJjaCBhY3Rpb24uIEFsc28gbm90ZSB0aGF0IGFmdGVyIGNoYW5naW5nIHRoZXNlIHNldHRpbmdzIHlvdSBtaWdodCBoYXZlIHRvIHJlaW5kZXggdG8gZ2V0IG9mIHByZXZpb3VzbHkgaW5kZXhlZCBkYXRhLCB3aGljaCB5b3UgbWF5IGRvIGluIEV4dGVuc2lvbi0mZ3Q7U2VhcmNoLikiOw0KJGxhbmdbInByZWZfbmV3aXRlbXNmaXJzdCJdID0gIk5ldyBpdGVtcyBzaG91bGQgYXBwZWFyIG9uIHRvcCBmb3IgdGhlIGZvbGxvd2luZyBsZXZlbHMiOw0KJGxhbmdbImhlbHBfbmV3aXRlbXNmaXJzdCJdID0gIihPYnZpb3VzbHksIGlmIHRoZSBsZXZlbCBpcyBub3QgY2hlY2tlZCBoZXJlLCBuZXcgaXRlbXMgd2lsbCBhcHBlYXIgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdCkiOw0KJGxhbmdbInByZWZfcmVzdHJpY3RfcGVybWlzc2lvbnMiXSA9ICJTaG91bGQgd2UgPGI+cmVzdHJpY3Q8L2I+IHRoZSBtYW5hZ2VtZW50IG9mIGl0ZW1zIHRvIHRoZSB1c2VycyB3aG8gaGF2ZSBzcGVjaWZpYyBtYW5hZ2VtZW50IHBlcm1pc3Npb25zIGZvciB0aGUgbGV2ZWw/IChpZiB5b3UgZG8gbm90IHdpc2ggdG8gc3BlY2lmeSBkaWZmZXJlbnQgcGVybWlzc2lvbnMgZm9yIGRpZmZlcmVudCBsZXZlbHMsIHlvdSBjYW4gdW5jaGVjayB0aGlzIGFuZCBzaW1wbHkgdXNlIHRoZSBcImF2cGxheWVyOiBub3JtYWwgdXNlclwiIHBlcm1pc3Npb24uKSI7DQokbGFuZ1sicHJlZl9kaXNwbGF5X2ZpbHRlciJdID0gIkRpc3BsYXkgPGI+ZmlsdGVyPC9iPiBvbiB0aGUgbW9kdWxlIGFkbWluIHBhbmVsPyI7DQokbGFuZ1sicHJlZl9kaXNwbGF5X2luc3RhbnRzZWFyY2giXSA9ICJEaXNwbGF5IDxiPmluc3RhbnQgc2VhcmNoPC9iPiBvbiB0aGUgbW9kdWxlIGFkbWluIHBhbmVsPyI7DQokbGFuZ1sicHJlZl9kaXNwbGF5X2luc3RhbnRzb3J0Il0gPSAiRGlzcGxheSA8Yj5pbnN0YW50IHNvcnQ8L2I+IGJ5IGNvbHVtbiBsaW5rcz8iOw0KJGxhbmdbInByZWZfZWRpdGFibGVfYWxpYXNlcyJdID0gIlNob3VsZCB0aGUgPGI+YWxpYXM8L2I+IG9mIGl0ZW1zIGJlIG1hbnVhbGx5IGVkaXRhYmxlPyI7DQokbGFuZ1sicHJlZl9mb3JjZV9saXN0Il0gPSAiU2hvdWxkIHRoZSA8Yj5mb3JjZWxpc3Q8L2I+IHBhcmFtZXRlciBiZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IChsaXN0IHZpZXcgd2lsbCBiZSBzaG93biBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgaXRlbSkiOw0KJGxhbmdbInByZWZfZGVsZXRlX2ZpbGVzIl0gPSAiV2hlbiBhbiBpdGVtIGlzIDxiPmRlbGV0ZWQ8L2I+LCBzaG91bGQgdGhlIGFzc29jaWF0ZWQgZmlsZXMgYmUgYWxzbyBkZWxldGVkPyAocHJvdmlkZWQgdGhlIGl0ZW0gaGFzIGFueSBmaWxlIGZpZWxkcy4uLikiOw0KJGxhbmdbInByZWZfYWxsb3dfc3FsIl0gPSAiQWxsb3cgbWFudWFsIFNRTCBxdWVyaWVzPyAod2l0aCB0aGUgXCJxdWVyeVwiIHBhcmFtZXRlcikiOw0KJGxhbmdbInByZWZfdXNlX2hpZXJhcmNoeSJdID0gIkRpc3BsYXkgZnVsbCBoaWVyYXJjaHkgaW4gZmlsdGVyIGFuZCBwYXJlbnQgZHJvcGRvd24/IChhZG1pbiBwYW5lbCkiOw0KJGxhbmdbInByZWZfb3JkZXJieW5hbWUiXSA9ICJPcmRlciBwYXJlbnQgZHJvcGRvd25zIGJ5IG5hbWU/IjsNCiRsYW5nWyJwcmVmX3Nob3d0aHVtYm5haWxzIl0gPSAiRGlzcGxheSBhbGwgdGh1bWJuYWlscyBpbnN0ZWFkIG9mIGEgdGFibGUgd2hlbiBzZWxlY3RlZCBpbWFnZSBmaWxlcz8iOw0KJGxhbmdbInByZWZfbWF4c2hvd25wYWdlcyJdID0gIk1heCBudW1iZXIgb2YgcGFnZXMgZGlzcGxheWVkIGluIHRoZSBwYWdlIG1lbnU6ICI7DQokbGFuZ1sicHJlZl9hdXRvaW5jcmVtZW50X2FsaWFzIl0gPSAiQXV0by1pbmNyZW1lbnQgYWxpYXNlcyBpbiBjYXNlIG9mIGlkZW50aWNhbCBuYW1lcz8iOw0KJGxhbmdbInByZWZfZGVjb2RlZW50aXRpZXMiXSA9ICJEZWNvZGUgaHRtbCBlbnRpdGllcyBvbiBmcm9udGVuZCBmb3JtIHN1Ym1pc3Npb24uIjsNCiRsYW5nWyJwcmVmX2Zyb250ZW5kIl0gPSAiRnJvbnRlbmQgZWRpdCI7DQokbGFuZ1siaGVscF9mcm9udGVuZCJdID0gIkZvciBzZWN1cml0eSwgZnJvbnRlbmQgZWRpdGlvbiBzaG91bGQgYmUgdXNlZCB3aXRoIHRoZSBGcm9udCBFbmQgVXNlcnMgbW9kdWxlLiBTZWUgPGEgaHJlZj1cIm1vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sI3EyMFwiIHRhcmdldD1cIl9ibGFua1wiPkZhcTwvYT4gZm9yIGhlbHAgb24gcGVybWlzc2lvbiBpbnRlZ3JhdGlvbi4iOw0KJGxhbmdbInByZWZfZmVfd3lzaXd5ZyJdID0gIkVuYWJsZSB3eXNpd3lnIGluIHRoZSBmcm9udGVuZCAobXVzdCBiZSBlbmFibGVkIGluIHRoZSBHbG9iYWwgU2V0dGluZ3MgdG9vKSI7DQokbGFuZ1sicHJlZl9mZV9kZWNvZGVlbnRpdGllcyJdID0gIkRlY29kZSBodG1sIGVudGl0aWVzIGZyb20gZnJvbnRlbmQgZm9ybXMuIFRoaXMgaXMgbm90IHJlY29tbWFuZGVkLiI7DQokbGFuZ1sicHJlZl9mZV9hbGxvd2ZpbGVzIl0gPSAiQWxsb3cgZmlsZSB1cGxvYWQgZnJvbSB0aGUgZnJvbnRlbmQuIjsNCiRsYW5nWyJwcmVmX2ZlX2FsbG93bmFtZWNoYW5nZSJdID0gIkFsbG93IGZyb250ZW5kIHVzZXJzIHRvIGNoYW5nZSB0aGUgbmFtZSAoYW5kIHRocm91Z2ggaXQgdGhlIGFsaWFzKSBvZiB0aGUgaXRlbSB0aGV5IGFyZSBlZGl0aW5nLiI7DQokbGFuZ1sicHJlZl9mZV9hbGxvd2FkZG5ldyJdID0gIkFsbG93IGZyb250ZW5kIHVzZXJzIHRvIGFkZCBuZXcgZWxlbWVudHMuIjsNCiRsYW5nWyJwcmVmX2ZlX3VzZWNhcHRjaGEiXSA9ICJVc2UgY2FwdGNoYT8gKG1vZHVsZSBDYXB0Y2hhIHJlcXVpcmVkKSI7DQokbGFuZ1sicHJlZl9mZV9hZnRlcnN1Ym1pdCJdID0gIk9uY2UgdGhlIGZvcm0gaXMgc3VibWl0dGVkLCByZWRpcmVjdCB0byAiOw0KJGxhbmdbInByZWZfZmVfbWF4ZmlsZXNpemUiXSA9ICJNYXhpbXVtIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgZmlsZXMgdXBsb2FkZWQgdGhyb3VnaCB0aGUgZnJvbnRlbmQgKGNhbm5vdCBiZSBvdmVyIHBocC5pbmkgbGltaXQpIjsNCiRsYW5nWyJwcmVmX2FsbG93X2NvbXBsZXhfb3JkZXIiXSA9ICJBbGxvdyBjb21wbGV4IFwib3JkZXJieVwiIHBhcmFtZXRlcnMgKGJldGEpLiI7DQokbGFuZ1sicHJlZl9hZG1pbnBhZ2VzIl0gPSAiTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGluIHRoZSBhZG1pbiBwYW5lbCAoMCA9IHBhcyBkZSBwYWdpbmF0aW9uKS4iOw0KJGxhbmdbInByZWZfbG9hZF9uYmNoaWxkcmVuIl0gPSAiTG9hZCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIChpdGVtLSZndDtuYmNoaWxkcmVuKSBmb3IgYWxsIGl0ZW1zPyI7DQokbGFuZ1sicHJlZl9sb2FkX25leHRwcmV2aW91cyJdID0gIkxvYWQgbmV4dC9wcmV2aW91cyBsaW5rcz8gKGRldGFpbCB2aWV3IG9ubHkpIjsNCiRsYW5nWyJwcmVmX3VzZV9zZXNzaW9uIl0gPSAiVXNlIHNlc3Npb24gdG8gc3RvcmUgYWRtaW4gcGFuZWwgZmlsdGVycy4iOw0KJGxhbmdbInByZWZfbGV2ZWxwYWdpbmF0aW9uIl0gPSAiRGVmYXVsdCBudW1iZXIgb2YgZWxlbWVudCBwZXIgcGFnZSBmb3IgdGhlIGZyb250ZW5kIjsNCiRsYW5nWyJoZWxwX2xldmVscGFnaW5hdGlvbiJdID0gIihFbXB0eSBvciAwIGZvciB3aWxsIGRpc2FibGUgZGVmYXVsdCBwYWdpbmF0aW9uLiBUaGUgbmJwZXJwYWdlIHBhcmFtZXRlciBvdmVycmlkZXMgdGhlc2Ugc2V0dGluZ3MuKSI7DQoNCi8vUEFSQU1FVEVSUw0KJGxhbmdbInBoZWxwX2FjdGlvbiJdID0gIlBvc3NpYmxlIGFjdGlvbnM6IFwibGlua1wiLCBcInNlYXJjaFwiLCBcImJyZWFkY3J1bWJzXCIsIFwiZGVmYXVsdFwiLCBcInNpdGVtYXBcIiBhbmQgXCJmcm9udGVuZF9lZGl0XCIuIjsNCiRsYW5nWyJwaGVscF93aGF0Il0gPSAiQWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBsZXZlbCB5b3Ugd2lzaCB0byBkaXNwbGF5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlIDogPGk+cGxheWVyLCBtZWRpYWZpbGU8L2k+IjsNCiRsYW5nWyJwaGVscF9hbGlhcyJdID0gIkFsaWFzIG9mIHRoZSBpdGVtIHlvdSB3aXNoIHRvIGRpc3BsYXkuIjsNCiRsYW5nWyJwaGVscF9wYXJlbnQiXSA9ICJJZiB5b3Ugd2lzaCB0byBsaW1pdCB0aGUgZGlzcGxheWVkIGVsZW1lbnRzIHRvIHRob3NlIHdobyBiZWxvbmcgdG8gYSBzcGVjaWZpYyBwYXJlbnQsIGVudGVyIHRoZSBwYXJlbnQgYWxpYXMgaGVyZS4iOw0KJGxhbmdbInBoZWxwX2xpbWl0Il0gPSAiTGltaXQgdGhlIG51bWJlciBvZiBpdGVtIHJldHVybmVkIGJ5IHRoZSBxdWVyeSAoMCA9IG5vIGxpbWl0KSI7DQokbGFuZ1sicGhlbHBfbmJwZXJwYWdlIl0gPSAiU2V0IHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIG9uIGVhY2ggcGFnZS4iOw0KJGxhbmdbInBoZWxwX29yZGVyYnkiXSA9ICJZb3UgY2FuIHNldCB0byBcIm1vZGlmaWVkXCIsIFwiY3JlYXRlZFwiIG9yIHRoZSBuYW1lIG9mIGEgZmllbGQgdG8gb3JkZXIgaXRlbXMgaW4gdGhpcyB3YXkuIEFueSBvdGhlciB2YWx1ZSB3aWxsIG9yZGVyIHdpdGggdGhlIGl0ZW0gb3JkZXIuIjsNCiRsYW5nWyJwaGVscF9kZXRhaWxwYWdlIl0gPSAiU3BlY2lmeSB0aGUgYWxpYXMgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggbGlua3MgdG8gY2hpbGQgZWxlbWVudHMgc2hvdWxkIGJlIHNlbnQgKGlmIG5vbmUgaXMgc3BlY2lmaWVkLCBjdXJyZW50IHBhZ2UgaXMgdXNlZCkiOw0KJGxhbmdbInBoZWxwX3Nob3dkZWZhdWx0Il0gPSAiU2V0IHRvIFwidHJ1ZVwiIGlmIHlvdSB3aXNoIHRvIGRpc3BsYXkgdGhlIGRlZmF1bHQgZWxlbWVudC4iOw0KJGxhbmdbInBoZWxwX3JhbmRvbSJdID0gIlNldCB0byBhIG51bWJlciB0byBzaG93IGEgbnVtYmVyIG9mIHJhbmRvbSBlbGVtZW50cyBmcm9tIHlvdXIgcXVlcnkuIjsNCiRsYW5nWyJwaGVscF9maW5hbHRlbXBsYXRlIl0gPSAiU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgZGV0YWlsIHZpZXcgb2YgdGhlIGZpbmFsIGxldmVsLiI7DQokbGFuZ1sicGhlbHBfbGlzdHRlbXBsYXRlIl0gPSAiU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgbGlzdCB2aWV3LiI7DQokbGFuZ1sicGhlbHBfZm9yY2VsaXN0Il0gPSAiU2V0IHRvIDEgaWYgeW91IHdpc2ggdG8gZGlzcGxheSBhIGxpc3QgdmlldyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgZWxlbWVudC4iOw0KJGxhbmdbInBoZWxwX2ludGVybmFsIl0gPSAiRm9yIGludGVybmFsIHVzZTsgc3BlY2lmeSB0aGUgcGFnZSAod2hlbiB1c2luZyBuYnBlcnBhZ2UpLiI7DQokbGFuZ1sicGhlbHBfcXVlcnkiXSA9ICJGb3Igb3B0aW9uYWwgdXNlIHdpdGggdGhlIFwiZGVmYXVsdFwiIGFjdGlvbi4gU3BlY2lmaWVzIHRoZSBpZCBvZiB0aGUgcXVlcnkgdG8gdXNlLiI7DQokbGFuZ1sicGhlbHBfaW5saW5lIl0gPSAiTWFrZXMgdGhlIGxpbmtzIGlubGluZS4iOw0KJGxhbmdbInBoZWxwX3NlYXJjaG1vZGUiXSA9ICJGb3IgdXNlIHdpdGggdGhlIFwic2VhcmNoXCIgYWN0aW9uLiBTZXQgdG8gXCJzaW1wbGVcIiB0byBzZWFyY2ggaW4gYWxsIHRleHQgZmllbGRzLCBhbmQgXCJhZHZhbmNlZFwiIHRvIHNlYXJjaCBpbiBzcGVjaWZpYyBmaWVsZHMuIjsNCiRsYW5nWyJwaGVscF90b2FjdGlvbiJdID0gIkZvciB1c2Ugd2l0aCB0aGUgXCJsaW5rXCIgYWN0aW9uLiBTZXRzIHRoZSBhY3Rpb24gdG8gd2hpY2ggdGhlIGxpbmsgc2hvdWxkIHJlZGlyZWN0LiI7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCgkJDQovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UNCiR0YWJvcHRhcnJheSA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7DQoJCQ0KDQovLyBDcmVhdGVzIHRoZSBwbGF5ZXIgdGFibGUNCiRmbGRzID0gIg0KCWxvY2F0aW9uIEMoMjU1KSwNCgl3aWR0aCBDKDEwKSwNCgloZWlnaHQgQygxMCksDQoJcGFyYW1ldGVycyBYLA0KCXVzZXJkZWZpbmVkMSBJLA0KCXBsYXllcnR5cGUgSSwNCglpZCBJIEtFWSwNCgluYW1lIEMoNjQpLA0KCWFsaWFzIEMoNjQpLA0KCWl0ZW1fb3JkZXIgSSwNCglhY3RpdmUgTCwNCglpc2RlZmF1bHQgTCwNCiAgICBkYXRlX21vZGlmaWVkICIuQ01TX0FET0RCX0RULiIsDQoJZGF0ZV9jcmVhdGVkICIuQ01TX0FET0RCX0RULiINCgkiOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllcl9zZXEiKTsNCg0KDQovLyBDcmVhdGVzIHRoZSBtZWRpYWZpbGUgdGFibGUNCiRmbGRzID0gIg0KCW1lZGlhZmlsZSBDKDI1NSksDQoJcGljdHVyZSBDKDI1NSksDQoJdXNlcmRlZmluZWQyIEksDQoJcGFyZW50IEksDQoJaWQgSSBLRVksDQoJbmFtZSBDKDY0KSwNCglhbGlhcyBDKDY0KSwNCglpdGVtX29yZGVyIEksDQoJYWN0aXZlIEwsDQoJaXNkZWZhdWx0IEwsDQogICAgZGF0ZV9tb2RpZmllZCAiLkNNU19BRE9EQl9EVC4iLA0KCWRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVC4iDQoJIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSIsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJGRiLT5DcmVhdGVTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGVfc2VxIik7DQoNCg0KLy8gQ3JlYXRlIHRoZSBmaWVsZG9wdGlvbnMgdGFibGUNCiRmbGRzID0gIg0KCWlkIEksDQoJZmllbGQgQygxMjgpLA0KCW5hbWUgQygzMiksDQoJaXRlbV9vcmRlciBJDQoJIjsNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9maWVsZG9wdGlvbnMiLCAkZmxkcywgJHRhYm9wdCk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX2ZpZWxkb3B0aW9uc19zZXEiKTsNCg0KDQoNCi8vIENyZWF0ZXMgdGhlIHF1ZXJpZXMgdGFibGUNCiRmbGRzID0gIg0KICAgIGlkIEksDQoJbmFtZSBDKDY0KSwNCgl3aGF0IEMoMzIpLA0KCXdoZXJlY2xhdXNlIEMoMjU1KSwNCgl3aGVyZXZhbHVlcyBDKDI1NSksDQoJcXVlcnlvcmRlciBDKDMyKQ0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9zYXZlZF9xdWVyaWVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXNfc2VxIik7DQoNCg0KLy8gSU5TRVJUSU5HIERFRkFVTFQgVEVNUExBVEVTDQoJJHRlbXBsYXRlID0gJzxoMj57JGxldmVsdGl0bGV9PC9oMj4NCntpZiAkaXRlbWNvdW50ID4gMH0NCjx1bD4NCntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09Iml0ZW0ifQ0KCTxsaSB7aWYgJGl0ZW0tPmlzX3NlbGVjdGVkfWNsYXNzPSJhY3RpdmUiey9pZn0+eyRpdGVtLT5kZXRhaWxsaW5rfTwvbGk+DQp7L2ZvcmVhY2h9DQo8L3VsPg0Ke2lmICRwYWdlX3BhZ2VudW1iZXJzfQ0KPGRpdiBpZD0icGFnZW1lbnUiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4NCnskcGFnZV9wcmV2aW91c30mbmJzcDsgeyRwYWdlX3Nob3dpbmd9L3skcGFnZV90b3RhbGl0ZW1zfSAmbmJzcDt7JHBhZ2VfbmV4dH08YnIvPg0KeyRwYWdlX3BhZ2VudW1iZXJzfQ0KPC9kaXY+DQp7L2lmfQ0Ke2Vsc2V9DQo8cD57JGVycm9yX21zZ308L3A+DQp7L2lmfQ0KJzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgibGlzdF9kZWZhdWx0IiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7DQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9wbGF5ZXIiLCJsaXN0X2RlZmF1bHQiKTsNCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX21lZGlhZmlsZSIsImxpc3RfZGVmYXVsdCIpOw0KDQoNCiR0ZW1wbGF0ZSA9ICc8aDM+eyRpdGVtLT5uYW1lfTwvaDM+DQp7aWYgJGl0ZW0tPm1lZGlhZmlsZSAhPSAiIn08cD57JGxhYmVscy0+bWVkaWFmaWxlfTogPGEgaHJlZj0ieyRpdGVtLT5tZWRpYWZpbGUtPnVybH0iPnskaXRlbS0+bWVkaWFmaWxlLT5maWxlcGF0aH08L2E+ICh7JGl0ZW0tPm1lZGlhZmlsZS0+c2l6ZV93Zm9ybWF0fSk8L3A+ey9pZn0NCntpZiAkaXRlbS0+cGljdHVyZSAhPSAiIn08cD57JGl0ZW0tPnBpY3R1cmUtPmltYWdlfTwvcD57L2lmfQ0KPHA+eyRsYWJlbHMtPnVzZXJkZWZpbmVkMn06IHskaXRlbS0+dXNlcmRlZmluZWQyX25hbWV2YWx1ZX08L3A+DQo8b2JqZWN0IHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoImRhdGE9InskaXRlbS0+cGFyZW50X29iamVjdC0+bG9jYXRpb259IiB3aWR0aD0ieyRpdGVtLT5wYXJlbnRfb2JqZWN0LT53aWR0aH0iaGVpZ2h0PSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmhlaWdodH0iPjxiciAvPg0KPHBhcmFtIG5hbWU9Im1vdmllInZhbHVlPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmxvY2F0aW9ufSIgLz48YnIgLz4NCjxwYXJhbSBuYW1lPSJGbGFzaFZhcnMiIHZhbHVlPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPnBsYXllcnR5cGVfbmFtZXZhbHVlfT1odHRwOi8veyRzbWFydHkuc2VydmVyLlNFUlZFUl9OQU1FfS91cGxvYWRzeyRpdGVtLT5tZWRpYWZpbGUtPmZpbGVwYXRofXskaXRlbS0+cGFyZW50X29iamVjdC0+cGFyYW1ldGVyc30iLz48cGFyYW0gbmFtZT0id21vZGUidmFsdWU9InRyYW5zcGFyZW50IiAvPjwvb2JqZWN0Pg0KJzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgiZmluYWxfZGVmYXVsdCIsJHRlbXBsYXRlLCR0aGlzLT5HZXROYW1lKCkpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoImZpbmFsdGVtcGxhdGUiLCJmaW5hbF9kZWZhdWx0Iik7DQoNCiR0ZW1wbGF0ZSA9ICc8cD57JGVycm9yX21zZ308L3A+DQp7aWYgJGJhY2tsaW5rfTxwPnskYmFja2xpbmt9PC9wPnsvaWZ9JzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgibm9fcmVzdWx0IiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7DQoNCi8vIENSRUFUSU5HIFBFUk1JU1NJT05TIDoNCg0KLy8gcGVybWlzc2lvbnMNCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdnBsYXllcl9ub3JtYWx1c2VyIiwgImF2cGxheWVyOiBOb3JtYWwgdXNlciIpOw0KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIiwgImF2cGxheWVyOiBBZHZhbmNlZCIpOw0KCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfcGxheWVyIiwgImF2cGxheWVyOiBNYW5hZ2UgcGxheWVyIik7DQoJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oImF2cGxheWVyX21hbmFnZV9tZWRpYWZpbGUiLCAiYXZwbGF5ZXI6IE1hbmFnZSBtZWRpYWZpbGUiKTsNCi8vIGFjdGl2YXRpbmcgZGVmYXVsdCBwcmVmZXJlbmNlcw0KCSRkZWZwcmVmcyA9IGFycmF5KCJ0YWJkaXNwbGF5X3BsYXllciIsInNlYXJjaG1vZHVsZV9pbmRleF9wbGF5ZXIiLCJuZXdpdGVtc2ZpcnN0X3BsYXllciIsInRhYmRpc3BsYXlfbWVkaWFmaWxlIiwic2VhcmNobW9kdWxlX2luZGV4X21lZGlhZmlsZSIsIm5ld2l0ZW1zZmlyc3RfbWVkaWFmaWxlIiwicmVzdHJpY3RfcGVybWlzc2lvbnMiLCJvcmRlcmJ5bmFtZSIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIiwiZGlzcGxheV9pbnN0YW50c29ydCIsInNob3d0aHVtYm5haWxzIiwibG9hZF9uYmNoaWxkcmVuIiwidXNlX3Nlc3Npb24iKTsNCglmb3JlYWNoKCRkZWZwcmVmcyBhcyAkb25lcHJlZikJJHRoaXMtPlNldFByZWZlcmVuY2UoJG9uZXByZWYsdHJ1ZSk7DQoJJHRoaXMtPlNldFByZWZlcmVuY2UoImVtcHR5dGVtcGxhdGUiLCIqKiIpOw0KDQovLyBldmVudHMNCgkkdGhpcy0+Q3JlYXRlRXZlbnQoImF2cGxheWVyX2FkZGVkIik7DQoJJHRoaXMtPkNyZWF0ZUV2ZW50KCJhdnBsYXllcl9tb2RpZmllZCIpOw0KCSR0aGlzLT5DcmVhdGVFdmVudCgiYXZwbGF5ZXJfZGVsZXRlZCIpOw0KCQ0KLy8gcHJlcGFyZSBpbmZvcm1hdGlvbiBmb3IgYW4gZXZlbnR1YWwgdXBncmFkZQ0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJtYWtlcnZlcnNpb24iLCIxLjguOS4zIik7DQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpLCAkdGhpcy0+TGFuZygiaW5zdGFsbGVkIiwkdGhpcy0+R2V0VmVyc2lvbigpKSk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCg0KDQoNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciIpOw0KCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkZGItPkRyb3BTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXJfc2VxIik7DQoJDQoNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSIpOw0KCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkZGItPkRyb3BTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGVfc2VxIik7DQoJDQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9maWVsZG9wdGlvbnMiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfZmllbGRvcHRpb25zX3NlcSIpOw0KCQ0KDQoJLy8kc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3RlbXBsYXRlcyIpOw0KCS8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgiIiwkdGhpcy0+R2V0TmFtZSgpKTsNCgkNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXMiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfc2F2ZWRfcXVlcmllc19zZXEiKTsNCg0KLy8gcGVybWlzc2lvbnMNCgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbigiYXZwbGF5ZXJfbWFuYWdlX3BsYXllciIpOw0KCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfbWVkaWFmaWxlIik7DQoJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIik7DQoJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsNCgkNCi8vIGV2ZW50cw0KCSR0aGlzLT5SZW1vdmVFdmVudCgiYXZwbGF5ZXJfYWRkZWQiKTsNCgkkdGhpcy0+UmVtb3ZlRXZlbnQoImF2cGxheWVyX21vZGlmaWVkIik7DQoJJHRoaXMtPlJlbW92ZUV2ZW50KCJhdnBsYXllcl9kZWxldGVkIik7DQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpLCAkdGhpcy0+TGFuZygidW5pbnN0YWxsZWQiKSk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdCA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7CgovLyBQQVJUIDE6IFRoaXMgZG9lcyB0aGUgdXBncmFkZSBmb3IgdGhlIENUTE1vZHVsZU1ha2VyIHBhcnQKLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBvbmx5IGJhY2t3YXJkIGNvbXBhdGlibGUgdG8gQ1RMTW9kdWxlTWFrZXIgMS42LjMuIEkgY291bGRuJ3QgZ28gYW55IGZ1cnRoZXIgYmVoaW5kIGJlY2F1c2UgYXQgdGhhdCB0aW1lIHRoZSBtYWtlciB2ZXJzaW9uIHdhc24ndCBzYXZlZCBhbnl3aGVyZQoKJG9sZG1ha2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoIm1ha2VydmVyc2lvbiIsICJ2ZXJ5b2xkIik7Cgpzd2l0Y2goJG9sZG1ha2VyKXsKCS8vIEJFR0lOIFNXSVRDSCgkb2xkbWFrZXIpCgoJY2FzZSAidmVyeW9sZCI6CgkJLy8gdGhlIG1vZHVsZSB3YXMgY3JlYXRlZCB3aXRoIHZlcnNpb24gMS42LjMgb3IgcHJpb3IuCgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCJhdnBsYXllcl9hZGRlZCIpOwoJCSR0aGlzLT5DcmVhdGVFdmVudCgiYXZwbGF5ZXJfbW9kaWZpZWQiKTsKCQkkdGhpcy0+Q3JlYXRlRXZlbnQoImF2cGxheWVyX2RlbGV0ZWQiKTsKCQlicmVhazsKCWNhc2UgIjEuNi40IjoKCWNhc2UgIjEuNyI6CgljYXNlICIxLjcuMSI6CgljYXNlICIxLjcuMiI6CgljYXNlICIxLjcuMyI6CgljYXNlICIxLjcuNCI6CgoKLy8gSU5TRVJUSU5HIERFRkFVTFQgVEVNUExBVEVTCgkkdGVtcGxhdGUgPSAnPGgyPnskbGV2ZWx0aXRsZX08L2gyPgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx1bD4Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9Cgk8bGkge2lmICRpdGVtLT5pc19zZWxlY3RlZH1jbGFzcz0iYWN0aXZlInsvaWZ9PnskaXRlbS0+ZGV0YWlsbGlua308L2xpPgp7L2ZvcmVhY2h9CjwvdWw+CntpZiAkcGFnZV9wYWdlbnVtYmVyc30KPGRpdiBpZD0icGFnZW1lbnUiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KeyRwYWdlX3ByZXZpb3VzfSZuYnNwOyB7JHBhZ2Vfc2hvd2luZ30veyRwYWdlX3RvdGFsaXRlbXN9ICZuYnNwO3skcGFnZV9uZXh0fTxici8+CnskcGFnZV9wYWdlbnVtYmVyc30KPC9kaXY+CnsvaWZ9CntlbHNlfQo8cD57JGVycm9yX21zZ308L3A+CnsvaWZ9Cic7CiR0aGlzLT5TZXRUZW1wbGF0ZSgibGlzdF9kZWZhdWx0X3Zlcl8xLjMiLCR0ZW1wbGF0ZSwkdGhpcy0+R2V0TmFtZSgpKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfcGxheWVyX3Zlcl8xLjMiLCJsaXN0X2RlZmF1bHRfdmVyXzEuMyIpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9tZWRpYWZpbGVfdmVyXzEuMyIsImxpc3RfZGVmYXVsdF92ZXJfMS4zIik7CgoKJHRlbXBsYXRlID0gJzxoMz57JGl0ZW0tPm5hbWV9PC9oMz4Ke2lmICRpdGVtLT5tZWRpYWZpbGUgIT0gIiJ9PHA+eyRsYWJlbHMtPm1lZGlhZmlsZX06IDxhIGhyZWY9InskaXRlbS0+bWVkaWFmaWxlLT51cmx9Ij57JGl0ZW0tPm1lZGlhZmlsZS0+ZmlsZXBhdGh9PC9hPiAoeyRpdGVtLT5tZWRpYWZpbGUtPnNpemVfd2Zvcm1hdH0pPC9wPnsvaWZ9CntpZiAkaXRlbS0+cGljdHVyZSAhPSAiIn08cD57JGl0ZW0tPnBpY3R1cmUtPmltYWdlfTwvcD57L2lmfQo8cD57JGxhYmVscy0+dXNlcmRlZmluZWQyfTogeyRpdGVtLT51c2VyZGVmaW5lZDJfbmFtZXZhbHVlfTwvcD4KPG9iamVjdCB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCJkYXRhPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmxvY2F0aW9ufSIgd2lkdGg9InskaXRlbS0+cGFyZW50X29iamVjdC0+d2lkdGh9ImhlaWdodD0ieyRpdGVtLT5wYXJlbnRfb2JqZWN0LT5oZWlnaHR9Ij48YnIgLz4KPHBhcmFtIG5hbWU9Im1vdmllInZhbHVlPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmxvY2F0aW9ufSIgLz48YnIgLz4KPHBhcmFtIG5hbWU9IkZsYXNoVmFycyIgdmFsdWU9InskaXRlbS0+cGFyZW50X29iamVjdC0+cGxheWVydHlwZV9uYW1ldmFsdWV9PWh0dHA6Ly97JHNtYXJ0eS5zZXJ2ZXIuU0VSVkVSX05BTUV9L3VwbG9hZHN7JGl0ZW0tPm1lZGlhZmlsZS0+ZmlsZXBhdGh9eyRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJhbWV0ZXJzfSIvPjxwYXJhbSBuYW1lPSJ3bW9kZSJ2YWx1ZT0idHJhbnNwYXJlbnQiIC8+PC9vYmplY3Q+Cic7CiR0aGlzLT5TZXRUZW1wbGF0ZSgiZmluYWxfZGVmYXVsdF92ZXJfMS4zIiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlX3Zlcl8xLjMiLCJmaW5hbF9kZWZhdWx0X3Zlcl8xLjMiKTsKCiR0ZW1wbGF0ZSA9ICc8cD57JGVycm9yX21zZ308L3A+CntpZiAkYmFja2xpbmt9PHA+eyRiYWNrbGlua308L3A+ey9pZn0nOwokdGhpcy0+U2V0VGVtcGxhdGUoIm5vX3Jlc3VsdCIsJHRlbXBsYXRlLCR0aGlzLT5HZXROYW1lKCkpOwoKCgoKCgoJCQoJCS8vIG9wdGlvbiB2YWx1ZXMgZm9yIGR5bmFtaWMgbGlzdCBmaWVsZHMgYXJlIG5vdyBhbGwgaW4gdGhlIHNhbWUgdGFibGUKCgkJLy8gQ3JlYXRlIHRoZSBuZXcgZmllbGRvcHRpb25zIHRhYmxlCgkJJG5ld3RhYmxlID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfZmllbGRvcHRpb25zIjsKCQkkZmxkcyA9ICIKCQkJaWQgSSwKCQkJZmllbGQgQygxMjgpLAoJCQluYW1lIEMoMzIpLAoJCQlpdGVtX29yZGVyIEkKCQkJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJG5ld3RhYmxlLCAkZmxkcywgJHRhYm9wdCk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRkYi0+Q3JlYXRlU2VxdWVuY2UoJG5ld3RhYmxlLiJfc2VxIik7CgoJCS8vIHRyYW5zZmVyIHRoZSBleGlzdGluZyBvcHRpb25zCgkJJGxpc3RmaWVsZHMgPSBhcnJheShhcnJheSgiQSIsICJwbGF5ZXIiLCAidXNlcmRlZmluZWQxIiksYXJyYXkoIkIiLCAibWVkaWFmaWxlIiwgInVzZXJkZWZpbmVkMiIpKTsKCQkkbWF4aWQgPSAwOwoJCWZvcmVhY2goJGxpc3RmaWVsZHMgYXMgJGZpZWxkKXsKCQkJJG9sZHRhYmxlID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kZmllbGRbMF0uIl8iLiRmaWVsZFsyXS4iX29wdGlvbnMiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoIlNFTEVDVCAqIEZST00gIi4kb2xkdGFibGUpOwoJCQkkaXRlbV9vcmRlciA9IDE7CgkJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsKCQkJCWlmKCRyb3dbImlkIl0gPiAkbWF4aWQpCSRtYXhpZCA9ICRyb3dbImlkIl07CgkJCQkkbmV3aWQgPSAkZGItPkdlbklEKCRuZXd0YWJsZS4iX3NlcSIpOwoJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJG5ld3RhYmxlLiIgU0VUIGlkPT8sIGZpZWxkPT8sIG5hbWU9PywgaXRlbV9vcmRlcj0/IjsKCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyb3dbImlkIl0sICRmaWVsZFsxXS4iXyIuJGZpZWxkWzJdLCAkcm93WyJuYW1lIl0sICRpdGVtX29yZGVyKSk7CgkJCQkkaXRlbV9vcmRlcisrOwoJCQl9CgkJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoJG9sZHRhYmxlKTsKCQkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQkkZGItPkRyb3BTZXF1ZW5jZSgkb2xkdGFibGUuIl9zZXEiKTsKCQl9CgkJLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV4dCBvcHRpb25zIHdvbid0IGhhdmUgdGhlIHNhbWUgaWRzCgkJJGR1bW15aWQgPSAkZGItPkdlbklEKCRuZXd0YWJsZS4iX3NlcSIpOwoJCXdoaWxlKCRkdW1teWlkIDw9ICRtYXhpZCl7CgkJCSRkdW1teWlkID0gJGRiLT5HZW5JRCgkbmV3dGFibGUuIl9zZXEiKTsKCQl9OwoJY2FzZSAiMS44LjEiOgoJY2FzZSAiMS44LjIiOgoJY2FzZSAiMS44LjIuMiI6CgljYXNlICIxLjguMyI6CgljYXNlICIxLjguMy4xIjoKCQkvLyBDcmVhdGVzIHRoZSBxdWVyaWVzIHRhYmxlCgkJJGZsZHMgPSAiCgkJCWlkIEksCgkJCW5hbWUgQyg2NCksCgkJCXdoYXQgQygzMiksCgkJCXdoZXJlY2xhdXNlIEMoMjU1KSwKCQkJd2hlcmV2YWx1ZXMgQygyNTUpLAoJCQlxdWVyeW9yZGVyIEMoMzIpCgkJCSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXMiLCAkZmxkcywgJHRhYm9wdCk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfc2F2ZWRfcXVlcmllc19zZXEiKTsKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigiYXZwbGF5ZXJfYWR2YW5jZWQiLCAiYXZwbGF5ZXI6IEFkdmFuY2VkIik7CgljYXNlICIxLjguNCI6CgljYXNlICIxLjguNC4xIjoKCWNhc2UgIjEuOC41IjoKCWNhc2UgIjEuOC41LjEiOgoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdnBsYXllcl9ub3JtYWx1c2VyIiwgImF2cGxheWVyOiBOb3JtYWwgdXNlciIpOwoJCS8vIGFjdGl2YXRpbmcgZGVmYXVsdCBwcmVmZXJlbmNlcwoJCSRkZWZwcmVmcyA9IGFycmF5KCJ0YWJkaXNwbGF5X3BsYXllciIsInNlYXJjaG1vZHVsZV9pbmRleF9wbGF5ZXIiLCJuZXdpdGVtc2ZpcnN0X3BsYXllciIsInRhYmRpc3BsYXlfbWVkaWFmaWxlIiwic2VhcmNobW9kdWxlX2luZGV4X21lZGlhZmlsZSIsIm5ld2l0ZW1zZmlyc3RfbWVkaWFmaWxlIiwicmVzdHJpY3RfcGVybWlzc2lvbnMiLCJkaXNwbGF5X2ZpbHRlciIsImRpc3BsYXlfaW5zdGFudHNlYXJjaCIpOwoJCWZvcmVhY2goJGRlZnByZWZzIGFzICRvbmVwcmVmKQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgkb25lcHJlZix0cnVlKTsKCWNhc2UgIjEuOC42IjoKCWNhc2UgIjEuOC42LjEiOgoJY2FzZSAiMS44LjciOgoJY2FzZSAiMS44LjcuMSI6CgkJaWYoJGRiLT5kYnR5cGUgPT0gIm15c3FsIiB8fCAkZGItPmRidHlwZSA9PSAibXlzcWxpIil7CgkJCS8vIG1zeXFsCgkJCSRxdWVyaWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJpZXNbXSA9ICJBTFRFUiBUQUJMRSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciBBREQgQ09MVU1OIGRhdGVfY3JlYXRlZCBEQVRFVElNRSI7CgkJCSRxdWVyaWVzW10gPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIFNFVCBkYXRlX2NyZWF0ZWQ9ZGF0ZV9tb2RpZmllZCI7CgkJCSRxdWVyaWVzW10gPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgQUREIENPTFVNTiBkYXRlX2NyZWF0ZWQgREFURVRJTUUiOwoJCQkkcXVlcmllc1tdID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgZGF0ZV9jcmVhdGVkPWRhdGVfbW9kaWZpZWQiOwoJCQlmb3JlYWNoKCRxdWVyaWVzIGFzICRxdWVyeSkJCW15c3FsX3F1ZXJ5KCRxdWVyeSk7CgoJCX1lbHNlewoJCQkvLyBub24tbXlzcWwKCQkJJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIiLCAiZGF0ZV9jcmVhdGVkICIuQ01TX0FET0RCX0RUKTsKCQkJJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUiLCAiZGF0ZV9jcmVhdGVkICIuQ01TX0FET0RCX0RUKTsKCQkJCgkJfQoJY2FzZSAiMS44LjcuMiI6CgljYXNlICIxLjguOCI6CgljYXNlICIxLjguOC4xIjoKCWNhc2UgIjEuOC44LjIiOgoJY2FzZSAiMS44LjguMyI6CgljYXNlICIxLjguOC40IjoKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiYWRtaW5wYWdlcyIsMCk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoImxvYWRfbmJjaGlsZHJlbiIsdHJ1ZSk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoImxvYWRfbmV4dHByZXZpb3VzIixmYWxzZSk7CgljYXNlICIxLjguOSI6CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoInVzZV9zZXNzaW9uIix0cnVlKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZGVmZW1wdHl0ZW1wbGF0ZSIsIioqIik7CgkJCgkvLyBFTkQgU1dJVENIKCRvbGRtYWtlcikKfQoKJHRoaXMtPlNldFByZWZlcmVuY2UoIm1ha2VydmVyc2lvbiIsICIxLjguOS4zIik7Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRmaWx0ZXIgfHwgJGluc3RhbnRzZWFyY2h9PGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodDsiPnskZmlsdGVyfXtpZiAkZmlsdGVyICYmICRpbnN0YW50c2VhcmNofTxici8+ey9pZn17JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRhZGRuZXd9IHskcmVvcmRlcn08L3A+CntpZiBjb3VudCgkaXRlbWxpc3QpID4gMH0KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSB7aWYgJHRhYmxlaWR9aWQ9InskdGFibGVpZH0iIHsvaWZ9Y2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgo8dGhlYWQ+PHRyPgoJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQoJCTx0aD57JGNvbHVtblswXX08L3RoPgoJey9mb3JlYWNofQo8L3RyPjwvdGhlYWQ+Cjx0Ym9keT4Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3MgcmVzZXQ9dHJ1ZX0Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT1vbmVpdGVtfQp7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KCXtmb3JlYWNoIGZyb209JGFkbWluc2hvdyBpdGVtPWNvbHVtbn0KCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KCQk8dGR7aWYgJGNvbHVtblsyXX0gY2xhc3M9ImN0bG1tX25vc2VhcmNoInsvaWZ9Pnskb25laXRlbS0+JG9uZXZhbH08L3RkPgoJey9mb3JlYWNofQo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgp7aWYgJHBhZ2VpbmZvfQo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+e2lmICRwcmV2aW91c3BhZ2V9eyRwcmV2aW91c3BhZ2V9ICZuYnNwOyB7L2lmfXskcGFnZWluZm99e2lmICRuZXh0cGFnZX0gJm5ic3A7IHskbmV4dHBhZ2V9ey9pZn08YnIvPgp7JHBhZ2VzfTwvcD4Key9pZn0KPHA+eyRhZGRuZXd9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/browsefiles.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskYnJvd3NldGl0bGV9PC9oMj4Ke2lmICRwb3N0bWF4c2l6ZX08cCBhbGlnbj0icmlnaHQiPnskcG9zdG1heHNpemV9PC9wPnsvaWZ9CnskZm9ybXN0YXJ0fQoKe2lmICRhZGRmaWxlaW5wdXR9CjxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMzAlOyBtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR6aXB0aXRsZX08L2I+PC9sZWdlbmQ+CjxwPnskemlwbm90aWNlfTwvcD4Ke2lmICRyZXNpemVub3RpY2V9PHA+eyRyZXNpemVub3RpY2V9PC9wPnsvaWZ9CjxwPnskemlwaW5wdXR9IHskemlwc3VibWl0fTwvcD4KPC9maWVsZHNldD4Key9pZn0KPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR1cGxvYWR0aXRsZX08L2I+PC9sZWdlbmQ+CntpZiAkcmVzaXplbm90aWNlfTxwPnskcmVzaXplbm90aWNlfTwvcD57L2lmfQp7JGZpbGVpbnB1dH0Ke2lmICRhZGRmaWxlaW5wdXR9PHA+eyRhZGRmaWxlaW5wdXR9PC9wPnsvaWZ9CjxwPnskc3VibWl0fTwvcD4KPC9maWVsZHNldD4KCnskZm9ybWVuZH0KCjxici8+CntpZiAkaW5zdGFudHNlYXJjaH08ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij57JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRzaG93aW5nZGlyfTwvcD4KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSBpZD0iZmlsZWxpc3RfdGFibGUiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KPHRoZWFkPjx0cj4KCTx0aD57JHNvcnRsaW5rc1swXX17JGhlYWRlcnMtPmZpbGVuYW1lfTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1sxXX17JGhlYWRlcnMtPmltYWdlc2l6ZX08L3RoPgoJPHRoPnskc29ydGxpbmtzWzJdfXskaGVhZGVycy0+ZXh0fTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1szXX17JGhlYWRlcnMtPnNpemV9PC90aD4KCTx0aD57JG51bWVyaWNfc29ydGxpbmtzWzRdfXskaGVhZGVycy0+bW9kaWZpZWR9PC90aD4KCTx0aCB3aWR0aD0iMTI4Ij57JGhlYWRlcnMtPmRlbGV0ZWxpbmt9PC90aD4KPC90cj48L3RoZWFkPgo8dGJvZHk+CntjeWNsZSB2YWx1ZXM9InJvdzIscm93MSIgYXNzaWduPXJvd2NsYXNzIHJlc2V0PXRydWV9Cntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3N9Cjx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+Cgk8dGQ+eyRvbmVpdGVtLT5waWN9IHskb25laXRlbS0+dGhlbGlua308L3RkPgoJPHRkIGNsYXNzPSJjdGxtbV9ub3NlYXJjaCI+eyRvbmVpdGVtLT5pbWFnZXNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZXh0fTwvdGQ+Cgk8dGQgY2xhc3M9ImN0bG1tX25vc2VhcmNoIj57JG9uZWl0ZW0tPnNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+bW9kaWZpZWR9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZGVsZXRlbGlua308L3RkPgo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editA.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxvY2F0aW9uX2xhYmVsfSogOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRsb2NhdGlvbl9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHdpZHRoX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHdpZHRoX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskaGVpZ2h0X2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhlaWdodF9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBhcmFtZXRlcnNfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyYW1ldGVyc19pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZXJkZWZpbmVkMV9sYWJlbH0gOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR1c2VyZGVmaW5lZDFfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwbGF5ZXJ0eXBlX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHBsYXllcnR5cGVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KPGJyLz4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/editB.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBhcmVudF9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyZW50X2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbWVkaWFmaWxlX2xhYmVsfSogOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtZWRpYWZpbGVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwaWN0dXJlX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHBpY3R1cmVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR1c2VyZGVmaW5lZDJfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdXNlcmRlZmluZWQyX2lucHV0fTwvcD4NCgk8L2Rpdj4NCjxici8+DQo8cD57JHN1Ym1pdH0geyRhcHBseX0geyRjYW5jZWx9PC9wPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/frontend_add_mediafile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgxPnskZWRpdHRpdGxlfTwvaDE+Cgo8YnIvPgo8dGFibGUgYm9yZGVyPSIwIj4KCTx0cj4KCQk8dGQ+eyRuYW1lX2xhYmVsfSogOjwvdGQ+CgkJPHRkPnskbmFtZV9pbnB1dH08L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnskcGFyZW50X2xhYmVsfSogOjwvdGQ+CgkJPHRkPnskcGFyZW50X2lucHV0fTwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD57JG1lZGlhZmlsZV9sYWJlbH0qIDo8L3RkPgoJCTx0ZD57JG1lZGlhZmlsZV9pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyRwaWN0dXJlX2xhYmVsfSA6PC90ZD4KCQk8dGQ+eyRwaWN0dXJlX2lucHV0fTwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD57JHVzZXJkZWZpbmVkMl9sYWJlbH0gOjwvdGQ+CgkJPHRkPnskdXNlcmRlZmluZWQyX2lucHV0fTwvdGQ+Cgk8L3RyPgo8L3RhYmxlPjxici8+Cgo8cD48ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+eyRjYXB0Y2hhX2ltYWdlfTwvZGl2PnskY2FwdGNoYV9wcm9tcHR9PGJyLz57JGNhcHRjaGFfaW5wdXR9PC9wPgo8cD57JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/frontend_add_player.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgxPnskZWRpdHRpdGxlfTwvaDE+Cgo8YnIvPgo8dGFibGUgYm9yZGVyPSIwIj4KCTx0cj4KCQk8dGQ+eyRuYW1lX2xhYmVsfSogOjwvdGQ+CgkJPHRkPnskbmFtZV9pbnB1dH08L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnskbG9jYXRpb25fbGFiZWx9KiA6PC90ZD4KCQk8dGQ+eyRsb2NhdGlvbl9pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyR3aWR0aF9sYWJlbH0gOjwvdGQ+CgkJPHRkPnskd2lkdGhfaW5wdXR9PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPnskaGVpZ2h0X2xhYmVsfSA6PC90ZD4KCQk8dGQ+eyRoZWlnaHRfaW5wdXR9PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPnskcGFyYW1ldGVyc19sYWJlbH0gOjwvdGQ+CgkJPHRkPnskcGFyYW1ldGVyc19pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyR1c2VyZGVmaW5lZDFfbGFiZWx9IDo8L3RkPgoJCTx0ZD57JHVzZXJkZWZpbmVkMV9pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyRwbGF5ZXJ0eXBlX2xhYmVsfSA6PC90ZD4KCQk8dGQ+eyRwbGF5ZXJ0eXBlX2lucHV0fTwvdGQ+Cgk8L3RyPgo8L3RhYmxlPjxici8+Cgo8cD48ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+eyRjYXB0Y2hhX2ltYWdlfTwvZGl2PnskY2FwdGNoYV9wcm9tcHR9PGJyLz57JGNhcHRjaGFfaW5wdXR9PC9wPgo8cD57JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9e2lmICR3aGF0fTogeyR3aGF0fXsvaWZ9PC9oMj4KPHA+eyRzZWFyY2hmaWVsZH17JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_generalresults.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskbGV2ZWx0aXRsZX08L2gyPgo8dWwgY2xhc3M9ImN0bF9zZWFyY2hyZXN1bHRzIj4Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CjxsaT57JGl0ZW0tPmRldGFpbGxpbmt9PC9saT4Key9mb3JlYWNofQo8L3VsPgp7aWYgJHBhZ2VtZW51fTxwPnskcGFnZW1lbnV9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_mediafile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskdXNlcmRlZmluZWQyX2xhYmVsfTwvdGQ+PHRkPnskdXNlcmRlZmluZWQyX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JHBhcmVudF9sYWJlbH08L3RkPjx0ZD57JHBhcmVudF9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRuYW1lX2xhYmVsfTwvdGQ+PHRkPnskbmFtZV9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRkYXRlX21vZGlmaWVkX2xhYmVsfTwvdGQ+PHRkPnskZGF0ZV9tb2RpZmllZF9pbnB1dH08L3RkPjwvdHI+CjwvdGFibGU+CjxwPnskc3VibWl0fTwvcD4=]]></data>
	</file>
	<file>
	  <filename>/templates/search_player.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskbG9jYXRpb25fbGFiZWx9PC90ZD48dGQ+eyRsb2NhdGlvbl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyR3aWR0aF9sYWJlbH08L3RkPjx0ZD57JHdpZHRoX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JGhlaWdodF9sYWJlbH08L3RkPjx0ZD57JGhlaWdodF9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRwYXJhbWV0ZXJzX2xhYmVsfTwvdGQ+PHRkPnskcGFyYW1ldGVyc19pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyR1c2VyZGVmaW5lZDFfbGFiZWx9PC90ZD48dGQ+eyR1c2VyZGVmaW5lZDFfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskcGxheWVydHlwZV9sYWJlbH08L3RkPjx0ZD57JHBsYXllcnR5cGVfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskbmFtZV9sYWJlbH08L3RkPjx0ZD57JG5hbWVfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskZGF0ZV9tb2RpZmllZF9sYWJlbH08L3RkPjx0ZD57JGRhdGVfbW9kaWZpZWRfaW5wdXR9PC90ZD48L3RyPgo8L3RhYmxlPgo8cD57JHN1Ym1pdH08L3A+]]></data>
	</file>
</module>
