From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7207 invoked by alias); 16 Jun 2011 07:34:23 -0000 Received: (qmail 6881 invoked by uid 22791); 16 Jun 2011 07:34:19 -0000 X-SWARE-Spam-Status: No, hits=-1.6 required=5.0 tests=AWL,BAYES_00,DATE_IN_PAST_24_48,RCVD_IN_DNSWL_LOW,TW_TM X-Spam-Check-By: sourceware.org Received: from mail-pv0-f175.google.com (HELO mail-pv0-f175.google.com) (74.125.83.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 16 Jun 2011 07:34:04 +0000 Received: by pvc30 with SMTP id 30so989973pvc.20 for ; Thu, 16 Jun 2011 00:34:03 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.250.8 with SMTP id x8mr17632wfh.264.1308119445772; Tue, 14 Jun 2011 23:30:45 -0700 (PDT) Received: by 10.143.93.4 with HTTP; Tue, 14 Jun 2011 23:30:45 -0700 (PDT) In-Reply-To: References: Date: Thu, 16 Jun 2011 07:36:00 -0000 Message-ID: Subject: Re: [patch] Don't insert pattern statements into the code (was Fix PR tree-optimization/49318) From: Ira Rosen To: Richard Guenther Cc: gcc-patches@gcc.gnu.org, Patch Tracking Content-Type: multipart/mixed; boundary=001636ed6783e39bee04a5ba4ac6 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-06/txt/msg01211.txt.bz2 --001636ed6783e39bee04a5ba4ac6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3331 On 14 June 2011 15:01, Richard Guenther wrote: > On Tue, Jun 14, 2011 at 1:38 PM, Ira Rosen wrote: >> On 14 June 2011 14:27, Richard Guenther wro= te: >> >>>>> >>>>> =A0 /* Mark the stmts that are involved in the pattern. */ >>>>> - =A0gsi_insert_before (&si, pattern_stmt, GSI_SAME_STMT); >>>>> =A0 set_vinfo_for_stmt (pattern_stmt, >>>>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0new_stmt_vec_info (pattern= _stmt, loop_vinfo, NULL)); >>>>> + =A0gimple_set_bb (pattern_stmt, gimple_bb (stmt)); >>>>> >>>>> do you really need this? >>>> >>>> Yes, there are a lot of uses of gimple_bb (stmt). Otherwise, we'd have >>>> to check there that bb exists (or that this is not a pattern stmt) and >>>> use the bb of the original statement if not. >>> >>> I see. =A0It's not really uglier than the part where you have to specia= l-case >>> them when walking use-operands, so ... >> >> I think it is uglier, because there are 42 cases to handle instead of >> a single place that you mentioned. (Probably not all the 42 can be >> really reached with a pattern stmt, but still it's a lot). > > Well, yes - I meant setting the BB isn't uglier which means setting BB > is ok. I committed the attached patch. It also removes remove_dead_stmts_from_loop. Thanks, Ira > > Richard. > >> Thanks, >> Ira >> >>> >>> Still a lot better than when inserting them for real. >>> >>>>> Otherwise it looks reasonable. =A0Btw, >>>>> we can probably remove the simple DCE done in >>>>> slpeel_tree_peel_loop_to_edge (remove_dead_stmts_from_loop) >>>>> with this patch. >>>> >>>> I'll try that. >>> >>> Thanks, >>> Richard. >>> >>>> Thanks, >>>> Ira >>>> >>>>> >>>>> Thanks, >>>>> Richard. >>>>> >>>>>> Thanks, >>>>>> Ira >>>>>> >>>>>> ChangeLog: >>>>>> >>>>>> =A0 =A0 * tree-vect-loop.c (vect_determine_vectorization_factor): Do= n't >>>>>> =A0 =A0 remove irrelevant pattern statements. =A0For irrelevant stat= ements >>>>>> =A0 =A0 check if it is the last statement of a detected pattern, use >>>>>> =A0 =A0 corresponding pattern statement instead. >>>>>> =A0 =A0 (destroy_loop_vec_info): No need to remove pattern statement= s, >>>>>> =A0 =A0 only free stmt_vec_info. >>>>>> =A0 =A0 (vect_transform_loop): For irrelevant statements check if it= is >>>>>> =A0 =A0 the last statement of a detected pattern, use corresponding >>>>>> =A0 =A0 pattern statement instead. >>>>>> =A0 =A0 * tree-vect-patterns.c (vect_pattern_recog_1): Don't insert >>>>>> =A0 =A0 pattern statements. =A0Set basic block for the new statement. >>>>>> =A0 =A0 (vect_pattern_recog): Update documentation. >>>>>> =A0 =A0 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Scan >>>>>> =A0 =A0 operands of pattern statements. >>>>>> =A0 =A0 (vectorizable_call): Fix printing. =A0In case of a pattern s= tatement >>>>>> =A0 =A0 use the lhs of the original statement when creating a dummy >>>>>> =A0 =A0 statement to replace the original call. >>>>>> =A0 =A0 (vect_analyze_stmt): For irrelevant statements check if it is >>>>>> =A0 =A0 the last statement of a detected pattern, use corresponding >>>>>> =A0 =A0 pattern statement instead. >>>>>> =A0 =A0 * tree-vect-slp.c (vect_schedule_slp_instance): For pattern >>>>>> =A0 =A0 statements use gsi of the original statement. >>>>>> >>>>> >>>> >>> >> > --001636ed6783e39bee04a5ba4ac6 Content-Type: text/plain; charset=US-ASCII; name="pattern2.txt" Content-Disposition: attachment; filename="pattern2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_goxwizo40 Content-length: 24213 SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBD aGFuZ2VMb2cJKHJldmlzaW9uIDE3NTA3MykKKysrIENoYW5nZUxvZwkod29y a2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDExLTA2LTE1ICBJcmEg Um9zZW4gIDxpcmEucm9zZW5AbGluYXJvLm9yZz4KKworCSogdHJlZS12ZWN0 LWxvb3AtbWFuaXAuYyAocmVtb3ZlX2RlYWRfc3RtdHNfZnJvbV9sb29wKTog UmVtb3ZlLgorCShzbHBlZWxfdHJlZV9wZWVsX2xvb3BfdG9fZWRnZSk6IERv bid0IGNhbGwKKwlyZW1vdmVfZGVhZF9zdG10c19mcm9tX2xvb3AuCisJKiB0 cmVlLXZlY3QtbG9vcC5jICh2ZWN0X2RldGVybWluZV92ZWN0b3JpemF0aW9u X2ZhY3Rvcik6IERvbid0CisJcmVtb3ZlIGlycmVsZXZhbnQgcGF0dGVybiBz dGF0ZW1lbnRzLiAgRm9yIGlycmVsZXZhbnQgc3RhdGVtZW50cworCWNoZWNr IGlmIGl0IGlzIHRoZSBsYXN0IHN0YXRlbWVudCBvZiBhIGRldGVjdGVkIHBh dHRlcm4sIHVzZQorCWNvcnJlc3BvbmRpbmcgcGF0dGVybiBzdGF0ZW1lbnQg aW5zdGVhZC4KKwkoZGVzdHJveV9sb29wX3ZlY19pbmZvKTogTm8gbmVlZCB0 byByZW1vdmUgcGF0dGVybiBzdGF0ZW1lbnRzLAorCSBvbmx5IGZyZWUgc3Rt dF92ZWNfaW5mby4KKwkodmVjdF90cmFuc2Zvcm1fbG9vcCk6IEZvciBpcnJl bGV2YW50IHN0YXRlbWVudHMgY2hlY2sgaWYgaXQgaXMKKwl0aGUgbGFzdCBz dGF0ZW1lbnQgb2YgYSBkZXRlY3RlZCBwYXR0ZXJuLCB1c2UgY29ycmVzcG9u ZGluZworCXBhdHRlcm4gc3RhdGVtZW50IGluc3RlYWQuCisJKiB0cmVlLXZl Y3QtcGF0dGVybnMuYyAodmVjdF9wYXR0ZXJuX3JlY29nXzEpOiBEb24ndCBp bnNlcnQKKwlwYXR0ZXJuIHN0YXRlbWVudHMuICBTZXQgYmFzaWMgYmxvY2sg Zm9yIHRoZSBuZXcgc3RhdGVtZW50LgorCSh2ZWN0X3BhdHRlcm5fcmVjb2cp OiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KKwkqIHRyZWUtdmVjdC1zdG10cy5j ICh2ZWN0X21hcmtfc3RtdHNfdG9fYmVfdmVjdG9yaXplZCk6IFNjYW4KKwlv cGVyYW5kcyBvZiBwYXR0ZXJuIHN0YXRlbWVudHMuCisJKHZlY3Rvcml6YWJs ZV9jYWxsKTogRml4IHByaW50aW5nLiAgSW4gY2FzZSBvZiBhIHBhdHRlcm4g c3RhdGVtZW50CisJdXNlIHRoZSBsaHMgb2YgdGhlIG9yaWdpbmFsIHN0YXRl bWVudCB3aGVuIGNyZWF0aW5nIGEgZHVtbXkKKwlzdGF0ZW1lbnQgdG8gcmVw bGFjZSB0aGUgb3JpZ2luYWwgY2FsbC4KKwkodmVjdF9hbmFseXplX3N0bXQp OiBGb3IgaXJyZWxldmFudCBzdGF0ZW1lbnRzIGNoZWNrIGlmIGl0IGlzCisJ dGhlIGxhc3Qgc3RhdGVtZW50IG9mIGEgZGV0ZWN0ZWQgcGF0dGVybiwgdXNl IGNvcnJlc3BvbmRpbmcKKwlwYXR0ZXJuIHN0YXRlbWVudCBpbnN0ZWFkLgor CSogdHJlZS12ZWN0LXNscC5jICh2ZWN0X3NjaGVkdWxlX3NscF9pbnN0YW5j ZSk6IEZvciBwYXR0ZXJuCisJc3RhdGVtZW50cyB1c2UgZ3NpIG9mIHRoZSBv cmlnaW5hbCBzdGF0ZW1lbnQuCisKIDIwMTEtMDYtMTQgIEpvc2VwaCBNeWVy cyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgogCiAJKiB0YXJnZXQtZGVm LmggKFRBUkdFVF9IQVZFX05BTUVEX1NFQ1RJT05TKTogTW92ZSB0bwpJbmRl eDogdHJlZS12ZWN0LWxvb3AtbWFuaXAuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSB0cmVlLXZlY3QtbG9vcC1tYW5pcC5jCShyZXZpc2lvbiAxNzUw NzMpCisrKyB0cmVlLXZlY3QtbG9vcC1tYW5pcC5jCSh3b3JraW5nIGNvcHkp CkBAIC0xMTA1LDM1ICsxMTA1LDYgQEAgc2V0X3Byb2xvZ3VlX2l0ZXJhdGlv bnMgKGJhc2ljX2Jsb2NrIGJiX2JlZm9yZV9maXIKICAgZmlyc3Rfbml0ZXJz ID0gUEhJX1JFU1VMVCAobmV3cGhpKTsKIH0KIAotCi0vKiBSZW1vdmUgZGVh ZCBhc3NpZ25tZW50cyBmcm9tIGxvb3AgTkVXX0xPT1AuICAqLwotCi1zdGF0 aWMgdm9pZAotcmVtb3ZlX2RlYWRfc3RtdHNfZnJvbV9sb29wIChzdHJ1Y3Qg bG9vcCAqbmV3X2xvb3ApCi17Ci0gIGJhc2ljX2Jsb2NrICpiYnMgPSBnZXRf bG9vcF9ib2R5IChuZXdfbG9vcCk7Ci0gIHVuc2lnbmVkIGk7Ci0gIGZvciAo aSA9IDA7IGkgPCBuZXdfbG9vcC0+bnVtX25vZGVzOyArK2kpCi0gICAgewot ICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgZ3NpOwotICAgICAgZm9yIChn c2kgPSBnc2lfc3RhcnRfYmIgKGJic1tpXSk7ICFnc2lfZW5kX3AgKGdzaSk7 KQotCXsKLQkgIGdpbXBsZSBzdG10ID0gZ3NpX3N0bXQgKGdzaSk7Ci0JICBp ZiAoaXNfZ2ltcGxlX2Fzc2lnbiAoc3RtdCkKLQkgICAgICAmJiBUUkVFX0NP REUgKGdpbXBsZV9hc3NpZ25fbGhzIChzdG10KSkgPT0gU1NBX05BTUUKLQkg ICAgICAmJiBoYXNfemVyb191c2VzIChnaW1wbGVfYXNzaWduX2xocyAoc3Rt dCkpKQotCSAgICB7Ci0JICAgICAgZ3NpX3JlbW92ZSAoJmdzaSwgdHJ1ZSk7 Ci0JICAgICAgcmVsZWFzZV9kZWZzIChzdG10KTsKLQkgICAgfQotCSAgZWxz ZQotCSAgICBnc2lfbmV4dCAoJmdzaSk7Ci0JfQotICAgIH0KLSAgZnJlZSAo YmJzKTsKLX0KLQotCiAvKiBGdW5jdGlvbiBzbHBlZWxfdHJlZV9wZWVsX2xv b3BfdG9fZWRnZS4KIAogICAgUGVlbCB0aGUgZmlyc3QgKGxhc3QpIGl0ZXJh dGlvbnMgb2YgTE9PUCBpbnRvIGEgbmV3IHByb2xvZyAoZXBpbG9nKSBsb29w CkBAIC0xNDQ1LDEzICsxNDE2LDYgQEAgc2xwZWVsX3RyZWVfcGVlbF9sb29w X3RvX2VkZ2UgKHN0cnVjdCBsb29wICpsb29wLAogICBCSVRNQVBfRlJFRSAo ZGVmaW5pdGlvbnMpOwogICBkZWxldGVfdXBkYXRlX3NzYSAoKTsKIAotICAv KiBSZW1vdmUgYWxsIHBhdHRlcm4gc3RhdGVtZW50cyBmcm9tIHRoZSBsb29w IGNvcHkuICBUaGV5IHdpbGwgY29uZnVzZQotICAgICB0aGUgZXhwYW5kZXIg aWYgRENFIGlzIGRpc2FibGVkLgotICAgICA/Pz8gIFRoZSBwYXR0ZXJuIHJl Y29nbml6ZXIgc2hvdWxkIGJlIHNwbGl0IGludG8gYW4gYW5hbHlzaXMgYW5k Ci0gICAgIGEgdHJhbnNmb3JtYXRpb24gcGhhc2UgdGhhdCBpcyB0aGVuIHJ1 biBvbmx5IG9uIHRoZSBsb29wIHRoYXQgaXMKLSAgICAgZ29pbmcgdG8gYmUg dHJhbnNmb3JtZWQuICAqLwotICByZW1vdmVfZGVhZF9zdG10c19mcm9tX2xv b3AgKG5ld19sb29wKTsKLQogICBhZGp1c3RfdmVjX2RlYnVnX3N0bXRzICgp OwogCiAgIHJldHVybiBuZXdfbG9vcDsKSW5kZXg6IHRyZWUtdmVjdC1sb29w LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJlZS12ZWN0LWxvb3Au YwkocmV2aXNpb24gMTc1MDczKQorKysgdHJlZS12ZWN0LWxvb3AuYwkod29y a2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZlY3RfZGV0ZXJtaW5l X3ZlY3Rvcml6YXRpb25fZmFjdG9yIChsb29wX3ZlY19pbmZvCiAgICAgICBm b3IgKHNpID0gZ3NpX3N0YXJ0X2JiIChiYik7ICFnc2lfZW5kX3AgKHNpKTsg Z3NpX25leHQgKCZzaSkpCiAgICAgICAgIHsKIAkgIHRyZWUgdmZfdmVjdHlw ZTsKLQkgIGdpbXBsZSBzdG10ID0gZ3NpX3N0bXQgKHNpKTsKKwkgIGdpbXBs ZSBzdG10ID0gZ3NpX3N0bXQgKHNpKSwgcGF0dGVybl9zdG10OwogCSAgc3Rt dF9pbmZvID0gdmluZm9fZm9yX3N0bXQgKHN0bXQpOwogCiAJICBpZiAodmVj dF9wcmludF9kdW1wX2luZm8gKFJFUE9SVF9ERVRBSUxTKSkKQEAgLTI1OCwy MCArMjU4LDI2IEBAIHZlY3RfZGV0ZXJtaW5lX3ZlY3Rvcml6YXRpb25fZmFj dG9yIChsb29wX3ZlY19pbmZvCiAJICAvKiBTa2lwIHN0bXRzIHdoaWNoIGRv IG5vdCBuZWVkIHRvIGJlIHZlY3Rvcml6ZWQuICAqLwogCSAgaWYgKCFTVE1U X1ZJTkZPX1JFTEVWQU5UX1AgKHN0bXRfaW5mbykKIAkgICAgICAmJiAhU1RN VF9WSU5GT19MSVZFX1AgKHN0bXRfaW5mbykpCi0JICAgIHsKLSAgICAgICAg ICAgICAgaWYgKGlzX3BhdHRlcm5fc3RtdF9wIChzdG10X2luZm8pKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICBpZiAoU1RNVF9WSU5GT19JTl9Q QVRURVJOX1AgKHN0bXRfaW5mbykKKyAgICAgICAgICAgICAgICAgICYmIChw YXR0ZXJuX3N0bXQgPSBTVE1UX1ZJTkZPX1JFTEFURURfU1RNVCAoc3RtdF9p bmZvKSkKKyAgICAgICAgICAgICAgICAgICYmIChTVE1UX1ZJTkZPX1JFTEVW QU5UX1AgKHZpbmZvX2Zvcl9zdG10IChwYXR0ZXJuX3N0bXQpKQorICAgICAg ICAgICAgICAgICAgICAgIHx8IFNUTVRfVklORk9fTElWRV9QICh2aW5mb19m b3Jfc3RtdCAocGF0dGVybl9zdG10KSkpKQogICAgICAgICAgICAgICAgIHsK LSAgICAgICAgICAgICAgICAgICAvKiBXZSBhcmUgbm90IGdvaW5nIHRvIHZl Y3Rvcml6ZSB0aGlzIHBhdHRlcm4gc3RhdGVtZW50LAotICAgICAgICAgICAg ICAgICAgICAgIHRoZXJlZm9yZSwgcmVtb3ZlIGl0LiAgKi8KLSAgICAgICAg ICAgICAgICAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIHRtcF9nc2kgPSBnc2lf Zm9yX3N0bXQgKHN0bXQpOwotICAgICAgICAgICAgICAgICAgU1RNVF9WSU5G T19SRUxBVEVEX1NUTVQgKHN0bXRfaW5mbykgPSBOVUxMOwotICAgICAgICAg ICAgICAgICAgZ3NpX3JlbW92ZSAoJnRtcF9nc2ksIHRydWUpOwotICAgICAg ICAgICAgICAgICAgZnJlZV9zdG10X3ZlY19pbmZvIChzdG10KTsKKyAgICAg ICAgICAgICAgICAgIHN0bXQgPSBwYXR0ZXJuX3N0bXQ7CisgICAgICAgICAg ICAgICAgICBzdG10X2luZm8gPSB2aW5mb19mb3Jfc3RtdCAocGF0dGVybl9z dG10KTsKKyAgICAgICAgICAgICAgICAgIGlmICh2ZWN0X3ByaW50X2R1bXBf aW5mbyAoUkVQT1JUX0RFVEFJTFMpKQorICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZiAodmVjdF9kdW1wLCAi PT0+IGV4YW1pbmluZyBwYXR0ZXJuIHN0YXRlbWVudDogIik7CisgICAgICAg ICAgICAgICAgICAgICAgcHJpbnRfZ2ltcGxlX3N0bXQgKHZlY3RfZHVtcCwg c3RtdCwgMCwgVERGX1NMSU0pOworICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgfQotCi0JICAgICAgaWYgKHZlY3RfcHJpbnRfZHVt cF9pbmZvIChSRVBPUlRfREVUQUlMUykpCi0JICAgICAgICBmcHJpbnRmICh2 ZWN0X2R1bXAsICJza2lwLiIpOwotCSAgICAgIGNvbnRpbnVlOworICAgICAg ICAgICAgICBlbHNlCisJICAgICAgICB7CisJICAgICAgICAgIGlmICh2ZWN0 X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJTFMpKQorCSAgICAgICAg ICAgIGZwcmludGYgKHZlY3RfZHVtcCwgInNraXAuIik7CisJICAgICAgICAg IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KIAkgICAgfQogCiAJICBp ZiAoZ2ltcGxlX2dldF9saHMgKHN0bXQpID09IE5VTExfVFJFRSkKQEAgLTgy OCwyNSArODM0LDE3IEBAIGRlc3Ryb3lfbG9vcF92ZWNfaW5mbyAobG9vcF92 ZWNfaW5mbyBsb29wX3ZpbmZvLCBiCiAKICAgICAgICAgICBpZiAoc3RtdF9p bmZvKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAvKiBDaGVjayBp ZiB0aGlzIGlzIGEgInBhdHRlcm4gc3RtdCIgKGludHJvZHVjZWQgYnkgdGhl Ci0gICAgICAgICAgICAgICAgIHZlY3Rvcml6ZXIgZHVyaW5nIHRoZSBwYXR0 ZXJuIHJlY29nbml0aW9uIHBhc3MpLiAgKi8KLSAgICAgICAgICAgICAgYm9v bCByZW1vdmVfc3RtdF9wID0gZmFsc2U7Ci0gICAgICAgICAgICAgIGdpbXBs ZSBvcmlnX3N0bXQgPSBTVE1UX1ZJTkZPX1JFTEFURURfU1RNVCAoc3RtdF9p bmZvKTsKLSAgICAgICAgICAgICAgaWYgKG9yaWdfc3RtdCkKLSAgICAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBzdG10X3ZlY19pbmZvIG9y aWdfc3RtdF9pbmZvID0gdmluZm9fZm9yX3N0bXQgKG9yaWdfc3RtdCk7Ci0g ICAgICAgICAgICAgICAgICBpZiAob3JpZ19zdG10X2luZm8KLSAgICAgICAg ICAgICAgICAgICAgICAmJiBTVE1UX1ZJTkZPX0lOX1BBVFRFUk5fUCAob3Jp Z19zdG10X2luZm8pKQotICAgICAgICAgICAgICAgICAgICByZW1vdmVfc3Rt dF9wID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg IC8qIENoZWNrIGlmIHRoaXMgc3RhdGVtZW50IGhhcyBhIHJlbGF0ZWQgInBh dHRlcm4gc3RtdCIKKyAgICAgICAgICAgICAgICAgKGludHJvZHVjZWQgYnkg dGhlIHZlY3Rvcml6ZXIgZHVyaW5nIHRoZSBwYXR0ZXJuIHJlY29nbml0aW9u CisgICAgICAgICAgICAgICAgIHBhc3MpLiAgRnJlZSBwYXR0ZXJuJ3Mgc3Rt dF92ZWNfaW5mby4gICovCisgICAgICAgICAgICAgIGlmIChTVE1UX1ZJTkZP X0lOX1BBVFRFUk5fUCAoc3RtdF9pbmZvKQorICAgICAgICAgICAgICAgICAg JiYgdmluZm9fZm9yX3N0bXQgKFNUTVRfVklORk9fUkVMQVRFRF9TVE1UIChz dG10X2luZm8pKSkKKyAgICAgICAgICAgICAgICBmcmVlX3N0bXRfdmVjX2lu Zm8gKFNUTVRfVklORk9fUkVMQVRFRF9TVE1UIChzdG10X2luZm8pKTsKIAog ICAgICAgICAgICAgICAvKiBGcmVlIHN0bXRfdmVjX2luZm8uICAqLwogICAg ICAgICAgICAgICBmcmVlX3N0bXRfdmVjX2luZm8gKHN0bXQpOworICAgICAg ICAgICAgfQogCi0gICAgICAgICAgICAgIC8qIFJlbW92ZSBkZWFkICJwYXR0 ZXJuIHN0bXRzIi4gICovCi0gICAgICAgICAgICAgIGlmIChyZW1vdmVfc3Rt dF9wKQotICAgICAgICAgICAgICAgIGdzaV9yZW1vdmUgKCZzaSwgdHJ1ZSk7 Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgZ3NpX25leHQgKCZzaSk7CiAg ICAgICAgIH0KICAgICB9CkBAIC01MTMxLDcgKzUxMjksNyBAQCB2ZWN0X3Ry YW5zZm9ybV9sb29wIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8pCiAKICAg ICAgIGZvciAoc2kgPSBnc2lfc3RhcnRfYmIgKGJiKTsgIWdzaV9lbmRfcCAo c2kpOykKIAl7Ci0JICBnaW1wbGUgc3RtdCA9IGdzaV9zdG10IChzaSk7CisJ ICBnaW1wbGUgc3RtdCA9IGdzaV9zdG10IChzaSksIHBhdHRlcm5fc3RtdDsK IAkgIGJvb2wgaXNfc3RvcmU7CiAKIAkgIGlmICh2ZWN0X3ByaW50X2R1bXBf aW5mbyAoUkVQT1JUX0RFVEFJTFMpKQpAQCAtNTE1NiwxNCArNTE1NCwyNSBA QCB2ZWN0X3RyYW5zZm9ybV9sb29wIChsb29wX3ZlY19pbmZvIGxvb3Bfdmlu Zm8pCiAKIAkgIGlmICghU1RNVF9WSU5GT19SRUxFVkFOVF9QIChzdG10X2lu Zm8pCiAJICAgICAgJiYgIVNUTVRfVklORk9fTElWRV9QIChzdG10X2luZm8p KQotCSAgICB7Ci0JICAgICAgZ3NpX25leHQgKCZzaSk7Ci0JICAgICAgY29u dGludWU7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlmIChTVE1U X1ZJTkZPX0lOX1BBVFRFUk5fUCAoc3RtdF9pbmZvKQorICAgICAgICAgICAg ICAgICAgJiYgKHBhdHRlcm5fc3RtdCA9IFNUTVRfVklORk9fUkVMQVRFRF9T VE1UIChzdG10X2luZm8pKQorICAgICAgICAgICAgICAgICAgJiYgKFNUTVRf VklORk9fUkVMRVZBTlRfUCAodmluZm9fZm9yX3N0bXQgKHBhdHRlcm5fc3Rt dCkpCisgICAgICAgICAgICAgICAgICAgICAgfHwgU1RNVF9WSU5GT19MSVZF X1AgKHZpbmZvX2Zvcl9zdG10IChwYXR0ZXJuX3N0bXQpKSkpCisgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgc3RtdCA9IHBhdHRlcm5f c3RtdDsKKyAgICAgICAgICAgICAgICAgIHN0bXRfaW5mbyA9IHZpbmZvX2Zv cl9zdG10IChzdG10KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgIGVsc2UKKwkgICAgICAgIHsKKyAgIAkgICAgICAgICAgZ3NpX25leHQg KCZzaSk7CisJICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg IH0KIAkgICAgfQogCiAJICBnY2NfYXNzZXJ0IChTVE1UX1ZJTkZPX1ZFQ1RZ UEUgKHN0bXRfaW5mbykpOwotCSAgbnVuaXRzID0KLQkgICAgKHVuc2lnbmVk IGludCkgVFlQRV9WRUNUT1JfU1VCUEFSVFMgKFNUTVRfVklORk9fVkVDVFlQ RSAoc3RtdF9pbmZvKSk7CisJICBudW5pdHMgPSAodW5zaWduZWQgaW50KSBU WVBFX1ZFQ1RPUl9TVUJQQVJUUyAoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNUTVRfVklORk9fVkVDVFlQRSAo c3RtdF9pbmZvKSk7CiAJICBpZiAoIVNUTVRfU0xQX1RZUEUgKHN0bXRfaW5m bykKIAkgICAgICAmJiBudW5pdHMgIT0gKHVuc2lnbmVkIGludCkgdmVjdG9y aXphdGlvbl9mYWN0b3IKICAgICAgICAgICAgICAgJiYgdmVjdF9wcmludF9k dW1wX2luZm8gKFJFUE9SVF9ERVRBSUxTKSkKSW5kZXg6IHRyZWUtdmVjdC1w YXR0ZXJucy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRyZWUtdmVj dC1wYXR0ZXJucy5jCShyZXZpc2lvbiAxNzUwNzMpCisrKyB0cmVlLXZlY3Qt cGF0dGVybnMuYwkod29ya2luZyBjb3B5KQpAQCAtODMxLDkgKzgzMSw5IEBA IHZlY3RfcGF0dGVybl9yZWNvZ18xICgKICAgICB9CiAKICAgLyogTWFyayB0 aGUgc3RtdHMgdGhhdCBhcmUgaW52b2x2ZWQgaW4gdGhlIHBhdHRlcm4uICov Ci0gIGdzaV9pbnNlcnRfYmVmb3JlICgmc2ksIHBhdHRlcm5fc3RtdCwgR1NJ X1NBTUVfU1RNVCk7CiAgIHNldF92aW5mb19mb3Jfc3RtdCAocGF0dGVybl9z dG10LAogCQkgICAgICBuZXdfc3RtdF92ZWNfaW5mbyAocGF0dGVybl9zdG10 LCBsb29wX3ZpbmZvLCBOVUxMKSk7CisgIGdpbXBsZV9zZXRfYmIgKHBhdHRl cm5fc3RtdCwgZ2ltcGxlX2JiIChzdG10KSk7CiAgIHBhdHRlcm5fc3RtdF9p bmZvID0gdmluZm9fZm9yX3N0bXQgKHBhdHRlcm5fc3RtdCk7CiAKICAgU1RN VF9WSU5GT19SRUxBVEVEX1NUTVQgKHBhdHRlcm5fc3RtdF9pbmZvKSA9IHN0 bXQ7CkBAIC04NTYsOCArODU2LDggQEAgdmVjdF9wYXR0ZXJuX3JlY29nXzEg KAogICAgTE9PUF9WSU5GTyAtIGEgc3RydWN0X2xvb3BfaW5mbyBvZiBhIGxv b3AgaW4gd2hpY2ggd2Ugd2FudCB0byBsb29rIGZvcgogICAgICAgICBjb21w dXRhdGlvbiBpZGlvbXMuCiAKLSAgIE91dHB1dCAtIGZvciBlYWNoIGNvbXB1 dGF0aW9uIGlkaW9tIHRoYXQgaXMgZGV0ZWN0ZWQgd2UgaW5zZXJ0IGEgbmV3 IHN0bXQKLSAgICAgICAgdGhhdCBwcm92aWRlcyB0aGUgc2FtZSBmdW5jdGlv bmFsaXR5IGFuZCB0aGF0IGNhbiBiZSB2ZWN0b3JpemVkLiBXZQorICAgT3V0 cHV0IC0gZm9yIGVhY2ggY29tcHV0YXRpb24gaWRpb20gdGhhdCBpcyBkZXRl Y3RlZCB3ZSBjcmVhdGUgYSBuZXcgc3RtdAorICAgICAgICB0aGF0IHByb3Zp ZGVzIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYW5kIHRoYXQgY2FuIGJlIHZl Y3Rvcml6ZWQuICBXZQogICAgICAgICBhbHNvIHJlY29yZCBzb21lIGluZm9y bWF0aW9uIGluIHRoZSBzdHJ1Y3Rfc3RtdF9pbmZvIG9mIHRoZSByZWxldmFu dAogICAgICAgICBzdG10cywgYXMgZXhwbGFpbmVkIGJlbG93OgogCkBAIC04 NzIsNTMgKzg3Miw0OSBAQCB2ZWN0X3BhdHRlcm5fcmVjb2dfMSAoCiAgICAg ICAgICBTNTogLi4uID0gLi51c2UoYV8wKS4uICAgICAgICAgLSAgICAgICAt ICAgICAgICAgICAgICAgLQogCiAgICBTYXkgdGhlIHNlcXVlbmNlIHtTMSxT MixTMyxTNH0gd2FzIGRldGVjdGVkIGFzIGEgcGF0dGVybiB0aGF0IGNhbiBi ZQotICAgcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgc3RtdC4gV2UgdGhlbjoK LSAgIC0gY3JlYXRlIGEgbmV3IHN0bXQgUzYgdGhhdCB3aWxsIHJlcGxhY2Ug dGhlIHBhdHRlcm4uCi0gICAtIGluc2VydCB0aGUgbmV3IHN0bXQgUzYgYmVm b3JlIHRoZSBsYXN0IHN0bXQgaW4gdGhlIHBhdHRlcm4KKyAgIHJlcHJlc2Vu dGVkIGJ5IGEgc2luZ2xlIHN0bXQuICBXZSB0aGVuOgorICAgLSBjcmVhdGUg YSBuZXcgc3RtdCBTNiBlcXVpdmFsZW50IHRvIHRoZSBwYXR0ZXJuICh0aGUg c3RtdCBpcyBub3QKKyAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY29kZSkKICAg IC0gZmlsbCBpbiB0aGUgU1RNVF9WSU5GTyBmaWVsZHMgYXMgZm9sbG93czoK IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3BhdHRl cm5fcCAgcmVsYXRlZF9zdG10ICAgIHZlY19zdG10CiAgICAgICAgICBTMTog YV9pID0gLi4uLiAgICAgICAgICAgICAgICAgLSAgICAgICAtICAgICAgICAg ICAgICAgLQogICAgICAgICAgUzI6IGFfMiA9IC4udXNlKGFfaSkuLiAgICAg ICAgIC0gICAgICAgLSAgICAgICAgICAgICAgIC0KICAgICAgICAgIFMzOiBh XzEgPSAuLnVzZShhXzIpLi4gICAgICAgICAtICAgICAgIC0gICAgICAgICAg ICAgICAtCi0gICAgICAgPiBTNjogYV9uZXcgPSAuLi4uICAgICAgICAgICAg ICAgLSAgICAgICBTNCAgICAgICAgICAgICAgLQogICAgICAgICAgUzQ6IGFf MCA9IC4udXNlKGFfMSkuLiAgICAgICAgIHRydWUgICAgUzYgICAgICAgICAg ICAgIC0KKyAgICAgICAgICAnLS0tPiBTNjogYV9uZXcgPSAuLi4uICAgICAg ICAtICAgICAgIFM0ICAgICAgICAgICAgICAtCiAgICAgICAgICBTNTogLi4u ID0gLi51c2UoYV8wKS4uICAgICAgICAgLSAgICAgICAtICAgICAgICAgICAg ICAgLQogCiAgICAodGhlIGxhc3Qgc3RtdCBpbiB0aGUgcGF0dGVybiAoUzQp IGFuZCB0aGUgbmV3IHBhdHRlcm4gc3RtdCAoUzYpIHBvaW50Ci0gICAgdG8g ZWFjaCBvdGhlciB0aHJvdWdoIHRoZSBSRUxBVEVEX1NUTVQgZmllbGQpLgor ICAgdG8gZWFjaCBvdGhlciB0aHJvdWdoIHRoZSBSRUxBVEVEX1NUTVQgZmll bGQpLgogCiAgICBTNiB3aWxsIGJlIG1hcmtlZCBhcyByZWxldmFudCBpbiB2 ZWN0X21hcmtfc3RtdHNfdG9fYmVfdmVjdG9yaXplZCBpbnN0ZWFkCiAgICBv ZiBTNCBiZWNhdXNlIGl0IHdpbGwgcmVwbGFjZSBhbGwgaXRzIHVzZXMuICBT dG10cyB7UzEsUzIsUzN9IHdpbGwKICAgIHJlbWFpbiBpcnJlbGV2YW50IHVu bGVzcyB1c2VkIGJ5IHN0bXRzIG90aGVyIHRoYW4gUzQuCiAKICAgIElmIHZl Y3Rvcml6YXRpb24gc3VjY2VlZHMsIHZlY3RfdHJhbnNmb3JtX3N0bXQgd2ls bCBza2lwIG92ZXIge1MxLFMyLFMzfQotICAgKGJlY2F1c2UgdGhleSBhcmUg bWFya2VkIGFzIGlycmVsZXZhbnQpLiBJdCB3aWxsIHZlY3Rvcml6ZSBTNiwg YW5kIHJlY29yZAorICAgKGJlY2F1c2UgdGhleSBhcmUgbWFya2VkIGFzIGly cmVsZXZhbnQpLiAgSXQgd2lsbCB2ZWN0b3JpemUgUzYsIGFuZCByZWNvcmQK ICAgIGEgcG9pbnRlciB0byB0aGUgbmV3IHZlY3RvciBzdG10IFZTNiBib3Ro IGZyb20gUzYgKGFzIHVzdWFsKSwgYW5kIGFsc28KLSAgIGZyb20gUzQuIFdl IGRvIHRoYXQgc28gdGhhdCB3aGVuIHdlIGdldCB0byB2ZWN0b3JpemluZyBz dG10cyB0aGF0IHVzZSB0aGUKKyAgIGZyb20gUzQuICBXZSBkbyB0aGF0IHNv IHRoYXQgd2hlbiB3ZSBnZXQgdG8gdmVjdG9yaXppbmcgc3RtdHMgdGhhdCB1 c2UgdGhlCiAgICBkZWYgb2YgUzQgKGxpa2UgUzUgdGhhdCB1c2VzIGFfMCks IHdlJ2xsIGtub3cgd2hlcmUgdG8gdGFrZSB0aGUgcmVsZXZhbnQKLSAgIHZl Y3Rvci1kZWYgZnJvbS4gUzQgd2lsbCBiZSBza2lwcGVkLCBhbmQgUzUgd2ls bCBiZSB2ZWN0b3JpemVkIGFzIHVzdWFsOgorICAgdmVjdG9yLWRlZiBmcm9t LiAgUzQgd2lsbCBiZSBza2lwcGVkLCBhbmQgUzUgd2lsbCBiZSB2ZWN0b3Jp emVkIGFzIHVzdWFsOgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5fcGF0dGVybl9wICByZWxhdGVkX3N0bXQgICAgdmVjX3N0bXQK ICAgICAgICAgIFMxOiBhX2kgPSAuLi4uICAgICAgICAgICAgICAgICAtICAg ICAgIC0gICAgICAgICAgICAgICAtCiAgICAgICAgICBTMjogYV8yID0gLi51 c2UoYV9pKS4uICAgICAgICAgLSAgICAgICAtICAgICAgICAgICAgICAgLQog ICAgICAgICAgUzM6IGFfMSA9IC4udXNlKGFfMikuLiAgICAgICAgIC0gICAg ICAgLSAgICAgICAgICAgICAgIC0KICAgICAgICA+IFZTNjogdmFfbmV3ID0g Li4uLiAgICAgICAgICAgICAtICAgICAgIC0gICAgICAgICAgICAgICAtCi0g ICAgICAgICBTNjogYV9uZXcgPSAuLi4uICAgICAgICAgICAgICAgLSAgICAg ICBTNCAgICAgICAgICAgICAgVlM2CiAgICAgICAgICBTNDogYV8wID0gLi51 c2UoYV8xKS4uICAgICAgICAgdHJ1ZSAgICBTNiAgICAgICAgICAgICAgVlM2 CisgICAgICAgICAgJy0tLT4gUzY6IGFfbmV3ID0gLi4uLiAgICAgICAgLSAg ICAgICBTNCAgICAgICAgICAgICAgVlM2CiAgICAgICAgPiBWUzU6IC4uLiA9 IC4udnVzZSh2YV9uZXcpLi4gICAgLSAgICAgICAtICAgICAgICAgICAgICAg LQogICAgICAgICAgUzU6IC4uLiA9IC4udXNlKGFfMCkuLiAgICAgICAgIC0g ICAgICAgLSAgICAgICAgICAgICAgIC0KIAotICAgRENFIGNvdWxkIHRoZW4g Z2V0IHJpZCBvZiB7UzEsUzIsUzMsUzQsUzUsUzZ9IChpZiB0aGVpciBkZWZz IGFyZSBub3QgdXNlZAorICAgRENFIGNvdWxkIHRoZW4gZ2V0IHJpZCBvZiB7 UzEsUzIsUzMsUzQsUzV9IChpZiB0aGVpciBkZWZzIGFyZSBub3QgdXNlZAog ICAgZWxzZXdoZXJlKSwgYW5kIHdlJ2xsIGVuZCB1cCB3aXRoOgogCiAgICAg ICAgIFZTNjogdmFfbmV3ID0gLi4uLgotICAgICAgICBWUzU6IC4uLiA9IC4u dnVzZSh2YV9uZXcpLi4KKyAgICAgICAgVlM1OiAuLi4gPSAuLnZ1c2UodmFf bmV3KS4uICAqLwogCi0gICBJZiB2ZWN0b3JpemF0aW9uIGRvZXMgbm90IHN1 Y2NlZWQsIERDRSB3aWxsIGNsZWFuIFM2IGF3YXkgKGl0cyBkZWYgaXMKLSAg IG5vdCB1c2VkKSwgYW5kIHdlJ2xsIGVuZCB1cCB3aXRoIHRoZSBvcmlnaW5h bCBzZXF1ZW5jZS4KLSovCi0KIHZvaWQKIHZlY3RfcGF0dGVybl9yZWNvZyAo bG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvKQogewpJbmRleDogdHJlZS12ZWN0 LXN0bXRzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJlZS12ZWN0 LXN0bXRzLmMJKHJldmlzaW9uIDE3NTA3MykKKysrIHRyZWUtdmVjdC1zdG10 cy5jCSh3b3JraW5nIGNvcHkpCkBAIC02MDUsMTUgKzYwNSw0OSBAQCB2ZWN0 X21hcmtfc3RtdHNfdG9fYmVfdmVjdG9yaXplZCAobG9vcF92ZWNfaW5mbyBs bwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgRk9S X0VBQ0hfUEhJX09SX1NUTVRfVVNFICh1c2VfcCwgc3RtdCwgaXRlciwgU1NB X09QX1VTRSkKLQl7Ci0JICB0cmVlIG9wID0gVVNFX0ZST01fUFRSICh1c2Vf cCk7Ci0JICBpZiAoIXByb2Nlc3NfdXNlIChzdG10LCBvcCwgbG9vcF92aW5m bywgbGl2ZV9wLCByZWxldmFudCwgJndvcmtsaXN0KSkKLQkgICAgewotCSAg ICAgIFZFQ19mcmVlIChnaW1wbGUsIGhlYXAsIHdvcmtsaXN0KTsKLQkgICAg ICByZXR1cm4gZmFsc2U7Ci0JICAgIH0KLQl9CisgICAgICBpZiAoaXNfcGF0 dGVybl9zdG10X3AgKHZpbmZvX2Zvcl9zdG10IChzdG10KSkpCisgICAgICAg IHsKKyAgICAgICAgICAvKiBQYXR0ZXJuIHN0YXRlbWVudHMgYXJlIG5vdCBp bnNlcnRlZCBpbnRvIHRoZSBjb2RlLCBzbworICAgICAgICAgICAgIEZPUl9F QUNIX1BISV9PUl9TVE1UX1VTRSBvcHRpbWl6ZXMgdGhlaXIgb3BlcmFuZHMg b3V0LCBhbmQgd2UKKyAgICAgICAgICAgICBoYXZlIHRvIHNjYW4gdGhlIFJI UyBvciBmdW5jdGlvbiBhcmd1bWVudHMgaW5zdGVhZC4gICovCisgICAgICAg ICAgaWYgKGlzX2dpbXBsZV9hc3NpZ24gKHN0bXQpKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgZ2ltcGxlX251bV9v cHMgKHN0bXQpOyBpKyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgdHJlZSBvcCA9IGdpbXBsZV9vcCAoc3RtdCwgaSk7CisgICAg ICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NfdXNlIChzdG10LCBvcCwgbG9v cF92aW5mbywgbGl2ZV9wLCByZWxldmFudCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZ3b3JrbGlzdCkpCisgICAgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBWRUNfZnJlZSAoZ2lt cGxlLCBoZWFwLCB3b3JrbGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlm IChpc19naW1wbGVfY2FsbCAoc3RtdCkpCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBnaW1wbGVfY2FsbF9udW1fYXJn cyAoc3RtdCk7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICB0cmVlIGFyZyA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgaSk7 CisgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NfdXNlIChzdG10LCBh cmcsIGxvb3BfdmluZm8sIGxpdmVfcCwgcmVsZXZhbnQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmd29ya2xpc3QpKQorICAgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgVkVDX2Zy ZWUgKGdpbXBsZSwgaGVhcCwgd29ya2xpc3QpOworICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgICAgZWxzZQorICAgICAgICBGT1JfRUFDSF9QSElfT1JfU1RNVF9VU0Ug KHVzZV9wLCBzdG10LCBpdGVyLCBTU0FfT1BfVVNFKQorICAgICAgICAgIHsK KyAgICAgICAgICAgIHRyZWUgb3AgPSBVU0VfRlJPTV9QVFIgKHVzZV9wKTsK KyAgICAgICAgICAgIGlmICghcHJvY2Vzc191c2UgKHN0bXQsIG9wLCBsb29w X3ZpbmZvLCBsaXZlX3AsIHJlbGV2YW50LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJndvcmtsaXN0KSkKKyAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIFZFQ19mcmVlIChnaW1wbGUsIGhlYXAsIHdvcmtsaXN0 KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICB9CiAgICAgfSAvKiB3aGlsZSB3b3JrbGlzdCAq LwogCiAgIFZFQ19mcmVlIChnaW1wbGUsIGhlYXAsIHdvcmtsaXN0KTsKQEAg LTE0MDYsNiArMTQ0MCw3IEBAIHZlY3Rvcml6YWJsZV9jYWxsIChnaW1wbGUg c3RtdCwgZ2ltcGxlX3N0bXRfaXRlcmF0CiAgIFZFQyh0cmVlLCBoZWFwKSAq dmFyZ3MgPSBOVUxMOwogICBlbnVtIHsgTkFSUk9XLCBOT05FLCBXSURFTiB9 IG1vZGlmaWVyOwogICBzaXplX3QgaSwgbmFyZ3M7CisgIHRyZWUgbGhzOwog CiAgIC8qIEZPUk5PVzogdW5zdXBwb3J0ZWQgaW4gYmFzaWMgYmxvY2sgU0xQ LiAgKi8KICAgZ2NjX2Fzc2VydCAobG9vcF92aW5mbyk7CkBAIC0xNTQzLDcg KzE1NzgsNyBAQCB2ZWN0b3JpemFibGVfY2FsbCAoZ2ltcGxlIHN0bXQsIGdp bXBsZV9zdG10X2l0ZXJhdAogICAvKiogVHJhbnNmb3JtLiAgKiovCiAKICAg aWYgKHZlY3RfcHJpbnRfZHVtcF9pbmZvIChSRVBPUlRfREVUQUlMUykpCi0g ICAgZnByaW50ZiAodmVjdF9kdW1wLCAidHJhbnNmb3JtIG9wZXJhdGlvbi4i KTsKKyAgICBmcHJpbnRmICh2ZWN0X2R1bXAsICJ0cmFuc2Zvcm0gY2FsbC4i KTsKIAogICAvKiBIYW5kbGUgZGVmLiAgKi8KICAgc2NhbGFyX2Rlc3QgPSBn aW1wbGVfY2FsbF9saHMgKHN0bXQpOwpAQCAtMTY2Miw4ICsxNjk3LDExIEBA IHZlY3Rvcml6YWJsZV9jYWxsIChnaW1wbGUgc3RtdCwgZ2ltcGxlX3N0bXRf aXRlcmF0CiAgICAgIHJocyBvZiB0aGUgc3RhdGVtZW50IHdpdGggc29tZXRo aW5nIGhhcm1sZXNzLiAgKi8KIAogICB0eXBlID0gVFJFRV9UWVBFIChzY2Fs YXJfZGVzdCk7Ci0gIG5ld19zdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAo Z2ltcGxlX2NhbGxfbGhzIChzdG10KSwKLQkJCQkgIGJ1aWxkX3plcm9fY3N0 ICh0eXBlKSk7CisgIGlmIChpc19wYXR0ZXJuX3N0bXRfcCAoc3RtdF9pbmZv KSkKKyAgICBsaHMgPSBnaW1wbGVfY2FsbF9saHMgKFNUTVRfVklORk9fUkVM QVRFRF9TVE1UIChzdG10X2luZm8pKTsKKyAgZWxzZQorICAgIGxocyA9IGdp bXBsZV9jYWxsX2xocyAoc3RtdCk7CisgIG5ld19zdG10ID0gZ2ltcGxlX2J1 aWxkX2Fzc2lnbiAobGhzLCBidWlsZF96ZXJvX2NzdCAodHlwZSkpOwogICBz ZXRfdmluZm9fZm9yX3N0bXQgKG5ld19zdG10LCBzdG10X2luZm8pOwogICBz ZXRfdmluZm9fZm9yX3N0bXQgKHN0bXQsIE5VTEwpOwogICBTVE1UX1ZJTkZP X1NUTVQgKHN0bXRfaW5mbykgPSBuZXdfc3RtdDsKQEAgLTQ4NDYsMTAgKzQ4 ODQsMjYgQEAgdmVjdF9hbmFseXplX3N0bXQgKGdpbXBsZSBzdG10LCBib29s ICpuZWVkX3RvX3ZlY3QKICAgaWYgKCFTVE1UX1ZJTkZPX1JFTEVWQU5UX1Ag KHN0bXRfaW5mbykKICAgICAgICYmICFTVE1UX1ZJTkZPX0xJVkVfUCAoc3Rt dF9pbmZvKSkKICAgICB7Ci0gICAgICBpZiAodmVjdF9wcmludF9kdW1wX2lu Zm8gKFJFUE9SVF9ERVRBSUxTKSkKLSAgICAgICAgZnByaW50ZiAodmVjdF9k dW1wLCAiaXJyZWxldmFudC4iKTsKKyAgICAgIGdpbXBsZSBwYXR0ZXJuX3N0 bXQgPSBTVE1UX1ZJTkZPX1JFTEFURURfU1RNVCAoc3RtdF9pbmZvKTsKKyAg ICAgIGlmIChTVE1UX1ZJTkZPX0lOX1BBVFRFUk5fUCAoc3RtdF9pbmZvKQor ICAgICAgICAgICYmIChTVE1UX1ZJTkZPX1JFTEVWQU5UX1AgKHZpbmZvX2Zv cl9zdG10IChwYXR0ZXJuX3N0bXQpKQorICAgICAgICAgICAgICB8fCBTVE1U X1ZJTkZPX0xJVkVfUCAodmluZm9fZm9yX3N0bXQgKHBhdHRlcm5fc3RtdCkp KSkKKyAgICAgICAgeworICAgICAgICAgIHN0bXQgPSBwYXR0ZXJuX3N0bXQ7 CisgICAgICAgICAgc3RtdF9pbmZvID0gdmluZm9fZm9yX3N0bXQgKHBhdHRl cm5fc3RtdCk7CisgICAgICAgICAgaWYgKHZlY3RfcHJpbnRfZHVtcF9pbmZv IChSRVBPUlRfREVUQUlMUykpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIGZwcmludGYgKHZlY3RfZHVtcCwgIj09PiBleGFtaW5pbmcgcGF0dGVy biBzdGF0ZW1lbnQ6ICIpOworICAgICAgICAgICAgICBwcmludF9naW1wbGVf c3RtdCAodmVjdF9kdW1wLCBzdG10LCAwLCBUREZfU0xJTSk7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAg ICAgICAgIGlmICh2ZWN0X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJ TFMpKQorICAgICAgICAgICAgZnByaW50ZiAodmVjdF9kdW1wLCAiaXJyZWxl dmFudC4iKTsKIAotICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAKICAgc3dpdGNoIChTVE1U X1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pKQpJbmRleDogdHJlZS12ZWN0 LXNscC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRyZWUtdmVjdC1z bHAuYwkocmV2aXNpb24gMTc1MDczKQorKysgdHJlZS12ZWN0LXNscC5jCSh3 b3JraW5nIGNvcHkpCkBAIC0yNTQ2LDYgKzI1NDYsOCBAQCB2ZWN0X3NjaGVk dWxlX3NscF9pbnN0YW5jZSAoc2xwX3RyZWUgbm9kZSwgc2xwX2lucwogICAg ICAgJiYgU1RNVF9WSU5GT19TVFJJREVEX0FDQ0VTUyAoc3RtdF9pbmZvKQog ICAgICAgJiYgIVJFRkVSRU5DRV9DTEFTU19QIChnaW1wbGVfZ2V0X2xocyAo c3RtdCkpKQogICAgIHNpID0gZ3NpX2Zvcl9zdG10IChTTFBfSU5TVEFOQ0Vf RklSU1RfTE9BRF9TVE1UIChpbnN0YW5jZSkpOworICBlbHNlIGlmIChpc19w YXR0ZXJuX3N0bXRfcCAoc3RtdF9pbmZvKSkKKyAgICAgc2kgPSBnc2lfZm9y X3N0bXQgKFNUTVRfVklORk9fUkVMQVRFRF9TVE1UIChzdG10X2luZm8pKTsK ICAgZWxzZQogICAgIHNpID0gZ3NpX2Zvcl9zdG10IChzdG10KTsKIAo= --001636ed6783e39bee04a5ba4ac6--