PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgokcGFnZVRpdGxlIAkJPSAiIjsKJHBhZ2VLZXl3b3Jkcwk9ICIiOwokcGFnZUF1dGhvcgkJPSAiIjsKCm9iX3N0YXJ0KCk7Cj8+CiAgICA8ZGl2IGlkPSJtYWluY29udGVudCI+Cgk8ZGl2IGlkPSJtaWRjb2x1bW4iPgoKPGgxPlNWTiBUZWFtIFByb3ZpZGVyPC9oMT4KPC9wPgo8P3BocAppbmNsdWRlX29uY2UoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvcHJvamVjdHMvZnJhZ21lbnRzL3Byb3Bvc2FsLXBhZ2UtaGVhZGVyLnBocCIpOwpnZW5lcmF0ZV9oZWFkZXIoIlNWTiBUZWFtIFByb3ZpZGVyIik7Cj8+Cgo8aDI+SW50cm9kdWN0aW9uPC9oMj4KCjxwPlRoZSBTVk4gVGVhbSBQcm92aWRlciBQcm9qZWN0IGlzIGEgcHJvcG9zZWQgb3BlbiBzb3VyY2UgcHJvamVjdCAKdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdGVjaG5vbG9neS8iPkVjbGlwc2UgVGVjaG5vbG9neQpQcm9qZWN0PC9hPi48L3A+Cgo8cD5UaGlzIHByb3Bvc2FsIGlzIGluIHRoZSBQcm9qZWN0IFByb3Bvc2FsIFBoYXNlIChhcyBkZWZpbmVkIGluIHRoZQo8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3Byb2plY3RzL2Rldl9wcm9jZXNzLyI+IEVjbGlwc2UgRGV2ZWxvcG1lbnQKUHJvY2VzcyBkb2N1bWVudDwvYT4pIGFuZCBpcyB3cml0dGVuIHRvIGRlY2xhcmUgaXRzIGludGVudCBhbmQgc2NvcGUuIFRoaXMgCnByb3Bvc2FsIGlzIHdyaXR0ZW4gdG8gc29saWNpdCBhZGRpdGlvbmFsIHBhcnRpY2lwYXRpb24gYW5kICBpbnB1dCBmcm9tIHRoZSAKRWNsaXBzZSBjb21tdW5pdHkuIFlvdSBhcmUgaW52aXRlZCB0byBjb21tZW50IG9uIGFuZC9vciBqb2luIHRoZSBwcm9qZWN0LiBQbGVhc2UgCnNlbmQgYWxsIGZlZWRiYWNrIHRvIHRoZSA8YSAKaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZXdzcG9ydGFsL3RocmVhZC5waHA/Z3JvdXA9ZWNsaXBzZS50ZWNobm9sb2d5LnN2biI+Cmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmV3c3BvcnRhbC90aHJlYWQucGhwP2dyb3VwPWVjbGlwc2UudGVjaG5vbG9neS5zdm48L2E+IG5ld3Nncm91cC48L3A+Cgo8aDI+QmFja2dyb3VuZDwvaDI+Cgo8cD5TdWJ2ZXJzaW9uIChTVk4pIGlzIHZlcnkgcG9wdWxhciBhbmQgcml2YWxzIENWUyBhcyB0aGUgbW9zdCAKd2lkZWx5IHVzZWQgb3BlbiBzb3VyY2UgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4gTWFueSBob3N0aW5nIHNlcnZpY2VzIGFyZSAKcHJvdmlkaW5nIFNWTiBhY2Nlc3MsIGFuZCBzZXZlcmFsIG1ham9yIG9wZW4gc291cmNlIHByb2plY3RzIGhhdmUgY29udmVydGVkCnRoZWlyIENWUyByZXBvc2l0b3JpZXMgdG8gU1ZOLiBFY2xpcHNlIGhhcyBncmVhdCBzdXBwb3J0IGZvciBDVlMsIGFuZCB1c2VycwphcmUgbG9va2luZyBmb3Igc2ltaWxhciBzdXBwb3J0IGZvciBTVk4uICBFY2xpcHNlIGhhcyBubyBzdXBwb3J0IGZvciBTVk4gb3V0Cm9mIHRoZSBib3ggYW5kIG1hbnkgbmV3IHVzZXJzIGFyZSB1bmF3YXJlIHRoYXQgcXVhbGl0eSB0aGlyZC1wYXJ0eSBTVk4KdGVhbSBwcm92aWRlcnMgYXJlIGF2YWlsYWJsZS4gIFRoaXMgcGVyY2VpdmVkIGxhY2sgb2YgU1ZOIHN1cHBvcnQgbWFrZXMKRWNsaXBzZSBsb29rIGluZmVyaW9yIHRvIG90aGVyIElERXMgc3VjaCBhcyBOZXRiZWFucyBhbmQgSW50ZWxsaUogdGhhdCBzaGlwIHdpdGgKU1ZOIHN1cHBvcnQgaW4gdGhlaXIgYmFzZSBpbnN0YWxsYXRpb25zLiAgVGhlIEJ1Z3ppbGxhIGVudHJ5IHRvIGFkZCBTVk4Kc3VwcG9ydCB0byBFY2xpcHNlLCA8YSAKaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3MTU0Ij4jMzcxNTQ8L2E+LCBoYXMgb3ZlcgoxMDAgdm90ZXMgYW5kIGhhcyBiZWVuIGluIHRoZSB0b3AtNSBmb3IgbW9zdCB2b3RlcyBmb3IgYSB2ZXJ5IGxvbmcgdGltZS48L3A+Cgo8cD5JbiBhZGRpdGlvbiB0byBhZGRpbmcgU1ZOIHN1cHBvcnQgdG8gRWNsaXBzZSwgdGhlcmUgaXMgdGhlIGlzc3VlIG9mIHByb3ZpZGluZwphIHNvbGlkIFRlYW0gQVBJIHRoYXQgY2FuIGJlIGxldmVyYWdlZCBieSBjb21tZXJjaWFsIGFuZCBvcGVuIHNvdXJjZSBTQ00KcHJvdmlkZXJzLiAgVGhlIGN1cnJlbnQgVGVhbSBBUEkgaXMgdmVyeSBjYXBhYmxlLCBidXQgYXQgdGhlIHNhbWUgdGltZSBpdCBpcyAKYWxzbyBoaW5kZXJlZCBieSBoYXZpbmcgb25seSBvbmUgY29uY3JldGUgaW1wbGVtZW50YXRpb24uICBJbiBtYW55IGluc3RhbmNlcwp0aGUgQVBJIGhhcyBiZWNvbWUgdmVyeSBDVlMtY2VudHJpYy4gIEhhdmluZyB0aGUgcGxhdGZvcm0gc3VwcG9ydCBhIHNlY29uZCB0ZWFtIApwcm92aWRlciB3b3VsZCBwcm92aWRlIGZ1cnRoZXIgdmFsaWRhdGlvbiBvZiBUZWFtIEFQSXMgYmVmb3JlIHRoZXkgYXJlIHJlbGVhc2VkCmFuZCBjb25zdW1lZCBieSBvdGhlciB0ZWFtIHByb3ZpZGVycy48L3A+Cgo8cD5GaW5hbGx5LCB0aGVyZSBpcyB0aGUgaXNzdWUgb2YgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIFNWTiB0byBwcm9qZWN0cyBob3N0ZWQKYnkgRWNsaXBzZS5vcmcuICBUaGUgY29kZSBmb3IgdGhpcyBwcm9qZWN0IHNob3VsZCBiZSBzZWxmLWhvc3RlZCBpbiBhbiBTVk4gCnJlcG9zaXRvcnkgYW5kIGl0IGlzIGxpa2VseSB0aGF0IHRoZXJlIGFyZSBvdGhlciBwcm9qZWN0cyBjdXJyZW50bHkgaG9zdGVkIGF0CkVjbGlwc2Uub3JnIHRoYXQgd291bGQgbGlrZSB0byBjaGFuZ2UgdGhlaXIgcmVwb3NpdG9yaWVzIGZyb20gQ1ZTIHRvIFNWTi4gIEZvcgpyZWZlcmVuY2UgcHVycG9zZXMsIHRoZXJlIGFyZSBleGlzdGluZyBCdWd6aWxsYSBlbnRyaWVzIHRvIGFkZCBzdXBwb3J0IGZvciAKaG9zdGluZyBwcm9qZWN0cyBpbiBTdWJ2ZXJzaW9uIHJlcG9zaXRvcmllcyAoc2VlIAo8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzE3MzUiPiM3MTczNTwvYT4gYW5kIDxhCmhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMzEwOTYiPiMxMzEwOTY8L2E+KS4KUGFydCBvZiB0aGlzIHByb3Bvc2FsIGlzIHRvIHByb3ZpZGUgcmVzb3VyY2VzIGFuZCBleHBlcnRpc2UgdGhhdCB3aWxsIHN1cHBvcnQKdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpbiB0aGVpciBlZmZvcnRzIHRvIHByb3ZpZGUgdGhlc2Ugc2VydmljZXMgdG8gdGhlCmNvbW11bml0eS4gIFRoZXJlIGFyZSBtYW55IGluZGl2aWR1YWxzIGludm9sdmVkIGluIHRoZSBTdWJjbGlwc2UgY29tbXVuaXR5LCBhbmQKdGhlIHdpZGVyIFN1YnZlcnNpb24gZWNvc3lzdGVtLCB3aG8gd291bGQgYmUgd2lsbGluZyB0byB2b2x1bnRlZXIgdGltZQp0b3dhcmRzIGFzc2lzdGluZyB0aGUgRWNsaXBzZSBvcmdhbml6YXRpb24gb24gc2V0dGluZyB1cCBpdHMgb3duClN1YnZlcnNpb24gcmVwb3NpdG9yeSwgYXMgYSBjb21wbGVtZW50IHRvIGl0cyBleGlzdGluZyBDVlMgcmVwb3NpdG9yeS4KVGhlcmUgYXJlIGFsc28gY29tbWVyY2lhbCBlbnRpdGllcyBpbiB0aGUgU3VidmVyc2lvbiBlY29zeXN0ZW0sIGFuZCBzb21lCkVjbGlwc2UgbWVtYmVycywgd2hvIGNvdWxkIG9mZmVyIGNvbW1lcmNpYWwgYXNzaXN0YW5jZSBvbiB0aGlzIHJlZ2FyZC48L3A+Cgo8aDI+SGlzdG9yeTwvaDI+Cgo8cD5PbmUgb2YgdGhlIG1haW4gcHJvYmxlbXMgd2l0aCBDVlMgdGhhdCBTdWJ2ZXJzaW9uIHNvdWdodCB0byBhZGRyZXNzIHdhcwp0aGUgbGFjayBvZiBhbiBvZmZpY2lhbCBBUEkuICBTdWJ2ZXJzaW9uIHdhcyBkZXNpZ25lZCBhcyBhIHNldCBvZiBsYXllcmVkCmxpYnJhcmllcyB3aXRoIHdlbGwtZGVmaW5lZCBpbnRlcmZhY2VzLCBkZXNpZ25lZCB0byBiZSBjYWxsZWQgYnkKb3RoZXIgYXBwbGljYXRpb25zLiAgVGhlc2UgbGlicmFyaWVzIGFyZSBkZWxpdmVyZWQgYXMgbmF0aXZlIEMgbGlicmFyaWVzIGluCm9yZGVyIHRvIGFjaGlldmUgdGhlIG1heGltdW0gcG9ydGFiaWxpdHkgYWNyb3NzIGJvdGggb3BlcmF0aW5nIHN5c3RlbXMgYW5kCnByb2dyYW1taW5nIGxhbmd1YWdlcywgYXMgbW9zdCBsYW5ndWFnZXMgaGF2ZSBhIGZhY2lsaXR5IGZvciBhY2Nlc3NpbmcgQwpsaWJyYXJpZXMuICBKYXZhSEwgaXMgdGhlIG5hbWUgZm9yIHRoZSBvZmZpY2lhbCBKYXZhIGxhbmd1YWdlIGJpbmRpbmcgdG8gdGhlc2UKbGlicmFyaWVzLiAgSmF2YUhMIGlzIHNpbWlsYXIgdG8gU1dUIGluIHRoYXQgaXQgYWNjZXNzZXMgdGhlIG5hdGl2ZSBsaWJyYXJpZXMKdmlhIEpOSSB3aGlsZSBwcm92aWRpbmcgYSBzdGFuZGFyZGl6ZWQgaW50ZXJmYWNlIHRvIEphdmEgY2xpZW50cy4gIFNpbmNlCnZpcnR1YWxseSBhbGwgU1ZOIGNsaWVudHMgdXNlIHRoZXNlIHNhbWUgbGlicmFyaWVzLCB0aGVyZSBpcyBncmVhdCAKY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIG11bHRpcGxlIGNsaWVudHMgb24gdGhlIHNhbWUgbG9jYWwgd29ya2luZyBjb3B5LiAgVGhlClN1YnZlcnNpb24gQVBJIGFsc28gaGFzIHZlcnkgc3RyaWN0bHkgZGVmaW5lZCBjb21wYXRpYmlsaXR5IHJ1bGVzIGFuZCB0aGUKU3VidmVyc2lvbiBjbGllbnQgYW5kIHNlcnZlciBhcmUgYm90aCBmb3J3YXJkIGFuZCBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGgKZWFjaCBvdGhlci48L3A+Cgo8cD5UaGUgU3ViY2xpcHNlIHByb2plY3QgaGFzIGZpZ3VyZWQgb3V0IGhvdyB0byBkZWxpdmVyIHRoZSBuYXRpdmUKbGlicmFyaWVzIGZvciBKYXZhSEwgZm9yIHRoZSBXaW5kb3dzIHBsYXRmb3JtIG9ubHkuICBDdXJyZW50bHksIGFuIEVjbGlwc2UgdXNlcgpydW5uaW5nIG9uIExpbnV4IGhhcyB0byBpbnN0YWxsIFN1YnZlcnNpb24gdXNpbmcgdGhlIHBhY2thZ2luZyBzeXN0ZW0gZm9yIHRoZWlyCmRpc3RyaWJ1dGlvbi4gIFRoaXMgdGhlbiBpbnN0YWxscyBhbGwgb2YgdGhlIHJlcXVpcmVkIG5hdGl2ZSBsaWJyYXJpZXMsIAppbmNsdWRpbmcgdGhlIEphdmFITCBsaWJyYXJ5LiAgVGhlcmUgYXJlIHNpbWlsYXIgZmFjaWxpdGllcyBhdmFpbGFibGUgZm9yIE9TIFgKdXNlcnMuICBXZSB3b3VsZCBiZSBpbnRlcmVzdGVkIGluIHdvcmtpbmcgd2l0aCB0aGUgRWNsaXBzZSBwbGF0Zm9ybSBwcm9qZWN0IHRvCnNlZSBpZiB0aGVyZSBhcmUgY2hhbmdlcyB0aGF0IGNvdWxkIGJlIG1hZGUgdG8gRWNsaXBzZSB0byBlbmFibGUgbmF0aXZlIApsaWJyYXJpZXMgdG8gYmUgZGVsaXZlcmVkIGJ5IGEgcGx1Zy1pbiBmcmFnbWVudCB3aGVuIHRob3NlIGxpYnJhcmllcyBoYXZlIApkZXBlbmRlbmNpZXMgb24gb3RoZXIgbGlicmFyaWVzLiAgSW4gdGhlIHNob3J0IHRlcm0sIHVzZXJzIG9uIG5vbi1XaW5kb3dzCnBsYXRmb3JtcyB3b3VsZCBoYXZlIHRvIG9idGFpbiB0aGUgSmF2YUhMIG5hdGl2ZSBsaWJyYXJ5IGZvciB0aGVpciBvcGVyYXRpbmcKc3lzdGVtLiAgQWxsIG9mIHRoZSBtYWpvciBMaW51eCBkaXN0cmlidXRpb25zIG5vdyBtYWtlIHRoaXMgdmVyeSBlYXN5IHRvIGRvCmFuZCByZWFsbHkgaXQgaXMgbm90IG11Y2ggZGlmZmVyZW50IHRoYW4gaG93IGEgTGludXggdXNlciB0aGF0IHVzZXMgS0RFIGhhcyB0bwptYWtlIHN1cmUgdGhleSBoYXZlIHRoZSBHVEsyIGxpYnJhcmllcyBpbnN0YWxsZWQgYmVmb3JlIHRoZXkgY2FuIHVzZSBTV1QgYW5kCkVjbGlwc2UuPC9wPgoKPHA+VGhlcmUgaXMgYWxzbyBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbmFtZWQgSmF2YVNWTiB0aGF0IGhhcyBiZWVuIGRldmVsb3BlZApieSBhIGNvbXBhbnkgbmFtZWQgVE1hdGUuICA8YSBocmVmPSJodHRwOi8vdG1hdGUub3JnL3N2bi8iPgpodHRwOi8vdG1hdGUub3JnL3N2bi88L2E+LiAgVGhleSBoYXZlIHJldmVyc2UtZW5naW5lZXJlZCB0aGUgU1ZOIG5ldHdvcmsKcHJvdG9jb2xzIGFuZCB3b3JraW5nIGNvcHkgZm9ybWF0IGFuZCBoYXZlIHByb2R1Y2VkIGEgMTAwJSBwdXJlIEphdmEKaW1wbGVtZW50YXRpb24gb2YgdGhlIEphdmFITCBpbnRlcmZhY2U7IG1ha2luZyBpdCBhIGRyb3AgaW4gcmVwbGFjZW1lbnQgZm9yCnRoZSBuYXRpdmUgbGlicmFyeSB2ZXJzaW9uIG9mIEphdmFITC4gIFRoZSBTdWJjbGlwc2UgZGlzdHJpYnV0aW9uIGN1cnJlbnRseQpwcm92aWRlcyBhbiBhZGFwdGVyIG9wdGlvbiBmb3IgdGhpcyBsaWJyYXJ5LiAgVGhlIEphdmFTVk4gbGlicmFyeSA8YQpocmVmPSJodHRwOi8vdG1hdGUub3JnL3N2bi9saWNlbnNpbmcvaW5kZXguaHRtbCI+bGljZW5zZTwvYT4gaXMgbm90IGNvbXBhdGlibGUKd2l0aCB0aGUgRVBMLCBzbyB3ZSB3aWxsIG5vdCBwcm92aWRlIHRoaXMgbGlicmFyeSBvciBpdHMgYWRhcHRlciBhcyBwYXJ0Cm9mIHRoZSBwcm9qZWN0LiAgV2Ugd2lsbCB3b3JrIHdpdGggVE1hdGUgdG8gYXNzaXN0IHRoZW0gaW4gcHJvdmlkaW5nIGEKcGx1Zy1pbiB0aGF0IGlzIGRvd25sb2FkYWJsZSB2aWEgdGhlaXIgd2ViIHNpdGUgdGhhdCBhZGRzIEphdmFTVk4gYXMgYW4gYWRhcHRlcgpvcHRpb24gdmlhIG91ciBwdWJsaWMgZXh0ZW5zaW9uIHBvaW50LiAgVGhpcyBoYXMgYWx3YXlzIGJlZW4gdGhlIG9wdGlvbiB0aGF0ClRNYXRlIGhhcyBleHByZXNzZWQgYXMgdGhlaXIgcHJlZmVyZW5jZSwgYW5kIHRoZXkgaGF2ZSBhc2tlZCB0byBiZSBsaXN0ZWQKYXMgYm90aCBhIHN1cHBvcnRlciBhbmQgaW50ZXJlc3RlZCBwYXJ0eSBvZiB0aGlzIHByb2plY3QuICBFeHRlcm5hbCBwYWNrYWdlcnMKb2YgRWNsaXBzZSBwbHVnLWlucywgc3VjaCBhcyBMaW51eCBkaXN0cmlidXRpb25zIChGZWRvcmEsIERlYmlhbikgYW5kL29yIDxhIApocmVmPSJodHRwOi8vd3d3LnlveG9zLmNvbS8iPllveG9zPC9hPiB3b3VsZCBsaWtlbHkgYmUgYWJsZSB0byBpbmNsdWRlIEphdmFTVk4KaW4gdGhlaXIgZGlzdHJpYnV0aW9ucyBhcyB0aGUgSmF2YVNWTiBsaWNlbnNlIHdvdWxkIGJlIGNvbXBhdGlibGUgd2l0aCB3aGF0IAp0aGV5IGFyZSBkb2luZy48L3A+Cgo8cD5JbiB0aGUgcHJvY2VzcyBvZiBwdXR0aW5nIHRvZ2V0aGVyIHRoaXMgcHJvcG9zYWwsIGFzIHdlbGwgYXMgaW4gcHJpb3IKcmVsYXRlZCBkaXNjdXNzaW9ucywgd2UgaGF2ZSByZWNlaXZlZCBhIGxvdCBvZiBmZWVkYmFjayBhYm91dCB0aGUgaXNzdWUgb2YKdXNpbmcgbmF0aXZlIGxpYnJhcmllcyAoSmF2YUhMKS4gIEl0IGlzIG91ciBwb3NpdGlvbiB0aGF0IHVzaW5nIHRoZSBuYXRpdmUKbGlicmFyaWVzIHByb3ZpZGVkIGJ5IFN1YnZlcnNpb24gaXMgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIHRha2UuICBUaGUgZXhpc3RpbmcKQ1ZTIHBsdWctaW4gdG9vayB0aGUgYXBwcm9hY2ggb2YgY3JlYXRpbmcgYSBjdXN0b20gcHVyZSBKYXZhIGxpYnJhcnkuICBIb3dldmVyLAppdCBuZWVkcyB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQgdGhhdDo8L3A+Cgo8b2w+CjxsaT5UaGVyZSByZWFsbHkgd2FzL2lzIG5vIG9mZmljaWFsIENWUyAiQVBJIiB0aGF0IGNvdWxkIGhhdmUgYmVlbiB1c2VkLjwvbGk+CjxsaT5DVlMgZGV2ZWxvcG1lbnQgd2FzIGFscmVhZHkgbGFyZ2VseSBkb3JtYW50IGJlZm9yZSBFY2xpcHNlIGRldmVsb3BtZW50CmV2ZW4gc3RhcnRlZC48L2xpPgo8L29sPgoKPHA+RGVzcGl0ZSB0aGlzIHNlY29uZCBwb2ludCwgZXZlbiB0byB0aGlzIGRheSB0aGVyZSBpcyBzdGlsbCB0aGUgb2NjYXNpb25hbAppbmNvbXBhdGliaWxpdHkgYmV0d2VlbiB0aGUgRWNsaXBzZSBDVlMgY2xpZW50IGFuZCBvdGhlciBDVlMgY2xpZW50cyBvcgpzZXJ2ZXJzLiAgU3VidmVyc2lvbiwgaW4gY29udHJhc3QgdG8gQ1ZTLCBoYXMgYW4gb2ZmaWNpYWwgQVBJIHRoYXQgd2FzCmRlc2lnbmVkIHRvIGJlIHVzZWQgYnkgbXVsdGlwbGUgbGFuZ3VhZ2VzLCBpbmNsdWRpbmcgSmF2YSwgYW5kIG1vcmUgaW1wb3J0YW50bHkKU3VidmVyc2lvbiBpcyBhY3RpdmVseSBkZXZlbG9wZWQgYW5kIGZyZXF1ZW50bHkgc2VlcyBtYWpvciBuZXcgZmVhdHVyZXMgYmVpbmcKYWRkZWQuICBJdCB3b3VsZCBiZSBhIG1pc3Rha2UgdG8gdGhpbmsgdGhhdCBhbGwgb2YgdGhlIHdvcmsgdGhhdCBoYXMgZ29uZSBpbnRvClN1YnZlcnNpb24sIGFuZCBjb250aW51ZXMgdG8gZ28gaW50byBpdCB0byB0aGlzIGRheSBjb3VsZCBiZSBlYXNpbHkgcmVwbGljYXRlZAphbmQgbWFuYWdlZC4gIEl0IHdvdWxkIGJlIGJldHRlciBmb3IgRWNsaXBzZSwgYXMgYSBwbGF0Zm9ybSBmb3IgYXBwbGljYXRpb24KZGV2ZWxvcG1lbnQsIHRvIHB1dCB0aGlzIGVmZm9ydCBpbnRvIG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIG5hdGl2ZSBsaWJyYXJpZXMKaW4gRWNsaXBzZSBwbHVnLWlucyBhbmQgYXBwbGljYXRpb25zLiAgU3VyZWx5IGFueSBwcm9ibGVtcyBpbiB0aGlzIGFyZWEgYXJlCnNvbHZhYmxlLCBhbmQgRWNsaXBzZSB3b3VsZCBqdXN0IGJlIHRoYXQgbXVjaCBiZXR0ZXIgaWYgaXQgZGlkIHNvbHZlIHRob3NlCnByb2JsZW1zLjwvcD4KCjxoMj5TY29wZTwvaDI+CjxwPlRoZSBvYmplY3RpdmVzIG9mIHRoZSBTVk4gVGVhbSBQcm92aWRlciBwcm9qZWN0IGFyZSB0bzogPC9wPgo8dWw+Cgk8bGk+UHJvdmlkZSBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgYW5kIG1hbmlwdWxhdGluZyBwcm9qZWN0cyB0aGF0IGFyZSBob3N0ZWQKCWluIGEgU3VidmVyc2lvbiByZXBvc2l0b3J5LjwvbGk+Cgk8bGk+UHJvdmlkZSBVSSBhbmQgZmVhdHVyZXMgdGhhdCBhcmUgZmFtaWxpYXIgdG8gZXhpc3RpbmcgRWNsaXBzZSBDVlMgdXNlcnMsCgl3aGlsZSBhdCB0aGUgc2FtZSB0aW1lIHByb3ZpZGluZyBhbiBhcHByb3ByaWF0ZSB1c2VyIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nCglTdWJ2ZXJzaW9uIHNwZWNpZmljIGZlYXR1cmVzLjwvbGk+Cgk8bGk+UHJvdmlkZSBhIHNpbXBsZSBBUEkgZm9yIGFjY2Vzc2luZyBTdWJ2ZXJzaW9uIGZ1bmN0aW9ucywgYXMgd2VsbCBhcwoJc3VwcG9ydCBoZWFkbGVzcyBvcGVyYXRpb25zIG9mIFRlYW0gcHJvdmlkZXIgZnVuY3Rpb25zLiAgVGhlc2UgaXRlbXMgd2lsbAoJbWFrZSBpdCBlYXNpZXIgZm9yIG90aGVyIHBsdWctaW5zIHRvIGFkZCBTdWJ2ZXJzaW9uIGZ1bmN0aW9uYWxpdHkgYXMgCgluZWVkZWQuPC9saT4KCTxsaT5Qcm92aWRlIGFjY3VyYXRlIGFuZCB1cCB0byBkYXRlIGRvY3VtZW50YXRpb24gb24gdXNpbmcgdGhlIGZlYXR1cmVzIG9mCgl0aGUgU1ZOIHByb3ZpZGVyLjwvbGk+Cgk8bGk+U3VwcG9ydCwgaW1wbGVtZW50IGFuZCBmb2xsb3cgdGhlIGxhdGVzdCBiZXN0IHByYWN0aWNlcyBmb3IgRWNsaXBzZSBVSQoJZGV2ZWxvcG1lbnQJYXMgYXBwcm9wcmlhdGUgZm9yIHRoZSBjdXJyZW50IEVjbGlwc2UgcmVsZWFzZS48L2xpPgogICAgPGxpPkNvbnRyaWJ1dGUgdG8gdGhlIGRldmVsb3BtZW50IGFuZCByZWZpbmVtZW50IG9mIHRoZSBFY2xpcHNlIENvcmUgVGVhbQogICAgQVBJLjwvbGk+CiAgICA8bGk+UHJvdmlkZSByZWFsIHdvcmxkIHVzZSBjYXNlcyBmb3IgZGV2ZWxvcG1lbnQgb2YgdGhlIG9mZmljaWFsIEphdmFITCBTVk4KICAgIGNsaWVudCBpbnRlcmZhY2UuPC9saT4KCTxsaT5Bc3Npc3QgcmVzb3VyY2VzIGF0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaW4gb2ZmZXJpbmcgU1ZOIGhvc3RpbmcgdG8KCXByb2plY3RzLjwvbGk+Cgk8bGk+QXNzaXN0IHRoZSByZWxlYXNlIGVuZ2luZWVyaW5nIHRlYW0gdG8gYWRkIFNWTiBzdXBwb3J0IHRvIHRoZWlyIHRvb2xzCglhbmQgcHJvY2Vzcy48L2xpPgo8L3VsPgoJCjxoMj5EZXNjcmlwdGlvbjwvaDI+Cgo8cD5UaGUgaW5pdGlhbCBjb2RlIGZvciB0aGlzIHByb2plY3Qgd2lsbCBiZSBiYXNlZCBvbiBhIGNvZGUgY29udHJpYnV0aW9uIGZyb20KdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdWJjbGlwc2UudGlncmlzLm9yZy8iPlN1YmNsaXBzZTwvYT4gcHJvamVjdC4gIFN1YmNsaXBzZSB3YXMKcmVjZW50bHkgcmUtbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFUEwgYW5kIHByb3ZpZGVzIGEgcm9idXN0IGFuZCBzdGFibGUKaW1wbGVtZW50YXRpb24gb2YgU3VidmVyc2lvbiBmdW5jdGlvbmFsaXR5IGFzIGFuIEVjbGlwc2UgVGVhbSBQcm92aWRlci4gIEluCmFkZGl0aW9uLCB0aGlzIHByb2plY3Qgd2lsbCBhZGhlcmUgdG8gY29tbW9uIEVjbGlwc2UgZGV2ZWxvcG1lbnQgYmVzdCBwcmFjdGljZXMsCm1vc3Qgb2Ygd2hpY2ggYXJlIGFscmVhZHkgaW4gcGxhY2UgaW4gdGhlIFN1YmNsaXBzZSBjb2RlIGJhc2UuPC9wPgoKPHVsPgo8bGk+U2VwYXJhdGlvbiBpbnRvIGNvcmUgYW5kIHVpIHBsdWctaW5zLjwvbGk+CjxsaT5KVW5pdCB0ZXN0IHN1aXRlLjwvbGk+CjxsaT5JbnRlcm5hbCBwYWNrYWdlcyBmb3Igbm9uLXB1YmxpYyBBUEkuPC9saT4KPGxpPkV4cG9ydCBhbmQgdXNlIG9mIGV4dGVuc2lvbiBwb2ludHMuPC9saT4KPGxpPlNlcGFyYXRlIGhlbHAgcGx1Z2luIGZvciBkb2N1bWVudGF0aW9uIGFzIHdlbGwgYXMgdXNlIG9mIGNvbnRleHQKc2Vuc2l0aXZlIGhlbHAuPC9saT4KPGxpPkxvY2FsaXphdGlvbiBzdXBwb3J0LiAgVGhlIFN1YmNsaXBzZSBjb21tdW5pdHkgaGFzIGNvbnRyaWJ1dGVkIGxvY2FsaXphdGlvbnMKZm9yIEphcGFuZXNlIChqYSksIENoaW5lc2UgKHpoKSwgYW5kIFRyYWRpdGlvbmFsIENoaW5lc2UgKHpoX1RXKS48L2xpPgo8L3VsPgoKPHA+VGhlIFN1YmNsaXBzZSBjb2RlIGFuZCBhcmNoaXRlY3R1cmUgaXMgYmFzZWQgb24gdGhlIEVjbGlwc2UgQ1ZTIHByb3ZpZGVyLCAKc28gaXQgc2hvdWxkIGJlIGVhc3kgZm9yIHRoZSBleGlzdGluZyBUZWFtIGFuZCBDVlMgZGV2ZWxvcGVycyB0byB1bmRlcnN0YW5kLApzaG91bGQgdGhleSBkZWNpZGUgdG8gY29udHJpYnV0ZS48L3A+Cgo8cD4KPGltZyBzcmM9ImFyY2hpdGVjdHVyZS5wbmciIC8+CjwvcD4KCjxwPlRoZSBmb3VuZGF0aW9uIGZvciB0aGlzIHByb2plY3QgaXMgYSBjb21tb24gU3VidmVyc2lvbiBBUEkgbGF5ZXIgY2FsbGVkIHRoZQpTVk4gQ2xpZW50IEFkYXB0ZXIgKDxiPm9yZy5lY2xpcHNlLnN1YnZlcnNpb24uY2xpZW50PC9iPikuICBUaGlzIGFkYXB0ZXIgZ2l2ZXMKY2xpZW50cyBmdWxsIGFjY2VzcyB0byBhbnkgU1ZOIHJlcG9zaXRvcnkgKGV2ZW4gdGhvc2Ugbm90IHVuZGVyIGRpcmVjdCBjb250cm9sCm9mIHRoZSBTVk4gVGVhbSBQcm92aWRlcikuICBUaGUgYWRhcHRlciBzZXJ2ZXMgdG8gY3JlYXRlIGFuIGFic3RyYWN0aW9uIG9uIHRvcApvZiBhbGwgY2xpZW50IGFkYXB0ZXIgaW1wbGVtZW50YXRpb25zIChKYXZhSEwsIEphdmFTVk4gYW5kIHRoZSBTVk4gY29tbWFuZCBsaW5lCmNsaWVudCkuICBUaGlzIGFkYXB0ZXIgZGVmaW5lcyBhIHN0YW5kYXJkIEVjbGlwc2UgZXh0ZW5zaW9uIHBvaW50IHRoYXQgCnByb3ZpZGVyIGltcGxlbWVudGF0aW9ucyBjYW4gY29udHJpYnV0ZSB0byBpbiBvcmRlciB0byBwcm92aWRlIGFuIAppbXBsZW1lbnRhdGlvbi4gIFRoZSB1c2VyIGNhbiB0aGVuIHNlbGVjdCB3aGljaCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbiB0aGV5Cndpc2ggdG8gdXNlIGluIHRoZWlyIGNsaWVudCBwcmVmZXJlbmNlcy48L3A+Cgo8cD5UaGUgZGVmYXVsdCBTVk4gQ2xpZW50IEFkYXB0ZXIgd2lsbCBiZSBKYXZhSEwsIHdoaWNoIGlzIHRoZSBvZmZpY2lhbCBKYXZhCmxhbmd1YWdlIGJpbmRpbmcgZm9yIHRoZSBTdWJ2ZXJzaW9uIG5hdGl2ZSBsaWJyYXJpZXMuICBKYXZhSEwgaXMgZGV2ZWxvcGVkLAptYWludGFpbmVkIGFuZCBwcm92aWRlZCBhcyBwYXJ0IG9mIHRoZSBTdWJ2ZXJzaW9uIHByb2plY3QgYW5kIGlzIGxpY2Vuc2VkIHVuZGVyCnRoZSA8YSBocmVmPSJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnL3Byb2plY3RfbGljZW5zZS5odG1sIj5TdWJ2ZXJzaW9uCmxpY2Vuc2UuPC9hPjwvcD4KCjxwPlRoZSBjb3JlIHBsdWdpbiAoPGI+b3JnLmVjbGlwc2UudGVhbS5zdm4uY29yZTwvYj4pIGlzIHRoZSBFY2xpcHNlIFRlYW0gCnByb3ZpZGVyIGltcGxlbWVudGF0aW9uIGZvciBTdWJ2ZXJzaW9uLiAgSXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBTVk4KaW5zdGFuY2VzIHRoYXQgYXJlIG1hbmFnZWQgYnkgdGhlIGN1cnJlbnQgd29ya3NwYWNlLiAgVGhlIGNvcmUgcGx1Z2luIGFsbG93cwp0aGUgdGVhbSBwcm92aWRlciB0byBmdW5jdGlvbiBpbiBhIGhlYWRsZXNzIGVudmlyb25tZW50LiAgVGhpcyBoZWFkbGVzcyAKZW52aXJvbm1lbnQgaXMgYWxyZWFkeSBiZWluZyB1c2VkIGJ5IHRoZSAKPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9idWNrbWluc3Rlci8iPkJ1Y2ttaW5zdGVyPC9hPiBwcm9qZWN0LjwvcD4KCjxwPkZpbmFsbHksIHRoZSBVSSBwbHVnaW4gKDxiPm9yZy5lY2xpcHNlLnRlYW0uc3ZuLnVpPC9iPikgdXNlcyB0aGUgY29yZQp0ZWFtIHN1cHBvcnQgdG8gcHJvdmlkZSBhIGZyaWVuZGx5IGludGVyZmFjZSB0byB0aGUgdXNlci4gIFRoZSBleGlzdGluZwpTdWJjbGlwc2UgVUkgcGx1Z2luIGFscmVhZHkgaW1wbGVtZW50cyBtYW55IG9mIHRoZSBhZHZhbmNlZCBVSSBlbGVtZW50cyB0aGF0CmhhdmUgYmVlbiBhZGRlZCB0byB0aGUgQ1ZTIFVJIHBsdWdpbiBzdWNoIGFzOiBRdWljayBEaWZmLCBMaXZlIEFubm90YXRpb25zLApDb21tb24gSGlzdG9yeSBWaWV3LCBTeW5jaHJvbml6ZSBWaWV3IGluY2x1ZGluZyBDaGFuZ2UgU2V0cyBhbmQgQ29uc29sZSB2aWV3LgpUaGlzIGlzIGluIGFkZGl0aW9uIHRvIHRoZSBtb3JlIGJhc2ljIHVzZSBvZiB0aGUgVGVhbSwgQ29tcGFyZSBhbmQgUmVwbGFjZQptZW51cy4gIFRoaXMgc2ltaWxhcml0eSBpbiB0aGUgVUkgbWFrZXMgaXQgZWFzaWVyIGZvciBleGlzdGluZyBDVlMgdXNlcnMgdG8KbWFrZSB0aGUgdHJhbnNpdGlvbiB0byBTVk4sIGFuZCBhbHNvIHNtb290aGVzIHRoZSBwYXRoIGJ5IHByb3ZpZGluZyB0aGUgc2FtZQpuaWNlIGV4dHJhcyB0aGF0IHVzZXJzIGhhdmUgYmVjb21lIGFjY3VzdG9tZWQgdG8uICBXZSB3b3VsZCBsaWtlIHRvIGV4cGxvcmUKd2F5cyB0byBmdXJ0aGVyIGludGVncmF0ZSB0aGUgVUkgb2YgdGhlc2UgcGx1Z2lucywgc3VjaCBhcyBwcm92aWRpbmcgYSBjb21tb24KUmVwb3NpdG9yeSB2aWV3IGFuZCBwZXJzcGVjdGl2ZSB0aGF0IGNvdWxkIGJlIHVzZWQgdG8gaG91c2UgQ1ZTLCBTVk4gYW5kIGFueQpvdGhlciByZXBvc2l0b3JpZXMgaW4gb25lIGxvY2F0aW9uLiAgVGhlcmUgaXMgYWxzbyB0aGUgcG9zc2liaWxpdHkgdG8gYnVpbGQKY29tbW9uIGRpYWxvZ3MgZm9yIG9wZXJhdGlvbnMgbGlrZSBDb21taXQuICBGaW5hbGx5LCBTdWJjbGlwc2UgaGFzIGFsc28gZ29uZQp0byBncmVhdCBsZW5ndGhzIHRvIG1ha2UgdGhlIGhhbmRsaW5nIG9mIEJyYW5jaGVzIGFuZCBUYWdzIGFzIGZhbWlsaWFyIGFzCnBvc3NpYmxlIHRvIENWUyB1c2Vycy4gIFNlZTogPGEgCmhyZWY9Imh0dHA6Ly9zdWJjbGlwc2UudGlncmlzLm9yZy9icmFuY2hfdGFnLmh0bWwiPgpodHRwOi8vc3ViY2xpcHNlLnRpZ3Jpcy5vcmcvYnJhbmNoX3RhZy5odG1sPC9hPi4gIFN1YnZlcnNpb24gYW5kIENWUyBoYW5kbGUKYnJhbmNoZXMgYW5kIHRhZ3MgdmVyeSBkaWZmZXJlbnRseSBhbmQgdGhlIHdvcmsgdGhhdCBoYXMgYmVlbiBkb25lIGJ5ClN1YmNsaXBzZSBpbiB0aGlzIGFyZWEgaGFzIGJlZW4gbG9va2VkIGF0IGJ5IHRoZSBTdWJ2ZXJzaW9uIGRldmVsb3BtZW50CmNvbW11bml0eSBhcyBhIHBvc3NpYmxlIHdheSB0byBtYWtlIHRoZSBoYW5kbGluZyBvZiB0YWdzIGluIFN1YnZlcnNpb24KZnJpZW5kbGllciB0byBDVlMgdXNlcnMuPC9wPgoKPGgyPk9yZ2FuaXphdGlvbjwvaDI+Cgo8cD5UaGUgU1ZOIFRlYW0gcHJvdmlkZXIgcHJvamVjdCB3aWxsIGJlIG9yZ2FuaXplZCBhcyBmb2xsb3dzOjwvcD4KCQo8cD48Yj5Jbml0aWFsIGNvbW1pdHRlcnM8L2I+PC9wPgo8cD5UaGUgaW5pdGlhbCBjb21taXR0ZXJzIHdpbGwgZm9jdXMgb24gcmVmYWN0b3JpbmcgdGhlIGV4aXN0aW5nIFN1YmNsaXBzZSBjb2RlCmJhc2UgdG8gbWVldCB0aGUgaW5pdGlhbCBvYmplY3RpdmVzIG9mIHRoaXMgcHJvamVjdCwgYXMgd2VsbCBhcyBhbGlnbmluZyB0aGUKcHJvamVjdCB3aXRoIGNoYW5nZXMgaW4gdGhlIFBsYXRmb3JtIGFuZCBUZWFtIEFQSS4gIFRoZSBpbml0aWFsIGNvbW1pdHRlcnMKYXJlIChpbiBhbHBoYWJldGljYWwgb3JkZXIpOjwvcD4KCjx1bD4KCTxsaT5EYW5pZWwgQnJhZGJ5PC9saT4KCTxsaT5D6WRyaWMgQ2hhYmFub2lzPC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LmNvbGxhYi5uZXQvIj5Db2xsYWJOZXQ8L2E+OiBDb25zaWRlcmluZyBwcm92aWRpbmcKCWRldmVsb3BtZW50IHJlc291cmNlczwvbGk+Cgk8bGk+U3RlcGhlbiBFbHNlbW9yZSAoPGEgaHJlZj0iaHR0cDovL3d3dy5zb2Z0bGFuZGluZy5jb20vIj5Tb2Z0TGFuZGluZwoJU3lzdGVtczwvYT4pPC9saT4KCTxsaT5Ccm9jayBKYW5pY3phazwvbGk+Cgk8bGk+QWxleGFuZGVyIEtpdGFldiAoPGEgaHJlZj0iaHR0cDovL3RtYXRlLm9yZy9zdm4vIj5UTWF0ZTwvYT4pPC9saT4KCTxsaT5FdWdlbmUgS3VsZXNob3Y8L2xpPgoJPGxpPk1hcnRpbiBMZXRlbmF5PC9saT4KCTxsaT5NYXJrIFBoaXBwYXJkICg8YSBocmVmPSJodHRwOi8vd3d3LnNvZnRsYW5kaW5nLmNvbS8iPlNvZnRMYW5kaW5nIAoJU3lzdGVtczwvYT4pOiAgUHJvamVjdCBMZWFkPC9saT4KCTxsaT5KZXNwZXIgU3RlZW4gTfhsbGVyPC9saT4KCTxsaT5QYXVsIFRoaWVsICg8YSBocmVmPSJodHRwOi8vd3d3LnNvZnRsYW5kaW5nLmNvbS8iPlNvZnRMYW5kaW5nCglTeXN0ZW1zPC9hPik6IERvY3VtZW50YXRpb248L2xpPgo8L3VsPgoJCjxwPjxiPlN1YnZlcnNpb24gY29tbWl0dGVyczwvYj48L3A+CjxwPlVubGlrZSBDVlMsIFN1YnZlcnNpb24gaXMgYW4gYWN0aXZlbHkgZGV2ZWxvcGVkIG9wZW4gc291cmNlIHByb2plY3QuICBJdAppcyBpbXBvcnRhbnQgdG8gcGFydGljaXBhdGUgaW4gYW5kIGNvb3JkaW5hdGUgd2l0aCB0aGUgU3VidmVyc2lvbiBwcm9qZWN0IHRvCmhlbHAgaW5zdXJlIHRoYXQgdGhlIG5lZWRzIG9mIEVjbGlwc2UgdXNlcnMgYXJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbiBhcyAKZnV0dXJlIGVuaGFuY2VtZW50cyBhcmUgcGxhbm5lZCBhbmQgZGVsaXZlcmVkLiAgVGhpcyBwcm9wb3NhbCBpbmNsdWRlcyB0aGUKZm9sbG93aW5nIG1lbWJlcnMgdGhhdCBoYXZlIGNvbW1pdHRlciBhY2Nlc3MgdG8gdGhlIFN1YnZlcnNpb24gcHJvamVjdDo8L3A+Cgo8dWw+Cgk8bGk+UGF1bCBCdXJiYSAoPGEgaHJlZj0iaHR0cDovL3d3dy5zb2Z0bGFuZGluZy5jb20vIj5Tb2Z0TGFuZGluZwoJU3lzdGVtczwvYT4pOiBTdWJ2ZXJzaW9uIEZ1bGwgQ29tbWl0dGVyPC9saT4KCTxsaT5NYXJrIFBoaXBwYXJkICg8YSBocmVmPSJodHRwOi8vd3d3LnNvZnRsYW5kaW5nLmNvbS8iPlNvZnRMYW5kaW5nIAoJU3lzdGVtczwvYT4pOiAgU3VidmVyc2lvbiBKYXZhSEwgQ29tbWl0dGVyPC9saT4KCTxsaT5EYW5pZWwgUmFsbCAoPGEgaHJlZj0iaHR0cDovL3d3dy5jb2xsYWIubmV0LyI+Q29sbGFiTmV0Cgk8L2E+KTogU3VidmVyc2lvbiBGdWxsIENvbW1pdHRlcjwvbGk+CjwvdWw+Cgo8cD48Yj5JbnRlcmVzdGVkIHBhcnRpZXM8L2I+PC9wPgo8cD5UaGUgZm9sbG93aW5nIEVjbGlwc2UgcHJvamVjdHMgaGF2ZSBwcmV2aW91c2x5IHdvcmtlZCB3aXRoIHRoZSBTdWJjbGlwc2UKcHJvamVjdCBhbmQgaGF2ZSBleHByZXNzZWQgYW4gaW50ZXJlc3QgaW4gdGhpcyBwcm9wb3NhbC48L3A+Cjx1bD4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL215bGFyLyI+TXlsYXI8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2J1Y2ttaW5zdGVyLyI+QnVja21pbnN0ZXI8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2FsZi8iPkFMRjwvYT48L2xpPgo8L3VsPgoKPHA+PGI+RGV2ZWxvcGVyIGNvbW11bml0eTwvYj48L3A+CjxwPlRoZSBTdWJjbGlwc2UgdGVhbSBoYXMgYSBwcm92ZW4gdHJhY2sgcmVjb3JkIG9mIG9wZXJhdGluZyBpbiBhbiBvcGVuIGFuZAp0cmFuc3BhcmVudCBtYW5uZXIuICBFdmVuIHRoaXMgcHJvcG9zYWwgaGFzIGJlZW4gZGV2ZWxvcGVkIGNvbGxhYm9yYXRpdmVseQpieSB0aGUgY29tbXVuaXR5IHVzaW5nIHRoZSBtYWlsaW5nIGxpc3RzIGFuZCByZXBvc2l0b3J5IHRvIHdvcmsgYXMgYSB0ZWFtLgpXZSBhbHNvIGhhdmUgYSBwcm92ZW4gdHJhY2sgcmVjb3JkIG9mIGJlaW5nIGFibGUgdG8gYXR0cmFjdCBhbmQKc3VwcG9ydCBjb250cmlidXRpb25zIGZyb20gdGhlIGRldmVsb3BlciBjb21tdW5pdHkuICBUaGUgU3ViY2xpcHNlIDEuMCByZWxlYXNlCmxpc3RlZCB0aGlydHktc2V2ZW4gaW5kaXZpZHVhbHMgdGhhdCBtYWRlIGNvZGUgY29udHJpYnV0aW9ucyB0byB0aGUgcHJvamVjdC4gIApXZSBleHBlY3QgdG8gY29udGludWUgdGhpcyB0cmFkaXRpb24gYW5kIGxpa2VseSBleHBhbmQgaXQgZ3JlYXRseSBhcyB0aGUgCnZpc2liaWxpdHkgb2YgdGhlIHByb2plY3QgaW4gdGhlIEVjbGlwc2UgY29tbXVuaXR5IGlzIGxpa2VseSB0byBpbmNyZWFzZSBhcyBhIApyZXN1bHQgb2YgdGhpcyBwcm9jZXNzLjwvcD4KCjxwPlRoZSBTdWJjbGlwc2UgdGVhbSBoYXMgYWxzbyBtYWRlIHNldmVyYWwgY29udHJpYnV0aW9ucyB0byBQbGF0Zm9ybSBUZWFtLCAKTXlsYXIgYW5kIEFMRiB3aXRoIHRoZSBhaW0gb2YgcHJvZHVjaW5nIGEgYmV0dGVyIFRlYW0gUGxhdGZvcm0gZm9yIGV2ZXJ5b25lLiAgCkV4YW1wbGVzIGluY2x1ZGU6PC9wPgo8dWw+Cgk8bGk+PGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTg5ODA2Ij4KW0FQSV0gQWRkIGEgJ1RlYW0nIHF1aWNrIGRpZmYgdGhhdCBkZWxlZ2F0ZXMgdG8gdGVhbSBwcm92aWRlcidzIGltcGxlbWVudGF0aW9uCgk8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTgzIj4KQ29tbW9uIFRlYW0gUmVwb3NpdG9yeSBicm93c2VyIHZpZXcKCTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMjM4NjciPgpbSGlzdG9yeSBWaWV3XSBBbGxvdyBHZW5lcmljSGlzdG9yeVZpZXcgdG8gc2hvdyBoaXN0b3J5IG9mIG5vbiBJUmVzb3VyY2VzCgk8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU0Ij4KVW5hYmxlIHRvIEFwcGx5IFBhdGNoIHRoYXQgY29udGFpbnMgbmV3IGZpbGUKCTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xMzA1NzEiPgpbQ29udHJpYnV0aW9uc10gMy4yTTVBIFByb2JsZW0gQXNzb2NpYXRpbmcgVGVhbSBQcm92aWRlciB3aXRoIFByb2plY3QKCTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNDM5NTQiPgpQcm92aWRlIGJldHRlciBzdXBwb3J0IGZvciBTdWJ2ZXJzaW9uIHBhdGNoIGZpbGUgZm9ybWF0Cgk8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MTY2Ij4KUHJvdmlkZSBhIGhvb2sgdG8gY2FwdHVyZSBjb3B5IGV2ZW50Cgk8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MTMwIj4KR2VuZXJpY0hpc3RvcnkgdmlldyBkb2VzIG5vdCBzdXBwb3J0IGRyYWctbi1kcm9wIGZvbGRlcnMKCTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNDk3MTIiPgpQcm92aWRlIGJldHRlciBzdXBwb3J0IGZvciB1c2luZyBuYXRpdmUgbGlicmFyaWVzIHZpYSBKTkkKCTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xNDI4NzUiPgpTdXBwb3J0IFNWTiBhY3RpdmUgY2hhbmdlc2V0cwoJPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTE0ODUxMiI+CkNvbW1pdCBzdXBwb3J0IGZvciB0ZWFtIHByb3ZpZGVycwoJPC9hPjwvbGk+CjwvdWw+Cgo8cD48Yj5Vc2VyIGNvbW11bml0eTwvYj48L3A+CjxwPkFzIHdpdGggdGhlIERldmVsb3BlciBjb21tdW5pdHksIFN1YmNsaXBzZSBoYXMgYSBwcm92ZW4gdHJhY2sgcmVjb3JkIG9mIApoYXZpbmcgYSB2aWJyYW50IHVzZXIgY29tbXVuaXR5IHRoYXQgaGFzIGFsd2F5cyBwcm92aWRlZCB2YWx1YWJsZSBhc3Npc3RhbmNlIHRvCnRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIGFzIHdlbGwgYXMgYXNzaXN0YW5jZSBpbiBzdXBwb3J0aW5nIG9uZSBhbm90aGVyIGluIGEgCnJlc3BlY3RmdWwgYW5kIHByb2Zlc3Npb25hbCBtYW5uZXIuICBUaGUgU3VidmVyc2lvbiBwcm9qZWN0IGl0c2VsZiBmb3IgdGhhdCAKbWF0dGVyIGhhcyBzZXQgYSBoaWdoIHN0YW5kYXJkIG9mIGV4Y2VsbGVuY2UgaW4gdGhpcyBhcmVhLCB3aGljaCBvdGhlciBwcm9qZWN0cwpoYXZlIGZvbGxvd2VkLjwvcD4KCjxwPjxiPlN1YnZlcnNpdmUgUHJvcG9zYWw8L2I+PC9wPgo8cD5JbiBNYXJjaCAyMDA2IGEgc2Vjb25kIFNWTiBwbHVnLWluIGZvciBFY2xpcHNlIGVtZXJnZWQgaW4gdGhlIGZvcm0gb2YKYSBwcm9kdWN0IG5hbWVkIFN1YnZlcnNpdmUgZnJvbSBhIGNvbXBhbnkgbmFtZWQgPGEgCmhyZWY9Imh0dHA6Ly93d3cucG9sYXJpb24ub3JnLyI+UG9sYXJpb248L2E+LiAgVGhpcyBjb21wYW55IGhhcyBhbHNvIHN1Ym1pdHRlZAphIHByb3Bvc2FsIHRvIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24uICBTZWU6IDxhIApocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3Byb3Bvc2Fscy9zdWJ2ZXJzaXZlLyI+Cmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcHJvcG9zYWxzL3N1YnZlcnNpdmUvPC9hPi48L3A+Cgo8cD5XZSBiZWxpZXZlIHRoYXQgb3VyIHByb3Bvc2FsIHJlcHJlc2VudHMgdGhlIGJlc3Qgb3B0aW9uIGZvciB0aGUgRWNsaXBzZQpjb21tdW5pdHkuICBUaGUgU3ViY2xpcHNlIHByb2plY3QgaGFzIGEgMy15ZWFyIGhpc3Rvcnkgb2Ygb3BlcmF0aW5nIAp0cmFuc3BhcmVudGx5IGFuZCBpcyB3ZWxsIHBhc3QgdGhlICIxLjAiIHN0YWdlIG9mIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLiAgV2UKZXZlbiBoYXZlIGFuIEVjbGlwc2UgMy4yLXNwZWNpZmljIHJlbGVhc2UgYXZhaWxhYmxlIGZvciBDYWxsaXN0byB1c2VycyAtLSAgYQpyZWxlYXNlIHRoYXQgbGV2ZXJhZ2VzIHNldmVyYWwgRWNsaXBzZSAzLjIgZmVhdHVyZXMuICBUaGlzIHByb3Bvc2FsIGhhcyB0aGUgCmJhY2tpbmcgb2YgdHdvIGxvbmcgdGltZSBFY2xpcHNlIEZvdW5kYXRpb24gbWVtYmVycywgPGEgCmhyZWY9Imh0dHA6Ly93d3cuc29mdGxhbmRpbmcuY29tLyI+U29mdExhbmRpbmcgU3lzdGVtczwvYT4gYW5kIDxhIApocmVmPSJodHRwOi8vd3d3LmNvbGxhYi5uZXQvIj5Db2xsYWJOZXQ8L2E+LCBib3RoIG9mIHdob20gaGF2ZSBhIHByb3ZlbiB0cmFjawpyZWNvcmQgb2Ygc3VwcG9ydGluZyBvcGVuIHNvdXJjZSBkZXZlbG9wbWVudCBpbiBnZW5lcmFsLCBhbmQgU3VidmVyc2lvbiBpbiAKcGFydGljdWxhci4gIFdlIGhhdmUgd29ya2VkIHdpdGggYW5kIGhhdmUgdGhlIHN1cHBvcnQgb2Ygc2V2ZXJhbApleGlzdGluZyBFY2xpcHNlIHByb2plY3RzIGFuZCBqdXN0IGFzIGltcG9ydGFudGx5LCB3ZSBoYXZlIHRoZSBiYWNraW5nCm9mIHRoZSBTdWJ2ZXJzaW9uIGRldmVsb3BlciBjb21tdW5pdHkuICBFdmVuIHRoZSBwcmltYXJ5IGRldmVsb3BlciBvZiB0aGUKSmF2YVNWTiBsaWJyYXJ5LCBBbGV4YW5kZXIgS2l0YWV2LCBoYXMgYXNrZWQgdG8gYmUgbGlzdGVkIGFzIGFuIGludGVyZXN0ZWQKcGFydHkgYW5kIHBvdGVudGlhbCBjb250cmlidXRvciB0byBvdXIgcHJvcG9zYWwuPC9wPgoKPHA+V2Ugc3Ryb25nbHkgYmVsaWV2ZSB0aGF0IGFueSBFY2xpcHNlLm9yZyBwcm92aWRlZCBzdXBwb3J0IGZvciBTdWJ2ZXJzaW9uIApzaG91bGQgd29yayBjbG9zZWx5IHdpdGggdGhlIFN1YnZlcnNpb24gZGV2ZWxvcG1lbnQgY29tbXVuaXR5LiAgQW55IHByb3Bvc2FsCnRoYXQgaXMgbm90IGJhc2VkIG9uIHRoZSBvZmZpY2lhbCBTdWJ2ZXJzaW9uIGxpYnJhcmllcyBkb2VzIG5vdCBkbyB0aGlzLjwvcD4KCjxwPldlIGludml0ZSBQb2xhcmlvbiB0byBqb2luIHRoaXMgcHJvcG9zYWwgYW5kIGRldm90ZSB0aGVpciByZXNvdXJjZXMgdG8KaGVscGluZyB1cyBjcmVhdGUgYSBzaW5nbGUgZ3JlYXQgb3B0aW9uIHRoYXQgc2F0aXNmaWVzIHRoZSBuZWVkcyBvZiB0aGUgRWNsaXBzZQphbmQgU3VidmVyc2lvbiBjb21tdW5pdGllcy4gIFRoZXkgaGF2ZSBpbXBsZW1lbnRlZCBzb21lIGdvb2QgaWRlYXMgaW4KU3VidmVyc2l2ZSwgYW5kIHdlIHdvdWxkIGVuY291cmFnZSB0aGVtIHRvIHdvcmsgd2l0aCBvdXIgY29tbXVuaXR5IHRvIGdldAp0aGVzZSBmZWF0dXJlcyBpbmNvcnBvcmF0ZWQgaW50byBvdXIgY29kZSBiYXNlLCBhbmQgd2hlcmUgbmVjZXNzYXJ5LCBpbnRvCnRoZSBTdWJ2ZXJzaW9uIGxpYnJhcmllcyB0aGVtc2VsdmVzLjwvcD4KCjxoMj5UZW50YXRpdmUgUGxhbjwvaDI+CgkKPHVsPgoJPGxpPlNlcHRlbWJlciAyMDA2OiBSZWZhY3RvcmVkIGFuZCByZS1saWNlbnNlZCBjb2RlIGNvbnRyaWJ1dGlvbiBiYXNlZCBvbgoJU3ViY2xpcHNlPC9saT4KCTxsaT5EZWNlbWJlciAyMDA2OiBJbml0aWFsIHJlbGVhc2UgYXMgYW4gRWNsaXBzZSBwcm9qZWN0LCBzdXBwb3J0aW5nCglFY2xpcHNlIDMuMi48L2xpPgoJPGxpPkphbnVhcnkgMjAwNzogSm9pbiB0aGUgcmVsZWFzZSB0cmFpbiBmb3IgRWNsaXBzZSAzLjM8L2xpPgoJPGxpPkp1bHkgMjAwNzogUG9zc2libHkgbW92ZSBwcm9qZWN0IHRvIEVjbGlwc2UgUGxhdGZvcm08L2xpPgo8L3VsPgoKICAgICAgPC9kaXY+CiAgPC9kaXY+Cjw/cGhwCgkkaHRtbCA9IG9iX2dldF9jb250ZW50cygpOwoJb2JfZW5kX2NsZWFuKCk7CgoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/Pgo=