From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Christopher Genovese Newsgroups: gmane.emacs.devel Subject: Ibuffer improvements: filtering, documentation, bug fix, tests Date: Thu, 17 Nov 2016 10:53:58 -0500 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=94eb2c088ee2d4956b05418133e0 X-Trace: blaine.gmane.org 1479398148 9252 195.159.176.226 (17 Nov 2016 15:55:48 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 17 Nov 2016 15:55:48 +0000 (UTC) To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 17 16:55:41 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c7P2K-00012y-Bk for ged-emacs-devel@m.gmane.org; Thu, 17 Nov 2016 16:55:40 +0100 Original-Received: from localhost ([::1]:59874 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c7P2N-0001ps-C5 for ged-emacs-devel@m.gmane.org; Thu, 17 Nov 2016 10:55:43 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56147) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c7P1D-0001k5-BA for emacs-devel@gnu.org; Thu, 17 Nov 2016 10:54:38 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c7P16-0004bH-7x for emacs-devel@gnu.org; Thu, 17 Nov 2016 10:54:31 -0500 Original-Received: from mail-it0-x235.google.com ([2607:f8b0:4001:c0b::235]:36430) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c7P15-0004aN-NW for emacs-devel@gnu.org; Thu, 17 Nov 2016 10:54:24 -0500 Original-Received: by mail-it0-x235.google.com with SMTP id l8so145690540iti.1 for ; Thu, 17 Nov 2016 07:54:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to; bh=5KyORmjyhLgMMHbBxrd8oGkzQXrfLMl5GOxF/23fDLg=; b=AAhLGUFx971UDRBTECz2MeYqj/t2Q8aejqRTFg/indFsY6DdD3ZfPgMbH4ResoV7oP xX6/6cHK/sNNLpBSS1B5NbapYTvgQHC3OY8m4pgMXsveepnoyKTUIOuI0KBAhpUmr0S6 ZJU4KX+7vGK0yzt/6X92MJo8qSx30nNVFfnm79oKuVhkN328pZYxyJMgAoduhbvINO9O 3LPvPhVB8fdEOmi3yhvRPVKoe22jeUXbKwNcowZjDgi8ApJv7NwJvQ52FzmWOXyNzcj3 qnpSdee6ZeBg6svPb/8o8hEkjCpFTgq3PTykDVnpeybwlO7AwcrK4zgam2h3qoCOQlwe khKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=5KyORmjyhLgMMHbBxrd8oGkzQXrfLMl5GOxF/23fDLg=; b=m2sR+GGTPSSyY6w2YTJ51wdSUj6mXZ2jO0rJuzt68GYBsANjQrPjNuiXuUdVc+Kjwe oGSNsopWcfjdyh3LTqsMsyyTyGI1T1qKXwq0SuDRcbya4Q6ADEN2MgYlq7uUvV2XdpXk weTBk2rNThKSM78A51Qx9Pu/Gsvp9/6J7WTgscUQCyQx1fCSoNCCsPaanjVSOJjdqmiy tUNc30jZUeIGkdivFmuzrLBeMQgWXdkipA/E0CuwKVgqpDSQ0aTnzJ+xQd3ja3pBAo8v gDViIRL/HVmFb3rJ/Ayogmf+ERJiTFgEB8qsJf5g//MdPMvQJ6K2KFP6A/fxt90q+GPA YrzA== X-Gm-Message-State: ABUngvfttquWuHaKjDyDnRUxHvYbk3wGrNYr7F+uNQRZGuDwmxfliACvB97JSthq/uqFApY5qMT/0bWs2//tOA== X-Received: by 10.36.130.66 with SMTP id t63mr13790988itd.90.1479398059693; Thu, 17 Nov 2016 07:54:19 -0800 (PST) Original-Received: by 10.107.12.35 with HTTP; Thu, 17 Nov 2016 07:53:58 -0800 (PST) X-Google-Sender-Auth: D3lXJuXEFB7gX8W_r4TmoDb-OUw X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c0b::235 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:209453 Archived-At: --94eb2c088ee2d4956b05418133e0 Content-Type: multipart/alternative; boundary=94eb2c088ee2d4956705418133de --94eb2c088ee2d4956705418133de Content-Type: text/plain; charset=UTF-8 I'd like to submit some mild changes in Ibuffer (ibuffer.el, ibuf-ext.el, and ibuffer-tests.el) which are available in this branch https://github.com/genovese/emacs/tree/ibuffer-and-filters which is up to date relative to the HEAD as of this morning. All these changes have been tested successfully in a new and a pre-existing build of emacs. (And my copyright paperwork has already been processed.) A brief description is below, with more detail in the committ message. I've also attached a patch file in case anyone prefers that. Brief Description: As a heavy Ibuffer user, I make steady use of filters and filter groups, with some quite specific rules. While the filter lists offer an implicit logical 'and', it would be much more convenient if one could use an 'and' *within* these rules. (Although DeMorgan's laws will work with 'or' and 'not' and saved filters can help to simulate this, neither is particularly convenient, readable, nor aestheticcally pleasing.) The proposed changes, summarize below, were motivated by adding this simple and negligble-cost feature to the filtering. The proposed changes are as follows: + Compound filters Add support for 'and' and normalize handling of 'not' to allow the original "spliced" format as well as a more lispy "sexp" format. Original documentation for the structure of compound filters was almost completely lacking. The updated code documents compound filter structure and clarifies the language used throughout, providing a single authoritative source for documentation on each concept. Fixed bug in 'saved' filter handling. There was an inconsistency in how the data was accessed at different points that would cause failure. (I do wonder if anyone ever uses saved filters based on this.) There are two choices in how to fix this; I made one but am open to both. + New pre-defined filters and an interactive filtering command Several new filters are defined by default to handle some very common filtering tasks (e.g., matching filename components since the 'filename' filter matches on the absolute pathname). A new command is offered to select a filter by completion on the descriptions, which is very easy to use without remembering key bindings. + Documentation fixes throughout ibuf-ext.el + Many new tests and fixed bug in original test. All the tests pass in emacs -Q in both new and old builds of emacs 25 (on Mac OS X). I look forward to any questions or comments. Thanks for your consideration. -- Chris --94eb2c088ee2d4956705418133de Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I'd like to submit some mild changes in Ibuffer (ibuff= er.el, ibuf-ext.el,
and ibuffer-tests.el) which are available in this br= anch

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 https://github.com/genovese/emacs/tr= ee/ibuffer-and-filters

which is up to date relative to the HEAD = as of this morning. All these
changes have been tested successfully in a= new and a pre-existing build
of emacs. (And my copyright paperwork has = already been processed.)
A brief description is below, with more detail = in the committ message.
I've also attached a patch file in case anyo= ne prefers that.

Brief Description: As a heavy Ibuffer user, I make = steady use of
filters and filter groups, with some quite specific rules.= While
the filter lists offer an implicit logical 'and', it woul= d be
much more convenient if one could use an 'and' *within* the= se rules.
(Although DeMorgan's laws will work with 'or' and = 'not' and
saved filters can help to simulate this, neither is pa= rticularly
convenient, readable, nor aestheticcally pleasing.) The propo= sed
changes, summarize below, were motivated by adding this simple
an= d negligble-cost feature to the filtering.

The proposed changes are = as follows:

=C2=A0 + Compound filters

=C2=A0=C2=A0=C2=A0 Add = support for 'and' and normalize handling of 'not' to allow = the
=C2=A0=C2=A0=C2=A0 original "spliced" format as well as a = more lispy "sexp" format.

=C2=A0=C2=A0=C2=A0 Original docu= mentation for the structure of compound filters was
=C2=A0=C2=A0=C2=A0 a= lmost completely lacking. The updated code documents compound
=C2=A0=C2= =A0=C2=A0 filter structure and clarifies the language used throughout,
= =C2=A0=C2=A0=C2=A0 providing a single authoritative source for documentatio= n on each
=C2=A0=C2=A0=C2=A0 concept.

=C2=A0=C2=A0=C2=A0 Fixed bu= g in 'saved' filter handling. There was an inconsistency in
=C2= =A0=C2=A0=C2=A0 how the data was accessed at different points that would ca= use
=C2=A0=C2=A0=C2=A0 failure. (I do wonder if anyone ever uses saved f= ilters based on
=C2=A0=C2=A0=C2=A0 this.) There are two choices in how t= o fix this; I made one but am
=C2=A0=C2=A0=C2=A0 open to both.

= =C2=A0 + New pre-defined filters and an interactive filtering command
=C2=A0=C2=A0=C2=A0 Several new filters are defined by default to handle s= ome very
=C2=A0=C2=A0=C2=A0 common filtering tasks (e.g., matching filen= ame components since
=C2=A0=C2=A0=C2=A0 the 'filename' filter ma= tches on the absolute pathname). A new
=C2=A0=C2=A0=C2=A0 command is off= ered to select a filter by completion on the
=C2=A0=C2=A0=C2=A0 descript= ions, which is very easy to use without remembering key
=C2=A0=C2=A0=C2= =A0 bindings.

=C2=A0 + Documentation fixes throughout ibuf-ext.el
=C2=A0 + Many new tests and fixed bug in original test.

=C2=A0= =C2=A0=C2=A0 All the tests pass in emacs -Q in both new and
=C2=A0=C2=A0= =C2=A0 old builds of emacs 25 (on Mac OS X).


I look forward to a= ny questions or comments. Thanks for your
consideration.

-- Chris=

--94eb2c088ee2d4956705418133de-- --94eb2c088ee2d4956b05418133e0 Content-Type: text/x-diff; charset=US-ASCII; name="ibuffer-and-filters.patch" Content-Disposition: attachment; filename="ibuffer-and-filters.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ivmjcxg60 RnJvbSBhMzMxZThjMDgyMGIxYzFlNWM0NWM1MWUyNmQ4OWNkOWZmYWQ2YjlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hyaXN0b3BoZXIgUi4gR2Vub3Zlc2UiIDxnZW5vdmVzZUBj bXUuZWR1PgpEYXRlOiBUaHUsIDE3IE5vdiAyMDE2IDAwOjQ0OjI3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSF0gSWJ1ZmZlciBpbXByb3ZlbWVudHM6IGZpbHRlcnMsIGRvY3VtZW50YXRpb24sIGJ1ZyBm aXhlcywKIHRlc3RzCgorIFByb3ZpZGVzIGNvbXBvdW5kIGZpbHRlciB0byBzdXBwb3J0IGV4cGxp Y2l0IGxvZ2ljYWwgJ2FuZCcKCiAgV2hpbGUgY3VycmVudCBhbmQgc2F2ZWQgaWJ1ZmZlciBmaWx0 ZXIgbGlzdHMgb2ZmZXIgYW4gaW1wbGljaXQKICBsb2dpY2FsICdhbmQnLCBpdCBjYW4gYmUgdXNl ZnVsIGZvciBkZWZpbmluZyBjb21wbGV4IGZpbHRlcnMKICBhbmQgZmlsdGVyIGdyb3VwcyB0byBi ZSBhYmxlIHRvIHVzZSAnYW5kJyBleHBsaWNpdGx5IHdpdGhpbiBhCiAgZmlsdGVyLiBBbHRob3Vn aCB0aGlzIGNvdWxkIGJlIGFjaGlldmVkIHdpdGggRGVNb3JnYW4ncyBsYXdzCiAgdXNpbmcgJ29y JyBhbmQgJ25vdCcsIG9yIHNhdmVkIGZpbHRlcnMsIGJvdGggb3B0aW9ucyBhcmUKICB1bm5lY2Vz c2FyaWx5IG9uZXJvdXMuIFByb3ZpZGluZyBhbiAnYW5kJyBjb252ZW5pZW50bHkKICBpbmNyZWFz ZXMgZmlsdGVyaW5nIHBvd2VyIGF0IG5lZ2xpZ2libGUgY29zdC4KCisgQWNjZXB0cyAnbm90JyBj b21wb3VuZCBpbiAobm90IC4gcXVhbGlmaWVyKSwgKG5vdCBxdWFsaWZpZXIpIGZvcm1zCgogIFRo ZSBvcmlnaW5hbCAnbm90JyBjb21wb3VuZCBmaWx0ZXIgZXhwZWN0cyB0aGUgZm9ybQogIChub3Qg LiBxdWFsaWZpZXIpLCBlLmcuLCAobm90IHNpemUtZ3QgLiAxMDApLiBUaGlzIGFkZHMKICBzdXBw b3J0LCBhdCBuZWdsaWdpYmxlIGNvc3QsIGZvciB0aGUgYWx0ZXJuYXRpdmUsIG1vcmUgbGlzcHks CiAgZm9ybSBsaWtlIChub3QgKHNpemUtZ3QgLiAxMDApKSBvciAobm90IChvciAuLi4pKS4gVGhl CiAgb3JpZ2luYWwgbG9va3MgbmljZSB3aXRoIG51bGxhcnkgZmlsdGVycyBsaWtlIChub3QgbW9k aWZpZWQpLAogIGFuZCB0aGUgbmV3IGZvcm0gaXMgcGxlYXNhbnRseSBjb25zaXN0ZW50IHdpdGgg c2V4cCBzdHJ1Y3R1cmUKICBvZiAnYW5kJyBhbmQgJ29yJy4KCisgU2lnbmlmaWNhbnQgZG9jdW1l bnRhdGlvbiBpbXByb3ZlbWVudHMgZm9yIGZpbHRlcmluZwoKICBUaGUgc3RydWN0dXJlIG9mIGNv bXBvdW5kIGZpbHRlcnMgaGFkIG5vdCBiZWVuIGRvY3VtZW50ZWQuIFRoZQogIG5ldyBkb2N1bWVu dGF0aW9uIGdpdmVzIGFuIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciBlYWNoCiAgY29uY2VwdCBh bmQgbWFrZXMgdGhlIGxhbmd1YWdlIHVzZWQgdGhyb3VnaG91dCBtb3JlIGNsZWFyIGFuZAogIGNv bnNpc3RlbnQgKGUuZy4sIGRpc3Rpbmd1aXNoaW5nIHF1YWxpZmllciBkYXRhIGZyb20gZ2VuZXJh bAogIGZpbHRlciBzcGVjaWZpY2F0aW9ucykuCgorIERlZmluZXMgc2V2ZXJhbCBjb21tb25seSBu ZWVkZWQgZmlsdGVycwoKICBUaGUgZXhpc3RpbmcgJ2ZpbGVuYW1lJyBtYXRjaGVzIGFnYWluc3Qg dGhlIGZ1bGwgcGF0aG5hbWUgb2YKICB0aGUgYnVmZmVyJ3MgZmlsZS4gVGhpcyBjYW4gYmUgaW5j b252ZW5pZW50IGZvciBwcmVjaXNlbHkKICBmaWx0ZXJpbmcgZmlsZXMsIHNvIHNldmVyYWwgbmV3 IGZpbHRlcnMgYXJlIHByZS1kZWZpbmVkIHRvCiAgbWF0Y2ggcGFydGljdWxhciBwYXRobmFtZSBj b21wb25lbnRzLiBJbiBhZGRpdGlvbiwgY29udmVuaWVudAogIG51bGxhcnkgZmlsdGVycyBmb3Ig c3RhcnJlZCBhbmQgbW9kaWZpZWQgYnVmZmVycyBhcmUgcHJvdmlkZWQuCgorIEZpeGVzIGJ1ZyBp biBgaWJ1ZmZlci1zYXZlLWZpbHRlcnMnCgogIFRoZSBzdHJ1Y3R1cmUgb2YgYGlidWZmZXItc2F2 ZWQtZmlsdGVycycgYW5kCiAgYGlidWZmZXItc2F2ZS1maWx0ZXInIHdlcmUgaW5jb25zaXN0ZW50 LCB3aXRoIHRoZSBmb3JtZXIKICBoYXZpbmcgYW4gZXh0cmEgbGlzdCBsZXZlbCBpbiBlYWNoIGFs aXN0IGVsZW1lbnQuIFRoaXMgdmVyc2lvbgogIGZpeGVzIHRoZSBpbmNvbnNpc3RlbmN5IGJ5IHNp bXBsaWZ5aW5nIGBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnCiAgdG8gcmVtb3ZlIHRoZSBleHRyYSBs aXN0IGxldmVsIGFuZCBhdXRvbWF0aWNhbGx5IGNoZWNrcyB0bwogIHJlcGFpciBleGlzdGluZyBm b3JtYXRzLiAoQWx0ZXJuYXRpdmVseSwgdGhlIGFjY2VzcyBjb2RlIGNvdWxkCiAgYmUgc3BlY2lh bC1jYXNlZCBsZWF2aW5nIHRoZSB2YXJpYWJsZSBmb3JtYXQgaW50YWN0LiBUaGlzCiAgYWx0ZXJu YXRpdmUgd291bGQgYXJndWFibHkgYmUgbG93ZXIgaW1wYWN0LCBidXQgdGhlIGNoYW5nZQogIG1h ZGUgc2VlbWVkIGFzdGhldGljYWxseSBuaWNlci4pCgorIERlZmluZXMgY29tcGxldGlvbi1iYXNl ZCBpbnRlcmFjdGl2ZSBmaWx0ZXJpbmcgY29tbWFuZAoKICBOZXcgY29tbWFuZCB0byBzZWxlY3Qg YSBmaWx0ZXIgYnkgY29tcGxldGlvbiBvbiBmaWx0ZXIKICBkZXNjcmlwdGlvbnMuIEVhc3kgdG8g dXNlIGFuZCBib3VuZCB0byAvLVRBQiBtbmVtb25pY2FsbHkuCgorIEZpeGVzIHNtYWxsIGJ1ZyBp biBvcmlnaW5hbCB0ZXN0CgogIFRoZSBvbmUgb3JpZ2luYWwgdGVzdCBmYWlsZWQgdW5leHBlY3Rl ZGx5IGlmIGlidWYtZXh0IHdlcmUKICBsb2FkZWQuCgorIEFkZHMgYSBzdWJzdGFudGlhbCBudW1i ZXIgb2YgYWRkaXRpb25hbCB0ZXN0cyB3aXRoIGZlYXR1cmUgaWJ1Zi1leHQKCiAgTWFueSBuZXcg dGVzdHMgaW4gZXJ0LCBsZWF2aW5nIHRoZSBlbnZpcm9ubWVudCB1bnRvdWNoZWQsCiAgY292ZXIg bW9zdCBhc3BlY3RzIG9mIGZpbHRlcmluZywgb2xkIGFuZCBuZXcuCgorIE1ha2VzIGEgZmV3IG1u ZW1vbmljIGNoYW5nZXMgdG8gZGVmYXVsdCBmaWx0ZXJpbmcgcGFydCBvZiBrZXltYXAKClRoZXNl IGNoYW5ncyBhcmUgbW9zdGx5IHF1aXRlIHNtYWxsIGJ1dCBkaXN0cmlidXRlZCBhY3Jvc3MKc2V2 ZXJhbCBmdW5jdGlvbnMgYW5kIGRvY3N0cmluZ3MuIFNlZSB0aGUgY2hhbmdlIGxvZyBiZWxvdy4K CkNoYW5nZSBMb2c6IDIwMTYtMTEtMTYJQ2hyaXN0b3BoZXIgUi4gR2Vub3Zlc2UJIDxnZW5vdmVz ZUBjbXUuZWR1PgoKKiBsaXNwL2lidWYtZXh0LmVsOiBhZGRlZCBwYXJhZ3JhcGggdG8gZmlsZSBj b21tZW50YXJ5CiogbGlzcC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKTogY2xh cmlmaWVkIGRvY3VtZW50YXRpb24sCiAgc3BlY2lmaWVkIGN1c3RvbWl6YXRpb24gdHlwZSwgYW5k IHNpbXBsaWZpZWQgZGF0YSBmb3JtYXQgdG8gYmUKICBjb25zaXN0ZW50IHdpdGggYGlidWZmZXIt c2F2ZS1maWx0ZXJzJwoqIGxpc3AvaWJ1Zi1leHQuZWwgKGlidWZmZXItdXBkYXRlLXNhdmVkLWZp bHRlcnMtZm9ybWF0KTogbmV3IGZ1bmN0aW9uCiAgdGhhdCB0cmFuc2Zvcm1zIGBpYnVmZmVyLXNh dmVkLWZpbHRlcnMnLXN0eWxlIGFsaXN0IGZvcm1hdAoqIGxpc3AvaWJ1Zi1leHQuZWwgKGlidWZm ZXItcmVwYWlyLXNhdmVkLWZpbHRlcnMpOiBuZXcgZnVuY3Rpb24gdGhhdAogIHRyYW5zZm9ybXMg YGlidWZmZXItc2F2ZWQtZmlsdGVycycgdG8gbmV3IGZvcm1hdCBpZiBuZWVkZWQKKiBsaXNwL2li dWYtZXh0LmVsIChpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKTogbmV3IGRvY3VtZW50YXRp b24KICBpcyB0aGUgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgZm9yIGZpbHRlciBzcGVjaWZpY2F0aW9u IGZvcm1hdAoqIGxpc3AvaWJ1Zi1leHQuZWwgKGlidWZmZXItZmlsdGVyLWdyb3Vwcyk6IG5ldyBk b2N1bWVudGF0aW9uCiAgY2xhcmlmaWVzIGZpbHRlciBncm91cCBzdHJ1Y3R1cmUgYW5kIHJvbGUK KiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVyLXVuYXJ5LW9wZXJhbmQpOiBuZXcgZnVuY3Rpb24g dHJhbnNwYXJlbnRseQogIGhhbmRsZXMgbm90IGZvcm1hdHMgZm9yIGNvbXBvdW5kIGZpbHRlcnMK KiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wKTogbmV3IGRv Y3N0cmluZwogIGFuZCBub3cgaGFuZGxlcyAnbm90JyBmdWxseQoqIGxpc3AvaWJ1Zi1leHQuZWwg KGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAtMSk6IGhhbmRsZXMgJ2FuZCcKICBjb21wb3Vu ZCBmaWx0ZXJzIGFuZCBjb25zaXN0ZW50IGhhbmRsaW5nIG9mICdzYXZlZCcgZmlsdGVyIGRhdGEK KiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpOiBoYW5kbGVzICdh bmQnIGFzIHdlbGwsCiAgbWFkZSBoYW5kbGluZyBvZiAnc2F2ZWQnIGZpbHRlciBkYXRhIGFuZCAn bm90JyBjb25zaXN0ZW50IHdpdGgKICBvdGhlciB1c2VzCiogbGlzcC9pYnVmLWV4dC5lbCAoaWJ1 ZmZlci1hbmQtZmlsdGVyKTogbmV3IGZ1bmN0aW9uIGFuYWxvZ291cyB0bwogIGBpYnVmZmVyLW9y LWZpbHRlcicgZm9yIGNvbXBsZXRlbmVzcwoqIGxpc3AvaWJ1Zi1leHQuZWwgKGlidWZmZXItbWF5 YmUtc2F2ZS1zdHVmZik6IGhhbmRsZSAnc2F2ZWQnIGZpbHRlcgogIGRhdGEgY29uc2lzdGVudGx5 IHdpdGggb3RoZXIgdXNlcwoqIGxpc3AvaWJ1Zi1leHQuZWwgKGlidWZmZXItZm9ybWF0LXF1YWxp Zmllcik6IGhhbmRsZSAnYW5kJyBmaWx0ZXJzCiogbGlzcC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci1m aWx0ZXItYnktKik6IG5ldyBwcmUtZGVmaW5lZCBmaWx0ZXJzCiAgZmlsZW5hbWUtYmFzZSwgZmls ZW5hbWUtZXh0ZW5zaW9uLCBmaWxlbmFtZS1kaXJlY3RvcnksCiAgZmlsZW5hbWUtcm9vdCwgc3Rh cnJlZC1uYW1lLCBhbmQgbW9kaWZpZWQKKiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVyLWZpbHRl ci1jaG9zZW4tYnktY29tcGxldGlvbik6IG5ldwogIGludGVyYWN0aXZlIGNvbW1hbmQgZm9yIGVh c2lseSBjaG9vc2luZyBhIGZpbHRlcgoqIGxpc3AvaWJ1Zi1leHQuZWw6IG1hbnkgc21hbGwgaW1w cm92ZW1lbnRzIHRocm91Z2hvdXQgdG8gZG9jc3RyaW5ncywKICB2YXJpYWJsZSBuYW1pbmcsIGFu ZCBzcGFjaW5nCiogbGlzcC9pYnVmZmVyLmVsOiBrZXltYXAgYW5kIG1lbnUgYWRkaXRpb25zL2No YW5nZXMgZm9yIGZpbHRlcmluZwoqIHRlc3QvbGlzcC9pYnVmZmVyLXRlc3RzLmVsIChpYnVmZmVy LWF1dG9sb2FkKTogYWRkZWQgYXBwcm9wcmlhdGUKICBza2lwIHNwZWNpZmljYXRpb24KKiB0ZXN0 L2xpc3AvaWJ1ZmZlci10ZXN0cy5lbCAoaWJ1ZmZlci0qKTogbWFueSBhZGRpdGlvbmFsIHRlc3Rz CiAgdGhhdCBhcmUgc2tpcHBlZCB1bmxlc3MgaWJ1Zi1leHQgaXMgbG9hZGVkLgotLS0KIGxpc3Av aWJ1Zi1leHQuZWwgICAgICAgICAgIHwgNDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLQogbGlzcC9pYnVmZmVyLmVsICAgICAgICAgICAgfCAgNjcgKysrKystCiB0ZXN0 L2xpc3AvaWJ1ZmZlci10ZXN0cy5lbCB8IDU2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTAyMSBpbnNlcnRpb25zKCspLCAx MDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9pYnVmLWV4dC5lbCBiL2xpc3AvaWJ1 Zi1leHQuZWwKaW5kZXggYjNkMTQ1Mi4uYTliMzM3YiAxMDA2NDQKLS0tIGEvbGlzcC9pYnVmLWV4 dC5lbAorKysgYi9saXNwL2lidWYtZXh0LmVsCkBAIC0yOCw2ICsyOCwxMyBAQAogOzsgVGhlc2Ug ZnVuY3Rpb25zIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCB3aGVuIGNhbGxlZCwgYnV0 IHlvdQogOzsgY2FuIGV4cGxpY2l0bHkgKHJlcXVpcmUgJ2lidWYtZXh0KSBpbiB5b3VyIH4vLmVt YWNzIHRvIGhhdmUgdGhlbQogOzsgcHJlbG9hZGVkLgorOzsKKzs7IEZvciBkZXRhaWxzIG9uIHRo ZSBzdHJ1Y3R1cmUgb2YgaWJ1ZmZlciBmaWx0ZXJzIGFuZCBmaWx0ZXIgZ3JvdXBzLAorOzsgc2Vl IHRoZSBkb2N1bWVudGF0aW9uIGZvciB2YXJpYWJsZXMgYGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMnLAorOzsgYGlidWZmZXItZmlsdGVyLWdyb3VwcycsIGFuZCBgaWJ1ZmZlci1zYXZlZC1m aWx0ZXJzJyBpbiB0aGF0IG9yZGVyLgorOzsgVGhlIHZhcmlhYmxlIGBpYnVmZmVyLWZpbHRlcmlu Zy1hbGlzdCcgY29udGFpbnMgbmFtZXMgYW5kCis7OyBkZXNjcmlwdGlvbnMgb2YgdGhlIGN1cnJl bnRseSBkZWZpbmVkIGZpbHRlcnM7IGFsc28gc2VlIHRoZSBtYWNybworOzsgYGRlZmluZS1pYnVm ZmVyLWZpbHRlcicuCiAKIDs7OyBDb2RlOgogCkBAIC0zNyw3ICs0NCw5IEBACiAgIChyZXF1aXJl ICdpYnVmLW1hY3MpCiAgIChyZXF1aXJlICdjbC1saWIpKQogCisKIDs7OyBVdGlsaXR5IGZ1bmN0 aW9ucworCiAoZGVmdW4gaWJ1ZmZlci1kZWxldGUtYWxpc3QgKGtleSBhbGlzdCkKICAgIkRlbGV0 ZSBhbGwgZW50cmllcyBpbiBBTElTVCB0aGF0IGhhdmUgYSBrZXkgZXF1YWwgdG8gS0VZLiIKICAg KGxldCAoZW50cnkpCkBAIC0xMTksMzUgKzEyOCwxNzcgQEAgQnVmZmVycyB3aG9zZSBtYWpvciBt b2RlIGlzIGluIHRoaXMgbGlzdCwgYXJlIG5vdCBzZWFyY2hlZC4iCiAKIChkZWZ2YXIgaWJ1ZmZl ci1hdXRvLWJ1ZmZlcnMtY2hhbmdlZCBuaWwpCiAKLShkZWZjdXN0b20gaWJ1ZmZlci1zYXZlZC1m aWx0ZXJzICcoKCJnbnVzIgotCQkJCSAgICAoKG9yIChtb2RlIC4gbWVzc2FnZS1tb2RlKQotCQkJ CQkgKG1vZGUgLiBtYWlsLW1vZGUpCi0JCQkJCSAobW9kZSAuIGdudXMtZ3JvdXAtbW9kZSkKLQkJ CQkJIChtb2RlIC4gZ251cy1zdW1tYXJ5LW1vZGUpCi0JCQkJCSAobW9kZSAuIGdudXMtYXJ0aWNs ZS1tb2RlKSkpKQotCQkJCSAgICgicHJvZ3JhbW1pbmciCi0JCQkJICAgICgob3IgKG1vZGUgLiBl bWFjcy1saXNwLW1vZGUpCi0JCQkJCSAobW9kZSAuIGNwZXJsLW1vZGUpCi0JCQkJCSAobW9kZSAu IGMtbW9kZSkKLQkJCQkJIChtb2RlIC4gamF2YS1tb2RlKQotCQkJCQkgKG1vZGUgLiBpZGwtbW9k ZSkKLQkJCQkJIChtb2RlIC4gbGlzcC1tb2RlKSkpKSkKLQotICAiQW4gYWxpc3Qgb2YgZmlsdGVy IHF1YWxpZmllcnMgdG8gc3dpdGNoIGJldHdlZW4uCi0KLVRoaXMgdmFyaWFibGUgc2hvdWxkIGxv b2sgbGlrZSAoKFwiU1RSSU5HXCIgUVVBTElGSUVSUykKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFwiU1RSSU5HXCIgUVVBTElGSUVSUykgLi4uKSwgd2hlcmUKLVFVQUxJRklFUlMg aXMgYSBsaXN0IG9mIHRoZSBzYW1lIGZvcm0gYXMKLWBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzJy4KLVNlZSBhbHNvIHRoZSB2YXJpYWJsZXMgYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMnLAotYGlidWZmZXItZmlsdGVyaW5nLWFsaXN0JywgYW5kIHRoZSBmdW5jdGlvbnMKLWBpYnVm ZmVyLXN3aXRjaC10by1zYXZlZC1maWx0ZXJzJywgYGlidWZmZXItc2F2ZS1maWx0ZXJzJy4iCi0g IDp0eXBlICcocmVwZWF0IHNleHApCisoZGVmdW4gaWJ1ZmZlci11cGRhdGUtc2F2ZWQtZmlsdGVy cy1mb3JtYXQgKGZpbHRlcnMpCisgICJUcmFuc2Zvcm1zIGFsaXN0IGZyb20gb2xkIHRvIG5ldyBg aWJ1ZmZlci1zYXZlZC1maWx0ZXJzJyBmb3JtYXQuCisKK1NwZWNpZmljYWxseSwgY29udmVydHMg b2xkLWZvcm1hdCBhbGlzdCB3aXRoIHZhbHVlcyBvZiB0aGUKK2Zvcm0gKFNUUklORyAoRklMVEVS LVNQRUNTLi4uKSkgdG8gYWxpc3Qgd2l0aCB2YWx1ZXMgb2YgdGhlCitmb3JtIChTVFJJTkcgRklM VEVSLVNQRUNTLi4uKSwgd2hlcmUgZWFjaCBmaWx0ZXIgc3BlYyBzaG91bGQgYmUgYQorY29ucyBj ZWxsIHdpdGggYSBzeW1ib2wgaW4gdGhlIGNhci4gQW55IGVsZW1lbnRzIGluIHRoZSBsYXR0ZXIK K2Zvcm0gYXJlIGtlcHQgYXMgaXMuCisKK1JldHVybnMgKE9MRC1GT1JNQVQtREVURUNURUQ/IC4g VVBEQVRFRC1TQVZFRC1GSUxURVJTLUxJU1QpLiIKKyAgKHdoZW4gZmlsdGVycworICAgIChsZXQq ICgob2xkLWZvcm1hdC1kZXRlY3RlZCBuaWwpCisgICAgICAgICAgIChmaXgtZmlsdGVyIChsYW1i ZGEgKGZpbHRlci1zcGVjKQorICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3ltYm9scCAo Y2FyIChjYWRyIGZpbHRlci1zcGVjKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp bHRlci1zcGVjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBvbGQtZm9ybWF0LWRl dGVjdGVkIHQpIDsgc2lkZS1lZmZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25z IChjYXIgZmlsdGVyLXNwZWMpIChjYWRyIGZpbHRlci1zcGVjKSkpKSkKKyAgICAgICAgICAgKGZp eGVkIChtYXBjYXIgZml4LWZpbHRlciBmaWx0ZXJzKSkpCisgICAgICAoY29ucyBvbGQtZm9ybWF0 LWRldGVjdGVkIGZpeGVkKSkpKQorCisoZGVmY3VzdG9tIGlidWZmZXItc2F2ZWQtZmlsdGVycyAn KCgicHJvZ3JhbW1pbmciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Ig KGRlcml2ZWQtbW9kZSAuIHByb2ctbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobW9kZSAgICAgICAgIC4gZXNzLW1vZGUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1vZGUgICAgICAgICAuIGNvbXBpbGF0aW9uLW1vZGUpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXh0IGRvY3VtZW50IgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZSAgICAgIC4gdGV4 dC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoc3RhcnJl ZC1uYW1lKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiVGVYIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChkZXJpdmVkLW1vZGUgLiB0ZXgt bW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZSAgICAg ICAgIC4gbGF0ZXgtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobW9kZSAgICAgICAgIC4gY29udGV4dC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtb2RlICAgICAgICAgLiBhbXMtdGV4LW1vZGUpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUgICAgICAgICAuIGJpYnRleC1tb2Rl KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgid2ViIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChkZXJpdmVkLW1vZGUgLiBzZ21sLW1vZGUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZSAu IGNzcy1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2Rl ICAgICAgICAgLiBqYXZhc2NyaXB0LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1vZGUgICAgICAgICAuIGpzMi1tb2RlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtb2RlICAgICAgICAgLiBzY3NzLW1vZGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZSAuIGhhbWwtbW9k ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZSAgICAgICAg IC4gc2Fzcy1tb2RlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZ251 cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAobW9kZSAuIG1lc3Nh Z2UtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZSAu IG1haWwtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9k ZSAuIGdudXMtZ3JvdXAtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobW9kZSAuIGdudXMtc3VtbWFyeS1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtb2RlIC4gZ251cy1hcnRpY2xlLW1vZGUpKSkpCisKKyAgIkFuIGFs aXN0IG1hcHBpbmcgc2F2ZWQgZmlsdGVyIG5hbWVzIHRvIGZpbHRlciBzcGVjaWZpY2F0aW9ucy4K KworRWFjaCBlbGVtZW50IHNob3VsZCBsb29rIGxpa2UgKFwiTkFNRVwiIC4gRklMVEVSLUxJU1Qp LCB3aGVyZQorRklMVEVSLUxJU1QgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyB0aGUgdmFyaWFi bGUKK2BpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzJywgd2hpY2ggc2VlLiBUaGUgZmlsdGVy cyBkZWZpbmVkCitoZXJlIGFyZSBqb2luZWQgd2l0aCBhbiBpbXBsaWNpdCBsb2dpY2FsIGBhbmQn IGFuZCBhc3NvY2lhdGVkCit3aXRoIE5BTUUuIFRoZSBjb21iaW5lZCBzcGVjaWZpY2F0aW9uIGNh biBiZSB1c2VkIGJ5IG5hbWUgaW4KK290aGVyIGZpbHRlciBzcGVjaWZpY2F0aW9ucyB2aWEgdGhl IGBzYXZlZCcgcXVhbGlmaWVyIChhZ2Fpbiwgc2VlCitgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlm aWVycycpLiBUaGV5IGNhbiBhbHNvIGJlIHN3aXRjaGVkIHRvIGJ5CituYW1lIChzZWUgdGhlIGZ1 bmN0aW9ucyBgaWJ1ZmZlci1zd2l0Y2gtdG8tc2F2ZWQtZmlsdGVycycgYW5kCitgaWJ1ZmZlci1z YXZlLWZpbHRlcnMnKS4gVGhlIHZhcmlhYmxlIGBpYnVmZmVyLXNhdmUtd2l0aC1jdXN0b20nCith ZmZlY3RzIGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzIHNhdmVkIGZvciBmdXR1cmUgc2Vzc2lvbnMu IFRoaXMKK3ZhcmlhYmxlIGNhbiBiZSBzZXQgZGlyZWN0bHkgZnJvbSBsaXNwIGNvZGUuIgorICA6 dHlwZSAnKGFsaXN0IDprZXktdHlwZSAoc3RyaW5nIDp0YWcgIkZpbHRlciBuYW1lIikKKyAgICAg ICAgICAgICAgICA6dmFsdWUtdHlwZSAocmVwZWF0IDp0YWcgIkZpbHRlciBzcGVjaWZpY2F0aW9u IiBzZXhwKSkKKyAgOnNldCAobGFtYmRhIChzeW1ib2wgdmFsdWUpCisgICAgICAgICA7OyBKdXN0 IHNldC1kZWZhdWx0IGJ1dCB1cGRhdGUgbGVnYWN5IG9sZC1zdHlsZSBmb3JtYXQKKyAgICAgICAg IChzZXQtZGVmYXVsdCBzeW1ib2wgKGNkciAoaWJ1ZmZlci11cGRhdGUtc2F2ZWQtZmlsdGVycy1m b3JtYXQgdmFsdWUpKSkpCiAgIDpncm91cCAnaWJ1ZmZlcikKIAorKGRlZnZhciBpYnVmZmVyLW9s ZC1zYXZlZC1maWx0ZXJzLXdhcm5pbmcKKyAgKGNvbmNhdCAiRGVwcmVjYXRlZCBmb3JtYXQgZGV0 ZWN0ZWQgZm9yIHZhcmlhYmxlIGBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnLgorCitUaGUgZm9ybWF0 IGhhcyBiZWVuIHJlcGFpcmVkIGFuZCB0aGUgdmFyaWFibGUgbW9kaWZpZWQgYWNjb3JkaW5nbHku IAorWW91IGNhbiBzYXZlIHRoZSBjdXJyZW50IHZhbHVlIHRocm91Z2ggdGhlIGN1c3RvbWl6ZSBz eXN0ZW0gYnkKK2VpdGhlciBjbGlja2luZyBvciBoaXR0aW5nIHJldHVybiAiCisgICAgICAgICAg ICAobWFrZS10ZXh0LWJ1dHRvbgorICAgICAgICAgICAgICJoZXJlIiBuaWwKKyAgICAgICAgICAg ICAnZmFjZSAnKDp3ZWlnaHQgYm9sZCA6aW5oZXJpdCBidXR0b24pCisgICAgICAgICAgICAgJ21v dXNlLWZhY2UgJyg6d2VpZ2h0IG5vcm1hbCA6YmFja2dyb3VuZCAiZ3JheTUwIiA6aW5oZXJpdCBi dXR0b24pCisgICAgICAgICAgICAgJ2ZvbGxvdy1saW5rIHQKKyAgICAgICAgICAgICAnaGVscC1l Y2hvICJDbGljayBvciBSRVQ6IHNhdmUgbmV3IHZhbHVlIGluIGN1c3RvbWl6ZSIKKyAgICAgICAg ICAgICAnYWN0aW9uIChsYW1iZGEgKGIpCisgICAgICAgICAgICAgICAgICAgICAgIChpZiAobm90 IChmYm91bmRwICdjdXN0b21pemUtc2F2ZS12YXJpYWJsZSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWVzc2FnZSAiQ3VzdG9taXplIG5vdCBhdmFpbGFibGU7IHZhbHVlIG5vdCBzYXZl ZCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbWl6ZS1zYXZlLXZhcmlhYmxlICdp YnVmZmVyLXNhdmVkLWZpbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKQorICAgICAgICAgICAgICAgICAg ICAgICAgIChtZXNzYWdlICJTYXZlZCB1cGRhdGVkIGlidWZmZXItc2F2ZWQtZmlsdGVycy4iKSkp KQorICAgICAgICAgICAgIi4gU2VlIGJlbG93IGZvcgorYW4gZXhwbGFuYXRpb24gYW5kIGFsdGVy bmF0aXZlIHdheXMgdG8gc2F2ZSB0aGUgcmVwYWlyZWQgdmFsdWUuCisKK0V4cGxhbmF0aW9uOiBG b3IgdGhlIGxpc3QgdmFyaWFibGUgYGlidWZmZXItc2F2ZWQtZmlsdGVycycsICAgICAgICAgICAg ICAgCitlbGVtZW50cyBvZiB0aGUgZm9ybSAoU1RSSU5HIChGSUxURVItU1BFQ1MuLi4pKSBhcmUg ZGVwcmVjYXRlZAorYW5kIHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGZvcm0gKFNUUklORyBGSUxU RVItU1BFQ1MuLi4pLCB3aGVyZQorZWFjaCBmaWx0ZXIgc3BlYyBpcyBhIGNvbnMgY2VsbCB3aXRo IGEgc3ltYm9sIGluIHRoZSBjYXIuIFNlZQorYGlidWZmZXItc2F2ZWQtZmlsdGVycycgZm9yIGRl dGFpbHMuIFRoZSByZXBhaXJlZCB2YWx1ZSBmaXhlcyAKK3RoaXMgZm9ybWF0IHdpdGhvdXQgY2hh bmdpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHNhdmVkIGZpbHRlcnMuIAorCitBbHRlcm5hdGl2ZSB3 YXlzIHRvIHNhdmUgdGhlIHJlcGFpcmVkIHZhbHVlOgorCisgIDEuIERvIE0teCBjdXN0b21pemUt dmFyaWFibGUgYW5kIGVudGVyaW5nIGBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnIAorICAgICB3aGVu IHByb21wdGVkLiAKKworICAyLiBTZXQgdGhlIHVwZGF0ZWQgdmFsdWUgbWFudWFsbHkgYnkgY29w eWluZyB0aGUgCisgICAgIGZvbGxvd2luZyBlbWFjcy1saXNwIGZvcm0gdG8geW91ciBlbWFjcyBp bml0IGZpbGUuCisKKyVzCisiKSkKKworKGRlZnVuIGlidWZmZXItcmVwYWlyLXNhdmVkLWZpbHRl cnMgKCkKKyAgIlVwZGF0ZXMgYGlidWZmZXItc2F2ZWQtZmlsdGVycycgdG8gaXRzIG5ldy1zdHls ZSBmb3JtYXQsIGlmIG5lZWRlZC4KKworSWYgdGhpcyBsaXN0IGhhcyBhbnkgZWxlbWVudHMgb2Yg dGhlIG9sZC1zdHlsZSBmb3JtYXQsIGEKK2RlcHJlY2F0aW9uIHdhcm5pbmcgaXMgcmFpc2VkLCB3 aXRoIGEgYnV0dG9uIGFsbG93aW5nIHBlcnNpc3RlbnQKK3VwZGF0ZS4gQW55IHVwZGF0ZWQgZmls dGVycyByZXRhaW4gdGhlaXIgbWVhbmluZyBpbiB0aGUgbmV3Citmb3JtYXQuIFNlZSBgaWJ1ZmZl ci11cGRhdGUtc2F2ZWQtZmlsdGVycy1mb3JtYXQnIGFuZAorYGlidWZmZXItc2F2ZWQtZmlsdGVy cycgZm9yIGRldGFpbHMgb2YgdGhlIG9sZCBhbmQgbmV3IGZvcm1hdHMuIgorICAod2hlbiAoYW5k IChib3VuZHAgJ2lidWZmZXItc2F2ZWQtZmlsdGVycykgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKQor ICAgIChsZXQgKChmaXhlZCAoaWJ1ZmZlci11cGRhdGUtc2F2ZWQtZmlsdGVycy1mb3JtYXQgaWJ1 ZmZlci1zYXZlZC1maWx0ZXJzKSkpCisgICAgICAocHJvZzEKKyAgICAgICAgICAoc2V0cSBpYnVm ZmVyLXNhdmVkLWZpbHRlcnMgKGNkciBmaXhlZCkpCisgICAgICAgICh3aGVuLWxldCAob2xkLWZv cm1hdC1kZXRlY3RlZD8gKGNhciBmaXhlZCkpCisgICAgICAgICAgKGxldCAoKHdhcm5pbmctc2Vy aWVzIHQpCisgICAgICAgICAgICAgICAgKHVwZGF0ZWQtZm9ybQorICAgICAgICAgICAgICAgICAo d2l0aC1vdXRwdXQtdG8tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgKHBwIGAoc2V0cSBpYnVm ZmVyLXNhdmVkLWZpbHRlcnMgJyxpYnVmZmVyLXNhdmVkLWZpbHRlcnMpKSkpKQorICAgICAgICAg ICAgKGRpc3BsYXktd2FybmluZworICAgICAgICAgICAgICdpYnVmZmVyCisgICAgICAgICAgICAg KGZvcm1hdCBpYnVmZmVyLW9sZC1zYXZlZC1maWx0ZXJzLXdhcm5pbmcgdXBkYXRlZC1mb3JtKSkp KSkpKSkKKwogKGRlZnZhciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbAotICAiQSBs aXN0IGxpa2UgKFNZTUJPTCAuIFFVQUxJRklFUikgd2hpY2ggZmlsdGVycyB0aGUgY3VycmVudCBi dWZmZXIgbGlzdC4KLVNlZSBhbHNvIGBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCcuIikKKyAgIkEg bGlzdCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXJzIGN1cnJlbnRseSBhY3Rpbmcgb24gdGhlIGJ1ZmZl ciBsaXN0LgorCitJZiB0aGlzIGxpc3QgaXMgbmlsLCB0aGVuIG5vIGZpbHRlcnMgYXJlIGN1cnJl bnRseSBpbgorZWZmZWN0LiBPdGhlcndpc2UsIGVhY2ggZWxlbWVudCBvZiB0aGlzIGxpc3Qgc3Bl Y2lmaWVzIGEgc2luZ2xlCitmaWx0ZXIsIGFuZCBhbGwgb2YgdGhlIHNwZWNpZmllZCBmaWx0ZXJz IGluIHRoZSBsaXN0IGFyZSBhcHBsaWVkCitzdWNjZXNzaXZlbHkgdG8gdGhlIGJ1ZmZlciBsaXN0 LgorCitFYWNoIGZpbHRlciBzcGVjaWZpY2F0aW9uIGNhbiBiZSBvZiB0d28gdHlwZXM6IHNpbXBs ZSBvciBjb21wb3VuZC4KKworQSBzaW1wbGUgZmlsdGVyIHNwZWNpZmljYXRpb24gaGFzIHRoZSBm b3JtIChTWU1CT0wgLiBRVUFMSUZJRVIpLAord2hlcmUgU1lNQk9MIGlzIGEga2V5IGluIHRoZSBh bGlzdCBgaWJ1ZmZlci1maWx0ZXJpbmctYWxpc3QnIHRoYXQKK2RldGVybWluZXMgdGhlIGZpbHRl ciBmdW5jdGlvbiB0byB1c2UgYW5kIFFVQUxJRklFUiBpcyB0aGUgZGF0YQorcGFzc2VkIHRvIHRo YXQgZnVuY3Rpb24gKGFsb25nIHdpdGggdGhlIGJ1ZmZlciBiZWluZyBjb25zaWRlcmVkKS4KKwor QSBjb21wb3VuZCBmaWx0ZXIgc3BlY2lmaWNhdGlvbiBjYW4gaGF2ZSBvbmUgb2YgZm91ciBmb3Jt czoKKworLS0gKG5vdCBGSUxURVItU1BFQykKKworICAgUmVwcmVzZW50cyB0aGUgbG9naWNhbCBj b21wbGVtZW50IG9mIEZJTFRFUi1TUEVDLCB3aGljaAorICAgaXMgYW55IHNpbmdsZSBmaWx0ZXIg c3BlY2lmaWNhdGlvbiwgc2ltcGxlIG9yIGNvbXBvdW5kLgorICAgVGhlIGZvcm0gKG5vdCAuIEZJ TFRFUi1TUEVDKSBpcyBhbHNvIGFjY2VwdGVkIGhlcmUuCisKKy0tIChhbmQgRklMVEVSLVNQRUNT Li4uKQorCisgICBSZXByZXNlbnRzIHRoZSBsb2dpY2FsLWFuZCBvZiB0aGUgZmlsdGVycyBkZWZp bmVkIGJ5IG9uZSBvcgorICAgbW9yZSBmaWx0ZXIgc3BlY2lmaWNhdGlvbnMgRklMVEVSLVNQRUNT Li4uLCB3aGVyZSBlYWNoCisgICBzcGVjaWZpY2F0aW9uIGNhbiBiZSBzaW1wbGUgb3IgY29tcG91 bmQuICBOb3RlIHRoYXQgYW5kIGlzCisgICBpbXBsaWNpdGx5IGFwcGxpZWQgdG8gdGhlIGZpbHRl cnMgaW4gdGhlIHRvcC1sZXZlbCBsaXN0LgorCistLSAob3IgRklMVEVSLVNQRUNTLi4uKQorCisg ICBSZXByZXNlbnRzIHRoZSBsb2dpY2FsLW9yIG9mIHRoZSBmaWx0ZXJzIGRlZmluZWQgYnkgb25l IG9yCisgICBtb3JlIGZpbHRlciBzcGVjaWZpY2F0aW9ucyBGSUxURVItU1BFQ1MuLi4sIHdoZXJl IGVhY2gKKyAgIHNwZWNpZmljYXRpb24gY2FuIGJlIHNpbXBsZSBvciBjb21wb3VuZC4KKworLS0g KHNhdmVkIC4gXCJOQU1FXCIpCisKKyAgIFJlcHJlc2VudHMgdGhlIGZpbHRlciBzYXZlZCB1bmRl ciB0aGUgc3RyaW5nIE5BTUUKKyAgIGluIHRoZSBhbGlzdCBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJz Jy4gSXQgaXMgYW4KKyAgIGVycm9yIHRvIG5hbWUgYSBmaWx0ZXIgdGhhdCBoYXMgbm90IGJlZW4g c2F2ZWQuCisKK1RoaXMgdmFyaWFibGUgaXMgbG9jYWwgdG8gZWFjaCBpYnVmZmVyIGJ1ZmZlci4i KQogCiA7OyBUaGlzIGlzIG5vdyBmcm9iYmVkIGJ5IGBkZWZpbmUtaWJ1ZmZlci1maWx0ZXInLgog KGRlZnZhciBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCBuaWwKQEAgLTE3OSwxMCArMzMwLDE4IEBA IHRvIHRoaXMgdmFyaWFibGUuIgogKGRlZnZhciBpYnVmZmVyLWNvbXBpbGVkLWZpbHRlci1mb3Jt YXRzIG5pbCkKIAogKGRlZnZhciBpYnVmZmVyLWZpbHRlci1ncm91cHMgbmlsCi0gICJBIGxpc3Qg bGlrZSAoKFwiTkFNRVwiICgoU1lNQk9MIC4gUVVBTElGSUVSKSAuLi4pIC4uLikgd2hpY2ggZ3Jv dXBzIGJ1ZmZlcnMuCi1UaGUgU1lNQk9MIHNob3VsZCBiZSBvbmUgZnJvbSBgaWJ1ZmZlci1maWx0 ZXJpbmctYWxpc3QnLgotVGhlIFFVQUxJRklFUiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgUVVBTElG SUVSIGluCi1gaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycuIikKKyAgIkFuIGFsaXN0IGdp dmluZyB0aGlzIGJ1ZmZlcidzIGFjdGl2ZSBmaWx0ZXIgZ3JvdXBzLCBvciBuaWwgaWYgbm9uZS4K KworVGhpcyBhbGlzdCBtYXBzIGZpbHRlciBncm91cCBsYWJlbHMgdG8gZmlsdGVyIHNwZWNpZmlj YXRpb24KK2xpc3RzLiAgRWFjaCBlbGVtZW50IGhhcyB0aGUgZm9ybSAoXCJMQUJFTFwiIEZJTFRF Ui1TUEVDUy4uLiksCit3aGVyZSBGSUxURVItU1BFQ1MuLi4gcmVwcmVzZW50cyBvbmUgb3IgbW9y ZSBmaWx0ZXIKK3NwZWNpZmljYXRpb25zIG9mIHRoZSBzYW1lIGZvcm0gYXMgYWxsb3dlZCBhcyBl bGVtZW50cyBvZgorYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLgorCitFYWNoIGZpbHRl ciBncm91cCBpcyBkaXNwbGF5ZWQgYXMgYSBzZXBhcmF0ZSBzZWN0aW9uIGluIHRoZQoraWJ1ZmZl ciBsaXN0LCBoZWFkZWQgYnkgTEFCRUwgYW5kIGRpc3BsYXlpbmcgb25seSB0aGUgYnVmZmVycwor dGhhdCBwYXNzIHRocm91Z2ggYWxsIHRoZSBmaWx0ZXJzIGFzc29jaWF0ZWQgd2l0aCBOQU1FIGlu IHRoaXMKK2xpc3QuIikKIAogKGRlZmN1c3RvbSBpYnVmZmVyLXNob3ctZW1wdHktZmlsdGVyLWdy b3VwcyB0CiAgICJJZiBub24tbmlsLCB0aGVuIHNob3cgdGhlIG5hbWVzIG9mIGZpbHRlciBncm91 cHMgd2hpY2ggYXJlIGVtcHR5LiIKQEAgLTE5MiwyMCArMzUxLDIxIEBAIFRoZSBRVUFMSUZJRVIg c2hvdWxkIGJlIHRoZSBzYW1lIGFzIFFVQUxJRklFUiBpbgogKGRlZmN1c3RvbSBpYnVmZmVyLXNh dmVkLWZpbHRlci1ncm91cHMgbmlsCiAgICJBbiBhbGlzdCBvZiBmaWx0ZXJpbmcgZ3JvdXBzIHRv IHN3aXRjaCBiZXR3ZWVuLgogCi1UaGlzIHZhcmlhYmxlIHNob3VsZCBsb29rIGxpa2UgKChcIlNU UklOR1wiIFFVQUxJRklFUlMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlNU UklOR1wiIFFVQUxJRklFUlMpIC4uLiksIHdoZXJlCi1RVUFMSUZJRVJTIGlzIGEgbGlzdCBvZiB0 aGUgc2FtZSBmb3JtIGFzCi1gaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycuCitFYWNoIGVs ZW1lbnQgaXMgb2YgdGhlIGZvcm0gKFwiTkFNRVwiIC4gRklMVEVSLUdST1VQLUxJU1QpLAord2hl cmUgTkFNRSBpcyBhIHVuaXF1ZSBidXQgYXJiaXRyYXJ5IG5hbWUgYW5kIEZJTFRFUi1HUk9VUC1M SVNUCitpcyBhIGxpc3Qgb2YgZmlsdGVyIGdyb3VwcyB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBh cworYWxsb3dlZCBmb3IgYGlidWZmZXItZmlsdGVyLWdyb3VwcycuCiAKLVNlZSBhbHNvIHRoZSB2 YXJpYWJsZXMgYGlidWZmZXItZmlsdGVyLWdyb3VwcycsCi1gaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycycsIGBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCcsIGFuZCB0aGUKLWZ1bmN0aW9ucyBg aWJ1ZmZlci1zd2l0Y2gtdG8tc2F2ZWQtZmlsdGVyLWdyb3VwcycsCi1gaWJ1ZmZlci1zYXZlLWZp bHRlci1ncm91cHMnLiIKK1NlZSBhbHNvIHRoZSBmdW5jdGlvbnMgYGlidWZmZXItc2F2ZS1maWx0 ZXItZ3JvdXBzJyBhbmQKK2BpYnVmZmVyLXN3aXRjaC10by1zYXZlZC1maWx0ZXItZ3JvdXBzJyBm b3Igc2F2aW5nIGFuZCBzd2l0Y2hpbmcKK2JldHdlZW4gc2V0cyBvZiBmaWx0ZXIgZ3JvdXBzLCBh bmQgdGhlIHZhcmlhYmxlCitgaWJ1ZmZlci1zYXZlLXdpdGgtY3VzdG9tJyB0aGF0IGFmZmVjdHMg aG93IHRoaXMgaW5mb3JtYXRpb24gaXMKK3NhdmVkLiIKICAgOnR5cGUgJyhyZXBlYXQgc2V4cCkK ICAgOmdyb3VwICdpYnVmZmVyKQogCiAoZGVmdmFyIGlidWZmZXItaGlkZGVuLWZpbHRlci1ncm91 cHMgbmlsCi0gICJBIGxpc3Qgb2YgZmlsdGVyaW5nIGdyb3VwcyB3aGljaCBhcmUgY3VycmVudGx5 IGhpZGRlbi4iKQorICAiVGhlIGxpc3Qgb2YgZmlsdGVyIGdyb3VwcyB0aGF0IGFyZSBjdXJyZW50 bHkgaGlkZGVuLiIpCiAKIChkZWZ2YXIgaWJ1ZmZlci1maWx0ZXItZ3JvdXAta2lsbC1yaW5nIG5p bCkKIApAQCAtNTEyLDE4ICs2NzIsMzggQEAgVG8gZXZhbHVhdGUgYSBmb3JtIHdpdGhvdXQgdmll d2luZyB0aGUgYnVmZmVyLCBzZWUgYGlidWZmZXItZG8tZXZhbCcuIgogCiA7OzsjIyNhdXRvbG9h ZAogKGRlZnVuIGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIChidWYgZmlsdGVycykKKyAg IkRvZXMgdGhlIGJ1ZmZlciBCVUYgc3VjY2Vzc2Z1bGx5IHBhc3MgYWxsIG9mIHRoZSBnaXZlbiBG SUxURVJTPworCitCVUYgaXMgYSBsaXNwIGJ1ZmZlciBvYmplY3QsIGFuZCBGSUxURVJTIGlzIGEg bGlzdCBvZiBmaWx0ZXIKK3NwZWNpZmljYXRpb25zIHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGFz CitgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycuIgogICAobm90CiAgICAobWVtcSBuaWwg OzsgYSBmaWx0ZXIgd2lsbCByZXR1cm4gbmlsIGlmIGl0IGZhaWxlZAotCSAobWFwY2FyCi0JICA7 OyBmaWx0ZXIgc2hvdWxkIGJlIGxpa2UgKFRZUEUgLiBRVUFMSUZJRVIpLCBvcgotCSAgOzsgKG9y IChUWVBFIC4gUVVBTElGSUVSKSAoVFlQRSAuIFFVQUxJRklFUikgLi4uKQotCSAgIycobGFtYmRh IChxdWFsKQotCSAgICAgIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wIGJ1ZiBxdWFsKSkK LQkgIGZpbHRlcnMpKSkpCisJIChtYXBjYXIgIycobGFtYmRhIChmaWx0ZXIpCisgICAgICAgICAg ICAgICAgICAgICAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcCBidWYgZmlsdGVyKSkKKyAg ICAgICAgICAgICAgICAgZmlsdGVycykpKSkKKworKGRlZnVuIGlidWZmZXItdW5hcnktb3BlcmFu ZCAoZmlsdGVyKQorICAiRXh0cmFjdHMgb3BlcmFuZCBmcm9tIGEgdW5hcnkgY29tcG91bmQgRklM VEVSIHNwZWNpZmljYXRpb24uCisKK0ZJTFRFUiBzaG91bGQgYmUgYSBjb25zIGNlbGwgb2YgZWl0 aGVyIGZvcm0gKGYgLiBkKSBvciAoZiBkKSwKK3doZXJlIG9wZXJhbmQgZCBpcyBpdHNlbGYgYSBj b25zIGNlbGwsIG9yIG5pbC4gUmV0dXJucyBkLiIKKyAgKGxldCogKCh0YWlsIChjZHIgZmlsdGVy KSkKKyAgICAgICAgIChtYXliZS1xIChjYXItc2FmZSB0YWlsKSkpCisgICAgKGlmIChjb25zcCBt YXliZS1xKSBtYXliZS1xIHRhaWwpKSkKIAogKGRlZnVuIGlidWZmZXItaW5jbHVkZWQtaW4tZmls dGVyLXAgKGJ1ZiBmaWx0ZXIpCisgICJEb2VzIHRoZSBidWZmZXIgQlVGIHN1Y2Nlc3NmdWxseSBw YXNzIEZJTFRFUj8KKworQlVGIGlzIGEgbGlzcCBidWZmZXIgb2JqZWN0LCBhbmQgRklMVEVSIGlz IGEgZmlsdGVyCitzcGVjaWZpY2F0aW9uLCB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBhbiBl bGVtZW50IG9mIHRoZSBsaXN0CitgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycuIgogICAo aWYgKGVxIChjYXIgZmlsdGVyKSAnbm90KQotICAgICAgKG5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1p bi1maWx0ZXItcC0xIGJ1ZiAoY2RyIGZpbHRlcikpKQorICAgICAgKGxldCAoKGlubmVyIChpYnVm ZmVyLXVuYXJ5LW9wZXJhbmQgZmlsdGVyKSkpCisgICAgICAgIDs7IEFUVE46IEFsbG93cyAobm90 IChub3QgLi4uKSkgZXRjLiBJcyBmaXhpbmcgdGhpcyB3b3J0aHdoaWxlPworICAgICAgICAoaWYg KGVxIChjYXIgaW5uZXIpICdub3QpIAorICAgICAgICAgICAgKGlidWZmZXItaW5jbHVkZWQtaW4t ZmlsdGVyLXAgYnVmIChpYnVmZmVyLXVuYXJ5LW9wZXJhbmQgaW5uZXIpKQorICAgICAgICAgIChu b3QgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAtMSBidWYgaW5uZXIpKSkpCiAgICAgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAtMSBidWYgZmlsdGVyKSkpCiAKIChkZWZ1biBpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wLTEgKGJ1ZiBmaWx0ZXIpCkBAIC01MzEsMTcgKzcxMSwy NSBAQCBUbyBldmFsdWF0ZSBhIGZvcm0gd2l0aG91dCB2aWV3aW5nIHRoZSBidWZmZXIsIHNlZSBg aWJ1ZmZlci1kby1ldmFsJy4iCiAgICAobm90CiAgICAgKHBjYXNlIChjYXIgZmlsdGVyKQogICAg ICAgKGBvcgorICAgICAgIDs7OyBBVFROOiBTaG9ydC1jaXJjdWl0aW5nIGFsdGVybmF0aXZlIHdp dGggcGFyYWxsZWwgc3RydWN0dXJlIHcvYGFuZAorICAgICAgIDs7KGNhdGNoICdoYXMtbWF0Y2gK KyAgICAgICA7OyAgKGRvbGlzdCAoZmlsdGVyLXNwZWMgKGNkciBmaWx0ZXIpIG5pbCkKKyAgICAg ICA7OyAgICAod2hlbiAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcCBidWYgZmlsdGVyLXNw ZWMpCisgICAgICAgOzsgICAgICAodGhyb3cgJ2hhcy1tYXRjaCB0KSkpKQogICAgICAgIChtZW1x IHQgKG1hcGNhciAjJyhsYW1iZGEgKHgpCi0JCQkgICAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0 ZXItcCBidWYgeCkpCi0JCSAgICAgICAoY2RyIGZpbHRlcikpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wIGJ1ZiB4KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgKGNkciBmaWx0ZXIpKSkpCisgICAgICAoYGFuZAorICAgICAgIChjYXRj aCAnbm8tbWF0Y2gKKyAgICAgICAgIChkb2xpc3QgKGZpbHRlci1zcGVjIChjZHIgZmlsdGVyKSB0 KQorICAgICAgICAgICAodW5sZXNzIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wIGJ1ZiBm aWx0ZXItc3BlYykKKyAgICAgICAgICAgICAodGhyb3cgJ25vLW1hdGNoIG5pbCkpKSkpCiAgICAg ICAoYHNhdmVkCi0gICAgICAgKGxldCAoKGRhdGEKLQkgICAgICAoYXNzb2MgKGNkciBmaWx0ZXIp Ci0JCSAgICAgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkpCi0JICh1bmxlc3MgZGF0YQotCSAgIChp YnVmZmVyLWZpbHRlci1kaXNhYmxlIHQpCi0JICAgKGVycm9yICJVbmtub3duIHNhdmVkIGZpbHRl ciAlcyIgKGNkciBmaWx0ZXIpKSkKLQkgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1 ZiAoY2FkciBkYXRhKSkpKQorICAgICAgIChsZXQgKChkYXRhIChhc3NvYyAoY2RyIGZpbHRlcikg aWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkpCisgICAgICAgICAodW5sZXNzIGRhdGEKKyAgICAgICAg ICAgKGlidWZmZXItZmlsdGVyLWRpc2FibGUgdCkKKyAgICAgICAgICAgKGVycm9yICJVbmtub3du IHNhdmVkIGZpbHRlciAlcyIgKGNkciBmaWx0ZXIpKSkKKyAgICAgICAgIChpYnVmZmVyLWluY2x1 ZGVkLWluLWZpbHRlcnMtcCBidWYgKGNkciBkYXRhKSkpKQogICAgICAgKF8KICAgICAgICAocGNh c2UtbGV0ICgoYCgsX3R5cGUgLF9kZXNjICxmdW5jKQogICAgICAgICAgICAgICAgICAgICAoYXNz cSAoY2FyIGZpbHRlcikgaWJ1ZmZlci1maWx0ZXJpbmctYWxpc3QpKSkKQEAgLTgyOCwzOSArMTAx NiwzNiBAQCBncm91cCBkZWZpbml0aW9ucyBieSBzZXR0aW5nIGBpYnVmZmVyLWZpbHRlci1ncm91 cHMnIHRvIG5pbC4iCiAgICAgKHdoZW4gYnVmCiAgICAgICAoaWJ1ZmZlci1qdW1wLXRvLWJ1ZmZl ciAoYnVmZmVyLW5hbWUgYnVmKSkpKSkKIAotKGRlZnVuIGlidWZmZXItcHVzaC1maWx0ZXIgKHF1 YWxpZmllcikKLSAgIkFkZCBRVUFMSUZJRVIgdG8gYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMnLiIKLSAgKHB1c2ggcXVhbGlmaWVyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQor KGRlZnVuIGlidWZmZXItcHVzaC1maWx0ZXIgKGZpbHRlci1zcGVjaWZpY2F0aW9uKQorICAiQWRk IEZJTFRFUi1TUEVDSUZJQ0FUSU9OIHRvIGBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzJy4i CisgIChwdXNoIGZpbHRlci1zcGVjaWZpY2F0aW9uIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIGlidWZmZXItZGVjb21wb3NlLWZpbHRlciAo KQotICAiU2VwYXJhdGUgdGhlIHRvcCBjb21wb3VuZCBmaWx0ZXIgKE9SLCBOT1QsIG9yIFNBVkVE KSBpbiB0aGlzIGJ1ZmZlci4KKyAgIlNlcGFyYXRlIHRoaXMgYnVmZmVyJ3MgdG9wIGNvbXBvdW5k IGZpbHRlciAoQU5ELCBPUiwgTk9ULCBvciBTQVZFRCkuCiAKIFRoaXMgbWVhbnMgdGhhdCB0aGUg dG9wbW9zdCBmaWx0ZXIgb24gdGhlIGZpbHRlcmluZyBzdGFjaywgd2hpY2ggbXVzdAogYmUgYSBj b21wbGV4IGZpbHRlciBsaWtlIChPUiBbbmFtZTogZm9vXSBbbW9kZTogYmFyLW1vZGVdKSwgd2ls bCBiZQotdHVybmVkIGludG8gdHdvIHNlcGFyYXRlIGZpbHRlcnMgW25hbWU6IGZvb10gYW5kIFtt b2RlOiBiYXItbW9kZV0uIgordHVybmVkIGludG8gc2VwYXJhdGUgZmlsdGVycywgbGlrZSBbbmFt ZTogZm9vXSBhbmQgW21vZGU6IGJhci1tb2RlXS4iCiAgIChpbnRlcmFjdGl2ZSkKICAgKHdoZW4g KG51bGwgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKICAgICAoZXJyb3IgIk5vIGZpbHRl cnMgaW4gZWZmZWN0IikpCiAgIChsZXQgKChsaW0gKHBvcCBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzKSkpCiAgICAgKHBjYXNlIChjYXIgbGltKQotICAgICAgKGBvcgorICAgICAgKChvciAn b3IgJ2FuZCkKICAgICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIChhcHBl bmQKLQkJCQkJICAoY2RyIGxpbSkKLQkJCQkJICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJz KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciBsaW0p CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0 ZXJpbmctcXVhbGlmaWVycykpKQogICAgICAgKGBzYXZlZAotICAgICAgIChsZXQgKChkYXRhCi0J ICAgICAgKGFzc29jIChjZHIgbGltKQotCQkgICAgIGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQot CSAodW5sZXNzIGRhdGEKLQkgICAoaWJ1ZmZlci1maWx0ZXItZGlzYWJsZSkKLQkgICAoZXJyb3Ig IlVua25vd24gc2F2ZWQgZmlsdGVyICVzIiAoY2RyIGxpbSkpKQotCSAoc2V0cSBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzIChhcHBlbmQKLQkJCQkJICAgIChjYWRyIGRhdGEpCi0JCQkJCSAg ICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKQorICAgICAgIChsZXQgKChkYXRhIChh c3NvYyAoY2RyIGxpbSkgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkpCisgICAgICAgICAodW5sZXNz IGRhdGEKKyAgICAgICAgICAgKGlidWZmZXItZmlsdGVyLWRpc2FibGUpCisgICAgICAgICAgIChl cnJvciAiVW5rbm93biBzYXZlZCBmaWx0ZXIgJXMiIChjZHIgbGltKSkpCisgICAgICAgICAoc2V0 cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIChhcHBlbmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgZGF0YSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMp KSkpCiAgICAgICAoYG5vdAotICAgICAgIChwdXNoIChjZHIgbGltKQotCSAgICAgaWJ1ZmZlci1m aWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgKHB1c2ggKGlidWZmZXItdW5hcnktb3BlcmFu ZCBsaW0pIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQogICAgICAgKF8KICAgICAgICAo ZXJyb3IgIkZpbHRlciB0eXBlICVzIGlzIG5vdCBjb21wb3VuZCIgKGNhciBsaW0pKSkpKQogICAo aWJ1ZmZlci11cGRhdGUgbmlsIHQpKQpAQCAtODkyLDEyICsxMDc3LDEyIEBAIHR1cm5lZCBpbnRv IHR3byBzZXBhcmF0ZSBmaWx0ZXJzIFtuYW1lOiBmb29dIGFuZCBbbW9kZTogYmFyLW1vZGVdLiIK ICAgKGlidWZmZXItdXBkYXRlIG5pbCB0KSkKIAogOzs7IyMjYXV0b2xvYWQKLShkZWZ1biBpYnVm ZmVyLW9yLWZpbHRlciAoJm9wdGlvbmFsIHJldmVyc2UpCisoZGVmdW4gaWJ1ZmZlci1vci1maWx0 ZXIgKCZvcHRpb25hbCBkZWNvbXBvc2UpCiAgICJSZXBsYWNlIHRoZSB0b3AgdHdvIGZpbHRlcnMg aW4gdGhpcyBidWZmZXIgd2l0aCB0aGVpciBsb2dpY2FsIE9SLgotSWYgb3B0aW9uYWwgYXJndW1l bnQgUkVWRVJTRSBpcyBub24tbmlsLCBpbnN0ZWFkIGJyZWFrIHRoZSB0b3AgT1IKK0lmIG9wdGlv bmFsIGFyZ3VtZW50IERFQ09NUE9TRSBpcyBub24tbmlsLCBpbnN0ZWFkIGJyZWFrIHRoZSB0b3Ag T1IKIGZpbHRlciBpbnRvIHBhcnRzLiIKICAgKGludGVyYWN0aXZlICJQIikKLSAgKGlmIHJldmVy c2UKKyAgKGlmIGRlY29tcG9zZQogICAgICAgKHByb2duCiAJKHdoZW4gKG9yIChudWxsIGlidWZm ZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCiAJCSAgKG5vdCAoZXEgJ29yIChjYWFyIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpCkBAIC05MTcsNiArMTEwMiwzMiBAQCBmaWx0ZXIgaW50 byBwYXJ0cy4iCiAJICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKICAgKGli dWZmZXItdXBkYXRlIG5pbCB0KSkKIAorOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBpYnVmZmVyLWFu ZC1maWx0ZXIgKCZvcHRpb25hbCBkZWNvbXBvc2UpCisgICJSZXBsYWNlIHRoZSB0b3AgdHdvIGZp bHRlcnMgaW4gdGhpcyBidWZmZXIgd2l0aCB0aGVpciBsb2dpY2FsIEFORC4KK0lmIG9wdGlvbmFs IGFyZ3VtZW50IERFQ09NUE9TRSBpcyBub24tbmlsLCBpbnN0ZWFkIGJyZWFrIHRoZSB0b3AgQU5E CitmaWx0ZXIgaW50byBwYXJ0cy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgIChpZiBkZWNvbXBv c2UKKyAgICAgIChwcm9nbgorICAgICAgICAod2hlbiAob3IgKG51bGwgaWJ1ZmZlci1maWx0ZXJp bmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAgIChub3QgKGVxICdhbmQgKGNhYXIgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKKyAgICAgICAgICAoZXJyb3IgIlRvcCBmaWx0 ZXIgaXMgbm90IGFuIEFORCIpKQorICAgICAgICAobGV0ICgobGltIChwb3AgaWJ1ZmZlci1maWx0 ZXJpbmctcXVhbGlmaWVycykpKQorICAgICAgICAgIChzZXRxIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMKKyAgICAgICAgICAgICAgICAobmNvbmMgKGNkciBsaW0pIGlidWZmZXItZmlsdGVy aW5nLXF1YWxpZmllcnMpKSkpCisgICAgKHdoZW4gKDwgKGxlbmd0aCBpYnVmZmVyLWZpbHRlcmlu Zy1xdWFsaWZpZXJzKSAyKQorICAgICAgKGVycm9yICJOZWVkIHR3byBmaWx0ZXJzIHRvIEFORCIp KQorICAgIDs7IElmIHRoZSBzZWNvbmQgZmlsdGVyIGlzIGFuIEFORCwganVzdCBhZGQgdG8gaXQu CisgICAgKGxldCAoKGZpcnN0IChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisg ICAgICAgICAgKHNlY29uZCAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKKyAg ICAgIChpZiAoZXEgJ2FuZCAoY2FyIHNlY29uZCkpCisgICAgICAgICAgKHB1c2ggKG5jb25jIChs aXN0ICdhbmQgZmlyc3QpIChjZHIgc2Vjb25kKSkKKyAgICAgICAgICAgICAgICBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAocHVzaCAobGlzdCAnYW5kIGZpcnN0IHNlY29u ZCkKKyAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKKyAgKGli dWZmZXItdXBkYXRlIG5pbCB0KSkKKwogKGRlZnVuIGlidWZmZXItbWF5YmUtc2F2ZS1zdHVmZiAo KQogICAod2hlbiBpYnVmZmVyLXNhdmUtd2l0aC1jdXN0b20KICAgICAoaWYgKGZib3VuZHAgJ2N1 c3RvbWl6ZS1zYXZlLXZhcmlhYmxlKQpAQCAtOTM5LDcgKzExNTAsNyBAQCBJbnRlcmFjdGl2ZWx5 LCBwcm9tcHQgZm9yIE5BTUUsIGFuZCB1c2UgdGhlIGN1cnJlbnQgZmlsdGVycy4iCiAgICAgICBp YnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpCiAgIChpYnVmZmVyLWFpZiAoYXNzb2MgbmFt ZSBpYnVmZmVyLXNhdmVkLWZpbHRlcnMpCiAgICAgICAoc2V0Y2RyIGl0IGZpbHRlcnMpCi0gICAg KHB1c2ggKGxpc3QgbmFtZSBmaWx0ZXJzKSBpYnVmZmVyLXNhdmVkLWZpbHRlcnMpKQorICAgIChw dXNoIChjb25zIG5hbWUgZmlsdGVycykgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkKICAgKGlidWZm ZXItbWF5YmUtc2F2ZS1zdHVmZikpCiAKIDs7OyMjI2F1dG9sb2FkCkBAIC05ODksNyArMTIwMCw5 IEBAIEludGVyYWN0aXZlbHksIHByb21wdCBmb3IgTkFNRSwgYW5kIHVzZSB0aGUgY3VycmVudCBm aWx0ZXJzLiIKIAogKGRlZnVuIGlidWZmZXItZm9ybWF0LXF1YWxpZmllciAocXVhbGlmaWVyKQog ICAoaWYgKGVxIChjYXItc2FmZSBxdWFsaWZpZXIpICdub3QpCi0gICAgICAoY29uY2F0ICIgW05P VCIgKGlidWZmZXItZm9ybWF0LXF1YWxpZmllci0xIChjZHIgcXVhbGlmaWVyKSkgIl0iKQorICAg ICAgKGNvbmNhdCAiIFtOT1QiCisgICAgICAgICAgICAgIChpYnVmZmVyLWZvcm1hdC1xdWFsaWZp ZXItMSAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kIHF1YWxpZmllcikpCisgICAgICAgICAgICAgICJd IikKICAgICAoaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyLTEgcXVhbGlmaWVyKSkpCiAKIChkZWZ1 biBpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXItMSAocXVhbGlmaWVyKQpAQCAtOTk4LDE0ICsxMjEx LDE2IEBAIEludGVyYWN0aXZlbHksIHByb21wdCBmb3IgTkFNRSwgYW5kIHVzZSB0aGUgY3VycmVu dCBmaWx0ZXJzLiIKICAgICAgKGNvbmNhdCAiIFtmaWx0ZXI6ICIgKGNkciBxdWFsaWZpZXIpICJd IikpCiAgICAgKGBvcgogICAgICAoY29uY2F0ICIgW09SIiAobWFwY29uY2F0ICMnaWJ1ZmZlci1m b3JtYXQtcXVhbGlmaWVyCi0JCQkgICAgICAgKGNkciBxdWFsaWZpZXIpICIiKSAiXSIpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgcXVhbGlmaWVyKSAiIikgIl0iKSkKKyAg ICAoYGFuZAorICAgICAoY29uY2F0ICIgW0FORCIgKG1hcGNvbmNhdCAjJ2lidWZmZXItZm9ybWF0 LXF1YWxpZmllcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHF1YWxpZmll cikgIiIpICJdIikpCiAgICAgKF8KICAgICAgKGxldCAoKHR5cGUgKGFzc3EgKGNhciBxdWFsaWZp ZXIpIGlidWZmZXItZmlsdGVyaW5nLWFsaXN0KSkpCiAgICAgICAgKHVubGVzcyBxdWFsaWZpZXIK LQkgKGVycm9yICJJYnVmZmVyOiBiYWQgcXVhbGlmaWVyICVzIiBxdWFsaWZpZXIpKQorICAgICAg ICAgKGVycm9yICJJYnVmZmVyOiBiYWQgcXVhbGlmaWVyICVzIiBxdWFsaWZpZXIpKQogICAgICAg IChjb25jYXQgIiBbIiAoY2FkciB0eXBlKSAiOiAiIChmb3JtYXQgIiVzXSIgKGNkciBxdWFsaWZp ZXIpKSkpKSkpCiAKLQogKGRlZnVuIGlidWZmZXItbGlzdC1idWZmZXItbW9kZXMgKCZvcHRpb25h bCBpbmNsdWRlLXBhcmVudHMpCiAgICJDcmVhdGUgYSBjb21wbGV0aW9uIHRhYmxlIG9mIGJ1ZmZl ciBtb2RlcyBjdXJyZW50bHkgaW4gdXNlLgogSWYgSU5DTFVERS1QQVJFTlRTIGlzIG5vbi1uaWwg dGhlbiBpbmNsdWRlIHBhcmVudCBtb2Rlcy4iCkBAIC0xMDIzLDcgKzEyMzgsNyBAQCBJZiBJTkNM VURFLVBBUkVOVFMgaXMgbm9uLW5pbCB0aGVuIGluY2x1ZGUgcGFyZW50IG1vZGVzLiIKIAogOzs7 IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1tb2RlICJpYnVmLWV4dCIp CiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIG1vZGUKLSAgIlRvZ2dsZSBjdXJyZW50IHZpZXcgdG8g YnVmZmVycyB3aXRoIG1ham9yIG1vZGUgUVVBTElGSUVSLiIKKyAgIkxpbWl0IGN1cnJlbnQgdmll dyB0byBidWZmZXJzIHdpdGggbWFqb3IgbW9kZSBRVUFMSUZJRVIuIgogICAoOmRlc2NyaXB0aW9u ICJtYWpvciBtb2RlIgogICAgOnJlYWRlcgogICAgKGxldCogKChidWYgKGlidWZmZXItY3VycmVu dC1idWZmZXIpKQpAQCAtMTA0Myw3ICsxMjU4LDcgQEAgSWYgSU5DTFVERS1QQVJFTlRTIGlzIG5v bi1uaWwgdGhlbiBpbmNsdWRlIHBhcmVudCBtb2Rlcy4iCiAKIDs7OyMjI2F1dG9sb2FkIChhdXRv bG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktdXNlZC1tb2RlICJpYnVmLWV4dCIpCiAoZGVmaW5lLWli dWZmZXItZmlsdGVyIHVzZWQtbW9kZQotICAiVG9nZ2xlIGN1cnJlbnQgdmlldyB0byBidWZmZXJz IHdpdGggbWFqb3IgbW9kZSBRVUFMSUZJRVIuCisgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVm ZmVycyB3aXRoIG1ham9yIG1vZGUgUVVBTElGSUVSLgogQ2FsbGVkIGludGVyYWN0aXZlbHksIHRo aXMgZnVuY3Rpb24gYWxsb3dzIHNlbGVjdGlvbiBvZiBtb2RlcwogY3VycmVudGx5IHVzZWQgYnkg YnVmZmVycy4iCiAgICg6ZGVzY3JpcHRpb24gIm1ham9yIG1vZGUgaW4gdXNlIgpAQCAtMTA2Miw3 ICsxMjc3LDcgQEAgY3VycmVudGx5IHVzZWQgYnkgYnVmZmVycy4iCiAKIDs7OyMjI2F1dG9sb2Fk IChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktZGVyaXZlZC1tb2RlICJpYnVmLWV4dCIpCiAo ZGVmaW5lLWlidWZmZXItZmlsdGVyIGRlcml2ZWQtbW9kZQotICAgICJUb2dnbGUgY3VycmVudCB2 aWV3IHRvIGJ1ZmZlcnMgd2hvc2UgbWFqb3IgbW9kZSBpbmhlcml0cyBmcm9tIFFVQUxJRklFUi4i CisgICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdob3NlIG1ham9yIG1vZGUgaW5o ZXJpdHMgZnJvbSBRVUFMSUZJRVIuIgogICAoOmRlc2NyaXB0aW9uICJkZXJpdmVkIG1vZGUiCiAJ CTpyZWFkZXIKIAkJKGludGVybgpAQCAtMTA3MywyMiArMTI4OCw4MyBAQCBjdXJyZW50bHkgdXNl ZCBieSBidWZmZXJzLiIKIAogOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRl ci1ieS1uYW1lICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIG5hbWUKLSAgIlRv Z2dsZSBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIG5hbWUgbWF0Y2hpbmcgUVVBTElGSUVS LiIKKyAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggbmFtZSBtYXRjaGluZyBR VUFMSUZJRVIuIgogICAoOmRlc2NyaXB0aW9uICJidWZmZXIgbmFtZSIKICAgIDpyZWFkZXIgKHJl YWQtZnJvbS1taW5pYnVmZmVyICJGaWx0ZXIgYnkgbmFtZSAocmVnZXhwKTogIikpCiAgIChzdHJp bmctbWF0Y2ggcXVhbGlmaWVyIChidWZmZXItbmFtZSBidWYpKSkKIAorOzs7IyMjYXV0b2xvYWQg KGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1zdGFycmVkLW5hbWUgImlidWYtZXh0IikKKyhk ZWZpbmUtaWJ1ZmZlci1maWx0ZXIgc3RhcnJlZC1uYW1lCisgICAgIkxpbWl0IGN1cnJlbnQgdmll dyB0byBidWZmZXJzIHdpdGggbmFtZSBiZWdpbm5pbmcgd2l0aCAqLiIKKyAgKDpkZXNjcmlwdGlv biAic3RhcnJlZCBidWZmZXIgbmFtZSIKKyAgIDpyZWFkZXIgbmlsKQorICAoc3RyaW5nLW1hdGNo ICJcXGAqIiAoYnVmZmVyLW5hbWUgYnVmKSkpCisKKzs7IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJl IGNhbGxlZCBwYXRobmFtZSBidXQga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogOzs7 IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZSAiaWJ1Zi1l eHQiKQotKGRlZmluZS1pYnVmZmVyLWZpbHRlciBmaWxlbmFtZQotICAiVG9nZ2xlIGN1cnJlbnQg dmlldyB0byBidWZmZXJzIHdpdGggZmlsZW5hbWUgbWF0Y2hpbmcgUVVBTElGSUVSLiIKLSAgKDpk ZXNjcmlwdGlvbiAiZmlsZW5hbWUiCi0gICA6cmVhZGVyIChyZWFkLWZyb20tbWluaWJ1ZmZlciAi RmlsdGVyIGJ5IGZpbGVuYW1lIChyZWdleHApOiAiKSkKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIg ZmlsZW5hbWUgIAorICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBmdWxsIGZp bGUgcGF0aG5hbWUgbWF0Y2hpbmcgUVVBTElGSUVSLgorCitGb3IgZXhhbXBsZSwgZm9yIGEgYnVm ZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsIHRoaXMKK21hdGNoZXMgYWdhaW5z dCAnL2EvYi9jLmQnLiIKKyAgKDpkZXNjcmlwdGlvbiAiZmlsZSBwYXRobmFtZSIKKyAgIDpyZWFk ZXIgKHJlYWQtZnJvbS1taW5pYnVmZmVyICJGaWx0ZXIgYnkgZmlsZSBwYXRobmFtZSAocmVnZXhw KTogIikpCiAgIChpYnVmZmVyLWF3aGVuICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoaWJ1ZmZl ci1idWZmZXItZmlsZS1uYW1lKSkKICAgICAoc3RyaW5nLW1hdGNoIHF1YWxpZmllciBpdCkpKQog Cis7OyBJZiBmaWxlbmFtZSBhYm92ZSB3ZXJlIHJlbmFtZWQgdG8gcGF0aG5hbWUsIHRoaXMgY291 bGQgYmUgY2FsbGVkIGZpbGVuYW1lLgorOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVy LWZpbHRlci1ieS1maWxlbmFtZS1iYXNlICJpYnVmLWV4dCIpCisoZGVmaW5lLWlidWZmZXItZmls dGVyIGZpbGVuYW1lLWJhc2UgCisgICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdp dGggZmlsZSBiYXNlbmFtZSBtYXRjaGluZyBRVUFMSUZJRVIuCisKK0ZvciBleGFtcGxlLCBmb3Ig YSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgdGhpcworbWF0Y2hlcyBh Z2FpbnN0ICdjLmQnLiIKKyAgKDpkZXNjcmlwdGlvbiAiZmlsZSBiYXNlbmFtZSIKKyAgIDpyZWFk ZXIgKHJlYWQtZnJvbS1taW5pYnVmZmVyCisgICAgICAgICAgICAiRmlsdGVyIGJ5IGZpbGUgbmFt ZSwgd2l0aG91dCBkaXJlY3RvcnkgcGFydCAocmVnZXgpOiAiKSkKKyAgKGlidWZmZXItYXdoZW4g KHdpdGgtY3VycmVudC1idWZmZXIgYnVmIChpYnVmZmVyLWJ1ZmZlci1maWxlLW5hbWUpKQorICAg IChzdHJpbmctbWF0Y2ggcXVhbGlmaWVyIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGl0KSkpKQor Cis7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWV4 dGVuc2lvbiAiaWJ1Zi1leHQiKQorKGRlZmluZS1pYnVmZmVyLWZpbHRlciBmaWxlbmFtZS1leHRl bnNpb24KKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBmaWxlbmFtZSBl eHRlbnNpb24gbWF0Y2hpbmcgUVVBTElGSUVSLgorCitUaGUgc2VwYXJhdG9yIGNoYXJhY3RlciAo dHlwaWNhbGx5IGAuJykgaXMgbm90IHBhcnQgb2YgdGhlCitwYXR0ZXJuLiBGb3IgZXhhbXBsZSwg Zm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlCisnL2EvYi9jLmQnLCB0aGlzIG1hdGNo ZXMgYWdhaW5zdCAnZCcuIgorICAoOmRlc2NyaXB0aW9uICJmaWxlbmFtZSBleHRlbnNpb24iCisg ICA6cmVhZGVyIChyZWFkLWZyb20tbWluaWJ1ZmZlcgorICAgICAgICAgICAgIkZpbHRlciBieSBm aWxlbmFtZSBleHRlbnNpb24gd2l0aG91dCBzZXBhcmF0b3IgKHJlZ2V4KTogIikpCisgIChpYnVm ZmVyLWF3aGVuICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoaWJ1ZmZlci1idWZmZXItZmlsZS1u YW1lKSkKKyAgICAoc3RyaW5nLW1hdGNoIHF1YWxpZmllciAob3IgKGZpbGUtbmFtZS1leHRlbnNp b24gaXQpICIiKSkpKQorCis7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVy LWJ5LWZpbGVuYW1lLXJvb3QgImlidWYtZXh0IikKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmls ZW5hbWUtcm9vdAorICAgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIGZpbGUg YmFzZW5hbWUgbWF0Y2hpbmcgUVVBTElGSUVSLgorCitUaGUgZmlsZW5hbWUgcm9vdCBpcyB0aGUg cGFydCBvZiB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgZmlsZSB3aXRob3V0Cit0aGUgZGlyZWN0 b3J5IG9yIGV4dGVuc2lvbi9zdWZmaXggY29tcG9uZW50cy4gRm9yIGV4YW1wbGUsIGZvciBhIGJ1 ZmZlcgorYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgdGhpcyBtYXRjaGVzIGFnYWlu c3QgJ2MnLiIKKyAgKDpkZXNjcmlwdGlvbiAiZmlsZW5hbWUgcm9vdCIKKyAgIDpyZWFkZXIgKHJl YWQtZnJvbS1taW5pYnVmZmVyICJGaWx0ZXIgYnkgZmlsZW5hbWUgcm9vdCAocmVnZXgpOiAiKSkK KyAgKGlidWZmZXItYXdoZW4gKHdpdGgtY3VycmVudC1idWZmZXIgYnVmIChpYnVmZmVyLWJ1ZmZl ci1maWxlLW5hbWUpKQorICAgIChzdHJpbmctbWF0Y2ggcXVhbGlmaWVyIChmaWxlLW5hbWUtYmFz ZSBpdCkpKSkKKworOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1m aWxlbmFtZS1kaXJlY3RvcnkgImlidWYtZXh0IikKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmls ZW5hbWUtZGlyZWN0b3J5CisgICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGgg ZmlsZW5hbWUgZGlyZWN0b3J5IG1hdGNoaW5nIFFVQUxJRklFUi4KKworRm9yIGV4YW1wbGUsIGZv ciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCB0aGlzCittYXRjaGVz IGFnYWluc3QgJy9hL2InLiIKKyAgKDpkZXNjcmlwdGlvbiAiZGlyZWN0b3J5IG5hbWUiCisgICA6 cmVhZGVyIChyZWFkLWZyb20tbWluaWJ1ZmZlciAiRmlsdGVyIGJ5IGRpcmVjdG9yeSBuYW1lIChy ZWdleCk6ICIpKQorICAoaWJ1ZmZlci1hd2hlbiAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKGli dWZmZXItYnVmZmVyLWZpbGUtbmFtZSkpCisgICAgKGxldCAoKGRpcm5hbWUgKGZpbGUtbmFtZS1k aXJlY3RvcnkgaXQpKSkKKyAgICAgICh3aGVuIGRpcm5hbWUgKHN0cmluZy1tYXRjaCBxdWFsaWZp ZXIgZGlybmFtZSkpKSkpCisKIDs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0 ZXItYnktc2l6ZS1ndCAgImlidWYtZXh0IikKIChkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgc2l6ZS1n dAotICAiVG9nZ2xlIGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggc2l6ZSBncmVhdGVyIHRo YW4gUVVBTElGSUVSLiIKKyAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggc2l6 ZSBncmVhdGVyIHRoYW4gUVVBTElGSUVSLiIKICAgKDpkZXNjcmlwdGlvbiAic2l6ZSBncmVhdGVy IHRoYW4iCiAgICA6cmVhZGVyCiAgICAoc3RyaW5nLXRvLW51bWJlciAocmVhZC1mcm9tLW1pbmli dWZmZXIgIkZpbHRlciBieSBzaXplIGdyZWF0ZXIgdGhhbjogIikpKQpAQCAtMTA5NywxNiArMTM3 MywyMyBAQCBjdXJyZW50bHkgdXNlZCBieSBidWZmZXJzLiIKIAogOzs7IyMjYXV0b2xvYWQgKGF1 dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1zaXplLWx0ICAiaWJ1Zi1leHQiKQogKGRlZmluZS1p YnVmZmVyLWZpbHRlciBzaXplLWx0Ci0gICAiVG9nZ2xlIGN1cnJlbnQgdmlldyB0byBidWZmZXJz IHdpdGggc2l6ZSBsZXNzIHRoYW4gUVVBTElGSUVSLiIKKyAgICJMaW1pdCBjdXJyZW50IHZpZXcg dG8gYnVmZmVycyB3aXRoIHNpemUgbGVzcyB0aGFuIFFVQUxJRklFUi4iCiAgICg6ZGVzY3JpcHRp b24gInNpemUgbGVzcyB0aGFuIgogICAgOnJlYWRlcgogICAgKHN0cmluZy10by1udW1iZXIgKHJl YWQtZnJvbS1taW5pYnVmZmVyICJGaWx0ZXIgYnkgc2l6ZSBsZXNzIHRoYW46ICIpKSkKICAgKDwg KHdpdGgtY3VycmVudC1idWZmZXIgYnVmIChidWZmZXItc2l6ZSkpCiAgICAgIHF1YWxpZmllcikp CiAKKzs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktbW9kaWZpZWQg ImlidWYtZXh0IikKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgbW9kaWZpZWQKKyAgICJMaW1pdCBj dXJyZW50IHZpZXcgdG8gYnVmZmVycyB0aGF0IGFyZSBtYXJrZWQgYXMgbW9kaWZpZWQuIgorICAo OmRlc2NyaXB0aW9uICJtb2RpZmllZCIKKyAgIDpyZWFkZXIgbmlsKQorICAoYnVmZmVyLW1vZGlm aWVkLXAgYnVmKSkKKwogOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1i eS1jb250ZW50ICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIGNvbnRlbnQKLSAg ICJUb2dnbGUgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2hvc2UgY29udGVudHMgbWF0Y2ggUVVB TElGSUVSLiIKKyAgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aG9zZSBjb250ZW50 cyBtYXRjaCBRVUFMSUZJRVIuIgogICAoOmRlc2NyaXB0aW9uICJjb250ZW50IgogICAgOnJlYWRl ciAocmVhZC1mcm9tLW1pbmlidWZmZXIgIkZpbHRlciBieSBjb250ZW50IChyZWdleHApOiAiKSkK ICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmCkBAIC0xMTE2LDEyICsxMzk5LDMzIEBAIGN1cnJl bnRseSB1c2VkIGJ5IGJ1ZmZlcnMuIgogCiA7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZm ZXItZmlsdGVyLWJ5LXByZWRpY2F0ZSAiaWJ1Zi1leHQiKQogKGRlZmluZS1pYnVmZmVyLWZpbHRl ciBwcmVkaWNhdGUKLSAgICJUb2dnbGUgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgZm9yIHdoaWNo IFFVQUxJRklFUiByZXR1cm5zIG5vbi1uaWwuIgorICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBi dWZmZXJzIGZvciB3aGljaCBRVUFMSUZJRVIgcmV0dXJucyBub24tbmlsLiIKICAgKDpkZXNjcmlw dGlvbiAicHJlZGljYXRlIgogICAgOnJlYWRlciAocmVhZC1taW5pYnVmZmVyICJGaWx0ZXIgYnkg cHJlZGljYXRlIChmb3JtKTogIikpCiAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZgogICAgIChl dmFsIHF1YWxpZmllcikpKQogCis7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmls dGVyLWNob3Nlbi1ieS1jb21wbGV0aW9uICJpYnVmLWV4dCIpCisoZGVmdW4gaWJ1ZmZlci1maWx0 ZXItY2hvc2VuLWJ5LWNvbXBsZXRpb24gKCkKKyAgIlNlbGVjdCBhbmQgYXBwbHkgZmlsdGVyIGNo b3NlbiBieSBjb21wbGV0aW9uIGFnYWluc3QgYXZhaWxhYmxlIGZpbHRlcnMuCitJbmRpY2F0ZXMg Y29ycmVzcG9uZGluZyBrZXkgc2VxdWVuY2VzIGluIGVjaG8gYXJlYSBhZnRlciBmaWx0ZXJpbmcu CisKK1RoZSBjb21wbGV0aW9uIG1hdGNoZXMgYWdhaW5zdCB0aGUgZmlsdGVyIGRlc2NyaXB0aW9u IHRleHQgb2YKK2VhY2ggZmlsdGVyIGluIGBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCcuIgorICAo aW50ZXJhY3RpdmUpCisgIChsZXQqICgoZmlsdGVycyAobWFwY2FyIChsYW1iZGEgKHgpIChjb25z IChjYWRyIHgpIChjYXIgeCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZp bHRlcmluZy1hbGlzdCkpCisgICAgICAgICAobWF0Y2ggKGNvbXBsZXRpbmctcmVhZCAiRmlsdGVy IGJ5OiAiIGZpbHRlcnMgbmlsIHQpKQorICAgICAgICAgKGZpbHRlciAoY2RyIChhc3NvYyBtYXRj aCBmaWx0ZXJzKSkpCisgICAgICAgICAoY29tbWFuZCAoaW50ZXJuIChjb25jYXQgImlidWZmZXIt ZmlsdGVyLWJ5LSIgKHN5bWJvbC1uYW1lIGZpbHRlcikpKSkpCisgICAgKGNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kKQorICAgIChtZXNzYWdlICIlcyBjYW4gYmUgcnVuIHdpdGgga2V5IHNlcXVl bmNlczogJXMiCisgICAgICAgICAgICAgY29tbWFuZAorICAgICAgICAgICAgIChtYXBjb25jYXQg IydrZXktZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICh3aGVyZS1pcy1pbnRl cm5hbCBjb21tYW5kIGlidWZmZXItbW9kZS1tYXAgbmlsIHQpCisgICAgICAgICAgICAgICAgICAg ICAgICAib3IgIikpKSkKKworCiA7OzsgU29ydGluZwogCiA7OzsjIyNhdXRvbG9hZApkaWZmIC0t Z2l0IGEvbGlzcC9pYnVmZmVyLmVsIGIvbGlzcC9pYnVmZmVyLmVsCmluZGV4IGIzM2MyZTMuLjE4 MWEwMWMgMTAwNjQ0Ci0tLSBhL2xpc3AvaWJ1ZmZlci5lbAorKysgYi9saXNwL2lidWZmZXIuZWwK QEAgLTUxOCwyOCArNTE4LDQwIEBAIGRpcmVjdG9yeSwgbGlrZSBgZGVmYXVsdC1kaXJlY3Rvcnkn LiIKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAicyBmIikgJ2lidWZmZXItZG8tc29ydC1ieS1m aWxlbmFtZS9wcm9jZXNzKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJzIG0iKSAnaWJ1ZmZl ci1kby1zb3J0LWJ5LW1ham9yLW1vZGUpCiAKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBS RVQiKSAnaWJ1ZmZlci1maWx0ZXItYnktbW9kZSkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAi LyBtIikgJ2lidWZmZXItZmlsdGVyLWJ5LXVzZWQtbW9kZSkKICAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiLyBNIikgJ2lidWZmZXItZmlsdGVyLWJ5LWRlcml2ZWQtbW9kZSkKICAgICAoZGVmaW5l LWtleSBtYXAgKGtiZCAiLyBuIikgJ2lidWZmZXItZmlsdGVyLWJ5LW5hbWUpCi0gICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgIi8gYyIpICdpYnVmZmVyLWZpbHRlci1ieS1jb250ZW50KQotICAgIChk ZWZpbmUta2V5IG1hcCAoa2JkICIvIGUiKSAnaWJ1ZmZlci1maWx0ZXItYnktcHJlZGljYXRlKQor ICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvICoiKSAnaWJ1ZmZlci1maWx0ZXItYnktc3RhcnJl ZC1uYW1lKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIGYiKSAnaWJ1ZmZlci1maWx0ZXIt YnktZmlsZW5hbWUpCi0gICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gPiIpICdpYnVmZmVyLWZp bHRlci1ieS1zaXplLWd0KQorICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIEYiKSAnaWJ1ZmZl ci1maWx0ZXItYnktZmlsZW5hbWUtYmFzZSkKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAu IikgJ2lidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWV4dGVuc2lvbikKKyAgICAoZGVmaW5lLWtl eSBtYXAgKGtiZCAiLyByIikgJ2lidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLXJvb3QpCisgICAg KGRlZmluZS1rZXkgbWFwIChrYmQgIi8gLyIpICdpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1k aXJlY3RvcnkpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gPCIpICdpYnVmZmVyLWZpbHRl ci1ieS1zaXplLWx0KQotICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIHIiKSAnaWJ1ZmZlci1z d2l0Y2gtdG8tc2F2ZWQtZmlsdGVycykKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyA+Iikg J2lidWZmZXItZmlsdGVyLWJ5LXNpemUtZ3QpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g aSIpICdpYnVmZmVyLWZpbHRlci1ieS1tb2RpZmllZCkKKyAgICAoZGVmaW5lLWtleSBtYXAgKGti ZCAiLyBjIikgJ2lidWZmZXItZmlsdGVyLWJ5LWNvbnRlbnQpCisgICAgKGRlZmluZS1rZXkgbWFw IChrYmQgIi8gZSIpICdpYnVmZmVyLWZpbHRlci1ieS1wcmVkaWNhdGUpCisgICAgKGRlZmluZS1r ZXkgbWFwIChrYmQgIi8gVEFCIikgJ2lidWZmZXItZmlsdGVyLWNob3Nlbi1ieS1jb21wbGV0aW9u KQorCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gdyIpICdpYnVmZmVyLXN3aXRjaC10by1z YXZlZC1maWx0ZXJzKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIGEiKSAnaWJ1ZmZlci1h ZGQtc2F2ZWQtZmlsdGVycykKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyB4IikgJ2lidWZm ZXItZGVsZXRlLXNhdmVkLWZpbHRlcnMpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gZCIp ICdpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g cyIpICdpYnVmZmVyLXNhdmUtZmlsdGVycykKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBw IikgJ2lidWZmZXItcG9wLWZpbHRlcikKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyA8dXA+ IikgJ2lidWZmZXItcG9wLWZpbHRlcikKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAhIikg J2lidWZmZXItbmVnYXRlLWZpbHRlcikKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyB0Iikg J2lidWZmZXItZXhjaGFuZ2UtZmlsdGVycykKLSAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBU QUIiKSAnaWJ1ZmZlci1leGNoYW5nZS1maWx0ZXJzKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2Jk ICIvIG8iKSAnaWJ1ZmZlci1vci1maWx0ZXIpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g fCIpICdpYnVmZmVyLW9yLWZpbHRlcikKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAmIikg J2lidWZmZXItYW5kLWZpbHRlcikKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBnIikgJ2li dWZmZXItZmlsdGVycy10by1maWx0ZXItZ3JvdXApCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQg Ii8gUCIpICdpYnVmZmVyLXBvcC1maWx0ZXItZ3JvdXApCisgICAgKGRlZmluZS1rZXkgbWFwIChr YmQgIi8gUy08dXA+IikgJ2lidWZmZXItcG9wLWZpbHRlci1ncm91cCkKICAgICAoZGVmaW5lLWtl eSBtYXAgKGtiZCAiLyBEIikgJ2lidWZmZXItZGVjb21wb3NlLWZpbHRlci1ncm91cCkKLSAgICAo ZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAvIikgJ2lidWZmZXItZmlsdGVyLWRpc2FibGUpCisgICAg KGRlZmluZS1rZXkgbWFwIChrYmQgIi8gREVMIikgJ2lidWZmZXItZmlsdGVyLWRpc2FibGUpCiAK ICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiTS1uIikgJ2lidWZmZXItZm9yd2FyZC1maWx0ZXIt Z3JvdXApCiAgICAgKGRlZmluZS1rZXkgbWFwICJcdCIgJ2lidWZmZXItZm9yd2FyZC1maWx0ZXIt Z3JvdXApCkBAIC02NDcsMjkgKzY1OSw2MiBAQCBkaXJlY3RvcnksIGxpa2UgYGRlZmF1bHQtZGly ZWN0b3J5Jy4iCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRl ciBmaWx0ZXItZGlzYWJsZV0KICAgICAgICcobWVudS1pdGVtICJEaXNhYmxlIGFsbCBmaWx0ZXJp bmciIGlidWZmZXItZmlsdGVyLWRpc2FibGUKICAgICAgICAgOmVuYWJsZSAoYW5kIChmZWF0dXJl cCAnaWJ1Zi1leHQpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKKwogICAgIChkZWZp bmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LW1vZGVdCiAg ICAgICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBhbnkgbWFqb3IgbW9kZS4uLiIgaWJ1ZmZl ci1maWx0ZXItYnktbW9kZSkpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2 aWV3IGZpbHRlciBmaWx0ZXItYnktdXNlZC1tb2RlXQogICAgICAgJyhtZW51LWl0ZW0gIkFkZCBm aWx0ZXIgYnkgYSBtYWpvciBtb2RlIGluIHVzZS4uLiIKICAgICAgICAgaWJ1ZmZlci1maWx0ZXIt YnktdXNlZC1tb2RlKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcg ZmlsdGVyIGZpbHRlci1ieS1kZXJpdmVkLW1vZGVdCi0gICAgICAnKG1lbnUtaXRlbSAiQWRkIGZp bHRlciBieSBkZXJpdmVkIG1vZGUuLi4iCisgICAgICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBi eSBkZXJpdmVkIG1vZGUuLi4iIAogICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXItYnkt ZGVyaXZlZC1tb2RlKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcg ZmlsdGVyIGZpbHRlci1ieS1uYW1lXQogICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkg YnVmZmVyIG5hbWUuLi4iIGlidWZmZXItZmlsdGVyLWJ5LW5hbWUpKQorICAgIChkZWZpbmUta2V5 LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LXN0YXJyZWQtbmFtZV0K KyAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IHN0YXJyZWQgYnVmZmVyIG5hbWUuLi4i CisgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlci1ieS1zdGFycmVkLW5hbWUKKyAgICAg ICAgICAgICAgICAgIDpoZWxwICJMaXN0IGJ1ZmZlcnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCBh IHN0YXIiKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVy IGZpbHRlci1ieS1maWxlbmFtZV0KLSAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IGZp bGVuYW1lLi4uIiBpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZSkpCisgICAgICAnKG1lbnUtaXRl bSAiQWRkIGZpbHRlciBieSBmdWxsIHBhdGhuYW1lLi4uIiBpYnVmZmVyLWZpbHRlci1ieS1maWxl bmFtZQorICAgICAgICAgICAgICAgICAgOmhlbHAKKyAgICAgICAgICAgICAgICAgIChjb25jYXQg IkZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICJsaXN0IGJ1ZmZlciBpZiBhIGdpdmVuIHBhdHRlcm4gbWF0Y2hl cyAnL2EvYi9jLmQnIikpKQorICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmll dyBmaWx0ZXIgZmlsdGVyLWJ5LWZpbGVuYW1lLWJhc2VdCisgICAgICAnKG1lbnUtaXRlbSAiQWRk IGZpbHRlciBieSBmaWxlIGJhc2VuYW1lLi4uIgorICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1m aWx0ZXItYnktZmlsZW5hbWUtYmFzZQorICAgICAgICAgICAgICAgICAgOmhlbHAgKGNvbmNhdCAi Rm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgYnVmZmVyIGlmIGEgZ2l2ZW4gcGF0dGVybiBt YXRjaGVzICdjLmQnIikpKQorICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmll dyBmaWx0ZXIgZmlsdGVyLWJ5LWZpbGVuYW1lLWV4dGVuc2lvbl0KKyAgICAgICcobWVudS1pdGVt ICJBZGQgZmlsdGVyIGJ5IGZpbGVuYW1lIGV4dGVuc2lvbi4uLiIKKyAgICAgICAgICAgICAgICAg IGlidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWV4dGVuc2lvbgorICAgICAgICAgICAgICAgICAg OmhlbHAgKGNvbmNhdCAiRm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2Mu ZCcsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgYnVmZmVyIGlmIGEg Z2l2ZW4gcGF0dGVybiBtYXRjaGVzICdkJyIpKSkKKyAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAg W21lbnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1maWxlbmFtZS1yb290XQorICAgICAgJyht ZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgZmlsZW5hbWUgcm9vdC4uLiIKKyAgICAgICAgICAgICAg ICAgIGlidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLXJvb3QKKyAgICAgICAgICAgICAgICAgIDpo ZWxwIChjb25jYXQgIkZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQn LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGJ1ZmZlciBpZiBhIGdp dmVuIHBhdHRlcm4gbWF0Y2hlcyAnYyciKSkpCisgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFtt ZW51LWJhciB2aWV3IGZpbHRlciBmaWx0ZXItYnktZmlsZW5hbWUtZGlyZWN0b3J5XQorICAgICAg JyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgZmlsZW5hbWUncyBkaXJlY3RvcnkuLi4iCisgICAg ICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1kaXJlY3RvcnkKKyAgICAg ICAgICAgICAgICAgIDpoZWxwCisgICAgICAgICAgICAgICAgICAoY29uY2F0ICJGb3IgYSBidWZm ZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAibGlzdCBidWZmZXIgaWYgYSBnaXZlbiBwYXR0ZXJuIG1hdGNoZXMgJy9hL2InIikp KQogICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVy LWJ5LXNpemUtbHRdCiAgICAgICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBzaXplIGxlc3Mg dGhhbi4uLiIgaWJ1ZmZlci1maWx0ZXItYnktc2l6ZS1sdCkpCiAgICAgKGRlZmluZS1rZXktYWZ0 ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBmaWx0ZXItYnktc2l6ZS1ndF0KICAgICAgICco bWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IHNpemUgZ3JlYXRlciB0aGFuLi4uIgogICAgICAgICBp YnVmZmVyLWZpbHRlci1ieS1zaXplLWd0KSkKKyAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21l bnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1tb2RpZmllZF0KKyAgICAgICcobWVudS1pdGVt ICJBZGQgZmlsdGVyIGJ5IG1vZGlmaWVkIGJ1ZmZlci4uLiIgaWJ1ZmZlci1maWx0ZXItYnktbW9k aWZpZWQKKyAgICAgICAgICAgICAgICAgIDpoZWxwICJMaXN0IGJ1ZmZlcnMgdGhhdCBhcmUgbWFy a2VkIGFzIG1vZGlmaWVkIikpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2 aWV3IGZpbHRlciBmaWx0ZXItYnktY29udGVudF0KICAgICAgICcobWVudS1pdGVtICJBZGQgZmls dGVyIGJ5IGNvbnRlbnQgKHJlZ2V4cCkuLi4iCiAgICAgICAgIGlidWZmZXItZmlsdGVyLWJ5LWNv bnRlbnQpKQogICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIg ZmlsdGVyLWJ5LXByZWRpY2F0ZV0KICAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IExp c3AgcHJlZGljYXRlLi4uIgogICAgICAgICBpYnVmZmVyLWZpbHRlci1ieS1wcmVkaWNhdGUpKQor CiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBwb3AtZmls dGVyXQogICAgICAgJyhtZW51LWl0ZW0gIlJlbW92ZSB0b3AgZmlsdGVyIiBpYnVmZmVyLXBvcC1m aWx0ZXIKICAgICAgICAgOmVuYWJsZSAoYW5kIChmZWF0dXJlcCAnaWJ1Zi1leHQpIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKQEAgLTY4Miw2ICs3MjcsMTIgQEAgZGlyZWN0b3J5LCBs aWtlIGBkZWZhdWx0LWRpcmVjdG9yeScuIgogICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVu dS1iYXIgdmlldyBmaWx0ZXIgbmVnYXRlLWZpbHRlcl0KICAgICAgICcobWVudS1pdGVtICJOZWdh dGUgdG9wIGZpbHRlciIgaWJ1ZmZlci1uZWdhdGUtZmlsdGVyCiAgICAgICAgIDplbmFibGUgKGFu ZCAoZmVhdHVyZXAgJ2lidWYtZXh0KSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpCisg ICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBhbmQtZmlsdGVy XQorICAgICAgJyhtZW51LWl0ZW0gIkFORCB0b3AgdHdvIGZpbHRlcnMiIGlidWZmZXItYW5kLWZp bHRlcgorICAgICAgICA6ZW5hYmxlIChhbmQgKGZlYXR1cmVwICdpYnVmLWV4dCkgaWJ1ZmZlci1m aWx0ZXJpbmctcXVhbGlmaWVycworICAgICAgICAgICAgICAgICAgICAgKGNkciBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgOmhlbHAKKyAgICAgICAgIkNyZWF0ZSBhIG5l dyBmaWx0ZXIgd2hpY2ggaXMgdGhlIGxvZ2ljYWwgQU5EIG9mIHRoZSB0b3AgdHdvIGZpbHRlcnMi KSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGRlY29t cG9zZS1maWx0ZXJdCiAgICAgICAnKG1lbnUtaXRlbSAiRGVjb21wb3NlIHRvcCBmaWx0ZXIiIGli dWZmZXItZGVjb21wb3NlLWZpbHRlcgogICAgICAgICA6ZW5hYmxlIChhbmQgKGZlYXR1cmVwICdp YnVmLWV4dCkKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9pYnVmZmVyLXRlc3RzLmVsIGIvdGVzdC9s aXNwL2lidWZmZXItdGVzdHMuZWwKaW5kZXggZGUyODFjMC4uYWEwNjk5NCAxMDA2NDQKLS0tIGEv dGVzdC9saXNwL2lidWZmZXItdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL2lidWZmZXItdGVzdHMu ZWwKQEAgLTIyLDcgKzIyLDggQEAKIChyZXF1aXJlICdpYnVmZmVyKQogCiAoZXJ0LWRlZnRlc3Qg aWJ1ZmZlci1hdXRvbG9hZCAoKQotICAiVGVzdHMgdG8gc2VlIHdoZXRoZXIgcmVmdGV4LWF1YyBo YXMgYmVlbiBhdXRvbG9hZGVkIgorICAiVGVzdHMgdG8gc2VlIHdoZXRoZXIgaWJ1ZmZlciBoYXMg YmVlbiBhdXRvbG9hZGVkIgorICAoc2tpcC11bmxlc3MgKG5vdCAoZmVhdHVyZXAgJ2lidWYtZXh0 KSkpCiAgIChzaG91bGQKICAgIChmYm91bmRwICdpYnVmZmVyLW1hcmstdW5zYXZlZC1idWZmZXJz KSkKICAgKHNob3VsZApAQCAtMzAsNSArMzEsNTY3IEBACiAgICAgKHN5bWJvbC1mdW5jdGlvbgog ICAgICAnaWJ1ZmZlci1tYXJrLXVuc2F2ZWQtYnVmZmVycykpKSkKIAorOzsgVGVzdCBGaWx0ZXIg SW5jbHVzaW9uCisobGV0KiAodGVzdC1idWZmZXItbGlzdCAgOyBhY2N1bXVsYXRlZCBidWZmZXJz IHRvIGNsZWFuIHVwCisgICAgICAgOzsgVXRpbGl0eSBmdW5jdGlvbnMgd2l0aG91dCBwb2xsdXRp bmcgdGhlIGVudmlyb25tZW50CisgICAgICAgKHNldC1idWZmZXItbW9kZQorICAgICAgICAobGFt YmRhIChidWZmZXIgbW9kZSkKKyAgICAgICAgICAiU2V0IEJVRkZFUidzIG1ham9yIG1vZGUgdG8g TU9ERSwgYSBtb2RlIGZ1bmN0aW9uLCBvciBmdW5kYW1lbnRhbC4iCisgICAgICAgICAgKHdpdGgt Y3VycmVudC1idWZmZXIgYnVmZmVyCisgICAgICAgICAgICAoZnVuY2FsbCAob3IgbW9kZSAjJ2Z1 bmRhbWVudGFsLW1vZGUpKSkpKQorICAgICAgIChzZXQtYnVmZmVyLWNvbnRlbnRzCisgICAgICAg IChsYW1iZGEgKGJ1ZmZlciBzaXplIGluY2x1ZGUtY29udGVudCkKKyAgICAgICAgICAiQWRkIGV4 YWN0bHkgU0laRSBieXRlcyB0byBCVUZGRVIsIGluY2x1ZGluZyBJTkNMVURFLUNPTlRFTlQuIgor ICAgICAgICAgICh3aGVuIChvciBzaXplIGluY2x1ZGUtY29udGVudCkKKyAgICAgICAgICAgIChs ZXQqICgodW5pdCAiXG4iKQorICAgICAgICAgICAgICAgICAgIChjaHVuayAiY2NjY2NjY2NjY2Nj Y2NjY2NjY2NjY2NjY2NjY2NjY1xuIikKKyAgICAgICAgICAgICAgICAgICAoY2h1bmstc2l6ZSAo bGVuZ3RoIGNodW5rKSkKKyAgICAgICAgICAgICAgICAgICAoc2l6ZSAoaWYgKGFuZCBzaXplIGlu Y2x1ZGUtY29udGVudCAoc3RyaW5ncCBpbmNsdWRlLWNvbnRlbnQpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoLSBzaXplIChsZW5ndGggaW5jbHVkZS1jb250ZW50KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemUpKSkKKyAgICAgICAgICAgICAgKHVubGVzcyAob3IgKG51 bGwgc2l6ZSkgKD4gc2l6ZSAwKSkKKyAgICAgICAgICAgICAgICAoZXJyb3IgInNpemUgYXJndW1l bnQgbXVzdCBiZSBuaWwgb3IgcG9zaXRpdmUiKSkKKyAgICAgICAgICAgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgYnVmZmVyCisgICAgICAgICAgICAgICAgKHdoZW4gaW5jbHVkZS1jb250ZW50Cisg ICAgICAgICAgICAgICAgICAoaW5zZXJ0IGluY2x1ZGUtY29udGVudCkpCisgICAgICAgICAgICAg ICAgKHdoZW4gc2l6ZQorICAgICAgICAgICAgICAgICAgKGRvdGltZXMgKF8gKGZsb29yIHNpemUg Y2h1bmstc2l6ZSkpCisgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgY2h1bmspKQorICAgICAg ICAgICAgICAgICAgKGRvdGltZXMgKF8gKG1vZCBzaXplIGNodW5rLXNpemUpKQorICAgICAgICAg ICAgICAgICAgICAoaW5zZXJ0IHVuaXQpKSkKKyAgICAgICAgICAgICAgICA7OyBwcmV2ZW50IHF1 ZXJ5IG9uIGNsZWFudXAKKyAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5p bCkpKSkpKQorICAgICAgIChjcmVhdGUtZmlsZS1idWZmZXIKKyAgICAgICAgKGxhbWJkYSAocHJl Zml4ICZyZXN0IGFyZ3MtcGxpc3QpCisgICAgICAgICAgIkNyZWF0ZSBhIGZpbGUgYW5kIGJ1ZmZl ciB3aXRoIGRlc2lnbmF0ZWQgcHJvcGVydGllcy4KKyAgICAgICAgUFJFRklYIGlzIGEgc3RyaW5n IGdpdmluZyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuYW1lLCBhbmQgQVJHUy1QTElTVAorICAgICAg ICBpcyBhIHNlcmllcyBvZiBrZXl3b3JkLXZhbHVlIHBhaXJzLCB3aXRoIGFsbG93ZWQga2V5d29y ZHMKKyAgICAgICAgOnN1ZmZpeCBTVFJJTkcsIDpzaXplIE5VTUJFUiwgOm1vZGUgTU9ERS1GVU5D LCA6aW5jbHVkZS1jb250ZW50IFNUUklORy4gIAorICAgICAgICBSZXR1cm5zIHRoZSBjcmVhdGVk IGJ1ZmZlci4iCisgICAgICAgICAgKGxldCogKChzdWZmaXggIChwbGlzdC1nZXQgYXJncy1wbGlz dCA6c3VmZml4KSkKKyAgICAgICAgICAgICAgICAgKHNpemUgICAgKHBsaXN0LWdldCBhcmdzLXBs aXN0IDpzaXplKSkKKyAgICAgICAgICAgICAgICAgKGluY2x1ZGUgKHBsaXN0LWdldCBhcmdzLXBs aXN0IDppbmNsdWRlLWNvbnRlbnQpKQorICAgICAgICAgICAgICAgICAobW9kZSAgICAocGxpc3Qt Z2V0IGFyZ3MtcGxpc3QgOm1vZGUpKQorICAgICAgICAgICAgICAgICAoZmlsZSAgICAobWFrZS10 ZW1wLWZpbGUgcHJlZml4IG5pbCBzdWZmaXgpKQorICAgICAgICAgICAgICAgICAoYnVmICAgICAo ZmluZC1maWxlLW5vc2VsZWN0IGZpbGUgdCkpKQorICAgICAgICAgICAgKHB1c2ggYnVmIHRlc3Qt YnVmZmVyLWxpc3QpIDsgcmVjb3JkIGZvciBjbGVhbnVwCisgICAgICAgICAgICAoZnVuY2FsbCBz ZXQtYnVmZmVyLW1vZGUgYnVmIG1vZGUpCisgICAgICAgICAgICAoZnVuY2FsbCBzZXQtYnVmZmVy LWNvbnRlbnRzIGJ1ZiBzaXplIGluY2x1ZGUpCisgICAgICAgICAgICBidWYpKSkKKyAgICAgICAo Y3JlYXRlLW5vbi1maWxlLWJ1ZmZlcgorICAgICAgICAobGFtYmRhIChwcmVmaXggJnJlc3QgYXJn cy1wbGlzdCkKKyAgICAgICAgICAiQ3JlYXRlIGEgZmlsZSBhbmQgYnVmZmVyIHdpdGggZGVzaWdu YXRlZCBwcm9wZXJ0aWVzLgorICAgICAgICBQUkVGSVggaXMgYSBzdHJpbmcgZ2l2aW5nIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIG5hbWUsIGFuZCBBUkdTLVBMSVNUCisgICAgICAgIGlzIGEgc2VyaWVz IG9mIGtleXdvcmQtdmFsdWUgcGFpcnMsIHdpdGggYWxsb3dlZCBrZXl3b3JkcworICAgICAgICA6 c2l6ZSBOVU1CRVIsIDptb2RlIE1PREUtRlVOQywgOmluY2x1ZGUtY29udGVudCBTVFJJTkcuCisg ICAgICAgIFJldHVybnMgdGhlIGNyZWF0ZWQgYnVmZmVyLiIKKyAgICAgICAgICAobGV0KiAoKHNp emUgICAgKHBsaXN0LWdldCBhcmdzLXBsaXN0IDpzaXplKSkKKyAgICAgICAgICAgICAgICAgKGlu Y2x1ZGUgKHBsaXN0LWdldCBhcmdzLXBsaXN0IDppbmNsdWRlLWNvbnRlbnQpKQorICAgICAgICAg ICAgICAgICAobW9kZSAgICAocGxpc3QtZ2V0IGFyZ3MtcGxpc3QgOm1vZGUpKQorICAgICAgICAg ICAgICAgICAoYnVmICAgICAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciBwcmVmaXgpKSkKKyAgICAgICAg ICAgIChwdXNoIGJ1ZiB0ZXN0LWJ1ZmZlci1saXN0KSA7IHJlY29yZCBmb3IgY2xlYW51cAorICAg ICAgICAgICAgKGZ1bmNhbGwgc2V0LWJ1ZmZlci1tb2RlIGJ1ZiBtb2RlKQorICAgICAgICAgICAg KGZ1bmNhbGwgc2V0LWJ1ZmZlci1jb250ZW50cyBidWYgc2l6ZSBpbmNsdWRlKQorICAgICAgICAg ICAgYnVmKSkpCisgICAgICAgKGNsZWFuLXVwCisgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAg ICAiUmVzdG9yZSBhbGwgZW1hY3Mgc3RhdGUgbW9kaWZpZWQgZHVyaW5nIHRoZSB0ZXN0cyIKKyAg ICAgICAgICAod2hpbGUgdGVzdC1idWZmZXItbGlzdCAgICAgICA7IGNyZWF0ZWQgdGVtcG9yYXJ5 IGJ1ZmZlcnMKKyAgICAgICAgICAgIChsZXQgKChidWYgKHBvcCB0ZXN0LWJ1ZmZlci1saXN0KSkp CisgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoYnVyeS1idWZmZXIpKSA7 IGVuc3VyZSBub3Qgc2VsZWN0ZWQKKyAgICAgICAgICAgICAgKGtpbGwtYnVmZmVyIGJ1ZikpKSkp KQorICA7OyBUZXN0cworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTEg KCkKKyAgICAiVGVzdHMgaW5jbHVzaW9uIHVzaW5nIGJhc2ljIGZpbHRlciBjb21iaW5hdG9ycyB3 aXRoIGEgc2luZ2xlIGJ1ZmZlci4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1l eHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0ICgoYnVmCisgICAgICAgICAg ICAgICAoZnVuY2FsbCBjcmVhdGUtZmlsZS1idWZmZXIgImlidWYtdGVzdC0xIiA6c2l6ZSAxMDAK KyAgICAgICAgICAgICAgICAgICAgICAgIDppbmNsdWRlLWNvbnRlbnQgIk9uZSByaW5nIHRvIHJ1 bGUgdGhlbSBhbGxcbiIpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWlu LWZpbHRlcnMtcCBidWYgJygoc2l6ZS1ndCAuIDk5KSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1ZiAnKChzaXplLWx0IC4gMTAxKSkpKQorICAg ICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAg ICAgICAgICAgYnVmICcoKG1vZGUgLiBmdW5kYW1lbnRhbC1tb2RlKSkpKQorICAgICAgICAgIChz aG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAg YnVmICcoKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikpKSkKKyAgICAgICAgICAo c2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAg IGJ1ZiAnKChhbmQgKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikpKSkpCisgICAg ICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAg ICAgICAgICBidWYgJygoYW5kIChhbmQgKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxs IikpKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1w CisgICAgICAgICAgICAgICAgICAgYnVmICcoKGFuZCAoYW5kIChhbmQgKGNvbnRlbnQgLiAicmlu ZyB0byBydWxlIHRoZW0gYWxsIikpKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWlu Y2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChvciAoY29udGVu dCAuICJyaW5nIHRvIHJ1bGUgdGhlbSBhbGwiKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChub3Qg KG5vdCAoY29udGVudCAuICJyaW5nIHRvIHJ1bGUgdGhlbSBhbGwiKSkpKSkpCisgICAgICAgICAg KHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAg ICBidWYgJygoYW5kIChzaXplLWd0IC4gOTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY29udGVudCAuICJyaW5nIHRvIHJ1bGUgdGhlbSBhbGwiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1vZGUgLiBmdW5kYW1lbnRhbC1tb2RlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZpbGVuYW1lLWJhc2UgLiAiXFxgaWJ1Zi10ZXN0LTEiKSkpKSkKKyAgICAg ICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAg ICAgICAgIGJ1ZiAnKChub3QgKG9yIChub3QgKHNpemUtZ3QgLiA5OSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCAoY29udGVudCAuICJyaW5nIHRvIHJ1bGUgdGhlbSBh bGwiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChtb2RlIC4gZnVu ZGFtZW50YWwtbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAo ZmlsZW5hbWUtYmFzZSAuICJcXGBpYnVmLXRlc3QtMSIpKSkpKSkpCisgICAgICAgICAgKHNob3Vs ZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYg JygoYW5kIChvciAoc2l6ZS1ndCAuIDk5KSAoc2l6ZS1sdCAuIDEwKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChhbmQgKGNvbnRlbnQgLiAicmluZy4qYWxsIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAicnVsZSIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjb250ZW50IC4gInRoZW0gYWxsIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAiT25lIikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobm90IChtb2RlIC4gdGV4dC1tb2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmaWxlbmFtZS1iYXNlIC4gIlxcYGlidWYtdGVzdC0xIikpKSkpKQor ICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKKyAgCisgIChlcnQtZGVmdGVzdCBpYnVmZmVyLWZp bHRlci1pbmNsdXNpb24tMiAoKQorICAgICJUZXN0cyBpbmNsdXNpb24gb2YgYmFzaWMgZmlsdGVy cyBpbiBjb21iaW5hdGlvbiBvbiBhIHNpbmdsZSBidWZmZXIuIgorICAgIChza2lwLXVubGVzcyAo ZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxldCAo KGJ1ZgorICAgICAgICAgICAgICAgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRl c3QtMiIgOnNpemUgMjAwCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZSAjJ3RleHQtbW9k ZQorICAgICAgICAgICAgICAgICAgICAgICAgOmluY2x1ZGUtY29udGVudCAiYW5kIGluIHRoZSBk YXJrbmVzcyBmaW5kIHRoZW1cbiIpKSkKKyAgICAgICAgICAobWVzc2FnZSAiLS0+ICVzIiBidWYp CisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVmICco KHNpemUtZ3QgLiAxOTkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1p bi1maWx0ZXJzLXAgYnVmICcoKHNpemUtbHQgLiAyMDEpKSkpCisgICAgICAgICAgKHNob3VsZCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVmICcoKG5vdCBzaXplLWd0IC4gMjAwKSkp KQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1ZiAn KChub3QgKHNpemUtZ3QgLiAyMDApKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5j bHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKGFuZCAoc2l6ZS1n dCAuIDE5OSkgKHNpemUtbHQgLiAyMDEpKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXIt aW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG9yIChzaXpl LWd0IC4gMTk5KSAoc2l6ZS1ndCAuIDIwMSkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZl ci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygob3IgKHNp emUtZ3QgLiAyMDEpIChzaXplLWd0IC4gMTk5KSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChzaXpl LWd0IC4gMTk5KSAobW9kZSAuIHRleHQtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAo Y29udGVudCAuICJkYXJrbmVzcyBmaW5kIHRoZW0iKSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKGFu ZCAoc2l6ZS1ndCAuIDE5OSkgKG1vZGUgLiB0ZXh0LW1vZGUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29udGVudCAuICJkYXJrbmVzcyBmaW5kIHRoZW0iKSkpKSkKKyAgICAgICAg ICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAg ICAgIGJ1ZiAnKChub3QgKG9yIChub3QgKHNpemUtZ3QgLiAxOTkpKSAobm90IChtb2RlIC4gdGV4 dC1tb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChjb250ZW50 IC4gImRhcmtuZXNzIGZpbmQgdGhlbSIpKSkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZl ci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygob3IgKHNp emUtZ3QgLiAyMDApIChjb250ZW50IC4gImRhcmtuZXNzIGZpbmQgdGhlbSIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUgLiBlbWFjcy1saXNwLW1vZGUpKSkpKQor ICAgICAgICAgIChzaG91bGQtbm90IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAg ICAgICAgICAgICAgICAgICAgICBidWYgJygob3IgKHNpemUtZ3QgLiAyMDApIChjb250ZW50IC4g InJ1bGUgdGhlbSBhbGwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2 ZWQtbW9kZSAuIGVtYWNzLWxpc3AtbW9kZSkpKSkpCisgICAgICAgICAgKG1lc3NhZ2UgIi0tPiAl cyIgYnVmKSkKKyAgICAgIChmdW5jYWxsIGNsZWFuLXVwKSkpCisKKyAgKGVydC1kZWZ0ZXN0IGli dWZmZXItZmlsdGVyLWluY2x1c2lvbi0zICgpCisgICAgIlRlc3RzIGluY2x1c2lvbiB3aXRoIGZp bGVuYW1lIGZpbHRlcnMgb24gc3BlY2lmaWVkIGJ1ZmZlcnMuIgorICAgIChza2lwLXVubGVzcyAo ZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxldCog KChidWZBCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVm LXRlc3QtMy5hIiA6c2l6ZSA1MAorICAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMndGV4 dC1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgOmluY2x1ZGUtY29udGVudCAiLi4uYnV0 IGEgbXVsdGl0dWRlIG9mIGRyb3BzP1xuIikpCisgICAgICAgICAgICAgICAoYnVmQgorICAgICAg ICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1ub24tZmlsZS1idWZmZXIgImlidWYtdGVzdC0zLmIi IDpzaXplIDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUgIyd0ZXh0LW1vZGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICA6aW5jbHVkZS1jb250ZW50ICIuLi5idXQgYSBtdWx0aXR1 ZGUgb2YgZHJvcHM/XG4iKSkKKyAgICAgICAgICAgICAgIChkaXJBICh3aXRoLWN1cnJlbnQtYnVm ZmVyIGJ1ZkEgZGVmYXVsdC1kaXJlY3RvcnkpKQorICAgICAgICAgICAgICAgKGRpckIgKHdpdGgt Y3VycmVudC1idWZmZXIgYnVmQiBkZWZhdWx0LWRpcmVjdG9yeSkpKQorICAgICAgICAgIChzaG91 bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVm QSAnKChmaWxlbmFtZS1iYXNlIC4gImlidWYtdGVzdC0zIikpKSkKKyAgICAgICAgICAoc2hvdWxk IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZkEg JygoZmlsZW5hbWUtcm9vdCAuICJpYnVmLXRlc3QtMyIpKSkpCisgICAgICAgICAgKHNob3VsZCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWZBICco KGZpbGVuYW1lLWJhc2UgLiAidGVzdC0zXFwuYSIpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1 ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWZBICcoKGZp bGVuYW1lLWV4dGVuc2lvbiAuICJhIikpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWlu Y2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZkEgKGxpc3QgKGNvbnMg J2ZpbGVuYW1lLWRpcmVjdG9yeSBkaXJBKSkpKQorICAgICAgICAgIChzaG91bGQtbm90IChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgICAgICBidWZCICco KGZpbGVuYW1lLWJhc2UgLiAiaWJ1Zi10ZXN0LTMiKSkpKQorICAgICAgICAgIChzaG91bGQtbm90 IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgICAgICBi dWZCICcoKGZpbGVuYW1lLXJvb3QgLiAiaWJ1Zi10ZXN0LTMiKSkpKQorICAgICAgICAgIChzaG91 bGQtbm90IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAg ICAgICBidWZCICcoKGZpbGVuYW1lLWV4dGVuc2lvbiAuICJiIikpKSkKKyAgICAgICAgICAoc2hv dWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAg ICAgICAgYnVmQiAobGlzdCAoY29ucyAnZmlsZW5hbWUtZGlyZWN0b3J5IGRpckIpKSkpCisgICAg ICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAg ICAgICAgICBidWZBICcoKG5hbWUgLiAiaWJ1Zi10ZXN0LTMiKSkpKQorICAgICAgICAgIChzaG91 bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVm QiAnKChuYW1lIC4gImlidWYtdGVzdC0zIikpKSkpCisgICAgICAoZnVuY2FsbCBjbGVhbi11cCkp KQorCisgIChlcnQtZGVmdGVzdCBpYnVmZmVyLWZpbHRlci1pbmNsdXNpb24tNCAoKQorICAgICJU ZXN0cyBpbmNsdXNpb24gd2l0aCB2YXJpb3VzIGZpbHRlcnMgb24gYSBzaW5nbGUgYnVmZmVyLiIK KyAgICAoc2tpcC11bmxlc3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisgICAgKHVud2luZC1wcm90 ZWN0CisgICAgICAgIChsZXQgKChidWYKKyAgICAgICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1m aWxlLWJ1ZmZlciAiaWJ1Zi10ZXN0LTQiCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZSAj J2VtYWNzLWxpc3AtbW9kZSA6c3VmZml4ICIuZWwiCisgICAgICAgICAgICAgICAgICAgICAgICA6 aW5jbHVkZS1jb250ZW50ICIobWVzc2FnZSBcIi0tJXMtLVwiICdlbWFjcy1yb2NrcylcbiIpKSkK KyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAg ICAgICAgICAgICAgIGJ1ZiAnKChmaWxlbmFtZS1leHRlbnNpb24gLiAiZWwiKSkpKQorICAgICAg ICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAg ICAgICAgYnVmICcoKGRlcml2ZWQtbW9kZSAuIHByb2ctbW9kZSkpKSkKKyAgICAgICAgICAoc2hv dWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1 ZiAnKCh1c2VkLW1vZGUgLiBlbWFjcy1saXNwLW1vZGUpKSkpCisgICAgICAgICAgKHNob3VsZCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygo bW9kZSAuIGVtYWNzLWxpc3AtbW9kZSkpKSkKKyAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZl ciBidWYgKHNldC1idWZmZXItbW9kaWZpZWQtcCB0KSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBidWYgJygobW9kaWZpZWQpKSkpCisgICAgICAgICAg KHdpdGgtY3VycmVudC1idWZmZXIgYnVmIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkKKyAg ICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBidWYgJygobm90 IG1vZGlmaWVkKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmls dGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKGFuZCAoZmlsZW5hbWUtZXh0ZW5zaW9u IC4gImVsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUgLiBw cm9nLW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IG1vZGlmaWVkKSkp KSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAg ICAgICAgICAgICAgICAgIGJ1ZiAnKChvciAoZmlsZW5hbWUtZXh0ZW5zaW9uIC4gInRleCIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUgLiBwcm9nLW1vZGUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RpZmllZCkpKSkpCisgICAgICAgICAgKHNo b3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBi dWYgJygoZmlsZW5hbWUtZXh0ZW5zaW9uIC4gImVsIikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAoZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgIChu b3QgbW9kaWZpZWQpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKKworICAoZXJ0LWRl ZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTUgKCkKKyAgICAiVGVzdHMgaW5jbHVzaW9u IHdpdGggdmFyaW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xlIGJ1ZmZlci4iCisgICAgKHNraXAtdW5s ZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAo bGV0ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUtYnVmZmVy ICJpYnVmLXRlc3QtNS5lbCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMnZW1hY3Mt bGlzcC1tb2RlIAorICAgICAgICAgICAgICAgICAgICAgICAgOmluY2x1ZGUtY29udGVudAorICAg ICAgICAgICAgICAgICAgICAgICAgIihtZXNzYWdlIFwiLS0lcy0tXCIgXCJJdCByZWFsbHkgZG9l cyFcIilcbiIpKSkKKyAgICAgICAgICAoc2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1m aWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmICcoKGZpbGVuYW1lLWV4dGVuc2lv biAuICJlbCIpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0 ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygoc2l6ZS1ndCAuIDE4KSkpKQorICAgICAg ICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAg ICAgICAgYnVmICcoKHByZWRpY2F0ZSAuIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoPiAoLSAocG9pbnQtbWF4KSAocG9pbnQtbWluKSkgMTgpKSkp KSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAg ICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKG1vZGUgLiBlbWFjcy1saXNwLW1vZGUpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHN0YXJyZWQtbmFtZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZS1ndCAuIDE4KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChhbmQgKG5vdCAoc2l6ZS1ndCAuIDEwMCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb250ZW50IC4gIltJaV10ICAqcmVhbGx5IGRvZXMhIikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChuYW1lIC4gInRlc3QtNSIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChmaWxlbmFtZSAuICJ0 ZXN0LTUiKSkpKSkpKSkpCisgICAgICAoZnVuY2FsbCBjbGVhbi11cCkpKQorCisgIChlcnQtZGVm dGVzdCBpYnVmZmVyLWZpbHRlci1pbmNsdXNpb24tNiAoKQorICAgICJUZXN0cyBpbmNsdXNpb24g dXNpbmcgc2F2ZWQgZmlsdGVycyBhbmQgRGVNb3JnYW4ncyBsYXdzLiIKKyAgICAoc2tpcC11bmxl c3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgIChs ZXQgKChidWYKKyAgICAgICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1ub24tZmlsZS1idWZmZXIg IippYnVmLXRlc3QtNioiIDpzaXplIDY1CisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZSAj J3RleHQtbW9kZSkpCisgICAgICAgICAgICAgIChidWYyCisgICAgICAgICAgICAgICAoZnVuY2Fs bCBjcmVhdGUtZmlsZS1idWZmZXIgImlidWYtdGVzdC02YSIgOnN1ZmZpeCAiLmh0bWwiCisgICAg ICAgICAgICAgICAgICAgICAgICA6bW9kZSAjJ2h0bWwtbW9kZQorICAgICAgICAgICAgICAgICAg ICAgICAgOmluY2x1ZGUtY29udGVudAorICAgICAgICAgICAgICAgICAgICAgICAgIjxIVE1MPjxC T0RZPjxIMT5IZWxsbywgV29ybGQhPC9IMT48L0JPRFk+PC9IVE1MPiIpKSkKKyAgICAgICAgICAo c2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBidWYgJygoc3RhcnJlZC1uYW1l KSkpKQorICAgICAgICAgIChzaG91bGQtbm90IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMt cAorICAgICAgICAgICAgICAgICAgICAgICBidWYgJygoc2F2ZWQgLiAidGV4dCBkb2N1bWVudCIp KSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVm MiAnKChzYXZlZCAuICJ3ZWIiKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVk ZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmMiAnKChub3QgKGFuZCAobm90 IChkZXJpdmVkLW1vZGUgLiBzZ21sLW1vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5vdCAoZGVyaXZlZC1tb2RlIC4gY3NzLW1vZGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCAobW9kZSAgICAgICAgIC4gamF2YXNjcmlwdC1tb2Rl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1vZGUgICAgICAg ICAuIGpzMi1tb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3Qg KG1vZGUgICAgICAgICAuIHNjc3MtbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobm90IChkZXJpdmVkLW1vZGUgLiBoYW1sLW1vZGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCAobW9kZSAgICAgICAgIC4gc2Fzcy1tb2RlKSkpKSkp KQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAg ICAgICAgICAgICAgICAgYnVmICcoKGFuZCAoc3RhcnJlZC1uYW1lKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG9yIChzaXplLWd0IC4gNTApIChmaWxlbmFtZSAuICJmb28iKSkpKSkp CisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAg ICAgICAgICAgICAgICBidWYgJygobm90IChvciAobm90IHN0YXJyZWQtbmFtZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChzaXplLWx0IC4gNTEpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChmaWxlbmFtZSAuICJmb28iKSkpKSkp KSkpCisgICAgICAoZnVuY2FsbCBjbGVhbi11cCkpKQorCisgIChlcnQtZGVmdGVzdCBpYnVmZmVy LWZpbHRlci1pbmNsdXNpb24tNyAoKQorICAgICJUZXN0cyBpbmNsdXNpb24gd2l0aCB2YXJpb3Vz IGZpbHRlcnMgb24gYSBzaW5nbGUgYnVmZmVyLiIKKyAgICAoc2tpcC11bmxlc3MgKGZlYXR1cmVw ICdpYnVmLWV4dCkpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgIChsZXQgKChidWYKKyAg ICAgICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1ub24tZmlsZS1idWZmZXIgImlidWYtdGVzdC03 IgorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUgIydhcnRpc3QtbW9kZSkpKQorICAgICAg ICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAg ICAgICAgYnVmICcoKG5vdCAoc3RhcnJlZC1uYW1lKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChp YnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChu b3Qgc3RhcnJlZC1uYW1lKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQt aW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG5vdCAobm90IChub3Qgc3Rh cnJlZC1uYW1lKSkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1m aWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygobm90IChtb2RpZmllZCkpKSkpCisg ICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAg ICAgICAgICAgICBidWYgJygobm90IG1vZGlmaWVkKSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG5v dCAobm90IChub3QgbW9kaWZpZWQpKSkpKSkpCisgICAgICAoZnVuY2FsbCBjbGVhbi11cCkpKQor CisgIChlcnQtZGVmdGVzdCBpYnVmZmVyLWZpbHRlci1pbmNsdXNpb24tOCAoKQorICAgICJUZXN0 cyBpbmNsdXNpb24gd2l0aCB2YXJpb3VzIGZpbHRlcnMgb24gYSBzaW5nbGUgYnVmZmVyLiIKKyAg ICAoc2tpcC11bmxlc3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisgICAgKHVud2luZC1wcm90ZWN0 CisgICAgICAgIChsZXQgKChidWYKKyAgICAgICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1ub24t ZmlsZS1idWZmZXIgImlidWYtdGVzdC04IgorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUg IydhcnRpc3QtbW9kZSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4t ZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKGFuZCAobm90IChzdGFycmVkLW5h bWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgLiAidGVzdC04IikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHNpemUtZ3QgLiAxMDApKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUgLiBwaWN0dXJlLW1vZGUpKSkpKSkKKyAgICAg IChmdW5jYWxsIGNsZWFuLXVwKSkpKQorCis7OyBUZXN0IEZpbHRlciBDb21iaW5hdGlvbiBhbmQg RGVjb21wb3NpdGlvbgorKGxldCogKGlidWZmZXItdG8ta2lsbCAgICAgICA7IGlmIG5vbi1uaWws IGtpbGwgdGhpcyBidWZmZXIgYXQgY2xlYW51cAorICAgICAgIChpYnVmZmVyLWFscmVhZHkgJ2No ZWNrKSA7IGV4aXN0aW5nIGlidWZmZXIgYnVmZmVyIHRvIHVzZSBidXQgbm90IGtpbGwKKyAgICAg ICA7OyBVdGlsaXR5IGZ1bmN0aW9ucyB3aXRob3V0IHBvbGx1dGluZyB0aGUgZW52aXJvbm1lbnQK KyAgICAgICAoZ2V0LXRlc3QtaWJ1ZmZlcgorICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAg IlJldHVybnMgYSB0ZXN0IGlidWZmZXItbW9kZSBidWZmZXIsIGNyZWF0aW5nIG9uZSBpZiBuZWNl c3NhcnkuCisgICAgICAgIElmIGEgbmV3IGJ1ZmZlciBpcyBjcmVhdGVkLCBpdCBpcyBuYW1lZCAg XCIqVGVzdC1JYnVmZmVyKlwiIGFuZCBpcworICAgICAgICBzYXZlZCB0byBgaWJ1ZmZlci10by1r aWxsJyBmb3IgbGF0ZXIgY2xlYW51cC4iCisgICAgICAgICAgKHdoZW4gKGVxIGlidWZmZXItYWxy ZWFkeSAnY2hlY2spCisgICAgICAgICAgICAoc2V0cSBpYnVmZmVyLWFscmVhZHkKKyAgICAgICAg ICAgICAgICAgIChjYXRjaCAnZm91bmQtYnVmCisgICAgICAgICAgICAgICAgICAgIChkb2xpc3Qg KGJ1ZiAoYnVmZmVyLWxpc3QpIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAod2hlbiAod2l0 aC1jdXJyZW50LWJ1ZmZlciBidWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJp dmVkLW1vZGUtcCAnaWJ1ZmZlci1tb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICh0aHJv dyAnZm91bmQtYnVmIGJ1ZikpKSkpKQorICAgICAgICAgIChvciBpYnVmZmVyLWFscmVhZHkKKyAg ICAgICAgICAgICAgaWJ1ZmZlci10by1raWxsCisgICAgICAgICAgICAgIChsZXQgKCh0ZXN0LWli dWYtbmFtZSAiKlRlc3QtSWJ1ZmZlcioiKSkKKyAgICAgICAgICAgICAgICAoaWJ1ZmZlciBuaWwg dGVzdC1pYnVmLW5hbWUgbmlsIHQpCisgICAgICAgICAgICAgICAgKHNldHEgaWJ1ZmZlci10by1r aWxsIChnZXQtYnVmZmVyIHRlc3QtaWJ1Zi1uYW1lKSkpKSkpCisgICAgICAgKGNsZWFuLXVwCisg ICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAiUmVzdG9yZSBhbGwgZW1hY3Mgc3RhdGUgbW9k aWZpZWQgZHVyaW5nIHRoZSB0ZXN0cyIKKyAgICAgICAgICAod2hlbiBpYnVmZmVyLXRvLWtpbGwg ICAgICAgICA7IGNyZWF0ZWQgaWJ1ZmZlciAKKyAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyIGlidWZmZXItdG8ta2lsbAorICAgICAgICAgICAgICAoc2V0LWJ1ZmZlci1tb2RpZmllZC1w IG5pbCkKKyAgICAgICAgICAgICAgKGJ1cnktYnVmZmVyKSkKKyAgICAgICAgICAgIChraWxsLWJ1 ZmZlciBpYnVmZmVyLXRvLWtpbGwpCisgICAgICAgICAgICAoc2V0cSBpYnVmZmVyLXRvLWtpbGwg bmlsKSkKKyAgICAgICAgICAod2hlbiAoYW5kIGlidWZmZXItYWxyZWFkeSAobm90IChlcSBpYnVm ZmVyLWFscmVhZHkgJ2NoZWNrKSkpCisgICAgICAgICAgICA7OyByZXN0b3JlIGV4aXN0aW5nIGli dWZmZXIgc3RhdGUKKyAgICAgICAgICAgIChpYnVmZmVyLXVwZGF0ZSBuaWwgdCkpKSkpCisgIDs7 IFRlc3RzCisgIChlcnQtZGVmdGVzdCBpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIgKCkKKyAgICAi VGVzdHMgYGlidWZmZXItZGVjb21wb3NlLWZpbHRlcicgZm9yIGFuZCwgb3IsIG5vdCwgYW5kIHNh dmVkLiIKKyAgICAoc2tpcC11bmxlc3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisgICAgKHVud2lu ZC1wcm90ZWN0CisgICAgICAgIChsZXQgKChpYnVmIChmdW5jYWxsIGdldC10ZXN0LWlidWZmZXIp KSkKKyAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBpYnVmCisgICAgICAgICAgICAobGV0 ICgoaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyBuaWwpCisgICAgICAgICAgICAgICAgICAo aWJ1ZmZlci1maWx0ZXItZ3JvdXBzIG5pbCkKKyAgICAgICAgICAgICAgICAgIChmaWx0ZXJzICco KHNpemUtZ3QgLiAxMDApIChub3QgKHN0YXJyZWQtbmFtZSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChuYW1lIC4gImZvbyIpKSkpCisgICAgICAgICAgICAgIChwcm9nbgorICAgICAg ICAgICAgICAgIChwdXNoIChjb25zICdvciBmaWx0ZXJzKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzKQorICAgICAgICAgICAgICAgIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpCisgICAg ICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgZmlsdGVycyBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzKSkKKyAgICAgICAgICAgICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzIG5pbCkpCisgICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgIChwdXNoIChj b25zICdhbmQgZmlsdGVycykgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAg ICAgICAgICAoaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVyKQorICAgICAgICAgICAgICAgIChzaG91 bGQgKGVxdWFsIGZpbHRlcnMgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAg ICAgICAgICAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyBuaWwpKQorICAgICAg ICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAocHVzaCAobGlzdCAnbm90IChjYXIgZmls dGVycykpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgKGli dWZmZXItZGVjb21wb3NlLWZpbHRlcikKKyAgICAgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAo bGlzdCAoY2FyIGZpbHRlcnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZm ZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAgIChzZXRxIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMgbmlsKSkKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgICAgKHB1c2ggKGNvbnMgJ25vdCAoY2FyIGZpbHRlcnMpKSBpYnVmZmVyLWZpbHRlcmlu Zy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIp CisgICAgICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgKGxpc3QgKGNhciBmaWx0ZXJzKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJz KSkKKyAgICAgICAgICAgICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5p bCkpCisgICAgICAgICAgICAgIChsZXQgKChnbnVzIChhc3NvYyAiZ251cyIgaWJ1ZmZlci1zYXZl ZC1maWx0ZXJzKSkpCisgICAgICAgICAgICAgICAgKHB1c2ggJyhzYXZlZCAuICJnbnVzIikgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoaWJ1ZmZlci1kZWNv bXBvc2UtZmlsdGVyKQorICAgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIChjZHIgZ251cykg aWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgKGlidWZmZXIt ZGVjb21wb3NlLWZpbHRlcikKKyAgICAgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAoY2RyIChj YWRyIGdudXMpKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAg ICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkpCisgICAgICAgICAgICAg ICh3aGVuIChub3QgKGFzc29jICJfX3Vua25vd25fXyIgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkK KyAgICAgICAgICAgICAgICAocHVzaCAnKHNhdmVkIC4gIl9fdWtub3duX18iKSBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKGlidWZm ZXItZGVjb21wb3NlLWZpbHRlcikgOnR5cGUgJ2Vycm9yKQorICAgICAgICAgICAgICAgIChzZXRx IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMgbmlsKSkKKyAgICAgICAgICAgICAgKHByb2du CisgICAgICAgICAgICAgICAgKHB1c2ggKGNhciBmaWx0ZXJzKSBpYnVmZmVyLWZpbHRlcmluZy1x dWFsaWZpZXJzKQorICAgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKGlidWZmZXItZGVjb21w b3NlLWZpbHRlcikgOnR5cGUgJ2Vycm9yKQorICAgICAgICAgICAgICAgIChzZXRxIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMgbmlsKSkpKSkKKyAgICAgIChmdW5jYWxsIGNsZWFuLXVwKSkp CisKKyAgKGVydC1kZWZ0ZXN0IGlidWZmZXItYW5kLWZpbHRlciAoKQorICAgICJUZXN0cyBgaWJ1 ZmZlci1hbmQtZmlsdGVyJyBpbiBhbiBJYnVmZmVyIGJ1ZmZlci4iCisgICAgKHNraXAtdW5sZXNz IChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0 ICgoaWJ1ZiAoZnVuY2FsbCBnZXQtdGVzdC1pYnVmZmVyKSkpCisgICAgICAgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgaWJ1ZgorICAgICAgICAgICAgKGxldCAoKGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMgbmlsKQorICAgICAgICAgICAgICAgICAgKGlidWZmZXItZmlsdGVyLWdyb3VwcyBu aWwpCisgICAgICAgICAgICAgICAgICAoZmlsdGVycyBbKHNpemUtZ3QgLiAxMDApIChub3QgKHN0 YXJyZWQtbmFtZSkpXSkpCisgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKGlidWZmZXItYW5k LWZpbHRlcikgOnR5cGUgJ2Vycm9yKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAg ICAgICAocHVzaCAoYXJlZiBmaWx0ZXJzIDEpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMp CisgICAgICAgICAgICAgICAgKHNob3VsZC1lcnJvciAoaWJ1ZmZlci1hbmQtZmlsdGVyKSA6dHlw ZSAnZXJyb3IpKQorICAgICAgICAgICAgICAoc2hvdWxkIChwcm9nbgorICAgICAgICAgICAgICAg ICAgICAgICAgKHB1c2ggKGFyZWYgZmlsdGVycyAwKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlidWZmZXItYW5kLWZpbHRlcikKKyAgICAg ICAgICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsIChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAw KSAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNhciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG51bGwgKGNkciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKSkKKyAg ICAgICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgICAgIChpYnVm ZmVyLWFuZC1maWx0ZXIgJ2RlY29tcG9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhbmQg KGVxdWFsIChhcmVmIGZpbHRlcnMgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlcXVhbCAoYXJlZiBmaWx0ZXJzIDEpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzKSkpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKKyAgCisgIChlcnQtZGVmdGVz dCBpYnVmZmVyLW9yLWZpbHRlciAoKQorICAgICJUZXN0cyBgaWJ1ZmZlci1vci1maWx0ZXInIGlu IGFuIElidWZmZXIgYnVmZmVyLiIKKyAgICAoc2tpcC11bmxlc3MgKGZlYXR1cmVwICdpYnVmLWV4 dCkpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgIChsZXQgKChpYnVmIChmdW5jYWxsIGdl dC10ZXN0LWlidWZmZXIpKSkKKyAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBpYnVmCisg ICAgICAgICAgICAobGV0ICgoaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyBuaWwpCisgICAg ICAgICAgICAgICAgICAoaWJ1ZmZlci1maWx0ZXItZ3JvdXBzIG5pbCkKKyAgICAgICAgICAgICAg ICAgIChmaWx0ZXJzIFsoc2l6ZS1ndCAuIDEwMCkgKG5vdCAoc3RhcnJlZC1uYW1lKSldKSkKKyAg ICAgICAgICAgICAgKHNob3VsZC1lcnJvciAoaWJ1ZmZlci1vci1maWx0ZXIpIDp0eXBlICdlcnJv cikKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgICAgKHB1c2ggKGFyZWYgZmls dGVycyAxKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgIChz aG91bGQtZXJyb3IgKGlidWZmZXItb3ItZmlsdGVyKSA6dHlwZSAnZXJyb3IpKQorICAgICAgICAg ICAgICAoc2hvdWxkIChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGFyZWYg ZmlsdGVycyAwKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAg ICAgICAgICAgKGlidWZmZXItb3ItZmlsdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFu ZCAoZXF1YWwgKGxpc3QgJ29yIChhcmVmIGZpbHRlcnMgMCkgKGFyZWYgZmlsdGVycyAxKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsIChjZHIgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkpCisgICAgICAgICAgICAgIChzaG91bGQgKHBy b2duCisgICAgICAgICAgICAgICAgICAgICAgICAoaWJ1ZmZlci1vci1maWx0ZXIgJ2RlY29tcG9z ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsIChhcmVmIGZpbHRlcnMgMCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJp bmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAoYXJl ZiBmaWx0ZXJzIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIGli dWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobnVsbCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKSkpKQorICAgICAgKGZ1bmNh bGwgY2xlYW4tdXApKSkpCisKKyhlcnQtZGVmdGVzdCBpYnVmZmVyLXNhdmUtZmlsdGVycyAoKQor ICAiVGVzdHMgdGhhdCBgaWJ1ZmZlci1zYXZlLWZpbHRlcnMnIHNhdmVzIGluIHRoZSBwcm9wZXIg Zm9ybWF0LiIKKyAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAobGV0ICgo aWJ1ZmZlci1zYXZlLXdpdGgtY3VzdG9tIG5pbCkKKyAgICAgICAgKGlidWZmZXItc2F2ZWQtZmls dGVycyBuaWwpCisgICAgICAgICh0ZXN0MSAnKChtb2RlIC4gb3JnLW1vZGUpCisgICAgICAgICAg ICAgICAgIChvciAoc2l6ZS1ndCAuIDEwMDAwKQorICAgICAgICAgICAgICAgICAgICAgKGFuZCAo bm90IChzdGFycmVkLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUt ZGlyZWN0b3J5IC4gIlw8b3JnXD4iKSkpKSkKKyAgICAgICAgKHRlc3QyICcoKG9yIChtb2RlIC4g ZW1hY3MtbGlzcC1tb2RlKSAoZmlsZW5hbWUtZXh0ZW5zaW9uIC4gImVsYz8iKQorICAgICAgICAg ICAgICAgICAgICAgKGFuZCAoc3RhcnJlZC1uYW1lKSAobmFtZSAuICJlbGlzcCIpKQorICAgICAg ICAgICAgICAgICAgICAgKG1vZGUgLiBsaXNwLWludGVyYWN0aW9uLW1vZGUpKSkpCisgICAgICAg ICh0ZXN0MyAnKChzaXplLWx0IC4gMTAwKSAoZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2RlKQorICAg ICAgICAgICAgICAgICAob3IgKGZpbGVuYW1lLXJvb3QgLiAic2NyYXRjaCIpCisgICAgICAgICAg ICAgICAgICAgICAoZmlsZW5hbWUtcm9vdCAuICJib256IikKKyAgICAgICAgICAgICAgICAgICAg IChmaWxlbmFtZS1yb290IC4gInRlbXAiKSkpKSkKKyAgICAoaWJ1ZmZlci1zYXZlLWZpbHRlcnMg InRlc3QxIiB0ZXN0MSkKKyAgICAoc2hvdWxkIChlcXVhbCAoY2FyIGlidWZmZXItc2F2ZWQtZmls dGVycykgKGNvbnMgInRlc3QxIiB0ZXN0MSkpKQorICAgIChpYnVmZmVyLXNhdmUtZmlsdGVycyAi dGVzdDIiIHRlc3QyKQorICAgIChzaG91bGQgKGVxdWFsIChjYXIgaWJ1ZmZlci1zYXZlZC1maWx0 ZXJzKSAoY29ucyAidGVzdDIiIHRlc3QyKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGNhZHIgaWJ1 ZmZlci1zYXZlZC1maWx0ZXJzKSAoY29ucyAidGVzdDEiIHRlc3QxKSkpCisgICAgKGlidWZmZXIt c2F2ZS1maWx0ZXJzICJ0ZXN0MyIgdGVzdDMpCisgICAgKHNob3VsZCAoZXF1YWwgKGNhciBpYnVm ZmVyLXNhdmVkLWZpbHRlcnMpIChjb25zICJ0ZXN0MyIgdGVzdDMpKSkKKyAgICAoc2hvdWxkIChl cXVhbCAoY2FkciBpYnVmZmVyLXNhdmVkLWZpbHRlcnMpIChjb25zICJ0ZXN0MiIgdGVzdDIpKSkK KyAgICAoc2hvdWxkIChlcXVhbCAoY2FyIChjZGRyIGlidWZmZXItc2F2ZWQtZmlsdGVycykpIChj b25zICJ0ZXN0MSIgdGVzdDEpKSkKKyAgICAoc2hvdWxkIChlcXVhbCAoY2RyIChhc3NvYyAidGVz dDEiIGlidWZmZXItc2F2ZWQtZmlsdGVycykpIHRlc3QxKSkKKyAgICAoc2hvdWxkIChlcXVhbCAo Y2RyIChhc3NvYyAidGVzdDIiIGlidWZmZXItc2F2ZWQtZmlsdGVycykpIHRlc3QyKSkKKyAgICAo c2hvdWxkIChlcXVhbCAoY2RyIChhc3NvYyAidGVzdDMiIGlidWZmZXItc2F2ZWQtZmlsdGVycykp IHRlc3QzKSkpKQorCisoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyICgpCisg ICJUZXN0cyBzdHJpbmcgcmVjb21tZW5kYXRpb24gb2YgZmlsdGVyIGZyb20gYGlidWZmZXItZm9y bWF0LXF1YWxpZmllcicuIgorICAoc2tpcC11bmxlc3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisg IChsZXQgKCh0ZXN0MSAnKG1vZGUgLiBvcmctbW9kZSkpCisgICAgICAgICh0ZXN0MiAnKHNpemUt bHQgLiAxMDApKQorICAgICAgICAodGVzdDMgJyhkZXJpdmVkLW1vZGUgLiBwcm9nLW1vZGUpKQor ICAgICAgICAodGVzdDQgJyhvciAoc2l6ZS1ndCAuIDEwMDAwKQorICAgICAgICAgICAgICAgICAg ICAoYW5kIChub3QgKHN0YXJyZWQtbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGZp bGVuYW1lLWRpcmVjdG9yeSAuICJcXDxvcmdcXD4iKSkpKQorICAgICAgICAodGVzdDUgJyhvciAo ZmlsZW5hbWUtcm9vdCAuICJzY3JhdGNoIikKKyAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1l LXJvb3QgLiAiYm9ueiIpCisgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZS1yb290IC4gInRl bXAiKSkpCisgICAgICAgICh0ZXN0NiAnKG9yIChtb2RlIC4gZW1hY3MtbGlzcC1tb2RlKSAoZmls ZW5hbWUtZXh0ZW5zaW9uIC4gImVsYz8iKQorICAgICAgICAgICAgICAgICAgICAoYW5kIChzdGFy cmVkLW5hbWUpIChuYW1lIC4gImVsaXNwIikpCisgICAgICAgICAgICAgICAgICAgIChtb2RlIC4g bGlzcC1pbnRlcmFjdGlvbi1tb2RlKSkpCisgICAgICAgIChkZXNjcmlwdGlvbiAobGFtYmRhIChx KQorICAgICAgICAgICAgICAgICAgICAgICAoY2FkciAoYXNzcSBxIGlidWZmZXItZmlsdGVyaW5n LWFsaXN0KSkpKQorICAgICAgICAodGFnIChsYW1iZGEgKCZyZXN0IGFyZ3MgKQorICAgICAgICAg ICAgICAgKGNvbmNhdCAiIFsiIChhcHBseSAjJ2NvbmNhdCBhcmdzKSAiXSIpKSkpCisgICAgKHNo b3VsZCAoZXF1YWwgKGlidWZmZXItZm9ybWF0LXF1YWxpZmllciB0ZXN0MSkKKyAgICAgICAgICAg ICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ21vZGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIjogIiAib3JnLW1vZGUiKSkpCisgICAgKHNob3VsZCAoZXF1 YWwgKGlidWZmZXItZm9ybWF0LXF1YWxpZmllciB0ZXN0MikKKyAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ3NpemUtbHQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIjogIiAiMTAwIikpKQorICAgIChzaG91bGQgKGVxdWFsIChpYnVmZmVy LWZvcm1hdC1xdWFsaWZpZXIgdGVzdDMpCisgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgdGFn IChmdW5jYWxsIGRlc2NyaXB0aW9uICdkZXJpdmVkLW1vZGUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIjogIiAicHJvZy1tb2RlIikpKQorICAgIChzaG91bGQgKGVxdWFsIChpYnVmZmVy LWZvcm1hdC1xdWFsaWZpZXIgdGVzdDQpCisgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgdGFn ICJPUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwg ZGVzY3JpcHRpb24gJ3NpemUtZ3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIjogIiAoZm9ybWF0ICIlcyIgMTAwMDApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIHRhZyAiQU5EIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIHRhZyAiTk9UIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChmdW5jYWxsIHRhZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGRlc2NyaXB0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXJy ZWQtbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiOiAiICJuaWwiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZnVuY2FsbCB0YWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnZmlsZW5hbWUtZGlyZWN0b3J5KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgIlxcPG9yZ1xcPiIpKSkp KQorICAgIChzaG91bGQgKGVxdWFsIChpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXIgdGVzdDUpCisg ICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgdGFnICJPUiIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ2ZpbGVuYW1lLXJvb3Qp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogIiAgInNjcmF0Y2giKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlw dGlvbiAnZmlsZW5hbWUtcm9vdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiOiAiICJib256IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcg KGZ1bmNhbGwgZGVzY3JpcHRpb24gJ2ZpbGVuYW1lLXJvb3QpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIjogIiAidGVtcCIpKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGli dWZmZXItZm9ybWF0LXF1YWxpZmllciB0ZXN0NikKKyAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCB0YWcgIk9SIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAoZnVu Y2FsbCBkZXNjcmlwdGlvbiAnbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiOiAiICJlbWFjcy1saXNwLW1vZGUiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnZmlsZW5hbWUtZXh0ZW5zaW9uKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgImVsYz8iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAiQU5EIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGRlc2NyaXB0aW9uICdzdGFycmVkLW5h bWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogIiAi bmlsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBk ZXNjcmlwdGlvbiAnbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiOiAiICJlbGlzcCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnbW9kZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiOiAiICJsaXNwLWludGVyYWN0aW9uLW1vZGUiKSkpKSkpCisKKyhl cnQtZGVmdGVzdCBpYnVmZmVyLXVuYXJ5LW9wZXJhbmQgKCkKKyAgIlRlc3RzIGBpYnVmZmVyLXVu YXJ5LW9wZXJhbmQnOiAobm90IGNlbGwpIG9yIChub3QgLiBjZWxsKSAtPiBjZWxsLiIKKyAgKHNr aXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZl ci11bmFyeS1vcGVyYW5kICcobm90IC4gKG1vZGUgImZvbyIpKSkKKyAgICAgICAgICAgICAgICAg Jyhtb2RlICJmb28iKSkpCisgIChzaG91bGQgKGVxdWFsIChpYnVmZmVyLXVuYXJ5LW9wZXJhbmQg Jyhub3QgKG1vZGUgImZvbyIpKSkKKyAgICAgICAgICAgICAgICAgJyhtb2RlICJmb28iKSkpCisg IChzaG91bGQgKGVxdWFsIChpYnVmZmVyLXVuYXJ5LW9wZXJhbmQgJyhub3QgImNkciIpKQorICAg ICAgICAgICAgICAgICAnKCJjZHIiKSkpCisgIChzaG91bGQgKGVxdWFsIChpYnVmZmVyLXVuYXJ5 LW9wZXJhbmQgJyhub3QpKSBuaWwpKQorICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci11bmFyeS1v cGVyYW5kICcobm90IC4gYSkpICdhKSkpCisKKwogKHByb3ZpZGUgJ2lidWZmZXItdGVzdHMpCiA7 OyBpYnVmZmVyLXRlc3RzLmVsIGVuZHMgaGVyZQotLSAKMi4xMC4wCgo= --94eb2c088ee2d4956b05418133e0--