From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id E23396E7EA for ; Fri, 14 Sep 2018 09:42:31 +0000 (UTC) Date: Fri, 14 Sep 2018 12:40:09 +0300 From: Imre Deak Message-ID: <20180914094009.GA31786@ideak-desk.fi.intel.com> References: <20180907155157.5798-1-gwan-gyeong.mun@intel.com> <20180907155157.5798-5-gwan-gyeong.mun@intel.com> <20180914085605.GK11082@phenom.ffwll.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180914085605.GK11082@phenom.ffwll.local> Subject: Re: [igt-dev] [i-g-t,v4 4/4] kms_plane: Add clipping subtests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: imre.deak@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter Cc: igt-dev@lists.freedesktop.org, juha-pekka.heikkila@intel.com List-ID: T24gRnJpLCBTZXAgMTQsIDIwMTggYXQgMTA6NTY6MDVBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIFNlcCAwNywgMjAxOCBhdCAwNjo1MTo1N1BNICswMzAwLCBHd2FuLWd5 ZW9uZyBNdW4gd3JvdGU6Cj4gPiBGcm9tOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+ Cj4gPiAKPiA+IEFkZCBwbGFuZSBjbGlwcGluZyBzdWJ0ZXN0cyBkaXNwbGF5aW5nIGEgc2luZ2xl IGNsaXBwZWQgcGxhbmUsIHdpdGggdGhlCj4gPiBmb2xsb3dpbmcgdGVzdCBjYXNlczoKPiA+IGEp IHBsYW5lIGNvdmVyaW5nIHRoZSB3aG9sZSBzY3JlZW4sIHNvIHRoYXQgY2xpcHBpbmcgaXMgZG9u ZSBhdCBhbGwgNAo+ID4gICAgc2NyZWVuIGVkZ2VzCj4gPiBiKSBwbGFuZSBhdCBlaXRoZXIgb2Yg dGhlIDQgY29ybmVycyBvZiB0aGUgc2NyZWVuIGNsaXBwZWQsIHNvIHRoYXQgYQo+ID4gICAgNHg0 IHBpeGVsIHBhcnQgb2YgdGhlIHBsYW5lIGlzIHZpc2libGUKPiA+IGMpIHBsYW5lIGF0IGVpdGhl ciBvZiB0aGUgNCBjb3JuZXJzIG9mIHRoZSBzY3JlZW4gY2xpcHBlZCwgc28gdGhhdCBhCj4gPiAg ICAyeDIgcGl4ZWwgcGFydCBvZiB0aGUgcGxhbmUgaXMgdmlzaWJsZQo+ID4gCj4gPiBFYWNoIG9m IHRoZSBhYm92ZSBjYXNlcyBhcmUgdGVzdGVkIHdpdGggYWxsIHN1cHBvcnRlZCB0aWxpbmcgbW9k ZXMsCj4gPiByb3RhdGlvbiBkZWdyZWVzLCBkaWZmZXJpbmcgcGl4ZWwgZm9ybWF0IHNpemVzIChv bmx5IDE2IGJwcCBhbmQgMzIgYnBwCj4gPiBmb3Igbm93KSBhbmQgY2VydGFpbiBwbGFuZXMuIFdo aWxlIHRoZSBhKSBhbmQgYikgY2FzZXMgYWJvdmUgYXJlCj4gPiBzdXBwb3J0ZWQgb24gYWxsIHBs YXRmb3JtcyBjKSBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIG9uIEdMSyBhbmQgQ05MCj4gPiAod2hp Y2ggd2FzIHRoZSBwcmltYXJ5IG1vdGl2YXRpb24gZm9yIHRoaXMgdGVzdGNhc2UpLgo+ID4gCj4g PiB2MjoKPiA+IC0gQWRkIG1pc3NpbmcgcmVzZXQgZm9yIHRoZSBvdXRwdXQgcGlwZSBhZnRlciBm aW5pc2hpbmcgdGhlIHRlc3QgZm9yIGEKPiA+ICAgZ2l2ZW4gb3V0cHV0LCBmaXhpbmcgdGhlCj4g PiAgICJEUC0xIGFuZCBlRFAtMSBhcmUgYm90aCB0cnlpbmcgdG8gdXNlIHBpcGUgQSIgdHlwZSBv ZiBlcnJvcnMuCj4gPiAtIFVzZSAtRVJBTkdFIGluc3RlYWQgb2YgLUVJTlZBTCB0byBjaGVjayB0 aGUgcmV0dXJuIGNvZGUgZm9yCj4gPiAgIHVuc3VwcG9ydGVkIHBsYW5lIFggcG9zaXRpb25zLCBi YXNlZCBvbiB0aGUgbGF0ZXN0IGtlcm5lbCBjb2RlLgo+ID4gLSBBZGQgY29tbWVudCBleHBsYWlu aW5nIHRoZSBkZXBlbmRlbmNpZXMgd2hlbiBkb2luZyBhIHVuaXZlcnNhbAo+ID4gICBjb21taXQu Cj4gPiAKPiA+IHYzOiAoR3dhbi1neWVvbmcpCj4gPiAtIEFkZCBtaXNzaW5nIHJlbGVhc2Ugb2Yg ZnJhbWVidWZmZXIgb24gY3JlYXRlX2ZiX2Zvcl9tb2RlX19jbGlwcGluZ19kaXNwbGF5KCkKPiA+ ICAgZnVuY3Rpb24uCj4gPiAtIEFkZCB1c2luZyBtdWx0aSBwbGFuZXMgcGVyIHNpbmdsZSBkaXNw bGF5IGNvbW1pdCBvbiBjbGlwcGluZyB0ZXN0IG9mCj4gPiAgIDQgY29ybmVycy4gKERhbmllbCkK PiA+ICAgSXQgZW5hYmxlcyB0aGUgaW1wcm92aW5nIG9mIHRlc3Qgc3BlZWQuIElmIG51bWJlciBv ZiBwbGFuZXMgaXMgb3Zlcgo+ID4gICB0aGFuIDQsIGl0IHVzZXMgZm91ciBwbGFuZXMgZnJvbSBm aXJzdCBwbGFuZSB0byBuZXh0IGZvdXIgcGxhbmVzLgo+ID4gICAoNCBwbGFuZXMgbWFrZSB0ZXN0 aW5nIG9mIDQgY29ybmVycyBwb3NzaWJsZSBhcyAxIGRpc3BsYXkgY29tbWl0LikKPiA+ICAgSWYg bnVtYmVyIG9mIHBsYW5lcyBpcyBvdmVyIHRoYW4gMiBhbmQgbGVzcyB0aGFuIDQsIGl0IHVzZXMg dHdvIHBsYW5lcwo+ID4gICBmcm9tIGZpcnN0IHBsYW5lIHRvIG5leHQgdHdvIHBsYW5lcy4gKDIg cGxhbmVzIG1ha2UgdGVzdGluZyBvZiA0IGNvcm5lcnMKPiA+ICAgcG9zc2libGUgYXMgMiBkaXNw bGF5IGNvbW1pdC4pIFJlc3Qgb2YgY2FzZXMgaXQgdXNlcyBvbmx5IGZpcnN0IHBsYW5lLgo+ID4g ICAoMSBwbGFuZSBtYWtlcyB0ZXN0aW5nIG9mIDQgY29ybmVycyBwb3NzaWJsZSBhcyA0IGRpc3Bs YXkgY29tbWl0LikKPiA+ICAgSXQgY2hhbmdlcyB0byB1c2luZyBvZiBjZXJ0YWluIHBsYW5lcyBm cm9tIHVzaW5nIG9mIGFsbCBzdXBwb3J0ZWQgcGxhbmVzLgo+ID4gICBBbmQgYSBjdXJzb3IgcGxh bmUgY2FuIGJlIG9uZSBvZiB0ZXN0IHBsYW5lcy4KPiA+IAo+ID4gdjQ6IChJbXJlKQo+ID4gLSBD aGFuZ2UgYSBjb21taXQgc3R5bGUgdG8gbGVnYWN5IGZyb20gdW5pdmVyc2FsIHdoZW4gdGhpcyBn cmFicyBhIGNyYyBmb3IKPiA+ICAgZnJhbWVidWZmZXIuIFRoZSB1bml2ZXJzYWwgY29tbWl0IGhh cyBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBvdXRwdXRzLiBBcwo+ID4gICB0aGUgbGVnYWN5IHN0eWxl IGNvbW1pdCBkb2VzIG5vdCBhbGxvdyBjaGFuZ2luZyBvZiBwcmltYXJ5IHBsYW5lIHJvdGF0aW9u Cj4gPiAgIG9uIG5vbi1maXJzdCBjb21taXQsIHRoaXMgY2FsbHMgaWd0X2Rpc3BsYXlfcmVzZXQo KSB0byBtYWtlIGEgZmlyc3QKPiA+ICAgY29tbWl0IHN0YXRlIHByaW9yIHRvIGNhbGwgdGVzdF9n cmFiX2NyY19mb3JfZmIoKS4KPiAKPiBKdXN0IGFuIGFzaWRlOiBXaHkgbm90IGF0b21pYz8gQXRv bWljIHNob3VsZCBiZSBhIG5vdGNoIGZhc3RlciBzdGlsbCwKPiBzaW5jZSBpdCBhcHBsaWVzIGFs bCB0aGUgY2hhbmdlcyBpbiBvbmUgZ28uCj4gCj4gSSB0aGluayB3ZSBzaG91bGQgYWxzbyBoYXZl IGEgbm9uLWNvbW1pdHRpbmcgdmVyc2lvbiBvZgo+IGlndF9kaXNwbGF5X3Jlc2V0KCksIHRvIGN1 dCBhd2F5IGV2ZW4gbW9yZSBtb2Rlc2V0cy4KCkl0J3Mgb25seSBzdXBwb3J0ZWQgZm9yIEdFTj49 NSBvciBpZiBpOTE1Lm51Y2xlYXJfcGFnZWZsaXA9MS4gQnV0IHllYSwKd2UgY291bGQgdXNlIGF0 b21pYyB0byBzcGVlZCB0aGluZ3MgdXAgb24gbmV3IHBsYXRmb3JtcyBhdCBsZWFzdC4gCgo+IAo+ IEFsc28sIGlzIHRoZSBwbGFuIHRvIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjdXJzb3IgdGVz dHM/CgpJIGhhdmVuJ3QgbG9va2VkIGludG8gdGhhdC4gSSBzZWUgdGhhdCBrbXNfY3Vyc29yX2Ny YyBoYXMgc29tZSBjbGlwcGluZwp0ZXN0cyBmb3IgZXhhbXBsZSwgYnV0IHRoYXQgYW5kIGFsbCB0 aGUgb3RoZXIgZXhpc3RpbmcgY3Vyc29yIHRlc3RzIHNlZW0KdG8gYmUgbW9yZSBnZW5lcmljIHRo YW4gd2hhdCB3ZSBkbyBoZXJlLgoKPiAKPiA+IC0gVXBkYXRlIHZhcmlhYmxlIG5hbWluZyBtb3Jl IGNsZWFybHkKPiA+ICAgY2xpcF9zcXVhcmVzX2NudCAtPiBwbGFuZV9jbnQKPiA+IC0gT3B0aW1p emUgdGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmVzKCkgZnVuY3Rpb24KPiA+IC0gVXBkYXRlIGlu ZGVudGF0aW9uIGFzIGtlcm5lbCBzdHlsZQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBHd2FuLWd5ZW9uZyBN dW4gPGd3YW4tZ3llb25nLm11bkBpbnRlbC5jb20+Cj4gPiBDYzogTWlrYSBLYWhvbGEgPG1pa2Eu a2Fob2xhQGludGVsLmNvbT4KPiA+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5r aG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4gQ2M6IEp1aGEtUGVra2EgSGVpa2tpbMOkIDxqdWhh LXBla2thLmhlaWtraWxhQGludGVsLmNvbT4KPiA+IFJldmlld2VkLWJ5OiBBcmthZGl1c3ogSGls ZXIgPGFya2FkaXVzei5oaWxlckBpbnRlbC5jb20+ICh2MSkKPiA+IC0tLQo+ID4gIHRlc3RzL2tt c19wbGFuZS5jIHwgNTE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ICAxIGZpbGUgY2hhbmdlZCwgNTE2IGluc2VydGlvbnMoKykKPiA+IAo+ID4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2ttc19wbGFuZS5jIGIvdGVzdHMva21zX3BsYW5lLmMKPiA+IGluZGV4 IDNmNDhjODIxLi5hYzQ3NTM1OCAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL2ttc19wbGFuZS5jCj4g PiArKysgYi90ZXN0cy9rbXNfcGxhbmUuYwo+ID4gQEAgLTQxLDExICs0MSw0MCBAQCB0eXBlZGVm IHN0cnVjdCB7Cj4gPiAgCWludCBkcm1fZmQ7Cj4gPiAgCWlndF9kaXNwbGF5X3QgZGlzcGxheTsK PiA+ICAJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOwo+ID4gKwl1aW50MzJfdCBkZXZpZDsKPiA+ ICsJdWludDY0X3QgbWF4X2N1cnc7Cj4gPiArCXVpbnQ2NF90IG1heF9jdXJoOwo+ID4gIH0gZGF0 YV90Owo+ID4gIAo+ID4gK3R5cGVkZWYgc3RydWN0IHsKPiA+ICsJaW50IHg7Cj4gPiArCWludCB5 Owo+ID4gKwlpbnQgc2l6ZTsKPiA+ICt9IHNxdWFyZV90Owo+ID4gKwo+ID4gIHN0YXRpYyBjb2xv cl90IHJlZCAgID0geyAxLjBmLCAwLjBmLCAwLjBmIH07Cj4gPiAgc3RhdGljIGNvbG9yX3QgZ3Jl ZW4gPSB7IDAuMGYsIDEuMGYsIDAuMGYgfTsKPiA+ICtzdGF0aWMgY29sb3JfdCB5ZWxsb3cgPSB7 IDEuMGYsIDEuMGYsIDAuMGYgfTsKPiA+ICBzdGF0aWMgY29sb3JfdCBibHVlICA9IHsgMC4wZiwg MC4wZiwgMS4wZiB9Owo+ID4gK3N0YXRpYyBjb2xvcl90IHdoaXRlID0geyAxLjBmLCAxLjBmLCAx LjBmIH07Cj4gPiArc3RhdGljIHNxdWFyZV90IGNsaXBfc3F1YXJlc1s0XTsKPiA+ICsKPiA+ICsv Kgo+ID4gKyAqIFNpemUgb2YgYSBzcXVhcmUgcGxhbmUgdXNlZCB0byB0ZXN0IGNsaXBwaW5nIGF0 IHRoZSA0IGNvdXJuZXJzIG9mIHRoZQo+ID4gKyAqIGRpc3BsYXkuCj4gPiArICovCj4gPiArI2Rl ZmluZSBDTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUJNjQKPiA+ICsKPiA+ICsvKgo+ID4gKyAqIFZp c2libGUgcGxhbmUgc2l6ZSBhZnRlciBjbGlwcGluZyB0aGF0IHdvcmtzIG9uIGFsbCBwbGF0Zm9y bXMgZm9yIGFsbCBwbGFuZQo+ID4gKyAqIHBvc2l0aW9ucy4KPiA+ICsgKiBUaGUgZXhjZXB0aW9u cyBhcmUgR0xLL0NOTCB3aGVyZSB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhl bHMKPiA+ICsgKiB2aXNpYmxlIGZyb20gdGhlIHBsYW5lIGFmdGVyIGl0J3MgY2xpcHBlZCB0byB0 aGUgbGVmdC9yaWdodCBlZGdlIG9mIHRoZQo+ID4gKyAqIHNjcmVlbi4gTm90IG1lZXRpbmcgdGhp cyBjb25kaXRpb24gbWF5IHRyaWdnZXIgRklGTyB1bmRlcmZsb3dzIGFuZCBzY3JlZW4KPiA+ICsg KiBjb3JydXB0aW9uLiBUaGUgY3Vyc29yIHBsYW5lIGlzIGFuIGV4Y2VwdGlvbiB0aGF0IGRvZXNu J3QgaGF2ZSB0aGlzIHByb2JsZW0KPiA+ICsgKiBldmVuIG9uIEdMSy9DTkwuCj4gPiArICovCj4g PiArI2RlZmluZSBDTElQUEVEX1BMQU5FX01JTl9WQUxJRAkJNAo+ID4gIAo+ID4gIC8qCj4gPiAg ICogQ29tbW9uIGNvZGUgYWNyb3NzIGFsbCB0ZXN0cywgYWN0aW5nIG9uIGRhdGFfdAo+ID4gQEAg LTE0Miw2ICsxNzEsNjkgQEAgY3JlYXRlX2ZiX2Zvcl9tb2RlX19wb3NpdGlvbihkYXRhX3QgKmRh dGEsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKPiA+ICAJaWd0X3B1dF9jYWlyb19jdHgoZGF0YS0+ ZHJtX2ZkLCBmYiwgY3IpOwo+ID4gIH0KPiA+ICAKPiA+ICsvKgo+ID4gKyAqIENyZWF0ZSBhIHNx dWFyZSBGQiBmb3IgdGhlIHBsYW5lIGluIHRoZSBjbGlwcGluZyB0ZXN0LCBkaXZpZGVkIGludG8g NAo+ID4gKyAqIHF1YXJ0ZXJzIHNvbGlkIGZpbGxlZCB3aXRoIGRpZmZlcmVudCBjb2xvcnMuIFVz ZSB0aGUgZ2l2ZW4gdGlsaW5nLCBmb3JtYXQKPiA+ICsgKiBhbmQgc2l6ZSBhbmQgcm90YXRlIHRo ZSBGQiBjbG9ja3dpc2Ugd2l0aCB0aGUgZ2l2ZW4gcm90YXRpb24gZGVncmVlcywgc28KPiA+ICsg KiB0aGF0IHRoZSBjb3VudGVyY2xvY2t3aXNlIHJvdGF0aW9uIHdpdGggdGhlIHNhbWUgZGVncmVl cyBkb25lIGJ5IHRoZSBIVwo+ID4gKyAqIHdpbGwgYWx3YXlzIHJlc3VsdCBpbiB0aGUgc2FtZSBy ZWZlcmVuY2UgRkIgaW1hZ2UuCj4gPiArICovCj4gPiArc3RhdGljIHZvaWQKPiA+ICtjcmVhdGVf ZmJfZm9yX21vZGVfX2NsaXBwaW5nX3BsYW5lKGRhdGFfdCAqZGF0YSwgaWd0X3JvdGF0aW9uX3Qg cm90YXRpb24sCj4gPiArCQkJCSAgIHVpbnQ2NF90IHRpbGluZywKPiA+ICsJCQkJICAgdWludDMy X3QgZm9ybWF0LAo+ID4gKwkJCQkgICBpbnQgc2l6ZSwKPiA+ICsJCQkJICAgc3RydWN0IGlndF9m YiAqZmIgLyogb3V0ICovKQo+ID4gK3sKPiA+ICsJY29sb3JfdCBjb3JuZXJzW10gPSB7IHJlZCwg d2hpdGUsIHllbGxvdywgYmx1ZSB9Owo+ID4gKwljb2xvcl90IGNvbG9yOwo+ID4gKwl1bnNpZ25l ZCBpbnQgZmJfaWQ7Cj4gPiArCWNhaXJvX3QgKmNyOwo+ID4gKwljb25zdCBpbnQgcXNpemUgPSBz aXplIC8gMjsKPiA+ICsJaW50IGlkeDsKPiA+ICsKPiA+ICsJZmJfaWQgPSBpZ3RfY3JlYXRlX2Zi KGRhdGEtPmRybV9mZCwgc2l6ZSwgc2l6ZSwgZm9ybWF0LCB0aWxpbmcsIGZiKTsKPiA+ICsJaWd0 X2Fzc2VydChmYl9pZCk7Cj4gPiArCj4gPiArCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ ZHJtX2ZkLCBmYik7Cj4gPiArCj4gPiArCXN3aXRjaCAocm90YXRpb24pIHsKPiA+ICsJY2FzZSBJ R1RfUk9UQVRJT05fMDoKPiA+ICsJCWlkeCA9IDA7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJ R1RfUk9UQVRJT05fOTA6Cj4gPiArCQlpZHggPSAzOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2Ug SUdUX1JPVEFUSU9OXzE4MDoKPiA+ICsJCWlkeCA9IDI7Cj4gPiArCQlicmVhazsKPiA+ICsJY2Fz ZSBJR1RfUk9UQVRJT05fMjcwOgo+ID4gKwkJaWR4ID0gMTsKPiA+ICsJCWJyZWFrOwo+ID4gKwlk ZWZhdWx0Ogo+ID4gKwkJaWd0X2Fzc2VydCgwKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwljb2xvciA9 IGNvcm5lcnNbaWR4XTsKPiA+ICsJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCBxc2l6ZSwgcXNp emUsCj4gPiArCQkJY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSk7Cj4gPiArCj4g PiArCWNvbG9yID0gY29ybmVyc1soKytpZHgpICUgNF07Cj4gPiArCWlndF9wYWludF9jb2xvcihj ciwgcXNpemUsIDAsIHFzaXplLCBxc2l6ZSwKPiA+ICsJCQljb2xvci5yZWQsIGNvbG9yLmdyZWVu LCBjb2xvci5ibHVlKTsKPiA+ICsKPiA+ICsJY29sb3IgPSBjb3JuZXJzWygrK2lkeCkgJSA0XTsK PiA+ICsJaWd0X3BhaW50X2NvbG9yKGNyLCBxc2l6ZSwgcXNpemUsIHFzaXplLCBxc2l6ZSwKPiA+ ICsJCQljb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlKTsKPiA+ICsKPiA+ICsJY29s b3IgPSBjb3JuZXJzWygrK2lkeCkgJSA0XTsKPiA+ICsJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCBx c2l6ZSwgcXNpemUsIHFzaXplLAo+ID4gKwkJCWNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9y LmJsdWUpOwo+ID4gKwo+ID4gKwlpZ3RfYXNzZXJ0KGNhaXJvX3N0YXR1cyhjcikgPT0gMCk7Cj4g PiArCWNhaXJvX2Rlc3Ryb3koY3IpOwo+ID4gK30KPiA+ICsKPiA+ICBlbnVtIHsKPiA+ICAJVEVT VF9QT1NJVElPTl9GVUxMWV9DT1ZFUkVEID0gMSA8PCAwLAo+ID4gIAlURVNUX0RQTVMgPSAxIDw8 IDEsCj4gPiBAQCAtNTQ1LDYgKzYzNyw0MTQgQEAgdGVzdF9waXhlbF9mb3JtYXRzKGRhdGFfdCAq ZGF0YSwgZW51bSBwaXBlIHBpcGUpCj4gPiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIGJv b2wKPiA+ICtib2d1c19wbGFuZV9jb25mKHVpbnQzMl90IGRldmlkLCBpZ3RfcGxhbmVfdCAqcGxh bmVfb2JqLAo+ID4gKwkJIGludCBoZGlzcGxheSwgaW50IHBsYW5lX3gsIGludCBwbGFuZV93aWR0 aCkKPiA+ICt7Cj4gPiArCWlmICghKElTX0dFTUlOSUxBS0UoZGV2aWQpIHx8IElTX0NBTk5PTkxB S0UoZGV2aWQpKSkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJaWYgKHBsYW5lX29i ai0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4g PiArCj4gPiArCWlmIChwbGFuZV94ICsgcGxhbmVfd2lkdGggPj0gQ0xJUFBFRF9QTEFORV9NSU5f VkFMSUQgJiYKPiA+ICsJICAgIHBsYW5lX3ggPD0gaGRpc3BsYXkgLSBDTElQUEVEX1BMQU5FX01J Tl9WQUxJRCkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJcmV0dXJuIHRydWU7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyBib29sCj4gPiArc3VwcG9ydGVkX3BsYW5lX2NvbmYoZGF0 YV90ICpkYXRhLCBpbnQgcGxhbmVfdHlwZSwgdWludDY0X3QgdGlsaW5nLAo+ID4gKwkJICAgICB1 aW50MzJfdCBmb3JtYXQsIGlndF9yb3RhdGlvbl90IHJvdGF0aW9uLAo+ID4gKwkJICAgICBkcm1N b2RlTW9kZUluZm8gKm1vZGUsCj4gPiArCQkgICAgIGludCBwbGFuZV94LCBpbnQgcGxhbmVfeSwg aW50IHBsYW5lX3NpemUpCj4gPiArewo+ID4gKwlpZiAoaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8 IDkgJiYKPiA+ICsJICAgIHRpbGluZyAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FKQo+ID4g KwkJcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKwkvKiBPbiBHRU48OSB0aGUgcHJpbWFyeSBwbGFu ZSBtdXN0IGNvdmVyIHRoZSBmdWxsIHNjcmVlbi4gKi8KPiA+ICsJaWYgKGludGVsX2dlbihkYXRh LT5kZXZpZCkgPCA5ICYmCj4gPiArCSAgICBwbGFuZV90eXBlID09IERSTV9QTEFORV9UWVBFX1BS SU1BUlkgJiYKPiA+ICsJICAgIChwbGFuZV94ID4gMCB8fCBwbGFuZV95ID4gMCB8fAo+ID4gKwkg ICAgIChwbGFuZV94ICsgcGxhbmVfc2l6ZSA8IG1vZGUtPmhkaXNwbGF5KSB8fAo+ID4gKwkgICAg IChwbGFuZV95ICsgcGxhbmVfc2l6ZSA8IG1vZGUtPnZkaXNwbGF5KSkpCj4gPiArCQlyZXR1cm4g ZmFsc2U7Cj4gPiArCj4gPiArCWlmIChwbGFuZV90eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNP Uikgewo+ID4gKwkJLyogRm9yIGN1cnNvciBwbGFuZXMgb25seSBsaW5lYXIvYWxwaGEgZm9ybWF0 IGlzIHN1cHBvcnRlZC4gKi8KPiA+ICsJCWlmICh0aWxpbmcgIT0gTE9DQUxfRFJNX0ZPUk1BVF9N T0RfTk9ORSB8fAo+ID4gKwkJICAgIGZvcm1hdCAhPSBEUk1fRk9STUFUX0FSR0I4ODg4KQo+ID4g KwkJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJCWlmIChwbGFuZV9zaXplID4gZGF0YS0+bWF4 X2N1cncgfHwgcGxhbmVfc2l6ZSA+IGRhdGEtPm1heF9jdXJoKQo+ID4gKwkJCXJldHVybiBmYWxz ZTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCS8qCj4gPiArCQkgKiBGb3Igbm9uLWN1cnNvciBwbGFu ZXMgZm9ybWF0cyB3aXRoIGFscGhhIG1heSByZXN1bHQgaW4KPiA+ICsJCSAqIHVuZGV0ZXJtaW5p c3RpYyBDUkNzLCB3ZSB1c2UgdGhlIHNhbWUgc2l6ZWQKPiA+ICsJCSAqIG5vbi1hbHBoYSBYUkdC ODg4OCBmb3JtYXQgaW5zdGVhZC4KPiA+ICsJCSAqLwo+ID4gKwkJaWYgKGZvcm1hdCA9PSBEUk1f Rk9STUFUX0FSR0I4ODg4KQo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJCWlmIChm b3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I1NjUgJiYKPiA+ICsJCSAgICBpbnRlbF9nZW4oZGF0YS0+ ZGV2aWQpIDwgOSAmJgo+ID4gKwkJICAgICFJU19WQUxMRVlWSUVXKGRhdGEtPmRldmlkKSAmJiAh SVNfQ0hFUlJZVklFVyhkYXRhLT5kZXZpZCkpCj4gPiArCQkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9 Cj4gPiArCj4gPiArCS8qIFJHQjU2NSB3aXRoIHJvdGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IG5vdy4gKi8KPiA+ICsJaWYgKGZvcm1hdCA9PSBEUk1fRk9STUFUX1JHQjU2NSAmJiByb3RhdGlv biAhPSBJR1RfUk9UQVRJT05fMCkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJcmV0 dXJuIHRydWU7Cj4gPiArfQo+ID4gKwo+ID4gKy8qCj4gPiArICogQ3JlYXRlIGEgc3F1YXJlIHJl ZmVyZW5jZSBGQiBmb3IgdGhlIHdob2xlIHNjcmVlbiBpbiB0aGUgY2xpcHBpbmcgdGVzdCwKPiA+ ICsgKiB3aXRoIHRoZSBnaXZlbiB0ZXN0IHBsYW5lIHBvc2l0aW9uIGFuZCBzaXplLiBTZWUKPiA+ ICsgKiBjcmVhdGVfZmJfZm9yX21vZGVfX2NsaXBwaW5nX3BsYW5lKCkgZm9yIHRoZSBsYXlvdXQg b2YgdGhlIHRlc3QgcGxhbmUuCj4gPiArICovCj4gPiArc3RhdGljIHZvaWQKPiA+ICtjcmVhdGVf ZmJfZm9yX21vZGVfX2NsaXBwaW5nX2Rpc3BsYXkoZGF0YV90ICpkYXRhLCBkcm1Nb2RlTW9kZUlu Zm8gKm1vZGUsCj4gPiArCQkJCSAgICAgc3F1YXJlX3QgKmNsaXBfc3F1YXJlcywKPiA+ICsJCQkJ ICAgICBpbnQgcGxhbmVfY250LAo+ID4gKwkJCQkgICAgIHN0cnVjdCBpZ3RfZmIgKmZiIC8qIG91 dCAqLykKPiA+ICt7Cj4gPiArCWludCBwbGFuZTsKPiA+ICsJc3RydWN0IGlndF9mYiBwbGFuZV9m YnNbNF07Cj4gPiArCXVuc2lnbmVkIGludCBmYl9pZDsKPiA+ICsJY2Fpcm9fdCAqY3I7Cj4gPiAr CWNhaXJvX3N1cmZhY2VfdCAqc3Jjc1s0XTsKPiA+ICsKPiA+ICsJZmJfaWQgPSBpZ3RfY3JlYXRl X2ZiKGRhdGEtPmRybV9mZCwKPiA+ICsJCQkgICAgICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRp c3BsYXksCj4gPiArCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+ICsJCQkgICAgICBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ID4gKwkJCSAgICAgIGZiKTsKPiA+ICsJaWd0X2Fz c2VydChmYl9pZCk7Cj4gPiArCj4gPiArCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJt X2ZkLCBmYik7Cj4gPiArCWlndF9wYWludF9jb2xvcihjciwgMCwgMCwgbW9kZS0+aGRpc3BsYXks IG1vZGUtPnZkaXNwbGF5LAo+ID4gKwkJCTAsIDAsIDApOwo+ID4gKwo+ID4gKwlmb3IgKHBsYW5l ID0gMDsgcGxhbmUgPCBwbGFuZV9jbnQ7IHBsYW5lKyspIHsKPiA+ICsJCWNyZWF0ZV9mYl9mb3Jf bW9kZV9fY2xpcHBpbmdfcGxhbmUoZGF0YSwgSUdUX1JPVEFUSU9OXzAsCj4gPiArCQkJCQkJICAg TE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiA+ICsJCQkJCQkgICBEUk1fRk9STUFUX1hSR0I4 ODg4LAo+ID4gKwkJCQkJCSAgIGNsaXBfc3F1YXJlc1twbGFuZV0uc2l6ZSwKPiA+ICsJCQkJCQkg ICAmcGxhbmVfZmJzW3BsYW5lXSk7Cj4gPiArCj4gPiArCQlzcmNzW3BsYW5lXSA9IGlndF9nZXRf Y2Fpcm9fc3VyZmFjZShkYXRhLT5kcm1fZmQsCj4gPiArCQkJCQkJICAgJnBsYW5lX2Zic1twbGFu ZV0pOwo+ID4gKwkJY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzcmNzW3BsYW5lXSwKPiA+ ICsJCQkJCSBjbGlwX3NxdWFyZXNbcGxhbmVdLngsCj4gPiArCQkJCQkgY2xpcF9zcXVhcmVzW3Bs YW5lXS55KTsKPiA+ICsJCWNhaXJvX3JlY3RhbmdsZShjciwKPiA+ICsJCQkJY2xpcF9zcXVhcmVz W3BsYW5lXS54LAo+ID4gKwkJCQljbGlwX3NxdWFyZXNbcGxhbmVdLnksCj4gPiArCQkJCWNsaXBf c3F1YXJlc1twbGFuZV0uc2l6ZSwKPiA+ICsJCQkJY2xpcF9zcXVhcmVzW3BsYW5lXS5zaXplKTsK PiA+ICsJCWNhaXJvX2ZpbGwoY3IpOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlndF9hc3NlcnQoY2Fp cm9fc3RhdHVzKGNyKSA9PSAwKTsKPiA+ICsJY2Fpcm9fZGVzdHJveShjcik7Cj4gPiArCj4gPiAr CWZvciAocGxhbmUgPSAwOyBwbGFuZSA8IHBsYW5lX2NudDsgcGxhbmUrKykgewo+ID4gKwkJY2Fp cm9fc3VyZmFjZV9kZXN0cm95KHNyY3NbcGxhbmVdKTsKPiA+ICsJCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmcGxhbmVfZmJzW3BsYW5lXSk7Cj4gPiArCX0KPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIHZvaWQKPiA+ICt0ZXN0X3BsYW5lX2NsaXBwaW5nX2Zvcm1hdChkYXRhX3QgKmRhdGEs Cj4gPiArCQkJICAgZW51bSBwaXBlIHBpcGUsCj4gPiArCQkJICAgaWd0X291dHB1dF90ICpvdXRw dXQsCj4gPiArCQkJICAgZHJtTW9kZU1vZGVJbmZvICptb2RlLAo+ID4gKwkJCSAgIHNxdWFyZV90 ICpjbGlwX3NxdWFyZXMsCj4gPiArCQkJICAgaW50IHBsYW5lX2NudCwKPiA+ICsJCQkgICB1aW50 NjRfdCB0aWxpbmcsCj4gPiArCQkJICAgaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24sCj4gPiArCQkJ ICAgdWludDMyX3QgZm9ybWF0LAo+ID4gKwkJCSAgIGlndF9jcmNfdCAqcmVmZXJlbmNlX2NyYykK PiA+ICt7Cj4gPiArCWludCBwbGFuZTsKPiA+ICsJaWd0X3BsYW5lX3QgKnBsYW5lX29ianNbNF07 Cj4gPiArCXN0cnVjdCBpZ3RfZmIgcGxhbmVfZmJzWzRdOwo+ID4gKwlpZ3RfY3JjX3QgY3JjOwo+ ID4gKwlpbnQgcmV0Owo+ID4gKwlib29sIGJvZ3VzX3BsYW5lcyA9IGZhbHNlOwo+ID4gKwo+ID4g KwltZW1zZXQocGxhbmVfb2JqcywgMCwgc2l6ZW9mKHBsYW5lX29ianMpKTsKPiA+ICsKPiA+ICsJ aWd0X2RlYnVnKCJyb3RhdGlvbiAlcyB0aWxpbmcgJXMgZm9ybWF0ICVzXG4iLAo+ID4gKwkJICBp Z3Rfcm90YXRpb25fZGVncmVlc19zdHIocm90YXRpb24pLAo+ID4gKwkJICBpZ3RfdGlsaW5nX3N0 cih0aWxpbmcpLAo+ID4gKwkJICBpZ3RfZm9ybWF0X3N0cihmb3JtYXQpKTsKPiA+ICsKPiA+ICsJ aWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ID4gKwo+ID4gKwlmb3IgKHBsYW5l ID0gMDsgcGxhbmUgPCBwbGFuZV9jbnQgOyBwbGFuZSsrKSB7Cj4gPiArCQlpZ3RfcGxhbmVfdCAq b2JqID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBwbGFuZSk7Cj4gPiArCQlzdHJ1Y3Qg aWd0X2ZiICpmYiA9ICZwbGFuZV9mYnNbcGxhbmVdOwo+ID4gKwkJaW50IHggPSBjbGlwX3NxdWFy ZXNbcGxhbmVdLng7Cj4gPiArCQlpbnQgeSA9IGNsaXBfc3F1YXJlc1twbGFuZV0ueTsKPiA+ICsJ CWludCBzaXplID0gY2xpcF9zcXVhcmVzW3BsYW5lXS5zaXplOwo+ID4gKwkJdWludDY0X3QgX3Rp bGluZyA9IHRpbGluZzsKPiA+ICsJCXVpbnQzMl90IF9mb3JtYXQgPSBmb3JtYXQ7Cj4gPiArCj4g PiArCQlpZiAob2JqLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgewo+ID4gKwkJCV90 aWxpbmcgPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FOwo+ID4gKwkJCV9mb3JtYXQgPSBEUk1f Rk9STUFUX0FSR0I4ODg4Owo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJaWYgKCFzdXBwb3J0ZWRfcGxh bmVfY29uZihkYXRhLCBvYmotPnR5cGUsIF90aWxpbmcsIF9mb3JtYXQsCj4gPiArCQkJCQkgIHJv dGF0aW9uLCBtb2RlLCB4LCB5LCBzaXplKSkKPiA+ICsJCQlnb3RvIG91dDsKPiA+ICsKPiA+ICsJ CWNyZWF0ZV9mYl9mb3JfbW9kZV9fY2xpcHBpbmdfcGxhbmUoZGF0YSwgcm90YXRpb24sX3RpbGlu ZywKPiA+ICsJCQkJCQkgICBfZm9ybWF0LCBzaXplLCBmYik7Cj4gPiArCj4gPiArCQlpZ3RfcGxh bmVfc2V0X2ZiKG9iaiwgZmIpOwo+ID4gKwkJaWd0X2ZiX3NldF9wb3NpdGlvbihmYiwgb2JqLCAw LCAwKTsKPiA+ICsKPiA+ICsJCWlndF9wbGFuZV9zZXRfc2l6ZShvYmosIHNpemUsIHNpemUpOwo+ ID4gKwkJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihvYmosIHJvdGF0aW9uKTsKPiA+ICsJCWlndF9w bGFuZV9zZXRfcG9zaXRpb24ob2JqLCB4LCB5KTsKPiA+ICsKPiA+ICsJCXBsYW5lX29ianNbcGxh bmVdID0gb2JqOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIE5vdGUgdGhhdCBhIHVu aXZlcnNhbCBjb21taXQgZG9lc24ndCBzdXBwb3J0IGZ1bGwgbW9kZXNldHMsIHNvIHdlCj4gPiAr CSAqIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZvbGxvd2luZyBvbmx5IG5lZWRzIHRvIGNv bW1pdCBjaGFuZ2VzCj4gPiArCSAqIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCBhIGZhc3RzZXQu IFRoaXMgc2hvdWxkIGJlIGd1YXJhbnRlZWQsCj4gPiArCSAqIHNpbmNlIGJlZm9yZSBjYWxsaW5n IHRoaXMgZnVuY3Rpb24gd2UgdG9vayB0aGUgcmVmZXJlbmNlIENSQyB3aGljaAo+ID4gKwkgKiBs ZWZ0IHRoZSBkaXNwbGF5IGVuYWJsZWQgd2l0aCB0aGUgbW9kZSB3ZSByZXF1aXJlIGhlcmUgYW5k Cj4gPiArCSAqIGFmdGVyd2FyZHMgd2Ugb25seSBjaGFuZ2UgcGxhbmUgcGFyYW1ldGVycyAoRkIs IHBvc2l0aW9uLCByb3RhdGlvbgo+ID4gKwkgKiBldGMuKS4KPiA+ICsJICovCj4gPiArCXJldCA9 IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FM KTsKPiA+ICsKPiA+ICsJZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgcGxhbmVfY250OyBwbGFuZSsr KSB7Cj4gPiArCQlpZighYm9ndXNfcGxhbmVfY29uZihkYXRhLT5kZXZpZCwgcGxhbmVfb2Jqc1tw bGFuZV0sCj4gPiArCQkJCSAgICAgbW9kZS0+aGRpc3BsYXksIGNsaXBfc3F1YXJlc1twbGFuZV0u eCwKPiA+ICsJCQkJICAgICBjbGlwX3NxdWFyZXNbcGxhbmVdLnNpemUpKSB7Cj4gCj4gUHV0dGlu ZyB0aGF0IGZ1bmN0aW9uIGNhbGwgaW50byB0aGUgaWYgbG9va3MgYSBiaXQgZnVubnksIEknZCBw dXQgaXQKPiBvdXRzaWRlLgo+IAo+IEkgYWxzbyBsb29rZWQgYXQgeW91ciByZXN1bHRzOgo+IAo+ IGh0dHBzOi8vaW50ZWwtZ2Z4LWNpLjAxLm9yZy90cmVlL2RybS10aXAvSUdUUFdfMTgxMy9zaGFy ZHMtYWxsLmh0bWwKPiAKPiAoWWVzIHlvdSBuZWVkIHRvIGtub3cgdG8gcmVwbGFjZSBzaGFyZHMu aHRtbCB3aXRoIHNoYXJkcy1hbGwuaHRtbCkuIFlvdXIKPiBuZXcgdGVzdGNhc2VzIGFyZSBmYWls aW5nLCBzbyB0aGVyZSdzIGEgYnVnIHNvbWV3aGVyZS4gTmVlZCB0byBnZXQgdGhhdAo+IGZpeGVk IGZpcnN0Lgo+IAo+IC1EYW5pZWwKPiA+ICsJCQlib2d1c19wbGFuZXMgPSB0cnVlOwo+ID4gKwkJ CWJyZWFrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCWlmIChib2d1c19wbGFuZXMpIHsK PiA+ICsJCWlndF9hc3NlcnQocmV0ID09IDApOwo+ID4gKwkJaWd0X3BpcGVfY3JjX2NvbGxlY3Rf Y3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPiA+ICsJCWlndF9hc3NlcnRfY3JjX2VxdWFsKHJl ZmVyZW5jZV9jcmMsICZjcmMpOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJaWd0X2Fzc2VydChyZXQg PT0gLUVSQU5HRSk7Cj4gPiArCX0KPiA+ICsKPiA+ICtvdXQ6Cj4gPiArCWZvciAocGxhbmUgPSAw OyBwbGFuZSA8IHBsYW5lX2NudDsgcGxhbmUrKykgewo+ID4gKwkJaWYgKCFwbGFuZV9vYmpzW3Bs YW5lXSkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsJCWlndF9wbGFuZV9zZXRfZmIocGxhbmVfb2Jq c1twbGFuZV0sIE5VTEwpOwo+ID4gKwkJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihwbGFuZV9vYmpz W3BsYW5lXSwgSUdUX1JPVEFUSU9OXzApOwo+ID4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihw bGFuZV9vYmpzW3BsYW5lXSwgMCwgMCk7Cj4gPiArCj4gPiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEt PmRybV9mZCwgJnBsYW5lX2Zic1twbGFuZV0pOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlndF9vdXRw dXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2 b2lkCj4gPiArdGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YV90ICpkYXRhLCBlbnVtIHBp cGUgcGlwZSwKPiA+ICsJCQkgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJtTW9kZU1vZGVJbmZv ICptb2RlLAo+ID4gKwkJCSAgIHNxdWFyZV90ICpjbGlwX3NxdWFyZXMsIGludCBwbGFuZV9jbnQp Cj4gPiArewo+ID4gKwljb25zdCBzdHJ1Y3Qgewo+ID4gKwkJdWludDY0X3QgdGlsaW5nOwo+ID4g KwkJaWd0X3JvdGF0aW9uX3Qgcm90YXRpb247Cj4gPiArCX0gcm90YXRpb25zW10gPSB7Cj4gPiAr CQl7IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCQlJR1RfUk9UQVRJT05fMCB9LAo+ID4gKwo+ ID4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwJSUdUX1JPVEFUSU9OXzAgfSwK PiA+ICsKPiA+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCUlHVF9ST1RBVElP Tl8wIH0sCj4gPiArCQl7IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVELAlJR1RfUk9UQVRJ T05fOTAgfSwKPiA+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCUlHVF9ST1RB VElPTl8xODAgfSwKPiA+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCUlHVF9S T1RBVElPTl8yNzAgfSwKPiA+ICsKPiA+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVELAlJR1RfUk9UQVRJT05fMCB9LAo+ID4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZf VElMRUQsCUlHVF9ST1RBVElPTl85MCB9LAo+ID4gKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRUQsCUlHVF9ST1RBVElPTl8xODAgfSwKPiA+ICsJCXsgTE9DQUxfSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVELAlJR1RfUk9UQVRJT05fMjcwIH0sCj4gPiArCX07Cj4gPiArCWNvbnN0IHVp bnQzMl90IGZvcm1hdHNbXSA9IHsKPiA+ICsJCURSTV9GT1JNQVRfUkdCNTY1LAo+ID4gKwkJRFJN X0ZPUk1BVF9YUkdCODg4OCwKPiA+ICsJCURSTV9GT1JNQVRfQVJHQjg4ODgsCj4gPiArCX07Cj4g PiArCj4gPiArCWlndF9mYl90IHJlZmVyZW5jZV9mYjsKPiA+ICsJaWd0X2NyY190IHJlZmVyZW5j ZV9jcmM7Cj4gPiArCj4gPiArCWZvciAoaW50IHBsYW5lID0gMDsgcGxhbmUgPCBwbGFuZV9jbnQ7 IHBsYW5lKyspIHsKPiA+ICsJCWlndF9pbmZvKCJUZXN0aW5nIGNvbm5lY3RvciAlcyBtb2RlICVk eCVkIHVzaW5nIHBpcGUgJXM6ICVkeCVkQCVkLCVkXG4iLAo+ID4gKwkJCSBpZ3Rfb3V0cHV0X25h bWUob3V0cHV0KSwKPiA+ICsJCQkgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAo+ID4g KwkJCSBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwKPiA+ICsJCQkgY2xpcF9zcXVhcmVzW3BsYW5l XS5zaXplLCBjbGlwX3NxdWFyZXNbcGxhbmVdLnNpemUsCj4gPiArCQkJIGNsaXBfc3F1YXJlc1tw bGFuZV0ueCwgY2xpcF9zcXVhcmVzW3BsYW5lXS55KTsKPiA+ICsJfQo+ID4gKwo+ID4gKwl0ZXN0 X2luaXQoZGF0YSwgcGlwZSk7Cj4gPiArCj4gPiArCWNyZWF0ZV9mYl9mb3JfbW9kZV9fY2xpcHBp bmdfZGlzcGxheShkYXRhLCBtb2RlLAo+ID4gKwkJCQkJICAgICBjbGlwX3NxdWFyZXMsCj4gPiAr CQkJCQkgICAgIHBsYW5lX2NudCwKPiA+ICsJCQkJCSAgICAgJnJlZmVyZW5jZV9mYik7Cj4gPiAr Cj4gPiArCS8qCj4gPiArCSAqIEFzIGEgdGVzdF9ncmFiX2NyY19mb3JfZmIoKSBmdW5jdGlvbiB1 c2VzIGEgbGVnYWN5IHN0eWxlIGNvbW1pdAo+ID4gKwkgKiB3aGljaCBkb2VzIG5vdCBhbGxvdyBj aGFuZ2luZyBvZiBwcmltYXJ5IHBsYW5lIHJvdGF0aW9uIG9uIG5vbi1maXJzdAo+ID4gKwkgKiBj b21taXQsIHdlIGNhbGwgaWd0X2Rpc3BsYXlfcmVzZXQoKSB0byBtYWtlIGl0IGFzIGEgZmlyc3Qg Y29tbWl0Cj4gPiArCSAqIHByaW9yIHRvIGNhbGwgdGVzdF9ncmFiX2NyY19mb3JfZmIoKS4KPiA+ ICsJICovCj4gPiArCWlndF9kaXNwbGF5X3Jlc2V0KCZkYXRhLT5kaXNwbGF5KTsKPiA+ICsJdGVz dF9ncmFiX2NyY19mb3JfZmIoZGF0YSwgb3V0cHV0LCBwaXBlLCAmcmVmZXJlbmNlX2ZiLCAmcmVm ZXJlbmNlX2NyYyk7Cj4gPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmcmVmZXJlbmNl X2ZiKTsKPiA+ICsKPiA+ICsJZm9yIChpbnQgcm90YXRpb24gPSAwOyByb3RhdGlvbiA8IEFSUkFZ X1NJWkUocm90YXRpb25zKTsgcm90YXRpb24rKykKPiA+ICsJCWZvciAoaW50IGZvcm1hdCA9IDA7 IGZvcm1hdCA8IEFSUkFZX1NJWkUoZm9ybWF0cyk7IGZvcm1hdCsrKQo+ID4gKwkJCXRlc3RfcGxh bmVfY2xpcHBpbmdfZm9ybWF0KGRhdGEsIHBpcGUsIG91dHB1dCwKPiA+ICsJCQkJCQkgICBtb2Rl LAo+ID4gKwkJCQkJCSAgIGNsaXBfc3F1YXJlcywKPiA+ICsJCQkJCQkgICBwbGFuZV9jbnQsCj4g PiArCQkJCQkJICAgcm90YXRpb25zW3JvdGF0aW9uXS50aWxpbmcsCj4gPiArCQkJCQkJICAgcm90 YXRpb25zW3JvdGF0aW9uXS5yb3RhdGlvbiwKPiA+ICsJCQkJCQkgICBmb3JtYXRzW2Zvcm1hdF0s Cj4gPiArCQkJCQkJICAgJnJlZmVyZW5jZV9jcmMpOwo+ID4gKwo+ID4gKwl0ZXN0X2ZpbmkoZGF0 YSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArdGVzdF9wbGFuZV9jbGlwcGlu Z19zcXVhcmVzKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsCj4gPiArCQkJICAgIGlndF9v dXRwdXRfdCAqb3V0cHV0LCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCj4gPiArCQkJICAgIHNxdWFy ZV90ICpjbGlwX3NxdWFyZXMsIGludCBwbGFuZV9jbnQpCj4gPiArewo+ID4gKwlmb3IgKGludCBp ID0gMDsgaSA8IDQ7IGkgKz0gcGxhbmVfY250KQo+ID4gKwkJdGVzdF9wbGFuZV9jbGlwcGluZ19z cXVhcmUoZGF0YSwgcGlwZSwgb3V0cHV0LCBtb2RlLAo+ID4gKwkJCQkJICAgY2xpcF9zcXVhcmVz ICsgaSwKPiA+ICsJCQkJCSAgIHBsYW5lX2NudCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2 b2lkCj4gPiArdGVzdF9wbGFuZV9jbGlwcGluZyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBl KQo+ID4gK3sKPiA+ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gPiArCWludCBjb25uZWN0ZWRf b3V0cyA9IDA7Cj4gPiArCj4gPiArCWZvcl9lYWNoX3ZhbGlkX291dHB1dF9vbl9waXBlKCZkYXRh LT5kaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKPiA+ICsJCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsK PiA+ICsJCWludCBzcV9zaXplOwo+ID4gKwkJaW50IG1heF9wbGFuZXMgPSBkYXRhLT5kaXNwbGF5 LnBpcGVzW3BpcGVdLm5fcGxhbmVzOwo+ID4gKwkJaW50IHBsYW5lX2NudDsKPiA+ICsKPiA+ICsJ CXBsYW5lX2NudCA9IG1heF9wbGFuZXMgPj0gNCA/IDQgOiBtYXhfcGxhbmVzID49IDIgPyAyIDog MTsKPiA+ICsKPiA+ICsJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiA+ICsJ CW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gPiArCj4gPiArCQkvKgo+ID4g KwkJICogVGVzdCB3aXRoIGEgc3F1YXJlIHBsYW5lIGJpZ2dlciB0aGFuIGVpdGhlciB0aGUgd2lk dGggb3IKPiA+ICsJCSAqIGhlaWdodCBvZiB0aGUgbW9kZS4gVGhpcyBzaG91bGQgcGFzcyBvbiBh bGwgcGxhdGZvcm1zLgo+ID4gKwkJICovCj4gPiArCQlzcV9zaXplID0gbW9kZS0+aGRpc3BsYXkg PiBtb2RlLT52ZGlzcGxheSA/Cj4gPiArCQkJICBtb2RlLT5oZGlzcGxheSA6IG1vZGUtPnZkaXNw bGF5Owo+ID4gKwo+ID4gKwkJY2xpcF9zcXVhcmVzWzBdLnggPSAtMjsKPiA+ICsJCWNsaXBfc3F1 YXJlc1swXS55ID0gLTI7Cj4gPiArCQljbGlwX3NxdWFyZXNbMF0uc2l6ZSA9IHNxX3NpemUgKyA0 Owo+ID4gKwo+ID4gKwkJdGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YSwgcGlwZSwgb3V0 cHV0LCBtb2RlLAo+ID4gKwkJCQkJICAgY2xpcF9zcXVhcmVzLCAxKTsKPiA+ICsKPiA+ICsJCS8q Cj4gPiArCQkgKiBUZXN0IHBvc2l0aW9ucyBpbiB0aGUgNCBjb3JuZXJzIG9mIHRoZSBzY3JlZW4g d2l0aCBhCj4gPiArCQkgKiBDTElQUEVEX1BMQU5FX01JTl9WQUxJRCB4IENMSVBQRURfUExBTkVf TUlOX1ZBTElEIHNxdWFyZQo+ID4gKwkJICogdmlzaWJsZSBmcm9tIHRoZSBwbGFuZS4gVGhlc2Ug c2hvdWxkIHBhc3Mgb24gYWxsIHBsYXRmb3Jtcy4KPiA+ICsJCSAqLwo+ID4gKwkJY2xpcF9zcXVh cmVzWzBdLnggPSAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsKPiA+ICsJCQkJICAgICBDTElQ UEVEX1BMQU5FX01JTl9WQUxJRDsKPiA+ICsJCWNsaXBfc3F1YXJlc1swXS55ID0gLUNMSVBQRURf UExBTkVfU01BTExfU0laRSArCj4gPiArCQkJCSAgICAgQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQ7 Cj4gPiArCQljbGlwX3NxdWFyZXNbMF0uc2l6ZSA9IENMSVBQRURfUExBTkVfU01BTExfU0laRTsK PiA+ICsKPiA+ICsJCWNsaXBfc3F1YXJlc1sxXS54ID0gLUNMSVBQRURfUExBTkVfU01BTExfU0la RSArCj4gPiArCQkJCSAgICAgQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQ7Cj4gPiArCQljbGlwX3Nx dWFyZXNbMV0ueSA9IG1vZGUtPnZkaXNwbGF5IC0KPiA+ICsJCQkJICAgIENMSVBQRURfUExBTkVf TUlOX1ZBTElEOwo+ID4gKwkJY2xpcF9zcXVhcmVzWzFdLnNpemUgPSBDTElQUEVEX1BMQU5FX1NN QUxMX1NJWkU7Cj4gPiArCj4gPiArCQljbGlwX3NxdWFyZXNbMl0ueCA9IG1vZGUtPmhkaXNwbGF5 IC0KPiA+ICsJCQkJICAgIENMSVBQRURfUExBTkVfTUlOX1ZBTElEOwo+ID4gKwkJY2xpcF9zcXVh cmVzWzJdLnkgPSAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsKPiA+ICsJCQkJICAgICBDTElQ UEVEX1BMQU5FX01JTl9WQUxJRDsKPiA+ICsJCWNsaXBfc3F1YXJlc1syXS5zaXplID0gQ0xJUFBF RF9QTEFORV9TTUFMTF9TSVpFOwo+ID4gKwo+ID4gKwkJY2xpcF9zcXVhcmVzWzNdLnggPSBtb2Rl LT5oZGlzcGxheSAtCj4gPiArCQkJCSAgICBDTElQUEVEX1BMQU5FX01JTl9WQUxJRDsKPiA+ICsJ CWNsaXBfc3F1YXJlc1szXS55ID0gbW9kZS0+dmRpc3BsYXkgLQo+ID4gKwkJCQkgICAgQ0xJUFBF RF9QTEFORV9NSU5fVkFMSUQ7Cj4gPiArCQljbGlwX3NxdWFyZXNbM10uc2l6ZSA9IENMSVBQRURf UExBTkVfU01BTExfU0laRTsKPiA+ICsKPiA+ICsJCXRlc3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJl cyhkYXRhLCBwaXBlLCBvdXRwdXQsIG1vZGUsCj4gPiArCQkJCQkgICAgY2xpcF9zcXVhcmVzLCBw bGFuZV9jbnQpOwo+ID4gKwo+ID4gKwkJLyoKPiA+ICsJCSAqIFRlc3QgcG9zaXRpb25zIGluIHRo ZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVlbiB3aXRoIGEKPiA+ICsJCSAqIDIgeCAyIHNxdWFyZSB2 aXNpYmxlIGZyb20gdGhlIHBsYW5lLiBUaGVzZSBhcmUgdmFsaWQgb24gYWxsCj4gPiArCQkgKiBw bGF0Zm9ybXMgZXhjZXB0IG9uIEdMSy9DTkwgd2hlcmUgbGVzcyB0aGFuCj4gPiArCQkgKiBDTElQ UEVEX1BMQU5FX01JTl9WQUxJRCBwaXhlbHMgdmlzaWJsZSBvbiB0aGUgbGVmdC9yaWdodAo+ID4g KwkJICogZWRnZXMgb2YgdGhlIHNjcmVlbiBtYXkgY2F1c2UgRklGTyB1bmRlcmZsb3cgYW5kIGRp c3BsYXkKPiA+ICsJCSAqIGNvcnJ1cHRpb24uCj4gPiArCQkgKgo+ID4gKwkJICogVGhlIGN1cnNv ciBwbGFuZSBpcyBhbiBleGNlcHRpb24gd2l0aG91dCB0aGlzIHByb2JsZW0uCj4gPiArCQkgKgo+ ID4gKwkJICogVXNlIDIgeCAyIHNpemUgYXMgb3RoZXIgKG9kZCkgc2l6ZXMgbWF5IHJlc3VsdCBp biBhbgo+ID4gKwkJICogaW5jb3JyZWN0IENSQyBmb3IgdGhlIGN1cnNvciBwbGFuZSBldmVuIHRo b3VnaCBpdCBkaXNwbGF5cwo+ID4gKwkJICogY29ycmVjdGx5IGFuZCBjYXVzZXMgbm8gdW5kZXJm bG93Lgo+ID4gKwkJICovCj4gPiArCQljbGlwX3NxdWFyZXNbMF0ueCA9IC1DTElQUEVEX1BMQU5F X1NNQUxMX1NJWkUgKyAyOwo+ID4gKwkJY2xpcF9zcXVhcmVzWzBdLnkgPSAtQ0xJUFBFRF9QTEFO RV9TTUFMTF9TSVpFICsgMjsKPiA+ICsJCWNsaXBfc3F1YXJlc1swXS5zaXplID0gQ0xJUFBFRF9Q TEFORV9TTUFMTF9TSVpFOwo+ID4gKwo+ID4gKwkJY2xpcF9zcXVhcmVzWzFdLnggPSAtQ0xJUFBF RF9QTEFORV9TTUFMTF9TSVpFICsgMjsKPiA+ICsJCWNsaXBfc3F1YXJlc1sxXS55ID0gbW9kZS0+ dmRpc3BsYXkgLSAyOwo+ID4gKwkJY2xpcF9zcXVhcmVzWzFdLnNpemUgPSBDTElQUEVEX1BMQU5F X1NNQUxMX1NJWkU7Cj4gPiArCj4gPiArCQljbGlwX3NxdWFyZXNbMl0ueCA9IG1vZGUtPmhkaXNw bGF5IC0gMjsKPiA+ICsJCWNsaXBfc3F1YXJlc1syXS55ID0gLUNMSVBQRURfUExBTkVfU01BTExf U0laRSArIDI7Cj4gPiArCQljbGlwX3NxdWFyZXNbMl0uc2l6ZSA9IENMSVBQRURfUExBTkVfU01B TExfU0laRTsKPiA+ICsKPiA+ICsJCWNsaXBfc3F1YXJlc1szXS54ID0gbW9kZS0+aGRpc3BsYXkg LSAyOwo+ID4gKwkJY2xpcF9zcXVhcmVzWzNdLnkgPSBtb2RlLT52ZGlzcGxheSAtIDI7Cj4gPiAr CQljbGlwX3NxdWFyZXNbM10uc2l6ZSA9IENMSVBQRURfUExBTkVfU01BTExfU0laRTsKPiA+ICsK PiA+ICsJCXRlc3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJlcyhkYXRhLCBwaXBlLCBvdXRwdXQsIG1v ZGUsCj4gPiArCQkJCQkgICAgY2xpcF9zcXVhcmVzLCBwbGFuZV9jbnQpOwo+ID4gKwo+ID4gKwkJ Y29ubmVjdGVkX291dHMrKzsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZ3Rfc2tpcF9vbihjb25uZWN0 ZWRfb3V0cyA9PSAwKTsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQKPiA+ICBydW5fdGVz dHNfZm9yX3BpcGVfcGxhbmUoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSkKPiA+ICB7Cj4g PiBAQCAtNTgxLDYgKzEwODEsOSBAQCBydW5fdGVzdHNfZm9yX3BpcGVfcGxhbmUoZGF0YV90ICpk YXRhLCBlbnVtIHBpcGUgcGlwZSkKPiA+ICAJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUp KQo+ID4gIAkJdGVzdF9wbGFuZV9wYW5uaW5nKGRhdGEsIHBpcGUsIFRFU1RfUEFOTklOR19CT1RU T01fUklHSFQgfAo+ID4gIAkJCQkJICAgICAgIFRFU1RfU1VTUEVORF9SRVNVTUUpOwo+ID4gKwlp Z3Rfc3VidGVzdF9mKCJwbGFuZS1jbGlwcGluZy1waXBlLSVzLXBsYW5lcyIsCj4gPiArCQkgICAg ICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKPiA+ICsJCXRlc3RfcGxhbmVfY2xpcHBpbmcoZGF0 YSwgcGlwZSk7Cj4gPiAgfQo+ID4gIAo+ID4gIAo+ID4gQEAgLTU5Myw4ICsxMDk2LDIxIEBAIGln dF9tYWluCj4gPiAgCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKPiA+ICAKPiA+ICAJaWd0X2Zp eHR1cmUgewo+ID4gKwkJaW50IHJldDsKPiA+ICsKPiA+ICAJCWRhdGEuZHJtX2ZkID0gZHJtX29w ZW5fZHJpdmVyX21hc3RlcihEUklWRVJfSU5URUwpOwo+ID4gIAo+ID4gKwkJZGF0YS5kZXZpZCA9 IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpOwo+ID4gKwo+ID4gKwkJZGF0YS5tYXhf Y3VydyA9IDY0Owo+ID4gKwkJZGF0YS5tYXhfY3VyaCA9IDY0Owo+ID4gKwkJcmV0ID0gZHJtR2V0 Q2FwKGRhdGEuZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9XSURUSCwKPiA+ICsJCQkJJmRhdGEubWF4 X2N1cncpOwo+ID4gKwkJaWd0X2Fzc2VydChyZXQgPT0gMCB8fCBlcnJubyA9PSBFSU5WQUwpOwo+ ID4gKwkJcmV0ID0gZHJtR2V0Q2FwKGRhdGEuZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9IRUlHSFQs Cj4gPiArCQkJCSZkYXRhLm1heF9jdXJoKTsKPiA+ICsJCWlndF9hc3NlcnQocmV0ID09IDAgfHwg ZXJybm8gPT0gRUlOVkFMKTsKPiA+ICsKPiA+ICAJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21v ZGUoKTsKPiA+ICAKPiA+ICAJCWlndF9yZXF1aXJlX3BpcGVfY3JjKGRhdGEuZHJtX2ZkKTsKPiA+ IC0tIAo+ID4gMi4xOC4wCj4gPiAKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==