DQo9IFZlcnNpb24gMC45IHJlbGVhc2VkIG9uIDIwMDgtMDMtMTYNCg0KICAgICogQWRkZWQgc3VwcG9ydCBmb3IgY2lwaGVyc3VpdGU6IFNTTF9SU0FfQUVTXzEyOF9TSEENCiAgICAqIEVuYWJsZWQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMgYnkgZGVmYXVsdCBpbiBhZXNjcnlwdDIuYw0KICAgICogUHJlbGltaW5hcnkgb3BlbnNzbCB3cmFwcGVyIGNvbnRyaWJ1dGVkIGJ5IERhdmlkIEJhcnJldHQNCiAgICAqIEZpeGVkIGEgYnVnIGluIHNzbF93cml0ZSgpIHRoYXQgY2F1c2VkIHRoZSBzYW1lIHBheWxvYWQgdG8NCiAgICAgIGJlIHNlbnQgdHdpY2UgaW4gbm9uLWJsb2NraW5nIG1vZGUgd2hlbiBzZW5kIHJldHVybnMgRUFHQUlODQogICAgKiBGaXhlZCBzc2xfcGFyc2VfY2xpZW50X2hlbGxvKCk6IHNlc3Npb24gaWQgYW5kIGNoYWxsZW5nZSBtdXN0DQogICAgICBub3QgYmUgc3dhcHBlZCBpbiB0aGUgU1NMdjIgQ2xpZW50SGVsbG8gKGZvdW5kIGJ5IEdyZWcgUm9ic29uKQ0KICAgICogQWRkZWQgdXNlci1kZWZpbmVkIGNhbGxiYWNrIGRlYnVnIGZ1bmN0aW9uIChLcnlzdGlhbiBLb2xvZHppZWopDQogICAgKiBCZWZvcmUgZnJlZWluZyBhIGNlcnRpZmljYXRlLCBwcm9wZXJseSB6ZXJvIG91dCBhbGwgY2VydC4gZGF0YQ0KICAgICogRml4ZWQgdGhlICJtb2RlIiBwYXJhbWV0ZXIgc28gdGhhdCBlbmNyeXB0aW9uL2RlY3J5cHRpb24gYXJlDQogICAgICBub3Qgc3dhcHBlZCBvbiBQYWRMb2NrOyBhbHNvIGZpeGVkIGNvbXBpbGF0aW9uIG9uIG9sZGVyIHZlcnNpb25zDQogICAgICBvZiBnY2MgKGJ1ZyByZXBvcnRlZCBieSBEYXZpZCBCYXJyZXR0KQ0KICAgICogQ29ycmVjdGx5IGhhbmRsZSB0aGUgY2FzZSBpbiBwYWRsb2NrX3hjcnlwdGNiYygpIHdoZW4gaW5wdXQgb3INCiAgICAgIG91cHV0IGRhdGEgaXMgbm9uLWFsaWduZWQgYnkgZmFsbGluZyBiYWNrIHRvIHRoZSBzb2Z0d2FyZQ0KICAgICAgaW1wbGVtZW50YXRpb24sIGFzIFZJQSBOZWhlbWlhaCBjYW5ub3QgaGFuZGxlIG5vbi1hbGlnbmVkIGJ1ZmZlcnMNCiAgICAqIEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4geDUwOXBhcnNlX2NydCgpIHdoaWNoIHdhcyByZXBvcnRlZCBieSBHcmVnDQogICAgICBSb2Jzb24tR2FydGg7IHNvbWUgeDUwOXdyaXRlLmMgZml4ZXMgYnkgUGFzY2FsIFZpemVsaSwgdGhhbmtzIHRvDQogICAgICBNYXR0aGV3IFBhZ2Ugd2hvIHJlcG9ydGVkIHNldmVyYWwgYnVncw0KICAgICogRml4ZWQgeDUwOV9nZXRfZXh0KCkgdG8gYWNjZXB0IHNvbWUgcmFyZSBjZXJ0aWZpY2F0ZXMgd2hpY2ggaGF2ZQ0KICAgICAgYW4gSU5URUdFUiBpbnN0ZWFkIG9mIGEgQk9PTEVBTiBmb3IgQmFzaWNDb25zdHJhaW50czo6Y0EuDQogICAgKiBBZGRlZCBzdXBwb3J0IG9uIHRoZSBjbGllbnQgc2lkZSBmb3IgdGhlIFRMUyAiaG9zdG5hbWUiIGV4dGVuc2lvbg0KICAgICAgKHBhdGNoIGNvbnRyaWJ1dGVkIGJ5IERhdmlkIFBhdGlubykNCiAgICAqIE1ha2UgeDUwOXBhcnNlX3ZlcmlmeSgpIHJldHVybiBCQURDRVJUX0NOX01JU01BVENIIHdoZW4gYW4gZW1wdHkNCiAgICAgIHN0cmluZyBpcyBwYXNzZWQgYXMgdGhlIENOIChidWcgcmVwb3J0ZWQgYnkgc3Bvb2Z5KQ0KICAgICogQWRkZWQgYW4gb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBCTiBhc3NlbWJseSBjb2RlDQogICAgKiBVcGRhdGVkIHJzYV9jaGVja19wcml2a2V5KCkgdG8gdmVyaWZ5IHRoYXQgKEQqRSkgPSAxICUgKFAtMSkqKFEtMSkNCiAgICAqIERpc2FibGVkIG9ic29sZXRlIGhhc2ggZnVuY3Rpb25zIGJ5IGRlZmF1bHQgKE1EMiwgTUQ0KTsgdXBkYXRlZA0KICAgICAgc2VsZnRlc3QgYW5kIGJlbmNobWFyayB0byBub3QgdGVzdCBjaXBoZXJzIHRoYXQgaGF2ZSBiZWVuIGRpc2FibGVkDQogICAgKiBVcGRhdGVkIHg1MDlwYXJzZV9jZXJ0X2luZm8oKSB0byBjb3JyZWN0bHkgZGlzcGxheSBieXRlIDAgb2YgdGhlDQogICAgICBzZXJpYWwgbnVtYmVyLCBzZXR1cCBjb3JyZWN0IHNlcnZlciBwb3J0IGluIHRoZSBzc2wgY2xpZW50IGV4YW1wbGUNCiAgICAqIEZpeGVkIGEgY3JpdGljYWwgZGVuaWFsLW9mLXNlcnZpY2Ugd2l0aCBYLjUwOSBjZXJ0LiB2ZXJpZmljYXRpb246DQogICAgICBwZWVyIG1heSBjYXVzZSB4eXNzbCB0byBsb29wIGluZGVmaW5pdGVseSBieSBzZW5kaW5nIGEgY2VydGlmaWNhdGUNCiAgICAgIGZvciB3aGljaCB0aGUgUlNBIHNpZ25hdHVyZSBjaGVjayBmYWlscyAoYnVnIHJlcG9ydGVkIGJ5IEJlbm9pdCkNCiAgICAqIEFkZGVkIHRlc3QgdmVjdG9ycyBmb3I6IEFFUy1DQkMsIEFFUy1DRkIsIERFUy1DQkMgYW5kIDNERVMtQ0JDLA0KICAgICAgSE1BQy1NRDUsIEhNQUMtU0hBMSwgSE1BQy1TSEEtMjU2LCBITUFDLVNIQS0zODQsIGFuZCBITUFDLVNIQS01MTINCiAgICAqIEZpeGVkIEhNQUMtU0hBLTM4NCBhbmQgSE1BQy1TSEEtNTEyICh0aGFua3MgdG8gSm9zaCBTaW55a2luKQ0KICAgICogTW9kaWZpZWQgc3NsX3BhcnNlX2NsaWVudF9rZXlfZXhjaGFuZ2UoKSB0byBwcm90ZWN0IGFnYWluc3QNCiAgICAgIERhbmllbCBCbGVpY2hlbmJhY2hlciBhdHRhY2sgb24gUEtDUyMxIHYxLjUgcGFkZGluZywgYXMgd2VsbA0KICAgICAgYXMgdGhlIEtsaW1hLVBva29ybnktUm9zYSBleHRlbnNpb24gb2YgQmxlaWNoZW5iYWNoZXIncyBhdHRhY2sNCiAgICAqIFVwZGF0ZWQgcnNhX2dlbl9rZXkoKSBzbyB0aGF0IGN0eC0+TiBpcyBhbHdheXMgbmJpdHMgaW4gc2l6ZQ0KICAgICogRml4ZWQgYXNzZW1ibHkgUFBDIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBNYWMgT1MgWCwgdGhhbmtzIHRvDQogICAgICBEYXZpZCBCYXJyZXR0IGFuZCBEdXNhbiBTZW1lbg0KDQo9IFZlcnNpb24gMC44IHJlbGVhc2VkIG9uIDIwMDctMTAtMjANCg0KICAgICogTW9kaWZpZWQgdGhlIEhNQUMgZnVuY3Rpb25zIHRvIGhhbmRsZSBrZXlzIGxhcmdlcg0KICAgICAgdGhhbiA2NCBieXRlcywgdGhhbmtzIHRvIFN0ZXBoYW5lIERlc25ldXggYW5kIGdhcnkgbmcNCiAgICAqIEZpeGVkIHNzbF9yZWFkX3JlY29yZCgpIHRvIHByb3Blcmx5IHVwZGF0ZSB0aGUgaGFuZHNoYWtlDQogICAgICBtZXNzYWdlIGRpZ2VzdHMsIHdoaWNoIGZpeGVzIElFNi9JRTcgY2xpZW50IGF1dGhlbnRpY2F0aW9uDQogICAgKiBDbGVhbmVkIHVwIHRoZSBYWVNTTCogI2RlZmluZXMsIHN1Z2dlc3RlZCBieSBBenJpZWwgRmFzdGVuDQogICAgKiBGaXhlZCBuZXRfcmVjdigpLCB0aGFua3MgdG8gTG9yZW56IFNjaG9yaSBhbmQgRWdvbiBLb2NqYW4NCiAgICAqIEFkZGVkIHVzZXItZGVmaW5lZCBjYWxsYmFja3MgZm9yIGhhbmRsaW5nIEkvTyBhbmQgc2Vzc2lvbnMNCiAgICAqIEFkZGVkIGxvdHMgb2YgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgU1NML1RMUyBmdW5jdGlvbnMNCiAgICAqIEFkZGVkIHByZWxpbWluYXJ5IFguNTA5IGNlcnQuIHdyaXRpbmcgYnkgUGFzY2FsIFZpemVsaQ0KICAgICogQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgdGhlIFZJQSBQYWRMb2NrIHJvdXRpbmVzDQogICAgKiBBZGRlZCBBRVMtQ0ZCIG1vZGUgb2Ygb3BlcmF0aW9uLCBjb250cmlidXRlZCBieSBjaG1pa2UNCiAgICAqIEFkZGVkIGFuIFNTTC9UTFMgc3RyZXNzIHRlc3RpbmcgcHJvZ3JhbSAoc3NsX3Rlc3QuYykNCiAgICAqIFVwZGF0ZWQgdGhlIFJTQSBQS0NTIzEgY29kZSB0byBhbGxvdyBjaG9vc2luZyBiZXR3ZWVuDQogICAgICBSU0FfUFVCTElDIGFuZCBSU0FfUFJJVkFURSwgYXMgc3VnZ2VzdGVkIGJ5IERhdmlkIEJhcnJldHQNCiAgICAqIFVwZGF0ZWQgc3NsX3JlYWQoKSB0byBza2lwIDAtbGVuZ3RoIHJlY29yZHMgZnJvbSBPcGVuU1NMDQogICAgKiBGaXhlZCB0aGUgbWFrZSBpbnN0YWxsIHRhcmdldCB0byBjb21wbHkgd2l0aCAqQlNEIG1ha2UNCiAgICAqIEZpeGVkIGEgYnVnIGluIG1waV9yZWFkX2JpbmFyeSgpIG9uIDY0LWJpdCBwbGF0Zm9ybXMNCiAgICAqIG1waV9pc19wcmltZSgpIHNwZWVkdXBzLCB0aGFua3MgdG8gS2V2aW4gTWNMYXVnaGxpbg0KICAgICogRml4ZWQgYSBsb25nIHN0YW5kaW5nIG1lbW9yeSBsZWFrIGluIG1waV9pc19wcmltZSgpDQogICAgKiBSZXBsYWNlZCByZWFsbG9jIHdpdGggbWFsbG9jIGluIG1waV9ncm93KCksIGFuZCBzZXQNCiAgICAgIHRoZSBzaWduIG9mIHplcm8gYXMgcG9zaXRpdmUgaW4gbXBpX2luaXQoKSAocmVwb3J0ZWQNCiAgICAgIGJ5IEpvbmF0aGFuIE0uIE1jQ3VuZSkNCg0KPSBWZXJzaW9uIDAuNyByZWxlYXNlZCBvbiAyMDA3LTA3LTA3DQoNCiAgICAqIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBNaWNyb0JsYXplIHNvZnQtY29yZSBwcm9jZXNzb3INCiAgICAqIEZpeGVkIGEgYnVnIGluIHNzbF90bHMuYyB3aGljaCBzb21ldGltZXMgcHJldmVudGVkIFNTTA0KICAgICAgY29ubmVjdGlvbnMgZnJvbSBiZWluZyBlc3RhYmxpc2hlZCB3aXRoIG5vbi1ibG9ja2luZyBJL08NCiAgICAqIEZpeGVkIGEgY291cGxlIGJ1Z3MgaW4gdGhlIFZTNiBhbmQgVU5JWCBNYWtlZmlsZXMNCiAgICAqIEZpeGVkIHRoZSAiUElDIHJlZ2lzdGVyIGVieCBjbG9iYmVyZWQgaW4gYXNtIiBidWcNCiAgICAqIEFkZGVkIEhNQUMgc3RhcnRzL3VwZGF0ZS9maW5pc2ggc3VwcG9ydCBmdW5jdGlvbnMNCiAgICAqIEFkZGVkIHRoZSBTSEEtMjI0LCBTSEEtMzg0IGFuZCBTSEEtNTEyIGhhc2ggZnVuY3Rpb25zDQogICAgKiBGaXhlZCB0aGUgbmV0X3NldF8qYmxvY2sgcm91dGluZXMsIHRoYW5rcyB0byBBbmRyZWFzDQogICAgKiBBZGRlZCBhIGZldyBkZW1vbnN0cmF0aW9uIHByb2dyYW1zOiBtZDVzdW0sIHNoYTFzdW0sDQogICAgICBkaF9jbGllbnQsIGRoX3NlcnZlciwgcnNhX2dlbmtleSwgcnNhX3NpZ24sIHJzYV92ZXJpZnkNCiAgICAqIEFkZGVkIG5ldyBiaWdudW0gaW1wb3J0IGFuZCBleHBvcnQgaGVscGVyIGZ1bmN0aW9ucw0KICAgICogUmV3cm90ZSBSRUFETUUudHh0IGluIHByb2dyYW0vc3NsL2NhIHRvIGJldHRlciBleHBsYWluDQogICAgICBob3cgdG8gY3JlYXRlIGEgdGVzdCBQS0kNCg0KPSBWZXJzaW9uIDAuNiByZWxlYXNlZCBvbiAyMDA3LTA0LTAxDQoNCiAgICAqIENpcGhlcnMgdXNlZCBpbiBTU0wvVExTIGNhbiBub3cgYmUgZGlzYWJsZWQgYXQgY29tcGlsZQ0KICAgICAgdGltZSwgdG8gcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHByaW50IG9uIGVtYmVkZGVkIHN5c3RlbXMNCiAgICAqIEFkZGVkIG11bHRpcGx5IGFzc2VtYmx5IGNvZGUgZm9yIHRoZSBUcmlDb3JlIGFuZCBtb2RpZmllZA0KICAgICAgaGF2ZWdlX3N0cnVjdCBmb3IgdGhpcyBwcm9jZXNzb3IsIHRoYW5rcyB0byBEYXZpZCBQYXRp8W8NCiAgICAqIEFkZGVkIG11bHRpcGx5IGFzc2VtYmx5IGNvZGUgZm9yIDY0LWJpdCBQb3dlclBDcywNCiAgICAgIHRoYW5rcyB0byBQZWtpbmcgVW5pdmVyc2l0eSBhbmQgdGhlIE9TVSBPcGVuIFNvdXJjZSBMYWINCiAgICAqIEFkZGVkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IG9mIFF1YW50dW0gQ3J5cHRvZ3JhcGh5DQogICAgKiBBZGRlZCBzdXBwb3J0IGZvciBhdXRvY29uZiwgY29udHJpYnV0ZWQgYnkgQXJuYXVkIENvcm5ldA0KICAgICogRml4ZWQgImxvbmcgbG9uZyIgY29tcGlsYXRpb24gaXNzdWVzIG9uIElBLTY0IGFuZCBQUEM2NA0KICAgICogRml4ZWQgYSBidWcgaW50cm9kdWNlZCBpbiB4eXNzbC0wLjUvdGltaW5nLmM6IGhhcmRjbG9jaw0KICAgICAgd2FzIG5vdCBiZWluZyBjb3JyZWN0bHkgZGVmaW5lZCBvbiBBUk0gYW5kIE1JUFMNCg0KPSBWZXJzaW9uIDAuNSByZWxlYXNlZCBvbiAyMDA3LTAzLTAxDQoNCiAgICAqIEFkZGVkIG11bHRpcGx5IGFzc2VtYmx5IGNvZGUgZm9yIFNQQVJDIGFuZCBBbHBoYQ0KICAgICogQWRkZWQgKGJldGEpIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyBJL08gb3BlcmF0aW9ucw0KICAgICogSW1wbGVtZW50ZWQgc2Vzc2lvbiByZXN1bWluZyBhbmQgY2xpZW50IGF1dGhlbnRpY2F0aW9uDQogICAgKiBGaXhlZCBzb21lIHBvcnRhYmlsaXR5IGlzc3VlcyBvbiBXaW5DRSwgTUlOSVggMywgUGxhbjkNCiAgICAgICh0aGFua3MgdG8gQmVuamFtaW4gTmV3bWFuKSwgSFAtVVgsIEZyZWVCU0QgYW5kIFNvbGFyaXMNCiAgICAqIEltcHJvdmVkIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgRURIIGtleSBleGNoYW5nZQ0KICAgICogRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdmFsaWQgcGFja2V0cyB3aXRoIGEgcGF5bG9hZA0KICAgICAgc2l6ZSBvZiAxNjM4NCBieXRlcyB0byBiZSByZWplY3RlZA0KDQo9IFZlcnNpb24gMC40IHJlbGVhc2VkIG9uIDIwMDctMDItMDENCg0KICAgICogQWRkZWQgc3VwcG9ydCBmb3IgRXBoZW1lcmFsIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZQ0KICAgICogQWRkZWQgbXVsdGlwbHkgYXNtIGNvZGUgZm9yIFNTRTIsIEFSTSwgUFBDLCBNSVBTIGFuZCBNNjhLDQogICAgKiBWYXJpb3VzIGltcHJvdmVtZW50IHRvIHRoZSBtb2R1bGFyIGV4cG9uZW50aWF0aW9uIGNvZGUNCiAgICAqIFJld3JvdGUgdGhlIGhlYWRlcnMgdG8gZ2VuZXJhdGUgdGhlIEFQSSBkb2NzIHdpdGggZG94eWdlbg0KICAgICogRml4ZWQgYSBidWcgaW4gc3NsX2VuY3J5cHRfYnVmIChpbmNvcnJlY3QgcGFkZGluZyB3YXMNCiAgICAgIGdlbmVyYXRlZCkgYW5kIGluIHNzbF9wYXJzZV9jbGllbnRfaGVsbG8gKG1heC4gY2xpZW50DQogICAgICB2ZXJzaW9uIHdhcyBub3QgcHJvcGVybHkgc2V0KSwgdGhhbmtzIHRvIERpZGllciBSZWJlaXgNCiAgICAqIEZpeGVkIGFub3RoZXIgYnVnIGluIHNzbF9wYXJzZV9jbGllbnRfaGVsbG86IGNsaWVudHMgd2l0aA0KICAgICAgY2lwaGVybGlzdHMgbGFyZ2VyIHRoYW4gOTYgYnl0ZXMgd2VyZSBpbmNvcnJlY3RseSByZWplY3RlZA0KICAgICogRml4ZWQgYSBjb3VwbGUgbWVtb3J5IGxlYWsgaW4geDUwOV9yZWFkLmMNCg0KPSBWZXJzaW9uIDAuMyByZWxlYXNlZCBvbiAyMDA3LTAxLTAxDQoNCiAgICAqIEFkZGVkIHNlcnZlci1zaWRlIFNTTHYzIGFuZCBUTFN2MS4wIHN1cHBvcnQNCiAgICAqIE11bHRpcGxlIGZpeGVzIHRvIGVuaGFuY2UgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBnKyssDQogICAgICB0aGFua3MgdG8gWG9z6SBBbnTzbiBPdGVybyBGZXJyZWlyYQ0KICAgICogRml4ZWQgYSBidWcgaW4gdGhlIENCQyBjb2RlLCB0aGFua3MgdG8gZG93c3Q7IGFsc28sDQogICAgICB0aGUgYmlnbnVtIGNvZGUgaXMgbm8gbG9uZ2VyIGRlcGVuZGFudCBvbiBsb25nIGxvbmcNCiAgICAqIFVwZGF0ZWQgcnNhX3BrY3MxX3NpZ24gdG8gaGFuZGxlIGFyYml0cmFyeSBsYXJnZSBpbnB1dHMNCiAgICAqIFVwZGF0ZWQgdGltaW5nLmMgZm9yIGltcHJvdmVkIGNvbXBhdGliaWxpdHkgd2l0aCBpMzg2DQogICAgICBhbmQgNDg2IHByb2Nlc3NvcnMsIHRoYW5rcyB0byBBcm5hdWQgQ29ybmV0DQoNCj0gVmVyc2lvbiAwLjIgcmVsZWFzZWQgb24gMjAwNi0xMi0wMQ0KDQogICAgKiBVcGRhdGVkIHRpbWluZy5jIHRvIHN1cHBvcnQgQVJNIGFuZCBNSVBTIGFyY2gNCiAgICAqIFVwZGF0ZWQgdGhlIE1QSSBjb2RlIHRvIHN1cHBvcnQgODA4NiBvbiBNU1ZDIDEuNQ0KICAgICogQWRkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYXQgdGhlIHRvcCBvZiBoYXZlZ2UuaA0KICAgICogRml4ZWQgYSBidWcgaW4gc2hhMl9obWFjLCB0aGFua3MgdG8gbmV3c29mdC9XZW5mYW5nIFpoYW5nDQogICAgKiBGaXhlZCBhIGJ1ZyByZXBvcnRlZCBieSBBZHJpYW4gUvxlZ3NlZ2dlciBpbiB4NTA5X3JlYWRfa2V5DQogICAgKiBGaXhlZCBhIGJ1ZyByZXBvcnRlZCBieSBUb3JzdGVuIExhdXRlciBpbiBzc2xfcmVhZF9yZWNvcmQNCiAgICAqIEZpeGVkIGEgYnVnIGluIHJzYV9jaGVja19wcml2a2V5IHRoYXQgd291bGQgd3JvbmdseSBjYXVzZQ0KICAgICAgdmFsaWQgUlNBIGtleXMgdG8gYmUgZGlzbWlzc2VkICh0aGFua3MgdG8gb2xkd29sZikNCiAgICAqIEZpeGVkIGEgYnVnIGluIG1waV9pc19wcmltZSB0aGF0IGNhdXNlZCBzb21lIHByaW1lcyB0byBmYWlsDQogICAgICB0aGUgTWlsbGVyLVJhYmluIHByaW1hbGl0eSB0ZXN0DQoNCiAgICBJJ2QgYWxzbyBsaWtlIHRvIHRoYW5rIFlvdW7ocyBIYWZyaSBmb3IgdGhlIENSVVggbGludXggcG9ydCwNCiAgICBLaGFsaWwgUGV0aXQgd2hvIGFkZGVkIFh5U1NMIGludG8gcGtnc3JjIGFuZCBBcm5hdWQgQ29ybmV0DQogICAgd2hvIG1haW50YWlucyB0aGUgRGViaWFuIHBhY2thZ2UgOi0pDQoNCj0gVmVyc2lvbiAwLjEgcmVsZWFzZWQgb24gMjAwNi0xMS0wMQ0KDQo=