From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: Re: [PATCH v4] drm/i915 : Added Programming of the MOCS Date: Mon, 29 Jun 2015 08:09:59 +0100 (BST) Message-ID: References: <1434554362-22384-1-git-send-email-peter.antoine@intel.com> <558C6D4D.6050908@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id E10B26E42E for ; Mon, 29 Jun 2015 00:10:01 -0700 (PDT) In-Reply-To: <558C6D4D.6050908@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Bish, Jim" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyNSBKdW4gMjAxNSwgQmlzaCwgSmltIHdyb3RlOgoKPgo+Cj4gT24gMDYvMTcvMjAx NSAwODoxOSBBTSwgUGV0ZXIgQW50b2luZSB3cm90ZToKPj4gVGhpcyBjaGFuZ2UgYWRkcyB0aGUg cHJvZ3JhbW1pbmcgb2YgdGhlIE1PQ1MgcmVnaXN0ZXJzIHRvIHRoZSBnZW4gOSsKPj4gcGxhdGZv cm1zLiBUaGlzIGNoYW5nZSBzZXQgcHJvZ3JhbXMgdGhlIE1PQ1MgcmVnaXN0ZXIgdmFsdWVzIHRv IGEgc2V0Cj4+IG9mIHZhbHVlcyB0aGF0IGFyZSBkZWZpbmVkIHRvIGJlIG9wdGltYWwuCj4+Cj4+ IEl0IGNyZWF0ZXMgYSBmaXhlZCByZWdpc3RlciBzZXQgdGhhdCBpcyBwcm9ncmFtbWVkIGFjcm9z cyB0aGUgZGlmZmVyZW50Cj4+IGVuZ2luZXMgc28gdGhhdCBhbGwgZW5naW5lcyBoYXZlIHRoZSBz YW1lIHRhYmxlLiBUaGlzIGlzIGRvbmUgYXMgdGhlCj4+IG1haW4gUkNTIGNvbnRleHQgb25seSBo b2xkcyB0aGUgcmVnaXN0ZXJzIGZvciBpdHNlbGYgYW5kIHRoZSBzaGFyZWQKPj4gTDMgdmFsdWVz LiBCeSB0cnlpbmcgdG8ga2VlcCB0aGUgcmVnaXN0ZXJzIGNvbnNpc3RlbnQgYWNyb3NzIHRoZQo+ PiBkaWZmZXJlbnQgZW5naW5lcyBpdCBzaG91bGQgbWFrZSB0aGUgcHJvZ3JhbW1pbmcgZm9yIHRo ZSByZWdpc3RlcnMKPj4gY29uc2lzdGVudC4KPj4KPj4gdjI6Cj4+IC0nc3RhdGljIGNvbnN0JyBm b3IgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHN0eWxlIGNoYW5nZXMuKE1hdHQgVHVybmVy KQo+PiB2MzoKPj4gLSBNYWtlIHRoZSB0YWJsZXMgInNsaWdodGx5IiBtb3JlIHJlYWRhYmxlLiAo RGFtaWVuIExlc3BpYXUpCj4+IC0gVXBkYXRlZCB0YWJsZXMgZml4IHBlcmZvcm1hbmNlIHJlZ3Jl c3Npb24uCj4+IHY0Ogo+PiAtIENvZGUgZm9ybWF0dGluZy4gKENocmlzIFdpbHNvbikKPj4gLSBy ZS1wcml2YXRpc2VkIG1vY3MgY29kZS4gKERhbmllbCBWZXR0ZXIpCj4+Cj4+IFNpZ25lZC1vZmYt Ynk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+PiAtLS0KPj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICB8ICAgMSArCj4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oICAgfCAgIDkgKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMgIHwgIDEwICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAg fCAgIDQgKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIHwgMzczICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9tb2NzLmggfCAgNjQgKysrKysrKwo+PiAgNiBmaWxlcyBjaGFuZ2VkLCA0NjAgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX21vY3MuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiBpbmRl eCBiN2RkZjQ4Li5jNzgxZTE5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiBAQCAtMzUs NiArMzUsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+PiAgCSAgaTkxNV9pcnEu byBcCj4+ICAJICBpOTE1X3RyYWNlX3BvaW50cy5vIFwKPj4gIAkgIGludGVsX2xyYy5vIFwKPj4g KwkgIGludGVsX21vY3MubyBcCj4+ICAJICBpbnRlbF9yaW5nYnVmZmVyLm8gXAo+PiAgCSAgaW50 ZWxfdW5jb3JlLm8KPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+IGluZGV4IDcyMTMyMjQu LjNhNDM1YjUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiBAQCAtNzgyOSw0ICs3 ODI5LDEzIEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+PiAgI2RlZmluZSBfUEFMRVRU RV9BIChkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHhhMDAwKQo+PiAgI2Rl ZmluZSBfUEFMRVRURV9CIChkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHhh ODAwKQo+Pgo+PiArLyogTU9DUyAoTWVtb3J5IE9iamVjdCBDb250cm9sIFN0YXRlKSByZWdpc3Rl cnMgKi8KPj4gKyNkZWZpbmUgR0VOOV9MTkNGQ01PQ1MwCQkoMHhCMDIwKQkvKiBMMyBDYWNoZSBD b250cm9sIGJhc2UgKi8KPj4gKwo+PiArI2RlZmluZSBHRU45X0dGWF9NT0NTXzAJCSgweGM4MDAp CS8qIEdyYXBoaWNzIE1PQ1MgYmFzZSByZWdpc3RlciovCj4+ICsjZGVmaW5lIEdFTjlfTUZYMF9N T0NTXzAJKDB4YzkwMCkJLyogTWVkaWEgMCBNT0NTIGJhc2UgcmVnaXN0ZXIqLwo+PiArI2RlZmlu ZSBHRU45X01GWDFfTU9DU18wCSgweGNBMDApCS8qIE1lZGlhIDEgTU9DUyBiYXNlIHJlZ2lzdGVy Ki8KPj4gKyNkZWZpbmUgR0VOOV9WRUJPWF9NT0NTXzAJKDB4Y0IwMCkJLyogVmlkZW8gTU9DUyBi YXNlIHJlZ2lzdGVyKi8KPj4gKyNkZWZpbmUgR0VOOV9CTFRfTU9DU18wCQkoMHhjYzAwKQkvKiBC bGl0dGVyIE1PQ1MgYmFzZSByZWdpc3RlciovCj4+ICsKPj4gICNlbmRpZiAvKiBfSTkxNV9SRUdf SF8gKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5kZXggOWY1NDg1ZC4uNzNiOTE5 ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gQEAgLTEzNSw2ICsxMzUsNyBA QAo+PiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+ Cj4+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4gKyNpbmNsdWRlICJpbnRlbF9tb2NzLmgiCj4+ Cj4+ICAjZGVmaW5lIEdFTjlfTFJfQ09OVEVYVF9SRU5ERVJfU0laRSAoMjIgKiBQQUdFX1NJWkUp Cj4+ICAjZGVmaW5lIEdFTjhfTFJfQ09OVEVYVF9SRU5ERVJfU0laRSAoMjAgKiBQQUdFX1NJWkUp Cj4+IEBAIC03OTYsNyArNzk3LDcgQEAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfcHJlcGFyZShz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPj4gICAqCj4+ICAgKiBSZXR1cm46IG5v bi16ZXJvIGlmIHRoZSByaW5nYnVmZmVyIGlzIG5vdCByZWFkeSB0byBiZSB3cml0dGVuIHRvLgo+ PiAgICovCj4+IC1zdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPj4gK2ludCBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4o c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4+ICAJCQkJICAgIHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjdHgsIGludCBudW1fZHdvcmRzKQo+PiAgewo+PiAgCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcgPSByaW5nYnVmLT5yaW5nOwo+PiBAQCAtMTM3OSw2ICsxMzgwLDEzIEBA IHN0YXRpYyBpbnQgZ2VuOF9pbml0X3Jjc19jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4+ICAJaWYgKHJldCkKPj4gIAkJcmV0dXJuIHJldDsKPj4KPj4gKwkvKgo+PiArCSAq IEZhaWxpbmcgdG8gcHJvZ3JhbSB0aGUgTU9DUyBpcyBub24tZmF0YWwuVGhlIHN5c3RlbSB3aWxs IG5vdAo+PiArCSAqIHJ1biBhdCBwZWFrIHBlcmZvcm1hbmNlLiBTbyBnZW5lcmF0ZSBhIHdhcm5p bmcgYW5kIGNhcnJ5IG9uLgo+PiArCSAqLwo+PiArCWlmIChnZW45X3Byb2dyYW1fbW9jcyhyaW5n LCBjdHgpICE9IDApCj4+ICsJCURSTV9FUlJPUigiTU9DUyBmYWlsZWQgdG8gcHJvZ3JhbTogZXhw ZWN0IHBlcmZvcm1hbmNlIGlzc3Vlcy4iKTsKPj4gKwo+PiAgCXJldHVybiBpbnRlbF9scl9jb250 ZXh0X3JlbmRlcl9zdGF0ZV9pbml0KHJpbmcsIGN0eCk7Cj4+ICB9Cj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5oCj4+IGluZGV4IDA0ZDNhNmQuLmRiYmQ2YWYgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5oCj4+IEBAIC00NCw2ICs0NCwxMCBAQCBpbnQgaW50ZWxfbG9naWNhbF9y aW5nc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+Pgo+PiAgaW50IGxvZ2ljYWxfcmlu Z19mbHVzaF9hbGxfY2FjaGVzKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+PiAg CQkJCSAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4+ICsKPj4gK2ludCBpbnRlbF9sb2dp Y2FsX3JpbmdfYmVnaW4oc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4+ICsJCQkJ ICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIGludCBudW1fZHdvcmRzKTsKPj4gKwo+PiAg LyoqCj4+ICAgKiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZSgpIC0gYWR2YW5jZSB0aGUgcmlu Z2J1ZmZlciB0YWlsCj4+ICAgKiBAcmluZ2J1ZjogUmluZ2J1ZmZlciB0byBhZHZhbmNlLgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAuLjdjMDllNjcKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tb2NzLmMKPj4gQEAgLTAsMCArMSwzNzMgQEAKPj4gKy8qCj4+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KPj4gKyAqCj4+ICsgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQo+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K Pj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4+ICsgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOiAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4+ ICsgKiBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+PiArICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPj4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+PiArICogT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU SEUKPj4gKyAqIFNPRlRXQVJFLgo+PiArICoKPj4gKyAqIEF1dGhvcnM6Cj4+ICsgKiAgICBQZXRl ciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4KPj4gKyAqLwo+PiArCj4+ICsjaW5j bHVkZSAiaW50ZWxfbW9jcy5oIgo+PiArI2luY2x1ZGUgImludGVsX2xyYy5oIgo+PiArI2luY2x1 ZGUgImludGVsX3JpbmdidWZmZXIuaCIKPj4gKwo+PiArLyogc3RydWN0dXJlcyByZXF1aXJlZCAq Lwo+PiArc3RydWN0IGRybV9pOTE1X21vY3NfZW50cnkgewo+PiArCXUzMgljb250cm9sX3ZhbHVl Owo+PiArCXUxNglsM2NjX3ZhbHVlOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IGRybV9pOTE1X21v Y3NfdGFibGUgewo+PiArCXUzMgkJCQkJc2l6ZTsKPj4gKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVf bW9jc19lbnRyeQkqdGFibGU7Cj4+ICt9Owo+PiArCj4+ICsvKiBEZWZpbmVzIGZvciB0aGUgdGFi bGVzIChYWFhfTU9DU18wIC0gWFhYX01PQ1NfNjMpICovCj4+ICsjZGVmaW5lCU1PQ1NfQ0FDSEVB QklMSVRZKHZhbHVlKQkodmFsdWUgPDwgMCkKPj4gKyNkZWZpbmUJTU9DU19UR1RfQ0FDSEUodmFs dWUpCQkodmFsdWUgPDwgMikKPj4gKyNkZWZpbmUJTU9DU19MUlVNKHZhbHVlKQkJKHZhbHVlIDw8 IDQpCj4+ICsjZGVmaW5lCU1PQ1NfQU9NKHZhbHVlKQkJCSh2YWx1ZSA8PCA2KQo+PiArI2RlZmlu ZQlNT0NTX0xFQ0NfRVNDKHZhbHVlKQkJKHZhbHVlIDw8IDcpCj4+ICsjZGVmaW5lCU1PQ1NfTEVD Q19TQ0ModmFsdWUpCQkodmFsdWUgPDwgOCkKPj4gKyNkZWZpbmUJTU9DX1BGTSh2YWx1ZSkJCQko dmFsdWUgPDwgMTEpCj4+ICsjZGVmaW5lCU1PQ1NfU0NGKHZhbHVlKQkJCSh2YWx1ZSA8PCAxNCkK Pj4gKwo+PiArLyogRGVmaW5lcyBmb3IgdGhlIHRhYmxlcyAoTE5DRk1PQ1MwIC0gTE5DRk1PQ1Mz MSkgLSB0d28gZW50cmllcyBwZXIgd29yZCAqLwo+PiArI2RlZmluZQlNT0NTX0VTQyh2YWx1ZSkJ CQkodmFsdWUgPDwgMCkKPj4gKyNkZWZpbmUJTU9DU19TQ0ModmFsdWUpCQkJKHZhbHVlIDw8IDEp Cj4+ICsjZGVmaW5lCU1PQ1NfTDNfQ0FDSEVBQklMSVRZKHZhbHVlKQkodmFsdWUgPDwgNCkKPj4g Kwo+PiArLyogSGVscGVyIGRlZmluZXMgKi8KPj4gKyNkZWZpbmUgR0VOOV9OVU1fTU9DU19SSU5H UwkoNSkJLyogTnVtYmVyIG9mIG1vY3MgZW5naW5lcyB0byBwcm9ncmFtICovCj4+ICsjZGVmaW5l IEdFTjlfTlVNX01PQ1NfRU5UUklFUwkoNjMpCS8qIDYzIG91dCBvZiA2NCAtIDY0IGlzIHJzdnJk ICovCj4gc3BlYyBzaG93cyB0b3AgdHdvIGVudHJpZXMgYXMgcmVzZXJ2ZWQgZm9yIGhhcmR3YXJl LiAgcGxlYXNlIGRvdWJsZSBjaGVjawo+IGFuZCB1cGRhdGUKWW91IGFyZSByaWdodC4gVGhlIGNv ZGUgZG9lcyBzb21ldGhpbmcgbmFzdHkgYW5kIHJlbGllcyBvbiB0aGUgcm91bmRpbmcgdG8gCmdl dCB0aGlzIHJpZ2h0LiBUaWRpZWQgdXAuCj4+ICsKPj4gKy8qIEVEUkFNIENhY2hpbmcgb3B0aW9u cyAqLwo+PiArI2RlZmluZSBFRFJBTV9QQUdFVEFCTEUJCSgwKQo+PiArI2RlZmluZSBFRFJBTV9V QwkJKDEpCj4+ICsjZGVmaW5lIEVEUkFNX1JFU0VSVkVECQkoMikKPj4gKyNkZWZpbmUgRURSQU1f V0IJCSgzKQo+PiArCj4+ICsvKiBMMyBDYWNoaW5nIG9wdGlvbnMgKi8KPj4gKyNkZWZpbmUgTDNf RElSRUNUCQkoMCkKPj4gKyNkZWZpbmUgTDNfVUMJCQkoMSkKPj4gKyNkZWZpbmUgTDNfUkVTRVJW RUQJCSgyKQo+PiArI2RlZmluZSBMM19XQgkJCSgzKQo+PiArCj4+ICsvKiB0YXJnZXQgY2FjaGUg Ki8KPj4gKyNkZWZpbmUgRUxMQwkJCSgwKQo+PiArI2RlZmluZSBMTEMJCQkoMSkKPj4gKyNkZWZp bmUgTExDX0VMTEMJCSgyKQo+PiArCj4+ICsvKgo+PiArICogTU9DUyB0YWJsZXMKPj4gKyAqCj4+ ICsgKiBUaGVzZSBhcmUgdGhlIE1PQ1MgdGFibGVzIHRoYXQgYXJlIHByb2dyYW1tZWQgYWNyb3Nz IGFsbCB0aGUgcmluZ3MuCj4+ICsgKiBUaGUgY29udHJvbCB2YWx1ZSBpcyBwcm9ncmFtbWVkIHRv IGFsbCB0aGUgcmluZ3MgdGhhdCBzdXBwb3J0IHRoZQo+PiArICogTU9DUyByZWdpc3RlcnMuIFdo aWxlIHRoZSBsM2NjX3ZhbHVlcyBhcmUgb25seSBwcm9ncmFtbWVkIHRvIHRoZQo+PiArICogTE5D RkNNT0NTMCAtIExOQ0ZDTU9DUzMyIHJlZ2lzdGVycy4KPj4gKyAqCj4+ICsgKiBOT1RFOiBUaGVz ZSB0YWJsZXMgTVVTVCBzdGFydCB3aXRoIGJlaW5nIHVuY2FjaGVkIGFuZCB0aGUgbGVuZ3RoIE1V U1QgYmUKPj4gKyAqICAgICAgIGxlc3MgdGhhbiA2MyBhcyB0aGUgbGFzdCB0d28gcmVnaXN0ZXJz IGFyZSByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCj4+ICsgKi8KPj4gK3N0YXRpYyBzdHJ1Y3Qg ZHJtX2k5MTVfbW9jc19lbnRyeSBza3lsYWtlX21vY3NfdGFibGVbXSA9IHsKPj4gKwkgLyogezB4 MDAwMDAwMDksIDB4MDAxMH0gKi8KPj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKEVEUkFNX1VDKSB8 IE1PQ1NfVEdUX0NBQ0hFKExMQ19FTExDKSB8Cj4+ICsJCU1PQ1NfTFJVTSgwKSB8IE1PQ1NfQU9N KDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4gKwkJTU9DX1BGTSgwKSB8 IE1PQ1NfU0NGKDApKSwKPj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wz X0NBQ0hFQUJJTElUWShMM19VQykpfSwKPj4gKwkgLyogezB4MDAwMDAwM2IsIDB4MDAzMH0gKi8K Pj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKEVEUkFNX1dCKSB8IE1PQ1NfVEdUX0NBQ0hFKExMQ19F TExDKSB8Cj4+ICsJCU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygw KSB8IE1PQ1NfU0NDKDApIHwKPj4gKwkJTU9DX1BGTSgwKSB8IE1PQ1NfU0NGKDApKSwKPj4gKwkJ KE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19XQikp fSwKPj4gKwkgLyogezB4MDAwMDAwMzksIDB4MDAxMH0gKi8KPj4gKwl7KE1PQ1NfQ0FDSEVBQklM SVRZKEVEUkFNX1VDKSB8IE1PQ1NfVEdUX0NBQ0hFKExMQ19FTExDKSB8Cj4+ICsJCU1PQ1NfTFJV TSgzKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4g KwkJTU9DX1BGTSgwKSB8IE1PQ1NfU0NGKDApKSwKPj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19T Q0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19VQykpfSwKPj4gKwkgLyogezB4MDAwMDAw MTcsIDB4MDAzMH0gKi8KPj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKEVEUkFNX1dCKSB8IE1PQ1Nf VEdUX0NBQ0hFKExMQykgfAo+PiArCQlNT0NTX0xSVU0oMSkgfCBNT0NTX0FPTSgwKSB8IE1PQ1Nf TEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1NDRigw KSksCj4+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNIRUFCSUxJ VFkoTDNfV0IpKX0sCj4+ICsJIC8qIHsweDAwMDAwMDE3LCAweDAwMTB9ICovCj4+ICsJeyhNT0NT X0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9DQUNIRShMTEMpIHwKPj4gKwkJTU9D U19MUlVNKDEpIHwgTU9DU19BT00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkg fAo+PiArCQlNT0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+PiArCQkoTU9DU19FU0MoMCkgfCBN T0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKEwzX1VDKSl9LAo+PiArCSAvKiB7MHgw MDAwMDAxOSwgMHgwMDEwfSAqLwo+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fVUMpIHwg TU9DU19UR1RfQ0FDSEUoTExDX0VMTEMpIHwKPj4gKwkJTU9DU19MUlVNKDEpIHwgTU9DU19BT00o MCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfAo+PiArCQlNT0NfUEZNKDApIHwg TU9DU19TQ0YoMCkpLAo+PiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNf Q0FDSEVBQklMSVRZKEwzX1VDKSl9LAo+PiArCSAvKiB7MHgwMDAwMDAzNywgMHgwMDMwfSAqLwo+ PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fV0IpIHwgTU9DU19UR1RfQ0FDSEUoTExDKSB8 Cj4+ICsJCU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1P Q1NfU0NDKDApIHwKPj4gKwkJTU9DX1BGTSgwKSB8IE1PQ1NfU0NGKDApKSwKPj4gKwkJKE1PQ1Nf RVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19XQikpfSwKPj4g KwkgLyogezB4MDAwMDAwMzcsIDB4MDAxMH0gKi8KPj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKEVE UkFNX1dCKSB8IE1PQ1NfVEdUX0NBQ0hFKExMQykgfAo+PiArCQlNT0NTX0xSVU0oMykgfCBNT0NT X0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+ICsJCU1PQ19QRk0o MCkgfCBNT0NTX1NDRigwKSksCj4+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9D U19MM19DQUNIRUFCSUxJVFkoTDNfVUMpKX0sCj4+ICsJIC8qIHsweDAwMDAwMDNiLCAweDAwMTB9 ICovCj4+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9DQUNIRShM TENfRUxMQykgfAo+PiArCQlNT0NTX0xSVU0oMykgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19F U0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1NDRigwKSksCj4+ ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNIRUFCSUxJVFkoTDNf VUMpKX0sCj4+ICt9Owo+PiArCj4gcGxlYXNlIGFkZCBjb21tZW50IGFib3ZlIHRoZSBicm94dG9u IHRhYmxlIHRvIGNsYXJpZnkgdGhlIHVzZSBvZiBMTEMgaW4gdGhlCj4gTU9DU19UR1RfQ0FDSEUg YXMgbm90IGFwcGxpY2FibGUgZm9yIGJyb3h0b24uCkFkZGVkIGNvbW1lbnRzLgo+Cj4+ICtzdGF0 aWMgc3RydWN0IGRybV9pOTE1X21vY3NfZW50cnkgYnJveHRvbl9tb2NzX3RhYmxlW10gPSB7Cj4+ ICsJIC8qIHsweDAwMDAwMDAxLCAweDAwMTB9ICovCj4+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWShF RFJBTV9VQykgfCBNT0NTX1RHVF9DQUNIRShFTExDKSB8Cj4+ICsJCU1PQ1NfTFJVTSgwKSB8IE1P Q1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4gKwkJTU9DX1BG TSgwKSB8IE1PQ1NfU0NGKDApKSwKPj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBN T0NTX0wzX0NBQ0hFQUJJTElUWShMM19VQykpfSwKPj4gKwkgLyogezB4MDAwMDAwMDUsIDB4MDAx MH0gKi8KPj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKEVEUkFNX1VDKSB8IE1PQ1NfVEdUX0NBQ0hF KExMQykgfAo+PiArCQlNT0NTX0xSVU0oMCkgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0Mo MCkgfCBNT0NTX1NDQygwKSB8Cj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1NDRigwKSksCj4+ICsJ CShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNIRUFCSUxJVFkoTDNfVUMp KX0sCj4+ICsJIC8qIHsweDAwMDAwMDA1LCAweDAwMzB9ICovCj4+ICsJeyhNT0NTX0NBQ0hFQUJJ TElUWShFRFJBTV9VQykgfCBNT0NTX1RHVF9DQUNIRShMTEMpIHwKPj4gKwkJTU9DU19MUlVNKDAp IHwgTU9DU19BT00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfAo+PiArCQlN T0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+PiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygw KSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKEwzX1dCKSl9LAo+PiArCSAvKiB7MHgwMDAwMDAxNywg MHgwMDMwfSAqLwo+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fV0IpIHwgTU9DU19UR1Rf Q0FDSEUoTExDKSB8Cj4+ICsJCU1PQ1NfTFJVTSgxKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUND X0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4gKwkJTU9DX1BGTSgwKSB8IE1PQ1NfU0NGKDApKSwK Pj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShM M19XQikpfSwKPj4gKwkgLyogezB4MDAwMDAwMTcsIDB4MDAxMH0gKi8KPj4gKwl7KE1PQ1NfQ0FD SEVBQklMSVRZKEVEUkFNX1dCKSB8IE1PQ1NfVEdUX0NBQ0hFKExMQykgfAo+PiArCQlNT0NTX0xS VU0oMSkgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+ ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1NDRigwKSksCj4+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1Nf U0NDKDApIHwgTU9DU19MM19DQUNIRUFCSUxJVFkoTDNfVUMpKX0sCj4+ICsJIC8qIHsweDAwMDAw MDE5LCAweDAwMTB9ICovCj4+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9VQykgfCBNT0NT X1RHVF9DQUNIRShMTENfRUxMQykgfAo+PiArCQlNT0NTX0xSVU0oMSkgfCBNT0NTX0FPTSgwKSB8 IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NT X1NDRigwKSksCj4+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNI RUFCSUxJVFkoTDNfVUMpKX0sCj4+ICsJIC8qIHsweDAwMDAwMDM3LCAweDAwMzB9ICovCj4+ICsJ eyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9DQUNIRShMTEMpIHwKPj4g KwkJTU9DU19MUlVNKDMpIHwgTU9DU19BT00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19T Q0MoMCkgfAo+PiArCQlNT0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+PiArCQkoTU9DU19FU0Mo MCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKEwzX1dCKSl9LAo+PiArCSAv KiB7MHgwMDAwMDAzNywgMHgwMDEwfSAqLwo+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1f V0IpIHwgTU9DU19UR1RfQ0FDSEUoTExDKSB8Cj4+ICsJCU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9N KDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4gKwkJTU9DX1BGTSgwKSB8 IE1PQ1NfU0NGKDApKSwKPj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wz X0NBQ0hFQUJJTElUWShMM19VQykpfSwKPj4gKwkgLyogezB4MDAwMDAwM2IsIDB4MDAxMH0gKi8K Pj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKEVEUkFNX1dCKSB8IE1PQ1NfVEdUX0NBQ0hFKExMQ19F TExDKSB8Cj4+ICsJCU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygw KSB8IE1PQ1NfU0NDKDApIHwKPj4gKwkJTU9DX1BGTSgwKSB8IE1PQ1NfU0NGKDApKSwKPj4gKwkJ KE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19VQykp fSwKPj4gK307Cj4+ICsKPj4gKy8qKgo+PiArICogZ2V0X21vY3Nfc2V0dGluZ3MKPj4gKyAqCj4+ ICsgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSB2YWx1ZXMgb2YgdGhlIE1PQ1MgdGFi bGUgdGhhdCBuZWVkcyB0bwo+PiArICogYmUgcHJvZ3JhbW1lZCBmb3IgdGhlIHBsYXRmb3JtLiBJ dCB3aWxsIHJldHVybiB0aGUgdmFsdWVzIHRoYXQgbmVlZAo+PiArICogdG8gYmUgcHJvZ3JhbW1l ZCBhbmQgaWYgdGhleSBuZWVkIHRvIGJlIHByb2dyYW1tZWQuCj4+ICsgKgo+PiArICogSWYgdGhl IHJldHVybiB2YWx1ZXMgaXMgZmFsc2UgdGhlbiB0aGUgcmVnaXN0ZXJzIGRvIG5vdCBuZWVkIHBy b2dyYW1taW5nLgo+PiArICovCj4+ICtzdGF0aWMgYm9vbCBnZXRfbW9jc19zZXR0aW5ncyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+PiArCQkJICAgICAgc3RydWN0IGRybV9pOTE1X21vY3NfdGFi bGUgKnRhYmxlKSB7Cj4+ICsJYm9vbAlyZXN1bHQgPSBmYWxzZTsKPj4gKwo+PiArCWlmIChJU19T S1lMQUtFKGRldikpIHsKPj4gKwkJdGFibGUtPnNpemUgID0gQVJSQVlfU0laRShza3lsYWtlX21v Y3NfdGFibGUpOwo+PiArCQl0YWJsZS0+dGFibGUgPSBza3lsYWtlX21vY3NfdGFibGU7Cj4+ICsJ CXJlc3VsdCA9IHRydWU7Cj4+ICsJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldikpIHsKPj4gKwkJ dGFibGUtPnNpemUgID0gQVJSQVlfU0laRShicm94dG9uX21vY3NfdGFibGUpOwo+PiArCQl0YWJs ZS0+dGFibGUgPSBicm94dG9uX21vY3NfdGFibGU7Cj4+ICsJCXJlc3VsdCA9IHRydWU7Cj4+ICsJ fSBlbHNlIHsKPj4gKwkJLyogUGxhdGZvcm0gdGhhdCBzaG91bGQgaGF2ZSBhIE1PQ1MgdGFibGUg ZG9lcyBub3QgKi8KPj4gKwkJV0FSTl9PTihJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KTsKPj4g Kwl9Cj4+ICsKPj4gKwlyZXR1cm4gcmVzdWx0Owo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIGVt aXRfbW9jc19jb250cm9sX3RhYmxlKCkgLSBlbWl0IHRoZSBtb2NzIGNvbnRyb2wgdGFibGUKPj4g KyAqIEByaW5nYnVmOglEUk0gZGV2aWNlLgo+PiArICogQHRhYmxlOglUaGUgdmFsdWVzIHRvIHBy b2dyYW0gaW50byB0aGUgY29udHJvbCByZWdzLgo+PiArICogQHJlZ19iYXNlOglUaGUgYmFzZSBm b3IgdGhlIEVuZ2luZSB0aGF0IG5lZWRzIHRvIGJlIHByb2dyYW1tZWQuCj4+ICsgKgo+PiArICog VGhpcyBmdW5jdGlvbiBzaW1wbHkgZW1pdHMgYSBNSV9MT0FEX1JFR0lTVEVSX0lNTSBjb21tYW5k IGZvciB0aGUKPj4gKyAqIGdpdmVuIHRhYmxlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBhZGRyZXNz Lgo+PiArICoKPj4gKyAqIFJldHVybjogTm90aGluZy4KPj4gKyAqLwo+PiArc3RhdGljIHZvaWQg ZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYs Cj4+ICsJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSwKPj4gKwkJCQkg ICAgdTMyIHJlZ19iYXNlKQo+PiArewo+PiArCXVuc2lnbmVkIGludCBpbmRleDsKPj4gKwo+PiAr CWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCj4+ICsJCQlNSV9MT0FEX1JFR0lTVEVS X0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKPj4gKwo+PiArCWZvciAoaW5kZXggPSAwOyBp bmRleCA8IHRhYmxlLT5zaXplOyBpbmRleCsrKSB7Cj4+ICsJCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIHJlZ19iYXNlICsgKGluZGV4ICogNCkpOwo+PiArCQlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLAo+PiArCQkJCQl0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRyb2xf dmFsdWUpOwo+PiArCX0KPj4gKwo+PiArCS8qCj4+ICsJICogT2ssIG5vdyBzZXQgdGhlIHVudXNl ZCBlbnRyaWVzIHRvIHVuY2FjaGVkLiBUaGVzZSBlbnRyaWVzIGFyZQo+PiArCSAqIG9mZmljaWFs bHkgdW5kZWZpbmVkIGFuZCBubyBjb250YWN0IGlzIGdpdmVuIGZvciB0aGUgY29udGVudHMgYW5k Cj4+ICsJICogc2V0dGluZ3MgaXMgZ2l2ZW4gZm9yIHRoZXNlIGVudHJpZXMuCj4+ICsJICoKPj4g KwkgKiBFbnRyeSAwIGluIHRoZSB0YWJsZSBpcyB1bmNhY2hlZCAtIHNvIHdlIGFyZSBqdXN0IHdy aXR0ZW4gdGhhdAo+PiArCSAqIHZhbHVlIHRvIGFsbCB0aGUgdXNlZCBlbnRyaWVzLgo+PiArCSAq Lwo+PiArCWZvciAoOyBpbmRleCA8IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsgaW5kZXgrKykgewo+ PiArCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCByZWdfYmFzZSArIChpbmRleCAq IDQpKTsKPj4gKwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgdGFibGUtPnRhYmxl WzBdLmNvbnRyb2xfdmFsdWUpOwo+PiArCX0KPj4gKwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIE1JX05PT1ApOwo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIGVtaXRfbW9j c19sM2NjX3RhYmxlKCkgLSBlbWl0IHRoZSBtb2NzIGNvbnRyb2wgdGFibGUKPj4gKyAqIEByaW5n YnVmOglEUk0gZGV2aWNlLgo+PiArICogQHRhYmxlOglUaGUgdmFsdWVzIHRvIHByb2dyYW0gaW50 byB0aGUgY29udHJvbCByZWdzLgo+PiArICoKPj4gKyAqIFRoaXMgZnVuY3Rpb24gc2ltcGx5IGVt aXRzIGEgTUlfTE9BRF9SRUdJU1RFUl9JTU0gY29tbWFuZCBmb3IgdGhlCj4+ICsgKiBnaXZlbiB0 YWJsZSBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gYWRkcmVzcy4gVGhpcyByZWdpc3RlciBzZXQgaXMg IHByb2dyYW1tZWQKPj4gKyAqIGluIHBhaXJzLgo+PiArICoKPj4gKyAqIFJldHVybjogTm90aGlu Zy4KPj4gKyAqLwo+PiArc3RhdGljIHZvaWQgZW1pdF9tb2NzX2wzY2NfdGFibGUoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4+ICsJCQkgc3RydWN0IGRybV9pOTE1X21vY3NfdGFi bGUgKnRhYmxlKSB7Cj4+ICsJdW5zaWduZWQgaW50IGNvdW50Owo+PiArCXVuc2lnbmVkIGludCBp Owo+PiArCXUzMiB2YWx1ZTsKPj4gKwl1MzIgZmlsbGVyID0gKHRhYmxlLT50YWJsZVswXS5sM2Nj X3ZhbHVlICYgMHhmZmZmKSB8Cj4+ICsJCQkoKHRhYmxlLT50YWJsZVswXS5sM2NjX3ZhbHVlICYg MHhmZmZmKSA8PCAxNik7Cj4+ICsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LAo+PiArCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTIC8gMikp Owo+PiArCj4+ICsJZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgdGFibGUtPnNpemUgLyAyOyBp KyssIGNvdW50ICs9IDIpIHsKPj4gKwkJdmFsdWUgPSAodGFibGUtPnRhYmxlW2NvdW50XS5sM2Nj X3ZhbHVlICYgMHhmZmZmKSB8Cj4+ICsJCQkoKHRhYmxlLT50YWJsZVtjb3VudCArIDFdLmwzY2Nf dmFsdWUgJiAweGZmZmYpIDw8IDE2KTsKPj4gKwo+PiArCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUzAgKyAoaSAqIDQpKTsKPj4gKwkJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgdmFsdWUpOwo+PiArCX0KPj4gKwo+PiArCWlmICh0YWJsZS0+ c2l6ZSAmIDB4MDEpIHsKPj4gKwkJLyogT2RkIHRhYmxlIHNpemUgLSAxIGxlZnQgb3ZlciAqLwo+ PiArCQl2YWx1ZSA9ICh0YWJsZS0+dGFibGVbY291bnRdLmwzY2NfdmFsdWUgJiAweGZmZmYpIHwK Pj4gKwkJCSgodGFibGUtPnRhYmxlWzBdLmwzY2NfdmFsdWUgJiAweGZmZmYpIDw8IDE2KTsKPj4g Kwl9IGVsc2UKPj4gKwkJdmFsdWUgPSBmaWxsZXI7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIE5vdyBz ZXQgdGhlIHJlc3Qgb2YgdGhlIHRhYmxlIHRvIHVuY2FjaGVkIC0gdXNlIGVudHJ5IDAgYXMgdGhp cwo+PiArCSAqIHdpbGwgYmUgdW5jYWNoZWQuIExlYXZlIHRoZSBsYXN0IHBhaXIgYXMgaW5pdGlh bGlzZWQgYXMgdGhleSBhcmUKPj4gKwkgKiByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCj4+ICsJ ICovCj4+ICsJZm9yICg7IGkgPCAoR0VOOV9OVU1fTU9DU19FTlRSSUVTIC8gMikgLSAxOyBpKysp IHsKPj4gKwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0VOOV9MTkNGQ01PQ1Mw ICsgKGkgKiA0KSk7Cj4+ICsJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHZhbHVl KTsKPj4gKwo+PiArCQl2YWx1ZSA9IGZpbGxlcjsKPj4gKwl9Cj4+ICsKPj4gKwlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKPj4gK30KPj4gKwo+PiArLyoKPj4gKyAq IGdlbjlfcHJvZ3JhbV9tb2NzKCkgLSBwcm9ncmFtIHRoZSBNT0NTIHJlZ2lzdGVyLgo+PiArICoK Pj4gKyAqIHJpbmc6CVRoZSByaW5nIHRoYXQgdGhlIHByb2dyYW1taW5nIGJhdGNoIHdpbGwgYmUg cnVuIGluLgo+PiArICogY3R4OgkJVGhlIGludGVsX2NvbnRleHQgdG8gYmUgdXNlZC4KPj4gKyAq Cj4+ICsgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZW1pdCBhIGJhdGNoIGJ1ZmZlciB3aXRoIHRoZSB2 YWx1ZXMgcmVxdWlyZWQgZm9yCj4+ICsgKiBwcm9ncmFtbWluZyB0aGUgTU9DUyByZWdpc3RlciB2 YWx1ZXMgZm9yIGFsbCB0aGUgY3VycmVudGx5IHN1cHBvcnRlZAo+PiArICogcmluZ3MuCj4+ICsg Kgo+PiArICogVGhlc2UgcmVnaXN0ZXJzIGFyZSBwYXJ0aWFsbHkgc3RvcmVkIGluIHRoZSBSQ1Mg Y29udGV4dCwgc28gdGhleSBhcmUKPj4gKyAqIGVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBzbyB0 aGF0IHdoZW4gYSBjb250ZXh0IGlzIGNyZWF0ZWQgdGhlc2UgcmVnaXN0ZXJzCj4+ICsgKiBhcmUg c2V0IHVwLiBUaGVzZSByZWdpc3RlcnMgaGF2ZSB0byBiZSBlbWl0dGVkIGludG8gdGhlIHN0YXJ0 IG9mIHRoZQo+PiArICogY29udGV4dCBhcyBzZXR0aW5nIHRoZSBFTFNQIHdpbGwgcmUtaW5pdCBz b21lIG9mIHRoZXNlIHJlZ2lzdGVycyBiYWNrCj4+ICsgKiB0byB0aGUgaHcgdmFsdWVzLgo+PiAr ICoKPj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvdGhlcndpc2UgdGhlIGVycm9yIHN0YXR1 cy4KPj4gKyAqLwo+PiAraW50IGdlbjlfcHJvZ3JhbV9tb2NzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsCj4+ICsJCQkgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4+ICt7Cj4+ICsJ aW50IHJldCA9IDA7Cj4+ICsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB0Owo+PiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4+ICsJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKPj4gKwo+ PiArCWlmIChnZXRfbW9jc19zZXR0aW5ncyhkZXYsICZ0KSkgewo+PiArCQl1MzIgdGFibGVfc2l6 ZTsKPj4gKwo+PiArCQkvKgo+PiArCQkgKiBPSy4gRm9yIGVhY2ggc3VwcG9ydGVkIHJpbmc6Cj4+ ICsJCSAqICBudW1iZXIgb2YgbW9jcyBlbnRyaWVzICogMiBkd29yZHMgZm9yIGVhY2ggY29udHJv bF92YWx1ZQo+PiArCQkgKiAgcGx1cyBudW1iZXIgb2YgbW9jcyBlbnRyaWVzIC8yIGR3b3JkcyBm b3IgbDNjYyB2YWx1ZXMuCj4+ICsJCSAqCj4+ICsJCSAqICBQbHVzIDEgZm9yIHRoZSBsb2FkIGNv bW1hbmQgYW5kIDEgZm9yIHRoZSBOT09QIHBlciByaW5nCj4+ICsJCSAqICBhbmQgdGhlIGwzY2Mg cHJvZ3JhbW1pbmcuCj4+ICsJCSAqLwo+PiArCQl0YWJsZV9zaXplID0gR0VOOV9OVU1fTU9DU19S SU5HUyAqCj4+ICsJCQkJKCgyICogR0VOOV9OVU1fTU9DU19FTlRSSUVTKSArIDIpICsKPj4gKwkJ CQlHRU45X05VTV9NT0NTX0VOVFJJRVMgKyAyOwo+PiArCQlyZXQgPSBpbnRlbF9sb2dpY2FsX3Jp bmdfYmVnaW4ocmluZ2J1ZiwgY3R4LCB0YWJsZV9zaXplKTsKPj4gKwkJaWYgKHJldCkgewo+PiAr CQkJRFJNX0RFQlVHKCJpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4gZmFpbGVkICVkXG4iLCByZXQp Owo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwkJfQo+PiArCj4+ICsJCS8qIHByb2dyYW0gdGhlIGNv bnRyb2wgcmVnaXN0ZXJzICovCj4+ICsJCWVtaXRfbW9jc19jb250cm9sX3RhYmxlKHJpbmdidWYs ICZ0LCBHRU45X0dGWF9NT0NTXzApOwo+PiArCQllbWl0X21vY3NfY29udHJvbF90YWJsZShyaW5n YnVmLCAmdCwgR0VOOV9NRlgwX01PQ1NfMCk7Cj4+ICsJCWVtaXRfbW9jc19jb250cm9sX3RhYmxl KHJpbmdidWYsICZ0LCBHRU45X01GWDFfTU9DU18wKTsKPj4gKwkJZW1pdF9tb2NzX2NvbnRyb2xf dGFibGUocmluZ2J1ZiwgJnQsIEdFTjlfVkVCT1hfTU9DU18wKTsKPj4gKwkJZW1pdF9tb2NzX2Nv bnRyb2xfdGFibGUocmluZ2J1ZiwgJnQsIEdFTjlfQkxUX01PQ1NfMCk7Cj4+ICsKPj4gKwkJLyog bm93IHByb2dyYW0gdGhlIGwzY2MgcmVnaXN0ZXJzICovCj4+ICsJCWVtaXRfbW9jc19sM2NjX3Rh YmxlKHJpbmdidWYsICZ0KTsKPj4gKwo+PiArCQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShy aW5nYnVmKTsKPj4gKwo+PiArCQlEUk1fREVCVUcoIk1PQ1M6IFRhYmxlIHNldCBpbiBDb250ZXh0 XG4iKTsKPj4gKwl9IGVsc2Ugewo+PiArCQlEUk1fREVCVUcoIk1PQ1M6IFRhYmxlIE5vdCBzdXBw b3J0ZWQgb24gcGxhdGZvcm1cbiIpOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9 Cj4+ICsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+PiBpbmRleCAwMDAwMDAwLi5lMjc4MGNlCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5oCj4+IEBAIC0wLDAgKzEsNjQgQEAKPj4gKy8q Cj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KPj4gKyAqCj4+ICsg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQo+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KPj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4+ICsg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPj4gKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKPj4gKyAqIFNvZnR3YXJlLgo+PiArICoKPj4gKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+PiArICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKPj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCj4+ICsgKiBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTIElOIFRIRQo+PiArICogU09GVFdBUkUuCj4+ICsgKgo+PiArICogQXV0aG9yczoK Pj4gKyAqICAgIFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+PiArICov Cj4+ICsKPj4gKyNpZm5kZWYgSU5URUxfTU9DU19ICj4+ICsjZGVmaW5lIElOVEVMX01PQ1NfSAo+ PiArCj4+ICsvKioKPj4gKyAqIERPQzogTWVtb3J5IE9iamVjdHMgQ29udHJvbCBTdGF0ZSAoTU9D UykKPj4gKyAqCj4+ICsgKiBNb3RpdmF0aW9uOgo+PiArICogSW4gcHJldmlvdXMgR2VucyB0aGUg TU9DUyBzZXR0aW5ncyB3YXMgYSB2YWx1ZSB0aGF0IHdhcyBzZXQgYnkgdXNlciBsYW5kIGFzCj4+ ICsgKiBwYXJ0IG9mIHRoZSBiYXRjaC4gSW4gR2VuOSB0aGlzIGhhcyBjaGFuZ2VkIHRvIGJlIGEg c2luZ2xlIHRhYmxlIChwZXIgcmluZykKPj4gKyAqIHRoYXQgYWxsIGJhdGNoZXMgbm93IHJlZmVy ZW5jZSBieSBpbmRleCBpbnN0ZWFkIG9mIHByb2dyYW1taW5nIHRoZSBNT0NTCj4+ICsgKiBkaXJl Y3RseS4KPj4gKyAqCj4+ICsgKiBUaGUgb25lIHdyaW5rbGUgaW4gdGhpcyBpcyB0aGF0IG9ubHkg UEFSVCBvZiB0aGUgTU9DUyB0YWJsZXMgYXJlIGluY2x1ZGVkCj4+ICsgKiBpbiBjb250ZXh0IChU aGUgR0ZYX01PQ1NfMCAtIEdGWF9NT0NTXzY0IGFuZCB0aGUgTE5DRkNNT0NTMCAtIExOQ0ZDTU9D UzMyCj4+ICsgKiByZWdpc3RlcnMpLiBUaGUgcmVzdCBhcmUgbm90ICh0aGUgc2V0dGluZ3MgZm9y IHRoZSBvdGhlciByaW5ncykuCj4+ICsgKgo+PiArICogVGhpcyB0YWJsZSBuZWVkcyB0byBiZSBz ZXQgYXQgc3lzdGVtIHN0YXJ0LXVwIGJlY2F1c2UgdGhlIHdheSB0aGUgdGFibGUKPj4gKyAqIGlu dGVyYWN0cyB3aXRoIHRoZSBjb250ZXh0cyBhbmQgdGhlIEdtbUxpYiBpbnRlcmZhY2UuCj4+ICsg Kgo+PiArICoKPj4gKyAqIEltcGxlbWVudGF0aW9uOgo+PiArICoKPj4gKyAqIFRoZSB0YWJsZSBp cyBwcm9ncmFtbWVkIG9uIGEgcGxhdGZvcm0gYmFzaXMgZnJvbSBhIHRhYmxlIHRoYXQgaXMgZ2Vu ZXJhdGVkCj4+ICsgKiBmcm9tIHRoZSBvbmUgdGhhdCBoYXMgYmVlbiBhZ3JlZWQgYnkgdGhlIGRp ZmZlcmVudCByZXNwb25zaWJsZSBwYXJ0aWVzLiBUaGlzCj4+ICsgKiB0YWJsZXMgKG9uZSBwZXIg c3VwcG9ydGVkIHBsYXRmb3JtKSBpcyBkZWZpbmVkIGluIGludGVsX21vY3MuYyBhbmQgaXMKPj4g KyAqIHByb2dyYW1tZWQgaW4gdGhlIGZpcnN0IGJhdGNoIGFmdGVyIHRoZSBjb250ZXh0IGlzIGxv YWRlZCAod2l0aCB0aGUgaGFyZHdhcmUKPj4gKyAqIHdvcmthcm91bmRzKS4gVGhpcyB3aWxsIHRo ZW4gbGV0IHRoZSB1c3VhbCBjb250ZXh0IGhhbmRsaW5nIGtlZXAgdGhlIE1PQ1MgaW4KPj4gKyAq IHN0ZXAuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+ICsjaW5jbHVk ZSAiaTkxNV9kcnYuaCIKPj4gKwo+PiAraW50IGdlbjlfcHJvZ3JhbV9tb2NzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCj4+ICsJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPj4g Kwo+PiArI2VuZGlmCj4+ICsKPj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngKCi0tCiAgICBQZXRlciBBbnRvaW5lIChBbmRyb2lkIEdyYXBoaWNz IERyaXZlciBTb2Z0d2FyZSBFbmdpbmVlcikKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgSW50ZWwgQ29y cG9yYXRpb24gKFVLKSBMaW1pdGVkCiAgICBSZWdpc3RlcmVkIE5vLiAxMTM0OTQ1IChFbmdsYW5k KQogICAgUmVnaXN0ZXJlZCBPZmZpY2U6IFBpcGVycyBXYXksIFN3aW5kb24gU04zIDFSSgogICAg VkFUIE5vOiA4NjAgMjE3MyA0NwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=