From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= Newsgroups: gmane.lisp.guile.bugs Subject: bug#33827: Patches Date: Sun, 13 Jan 2019 20:53:04 -0200 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000027132d057f5ecbea" X-Trace: blaine.gmane.org 1547419945 10074 195.159.176.226 (13 Jan 2019 22:52:25 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 13 Jan 2019 22:52:25 +0000 (UTC) To: 33827@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Sun Jan 13 23:52:21 2019 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gioc7-0002Ti-1z for guile-bugs@m.gmane.org; Sun, 13 Jan 2019 23:52:20 +0100 Original-Received: from localhost ([127.0.0.1]:46818 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gioeE-0008JQ-4U for guile-bugs@m.gmane.org; Sun, 13 Jan 2019 17:54:30 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:40495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1giodx-0008Hd-1L for bug-guile@gnu.org; Sun, 13 Jan 2019 17:54:23 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1giodn-0001mT-6C for bug-guile@gnu.org; Sun, 13 Jan 2019 17:54:12 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:58890) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1giodm-0001mC-Iw for bug-guile@gnu.org; Sun, 13 Jan 2019 17:54:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1giodm-0001Rt-FU for bug-guile@gnu.org; Sun, 13 Jan 2019 17:54:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Sun, 13 Jan 2019 22:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33827 X-GNU-PR-Package: guile X-GNU-PR-Keywords: Original-Received: via spool by 33827-submit@debbugs.gnu.org id=B33827.15474200035522 (code B ref 33827); Sun, 13 Jan 2019 22:54:02 +0000 Original-Received: (at 33827) by debbugs.gnu.org; 13 Jan 2019 22:53:23 +0000 Original-Received: from localhost ([127.0.0.1]:58172 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1giod8-0001R0-Sw for submit@debbugs.gnu.org; Sun, 13 Jan 2019 17:53:22 -0500 Original-Received: from mail-io1-f50.google.com ([209.85.166.50]:44985) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1giod7-0001Qk-LK for 33827@debbugs.gnu.org; Sun, 13 Jan 2019 17:53:21 -0500 Original-Received: by mail-io1-f50.google.com with SMTP id r200so16277477iod.11 for <33827@debbugs.gnu.org>; Sun, 13 Jan 2019 14:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ppW40DuBYi1PajJYqIFTFHzz1IAKNFo7l4UxOoFzRAA=; b=WuLToive7jlEjL5jFP4Czg139VV1DlbZiTBo/OvP7ddOJdFfZzZyfVSuglbvsFxMdZ 0HmNiJBw4yqvsTTgUAASfoqOsYrxJfddS6QL1tP+ycT3vDV5Hsk6vupTVkyvammWp0AH n8Bp4r0vEuIPTZ+0nQbo3x953SQb99IDdzhxHovyq82RJo+yy9L7/9j2lpYurAXXYmQA b6LMzttH89ttL/OL4WyX57aUrimKI7InGAOM5SBfrzQltu0Wj2m3SPg8lxpkmjvQWRnl u0DhjYlqGtNO/v3MNZsBubfup2XpMPxXDdEYnIgg79W8nJwrXicRP05SLhqTFYUp/xfP Y/fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ppW40DuBYi1PajJYqIFTFHzz1IAKNFo7l4UxOoFzRAA=; b=p6Nfi9ylI5lC0ZdmNoQPQjj6JQZlaNrQgDvIYwhI5TCK3uP6NnOcYcXZosFPI/kx3w /RK7B3kwjZRSl/+VgS9fm8gobtih+s8Ufyz0j1vGz5olVs2wSKlhLPeBXXIkd4GkwSSm KY0bc2j/CuLPXwsPT095MAE/fVMfw9aIDAnIgvUbcJgKxIqSL2CxPLoABLV1JRr6Yif9 kfoCyphi59UQFqRrCvVQv5d/aG6kezFQvlbRLd0pek4JtC6o1Rfb6O3nGSZGF/nDTPhT ojma6pcQvQ0jry1cZKg8+PlAZu3DHuWUGKS9Amqi+vqnW+vAvMT0HXoKc/DqQUW9LKM/ rzyg== X-Gm-Message-State: AJcUukd3JDvB7xyax7NTCeJl90xafvOAFmot9pEAmI/IroW9lNhVRht3 gainhvOIFoA2YyhWgLDn0+zeAqhSlgXSPSZie9fSQA== X-Google-Smtp-Source: ALg8bN49jHFKwSPPwjknUpVPk+Rj1SArVRfgb0ivnfi5J7x4f3dwWZZ4JvBW0OTvj/V4H41syX4eGZ2Z4PbXocBFosU= X-Received: by 2002:a6b:156:: with SMTP id 83mr14409641iob.63.1547419995521; Sun, 13 Jan 2019 14:53:15 -0800 (PST) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:9296 Archived-At: --00000000000027132d057f5ecbea Content-Type: multipart/alternative; boundary="000000000000271327057f5ecbe8" --000000000000271327057f5ecbe8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The rest of the patches are here, implementing SRFI 128 and SRFI 125. Em ter, 8 de jan de 2019 =C3=A0s 22:21, J=C3=A9ssica Milar=C3=A9 escreveu: > Patch 0001 fixes SRFI-69 bugs as specified. Patches 0002 to 0005 implemen= t > the module (ice-9 generic-hash-tables) and then reimplement SRFI-69 and > (rnrs hashtables) and add an implementation of SRFI 126, all of them usin= g > generic-hash-tables (and therefore compatible to each other). > > I've called `make check' after each commit and all tests PASS: or XFAIL:, > except the four tests in linker.test, as reported in Bug 33991[1]. > > [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991 > --000000000000271327057f5ecbe8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The rest of the patches are here, implementing SRFI 128 an= d SRFI 125.

Em ter, 8 = de jan de 2019 =C3=A0s 22:21, J=C3=A9ssica Milar=C3=A9 <jessymilare@gmail.com> escreveu:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
Patch 0001 fixes SRFI-69 bugs as specified. Patch= es 0002 to 0005 implement the module (ice-9 generic-hash-tables) and then r= eimplement SRFI-69 and (rnrs hashtables) and add an implementation of SRFI = 126, all of them using generic-hash-tables (and therefore compatible to eac= h other).

I've called `make check' after each co= mmit and all tests PASS: or XFAIL:, except the four tests in linker.test, a= s reported in Bug=C2=A033991[1].

--000000000000271327057f5ecbe8-- --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0006-Fix-wrong-year-in-copyright-notices.patch" Content-Disposition: attachment; filename="0006-Fix-wrong-year-in-copyright-notices.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqvhvngx0 RnJvbSBhMDJmZDA5MTE3MDEzMTU0YzAxMTA3NGI1YTc1ODNhMWJlZDVlY2E0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBGcmksIDExIEphbiAyMDE5IDE3OjQwOjM4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRml4IHdyb25nIHllYXIgaW4gY29weXJpZ2h0 IG5vdGljZXMuCgotLS0KIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbSAgICAg IHwgMiArLQogbW9kdWxlL3NyZmkvc3JmaS0xMjYuc2NtICAgICAgICAgICAgICAgICAgfCA0ICsr LS0KIG1vZHVsZS9zcmZpL3NyZmktNjkuc2NtICAgICAgICAgICAgICAgICAgIHwgMiArLQogdGVz dC1zdWl0ZS90ZXN0cy9nZW5lcmljLWhhc2gtdGFibGVzLnRlc3QgfCA0ICsrLS0KIHRlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjYudGVzdCAgICAgICAgICAgIHwgNCArKy0tCiB0ZXN0LXN1aXRlL3Rl c3RzL3NyZmktNjkudGVzdCAgICAgICAgICAgICB8IDIgKy0KIDYgZmlsZXMgY2hhbmdlZCwgOSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9n ZW5lcmljLWhhc2gtdGFibGVzLnNjbSBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVz LnNjbQppbmRleCAwMzNjM2VjZGEuLjMxZGVhZDk3YSAxMDA2NDQKLS0tIGEvbW9kdWxlL2ljZS05 L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCisrKyBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gt dGFibGVzLnNjbQpAQCAtMSw2ICsxLDYgQEAKIDs7OyBnZW5lcmljLWhhc2gtdGFibGVzLnNjbSAt LS0gSW50ZXJtZWRpYXRlIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAx OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7CiA7OyBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiA7OyBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYg LS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5z Y20KaW5kZXggN2E2NTk0NDM0Li5lN2ZlZTM1ZDMgMTAwNjQ0Ci0tLSBhL21vZHVsZS9zcmZpL3Ny ZmktMTI2LnNjbQorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20KQEAgLTEsNiArMSw2IEBA Ci07Ozsgc3JmaS02OS5zY20gLS0tIEJhc2ljIGhhc2ggdGFibGVzCis7Ozsgc3JmaS0xMjYuc2Nt IC0tLSBSNlJTIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA7OwogOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogOzsgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvbW9k dWxlL3NyZmkvc3JmaS02OS5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQppbmRleCBhZTVi YzdmMDYuLjEzNGJjZDY5NCAxMDA2NDQKLS0tIGEvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KKysr IGIvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KQEAgLTEsNiArMSw2IEBACiA7Ozsgc3JmaS02OS5z Y20gLS0tIEJhc2ljIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7CiA7OyBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiA7OyBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYgLS1n aXQgYS90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVzdCBiL3Rlc3Qtc3Vp dGUvdGVzdHMvZ2VuZXJpYy1oYXNoLXRhYmxlcy50ZXN0CmluZGV4IDQ5NGNiZjcwYS4uZDFlYjJh YzJkIDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVz dAorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVzdApAQCAtMSw2 ICsxLDYgQEAKLTs7Ozsgc3JmaS02OS50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDY5IC0q LSBzY2hlbWUgLSotCis7Ozs7IGdlbmVyaWMtaGFzaC10YWJsZXMudGVzdCAtLS0gVGVzdCBzdWl0 ZSBmb3IgR0VORVJJQy1IQVNILVRBQkxFUyAtKi0gc2NoZW1lIC0qLQogOzs7OwotOzs7OyAJQ29w eXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7OyAgICBD b3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7 OzsKIDs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgogOzs7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmkt MTI2LnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKaW5kZXggZTZhNGU2NmE5 Li45NzA3NzBhNmUgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjYudGVzdAor KysgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKQEAgLTEsNiArMSw2IEBACi07Ozs7 IHNyZmktNjkudGVzdCAtLS0gVGVzdCBzdWl0ZSBmb3IgU1JGSSA2OSAtKi0gc2NoZW1lIC0qLQor Ozs7OyBzcmZpLTEyNi50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyNiAtKi0gc2NoZW1l IC0qLQogOzs7OwotOzs7OyAJQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorOzs7OyBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiA7Ozs7CiA7Ozs7IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKIDs7OzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0 ZS90ZXN0cy9zcmZpLTY5LnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdAppbmRl eCBlMTU3OWY3M2EuLjk3NDkxYmE4MyAxMDA2NDQKLS0tIGEvdGVzdC1zdWl0ZS90ZXN0cy9zcmZp LTY5LnRlc3QKKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY5LnRlc3QKQEAgLTEsNiArMSw2 IEBACiA7Ozs7IHNyZmktNjkudGVzdCAtLS0gVGVzdCBzdWl0ZSBmb3IgU1JGSSA2OSAtKi0gc2No ZW1lIC0qLQogOzs7OwotOzs7OyAJQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorOzs7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7OzsKIDs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogOzs7OyBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0tIAoyLjE5LjEK Cg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="UTF-8"; name="0009-Implemented-SRFI-125.patch" Content-Disposition: attachment; filename="0009-Implemented-SRFI-125.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqvhvnoy3 RnJvbSAxOGNlMTAyYzI3MGJhYjNjZjUyNDBlN2FjOTMxMjllMTA3YzMzNWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDEzIEphbiAyMDE5IDEyOjAxOjA4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwOS8xMF0gSW1wbGVtZW50ZWQgU1JGSS0xMjUKCi0tLQog bW9kdWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgICAxICsKIG1vZHVsZS9zcmZpL3NyZmkt MTI1LnNjbSAgICAgICB8IDQ3OSArKysrKysrKysrKysrKysrKysKIHRlc3Qtc3VpdGUvTWFrZWZp bGUuYW0gICAgICAgICB8ICAgMSArCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI1LnRlc3QgfCA4 NjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEz NDEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IG1vZHVsZS9zcmZpL3NyZmktMTI1 LnNjbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUudGVzdAoK ZGlmZiAtLWdpdCBhL21vZHVsZS9NYWtlZmlsZS5hbSBiL21vZHVsZS9NYWtlZmlsZS5hbQppbmRl eCA1ZmMzMDEwYzEuLjQxYzFjMjgyNiAxMDA2NDQKLS0tIGEvbW9kdWxlL01ha2VmaWxlLmFtCisr KyBiL21vZHVsZS9NYWtlZmlsZS5hbQpAQCAtMjk0LDYgKzI5NCw3IEBAIFNPVVJDRVMgPQkJCQkJ XAogICBzcmZpL3NyZmktODguc2NtCQkJCVwKICAgc3JmaS9zcmZpLTk4LnNjbQkJCQlcCiAgIHNy Zmkvc3JmaS0xMTEuc2NtCQkJCVwKKyAgc3JmaS9zcmZpLTEyNS5zY20JCQkJXAogICBzcmZpL3Ny ZmktMTI2LnNjbQkJCQlcCiAgIHNyZmkvc3JmaS0xMjgvZ251LnNjbQkJCQlcCiAgIHNyZmkvc3Jm aS0xMjguc2NtCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktMTI1LnNjbSBiL21v ZHVsZS9zcmZpL3NyZmktMTI1LnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLmYwYTFkZmIwMgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS9zcmZpL3NyZmktMTI1LnNj bQpAQCAtMCwwICsxLDQ3OSBAQAorOzs7IHNyZmktMTI1LnNjbSAtLS0gSW50ZXJtZWRpYXRlIGhh c2ggdGFibGVzCisKKzs7ICAgIENvcHlyaWdodCAoQykgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7 OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Cis7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7IFRoaXMgZmlsZSBjb250YWlucyBjb2RlIGZy b20gU1JGSSAxMjggcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLCBieQorOzsgV2lsbGlhbSBEIENs aW5nZXIKKworOzs7IENvcHlyaWdodCAyMDE1IFdpbGxpYW0gRCBDbGluZ2VyLgorOzs7Cis7Ozsg UGVybWlzc2lvbiB0byBjb3B5IHRoaXMgc29mdHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIHRv IHVzZSB0aGlzCis7Ozsgc29mdHdhcmUgZm9yIGFueSBsYXdmdWwgcHVycG9zZSwgYW5kIHRvIHJl ZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCis7OzsgaXMgZ3JhbnRlZCBzdWJqZWN0IHRvIHRoZSBy ZXN0cmljdGlvbiB0aGF0IGFsbCBjb3BpZXMgbWFkZSBvZiB0aGlzCis7Ozsgc29mdHdhcmUgbXVz dCBpbmNsdWRlIHRoaXMgY29weXJpZ2h0IGFuZCBwZXJtaXNzaW9uIG5vdGljZSBpbiBmdWxsLgor Ozs7Cis7OzsgSSBhbHNvIHJlcXVlc3QgdGhhdCB5b3Ugc2VuZCBtZSBhIGNvcHkgb2YgYW55IGlt cHJvdmVtZW50cyB0aGF0IHlvdQorOzs7IG1ha2UgdG8gdGhpcyBzb2Z0d2FyZSBzbyB0aGF0IHRo ZXkgbWF5IGJlIGluY29ycG9yYXRlZCB3aXRoaW4gaXQgdG8KKzs7OyB0aGUgYmVuZWZpdCBvZiB0 aGUgU2NoZW1lIGNvbW11bml0eS4KKwwKKworKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjUp CisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp LTEyOCkKKyAgIzp1c2UtbW9kdWxlICgocm5ycyBiYXNlKSAjOnNlbGVjdCAoc3ltYm9sPT8pKQor ICAjOnVzZS1tb2R1bGUgKChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKSAjOnByZWZpeCBnZW46 KQorICAjOmV4cG9ydCAoOzsgVHlwZSBjb25zdHJ1Y3RvcnMgYW5kIHByZWRpY2F0ZQorICAgICAg ICAgICAgbWFrZS1oYXNoLXRhYmxlCisgICAgICAgICAgICBoYXNoLXRhYmxlIGhhc2gtdGFibGUt dW5mb2xkIGFsaXN0LT5oYXNoLXRhYmxlCisgICAgICAgICAgICA7OyBQcmVkaWNhdGVzCisgICAg ICAgICAgICBoYXNoLXRhYmxlPyBoYXNoLXRhYmxlLWNvbnRhaW5zPyBoYXNoLXRhYmxlLWVtcHR5 PyBoYXNoLXRhYmxlPT8KKyAgICAgICAgICAgIGhhc2gtdGFibGUtbXV0YWJsZT8KKyAgICAgICAg ICAgIDs7IEFjY2Vzc29ycworICAgICAgICAgICAgaGFzaC10YWJsZS1yZWYgaGFzaC10YWJsZS1y ZWYvZGVmYXVsdAorICAgICAgICAgICAgOzsgTXV0YXRvcnMKKyAgICAgICAgICAgIGhhc2gtdGFi bGUtc2V0ISBoYXNoLXRhYmxlLWRlbGV0ZSEgaGFzaC10YWJsZS1pbnRlcm4hIGhhc2gtdGFibGUt dXBkYXRlIQorICAgICAgICAgICAgaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaGFzaC10YWJs ZS1wb3AhIGhhc2gtdGFibGUtY2xlYXIhCisgICAgICAgICAgICA7OyBUaGUgd2hvbGUgaGFzaCB0 YWJsZQorICAgICAgICAgICAgaGFzaC10YWJsZS1zaXplIGhhc2gtdGFibGUta2V5cyBoYXNoLXRh YmxlLXZhbHVlcyBoYXNoLXRhYmxlLWVudHJpZXMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtZmlu ZCBoYXNoLXRhYmxlLWNvdW50CisgICAgICAgICAgICA7OyBNYXBwaW5nIGFuZCBmb2xkaW5nCisg ICAgICAgICAgICBoYXNoLXRhYmxlLW1hcCBoYXNoLXRhYmxlLWZvci1lYWNoIGhhc2gtdGFibGUt bWFwISBoYXNoLXRhYmxlLW1hcC0+bGlzdAorICAgICAgICAgICAgaGFzaC10YWJsZS1mb2xkIGhh c2gtdGFibGUtcHJ1bmUhCisgICAgICAgICAgICA7OyBDb3B5aW5nCisgICAgICAgICAgICBoYXNo LXRhYmxlLWNvcHkgaGFzaC10YWJsZS1lbXB0eS1jb3B5CisgICAgICAgICAgICA7OyBDb252ZXJz aW9uCisgICAgICAgICAgICBoYXNoLXRhYmxlLT5hbGlzdAorICAgICAgICAgICAgOzsgSGFzaCB0 YWJsZXMgYXMgc2V0cworICAgICAgICAgICAgaGFzaC10YWJsZS11bmlvbiEgaGFzaC10YWJsZS1p bnRlcnNlY3Rpb24hIGhhc2gtdGFibGUtZGlmZmVyZW5jZSEKKyAgICAgICAgICAgIGhhc2gtdGFi bGUteG9yIQorICAgICAgICAgICAgOzsgVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIGFyZSBkZXBy ZWNhdGVkIGJ5IFNSRkkgMTI1OgorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1l eGlzdHM/IC4gaGFzaC10YWJsZS1leGlzdHM/KQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFz aC10YWJsZS13YWxrIC4gaGFzaC10YWJsZS13YWxrKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6 aGFzaC10YWJsZS1tZXJnZSEgLiBoYXNoLXRhYmxlLW1lcmdlISkKKyAgICAgICAgICAgIDs7IEZp eG1lOiBzaG91bGQgd2UgcmVhbGx5IGRlcHJlY2F0ZSB0aGVzZSBpbiBHdWlsZT8KKyAgICAgICAg ICAgIChkZXByZWNhdGVkOmhhc2ggLiBoYXNoKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6c3Ry aW5nLWhhc2ggLiBzdHJpbmctaGFzaCkKKyAgICAgICAgICAgIChkZXByZWNhdGVkOnN0cmluZy1j aS1oYXNoIC4gc3RyaW5nLWNpLWhhc2gpCisgICAgICAgICAgICAoZGVwcmVjYXRlZDpoYXNoLWJ5 LWlkZW50aXR5IC4gaGFzaC1ieS1pZGVudGl0eSkKKyAgICAgICAgICAgIChkZXByZWNhdGVkOmhh c2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gLiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1 bmN0aW9uKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9u IC4gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uKSkKKyAgIzpyZXBsYWNlIChtYWtlLWhhc2gtdGFi bGUgaGFzaC10YWJsZT8pKQorCisoY29uZC1leHBhbmQtcHJvdmlkZSAoY3VycmVudC1tb2R1bGUp ICcoc3JmaS0xMjUpKQorCisMCis7OzsgUHJpdmF0ZSBzdHVmZiwgbm90IGV4cG9ydGVkLgorCis7 OyBUZW4gb2YgdGhlIFNSRkkgMTI1IHByb2NlZHVyZXMgYXJlIGRlcHJlY2F0ZWQsIGFuZCBhbm90 aGVyCis7OyB0d28gYWxsb3cgYWx0ZXJuYXRpdmUgYXJndW1lbnRzIHRoYXQgYXJlIGRlcHJlY2F0 ZWQuCisKKyhkZWZpbmUgKGlzc3VlLWRlcHJlY2F0ZWQtd2FybmluZ3M/KSAjdCkKKworKGRlZmlu ZSAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkIG5hbWUtb2YtZGVwcmVjYXRlZC1taXNmZWF0dXJl KQorICAoaWYgKG5vdCAobWVtcSBuYW1lLW9mLWRlcHJlY2F0ZWQtbWlzZmVhdHVyZSBhbHJlYWR5 LXdhcm5lZCkpCisgICAgICAoYmVnaW4KKyAgICAgICAgKHNldCEgYWxyZWFkeS13YXJuZWQKKyAg ICAgICAgICAoY29ucyBuYW1lLW9mLWRlcHJlY2F0ZWQtbWlzZmVhdHVyZSBhbHJlYWR5LXdhcm5l ZCkpCisgICAgICAgIChpZiAoaXNzdWUtZGVwcmVjYXRlZC13YXJuaW5ncz8pCisgICAgICAgICAg ICAobGV0ICgob3V0IChjdXJyZW50LWVycm9yLXBvcnQpKSkKKyAgICAgICAgICAgICAgKGRpc3Bs YXkgIldBUk5JTkc6ICIgb3V0KQorICAgICAgICAgICAgICAoZGlzcGxheSBuYW1lLW9mLWRlcHJl Y2F0ZWQtbWlzZmVhdHVyZSBvdXQpCisgICAgICAgICAgICAgIChuZXdsaW5lIG91dCkKKyAgICAg ICAgICAgICAgKGRpc3BsYXkgIiAgICBpcyBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1LiAgU2VlIiBv dXQpCisgICAgICAgICAgICAgIChuZXdsaW5lIG91dCkKKyAgICAgICAgICAgICAgKGRpc3BsYXkg IiAgICAiIG91dCkKKyAgICAgICAgICAgICAgKGRpc3BsYXkgdXJsOmRlcHJlY2F0ZWQgb3V0KQor ICAgICAgICAgICAgICAobmV3bGluZSBvdXQpKSkpKSkKKworKGRlZmluZSB1cmw6ZGVwcmVjYXRl ZAorICAiaHR0cDovL3NyZmkuc2NoZW1lcnMub3JnL3NyZmktMTI1L3NyZmktMTI1Lmh0bWwiKQor Cis7OyBMaXN0IG9mIGRlcHJlY2F0ZWQgZmVhdHVyZXMgZm9yIHdoaWNoIGEgd2FybmluZyBoYXMg YWxyZWFkeQorOzsgYmVlbiBpc3N1ZWQuCisKKyhkZWZpbmUgYWxyZWFkeS13YXJuZWQgJygpKQor Cis7OzsgQ29tZW50YXJ5IGZyb20gU1JGSSAxMjUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24KKzs7 OworOzs7IENvbXBhcmF0b3JzIGNvbnRhaW4gYSB0eXBlIHRlc3QgcHJlZGljYXRlLCB3aGljaCBp bXBsZW1lbnRhdGlvbnMKKzs7OyBvZiB0aGUgaGFzaC10YWJsZS1zZXQhIHByb2NlZHVyZSBjYW4g dXNlIHRvIHJlamVjdCBpbnZhbGlkIGtleXMuCis7OzsgVGhhdCdzIGhhcmQgdG8gZG8gd2l0aG91 dCBzYWNyaWZpY2luZyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggUjZSUworOzs7IGFuZC9vciBTUkZJ IDY5IGFuZC9vciBTUkZJIDEyNiBoYXNoIHRhYmxlcy4KKzs7OworOzs7IEZ1bGwgaW50ZXJvcGVy YWJpbGl0eSBtZWFucyB0aGUgaGFzaCB0YWJsZXMgaW1wbGVtZW50ZWQgaGVyZSBhcmUKKzs7OyBp bnRlcmNoYW5nZWFibGUgd2l0aCB0aGUgU1JGSSAxMjYgaGFzaHRhYmxlcyB1c2VkIHRvIGltcGxl bWVudCB0aGVtLgorOzs7IFNSRkkgNjkgYW5kIFI2UlMgYW5kIFNSRkkgMTI2IGhhc2h0YWJsZXMg ZG9uJ3QgY29udGFpbiBjb21wYXJhdG9ycywKKzs7OyBzbyBhbnkgYXNzb2NpYXRpb24gYmV0d2Vl biBhIGhhc2ggdGFibGUgYW5kIGl0cyBjb21wYXJhdG9yIHdvdWxkIGhhdmUKKzs7OyB0byBiZSBt YWludGFpbmVkIG91dHNpZGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGhhc2ggdGFibGVzIHRoZW1z ZWx2ZXMsCis7Ozsgd2hpY2ggaXMgcHJvYmxlbWF0aWMgdW5sZXNzIHdlYWsgcG9pbnRlcnMgYXJl IGF2YWlsYWJsZS4KKzs7OworOzs7IE5vdCBhbGwgb2YgdGhlIGhhc2ggdGFibGVzIGltcGxlbWVu dGVkIGhlcmUgd2lsbCBoYXZlIGNvbXBhcmF0b3JzCis7OzsgYXNzb2NpYXRlZCB3aXRoIHRoZW0g YW55d2F5LCBiZWNhdXNlIGFuIGVxdWl2YWxlbmNlIHByb2NlZHVyZQorOzs7IGFuZCBoYXNoIGZ1 bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhhc2ggdGFibGUgaW5zdGVhZCBvZgorOzs7 IGEgY29tcGFyYXRvciAoYWx0aG91Z2ggdGhhdCB1c2FnZSBpcyBkZXByZWNhdGVkIGJ5IFNSRkkg MTI1KS4KKzs7OworOzs7IE9uZSB3YXkgdG8gcHJlc2VydmUgaW50ZXJvcGVyYWJpbGl0eSB3aGls ZSBlbmZvcmNpbmcgYSBjb21wYXJhdG9yJ3MKKzs7OyB0eXBlIHRlc3QgaXMgdG8gaW5jb3Jwb3Jh dGUgdGhhdCB0ZXN0IGludG8gYSBoYXNoIHRhYmxlJ3MgaGFzaAorOzs7IGZ1bmN0aW9uLiAgVGhl IGFkdmFudGFnZSBvZiBkb2luZyB0aGF0IHNob3VsZCBiZSB3ZWlnaGVkIGFnYWluc3QKKzs7OyB0 aGVzZSBkaXNhZHZhbnRhZ2VzOgorOzs7Cis7OzsgICAgIElmIHRoZSB0eXBlIHRlc3QgaXMgc2xv dywgdGhlbiBoYXNoaW5nIHdvdWxkIGFsc28gYmUgc2xvd2VyLgorOzs7Cis7OzsgICAgIFRoZSBS NlJTLCBTUkZJIDY5LCBhbmQgU1JGSSAxMjYgQVBJcyBhbGxvdyBleHRyYWN0aW9uIG9mCis7Ozsg ICAgIGEgaGFzaCBmdW5jdGlvbiBmcm9tIHNvbWUgaGFzaCB0YWJsZXMuCis7OzsgICAgIFNvbWUg cHJvZ3JhbW1lcnMgbWlnaHQgZXhwZWN0IHRoYXQgaGFzaCBmdW5jdGlvbiB0byBiZSB0aGUKKzs7 OyAgICAgaGFzaCBmdW5jdGlvbiBlbmNhcHN1bGF0ZWQgYnkgdGhlIGNvbXBhcmF0b3IgKGluIHRo ZSBzZW5zZQorOzs7ICAgICBvZiBlcT8sIHBlcmhhcHMpIGV2ZW4gdGhvdWdoIHRoaXMgQVBJIG1h a2VzIG5vIHN1Y2ggZ3VhcmFudGVlCis7OzsgICAgIChhbmQgZXh0cmFjdGlvbiBvZiB0aGF0IGhh c2ggZnVuY3Rpb24gZnJvbSBhbiBleGlzdGluZyBoYXNoCis7OzsgICAgIHRhYmxlIGNhbiBvbmx5 IGJlIGRvbmUgYnkgY2FsbGluZyBhIGRlcHJlY2F0ZWQgcHJvY2VkdXJlKS4KKworOzsgSWYgJWVu Zm9yY2UtY29tcGFyYXRvci10eXBlLXRlc3RzIGlzIHRydWUsIHRoZW4gbWFrZS1oYXNoLXRhYmxl LAorOzsgd2hlbiBwYXNzZWQgYSBjb21wYXJhdG9yLCB3aWxsIHVzZSBhIGhhc2ggZnVuY3Rpb24g dGhhdCBlbmZvcmNlcworOzsgdGhlIGNvbXBhcmF0b3IncyB0eXBlIHRlc3QuCisKKyhkZWZpbmUg JWVuZm9yY2UtY29tcGFyYXRvci10eXBlLXRlc3RzICN0KQorCis7OzsgRG9uJ3QgdXNlIEhBU0gt RlVOQ1RJT04gaWYgRVFVSVYgaXMgYSAoa25vd24pIHJlZmluZW1lbnQgb2YgRVFVQUw/CisoZGVm aW5lICglZ2V0LWhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiBlcXVpdiBoYXNoLWZ1bmN0aW9uKQor ICAoaWYgKG9yIChlcT8gZXE/IGVxdWl2KQorICAgICAgICAgIChlcT8gZXF2PyBlcXVpdikKKyAg ICAgICAgICAoZXE/IGVxdWFsPyBlcXVpdikKKyAgICAgICAgICAoZXE/IHN0cmluZz0/IGVxdWl2 KSkKKyAgICAgIDs7IExldCBHRU5FUklDLUhBU0gtVEFCTEVTIGRlY2lkZSBhIGJldHRlciBIQVNI LUZVTkNUSU9OCisgICAgICAjZgorICAgICAgOzsgTm90IHJlcXVpcmVkIGJ5IHNwZWNpZmljYXRp b24sIGJ1dCBpbXBsZW1lbnRlZCBieSBzdGFuZGFyZAorICAgICAgOzsgaW1wbGVtZW50YXRpb24K KyAgICAgIChpZiAoZXE/IHN5bWJvbD0/IGVxdWl2KQorICAgICAgICAgIHN5bWJvbC1oYXNoCisg ICAgICAgICAgaGFzaC1mdW5jdGlvbikpKQorCis7OzsgR2l2ZW4gYSBjb21wYXJhdG9yLCByZXR1 cm4gaXRzIGhhc2ggZnVuY3Rpb24sIHBvc3NpYmx5IGF1Z21lbnRlZAorOzs7IGJ5IHRoZSBjb21w YXJhdG9yJ3MgdHlwZSB0ZXN0LgorKGRlZmluZSAoJWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBj b21wYXJhdG9yKQorICAobGV0ICgob2theT8gKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0 ZSBjb21wYXJhdG9yKSkKKyAgICAgICAgKGhhc2gtZnVuY3Rpb24gKCVnZXQtaGFzaC10YWJsZS1o YXNoLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoY29tcGFyYXRvci1lcXVhbGl0 eS1wcmVkaWNhdGUgY29tcGFyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb21wYXJh dG9yLWhhc2gtZnVuY3Rpb24gY29tcGFyYXRvcikpKSkKKyAgICAoYW5kIGhhc2gtZnVuY3Rpb24K KyAgICAgICAgIChpZiAoYW5kICVlbmZvcmNlLWNvbXBhcmF0b3ItdHlwZS10ZXN0cworICAgICAg ICAgICAgICAgICAgOzsgVGhlc2UgcHJvY2VkdXJlcyBhbHJlYWR5IHRlc3QgdHlwZQorICAgICAg ICAgICAgICAgICAgKG5vdCAob3IgKGVxPyBoYXNoLWZ1bmN0aW9uIHN5bWJvbC1oYXNoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVxPyBoYXNoLWZ1bmN0aW9uIHN0cmluZy1jaS1oYXNo KSkpKQorICAgICAgICAgICAgIChsYW1iZGEgKHgpCisgICAgICAgICAgICAgICAoY29uZCAoKG5v dCAob2theT8geCkpCisgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJLZXkgcmVqZWN0ZWQg YnkgaGFzaC10YWJsZSBjb21wYXJhdG9yIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmF0b3IpKQorICAgICAgICAgICAg ICAgICAgICAgKGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAoaGFzaC1mdW5jdGlvbiB4KSkp KQorICAgICAgICAgICAgIGhhc2gtZnVuY3Rpb24pKSkpCisKKzs7OyBXZSBsZXQgR0VORVJJQy1I QVNILVRBQkxFUyBkZWNpZGUgd2hpY2ggd2Vha25lc3NlcyBhcmUgc3VwcG9ydGVkCisoZGVmaW5l ICglY2hlY2stb3B0aW9uYWwtYXJndW1lbnRzIHByb2NuYW1lIGFyZ3MpCisgIChpZiAobWVtcSAn dGhyZWFkLXNhZmUgYXJncykKKyAgICAgIChlcnJvciAoc3RyaW5nLWFwcGVuZCAoc3ltYm9sLT5z dHJpbmcgcHJvY25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogdW5zdXBwb3J0 ZWQgb3B0aW9uYWwgYXJndW1lbnQocykiKQorICAgICAgICAgICAgIGFyZ3MpKSkKKworKGRlZmlu ZSAoJWdldC1oYXNoLXRhYmxlLXdlYWtuZXNzIGFyZ3MpCisgIChjb25kCisgICAoKG1lbXEgJ2Vw aGVtZXJhbC12YWx1ZXMgYXJncykKKyAgICAoaWYgKG9yIChtZW1xICdlcGhlbWVyYWwta2V5cyBh cmdzKQorICAgICAgICAgICAgKG1lbXEgJ3dlYWsta2V5cyBhcmdzKSkKKyAgICAgICAgJ2VwaGVt ZXJhbC1rZXktYW5kLXZhbHVlCisgICAgICAgICdlcGhlbWVyYWwtdmFsdWUpKQorICAgKChtZW1x ICdlcGhlbWVyYWwta2V5cyBhcmdzKQorICAgIChpZiAobWVtcSAnd2Vhay12YWx1ZXMgYXJncykK KyAgICAgICAgJ2VwaGVtZXJhbC1rZXktYW5kLXZhbHVlCisgICAgICAgICdlcGhlbWVyYWwta2V5 KSkKKyAgICgobWVtcSAnd2Vhay1rZXlzIGFyZ3MpCisgICAgKGlmIChtZW1xICd3ZWFrLXZhbHVl cyBhcmdzKQorICAgICAgICAnd2Vhay1rZXktYW5kLXZhbHVlCisgICAgICAgICd3ZWFrLWtleSkp CisgICAoKG1lbXEgJ3dlYWstdmFsdWVzIGFyZ3MpCisgICAgJ3dlYWstdmFsdWUpCisgICAoZWxz ZSAjZikpKQorCisoZGVmaW5lICglZ2V0LWhhc2gtdGFibGUtY2FwYWNpdHkgYXJncykKKyAgKG9y IChmaW5kIGludGVnZXI/IGFyZ3MpIDEpKQorCisMCis7OzsgQ29uc3RydWN0b3JzLgorCis7Ozsg Q29tZW50YXJ5IGZyb20gU1JGSSAxMjUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24KKzs7OworOzs7 IFRoZSBmaXJzdCBhcmd1bWVudCBjYW4gYmUgYSBjb21wYXJhdG9yIG9yIGFuIGVxdWFsaXR5IHBy ZWRpY2F0ZS4KKzs7OworOzs7IElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNvbXBhcmF0b3Is IGFueSByZW1haW5pbmcgYXJndW1lbnRzCis7OzsgYXJlIGltcGxlbWVudGF0aW9uLWRlcGVuZGVu dCwgYnV0IGEgbm9uLW5lZ2F0aXZlIGV4YWN0IGludGVnZXIKKzs7OyBzaG91bGQgYmUgaW50ZXJw cmV0ZWQgYXMgYW4gaW5pdGlhbCBjYXBhY2l0eSBhbmQgdGhlIHN5bWJvbHMKKzs7OyB0aHJlYWQt c2FmZSwgd2Vhay1rZXlzLCBlcGhlbWVyYWwta2V5cywgd2Vhay12YWx1ZXMsIGFuZAorOzs7IGVt cGhlbWVyYWwtdmFsdWVzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBzcGVjaWFsbHkuICAoVGhlc2UK Kzs7OyBzcGVjaWFsIHN5bWJvbHMgYXJlIGRpc3RpbmN0IGZyb20gdGhlIGFuYWxvZ291cyBzcGVj aWFsIHN5bWJvbHMKKzs7OyBpbiBTUkZJIDEyNi4pCis7OzsKKzs7OyBJZiB0aGUgZmlyc3QgYXJn dW1lbnQgaXMgbm90IGEgY29tcGFyYXRvciwgdGhlbiBpdCBoYWQgYmV0dGVyCis7OzsgYmUgYW4g ZXF1YWxpdHkgcHJlZGljYXRlICh3aGljaCBpcyBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1KS4KKzs7 OyBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50IGFuZCBpcyBhIHByb2NlZHVyZSwgdGhl biBpdCdzCis7OzsgYSBoYXNoIGZ1bmN0aW9uICh3aGljaCBpcyBhbGxvd2VkIG9ubHkgZm9yIHRo ZSBkZXByZWNhdGVkIGNhc2UKKzs7OyBpbiB3aGljaCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4g ZXF1YWxpdHkgcHJlZGljYXRlKS4gIElmIGEKKzs7OyBzZWNvbmQgYXJndW1lbnQgaXMgbm90IGEg cHJvY2VkdXJlLCB0aGVuIGl0J3Mgc29tZSBraW5kIG9mCis7OzsgaW1wbGVtZW50YXRpb24tZGVw ZW5kZW50IG9wdGlvbmFsIGFyZ3VtZW50LCBhcyBhcmUgYWxsIGFyZ3VtZW50cworOzs7IGJleW9u ZCB0aGUgc2Vjb25kLgorOzs7Cis7OzsgU1JGSSAxMjggZGVmaW5lcyBtYWtlLWVxLWNvbXBhcmF0 b3IsIG1ha2UtZXF2LWNvbXBhcmF0b3IsIGFuZAorOzs7IG1ha2UtZXF1YWwtY29tcGFyYXRvciBw cm9jZWR1cmVzIHdob3NlIGhhc2ggZnVuY3Rpb24gaXMgdGhlCis7OzsgZGVmYXVsdC1oYXNoIHBy b2NlZHVyZSBvZiBTUkZJIDEyOCwgd2hpY2ggaXMgaW5hcHByb3ByaWF0ZQorOzs7IGZvciB1c2Ug d2l0aCBlcT8gYW5kIGVxdj8gdW5sZXNzIHRoZSBvYmplY3QgYmVpbmcgaGFzaGVkIGlzCis7Ozsg bmV2ZXIgbXV0YXRlZC4gIE5laXRoZXIgU1JGSSAxMjUgbm9yIDEyOCBwcm92aWRlIGFueSB3YXkg dG8KKzs7OyBkZWZpbmUgYSBjb21wYXJhdG9yIHdob3NlIGhhc2ggZnVuY3Rpb24gaXMgdHJ1bHkg Y29tcGF0aWJsZQorOzs7IHdpdGggdGhlIHVzZSBvZiBlcT8gb3IgZXF2PyBhcyBhbiBlcXVhbGl0 eSBwcmVkaWNhdGUuCis7OzsKKzs7OyBUaGF0IHdvdWxkIG1ha2UgU1JGSSAxMjUgYWxtb3N0IGFz IGJhZCBhcyBTUkZJIDY5IGlmIG5vdCBmb3IKKzs7OyB0aGUgZm9sbG93aW5nIHBhcmFncmFwaCBv ZiBTUkZJIDEyNToKKzs7OworOzs7ICAgICBJbXBsZW1lbnRhdGlvbnMgYXJlIHBlcm1pdHRlZCB0 byBpZ25vcmUgdXNlci1zcGVjaWZpZWQKKzs7OyAgICAgaGFzaCBmdW5jdGlvbnMgaW4gY2VydGFp biBjaXJjdW1zdGFuY2VzLiBTcGVjaWZpY2FsbHksCis7OzsgICAgIGlmIHRoZSBlcXVhbGl0eSBw cmVkaWNhdGUsIHdoZXRoZXIgcGFzc2VkIGFzIHBhcnQgb2YgYQorOzs7ICAgICBjb21wYXJhdG9y IG9yIGV4cGxpY2l0bHksIGlzIG1vcmUgZmluZS1ncmFpbmVkIChpbiB0aGUKKzs7OyAgICAgc2Vu c2Ugb2YgUjdSUy1zbWFsbCBzZWN0aW9uIDYuMSkgdGhhbiBlcXVhbD8sIHRoZQorOzs7ICAgICBp bXBsZW1lbnRhdGlvbiBpcyBmcmVlIOKAlCBpbmRlZWQsIGlzIGVuY291cmFnZWQg4oCUIHRvCis7 OzsgICAgIGlnbm9yZSB0aGUgdXNlci1zcGVjaWZpZWQgaGFzaCBmdW5jdGlvbiBhbmQgdXNlIHNv bWV0aGluZworOzs7ICAgICBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFRoaXMgYWxsb3dzIHRo ZSB1c2Ugb2YgYWRkcmVzc2VzCis7OzsgICAgIGFzIGhhc2hlcywgaW4gd2hpY2ggY2FzZSB0aGUg a2V5cyBtdXN0IGJlIHJlaGFzaGVkIGlmCis7OzsgICAgIHRoZXkgYXJlIG1vdmVkIGJ5IHRoZSBn YXJiYWdlIGNvbGxlY3Rvci4gU3VjaCBhIGhhc2gKKzs7OyAgICAgZnVuY3Rpb24gaXMgdW5zYWZl IHRvIHVzZSBvdXRzaWRlIHRoZSBjb250ZXh0IG9mCis7OzsgICAgIGltcGxlbWVudGF0aW9uLXBy b3ZpZGVkIGhhc2ggdGFibGVzLiBJdCBjYW4gb2YgY291cnNlIGJlCis7OzsgICAgIGV4cG9zZWQg YnkgYW4gaW1wbGVtZW50YXRpb24gYXMgYW4gZXh0ZW5zaW9uLCB3aXRoCis7OzsgICAgIHN1aXRh YmxlIHdhcm5pbmdzIGFnYWluc3QgaW5hcHByb3ByaWF0ZSB1c2VzLgorOzs7Cis7OzsgVGhhdCBn aXZlcyBpbXBsZW1lbnRhdGlvbnMgcGVybWlzc2lvbiB0byBkbyBzb21ldGhpbmcgbW9yZQorOzs7 IHVzZWZ1bCwgYnV0IHdoZW4gc2hvdWxkIGltcGxlbWVudGF0aW9ucyB0YWtlIGFkdmFudGFnZSBv ZgorOzs7IHRoYXQgcGVybWlzc2lvbj8gIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc3Vw ZXJpb3IKKzs7OyBzb2x1dGlvbiBwcm92aWRlZCBieSBTUkZJIDEyNiB3aGVuZXZlcjoKKzs7Owor Ozs7ICAgICBBIGNvbXBhcmF0b3IgaXMgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50IGFuZCBpdHMg ZXF1YWxpdHkKKzs7OyAgICAgcHJlZGljYXRlIGlzIGVxPyBvciBlcXY/LgorOzs7Cis7OzsgICAg IFRoZSBlcT8gb3IgZXF2PyBwcm9jZWR1cmUgaXMgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50Cis7 OzsgICAgICh3aGljaCBpcyBhIGRlcHJlY2F0ZWQgdXNhZ2UpLgorCisoZGVmaW5lIChtYWtlLWhh c2gtdGFibGUgY29tcGFyYXRvci9lcXVpdiAuIHJlc3QpCisgIChpZiAoY29tcGFyYXRvcj8gY29t cGFyYXRvci9lcXVpdikKKyAgICAgIChsZXQgKChlcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1w cmVkaWNhdGUgY29tcGFyYXRvci9lcXVpdikpCisgICAgICAgICAgICAoaGFzaC1mdW5jdGlvbiAo JWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBjb21wYXJhdG9yL2VxdWl2KSkpCisgICAgICAgICgl bWFrZS1oYXNoLXRhYmxlIGVxdWl2IGhhc2gtZnVuY3Rpb24gcmVzdCkpCisgICAgICAobGV0KiAo KGVxdWl2IGNvbXBhcmF0b3IvZXF1aXYpCisgICAgICAgICAgICAgKGhhc2gtZnVuY3Rpb24gKGlm IChhbmQgKG5vdCAobnVsbD8gcmVzdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHByb2NlZHVyZT8gKGNhciByZXN0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjYXIgcmVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpKQor ICAgICAgICAgICAgIChyZXN0IChpZiBoYXNoLWZ1bmN0aW9uIChjZHIgcmVzdCkgcmVzdCkpKQor ICAgICAgICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdzcmZpLTY5LXN0eWxlOm1ha2UtaGFz aC10YWJsZSkKKyAgICAgICAgKCVtYWtlLWhhc2gtdGFibGUgZXF1aXYgKCVnZXQtaGFzaC10YWJs ZS1oYXNoLWZ1bmN0aW9uIGVxdWl2IGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3QpKSkpCisKKyhkZWZpbmUgKCVtYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1m dW5jdGlvbiBvcHRzKQorICAoJWNoZWNrLW9wdGlvbmFsLWFyZ3VtZW50cyAnbWFrZS1oYXNoLXRh YmxlIG9wdHMpCisgIChsZXQgKCh3ZWFrbmVzcyAoJWdldC1oYXNoLXRhYmxlLXdlYWtuZXNzIG9w dHMpKQorICAgICAgICAoY2FwYWNpdHkgKCVnZXQtaGFzaC10YWJsZS1jYXBhY2l0eSBvcHRzKSkp CisgICAgKGdlbjptYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5jdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICM6Y2FwYWNpdHkgY2FwYWNpdHkgIzp3ZWFrbmVzcyB3ZWFrbmVzcykp KQorCisoZGVmaW5lIChoYXNoLXRhYmxlIGNvbXBhcmF0b3IgLiBhcmdzKQorICAobGV0ICgoZXF1 aXYgKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNvbXBhcmF0b3IpKQorICAgICAgICAo aGFzaC1mdW5jdGlvbiAoJWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBjb21wYXJhdG9yKSkpCisg ICAgKGFwcGx5IGdlbjpoYXNoLXRhYmxlIChpZiBoYXNoLWZ1bmN0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGlzdCBlcXVpdiBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXF1aXYpCisgICAgICAgICAgIGFyZ3MpKSkKKworKGRlZmluZSAo aGFzaC10YWJsZS11bmZvbGQgc3RvcD8gbWFwcGVyIHN1Y2Nlc3NvciBzZWVkIGNvbXBhcmF0b3Ig LiByZXN0KQorICAobGV0ICgoZXF1aXYgKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNv bXBhcmF0b3IpKQorICAgICAgICAoaGFzaC1mdW5jdGlvbiAoJWNvbXBhcmF0b3ItaGFzaC1mdW5j dGlvbiBjb21wYXJhdG9yKSkKKyAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vh a25lc3MgcmVzdCkpCisgICAgICAgIChjYXBhY2l0eSAoJWdldC1oYXNoLXRhYmxlLWNhcGFjaXR5 IHJlc3QpKSkKKyAgICAoZ2VuOmhhc2gtdGFibGUtdW5mb2xkIHN0b3A/IG1hcHBlciBzdWNjZXNz b3Igc2VlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXYgaGFzaC1mdW5jdGlvbiAj OndlYWtuZXNzIHdlYWtuZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IGNhcGFjaXR5KSkpCisKKyhkZWZpbmUgKGFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGNvbXBhcmF0 b3IvZXF1aXYgLiByZXN0KQorICAoaWYgKHByb2NlZHVyZT8gY29tcGFyYXRvci9lcXVpdikKKyAg ICAgIChsZXQqICgoZXF1aXYgY29tcGFyYXRvci9lcXVpdikKKyAgICAgICAgICAgICAoaGFzaC1m dW5jdGlvbiAoYW5kIChwYWlyPyByZXN0KSAocHJvY2VkdXJlPyAoY2FyIHJlc3QpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciByZXN0KSkpCisgICAgICAgICAgICAgKHJl c3QgKGlmIGhhc2gtZnVuY3Rpb24gKGNkciByZXN0KSByZXN0KSkKKyAgICAgICAgICAgICAoaGFz aC1mdW5jdGlvbiAoJWdldC1oYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gZXF1aXYgaGFzaC1mdW5j dGlvbikpCisgICAgICAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vha25lc3Mg cmVzdCkpCisgICAgICAgICAgICAgKGNhcGFjaXR5ICglZ2V0LWhhc2gtdGFibGUtY2FwYWNpdHkg cmVzdCkpKQorICAgICAgICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdzcmZpLTY5LXN0eWxl OmFsaXN0LT5oYXNoLXRhYmxlKQorICAgICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0 IGVxdWl2IGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNh cGFjaXR5IGNhcGFjaXR5ICM6d2Vha25lc3Mgd2Vha25lc3MpKQorICAgICAgKGxldCogKChlcXVp diAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY29tcGFyYXRvci9lcXVpdikpCisgICAg ICAgICAgICAgKGhhc2gtZnVuY3Rpb24gKCVjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcGFy YXRvci9lcXVpdikpCisgICAgICAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vh a25lc3MgcmVzdCkpCisgICAgICAgICAgICAgKGNhcGFjaXR5ICglZ2V0LWhhc2gtdGFibGUtY2Fw YWNpdHkgcmVzdCkpKQorICAgICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGVxdWl2 IGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IGNhcGFjaXR5ICM6d2Vha25lc3Mgd2Vha25lc3MpKSkpCisKKwwKKzs7OzsgQWNjZXNzaW5nIHRh YmxlIGl0ZW1zCisKKyhkZWZpbmUgaGFzaC10YWJsZS1yZWYgZ2VuOmhhc2gtdGFibGUtcmVmKQor KGRlZmluZSBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGdlbjpoYXNoLXRhYmxlLXJlZi9kZWZhdWx0 KQorCisMCis7OzsgUHJlZGljYXRlcy4KKworKGRlZmluZSBoYXNoLXRhYmxlPyBnZW46aGFzaC10 YWJsZT8pCisoZGVmaW5lIGhhc2gtdGFibGUtZW1wdHk/IGdlbjpoYXNoLXRhYmxlLWVtcHR5PykK KyhkZWZpbmUgaGFzaC10YWJsZS1jb250YWlucz8gZ2VuOmhhc2gtdGFibGUtY29udGFpbnM/KQor KGRlZmluZSBoYXNoLXRhYmxlLW11dGFibGU/IGdlbjpoYXNoLXRhYmxlLW11dGFibGU/KQorCiso ZGVmaW5lIChoYXNoLXRhYmxlPT8gdmFsdWUtY29tcGFyYXRvciBodDEgaHQyKQorICAoZ2VuOmhh c2gtdGFibGU9PyAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgdmFsdWUtY29tcGFyYXRv cikKKyAgICAgICAgICAgICAgICAgICAgaHQxIGh0MikpCisKKwwKKzs7OyBNdXRhdG9ycy4KKwor KGRlZmluZSBoYXNoLXRhYmxlLXNldCEgZ2VuOmhhc2gtdGFibGUtc2V0ISkKKyhkZWZpbmUgaGFz aC10YWJsZS1kZWxldGUhIGdlbjpoYXNoLXRhYmxlLWRlbGV0ZSEpCisoZGVmaW5lIGhhc2gtdGFi bGUtaW50ZXJuISBnZW46aGFzaC10YWJsZS1pbnRlcm4hKQorKGRlZmluZSBoYXNoLXRhYmxlLXVw ZGF0ZSEgZ2VuOmhhc2gtdGFibGUtdXBkYXRlISkKKyhkZWZpbmUgaGFzaC10YWJsZS11cGRhdGUh L2RlZmF1bHQgZ2VuOmhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0KQorKGRlZmluZSBoYXNoLXRh YmxlLXBvcCEgZ2VuOmhhc2gtdGFibGUtcG9wISkKKyhkZWZpbmUgKGhhc2gtdGFibGUtY2xlYXIh IGh0KSAoZ2VuOmhhc2gtdGFibGUtY2xlYXIhIGh0KSkKKworDAorOzsgVGhlIHdob2xlIGhhc2gg dGFibGUuCisKKyhkZWZpbmUgaGFzaC10YWJsZS1zaXplIGdlbjpoYXNoLXRhYmxlLXNpemUpCiso ZGVmaW5lIGhhc2gtdGFibGUta2V5cyBnZW46aGFzaC10YWJsZS1rZXlzKQorKGRlZmluZSBoYXNo LXRhYmxlLXZhbHVlcyBnZW46aGFzaC10YWJsZS12YWx1ZXMpCisoZGVmaW5lIGhhc2gtdGFibGUt ZW50cmllcyBnZW46aGFzaC10YWJsZS1lbnRyaWVzKQorKGRlZmluZSBoYXNoLXRhYmxlLWZpbmQg Z2VuOmhhc2gtdGFibGUtZmluZCkKKyhkZWZpbmUgaGFzaC10YWJsZS1jb3VudCBnZW46aGFzaC10 YWJsZS1jb3VudCkKKworDAorOzs7IE1hcHBpbmcgYW5kIGZvbGRpbmcuCisKKyhkZWZpbmUgaGFz aC10YWJsZS1tYXAtPmxpc3QgZ2VuOmhhc2gtdGFibGUtbWFwLT5saXN0KQorKGRlZmluZSBoYXNo LXRhYmxlLWZvci1lYWNoIGdlbjpoYXNoLXRhYmxlLWZvci1lYWNoKQorKGRlZmluZSBoYXNoLXRh YmxlLXBydW5lISBnZW46aGFzaC10YWJsZS1wcnVuZSEpCisoZGVmaW5lIGhhc2gtdGFibGUtbWFw ISBnZW46aGFzaC10YWJsZS1tYXAhKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLW1hcCBwcm9jIGNv bXBhcmF0b3IgaHQpCisgIChsZXQgKChlcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNh dGUgY29tcGFyYXRvcikpCisgICAgICAgIChoYXNoLWZ1bmN0aW9uICglY29tcGFyYXRvci1oYXNo LWZ1bmN0aW9uIGNvbXBhcmF0b3IpKSkKKyAgICAoZ2VuOmhhc2gtdGFibGUtbWFwIHByb2MgaHQg ZXF1aXYgaGFzaC1mdW5jdGlvbikpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWZvbGQgcHJvYyBp bml0IGh0KQorICAoaWYgKGhhc2gtdGFibGU/IHByb2MpCisgICAgICAoYmVnaW4gKGlzc3VlLXdh cm5pbmctZGVwcmVjYXRlZCAnc3JmaS02OS1zdHlsZTpoYXNoLXRhYmxlLWZvbGQpCisgICAgICAg ICAgICAgKGhhc2gtdGFibGUtZm9sZCBpbml0IGh0IHByb2MpKQorICAgICAgKGdlbjpoYXNoLXRh YmxlLWZvbGQgcHJvYyBpbml0IGh0KSkpCisKKworDAorOzs7IENvcHlpbmcgYW5kIGNvbnZlcnNp b24uCisKKyhkZWZpbmUgaGFzaC10YWJsZS0+YWxpc3QgZ2VuOmhhc2gtdGFibGUtPmFsaXN0KQor CisoZGVmaW5lKiAoaGFzaC10YWJsZS1jb3B5IGh0ICM6b3B0aW9uYWwgbXV0YWJsZSkKKyAgKGdl bjpoYXNoLXRhYmxlLWNvcHkgaHQgIzptdXRhYmxlIG11dGFibGUpKQorCisoZGVmaW5lIChoYXNo LXRhYmxlLWVtcHR5LWNvcHkgaHQpCisgIChnZW46aGFzaC10YWJsZS1lbXB0eS1jb3B5IGh0KSkK KworDAorOzs7IEhhc2ggdGFibGVzIGFzIHNldHMuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdW5p b24hIGh0MSBodDIpCisgICh1bmxlc3MgKGVxPyAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2Ut ZnVuY3Rpb24gaHQxKQorICAgICAgICAgICAgICAgKGdlbjpoYXNoLXRhYmxlLWVxdWl2YWxlbmNl LWZ1bmN0aW9uIGh0MikpCisgICAgKGVycm9yICJIYXNoIHRhYmxlcyBoYXZlIGRpZmZlcmVudCBl cXVpdmFsZW5jZSBmdW5jdGlvbnMiIGh0MSBodDIpKQorICAoZ2VuOmhhc2gtdGFibGUtdW5pb24h IGh0MSBodDIpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWludGVyc2VjdGlvbiEgaHQxIGh0MikK KyAgKHVubGVzcyAoZXE/IChnZW46aGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodDEp CisgICAgICAgICAgICAgICAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQy KSkKKyAgICAoZXJyb3IgIkhhc2ggdGFibGVzIGhhdmUgZGlmZmVyZW50IGVxdWl2YWxlbmNlIGZ1 bmN0aW9ucyIgaHQxIGh0MikpCisgIChnZW46aGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hIGh0MSBo dDIpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWRpZmZlcmVuY2UhIGh0MSBodDIpCisgICh1bmxl c3MgKGVxPyAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQxKQorICAgICAg ICAgICAgICAgKGdlbjpoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0MikpCisgICAg KGVycm9yICJIYXNoIHRhYmxlcyBoYXZlIGRpZmZlcmVudCBlcXVpdmFsZW5jZSBmdW5jdGlvbnMi IGh0MSBodDIpKQorICAoZ2VuOmhhc2gtdGFibGUtZGlmZmVyZW5jZSEgaHQxIGh0MikpCisKKyhk ZWZpbmUgKGhhc2gtdGFibGUteG9yISBodDEgaHQyKQorICAodW5sZXNzIChlcT8gKGdlbjpoYXNo LXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0MSkKKyAgICAgICAgICAgICAgIChnZW46aGFz aC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodDIpKQorICAgIChlcnJvciAiSGFzaCB0YWJs ZXMgaGF2ZSBkaWZmZXJlbnQgZXF1aXZhbGVuY2UgZnVuY3Rpb25zIiBodDEgaHQyKSkKKyAgKGdl bjpoYXNoLXRhYmxlLXhvciEgaHQxIGh0MikpCisKKworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzs7Cis7OzsgVGhlIGZv bGxvd2luZyBwcm9jZWR1cmVzIGFyZSBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1LCBidXQgbXVzdAor Ozs7IGJlIGV4cG9ydGVkIG5vbmV0aGVsZXNzLgorOzs7Cis7OzsgUHJvZ3JhbXMgdGhhdCBpbXBv cnQgdGhlIChzcmZpIDEyNSkgbGlicmFyeSBtdXN0IHJlbmFtZSB0aGUKKzs7OyBkZXByZWNhdGVk IHN0cmluZy1oYXNoIGFuZCBzdHJpbmctY2ktaGFzaCBwcm9jZWR1cmVzIHRvIGF2b2lkCis7Ozsg Y29uZmxpY3Qgd2l0aCB0aGUgc3RyaW5nLWhhc2ggYW5kIHN0cmluZy1jaS1oYXNoIHByb2NlZHVy ZXMKKzs7OyBleHBvcnRlZCBieSBTUkZJIDEyNiBhbmQgU1JGSSAxMjguCis7OzsKKzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsK KworKGRlZmluZSAoZGVwcmVjYXRlZDpoYXNoIG9iaiAuIHJlc3QpCisgIChpc3N1ZS13YXJuaW5n LWRlcHJlY2F0ZWQgJ2hhc2gpCisgIChhcHBseSBnZW46aGFzaCBvYmogcmVzdCkpCisKKyhkZWZp bmUgKGRlcHJlY2F0ZWQ6c3RyaW5nLWhhc2ggb2JqIC4gcmVzdCkKKyAgKGlzc3VlLXdhcm5pbmct ZGVwcmVjYXRlZCAnc3JmaS0xMjU6c3RyaW5nLWhhc2gpCisgIChhcHBseSBzdHJpbmctaGFzaCBv YmogcmVzdCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6c3RyaW5nLWNpLWhhc2ggb2JqIC4gcmVz dCkKKyAgKGlzc3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnc3JmaS0xMjU6c3RyaW5nLWNpLWhhc2gp CisgIChhcHBseSBzdHJpbmctY2ktaGFzaCBvYmogcmVzdCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0 ZWQ6aGFzaC1ieS1pZGVudGl0eSBvYmogLiByZXN0KQorICAoaXNzdWUtd2FybmluZy1kZXByZWNh dGVkICdoYXNoLWJ5LWlkZW50aXR5KQorICAoYXBwbHkgZ2VuOmhhc2gtYnktaWRlbnRpdHkgb2Jq IHJlc3QpKQorCisoZGVmaW5lIChkZXByZWNhdGVkOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVu Y3Rpb24gaHQpCisgIChpc3N1ZS13YXJuaW5nLWRlcHJlY2F0ZWQgJ2hhc2gtdGFibGUtZXF1aXZh bGVuY2UtZnVuY3Rpb24pCisgIChnZW46aGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBo dCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KQor ICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24pCisg IChnZW46aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KSkKKworKGRlZmluZSAoZGVwcmVjYXRl ZDpoYXNoLXRhYmxlLWV4aXN0cz8gaHQga2V5KQorICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVk ICdoYXNoLXRhYmxlLWV4aXN0cz8pCisgIChnZW46aGFzaC10YWJsZS1jb250YWlucz8gaHQga2V5 KSkKKworKGRlZmluZSAoZGVwcmVjYXRlZDpoYXNoLXRhYmxlLXdhbGsgaHQgcHJvYykKKyAgKGlz c3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnaGFzaC10YWJsZS13YWxrKQorICAoZ2VuOmhhc2gtdGFi bGUtZm9yLWVhY2ggcHJvYyBodCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1t ZXJnZSEgaHQxIGh0MikKKyAgKGlzc3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnaGFzaC10YWJsZS1t ZXJnZSEpCisgIChnZW46aGFzaC10YWJsZS11bmlvbiEgaHQxIGh0MikpCisKKzs7IGVvZgpkaWZm IC0tZ2l0IGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbSBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0K aW5kZXggYTJmNzNiMzI5Li4zODUzN2FhYWMgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvTWFrZWZp bGUuYW0KKysrIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQpAQCAtMTYyLDYgKzE2Miw3IEBAIFND TV9URVNUUyA9IHRlc3RzLzAwLWluaXRpYWwtZW52LnRlc3QJCVwKIAkgICAgdGVzdHMvc3JmaS05 OC50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTEwNS50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZp LTExMS50ZXN0CQkJXAorCSAgICB0ZXN0cy9zcmZpLTEyNS50ZXN0CQkJXAogCSAgICB0ZXN0cy9z cmZpLTEyNi50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTEyOC50ZXN0CQkJXAogCSAgICB0ZXN0 cy9zcmZpLTQudGVzdAkJCVwKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUu dGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLmU1YmE5NWVkMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjUudGVzdApAQCAtMCwwICsxLDg2MCBAQAorOzs7OyBzcmZpLTEyNS50 ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyNSAtKi0gc2NoZW1lIC0qLQorOzs7OworOzs7 OyAJQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7 OworOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCis7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsKKzs7Ozsg VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7Ozsg TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7OyBUaGUgZm9sbG93aW5n IHRlc3RzIGFyZSB0aGUgdGVzdHMgZnJvbSBTUkZJLTEyNSByZWZlcmVuY2UKKzs7OyBpbXBsZW1l bnRhdGlvbiBwb3J0ZWQgdG8gR3VpbGUgdGVzdCBzdWl0ZS4KKworOzs7IENvcHlyaWdodCAoQykg V2lsbGlhbSBEIENsaW5nZXIgMjAxNS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKzs7OworOzs7IFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u Cis7Ozsgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24KKzs7OyBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLAorOzs7IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsCis7OzsgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwKKzs7OyBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLAorOzs7IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorOzs7Cis7OzsgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUKKzs7OyBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKzs7OworOzs7IFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorOzs7IEVY UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRgorOzs7IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKzs7OyBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorOzs7IENMQUlNLCBE QU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsCis7OzsgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUKKzs7OyBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KKworOzs7IENvbWVudGFyeSBmcm9tIHN0YW5kYXJkIFNSRkkg MTI1IHRlc3RzOgorOzs7Cis7OzsgVGhpcyBpcyBhIHZlcnkgc2hhbGxvdyBzYW5pdHkgdGVzdCBm b3IgaGFzaCB0YWJsZXMuCis7OzsKKzs7OyBUZXN0cyBtYXJrZWQgYnkgYSAiRklYTUU6IGdsYXNz LWJveCIgY29tbWVudCB0ZXN0IGJlaGF2aW9yIG9mIHRoZQorOzs7IHJlZmVyZW5jZSBpbXBsZW1l bnRhdGlvbiB0aGF0IGlzIG5vdCByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4KKworKGRl ZmluZS1tb2R1bGUgKHRlc3Qtc3JmaS0xMjUpCisgICM6ZHVwbGljYXRlcyAobGFzdCkKKyAgIzp1 c2UtbW9kdWxlICh0ZXN0LXN1aXRlIGxpYikKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTI4 KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjUpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTEpCisgICM6dXNlLW1vZHVsZSAocm5ycyBieXRldmVjdG9ycykKKyAgIzp1c2UtbW9kdWxl ICgocm5ycyBiYXNlKSAjOnNlbGVjdCAoc3ltYm9sPT8pKQorICAjOnVzZS1tb2R1bGUgKChybnJz KSAjOnNlbGVjdCAobGlzdC1zb3J0IGd1YXJkKSkpCisKKyhkZWZpbmUgKGJ5dGV2ZWN0b3IgLiBh cmdzKQorICAodTgtbGlzdC0+Ynl0ZXZlY3RvciBhcmdzKSkKKworKGRlZmluZSBkZWZhdWx0LWNv bXBhcmF0b3IgKG1ha2UtZGVmYXVsdC1jb21wYXJhdG9yKSkKKworKGRlZmluZSBudW1iZXItY29t cGFyYXRvcgorICAobWFrZS1jb21wYXJhdG9yIHJlYWw/ID0gPCAobGFtYmRhICh4KSAoaW5leGFj dC0+ZXhhY3QgKGFicyAocm91bmQgeCkpKSkpKQorCisoZGVmaW5lIHN0cmluZy1jb21wYXJhdG9y CisgIChtYWtlLWNvbXBhcmF0b3Igc3RyaW5nPyBzdHJpbmc9PyBzdHJpbmc8PyBzdHJpbmctaGFz aCkpCisKKyhkZWZpbmUgc3RyaW5nLWNpLWNvbXBhcmF0b3IKKyAgKG1ha2UtY29tcGFyYXRvciBz dHJpbmc/IHN0cmluZy1jaT0/IHN0cmluZy1jaTw/IHN0cmluZy1jaS1oYXNoKSkKKworKGRlZmlu ZSBlcS1jb21wYXJhdG9yIChtYWtlLWVxLWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGVxdi1jb21w YXJhdG9yIChtYWtlLWVxdi1jb21wYXJhdG9yKSkKKworOzs7IFJldHVybnMgYW4gaW1tdXRhYmxl IGhhc2ggdGFibGUuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdGFidWxhdGUgY29tcGFyYXRvciBu IHByb2MpCisgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGNvbXBhcmF0b3IpKSkKKyAgICAo ZG8gKChpIDAgKCsgaSAxKSkpCisgICAgICAgICgoPSBpIG4pCisgICAgICAgICAoaGFzaC10YWJs ZS1jb3B5IGh0KSkKKyAgICAgIChjYWxsLXdpdGgtdmFsdWVzCisgICAgICAgICAgKGxhbWJkYSAo KQorICAgICAgICAgICAgKHByb2MgaSkpCisgICAgICAgIChsYW1iZGEgKGtleSB2YWwpCisgICAg ICAgICAgKGhhc2gtdGFibGUtc2V0ISBodCBrZXkgdmFsKSkpKSkpCisKKzs7OyBDb25zdHJ1Y3Rv cnMuCisKKyhkZWZpbmUgaHQtZGVmYXVsdCAobWFrZS1oYXNoLXRhYmxlIGRlZmF1bHQtY29tcGFy YXRvcikpCisKKyhkZWZpbmUgaHQtZXEgKG1ha2UtaGFzaC10YWJsZSBlcS1jb21wYXJhdG9yICdy YW5kb20tYXJndW1lbnQgImFub3RoZXIiKSkKKworKGRlZmluZSBodC1lcXYgKG1ha2UtaGFzaC10 YWJsZSBlcXYtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgaHQtZXEyIChtYWtlLWhhc2gtdGFibGUg ZXE/KSkKKworKGRlZmluZSBodC1lcXYyIChtYWtlLWhhc2gtdGFibGUgZXF2PykpCisKKyhkZWZp bmUgaHQtZXF1YWwgKG1ha2UtaGFzaC10YWJsZSBlcXVhbD8pKQorCisoZGVmaW5lIGh0LXN0cmlu ZyAobWFrZS1oYXNoLXRhYmxlIHN0cmluZz0/KSkKKworKGRlZmluZSBodC1zdHJpbmctY2kgKG1h a2UtaGFzaC10YWJsZSBzdHJpbmctY2k9PykpCisKKyhkZWZpbmUgaHQtc3ltYm9sIChtYWtlLWhh c2gtdGFibGUgc3ltYm9sPT8pKSAgICA7IEZJWE1FOiBnbGFzcy1ib3gKKworKGRlZmluZSBodC1m aXhudW0gKG1ha2UtaGFzaC10YWJsZSA9IGFicykpCisKKzs7IFNwZWMgc2F5cyBIQVNILVRBQkxF IHJldHVybnMgYW4gaW1tdXRhYmxlIGhhc2ggdGFibGUsIHNvIHdlIHB1dCBhCis7OyBIQVNILVRB QkxFLUNPUFkgaGVyZQorKGRlZmluZSBodC1kZWZhdWx0MgorICAoaGFzaC10YWJsZS1jb3B5Cisg ICAoaGFzaC10YWJsZSBkZWZhdWx0LWNvbXBhcmF0b3IgJ2ZvbyAnYmFyIDEwMS4zICJmZXZlciIg Jyh4IHkgeikgJyMoKSkKKyAgICN0KSkKKworKGRlZmluZSBodC1maXhudW0yCisgIChoYXNoLXRh YmxlLXRhYnVsYXRlIG51bWJlci1jb21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgIDEw CisgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGkpICh2YWx1ZXMgKCogaSBpKSBpKSkp KQorCisoZGVmaW5lIGh0LXN0cmluZzIKKyAgKGhhc2gtdGFibGUtdW5mb2xkIChsYW1iZGEgKHMp ICg9IDAgKHN0cmluZy1sZW5ndGggcykpKQorICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo cykgKHZhbHVlcyBzIChzdHJpbmctbGVuZ3RoIHMpKSkKKyAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKHMpIChzdWJzdHJpbmcgcyAwICgtIChzdHJpbmctbGVuZ3RoIHMpIDEpKSkKKyAgICAg ICAgICAgICAgICAgICAgICJwcmVmaXhlcyIKKyAgICAgICAgICAgICAgICAgICAgIHN0cmluZy1j b21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAnaWdub3JlZDEgJ2lnbm9yZWQyICJpZ25v cmVkMyIgJyMoaWdub3JlZCA0IDUpKSkKKworKGRlZmluZSBodC1zdHJpbmctY2kyCisgIChhbGlz dC0+aGFzaC10YWJsZSAnKCgiIiAuIDApICgiTWFyeSIgLiA0KSAoIlBhdWwiIC4gNCkgKCJQZXRl ciIgLiA1KSkKKyAgICAgICAgICAgICAgICAgICAgIHN0cmluZy1jaS1jb21wYXJhdG9yCisgICAg ICAgICAgICAgICAgICAgICAiaWdub3JlZDEiICdpZ25vcmVkMikpCisKKyhkZWZpbmUgaHQtc3lt Ym9sMgorICAoYWxpc3QtPmhhc2gtdGFibGUgJygobWFyeSAuIHRyYXZlcnMpIChub2VsIC4gc3Rv b2tleSkgKHBldGVyIC4geWFycm93KSkKKyAgICAgICAgICAgICAgICAgICAgIGVxPykpCisKKyhk ZWZpbmUgaHQtZXF1YWwyCisgIChhbGlzdC0+aGFzaC10YWJsZSAnKCgoZWR3YXJkKSAuIGFiYmV5 KQorICAgICAgICAgICAgICAgICAgICAgICAoKGRhc2hpZWxsKSAuIGhhbW1ldHQpCisgICAgICAg ICAgICAgICAgICAgICAgICgoZWR3YXJkKSAuIHRlYWNoKQorICAgICAgICAgICAgICAgICAgICAg ICAoKG1hcmspIC4gdHdhaW4pKQorICAgICAgICAgICAgICAgICAgICAgZXF1YWw/CisgICAgICAg ICAgICAgICAgICAgICAoY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uIGRlZmF1bHQtY29tcGFyYXRv cikpKQorCisoZGVmaW5lIHRlc3QtdGFibGVzCisgIChsaXN0IGh0LWRlZmF1bHQgICBodC1kZWZh dWx0MiAgIDsgaW5pdGlhbCBrZXlzOiBmb28sIDEwMS4zLCAoeCB5IHopCisgICAgICAgIGh0LWVx ICAgICAgICBodC1lcTIgICAgICAgIDsgaW5pdGlhbGx5IGVtcHR5CisgICAgICAgIGh0LWVxdiAg ICAgICBodC1lcXYyICAgICAgIDsgaW5pdGlhbGx5IGVtcHR5CisgICAgICAgIGh0LWVxdWFsICAg ICBodC1lcXVhbDIgICAgIDsgaW5pdGlhbCBrZXlzOiAoZWR3YXJkKSwgKGRhc2hpZWxsKSwgKG1h cmspCisgICAgICAgIGh0LXN0cmluZyAgICBodC1zdHJpbmcyICAgIDsgaW5pdGlhbCBrZXlzOiAi cCwgInByIiwgLi4uLCAicHJlZml4ZXMiCisgICAgICAgIGh0LXN0cmluZy1jaSBodC1zdHJpbmct Y2kyIDsgaW5pdGlhbCBrZXlzOiAiIiwgIk1hcnkiLCAiUGF1bCIsICJQZXRlciIKKyAgICAgICAg aHQtc3ltYm9sICAgIGh0LXN5bWJvbDIgICAgOyBpbml0aWFsIGtleXM6IG1hcnksIG5vZWwsIHBl dGVyCisgICAgICAgIGh0LWZpeG51bSAgICBodC1maXhudW0yKSkgIDsgaW5pdGlhbCBrZXlzOiAw LCAxLCA0LCA5LCAuLi4sIDgxCisKKworKHdpdGgtdGVzdC1wcmVmaXggIlNSRkktMTI1IgorCisg ICh3aXRoLXRlc3QtcHJlZml4ICJwcmVkaWNhdGVzIgorCisgICAgKHBhc3MtaWYtZXF1YWwgImhh c2gtdGFibGU/IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgKGFwcGVuZCAnKCNmICNmKSAo bWFwIChsYW1iZGEgKHgpICN0KSB0ZXN0LXRhYmxlcykpCisgICAgICAobWFwIGhhc2gtdGFibGU/ CisgICAgICAgICAgIChjb25zICcjKCkKKyAgICAgICAgICAgICAgICAgKGNvbnMgZGVmYXVsdC1j b21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgIHRlc3QtdGFibGVzKSkpKQorCisgICAg KHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY29udGFpbnM/IGZ1bmN0aW9ucyBwcm9wZXJseSIK KyAgICAgICAgJygjZiAjdCAjZiAjZiAjZiAjZiAjZiAjdCAjZiAjdCAjZiAjdCAjZiAjdCAjZiAj dCkKKyAgICAgIChtYXAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgdGVzdC10YWJs ZXMKKyAgICAgICAgICAgJyhmb28gMTAxLjMKKyAgICAgICAgICAgICAgICAgeCAieSIKKyAgICAg ICAgICAgICAgICAgKDE0IDE1KSAjXG5ld2xpbmUKKyAgICAgICAgICAgICAgICAgKGVkd2FyZCkg KG1hcmspCisgICAgICAgICAgICAgICAgICJwIiAicHJlZiIKKyAgICAgICAgICAgICAgICAgIm1p a2UiICJQQVVMIgorICAgICAgICAgICAgICAgICBqYW5lIG5vZWwKKyAgICAgICAgICAgICAgICAg MCA0KSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1jb250YWlucz8gZnVuY3Rp b25zIHByb3Blcmx5IgorICAgICAgICAobWFwIChsYW1iZGEgKHgpICNmKSB0ZXN0LXRhYmxlcykK KyAgICAgIChtYXAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgdGVzdC10YWJsZXMK KyAgICAgICAgICAgYCgsKGJ5dGV2ZWN0b3IpIDQ3LjkKKyAgICAgICAgICAgICAnIygpICcoKQor ICAgICAgICAgICAgIGZvbyBiYXIKKyAgICAgICAgICAgICAxOSAoaGVucnkpCisgICAgICAgICAg ICAgInAiICJwZXJwIgorICAgICAgICAgICAgICJtaWtlIiAiTm9lbCIKKyAgICAgICAgICAgICBq YW5lIHBhdWwKKyAgICAgICAgICAgICAwIDUpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNo LXRhYmxlLWVtcHR5PyBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICcoI3QgI2YgI3QgI3Qg I3QgI3QgI3QgI2YgI3QgI2YgI3QgI2YgI3QgI2YgI3QgI2YpCisgICAgICAobWFwIGhhc2gtdGFi bGUtZW1wdHk/IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxl PT8gaXMgcmVmbGVjdGl2ZSIKKyAgICAgICAgKG1hcCAobGFtYmRhICh4KSAjdCkgdGVzdC10YWJs ZXMpCisgICAgICAobWFwIChsYW1iZGEgKGh0MSBodDIpIChoYXNoLXRhYmxlPT8gZGVmYXVsdC1j b21wYXJhdG9yIGh0MSBodDIpKQorICAgICAgICAgICB0ZXN0LXRhYmxlcworICAgICAgICAgICB0 ZXN0LXRhYmxlcykpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZT0/IGZ1bmN0aW9u cyBwcm9wZXJseSIKKyAgICAgICAgJygjZiAjZiAjdCAjdCAjdCAjdCAjZiAjZiAjZiAjZiAjZiAj ZiAjZiAjZiAjZiAjZikKKyAgICAgIChtYXAgKGxhbWJkYSAoaHQxIGh0MikgKGhhc2gtdGFibGU9 PyBkZWZhdWx0LWNvbXBhcmF0b3IgaHQxIGh0MikpCisgICAgICAgICAgIHRlc3QtdGFibGVzCisg ICAgICAgICAgIChkbyAoKHRhYmxlcyAocmV2ZXJzZSB0ZXN0LXRhYmxlcykgKGNkZHIgdGFibGVz KSkKKyAgICAgICAgICAgICAgICAocmV2ICcoKSAoY29ucyAoY2FyIHRhYmxlcykgKGNvbnMgKGNh ZHIgdGFibGVzKSByZXYpKSkpCisgICAgICAgICAgICAgICAoKG51bGw/IHRhYmxlcykKKyAgICAg ICAgICAgICAgICByZXYpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1tdXRh YmxlPyBmdW5jdGlvbnMgcHJvcGVybHkgb24gbXV0YWJsZSBoYXNoIHRhYmxlcyAxIgorICAgICAg ICAnKCN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICNmKQorICAg ICAgKG1hcCBoYXNoLXRhYmxlLW11dGFibGU/IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlm LWVxdWFsICJoYXNoLXRhYmxlLW11dGFibGU/IGZ1bmN0aW9ucyBwcm9wZXJseSBvbiBpbW11dGFi bGUgaGFzaCB0YWJsZXMiCisgICAgICAgIChtYXAgKGxhbWJkYSAoeCkgI2YpIHRlc3QtdGFibGVz KQorICAgICAgKG1hcCBoYXNoLXRhYmxlLW11dGFibGU/IChtYXAgaGFzaC10YWJsZS1jb3B5IHRl c3QtdGFibGVzKSkpCisKKyAgICAocGFzcy1pZiAiaGFzaC10YWJsZS1tdXRhYmxlPyBmdW5jdGlv bnMgcHJvcGVybHkgb24gbXV0YWJsZSBoYXNoIHRhYmxlcyAyIgorICAgICAgKGhhc2gtdGFibGUt bXV0YWJsZT8gKGhhc2gtdGFibGUtY29weSBodC1maXhudW0yICN0KSkpKQorCisgICh3aXRoLXRl c3QtcHJlZml4ICJhY2Nlc3NvcnMiCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1y ZWYgd2hlbiBrZXkgaXMgbm90IGluIHRhYmxlIDEiCisgICAgICAgIChtYXAgKGxhbWJkYSAoaHQp ICdlcnIpIHRlc3QtdGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAg ICAoZ3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS1yZWYgaHQgJ25vdC1hLWtleSkpKQorICAgICAgICAgICB0ZXN0 LXRhYmxlcykpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1yZWYgd2hlbiBrZXkg aXMgbm90IGluIHRhYmxlIDIiCisgICAgICAgIChtYXAgKGxhbWJkYSAoaHQpICdlcnIpIHRlc3Qt dGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAgICAoZ3VhcmQgKGV4 bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAgICAgICAgICAoaGFz aC10YWJsZS1yZWYgaHQgJ25vdC1hLWtleSAobGFtYmRhICgpICdlcnIpKSkpCisgICAgICAgICAg IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZiB3aGVu IGtleSBpcyBub3QgaW4gdGFibGUgMyIKKyAgICAgICAgKG1hcCAobGFtYmRhIChodCkgJ2Vycikg dGVzdC10YWJsZXMpCisgICAgICAobWFwIChsYW1iZGEgKGh0KQorICAgICAgICAgICAgIChndWFy ZCAoZXhuCisgICAgICAgICAgICAgICAgICAgICAoZWxzZSAnZXJyKSkKKyAgICAgICAgICAgICAg IChoYXNoLXRhYmxlLXJlZiBodCAnbm90LWEta2V5IChsYW1iZGEgKCkgJ2VycikgdmFsdWVzKSkp CisgICAgICAgICAgIHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRh YmxlLXJlZiBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICcoZXJyICJmZXZlciIgZXJyIGVy ciBlcnIgZXJyIGVyciB0d2FpbiBlcnIgNCBlcnIgNCBlcnIgc3Rvb2tleSBlcnIgMikKKyAgICAg IChtYXAgKGxhbWJkYSAoaHQga2V5KQorICAgICAgICAgICAgIChndWFyZCAoZXhuCisgICAgICAg ICAgICAgICAgICAgICAoZWxzZSAnZXJyKSkKKyAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXJl ZiBodCBrZXkpKSkKKyAgICAgICAgICAgdGVzdC10YWJsZXMKKyAgICAgICAgICAgJyhmb28gMTAx LjMKKyAgICAgICAgICAgICAgICAgeCAieSIKKyAgICAgICAgICAgICAgICAgKDE0IDE1KSAjXG5l d2xpbmUKKyAgICAgICAgICAgICAgICAgKGVkd2FyZCkgKG1hcmspCisgICAgICAgICAgICAgICAg ICJwIiAicHJlZiIKKyAgICAgICAgICAgICAgICAgIm1pa2UiICJQQVVMIgorICAgICAgICAgICAg ICAgICBqYW5lIG5vZWwKKyAgICAgICAgICAgICAgICAgMCA0KSkpCisKKyAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1yZWYgYWNjZXB0cyBGQUlMVVJFIGFuZCBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAgICcoZWggImZldmVyIiBlaCBlaCBlaCBlaCBlaCB0d2FpbiBlaCA0IGVoIDQg ZWggc3Rvb2tleSBlaCAyKQorICAgICAgKG1hcCAobGFtYmRhIChodCBrZXkpCisgICAgICAgICAg ICAgKGhhc2gtdGFibGUtcmVmIGh0IGtleSAobGFtYmRhICgpICdlaCkpKQorICAgICAgICAgICB0 ZXN0LXRhYmxlcworICAgICAgICAgICAnKGZvbyAxMDEuMworICAgICAgICAgICAgICAgICB4ICJ5 IgorICAgICAgICAgICAgICAgICAoMTQgMTUpICNcbmV3bGluZQorICAgICAgICAgICAgICAgICAo ZWR3YXJkKSAobWFyaykKKyAgICAgICAgICAgICAgICAgInAiICJwcmVmIgorICAgICAgICAgICAg ICAgICAibWlrZSIgIlBBVUwiCisgICAgICAgICAgICAgICAgIGphbmUgbm9lbAorICAgICAgICAg ICAgICAgICAwIDQpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZiBhY2Nl cHRzIEZBSUxVUkUgYW5kIFNVQ0NFU1MgYW5kIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAg JyhlaCAoImZldmVyIikgZWggZWggZWggZWggZWggKHR3YWluKSBlaCAoNCkgZWggKDQpIGVoIChz dG9va2V5KSBlaCAoMikpCisgICAgICAobWFwIChsYW1iZGEgKGh0IGtleSkKKyAgICAgICAgICAg ICAoZ3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS1yZWYgaHQga2V5IChsYW1iZGEgKCkgJ2VoKSBsaXN0KSkpCisg ICAgICAgICAgIHRlc3QtdGFibGVzCisgICAgICAgICAgICcoZm9vIDEwMS4zCisgICAgICAgICAg ICAgICAgIHggInkiCisgICAgICAgICAgICAgICAgICgxNCAxNSkgI1xuZXdsaW5lCisgICAgICAg ICAgICAgICAgIChlZHdhcmQpIChtYXJrKQorICAgICAgICAgICAgICAgICAicCIgInByZWYiCisg ICAgICAgICAgICAgICAgICJtaWtlIiAiUEFVTCIKKyAgICAgICAgICAgICAgICAgamFuZSBub2Vs CisgICAgICAgICAgICAgICAgIDAgNCkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFi bGUtcmVmL2RlZmF1bHQgdXNlcyBERUZBVUxUIgorICAgICAgICAobWFwIChsYW1iZGEgKGh0KSAn ZWgpIHRlc3QtdGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAgICAo Z3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VoKSkKKyAgICAgICAgICAg ICAgIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0ICdub3QtYS1rZXkgJ2VoKSkpCisgICAgICAg ICAgIHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZi9k ZWZhdWx0IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJyhlaCAiZmV2ZXIiIGVoIGVoIGVo IGVoIGVoIHR3YWluIGVoIDQgZWggNCBlaCBzdG9va2V5IGVoIDIpCisgICAgICAobWFwIChsYW1i ZGEgKGh0IGtleSkKKyAgICAgICAgICAgICAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodCBrZXkg J2VoKSkKKyAgICAgICAgICAgdGVzdC10YWJsZXMKKyAgICAgICAgICAgJyhmb28gMTAxLjMKKyAg ICAgICAgICAgICAgICAgeCAieSIKKyAgICAgICAgICAgICAgICAgKDE0IDE1KSAjXG5ld2xpbmUK KyAgICAgICAgICAgICAgICAgKGVkd2FyZCkgKG1hcmspCisgICAgICAgICAgICAgICAgICJwIiAi cHJlZiIKKyAgICAgICAgICAgICAgICAgIm1pa2UiICJQQVVMIgorICAgICAgICAgICAgICAgICBq YW5lIG5vZWwKKyAgICAgICAgICAgICAgICAgMCA0KSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4 ICJtdXRhdG9ycyIKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgd2l0aCBu byBrZXktdmFsdWUgcGFpcnMgZG9lcyBub3RoaW5nIgorICAgICAgICAnKCkKKyAgICAgIChiZWdp biAoaGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAobGlzdC1zb3J0IDwg KGhhc2gtdGFibGUta2V5cyBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFz aC10YWJsZS1zZXQhIGZ1bmN0aW9ucyBwcm9wZXJseSAxIgorICAgICAgICAnKDEyMSAxNDQgMTY5 KQorICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLXNldCEgaHQtZml4bnVtIDEyMSAxMSAxNDQgMTIg MTY5IDEzKQorICAgICAgICAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1rZXlzIGh0LWZp eG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rpb25z IHByb3Blcmx5IDIiCisgICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMjEgMTQ0 IDE2OSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCAwIDEgMSA0IDIgOSAzIDE2IDQgMjUgNSAzNiA2IDQ5IDcg NjQgOCA4MSA5KQorICAgICAgICAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1rZXlzIGh0 LWZpeG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rp b25zIHByb3Blcmx5IDMiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiA3IDggOSkK KyAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVt IGkgJ2Vycm9yKSkKKyAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5 IDY0IDgxKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIHdpdGgg bm8ga2V5cyBkb2VzIG5vdGhpbmciCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiA3 IDggOSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1kZWxldGUhIGh0LWZpeG51bSkKKyAgICAg ICAgICAgICAobWFwIChsYW1iZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0LWZpeG51 bSBpICdlcnJvcikpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYg MjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxl dGUhIGZ1bmN0aW9ucyBwcm9wZXJseSAxIgorICAgICAgICAnKC0xIDEyIC0xIDAgLTEgMiAtMSA0 IC0xIDYgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1kZWxldGUhIGh0LWZpeG51 bSAxIDkgMjUgNDkgODEgMjAwIDEyMSAxNjkgODEgMSkKKyAgICAgICAgICAgICAobWFwIChsYW1i ZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0LWZpeG51bSBpIC0xKSkKKyAgICAgICAg ICAgICAgICAgICcoMTY5IDE0NCAxMjEgMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSkpKSkKKwor ICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWRlbGV0ZSEgZnVuY3Rpb25zIHByb3Blcmx5 IDIiCisgICAgICAgICcoLTEgMTIgLTEgLTEgLTEgMiAtMSA0IC0xIC0xIC0xIDggLTEpCisgICAg ICAoYmVnaW4gKGhhc2gtdGFibGUtZGVsZXRlISBodC1maXhudW0gMjAwIDEwMCAwIDgxIDM2KQor ICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQt Zml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2 IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtaW50 ZXJuISBmdW5jdGlvbnMgcHJvcGVybHkgMSIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAtMSA0 IC0xIC0xIC0xIDggLTEpCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtaW50ZXJuISBodC1maXhu dW0gMTY5IChsYW1iZGEgKCkgMTMpKQorICAgICAgICAgICAgIChoYXNoLXRhYmxlLWludGVybiEg aHQtZml4bnVtIDEyMSAobGFtYmRhICgpIDExKSkKKyAgICAgICAgICAgICAoaGFzaC10YWJsZS1p bnRlcm4hIGh0LWZpeG51bSAgIDAgKGxhbWJkYSAoKSAgMCkpCisgICAgICAgICAgICAgKGhhc2gt dGFibGUtaW50ZXJuISBodC1maXhudW0gICAxIChsYW1iZGEgKCkgIDEpKQorICAgICAgICAgICAg IChoYXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtICAgMSAobGFtYmRhICgpIDk5KSkKKyAgICAg ICAgICAgICAoaGFzaC10YWJsZS1pbnRlcm4hIGh0LWZpeG51bSAxMjEgKGxhbWJkYSAoKSA2Nikp CisgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBo dC1maXhudW0gaSAtMSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkg MTYgMjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1t YXAtPmxpc3QgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoIygwIDApICMoMSAxKSAj KDQgMikgIygxNiA0KSAjKDY0IDgpICMoMTIxIDExKSAjKDE0NCAxMikgIygxNjkgMTMpKQorICAg ICAgKGxpc3Qtc29ydCAobGFtYmRhICh2MSB2MikgKDwgKHZlY3Rvci1yZWYgdjEgMCkgKHZlY3Rv ci1yZWYgdjIgMCkpKQorICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgdmVj dG9yIGh0LWZpeG51bSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtcHJ1bmUh IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJygoMCAwKSAoMSAxKSAoNCAyKSAoMTYgNCkg KDY0IDgpICM7KDEyMSAxMSkgKDE0NCAxMikgIzsoMTY5IDEzKSkKKyAgICAgIChiZWdpbiAoaGFz aC10YWJsZS1wcnVuZSEgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYW5kIChvZGQ/IGtleSkgKD4gdmFsIDEwKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAobGlzdC1zb3J0IChsYW1i ZGEgKGwxIGwyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAoY2FyIGwxKSAoY2FyIGwy KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgbGlzdCBo dC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1pbnRlcm4hIGZ1 bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgICAnKCgwIDApICgxIDEpICg0IDIpICgxNiA0KSAo NjQgOCkgKDEyMSAxMSkgKDE0NCAxMikgKDE2OSAxMykpCisgICAgICAoYmVnaW4gKGhhc2gtdGFi bGUtaW50ZXJuISBodC1maXhudW0gMTY5IChsYW1iZGEgKCkgMTMpKQorICAgICAgICAgICAgICho YXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtIDE0NCAobGFtYmRhICgpIDk5OTkpKQorICAgICAg ICAgICAgIChoYXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtIDEyMSAobGFtYmRhICgpIDExKSkK KyAgICAgICAgICAgICAobGlzdC1zb3J0IChsYW1iZGEgKGwxIGwyKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAoPCAoY2FyIGwxKSAoY2FyIGwyKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgbGlzdCBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1p Zi1lcXVhbCAiaGFzaC10YWJsZS11cGRhdGUhIHdpdGggRkFJTFVSRSBmdW5jdGlvbnMgcHJvcGVy bHkgMSIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAzIDQgLTEgLTEgLTEgOCAtMSkKKyAgICAg IChiZWdpbiAoaGFzaC10YWJsZS11cGRhdGUhIGh0LWZpeG51bSA5IGxlbmd0aCAobGFtYmRhICgp ICcoYSBiIGMpKSkKKyAgICAgICAgICAgICAobWFwIChsYW1iZGEgKGkpIChoYXNoLXRhYmxlLXJl Zi9kZWZhdWx0IGh0LWZpeG51bSBpIC0xKSkKKyAgICAgICAgICAgICAgICAgICcoMTY5IDE0NCAx MjEgMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJo YXNoLXRhYmxlLXVwZGF0ZSEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKDEzIDEyIDEx IDAgMSAyIDMgLTQgLTEgLTEgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS11cGRh dGUhIGh0LWZpeG51bSAxNiAtKQorICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gt dGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygx NjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisgICAgKHBhc3MtaWYt ZXF1YWwgImhhc2gtdGFibGUtdXBkYXRlISB3aXRoIEZBSUxVUkUgZnVuY3Rpb25zIHByb3Blcmx5 IDIiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IC0xIC0xIC0xIDggLTEpCisgICAgICAo YmVnaW4gKGhhc2gtdGFibGUtdXBkYXRlISBodC1maXhudW0gMTYgLSBhYnMpCisgICAgICAgICAg ICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAt MSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkg NjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1 bHQgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IC01 IC0xIC0xIDggLTEpCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0IGh0 LWZpeG51bSAyNSAtIDUpCisgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJs ZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAtMSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAx NDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVh bCAiaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgZnVuY3Rpb25zIHByb3Blcmx5IDIiCisgICAg ICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgLTEgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFz aC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaHQtZml4bnVtIDI1IC0gOTk5KQorICAgICAgICAgICAg IChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEp KQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0 IDgxKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtcG9wISBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAobGV0KiAoKG4wIChoYXNoLXRhYmxlLXNpemUgaHQtZml4bnVtKSkKKyAgICAg ICAgICAgICAoaHQgKGhhc2gtdGFibGUtY29weSBodC1maXhudW0gI3QpKSkKKyAgICAgICAgKGNh bGwtd2l0aC12YWx1ZXMKKyAgICAgICAgICAgIChsYW1iZGEgKCkgKGhhc2gtdGFibGUtcG9wISBo dCkpCisgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgIChhbmQgKD0ga2V5 ICgqIHZhbCB2YWwpKQorICAgICAgICAgICAgICAgICAoPSAoLSBuMCAxKSAoaGFzaC10YWJsZS1z aXplIGh0KSkpKSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtZGVsZXRlISBm dW5jdGlvbnMgcHJvcGVybHkgMiIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAzIDQgNSAtMSAt MSA4IC0xIC0xKQorICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQtZml4bnVtIDc1 KQorICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQg aHQtZml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5 IDE2IDI1IDM2IDQ5IDY0IDc1IDgxKSkpKQorCisgICAgOzsgU3BlYyBzYXlzIEhBU0gtVEFCTEUg cmV0dXJucyBhbiBpbW11dGFibGUgaGFzaCB0YWJsZSwgc28gd2UgcHV0IGEKKyAgICA7OyBIQVNI LVRBQkxFLUNPUFkgaGVyZQorICAgIChsZXQgKChodC1lZyAoaGFzaC10YWJsZS1jb3B5CisgICAg ICAgICAgICAgICAgICAoaGFzaC10YWJsZSBudW1iZXItY29tcGFyYXRvciAxIDEgNCAyIDkgMyAx NiA0IDI1IDUgNjQgOCkKKyAgICAgICAgICAgICAgICAgICN0KSkpCisgICAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAgICAgICAg IDAKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZykpCisgICAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSA0IgorICAgICAgICAg IDAKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZyAyIDcgMjAwMCkpCisgICAgICAo cGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSA1Igor ICAgICAgICAgIDMKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZyAxIDIgNCA3IDY0 IDIwMDApKQorICAgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtZGVsZXRlISBmdW5jdGlvbnMgcHJv cGVybHkgNiIKKyAgICAgICAgKD0gMyAobGVuZ3RoIChoYXNoLXRhYmxlLWtleXMgaHQtZWcpKSkp KQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtcmVmL2RlZmF1bHQgZnVuY3Rpb25z IHByb3Blcmx5IDIiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgLTEgLTEgOCAtMSkK KyAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVt IGkgLTEpKQorICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkgNjQg ODEpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rpb25zIHBy b3Blcmx5IDQiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiAtMSA4IDkpCisgICAg ICAoYmVnaW4gKGhhc2gtdGFibGUtc2V0ISBodC1maXhudW0gMzYgNikKKyAgICAgICAgICAgICAo aGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bSA4MSA5KQorICAgICAgICAgICAgIChtYXAgKGxhbWJk YSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAgICAgICAg ICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY2xlYXIhIGNsZWFycyBoYXNoIHRhYmxlIgor ICAgICAgICAwCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtY2xlYXIhIGh0LWVxKQorICAgICAg ICAgICAgIChoYXNoLXRhYmxlLXNpemUgaHQtZXEpKSkpCisKKyAgKHdpdGgtdGVzdC1wcmVmaXgg InRoZSB3aG9sZSBoYXNoIHRhYmxlIgorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUt c2l6ZSByZXR1cm5zIGNvcnJlY3QgdGFibGUgc2l6ZSIKKyAgICAgICAgMworICAgICAgKGJlZ2lu IChoYXNoLXRhYmxlLXNldCEgaHQtZXEgJ2ZvbyAxMyAnYmFyIDE0ICdiYXogMTgpCisgICAgICAg ICAgICAgKGhhc2gtdGFibGUtc2l6ZSBodC1lcSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhh c2gtdGFibGUtc2l6ZSByZXR1cm5zIGNvcnJlY3QgdGFibGUgc2l6ZSAyIgorICAgICAgICAnKDAg MyAjdCkKKyAgICAgIChsZXQqICgoaHQgKGhhc2gtdGFibGUtZW1wdHktY29weSBodC1lcSkpCisg ICAgICAgICAgICAgKG4wIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChpZ25v cmVkIChoYXNoLXRhYmxlLXNldCEgaHQgJ2ZvbyAxMyAnYmFyIDE0ICdiYXogMTgpKQorICAgICAg ICAgICAgIChuMSAoaGFzaC10YWJsZS1zaXplIGh0KSkpCisgICAgICAgIChsaXN0IG4wIG4xICho YXNoLXRhYmxlPT8gZGVmYXVsdC1jb21wYXJhdG9yIGh0IGh0LWVxKSkpKQorCisgICAgKHBhc3Mt aWYtZXF1YWwgImhhc2gtdGFibGUtc2l6ZSByZXR1cm5zIDAgd2l0aCBlbXB0eSBoYXNoIHRhYmxl IgorICAgICAgICAwCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtY2xlYXIhIGh0LWVxKQorICAg ICAgICAgICAgIChoYXNoLXRhYmxlLXNpemUgaHQtZXEpKSkKKworICAgIChwYXNzLWlmLWVxdWFs ICJoYXNoLXRhYmxlLWZpbmQgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoMTQ0IDEy KQorICAgICAgKGhhc2gtdGFibGUtZmluZCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoPSAxNDQga2V5ICgqIHZhbCB2YWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGlzdCBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjZikpCisgICAgICAgICAgICAgICAgICAgICAgIGh0LWZpeG51bQorICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhICgpIDk5KSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJs ZS1maW5kIGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgICA5OQorICAgICAgKGhhc2gtdGFi bGUtZmluZCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAo PSAxNDQga2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qga2V5IHZh bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpKQorICAgICAgICAgICAgICAgICAg ICAgICBodC1maXhudW0KKyAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSA5OSkpKQor CisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY291bnQgZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAyCisgICAgICAoaGFzaC10YWJsZS1jb3VudCA8PSBodC1maXhudW0pKSkKKwor ICAod2l0aC10ZXN0LXByZWZpeCAibWFwcGluZyBhbmQgZm9sZGluZyIKKworICAgIChwYXNzLWlm LWVxdWFsICJoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAg ICAgICAnKDAgMSAyIDMgNCA1IDYgLTEgOCA5IC0xIDExIDEyIDEzIC0xKQorICAgICAgKG1hcCAo bGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAtMSkpCisgICAg ICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMDAgMTIxIDE0NCAxNjkgMTk2KSkp CisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1tYXAgZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAnKDAgMSA0IDkgMTYgMjUgMzYgLTEgNjQgODEgLTEgMTIxIDE0NCAxNjkgLTEp CisgICAgICAobGV0ICgoaHQgKGhhc2gtdGFibGUtbWFwIChsYW1iZGEgKHZhbCkgKCogdmFsIHZh bCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdi1jb21wYXJhdG9yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LWZpeG51bSkpKQorICAgICAgICAobWFwIChs YW1iZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0IGkgLTEpKQorICAgICAgICAgICAg ICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMDAgMTIxIDE0NCAxNjkgMTk2KSkpKQorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtZm9yLWVhY2ggZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAnKCMoMCAxIDQgOSAxNiAyNSAzNiAtMSA2NCA4MSAtMSAxMjEgMTQ0IDE2OSAt MSkKKyAgICAgICAgICAjKDAgMSAyIDMgIDQgIDUgIDYgLTEgIDggIDkgLTEgIDExICAxMiAgMTMg LTEpKQorICAgICAgKGxldCAoKGtleXMgKG1ha2UtdmVjdG9yIDE1IC0xKSkKKyAgICAgICAgICAg ICh2YWxzIChtYWtlLXZlY3RvciAxNSAtMSkpKQorICAgICAgICAoaGFzaC10YWJsZS1mb3ItZWFj aCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0 b3Itc2V0ISBrZXlzIHZhbCBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZl Y3Rvci1zZXQhIHZhbHMgdmFsIHZhbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0 LWZpeG51bSkKKyAgICAgICAgKGxpc3Qga2V5cyB2YWxzKSkpCisKKyAgICAocGFzcy1pZi1lcXVh bCAiaGFzaC10YWJsZS1tYXAhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJygwIDEgMiAz IC00IC01IC02IC0xIC04IC05IC0xIC0xMSAtMTIgLTEzIC0xKQorICAgICAgKGJlZ2luIChoYXNo LXRhYmxlLW1hcCEgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlmICg8PSAxMCBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoLSB2YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtZml4bnVtKQorICAgICAgICAgICAgIChtYXAg KGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAg ICAgICAgICAgICAgICAgJygwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxIDEwMCAxMjEgMTQ0IDE2 OSAxOTYpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1mb2xkIGZ1bmN0aW9u cyBwcm9wZXJseSAxIgorICAgICAgICAxMworICAgICAgKGhhc2gtdGFibGUtZm9sZCAobGFtYmRh IChrZXkgdmFsIGFjYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKyB2YWwgYWNjKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICBodC1zdHJpbmct Y2kyKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWZvbGQgZnVuY3Rpb25zIHBy b3Blcmx5IDIiCisgICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA2NCA4MSAxMjEgMTQ0IDE2OSkK KyAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1mb2xkIChsYW1iZGEgKGtleSB2YWwgYWNj KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBrZXkgYWNjKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaHQtZml4bnVtKSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4 ICJjb3B5aW5nIGFuZCBjb252ZXJzaW9uIgorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtY29w eSBmdW5jdGlvbnMgcHJvcGVybHkgMSIKKyAgICAgIChoYXNoLXRhYmxlPT8gbnVtYmVyLWNvbXBh cmF0b3IgaHQtZml4bnVtIChoYXNoLXRhYmxlLWNvcHkgaHQtZml4bnVtKSkpCisKKyAgICAocGFz cy1pZiAiaGFzaC10YWJsZS1jb3B5IGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgKGhhc2gt dGFibGU9PyBudW1iZXItY29tcGFyYXRvciBodC1maXhudW0gKGhhc2gtdGFibGUtY29weSBodC1m aXhudW0gI2YpKSkKKworICAgIChwYXNzLWlmICJoYXNoLXRhYmxlLWNvcHkgZnVuY3Rpb25zIHBy b3Blcmx5IDMiCisgICAgICAoaGFzaC10YWJsZT0/IG51bWJlci1jb21wYXJhdG9yIGh0LWZpeG51 bSAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjdCkpKQorCisgICAgKHBhc3MtaWYgImhhc2gt dGFibGUtY29weSBmdW5jdGlvbnMgcHJvcGVybHkgNCIKKyAgICAgIChub3QgKGhhc2gtdGFibGUt bXV0YWJsZT8gKGhhc2gtdGFibGUtY29weSBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZiAi aGFzaC10YWJsZS1jb3B5IGZ1bmN0aW9ucyBwcm9wZXJseSA1IgorICAgICAgKG5vdCAoaGFzaC10 YWJsZS1tdXRhYmxlPyAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjZikpKSkKKworICAgIChw YXNzLWlmICJoYXNoLXRhYmxlLWNvcHkgZnVuY3Rpb25zIHByb3Blcmx5IDYiCisgICAgICAoaGFz aC10YWJsZS1tdXRhYmxlPyAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjdCkpKQorCisgICAg KHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtPmFsaXN0IGZ1bmN0aW9ucyBwcm9wZXJseSAxIgor ICAgICAgICAnKCkKKyAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodC1lcSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS0+YWxpc3QgZnVuY3Rpb25zIHByb3Blcmx5IDIiCisgICAg ICAgICcoKDAgLiAwKQorICAgICAgICAgICgxIC4gMSkKKyAgICAgICAgICAoNCAuIDIpCisgICAg ICAgICAgKDkgLiAzKQorICAgICAgICAgICgxNiAuIC00KQorICAgICAgICAgICgyNSAuIC01KQor ICAgICAgICAgICgzNiAuIC02KQorICAgICAgICAgICg2NCAuIC04KQorICAgICAgICAgICg4MSAu IC05KQorICAgICAgICAgICgxMjEgLiAtMTEpCisgICAgICAgICAgKDE0NCAuIC0xMikKKyAgICAg ICAgICAoMTY5IC4gLTEzKSkKKyAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAoY2Fy IHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQtZml4 bnVtKSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4ICJoYXNoIHRhYmxlcyBhcyBzZXRzIgorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtdW5pb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAx IgorICAgICAgICAnKCgwIC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAy KQorICAgICAgICAgICg5IC4gMykKKyAgICAgICAgICAoMTYgLiAtNCkKKyAgICAgICAgICAoMjUg LiAtNSkKKyAgICAgICAgICAoMzYgLiAtNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAg ICg2NCAuIC04KQorICAgICAgICAgICg4MSAuIC05KQorICAgICAgICAgICgxMjEgLiAtMTEpCisg ICAgICAgICAgKDE0NCAuIC0xMikKKyAgICAgICAgICAoMTY5IC4gLTEzKSkKKyAgICAgIChiZWdp biAoaGFzaC10YWJsZS11bmlvbiEgaHQtZml4bnVtIGh0LWZpeG51bTIpCisgICAgICAgICAgICAg KGxpc3Qtc29ydCAobGFtYmRhICh4IHkpICg8IChjYXIgeCkgKGNhciB5KSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQtZml4bnVtKSkpKQorCisgICAgKHBh c3MtaWYtZXF1YWwgImhhc2gtdGFibGUtdW5pb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAg ICAgICAnKCgwIC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAyKQorICAg ICAgICAgICg5IC4gMykKKyAgICAgICAgICAoMTYgLiA0KQorICAgICAgICAgICgyNSAuIDUpCisg ICAgICAgICAgKDM2IC4gNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAgICg2NCAuIDgp CisgICAgICAgICAgKDgxIC4gOSkKKyAgICAgICAgICAoMTIxIC4gLTExKQorICAgICAgICAgICgx NDQgLiAtMTIpCisgICAgICAgICAgKDE2OSAuIC0xMykpCisgICAgICAobGV0ICgoaHQgKGhhc2gt dGFibGUtY29weSBodC1maXhudW0yICN0KSkpCisgICAgICAgIChoYXNoLXRhYmxlLXVuaW9uISBo dCBodC1maXhudW0pCisgICAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAoY2FyIHgp IChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkK KworICAgIDs7IFNwZWMgaW4gU3BlY2lmaWNhdGlvbiBzZWN0aW9uIHNheXMgIkl0IGlzIGFuIGVy cm9yIHRvIHBhc3MgdHdvCisgICAgOzsgaGFzaCB0YWJsZXMgdGhhdCBoYXZlIGRpZmZlcmVudCBj b21wYXJhdG9ycyBvciBlcXVhbGl0eQorICAgIDs7IHByZWRpY2F0ZXMgdG8gYW55IG9mIHRoZSBw cm9jZWR1cmVzIG9mIHRoaXMgU1JGSS4iCisgICAgOzsKKyAgICA7OyBTbyB3ZSBjcmVhdGUgYSBu ZXcgaGFzaCB0YWJsZSB3aXRoIG51bWJlci1jb21wYXJhdG9yIHdpdGggdGhlCisgICAgOzsgY29u dGVudHMgb2YgaHQtZXF2MgorCisgICAgKGxldCAoKGh0LWZpeG51bTMgKGhhc2gtdGFibGUtbWFw IGlkZW50aXR5IG51bWJlci1jb21wYXJhdG9yIGh0LWVxdjIpKSkKKyAgICAgIChwYXNzLWlmICJo YXNoLXRhYmxlLXVuaW9uISBmdW5jdGlvbnMgcHJvcGVybHkgMyIKKyAgICAgICAgKGJlZ2luICho YXNoLXRhYmxlLXVuaW9uISBodC1maXhudW0zIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAgICho YXNoLXRhYmxlPT8gbnVtYmVyLWNvbXBhcmF0b3IgaHQtZml4bnVtIGh0LWZpeG51bTMpKSkKKwor ICAgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtaW50ZXJzZWN0aW9uISBmdW5jdGlvbnMgcHJvcGVy bHkgMSIKKyAgICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLWludGVyc2VjdGlvbiEgaHQtZml4bnVt MyBodC1maXhudW0pCisgICAgICAgICAgICAgICAoaGFzaC10YWJsZT0/IG51bWJlci1jb21wYXJh dG9yIGh0LWZpeG51bSBodC1maXhudW0zKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUt aW50ZXJzZWN0aW9uISBmdW5jdGlvbnMgcHJvcGVybHkgMiIKKyAgICAgIChiZWdpbiAoaGFzaC10 YWJsZS1pbnRlcnNlY3Rpb24hIGh0LWVxdjIgaHQtZXF2KQorICAgICAgICAgICAgIChoYXNoLXRh YmxlLWVtcHR5PyBodC1lcXYyKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1p bnRlcnNlY3Rpb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAgICAgICAnKCgwIC4gMCkKKyAg ICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAyKQorICAgICAgICAgICg5IC4gMykKKyAg ICAgICAgICAoMTYgLiAtNCkKKyAgICAgICAgICAoMjUgLiAtNSkKKyAgICAgICAgICAoMzYgLiAt NikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAgICg2NCAuIC04KQorICAgICAgICAgICg4 MSAuIC05KSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hIGh0LWZpeG51 bSBodC1maXhudW0yKQorICAgICAgICAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAo Y2FyIHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUtPmFs aXN0IGh0LWZpeG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWludGVy c2VjdGlvbiEgZnVuY3Rpb25zIHByb3Blcmx5IDQiCisgICAgICAgICcoKDQgLiAyKQorICAgICAg ICAgICgyNSAuIC01KSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hCisg ICAgICAgICAgICAgIGh0LWZpeG51bQorICAgICAgICAgICAgICAoYWxpc3QtPmhhc2gtdGFibGUg JygoLTEgLiAtMSkgKDQgLiAyMDIpICgyNSAuIDIwNSkgKDEwMCAuIDEwKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG51bWJlci1jb21wYXJhdG9yKSkKKyAgICAgICAgICAgICAo bGlzdC1zb3J0IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodC1maXhudW0pKSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kaWZmZXJlbmNlISBmdW5jdGlvbnMgcHJvcGVybHkiCisg ICAgICAgICcoKDAgLiAwKQorICAgICAgICAgICgxIC4gMSkKKyAgICAgICAgICAoOSAuIDMpCisg ICAgICAgICAgKDE2IC4gNCkKKyAgICAgICAgICAoMzYgLiA2KQorICAgICAgICAgICg0OSAuIDcp CisgICAgICAgICAgKDY0IC4gOCkKKyAgICAgICAgICAoODEgLiA5KSkKKyAgICAgIChsZXQgKCho dCAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bTIgI3QpKSkKKyAgICAgICAgKGhhc2gtdGFibGUt ZGlmZmVyZW5jZSEKKyAgICAgICAgIGh0CisgICAgICAgICAoYWxpc3QtPmhhc2gtdGFibGUgJygo LTEgLiAtMSkgKDQgLiAyMDIpICgyNSAuIDIwNSkgKDEwMCAuIDEwKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudW1iZXItY29tcGFyYXRvcikpCisgICAgICAgIChsaXN0LXNvcnQgKGxh bWJkYSAoeCB5KSAoPCAoY2FyIHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgIChoYXNo LXRhYmxlLT5hbGlzdCBodCkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXhv ciEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKCgtMSAuIC0xKQorICAgICAgICAgICgw IC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDkgLiAzKQorICAgICAgICAgICgx NiAuIDQpCisgICAgICAgICAgKDM2IC4gNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAg ICg2NCAuIDgpCisgICAgICAgICAgKDgxIC4gOSkKKyAgICAgICAgICAoMTAwIC4gMTApKQorICAg ICAgKGxldCAoKGh0IChoYXNoLXRhYmxlLWNvcHkgaHQtZml4bnVtMiAjdCkpKQorICAgICAgICAo aGFzaC10YWJsZS14b3IhCisgICAgICAgICBodAorICAgICAgICAgKGFsaXN0LT5oYXNoLXRhYmxl ICcoKC0xIC4gLTEpICg0IC4gMjAyKSAoMjUgLiAyMDUpICgxMDAgLiAxMCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbnVtYmVyLWNvbXBhcmF0b3IpKQorICAgICAgICAobGlzdC1zb3J0 IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAgICAgICAgICAo aGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpCisKKyAgICAocGFzcy1pZi1leGNlcHRpb24gImhhc2gt dGFibGUtcmVmIHNpZ25hbHMgJ2tleSBub3QgZm91bmQnIGVycm9yIChhZ2FpbikiCisgICAgICAg ICcobWlzYy1lcnJvciAuICJeS2V5IG5vdCBpbiB0YWJsZSIpCisgICAgICAoaGFzaC10YWJsZS1y ZWYgaHQtZGVmYXVsdCAidGhpcyBrZXkgd29uJ3QgYmUgcHJlc2VudCIpKSkKKworICAod2l0aC10 ZXN0LXByZWZpeCAiZGVwcmVjYXRlZCIKKworICAgIChwYXNzLWlmICJoYXNoIHJldHVybnMgZXhh Y3QgaW50ZWdlcnMiCisgICAgICAobGV0KiAoKHggKGxpc3QgMSAyIDMpKQorICAgICAgICAgICAg ICh5IChjb25zIDEgKGNkciB4KSkpCisgICAgICAgICAgICAgKGgxIChoYXNoIHgpKQorICAgICAg ICAgICAgIChoMiAoaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWludGVnZXI/IGgxKQor ICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAgICAoPSBoMSBoMikp KSkKKworICAgIChwYXNzLWlmICJzdHJpbmctaGFzaCByZXR1cm5zIGV4YWN0IGludGVnZXJzIgor ICAgICAgKGxldCogKCh4ICJhYmNkIikKKyAgICAgICAgICAgICAoeSAoc3RyaW5nLWFwcGVuZCAi YWIiICJjZCIpKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWhhc2ggeCkpCisgICAgICAgICAg ICAgKGgyIChzdHJpbmctaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWludGVnZXI/IGgx KQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAgICAoPSBoMSBo MikpKSkKKworICAgIChwYXNzLWlmICJzdHJpbmctY2ktaGFzaCByZXR1cm5zIGV4YWN0IGludGVn ZXJzIgorICAgICAgKGxldCogKCh4ICJIZWxsbyBUaGVyZSEiKQorICAgICAgICAgICAgICh5ICJo ZWxsbyBUSEVSRSEiKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWNpLWhhc2ggeCkpCisgICAg ICAgICAgICAgKGgyIChzdHJpbmctY2ktaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWlu dGVnZXI/IGgxKQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAg ICAoPSBoMSBoMikpKSkKKworICAgIChwYXNzLWlmICJoYXNoLWJ5LWlkZW50aXR5IHJldHVybnMg ZXhhY3QgaW50ZWdlcnMiCisgICAgICAobGV0KiAoKHggKHZlY3RvciAnYSAiYmNEIiAjXGMgJyhk IDIuNzE4KSAtNDIgKGJ5dGV2ZWN0b3IpICcjKCkgKGJ5dGV2ZWN0b3IgOSAyMCkpKQorICAgICAg ICAgICAgICh5IHgpCisgICAgICAgICAgICAgKGgxIChoYXNoLWJ5LWlkZW50aXR5IHgpKQorICAg ICAgICAgICAgIChoMiAoaGFzaC1ieS1pZGVudGl0eSB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0 LWludGVnZXI/IGgxKQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAg ICAgICAoPSBoMSBoMikpKSkKKworICAgIChwYXNzLWlmICJoYXNoIHJldHVybnMgZXhhY3QgaW50 ZWdlcnMgMiIKKyAgICAgIChsZXQqICgoeCAobGlzdCAxIDIgMykpCisgICAgICAgICAgICAgKHkg KGNvbnMgMSAoY2RyIHgpKSkKKyAgICAgICAgICAgICAoaDEgKGhhc2ggeCA2MCkpCisgICAgICAg ICAgICAgKGgyIChoYXNoIHkgNjApKSkKKyAgICAgICAgKGFuZCAoZXhhY3QtaW50ZWdlcj8gaDEp CisgICAgICAgICAgICAgKGV4YWN0LWludGVnZXI/IGgyKQorICAgICAgICAgICAgICg9IGgxIGgy KSkpKQorCisgICAgKHBhc3MtaWYgInN0cmluZy1oYXNoIHJldHVybnMgZXhhY3QgaW50ZWdlcnMg MiIKKyAgICAgIChsZXQqICgoeCAiYWJjZCIpCisgICAgICAgICAgICAgKHkgKHN0cmluZy1hcHBl bmQgImFiIiAiY2QiKSkKKyAgICAgICAgICAgICAoaDEgKHN0cmluZy1oYXNoIHggOTcpKQorICAg ICAgICAgICAgIChoMiAoc3RyaW5nLWhhc2ggeSA5NykpKQorICAgICAgICAoYW5kIChleGFjdC1p bnRlZ2VyPyBoMSkKKyAgICAgICAgICAgICAoZXhhY3QtaW50ZWdlcj8gaDIpCisgICAgICAgICAg ICAgKD0gaDEgaDIpKSkpCisKKyAgICAocGFzcy1pZiAic3RyaW5nLWNpLWhhc2ggcmV0dXJucyBl eGFjdCBpbnRlZ2VycyAyIgorICAgICAgKGxldCogKCh4ICJIZWxsbyBUaGVyZSEiKQorICAgICAg ICAgICAgICh5ICJoZWxsbyBUSEVSRSEiKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWNpLWhh c2ggeCAxMDEpKQorICAgICAgICAgICAgIChoMiAoc3RyaW5nLWNpLWhhc2ggeSAxMDEpKSkKKyAg ICAgICAgKGFuZCAoZXhhY3QtaW50ZWdlcj8gaDEpCisgICAgICAgICAgICAgKGV4YWN0LWludGVn ZXI/IGgyKQorICAgICAgICAgICAgICg9IGgxIGgyKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gt YnktaWRlbnRpdHkgcmV0dXJucyBleGFjdCBpbnRlZ2VycyAyIgorICAgICAgKGxldCogKCh4ICh2 ZWN0b3IgJ2EgImJjRCIgI1xjICcoZCAyLjcxOCkgLTQyIChieXRldmVjdG9yKSAnIygpIChieXRl dmVjdG9yIDE5IDIwKSkpCisgICAgICAgICAgICAgKHkgeCkKKyAgICAgICAgICAgICAoaDEgKGhh c2gtYnktaWRlbnRpdHkgeCAxMDIpKQorICAgICAgICAgICAgIChoMiAoaGFzaC1ieS1pZGVudGl0 eSB5IDEwMikpKQorICAgICAgICAoYW5kIChleGFjdC1pbnRlZ2VyPyBoMSkKKyAgICAgICAgICAg ICAoZXhhY3QtaW50ZWdlcj8gaDIpCisgICAgICAgICAgICAgKD0gaDEgaDIpKSkpCisKKyAgICAo cGFzcy1pZiAiaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAobGV0ICgoZiAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodC1m aXhudW0pKSkKKyAgICAgICAgKGlmIChwcm9jZWR1cmU/IGYpCisgICAgICAgICAgICAoZiAzNCAz NCkKKyAgICAgICAgICAgICN0KSkpCisKKyAgICAocGFzcy1pZiAiaGFzaC10YWJsZS1oYXNoLWZ1 bmN0aW9uIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgIChsZXQgKChmIChoYXNoLXRhYmxlLWhh c2gtZnVuY3Rpb24gaHQtZml4bnVtKSkpCisgICAgICAgIChpZiAocHJvY2VkdXJlPyBmKQorICAg ICAgICAgICAgKD0gKGYgMzQpIChmIDM0KSkKKyAgICAgICAgICAgICN0KSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS1leGlzdHM/IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAg ICAgJygjdCAjdCAjZiAjZiAjdCAjZiAjZiAjZiAjZiAjdCAjZikKKyAgICAgIChtYXAgKGxhbWJk YSAoa2V5KSAoaGFzaC10YWJsZS1leGlzdHM/IGh0LWZpeG51bTIga2V5KSkKKyAgICAgICAgICAg JygwIDEgMiAzIDQgNSA2IDcgOCA5IDEwKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10 YWJsZS13YWxrIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgKGFwcGx5ICsKKyAgICAgICAg ICAgICAgIChtYXAgKGxhbWJkYSAoeCkgKCogeCB4KSkKKyAgICAgICAgICAgICAgICAgICAgJygw IDEgMiAzIDQgNSA2IDcgOCA5KSkpCisgICAgICAobGV0ICgobiAwKSkKKyAgICAgICAgKGhhc2gt dGFibGUtd2FsayBodC1maXhudW0yCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo a2V5IHZhbCkgKHNldCEgbiAoKyBuIGtleSkpKSkKKyAgICAgICAgbikpCisKKyAgICAocGFzcy1p Zi1lcXVhbCAiaGFzaC10YWJsZS1mb2xkIHdpdGggcmV2ZXJzZWQgYXJndW1lbnRzIGZ1bmN0aW9u cyBwcm9wZXJseSIKKyAgICAgICAgJygwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKQorICAgICAg KGxpc3Qtc29ydCA8IChoYXNoLXRhYmxlLWZvbGQgaHQtZml4bnVtMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCBhY2MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIGtleSBhY2MpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJygpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10 YWJsZS1tZXJnZSEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKCgwIC4gMCkKKyAgICAg ICAgICAoLjI1IC4gLjUpCisgICAgICAgICAgKDEgLiAxKQorICAgICAgICAgICg0IC4gMikKKyAg ICAgICAgICAoOSAuIDMpCisgICAgICAgICAgKDE2IC4gNCkKKyAgICAgICAgICAoMjUgLiA1KQor ICAgICAgICAgICgzNiAuIDYpCisgICAgICAgICAgKDQ5IC4gNykKKyAgICAgICAgICAoNjQgLiA4 KQorICAgICAgICAgICg4MSAuIDkpCisgICAgICAgICAgKDEyMSAuIC0xMSkKKyAgICAgICAgICAo MTQ0IC4gLTEyKSkKKyAgICAgIChsZXQgKChodCAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bTIg I3QpKQorICAgICAgICAgICAgKGh0MiAoaGFzaC10YWJsZSBudW1iZXItY29tcGFyYXRvcgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAuMjUgLjUgNjQgOTk5OSA4MSA5OTk4IDEyMSAtMTEg MTQ0IC0xMikpKQorICAgICAgICAoaGFzaC10YWJsZS1tZXJnZSEgaHQgaHQyKQorICAgICAgICAo bGlzdC1zb3J0IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKSkKKworOzsgZW9mCi0tIAoyLjE5LjEK Cg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0008-Fix-bugs-in-GENERIC-HASH-TABLES.patch" Content-Disposition: attachment; filename="0008-Fix-bugs-in-GENERIC-HASH-TABLES.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqvhvnow2 RnJvbSA1NTRiNDQwYzQ4OGE5MGM4ZjZiZDJkOWJmMGFlZTI0MjVkYWI2N2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDEyIEphbiAyMDE5IDE4OjE1OjQ0 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwOC8xMF0gRml4IGJ1Z3MgaW4gR0VORVJJQy1IQVNILVRB QkxFUwoKSEFTSC1UQUJMRS1QUlVORSEgZGlkbid0IHVwZGF0ZSBzaXplIGFmdGVyIHJlbW92aW5n IGtleXMuCkhBU0gtVEFCTEUtREVMRVRFISBhY2Nlc3NlZCBoYXNoIGZ1bmN0aW9uIGFuZCBhc3Nv Y2lhdG9yCiAgb25jZSBwZXIga2V5LCBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBvbmx5IG9uY2UgcGVy CiAgcHJvY2VkdXJlIGNhbGwuCgoqIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNj bSAoaGFzaC10YWJsZS1wcnVuZSEpOgogIE5vdyB1cGRhdGVzIHNpemUgYWZ0ZXIgcmVtb3Zpbmcg a2V5cyAoYnVnKS4KKiAoaGFzaC10YWJsZS1kZWxldGUhKTogdXNlIFdJVEgtSEFTSFgtVkFMVUVT IG91dHNpZGUgb2YgbG9vcCwKICBzbyB0aGF0IGhhc2ggZnVuY3Rpb24gYW5kIGFzc29jaWF0b3Ig YXJlIGFjY2Vzc2VkIG9ubHkgb25jZS4KLS0tCiBtb2R1bGUvaWNlLTkvZ2VuZXJpYy1oYXNoLXRh Ymxlcy5zY20gfCAyNSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL2lj ZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtIGIvbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10 YWJsZXMuc2NtCmluZGV4IDMxZGVhZDk3YS4uNjJmZDViYjEzIDEwMDY0NAotLS0gYS9tb2R1bGUv aWNlLTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20KKysrIGIvbW9kdWxlL2ljZS05L2dlbmVyaWMt aGFzaC10YWJsZXMuc2NtCkBAIC01MTcsMTkgKzUxNywyMCBAQCBudW1iZXIgb2Yga2V5cyB0aGF0 IGhhZCBhc3NvY2lhdGlvbnMuIgogICAgICAgICAgIChpZiAoaGFzaC10YWJsZS1kZWxldGUtc2lu Z2xlISBodCBrZXkxKSAxIDApKQogICAgICAgKGJlZ2luCiAgICAgICAgIChhc3NlcnQtbXV0YWJs ZSBodCkKLSAgICAgICAgKGxldCogKChjb3VudCAwKQotICAgICAgICAgICAgICAgKGRlbGV0ZS1v bmUhIChsYW1iZGEgKGtleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWhh c2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgICh3aXRoLWhhc2h4LXZhbHVl cyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgICAgKGxldCogKChjb3VudCAwKQorICAgICAg ICAgICAgICAgICAoc2l6ZSAoaHQtc2l6ZSBodCkpCisgICAgICAgICAgICAgICAgIChkZWxldGUt b25lISAobGFtYmRhIChrZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVu IChub3QgKGVxPyBodC11bnNwZWNpZmllZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlZiBoIGEgcmVhbC10YWJsZSBrZXkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtdW5z cGVjaWZpZWQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBjb3Vu dCAoKyAxIGNvdW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgt cmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpKSkpKSkKLSAgICAgICAgICAoZGVsZXRlLW9uZSEg a2V5MSkKLSAgICAgICAgICAoZm9yLWVhY2ggZGVsZXRlLW9uZSEga2V5cykKLSAgICAgICAgICAo dW5sZXNzIChvciAoaHQtd2Vha25lc3MgaHQpICh6ZXJvPyBjb3VudCkpCi0gICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIGNvdW50KSkpCi0gICAgICAgICAgY291bnQpKSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJl YWwtdGFibGUga2V5KSkpKSkKKyAgICAgICAgICAgIChkZWxldGUtb25lISBrZXkxKQorICAgICAg ICAgICAgKGZvci1lYWNoIGRlbGV0ZS1vbmUhIGtleXMpCisgICAgICAgICAgICAodW5sZXNzIChv ciAoaHQtd2Vha25lc3MgaHQpICh6ZXJvPyBjb3VudCkpCisgICAgICAgICAgICAgIChodC1zaXpl ISBodCAoLSBzaXplIGNvdW50KSkpCisgICAgICAgICAgICBjb3VudCkpKSkpCiAKIChkZWZpbmUg KGhhc2gtdGFibGUtaW50ZXJuISBodCBrZXkgZmFpbHVyZSkKICAgIkVmZmVjdGl2ZWx5IGludm9r ZXMgSEFTSC1UQUJMRS1SRUYgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFuZApAQCAtODIwLDgg KzgyMSwxMCBAQCBQUk9DIHJldHVybnMgdHJ1ZS4gUmV0dXJucyBhbiB1bnNwZWNpZmllZCB2YWx1 ZS4iCiAgIChhc3NlcnQtbXV0YWJsZSBodCkKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVh bC10YWJsZSkgaHQKICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQotICAgICAg ICAgICAgICAgICAgICAgKGlmIChwcm9jIGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtdGFibGUga2V5KSkpCisgICAgICAgICAgICAgICAg ICAgICAod2hlbiAocHJvYyBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNz IChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaHQtc2l6ZSEgaHQg KC0gKGh0LXNpemUgaHQpIDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92 ZSEgaCBhIHJlYWwtdGFibGUga2V5KSkpCiAgICAgICAgICAgICAgICAgICAgcmVhbC10YWJsZSkp KQogCiAMCi0tIAoyLjE5LjEKCg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0010-Created-a-procedure-that-returns-the-size-of-a-hash-.patch" Content-Disposition: attachment; filename="0010-Created-a-procedure-that-returns-the-size-of-a-hash-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqvhvnp14 RnJvbSBlMjc0NTI3NWU4ZWVlYWI1ZDdiOTE3NDZlOTJjMWMwZTc4ZmZjOTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDEzIEphbiAyMDE5IDIwOjQ0OjE4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gQ3JlYXRlZCBhIHByb2NlZHVyZSB0aGF0IHJl dHVybnMgdGhlIHNpemUgb2YgYSBoYXNoCiB0YWJsZQoKVGhlIG1vZHVsZSAoSUNFLTkgR0VORVJJ Qy1IQVNILVRBQkxFUykgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGhhc2ggdGFibGUKc2l6ZSBieSBp dHNlbGYuIE5vdywgYSBwcm9jZWR1cmUgSEFTSC1OLUlURU1TIHdhcyBpbXBsZW1lbnRlZCBpbgon bGliZ3VpbGUvaGFzaHRhYi5jJyB0byBhY2Nlc3MgdGhlIG5faXRlbXMgZmllbGQgb2YgR3VpbGUg aGFzaCB0YWJsZQpzdHJ1Y3R1cmUuCgoqIGxpYmd1aWxlL2hhc2h0YWIuYyAoc2NtX2hhc2hfbl9p dGVtcyk6IGNyZWF0ZWQsIGl0IHJldHVybnMgdGhlIG51bWJlcgogIG9mIGl0ZW1zIHRoYXQgdGhl IGdpdmVuIGhhc2ggdGFibGUgaGFzLiBJdCB3b3JrcyBmb3Igbm9ybWFsIGFuZCB3ZWFrCiAgaGFz aCB0YWJsZXMuCiogbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtOiByZW1vdmVk ICdzaXplJyBmaWVsZCBvZgogIDxnZW5lcmljLWhhc2gtdGFibGU+IHJlY29yZCB0eXBlLiBObyBw cm9jZWR1cmVzIG5lZWQgdG8gdXBkYXRlIGl0CiAgYW55bW9yZS4KKGhhc2gtdGFibGUtc2l6ZSk6 IG5vdyBhY2Nlc3NlcyB0aGUgc2l6ZSB1c2luZyBIQVNILU4tSVRFTVMuIFRoYXQKICBndWFyYW50 ZWVzIE8oMSkgcHJvY2VkdXJlIHRpbWUuCi0tLQogbGliZ3VpbGUvaGFzaHRhYi5jICAgICAgICAg ICAgICAgICAgIHwgIDE5ICsrLQogbGliZ3VpbGUvaGFzaHRhYi5oICAgICAgICAgICAgICAgICAg IHwgICAxICsKIGxpYmd1aWxlL3dlYWstdGFibGUuYyAgICAgICAgICAgICAgICB8ICAxNCArKwog bGliZ3VpbGUvd2Vhay10YWJsZS5oICAgICAgICAgICAgICAgIHwgICAzICstCiBtb2R1bGUvaWNl LTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20gfCAyMzAgKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCAxNTAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvaGFzaHRhYi5jIGIvbGliZ3VpbGUvaGFzaHRhYi5jCmlu ZGV4IGI0ZjAwNGMxZC4uZGQwNjU5ZjdjIDEwMDY0NAotLS0gYS9saWJndWlsZS9oYXNodGFiLmMK KysrIGIvbGliZ3VpbGUvaGFzaHRhYi5jCkBAIC0yMTAsNiArMjEwLDIyIEBAIFNDTV9ERUZJTkUg KHNjbV9oYXNoX3RhYmxlX3AsICJoYXNoLXRhYmxlPyIsIDEsIDAsIDAsCiB9CiAjdW5kZWYgRlVO Q19OQU1FCiAKK1NDTV9ERUZJTkUgKHNjbV9oYXNoX25faXRlbXMsICJoYXNoLW4taXRlbXMiLCAx LCAwLCAwLAorICAgICAgICAgICAgKFNDTSB0YWJsZSksCisgICAgICAgICAgICAiUmV0dXJuIHRo ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGhhc2ggVEFCTEUuIikKKyNkZWZpbmUg RlVOQ19OQU1FIHNfc2NtX2hhc2hfbl9pdGVtcworeworICBpZiAoU0NNX1dFQUtfVEFCTEVfUCAo dGFibGUpKQorICAgIHsKKyAgICAgIHJldHVybiBzY21fd2Vha190YWJsZV9uX2l0ZW1zICh0YWJs ZSk7CisgICAgfQorCisgIFNDTV9WQUxJREFURV9IQVNIVEFCTEUgKDEsIHRhYmxlKTsKKworICBy ZXR1cm4gc2NtX2Zyb21fdWxvbmcgKFNDTV9IQVNIVEFCTEVfTl9JVEVNUyAodGFibGUpKTsKK30K KyN1bmRlZiBGVU5DX05BTUUKKwogCiAMCiAvKiBBY2Nlc3NpbmcgaGFzaCB0YWJsZSBlbnRyaWVz LiAgKi8KQEAgLTk4Niw4ICsxMDAyLDcgQEAgY291bnRfcHJvYyAodm9pZCAqcHJlZCwgU0NNIGtl eSwgU0NNIGRhdGEsIFNDTSB2YWx1ZSkKIFNDTV9ERUZJTkUgKHNjbV9oYXNoX2NvdW50LCAiaGFz aC1jb3VudCIsIDIsIDAsIDAsCiAgICAgICAgICAgICAoU0NNIHByZWQsIFNDTSB0YWJsZSksCiAg ICAgICAgICAgICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGhh c2ggVEFCTEUgdGhhdFxuIgotICAgICAgICAgICAgImNhdXNlIGAoUFJFRCBLRVkgVkFMVUUpJyB0 byByZXR1cm4gdHJ1ZS4gIFRvIHF1aWNrbHkgZGV0ZXJtaW5lXG4iCi0gICAgICAgICAgICAidGhl IHRvdGFsIG51bWJlciBvZiBlbGVtZW50cywgdXNlIGAoY29uc3QgI3QpJyBmb3IgUFJFRC4iKQor ICAgICAgICAgICAgImNhdXNlIGAoUFJFRCBLRVkgVkFMVUUpJyB0byByZXR1cm4gdHJ1ZS4iKQog I2RlZmluZSBGVU5DX05BTUUgc19zY21faGFzaF9jb3VudAogewogICBTQ00gaW5pdDsKZGlmZiAt LWdpdCBhL2xpYmd1aWxlL2hhc2h0YWIuaCBiL2xpYmd1aWxlL2hhc2h0YWIuaAppbmRleCA2MWU4 MWIzNDEuLjcwZTlkYWFiYiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvaGFzaHRhYi5oCisrKyBiL2xp Ymd1aWxlL2hhc2h0YWIuaApAQCAtNzgsNiArNzgsNyBAQCBTQ01fQVBJIFNDTSBzY21fY19tYWtl X2hhc2hfdGFibGUgKHVuc2lnbmVkIGxvbmcgayk7CiBTQ01fQVBJIFNDTSBzY21fbWFrZV9oYXNo X3RhYmxlIChTQ00gbik7CiAKIFNDTV9BUEkgU0NNIHNjbV9oYXNoX3RhYmxlX3AgKFNDTSBoKTsK K1NDTV9BUEkgU0NNIHNjbV9oYXNoX25faXRlbXMgKFNDTSBoYXNoKTsKIAogU0NNX0lOVEVSTkFM IHZvaWQgc2NtX2lfcmVoYXNoIChTQ00gdGFibGUsIHNjbV90X2hhc2hfZm4gaGFzaF9mbiwKIAkJ CQl2b2lkICpjbG9zdXJlLCBjb25zdCBjaGFyICpmdW5jX25hbWUpOwpkaWZmIC0tZ2l0IGEvbGli Z3VpbGUvd2Vhay10YWJsZS5jIGIvbGliZ3VpbGUvd2Vhay10YWJsZS5jCmluZGV4IDFlNGQ4ZDMw Mi4uM2Y5NGI0ZmQ5IDEwMDY0NAotLS0gYS9saWJndWlsZS93ZWFrLXRhYmxlLmMKKysrIGIvbGli Z3VpbGUvd2Vhay10YWJsZS5jCkBAIC01MTUsNiArNTE1LDIwIEBAIHNjbV93ZWFrX3RhYmxlX3Ag KFNDTSBvYmopCiAgIHJldHVybiBzY21fZnJvbV9ib29sIChTQ01fV0VBS19UQUJMRV9QIChvYmop KTsKIH0KIAorU0NNCitzY21fd2Vha190YWJsZV9uX2l0ZW1zIChTQ00gdGFibGUpCisjZGVmaW5l IEZVTkNfTkFNRSAid2Vhay10YWJsZS1uLWl0ZW1zIgoreworICBzY21fdF93ZWFrX3RhYmxlICp0 OworCisgIFNDTV9WQUxJREFURV9XRUFLX1RBQkxFICgxLCB0YWJsZSk7CisKKyAgdCA9IFNDTV9X RUFLX1RBQkxFICh0YWJsZSk7CisKKyAgcmV0dXJuIHNjbV9mcm9tX3Vsb25nICh0LT5uX2l0ZW1z KTsKK30KKyN1bmRlZiBGVU5DX05BTUUKKwogU0NNCiBzY21fY193ZWFrX3RhYmxlX3JlZiAoU0NN IHRhYmxlLCB1bnNpZ25lZCBsb25nIHJhd19oYXNoLAogICAgICAgICAgICAgICAgICAgICAgIHNj bV90X3RhYmxlX3ByZWRpY2F0ZV9mbiBwcmVkLApkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvd2Vhay10 YWJsZS5oIGIvbGliZ3VpbGUvd2Vhay10YWJsZS5oCmluZGV4IGJjYmM5NGUzZi4uYjMwOWIxMWY5 IDEwMDY0NAotLS0gYS9saWJndWlsZS93ZWFrLXRhYmxlLmgKKysrIGIvbGliZ3VpbGUvd2Vhay10 YWJsZS5oCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgU0NNICgqc2NtX3RfdGFibGVfZm9sZF9m bikgKHZvaWQgKmNsb3N1cmUsIFNDTSBrLCBTQ00gdiwgU0NNIHJlc3VsdCk7CiBTQ01fSU5URVJO QUwgU0NNIHNjbV9jX21ha2Vfd2Vha190YWJsZSAodW5zaWduZWQgbG9uZyBrLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbV90X3dlYWtfdGFibGVfa2luZCBraW5k KTsKIFNDTV9JTlRFUk5BTCBTQ00gc2NtX3dlYWtfdGFibGVfcCAoU0NNIGgpOworU0NNX0lOVEVS TkFMIFNDTSBzY21fd2Vha190YWJsZV9uX2l0ZW1zIChTQ00gdGFibGUpOwogCiBTQ01fSU5URVJO QUwgU0NNIHNjbV9jX3dlYWtfdGFibGVfcmVmIChTQ00gdGFibGUsIHVuc2lnbmVkIGxvbmcgcmF3 X2hhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY21fdF90YWJs ZV9wcmVkaWNhdGVfZm4gcHJlZCwKQEAgLTYzLDcgKzY0LDcgQEAgU0NNX0lOVEVSTkFMIHZvaWQg c2NtX3dlYWtfdGFibGVfcmVtcV94IChTQ00gdGFibGUsIFNDTSBrZXkpOwogU0NNX0lOVEVSTkFM IHZvaWQgc2NtX3dlYWtfdGFibGVfY2xlYXJfeCAoU0NNIHRhYmxlKTsKIAogU0NNX0lOVEVSTkFM IFNDTSBzY21fY193ZWFrX3RhYmxlX2ZvbGQgKHNjbV90X3RhYmxlX2ZvbGRfZm4gcHJvYywgdm9p ZCAqY2xvc3VyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NNIGlu aXQsIFNDTSB0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U0NNIGluaXQsIFNDTSB0YWJsZSk7CiBTQ01fSU5URVJOQUwgU0NNIHNjbV93ZWFrX3RhYmxlX2Zv bGQgKFNDTSBwcm9jLCBTQ00gaW5pdCwgU0NNIHRhYmxlKTsKIFNDTV9JTlRFUk5BTCB2b2lkIHNj bV93ZWFrX3RhYmxlX2Zvcl9lYWNoIChTQ00gcHJvYywgU0NNIHRhYmxlKTsKIFNDTV9JTlRFUk5B TCBTQ00gc2NtX3dlYWtfdGFibGVfbWFwX3RvX2xpc3QgKFNDTSBwcm9jLCBTQ00gdGFibGUpOwpk aWZmIC0tZ2l0IGEvbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtIGIvbW9kdWxl L2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCmluZGV4IDYyZmQ1YmIxMy4uNDVjZDEzNjRh IDEwMDY0NAotLS0gYS9tb2R1bGUvaWNlLTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20KKysrIGIv bW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCkBAIC0xODcsMTkgKzE4NywxNiBA QCBhbGlzdCBrZXlzIHdpdGggRVFVSVYtRlVOQ1RJT04uIgogCiAoZGVmaW5lLXJlY29yZC10eXBl IGdlbmVyaWMtaGFzaC10YWJsZQogICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgcmVhbC10YWJs ZSBoYXNoLWZ1bmN0aW9uIGFzc29jaWF0b3Igd2Vha25lc3MKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVuY3Rpb24gb3JpZ2luYWwtaGFzaC1m dW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGU/IGVxdWl2YWxlbmNl LWZ1bmN0aW9uIG9yaWdpbmFsLWhhc2gtZnVuY3Rpb24pCiAgIGhhc2gtdGFibGU/CiAgIDs7IFRo ZXNlIHRocmVlIGFyZSB0aGUgbW9zdCBhY2Nlc3NlZCBmaWVsZHMuCiAgIChyZWFsLXRhYmxlIGh0 LXJlYWwtdGFibGUgaHQtcmVhbC10YWJsZSEpCiAgIChoYXNoLWZ1bmN0aW9uIGh0LWhhc2gtZnVu Y3Rpb24pCiAgIChhc3NvY2lhdG9yIGh0LWFzc29jaWF0b3IpCi0gIDs7IFdlYWsgaGFzaCB0YWJs ZXMgZG9uJ3QgdXNlIGhhbmRsZXMgYW5kIGRvbid0IHVwZGF0ZSBodC1zaXplLgorICA7OyBXZWFr IGhhc2ggdGFibGVzIGRvbid0IHVzZSBoYW5kbGVzLgogICAod2Vha25lc3MgaHQtd2Vha25lc3Mp CiAgIDs7IFN1cHBvcnRzIGltbXV0YWJpbGl0eS4KICAgKG11dGFibGU/IGhhc2gtdGFibGUtbXV0 YWJsZT8pCi0gIDs7IFNpemUgb2YgaGFzaC10YWJsZSwgYWxsb3dpbmcgTygxKSBoYXNoLXRhYmxl LXNpemUgZm9yCi0gIDs7IG5vbi13ZWFrIGhhc2ggdGFibGVzLgotICAoc2l6ZSBodC1zaXplIGh0 LXNpemUhKQogICA7OyBUaGVzZSBhcmUgbW9zdGx5IG5lZWRlZCBmb3IgcmVmbGVjdGl2ZSBxdWVy aWVzCiAgIChlcXVpdmFsZW5jZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0 aW9uKQogICAob3JpZ2luYWwtaGFzaC1mdW5jdGlvbiBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24p KQpAQCAtMjM5LDEwICsyMzYsMTAgQEAgYWxpc3Qga2V5cyB3aXRoIEVRVUlWLUZVTkNUSU9OLiIK ICAgICAgIChnZXQtaGFzaC1mdW5jdGlvbnMgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbikK ICAgICAobGV0ICgocmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5 KSkpCiAgICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBhc3NvY2lh dG9yCi0gICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1aXZhbGVu Y2UtZnVuY3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICA7OyAgICAgICAgICAgIHdlYWtu ZXNzIG11dGFibGU/IGVxdWl2YWxlbmNlLWZ1bmN0aW9uIG9yaWctaGFzaC1mdW5jdGlvbgogICAg ICAgKG1ha2UtZ2VuZXJpYy1oYXNoLXRhYmxlIHJlYWwtdGFibGUgaW50ZXJuYWwtaGFzaC1mdW5j dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVpdmFsZW5jZS1wcm9jLT5h c3NvY2lhdG9yIGVxdWl2LWZ1bmN0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlcXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkpKQogCiA7OyBJZiB0aGUgbGlzdCBv ZiBhcmd1bWVudHMgaXMgdXBkYXRlZCwgSEFTSC1UQUJMRSwgQUxJU1QtPkhBU0gtVEFCTEUsCkBA IC0zMjUsOCArMzIyLDcgQEAgaXMgc2lnbmFsZWQuIgogICAgICAgICAgICAgICAgICAgICAgICAg IChlcnJvciAiVHdvIGVxdWl2YWxlbnQga2V5cyB3ZXJlIHByb3ZpZGVkIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FyIGhhbmRsZSkgKGNhciBrdnMpKSkKICAgICAgICAgICAg ICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoY2FkciBrdnMpKSkKLSAgICAgICAgICAgICAg ICAgICAgIChsb29wIChjZGRyIGt2cykpKSkKLSAgICAgICAgICAgICAgKGh0LXNpemUhIGh0IGNh cGFjaXR5KSkpKQorICAgICAgICAgICAgICAgICAgICAgKGxvb3AgKGNkZHIga3ZzKSkpKSkpKQog ICAgICAgaHQpKSkKIAogKGRlZmluZSogKGhhc2gtdGFibGUtdW5mb2xkIHN0b3A/IG1hcHBlciBz dWNjZXNzb3Igc2VlZApAQCAtMzQxLDI1ICszMzcsMTIgQEAgdGhlIHByb2NlZHVyZSBTVUNDRVNT T1IgdG8gU0VFRCwgYW5kIHJlcGVhdCB0aGlzIGFsZ29yaXRobS4iCiAgIChsZXQgKChyZXN1bHQg KCVtYWtlLWhhc2gtdGFibGUgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGUgY2FwYWNpdHkgd2Vha25lc3MpKSkKICAg ICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSByZXN1bHQKLSAgICAgIChpZiAo aHQtd2Vha25lc3MgcmVzdWx0KQotICAgICAgICAgIChsZXQgbG9vcCAoKHNlZWQgc2VlZCkpCi0g ICAgICAgICAgICAoaWYgKHN0b3A/IHNlZWQpCi0gICAgICAgICAgICAgICAgcmVzdWx0Ci0gICAg ICAgICAgICAgICAgKHJlY2VpdmUgKGtleSB2YWwpIChtYXBwZXIgc2VlZCkKLSAgICAgICAgICAg ICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpCi0gICAgICAgICAgICAg ICAgICAobG9vcCAoc3VjY2Vzc29yIHNlZWQpKSkpKQotICAgICAgICAgIChsZXQgKChzaXplICho dC1zaXplIHJlc3VsdCkpKQotICAgICAgICAgICAgKGxldCBsb29wICgoc2VlZCBzZWVkKSkKLSAg ICAgICAgICAgICAgKGlmIChzdG9wPyBzZWVkKQotICAgICAgICAgICAgICAgICAgcmVzdWx0Ci0g ICAgICAgICAgICAgICAgICAocmVjZWl2ZSAoa2V5IHZhbCkgKG1hcHBlciBzZWVkKQotICAgICAg ICAgICAgICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVh bC10YWJsZSBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaHQtdW5zcGVjaWZpZWQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAoaWYg KGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXQhIHNpemUgKCsgMSBzaXplKSkpCi0gICAgICAgICAgICAgICAgICAgICAgKHNldC1j ZHIhIGhhbmRsZSB2YWwpKQotICAgICAgICAgICAgICAgICAgICAobG9vcCAoc3VjY2Vzc29yIHNl ZWQpKSkpKQotICAgICAgICAgICAgKGh0LXNpemUhIHJlc3VsdCBzaXplKSkpKQorICAgICAgKGxl dCBsb29wICgoc2VlZCBzZWVkKSkKKyAgICAgICAgKGlmIChzdG9wPyBzZWVkKQorICAgICAgICAg ICAgcmVzdWx0CisgICAgICAgICAgICAocmVjZWl2ZSAoa2V5IHZhbCkgKG1hcHBlciBzZWVkKQor ICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgdmFsKQorICAgICAg ICAgICAgICAobG9vcCAoc3VjY2Vzc29yIHNlZWQpKSkpKSkKICAgICByZXN1bHQpKQogCiAoZGVm aW5lKiAoYWxpc3QtPmhhc2gtdGFibGUgYWxpc3QgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlv bgpAQCAtMzcyLDE5ICszNTUsOSBAQCBjb21lIGxhdGVyLiIKICAgKGxldCAoKHJlc3VsdCAoJW1h a2UtaGFzaC10YWJsZSBlcXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpKQogICAgICh3 aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIHJlc3VsdAotICAgICAgKGlmIChodC13 ZWFrbmVzcyByZXN1bHQpCi0gICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCi0gICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSAo Y2RyIHBhaXIpKSkKLSAgICAgICAgICAgICAgICAgICAgKHJldmVyc2UgYWxpc3QpKQotICAgICAg ICAgIChsZXQgKChzaXplIChodC1zaXplIHJlc3VsdCkpKQotICAgICAgICAgICAgKGZvci1lYWNo IChsYW1iZGEgKHBhaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoaGFuZGxlICho YXNoeC1jcmVhdGUtaGFuZGxlIQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAoZXE/IGh0LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgrIDEgc2l6ZSkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoY2RyIHBhaXIpKSkpKQot ICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KQotICAgICAgICAgICAgKGh0LXNpemUhIHJlc3Vs dCBzaXplKSkpKQorICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCisgICAgICAgICAgICAg ICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSAoY2FyIHBhaXIpIChjZHIgcGFpcikpKQor ICAgICAgICAgICAgICAgIChyZXZlcnNlIGFsaXN0KSkpCiAgICAgcmVzdWx0KSkKIAogDApAQCAt NDE1LDEyICszODgsNyBAQCBLRVkgaXNuJ3QgcHJlc2VudC4iCiAKIChkZWZpbmUgKGhhc2gtdGFi bGUtZW1wdHk/IGh0KQogICAiUmV0dXJucyB3aGV0aGVyIEtFWSBpcyBlbXB0eS4iCi0gIChpZiAo aHQtd2Vha25lc3MgaHQpCi0gICAgICAoY2FsbC9jYyAobGFtYmRhIChleGl0KQotICAgICAgICAg ICAgICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKSAoZXhpdCAjZikpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChodC1yZWFsLXRhYmxlIGh0KSkKLSAgICAgICAg ICAgICAgICAgI3QpKQotICAgICAgKHplcm8/IChodC1zaXplIGh0KSkpKQorICAoemVybz8gKGhh c2gtbi1pdGVtcyAoaHQtcmVhbC10YWJsZSBodCkpKSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1j b250YWlucz8gaHQga2V5KQogICAiUmV0dXJuIHdoZXRoZXIgS0VZIGlzIGEga2V5IGluIEhULiIK QEAgLTQ1MCwxNCArNDE4LDggQEAgYXNzb2NpYXRpb24gaXMgY3JlYXRlZCBiZXR3ZWVuIEtFWSBh bmQgVkFMLiBJZiB0aGVyZSBpcyBhIHByZXZpb3VzCiBhc3NvY2lhdGlvbiBmb3IgS0VZLCBpdCBp cyBkZWxldGVkLiIKICAgKGFzc2VydC1tdXRhYmxlIGh0KQogICAod2l0aC1oYXNoeC12YWx1ZXMg KGggYSByZWFsLXRhYmxlKSBodAotICAgIChpZiAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpCi0gICAgICAgIChsZXQgKChoYW5kbGUg KGhhc2h4LWNyZWF0ZS1oYW5kbGUhCi0gICAgICAgICAgICAgICAgICAgICAgIGggYSByZWFsLXRh YmxlIGtleQotICAgICAgICAgICAgICAgICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAg ICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAg KGh0LXNpemUhIGh0ICgrIDEgKGh0LXNpemUgaHQpKSkpCi0gICAgICAgICAgKHNldC1jZHIhIGhh bmRsZSB2YWwpKSkpKQorICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQor ICAqdW5zcGVjaWZpZWQqKQogCiAoZGVmaW5lKiAoaGFzaC10YWJsZS1zZXQhIGh0ICM6b3B0aW9u YWwgKGtleTEgaHQtdW5zcGVjaWZpZWQpICh2YWwxIGh0LXVuc3BlY2lmaWVkKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAjOnJlc3QgYXJncykKQEAgLTQ3NywyNSArNDM5LDE1IEBAIGRlbGV0 ZWQuIgogICAgICAgKGJlZ2luCiAgICAgICAgIChhc3NlcnQtbXV0YWJsZSBodCkKICAgICAgICAg KHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKLSAgICAgICAgICAobGV0ICgo c2V0LW9uZSEgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhhbmRsZSEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBhIHJlYWwtdGFibGUga2V5Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZp ZWQgKGNkciBoYW5kbGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIHZhbCkpKSkpKQotICAgICAgICAgICAgKHNldC1v bmUhIGtleTEgdmFsMSkKLSAgICAgICAgICAgIChsZXQgbG9vcCAoKGt2cyBhcmdzKSkKLSAgICAg ICAgICAgICAgKGNvbmQKLSAgICAgICAgICAgICAgICgobnVsbD8ga3ZzKSAqdW5zcGVjaWZpZWQq KQotICAgICAgICAgICAgICAgKChudWxsPyAoY2RyIGt2cykpCi0gICAgICAgICAgICAgICAgKGVy cm9yICJPZGQgbnVtYmVyIG9mIGtleS12YWx1ZSBwYWlycyIKLSAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnMqIGtleTEgdmFsMSBhcmdzKSkpCi0gICAgICAgICAgICAgICAoZWxzZSAoc2V0LW9u ZSEgKGNhciBrdnMpIChjYWRyIGt2cykpCi0gICAgICAgICAgICAgICAgICAgICAobG9vcCAoY2Rk ciBrdnMpKSkpKSkpKSkpCisgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5 MSB2YWwxKQorICAgICAgICAgIChsZXQgbG9vcCAoKGt2cyBhcmdzKSkKKyAgICAgICAgICAgIChj b25kCisgICAgICAgICAgICAgKChudWxsPyBrdnMpICp1bnNwZWNpZmllZCopCisgICAgICAgICAg ICAgKChudWxsPyAoY2RyIGt2cykpCisgICAgICAgICAgICAgIChlcnJvciAiT2RkIG51bWJlciBv ZiBrZXktdmFsdWUgcGFpcnMiCisgICAgICAgICAgICAgICAgICAgICAoY29ucyoga2V5MSB2YWwx IGFyZ3MpKSkKKyAgICAgICAgICAgICAoZWxzZSAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSAo Y2FyIGt2cykgKGNhZHIga3ZzKSkKKyAgICAgICAgICAgICAgICAgICAobG9vcCAoY2RkciBrdnMp KSkpKSkpKSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1kZWxldGUtc2luZ2xlISBodCBrZXkpCiAg ICJEZWxldGVzIEtFWSBhbmQgYXNzb2NpYXRlZCB2YWx1ZSBpbiBoYXNoIHRhYmxlIEhULiBSZXR1 cm5zICN0IGlmIEtFWQpAQCAtNTA1LDcgKzQ1Nyw2IEBAIGhhZCBhbiBhc3NvY2lhdGlvbiBhbmQg I2Ygb3RoZXJ3aXNlLiIKICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoaGFzaHgtcmVmIGgg YSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpCiAgICAgICAgICNmCiAgICAgICAgIChi ZWdpbiAoaGFzaHgtcmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpCi0gICAgICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIDEpKQogICAgICAgICAgICAgICAgI3QpKSkpCiAK IChkZWZpbmUqIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgIzpvcHRpb25hbCAoa2V5MSBodC11bnNw ZWNpZmllZCkgIzpyZXN0IGtleXMpCkBAIC01MTksNyArNDcwLDYgQEAgbnVtYmVyIG9mIGtleXMg dGhhdCBoYWQgYXNzb2NpYXRpb25zLiIKICAgICAgICAgKGFzc2VydC1tdXRhYmxlIGh0KQogICAg ICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAogICAgICAgICAgIChs ZXQqICgoY291bnQgMCkKLSAgICAgICAgICAgICAgICAgKHNpemUgKGh0LXNpemUgaHQpKQogICAg ICAgICAgICAgICAgICAoZGVsZXRlLW9uZSEgKGxhbWJkYSAoa2V5KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1yZWYgaCBhIHJl YWwtdGFibGUga2V5CkBAIC01MjgsOCArNDc4LDYgQEAgbnVtYmVyIG9mIGtleXMgdGhhdCBoYWQg YXNzb2NpYXRpb25zLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgt cmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpKSkpKQogICAgICAgICAgICAgKGRlbGV0ZS1vbmUh IGtleTEpCiAgICAgICAgICAgICAoZm9yLWVhY2ggZGVsZXRlLW9uZSEga2V5cykKLSAgICAgICAg ICAgICh1bmxlc3MgKG9yIChodC13ZWFrbmVzcyBodCkgKHplcm8/IGNvdW50KSkKLSAgICAgICAg ICAgICAgKGh0LXNpemUhIGh0ICgtIHNpemUgY291bnQpKSkKICAgICAgICAgICAgIGNvdW50KSkp KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0IGtleSBmYWlsdXJlKQpAQCAtNTQ2 LDExICs0OTQsOSBAQCBpcyBzZXQgdG8gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEZBSUxVUkUgYW5k IHRoZSBuZXcgdmFsdWUgaXMgcmV0dXJuZWQuIgogICAgICAgICAgICAgICAgICAgIChoYXNoeC1z ZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICB2YWx1ZSkp CiAgICAgICAgICAgICAgICAgKGVsc2UgdmFsdWUpKSkKLSAgICAgICAgKGxldCAoKGhhbmRsZQot ICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGggYSByZWFsLXRhYmxlIGtleSBo dC11bnNwZWNpZmllZCkpKQorICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFu ZGxlISBoIGEgcmVhbC10YWJsZSBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKICAgICAgICAgICAoaWYg KGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgIChiZWdpbiAo aHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQotICAgICAgICAgICAgICAgICAgICAgKHNl dC1jZHIhIGhhbmRsZSAoZmFpbHVyZSkpKSkKKyAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRs ZSAoZmFpbHVyZSkpKQogICAgICAgICAgIChjZHIgaGFuZGxlKSkpKSkKIAogKGRlZmluZSAoaGFz aC10YWJsZS1pbnRlcm4hL2RlZmF1bHQgaHQga2V5IGRlZmF1bHQpCkBAIC01NjYsMTEgKzUxMiw3 IEBAIGlzIHNldCB0byBERUZBVUxUIGFuZCBERUZBVUxUIGlzIHJldHVybmVkLiIKICAgICAgICAg ICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpCiAgICAgICAg ICAgICAgICAgIGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgKGVsc2UgdmFsdWUpKSkKLSAgICAg ICAgKGxldCAoKGhhbmRsZQotICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGgg YSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAgIChpZiAoZXE/IGh0 LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXpl ISBodCAoKyAxIChodC1zaXplIGh0KSkpCi0gICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEg aGFuZGxlIGRlZmF1bHQpKSkKKyAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhh bmRsZSEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpKSkKICAgICAgICAgICAoY2RyIGhhbmRs ZSkpKSkpCiAKIChkZWZpbmUqIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQga2V5IHVwZGF0ZXIgIzpv cHRpb25hbApAQCAtNjAxLDcgKzU0Myw2IEBAIHByb3ZpZGVkLCBvciBzaWduYWxzIGFuIGVycm9y IG90aGVyd2lzZS4iCiAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSBuZXcpKSkK ICAgICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAgICAobGV0ICgobmV3ICh1cGRh dGVyIChmYWlsdXJlKSkpKQotICAgICAgICAgICAgICAgICAgIChodC1zaXplISBodCAoKyAxICho dC1zaXplIGh0KSkpCiAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFi bGUga2V5IG5ldykpKSkpKSkKICAgKnVuc3BlY2lmaWVkKikKIApAQCAtNjE5LDEyICs1NjAsOCBA QCBVUERBVEVSLCBhbmQgc2V0dGluZyBpdCB0byB0aGUgcmVzdWx0IHRoZXJlb2YuIgogICAgICAg ICA7OyBKLk0uIHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1c2Ug aGFuZGxlCiAgICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUga2V5 IGRlZmF1bHQpKSkKICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgKHVw ZGF0ZXIgb2xkKSkpCi0gICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWNyZWF0ZS1oYW5kbGUh IGggYSByZWFsLXRhYmxlIGtleQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3BlY2lm aWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXplISBodCAoKyAx IChodC1zaXplIGh0KSkpCi0gICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlICh1 cGRhdGVyIGRlZmF1bHQpKSkKLSAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAodXBkYXRl ciAoY2RyIGhhbmRsZSkpKSkpKSkKKyAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRl LWhhbmRsZSEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoc2V0LWNk ciEgaGFuZGxlICh1cGRhdGVyIChjZHIgaGFuZGxlKSkpKSkpCiAgICp1bnNwZWNpZmllZCopCiAK IChkZWZpbmUgKGhhc2gtdGFibGUtcG9wISBodCkKQEAgLTYzNyw4ICs1NzQsNiBAQCBhbmQgdmFs dWUgYXMgdHdvIHZhbHVlcy4iCiAgICAgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFi bGUpIGh0CiAgICAgICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoa2V5IHZhbHVlKQogICAgICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtdGFibGUga2V5KQotICAg ICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIChodC1zaXplISBodCAoLSAoaHQtc2l6ZSBodCkgMSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAgKHJldHVybiBrZXkgdmFsdWUpKQogICAgICAgICAgICAgICAgICAg ICAgIHJlYWwtdGFibGUpKQogICAgICAoZXJyb3IgIkhhc2ggdGFibGUgaXMgZW1wdHkiIGh0KSkp KQpAQCAtNjQ5LDcgKzU4NCw2IEBAIGFuZCB2YWx1ZSBhcyB0d28gdmFsdWVzLiIKICAgKGlmIGNh cGFjaXR5CiAgICAgICAoaHQtcmVhbC10YWJsZSEgaHQgKChndWlsZS1odC1jdG9yIChodC13ZWFr bmVzcyBodCkpIGNhcGFjaXR5KSkKICAgICAgIChoYXNoLWNsZWFyISAoaHQtcmVhbC10YWJsZSBo dCkpKQotICAoaHQtc2l6ZSEgaHQgMCkKICAgKnVuc3BlY2lmaWVkKikKIAogDApAQCAtNjU4LDEw ICs1OTIsNyBAQCBhbmQgdmFsdWUgYXMgdHdvIHZhbHVlcy4iCiAoZGVmaW5lIChoYXNoLXRhYmxl LXNpemUgaHQpCiAgICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25zIGluIEhULiBU aGlzIGlzIGd1YXJhbnRlZWQgTygxKSBmb3IKIHRhYmxlcyB3aGVyZSAjOldFQUtORVNTIGlzICNm LiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5 IHZhbCBhbnMpICgrIDEgYW5zKSkKLSAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpCi0gICAgICAoaHQtc2l6ZSBodCkpKQorICAoaGFzaC1uLWl0ZW1zIChodC1yZWFsLXRhYmxl IGh0KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUta2V5cyBodCkKICAgIlJldHVybnMgYSBsaXN0 IG9mIHRoZSBrZXlzIGluIEhULiIKQEAgLTY4Myw0OCArNjE0LDYwIEBAIHZhbHVlcyBpbiB0aGUg Y29ycmVzcG9uZGluZyBvcmRlci4iCiAgICAgICAgICAgICAgICAgICAgKGh0LXJlYWwtdGFibGUg aHQpKQogICAgICh2YWx1ZXMga2V5cyB2YWxzKSkpCiAKLTs7OyBJbiBhIG5vbi13ZWFrIGhhc2gg dGFibGUsIHdlIGtub3cgdGhlIHNpemUgdGhhdCB0aGUga2V5L3ZhbHVlIHZlY3RvcgotOzs7IHdp bGwgaGF2ZS4gSW4gYSB3ZWFrIGhhc2ggdGFibGUsIHdlIGhhdmUgdG8gaXRlcmF0ZSB0aHJvdwot Ozs7IGFzc29jaWF0aW9ucyBvZiB0aGUgaGFzaCB0YWJsZSB0byBjb21wdXRlIGl0cyBzaXplLCBz byBpdCBpcyBlYXNpZXIKLTs7OyB0byBzaW1wbHkgY2FsbCBIQVNILVRBQkxFLUtFWVMvSEFTSC1U QUJMRS1WQUxVRVMuCiAoZGVmaW5lIChoYXNoLXRhYmxlLWtleS12ZWN0b3IgaHQpCiAgICJSZXR1 cm5zIGEgdmVjdG9yIG9mIHRoZSBrZXlzIGluIEhULiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkK LSAgICAgIChsaXN0LT52ZWN0b3IgKGhhc2gtdGFibGUta2V5cyBodCkpCi0gICAgICAobGV0KiAo KGxlbiAoaHQtc2l6ZSBodCkpCi0gICAgICAgICAgICAgKGtleXMgKG1ha2UtdmVjdG9yIGxlbikp KQotICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgaSkKLSAgICAgICAgICAgICAg ICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQotICAgICAgICAgICAgICAgICAgICAgKCsg aSAxKSkKLSAgICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0KSkKKyAgKGxldCog KChsZW4gKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAoa2V5cyAobWFrZS12ZWN0b3Ig bGVuKSkKKyAgICAgICAgIDs7IEluIGEgd2VhayBoYXNoIHRhYmxlLCBzb21lIHZhbHVlcyBtaWdo dCBnZXQgZ2FyZ2FiZQorICAgICAgICAgOzsgY29sbGVjdGVkIHdoaWxlIHRoZSBwcm9jZWR1cmUg aXMgcnVubmluZywgc28gd2UgZG91YmxlLWNoZWNrCisgICAgICAgICA7OyBpZiB3ZSBjb2xsZWN0 ZWQgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBrZXlzLgorICAgICAgICAgKG5ldy1sZW4gKGhhc2gt Zm9sZCAobGFtYmRhIChrZXkgdmFsIGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZlY3Rvci1zZXQhIGtleXMgaSBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCsgaSAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpKSkKKyAgICAoaWYgKDwgbmV3LWxlbiBsZW4pCisgICAgICAgIChsZXQgKChuZXcta2V5cyAo bWFrZS12ZWN0b3IgbmV3LWxlbikpKQorICAgICAgICAgICh2ZWN0b3ItbW92ZS1sZWZ0ISBrZXlz IDAgbmV3LWxlbiBuZXcta2V5cyAwKQorICAgICAgICAgIG5ldy1rZXlzKQogICAgICAgICBrZXlz KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtdmFsdWUtdmVjdG9yIGh0KQogICAiUmV0dXJucyBh IHZlY3RvciBvZiB0aGUgdmFsdWVzIGluIEhULiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAg ICAgIChsaXN0LT52ZWN0b3IgKGhhc2gtdGFibGUtdmFsdWVzIGh0KSkKLSAgICAgIChsZXQqICgo bGVuIChodC1zaXplIGh0KSkKLSAgICAgICAgICAgICAodmFscyAobWFrZS12ZWN0b3IgbGVuKSkp Ci0gICAgICAgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZhbCBpKQotICAgICAgICAgICAgICAg ICAgICAgKHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAoKyBp IDEpKQotICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAobGV0KiAo KGxlbiAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICh2YWxzIChtYWtlLXZlY3RvciBs ZW4pKQorICAgICAgICAgOzsgSW4gYSB3ZWFrIGhhc2ggdGFibGUsIHNvbWUgdmFsdWVzIG1pZ2h0 IGdldCBnYXJnYWJlCisgICAgICAgICA7OyBjb2xsZWN0ZWQgd2hpbGUgdGhlIHByb2NlZHVyZSBp cyBydW5uaW5nLCBzbyB3ZSBkb3VibGUtY2hlY2sKKyAgICAgICAgIDs7IGlmIHdlIGNvbGxlY3Rl ZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGtleXMuCisgICAgICAgICAobmV3LWxlbiAoaGFzaC1m b2xkIChsYW1iZGEgKGtleSB2YWwgaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dmVjdG9yLXNldCEgdmFscyBpIHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KyBpIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0 KSkpKQorICAgIChpZiAoPCBuZXctbGVuIGxlbikKKyAgICAgICAgKGxldCAoKG5ldy12YWxzICht YWtlLXZlY3RvciBuZXctbGVuKSkpCisgICAgICAgICAgKHZlY3Rvci1tb3ZlLWxlZnQhIHZhbHMg MCBuZXctbGVuIG5ldy12YWxzIDApCisgICAgICAgICAgbmV3LXZhbHMpCiAgICAgICAgIHZhbHMp KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1lbnRyeS12ZWN0b3JzIGh0KQogICAiUmV0dXJucyB0 d28gdmFsdWVzOiBhIHZlY3RvciBvZiB0aGUga2V5cyBhbmQgYSB2ZWN0b3Igb2YgdGhlCiBhc3Nv Y2lhdGVkIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBvcmRlci4iCi0gIChpZiAoaHQtd2Vh a25lc3MgaHQpCi0gICAgICAocmVjZWl2ZSAoa2V5cyB2YWxzKSAoaGFzaC10YWJsZS1lbnRyaWVz IGh0KQotICAgICAgICAodmFsdWVzIChsaXN0LT52ZWN0b3Iga2V5cykgKGxpc3QtPnZlY3RvciB2 YWxzKSkpCi0gICAgICAobGV0KiAoKGxlbiAoaHQtc2l6ZSBodCkpCi0gICAgICAgICAgICAgKGtl eXMgKG1ha2UtdmVjdG9yIGxlbikpCi0gICAgICAgICAgICAgKHZhbHMgKG1ha2UtdmVjdG9yIGxl bikpKQotICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgaSkKLSAgICAgICAgICAg ICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQotICAgICAgICAgICAgICAgICAgICAg KHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAoKyBpIDEpKQot ICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAobGV0KiAoKGxlbiAo aGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgIChrZXlzIChtYWtlLXZlY3RvciBsZW4pKQor ICAgICAgICAgKHZhbHMgKG1ha2UtdmVjdG9yIGxlbikpCisgICAgICAgICA7OyBJbiBhIHdlYWsg aGFzaCB0YWJsZSwgc29tZSB2YWx1ZXMgbWlnaHQgZ2V0IGdhcmdhYmUKKyAgICAgICAgIDs7IGNv bGxlY3RlZCB3aGlsZSB0aGUgcHJvY2VkdXJlIGlzIHJ1bm5pbmcsIHNvIHdlIGRvdWJsZS1jaGVj aworICAgICAgICAgOzsgaWYgd2UgY29sbGVjdGVkIHRoZSBleHBlY3RlZCBudW1iZXIgb2Yga2V5 cy4KKyAgICAgICAgIChuZXctbGVuIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZhbCBpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISB2YWxzIGkgdmFsKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGkgMSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKSkpCisgICAgKGlmICg8IG5ldy1sZW4gbGVu KQorICAgICAgICAobGV0ICgobmV3LWtleXMgKG1ha2UtdmVjdG9yIG5ldy1sZW4pKQorICAgICAg ICAgICAgICAobmV3LXZhbHMgKG1ha2UtdmVjdG9yIG5ldy1sZW4pKSkKKyAgICAgICAgICAodmVj dG9yLW1vdmUtbGVmdCEga2V5cyAwIG5ldy1sZW4gbmV3LWtleXMgMCkKKyAgICAgICAgICAodmVj dG9yLW1vdmUtbGVmdCEgdmFscyAwIG5ldy1sZW4gbmV3LXZhbHMgMCkKKyAgICAgICAgICAodmFs dWVzIG5ldy1rZXlzIG5ldy12YWxzKSkKICAgICAgICAgKHZhbHVlcyBrZXlzIHZhbHMpKSkpCiAK IChkZWZpbmUgKGhhc2gtdGFibGUtZmluZCBwcm9jIGh0IGZhaWx1cmUpCkBAIC03NTksMTUgKzcw MiwxMiBAQCBhc3NvY2lhdGlvbiBpbiBoYXNoLXRhYmxlIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBh c3NvY2lhdGlvbi4gVGhlIGtleSBvZgogdGhlIGFzc29jaWF0aW9uIGFuZCB0aGUgcmVzdWx0IG9m IGludm9raW5nIFBST0MgYXJlIGVudGVyZWQgaW50byB0aGUgbmV3CiBoYXNoIHRhYmxlLCB3aGlj aCBpcyB0aGVuIHJldHVybmVkLiIKICAgKGxldCAoKHJlc3VsdCAoJW1ha2UtaGFzaC10YWJsZSBl cXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpCi0gICAgICAgIChzaXplIDApKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGUgY2FwYWNpdHkgd2Vha25lc3Mp KSkKICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSByZXN1bHQKICAgICAg IChoYXNoLWZvci1lYWNoCiAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKLSAgICAgICAgIChoYXNo eC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSAocHJvYyB2YWwpKQotICAgICAgICAgKHNldCEgc2l6 ZSAoKyAxIHNpemUpKSkKKyAgICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSAo cHJvYyB2YWwpKSkKICAgICAgICAoaHQtcmVhbC10YWJsZSBodCkpKQotICAgIChodC1zaXplISBy ZXN1bHQgc2l6ZSkKICAgICByZXN1bHQpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLW1hcC0+bGlz dCBwcm9jIGh0KQpAQCAtODIyLDggKzc2Miw2IEBAIFBST0MgcmV0dXJucyB0cnVlLiBSZXR1cm5z IGFuIHVuc3BlY2lmaWVkIHZhbHVlLiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10 YWJsZSkgaHQKICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQogICAgICAgICAg ICAgICAgICAgICAgKHdoZW4gKHByb2Mga2V5IHZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAg KHVubGVzcyAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGh0LXNp emUhIGh0ICgtIChodC1zaXplIGh0KSAxKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChoYXNo eC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkpKQogICAgICAgICAgICAgICAgICAgIHJlYWwt dGFibGUpKSkKIApAQCAtODM4LDE1ICs3NzYsMTMgQEAgcHJvcGVydGllcyBhcyBnaXZlbiBieSBr ZXl3b3JkIGFyZ3VtZW50cywgd2hpY2ggZGVmYXVsdCB0byBIVAogcHJvcGVydGllcy4gSWYgTVVU QUJMRSBpcyB0cnVlLCB0aGUgbmV3IGhhc2ggdGFibGUgaXMgbXV0YWJsZSwKIG90aGVyd2lzZSwg aXQgaXMgaW1tdXRhYmxlLiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkg aHQKLSAgICAobGV0ICgobmV3LXJlYWwtdGFibGUgKChndWlsZS1odC1jdG9yIHdlYWtuZXNzKSBj YXBhY2l0eSkpCi0gICAgICAgICAgKHNpemUgMCkpCisgICAgKGxldCAoKG5ldy1yZWFsLXRhYmxl ICgoZ3VpbGUtaHQtY3RvciB3ZWFrbmVzcykgY2FwYWNpdHkpKSkKICAgICAgIChoYXNoLWZvci1l YWNoIChsYW1iZGEgKGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQh IGggYSBuZXctcmVhbC10YWJsZSBrZXkgdmFsKQotICAgICAgICAgICAgICAgICAgICAgICAoc2V0 ISBzaXplICgrIDEgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBo IGEgbmV3LXJlYWwtdGFibGUga2V5IHZhbCkpCiAgICAgICAgICAgICAgICAgICAgICByZWFsLXRh YmxlKQogICAgICAgOzsgQXJndW1lbnRzOiByZWFsLXRhYmxlIGhhc2gtZnVuY3Rpb24gYXNzb2Np YXRvcgotICAgICAgOzsgICAgICAgICAgICB3ZWFrbmVzcyBtdXRhYmxlPyBzaXplIGVxdWl2YWxl bmNlLWZ1bmN0aW9uIG9yaWctaGFzaC1mdW5jdGlvbgotICAgICAgKG1ha2UtZ2VuZXJpYy1oYXNo LXRhYmxlIG5ldy1yZWFsLXRhYmxlIGggYSB3ZWFrbmVzcyAoYW5kIG11dGFibGUgI3QpIHNpemUK KyAgICAgIDs7ICAgICAgICAgICAgd2Vha25lc3MgbXV0YWJsZT8gZXF1aXZhbGVuY2UtZnVuY3Rp b24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgbmV3 LXJlYWwtdGFibGUgaCBhIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0 KSkpKSkKIApAQCAtODU4LDggKzc5NCw4IEBAIGFzIEhULCBidXQgd2l0aCBubyBhc3NvY2lhdGlv bnMuIgogICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAogICAgIChsZXQg KChuZXctcmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5KSkpCiAg ICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBhc3NvY2lhdG9yCi0g ICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVu Y3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCi0gICAgICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUg bmV3LXJlYWwtdGFibGUgaCBhIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkgMAorICAgICAgOzsg ICAgICAgICAgICB3ZWFrbmVzcyBtdXRhYmxlPyBlcXVpdmFsZW5jZS1mdW5jdGlvbiBvcmlnLWhh c2gtZnVuY3Rpb24KKyAgICAgIChtYWtlLWdlbmVyaWMtaGFzaC10YWJsZSBuZXctcmVhbC10YWJs ZSBoIGEgd2Vha25lc3MgKGFuZCBtdXRhYmxlICN0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gaHQpKSkpKQogCi0t IAoyLjE5LjEKCg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0007-Implemented-SRFI-128.patch" Content-Disposition: attachment; filename="0007-Implemented-SRFI-128.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqvhvnos1 RnJvbSAwNTBiNzA1MGUzOGRlYzNiODMwMTM1NjA1MzU4MjUwNWY2Njc3YWZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBGcmksIDExIEphbiAyMDE5IDE5OjQxOjIw IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwNy8xMF0gSW1wbGVtZW50ZWQgU1JGSS0xMjgKCi0tLQog bW9kdWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgICAyICsKIG1vZHVsZS9zcmZpL3NyZmkt MTI4LnNjbSAgICAgICB8IDU3NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIG1v ZHVsZS9zcmZpL3NyZmktMTI4L2dudS5zY20gICB8ICAzOCArKysKIHRlc3Qtc3VpdGUvTWFrZWZp bGUuYW0gICAgICAgICB8ICAgMSArCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI4LnRlc3QgfCAz NDggKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgOTY2IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyOC5zY20KIGNyZWF0ZSBt b2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyOC9nbnUuc2NtCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTEyOC50ZXN0CgpkaWZmIC0tZ2l0IGEvbW9kdWxlL01h a2VmaWxlLmFtIGIvbW9kdWxlL01ha2VmaWxlLmFtCmluZGV4IDZlNzM5ZmVkMC4uNWZjMzAxMGMx IDEwMDY0NAotLS0gYS9tb2R1bGUvTWFrZWZpbGUuYW0KKysrIGIvbW9kdWxlL01ha2VmaWxlLmFt CkBAIC0yOTUsNiArMjk1LDggQEAgU09VUkNFUyA9CQkJCQlcCiAgIHNyZmkvc3JmaS05OC5zY20J CQkJXAogICBzcmZpL3NyZmktMTExLnNjbQkJCQlcCiAgIHNyZmkvc3JmaS0xMjYuc2NtCQkJCVwK KyAgc3JmaS9zcmZpLTEyOC9nbnUuc2NtCQkJCVwKKyAgc3JmaS9zcmZpLTEyOC5zY20JCQkJXAog CQkJCQkJXAogICBzdGF0cHJvZi5zY20JCQkJCVwKIAkJCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVs ZS9zcmZpL3NyZmktMTI4LnNjbSBiL21vZHVsZS9zcmZpL3NyZmktMTI4LnNjbQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmJkYWNmYjNjMAotLS0gL2Rldi9udWxsCisrKyBi L21vZHVsZS9zcmZpL3NyZmktMTI4LnNjbQpAQCAtMCwwICsxLDU3NyBAQAorOzs7IHNyZmktMTI4 LnNjbSAtLS0gQ29tcGFyYXRvcnMKKworOzsgICAgQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzsKKzs7IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKzs7IG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7IExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorOzsgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorOzsKKzs7IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7OyBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzsKKzs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7 IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKKzs7IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworOzsgVGhpcyBmaWxlIGNvbnRh aW5zIGNvZGUgZnJvbSBTUkZJIDEyOCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIGJ5Cis7OyBK b2huIENvd2FuCisKKzs7OyBDb3B5cmlnaHQgKEMpIEpvaG4gQ293YW4gKDIwMTUpLiBBbGwgUmln aHRzIFJlc2VydmVkLgorOzs7Cis7OzsgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKzs7OyBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorOzs7IGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7OyByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwKKzs7OyBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv b3IKKzs7OyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorOzs7IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nCis7OzsgY29uZGl0aW9uczoKKzs7OworOzs7IFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCis7Ozsg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCis7OzsKKzs7OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7OyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKKzs7OyBPRiBNRVJDSEFOVEFCSUxJ VFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzs7IE5PTklORlJJTkdF TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCis7OzsgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFks Cis7OzsgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCis7OzsgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorOzs7IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KwwKKworKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjgpCisgICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTkpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQzKQorICA7OyBIQVNILUJPVU5E LCBIQVNILVNBTFQgYW5kIFdJVEgtSEFTSC1TQUxUIGFyZSBkZWZpbmVkIGhlcmUgYmVjYXVzZQor ICA7OyB0aGUgbGF0dGVyIGlzIG5vdCBzdGFuZGFyZAorICAjOnVzZS1tb2R1bGUgKChzcmZpIHNy ZmktMTI4IGdudSkgIzpzZWxlY3QgKGhhc2gtYm91bmQgaGFzaC1zYWx0KSkKKyAgIzp1c2UtbW9k dWxlICgocm5ycyB1bmljb2RlKSAjOnNlbGVjdCAoY2hhci1mb2xkY2FzZSkpCisgICM6dXNlLW1v ZHVsZSAocm5ycyBieXRldmVjdG9ycykKKyAgIzp1c2UtbW9kdWxlICgoaWNlLTkgZ2VuZXJpYy1o YXNoLXRhYmxlcykKKyAgICAgICAgICAgICAgICAjOnNlbGVjdCAoKGhhc2ggLiBlcXVhbC1oYXNo KQorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmctY2ktaGFzaCBoYXNoLWJ5LWlkZW50 aXR5IGhhc2gtYnktdmFsdWUpKQorICAjOmV4cG9ydCAoY29tcGFyYXRvcj8KKyAgICAgICAgICAg IG1ha2UtY29tcGFyYXRvcgorICAgICAgICAgICAgY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGlj YXRlIGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlCisgICAgICAgICAgICBjb21wYXJhdG9y LW9yZGVyaW5nLXByZWRpY2F0ZSBjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAg IGNvbXBhcmF0b3Itb3JkZXJlZD8gY29tcGFyYXRvci1oYXNoYWJsZT8KKyAgICAgICAgICAgIGNv bXBhcmF0b3ItdGVzdC10eXBlIGNvbXBhcmF0b3ItY2hlY2stdHlwZQorICAgICAgICAgICAgY29t cGFyYXRvci1oYXNoCisgICAgICAgICAgICBtYWtlLXBhaXItY29tcGFyYXRvciBtYWtlLWxpc3Qt Y29tcGFyYXRvciBtYWtlLXZlY3Rvci1jb21wYXJhdG9yCisgICAgICAgICAgICBtYWtlLWVxLWNv bXBhcmF0b3IgbWFrZS1lcXYtY29tcGFyYXRvciBtYWtlLWVxdWFsLWNvbXBhcmF0b3IKKyAgICAg ICAgICAgIGJvb2xlYW4taGFzaCBjaGFyLWhhc2ggY2hhci1jaS1oYXNoIG51bWJlci1oYXNoCisg ICAgICAgICAgICBtYWtlLWRlZmF1bHQtY29tcGFyYXRvciBkZWZhdWx0LWhhc2gKKyAgICAgICAg ICAgIGNvbXBhcmF0b3ItcmVnaXN0ZXItZGVmYXVsdCEKKyAgICAgICAgICAgID0/IDw/ID4/IDw9 PyA+PT8KKyAgICAgICAgICAgIGNvbXBhcmF0b3ItaWY8PT4pCisgICM6cmUtZXhwb3J0IChzdHJp bmctaGFzaCBzdHJpbmctY2ktaGFzaCBzeW1ib2wtaGFzaCBoYXNoLWJvdW5kIGhhc2gtc2FsdCkp CisKKyhjb25kLWV4cGFuZC1wcm92aWRlIChjdXJyZW50LW1vZHVsZSkgJyhzcmZpLTEyOCkpCisK KwwKKzs7IEFyaXRobWV0aWMgaWYKKyhkZWZpbmUtc3ludGF4IGNvbXBhcmF0b3ItaWY8PT4KKyAg KHN5bnRheC1ydWxlcyAoKQorICAgICgoaWY8PT4gYSBiIGxlc3MgZXF1YWwgZ3JlYXRlcikKKyAg ICAgKGNvbXBhcmF0b3ItaWY8PT4gZGVmYXVsdC1jb21wYXJhdG9yIGEgYiBsZXNzIGVxdWFsIGdy ZWF0ZXIpKQorICAgICgoY29tcGFyYXRvci1pZjw9PiBjb21wYXJhdG9yIGEgYiBsZXNzIGVxdWFs IGdyZWF0ZXIpCisgICAgIChjb25kCisgICAgICAoKDw/IGNvbXBhcmF0b3IgYSBiKSBsZXNzKQor ICAgICAgKCg9PyBjb21wYXJhdG9yIGEgYikgZXF1YWwpCisgICAgICAoZWxzZSBncmVhdGVyKSkp KSkKKworDAorOzs7IERlZmluaXRpb24gb2YgY29tcGFyYXRvciByZWNvcmRzIHdpdGggYWNjZXNz b3JzIGFuZCBiYXNpYyBjb21wYXJhdG9yCisKKyhkZWZpbmUtcmVjb3JkLXR5cGUgY29tcGFyYXRv cgorICAobWFrZS1yYXctY29tcGFyYXRvciB0eXBlLXRlc3QgZXF1YWxpdHkgb3JkZXJpbmcgaGFz aCBvcmRlcmluZz8gaGFzaD8pCisgIGNvbXBhcmF0b3I/CisgICh0eXBlLXRlc3QgY29tcGFyYXRv ci10eXBlLXRlc3QtcHJlZGljYXRlKQorICAoZXF1YWxpdHkgY29tcGFyYXRvci1lcXVhbGl0eS1w cmVkaWNhdGUpCisgIChvcmRlcmluZyBjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSkKKyAg KGhhc2ggY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uKQorICAob3JkZXJpbmc/IGNvbXBhcmF0b3It b3JkZXJlZD8pCisgIChoYXNoPyBjb21wYXJhdG9yLWhhc2hhYmxlPykpCisKKyhkZWZpbmUgKGFs d2F5cy10cnVlIG9iaikgI3QpCisKKzs7IFB1YmxpYyBjb25zdHJ1Y3RvcgorKGRlZmluZSAobWFr ZS1jb21wYXJhdG9yIHR5cGUtdGVzdCBlcXVhbGl0eSBvcmRlcmluZyBoYXNoKQorICAobWFrZS1y YXctY29tcGFyYXRvcgorICAgKGlmIChlcT8gdHlwZS10ZXN0ICN0KSBhbHdheXMtdHJ1ZSB0eXBl LXRlc3QpCisgICAoaWYgKGVxPyBlcXVhbGl0eSAjdCkgKGxhbWJkYSAoeCB5KSAoZXF2PyAob3Jk ZXJpbmcgeCB5KSAwKSkgZXF1YWxpdHkpCisgICAoaWYgb3JkZXJpbmcgb3JkZXJpbmcgKGxhbWJk YSAoeCB5KSAoZXJyb3IgIm9yZGVyaW5nIG5vdCBzdXBwb3J0ZWQiKSkpCisgICAoaWYgaGFzaCBo YXNoIChsYW1iZGEgKHggeSkgKGVycm9yICJoYXNoaW5nIG5vdCBzdXBwb3J0ZWQiKSkpCisgICAo aWYgb3JkZXJpbmcgI3QgI2YpCisgICAoaWYgaGFzaCAjdCAjZikpKQorCisMCis7OzsgSW52b2tl cnMKKworOzsgSW52b2tlIHRoZSB0ZXN0IHR5cGUKKyhkZWZpbmUgKGNvbXBhcmF0b3ItdGVzdC10 eXBlIGNvbXBhcmF0b3Igb2JqKQorICAoKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBj b21wYXJhdG9yKSBvYmopKQorCis7OyBJbnZva2UgdGhlIHRlc3QgdHlwZSBhbmQgdGhyb3cgYW4g ZXJyb3IgaWYgaXQgZmFpbHMKKyhkZWZpbmUgKGNvbXBhcmF0b3ItY2hlY2stdHlwZSBjb21wYXJh dG9yIG9iaikKKyAgKGlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBjb21wYXJhdG9yIG9iaikKKyAg ICAgICN0CisgICAgICAoZXJyb3IgIkNvbXBhcmF0b3IgdHlwZSBjaGVjayBmYWlsZWQiIGNvbXBh cmF0b3Igb2JqKSkpCisKKzs7IEludm9rZSB0aGUgaGFzaCBmdW5jdGlvbgorKGRlZmluZSAoY29t cGFyYXRvci1oYXNoIGNvbXBhcmF0b3Igb2JqKQorICAoKGNvbXBhcmF0b3ItaGFzaC1mdW5jdGlv biBjb21wYXJhdG9yKSBvYmopKQorCisMCis7OzsgQ29tcGFyaXNvbiBwcmVkaWNhdGVzCisKKzs7 IEJpbmFyeSB2ZXJzaW9ucyBmb3IgaW50ZXJuYWwgdXNlCisKKyhkZWZpbmUgKGJpbmFyeT0/IGNv bXBhcmF0b3IgYSBiKQorICAoKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNvbXBhcmF0 b3IpIGEgYikpCisKKyhkZWZpbmUgKGJpbmFyeTw/IGNvbXBhcmF0b3IgYSBiKQorICAoKGNvbXBh cmF0b3Itb3JkZXJpbmctcHJlZGljYXRlIGNvbXBhcmF0b3IpIGEgYikpCisKKyhkZWZpbmUgKGJp bmFyeT4/IGNvbXBhcmF0b3IgYSBiKQorICAoYmluYXJ5PD8gY29tcGFyYXRvciBiIGEpKQorCiso ZGVmaW5lIChiaW5hcnk8PT8gY29tcGFyYXRvciBhIGIpCisgIChub3QgKGJpbmFyeT4/IGNvbXBh cmF0b3IgYSBiKSkpCisKKyhkZWZpbmUgKGJpbmFyeT49PyBjb21wYXJhdG9yIGEgYikKKyAgKG5v dCAoYmluYXJ5PD8gY29tcGFyYXRvciBhIGIpKSkKKworOzsgR2VuZXJhbCB2ZXJzaW9ucyBmb3Ig ZXhwb3J0CisKKyhkZWZpbmUgKD0/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk9PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKDw/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk8PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKD4/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk+PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKDw9PyBjb21wYXJhdG9yIGEgYiAuIG9ianMpCisgIChsZXQgbG9v cCAoKGEgYSkgKGIgYikgKG9ianMgb2JqcykpCisgICAgKGFuZCAoYmluYXJ5PD0/IGNvbXBhcmF0 b3IgYSBiKQorCSAoaWYgKG51bGw/IG9ianMpICN0IChsb29wIGIgKGNhciBvYmpzKSAoY2RyIG9i anMpKSkpKSkKKworKGRlZmluZSAoPj0/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBs b29wICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk+PT8gY29tcGFy YXRvciBhIGIpCisJIChpZiAobnVsbD8gb2JqcykgI3QgKGxvb3AgYiAoY2FyIG9ianMpIChjZHIg b2JqcykpKSkpKQorCisMCis7OzsgU2ltcGxlIG9yZGVyaW5nIGFuZCBoYXNoIGZ1bmN0aW9ucwor CisoZGVmaW5lIGJvb2xlYW4taGFzaCBoYXNoLWJ5LWlkZW50aXR5KQorKGRlZmluZSBjaGFyLWhh c2ggICAgaGFzaC1ieS1pZGVudGl0eSkKKyhkZWZpbmUgbnVtYmVyLWhhc2ggIGhhc2gtYnktdmFs dWUpCisKKyhkZWZpbmUqIChjaGFyLWNpLWhhc2ggYyAjOm9wdGlvbmFsIChzaXplIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkKKyAgKGhhc2hxIChjaGFyLWZvbGRjYXNlIGMpIHNpemUpKQorCis7OyBM ZXhpY29ncmFwaGljIG9yZGVyaW5nIG9mIGNvbXBsZXggbnVtYmVycworKGRlZmluZSAoY29tcGxl eDw/IGEgYikKKyAgKG9yICg8IChyZWFsLXBhcnQgYSkgKHJlYWwtcGFydCBiKSkKKyAgICAgIChh bmQgKD0gKHJlYWwtcGFydCBhKSAocmVhbC1wYXJ0IGIpKQorICAgICAgICAgICAoPCAoaW1hZy1w YXJ0IGEpIChpbWFnLXBhcnQgYikpKSkpCisKKyhkZWZpbmUgKHN5bWJvbDw/IGEgYikKKyAgOzsg VmFsaWQgYWNjb3JkaW5nIHRvIHNwZWMuCisgIDs7IEl0J3MgZmFzdGVyIHRvIGhhc2ggdGhhbiB0 byBjb21wYXJlIHN0cmluZ3MuCisgIChsZXQgKChoYSAoaGFzaHEgYSAoaGFzaC1ib3VuZCkpKQor ICAgICAgICAoaGIgKGhhc2hxIGIgKGhhc2gtYm91bmQpKSkpCisgICAgKG9yICg8IGhhIGhiKQor ICAgICAgICAoYW5kICg9IGhhIGhiKQorICAgICAgICAgICAgIChub3QgKGVxPyBhIGIpKQorICAg ICAgICAgICAgIChzdHJpbmc8PyAoc3ltYm9sLT5zdHJpbmcgYSkgKHN5bWJvbC0+c3RyaW5nIGIp KSkpKSkKKworOzsgU3RpY2sgdG8gZml4bnVtcworKGRlZmluZSBsb3dlci1tYXNrIChhc2ggKGhh c2gtYm91bmQpIC01KSkgOyAoLyAoaGFzaC1ib3VuZCkgMzIpCisKKzs7IEhhc2ggaGVscGVyCiso ZGVmaW5lIChtaXggaDEgaDIpCisgIChsb2d4b3IgKCogKGxvZ2FuZCBoMSBsb3dlci1tYXNrKSAz MSkgaDIpKQorCisKKwwKKzs7OyBQYWlyIGNvbXBhcmF0b3IKKyhkZWZpbmUgKG1ha2UtcGFpci1j b21wYXJhdG9yIGNhci1jb21wYXJhdG9yIGNkci1jb21wYXJhdG9yKQorICAobWFrZS1jb21wYXJh dG9yCisgICAobWFrZS1wYWlyLXR5cGUtdGVzdCBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRv cikKKyAgIChtYWtlLXBhaXI9PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgICht YWtlLXBhaXI8PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgIChtYWtlLXBhaXIt aGFzaCBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikpKQorCisoZGVmaW5lIChtYWtlLXBh aXItdHlwZS10ZXN0IGNhci1jb21wYXJhdG9yIGNkci1jb21wYXJhdG9yKQorICAobGV0ICgoY2Fy LXRlc3QgKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBjYXItY29tcGFyYXRvcikpCisg ICAgICAgIChjZHItdGVzdCAoY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGljYXRlIGNkci1jb21w YXJhdG9yKSkpCisgICAgKGlmIChlcT8gYWx3YXlzLXRydWUgY2FyLXRlc3QgY2RyLXRlc3QpCisg ICAgICAgIHBhaXI/CisgICAgICAgIChsYW1iZGEgKG9iaikKKyAgICAgICAgICAoYW5kIChwYWly PyBvYmopCisgICAgICAgICAgICAgICAoY2FyLXRlc3QgKGNhciBvYmopKQorICAgICAgICAgICAg ICAgKGNkci10ZXN0IChjZHIgb2JqKSkpKSkpKQorCisoZGVmaW5lIChtYWtlLXBhaXI9PyBjYXIt Y29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgKGxldCAoKGNhci1lcXVpdiAoY29tcGFyYXRv ci1lcXVhbGl0eS1wcmVkaWNhdGUgY2FyLWNvbXBhcmF0b3IpKQorICAgICAgICAoY2RyLWVxdWl2 IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBjZHItY29tcGFyYXRvcikpKQorICAgIChp ZiAoZXE/IGVxdWFsPyBjYXItZXF1aXYgY2RyLWVxdWl2KQorICAgICAgICBlcXVhbD8KKyAgICAg ICAgKGxhbWJkYSAoYSBiKQorICAgICAgICAgIChhbmQgKGNhci1lcXVpdiAoY2FyIGEpIChjYXIg YikpCisgICAgICAgICAgICAgICAoY2RyLWVxdWl2IChjZHIgYSkgKGNkciBiKSkpKSkpKQorCiso ZGVmaW5lIChtYWtlLXBhaXI8PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgKGxl dCAoKGNhci1lcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY2FyLWNvbXBhcmF0 b3IpKQorICAgICAgICAoY2FyPD8gKGNvbXBhcmF0b3Itb3JkZXJpbmctcHJlZGljYXRlIGNhci1j b21wYXJhdG9yKSkKKyAgICAgICAgKGNkcjw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0 ZSBjZHItY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEgKGEgYikKKyAgICAgIChvciAoY2FyPD8g KGNhciBhKSAoY2FyIGIpKQorICAgICAgICAgIChhbmQgKGNhci1lcXVpdiAoY2FyIGEpIChjYXIg YikpCisgICAgICAgICAgICAgICAoY2RyPD8gKGNkciBhKSAoY2RyIGIpKSkpKSkpCisKKyhkZWZp bmUgcGFpci1oYXNoLXNhbHQgKG1peCAoc3ltYm9sLWhhc2ggJ3BhaXIpIChoYXNoLXNhbHQpKSkK KworKGRlZmluZSAobWFrZS1wYWlyLWhhc2ggY2FyLWNvbXBhcmF0b3IgY2RyLWNvbXBhcmF0b3Ip CisgIChsZXQgKChjYXItaGFzaCAoY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uIGNhci1jb21wYXJh dG9yKSkKKyAgICAgICAgKGNkci1oYXNoIChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY2RyLWNv bXBhcmF0b3IpKSkKKyAgICAoaWYgKGVxPyBlcXVhbC1oYXNoIGNhci1oYXNoIGNkci1oYXNoKQor ICAgICAgICBlcXVhbC1oYXNoCisgICAgICAgIChsYW1iZGEgKG9iaikKKyAgICAgICAgICAobWl4 IChtaXggcGFpci1oYXNoLXNhbHQgKGNhci1oYXNoIChjYXIgb2JqKSkpCisgICAgICAgICAgICAg ICAoY2RyLWhhc2ggKGNkciBvYmopKSkpKSkpCisKKwwKKzs7OyBMaXN0IGNvbXBhcmF0b3IKKwor KGRlZmluZSAobWFrZS1saXN0LWNvbXBhcmF0b3IgZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVz dCBlbXB0eT8gaGVhZCB0YWlsKQorICAobWFrZS1jb21wYXJhdG9yCisgICAobWFrZS1saXN0LXR5 cGUtdGVzdCBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0IGVtcHR5PyBoZWFkIHRhaWwpCisg ICAobWFrZS1saXN0PT8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0 YWlsKQorICAgKG1ha2UtbGlzdDw/IGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgZW1wdHk/ IGhlYWQgdGFpbCkKKyAgIChtYWtlLWxpc3QtaGFzaCBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10 ZXN0IGVtcHR5PyBoZWFkIHRhaWwpKSkKKworKGRlZmluZSAobWFrZS1saXN0LXR5cGUtdGVzdCBl bGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0IGVtcHR5PyBoZWFkIHRhaWwpCisgIChsZXQgKChl bGVtLXR5cGUtdGVzdCAoY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGljYXRlIGVsZW1lbnQtY29t cGFyYXRvcikpKQorICAgIChsYW1iZGEgKG9iaikKKyAgICAgIChhbmQKKyAgICAgICAodHlwZS10 ZXN0IG9iaikKKyAgICAgICAobGV0IGxvb3AgKChvYmogb2JqKSkKKyAgICAgICAgIChjb25kCisg ICAgICAgICAgKChlbXB0eT8gb2JqKSAjdCkKKyAgICAgICAgICAoKG5vdCAoZWxlbS10eXBlLXRl c3QgKGhlYWQgb2JqKSkpICNmKQorICAgICAgICAgIChlbHNlIChsb29wICh0YWlsIG9iaikpKSkp KSkpKQorCisoZGVmaW5lIChtYWtlLWxpc3Q9PyBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0 IGVtcHR5PyBoZWFkIHRhaWwpCisgIChsZXQgKChlbGVtPT8gKGNvbXBhcmF0b3ItZXF1YWxpdHkt cHJlZGljYXRlIGVsZW1lbnQtY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEgKGEgYikKKyAgICAg IChsZXQgbG9vcCAoKGEgYSkgKGIgYikpCisgICAgICAgIChjb25kCisgICAgICAgICAoKGVtcHR5 PyBhKSAoZW1wdHk/IGIpKQorICAgICAgICAgKChlbXB0eT8gYikgI2YpCisgICAgICAgICAoKGVs ZW09PyAoaGVhZCBhKSAoaGVhZCBiKSkgKGxvb3AgKHRhaWwgYSkgKHRhaWwgYikpKQorICAgICAg ICAgKGVsc2UgI2YpKSkpKSkKKworKGRlZmluZSAobWFrZS1saXN0PD8gZWxlbWVudC1jb21wYXJh dG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0YWlsKQorICAobGV0ICgoZWxlbT0/IChjb21wYXJh dG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0b3IpKQorICAgICAgICAoZWxl bTw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0b3IpKSkK KyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0IGxvb3AgKChhIGEpIChiIGIpKQorICAgICAg ICAoY29uZAorICAgICAgICAgKChlbXB0eT8gYSkgKG5vdCAoZW1wdHk/IGIpKSkKKyAgICAgICAg ICgoZW1wdHk/IGIpICNmKQorICAgICAgICAgKChlbGVtPD8gKGhlYWQgYSkgKGhlYWQgYikpICN0 KQorICAgICAgICAgKChlbGVtPT8gKGhlYWQgYSkgKGhlYWQgYikpIChsb29wICh0YWlsIGEpICh0 YWlsIGIpKSkKKyAgICAgICAgIChlbHNlICNmKSkpKSkpCisKKyhkZWZpbmUgbGlzdC1oYXNoLXNh bHQgKG1peCAoc3ltYm9sLWhhc2ggJ2xpc3QpIChoYXNoLXNhbHQpKSkKKworKGRlZmluZSAobWFr ZS1saXN0LWhhc2ggZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0YWls KQorICAobGV0ICgoZWxlbS1oYXNoIChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZWxlbWVudC1j b21wYXJhdG9yKSkpCisgICAgKGxhbWJkYSAob2JqKQorICAgICAgKGxldCBsb29wICgob2JqIG9i aikKKyAgICAgICAgICAgICAgICAgKHJlc3VsdCBsaXN0LWhhc2gtc2FsdCkpCisgICAgICAgIChj b25kCisgICAgICAgICAoKGVtcHR5PyBvYmopIHJlc3VsdCkKKyAgICAgICAgIChlbHNlIChsb29w ICh0YWlsIG9iaikgKG1peCByZXN1bHQgKGVsZW0taGFzaCAoaGVhZCBvYmopKSkpKSkpKSkpCisK KwwKKzs7OyBWZWN0b3IgY29tcGFyYXRvcgorCisoZGVmaW5lIChtYWtlLXZlY3Rvci1jb21wYXJh dG9yIGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKG1ha2UtY29t cGFyYXRvcgorICAgKG1ha2UtdmVjdG9yLXR5cGUtdGVzdCBlbGVtZW50LWNvbXBhcmF0b3IgdHlw ZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3I9PyBlbGVtZW50LWNvbXBhcmF0b3Ig dHlwZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3I8PyBlbGVtZW50LWNvbXBhcmF0 b3IgdHlwZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3ItaGFzaCBlbGVtZW50LWNv bXBhcmF0b3IgdHlwZS10ZXN0IGxlbmd0aCByZWYpKSkKKworKGRlZmluZSAobWFrZS12ZWN0b3It dHlwZS10ZXN0IGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKGxl dCAoKGVsZW0tdHlwZS10ZXN0IChjb21wYXJhdG9yLXR5cGUtdGVzdC1wcmVkaWNhdGUgZWxlbWVu dC1jb21wYXJhdG9yKSkpCisgICAgKGxhbWJkYSAob2JqKQorICAgICAgKGFuZAorICAgICAgICh0 eXBlLXRlc3Qgb2JqKQorICAgICAgIChsZXQgKChsZW4gKGxlbmd0aCBvYmopKSkKKyAgICAgICAg IChsZXQgbG9vcCAoKG4gMCkpCisgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAoKD0gbiBs ZW4pICN0KQorICAgICAgICAgICAgKChub3QgKGVsZW0tdHlwZS10ZXN0IChyZWYgb2JqIG4pKSkg I2YpCisgICAgICAgICAgICAoZWxzZSAobG9vcCAoKyBuIDEpKSkpKSkpKSkpCisKKyhkZWZpbmUg KG1ha2UtdmVjdG9yPT8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBsZW5ndGggcmVmKQor ICAobGV0ICgoZWxlbT0/IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNv bXBhcmF0b3IpKSkKKyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0ICgobGVuIChsZW5ndGgg YikpKQorICAgICAgICAoYW5kCisgICAgICAgICAoPSAobGVuZ3RoIGEpIGxlbikKKyAgICAgICAg IChsZXQgbG9vcCAoKG4gMCkpCisgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAoKD0gbiBs ZW4pICN0KQorICAgICAgICAgICAgKChlbGVtPT8gKHJlZiBhIG4pIChyZWYgYiBuKSkgKGxvb3Ag KCsgbiAxKSkpCisgICAgICAgICAgICAoZWxzZSAjZikpKSkpKSkpCisKKyhkZWZpbmUgKG1ha2Ut dmVjdG9yPD8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBsZW5ndGggcmVmKQorICAobGV0 ICgoZWxlbT0/IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0 b3IpKQorICAgICAgICAoZWxlbTw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBlbGVt ZW50LWNvbXBhcmF0b3IpKSkKKyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0ICgobGVuYSAo bGVuZ3RoIGEpKQorICAgICAgICAgICAgKGxlbmIgKGxlbmd0aCBiKSkpCisgICAgICAgIChjb25k CisgICAgICAgICAoKDwgbGVuYSBsZW5iKSAjdCkKKyAgICAgICAgICgoPiBsZW5hIGxlbmIpICNm KQorICAgICAgICAgKGVsc2UKKyAgICAgICAgICAobGV0IGxvb3AgKChuIDApKQorICAgICAgICAg ICAgKGNvbmQKKyAgICAgICAgICAgICAoKD0gbiBsZW5hKSAjZikKKyAgICAgICAgICAgICAoKGVs ZW08PyAocmVmIGEgbikgKHJlZiBiIG4pKSAjdCkKKyAgICAgICAgICAgICAoKGVsZW09PyAocmVm IGEgbikgKHJlZiBiIG4pKSAobG9vcCAoKyBuIDEpKSkKKyAgICAgICAgICAgICAoZWxzZSAjZikp KSkpKSkpKQorCisoZGVmaW5lIHZlY3Rvci1oYXNoLXNhbHQgKG1peCAoc3ltYm9sLWhhc2ggJ3Zl Y3RvcikgKGhhc2gtc2FsdCkpKQorCisoZGVmaW5lIChtYWtlLXZlY3Rvci1oYXNoIGVsZW1lbnQt Y29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKGxldCAoKGVsZW0taGFzaCAoY29t cGFyYXRvci1oYXNoLWZ1bmN0aW9uIGVsZW1lbnQtY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEg KG9iaikKKyAgICAgIChsZXQgKChsZW4gKGxlbmd0aCBvYmopKSkKKyAgICAgICAgKGxldCBsb29w ICgobiAwKSAocmVzdWx0IHZlY3Rvci1oYXNoLXNhbHQpKQorICAgICAgICAgIChjb25kCisgICAg ICAgICAgICgoPSBuIGxlbikgcmVzdWx0KQorICAgICAgICAgICAoZWxzZSAobG9vcCAoKyBuIDEp IChtaXggcmVzdWx0IChlbGVtLWhhc2ggKHJlZiBvYmogbikpKSkpKSkpKSkpCisKKwwKKzs7OyBU aGUgZGVmYXVsdCBjb21wYXJhdG9yCisKKzs7OyBTdGFuZGFyZCBjb21wYXJhdG9ycyBhbmQgdGhl aXIgZnVuY3Rpb25zCisKKzs7IFRoZSB1bmtub3duLW9iamVjdCBjb21wYXJhdG9yLCB1c2VkIGFz IGEgZmFsbGJhY2sgdG8gZXZlcnl0aGluZyBlbHNlCis7OyBFdmVyeXRoaW5nIGNvbXBhcmVzIGV4 YWN0bHkgdGhlIHNhbWUgYW5kIGhhc2hlcyB0byAwCisoZGVmaW5lIHVua25vd24tb2JqZWN0LWNv bXBhcmF0b3IKKyAgKG1ha2UtY29tcGFyYXRvcgorICAgYWx3YXlzLXRydWUKKyAgIChsYW1iZGEg KGEgYikgI3QpCisgICAobGFtYmRhIChhIGIpICNmKQorICAgKGxhbWJkYSAob2JqKSAwKSkpCisK Kzs7IE5leHQgaW5kZXggZm9yIGFkZGVkIGNvbXBhcmF0b3IKKworKGRlZmluZSAqbmV4dC1jb21w YXJhdG9yLWluZGV4KiAwKQorKGRlZmluZSAqcmVnaXN0ZXJlZC1jb21wYXJhdG9ycyogKG1ha2Ut dmVjdG9yIDggdW5rbm93bi1vYmplY3QtY29tcGFyYXRvcikpCisKKzs7IFJlZ2lzdGVyIGEgbmV3 IGNvbXBhcmF0b3IgZm9yIHVzZSBieSB0aGUgZGVmYXVsdCBjb21wYXJhdG9yLgorKGRlZmluZSAo Y29tcGFyYXRvci1yZWdpc3Rlci1kZWZhdWx0ISBjb21wYXJhdG9yKQorICAobGV0ICgobGVuICh2 ZWN0b3ItbGVuZ3RoICpyZWdpc3RlcmVkLWNvbXBhcmF0b3JzKikpKQorICAgIChpZiAoPSAqbmV4 dC1jb21wYXJhdG9yLWluZGV4KiAoLSBsZW4gMSkpCisgICAgICAgIChzZXQhICpyZWdpc3RlcmVk LWNvbXBhcmF0b3JzKgorICAgICAgICAgICh2ZWN0b3ItY29weSAqcmVnaXN0ZXJlZC1jb21wYXJh dG9ycyogMCAoKiAyIGxlbikgdW5rbm93bi1vYmplY3QtY29tcGFyYXRvcikpKSkKKyAgKHZlY3Rv ci1zZXQhICpyZWdpc3RlcmVkLWNvbXBhcmF0b3JzKiAqbmV4dC1jb21wYXJhdG9yLWluZGV4KiBj b21wYXJhdG9yKQorICAoc2V0ISAqbmV4dC1jb21wYXJhdG9yLWluZGV4KiAoKyAxICpuZXh0LWNv bXBhcmF0b3ItaW5kZXgqKSkpCisKKzs7IFJldHVybiBvcmRpbmFsIGZvciBvYmplY3QgdHlwZXM6 IG51bGwgc29ydHMgYmVmb3JlIGJvb2xlYW5zLCB3aGljaCBzb3J0Cis7OyBiZWZvcmUgbnVtYmVy cywgZXRjLiAgSW1wbGVtZW50YXRpb25zIGNhbiBleHRlbmQgdGhpcy4KKzs7IFBlb3BsZSB3aG8g Y2FsbCBjb21wYXJhdG9yLXJlZ2lzdGVyLWRlZmF1bHQhIGVmZmVjdGl2ZWx5IGRvIGV4dGVuZCBp dC4KKyhkZWZpbmUgKGludGVybmFsLW9iamVjdC10eXBlIG9iaikKKyAgKGNvbmQKKyAgICgobnVs bD8gb2JqKSAwKQorICAgKChib29sZWFuPyBvYmopIDEpCisgICAoKG51bWJlcj8gb2JqKSAyKQor ICAgKChjaGFyPyBvYmopIDMpCisgICAoKHN0cmluZz8gb2JqKSA0KQorICAgKChzeW1ib2w/IG9i aikgNSkKKyAgICgoYnl0ZXZlY3Rvcj8gb2JqKSA2KQorICAgKCh2ZWN0b3I/IG9iaikgNykKKyAg ICgocGFpcj8gb2JqKSA4KQorICAgKCh1bnNwZWNpZmllZD8gb2JqKSA5KQorICAgKChlb2Ytb2Jq ZWN0PyBvYmopIDEwKQorICAgOzsgQWRkIG1vcmUgaGVyZSBpZiB5b3Ugd2FudAorICAgKGVsc2Ug I2YpKSkKKworKGRlZmluZSAoZXh0ZXJuYWwtb2JqZWN0LXR5cGUgb2JqKQorICAocmVnaXN0ZXJl ZC1pbmRleCBvYmopKQorCis7OyBSZXR1cm4gdGhlIGluZGV4IGZvciB0aGUgcmVnaXN0ZXJlZCB0 eXBlIG9mIG9iai4KKyhkZWZpbmUgKHJlZ2lzdGVyZWQtaW5kZXggb2JqKQorICAodmVjdG9yLWlu ZGV4IChsYW1iZGEgKGNvbXBhcmF0b3IpCisgICAgICAgICAgICAgICAgICAoY29tcGFyYXRvci10 ZXN0LXR5cGUgY29tcGFyYXRvciBvYmopKQorICAgICAgICAgICAgICAgICpyZWdpc3RlcmVkLWNv bXBhcmF0b3JzKikpCisKKyhkZWZpbmUgKGV4dGVybmFsLW9iamVjdC1jb21wYXJhdG9yIG9iaikK KyAgKHZlY3Rvci1hbnkgKGxhbWJkYSAoY29tcGFyYXRvcikKKyAgICAgICAgICAgICAgICAoYW5k IChjb21wYXJhdG9yLXRlc3QtdHlwZSBjb21wYXJhdG9yIG9iaikKKyAgICAgICAgICAgICAgICAg ICAgIGNvbXBhcmF0b3IpKQorICAgICAgICAgICAgICAqcmVnaXN0ZXJlZC1jb21wYXJhdG9ycyop KQorCis7OyBHaXZlbiBhbiBpbmRleCwgcmV0cmlldmUgYSByZWdpc3RlcmVkIGNvbmR1Y3Rvci4K KyhkZWZpbmUgKHJlZ2lzdGVyZWQtY29tcGFyYXRvciBpKQorICAodmVjdG9yLXJlZiAqcmVnaXN0 ZXJlZC1jb21wYXJhdG9ycyogaSkpCisKKyhkZWZpbmUgKGludGVybmFsLWRpc3BhdGNoLWVxdWFs aXR5IHR5cGUgYSBiKQorICA7OyBFUVVBTD8gYWxyZWFkeSByZXR1cm5zICN0IGZvciBtYW55IGlu dGVybmFsIHR5cGVzCisgIChjYXNlIHR5cGUKKyAgICA7OyAoKDApICN0KSA7IEFsbCBlbXB0eSBs aXN0cyBhcmUgZXF1YWwKKyAgICA7OyAoKDEpIChpZiBhIChhbmQgYiAjdCkgKG5vdCBiKSkpCisg ICAgOzsgKCgyKSAoPSBhIGIpKQorICAgIDs7ICgoMykgKGNoYXI9PyBhIGIpKQorICAgIDs7ICgo NCkgKHN0cmluZz0/IGEgYikpCisgICAgOzsgKCg1KSAoZXE/IGEgYikpCisgICAgOzsgKCg2KSAo ZGVmYXVsdC1ieXRldmVjdG9yPT8gYSBiKSkKKyAgICAoKDcpIChkZWZhdWx0LXZlY3Rvcj0/IGEg YikpCisgICAgKCg4KSAoZGVmYXVsdC1wYWlyPT8gYSBiKSkKKyAgICA7OyAoKDkgMTApICN0KQor ICAgIDs7IEFkZCBtb3JlIGhlcmUKKyAgICAoZWxzZSAjZikpKQorCisoZGVmaW5lIChleHRlcm5h bC1kaXNwYXRjaC1lcXVhbGl0eSB0eXBlIGEgYikKKyAgKGJpbmFyeT0/IChyZWdpc3RlcmVkLWNv bXBhcmF0b3IgdHlwZSkgYSBiKSkKKworKGRlZmluZSAoaW50ZXJuYWwtZGlzcGF0Y2gtb3JkZXJp bmcgdHlwZSBhIGIpCisgIDs7IEVRVUFMPyBhbHJlYWR5IGVsaW1pbmF0ZXMgc29tZSBpbnRlcm5h bCB0eXBlcworICAoY2FzZSB0eXBlCisgICAgOzsgKCgwKSAjZikgOyBBbGwgZW1wdHkgbGlzdHMg YXJlIGVxdWFsCisgICAgKCgxKSAoYW5kIChub3QgYSkgYikpIDsgI2YgPCAjdCBidXQgbm90IG90 aGVyd2lzZQorICAgICgoMikgKGNvbXBsZXg8PyBhIGIpKQorICAgICgoMykgKGNoYXI8PyBhIGIp KQorICAgICgoNCkgKHN0cmluZzw/IGEgYikpCisgICAgKCg1KSAoc3ltYm9sPD8gYSBiKSkKKyAg ICAoKDYpIChkZWZhdWx0LWJ5dGV2ZWN0b3I8PyBhIGIpKQorICAgICgoNykgKGRlZmF1bHQtdmVj dG9yPD8gYSBiKSkKKyAgICAoKDgpIChkZWZhdWx0LXBhaXI8PyBhIGIpKQorICAgIDs7ICgoOSAx MCkgI2YpCisgICAgOzsgQWRkIG1vcmUgaGVyZQorICAgICkpCisKKyhkZWZpbmUgKGV4dGVybmFs LWRpc3BhdGNoLW9yZGVyaW5nIHR5cGUgYSBiKQorICAoYmluYXJ5PD8gKHJlZ2lzdGVyZWQtY29t cGFyYXRvciB0eXBlKSBhIGIpKQorCis7OyBFUVVBTC1IQVNIIHJldHVybnMgdGhlIHNhbWUgYXMg SEFTSC1CWS1WQUxVRSBvbiBudW1iZXJzIGFuZAorOzsgSEFTSC1CWS1JREVOVElUWSBvbiBib29s ZWFucywgY2hhcnMgYW5kIHN5bWJvbHMuCisKKyhkZWZpbmUgKGRlZmF1bHQtaGFzaCBvYmopCisg IChsZXQgKCh0eXBlIChpbnRlcm5hbC1vYmplY3QtdHlwZSBvYmopKSkKKyAgICAoaWYgdHlwZQor ICAgICAgICAoaWYgKG9yICg8PSB0eXBlIDYpICg+PSB0eXBlIDkpKQorICAgICAgICAgICAgKGVx dWFsLWhhc2ggb2JqKQorICAgICAgICAgICAgKGNhc2UgdHlwZQorICAgICAgICAgICAgICAoKDcp IChkZWZhdWx0LXZlY3Rvci1oYXNoIG9iaikpCisgICAgICAgICAgICAgICgoOCkgKGRlZmF1bHQt cGFpci1oYXNoIG9iaikpCisgICAgICAgICAgICAgIDs7IEFkZCBtb3JlIGhlcmUKKyAgICAgICAg ICAgICAgKSkKKyAgICAgICAgKGxldCAoKGNvbXBhcmF0b3IgKGV4dGVybmFsLW9iamVjdC1jb21w YXJhdG9yIG9iaikpKQorICAgICAgICAgIChjb21wYXJhdG9yLWhhc2ggY29tcGFyYXRvciBvYmop KSkpKQorCisoZGVmaW5lIChkZWZhdWx0LW9yZGVyaW5nIGEgYikKKyAgKGFuZCAobm90IChlcXVh bD8gYSBiKSkgOyBzaG91bGQgYmUgbXVjaCBmYXN0ZXIgdGhhbiB0aGlzIHByb2NlZHVyZQorICAg ICAgIChsZXQgKChhLWl0eXBlIChpbnRlcm5hbC1vYmplY3QtdHlwZSBhKSkKKyAgICAgICAgICAg ICAoYi1pdHlwZSAoaW50ZXJuYWwtb2JqZWN0LXR5cGUgYikpKQorICAgICAgICAgKGNvbmQKKyAg ICAgICAgICAoKG5vdCBiLWl0eXBlKQorICAgICAgICAgICAob3IgYS1pdHlwZQorICAgICAgICAg ICAgICAgOzsgTmVpdGhlciBhIG5vciBiIGFyZSBvZiBpbnRlcm5hbCB0eXBlOgorICAgICAgICAg ICAgICAgOzsgZGlzcGF0Y2ggb3JkZXJpbmcgb24gZXh0ZXJuYWwgdHlwZQorICAgICAgICAgICAg ICAgKGxldCAoKGEtZXR5cGUgKGV4dGVybmFsLW9iamVjdC10eXBlIGEpKQorICAgICAgICAgICAg ICAgICAgICAgKGItZXR5cGUgKGV4dGVybmFsLW9iamVjdC10eXBlIGIpKSkKKyAgICAgICAgICAg ICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICgoPCBhLWV0eXBlIGItZXR5cGUpICN0KQor ICAgICAgICAgICAgICAgICAgKCg+IGEtZXR5cGUgYi1ldHlwZSkgI2YpCisgICAgICAgICAgICAg ICAgICAoZWxzZSAoZXh0ZXJuYWwtZGlzcGF0Y2gtb3JkZXJpbmcgYS1ldHlwZSBhIGIpKSkpKSkK KyAgICAgICAgICAoKG5vdCBhLWl0eXBlKSAjZikKKyAgICAgICAgICA7OyBCb3RoIGEgYW5kIGIg YXJlIG9mIGludGVybmFsIHR5cGUKKyAgICAgICAgICAoKDwgYS1pdHlwZSBiLWl0eXBlKSAjdCkK KyAgICAgICAgICAoKD4gYS1pdHlwZSBiLWl0eXBlKSAjZikKKyAgICAgICAgICAoZWxzZSAoaW50 ZXJuYWwtZGlzcGF0Y2gtb3JkZXJpbmcgYS1pdHlwZSBhIGIpKSkpKSkKKworKGRlZmluZSAoZGVm YXVsdC1lcXVhbGl0eSBhIGIpCisgIChvciAoZXF1YWw/IGEgYikgOyBzaG91bGQgYmUgbXVjaCBm YXN0ZXIgdGhhbiB0aGlzIHByb2NlZHVyZQorICAgICAgKGxldCAoKGEtaXR5cGUgKGludGVybmFs LW9iamVjdC10eXBlIGEpKQorICAgICAgICAgICAgKGItaXR5cGUgKGludGVybmFsLW9iamVjdC10 eXBlIGIpKSkKKyAgICAgICAgKGFuZCAoZXF2PyBhLWl0eXBlIGItaXR5cGUpCisgICAgICAgICAg ICAgKGlmIGEtaXR5cGUKKyAgICAgICAgICAgICAgICAgKGludGVybmFsLWRpc3BhdGNoLWVxdWFs aXR5IGEtaXR5cGUgYSBiKQorICAgICAgICAgICAgICAgICAobGV0ICgoYS1jb21wIChleHRlcm5h bC1vYmplY3QtY29tcGFyYXRvciBhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGItY29tcCAo ZXh0ZXJuYWwtb2JqZWN0LWNvbXBhcmF0b3IgYikpKQorICAgICAgICAgICAgICAgICAgIChhbmQg KGVxPyBhLWNvbXAgYi1jb21wKSAoYmluYXJ5PT8gYS1jb21wIGEgYikpKSkpKSkpCisKKzs7IE5v dGU6IGNvbXBhcmF0b3JzIGFyZSBpbW11dGFibGUsIG5vIHJlYXNvbiB0byBhbGxvY2F0ZSBhIG5l dyBvbmUKKyhkZWZpbmUgZGVmYXVsdC1jb21wYXJhdG9yIChtYWtlLWNvbXBhcmF0b3IgYWx3YXlz LXRydWUgZGVmYXVsdC1lcXVhbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0LW9yZGVyaW5nIGRlZmF1bHQtaGFzaCkpCisKKyhkZWZpbmUgKG1h a2UtZGVmYXVsdC1jb21wYXJhdG9yKSBkZWZhdWx0LWNvbXBhcmF0b3IpCisKKyhkZWZpbmUgZGVm YXVsdC1wYWlyLWNvbXBhcmF0b3IKKyAgKG1ha2UtcGFpci1jb21wYXJhdG9yIGRlZmF1bHQtY29t cGFyYXRvciBkZWZhdWx0LWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGRlZmF1bHQtcGFpcj0/Cisg IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBkZWZhdWx0LXBhaXItY29tcGFyYXRvcikp CisoZGVmaW5lIGRlZmF1bHQtcGFpcjw/CisgIChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0 ZSBkZWZhdWx0LXBhaXItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtcGFpci1oYXNoCisg IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZGVmYXVsdC1wYWlyLWNvbXBhcmF0b3IpKQorCiso ZGVmaW5lIGRlZmF1bHQtdmVjdG9yLWNvbXBhcmF0b3IKKyAgKG1ha2UtdmVjdG9yLWNvbXBhcmF0 b3IgZGVmYXVsdC1jb21wYXJhdG9yIHZlY3Rvcj8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg dmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmKSkKKworKGRlZmluZSBkZWZhdWx0LXZlY3Rvcj0/Cisg IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBkZWZhdWx0LXZlY3Rvci1jb21wYXJhdG9y KSkKKyhkZWZpbmUgZGVmYXVsdC12ZWN0b3I8PworICAoY29tcGFyYXRvci1vcmRlcmluZy1wcmVk aWNhdGUgZGVmYXVsdC12ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtdmVjdG9y LWhhc2gKKyAgKGNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBkZWZhdWx0LXZlY3Rvci1jb21wYXJh dG9yKSkKKworKGRlZmluZSBkZWZhdWx0LWJ5dGV2ZWN0b3ItY29tcGFyYXRvcgorICAobWFrZS12 ZWN0b3ItY29tcGFyYXRvciBkZWZhdWx0LWNvbXBhcmF0b3IgYnl0ZXZlY3Rvcj8KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgYnl0ZXZlY3Rvci1sZW5ndGggYnl0ZXZlY3Rvci11OC1yZWYpKQor CisoZGVmaW5lIGRlZmF1bHQtYnl0ZXZlY3Rvcj0/CisgIChjb21wYXJhdG9yLWVxdWFsaXR5LXBy ZWRpY2F0ZSBkZWZhdWx0LWJ5dGV2ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQt Ynl0ZXZlY3Rvcjw/CisgIChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBkZWZhdWx0LWJ5 dGV2ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtYnl0ZXZlY3Rvci1oYXNoCisg IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZGVmYXVsdC1ieXRldmVjdG9yLWNvbXBhcmF0b3Ip KQorCis7OzsgV3JhcHBlZCBlcXVhbGl0eSBwcmVkaWNhdGVzCis7OzsgVGhlc2UgY29tcGFyYXRv cnMgZG9uJ3QgaGF2ZSBvcmRlcmluZyBmdW5jdGlvbnMuCisKKzs7IE5vdGU6IGNvbXBhcmF0b3Jz IGFyZSBpbW11dGFibGUsIG5vIHJlYXNvbiB0byBhbGxvY2F0ZSBhIG5ldyBvbmUKKyhkZWZpbmUg ZXEtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yICN0IGVxPyAjZiBkZWZhdWx0LWhhc2gpKQor KGRlZmluZSAobWFrZS1lcS1jb21wYXJhdG9yKSBlcS1jb21wYXJhdG9yKQorCisoZGVmaW5lIGVx di1jb21wYXJhdG9yIChtYWtlLWNvbXBhcmF0b3IgI3QgZXF2PyAjZiBkZWZhdWx0LWhhc2gpKQor KGRlZmluZSAobWFrZS1lcXYtY29tcGFyYXRvcikgZXF2LWNvbXBhcmF0b3IpCisKKyhkZWZpbmUg ZXF1YWwtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yICN0IGVxdWFsPyAjZiBkZWZhdWx0LWhh c2gpKQorKGRlZmluZSAobWFrZS1lcXVhbC1jb21wYXJhdG9yKSBlcXVhbC1jb21wYXJhdG9yKQor Cis7OyBlb2YKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktMTI4L2dudS5zY20gYi9tb2R1 bGUvc3JmaS9zcmZpLTEyOC9nbnUuc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uODlmZDQzNGFhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlL3NyZmkvc3JmaS0xMjgv Z251LnNjbQpAQCAtMCwwICsxLDM4IEBACis7OzsgRXh0ZW5zaW9ucyB0byBTUkZJLTEyOAorCis7 OyAgICBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7 OworOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OworOzsgVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKzs7IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCis7OworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorOzsgRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQorCisoZGVmaW5lLW1vZHVsZSAoc3JmaSBzcmZpLTEyOCBnbnUpCisgICM6ZXhw b3J0IChoYXNoLWJvdW5kIGhhc2gtc2FsdCB3aXRoLWhhc2gtc2FsdCkpCisKKyhkZWZpbmUtc3lu dGF4IGhhc2gtYm91bmQKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaGFzaC1ib3VuZCkgbW9z dC1wb3NpdGl2ZS1maXhudW0pKSkKKworKGRlZmluZSAlc2FsdCUgKG1ha2UtcGFyYW1ldGVyIChy YW5kb20gKGhhc2gtYm91bmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2VlZC0+cmFuZG9tLXN0YXRlIChjdXJyZW50LXRpbWUpKSkpKQorCisoZGVmaW5lLXN5bnRh eCBoYXNoLXNhbHQKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaGFzaC1zYWx0KSAoJXNhbHQl KSkpKQorCisoZGVmaW5lLXN5bnRheCB3aXRoLWhhc2gtc2FsdAorICAoc3ludGF4LXJ1bGVzICgp CisgICAgKCh3aXRoLWhhc2gtc2FsdCBuZXctc2FsdCBoYXNoLWZ1bmMgb2JqKQorICAgICAocGFy YW1ldGVyaXplICgoJXNhbHQlIG5ldy1zYWx0KSkgKGhhc2gtZnVuYyBvYmopKSkpKQorCis7OyBl b2YKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0LXN1aXRlL01ha2Vm aWxlLmFtCmluZGV4IGYwYWQ4YmI5MS4uYTJmNzNiMzI5IDEwMDY0NAotLS0gYS90ZXN0LXN1aXRl L01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KQEAgLTE2Myw2ICsxNjMs NyBAQCBTQ01fVEVTVFMgPSB0ZXN0cy8wMC1pbml0aWFsLWVudi50ZXN0CQlcCiAJICAgIHRlc3Rz L3NyZmktMTA1LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktMTExLnRlc3QJCQlcCiAJICAgIHRl c3RzL3NyZmktMTI2LnRlc3QJCQlcCisJICAgIHRlc3RzL3NyZmktMTI4LnRlc3QJCQlcCiAJICAg IHRlc3RzL3NyZmktNC50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTkudGVzdAkJCVwKIAkgICAg dGVzdHMvc3RhdHByb2YudGVzdAkJCVwKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3Jm aS0xMjgudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjgudGVzdApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjAyYTUzOGUyMgotLS0gL2Rldi9udWxsCisrKyBiL3Rl c3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjgudGVzdApAQCAtMCwwICsxLDM0OCBAQAorOzs7OyBzcmZp LTEyOC50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyOCAtKi0gc2NoZW1lIC0qLQorOzs7 OworOzs7OyAJQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorOzs7OworOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCis7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsK Kzs7OzsgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK Kzs7OzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7OyBUaGUgZm9s bG93aW5nIHRlc3RzIGFyZSB0aGUgdGVzdHMgZnJvbSBTUkZJLTEyNiByZWZlcmVuY2UKKzs7OyBp bXBsZW1lbnRhdGlvbiBwb3J0ZWQgdG8gR3VpbGUgdGVzdCBzdWl0ZS4KKworOzsgVGhpcyBmaWxl IGNvbnRhaW5zIGNvZGUgZnJvbSBTUkZJIDEyOCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIGJ5 Cis7OyBKb2huIENvd2FuCisKKzs7OyBDb3B5cmlnaHQgKEMpIEpvaG4gQ293YW4gKDIwMTUpLiBB bGwgUmlnaHRzIFJlc2VydmVkLgorOzs7Cis7OzsgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKzs7OyBvYnRhaW5pbmcgYSBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorOzs7IGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7OyByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwK Kzs7OyBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3IKKzs7OyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorOzs7IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nCis7OzsgY29uZGl0aW9uczoKKzs7OworOzs7IFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl Cis7OzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUgU29mdHdhcmUuCis7OzsKKzs7OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7OyBFWFBSRVNTIE9SIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKKzs7OyBPRiBNRVJDSEFO VEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzs7IE5PTklO RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCis7 OzsgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFC SUxJVFksCis7OzsgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCis7OzsgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorOzs7IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KKworKGRlZmluZS1tb2R1bGUgKHRlc3Qtc3JmaS0xMjgpCisgICM6dXNlLW1vZHVsZSAo dGVzdC1zdWl0ZSBsaWIpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEyOCkKKyAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMikKKyAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktOCkKKyAgIzp1c2UtbW9kdWxlIChybnJzIGJ5dGV2ZWN0b3Jz KSkKKworKGRlZmluZSAodmVjdG9yLWNkciB2ZWMpCisgIChsZXQqICgobGVuICh2ZWN0b3ItbGVu Z3RoIHZlYykpCisgICAgICAgICAocmVzdWx0IChtYWtlLXZlY3RvciAoLSBsZW4gMSkpKSkKKyAg ICAobGV0IGxvb3AgKChuIDEpKQorICAgICAgKGNvbmQKKyAgICAgICAoKD0gbiBsZW4pIHJlc3Vs dCkKKyAgICAgICAoZWxzZSAodmVjdG9yLXNldCEgcmVzdWx0ICgtIG4gMSkgKHZlY3Rvci1yZWYg dmVjIG4pKQorICAgICAgICAgICAgIChsb29wICgrIG4gMSkpKSkpKSkKKworKGRlZmluZSBkZWZh dWx0LWNvbXBhcmF0b3IgKG1ha2UtZGVmYXVsdC1jb21wYXJhdG9yKSkKKworKGRlZmluZSByZWFs LWNvbXBhcmF0b3IgKG1ha2UtY29tcGFyYXRvciByZWFsPyA9IDwgbnVtYmVyLWhhc2gpKQorCiso ZGVmaW5lIGRlZ2VuZXJhdGUtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yIChsYW1iZGEgKHgp ICN0KSBlcXVhbD8gI2YgI2YpKQorCisoZGVmaW5lIGJvb2xlYW4tY29tcGFyYXRvcgorICAobWFr ZS1jb21wYXJhdG9yIGJvb2xlYW4/IGVxPyAobGFtYmRhICh4IHkpIChhbmQgKG5vdCB4KSB5KSkg Ym9vbGVhbi1oYXNoKSkKKworKGRlZmluZSBib29sLXBhaXItY29tcGFyYXRvcgorICAobWFrZS1w YWlyLWNvbXBhcmF0b3IgYm9vbGVhbi1jb21wYXJhdG9yIGJvb2xlYW4tY29tcGFyYXRvcikpCisK KyhkZWZpbmUgbnVtLWxpc3QtY29tcGFyYXRvcgorICAobWFrZS1saXN0LWNvbXBhcmF0b3IgcmVh bC1jb21wYXJhdG9yIGxpc3Q/IG51bGw/IGNhciBjZHIpKQorCisoZGVmaW5lIG51bS12ZWN0b3It Y29tcGFyYXRvcgorICAobWFrZS12ZWN0b3ItY29tcGFyYXRvciByZWFsLWNvbXBhcmF0b3IgdmVj dG9yPyB2ZWN0b3ItbGVuZ3RoIHZlY3Rvci1yZWYpKQorCisoZGVmaW5lIHZlY3Rvci1xdWEtbGlz dC1jb21wYXJhdG9yCisgIChtYWtlLWxpc3QtY29tcGFyYXRvcgorICAgcmVhbC1jb21wYXJhdG9y CisgICB2ZWN0b3I/CisgICAobGFtYmRhICh2ZWMpICg9IDAgKHZlY3Rvci1sZW5ndGggdmVjKSkp CisgICAobGFtYmRhICh2ZWMpICh2ZWN0b3ItcmVmIHZlYyAwKSkKKyAgIHZlY3Rvci1jZHIpKQor CisoZGVmaW5lIGxpc3QtcXVhLXZlY3Rvci1jb21wYXJhdG9yCisgIChtYWtlLXZlY3Rvci1jb21w YXJhdG9yIGRlZmF1bHQtY29tcGFyYXRvciBsaXN0PyBsZW5ndGggbGlzdC1yZWYpKQorCisoZGVm aW5lIGVxLWNvbXBhcmF0b3IgKG1ha2UtZXEtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgZXF2LWNv bXBhcmF0b3IgKG1ha2UtZXF2LWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGVxdWFsLWNvbXBhcmF0 b3IgKG1ha2UtZXF1YWwtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgc3ltYm9sLWNvbXBhcmF0b3IK KyAgKG1ha2UtY29tcGFyYXRvcgorICAgc3ltYm9sPworICAgZXE/CisgICAobGFtYmRhIChhIGIp IChzdHJpbmc8PyAoc3ltYm9sLT5zdHJpbmcgYSkgKHN5bWJvbC0+c3RyaW5nIGIpKSkKKyAgIHN5 bWJvbC1oYXNoKSkKKworCisod2l0aC10ZXN0LXByZWZpeCAiU1JGSS0xMjgiCisKKyAgKHBhc3Mt aWYtZXF1YWwgJyMoMiAzIDQpICh2ZWN0b3ItY2RyICcjKDEgMiAzIDQpKSkKKyAgKHBhc3MtaWYt ZXF1YWwgJyMoKSAodmVjdG9yLWNkciAnIygxKSkpCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNv bXBhcmF0b3JzL3ByZWRpY2F0ZXMiCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3I/IHJlYWwtY29t cGFyYXRvcikpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvcj8gPSkpKQorICAgIChwYXNz LWlmIChjb21wYXJhdG9yLW9yZGVyZWQ/IHJlYWwtY29tcGFyYXRvcikpCisgICAgKHBhc3MtaWYg KGNvbXBhcmF0b3ItaGFzaGFibGU/IHJlYWwtY29tcGFyYXRvcikpCisgICAgKHBhc3MtaWYgKG5v dCAoY29tcGFyYXRvci1vcmRlcmVkPyBkZWdlbmVyYXRlLWNvbXBhcmF0b3IpKSkKKyAgICAocGFz cy1pZiAobm90IChjb21wYXJhdG9yLWhhc2hhYmxlPyBkZWdlbmVyYXRlLWNvbXBhcmF0b3IpKSkK KyAgICApIDsgZW5kIGNvbXBhcmF0b3JzL3ByZWRpY2F0ZXMKKworICAod2l0aC10ZXN0LXByZWZp eCAiY29tcGFyYXRvcnMvY29uc3RydWN0b3JzIgorICAgIChwYXNzLWlmICg9PyBib29sZWFuLWNv bXBhcmF0b3IgI3QgI3QpKQorICAgIChwYXNzLWlmIChub3QgKD0/IGJvb2xlYW4tY29tcGFyYXRv ciAjdCAjZikpKQorICAgIChwYXNzLWlmICg8PyBib29sZWFuLWNvbXBhcmF0b3IgI2YgI3QpKQor ICAgIChwYXNzLWlmIChub3QgKDw/IGJvb2xlYW4tY29tcGFyYXRvciAjdCAjdCkpKQorICAgIChw YXNzLWlmIChub3QgKDw/IGJvb2xlYW4tY29tcGFyYXRvciAjdCAjZikpKQorCisgICAgKHBhc3Mt aWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAjZikp KQorICAgIChwYXNzLWlmIChub3QgKGNvbXBhcmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21w YXJhdG9yIDMyKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUgYm9v bC1wYWlyLWNvbXBhcmF0b3IgJygzMiAuICNmKSkpKQorICAgIChwYXNzLWlmIChub3QgKGNvbXBh cmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAzMikpKSkKKyAgICAo cGFzcy1pZiAobm90IChjb21wYXJhdG9yLXRlc3QtdHlwZSBib29sLXBhaXItY29tcGFyYXRvciAn KDMyIC4gMzQpKSkpCisgICAgKHBhc3MtaWYgKD0/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3Qg LiAjdCkgJygjdCAuICN0KSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gYm9vbC1wYWlyLWNvbXBh cmF0b3IgJygjdCAuICN0KSAnKCNmIC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gYm9v bC1wYWlyLWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0IC4gI2YpKSkpCisgICAgKHBhc3MtaWYg KDw/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI2YgLiAjdCkgJygjdCAuICN0KSkpCisgICAgKHBh c3MtaWYgKDw/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAjZikgJygjdCAuICN0KSkpCisg ICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0 IC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNvbXBhcmF0b3IgJygj dCAuICN0KSAnKCNmIC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNv bXBhcmF0b3IgJygjZiAuICN0KSAnKCNmIC4gI2YpKSkpCisKKyAgICAocGFzcy1pZiAoY29tcGFy YXRvci10ZXN0LXR5cGUgbnVtLXZlY3Rvci1jb21wYXJhdG9yICcjKDEgMiAzKSkpCisgICAgKHBh c3MtaWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygpKSkK KyAgICAocGFzcy1pZiAobm90IChjb21wYXJhdG9yLXRlc3QtdHlwZSBudW0tdmVjdG9yLWNvbXBh cmF0b3IgMSkpKQorICAgIChwYXNzLWlmIChub3QgKGNvbXBhcmF0b3ItdGVzdC10eXBlIG51bS12 ZWN0b3ItY29tcGFyYXRvciAnIyhhIDIgMykpKSkKKyAgICAocGFzcy1pZiAobm90IChjb21wYXJh dG9yLXRlc3QtdHlwZSBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSBiIDMpKSkpCisgICAgKHBh c3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUgbnVtLXZlY3Rvci1jb21wYXJhdG9yICcj KDEgMiBjKSkpKQorICAgIChwYXNzLWlmICg9PyBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAy IDMpICcjKDEgMiAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gbnVtLXZlY3Rvci1jb21wYXJh dG9yICcjKDEgMiAzKSAnIyg0IDUgNikpKSkKKyAgICAocGFzcy1pZiAobm90ICg9PyBudW0tdmVj dG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDEgNSA2KSkpKQorICAgIChwYXNzLWlmIChub3Qg KD0/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMSAyIDYpKSkpCisgICAgKHBh c3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIpICcjKDEgMiAzKSkpCisgICAg KHBhc3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMiAzIDQpKSkK KyAgICAocGFzcy1pZiAoPD8gbnVtLXZlY3Rvci1jb21wYXJhdG9yICcjKDEgMiAzKSAnIygxIDMg NCkpKQorICAgIChwYXNzLWlmICg8PyBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcj KDEgMiA0KSkpCisgICAgKHBhc3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygzIDQp ICcjKDEgMiAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gbnVtLXZlY3Rvci1jb21wYXJhdG9y ICcjKDEgMiAzKSAnIygxIDIgMykpKSkKKyAgICAocGFzcy1pZiAobm90ICg8PyBudW0tdmVjdG9y LWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDEgMikpKSkKKyAgICAocGFzcy1pZiAobm90ICg8PyBu dW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDAgMiAzKSkpKQorICAgIChwYXNzLWlm IChub3QgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMSAxIDMpKSkpCisK KyAgICAocGFzcy1pZiAobm90ICg8PyB2ZWN0b3ItcXVhLWxpc3QtY29tcGFyYXRvciAnIygzIDQp ICcjKDEgMiAzKSkpKQorICAgIChwYXNzLWlmICg8PyBsaXN0LXF1YS12ZWN0b3ItY29tcGFyYXRv ciAnKDMgNCkgJygxIDIgMykpKQorCisgICAgKGxldCAoKGJvb2wtcGFpciAoY29ucyAjdCAjZikp CisgICAgICAgICAgKGJvb2wtcGFpci0yIChjb25zICN0ICNmKSkKKyAgICAgICAgICAocmV2ZXJz ZS1ib29sLXBhaXIgKGNvbnMgI2YgI3QpKSkKKyAgICAgIChwYXNzLWlmICg9PyBlcS1jb21wYXJh dG9yICN0ICN0KSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxLWNvbXBhcmF0b3IgI2YgI3Qp KSkKKyAgICAgIChwYXNzLWlmICg9PyBlcXYtY29tcGFyYXRvciBib29sLXBhaXIgYm9vbC1wYWly KSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxdi1jb21wYXJhdG9yIGJvb2wtcGFpciBib29s LXBhaXItMikpKQorICAgICAgKHBhc3MtaWYgKD0/IGVxdWFsLWNvbXBhcmF0b3IgYm9vbC1wYWly IGJvb2wtcGFpci0yKSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxdWFsLWNvbXBhcmF0b3Ig Ym9vbC1wYWlyIHJldmVyc2UtYm9vbC1wYWlyKSkpKQorICAgICkgOyBlbmQgY29tcGFyYXRvcnMv Y29uc3RydWN0b3JzCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2hhc2giCisg ICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChib29sZWFuLWhhc2ggI2YpKSkKKyAgICAocGFz cy1pZiAobm90IChuZWdhdGl2ZT8gKGJvb2xlYW4taGFzaCAjdCkpKSkKKyAgICAocGFzcy1pZiAo ZXhhY3QtaW50ZWdlcj8gKGNoYXItaGFzaCAjXGEpKSkKKyAgICAocGFzcy1pZiAobm90IChuZWdh dGl2ZT8gKGNoYXItaGFzaCAjXGIpKSkpCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChj aGFyLWNpLWhhc2ggI1xhKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChjaGFyLWNp LWhhc2ggI1xiKSkpKQorICAgIChwYXNzLWlmICg9IChjaGFyLWNpLWhhc2ggI1xhKSAoY2hhci1j aS1oYXNoICNcQSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAoc3RyaW5nLWhhc2gg ImYiKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChzdHJpbmctaGFzaCAiZyIpKSkp CisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChzdHJpbmctY2ktaGFzaCAiZiIpKSkKKyAg ICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKHN0cmluZy1jaS1oYXNoICJnIikpKSkKKyAgICAo cGFzcy1pZiAoPSAoc3RyaW5nLWNpLWhhc2ggImYiKSAoc3RyaW5nLWNpLWhhc2ggIkYiKSkpCisg ICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChzeW1ib2wtaGFzaCAnZikpKQorICAgIChwYXNz LWlmIChub3QgKG5lZ2F0aXZlPyAoc3ltYm9sLWhhc2ggJ3QpKSkpCisgICAgKHBhc3MtaWYgKGV4 YWN0LWludGVnZXI/IChudW1iZXItaGFzaCAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRp dmU/IChudW1iZXItaGFzaCAzKSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAobnVt YmVyLWhhc2ggLTMpKSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKG51bWJlci1oYXNo IC0zKSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAobnVtYmVyLWhhc2ggMy4wKSkp CisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChudW1iZXItaGFzaCAzLjApKSkpCisgICAg KHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChudW1iZXItaGFzaCAzLjQ3KSkpCisgICAgKHBhc3Mt aWYgKG5vdCAobmVnYXRpdmU/IChudW1iZXItaGFzaCAzLjQ3KSkpKQorICAgIChwYXNzLWlmIChl eGFjdC1pbnRlZ2VyPyAoZGVmYXVsdC1oYXNoICcoKSkpKQorICAgIChwYXNzLWlmIChub3QgKG5l Z2F0aXZlPyAoZGVmYXVsdC1oYXNoICcoKSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdl cj8gKGRlZmF1bHQtaGFzaCAnKGEgImIiICNcYyAjKGRlZSkgMi43MTgpKSkpCisgICAgKHBhc3Mt aWYgKG5vdCAobmVnYXRpdmU/IChkZWZhdWx0LWhhc2ggJyhhICJiIiAjXGMgIyhkZWUpIDIuNzE4 KSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnI3U4KCkp KSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKGRlZmF1bHQtaGFzaCAnI3U4KCkpKSkp CisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChkZWZhdWx0LWhhc2ggJyN1OCg4IDYgMykp KSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKGRlZmF1bHQtaGFzaCAnI3U4KDggNiAz KSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnIygpKSkp CisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChkZWZhdWx0LWhhc2ggJyMoKSkpKSkKKyAg ICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnIyhhICJiIiAjXGMgIyhk ZWUpIDIuNzE4KSkpKQorICAgIChwYXNzLWlmIChub3QgKG5lZ2F0aXZlPyAoZGVmYXVsdC1oYXNo ICcjKGEgImIiICNcYyAjKGRlZSkgMi43MTgpKSkpKQorCisgICAgKSA7IGVuZCBjb21wYXJhdG9y cy9oYXNoCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2RlZmF1bHQiCisgICAg KHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRvciAnKCkgJyhhKSkpCisgICAgKHBhc3MtaWYg KG5vdCAoPT8gZGVmYXVsdC1jb21wYXJhdG9yICcoKSAnKGEpKSkpCisgICAgKHBhc3MtaWYgKD0/ IGRlZmF1bHQtY29tcGFyYXRvciAjdCAjdCkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gZGVmYXVs dC1jb21wYXJhdG9yICN0ICNmKSkpCisgICAgKHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRv ciAjZiAjdCkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICN0ICN0 KSkpCisgICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAjXGEgI1xhKSkKKyAgICAo cGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICNcYSAjXGIpKQorCisgICAgKHBhc3MtaWYg KGNvbXBhcmF0b3ItdGVzdC10eXBlIGRlZmF1bHQtY29tcGFyYXRvciAnKCkpKQorICAgIChwYXNz LWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgI3QpKQorICAgIChw YXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgI1x0KSkKKyAg ICAocGFzcy1pZiAoY29tcGFyYXRvci10ZXN0LXR5cGUgZGVmYXVsdC1jb21wYXJhdG9yICcoYSkp KQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3Ig J2EpKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0 b3IgKG1ha2UtYnl0ZXZlY3RvciAxMCkpKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3Qt dHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgMTApKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRl c3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgMTAuMCkpCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0 b3ItdGVzdC10eXBlIGRlZmF1bHQtY29tcGFyYXRvciAiMTAuMCIpKQorICAgIChwYXNzLWlmIChj b21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoMTApKSkKKworICAgIChw YXNzLWlmICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0IC4gI3QpKSkKKyAg ICAocGFzcy1pZiAobm90ICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCNmIC4g I3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gZGVmYXVsdC1jb21wYXJhdG9yICcoI3QgLiAj dCkgJygjdCAuICNmKSkpKQorICAgIChwYXNzLWlmICg8PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygj ZiAuICN0KSAnKCN0IC4gI3QpKSkKKyAgICAocGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9y ICcoI3QgLiAjZikgJygjdCAuICN0KSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1j b21wYXJhdG9yICcoI3QgLiAjdCkgJygjdCAuICN0KSkpKQorICAgIChwYXNzLWlmIChub3QgKDw/ IGRlZmF1bHQtY29tcGFyYXRvciAnKCN0IC4gI3QpICcoI2YgLiAjdCkpKSkKKyAgICAocGFzcy1p ZiAobm90ICg8PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI2YgI3QpICcjKCNmICNmKSkpKQorCisg ICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAnIygjdCAjdCkgJyMoI3QgI3QpKSkK KyAgICAocGFzcy1pZiAobm90ICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI3QgI3QpICcjKCNm ICN0KSkpKQorICAgIChwYXNzLWlmIChub3QgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAnIygjdCAj dCkgJyMoI3QgI2YpKSkpCisgICAgKHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRvciAnIygj ZiAjdCkgJyMoI3QgI3QpKSkKKyAgICAocGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICcj KCN0ICNmKSAnIygjdCAjdCkpKQorICAgIChwYXNzLWlmIChub3QgKDw/IGRlZmF1bHQtY29tcGFy YXRvciAnIygjdCAjdCkgJyMoI3QgI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVs dC1jb21wYXJhdG9yICcjKCN0ICN0KSAnIygjZiAjdCkpKSkKKyAgICAocGFzcy1pZiAobm90ICg8 PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI2YgI3QpICcjKCNmICNmKSkpKQorCisgICAgKHBhc3Mt aWYgKD0gKGNvbXBhcmF0b3ItaGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgI3QpIChib29sZWFuLWhh c2ggI3QpKSkKKyAgICAocGFzcy1pZiAoPSAoY29tcGFyYXRvci1oYXNoIGRlZmF1bHQtY29tcGFy YXRvciAjXHQpIChjaGFyLWhhc2ggI1x0KSkpCisgICAgKHBhc3MtaWYgKD0gKGNvbXBhcmF0b3It aGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgInQiKSAoc3RyaW5nLWhhc2ggInQiKSkpCisgICAgKHBh c3MtaWYgKD0gKGNvbXBhcmF0b3ItaGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgJ3QpIChzeW1ib2wt aGFzaCAndCkpKQorICAgIChwYXNzLWlmICg9IChjb21wYXJhdG9yLWhhc2ggZGVmYXVsdC1jb21w YXJhdG9yIDEwKSAobnVtYmVyLWhhc2ggMTApKSkKKyAgICAocGFzcy1pZiAoPSAoY29tcGFyYXRv ci1oYXNoIGRlZmF1bHQtY29tcGFyYXRvciAxMC4wKSAobnVtYmVyLWhhc2ggMTAuMCkpKQorCisg ICAgKGNvbXBhcmF0b3ItcmVnaXN0ZXItZGVmYXVsdCEKKyAgICAgKG1ha2UtY29tcGFyYXRvciBw cm9jZWR1cmU/IChsYW1iZGEgKGEgYikgI3QpIChsYW1iZGEgKGEgYikgI2YpIChsYW1iZGEgKG9i aikgMjAwKSkpCisgICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAobGFtYmRhICgp ICN0KSAobGFtYmRhICgpICNmKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1jb21w YXJhdG9yIChsYW1iZGEgKCkgI3QpIChsYW1iZGEgKCkgI2YpKSkpCisgICAgKHBhc3MtaWYtZXF1 YWwgMjAwIChjb21wYXJhdG9yLWhhc2ggZGVmYXVsdC1jb21wYXJhdG9yIChsYW1iZGEgKCkgI3Qp KSkKKworICAgICkgOyBlbmQgY29tcGFyYXRvcnMvZGVmYXVsdAorCisgIDs7IFNSRkkgMTI4IGRv ZXMgbm90IGFjdHVhbGx5IHJlcXVpcmUgYSBjb21wYXJhdG9yJ3MgZm91ciBwcm9jZWR1cmVzCisg IDs7IHRvIGJlIGVxPyB0byB0aGUgcHJvY2VkdXJlcyBvcmlnaW5hbGx5IHBhc3NlZCB0byBtYWtl LWNvbXBhcmF0b3IuCisgIDs7IEZvciBpbnRlcm9wZXJhYmlsaXR5L2ludGVyY2hhbmdlYWJpbGl0 eSBiZXR3ZWVuIHRoZSBjb21wYXJhdG9ycworICA7OyBvZiBTUkZJIDExNCBhbmQgU1JGSSAxMjgs IHNvbWUgb2YgdGhlIHByb2NlZHVyZXMgcGFzc2VkIHRvCisgIDs7IG1ha2UtY29tcGFyYXRvciBt YXkgbmVlZCB0byBiZSB3cmFwcGVkIGluc2lkZSBhbm90aGVyIGxhbWJkYQorICA7OyBleHByZXNz aW9uIGJlZm9yZSB0aGV5J3JlIHJldHVybmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGFjY2Vzc29y LgorICA7OworICA7OyBTbyB0aGlzIG5leHQgZ3JvdXAgb2YgdGVzdHMgaXMgaW5jb3JyZWN0LCBo ZW5jZSBjb21tZW50ZWQgb3V0CisgIDs7IGFuZCByZXBsYWNlZCBieSBhIHNsaWdodGx5IGxlc3Mg bmFpdmUgZ3JvdXAgb2YgdGVzdHMuCisKKyAgIzsKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBh cmF0b3JzL2FjY2Vzc29ycyIKKyAgKGRlZmluZSB0dHAgKGxhbWJkYSAoeCkgI3QpKQorICAoZGVm aW5lIGVxcCAobGFtYmRhICh4IHkpICN0KSkKKyAgKGRlZmluZSBvcnAgKGxhbWJkYSAoeCB5KSAj dCkpCisgIChkZWZpbmUgaGYgKGxhbWJkYSAoeCkgMCkpCisgIChkZWZpbmUgY29tcCAobWFrZS1j b21wYXJhdG9yIHR0cCBlcXAgb3JwIGhmKSkKKyAgKHBhc3MtaWYtZXF1YWwgdHRwIChjb21wYXJh dG9yLXR5cGUtdGVzdC1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIGVxcCAoY29t cGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIG9ycCAo Y29tcGFyYXRvci1vcmRlcmluZy1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIGhm IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcCkpCisgICkgOyBlbmQgY29tcGFyYXRvcnMv YWNjZXNzb3JzCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2FjY2Vzc29ycyIK KyAgICAobGV0KiAoKHgxIDApCisgICAgICAgICAgICh4MiAwKQorICAgICAgICAgICAoeDMgMCkK KyAgICAgICAgICAgKHg0IDApCisgICAgICAgICAgICh0dHAgKGxhbWJkYSAoeCkgKHNldCEgeDEg MTExKSAjdCkpCisgICAgICAgICAgIChlcXAgKGxhbWJkYSAoeCB5KSAoc2V0ISB4MiAyMjIpICN0 KSkKKyAgICAgICAgICAgKG9ycCAobGFtYmRhICh4IHkpIChzZXQhIHgzIDMzMykgI3QpKQorICAg ICAgICAgICAoaGYgKGxhbWJkYSAoeCkgKHNldCEgeDQgNDQ0KSAwKSkKKyAgICAgICAgICAgKGNv bXAgKG1ha2UtY29tcGFyYXRvciB0dHAgZXFwIG9ycCBoZikpKQorICAgICAgKHBhc3MtaWYtZXF1 YWwgI3QgKGFuZCAoKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBjb21wKSB4MSkgICAo PSB4MSAxMTEpKSkKKyAgICAgIChwYXNzLWlmLWVxdWFsICN0IChhbmQgKChjb21wYXJhdG9yLWVx dWFsaXR5LXByZWRpY2F0ZSBjb21wKSB4MSB4MikgKD0geDIgMjIyKSkpCisgICAgICAocGFzcy1p Zi1lcXVhbCAjdCAoYW5kICgoY29tcGFyYXRvci1vcmRlcmluZy1wcmVkaWNhdGUgY29tcCkgeDEg eDMpICg9IHgzIDMzMykpKQorICAgICAgKHBhc3MtaWYtZXF1YWwgI3QgKGFuZCAoemVybz8gKChj b21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcCkgeDEpKSAoPSB4NCA0NDQpKSkpCisgICAgKSA7 IGVuZCBjb21wYXJhdG9ycy9hY2Nlc3NvcnMKKworICAod2l0aC10ZXN0LXByZWZpeCAiY29tcGFy YXRvcnMvaW52b2tlcnMiCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIHJlYWwt Y29tcGFyYXRvciAzKSkKKyAgICAocGFzcy1pZiAoY29tcGFyYXRvci10ZXN0LXR5cGUgcmVhbC1j b21wYXJhdG9yIDMuMCkpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUg cmVhbC1jb21wYXJhdG9yICIzLjAiKSkpCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3ItY2hlY2st dHlwZSBib29sZWFuLWNvbXBhcmF0b3IgI3QpKQorICAgIChwYXNzLWlmLWV4Y2VwdGlvbiAiY2hl Y2stdHlwZSIKKyAgICAgICAgJyhtaXNjLWVycm9yIC4gIl5Db21wYXJhdG9yIHR5cGUgY2hlY2sg ZmFpbGVkIikKKyAgICAgIChjb21wYXJhdG9yLWNoZWNrLXR5cGUgYm9vbGVhbi1jb21wYXJhdG9y ICd0KSkKKyAgICApIDsgZW5kIGNvbXBhcmF0b3JzL2ludm9rZXJzCisKKyAgKHdpdGgtdGVzdC1w cmVmaXggImNvbXBhcmF0b3JzL2NvbXBhcmlzb24iCisgICAgKHBhc3MtaWYgKD0/IHJlYWwtY29t cGFyYXRvciAyIDIuMCAyKSkKKyAgICAocGFzcy1pZiAoPD8gcmVhbC1jb21wYXJhdG9yIDIgMy4w IDQpKQorICAgIChwYXNzLWlmICg+PyByZWFsLWNvbXBhcmF0b3IgNC4wIDMuMCAyKSkKKyAgICAo cGFzcy1pZiAoPD0/IHJlYWwtY29tcGFyYXRvciAyLjAgMiAzLjApKQorICAgIChwYXNzLWlmICg+ PT8gcmVhbC1jb21wYXJhdG9yIDMgMy4wIDIpKQorICAgIChwYXNzLWlmIChub3QgKD0/IHJlYWwt Y29tcGFyYXRvciAxIDIgMykpKQorICAgIChwYXNzLWlmIChub3QgKDw/IHJlYWwtY29tcGFyYXRv ciAzIDEgMikpKQorICAgIChwYXNzLWlmIChub3QgKD4/IHJlYWwtY29tcGFyYXRvciAxIDIgMykp KQorICAgIChwYXNzLWlmIChub3QgKDw9PyByZWFsLWNvbXBhcmF0b3IgNCAzIDMpKSkKKyAgICAo cGFzcy1pZiAobm90ICg+PT8gcmVhbC1jb21wYXJhdG9yIDMgNCA0LjApKSkKKworICAgICkgOyBl bmQgY29tcGFyYXRvcnMvY29tcGFyaXNvbgorCisgICh3aXRoLXRlc3QtcHJlZml4ICJjb21wYXJh dG9ycy9zeW50YXgiCisgICAgKHBhc3MtaWYtZXF1YWwgJ2xlc3MgKGNvbXBhcmF0b3ItaWY8PT4g cmVhbC1jb21wYXJhdG9yIDEgMiAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAgIChwYXNzLWlm LWVxdWFsICdlcXVhbCAoY29tcGFyYXRvci1pZjw9PiByZWFsLWNvbXBhcmF0b3IgMSAxICdsZXNz ICdlcXVhbCAnZ3JlYXRlcikpCisgICAgKHBhc3MtaWYtZXF1YWwgJ2dyZWF0ZXIgKGNvbXBhcmF0 b3ItaWY8PT4gcmVhbC1jb21wYXJhdG9yIDIgMSAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAg IChwYXNzLWlmLWVxdWFsICdsZXNzIChjb21wYXJhdG9yLWlmPD0+ICIxIiAiMiIgJ2xlc3MgJ2Vx dWFsICdncmVhdGVyKSkKKyAgICAocGFzcy1pZi1lcXVhbCAnZXF1YWwgKGNvbXBhcmF0b3ItaWY8 PT4gIjEiICIxIiAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAgIChwYXNzLWlmLWVxdWFsICdn cmVhdGVyIChjb21wYXJhdG9yLWlmPD0+ICIyIiAiMSIgJ2xlc3MgJ2VxdWFsICdncmVhdGVyKSkK KworICAgICkgOyBlbmQgY29tcGFyYXRvcnMvc3ludGF4CisKKyAgKHdpdGgtdGVzdC1wcmVmaXgg ImNvbXBhcmF0b3JzL2JvdW5kLXNhbHQiCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/ICho YXNoLWJvdW5kKSkpCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChoYXNoLXNhbHQpKSkK KyAgICAocGFzcy1pZiAoPCAoaGFzaC1zYWx0KSAoaGFzaC1ib3VuZCkpKQorICAgICM7ICAocGFz cy1pZi1lcXVhbCAoaGFzaC1zYWx0KSAoZmFrZS1zYWx0LWhhc2ggI3QpKSAgOyBubyBzdWNoIHRo aW5nIGFzIGZha2Utc2FsdC1oYXNoCisgICAgKSA7IGVuZCBjb21wYXJhdG9ycy9ib3VuZC1zYWx0 CisgICkKLS0gCjIuMTkuMQoK --00000000000027132d057f5ecbea--