# Name: smd_gallery v0.62 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC42MiI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJoZWxwIjtzOjYxMzI4OiI8ZGl2IGlkPSJzbWRf aGVscCI+CgoJPGgxIGlkPSJ0b3AiPnNtZF9nYWxsZXJ5PC9oMT4KCgk8aDIgaWQ9ImZlYXR1 cmVzIj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0cyBhbGwgY3VycmVudCBh bmQgKHByb2JhYmx5KSBmdXR1cmUgZ2FsbGVyeSBzY3JpcHRzIGluY2x1ZGluZyB0aHVtYnBv cCwgcm9sbG92ZXIsIHRvb2x0aXAsIGxpZ2h0Ym94LCBsaXRlYm94LCBzbGltYm94LCBtb29u Ym94LCB0aGlja2JveCwgc2xpZGVzaG93LCBmYW5jeXpvb20sIGV0YzwvbGk+CgkJPGxpPlB1 bGwgaW1hZ2VzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRhdGFi YXNlIHRoYXQgbWF0Y2ggY2F0ZWdvcmllcywgSURzLCBhdXRob3IsIGV4dGVuc2lvbiBvciBw YXJ0aWN1bGFyIGRpbWVuc2lvbnMgLyBhc3BlY3QgcmF0aW9zPC9saT4KCQk8bGk+VXNlIGFy dGljbGUgZmllbGRzIHRvIGhvbGQgbGlzdHMgb2YgaW1hZ2UgY2F0ZWdvcmllcy9JRHMgZm9y IGFydGljbGUtc3BlY2lmaWMgZ2FsbGVyaWVzPC9saT4KCQk8bGk+TXVsdGktbGV2ZWwgc3Vi LWNhdGVnb3J5IHN1cHBvcnQ8L2xpPgoJCTxsaT5HYWxsZXJ5IGxheW91dCBpcyBkZWZpbmVk IGluIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybS9jb250YWluZXI8L2xp PgoJCTxsaT5EaXJlY3QtYWNjZXNzIHBhZ2luYXRpb24gaXMgc3VwcG9ydGVkIGFuZCB0aGUg bGF5b3V0IG9mIHBhZ2luZyBmZWF0dXJlcyBjYW4gYmUgY29udHJvbGxlZCBieSBhIHNlY29u ZCBmb3JtPC9saT4KCQk8bGk+VXNlcyBhIHRhZy1yZXBsYWNlbWVudCBzeXN0ZW0gbGlrZSB0 aGUgd2V0X2Zvcl9lYWNoX2ltYWdlIHBsdWdpbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJj YXBzIj5NTFA8L3NwYW4+IHN1cHBvcnQ8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+ QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29udGFj dCI+U3RlZiBEYXdzb248L2E+LiBGb3Igb3RoZXIgc29mdHdhcmUgYnkgbWUsIG9yIHRvIG1h a2UgYSBkb25hdGlvbiwgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20v c3ciPnNvZnR3YXJlIHBhZ2U8L2E+LjwvcD4KCgk8aDIgaWQ9Imluc3RhbGwiPkluc3RhbGxh dGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVp cmVzIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuMi4wKyBhbmQgc21kX2xpYiB2 MC4zNis8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVm PSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTU3L3NtZF9nYWxsZXJ5Ij50ZXh0 cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgc29mdHdhcmUgcGFnZSBhYm92ZSwgcGFzdGUgdGhl IGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZn dDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQg dGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBo cD9pZD0yNjQ4MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9y dCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+ VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNpbXBseSBkZWxldGUgaXQgZnJvbSB0aGUgQWRtaW4t Jmd0O1BsdWdpbnMgdGFiLiBJZiBubyBvdGhlciBwbHVnaW5zIGFyZSB1c2luZyBzbWRfbGli IHlvdSBtYXkgc2FmZWx5IGRlbGV0ZSB0aGF0IHRvby48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+ T3ZlcnZpZXc8L2gyPgoKCTxwPlRoZSBnZW5lcmFsIGlkZWEgaXMgdGhhdCB0aGlzIHBsdWdp biBhY3RzIGFzIGEgZmxleGlibGUgaW1hZ2UgZmlsdGVyOyBub3RoaW5nIG1vcmUuIFRoZSBw bHVnaW4gb3B0aW9ucyBnb3Zlcm4gd2hpY2ggaW1hZ2VzIGFyZSBwdWxsZWQgb3V0IG9mIHRo ZSBkYXRhYmFzZSBhbmQgdGhleSBhcmUgc29ydGVkIGludG8gd2hhdGV2ZXIgb3JkZXIgeW91 IGxpa2UuPC9wPgoKCTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1hZ2UgJiM4MjEyOyBvbmUgYnkg b25lICYjODIxMjsgaGFzIGFsbCBpdHMgYXR0cmlidXRlcyBwYXNzZWQgdGhyb3VnaCB0aGUg Y29udGFpbmVyIG9yIDxjb2RlPmZvcm08L2NvZGU+IG9mIHlvdXIgY2hvaWNlOyB5b3Ugc2lt cGx5IGNob29zZSB0byBkaXNwbGF5IHdoaWNoZXZlciBpbWFnZSBhdHRyaWJ1dGVzIHlvdSBs aWtlIGluIHRoaXMgZm9ybS4gVGhpcyBtZWFucyBhbnkgaW1hZ2UgYXR0cmlidXRlcyBjYW4g YmUgJiM4MjIwO2luamVjdGVkJiM4MjIxOyBkaXJlY3RseSBpbnRvIGFueSBtYXJrdXA7IGl0 IGNvdWxkIGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGl0IGNvdWxk IGJlIGNvbnRlbnQsIGl0IGNvdWxkIGJlIGphdmFzY3JpcHQsIG9yIDxzcGFuIGNsYXNzPSJj YXBzIj5DU1M8L3NwYW4+OyBhbnl0aGluZy48L3A+CgoJPHA+UGFnaW5hdGlvbiB3b3JrcyB0 aGUgc2FtZSB3YXksIGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5IGhvdyB1c2VycyBjYW4gc3Rl cCB0aHJvdWdoIHlvdXIgaW1hZ2UgZ2FsbGVyaWVzLjwvcD4KCgk8cD5UaGVyZSBpcyBhbHNv IGEgc3BlY2lhbCAmIzgyMjA7Y29sbGF0ZSYjODIyMTsgbW9kZSB0aGF0IGFsbG93cyB5b3Ug dG8gY29sbGVjdCBhbGwgaW1hZ2UgYXR0cmlidXRlcyB0b2dldGhlciBpbnRvIGEgc2VyaWVz IG9mIGJpZyBsb25nIGxpc3RzIDxlbT53aXRob3V0PC9lbT4gY2FsbGluZyB0aGUgZm9ybSBl dmVyeSB0aW1lLiBUaGUgZm9ybS9jb250YWluZXIgaXMgdGhlbiBvbmx5IHByb2Nlc3NlZCBv bmNlIGF0IHRoZSBlbmQuPC9wPgoKCTxwPkJldHdlZW4gdGhlc2UgdHdvIG1vZGVzIHlvdSBz aG91bGQgYmUgYWJsZSB0byByZWFsaXNlIGFueSBnYWxsZXJ5aW5nIHNvbHV0aW9uOyBub3cg YW5kIGluIGZ1dHVyZS48L3A+CgoJPGgyIGNsYXNzPSJ0YWcgIiBpZD0ic21kX2dhbGxlcnki PnNtZF9nYWxsZXJ5PC9oMj4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlBsYWNlIG9uZSBv ciBtb3JlIHNtZF9nYWxsZXJ5IHRhZ3MgaW4gYW4gYXJ0aWNsZSwgcGFnZSBvciBmb3JtLCBh bmQgc3VwcGx5IGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29uZmlndXJlIGl0 LiBUaGUgYXR0cmlidXRlcyBhcmUgZ3JvdXBlZCBieSBmdW5jdGlvbiB0byBtYWtlIGl0IGVh c2llciBvbiB5b3VyIGV5ZXMgLyBzYW5pdHkuPC9wPgoKCTxoMyBpZD0iYXR0cmlidXRlcyI+ QXR0cmlidXRlczwvaDM+CgoJPGg0PkZpbHRlcnM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2UgSURzIHRvIGRpc3BsYXku IE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMsIGZvciBleGFtcGxlIDxjb2RlPmlkPSZxdW90 OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGltYWdlcyA1LCA4LCA5LCAx MCwgMTEgYW5kIDQyLiBVc2UgJiM4MjE2OyEmIzgyMTc7IGluIGZyb250IG9mIGEgbnVtYmVy IG9yIHJhbmdlIHRvIGV4Y2x1ZGUgdGhvc2UgaW1hZ2VzLiBVc2UgJiM4MjE2Oz8mIzgyMTc7 IGFuZCB0aGUgbmFtZSBvZiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxk IHRvIHJlYWQgdGhlIGxpc3Qgb2YgaW1hZ2UgSURzIGZyb20gdGhhdCBmaWVsZCwgZS5nLiA8 Y29kZT5pZD0/YXJ0aWNsZV9pbWFnZSZxdW90OzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+bmFtZTwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIG5hbWVzIHRvIGRpc3Bs YXkuIFlvdSBjYW4gZWl0aGVyIHNwZWNpZnkgZXhhY3QgbWF0Y2hlcywgZS5nLiA8Y29kZT5u YW1lPSZxdW90O2xpb24uanBnLCB0aWdlci5qcGcmcXVvdDs8L2NvZGU+IG9yIHJlZ3VsYXIg ZXhwcmVzc2lvbiBtYXRjaGVzIGJ5IGFwcGVuZGluZyA8Y29kZT46cmVnZXg8L2NvZGU+IHRv IHRlcm1zLiBGb3IgZXhhbXBsZSwgPGNvZGU+bmFtZT0mcXVvdDtsaW9uOnJlZ2V4JnF1b3Q7 PC9jb2RlPiB3b3VsZCBtYXRjaCBsaW9uLmpwZywgbGlvbmVzcy5qcGcgYW5kIG1lZ2FsaW9u LmpwZy4gQWx0ZXJuYXRpdmVseSwgPGNvZGU+bmFtZT0mcXVvdDtebGlvbjpyZWdleCZxdW90 OzwvY29kZT4gd291bGQgb25seSBtYXRjaCBpbWFnZXMgdGhhdCBzdGFydCB3aXRoICYjODIx NjtsaW9uJiM4MjE3Oy4gVXNlICYjODIxNjshJiM4MjE3OyBpbiBmcm9udCBvZiBuYW1lcyB0 byBleGNsdWRlIHRob3NlIGltYWdlcy4gVXNlICYjODIxNjs/JiM4MjE3OyBhbmQgdGhlIG5h bWUgb2YgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCB0byByZWFkIHRo ZSBsaXN0IG9mIGltYWdlIG5hbWVzL3JlZ2V4ZXMgZnJvbSB0aGF0IGZpZWxkLCBlLmcuIDxj b2RlPm5hbWU9P2ZpbGVuYW1lcyZxdW90OzwvY29kZT4gdG8gcmVhZCB0aGVtIGZyb20gYSBj dXN0b20gZmllbGQgb2YgdGhhdCBuYW1lLjxkaXYgY2xhc3M9ImJyZWFrIj5JZiB5b3Ugd2Fu dCB0byBuZWdhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24sIHRoaW5ncyBtYXkgZ2V0IHRyaWNr eSBpZiB5b3UgYXJlIHVzaW5nIG1ldGEgY2hhcmFjdGVyczsgaW4gdGhpcyBjYXNlIGl0IGlz IGJldHRlciB0byBzZXQgeW91ciByZWd1bGFyIGV4cHJlc3Npb24gdXAgaW4sIHNheSwgYSB0 eHA6dmFyaWFibGUgKG9yIGFuIGFydGljbGUgZmllbGQpIGFuZCB1c2UgPGNvZGU+bmFtZT0m cXVvdDshdmFyX25hbWU6cmVnZXgmcXVvdDs8L2NvZGU+LjwvZGl2PjxkaXYgY2xhc3M9ImJy ZWFrIj5Zb3UgY2FuIG1peCBleGFjdCBtYXRjaGVzIGFuZCByZWdleCBtYXRjaGVzIGluIHRo ZSBzYW1lIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBpZiB5b3Ugd2lzaC4gVGhlIGNv bG9uIGNhbiBiZSBhbHRlcmVkIHdpdGggPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gJiM4MjEy OyB0aGlzIGlzIHNvbWV0aW1lcyBuZWNlc3NhcnkgaWYgeW91IGFyZSB1c2luZyBjaGFyYWN0 ZXIgY2xhc3NlcyBzdWNoIGFzIDxjb2RlPltbOmRpZ2l0Ol1dPC9jb2RlPiBpbiB5b3VyIHJl Z3VsYXIgZXhwcmVzc2lvbi48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Y2F0ZWdvcnk8L3NwYW4+IDogbGlzdCBvZiBpbWFnZSBjYXRlZ29yaWVzIHRvIGRpc3BsYXku IFlvdSBtYXkgc3BlY2lmeSBmaXhlZC1uYW1lIGNhdGVnb3JpZXMgKGUuZy4gJiM4MjIwO2Fu aW1hbHMmIzgyMjE7KSBvciBhJiM4MjE3Oz8mIzgyMTc7IGZvbGxvd2VkIGJ5IGFuIGFydGlj bGUgZmllbGQgbmFtZS4gZS5nLiA8Y29kZT5jYXRlZ29yeT0mcXVvdDthbmltYWxzLCBhcnQt P3RoaXNpZCZxdW90OzwvY29kZT4gd291bGQgZ3JhYiBhbGwgaW1hZ2VzIGZyb20gY2F0ZWdv cnkgJiM4MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCBjYXRlZ29yeSAmIzgyMjA7YXJ0LTQyJiM4 MjIxOyAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYXJ0aWNsZSBoYXMgYW4gaWQgb2YgNDIpLiBV c2UgJiM4MjE2OyEmIzgyMTc7IHRvIDxlbT5leGNsdWRlPC9lbT4gdGhlIGdpdmVuIGNhdGVn b3J5IG9yIGZpZWxkLjxkaXYgY2xhc3M9ImJyZWFrIj5GaWVsZHMgbWF5IHRoZW1zZWx2ZXMg Y29udGFpbiBsaXN0cyBvZiBjYXRlZ29yaWVzLiBUaGUgJiM4MjE2Oz8mIzgyMTc7IGZpZWxk IG5hbWVzIG1heSBiZSBjb21iaW5lZCAoZS5nLiA/cy0/YXJ0aWNsZV9pbWFnZSkgYnV0IGJl IGF3YXJlIHRoYXQgY3VzdG9tIGZpZWxkIG5hbWVzIG1heSBjb250YWluIHNwYWNlcyBpZiA8 Y29kZT5zdHJpY3RmaWVsZHM9JnF1b3Q7MCZxdW90OzwvY29kZT48L2Rpdj48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+c3VibGV2ZWw8L3NwYW4+IDogYW4gaW50ZWdlciB0aGF0 IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7bGV2ZWxzJiM4MjE3OyBkb3duIHRvIHRyYXZl cnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnkuIDxjb2RlPnN1YmxldmVsPSZxdW90OzAmcXVv dDs8L2NvZGU+ICh0aGUgZGVmYXVsdCkgaXMgb25seSB0aGUgdG9wLWxldmVsOyAxID0gdG9w LWxldmVsIHBsdXMgdGhlIDFzdCBzdWItY2F0OyAyID0gdG9wLWxldmVsIHBsdXMgdGhlIG5l eHQgMiBzdWItY2F0cywgYW5kIHNvIG9uLiA8Y29kZT5zdWJsZXZlbD0mcXVvdDthbGwmcXVv dDs8L2NvZGU+IGlzIGFsbCBzdWItY2F0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5hdXRob3I8L3NwYW4+IDogZmlsdGVyIGltYWdlcyBieSB0aGlzIGxpc3Qgb2YgYXV0aG9y IGxvZ2luIG5hbWVzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV4dGVuc2lvbjwv c3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMg KHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5hc3BlY3Q8L3NwYW4+IDogZmlsdGVyIGltYWdlcyBieSB0aGlzIGxpc3Qgb2YgYXNwZWN0 IHJhdGlvcy4gQ2hvb3NlIGZyb20gYW55IG9mIDxjb2RlPnBvcnRyYWl0PC9jb2RlPiwgPGNv ZGU+bGFuZHNjYXBlPC9jb2RlPiBvciA8Y29kZT5zcXVhcmU8L2NvZGU+PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmRpbWVuc2lvbnM8L3NwYW4+IDogZmlsdGVyIGltYWdlcyBt YXRjaGluZyB0aGUgZ2l2ZW4gZGltZW5zaW9ucy4gU3BlY2lmeSB1cCB0byB0d28gdmFsdWVz LiBUaGUgZmlyc3QgaXMgdGhlIHdpZHRoIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBoZWlnaHQu IElmIHlvdSB3aXNoIHRvIHNwZWNpZnkgbWluaW11bSBvciBtYXhpbXVtIGRpbWVuc2lvbnMs IGFkZCA8Y29kZT4mZ3Q7PC9jb2RlPiwgPGNvZGU+Jmd0Oz08L2NvZGU+LCA8Y29kZT4mbHQ7 PC9jb2RlPiBvciA8Y29kZT4mbHQ7PTwvY29kZT4gYmVmb3JlIHRoZSB2YWx1ZS4gRm9yIGV4 YW1wbGUsIDxjb2RlPmRpbWVuc2lvbnM9JnF1b3Q7Jmd0Oz0xMDI0LCAmZ3Q7PTc2OCZxdW90 OzwvY29kZT4gd291bGQgb25seSBzaG93IGltYWdlcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gMTAyNCAmIzIxNTsgNzY4IHBpeGVsczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5zb3J0PC9zcGFuPiA6IHJlLW9yZGVyIHRoZSBpbWFnZXMgYnkgPGNvZGU+Y2F0ZWdvcnk8 L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2RlPm5hbWU8L2NvZGU+LCA8Y29kZT5kYXRlPC9j b2RlPiwgPGNvZGU+aWQ8L2NvZGU+ICh0aGUgZGVmYXVsdCBpZiB1c2luZyBhbiBpZCksIGZp bGUgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiwgPGNvZGU+YWx0PC9jb2RlPiwgPGNvZGU+Y2Fw dGlvbjwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwg PGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNvZGU+dGh1bWJfd2lkdGg8L2NvZGU+LCA8Y29kZT50 aHVtYl9oZWlnaHQ8L2NvZGU+LCA8Y29kZT5oYXN0aHVtYjwvY29kZT4gaW4gZWl0aGVyIDxj b2RlPmFzYzwvY29kZT5lbmRpbmcgb3IgPGNvZGU+ZGVzYzwvY29kZT5lbmRpbmcgb3JkZXIu IFR3byBzcGVjaWFsIGNhc2VzIGV4aXN0OiA8Y29kZT5maXhlZDwvY29kZT4gbWFpbnRhaW5z IHRoZSBvcmRlciB5b3Ugc3BlY2lmaWVkIGluIHRoZSBpZCBhbmQvb3IgY2F0ZWdvcnkgYXR0 cmlidXRlLCB3aGlsZSA8Y29kZT5yYW5kb208L2NvZGU+IHNodWZmbGVzIHRoZSBvcmRlci48 ZGl2IGNsYXNzPSJicmVhayI+Tm90ZSB0aGF0IGlmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBw ZWFycyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCwgcmFuZG9tIGltYWdlcyB3aWxs IGJlIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhleSB3aWxsIHRoZW4gYmUgc29y dGVkIGFjY29yZGluZyB0byB0aGUgb3JkZXIgbGlzdGVkIGFmdGVyIGl0LiBJZiA8Y29kZT5y YW5kb208L2NvZGU+IGFwcGVhcnMgYW55d2hlcmUgZWxzZSBpbiB0aGUgbGlzdCwgYW55IHNv cnQgaXRlbXMgYmVmb3JlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiBkYXRhIHB1 bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSByZXN1bHRzIHdpbGwgdGhlbiBiZSBv cmRlcmVkIHJhbmRvbWx5LiBJbiB0aGUgMm5kIGNhc2UsIGFueSBpdGVtcyBsaXN0ZWQgYWZ0 ZXIgJiM4MjE2O3JhbmRvbSYjODIxNzsgd2lsbCBiZSBpZ25vcmVkLCBidXQgPGNvZGU+Zml4 ZWQ8L2NvZGU+IGlzIHN0aWxsIGhvbm91cmVkPC9kaXY+PC9saT4KCTwvdWw+CgoJPGg0Pkxp bWl0cyAvIG9mZnNldHMgLyBzaXplczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBz aG93IDxlbT5wZXIgcGFnZTwvZW0+LiAwICh0aGUgZGVmYXVsdCkgb3Igb21pdHRlZCA9IHVu bGltaXRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXhsaW1pdDwvc3Bhbj4g OiB0aGUgYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2UgdG8gcHVsbCBmcm9tIHRo ZSBkYXRhYmFzZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gMDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5vZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgaW1hZ2VzIGFuZCBz dGFydCBkaXNwbGF5aW5nIHRoZW0gdGhlcmVhZnRlcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj50aHVtYmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHVt Ym5haWxzIHRvIHNob3cuIDAgb3Igb21pdHRlZCA9IGFsbCB0aHVtYnMuIE5vdGUgdGhhdCB0 aGlzIGRpZmZlcnMgZnJvbSBsaW1pdDsgeW91IGNhbiBsYXVuY2ggYSAyMC1pbWFnZSBnYWxs ZXJ5IGJ1dCBvbmx5IHNob3cgMSB0aHVtYm5haWwgb24gdGhlIHBhZ2UuIEJlIGF3YXJlIHRo YXQgaWYgeW91IGFyZSBzaG93aW5nIG11bHRpcGxlIGNhdGVnb3JpZXMgZnJvbSBhIHNpbmds ZSB0YWcsIHlvdSB3aWxsIHNlZSA8Y29kZT50aHVtYmxpbWl0PC9jb2RlPiB0aHVtYm5haWxz IDxlbT5hdCBlYWNoIGNoYW5nZSBpbiBjYXRlZ29yeTwvZW0+LiBJZiB5b3UgZG9uJiM4MjE3 O3Qgd2FudCB0aGlzLCBzZXQgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IHRvIHNvbWV0aGluZyBl bHNlLiBTZWUgdGhlIDxjb2RlPntvYmplY3R9PC9jb2RlPiA8YSBocmVmPSIjcmVwX2dhbGxl cnkiPnJlcGxhY2VtZW50IHRhZzwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Z3JvdXBsaW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIHRvIHB1 dCBvbiB0aGUgcGFnZSwgPGVtPnBlciBncm91cDwvZW0+LiBBIGdyb3VwIGlzIGNvbnNpZGVy ZWQgYW55IHNldCBvZiBpbWFnZXMgKGUuZy4gYWxsIGltYWdlcyBmcm9tIG9uZSBjYXRlZ29y eSkgc28gdGhpcyBjYW4gYmUgdXNlZCB0byBvbmx5IGRpc3BsYXkgTiBpbWFnZXMgYXQgZWFj aCBjaGFuZ2UgaW4gY2F0ZWdvcnkuIEEgY29uY3JldGUgZXhhbXBsZSBpcyBkaXNwbGF5aW5n IGEgdGh1bWJuYWlsIHRoYXQgbGF1bmNoZXMgYSBnYWxsZXJ5IHNob3dpbmcgdGhlIDUgbW9z dCByZWNlbnQgd29ya3MgZnJvbSBlYWNoIGF1dGhvci4gV2l0aG91dCA8Y29kZT50aHVtYmxp bWl0PSZxdW90OzEmcXVvdDsgZ3JvdXBsaW1pdD0mcXVvdDs1JnF1b3Q7PC9jb2RlPiB0aGUg bnVtYmVyIG9mIGltYWdlcyBpbiB0aGUgZ3JvdXAgd291bGQgYmUgdW5saW1pdGVkLiBTZWUg PGEgaHJlZj0iI2VnMTIiPmV4YW1wbGUgMTI8L2E+IGZvciBtb3JlPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnRodW1ib2Zmc2V0PC9zcGFuPiA6IHNraXAgdGhpcyBtYW55IHRo dW1icyBiZWZvcmUgZGlzcGxheWluZyA8Y29kZT50aHVtYmxpbWl0PC9jb2RlPiB0aHVtYm5h aWxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ic2l6ZTwvc3Bhbj4gOiB0 YWtlcyBvbmUgb3IgdHdvIGNvbW1hLXNlcGFyYXRlZCBudW1iZXJzIHRvIHNwZWNpZnkgd2lk dGggYW5kL29yIGhlaWdodCBvZiBhbGwgeW91ciBnYWxsZXJ5IHRodW1ibmFpbHMuIFRoZSBk ZWZhdWx0IGlzIGluIHBpeGVscyBpZiB5b3UgZG9uJiM4MjE3O3Qgc3BlY2lmeSB1bml0cy4g TWlzc2luZyBvdXQgb25lIG9yIHRoZSBvdGhlciBwYXJhbWV0ZXIgKGkuZS4gaGF2aW5nIGFu ICYjODIyMDtlbXB0eSYjODIyMTsgcGFyYW1ldGVyIGJlZm9yZSBvciBhZnRlciB0aGUgY29t bWEpIHdpbGwgb25seSBzZXQgb25lIG9mIHRoZSBkaW1lbnNpb25zLiBVc2UgYSBzaW5nbGUg dmFsdWUgdG8gbWFrZSBzcXVhcmUgdGh1bWJzLiBJZiB5b3Ugb21pdCBlaXRoZXIgb3IgYm90 aCwgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgd2lsbCBiZSByZWFkIGZyb20gdGhlIGRhdGFi YXNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmltZ3NpemU8L3NwYW4+IDogaWRl bnRpY2FsIHRvIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4gYnV0IGZvciB0aGUgZnVsbCBzaXpl IGltYWdlczwvbGk+Cgk8L3VsPgoKCTxoND5Gb3JtcyBhbmQgcGFnaW5nPC9oND4KCgk8dWw+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlvdXIgbWF0Y2hpbmcg aW1hZ2VzLiBXaXRob3V0IHRoaXMgYXR0cmlidXRlIHRoZSBwbHVnaW4gYWN0cyBhcyBhIGNv bnRhaW5lciB0YWcuIFdpdGhvdXQgYSBjb250YWluZXIsIHRoZSBwbHVnaW4gZGlzcGxheXMg ZWFjaCBmdWxsLXNpemUgaW1hZ2UsIGh5cGVybGlua2VkPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIHlvdXIgcGFnaW5n IG5hdmlnYXRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnaW5nPC9zcGFu PiA6IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lmeSBhIHBhZ2Vm b3JtLiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdl IHJlcGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIDxhIGhyZWY9 IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0YWdzPC9hPiBhcyB3ZWxsPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vwb3M8L3NwYW4+IDogdGhlIHBvc2l0 aW9uIG9mIHRoZSBwYWdpbmcgYmxvY2suIE9wdGlvbnMgYXJlIDxjb2RlPmJlbG93PC9jb2Rl PiAodGhlIGRlZmF1bHQpLCA8Y29kZT5hYm92ZTwvY29kZT4sIG9yIGJvdGggb2YgdGhlbSBz ZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPm9iamVjdGZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91ciA8Y29kZT57 b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnLiBZb3UgY2FuIHVzZSBhbGwgdGhlIHN0 YW5kYXJkIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0YWdz PC9hPiB3aXRoIHRoZSBleGNlcHRpb24gb2YgPGNvZGU+e29iamVjdH08L2NvZGU+IGl0c2Vs ZiEgVXNlcyBhIGh5cGVybGlua2VkIGltYWdlIGlmIG5vIGZvcm0gaXMgc3BlY2lmaWVkPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvdW50Zm9ybTwvc3Bhbj4gOiBsaXN0IG9m IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm1zIHRvIHVzZSB3aGVuIGNlcnRh aW4gbnVtYmVyZWQgaW1hZ2VzIGFyZSByZWFjaGVkLiBTZWUgPGEgaHJlZj0iI2NvdW50Zm9y bSI+Y291bnQgZm9ybXM8L2E+IGFuZCA8YSBocmVmPSIjZWcxMCI+ZXhhbXBsZSAxMDwvYT4u IFRoaXMgaGFzIG5vIGVmZmVjdCBpbiBjb2xsYXRlIG1vZGU8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+Y291bnRwb3M8L3NwYW4+IDogZGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUg PGNvZGU+Y291bnRmb3JtPC9jb2RlPnMuIEVpdGhlciA8Y29kZT5hYm92ZTwvY29kZT4gKHRo ZSBkZWZhdWx0KSwgPGNvZGU+YmVsb3c8L2NvZGU+LCBvciBib3RoIG9mIHRoZW0gc2VwYXJh dGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPi4gQ2FuIGJlIG92ZXJyaWRkZW4gb24gYSBwZXIt Zm9ybSBiYXNpczwvbGk+Cgk8L3VsPgoKCTxoND5Hcm91cGluZyBpbWFnZXM8L2g0PgoKCTx1 bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdlPC9zcGFuPiA6IGEgbGlzdCBv ZiBhdHRyaWJ1dGVzIHRvICYjODIyMDt3YXRjaCYjODIyMTsuIEl0IHRlbGxzIHRoZSBwbHVn aW4gdGhhdCB5b3Ugd2FudCB0byBiZSBub3RpZmllZCB3aGVuIGl0ZW1zIGluIHRoaXMgbGlz dCBjaGFuZ2UgY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIGltYWdlLiBVbmRlciBub3JtYWwg Y2lyY3Vtc3RhbmNlcyB0aGlzIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB5b3VyIDxjb2RlPnNv cnQ8L2NvZGU+IHBhcmFtZXRlciBvciB5b3UgbWF5IGdldCBzb21lIGZyZWFreSByZXN1bHRz ISBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwvY29kZT4uPGRpdiBjbGFzcz0iYnJl YWsiPlRoaXMgaXMgdmVyeSB1c2VmdWwgZm9yIHNwbGl0dGluZyBnYWxsZXJpZXMgYXQgZXZl cnkgY2hhbmdlIGluIGNhdGVnb3J5IGFuZCBkaXNwbGF5aW5nIHRoZSBjYXRlZ29yeSB0aXRs ZSBhYm92ZSBlYWNoIGdyb3VwLiBJdGVtcyB5b3Ugd2F0Y2ggYXJlIGFkZGVkIHRvIHRoZSBs aXN0IG9mIHJlcGxhY2VtZW50IHRhZ3MgYW5kIGFyZSBhdmFpbGFibGUgYnkgcHV0dGluZyAm IzgyMjA7b25jaGFuZ2U6JiM4MjIxOyBpbiBmcm9udCBvZiB0aGVpciBuYW1lIChlLmcuIDxj b2RlPntvbmNoYW5nZTpjYXRlZ29yeX08L2NvZGU+ICYjODIxMjsgc2VlIDxhIGhyZWY9IiNl ZzYiPmV4YW1wbGUgNjwvYT4gZm9yIG1vcmUpLiBUaGUgY29sb24gZGVsaW1pdGVyIGNhbiBi ZSBjaGFuZ2VkIHdpdGggPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4uPC9kaXY+PGRpdiBjbGFz cz0iYnJlYWsiPllvdSBjYW4gYWxzbyBlbGVjdCB0byBkZWZlciBwcm9jZXNzaW5nIG9mIG9u Y2hhbmdlIGV2ZW50cyB0byBhIGZvcm0uIFRvIGRvIHNvLCBzcGVjaWZ5IGEgZm9ybSBhZnRl ciB5b3VyIHdhdGNoIGl0ZW0gbGlrZSB0aGlzIDxjb2RlPmNhdGVnb3J5X3RpdGxlOm15X2Zv cm08L2NvZGU+LiBJbiBteV9mb3JtIHlvdSBjYW4gcHV0IGFueSBtYXJrdXAgYW5kIHJlcGxh Y2VtZW50IHRhZ3MuIFNlZSA8YSBocmVmPSIjZWcxMSI+ZXhhbXBsZSAxMTwvYT4gZm9yIG1v cmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkFub3RoZXIgd2F5IG9mIHVzaW5nIHRoaXMg YXR0cmlidXRlIGlzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4IDxjb2RlPnNtZF9ldmVyeTpu PC9jb2RlPiB3aGljaCB3aWxsIHRyaWdnZXIgYSBncm91cCBjaGFuZ2UgZXZlcnkgTnRoIGlt YWdlLiBOb3RlIGl0IGNhbiYjODIxNzt0IGJlIHVzZWQgdG8gd2F0Y2ggc3BlY2lmaWMgdGhp bmdzIGluIHRoaXMgbW9kZTsgaXQgaXMgb25seSB1c2VkIHRvIHRyaWdnZXIgPGNvZGU+Z3Jv dXB0YWc8L2NvZGU+IGNoYW5nZXM8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+b25jaGFuZ2V3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3Vu ZCBhbnkgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmcs IGUuZy4gPGNvZGU+b25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7PC9jb2RlPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZWNsYXNzPC9zcGFuPiA6IHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRybyBhcHBseSB0byB0 aGUgd3JhcHRhZyBvZiBhbnkgb25jaGFuZ2UgZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZzwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ncm91cHRhZzwvc3Bhbj4gOiB0aGUgKFgp SFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFibGUgYXMgYSByZXBsYWNlbWVudCBzbyB5b3UgY2Fu IHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRzIGF0IGVhY2ggPGNvZGU+b25jaGFuZ2U8L2NvZGU+ LiBEZWZhdWx0OiB1bnNldC4gU2VlIDxhIGhyZWY9IiNlZzYiPmV4YW1wbGVzIDY8L2E+IGZv ciBtb3JlIG9uIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiAvIDxjb2RlPmdyb3Vw dGFnZW5kPC9jb2RlPiByZXBsYWNlbWVudCB0YWdzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmdyb3VwY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8 L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byBhbnkgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+ PC9saT4KCTwvdWw+CgoJPGg0PlRhZy9jbGFzcy9mb3JtYXR0aW5nIGF0dHJpYnV0ZXM8L2g0 PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+IDogdGhl IChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgZ2FsbGVyeSwgZS5nLiA8Y29k ZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVh Y2ggdGh1bWJuYWlsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFu PiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIGFwcGxp ZWQgdG8gdGhlIDxjb2RlPndyYXB0YWc8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmJyZWFrY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8 L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byB0aGUgPGNvZGU+YnJlYWs8L2NvZGU+IGVs ZW1lbnRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmh0bWxfaWQ8L3NwYW4+IDog dGhlIG5hbWUgb2YgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxjb2RlPmlk PC9jb2RlPiBhdHRyaWJ1dGUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+bmF2d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcg dG8gc3Vycm91bmQgdGhlIGVudGlyZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4sIGUuZy4gPGNv ZGU+d3JhcHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT51bDwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2YnJlYWs8L3NwYW4+IDog dGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVhY2ggaXRlbSB3aXRoaW4gdGhlIDxjb2Rl PnBhZ2Vmb3JtPC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+bGk8L2NvZGU+PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIG9mIHRoZSBuYXZpZ2F0aW9uIHdyYXB0YWcu IERlZmF1bHQ6IDxjb2RlPnNtZF9nYWxsZXJ5X25hdjwvY29kZT48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+ZW1wdHljbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNh cHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBvZiB0aGUgbmF2aWdhdGlvbiBpdGVtcyB0aGF0 IGFyZSA8ZW0+bm90PC9lbT4gbGlua3MuIERlZmF1bHQ6IDxjb2RlPmVtcHR5PC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtYXQ8L3NwYW4+ICg8c3BhbiBjbGFz cz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNvZGU+e2RhdGV9PC9jb2RlPjwvc3Bhbj4p IDogYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIGRhdGUgZm9ybWF0IHVzZWQuIENhbiB0YWtl IGFueSA8YSBocmVmPSJodHRwOi8vdWsucGhwLm5ldC9zdHJmdGltZSI+c3RyZnRpbWUoKTwv YT4gdmFsdWVzLiBEZWZhdWx0cyB0byB0aGUgZGF0ZSBzeXN0ZW0gYXMgc2V0IGluIHRoZSBz aXRlJiM4MjE3O3MgcHJlZnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFuZzwv c3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1c2luZyA8Y29kZT57ZGF0 ZX08L2NvZGU+PC9zcGFuPikgOiBzZXRzIHRoZSBsYW5ndWFnZSBjb2RlIG9mIHRoZSBkYXRl IGZvcm1hdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3NwYW4+ICg8c3Bh biBjbGFzcz0icmVxdWlyZWQiPm9ubHkgaWYgdXNpbmcgPGNvZGU+e2RhdGV9PC9jb2RlPjwv c3Bhbj4pIDogcmV0dXJucyBlaXRoZXIgbG9jYWwgdGltZSBhY2NvcmRpbmcgdG8gdGhlIHNl dCB0aW1lIHpvbmUgcHJlZmVyZW5jZXMgKDApLCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+R01U PC9zcGFuPiB0aW1lICgxKS4gRGVmYXVsdDogMDwvbGk+Cgk8L3VsPgoKCTxoND5QbHVnaW4g Y3VzdG9taXNhdGlvbjwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGVs aW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgYXR0cmli dXRlIGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5wYXJhbWRlbGltPC9zcGFuPiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGZvciBz cGVjaWZ5aW5nIGludGVyLXBhcmFtZXRlciBhdHRyaWJ1dGVzLiBEZWZhdWx0IGlzIGNvbG9u ICg6KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xsYXRlPC9zcGFuPiA6IHN3 aXRjaCB0aGUgcGx1Z2luIGludG8gPGEgaHJlZj0iI2NvbGxhdGVfbW9kZSI+Y29sbGF0ZSBt b2RlPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xsYXRlZGVsaW08L3Nw YW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBlYWNoIGNvbGxhdGVkIGl0ZW0u IERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNv bWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24gPGEgaHJlZj0iI2NvbWJvcyI+Y3VzdG9t IHJlcGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVz Y2FwZTwvc3Bhbj4gOiBsaXN0IG9mIHJlcGxhY2VtZW50IHZhcmlhYmxlIG5hbWVzIHRvICYj ODIxNjtlc2NhcGUmIzgyMTc7LCBpbiBvdGhlciB3b3JkcyBjb252ZXJ0IGFueSA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFncyB0byB0aGVpciBjaGFyYWN0ZXIgZW50aXR5 IGVxdWl2YWxlbnRzLiBTZXQgdG8gPGNvZGU+ZXNjYXBlPSZxdW90OyZxdW90OzwvY29kZT4g dG8gdHVybiB0aGlzIGZlYXR1cmUgb2ZmLiBZb3UgY2FuIGVzY2FwZSB5b3VyIG93biBjb21i b3MuIERlZmF1bHQ6IDxjb2RlPmFsdCwgdGl0bGUsIGNhcHRpb248L2NvZGU+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0cmljdGZpZWxkczwvc3Bhbj4gOiB3aGVuIHVzaW5n ICYjODIxNjs/JiM4MjE3OyBvciAmIzgyMTY7ISYjODIxNzsgZmllbGRzLCBzcGFjZXMgYXJl IGFsbG93ZWQgaW4gZmllbGQgbmFtZXMuIFNldCA8Y29kZT5zdHJpY3RmaWVsZHM9JnF1b3Q7 MSZxdW90OzwvY29kZT4gdG8gZm9yYmlkIHNwYWNlcy4gRGVmYXVsdDogMDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5nYWxsZXJ5aWQ8L3NwYW4+IDogdW5kZXIgbm9ybWFsIGNp cmN1bXN0YW5jZXMgeW91IHNob3VsZCBuZXZlciBuZWVkIHRoaXMuIEVhY2ggZ2FsbGVyeSBp cyBhc3NpZ25lZCBhIHVuaXF1ZSBJRCBiYXNlZCBvbiB0aGUgc3VwcGxpZWQgYXR0cmlidXRl cyBzbyB5b3UgbWF5IHVzZSBtb3JlIHRoYW4gb25lIGdhbGxlcnkgb24gYSBwYWdlIGFuZCBu YXZpZ2F0ZSB0aGVtIGluZGVwZW5kZW50bHkuIEluIHRoZSB1bmxpa2VseSBldmVudCB0aGF0 IHR3byBpZGVudGljYWwgSURzIGFyZSBnZW5lcmF0ZWQgeW91IGNhbiBvdmVycmlkZSB0aGUg SUQgZm9yIGEgZ2FsbGVyeSBieSB1c2luZyB0aGlzIGF0dHJpYnV0ZS48ZGl2IGNsYXNzPSJi cmVhayI+SW50ZXJuYWxseSB0aGUgcGx1Z2luIGdlbmVyYXRlcyBhIDMyLWNoYXJhY3RlciBo YXNoIHN0cmluZyBmb3IgZWFjaCB0YWcsIHRoZW4gcGlja3MgYSA0LWNoYXIgY29kZSBmcm9t IHRoaXMgc3RyaW5nIChpdCB0YWtlcyBldmVyeSA2dGggY2hhcmFjdGVyIGJ5IGRlZmF1bHQp LiBZb3UgY2FuIHN1cHBseSBhIHVuaXF1ZSBmaXhlZCBzdHJpbmcgKGUuZy4gPGNvZGU+Z2Fs bGVyeWlkPSZxdW90O015R2FsJnF1b3Q7PC9jb2RlPikgb3IgZ2l2ZSBpdCBhIHF1ZXN0aW9u IG1hcmsgYW5kIDIgbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xvbiAoZS5nLiA8Y29kZT5n YWxsZXJ5aWQ9JnF1b3Q7PzU6NCZxdW90OzwvY29kZT4pLiBUaGUgZmlyc3QgbnVtYmVyIGlz IHRoZSBsZW5ndGggb2YgdGhlIGZpbmFsIHN0cmluZyB0byBnZW5lcmF0ZSwgdGhlIHNlY29u ZCBudW1iZXIgaXMgaG93IG1hbnkgY2hhcmFjdGVycyB0byBza2lwIGluIHRoZSAzMi1jaGFy IHN0cmluZyBlYWNoIHRpbWUgaXQgcGlja3Mgb25lLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFr Ij5JbiB0aGlzIGNhc2UgaXQgZ2VuZXJhdGVzIGEgNS1jaGFyYWN0ZXIgc3RyaW5nIGZyb20g dGhlIGNoYXJhY3RlcnMgaXQgZmluZHMgYXQgcG9zaXRpb25zIDEsNSw5LDEzLCBhbmQgMTcu IElmIHlvdSBvbWl0IHRoZSAybmQgbnVtYmVyIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVv dDs/NiZxdW90OzwvY29kZT4pIGl0IHdpbGwgYXNzdW1lIGl0JiM4MjE3O3MgYW4gaW5jcmVt ZW50IG9mIDE8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWI8L3Nw YW4+IDogdW5kZXIgbm9ybWFsIG9wZXJhdGlvbiwgdGh1bWJuYWlscyB1c2UgdGhlICYjODIx Njt0JiM4MjE3OyBpbWFnZSBpbiB5b3VyIDxjb2RlPmltYWdlczwvY29kZT4gZGlyZWN0b3J5 IGFuZCB0aGUgZnVsbCBzaXplIHBpY3R1cmVzIGRvbiYjODIxNzt0LiBJZiB5b3Ugd2lzaCB0 byByZWRlZmluZSB0aGlzIHlvdSBtYXkgc3BlY2lmeSB1cCB0byB0d28gdmFsdWVzIHNlcGFy YXRlZCBieSBhIGNvbG9uLiBUaGUgZmlyc3QgaW5kaWNhdGVzIHRoZSBzdGF0ZSBvZiB0aGUg ZnVsbCBzaXplIGltYWdlLCBhbmQgdGhlIHNlY29uZCBpcyB0aGUgc3RhdGUgb2YgdGhlIHRo dW1ibmFpbDoKCTx1bD4KCQk8bGk+dGh1bWI9MDoxICYjODIxMjsgZnVsbHNpemUgPSByZWd1 bGFyIGltYWdlIDogdGh1bWJuYWlsID0gdGh1bWI8L2xpPgoJCTxsaT50aHVtYj0xOjAgJiM4 MjEyOyBmdWxsc2l6ZSA9IHRodW1iIDogdGh1bWJuYWlsID0gcmVndWxhciBpbWFnZTwvbGk+ CgkJPGxpPnRodW1iPTA6MCAob3IgdGh1bWI9MCkgJiM4MjEyOyBmdWxsc2l6ZSA9IHJlZ3Vs YXIgaW1hZ2UgOiB0aHVtYm5haWwgPSByZWd1bGFyIGltYWdlPC9saT4KCQk8bGk+dGh1bWI9 MToxIChvciB0aHVtYj0xKSAmIzgyMTI7IGZ1bGxzaXplID0gdGh1bWIgOiB0aHVtYm5haWwg PSB0aHVtYjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50ZXh0 PC9zcGFuPiA6IGRpc3BsYXkgdGhlIGdpdmVuIHRleHQgaW5zdGVhZCBvZiB0aHVtYm5haWxz LiBUaGUgdGV4dCBjYW4gY29udGFpbiA8Y29kZT4/PC9jb2RlPiBhcnRpY2xlIGZpZWxkczwv bGk+Cgk8L3VsPgoKCTxoND5TcGVjaWFsIGF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmNvbHVtbnM8L3NwYW4+IDogZ2l2ZSBhIGNvbW1hLXNlcGFy YXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgY29sdW1ucyB5b3Ugd291bGQgbGlrZSB0byBwdWxs IGZyb20gdGhlIGRhdGFiYXNlLiBFYWNoIGl0ZW0geW91IHNwZWNpZnkgaXMgc3BsaXQgaW50 byB0aHJlZSBwYXJ0czogPGNvZGU+dGFibGUuY29sdW1uOnJlcGxhY2VtZW50IG5hbWU8L2Nv ZGU+LiBUaGUgb25seSBtYW5kYXRvcnkgcGFydCBpcyB0aGUgcmVwbGFjZW1lbnQgbmFtZSwg c2luY2UgPGNvZGU+dGFibGU8L2NvZGU+IGRlZmF1bHRzIHRvIHR4cF9pbWFnZSwgYW5kIHRo ZSA8Y29kZT5jb2x1bW48L2NvZGU+IGRlZmF1bHRzIHRvIHRoZSBzYW1lIG5hbWUgYXMgdGhl IHJlcGxhY2VtZW50IHlvdSBzcGVjaWZ5LjxkaXYgY2xhc3M9ImJyZWFrIj5Gb3IgZXhhbXBs ZSwgaWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBjbm9faW1hZ2Vfb3JkZXIgcGx1Z2luIHlv dSBjb3VsZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3NpdGlvbiZxdW90OzwvY29kZT4s IHNpbmNlIHRoZSBwbHVnaW4gYWRkcyB0aGUgJiM4MjE2O3Bvc2l0aW9uJiM4MjE3OyBjb2x1 bW4gdG8gdHhwX2ltYWdlLiBZb3UgY291bGQgdGhlbiBzb3J0IGJ5IDxjb2RlPnBvc2l0aW9u PC9jb2RlPiBhbmQgYWxzbyBkaXNwbGF5IHRoZSBpbWFnZSYjODIxNztzIDxjb2RlPntwb3Np dGlvbn08L2NvZGU+LiBJZiB5b3Ugd2lzaGVkIHRvIHJlbmFtZSB0aGUgdmFyaWFibGUgdG8s IHNheSwgPGNvZGU+aW1ncG9zPC9jb2RlPiB5b3Ugd291bGQgdXNlIDxjb2RlPmNvbHVtbnM9 JnF1b3Q7cG9zaXRpb246aW1ncG9zJnF1b3Q7PC9jb2RlPi4gTm90ZSB0aGF0IGlmIHlvdSBz cGVjaWZ5IHRoZSB0YWJsZSBuYW1lIHlvdSBtdXN0IGFsc28gaW5jbHVkZSB0aGUgdGFibGUg cHJlZml4IGlmIHlvdSBoYXZlIHVzZWQgb25lLjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5kaXJlY3Rvcnk8L3NwYW4+IDogKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+ ZXhwZXJpbWVudGFsPC9zcGFuPikgcmVhZCBpbWFnZXMgZnJvbSBhIGxpc3Qgb2YgZGlyZWN0 b3JpZXMgKG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cykgaW5zdGVhZCBvZiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2U8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+bWF0Y2g8L3NwYW4+IDogbGltaXQgdGhlIGltYWdlcyBhbmQg ZGlyZWN0b3JpZXMgY2hvc2VuIGluIDxjb2RlPmRpcmVjdG9yeTwvY29kZT4gbW9kZS4gR2l2 ZSBhIGxpc3Qgb2Ygd29yZHMgdG8gaW5jbHVkZSBvciAhZXhjbHVkZSBhbmQgYW55IG1hdGNo aW5nIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHdpbGwgYmUgY2hvc2VuIG9yIGlnbm9yZWQsIHJl c3BlY3RpdmVseS4gVGhlIG1hdGNoIHRlcm1zIGFyZSBhdXRvbWF0aWNhbGx5IGFzc3VtZWQg dG8gYmUgJiM4MjIwO3dpbGQmIzgyMjE7IHNvIGFueSBwYXJ0IG9mIHRoZSBmaWxlIG5hbWUg LyBwYXRoIHdpbGwgdHJpZ2dlciB0aGUgbWF0Y2g8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+ZGVidWc8L3NwYW4+IDogdHVybiBvbiBkaWFnbm9zdGljcy4gVmFyeWluZyBsZXZl bHMgb2YgdmVyYm9zaXR5IGZyb20gMCAobm9uZSkgdG8gNCAoYSBsb3QpPC9saT4KCTwvdWw+ CgoJPGgyIGlkPSJnYWxsZXJ5X2Zvcm0iPkdhbGxlcnkgZm9ybTwvaDI+CgoJPHA+VGhlIDxj b2RlPmZvcm08L2NvZGU+IGlzIHdoZXJlIHlvdSBkZXNpZ24gd2hhdCBldmVyeSB0aHVtYm5h aWwgd2lsbCBsb29rIGxpa2Ugb24gdGhlIHNjcmVlbi4gWW91IGRvIHRoaXMgYnkgc3BlY2lm eWluZyA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gbWFya3VwIG9yIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MgYXMgbm9ybWFsLiBJbiBrZXkgcGxhY2VzIHdo ZXJlIHlvdSB3YW50LCBmb3IgZXhhbXBsZSwgYW4gaW1hZ2UgSUQgLyBhbHQgdGFnIC8gaW1h Z2Ugd2lkdGggdG8gYmUgZGlzcGxheWVkLCB5b3Ugc3BlY2lmeSBzcGVjaWFsIHJlcGxhY2Vt ZW50IHRhZ3MsIGRldGFpbGVkIGJlbG93LiBUaGVzZSBhcmUgcmVwbGFjZWQgZm9yIGVhY2gg aW1hZ2UgaW4gdHVybiwgdGh1cyBidWlsZGluZyB1cCB0aGUgZ2FsbGVyeS48L3A+CgoJPHA+ SW4gY29sbGF0ZSBtb2RlLCB0aGUgaW1hZ2UgZGV0YWlscyBhcmUgaW5zdGVhZCBtYWRlIGlu dG8gbGlzdHMuIFRoZSBmb3JtIGlzIG9ubHkgcHJvY2Vzc2VkIG9uY2UgYW5kIHRoZSByZXBs YWNlbWVudCB0YWdzIG91dHB1dCB0aGUgZW50aXJlIGxpc3QuPC9wPgoKCTxoMyBjbGFzcz0i YXR0cyAiIGlkPSJyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQgdGFnczogZ2FsbGVyeTwvaDM+ CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2lkfTwvc3Bhbj4gOiBpbWFnZSBJ RCAob3IsIGluIGRpcmVjdG9yeSBtb2RlLCB0aGUgZmlsZW5hbWUgd2l0aG91dCBpdHMgZXh0 ZW5zaW9uKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmFtZX08L3NwYW4+IDog ZnVsbCBpbWFnZSBmaWxlbmFtZSBhcyBkZWZpbmVkIGluIHRoZSBkYXRhYmFzZSwgdXN1YWxs eSBpbmNsdWRpbmcgZXh0ZW5zaW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntl eHR9PC9zcGFuPiA6IGZpbGUgZXh0ZW5zaW9uLCBpbmNsdWRpbmcgZG90PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPntjYXRlZ29yeX08L3NwYW4+IDogaW1hZ2UgY2F0ZWdvcnkg bmFtZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y2F0ZWdvcnlfdGl0bGV9PC9z cGFuPiA6IGltYWdlIGNhdGVnb3J5IHRpdGxlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnthdXRob3J9PC9zcGFuPiA6IHdobyB1cGxvYWRlZCB0aGUgaW1hZ2U8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3VybH08L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gb2YgdGhlIGZ1bGxzaXplIGltYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnt0aHVtYnVybH08L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gb2YgdGhlIHRodW1ibmFpbDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 aW1hZ2VwYXRofTwvc3Bhbj4gOiBkaXJlY3RvcnkgdGhlIGltYWdlIGlzIGluPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZWRlZn08L3NwYW4+IDoganVzdCB0aGUgZmls ZSBuYW1lIHBhcnQgb2YgdGhlIGltYWdlIChlLmcuIDUuanBnKTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57dGh1bWJkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUgbmFtZSBw YXJ0IG9mIHRoZSB0aHVtYm5haWwgKGUuZy4gNXQuanBnKTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57YWx0fTwvc3Bhbj4gOiBhbHQgdGV4dDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57dGl0bGV9IG9yIHtjYXB0aW9ufTwvc3Bhbj4gOiBjYXB0aW9uPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntkYXRlfTwvc3Bhbj4gOiBpbWFnZSB1cGxvYWQg ZGF0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57d2lkdGh9PC9zcGFuPiA6IGlt YWdlIHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntoZWlnaHR9PC9zcGFu PiA6IGltYWdlIGhlaWdodDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57d3VuaXRz fTwvc3Bhbj4gOiBpbWFnZSB3aWR0aCB1bml0cyAoZS5nLiBweCwgJSwgZW0sIGV0Yy4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntodW5pdHN9PC9zcGFuPiA6IGltYWdlIGhl aWdodCB1bml0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ3aWR0aH08 L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pnt0aHVtYmhlaWdodH08L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdodDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ3dW5pdHN9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0 aCB1bml0cyAoZS5nLiBweCwgJSwgZW0sIGV0Yy4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnt0aHVtYmh1bml0c308L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdodCB1bml0czwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aGFzdGh1bWJ9PC9zcGFuPiA6IGlmIHRo ZSBpbWFnZSBoYXMgYW4gYXNzb2NpYXRlZCB0aHVtYm5haWwgb3Igbm90PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPntnYWxsZXJ5aWR9PC9zcGFuPiA6IGdhbGxlcnkgaWQgdGhh dCB5b3Ugb3IgdGhlIHBsdWdpbiBhc3NpZ25lZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57b2JqZWN0fTwvc3Bhbj4gOiBhIHNwZWNpYWwgaXRlbSBjb250YWluaW5nIGVpdGhl ciB0aGUgPGNvZGU+dGV4dDwvY29kZT4gT1IgdGhlIGltYWdlIHRhZyBvZiB0aGUgY29ycmVz cG9uZGluZyB0aHVtYm5haWwsIGJ1dCA8ZW0+b25seTwvZW0+IGlmIDxjb2RlPnRodW1ibGlt aXQ8L2NvZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50aHVtYmxpbWl0PSZxdW90OzEm cXVvdDs8L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBzZXQgZm9yIHRoZSBmaXJzdCB0 aHVtYm5haWwgaW4gdGhlIGxpc3Q7IGV2ZXJ5IG90aGVyIHRpbWUgaXQgaXMgZW1wdHk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NvdW50ZXJ9PC9zcGFuPiA6IGltYWdlIGNv dW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGVhY2ggdGltZTwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aW5kZXh9PC9zcGFuPiA6IGluZGV4IGNvdW50 ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmNvdW50ZXJ9PC9zcGFuPiA6IHRodW1ibmFp bCBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEuIE5vdGUgaXQgaXMgJiM4MjE2O3Jl c2V0JiM4MjE3OyB3aGVuZXZlciBhbiBlbGVtZW50IGdpdmVuIGluIDxjb2RlPm9uY2hhbmdl PC9jb2RlPiBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGl0ZW08L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e3RodW1iaW5kZXh9PC9zcGFuPiA6IGluZGV4IGNvdW50ZXIgKHpl cm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpLiBJdCBpcyByZXNldCBs aWtlIDxjb2RlPnt0aHVtYmNvdW50ZXJ9PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRvdGFsIG51bWJlciBvZiBpbWFnZXMg bWF0Y2hlZCBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e21h eGltYWdlc308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIGFj cm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5JbiBhZGRpdGlvbiwgaWYgZWl0aGVy IDxjb2RlPnBhZ2luZz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5wYWdlZm9ybTwv Y29kZT4gaGF2ZSBiZWVuIHNwZWNpZmllZCwgYWxsIHRoZSA8YSBocmVmPSIjcmVwX3BhZ2lu ZyI+cGFnaW5nIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZSBhdmFpbGFibGUgdG9vLiBJZiB0 aG9zZSBhcmVuJiM4MjE3O3QgZW5vdWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21ib3MiPmNy ZWF0ZSB5b3VyIG93bjwvYT4gYnkgZ3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRoZSBhYm92 ZSwgb3B0aW9uYWxseSB3aXRoIGFydGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNvZGU+P2V4 Y2VycHQ8L2NvZGU+LCA8Y29kZT4/a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0aWNsZV9p bWFnZTwvY29kZT4sIGV0Yy48L3A+CgoJPHA+T3RoZXIgdGFncyBhcmUgYWRkZWQgZGVwZW5k aW5nIGlmIHlvdSBhcmUgd2F0Y2hpbmcgZm9yIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiBlbGVt ZW50cywgb3IgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGEgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+ LiBJZiB5b3UgYWRkZWQgPGNvZGU+b25jaGFuZ2U9JnF1b3Q7YXV0aG9yLCBjYXRlZ29yeSZx dW90OzwvY29kZT4gdGhlbiBldmVyeSB0aW1lIHRoZSBhdXRob3Igb3IgY2F0ZWdvcnkgY2hh bmdlZCBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2UsIG9uZSBvciB0d28gbmV3IHJl cGxhY2VtZW50IHRhZ3Mgd291bGQgYmVjb21lIGF2YWlsYWJsZTsgbmFtZWx5IDxjb2RlPntv bmNoYW5nZTphdXRob3J9PC9jb2RlPiBhbmQgPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5KTwv Y29kZT4uIFVzaW5nIG9uY2hhbmdlIHdpdGggPGNvZGU+c21kX2V2ZXJ5PC9jb2RlPiBkb2Vz IDxlbT5ub3Q8L2VtPiBhZGQgYSBuZXcgcmVwbGFjZW1lbnQgdGFnIGFzIGl0IGlzIG1lcmVs eSB1c2VkIHRvIGNvdW50LjwvcD4KCgk8cD5JZiB5b3UgdXNlZCA8Y29kZT5ncm91cHRhZz0m cXVvdDtkaXYmcXVvdDs8L2NvZGU+IGFzIHdlbGwsIHlvdSB3b3VsZCBiZSBnaXZlbiB0d28g bmV3IHJlcGxhY2VtZW50IHRhZ3MgbGFiZWxsZWQgPGNvZGU+Z3JvdXB0YWdzdGFydDwvY29k ZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPi4gU2VlIDxhIGhyZWY9IiNlZzYiPmV4 YW1wbGUgNjwvYT4gZm9yIGRldGFpbHMuPC9wPgoKCTxoMiBpZD0icGFnaW5nX2Zvcm0iPlBh Z2luZyBmb3JtPC9oMj4KCgk8cD5BZGQgZ2FsbGVyeSBuYXZpZ2F0aW9uIHRvIHlvdXIgcGFn ZS4gV29ya3MgaW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUgPGEgaHJlZj0iI2dhbGxlcnlf Zm9ybSI+Z2FsbGVyeSBmb3JtPC9hPjogYSBzZXJpZXMgb2YgcmVwbGFjZW1lbnQgdGFncyBn b3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0ZW1zIGFyZSBhdmFpbGFibGUuIFlv dSBjb3VsZCBjaG9vc2UgdG8gb25seSBzaG93IG5leHQvcHJldi4gT3IgcGVyaGFwcyAxc3Qg cGFnZS9sYXN0IHBhZ2UuIE9yIG51bWJlcmVkIHBhZ2UgbGlua3MuPC9wPgoKCTxoMyBjbGFz cz0iYXR0cyAiIGlkPSJyZXBfcGFnaW5nIj5SZXBsYWNlbWVudCB0YWdzOiBwYWdpbmc8L2gz PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZmaXJzdH08L3NwYW4+IDog Zmlyc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0ZpcnN0JiM4MjIxOyAvIDxzcGFu IGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57bmF2cHJldn08L3NwYW4+IDogcHJldmlvdXMgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4 MjIwOyZsYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZlYXJsaWVyfTwvc3Bhbj4gOiBhbnkg cGFnZSBudW1iZXJzIGJlZm9yZSB0aGUgY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntuYXZ0aGlzdXJsfTwvc3Bhbj4gOiBjdXJyZW50IHBhZ2Ugd2l0aCBh IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmsgdG8gaXRzZWxmPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzfTwvc3Bhbj4gOiBjdXJyZW50IHBhZ2Ug d2l0aG91dCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbms8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhdGVyfTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1i ZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e25hdm5leHR9PC9zcGFuPiA6IG5leHQgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIw OyZyYXF1bzsmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0fTwvc3Bhbj4gOiBsYXN0IHBhZ2Ug KGRlZmF1bHQgbGFiZWw6ICYjODIyMDtMYXN0JiM4MjIxOyAvIDxzcGFuIGNsYXNzPSJjYXBz Ij5NTFA8L3NwYW4+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2Zmlyc3Rw YWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8g Zmlyc3QgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2cHJldnBhZ2V1 cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBwcmV2 aW91cyBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzcGFnZXVy bH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIGN1cnJl bnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dHBhZ2V1cmx9 PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBuZXh0IHBh Z2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhc3RwYWdldXJsfTwvc3Bh bj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gbGFzdCBwYWdlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGltYWdlc308L3NwYW4+IDogdG90 YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFscGFnZXN9PC9zcGFuPiA6IHRvdGFsIG51 bWJlciBvZiBwYWdlcyBpbiB0aGlzIGNvbGxlY3Rpb248L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+e21heGltYWdlc308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBudW1iZXIg b2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5UaGUgY3VycmVu dCBwYWdlIGhhcyBhIGZpeGVkIGNsYXNzIG9mICYjODIxNjtjdXJyZW50JiM4MjE3OyBhbmQg ZWFjaCBpdGVtIGlzLCBieSBkZWZhdWx0LCBhIDxjb2RlPiZsdDtsaSZndDs8L2NvZGU+IGZv ciBlYXN5IHN0eWxpbmcuIEN1c3RvbSBsYWJlbHMgYXJlIGRlZmluZWQgZGlyZWN0bHkgaW4g dGhlIGZvcm0gaXRzZWxmOyBmb3IgZXhhbXBsZSB0byBsYWJlbCB0aGUgbGluayB0aGF0IHRh a2VzIHVzZXJzIHRvIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBnYWxsZXJ5IGFzICYjODIyMDsx c3QmIzgyMjE7LCB1c2U6PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDoxc3R9PC9jb2RlPjwv cD4KCgk8cD5XaXRoIHRoaXMgc3ludGF4IHlvdSBjYW4gbGFiZWwgbmF2Zmlyc3QsIG5hdmxh c3QsIG5hdnByZXYsIG5hdm5leHQgYW5kIG5hdnRoaXMgKHRoZSAmIzgyMTY7OiYjODIxNzsg ZGVsaW1pdGVyIGluIHRoaXMgY2FzZSBpcyBzcGVjaWZpZWQgYnkgPGNvZGU+cGFyYW1kZWxp bTwvY29kZT4pLiBZb3UgY2FuIHVzZSB0aGlzIG1lY2hhbmlzbSB0byByZWFkIDxzcGFuIGNs YXNzPSJjYXBzIj5NTFA8L3NwYW4+IHNuaXBwZXRzLCBlLmc6PC9wPgoKCTxwPjxjb2RlPntu YXZmaXJzdDojI2ZpcnN0TGFiZWwjI308L2NvZGU+PC9wPgoKCTxwPllvdSBhcmUgbm90IGxp bWl0ZWQgdG8gdGV4dCBsYWJlbHMuIEltYWdlcyBjb3VsZCBiZSB1c2VkOjwvcD4KCgk8cD48 Y29kZT57bmF2bGFzdDogJmx0O2ltZyBzcmM9JnF1b3Q7aW1hZ2VzL2xhc3QucG5nJnF1b3Q7 IC8mZ3Q7fTwvY29kZT48L3A+CgoJPHA+WW91IGNhbiBvdmVycmlkZSB0aGUgbnVtYmVyIG9m IGl0ZW1zIGRpc3BsYXllZCBieSBuYXZlYXJsaWVyIGFuZCBuYXZsYXRlciBieSBzcGVjaWZ5 aW5nIGEgY29sb24gYW5kIGEgbnVtYmVyLiBTbyB0byBvbmx5IHNob3cgMiBpdGVtcyB0byB0 aGUgbGVmdCBvZiB0aGUgY3VycmVudCBwYWdlIGFuZCAzIGl0ZW1zIHRvIHRoZSByaWdodCwg dXNlIDxjb2RlPntuYXZlYXJsaWVyOjJ9IHtuYXZsYXRlcjozfTwvY29kZT4gaW4geW91ciBm b3JtLiBJZiB5b3Ugd2VyZSBvbiBwYWdlIDkgb2YgMTUsIHtuYXZlYXJsaWVyOjR9IHtuYXZs YXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZsdDsmbHQ7IDUgNiA3IDggOSAxMCAxMSAxMiAm Z3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+Q3VycmVudGx5IDxjb2RlPntuYXZlYXJsaWVyfTwv Y29kZT4gYW5kIDxjb2RlPntuYXZsYXRlcn08L2NvZGU+IG9ubHkgZGlzcGxheSBhcmFiaWMg bnVtZXJhbHMuIEFueSBpZGVhcyBvbiBob3cgdG8gb2ZmZXIgb3RoZXIgY2hhcmFjdGVyIHNl dHMgZ3JlYXRseSBhcHByZWNpYXRlZC48L3A+CgoJPGgyIGlkPSJjb3VudGZvcm0iPkNvdW50 IGZvcm1zPC9oMj4KCgk8cD5Tb21ldGltZXMgaXQmIzgyMTc7cyBoYW5keSB0byBiZSBhYmxl IHRvIHRha2UgYWN0aW9uIG9ubHkgd2hlbiBjZXJ0YWluIGltYWdlcyBhcmUgcmVhY2hlZDsg Zm9yIGV4YW1wbGU6PC9wPgoKCTx1bD4KCQk8bGk+b25seSBkaXNwbGF5IHNvbWV0aGluZyBv biB0aGUgZmlyc3Qgb3IgbGFzdCBpbWFnZTwvbGk+CgkJPGxpPnN0YXJ0IGEgbmV3IDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiAmIzgyMTY7cm93JiM4MjE3OyBldmVyeSAzcmQg aW1hZ2U8L2xpPgoJCTxsaT5icmVhayB5b3VyIGdhbGxlcnkgdXAgd2l0aCBhbiBhZHZlcnQ8 L2xpPgoJPC91bD4KCgk8cD5UaGlzIGNhbiBiZSBkb25lIHdpdGggc21kX2lmIGJ1dCBzaW5j ZSBpdCBpcyBzdWNoIGEgY29tbW9uIGZlYXR1cmUsIHRoZSBwbHVnaW4gaGFzIHRoZSBhYmls aXR5IGJ1aWx0IGluLiBBbGwgcmVwbGFjZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxlIHdpdGhp biB5b3VyIGNvdW50Zm9ybXMgc28geW91IGNhbiBkbyBzb21lIHByZXR0eSBuZWF0IHN0dWZm LiBJdCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxlOjwvcD4KCgk8dWw+CgkJPGxpPjxj b2RlPmNvdW50Zm9ybT0mcXVvdDsxOmdhbF9oZWFkJnF1b3Q7PC9jb2RlPiA6IHRoaXMgd291 bGQgb3V0cHV0IHRoZSBmb3JtIDxlbT5nYWxfaGVhZDwvZW0+IG9ubHkgd2hlbiB0aGUgZmly c3QgaW1hZ2UgaXMgZGlzcGxheWVkPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90 O3t0b3RhbGltYWdlc306Z2FsX2Zvb3QmcXVvdDs8L2NvZGU+IDogdGhpcyB3b3VsZCBvdXRw dXQgdGhlIGZvcm0gPGVtPmdhbF9mb290PC9lbT4gb25seSB3aGVuIHRoZSBsYXN0IGltYWdl IGlzIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDsxOmdhbF9o ZWFkLCB7dG90YWxpbWFnZXN9OmdhbF9mb290JnF1b3Q7PC9jb2RlPiA6IGRvIGJvdGggb2Yg dGhlIGFib3ZlPC9saT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzE6Z2FsX2hlYWQs IHt0b3RhbGltYWdlc306Z2FsX2Zvb3Q6c21kX2JlbG93JnF1b3Q7PC9jb2RlPiA6IHRoZSBz YW1lIGFzIHRoZSBwcmV2aW91cyBleGFtcGxlLCBidXQgcHV0IHRoZSBjb250ZW50cyBiZWxv dyB0aGUgbGFzdCBpbWFnZSAoYnkgZGVmYXVsdCwgYWxsIG91dHB1dCBhcHBlYXJzIGFib3Zl IHRoZSBnaXZlbiBpbWFnZSk8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7NDo5 OnNtZF9iZWxvdzpnYWxfYWQmcXVvdDs8L2NvZGU+IDogb3V0cHV0IDxlbT5nYWxfYWQ8L2Vt PiBhZnRlciB0aGUgNHRoIGFuZCA5dGggaW1hZ2VzIG9ubHk8L2xpPgoJCTxsaT48Y29kZT5j b3VudGZvcm09JnF1b3Q7NC05OnNtZF9iZWxvdzpnYWxfYWQmcXVvdDs8L2NvZGU+IDogb3V0 cHV0IDxlbT5nYWxfYWQ8L2VtPiBhZnRlciB0aGUgNHRoLCA1dGgsIDZ0aCwgN3RoLCA4dGgg YW5kIDl0aCBpbWFnZXMgb25seTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDtz bWRfZXZlcnk6MzpnYWxfcm93JnF1b3Q7PC9jb2RlPiA6IG91dHB1dCA8ZW0+Z2FsX3Jvdzwv ZW0+IGJlZm9yZSBldmVyeSAzcmQgaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09 JnF1b3Q7c21kX2V2ZXJ5OjI6ITg6Z2FsX3JvdyZxdW90OzwvY29kZT4gOiBvdXRwdXQgPGVt PmdhbF9yb3c8L2VtPiBiZWZvcmUgZXZlcnkgZXZlbiBpbWFnZSBidXQgbm90IG9uIHRoZSA4 dGggaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7OmdhbF9yb3cmcXVv dDs8L2NvZGU+IDogdXNlIGFuIGVtcHR5IGZpcnN0IHZhbHVlIHRvIG91dHB1dCA8ZW0+Z2Fs X3JvdzwvZW0+IGJlZm9yZSBldmVyeSBpbWFnZS4gVGhpcyBtYXkgc2VlbSB1c2VsZXNzLCBi dXQgaXQgbWVhbnMgeW91IGNhbiB1c2UgdHdvLCB0aHJlZSwgZm91ciYjODIzMDsgZm9ybXMg KG9yIGFueSBudW1iZXIgb2YgZm9ybXMgYW5kIHRoZSBjb250YWluZXIpIHNpbXVsdGFuZW91 c2x5IHRvIGl0ZXJhdGUgb3ZlciB0aGUgc2FtZSBnYWxsZXJ5LiBPciB1c2UgdGhlIHNhbWUg Zm9ybSBhdCBkaWZmZXJlbnQgZnJlcXVlbmNpZXMuIEdldCBjcmVhdGl2ZSE8L2xpPgoJCTxs aT48Y29kZT5jb3VudGZvcm09JnF1b3Q7OiE1OmdhbF9yb3c6c21kX2JlbG93JnF1b3Q7PC9j b2RlPiA6IGFnYWluLCBtaXNzaW5nIG91dCB0aGUgZmlyc3QgdmFsdWUgd2lsbCBvdXRwdXQg Z2FsX3JvdyBhZnRlciBldmVyeSBpbWFnZSwgYnV0IHRoaXMgdGltZSBza2lwcGluZyB0aGUg NXRoIGltYWdlPC9saT4KCTwvdWw+CgoJPHA+VGhlIDxjb2RlPiw8L2NvZGU+IGFuZCA8Y29k ZT46PC9jb2RlPiBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29k ZT4gYW5kIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0dHJpYnV0ZXMsIHJlc3BlY3RpdmVs eS48L3A+CgoJPHA+VGhlcmUgYXJlIGEgZmV3IHJ1bGVzIHdoZW4gdXNpbmcgdGhlIGNvdW50 Zm9ybTo8L3A+CgoJPHVsPgoJCTxsaT5udW1iZXJzIG11c3QgYXBwZWFyIGJlZm9yZSB0aGUg Zm9ybSBuYW1lPC9saT4KCQk8bGk+dGhlIGZvcm0gbmFtZSBpcyB1c3VhbGx5IHRoZSBsYXN0 IGl0ZW0gaW4gdGhlIGNvbG9uLXNlcGFyYXRlZCBsaXN0LCB0aG91Z2ggeW91IGNhbiBwdXQg PGNvZGU+c21kX2Fib3ZlPC9jb2RlPiBvciA8Y29kZT5zbWRfYmVsb3c8L2NvZGU+IGxhc3Qg aWYgeW91IHdpc2g8L2xpPgoJCTxsaT48Y29kZT5zbWRfZXZlcnk8L2NvZGU+IG9ubHkgYWZm ZWN0cyB0aGUgdmFsdWUgdGhhdCA8ZW0+aW1tZWRpYXRlbHk8L2VtPiBmb2xsb3dzIGl0LCBl LmcuIDxjb2RlPmNvdW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6NTo3OjEyOm15X2FkJnF1b3Q7 PC9jb2RlPiB3aWxsIG91dHB1dCA8ZW0+bXlfYWQ8L2VtPiBhdCBldmVyeSA1dGggaW1hZ2Us IGFzIHdlbGwgYXMgPGVtPm9ubHk8L2VtPiBvbiB0aGUgN3RoIGFuZCAxMnRoIGltYWdlcy4g VGh1cyB0aGUgc2VxdWVuY2Ugd291bGQgYmUgNSwgNywgMTAsIDEyLCAxNSwgMjAsIDI1LCAz MCYjODIzMDs8L2xpPgoJCTxsaT5pZiB1c2luZyA8Y29kZT5zbWRfZXZlcnk8L2NvZGU+LCBp dCA8c3Ryb25nPm11c3Q8L3N0cm9uZz4gYXBwZWFyIGFzIHRoZSBmaXJzdCBpdGVtLiBGb3Ig ZXhhbXBsZSA8Y29kZT5jb3VudGZvcm09JnF1b3Q7NDp0aGVfZm91cnRoLCA2OnNtZF9ldmVy eTo1Om15X2FkJnF1b3Q7PC9jb2RlPiBpcyBpbnZhbGlkLCBidXQgPGNvZGU+Y291bnRmb3Jt PSZxdW90OzQ6dGhlX2ZvdXJ0aCwgc21kX2V2ZXJ5OjU6NjpteV9hZCZxdW90OzwvY29kZT4g aXMgT0s8L2xpPgoJPC91bD4KCgk8cD5TZWUgPGEgaHJlZj0iI2VnMTAiPmV4YW1wbGUgMTA8 L2E+IGZvciBtb3JlLjwvcD4KCgk8aDIgaWQ9ImNvbWJvcyI+Q29tYm9zPC9oMj4KCgk8cD5J ZiB0aGUgYnVpbHQtaW4gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdz PC9hPiBhcmVuJiM4MjE3O3QgZW5vdWdoIGZvciB5b3VyIG5lZWRzIG9yIHlvdSBmaW5kIHlv dXJzZWxmIHJlcGVhdGluZyB0aGUgc2FtZSBjb21iaW5hdGlvbiBhbmQgd2FudCB0byBzYXZl IHlvdXJzZWxmIHNvbWUgdHlwaW5nLCB5b3UgY2FuIGRlZmluZSB5b3VyIG93bi4gVGhlIHN5 bnRheCBpczo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7bmV3dGFnMTpkZWZpbml0aW9u LCBuZXd0YWcyOmRlZmluaXRpb24sIC4uLiZxdW90OzwvY29kZT48L3A+CgoJPHA+JiM4MjE2 O2RlZmluaXRpb24mIzgyMTc7IGNhbiBiZSBhbnkgZml4ZWQgdGV4dCwgYW55IGV4aXN0aW5n IHJlcGxhY2VtZW50IHRhZywgb3IgYW55ICYjODIxNjs/JiM4MjE3OyBhcnRpY2xlIHZhcmlh YmxlIHNvIHlvdSBjYW4gZ2V0IHJlYWxseSB3aWxkIGhlcmUsIGZvciBleGFtcGxlOjwvcD4K Cgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdpbjpmb3VuZCBpbiA/cyBbdGFnZ2VkIHdpdGgg P2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9yfV0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPk9u Y2UgZGVmaW5lZCwgPGNvZGU+e2ltZ2lufTwvY29kZT4gaXMgYXZhaWxhYmxlIHRvIHlvdXIg Z2FsbGVyeSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQgbWlnaHQgYmUgcmVwbGFjZWQgd2l0aCAm IzgyMjA7Zm91bmQgaW4gem9vIFt0YWdnZWQgd2l0aCB6ZWJyYSwgYWZyaWNhLCBzdHJpcGVz LiBQaG90byBieSBCbG9rZV0mIzgyMjE7LiAkcHJldGV4dCBpcyBhbHNvIGF2YWlsYWJsZSBm b3IgdGhvc2UgZ2Vla3Mgd2hvIGtub3cgd2hhdCYjODIxNztzIGluIGl0ICh0ZW1wb3Jhcmls eSB1c2UgPGNvZGU+ZGVidWc9JnF1b3Q7NCZxdW90OzwvY29kZT4gdG8gdmlldyBhbGwgYXZh aWxhYmxlIGFydGljbGUgdmFyaWFibGVzKS48L3A+CgoJPHA+T25lIHRoaW5nIHRvIHdhdGNo IG91dCBmb3IgaXMgdGhhdCB0aGUgc3BhY2UgY2hhcmFjdGVyIGlzbiYjODIxNzt0IG5lY2Vz c2FyaWx5IGEgZGVsaW1pdGVyIGZvciA8Y29kZT4/PC9jb2RlPiB2YXJpYWJsZXMgKGJlY2F1 c2UgY3VzdG9tIGZpZWxkcyBjYW4gaGF2ZSBzcGFjZXMgaW4gdGhlbSkuIFNvIDxjb2RlPmNv bWJvPSZxdW90O2RvZXNub3R3b3JrOj9zIGluID9jYXRlZ29yeTEmcXVvdDs8L2NvZGU+IHdp bGwgbG9vayBmb3IgYSB2YXJpYWJsZSBsYWJlbGxlZCAmIzgyMjA7cyBpbiYjODIyMTsgYW5k IG9uZSBjYWxsZWQgJiM4MjIwO2NhdGVnb3J5MSYjODIyMTsuIE9ubHkgb25lIG9mIHRob3Nl IGV4aXN0cyEgQ2xldmVyIHVzZSBvZiBwYXJlbnRoZXNlcyBvciBvdGhlciBwdW5jdHVhdGlv biBjYW4gd29yayByb3VuZCB0aGlzLiBPciB1c2UgPGNvZGU+c3RyaWN0ZmllbGRzPSZxdW90 OzAmcXVvdDs8L2NvZGU+IHRvIHR1cm4gb2ZmIHRoZSB1c2Ugb2Ygc3BhY2VzIGluIGN1c3Rv bSBmaWVsZCBuYW1lcy48L3A+CgoJPGgyIGlkPSJjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9k ZTwvaDI+CgoJPHA+SWYgeW91IHdhbnQgdG8gZ2V0IDxlbT5yZWFsbHk8L2VtPiBmdW5reSB5 b3UgY2FuIHB1dCB0aGUgcGx1Z2luIGludG8gYSAybmQgbW9kZSBjYWxsZWQgJiM4MjIwO2Nv bGxhdGlvbiBtb2RlJiM4MjIxOy4gVGhpcyBtZWFucyB5b3VyIGNob3NlbiBmb3JtIGlzIDxz dHJvbmc+bm90PC9zdHJvbmc+IGV4ZWN1dGVkIGZvciBldmVyeSBpbWFnZTsgaXQgaXMgb25s eSB1c2VkIG9uY2UgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0LCBhZnRlciBhbGwgdGhl IGltYWdlcyBoYXZlIGJlZW4gaW50ZXJuYWxseSAmIzgyMjA7Y29sbGVjdGVkJiM4MjIxOy4g SW4gZWZmZWN0LCB0aGUgcGx1Z2luIGJ1aWxkcyB1cCBhIGdpYW50IGFycmF5IG9mIGFsbCBt YXRjaGluZyBpbWFnZXMgcmVhZHkgZm9yIHlvdSB0byBvdXRwdXQgdGhlbSBhbGwgaW4gb25l IGdvLiBUaGlzIGlzIHZlcnkgaGFuZHkgZm9yIGRvaW5nIHNsaWRlc2hvd3MgYW5kIGlzIGJl c3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7 MSZxdW90OzwvY29kZT48L3A+CgoJPHA+c3dpdGNoZXMgY29sbGF0aW9uIG1vZGUgb24uIElm IHRoZSBwbHVnaW4gbWF0Y2hlZCA0IGltYWdlcyBhbmQgeW91IHdlcmUgdG8gdXNlIHRoZSBy ZXBsYWNlbWVudCB0YWcgPGNvZGU+e25hbWV9PC9jb2RlPiBpbiB5b3VyIGZvcm0gbGlrZSB0 aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBt YXRjaGluZyBpbWFnZXM6IHtuYW1lfQo8L2NvZGU+PC9wcmU+CgoJPHA+eW91IG1pZ2h0IGdl dCB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRo ZSBtYXRjaGluZyBpbWFnZXM6IGhlcm9uLmpwZyxwZW5ndWluLmpwZyxlbXUuanBnLHB1ZmZp bi5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPlNvbWV0aW1lcyBpdCYjODIxNztzIHVzZWZ1bCB0 byBiZSBhYmxlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIGVhY2ggaXRlbSBzbyB5b3UgY2FuIHRl bGwgY29sbGF0ZSBtb2RlIHRvIGRvIHRoYXQgaW5zdGVhZDo8L3A+CgoJPHA+PGNvZGU+Y29s bGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPllvdSB3b3Vs ZCB0aGVuIGdldDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiAmcXVvdDtoZXJvbi5qcGcmcXVvdDssJnF1b3Q7cGVu Z3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZmaW4uanBnJnF1 b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1hIGluIHRoaXMg Y2FzZSkgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgPGNvZGU+ZGVsaW08L2NvZGU+IGF0 dHJpYnV0ZS4gWW91IG1heSB1c2UgPGNvZGU+c2dscXVvdGU8L2NvZGU+IHRvIHdyYXAgc2lu Z2xlIHF1b3RlcyByb3VuZCB0aGUgaXRlbXMsIG9yICYjODIyMDtkYmxxdW90ZSYjODIyMTsg YXMgYSBzeW5vbnltIGZvciAmIzgyMjA7cXVvdGUmIzgyMjE7IGlmIHlvdSBwcmVmZXIuIFlv dSBjYW4gcXVvdGUgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBvbmNlIGJ5IHNwZWNpZnlpbmcg dGhlIGl0ZW1zIGFzIGEgZGVsaW1pdGVkIGxpc3Q6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9 JnF1b3Q7cXVvdGU6e25hbWV9OnthbHR9OntpbWdpbn0mcXVvdDs8L2NvZGU+PC9wPgoKCTxw PlllcywgeW91IGNhbiB1c2UgY29tYm9zISBUaGUgZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBp dGVtcyBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxjb2RlPmNvbGxhdGVkZWxpbTwvY29k ZT4gYXR0cmlidXRlLjwvcD4KCgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVyZSBvZiBj b2xsYXRpb24gbW9kZSBpcyB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMgb3V0cHV0 IHRoZSBlbnRpcmUgbGlzdC4gWW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRpZXMgZnJv bSB3aXRoaW4gdGhlIGludGVybmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7IyYjODIx Nzsgbm90YXRpb24gdGh1czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj57bmFtZX0gbWlnaHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVv dDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5q cGcmcXVvdDsgKGFzIGJlZm9yZSkKe25hbWUjMX0gd291bGQgb25seSBvdXRwdXQgaGVyb24u anBnCntuYW1lIzN9IHdvdWxkIG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwvcHJlPgoK CTxwPk5vdGUgdGhhdCB3aGVuIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmllcyB0aGV5 IDxzdHJvbmc+ZG8gbm90PC9zdHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhlbSwgcmVn YXJkbGVzcyBvZiB3aGV0aGVyIHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBvciBub3Qu IFRoaXMgaXMgYmVjYXVzZSBpdCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4gZWFzaWx5 IHB1dCB0aGUgcXVvdGVzIGluIHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4mcXVvdDt7 bmFtZSMyfSZxdW90OzwvY29kZT4pPC9wPgoKCTxwPk1lc3NpbmcgYXJvdW5kIHdpdGggcHVs bGluZyBvdXQgaW5kaXZpZHVhbCBpdGVtcyBhbmQgbGlzdHMgY2FuIHlpZWxkIHNvbWUgdmVy eSBpbnRlcmVzdGluZyByZXN1bHRzIGFuZCBhbGxvd3Mgc29tZSBjb21wbGV0ZWx5IHdhY2t5 IGdhbGxlcmllcyB0byBiZSBnZW5lcmF0ZWQuIFRyeSBjb21iaW5pbmcgc21kX2dhbGxlcnkg dGFncyB3aXRoIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gZm9yIGEg cmVhbCBtaW5kIHNjcmFtYmxlIDotKTwvcD4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxl czwvaDI+CgoJPHA+VGhlIGV4YW1wbGVzIGFsbCB1c2UgdGhlIGNsYXNzaWMgem9vIHdlYnNp dGUuIExldCYjODIxNztzIGdldCBzb21lIHBpY3R1cmVzIG91dCBvZiB0aGUgZGF0YWJhc2Um IzgyMzA7PC9wPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94 ZWQgZ2FsbGVyeTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3Vi bGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhl IGFuaW1hbHMgY2F0ZWdvcnksIGluY2x1ZGluZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBw YXNzZXMgdGhlbSB0byB0aGUgZm9ybSBjYWxsZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZv ciBwcm9jZXNzaW5nLiBUaGUgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGNsYXNzPSZxdW90O2FuaW1hZ2UmcXVv dDsgc3JjPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OyAvJmd0Owom bHQ7ZGl2IGNsYXNzPSZxdW90O2FjYXB0aW9uJnF1b3Q7Jmd0O3t0aXRsZX0mbHQ7L2RpdiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgbWVhbnMsIGZvciBldmVyeSBtYXRjaGVkIGlt YWdlLCBzdWJzdGl0dXRlIGl0cyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiwgYWx0 IGFuZCB0aXRsZSB0YWdzIGludG8gdGhlIHJlbGV2YW50IHBsYWNlcy4gVGh1cyB5b3UgZ2V0 IGEgc2VyaWVzIG9mIGltYWdlcyBvbiB0aGUgcGFnZSwgd2hpY2ggeW91IGNhbiBzdHlsZSBh Y2NvcmRpbmdseS48L3A+CgoJPHA+Rm9yIGEgbW9yZSBmYW5jeSBvdXRwdXQgdXNpbmcsIHNh eSwgc2xpbWJveCwgeW91IGNvdWxkIGxvYWQgdGhlIHJlbGV2YW50IGxpYnJhcmllcyBhbmQg c3R5bGVzIGluIHRoZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IG9mIHlvdXIgcGFnZTo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0 IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9v bHMuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0 ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9zbGltYm94LmpzJnF1b3Q7Jmd0 OyZsdDsvc2NyaXB0Jmd0OwombHQ7bGluayByZWw9JnF1b3Q7c3R5bGVzaGVldCZxdW90OyB0 eXBlPSZxdW90O3RleHQvY3NzJnF1b3Q7IGhyZWY9JnF1b3Q7L2Nzcy9zbGltYm94LmNzcyZx dW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlbiB5b3VyICYjODIxNjtnYWxsZXJ5 JiM4MjE3OyBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7 IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yg e2NhcHRpb259JnF1b3Q7Jmd0OwogJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZx dW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNpbmcg dGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlvdSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0aGUg Z2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1wbGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVyZWQg c2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhlIHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRjaCB0 aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdodGJveCwgbGl0ZWJveCwgbW9vbmJveCBvciB3 aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5b3Ug bG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVmZmVj dCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxsZXJ5LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhh bXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1hZ2U8L2gzPgoKCTxwPkEgY29tbW9uIHJlcXVl c3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3ggZ2Fs bGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9yIHRleHQgbGluay4gVXNpbmcgYSBzaW5nbGUg aW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAgc3Vi bGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRo dW1ibGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGZv cm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+IHJlcGxhY2Vt ZW50IHRhZyBzbyBpdCBvbmx5IGRpc3BsYXlzIHRoZSB0aHVtYm5haWwgaWYgdGhlIHZhbHVl IG9mIHRodW1ibGltaXQgaGFzIDxzdHJvbmc+bm90PC9zdHJvbmc+IGJlZW4gcmVhY2hlZDo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9 JnF1b3Q7bGlnaHRib3gtc21kJnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0 aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxlfSZxdW90OyZndDsKe29iamVjdH0KJmx0 Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hhbmdlIHRoZSBzdGFydCBpbWFnZSBieSBz cGVjaWZ5aW5nIDxjb2RlPnRodW1ib2Zmc2V0PC9jb2RlPiAmIzgyMTI7IG5vdGUgdGhpcyB3 aWxsIGFsc28gc3RhcnQgdGhlIGxpZ2h0Ym94IGVmZmVjdCBmcm9tIHRoZSBpbWFnZSB5b3Ug Y2hvb3NlLiBJZiB5b3Ugd2FudCB0byBzdGFydCBvbiBhIHNwZWNpZmljIGltYWdlIGluIHBv c2l0aW9uIDEsIHVzZSB0aGUgPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBicmluZyBp dCB0byB0aGUgdG9wIG9mIHRoZSBsaXN0LCBvciBjaGFuZ2UgdGhlIHNvcnQgb3JkZXIuPC9w PgoKCTxwPklmIHlvdSB3YW50ZWQgdG8gbGF1bmNoIHRoZSBnYWxsZXJ5IGZyb20gYSB0ZXh0 IGxpbmssIGFkZCBzb21ldGhpbmcgbGlrZSA8Y29kZT50ZXh0PSZxdW90O0NsaWNrIHRvIHN0 YXJ0IGxpZ2h0Ym94JnF1b3Q7PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUg MzogcG9wdXAgZ2FsbGVyeTwvaDM+CgoJPHA+VG8gYWNoaWV2ZSBhbiBlZmZlY3Qgc2ltaWxh ciB0byByc3NfdGh1bWJwb3AsIGFkZCBhbiBpbWFnZSBhbmQgY2FwdGlvbiBwbGFjZWhvbGRl ciBvdXRzaWRlIHRoZSBjYWxsIHRvIHNtZF9nYWxsZXJ5LCB0aGVuIGluY2x1ZGUgeW91ciBz bWRfZ2FsbGVyeSB0YWcgYXMgdXN1YWwuIFRoaXMgdGltZSB3ZSBhcmUgb25seSBpbnRlcmVz dGVkIGluIGFsbCB0aGUgcGljdHVyZXMgZnJvbSB0aGUgY2F0ZWdvcmllcyB1cCB0byB0d28g bGV2ZWxzIGJlbG93IGJvdGggJiM4MjIwO2FuaW1hbHMmIzgyMjE7LCBwbHVzIHdoaWNoZXZl ciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9tX2ZpZWxkPC9jb2Rl PiBhbmQgdGhlIGltYWdlcyB3aXRoIElEcyAyNSwgMzgsIDM5LCA0MCBhbmQgNDI6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVv dDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZn dDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0 OwombHQ7dHhwOnNtZF9nYWxsZXJ5IHN1YmxldmVsPSZxdW90OzImcXVvdDsKICAgICBjYXRl Z29yeT0mcXVvdDthbmltYWxzLCA/bXlfY3VzdG9tX2ZpZWxkJnF1b3Q7CiAgICAgaWQ9JnF1 b3Q7MjUsIDQyLCAzOC00MCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlz IG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3Ig dGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNv cHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBh IG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1 b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1M ID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNlOyZxdW90OwogICAgIG9ubW91c2VvdXQ9JnF1 b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6ZSYjMzk7KS5zcmMgPSAm IzM5Oy9pbWFnZXMvMTcuanBnJiMzOTs7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo JiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSAmIzM5OyYjMzk7OyByZXR1cm4g ZmFsc2U7JnF1b3Q7Jmd0OwogICZsdDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsg YWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPk5vdGUgdGhlcmUgYXJlIG11Y2ggbmVhdGVyIHdheXMgb2YgZG9pbmcgdGhpcyAoZS5n LiB3aXRoIGpRdWVyeSkgYW5kIGl0JiM4MjE3O3Mgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0 aGlzIGZvcm0gaW4gYSBsaXZlIHNpdGUsIGJ1dCBpdCBnaXZlcyBhIGZsYXZvdXIgb2Ygd2hh dCBpcyBwb3NzaWJsZS48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDogc2xpZGVzaG93 PC9oMz4KCgk8cD5UaGlzIG9uZSB1c2VzIGNvbGxhdGUgbW9kZSBidXQgaXMgbm90IG11Y2gg bW9yZSBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZC4gSW4geW91ciA8Y29kZT4mbHQ7aGVhZCZn dDs8L2NvZGU+IHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBz cmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7 c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMv c2xpZGVzaG93LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhlIHRhZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVv dDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgY29tYm89JnF1b3Q7aW1nbGlzdDp7aWR9 e2V4dH0mcXVvdDsKICBjb2xsYXRlPSZxdW90O3F1b3RlOntpbWdsaXN0fTp7YWx0fSZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBhbGwgcGljdHVyZXMgZnJv bSB0aGUgYmlyZHMgYW5kIGZpc2ggY2F0ZWdvcmllcy4gQWx0aG91Z2ggdGVjaG5pY2FsbHkg dW5uZWNlc3NhcnksIGEgY29tYm8gaGFzIGJlZW4gZGVmaW5lZCB0byBzaG93IGhvdyBpdCBj YW4gYmUgdXNlZC4gVGhpcyBjb21ibyBpcyBjYWxsZWQgPGNvZGU+aW1nbGlzdDwvY29kZT4g YW5kIGlzIGRlZmluZWQgYXMgdGhlIGltYWdlJiM4MjE3O3MgSUQgbnVtYmVyIHBsdXMgaXRz IGV4dGVuc2lvbi4gV2UgdXNlIHRoaXMgaW4gdGhlIGNvbGxhdGUgYXR0cmlidXRlIGFuZCB0 ZWxsIGl0IHRvIHB1dCBkb3VibGUgcXVvdGVzIHJvdW5kIGV2ZXJ5IGl0ZW0gaW4gJiM4MjE2 O2ltZ2xpc3QmIzgyMTc7IGFuZCAmIzgyMTY7YWx0JiM4MjE3Oy4gVGhlbiB3ZSBjYW4gcHV0 IHRoZXNlIHZhbHVlcyBpbnRvIHRoZSBuZWNlc3NhcnkgamF2YXNjcmlwdCBpbiB0aGUgPGNv ZGU+Z2FsbGVyeTwvY29kZT4gZm9ybSB0byBnZW5lcmF0ZSB0aGUgc2xpZGVzaG93OjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9 JnF1b3Q7c2xpZGVzaG93JnF1b3Q7IGlkPSZxdW90O3NsaWRlc2hvdzEmcXVvdDsmZ3Q7CiAm bHQ7aW1nIHNyYz0mcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzL3tpZCMxfS5q cGcmcXVvdDsKICAgICBhbHQ9JnF1b3Q7e2FsdCMxfSZxdW90OyB3aWR0aD0mcXVvdDt7d2lk dGgjMX0mcXVvdDsgaGVpZ2h0PSZxdW90O3toZWlnaHQjMX0mcXVvdDsgLyZndDsKJmx0Oy9k aXYmZ3Q7CjwvY29kZT4KPGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1 b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OwpteVNob3cxID0gbmV3IFNsaWRlc2hvdygm cXVvdDtzbGlkZXNob3cxJnF1b3Q7LAogIHsgaHU6ICZxdW90OyZsdDt0eHA6c2l0ZV91cmwg LyZndDtpbWFnZXMvJnF1b3Q7LAogICAgaW1hZ2VzOiBbe2ltZ2xpc3R9XSwKICAgIGNhcHRp b25zOiBbe2FsdH1dLAogICAgY2xhc3NlczogWyZxdW90O3ByZXYmcXVvdDssJnF1b3Q7bmV4 dCZxdW90OywmcXVvdDthY3RpdmUmcXVvdDtdLAogICAgdHlwZTogJnF1b3Q7ZmFkZSZxdW90 OwogIH0pOwombHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0 aGUgaW5pdGlhbCBwb3J0aW9uIChpbiB0aGUgZGl2IGFuZCBpbWcgdGFncykgdXNlcyB0aGUg JiM4MjE2OyMmIzgyMTc7IG5vdGF0aW9uIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGRpc3Bs YXkgb25lIGltYWdlIHRvICYjODIyMDtzdGFydCYjODIyMTsgdGhlIHNsaWRlc2hvdy4gSW4g dGhpcyBjYXNlIHdlJiM4MjE3O3JlIHVzaW5nIHRoZSBmaXJzdCBpbWFnZSBpbiB0aGUgbGlz dCwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSAjMSBmb3IgIzQyIGlmIHlvdSB3YW50ZWQgdG8g c2hvdyB0aGUgZm9ydHktc2Vjb25kIGltYWdlIGluc3RlYWQhIFRoZSBwYXJ0IGluIHRoZSBz Y3JpcHQgdGFnIHVzZXMgdGhlIGZ1bGwsIHF1b3RlZCBsaXN0cyBiZWNhdXNlIHRoYXQmIzgy MTc7cyB0aGUgZm9ybWF0IHRoZSBqYXZhc2NyaXB0IHJlcXVpcmVzLjwvcD4KCgk8aDMgaWQ9 ImVnNSI+RXhhbXBsZSA1OiBwYWdpbmF0aW9uPC9oMz4KCgk8cD5UbyBhZGQgcGFnaW5nIHRv IGEgZ2FsbGVyeSB5b3UgdXNlIHRoZSA8Y29kZT5saW1pdDwvY29kZT4gYXR0cmlidXRlIHRv IHNob3cgYSBudW1iZXIgb2YgdGh1bWJzIHBlciBwYWdlLiBGb3IgYSBwYWdlZCB0aHVtYnBv cCBnYWxsZXJ5IHRoYXQgc2hvd3MgZml2ZSB0aHVtYnMgcGVyIHBhZ2U6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxs c2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0 O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7 dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICBmb3JtPSZx dW90O2dhbGxlcnkmcXVvdDsgcGFnZWZvcm09JnF1b3Q7Z2FsbGVyeV9uYXYmcXVvdDsKICBs aW1pdD0mcXVvdDs1JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgJiM4MjE2 O2dhbGxlcnkmIzgyMTc7IGZvcm0gaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgaW4gPGEgaHJl Zj0iI2VnNCI+ZXhhbXBsZSA0PC9hPiwgd2hpbGUgeW91ciBnYWxsZXJ5X25hdiBmb3JtIG1p Z2h0IGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7dG90YWwmcXVvdDsmZ3Q7IyBvZiBwaWNz OiB7dG90YWxpbWFnZXN9Jmx0Oy9kaXYmZ3Q7CiAgICAge25hdmZpcnN0fSB7bmF2cHJldn0K ICAgICB7bmF2ZWFybGllcn0ge25hdnRoaXN9IHtuYXZsYXRlcn0KICAgICB7bmF2bmV4dH0g e25hdmxhc3R9CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1pZ2h0IHJlbmRlciBzb21ldGhp bmcgc2ltaWxhciB0byB0aGlzIGJlbG93IHRoZSB0aHVtYnM6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+IyBvZiBwaWNzOiAzOAogICAgIEZpcnN0ICZs dDsgMSAyIDMgNCA1IDYgNyA4ICZndDsgTGFzdAo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJl ZzYiPkV4YW1wbGUgNjogb25jaGFuZ2U8L2gzPgoKCTxwPklmIHlvdSB3YW50IHRvIHNpbXVs YXRlIG11bHRpcGxlIGdhbGxlcmllcyBmcm9tIG9uZSBzbWRfZ2FsbGVyeSB0YWcgeW91IGNh biB1c2UgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IHRvICYjODIyMDt3YXRjaCYjODIyMTsgZm9y IHdoZW4gY2VydGFpbiBhdHRyaWJ1dGVzIG9mIGltYWdlcyBjaGFuZ2UgYW5kIGluc2VydCBz cGVjaWFsIHRhZ3MgPGVtPm9ubHkgd2hlbiBzb21ldGhpbmcgY2hhbmdlczwvZW0+LiBJbiB0 aGlzIHJlZ2FyZCBpdCBhY3RzIGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lvbiBvZiA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIDxjb2RlPiZsdDt0eHA6 aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gdGFnLjwvcD4KCgk8cD5Zb3UgY2FuIHdhdGNoIHRo ZSB1c3VhbCB0aGluZ3MgbGlrZSA8Y29kZT5jYXRlZ29yeTwvY29kZT4sIDxjb2RlPmF1dGhv cjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNv ZGU+ZXh0PC9jb2RlPmVuc2lvbiBhbmQgc28gb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5 PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAg IG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgb25jaGFuZ2V3cmFw dGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUg cGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUg ZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntvbmNoYW5nZTpj YXRlZ29yeV90aXRsZX08L2NvZGU+IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGh1 bWIgbGlzdCBhbmQgYWxzbyB3aGVuIHRoZSBjYXRlZ29yeSBzd2l0Y2hlcyBmcm9tICYjODIx NjtiaXJkcyYjODIxNzsgdG8gJiM4MjE2O2Zpc2gmIzgyMTc7LiBUaHVzIHlvdXIgZ2FsbGVy eSBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJs fSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVj dH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCB3b3VsZCBtYWtlIHR3byBs aWdodGJveGFibGUgc2V0cyBvZiB0aHVtYm5haWxzIHdpdGggYSBoZWFkaW5nIDMgYWJvdmUg ZWFjaCBncm91cCBjb250YWluaW5nIHRoZSBjYXRlZ29yeSB0aXRsZS48L3A+CgoJPHA+Tm90 ZSB0aGF0IGlmIHlvdSBhZGQgPGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2Rl PiB0byB0aGUgc21kX2dhbGxlcnkgdGFnIHlvdSBjYW4gc2hvdyBqdXN0IG9uZSB0aHVtYm5h aWwgaW4gZWFjaCBncm91cCwgd2l0aCBoZWFkaW5ncyBhYm92ZSBlYWNoIHRodW1iLiBWaXNp dG9ycyBjbGlja2luZyB0aGUgdGh1bWIgd2lsbCBsYXVuY2ggdGhlIGxpZ2h0Ym94IGFuZCBi ZSBhYmxlIHRvIGJyb3dzZSB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuIElmIHlvdSB3YW50IHRv IG1ha2Ugc3VyZSB0aGF0IHRoZXkgY2FuIG9ubHkgYnJvd3NlIHNpeCBpbWFnZXMgaW4gZWFj aCBjYXRlZ29yeSBzZXQsIGFkZCA8Y29kZT5ncm91cGxpbWl0PSZxdW90OzYmcXVvdDs8L2Nv ZGU+LjwvcD4KCgk8cD5BbiBleHRyYSBwYWlyIG9mIHJlcGxhY2VtZW50IHRhZ3MgYXJlIGF2 YWlsYWJsZSBpZiB5b3Ugd2lzaCB0byB3cmFwIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMgdG8g Z3JvdXAgdGhlbS4gVXNlIHRoZSA8Y29kZT5ncm91cHRhZzwvY29kZT4gYW5kIDxjb2RlPmdy b3VwY2xhc3M8L2NvZGU+IGF0dHJpYnV0ZXMgdG8gc2V0IGl0IHVwLCB0aGVuIHR3byBuZXcg cmVwbGFjZW1lbnQgdGFncyBjYWxsZWQgPGNvZGU+Z3JvdXB0YWdzdGFydDwvY29kZT4gYW5k IDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5IGFyZSBj b25kaXRpb25hbCBhbmQgYXJlIG9ubHkgcG9wdWxhdGVkIHdoZW4gdGhlIGF0dHJpYnV0ZXMg eW91IGFyZSB3YXRjaGluZy9zb3J0aW5nIGJ5IGNoYW5nZS4gVXNlIGl0IGxpa2UgdGhpczo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNt ZF9nYWxsZXJ5IGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7CiAgICAgY2F0ZWdvcnk9 JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgICAg b25jaGFuZ2U9JnF1b3Q7Y2F0ZWdvcnlfdGl0bGUmcXVvdDsKICAgICBvbmNoYW5nZXdyYXB0 YWc9JnF1b3Q7aDMmcXVvdDsKICAgICBncm91cHRhZz0mcXVvdDtkaXYmcXVvdDsgZ3JvdXBj bGFzcz0mcXVvdDtib3gmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+e29uY2hhbmdlOmNhdGVnb3J5X3RpdGxlfQp7 Z3JvdXB0YWdzdGFydH0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7 bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owp7Z3Jv dXB0YWdlbmR9CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQgeW91IGNhbiBtb3ZlIHRo ZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiB0byBzdXJyb3VuZCB0aGUgPGNvZGU+b25j aGFuZ2U8L2NvZGU+ZCB0aXRsZSBpZiB5b3Ugd2lzaC48L3A+CgoJPGgzIGlkPSJlZzciPkV4 YW1wbGUgNzogc21kX2V2ZXJ5PC9oMz4KCgk8cD5Zb3UgY2FuIGFsc28gdHJpZ2dlciBhbiBv bmNoYW5nZSBldmVudCBldmVyeSBudGggaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVv dDtmcm9udHBhZ2UmcXVvdDsKICAgICBsaW1pdD0mcXVvdDs5JnF1b3Q7IHNvcnQ9JnF1b3Q7 cmFuZG9tJnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7c21kX2V2ZXJ5OjMmcXVvdDsKICAg ICBncm91cHRhZz0mcXVvdDt1bCZxdW90OyBncm91cGNsYXNzPSZxdW90O3NsaWRlc2hvdyZx dW90OyZndDsKe2dyb3VwdGFnc3RhcnR9CiAgICZsdDtsaSZndDsKICAgICAgJmx0O2EgaHJl Zj0mcXVvdDsmbHQ7dHhwOnBlcm1saW5rIGlkPSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7JnF1 b3Q7Jmd0OwogICAgICAgICAmbHQ7aW1nIHNyYz0mcXVvdDt7dGh1bWJ1cmx9JnF1b3Q7IGFs dD0mcXVvdDsmcXVvdDsgLyZndDsKICAgICAgICAgJmx0O3NwYW4mZ3Q7e3RpdGxlfSZsdDsv c3BhbiZndDsKICAgICAgJmx0Oy9hJmd0OwogICAmbHQ7L2xpJmd0Owp7Z3JvdXB0YWdlbmR9 CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzgi PkV4YW1wbGUgODogdW5jYXRlZ29yaXplZCBpbWFnZXM8L2gzPgoKCTxwPlNvbWV0aW1lcyB5 b3UgbWlnaHQgd2lzaCB0byBleHRyYWN0IGltYWdlcyB0aGF0IGRvIG5vdCBoYXZlIGEgY2F0 ZWdvcnkgYXNzaWduZWQuIFlvdSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCB2YWx1ZSA8Y29k ZT5TTURfRU1QVFk8L2NvZGU+IGZvciB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7 U01EX0VNUFRZLCBzaG9lcyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+WW91IGNh biBhbHNvIG5lZ2F0ZSB0aGUgbG9naWMgc28geW91IGNhbiBleHRyYWN0IGFsbCBpbWFnZXMg dGhhdCBoYXZlIHNvbWUgKGFueSkgY2F0ZWdvcnkgYXNzaWduZWQgdG8gdGhlbTo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxs ZXJ5IGNhdGVnb3J5PSZxdW90OyFTTURfRU1QVFkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJl PgoKCTxoMyBpZD0iZWc5Ij5FeGFtcGxlIDk6IHtvYmplY3R9IGFuZCBvYmplY3Rmb3JtPC9o Mz4KCgk8cD5UaGUgZGVmYXVsdCA8Y29kZT57b2JqZWN0fTwvY29kZT4gb3V0cHV0cyBhIHNp bXBsZSBoeXBlcmxpbmtlZCB0aHVtYm5haWwuIElmIHlvdSB3YW50IHNvbWV0aGluZyBhIGJp dCBtb3JlIGV4b3RpYywgbGlrZSBsYXVuY2hpbmcgYSBzaGFkb3dib3ggZWZmZWN0IGZyb20g YSBzaW5nbGUgdGh1bWJuYWlsIHRoYXQgYWxzbyBoYXMgdGhlIGNhcHRpb24gYmVuZWF0aCBp dCwgeW91IG5lZWQgdG8gY3VzdG9taXNlIHRoZSA8Y29kZT57b2JqZWN0fTwvY29kZT4gdmlh IHRoZSA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPiBhdHRyaWJ1dGUuIFB1dCBhIGxpc3Qgb2Yg aW1hZ2UgSURzIGluIHlvdXIgYXJ0aWNsZSBpbWFnZSBmaWVsZCBhbmQgdGhlbjo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxs ZXJ5IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xlX2lt YWdlJnF1b3Q7IHdyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7CiAgICAgY2xhc3M9JnF1b3Q7dGh1 bWJzJnF1b3Q7IG9iamVjdGZvcm09JnF1b3Q7bXlfb2JqJnF1b3Q7CiAgICAgY29tYm89JnF1 b3Q7YXJ0aWQ6P3RoaXNpZCZxdW90OyZndDsKICAmbHQ7YSByZWw9JnF1b3Q7c2hhZG93Ym94 W3thcnRpZH1dOwogICAgIG9wdGlvbnM9e2NvdW50ZXJUeXBlOiYjMzk7c2tpcCYjMzk7LAog ICAgIGNvbnRpbnVvdXM6dHJ1ZSwKICAgICBhbmltYXRlOmZhbHNlLAogICAgIGFuaW1TZXF1 ZW5jZTomIzM5O3N5bmMmIzM5O30mcXVvdDsKICAgICBocmVmPSZxdW90O3t1cmx9JnF1b3Q7 CiAgICAgdGl0bGU9JnF1b3Q7e2FsdH0mcXVvdDsmZ3Q7e29iamVjdH0mbHQ7L2EmZ3Q7CiZs dDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QW5kIGluIDxjb2Rl Pm15X29iajwvY29kZT4sIHlvdSBjb3VsZCBwdXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZx dW90OyAvJmd0OyZsdDticiAvJmd0O3t0aXRsZX0KPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGlj ZSBob3cgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgc3RpbGwgd29yayBpbiB0aGUgPGNvZGU+b2Jq ZWN0Zm9ybTwvY29kZT4/IFRoaXMgYWxsb3dzIHlvdSB0byBidWlsZCB1cCBhIGNvbXBsZXRl IGxheW91dCBmb3IgdGhlIGxhdW5jaGFibGUgdGh1bWJuYWlsIGFuZCBoYXZlIGl0IG9ubHkg cmVuZGVyZWQgb25jZSBvbiB0aGUgcGFnZS4gVGhlIHJlc3Qgb2YgdGhlIGNvbnRhaW5lciBp biB0aGlzIGV4YW1wbGUgcmVuZGVycyBhbGwgdGhlICYjODIyMDtoaWRkZW4mIzgyMjE7IGlt YWdlcyBpbiB0aGUgc2hhZG93Ym94IGdhbGxlcnkuPC9wPgoKCTxoMyBpZD0iZWcxMCI+RXhh bXBsZSAxMDogPGNvZGU+Y291bnRmb3JtPC9jb2RlPjwvaDM+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZx dW90O2FuaW1hbHMmcXVvdDsKICAgICBjb3VudGZvcm09JnF1b3Q7MTpnYWxfYTpzbWRfYWJv dmUsCiAgICAgICB7dG90YWxpbWFnZXN9OmdhbF9jLAogICAgICAgc21kX2V2ZXJ5OjM6IXt0 b3RhbGltYWdlc306Z2FsX2ImcXVvdDsKICAgICBjb3VudHBvcz0mcXVvdDtiZWxvdyZxdW90 OyZndDsKJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7 L3R4cDpzbWRfZ2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCA8Y29k ZT5jb3VudHBvczwvY29kZT4gaXMgc2V0IHRvIDxjb2RlPmJlbG93PC9jb2RlPiBpbiB0aGlz IGV4YW1wbGUgc28gYWxsIG91dHB1dCBhcHBlYXJzIDxlbT5hZnRlcjwvZW0+IHRoZSBnaXZl biBpbWFnZXMuIElmIHlvdSBtYWRlIHRoZSBmb2xsb3dpbmcgdGhyZWUgZm9ybXMsIHlvdXIg dGFnIHdvdWxkIHNwbGl0IHRoZSBnYWxsZXJ5IGludG8gJiM4MjE2O3Jvd3MmIzgyMTc7IG9m IDMgaW1hZ2VzOjwvcD4KCgk8cD5nYWxfYTogPGNvZGU+Jmx0O2RpdiBjbGFzcz0mcXVvdDtu ZXdyb3cmcXVvdDsmZ3Q7PC9jb2RlPjxiciAvPgpnYWxfYjogPGNvZGU+Jmx0Oy9kaXYmZ3Q7 Jmx0O2RpdiBjbGFzcz0mcXVvdDtuZXdyb3cmcXVvdDsmZ3Q7PC9jb2RlPjxiciAvPgpnYWxf YzogPGNvZGU+Jmx0Oy9kaXYmZ3Q7PC9jb2RlPjwvcD4KCgk8cD5CcmVha2luZyB0aGUgPGNv ZGU+Y291bnRmb3JtPC9jb2RlPiBhdHRyaWJ1dGUgZG93biBpbnRvIGl0cyBjb21wb25lbnRz LCB5b3UgY2FuIHNlZSB0aGF0OjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPjE6Z2FsX2E6c21k X2Fib3ZlPC9jb2RlPiBhZGRzIHRoZSAmIzgyMTY7bmV3cm93JiM4MjE3OyBkaXYgYWJvdmUg dGhlIGZpcnN0IGltYWdlPC9saT4KCQk8bGk+PGNvZGU+e3RvdGFsaW1hZ2VzfTpnYWxfYzwv Y29kZT4gYWRkcyB0aGUgY2xvc2luZyBkaXYgYmVsb3cgdGhlIGxhc3QgaW1hZ2Ugb24gdGhp cyBwYWdlPC9saT4KCQk8bGk+PGNvZGU+c21kX2V2ZXJ5OjM6IXt0b3RhbGltYWdlc306Z2Fs X2I8L2NvZGU+IGFkZHMgYSBjbG9zaW5nIGFuZCB0aGVuIGFuIG9wZW5pbmcgZGl2IGFmdGVy IGV2ZXJ5IDNyZCBpbWFnZSwgPGVtPmV4Y2VwdDwvZW0+IG9uIHRoZSBsYXN0IGltYWdlLiBJ ZiB3ZSBkaWRuJiM4MjE3O3QgcHV0IHRoZSBleGNlcHRpb24gaW4sIGFuZCB5b3UgaGFkIDEy IHRodW1ibmFpbHMgaW4geW91ciBnYWxsZXJ5ICh3aGljaCBpcyBkaXZpc2libGUgYnkgMyEp IHlvdSB3b3VsZCBzZWUgdGhlIGNvbnRlbnRzIG9mIGdhbDIgYWZ0ZXIgdGhlIGxhc3QgaW1h Z2UgYXMgd2VsbDwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0iZWcxMSI+RXhhbXBsZSAxMTogVXNp bmcgYW4gb25jaGFuZ2UgZm9ybTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgICAgY2F0ZWdvcnk9JnF1b3Q7Ymly ZHMsIGZpc2gmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZTpvY19m b3JtJnF1b3Q7Jmd0Owp7b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9CiZsdDthIGhyZWY9JnF1 b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsmZ3Q7 CntvYmplY3R9CiZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5hbmQgaW4gZm9ybSA8Y29kZT5vY19mb3JtPC9jb2RlPjo8L3A+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGlkPSZxdW90O3tj YXRlZ29yeX0mcXVvdDsKICAgY2xhc3M9JnF1b3Q7Y2F0ZWdvcnkmcXVvdDsmZ3Q7e2NhdGVn b3J5X3RpdGxlfSZsdDsvZGl2Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzEyIj5F eGFtcGxlIDEyOiBQb3J0Zm9saW8gbGFuZGluZyBwYWdlPC9oMz4KCgk8cD5IZXJlIHdlIHdp bGwgcmVuZGVyIGEgZ2FsbGVyeSBmb3IgZWFjaCBhcnRpc3Qgb24gYSBnYWxsZXJ5IHNpdGUu IEFycmFuZ2UgeW91ciBpbWFnZSBjYXRlZ29yaWVzIHNvIHRoZXkgYXJlIGNoaWxkcmVuIG9m IGEgcGFyZW50IGltYWdlIGNhdGVnb3J5OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPnBvcnRmb2xpbwogIHwtLSZndDsgbW9uZXQKICB8LS0mZ3Q7IHZh bl9nb2doCiAgfC0tJmd0OyB0dXJuZXIKICB8LS0mZ3Q7IGRhbGkKICB8LS0mZ3Q7IC4uLgo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhlbiBvZiBjb3Vyc2UsIHVwbG9hZCB5b3VyIGltYWdlcyBh bmQgYXNzaWduIHRoZW0gdG8gdGhlIGFwcHJvcHJpYXRlIGFydGlzdCBjYXRlZ29yeS48L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9n YWxsZXJ5CiAgICAgY2F0ZWdvcnk9JnF1b3Q7cG9ydGZvbGlvJnF1b3Q7IHN1YmxldmVsPSZx dW90OzEmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90Owog ICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEm cXVvdDsKICAgICBncm91cGxpbWl0PSZxdW90OzUmcXVvdDsgc29ydD0mcXVvdDtjYXRlZ29y eSBhc2MsIGRhdGUgZGVzYyZxdW90OwogICAgIG9iamVjdGZvcm09JnF1b3Q7ZnVsbF9saW5r JnF1b3Q7Jmd0Owp7b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9CiZsdDthIGhyZWY9JnF1b3Q7 e3VybH0mcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsmZ3Q7Cntv YmplY3R9CiZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5JbiBGb3JtIDxjb2RlPmZ1bGxfbGluazwvY29kZT46PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1 b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7c3BhbiZndDsKICAgU2VlICZsdDthIGhyZWY9JnF1 b3Q7L2FydGlzdHMve2NhdGVnb3J5fSZxdW90OyZndDthbGwgaW1hZ2VzIGJ5IHtjYXRlZ29y eV90aXRsZX0mbHQ7L2EmZ3Q7LgombHQ7L3NwYW4mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5U aGF0IHdpbGwgZ3JhYiBlYWNoIGFydGlzdCBjYXRlZ29yeSBhbmQgZGlzcGxheSBhIHRodW1i bmFpbCBvZiB0aGUgbW9zdCByZWNlbnQgd29yayBzdWJtaXR0ZWQgYnkgZWFjaCBhdXRob3Ig dW5kZXIgdGhlaXIgb3duIGhlYWRpbmcuIFdoZW4geW91IGNsaWNrIHRoZSB0aHVtYm5haWwg aXQgbGF1bmNoZXMgdGhlIGxpZ2h0Ym94IGdhbGxlcnkgYW5kIGFsbG93cyB5b3UgdG8gbmF2 aWdhdGUgdGhyb3VnaCB0aGUgZml2ZSBtb3N0IHJlY2VudCBwaWN0dXJlcyBzdWJtaXR0ZWQu IEJlbmVhdGggdGhlIHRodW1ibmFpbCBpcyBhIGxpbmsgdG8gYW4gaW5kaXZpZHVhbCBhcnRp Y2xlIHRoYXQgY291bGQgc2hvdyB0aGF0IGFydGlzdHMmIzgyMTc7cyBjb21wbGV0ZSB3b3Jr cyBhbmQgYSBiaW8uPC9wPgoKCTxoMiBpZD0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gyPgoK CTxwPkFsbCBhdmFpbGFibGUgdmVyc2lvbnMgYW5kIGNoYW5nZXMgYXJlIGxpc3RlZCBoZXJl LjwvcD4KCgk8cD48c3Ryb25nPkJldGE8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT4xNCBG ZWIgMDggfCAwLjEgfCBJbml0aWFsIHJlbGVhc2UgJiM4MjExOyBIYXBweSBWYWxlbnRpbmVz IERheSA6LSk8L2xpPgoJCTxsaT4xOSBGZWIgMDggfCAwLjIgfCBBZGRlZCB7Z2FsbGVyeWlk fSAodGhhbmtzIHJsb2FkZXJybykgYW5kIHNvbWUgc2tlbGV0b24gZG9jczwvbGk+Cgk8L3Vs PgoKCTxwPjxzdHJvbmc+T2ZmaWNpYWw8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT4xMSBN YXIgMDggfCAwLjMgfCBPZmZpY2lhbCBwdWJsaWMgcmVsZWFzZS4gRml4ZWQgc2lsbHkgZW1w dHkgZmllbGQgYnVnOyBhZGRlZCB7Y291bnRlcn0sIHtpbmRleH0gYW5kIHRoZSB0b3RhbHMg KGFsbCB0aGFua3MgamFrb2IpPC9saT4KCQk8bGk+MTUgTWFyIDA4IHwgMC4zMSB8IEZpeGVk IGEgY291cGxlIG9mIHVuZGVmaW5lZCBpbmRleGVzIGFuZCBhZGRlZCB7Y2F0ZWdvcnlfdGl0 bGV9ICh0aGFua3MganN0dWJicyk8L2xpPgoJCTxsaT4xNyBNYXIgMDggfCAwLjMyIHwgRml4 ZWQgYW5vdGhlciB1bmRlZmluZWQgaW5kZXggYW5kIHJlbW92ZWQgYm9ndXMgY2FsbCB0byBz bWRfbGliIChib3RoIHRoYW5rcyBzZWN1bmRhcik8L2xpPgoJCTxsaT4yMSBNYXIgMDggfCAw LjMzIHwgRGlkIHYwLjMxIHByb3Blcmx5LCBpbmNsdWRpbmcgdGFibGUgcHJlZml4ICh0aGFu a3MgbmFyZG8pPC9saT4KCQk8bGk+MDEgQXByIDA4IHwgMC4zNCB8IEZpeGVkIDxzcGFuIGNs YXNzPSJjYXBzIj5TUUw8L3NwYW4+IHBhcmVudGhlc2lzIGJ1ZyA7IGFkZGVkIGVtcHR5Y2xh c3MgYW5kIHttYXhpbWFnZXN9ICh0aGFua3MgdGhlX2dob3N0KTwvbGk+CgkJPGxpPjA4IEFw ciAwOCB8IDAuNCB8IENoYW5nZWQgdGh1bWIgdG8gYWxsb3cgdGh1bWIvZnVsbHNpemUgc3dh cHBpbmcgOyBBZGRlZCB0aHVtYmNoYW5nZSwgdGh1bWJjaGFuZ2V3cmFwdGFnLCB0aHVtYmNo YW5nZWNsYXNzLCB7dGh1bWJpbmRleH0sIHt0aHVtYmNvdW50ZXJ9IGFuZCB0aGUge2NoYW5n ZWQ6Kn0gcmVwbGFjZW1lbnQgdGFncyAodGhhbmtzIGZ1bHMpPC9saT4KCQk8bGk+MjYgTWF5 IDA4IHwgMC40MSB8IEZpeGVkIERpcmVjdG9yeSBzZXBhcmF0b3IgKHRoYW5rcyBjdWRhKSA7 IGFkZGVkIHJhdyBwYWdlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cyB0byB0aGUg bmF2IHJlcGxhY2VtZW50IGFycmF5IGFuZCBtYWRlIHRoZSBuYXYgYXJyYXkgYXZhaWxhYmxl IGluIHRoZSBzdGFuZGFyZCByZXBsYWNlbWVudHMgYXJyYXkgKHRoYW5rcyB2aXN1YWxwZW9w bGUpPC9saT4KCQk8bGk+MjcgTWF5IDA4IHwgMC40MiB8IEFkZGVkIHBhZ2Vwb3MgYW5kIG1h ZGUgcGFnZSBibG9ja3MgaW5kZXBlbmRlbnQgb2YgdGh1bWIgYmxvY2sgKHRoYW5rcyBkdWNo YW1wKTwvbGk+CgkJPGxpPjEwIEp1biAwOCB8IDAuNDMgfCBGaXhlZCBzb3J0PSYjODIyMDtm aXhlZCYjODIyMTsgd2hlbiB1c2luZyBsaW1pdCAodGhhbmtzIHJvYmluNzQ2KSA7IGFkZGVk IHBlci1ncm91cCBvbmNoYW5nZSB3cmFwcGluZyBhbmQgYWxsb3dlZCBmaXhlZCBzb3J0aW5n IG9mIGNhdGVnb3JpZXMgKHRoYW5rcyBqc3R1YmJzKSA7IGRlcHJlY2F0ZWQgdGh1bWJjaGFu Z2UqIGFuZCByZW5hbWVkIGFzIG9uY2hhbmdlKiA7IGZpeGVkICRpZHggY291bnRlciBwcm9i bGVtPC9saT4KCQk8bGk+MTAgSnVuIDA4IHwgMC40NCB8IEF0dGVtcHQgIzIgYXQgcGVyLWdy b3VwIG9uY2hhbmdlIHdyYXBwaW5nICh0aGFua3MgYWdhaW4ganN0dWJicyk8L2xpPgoJCTxs aT4xNCBKdWwgMDggfCAwLjQ1IHwgRml4ZWQgbGFjayBvZiBvdXRwdXQgd2hlbiBub3QgdXNp bmcgY2F0ZWdvcmllcyAodGhhbmtzIHJvYmluNzQ2KTwvbGk+CgkJPGxpPjE2IE5vdiAwOCB8 IDAuNDYgfCBBZGRlZCBjb2xsYXRlZGVsaW0gKHRoYW5rcyBjdXJpb3V6KSA7IGZpeGVkIChJ IGhvcGUpIHRoZSBjYXRlZ29yeSAvIGlkIGJ1ZyBmcm9tIDAuNDQgYW5kIDAuNDUgKHRoYW5r cyByb2Jpbjc0Ni9uYXJkbyk8L2xpPgoJCTxsaT4xMyBGZWIgMDkgfCAwLjUgfCBSZXF1aXJl cyBzbWRfbGliIDsgYWRkZWQgPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc3VwcG9y dCAodGhhbmtzIG5ldC1jYXJ2ZXIpIDsgYWRkZWQgc3VwcG9ydCBmb3IgZGlzcGxheWluZyB1 bmNhdGVnb3Jpc2VkIGltYWdlcyAodGhhbmtzIHh6YW1lbikgOyAmIzgyMTY7PyYjODIxNzsg dmFycyBleHBhbmRlZCB0byBsaW5rIC8gaW1hZ2UgLyBmaWxlIC8gPGNvZGU+Jmx0O3R4cDp2 YXJpYWJsZSAvJmd0OzwvY29kZT4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IHZhcmlhYmxlIDsgbmV3IGF0dHJpYnV0ZXM6IDxjb2RlPmVzY2FwZTwvY29kZT4sIDxjb2Rl Pmh0bWxfaWQ8L2NvZGU+LCA8Y29kZT5mb3JtYXQ8L2NvZGU+LCA8Y29kZT5nbXQ8L2NvZGU+ LCA8Y29kZT5sYW5nPC9jb2RlPiAodGhhbmtzIG1hbmlxdWkpLCA8Y29kZT5zdHJpY3RmaWVs ZHM8L2NvZGU+IDsgaW1wcm92ZWQgPGNvZGU+e29iamVjdH08L2NvZGU+IHN1cHBvcnQgYW5k IGFkZGVkIDxjb2RlPm9iamVjdGZvcm08L2NvZGU+ICh0aGFua3MgdHllL3J2dHVybmFnZSkg OyA8Y29kZT57dGl0bGV9PC9jb2RlPiA9PSA8Y29kZT57Y2FwdGlvbn08L2NvZGU+IGF0IGxh c3QhIDsgcmVtb3ZlZCA8Y29kZT50aHVtYmNoYW5nZTwvY29kZT4qIGF0dHJpYnV0ZXMgOyBp bXByb3ZlZCBzdXBwb3J0IGZvciB0YWJsZSBleHRlbnNpb25zICh2aWEgdGhlIDxjb2RlPmNv bHVtbnM8L2NvZGU+IGF0dHJpYnV0ZTogdGhhbmtzIFJlZEZveCkgOyBhZGRlZCA8Y29kZT5z bWRfZXZlcnk8L2NvZGU+IHN5bnRheCB0byA8Y29kZT5vbmNoYW5nZTwvY29kZT4gKHRoYW5r cyBqYWtvYikgOyBmaXhlZCBvZmZzZXQgYnVnICh0aGFua3MgZmVyYWdub2xpKTwvbGk+CgkJ PGxpPjAxIE1hciAwOSB8IDAuNTEgfCBBZGRlZCA8Y29kZT5jb3VudGZvcm08L2NvZGU+IGFu ZCA8Y29kZT5jb3VudHBvczwvY29kZT4gOyBmaXhlZCA8Y29kZT57aGFzdGh1bWJ9PC9jb2Rl PiB3YXJuaW5nPC9saT4KCQk8bGk+MTYgTm92IDA5IHwgMC41MiB8IDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IDQuMi4wIG9ubHkgOyBhZGRlZCBkYXRhYmFzZSB0aHVtYm5haWwg aGVpZ2h0IGFuZCB3aWR0aCBzdXBwb3J0IDsgYWRkZWQgPGNvZGU+YXNwZWN0PC9jb2RlPiwg PGNvZGU+ZGltZW5zaW9uczwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPmV4 dGVuc2lvbjwvY29kZT4gYW5kIDxjb2RlPmltZ3NpemU8L2NvZGU+IGF0dHJpYnV0ZXMgOyBm aXhlZCBxdW90ZSBwYXJzaW5nIGluIDxjb2RlPmVzY2FwZTwvY29kZT4gYXR0cmlidXRlIGFu ZCB3YXJuaW5nIHdoZW4gdXNpbmcgPGNvZGU+Zml4ZWQ8L2NvZGU+IHNvcnRpbmcgKGJvdGgg dGhhbmtzIG1hbmlxdWkpPC9saT4KCQk8bGk+MDEgSmFuIDEwIHwgMC41MyB8IEFkZGVkIG9u Y2hhbmdlIGZvcm0gY2FwYWJpbGl0eSAodGhhbmtzIE1hdHREKTwvbGk+CgkJPGxpPjAxIEZl YiAxMCB8IDAuNTQgfCBNdWx0aXBsZSBpbWFnZXMgbm90IGRpc3BsYXllZCBpZiBtdWx0aXBs ZSBjYXRlZ29yaWVzIGV4aXN0IHdpdGggdGhlIHNhbWUgbmFtZSBhbmQgZGlmZmVyZW50IHRp dGxlPC9saT4KCQk8bGk+MDEgTWFyIDEwIHwgMC41NSB8IEFkZGVkIDxjb2RlPm5hbWU8L2Nv ZGU+IGZpbHRlcmluZzwvbGk+CgkJPGxpPjEwIE1hciAxMCB8IDAuNiB8IFNpbXBsaWZpZWQg cXVlcnkgdG8gZWxpbWluYXRlIGVycm9ycyB3aXRoIHVuY2F0ZWdvcmlzZWQgaW1hZ2VzIGJl aW5nIG9taXR0ZWQgZnJvbSB0aGUgcmVzdWx0czsgYWxsb3dlZCBjb3VudGZvcm0gcmFuZ2Vz IDsgYWRkZWQgPGNvZGU+Z3JvdXBsaW1pdDwvY29kZT48L2xpPgoJCTxsaT4wMyBBcHIgMTAg fCAwLjYxIHwgQWRkZWQgPGNvZGU+YnJlYWtjbGFzczwvY29kZT4gKHRoYW5rcyB0aGVfZ2hv c3QpPC9saT4KCQk8bGk+MDYgQXByIDEwIHwgMC42MiB8IEZpeGVkIDxjb2RlPntvbmNoYW5n ZTpjYXRlZ29yeV90aXRsZX08L2NvZGU+IGFuZCA8Y29kZT57Z3JvdXB0YWdlbmR9PC9jb2Rl PiAodGhhbmtzIGphbik8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNyZWRpdHMiPkNyZWRpdHM8 L2gyPgoKCTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0IGhhdmUgZXhpc3RlZCB3aXRo b3V0IHRoZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdldHpsbWF5ci4gSGlzIHdldF9mb3Jf ZWFjaF9pbWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0YW5kcyBv biB0aGUgc2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9sbHMgaW4gYSBzb3VwZWQgdXAg dmVyc2lvbiBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24gZW5naW5lIGZyb20gc21kX3Ns aW1ib3guIFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQgdG8gYW55 b25lIHdobyBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1lIG9yIHRo ZSBzbWRfc2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNztyZSBhbGwgbWFydmVsbG91cy48L3A+ Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBl PSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAg Y29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXci LCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21k X2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0 ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFy Z2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywg I3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRpb246IG5v bmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7 fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7 IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7 IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250 OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2Vu dGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsg cGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fu cy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDogYm9sZCAxMnB4 IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHgg MCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxp bmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7 IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3Jt OiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgY29s b3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjox cHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxp Z246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVs cCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVs cCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5yZXF1aXJlZCB7 Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9 CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoq KiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czo0OiJjb2RlIjtzOjM3NTc1OiJyZXF1aXJl X3BsdWdpbignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2Fs bExhbmc7DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcs DQoJJ25hdmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSdu YXZuZXh0JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQ KCdzbWRfZ2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9u IHNtZF9nYWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0 aGlzYXJ0aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEw bl9sYW5ndWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJh eSgNCgkJJ2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVs aW0nID0+ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRz JyA9PiAnMCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdj b3VudHBvcycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ25hbWUnID0+ICcnLA0K CQknY2F0ZWdvcnknID0+ICcnLA0KCQknYXNwZWN0JyA9PiAnJywNCgkJJ2F1dGhvcicgPT4g JycsDQoJCSdkaW1lbnNpb25zJyA9PiAnJywNCgkJJ2V4dGVuc2lvbicgPT4gJycsDQoJCSdk aXJlY3RvcnknID0+ICcnLA0KCQknbWF0Y2gnID0+ICcnLA0KCQknc3VibGV2ZWwnID0+ICcw JywNCgkJJ2VzY2FwZScgPT4gJ2FsdCwgdGl0bGUsIGNhcHRpb24nLA0KCQknc29ydCcgPT4g JycsDQoJCSdvZmZzZXQnID0+ICcwJywNCgkJJ2xpbWl0JyA9PiAnMCcsDQoJCSdtYXhsaW1p dCcgPT4gJzk5OTk5JywNCgkJJ2dyb3VwbGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVtYmxp bWl0JyA9PiAnOTk5OTknLA0KCQkndGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1iJyA9 PiAnMDoxJywNCgkJJ3RodW1ic2l6ZScgPT4gJycsDQoJCSdpbWdzaXplJyA9PiAnJywNCgkJ J29uY2hhbmdlJyA9PiAnY2F0ZWdvcnknLA0KCQknb25jaGFuZ2V3cmFwdGFnJyA9PiAnJywN CgkJJ29uY2hhbmdlY2xhc3MnID0+ICcnLA0KCQknb2JqZWN0Zm9ybScgPT4gJycsDQoJCSdn cm91cHRhZycgPT4gJycsDQoJCSdncm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ICcn LA0KCQknZm9ybWF0JyA9PiAkZGF0ZWZvcm1hdCwNCgkJJ2dtdCcgPT4gJycsDQoJCSdsYW5n JyA9PiAnJywNCgkJJ2NvbGxhdGUnID0+ICcnLA0KCQknY29tYm8nID0+ICcnLA0KCQkncGFn aW5nJyA9PiAnMCcsDQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSdwYWdlcG9zJyA9PiAnYmVs b3cnLA0KCQknbmF2d3JhcHRhZycgPT4gJ3VsJywNCgkJJ25hdmJyZWFrJyA9PiAnbGknLA0K CQknbmF2Y2xhc3MnID0+ICdzbWRfZ2FsbGVyeV9uYXYnLA0KCQknZW1wdHljbGFzcycgPT4g J2VtcHR5JywNCgkJJ2dhbGxlcnlpZCcgPT4gJz80OjYnLA0KCQknd3JhcHRhZycgPT4gJycs DQoJCSdodG1sX2lkJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNzJyA9PiAn JywNCgkJJ2JyZWFrY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0 cykpOw0KDQoJLy8gQ2F0ZWdvcnkgcmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3Bl Y2lmaWVkIG9yIG5vdC4NCgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBs b2dpYyBzbyBpdCBoYXMgdG8gYmUgZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAo ZW1wdHkoJGNhdGVnb3J5KSAmJiBlbXB0eSgkaWQpICYmIGVtcHR5KCRuYW1lKSkgPyBmYWxz ZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVnb3J5KSA/IGRvU2xhc2goJGNh dGVnb3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYyddOiAnJyk7DQoJJHNvcnQgPSAo JHNvcnQpID8gJHNvcnQgOiAoICgkaWQpID8gJ2lkJyA6ICdjYXRlZ29yeScgKTsNCg0KCS8v ICoqIExPT0tVUCBUQUJMRVMNCgkvLyAkZmllbGRNYXAgaG9sZHMgZGF0YWJhc2UgY29sdW1u IGFzIGtleSwgYW5kIHJlcGxhY2VtZW50IGlkZW50aWZpZXIgYXMgdmFsdWUuDQoJLy8gQWRk aXRpb25hbCBjb2xzIGNvcGllZCB0byAkZXh0cmFNYXAgZm9yIGl0ZXJhdGlvbiB3aGlsZSBj cmVhdGluZyByZXBsYWNlbWVudHMuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlm IHZhbHVlIGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2Fs bHMvYXJyYXkgcmVmcy4NCgkkZmllbGRNYXAgPSBhcnJheSgpOw0KCSRleHRyYU1hcCA9IGFy cmF5KCk7DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5hbWUiLCAiaWQiLCAiYWx0IiwgImNhcHRp b24iLCAiY2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRhdGUiLCAiZXh0IiwgInc6d2lkdGgiLCAi aDpoZWlnaHQiLCAidGh1bWJfdzp0aHVtYl93aWR0aCIsICJ0aHVtYl9oOnRodW1iX2hlaWdo dCIsICJ0aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkkbWxwRmllbGRzID0gYXJyYXkoImFsdCIs ICJjYXB0aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUgTUxQIGNvbHVtbiBuYW1lcywg c2luY2UgdXNpbmcgZ2V0Um93cygpIGxhdGVyIGRvZXMgbm90LiBDYXRlZ29yeSB0aXRsZSBh bHNvIGhhcyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkkdGhpc2xhbmcgPSAoaXNzZXQoJGwxMG5f bGFuZ3VhZ2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSA6IExBTkc7DQoJ JGRmbHRfdGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0KCSRjb2x1bW5zID0gZG9fbGlzdCgkY29s dW1ucyk7DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJGNvcmVDb2xzLCAkY29sdW1ucykgYXMg JGNvbGluZm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xpc3QoJGNvbGluZm8sICI6Iik7DQoJCSRj b2x0YmwgPSBkb19saXN0KCRjb2xiaXRbMF0sICIuIik7DQoNCgkJaWYgKCRjb2xiaXRbMF0g PT0gJycpIGNvbnRpbnVlOw0KDQoJCWlmIChjb3VudCgkY29sdGJsKSA+IDEpIHsNCgkJCSR0 YmwgPSAkY29sdGJsWzBdOw0KCQkJJGNvbG5hbWUgPSAkY29sdGJsWzFdOw0KCQl9IGVsc2Ug ew0KCQkJJHRibCA9ICRkZmx0X3RibDsNCgkJCSRjb2xuYW1lID0gJGNvbHRibFswXTsNCgkJ fQ0KCQkkY29saWQgPSAoY291bnQoJGNvbGJpdCkgPiAxKSA/ICRjb2xiaXRbMV0gOiAkY29s bmFtZTsNCgkJJGZpZWxkTWFwWygoJHRibCk/JHRibC4nLic6JycpLiggKGlzc2V0KCRsMTBu X2xhbmd1YWdlWydsb25nJ10pICYmIGluX2FycmF5KCRjb2xuYW1lLCAkbWxwRmllbGRzKSkg PyBfbDEwbl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5hbWUsICR0aGlzbGFuZykuICcgQVMgJy4k Y29sbmFtZSAgOiAkY29sbmFtZSApXSA9ICRjb2xpZDsNCgkJaWYgKCFpbl9hcnJheSgkY29s aW5mbywgJGNvcmVDb2xzKSkgew0KCQkJJGV4dHJhTWFwWyRjb2xuYW1lXSA9ICRjb2xpZDsN CgkJfQ0KCX0NCgkkZmllbGRNYXAgPSBhcnJheV91bmlxdWUoJGZpZWxkTWFwKTsNCg0KCS8v IEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQN CgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0p Ow0KCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7 YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6ICR0aGluZzsNCgkkb2JqZWN0 Zm9ybSA9IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8gJycgOiBmZXRjaF9mb3JtKCRvYmplY3Rm b3JtKTsNCg0KCS8vIENvdW50aW5nDQoJJGNvdW50UG9zQWxsb3dlZCA9IGFycmF5KCJhYm92 ZSIsICJiZWxvdyIpOw0KCSRjb3VudHBvc25zID0gYXJyYXkoKTsNCgkkY291bnRpbmcgPSAw Ow0KCWlmICgkY291bnRmb3JtKSB7DQoJCSRjb3VudGluZyA9IDE7DQoJCSRjb3VudGZvcm0g PSBkb19saXN0KCRjb3VudGZvcm0sICRkZWxpbSk7DQoJCSRjb3VudHBvcyA9IHN0cl9yZXBs YWNlKCdzbWRfJywgJycsICRjb3VudHBvcyk7IC8vIEZvciBjb252ZW5pZW5jZQ0KCQkkY291 bnRwb3MgPSBkb19saXN0KCRjb3VudHBvcywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvdW50 cG9zIGFzICRjb3VudGl0ZW0pIHsNCgkJCSRjb3VudHBvc25zW10gPSAoaW5fYXJyYXkoJGNv dW50aXRlbSwgJGNvdW50UG9zQWxsb3dlZCkpID8gJGNvdW50aXRlbSA6ICRjb3VudFBvc0Fs bG93ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBQYWdpbmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dl ZCA9IGFycmF5KCJiZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdlb3V0ID0gYXJyYXkoKTsNCglp ZiAoJHBhZ2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkkcGFnZWZvcm0gPSBmZXRjaF9m b3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gc3RyX3JlcGxhY2UoJ3NtZF8nLCAnJywg JHBhZ2Vwb3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xpc3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJ CWZvcmVhY2ggKCRwYWdlcG9zIGFzICRwYWdlaXRlbSkgew0KCQkJJHBhZ2VvdXRbXSA9IChp bl9hcnJheSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxsb3dlZCkpID8gJHBhZ2VpdGVtIDogJHBh Z2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9u DQoJJG9uY2hhbmdlID0gZG9fbGlzdCgkb25jaGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdl ID0gKCRvbmNoYW5nZVswXSA9PSAiIikgPyBhcnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNl dE9wdHMgPSAkcmVzZXRGb3JtcyA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJG9uY2hhbmdlIGFz ICRyZXNldE9wdCkgew0KCQkkcmVzZXRQYXJ0cyA9IGRvX2xpc3QoJHJlc2V0T3B0LCAkcGFy YW1kZWxpbSk7DQoNCgkJaWYgKGNvdW50KCRyZXNldFBhcnRzKSA+IDEpIHsNCgkJCWlmICgk cmVzZXRQYXJ0c1swXSA9PSAnc21kX2V2ZXJ5Jykgew0KCQkJCSRyZXNldE9wdHNbJHJlc2V0 UGFydHNbMF0uJHBhcmFtZGVsaW0uJHJlc2V0UGFydHNbMV1dID0gIiI7DQoJCQl9IGVsc2Ug ew0KCQkJCSRyZXNldEZvcm1zWyRyZXNldFBhcnRzWzBdXSA9ICRyZXNldFBhcnRzWzFdOw0K CQkJCSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF1dID0gIiI7DQoJCQl9DQoJCX0gZWxzZSB7 DQoJCQkkcmVzZXRPcHRzWyRyZXNldFBhcnRzWzBdXSA9ICIiOw0KCQl9DQoJfQ0KDQoJLy8g RXNjYXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8gMCA6IDE7DQoJJGVzY2FwZXMg PSBkb19saXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFjaCAoJGVzY2FwZXMgYXMgJGlk eCA9PiAkdmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJCQl1bnNldCgkZXNjYXBlc1sk aWR4XSk7DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBpZGVudGlmaWVyIGlzIHVzZWQg Zm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1ibmFpbCBwYWdlIGxpbmtzDQoJ JGdhbGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcnIHx8IHN1YnN0cigkZ2FsbGVy eWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEgKGZhaXJseSBsaWtlbHkpIHVu aXF1ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJCSRnYWxsVG1wID0gbWQ1KCRj YXRlZ29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1YmxldmVsLiRzb3J0LiRsaW1pdC4k bWF4bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNraXApID0gZXhwbG9kZSgiOiIs IHN1YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4gPSAgKGVtcHR5KCRnYWxsTGVu KSkgPyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0gIChlbXB0eSgkZ2FsbFNraXAp KSA/ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQg PCAkZ2FsbExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRnYWxsU2tpcCkgJSBzdHJsZW4o JGdhbGxUbXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRtcFskaWR4XTsNCgkJfQ0KCX0g ZWxzZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0NCgkkZ2FsbElEID0gInNtZF9n bHJ5XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5jcmVkaWJseSB1bmxpa2VseSkg bmFtZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUgdmFyaWFibGVzIGZyb20gdGhl IHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxpbSBoZXJlIG9yIHRoZSBk ZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0gZG9fbGlzdCgkdGh1bWIsICI6 Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsNCgkJJGZ1bGxtb2QgPSAoJHRo dW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAidCI7DQoJfSBl bHNlIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0K CQkkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCX0NCg0K CS8vIFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRpZmZlcnMgaWYgdXNpbmcgZGly ZWN0b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXkoKTsNCglpZiAoJGRpcmVjdG9y eSkgew0KCQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9yeSwgMCwgJHN1YmxldmVs LCAkbWF0Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2Vz LCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGlt aXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAoJGxpbWl0PT0wKSA/ICRt YXhsaW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRmaXhlZE9y ZGVyID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBlbHNlIHsNCgkJLy8gUHJvY2Vz cyBjYXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1eCBvZiB0aGUgd2hlcmUgY2xh dXNlLg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0cyBBTkQgIWNhdHMgQU5EICFJ RHMNCgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoNCgkJ Ly8gU3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlzdCB3aXRoIHF1b3RlcyBhbmQg bWFrZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0gKCRzdWJsZXZlbCkgPyAiaW1h Z2U6Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMsICRpZGV4YykgPSBzbWRfZG9M aXN0KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJG5hbWlu YywgJG5hbWV4YykgPSBzbWRfZG9MaXN0KCRuYW1lLCBmYWxzZSwgJycsIGZhbHNlLCAkZGVs aW0sICRzcGMpOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMpID0gc21kX2RvTGlzdCgkY2F0 ZWdvcnksIGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGltLCAkc3BjKTsNCgkJaWYgKCRp ZGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBs b2RlKCIsIiwgJGlkaW5jKS4nKSc7DQoJCX0NCgkJaWYgKCRuYW1pbmMpIHsNCgkJCSRuYW1s aXN0ID0gYXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAnZXhhY3QnID0+IGFycmF5KCkpOw0K CQkJZm9yZWFjaCAoJG5hbWluYyBhcyAkdGhlTmFtZSkgew0KCQkJCSRuYW1lYml0cyA9IGRv X2xpc3QoJHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJCQkkbmFtZWJpdHNbMV0gPSAoaXNz ZXQoJG5hbWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRuYW1lYml0c1sxXSwgJG5h bWxpc3QpKSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7DQoJCQkJJG5hbWxpc3RbJG5hbWVi aXRzWzFdXVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0KCQkJaWYgKCRuYW1saXN0WydleGFj dCddKSB7DQoJCQkJJGNsYXVzZU9SW10gPSBQRlguInR4cF9pbWFnZS5uYW1lIElOICgnIi5p bXBsb2RlKCInLCciLCAkbmFtbGlzdFsnZXhhY3QnXSkuIicpIjsNCgkJCX0NCgkJCWZvcmVh Y2ggKCRuYW1saXN0WydyZWdleCddIGFzICRyZSkgew0KCQkJCSRjbGF1c2VPUltdID0gUEZY LiJ0eHBfaW1hZ2UubmFtZSBSRUdFWFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0N CgkJfQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFn ZS5jYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJCWlm ICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAoJy5pbXBsb2RlKCIg T1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUoIiBB TkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgJy5QRlgu J3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRleGMpLicp JyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFn ZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDogJyc7DQoNCgkJaWYg KCRuYW1leGMpIHsNCgkJCSRuYW1saXN0ID0gYXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAn ZXhhY3QnID0+IGFycmF5KCkpOw0KCQkJZm9yZWFjaCAoJG5hbWV4YyBhcyAkdGhlTmFtZSkg ew0KCQkJCSRuYW1lYml0cyA9IGRvX2xpc3QoJHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJ CQkkbmFtZWJpdHNbMV0gPSAoaXNzZXQoJG5hbWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhp c3RzKCRuYW1lYml0c1sxXSwgJG5hbWxpc3QpKSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7 DQoJCQkJJG5hbWxpc3RbJG5hbWViaXRzWzFdXVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0K CQkJaWYgKCRuYW1saXN0WydleGFjdCddKSB7DQoJCQkJJGNsYXVzZSAuPSAiIEFORCAiLlBG WC4idHhwX2ltYWdlLm5hbWUgTk9UIElOICgnIi5pbXBsb2RlKCInLCciLCAkbmFtbGlzdFsn ZXhhY3QnXSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2ggKCRuYW1saXN0WydyZWdleCddIGFz ICRyZSkgew0KCQkJCSRjbGF1c2UgLj0gIiBBTkQgIi5QRlguInR4cF9pbWFnZS5uYW1lIE5P VCBSRUdFWFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJfQ0KDQoJCS8vIElm IGEgY2F0ZWdvcnkvaWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3Ro aW5nLCB1c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3QuDQoJCS8v IFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcg b2YgbWF0Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMgbm90aGluZy4NCgkJ aWYgKCRjbGF1c2UgPT0gIjE9MSIgJiYgJGF0dGVtcHRNYXRjaCkgew0KCSAgCQkkY2xhdXNl ID0gUEZYLid0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAic21kXycgLm10X3JhbmQoKS4gJyInOw0K CQl9DQoNCgkJJGNsYXVzZSA9ICcoJy5zdHJfcmVwbGFjZSgnU01EX0VNUFRZJywgJycsICRj bGF1c2UpLicpJzsNCg0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAiKysgSU5DTFVE RUQvRVhDTFVERUQgSURzLCBOQU1FcyBBTkQgQ0FUcyArKyI7DQoJCQlpZiAoJGlkaW5jKSBk bXAoJGlkaW5jKTsNCgkJCWlmICgkaWRleGMpIGRtcCgkaWRleGMpOw0KCQkJaWYgKCRuYW1p bmMpIGRtcCgkbmFtaW5jKTsNCgkJCWlmICgkbmFtZXhjKSBkbXAoJG5hbWV4Yyk7DQoJCQlp ZiAoJGNhdGluYykgZG1wKCRjYXRpbmMpOw0KCQkJaWYgKCRjYXRleGMpIGRtcCgkY2F0ZXhj KTsNCgkJfQ0KDQoJCS8vIEZpbHRlciBieSBhc3BlY3QgcmF0aW8NCgkJaWYgKCRhc3BlY3Qp IHsNCgkJCSRhc3BlY3RzID0gZG9fbGlzdCgkYXNwZWN0LCAkZGVsaW0pOw0KDQoJCQkvLyBD b21wYXJlIGZ1bGxzaXplIG9yIHRodW1ibmFpbCBhc3BlY3QgcmF0aW9zDQoJCQkkZmxkbW9k ID0gKCRmdWxsbW9kKSA9PSAndCcgPyAndGh1bWJfJyA6ICcnOw0KCQkJJHdmbGQgPSBQRlgu J3R4cF9pbWFnZS4nLiRmbGRtb2QuJ3cnOw0KCQkJJGhmbGQgPSBQRlguJ3R4cF9pbWFnZS4n LiRmbGRtb2QuJ2gnOw0KDQoJCQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAo JGFzcGVjdHMgYXMgJHJhdGlvKSB7DQoJCQkJc3dpdGNoKCRyYXRpbykgew0KCQkJCQljYXNl ICdwb3J0cmFpdCc6DQoJCQkJCQkkY2xhdXNlT1JbXSA9ICRoZmxkLiAnID4gJy4gJHdmbGQ7 DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAnbGFuZHNjYXBlJzoNCgkJCQkJCSRjbGF1c2VP UltdID0gJHdmbGQuICcgPiAnLiAkaGZsZDsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICdz cXVhcmUnOg0KCQkJCQkJJGNsYXVzZU9SW10gPSAkaGZsZC4gJyA9ICcuICR3ZmxkOw0KCQkJ CQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJ CQkJJGNsYXVzZSAuPSAnIEFORCAnLiR3ZmxkLicgPiAwIEFORCAnLiRoZmxkLicgPiAwIEFO RCAoJy5pbXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQkJfQ0KCQl9DQoNCgkJ Ly8gRmlsdGVyIGJ5IGF1dGhvcg0KCQlpZiAoJGF1dGhvcikgew0KCQkJJGF1dGhvcnMgPSBk b19saXN0KCRhdXRob3IsICRkZWxpbSk7DQoJCQkkY2xhdXNlIC49ICIgQU5EICIgLiBQRlgu InR4cF9pbWFnZS5hdXRob3IgSU4gKCciLmltcGxvZGUoIicsJyIsICRhdXRob3JzKS4iJyki Ow0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGV4dGVuc2lvbg0KCQlpZiAoJGV4dGVuc2lvbikg ew0KCQkJJGV4dGVuc2lvbnMgPSBkb19saXN0KCRleHRlbnNpb24sICRkZWxpbSk7DQoJCQlm b3JlYWNoICgkZXh0ZW5zaW9ucyBhcyAkaWR4ID0+ICRleHQpIHsNCgkJCQkkZXh0ZW5zaW9u c1skaWR4XSA9ICIuIi4kZXh0Ow0KCQkJfQ0KCQkJJGNsYXVzZSAuPSAiIEFORCAiIC4gUEZY LiJ0eHBfaW1hZ2UuZXh0IElOICgnIi5pbXBsb2RlKCInLCciLCAkZXh0ZW5zaW9ucykuIicp IjsNCgkJfQ0KDQoJCS8vIEZpbHRlciBieSBkaW1lbnNpb25zDQoJCWlmICgkZGltZW5zaW9u cykgew0KCQkJJGRpbUFsbG93ID0gYXJyYXkoJz0nLCAnPicsICc8JywgJz49JywgJzw9Jyk7 DQoJCQkkZGltcyA9IGRvX2xpc3QoJGRpbWVuc2lvbnMsICRkZWxpbSk7DQoNCgkJCS8vIENv bXBhcmUgZnVsbHNpemUgb3IgdGh1bWJuYWlsIGFzcGVjdCByYXRpb3MNCgkJCSRmbGRtb2Qg PSAoJGZ1bGxtb2QpID09ICd0JyA/ICd0aHVtYl8nIDogJyc7DQoJCQkkd2ZsZCA9IFBGWC4n dHhwX2ltYWdlLicuJGZsZG1vZC4ndyc7DQoJCQkkaGZsZCA9IFBGWC4ndHhwX2ltYWdlLicu JGZsZG1vZC4naCc7DQoNCgkJCSR3ZGltID0gJGRpbXNbMF07DQoJCQkkaGRpbSA9IChpc3Nl dCgkZGltc1sxXSkpID8gJGRpbXNbMV0gOiAnJzsNCg0KCQkJJHdkaW12YWwgPSBwcmVnX3Jl cGxhY2UoJy9bXjAtOV0vJywgJycsICR3ZGltKTsNCgkJCSRoZGltdmFsID0gcHJlZ19yZXBs YWNlKCcvW14wLTldLycsICcnLCAkaGRpbSk7DQoJCQkkd2RpbW9wID0gcHJlZ19yZXBsYWNl KCcvWzAtOV0vJywgJycsICR3ZGltKTsNCgkJCSR3ZGltb3AgPSBpbl9hcnJheSgkd2RpbW9w LCAkZGltQWxsb3cpID8gJHdkaW1vcCA6ICc9JzsNCgkJCSRoZGltb3AgPSBwcmVnX3JlcGxh Y2UoJy9bMC05XS8nLCAnJywgJGhkaW0pOw0KCQkJJGhkaW1vcCA9IGluX2FycmF5KCRoZGlt b3AsICRkaW1BbGxvdykgPyAkaGRpbW9wIDogJz0nOw0KCQkJJGNsYXVzZSAuPSAoKCR3ZGlt KSA/ICcgQU5EICcgLiAkd2ZsZCAuICR3ZGltb3AgLiAkd2RpbXZhbCA6ICcnKSAuICgoJGhk aW0pID8gJyBBTkQgJyAuICRoZmxkIC4gJGhkaW1vcCAuICRoZGltdmFsIDogJycpOw0KCQl9 DQoNCgkJLy8gQ29udmVydCB0aGUgc29ydCBpbnRvIGEgdmFsaWQgc29ydGluZyBoaWVyYXJj aHkuDQoJCS8vIE5vdGUgdGhhdCByYW5kb20gaXMgYSBzcGVjaWFsIGNhc2UgYW5kIHRoZSBm b2xsb3dpbmcgcnVsZXMgYXBwbHk6DQoJCS8vICAxKSBBbnl0aGluZyBhcHBlYXJpbmcgYmVm b3JlIHJhbmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRhdGFiYXNlIHF1ZXJ5IGZvciBvcmRlcmlu Zw0KCQkvLyAgMikgQXMgc29vbiBhcyByYW5kb20gaXMgZW5jb3VudGVyZWQsIHRoZSByZXN0 IG9mIHRoZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVkLg0KCQkvLyAgICAgVGhlIHJlc3VsdHNl dCB3aWxsIGJlIHNvcnRlZCByYW5kb21seSBpbnN0ZWFkDQoJCS8vICAzKSBJZiByYW5kb20g YXBwZWFycyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhlIGRhdGEgaXMgcmV0cmlldmVkIHJhbmRv bWx5IHRoZW4gdGhlDQoJCS8vICAgICByZW1haW5pbmcgb3B0aW9ucyBzb3J0IHRoZSByZXN1 bHRzZXQNCgkJJGNsYXVzZVNvcnQgPSBhcnJheSgpOw0KCQkkcG9zdE9yZGVyID0gYXJyYXko KTsNCgkJJHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQcmVmaXggPSAiU09SVF8iOw0KCQkkZml4 ZWRPcmRlciA9ICRyYW5kc29ydCA9IGZhbHNlOw0KCQkkc29ydCA9IGRvX2xpc3QoJHNvcnQs ICRkZWxpbSk7DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7ICRpZHgr Kykgew0KCQkJJHNvcnRfZGlyID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhdKTsNCgkJCSRk aXJlY3Rpb24gPSAkY29sUmVmID0gJyc7DQoJCQlpZiAoY291bnQoJHNvcnRfZGlyKSA8PSAx KSB7DQoJCQkJJHNvcnRfZGlyWzFdID0gImFzYyI7DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0g InNxbCIpIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8g JyBkZXNjJyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29y dF9kaXJbMV0gPT0gImRlc2MiKSA/ICRwb3N0UHJlZml4LidERVNDJyA6ICRwb3N0UHJlZml4 LidBU0MnOw0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRzb3J0X2RpclswXSkgew0KCQkJCWNhc2Ug J3JhbmRvbSc6DQoJCQkJCSRydWxlID0gInBvc3QiOw0KCQkJCQlpZiAoJGlkeCA9PSAwKSB7 DQoJCQkJCQkkY2xhdXNlU29ydFtdID0gJ3JhbmQoKSc7DQoJCQkJCX0gZWxzZSB7DQoJCQkJ CQkkcmFuZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2Zp eGVkJzoNCgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdvcmtzIG9uIGlkcyBvciBjYXRlZ29yaWVz DQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJyAmJiAkY2F0ZWdvcnkgPT0gJycpID8g ZmFsc2UgOiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQkkY29sUmVm ID0gYXJyYXlfc2VhcmNoKCRzb3J0X2RpclswXSwgJGZpZWxkTWFwKTsNCgkJCQkJJGNvbE5h bWUgPSAkZmllbGRNYXBbJGNvbFJlZl07DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJaWYgKCRy dWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJJGNsYXVz ZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJ CWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJCQkk cG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sTmFtZSwgInNvcnQiID0+ICRkaXJl Y3Rpb24pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNvdW50KCRjbGF1 c2VTb3J0KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1wbG9kZSgi LCIsJGNsYXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJCQllY2hvICIr KyBXSEVSRSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJCS8vIFRoZSBk YXRhYmFzZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUoIiwiLCBhcnJh eV9rZXlzKCRmaWVsZE1hcCkpOw0KCQkkY1RpdGxlID0gKGlzc2V0KCRsMTBuX2xhbmd1YWdl Wydsb25nJ10pKSA/IF9sMTBuX21ha2VfZmllbGRfbmFtZSgndGl0bGUnLCAkdGhpc2xhbmcp IDogJ3RpdGxlJzsNCg0KCQkkcnMgPSBnZXRSb3dzKCINCgkJCVNFTEVDVCBESVNUSU5DVCAk ZmllbGRzDQoJCQlGUk9NICIuUEZYLiJ0eHBfaW1hZ2UNCgkJCVdIRVJFICRjbGF1c2UNCgkJ CUxJTUlUIDAsICRtYXhsaW1pdA0KCQkiLCAkZGVidWcpOw0KCQlsaXN0KCRhbGxJbWFnZXMs ICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdh bGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKTsNCgl9DQoNCg0KCS8vIElzIHBvc3Qt b3JkZXJpbmcgcmVxdWlyZWQ/IERvIGl0DQoJaWYgKCRyYW5kc29ydCkgew0KCQlzaHVmZmxl KCRycyk7DQoJfSBlbHNlIGlmIChjb3VudCgkcG9zdE9yZGVyKSA+IDApIHsNCgkJLy8gVHJh bnNsYXRlIHRoZSByb3dzIGludG8gY29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9y ZWFjaCgkcnMgYXMgJGtleSA9PiAkcm93KSB7DQoJCQlmb3JlYWNoICgkcm93IGFzICRpZGVu dGlmaWVyID0+ICRpdGVtKSB7DQoJCQkJJHZhcm5hbWUgPSAiY29sXyIuJGlkZW50aWZpZXI7 DQoJCQkJJHskdmFybmFtZX1bJGtleV0gPSAkaXRlbTsNCgkJCX0NCgkJfQ0KDQoJCS8vIE1h a2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0Lg0KCQkv LyBUaGUgbmVjZXNzYXJ5IGV2aWwoKSBpcyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IG1h bnkgY29scyB0aGVyZSB3aWxsIGJlIGluIHRoZSBhcnJheQ0KCQlmb3IgKCRpZHggPSAwOyAk aWR4IDwgY291bnQoJHBvc3RPcmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAn JGNvbF8nLiRwb3N0T3JkZXJbJGlkeF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9z dE9yZGVyWyRpZHhdWydzb3J0J107DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNv cnQoJy5pbXBsb2RlKCIsICIsJHNvcnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRp dCk7DQoJfQ0KDQoJLy8gSXMgZml4ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCBy ZS1vcmRlciB0aGUgJHJzDQoJaWYgKCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBB cnJheSgpOw0KCQkkaWdub3JlTGlzdCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFy cmF5KCk7DQoNCgkJLy8gU3VjayBvdXQgdGhlIGZpeGVkIGl0ZW1zIGZpcnN0LiBJRHMgdGhl biBjYXRlZ29yaWVzDQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkaWRpbmMpOyAk aWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGlkICYmIGRv UXVvdGUoJHJvd1snaWQnXSkgPT0gJGlkaW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNb XSA9ICRyb3c7DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCQlicmVh azsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRj YXRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAo JGNhdGVnb3J5ICYmIGRvUXVvdGUoJHJvd1snY2F0ZWdvcnknXSkgPT0gJGNhdGluY1skaWR4 XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0g JHJvd1snaWQnXTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gVGFjayBvbiB0aGUgcmVtYWlu aW5nIHJvd3MNCgkJaWYgKCRycykgew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJ CWlmICghaW5fYXJyYXkoJHJvd1snaWQnXSwgJGlnbm9yZUxpc3QpKSB7DQoJCQkJCSRyZW1h aW5pbmdSU1tdID0gJHJvdzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVy Z2UoJG9yZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBHcmFiIHRoZSBwb3J0 aW9uIG9mIHRoZSByZWNvcmQgc2V0IGFjdHVhbGx5IHJlcXVpcmVkIHRvIGl0ZXJhdGUgb3Zl cg0KCWlmICgkcnMpIHsNCgkJJHJzID0gYXJyYXlfc2xpY2UoJHJzLCAkb2Zmc2V0LCAoKCRk aXJlY3RvcnkpID8gJGRpcmxpbWl0IDogKCgkbGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxp bWl0KSkpOw0KCX0NCg0KCS8vIFByZXBhcmUgZml4ZWQgdGh1bWJzaXplcw0KCSR0aHVtYldp ZHRoID0gJHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRodW1iV1VuaXRzID0gJHRodW1iSFVuaXRz ID0gJyc7DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJJHRodW1iU2l6ZXMgPSBkb19saXN0KCR0 aHVtYnNpemUsICRkZWxpbSk7DQoJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycs ICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCWlmIChjb3VudCgkdGh1bWJTaXplcykgPT0gMSkg ew0KCQkJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBwcmVnX3JlcGxhY2UoJy9bXjAt OV0vJywgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVtYkhV bml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9IGVs c2Ugew0KCQkJJHRodW1iV2lkdGggPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICR0 aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1teMC05 XS8nLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1iV1VuaXRzID0gKCR1bml0cyA9 PSAnJyAmJiAkdGh1bWJXaWR0aCAhPSAnJykgPyAkdGh1bWJXVW5pdHMgOiAkdW5pdHM7DQoJ CQkkdW5pdHMgPSBwcmVnX3JlcGxhY2UoJy9bMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMV0p Ow0KCQkJJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0g JycpID8gJHRodW1iSFVuaXRzIDogJHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gUHJlcGFyZSBm aXhlZCBpbWFnZSBzaXplcw0KCSRpbWFnZVdpZHRoID0gJGltYWdlSGVpZ2h0ID0gJyc7DQoJ JGltYWdlV1VuaXRzID0gJGltYWdlSFVuaXRzID0gJyc7DQoJaWYgKCRpbWdzaXplKSB7DQoJ CSRpbWFnZVNpemVzID0gZG9fbGlzdCgkaW1nc2l6ZSwgJGRlbGltKTsNCgkJJHVuaXRzID0g cHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICRpbWFnZVNpemVzWzBdKTsNCgkJaWYgKGNv dW50KCRpbWFnZVNpemVzKSA9PSAxKSB7DQoJCQkkaW1hZ2VXaWR0aCA9ICRpbWFnZUhlaWdo dCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJ JGltYWdlV1VuaXRzID0gJGltYWdlSFVuaXRzID0gKCR1bml0cyA9PSAnJykgPyAkaW1hZ2VX VW5pdHMgOiAkdW5pdHM7DQoJCX0gZWxzZSB7DQoJCQkkaW1hZ2VXaWR0aCA9IHByZWdfcmVw bGFjZSgnL1teMC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdlSGVpZ2h0 ID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkk aW1hZ2VXVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICRpbWFnZVdpZHRoICE9ICcnKSA/ICRp bWFnZVdVbml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTld LycsICcnLCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkkaW1hZ2VIVW5pdHMgPSAoJHVuaXRzID09 ICcnICYmICRpbWFnZUhlaWdodCAhPSAnJykgPyAkaW1hZ2VIVW5pdHMgOiAkdW5pdHM7DQoJ CX0NCgl9DQoNCgkvLyBDb2xsYXRpb24gZGVmZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVh Y2ggcmV0dXJuZWQgaXRlbS4NCgkvLyBJbnN0ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMg YSBsaXN0IGF0IHRoZSBlbmQgKGl0ZW1zIG1heSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9y IGV4dHJhY3RlZCBpZiByZXF1aXJlZCkNCgkvL1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBh cyBhIHNob3J0Y3V0IHRvIHNwZWNpZnkgdGhhdCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2Fy ZGxlc3Mgb2YgIzEsICMyLCAjMyBldGMpIGFyZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxh dGUpIHsNCgkJJGRibFF1b3RlID0gJHNnbFF1b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJ JGNvbGxhdGVPcHRzID0gZG9fbGlzdCgkY29sbGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAo JGNvbGxhdGVPcHRzIGFzICRvcHRpb24pIHsNCgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0 aW9uLCAkcGFyYW1kZWxpbSk7DQoJCQkkY29sVHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVz KTsNCgkJCS8vIFN1cHBseWluZyAncXVvdGUnIG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUg cmVsZXZhbnQgYXJyYXksIGltcGx5aW5nICJBTEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVk DQoJCQlzd2l0Y2ggKCRjb2xUeXBlKSB7DQoJCQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkk c2dsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUi Og0KCQkJCWNhc2UgInF1b3RlIjoNCgkJCQkJJGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJ CWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLy8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQg Y29tYmluYXRpb25zIG9mIHJlcGxhY2VtZW50IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lk fXtleHR9LCAuLi4NCgkkY29tYm9zID0gYXJyYXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRj b21ibyA9IGRvX2xpc3QoJGNvbWJvLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMg JG5ld0RlZikgew0KCQkJbGlzdCgkZGVmUGFydHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0 KCRuZXdEZWYsIGZhbHNlLCAnJywgZmFsc2UsICRwYXJhbWRlbGltLCAkc3BjKTsNCgkJCSRk ZWZOYW1lID0gInsiLmFycmF5X3NoaWZ0KCRkZWZQYXJ0cykuIn0iOw0KCQkJJGNvbWJvc1sk ZGVmTmFtZV0gPSAkZGVmUGFydHNbMF07DQoJCX0NCgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsN CgkJZWNobyAiKysgQ09NQk9zICsrIjsNCgkJZG1wKCRjb21ib3MpOw0KCX0NCgkvLyBDb25z dHJ1Y3QgdGhlIG91dHB1dA0KCSR0aHVtYm91dCA9IGFycmF5KCk7DQoJJGdyb3Vwb3V0ID0g YXJyYXkoKTsNCgkkbmF2b3V0ID0gYXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29s bGF0aW9ucyA9IGFycmF5KCk7DQoJJGNoSWRlbnRpZmllciA9ICJvbmNoYW5nZSI7DQoNCglp ZiAoJGRlYnVnID4gMikgew0KCQllY2hvICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRy cyk7DQoJfQ0KCWlmICgkZGVidWcgPiAzKSB7DQoJCWVjaG8gIisrIEFWQUlMQUJMRSAnPycg VkFSUyArKyI7DQoJCWlmICgkcHJldGV4dCkgZG1wKCRwcmV0ZXh0KTsNCgkJaWYgKCR0aGlz YXJ0aWNsZSkgZG1wKCR0aGlzYXJ0aWNsZSk7DQoJfQ0KDQoJaWYoJHJzKSB7DQoJCSRpZHgg PSAwOw0KCQkkY3RyID0gMTsNCgkJJHRodW1iSWR4ID0gMDsNCgkJJHRodW1iQ3RyID0gMTsN CgkJJG51bUltYWdlcyA9IGNvdW50KCRycyk7DQoJCSRyZXBhZ2VtZW50cyA9IGFycmF5KCk7 DQoNCgkJLy8gU2V0IHVwIHRoZSBwYWdpbmcgZmVhdHVyZXMgaWYgcmVxdWlyZWQNCgkJaWYg KCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCQkkbmV4dCA9ICgkbnVtUGFnZXMgPiAx ICYmICR0aHVtUGFnZSAhPSAkbnVtUGFnZXMpOw0KCQkJJHByZXYgPSAoJG51bVBhZ2VzID4g MSAmJiAkdGh1bVBhZ2UgPiAxKTsNCgkJCSRwcmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJl dGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlLTEpOw0KCQkJJG5leHRQ YWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAk dGh1bVBhZ2UrMSk7DQoJCQkkdGhpc1BhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3Jl cXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSk7DQoJCQkkZmlyc3RQYWdlID0gc21k X2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAxKTsNCgkJCSRs YXN0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJ RCwgJG51bVBhZ2VzKTsNCg0KCQkJLy8gTGFiZWxzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhl IHJlcGxhY2VtZW50IHRhZyBhZnRlciBhIHBhcmFtZGVsaW0uDQoJCQkvLyAnZWFybGllcicg YW5kICdsYXRlcicgZG9uJ3QgaGF2ZSBsYWJlbHMuIEFueXRoaW5nIHNwZWNpZmllZCBhZnRl ciBwYXJhbWRlbGltIGlzIHRoZSBtYXggbnVtYmVyIG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5 ID0gYWxsIHBhZ2VzDQoJCQkkbGFiZWwgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdmZpcnN0JyksDQoJCQkJCSd7bmF2cHJldn0nID0+ ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdnByZXYnKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScg PT4gJycsDQoJCQkJCSd7bmF2dGhpc30nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0aGlz dXJsfScgPT4gJHRodW1QYWdlLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJycsDQoJCQkJCSd7 bmF2bmV4dH0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdm5leHQnKSwNCgkJCQkJJ3tu YXZsYXN0fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4dCgnbmF2bGFzdCcpLA0KCQkJCSk7DQoN CgkJCSRsYWJlbFJFID0gJy9ceyhuYXZbYS16XSspJy4kcGFyYW1kZWxpbS4nKC4rPylcfS8n Ow0KCQkJJG51bUxhYmVscyA9IHByZWdfbWF0Y2hfYWxsKCRsYWJlbFJFLCAkcGFnZWZvcm0s ICRsYWJlbHMpOw0KDQoJCQlmb3IgKCRsYWJlbEN0ciA9IDA7ICRsYWJlbEN0ciA8ICRudW1M YWJlbHM7ICRsYWJlbEN0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kbGFiZWxzWzFd WyRsYWJlbEN0cl0uJ30nOw0KCQkJCSRsYWJlbFskZmllbGRuYW1lXSA9ICRsYWJlbHNbMl1b JGxhYmVsQ3RyXTsNCgkJCQkkcGFnZWZvcm0gPSBzdHJfcmVwbGFjZSgkbGFiZWxzWzBdWyRs YWJlbEN0cl0sICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nLCAkcGFnZWZvcm0pOw0K CQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBMQUJF TFMgKysiOw0KCQkJCWRtcCgkbGFiZWwpOw0KCQkJfQ0KDQoJCQkvLyBHZW5lcmF0ZSAnZWFy bGllcicgYW5kICdsYXRlcicgbGlzdHMNCgkJCSRudW1FYXJsaWVyID0gaW50dmFsKCRsYWJl bFsne25hdmVhcmxpZXJ9J10pOw0KCQkJJG51bUxhdGVyID0gaW50dmFsKCRsYWJlbFsne25h dmxhdGVyfSddKTsNCgkJCSRudW1FYXJsaWVyID0gKCRudW1FYXJsaWVyICYmICgkdGh1bVBh Z2UtJG51bUVhcmxpZXIgPiAxKSkgPyAkbnVtRWFybGllciA6ICR0aHVtUGFnZS0xOw0KCQkJ JG51bUxhdGVyID0gKCRudW1MYXRlciAmJiAoJHRodW1QYWdlKyRudW1MYXRlciA8ICRudW1Q YWdlcykpID8gJG51bUxhdGVyIDogJG51bVBhZ2VzLSR0aHVtUGFnZTsNCgkJCSRuYXZFYXJs aWVyID0gJG5hdkxhdGVyID0gYXJyYXkoKTsNCgkJCWZvciAoJGNvZCA9ICR0aHVtUGFnZS0k bnVtRWFybGllcjsgJGNvZCA8ICR0aHVtUGFnZTsgJGNvZCsrKSB7DQoJCQkJJG5hdkVhcmxp ZXJbXSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmkn XSwgJGdhbGxJRCwgJGNvZCkuJyI+Jy4kY29kLic8L2E+JzsNCgkJCX0NCgkJCWZvciAoJGNv ZCA9ICR0aHVtUGFnZSsxOyAkY29kIDw9ICR0aHVtUGFnZSskbnVtTGF0ZXI7ICRjb2QrKykg ew0KCQkJCSRuYXZMYXRlcltdID0gJzxhIGhyZWY9Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0 WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4nIj4nLiRjb2QuJzwvYT4nOw0KCQkJ fQ0KCQkJJG5hdkVhcmxpZXIgPSBkb1dyYXAoJG5hdkVhcmxpZXIsICcnLCAkbmF2YnJlYWss ICcnKTsNCgkJCSRuYXZMYXRlciA9IGRvV3JhcCgkbmF2TGF0ZXIsICcnLCAkbmF2YnJlYWss ICcnKTsNCg0KCQkJLy8gTWFrZSB1cCB0aGUgcmVwYWdlbWVudHMgYXJyYXkgZm9yIHBhZ2Vm b3JtDQoJCQkkcmVwYWdlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICgo JHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJGZpcnN0UGFnZS4nIj4nLiRsYWJlbFsne25h dmZpcnN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmZpcnN0 fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2cHJldn0nID0+ICgo JHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJHByZXZQYWdlLiciPicuJGxhYmVsWyd7bmF2 cHJldn0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZwcmV2fSdd LCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICRu YXZFYXJsaWVyLA0KCQkJCQkne25hdnRoaXN9JyA9PiBkb1RhZygkbGFiZWxbJ3tuYXZ0aGlz fSddLCAkbmF2YnJlYWssICdjdXJyZW50ICcuJGVtcHR5Y2xhc3MpLA0KCQkJCQkne25hdnRo aXN1cmx9JyA9PiBkb1RhZygnPGEgaHJlZj0iJy4kdGhpc1BhZ2UuJyI+Jy4kbGFiZWxbJ3tu YXZ0aGlzdXJsfSddLic8L2E+JywgJG5hdmJyZWFrLCAnY3VycmVudCcpLA0KCQkJCQkne25h dmxhdGVyfScgPT4gJG5hdkxhdGVyLA0KCQkJCQkne25hdm5leHR9JyA9PiAoKCRuZXh0KSA/ IGRvVGFnKCc8YSBocmVmPSInLiRuZXh0UGFnZS4nIj4nLiRsYWJlbFsne25hdm5leHR9J10u JzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bmV4dH0nXSwgJG5hdmJy ZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAoKCRuZXh0KSA/IGRv VGFnKCc8YSBocmVmPSInLiRsYXN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmxhc3R9J10uJzwv YT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bGFzdH0nXSwgJG5hdmJyZWFr LCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdnRoaXNwYWdldXJsfScgPT4gJHRoaXNQYWdl LA0KCQkJCQkne25hdm5leHRwYWdldXJsfScgPT4gKCgkbmV4dCkgPyAkbmV4dFBhZ2UgOiAn JyksDQoJCQkJCSd7bmF2cHJldnBhZ2V1cmx9JyA9PiAoKCRwcmV2KSA/ICRwcmV2UGFnZSA6 ICcnKSwNCgkJCQkJJ3tuYXZmaXJzdHBhZ2V1cmx9JyA9PiAkZmlyc3RQYWdlLA0KCQkJCQkn e25hdmxhc3RwYWdldXJsfScgPT4gJGxhc3RQYWdlLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScg PT4gJG51bUltYWdlcywNCgkJCQkJJ3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2VzLA0KCQkJ CQkne21heGltYWdlc30nID0+ICRhbGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJCS8vIFBlcmZv cm0gZXNjYXBpbmcgaGVyZSwganVzdCBwcmlvciB0byBvdXRwdXQNCgkJCQlpZiAoJGVzY2Fw ZXMpIHsNCgkJCQkJZm9yZWFjaCAoJHJlcGFnZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZW YWwpIHsNCgkJCQkJCWlmIChpbl9hcnJheSh0cmltKCRkZWZOYW1lLCAie30iKSwgJGVzY2Fw ZXMpKSB7DQoJCQkJCQkJJHJlcGFnZW1lbnRzWyRkZWZOYW1lXSA9IGh0bWxzcGVjaWFsY2hh cnMoJGRlZlZhbCwgRU5UX1FVT1RFUyk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoNCgkJ CQkvLyBQZXJmb3JtIHRoZSBzdWJzdGl0dXRpb25zDQoJCQkJJG5hdm91dFtdID0gcGFyc2Uo c3RydHIoJHBhZ2Vmb3JtLCAkcmVwYWdlbWVudHMpKTsNCgkJfQ0KDQoJCS8vIEZvciBldmVy eSBpbWFnZSBpbiB0aGUgZ2FsbGVyeS4uLg0KCQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ICRy b3cpIHsNCgkJCWlmICgkZGlyZWN0b3J5KSB7DQoJCQkJJHVybFBhdGggPSAkcm93WydwYXRo J10uJy8nOw0KCQkJfSBlbHNlIHsNCgkJCQkkdXJsUGF0aCA9IGh1LiRpbWdfZGlyLicvJzsN CgkJCQkkcm93WydjYXRlZ29yeV90aXRsZSddID0gZmV0Y2hfY2F0ZWdvcnlfdGl0bGUoJHJv d1snY2F0ZWdvcnknXSwgJ2ltYWdlJyk7DQoJCQl9DQoJCQkkdGhlVGh1bWIgPSAkdXJsUGF0 aCAuICRyb3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAkcm93WydleHQnXTsNCgkJCSRmdWxsU2l6 ZSA9ICR1cmxQYXRoIC4gJHJvd1snaWQnXSAuICRmdWxsbW9kIC4kcm93WydleHQnXTsNCg0K CQkJLy8gRG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGh1bWIgY291bnRlciB0aGlzIHRpbWU/ DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsN CgkJCQlpZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJ CSRpdGVyID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIg PSAoY291bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJJ ZHggJSAkaXRlciA9PSAwKSB7DQoJCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkJJHRodW1i Q3RyID0gMTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBpZiAoJHJvd1skcmVzZXRPcHRdICE9ICRy ZXNldFZhbCkgew0KCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkkdGh1bWJDdHIgPSAxOw0K CQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIE92ZXJyaWRlIHRodW1ic2l6ZSAv IGltZ3NpemUgaWYgcmVxdWlyZWQNCgkJCWlmICgkdGh1bWJzaXplKSB7DQoJCQkJJHRoZVRo dW1iV2lkdGggPSBlbXB0eSgkdGh1bWJXaWR0aCkgPyAkcm93Wyd0aHVtYl93J10gOiAkdGh1 bWJXaWR0aDsNCgkJCQkkdGhlVGh1bWJIZWlnaHQgPSBlbXB0eSgkdGh1bWJIZWlnaHQpID8g JHJvd1sndGh1bWJfaCddIDogJHRodW1iSGVpZ2h0Ow0KCQkJCSR0aGVUaHVtYldVbml0cyA9 ICR0aHVtYldVbml0czsNCgkJCQkkdGhlVGh1bWJIVW5pdHMgPSAkdGh1bWJIVW5pdHM7DQoJ CQl9IGVsc2Ugew0KCQkJCSR0aGVUaHVtYldpZHRoID0gJHJvd1sndGh1bWJfdyddOw0KCQkJ CSR0aGVUaHVtYkhlaWdodCA9ICRyb3dbJ3RodW1iX2gnXTsNCgkJCQkkdGhlVGh1bWJXVW5p dHMgPSAkdGhlVGh1bWJIVW5pdHMgPSAnJzsNCgkJCX0NCg0KCQkJaWYgKCRpbWdzaXplKSB7 DQoJCQkJJHRoZUltYWdlV2lkdGggPSBlbXB0eSgkaW1hZ2VXaWR0aCkgPyAkcm93Wyd3J10g OiAkaW1hZ2VXaWR0aDsNCgkJCQkkdGhlSW1hZ2VIZWlnaHQgPSBlbXB0eSgkaW1hZ2VIZWln aHQpID8gJHJvd1snaCddIDogJGltYWdlSGVpZ2h0Ow0KCQkJCSR0aGVJbWFnZVdVbml0cyA9 ICRpbWFnZVdVbml0czsNCgkJCQkkdGhlSW1hZ2VIVW5pdHMgPSAkaW1hZ2VIVW5pdHM7DQoJ CQl9IGVsc2Ugew0KCQkJCSR0aGVJbWFnZVdpZHRoID0gJHJvd1sndyddOw0KCQkJCSR0aGVJ bWFnZUhlaWdodCA9ICRyb3dbJ2gnXTsNCgkJCQkkdGhlSW1hZ2VXVW5pdHMgPSAkdGhlSW1h Z2VIVW5pdHMgPSAnJzsNCgkJCX0NCg0KCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVu dCBhcnJheQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkne2lkfScgPT4gJHJv d1snaWQnXSwNCgkJCQkJJ3tuYW1lfScgPT4gJHJvd1snbmFtZSddLA0KCQkJCQkne2V4dH0n ID0+ICRyb3dbJ2V4dCddLA0KCQkJCQkne2NhdGVnb3J5fScgPT4gJHJvd1snY2F0ZWdvcnkn XSwNCgkJCQkJJ3tjYXRlZ29yeV90aXRsZX0nID0+ICgoaXNzZXQoJHJvd1snY2F0ZWdvcnlf dGl0bGUnXSkgJiYgJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSAhPT0gZmFsc2UpID8gJHJvd1sn Y2F0ZWdvcnlfdGl0bGUnXSA6ICcnKSwNCgkJCQkJJ3thdXRob3J9JyA9PiAkcm93WydhdXRo b3InXSwNCgkJCQkJJ3toYXN0aHVtYn0nID0+IChpc3NldCgkcm93Wyd0aHVtYm5haWwnXSkg PyAkcm93Wyd0aHVtYm5haWwnXSA6IDApLA0KCQkJCQkne3VybH0nID0+ICRmdWxsU2l6ZSwN CgkJCQkJJ3t0aHVtYnVybH0nID0+ICR0aGVUaHVtYiwNCgkJCQkJJ3tpbWFnZXBhdGh9JyA9 PiAkdXJsUGF0aCwNCgkJCQkJJ3tpbWFnZWRlZn0nID0+IGJhc2VuYW1lKCRmdWxsU2l6ZSks DQoJCQkJCSd7dGh1bWJkZWZ9JyA9PiBiYXNlbmFtZSgkdGhlVGh1bWIpLA0KCQkJCQkne2Fs dH0nID0+ICRyb3dbJ2FsdCddLA0KCQkJCQkne3RpdGxlfScgPT4gJHJvd1snY2FwdGlvbidd LA0KCQkJCQkne2NhcHRpb259JyA9PiAkcm93WydjYXB0aW9uJ10sDQoJCQkJCSd7dGh1bWJ3 aWR0aH0nID0+ICR0aGVUaHVtYldpZHRoLA0KCQkJCQkne3RodW1iaGVpZ2h0fScgPT4gJHRo ZVRodW1iSGVpZ2h0LA0KCQkJCQkne3RodW1id3VuaXRzfScgPT4gJHRoZVRodW1iV1VuaXRz LA0KCQkJCQkne3RodW1iaHVuaXRzfScgPT4gJHRoZVRodW1iSFVuaXRzLA0KCQkJCQkne3dp ZHRofScgPT4gJHRoZUltYWdlV2lkdGgsDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHRoZUltYWdl SGVpZ2h0LA0KCQkJCQkne3d1bml0c30nID0+ICR0aGVJbWFnZVdVbml0cywNCgkJCQkJJ3to dW5pdHN9JyA9PiAkdGhlSW1hZ2VIVW5pdHMsDQoJCQkJCSd7ZGF0ZX0nID0+ICgoJGZvcm1h dCkgPyBzYWZlX3N0cmZ0aW1lKCRmb3JtYXQsIHN0cnRvdGltZSgkcm93WydkYXRlJ10pLCAk Z210LCAkbGFuZykgOiAkcm93WydkYXRlJ10pLA0KCQkJCQkne2dhbGxlcnlpZH0nID0+ICRn YWxsSUQsDQoJCQkJCSd7aW5kZXh9JyA9PiAkaWR4LA0KCQkJCQkne2NvdW50ZXJ9JyA9PiAk Y3RyLA0KCQkJCQkne3RodW1iaW5kZXh9JyA9PiAkdGh1bWJJZHgsDQoJCQkJCSd7dGh1bWJj b3VudGVyfScgPT4gJHRodW1iQ3RyLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUlt YWdlcywNCgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJ CS8vIEFkZCBhbnkgY3VzdG9tIGNvbHVtbnMNCgkJCWZvcmVhY2ggKCRleHRyYU1hcCBhcyAk ZUNvbCA9PiAkZVZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3snLiRlVmFsLid9J10gPSAk cm93WyRlQ29sXTsNCgkJCX0NCg0KCQkJLy8gQXBwZW5kIGFueSBjaGFuZ2VkIGl0ZW1zIHRo YXQgYXJlIHJlcXVpcmVkDQoJCQkkZW5kdGFnID0gZmFsc2U7DQoJCQlmb3JlYWNoICgkcmVz ZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRy ZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRpdGVyID0gZXhwbG9kZSgk cGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAoY291bnQoJGl0ZXIpID4g MSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJDdHIgJSAkaXRlciA9PT0gMCB8 fCAkY3RyID09ICRudW1JbWFnZXMpIHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOw0KCQkJCQl9 DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlcGxhY2VtZW50c1sneycuJGNoSWRlbnRpZmllci4k cGFyYW1kZWxpbS4kcmVzZXRPcHQuJ30nXSA9ICgkdGh1bWJJZHggPT0gMCkgPyAoKGlzc2V0 KCRyZXNldEZvcm1zWyRyZXNldE9wdF0pKSA/IHN0cnRyKHBhcnNlX2Zvcm0oJHJlc2V0Rm9y bXNbJHJlc2V0T3B0XSksICRyZXBsYWNlbWVudHMpIDogZG9UYWcoJHJvd1skcmVzZXRPcHRd LCAkb25jaGFuZ2V3cmFwdGFnLCAkb25jaGFuZ2VjbGFzcykpIDogJyc7DQoJCQkJCS8vIERv IGEgc25lYWt5ICh5dWspIGxvb2thaGVhZC4gV291bGQgbG92ZSB0byBmaW5kIGEgYmV0dGVy IHdheSB0byBkbyB0aGlzDQoJCQkJCWlmIChpc3NldCgkcnNbJGtleSsxXSkpIHsNCgkJCQkJ CS8vIGNhdGVnb3J5X3RpdGxlIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIG5leHQgcm93ICh5 ZXQpIHNvIHBvcHVsYXRlIGl0IGlmIHJlcXVpcmVkLi4uIGJsZXVyZ2ghDQoJCQkJCQlpZiAo JHJlc2V0T3B0ID09ICdjYXRlZ29yeV90aXRsZScpIHsNCgkJCQkJCQkkcnNbJGtleSsxXVsk cmVzZXRPcHRdID0gKGlzc2V0KCRyc1ska2V5KzFdWydjYXRlZ29yeSddKSAmJiAhZW1wdHko JHJzWyRrZXkrMV1bJ2NhdGVnb3J5J10pKSA/IGZldGNoX2NhdGVnb3J5X3RpdGxlKCRyc1sk a2V5KzFdWydjYXRlZ29yeSddLCAnaW1hZ2UnKSA6ICcnOw0KCQkJCQkJfQ0KCQkJCQkJaWYo aXNzZXQoJHJzWyRrZXkrMV1bJHJlc2V0T3B0XSkgJiYgKCRyc1ska2V5KzFdWyRyZXNldE9w dF0gIT0gJHJvd1skcmVzZXRPcHRdKSkgew0KCQkJCQkJCSRlbmR0YWcgPSB0cnVlOw0KCQkJ CQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGVuZHRhZyA9IHRydWU7IC8vIExhc3QgaW1h Z2UNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJJHJlcGxhY2VtZW50c1sne2dyb3VwdGFn ZW5kfSddID0gKCRncm91cHRhZyAmJiAkZW5kdGFnKSA/ICc8LycgLiAkZ3JvdXB0YWcgLiAn PicgOiAnJzsNCgkJCSRyZXBsYWNlbWVudHNbJ3tncm91cHRhZ3N0YXJ0fSddID0gKCRncm91 cHRhZyAmJiAkdGh1bWJJZHggPT0gMCkgPyAnPCcgLiAkZ3JvdXB0YWcgLiAoKCRncm91cGNs YXNzKSA/ICcgY2xhc3M9IicuJGdyb3VwY2xhc3MuJyInIDogJycpIC4gJz4nIDogJyc7DQoN CgkJCS8vIEFwcGVuZCBhbnkgY29tYm9zDQoJCQlmb3JlYWNoICgkY29tYm9zIGFzICRkZWZO YW1lID0+ICRuZXdEZWYpIHsNCgkJCQlpZiAoIWFycmF5X2tleV9leGlzdHMoJGRlZk5hbWUs ICRyZXBsYWNlbWVudHMpKSB7DQoJCQkJCSRyZXBsYWNlbWVudHNbJGRlZk5hbWVdID0gc3Ry dHIoJG5ld0RlZiwgJHJlcGxhY2VtZW50cyk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBTb2xv cyBhcmUgaXRlbXMgaW4gdGhlIG91dHB1dCBmb3JtIHRoYXQgcmVxdWlyZSBkZXRhaWxzIGZy b20gYSBzcGVjaWZpYyByb3cuIFVzZWZ1bCBvbmx5IGluIGNvbGxhdGlvbg0KCQkJLy8gbW9k ZSwgdGhleSBhcmUgYWRkZWQgdG8gdGhlIHJlcGxhY2VtZW50cyBhcnJheSBvbiBhbiBhcy1u ZWVkZWQgYmFzaXMgdG8gc2F2ZSBzcGFjZS90aW1lDQoJCQkkc29sb1JFID0gJy9ceyhbYS16 MC05XSspIycuJGN0ci4nXH0vJzsNCgkJCSRudW1Tb2xvcyA9IHByZWdfbWF0Y2hfYWxsKCRz b2xvUkUsICR0aGluZywgJHNvbG9zKTsNCgkJCWZvciAoJHNvbG9DdHIgPSAwOyAkc29sb0N0 ciA8ICRudW1Tb2xvczsgJHNvbG9DdHIrKykgew0KCQkJCSRmaWVsZG5hbWUgPSAneycuJHNv bG9zWzFdWyRzb2xvQ3RyXS4nIycuJGN0ci4nfSc7DQoJCQkJJGdyYWJmaWVsZCA9ICd7Jy4k c29sb3NbMV1bJHNvbG9DdHJdLid9JzsNCgkJCQkkcmVwbGFjZW1lbnRzWyRmaWVsZG5hbWVd ID0gJHJlcGxhY2VtZW50c1skZ3JhYmZpZWxkXTsNCgkJCX0NCg0KCQkJLy8gUGVyZm9ybSBl c2NhcGluZyBvbiB0aGUgcmVwbGFjZW1lbnRzLg0KCQkJLy8gTm90ZSB0aGUgcmVwYWdlbWVu dHMgaGF2ZSBhbHJlYWR5IGJlZW4gZXNjYXBlZCBzbyB3aGVuL2lmIHRoZXkgYXJlIGNvbWJp bmVkIHdpdGggdGhlIHJlcGxhY2VtZW50cywNCgkJCS8vIHRoZSBlc2NhcGluZyBpcyBub3Qg ZG9uZSB0d2ljZQ0KCQkJaWYgKCRlc2NhcGVzKSB7DQoJCQkJZm9yZWFjaCAoJHJlcGxhY2Vt ZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCWlmIChpbl9hcnJheSh0cmlt KCRkZWZOYW1lLCAie30iKSwgJGVzY2FwZXMpKSB7DQoJCQkJCQkkcmVwbGFjZW1lbnRzWyRk ZWZOYW1lXSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRlZlZhbCwgRU5UX1FVT1RFUyk7DQoJCQkJ CX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIEFkZCB0aGUgbmF2aWdhdGlvbiBpdGVtcyBpZiB0 aGV5J3JlIGRlZmluZWQNCgkJCWlmIChjb3VudCgkcmVwYWdlbWVudHMpID4gMCkgew0KCQkJ CSRyZXBsYWNlbWVudHMgPSBhcnJheV9tZXJnZSgkcmVwYWdlbWVudHMsICRyZXBsYWNlbWVu dHMpOw0KCQkJfQ0KDQoJCQkvLyBJcyBhIHRodW1iL3RleHQgb2JqZWN0IHJlcXVpcmVkIHRo aXMgdGltZT8NCgkJCSRvYmplY3QgPSAnJzsNCgkJCWlmICgkdGh1bWJJZHggPj0gJHRodW1i b2Zmc2V0ICYmICR0aHVtYklkeCA8ICR0aHVtYm9mZnNldCskdGh1bWJsaW1pdCkgew0KCQkJ CSRvYmplY3QgPSAoJG9iamVjdGZvcm0pID8gcGFyc2Uoc3RydHIoJG9iamVjdGZvcm0sICRy ZXBsYWNlbWVudHMpKSA6ICgoJHRleHQpID8gJHRleHQgOiAnPGltZyBzcmM9IicuJHRoZVRo dW1iLiciJyAuKCgkcm93WydhbHQnXSkgPyAnIGFsdD0iJy4kcm93WydhbHQnXS4nIicgOiAn JykgLigoJHRoZVRodW1iV2lkdGgpID8gJyB3aWR0aD0iJy4kdGhlVGh1bWJXaWR0aC4kdGhl VGh1bWJXVW5pdHMuJyInIDogJycpIC4oKCR0aGVUaHVtYkhlaWdodCkgPyAnIGhlaWdodD0i Jy4kdGhlVGh1bWJIZWlnaHQuJHRoZVRodW1iSFVuaXRzLiciJyA6ICcnKSAuJyAvPicpOw0K CQkJfQ0KCQkJJHJlcGxhY2VtZW50c1sne29iamVjdH0nXSA9ICRvYmplY3Q7DQoNCgkJCWlm ICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUkVQTEFDRU1FTlRTIDogSU1BR0UgIi4k Y3RyLiIgKysiOw0KCQkJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJLy8gQ2hl Y2sgaWYgY291bnRmb3JtIGlzIHRvIGJlIGNhbGxlZA0KCQkJJGNvdW50cHJlID0gJGNvdW50 cG9zdCA9IGFycmF5KCk7DQoJCQlpZiAoJGNvdW50aW5nKSB7DQoJCQkJZm9yZWFjaCAoJGNv dW50Zm9ybSBhcyAkY291bnRsaXN0KSB7DQoJCQkJCSRwb3NvdmVyID0gYXJyYXkoKTsNCgkJ CQkJJGNvdW50bGlzdCA9IHN0cnRyKCRjb3VudGxpc3QsICRyZXBsYWNlbWVudHMpOyAvLyBS ZXBsYWNlIGFueSB7fSB2YXJzIHdpdGggdGhlaXIgcmVhbCB2YWx1ZXMNCgkJCQkJJGNvdW50 bGlzdCA9IGRvX2xpc3QoJGNvdW50bGlzdCwgJHBhcmFtZGVsaW0pOw0KCQkJCQlpZiAoJGRw b3M9YXJyYXlfc2VhcmNoKCdzbWRfYWJvdmUnLCAkY291bnRsaXN0KSkgew0KCQkJCQkJJHBv c292ZXJbXSA9ICJhYm92ZSI7DQoJCQkJCQl1bnNldCgkY291bnRsaXN0WyRkcG9zXSk7DQoJ CQkJCX0NCgkJCQkJaWYgKCRkcG9zPWFycmF5X3NlYXJjaCgnc21kX2JlbG93JywgJGNvdW50 bGlzdCkpIHsNCgkJCQkJCSRwb3NvdmVyW10gPSAiYmVsb3ciOw0KCQkJCQkJdW5zZXQoJGNv dW50bGlzdFskZHBvc10pOw0KCQkJCQl9DQoJCQkJCSRjb3VudGxpc3QgPSBhcnJheV9tZXJn ZSgkY291bnRsaXN0KTsgLy8gcmUtaW5kZXgNCg0KCQkJCQkkcG9zb3ZlciA9IChlbXB0eSgk cG9zb3ZlcikpID8gJGNvdW50cG9zbnMgOiAkcG9zb3ZlcjsNCgkJCQkJJGRpdmJ5ID0gZmFs c2U7DQoJCQkJCWlmICgkY291bnRsaXN0WzBdID09ICdzbWRfZXZlcnknKSB7DQoJCQkJCQkk ZGl2YnkgPSB0cnVlOw0KCQkJCQkJYXJyYXlfc2hpZnQoJGNvdW50bGlzdCk7DQoJCQkJCX0N CgkJCQkJJG51bWZvcm1zID0gY291bnQoJGNvdW50bGlzdCk7DQoJCQkJCSRjYWxsZm9ybSA9 IGZldGNoX2Zvcm0oJGNvdW50bGlzdFskbnVtZm9ybXMtMV0pOw0KCQkJCQl1bnNldCgkY291 bnRsaXN0WyRudW1mb3Jtcy0xXSk7DQoJCQkJCSRvcmxvZ2ljID0gJGFuZGxvZ2ljID0gYXJy YXkoKTsNCg0KCQkJCQkvLyBDaGVjayBpZiBhbnkgdmFsdWUgaXMgYSByYW5nZSBhbmQgZXhw YW5kIGl0IGlmIHNvDQoJCQkJCSRmdWxsY291bnRsaXN0ID0gYXJyYXkoKTsNCgkJCQkJZm9y ZWFjaCAoJGNvdW50bGlzdCBhcyAkY3VzdGNvdW50KSB7DQoJCQkJCQlpZiAocHJlZ19tYXRj aCgnL14oXGQrKVwtKFxkKykkLycsICRjdXN0Y291bnQpKSB7DQoJCQkJCQkJbGlzdCgkbG8s ICRoaSkgPSBleHBsb2RlKCItIiwgJGN1c3Rjb3VudCwgMik7DQoJCQkJCQkJJGZ1bGxjb3Vu dGxpc3QgKz0gcmFuZ2UoJGxvLCAkaGkpOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkkZnVs bGNvdW50bGlzdFtdID0gJGN1c3Rjb3VudDsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJCQkJCSRj b3VudGxpc3QgPSAkZnVsbGNvdW50bGlzdDsNCgkJCQkJZm9yZWFjaCAoJGNvdW50bGlzdCBh cyAkY3VzdGNvdW50KSB7DQoJCQkJCQkkc2hvd3ZhbCA9IChzdHJwb3MoJGN1c3Rjb3VudCwg IiEiKSA9PT0gMCkgPyBmYWxzZSA6IHRydWU7Ly8gTmVnYXRpdmUgbG9naWMgcmVxdWlyZWQN CgkJCQkJCSRjdXN0Y291bnQgPSBzdHJfcmVwbGFjZSgnIScsICcnLCAkY3VzdGNvdW50KTsN CgkJCQkJCWlmICgkc2hvd3ZhbCkgew0KCQkJCQkJCSRvcmxvZ2ljW10gPSBlbXB0eSgkY3Vz dGNvdW50KSB8fCAoKCRkaXZieSkgPyAoKCRjdHIgJSAkY3VzdGNvdW50ID09PSAwKSA/IHRy dWUgOiBmYWxzZSkgOiAoKCRjdXN0Y291bnQgPT0gJGN0cikgPyB0cnVlIDogZmFsc2UpKTsN CgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJJGFuZGxvZ2ljW10gPSAoJGN1c3Rjb3VudCA9PSAk Y3RyKSA/IGZhbHNlIDogdHJ1ZTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoaW5fYXJy YXkoJzEnLCAkb3Jsb2dpYykgJiYgIWluX2FycmF5KCcwJywgJGFuZGxvZ2ljKSkgew0KCQkJ CQkJaWYgKGluX2FycmF5KCJhYm92ZSIsICRwb3NvdmVyKSkgew0KCQkJCQkJCSRjb3VudHBy ZVtdID0gcGFyc2Uoc3RydHIoJGNhbGxmb3JtLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQkJCQl9 DQoJCQkJCQlpZiAoaW5fYXJyYXkoImJlbG93IiwgJHBvc292ZXIpKSB7DQoJCQkJCQkJJGNv dW50cG9zdFtdID0gcGFyc2Uoc3RydHIoJGNhbGxmb3JtLCAkcmVwbGFjZW1lbnRzKSk7DQoJ CQkJCQl9DQoJCQkJCX0NCiAgICAgICAgICAgIH0NCgkJCX0NCg0KCQkJaWYgKCRkZWJ1ZyA+ IDAgJiYgKCRjb3VudHByZSB8fCAkY291bnRwb3N0KSkgew0KCQkJCWVjaG8gIisrIENPVU5U IEZPUk0gVFJJR0dFUkVEICsrIjsNCgkJCQlpZiAoJGNvdW50cHJlKSB7DQoJCQkJCWRtcCgk Y291bnRwcmUpOw0KCQkJCX0NCgkJCQlpZiAoJGNvdW50cG9zdCkgew0KCQkJCQlkbXAoJGNv dW50cG9zdCk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBJbiBjb2xsYXRlIG1vZGUgdGhlIGZv cm0gaXMgb25seSBwYXJzZWQgYXQgdGhlIGVuZDogYnVpbGQgYSBjb2xsb3NhbCBtdWx0aS1k aW1lbnNpb24gYXJyYXkgb2YgYWxsIGl0ZW1zIGhlcmUNCgkJCWlmICgkY29sbGF0ZSkgew0K CQkJCWZvcmVhY2ggKCRyZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0K CQkJCQkkY29sbGF0aW9uc1skZGVmTmFtZV1bXSA9ICRkZWZWYWw7DQoJCQkJfQ0KCQkJfSBl bHNlIHsNCgkJCQlpZiAoJGNvdW50aW5nKSB7DQoJCQkJCSR0aHVtYm91dCA9IGFycmF5X21l cmdlKCR0aHVtYm91dCwgJGNvdW50cHJlKTsNCgkJCQl9DQoNCgkJCQlpZiAoJHRodW1iSWR4 IDwgJGdyb3VwbGltaXQpIHsNCgkJCQkJJHRodW1ib3V0W10gPSBwYXJzZShzdHJ0cigkdGhp bmcsICRyZXBsYWNlbWVudHMpKTsNCgkJCQl9DQoJCQkJaWYgKCRjb3VudGluZykgew0KCQkJ CQkkdGh1bWJvdXQgPSBhcnJheV9tZXJnZSgkdGh1bWJvdXQsICRjb3VudHBvc3QpOw0KCQkJ CX0NCgkJCX0NCg0KCQkJLy8gS2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCB2YWx1ZXMgc28g d2Uga25vdyBpZiB0aGV5IGNoYW5nZSBuZXh0IHRpbWUNCgkJCWZvcmVhY2ggKCRyZXNldE9w dHMgYXMgJHJlc2V0T3B0ID0+ICRyZXNldFZhbCkgew0KCQkJCWlmIChzdHJwb3MoJHJlc2V0 T3B0LCAnc21kX2V2ZXJ5JykgPT09IGZhbHNlKSB7DQoJCQkJCSRyZXNldE9wdHNbJHJlc2V0 T3B0XSA9ICRyb3dbJHJlc2V0T3B0XTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkcmVzZXRPcHRz WyRyZXNldE9wdF0gPSAkdGh1bWJDdHI7DQoJCQkJfQ0KCQkJfQ0KCQkJJHRodW1iSWR4Kys7 DQoJCQkkdGh1bWJDdHIrKzsNCgkJCSRpZHgrKzsNCgkJCSRjdHIrKzsNCgkJfQ0KCQlpZiAo JGNvbGxhdGUpIHsNCgkJCWZvcmVhY2ggKCRjb2xsYXRpb25zIGFzICRpdGVtID0+ICRsaXN0 KSB7DQoJCQkJLy8gUXVvdGUgdGhlIGxpc3RzIGlmIHJlcXVpcmVkDQoJCQkJJGxpc3QgPSAo ZW1wdHkoJGRibFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJGRibFF1b3RlKSkgPyBkb0Fy cmF5KCRsaXN0LCAnc21kX2RvRGJsUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRsaXN0ID0gKGVt cHR5KCRzZ2xRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRzZ2xRdW90ZSkpID8gZG9BcnJh eSgkbGlzdCwgJ2RvUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRjb2xsYXRpb25zWyRpdGVtXSA9 IGltcGxvZGUoJGNvbGxhdGVkZWxpbSwgJGxpc3QpOw0KCQkJfQ0KCQkJaWYgKCRkZWJ1ZyA+ IDApIHsNCgkJCQllY2hvICIrKyBDT0xMQVRJT05TICsrIjsNCgkJCQlkbXAoJGNvbGxhdGlv bnMpOw0KCQkJfQ0KCQkJJHRodW1ib3V0W10gPSBwYXJzZShzdHJ0cigkdGhpbmcsICRjb2xs YXRpb25zKSk7DQoJCX0NCg0KCQkvLyBUYWNrIG9uIHRoZSBwYWdpbmcgZnJvbSBlYXJsaWVy IGlmIGl0J3MgdG8gZ28gYWZ0ZXJ3YXJkcw0KCQlpZiAoKCRsaW1pdCA+IDApICYmICRwYWdp bmcpIHsNCgkJCWlmICgkZGVidWcgPiAwKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIFJFUExB Q0VNRU5UUyArKyI7DQoJCQkJZG1wKCRyZXBhZ2VtZW50cyk7DQoJCQl9DQoJCX0NCgl9DQoN CgkvLyBBZGQgdGhlIHBhZ2luZyB0byB0aGUgb3V0cHV0IGlmIGl0J3MgdG8gZ28gYWJvdmUg dGhlIHRodW1icw0KCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQlpZiAoaW5f YXJyYXkoImFib3ZlIiwgJHBhZ2VvdXQpKSB7DQoJCQkkb3V0W10gPSBkb1dyYXAoJG5hdm91 dCwgJG5hdndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0KCQl9DQoJfQ0KDQoJJG91dFtdID0g ZG9XcmFwKCR0aHVtYm91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAkYnJlYWtjbGFz cywgJycsICcnLCAkaHRtbF9pZCk7DQoNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcp IHsNCgkJaWYgKGluX2FycmF5KCJiZWxvdyIsICRwYWdlb3V0KSkgew0KCQkJJG91dFtdID0g ZG9XcmFwKCRuYXZvdXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCX0N Cg0KCWlmICgkZGVidWcgPiAyKSB7DQoJCWVjaG8gIisrIEZJTkFMIE9VVFBVVCArKyI7DQoJ CWRtcCgkb3V0KTsNCgl9DQoNCglyZXR1cm4gam9pbigiICIsICRvdXQpOw0KfQ0KDQovLyBX b3JrIG91dCB3aGljaCBwYWdlIHRoaXMgZ2FsbGVyeSBpcyBvbiBhbmQgcmV0dXJuIHRoZSBy ZWxldmFudCBpbmZvDQpmdW5jdGlvbiBzbWRfZ2V0UGFnZSgkcnMsICRnYWxsSUQsICRsaW1p dCwgJG9mZnNldCwgJHBhZ2luZykgew0KCSRudW1UaHVtcyA9IGNvdW50KCRycykgLSAkb2Zm c2V0Ow0KCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkkbnVtUGFnZXMgPSAo JG51bVRodW1zID4gMCkgPyBjZWlsKCRudW1UaHVtcy8kbGltaXQpIDogMTsNCgkJJHRodW1Q YWdlID0gKCFncHMoJGdhbGxJRCkpID8gMSA6IGdwcygkZ2FsbElEKTsNCgkJJG9mZnNldCA9 ICgoJHRodW1QYWdlIC0gMSkgKiAkbGltaXQpICsgJG9mZnNldDsNCgl9IGVsc2Ugew0KCQkv LyBObyBwYWdpbmcgcmVxdWlyZWQNCgkJJG51bVBhZ2VzID0gMTsNCgkJJHRodW1QYWdlID0g MTsNCgl9DQoJcmV0dXJuIGFycmF5KCRudW1UaHVtcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2Us ICRvZmZzZXQpOw0KfQ0KDQovLyBSZWFkIHRoZSBnaXZlbiBkZWxpbWl0ZWQgZGlyZWN0b3Jp ZXMgYW5kIGdldCBhbGwgZmlsZXMgdGhhdCBtYXRjaC4NCi8vIEdvIGRvd24gYXMgbWFueSBz dWJkaXIgbGV2ZWxzIGFzIGdpdmVuIGluIHRoZSAkc3ViIHBhcmFtZXRlcg0KZnVuY3Rpb24g c21kX2RvRGlyZWN0b3J5KCRsc3QsICRsdmw9MCwgJHN1Yj0wLCAkbWF0Y2g9IiIsICRkbG09 IiwiLCAkc3BjPTEsICRjdHI9MCkgew0KCWxpc3QoJGRpcmluYywgJGRpcmV4YykgPSBzbWRf ZG9MaXN0KCRsc3QsIGZhbHNlLCAkc3ViLCBmYWxzZSwgJGRsbSwgJHNwYyk7DQoJbGlzdCgk bWF0Y2hpbmMsICRtYXRjaGV4YykgPSBzbWRfZG9MaXN0KCRtYXRjaCwgZmFsc2UsICcnLCBm YWxzZSwgJGRsbSwgJHNwYyk7DQoJJG1hdGNoaW5jID0gIi4qIiAuKCgkbWF0Y2hpbmMpID8g IigiIC5pbXBsb2RlKCJ8IiwkbWF0Y2hpbmMpLiIpKy4qIiA6ICIiKTsNCgkkbWF0Y2hleGMg PSAoJG1hdGNoZXhjKSA/ICIuKigiIC5pbXBsb2RlKCJ8IiwkbWF0Y2hleGMpLiIpKy4qIiA6 ICJzbWRfZ2xyeV8iLm10X3JhbmQoKTsNCg0KCSRzdWIgPSAoZW1wdHkoJHN1YikpID8gMCA6 ICRzdWI7DQoJJHN1YiA9IChzdHJ0b2xvd2VyKCRzdWIpPT0iYWxsIikgPyA5OTk5OSA6ICRz dWI7DQoJJGZpbGVMaXN0ID0gYXJyYXkoKTsNCglmb3JlYWNoICgkZGlyaW5jIGFzICRkaXIp IHsNCgkJaWYgKCRoYW5kbGUgPSBAb3BlbmRpcigkZGlyKSkgew0KCQkJd2hpbGUgKCgkZmls ZSA9IEByZWFkZGlyKCRoYW5kbGUpKSAhPT0gZmFsc2UpIHsNCgkJCQkkZnVsbHBhdGggPSAk ZGlyLkRTLiRmaWxlOw0KCQkJCWlmIChwcmVnX21hdGNoKCIvIi4kbWF0Y2hpbmMuIi8iLCAk ZnVsbHBhdGgpICYmICFwcmVnX21hdGNoKCIvIi4kbWF0Y2hleGMuIi8iLCAkZnVsbHBhdGgp KSB7DQoJCQkJCWlmIChpc19kaXIoJGZ1bGxwYXRoKSkgew0KCQkJCQkJaWYgKCgkZmlsZSA9 PSAiLiIpIHx8ICgkZmlsZT09ICIuLiIpIHx8IChpbl9hcnJheSgkZmlsZSwgJGRpcmV4Yykp IHx8ICgkbHZsID49ICRzdWIpKSB7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9IGVsc2Ug ew0KCQkJCQkJCS8vIFJlY3Vyc2UgdGhlIHN1YmRpci4gTm90ZSB0aGF0IHRoZSAnIScgaXMg dGVtcG9yYXJpbHkgYWRkZWQgYmFjayB0byBlYWNoIGRpcmV4YyBpdGVtDQoJCQkJCQkJJHRt cCA9ICRkaXJleGM7IC8vIERvbid0IG92ZXJ3cml0ZSB0aGUgb3JpZ2luYWwgYXJyYXkNCgkJ CQkJCQlhcnJheV91bnNoaWZ0KCR0bXAsICRmdWxscGF0aCk7DQoJCQkJCQkJJHN1YkZpbGVz ID0gc21kX2RvRGlyZWN0b3J5KGltcGxvZGUoJGRsbS4iISIsICR0bXApLCAkbHZsKzEsICRz dWIsICRtYXRjaCwgJGRsbSwgJHNwYywgJGN0cik7DQoJCQkJCQkJJGZpbGVMaXN0ID0gYXJy YXlfbWVyZ2UoJGZpbGVMaXN0LCAkc3ViRmlsZXMpOw0KCQkJCQkJCSRjdHIgKz0gY291bnQo JHN1YkZpbGVzKTsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsN CgkJCQkJCSRmaWxlc3RhdCA9IHN0YXQoJGZ1bGxwYXRoKTsNCgkJCQkJCSRpbWdzaXplID0g Z2V0aW1hZ2VzaXplKCRmdWxscGF0aCk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ3BhdGgn XSA9ICRkaXI7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ25hbWUnXSA9IGJhc2VuYW1lKCRm dWxscGF0aCk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2lkJ10gPSBwcmVnX3JlcGxhY2Uo Jy9cLi4rJC8nLCAnJywgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydhbHQnXSA9 ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydjYXB0aW9uJ10gPSAnJzsNCgkJCQkJCSRw YXJ0cyA9IGV4cGxvZGUoRFMsICRkaXIpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydjYXRl Z29yeSddID0gKGNvdW50KCRwYXJ0cykgPiAxKSA/IGVuZCgkcGFydHMpIDogJyc7DQoJCQkJ CQkkZmlsZUxpc3RbJGN0cl1bJ2F1dGhvciddID0gc3RydmFsKCRmaWxlc3RhdFsndWlkJ10p Ow0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydkYXRlJ10gPSBzdHJmdGltZSgiJVktJW0tJWQg JUg6JU06JVMiLCAkZmlsZXN0YXRbJ2N0aW1lJ10pOw0KCQkJCQkJJHBhcnRzID0gZXhwbG9k ZSgiLiIsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZXh0J10gPSAoY291bnQo JHBhcnRzKSA+IDEpID8gIi4iLmVuZCgkcGFydHMpIDogJyc7DQoJCQkJCQkkZmlsZUxpc3Rb JGN0cl1bJ3cnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3RydmFsKCRpbWdzaXplWzBd KSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydoJ10gPSAoaXNfYXJyYXkoJGltZ3Np emUpKSA/IHN0cnZhbCgkaW1nc2l6ZVsxXSkgOiAnJzsNCgkJCQkJfQ0KCQkJCQkkY3RyKys7 DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWlmICgkaGFuZGxlKSB7DQoJCQlAY2xvc2VkaXIoJGhh bmRsZSk7DQoJCX0NCgl9DQoJcmV0dXJuICRmaWxlTGlzdDsNCn0iO3M6NDoidHlwZSI7czox OiIwIjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czozOiJtZDUi O3M6MzI6IjlmNWIwZWNiNDcwYTEwMDk2ZGEzNjdiOGM2NTZhYTllIjt9