From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 4/4] xen: use SYMBOL everywhere Date: Tue, 6 Nov 2018 14:05:59 -0800 Message-ID: <1541541959-23140-4-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gK9U4-00011P-LJ for xen-devel@lists.xenproject.org; Tue, 06 Nov 2018 22:06:04 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, julien.grall@arm.com, sstabellini@kernel.org, JBeulich@suse.com, Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VXNlIFNZTUJPTCBldmVyeXdoZXJlIF9zdGV4dCwgX2V0ZXh0LCBldGMuIGFyZSB1c2VkLiBUZWNo bmljYWxseSwgaXQKaXMgcmVxdWlyZWQgd2hlbiBjb21wYXJpbmcgYW5kIHN1YnRyYWN0aW5nIHBv aW50ZXJzIFsxXSwgYnV0IHVzZSBpdApldmVyeXdoZXJlIHRvIGF2b2lkIGNvbmZ1c2lvbi4KCk0z Q006IFJ1bGUtMTguMjogU3VidHJhY3Rpb24gYmV0d2VlbiBwb2ludGVycyBzaGFsbCBvbmx5IGJl IGFwcGxpZWQgdG8KcG9pbnRlcnMgdGhhdCBhZGRyZXNzIGVsZW1lbnRzIG9mIHRoZSBzYW1lIGFy cmF5CgpbMV0gaHR0cHM6Ly93aWtpLnNlaS5jbXUuZWR1L2NvbmZsdWVuY2UvZGlzcGxheS9jL0FS UjM2LUMuK0RvK25vdCtzdWJ0cmFjdCtvcitjb21wYXJlK3R3bytwb2ludGVycyt0aGF0K2RvK25v dCtyZWZlcit0byt0aGUrc2FtZSthcnJheQoKUUFWZXJpZnk6IDI3NjEgKGFuZCBtYW55IG90aGVy cykKU2lnbmVkLW9mZi1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vc0B4aWxpbnguY29t PgpDQzogSkJldWxpY2hAc3VzZS5jb20KQ0M6IGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20KLS0t CkNoYW5nZXMgaW4gdjM6Ci0gaW1wcm92ZSBjb21taXQgbWVzc2FnZQotIG5vIGhhcmQgdGFicwot IHJlbmFtZSBfX3N5bWJvbCB0byBTWU1CT0wKLSBmaXggX19lbmRfdnBjaV9hcnJheSBhbmQgX19z dGFydF92cGNpX2FycmF5Ci0gYXZvaWQgYWxsIGNvbXBhcmlzb25zIGJldHdlZW4gcG9pbnRlcnM6 IGluY2x1ZGluZyAodm9pZCAqKSBjYXN0ZWQKICByZXR1cm5zIGZyb20gU1lNQk9MKCkKLSByZW1v dmUgdXNlbGVzcyBjYXN0cyB0byAodW5zaWduZWQgbG9uZykKCkNoYW5nZXMgaW4gdjI6Ci0gY2Fz dCByZXR1cm4gb2YgU1lNQk9MIHRvIGNoYXIqIHdoZW4gcmVxdWlyZWQKLSBkZWZpbmUgX19wYSBh cyB1bnNpZ25lZCBsb25nIGluIGlzX2tlcm5lbCogZnVuY3Rpb25zCi0tLQogeGVuL2FyY2gvYXJt L2FsdGVybmF0aXZlLmMgICAgICAgICAgfCAgNyArKy0tCiB4ZW4vYXJjaC9hcm0vYXJtMzIvbGl2 ZXBhdGNoLmMgICAgICB8ICAyICstCiB4ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMgICAg ICB8ICAyICstCiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgICAgICAgICB8ICAyICstCiB4 ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMgICAgICAgICAgICB8ICA2ICstLQogeGVuL2FyY2gvYXJt L21tLmMgICAgICAgICAgICAgICAgICAgfCAxNyArKysrLS0tLQogeGVuL2FyY2gvYXJtL3NldHVw LmMgICAgICAgICAgICAgICAgfCAgOCArKy0tCiB4ZW4vYXJjaC94ODYvc2V0dXAuYyAgICAgICAg ICAgICAgICB8IDc5ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9h cmNoL3g4Ni90Ym9vdC5jICAgICAgICAgICAgICAgIHwgMTIgKysrLS0tCiB4ZW4vYXJjaC94ODYv eDg2XzY0L21hY2hpbmVfa2V4ZWMuYyB8ICA0ICstCiB4ZW4vZHJpdmVycy92cGNpL3ZwY2kuYyAg ICAgICAgICAgICB8ICA3ICsrKy0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vZ3JhbnRfdGFibGUuaCAg IHwgIDMgKy0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCAgICAgICAgICAgIHwgIDQgKy0KIHhl bi9pbmNsdWRlL2FzbS14ODYvbW0uaCAgICAgICAgICAgIHwgIDQgKy0KIHhlbi9pbmNsdWRlL3hl bi9rZXJuZWwuaCAgICAgICAgICAgIHwgMjQgKysrKystLS0tLS0KIDE1IGZpbGVzIGNoYW5nZWQs IDk3IGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS9hbHRlcm5hdGl2ZS5jIGIveGVuL2FyY2gvYXJtL2FsdGVybmF0aXZlLmMKaW5kZXggNTJl ZDdlZC4uMmVmYTljYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FsdGVybmF0aXZlLmMKKysr IGIveGVuL2FyY2gvYXJtL2FsdGVybmF0aXZlLmMKQEAgLTE4Nyw4ICsxODcsOCBAQCBzdGF0aWMg aW50IF9fYXBwbHlfYWx0ZXJuYXRpdmVzX211bHRpX3N0b3Aodm9pZCAqdW51c2VkKQogICAgIHsK ICAgICAgICAgaW50IHJldDsKICAgICAgICAgc3RydWN0IGFsdF9yZWdpb24gcmVnaW9uOwotICAg ICAgICBtZm5fdCB4ZW5fbWZuID0gdmlydF90b19tZm4oX3N0YXJ0KTsKLSAgICAgICAgcGFkZHJf dCB4ZW5fc2l6ZSA9IF9lbmQgLSBfc3RhcnQ7CisgICAgICAgIG1mbl90IHhlbl9tZm4gPSB2aXJ0 X3RvX21mbihTWU1CT0woX3N0YXJ0KSk7CisgICAgICAgIHBhZGRyX3QgeGVuX3NpemUgPSBTWU1C T0woX2VuZCkgLSBTWU1CT0woX3N0YXJ0KTsKICAgICAgICAgdW5zaWduZWQgaW50IHhlbl9vcmRl ciA9IGdldF9vcmRlcl9mcm9tX2J5dGVzKHhlbl9zaXplKTsKICAgICAgICAgdm9pZCAqeGVubWFw OwogCkBAIC0yMDYsNyArMjA2LDggQEAgc3RhdGljIGludCBfX2FwcGx5X2FsdGVybmF0aXZlc19t dWx0aV9zdG9wKHZvaWQgKnVudXNlZCkKICAgICAgICAgcmVnaW9uLmJlZ2luID0gX19hbHRfaW5z dHJ1Y3Rpb25zOwogICAgICAgICByZWdpb24uZW5kID0gX19hbHRfaW5zdHJ1Y3Rpb25zX2VuZDsK IAotICAgICAgICByZXQgPSBfX2FwcGx5X2FsdGVybmF0aXZlcygmcmVnaW9uLCB4ZW5tYXAgLSAo dm9pZCAqKV9zdGFydCk7CisgICAgICAgIHJldCA9IF9fYXBwbHlfYWx0ZXJuYXRpdmVzKCZyZWdp b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXhl bm1hcCAtIFNZTUJPTChfc3RhcnQpKTsKICAgICAgICAgLyogVGhlIHBhdGNoaW5nIGlzIG5vdCBl eHBlY3RlZCB0byBmYWlsIGR1cmluZyBib290LiAqLwogICAgICAgICBCVUdfT04ocmV0ICE9IDAp OwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMgYi94ZW4vYXJj aC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMKaW5kZXggNDEzNzhhNS4uNmJmOTEzMiAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL2FybTMyL2xpdmVwYXRjaC5jCisrKyBiL3hlbi9hcmNoL2FybS9hcm0z Mi9saXZlcGF0Y2guYwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIGFyY2hfbGl2ZXBhdGNoX2FwcGx5 KHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKICAgICBlbHNlCiAgICAgICAgIGluc24gPSAw eGUxYTAwMDAwOyAvKiBtb3YgcjAsIHIwICovCiAKLSAgICBuZXdfcHRyID0gZnVuYy0+b2xkX2Fk ZHIgLSAodm9pZCAqKV9zdGFydCArIHZtYXBfb2ZfeGVuX3RleHQ7CisgICAgbmV3X3B0ciA9IGZ1 bmMtPm9sZF9hZGRyIC0gKHZvaWQgKilTWU1CT0woX3N0YXJ0KSArIHZtYXBfb2ZfeGVuX3RleHQ7 CiAgICAgbGVuID0gbGVuIC8gc2l6ZW9mKHVpbnQzMl90KTsKIAogICAgIC8qIFBBVENIISAqLwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5jIGIveGVuL2FyY2gvYXJt L2FybTY0L2xpdmVwYXRjaC5jCmluZGV4IDIyNDdiOTIuLmZiMTQ3N2QgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL2FybS9hcm02NC9saXZlcGF0Y2guYworKysgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2 ZXBhdGNoLmMKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBhcmNoX2xpdmVwYXRjaF9hcHBseShzdHJ1 Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiAgICAgLyogVmVyaWZpZWQgaW4gbGl2ZXBhdGNoX3Zl cmlmeV9kaXN0YW5jZS4gKi8KICAgICBBU1NFUlQoaW5zbiAhPSBBQVJDSDY0X0JSRUFLX0ZBVUxU KTsKIAotICAgIG5ld19wdHIgPSBmdW5jLT5vbGRfYWRkciAtICh2b2lkICopX3N0YXJ0ICsgdm1h cF9vZl94ZW5fdGV4dDsKKyAgICBuZXdfcHRyID0gZnVuYy0+b2xkX2FkZHIgLSBTWU1CT0woX3N0 YXJ0KSArIHZtYXBfb2ZfeGVuX3RleHQ7CiAgICAgbGVuID0gbGVuIC8gc2l6ZW9mKHVpbnQzMl90 KTsKIAogICAgIC8qIFBBVENIISAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2RvbWFpbl9i dWlsZC5jIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCmluZGV4IGY1NTIxNTQuLjZjMDM5 OTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYworKysgYi94ZW4vYXJj aC9hcm0vZG9tYWluX2J1aWxkLmMKQEAgLTIwOTAsNyArMjA5MCw3IEBAIHN0YXRpYyB2b2lkIF9f aW5pdCBmaW5kX2dudHRhYl9yZWdpb24oc3RydWN0IGRvbWFpbiAqZCwKICAgICAgKiBPbmx5IHVz ZSB0aGUgdGV4dCBzZWN0aW9uIGFzIGl0J3MgYWx3YXlzIHByZXNlbnQgYW5kIHdpbGwgY29udGFp bgogICAgICAqIGVub3VnaCBzcGFjZSBmb3IgYSBsYXJnZSBncmFudCB0YWJsZQogICAgICAqLwot ICAgIGtpbmZvLT5nbnR0YWJfc3RhcnQgPSBfX3BhKF9zdGV4dCk7CisgICAga2luZm8tPmdudHRh Yl9zdGFydCA9IF9fcGEoU1lNQk9MKF9zdGV4dCkpOwogICAgIGtpbmZvLT5nbnR0YWJfc2l6ZSA9 IGdudHRhYl9kb20wX2ZyYW1lcygpIDw8IFBBR0VfU0hJRlQ7CiAKICNpZmRlZiBDT05GSUdfQVJN XzMyCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMgYi94ZW4vYXJjaC9hcm0v bGl2ZXBhdGNoLmMKaW5kZXggMjc5ZDUyYy4uNjA5YWIzNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv YXJtL2xpdmVwYXRjaC5jCisrKyBiL3hlbi9hcmNoL2FybS9saXZlcGF0Y2guYwpAQCAtMjYsOCAr MjYsOCBAQCBpbnQgYXJjaF9saXZlcGF0Y2hfcXVpZXNjZSh2b2lkKQogICAgIGlmICggdm1hcF9v Zl94ZW5fdGV4dCApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgdGV4dF9tZm4gPSB2 aXJ0X3RvX21mbihfc3RhcnQpOwotICAgIHRleHRfb3JkZXIgPSBnZXRfb3JkZXJfZnJvbV9ieXRl cyhfZW5kIC0gX3N0YXJ0KTsKKyAgICB0ZXh0X21mbiA9IHZpcnRfdG9fbWZuKFNZTUJPTChfc3Rh cnQpKTsKKyAgICB0ZXh0X29yZGVyID0gZ2V0X29yZGVyX2Zyb21fYnl0ZXMoU1lNQk9MKF9lbmQp IC0gU1lNQk9MKF9zdGFydCkpOwogCiAgICAgLyoKICAgICAgKiBUaGUgdGV4dCBzZWN0aW9uIGlz IHJlYWQtb25seS4gU28gcmUtbWFwIFhlbiB0byBiZSBhYmxlIHRvIHBhdGNoCkBAIC03OCw3ICs3 OCw3IEBAIHZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2ZXJ0KGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hf ZnVuYyAqZnVuYykKICAgICB1aW50MzJfdCAqbmV3X3B0cjsKICAgICB1bnNpZ25lZCBpbnQgbGVu OwogCi0gICAgbmV3X3B0ciA9IGZ1bmMtPm9sZF9hZGRyIC0gKHZvaWQgKilfc3RhcnQgKyB2bWFw X29mX3hlbl90ZXh0OworICAgIG5ld19wdHIgPSBmdW5jLT5vbGRfYWRkciAtIFNZTUJPTChfc3Rh cnQpICsgdm1hcF9vZl94ZW5fdGV4dDsKIAogICAgIGxlbiA9IGxpdmVwYXRjaF9pbnNuX2xlbihm dW5jKTsKICAgICBtZW1jcHkobmV3X3B0ciwgZnVuYy0+b3BhcXVlLCBsZW4pOwpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwppbmRleCA3YTA2YTMzLi4x NmE4YWZjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vbW0uYworKysgYi94ZW4vYXJjaC9hcm0v bW0uYwpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgX19pbml0IHNldHVwX3BhZ2V0YWJsZXModW5z aWduZWQgbG9uZyBib290X3BoeXNfb2Zmc2V0LCBwYWRkcl90IHhlbl9wYWRkcikKICAgICBpbnQg aTsKIAogICAgIC8qIENhbGN1bGF0ZSB2aXJ0LXRvLXBoeXMgb2Zmc2V0IGZvciB0aGUgbmV3IGxv Y2F0aW9uICovCi0gICAgcGh5c19vZmZzZXQgPSB4ZW5fcGFkZHIgLSAodW5zaWduZWQgbG9uZykg X3N0YXJ0OworICAgIHBoeXNfb2Zmc2V0ID0geGVuX3BhZGRyIC0gU1lNQk9MKF9zdGFydCk7CiAK ICNpZmRlZiBDT05GSUdfQVJNXzY0CiAgICAgcCA9ICh2b2lkICopIHhlbl9wZ3RhYmxlOwpAQCAt NjgxLDcgKzY4MSw4IEBAIHZvaWQgX19pbml0IHNldHVwX3BhZ2V0YWJsZXModW5zaWduZWQgbG9u ZyBib290X3BoeXNfb2Zmc2V0LCBwYWRkcl90IHhlbl9wYWRkcikKICAgICB0dGJyID0gKHVpbnRw dHJfdCkgY3B1MF9wZ3RhYmxlICsgcGh5c19vZmZzZXQ7CiAjZW5kaWYKIAotICAgIHJlbG9jYXRl X3hlbih0dGJyLCBfc3RhcnQsICh2b2lkKilkZXN0X3ZhLCBfZW5kIC0gX3N0YXJ0KTsKKyAgICBy ZWxvY2F0ZV94ZW4odHRiciwgKHZvaWQqKVNZTUJPTChfc3RhcnQpLCAodm9pZCopZGVzdF92YSwK KyAgICAgICAgICAgICAgICAgU1lNQk9MKF9lbmQpIC0gU1lNQk9MKF9zdGFydCkpOwogCiAgICAg LyogQ2xlYXIgdGhlIGNvcHkgb2YgdGhlIGJvb3QgcGFnZXRhYmxlcy4gRWFjaCBzZWNvbmRhcnkg Q1BVCiAgICAgICogcmVidWlsZHMgdGhlc2UgaXRzZWxmIChzZWUgaGVhZC5TKSAqLwpAQCAtMTA4 OSw3ICsxMDkwLDcgQEAgaW50IG1vZGlmeV94ZW5fbWFwcGluZ3ModW5zaWduZWQgbG9uZyBzLCB1 bnNpZ25lZCBsb25nIGUsIHVuc2lnbmVkIGludCBmbGFncykKIH0KIAogZW51bSBtZyB7IG1nX2Ns ZWFyLCBtZ19ybywgbWdfcncsIG1nX3J4IH07Ci1zdGF0aWMgdm9pZCBzZXRfcHRlX2ZsYWdzX29u X3JhbmdlKGNvbnN0IGNoYXIgKnAsIHVuc2lnbmVkIGxvbmcgbCwgZW51bSBtZyBtZykKK3N0YXRp YyB2b2lkIHNldF9wdGVfZmxhZ3Nfb25fcmFuZ2UoY29uc3QgdW5zaWduZWQgbG9uZyBwLCB1bnNp Z25lZCBsb25nIGwsIGVudW0gbWcgbWcpCiB7CiAgICAgbHBhZV90IHB0ZTsKICAgICBpbnQgaTsK QEAgLTExMDAsOCArMTEwMSw4IEBAIHN0YXRpYyB2b2lkIHNldF9wdGVfZmxhZ3Nfb25fcmFuZ2Uo Y29uc3QgY2hhciAqcCwgdW5zaWduZWQgbG9uZyBsLCBlbnVtIG1nIG1nKQogICAgIEFTU0VSVCgh KCh1bnNpZ25lZCBsb25nKSBwICYgflBBR0VfTUFTSykpOwogICAgIEFTU0VSVCghKGwgJiB+UEFH RV9NQVNLKSk7CiAKLSAgICBmb3IgKCBpID0gKHAgLSBfc3RhcnQpIC8gUEFHRV9TSVpFOyAKLSAg ICAgICAgICBpIDwgKHAgKyBsIC0gX3N0YXJ0KSAvIFBBR0VfU0laRTsgCisgICAgZm9yICggaSA9 IChwIC0gU1lNQk9MKF9zdGFydCkpIC8gUEFHRV9TSVpFOyAKKyAgICAgICAgICBpIDwgKHAgKyBs IC0gU1lNQk9MKF9zdGFydCkpIC8gUEFHRV9TSVpFOyAKICAgICAgICAgICBpKysgKQogICAgIHsK ICAgICAgICAgcHRlID0geGVuX3hlbm1hcFtpXTsKQEAgLTExMzgsMTIgKzExMzksMTIgQEAgc3Rh dGljIHZvaWQgc2V0X3B0ZV9mbGFnc19vbl9yYW5nZShjb25zdCBjaGFyICpwLCB1bnNpZ25lZCBs b25nIGwsIGVudW0gbWcgbWcpCiB2b2lkIGZyZWVfaW5pdF9tZW1vcnkodm9pZCkKIHsKICAgICBw YWRkcl90IHBhID0gdmlydF90b19tYWRkcihfX2luaXRfYmVnaW4pOwotICAgIHVuc2lnbmVkIGxv bmcgbGVuID0gX19pbml0X2VuZCAtIF9faW5pdF9iZWdpbjsKKyAgICB1bnNpZ25lZCBsb25nIGxl biA9IFNZTUJPTChfX2luaXRfZW5kKSAtIFNZTUJPTChfX2luaXRfYmVnaW4pOwogICAgIHVpbnQz Ml90IGluc247CiAgICAgdW5zaWduZWQgaW50IGksIG5yID0gbGVuIC8gc2l6ZW9mKGluc24pOwog ICAgIHVpbnQzMl90ICpwOwogCi0gICAgc2V0X3B0ZV9mbGFnc19vbl9yYW5nZShfX2luaXRfYmVn aW4sIGxlbiwgbWdfcncpOworICAgIHNldF9wdGVfZmxhZ3Nfb25fcmFuZ2UoU1lNQk9MKF9faW5p dF9iZWdpbiksIGxlbiwgbWdfcncpOwogI2lmZGVmIENPTkZJR19BUk1fMzIKICAgICAvKiB1ZGYg aW5zdHJ1Y3Rpb24gaS5lIChzZWUgQTguOC4yNDcgaW4gQVJNIERESSAwNDA2Qy5jKSAqLwogICAg IGluc24gPSAweGU3ZjAwMGYwOwpAQCAtMTE1NCw3ICsxMTU1LDcgQEAgdm9pZCBmcmVlX2luaXRf bWVtb3J5KHZvaWQpCiAgICAgZm9yICggaSA9IDA7IGkgPCBucjsgaSsrICkKICAgICAgICAgKihw ICsgaSkgPSBpbnNuOwogCi0gICAgc2V0X3B0ZV9mbGFnc19vbl9yYW5nZShfX2luaXRfYmVnaW4s IGxlbiwgbWdfY2xlYXIpOworICAgIHNldF9wdGVfZmxhZ3Nfb25fcmFuZ2UoU1lNQk9MKF9faW5p dF9iZWdpbiksIGxlbiwgbWdfY2xlYXIpOwogICAgIGluaXRfZG9taGVhcF9wYWdlcyhwYSwgcGEg KyBsZW4pOwogICAgIHByaW50aygiRnJlZWQgJWxka0IgaW5pdCBtZW1vcnkuXG4iLCAobG9uZyko X19pbml0X2VuZC1fX2luaXRfYmVnaW4pPj4xMCk7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vc2V0dXAuYyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCmluZGV4IGVhMjQ5NWEuLmUzYWRkZGYg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL2FybS9zZXR1 cC5jCkBAIC0zOTQsNyArMzk0LDggQEAgc3RhdGljIHBhZGRyX3QgX19pbml0IGdldF94ZW5fcGFk ZHIodm9pZCkKICAgICBwYWRkcl90IHBhZGRyID0gMDsKICAgICBpbnQgaTsKIAotICAgIG1pbl9z aXplID0gKF9lbmQgLSBfc3RhcnQgKyAoWEVOX1BBRERSX0FMSUdOLTEpKSAmIH4oWEVOX1BBRERS X0FMSUdOLTEpOworICAgIG1pbl9zaXplID0gKFNZTUJPTChfZW5kKSAtIFNZTUJPTChfc3RhcnQp ICsKKyAgICAgICAgICAgICAgICAoWEVOX1BBRERSX0FMSUdOLTEpKSAmIH4oWEVOX1BBRERSX0FM SUdOLTEpOwogCiAgICAgLyogRmluZCB0aGUgaGlnaGVzdCBiYW5rIHdpdGggZW5vdWdoIHNwYWNl LiAqLwogICAgIGZvciAoIGkgPSAwOyBpIDwgbWktPm5yX2JhbmtzOyBpKysgKQpAQCAtNzI3LDgg KzcyOCw5IEBAIHZvaWQgX19pbml0IHN0YXJ0X3hlbih1bnNpZ25lZCBsb25nIGJvb3RfcGh5c19v ZmZzZXQsCiAKICAgICAvKiBSZWdpc3RlciBYZW4ncyBsb2FkIGFkZHJlc3MgYXMgYSBib290IG1v ZHVsZS4gKi8KICAgICB4ZW5fYm9vdG1vZHVsZSA9IGFkZF9ib290X21vZHVsZShCT09UTU9EX1hF TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpKHVpbnRwdHJfdCkoX3N0 YXJ0ICsgYm9vdF9waHlzX29mZnNldCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw YWRkcl90KSh1aW50cHRyX3QpKF9lbmQgLSBfc3RhcnQgKyAxKSwgTlVMTCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwYWRkcl90KSh1aW50cHRyX3QpKFNZTUJPTChfc3RhcnQpICsg Ym9vdF9waHlzX29mZnNldCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90 KSh1aW50cHRyX3QpKFNZTUJPTChfZW5kKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTChfc3RhcnQpICsgMSksIE5VTEwpOwogICAgIEJV R19PTigheGVuX2Jvb3Rtb2R1bGUpOwogCiAgICAgeGVuX3BhZGRyID0gZ2V0X3hlbl9wYWRkcigp OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAu YwppbmRleCA5M2I3OWM3Li4xYTAyYjMwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0dXAu YworKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtNTc4LDEzICs1NzgsMTMgQEAgc3RhdGlj IHZvaWQgX19pbml0IGtleGVjX3Jlc2VydmVfYXJlYShzdHJ1Y3QgZTgyMG1hcCAqZTgyMCkKIAog c3RhdGljIGlubGluZSBib29sIHVzaW5nXzJNX21hcHBpbmcodm9pZCkKIHsKLSAgICByZXR1cm4g IWwxX3RhYmxlX29mZnNldCgodW5zaWduZWQgbG9uZylfXzJNX3RleHRfZW5kKSAmJgotICAgICAg ICAgICAhbDFfdGFibGVfb2Zmc2V0KCh1bnNpZ25lZCBsb25nKV9fMk1fcm9kYXRhX3N0YXJ0KSAm JgotICAgICAgICAgICAhbDFfdGFibGVfb2Zmc2V0KCh1bnNpZ25lZCBsb25nKV9fMk1fcm9kYXRh X2VuZCkgJiYKLSAgICAgICAgICAgIWwxX3RhYmxlX29mZnNldCgodW5zaWduZWQgbG9uZylfXzJN X2luaXRfc3RhcnQpICYmCi0gICAgICAgICAgICFsMV90YWJsZV9vZmZzZXQoKHVuc2lnbmVkIGxv bmcpX18yTV9pbml0X2VuZCkgJiYKLSAgICAgICAgICAgIWwxX3RhYmxlX29mZnNldCgodW5zaWdu ZWQgbG9uZylfXzJNX3J3ZGF0YV9zdGFydCkgJiYKLSAgICAgICAgICAgIWwxX3RhYmxlX29mZnNl dCgodW5zaWduZWQgbG9uZylfXzJNX3J3ZGF0YV9lbmQpOworICAgIHJldHVybiAhbDFfdGFibGVf b2Zmc2V0KFNZTUJPTChfXzJNX3RleHRfZW5kKSkgJiYKKyAgICAgICAgICAgIWwxX3RhYmxlX29m ZnNldChTWU1CT0woX18yTV9yb2RhdGFfc3RhcnQpKSAmJgorICAgICAgICAgICAhbDFfdGFibGVf b2Zmc2V0KFNZTUJPTChfXzJNX3JvZGF0YV9lbmQpKSAmJgorICAgICAgICAgICAhbDFfdGFibGVf b2Zmc2V0KFNZTUJPTChfXzJNX2luaXRfc3RhcnQpKSAmJgorICAgICAgICAgICAhbDFfdGFibGVf b2Zmc2V0KFNZTUJPTChfXzJNX2luaXRfZW5kKSkgJiYKKyAgICAgICAgICAgIWwxX3RhYmxlX29m ZnNldChTWU1CT0woX18yTV9yd2RhdGFfc3RhcnQpKSAmJgorICAgICAgICAgICAhbDFfdGFibGVf b2Zmc2V0KFNZTUJPTChfXzJNX3J3ZGF0YV9lbmQpKTsKIH0KIAogc3RhdGljIHZvaWQgbm9pbmxp bmUgaW5pdF9kb25lKHZvaWQpCkBAIC02MDYsMTMgKzYwNiwxMyBAQCBzdGF0aWMgdm9pZCBub2lu bGluZSBpbml0X2RvbmUodm9pZCkKICAgICAvKiBEZXN0cm95IFhlbidzIG1hcHBpbmdzLCBhbmQg cmV1c2UgdGhlIHBhZ2VzLiAqLwogICAgIGlmICggdXNpbmdfMk1fbWFwcGluZygpICkKICAgICB7 Ci0gICAgICAgIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpJl9fMk1faW5pdF9zdGFydCwKLSAgICAg ICAgZW5kICAgPSAodW5zaWduZWQgbG9uZykmX18yTV9pbml0X2VuZDsKKyAgICAgICAgc3RhcnQg PSBTWU1CT0woJl9fMk1faW5pdF9zdGFydCksCisgICAgICAgIGVuZCAgID0gU1lNQk9MKCZfXzJN X2luaXRfZW5kKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgc3RhcnQgPSAodW5z aWduZWQgbG9uZykmX19pbml0X2JlZ2luOwotICAgICAgICBlbmQgICA9ICh1bnNpZ25lZCBsb25n KSZfX2luaXRfZW5kOworICAgICAgICBzdGFydCA9IFNZTUJPTCgmX19pbml0X2JlZ2luKTsKKyAg ICAgICAgZW5kICAgPSBTWU1CT0woJl9faW5pdF9lbmQpOwogICAgIH0KIAogICAgIGRlc3Ryb3lf eGVuX21hcHBpbmdzKHN0YXJ0LCBlbmQpOwpAQCAtOTY2LDggKzk2Niw4IEBAIHZvaWQgX19pbml0 IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgICAgICAqIFRo aXMgbmVlZHMgdG8gcmVtYWluIGluIHN5bmMgd2l0aCB4ZW5faW5fcmFuZ2UoKSBhbmQgdGhlCiAg ICAgICAgICAqIHJlc3BlY3RpdmUgcmVzZXJ2ZV9lODIwX3JhbSgpIGludm9jYXRpb24gYmVsb3cu CiAgICAgICAgICAqLwotICAgICAgICBtb2RbbWJpLT5tb2RzX2NvdW50XS5tb2Rfc3RhcnQgPSB2 aXJ0X3RvX21mbihfc3RleHQpOwotICAgICAgICBtb2RbbWJpLT5tb2RzX2NvdW50XS5tb2RfZW5k ID0gX18yTV9yd2RhdGFfZW5kIC0gX3N0ZXh0OworICAgICAgICBtb2RbbWJpLT5tb2RzX2NvdW50 XS5tb2Rfc3RhcnQgPSB2aXJ0X3RvX21mbihTWU1CT0woX3N0ZXh0KSk7CisgICAgICAgIG1vZFtt YmktPm1vZHNfY291bnRdLm1vZF9lbmQgPSBTWU1CT0woX18yTV9yd2RhdGFfZW5kKSAtIFNZTUJP TChfc3RleHQpOwogICAgIH0KIAogICAgIG1vZHVsZXNfaGVhZHJvb20gPSBiemltYWdlX2hlYWRy b29tKGJvb3RzdHJhcF9tYXAobW9kKSwgbW9kLT5tb2RfZW5kKTsKQEAgLTEwMTgsNyArMTAxOCw3 IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3Ap CiAgICAgICAgICAgICAgICAgICAgICAxVUwgPDwgKFBBR0VfU0hJRlQgKyAzMikpICkKICAgICAg ICAgICAgIGUgPSBtaW4oSFlQRVJWSVNPUl9WSVJUX0VORCAtIERJUkVDVE1BUF9WSVJUX1NUQVJU LAogICAgICAgICAgICAgICAgICAgICAxVUwgPDwgKFBBR0VfU0hJRlQgKyAzMikpOwotI2RlZmlu ZSByZWxvY19zaXplICgoX19wYShfXzJNX3J3ZGF0YV9lbmQpICsgbWFzaykgJiB+bWFzaykKKyNk ZWZpbmUgcmVsb2Nfc2l6ZSAoKF9fcGEoU1lNQk9MKF9fMk1fcndkYXRhX2VuZCkpICsgbWFzaykg JiB+bWFzaykKICAgICAgICAgLyogSXMgdGhlIHJlZ2lvbiBzdWl0YWJsZSBmb3IgcmVsb2NhdGlu ZyBYZW4/ICovCiAgICAgICAgIGlmICggIXhlbl9waHlzX3N0YXJ0ICYmIGUgPD0gbGltaXQgKQog ICAgICAgICB7CkBAIC0xMDM0LDcgKzEwMzQsOCBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0 YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgICAgICAgKiBJcyB0aGUgcmVnaW9uIHNp emUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGRvZXMgaXQgYmVnaW4KICAgICAgICAgICogYXQgb3Ig YWJvdmUgdGhlIGVuZCBvZiBjdXJyZW50IFhlbiBpbWFnZSBwbGFjZW1lbnQ/CiAgICAgICAgICAq LwotICAgICAgICBpZiAoIChlbmQgPiBzKSAmJiAoZW5kIC0gcmVsb2Nfc2l6ZSArIFhFTl9JTUdf T0ZGU0VUID49IF9fcGEoX2VuZCkpICkKKyAgICAgICAgaWYgKCAoZW5kID4gcykgJiYgKGVuZCAt IHJlbG9jX3NpemUgKyBYRU5fSU1HX09GRlNFVCA+PQorICAgICAgICAgICAgIF9fcGEoU1lNQk9M KF9lbmQpKSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBsNF9wZ2VudHJ5X3QgKnBsNGU7CiAg ICAgICAgICAgICBsM19wZ2VudHJ5X3QgKnBsM2U7CkBAIC0xMDYyLDcgKzEwNjMsOCBAQCB2b2lk IF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgICAg ICAgICAgICogZGF0YSB1bnRpbCBhZnRlciB3ZSBoYXZlIHN3aXRjaGVkIHRvIHRoZSByZWxvY2F0 ZWQgcGFnZXRhYmxlcyEKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgYmFycmllcigpOwot ICAgICAgICAgICAgbW92ZV9tZW1vcnkoZSArIFhFTl9JTUdfT0ZGU0VULCBYRU5fSU1HX09GRlNF VCwgX2VuZCAtIF9zdGFydCwgMSk7CisgICAgICAgICAgICBtb3ZlX21lbW9yeShlICsgWEVOX0lN R19PRkZTRVQsIFhFTl9JTUdfT0ZGU0VULAorICAgICAgICAgICAgICAgICAgICAgICAgU1lNQk9M KF9lbmQpIC0gU1lNQk9MKF9zdGFydCksIDEpOwogCiAgICAgICAgICAgICAvKiBXYWxrIGluaXRp YWwgcGFnZXRhYmxlcywgcmVsb2NhdGluZyBwYWdlIGRpcmVjdG9yeSBlbnRyaWVzLiAqLwogICAg ICAgICAgICAgcGw0ZSA9IF9fdmEoX19wYShpZGxlX3BnX3RhYmxlKSk7CkBAIC0xMTAzLDggKzEx MDUsOCBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1i aV9wKQogICAgICAgICAgICAgICogaXMgY29udGFpbmVkIGluIHRoaXMgUFRFLgogICAgICAgICAg ICAgICovCiAgICAgICAgICAgICBCVUdfT04odXNpbmdfMk1fbWFwcGluZygpICYmCi0gICAgICAg ICAgICAgICAgICAgbDJfdGFibGVfb2Zmc2V0KCh1bnNpZ25lZCBsb25nKV9lcm9kYXRhKSA9PQot ICAgICAgICAgICAgICAgICAgIGwyX3RhYmxlX29mZnNldCgodW5zaWduZWQgbG9uZylfc3RleHQp KTsKKyAgICAgICAgICAgICAgICAgICBsMl90YWJsZV9vZmZzZXQoU1lNQk9MKF9lcm9kYXRhKSkg PT0KKyAgICAgICAgICAgICAgICAgICBsMl90YWJsZV9vZmZzZXQoU1lNQk9MKF9zdGV4dCkpKTsK ICAgICAgICAgICAgICpwbDJlKysgPSBsMmVfZnJvbV9wZm4oeGVuX3BoeXNfc3RhcnQgPj4gUEFH RV9TSElGVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9IWVBFUlZJ U09SX1JYIHwgX1BBR0VfUFNFKTsKICAgICAgICAgICAgIGZvciAoIGkgPSAxOyBpIDwgTDJfUEFH RVRBQkxFX0VOVFJJRVM7IGkrKywgcGwyZSsrICkKQEAgLTExMjIsMjIgKzExMjQsMjIgQEAgdm9p ZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg ICAgICAgaWYgKCBpIDwgbDJfdGFibGVfb2Zmc2V0KCh1bnNpZ25lZCBsb25nKSZfXzJNX3RleHRf ZW5kKSApCisgICAgICAgICAgICAgICAgaWYgKCBpIDwgbDJfdGFibGVfb2Zmc2V0KCh1bnNpZ25l ZCBsb25nKVNZTUJPTCgmX18yTV90ZXh0X2VuZCkpICkKICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgIGZsYWdzID0gUEFHRV9IWVBFUlZJU09SX1JYIHwgX1BBR0VfUFNFOwog ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICggaSA+PSBsMl90YWJs ZV9vZmZzZXQoKHVuc2lnbmVkIGxvbmcpJl9fMk1fcm9kYXRhX3N0YXJ0KSAmJgotICAgICAgICAg ICAgICAgICAgICAgICAgICBpIDwgIGwyX3RhYmxlX29mZnNldCgodW5zaWduZWQgbG9uZykmX18y TV9yb2RhdGFfZW5kKSApCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIGkgPj0gbDJfdGFibGVf b2Zmc2V0KFNZTUJPTCgmX18yTV9yb2RhdGFfc3RhcnQpKSAmJgorICAgICAgICAgICAgICAgICAg ICAgICAgICBpIDwgIGwyX3RhYmxlX29mZnNldChTWU1CT0woJl9fMk1fcm9kYXRhX2VuZCkpICkK ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gUEFHRV9IWVBF UlZJU09SX1JPIHwgX1BBR0VfUFNFOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICBlbHNlIGlmICggaSA+PSBsMl90YWJsZV9vZmZzZXQoKHVuc2lnbmVkIGxvbmcpJl9fMk1faW5p dF9zdGFydCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaSA8ICBsMl90YWJsZV9vZmZz ZXQoKHVuc2lnbmVkIGxvbmcpJl9fMk1faW5pdF9lbmQpICkKKyAgICAgICAgICAgICAgICBlbHNl IGlmICggaSA+PSBsMl90YWJsZV9vZmZzZXQoU1lNQk9MKCZfXzJNX2luaXRfc3RhcnQpKSAmJgor ICAgICAgICAgICAgICAgICAgICAgICAgICBpIDwgIGwyX3RhYmxlX29mZnNldChTWU1CT0woJl9f Mk1faW5pdF9lbmQpKSApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBm bGFncyA9IFBBR0VfSFlQRVJWSVNPUl9SV1ggfCBfUEFHRV9QU0U7CiAgICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCAoaSA+PSBsMl90YWJsZV9vZmZzZXQoKHVuc2ln bmVkIGxvbmcpJl9fMk1fcndkYXRhX3N0YXJ0KSAmJgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgaSA8ICBsMl90YWJsZV9vZmZzZXQoKHVuc2lnbmVkIGxvbmcpJl9fMk1fcndkYXRhX2VuZCkp ICkKKyAgICAgICAgICAgICAgICBlbHNlIGlmICggKGkgPj0gbDJfdGFibGVfb2Zmc2V0KFNZTUJP TCgmX18yTV9yd2RhdGFfc3RhcnQpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA8 ICBsMl90YWJsZV9vZmZzZXQoU1lNQk9MKCZfXzJNX3J3ZGF0YV9lbmQpKSkgKQogICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBQQUdFX0hZUEVSVklTT1JfUlcg fCBfUEFHRV9QU0U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTIzNCw3ICsxMjM2LDcgQEAgdm9p ZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAg ICAgcGFuaWMoIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlbG9jYXRlIFhlblxuIik7CiAKICAgICAv KiBUaGlzIG5lZWRzIHRvIHJlbWFpbiBpbiBzeW5jIHdpdGggeGVuX2luX3JhbmdlKCkuICovCi0g ICAgcmVzZXJ2ZV9lODIwX3JhbSgmYm9vdF9lODIwLCBfX3BhKF9zdGV4dCksIF9fcGEoX18yTV9y d2RhdGFfZW5kKSk7CisgICAgcmVzZXJ2ZV9lODIwX3JhbSgmYm9vdF9lODIwLCBfX3BhKFNZTUJP TChfc3RleHQpKSwgX19wYShTWU1CT0woX18yTV9yd2RhdGFfZW5kKSkpOwogCiAgICAgLyogTGF0 ZSBrZXhlYyByZXNlcnZhdGlvbiAoZHluYW1pYyBzdGFydCBhZGRyZXNzKS4gKi8KICAgICBrZXhl Y19yZXNlcnZlX2FyZWEoJmJvb3RfZTgyMCk7CkBAIC0xMzc3LDcgKzEzNzksOCBAQCB2b2lkIF9f aW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIH0KICNl bmRpZgogCi0gICAgeGVuX3ZpcnRfZW5kID0gKCh1bnNpZ25lZCBsb25nKV9lbmQgKyAoMVVMIDw8 IEwyX1BBR0VUQUJMRV9TSElGVCkgLSAxKSAmCisgICAgeGVuX3ZpcnRfZW5kID0gKFNZTUJPTChf ZW5kKSArCisgICAgICAgICAgICAgICAgICAgICgxVUwgPDwgTDJfUEFHRVRBQkxFX1NISUZUKSAt IDEpICYKICAgICAgICAgICAgICAgICAgICB+KCgxVUwgPDwgTDJfUEFHRVRBQkxFX1NISUZUKSAt IDEpOwogICAgIGRlc3Ryb3lfeGVuX21hcHBpbmdzKHhlbl92aXJ0X2VuZCwgWEVOX1ZJUlRfU1RB UlQgKyBCT09UU1RSQVBfTUFQX0JBU0UpOwogCkBAIC0xMzkwLDIyICsxMzkzLDIyIEBAIHZvaWQg X19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgewog ICAgICAgICAvKiBNYXJrIC50ZXh0IGFzIFJYIChhdm9pZGluZyB0aGUgZmlyc3QgMk0gc3VwZXJw YWdlKS4gKi8KICAgICAgICAgbW9kaWZ5X3hlbl9tYXBwaW5ncyhYRU5fVklSVF9TVEFSVCArIE1C KDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSZfXzJNX3Rl eHRfZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTCgmX18yTV90ZXh0X2Vu ZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9IWVBFUlZJU09SX1JYKTsKIAog ICAgICAgICAvKiBNYXJrIC5yb2RhdGEgYXMgUk8uICovCi0gICAgICAgIG1vZGlmeV94ZW5fbWFw cGluZ3MoKHVuc2lnbmVkIGxvbmcpJl9fMk1fcm9kYXRhX3N0YXJ0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSZfXzJNX3JvZGF0YV9lbmQsCisgICAgICAgIG1v ZGlmeV94ZW5fbWFwcGluZ3MoU1lNQk9MKCZfXzJNX3JvZGF0YV9zdGFydCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU1lNQk9MKCZfXzJNX3JvZGF0YV9lbmQpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBBR0VfSFlQRVJWSVNPUl9STyk7CiAKICAgICAgICAgLyogTWFyayAu ZGF0YSBhbmQgLmJzcyBhcyBSVy4gKi8KLSAgICAgICAgbW9kaWZ5X3hlbl9tYXBwaW5ncygodW5z aWduZWQgbG9uZykmX18yTV9yd2RhdGFfc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHVuc2lnbmVkIGxvbmcpJl9fMk1fcndkYXRhX2VuZCwKKyAgICAgICAgbW9kaWZ5X3hlbl9t YXBwaW5ncyhTWU1CT0woJl9fMk1fcndkYXRhX3N0YXJ0KSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTWU1CT0woJl9fMk1fcndkYXRhX2VuZCksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFHRV9IWVBFUlZJU09SX1JXKTsKIAogICAgICAgICAvKiBEcm9wIHRoZSByZW1haW5p bmcgbWFwcGluZ3MgaW4gdGhlIHNoYXR0ZXJlZCBzdXBlcnBhZ2UuICovCi0gICAgICAgIGRlc3Ry b3lfeGVuX21hcHBpbmdzKCh1bnNpZ25lZCBsb25nKSZfXzJNX3J3ZGF0YV9lbmQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJPVU5EVVAoKHVuc2lnbmVkIGxvbmcpJl9fMk1fcndkYXRh X2VuZCwgTUIoMikpKTsKKyAgICAgICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoU1lNQk9MKCZfXzJN X3J3ZGF0YV9lbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1VORFVQKFNZTUJP TCgmX18yTV9yd2RhdGFfZW5kKSwgTUIoMikpKTsKICAgICB9CiAKICAgICBucl9wYWdlcyA9IDA7 CkBAIC0xODYwLDExICsxODYzLDExIEBAIGludCBfX2h3ZG9tX2luaXQgeGVuX2luX3JhbmdlKHVu c2lnbmVkIGxvbmcgbWZuKQogICAgICAgICAgKi8KIAogICAgICAgICAvKiBoeXBlcnZpc29yIC50 ZXh0ICsgLnJvZGF0YSAqLwotICAgICAgICB4ZW5fcmVnaW9uc1tyZWdpb25fcm9dLnMgPSBfX3Bh KCZfc3RleHQpOwotICAgICAgICB4ZW5fcmVnaW9uc1tyZWdpb25fcm9dLmUgPSBfX3BhKCZfXzJN X3JvZGF0YV9lbmQpOworICAgICAgICB4ZW5fcmVnaW9uc1tyZWdpb25fcm9dLnMgPSBfX3BhKFNZ TUJPTCgmX3N0ZXh0KSk7CisgICAgICAgIHhlbl9yZWdpb25zW3JlZ2lvbl9yb10uZSA9IF9fcGEo U1lNQk9MKCZfXzJNX3JvZGF0YV9lbmQpKTsKICAgICAgICAgLyogaHlwZXJ2aXNvciAuZGF0YSAr IC5ic3MgKi8KLSAgICAgICAgeGVuX3JlZ2lvbnNbcmVnaW9uX3J3XS5zID0gX19wYSgmX18yTV9y d2RhdGFfc3RhcnQpOwotICAgICAgICB4ZW5fcmVnaW9uc1tyZWdpb25fcnddLmUgPSBfX3BhKCZf XzJNX3J3ZGF0YV9lbmQpOworICAgICAgICB4ZW5fcmVnaW9uc1tyZWdpb25fcnddLnMgPSBfX3Bh KFNZTUJPTCgmX18yTV9yd2RhdGFfc3RhcnQpKTsKKyAgICAgICAgeGVuX3JlZ2lvbnNbcmVnaW9u X3J3XS5lID0gX19wYShTWU1CT0woJl9fMk1fcndkYXRhX2VuZCkpOwogICAgIH0KIAogICAgIHN0 YXJ0ID0gKHBhZGRyX3QpbWZuIDw8IFBBR0VfU0hJRlQ7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvdGJvb3QuYyBiL3hlbi9hcmNoL3g4Ni90Ym9vdC5jCmluZGV4IGYzZmRlZTQuLmUzNTUyMzIg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni90Ym9vdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni90Ym9v dC5jCkBAIC0zNzMsMTMgKzM3MywxMyBAQCB2b2lkIHRib290X3NodXRkb3duKHVpbnQzMl90IHNo dXRkb3duX3R5cGUpCiAgICAgICAgIGdfdGJvb3Rfc2hhcmVkLT5tYWNfcmVnaW9uc1swXS5zaXpl ID0gYm9vdHN5bV9waHlzKHRyYW1wb2xpbmVfZW5kKSAtCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN5bV9waHlzKHRyYW1wb2xpbmVfc3RhcnQpOwog ICAgICAgICAvKiBoeXBlcnZpc29yIC50ZXh0ICsgLnJvZGF0YSAqLwotICAgICAgICBnX3Rib290 X3NoYXJlZC0+bWFjX3JlZ2lvbnNbMV0uc3RhcnQgPSAodWludDY0X3QpX19wYSgmX3N0ZXh0KTsK LSAgICAgICAgZ190Ym9vdF9zaGFyZWQtPm1hY19yZWdpb25zWzFdLnNpemUgPSBfX3BhKCZfXzJN X3JvZGF0YV9lbmQpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX3BhKCZfc3RleHQpOworICAgICAgICBnX3Rib290X3NoYXJlZC0+bWFjX3JlZ2lvbnNb MV0uc3RhcnQgPSAodWludDY0X3QpX19wYShTWU1CT0woJl9zdGV4dCkpOworICAgICAgICBnX3Ri b290X3NoYXJlZC0+bWFjX3JlZ2lvbnNbMV0uc2l6ZSA9IF9fcGEoU1lNQk9MKCZfXzJNX3JvZGF0 YV9lbmQpKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg X19wYShTWU1CT0woJl9zdGV4dCkpOwogICAgICAgICAvKiBoeXBlcnZpc29yIC5kYXRhICsgLmJz cyAqLwotICAgICAgICBnX3Rib290X3NoYXJlZC0+bWFjX3JlZ2lvbnNbMl0uc3RhcnQgPSAodWlu dDY0X3QpX19wYSgmX18yTV9yd2RhdGFfc3RhcnQpOwotICAgICAgICBnX3Rib290X3NoYXJlZC0+ bWFjX3JlZ2lvbnNbMl0uc2l6ZSA9IF9fcGEoJl9fMk1fcndkYXRhX2VuZCkgLQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcGEoJl9fMk1fcndkYXRhX3N0 YXJ0KTsKKyAgICAgICAgZ190Ym9vdF9zaGFyZWQtPm1hY19yZWdpb25zWzJdLnN0YXJ0ID0gKHVp bnQ2NF90KV9fcGEoU1lNQk9MKCZfXzJNX3J3ZGF0YV9zdGFydCkpOworICAgICAgICBnX3Rib290 X3NoYXJlZC0+bWFjX3JlZ2lvbnNbMl0uc2l6ZSA9IF9fcGEoU1lNQk9MKCZfXzJNX3J3ZGF0YV9l bmQpKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19w YShTWU1CT0woJl9fMk1fcndkYXRhX3N0YXJ0KSk7CiAKICAgICAgICAgLyoKICAgICAgICAgICog TUFDIGRvbWFpbnMgYW5kIG90aGVyIFhlbiBtZW1vcnkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni94ODZfNjQvbWFjaGluZV9rZXhlYy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tYWNoaW5lX2tl eGVjLmMKaW5kZXggZjRhMDA1Yy4uOTE5MzZkYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4 Nl82NC9tYWNoaW5lX2tleGVjLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tYWNoaW5lX2tl eGVjLmMKQEAgLTEzLDggKzEzLDggQEAKIAogaW50IG1hY2hpbmVfa2V4ZWNfZ2V0X3hlbih4ZW5f a2V4ZWNfcmFuZ2VfdCAqcmFuZ2UpCiB7Ci0gICAgICAgIHJhbmdlLT5zdGFydCA9IHZpcnRfdG9f bWFkZHIoX3N0YXJ0KTsKLSAgICAgICAgcmFuZ2UtPnNpemUgPSB2aXJ0X3RvX21hZGRyKF9lbmQp IC0gKHVuc2lnbmVkIGxvbmcpcmFuZ2UtPnN0YXJ0OworICAgICAgICByYW5nZS0+c3RhcnQgPSB2 aXJ0X3RvX21hZGRyKFNZTUJPTChfc3RhcnQpKTsKKyAgICAgICAgcmFuZ2UtPnNpemUgPSB2aXJ0 X3RvX21hZGRyKFNZTUJPTChfZW5kKSkgLSAodW5zaWduZWQgbG9uZylyYW5nZS0+c3RhcnQ7CiAg ICAgICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL3ZwY2ku YyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jCmluZGV4IDgyNjA3YmQuLmRmMmNhNDcgMTAwNjQ0 Ci0tLSBhL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jCisrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBj aS5jCkBAIC0zMyw3ICszMyw3IEBAIHN0cnVjdCB2cGNpX3JlZ2lzdGVyIHsKICNpZmRlZiBfX1hF Tl9fCiBleHRlcm4gdnBjaV9yZWdpc3Rlcl9pbml0X3QgKmNvbnN0IF9fc3RhcnRfdnBjaV9hcnJh eVtdOwogZXh0ZXJuIHZwY2lfcmVnaXN0ZXJfaW5pdF90ICpjb25zdCBfX2VuZF92cGNpX2FycmF5 W107Ci0jZGVmaW5lIE5VTV9WUENJX0lOSVQgKF9fZW5kX3ZwY2lfYXJyYXkgLSBfX3N0YXJ0X3Zw Y2lfYXJyYXkpCisjZGVmaW5lIE5VTV9WUENJX0lOSVQgKFNZTUJPTChfX2VuZF92cGNpX2FycmF5 KSAtIFNZTUJPTChfX3N0YXJ0X3ZwY2lfYXJyYXkpKQogCiB2b2lkIHZwY2lfcmVtb3ZlX2Rldmlj ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKQEAgLTcxLDYgKzcxLDExIEBAIGludCBfX2h3ZG9t X2luaXQgdnBjaV9hZGRfaGFuZGxlcnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAKICAgICBmb3Ig KCBpID0gMDsgaSA8IE5VTV9WUENJX0lOSVQ7IGkrKyApCiAgICAgeworICAgICAgICAvKgorICAg ICAgICAgKiBXZSBzaG91bGQgdXNlIFNZTUJPTCBoZXJlLCBidXQgaXQgd291bGQgbWFrZSB0aGUg Y29kZSBhd2t3YXJkCisgICAgICAgICAqIGFuZCBpdCBpcyBub3QgcmVxdWlyZWQgZHVlIGJlY2F1 c2UgdGhlcmUgYXJlIG5vIHBvaW50ZXJzCisgICAgICAgICAqIGNvbXBhcmlzb24uIExlYXZlIGl0 IGFzIGlzLgorICAgICAgICAgKi8KICAgICAgICAgcmMgPSBfX3N0YXJ0X3ZwY2lfYXJyYXlbaV0o cGRldik7CiAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmggYi94ZW4vaW5jbHVkZS9hc20tYXJt L2dyYW50X3RhYmxlLmgKaW5kZXggMzc0MTViNy4uNmM1ZWRjYyAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLWFybS9ncmFudF90YWJsZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3Jh bnRfdGFibGUuaApAQCAtMzEsNyArMzEsOCBAQCB2b2lkIGdudHRhYl9tYXJrX2RpcnR5KHN0cnVj dCBkb21haW4gKmQsIG1mbl90IG1mbik7CiAgKiBlbm91Z2ggc3BhY2UgZm9yIGEgbGFyZ2UgZ3Jh bnQgdGFibGUKICAqLwogI2RlZmluZSBnbnR0YWJfZG9tMF9mcmFtZXMoKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBtaW5fdCh1bnNpZ25lZCBpbnQs IG9wdF9tYXhfZ3JhbnRfZnJhbWVzLCBQRk5fRE9XTihfZXRleHQgLSBfc3RleHQpKQorICAgIG1p bl90KHVuc2lnbmVkIGludCwgb3B0X21heF9ncmFudF9mcmFtZXMsICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICBQRk5fRE9XTihTWU1CT0woX2V0ZXh0KSAtIFNZTUJPTChf c3RleHQpKSkKIAogI2RlZmluZSBnbnR0YWJfaW5pdF9hcmNoKGd0KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICh7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgK aW5kZXggOTQwYjc0Yi4uNjE5ODNmNiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9t bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaApAQCAtMTUxLDggKzE1MSw4IEBAIGV4 dGVybiB2YWRkcl90IHhlbmhlYXBfdmlydF9zdGFydDsKICNlbmRpZgogCiAjZGVmaW5lIGlzX3hl bl9maXhlZF9tZm4obWZuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICgocGZuX3RvX3BhZGRyKG1mbikgPj0gdmlydF90b19tYWRkcigmX3N0YXJ0KSkgJiYgICAgICAg XAotICAgICAocGZuX3RvX3BhZGRyKG1mbikgPD0gdmlydF90b19tYWRkcigmX2VuZCkpKQorICAg ICgocGZuX3RvX3BhZGRyKG1mbikgPj0gdmlydF90b19tYWRkcihTWU1CT0woJl9zdGFydCkpKSAm JiBcCisgICAgIChwZm5fdG9fcGFkZHIobWZuKSA8PSB2aXJ0X3RvX21hZGRyKFNZTUJPTCgmX2Vu ZCkpKSkKIAogI2RlZmluZSBwYWdlX2dldF9vd25lcihfcCkgICAgKF9wKS0+di5pbnVzZS5kb21h aW4KICNkZWZpbmUgcGFnZV9zZXRfb3duZXIoX3AsX2QpICgoX3ApLT52LmludXNlLmRvbWFpbiA9 IChfZCkpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L21tLmgKaW5kZXggNmU0NTY1MS4uODIwMThiMiAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaApAQCAtMjcz LDggKzI3Myw4IEBAIHN0cnVjdCBwYWdlX2luZm8KICNkZWZpbmUgaXNfeGVuX2hlYXBfbWZuKG1m bikgXAogICAgIChfX21mbl92YWxpZChtZm4pICYmIGlzX3hlbl9oZWFwX3BhZ2UobWZuX3RvX3Bh Z2UoX21mbihtZm4pKSkpCiAjZGVmaW5lIGlzX3hlbl9maXhlZF9tZm4obWZuKSAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAoKCgobWZuKSA8PCBQQUdFX1NISUZUKSA+PSBfX3BhKCZfc3RleHQp KSAmJiAgXAotICAgICAoKChtZm4pIDw8IFBBR0VfU0hJRlQpIDw9IF9fcGEoJl9fMk1fcndkYXRh X2VuZCkpKQorICAgICgoKChtZm4pIDw8IFBBR0VfU0hJRlQpID49IF9fcGEoU1lNQk9MKCZfc3Rl eHQpKSkgJiYgIFwKKyAgICAgKCgobWZuKSA8PCBQQUdFX1NISUZUKSA8PSBfX3BhKFNZTUJPTCgm X18yTV9yd2RhdGFfZW5kKSkpKQogCiAjZGVmaW5lIFBSdHlwZV9pbmZvICIwMTZseCIvKiBzaG91 bGQgb25seSBiZSB1c2VkIGZvciBwcmludGsncyAqLwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4va2VybmVsLmggYi94ZW4vaW5jbHVkZS94ZW4va2VybmVsLmgKaW5kZXggNTQ4YjY0ZC4u Y2QyNzAzMCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2tlcm5lbC5oCisrKyBiL3hlbi9p bmNsdWRlL3hlbi9rZXJuZWwuaApAQCAtNjYsMjcgKzY2LDI3IEBACiB9KQogCiBleHRlcm4gY2hh ciBfc3RhcnRbXSwgX2VuZFtdLCBzdGFydFtdOwotI2RlZmluZSBpc19rZXJuZWwocCkgKHsgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNoYXIgKl9fcCA9IChjaGFyICopKHVuc2lnbmVk IGxvbmcpKHApOyAgICAgXAotICAgIChfX3AgPj0gX3N0YXJ0KSAmJiAoX19wIDwgX2VuZCk7ICAg ICAgICAgICAgXAorI2RlZmluZSBpc19rZXJuZWwocCkgKHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29uc3QgdW5zaWduZWQgbG9uZyBfX3AgPSAo dW5zaWduZWQgbG9uZykocCk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX19wID49IFNZTUJP TChfc3RhcnQpKSAmJiAoX19wIDwgU1lNQk9MKF9lbmQpKTsgICAgICAgICAgICBcCiB9KQogCiBl eHRlcm4gY2hhciBfc3RleHRbXSwgX2V0ZXh0W107Ci0jZGVmaW5lIGlzX2tlcm5lbF90ZXh0KHAp ICh7ICAgICAgICAgICAgICAgICAgICBcCi0gICAgY2hhciAqX19wID0gKGNoYXIgKikodW5zaWdu ZWQgbG9uZykocCk7ICAgICBcCi0gICAgKF9fcCA+PSBfc3RleHQpICYmIChfX3AgPCBfZXRleHQp OyAgICAgICAgICBcCisjZGVmaW5lIGlzX2tlcm5lbF90ZXh0KHApICh7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIF9fcCA9 ICh1bnNpZ25lZCBsb25nKShwKTsgICAgICAgICAgICAgICAgICAgXAorICAgIChfX3AgPj0gU1lN Qk9MKF9zdGV4dCkpICYmIChfX3AgPCBTWU1CT0woX2V0ZXh0KSk7ICAgICAgICAgIFwKIH0pCiAK IGV4dGVybiBjb25zdCBjaGFyIF9zcm9kYXRhW10sIF9lcm9kYXRhW107Ci0jZGVmaW5lIGlzX2tl cm5lbF9yb2RhdGEocCkgKHsgICAgICAgICAgICAgICAgICBcCi0gICAgY29uc3QgY2hhciAqX19w ID0gKGNvbnN0IGNoYXIgKikodW5zaWduZWQgbG9uZykocCk7ICAgICBcCi0gICAgKF9fcCA+PSBf c3JvZGF0YSkgJiYgKF9fcCA8IF9lcm9kYXRhKTsgICAgICBcCisjZGVmaW5lIGlzX2tlcm5lbF9y b2RhdGEocCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBj b25zdCB1bnNpZ25lZCBsb25nIF9fcCA9ICh1bnNpZ25lZCBsb25nKShwKTsgICAgICAgICAgICAg ICAgICAgXAorICAgIChfX3AgPj0gU1lNQk9MKF9zcm9kYXRhKSkgJiYgKF9fcCA8IFNZTUJPTChf ZXJvZGF0YSkpOyAgICAgIFwKIH0pCiAKIGV4dGVybiBjaGFyIF9zaW5pdHRleHRbXSwgX2Vpbml0 dGV4dFtdOwotI2RlZmluZSBpc19rZXJuZWxfaW5pdHRleHQocCkgKHsgICAgICAgICAgICAgICAg XAotICAgIGNoYXIgKl9fcCA9IChjaGFyICopKHVuc2lnbmVkIGxvbmcpKHApOyAgICAgXAotICAg IChfX3AgPj0gX3Npbml0dGV4dCkgJiYgKF9fcCA8IF9laW5pdHRleHQpOyAgXAorI2RlZmluZSBp c19rZXJuZWxfaW5pdHRleHQocCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgY29uc3QgdW5zaWduZWQgbG9uZyBfX3AgPSAodW5zaWduZWQgbG9uZykocCk7ICAg ICAgICAgICAgICAgICAgIFwKKyAgICAoX19wID49IFNZTUJPTChfc2luaXR0ZXh0KSkgJiYgKF9f cCA8IFNZTUJPTChfZWluaXR0ZXh0KSk7ICBcCiB9KQogCiBleHRlcm4gZW51bSBzeXN0ZW1fc3Rh dGUgewotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs