PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYiBUb29scyBQbGF0Zm9ybTwvdGl0bGU+Cgo8bGluayBocmVmPSIuLi8uLi8uLi8uLi8uLi9kZWZhdWx0X3N0eWxlLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KPC9oZWFkPgoKCjxib2R5PgoKPGRpdiBhbGlnbj0icmlnaHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiwgVGltZXMsIHNlcmlmIgoJc2l6ZT0iMiI+Q29weXJpZ2h0IKkgMjAwNCBOYWNpIERhaS48L2ZvbnQ+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgoJPHRib2R5PgoJCTx0cj4KCQkJPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMDA4MGMwIiB2YWxpZ249InRvcCI+PGI+PGZvbnQKCQkJCWZhY2U9IkFyaWFsLEhlbHZldGljYSI+PGZvbnQgY29sb3I9IiNmZmZmZmYiPkVjbGlwc2UKCQkJQXJ0aWNsZTwvZm9udD48L2ZvbnQ+PC9iPjwvdGQ+CgkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgo8ZGl2IGFsaWduPSJsZWZ0Ij4KPGgxIHRpdGxlPSJSQ1AgVHV0b3JpYWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi9pbWFnZXMvSWRlYS5qcGciCglhbGlnbj0ibWlkZGxlIiBoZWlnaHQ9Ijg2IiB3aWR0aD0iMTIwIj48L2gxPgo8L2Rpdj4KPGgxIGFsaWduPSJjZW50ZXIiPldUUCBUdXRvcmlhbHMgliBCdWlsZGluZyBhbmQgUnVubmluZyBhIFdlYgpBcHBsaWNhdGlvbjwvaDE+CjxwIGNsYXNzPSJzdW1tYXJ5Ij5UaGlzIGRvY3VtZW50IGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZgp0dXRvcmlhbHMgd2hlcmUgd2Ugd2lsbCBkZW1vbnN0cmF0ZSBob3cgeW91IGNhbiB1c2UgdGhlIHJpY2ggc2V0IG9mCnRvb2xzIGFuZCBBUElzIHRoYXQgY29tZXMgd2l0aCB0aGUgV2ViIFRvb2xzIFBsYXRmb3JtIFByb2plY3QuIFRoaXMKZmlyc3QgdHV0b3JpYWwgd2lsbCBnaXZlIHlvdSBhIHN0ZXAgYnkgc3RlcCB0b3VyIG9mIHVzaW5nIHNvbWUgdGhlIHRvb2xzCmZvciB3ZWIgZGV2ZWxvcG1lbnQuIEZvciB0aGlzIHB1cnBvc2Ugd2Ugd2lsbCBidWlsZCBhbmQgcnVuIGEgSjJFRSB3ZWIKYXBwbGljYXRpb24gdXNpbmcgV1RQIHRvb2xzIGFuZCBBcGFjaGUgVG9tY2F0LjwvcD4KPHA+PGI+QnkgTmFjaSBEYWksIEV0ZXJhdGlvbiBBLlMuPC9iPjxicj4KPGZvbnQgc2l6ZT0iLTEiPkRlY2VtYmVyIDcsIDIwMDQ8L2ZvbnQ+PC9wPgo8ZGl2IGFsaWduPSJyaWdodCI+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgoJPHRib2R5PgoJCTx0cj4KCQkJPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMDA4MGMwIiB2YWxpZ249InRvcCI+PGI+PGZvbnQKCQkJCWZhY2U9IkFyaWFsLEhlbHZldGljYSI+PGZvbnQgY29sb3I9IiNmZmZmZmYiPkludHJvZHVjdGlvbjwvZm9udD48L2ZvbnQ+PC9iPjwvdGQ+CgkJPC90cj4KCTwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgo8cD5UaGlzIGRvY3VtZW50IGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiB0dXRvcmlhbHMgd2hlcmUgd2Ugd2lsbApkZW1vbnN0cmF0ZSBob3cgeW91IGNhbiB1c2UgdGhlIHJpY2ggc2V0IG9mIHRvb2xzIGFuZCBBUElzIHRoYXQgY29tZXMKd2l0aCB0aGUgV2ViIFRvb2xzIFBsYXRmb3JtIFByb2plY3QuIFRoaXMgZmlyc3QgdHV0b3JpYWwgd2lsbCBnaXZlIHlvdSBhCnN0ZXAgYnkgc3RlcCB0b3VyIG9mIHVzaW5nIHNvbWUgdGhlIHRvb2xzIGZvciB3ZWIgZGV2ZWxvcG1lbnQuIEZvciB0aGlzCnB1cnBvc2Ugd2Ugd2lsbCBidWlsZCBhbmQgcnVuIGEgSjJFRSB3ZWIgYXBwbGljYXRpb24gdXNpbmcgPGEKCWhyZWY9Ii4uLy4uLy4uLyI+V1RQPC9hPiB0b29scyBhbmQgPGEKCWhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvdG9tY2F0IiB0YXJnZXQ9Il90b3AiPkFwYWNoZSBUb21jYXQ8L2E+Lgo8L3A+CjxkaXYgYWxpZ249InJpZ2h0Ij4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgk8dGJvZHk+CgkJPHRyPgoJCQk8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIGJnY29sb3I9IiMwMDgwYzAiIHZhbGlnbj0idG9wIj48Yj48Zm9udAoJCQkJZmFjZT0iQXJpYWwsSGVsdmV0aWNhIj48Zm9udCBjb2xvcj0iI2ZmZmZmZiI+R2V0dGluZwoJCQlTdGFydGVkPC9mb250PjwvZm9udD48L2I+PC90ZD4KCQk8L3RyPgoJPC90Ym9keT4KPC90YWJsZT4KPC9kaXY+Cgo8aDM+SmF2YSBEZXZlbG9wbWVudCBLaXQ8L2gzPgo8cD5Zb3Ugd2lsbCBuZWVkIGEgSmF2YSBEZXZlbG9wbWVudCBLaXQgKEpESykgdmVyc2lvbiAxLjQuMiBhbmQKYWJvdmUgYXMgRWNsaXBzZSAzLjEgcmVxdWlyZXMgaXQuIEphdmEgUnVudGltZSBFbnZpcm9ubWVudCAoSlJFKSBpcwpzdWZmaWNpZW50IGZvciBFY2xpcHNlIGJ1dCBpdCB3aWxsIG5vdCBiZSBzdWl0YWJsZSBmb3Igd2ViIGFwcGxpY2F0aW9uCmRldmVsb3BtZW50LiBZb3UgY2FuIGdldCBsYXRlc3QgSkRLIGZyb20gPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbSIKCXRhcmdldD0iX3RvcCI+U3VuPC9hPi48YnI+CjwvcD4KPHA+PGltZyBzcmM9ImltYWdlcy9ub3RlLmdpZiIgYWx0PSJOb3RlOiAiIGhlaWdodD0iMTMiIHdpZHRoPSI2MiI+Ck1vc3Qgc2VydmVyIHJ1bnRpbWVzIHJlcXVpcmUgdG9vbHMsIHN1Y2ggYXMgdGhlIGphdmEgY29tcGlsZXIgKGZvdW5kIGluCnRvb2xzLmphciksIHRoYXQgYXJlIG9ubHkgZm91bmQgaW4gdGhlIEpESyBidXQgbm90IHRoZSBKUkUuPC9wPgoKPHA+CjxoMz5TZXJ2ZXIgUnVudGltZTwvaDM+CldlIGFyZSBnb2luZyB0byBiZSBidWlsZCBhIHdlYiBhcHBsaWNhdGlvbiB0aGF0IHJ1bnMgb24gYSBzZXJ2ZXIuIFRvIGRvCnRoaXMgdHV0b3JpYWwgeW91IHdpbGwgbmVlZCBhIHNlcnZlciBydW50aW1lIHRoYXQgaXMgc3VwcG9ydGVkIGJ5IFdUUC4KPGEgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy90b21jYXQiIHRhcmdldD0iX3RvcCI+QXBhY2hlClRvbWNhdDwvYT4KLAo8YSBocmVmPSJodHRwOi8vam9uYXMub2JqZWN0d2ViLm9yZyIgdGFyZ2V0PSJfdG9wIj5PYmplY3RXZWIgSm9uYXM8L2E+CiwgYW5kCjxhIGhyZWY9Imh0dHA6Ly93d3cuamJvc3Mub3JnIiB0YXJnZXQ9Il90b3AiPkpCb3NzPC9hPgphcmUgc29tZSBvZiB0aGUgT1NTIGxpY2Vuc2VkIHNlcnZlciBydW50aW1lcyBzdXBwb3J0ZWQgYnkgV1RQLiBZb3Ugd2lsbApuZWVkIHRvIGRvd25sb2FkIGFuZCBpbnN0YWxsIHRoZSBzZXJ2ZXIgcnVudGltZSBiZWZvcmUgeW91IGNhbiBzdGFydAp3b3JraW5nIHdpdGggV1RQLiBJdCBkb2VzIG5vdCBjb21lIHdpdGggb25lLiBMYXRlciB5b3Ugd2lsbCBsZWFybiBob3cgdG8KdGVsbCBXVFAgdG8gdXNlIHlvdXIgcHJlZmVycmVkIHNlcnZlciBydW50aW1lLgo8YnI+CjxoMz5FY2xpcHNlIGFuZCBvdGhlciBFY2xpcHNlIFByb2plY3RzPC9oMz4KPHA+T2J2aW91c2x5LCB5b3Ugd2lsbCBuZWVkIGFuIGVjbGlwc2UgaW5zdGFsbGF0aW9uLiBUaGUgRWNsaXBzZQpkcml2ZXIgdXNlZCBpbiB0aGlzIHR1dG9yaWFsIGlzIGVjbGlwc2UtU0RLLTMuMU0zLWxpbnV4LWd0ay56aXAuIFlvdSBjYW4KZmluZCBhIHN1aXRhYmxlIGRyaXZlciBmb3IgeW91ciBwbGF0Zm9ybSBhdCBoZXJlLiBXVFAgdXNlcyBjb21wb25lbnRzCmZyb20gb3RoZXIgZWNsaXBzZSBwcm9qZWN0czogVGhlIGVjbGlwc2UgbW9kZWxpbmcgZnJhbWV3b3JrLCBlbWYsIGphdmEKZW1mIG1vZGVsLCBqZW0sIGFyZSB1c2VkIHRvIGRlZmluZSBtb2RlbHMgZm9yIGFydGlmYWN0cyBkZWZpbmVkIGluIG1hbnkKamF2YSwgdzNjLCB4bWwgYW5kIGoyZWUgc3RhbmRhcmRzOyBUaGUgZ3JhcGhpY2FsIGVkaXRpbmcgZnJhbWV3b3JrLCBnZWYsCmlzIHVzZWQgdG8gcHJvdmlkZSBncmFwaGljYWwgZWRpdGluZyBjYXBhYmlsaXRpZXMgZm9yIHhtbCwgeHNkIGFuZCB3c2RsCmVkaXRvcnMsIGV0Yy4gWW91IGNhbiBvYnRhaW4gdGhlc2UgY29tcG9uZW50cyBmcm9tIHRoZWlyIHByb2plY3RzLjwvcD4KPHVsPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mIiB0YXJnZXQ9Il90b3AiPkVNRjwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ2VmIiB0YXJnZXQ9Il90b3AiPkdFRjwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmVwIiB0YXJnZXQ9Il90b3AiPkpFTTwvYT48L2xpPgo8L3VsPgo8aDM+V2ViIFRvb2xzIFBsYXRmb3JtPC9oMz4KPHA+WW91IHdpbGwgbmVlZCB0byBkb3dubG9hZCB0aGUgZnVsbCBXVFAgcGFja2FnZSB0aGF0IGlzIHVzZWQgaW4KdGhpcyB0dXRvcmlhbCBmcm9tIDxhCglocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvd2VidG9vbHMvZG93bmxvYWRzIj53dHAgZG93bmxvYWRzPC9hPi4KWW91IHdpbGwgbmVlZCBhIFdUUCBydW50aW1lLjwvcD4KPHA+T25jZSB5b3UgaGF2ZSBldmVyeXRoaW5nIGRvd25sb2FkZWQsIGluc3RhbGwgSkRLIGFuZCB5b3VyCmZhdm9yaXRlIHNlcnZlciBydW50aW1lLCBhbmQgdW56aXAgZWNsaXBzZSwgZW1mLCBnZWYsIGplbSBhbmQgd3RwIHppcApmaWxlcyB0byBhIGZvbGRlci4gWW91IGFyZSByZWFkeSB0byBnbyE8L3A+CjxkaXYgYWxpZ249InJpZ2h0Ij4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cgk8dGJvZHk+CgkJPHRyPgoJCQk8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIGJnY29sb3I9IiMwMDgwYzAiIHZhbGlnbj0idG9wIj48Yj48Zm9udAoJCQkJZmFjZT0iQXJpYWwsSGVsdmV0aWNhIj48Zm9udCBjb2xvcj0iI2ZmZmZmZiI+U2V0dXA8L2ZvbnQ+PC9mb250PjwvYj48L3RkPgoJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L2Rpdj4KCjxwPgo8aDM+UHJlZmVyZW5jZXM8L2gzPgoKPHA+QWZ0ZXIgeW91IGxhdW5jaCBlY2xpcHNlIGZvciB0aGUgZmlyc3QgdGltZSwgYnV0IGJlZm9yZSB3ZSBjYW4KYnVpbGQgb3VyIGZpcnN0IHdlYiBhcHBsaWNhdGlvbiwgd2UgbmVlZCB0byBkbyBhIGxpdHRsZSBlY2xpcHNlIGhvdXNlCmtlZXBpbmc6IElmIGl0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQsIHlvdSB3aWxsIG5lZWQgdG8gc2V0IHRoZSBKYXZhCnByZWZlcmVuY2VzIHRvIHBvaW50IHRvIHlvdXIgSkRLIGluc3RhbGxhdGlvbiAoc2VlIGZpZ3VyZSkuIFlvdSBzaG91bGQKaGF2ZSBvYnRhaW5lZCB0aGUgbGF0ZXN0IEpESyBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20iCgl0YXJnZXQ9Il90b3AiPlN1bjwvYT4uPC9wPgo8cD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTEucG5nIiB3aWR0aD0iMzkyIiBoZWlnaHQ9IjM2NSI+PC9wPgo8aDM+Q2hvb3NlIGEgU2VydmVyIFJ1bnRpbWUgRW52aXJvbm1lbnQ8L2gzPgo8cD5UaGlzIHN0ZXAgaW52b2x2ZXMgY2hhbmdpbmcgb3IgY3JlYXRpbmcgdGhlIHNldHRpbmdzIGZvcgpJbnN0YWxsZWQgU2VydmVyIFJ1bnRpbWVzLiBEdXJpbmcgd2ViIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LCB3ZSB3aWxsCm5lZWQgYSBzZXJ2ZXIgcnVudGltZSBlbnZpcm9ubWVudCB0byB0ZXN0LCBkZWJ1ZyBhbmQgcnVuIG91ciBwcm9qZWN0LiBXZQpiZWdpbiBieSB0ZWxsaW5nIHd0cCB3aGF0IG91ciBzZXJ2ZXIgcnVudGltZSBpcywgYW5kIHdoZXJlIGl0IGlzCmxvY2F0ZWQuIEEgJiM4MjIwO3NlcnZlciBydW50aW1lIGVudmlyb25tZW50JiM4MjIxOyBpcyBub3QgYSBzZXJ2ZXIuIEl0CnByb3ZpZGVzIHRoZSBlbnZpcm9ubWVudCwgbGlicmFyaWVzIGFuZCBpbmZyYXN0cnVjdHVyZSB0aGF0IGEKJiM4MjIwO3NlcnZlciYjODIyMTsgbmVlZHMuIEEgc2VydmVyIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBzZXJ2ZXIKcnVudGltZSB0aGF0IGNhbiBob3N0IG91ciB3ZWIgYXBwbGljYXRpb25zIGFuZCBvdGhlciBzZXJ2ZXItc2lkZQpjb21wb25lbnRzLiBUbyBkZWZpbmUgYSBzZXJ2ZXIgcnVudGltZSwgd2UgbmVlZCB0byB2aXNpdCB0aGUgYXBwcm9wcmlhdGUKUHJlZmVyZW5jZXMgcGFnZTo8L3A+CjxwPjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlMi5wbmciIHdpZHRoPSI0MDQiIGhlaWdodD0iNDAyIj48L3A+CjxwPkhlcmUgeW91IHdpbGwgZmluZCBhIGxpc3Qgb2Ygc2VydmVyIHJ1bnRpbWVzIHRoYXQgaGF2ZSBiZWVuCmRlZmluZWQgcHJldmlvdXNseS4gWW91IGNhbiBjaG9vc2UgYSBzZXJ2ZXIgcnVudGltZSBhbmQgY2hhbmdlIGl0cwpwcm9wZXJ0aWVzLiBUbyBhZGQgYSBuZXcgb25lIGNsaWNrICYjODIyMDtBZGQmIzgyMzA7JiM4MjIxOy4gQSB3aXphcmQKd2lsbCBwb3B1cCBhbmQgZGlzcGxheSBhIGxpc3Qgb2Ygc2VydmVyIHJ1bnRpbWVzIHRoYXQgYXJlIHN1cHBvcnRlZCBieQpXVFAuIENob29zZSB5b3VyIHNlcnZlciBydW50aW1lIGZyb20gdGhlIGxpc3QuIEpvbmFzIGFuZCBKQm9zcyBhcmUKY3VycmVudGx5IHN1cHBvcnRlZCB1bmRlciB0aGUgJiM4MjIwO0dlbmVyaWMgU2VydmVyIFJ1bnRpbWUmIzgyMjE7LgpCYXNpYyAmIzgyMjA7SjJFRSBSdW50aW1lIExpYnJhcnkmIzgyMjE7IGlzIG5vdCBhIHRydWUgc2VydmVyIHJ1bnRpbWUsCmJ1dCBjYW4gYmUgdXNlZCBmb3IgY29kaW5nIHN1cHBvcnQgb25seS4gSXQgZG9lcyBub3QgcHJvdmlkZSBhIHNlcnZlcgppbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHJ1biB3ZWIgYXJ0aWZhY3RzLjwvcD4KPHA+QWZ0ZXIgeW91IGNsaWNrICYjODIyMDtOZXh0JiM4MjIxOywgeW91IHdpbGwgaGF2ZSB0byBjaG9vc2UgdGhlCkpESyBhbmQgdGhlIGZvbGRlciB3aGVyZSB5b3UgaGF2ZSBpbnN0YWxsZWQgeW91ciBzZXJ2ZXIgcnVudGltZS4gT2YKY291cnNlLCBiYXNlZCBvbiB5b3VyIGNob2ljZSBvZiB0aGUgc2VydmVyIHJ1bnRpbWUsIHlvdSB3aWxsIGJlIGFza2VkIHRvCnByb3ZpZGUgZGlmZmVyZW50IHByb3BlcnRpZXMuIENsaWNrIGZpbmlzaC4gTm93IHdlIGNhbiBkbyB0aGUgZnVuIHBhcnQuPGJyPgo8aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTMucG5nIiB3aWR0aD0iMzE3IiBoZWlnaHQ9IjM2NCI+PC9wPgo8cD48aW1nIHNyYz0iaW1hZ2VzL25vdGUuZ2lmIiBhbHQ9Ik5vdGU6ICIgaGVpZ2h0PSIxMyIgd2lkdGg9IjYyIj4KV2UgY2hvc2UgQXBhY2hlIFRvbWNhdC4gWW91IGNhbiBhbHNvIGNob29zZSBhbm90aGVyIHNlcnZlciBzdWNoIGFzCk9iamVjdFdlYiBKb25hcy4gSWYgeW91IHdvdWxkIGxpa2UgdG8gdXNlIHRoZW0gYXMgeW91ciBydW50aW1lLCBzZWxlY3QKdGhlICYjODIyMDtHZW5lcmljIFNlcnZlciYjODIyMTssIGFuZCBmb2xsb3cgdGhlIHdpemFyZCB0byBkZWZpbmUgdGhlCnByb3BlcnRpZXMgZm9yIEpvbmFzLCBKQm9zcyBvciBXZWJsb2dpYy4gVGhlcmUgYXJlIGRpZmZlcmVuY2VzIGJldHdlZW4KZm9yIHNlcnZlciBydW50aW1lczsgQXBhY2hlIFRvbWNhdCBwcm92aWRlcyBkeW5hbWljIGRldmVsb3BtZW50IHN1cHBvcnQ7CmkuZTogdGhlIGFiaWxpdHkgdG8gcnVuIHRoZSB3ZWIgYXBwbGljYXRpb24gZnJvbSB0aGUgZWNsaXBzZSBwcm9qZWN0CndpdGhvdXQgdGhlIG5lZWQgdG8gcHVibGlzaCB0aGUgYXJ0aWZhY3RzIHRvIGEgc2VydmVyLiBHZW5lcmljIHNlcnZlcgpkb2VzIG5vdCBzdXBwb3J0IGR5bmFtaWMgZGV2ZWxvcG1lbnQsIGJ1dCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgcHVibGlzaAp0aGUgYXJ0aWZhY3RzICh5b3VyIHdlYiBhcHBsaWNhdGlvbikgdG8gdGhlIHNlcnZlciB3aGVuIHlvdSBydW4uPC9wPgo8ZGl2IGFsaWduPSJyaWdodCI+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgoJPHRib2R5PgoJCTx0cj4KCQkJPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMDA4MGMwIiB2YWxpZ249InRvcCI+PGI+PGZvbnQKCQkJCWNvbG9yPSIjRkZGRkZGIiBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPkRldmVsb3BpbmcgdGhlCgkJCUFwcGxpY2F0aW9uPC9mb250PjwvYj48L3RkPgoJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L2Rpdj4KCjxwPkluIHRoaXMgc2VjdGlvbiB3ZSB3aWxsIGNyZWF0ZSBhIEoyRUUgd2ViIGFwcGxpY2F0aW9uIHRoYXQKY29udGFpbnMgdHlwaWNhbCBjb21wb25lbnRzIHN1Y2ggYXMgc2VydmxldHMgYW5kIEpTUHMuIFdlIHdpbGw6PGJyPgomIzgyMjY7IENyZWF0ZSBhIHByb2plY3Qgd2l0aCBhIHdlYiBtb2R1bGU8YnI+CiYjODIyNjsgQ3JlYXRlIGEgc2VydmxldDxicj4KJiM4MjI2OyBFZGl0IGRlcGxveW1lbnQgZGVzY3JpcHRvcjxicj4KJiM4MjI2OyBDcmVhdGUgYW5kIGVkaXQgYSBKU1AKPHA+CjxoMz5DcmVhdGUgYSBKMkVFIFdlYiBQcm9qZWN0IHdpdGggYSB3ZWIgbW9kdWxlPC9oMz4KPHA+R28gdG8gTmV3LSZndDtQcm9qZWN0LiBDaG9vc2UgV2ViIGNhdGVnb3J5IGZyb20gdGhlIGxpc3Qgb2YKYXZhaWxhYmxlIHdpemFyZHMgdG8gY3JlYXRlIGEgbmV3IGVjbGlwc2UgcmVzb3VyY2UuIFlvdSB3aWxsIGZpbmQgdHdvCnByb2plY3QgdHlwZXMgYXZhaWxhYmxlIHVuZGVyIHRoaXMgY2F0ZWdvcnkuIFNpbXBsZSBXZWIgUHJvamVjdCBpcyBhCmJhc2ljIEVjbGlwc2UgcmVzb3VyY2UgcHJvamVjdCB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBzZXJ2ZXIuIFdlCmFyZSBpbnRlcmVzdGVkIGluIGNyZWF0aW5nIGEgSjJFRSBXZWIgQXBwbGljYXRpb24sIHNvIHdlIHdpbGwgY2hvb3NlIHRoZQpKMkVFIFdlYiBQcm9qZWN0IGhlcmU6PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTQucG5nIiB3aWR0aD0iMzI3IiBoZWlnaHQ9IjM4MCI+PC9wPgo8cD5BIEoyRUUgV2ViIFByb2plY3QgaXMgYSB0eXBlIG9mIEphdmEgcHJvamVjdCB0aGF0IGhhcyBiZWVuCmluaXRpYWxpemVkIHRvIGhvc3QgYSBzZXJ2ZXItc2lkZSBhcHBsaWNhdGlvbi4gSXQgbmVlZHMgdG8gYmUgYXNzb2NpYXRlZAp3aXRoIGEgVGFyZ2V0IFNlcnZlci4gPGJyPgpBIHRhcmdldCBzZXJ2ZXIgcHJvdmlkZXMgdGhlIGNvbnRhaW5lciB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZXhlY3V0ZSBvdXIKd2ViIGFwcGxpY2F0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHdpbGwgcHJvdmlkZSBhIHNldCBvZiBsaWJyYXJpZXMKKGphcnMpLCB0aGF0IGFyZSBhZGRlZCB0byB0aGUgcHJvamVjdCBjbGFzc3BhdGgsIHdoaWNoIGFyZSBuZWVkZWQgdG8KY29tcGlsZSBvdXIgY3VzdG9tIGNsYXNzZXMuIEUuZy46IHRvIGNyZWF0ZSBhIG5ldyBTZXJ2bGV0LCB3ZSBuZWVkCmphdmF4LnNlcnZsZXQuKiBwYWNrYWdlcy4gVGhlc2UgYXJlIG5vdCBhIHBhcnQgb2YgdGhlIEpESyBsaWJyYXJpZXMuClNlcnZlciBydW50aW1lIHByb3ZpZGVzIHRoZW0gdG8gdGhlIHByb2plY3QuIElmIHlpdSBoYXZlIHNraXBwZWQgdGhlCnByZXZpb3Mgc3RlcCB3aGVyZSB3ZSBkZWZpbmVkIGEgc2VydmVyIHJ1bnRpbWUsIHlvdSB3aWxsIGdldCBhIGNoYW5jZSB0bwpkZWZpbmUgb25lIGhlcmUgYnkgY2xpY2tpbmcgb24gdGhlIE5ldyYjODIzMDsuPGJyPgpNYWtlIHN1cmUgdGhhdCAmIzgyMjA7QWRkIG1vZHVsZSB0byBhbiBFQVIgcHJvamVjdCYjODIyMTsgaXMgbm90CnNlbGVjdGVkLiBXZSB3aWxsIGNyZWF0ZSBhIHN0YW5kYWxvbmUgd2ViIGFwcGxpY2F0aW9uIHRoYXQgY2FuIGJlCmRlcGxveWVkIGFzIGEgc3RhbmRhcmQgd2ViIG1vZHVsZS48YnI+CkZpbmFsbHksIHdlIHdpbGwgY2hhbmdlIHRoZSBjb250ZXh0IHJvb3QgdG8gJiM4MjIwO3R1dG9yaWFsJiM4MjIxOy4gVGhpcwppcyB1c2VkIHdoZW4geW91IGFjY2VzcyB0aGUgd2ViIGFwcGxpY2F0aW9uIHdpdGggYSBVUkwsIGkuZS4KaHR0cDovL2xvY2FsaG9zdDo4MDgwL3R1dG9yaWFsIDxicj4KPGltZyBzcmM9ImltYWdlcy9maWd1cmU1LnBuZyIgd2lkdGg9IjQ5MyIgaGVpZ2h0PSI0ODYiPjwvcD4KPHA+V2hlbiB0aGUgd2l6YXJkIGNvbXBsZXRlcyBpdHMgdGFza3MsIHlvdSB3aWxsIGZpbmQgdGhhdCBpdCBoYXMKY3JlYXRlIGEgbmV3IEphdmEgUHJvamVjdCBhbmQgaGFzIGluaXRpYWxpemVkIGl0IHNvIHRoYXQgeW91IGNhbiBzdGFydAp3aXRoIHlvdXIgZGV2ZWxvcG1lbnQgcmlnaHQgYXdheTogSXQgaGFzIGNyZWF0ZWQgYSBqYXZhIHNvdXJjZSBmb2xkZXIuCllvdSB3aWxsIGFkZCB5b3VyIGN1c3RvbSBqYXZhIHBhY2thZ2VzIGFuZCBjbGFzc2VzIGhlcmUuIEl0IGhhcyBkZWZpbmVkCnRoZSBjbGFzc3BhdGggKEpSRSBhbmQgVG9tY2F0KSBzbyB0aGF0IHlvdSB3aWxsIGhhdmUgSjJFRSBsaWJyYXJpZXMgaW4KeW91ciBwcm9qZWN0IGNsYXNzcGF0aC4gSXQgaGFzIGNyZWF0ZWQgYSByZXNvdXJjZSBmb2xkZXIgbmFtZWQKJiM4MjIwO1dlYiBDb250ZW50JiM4MjIxOywgd2hpY2ggbWltaWNzIHRoZSBzdGFuZGFyZCBXQVIgc3RydWN0dXJlIGZyb20KdGhlIEoyRUUgc3BlY2lmaWNhdGlvbi4gSXQgd2lsbCBjb250YWluIHRoZSB3ZWIgcmVzb3VyY2VzIHRoYXQgd2lsbCBiZQpwYWNrYWdlZCB3aXRoIHlvdXIgSjJFRSB3ZWIgbW9kdWxlLiBBbGwgYXJ0aWZhY3RzIGluc2lkZSB0aGlzIGZvbGRlciBhcmUKYWNjZXNzaWJsZSBmcm9tIHRoZSBXZWIgQXBwbGljYXRpb24gY29udGV4dC48L3A+CjxwPjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlNi5wbmciIHdpZHRoPSI1NzciIGhlaWdodD0iNDE2Ij48L3A+CjxwPgo8aDM+VGhlIERlc2lnbjwvaDM+CjxwPlRoaXMgaXMgYSBzaW1wbGUgSGVsbG8gV1RQIGFwcGxpY2F0aW9uLiBXZSB3aWxsIGNhbGwgYSBzaW1wbGUKJiM4MjIwO3Nub29wIHNlcnZsZXQmIzgyMjE7IHRoYXQgd2lsbCBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZQpjbGllbnQgYnJvd3NlciBpbiBhIEpTUCBmaWxlLjxicj4KPGltZyBzcmM9ImltYWdlcy9maWd1cmU3LnBuZyIgd2lkdGg9IjQzOSIgaGVpZ2h0PSIzODMiPjwvcD4KPHA+CjxoMz5DcmVhdGUgYSBTZXJ2bGV0PC9oMz4KPHA+R28gdG8gTmV3LSZndDtDbGFzcy4gQ3JlYXRlIGEgbmV3IEphdmEgY2xhc3MgdGhhdCBpcyBhIHN1YmNsYXNzCm9mIHRoZSBzdGFuZGFyZCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQ6PC9wPgo8cD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlOC5wbmciIHdpZHRoPSI0OTAiIGhlaWdodD0iNTU1Ij48L3A+CjxwPkFkZCB0aGUgY29kZSBwcm92aWRlZCBpbiBMaXN0aW5nIDEgdG8gdGhlIHNlcnZsZXQ6PC9wPgo8cD48Yj5MaXN0aW5nIDEuIFNub29wU2VydmxldC5qYXZhPC9iPjwvcD4KPHByZT5wYWNrYWdlIG9yZy5lY2xpcHNlLnd0cC50dXRvcmlhbDsKCmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwoKaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjsKaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldDsKaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CmltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKCnB1YmxpYyBjbGFzcyBTbm9vcFNlcnZsZXQgZXh0ZW5kcyBIdHRwU2VydmxldCB7CglwdWJsaWMgdm9pZCBkb0dldChIdHRwU2VydmxldFJlcXVlc3QgcmVxLCBIdHRwU2VydmxldFJlc3BvbnNlIHJlc3ApCgkJCXRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CgkJU3RyaW5nIHVzZXJBZ2VudCA9ICByZXEuZ2V0SGVhZGVyKCJ1c2VyLWFnZW50Iik7CgkJU3RyaW5nIGNsaWVudEJyb3dzZXIgPSAgIk5vdCBrbm93biEiOwkKCQlpZiggdXNlckFnZW50ICE9IG51bGwpCgkJCWNsaWVudEJyb3dzZXIgPSB1c2VyQWdlbnQ7CgkJcmVxLnNldEF0dHJpYnV0ZSgiY2xpZW50LmJyb3dzZXIiLGNsaWVudEJyb3dzZXIgKTsKCQlyZXEuZ2V0UmVxdWVzdERpc3BhdGNoZXIoIi9zaG93QnJvd3Nlci5qc3AiKS5mb3J3YXJkKHJlcSxyZXNwKTsKCX0KfTwvcHJlPgoKCjxoMz5FZGl0IFdlYiBNb2R1bGUgRGVwbG95bWVudCBEZXNjcmlwdG9yPC9oMz4KPHA+V2ViIG1vZHVsZXMgaW4gSjJFRSBoYXMgYSBkZXBsb3ltZW50IGRlc2NyaXB0b3Igd2hlcmUgeW91CmNvbmZpZ3VyZSB0aGUgd2ViIGFwcGxpY2F0aW9uIGFuZCBpdHMgY29tcG9uZW50cy4gVGhpcyBkZXBsb3ltZW50CmRlc2NyaXB0b3JzIGlzIGNhbGxlZCB0aGUgd2ViLnhtbC4gQWNjb3JkaW5nIHRvIHRoZSBKMkVFIHNwZWNpZmljYXRpb24sCml0IG11c3QgYmUgbG9jYXRlZCBpbiB0aGUgV0VCLUlORiBmb2xkZXIuIHdlYi54bWwgbXVzdCBoYXZlIGRlZmluaXRpb25zCmZvciB0aGUgU2VydmxldCBhbmQgdGhlIFNlcnZsZXQgVVJJIG1hcHBpbmcuIEVudGVyIHRoZSBmb2xsb3dpbmcgbGluZXMKaW50byB3ZWIueG1sOjwvcD4KCjxwPjxiPkxpc3RpbmcgMi4gRGVwbG95bWVudCBEZXNjcmlwdG9yIHdlYi54bWwgPC9iPjwvcD4KPHByZT4gICZsdDtzZXJ2bGV0Jmd0Ozxicj4gICAmbHQ7c2VydmxldC1uYW1lJmd0O1Nub29wIFNlcnZsZXQmbHQ7L3NlcnZsZXQtbmFtZSZndDs8YnI+ICAgJmx0O3NlcnZsZXQtY2xhc3MmZ3Q7b3JnLmVjbGlwc2Uud3RwLnR1dG9yaWFsLlNub29wU2VydmxldCZsdDsvc2VydmxldC1jbGFzcyZndDs8YnI+ICAmbHQ7L3NlcnZsZXQmZ3Q7PGJyPiAgJmx0O3NlcnZsZXQtbWFwcGluZyZndDs8YnI+ICAgICZsdDtzZXJ2bGV0LW5hbWUmZ3Q7U25vb3AgU2VydmxldCZsdDsvc2VydmxldC1uYW1lJmd0Ozxicj4gICAgJmx0O3VybC1wYXR0ZXJuJmd0Oy9zbm9vcC8qJmx0Oy91cmwtcGF0dGVybiZndDs8YnI+ICZsdDsvc2VydmxldC1tYXBwaW5nJmd0Ozxicj4KPC9wcmU+Cgo8cD5Zb3UgY2FuIG9idGFpbiBjb2RlIGFzc2lzdCBmcm9tIHRoZSBXVFAgWE1MIGVkaXRvciBkdXJpbmcgdGhpcwpwcm9jZXNzIGJ5IGhpdHRpbmcgW0N0cmxdK1tTcGFjZV0gYXMgdXN1YWwuPC9wPgo8cD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTkucG5nIiB3aWR0aD0iMzgwIiBoZWlnaHQ9IjE2MCI+PC9wPgoKCgo8aDM+QWRkIEpTUDwvaDM+CjxwPkdvIHRvIE5ldy0mZ3Q7RmlsZS4gU2VsZWN0IHRoZSBXZWJDb250ZW50IGZvbGRlciBhbmQgZW50ZXIKc2hvd0Jyb3dzZXIuanNwIGFzIHRoZSBmaWxlIG5hbWUuPC9wPgo8cD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTEwLnBuZyIgd2lkdGg9IjM4MSIgaGVpZ2h0PSI1ODAiPjwvcD4KPHA+T3VyIEpTUCBmaWxlIHdpbGwgYmUgb3BlbmVkIHdpdGggYSAmIzgyMjA7SlNQIFNvdXJjZSBQYWdlCkVkaXRvciYjODIyMTsuIEhpdCBbQ3RybF0rW1NwYWNlXSBhbmQgY2hvb3NlIGh0bWwgdGVtcGxhdGUuIFlvdSBjYW4gZ2V0CkhUTUwsIEphdmFTY3JpcHQsIEpTUCBhbmQgSmF2YSBjb2RlIGFzc2lzdCBpbiBhIEpTUCBFZGl0b3IuPC9wPgo8cD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTExLnBuZyIgd2lkdGg9IjMxMiIgaGVpZ2h0PSIyMDYiPjwvcD4KPHA+SlNQIFNvdXJjZSBQYWdlIEVkaXRvciBhbHNvIHByb3ZpZGVzIGphdmEgY29kZSBhc3Npc3QuIFRyeSB0aGUKZm9sbG93aW5nIGluc2lkZSBhIEpTUCBleHByZXNzaW9uOjwvcD4KPHA+PGltZyBzcmM9ImltYWdlcy9maWd1cmUxMi5wbmciIHdpZHRoPSIzODUiIGhlaWdodD0iODAiPjwvcD4KPHA+QXQgdGhlIGVuZCB5b3VyIEpTUCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIGNvZGU8L3A+CjxwPjxpbWcgc3JjPSJpbWFnZXMvdGlwLmdpZiIgYWx0PSJUaXA6ICIgaGVpZ2h0PSIxMyIgd2lkdGg9IjYyIj5Vc2UKdGhlIHRhYmxlIHRlbXBsYXRlPC9wPgo8cD48Yj5MaXN0aW5nIDMuIHNob3dCcm93c2VyLmpzcDwvYj48L3A+CjxwcmU+Jmx0O2h0bWwmZ3Q7PGJyPiZsdDtoZWFkJmd0OyZsdDt0aXRsZSZndDtTaG93IEJyb3dzZXImbHQ7L3RpdGxlJmd0OyZsdDsvaGVhZCZndDs8YnI+Jmx0O2JvZHkmZ3Q7PGJyPiZsdDt0YWJsZSBib3JkZXI9JnF1b3Q7MSZxdW90OyZndDs8YnI+CSZsdDt0ciZndDsgJmx0O3RoJmd0O0hlYWRlciZsdDsvdGgmZ3Q7Jmx0O3RoJmd0O1ZhbHVlJmx0Oy90aCZndDs8YnI+CSZsdDsvdHImZ3Q7PGJyPgkmbHQ7dHImZ3Q7PGJyPgkJJmx0O3RkJmd0O3VzZXItYWdlbnQmbHQ7L3RkJmd0Ozxicj4JCSZsdDt0ZCZndDsmbHQ7JT0gcmVxdWVzdC5nZXRBdHRyaWJ1dGUoJnF1b3Q7Y2xpZW50LmJyb3dzZXImcXVvdDspJSZndDsmbHQ7L3RkJmd0Ozxicj4JJmx0Oy90ciZndDs8YnI+Jmx0Oy90YWJsZSZndDs8YnI+Jmx0Oy9ib2R5Jmd0Ozxicj4mbHQ7L2h0bWwmZ3Q7PC9wcmU+CgoKPGgzPkV4cGxvcmluZyBvdXIgd29yazo8L2gzPgo8cD5HbyB0byB0aGUgbWVudSBXaW5kb3cgJmd0O1Nob3cgVmlldyBhbmQgc2VsZWN0IHRoZSBQcm9qZWN0CkV4cGxvcmVyIHZpZXcgZnJvbSB0aGUgSjJFRSBjYXRlZ29yeS48L3A+Cgo8cD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTEzLnBuZyIgd2lkdGg9IjI5NSIgaGVpZ2h0PSIxNjAiPjwvcD4KPHA+UHJvamVjdCBleHBsb3JlciBpcyBhIHNtYXJ0IG5hdmlnYXRvciB0aGF0IGtub3dzIGFib3V0IHRoZSB3ZWIKYW5kIEoyRUUgYXJ0aWZhY3RzLiBZb3Ugd2lsbCBiZSBhYmxlIHRvIGJyb3dzZSB5b3VyIHdlYiBtb2R1bGUsCmRlcGxveW1lbnQgZGVzY3JpcHRvcnMgYW5kIHRoZSBjb250ZW50cyBvZiB0aGVzZS4gRm9yIGV4YW1wbGUsIHdlIGNhbgpuYXZpZ2F0ZSB0byB0aGUgZGVwbG95bWVudCBkZXNjcmlwdG9yIGFuZCBvYnNlcnZlciBvdXIgc2VydmxldCBhbmQgaXRzCm1hcHBpbmcuPC9wPgo8cD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTE0LnBuZyIgd2lkdGg9IjI4NCIgaGVpZ2h0PSIyNTgiPjwvcD4KPHA+Jm5ic3A7PC9wPgo8ZGl2IGFsaWduPSJyaWdodCI+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgoJPHRib2R5PgoJCTx0cj4KCQkJPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBiZ2NvbG9yPSIjMDA4MGMwIiB2YWxpZ249InRvcCI+PGI+PGZvbnQKCQkJCWNvbG9yPSIjRkZGRkZGIiBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPlJ1bm5pbmcgdGhlCgkJCUFwcGxpY2F0aW9uPC9mb250PjwvYj48L3RkPgoJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgo8L2Rpdj4KCgoKPHA+SW4gdGhpcyBzZWN0aW9uIHdlIHdpbGwgcnVuIG91ciByZWNlbnRseSBkZXZlbG9wZWQgd2ViCmFwcGxpY2F0aW9uIG9uIGEgc2VydmVyLiBJbiBvcmRlciB0byBkbyB0aGlzLCB3ZSB3aWxsOjxicj4KJiM4MjI2OyBDcmVhdGUgYSBzZXJ2ZXI8YnI+CiYjODIyNjsgQWRkIG91ciB3ZWIgbW9kdWxlIHRvIGEgc2VydmVyPGJyPgomIzgyMjY7IFJ1biB0aGUgc2VydmVyPGJyPgomIzgyMjY7IFJ1biB0aGUgd2ViIGFwcGxpY2F0aW9uLjxicj4KPC9wPgo8aDM+UHJvamVjdCBoYXMgU2VydmVyIFByb3BlcnRpZXM8L2gzPgo8cD5JbiB0aGUgSmF2YSBQYWNrYWdlIGV4cGxvcmVyIG9yIHRoZSBKMkVFIFByb2plY3QgRXhwbG9yZXIsCmhpZ2hsaWdodCB5b3VyIHByb2plY3QgbmFtZSBXVFAtVHV0b3JpYWwtSSBhbmQgdXNpbmcgdGhlIHJpZ2h0LWNsaWNrCm1lbnUgKG1vdXNlIG1lbnUpIGNob29zZSBwcm9wZXJ0aWVzLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGhpdApbQWx0XStbRW50ZXJdLiBUaGlzIHdpbGwgZGlzcGxheSBwcm9qZWN0IHByb3BlcnRpZXMgd2luZG93LiBIZXJlIHdlIGNhbgpzZXQgdGhlIHRhcmdldCBydW50aW1lIGFuZCB0aGUgZGVmYXVsdCBzZXJ2ZXIgZm9yIHRoZSBwcm9qZWN0LiBSZW1lbWJlcgp0aGF0IHdlIGhhdmUgY2hvc2VuIHRoZSB0YXJnZXQgcnVudGltZSB3aGVuIHdlIGNyZWF0ZWQgdGhlIHByb2plY3QuIFRoaXMKcnVudGltZSBoYXMgcHJvdmlkZWQgdGhlIGNsYXNzcGF0aCBmb3IgdGhlIHByb2plY3QuIFlvdSBjYW4gY2hvb3NlIGEKZGlmZmVyZW50IHJ1bnRpbWUgaGVyZS4gVGhpcyB3aWxsIGNoYW5nZSB0aGUgbGlicmFyaWVzIHRoYXQgYXJlIHVzZWQgdG8KY29tcGlsZSB5b3VyIGFwcGxpY2F0aW9uLiBIZXJlIHdlIGNhbiBhbHNvIGNob29zZSBhIGRlZmF1bHQgc2VydmVyLiBUaGUKZGVmYXVsdCBzZXJ2ZXIgaXMgdGhlIHNlcnZlciBvbiB3aGljaCBvdXIgYXBwbGljYXRpb24gd2lsbCBiZSBkZXBsb3llZAphbmQgcnVuLiBJZiB5b3UgaGF2ZSBub3QgcHJldmlvdXNseSBkZWZpbmVkIGEgc2VydmVyIGFzIHNldCBpdCBhcwpkZWZhdWx0LCB5b3Ugd2lsbCBzZWUgYSBtZXNzYWdlIGluIHRoZSBwcm9wZXJ0aWVzIHZpZXcuIFRvIGNyZWF0ZSBhCnNlcnZlciB5b3Ugd2lsbCBoYXZlIHRvIGNhbmNlbCB0aGlzIHdpbmRvdyBhbmQgY29tZSBiYWNrIHRvIGl0IGFmdGVyIHlvdQpoYXZlIGNyZWF0ZWQgdGhlIHNlcnZlci48L3A+CjxwPjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlMTUucG5nIiB3aWR0aD0iNDI5IiBoZWlnaHQ9IjI1NSI+PC9wPgo8cD4mbmJzcDs8L3A+CjxoMz5DcmVhdGUgYSBTZXJ2ZXI8L2gzPgo8cD5TZXJ2ZXJzIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHRoZSBTZXJ2ZXIgVmlldy4gVG8gb3BlbiBhIHNlcnZlcgp2aWV3IGdvIHRvIFdpbmRvdy0mZ3Q7U2hvdyBWaWV3LSZndDtPdGhlciYjODIzMDssIGFuZCBjaG9vc2UgdGhlIFNlcnZlcnMKdW5kZXIgdGhlIFNlcnZlciBjYXRlZ29yeS48L3A+CjxwPjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlMTYucG5nIiB3aWR0aD0iMjk2IiBoZWlnaHQ9IjQyMSI+PC9wPgo8cD5UaGUgc2VydmVyIHZpZXcgYWxsb3dzIHlvdSB0byBjcmVhdGUgc2VydmVycyBmb3IgdGhlIGN1cnJlbnRseQppbnN0YWxsZWQgc2VydmVyIHJ1bnRpbWUgZW52aXJvbm1lbnRzLiBVc2UgdGhlIHJpZ2h0IGNsaWNrIG1lbnUgdG8KY3JlYXRlIGEgbmV3IHNlcnZlci4gSW4gdGhlIGZvbGxvd2luZyB3aXphcmQsIGNob29zZSB0aGUgc2VydmVyIGFkZHJlc3MKd2hlcmUgeW91IHdpbGwgZGVwbG95IChwdWJsaXNoKSB5b3VyIHdlYiBtb2R1bGUuIFlvdSB3aWxsIGFsc28gaGF2ZSB0bwpjaG9vc2UgdGhlIHNlcnZlciB0eXBlIGFuZCwgaWYgeW91IGhhdmUgZGVmaW5lZCBtb3JlIHRoYW4gb25lIGluc3RhbGxlZAplbnZpcm9ubWVudCBmb3IgdGhpcyBzZXJ2ZXIgKHNlZSBwcmVmZXJlbmNlcyksIGNob29zZSB0aGUgc2VydmVyCnJ1bnRpbWUuIFdoZW4geW91IGNsaWNrIGZpbmlzaCwgeW91IGhhdmUgYSBTZXJ2ZXIhPC9wPgo8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cgk8dHI+CgkJPHRkPjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlMTcucG5nIiB3aWR0aD0iMzUwIiBoZWlnaHQ9IjYzIj48L3RkPgoJCTx0ZD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTE4LnBuZyIgd2lkdGg9IjM2MyIgaGVpZ2h0PSI0MTMiPjwvdGQ+Cgk8L3RyPgo8L3RhYmxlPgo8cD5Ob3cgeW91IGNhbiBnbyBiYWNrIHRvIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMgYW5kIHNldCB5b3VyCmRlZmF1bHQgc2VydmVyLjwvcD4KPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgoJPHRyPgoJCTx0ZD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTE5LnBuZyIgd2lkdGg9IjM4OSIgaGVpZ2h0PSIxMjEiPjwvdGQ+CgkJPHRkPjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlMjAucG5nIiB3aWR0aD0iMzcwIiBoZWlnaHQ9IjI3NCI+PC90ZD4KCTwvdHI+CjwvdGFibGU+CjxoMz5TdGFydCB0aGUgU2VydmVyPC9oMz4KPHA+SW4gdGhlIHNlcnZlciB2aWV3LCBkbyBhIG1lbnUtY2xpY2sgb24geW91ciBzZXJ2ZXIgYW5kIGNob29zZQpzdGFydCwgb3IgeW91IGNhbiBzaW1wbHkgY2xpY2sgdGhlIHN0YXJ0IGJ1dHRvbi4gWW91IHdpbGwgc2VlIHRoZQomIzgyMjA7U3RhdHVzJiM4MjIxOyBvZiB0aGUgc2VydmVyIGZyb20gU3RvcHBlZCB0bwomIzgyMjA7U3RhcnRpbmcmIzgyMjE7LCBhbmQgd2hlbiB0aGUgc2VydmVyIGlzIHJlYWR5IGl0IHdpbGwgY2hhbmdlIGl0cwpzdGF0dXMgdG8gJnF1b3Q7U3RhcnRlZCZxdW90Oy48L3A+CjxwPjxpbWcgc3JjPSJpbWFnZXMvZmlndXJlMjEucG5nIiB3aWR0aD0iMzUzIiBoZWlnaHQ9IjI1MyI+PC9wPgo8aDM+Jm5ic3A7PC9oMz4KPGgzPlJ1bm5pbmcgdGhlIEFwcGxpY2F0aW9uPC9oMz4KPHA+T3BlbiB5b3VyIGZhdm9yaXRlIGJyb3dzZXIgYW5kIHR5cGUKaHR0cDovL2xvY2FsaG9zdDo4MDgwL3R1dG9yaWFsL3Nub29wLjwvcD4KPHA+PGltZyBzcmM9ImltYWdlcy9maWd1cmUyMi5wbmciIHdpZHRoPSI0NjIiIGhlaWdodD0iMTQ5Ij48L3A+CjxwPgo8aDM+Q2FuIGl0IGJlIGVhc2llcj88L2gzPgo8cD5XZWxsLCBub3cgdGhhdCB5b3UgaGF2ZSBiZWVuIHRocm91Z2ggYWxsIHRoaXMgdHJvdWJsZSB0byBydW4geW91cgphcHBsaWNhdGlvbiwgZGlkIHlvdSBrbm93IHRoYXQgeW91IGNvdWxkIGhhdmUgZG9uZSBhbGwgdGhpcyB3aXRoIGFsbW9zdApqdXN0IG9uZSBjbGljaz8gVHJ5IHRvIHNlbGVjdCB5b3UgV2ViQ29udGVudHMgb24gdHJ5ICYjODIyMDtSdW4gb24Kc2VydmVyJiM4MjMwOyYjODIyMTsuIFRoZSB3ZWIgYXBwbGljYXRpb24gd2lsbCBwb3B1cCBpbnNpZGUgdGhlIFdUUCB3ZWIKYnJvd3NlciBpbiBhbG1vc3QgYW4gaW5zdGFudC4gWW91IGNhbiB0aGVuIHRyeSB0byBjYWxsIHlvdXIgc2VydmxldCBhcwp1c3VhbC48YnI+CjwvcD4KPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgoJPHRyPgoJCTx0ZD48aW1nIHNyYz0iaW1hZ2VzL2ZpZ3VyZTIzLnBuZyIgd2lkdGg9IjM2MCIgaGVpZ2h0PSI5MSI+PC90ZD4KCQk8dGQ+PGltZyBzcmM9ImltYWdlcy9maWd1cmUyNC5wbmciIHdpZHRoPSI0NjMiIGhlaWdodD0iMzIzIj48L3RkPgoJPC90cj4KPC90YWJsZT4KPHA+Jm5ic3A7PC9wPgo8aDM+Q29uY2x1c2lvbjwvaDM+CjxwPkluIHRoaXMgdHV0b3JpYWwsIHdlIGxvb2tlZCBhdCB3aGF0IGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYQpzaW1wbGUgd2ViIGFwcGxpY2F0aW9uLiBUaGUgbmV4dCBwYXJ0IHdpbGwgc2hvdyBob3cgd2UgY2FuIGRlYnVnIG91ciB3ZWIKYXBwbGljYXRpb24gYW5kIG1vbml0b3IgaHR0cCB0cmFmZmljLjwvcD4KCjxoMz48YnI+CjwvaDM+CjxwPjxzbWFsbD5KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFuZCBsb2dvcyBhcmUKdHJhZGVtYXJrcyBvciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUKVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLjwvc21hbGw+PC9wPgo8cD48c21hbGw+T3RoZXIgY29tcGFueSwgcHJvZHVjdCwgYW5kIHNlcnZpY2UgbmFtZXMgbWF5IGJlCnRyYWRlbWFya3Mgb3Igc2VydmljZSBtYXJrcyBvZiBvdGhlcnMuPC9zbWFsbD48L3A+Cgo8L2JvZHk+CjwvaHRtbD4=