From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaoguang Chen Subject: [PATCH v6 3/6] drm/i915/gvt: Frame buffer decoder support for GVT-g Date: Sat, 27 May 2017 16:38:49 +0800 Message-ID: <1495874332-2851-4-git-send-email-xiaoguang.chen@intel.com> References: <1495874332-2851-1-git-send-email-xiaoguang.chen@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1495874332-2851-1-git-send-email-xiaoguang.chen@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: alex.williamson@redhat.com, kraxel@redhat.com, chris@chris-wilson.co.uk, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, zhenyuw@linux.intel.com, zhiyuan.lv@intel.com, intel-gvt-dev@lists.freedesktop.org, zhi.a.wang@intel.com, kevin.tian@intel.com Cc: Xiaoguang Chen List-Id: intel-gfx@lists.freedesktop.org ZGVjb2RlIGZyYW1idWZmZXIgYXR0cmlidXRlcyBvZiBwcmltYXJ5LCBjdXJzb3IgYW5kIHNwcml0 ZSBwbGFuZQoKU2lnbmVkLW9mZi1ieTogWGlhb2d1YW5nIENoZW4gPHhpYW9ndWFuZy5jaGVuQGlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICAgIHwgICAz ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5jICAgIHwgICAyICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5oICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9mYl9kZWNvZGVyLmMgfCA0NzkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaCB8IDE2NiArKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCAgICAgICAgfCAgIDEgKwog NiBmaWxlcyBjaGFuZ2VkLCA2NTEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaAoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9NYWtlZmlsZQppbmRleCBiMTIzYzIwLi4xOTJjYTI2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlCkBAIC0xLDcgKzEsOCBAQAogR1ZUX0RJUiA6PSBndnQKIEdWVF9T T1VSQ0UgOj0gZ3Z0Lm8gYXBlcnR1cmVfZ20ubyBoYW5kbGVycy5vIHZncHUubyB0cmFjZV9wb2lu dHMubyBmaXJtd2FyZS5vIFwKIAlpbnRlcnJ1cHQubyBndHQubyBjZmdfc3BhY2UubyBvcHJlZ2lv bi5vIG1taW8ubyBkaXNwbGF5Lm8gZWRpZC5vIFwKLQlleGVjbGlzdC5vIHNjaGVkdWxlci5vIHNj aGVkX3BvbGljeS5vIHJlbmRlci5vIGNtZF9wYXJzZXIubworCWV4ZWNsaXN0Lm8gc2NoZWR1bGVy Lm8gc2NoZWRfcG9saWN5Lm8gcmVuZGVyLm8gY21kX3BhcnNlci5vIFwKKwlmYl9kZWNvZGVyLm8K IAogY2NmbGFncy15CQkJCSs9IC1JJChzcmMpIC1JJChzcmMpLyQoR1ZUX0RJUikgLVdhbGwKIGk5 MTUteQkJCQkJKz0gJChhZGRwcmVmaXggJChHVlRfRElSKS8sICQoR1ZUX1NPVVJDRSkpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2Rpc3BsYXkuYwppbmRleCBlMDI2MWZjLi5mNWY2M2M1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9kaXNwbGF5LmMKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGludCBlZHBfcGlw ZV9pc19lbmFibGVkKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQogCXJldHVybiAxOwogfQogCi1z dGF0aWMgaW50IHBpcGVfaXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgaW50IHBp cGUpCitpbnQgcGlwZV9pc19lbmFibGVkKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCBpbnQgcGlw ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2Z3B1LT5ndnQtPmRl dl9wcml2OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2Rpc3BsYXkuaAppbmRleCBkNzNkZTIyLi5iNDZi ODY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kaXNwbGF5LmgKQEAgLTE3OSw0ICsxNzksNiBAQCBp bnQgaW50ZWxfdmdwdV9pbml0X2Rpc3BsYXkoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHU2NCBy ZXNvbHV0aW9uKTsKIHZvaWQgaW50ZWxfdmdwdV9yZXNldF9kaXNwbGF5KHN0cnVjdCBpbnRlbF92 Z3B1ICp2Z3B1KTsKIHZvaWQgaW50ZWxfdmdwdV9jbGVhbl9kaXNwbGF5KHN0cnVjdCBpbnRlbF92 Z3B1ICp2Z3B1KTsKIAoraW50IHBpcGVfaXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdw dSwgaW50IHBpcGUpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9mYl9kZWNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NDA0ZmQKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5jCkBAIC0wLDAgKzEs NDc5IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICog U09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIEtldmluIFRpYW4gPGtldmluLnRpYW5A aW50ZWwuY29tPgorICoKKyAqIENvbnRyaWJ1dG9yczoKKyAqICAgIEJpbmcgTml1IDxiaW5nLm5p dUBpbnRlbC5jb20+CisgKiAgICBYdSBIYW4gPHh1LmhhbkBpbnRlbC5jb20+CisgKiAgICBQaW5n IEdhbyA8cGluZy5hLmdhb0BpbnRlbC5jb20+CisgKiAgICBYaWFvZ3VhbmcgQ2hlbiA8eGlhb2d1 YW5nLmNoZW5AaW50ZWwuY29tPgorICogICAgWWFuZyBMaXUgPHlhbmcyLmxpdUBpbnRlbC5jb20+ CisgKgorICovCisKKyNpbmNsdWRlIDx1YXBpL2RybS9kcm1fZm91cmNjLmg+CisjaW5jbHVkZSAi aTkxNV9kcnYuaCIKKyNpbmNsdWRlICJndnQuaCIKKworLyogVGhlIGJlbG93IGRlZmluaXRpb25z IGFyZSByZXF1aXJlZCBieSBndWVzdC4gKi8KKy8vIFs2MzowXSB4OlI6RzpCIDE2OjE2OjE2OjE2 IGxpdHRsZSBlbmRpYW4KKyNkZWZpbmUgRFJNX0ZPUk1BVF9YUkdCMTYxNjE2X0dWVCAgZm91cmNj X2NvZGUoJ1gnLCAnUicsICc0JywgJzgnKQorLy8gWzYzOjBdIHg6QjpHOlIgMTY6MTY6MTY6MTYg bGl0dGxlIGVuZGlhbgorI2RlZmluZSBEUk1fRk9STUFUX1hCR1IxNjE2MTZfR1ZUICBmb3VyY2Nf Y29kZSgnWCcsICdCJywgJzQnLCAnOCcpCisKKyNkZWZpbmUgRk9STUFUX05VTQkxNgorc3RydWN0 IHBpeGVsX2Zvcm1hdCB7CisJaW50CWRybV9mb3JtYXQ7CS8qIFBpeGVsIGZvcm1hdCBpbiBEUk0g ZGVmaW5pdGlvbiAqLworCWludAlicHA7CQkvKiBCaXRzIHBlciBwaXhlbCwgMCBpbmRpY2F0ZXMg aW52YWxpZCAqLworCWNoYXIgKmRlc2M7CQkvKiBUaGUgZGVzY3JpcHRpb24gKi8KK307CisKKy8q IG5vbi1zdXBwb3J0ZWQgZm9ybWF0IGhhcyBicHAgZGVmYXVsdCB0byAwICovCitzdGF0aWMgc3Ry dWN0IHBpeGVsX2Zvcm1hdCBwcmltYXJ5X3BpeGVsX2Zvcm1hdHNbRk9STUFUX05VTV0gPSB7CisJ WzB4Ml0gPSB7RFJNX0ZPUk1BVF9DOCwgOCwgIjgtYml0IEluZGV4ZWQifSwKKwlbMHg1XSA9IHtE Uk1fRk9STUFUX1JHQjU2NSwgMTYsICIxNi1iaXQgQkdSWCAoNTo2OjUgTVNCLVI6RzpCKSJ9LAor CVsweDZdID0ge0RSTV9GT1JNQVRfWFJHQjg4ODgsIDMyLAorCQkiMzItYml0IEJHUlggKDg6ODo4 OjggTVNCLVg6UjpHOkIpIn0sCisJWzB4OF0gPSB7RFJNX0ZPUk1BVF9YQkdSMjEwMTAxMCwgMzIs CisJCSIzMi1iaXQgUkdCWCAoMjoxMDoxMDoxMCBNU0ItWDpCOkc6UikifSwKKwlbMHhhXSA9IHtE Uk1fRk9STUFUX1hSR0IyMTAxMDEwLCAzMiwKKwkJIjMyLWJpdCBCR1JYICgyOjEwOjEwOjEwIE1T Qi1YOlI6RzpCKSJ9LAorCVsweGNdID0ge0RSTV9GT1JNQVRfWFJHQjE2MTYxNl9HVlQsIDY0LAor CQkiNjQtYml0IFJHQlggRmxvYXRpbmcgUG9pbnQoMTY6MTY6MTY6MTYgTVNCLVg6QjpHOlIpIn0s CisJWzB4ZV0gPSB7RFJNX0ZPUk1BVF9YQkdSODg4OCwgMzIsCisJCSIzMi1iaXQgUkdCWCAoODo4 Ojg6OCBNU0ItWDpCOkc6UikifSwKK307CisKKy8qIG5vbi1zdXBwb3J0ZWQgZm9ybWF0IGhhcyBi cHAgZGVmYXVsdCB0byAwICovCitzdGF0aWMgc3RydWN0IHBpeGVsX2Zvcm1hdCBza2xfcGl4ZWxf Zm9ybWF0c1tdID0geworCXtEUk1fRk9STUFUX1lVWVYsIDE2LCAiMTYtYml0IHBhY2tlZCBZVVlW ICg4Ojg6ODo4IE1TQi1WOlkyOlU6WTEpIn0sCisJe0RSTV9GT1JNQVRfVVlWWSwgMTYsICIxNi1i aXQgcGFja2VkIFVZVlkgKDg6ODo4OjggTVNCLVkyOlY6WTE6VSkifSwKKwl7RFJNX0ZPUk1BVF9Z VllVLCAxNiwgIjE2LWJpdCBwYWNrZWQgWVZZVSAoODo4Ojg6OCBNU0ItVTpZMjpWOlkxKSJ9LAor CXtEUk1fRk9STUFUX1ZZVVksIDE2LCAiMTYtYml0IHBhY2tlZCBWWVVZICg4Ojg6ODo4IE1TQi1Z MjpVOlkxOlYpIn0sCisKKwl7RFJNX0ZPUk1BVF9DOCwgOCwgIjgtYml0IEluZGV4ZWQifSwKKwl7 RFJNX0ZPUk1BVF9SR0I1NjUsIDE2LCAiMTYtYml0IEJHUlggKDU6Njo1IE1TQi1SOkc6QikifSwK Kwl7RFJNX0ZPUk1BVF9BQkdSODg4OCwgMzIsICIzMi1iaXQgUkdCQSAoODo4Ojg6OCBNU0ItQTpC Okc6UikifSwKKwl7RFJNX0ZPUk1BVF9YQkdSODg4OCwgMzIsICIzMi1iaXQgUkdCWCAoODo4Ojg6 OCBNU0ItWDpCOkc6UikifSwKKworCXtEUk1fRk9STUFUX0FSR0I4ODg4LCAzMiwgIjMyLWJpdCBC R1JBICg4Ojg6ODo4IE1TQi1BOlI6RzpCKSJ9LAorCXtEUk1fRk9STUFUX1hSR0I4ODg4LCAzMiwg IjMyLWJpdCBCR1JYICg4Ojg6ODo4IE1TQi1YOlI6RzpCKSJ9LAorCXtEUk1fRk9STUFUX1hCR1Iy MTAxMDEwLCAzMiwgIjMyLWJpdCBSR0JYICgyOjEwOjEwOjEwIE1TQi1YOkI6RzpSKSJ9LAorCXtE Uk1fRk9STUFUX1hSR0IyMTAxMDEwLCAzMiwgIjMyLWJpdCBCR1JYICgyOjEwOjEwOjEwIE1TQi1Y OlI6RzpCKSJ9LAorCisJe0RSTV9GT1JNQVRfWFJHQjE2MTYxNl9HVlQsIDY0LAorCQkiNjQtYml0 IFhSR0IgKDE2OjE2OjE2OjE2IE1TQi1YOlI6RzpCKSJ9LAorCXtEUk1fRk9STUFUX1hCR1IxNjE2 MTZfR1ZULCA2NCwKKwkJIjY0LWJpdCBYQkdSICgxNjoxNjoxNjoxNiBNU0ItWDpCOkc6UikifSwK KworCS8qIG5vbi1zdXBwb3J0ZWQgZm9ybWF0IGhhcyBicHAgZGVmYXVsdCB0byAwICovCisJezAs IDAsIE5VTEx9LAorfTsKKworc3RhdGljIGludCBza2xfZm9ybWF0X3RvX2RybShpbnQgZm9ybWF0 LCBib29sIHJnYl9vcmRlciwgYm9vbCBhbHBoYSwKKwlpbnQgeXV2X29yZGVyKQoreworCWludCBz a2xfcGl4ZWxfZm9ybWF0c19pbmRleCA9IDE0OworCisJc3dpdGNoIChmb3JtYXQpIHsKKwljYXNl IFBMQU5FX0NUTF9GT1JNQVRfSU5ERVhFRDoKKwkJc2tsX3BpeGVsX2Zvcm1hdHNfaW5kZXggPSA0 OworCQlicmVhazsKKwljYXNlIFBMQU5FX0NUTF9GT1JNQVRfUkdCXzU2NToKKwkJc2tsX3BpeGVs X2Zvcm1hdHNfaW5kZXggPSA1OworCQlicmVhazsKKwljYXNlIFBMQU5FX0NUTF9GT1JNQVRfWFJH Ql84ODg4OgorCQlpZiAocmdiX29yZGVyKQorCQkJc2tsX3BpeGVsX2Zvcm1hdHNfaW5kZXggPSBh bHBoYSA/IDYgOiA3OworCQllbHNlCisJCQlza2xfcGl4ZWxfZm9ybWF0c19pbmRleCA9IGFscGhh ID8gOCA6IDk7CisJCWJyZWFrOworCWNhc2UgUExBTkVfQ1RMX0ZPUk1BVF9YUkdCXzIxMDEwMTA6 CisJCXNrbF9waXhlbF9mb3JtYXRzX2luZGV4ID0gcmdiX29yZGVyID8gMTAgOiAxMTsKKwkJYnJl YWs7CisKKwljYXNlIFBMQU5FX0NUTF9GT1JNQVRfWFJHQl8xNjE2MTYxNkY6CisJCXNrbF9waXhl bF9mb3JtYXRzX2luZGV4ID0gcmdiX29yZGVyID8gMTIgOiAxMzsKKwkJYnJlYWs7CisKKwljYXNl IFBMQU5FX0NUTF9GT1JNQVRfWVVWNDIyOgorCQlza2xfcGl4ZWxfZm9ybWF0c19pbmRleCA9IHl1 dl9vcmRlciA+PiAxNjsKKwkJaWYgKHNrbF9waXhlbF9mb3JtYXRzX2luZGV4ID4gMykKKwkJCXJl dHVybiAtRUlOVkFMOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCXJl dHVybiBza2xfcGl4ZWxfZm9ybWF0c19pbmRleDsKK30KKworc3RhdGljIHUzMiBpbnRlbF92Z3B1 X2dldF9zdHJpZGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIGludCBwaXBlLAorCXUzMiB0aWxl ZCwgaW50IHN0cmlkZV9tYXNrLCBpbnQgYnBwKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHZncHUtPmd2dC0+ZGV2X3ByaXY7CisKKwl1MzIgc3RyaWRlX3JlZyA9IHZn cHVfdnJlZyh2Z3B1LCBEU1BTVFJJREUocGlwZSkpICYgc3RyaWRlX21hc2s7CisJdTMyIHN0cmlk ZSA9IHN0cmlkZV9yZWc7CisKKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKKwkJc3dpdGNo ICh0aWxlZCkgeworCQljYXNlIFBMQU5FX0NUTF9USUxFRF9MSU5FQVI6CisJCQlzdHJpZGUgPSBz dHJpZGVfcmVnICogNjQ7CisJCQlicmVhazsKKwkJY2FzZSBQTEFORV9DVExfVElMRURfWDoKKwkJ CXN0cmlkZSA9IHN0cmlkZV9yZWcgKiA1MTI7CisJCQlicmVhazsKKwkJY2FzZSBQTEFORV9DVExf VElMRURfWToKKwkJCXN0cmlkZSA9IHN0cmlkZV9yZWcgKiAxMjg7CisJCQlicmVhazsKKwkJY2Fz ZSBQTEFORV9DVExfVElMRURfWUY6CisJCQlpZiAoYnBwID09IDgpCisJCQkJc3RyaWRlID0gc3Ry aWRlX3JlZyAqIDY0OworCQkJZWxzZSBpZiAoYnBwID09IDE2IHx8IGJwcCA9PSAzMiB8fCBicHAg PT0gNjQpCisJCQkJc3RyaWRlID0gc3RyaWRlX3JlZyAqIDEyODsKKwkJCWVsc2UKKwkJCQlndnRf ZGJnX2NvcmUoInNrbDogdW5zdXBwb3J0ZWQgYnBwOiVkXG4iLCBicHApOworCQkJYnJlYWs7CisJ CWRlZmF1bHQ6CisJCQlndnRfZGJnX2NvcmUoInNrbDogdW5zdXBwb3J0ZWQgdGlsZSBmb3JtYXQ6 JXhcbiIsCisJCQkJdGlsZWQpOworCQl9CisJfQorCisJcmV0dXJuIHN0cmlkZTsKK30KKworc3Rh dGljIGludCBpbnRlbF92Z3B1X2RlY29kZV9wcmltYXJ5X3BsYW5lX2Zvcm1hdChzdHJ1Y3QgaW50 ZWxfdmdwdSAqdmdwdSwKKwlpbnQgcGlwZSwgc3RydWN0IGludGVsX3ZncHVfcHJpbWFyeV9wbGFu ZV9mb3JtYXQgKnBsYW5lKQoreworCXUzMgl2YWwsIGZtdDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB2Z3B1LT5ndnQtPmRldl9wcml2OworCisJdmFsID0gdmdwdV92cmVn KHZncHUsIERTUENOVFIocGlwZSkpOworCXBsYW5lLT5lbmFibGVkID0gISEodmFsICYgRElTUExB WV9QTEFORV9FTkFCTEUpOworCWlmICghcGxhbmUtPmVuYWJsZWQpCisJCXJldHVybiAwOworCisJ aWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7CisJCXBsYW5lLT50aWxlZCA9ICh2YWwgJiBQTEFO RV9DVExfVElMRURfTUFTSykgPj4KKwkJX1BMQU5FX0NUTF9USUxFRF9TSElGVDsKKwkJZm10ID0g c2tsX2Zvcm1hdF90b19kcm0oCisJCQl2YWwgJiBQTEFORV9DVExfRk9STUFUX01BU0ssCisJCQl2 YWwgJiBQTEFORV9DVExfT1JERVJfUkdCWCwKKwkJCXZhbCAmIFBMQU5FX0NUTF9BTFBIQV9NQVNL LAorCQkJdmFsICYgUExBTkVfQ1RMX1lVVjQyMl9PUkRFUl9NQVNLKTsKKwkJcGxhbmUtPmJwcCA9 IHNrbF9waXhlbF9mb3JtYXRzW2ZtdF0uYnBwOworCQlwbGFuZS0+ZHJtX2Zvcm1hdCA9IHNrbF9w aXhlbF9mb3JtYXRzW2ZtdF0uZHJtX2Zvcm1hdDsKKwl9IGVsc2UgeworCQlwbGFuZS0+dGlsZWQg PSAhISh2YWwgJiBESVNQUExBTkVfVElMRUQpOworCQlmbXQgPSAodmFsICYgRElTUFBMQU5FX1BJ WEZPUk1BVF9NQVNLKSA+PiBfUFJJX1BMQU5FX0ZNVF9TSElGVDsKKwkJcGxhbmUtPmJwcCA9IHBy aW1hcnlfcGl4ZWxfZm9ybWF0c1tmbXRdLmJwcDsKKwkJcGxhbmUtPmRybV9mb3JtYXQgPSBwcmlt YXJ5X3BpeGVsX2Zvcm1hdHNbZm10XS5kcm1fZm9ybWF0OworCX0KKworCWlmICgoSVNfU0tZTEFL RShkZXZfcHJpdikgJiYgIXNrbF9waXhlbF9mb3JtYXRzW2ZtdF0uYnBwKQorCQl8fCAoIUlTX1NL WUxBS0UoZGV2X3ByaXYpICYmCisJCQkhcHJpbWFyeV9waXhlbF9mb3JtYXRzW2ZtdF0uYnBwKSkg eworCQlndnRfdmdwdV9lcnIoIk5vbi1zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICgweCV4KVxuIiwg Zm10KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcGxhbmUtPmh3X2Zvcm1hdCA9IGZtdDsK KworCXBsYW5lLT5iYXNlID0gdmdwdV92cmVnKHZncHUsIERTUFNVUkYocGlwZSkpICYgR1RUX1BB R0VfTUFTSzsKKworCXBsYW5lLT5zdHJpZGUgPSBpbnRlbF92Z3B1X2dldF9zdHJpZGUodmdwdSwg cGlwZSwgKHBsYW5lLT50aWxlZCA8PCAxMCksCisJCShJU19TS1lMQUtFKGRldl9wcml2KSkgPyAo X1BSSV9QTEFORV9TVFJJREVfTUFTSyA+PiA2KSA6CisJCV9QUklfUExBTkVfU1RSSURFX01BU0ss IHBsYW5lLT5icHApOworCisJcGxhbmUtPndpZHRoID0gKHZncHVfdnJlZyh2Z3B1LCBQSVBFU1JD KHBpcGUpKSAmIF9QSVBFX0hfU1JDU1pfTUFTSykgPj4KKwkJX1BJUEVfSF9TUkNTWl9TSElGVDsK KwlwbGFuZS0+d2lkdGggKz0gMTsKKwlwbGFuZS0+aGVpZ2h0ID0gKHZncHVfdnJlZyh2Z3B1LCBQ SVBFU1JDKHBpcGUpKSAmCisJCQlfUElQRV9WX1NSQ1NaX01BU0spID4+IF9QSVBFX1ZfU1JDU1pf U0hJRlQ7CisJcGxhbmUtPmhlaWdodCArPSAxOwkvKiByYXcgaGVpZ2h0IGlzIG9uZSBtaW51cyB0 aGUgcmVhbCB2YWx1ZSAqLworCisJdmFsID0gdmdwdV92cmVnKHZncHUsIERTUFRJTEVPRkYocGlw ZSkpOworCXBsYW5lLT54X29mZnNldCA9ICh2YWwgJiBfUFJJX1BMQU5FX1hfT0ZGX01BU0spID4+ CisJCV9QUklfUExBTkVfWF9PRkZfU0hJRlQ7CisJcGxhbmUtPnlfb2Zmc2V0ID0gKHZhbCAmIF9Q UklfUExBTkVfWV9PRkZfTUFTSykgPj4KKwkJX1BSSV9QTEFORV9ZX09GRl9TSElGVDsKKworCXJl dHVybiAwOworfQorCisjZGVmaW5lIENVUlNPUl9NT0RFX05VTQkoMSA8PCA2KQorc3RydWN0IGN1 cnNvcl9tb2RlX2Zvcm1hdCB7CisJaW50CWRybV9mb3JtYXQ7CS8qIFBpeGVsIGZvcm1hdCBpbiBE Uk0gZGVmaW5pdGlvbiAqLworCXU4CWJwcDsJCS8qIEJpdHMgcGVyIHBpeGVsOyAwIGluZGljYXRl cyBpbnZhbGlkICovCisJdTMyCXdpZHRoOwkJLyogSW4gcGl4ZWwgKi8KKwl1MzIJaGVpZ2h0OwkJ LyogSW4gbGluZXMgKi8KKwljaGFyCSpkZXNjOwkJLyogVGhlIGRlc2NyaXB0aW9uICovCit9Owor CisvKiBub24tc3VwcG9ydGVkIGZvcm1hdCBoYXMgYnBwIGRlZmF1bHQgdG8gMCAqLworc3RhdGlj IHN0cnVjdCBjdXJzb3JfbW9kZV9mb3JtYXQgY3Vyc29yX3BpeGVsX2Zvcm1hdHNbQ1VSU09SX01P REVfTlVNXSA9IHsKKwlbMHgyMl0gID0ge0RSTV9GT1JNQVRfQVJHQjg4ODgsIDMyLCAxMjgsIDEy OCwgIjEyOHgxMjggMzJicHAgQVJHQiJ9LAorCVsweDIzXSAgPSB7RFJNX0ZPUk1BVF9BUkdCODg4 OCwgMzIsIDI1NiwgMjU2LCAiMjU2eDI1NiAzMmJwcCBBUkdCIn0sCisJWzB4MjddICA9IHtEUk1f Rk9STUFUX0FSR0I4ODg4LCAzMiwgNjQsIDY0LCAiNjR4NjQgMzJicHAgQVJHQiJ9LAorCVsweDdd ICA9IHtEUk1fRk9STUFUX0FSR0I4ODg4LCAzMiwgNjQsIDY0LCAiNjR4NjQgMzJicHAgQVJHQiJ9 LAorfTsKKworc3RhdGljIGludCBpbnRlbF92Z3B1X2RlY29kZV9jdXJzb3JfcGxhbmVfZm9ybWF0 KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAorCWludCBwaXBlLCBzdHJ1Y3QgaW50ZWxfdmdwdV9j dXJzb3JfcGxhbmVfZm9ybWF0ICpwbGFuZSkKK3sKKwl1MzIgdmFsLCBtb2RlOworCXUzMiBhbHBo YV9wbGFuZSwgYWxwaGFfZm9yY2U7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdmdwdS0+Z3Z0LT5kZXZfcHJpdjsKKworCXZhbCA9IHZncHVfdnJlZyh2Z3B1LCBDVVJDTlRS KHBpcGUpKTsKKwltb2RlID0gdmFsICYgQ1VSU09SX01PREU7CisJcGxhbmUtPmVuYWJsZWQgPSAo bW9kZSAhPSBDVVJTT1JfTU9ERV9ESVNBQkxFKTsKKwlpZiAoIXBsYW5lLT5lbmFibGVkKQorCQly ZXR1cm4gMDsKKworCWlmICghY3Vyc29yX3BpeGVsX2Zvcm1hdHNbbW9kZV0uYnBwKSB7CisJCWd2 dF92Z3B1X2VycigiTm9uLXN1cHBvcnRlZCBjdXJzb3IgbW9kZSAoMHgleClcbiIsIG1vZGUpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJcGxhbmUtPm1vZGUgPSBtb2RlOworCXBsYW5lLT5icHAg PSBjdXJzb3JfcGl4ZWxfZm9ybWF0c1ttb2RlXS5icHA7CisJcGxhbmUtPmRybV9mb3JtYXQgPSBj dXJzb3JfcGl4ZWxfZm9ybWF0c1ttb2RlXS5kcm1fZm9ybWF0OworCXBsYW5lLT53aWR0aCA9IGN1 cnNvcl9waXhlbF9mb3JtYXRzW21vZGVdLndpZHRoOworCXBsYW5lLT5oZWlnaHQgPSBjdXJzb3Jf cGl4ZWxfZm9ybWF0c1ttb2RlXS5oZWlnaHQ7CisKKwlhbHBoYV9wbGFuZSA9ICh2YWwgJiBfQ1VS U09SX0FMUEhBX1BMQU5FX01BU0spID4+CisJCQkJX0NVUlNPUl9BTFBIQV9QTEFORV9TSElGVDsK KwlhbHBoYV9mb3JjZSA9ICh2YWwgJiBfQ1VSU09SX0FMUEhBX0ZPUkNFX01BU0spID4+CisJCQkJ X0NVUlNPUl9BTFBIQV9GT1JDRV9TSElGVDsKKwlpZiAoYWxwaGFfcGxhbmUgfHwgYWxwaGFfZm9y Y2UpCisJCWd2dF9kYmdfY29yZSgiYWxwaGFfcGxhbmU9MHgleCwgYWxwaGFfZm9yY2U9MHgleFxu IiwKKwkJCWFscGhhX3BsYW5lLCBhbHBoYV9mb3JjZSk7CisKKwlwbGFuZS0+YmFzZSA9IHZncHVf dnJlZyh2Z3B1LCBDVVJCQVNFKHBpcGUpKSAmIEdUVF9QQUdFX01BU0s7CisKKwl2YWwgPSB2Z3B1 X3ZyZWcodmdwdSwgQ1VSUE9TKHBpcGUpKTsKKwlwbGFuZS0+eF9wb3MgPSAodmFsICYgX0NVUlNP Ul9QT1NfWF9NQVNLKSA+PiBfQ1VSU09SX1BPU19YX1NISUZUOworCXBsYW5lLT54X3NpZ24gPSAo dmFsICYgX0NVUlNPUl9TSUdOX1hfTUFTSykgPj4gX0NVUlNPUl9TSUdOX1hfU0hJRlQ7CisJcGxh bmUtPnlfcG9zID0gKHZhbCAmIF9DVVJTT1JfUE9TX1lfTUFTSykgPj4gX0NVUlNPUl9QT1NfWV9T SElGVDsKKwlwbGFuZS0+eV9zaWduID0gKHZhbCAmIF9DVVJTT1JfU0lHTl9ZX01BU0spID4+IF9D VVJTT1JfU0lHTl9ZX1NISUZUOworCisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgRk9STUFUX05V TV9TUlJJVEUJKDEgPDwgMykKKworc3RhdGljIHN0cnVjdCBwaXhlbF9mb3JtYXQgc3ByaXRlX3Bp eGVsX2Zvcm1hdHNbRk9STUFUX05VTV9TUlJJVEVdID0geworCVsweDBdICA9IHtEUk1fRk9STUFU X1lVVjQyMiwgMTYsICJZVVYgMTYtYml0IDQ6MjoyIHBhY2tlZCJ9LAorCVsweDFdICA9IHtEUk1f Rk9STUFUX1hSR0IyMTAxMDEwLCAzMiwgIlJHQiAzMi1iaXQgMjoxMDoxMDoxMCJ9LAorCVsweDJd ICA9IHtEUk1fRk9STUFUX1hSR0I4ODg4LCAzMiwgIlJHQiAzMi1iaXQgODo4Ojg6OCJ9LAorCVsw eDNdICA9IHtEUk1fRk9STUFUX1hSR0IxNjE2MTZfR1ZULCA2NCwKKwkJICAgICJSR0IgNjQtYml0 IDE2OjE2OjE2OjE2IEZsb2F0aW5nIFBvaW50In0sCisJWzB4NF0gPSB7RFJNX0ZPUk1BVF9BWVVW LCAzMiwKKwkJIllVViAzMi1iaXQgNDo0OjQgcGFja2VkICg4Ojg6ODo4IE1TQi1YOlk6VTpWKSJ9 LAorfTsKKworc3RhdGljIGludCBpbnRlbF92Z3B1X2RlY29kZV9zcHJpdGVfcGxhbmVfZm9ybWF0 KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAorCWludCBwaXBlLCBzdHJ1Y3QgaW50ZWxfdmdwdV9z cHJpdGVfcGxhbmVfZm9ybWF0ICpwbGFuZSkKK3sKKwl1MzIgdmFsLCBmbXQ7CisJdTMyIHdpZHRo OworCXUzMiBjb2xvcl9vcmRlciwgeXV2X29yZGVyOworCWludCBkcm1fZm9ybWF0OworCisJdmFs ID0gdmdwdV92cmVnKHZncHUsIFNQUkNUTChwaXBlKSk7CisJcGxhbmUtPmVuYWJsZWQgPSAhISh2 YWwgJiBTUFJJVEVfRU5BQkxFKTsKKwlpZiAoIXBsYW5lLT5lbmFibGVkKQorCQlyZXR1cm4gMDsK KworCXBsYW5lLT50aWxlZCA9ICEhKHZhbCAmIFNQUklURV9USUxFRCk7CisJY29sb3Jfb3JkZXIg PSAhISh2YWwgJiBTUFJJVEVfUkdCX09SREVSX1JHQlgpOworCXl1dl9vcmRlciA9ICh2YWwgJiBT UFJJVEVfWVVWX0JZVEVfT1JERVJfTUFTSykgPj4KKwkJCQlfU1BSSVRFX1lVVl9PUkRFUl9TSElG VDsKKworCWZtdCA9ICh2YWwgJiBTUFJJVEVfUElYRk9STUFUX01BU0spID4+IF9TUFJJVEVfRk1U X1NISUZUOworCWlmICghc3ByaXRlX3BpeGVsX2Zvcm1hdHNbZm10XS5icHApIHsKKwkJZ3Z0X3Zn cHVfZXJyKCJOb24tc3VwcG9ydGVkIHBpeGVsIGZvcm1hdCAoMHgleClcbiIsIGZtdCk7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKwlwbGFuZS0+aHdfZm9ybWF0ID0gZm10OworCXBsYW5lLT5icHAg PSBzcHJpdGVfcGl4ZWxfZm9ybWF0c1tmbXRdLmJwcDsKKwlkcm1fZm9ybWF0ID0gc3ByaXRlX3Bp eGVsX2Zvcm1hdHNbZm10XS5kcm1fZm9ybWF0OworCisJLyogT3JkZXIgb2YgUkdCIHZhbHVlcyBp biBhbiBSR0J4eHggYnVmZmVyIG1heSBiZSBvcmRlcmVkIFJHQiBvcgorCSAqIEJHUiBkZXBlbmRp bmcgb24gdGhlIHN0YXRlIG9mIHRoZSBjb2xvcl9vcmRlciBmaWVsZAorCSAqLworCWlmICghY29s b3Jfb3JkZXIpIHsKKwkJaWYgKGRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCkK KwkJCWRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOworCQllbHNlIGlmIChkcm1f Zm9ybWF0ID09IERSTV9GT1JNQVRfWFJHQjg4ODgpCisJCQlkcm1fZm9ybWF0ID0gRFJNX0ZPUk1B VF9YQkdSODg4ODsKKwl9CisKKwlpZiAoZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1lVVjQyMikg eworCQlzd2l0Y2ggKHl1dl9vcmRlcikgeworCQljYXNlCTA6CisJCQlkcm1fZm9ybWF0ID0gRFJN X0ZPUk1BVF9ZVVlWOworCQkJYnJlYWs7CisJCWNhc2UJMToKKwkJCWRybV9mb3JtYXQgPSBEUk1f Rk9STUFUX1VZVlk7CisJCQlicmVhazsKKwkJY2FzZQkyOgorCQkJZHJtX2Zvcm1hdCA9IERSTV9G T1JNQVRfWVZZVTsKKwkJCWJyZWFrOworCQljYXNlCTM6CisJCQlkcm1fZm9ybWF0ID0gRFJNX0ZP Uk1BVF9WWVVZOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQkvKiB5dXZfb3JkZXIgaGFzIG9u bHkgMiBiaXRzICovCisJCQlicmVhazsKKwkJfQorCX0KKworCXBsYW5lLT5kcm1fZm9ybWF0ID0g ZHJtX2Zvcm1hdDsKKworCXBsYW5lLT5iYXNlID0gdmdwdV92cmVnKHZncHUsIFNQUlNVUkYocGlw ZSkpICYgR1RUX1BBR0VfTUFTSzsKKwlwbGFuZS0+d2lkdGggPSB2Z3B1X3ZyZWcodmdwdSwgU1BS U1RSSURFKHBpcGUpKSAmCisJCQkJX1NQUklURV9TVFJJREVfTUFTSzsKKwlwbGFuZS0+d2lkdGgg Lz0gcGxhbmUtPmJwcCAvIDg7CS8qIHJhdyB3aWR0aCBpbiBieXRlcyAqLworCisJdmFsID0gdmdw dV92cmVnKHZncHUsIFNQUlNJWkUocGlwZSkpOworCXBsYW5lLT5oZWlnaHQgPSAodmFsICYgX1NQ UklURV9TSVpFX0hFSUdIVF9NQVNLKSA+PgorCQlfU1BSSVRFX1NJWkVfSEVJR0hUX1NISUZUOwor CXdpZHRoID0gKHZhbCAmIF9TUFJJVEVfU0laRV9XSURUSF9NQVNLKSA+PiBfU1BSSVRFX1NJWkVf V0lEVEhfU0hJRlQ7CisJcGxhbmUtPmhlaWdodCArPSAxOwkvKiByYXcgaGVpZ2h0IGlzIG9uZSBt aW51cyB0aGUgcmVhbCB2YWx1ZSAqLworCXdpZHRoICs9IDE7CQkvKiByYXcgd2lkdGggaXMgb25l IG1pbnVzIHRoZSByZWFsIHZhbHVlICovCisJaWYgKHBsYW5lLT53aWR0aCAhPSB3aWR0aCkKKwkJ Z3Z0X2RiZ19jb3JlKCJzcHJpdGVfcGxhbmU6IHBsYW5lLT53aWR0aD0lZCwgd2lkdGg9JWRcbiIs CisJCQlwbGFuZS0+d2lkdGgsIHdpZHRoKTsKKworCXZhbCA9IHZncHVfdnJlZyh2Z3B1LCBTUFJQ T1MocGlwZSkpOworCXBsYW5lLT54X3BvcyA9ICh2YWwgJiBfU1BSSVRFX1BPU19YX01BU0spID4+ IF9TUFJJVEVfUE9TX1hfU0hJRlQ7CisJcGxhbmUtPnlfcG9zID0gKHZhbCAmIF9TUFJJVEVfUE9T X1lfTUFTSykgPj4gX1NQUklURV9QT1NfWV9TSElGVDsKKworCXZhbCA9IHZncHVfdnJlZyh2Z3B1 LCBTUFJPRkZTRVQocGlwZSkpOworCXBsYW5lLT54X29mZnNldCA9ICh2YWwgJiBfU1BSSVRFX09G RlNFVF9TVEFSVF9YX01BU0spID4+CisJCQkgICBfU1BSSVRFX09GRlNFVF9TVEFSVF9YX1NISUZU OworCXBsYW5lLT55X29mZnNldCA9ICh2YWwgJiBfU1BSSVRFX09GRlNFVF9TVEFSVF9ZX01BU0sp ID4+CisJCQkgICBfU1BSSVRFX09GRlNFVF9TVEFSVF9ZX1NISUZUOworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGludGVsX3ZncHVfZGVjb2RlX2ZiX2Zvcm1hdChzdHJ1Y3QgaW50ZWxfZ3Z0 ICpndnQsIGludCBpZCwKKwlzdHJ1Y3QgaW50ZWxfdmdwdV9mYl9mb3JtYXQgKmZiKQoreworCWlu dCBpOworCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gTlVMTDsKKwlpbnQgcmV0ID0gMDsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndnQtPmRldl9wcml2OworCisJaWYg KCFmYikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBUT0RPOiB1c2UgZmluZS1ncmFpbmVkIHJl ZmNudCBsYXRlciAqLworCW11dGV4X2xvY2soJmd2dC0+bG9jayk7CisKKwlmb3JfZWFjaF9hY3Rp dmVfdmdwdShndnQsIHZncHUsIGkpCisJCWlmICh2Z3B1LT5pZCA9PSBpZCkKKwkJCWJyZWFrOwor CisJaWYgKCF2Z3B1KSB7CisJCWd2dF92Z3B1X2VycigiSW52YWxpZCB2Z3B1IElEICglZClcbiIs IGlkKTsKKwkJbXV0ZXhfdW5sb2NrKCZndnQtPmxvY2spOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9 CisKKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9NQVhfUElQRVM7IGkrKykgeworCQlzdHJ1Y3QgaW50 ZWxfdmdwdV9waXBlX2Zvcm1hdCAqcGlwZSA9ICZmYi0+cGlwZXNbaV07CisJCXUzMiBkZGlfZnVu Y19jdGwgPSB2Z3B1X3ZyZWcodmdwdSwgVFJBTlNfRERJX0ZVTkNfQ1RMKGkpKTsKKworCQlpZiAo IShkZGlfZnVuY19jdGwgJiBUUkFOU19ERElfRlVOQ19FTkFCTEUpKSB7CisJCQlwaXBlLT5kZGlf cG9ydCA9IERESV9QT1JUX05PTkU7CisJCX0gZWxzZSB7CisJCQl1MzIgcG9ydCA9IChkZGlfZnVu Y19jdGwgJiBUUkFOU19ERElfUE9SVF9NQVNLKSA+PgorCQkJCQkJVFJBTlNfRERJX1BPUlRfU0hJ RlQ7CisJCQlpZiAocG9ydCA8PSBERElfUE9SVF9FKQorCQkJCXBpcGUtPmRkaV9wb3J0ID0gcG9y dDsKKwkJCWVsc2UKKwkJCQlwaXBlLT5kZGlfcG9ydCA9IERESV9QT1JUX05PTkU7CisJCX0KKwor CQlyZXQgfD0gaW50ZWxfdmdwdV9kZWNvZGVfcHJpbWFyeV9wbGFuZV9mb3JtYXQodmdwdSwKKwkJ CWksICZwaXBlLT5wcmltYXJ5KTsKKwkJcmV0IHw9IGludGVsX3ZncHVfZGVjb2RlX3Nwcml0ZV9w bGFuZV9mb3JtYXQodmdwdSwKKwkJCWksICZwaXBlLT5zcHJpdGUpOworCQlyZXQgfD0gaW50ZWxf dmdwdV9kZWNvZGVfY3Vyc29yX3BsYW5lX2Zvcm1hdCh2Z3B1LAorCQkJaSwgJnBpcGUtPmN1cnNv cik7CisKKwkJaWYgKHJldCkgeworCQkJZ3Z0X3ZncHVfZXJyKCJEZWNvZGUgZm9ybWF0IGVycm9y IGZvciBwaXBlKCVkKVxuIiwgaSk7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCX0K Kwl9CisKKwltdXRleF91bmxvY2soJmd2dC0+bG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisv KioKKyAqIGludGVsX3ZncHVfZGVjb2RlX3BsYW5lIC0gRGVjb2RlIHBsYW5lIGJhc2VkIG9uIHBs YW5lIGlkCisgKiBAZGV2OiBkcm0gZGV2aWNlCisgKiBAdmdwdTogaW5wdXQgdmdwdQorICogVGhp cyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGRlY29kaW5nIHBsYW5lCisgKgorICogUmV0dXJuczoK KyAqIHBpcGUgb24gc3VjY2VzcywgTlVMTCBpZiBmYWlsZWQuCisgKi8KK3N0cnVjdCBpbnRlbF92 Z3B1X3BpcGVfZm9ybWF0ICppbnRlbF92Z3B1X2RlY29kZV9wbGFuZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAorCQlzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF92Z3B1 X2ZiX2Zvcm1hdCBmYjsKKwlzdHJ1Y3QgaW50ZWxfdmdwdV9waXBlX2Zvcm1hdCAqcGlwZTsKKwlp bnQgaTsKKworCWlmIChpbnRlbF92Z3B1X2RlY29kZV9mYl9mb3JtYXQoZGV2X3ByaXYtPmd2dCwg dmdwdS0+aWQsICZmYikpCisJCXJldHVybiBOVUxMOworCisJZm9yIChpID0gMDsgaSA8IEk5MTVf TUFYX1BJUEVTOyBpKyspCisJCWlmIChwaXBlX2lzX2VuYWJsZWQodmdwdSwgaSkpCisJCQlicmVh azsKKwlpZiAoaSA+PSBJOTE1X01BWF9QSVBFUykgeworCQlndnRfZGJnX2NvcmUoIk5vIGVuYWJs ZWQgcGlwZXNcbiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJcGlwZSA9ICZmYi5waXBlc1tpXTsK KworCWlmICghcGlwZSB8fCAhcGlwZS0+cHJpbWFyeS5lbmFibGVkKSB7CisJCWd2dF9kYmdfY29y ZSgiSW52YWxpZCBwaXBlX2lkIDolZFxuIiwgaSk7CisJCXJldHVybiBOVUxMOworCX0KKworCXJl dHVybiBwaXBlOworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJf ZGVjb2Rlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDMwMGFmCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaApAQCAtMCwwICsxLDE2NiBAQAor LyoKKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJF LgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNv bT4KKyAqCisgKiBDb250cmlidXRvcnM6CisgKiAgICBCaW5nIE5pdSA8YmluZy5uaXVAaW50ZWwu Y29tPgorICogICAgWHUgSGFuIDx4dS5oYW5AaW50ZWwuY29tPgorICogICAgUGluZyBHYW8gPHBp bmcuYS5nYW9AaW50ZWwuY29tPgorICogICAgWGlhb2d1YW5nIENoZW4gPHhpYW9ndWFuZy5jaGVu QGludGVsLmNvbT4KKyAqICAgIFlhbmcgTGl1IDx5YW5nMi5saXVAaW50ZWwuY29tPgorICoKKyAq LworCisjaWZuZGVmIF9HVlRfRkJfREVDT0RFUl9IXworI2RlZmluZSBfR1ZUX0ZCX0RFQ09ERVJf SF8KKworI2RlZmluZSBfUExBTkVfQ1RMX0ZPUk1BVF9TSElGVAkJMjQKKyNkZWZpbmUgX1BMQU5F X0NUTF9USUxFRF9TSElGVAkJMTAKKyNkZWZpbmUgX1BJUEVfVl9TUkNTWl9TSElGVAkJMAorI2Rl ZmluZSBfUElQRV9WX1NSQ1NaX01BU0sJCSgweGZmZiA8PCBfUElQRV9WX1NSQ1NaX1NISUZUKQor I2RlZmluZSBfUElQRV9IX1NSQ1NaX1NISUZUCQkxNgorI2RlZmluZSBfUElQRV9IX1NSQ1NaX01B U0sJCSgweDFmZmYgPDwgX1BJUEVfSF9TUkNTWl9TSElGVCkKKworI2RlZmluZSBfUFJJX1BMQU5F X0ZNVF9TSElGVAkJMjYKKyNkZWZpbmUgX1BSSV9QTEFORV9TVFJJREVfTUFTSwkJKDB4M2ZmIDw8 IDYpCisjZGVmaW5lIF9QUklfUExBTkVfWF9PRkZfU0hJRlQJCTAKKyNkZWZpbmUgX1BSSV9QTEFO RV9YX09GRl9NQVNLCQkoMHgxZmZmIDw8IF9QUklfUExBTkVfWF9PRkZfU0hJRlQpCisjZGVmaW5l IF9QUklfUExBTkVfWV9PRkZfU0hJRlQJCTE2CisjZGVmaW5lIF9QUklfUExBTkVfWV9PRkZfTUFT SwkJKDB4ZmZmIDw8IF9QUklfUExBTkVfWV9PRkZfU0hJRlQpCisKKyNkZWZpbmUgX0NVUlNPUl9N T0RFCQkJMHgzZgorI2RlZmluZSBfQ1VSU09SX0FMUEhBX0ZPUkNFX1NISUZUCTgKKyNkZWZpbmUg X0NVUlNPUl9BTFBIQV9GT1JDRV9NQVNLCSgweDMgPDwgX0NVUlNPUl9BTFBIQV9GT1JDRV9TSElG VCkKKyNkZWZpbmUgX0NVUlNPUl9BTFBIQV9QTEFORV9TSElGVAkxMAorI2RlZmluZSBfQ1VSU09S X0FMUEhBX1BMQU5FX01BU0sJKDB4MyA8PCBfQ1VSU09SX0FMUEhBX1BMQU5FX1NISUZUKQorI2Rl ZmluZSBfQ1VSU09SX1BPU19YX1NISUZUCQkwCisjZGVmaW5lIF9DVVJTT1JfUE9TX1hfTUFTSwkJ KDB4MWZmZiA8PCBfQ1VSU09SX1BPU19YX1NISUZUKQorI2RlZmluZSBfQ1VSU09SX1NJR05fWF9T SElGVAkJMTUKKyNkZWZpbmUgX0NVUlNPUl9TSUdOX1hfTUFTSwkJKDEgPDwgX0NVUlNPUl9TSUdO X1hfU0hJRlQpCisjZGVmaW5lIF9DVVJTT1JfUE9TX1lfU0hJRlQJCTE2CisjZGVmaW5lIF9DVVJT T1JfUE9TX1lfTUFTSwkJKDB4ZmZmIDw8IF9DVVJTT1JfUE9TX1lfU0hJRlQpCisjZGVmaW5lIF9D VVJTT1JfU0lHTl9ZX1NISUZUCQkzMQorI2RlZmluZSBfQ1VSU09SX1NJR05fWV9NQVNLCQkoMSA8 PCBfQ1VSU09SX1NJR05fWV9TSElGVCkKKworI2RlZmluZSBfU1BSSVRFX0ZNVF9TSElGVAkJMjUK KyNkZWZpbmUgX1NQUklURV9DT0xPUl9PUkRFUl9TSElGVAkyMAorI2RlZmluZSBfU1BSSVRFX1lV Vl9PUkRFUl9TSElGVAkJMTYKKyNkZWZpbmUgX1NQUklURV9TVFJJREVfU0hJRlQJCTYKKyNkZWZp bmUgX1NQUklURV9TVFJJREVfTUFTSwkJKDB4MWZmIDw8IF9TUFJJVEVfU1RSSURFX1NISUZUKQor I2RlZmluZSBfU1BSSVRFX1NJWkVfV0lEVEhfU0hJRlQJMAorI2RlZmluZSBfU1BSSVRFX1NJWkVf SEVJR0hUX1NISUZUCTE2CisjZGVmaW5lIF9TUFJJVEVfU0laRV9XSURUSF9NQVNLCQkoMHgxZmZm IDw8IF9TUFJJVEVfU0laRV9XSURUSF9TSElGVCkKKyNkZWZpbmUgX1NQUklURV9TSVpFX0hFSUdI VF9NQVNLCSgweGZmZiA8PCBfU1BSSVRFX1NJWkVfSEVJR0hUX1NISUZUKQorI2RlZmluZSBfU1BS SVRFX1BPU19YX1NISUZUCQkwCisjZGVmaW5lIF9TUFJJVEVfUE9TX1lfU0hJRlQJCTE2CisjZGVm aW5lIF9TUFJJVEVfUE9TX1hfTUFTSwkJKDB4MWZmZiA8PCBfU1BSSVRFX1BPU19YX1NISUZUKQor I2RlZmluZSBfU1BSSVRFX1BPU19ZX01BU0sJCSgweGZmZiA8PCBfU1BSSVRFX1BPU19ZX1NISUZU KQorI2RlZmluZSBfU1BSSVRFX09GRlNFVF9TVEFSVF9YX1NISUZUCTAKKyNkZWZpbmUgX1NQUklU RV9PRkZTRVRfU1RBUlRfWV9TSElGVAkxNgorI2RlZmluZSBfU1BSSVRFX09GRlNFVF9TVEFSVF9Y X01BU0sJKDB4MWZmZiA8PCBfU1BSSVRFX09GRlNFVF9TVEFSVF9YX1NISUZUKQorI2RlZmluZSBf U1BSSVRFX09GRlNFVF9TVEFSVF9ZX01BU0sJKDB4ZmZmIDw8IF9TUFJJVEVfT0ZGU0VUX1NUQVJU X1lfU0hJRlQpCisKK2VudW0gR1ZUX0ZCX0VWRU5UIHsKKwlGQl9NT0RFX1NFVF9TVEFSVCA9IDEs CisJRkJfTU9ERV9TRVRfRU5ELAorCUZCX0RJU1BMQVlfRkxJUCwKK307CisKK2VudW0gRERJX1BP UlQgeworCURESV9QT1JUX05PTkUJPSAwLAorCURESV9QT1JUX0IJPSAxLAorCURESV9QT1JUX0MJ PSAyLAorCURESV9QT1JUX0QJPSAzLAorCURESV9QT1JUX0UJPSA0Cit9OworCitzdHJ1Y3QgaW50 ZWxfZ3Z0OworCitzdHJ1Y3QgZ3Z0X2ZiX25vdGlmeV9tc2cgeworCXVuc2lnbmVkIGludCB2bV9p ZDsKKwl1bnNpZ25lZCBpbnQgcGlwZV9pZDsgLyogaWQgc3RhcnRpbmcgZnJvbSAwICovCisJdW5z aWduZWQgaW50IHBsYW5lX2lkOyAvKiBwcmltYXJ5LCBjdXJzb3IsIG9yIHNwcml0ZSAqLworfTsK KworLyogY29sb3Igc3BhY2UgY29udmVyc2lvbiBhbmQgZ2FtbWEgY29ycmVjdGlvbiBhcmUgbm90 IGluY2x1ZGVkICovCitzdHJ1Y3QgaW50ZWxfdmdwdV9wcmltYXJ5X3BsYW5lX2Zvcm1hdCB7CisJ dTgJZW5hYmxlZDsJLyogcGxhbmUgaXMgZW5hYmxlZCAqLworCXU4CXRpbGVkOwkJLyogWC10aWxl ZCAqLworCXU4CWJwcDsJCS8qIGJpdHMgcGVyIHBpeGVsICovCisJdTMyCWh3X2Zvcm1hdDsJLyog Zm9ybWF0IGZpZWxkIGluIHRoZSBQUklfQ1RMIHJlZ2lzdGVyICovCisJdTMyCWRybV9mb3JtYXQ7 CS8qIGZvcm1hdCBpbiBEUk0gZGVmaW5pdGlvbiAqLworCXUzMgliYXNlOwkJLyogZnJhbWVidWZm ZXIgYmFzZSBpbiBncmFwaGljcyBtZW1vcnkgKi8KKwl1MzIJeF9vZmZzZXQ7CS8qIGluIHBpeGVs cyAqLworCXUzMgl5X29mZnNldDsJLyogaW4gbGluZXMgKi8KKwl1MzIJd2lkdGg7CQkvKiBpbiBw aXhlbHMgKi8KKwl1MzIJaGVpZ2h0OwkJLyogaW4gbGluZXMgKi8KKwl1MzIJc3RyaWRlOwkJLyog aW4gYnl0ZXMgKi8KK307CisKK3N0cnVjdCBpbnRlbF92Z3B1X3Nwcml0ZV9wbGFuZV9mb3JtYXQg eworCXU4CWVuYWJsZWQ7CS8qIHBsYW5lIGlzIGVuYWJsZWQgKi8KKwl1OAl0aWxlZDsJCS8qIFgt dGlsZWQgKi8KKwl1OAlicHA7CQkvKiBiaXRzIHBlciBwaXhlbCAqLworCXUzMglod19mb3JtYXQ7 CS8qIGZvcm1hdCBmaWVsZCBpbiB0aGUgU1BSX0NUTCByZWdpc3RlciAqLworCXUzMglkcm1fZm9y bWF0OwkvKiBmb3JtYXQgaW4gRFJNIGRlZmluaXRpb24gKi8KKwl1MzIJYmFzZTsJCS8qIHNwcml0 ZSBiYXNlIGluIGdyYXBoaWNzIG1lbW9yeSAqLworCXUzMgl4X3BvczsJCS8qIGluIHBpeGVscyAq LworCXUzMgl5X3BvczsJCS8qIGluIGxpbmVzICovCisJdTMyCXhfb2Zmc2V0OwkvKiBpbiBwaXhl bHMgKi8KKwl1MzIJeV9vZmZzZXQ7CS8qIGluIGxpbmVzICovCisJdTMyCXdpZHRoOwkJLyogaW4g cGl4ZWxzICovCisJdTMyCWhlaWdodDsJCS8qIGluIGxpbmVzICovCit9OworCitzdHJ1Y3QgaW50 ZWxfdmdwdV9jdXJzb3JfcGxhbmVfZm9ybWF0IHsKKwl1OAllbmFibGVkOworCXU4CW1vZGU7CQkv KiBjdXJzb3IgbW9kZSBzZWxlY3QgKi8KKwl1OAlicHA7CQkvKiBiaXRzIHBlciBwaXhlbCAqLwor CXUzMglkcm1fZm9ybWF0OwkvKiBmb3JtYXQgaW4gRFJNIGRlZmluaXRpb24gKi8KKwl1MzIJYmFz ZTsJCS8qIGN1cnNvciBiYXNlIGluIGdyYXBoaWNzIG1lbW9yeSAqLworCXUzMgl4X3BvczsJCS8q IGluIHBpeGVscyAqLworCXUzMgl5X3BvczsJCS8qIGluIGxpbmVzICovCisJdTgJeF9zaWduOwkJ LyogWCBQb3NpdGlvbiBTaWduICovCisJdTgJeV9zaWduOwkJLyogWSBQb3NpdGlvbiBTaWduICov CisJdTMyCXdpZHRoOwkJLyogaW4gcGl4ZWxzICovCisJdTMyCWhlaWdodDsJCS8qIGluIGxpbmVz ICovCisJdTMyCXhfaG90OwkJLyogaW4gcGl4ZWxzICovCisJdTMyCXlfaG90OwkJLyogaW4gcGl4 ZWxzICovCit9OworCitzdHJ1Y3QgaW50ZWxfdmdwdV9waXBlX2Zvcm1hdCB7CisJc3RydWN0IGlu dGVsX3ZncHVfcHJpbWFyeV9wbGFuZV9mb3JtYXQJcHJpbWFyeTsKKwlzdHJ1Y3QgaW50ZWxfdmdw dV9zcHJpdGVfcGxhbmVfZm9ybWF0CXNwcml0ZTsKKwlzdHJ1Y3QgaW50ZWxfdmdwdV9jdXJzb3Jf cGxhbmVfZm9ybWF0CWN1cnNvcjsKKwllbnVtIERESV9QT1JUIGRkaV9wb3J0OyAgLyogdGhlIERE SSBwb3J0IHRoYXQgcGlwZSBpcyBjb25uZWN0ZWQgdG8gKi8KK307CisKK3N0cnVjdCBpbnRlbF92 Z3B1X2ZiX2Zvcm1hdCB7CisJc3RydWN0IGludGVsX3ZncHVfcGlwZV9mb3JtYXQJcGlwZXNbNF07 Cit9OworCitzdHJ1Y3QgaW50ZWxfdmdwdV9waXBlX2Zvcm1hdCAqaW50ZWxfdmdwdV9kZWNvZGVf cGxhbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJc3RydWN0IGludGVsX3ZncHUgKnZncHUp OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAppbmRleCA5MzA3MzJlLi5jNDIyNjZjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAic2NoZWRf cG9saWN5LmgiCiAjaW5jbHVkZSAicmVuZGVyLmgiCiAjaW5jbHVkZSAiY21kX3BhcnNlci5oIgor I2luY2x1ZGUgImZiX2RlY29kZXIuaCIKIAogI2RlZmluZSBHVlRfTUFYX1ZHUFUgOAogCi0tIAoy LjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==