From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id B92ED11A61F for ; Tue, 19 Jul 2022 21:37:23 +0000 (UTC) From: "Teres Alexis, Alan Previn" To: "igt-dev@lists.freedesktop.org" Date: Tue, 19 Jul 2022 21:35:03 +0000 Message-ID: <59b68d15bafe1eba9f97e74e20842cc538fd0336.camel@intel.com> References: <20220509212128.1844629-1-alan.previn.teres.alexis@intel.com> <20220509212128.1844629-2-alan.previn.teres.alexis@intel.com> In-Reply-To: <20220509212128.1844629-2-alan.previn.teres.alexis@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <978ED3D1FAC79446B3E285163FFF1822@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 1/2] tools/intel_guc_logger: Re-enable basic functionality List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: DQpPbiBNb24sIDIwMjItMDUtMDkgYXQgMTQ6MjEgLTA3MDAsIEFsYW4gUHJldmluIHdyb3RlOg0K PiBGaXggdGhlc2UgbXVsdGlwbGUgaXNzdWVzIHRvIGdldCBiYXNpYyBmdW5jdGlvbmFsaXR5IHVw DQo+IGFuZCBydW5uaW5nIG9uIEd1QyB1c2luZzoNCj4gMS4gU3RhcnQgdXNpbmcgdGhlIHVwZGF0 ZWQgZGVidWdmcyBwYXRoIGZvciBhbGwgR3VDIHJlbGF5LWxvZ2dpbmcNCj4gICAgZmlsZSBuYW1l cy4NCj4gMi4gVXNlIHRoZSB1cGRhdGVkIGRlYnVnZnMgbmFtZXMgZm9yIHRoZSByZWxheS1sb2dn aW5nIGNvbnRyb2wNCj4gICAgYW5kIGNoYW5uZWwgZmlsZXMgdG8gbWF0Y2gga2VybmVsIGNoYW5n ZXMuDQo+IDMuIFN0YXJ0IHF1ZXJyeWluZyB0aGUgcmVsYXkgc3ViLWJ1ZmZlciBpbmZvIChidWZm ZXIgc2l6ZSBhbmQNCj4gICAgbnVtYmVyIG9mIHN1Yi1idWZmZXJzKSBmcm9tIGtlcm5lbCdzIG5l dyBkZWJ1Z2ZzIGZpbGVzLg0KPiA0LiBTZXBhcmF0ZSB0aGUgY29udHJvbCBlbmFibGluZyBmcm9t IHRoZSBsb2ctbGV2ZWwtc2V0dGluZyBhbmQNCj4gICAga2VlcCB0aGUgY29udHJvbCBoYW5kbGUg b3BlbiB3aGlsZSBjb2xsZWN0aW5nIHRoZSBsb2dzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQWxh biBQcmV2aW4gPGFsYW4ucHJldmluLnRlcmVzLmFsZXhpc0BpbnRlbC5jb20+DQo+IC0tLQ0KPiAg dG9vbHMvaW50ZWxfZ3VjX2xvZ2dlci5jIHwgMTc5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCA1MCBk ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9ndWNfbG9nZ2VyLmMg Yi90b29scy9pbnRlbF9ndWNfbG9nZ2VyLmMNCj4gaW5kZXggNWYxZGU4ZGIuLjRhOTkxMTI3IDEw MDY0NA0KPiAtLS0gYS90b29scy9pbnRlbF9ndWNfbG9nZ2VyLmMNCj4gKysrIGIvdG9vbHMvaW50 ZWxfZ3VjX2xvZ2dlci5jDQo+IEBAIC00MiwyNCArNDIsMzAgQEANCj4gIA0KPiAgI2luY2x1ZGUg ImlndC5oIg0KPiAgDQo+ICsjZGVmaW5lIEtCKHgpICgodWludDY0X3QpKHgpICogMTAyNCkNCj4g ICNkZWZpbmUgTUIoeCkgKCh1aW50NjRfdCkoeCkgKiAxMDI0ICogMTAyNCkNCj4gICNpZm5kZWYg UEFHRV9TSVpFDQo+ICAgICNkZWZpbmUgUEFHRV9TSVpFIDQwOTYNCj4gICNlbmRpZg0KPiAtLyog Q3VycmVudGx5IHRoZSBzaXplIG9mIEd1QyBsb2cgYnVmZmVyIGlzIDE5IHBhZ2VzICYgc28gaXMg dGhlIHNpemUgb2YgcmVsYXkNCj4gLSAqIHN1YmJ1ZmZlci4gSWYgdGhlIHNpemUgY2hhbmdlcyBp biBmdXR1cmUsIHRoZW4gdGhpcyBkZWZpbmUgYWxzbyBuZWVkcyB0byBiZQ0KPiAtICogdXBkYXRl ZCBhY2NvcmRpbmdseS4NCj4gLSAqLw0KPiAtI2RlZmluZSBTVUJCVUZfU0laRSAoMTkqUEFHRV9T SVpFKQ0KPiAtLyogTmVlZCBsYXJnZSBidWZmZXJpbmcgZnJvbSBsb2dnZXIgc2lkZSB0byBoaWRl IHRoZSBESVNLIElPIGxhdGVuY3ksIERyaXZlcg0KPiAtICogY2FuIG9ubHkgc3RvcmUgOCBzbmFw c2hvdHMgb2YgR3VDIGxvZyBidWZmZXIgaW4gcmVsYXkuDQo+IC0gKi8NCj4gLSNkZWZpbmUgTlVN X1NVQkJVRlMgMTAwDQo+ICANCj4gLSNkZWZpbmUgUkVMQVlfRklMRV9OQU1FICAiZ3VjX2xvZyIN Cj4gICNkZWZpbmUgREVGQVVMVF9PVVRQVVRfRklMRV9OQU1FICAiZ3VjX2xvZ19kdW1wLmRhdCIN Cj4gLSNkZWZpbmUgQ09OVFJPTF9GSUxFX05BTUUgImk5MTVfZ3VjX2xvZ19jb250cm9sIg0KPiAg DQo+ICsjZGVmaW5lIEdMUl9MT0dMRVZFTF9OQU1FICAgICAgICAgImd1Y19sb2dfbGV2ZWwiDQo+ ICsjZGVmaW5lIEdMUl9DVExfTkFNRSAgICAgICAgICAgICAgImd1Y19sb2dfcmVsYXlfY3RsIg0K PiArI2RlZmluZSBHTFJfQ0hBTk5FTF9OQU1FICAgICAgICAgICJndWNfbG9nX3JlbGF5X2NoYW4w Ig0KPiArDQo+ICsjZGVmaW5lIERFRkFVTFRfU1VCQlVGX0NPVU5UICAgICAgICAgKDQgKiA4KQ0K PiArCQkJCQkvKiBkZWZhdWx0IHRvIGtlcm5lbCBidWlsdC1pbjogICAqDQo+ICsJCQkJCSAqICAg NCB4IDggc3ViYnVmIHJlZ2lvbnMgICAgICAgICoNCj4gKwkJCQkJICovDQo+ICsjZGVmaW5lIERF RkFVTFRfU1VCQlVGX1NJWkUgICAgICAgICAgKEtCKDQgKyA4ICsgNjQpKQ0KPiArCQkJCQkvKiBk ZWZhdWx0IHRvIGtlcm5lbCBidWlsdC1pbnMgOiAqDQo+ICsJCQkJCSAqICAgNEsgLT4gYnVmZmVy IHN0YXRlcyBhcnJheSAgICoNCj4gKwkJCQkJICogICA4SyAtPiBHdUMgY3Jhc2ggZHVtcCAgICAg ICAgKg0KPiArCQkJCQkgKiAgNjRLIC0+IGxvZyBldmVudHMgYnVmZmVyICAgICAqDQo+ICsJCQkJ CSAqLw0KPiArDQo+ICtpbnQgZHJtX2ZkOw0KPiAgY2hhciAqcmVhZF9idWZmZXI7DQo+ICBjaGFy ICpvdXRfZmlsZW5hbWU7DQo+ICBpbnQgcG9sbF90aW1lb3V0ID0gMjsgLyogYnkgZGVmYXVsdCAy bXMgdGltZW91dCAqLw0KPiBAQCAtNjgsMjMgKzc0LDUzIEBAIHB0aHJlYWRfdCBmbHVzaF90aHJl YWQ7DQo+ICBpbnQgdmVyYm9zaXR5X2xldmVsID0gMzsgLyogYnkgZGVmYXVsdCBjYXB0dXJlIGxv Z3MgYXQgbWF4IHZlcmJvc2l0eSAqLw0KPiAgdWludDMyX3QgcHJvZHVjZWQsIGNvbnN1bWVkOw0K PiAgdWludDY0X3QgdG90YWxfYnl0ZXNfd3JpdHRlbjsNCj4gLWludCBudW1fYnVmZmVycyA9IE5V TV9TVUJCVUZTOw0KPiAtaW50IHJlbGF5X2ZkLCBvdXRmaWxlX2ZkID0gLTE7DQo+ICtpbnQgc3Vi YnVmX2NvdW50Ow0KPiAraW50IHN1YmJ1Zl9zaXplOw0KPiAraW50IGN0bF9mZCwgcmVsYXlfZmQs IG91dGZpbGVfZmQgPSAtMTsNCj4gIHVpbnQzMl90IHRlc3RfZHVyYXRpb24sIG1heF9maWxlc2l6 ZTsNCj4gIHB0aHJlYWRfY29uZF90IHVuZGVyZmxvd19jb25kLCBvdmVyZmxvd19jb25kOw0KPiAg Ym9vbCBzdG9wX2xvZ2dpbmcsIGRpc2NhcmRfb2xkbG9ncywgY2FwdHVyaW5nX3N0b3BwZWQ7DQo+ ICtjaGFyICpndWNmc3BhdGg7DQo+ICANCj4gLXN0YXRpYyB2b2lkIGd1Y19sb2dfY29udHJvbChi b29sIGVuYWJsZSwgdWludDMyX3QgbG9nX2xldmVsKQ0KPiArc3RhdGljIHZvaWQgZ2V0X2d1Y19z dWJidWZfaW5mbyh2b2lkKQ0KPiArew0KPiArCWludCBmZCwgcmV0LCBqOw0KPiArCWNoYXIgKnBh dGg7DQo+ICsJY29uc3QgY2hhciAqZGJnX2ZzX25hbWVzWzJdID0geyJndWNfbG9nX3JlbGF5X2J1 Zl9zaXplXDAiLA0KPiArCQkJCQkiZ3VjX2xvZ19yZWxheV9zdWJidWZfY291bnRcMCJ9Ow0KPiAr CWNoYXIgb3V0c3RyWzEyOF07DQo+ICsJdWludDY0X3QgdG1wWzJdID0ge0RFRkFVTFRfU1VCQlVG X1NJWkUsIERFRkFVTFRfU1VCQlVGX0NPVU5UfTsNCj4gKw0KPiArCWZvciAoaiA9IDA7IGogPCAy OyBqKyspIHsNCj4gKwkJaWd0X2Fzc2VydF9uZXEoYXNwcmludGYoJnBhdGgsICIlcy8lcyIsIGd1 Y2ZzcGF0aCwgZGJnX2ZzX25hbWVzW2pdKSwgLTEpOw0KPiArCQlpZ3RfaW5mbygiT3BlbmluZyBz dWJidWYgcGF0aCAlc1xuIiwgcGF0aCk7DQo+ICsJCWZkID0gaWd0X2RlYnVnZnNfb3Blbihkcm1f ZmQsIHBhdGgsIE9fUkRPTkxZKTsNCj4gKwkJZnJlZShwYXRoKTsNCj4gKwkJaWd0X2Fzc2VydF9m KGZkID49IDAsICJjb3VsZG4ndCBvcGVuIHRoZSBHdUMgbG9nIHJlbGF5LXN1YmJ1ZiBmaWxlXG4i KTsNCj4gKwkJcmV0ID0gcmVhZChmZCwgb3V0c3RyLCBzaXplb2Yob3V0c3RyKSAtIDEpOw0KPiAr CQlpZ3RfYXNzZXJ0KHJldCA+IDApOw0KPiArCQlvdXRzdHJbcmV0XSA9ICdcMCc7DQo+ICsJCXRt cFtqXSA9IGF0b2xsKG91dHN0cik7DQo+ICsJCWNsb3NlKGZkKTsNCj4gKwl9DQo+ICsJc3ViYnVm X3NpemUgPSB0bXBbMF07DQo+ICsJc3ViYnVmX2NvdW50ID0gdG1wWzFdOw0KPiArCWlndF9pbmZv KCJEZWJ1Z2ZzIHJldHJpZXZlZCBzdWJidWYgaW5mbzogc2l6ZT0lZCwgY291bnQ9JWRcbiIsDQo+ ICsJCSBzdWJidWZfc2l6ZSwgc3ViYnVmX2NvdW50KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZv aWQgZ3VjX2xvZ192ZXJib3NpdHkoYm9vbCBlbmFibGUsIGludCBsb2dfbGV2ZWwpDQo+ICB7DQo+ IC0JaW50IGNvbnRyb2xfZmQ7DQo+IC0JY2hhciBkYXRhWzE5XTsNCj4gKwljaGFyICpzdHI7DQo+ ICsJaW50IGxvZ2xldmVsZmQ7DQo+ICAJdWludDY0X3QgdmFsOw0KPiAgCWludCByZXQ7DQo+ICAN Cj4gLQlpZ3RfYXNzZXJ0X2x0ZShsb2dfbGV2ZWwsIDMpOw0KPiAtDQo+IC0JY29udHJvbF9mZCA9 IGlndF9kZWJ1Z2ZzX29wZW4oLTEsIENPTlRST0xfRklMRV9OQU1FLCBPX1dST05MWSk7DQo+IC0J aWd0X2Fzc2VydF9mKGNvbnRyb2xfZmQgPj0gMCwgImNvdWxkbid0IG9wZW4gdGhlIGd1YyBsb2cg Y29udHJvbCBmaWxlXG4iKTsNCj4gKwlpZ3RfYXNzZXJ0X25lcShhc3ByaW50Zigmc3RyLCAiJXMv JXMiLCBndWNmc3BhdGgsIEdMUl9MT0dMRVZFTF9OQU1FKSwgLTEpOw0KPiArCWlndF9pbmZvKCJP cGVuaW5nIGxvZyBsZXZlbCAtPiAlc1xuIiwgc3RyKTsNCj4gKwlsb2dsZXZlbGZkID0gaWd0X2Rl YnVnZnNfb3Blbihkcm1fZmQsIHN0ciwgT19XUk9OTFkpOw0KPiArCWZyZWUoc3RyKTsNCj4gKwlp Z3RfYXNzZXJ0X2YobG9nbGV2ZWxmZCA+PSAwLCAiY291bGRuJ3Qgb3BlbiB0aGUgR3VDIGxvZyBs ZXZlbCBmaWxlXG4iKTsNCj4gIA0KPiAgCS8qDQo+ICAJICogaTkxNSBleHBlY3RzIEd1QyBsb2cg bGV2ZWwgdG8gYmUgc3BlY2lmaWVkIGFzOg0KPiBAQCAtOTYsMTMgKzEzMiw1MSBAQCBzdGF0aWMg dm9pZCBndWNfbG9nX2NvbnRyb2woYm9vbCBlbmFibGUsIHVpbnQzMl90IGxvZ19sZXZlbCkNCj4g IAkgKi8NCj4gIAl2YWwgPSBlbmFibGUgPyBsb2dfbGV2ZWwgKyAxIDogMDsNCj4gIA0KPiAtCXJl dCA9IHNucHJpbnRmKGRhdGEsIHNpemVvZihkYXRhKSwgIjB4JSIgUFJJeDY0LCB2YWwpOw0KPiAt CWlndF9hc3NlcnQocmV0ID4gMiAmJiByZXQgPCBzaXplb2YoZGF0YSkpOw0KPiArCXJldCA9IGFz cHJpbnRmKCZzdHIsICIweCUiIFBSSXg2NCwgdmFsKTsNCj4gKwlpZ3RfYXNzZXJ0X25lcShyZXQs IC0xKTsNCj4gKwlyZXQgPSB3cml0ZShsb2dsZXZlbGZkLCBzdHIsIHJldCk7DQo+ICsJZnJlZShz dHIpOw0KPiArCWlndF9hc3NlcnRfZihyZXQgPiAwLCAiY291bGRuJ3Qgd3JpdGUgdmVyYm9zaXR5 IHRvIGxvZyBsZXZlbCBmaWxlXG4iKTsNCj4gKwlpZ3RfaW5mbygiU2V0IEd1QyBsb2cgbGV2ZWwg PSAlZFxuIiwgKGludCl2YWwpOw0KPiArDQo+ICsJY2xvc2UobG9nbGV2ZWxmZCk7DQo+ICt9DQo+ ICANCj4gLQlyZXQgPSB3cml0ZShjb250cm9sX2ZkLCBkYXRhLCByZXQpOw0KPiAtCWlndF9hc3Nl cnRfZihyZXQgPiAwLCAiY291bGRuJ3Qgd3JpdGUgdG8gdGhlIGxvZyBjb250cm9sIGZpbGVcbiIp Ow0KPiArc3RhdGljIHZvaWQgZ3VjX2xvZ19jb250cm9sKGJvb2wgZW5hYmxlLCB1aW50MzJfdCBs b2dfbGV2ZWwpDQo+ICt7DQo+ICsJY2hhciAqc3RyOw0KPiArCXVpbnQ2NF90IHZhbCA9IDA7DQo+ ICsJaW50IHJldDsNCj4gIA0KPiAtCWNsb3NlKGNvbnRyb2xfZmQpOw0KPiArCWlmIChlbmFibGUp IHsNCj4gKwkJaWd0X2Fzc2VydF9uZXEoYXNwcmludGYoJnN0ciwgIiVzLyVzIiwgZ3VjZnNwYXRo LCBHTFJfQ1RMX05BTUUpLCAtMSk7DQo+ICsJCWlndF9pbmZvKCJPcGVuaW5nIGNvbnRyb2wgZmls ZSAtPiAlc1xuIiwgc3RyKTsNCj4gKwkJY3RsX2ZkID0gaWd0X2RlYnVnZnNfb3Blbihkcm1fZmQs IHN0ciwgT19XUk9OTFkpOw0KPiArCQlmcmVlKHN0cik7DQo+ICsJCWlndF9hc3NlcnRfZihjdGxf ZmQgPj0gMCwgImNvdWxkbid0IG9wZW4gdGhlIEd1QyBsb2cgcmVsYXktY3RsIGZpbGVcbiIpOw0K PiArCQl2YWwgPSAxOw0KPiArCX0NCj4gKw0KPiArCS8qDQo+ICsJICogaTkxNSBleHBlY3RzIHJl bGF5IGxvZ2dpbmcgY29udHJvbHM6DQo+ICsJICogMSAgICA6IG9wZW4gKyBlbmFibGUgcmVsYXkg bG9nZ2luZw0KPiArCSAqIDIgICAgOiBmbHVzaA0KPiArCSAqIDAgICAgOiBkaXNhYmxlIHJlbGF5 IGxvZ2dpbmcgKyBjbG9zZQ0KPiArCSAqLw0KPiArCWlmIChjdGxfZmQpIHsNCj4gKwkJcmV0ID0g YXNwcmludGYoJnN0ciwgIjB4JSIgUFJJeDY0LCB2YWwpOw0KPiArCQlpZ3RfYXNzZXJ0X25lcShy ZXQsIC0xKTsNCj4gKwkJcmV0ID0gd3JpdGUoY3RsX2ZkLCBzdHIsIHJldCk7DQo+ICsJCWZyZWUo c3RyKTsNCj4gKwkJaWd0X2Fzc2VydF9mKHJldCA+IDAsICJjb3VsZG4ndCB3cml0ZSB0byB0aGUg bG9nIGNvbnRyb2wgZmlsZVxuIik7DQo+ICsJfQ0KPiArDQo+ICsJZ3VjX2xvZ192ZXJib3NpdHko ZW5hYmxlLCBsb2dfbGV2ZWwpOw0KPiArDQo+ICsJaWYgKCFlbmFibGUpIHsNCj4gKwkJaWd0X2lu Zm8oIkNsb3NpbmcgY29udHJvbCBmaWxlXG4iKTsNCj4gKwkJY2xvc2UoY3RsX2ZkKTsNCj4gKwl9 DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2b2lkIGludF9zaWdfaGFuZGxlcihpbnQgc2lnKQ0KPiBA QCAtMTE5LDE4ICsxOTMsMTggQEAgc3RhdGljIHZvaWQgcHVsbF9sZWZ0b3Zlcl9kYXRhKHZvaWQp DQo+ICANCj4gIAlkbyB7DQo+ICAJCS8qIFJlYWQgdGhlIGxvZ3MgZnJvbSByZWxheSBidWZmZXIg Ki8NCj4gLQkJcmV0ID0gcmVhZChyZWxheV9mZCwgcmVhZF9idWZmZXIsIFNVQkJVRl9TSVpFKTsN Cj4gKwkJcmV0ID0gcmVhZChyZWxheV9mZCwgcmVhZF9idWZmZXIsIHN1YmJ1Zl9zaXplKTsNCj4g IAkJaWYgKCFyZXQpDQo+ICAJCQlicmVhazsNCj4gIA0KPiAtCQlpZ3RfYXNzZXJ0X2YocmV0ID4g MCwgImZhaWxlZCB0byByZWFkIGZyb20gdGhlIGd1YyBsb2cgZmlsZVxuIik7DQo+IC0JCWlndF9h c3NlcnRfZihyZXQgPT0gU1VCQlVGX1NJWkUsICJpbnZhbGlkIHJlYWQgZnJvbSByZWxheSBmaWxl XG4iKTsNCj4gKwkJaWd0X2Fzc2VydF9mKHJldCA+IDAsICJmYWlsZWQgdG8gcmVhZCBmcm9tIHRo ZSBHdUMgbG9nIGZpbGVcbiIpOw0KPiArCQlpZ3RfYXNzZXJ0X2YocmV0ID09IHN1YmJ1Zl9zaXpl LCAiaW52YWxpZCByZWFkIGZyb20gcmVsYXkgZmlsZVxuIik7DQo+ICANCj4gIAkJYnl0ZXNfcmVh ZCArPSByZXQ7DQo+ICANCj4gIAkJaWYgKG91dGZpbGVfZmQgPj0gMCkgew0KPiAtCQkJcmV0ID0g d3JpdGUob3V0ZmlsZV9mZCwgcmVhZF9idWZmZXIsIFNVQkJVRl9TSVpFKTsNCj4gLQkJCWlndF9h c3NlcnRfZihyZXQgPT0gU1VCQlVGX1NJWkUsICJjb3VsZG4ndCBkdW1wIHRoZSBsb2dzIGluIGEg ZmlsZVxuIik7DQo+ICsJCQlyZXQgPSB3cml0ZShvdXRmaWxlX2ZkLCByZWFkX2J1ZmZlciwgc3Vi YnVmX3NpemUpOw0KPiArCQkJaWd0X2Fzc2VydF9mKHJldCA9PSBzdWJidWZfc2l6ZSwgImNvdWxk bid0IGR1bXAgdGhlIGxvZ3MgaW4gYSBmaWxlXG4iKTsNCj4gIAkJCXRvdGFsX2J5dGVzX3dyaXR0 ZW4gKz0gcmV0Ow0KPiAgCQl9DQo+ICAJfSB3aGlsZSgxKTsNCj4gQEAgLTE0OSw3ICsyMjMsNyBA QCBzdGF0aWMgdm9pZCBwdWxsX2RhdGEodm9pZCkNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+ICAJcHRo cmVhZF9tdXRleF9sb2NrKCZtdXRleCk7DQo+IC0Jd2hpbGUgKG51bV9maWxsZWRfYnVmcygpID49 IG51bV9idWZmZXJzKSB7DQo+ICsJd2hpbGUgKG51bV9maWxsZWRfYnVmcygpID49IHN1YmJ1Zl9j b3VudCkgew0KPiAgCQlpZ3RfZGVidWcoIm92ZXJmbG93LCB3aWxsIHdhaXQsIHByb2R1Y2VkICV1 LCBjb25zdW1lZCAldVxuIiwgcHJvZHVjZWQsIGNvbnN1bWVkKTsNCj4gIAkJLyogU3RhbGwgdGhl IG1haW4gdGhyZWFkIGluIGNhc2Ugb2Ygb3ZlcmZsb3csIGFzIHRoZXJlIGFyZSBubw0KPiAgCQkg KiBidWZmZXJzIGF2YWlsYWJsZSB0byBzdG9yZSB0aGUgbmV3IGxvZ3MsIG90aGVyd2lzZSB0aGVy ZQ0KPiBAQCAtMTU5LDEyICsyMzMsMTIgQEAgc3RhdGljIHZvaWQgcHVsbF9kYXRhKHZvaWQpDQo+ ICAJfTsNCj4gIAlwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOw0KPiAgDQo+IC0JcHRyID0g cmVhZF9idWZmZXIgKyAocHJvZHVjZWQgJSBudW1fYnVmZmVycykgKiBTVUJCVUZfU0laRTsNCj4g KwlwdHIgPSByZWFkX2J1ZmZlciArIChwcm9kdWNlZCAlIHN1YmJ1Zl9jb3VudCkgKiBzdWJidWZf c2l6ZTsNCj4gIA0KPiAgCS8qIFJlYWQgdGhlIGxvZ3MgZnJvbSByZWxheSBidWZmZXIgKi8NCj4g LQlyZXQgPSByZWFkKHJlbGF5X2ZkLCBwdHIsIFNVQkJVRl9TSVpFKTsNCj4gLQlpZ3RfYXNzZXJ0 X2YocmV0ID49IDAsICJmYWlsZWQgdG8gcmVhZCBmcm9tIHRoZSBndWMgbG9nIGZpbGVcbiIpOw0K PiAtCWlndF9hc3NlcnRfZighcmV0IHx8IHJldCA9PSBTVUJCVUZfU0laRSwgImludmFsaWQgcmVh ZCBmcm9tIHJlbGF5IGZpbGVcbiIpOw0KPiArCXJldCA9IHJlYWQocmVsYXlfZmQsIHB0ciwgc3Vi YnVmX3NpemUpOw0KPiArCWlndF9hc3NlcnRfZihyZXQgPj0gMCwgImZhaWxlZCB0byByZWFkIGZy b20gdGhlIEd1QyBsb2cgZmlsZVxuIik7DQo+ICsJaWd0X2Fzc2VydF9mKCFyZXQgfHwgcmV0ID09 IHN1YmJ1Zl9zaXplLCAiaW52YWxpZCByZWFkIGZyb20gcmVsYXkgZmlsZVxuIik7DQo+ICANCj4g IAlpZiAocmV0KSB7DQo+ICAJCXB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOw0KPiBAQCAtMjA0 LDEwICsyNzgsMTAgQEAgc3RhdGljIHZvaWQgKmZsdXNoZXIodm9pZCAqYXJnKQ0KPiAgCQl9Ow0K PiAgCQlwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOw0KPiAgDQo+IC0JCXB0ciA9IHJlYWRf YnVmZmVyICsgKGNvbnN1bWVkICUgbnVtX2J1ZmZlcnMpICogU1VCQlVGX1NJWkU7DQo+ICsJCXB0 ciA9IHJlYWRfYnVmZmVyICsgKGNvbnN1bWVkICUgc3ViYnVmX2NvdW50KSAqIHN1YmJ1Zl9zaXpl Ow0KPiAgDQo+IC0JCXJldCA9IHdyaXRlKG91dGZpbGVfZmQsIHB0ciwgU1VCQlVGX1NJWkUpOw0K PiAtCQlpZ3RfYXNzZXJ0X2YocmV0ID09IFNVQkJVRl9TSVpFLCAiY291bGRuJ3QgZHVtcCB0aGUg bG9ncyBpbiBhIGZpbGVcbiIpOw0KPiArCQlyZXQgPSB3cml0ZShvdXRmaWxlX2ZkLCBwdHIsIHN1 YmJ1Zl9zaXplKTsNCj4gKwkJaWd0X2Fzc2VydF9mKHJldCA9PSBzdWJidWZfc2l6ZSwgImNvdWxk bid0IGR1bXAgdGhlIGxvZ3MgaW4gYSBmaWxlXG4iKTsNCj4gDQpUbyBmaXg6IEEgcmVjZW50IGRp c2N1c3Npb24gd2l0aCB0ZWFtIG1hdGVzIHJldmVhbGVkIHRoYXQgdGhlIG9yaWdpbmFsIGRlc2ln biBnb2FsIHdhcyB0byBub3QganVzdA0KdGFrZSB0aGUgaW5jb21pbmcgc2VxdWVuY2VzIG9mIEd1 Qy1sb2ctYnVmZmVyIHNuYXBzaG90cyBmcm9tIHRoZSBrZXJuZWwgYW5kIGR1bXAgdG8gZmlsZS4N ClRoZSBrZXJuZWwgaXMgc2VuZGluZyB0aGUgZW50aXJlIEd1QyBsb2cgYnVmZmVycyAtIGJvdGgg dGhlIGd1Yy1sb2ctcmVnaW9uLWhlYWRlcnMgYW5kDQpHdUMtbG9nLXJlZ2lvbi1kYXRhLiBTaWRl IG5vdGU6IHRoZSBrZXJuZWwgZGlkIGxpbWl0IHRoZSBhbW91bnQgb2YgZGF0YSBpdCBjb3BpZWQg b3ZlciB0aGUgY2hhbm5lbA0KdG8gb25seSB0aGUgbmV3IGRhdGEgKHJlZ2lvbiB1c2FnZSBpcyBp bXBsZW1lbnRlZCBhcyBhIHJpbmcgYnVmZmVyIGJ5IHRoZSBHdUMgZmlybXdhcmUpLg0KDQpUaGF0 IHNhaWQsIG5ldyBjb2RlIG5lZWRzIHRvIGJlIGFkZGVkIGludG8gdGhpcyBmbHVzaGVyIHRocmVh ZCB0byBwZWVrIGludG8gdGhlIGhlYWRlciwNCmFuZCBvbmx5IGNvcHkgdGhlIG5ldyBkYXRhIChy ZW9yZGVyaW5nIHRvIGZsYXR0ZW4gb3V0IHdyYXBhcm91bmRzKSBhbmQgc2tpcCBjb3B5aW5nIHRo ZQ0KaGVhZGVyIGl0c2VsZi4ob2YgY291cnNlIGtlZXAganVzdCBvbmUgaGVhZGVyIGF0IHRoZSBi ZWdpbm5pbmcgd2l0aCBhbiBldmVyLWluY3JlYXNpbmcNCnRhaWwtcHRyKS4NCg0KLi4uYWxhbg0K DQo+ICANCj4gIAkJdG90YWxfYnl0ZXNfd3JpdHRlbiArPSByZXQ7DQo+ICAJCWlmIChtYXhfZmls ZXNpemUgJiYgKHRvdGFsX2J5dGVzX3dyaXR0ZW4gPiBNQihtYXhfZmlsZXNpemUpKSkgew0KPiBA QCAtMjYwLDggKzMzNCwxMyBAQCBzdGF0aWMgdm9pZCBpbml0X2ZsdXNoZXJfdGhyZWFkKHZvaWQp DQo+ICANCj4gIHN0YXRpYyB2b2lkIG9wZW5fcmVsYXlfZmlsZSh2b2lkKQ0KPiAgew0KPiAtCXJl bGF5X2ZkID0gaWd0X2RlYnVnZnNfb3BlbigtMSwgUkVMQVlfRklMRV9OQU1FLCBPX1JET05MWSk7 DQo+IC0JaWd0X2Fzc2VydF9mKHJlbGF5X2ZkID49IDAsICJjb3VsZG4ndCBvcGVuIHRoZSBndWMg bG9nIGZpbGVcbiIpOw0KPiArCWNoYXIgKnBhdGg7DQo+ICsNCj4gKwlpZ3RfYXNzZXJ0X25lcShh c3ByaW50ZigmcGF0aCwgIiVzLyVzIiwgZ3VjZnNwYXRoLCBHTFJfQ0hBTk5FTF9OQU1FKSwgLTEp Ow0KPiArCWlndF9pbmZvKCJPcGVuaW5nIHRoaXMgcGF0aCAtPiAlc1xuIiwgcGF0aCk7DQo+ICsJ cmVsYXlfZmQgPSBpZ3RfZGVidWdmc19vcGVuKGRybV9mZCwgcGF0aCwgT19SRE9OTFkpOw0KPiAr CWZyZWUocGF0aCk7DQo+ICsJaWd0X2Fzc2VydF9mKHJlbGF5X2ZkID49IDAsICJjb3VsZG4ndCBv cGVuIHRoZSBHdUMgbG9nIHJlbGF5LWNoYW5uZWwgZmlsZVxuIik7DQo+ICANCj4gIAkvKiBQdXJn ZSB0aGUgb2xkL2Jvb3QtdGltZSBsb2dzIGZyb20gdGhlIHJlbGF5IGJ1ZmZlci4NCj4gIAkgKiBU aGlzIGlzIG1vcmUgZm9yIFZhbCB0ZWFtJ3MgcmVxdWlyZW1lbnQsIHdoZXJlIHRoZXkgaGF2ZSB0 byBmaXJzdA0KPiBAQCAtMjkyLDcgKzM3MSw3IEBAIHN0YXRpYyB2b2lkIG9wZW5fb3V0cHV0X2Zp bGUodm9pZCkNCj4gIA0KPiAgc3RhdGljIHZvaWQgaW5pdF9tYWluX3RocmVhZCh2b2lkKQ0KPiAg ew0KPiAtCXN0cnVjdCBzY2hlZF9wYXJhbQl0aHJlYWRfc2NoZWQ7DQo+ICsJc3RydWN0IHNjaGVk X3BhcmFtIHRocmVhZF9zY2hlZDsNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+ICAJLyogUnVuIHRoZSBt YWluIHRocmVhZCBhdCBoaWdoZXN0IHByaW9yaXR5IHRvIGVuc3VyZSB0aGF0IGl0IGFsd2F5cw0K PiBAQCAtMzExLDExICszOTAsMTEgQEAgc3RhdGljIHZvaWQgaW5pdF9tYWluX3RocmVhZCh2b2lk KQ0KPiAgCQlpZ3RfYXNzZXJ0X2YoMCwgIlNJR0FMUk0gaGFuZGxlciByZWdpc3RyYXRpb24gZmFp bGVkXG4iKTsNCj4gIA0KPiAgCS8qIE5lZWQgYW4gYWxpZ25lZCBwb2ludGVyIGZvciBkaXJlY3Qg SU8gKi8NCj4gLQlyZXQgPSBwb3NpeF9tZW1hbGlnbigodm9pZCAqKikmcmVhZF9idWZmZXIsIFBB R0VfU0laRSwgbnVtX2J1ZmZlcnMgKiBTVUJCVUZfU0laRSk7DQo+ICsJcmV0ID0gcG9zaXhfbWVt YWxpZ24oKHZvaWQgKiopJnJlYWRfYnVmZmVyLCBQQUdFX1NJWkUsIHN1YmJ1Zl9jb3VudCAqIHN1 YmJ1Zl9zaXplKTsNCj4gIAlpZ3RfYXNzZXJ0X2YocmV0ID09IDAsICJjb3VsZG4ndCBhbGxvY2F0 ZSB0aGUgcmVhZCBidWZmZXJcbiIpOw0KPiAgDQo+ICAJLyogS2VlcCB0aGUgcGFnZXMgbG9ja2Vk IGluIFJBTSwgYXZvaWQgcGFnZSBmYXVsdCBvdmVyaGVhZCAqLw0KPiAtCXJldCA9IG1sb2NrKHJl YWRfYnVmZmVyLCBudW1fYnVmZmVycyAqIFNVQkJVRl9TSVpFKTsNCj4gKwlyZXQgPSBtbG9jayhy ZWFkX2J1ZmZlciwgc3ViYnVmX2NvdW50ICogc3ViYnVmX3NpemUpOw0KPiAgCWlndF9hc3NlcnRf ZihyZXQgPT0gMCwgImZhaWxlZCB0byBsb2NrIG1lbW9yeVxuIik7DQo+ICANCj4gIAkvKiBFbmFi bGUgdGhlIGxvZ2dpbmcsIGl0IG1heSBub3QgaGF2ZSBiZWVuIGVuYWJsZWQgZnJvbSBib290IGFu ZCBzbw0KPiBAQCAtMzQyLDExICs0MjEsNiBAQCBzdGF0aWMgaW50IHBhcnNlX29wdGlvbnMoaW50 IG9wdCwgaW50IG9wdF9pbmRleCwgdm9pZCAqZGF0YSkNCj4gIAkJaWd0X2Fzc2VydF9mKG91dF9m aWxlbmFtZSwgIkNvdWxkbid0IGFsbG9jYXRlIHRoZSBvL3AgZmlsZW5hbWVcbiIpOw0KPiAgCQlp Z3RfZGVidWcoImxvZ3MgdG8gYmUgc3RvcmVkIGluIGZpbGUgJXNcbiIsIG91dF9maWxlbmFtZSk7 DQo+ICAJCWJyZWFrOw0KPiAtCWNhc2UgJ2InOg0KPiAtCQludW1fYnVmZmVycyA9IGF0b2kob3B0 YXJnKTsNCj4gLQkJaWd0X2Fzc2VydF9mKG51bV9idWZmZXJzID4gMCwgImludmFsaWQgaW5wdXQg Zm9yIC1iIG9wdGlvblxuIik7DQo+IC0JCWlndF9kZWJ1ZygibnVtYmVyIG9mIGJ1ZmZlcnMgdG8g YmUgdXNlZCBpcyAlZFxuIiwgbnVtX2J1ZmZlcnMpOw0KPiAtCQlicmVhazsNCj4gIAljYXNlICd0 JzoNCj4gIAkJdGVzdF9kdXJhdGlvbiA9IGF0b2kob3B0YXJnKTsNCj4gIAkJaWd0X2Fzc2VydF9m KHRlc3RfZHVyYXRpb24gPiAwLCAiaW52YWxpZCBpbnB1dCBmb3IgLXQgb3B0aW9uXG4iKTsNCj4g QEAgLTM3Nyw3ICs0NTEsNiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2NvbW1hbmRfbGluZShpbnQg YXJnYywgY2hhciAqKmFyZ3YpDQo+ICAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25z W10gPSB7DQo+ICAJCXsidmVyYm9zaXR5IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd2J30sDQo+ ICAJCXsib3V0cHV0ZmlsZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnbyd9LA0KPiAtCQl7ImJ1 ZmZlcnMiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ2InfSwNCj4gIAkJeyJ0ZXN0ZHVyYXRpb24i LCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3QnfSwNCj4gIAkJeyJwb2xsdGltZW91dCIsIHJlcXVp cmVkX2FyZ3VtZW50LCAwLCAncCd9LA0KPiAgCQl7InNpemUiLCByZXF1aXJlZF9hcmd1bWVudCwg MCwgJ3MnfSwNCj4gQEAgLTM4OCw3ICs0NjEsNiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2NvbW1h bmRfbGluZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ICAJY29uc3QgY2hhciAqaGVscCA9DQo+ ICAJCSIgIC12IC0tdmVyYm9zaXR5PWxldmVsICAgdmVyYm9zaXR5IGxldmVsIG9mIEd1QyBsb2dn aW5nICgwLTMpXG4iDQo+ICAJCSIgIC1vIC0tb3V0cHV0ZmlsZT1uYW1lICAgbmFtZSBvZiB0aGUg b3V0cHV0IGZpbGUsIGluY2x1ZGluZyB0aGUgbG9jYXRpb24sIHdoZXJlIGxvZ3Mgd2lsbCBiZSBz dG9yZWRcbiINCj4gLQkJIiAgLWIgLS1idWZmZXJzPW51bSAgICAgICBudW1iZXIgb2YgYnVmZmVy cyB0byBiZSBtYWludGFpbmVkIG9uIGxvZ2dlciBzaWRlIGZvciBzdG9yaW5nIGxvZ3NcbiINCj4g IAkJIiAgLXQgLS10ZXN0ZHVyYXRpb249c2VjICBtYXggZHVyYXRpb24gaW4gc2Vjb25kcyBmb3Ig d2hpY2ggdGhlIGxvZ2dlciBzaG91bGQgcnVuXG4iDQo+ICAJCSIgIC1wIC0tcG9sbHRpbWVvdXQ9 bXMgICAgcG9sbGluZyB0aW1lb3V0IGluIG1zLCAtMSA9PSBpbmRlZmluaXRlIHdhaXQgZm9yIHRo ZSBuZXcgZGF0YVxuIg0KPiAgCQkiICAtcyAtLXNpemU9TUIgICAgICAgICAgIG1heCBzaXplIG9m IG91dHB1dCBmaWxlIGluIE1CcyBhZnRlciB3aGljaCBsb2dnaW5nIHdpbGwgYmUgc3RvcHBlZFxu Ig0KPiBAQCAtNDA0LDYgKzQ3NiwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp DQo+ICAJaW50IG5mZHM7DQo+ICAJaW50IHJldDsNCj4gIA0KPiArCWRybV9mZCA9IGRybV9vcGVu X2RyaXZlcihEUklWRVJfSU5URUwpOw0KPiArCWlndF9hc3NlcnQoZHJtX2ZkICE9IC0xKTsNCj4g KwlpZ3RfYXNzZXJ0X25lcShhc3ByaW50ZigmZ3VjZnNwYXRoLCAiZ3QwL3VjIiksIC0xKTsNCj4g Kw0KPiArCWdldF9ndWNfc3ViYnVmX2luZm8oKTsNCj4gIAlwcm9jZXNzX2NvbW1hbmRfbGluZShh cmdjLCBhcmd2KTsNCj4gIA0KPiAgCWluaXRfbWFpbl90aHJlYWQoKTsNCj4gQEAgLTQ2Niw1ICs1 NDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ICAJZnJlZShyZWFkX2J1 ZmZlcik7DQo+ICAJY2xvc2UocmVsYXlfZmQpOw0KPiAgCWNsb3NlKG91dGZpbGVfZmQpOw0KPiAr CWZyZWUoZ3VjZnNwYXRoKTsNCj4gKwljbG9zZShkcm1fZmQpOw0KPiAgCWlndF9leGl0KCk7DQo+ ICB9DQo+IC0tIA0KPiAyLjI1LjENCj4gDQoNCg==