XGNoYXB0ZXJ7RW52aXJvbm1lbnR9ClxsYWJlbHtlbnZpcm9ubWVudH0KClRoZSBjb250YWluZXItbWFuYWdlZCByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGEgXGpheHJzXCByb290IHJlc291cmNlIGNsYXNzIG9yIHByb3ZpZGVyIGRlcGVuZCBvbiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggaXQgaXMgZGVwbG95ZWQuIFNlY3Rpb24gXHJlZntjb250ZXh0dHlwZXN9IGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgY29udGV4dCBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiBjb250YWluZXIuIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgdGhlIGFkZGl0aW9uYWwgY29udGFpbmVyLW1hbmFnZWQgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBhIFxqYXhyc1wgcm9vdCByZXNvdXJjZSBjbGFzcyBvciBwcm92aWRlciBkZXBsb3llZCBpbiBhIHZhcmlldHkgb2YgZW52aXJvbm1lbnRzLgoKXHNlY3Rpb257U2VydmxldCBDb250YWluZXJ9ClxsYWJlbHtzZXJ2bGV0X2NvbnRhaW5lcn0KClRoZSBcQ29udGV4dFwgYW5ub3RhdGlvbiBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSBhIGRlcGVuZGVuY3kgb24gYSBTZXJ2bGV0LWRlZmluZWQgcmVzb3VyY2UuIEEgU2VydmxldC1iYXNlZCBpbXBsZW1lbnRhdGlvbiBNVVNUIHN1cHBvcnQgaW5qZWN0aW9uIG9mIHRoZSBmb2xsb3dpbmcgU2VydmxldC1kZWZpbmVkIHR5cGVzOiBcY29kZXtTZXJ2bGV0XC1Db25maWd9LCBcY29kZXtTZXJ2bGV0XC1Db250ZXh0fSwgXGNvZGV7SHR0cFwtU2VydmxldFwtUmVxdWVzdH0gYW5kIFxjb2Rle0h0dHBcLVNlcnZsZXRcLVJlc3BvbnNlfS4KCkFuIGluamVjdGVkIFxjb2Rle0h0dHBcLVNlcnZsZXRcLVJlcXVlc3R9IGFsbG93cyBhIHJlc291cmNlIG1ldGhvZCB0byBzdHJlYW0gdGhlIGNvbnRlbnRzIG9mIGEgcmVxdWVzdCBlbnRpdHkuIElmIHRoZSByZXNvdXJjZSBtZXRob2QgaGFzIGEgcGFyYW1ldGVyIHdob3NlIHZhbHVlIGlzIGRlcml2ZWQgZnJvbSB0aGUgcmVxdWVzdCBlbnRpdHkgdGhlbiB0aGUgc3RyZWFtIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gY29uc3VtZWQgYW5kIGFuIGF0dGVtcHQgdG8gYWNjZXNzIGl0IE1BWSByZXN1bHQgaW4gYW4gZXhjZXB0aW9uLgoKQW4gaW5qZWN0ZWQgXGNvZGV7SHR0cFwtU2VydmxldFwtUmVzcG9uc2V9IGFsbG93cyBhIHJlc291cmNlIG1ldGhvZCB0byBjb21taXQgdGhlIEhUVFAgcmVzcG9uc2UgcHJpb3IgdG8gcmV0dXJuaW5nLiBBbiBpbXBsZW1lbnRhdGlvbiBNVVNUIGNoZWNrIHRoZSBjb21taXR0ZWQgc3RhdHVzIGFuZCBvbmx5IHByb2Nlc3MgdGhlIHJldHVybiB2YWx1ZSBpZiB0aGUgcmVzcG9uc2UgaXMgbm90IHlldCBjb21taXR0ZWQuCgpTZXJ2bGV0IGZpbHRlcnMgbWF5IHRyaWdnZXIgY29uc3VtcHRpb24gb2YgYSByZXF1ZXN0IGJvZHkgYnkgYWNjZXNzaW5nIHJlcXVlc3QgcGFyYW1ldGVycy4gSW4gYSBzZXJ2bGV0IGNvbnRhaW5lciB0aGUgQEZvcm1QYXJhbSBhbm5vdGF0aW9uIGFuZCB0aGUgc3RhbmRhcmQgZW50aXR5IHByb3ZpZGVyIGZvciBcY29kZXthcHBsaWNhdGlvblwtL3gtXC13d3ctXC1mb3JtLVwtdXJsZW5jb2RlZH0gTVVTVCBvYnRhaW4gdGhlaXIgdmFsdWVzIGZyb20gdGhlIHNlcnZsZXQgcmVxdWVzdCBwYXJhbWV0ZXJzIGlmIHRoZSByZXF1ZXN0IGJvZHkgaGFzIGFscmVhZHkgYmVlbiBjb25zdW1lZC4gU2VydmxldCBBUElzIGRvIG5vdCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gcGFyYW1ldGVycyBpbiB0aGUgVVJJIGFuZCBib2R5IG9mIGEgcmVxdWVzdCBzbyBVUkktYmFzZWQgcXVlcnkgcGFyYW1ldGVycyBtYXkgYmUgaW5jbHVkZWQgaW4gdGhlIGVudGl0eSBwYXJhbWV0ZXIuCgpcc2VjdGlvbntKYXZhIEVFIENvbnRhaW5lcn0KXGxhYmVse2phdmFlZX0KClRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIHRoYXQgYXBwbHkgdG8gYSBcamF4cnNcIGltcGxlbWVudGF0aW9uIHdoZW4gY29tYmluZWQgaW4gYSBwcm9kdWN0IHRoYXQgc3VwcG9ydHMgdGhlc2Ugb3RoZXIgSmF2YSBzcGVjaWZpY2F0aW9uczoKClxiZWdpbntpdGVtaXplfQpcaXRlbSBJbiBhIHByb2R1Y3QgdGhhdCBhbHNvIHN1cHBvcnRzIHRoZSBTZXJ2bGV0IHNwZWNpZmljYXRpb24sIGltcGxlbWVudGF0aW9ucyBNVVNUIHN1cHBvcnQgXGpheHJzXCBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgcGFja2FnZWQgYXMgYSB3ZWIgYXBwbGljYXRpb24sIHNlZSBzZWN0aW9uIFxyZWZ7c2VydmxldH0uClxpdGVtIEluIGEgcHJvZHVjdCB0aGF0IGFsc28gc3VwcG9ydHMgTWFuYWdlZCBCZWFucywgaW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCB1c2Ugb2YgTWFuYWdlZCBCZWFucyBhcyByb290IHJlc291cmNlIGNsYXNzZXMsIHByb3ZpZGVycyBhbmQgXGNvZGV7QXBwbGljYXRpb259IHN1YmNsYXNzZXMuIEFsbCBzdWNoIGNsYXNzZXMgbWF5IG1ha2UgdXNlIG9mIGFueSBjb250YWluZXItc3VwcGxpZWQgZmFjaWxpdGllcyBpbmNsdWRpbmcgZGVwZW5kZW5jeSBpbmplY3Rpb24gYW5kIGludGVyY2VwdG9ycy4gUHJvdmlkZXJzIGFuZCBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3NlcyBNVVNUIGJlIHNpbmdsZXRvbnMgb3IgdXNlIGFwcGxpY2F0aW9uIHNjb3BlLgpcaXRlbSBJbiBhIHByb2R1Y3QgdGhhdCBhbHNvIHN1cHBvcnRzIEVKQiwgYW4gaW1wbGVtZW50YXRpb24gTVVTVCBzdXBwb3J0IHVzZSBvZiBzdGF0ZWxlc3MgYW5kIHNpbmdsZXRvbiBzZXNzaW9uIGJlYW5zIGFzIHJvb3QgcmVzb3VyY2UgY2xhc3NlcywgcHJvdmlkZXJzIGFuZCBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3NlcyBpbiBhIFdlYiBhcHBsaWNhdGlvbi4gXGpheHJzXCBhbm5vdGF0aW9ucyBNQVkgYmUgYXBwbGllZCB0byBhIGJlYW7VcyBsb2NhbCBpbnRlcmZhY2Ugb3IgZGlyZWN0bHkgdG8gYSBuby1pbnRlcmZhY2UgYmVhbi4gSWYgYW4gXGNvZGV7RXhjZXB0aW9uXC1NYXBwZXJ9IGZvciBhIFxjb2Rle0VKQkV4Y2VwdGlvbn0gb3Igc3ViY2xhc3MgaXMgbm90IGluY2x1ZGVkIHdpdGggYW4gYXBwbGljYXRpb24gdGhlbiBleGNlcHRpb25zIHRocm93biBieSBhbiBFSkIgcmVzb3VyY2UgY2xhc3Mgb3IgcHJvdmlkZXIgbWV0aG9kIE1VU1QgYmUgdHJlYXRlZCBhcyBFSkIgYXBwbGljYXRpb24gZXhjZXB0aW9uczogdGhlIGVtYmVkZGVkIGNhdXNlIG9mIHRoZSBcY29kZXtFSkJFeGNlcHRpb259IE1VU1QgYmUgdW53cmFwcGVkIGFuZCBwcm9jZXNzZWQgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gXHJlZnttZXRob2RfZXhjfS4KXGVuZHtpdGVtaXplfQoKXHNlY3Rpb257T3RoZXJ9CgpPdGhlciBjb250YWluZXIgdGVjaG5vbG9naWVzIE1BWSBzcGVjaWZ5IHRoZWlyIG93biBzZXQgb2YgaW5qZWN0YWJsZSByZXNvdXJjZXMgYnV0IE1VU1QsIGF0IGEgbWluaW11bSwgc3VwcG9ydCBhY2Nlc3MgdG8gdGhlIHR5cGVzIG9mIGNvbnRleHQgbGlzdGVkIGluIHNlY3Rpb24gXHJlZntjb250ZXh0dHlwZXN9Lg==