LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTm92ICA4IDE2OjQ0OjQxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGtleXN0cm9rZSBhY2NlbGVyYXRvcnMgaW4gZGlhbG9ncyB3aGljaCBoYXZlIGNvbnRyb2xzIGNvbnRhaW5pbmcKCW90aGVyIGNvbnRyb2xzIGFzIGNoaWxkIHdpbmRvd3MuCgoJKiBpbmNsdWRlL3dpbnByb2MuaCwgbWlzYy9jb21tZGxnLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZXM6IExCXy9DQl8vRU1fIG1lc3NhZ2VzIGZvciBnZXR0aW5nL3NldHRpbmcgdGV4dCBhbmQgYSBidWcgaW4KCTE2LT4zMiBiaXQgY29udmVyc2lvbi4KCgkqIG9iamVjdHMvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBDcmVhdGVESUJTZWN0aW9uIGZyb20gc2VnIGZhdWx0aW5nIHdoZW4gb25lIGRpbWVuc2lvbiBvZgoJc2VjdGlvbiBpcyAwLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCVN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglTdXBwb3J0IGZvciBJUFggbmV0d29ya2luZyB2aWEgd2luc29jayB1bmRlciBMaW51eC4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgc3R1YiBmb3IgU3RhcnREb2NBIGFuZCBFbmREb2MuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUphbWVzIFN1dGhlcmxhbmQgPEphbWVzU3V0aGVybGFuZEBnbXguZGU+CglNb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZXRDdHJsSGFuZGxlcigpIGZ1bmN0aW9uIChhbmQgdGhlCglyZWxhdGVkIGNvbnNvbGUgZnVuY3Rpb25zKS4KCgkqIG9iamVjdHMvYnJ1c2guYywgcmVsYXkzMi9nZGkzMi5zcGVjOiBKZWZmIEpvaGFubiA8ampvaGFubkBraXZhLm5ldD4KCUFkZGVkIENyZWF0ZURJQlBhdHRlcm5CcnVzaFB0IChHREkzMi4zNSkgd2l0aCBtaW5vciBkb2N1bWVudGF0aW9uCgl1cGRhdGVzLgoKCSogZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmgsIG1zZG9zL2lvcG9ydHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2ltdWxhdGUgdGhlIFZHQSB2ZXJ0aWNhbCByZWZyZXNoLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdXBwb3J0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBpbiBCbGl0IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgZGV2aWNlIHR5cGUgY29uc3RhbnRzIGFuZCB1c2VkIHRoZW0gaW4gZGV2aWNlIGVudW1lcmF0aW9uCglmdW5jdGlvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQVBJIGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IFJlZ0VudW1LZXlFeCwgUmVnRW51bVZhbHVlIGFuZAoJUmVnUXVlcnlJbmZvS2V5IHRha2VzIHRoZSBzaXplIG9mIHRoZSBidWZmZXJzIGFzIGNoYXJhY3RlcnMuCgoJKiBvbGUvY29tcG9iai5jOiBBZGRlZCBtaXNzaW5nICNpbmNsdWRlICJjb25maWcuaCIKCgkqIEFVVEhPUlMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgb2xlL2NvbXBvYmouYzoKCUp1c3RpbiBCcmFkZm9yZCA8anVzdGluQHVrYW5zLmVkdT4KCVJlcGxhY2VzIENvQ3JlYXRlR3VpZCBzdHViIHdpdGggYW4gaW1wbGVtZW50YXRpb24gb2YgRENFJ3MgVVVJRAoJc3BlY2lmaWNhdGlvbi4gQWxzbyByZW1vdmVzIHNvbWUgdW5uZWNlc3NhcnkgY29kZSBmcm9tIFN0cmluZ0Zyb21DTFNJRC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGFuIGV4dGVybiAiQyIgc2FmZWd1YXJkLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvd2luZG93cy5oLCB3aW5kb3dzL2lucHV0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGFkZHMgR2V0RXhpdENvZGVQcm9jZXNzCgktIGNvcnJlY3RzIHRoZSByZXR1cm4tdHlwZSBvZiBHZXRLZXlTdGF0ZQoJLSBjb3JyZWN0cyB0aGUgd2luZWxpYiBkZWZpbml0aW9uIG9mIElzRGlhbG9nTWVzc2FnZQoJLSBhZGRzIHdpbmVsaWIgZGVmaW5pdGlvbnMgZm9yIFByaW50RGxnCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFeHRTZWxlY3RDbGlwUmduIGZpeDogUkdOX0RJRkYgZGlkIG5vdCB3b3JrLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gbmV3IGlucHV0IGV2ZW50IGhhbmRsaW5nLgoKCSogaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvaW5wdXQuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvaW5wdXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVVNFUi1zaWRlIHBhcnQgb2YgaW5wdXQgZXZlbnQgaGFuZGxpbmc6IGNvbnRhaW5zIGltcGxlbWVudGF0aW9uIG9mCglrZXliZF9ldmVudCBhbmQgbW91c2VfZXZlbnQsIGFuZCBVU0VSLXJlbGF0ZWQgY29kZSByZW1vdmVkIGZyb20KCXdpbmRvd3MvZXZlbnQuYyBhbmQgd2luZG93cy9rZXlib2FyZC5jLgoKCSogd2luZG93cy9kaXNwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBESVNQTEFZLkRSViByZW1vdmVkIGZyb20ga2V5Ym9hcmQuYy4KCgkqIGlmMTYzMi9tb3VzZS5zcGVjLCBpbmNsdWRlL21vdXNlLmgsIHdpbmRvd3MvbW91c2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgTU9VU0UuRFJWIChjb250YWlucyBzb21lIGNvZGUgdGFrZW4gZnJvbQoJd2luZG93cy9ldmVudC5jKS4KCgkqIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpbmNsdWRlL2tleWJvYXJkLmgsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgS0VZQk9BUkQuRFJWIChjb2RlIG1vc3RseSB0YWtlbiBmcm9tIHByZXZpb3VzCgl3aW5kb3dzL2tleWJvYXJkLmMpLgoKCSogbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVhbGx5ICpkbyogc3dpdGNoIHRvIHRoZSBpbml0aWFsIHRhc2sncyBzdGFjay4KCUNhbGxMYXJnZVN0YWNrIG1lY2hhbmlzbSByZS1lbmFibGVkLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCU5ldyBGaWxlcy4gQWRkZWQgJ2RhdGUgYW5kIHRpbWUgcGlja2VyJyBhbmQgJ21vbnRoIGNhbGVuZGFyJyBjb250cm9sCglkdW1taWVzLiBUaGV5IGFyZSB1c2VkIGJ5IE91dGxvb2sgRXhwcmVzcy4KCgkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBDcmVhdGVCaW5kQ3R4KCkgYW5kIGFkZGVkIG1pc3NpbmcgQ29HZXRDbGFzc09iamVjdCgpCgl0byAqLnNwZWMgZmlsZS4gTWFrZXMgSW50ZXJuZXQgRXhwbG9yZXIgNC4wMSBoYXBweSA7LSkKCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUxpdHRsZSBpbXByb3ZlbWVudC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHByZWxpbWluYXJ5IGhpdCB0ZXN0aW5nLiBNYWtlcyByZWdlZGl0LmV4ZSBoYXBweSA7LSkKCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRvY3VtZW50YXRpb24gYW5kIGZpeGVkIHR5cG9zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgRHJhd1N0YXR1c1RleHQzMkFXKCkgYW5kIENyZWF0ZVN0YXR1c1dpbmRvdzMyQVcoKS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRpc3BsYXkgYW5kIGxheW91dCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL21vbnRoY2FsLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IEZpbGVzLiBBZGRlZCAnZGF0ZSBhbmQgdGltZSBwaWNrZXInIGFuZCAnbW9udGggY2FsZW5kYXInIGNvbnRyb2wKCWR1bW1pZXMuIFRoZXkgYXJlIHVzZWQgYnkgT3V0bG9vayBFeHByZXNzLgoKU2F0IE5vdiAgNyAxMjo1NjozMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCByZWxheTMyL2dkaTMyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oOgoJQ2hhcmxlcyBTdXByaW4gPGNzdXByaW5AbHlueC5kYWMubmV1LmVkdT4KCUFkZGVkIHN0dWJzIGZvciBTZXRXaW5NZXRhRmlsZUJpdHMgYW5kIEdldEVuaE1ldGFGaWxlUGFsZXR0ZUVudHJpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU3RvcCBYMTFEUlZfUm91bmRSZWN0IGNhbGxpbmcgWERyYXdBcmMgd2l0aCAtdmUgd2lkdGgvaGVpZ2h0IHBhcmFtcwoJd2hpY2ggaXQgZGlkIGlmIGVpdGhlciBlbGxpcHNlIGRpbWVuc2lvbiB3YXMgemVyby4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJT3B0aW1pemUgUm91bmRSZWN0MzIgdG8gY2FsbCBSZWN0YW5nbGUzMiBpZiBlaXRoZXIgZWxsaXBzZSBkaW1lbnNpb24KCWlzIHplcm8uCgoJKiByZWxheTMyL21wci5zcGVjLCBtaXNjL25ldHdvcmsuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN0dWIgV05ldEVudW1DYWNoZWRQYXNzd29yZHMuCgoJKiBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFkZSB0aGlzIGZpbGUgRE9TTU9EIGZyaWVuZGx5LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVbmlmaWVkICJObyBpbXBsZW1lbnRhdGlvbiBmb3IuLi4iIHdhcm5pbmdzLgoKCSogd2luMzIvZGV2aWNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbW9ub2RlYmcudnhkIHVzZWQgYnkgc29tZSBPcmlnaW4gcHJvZ3JhbXMgaW1wbGVtZW50ZWQuCgoJKiBvYmplY3RzL2JpdG1hcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmFpbCBpZiBsZXNzIHRoZW4gb25lIGVudGlyZSBsaW5lIHJlcXVlc3RlZCBpbiBHZXRCaXRtYXBCaXRzMzIuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIFdNX0dFVERMR0NPREUgaGFuZGxpbmcgaW4gKFVuKU1hcE1zZzMyQXRvMTYuCgoJKiBpZjE2MzIvY29tcG9iai5zcGVjLCBpbmNsdWRlL29sZS5oLCBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgQ29Mb2FkTGlicmFyeSwgQ29GcmVlQWxsTGlicmFyaWVzLAoJQ29GcmVlVW51c2VkTGlicmFyaWVzLCBDb0ZyZWVMaWJyYXJ5LgoJRml4ZWQgbWlzc3BlbGxpbmcgb2YgQ29VbmluaXRpYWxpemUuCgoJKiBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL21haW4uYzoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglGaXhlcyBmb3Igb3RoZXIgbGFuZ3VhZ2VzLgoKRnJpIE5vdiAgNiAxNzozNjoxMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJRml4IHdpZGUgY2hhcmFjdGVyIGZ1bmN0aW9ucyB0byByZXR1cm4gY2hhcmFjdGVyIGNvdW50IGluIGNoYXJhY3RlcgoJcXVhbnRpdGllcyBub3QgYnl0ZSBxdWFudGl0aWVzLiAgTWFrZSBSZWdRdWVyeUluZm9LZXkgYW5kCglSZWdRdWVyeUluZm9LZXkgYmVoYXZlIGNvcnJlY3RseSBpbiB3aW45NSBtb2RlLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2hhbmdlZCBtb3VzZSBidXR0b24gbWFwcGluZyBhbmQgY2hlY2sgc2l6ZSBvZiByZXR1cm4gYnVmZmVyLgoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRXh0U2VsZWN0Q2xpcFJnbigpIHdpdGggUkdOX0NPUFkgY29waWVzIHRoZSB3cm9uZyByZWdpb24uCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGFuIGVycm9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBGSUxFX1NoYXJlRGVueS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29sYXJpcyByZWRlZmluZXMgRVJSIGFuZCBDUywgZml4ZWQgb2NjdXJhbmNlcy4KCVNvbGFyaXMgaGFzIFRSQVBOTyBpbiBpdHMgc2lnY29udGV4dCwgYWRkZWQgdG8gc2lnX2NvbnRleHQuaAoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21taW8uYywgcmVsYXkzMi93aW5tbS5zcGVjLCBpZjE2MzIvbW1zeXN0ZW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSBtbWlvU2V0QnVmZmVyIGNhbGxhYmxlIGZyb20gMTYgYW5kIDMyIGJpdCBjb2RlLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIGFyZyB0eXBlLgoKCSogb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9nZGlvYmouYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmVkIFgxMSBESUIgc3R1ZmYgdG8geDExZHJ2LgoKCSogd2luMzIvY29kZV9wYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUaGUgQVBJIGZvciBXaWRlQ2hhclRvTXVsdGlCeXRlIHNheXMgdGhhdCB0aGUgc3JjLXN0cmluZyBoYXMgb25seSB0byBiZQoJdHJlYXRlZCBhcyBOVUxMLXRlcm1pbmF0ZWQgaWYgc3JjbGVuIGlzIC0xLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3dpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHN1cmUgQ29uZmlndXJlTm90aWZ5IGlzIHByb2Nlc3NlZCBiZWZvcmUgRXhwb3NlLCBkZWZlcnJpbmcgdGhlCglFeHBvc2UgZXZlbnQgaWYgbmVjZXNzYXJ5LCB0aHVzIHdvcmtpbmcgYXJvdW5kIGEgV00gZmxhdyB3aXRoIHZpcnR1YWwKCWRlc2t0b3Agc2Nyb2xsaW5nIGluIC1tYW5hZ2VkIG1vZGUuCgoJKiByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglUcmFuc2xhdGVkIGluIEZyZW5jaCAobm90IHNvIGdvb2QgYW55aG93KSBtZXNzYWdlIGZvciB0aGUgbWFyayBvbgoJc3lzdGVtIG1lbnUuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHRoZSBkZWZhdWx0IGZyb20gMCB0byAweDQwOSAoZW5nLXVzKS4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHdvIG1pc3NpbmcgV0lOQVBJcy4KCgkqIGluY2x1ZGUvaW50ZXJmYWNlcy5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIG9uZSB3cm9uZyBwYXJhbWV0ZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCAtLWRpc2FibGUtbGliLgoKVGh1IE5vdiAgNSAxMDozMzoxOCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvbnN0YW50cyBmb3IgY29udHJvbHMgaW4gY29tbW9uIGRpYWxvZ3MuCgpXZWQgTm92ICA0IDE4OjA4OjMzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NydGRsbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgpTdW4gTm92ICAxIDE5OjI3OjI0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wb3MuYywgbWlzYy9jb21tZGxnLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy93aW5zb2NrLmMsIG1pc2NlbXUvaW5zdHIuYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21kaS5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBtZW1vcnkvaGVhcC5jOgoJSmVzcGVyIFNrb3YgPGpza292QGN5Z251cy5jby51az4KCWVnY3MgJ2FtYmlndW91cyBlbHNlJyB3YXJuaW5ncyBmaXhlcy4KCgkqIGluY2x1ZGUvdG9vbGhlbHAuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdldCByaWQgb2YgdGhlIHJlZGVmaW5pdGlvbiBvZiBNQVhfUEFUSCBhbmQgbW92ZSBQUk9DRVNTRU5UUlkzMgoJZGVmaW5pdGlvbiB0byB0b29saGVscC5oLgoKCSogd2luZG93cy93aW4uYywgaW5jbHVkZS9wZV9pbWFnZS5oLCBsaWJyYXJ5L3dpbmVzdHViLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSdW4gV2luZWxpYiBhcHBsaWNhdGlvbnMgYXMgMzItYml0IHByb2Nlc3NlcyBpbiB0aGUgaW5pdGlhbCB0YXNrLgoJU2ltcGxpZmllZC9yZW1vdmVkIHNldmVyYWwgc3BlY2lhbCAnaWYgKF9fd2luZWxpYiknIGNhc2VzIGluCglXaW5lIG1haW4gY29kZSBvYnNvbGV0ZWQgYnkgdGhhdCBjaGFuZ2UuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBtb3VzZSBkcml2ZXIgY2FsbGJhY2sgYWxzbyBpZiB3aW5kb3dzIGFyZSBub3QgcmVnaXN0ZXJlZCB3aXRoIFgKCShpZiB1c2luZyBuYXRpdmUgVVNFUi5FWEUpLgoKCSogbWVtb3J5L2F0b20uYywgaW5jbHVkZS9hdG9tLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gc2VwYXJhdGlvbiBiZXR3ZWVuIEtFUk5FTCBhbmQgVVNFUi4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIG5ldyBXaW5lIHN0YXJ0dXAgc2VxdWVuY2UsIHNlcGFyYXRpbmcgc3RhcnR1cCBpbnRvCglLRVJORUwvVVNFUi9HREkgcmVsYXRlZCBwYXJ0cywgYWxsb3dpbmcgbmF0aXZlIHJlcGxhY2VtZW50LgoJSW1wbGVtZW50ZWQgaW5pdGlhbCAna2VybmVsJyB0YXNrLgoKCSogaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvY29tcG9iai5jOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIElucHJvY1NlcnZlcjMyIENvR2V0Q2xhc3NPYmplY3QuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3JlIGJpdG1hcCBmaXhlcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBGaXhlZCBjcmFzaGVzIHdpdGggV01fR0VURExHQ09ERSB0cmFuc2xhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvLmN2c2lnbm9yZSwgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW4uaCwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIG1vdmluZyBzb21lIFgxMSB3aW5kb3cgbWFuYWdlbWVudCBjb2RlIHRvIHdpbmRvd3MveDExZHJ2LgoKCSogaWYxNjMyL3VzZXIuc3BlYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy93aW5wcm9jLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIElzRGlhbG9nTWVzc2FnZTE2LgoKCSogTWFrZWZpbGUuaW46IERvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJVGVsbCBwZW9wbGUgdG8gaWdub3JlIHRoZSAnZ2V0cycgd2FybmluZy4gU29tZSB3aWxsIGxpc3Rlbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgd2luZG93cy9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBIGNvdXBsZSBvZiBzbWFsbCBmaXhlcyB0byBteSBiaXRtYXAgcGF0Y2guCgoJKiByZXNvdXJjZXMvVE9ETywgcmVzb3VyY2VzL3N5c3Jlc19EZS5yYywgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYywgd2luZG93cy9ub25jbGllbnQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsbG93IHRoZSB1c2VyIHRvIHB1dCBhIG1hcmsgaW4gdGhlIGRlYnVnIGxvZyBieSBhZGRpbmcgYSBpdGVtIGluIHRoZQoJU1lTTUVOVS4gVGhlIG1lc3NhZ2VzIG5lZWRzIGltcGxlbWVudGF0aW9uIGluIGFsbCBvdGhlciBsYW5ndWFnZXMgdGhhbgoJRW5nbGlzaCBhbmQgR2VybWFuLgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHaXZlIHRlbXBmaWxlIGEgZGlmZmVyZW50IG5hbWUgZXZlbiBpZiB0aGV5IGFyZSBjcmVhdGVkIGluIHRoZSBzYW1lCglzZWNvbmQuIFJlbW92ZWQgc29tZSBmaXhtZXMgZnJvbSB0aGUgU2hhcmVEZW55IHN0dWZmLgoKCSogaW5jbHVkZS9tZGkuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ3JlYXRlV2luZG93RXgzMltBV10gbm93IGNyZWF0ZXMgYW4gTURJIGNoaWxzIHdoZW4gdGhlIFdNX0VYX01ESUNISUxECglleHRlbmRlZCBzdHlsZSBpcyBzcGVjaWZpZWQuIEFsc28gaW1wbGVtZW50ZWQgQ3JlYXRlTURJV2luZG93MzJBKCkKCWNhbGwgLSBzaW5nbGUgdGhyZWFkIG9ubHkgLS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFcnJlZCBpbiB0aGUgYml0IG1hY3JvcyBpbiB0cmVldmlldy5jLiBTaGlmdGNvdW50cyB3ZXJlIHdyb25nLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgaW1wb3J0cyB3aXRoIENoYXJhY3RlcmlzdGljcyAwIGZhaWwgZm9yIEJvcmxhbmQKCXByb2dyYW1zICh3aGljaCBzZWVtIHRvIGhhdmUgYWx3YXlzIGNoYXJhY3RlcmlzdGljcyAwKS4gQ2hhbmdlZCB0byBhbGdvcml0aG0KCXRvIHNvbWV0aGluZyBhIGJpdCBtb3JlIGludGVsbGlnZW50LgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIENvRnJlZUxpYnJhcnkgc3R1Yi4KCgkqIFJFQURNRTogVXBkYXRlZCBGQVEgbG9jYXRpb24uCgoJKiBncmFwaGljcy9lc2NhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgU0VHUFRSIGNvbnZlcnNpb24gZm9yIFNUQVJURE9DIGluIEVzY2FwZTMyKCkuCgoJKiBvYmplY3RzL2RjLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTZXREQ1N0YXRlIGRpZCBub3QgcmVzZXQgY2xpcHBpbmcgcmVnaW9uIHRvIGVtcHR5LgoKCSogd2luMzIvaW5pdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNtYWxsIG9mZiBieSBvbmUgZXJyb3IgaW4gR2V0Q29tcHV0ZXJOYW1lMzJXLCBhbHdheXMga2lsbGVkIHRoZQoJbGFzdCBjaGFyYWN0ZXIgb2YgYSBob3N0bmFtZS4KCgkqIG9iamVjdHMvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgSGVhcEZyZWUoKSBjb2xvcm1hcCBpZiB3ZSBkaWRuJ3QgYWxsb2NhdGUgb25lLgoKCSogd2luMzIvYWR2YXBpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWlzYy9jcnRkbGwuYywgbWlzYy9wcmludGRydi5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHJlbGF5MzIvY3J0ZGxsLnNwZWMsIHJlbGF5MzIvbXByLnNwZWMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCByZWxheTMyL3dpbnNwb29sLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWJzIGZvciB1c2VyMzIsYWR2YXBpMzIgZnVuY3Rpb25zLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL250ZGxsLyosIGluY2x1ZGUvbnRkbGwuaCwgbWlzYy9BdHRpYy9udGRsbC5jLCBtaXNjL01ha2VmaWxlLmluLCByZWxheTMyL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgTnQqIGFuZCBSdGwqIGZ1bmN0aW9uIHN0dWJzLCBtb3ZlZCBudGRsbC5jIHRvIGRsbHMvbnRkbGwvLgoKCSogbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9oZWFwLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUNoYW5nZWQgbWFueSBXQVJOKClzIHJlbGF0ZWQgdG8gaW50ZXJuYWwgV2luZSBtZW1vcnkgZmFpbHVyZXMgdG8KCUVSUigpcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIC5zcGVjIGVudHJ5IGZvciBLRVJORUwuUmVnaXN0ZXJTZXJ2aWNlUHJvY2Vzcy4KCgkqIGlmMTYzMi9kaXNwbGF5LnNwZWMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dWIgZm9yIENoZWNrQ3Vyc29yKCkuCgoJKiBpbmNsdWRlL2RpYWxvZy5oLCB3aW5kb3dzL2RlZmRsZy5jOiBUaW0gTmV3c29tZSA8bnVpc2FuY2VAY211LmVkdT4KCUZpeCBmb3Igbm9uLW1vZGFsIGRpYWxvZyBjbG9zaW5nLgoKCSogd2luZG93cy9kaW5wdXQuYzogRGF2aWQgRmF1cmUgIDxmYXVyZUBrZGUub3JnPgoJUmV3cm90ZSB0aGUgdHdvIHJvdXRpbmVzIHVzaW5nIHRoZSB2a2V5LT5zY2FuY29kZSBhcnJheSB0byB1c2UKCWtleWMydmtleSBmb3IgZWFjaCBrZXljb2RlLCBpbnN0ZWFkLiBOb3QgdGVzdGVkLgoJUmVtb3ZlZCB1bnVzZWQgSURpcmVjdElucHV0RGV2aWNlQV9HZXREZXZpY2VTdGF0ZS4KCUZpeGVkIHdhcm5pbmcgaW4gVFJBQ0UoKSBjYWxsLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8ZmF1cmVAa2RlLm9yZz4KCURlbGV0ZWQgdGhlIHZrZXktPnNhbmNvZGUgYXJyYXksIGJlY2F1c2UgUVdFUlRZIHNwZWNpZmljLgoJQmFjayB0byB1c2luZyB0aGUgWCBrZXljb2RlIGluc3RlYWQgYXMgdGhlIHNjYW5jb2RlLiBUZXN0ZWQuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVByaW50IGEgbWVzc2FnZSBpZiB0aGUgUG9zdFNjcmlwdCBkcml2ZXIgY2FuJ3QgZmluZCBhIFBQRCBmaWxlLgoKCSogbXNkb3MvaW50MTAuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBWR0EgMjU2LWNvbG9yIG1vZGUgMHgxMyB1c2luZyB0aGUgRGlzcGxheURpYiBWR0EgZW11bGF0aW9uLgoJKERPUyBhcHBzL2dhbWVzIHVzaW5nIHRoaXMgbW9kZSBjb21lcyB1cCBub3csIGFsdGhvdWdoIHlvdSBjYW4ndAoJcmVhbGx5IGRvIGFueXRoaW5nIHdpdGggdGhlbSAoeWV0PykuKQoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBtYWNybyBWODZfRkxBRy4KCgkqIG1zZG9zL2Rvc21lbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNldCBkZWZhdWx0IHZpZGVvIG1vZGUgdG8gMyAoODB4MjUgY29sb3IpLgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJZ25vcmVzIGEgY291cGxlIG9mIHNpZ25hbHMuCgoJKiBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZGlzcGRpYi5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaCwgbXNkb3MvaW9wb3J0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBWR0EtZW11bGF0aW5nIERpcmVjdFggY29kZSBmcm9tIGRpc3BkaWIuYyB0byBhIHNlcGFyYXRlCglmaWxlLiBNYWRlIGl0IHVzZSBhIHN5c3RlbSB0aW1lciBhbmQgdHJhcCBJL08gYWNjZXNzZXMgdG8gdGhlIFZHQQoJREFDIHJlZ2lzdGVycyB0byBhY2NvbW1vZGF0ZSBEaXNwbGF5RGliLXVzaW5nIHByb2dyYW1zIHRoYXQgdHJ5IHRvCglhY2Nlc3MgdGhlIFZHQSBoYXJkd2FyZSBkaXJlY3RseS4KCgkqIG1pc2NlbXUvaW5zdHIuYywgaWYxNjMyL3NpZ25hbC5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2Mvc3lzdGVtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUluZGlyZWN0aW9uIGZvciBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gZm9yIHVzZSBieSBET1MgY29kZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGEgNTVIeiBzeXN0ZW0gdGltZXIsIGxldHRpbmcgRE9TIGFwcHMgY2FsaWJyYXRlCgl0aGVpciBkZWxheSBsb29wcyBhbmQgc3VjaC4gQ2FsbHMgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIGZvcgoJaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIChwcmluY2lwYWxseSBJL08gcG9ydCBhY2Nlc3MpLiBBZGRlZCBtYWNybwoJVjg2X0ZMQUcuCgpTYXQgT2N0IDMxIDEyOjIwOjU2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpbnB1dC5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBmaXhlcy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0aGUgRklYTUUoKSBhbmQgbW92ZWQgU2V0TGFzdEVycm9yKDApIHRvIHRoZSBlbmQgKHNvIHRoYXQKCUdldFRlbXBGaWxlTmFtZSBldC5hbC4gY2FuJ3Qgb3ZlcndyaXRlIGl0KS4KCgkqIG1pc2MvQXR0aWMvbnRkbGwuYywgcmVsYXkzMi9udGRsbC5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb3RzIG9mIHN0dWJzIHRvIGdldCB3aW5sb2dvbi5leGUgZnJvbSBudDMuNTEgYW5kIG90aGVyIE5UMy41MSBhcHBsZXRzCglhIGJpdCBmdXJ0aGVyLgoKCSogd2luZG93cy9tZGkuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ESWNoaWxkIGNyZWF0ZWQgd2hlbiB0aGUgTURJIGNsaWVudCBoYXMgdGhlIE1ESVNfQUxMQ0hJTERTVFlMRVMKCXN0eWxlLCBzaG91bGQgbm90IGJlIHNob3duIGF0IGNyZWF0aW9uIG5vciBhY3RpdmF0ZWQgdW5sZXNzIHRoZQoJV1NfVklTSUJMRSBmbGFnIGlzIHNldC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJQnVnZml4IGZvciBmaXh1cF9pbXBvcnRzOiBFbmFibGUgY2hlY2tpbmcgZm9yIHRlcm1pbmF0aW5nIGltcG9ydAoJc3RydWN0IHdpdGggQ2hhcmFjdGVyaXN0aWNzIGJpdGZpZWxkIHNldCB0byAwLgoKCSogd2luZG93cy93aW4uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURlbGF5IGxpbmtpbmcgbmV3bHkgY3JlYXRlZCB3aW5kb3cgaW4gbGlua2VkIGxpc3QgdW50aWwgYWZ0ZXIgdGhlCglXTV9OQ0NSRUFURSBtZXNzYWdlLgoKCSogZmlsZXMvZmlsZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU21hbGwgYnVnIGluIEZJTEVfSW5Vc2UgZG9lcyBub3QgZG8gYSByZWxlYXNlIG9uIGV2ZXJ5IGFjcXVpcmVkIGZpbGUKCXBvaW50ZXIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglscHN6TmFtZSBvZiBOVUxMIGlzIGhhbmRsZWQgKHJlbW92ZXMgc29tZSB3YXJuaW5ncykuCgoJKiB0b29scy90ZXN0cnVuOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU5vdyBhbGxvd3Mgc3BlY2lmaWNhdGlvbiBvZiBhIHN0YXJ0IGRpcmVjdG9yeSBvbiB0aGUgY21kbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRzIHJpZCBvZiB0aGUgYXJjaC1kZXBlbmRlbnQgYml0IG9wZXJhdGlvbnMgKHRlc3RlZCBvbiBMaW51eCBhbmQKCVNvbGFyaXMveDg2KS4KCldlZCBPY3QgMjggMTQ6NTg6MDIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQSBkZXN0IGJ1ZmZlciB3YXMgcHJpbnRlZCBvdXQgYXMgc3RyaW5nLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb3JyZWN0ZWQgMiB3cm9uZyBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXRyaWNrIFNwaW5sZXIgPHNwaW5sZXIucGF0cmlja0BtYXlvLmVkdT4KCUFkZGVkIHN0dWJzIGZvciBQcm9jZXNzMzJGaXJzdC9Qcm9jZXNzMzJOZXh0LgoKCSogaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcmVnaW9uLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvdHlwZXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8Z291Z2V0QG1ldGFpbnRlZ3JhdGlvbi5uZXQ+CglGaXhlZCBzb21lIExQUE9JTlQvTFBTSVpFIG1pc21hdGNoZXMgYW5kIHNvbWUgbWlzc2luZyAiY29uc3QiIGluIHRoZQoJaGVhZGVycyBwcm90b3R5cGVzLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9vZW1iaXRtYXAuYywgd2luZG93cy9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHBCaXRtYXBCaXRzIGFuZCBwQ3JlYXRlQml0bWFwIHRvIHRoZSBHREkgZnVuY3Rpb24gdGFibGUgYW5kCgltb3ZlZCB0aGUgWDExIGRlcGVuZGVudCBzdHVmZiBvdXQgb2Ygb2JqZWN0cy9iaXRtYXAuYyBpbnRvIHgxMWRydi4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaCwgZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IFNIR2V0U2ltcGxlSURMaXN0RnJvbVBhdGgzMkFXLgoJVW5pY29kZS1zYWZlOiBQYXRoRmluZEZpbGVuYW1lMzJBVy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1c3RpbiBCcmFkZm9yZCA8anVzdGluQGJ1c2JveS5zcGVkLnVrYW5zLmVkdT4KCUlFeHRyYWN0SWNvbiBoYWQgYW4gZXh0cmEgYyBpbiBhIHN0cnVjdCBkZWZpbml0aW9uLgoKCSogcmVsYXkzMi9kcGxheS5zcGVjOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LnNwYW1sZXNzLmNvbT4KCUFkZGVkIGVudHJ5IGZvciBEaXJlY3RQbGF5RW51bWVyYXRlLgoKCSogb2xlL25scy9za3kubmxzLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBTbG92YWsgbmxzLXJlc291cmNlcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgZGlmZmVyZW5jZXMgYmV0d2VlbiBTZXRSZWN0UmduMTYgYW5kIFNldFJlY3RSZ24zMi4gQWxzbyBhIGJ1ZyBmaXggZm9yCglDcmVhdGVSb3VuZFJlY3RSZ24uCgpUdWUgT2N0IDI3IDE1OjQxOjU0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3VzZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbnVtRGlzcGxheU1vZGVzKiByZXR1cm5zIGEgc3RhdGljIGxpc3Qgb2YgbW9kZXMgd2l0aCBhbGwgZGVwdGhzCgkoaGVscHMgaGV4ZW4yZGVtbyksIENoYW5nZURpc3BsYXlTZXR0aW5ncyByZXR1cm5zIHRydWUgYWxsIHRoZSB0aW1lLgoKCSogaW5jbHVkZS93aW50eXBlcy5oLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgbWlkaU9wZW5TdHJlYW0gKGhlbHBzIGhleGVuMmRlbW8pLgoKCSogb2xlL25scy9lbmMubmxzLCBvbGUvbmxzL2ZyYy5ubHMsIHJlc291cmNlcy9zeXNyZXNfRnIucmM6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJU21hbGwgcGF0Y2ggZm9yIGJldHRlciBGcmVuY2ggc3VwcG9ydC4KCgkqIGxvYWRlci9lbGYuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IG1lbW9yeSBvdmVyd3JpdGUgYnVnLgoKTW9uIE9jdCAyNiAxMTowNDoxMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jOiBQYXNjYWwgQ3VvcSA8cGN1b3FAZW5zLWx5b24uZnI+CgkzMi1iaXQgY2xpcGJvYXJkIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4IGZvciBRVUVVRV9TaWduYWw6IEFsd2F5cyB1c2UgUG9zdEV2ZW50IGlmIG5vIHRocmVhZCBpcyB3YWl0aW5nCglvbiB0aGUgcXVldWUuCgoJKiB3aW5kb3dzL21kaS5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGEgbWlub3IgcHJvYmxlbSB3aXRoIHRoZSBtZW51cyBmb3IgbWRpIGNoaWxkIHdpbmRvd3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBjb21tZW50ZWQgb3V0IGNvZGUsIGRlc3Ryb3kgb2xkIHdpbmRvdwoJd2hlbiBTZXREaXNwbGF5TW9kZSBpcyBjYWxsZWQgYWdhaW4sIEVudW1EaXNwbGF5TW9kZXMgbm93IHJldHVybnMKCWFsbCBwb3NzaWJsZSBtb2RlcyAodXNpbmcgYSBzdGF0aWMgbGlzdCkuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFub24gc2hhcmVkIG1hcHBpbmcgZml4ZWQgZm9yIGZpbGUgc2hhcmluZy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAyNSAxMDozMjoyMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5ubHMuaDogQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglGaXhlcyBmb3IgTEFOR19ORVVUUkFMLgoKCSogaW5jbHVkZS90YXNrLmg6CglBZGRlZCBzb21lIHBhZGRpbmcgdG8gdGhlIFBEQiBmb3IgaWxsLWJlaGF2aW5nIGFwcHMgKHByb2JsZW0gcmVwb3J0ZWQKCWJ5IEFuZHJlYXMgTW9ocikuCgoJKiBkb2N1bWVudGF0aW9uL2lvcG9ydC10cmFjZS1oaW50cywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBtaXNjZW11L2luc3RyLmM6CglKb25hdGhhbiBCdXp6YXJkIDxqYWJAaGV4LnByZXN0ZWwuY28udWs+CglBZGRlZCBhIG5ldyBkZWJ1Z2dpbmcgY2hhbm5lbCBpbyB0byBhbGxvdyByZWFkL3dyaXRlcyBvbiBhIHBvcnQgdG8gYmUKCWxvZ2dlZCB0byBhIGZpbGUuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglSZXBsYWNlZCAweDAwIHdpdGggMHgwMSBpbiB0aGUgdmtleS0+c2FuY29kZSBhcnJheSwgc28gdGhhdCBubyBrZXkgaXMKCWlnbm9yZWQuIDB4MDAgaXMgdXNlZCBmb3IgZ2VuZXJhdGVkIGtleSBldmVudHMgb25seS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCUFQSSBEb2N1bWVudGF0aW9uIGZvciBTZW5kTWVzc2FnZSwgR2V0VGlja0NvdW50LCBQb3N0UXVpdE1lc3NhZ2UsCglHZXRNZXNzYWdlUG9zLCBHZXRNZXNzYWdlVGltZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGVsZXRlIHRoZSBmaWxlbmFtZSBmb3IgdGhlIG1hcHBpbmcgaW5zdGFudGx5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJTWljaGFlbCBQb29sZSA8cG9vbGVAZ3Jhdml0b24ucmVzLmNtdS5lZHU+CglTdHViIGZvciBTSFNpbXBsZUlETGlzdEZyb21QYXRoLgoKCSogbG9hZGVyL3Rhc2suYzogRml4ZWQgYnVnIGluIFN3aXRjaFN0YWNrVG8uCgpTYXQgT2N0IDI0IDEzOjA2OjE2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9zY3JvbGwuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDaGVjayBpZiBzY3JvbGxiYXIgYW5kIHBhcmVudCBhcmUgdmlzaWJsZSBiZWZvcmUgcmVkcmF3LgoKCSogaWYxNjMyL3NoZWxsLnNwZWMsIGluY2x1ZGUvc2hlbGwuaCwgbWlzYy9zaGVsbC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRHJhZyozMiBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBEcmFnJkRyb3AgZnJvbSBLREUgYXBwIHRvIDE2LzMyIGJpdCBXaW5kb3plIGFwcC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRklYTUUgbWVzc2FnZSBpbiBQb3N0TWVzc2FnZTMyeCBpZiBwYXJhbWV0ZXJzIGFyZSB0cnVuY2F0ZWQKCXdoZW4gY2FsbGluZyBQb3N0TWVzc2FnZTE2LgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgZ2xvYmFsIGhhbmRsZXMsIGltcGxlbWVudGVkIENvbnZlcnRUb0dsb2JhbEhhbmRsZS4KCUFsbG9jYXRlIHN0YXJ0dXAgZGF0YSBhbmQgMTYtYml0IHN0YWNrIGZvciBpbml0aWFsIHByb2Nlc3MuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzogTGVpZ2ggV2VkZGluZyA8bHdlZGRpbmdAY29ycGxpbmsuY29tLmF1PgoJU21hbGwgZml4LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL0VzLnJjLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvRXMucmMsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIG9sZS9ubHMvZXVxLm5scywgcmVzb3VyY2VzL3N5c3Jlc19Fcy5yYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJU21hbGwgY29ycmVjdGlvbnMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvYWRMaWJyYXJ5RXhXIHNwZWMgYWRkZWQgKGZ1bmN0aW9uIHdhcyB0aGVyZSkuCglTZXRQcm9jZXNzUHJpb3JpdHlCb29zdCBzdHViIGFkZGVkLgoKCSogbXNkb3MvZHBtaS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBTb2xhcmlzLgoKCSogaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2Rpc3BkaWIuc3BlYywgaW5jbHVkZS9kaXNwZGliLmgsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kaXNwZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIERpc3BsYXlEaWIuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYWNrIHRvIHN1cHBvcnQgaW50ZWdlciBpZHMgaW4gYWxsIHN0YXRpYyBjb250cm9scy4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJlZ2lubmluZyBvZiBtb3VzZSBzdXBwb3J0IGluIERpcmVjdElucHV0IChvbmx5ICJzdGFuZGFyZCIgbW91c2UKCWNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIGZvciBub3cpLgoKCSogaW5jbHVkZS8qLmgsIGRsbHMvY29tY3RsMzIvKi5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHh4eF9VbnJlZ2lzdGVyKCkgZnVuY3Rpb25zIHRvIGFsbCBjb21tb24gY29udHJvbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1pbm9yIGltcHJvdmVtZW50cyBhbmQgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGluY2x1ZGUvcmViYXIuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCB0aGUgcmViYXIgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRyYW5zcGFyZW50IGFuZCB0cmFja2luZyB0b29sdGlwcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGEgcG9wdXAgbWVudSBzZWxlY3Rpb24gYnVnLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIERyYXdDYXB0aW9uMTYoKSBhbmQgRHJhd0NhcHRpb25UZW1wMTYoKS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCUZpeGVkIHdhcm5pbmcuCgoJKiBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3BzZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIG9iamVjdHMvZGliLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFkZHMgQXJjLCBDaG9yZCwgR2V0Q2hhcldpZHRoLCBQaWUsIFBvbHlQb2x5Z29uLCBQb2x5UG9seWxpbmUsIFJvdW5kUmVjdCwKCVNldFBpeGVsLCBoYXRjaGVkIGJydXNoZXMgYW5kIGEgc3R1YiBmb3IgU3RyZXRjaERJQml0cyB0byB0aGUgUG9zdFNjcmlwdAoJZHJpdmVyLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludGVycnVwdHMuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGludDE3IGFuZCBpbnQxOS4KCgkqIG1zZG9zL2ludDE5LmM6IENhcmwgdmFuIFNjaGFpayA8Y2FybEBkcmVhbWNvYXQuY2hlLnVjdC5hYy56YT4KCVN0dWJzIGZvciBkb3MgbW9kZSByZWJvb3QgaW50ZXJydXB0LgoKCSogbXNkb3MvaW50MTcuYzogQ2FybCB2YW4gU2NoYWlrIDxjYXJsQGRyZWFtY29hdC5jaGUudWN0LmFjLnphPgoJU29tZSBwcmludGVyIHN0dWJzIGZvciBET1MgYWRkZWQuCgoJKiBtc2Rvcy9pbnQxMy5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglNb3JlIHN0dWJzIGFkZGVkLiBUaGVzZSBjaGFuZ2VzIGFyZSBvbmx5IHBhcnRpYWxseSBtaW5lLCBJIGp1c3QgbWFkZQoJdGhlbSBjb21waWxlLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgc29tZSB0cmFjZXMgYW5kIGNsZWFuZWQgdXAgYSBjb3VwbGUgb2YgdGhpbmdzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIG1lbW9yeS9zdHJpbmcuYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCBzb21lIHN0cmluZy1zaGVsbDMyIGZ1bmN0aW9ucyB0byAzMkFXLCBwYXJhbWV0ZXIgYXJlCglvcyBkZXBlbmRpbmcgMzJBIG9yIDMyVyAoLXdpbnZlciBudDM1MSBvciBudDQwKSwgc29tZSBuZXcgZnVuY3Rpb25zLgoJU29tZSBmaXhlcyBpbiBvbGUybmxzLgoJTmV3IE9MRTJOTFNfQ2hlY2tMb2NhbGUoKSB0byBoYW5kbGUgTG9jYWxlX1VzZXJfRGVmYXVsdCBhbmQKCUxvY2FsZV9TeXN0ZW1fRGVmYXVsdC4KCVNoZWxsMzIgbm93IGR5bmFtaWNseSBsaW5rcyB0byBEUEFfKigpLCBjb21kbGczMiB3b3JrcyBhZ2FpbgoJKGNvbWN0bDMyIGhlYXAgYWxsb2MgcGF0Y2ggYnJva2UgaXQpLgoKCSogaW5jbHVkZS93aW52ZXJzaW9uLmgsIG1pc2MvdmVyc2lvbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBWRVJTSU9OX0lzT3NVbmljb2RlKCkuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3JlIG9mZi1ieS1vbmUgZXJyb3JzIGZpeGVkLgoKCSogaW5jbHVkZS9maWxlLmgsIG1pc2MvY3J0ZGxsLmMsIG1zZG9zL3Z4ZC5jLCB3aW4zMi9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpbGUgc2hhcmluZyBmaXhlcy4KCkZyaSBPY3QgMjMgMTc6MjY6NDQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbWRsZy5jOiBOaWNrIEhvbGxvd2F5IDxhbGZpZUBhbGZpZS5kZW1vbi5jby51az4KCUJ1ZyBmaXguCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIERPUyBlbnZpcm9ubWVudCBwYXNzaW5nLgoKCSogbWlzYy9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3lzbWV0cmljczMyVyBmb3IgU1BJX0dFVElDT05USVRMRUxPR0ZPTlQgcmV0dXJucyBjb3JyZWN0IGZvbnRuYW1lLgoKCSogaW5jbHVkZS9mb250LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgRk9OVF9HZXRPYmplY3QzMlcoKSwgR2V0T2JqZWN0MzJXKCkuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWIgUmVnaXN0ZXJUYXNrTGlzdC4KCU5ldyBmdW5jdGlvbiBFbnVtRGlzcGxheVNldHRpbmdzMzJXKCkuCgoJKiBtaXNjL250ZGxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBwYXJhbWV0ZXIgY2hlY2tpbmcgaW4gUmx0Q29weVNpZC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgbWVzc2FnZSBtYXBwaW5nIDMyQTwtLT4zMlcgZm9yIEVNXywgQ0JfLCBMQl8gZm9yIFVuaWNvZGUuCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYXZpZmlsMzIuc3BlYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbmV3IGRsbCBhdmlmaWwzMi5kbGwuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYywgaW5jbHVkZS9kb3NleGUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlyc3Qgc2hvdCBhdCBEUE1JIHJlYWxtb2RlIGNhbGxzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzZXZlcmFsIGJ1Z3Mgd2l0aCBETEwgaW5pdGlhbGl6YXRpb24uCgpUaHUgT2N0IDIyIDE3OjAyOjI1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvc3lzbGV2ZWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBvcmRpbmFsIGZvciB0d28gc3lzbGV2ZWwgZnVuY3Rpb25zLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQW5vdGhlciBtaXNzaW5nIFdJTkFQSS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBjb3JyZWN0aW9ucyBpbiBtbWlvIGRlY2xhcmF0aW9ucy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRha2UgdmlydHVhbCBzaXplcyBpbiBhY2NvdW50IGZvciB0aGUgdG90YWwgdm1hIHNpemUuCgoJKiBvbGUvbmxzL3JvbS5ubHM6IERpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglBZGQgc29tZSBtb3JlIE5MUyBkZWZpbml0aW9ucyBmb3IgdGhlIFJvbWFuaWFuIGxhbmd1YWdlLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHByb2dyYW1zIChxdWFrZTIgZXQgYWwpIGRvIGNoZWNrIGZvciBEU0NBUFNfRU1VTERSSVZFUiBhbmQgc3RvcAoJdG8gd29yay4gJ0FkanVzdCcgY2FwcyBmbGFncyBhY2NvcmRpbmdseS4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCVBldGUgUmF0emxhZmYgPHByYXR6bGFmZkBjZmEuaGFydmFyZC5lZHU+CglTdHViIGZvciBDb0NyZWF0ZUd1aWQoKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUJyaWFuIExpdHppbmdlciA8YnJpYW5AbGl0emluZ2VyLmNvbT4KCUZpeGVzIGZvciBGcmVlQlNELgoKCSogbGlidGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUBtaW5lcnZhLmNjLnVpdC5ubz4KCU1ha2Ugc3VyZSBoZWxsbzNyZXMuaCBpcyBnZW5lcmF0ZWQgZXZlbiBpZiAnbWFrZSBkZXBlbmQnIG5ldmVyIGhhcwoJYmVlbiBydW4uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIG1vdmluZyBhbmQgc2l6aW5nIG9mIGNoaWxkIHdpbmRvd3MuCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJWFF1ZXJ5S2V5bWFwIC0+IFRTWFF1ZXJ5S2V5bWFwIChmaXhlcyB0aGUgWElPIGVycm9ycyByZXBvcnRlZCkuCgpXZWQgT2N0IDIxIDE3OjIwOjQ4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1pc2NlbXUvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBpbmRpcmVjdGlvbiBmb3IgY3R4X2RlYnVnIHRvIHRoZSBET1MgbG9hZGVyLCBzbyBXaW5lbGliIHdvcmtzCglhZ2Fpbi4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwcG9ydCBhbm9uIHNoYXJlZCBtYXBwaW5ncyB1c2luZyB0ZW1wb3JhcnkgZmlsZXMgKHdvbnQgYmUgZGVsZXRlZAoJeWV0KS4KCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcyBmcmVlaW5nIHRoZSBpbmNvcnJlY3QgcG9pbnRlcnMgLT4gY3Jhc2ggaW4gbWFsbG9jcy9mcmVlcy4KCgkqIGZpbGVzL2Rvc19mcy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURlZmluZURvc0RldmljZSBzdHViIGFkZGVkLgoKCSogbWlzY2VtdS9tYWluLmMsIHdpbmUuaW5pOiBDaGFkIFBvd2VsbCAocHhweEB1c2EubmV0KQoJQWRkZWQgYSBkZWZhdWx0IHByb2dyYW0gb3B0aW9uIGluIHdpbmUuY29uZiBpbiBzZWN0aW9uIFtwcm9ncmFtc10ga2V5CglEZWZhdWx0LgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBEYXZpZCBDdXRoYmVydCA8ZGFjdXRAZWNlLmNtdS5lZHU+CglCZXR0ZXIgZml4IGZvciB0aGlzX2lzX2Ffc3ludGF4X2Vycm9yLgoKCSogb2xlL25scy8qLm5sczoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgdGhlIGVudHJpZXMgZm9yIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgYW5kCglMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVwZGF0ZWQgbWFucGFnZS4KCgkqIHJlbGF5MzIvbXNhY20zMi5zcGVjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHdyb25nIG9yZGluYWxzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBhIGJ1ZyBpbiBSZWN0SW5SZWdpb24uCgpUdWUgT2N0IDIwIDE1OjI2OjI2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJUmVtb3ZlZCBhbiBpbmNvcnJlY3QgZXJyb3IgbWVzc2FnZS4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAbWluZXJ2YS5jYy51aXQubm8+CglNYWtlIHN1cmUgdGhlIGFjY2VzcyBmdW5jdGlvbnMgYXJlIGFsd2F5cyB1c2VkIHRvIGdldCBsYWJlbCBhbmQgc2VyaWFsCgludW1iZXIuCgpNb24gT2N0IDE5IDA4OjQ4OjI0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAaG9sLmZyPgoJRml4ZWQgYnVnIG9uIHBsYXRmb3JtcyB3ZXJlIGJ1ZmZlcnMgcmV0dXJuZWQgYnkgZ2V0ZW52KCkgc2hhbGwgbm90IGJlCglmcmVlKCknZWQuIEFkZGVkIEZyZW5jaCAoZGVmYXVsdCkgaW4gbG9jYWxlIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBEYXZlIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCUNoYW5nZWQgInRoaXMgaXMgYSBzeW50YXggZXJyb3IiIHRvICJ0aGlzX2lzX2Ffc3ludGF4X2Vycm9yIiB0byBtYWtlIGEKCWNvbXBpbGUtdGltZSBlcnJvciBtZXNzYWdlIG1ha2UgbW9yZSBzZW5zZS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIG9mZiBieSBvbmUgZXJyb3IgaW4gSEFORExFX0dldE9ialB0ci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE9jdCAxOCAxNDo0ODozMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUcnkgdG8gaW1wbGVtZW50IHRoZSBPRl9TSEFSRV9YWFggb3B0aW9ucy4KCU1vdmUgdGhlIG1vZGUgdHJhbnNsYXRpb25zIHRvIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbWFpbi5oLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlMm5scy5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zdG9yYWdlLmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YiBmb3IgQ29TZXRTdGF0ZTMyLgoKCSogbWlzY2VtdS9tYWluLmM6IENoYWQgUG93ZWxsIDxweHB4QHVzYS5uZXQ+CglBZGRlZCBhYmlsaXR5IHRvIHJlYWQgYSBzdGFydHVwIHByb2dyYW0gZnJvbSB3aW5lLmluaSBmaWxlLgoJUHV0IGl0IGluIHNlY3Rpb24gW3Byb2dyYW1zXSBrZXkgU3RhcnR1cC4KCgkqIGluY2x1ZGUvdHJhY2tiYXIuaCwgaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGdXJ0aGVyIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJSW1wbGVtZW50ZWQgTG9hZEN1cnNvckZyb21GaWxlLCBmaXhlZCBEcmF3SWNvbkV4IHRvIHN1cHBvcnQgb2Zmc2NyZWVuCglkcmF3aW5nLCBmaXhlZCBDVVJTT1JJQ09OX0NyZWF0ZUZyb21SZXNvdXJjZSB0byBzdXBwb3J0IExSXyBzZW1hbnRpY3MuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBMb2FkSW1hZ2UgdG8gc3VwcG9ydCBhbG1vc3QgYWxsIExSXyBmbGFncy4KCgkqIG9iamVjdHMvZGliLmM6IFR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgYnVnIGluIERJQl9TZXRJbWFnZUJpdHNfUkxFOCAoYmVjYXVzZSAnY29sb3InIHZhciB3YXMgV09SRCwgYWxsCglDT0xPUkVGcyBoYWQgcmVkIHBhcnQgemVyb2VkKSB0aGF0IG1hZGUgcGxlbnR5IG9mIGN5YW4gY29sb3JzLCBtaW5vcgoJYnVnIGZpeGVzLCBjaGFuZ2VzIHRvIHN1cHBvcnQgTFJfIGZsYWdzLgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJQWRkZWQgVklSVFVBTF9NYXBGaWxlVyB0byBtYXAgZmlsZSB0byBtZW1vcnkgaW4gb25lIGZ1bmN0aW9uIGNhbGwuCgoJKiBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIHdpbmRvd3MvbXVsdGltb24uYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJTW92ZWQgTXVsdGltb25pdG9yIEFQSSBkZWNsYXJhdGlvbnMgdG8gd2luZG93cy5oLgoKCSogaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9kcml2ZXIuaCwgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjLCB3aW5kb3dzL2RyaXZlci5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRlZCBEZWZEcml2ZXJQcm9jMzIgZnJvbSB3aW5tbS5kbGwuCgoJKiBjb250cm9scy9zY3JvbGwuYywgaW5jbHVkZS9zY3JvbGwuaCwgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUdvdCByaWQgb2YgZmxpY2tlcmluZyBzY3JvbGxiYXIgYXJyb3dzLiBNREkgc2Nyb2xsaW5nIHNwZWVkZWQgdXAgYQoJYml0LgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy9kZXUubmxzLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglHZXRMb2NhbGVJbmZvMzJBIGNhbiBoYW5kbGUgbGVuPTAgbm93LCBzZXRzIExhc3RFcnJvciBhbmQgdG91Y2hlcwoJYnVmZmVyIG9ubHkgd2hlbiBuZWNlc3NhcnkuCglVcGRhdGVkIGRldS5ubHMgYW5kIHNvbWUgTENUWVBFUyBpbiB3aW5ubHMuaC4KCgkqIGlmMTYzMi9yZWxheS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ2FsbFByb2NbRXhdMzJXIGNhbGxlZCB3aXRoIGxwUHJvY0FkZHJlc3M9PU5VTEwgc2hvdWxkIHJldHVybiB6ZXJvIGFuZAoJbm90IGNyYXNoLgoKU2F0IE9jdCAxNyAxMzowNzo0OCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlZHVjZWQgaHVnZSAoMUdCKSBoZWFwIGNyZWF0aW9uIHRoYXQgY2F1c2VkIFN0YXJjcmFmdCB0byBmYWlsLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIHdpbmRvd3MvZGlhbG9nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBTb2xhcmlzLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIG5vbiBPU1Mgc3lzdGVtcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIG5vbiBYRjg2LURHQSBzeXN0ZW1zLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC92b2xpbmZvLmM6CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglOZXcgZmlsZSB0byB0ZXN0IERSSVZFX0dldExhYmVsLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbC5jYT4KCVNtYWxsLCBzdWJvcHRpbWFsLCBmaXggZm9yIDMyIGJpdCBjZGF1ZGlvIG9wZW4gcm91dGluZXMuIE5lZWRzIHByb3BlcgoJMzJiaXQgY2RhdWRpbyBiaXQgc3VwcG9ydCBiZWZvcmUgaXQgY2FuIGJlIHJlbW92ZWQuLi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWwuY2E+CglBZGRlZCBhIGJ1bmNoIG9mIHN0dWJzIGZvciBkZHJhdyBzdWZhY2Ugcm91dGluZXMuIEFsbCBzdHVicyBmb3IKCXN1cmZhY2UgcHJlc2VudCBub3cuCglDb21tZW50ZWQgb3V0IG1lc3NhZ2UgcHVtcCBjYWxscy4gSSBkb24ndCBzZWUgYSByZWFzb24gZm9yIHRoZW0gYmVpbmcKCXRoZXJlLiBFdmVyeXRoaW5nIHdvcmtzIGZpbmUgd2l0aCAtZGVza3RvcCBhbmQgLW1hbmFnZWQgc3RpbGwgaGFzCglwcm9ibGVtcy4gRGlzYWdyZWVtZW50cz8KCgkqIG9sZS9vbGUybmxzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgR2V0TG9jYWxlSW5mbzMyQSBmb3Igb3RoZXIgbGFuZ3VhZ2VzIHRoYW4gZW5fdWsuCglNYWRlIGl0IHJlY29nbmlzZSBMT0NBTEVfU1lTVEVNX0RFRkFVTFQsIExPQ0FMRV9TWVNURU1fREVGQVVMVCBhbmQKCWxhc3QgYnV0IG5vdCBsZWFzdCB0aGUgZmlyc3QgYXJndW1lbnQgbGNpZCB3aGVyZSBpcyBhbGwgYWJvdXQuLi4KCgkqIGluY2x1ZGUvc3lzbGV2ZWwuaCwgbWlzYy9yZWdpc3RyeS5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgbXVsdGltZWRpYS90aW1lLmMsIHdpbmRvd3MvY2FyZXQuYywgZGxscy9tc2FjbTMyL2J1aWx0aW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBtb3JlIG1pc3NpbmcgV0lOQVBJcyAoaG9wZWZ1bGx5IGNvcnJlY3QpLgoKCSogb2xlL29sZTJubHMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0aGUgPSAtPiA9PSBidWcuCgoJKiBtc2Rvcy9pbnQyZi5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglTaGVsbCBwYXJhbWV0ZXJzIChjb25maWcuc3lzKSBhbmQgQU5TSSBzdXBwb3J0IHN0dWJzLgoKCSogbXNkb3MvTWFrZWZpbGUuaW46IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDE2LmMgYW5kIGludDI5LmMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50ZXJydXB0cy5jOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJTW9yZSBpbnRlcnJ1cHRzIHRoYXQgY2FuIGJlIGRvbmUgZnJvbSBET1MgbW9kZS4KCgkqIG1zZG9zL2ludDI5LmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDI5IChGYXN0IFdyaXRlIHRvIFNjcmVlbikgc3VwcG9ydC4KCgkqIG1zZG9zL2ludDE2LmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIGludDE2IChLZXlib2FyZCkgc3VwcG9ydCwgbW9zdGx5IHN0dWJzLgoKRnJpIE9jdCAxNiAxNTo0MDoyMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBidWdmaXhlcywgbmV3IHN0dWJzIFNIR2V0UmVhbElETCwgU0hSZWdRdWVyeVZhbHVlMzJXLAoJU0hSZWdRdWVyeVZhbHVlRXgzMlcsIFN0clJldFRvU3RyTiwgU3RyQ2hyVywgU0hBbGxvY1NoYXJlZCwKCVNITG9ja1NoYXJlZCwgU0hVbmxvY2tTaGFyZWQsIFNIRnJlZVNoYXJlZCwgU2V0QXBwU3RhcnRpbmdDdXJzb3IzMiwKCVNITG9hZE9MRTMyLCBTaGVsbF9NZXJnZU1lbnVzMzIsIFBhdGhHZXREcml2ZU51bWJlcjMyLCBEcml2ZVR5cGUzMiwKCVNIQWJvcnRJbnZva2VDb21tYW5kLCBTSE91dE9mTWVtb3J5TWVzc2FnZUJveCwgU0hGbHVzaENsaXBib2FyZC4KCgkqIG1pc2MvbnRkbGwuYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJRGlldG1hciBLbGluZyA8ZGlldG1hci5rbGluZ0B1c2EubmV0PgoJQWRkZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9uIFJ0bE9wZW5DdXJyZW50VXNlci4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBtaXNjL3NoZWxsLmMsIG1pc2MvdmVyLmMsIG1pc2MvdmVyc2lvbi5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wZWV4ZS5oLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVuYW1lZCBhbGwgTFBJTUFHRV8qIHR5cGVzIHRvIFBJTUFHRV8qLgoKVGh1IE9jdCAxNSAxMzowMzoxMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wb3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIGFuIGVycm9yIHdoZW4gYW4gb3duZWQgd2luZG93IGFjdGl2YXRlcyBpdHMgb3duZXIgZHVyaW5nCgljcmVhdGlvbi4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDbG9zaW5nIGEgZGlhbG9nIHVzaW5nIHRoZSBtZW51IGJhciAoIngiIG9yICItIiBidXR0b24gb3Igd2luZG93cwoJbWVudSkgbXVzdCBnZW5lcmF0ZSBhIFdNX0NPTU1BTkQrSURDQU5DRUwgbWVzc2FnZSwgdW5saWtlIGNsb3NpbmcKCW5vcm1hbCB3aW5kb3dzIHdoZW4gRGVzdHJveVdpbmRvdygpIGlzIGNhbGxlZC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQGNpcC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbjMyL29yZGluYWxzLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBQcml2YXRlRXh0cmFjdEljb25FeFtBV10sIFByaXZhdGVFeHRyYWN0SWNvbnNXLAoJUmVnaXN0ZXJTaGVsbEhvb2tXaW5kb3csIERlcmVnaXN0ZXJTaGVsbEhvb2tXaW5kb3csIEdldFByb2dtYW5XaW5kb3csCglHZXRUYXNrbWFuV2luZG93LCBTZXRQcm9nbWFuV2luZG93LCBTZXRTaGVsbFdpbmRvd0V4LAoJU2V0VGFza21hbldpbmRvdy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgbWlzYy9udGRsbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgTnRRdWVyeUluZm9ybWF0aW9uVGhyZWFkLCBOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbiwKCVJ0bEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZCwgUnRsRXF1YWxTaWQsIFJ0bEZyZWVTaWQuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IFR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgUGxheVNvdW5kIHRvIHN0YXJ0IGl0cyB0aHJlYWQgdGhlIHJpZ2h0IHdheS4KCldlZCBPY3QgMTQgMTg6NDA6MzUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUNCX1NFVENVUlNFTCBhbmQgc29tZSBvdGhlciBmaXhlcy4KCgkqIHdpbmRvd3MvcXVldWUuYzogQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJQmV0dGVyIFFVRVVFX0ZsdXNoTWVzc2FnZXMoKS4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYywgb2JqZWN0cy9mb250LmMsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvZ2RpLnNwZWM6CglNb3NoZSBWYWluZXIgPG1vc2hldkBlYXN5YmFzZS5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldE91dGxpbmVUZXh0TWV0cmljczMyQS4KCUFkZGVkIHN0cnVjdHVyZXMgZm9yIE9VVExJTkVURVhUTUVUUklDUy4KCgkqIG9iamVjdHMvZGMuYywgaW5jbHVkZS9nZGkuaCwgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvIG5vdCBjbGlwIHNvdXJjZSByZWN0YW5nbGUgZXZlbiBieSB2aXNpYmxlIHJlZ2lvbiBmb3IgYml0Ymx0cy4KCUFkZGVkIGZpZWxkICd0b3RhbEV4dGVudCcgdG8gV0lOX0RDX0lORk8uCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdHViIGZvciBWTU0gUE0gQVBJIEFIPTAyNltkZV0gKG5ldmVyIHNheSAnc2FmZSBtb2RlJykuCgoJKiBtZW1vcnkvaGVhcC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTG9jYWwzMkZyZWUgY2F1c2VkIGZyZWUgaGFuZGxlcyBsaXN0IGNvcnJ1cHRpb24uCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAtLWRpc2FibGUtZGVidWcgY29uZmlnIG9wdGlvbi4KClR1ZSBPY3QgMTMgMTI6NTA6MDQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCUFkZGVkIHN0dWJzIFNIUmVnQ2xvc2VLZXkoKSwgU0hSZWdPcGVuS2V5W0FXXSgpLCBTSFJlZ1F1ZXJ5VmFsdWVFeEEoKQoJYW5kIEZpbGVJY29uSW5pdCgpIG5lZWRlZCBieSBXaW45NSBleHBsb3Jlci4KCk1vbiBPY3QgMTIgMDc6MjU6NTQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9tZW51LmM6CglOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbXByb3Zpbmcga2V5Ym9hcmQgaGFuZGxpbmcsIGluY2x1ZGluZyBhY2NlbGVyYXRvciBrZXlzIGluIGRpYWxvZwoJYm94ZXMuIEFsc28gZml4ZXMgZW50ZXIga2V5IGluIEFnZW50MzIgZWRpdCBib3guCgpTdW4gT2N0IDExIDE5OjM3OjIzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NvbW1kbGcuYzogRXJpYyBQb3VlY2ggIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCUFkZGVkIHN1cHBvcnQgaW4gZmlsZSBkaWFsb2cgYm94ZXMgaGFuZGxpbmcgZm9yIGZpbHRlcnMgbGlrZQoJIioudHh0OyouYmF0Ii4KCgkqIHdpbjMyL2tlcm5lbDMyLmMsIHNjaGVkdWxlci90aHJlYWQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBuZXcgUEUgRExMIGluaXRhbGl6YXRpb24gY29kZSwgdHJ5aW5nIHRvIGNhbGwgdGhlCglEbGxFbnRyeVBvaW50IHJvdXRpbmVzIGFsd2F5cyBpbiBjb3JyZWN0IG9yZGVyIDotKQoJQnlwYXNzIHNub29waW5nIHdoZW4gZ2V0dGluZyBkYXRhIGJ1ZmZlciBhZGRyZXNzZXMgKHRodW5rIGJ1ZmZlcnMsCglfX0dQIGhhbmRsZXJzKSBhbmQgZm9yIDMyLWJpdCByb3V0aW5lcyBkaXJlY3RseSBjYWxsZWQgZnJvbSAxNi1iaXQKCShkdWUgdG8gc3RhY2sgYWRkcmVzcyBzaXplIHByb2JsZW1zKS4KCgkqIHdpbjMyL29yZGluYWxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBDb21tb25VbmltcFN0dWIsIE1hcEhJbnN0KExTfFNMKV9QTiwgVzMyU19CYWNrVG8zMi4KCVN0dWIgZm9yIEhvdXNlQ2xlYW5Mb2dpY2FsbHlEZWFkSGFuZGxlcywgZml4ZWQgazMyd3ZzcHJpbnRmQS4KCgkqIHRvb2xzL2J1aWxkLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCAocGFydGlhbGx5KSB0aGUgS0VSTkVMIFRodW5rbGV0IEFQSSBhbmQgQ2FsbGJhY2sgQ2xpZW50CglBUEkgKEtFUk5FTC41NjAtNTY4LDYwNC02MTIsNjE5LTYyMikuCglBZGRlZCBzdHVicyBmb3IgSzIyOCwgSzIzNywgS0VSTkVMLjM2NSwgS0VSTkVMLjQ0Ny4KCgkqIG9iamVjdHMvYml0bWFwLmMsIGlmMTYzMi9nZGkuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIENyZWF0ZVVzZXIoRGlzY2FyZGFibGUpQml0bWFwMTYuCgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEhFQVBfV0lORV9DT0RFMTZTRUcgU0VHUFRSIGhlYXBzIHdpdGggMTYtYml0IGNvZGUgc2VnbWVudHMuCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHbG9iYWxGaXgxNiBpcyBzdXBwb3NlZCB0byByZXR1cm4gc2VsZWN0b3IgdG8gdGhlIG1lbW9yeSBhcmVhLgoKCSogbXNkb3MvdnhkLmMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL2NvbW0uc3BlYywgaWYxNjMyL3dwcm9jcy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgQ09NTS5EUlYsIFJFQk9PVC5WWEQsIFZERC5WWEQuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3N5c2xldmVsLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBlbWVyZ2VuY3kgVEVCIHNlbGVjdG9yIHRvIGF2b2lkIGRlYnVnZ2VyIGNyYXNoZXMgd2hlbiBzdGVwcGluZwoJdGhyb3VnaCByZWxheSBzdHVicyAob3Igd2hlbiBGUyBpcyBpbnZhbGlkIG90aGVyd2lzZSkuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTU9VU0UuRFJWIHJvdXRpbmVzIG1vdmVkIHRvIGV2ZW50LmMuIENhbGwgbW91c2UgZXZlbnQgcHJvY2VkdXJlLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvZ2RpLnNwZWMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy9wYXRoLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoYW5nZWQgREMgbWVtYmVycyB3LmhWaXNSZ24sIHcuaENsaXBSZ24sIGFtZCB3LmhHQ0NsaXBSZ24gdG8KCWNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBkZXZpY2UsIG5vdCB0aGUgREMgb3JpZ2luLiBUaGlzIGlzCgluZWNlc3NhcnkgdG8gY29ycmVjdGx5IGltcGxlbWVudCBHZXRDbGlwUmduMTYgYW5kIElucXVpcmVWaXNSZ24uCglTZWxlY3RWaXNSZ24gYWxzbyBleHBlY3RzIHJlZ2lvbiBpbiBkZXZpY2UtcmVsYXRpdmUgY29vcmRpbmF0ZXMuCglBZGFwdGVkIHRoZSByZXN0IG9mIFdpbmUgdG8gdGhpcyBjb29yZGluYXRlIGNoYW5nZS4KCUltcGxlbWVudGVkIEV4dFNlbGVjdENsaXBSZ24uCgoJKiB0b29scy93aW5hcGktY2hlY2ssIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBmaWxlcy9kb3NfZnMuYzoKCUFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJU21hbGwgZml4LgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpZjE2MzIva2VybmVsLnNwZWM6CglBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCVlldCBhbm90aGVyIHNtYWxsIHNlbGYtbG9hZGVyIGZpeC4KCgkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJRml4ZWQgc2V2ZXJlIGJ1ZzogU2V0Q3VycmVudERpcmVjdG9yeTMyQSBkaWRuJ3Qgc2V0IHBUYXNrLT5jdXJkaXIKCWNvcnJlY3RseSBkdWUgdG8gY3VycmVudCBkcml2ZSBiZWluZyBzZXQgdG9vIGxhdGUuCgoJKiBNYWtlLnJ1bGVzLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVzZSAkKEFTKSBpbnN0ZWFkIG9mICQoQ0MpIHRvIGNvbXBpbGUgLnMgZmlsZXMuCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9tbXJlZy5oLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBkbGxzL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1TQUNNLkRMTCwgTVNBQ00zMi5ETEwgYW5kIElNQUdFSExQLkRMTC4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaCwgcmVsYXkzMi9pbWFnZWhscC5zcGVjLCBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvaW50ZXJuYWwuYywgZGxscy9pbWFnZWhscC9tb2RpZnkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgSU1BR0VITFAuRExMLgoKCSogaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zYWNtZHJ2LmgsIHJlbGF5MzIvbXNhY20zMi5zcGVjLCBpZjE2MzIvbXNhY20uc3BlYywgZGxscy9tc2FjbTMyLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20zMi9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbTMyL2J1aWx0aW4uYywgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvZmlsdGVyLmMsIGRsbHMvbXNhY20zMi9mb3JtYXQuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNU0FDTS5ETEwgYW5kIE1TQUNNMzIuRExMLgoKCSogd2luMzIvZGV2aWNlLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCB0aGluZ3MgdGhhdCB3ZXJlIGVhcmxpZXIgYWRkZWQgYnkgbWlzdGFrZS4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglUaGUgaW1wbGVtZW50YXRpb24gb2YgbW1pb1dyaXRlIGlzIG5vdyBjYWxsZWQgaW5zdGVhZCBvZiB0aGUgc3R1Yi4KCgkqIGluY2x1ZGUvc2hlbGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeGVzLCBzaGVsbHZpZXcgdXNlcyBEUEEncyBub3csIElTaGVsbFZpZXdfR2V0SXRlbU9iamVjdCBpbXBsZW1lbnRlZC4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViczogU0hHZXRGaWxlSW5mbzMyVywgUmVhZENhYmluZXRTdGF0ZSwgV3JpdGVDYWJpbmV0U3RhdGUsIElzVXNlckFkbWluLgoJSW1wbGVtZW50ZWQ6IFNIR2V0UGF0aEZyb21JRExpc3QzMlcuCglDaGFuZ2VkIFBhdGhDb21iaW5lLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3RydWN0dXJlcyBEVkFTUEVDVCwgVFlNRUQsIElETExpc3QuCglTaGVsbCBzcGVjaWZpYyBjbGlwYm9hcmQgZm9ybWF0cy4KCgkqIHJlbGF5MzIvd2luc3Bvb2wuc3BlYywgbWlzYy9wcmludGRydi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIEVudW1QcmludGVyc1cuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBmaXJzdCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgY2xhc3MgSURMTGlzdCAiSXRlbSBJRCBMaXN0IExpc3QiIChpbnRlcm5hbCkuCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGNoYW5nZXMgKHVzZXMgSElXT1JEL0xPV09SRCkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJU2F0IE9jdCAxMCAxMjowMDowMCAxOTk4ICBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgQ3JlYXRlRGlhbG9nSW5kaXJlY3RQYXJhbUFvclcuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQ+CglEb24ndCBpbnN0YWxsIG9iamVjdCBmaWxlcyB3aGVuIC0tZGlzYWJsZS1saWIgaXMgc2VsZWN0ZWQuCgoJKiBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0PgoJRG9uJ3QgcHJpbnQgbmFtZSBmb3IgMzIgYml0IGxpYiBtdWx0aXBsZSB0aW1lcy4KCUNsZWFuIHVwIHByaW50aW5nIGluIERFQlVHX1Byb2Nlc3NEZWZlcnJlZERlYnVnLgoKCSogbWVtb3J5L2hlYXAuYywgZGxscy9jb21jdGwzMi90YWIuYywgY29udHJvbHMvY29tYm8uYzoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCVNtYWxsIGZpeGVzLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJQnVnZml4OiBDaGFuZ2VkIEdldERyaXZlVHlwZTMyQShOVUxMKSB0byB1c2UgY3dkJ3Mgcm9vdC4KCgkqIG9sZS90eXBlbGliLmMsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVjbGkuYywgb2xlL29sZXN2ci5jLCBvbGUvc3RvcmFnZS5jLCBtaXNjL250ZGxsLmMsIG1pc2MvcmVnaXN0cnkuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIGNvcnJlY3Rpb25zL3N0YW5kYXJkaXphdGlvbnMuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCUVyaWMgUG91ZWNoICA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglTdGFydGVkIGNvZGluZyAzMiBiaXQgTUNJIGhhbmRsaW5nLgoJQWRkZWQgT3Blbi9DbG9zZSB0byBsb3ctbGV2ZWwgTUNJIGRyaXZlcnMgKGF1ZGlvLCBtaWRpLCBhbmltLCBjZGEpLgoJV3JvdGUgTUNJIE1JREkgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJWWV0IGFub3RoZXIgaW1wcm92ZW1lbnQgdG8gdGhlIGJlemllciBjb2RlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglHZXRUaWNrQ291bnRzKCkgaGFzIGEgZ3JhbnVsYXJpdHkgaW4gd2luZG93cyBvZiAyNSBtc2VjJ3MuCglHaXJvdGVsJ3Mgc2VyaWFsIGNvbW11bmljYXRpb24gYXBwZWFycyB0byBkZXBlbmQgb24gaXQsIHNvIEkgZ3Vlc3MKCWl0J3MgYSBmZWF0dXJlLi4uCgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVVwZGF0ZSB0aGUgbW9kZW1uIHN0YXR1cyBiaXQgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgUkxTRCBsaW5lIGlzCglhY3RpdmUgaW4gZXZlcnkgY2FsbCB0byBHZXRDb21tRXJyb3IoKS4gVGhpcyBpcyBub3QgdGhlIHByb3BlciBwbGFjZSwKCWJ1dCBzaW5jZSB3aW5lIGRvZXNuJ3QgZG8gYW55IGV2ZW50LXN0dWZmLi4uCglGaXhlZCBzb21lIFRSQUNFIGNhbGwncyBmYWNlZCB3aXRoIG5vbiB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5ncy4KCVJlc3RvcmUgdGhlIHRlcm1pbmFsIHN0YXRlIGF0IENsb3NlQ29tbXQgdG8gdGhlIHN0YXRlIGl0IHdhcyBhdAoJT3BlbkNvbW0oKSwgc28gdGhlIG1vZGVtIHdpbGwgZ28gb2ZmLWhvb2suCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEFsZXhhbmRlciBMYXJzc29uICA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCUdldE1vZHVsZUZpbGVOYW1lMzJBKCkgcmV0dXJucyBsb25nIGZpbGVuYW1lIGlmIGFwcCBzZXRzIG9zdmVyc2lvbiA+PQoJNC4wLiBBbHNvIG1vdmVkIHRoZSBsb25nIGZpbGVuYW1lIGhhY2tlcnkgdG8gR2V0TG9uZ1BhdGhOYW1lMzJBKCkgc28KCWl0IGNhbiBiZSB1c2VkIGJ5IHdpbjMyIHByb2dyYW1zLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJR2V0TG9uZ1BhdGhOYW1lMzJBKCkgcmV0dXJucyBkb3MgZm9ybWF0IGxvbmcgZmlsZW5hbWUgaW5zdGVhZCBvZiB1bml4Cglmb3JtYXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTbWFsbCBmaXhlcy4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBTSEZsdXNoQ2xpcGJvYXJkLgoKCSogcmVsYXkzMi9jb21jdGwzMi5zcGVjLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucy4KCUNoYW5nZWQgYWxnb3JpdGhtIGluIERQQV9RdWlja1NvcnQoKS4KCUZpeGVkIGhlYXAgY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYW5kIGNvbnRyb2wgW3VuXXJlZ2lzdHJhdGlvbiBpbgoJQ29tQ3RsMzJMaWJNYWluKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYSBidWcuCgoJKiBpbmNsdWRlL3Rvb2x0aXBzLmgsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCB0cmFja2luZyBzdXBwb3J0IGFuZCBmaXhlZCBsb2FkaW5nIG9mIHJlc291cmNlIHN0cmluZ3MuCglBZGRlZCB1bnJlZ2lzdGVyIGNvZGUuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvaXBhZGRyZXNzLmgsIGluY2x1ZGUvbmF0aXZlZm9udC5oLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIElQQWRkcmVzcyBhbmQgTmF0aXZlRm9udCBjb250cm9scy4KCgkqIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU29tZSBtaW5vciBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL3Rvb2xiYXIuaCwgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZHJhd2luZyBhbmQgcGxhY2VtZW50IGNvZGUuIEV4cGxvcmVyIHN0eWxlIGNvbW1vbiBkaWFsb2dzIGFyZQoJbG9va2luZyBnb29kIG5vdy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYnVnIGluIERyYXdJY29uRXgzMigpLgoKCSogbWlzYy9tYWluLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBHZXRTeXN0ZW1JbmZvcm1hdGlvbjMyW0EvV10uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgaWYxNjMyL3VzZXIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBEcmF3Q2FwdGlvblsxNi8zMl0gYW5kIERyYXdDYXB0aW9uVGVtcFsxNi8zMkEvMzJXXS4KCUZpeGVkIGhhbmRsaW5nIG9mIFdTX0VYX1RPT0xXSU5ET1cuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVVwZGF0ZWQuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgaW5jbHVkZS9rZXlib2FyZC5oOgoJRGF2aWQgRmF1cmUgPGZhdXJlQGtkZS5vcmc+CglBZGRlZCBLRVlCT0FSRF9VcGRhdGVTdGF0ZSwgdG8gcmVhZCB0aGUgbW9kaWZpZXJzIHdoZW4gdGhlIHdpbmUgYXBwIGlzCglhY3RpdmF0ZWQuIFVzZXMgdGhlIG5ldyBLRVlCT0FSRF9VcGRhdGVPbmVTdGF0ZS4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIG1lbnUgYWNjZWxlcmF0b3JzIChBbHQtbGV0dGVyIGdlbmVyYXRlcyBhIGRvd24KCWFycm93IGV2ZW50IHdoaWNoIGJlZXBzIGlmIG5vdCBmaWx0ZXJlZCkuCglTcGVlZGVkIHVwIFRvQXNjaWkxNi8zMigpIGEgbGl0dGxlIGJpdC4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvdHlwZXMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBXaW5lJ3MgZGVidWdnZXIgd29yayBzYXRpc2ZhY3RvcmlseSB3aXRoIERPUyBhcHBzLgoJUGVyaGFwcyBkZXJlZmVyZW5jaW5nIHdvcmsgYmV0dGVyIGZvciBXaW4xNiBhcHBzIHRvbyBub3csIGJ1dAoJaXQgYXBwZWFycyB0aGUgZGVidWdnZXIgY29yZSB3YXNuJ3QgZGVzaWduZWQgZm9yIHNlZ21lbnRhdGlvbi4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW11bGF0ZXMgRFBNSSBtZW1vcnkgbWFwIGJ5IGNvbnZlcnRpbmcgbG93ZXItTUIgc2VnbWVudCBiYXNlCglhZGRyZXNzZXMgYXMgbmVjZXNzYXJ5LiBJbXBsZW1lbnRlZCBhbGxvY2F0aW5nL2ZyZWVpbmcgRE9TIG1lbW9yeQoJYmxvY2tzLiBBZGRlZCBYTVMgaG9vay4gKERQTUkgcmVtYWlucyBkaXNhYmxlZCBieSBkZWZhdWx0IHVudGlsCglzb21lb25lIGltcGxlbWVudHMgdGhlIHJhdyBtb2RlIHN3aXRjaCBlbnRyeSBwb2ludHMgcGt1bnppcCBuZWVkcy4pCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUkgdGhpbmsgaXQncyB0aW1lIHRvIHJldGhpbmsgdGhlIEhGSUxFMTZfVE9fSEZJTEUzMiBzdHJhdGVneSwKCWNhbid0IGtlZXAgd29ya2luZyBhcm91bmQgZmxhd3MgaW4gaXQgbGlrZSB0aGlzIChub3cgc3RkaW8KCXdhcyBnZXR0aW5nIGNsb3NlZCB3aGVuIHByb2dyYW1zIGNsb3NlIGhhbmRsZXMgPj01KQoKCSogbXNkb3MveG1zLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBiYXNpYyBYTVMgZnVuY3Rpb25zLiB3Y2IuZXhlIChXaW4xNiBkaXNhc3NlbWJsZXIpIG5vdwoJc2VlbXMgdG8gd29yayBmaW5lIHVuZGVyIFdpbmUuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBzb21lIHN5c3RlbSBkZXBlbmRlbmNpZXMgdG8gbG9hZGVyL2Rvcy9kb3N2bS5jLiBJbXBsZW1lbnRlZAoJZW52aXJvbm1lbnRhbCBhcmd2WzBdIHBhc3NpbmcgdG8gRE9TIGFwcHMuIEFkZGVkIFhNUyBob29rcy4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBtZW1zZXQoKSB0byBwcmV2ZW50IGEgZGVidWdnZXIgc2VnZmF1bHQgY2F1c2VkIGJ5Cgl1bmluaXRpYWxpemVkIHBvaW50ZXJzIGluIHRoZSBzdGFicyBsb29rdXAgdGFibGVzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBIGZldyBmaXhlcy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBSdGxBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQgZW50cnkuCgoJKiBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZW5lcmljIGR5bmFtaWMgZGxsIGxvYWRlciB1c2luZyBkbCooKSBBUEkuCglJbmNsdWRlczogc3RkY2FsbC0+Y2RlY2wgbWFwcGluZyBhYmlsaXR5LCBzbm9vcGluZy4KCShUZXN0ZWQgb25seSB3aXRoIGdsaWRlMnguZGxsIC0+IGxpYmdsaWRlMnguc28pCgoJKiBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS90aW1lLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHdpbjMyIGVuaGFuY2VkIGZ1bmN0aW9uYWxpdHkgdG8gdGltZXIgY2FsbGJhY2tzLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGJhZCBoYWNrcyBzbyBXcml0ZUNvbnNvbGVPdXRwdXQgd29ya3Mgb24gdnQxMDAgYW5kIFBlZWtNZXNzYWdlCglkb2VzIGF0IGxlYXN0IGEgYml0IG9mIGtleWJvYXJkIGlucHV0LgoKCSogcmVsYXkzMi9zbm9vcC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNob3VsZCBkaXNwbGF5IGFnYWluLgoKU2F0IE9jdCAxMCAxNTo1Mjo0NiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglJbXBsZW1lbnRlZCBEU19DRU5URVIgZGlhbG9nIHN0eWxlLgoKCSogbWlzYy9tYWluLmM6IFBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgZnVuY3Rpb24gdG8gYnVpbGQgdGhlIFdpbmRvd3MgbnVtZXJpYyBsYW5ndWFnZSBJRCBmcm9tIGxhbmd1YWdlLAoJY29kZSwgY2hhcnNldCBhbmQgZGlhbGVjdCBzdHJpbmdzLCBsaWtlIHVzZWQgYnkgVW5peCBMQU5HIHZhcmlhYmxlLgoKCSogb2xlL29sZTJubHMuYywgb2xlL25scy9SRUFETUUsIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9ubHMvKi5ubHM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCU1vcmUgTkxTIGRhdGEuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBQZXRlciBTY2hsYWlsZSA8dWRiekByei51bmkta2FybHNydWhlLmRlPgoJRml4ZWQgYSBsb3Qgb2YgYnVncyBpbiBkZHJhdy5jIHRvIG1ha2UgeGxpYiBzdXBwb3J0IHdvcmsuCglSdW5zIHN1Y2Nlc3NmdWxseSBUUjJEZW1vIGFuZCBKYXp6IEphY2tyYWJiaXQgSUkgRGVtbyEKCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IENsaWZmIFdyaWdodCA8Y2xpZmZAc25pcGU0NDQub3JnPgoJQWRkZWQgREMgb2JqZWN0IHR5cGUgdG8gdGhlIGxpc3Qgb2YgdmFsaWQgb2JqZWN0cyB0aGF0IGNhbiBiZSBkZWxldGVkCglieSBEZWxldGVPYmplY3QzMi4KClN1biBPY3QgIDQgMTg6MjA6MjkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZzoKCVN0YXJ0aW5nIG5ldyBmb3JtYXQgY2hhbmdlbG9nIChvbGRlciBjaGFuZ2VzIG1vdmVkIHRvCglkb2N1bWVudGF0aW9uL0NoYW5nZUxvZy5PTEQpLgo=