From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH i-g-t v5 4/7] Introduce common frame dumping configuration and helpers Date: Thu, 20 Jul 2017 17:14:14 +0300 Message-ID: <1500560054.1362.6.camel@linux.intel.com> References: <20170705080435.26789-1-paul.kocialkowski@linux.intel.com> <20170719134610.8278-1-paul.kocialkowski@linux.intel.com> <20170719134610.8278-5-paul.kocialkowski@linux.intel.com> <20170720072447.r2pmm43gkgqrbwb4@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id F1DA46E6A6 for ; Thu, 20 Jul 2017 14:14:17 +0000 (UTC) In-Reply-To: <20170720072447.r2pmm43gkgqrbwb4@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE3LTA3LTIwIGF0IDA5OjI0ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIFdlZCwgSnVsIDE5LCAyMDE3IGF0IDA0OjQ2OjA3UE0gKzAzMDAsIFBhdWwgS29jaWFsa293 c2tpIHdyb3RlOgo+ID4gVGhpcyBpbnRyb2R1Y2VzIGEgY29tbW9uIEZyYW1lRHVtcFBhdGggY29u ZmlndXJhdGlvbiBmaWVsZCwgYXMgd2VsbAo+ID4gYXMKPiA+IGhlbHBlciBmdW5jdGlvbnMgaW4g ZGVkaWNhdGVkIGlndF9mcmFtZSBmb3Igd3JpdGluZyBjYWlybyBzdXJmYWNlcwo+ID4gdG8gcG5n IGZpbGVzLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5r b2NpYWxrb3dza2lAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgbGliL01ha2VmaWxlLnNv dXJjZXMgfCAgIDIgKwo+ID4gIGxpYi9pZ3QuaCAgICAgICAgICAgIHwgICAxICsKPiA+ICBsaWIv aWd0X2NvcmUuYyAgICAgICB8ICAxMiArKysrKwo+ID4gIGxpYi9pZ3RfY29yZS5oICAgICAgIHwg ICAyICstCj4gPiAgbGliL2lndF9mcmFtZS5jICAgICAgfCAxMzcKPiA+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGxpYi9pZ3RfZnJhbWUu aCAgICAgIHwgIDQzICsrKysrKysrKysrKysrKysKPiAKPiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBw dWxsIHRoZSBuZXcgZG9jcyBpbnRvIHRoZSBkb2NzIGJ1aWxkIHRvby4gQW5kCj4gd2hpbGUKPiBk b2luZyB0aGF0LCBwbGVhc2UgcmV2aWV3IGZvciBvdGhlciBzdHVmZiBhZGRlZCBpbiB0aGUgcGFz dCB5ZWFyIGFuZAo+IGluY2x1ZGUgdGhhdCB0b28uIEFuZCBwbGVhc2UgYnVpbGQgdGhlIGRvY3Mg YW5kIGNoZWNrIHRoZSByZXN1bHQuCgpJJ3ZlIGp1c3Qgc2VudCBvdXQgYSBwYXRjaCBmb3IgdGhh dCwgdGhhbmtzIGZvciBwb2ludGluZyBpdCBvdXQhCgpDaGVlcnMsCgpQYXVsCgo+IFRoYW5rcywg RGFuaWVsCj4gCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxOTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0X2ZyYW1lLmMKPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQgbGliL2lndF9mcmFtZS5oCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9saWIv TWFrZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gPiBpbmRleCA1M2ZkYjU0 Yy4uYzJlNTg4MDkgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvTWFrZWZpbGUuc291cmNlcwo+ID4gKysr IGIvbGliL01ha2VmaWxlLnNvdXJjZXMKPiA+IEBAIC04Myw2ICs4Myw4IEBAIGxpYl9zb3VyY2Vf bGlzdCA9CSAJXAo+ID4gIAl1d2lsZG1hdC91d2lsZG1hdC5jCVwKPiA+ICAJaWd0X2ttb2QuYwkJ XAo+ID4gIAlpZ3Rfa21vZC5oCQlcCj4gPiArCWlndF9mcmFtZS5jCQlcCj4gPiArCWlndF9mcmFt ZS5oCQlcCj4gPiAgCSQoTlVMTCkKPiA+ICAKPiA+ICAuUEhPTlk6IHZlcnNpb24uaC50bXAKPiA+ IGRpZmYgLS1naXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKPiA+IGluZGV4IGEwNjlkZWIzLi5k MTZhNDk5MSAxMDA2NDQKPiA+IC0tLSBhL2xpYi9pZ3QuaAo+ID4gKysrIGIvbGliL2lndC5oCj4g PiBAQCAtMzQsNiArMzQsNyBAQAo+ID4gICNpbmNsdWRlICJpZ3RfZHJhdy5oIgo+ID4gICNpbmNs dWRlICJpZ3RfZHVtbXlsb2FkLmgiCj4gPiAgI2luY2x1ZGUgImlndF9mYi5oIgo+ID4gKyNpbmNs dWRlICJpZ3RfZnJhbWUuaCIKPiA+ICAjaW5jbHVkZSAiaWd0X2d0LmgiCj4gPiAgI2luY2x1ZGUg ImlndF9rbXMuaCIKPiA+ICAjaW5jbHVkZSAiaWd0X3BtLmgiCj4gPiBkaWZmIC0tZ2l0IGEvbGli L2lndF9jb3JlLmMgYi9saWIvaWd0X2NvcmUuYwo+ID4gaW5kZXggMWJhNzkzNjEuLjVhM2IwMGU4 IDEwMDY0NAo+ID4gLS0tIGEvbGliL2lndF9jb3JlLmMKPiA+ICsrKyBiL2xpYi9pZ3RfY29yZS5j Cj4gPiBAQCAtMjM1LDYgKzIzNSwxMCBAQAo+ID4gICAqIEFuIGV4YW1wbGUgY29uZmlndXJhdGlv biBmb2xsb3dzOgo+ID4gICAqCj4gPiAgICogfFs8IS0tIGxhbmd1YWdlPSJwbGFpbiIgLS0+Cj4g PiArICoJIyBUaGUgY29tbW9uIGNvbmZpZ3VyYXRpb24gc2VjdG9uIGZvbGxvd3MuCj4gPiArICoJ W0NvbW1vbl0KPiA+ICsgKglGcmFtZUR1bXBQYXRoPS90bXAgIyBUaGUgcGF0aCB0byBkdW1wIGZy YW1lcyB0aGF0IGZhaWwKPiA+IGNvbXBhcmlzb24gY2hlY2tzCj4gPiArICoKPiA+ICAgKgkjIFRo ZSBmb2xsb3dpbmcgc2VjdGlvbiBpcyB1c2VkIGZvciBjb25maWd1cmluZyB0aGUKPiA+IERldmlj ZSBVbmRlciBUZXN0Lgo+ID4gICAqCSMgSXQgaXMgbm90IG1hbmRhdG9yeSBhbmQgYWxsb3dzIG92 ZXJyaWRpbmcgZGVmYXVsdAo+ID4gdmFsdWVzLgo+ID4gICAqCVtEVVRdCj4gPiBAQCAtMjkwLDYg KzI5NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgewo+ID4gIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgbG9n X2J1ZmZlcl9tdXRleCA9Cj4gPiBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwo+ID4gIAo+ID4g IEdLZXlGaWxlICppZ3Rfa2V5X2ZpbGU7Cj4gPiArY2hhciAqZnJhbWVfZHVtcF9wYXRoOwo+ID4g IAo+ID4gIGNvbnN0IGNoYXIgKmlndF90ZXN0X25hbWUodm9pZCkKPiA+ICB7Cj4gPiBAQCAtNjIx LDYgKzYyNiwxMyBAQCBzdGF0aWMgaW50IGNvbmZpZ19wYXJzZSh2b2lkKQo+ID4gIAlpZiAoIWln dF9rZXlfZmlsZSkKPiA+ICAJCXJldHVybiAwOwo+ID4gIAo+ID4gKwlmcmFtZV9kdW1wX3BhdGgg PSBnZXRlbnYoIklHVF9GUkFNRV9EVU1QX1BBVEgiKTsKPiA+ICsKPiA+ICsJaWYgKCFmcmFtZV9k dW1wX3BhdGgpCj4gPiArCQlmcmFtZV9kdW1wX3BhdGggPQo+ID4gZ19rZXlfZmlsZV9nZXRfc3Ry aW5nKGlndF9rZXlfZmlsZSwgIkNvbW1vbiIsCj4gPiArCQkJCQkJCSJGcmFtZUR1bXBQCj4gPiBh dGgiLAo+ID4gKwkJCQkJCQkmZXJyb3IpOwo+ID4gKwo+ID4gIAlyYyA9IGdfa2V5X2ZpbGVfZ2V0 X2ludGVnZXIoaWd0X2tleV9maWxlLCAiRFVUIiwKPiA+ICJTdXNwZW5kUmVzdW1lRGVsYXkiLAo+ ID4gIAkJCQkgICAgJmVycm9yKTsKPiA+ICAJaWYgKGVycm9yICYmIGVycm9yLT5jb2RlID09IEdf S0VZX0ZJTEVfRVJST1JfSU5WQUxJRF9WQUxVRSkKPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2Nv cmUuaCBiL2xpYi9pZ3RfY29yZS5oCj4gPiBpbmRleCAwNzM5Y2E4My4uMTYxOWE5ZDYgMTAwNjQ0 Cj4gPiAtLS0gYS9saWIvaWd0X2NvcmUuaAo+ID4gKysrIGIvbGliL2lndF9jb3JlLmgKPiA+IEBA IC01MCw3ICs1MCw3IEBACj4gPiAgZXh0ZXJuIGNvbnN0IGNoYXIqIF9faWd0X3Rlc3RfZGVzY3Jp cHRpb24gX19hdHRyaWJ1dGVfXygod2VhaykpOwo+ID4gIGV4dGVybiBib29sIF9faWd0X3BsYWlu X291dHB1dDsKPiA+ICBleHRlcm4gR0tleUZpbGUgKmlndF9rZXlfZmlsZTsKPiA+IC0KPiA+ICtl eHRlcm4gY2hhciAqZnJhbWVfZHVtcF9wYXRoOwo+ID4gIAo+ID4gIC8qKgo+ID4gICAqIElHVF9U RVNUX0RFU0NSSVBUSU9OOgo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZnJhbWUuYyBiL2xpYi9p Z3RfZnJhbWUuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwLi5k ZmFmZTUzZAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvbGliL2lndF9mcmFtZS5jCj4gPiBA QCAtMCwwICsxLDEzNyBAQAo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IMKpIDIwMTcgSW50ZWwg Q29ycG9yYXRpb24KPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4gPiBvYnRhaW5pbmcgYQo+ID4gKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUKPiA+ICJTb2Z0d2FyZSIpLAo+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4gPiBsaW1pdGF0aW9uCj4gPiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsCj4gPiBzdWJsaWNlbnNlLAo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0bwo+ID4gd2hvbSB0aGUKPiA+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwo+ID4g Y29uZGl0aW9uczoKPiA+ICsgKgo+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcKPiA+IHRoZSBuZXh0Cj4gPiArICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs Cj4gPiBwb3J0aW9ucyBvZiB0aGUKPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELAo+ID4gRVhQUkVTUyBPUgo+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+IE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8KPiA+IEVWRU5UIFNIQUxMCj4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCj4gPiBEQU1BR0VTIE9SIE9USEVSCj4gPiArICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsCj4gPiBBUklTSU5HCj4gPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+ID4gT1RIRVIgREVBTElOR1MKPiA+ICsg KiBJTiBUSEUgU09GVFdBUkUuCj4gPiArICoKPiA+ICsgKiBBdXRob3JzOgo+ID4gKyAqICBQYXVs IEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29tPgo+ID4gKyAq Lwo+ID4gKwo+ID4gKyNpbmNsdWRlICJjb25maWcuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSA8ZmNu dGwuaD4KPiA+ICsjaW5jbHVkZSA8cGl4bWFuLmg+Cj4gPiArI2luY2x1ZGUgPGNhaXJvLmg+Cj4g PiArCj4gPiArI2luY2x1ZGUgImlndC5oIgo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIFNFQ1RJT046 aWd0X2ZyYW1lCj4gPiArICogQHNob3J0X2Rlc2NyaXB0aW9uOiBMaWJyYXJ5IGZvciBmcmFtZS1y ZWxhdGVkIHRlc3RzCj4gPiArICogQHRpdGxlOiBGcmFtZQo+ID4gKyAqIEBpbmNsdWRlOiBpZ3Rf ZnJhbWUuaAo+ID4gKyAqCj4gPiArICogVGhpcyBsaWJyYXJ5IGNvbnRhaW5zIGhlbHBlcnMgZm9y IGZyYW1lLXJlbGF0ZWQgdGVzdHMuIFRoaXMKPiA+IGluY2x1ZGVzIGNvbW1vbgo+ID4gKyAqIGZy YW1lIGR1bXBpbmcgYXMgd2VsbCBhcyBmcmFtZSBjb21wYXJpc29uIGhlbHBlcnMuCj4gPiArICov Cj4gPiArCj4gPiArLyoqCj4gPiArICogaWd0X2ZyYW1lX2R1bXBfaXNfZW5hYmxlZDoKPiA+ICsg Kgo+ID4gKyAqIEdldCB3aGV0aGVyIGZyYW1lIGR1bXBpbmcgaXMgZW5hYmxlZC4KPiA+ICsgKgo+ ID4gKyAqIFJldHVybnM6IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgZnJhbWUgZHVtcGlu ZyBpcyBlbmFibGVkCj4gPiArICovCj4gPiArYm9vbCBpZ3RfZnJhbWVfZHVtcF9pc19lbmFibGVk KHZvaWQpCj4gPiArewo+ID4gKwlyZXR1cm4gZnJhbWVfZHVtcF9wYXRoICE9IE5VTEw7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGlndF93cml0ZV9mcmFtZV90b19wbmcoY2Fpcm9fc3Vy ZmFjZV90ICpzdXJmYWNlLCBpbnQKPiA+IGZkLAo+ID4gKwkJCQkgICBjb25zdCBjaGFyICpxdWFs aWZpZXIsIGNvbnN0Cj4gPiBjaGFyICpzdWZmaXgpCj4gPiArewo+ID4gKwljaGFyIHBhdGhbUEFU SF9NQVhdOwo+ID4gKwljb25zdCBjaGFyICp0ZXN0X25hbWU7Cj4gPiArCWNvbnN0IGNoYXIgKnN1 YnRlc3RfbmFtZTsKPiA+ICsJY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzOwo+ID4gKwlpbnQgaW5kZXg7 Cj4gPiArCj4gPiArCXRlc3RfbmFtZSA9IGlndF90ZXN0X25hbWUoKTsKPiA+ICsJc3VidGVzdF9u YW1lID0gaWd0X3N1YnRlc3RfbmFtZSgpOwo+ID4gKwo+ID4gKwlpZiAoc3VmZml4KQo+ID4gKwkJ c25wcmludGYocGF0aCwgUEFUSF9NQVgsICIlcy9mcmFtZS0lcy0lcy0lcy0KPiA+ICVzLnBuZyIs Cj4gPiArCQkJIGZyYW1lX2R1bXBfcGF0aCwgdGVzdF9uYW1lLCBzdWJ0ZXN0X25hbWUsCj4gPiBx dWFsaWZpZXIsCj4gPiArCQkJIHN1ZmZpeCk7Cj4gPiArCWVsc2UKPiA+ICsJCXNucHJpbnRmKHBh dGgsIFBBVEhfTUFYLCAiJXMvZnJhbWUtJXMtJXMtJXMucG5nIiwKPiA+ICsJCQkgZnJhbWVfZHVt cF9wYXRoLCB0ZXN0X25hbWUsIHN1YnRlc3RfbmFtZSwKPiA+IHF1YWxpZmllcik7Cj4gPiArCj4g PiArCWlndF9kZWJ1ZygiRHVtcGluZyAlcyBmcmFtZSB0byAlcy4uLlxuIiwgcXVhbGlmaWVyLCBw YXRoKTsKPiA+ICsKPiA+ICsJc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmcoc3Vy ZmFjZSwgcGF0aCk7Cj4gPiArCj4gPiArCWlndF9hc3NlcnRfZXEoc3RhdHVzLCBDQUlST19TVEFU VVNfU1VDQ0VTUyk7Cj4gPiArCj4gPiArCWluZGV4ID0gc3RybGVuKHBhdGgpOwo+ID4gKwo+ID4g KwlpZiAoZmQgPj0gMCAmJiBpbmRleCA8IChQQVRIX01BWCAtIDEpKSB7Cj4gPiArCQlwYXRoW2lu ZGV4KytdID0gJ1xuJzsKPiA+ICsJCXBhdGhbaW5kZXhdID0gJ1wwJzsKPiA+ICsKPiA+ICsJCXdy aXRlKGZkLCBwYXRoLCBzdHJsZW4ocGF0aCkpOwo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gKy8q Kgo+ID4gKyAqIGlndF93cml0ZV9jb21wYXJlZF9mcmFtZXNfdG9fcG5nOgo+ID4gKyAqIEByZWZl cmVuY2U6IFRoZSByZWZlcmVuY2UgY2Fpcm8gc3VyZmFjZQo+ID4gKyAqIEBjYXB0dXJlOiBUaGUg Y2FwdHVyZWQgY2Fpcm8gc3VyZmFjZQo+ID4gKyAqIEByZWZlcmVuY2Vfc3VmZml4OiBUaGUgc3Vm Zml4IHRvIGdpdmUgdG8gdGhlIHJlZmVyZW5jZSBwbmcgZmlsZQo+ID4gKyAqIEBjYXB0dXJlX3N1 ZmZpeDogVGhlIHN1ZmZpeCB0byBnaXZlIHRvIHRoZSBjYXB0dXJlIHBuZyBmaWxlCj4gPiArICoK PiA+ICsgKiBXcml0ZSBwcmV2aW91c2x5IGNvbXBhcmVkIGZyYW1lcyB0byBwbmcgZmlsZXMuCj4g PiArICovCj4gPiArdm9pZCBpZ3Rfd3JpdGVfY29tcGFyZWRfZnJhbWVzX3RvX3BuZyhjYWlyb19z dXJmYWNlX3QgKnJlZmVyZW5jZSwKPiA+ICsJCQkJICAgICAgY2Fpcm9fc3VyZmFjZV90ICpjYXB0 dXJlLAo+ID4gKwkJCQkgICAgICBjb25zdCBjaGFyICpyZWZlcmVuY2Vfc3VmZml4LAo+ID4gKwkJ CQkgICAgICBjb25zdCBjaGFyICpjYXB0dXJlX3N1ZmZpeCkKPiA+ICt7Cj4gPiArCWNoYXIgKmlk Owo+ID4gKwljb25zdCBjaGFyICp0ZXN0X25hbWU7Cj4gPiArCWNvbnN0IGNoYXIgKnN1YnRlc3Rf bmFtZTsKPiA+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsKPiA+ICsJaW50IGZkID0gLTE7Cj4gPiAr Cj4gPiArCWlmICghaWd0X2ZyYW1lX2R1bXBfaXNfZW5hYmxlZCgpKQo+ID4gKwkJcmV0dXJuOwo+ ID4gKwo+ID4gKwlpZCA9IGdldGVudigiSUdUX0ZSQU1FX0RVTVBfSUQiKTsKPiA+ICsKPiA+ICsJ dGVzdF9uYW1lID0gaWd0X3Rlc3RfbmFtZSgpOwo+ID4gKwlzdWJ0ZXN0X25hbWUgPSBpZ3Rfc3Vi dGVzdF9uYW1lKCk7Cj4gPiArCj4gPiArCWlmIChpZCkKPiA+ICsJCXNucHJpbnRmKHBhdGgsIFBB VEhfTUFYLCAiJXMvZnJhbWUtJXMtJXMtJXMudHh0IiwKPiA+ICsJCQkgZnJhbWVfZHVtcF9wYXRo LCB0ZXN0X25hbWUsIHN1YnRlc3RfbmFtZSwKPiA+IGlkKTsKPiA+ICsJZWxzZQo+ID4gKwkJc25w cmludGYocGF0aCwgUEFUSF9NQVgsICIlcy9mcmFtZS0lcy0lcy50eHQiLAo+ID4gKwkJCSBmcmFt ZV9kdW1wX3BhdGgsIHRlc3RfbmFtZSwgc3VidGVzdF9uYW1lKTsKPiA+ICsKPiA+ICsJZmQgPSBv cGVuKHBhdGgsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMsIDA2NDQpOwo+ID4gKwlpZ3Rf YXNzZXJ0KGZkID49IDApOwo+ID4gKwo+ID4gKwlpZ3RfZGVidWcoIldyaXRpbmcgZHVtcCByZXBv cnQgdG8gJXMuLi5cbiIsIHBhdGgpOwo+ID4gKwo+ID4gKwlpZ3Rfd3JpdGVfZnJhbWVfdG9fcG5n KHJlZmVyZW5jZSwgZmQsICJyZWZlcmVuY2UiLAo+ID4gcmVmZXJlbmNlX3N1ZmZpeCk7Cj4gPiAr CWlndF93cml0ZV9mcmFtZV90b19wbmcoY2FwdHVyZSwgZmQsICJjYXB0dXJlIiwKPiA+IGNhcHR1 cmVfc3VmZml4KTsKPiA+ICsKPiA+ICsJY2xvc2UoZmQpOwo+ID4gK30KPiA+IGRpZmYgLS1naXQg YS9saWIvaWd0X2ZyYW1lLmggYi9saWIvaWd0X2ZyYW1lLmgKPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gPiBpbmRleCAwMDAwMDAwMC4uZWM2YTE2NDMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsr KyBiL2xpYi9pZ3RfZnJhbWUuaAo+ID4gQEAgLTAsMCArMSw0MyBAQAo+ID4gKy8qCj4gPiArICog Q29weXJpZ2h0IMKpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KPiA+ICsgKgo+ID4gKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4g PiBvYnRhaW5pbmcgYQo+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPiA+ICJTb2Z0d2FyZSIpLAo+ID4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 Cj4gPiBsaW1pdGF0aW9uCj4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4gPiBzdWJsaWNlbnNlLAo+ID4gKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0bwo+ ID4gd2hvbSB0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZwo+ID4gY29uZGl0aW9uczoKPiA+ICsgKgo+ID4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcKPiA+IHRoZSBuZXh0Cj4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gPiBwb3J0aW9ucyBvZiB0aGUKPiA+ICsgKiBTb2Z0 d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4gRVhQUkVTUyBPUgo+ID4gKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+IE1F UkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPiA+IEVWRU5UIFNIQUxMCj4gPiArICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCj4gPiBE QU1BR0VTIE9SIE9USEVSCj4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4gPiBBUklTSU5HCj4gPiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+ ID4gT1RIRVIgREVBTElOR1MKPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPiArICoKPiA+ICsg KiBBdXRob3JzOgo+ID4gKyAqICBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lA bGludXguaW50ZWwuY29tPgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpZm5kZWYgSUdUX0ZSQU1FX0gK PiA+ICsjZGVmaW5lIElHVF9GUkFNRV9ICj4gPiArCj4gPiArI2lmZGVmIEhBVkVfQ09ORklHX0gK PiA+ICsjaW5jbHVkZSAiY29uZmlnLmgiCj4gPiArI2VuZGlmCj4gPiArCj4gPiArI2luY2x1ZGUg ImlndC5oIgo+ID4gKyNpbmNsdWRlIDxzdGRib29sLmg+Cj4gPiArCj4gPiArYm9vbCBpZ3RfZnJh bWVfZHVtcF9pc19lbmFibGVkKHZvaWQpOwo+ID4gK3ZvaWQgaWd0X3dyaXRlX2NvbXBhcmVkX2Zy YW1lc190b19wbmcoY2Fpcm9fc3VyZmFjZV90ICpyZWZlcmVuY2UsCj4gPiArCQkJCSAgICAgIGNh aXJvX3N1cmZhY2VfdCAqY2FwdHVyZSwKPiA+ICsJCQkJICAgICAgY29uc3QgY2hhciAqcmVmZXJl bmNlX3N1ZmZpeCwKPiA+ICsJCQkJICAgICAgY29uc3QgY2hhciAqY2FwdHVyZV9zdWZmaXgpOwo+ ID4gKwo+ID4gKyNlbmRpZgo+ID4gLS0gCj4gPiAyLjEzLjIKPiA+IAo+ID4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCj4gCi0tIApQ YXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29tPgpJbnRl bCBGaW5sYW5kIE95IC0gQklDIDAzNTc2MDYtNCAtIFdlc3RlbmRpbmthdHUgNywgMDIxNjAgRXNw b28sIEZpbmxhbmQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==