From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 28F3989EB8 for ; Tue, 15 Jun 2021 05:46:01 +0000 (UTC) From: "Shankar, Uma" Date: Tue, 15 Jun 2021 05:45:56 +0000 Message-ID: References: <20210603122027.27330-1-venkata.sai.patnana@intel.com> <20210603122027.27330-15-venkata.sai.patnana@intel.com> In-Reply-To: <20210603122027.27330-15-venkata.sai.patnana@intel.com> Content-Language: en-US MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 15/24] tests/kms_dither: New IGT to validate crtc Dithering List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Patnana, Venkata Sai" , "igt-dev@lists.freedesktop.org" , "Modem, Bhanuprakash" , "Varide, Nischal" List-ID: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogaWd0LWRldiA8aWd0LWRl di1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4gT24gQmVoYWxmIE9mDQo+IHZlbmthdGEu c2FpLnBhdG5hbmFAaW50ZWwuY29tDQo+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDMsIDIwMjEgNTo1 MCBQTQ0KPiBUbzogaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU3ViamVjdDogW2ln dC1kZXZdIFtQQVRDSCBpLWctdCAxNS8yNF0gdGVzdHMva21zX2RpdGhlcjogTmV3IElHVCB0byB2 YWxpZGF0ZSBjcnRjDQo+IERpdGhlcmluZw0KPiANCj4gRnJvbTogQmhhbnVwcmFrYXNoIE1vZGVt IDxiaGFudXByYWthc2gubW9kZW1AaW50ZWwuY29tPg0KPiANCj4gTWFueSBvZiB0aGUgZGlzcGxh eSBkZXZpY2VzIGhhdmUgY29sb3IgZm9ybWF0IHN1cHBvcnQgbGVzcyB0aGFuIHRoZSBjb2xvciBm b3JtYXQgb2YNCj4gdGhlIGlucHV0IGRhdGEgKEV4OiA4LWJpdCBpbnB1dCBkYXRhIGFuZCA2LWJp dCBkaXNwbGF5IGNvbG9yIGRlcHRoKS4gVGhlbiB0aGUgaW5wdXQgZGF0YQ0KPiB3aWxsIGJlIGVp dGhlciB0cnVuY2F0ZWQgb3Igcm91bmRlZCwgYnV0IHRoaXMgYXBwcm9hY2ggdXN1YWxseSBjYXVz ZXMgbG9zcyBvZiBkZXRhaWwNCj4gYW5kIGFsc28gcHJvZHVjZSBsYXJnZSBiYW5kZWQgYXJlYXMg b2YgYSBzaW5nbGUgY29sb3IgdGhhdCBzaWduaWZpY2FudGx5IGRpZmZlcnMgZnJvbQ0KPiB0aGUg b3JpZ2luYWwgaW1hZ2UuDQo+IA0KPiBEaXRoZXJpbmcgaXMgYSB0ZWNobmlxdWUgdXNlZCB0byBl bmhhbmNlIHRoZXNlIGNvbG9ycyBieSBjcmVhdGluZyB0aGUgaWxsdXNpb24gb2YNCj4gc21vb3Ro bmVzcyBieSBhZGp1c3RpbmcgdGhlIG5lYXJieSBwaXhlbCBjb2xvci4NCj4gRm9yIEVnOiBDb252 ZXJ0aW5nIDgtYml0IHRvIDYtYml0IGJ5IG1vZGlmeWluZyB0aGUgcGl4ZWwgaW5mb3JtYXRpb24u DQo+IA0KPiBEaXRoZXJpbmcgc2hvdWxkIGJlIGVuYWJsZWQgd2hlbiBhIHBhbmVsIGNvbG9yIGRl cHRoIGlzIGxvd2VyIHRoYW4gdGhlIGNvbG9yIGRlcHRoDQo+IG9mIHRoZSBmcmFtZWJ1ZmZlci4N Cj4gDQo+IEV2ZW4gdGhvdWdoIGZlYXR1cmUgRGl0aGVyaW5nIGlzIHRoZXJlIHNpbmNlIGxlZ2Fj eSwgdGhlcmUgaXMgbm8gc3BlY2lmaWMgSUdUIGZvciB0aGlzLg0KPiBUaGlzIHBhdGNoIHdpbGwg Y3JlYXRlIE5ldyBJR1QgZm9yIERpdGhlcmluZy4NCj4gQW5kIGJlbG93IGlzIHRoZSB0cnV0aCB0 YWJsZSBmb3IgQ1JUQyBEaXRoZXJpbmcuDQo+IA0KPiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0t LS18LS0tLS0tLS0tLS0tLXwNCj4gfCAgRnJhbWUgYnVmZmVyICB8ICBQYW5lbCAgfCAgRGl0aGVy aW5nICB8DQo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfA0KPiB8 ICAgICAgOCBCUEMgICAgIHwgIDYgQlBDICB8ICAgICBZZXMgICAgIHwNCj4gfC0tLS0tLS0tLS0t LS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18DQo+IHwgICAgICA4IEJQQyAgICAgfCAgOCBC UEMgIHwgICAgIE5vICAgICAgfA0KPiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0t LS0tLS0tLXwNCj4gfCAgICAgIDggQlBDICAgICB8IDEwIEJQQyAgfCAgICAgTm8gICAgICB8DQo+ IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfA0KPiB8ICAgICAxMCBC UEMgICAgIHwgIDYgQlBDICB8ICAgICBZZXMgICAgIHwNCj4gfC0tLS0tLS0tLS0tLS0tLS18LS0t LS0tLS0tfC0tLS0tLS0tLS0tLS18DQo+IHwgICAgIDEwIEJQQyAgICAgfCAgOCBCUEMgIHwgICAg IFllcyAgICAgfA0KPiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwN Cj4gfCAgICAgMTAgQlBDICAgICB8IDEwIEJQQyAgfCAgICAgTm8gICAgICB8DQo+IHwtLS0tLS0t LS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfA0KPiB8ICAgICAxNiBCUEMgICAgIHwg IDYgQlBDICB8ICAgICBZZXMgICAgIHwNCj4gfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0t LS0tLS0tLS0tLS18DQo+IHwgICAgIDE2IEJQQyAgICAgfCAgOCBCUEMgIHwgICAgIFllcyAgICAg fA0KPiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwNCj4gfCAgICAg MTYgQlBDICAgICB8IDEwIEJQQyAgfCAgICAgWWVzICAgICB8DQo+IHwtLS0tLS0tLS0tLS0tLS0t fC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfA0KDQpUaGlzIHRlc3QgZGVwZW5kcyBvbiB0aGUgY29y cmVzcG9uZGluZyBrZXJuZWwgZHJpdmVyIGNoYW5nZXMuDQpodHRwczovL3BhdGNod29yay5mcmVl ZGVza3RvcC5vcmcvc2VyaWVzLzkxMzgzLyA6IERpdGhlcmluZyBzdXBwb3J0IA0KaHR0cHM6Ly9w YXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy83OTY2NC86IERlYnVnZnMgY2hhbmdlcw0K VGhlIGFib3ZlIGFyZSBpbiByZXZpZXcuIA0KDQpJIHdvdWxkIHN1Z2dlc3Qgd2UgY29uc29saWRh dGUgYm90aCBpbiAxIGNvbW1vbiBzZXJpZXMuDQoNCkFsc28gdGhlIGRpdGhlciBJR1QgdGVzdHMg ZGVwZW5kcyBvbiBhIGRlYnVnZnMgaW4gZHJpdmVyLiBJdCBhbHNvIG5lZWRzIHRvIGJlDQptZXJn ZWQgYW5kIGF2YWlsYWJsZSBpbiBkcml2ZXIsIGJlZm9yZSB0aGlzIHRlc3QgY2FuIGdvIGluLg0K DQpSZWdhcmRzLA0KVW1hIFNoYW5rYXINCg0KPiB2MjoNCj4gKiBGaXggY29tbWl0IG1lc3NhZ2Ug KEthcnRoaWspDQo+ICogQWRkIGZpbGUgYXV0aG9yIChLYXJ0aGlrKQ0KPiAqIER5bmFtaWMgc3Vi dGVzdHMgZm9yIHBpcGUtb3V0cHV0IGNvbWJpbmF0aW9ucyAoS2FydGhpaykNCj4gKiBVcGRhdGUg ZGVwcmVjYXRlZCBwaXBlIG5hbWUgKEthcnRoaWspDQo+ICogUmVtb3ZlIHJlZHVuZGFudCBmYiBj cmVhdGlvbiBsb2dpYyAoS2FydGhpaykNCj4gDQo+IHYzOg0KPiAqIFVzZSBmb3JfZWFjaF9waXBl X3dpdGhfdmFsaWRfb3V0cHV0KCkgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljIChCaGFudSkNCj4gKiBS ZW1vdmUgbWFnaWMgbnVtYmVycyB0byBjcmVhdGUgZmIgKEthcnRoaWspDQo+ICogRml4IHR5cG9z ICYgY29tbWVudHMgKFN3YXRpKQ0KPiANCj4gdjQ6DQo+ICogUmVtb3ZlIGV4cGxpY2l0IGlndF9y ZXF1aXJlIGZvciBhIHZhbGlkIG91dHB1dCBmb3VuZCwNCj4gICBpZ3Rfc3VidGVzdF93aXRoX2R5 bmFtaWMgd2lsbCBoYW5kbGUgdGhlIFNLSVAgKFBldHJpKQ0KPiAqIExpbWl0IHRoZSBleGVjdXRp b24gdG8gYSBzaW5nbGUgcGlwZSAoVW1hKQ0KPiANCj4gdjU6DQo+ICogU0tJUCBzdWJ0ZXN0IGZv ciBIRE1JIHdpdGggNiBCUEMgKEJoYW51KQ0KPiAqIEZpeCB0aGUgdXNhZ2Ugb2YgdmFsaWQgZm9y bWF0IHRvIGNyZWF0ZSA4IEJQQyBGcmFtZWJ1ZmZlciAoQmhhbnUpDQo+ICogQWRkIHN1cHBvcnQg Zm9yIHN1c3BlbmQvcmVzdW1lIHRlc3RzIChCaGFudSkNCj4gKiBBZGQgZmV3IGRlYnVnIHByaW50 cyAoQmhhbnUpDQo+IA0KPiB2NjoNCj4gKiBMaW1pdCB0aGUgZXhlY3V0aW9uIHRvIDggQlBDIHBh bmVscyAoVW1hKQ0KPiAqIFJlbW92ZSBzdXNwZW5kL3Jlc3VtZSB0ZXN0cyAoQmhhbnUpDQo+IA0K PiB2NzoNCj4gKiBEcm9wIG1heF9icGMgZnJvbSBkZWJ1Z2ZzIChVbWEpDQo+IA0KPiB2ODoNCj4g KiBSdW4gdGVzdCBvbiBhbGwgY29ubmVjdGVkIG91dHB1dHMgKEJoYW51KQ0KPiAqIEJlZm9yZSBl eGl0aW5nIHRoZSB0ZXN0IHJlc2V0IHRoZSAibWF4IGJwYyIgcHJvcCAoQmhhbnUpDQo+ICogQmVm b3JlIGNvbXB1dGluZyB0aGUgcmVzdWx0IGNoZWNrIHRoYXQgdGhlIGNydGMgYnBjIGlzIHVwZGF0 ZWQNCj4gICB3aXRoIHRoZSByZXF1ZXN0ZWQgb25lIChCaGFudSkNCj4gDQo+IENjOiBTd2F0aSBT aGFybWEgPHN3YXRpMi5zaGFybWFAaW50ZWwuY29tPg0KPiBDYzogS2FydGhpayBCIFMgPGthcnRo aWsuYi5zQGludGVsLmNvbT4NCj4gQ2M6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5j b20+DQo+IENjOiBOaXNjaGFsIFZhcmlkZSA8bmlzY2hhbC52YXJpZGVAaW50ZWwuY29tPg0KPiBD YzogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYt Ynk6IEJoYW51cHJha2FzaCBNb2RlbSA8YmhhbnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT4gKGNo ZXJyeQ0KPiBwaWNrZWQgZnJvbSBjb21taXQgMjRkNThmZWY1MDcwZWM3NTU3ZDhiZjc3OGIxMmJl Y2I5M2RkMzMxNSkNCj4gLS0tDQo+ICB0ZXN0cy9rbXNfZGl0aGVyLmMgfCAyNTAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICB0ZXN0cy9tZXNvbi5idWls ZCAgfCAgIDEgKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKQ0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc19kaXRoZXIuYw0KPiANCj4gZGlmZiAtLWdpdCBhL3Rl c3RzL2ttc19kaXRoZXIuYyBiL3Rlc3RzL2ttc19kaXRoZXIuYyBuZXcgZmlsZSBtb2RlIDEwMDY0 NCBpbmRleA0KPiAwMDAwMDAwMDAwLi5jMjVkNjIzZjgxDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvdGVzdHMva21zX2RpdGhlci5jDQo+IEBAIC0wLDAgKzEsMjUwIEBADQo+ICsvKg0KPiArICog Q29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24NCj4gKyAqDQo+ICsgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbg0KPiAr b2J0YWluaW5nIGENCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUNCj4gKyJTb2Z0d2FyZSIpLA0KPiArICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQNCj4g K2xpbWl0YXRpb24NCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLA0KPiArc3VibGljZW5zZSwNCj4gKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tDQo+ ICt0aGUNCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+ICsgKg0KPiArICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUNCj4gK25l eHQNCj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucw0KPiArb2YgdGhlDQo+ICsgKiBTb2Z0d2FyZS4NCj4gKyAqDQo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwNCj4gK0VYUFJFU1MgT1INCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCj4gK01FUkNIQU5UQUJJTElUWSwNCj4g KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVA0KPiArU0hBTEwNCj4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9S IEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwNCj4gK0RBTUFHRVMgT1INCj4gKyAq IE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1INCj4gK09USEVSV0lTRSwNCj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRQ0KPiArT1INCj4gKyAqIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gKyAqDQo+ICsgKiBBdXRob3JzOg0KPiArICogICAg IEJoYW51cHJha2FzaCBNb2RlbSA8YmhhbnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT4NCj4gKyAq DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImlndC5oIg0KPiArI2luY2x1ZGUgPGZjbnRsLmg+ DQo+ICsjaW5jbHVkZSA8dGVybWlvcy5oPg0KPiArI2luY2x1ZGUgPHVuaXN0ZC5oPg0KPiArDQo+ ICtJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBEaXRoZXJpbmcgYmxvY2sgc3RhdHVzIik7DQo+ ICsNCj4gKy8qIENvbm5lY3RvciBCUEMgKi8NCj4gKyNkZWZpbmUgSUdUX0NPTk5FQ1RPUl9CUENf NgkJNg0KPiArI2RlZmluZSBJR1RfQ09OTkVDVE9SX0JQQ184CQk4DQo+ICsjZGVmaW5lIElHVF9D T05ORUNUT1JfQlBDXzEwCQkxMA0KPiArI2RlZmluZSBJR1RfQ09OTkVDVE9SX0JQQ18xMgkJMTIN Cj4gKw0KPiArLyogRnJhbWVidWZmZXIgQlBDICovDQo+ICsjZGVmaW5lIElHVF9GUkFNRV9CVUZG RVJfQlBDXzgJCTgNCj4gKyNkZWZpbmUgSUdUX0ZSQU1FX0JVRkZFUl9CUENfMTAJCTEwDQo+ICsj ZGVmaW5lIElHVF9GUkFNRV9CVUZGRVJfQlBDXzE2CQkxNg0KPiArDQo+ICsvKiBDb21tb24gdGVz dCBkYXRhLiAqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgZGF0YSB7DQo+ICsJaWd0X2Rpc3BsYXlfdCBk aXNwbGF5Ow0KPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Ow0KPiArCWlndF9vdXRwdXRfdCAqb3V0 cHV0Ow0KPiArCWlndF9waXBlX3QgKnBpcGU7DQo+ICsJZHJtTW9kZU1vZGVJbmZvICptb2RlOw0K PiArCWVudW0gcGlwZSBwaXBlX2lkOw0KPiArCWludCBkcm1fZmQ7DQo+ICsJaWd0X2ZiX3QgZmI7 DQo+ICt9IGRhdGFfdDsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArCXVuc2lnbmVkIGlu dCBicGM7DQo+ICsJdW5zaWduZWQgaW50IGRpdGhlcjsNCj4gK30gZGl0aGVyX3N0YXR1c190Ow0K PiArDQo+ICsvKiBQcmVwYXJlIHRlc3QgZGF0YS4gKi8NCj4gK3N0YXRpYyB2b2lkIHByZXBhcmVf dGVzdChkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUNCj4gK3Bp cGUpIHsNCj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7DQo+ICsN Cj4gKwlkYXRhLT5waXBlX2lkID0gcGlwZTsNCj4gKwlkYXRhLT5waXBlID0gJmRhdGEtPmRpc3Bs YXkucGlwZXNbZGF0YS0+cGlwZV9pZF07DQo+ICsJaWd0X2Fzc2VydChkYXRhLT5waXBlKTsNCj4g Kw0KPiArCWlndF9kaXNwbGF5X3Jlc2V0KGRpc3BsYXkpOw0KPiArDQo+ICsJZGF0YS0+b3V0cHV0 ID0gb3V0cHV0Ow0KPiArCWlndF9hc3NlcnQoZGF0YS0+b3V0cHV0KTsNCj4gKw0KPiArCWRhdGEt Pm1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKGRhdGEtPm91dHB1dCk7DQo+ICsJaWd0X2Fzc2Vy dChkYXRhLT5tb2RlKTsNCj4gKw0KPiArCWRhdGEtPnByaW1hcnkgPQ0KPiArCQlpZ3RfcGlwZV9n ZXRfcGxhbmVfdHlwZShkYXRhLT5waXBlLA0KPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsNCj4g Kw0KPiArCWlndF9vdXRwdXRfc2V0X3BpcGUoZGF0YS0+b3V0cHV0LCBkYXRhLT5waXBlX2lkKTsg fQ0KPiArDQo+ICsvKiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGRpdGhlcmluZyBmcm9t IHRoZSBjcnRjIGRlYnVnZnMuICovDQo+ICtzdGF0aWMgZGl0aGVyX3N0YXR1c190IGdldF9kaXRo ZXJfc3RhdGUoZGF0YV90ICpkYXRhKSB7DQo+ICsJY2hhciBidWZbMjU2XTsNCj4gKwljaGFyIGNy dGNfbmFtZVs3XTsNCj4gKwljaGFyICpzdGFydF9sb2M7DQo+ICsJaW50IGZkLCByZXM7DQo+ICsJ ZGl0aGVyX3N0YXR1c190IHN0YXR1czsNCj4gKw0KPiArCXNucHJpbnRmKGNydGNfbmFtZSwgNywg ImNydGMtJWQiLCBkYXRhLT5waXBlX2lkKTsNCj4gKwlmZCA9IGlndF9kZWJ1Z2ZzX29wZW4oZGF0 YS0+ZHJtX2ZkLCBjcnRjX25hbWUsIE9fUkRPTkxZKTsNCj4gKwlpZ3RfYXNzZXJ0KGZkID49IDAp Ow0KPiArDQo+ICsJcmVzID0gaWd0X2RlYnVnZnNfc2ltcGxlX3JlYWQoZmQsICJkaXRoZXIiLCBi dWYsIHNpemVvZihidWYpKTsNCj4gKwlpZ3RfcmVxdWlyZShyZXMgPiAwKTsNCj4gKwljbG9zZShm ZCk7DQo+ICsNCj4gKwlpZ3RfYXNzZXJ0KHN0YXJ0X2xvYyA9IHN0cnN0cihidWYsICJicGM6ICIp KTsNCj4gKwlpZ3RfYXNzZXJ0X2VxKHNzY2FuZihzdGFydF9sb2MsICJicGM6ICV1IiwgJnN0YXR1 cy5icGMpLCAxKTsNCj4gKw0KPiArCWlndF9hc3NlcnQoc3RhcnRfbG9jID0gc3Ryc3RyKGJ1Ziwg IkRpdGhlcjogIikpOw0KPiArCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN0YXJ0X2xvYywgIkRpdGhl cjogJXUiLCAmc3RhdHVzLmRpdGhlciksIDEpOw0KPiArDQo+ICsJcmV0dXJuIHN0YXR1czsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQgdGVzdF9kaXRoZXJpbmcoZGF0YV90ICpkYXRhLCBlbnVt IHBpcGUgcGlwZSwNCj4gKwkJCSAgIGlndF9vdXRwdXRfdCAqb3V0cHV0LA0KPiArCQkJICAgaW50 IGZiX2JwYywgaW50IGZiX2Zvcm1hdCwNCj4gKwkJCSAgIGludCBvdXRwdXRfYnBjKQ0KPiArew0K PiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsNCj4gKwlkaXRoZXJf c3RhdHVzX3Qgc3RhdHVzOw0KPiArCWludCBicGM7DQo+ICsNCj4gKwlpZ3RfaW5mbygiRGl0aGVy aW5nIHRlc3QgZXhlY3V0aW9uIG9uICVzIFBJUEVfJXNcbiIsDQo+ICsJCQlvdXRwdXQtPm5hbWUs IGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKTsNCj4gKwlwcmVwYXJlX3Rlc3QoZGF0YSwgb3V0cHV0 LCBwaXBlKTsNCj4gKw0KPiArCWlndF9hc3NlcnQoaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQs IGRhdGEtPm1vZGUtPmhkaXNwbGF5LA0KPiArCQkJCSBkYXRhLT5tb2RlLT52ZGlzcGxheSwgZmJf Zm9ybWF0LA0KPiArCQkJCSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAmZGF0YS0+ZmIpKTsN Cj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZkYXRhLT5mYik7DQo+ICsJaWd0 X3BsYW5lX3NldF9zaXplKGRhdGEtPnByaW1hcnksIGRhdGEtPm1vZGUtPmhkaXNwbGF5LA0KPiAr ZGF0YS0+bW9kZS0+dmRpc3BsYXkpOw0KPiArDQo+ICsJYnBjID0gaWd0X291dHB1dF9nZXRfcHJv cChvdXRwdXQsIElHVF9DT05ORUNUT1JfTUFYX0JQQyk7DQo+ICsJaWd0X291dHB1dF9zZXRfcHJv cF92YWx1ZShkYXRhLT5vdXRwdXQsIElHVF9DT05ORUNUT1JfTUFYX0JQQywNCj4gb3V0cHV0X2Jw Yyk7DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19hdG9taWMg PyBDT01NSVRfQVRPTUlDIDoNCj4gK0NPTU1JVF9MRUdBQ1kpOw0KPiArDQo+ICsJLyoNCj4gKwkg KiBDaGVjayB0aGUgc3RhdHVzIG9mIERpdGhlcmluZyBibG9jazoNCj4gKwkgKg0KPiArCSAqIFBy ZXNlcnZlIHRoZSByZXN1bHQgJiBjb21wdXRlIGxhdGVyIChhZnRlciBjbGVhbi11cCkuDQo+ICsJ ICogSWYgZmJfYnBjIGlzIGdyZWF0ZXIgdGhhbiBvdXRwdXRfYnBjLCBEaXRoZXJpbmcgc2hvdWxk IGJlIGVuYWJsZWQNCj4gKwkgKiBFbHNlIGRpc2FibGVkDQo+ICsJICovDQo+ICsJc3RhdHVzID0g Z2V0X2RpdGhlcl9zdGF0ZShkYXRhKTsNCj4gKw0KPiArCWlndF9kZWJ1ZygiRkIgQlBDOiVkLCBQ YW5lbCBCUEM6JWQsIFBpcGUgQlBDOiVkLCBFeHBlY3RlZCBEaXRoZXI6JXMsDQo+IEFjdHVhbCBy ZXN1bHQ6JXNcbiIsDQo+ICsJCSAgZmJfYnBjLCBvdXRwdXRfYnBjLCBzdGF0dXMuYnBjLA0KPiAr CQkgIChmYl9icGMgPiBvdXRwdXRfYnBjKSA/ICJFbmFibGUiOiAiRGlzYWJsZSIsDQo+ICsJCSAg c3RhdHVzLmRpdGhlciA/ICJFbmFibGUiOiAiRGlzYWJsZSIpOw0KPiArDQo+ICsgICAgICAgLyoN Cj4gKwkqIFdlIG11c3QgdXBkYXRlIHRoZSBDb25uZWN0b3IgbWF4X2JwYyBwcm9wZXJ0eSBiYWNr DQo+ICsJKiBPdGhlcndpc2UsIHByZXZpb3VzbHkgdXBkYXRlZCB2YWx1ZSB3aWxsIHN0YXkgZm9y ZXZlciBhbmQNCj4gKwkqIG1heSBjYXVzZSB0aGUgZmFpbHVyZXMgZm9yIG5leHQvb3RoZXIgc3Vi dGVzdHMuDQo+ICsJKi8NCj4gKwlpZ3Rfb3V0cHV0X3NldF9wcm9wX3ZhbHVlKGRhdGEtPm91dHB1 dCwgSUdUX0NPTk5FQ1RPUl9NQVhfQlBDLA0KPiBicGMpOw0KPiArCWlndF9wbGFuZV9zZXRfZmIo ZGF0YS0+cHJpbWFyeSwgTlVMTCk7DQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJ UEVfTk9ORSk7DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19h dG9taWMgPyBDT01NSVRfQVRPTUlDIDoNCj4gQ09NTUlUX0xFR0FDWSk7DQo+ICsJaWd0X3JlbW92 ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYik7DQo+ICsNCj4gKwkvKiBDaGVjayBpZiBjcnRj IGJwYyBpcyB1cGRhdGVkIHdpdGggcmVxdWVzdGVkIG9uZS4gKi8NCj4gKwlpZ3RfcmVxdWlyZV9m KChzdGF0dXMuYnBjID09IG91dHB1dF9icGMpLA0KPiArCQkJIiVzIGNhbiBzdXBwb3J0IG1heCAl dS1icGMsIGJ1dCByZXF1ZXN0ZWQgJWQtYnBjXG4iLA0KPiArCQkJCW91dHB1dC0+bmFtZSwgc3Rh dHVzLmJwYywgb3V0cHV0X2JwYyk7DQo+ICsNCj4gKwkvKiBDb21wdXRlIHRoZSByZXN1bHQuICov DQo+ICsJaWYgKGZiX2JwYyA+IG91dHB1dF9icGMpDQo+ICsJCWlndF9hc3NlcnRfZihzdGF0dXMu ZGl0aGVyLCAiKGZiXyVkYnBjID4gb3V0cHV0XyVkYnBjKTogRGl0aGVyDQo+IHNob3VsZCBiZSBl bmFibGVkXG4iLA0KPiArCQkJCWZiX2JwYywgb3V0cHV0X2JwYyk7DQo+ICsJZWxzZQ0KPiArCQlp Z3RfYXNzZXJ0X2YoIXN0YXR1cy5kaXRoZXIsICIoZmJfJWRicGMgPD0gb3V0cHV0XyVkYnBjKTog RGl0aGVyDQo+IHNob3VsZCBiZSBkaXNhYmxlZFxuIiwNCj4gKwkJCQlmYl9icGMsIG91dHB1dF9i cGMpOw0KPiArDQo+ICsJcmV0dXJuOw0KPiArfQ0KPiArDQo+ICsvKiBSZXR1cm5zIHRydWUgaWYg YW4gb3V0cHV0IHN1cHBvcnRzIG1heCBicGMgcHJvcGVydHkgJiBtYXhfYnBjID49DQo+ICtyZXF1 ZXN0ZWQuICovIHN0YXRpYyBib29sIGlzX3N1cHBvcnRlZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwg aW50IGJwYykgew0KPiArICAgICAgICByZXR1cm4gaWd0X291dHB1dF9oYXNfcHJvcChvdXRwdXQs IElHVF9DT05ORUNUT1JfTUFYX0JQQykgJiYNCj4gKwkJKGlndF9vdXRwdXRfZ2V0X3Byb3Aob3V0 cHV0LCBJR1RfQ09OTkVDVE9SX01BWF9CUEMpID49IGJwYyk7DQo+IH0NCj4gKw0KPiArc3RhdGlj IHZvaWQNCj4gK3J1bl9kaXRoZXJfdGVzdChkYXRhX3QgKmRhdGEsIGludCBmYl9icGMsIGludCBm Yl9mb3JtYXQsIGludA0KPiArb3V0cHV0X2JwYykgew0KPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0 Ow0KPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsNCj4gKw0KPiAr CWZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGlzcGxheSwgb3V0cHV0KSB7DQo+ICsJCWVudW0g cGlwZSBwaXBlOw0KPiArDQo+ICsJCWlmICghaXNfc3VwcG9ydGVkKG91dHB1dCwgb3V0cHV0X2Jw YykpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQlpZiAoKHN0cnN0cihvdXRwdXQtPm5hbWUs ICJIRE1JIikgIT0gTlVMTCkgJiYNCj4gKwkJICAgIChvdXRwdXRfYnBjID09IElHVF9DT05ORUNU T1JfQlBDXzYpKQ0KPiArCQkJY29udGludWU7DQo+ICsNCj4gKwkJZm9yX2VhY2hfcGlwZShkaXNw bGF5LCBwaXBlKSB7DQo+ICsJCQlpZiAoaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKHBpcGUsIG91 dHB1dCkpIHsNCj4gKwkJCQlpZ3RfZHluYW1pY19mKCIlcy1waXBlLSVzIiwgb3V0cHV0LT5uYW1l LA0KPiBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkNCj4gKwkJCQkJdGVzdF9kaXRoZXJpbmcoZGF0 YSwgcGlwZSwgb3V0cHV0LCBmYl9icGMsDQo+ICsJCQkJCQkJZmJfZm9ybWF0LCBvdXRwdXRfYnBj KTsNCj4gKw0KPiArCQkJCS8qIE9uZSBwaXBlIGlzIGVub3VnaCAqLw0KPiArCQkJCWJyZWFrOw0K PiArCQkJfQ0KPiArCQl9DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtpZ3RfbWFpbg0KPiArew0KPiAr CXN0cnVjdCB7DQo+ICsJCWludCBmYl9icGM7DQo+ICsJCWludCBmb3JtYXQ7DQo+ICsJCWludCBv dXRwdXRfYnBjOw0KPiArCX0gdGVzdHNbXSA9IHsNCj4gKwkJeyBJR1RfRlJBTUVfQlVGRkVSX0JQ Q184LCBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPiBJR1RfQ09OTkVDVE9SX0JQQ182IH0sDQo+ICsJ CXsgSUdUX0ZSQU1FX0JVRkZFUl9CUENfOCwgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gSUdUX0NP Tk5FQ1RPUl9CUENfOCB9LA0KPiArCX07DQo+ICsJaW50IGk7DQo+ICsJZGF0YV90IGRhdGEgPSB7 IDAgfTsNCj4gKw0KPiArCWlndF9maXh0dXJlIHsNCj4gKwkJZGF0YS5kcm1fZmQgPSBkcm1fb3Bl bl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7DQo+ICsJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBo aWNzX21vZGUoKTsNCj4gKw0KPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXks IGRhdGEuZHJtX2ZkKTsNCj4gKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlz cGxheSk7DQo+ICsJfQ0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGVzdHMp OyBpKyspIHsNCj4gKwkJaWd0X2Rlc2NyaWJlX2YoIkZyYW1lYnVmZmVyIEJQQzolZCwgUGFuZWwg QlBDOiVkLCBFeHBlY3RlZA0KPiBEaXRoZXI6JXNcbiIsDQo+ICsJCQkgICAgICAgdGVzdHNbaV0u ZmJfYnBjLCB0ZXN0c1tpXS5vdXRwdXRfYnBjLA0KPiArCQkJICAgICAgICh0ZXN0c1tpXS5mYl9i cGMgPiB0ZXN0c1tpXS5vdXRwdXRfYnBjKSA/DQo+ICsJCQkJCQkJIkVuYWJsZSI6ICJEaXNhYmxl Iik7DQo+ICsNCj4gKwkJaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljX2YoIkZCLSVkQlBDLVZzLVBh bmVsLSVkQlBDIiwNCj4gKwkJCQl0ZXN0c1tpXS5mYl9icGMsIHRlc3RzW2ldLm91dHB1dF9icGMp DQo+ICsJCQlydW5fZGl0aGVyX3Rlc3QoJmRhdGEsDQo+ICsJCQkJCXRlc3RzW2ldLmZiX2JwYywN Cj4gKwkJCQkJdGVzdHNbaV0uZm9ybWF0LA0KPiArCQkJCQl0ZXN0c1tpXS5vdXRwdXRfYnBjKTsN Cj4gKwl9DQo+ICsNCj4gKwlpZ3RfZml4dHVyZSB7DQo+ICsJCWlndF9kaXNwbGF5X2ZpbmkoJmRh dGEuZGlzcGxheSk7DQo+ICsJfQ0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVp bGQgYi90ZXN0cy9tZXNvbi5idWlsZCBpbmRleCAxOWNjNGViZTBkLi5mZjM5NzkyMDdkDQo+IDEw MDY0NA0KPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZA0KPiArKysgYi90ZXN0cy9tZXNvbi5idWls ZA0KPiBAQCAtMjgsNiArMjgsNyBAQCB0ZXN0X3Byb2dzID0gWw0KPiAgCSdrbXNfY3Vyc29yX2Ny YycsDQo+ICAJJ2ttc19jdXJzb3JfZWRnZV93YWxrJywNCj4gIAkna21zX2N1cnNvcl9sZWdhY3kn LA0KPiArCSdrbXNfZGl0aGVyJywNCj4gIAkna21zX2RwX2F1eF9kZXYnLA0KPiAgCSdrbXNfZHBf ZHNjJywNCj4gIAkna21zX2RwX3RpbGVkX2Rpc3BsYXknLA0KPiAtLQ0KPiAyLjI1LjENCj4gDQo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IGlndC1k ZXYgbWFpbGluZyBsaXN0DQo+IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==