From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) by sourceware.org (Postfix) with ESMTPS id B8D1A385E45C; Sat, 30 Mar 2024 09:06:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B8D1A385E45C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B8D1A385E45C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::636 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711789683; cv=none; b=QPn5wlur+s1wzfwX4OoUnR6vPYT5GonOeSmMMeFmTNv55331XxFnY3o6ApwCEpz2RGYuKYDE9D5kO4xu46h0MDuF9Imx+uMtGrJPRX9WMIuONmdxBNx38/40SCtWGkntWtCFFvz+SnErBg+jqcJc8ipqd3X0gMsJzUXCvDcL6to= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711789683; c=relaxed/simple; bh=q7pEsZq78KEUHmUd1QotIWzQYptvI8xmVRNRe22zcVc=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=aHK56jA3vqZi4fe9O330CoH7Ts7y1VR47wts0sUJCLKHAjAHJ7vROUlNUjNa7yrRpwzsHei+VFp1nl4chNrZJxy6d0nS4++FR9M3jZXA/jtYxzq6kByS5VzJbFkGswtw6pNRjBQDAyBBIIVuDYk7oBXxTf0D5EqvhHlWZ1DNy8k= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-1de0f92e649so18828465ad.0; Sat, 30 Mar 2024 02:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711789614; x=1712394414; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=esQkKh4ZNOwn7FhdS8biRoeN86C8wmgwp3o2Idh5Q6U=; b=WREFrKELCqp9HX7jGeywLDpHm4wUZFEPnoiSC063GSbDAvmMhKuwrHS/rrbu+LoucP pqPzwcnYUx1uRQKoqSgmnyzCcwJ205GO8G3YG8SIfiNXk64F71qNnV1JPJCS5iIv/64b XnQFBM1MRjrBoxJ0dsSjq4eMHS+G6E0KOTS18VgKOOwrVHt93+r2P2Kw5rfiglj6e4r0 1QZPxm+T2C2DbOfBjarUkslZMAH+dD8Xixoqr3uxkK5mOZOhWI5tWHmNO6Gross0pEuX EG8X4UQbuIf+yO2Y+C6LntDX9PB7gWZ2N3eaIrgCIuNlP3TC82tDdRw3Rl7hcPHs/fw4 v0ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711789614; x=1712394414; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=esQkKh4ZNOwn7FhdS8biRoeN86C8wmgwp3o2Idh5Q6U=; b=EZZdiZAds+BgJZIUGNg/O6dpe9KwRXJ2r+01L50yWLV+CH1C6ddwzr2/cGF6Wu18eG z8zQA9Ax3vpfiKjNFwDIgRWm8aLVFirb9cqfcymRcVwGOxH1IkmITnhI9AqCe5+I/lJe Yw2UF7gcXdjrZ57I7icwcm9WJZ2X0/xY0A/1HQbs4PjA4lLC7fWlV9wmWN/0Y2I71G+U 6szKiXpC+ziMWhvXOnOHaghdo+Wv8y3l64B8+7GEjVFM7OWQggOJ8Y++30afIaD6FTmF 0Ssvi7sLc8GOelEcRYVeBTdFNaHFVqp4qnpcBrzIwB5nuOanOZhAgE2tC9jsmCEr6w57 o7MA== X-Forwarded-Encrypted: i=1; AJvYcCX3fqq0ZSnKMnoEVDmJ+DSydp/+flgMGyTWX3UiIkx0reluiqUh2oz/nhFFChzHKwH/PHQZWF9yR1j8WWonxgZqXGg9ZlZcQA== X-Gm-Message-State: AOJu0Yzgj9BfDXe0/4Cx18Kr8HMm67sNGwc2IrzOq2b+7tZR6xd+rjIU MSjxVTV99hsiVIL+nn9KSIYrtG+jWCr+RStSpl/kK+FAJHhAiKu9Bg1Yjs12FxbMkBvGTtGoYpw sEkrUx4O8564CsZdB5LxbSLxRnmYepKZiULE= X-Google-Smtp-Source: AGHT+IFK2532+bj3ieLMppXYr0vH/HlxWJKE4dA2lBBpGmaswEKOQN9eUmPjRQZSq+45ODe7GwriwO1AvRXi6T8iIRQ= X-Received: by 2002:a17:903:1206:b0:1de:ff9f:aee9 with SMTP id l6-20020a170903120600b001deff9faee9mr5644204plh.11.1711789614247; Sat, 30 Mar 2024 02:06:54 -0700 (PDT) MIME-Version: 1.0 From: Paul Richard Thomas Date: Sat, 30 Mar 2024 09:06:42 +0000 Message-ID: Subject: [Patch, fortran] PR112407 - [13/14 Regression] Fix for PR37336 triggers an ICE in gfc_format_decoder while constructing a vtab To: "fortran@gcc.gnu.org" , gcc-patches Cc: trnka@scm.com Content-Type: multipart/mixed; boundary="000000000000e351a40614dd1373" X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: --000000000000e351a40614dd1373 Content-Type: multipart/alternative; boundary="000000000000e351a30614dd1371" --000000000000e351a30614dd1371 Content-Type: text/plain; charset="UTF-8" Hi All, This bug emerged in a large code and involves possible recursion with a "hidden" module procedure; ie. where the symtree name starts with '@'. This throws the format decoder. As the last message in the PR shows, I have vacillated between silently passing on the possible recursion or adding an alternative warning message. In the end, as a conservative choice I went for emitting the message. In the course of trying to develop a compact test case, I found that type bound procedures were not being tested for recursion and that class dummies, with intent out, were being incorrectly initialized with an empty default initializer. Both of these have been fixed. Unfortunately, the most compact reproducer that Tomas was able to come up with required more than 100kbytes of module files. I tried from the bottom up but failed. Both the tests check the fixes for the other bugs. Regtests on x86_64 - OK for mainline and, in a couple of weeks, 13-branch? Paul Fortran: Fix wrong recursive errors and class initialization [PR112407] 2024-03-30 Paul Thomas gcc/fortran PR fortran/112407 *resolve.cc (resolve_procedure_expression): Change the test for for recursion in the case of hidden procedures from modules. (resolve_typebound_static): Add warning for possible recursive calls to typebound procedures. * trans-expr.cc (gfc_trans_class_init_assign): Do not apply default initializer to class dummy where component initializers are all null. gcc/testsuite/ PR fortran/112407 * gfortran.dg/pr112407a.f90: New test. * gfortran.dg/pr112407b.f90: New test. --000000000000e351a30614dd1371-- --000000000000e351a40614dd1373 Content-Type: text/x-patch; charset="US-ASCII"; name="submit.diff" Content-Disposition: attachment; filename="submit.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ludvbnpd0 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3Jlc29sdmUuY2MgYi9nY2MvZm9y dHJhbi9yZXNvbHZlLmNjCmluZGV4IDUwZDUxYjA2YzkyLi40MzMxNWE2YTU1 MCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYworKysgYi9n Y2MvZm9ydHJhbi9yZXNvbHZlLmNjCkBAIC0xOTYzLDEyICsxOTYzLDIwIEBA IHJlc29sdmVfcHJvY2VkdXJlX2V4cHJlc3Npb24gKGdmY19leHByKiBleHBy KQogICAgICAgfHwgKHN5bS0+YXR0ci5mdW5jdGlvbiAmJiBzeW0tPnJlc3Vs dCA9PSBzeW0pKQogICAgIHJldHVybiB0cnVlOwogCi0gIC8qIEEgbm9uLVJF Q1VSU0lWRSBwcm9jZWR1cmUgdGhhdCBpcyB1c2VkIGFzIHByb2NlZHVyZSBl eHByZXNzaW9uIHdpdGhpbiBpdHMKKyAgIC8qIEEgbm9uLVJFQ1VSU0lWRSBw cm9jZWR1cmUgdGhhdCBpcyB1c2VkIGFzIHByb2NlZHVyZSBleHByZXNzaW9u IHdpdGhpbiBpdHMKICAgICAgb3duIGJvZHkgaXMgaW4gZGFuZ2VyIG9mIGJl aW5nIGNhbGxlZCByZWN1cnNpdmVseS4gICovCiAgIGlmIChpc19pbGxlZ2Fs X3JlY3Vyc2lvbiAoc3ltLCBnZmNfY3VycmVudF9ucykpCi0gICAgZ2ZjX3dh cm5pbmcgKDAsICJOb24tUkVDVVJTSVZFIHByb2NlZHVyZSAlcXMgYXQgJUwg aXMgcG9zc2libHkgY2FsbGluZyIKLQkJICIgaXRzZWxmIHJlY3Vyc2l2ZWx5 LiAgRGVjbGFyZSBpdCBSRUNVUlNJVkUgb3IgdXNlIgotCQkgIiAlPC1mcmVj dXJzaXZlJT4iLCBzeW0tPm5hbWUsICZleHByLT53aGVyZSk7CisgICAgewor ICAgICAgaWYgKHN5bS0+YXR0ci51c2VfYXNzb2MgJiYgZXhwci0+c3ltdHJl ZS0+bmFtZVswXSA9PSAnQCcpCisJZ2ZjX3dhcm5pbmcgKDAsICJOb24tUkVD VVJTSVZFIHByb2NlZHVyZSAlcXMgZnJvbSBtb2R1bGUgJXFzIGlzICIKKwkJ ICAgICAiIHBvc3NpYmx5IGNhbGxpbmcgaXRzZWxmIHJlY3Vyc2l2ZWx5IGlu IHByb2NlZHVyZSAlcXMuICIKKwkJICAgICAiIERlY2xhcmUgaXQgUkVDVVJT SVZFIG9yIHVzZSAlPC1mcmVjdXJzaXZlJT4iLAorCQkgICAgIHN5bS0+bmFt ZSwgc3ltLT5tb2R1bGUsIGdmY19jdXJyZW50X25zLT5wcm9jX25hbWUtPm5h bWUpOworICAgICAgZWxzZQorCWdmY193YXJuaW5nICgwLCAiTm9uLVJFQ1VS U0lWRSBwcm9jZWR1cmUgJXFzIGF0ICVMIGlzIHBvc3NpYmx5IGNhbGxpbmci CisJCSAgICAgIiBpdHNlbGYgcmVjdXJzaXZlbHkuICBEZWNsYXJlIGl0IFJF Q1VSU0lWRSBvciB1c2UiCisJCSAgICAgIiAlPC1mcmVjdXJzaXZlJT4iLCBz eW0tPm5hbWUsICZleHByLT53aGVyZSk7CisgICAgfQogCiAgIHJldHVybiB0 cnVlOwogfQpAQCAtNjgyMCw2ICs2ODI4LDEzIEBAIHJlc29sdmVfdHlwZWJv dW5kX3N0YXRpYyAoZ2ZjX2V4cHIqIGUsIGdmY19zeW10cmVlKiogdGFyZ2V0 LAogICAgICAgaWYgKHN0KQogCSp0YXJnZXQgPSBzdDsKICAgICB9CisKKyAg aWYgKGlzX2lsbGVnYWxfcmVjdXJzaW9uICgoKnRhcmdldCktPm4uc3ltLCBn ZmNfY3VycmVudF9ucykKKyAgICAgICYmICFlLT52YWx1ZS5jb21wY2FsbC50 YnAtPmRlZmVycmVkKQorICAgIGdmY193YXJuaW5nICgwLCAiTm9uLVJFQ1VS U0lWRSBwcm9jZWR1cmUgJXFzIGF0ICVMIGlzIHBvc3NpYmx5IGNhbGxpbmci CisJCSAiIGl0c2VsZiByZWN1cnNpdmVseS4gIERlY2xhcmUgaXQgUkVDVVJT SVZFIG9yIHVzZSIKKwkJICIgJTwtZnJlY3Vyc2l2ZSU+IiwgKCp0YXJnZXQp LT5uLnN5bS0+bmFtZSwgJmUtPndoZXJlKTsKKwogICByZXR1cm4gdHJ1ZTsK IH0KIApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jYyBi L2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuY2MKaW5kZXggNzZiZWQ5ODMwYzQu LjNiNTQ4NzRjZjFmIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1l eHByLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuY2MKQEAgLTE3 MTksNiArMTcxOSw3IEBAIGdmY190cmFuc19jbGFzc19pbml0X2Fzc2lnbiAo Z2ZjX2NvZGUgKmNvZGUpCiAgIHRyZWUgdG1wOwogICBnZmNfc2UgZHN0LHNy YyxtZW1zejsKICAgZ2ZjX2V4cHIgKmxocywgKnJocywgKnN6OworICBnZmNf Y29tcG9uZW50ICpjbXA7CiAKICAgZ2ZjX3N0YXJ0X2Jsb2NrICgmYmxvY2sp OwogCkBAIC0xNzM1LDYgKzE3MzYsMjEgQEAgZ2ZjX3RyYW5zX2NsYXNzX2lu aXRfYXNzaWduIChnZmNfY29kZSAqY29kZSkKICAgLyogVGhlIF9kZWZfaW5p dCBpcyBhbHdheXMgc2NhbGFyLiAgKi8KICAgcmhzLT5yYW5rID0gMDsKIAor ICAvKiBDaGVjayBkZWZfaW5pdCBmb3IgaW5pdGlhbGl6ZXJzLiAgSWYgdGhp cyBpcyBhIGR1bW15IHdpdGggYWxsIGRlZmF1bHQKKyAgICAgaW5pdGlhbGl6 ZXIgY29tcG9uZW50cyBOVUxMLCByZXR1cm4gTlVMTF9UUkVFIGFuZCB1c2Ug dGhlIHBhc3NlZCB2YWx1ZSBhcworICAgICByZXF1aXJlZCBieSBGMjAxOCg4 LjUuMTApLiAgKi8KKyAgaWYgKCFsaHMtPnJlZiAmJiBsaHMtPnN5bXRyZWUt Pm4uc3ltLT5hdHRyLmR1bW15KQorICAgIHsKKyAgICAgIGNtcCA9IHJocy0+ cmVmLT5uZXh0LT51LmMuY29tcG9uZW50LT50cy51LmRlcml2ZWQtPmNvbXBv bmVudHM7CisgICAgICBmb3IgKDsgY21wOyBjbXAgPSBjbXAtPm5leHQpCisJ eworCSAgaWYgKGNtcC0+aW5pdGlhbGl6ZXIpCisJICAgIGJyZWFrOworCSAg ZWxzZSBpZiAoIWNtcC0+bmV4dCkKKwkgICAgcmV0dXJuIGJ1aWxkX2VtcHR5 X3N0bXQgKGlucHV0X2xvY2F0aW9uKTsKKwl9CisgICAgfQorCiAgIGlmIChj b2RlLT5leHByMS0+dHMudHlwZSA9PSBCVF9DTEFTUwogICAgICAgJiYgQ0xB U1NfREFUQSAoY29kZS0+ZXhwcjEpLT5hdHRyLmRpbWVuc2lvbikKICAgICB7 CkBAIC0xMjUxMSwxMSArMTI1MjcsMTQgQEAgZ2ZjX3RyYW5zX2Fzc2lnbm1l bnRfMSAoZ2ZjX2V4cHIgKiBleHByMSwgZ2ZjX2V4cHIgKiBleHByMiwgYm9v bCBpbml0X2ZsYWcsCiAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZib2R5 LCAmbHNlLnByZSk7CiAgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJmJvZHks IHRtcCk7CiAKLSAgLyogQWRkIHRoZSBwb3N0IGJsb2NrcyB0byB0aGUgYm9k eS4gICovCi0gIGlmICghbF9pc190ZW1wKQorICAvKiBBZGQgdGhlIHBvc3Qg YmxvY2tzIHRvIHRoZSBib2R5LiAgU2NhbGFyIGZpbmFsaXphdGlvbiBtdXN0 IGFwcGVhciBiZWZvcmUKKyAgICAgdGhlIHBvc3QgYmxvY2sgaW4gY2FzZSBh bnkgZGVsbG9jYXRpb25zIGFyZSBkb25lLiAgKi8KKyAgaWYgKHJzZS5maW5h bGJsb2NrLmhlYWQKKyAgICAgICYmICghbF9pc190ZW1wIHx8IChleHByMi0+ ZXhwcl90eXBlID09IEVYUFJfRlVOQ1RJT04KKwkJCSAmJiBnZmNfZXhwcl9h dHRyIChleHByMikuZWxlbWVudGFsKSkpCiAgICAgewotICAgICAgZ2ZjX2Fk ZF9ibG9ja190b19ibG9jayAoJnJzZS5maW5hbGJsb2NrLCAmcnNlLnBvc3Qp OwogICAgICAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoJmJvZHksICZyc2Uu ZmluYWxibG9jayk7CisgICAgICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrICgm Ym9keSwgJnJzZS5wb3N0KTsKICAgICB9CiAgIGVsc2UKICAgICBnZmNfYWRk X2Jsb2NrX3RvX2Jsb2NrICgmYm9keSwgJnJzZS5wb3N0KTsKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL3RyYW5zLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMu Y2MKaW5kZXggN2Y1MGIxNmFlZTkuLmJhZGFkNmFlODkyIDEwMDY0NAotLS0g YS9nY2MvZm9ydHJhbi90cmFucy5jYworKysgYi9nY2MvZm9ydHJhbi90cmFu cy5jYwpAQCAtMTYyNCw3ICsxNjI0LDcgQEAgZ2ZjX2ZpbmFsaXplX3RyZWVf ZXhwciAoZ2ZjX3NlICpzZSwgZ2ZjX3N5bWJvbCAqZGVyaXZlZCwKICAgICB9 CiAgIGVsc2UgaWYgKGRlcml2ZWQgJiYgZ2ZjX2lzX2ZpbmFsaXphYmxlIChk ZXJpdmVkLCBOVUxMKSkKICAgICB7Ci0gICAgICBpZiAoZGVyaXZlZC0+YXR0 ci56ZXJvX2NvbXAgJiYgIXJhbmspCisgICAgICBpZiAoIWRlcml2ZWQtPmNv bXBvbmVudHMgJiYgKCFyYW5rIHx8IGF0dHIuZWxlbWVudGFsKSkKIAl7CiAJ ICAvKiBBbnkgYXR0ZW1wdCB0byBhc3NpZ24gemVybyBsZW5ndGggZW50aXRp ZXMsIGNhdXNlcyB0aGUgZ2ltcGxpZmllcgogCSAgICAgYWxsIG1hbm5lciBv ZiBwcm9ibGVtcy4gSW5zdGVhZCwgYSB2YXJpYWJsZSBpcyBjcmVhdGVkIHRv IGFjdCBhcwpAQCAtMTY3NSw3ICsxNjc1LDcgQEAgZ2ZjX2ZpbmFsaXplX3Ry ZWVfZXhwciAoZ2ZjX3NlICpzZSwgZ2ZjX3N5bWJvbCAqZGVyaXZlZCwKIAkJ CQkJICAgICAgZmluYWxfZm5kZWNsKTsKICAgaWYgKCFHRkNfREVTQ1JJUFRP Ul9UWVBFX1AgKFRSRUVfVFlQRSAoZGVzYykpKQogICAgIHsKLSAgICAgIGlm IChpc19jbGFzcykKKyAgICAgIGlmIChpc19jbGFzcyB8fCBhdHRyLmVsZW1l bnRhbCkKIAlkZXNjID0gZ2ZjX2NvbnZfc2NhbGFyX3RvX2Rlc2NyaXB0b3Ig KHNlLCBkZXNjLCBhdHRyKTsKICAgICAgIGVsc2UKIAl7CkBAIC0xNjg1LDcg KzE2ODUsNyBAQCBnZmNfZmluYWxpemVfdHJlZV9leHByIChnZmNfc2UgKnNl LCBnZmNfc3ltYm9sICpkZXJpdmVkLAogCX0KICAgICB9CiAKLSAgaWYgKGRl cml2ZWQgJiYgZGVyaXZlZC0+YXR0ci56ZXJvX2NvbXApCisgIGlmIChkZXJp dmVkICYmICFkZXJpdmVkLT5jb21wb25lbnRzKQogICAgIHsKICAgICAgIC8q IEFsbCB0aGUgY29uZGl0aW9ucyBiZWxvdyBicmVhayBkb3duIGZvciB6ZXJv IGxlbmd0aCBkZXJpdmVkIHR5cGVzLiAgKi8KICAgICAgIHRtcCA9IGJ1aWxk X2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCBmaW5hbF9mbmRlY2ws IDMsCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Zp bmFsaXplXzU0LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZmlu YWxpemVfNTQuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi43M2QzMmIxYjMzMwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZmluYWxpemVfNTQuZjkwCkBAIC0wLDAg KzEsNDcgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgVGVzdCB0aGUgZml4 IGZvciBQUjExMzg4NSwgd2hlcmUgbm90IG9ubHkgd2FzIHRoZXJlIGEgZ2lt cGxpZmllciBJQ0UKKyEgZm9yIGEgZGVyaXZlZCB0eXBlICd0JyB3aXRoIG5v IGNvbXBvbmVudHMgYnV0LCB3aXRoIGEgY29tcG9uZW50LCBnZm9ydHJhbgor ISBnYXZlIHdyb25nIHJlc3VsdHMuCishIENvbnRyaWJ1dGVkIGJ5IERhdmlk IEJpbmRlcm1hbiAgPGRjYjMxNEBob3RtYWlsLmNvbT4KKyEKK21vZHVsZSB0 eXBlcworICB0eXBlIHQKKyAgIGNvbnRhaW5zCisgICAgIGZpbmFsIDo6IGZp bmFsaXplCisgIGVuZCB0eXBlIHQKK2NvbnRhaW5zCisgIHB1cmUgc3Vicm91 dGluZSBmaW5hbGl6ZSh4KQorICAgIHR5cGUodCksIGludGVudChpbm91dCkg OjogeAorICBlbmQgc3Vicm91dGluZSBmaW5hbGl6ZQorZW5kIG1vZHVsZSB0 eXBlcworCitzdWJyb3V0aW5lIHRlc3QxKHgpCisgIHVzZSB0eXBlcworICBp bnRlcmZhY2UKKyAgICAgZWxlbWVudGFsIGZ1bmN0aW9uIGVsZW0oeCkKKyAg ICAgICB1c2UgdHlwZXMKKyAgICAgICB0eXBlKHQpLCBpbnRlbnQoaW4pIDo6 IHgKKyAgICAgICB0eXBlKHQpIDo6IGVsZW0KKyAgICAgZW5kIGZ1bmN0aW9u IGVsZW0KKyAgZW5kIGludGVyZmFjZQorICB0eXBlKHQpIDo6IHgoOikKKyAg eCA9IGVsZW0oeCkKK2VuZCBzdWJyb3V0aW5lIHRlc3QxCisKK3N1YnJvdXRp bmUgdGVzdDIoeCkKKyAgdXNlIHR5cGVzCisgIGludGVyZmFjZQorICAgICBl bGVtZW50YWwgZnVuY3Rpb24gZWxlbSh4KQorICAgICAgIHVzZSB0eXBlcwor ICAgICAgIHR5cGUodCksIGludGVudChpbikgOjogeAorICAgICAgIHR5cGUo dCkgOjogZWxlbQorICAgICBlbmQgZnVuY3Rpb24gZWxlbQorICAgICBlbGVt ZW50YWwgZnVuY3Rpb24gZWxlbTIoeCwgeSkKKyAgICAgICB1c2UgdHlwZXMK KyAgICAgICB0eXBlKHQpLCBpbnRlbnQoaW4pIDo6IHgsIHkKKyAgICAgICB0 eXBlKHQpIDo6IGVsZW0yCisgICAgIGVuZCBmdW5jdGlvbiBlbGVtMgorICBl bmQgaW50ZXJmYWNlCisgIHR5cGUodCkgOjogeCg6KQorICB4ID0gZWxlbTIo ZWxlbSh4KSwgZWxlbSh4KSkKK2VuZCBzdWJyb3V0aW5lIHRlc3QyCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2ZpbmFsaXplXzU1 LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZmluYWxpemVfNTUu ZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m YTdlNTUyZWVhNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZmluYWxpemVfNTUuZjkwCkBAIC0wLDAgKzEsODkgQEAK KyEgeyBkZy1kbyBydW4gfQorISBUZXN0IHRoZSBmaXggZm9yIFBSMTEzODg1 LCB3aGVyZSBub3Qgb25seSB3YXMgdGhlcmUgYSBnaW1wbGlmaWVyIElDRQor ISBmb3IgYSBkZXJpdmVkIHR5cGUgJ3QnIHdpdGggbm8gY29tcG9uZW50cyBi dXQgdGhpcyB2ZXJzaW9uIGdhdmUgd3JvbmcKKyEgcmVzdWx0cy4KKyEgQ29u dHJpYnV0ZWQgYnkgRGF2aWQgQmluZGVybWFuICA8ZGNiMzE0QGhvdG1haWwu Y29tPgorIQorbW9kdWxlIHR5cGVzCisgIHR5cGUgdAorICAgICBpbnRlZ2Vy IDo6IGkKKyAgIGNvbnRhaW5zCisgICAgIGZpbmFsIDo6IGZpbmFsaXplCisg IGVuZCB0eXBlIHQKKyAgaW50ZWdlciA6OiBjdHIgPSAwCitjb250YWlucwor ICBpbXB1cmUgZWxlbWVudGFsIHN1YnJvdXRpbmUgZmluYWxpemUoeCkKKyAg ICB0eXBlKHQpLCBpbnRlbnQoaW5vdXQpIDo6IHgKKyAgICBjdHIgPSBjdHIg KyAxCisgIGVuZCBzdWJyb3V0aW5lIGZpbmFsaXplCitlbmQgbW9kdWxlIHR5 cGVzCisKK2ltcHVyZSBlbGVtZW50YWwgZnVuY3Rpb24gZWxlbSh4KQorICB1 c2UgdHlwZXMKKyAgdHlwZSh0KSwgaW50ZW50KGluKSA6OiB4CisgIHR5cGUo dCkgOjogZWxlbQorICBlbGVtJWkgPSB4JWkgKyAxCitlbmQgZnVuY3Rpb24g ZWxlbQorCitpbXB1cmUgZWxlbWVudGFsIGZ1bmN0aW9uIGVsZW0yKHgsIHkp CisgIHVzZSB0eXBlcworICB0eXBlKHQpLCBpbnRlbnQoaW4pIDo6IHgsIHkK KyAgdHlwZSh0KSA6OiBlbGVtMgorICBlbGVtMiVpID0geCVpICsgeSVpCitl bmQgZnVuY3Rpb24gZWxlbTIKKworc3Vicm91dGluZSB0ZXN0MSh4KQorICB1 c2UgdHlwZXMKKyAgaW50ZXJmYWNlCisgICAgIGltcHVyZSBlbGVtZW50YWwg ZnVuY3Rpb24gZWxlbSh4KQorICAgICAgIHVzZSB0eXBlcworICAgICAgIHR5 cGUodCksIGludGVudChpbikgOjogeAorICAgICAgIHR5cGUodCkgOjogZWxl bQorICAgICBlbmQgZnVuY3Rpb24gZWxlbQorICBlbmQgaW50ZXJmYWNlCisg IHR5cGUodCkgOjogeCg6KQorICB0eXBlKHQpLCBhbGxvY2F0YWJsZSA6OiB5 KDopCisgIHkgPSB4CisgIHggPSBlbGVtKHkpCitlbmQgc3Vicm91dGluZSB0 ZXN0MQorCitzdWJyb3V0aW5lIHRlc3QyKHgpCisgIHVzZSB0eXBlcworICBp bnRlcmZhY2UKKyAgICAgaW1wdXJlIGVsZW1lbnRhbCBmdW5jdGlvbiBlbGVt KHgpCisgICAgICAgdXNlIHR5cGVzCisgICAgICAgdHlwZSh0KSwgaW50ZW50 KGluKSA6OiB4CisgICAgICAgdHlwZSh0KSA6OiBlbGVtCisgICAgIGVuZCBm dW5jdGlvbiBlbGVtCisgICAgIGltcHVyZSBlbGVtZW50YWwgZnVuY3Rpb24g ZWxlbTIoeCwgeSkKKyAgICAgICB1c2UgdHlwZXMKKyAgICAgICB0eXBlKHQp LCBpbnRlbnQoaW4pIDo6IHgsIHkKKyAgICAgICB0eXBlKHQpIDo6IGVsZW0y CisgICAgIGVuZCBmdW5jdGlvbiBlbGVtMgorICBlbmQgaW50ZXJmYWNlCisg IHR5cGUodCkgOjogeCg6KQorICB0eXBlKHQpLCBhbGxvY2F0YWJsZSA6OiB5 KDopCisgIHkgPSB4CisgIHggPSBlbGVtMihlbGVtKHkpLCBlbGVtKHkpKQor ZW5kIHN1YnJvdXRpbmUgdGVzdDIKKworcHJvZ3JhbSB0ZXN0MTEzODg1Cisg IHVzZSB0eXBlcworICBpbnRlcmZhY2UKKyAgICBzdWJyb3V0aW5lIHRlc3Qx KHgpCisgICAgICB1c2UgdHlwZXMKKyAgICAgIHR5cGUodCkgOjogeCg6KQor ICAgIGVuZCBzdWJyb3V0aW5lCisgICAgc3Vicm91dGluZSB0ZXN0Mih4KQor ICAgICAgdXNlIHR5cGVzCisgICAgICB0eXBlKHQpIDo6IHgoOikKKyAgICBl bmQgc3Vicm91dGluZQorICBlbmQgaW50ZXJmYWNlCisgIHR5cGUodCkgOjog eCgyKSA9IFt0KDEpLHQoMildCisgIGNhbGwgdGVzdDEgKHgpCisgIGlmIChh bnkgKHglaSAubmUuIFsyLDNdKSkgc3RvcCAxCisgIGlmIChjdHIgLm5lLiA2 KSBzdG9wIDIKKyAgY2FsbCB0ZXN0MiAoeCkKKyAgaWYgKGFueSAoeCVpIC5u ZS4gWzYsOF0pKSBzdG9wIDMKKyAgaWYgKGN0ciAubmUuIDE2KSBzdG9wIDQK K2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9m aW5hbGl6ZV81Ni5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Zp bmFsaXplXzU2LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uYmQzNTBhM2JjMWMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2ZpbmFsaXplXzU2LmY5MApAQCAtMCww ICsxLDE2OCBAQAorISB7IGRnLWRvIHJ1biB9CishIFRlc3QgdGhlIGZpeCBm b3IgUFIxMTA5ODcKKyEgU2VnZmF1bHRlZCBpbiBydW50aW1lLCBhcyBzaG93 biBiZWxvdy4KKyEgQ29udHJpYnV0ZWQgYnkgS2lyaWxsIENoYW5raW4gIDxj aGlsaWtpbi5rQGdtYWlsLmNvbT4KKyEgYW5kIEpvaG4gSGFpZHVjZWsgIDxq aGFpZHVjZUBnbWFpbC5jb20+IChjb21tZW50IDUpCishCitNT0RVTEUgb3Jp Z2luYWxfbW9kCisgIElNUExJQ0lUIE5PTkUKKworICBUWVBFIFQxX1BPSU5U RVIKKyAgICBDTEFTUyhUMSksIFBPSU5URVIgOjogVDEKKyAgRU5EIFRZUEUK KworICBUWVBFIFQxCisgICAgSU5URUdFUiBOX05FWFQKKyAgICBDTEFTUyhU MV9QT0lOVEVSKSwgQUxMT0NBVEFCTEUgOjogTkVYVCg6KQorICBDT05UQUlO UworICAgIEZJTkFMIDo6IFQxX0RFU1RSVUNUT1IKKyAgICBQUk9DRURVUkUg OjogU0VUX05fTkVYVCA9PiBUMV9TRVRfTl9ORVhUCisgICAgUFJPQ0VEVVJF IDo6IEdFVF9ORVhUID0+IFQxX0dFVF9ORVhUCisgIEVORCBUWVBFCisKKyAg SU5URVJGQUNFIFQxCisgICAgUFJPQ0VEVVJFIFQxX0NPTlNUUlVDVE9SCisg IEVORCBJTlRFUkZBQ0UKKworICBUWVBFLCBFWFRFTkRTKFQxKSA6OiBUMgor ICAgIFJFQUwgWAorICBDT05UQUlOUworICBFTkQgVFlQRQorCisgIElOVEVS RkFDRSBUMgorICAgIFBST0NFRFVSRSBUMl9DT05TVFJVQ1RPUgorICBFTkQg SU5URVJGQUNFCisKKyAgVFlQRSwgRVhURU5EUyhUMSkgOjogVDMKKyAgQ09O VEFJTlMKKyAgICBGSU5BTCA6OiBUM19ERVNUUlVDVE9SCisgIEVORCBUWVBF CisKKyAgSU5URVJGQUNFIFQzCisgICAgUFJPQ0VEVVJFIFQzX0NPTlNUUlVD VE9SCisgIEVORCBJTlRFUkZBQ0UKKworICBJTlRFR0VSIDo6IENPVU5UUyA9 IDAKKworQ09OVEFJTlMKKworICBUWVBFKFQxKSBGVU5DVElPTiBUMV9DT05T VFJVQ1RPUigpIFJFU1VMVChMKQorICAgIElNUExJQ0lUIE5PTkUKKyAgICBM JU5fTkVYVCA9IDAKKyAgRU5EIEZVTkNUSU9OCisKKyAgU1VCUk9VVElORSBU MV9ERVNUUlVDVE9SKFNFTEYpCisgICAgSU1QTElDSVQgTk9ORQorICAgIFRZ UEUoVDEpLCBJTlRFTlQoSU5PVVQpIDo6IFNFTEYKKyAgICBJRiAoQUxMT0NB VEVEKFNFTEYlTkVYVCkpIFRIRU4KKyAgICAgIERFQUxMT0NBVEUoU0VMRiVO RVhUKQorICAgIEVORElGCisgIEVORCBTVUJST1VUSU5FCisKKyAgU1VCUk9V VElORSBUM19ERVNUUlVDVE9SKFNFTEYpCisgICAgSU1QTElDSVQgTk9ORQor ICAgIFRZUEUoVDMpLCBJTlRFTlQoSU4pIDo6IFNFTEYKKyAgICBpZiAoLk5P VC5BTExPQ0FURUQgKFNFTEYlTkVYVCkpIENPVU5UUyA9IENPVU5UUyArIDEK KyAgRU5EIFNVQlJPVVRJTkUKKworICBTVUJST1VUSU5FIFQxX1NFVF9OX05F WFQoU0VMRiwgTl9ORVhUKQorICAgIElNUExJQ0lUIE5PTkUKKyAgICBDTEFT UyhUMSksIElOVEVOVChJTk9VVCkgOjogU0VMRgorICAgIElOVEVHRVIsIElO VEVOVChJTikgOjogTl9ORVhUCisgICAgSU5URUdFUiBJCisgICAgU0VMRiVO X05FWFQgPSBOX05FWFQKKyAgICBBTExPQ0FURShTRUxGJU5FWFQoTl9ORVhU KSkKKyAgICBETyBJID0gMSwgTl9ORVhUCisgICAgICBOVUxMSUZZKFNFTEYl TkVYVChJKSVUMSkKKyAgICBFTkRETworICBFTkQgU1VCUk9VVElORQorCisg IEZVTkNUSU9OIFQxX0dFVF9ORVhUKFNFTEYpIFJFU1VMVChORVhUKQorICAg IElNUExJQ0lUIE5PTkUKKyAgICBDTEFTUyhUMSksIFRBUkdFVCwgSU5URU5U KElOKSA6OiBTRUxGCisgICAgQ0xBU1MoVDEpLCBQT0lOVEVSIDo6IE5FWFQK KyAgICBDTEFTUyhUMSksIFBPSU5URVIgOjogTAorICAgIElOVEVHRVIgSQor ICAgIElGIChTRUxGJU5fTkVYVCAuR0UuIDEpIFRIRU4KKyAgICAgIE5FWFQg PT4gU0VMRiVORVhUKDEpJVQxCisgICAgICBSRVRVUk4KKyAgICBFTkRJRgor ICAgIE5VTExJRlkoTkVYVCkKKyAgRU5EIEZVTkNUSU9OCisKKyAgVFlQRShU MikgRlVOQ1RJT04gVDJfQ09OU1RSVUNUT1IoKSBSRVNVTFQoTCkKKyAgICBJ TVBMSUNJVCBOT05FCisgICAgTCVUMSA9IFQxKCkKKyAgICBDQUxMIEwlVDEl U0VUX05fTkVYVCgxKQorICBFTkQgRlVOQ1RJT04KKworICBUWVBFKFQzKSBG VU5DVElPTiBUM19DT05TVFJVQ1RPUigpIFJFU1VMVChMKQorICAgIElNUExJ Q0lUIE5PTkUKKyAgICBMJVQxID0gVDEoKQorICBFTkQgRlVOQ1RJT04KKwor RU5EIE1PRFVMRSBvcmlnaW5hbF9tb2QKKworbW9kdWxlIGNvbW1lbnQ1X21v ZAorICB0eXBlOjpwYXJlbnQKKyAgICAgY2hhcmFjdGVyKDopLCBhbGxvY2F0 YWJsZTo6bmFtZQorICBlbmQgdHlwZSBwYXJlbnQKKyAgdHlwZSwgZXh0ZW5k cyhwYXJlbnQpOjpjaGlsZAorICAgY29udGFpbnMKKyAgICAgZmluYWw6OmNo aWxkX2ZpbmFsaXplCisgIGVuZCB0eXBlIGNoaWxkCisgIGludGVyZmFjZSBj aGlsZAorICAgICBtb2R1bGUgcHJvY2VkdXJlIG5ld19jaGlsZAorICBlbmQg aW50ZXJmYWNlIGNoaWxkCisgIGludGVnZXIgOjogY291bnRzID0gMAorCitj b250YWlucworCisgIHR5cGUoY2hpbGQpIGZ1bmN0aW9uIG5ld19jaGlsZChu YW1lKQorICAgIGNoYXJhY3RlcigqKTo6bmFtZQorICAgIG5ld19jaGlsZCVu YW1lPW5hbWUKKyAgZW5kIGZ1bmN0aW9uIG5ld19jaGlsZAorCisgIHN1YnJv dXRpbmUgY2hpbGRfZmluYWxpemUodGhpcykKKyAgICB0eXBlKGNoaWxkKSwg aW50ZW50KGluKTo6dGhpcworICAgIGNvdW50cyA9IGNvdW50cyArIDEKKyAg ZW5kIHN1YnJvdXRpbmUgY2hpbGRfZmluYWxpemUKK2VuZCBtb2R1bGUgY29t bWVudDVfbW9kCisKK1BST0dSQU0gVEVTVF9QUk9HUkFNCisgIGNhbGwgb3Jp Z2luYWwKKyAgY2FsbCBjb21tZW50NQorY29udGFpbnMKKyAgc3Vicm91dGlu ZSBvcmlnaW5hbAorICAgIFVTRSBvcmlnaW5hbF9tb2QKKyAgICBJTVBMSUNJ VCBOT05FCisgICAgVFlQRShUMSksIFRBUkdFVCA6OiBYMQorICAgIFRZUEUo VDIpLCBUQVJHRVQgOjogWDIKKyAgICBUWVBFKFQzKSwgVEFSR0VUIDo6IFgz CisgICAgQ0xBU1MoVDEpLCBQT0lOVEVSIDo6IEwKKyAgICBYMSA9IFQxKCkK KyAgICBYMiA9IFQyKCkKKyAgICBYMiVORVhUKDEpJVQxID0+IFgxCisgICAg WDMgPSBUMygpCisgICAgQ0FMTCBYMyVTRVRfTl9ORVhUKDEpCisgICAgWDMl TkVYVCgxKSVUMSA9PiBYMgorICAgIEwgPT4gWDMKKyAgICBETyBXSElMRSAo LlRSVUUuKQorICAgICAgTCA9PiBMJUdFVF9ORVhUKCkgICAgICAgICAgICAg ICAgICEgVXNlZCB0byBzZWdmYXVsdCBoZXJlIGluIHJ1bnRpbWUKKyAgICAg IElGICguTk9ULiBBU1NPQ0lBVEVEKEwpKSBFWElUCisgICAgICBDT1VOVFMg PSBDT1VOVFMgKyAxCisgICAgRU5ERE8KKyEgVHdvIGZvciBUMyBmaW5hbGl6 YXRpb24gYW5kIHR3byBmb3IgYXNzb2NpYXRlZCAnTCdzCisgICAgSUYgKENP VU5UUyAuTkUuIDQpIFNUT1AgMQorICBlbmQgc3Vicm91dGluZSBvcmlnaW5h bAorCisgIHN1YnJvdXRpbmUgY29tbWVudDUKKyAgICB1c2UgY29tbWVudDVf bW9kLCBvbmx5OiBjaGlsZCwgY291bnRzCisgICAgaW1wbGljaXQgbm9uZQor ICAgIHR5cGUoY2hpbGQpOjpraWQKKyAgICBraWQgPSBjaGlsZCgiTmFtZSIp CisgICAgaWYgKC5ub3QuYWxsb2NhdGVkIChraWQlbmFtZSkpIHN0b3AgMgor ICAgIGlmIChraWQlbmFtZSAubmUuICJOYW1lIikgc3RvcCAzCisgICAgaWYg KGNvdW50cyAubmUuIDIpIHN0b3AgNAorICBlbmQgc3Vicm91dGluZSBjb21t ZW50NQorRU5EIFBST0dSQU0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvcHIxMTI0MDdhLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvcHIxMTI0MDdhLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uODFlZjhiZDU1YTQKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTEyNDA3YS5mOTAK QEAgLTAsMCArMSw3MCBAQAorISB7IGRnLWRvIHJ1biB9CishIFRlc3Qgb2Yg YW4gaXNzdWUgZm91bmQgaW4gdGhlIGludmVzdGlnYXRpb24gb2YgUFIxMTI0 MDcKKyEgQ29udHJpYnV0ZWQgYnkgVG9tYXMgVHJua2EgIDx0cm5rYUBzY20u Y29tPgorIQorbW9kdWxlIG0KKyAgcHJpdmF0ZSBuZXdfdAorCisgIHR5cGUg cworICAgIHByb2NlZHVyZSgpLHBvaW50ZXIsbm9wYXNzIDo6IG9wCisgIGVu ZCB0eXBlCisKKyAgdHlwZSA6OiB0CisgICAgaW50ZWdlciA6OiBpCisgICAg dHlwZSAocykgOjogcworICBjb250YWlucworICAgIHByb2NlZHVyZSA6OiBu ZXdfdAorICAgIHByb2NlZHVyZSA6OiBiYXIKKyAgICBwcm9jZWR1cmUgOjog YWRkX3QKKyAgICBnZW5lcmljIDo6IG5ldyA9PiBuZXdfdCwgYmFyCisgICAg Z2VuZXJpYywgcHVibGljIDo6IGFzc2lnbm1lbnQoPSkgPT4gYWRkX3QKKyAg ICBmaW5hbCA6OiBmaW5hbF90CisgIGVuZCB0eXBlCisKKyAgaW50ZWdlciA6 OiBpID0gMCwgZmluYWxzID0gMAorCitjb250YWlucworICByZWN1cnNpdmUg c3Vicm91dGluZSBuZXdfdCAoYXJnMSwgYXJnMikKKyAgICBjbGFzcyh0KSwg aW50ZW50KG91dCkgOjogYXJnMQorICAgIHR5cGUodCksIGludGVudChpbikg IDo6IGFyZzIKKyAgICBpID0gaSArIDEKKworICAgIHByaW50ICIoYSwyaTQp IiwgIm5ld190IiwgYXJnMSVpLCBhcmcyJWkKKyAgICBpZiAoaSAuZ2UuIDEw KSByZXR1cm4KKworISBBY2NvcmRpbmcgdG8gRjIwMTgoOC41LjEwKSwgYXJn MSBzaG91bGQgYmUgdW5kZWZpbmVkIG9uIGludm9jYXRpb24sIHVubGVzcwor ISBhbnkgc3ViLWNvbXBvbmVudHMgYXJlIGRlZmF1bHQgaW5pdGlhbGlzZWQu IGdmYyB1c2VkIHRvIHNldCBhcmcxJWkgPSAwLgorICAgIGlmIChhcmcxJWkg Lm5lLiBhcmcyJWkpIHRoZW4KKyAgICAgIGFyZzElaSA9IGFyZzIlaQorICAg ICAgY2FsbCBhcmcxJW5ldyhhcmcyKQorICAgIGVuZGlmCisgIGVuZAorCisg IHN1YnJvdXRpbmUgYmFyKGFyZykKKyAgICBjbGFzcyh0KSwgaW50ZW50KG91 dCkgOjogYXJnCisgICAgY2FsbCBhcmclbmV3KHQoNDIsIHMobmV3X3QpKSkK KyAgZW5kCisKKyAgc3Vicm91dGluZSBhZGRfdCAoYXJnMSwgYXJnMikKKyAg ICBjbGFzcyh0KSwgaW50ZW50KG91dCkgOjogYXJnMQorICAgIHR5cGUodCks IGludGVudChpbikgIDo6IGFyZzIKKyAgICBjYWxsIGFyZzElbmV3IChhcmcy KQorICBlbmQKKworICBpbXB1cmUgZWxlbWVudGFsIHN1YnJvdXRpbmUgZmlu YWxfdCAoYXJnMSkKKyAgICB0eXBlKHQpLCBpbnRlbnQoaW4pIDo6IGFyZzEK KyAgICBmaW5hbHMgPSBmaW5hbHMgKyAxCisgIGVuZAorZW5kCisKKyAgdXNl IG0KKyAgY2xhc3ModCksIGFsbG9jYXRhYmxlIDo6IHgKKyAgYWxsb2NhdGUo eCkKKyAgY2FsbCB4JW5ldygpICAgICAgICAgICAgICAgICAgICEgZ2ZvcnRy YW4gdXNlZCB0byBvdXRwdXQgMTAqJ25ld190JworICBwcmludCAiKDNpNCki LCB4JWksIGksIGZpbmFscyAgISAgICAgICAgICAgLXx8LSAgICAgICAgICAw IDEwIDExCishCishIFRoZSBvdGhlciBicmFuZHMgb3V0cHV0IDIqJ25ld190 JyArIDQyIDIgMyBhbmQgbm93IHNvIGRvZXMgZ2ZjIDotKQorICBpZiAoeCVp IC5uZS4gNDIpIHN0b3AgMQorICBpZiAoaSAubmUuIDIpIHN0b3AgMgorICBp ZiAoZmluYWxzIC5uZS4gMykgc3RvcCAzCitlbmQKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMTI0MDdiLmY5MCBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMTI0MDdiLmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTU0MTgyNWQ2MTYKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3By MTEyNDA3Yi5mOTAKQEAgLTAsMCArMSw1NiBAQAorISB7IGRnLWRvIGNvbXBp bGUgfQorISBUZXN0IG9mIGFuIGlzc3VlIGZvdW5kIGluIHRoZSBpbnZlc3Rp Z2F0aW9uIG9mIFBSMTEyNDA3CishIENvbnRyaWJ1dGVkIGJ5IFRvbWFzIFRy bmthICA8dHJua2FAc2NtLmNvbT4KKyEKK21vZHVsZSBtCisgIHByaXZhdGUg bmV3X3QKKworICB0eXBlIHMKKyAgICBwcm9jZWR1cmUoKSxwb2ludGVyLG5v cGFzcyA6OiBvcAorICBlbmQgdHlwZQorCisgIHR5cGUgOjogdAorICAgIGlu dGVnZXIgOjogaQorICAgIHR5cGUgKHMpIDo6IHMKKyAgY29udGFpbnMKKyAg ICBwcm9jZWR1cmUgOjogbmV3X3QKKyAgICBwcm9jZWR1cmUgOjogYmFyCisg ICAgcHJvY2VkdXJlIDo6IGFkZF90CisgICAgZ2VuZXJpYyA6OiBuZXcgPT4g bmV3X3QsIGJhcgorICAgIGdlbmVyaWMsIHB1YmxpYyA6OiBhc3NpZ25tZW50 KD0pID0+IGFkZF90CisgICAgZmluYWwgOjogZmluYWxfdAorICBlbmQgdHlw ZQorCisgIGludGVnZXIgOjogaSA9IDAsIGZpbmFscyA9IDAKKworY29udGFp bnMKKyAgc3Vicm91dGluZSBuZXdfdCAoYXJnMSwgYXJnMikgICAgICAgICAg ICAhIGdmb3J0cmFuIGRpZG4ndCBkZXRlY3QgdGhlIHJlY3Vyc2lvbgorICAg IGNsYXNzKHQpLCBpbnRlbnQob3V0KSA6OiBhcmcxCisgICAgdHlwZSh0KSwg aW50ZW50KGluKSAgOjogYXJnMgorICAgIGkgPSBpICsgMQorCisgICAgcHJp bnQgKiwgIm5ld190IiwgYXJnMSVpLCBhcmcyJWkKKyAgICBpZiAoaSAuZ2Uu IDEwKSByZXR1cm4KKworICAgIGlmIChhcmcxJWkgLm5lLiBhcmcyJWkpIHRo ZW4KKyAgICAgIGFyZzElaSA9IGFyZzIlaQorICAgICAgY2FsbCBhcmcxJW5l dyhhcmcyKSAgISB7IGRnLXdhcm5pbmcgInBvc3NpYmx5IGNhbGxpbmcgaXRz ZWxmIHJlY3Vyc2l2ZWx5IiB9CisgICAgZW5kaWYKKyAgZW5kCisKKyAgc3Vi cm91dGluZSBiYXIoYXJnKQorICAgIGNsYXNzKHQpLCBpbnRlbnQob3V0KSA6 OiBhcmcKKyAgICBjYWxsIGFyZyVuZXcodCg0MiwgcyhuZXdfdCkpKQorICBl bmQKKworICBzdWJyb3V0aW5lIGFkZF90IChhcmcxLCBhcmcyKQorICAgIGNs YXNzKHQpLCBpbnRlbnQob3V0KSA6OiBhcmcxCisgICAgdHlwZSh0KSwgaW50 ZW50KGluKSAgOjogYXJnMgorICAgIGNhbGwgYXJnMSVuZXcgKGFyZzIpCisg IGVuZAorCisgIGltcHVyZSBlbGVtZW50YWwgc3Vicm91dGluZSBmaW5hbF90 IChhcmcxKQorICAgIHR5cGUodCksIGludGVudChpbikgOjogYXJnMQorICAg IGZpbmFscyA9IGZpbmFscyArIDEKKyAgZW5kCitlbmQK --000000000000e351a40614dd1373--