From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id C65413858CDB for ; Thu, 18 May 2023 17:16:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C65413858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4C0FE1FB; Thu, 18 May 2023 10:16:50 -0700 (PDT) Received: from [10.57.72.229] (unknown [10.57.72.229]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 092473F762; Thu, 18 May 2023 10:16:03 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------Vel6F5aglXMxhnixhpqHwuUu" Message-ID: Date: Thu, 18 May 2023 18:15:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH 2/3] Refactor widen_plus as internal_fn Content-Language: en-US To: Richard Biener Cc: Richard Sandiford , Richard Biener , "gcc-patches@gcc.gnu.org" References: <51ce8969-3130-452e-092e-f9d91eff2dad@arm.com> <4df83136-82f9-de0b-7e66-007b9047174d@arm.com> <37abc128-776c-0f04-f755-30e514909e15@arm.com> From: "Andre Vieira (lists)" In-Reply-To: X-Spam-Status: No, score=-16.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,KAM_LOTSOFHASH,KAM_SHORT,NICE_REPLY_A,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------Vel6F5aglXMxhnixhpqHwuUu Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit How about this? Not sure about the DEF_INTERNAL documentation I rewrote in internal-fn.def, was struggling to word these, so improvements welcome! gcc/ChangeLog: 2023-04-25 Andre Vieira Joel Hutton Tamar Christina * config/aarch64/aarch64-simd.md (vec_widen_addl_lo_): Rename this ... (vec_widen_add_lo_): ... to this. (vec_widen_addl_hi_): Rename this ... (vec_widen_add_hi_): ... to this. (vec_widen_subl_lo_): Rename this ... (vec_widen_sub_lo_): ... to this. (vec_widen_subl_hi_): Rename this ... (vec_widen_sub_hi_): ...to this. * doc/generic.texi: Document new IFN codes. * internal-fn.cc (ifn_cmp): Function to compare ifn's for sorting/searching. (lookup_hilo_internal_fn): Add lookup function. (commutative_binary_fn_p): Add widen_plus fn's. (widening_fn_p): New function. (narrowing_fn_p): New function. (direct_internal_fn_optab): Change visibility. * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an internal_fn that expands into multiple internal_fns for widening. (DEF_INTERNAL_NARROWING_OPTAB_FN): Likewise but for narrowing. (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO, IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD, IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI, IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD, IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions. * internal-fn.h (direct_internal_fn_optab): Declare new prototype. (lookup_hilo_internal_fn): Likewise. (widening_fn_p): Likewise. (Narrowing_fn_p): Likewise. * optabs.cc (commutative_optab_p): Add widening plus optabs. * optabs.def (OPTAB_D): Define widen add, sub optabs. * tree-cfg.cc (verify_gimple_call): Add checks for widening ifns. * tree-inline.cc (estimate_num_insns): Return same cost for widen add and sub IFNs as previous tree_codes. * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support patterns with a hi/lo or even/odd split. (vect_recog_sad_pattern): Refactor to use new IFN codes. (vect_recog_widen_plus_pattern): Likewise. (vect_recog_widen_minus_pattern): Likewise. (vect_recog_average_pattern): Likewise. * tree-vect-stmts.cc (vectorizable_conversion): Add support for _HILO IFNs. (supportable_widening_operation): Likewise. * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs. gcc/testsuite/ChangeLog: * gcc.target/aarch64/vect-widen-add.c: Test that new IFN_VEC_WIDEN_PLUS is being used. * gcc.target/aarch64/vect-widen-sub.c: Test that new IFN_VEC_WIDEN_MINUS is being used. --------------Vel6F5aglXMxhnixhpqHwuUu Content-Type: text/plain; charset=UTF-8; name="ifn1v4.patch" Content-Disposition: attachment; filename="ifn1v4.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kCmluZGV4IGJmYzk4YThkOTQzNDY3YjMz MzkwZGVmYWI5NjgyZjQ0ZWZhYjU5MDcuLmZmYmJlY2I5NDA5ZTFjMjgzNWQ2NThjMmE4ODU1 Y2QwZTk1NWMwZjIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNp bWQubWQKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZApAQCAtNDYy Niw3ICs0NjI2LDcgQEAKICAgWyhzZXRfYXR0ciAidHlwZSIgIm5lb25fPEFERFNVQjpvcHRh Yj5fbG9uZyIpXQogKQogCi0oZGVmaW5lX2V4cGFuZCAidmVjX3dpZGVuXzxzdT5hZGRsX2xv Xzxtb2RlPiIKKyhkZWZpbmVfZXhwYW5kICJ2ZWNfd2lkZW5fPHN1PmFkZF9sb188bW9kZT4i CiAgIFsobWF0Y2hfb3BlcmFuZDo8VldJREU+IDAgInJlZ2lzdGVyX29wZXJhbmQiKQogICAg KEFOWV9FWFRFTkQ6PFZXSURFPiAobWF0Y2hfb3BlcmFuZDpWUVcgMSAicmVnaXN0ZXJfb3Bl cmFuZCIpKQogICAgKEFOWV9FWFRFTkQ6PFZXSURFPiAobWF0Y2hfb3BlcmFuZDpWUVcgMiAi cmVnaXN0ZXJfb3BlcmFuZCIpKV0KQEAgLTQ2MzgsNyArNDYzOCw3IEBACiAgIERPTkU7CiB9 KQogCi0oZGVmaW5lX2V4cGFuZCAidmVjX3dpZGVuXzxzdT5hZGRsX2hpXzxtb2RlPiIKKyhk ZWZpbmVfZXhwYW5kICJ2ZWNfd2lkZW5fPHN1PmFkZF9oaV88bW9kZT4iCiAgIFsobWF0Y2hf b3BlcmFuZDo8VldJREU+IDAgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKEFOWV9FWFRFTkQ6 PFZXSURFPiAobWF0Y2hfb3BlcmFuZDpWUVcgMSAicmVnaXN0ZXJfb3BlcmFuZCIpKQogICAg KEFOWV9FWFRFTkQ6PFZXSURFPiAobWF0Y2hfb3BlcmFuZDpWUVcgMiAicmVnaXN0ZXJfb3Bl cmFuZCIpKV0KQEAgLTQ2NTAsNyArNDY1MCw3IEBACiAgIERPTkU7CiB9KQogCi0oZGVmaW5l X2V4cGFuZCAidmVjX3dpZGVuXzxzdT5zdWJsX2xvXzxtb2RlPiIKKyhkZWZpbmVfZXhwYW5k ICJ2ZWNfd2lkZW5fPHN1PnN1Yl9sb188bW9kZT4iCiAgIFsobWF0Y2hfb3BlcmFuZDo8VldJ REU+IDAgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKEFOWV9FWFRFTkQ6PFZXSURFPiAobWF0 Y2hfb3BlcmFuZDpWUVcgMSAicmVnaXN0ZXJfb3BlcmFuZCIpKQogICAgKEFOWV9FWFRFTkQ6 PFZXSURFPiAobWF0Y2hfb3BlcmFuZDpWUVcgMiAicmVnaXN0ZXJfb3BlcmFuZCIpKV0KQEAg LTQ2NjIsNyArNDY2Miw3IEBACiAgIERPTkU7CiB9KQogCi0oZGVmaW5lX2V4cGFuZCAidmVj X3dpZGVuXzxzdT5zdWJsX2hpXzxtb2RlPiIKKyhkZWZpbmVfZXhwYW5kICJ2ZWNfd2lkZW5f PHN1PnN1Yl9oaV88bW9kZT4iCiAgIFsobWF0Y2hfb3BlcmFuZDo8VldJREU+IDAgInJlZ2lz dGVyX29wZXJhbmQiKQogICAgKEFOWV9FWFRFTkQ6PFZXSURFPiAobWF0Y2hfb3BlcmFuZDpW UVcgMSAicmVnaXN0ZXJfb3BlcmFuZCIpKQogICAgKEFOWV9FWFRFTkQ6PFZXSURFPiAobWF0 Y2hfb3BlcmFuZDpWUVcgMiAicmVnaXN0ZXJfb3BlcmFuZCIpKV0KZGlmZiAtLWdpdCBhL2dj Yy9kb2MvZ2VuZXJpYy50ZXhpIGIvZ2NjL2RvYy9nZW5lcmljLnRleGkKaW5kZXggOGIyODgy ZGE0ZmU3ZGEwN2QyMmI0ZTUzODRkMDQ5YmE3ZDM5MDdiZi4uNWUzNmRhYzJiMWExMDI1NzYx NmYxMmNkZmIwYjEyZDBmMjg3OWFlOSAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9nZW5lcmljLnRl eGkKKysrIGIvZ2NjL2RvYy9nZW5lcmljLnRleGkKQEAgLTE4MTEsMTAgKzE4MTEsMTYgQEAg YSB2YWx1ZSBmcm9tIEBjb2Rle2VudW0gYW5ub3RfZXhwcl9raW5kfSwgdGhlIHRoaXJkIGlz IGFuIEBjb2Rle0lOVEVHRVJfQ1NUfS4KIEB0aW5kZXggVkVDX1JTSElGVF9FWFBSCiBAdGlu ZGV4IFZFQ19XSURFTl9NVUxUX0hJX0VYUFIKIEB0aW5kZXggVkVDX1dJREVOX01VTFRfTE9f RVhQUgotQHRpbmRleCBWRUNfV0lERU5fUExVU19ISV9FWFBSCi1AdGluZGV4IFZFQ19XSURF Tl9QTFVTX0xPX0VYUFIKLUB0aW5kZXggVkVDX1dJREVOX01JTlVTX0hJX0VYUFIKLUB0aW5k ZXggVkVDX1dJREVOX01JTlVTX0xPX0VYUFIKK0B0aW5kZXggSUZOX1ZFQ19XSURFTl9QTFVT CitAdGluZGV4IElGTl9WRUNfV0lERU5fUExVU19ISQorQHRpbmRleCBJRk5fVkVDX1dJREVO X1BMVVNfTE8KK0B0aW5kZXggSUZOX1ZFQ19XSURFTl9QTFVTX0VWRU4KK0B0aW5kZXggSUZO X1ZFQ19XSURFTl9QTFVTX09ERAorQHRpbmRleCBJRk5fVkVDX1dJREVOX01JTlVTCitAdGlu ZGV4IElGTl9WRUNfV0lERU5fTUlOVVNfSEkKK0B0aW5kZXggSUZOX1ZFQ19XSURFTl9NSU5V U19MTworQHRpbmRleCBJRk5fVkVDX1dJREVOX01JTlVTX0VWRU4KK0B0aW5kZXggSUZOX1ZF Q19XSURFTl9NSU5VU19PREQKIEB0aW5kZXggVkVDX1VOUEFDS19ISV9FWFBSCiBAdGluZGV4 IFZFQ19VTlBBQ0tfTE9fRVhQUgogQHRpbmRleCBWRUNfVU5QQUNLX0ZMT0FUX0hJX0VYUFIK QEAgLTE4NjEsNiArMTg2Nyw4MiBAQCB2ZWN0b3Igb2YgQGNvZGV7Ti8yfSBwcm9kdWN0cy4g SW4gdGhlIGNhc2Ugb2YgQGNvZGV7VkVDX1dJREVOX01VTFRfTE9fRVhQUn0gdGhlCiBsb3cg QGNvZGV7Ti8yfSBlbGVtZW50cyBvZiB0aGUgdHdvIHZlY3RvciBhcmUgbXVsdGlwbGllZCB0 byBwcm9kdWNlIHRoZQogdmVjdG9yIG9mIEBjb2Rle04vMn0gcHJvZHVjdHMuCiAKK0BpdGVt IElGTl9WRUNfV0lERU5fUExVUworVGhpcyBpbnRlcm5hbCBmdW5jdGlvbiByZXByZXNlbnRz IHdpZGVuaW5nIHZlY3RvciBhZGRpdGlvbiBvZiB0d28gaW5wdXQKK3ZlY3RvcnMuICBJdHMg b3BlcmFuZHMgYXJlIHZlY3RvcnMgdGhhdCBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBl bGVtZW50cworKEBjb2Rle059KSBvZiB0aGUgc2FtZSBpbnRlZ3JhbCB0eXBlLiAgVGhlIHJl c3VsdCBpcyBhIHZlY3RvciB0aGF0IGNvbnRhaW5zCit0aGUgc2FtZSBhbW91bnQgKEBjb2Rl e059KSBvZiBlbGVtZW50cywgb2YgYW4gaW50ZWdyYWwgdHlwZSB3aG9zZSBzaXplIGlzIHR3 aWNlCithcyB3aWRlLCBhcyB0aGUgaW5wdXQgdmVjdG9ycy4gIElmIHRoZSBjdXJyZW50IHRh cmdldCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlCitjb3JyZXNwb25kaW5nIG9wdGFicyB0aGUg dmVjdG9yaXplciBtYXkgY2hvb3NlIHRvIHNwbGl0IGl0IGludG8gZWl0aGVyIGEgcGFpcgor b2YgQGNvZGV7SUZOX1ZFQ19XSURFTl9QTFVTX0hJfSBhbmQgQGNvZGV7SUZOX1ZFQ19XSURF Tl9QTFVTX0xPfSBvcgorQGNvZGV7SUZOX1ZFQ19XSURFTl9QTFVTX0VWRU59IGFuZCBAY29k ZXtJRk5fVkVDX1dJREVOX1BMVVNfT0REfSwgZGVwZW5kaW5nCitvbiB3aGF0IG9wdGFicyB0 aGUgdGFyZ2V0IGltcGxlbWVudHMuCisKK0BpdGVtIElGTl9WRUNfV0lERU5fUExVU19ISQor QGl0ZW14IElGTl9WRUNfV0lERU5fUExVU19MTworVGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25z IHJlcHJlc2VudCB3aWRlbmluZyB2ZWN0b3IgYWRkaXRpb24gb2YgdGhlIGhpZ2ggYW5kIGxv dworcGFydHMgb2YgdGhlIHR3byBpbnB1dCB2ZWN0b3JzLCByZXNwZWN0aXZlbHkuICBUaGVp ciBvcGVyYW5kcyBhcmUgdmVjdG9ycyB0aGF0Citjb250YWluIHRoZSBzYW1lIG51bWJlciBv ZiBlbGVtZW50cyAoQGNvZGV7Tn0pIG9mIHRoZSBzYW1lIGludGVncmFsIHR5cGUuIFRoZQor cmVzdWx0IGlzIGEgdmVjdG9yIHRoYXQgY29udGFpbnMgaGFsZiBhcyBtYW55IGVsZW1lbnRz LCBvZiBhbiBpbnRlZ3JhbCB0eXBlCit3aG9zZSBzaXplIGlzIHR3aWNlIGFzIHdpZGUuICBJ biB0aGUgY2FzZSBvZiBAY29kZXtJRk5fVkVDX1dJREVOX1BMVVNfSEl9IHRoZQoraGlnaCBA Y29kZXtOLzJ9IGVsZW1lbnRzIG9mIHRoZSB0d28gdmVjdG9ycyBhcmUgYWRkZWQgdG8gcHJv ZHVjZSB0aGUgdmVjdG9yIG9mCitAY29kZXtOLzJ9IGFkZGl0aW9ucy4gIEluIHRoZSBjYXNl IG9mIEBjb2Rle0lGTl9WRUNfV0lERU5fUExVU19MT30gdGhlIGxvdworQGNvZGV7Ti8yfSBl bGVtZW50cyBvZiB0aGUgdHdvIHZlY3RvcnMgYXJlIGFkZGVkIHRvIHByb2R1Y2UgdGhlIHZl Y3RvciBvZgorQGNvZGV7Ti8yfSBhZGRpdGlvbnMuCisKK0BpdGVtIElGTl9WRUNfV0lERU5f UExVU19FVkVOCitAaXRlbXggSUZOX1ZFQ19XSURFTl9QTFVTX09ERAorVGhlc2UgaW50ZXJu YWwgZnVuY3Rpb25zIHJlcHJlc2VudCB3aWRlbmluZyB2ZWN0b3IgYWRkaXRpb24gb2YgdGhl IGV2ZW4gYW5kIG9kZAorZWxlbWVudHMgb2YgdGhlIHR3byBpbnB1dCB2ZWN0b3JzLCByZXNw ZWN0aXZlbHkuICBUaGVpciBvcGVyYW5kcyBhcmUgdmVjdG9ycwordGhhdCBjb250YWluIHRo ZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyAoQGNvZGV7Tn0pIG9mIHRoZSBzYW1lIGludGVn cmFsIHR5cGUuCitUaGUgcmVzdWx0IGlzIGEgdmVjdG9yIHRoYXQgY29udGFpbnMgaGFsZiBh cyBtYW55IGVsZW1lbnRzLCBvZiBhbiBpbnRlZ3JhbCB0eXBlCit3aG9zZSBzaXplIGlzIHR3 aWNlIGFzIHdpZGUuICBJbiB0aGUgY2FzZSBvZiBAY29kZXtJRk5fVkVDX1dJREVOX1BMVVNf RVZFTn0gdGhlCitldmVuIEBjb2Rle04vMn0gZWxlbWVudHMgb2YgdGhlIHR3byB2ZWN0b3Jz IGFyZSBhZGRlZCB0byBwcm9kdWNlIHRoZSB2ZWN0b3Igb2YKK0Bjb2Rle04vMn0gYWRkaXRp b25zLiAgSW4gdGhlIGNhc2Ugb2YgQGNvZGV7SUZOX1ZFQ19XSURFTl9QTFVTX09ERH0gdGhl IG9kZAorQGNvZGV7Ti8yfSBlbGVtZW50cyBvZiB0aGUgdHdvIHZlY3RvcnMgYXJlIGFkZGVk IHRvIHByb2R1Y2UgdGhlIHZlY3RvciBvZgorQGNvZGV7Ti8yfSBhZGRpdGlvbnMuCisKK0Bp dGVtIElGTl9WRUNfV0lERU5fTUlOVVMKK1RoaXMgaW50ZXJuYWwgZnVuY3Rpb24gcmVwcmVz ZW50cyB3aWRlbmluZyB2ZWN0b3Igc3VidHJhY3Rpb24gb2YgdHdvIGlucHV0Cit2ZWN0b3Jz LiAgSXRzIG9wZXJhbmRzIGFyZSB2ZWN0b3JzIHRoYXQgY29udGFpbiB0aGUgc2FtZSBudW1i ZXIgb2YgZWxlbWVudHMKKyhAY29kZXtOfSkgb2YgdGhlIHNhbWUgaW50ZWdyYWwgdHlwZS4g IFRoZSByZXN1bHQgaXMgYSB2ZWN0b3IgdGhhdCBjb250YWlucwordGhlIHNhbWUgYW1vdW50 IChAY29kZXtOfSkgb2YgZWxlbWVudHMsIG9mIGFuIGludGVncmFsIHR5cGUgd2hvc2Ugc2l6 ZSBpcyB0d2ljZQorYXMgd2lkZSwgYXMgdGhlIGlucHV0IHZlY3RvcnMuICBJZiB0aGUgY3Vy cmVudCB0YXJnZXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZQorY29ycmVzcG9uZGluZyBvcHRh YnMgdGhlIHZlY3Rvcml6ZXIgbWF5IGNob29zZSB0byBzcGxpdCBpdCBpbnRvIGVpdGhlciBh IHBhaXIKK29mIEBjb2Rle0lGTl9WRUNfV0lERU5fTUlOVVNfSEl9IGFuZCBAY29kZXtJRk5f VkVDX1dJREVOX01JTlVTX0xPfSBvcgorQGNvZGV7SUZOX1ZFQ19XSURFTl9NSU5VU19FVkVO fSBhbmQgQGNvZGV7SUZOX1ZFQ19XSURFTl9NSU5VU19PRER9LCBkZXBlbmRpbmcKK29uIHdo YXQgb3B0YWJzIHRoZSB0YXJnZXQgaW1wbGVtZW50cy4KKworQGl0ZW0gSUZOX1ZFQ19XSURF Tl9NSU5VU19ISQorQGl0ZW14IElGTl9WRUNfV0lERU5fTUlOVVNfTE8KK1RoZXNlIGludGVy bmFsIGZ1bmN0aW9ucyByZXByZXNlbnQgd2lkZW5pbmcgdmVjdG9yIHN1YnRyYWN0aW9uIG9m IHRoZSBoaWdoIGFuZAorbG93IHBhcnRzIG9mIHRoZSB0d28gaW5wdXQgdmVjdG9ycywgcmVz cGVjdGl2ZWx5LiAgVGhlaXIgb3BlcmFuZHMgYXJlIHZlY3RvcnMKK3RoYXQgY29udGFpbiB0 aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMgKEBjb2Rle059KSBvZiB0aGUgc2FtZSBpbnRl Z3JhbCB0eXBlLgorVGhlIGhpZ2gvbG93IGVsZW1lbnRzIG9mIHRoZSBzZWNvbmQgdmVjdG9y IGFyZSBzdWJ0cmFjdGVkIGZyb20gdGhlIGhpZ2gvbG93CitlbGVtZW50cyBvZiB0aGUgZmly c3QuIFRoZSByZXN1bHQgaXMgYSB2ZWN0b3IgdGhhdCBjb250YWlucyBoYWxmIGFzIG1hbnkK K2VsZW1lbnRzLCBvZiBhbiBpbnRlZ3JhbCB0eXBlIHdob3NlIHNpemUgaXMgdHdpY2UgYXMg d2lkZS4gIEluIHRoZSBjYXNlIG9mCitAY29kZXtJRk5fVkVDX1dJREVOX01JTlVTX0hJfSB0 aGUgaGlnaCBAY29kZXtOLzJ9IGVsZW1lbnRzIG9mIHRoZSBzZWNvbmQKK3ZlY3RvciBhcmUg c3VidHJhY3RlZCBmcm9tIHRoZSBoaWdoIEBjb2Rle04vMn0gb2YgdGhlIGZpcnN0IHRvIHBy b2R1Y2UgdGhlCit2ZWN0b3Igb2YgQGNvZGV7Ti8yfSBzdWJ0cmFjdGlvbnMuICBJbiB0aGUg Y2FzZSBvZgorQGNvZGV7SUZOX1ZFQ19XSURFTl9NSU5VU19MT30gdGhlIGxvdyBAY29kZXtO LzJ9IGVsZW1lbnRzIG9mIHRoZSBzZWNvbmQKK3ZlY3RvciBhcmUgc3VidHJhY3RlZCBmcm9t IHRoZSBsb3cgQGNvZGV7Ti8yfSBvZiB0aGUgZmlyc3QgdG8gcHJvZHVjZSB0aGUKK3ZlY3Rv ciBvZiBAY29kZXtOLzJ9IHN1YnRyYWN0aW9ucy4KKworQGl0ZW0gSUZOX1ZFQ19XSURFTl9N SU5VU19FVkVOCitAaXRlbXggSUZOX1ZFQ19XSURFTl9NSU5VU19PREQKK1RoZXNlIGludGVy bmFsIGZ1bmN0aW9ucyByZXByZXNlbnQgd2lkZW5pbmcgdmVjdG9yIHN1YnRyYWN0aW9uIG9m IHRoZSBldmVuIGFuZAorb2RkIHBhcnRzIG9mIHRoZSB0d28gaW5wdXQgdmVjdG9ycywgcmVz cGVjdGl2ZWx5LiAgVGhlaXIgb3BlcmFuZHMgYXJlIHZlY3RvcnMKK3RoYXQgY29udGFpbiB0 aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMgKEBjb2Rle059KSBvZiB0aGUgc2FtZSBpbnRl Z3JhbCB0eXBlLgorVGhlIGV2ZW4vb2RkIGVsZW1lbnRzIG9mIHRoZSBzZWNvbmQgdmVjdG9y IGFyZSBzdWJ0cmFjdGVkIGZyb20gdGhlIGV2ZW4vb2RkCitlbGVtZW50cyBvZiB0aGUgZmly c3QuIFRoZSByZXN1bHQgaXMgYSB2ZWN0b3IgdGhhdCBjb250YWlucyBoYWxmIGFzIG1hbnkK K2VsZW1lbnRzLCBvZiBhbiBpbnRlZ3JhbCB0eXBlIHdob3NlIHNpemUgaXMgdHdpY2UgYXMg d2lkZS4gIEluIHRoZSBjYXNlIG9mCitAY29kZXtJRk5fVkVDX1dJREVOX01JTlVTX0VWRU59 IHRoZSBldmVuIEBjb2Rle04vMn0gZWxlbWVudHMgb2YgdGhlIHNlY29uZAordmVjdG9yIGFy ZSBzdWJ0cmFjdGVkIGZyb20gdGhlIGV2ZW4gQGNvZGV7Ti8yfSBvZiB0aGUgZmlyc3QgdG8g cHJvZHVjZSB0aGUKK3ZlY3RvciBvZiBAY29kZXtOLzJ9IHN1YnRyYWN0aW9ucy4gIEluIHRo ZSBjYXNlIG9mCitAY29kZXtJRk5fVkVDX1dJREVOX01JTlVTX09ERH0gdGhlIG9kZCBAY29k ZXtOLzJ9IGVsZW1lbnRzIG9mIHRoZSBzZWNvbmQKK3ZlY3RvciBhcmUgc3VidHJhY3RlZCBm cm9tIHRoZSBvZGQgQGNvZGV7Ti8yfSBvZiB0aGUgZmlyc3QgdG8gcHJvZHVjZSB0aGUKK3Zl Y3RvciBvZiBAY29kZXtOLzJ9IHN1YnRyYWN0aW9ucy4KKwogQGl0ZW0gVkVDX1dJREVOX1BM VVNfSElfRVhQUgogQGl0ZW14IFZFQ19XSURFTl9QTFVTX0xPX0VYUFIKIFRoZXNlIG5vZGVz IHJlcHJlc2VudCB3aWRlbmluZyB2ZWN0b3IgYWRkaXRpb24gb2YgdGhlIGhpZ2ggYW5kIGxv dyBwYXJ0cyBvZgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1vcC5jYyBiL2djYy9n aW1wbGUtcmFuZ2Utb3AuY2MKaW5kZXggNTk0YmQzMDQzZjBlOTQ0Mjk5ZGRmZmYyMTlmNzU3 ZWYxNWEzZGQ2MS4uMzNmNGI3MDY0YTJhMjJhYWQ0OWYyN2IyNGI0MDllOTFhNWI4OWM2OSAx MDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS1vcC5jYworKysgYi9nY2MvZ2ltcGxlLXJh bmdlLW9wLmNjCkBAIC0xMTg3LDYgKzExODcsNyBAQCBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxl cjo6bWF5YmVfbm9uX3N0YW5kYXJkICgpCiB7CiAgIHJhbmdlX29wZXJhdG9yICpzaWduZWRf b3AgPSBwdHJfb3Bfd2lkZW5fbXVsdF9zaWduZWQ7CiAgIHJhbmdlX29wZXJhdG9yICp1bnNp Z25lZF9vcCA9IHB0cl9vcF93aWRlbl9tdWx0X3Vuc2lnbmVkOworICBib29sIHNpZ25lZDEs IHNpZ25lZDIsIHNpZ25lZF9yZXQ7CiAgIGlmIChnaW1wbGVfY29kZSAobV9zdG10KSA9PSBH SU1QTEVfQVNTSUdOKQogICAgIHN3aXRjaCAoZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAobV9z dG10KSkKICAgICAgIHsKQEAgLTEyMDIsMzIgKzEyMDMsNTUgQEAgZ2ltcGxlX3JhbmdlX29w X2hhbmRsZXI6Om1heWJlX25vbl9zdGFuZGFyZCAoKQogCSAgbV9vcDEgPSBnaW1wbGVfYXNz aWduX3JoczEgKG1fc3RtdCk7CiAJICBtX29wMiA9IGdpbXBsZV9hc3NpZ25fcmhzMiAobV9z dG10KTsKIAkgIHRyZWUgcmV0ID0gZ2ltcGxlX2Fzc2lnbl9saHMgKG1fc3RtdCk7Ci0JICBi b29sIHNpZ25lZDEgPSBUWVBFX1NJR04gKFRSRUVfVFlQRSAobV9vcDEpKSA9PSBTSUdORUQ7 Ci0JICBib29sIHNpZ25lZDIgPSBUWVBFX1NJR04gKFRSRUVfVFlQRSAobV9vcDIpKSA9PSBT SUdORUQ7Ci0JICBib29sIHNpZ25lZF9yZXQgPSBUWVBFX1NJR04gKFRSRUVfVFlQRSAocmV0 KSkgPT0gU0lHTkVEOwotCi0JICAvKiBOb3JtYWxseSB0aGVzZSBvcGVyYW5kcyBzaG91bGQg YWxsIGhhdmUgdGhlIHNhbWUgc2lnbiwgYnV0Ci0JICAgICBzb21lIHBhc3NlcyBhbmQgdmlv bGF0ZSB0aGlzIGJ5IHRha2luZyBtaXNtYXRjaGVkIHNpZ24gYXJncy4gIEF0Ci0JICAgICB0 aGUgbW9tZW50IHRoZSBvbmx5IG9uZSB0aGF0J3MgcG9zc2libGUgaXMgbWlzbWF0Y2ggaW5w dXRzIGFuZAotCSAgICAgdW5zaWduZWQgb3V0cHV0LiAgT25jZSByYW5nZXIgc3VwcG9ydHMg c2lnbnMgZm9yIHRoZSBvcGVyYW5kcyB3ZQotCSAgICAgY2FuIHByb3Blcmx5IGZpeCBpdCwg IGZvciBub3cgb25seSBhY2NlcHQgdGhlIGNhc2Ugd2UgY2FuIGRvCi0JICAgICBjb3JyZWN0 bHkuICAqLwotCSAgaWYgKChzaWduZWQxIF4gc2lnbmVkMikgJiYgc2lnbmVkX3JldCkKLQkg ICAgcmV0dXJuOwotCi0JICBtX3ZhbGlkID0gdHJ1ZTsKLQkgIGlmIChzaWduZWQyICYmICFz aWduZWQxKQotCSAgICBzdGQ6OnN3YXAgKG1fb3AxLCBtX29wMik7Ci0KLQkgIGlmIChzaWdu ZWQxIHx8IHNpZ25lZDIpCi0JICAgIG1faW50ID0gc2lnbmVkX29wOwotCSAgZWxzZQotCSAg ICBtX2ludCA9IHVuc2lnbmVkX29wOworCSAgc2lnbmVkMSA9IFRZUEVfU0lHTiAoVFJFRV9U WVBFIChtX29wMSkpID09IFNJR05FRDsKKwkgIHNpZ25lZDIgPSBUWVBFX1NJR04gKFRSRUVf VFlQRSAobV9vcDIpKSA9PSBTSUdORUQ7CisJICBzaWduZWRfcmV0ID0gVFlQRV9TSUdOIChU UkVFX1RZUEUgKHJldCkpID09IFNJR05FRDsKIAkgIGJyZWFrOwogCX0KIAlkZWZhdWx0Ogot CSAgYnJlYWs7CisJICByZXR1cm47CisgICAgICB9CisgIGVsc2UgaWYgKGdpbXBsZV9jb2Rl IChtX3N0bXQpID09IEdJTVBMRV9DQUxMCisgICAgICAmJiBnaW1wbGVfY2FsbF9pbnRlcm5h bF9wIChtX3N0bXQpCisgICAgICAmJiBnaW1wbGVfZ2V0X2xocyAobV9zdG10KSAhPSBOVUxM X1RSRUUpCisgICAgc3dpdGNoIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAobV9zdG10KSkK KyAgICAgIHsKKyAgICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9QTFVTX0xPOgorICAgICAgY2Fz ZSBJRk5fVkVDX1dJREVOX1BMVVNfSEk6CisJICB7CisJICAgIHNpZ25lZF9vcCA9IHB0cl9v cF93aWRlbl9wbHVzX3NpZ25lZDsKKwkgICAgdW5zaWduZWRfb3AgPSBwdHJfb3Bfd2lkZW5f cGx1c191bnNpZ25lZDsKKwkgICAgbV92YWxpZCA9IGZhbHNlOworCSAgICBtX29wMSA9IGdp bXBsZV9jYWxsX2FyZyAobV9zdG10LCAwKTsKKwkgICAgbV9vcDIgPSBnaW1wbGVfY2FsbF9h cmcgKG1fc3RtdCwgMSk7CisJICAgIHRyZWUgcmV0ID0gZ2ltcGxlX2dldF9saHMgKG1fc3Rt dCk7CisJICAgIHNpZ25lZDEgPSBUWVBFX1NJR04gKFRSRUVfVFlQRSAobV9vcDEpKSA9PSBT SUdORUQ7CisJICAgIHNpZ25lZDIgPSBUWVBFX1NJR04gKFRSRUVfVFlQRSAobV9vcDIpKSA9 PSBTSUdORUQ7CisJICAgIHNpZ25lZF9yZXQgPSBUWVBFX1NJR04gKFRSRUVfVFlQRSAocmV0 KSkgPT0gU0lHTkVEOworCSAgICBicmVhazsKKwkgIH0KKyAgICAgIGRlZmF1bHQ6CisJcmV0 dXJuOwogICAgICAgfQorICBlbHNlCisgICAgcmV0dXJuOworCisgIC8qIE5vcm1hbGx5IHRo ZXNlIG9wZXJhbmRzIHNob3VsZCBhbGwgaGF2ZSB0aGUgc2FtZSBzaWduLCBidXQgc29tZSBw YXNzZXMKKyAgICAgYW5kIHZpb2xhdGUgdGhpcyBieSB0YWtpbmcgbWlzbWF0Y2hlZCBzaWdu IGFyZ3MuICBBdCB0aGUgbW9tZW50IHRoZSBvbmx5CisgICAgIG9uZSB0aGF0J3MgcG9zc2li bGUgaXMgbWlzbWF0Y2ggaW5wdXRzIGFuZCB1bnNpZ25lZCBvdXRwdXQuICBPbmNlIHJhbmdl cgorICAgICBzdXBwb3J0cyBzaWducyBmb3IgdGhlIG9wZXJhbmRzIHdlIGNhbiBwcm9wZXJs eSBmaXggaXQsICBmb3Igbm93IG9ubHkKKyAgICAgYWNjZXB0IHRoZSBjYXNlIHdlIGNhbiBk byBjb3JyZWN0bHkuICAqLworICBpZiAoKHNpZ25lZDEgXiBzaWduZWQyKSAmJiBzaWduZWRf cmV0KQorICAgIHJldHVybjsKKworICBtX3ZhbGlkID0gdHJ1ZTsKKyAgaWYgKHNpZ25lZDIg JiYgIXNpZ25lZDEpCisgICAgc3RkOjpzd2FwIChtX29wMSwgbV9vcDIpOworCisgIGlmIChz aWduZWQxIHx8IHNpZ25lZDIpCisgICAgbV9pbnQgPSBzaWduZWRfb3A7CisgIGVsc2UKKyAg ICBtX2ludCA9IHVuc2lnbmVkX29wOwogfQogCiAvLyBTZXQgdXAgYSBnaW1wbGVfcmFuZ2Vf b3BfaGFuZGxlciBmb3IgYW55IGJ1aWx0IGluIGZ1bmN0aW9uIHdoaWNoIGNhbiBiZQpkaWZm IC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmNjIGIvZ2NjL2ludGVybmFsLWZuLmNjCmluZGV4 IDVjOWRhNzNlYTExZjgwNjBiMThkY2Y1MTM1OTljOTY5NGZhNGYyYWQuLjM0OGJlZTM1YTM1 YWU0ZWQ5YTg2NTJmNTM0OWY0MzBjMjczM2UxY2IgMTAwNjQ0Ci0tLSBhL2djYy9pbnRlcm5h bC1mbi5jYworKysgYi9nY2MvaW50ZXJuYWwtZm4uY2MKQEAgLTkwLDYgKzkwLDcxIEBAIGxv b2t1cF9pbnRlcm5hbF9mbiAoY29uc3QgY2hhciAqbmFtZSkKICAgcmV0dXJuIGVudHJ5ID8g KmVudHJ5IDogSUZOX0xBU1Q7CiB9CiAKKy8qICBHaXZlbiBhbiBpbnRlcm5hbF9mbiBJRk4g dGhhdCBpcyBlaXRoZXIgYSB3aWRlbmluZyBvciBuYXJyb3dpbmcgZnVuY3Rpb24sIHJldHVy biBpdHMKKyAgICBjb3JyZXNwb25kaW5nIExPIGFuZCBISSBpbnRlcm5hbF9mbnMuICAqLwor CitleHRlcm4gdm9pZAorbG9va3VwX2hpbG9faW50ZXJuYWxfZm4gKGludGVybmFsX2ZuIGlm biwgaW50ZXJuYWxfZm4gKmxvLCBpbnRlcm5hbF9mbiAqaGkpCit7CisgIGdjY19hc3NlcnQg KHdpZGVuaW5nX2ZuX3AgKGlmbikgfHwgbmFycm93aW5nX2ZuX3AgKGlmbikpOworCisgIHN3 aXRjaCAoaWZuKQorICAgIHsKKyAgICBkZWZhdWx0OgorICAgICAgZ2NjX3VucmVhY2hhYmxl ICgpOworI3VuZGVmIERFRl9JTlRFUk5BTF9GTgorI3VuZGVmIERFRl9JTlRFUk5BTF9XSURF TklOR19PUFRBQl9GTgorI3VuZGVmIERFRl9JTlRFUk5BTF9OQVJST1dJTkdfT1BUQUJfRk4K KyNkZWZpbmUgREVGX0lOVEVSTkFMX0ZOKE5BTUUsIEZMQUdTLCBUWVBFKQorI2RlZmluZSBE RUZfSU5URVJOQUxfV0lERU5JTkdfT1BUQUJfRk4oTkFNRSwgRiwgUywgU08sIFVPLCBUKQlc CisgICAgY2FzZSBJRk5fIyNOQU1FOgkJCQkJCVwKKyAgICAgICpsbyA9IGludGVybmFsX2Zu IChJRk5fIyNOQU1FIyNfTE8pOwkJCVwKKyAgICAgICpoaSA9IGludGVybmFsX2ZuIChJRk5f IyNOQU1FIyNfSEkpOwkJCVwKKyAgICAgIGJyZWFrOworI2RlZmluZSBERUZfSU5URVJOQUxf TkFSUk9XSU5HX09QVEFCX0ZOKE5BTUUsIEYsIE8sIFQpCVwKKyAgICBjYXNlIElGTl8jI05B TUU6CQkJCQlcCisgICAgICAqbG8gPSBpbnRlcm5hbF9mbiAoSUZOXyMjTkFNRSMjX0xPKTsJ CVwKKyAgICAgICpoaSA9IGludGVybmFsX2ZuIChJRk5fIyNOQU1FIyNfSEkpOwkJXAorICAg ICAgYnJlYWs7CisjaW5jbHVkZSAiaW50ZXJuYWwtZm4uZGVmIgorI3VuZGVmIERFRl9JTlRF Uk5BTF9GTgorI3VuZGVmIERFRl9JTlRFUk5BTF9XSURFTklOR19PUFRBQl9GTgorI3VuZGVm IERFRl9JTlRFUk5BTF9OQVJST1dJTkdfT1BUQUJfRk4KKyAgICB9Cit9CisKK2V4dGVybiB2 b2lkCitsb29rdXBfZXZlbm9kZF9pbnRlcm5hbF9mbiAoaW50ZXJuYWxfZm4gaWZuLCBpbnRl cm5hbF9mbiAqZXZlbiwKKwkJCSAgICBpbnRlcm5hbF9mbiAqb2RkKQoreworICBnY2NfYXNz ZXJ0ICh3aWRlbmluZ19mbl9wIChpZm4pIHx8IG5hcnJvd2luZ19mbl9wIChpZm4pKTsKKwor ICBzd2l0Y2ggKGlmbikKKyAgICB7CisgICAgZGVmYXVsdDoKKyAgICAgIGdjY191bnJlYWNo YWJsZSAoKTsKKyN1bmRlZiBERUZfSU5URVJOQUxfRk4KKyN1bmRlZiBERUZfSU5URVJOQUxf V0lERU5JTkdfT1BUQUJfRk4KKyN1bmRlZiBERUZfSU5URVJOQUxfTkFSUk9XSU5HX09QVEFC X0ZOCisjZGVmaW5lIERFRl9JTlRFUk5BTF9GTihOQU1FLCBGTEFHUywgVFlQRSkKKyNkZWZp bmUgREVGX0lOVEVSTkFMX1dJREVOSU5HX09QVEFCX0ZOKE5BTUUsIEYsIFMsIFNPLCBVTywg VCkJXAorICAgIGNhc2UgSUZOXyMjTkFNRToJCQkJCQlcCisgICAgICAqZXZlbiA9IGludGVy bmFsX2ZuIChJRk5fIyNOQU1FIyNfRVZFTik7CQkJXAorICAgICAgKm9kZCA9IGludGVybmFs X2ZuIChJRk5fIyNOQU1FIyNfT0REKTsJCQlcCisgICAgICBicmVhazsKKyNkZWZpbmUgREVG X0lOVEVSTkFMX05BUlJPV0lOR19PUFRBQl9GTihOQU1FLCBGLCBPLCBUKQlcCisgICAgY2Fz ZSBJRk5fIyNOQU1FOgkJCQkJXAorICAgICAgKmV2ZW4gPSBpbnRlcm5hbF9mbiAoSUZOXyMj TkFNRSMjX0VWRU4pOwkJXAorICAgICAgKm9kZCA9IGludGVybmFsX2ZuIChJRk5fIyNOQU1F IyNfT0REKTsJCVwKKyAgICAgIGJyZWFrOworI2luY2x1ZGUgImludGVybmFsLWZuLmRlZiIK KyN1bmRlZiBERUZfSU5URVJOQUxfRk4KKyN1bmRlZiBERUZfSU5URVJOQUxfV0lERU5JTkdf T1BUQUJfRk4KKyN1bmRlZiBERUZfSU5URVJOQUxfTkFSUk9XSU5HX09QVEFCX0ZOCisgICAg fQorfQorCisKIC8qIEZuc3BlYyBvZiBlYWNoIGludGVybmFsIGZ1bmN0aW9uLCBpbmRleGVk IGJ5IGZ1bmN0aW9uIG51bWJlci4gICovCiBjb25zdF90cmVlIGludGVybmFsX2ZuX2Zuc3Bl Y19hcnJheVtJRk5fTEFTVCArIDFdOwogCkBAIC0zODUyLDcgKzM5MTcsNyBAQCBtdWx0aV92 ZWN0b3Jfb3B0YWJfc3VwcG9ydGVkX3AgKGNvbnZlcnRfb3B0YWIgb3B0YWIsIHRyZWVfcGFp ciB0eXBlcywKIAogLyogUmV0dXJuIHRoZSBvcHRhYiB1c2VkIGJ5IGludGVybmFsIGZ1bmN0 aW9uIEZOLiAgKi8KIAotc3RhdGljIG9wdGFiCitvcHRhYgogZGlyZWN0X2ludGVybmFsX2Zu X29wdGFiIChpbnRlcm5hbF9mbiBmbiwgdHJlZV9wYWlyIHR5cGVzKQogewogICBzd2l0Y2gg KGZuKQpAQCAtMzk3MSw2ICs0MDM2LDkgQEAgY29tbXV0YXRpdmVfYmluYXJ5X2ZuX3AgKGlu dGVybmFsX2ZuIGZuKQogICAgIGNhc2UgSUZOX1VCU0FOX0NIRUNLX01VTDoKICAgICBjYXNl IElGTl9BRERfT1ZFUkZMT1c6CiAgICAgY2FzZSBJRk5fTVVMX09WRVJGTE9XOgorICAgIGNh c2UgSUZOX1ZFQ19XSURFTl9QTFVTOgorICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9QTFVTX0xP OgorICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9QTFVTX0hJOgogICAgICAgcmV0dXJuIHRydWU7 CiAKICAgICBkZWZhdWx0OgpAQCAtNDA0NCw2ICs0MTEyLDY4IEBAIGZpcnN0X2NvbW11dGF0 aXZlX2FyZ3VtZW50IChpbnRlcm5hbF9mbiBmbikKICAgICB9CiB9CiAKKy8qIFJldHVybiB0 cnVlIGlmIHRoaXMgQ09ERSBkZXNjcmliZXMgYW4gaW50ZXJuYWxfZm4gdGhhdCByZXR1cm5z IGEgdmVjdG9yIHdpdGgKKyAgIGVsZW1lbnRzIHR3aWNlIGFzIHdpZGUgYXMgdGhlIGVsZW1l bnQgc2l6ZSBvZiB0aGUgaW5wdXQgdmVjdG9ycy4gICovCisKK2Jvb2wKK3dpZGVuaW5nX2Zu X3AgKGNvZGVfaGVscGVyIGNvZGUpCit7CisgIGlmICghY29kZS5pc19mbl9jb2RlICgpKQor ICAgIHJldHVybiBmYWxzZTsKKworICBpZiAoIWludGVybmFsX2ZuX3AgKChjb21iaW5lZF9m bikgY29kZSkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGludGVybmFsX2ZuIGZuID0gYXNf aW50ZXJuYWxfZm4gKChjb21iaW5lZF9mbikgY29kZSk7CisgIHN3aXRjaCAoZm4pCisgICAg eworICAgICN1bmRlZiBERUZfSU5URVJOQUxfV0lERU5JTkdfT1BUQUJfRk4KKyAgICAjZGVm aW5lIERFRl9JTlRFUk5BTF9XSURFTklOR19PUFRBQl9GTihOQU1FLCBGLCBTLCBTTywgVU8s IFQpIFwKKyAgICBjYXNlIElGTl8jI05BTUU6CQkJCQkJICBcCisgICAgY2FzZSBJRk5fIyNO QU1FIyNfSEk6CQkJCQkgIFwKKyAgICBjYXNlIElGTl8jI05BTUUjI19MTzoJCQkJCSAgXAor ICAgIGNhc2UgSUZOXyMjTkFNRSMjX0VWRU46CQkJCQkgIFwKKyAgICBjYXNlIElGTl8jI05B TUUjI19PREQ6CQkJCQkgIFwKKyAgICAgIHJldHVybiB0cnVlOworICAgICNpbmNsdWRlICJp bnRlcm5hbC1mbi5kZWYiCisgICAgI3VuZGVmIERFRl9JTlRFUk5BTF9XSURFTklOR19PUFRB Ql9GTgorCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisK Ky8qIFJldHVybiB0cnVlIGlmIHRoaXMgQ09ERSBkZXNjcmliZXMgYW4gaW50ZXJuYWxfZm4g dGhhdCByZXR1cm5zIGEgdmVjdG9yIHdpdGgKKyAgIGVsZW1lbnRzIHR3aWNlIGFzIG5hcnJv dyBhcyB0aGUgZWxlbWVudCBzaXplIG9mIHRoZSBpbnB1dCB2ZWN0b3JzLiAgKi8KKworYm9v bAorbmFycm93aW5nX2ZuX3AgKGNvZGVfaGVscGVyIGNvZGUpCit7CisgIGlmICghY29kZS5p c19mbl9jb2RlICgpKQorICAgIHJldHVybiBmYWxzZTsKKworICBpZiAoIWludGVybmFsX2Zu X3AgKChjb21iaW5lZF9mbikgY29kZSkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGludGVy bmFsX2ZuIGZuID0gYXNfaW50ZXJuYWxfZm4gKChjb21iaW5lZF9mbikgY29kZSk7CisgIHN3 aXRjaCAoZm4pCisgICAgeworICAgICN1bmRlZiBERUZfSU5URVJOQUxfTkFSUk9XSU5HX09Q VEFCX0ZOCisgICAgI2RlZmluZSBERUZfSU5URVJOQUxfTkFSUk9XSU5HX09QVEFCX0ZOKE5B TUUsIEYsIE8sIFQpICBcCisgICAgY2FzZSBJRk5fIyNOQU1FIyM6CQkJCQkgICAgXAorICAg IGNhc2UgSUZOXyMjTkFNRSMjX0hJOgkJCQkgICAgXAorICAgIGNhc2UgSUZOXyMjTkFNRSMj X0xPOgkJCQkgICAgXAorICAgIGNhc2UgSUZOXyMjTkFNRSMjX0hJOgkJCQkgICAgXAorICAg IGNhc2UgSUZOXyMjTkFNRSMjX0xPOgkJCQkgICAgXAorICAgICAgcmV0dXJuIHRydWU7Cisg ICAgI2luY2x1ZGUgImludGVybmFsLWZuLmRlZiIKKyAgICAjdW5kZWYgREVGX0lOVEVSTkFM X05BUlJPV0lOR19PUFRBQl9GTgorCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxz ZTsKKyAgICB9Cit9CisKIC8qIFJldHVybiB0cnVlIGlmIElGTl9TRVRfRURPTSBpcyBzdXBw b3J0ZWQuICAqLwogCiBib29sCkBAIC00MDcyLDYgKzQyMDIsOCBAQCBzZXRfZWRvbV9zdXBw b3J0ZWRfcCAodm9pZCkKICAgICBleHBhbmRfIyNUWVBFIyNfb3B0YWJfZm4gKGZuLCBzdG10 LCB3aGljaF9vcHRhYik7CQkJXAogICB9CiAjaW5jbHVkZSAiaW50ZXJuYWwtZm4uZGVmIgor I3VuZGVmIERFRl9JTlRFUk5BTF9PUFRBQl9GTgorI3VuZGVmIERFRl9JTlRFUk5BTF9TSUdO RURfT1BUQUJfRk4KIAogLyogUm91dGluZXMgdG8gZXhwYW5kIGVhY2ggaW50ZXJuYWwgZnVu Y3Rpb24sIGluZGV4ZWQgYnkgZnVuY3Rpb24gbnVtYmVyLgogICAgRWFjaCByb3V0aW5lIGhh cyB0aGUgcHJvdG90eXBlOgpAQCAtNDA4MCw2ICs0MjEyLDcgQEAgc2V0X2Vkb21fc3VwcG9y dGVkX3AgKHZvaWQpCiAKICAgIHdoZXJlIFNUTVQgaXMgdGhlIHN0YXRlbWVudCB0aGF0IHBl cmZvcm1zIHRoZSBjYWxsLiAqLwogc3RhdGljIHZvaWQgKCpjb25zdCBpbnRlcm5hbF9mbl9l eHBhbmRlcnNbXSkgKGludGVybmFsX2ZuLCBnY2FsbCAqKSA9IHsKKwogI2RlZmluZSBERUZf SU5URVJOQUxfRk4oQ09ERSwgRkxBR1MsIEZOU1BFQykgZXhwYW5kXyMjQ09ERSwKICNpbmNs dWRlICJpbnRlcm5hbC1mbi5kZWYiCiAgIDAKZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1m bi5kZWYgYi9nY2MvaW50ZXJuYWwtZm4uZGVmCmluZGV4IDdmZTc0MmMyYWU3MTNlNzE1MmFi MDVjZmRmYmE4NmU0ZTBhYTM0NTYuLmU5ZWRhYTIwMWFkNGFkMTcxYTQ5MTE5ZWZhOWQ2YmZm NDlhZGQ5ZjQgMTAwNjQ0Ci0tLSBhL2djYy9pbnRlcm5hbC1mbi5kZWYKKysrIGIvZ2NjL2lu dGVybmFsLWZuLmRlZgpAQCAtODUsNiArODUsMzQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0 aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICAgIHNheXMgdGhhdCB0aGUgZnVuY3Rp b24gZXh0ZW5kcyB0aGUgQy1sZXZlbCBCVUlMVF9JTl88TkFNRT57LEwsTEwsSU1BWH0KICAg IGdyb3VwIG9mIGZ1bmN0aW9ucyB0byBhbnkgaW50ZWdyYWwgbW9kZSAoaW5jbHVkaW5nIHZl Y3RvciBtb2RlcykuCiAKKyAgIERFRl9JTlRFUk5BTF9XSURFTklOR19PUFRBQl9GTiBpcyBh IHdyYXBwZXIgdGhhdCBkZWZpbmVzIGZpdmUgaW50ZXJuYWwKKyAgIGZ1bmN0aW9ucyB3aXRo IERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk46CisgICAtIG9uZSB0aGF0IGRlc2NyaWJl cyBhIHdpZGVuaW5nIG9wZXJhdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50 cworICAgaW4gdGhlIG91dHB1dCBhbmQgaW5wdXQgdmVjdG9ycywKKyAgIC0gdHdvIHRoYXQg ZGVzY3JpYmUgYSBwYWlyIG9mIGhpZ2gtbG93IHdpZGVuaW5nIG9wZXJhdGlvbnMgd2hlcmUg dGhlIG91dHB1dAorICAgdmVjdG9ycyBlYWNoIGhhdmUgaGFsZiB0aGUgbnVtYmVyIG9mIGVs ZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3JzLAorICAgY29ycmVzcG9uZGluZyB0byB0aGUg cmVzdWx0IG9mIHRoZSB3aWRlbmluZyBvcGVyYXRpb24gb24gdGhlIHRvcCBoYWxmIGFuZAor ICAgYm90dG9tIGhhbGYsIHRoZXNlIGhhdmUgdGhlIHN1ZmZpeGVzIF9ISSBhbmQgX0xPLAor ICAgLSBhbmQgdHdvIHRoYXQgZGVzY3JpYmUgYSBwYWlyIG9mIGV2ZW4tb2RkIHdpZGVuaW5n IG9wZXJhdGlvbnMgd2hlcmUgdGhlCisgICBvdXRwdXQgdmVjdG9ycyBlYWNoIGhhdmUgaGFs ZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3JzLAorICAgY29y cmVzcG9uZGluZyB0byB0aGUgcmVzdWx0IG9mIHRoZSB3aWRlbmluZyBvcGVyYXRpb24gb24g dGhlIGV2ZW4gYW5kIG9kZAorICAgZWxlbWVudHMsIHRoZXNlIGhhdmUgdGhlIHN1ZmZpeGVz IF9FVkVOIGFuZCBfT0RELgorICAgVGhlc2UgZml2ZSBpbnRlcm5hbCBmdW5jdGlvbnMgd2ls bCByZXF1aXJlIHR3byBvcHRhYnMgZWFjaCwgYSBTSUdORURfT1BUQUIKKyAgIGFuZCBhbiBV TlNJR05FRF9PVFBBQi4KKworICAgREVGX0lOVEVSTkFMX05BUlJPV0lOR19PUFRBQl9GTiBp cyBhIHdyYXBwZXIgdGhhdCBkZWZpbmVzIGZpdmUgaW50ZXJuYWwKKyAgIGZ1bmN0aW9ucyB3 aXRoIERFRl9JTlRFUk5BTF9PUFRBQl9GTjoKKyAgIC0gb25lIHRoYXQgZGVzY3JpYmVzIGEg bmFycm93aW5nIG9wZXJhdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cwor ICAgaW4gdGhlIG91dHB1dCBhbmQgaW5wdXQgdmVjdG9ycywKKyAgIC0gdHdvIHRoYXQgZGVz Y3JpYmUgYSBwYWlyIG9mIGhpZ2gtbG93IG5hcnJvd2luZyBvcGVyYXRpb25zIHdoZXJlIHRo ZSBvdXRwdXQKKyAgIHZlY3RvciBoYXMgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzIGlu IHRoZSB0b3Agb3IgYm90dG9tIGhhbHZlcyBhcyB0aGUKKyAgIGZ1bGwgaW5wdXQgdmVjdG9y cywgdGhlc2UgaGF2ZSB0aGUgc3VmZml4ZXMgX0hJIGFuZCBfTE8uCisgICAtIGFuZCB0d28g dGhhdCBkZXNjcmliZSBhIHBhaXIgb2YgZXZlbi1vZGQgbmFycm93aW5nIG9wZXJhdGlvbnMg d2hlcmUgdGhlCisgICBvdXRwdXQgdmVjdG9yIGhhcyB0aGUgc2FtZSBudW1iZXIgb2YgZWxl bWVudHMsIGluIHRoZSBldmVuIG9yIG9kZCBwb3NpdGlvbnMsCisgICBhcyB0aGUgZnVsbCBp bnB1dCB2ZWN0b3JzLCB0aGVzZSBoYXZlIHRoZSBzdWZmaXhlcyBfRVZFTiBhbmQgX09ERC4K KyAgIFRoZXNlIGZpdmUgaW50ZXJuYWwgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBhbiBvcHRh YiBlYWNoLgorCisKICAgIEVhY2ggZW50cnkgbXVzdCBoYXZlIGEgY29ycmVzcG9uZGluZyBl eHBhbmRlciBvZiB0aGUgZm9ybToKIAogICAgICB2b2lkIGV4cGFuZF9OQU1FIChnaW1wbGVf Y2FsbCBzdG10KQpAQCAtMTIzLDYgKzE1MSwyNCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRo ZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogICBERUZfSU5URVJOQUxfT1BUQUJfRk4g KE5BTUUsIEZMQUdTLCBPUFRBQiwgVFlQRSkKICNlbmRpZgogCisjaWZuZGVmIERFRl9JTlRF Uk5BTF9XSURFTklOR19PUFRBQl9GTgorI2RlZmluZSBERUZfSU5URVJOQUxfV0lERU5JTkdf T1BUQUJfRk4oTkFNRSwgRkxBR1MsIFNFTEVDVE9SLCBTT1BUQUIsIFVPUFRBQiwgVFlQRSkJ CSAgICBcCisgIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gKE5BTUUsIEZMQUdTLCBT RUxFQ1RPUiwgU09QVEFCLCBVT1BUQUIsIFRZUEUpCQkJICAgIFwKKyAgREVGX0lOVEVSTkFM X1NJR05FRF9PUFRBQl9GTiAoTkFNRSAjIyBfTE8sIEZMQUdTLCBTRUxFQ1RPUiwgU09QVEFC IyNfbG8sIFVPUFRBQiMjX2xvLCBUWVBFKQkgICAgXAorICBERUZfSU5URVJOQUxfU0lHTkVE X09QVEFCX0ZOIChOQU1FICMjIF9ISSwgRkxBR1MsIFNFTEVDVE9SLCBTT1BUQUIjI19oaSwg VU9QVEFCIyNfaGksIFRZUEUpCSAgICBcCisgIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJf Rk4gKE5BTUUgIyMgX0VWRU4sIEZMQUdTLCBTRUxFQ1RPUiwgU09QVEFCIyNfZXZlbiwgVU9Q VEFCIyNfZXZlbiwgVFlQRSkgXAorICBERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOIChO QU1FICMjIF9PREQsIEZMQUdTLCBTRUxFQ1RPUiwgU09QVEFCIyNfb2RkLCBVT1BUQUIjI19v ZGQsIFRZUEUpCisjZW5kaWYKKworI2lmbmRlZiBERUZfSU5URVJOQUxfTkFSUk9XSU5HX09Q VEFCX0ZOCisjZGVmaW5lIERFRl9JTlRFUk5BTF9OQVJST1dJTkdfT1BUQUJfRk4oTkFNRSwg RkxBR1MsIE9QVEFCLCBUWVBFKSAgIFwKKyAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChOQU1F LCBGTEFHUywgT1BUQUIsIFRZUEUpCQkgICAgXAorICBERUZfSU5URVJOQUxfT1BUQUJfRk4g KE5BTUUgIyMgX0xPLCBGTEFHUywgT1BUQUIjI19sbywgVFlQRSkJICAgIFwKKyAgREVGX0lO VEVSTkFMX09QVEFCX0ZOIChOQU1FICMjIF9ISSwgRkxBR1MsIE9QVEFCIyNfaGksIFRZUEUp CSAgICBcCisgIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoTkFNRSAjIyBfRVZFTiwgRkxBR1Ms IE9QVEFCIyNfZXZlbiwgVFlQRSkgIFwKKyAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChOQU1F ICMjIF9PREQsIEZMQUdTLCBPUFRBQiMjX29kZCwgVFlQRSkKKyNlbmRpZgorCiBERUZfSU5U RVJOQUxfT1BUQUJfRk4gKE1BU0tfTE9BRCwgRUNGX1BVUkUsIG1hc2tsb2FkLCBtYXNrX2xv YWQpCiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKExPQURfTEFORVMsIEVDRl9DT05TVCwgdmVj X2xvYWRfbGFuZXMsIGxvYWRfbGFuZXMpCiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKE1BU0tf TE9BRF9MQU5FUywgRUNGX1BVUkUsCkBAIC0zMTUsNiArMzYxLDE2IEBAIERFRl9JTlRFUk5B TF9PUFRBQl9GTiAoQ09NUExFWF9BRERfUk9UMjcwLCBFQ0ZfQ09OU1QsIGNhZGQyNzAsIGJp bmFyeSkKIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoQ09NUExFWF9NVUwsIEVDRl9DT05TVCwg Y211bCwgYmluYXJ5KQogREVGX0lOVEVSTkFMX09QVEFCX0ZOIChDT01QTEVYX01VTF9DT05K LCBFQ0ZfQ09OU1QsIGNtdWxfY29uaiwgYmluYXJ5KQogREVGX0lOVEVSTkFMX09QVEFCX0ZO IChWRUNfQUREU1VCLCBFQ0ZfQ09OU1QsIHZlY19hZGRzdWIsIGJpbmFyeSkKK0RFRl9JTlRF Uk5BTF9XSURFTklOR19PUFRBQl9GTiAoVkVDX1dJREVOX1BMVVMsCisJCQkJRUNGX0NPTlNU IHwgRUNGX05PVEhST1csCisJCQkJZmlyc3QsCisJCQkJdmVjX3dpZGVuX3NhZGQsIHZlY193 aWRlbl91YWRkLAorCQkJCWJpbmFyeSkKK0RFRl9JTlRFUk5BTF9XSURFTklOR19PUFRBQl9G TiAoVkVDX1dJREVOX01JTlVTLAorCQkJCUVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLAorCQkJ CWZpcnN0LAorCQkJCXZlY193aWRlbl9zc3ViLCB2ZWNfd2lkZW5fdXN1YiwKKwkJCQliaW5h cnkpCiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKFZFQ19GTUFERFNVQiwgRUNGX0NPTlNULCB2 ZWNfZm1hZGRzdWIsIHRlcm5hcnkpCiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKFZFQ19GTVNV QkFERCwgRUNGX0NPTlNULCB2ZWNfZm1zdWJhZGQsIHRlcm5hcnkpCiAKZGlmZiAtLWdpdCBh L2djYy9pbnRlcm5hbC1mbi5oIGIvZ2NjL2ludGVybmFsLWZuLmgKaW5kZXggMDg5MjJlZDQy NTQ4OThmNWZmZmNhM2YzMzk3M2U5NmVkOWNlNzcyZi4uMzkwNGJhM2NhMzY5NDlkODQ0NTMy YTZhOTMwM2Y1NTA1MzMzMTFhNCAxMDA2NDQKLS0tIGEvZ2NjL2ludGVybmFsLWZuLmgKKysr IGIvZ2NjL2ludGVybmFsLWZuLmgKQEAgLTIwLDYgKzIwLDEwIEBAIGFsb25nIHdpdGggR0ND OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaWZuZGVmIEdDQ19JTlRF Uk5BTF9GTl9ICiAjZGVmaW5lIEdDQ19JTlRFUk5BTF9GTl9ICiAKKyNpbmNsdWRlICJpbnNu LWNvZGVzLmgiCisjaW5jbHVkZSAiaW5zbi1vcGluaXQuaCIKKworCiAvKiBJTlRFR0VSX0NT VCB2YWx1ZXMgZm9yIElGTl9VTklRVUUgZnVuY3Rpb24gYXJnLTAuCiAKICAgIFVOU1BFQzog VW5kaWZmZXJlbnRpYXRlZCBVTklRVUUuCkBAIC0xMTIsNiArMTE2LDEwIEBAIGludGVybmFs X2ZuX25hbWUgKGVudW0gaW50ZXJuYWxfZm4gZm4pCiB9CiAKIGV4dGVybiBpbnRlcm5hbF9m biBsb29rdXBfaW50ZXJuYWxfZm4gKGNvbnN0IGNoYXIgKik7CitleHRlcm4gdm9pZCBsb29r dXBfaGlsb19pbnRlcm5hbF9mbiAoaW50ZXJuYWxfZm4sIGludGVybmFsX2ZuICosIGludGVy bmFsX2ZuICopOworZXh0ZXJuIHZvaWQgbG9va3VwX2V2ZW5vZGRfaW50ZXJuYWxfZm4gKGlu dGVybmFsX2ZuLCBpbnRlcm5hbF9mbiAqLAorCQkJCQlpbnRlcm5hbF9mbiAqKTsKK2V4dGVy biBvcHRhYiBkaXJlY3RfaW50ZXJuYWxfZm5fb3B0YWIgKGludGVybmFsX2ZuLCB0cmVlX3Bh aXIpOwogCiAvKiBSZXR1cm4gdGhlIEVDRl8qIGZsYWdzIGZvciBmdW5jdGlvbiBGTi4gICov CiAKQEAgLTIxMCw2ICsyMTgsOCBAQCBleHRlcm4gYm9vbCBjb21tdXRhdGl2ZV9iaW5hcnlf Zm5fcCAoaW50ZXJuYWxfZm4pOwogZXh0ZXJuIGJvb2wgY29tbXV0YXRpdmVfdGVybmFyeV9m bl9wIChpbnRlcm5hbF9mbik7CiBleHRlcm4gaW50IGZpcnN0X2NvbW11dGF0aXZlX2FyZ3Vt ZW50IChpbnRlcm5hbF9mbik7CiBleHRlcm4gYm9vbCBhc3NvY2lhdGl2ZV9iaW5hcnlfZm5f cCAoaW50ZXJuYWxfZm4pOworZXh0ZXJuIGJvb2wgd2lkZW5pbmdfZm5fcCAoY29kZV9oZWxw ZXIpOworZXh0ZXJuIGJvb2wgbmFycm93aW5nX2ZuX3AgKGNvZGVfaGVscGVyKTsKIAogZXh0 ZXJuIGJvb2wgc2V0X2Vkb21fc3VwcG9ydGVkX3AgKHZvaWQpOwogCmRpZmYgLS1naXQgYS9n Y2Mvb3B0YWJzLmNjIGIvZ2NjL29wdGFicy5jYwppbmRleCBjOGUzOWM4MmQ1N2E3ZDcyNmU3 ZGEzM2QyNDdiODBmMzJlYzkyMzZjLi41YTA4ZDkxZTU1MGIyZDkyZTk1NzIyMTFmODExZmRi YTk5YTMzYTM4IDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLmNjCisrKyBiL2djYy9vcHRhYnMu Y2MKQEAgLTEzMTQsNyArMTMxNCwxNSBAQCBjb21tdXRhdGl2ZV9vcHRhYl9wIChvcHRhYiBi aW5vcHRhYikKIAkgIHx8IGJpbm9wdGFiID09IHNtdWxfd2lkZW5fb3B0YWIKIAkgIHx8IGJp bm9wdGFiID09IHVtdWxfd2lkZW5fb3B0YWIKIAkgIHx8IGJpbm9wdGFiID09IHNtdWxfaGln aHBhcnRfb3B0YWIKLQkgIHx8IGJpbm9wdGFiID09IHVtdWxfaGlnaHBhcnRfb3B0YWIpOwor CSAgfHwgYmlub3B0YWIgPT0gdW11bF9oaWdocGFydF9vcHRhYgorCSAgfHwgYmlub3B0YWIg PT0gdmVjX3dpZGVuX3NhZGRsX2hpX29wdGFiCisJICB8fCBiaW5vcHRhYiA9PSB2ZWNfd2lk ZW5fc2FkZGxfbG9fb3B0YWIKKwkgIHx8IGJpbm9wdGFiID09IHZlY193aWRlbl91YWRkbF9o aV9vcHRhYgorCSAgfHwgYmlub3B0YWIgPT0gdmVjX3dpZGVuX3VhZGRsX2xvX29wdGFiCisJ ICB8fCBiaW5vcHRhYiA9PSB2ZWNfd2lkZW5fc2FkZF9oaV9vcHRhYgorCSAgfHwgYmlub3B0 YWIgPT0gdmVjX3dpZGVuX3NhZGRfbG9fb3B0YWIKKwkgIHx8IGJpbm9wdGFiID09IHZlY193 aWRlbl91YWRkX2hpX29wdGFiCisJICB8fCBiaW5vcHRhYiA9PSB2ZWNfd2lkZW5fdWFkZF9s b19vcHRhYik7CiB9CiAKIC8qIFggaXMgdG8gYmUgdXNlZCBpbiBtb2RlIE1PREUgYXMgb3Bl cmFuZCBPUE4gdG8gQklOT1BUQUIuICBJZiB3ZSdyZQpkaWZmIC0tZ2l0IGEvZ2NjL29wdGFi cy5kZWYgYi9nY2Mvb3B0YWJzLmRlZgppbmRleCA2OTVmNTkxMWIzMDBjOWNhNTczN2RlOWJl ODA5ZmEwMWFhYmU1ZTAxLi5kNDFlZDZlMWFmYWRkZDAxOWM3NDcwZjk2NWMwYWQyMWM4YjJi OWQ3IDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLmRlZgorKysgYi9nY2Mvb3B0YWJzLmRlZgpA QCAtNDEwLDYgKzQxMCwxNiBAQCBPUFRBQl9EICh2ZWNfd2lkZW5fc3N1YmxfaGlfb3B0YWIs ICJ2ZWNfd2lkZW5fc3N1YmxfaGlfJGEiKQogT1BUQUJfRCAodmVjX3dpZGVuX3NzdWJsX2xv X29wdGFiLCAidmVjX3dpZGVuX3NzdWJsX2xvXyRhIikKIE9QVEFCX0QgKHZlY193aWRlbl9z YWRkbF9oaV9vcHRhYiwgInZlY193aWRlbl9zYWRkbF9oaV8kYSIpCiBPUFRBQl9EICh2ZWNf d2lkZW5fc2FkZGxfbG9fb3B0YWIsICJ2ZWNfd2lkZW5fc2FkZGxfbG9fJGEiKQorT1BUQUJf RCAodmVjX3dpZGVuX3NzdWJfb3B0YWIsICJ2ZWNfd2lkZW5fc3N1Yl8kYSIpCitPUFRBQl9E ICh2ZWNfd2lkZW5fc3N1Yl9oaV9vcHRhYiwgInZlY193aWRlbl9zc3ViX2hpXyRhIikKK09Q VEFCX0QgKHZlY193aWRlbl9zc3ViX2xvX29wdGFiLCAidmVjX3dpZGVuX3NzdWJfbG9fJGEi KQorT1BUQUJfRCAodmVjX3dpZGVuX3NzdWJfb2RkX29wdGFiLCAidmVjX3dpZGVuX3NzdWJf b2RkXyRhIikKK09QVEFCX0QgKHZlY193aWRlbl9zc3ViX2V2ZW5fb3B0YWIsICJ2ZWNfd2lk ZW5fc3N1Yl9ldmVuXyRhIikKK09QVEFCX0QgKHZlY193aWRlbl9zYWRkX29wdGFiLCAidmVj X3dpZGVuX3NhZGRfJGEiKQorT1BUQUJfRCAodmVjX3dpZGVuX3NhZGRfaGlfb3B0YWIsICJ2 ZWNfd2lkZW5fc2FkZF9oaV8kYSIpCitPUFRBQl9EICh2ZWNfd2lkZW5fc2FkZF9sb19vcHRh YiwgInZlY193aWRlbl9zYWRkX2xvXyRhIikKK09QVEFCX0QgKHZlY193aWRlbl9zYWRkX29k ZF9vcHRhYiwgInZlY193aWRlbl9zYWRkX29kZF8kYSIpCitPUFRBQl9EICh2ZWNfd2lkZW5f c2FkZF9ldmVuX29wdGFiLCAidmVjX3dpZGVuX3NhZGRfZXZlbl8kYSIpCiBPUFRBQl9EICh2 ZWNfd2lkZW5fc3NoaWZ0bF9oaV9vcHRhYiwgInZlY193aWRlbl9zc2hpZnRsX2hpXyRhIikK IE9QVEFCX0QgKHZlY193aWRlbl9zc2hpZnRsX2xvX29wdGFiLCAidmVjX3dpZGVuX3NzaGlm dGxfbG9fJGEiKQogT1BUQUJfRCAodmVjX3dpZGVuX3VtdWx0X2V2ZW5fb3B0YWIsICJ2ZWNf d2lkZW5fdW11bHRfZXZlbl8kYSIpCkBAIC00MjIsNiArNDMyLDE2IEBAIE9QVEFCX0QgKHZl Y193aWRlbl91c3VibF9oaV9vcHRhYiwgInZlY193aWRlbl91c3VibF9oaV8kYSIpCiBPUFRB Ql9EICh2ZWNfd2lkZW5fdXN1YmxfbG9fb3B0YWIsICJ2ZWNfd2lkZW5fdXN1YmxfbG9fJGEi KQogT1BUQUJfRCAodmVjX3dpZGVuX3VhZGRsX2hpX29wdGFiLCAidmVjX3dpZGVuX3VhZGRs X2hpXyRhIikKIE9QVEFCX0QgKHZlY193aWRlbl91YWRkbF9sb19vcHRhYiwgInZlY193aWRl bl91YWRkbF9sb18kYSIpCitPUFRBQl9EICh2ZWNfd2lkZW5fdXN1Yl9vcHRhYiwgInZlY193 aWRlbl91c3ViXyRhIikKK09QVEFCX0QgKHZlY193aWRlbl91c3ViX2hpX29wdGFiLCAidmVj X3dpZGVuX3VzdWJfaGlfJGEiKQorT1BUQUJfRCAodmVjX3dpZGVuX3VzdWJfbG9fb3B0YWIs ICJ2ZWNfd2lkZW5fdXN1Yl9sb18kYSIpCitPUFRBQl9EICh2ZWNfd2lkZW5fdXN1Yl9vZGRf b3B0YWIsICJ2ZWNfd2lkZW5fdXN1Yl9vZGRfJGEiKQorT1BUQUJfRCAodmVjX3dpZGVuX3Vz dWJfZXZlbl9vcHRhYiwgInZlY193aWRlbl91c3ViX2V2ZW5fJGEiKQorT1BUQUJfRCAodmVj X3dpZGVuX3VhZGRfb3B0YWIsICJ2ZWNfd2lkZW5fdWFkZF8kYSIpCitPUFRBQl9EICh2ZWNf d2lkZW5fdWFkZF9oaV9vcHRhYiwgInZlY193aWRlbl91YWRkX2hpXyRhIikKK09QVEFCX0Qg KHZlY193aWRlbl91YWRkX2xvX29wdGFiLCAidmVjX3dpZGVuX3VhZGRfbG9fJGEiKQorT1BU QUJfRCAodmVjX3dpZGVuX3VhZGRfb2RkX29wdGFiLCAidmVjX3dpZGVuX3VhZGRfb2RkXyRh IikKK09QVEFCX0QgKHZlY193aWRlbl91YWRkX2V2ZW5fb3B0YWIsICJ2ZWNfd2lkZW5fdWFk ZF9ldmVuXyRhIikKIE9QVEFCX0QgKHZlY19hZGRzdWJfb3B0YWIsICJ2ZWNfYWRkc3ViJGEz IikKIE9QVEFCX0QgKHZlY19mbWFkZHN1Yl9vcHRhYiwgInZlY19mbWFkZHN1YiRhNCIpCiBP UFRBQl9EICh2ZWNfZm1zdWJhZGRfb3B0YWIsICJ2ZWNfZm1zdWJhZGQkYTQiKQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdmVjdC13aWRlbi1hZGQu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ZlY3Qtd2lkZW4tYWRkLmMK aW5kZXggMjIwYmQ5MzUyYTRjN2FjZDJlMzcxM2U0NDFkNzQ4OThkM2U5MmIzMC4uNzAzNzY3 M2QzMmJkNzgwZTFjOWI1OGE1MWU1OGUyYmFjM2IzMGI3ZSAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdmVjdC13aWRlbi1hZGQuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92ZWN0LXdpZGVuLWFkZC5jCkBAIC0xLDUg KzEsNSBAQAogLyogeyBkZy1kbyBydW4gfSAqLwotLyogeyBkZy1vcHRpb25zICItTzMgLXNh dmUtdGVtcHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1zYXZlLXRlbXBzIC1mZHVt cC10cmVlLXZlY3QtYWxsIiB9ICovCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8 c3RyaW5nLmg+CiAKQEAgLTg2LDYgKzg2LDggQEAgbWFpbigpCiAgICAgcmV0dXJuIDA7CiB9 CiAKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiYWRkIG5ldyBzdG10LipWRUNf V0lERU5fUExVU19MTyIgInZlY3QiICAgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgImFkZCBuZXcgc3RtdC4qVkVDX1dJREVOX1BMVVNfSEkiICJ2ZWN0IiAgIH0g fSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHVhZGRsXHR9 IDF9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHR1YWRk bDJcdH0gMX0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtc dHNhZGRsXHR9IDF9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3ZlY3Qtd2lkZW4tc3ViLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC92ZWN0LXdpZGVuLXN1Yi5jCmluZGV4IGEyYmVkNjNhZmZiZDA5MTk3N2RmOTVh MTI2ZGExZjViOGMxZDQxZDIuLjgzYmMxZWRiNjEwNWY0NzExNGI2NjVlMjRhMTNlNjE5NGIy MTc5YTIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3Zl Y3Qtd2lkZW4tc3ViLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv dmVjdC13aWRlbi1zdWIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gcnVuIH0gKi8K LS8qIHsgZGctb3B0aW9ucyAiLU8zIC1zYXZlLXRlbXBzIiB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMyAtc2F2ZS10ZW1wcyAtZmR1bXAtdHJlZS12ZWN0LWFsbCIgfSAqLwogI2luY2x1 ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCkBAIC04Niw2ICs4Niw4IEBA IG1haW4oKQogICAgIHJldHVybiAwOwogfQogCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgImFkZCBuZXcgc3RtdC4qVkVDX1dJREVOX01JTlVTX0xPIiAidmVjdCIgICB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiYWRkIG5ldyBzdG10LipWRUNf V0lERU5fTUlOVVNfSEkiICJ2ZWN0IiAgIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHtcdHVzdWJsXHR9IDF9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyB7XHR1c3VibDJcdH0gMX0gfSAqLwogLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHNzdWJsXHR9IDF9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90cmVlLWNmZy5jYyBiL2djYy90cmVlLWNmZy5jYwppbmRleCAwYWVlYmI2N2Zh Yzg2NGRiMjg0OTg1ZjRhNmYwNjUzYWYyODFkNjJiLi4wZTg0N2NkMDRjYTZlMzNmNjdhODZh NzhhMzZkMzVkNDJhYmEyNjI3IDEwMDY0NAotLS0gYS9nY2MvdHJlZS1jZmcuY2MKKysrIGIv Z2NjL3RyZWUtY2ZnLmNjCkBAIC02NSw2ICs2NSw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUg dGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVkZSAiYXNhbi5oIgogI2lu Y2x1ZGUgInByb2ZpbGUuaCIKICNpbmNsdWRlICJzcmVhbC5oIgorI2luY2x1ZGUgImludGVy bmFsLWZuLmgiCiAKIC8qIFRoaXMgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIGJ1aWxk aW5nIHRoZSBDb250cm9sIEZsb3cgR3JhcGggKENGRykKICAgIGZvciBhIGZ1bmN0aW9uIHRy ZWUuICAqLwpAQCAtMzQxMSw2ICszNDEyLDQwIEBAIHZlcmlmeV9naW1wbGVfY2FsbCAoZ2Nh bGwgKnN0bXQpCiAJICBkZWJ1Z19nZW5lcmljX3N0bXQgKGZuKTsKIAkgIHJldHVybiB0cnVl OwogCX0KKyAgICAgIGludGVybmFsX2ZuIGlmbiA9IGdpbXBsZV9jYWxsX2ludGVybmFsX2Zu IChzdG10KTsKKyAgICAgIGlmIChpZm4gPT0gSUZOX0xBU1QpCisJeworCSAgZXJyb3IgKCJn aW1wbGUgY2FsbCBoYXMgYW4gaW52YWxpZCBJRk4iKTsKKwkgIGRlYnVnX2dlbmVyaWNfc3Rt dCAoZm4pOworCSAgcmV0dXJuIHRydWU7CisJfQorICAgICAgZWxzZSBpZiAod2lkZW5pbmdf Zm5fcCAoaWZuKQorCSAgICAgICB8fCBuYXJyb3dpbmdfZm5fcCAoaWZuKSkKKwl7CisJICB0 cmVlIGxocyA9IGdpbXBsZV9nZXRfbGhzIChzdG10KTsKKwkgIGlmICghbGhzKQorCSAgICB7 CisJICAgICAgZXJyb3IgKCJ2ZWN0b3IgSUZOIGNhbGwgd2l0aCBubyBsaHMiKTsKKwkgICAg ICBkZWJ1Z19nZW5lcmljX3N0bXQgKGZuKTsKKwkgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAg fQorCisJICBib29sIG5vbl92ZWN0b3Jfb3BlcmFuZHMgPSBmYWxzZTsKKwkgIGZvciAodW5z aWduZWQgaSA9IDA7IGkgPCBnaW1wbGVfY2FsbF9udW1fYXJncyAoc3RtdCk7ICsraSkKKwkg ICAgaWYgKCFWRUNUT1JfVFlQRV9QIChUUkVFX1RZUEUgKGdpbXBsZV9jYWxsX2FyZyAoc3Rt dCwgaSkpKSkKKwkgICAgICB7CisJCW5vbl92ZWN0b3Jfb3BlcmFuZHMgPSB0cnVlOworCQli cmVhazsKKwkgICAgICB9CisKKwkgIGlmIChub25fdmVjdG9yX29wZXJhbmRzCisJICAgICAg fHwgIVZFQ1RPUl9UWVBFX1AgKFRSRUVfVFlQRSAobGhzKSkpCisJICAgIHsKKwkgICAgICBl cnJvciAoImludmFsaWQgbm9uLXZlY3RvciBvcGVyYW5kcyBpbiB2ZWN0b3IgSUZOIGNhbGwi KTsKKwkgICAgICBkZWJ1Z19nZW5lcmljX3N0bXQgKGZuKTsKKwkgICAgICByZXR1cm4gdHJ1 ZTsKKwkgICAgfQorCX0KICAgICB9CiAgIGVsc2UKICAgICB7CmRpZmYgLS1naXQgYS9nY2Mv dHJlZS1pbmxpbmUuY2MgYi9nY2MvdHJlZS1pbmxpbmUuY2MKaW5kZXggNjNhMTlmOGQxZDg5 YzZiZDVkOGU1NWEyOTljYmZmYWEzMjRiNGI4NC4uZDc0ZDhkYjIxNzNiMWFiMTE3MjUwZmVh ODlkZTUyMTJkNWUzNTRlYyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtaW5saW5lLmNjCisrKyBi L2djYy90cmVlLWlubGluZS5jYwpAQCAtNDQzMyw3ICs0NDMzLDIwIEBAIGVzdGltYXRlX251 bV9pbnNucyAoZ2ltcGxlICpzdG10LCBlbmlfd2VpZ2h0cyAqd2VpZ2h0cykKIAl0cmVlIGRl Y2w7CiAKIAlpZiAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCkpCi0JICByZXR1cm4g MDsKKwkgIHsKKwkgICAgaW50ZXJuYWxfZm4gZm4gPSBnaW1wbGVfY2FsbF9pbnRlcm5hbF9m biAoc3RtdCk7CisJICAgIHN3aXRjaCAoZm4pCisJICAgICAgeworCSAgICAgIGNhc2UgSUZO X1ZFQ19XSURFTl9QTFVTX0hJOgorCSAgICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9QTFVTX0xP OgorCSAgICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9NSU5VU19ISToKKwkgICAgICBjYXNlIElG Tl9WRUNfV0lERU5fTUlOVVNfTE86CisJCXJldHVybiAxOworCisJICAgICAgZGVmYXVsdDoK KwkJcmV0dXJuIDA7CisJICAgICAgfQorCSAgfQogCWVsc2UgaWYgKChkZWNsID0gZ2ltcGxl X2NhbGxfZm5kZWNsIChzdG10KSkKIAkJICYmIGZuZGVjbF9idWlsdF9pbl9wIChkZWNsKSkK IAkgIHsKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MgYi9nY2MvdHJl ZS12ZWN0LXBhdHRlcm5zLmNjCmluZGV4IDE3NzhhZjAyNDI4OThlM2RjNzNkOTRkMjJhNWI4 NTA1NjI4YTUzYjUuLmRjZDRiNTU2MTYwMDM0NmEyYzEwYmQ1MTMzNTA3MzI5MjA2ZTg4Mzcg MTAwNjQ0Ci0tLSBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MKKysrIGIvZ2NjL3RyZWUt dmVjdC1wYXR0ZXJucy5jYwpAQCAtNTYyLDIxICs1NjIsMzAgQEAgdmVjdF9qb3VzdF93aWRl bmVkX3R5cGUgKHRyZWUgdHlwZSwgdHJlZSBuZXdfdHlwZSwgdHJlZSAqY29tbW9uX3R5cGUp CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQKIHZlY3Rfd2lkZW5lZF9vcF90cmVlICh2ZWNfaW5m byAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCB0cmVlX2NvZGUgY29kZSwKLQkJ ICAgICAgdHJlZV9jb2RlIHdpZGVuZWRfY29kZSwgYm9vbCBzaGlmdF9wLAorCQkgICAgICBj b2RlX2hlbHBlciB3aWRlbmVkX2NvZGUsIGJvb2wgc2hpZnRfcCwKIAkJICAgICAgdW5zaWdu ZWQgaW50IG1heF9ub3BzLAogCQkgICAgICB2ZWN0X3VucHJvbW90ZWRfdmFsdWUgKnVucHJv bSwgdHJlZSAqY29tbW9uX3R5cGUsCiAJCSAgICAgIGVudW0gb3B0YWJfc3VidHlwZSAqc3Vi dHlwZSA9IE5VTEwpCiB7CiAgIC8qIENoZWNrIGZvciBhbiBpbnRlZ2VyIG9wZXJhdGlvbiB3 aXRoIHRoZSByaWdodCBjb2RlLiAgKi8KLSAgZ2Fzc2lnbiAqYXNzaWduID0gZHluX2Nhc3Qg PGdhc3NpZ24gKj4gKHN0bXRfaW5mby0+c3RtdCk7Ci0gIGlmICghYXNzaWduKQorICBnaW1w bGUqIHN0bXQgPSBzdG10X2luZm8tPnN0bXQ7CisgIGlmICghKGlzX2dpbXBsZV9hc3NpZ24g KHN0bXQpIHx8IGlzX2dpbXBsZV9jYWxsIChzdG10KSkpCisgICAgcmV0dXJuIDA7CisKKyAg Y29kZV9oZWxwZXIgcmhzX2NvZGU7CisgIGlmIChpc19naW1wbGVfYXNzaWduIChzdG10KSkK KyAgICByaHNfY29kZSA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQpOworICBlbHNl IGlmIChpc19naW1wbGVfY2FsbCAoc3RtdCkpCisgICAgcmhzX2NvZGUgPSBnaW1wbGVfY2Fs bF9jb21iaW5lZF9mbiAoc3RtdCk7CisgIGVsc2UKICAgICByZXR1cm4gMDsKIAotICB0cmVl X2NvZGUgcmhzX2NvZGUgPSBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChhc3NpZ24pOwotICBp ZiAocmhzX2NvZGUgIT0gY29kZSAmJiByaHNfY29kZSAhPSB3aWRlbmVkX2NvZGUpCisgIGlm IChyaHNfY29kZSAhPSBjb2RlCisgICAgICAmJiByaHNfY29kZSAhPSB3aWRlbmVkX2NvZGUp CiAgICAgcmV0dXJuIDA7CiAKLSAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChnaW1wbGVfYXNz aWduX2xocyAoYXNzaWduKSk7CisgIHRyZWUgbGhzID0gZ2ltcGxlX2dldF9saHMgKHN0bXQp OworICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGxocyk7CiAgIGlmICghSU5URUdSQUxfVFlQ RV9QICh0eXBlKSkKICAgICByZXR1cm4gMDsKIApAQCAtNTg5LDcgKzU5OCw3IEBAIHZlY3Rf d2lkZW5lZF9vcF90cmVlICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9p bmZvLCB0cmVlX2NvZGUgY29kZSwKICAgICB7CiAgICAgICB2ZWN0X3VucHJvbW90ZWRfdmFs dWUgKnRoaXNfdW5wcm9tID0gJnVucHJvbVtuZXh0X29wXTsKICAgICAgIHVuc2lnbmVkIGlu dCBub3BzID0gMTsKLSAgICAgIHRyZWUgb3AgPSBnaW1wbGVfb3AgKGFzc2lnbiwgaSArIDEp OworICAgICAgdHJlZSBvcCA9IGdpbXBsZV9hcmcgKHN0bXQsIGkpOwogICAgICAgaWYgKGkg PT0gMSAmJiBUUkVFX0NPREUgKG9wKSA9PSBJTlRFR0VSX0NTVCkKIAl7CiAJICAvKiBXZSBh bHJlYWR5IGhhdmUgYSBjb21tb24gdHlwZSBmcm9tIGVhcmxpZXIgb3BlcmFuZHMuCkBAIC0x MzQzLDcgKzEzNTIsOCBAQCB2ZWN0X3JlY29nX3NhZF9wYXR0ZXJuICh2ZWNfaW5mbyAqdmlu Zm8sCiAgIC8qIEZPUk5PVy4gIENhbiBjb250aW51ZSBhbmFseXppbmcgdGhlIGRlZi11c2Ug Y2hhaW4gd2hlbiB0aGlzIHN0bXQgaW4gYSBwaGkKICAgICAgaW5zaWRlIHRoZSBsb29wIChp biBjYXNlIHdlIGFyZSBhbmFseXppbmcgYW4gb3V0ZXItbG9vcCkuICAqLwogICB2ZWN0X3Vu cHJvbW90ZWRfdmFsdWUgdW5wcm9tWzJdOwotICBpZiAoIXZlY3Rfd2lkZW5lZF9vcF90cmVl ICh2aW5mbywgZGlmZl9zdG10X3ZpbmZvLCBNSU5VU19FWFBSLCBXSURFTl9NSU5VU19FWFBS LAorICBpZiAoIXZlY3Rfd2lkZW5lZF9vcF90cmVlICh2aW5mbywgZGlmZl9zdG10X3ZpbmZv LCBNSU5VU19FWFBSLAorCQkJICAgICBJRk5fVkVDX1dJREVOX01JTlVTLAogCQkJICAgICBm YWxzZSwgMiwgdW5wcm9tLCAmaGFsZl90eXBlKSkKICAgICByZXR1cm4gTlVMTDsKIApAQCAt MTM5NSwxNCArMTQwNSwxNiBAQCBzdGF0aWMgZ2ltcGxlICoKIHZlY3RfcmVjb2dfd2lkZW5f b3BfcGF0dGVybiAodmVjX2luZm8gKnZpbmZvLAogCQkJICAgICBzdG10X3ZlY19pbmZvIGxh c3Rfc3RtdF9pbmZvLCB0cmVlICp0eXBlX291dCwKIAkJCSAgICAgdHJlZV9jb2RlIG9yaWdf Y29kZSwgY29kZV9oZWxwZXIgd2lkZV9jb2RlLAotCQkJICAgICBib29sIHNoaWZ0X3AsIGNv bnN0IGNoYXIgKm5hbWUpCisJCQkgICAgIGJvb2wgc2hpZnRfcCwgY29uc3QgY2hhciAqbmFt ZSwKKwkJCSAgICAgb3B0YWJfc3VidHlwZSAqc3VidHlwZSA9IE5VTEwpCiB7CiAgIGdpbXBs ZSAqbGFzdF9zdG10ID0gbGFzdF9zdG10X2luZm8tPnN0bXQ7CiAKICAgdmVjdF91bnByb21v dGVkX3ZhbHVlIHVucHJvbVsyXTsKICAgdHJlZSBoYWxmX3R5cGU7CiAgIGlmICghdmVjdF93 aWRlbmVkX29wX3RyZWUgKHZpbmZvLCBsYXN0X3N0bXRfaW5mbywgb3JpZ19jb2RlLCBvcmln X2NvZGUsCi0JCQkgICAgIHNoaWZ0X3AsIDIsIHVucHJvbSwgJmhhbGZfdHlwZSkpCisJCQkg ICAgIHNoaWZ0X3AsIDIsIHVucHJvbSwgJmhhbGZfdHlwZSwgc3VidHlwZSkpCisKICAgICBy ZXR1cm4gTlVMTDsKIAogICAvKiBQYXR0ZXJuIGRldGVjdGVkLiAgKi8KQEAgLTE0NjgsNiAr MTQ4MCwyMCBAQCB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4gKHZlY19pbmZvICp2aW5m bywKIAkJCSAgICAgIHR5cGUsIHBhdHRlcm5fc3RtdCwgdmVjY3R5cGUpOwogfQogCitzdGF0 aWMgZ2ltcGxlICoKK3ZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiAodmVjX2luZm8gKnZp bmZvLAorCQkJICAgICBzdG10X3ZlY19pbmZvIGxhc3Rfc3RtdF9pbmZvLCB0cmVlICp0eXBl X291dCwKKwkJCSAgICAgdHJlZV9jb2RlIG9yaWdfY29kZSwgaW50ZXJuYWxfZm4gd2lkZV9p Zm4sCisJCQkgICAgIGJvb2wgc2hpZnRfcCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICAg b3B0YWJfc3VidHlwZSAqc3VidHlwZSA9IE5VTEwpCit7CisgIGNvbWJpbmVkX2ZuIGlmbiA9 IGFzX2NvbWJpbmVkX2ZuICh3aWRlX2lmbik7CisgIHJldHVybiB2ZWN0X3JlY29nX3dpZGVu X29wX3BhdHRlcm4gKHZpbmZvLCBsYXN0X3N0bXRfaW5mbywgdHlwZV9vdXQsCisJCQkJICAg ICAgb3JpZ19jb2RlLCBpZm4sIHNoaWZ0X3AsIG5hbWUsCisJCQkJICAgICAgc3VidHlwZSk7 Cit9CisKKwogLyogVHJ5IHRvIGRldGVjdCBtdWx0aXBsaWNhdGlvbiBvbiB3aWRlbmVkIGlu cHV0cywgY29udmVydGluZyBNVUxUX0VYUFIKICAgIHRvIFdJREVOX01VTFRfRVhQUi4gIFNl ZSB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4gZm9yIGRldGFpbHMuICAqLwogCkBAIC0x NDgxLDI2ICsxNTA3LDMwIEBAIHZlY3RfcmVjb2dfd2lkZW5fbXVsdF9wYXR0ZXJuICh2ZWNf aW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gbGFzdF9zdG10X2luZm8sCiB9CiAKIC8qIFRy eSB0byBkZXRlY3QgYWRkaXRpb24gb24gd2lkZW5lZCBpbnB1dHMsIGNvbnZlcnRpbmcgUExV U19FWFBSCi0gICB0byBXSURFTl9QTFVTX0VYUFIuICBTZWUgdmVjdF9yZWNvZ193aWRlbl9v cF9wYXR0ZXJuIGZvciBkZXRhaWxzLiAgKi8KKyAgIHRvIElGTl9WRUNfV0lERU5fUExVUy4g IFNlZSB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4gZm9yIGRldGFpbHMuICAqLwogCiBz dGF0aWMgZ2ltcGxlICoKIHZlY3RfcmVjb2dfd2lkZW5fcGx1c19wYXR0ZXJuICh2ZWNfaW5m byAqdmluZm8sIHN0bXRfdmVjX2luZm8gbGFzdF9zdG10X2luZm8sCiAJCQkgICAgICAgdHJl ZSAqdHlwZV9vdXQpCiB7CisgIG9wdGFiX3N1YnR5cGUgc3VidHlwZTsKICAgcmV0dXJuIHZl Y3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiAodmluZm8sIGxhc3Rfc3RtdF9pbmZvLCB0eXBl X291dCwKLQkJCQkgICAgICBQTFVTX0VYUFIsIFdJREVOX1BMVVNfRVhQUiwgZmFsc2UsCi0J CQkJICAgICAgInZlY3RfcmVjb2dfd2lkZW5fcGx1c19wYXR0ZXJuIik7CisJCQkJICAgICAg UExVU19FWFBSLCBJRk5fVkVDX1dJREVOX1BMVVMsCisJCQkJICAgICAgZmFsc2UsICJ2ZWN0 X3JlY29nX3dpZGVuX3BsdXNfcGF0dGVybiIsCisJCQkJICAgICAgJnN1YnR5cGUpOwogfQog CiAvKiBUcnkgdG8gZGV0ZWN0IHN1YnRyYWN0aW9uIG9uIHdpZGVuZWQgaW5wdXRzLCBjb252 ZXJ0aW5nIE1JTlVTX0VYUFIKLSAgIHRvIFdJREVOX01JTlVTX0VYUFIuICBTZWUgdmVjdF9y ZWNvZ193aWRlbl9vcF9wYXR0ZXJuIGZvciBkZXRhaWxzLiAgKi8KKyAgIHRvIElGTl9WRUNf V0lERU5fTUlOVVMuICBTZWUgdmVjdF9yZWNvZ193aWRlbl9vcF9wYXR0ZXJuIGZvciBkZXRh aWxzLiAgKi8KIHN0YXRpYyBnaW1wbGUgKgogdmVjdF9yZWNvZ193aWRlbl9taW51c19wYXR0 ZXJuICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gbGFzdF9zdG10X2luZm8sCiAJ CQkgICAgICAgdHJlZSAqdHlwZV9vdXQpCiB7CisgIG9wdGFiX3N1YnR5cGUgc3VidHlwZTsK ICAgcmV0dXJuIHZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiAodmluZm8sIGxhc3Rfc3Rt dF9pbmZvLCB0eXBlX291dCwKLQkJCQkgICAgICBNSU5VU19FWFBSLCBXSURFTl9NSU5VU19F WFBSLCBmYWxzZSwKLQkJCQkgICAgICAidmVjdF9yZWNvZ193aWRlbl9taW51c19wYXR0ZXJu Iik7CisJCQkJICAgICAgTUlOVVNfRVhQUiwgSUZOX1ZFQ19XSURFTl9NSU5VUywKKwkJCQkg ICAgICBmYWxzZSwgInZlY3RfcmVjb2dfd2lkZW5fbWludXNfcGF0dGVybiIsCisJCQkJICAg ICAgJnN1YnR5cGUpOwogfQogCiAvKiBGdW5jdGlvbiB2ZWN0X3JlY29nX2N0el9mZnNfcGF0 dGVybgpAQCAtMzA3OCw3ICszMTA4LDcgQEAgdmVjdF9yZWNvZ19hdmVyYWdlX3BhdHRlcm4g KHZlY19pbmZvICp2aW5mbywKICAgdmVjdF91bnByb21vdGVkX3ZhbHVlIHVucHJvbVszXTsK ICAgdHJlZSBuZXdfdHlwZTsKICAgdW5zaWduZWQgaW50IG5vcHMgPSB2ZWN0X3dpZGVuZWRf b3BfdHJlZSAodmluZm8sIHBsdXNfc3RtdF9pbmZvLCBQTFVTX0VYUFIsCi0JCQkJCSAgICBX SURFTl9QTFVTX0VYUFIsIGZhbHNlLCAzLAorCQkJCQkgICAgSUZOX1ZFQ19XSURFTl9QTFVT LCBmYWxzZSwgMywKIAkJCQkJICAgIHVucHJvbSwgJm5ld190eXBlKTsKICAgaWYgKG5vcHMg PT0gMCkKICAgICByZXR1cm4gTlVMTDsKQEAgLTY0NjksNiArNjQ5OSw3IEBAIHN0YXRpYyB2 ZWN0X3JlY29nX2Z1bmMgdmVjdF92ZWN0X3JlY29nX2Z1bmNfcHRyc1tdID0gewogICB7IHZl Y3RfcmVjb2dfbWFza19jb252ZXJzaW9uX3BhdHRlcm4sICJtYXNrX2NvbnZlcnNpb24iIH0s CiAgIHsgdmVjdF9yZWNvZ193aWRlbl9wbHVzX3BhdHRlcm4sICJ3aWRlbl9wbHVzIiB9LAog ICB7IHZlY3RfcmVjb2dfd2lkZW5fbWludXNfcGF0dGVybiwgIndpZGVuX21pbnVzIiB9LAor ICAvKiBUaGVzZSBtdXN0IGNvbWUgYWZ0ZXIgdGhlIGRvdWJsZSB3aWRlbmluZyBvbmVzLiAg Ki8KIH07CiAKIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fUEFUVEVSTlMgPSBBUlJBWV9TSVpF ICh2ZWN0X3ZlY3RfcmVjb2dfZnVuY19wdHJzKTsKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZl Y3Qtc3RtdHMuY2MgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjCmluZGV4IGQxNTJhZTlhYjEw YjM2MWI4OGMwZjgzOWQ2OTUxYzQzYjk1NDc1MGEuLjEzMmMwMzM3YjdmNTQxYmZiMTE0YzBh M2QyYWJiZWZmZGFkNzk4ODAgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MK KysrIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYwpAQCAtNTAzOCw3ICs1MDM4LDggQEAgdmVj dG9yaXphYmxlX2NvbnZlcnNpb24gKHZlY19pbmZvICp2aW5mbywKICAgYm9vbCB3aWRlbl9h cml0aCA9IChjb2RlID09IFdJREVOX1BMVVNfRVhQUgogCQkgfHwgY29kZSA9PSBXSURFTl9N SU5VU19FWFBSCiAJCSB8fCBjb2RlID09IFdJREVOX01VTFRfRVhQUgotCQkgfHwgY29kZSA9 PSBXSURFTl9MU0hJRlRfRVhQUik7CisJCSB8fCBjb2RlID09IFdJREVOX0xTSElGVF9FWFBS CisJCSB8fCB3aWRlbmluZ19mbl9wIChjb2RlKSk7CiAKICAgaWYgKCF3aWRlbl9hcml0aAog ICAgICAgJiYgIUNPTlZFUlRfRVhQUl9DT0RFX1AgKGNvZGUpCkBAIC01MDg4LDggKzUwODks OCBAQCB2ZWN0b3JpemFibGVfY29udmVyc2lvbiAodmVjX2luZm8gKnZpbmZvLAogICAgICAg Z2NjX2Fzc2VydCAoY29kZSA9PSBXSURFTl9NVUxUX0VYUFIKIAkJICB8fCBjb2RlID09IFdJ REVOX0xTSElGVF9FWFBSCiAJCSAgfHwgY29kZSA9PSBXSURFTl9QTFVTX0VYUFIKLQkJICB8 fCBjb2RlID09IFdJREVOX01JTlVTX0VYUFIpOwotCisJCSAgfHwgY29kZSA9PSBXSURFTl9N SU5VU19FWFBSCisJCSAgfHwgd2lkZW5pbmdfZm5fcCAoY29kZSkpOwogCiAgICAgICBvcDEg PSBpc19naW1wbGVfYXNzaWduIChzdG10KSA/IGdpbXBsZV9hc3NpZ25fcmhzMiAoc3RtdCkg OgogCQkJCSAgICAgZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAwKTsKQEAgLTEyNDc4LDI2ICsx MjQ3OSw2OSBAQCBzdXBwb3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24gKHZlY19pbmZvICp2 aW5mbywKICAgICAgIG9wdGFiMSA9IHZlY191bnBhY2tzX3Nib29sX2xvX29wdGFiOwogICAg ICAgb3B0YWIyID0gdmVjX3VucGFja3Nfc2Jvb2xfaGlfb3B0YWI7CiAgICAgfQotICBlbHNl Ci0gICAgewotICAgICAgb3B0YWIxID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoYzEsIHZlY3R5 cGUsIG9wdGFiX2RlZmF1bHQpOwotICAgICAgb3B0YWIyID0gb3B0YWJfZm9yX3RyZWVfY29k ZSAoYzIsIHZlY3R5cGUsIG9wdGFiX2RlZmF1bHQpOworCisgIHZlY19tb2RlID0gVFlQRV9N T0RFICh2ZWN0eXBlKTsKKyAgaWYgKHdpZGVuaW5nX2ZuX3AgKGNvZGUpKQorICAgICB7Cisg ICAgICAgLyogSWYgdGhpcyBpcyBhbiBpbnRlcm5hbCBmbiB0aGVuIHdlIG11c3QgY2hlY2sg d2hldGhlciB0aGUgdGFyZ2V0CisJICBzdXBwb3J0cyBlaXRoZXIgYSBsb3ctaGlnaCBzcGxp dCBvciBhbiBldmVuLW9kZCBzcGxpdC4gICovCisgICAgICBpbnRlcm5hbF9mbiBpZm4gPSBh c19pbnRlcm5hbF9mbiAoKGNvbWJpbmVkX2ZuKSBjb2RlKTsKKworICAgICAgaW50ZXJuYWxf Zm4gbG8sIGhpLCBldmVuLCBvZGQ7CisgICAgICBsb29rdXBfaGlsb19pbnRlcm5hbF9mbiAo aWZuLCAmbG8sICZoaSk7CisgICAgICAqY29kZTEgPSBhc19jb21iaW5lZF9mbiAobG8pOwor ICAgICAgKmNvZGUyID0gYXNfY29tYmluZWRfZm4gKGhpKTsKKyAgICAgIG9wdGFiMSA9IGRp cmVjdF9pbnRlcm5hbF9mbl9vcHRhYiAobG8sIHt2ZWN0eXBlLCB2ZWN0eXBlfSk7CisgICAg ICBvcHRhYjIgPSBkaXJlY3RfaW50ZXJuYWxfZm5fb3B0YWIgKGhpLCB7dmVjdHlwZSwgdmVj dHlwZX0pOworCisgICAgICAvKiBJZiB3ZSBkb24ndCBzdXBwb3J0IGxvdy1oaWdoLCB0aGVu IGNoZWNrIGZvciBldmVuLW9kZC4gICovCisgICAgICBpZiAoIW9wdGFiMQorCSAgfHwgKGlj b2RlMSA9IG9wdGFiX2hhbmRsZXIgKG9wdGFiMSwgdmVjX21vZGUpKSA9PSBDT0RFX0ZPUl9u b3RoaW5nCisJICB8fCAhb3B0YWIyCisJICB8fCAoaWNvZGUyID0gb3B0YWJfaGFuZGxlciAo b3B0YWIyLCB2ZWNfbW9kZSkpID09IENPREVfRk9SX25vdGhpbmcpCisJeworCSAgbG9va3Vw X2V2ZW5vZGRfaW50ZXJuYWxfZm4gKGlmbiwgJmV2ZW4sICZvZGQpOworCSAgKmNvZGUxID0g YXNfY29tYmluZWRfZm4gKGV2ZW4pOworCSAgKmNvZGUyID0gYXNfY29tYmluZWRfZm4gKG9k ZCk7CisJICBvcHRhYjEgPSBkaXJlY3RfaW50ZXJuYWxfZm5fb3B0YWIgKGV2ZW4sIHt2ZWN0 eXBlLCB2ZWN0eXBlfSk7CisJICBvcHRhYjIgPSBkaXJlY3RfaW50ZXJuYWxfZm5fb3B0YWIg KG9kZCwge3ZlY3R5cGUsIHZlY3R5cGV9KTsKKwl9CisgICAgfQorICBlbHNlIGlmIChjb2Rl LmlzX3RyZWVfY29kZSAoKSkKKyAgICB7CisgICAgICBpZiAoY29kZSA9PSBGSVhfVFJVTkNf RVhQUikKKwl7CisJICAvKiBUaGUgc2lnbmVkbmVzcyBpcyBkZXRlcm1pbmVkIGZyb20gb3V0 cHV0IG9wZXJhbmQuICAqLworCSAgb3B0YWIxID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoYzEs IHZlY3R5cGVfb3V0LCBvcHRhYl9kZWZhdWx0KTsKKwkgIG9wdGFiMiA9IG9wdGFiX2Zvcl90 cmVlX2NvZGUgKGMyLCB2ZWN0eXBlX291dCwgb3B0YWJfZGVmYXVsdCk7CisJfQorICAgICAg ZWxzZSBpZiAoQ09OVkVSVF9FWFBSX0NPREVfUCAoKHRyZWVfY29kZSkgY29kZS5zYWZlX2Fz X3RyZWVfY29kZSAoKSkKKwkgICAgICAgJiYgVkVDVE9SX0JPT0xFQU5fVFlQRV9QICh3aWRl X3ZlY3R5cGUpCisJICAgICAgICYmIFZFQ1RPUl9CT09MRUFOX1RZUEVfUCAodmVjdHlwZSkK KwkgICAgICAgJiYgVFlQRV9NT0RFICh3aWRlX3ZlY3R5cGUpID09IFRZUEVfTU9ERSAodmVj dHlwZSkKKwkgICAgICAgJiYgU0NBTEFSX0lOVF9NT0RFX1AgKFRZUEVfTU9ERSAodmVjdHlw ZSkpKQorCXsKKwkgIC8qIElmIHRoZSBpbnB1dCBhbmQgcmVzdWx0IG1vZGVzIGFyZSB0aGUg c2FtZSwgYSBkaWZmZXJlbnQgb3B0YWIKKwkgICAgIGlzIG5lZWRlZCB3aGVyZSB3ZSBwYXNz IGluIHRoZSBudW1iZXIgb2YgdW5pdHMgaW4gdmVjdHlwZS4gICovCisJICBvcHRhYjEgPSB2 ZWNfdW5wYWNrc19zYm9vbF9sb19vcHRhYjsKKwkgIG9wdGFiMiA9IHZlY191bnBhY2tzX3Ni b29sX2hpX29wdGFiOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBvcHRhYjEgPSBvcHRhYl9m b3JfdHJlZV9jb2RlIChjMSwgdmVjdHlwZSwgb3B0YWJfZGVmYXVsdCk7CisJICBvcHRhYjIg PSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjMiwgdmVjdHlwZSwgb3B0YWJfZGVmYXVsdCk7CisJ fQorICAgICAgKmNvZGUxID0gYzE7CisgICAgICAqY29kZTIgPSBjMjsKICAgICB9CiAKICAg aWYgKCFvcHRhYjEgfHwgIW9wdGFiMikKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgdmVjX21v ZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOwogICBpZiAoKGljb2RlMSA9IG9wdGFiX2hhbmRs ZXIgKG9wdGFiMSwgdmVjX21vZGUpKSA9PSBDT0RFX0ZPUl9ub3RoaW5nCiAgICAgICAgfHwg KGljb2RlMiA9IG9wdGFiX2hhbmRsZXIgKG9wdGFiMiwgdmVjX21vZGUpKSA9PSBDT0RFX0ZP Ul9ub3RoaW5nKQogICAgIHJldHVybiBmYWxzZTsKIAotICBpZiAoY29kZS5pc190cmVlX2Nv ZGUgKCkpCi0gIHsKLSAgICAqY29kZTEgPSBjMTsKLSAgICAqY29kZTIgPSBjMjsKLSAgfQot CiAKICAgaWYgKGluc25fZGF0YVtpY29kZTFdLm9wZXJhbmRbMF0ubW9kZSA9PSBUWVBFX01P REUgKHdpZGVfdmVjdHlwZSkKICAgICAgICYmIGluc25fZGF0YVtpY29kZTJdLm9wZXJhbmRb MF0ubW9kZSA9PSBUWVBFX01PREUgKHdpZGVfdmVjdHlwZSkpCmRpZmYgLS1naXQgYS9nY2Mv dHJlZS5kZWYgYi9nY2MvdHJlZS5kZWYKaW5kZXggOTBjZWVlYzBiNTEyYmZhNWY5ODMzNTlj MGFmMDNjYzcxZGUzMjAwNy4uYjM3YjBiMzU5MjdiOTJhNjUzNmU1YzJkOTgwNWZmY2U4MzE5 YTI0MCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuZGVmCisrKyBiL2djYy90cmVlLmRlZgpAQCAt MTM3NCwxNSArMTM3NCwxNiBAQCBERUZUUkVFQ09ERSAoRE9UX1BST0RfRVhQUiwgImRvdF9w cm9kX2V4cHIiLCB0Y2NfZXhwcmVzc2lvbiwgMykKIERFRlRSRUVDT0RFIChXSURFTl9TVU1f RVhQUiwgIndpZGVuX3N1bV9leHByIiwgdGNjX2JpbmFyeSwgMikKIAogLyogV2lkZW5pbmcg c2FkIChzdW0gb2YgYWJzb2x1dGUgZGlmZmVyZW5jZXMpLgotICAgVGhlIGZpcnN0IHR3byBh cmd1bWVudHMgYXJlIG9mIHR5cGUgdDEgd2hpY2ggc2hvdWxkIGJlIGludGVnZXIuCi0gICBU aGUgdGhpcmQgYXJndW1lbnQgYW5kIHRoZSByZXN1bHQgYXJlIG9mIHR5cGUgdDIsIHN1Y2gg dGhhdCB0MiBpcyBhdCBsZWFzdAotICAgdHdpY2UgdGhlIHNpemUgb2YgdDEuICBMaWtlIERP VF9QUk9EX0VYUFIsIFNBRF9FWFBSIChhcmcxLGFyZzIsYXJnMykgaXMKKyAgIFRoZSBmaXJz dCB0d28gYXJndW1lbnRzIGFyZSBvZiB0eXBlIHQxIHdoaWNoIHNob3VsZCBiZSBhIHZlY3Rv ciBvZiBpbnRlZ2Vycy4KKyAgIFRoZSB0aGlyZCBhcmd1bWVudCBhbmQgdGhlIHJlc3VsdCBh cmUgb2YgdHlwZSB0Miwgc3VjaCB0aGF0IHRoZSBzaXplIG9mCisgICB0aGUgZWxlbWVudHMg b2YgdDIgaXMgYXQgbGVhc3QgdHdpY2UgdGhlIHNpemUgb2YgdGhlIGVsZW1lbnRzIG9mIHQx LgorICAgTGlrZSBET1RfUFJPRF9FWFBSLCBTQURfRVhQUiAoYXJnMSxhcmcyLGFyZzMpIGlz CiAgICBlcXVpdmFsZW50IHRvOgotICAgICAgIHRtcCA9IFdJREVOX01JTlVTX0VYUFIgKGFy ZzEsIGFyZzIpCisgICAgICAgdG1wID0gSUZOX1ZFQ19XSURFTl9NSU5VU19FWFBSIChhcmcx LCBhcmcyKQogICAgICAgIHRtcDIgPSBBQlNfRVhQUiAodG1wKQogICAgICAgIGFyZzMgPSBQ TFVTX0VYUFIgKHRtcDIsIGFyZzMpCiAgIG9yOgotICAgICAgIHRtcCA9IFdJREVOX01JTlVT X0VYUFIgKGFyZzEsIGFyZzIpCisgICAgICAgdG1wID0gSUZOX1ZFQ19XSURFTl9NSU5VU19F WFBSIChhcmcxLCBhcmcyKQogICAgICAgIHRtcDIgPSBBQlNfRVhQUiAodG1wKQogICAgICAg IGFyZzMgPSBXSURFTl9TVU1fRVhQUiAodG1wMiwgYXJnMykKICAqLwo= --------------Vel6F5aglXMxhnixhpqHwuUu--