From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29005 invoked by alias); 2 Apr 2012 05:58:29 -0000 Received: (qmail 28992 invoked by uid 22791); 2 Apr 2012 05:58:26 -0000 X-SWARE-Spam-Status: No, hits=-4.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qc0-f182.google.com (HELO mail-qc0-f182.google.com) (209.85.216.182) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 02 Apr 2012 05:58:09 +0000 Received: by qcsg15 with SMTP id g15so1656547qcs.13 for ; Sun, 01 Apr 2012 22:58:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=BaiCJPkgraclnoEFSs1Ac8V2YjrsnqYgEEcAJ4A/CfE=; b=OzjItVgl77tr5dfz2dxgAekSAyRL08W33ynRRoAi1jpEZV9KpaaxN9CPpHiPTjwPUU 0s7voHFKCiXIUd92aXraHj5WKzAKa48lvLAWZsmzU5uvpLr76ZGAnSYvQcfKYNX/FgV1 7W8WZO6TyO+6lzId3xx8/OkMIPtnoNpDKiPEMNXAzzkB1YCkIneYQTvwKLqgLLEjvw0t zHZjwC8wzu+FcZHPXlps60YxoLfc5MeqBZR4oeTnS6ZwbwS+qt5Rhu9wxQg+gFFdmeeR NJBufCLTOzRUx9oILDvfeycIEokbMLnAQSyUcbFGos1NEJ6FH4OzI2C+UmcNKsNXrlsN kAnQ== Received: by 10.229.135.213 with SMTP id o21mr2812437qct.6.1333346288587; Sun, 01 Apr 2012 22:58:08 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.135.213 with SMTP id o21mr2812429qct.6.1333346288374; Sun, 01 Apr 2012 22:58:08 -0700 (PDT) Received: by 10.224.188.140 with HTTP; Sun, 1 Apr 2012 22:58:08 -0700 (PDT) In-Reply-To: <83sjgpjdnm.fsf@gnu.org> References: <837gyu17am.fsf@gnu.org> <83haxet7vh.fsf@gnu.org> <83sjgpjdnm.fsf@gnu.org> Date: Mon, 02 Apr 2012 05:58:00 -0000 Message-ID: Subject: Re: [patch 2/2] New 'explore' command Python implementation (with docs) From: Siva Chandra To: gdb-patches@sourceware.org Cc: Eli Zaretskii Content-Type: multipart/mixed; boundary=00248c76914ee193f004bcabdf5e X-System-Of-Record: true X-Gm-Message-State: ALoCoQkO28xoWbUgkXx3WB0WyV6lTz6+u/Gjw/mKsUGUvciaWRGHqvew9RHmZooj7XqHfQFUKJRdVTQ2Pj02/ssZKnLzo9HQcKgUq/4iQ8YzJh+qBsIpTwjOB3OUW6eUKmbB+W20woIxZGYsvkMHnvO2SHk7jBxM9w== X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-04/txt/msg00006.txt.bz2 --00248c76914ee193f004bcabdf5e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1499 Thanks Eli, I have fixed it. The complete patch is attached. Code ChangeLog: 2012-04-02 Siva Chandra Reddy New command 'explore' which helps explore values and types in scope. * NEWS: Add an entry about the new 'explore' command. * data-directory/Makefile.in: Add gdb/command/explore.py * python/lib/gdb/command/explore.py: Implemention of the 'explore' command using the GDB Python API. Docs ChangeLog: 2012-04-02 Siva Chandra Reddy * gdb.texinfo (Examining Data): Document the 'explore' command. Testsuite ChangeLog: 2012-04-02 Siva Chandra Reddy * gdb.python/Makefile.in: Add py-explore to EXECUTABLES. * gdb.python/py-explore.c: C program used for testing the new 'explore' command on C constructs. * gdb.python/py-explore.cc: C++ program used for testing the new 'explore' command on C++ constructs. * gdb-python/py-explore.exp: Tests for the new 'explore' command on C constructs. * gdb-python/py-explore-cc.exp: Tests for the new 'explore' command on C++ constructs. Thanks, Siva Chandra On Sat, Mar 31, 2012 at 3:27 PM, Eli Zaretskii wrote: >> Date: Mon, 26 Mar 2012 12:53:56 +0530 >> From: Siva Chandra >> >> + =A0 ** "explore" and its sub commands "explore value" and "explore typ= e" >> + =A0 =A0 =A0can be used to recurrsively explore values and types of > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0^^^^^^^^^^^^ > A typo. > > Thanks. --00248c76914ee193f004bcabdf5e Content-Type: application/octet-stream; name="python_explore_command_patch_v5.text" Content-Disposition: attachment; filename="python_explore_command_patch_v5.text" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h0j3u2sy0 Content-length: 94778 SW5kZXg6IE5FV1MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9ORVdTLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjUwNQpkaWZmIC1jIC1wIC1yMS41MDUgTkVXUwoqKiogTkVXUwkyOCBNYXIg MjAxMiAyMTozMTo1NiAtMDAwMAkxLjUwNQotLS0gTkVXUwkxIEFwciAyMDEy IDE4OjU1OjI1IC0wMDAwCioqKioqKioqKioqKioqKgoqKiogOTMsOTggKioq KgotLS0gOTMsMTAzIC0tLS0KICAgICoqICJpbmZvIHZ0YmwiIGNhbiBiZSB1 c2VkIHRvIHNob3cgdGhlIHZpcnR1YWwgbWV0aG9kIHRhYmxlcyBmb3IKICAg ICAgIEMrKyBhbmQgSmF2YSBvYmplY3RzLgogIAorICAgKiogImV4cGxvcmUi IGFuZCBpdHMgc3ViIGNvbW1hbmRzICJleHBsb3JlIHZhbHVlIiBhbmQgImV4 cGxvcmUgdHlwZSIKKyAgICAgICBjYW4gYmUgdXNlZCB0byByZWNjdXJzaXZl bHkgZXhwbG9yZSB2YWx1ZXMgYW5kIHR5cGVzIG9mCisgICAgICAgZXhwcmVz c2lvbnMuICBUaGVzZSBjb21tYW5kcyBhcmUgYXZhaWxhYmxlIG9ubHkgaWYg R0RCIGlzCisgICAgICAgY29uZmlndXJlZCB3aXRoICctLXdpdGgtcHl0aG9u Jy4KKyAKICAqIE5ldyB0YXJnZXRzCiAgCiAgUmVuZXNhcyBSTDc4CQkJcmw3 OC0qLWVsZgpJbmRleDogZG9jL2dkYi50ZXhpbmZvCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZG9jL2dkYi50 ZXhpbmZvLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkzOQpkaWZmIC1jIC1w IC1yMS45MzkgZ2RiLnRleGluZm8KKioqIGRvYy9nZGIudGV4aW5mbwkyOCBN YXIgMjAxMiAyMTozMTo0NiAtMDAwMAkxLjkzOQotLS0gZG9jL2dkYi50ZXhp bmZvCTEgQXByIDIwMTIgMTg6NTU6NTMgLTAwMDAKKioqKioqKioqKioqKioq IGZpZWxkcyBvZiBhIHN0cnVjdCBvciBhIGNsYXNzIGFyZSBkZWNsYXIKKioq IDcxOTgsNzIwMyAqKioqCi0tLSA3MTk4LDczNTAgLS0tLQogIGNvbW1hbmQg cmF0aGVyIHRoYW4gQGNvZGV7cHJpbnR9LiAgQHhyZWZ7U3ltYm9scywgLEV4 YW1pbmluZyB0aGUgU3ltYm9sCiAgVGFibGV9LgogIAorIEBjaW5kZXggZXhw bG9yaW5nIGhpZXJhcmNoaWNhbCBkYXRhIHN0cnVjdHVyZXMKKyBAa2luZGV4 IGV4cGxvcmUKKyBBbm90aGVyIHdheSBvZiBleGFtaW5pbmcgdmFsdWVzIG9m IGV4cHJlc3Npb25zIGFuZCB0eXBlIGluZm9ybWF0aW9uIGlzCisgdGhyb3Vn aCB0aGUgUHl0aG9uIGV4dGVuc2lvbiBjb21tYW5kIEBjb2Rle2V4cGxvcmV9 IChhdmFpbGFibGUgb25seSBpZgorIHRoZSBAdmFsdWV7R0RCTn0gYnVpbGQg aXMgY29uZmlndXJlZCB3aXRoIEBjb2Rley0td2l0aC1weXRob259KS4gIEl0 Cisgb2ZmZXJzIGFuIGludGVyYWN0aXZlIHdheSB0byBzdGFydCBhdCB0aGUg aGlnaGVzdCBsZXZlbCAob3IsIHRoZSBtb3N0CisgYWJzdHJhY3QgbGV2ZWwp IG9mIHRoZSBkYXRhIHR5cGUgb2YgYW4gZXhwcmVzc2lvbiAob3IsIHRoZSBk YXRhIHR5cGUKKyBpdHNlbGYpIGFuZCBleHBsb3JlIGFsbCB0aGUgd2F5IGRv d24gdG8gbGVhZiBzY2FsYXIgdmFsdWVzL2ZpZWxkcworIGVtYmVkZGVkIGlu IHRoZSBoaWdoZXIgbGV2ZWwgZGF0YSB0eXBlcy4KKyAKKyBAdGFibGUgQGNv ZGUKKyBAaXRlbSBleHBsb3JlIEB2YXJ7YXJnfQorIEB2YXJ7YXJnfSBpcyBl aXRoZXIgYW4gZXhwcmVzc2lvbiAoaW4gdGhlIHNvdXJjZSBsYW5ndWFnZSks IG9yIGEgdHlwZQorIHZpc2libGUgaW4gdGhlIGN1cnJlbnQgY29udGV4dCBv ZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KKyBAZW5kIHRhYmxlCisg CisgVGhlIHdvcmtpbmcgb2YgdGhlIEBjb2Rle2V4cGxvcmV9IGNvbW1hbmQg Y2FuIGJlIGlsbHVzdHJhdGVkIHdpdGggYW4KKyBleGFtcGxlLiAgSWYgYSBk YXRhIHR5cGUgQGNvZGV7c3RydWN0IENvbXBsZXhTdHJ1Y3R9IGlzIGRlZmlu ZWQgaW4geW91cgorIEMgcHJvZ3JhbSBhcworIAorIEBzbWFsbGV4YW1wbGUK KyBzdHJ1Y3QgU2ltcGxlU3RydWN0CisgQHsKKyAgIGludCBpOworICAgZG91 YmxlIGQ7CisgQH07CisgCisgc3RydWN0IENvbXBsZXhTdHJ1Y3QKKyBAewor ICAgc3RydWN0IFNpbXBsZVN0cnVjdCAqc3NfcDsKKyAgIGludCBhcnJbMTBd OworIEB9OworIEBlbmQgc21hbGxleGFtcGxlCisgCisgQG5vaW5kZW50Cisg Zm9sbG93ZWQgYnkgdmFyaWFibGUgZGVjbGFyYXRpb25zIGFzCisgCisgQHNt YWxsZXhhbXBsZQorIHN0cnVjdCBTaW1wbGVTdHJ1Y3Qgc3MgPSBAeyAxMCwg MS4xMSBAfTsKKyBzdHJ1Y3QgQ29tcGxleFN0cnVjdCBjcyA9IEB7ICZzcywg QHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSBAfSBAfTsKKyBAZW5k IHNtYWxsZXhhbXBsZQorIAorIEBub2luZGVudAorIHRoZW4sIHRoZSB2YWx1 ZSBvZiB0aGUgdmFyaWFibGUgQGNvZGV7Y3N9IGNhbiBiZSBleHBsb3JlZCB1 c2luZyB0aGUKKyBAY29kZXtleHBsb3JlfSBjb21tYW5kIGFzIGZvbGxvd3Mu CisgCisgQHNtYWxsZXhhbXBsZQorIChnZGIpIGV4cGxvcmUgY3MKKyBUaGUg dmFsdWUgb2YgYGNzJyBpcyBhIHN0cnVjdC9jbGFzcyBvZiB0eXBlIGBzdHJ1 Y3QgQ29tcGxleFN0cnVjdCcgd2l0aAorIHRoZSBmb2xsb3dpbmcgZmllbGRz OgorIAorICAgc3NfcCA9IDxFbnRlciAwIHRvIGV4cGxvcmUgdGhpcyBmaWVs ZCBvZiB0eXBlIGBzdHJ1Y3QgU2ltcGxlU3RydWN0IConPgorICAgIGFyciA9 IDxFbnRlciAxIHRvIGV4cGxvcmUgdGhpcyBmaWVsZCBvZiB0eXBlIGBpbnQg WzEwXSc+CisgCisgRW50ZXIgdGhlIGZpZWxkIG51bWJlciBvZiBjaG9pY2U6 CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBAbm9pbmRlbnQKKyBTaW5jZSB0 aGUgZmllbGRzIG9mIEBjb2Rle2NzfSBhcmUgbm90IHNjYWxhciB2YWx1ZXMs IHlvdSBhcmUgYmVpbmcKKyBwcm9tcHRlZCB0byBjaG9zZSB0aGUgZmllbGQg eW91IHdhbnQgdG8gZXhwbG9yZS4gIExldCdzIHNheSB5b3UgY2hvb3NlCisg dGhlIGZpZWxkIEBjb2Rle3NzX3B9IGJ5IGVudGVyaW5nIEBjb2RlezB9LiAg VGhlbiwgc2luY2UgdGhpcyBmaWVsZCBpcyBhCisgcG9pbnRlciwgeW91IHdp bGwgYmUgYXNrZWQgaWYgaXQgaXMgcG9pbnRpbmcgdG8gYSBzaW5nbGUgdmFs dWUuICBGcm9tCisgdGhlIGRlY2xhcmF0aW9uIG9mIEBjb2Rle2NzfSBhYm92 ZSwgaXQgaXMgaW5kZWVkIHBvaW50aW5nIHRvIGEgc2luZ2xlCisgdmFsdWUs IGhlbmNlIHlvdSBlbnRlciBAY29kZXt5fS4gIElmIHlvdSBlbnRlciBAY29k ZXtufSwgdGhlbiB5b3Ugd2lsbAorIGJlIGFza2VkIGlmIGl0IHdlcmUgcG9p bnRpbmcgdG8gYW4gYXJyYXkgb2YgdmFsdWVzLCBpbiB3aGljaCBjYXNlIHRo aXMKKyBmaWVsZCB3aWxsIGJlIGV4cGxvcmVkIGFzIGlmIGl0IHdlcmUgYW4g YXJyYXkuCisgCisgQHNtYWxsZXhhbXBsZQorIGBjcy5zc19wJyBpcyBhIHBv aW50ZXIgdG8gYSB2YWx1ZSBvZiB0eXBlIGBzdHJ1Y3QgU2ltcGxlU3RydWN0 JworIENvbnRpbnVlIGV4cGxvcmluZyBpdCBhcyBhIHBvaW50ZXIgdG8gYSBz aW5nbGUgdmFsdWUgW3kvbl06IHkKKyBUaGUgdmFsdWUgb2YgYCooY3Muc3Nf cCknIGlzIGEgc3RydWN0L2NsYXNzIG9mIHR5cGUgYHN0cnVjdAorIFNpbXBs ZVN0cnVjdCcgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKKyAKKyAgIGkg PSAxMCAuLiAoVmFsdWUgb2YgdHlwZSBgaW50JykKKyAgIGQgPSAxLjExMDAw MDAwMDAwMDAwMDEgLi4gKFZhbHVlIG9mIHR5cGUgYGRvdWJsZScpCisgCisg UHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIHBhcmVudCB2YWx1ZToKKyBAZW5k IHNtYWxsZXhhbXBsZQorIAorIEBub2luZGVudAorIElmIHRoZSBmaWVsZCBA Y29kZXthcnJ9IG9mIEBjb2Rle2NzfSB3YXMgY2hvc2VuIGZvciBleHBsb3Jh dGlvbiBieQorIGVudGVyaW5nIEBjb2RlezF9IGVhcmxpZXIsIHRoZW4gc2lu Y2UgaXQgaXMgYXMgYXJyYXksIHlvdSB3aWxsIGJlCisgcHJvbXB0ZWQgdG8g ZW50ZXIgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRoZSBhcnJheSB0 aGF0IHlvdSB3YW50CisgdG8gZXhwbG9yZS4KKyAKKyBAc21hbGxleGFtcGxl CisgYGNzLmFycicgaXMgYW4gYXJyYXkgb2YgYGludCcuCisgRW50ZXIgdGhl IGluZGV4IG9mIHRoZSBlbGVtZW50IHlvdSB3YW50IHRvIGV4cGxvcmUgaW4g YGNzLmFycic6IDUKKyAKKyBgKGNzLmFycilbNV0nIGlzIGEgc2NhbGFyIHZh bHVlIG9mIHR5cGUgYGludCcuCisgCisgKGNzLmFycilbNV0gPSA0CisgCisg UHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIHBhcmVudCB2YWx1ZTogCisgQGVu ZCBzbWFsbGV4YW1wbGUKKyAKKyBJbiBnZW5lcmFsLCBhdCBhbnkgc3RhZ2Ug b2YgZXhwbG9yYXRpb24sIHlvdSBjYW4gZ28gZGVlcGVyIHRvd2FyZHMgdGhl CisgbGVhZiB2YWx1ZXMgYnkgcmVzcG9uZGluZyB0byB0aGUgcHJvbXB0cyBh cHByb3ByaWF0ZWx5LCBvciBoaXQgdGhlCisgcmV0dXJuIGtleSB0byByZXR1 cm4gdG8gdGhlIGVuY2xvc2luZyBkYXRhIHN0cnVjdHVyZSAodGhlIEBpe2hp Z2hlcn0KKyBsZXZlbCBkYXRhIHN0cnVjdHVyZSkuCisgCisgU2ltaWxhciB0 byBleHBsb3JpbmcgdmFsdWVzLCB5b3UgY2FuIHVzZSB0aGUgQGNvZGV7ZXhw bG9yZX0gY29tbWFuZCB0bworIGV4cGxvcmUgdHlwZXMuICBJbnN0ZWFkIG9m IHNwZWNpZnlpbmcgYSB2YWx1ZSAod2hpY2ggaXMgdHlwaWNhbGx5IGEKKyB2 YXJpYWJsZSBuYW1lIG9yIGFuIGV4cHJlc3Npb24gdmFsaWQgaW4gdGhlIGN1 cnJlbnQgY29udGV4dCBvZiB0aGUKKyBwcm9ncmFtIGJlaW5nIGRlYnVnZ2Vk KSwgeW91IHNwZWNpZnkgYSB0eXBlIG5hbWUuICBJZiB5b3UgY29uc2lkZXIg dGhlCisgc2FtZSBleGFtcGxlIGFzIGFib3ZlLCB5b3VyIGNhbiBleHBsb3Jl IHRoZSB0eXBlCisgQGNvZGV7c3RydWN0IENvbXBsZXhTdHJ1Y3R9IGJ5IHBh c3NpbmcgdGhlIGFyZ3VtZW50CisgQGNvZGV7c3RydWN0IENvbXBsZXhTdHJ1 Y3R9IHRvIHRoZSBAY29kZXtleHBsb3JlfSBjb21tYW5kLgorIAorIEBzbWFs bGV4YW1wbGUKKyAoZ2RiKSBleHBsb3JlIHN0cnVjdCBDb21wbGV4U3RydWN0 CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBAbm9pbmRlbnQKKyBCeSByZXNw b25kaW5nIHRvIHRoZSBwcm9tcHRzIGFwcHJvcHJpYXRlbHkgaW4gdGhlIHN1 YnNlcXVlbnQgaW50ZXJhY3RpdmUKKyBzZXNzaW9uLCB5b3UgY2FuIGV4cGxv cmUgdGhlIHR5cGUgQGNvZGV7c3RydWN0IENvbXBsZXhTdHJ1Y3R9IGluIGEK KyBtYW5uZXIgc2ltaWxhciB0byBob3cgdGhlIHZhbHVlIEBjb2Rle2NzfSB3 YXMgZXhwbG9yZWQgaW4gdGhlIGFib3ZlCisgZXhhbXBsZS4KKyAKKyBUaGUg QGNvZGV7ZXhwbG9yZX0gY29tbWFuZCBhbHNvIGhhcyB0d28gc3ViLWNvbW1h bmRzLAorIEBjb2Rle2V4cGxvcmUgdmFsdWV9IGFuZCBAY29kZXtleHBsb3Jl IHR5cGV9LiBUaGUgZm9ybWVyIHN1Yi1jb21tYW5kIGlzCisgYSB3YXkgdG8g ZXhwbGljaXRseSBzcGVjaWZ5IHRoYXQgdmFsdWUgZXhwbG9yYXRpb24gb2Yg dGhlIGFyZ3VtZW50IGlzCisgYmVpbmcgaW52b2tlZCwgd2hpbGUgdGhlIGxh dHRlciBpcyBhIHdheSB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhhdCB0eXBl CisgZXhwbG9yYXRpb24gb2YgdGhlIGFyZ3VtZW50IGlzIGJlaW5nIGludm9r ZWQuCisgCisgQHRhYmxlIEBjb2RlCisgQGl0ZW0gZXhwbG9yZSB2YWx1ZSBA dmFye2V4cHJ9CisgQGNpbmRleCBleHBsb3JlIHZhbHVlCisgVGhpcyBzdWIt Y29tbWFuZCBvZiBAY29kZXtleHBsb3JlfSBleHBsb3JlcyB0aGUgdmFsdWUg b2YgdGhlCisgZXhwcmVzc2lvbiBAdmFye2V4cHJ9IChpZiBAdmFye2V4cHJ9 IGlzIGFuIGV4cHJlc3Npb24gdmFsaWQgaW4gdGhlCisgY3VycmVudCBjb250 ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkKS4gIFRoZSBiZWhh dmlvciBvZiB0aGlzCisgY29tbWFuZCBpcyBpZGVudGljYWwgdG8gdGhhdCBv ZiB0aGUgYmVoYXZpb3Igb2YgdGhlIEBjb2Rle2V4cGxvcmV9CisgY29tbWFu ZCBiZWluZyBwYXNzZWQgdGhlIGFyZ3VtZW50IEB2YXJ7ZXhwcn0uCisgCisg QGl0ZW0gZXhwbG9yZSB0eXBlIEB2YXJ7YXJnfQorIEBjaW5kZXggZXhwbG9y ZSB0eXBlCisgVGhpcyBzdWItY29tbWFuZCBvZiBAY29kZXtleHBsb3JlfSBl eHBsb3JlcyB0aGUgdHlwZSBvZiBAdmFye2FyZ30gKGlmCisgQHZhcnthcmd9 IGlzIGEgdHlwZSB2aXNpYmxlIGluIHRoZSBjdXJyZW50IGNvbnRleHQgb2Yg cHJvZ3JhbSBiZWluZworIGRlYnVnZ2VkKSwgb3IgdGhlIHR5cGUgb2YgdGhl IHZhbHVlL2V4cHJlc3Npb24gQHZhcnthcmd9IChpZiBAdmFye2FyZ30KKyBp cyBhbiBleHByZXNzaW9uIHZhbGlkIGluIHRoZSBjdXJyZW50IGNvbnRleHQg b2YgdGhlIHByb2dyYW0gYmVpbmcKKyBkZWJ1Z2dlZCkuICBJZiBAdmFye2Fy Z30gaXMgYSB0eXBlLCB0aGVuIHRoZSBiZWhhdmlvciBvZiB0aGlzIGNvbW1h bmQgaXMKKyBpZGVudGljYWwgdG8gdGhhdCBvZiB0aGUgQGNvZGV7ZXhwbG9y ZX0gY29tbWFuZCBiZWluZyBwYXNzZWQgdGhlCisgYXJndW1lbnQgQHZhcnth cmd9LiAgSWYgQHZhcnthcmd9IGlzIGFuIGV4cHJlc3Npb24sIHRoZW4gdGhl IGJlaGF2aW9yIG9mCisgdGhpcyBjb21tYW5kIHdpbGwgYmUgaWRlbnRpY2Fs IHRvIHRoYXQgb2YgdGhlIEBjb2Rle2V4cGxvcmV9IGNvbW1hbmQKKyBiZWlu ZyBwYXNzZWQgdGhlIHR5cGUgb2YgQHZhcnthcmd9IGFzIHRoZSBhcmd1bWVu dC4KKyBAZW5kIHRhYmxlCisgCiAgQG1lbnUKICAqIEV4cHJlc3Npb25zOjog ICAgICAgICAgICAgICAgIEV4cHJlc3Npb25zCiAgKiBBbWJpZ3VvdXMgRXhw cmVzc2lvbnM6OiAgICAgICBBbWJpZ3VvdXMgRXhwcmVzc2lvbnMKSW5kZXg6 IHB5dGhvbi9saWIvZ2RiL2NvbW1hbmQvZXhwbG9yZS5weQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiBweXRob24vbGliL2dkYi9jb21tYW5k L2V4cGxvcmUucHkKZGlmZiAtTiBweXRob24vbGliL2dkYi9jb21tYW5kL2V4 cGxvcmUucHkKKioqIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0w MDAwCi0tLSBweXRob24vbGliL2dkYi9jb21tYW5kL2V4cGxvcmUucHkJMSBB cHIgMjAxMiAxODo1NTo1NCAtMDAwMAoqKioqKioqKioqKioqKioKKioqIDAg KioqKgotLS0gMSw3NTUgLS0tLQorICMgR0RCICdleHBsb3JlJyBjb21tYW5k LgorICMgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorIAorICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorICMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAjCisgIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICMKKyAjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAK KyAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgR0RCICdleHBsb3JlJyBjb21t YW5kIHVzaW5nIHRoZSBHREIgUHl0aG9uIEFQSS4iIiIKKyAKKyBpbXBvcnQg Z2RiCisgCisgY2xhc3MgRXhwbG9yZXIob2JqZWN0KToKKyAgICAgIiIiSW50 ZXJuYWwgY2xhc3Mgd2hpY2ggaW52b2tlcyBvdGhlciBleHBsb3JlcnMuIiIi CisgCisgICAgICMgVGhpcyBtYXAgaXMgZmlsbGVkIGJ5IHRoZSBFeHBsb3Jl ci5pbml0X2VudigpIGZ1bmN0aW9uCisgICAgIHR5cGVfY29kZV90b19leHBs b3Jlcl9tYXAgPSB7IH0KKyAKKyAgICAgX1NDQUxBUl9UWVBFX0xJU1QgPSAo CisgICAgICAgICBnZGIuVFlQRV9DT0RFX0NIQVIsCisgICAgICAgICBnZGIu VFlQRV9DT0RFX0lOVCwKKyAgICAgICAgIGdkYi5UWVBFX0NPREVfQk9PTCwK KyAgICAgICAgIGdkYi5UWVBFX0NPREVfRkxULAorICAgICAgICAgZ2RiLlRZ UEVfQ09ERV9WT0lELAorICAgICAgICAgZ2RiLlRZUEVfQ09ERV9FTlVNLAor ICAgICApCisgCisgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgZGVmIGd1YXJk X2V4cHIoZXhwcik6CisgICAgICAgICBsZW5ndGggPSBsZW4oZXhwcikKKyAg ICAgICAgIGd1YXJkID0gRmFsc2UKKyAKKyAgICAgICAgIGlmIGV4cHJbMF0g PT0gJygnIGFuZCBleHByW2xlbmd0aC0xXSA9PSAnKSc6CisgICAgICAgICAg ICAgcGFzcworICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBpID0gMAor ICAgICAgICAgICAgIHdoaWxlIGkgPCBsZW5ndGg6CisgICAgICAgICAgICAg ICAgIGMgPSBleHByW2ldCisgICAgICAgICAgICAgICAgIGlmIChjID09ICdf JyBvciAoJ2EnIDw9IGMgYW5kIGMgPD0gJ3onKSBvcgorICAgICAgICAgICAg ICAgICAgICAgKCdBJyA8PSBjIGFuZCBjIDw9ICdaJykgb3IgKCcwJyA8PSBj IGFuZCBjIDw9ICc5JykpOgorICAgICAgICAgICAgICAgICAgICAgcGFzcwor ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg Z3VhcmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICBicmVhaworICAg ICAgICAgICAgICAgICBpICs9IDEKKyAKKyAgICAgICAgIGlmIGd1YXJkOgor ICAgICAgICAgICAgIHJldHVybiAiKCIgKyBleHByICsgIikiCisgICAgICAg ICBlbHNlOgorICAgICAgICAgICAgIHJldHVybiBleHByCisgCisgICAgIEBz dGF0aWNtZXRob2QKKyAgICAgZGVmIGV4cGxvcmVfZXhwcihleHByLCB2YWx1 ZSwgaXNfY2hpbGQpOgorICAgICAgICAgIiIiTWFpbiBmdW5jdGlvbiB0byBl eHBsb3JlIGFuIGV4cHJlc3Npb24gdmFsdWUuCisgCisgICAgICAgICBBcmd1 bWVudHM6CisgICAgICAgICAgICAgZXhwcjogVGhlIGV4cHJlc3Npb24gc3Ry aW5nIHRoYXQgaXMgYmVpbmcgZXhwbG9yZWQuCisgICAgICAgICAgICAgdmFs dWU6IFRoZSBnZGIuVmFsdWUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uCisg ICAgICAgICAgICAgaXNfY2hpbGQ6IEJvb2xlYW4gdmFsdWUgdG8gaW5kaWNh dGUgaWYgdGhlIGV4cHJlc3Npb24gaXMgYSBjaGlsZC4KKyAgICAgICAgICAg ICAgICAgICAgICAgQW4gZXhwcmVzc2lvbiBpcyBhIGNoaWxkIGlmIGl0IGlz IGRlcml2ZWQgZnJvbSB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICAg ICBleHByZXNzaW9uIGVudGVyZWQgYnkgdGhlIHVzZXIuICBGb3IgZXhhbXBs ZSwgaWYgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgZW50ZXJl ZCBhbiBleHByZXNzaW9uIHdoaWNoIGV2YWx1YXRlcyB0byBhIHN0cnVjdCwg dGhlbgorICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGV4cGxvcmluZyB0 aGUgZmllbGRzIG9mIHRoZSBzdHJ1Y3QsIGlzX2NoaWxkIGlzIHNldAorICAg ICAgICAgICAgICAgICAgICAgICB0byBUcnVlIGludGVybmFsbHkuCisgCisg ICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgIE5vIHJldHVybiB2YWx1 ZS4KKyAgICAgICAgICIiIgorICAgICAgICAgdHlwZV9jb2RlID0gdmFsdWUu dHlwZS5jb2RlCisgICAgICAgICBpZiB0eXBlX2NvZGUgaW4gRXhwbG9yZXIu dHlwZV9jb2RlX3RvX2V4cGxvcmVyX21hcDoKKyAgICAgICAgICAgICBleHBs b3Jlcl9jbGFzcyA9IEV4cGxvcmVyLnR5cGVfY29kZV90b19leHBsb3Jlcl9t YXBbdHlwZV9jb2RlXQorICAgICAgICAgICAgIHdoaWxlIGV4cGxvcmVyX2Ns YXNzLmV4cGxvcmVfZXhwcihleHByLCB2YWx1ZSwgaXNfY2hpbGQpOgorICAg ICAgICAgICAgICAgICBwYXNzCisgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgIHByaW50ICgiRXhwbG9yZXIgZm9yIHR5cGUgJyVzJyBub3QgeWV0IGF2 YWlsYWJsZS5cbiIgJQorICAgICAgICAgICAgICAgICAgICBzdHIodmFsdWUu dHlwZSkpCisgCisgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgZGVmIGV4cGxv cmVfdHlwZShuYW1lLCBkYXRhdHlwZSwgaXNfY2hpbGQpOgorICAgICAgICAg IiIiTWFpbiBmdW5jdGlvbiB0byBleHBsb3JlIGEgZGF0YSB0eXBlLgorIAor ICAgICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAgIG5hbWU6IFRoZSBz dHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZSBkYXRhIHR5cGUg YmVpbmcKKyAgICAgICAgICAgICAgICAgICBleHBsb3JlZC4KKyAgICAgICAg ICAgICBkYXRhdHlwZTogVGhlIGdkYi5UeXBlIHZhbHVlIG9mIHRoZSBkYXRh IHR5cGUgYmVpbmcgZXhwbG9yZWQuCisgICAgICAgICAgICAgaXNfY2hpbGQ6 IEJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUgaWYgdGhlIG5hbWUgaXMgYSBj aGlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgQSBuYW1lIGlzIGEgY2hp bGQgaWYgaXQgaXMgZGVyaXZlZCBmcm9tIHRoZSBtYWluIG5hbWUKKyAgICAg ICAgICAgICAgICAgICAgICAgZW50ZXJlZCBieSB0aGUgdXNlci4gIEZvciBl eGFtcGxlLCBpZiB0aGUgdXNlciBlbnRlcmVkCisgICAgICAgICAgICAgICAg ICAgICAgIHRoZSBuYW1lIG9mIHN0cnVjdCB0eXBlLCB0aGVuIHdoZW4gZXhw bG9yaW5nIHRoZSBmaWVsZHMKKyAgICAgICAgICAgICAgICAgICAgICAgb2Yg dGhlIHN0cnVjdCwgaXNfY2hpbGQgaXMgc2V0IHRvIFRydWUgaW50ZXJuYWxs eS4KKyAKKyAgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICAgTm8gcmV0 dXJuIHZhbHVlLgorICAgICAgICAgIiIiCisgICAgICAgICB0eXBlX2NvZGUg PSBkYXRhdHlwZS5jb2RlCisgICAgICAgICBpZiB0eXBlX2NvZGUgaW4gRXhw bG9yZXIudHlwZV9jb2RlX3RvX2V4cGxvcmVyX21hcDoKKyAgICAgICAgICAg ICBleHBsb3Jlcl9jbGFzcyA9IEV4cGxvcmVyLnR5cGVfY29kZV90b19leHBs b3Jlcl9tYXBbdHlwZV9jb2RlXQorICAgICAgICAgICAgIHdoaWxlIGV4cGxv cmVyX2NsYXNzLmV4cGxvcmVfdHlwZShuYW1lLCBkYXRhdHlwZSwgaXNfY2hp bGQpOgorICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgIHByaW50ICgiRXhwbG9yZXIgZm9yIHR5cGUgJyVzJyBu b3QgeWV0IGF2YWlsYWJsZS5cbiIgJQorICAgICAgICAgICAgICAgICAgICBz dHIoZGF0YXR5cGUpKQorIAorICAgICBAc3RhdGljbWV0aG9kCisgICAgIGRl ZiBpbml0X2VudigpOgorICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgdGhlIEV4 cGxvcmVyIGVudmlyb25tZW50LgorICAgICAgICAgVGhpcyBmdW5jdGlvbiBz aG91bGQgYmUgaW52b2tlZCBiZWZvcmUgc3RhcnRpbmcgYW55IGV4cGxvcmF0 aW9uLiAgSWYKKyAgICAgICAgIGludm9rZWQgYmVmb3JlIGFuIGV4cGxvcmF0 aW9uLCBpdCBuZWVkIG5vdCBiZSBpbnZva2VkIGZvciBzdWJzZXF1ZW50Cisg ICAgICAgICBleHBsb3JhdGlvbnMuCisgICAgICAgICAiIiIKKyAgICAgICAg IEV4cGxvcmVyLnR5cGVfY29kZV90b19leHBsb3Jlcl9tYXAgPSB7CisgICAg ICAgICAgICAgZ2RiLlRZUEVfQ09ERV9DSEFSIDogU2NhbGFyRXhwbG9yZXIs CisgICAgICAgICAgICAgZ2RiLlRZUEVfQ09ERV9JTlQgOiBTY2FsYXJFeHBs b3JlciwKKyAgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX0JPT0wgOiBTY2Fs YXJFeHBsb3JlciwKKyAgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX0ZMVCA6 IFNjYWxhckV4cGxvcmVyLAorICAgICAgICAgICAgIGdkYi5UWVBFX0NPREVf Vk9JRCA6IFNjYWxhckV4cGxvcmVyLAorICAgICAgICAgICAgIGdkYi5UWVBF X0NPREVfRU5VTSA6IFNjYWxhckV4cGxvcmVyLAorICAgICAgICAgICAgIGdk Yi5UWVBFX0NPREVfU1RSVUNUIDogQ29tcG91bmRFeHBsb3JlciwKKyAgICAg ICAgICAgICBnZGIuVFlQRV9DT0RFX1VOSU9OIDogQ29tcG91bmRFeHBsb3Jl ciwKKyAgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX1BUUiA6IFBvaW50ZXJF eHBsb3JlciwKKyAgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX1JFRiA6IFJl ZmVyZW5jZUV4cGxvcmVyLAorICAgICAgICAgICAgIGdkYi5UWVBFX0NPREVf VFlQRURFRiA6IFR5cGVkZWZFeHBsb3JlciwKKyAgICAgICAgICAgICBnZGIu VFlQRV9DT0RFX0FSUkFZIDogQXJyYXlFeHBsb3JlcgorICAgICAgICAgfQor IAorICAgICBAc3RhdGljbWV0aG9kCisgICAgIGRlZiBpc19zY2FsYXJfdHlw ZSh0eXBlKToKKyAgICAgICAgICIiIkNoZWNrcyB3aGV0aGVyIGEgdHlwZSBp cyBhIHNjYWxhciB0eXBlLgorICAgICAgICAgQSB0eXBlIGlzIGEgc2NhbGFy IHR5cGUgb2YgaXRzIHR5cGUgaXMKKyAgICAgICAgICAgICBnZGIuVFlQRV9D T0RFX0NIQVIgb3IKKyAgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX0lOVCBv cgorICAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfQk9PTCBvcgorICAgICAg ICAgICAgIGdkYi5UWVBFX0NPREVfRkxUIG9yCisgICAgICAgICAgICAgZ2Ri LlRZUEVfQ09ERV9WT0lEIG9yCisgICAgICAgICAgICAgZ2RiLlRZUEVfQ09E RV9FTlVNLgorIAorICAgICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAg IHR5cGU6IFRoZSB0eXBlIHRvIGJlIGNoZWNrZWQuCisgCisgICAgICAgICBS ZXR1cm5zOgorICAgICAgICAgICAgICdUcnVlJyBpZiAndHlwZScgaXMgYSBz Y2FsYXIgdHlwZS4gJ0ZhbHNlJyBvdGhlcndpc2UuCisgICAgICAgICAiIiIK KyAgICAgICAgIHJldHVybiB0eXBlLmNvZGUgaW4gRXhwbG9yZXIuX1NDQUxB Ul9UWVBFX0xJU1QKKyAKKyAgICAgQHN0YXRpY21ldGhvZAorICAgICBkZWYg cmV0dXJuX3RvX3BhcmVudF92YWx1ZSgpOgorICAgICAgICAgIiIiQSB1dGls aXR5IGZ1bmN0aW9uIHdoaWNoIHByaW50cyB0aGF0IHRoZSBjdXJyZW50IGV4 cGxvcmF0aW9uIHNlc3Npb24KKyAgICAgICAgIGlzIHJldHVybmluZyB0byB0 aGUgcGFyZW50IHZhbHVlLiBVc2VmdWwgd2hlbiBleHBsb3JpbmcgdmFsdWVz LgorICAgICAgICAgIiIiCisgICAgICAgICBwcmludCAiXG5SZXR1cm5pbmcg dG8gcGFyZW50IHZhbHVlLi4uXG4iCisgICAgICAgICAKKyAgICAgQHN0YXRp Y21ldGhvZAorICAgICBkZWYgcmV0dXJuX3RvX3BhcmVudF92YWx1ZV9wcm9t cHQoKToKKyAgICAgICAgICIiIkEgdXRpbGl0eSBmdW5jdGlvbiB3aGljaCBw cm9tcHRzIHRoZSB1c2VyIHRvIHByZXNzIHRoZSAnZW50ZXInIGtleQorICAg ICAgICAgc28gdGhhdCB0aGUgZXhwbG9yYXRpb24gc2Vzc2lvbiBjYW4gc2hp ZnQgYmFjayB0byB0aGUgcGFyZW50IHZhbHVlLgorICAgICAgICAgVXNlZnVs IHdoZW4gZXhwbG9yaW5nIHZhbHVlcy4KKyAgICAgICAgICIiIgorICAgICAg ICAgcmF3X2lucHV0KCJcblByZXNzIGVudGVyIHRvIHJldHVybiB0byBwYXJl bnQgdmFsdWU6ICIpCisgICAgICAgICAKKyAgICAgQHN0YXRpY21ldGhvZAor ICAgICBkZWYgcmV0dXJuX3RvX2VuY2xvc2luZ190eXBlKCk6CisgICAgICAg ICAiIiJBIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggcHJpbnRzIHRoYXQgdGhl IGN1cnJlbnQgZXhwbG9yYXRpb24gc2Vzc2lvbgorICAgICAgICAgaXMgcmV0 dXJuaW5nIHRvIHRoZSBlbmNsb3NpbmcgdHlwZS4gIFVzZWZ1bCB3aGVuIGV4 cGxvcmluZyB0eXBlcy4KKyAgICAgICAgICIiIgorICAgICAgICAgcHJpbnQg IlxuUmV0dXJuaW5nIHRvIGVuY2xvc2luZyB0eXBlLi4uXG4iCisgICAgICAg ICAKKyAgICAgQHN0YXRpY21ldGhvZAorICAgICBkZWYgcmV0dXJuX3RvX2Vu Y2xvc2luZ190eXBlX3Byb21wdCgpOgorICAgICAgICAgIiIiQSB1dGlsaXR5 IGZ1bmN0aW9uIHdoaWNoIHByb21wdHMgdGhlIHVzZXIgdG8gcHJlc3MgdGhl ICdlbnRlcicga2V5CisgICAgICAgICBzbyB0aGF0IHRoZSBleHBsb3JhdGlv biBzZXNzaW9uIGNhbiBzaGlmdCBiYWNrIHRvIHRoZSBlbmNsb3NpbmcgdHlw ZS4KKyAgICAgICAgIFVzZWZ1bCB3aGVuIGV4cGxvcmluZyB0eXBlcy4KKyAg ICAgICAgICIiIgorICAgICAgICAgcmF3X2lucHV0KCJcblByZXNzIGVudGVy IHRvIHJldHVybiB0byBlbmNsb3NpbmcgdHlwZTogIikKKyAKKyAKKyBjbGFz cyBTY2FsYXJFeHBsb3JlcihvYmplY3QpOgorICAgICAiIiJJbnRlcm5hbCBj bGFzcyB1c2VkIHRvIGV4cGxvcmUgc2NhbGFyIHZhbHVlcy4iIiIKKyAKKyAg ICAgQHN0YXRpY21ldGhvZAorICAgICBkZWYgZXhwbG9yZV9leHByKGV4cHIs IHZhbHVlLCBpc19jaGlsZCk6CisgICAgICAgICAiIiJGdW5jdGlvbiB0byBl eHBsb3JlIHNjYWxhciB2YWx1ZXMuCisgICAgICAgICBTZWUgRXhwbG9yZXIu ZXhwbG9yZV9leHByIGFuZCBFeHBsb3Jlci5pc19zY2FsYXJfdHlwZSBmb3Ig bW9yZQorICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAiIiIKKyAg ICAgICAgIHByaW50ICgiJyVzJyBpcyBhIHNjYWxhciB2YWx1ZSBvZiB0eXBl ICclcycuIiAlCisgICAgICAgICAgICAgICAgKGV4cHIsIHZhbHVlLnR5cGUp KQorICAgICAgICAgcHJpbnQgIiVzID0gJXMiICUgKGV4cHIsIHN0cih2YWx1 ZSkpCisgCisgICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgICBF eHBsb3Jlci5yZXR1cm5fdG9fcGFyZW50X3ZhbHVlX3Byb21wdCgpCisgICAg ICAgICAgICAgRXhwbG9yZXIucmV0dXJuX3RvX3BhcmVudF92YWx1ZSgpCisg CisgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyAgICAgQHN0YXRpY21ldGhv ZAorICAgICBkZWYgZXhwbG9yZV90eXBlKG5hbWUsIGRhdGF0eXBlLCBpc19j aGlsZCk6CisgICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3JlIHNjYWxh ciB0eXBlcy4KKyAgICAgICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX3R5cGUg YW5kIEV4cGxvcmVyLmlzX3NjYWxhcl90eXBlIGZvciBtb3JlCisgICAgICAg ICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICIiIgorICAgICAgICAgaWYgZGF0 YXR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX0VOVU06CisgICAgICAgICAg ICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAgICAgIHByaW50ICgiJXMg aXMgb2YgYW4gZW51bWVyYXRlZCB0eXBlICclcycuIiAlCisgICAgICAgICAg ICAgICAgICAgICAgICAobmFtZSwgc3RyKGRhdGF0eXBlKSkpCisgICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgcHJpbnQgIiclcycgaXMg YW4gZW51bWVyYXRlZCB0eXBlLiIgJSBuYW1lCisgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgIGlmIGlzX2NoaWxkOgorICAgICAgICAgICAgICAgICBw cmludCAoIiVzIGlzIG9mIGEgc2NhbGFyIHR5cGUgJyVzJy4iICUKKyAgICAg ICAgICAgICAgICAgICAgICAgIChuYW1lLCBzdHIoZGF0YXR5cGUpKSkKKyAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICBwcmludCAiJyVz JyBpcyBhIHNjYWxhciB0eXBlLiIgJSBuYW1lCisgCisgICAgICAgICBpZiBp c19jaGlsZDoKKyAgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fZW5j bG9zaW5nX3R5cGVfcHJvbXB0KCkKKyAgICAgICAgICAgICBFeHBsb3Jlci5y ZXR1cm5fdG9fZW5jbG9zaW5nX3R5cGUoKQorIAorICAgICAgICAgcmV0dXJu IEZhbHNlCisgCisgCisgY2xhc3MgUG9pbnRlckV4cGxvcmVyKG9iamVjdCk6 CisgICAgICIiIkludGVybmFsIGNsYXNzIHVzZWQgdG8gZXhwbG9yZSBwb2lu dGVyIHZhbHVlcy4iIiIKKyAKKyAgICAgQHN0YXRpY21ldGhvZAorICAgICBk ZWYgZXhwbG9yZV9leHByKGV4cHIsIHZhbHVlLCBpc19jaGlsZCk6CisgICAg ICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3JlIHBvaW50ZXIgdmFsdWVzLgor ICAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxvcmVfZXhwciBmb3IgbW9yZSBp bmZvcm1hdGlvbi4KKyAgICAgICAgICIiIgorICAgICAgICAgcHJpbnQgKCIn JXMnIGlzIGEgcG9pbnRlciB0byBhIHZhbHVlIG9mIHR5cGUgJyVzJyIgJQor ICAgICAgICAgICAgICAgIChleHByLCBzdHIodmFsdWUudHlwZS50YXJnZXQo KSkpKQorICAgICAgICAgb3B0aW9uICA9IHJhd19pbnB1dCgiQ29udGludWUg ZXhwbG9yaW5nIGl0IGFzIGEgcG9pbnRlciB0byBhIHNpbmdsZSAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBbeS9uXTogIikKKyAg ICAgICAgIGlmIG9wdGlvbiA9PSAieSI6CisgICAgICAgICAgICAgZGVyZWZf dmFsdWUgPSBOb25lCisgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg ICAgICBkZXJlZl92YWx1ZSA9IHZhbHVlLmRlcmVmZXJlbmNlKCkKKyAgICAg ICAgICAgICAgICAgc3RyKGRlcmVmX3ZhbHVlKQorICAgICAgICAgICAgIGV4 Y2VwdCBnZGIuTWVtb3J5RXJyb3I6CisgICAgICAgICAgICAgICAgIHByaW50 ICgiJyVzJyBhIHBvaW50ZXIgcG9pbnRpbmcgdG8gYW4gaW52YWxpZCBtZW1v cnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uLiIgJSBl eHByKQorICAgICAgICAgICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAg ICAgICAgICAgICAgIEV4cGxvcmVyLnJldHVybl90b19wYXJlbnRfdmFsdWVf cHJvbXB0KCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg ICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV9leHByKCIqJXMiICUgRXhwbG9y ZXIuZ3VhcmRfZXhwcihleHByKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVyZWZfdmFsdWUsIGlzX2NoaWxkKQorICAgICAgICAg ICAgIHJldHVybiBGYWxzZQorICAgICAgICAgCisgICAgICAgICBvcHRpb24g ID0gcmF3X2lucHV0KCJDb250aW51ZSBleHBsb3JpbmcgaXQgYXMgYSBwb2lu dGVyIHRvIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFy cmF5IFt5L25dOiAiKQorICAgICAgICAgaWYgb3B0aW9uID09ICJ5IjoKKyAg ICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICBpbmRl eCA9IDAKKyAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg ICAgICAgaW5kZXggPSBpbnQocmF3X2lucHV0KCJFbnRlciB0aGUgaW5kZXgg b2YgdGhlIGVsZW1lbnQgeW91ICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAid2FudCB0byBleHBsb3JlIGluICclcyc6 ICIgJSBleHByKSkKKyAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJy b3I6CisgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg ICAgICBlbGVtZW50X2V4cHIgPSAiJXNbJWRdIiAlIChFeHBsb3Jlci5ndWFy ZF9leHByKGV4cHIpLCBpbmRleCkKKyAgICAgICAgICAgICAgICAgZWxlbWVu dCA9IHZhbHVlW2luZGV4XQorICAgICAgICAgICAgICAgICB0cnk6CisgICAg ICAgICAgICAgICAgICAgICBzdHIoZWxlbWVudCkKKyAgICAgICAgICAgICAg ICAgZXhjZXB0IGdkYi5NZW1vcnlFcnJvcjoKKyAgICAgICAgICAgICAgICAg ICAgIHByaW50ICJDYW5ub3QgcmVhZCB2YWx1ZSBhdCBpbmRleCAlZC4iICUg aW5kZXgKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg ICAgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVfZXhwcihlbGVtZW50X2V4cHIs IGVsZW1lbnQsIFRydWUpCisgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg CisgICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgICBFeHBsb3Jl ci5yZXR1cm5fdG9fcGFyZW50X3ZhbHVlKCkKKyAgICAgICAgIHJldHVybiBG YWxzZQorIAorICAgICBAc3RhdGljbWV0aG9kCisgICAgIGRlZiBleHBsb3Jl X3R5cGUobmFtZSwgZGF0YXR5cGUsIGlzX2NoaWxkKToKKyAgICAgICAgICIi IkZ1bmN0aW9uIHRvIGV4cGxvcmUgcG9pbnRlciB0eXBlcy4KKyAgICAgICAg IFNlZSBFeHBsb3Jlci5leHBsb3JlX3R5cGUgZm9yIG1vcmUgaW5mb3JtYXRp b24uCisgICAgICAgICAiIiIKKyAgICAgICAgIHRhcmdldF90eXBlID0gZGF0 YXR5cGUudGFyZ2V0KCkKKyAgICAgICAgIHByaW50ICgiXG4lcyBpcyBhIHBv aW50ZXIgdG8gYSB2YWx1ZSBvZiB0eXBlICclcycuIiAlCisgICAgICAgICAg ICAgICAgKG5hbWUsIHN0cih0YXJnZXRfdHlwZSkpKQorIAorICAgICAgICAg RXhwbG9yZXIuZXhwbG9yZV90eXBlKCJ0aGUgcG9pbnRlZSB0eXBlIG9mICVz IiAlIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy Z2V0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNf Y2hpbGQpCisgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyAKKyBjbGFzcyBS ZWZlcmVuY2VFeHBsb3JlcihvYmplY3QpOgorICAgICAiIiJJbnRlcm5hbCBj bGFzcyB1c2VkIHRvIGV4cGxvcmUgcmVmZXJlbmNlIChUWVBFX0NPREVfUkVG KSB2YWx1ZXMuIiIiCisgCisgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgZGVm IGV4cGxvcmVfZXhwcihleHByLCB2YWx1ZSwgaXNfY2hpbGQpOgorICAgICAg ICAgIiIiRnVuY3Rpb24gdG8gZXhwbG9yZSBhcnJheSB2YWx1ZXMuCisgICAg ICAgICBTZWUgRXhwbG9yZXIuZXhwbG9yZV9leHByIGZvciBtb3JlIGluZm9y bWF0aW9uLgorICAgICAgICAgIiIiCisgICAgICAgICByZWZlcmVuY2VkX3Zh bHVlID0gdmFsdWUucmVmZXJlbmNlZF92YWx1ZSgpCisgICAgICAgICBFeHBs b3Jlci5leHBsb3JlX2V4cHIoZXhwciwgcmVmZXJlbmNlZF92YWx1ZSwgaXNf Y2hpbGQpCisgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyAgICAgQHN0YXRp Y21ldGhvZAorICAgICBkZWYgZXhwbG9yZV90eXBlKG5hbWUsIGRhdGF0eXBl LCBpc19jaGlsZCk6CisgICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3Jl IHBvaW50ZXIgdHlwZXMuCisgICAgICAgICBTZWUgRXhwbG9yZXIuZXhwbG9y ZV90eXBlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgIiIiCisg ICAgICAgICB0YXJnZXRfdHlwZSA9IGRhdGF0eXBlLnRhcmdldCgpCisgICAg ICAgICBFeHBsb3Jlci5leHBsb3JlX3R5cGUobmFtZSwgdGFyZ2V0X3R5cGUs IGlzX2NoaWxkKQorICAgICAgICAgcmV0dXJuIEZhbHNlCisgCisgCisgY2xh c3MgQXJyYXlFeHBsb3JlcihvYmplY3QpOgorICAgICAiIiJJbnRlcm5hbCBj bGFzcyB1c2VkIHRvIGV4cGxvcmUgYXJyYXlzLiIiIgorIAorICAgICBAc3Rh dGljbWV0aG9kCisgICAgIGRlZiBleHBsb3JlX2V4cHIoZXhwciwgdmFsdWUs IGlzX2NoaWxkKToKKyAgICAgICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxvcmUg YXJyYXkgdmFsdWVzLgorICAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxvcmVf ZXhwciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICIiIgorICAg ICAgICAgdGFyZ2V0X3R5cGUgPSB2YWx1ZS50eXBlLnRhcmdldCgpCisgICAg ICAgICBwcmludCAoIiclcycgaXMgYW4gYXJyYXkgb2YgJyVzJy4iICUgKGV4 cHIsIHN0cih0YXJnZXRfdHlwZSkpKQorICAgICAgICAgaW5kZXggPSAwCisg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgaW5kZXggPSBpbnQocmF3X2lu cHV0KCJFbnRlciB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgeW91IHdhbnQg dG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhw bG9yZSBpbiAnJXMnOiAiICUgZXhwcikpCisgICAgICAgICBleGNlcHQgVmFs dWVFcnJvcjoKKyAgICAgICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAg ICAgICAgICAgRXhwbG9yZXIucmV0dXJuX3RvX3BhcmVudF92YWx1ZSgpCisg ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgCisgICAgICAgICBlbGVtZW50 ID0gTm9uZQorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGVsZW1lbnQg PSB2YWx1ZVtpbmRleF0KKyAgICAgICAgICAgICBzdHIoZWxlbWVudCkKKyAg ICAgICAgIGV4Y2VwdCBnZGIuTWVtb3J5RXJyb3I6CisgICAgICAgICAgICAg cHJpbnQgIkNhbm5vdCByZWFkIHZhbHVlIGF0IGluZGV4ICVkLiIgJSBpbmRl eAorICAgICAgICAgICAgIHJhd19pbnB1dCgiUHJlc3MgZW50ZXIgdG8gY29u dGludWUuLi4gIikKKyAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAg ICAgICAgIAorICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV9leHByKCIlc1sl ZF0iICUgKEV4cGxvcmVyLmd1YXJkX2V4cHIoZXhwciksIGluZGV4KSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LCBUcnVlKQor ICAgICAgICAgcmV0dXJuIFRydWUKKyAKKyAgICAgQHN0YXRpY21ldGhvZAor ICAgICBkZWYgZXhwbG9yZV90eXBlKG5hbWUsIGRhdGF0eXBlLCBpc19jaGls ZCk6CisgICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3JlIGFycmF5IHR5 cGVzLgorICAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxvcmVfdHlwZSBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICIiIgorICAgICAgICAgdGFy Z2V0X3R5cGUgPSBkYXRhdHlwZS50YXJnZXQoKQorICAgICAgICAgcHJpbnQg IiVzIGlzIGFuIGFycmF5IG9mICclcycuIiAlIChuYW1lLCBzdHIodGFyZ2V0 X3R5cGUpKQorIAorICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV90eXBlKCJ0 aGUgYXJyYXkgZWxlbWVudCBvZiAlcyIgJSBuYW1lLCB0YXJnZXRfdHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jaGlsZCkKKyAg ICAgICAgIHJldHVybiBGYWxzZQorIAorIAorIGNsYXNzIENvbXBvdW5kRXhw bG9yZXIob2JqZWN0KToKKyAgICAgIiIiSW50ZXJuYWwgY2xhc3MgdXNlZCB0 byBleHBsb3JlIHN0cnVjdCwgY2xhc3NlcyBhbmQgdW5pb25zLiIiIgorIAor ICAgICBAc3RhdGljbWV0aG9kCisgICAgIGRlZiBfcHJpbnRfZmllbGRzKHBy aW50X2xpc3QpOgorICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24gd2hp Y2ggcHJpbnRzIHRoZSBmaWVsZHMgb2YgYSBzdHJ1Y3QvY2xhc3MvdW5pb24u CisgICAgICAgICAiIiIKKyAgICAgICAgIG1heF9maWVsZF9uYW1lX2xlbmd0 aCA9IDAKKyAgICAgICAgIGZvciBwYWlyIGluIHByaW50X2xpc3Q6CisgICAg ICAgICAgICAgaWYgbWF4X2ZpZWxkX25hbWVfbGVuZ3RoIDwgbGVuKHBhaXJb MF0pOgorICAgICAgICAgICAgICAgICBtYXhfZmllbGRfbmFtZV9sZW5ndGgg PSBsZW4ocGFpclswXSkKKyAKKyAgICAgICAgIGZvcm1hdF9zdHIgPSAiICB7 MDo+JWR9ID0gezF9IiAlIG1heF9maWVsZF9uYW1lX2xlbmd0aAorICAgICAg ICAgZm9yIHBhaXIgaW4gcHJpbnRfbGlzdDoKKyAgICAgICAgICAgICBwcmlu dCBmb3JtYXRfc3RyLmZvcm1hdChwYWlyWzBdLCBwYWlyWzFdKQorIAorICAg ICBAc3RhdGljbWV0aG9kCisgICAgIGRlZiBfZ2V0X3JlYWxfZmllbGRfY291 bnQoZmllbGRzKToKKyAgICAgICAgIHJlYWxfZmllbGRfY291bnQgPSAwOwor ICAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkczoKKyAgICAgICAgICAgICBp ZiBub3QgZmllbGQuYXJ0aWZpY2lhbDoKKyAgICAgICAgICAgICAgICAgcmVh bF9maWVsZF9jb3VudCA9IHJlYWxfZmllbGRfY291bnQgKyAxCisgCisgICAg ICAgICByZXR1cm4gcmVhbF9maWVsZF9jb3VudAorIAorICAgICBAc3RhdGlj bWV0aG9kCisgICAgIGRlZiBleHBsb3JlX2V4cHIoZXhwciwgdmFsdWUsIGlz X2NoaWxkKToKKyAgICAgICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxvcmUgc3Ry dWN0cy9jbGFzc2VzIGFuZCB1bmlvbiB2YWx1ZXMuCisgICAgICAgICBTZWUg RXhwbG9yZXIuZXhwbG9yZV9leHByIGZvciBtb3JlIGluZm9ybWF0aW9uLgor ICAgICAgICAgIiIiCisgICAgICAgICBkYXRhdHlwZSA9IHZhbHVlLnR5cGUK KyAgICAgICAgIHR5cGVfY29kZSA9IGRhdGF0eXBlLmNvZGUKKyAgICAgICAg IGZpZWxkcyA9IGRhdGF0eXBlLmZpZWxkcygpCisgCisgICAgICAgICBpZiB0 eXBlX2NvZGUgPT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6CisgICAgICAgICAg ICAgdHlwZV9kZXNjID0gInN0cnVjdC9jbGFzcyIKKyAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgdHlwZV9kZXNjID0gInVuaW9uIgorIAorICAgICAg ICAgaWYgQ29tcG91bmRFeHBsb3Jlci5fZ2V0X3JlYWxfZmllbGRfY291bnQo ZmllbGRzKSA9PSAwOgorICAgICAgICAgICAgIHByaW50ICgiVGhlIHZhbHVl IG9mICclcycgaXMgYSAlcyBvZiB0eXBlICclcycgd2l0aCBubyBmaWVsZHMu IiAlCisgICAgICAgICAgICAgICAgICAgIChleHByLCB0eXBlX2Rlc2MsIHN0 cih2YWx1ZS50eXBlKSkpCisgICAgICAgICAgICAgaWYgaXNfY2hpbGQ6Cisg ICAgICAgICAgICAgICAgIEV4cGxvcmVyLnJldHVybl90b19wYXJlbnRfdmFs dWVfcHJvbXB0KCkKKyAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyAg ICAgICAgIHByaW50ICgiVGhlIHZhbHVlIG9mICclcycgaXMgYSAlcyBvZiB0 eXBlICclcycgd2l0aCB0aGUgZm9sbG93aW5nICIKKyAgICAgICAgICAgICAg ICJmaWVsZHM6XG4iICUgKGV4cHIsIHR5cGVfZGVzYywgc3RyKHZhbHVlLnR5 cGUpKSkKKyAKKyAgICAgICAgIGhhc19leHBsb3JhYmxlX2ZpZWxkcyA9IEZh bHNlCisgICAgICAgICBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwID0g eyB9CisgICAgICAgICBjdXJyZW50X2Nob2ljZSA9IDAKKyAgICAgICAgIHBy aW50X2xpc3QgPSBbIF0KKyAgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6 CisgICAgICAgICAgICAgaWYgZmllbGQuYXJ0aWZpY2lhbDoKKyAgICAgICAg ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICBmaWVsZF9mdWxsX25h bWUgPSBFeHBsb3Jlci5ndWFyZF9leHByKGV4cHIpICsgIi4iICsgZmllbGQu bmFtZQorICAgICAgICAgICAgIGlmIGZpZWxkLmlzX2Jhc2VfY2xhc3M6Cisg ICAgICAgICAgICAgICAgIGZpZWxkX3ZhbHVlID0gdmFsdWUuY2FzdChmaWVs ZC50eXBlKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg IGZpZWxkX3ZhbHVlID0gdmFsdWVbZmllbGQubmFtZV0KKyAgICAgICAgICAg ICBsaXRlcmFsX3ZhbHVlID0gIiIKKyAgICAgICAgICAgICBpZiB0eXBlX2Nv ZGUgPT0gZ2RiLlRZUEVfQ09ERV9VTklPTjoKKyAgICAgICAgICAgICAgICAg bGl0ZXJhbF92YWx1ZSA9ICgiPEVudGVyICVkIHRvIGV4cGxvcmUgdGhpcyBm aWVsZCBvZiB0eXBlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiJyVzJz4iICUgKGN1cnJlbnRfY2hvaWNlLCBzdHIoZmllbGQudHlw ZSkpKQorICAgICAgICAgICAgICAgICBoYXNfZXhwbG9yYWJsZV9maWVsZHMg PSBUcnVlCisgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg aWYgRXhwbG9yZXIuaXNfc2NhbGFyX3R5cGUoZmllbGQudHlwZSk6CisgICAg ICAgICAgICAgICAgICAgICBsaXRlcmFsX3ZhbHVlID0gKCIlcyAuLiAoVmFs dWUgb2YgdHlwZSAnJXMnKSIgJQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc3RyKGZpZWxkX3ZhbHVlKSwgc3RyKGZpZWxkLnR5 cGUpKSkKKyAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICAgICAgIGlmIGZpZWxkLmlzX2Jhc2VfY2xhc3M6CisgICAgICAgICAgICAg ICAgICAgICAgICAgZmllbGRfZGVzYyA9ICJiYXNlIGNsYXNzIgorICAgICAg ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAg ICBmaWVsZF9kZXNjID0gImZpZWxkIgorICAgICAgICAgICAgICAgICAgICAg bGl0ZXJhbF92YWx1ZSA9ICgiPEVudGVyICVkIHRvIGV4cGxvcmUgdGhpcyAl cyBvZiB0eXBlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiclcyc+IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjdXJyZW50X2Nob2ljZSwgZmllbGRfZGVzYywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihmaWVsZC50 eXBlKSkpCisgICAgICAgICAgICAgICAgICAgICBoYXNfZXhwbG9yYWJsZV9m aWVsZHMgPSBUcnVlCisgCisgICAgICAgICAgICAgY2hvaWNlX3RvX2NvbXBv dW5kX2ZpZWxkX21hcFtzdHIoY3VycmVudF9jaG9pY2UpXSA9ICgKKyAgICAg ICAgICAgICAgICAgZmllbGRfZnVsbF9uYW1lLCBmaWVsZF92YWx1ZSkKKyAg ICAgICAgICAgICBjdXJyZW50X2Nob2ljZSA9IGN1cnJlbnRfY2hvaWNlICsg MQorIAorICAgICAgICAgICAgIHByaW50X2xpc3QuYXBwZW5kKChmaWVsZC5u YW1lLCBsaXRlcmFsX3ZhbHVlKSkKKyAKKyAgICAgICAgIENvbXBvdW5kRXhw bG9yZXIuX3ByaW50X2ZpZWxkcyhwcmludF9saXN0KQorICAgICAgICAgcHJp bnQgIiIKKyAKKyAgICAgICAgIGlmIGhhc19leHBsb3JhYmxlX2ZpZWxkczoK KyAgICAgICAgICAgICBjaG9pY2UgPSByYXdfaW5wdXQoIkVudGVyIHRoZSBm aWVsZCBudW1iZXIgb2YgY2hvaWNlOiAiKQorICAgICAgICAgICAgIGlmIGNo b2ljZSBpbiBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwOgorICAgICAg ICAgICAgICAgICBFeHBsb3Jlci5leHBsb3JlX2V4cHIoY2hvaWNlX3RvX2Nv bXBvdW5kX2ZpZWxkX21hcFtjaG9pY2VdWzBdLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlX3RvX2NvbXBvdW5kX2Zp ZWxkX21hcFtjaG9pY2VdWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVHJ1ZSkKKyAgICAgICAgICAgICAgICAgcmV0dXJu IFRydWUKKyAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICBp ZiBpc19jaGlsZDoKKyAgICAgICAgICAgICAgICAgICAgIEV4cGxvcmVyLnJl dHVybmluZ190b19wYXJlbnRfdmFsdWVfbWVzc2FnZSgpCisgICAgICAgICBl bHNlOgorICAgICAgICAgICAgIGlmIGlzX2NoaWxkOgorICAgICAgICAgICAg ICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fcGFyZW50X3ZhbHVlX3Byb21wdCgp CisgCisgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyAgICAgQHN0YXRpY21l dGhvZAorICAgICBkZWYgZXhwbG9yZV90eXBlKG5hbWUsIGRhdGF0eXBlLCBp c19jaGlsZCk6CisgICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3JlIHN0 cnVjdC9jbGFzcyBhbmQgdW5pb24gdHlwZXMuCisgICAgICAgICBTZWUgRXhw bG9yZXIuZXhwbG9yZV90eXBlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAg ICAgICAgIiIiCisgICAgICAgICB0eXBlX2NvZGUgPSBkYXRhdHlwZS5jb2Rl CisgICAgICAgICB0eXBlX2Rlc2MgPSAiIgorICAgICAgICAgaWYgdHlwZV9j b2RlID09IGdkYi5UWVBFX0NPREVfU1RSVUNUOgorICAgICAgICAgICAgIHR5 cGVfZGVzYyA9ICJzdHJ1Y3QvY2xhc3MiCisgICAgICAgICBlbHNlOgorICAg ICAgICAgICAgIHR5cGVfZGVzYyA9ICJ1bmlvbiIKKyAKKyAgICAgICAgIGZp ZWxkcyA9IGRhdGF0eXBlLmZpZWxkcygpCisgICAgICAgICBpZiBDb21wb3Vu ZEV4cGxvcmVyLl9nZXRfcmVhbF9maWVsZF9jb3VudChmaWVsZHMpID09IDA6 CisgICAgICAgICAgICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAgICAg IHByaW50ICgiJXMgaXMgYSAlcyBvZiB0eXBlICclcycgd2l0aCBubyBmaWVs ZHMuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdHlwZV9k ZXNjLCBzdHIoZGF0YXR5cGUpKSkKKyAgICAgICAgICAgICAgICAgRXhwbG9y ZXIucmV0dXJuX3RvX2VuY2xvc2luZ190eXBlX3Byb21wdCgpCisgICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgcHJpbnQgIiclcycgaXMg YSAlcyB3aXRoIG5vIGZpZWxkcy4iICUgKG5hbWUsIHR5cGVfZGVzYykKKyAg ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyAgICAgICAgIGlmIGlzX2No aWxkOgorICAgICAgICAgICAgIHByaW50ICgiJXMgaXMgYSAlcyBvZiB0eXBl ICclcycgIgorICAgICAgICAgICAgICAgICAgICAid2l0aCB0aGUgZm9sbG93 aW5nIGZpZWxkczpcbiIgJQorICAgICAgICAgICAgICAgICAgICAobmFtZSwg dHlwZV9kZXNjLCBzdHIoZGF0YXR5cGUpKSkKKyAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgcHJpbnQgKCInJXMnIGlzIGEgJXMgd2l0aCB0aGUgZm9s bG93aW5nICIKKyAgICAgICAgICAgICAgICAgICAgImZpZWxkczpcbiIgJQor ICAgICAgICAgICAgICAgICAgICAobmFtZSwgdHlwZV9kZXNjKSkKKyAKKyAg ICAgICAgIGhhc19leHBsb3JhYmxlX2ZpZWxkcyA9IEZhbHNlCisgICAgICAg ICBjdXJyZW50X2Nob2ljZSA9IDAKKyAgICAgICAgIGNob2ljZV90b19jb21w b3VuZF9maWVsZF9tYXAgPSB7IH0KKyAgICAgICAgIHByaW50X2xpc3QgPSBb IF0KKyAgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAg ICAgaWYgZmllbGQuYXJ0aWZpY2lhbDoKKyAgICAgICAgICAgICAgICAgY29u dGludWUKKyAgICAgICAgICAgICBpZiBmaWVsZC5pc19iYXNlX2NsYXNzOgor ICAgICAgICAgICAgICAgICBmaWVsZF9kZXNjID0gImJhc2UgY2xhc3MiCisg ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgZmllbGRfZGVz YyA9ICJmaWVsZCIKKyAgICAgICAgICAgICByaHMgPSAoIjxFbnRlciAlZCB0 byBleHBsb3JlIHRoaXMgJXMgb2YgdHlwZSAnJXMnPiIgJQorICAgICAgICAg ICAgICAgICAgICAoY3VycmVudF9jaG9pY2UsIGZpZWxkX2Rlc2MsIHN0cihm aWVsZC50eXBlKSkpCisgICAgICAgICAgICAgcHJpbnRfbGlzdC5hcHBlbmQo KGZpZWxkLm5hbWUsIHJocykpCisgICAgICAgICAgICAgY2hvaWNlX3RvX2Nv bXBvdW5kX2ZpZWxkX21hcFtzdHIoY3VycmVudF9jaG9pY2UpXSA9ICgKKyAg ICAgICAgICAgICAgICAgZmllbGQubmFtZSwgZmllbGQudHlwZSwgZmllbGRf ZGVzYykKKyAgICAgICAgICAgICBjdXJyZW50X2Nob2ljZSA9IGN1cnJlbnRf Y2hvaWNlICsgMQorIAorICAgICAgICAgQ29tcG91bmRFeHBsb3Jlci5fcHJp bnRfZmllbGRzKHByaW50X2xpc3QpCisgICAgICAgICBwcmludCAiIgorIAor ICAgICAgICAgaWYgbGVuKGNob2ljZV90b19jb21wb3VuZF9maWVsZF9tYXAp ID4gMDoKKyAgICAgICAgICAgICBjaG9pY2UgPSByYXdfaW5wdXQoIkVudGVy IHRoZSBmaWVsZCBudW1iZXIgb2YgY2hvaWNlOiAiKQorICAgICAgICAgICAg IGlmIGNob2ljZSBpbiBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwOgor ICAgICAgICAgICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgICAg ICAgICAgIG5ld19uYW1lID0gKCIlcyAnJXMnIG9mICVzIiAlIAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNob2ljZV90b19jb21wb3Vu ZF9maWVsZF9tYXBbY2hvaWNlXVsyXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwW2No b2ljZV1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmFtZSkpCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgICAgICBuZXdfbmFtZSA9ICgiJXMgJyVzJyBvZiAnJXMnIiAlIAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNob2ljZV90b19jb21w b3VuZF9maWVsZF9tYXBbY2hvaWNlXVsyXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFw W2Nob2ljZV1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZSkpCisgICAgICAgICAgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVf dHlwZShuZXdfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGNob2ljZV90 b19jb21wb3VuZF9maWVsZF9tYXBbY2hvaWNlXVsxXSwgVHJ1ZSkKKyAgICAg ICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgICAg ICAgICAgIEV4cGxvcmVyLnJldHVybl90b19lbmNsb3NpbmdfdHlwZSgpCisg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGlmIGlzX2NoaWxkOgorICAg ICAgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fZW5jbG9zaW5nX3R5 cGVfcHJvbXB0KCkKKyAKKyAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg ICAgICAgCisgCisgY2xhc3MgVHlwZWRlZkV4cGxvcmVyKG9iamVjdCk6Cisg ICAgICIiIkludGVybmFsIGNsYXNzIHVzZWQgdG8gZXhwbG9yZSB2YWx1ZXMg d2hvc2UgdHlwZSBpcyBhIHR5cGVkZWYuIiIiCisgCisgICAgIEBzdGF0aWNt ZXRob2QKKyAgICAgZGVmIGV4cGxvcmVfZXhwcihleHByLCB2YWx1ZSwgaXNf Y2hpbGQpOgorICAgICAgICAgIiIiRnVuY3Rpb24gdG8gZXhwbG9yZSB0eXBl ZGVmIHZhbHVlcy4KKyAgICAgICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX2V4 cHIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAiIiIKKyAgICAg ICAgIGFjdHVhbF90eXBlID0gdmFsdWUudHlwZS5zdHJpcF90eXBlZGVmcygp CisgICAgICAgICBwcmludCAoIlRoZSB2YWx1ZSBvZiAnJXMnIGlzIG9mIHR5 cGUgJyVzJyAiCisgICAgICAgICAgICAgICAgIndoaWNoIGlzIGEgdHlwZWRl ZiBvZiB0eXBlICclcyciICUKKyAgICAgICAgICAgICAgICAoZXhwciwgc3Ry KHZhbHVlLnR5cGUpLCBzdHIoYWN0dWFsX3R5cGUpKSkKKyAKKyAgICAgICAg IEV4cGxvcmVyLmV4cGxvcmVfZXhwcihleHByLCB2YWx1ZS5jYXN0KGFjdHVh bF90eXBlKSwgaXNfY2hpbGQpCisgICAgICAgICByZXR1cm4gRmFsc2UKKyAK KyAgICAgQHN0YXRpY21ldGhvZAorICAgICBkZWYgZXhwbG9yZV90eXBlKG5h bWUsIGRhdGF0eXBlLCBpc19jaGlsZCk6CisgICAgICAgICAiIiJGdW5jdGlv biB0byBleHBsb3JlIHR5cGVkZWYgdHlwZXMuCisgICAgICAgICBTZWUgRXhw bG9yZXIuZXhwbG9yZV90eXBlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAg ICAgICAgIiIiCisgICAgICAgICBhY3R1YWxfdHlwZSA9IGRhdGF0eXBlLnN0 cmlwX3R5cGVkZWZzKCkKKyAgICAgICAgIGlmIGlzX2NoaWxkOgorICAgICAg ICAgICAgIHByaW50ICgiVGhlIHR5cGUgb2YgJXMgaXMgYSB0eXBlZGVmIG9m IHR5cGUgJyVzJy4iICUKKyAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHN0 cihhY3R1YWxfdHlwZSkpKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICBwcmludCAoIlRoZSB0eXBlICclcycgaXMgYSB0eXBlZGVmIG9mIHR5cGUg JyVzJy4iICUKKyAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHN0cihhY3R1 YWxfdHlwZSkpKQorIAorICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV90eXBl KG5hbWUsIGFjdHVhbF90eXBlLCBpc19jaGlsZCkKKyAgICAgICAgIHJldHVy biBGYWxzZQorIAorIAorIGNsYXNzIEV4cGxvcmVVdGlscyhvYmplY3QpOgor ICAgICAiIiJJbnRlcm5hbCBjbGFzcyB3aGljaCBwcm92aWRlcyB1dGlsaXRp ZXMgZm9yIHRoZSBtYWluIGNvbW1hbmQgY2xhc3Nlcy4iIiIKKyAKKyAgICAg QHN0YXRpY21ldGhvZAorICAgICBkZWYgY2hlY2tfYXJncyhuYW1lLCBhcmdf c3RyKToKKyAgICAgICAgICIiIlV0aWxpdHkgdG8gY2hlY2sgaWYgYWRlcXVh dGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIGFuCisgICAg ICAgICBleHBsb3JlIGNvbW1hbmQuCisgCisgICAgICAgICBBcmd1bWVudHM6 CisgICAgICAgICAgICAgbmFtZTogVGhlIG5hbWUgb2YgdGhlIGV4cGxvcmUg Y29tbWFuZC4KKyAgICAgICAgICAgICBhcmdfc3RyOiBUaGUgYXJndW1lbnQg c3RyaW5nIHBhc3NlZCB0byB0aGUgZXhwbG9yZSBjb21tYW5kLgorIAorICAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICBUcnVlIGlmIGFkZXF1YXRl IGFyZ3VtZW50cyBhcmUgcGFzc2VkLCBmYWxzZSBvdGhlcndpc2UuCisgCisg ICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICAgZ2RiLkdkYkVycm9yIGlm IGFkZXF1YXRlIGFyZ3VtZW50cyBhcmUgbm90IHBhc3NlZC4KKyAgICAgICAg ICIiIgorICAgICAgICAgaWYgbGVuKGFyZ19zdHIpIDwgMToKKyAgICAgICAg ICAgICByYWlzZSBnZGIuR2RiRXJyb3IoIkVSUk9SOiAnJXMnIHJlcXVpcmVz IGFuIGFyZ3VtZW50LiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJSBuYW1lKQorICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorIAorICAgICBA c3RhdGljbWV0aG9kCisgICAgIGRlZiBnZXRfdHlwZV9mcm9tX3N0cih0eXBl X3N0cik6CisgICAgICAgICAiIiJBIHV0aWxpdHkgZnVuY3Rpb24gdG8gZGVk dWNlIHRoZSBnZGIuVHlwZSB2YWx1ZSBmcm9tIGEgc3RyaW5nCisgICAgICAg ICByZXByZXNlbnRpbmcgdGhlIHR5cGUuCisgCisgICAgICAgICBBcmd1bWVu dHM6CisgICAgICAgICAgICAgdHlwZV9zdHI6IFRoZSB0eXBlIHN0cmluZyBm cm9tIHdoaWNoIHRoZSBnZGIuVHlwZSB2YWx1ZSBzaG91bGQgYmUKKyAgICAg ICAgICAgICAgICAgICAgICAgZGVkdWNlZC4KKyAKKyAgICAgICAgIFJldHVy bnM6CisgICAgICAgICAgICAgVGhlIGRlZHVjZWQgZ2RiLlR5cGUgdmFsdWUg aWYgcG9zc2libGUsIE5vbmUgb3RoZXJ3aXNlLgorICAgICAgICAgIiIiCisg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgIyBBc3N1bWUgdGhlIGN1cnJl bnQgbGFuZ3VhZ2UgdG8gYmUgQy9DKysgYW5kIG1ha2UgYSB0cnkuCisgICAg ICAgICAgICAgcmV0dXJuIGdkYi5wYXJzZV9hbmRfZXZhbCgiKCVzICopMCIg JSB0eXBlX3N0cikudHlwZS50YXJnZXQoKQorICAgICAgICAgZXhjZXB0IFJ1 bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAjIElmIGFzc3VtcHRpb24gb2Yg Y3VycmVudCBsYW5ndWFnZSB0byBiZSBDL0MrKyB3YXMgd3JvbmcsIHRoZW4K KyAgICAgICAgICAgICAjIGxvb2t1cCB0aGUgdHlwZSB1c2luZyB0aGUgQVBJ LgorICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgcmV0dXJu IGdkYi5sb29rdXBfdHlwZSh0eXBlX3N0cikKKyAgICAgICAgICAgICBleGNl cHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgICByZXR1cm4gTm9u ZQorIAorICAgICBAc3RhdGljbWV0aG9kCisgICAgIGRlZiBnZXRfdmFsdWVf ZnJvbV9zdHIodmFsdWVfc3RyKToKKyAgICAgICAgICIiIkEgdXRpbGl0eSBm dW5jdGlvbiB0byBkZWR1Y2UgdGhlIGdkYi5WYWx1ZSB2YWx1ZSBmcm9tIGEg c3RyaW5nCisgICAgICAgICByZXByZXNlbnRpbmcgdGhlIHZhbHVlLgorIAor ICAgICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAgIHZhbHVlX3N0cjog VGhlIHZhbHVlIHN0cmluZyBmcm9tIHdoaWNoIHRoZSBnZGIuVmFsdWUgdmFs dWUgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBkZWR1Y2Vk LgorIAorICAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICBUaGUgZGVk dWNlZCBnZGIuVmFsdWUgdmFsdWUgaWYgcG9zc2libGUsIE5vbmUgb3RoZXJ3 aXNlLgorICAgICAgICAgIiIiCisgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgcmV0dXJuIGdkYi5wYXJzZV9hbmRfZXZhbCh2YWx1ZV9zdHIpCisgICAg ICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgIHJldHVy biBOb25lCisgCisgCisgY2xhc3MgRXhwbG9yZUNvbW1hbmQoZ2RiLkNvbW1h bmQpOgorICAgICAiIiJFeHBsb3JlIGEgdmFsdWUgb3IgYSB0eXBlIHZhbGlk IGluIHRoZSBjdXJyZW50IGNvbnRleHQuCisgCisgICAgICAgIFVzYWdlOgor IAorICAgICAgICAgIGV4cGxvcmUgQVJHCisgCisgICAgICAgICAgLSBBUkcg aXMgZWl0aGVyIGEgdmFsaWQgZXhwcmVzc2lvbiBvciBhIHR5cGUgbmFtZS4K KyAgICAgICAgICAtIEF0IGFueSBzdGFnZSBvZiBleHBsb3JhdGlvbiwgaGl0 IHRoZSByZXR1cm4ga2V5IChpbnN0ZWFkIG9mIGEKKyAgICAgICAgICAgIGNo b2ljZSwgaWYgYW55KSB0byByZXR1cm4gdG8gdGhlIGVuY2xvc2luZyB0eXBl IG9yIHZhbHVlLgorICAgICAiIiIKKyAKKyAgICAgZGVmIF9faW5pdF9fKHNl bGYpOgorICAgICAgICAgc3VwZXIoRXhwbG9yZUNvbW1hbmQsIHNlbGYpLl9f aW5pdF9fKG5hbWUgPSAiZXhwbG9yZSIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9jbGFzcyA9IGdk Yi5DT01NQU5EX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJlZml4ID0gVHJ1ZSkKKyAKKyAgICAgZGVm IGludm9rZShzZWxmLCBhcmdfc3RyLCBmcm9tX3R0eSk6CisgICAgICAgICBp ZiBFeHBsb3JlVXRpbHMuY2hlY2tfYXJncygiZXhwbG9yZSIsIGFyZ19zdHIp ID09IEZhbHNlOgorICAgICAgICAgICAgIHJldHVybgorIAorICAgICAgICAg IyBDaGVjayBpZiBpdCBpcyBhIHZhbHVlCisgICAgICAgICB2YWx1ZSA9IEV4 cGxvcmVVdGlscy5nZXRfdmFsdWVfZnJvbV9zdHIoYXJnX3N0cikKKyAgICAg ICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIEV4cGxv cmVyLmV4cGxvcmVfZXhwcihhcmdfc3RyLCB2YWx1ZSwgRmFsc2UpCisgICAg ICAgICAgICAgcmV0dXJuCisgCisgICAgICAgICAjIElmIGl0IGlzIG5vdCBh IHZhbHVlLCBjaGVjayBpZiBpdCBpcyBhIHR5cGUKKyAgICAgICAgIGRhdGF0 eXBlID0gRXhwbG9yZVV0aWxzLmdldF90eXBlX2Zyb21fc3RyKGFyZ19zdHIp CisgICAgICAgICBpZiBkYXRhdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAg ICAgICBFeHBsb3Jlci5leHBsb3JlX3R5cGUoYXJnX3N0ciwgZGF0YXR5cGUs IEZhbHNlKQorICAgICAgICAgICAgIHJldHVybgorIAorICAgICAgICAgIyBJ ZiBpdCBpcyBuZWl0aGVyIGEgdmFsdWUgbm9yIGEgdHlwZSwgcmFpc2UgYW4g ZXJyb3IuCisgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoCisgICAgICAg ICAgICAgKCInJXMnIG5laXRoZXIgZXZhbHVhdGVzIHRvIGEgdmFsdWUgbm9y IGlzIGEgdHlwZSAiCisgICAgICAgICAgICAgICJpbiB0aGUgY3VycmVudCBj b250ZXh0LiIgJQorICAgICAgICAgICAgICBhcmdfc3RyKSkKKyAKKyAKKyBj bGFzcyBFeHBsb3JlVmFsdWVDb21tYW5kKGdkYi5Db21tYW5kKToKKyAgICAg IiIiRXhwbG9yZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIHZhbGlkIGluIHRo ZSBjdXJyZW50IGNvbnRleHQuCisgCisgICAgICAgIFVzYWdlOgorIAorICAg ICAgICAgIGV4cGxvcmUgdmFsdWUgQVJHCisgCisgICAgICAgICAgLSBBUkcg aXMgYSB2YWxpZCBleHByZXNzaW9uLgorICAgICAgICAgIC0gQXQgYW55IHN0 YWdlIG9mIGV4cGxvcmF0aW9uLCBoaXQgdGhlIHJldHVybiBrZXkgKGluc3Rl YWQgb2YgYQorICAgICAgICAgICAgY2hvaWNlLCBpZiBhbnkpIHRvIHJldHVy biB0byB0aGUgZW5jbG9zaW5nIHZhbHVlLgorICAgICAiIiIKKyAgCisgICAg IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgIHN1cGVyKEV4cGxvcmVW YWx1ZUNvbW1hbmQsIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAgIG5h bWUgPSAiZXhwbG9yZSB2YWx1ZSIsIGNvbW1hbmRfY2xhc3MgPSBnZGIuQ09N TUFORF9EQVRBKQorIAorICAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ19zdHIs IGZyb21fdHR5KToKKyAgICAgICAgIGlmIEV4cGxvcmVVdGlscy5jaGVja19h cmdzKCJleHBsb3JlIHZhbHVlIiwgYXJnX3N0cikgPT0gRmFsc2U6CisgICAg ICAgICAgICAgcmV0dXJuCisgCisgICAgICAgICB2YWx1ZSA9IEV4cGxvcmVV dGlscy5nZXRfdmFsdWVfZnJvbV9zdHIoYXJnX3N0cikKKyAgICAgICAgIGlm IHZhbHVlIGlzIE5vbmU6CisgICAgICAgICAgICAgcmFpc2UgZ2RiLkdkYkVy cm9yKAorICAgICAgICAgICAgICAgICAoIiAnJXMnIGRvZXMgbm90IGV2YWx1 YXRlIHRvIGEgdmFsdWUgaW4gdGhlIGN1cnJlbnQgIgorICAgICAgICAgICAg ICAgICAgImNvbnRleHQuIiAlCisgICAgICAgICAgICAgICAgICBhcmdfc3Ry KSkKKyAgICAgICAgICAgICByZXR1cm4KKyAKKyAgICAgICAgIEV4cGxvcmVy LmV4cGxvcmVfZXhwcihhcmdfc3RyLCB2YWx1ZSwgRmFsc2UpCisgCisgCisg Y2xhc3MgRXhwbG9yZVR5cGVDb21tYW5kKGdkYi5Db21tYW5kKTogICAgICAg ICAgICAKKyAgICAgIiIiRXhwbG9yZSBhIHR5cGUgb3IgdGhlIHR5cGUgb2Yg YW4gZXhwcmVzc2lvbiB2YWxpZCBpbiB0aGUgY3VycmVudAorICAgICAgICBj b250ZXh0LgorIAorICAgICAgICBVc2FnZToKKyAKKyAgICAgICAgICBleHBs b3JlIHR5cGUgQVJHCisgCisgICAgICAgICAgLSBBUkcgaXMgYSB2YWxpZCBl eHByZXNzaW9uIG9yIGEgdHlwZSBuYW1lLgorICAgICAgICAgIC0gQXQgYW55 IHN0YWdlIG9mIGV4cGxvcmF0aW9uLCBoaXQgdGhlIHJldHVybiBrZXkgKGlu c3RlYWQgb2YgYQorICAgICAgICAgICAgY2hvaWNlLCBpZiBhbnkpIHRvIHJl dHVybiB0byB0aGUgZW5jbG9zaW5nIHR5cGUuCisgICAgICIiIgorIAorICAg ICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICBzdXBlcihFeHBsb3Jl VHlwZUNvbW1hbmQsIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAgIG5h bWUgPSAiZXhwbG9yZSB0eXBlIiwgY29tbWFuZF9jbGFzcyA9IGdkYi5DT01N QU5EX0RBVEEpCisgCisgICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJnX3N0ciwg ZnJvbV90dHkpOgorICAgICAgICAgaWYgRXhwbG9yZVV0aWxzLmNoZWNrX2Fy Z3MoImV4cGxvcmUgdHlwZSIsIGFyZ19zdHIpID09IEZhbHNlOgorICAgICAg ICAgICAgIHJldHVybgorIAorICAgICAgICAgZGF0YXR5cGUgPSBFeHBsb3Jl VXRpbHMuZ2V0X3R5cGVfZnJvbV9zdHIoYXJnX3N0cikKKyAgICAgICAgIGlm IGRhdGF0eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIEV4cGxvcmVy LmV4cGxvcmVfdHlwZShhcmdfc3RyLCBkYXRhdHlwZSwgRmFsc2UpCisgICAg ICAgICAgICAgcmV0dXJuCisgCisgICAgICAgICB2YWx1ZSA9IEV4cGxvcmVV dGlscy5nZXRfdmFsdWVfZnJvbV9zdHIoYXJnX3N0cikKKyAgICAgICAgIGlm IHZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIHByaW50ICInJXMn IGlzIG9mIHR5cGUgJyVzJy4iICUgKGFyZ19zdHIsIHN0cih2YWx1ZS50eXBl KSkKKyAgICAgICAgICAgICBFeHBsb3Jlci5leHBsb3JlX3R5cGUoc3RyKHZh bHVlLnR5cGUpLCB2YWx1ZS50eXBlLCBGYWxzZSkKKyAKKyAgICAgICAgIHJh aXNlIGdkYi5HZGJFcnJvcigoIiclcycgaXMgbm90IGEgdHlwZSBvciB2YWx1 ZSBpbiB0aGUgY3VycmVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjb250ZXh0LiIgJSBhcmdfc3RyKSkKKyAKKyAKKyBFeHBsb3Jlci5p bml0X2VudigpCisgCisgRXhwbG9yZUNvbW1hbmQoKQorIEV4cGxvcmVWYWx1 ZUNvbW1hbmQoKQorIEV4cGxvcmVUeXBlQ29tbWFuZCgpCkluZGV4OiBkYXRh LWRpcmVjdG9yeS9NYWtlZmlsZS5pbgo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2RhdGEtZGlyZWN0b3J5L01h a2VmaWxlLmluLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCmRpZmYgLWMg LXAgLXIxLjEwIE1ha2VmaWxlLmluCioqKiBkYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZS5pbgk0IEphbiAyMDEyIDA4OjE3OjE5IC0wMDAwCTEuMTAKLS0tIGRh dGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTEgQXByIDIwMTIgMTg6NTU6NTQg LTAwMDAKKioqKioqKioqKioqKioqIFBZVEhPTl9GSUxFUyA9IFwKKioqIDU4 LDY0ICoqKioKICAJZ2RiL3Byb21wdC5weSBcCiAgCWdkYi9jb21tYW5kL19f aW5pdF9fLnB5IFwKICAJZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5 IFwKISAJZ2RiL2NvbW1hbmQvcHJvbXB0LnB5CiAgCiAgRkxBR1NfVE9fUEFT UyA9IFwKICAJInByZWZpeD0kKHByZWZpeCkiIFwKLS0tIDU4LDY1IC0tLS0K ICAJZ2RiL3Byb21wdC5weSBcCiAgCWdkYi9jb21tYW5kL19faW5pdF9fLnB5 IFwKICAJZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwKISAJZ2Ri L2NvbW1hbmQvcHJvbXB0LnB5IFwKISAJZ2RiL2NvbW1hbmQvZXhwbG9yZS5w eQogIAogIEZMQUdTX1RPX1BBU1MgPSBcCiAgCSJwcmVmaXg9JChwcmVmaXgp IiBcCkluZGV4OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1leHBsb3JlLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogdGVzdHN1aXRlL2dk Yi5weXRob24vcHktZXhwbG9yZS5jCmRpZmYgLU4gdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZXhwbG9yZS5jCioqKiAvZGV2L251bGwJMSBKYW4gMTk3MCAw MDowMDowMCAtMDAwMAotLS0gdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXhw bG9yZS5jCTEgQXByIDIwMTIgMTg6NTU6NTQgLTAwMDAKKioqKioqKioqKioq KioqCioqKiAwICoqKioKLS0tIDEsODIgLS0tLQorIC8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisgCisgICAg Q29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisg ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyAg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICov CisgCisgI2RlZmluZSBBUlJBWV9TSVpFIDEwCisgCisgc3RydWN0IFNpbXBs ZVN0cnVjdAorIHsKKyAgIGludCBhOworICAgZG91YmxlIGQ7CisgfTsKKyAK KyB1bmlvbiBTaW1wbGVVbmlvbgorIHsKKyAgIGludCBpOworICAgY2hhciBj OworICAgZmxvYXQgZjsKKyAgIGRvdWJsZSBkOworIH07CisgCisgdHlwZWRl ZiBzdHJ1Y3QgU2ltcGxlU3RydWN0IFNTOworIAorIHN0cnVjdCBDb21wbGV4 U3RydWN0CisgeworICAgc3RydWN0IFNpbXBsZVN0cnVjdCBzOworICAgdW5p b24gU2ltcGxlVW5pb24gdTsKKyAgIFNTIHNhW0FSUkFZX1NJWkVdOworIH07 CisgCisgdW5pb24gQ29tcGxleFVuaW9uCisgeworICAgU1MgczsKKyAgIHN0 cnVjdCBTaW1wbGVTdHJ1Y3Qgc2FbQVJSQVlfU0laRV07CisgfTsKKyAKKyBp bnQKKyBtYWluICh2b2lkKQorIHsKKyAgIHN0cnVjdCBTaW1wbGVTdHJ1Y3Qg c3M7CisgICBzdHJ1Y3QgU2ltcGxlU3RydWN0KiBzc19wdHIgPSAmc3M7Cisg ICBTUyBzc190OworIAorICAgdW5pb24gU2ltcGxlVW5pb24gc3U7CisgICBz dHJ1Y3QgQ29tcGxleFN0cnVjdCBjczsKKyAgIHN0cnVjdCBDb21wbGV4U3Ry dWN0KiBjc19wdHIgPSAmY3M7CisgICB1bmlvbiBDb21wbGV4VW5pb24gY3U7 CisgICBpbnQgaTsKKyAgIGRvdWJsZSBkYXJyYXlbNV0gPSB7MC4xLCAwLjIs IDAuMywgMC40LCAwLjV9OworICAgZG91YmxlICpkYXJyYXlfcmVmID0gZGFy cmF5OworIAorICAgc3MuYSA9IDEwOworICAgc3MuZCA9IDEwMC4wMTsKKyAg IHNzX3QgPSBzczsKKyAgIAorICAgc3UuZCA9IDEwMC4xOworIAorICAgY3Mu cyA9IHNzOworICAgY3MudSA9IHN1OworICAgZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkU7IGkrKykKKyAgICAgeworICAgICAgIGNzLnNhW2ldLmEgPSBp OworICAgICAgIGNzLnNhW2ldLmQgPSAxMC4xMCArIGk7CisgICAgICAgY3Uu c2FbaV0uYSA9IGk7CisgICAgICAgY3Uuc2FbaV0uZCA9IDEwMC4xMCArIGk7 CisgICAgIH0KKyAKKyAgIHJldHVybiAwOyAvKiBCcmVhayBoZXJlLiAqLwor IH0KSW5kZXg6IHRlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV4cGxvcmUuY2MK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogdGVzdHN1aXRlL2dk Yi5weXRob24vcHktZXhwbG9yZS5jYwpkaWZmIC1OIHRlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWV4cGxvcmUuY2MKKioqIC9kZXYvbnVsbAkxIEphbiAxOTcw IDAwOjAwOjAwIC0wMDAwCi0tLSB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1l eHBsb3JlLmNjCTEgQXByIDIwMTIgMTg6NTU6NTQgLTAwMDAKKioqKioqKioq KioqKioqCioqKiAwICoqKioKLS0tIDEsNTQgLS0tLQorIC8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisgCisg ICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK KyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor ICovCisgCisgY2xhc3MgQSB7CisgIHB1YmxpYzoKKyAgIHZpcnR1YWwgfkEo KSB7IH0KKyB9OworIAorIGNsYXNzIEIgOiBwdWJsaWMgQSB7CisgIHB1Ymxp YzoKKyAgIHZpcnR1YWwgfkIoKSB7IH0KKyAKKyAgIGludCBpOworICAgY2hh ciBjOworIH07CisgCisgdHlwZWRlZiBpbnQgKmludF9wdHI7CisgCisgaW50 CisgZnVuYyAoY29uc3QgQSAmYSkKKyB7CisgICBpbnQgdmFsID0gMTA7Cisg ICBpbnQgJmludF9yZWYgPSB2YWw7CisgICBpbnRfcHRyIHB0ciA9ICZ2YWw7 CisgICBpbnRfcHRyICZpbnRfcHRyX3JlZiA9IHB0cjsKKyAgIEIgYjsKKyAK KyAgIGIuaSA9IDEwOworICAgYi5jID0gJ2EnOworIAorICAgcmV0dXJuIDA7 IC8qIEJyZWFrIGhlcmUuICAqLworIH0KKyAKKyBpbnQKKyBtYWluICgpCisg eworICAgQSBvYmo7CisgICByZXR1cm4gZnVuYyAob2JqKTsKKyB9CkluZGV4 OiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1leHBsb3JlLmV4cAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiB0ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1leHBsb3JlLmV4cApkaWZmIC1OIHRlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWV4cGxvcmUuZXhwCioqKiAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDow MDowMCAtMDAwMAotLS0gdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXhwbG9y ZS5leHAJMSBBcHIgMjAxMiAxODo1NTo1NCAtMDAwMAoqKioqKioqKioqKioq KioKKioqIDAgKioqKgotLS0gMSw0NjkgLS0tLQorICMgQ29weXJpZ2h0IDIw MTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICMKKyAjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgIworICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorIAorIHNldCB0ZXN0ZmlsZSAicHktZXhw bG9yZSIKKyBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisgc2V0IGJpbmZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorIGlmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9 ICR7c3JjZmlsZX1dIH0geworICAgICByZXR1cm4gLTEKKyB9CisgCisgIyBT a2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFi bGVkLgorIGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUg fQorIAorIHNldCBTUyAic3RydWN0IFNpbXBsZVN0cnVjdCIKKyBzZXQgU1Ug InVuaW9uIFNpbXBsZVVuaW9uIgorIHNldCBDUyAic3RydWN0IENvbXBsZXhT dHJ1Y3QiCisgc2V0IENVICJ1bmlvbiBDb21wbGV4VW5pb24iCisgc2V0IGVu dGVyX2ZpZWxkX251bWJlcl9wcm9tcHQgIHtFbnRlciB0aGUgZmllbGQgbnVt YmVyIG9mIGNob2ljZTogfQorIHNldCByZXR1cm5fdG9fcGFyZW50X3Byb21w dCB7UHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIHBhcmVudCB2YWx1ZTogfQor IHNldCBhcnJheV9pbmRleF9wcm9tcHQge0VudGVyIHRoZSBpbmRleCBvZiB0 aGUgZWxlbWVudCB5b3Ugd2FudCB0byBleHBsb3JlIGluIC4qOiB9CisgCisg cHJvYyBjb21wb3VuZF9kZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUgdHlwZV9k ZXNjIHR5cGVfbmFtZSB9IHsKKyAgICAgcmV0dXJuICJUaGUgdmFsdWUgb2Yg JyR2YWx1ZV9uYW1lJyBpcyBhICR0eXBlX2Rlc2Mgb2YgdHlwZSAnJHR5cGVf bmFtZScgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcW1xyXG5cXSsiCisg fQorIAorIHByb2MgdHlwZWRlZl9kZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUg dHlwZWRlZl9uYW1lIHR5cGVfbmFtZSB9IHsKKyAgICAgcmV0dXJuICJUaGUg dmFsdWUgb2YgJyR2YWx1ZV9uYW1lJyBpcyBvZiB0eXBlICckdHlwZWRlZl9u YW1lJyB3aGljaCBpcyBhIHR5cGVkZWYgb2YgdHlwZSAnJHR5cGVfbmFtZSdc LlxbXHJcblxdKyIKKyB9CisgCisgcHJvYyBzY2FsYXJfZGVzY3JpcHRpb24g eyB2YWx1ZV9uYW1lIHR5cGUgfSB7CisgICAgIHJldHVybiAiJyR2YWx1ZV9u YW1lJyBpcyBhIHNjYWxhciB2YWx1ZSBvZiB0eXBlICckdHlwZSdcLlxbXHJc blxdKyIKKyB9CisgCisgcHJvYyBhcnJheV9kZXNjcmlwdGlvbiB7IHZhbHVl X25hbWUgdHlwZSB9IHsKKyAgICAgcmV0dXJuICInJHZhbHVlX25hbWUnIGlz IGFuIGFycmF5IG9mICckdHlwZSdcLlxbXHJcblxdKyIKKyB9CisgCisgcHJv YyBwb2ludGVyX2Rlc2NyaXB0aW9uIHsgdmFsdWVfbmFtZSB0eXBlX25hbWUg fSB7CisgICAgIHNldCB0eXBlX2Rlc2NyaXB0aW9uICInJHZhbHVlX25hbWUn IGlzIGEgcG9pbnRlciB0byBhIHZhbHVlIG9mIHR5cGUgJyR0eXBlX25hbWUn XC5cW1xyXG5cXSsiCisgICAgIHNldCBwcm9tcHQgIkNvbnRpbnVlIGV4cGxv cmluZyBpdCBhcyBhIHBvaW50ZXIgdG8gYSBzaW5nbGUgdmFsdWUgXFtcW1xd eS9uXFtcXVxdOiAiIAorICAgICByZXR1cm4gIiR0eXBlX2Rlc2NyaXB0aW9u JHByb21wdCIKKyB9CisgCisgcHJvYyBmaWVsZF92YWx1ZXMgeyBhcmdzIH0g eworICAgICBzZXQgcmVzdWx0ICIiCisgICAgIGZvcmVhY2ggZmllbGQgJGFy Z3MgeworICAgICAgICAgc2V0IHJlc3VsdCAiJHJlc3VsdFxbIFxdKiRmaWVs ZCBcW1wuXF1cW1wuXF0gXFtcKFxdVmFsdWUgb2YgdHlwZSAuKlxbXClcXVxb XHJcblxdKyIKKyAgICAgfQorICAgICByZXR1cm4gJHJlc3VsdAorIH0KKyAK KyBwcm9jIGZpZWxkX2Nob2ljZXMgeyBhcmdzIH0geworICAgICBzZXQgcmVz dWx0ICIiCisgICAgIHNldCBmaWVsZF9udW0gMAorICAgICBmb3JlYWNoIGZp ZWxkICRhcmdzIHsKKyAgICAgICAgIHNldCByZXN1bHQgIiRyZXN1bHQkZmll bGRcWyBcXSs9XFsgXF0rPEVudGVyICRmaWVsZF9udW0gdG8gZXhwbG9yZSB0 aGlzIGZpZWxkIG9mIHR5cGUgLioiCisgICAgICAgICBpbmNyIGZpZWxkX251 bQorICAgICB9CisgICAgIHJldHVybiAkcmVzdWx0CisgfQorIAorIHByb2Mg c2NhbGFyX3ZhbHVlIHsgdmFsdWVfbmFtZSB2YWx1ZSB9IHsKKyAgICAgcmV0 dXJuICIkdmFsdWVfbmFtZSA9ICR2YWx1ZVxbclxuXF0rIgorIH0KKyAKKyBz ZXQgU1NfZmllbGRzIFtmaWVsZF92YWx1ZXMge2EgPSAxMH0ge2QgPSAxMDBb Ll0uKn1dCisgCisgaWYgIVtydW50b19tYWluXSB7CisgICAgcmV0dXJuIC0x CisgfQorIAorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJCcmVhayBoZXJlLiJdCisgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg IkJyZWFrIGhlcmUiICIuKkJyZWFrIGhlcmUuKiIKKyAKKyAjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisgIyBWYWx1ZSBleHBsb3JhdGlvbiB0ZXN0cwor ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyBnZGJfdGVzdCAiZXhw bG9yZSBpIiAiW3NjYWxhcl9kZXNjcmlwdGlvbiB7aX0ge2ludH1dLippID0g LioiCisgZ2RiX3Rlc3QgImV4cGxvcmUgc3MiICJbY29tcG91bmRfZGVzY3Jp cHRpb24ge3NzfSB7c3RydWN0L2NsYXNzfSAkU1NdLiokU1NfZmllbGRzIgor IGdkYl90ZXN0ICJleHBsb3JlICpzc19wdHIiICJbY29tcG91bmRfZGVzY3Jp cHRpb24ge1wqc3NfcHRyfSB7c3RydWN0L2NsYXNzfSAkU1NdLiokU1NfZmll bGRzIgorIGdkYl90ZXN0ICJleHBsb3JlIHNzX3QiICJbdHlwZWRlZl9kZXNj cmlwdGlvbiB7c3NfdH0ge1NTfSAkU1NdLipbY29tcG91bmRfZGVzY3JpcHRp b24ge3NzX3R9IHtzdHJ1Y3QvY2xhc3N9ICRTU10uKiRTU19maWVsZHMiCisg CisgZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUgc3NfcHRyIiAiIiB7Cisg ICAgIC1yZSAiW3BvaW50ZXJfZGVzY3JpcHRpb24ge3NzX3B0cn0gJFNTXS4q IiB7CisgICAgICAgICBwYXNzICJleHBsb3JlIHNzX3B0ciIKKyAgICAgICAg IGdkYl90ZXN0X211bHRpcGxlICJ5IiAiZXhwbG9yZV9hc19zaW5nbGVfdmFs dWVfcG9pbnRlciIgeworICAgICAgICAgICAgIC1yZSAiJFNTX2ZpZWxkcyIg eworICAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHNzX3B0ciBhcyBz aW5nbGUgdmFsdWUgcG9pbnRlciIKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9CisgICAgIH0KKyB9CisgCisgZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxv cmUgZGFycmF5X3JlZiIgIiIgeworICAgICAtcmUgIltwb2ludGVyX2Rlc2Ny aXB0aW9uIHtkYXJyYXlfcmVmfSB7ZG91YmxlfV0uKiIgeworICAgICAgICAg cGFzcyAiZXhwbG9yZSBkYXJyYXlfcmVmIgorICAgICAgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgIm4iICJub190b19leHBsb3JlX2FzX3BvaW50ZXIiIHsKKyAg ICAgICAgICAgICAtcmUgIkNvbnRpbnVlIGV4cGxvcmluZyBpdCBhcyBhIHBv aW50ZXIgdG8gYW4gYXJyYXkgXFtcW1xdeS9uXFtcXVxdOiAiIHsKKyAgICAg ICAgICAgICAgICAgcGFzcyAibm9fdG9fZXhwbG9yZV9hc19wb2ludGVyIgor ICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAieSIgImV4cGxv cmVfYXNfYXJyYXkiIHsKKyAgICAgICAgICAgICAgICAgICAgIC1yZSAiLipF bnRlciB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgeW91IHdhbnQgdG8gZXhw bG9yZSBpbiAnZGFycmF5X3JlZic6LioiICB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgcGFzcyAiZXhwbG9yZV9hc19hcnJheSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMiIgImV4cGxvcmVf YXNfYXJyYXlfaW5kZXhfMiIgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtcmUgIi4qJ2RhcnJheV9yZWZcXFxbMlxcXF0nIGlzIGEgc2NhbGFy IHZhbHVlIG9mIHR5cGUgJ2RvdWJsZSdcLi4qZGFycmF5X3JlZlxcXFsyXFxc XSA9IDAuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGFzcyAiZXhwbG9yZV9hc19hcnJheV9pbmRleF8yIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAi ZW5kIGV4cGxvcmVfYXNfYXJyYXlfaW5kZXhfMiIgeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC1yZSAiLipSZXR1cm5pbmcgdG8g cGFyZW50IHZhbHVlLipFbnRlciB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQg eW91IHdhbnQgdG8gZXhwbG9yZSBpbiAnZGFycmF5X3JlZic6LioiIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAi ZW5kIGV4cGxvcmVfYXNfYXJyYXlfaW5kZXhfMiIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg IlwwIiAiZW5kIGV4cGxvcmVfYXNfYXJyYXkiIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZSAiXFtcblxyXF0r IiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFzcyAiZW5kIGV4cGxvcmVfYXNfYXJyYXkiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9IAorICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CisgfQorIAorIGdkYl90 ZXN0X211bHRpcGxlICJleHBsb3JlIHN1IiAiIiB7CisgICAgIC1yZSAiW2Nv bXBvdW5kX2Rlc2NyaXB0aW9uIHtzdX0ge3VuaW9ufSB7dW5pb24gU2ltcGxl VW5pb259XS4qW2ZpZWxkX2Nob2ljZXMge2l9IHtjfSB7Zn0ge2R9XS4qJGVu dGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgIHBhc3MgImV4 cGxvcmUgc3UiCisgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMyIgImV4 cGxvcmUgc3UuZCIgeworICAgICAgICAgICAgIC1yZSAiW3NjYWxhcl9kZXNj cmlwdGlvbiB7c3UuZH0ge2RvdWJsZX1dLipbc2NhbGFyX3ZhbHVlIHtzdS5k fSB7MTAwWy5dLip9XS4qJHJldHVybl90b19wYXJlbnRfcHJvbXB0IiB7Cisg ICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUgc3UuZCIKKyAgICAgICAg ICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiAiICJlbmQgc3UuZCBleHBs b3JhdGlvbiIgeworICAgICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21w b3VuZF9kZXNjcmlwdGlvbiB7c3V9IHt1bmlvbn0ge3VuaW9uIFNpbXBsZVVu aW9ufV0uKltmaWVsZF9jaG9pY2VzIHtpfSB7Y30ge2Z9IHtkfV0uKiRlbnRl cl9maWVsZF9udW1iZXJfcHJvbXB0IiB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgcGFzcyAiZW5kIHN1LmQgZXhwbG9yYXRpb24iCisgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIHN1 IGV4cGxvcmF0aW9uIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC1yZSAiJGdkYl9wcm9tcHQiIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhc3MgImVuZCBzdSBleHBsb3JhdGlvbiIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorIH0K KyAKKyBnZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9yZSBjcyIgIiIgeworICAg ICAtcmUgIltjb21wb3VuZF9kZXNjcmlwdGlvbiB7Y3N9IHtzdHJ1Y3QvY2xh c3N9IHtzdHJ1Y3QgQ29tcGxleFN0cnVjdH1dLipbZmllbGRfY2hvaWNlcyB7 c30ge3V9IHtzYX1dLiokZW50ZXJfZmllbGRfbnVtYmVyX3Byb21wdCIgewor ICAgICAgICAgcGFzcyAiZXhwbG9yZSBjcyIKKyAgICAgICAgIGdkYl90ZXN0 X211bHRpcGxlICIwIiAiZXhwbG9yZSBjcy5zIiB7CisgICAgICAgICAgICAg LXJlICJbY29tcG91bmRfZGVzY3JpcHRpb24ge2NzLnN9IHtzdHJ1Y3QvY2xh c3N9IHtzdHJ1Y3QgU2ltcGxlU3RydWN0fV0uKltmaWVsZF92YWx1ZXMge2Eg PSAxMH0ge2QgPSAxMDBbLl0uKn1dLiokcmV0dXJuX3RvX3BhcmVudF9wcm9t cHQiIHsKKyAgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSBjcy5zIgor ICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiICIgImVuZCBj cy5zIGV4cGxvcmF0aW9uIiB7CisgICAgICAgICAgICAgICAgICAgICAtcmUg Ii4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICBwYXNzICJlbmQgY3MucyBleHBsb3JhdGlvbiIKKyAg ICAgICAgICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAi ICJlbmQgY3MgZXhwbG9yYXRpb24iIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGFzcyAiZW5kIGNzIGV4cGxvcmF0aW9uIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAg ICB9CisgfQorIAorIGdkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIGN1IiAi IiB7CisgICAgIC1yZSAiW2NvbXBvdW5kX2Rlc2NyaXB0aW9uIHtjdX0ge3Vu aW9ufSB7dW5pb24gQ29tcGxleFVuaW9ufV0uKltmaWVsZF9jaG9pY2VzIHtz fSB7c2F9XS4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAgICAg ICAgIHBhc3MgImV4cGxvcmUgY3UiCisgICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiMSIgImV4cGxvcmUgY3Uuc2EiIHsKKyAgICAgICAgICAgICAtcmUg Ii4qW2FycmF5X2Rlc2NyaXB0aW9uIHtjdS5zYX0gJFNTXS4qJGFycmF5X2lu ZGV4X3Byb21wdCIgeworICAgICAgICAgICAgICAgICBwYXNzICJleHBsb3Jl IGN1LnNhIgorICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAi MCIgImV4cGxvcmUgY3Uuc2FcWzBcXSIgeworICAgICAgICAgICAgICAgICAg ICAgLXJlICJbY29tcG91bmRfZGVzY3JpcHRpb24ge1woY3Uuc2FcKVxbMFxd fSB7c3RydWN0L2NsYXNzfSB7c3RydWN0IFNpbXBsZVN0cnVjdH1dLipbZmll bGRfdmFsdWVzIHthID0gMH0ge2QgPSAxMDBbLl0uKn1dLiokcmV0dXJuX3Rv X3BhcmVudF9wcm9tcHQiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBw YXNzICJleHBsb3JlIGN1LnNhXFswXF0iCisgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIGN1LnNhXFswXF0g ZXhwbG9yYXRpb24iIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LXJlICJbYXJyYXlfZGVzY3JpcHRpb24ge2N1LnNhfSAkU1NdJGFycmF5X2lu ZGV4X3Byb21wdCIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFzcyAiZW5kIGN1LnNhXFswXF0gZXhwbG9yYXRpb24iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlww IiAiZW5kIGN1LnNhIGV4cGxvcmF0aW9uIiB7CisgICAgICAgICAgICAgICAg ICAgICAtcmUgIi4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgY3Uuc2EgZXhwbG9y YXRpb24iCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgIlwwIiAiZW5kIGN1IGV4cGxvcmF0aW9uIiB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQiIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImVuZCBjdSBleHBs b3JhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KKyAgICAgfQorIH0KKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyAjIFR5cGUgZXhwbG9yYXRpb24gdGVzdHMKKyAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyAKKyBwcm9jIHNjYWxhcl90eXBlX2RlY3NyaXB0aW9u IHt0eXBlfSB7CisgICAgIHJldHVybiAiJyR0eXBlJyBpcyBhIHNjYWxhciB0 eXBlXC4iCisgfQorIAorIHByb2MgY2hpbGRfc2NhbGFyX3R5cGVfZGVzY3Jp cHRpb24ge3BhdGggdHlwZX0geworICAgICByZXR1cm4gIiRwYXRoIGlzIG9m IGEgc2NhbGFyIHR5cGUgJyR0eXBlJ1wuIgorIH0KKyAKKyBwcm9jIGNvbXBv dW5kX3R5cGVfZGVzY3JpcHRpb24geyB0eXBlX25hbWUgdHlwZV9kZXNjIH0g eworICAgICByZXR1cm4gIickdHlwZV9uYW1lJyBpcyBhICR0eXBlX2Rlc2Mg d2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoiCisgfQorIAorIHByb2MgY2hp bGRfY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiB7IHBhdGggdHlwZV9uYW1l IHR5cGVfZGVzYyB9IHsKKyAgICAgcmV0dXJuICIkcGF0aCBpcyBhICR0eXBl X2Rlc2Mgb2YgdHlwZSAnJHR5cGVfbmFtZScgd2l0aCB0aGUgZm9sbG93aW5n IGZpZWxkczoiCisgfQorIAorIHByb2MgY2hpbGRfYXJyYXlfdHlwZV9kZXNj cmlwdGlvbiB7IHBhdGggdGFyZ2V0X3R5cGVfbmFtZSB9IHsKKyAgICAgcmV0 dXJuICIkcGF0aCBpcyBhbiBhcnJheSBvZiAnJHRhcmdldF90eXBlX25hbWUn XC4iCisgfQorIAorIHByb2MgdHlwZWRlZl90eXBlX2Rlc2NyaXB0aW9uIHsg dHlwZV9uYW1lIHRhcmdldF9uYW1lIH0geworICAgICByZXR1cm4gIlRoZSB0 eXBlICckdHlwZV9uYW1lJyBpcyBhIHR5cGVkZWYgb2YgdHlwZSAnJHRhcmdl dF9uYW1lJ1wuIgorIH0KKyAKKyBzZXQgU1NfZmllbGRzX3R5cGVzIFtmaWVs ZF9jaG9pY2VzIHthfSB7ZH1dCisgc2V0IFNVX2ZpZWxkc190eXBlcyBbZmll bGRfY2hvaWNlcyB7aX0ge2N9IHtmfSB7ZH1dCisgc2V0IENTX2ZpZWxkc190 eXBlcyBbZmllbGRfY2hvaWNlcyB7c30ge3V9IHtzYX1dCisgc2V0IENVX2Zp ZWxkc190eXBlcyBbZmllbGRfY2hvaWNlcyB7c30ge3NhfV0KKyAKKyBzZXQg Q1NfZmllbGRfMCAiZmllbGQgJ3MnIG9mICdzdHJ1Y3QgQ29tcGxleFN0cnVj dCciCisgc2V0IENTX2ZpZWxkXzEgImZpZWxkICd1JyBvZiAnc3RydWN0IENv bXBsZXhTdHJ1Y3QnIgorIHNldCBDU19maWVsZF8yICJmaWVsZCAnc2EnIG9m ICdzdHJ1Y3QgQ29tcGxleFN0cnVjdCciCisgc2V0IENTX2ZpZWxkXzJfYXJy YXlfZWxlbWVudCAiYW4gYXJyYXkgZWxlbWVudCBvZiAkQ1NfZmllbGRfMiIK KyAKKyBzZXQgQ1VfZmllbGRfMCAiZmllbGQgJ3MnIG9mICd1bmlvbiBDb21w bGV4VW5pb24nIgorIHNldCBDVV9maWVsZF8xICJmaWVsZCAnc2EnIG9mICd1 bmlvbiBDb21wbGV4VW5pb24nIgorIHNldCBDVV9maWVsZF8xX2FycmF5X2Vs ZW1lbnQgImFuIGFycmF5IGVsZW1lbnQgb2YgJENVX2ZpZWxkXzEiCisgCisg Z2RiX3Rlc3QgImV4cGxvcmUgaW50IiAiLipbc2NhbGFyX3R5cGVfZGVjc3Jp cHRpb24ge2ludH1dLioiCisgCisgZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxv cmUgc3RydWN0IFNpbXBsZVN0cnVjdCIgIiIgeworICAgICAtcmUgIi4qW2Nv bXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJFNTIHtzdHJ1Y3QvY2xhc3N9XS4q JFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICBwYXNzICJleHBsb3Jl IHN0cnVjdCBTaW1wbGVTdHJ1Y3QiCisgICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiMCIgImV4cGxvcmUgdHlwZSBzdHJ1Y3QgU2ltcGxlU3RydWN0IGZl aWxkIDAiIHsKKyAgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90 eXBlX2Rlc2NyaXB0aW9uIHtmaWVsZCAnYScgb2YgJ3N0cnVjdCBTaW1wbGVT dHJ1Y3QnfSB7aW50fV0uKiIgeworICAgICAgICAgICAgICAgICBwYXNzICJl eHBsb3JlIHR5cGUgc3RydWN0IFNpbXBsZVN0cnVjdCBmZWlsZCAwIgorICAg ICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4g dG8gc3RydWN0IFNpbXBsZVN0cnVjdCBmcm9tIGZpZWxkIDAiIHsKKyAgICAg ICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlw dGlvbiAkU1Mge3N0cnVjdC9jbGFzc31dLiokU1NfZmllbGRzX3R5cGVzLioi IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8g c3RydWN0IFNpbXBsZVN0cnVjdCBmcm9tIGZpZWxkIDAiCisgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICB9CisgICAgICAgICB9CisgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAi MSIgImV4cGxvcmUgdHlwZSBzdHJ1Y3QgU2ltcGxlU3RydWN0IGZlaWxkIDEi IHsKKyAgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rl c2NyaXB0aW9uIHtmaWVsZCAnZCcgb2YgJ3N0cnVjdCBTaW1wbGVTdHJ1Y3Qn fSB7ZG91YmxlfV0uKiIgeworICAgICAgICAgICAgICAgICBwYXNzICJleHBs b3JlIHR5cGUgc3RydWN0IFNpbXBsZVN0cnVjdCBmZWlsZCAxIgorICAgICAg ICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8g c3RydWN0IFNpbXBsZVN0cnVjdCBmcm9tIGZpZWxkIDEiIHsKKyAgICAgICAg ICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlv biAkU1Mge3N0cnVjdC9jbGFzc31dLiokU1NfZmllbGRzX3R5cGVzLioiIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gc3Ry dWN0IFNpbXBsZVN0cnVjdCBmcm9tIGZpZWxkIDEiCisgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9 CisgICAgICAgICB9CisgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAi ICJyZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIHN0cnVjdCBTaW1wbGVTdHJ1 Y3QiIHsKKyAgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAg ICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20g c3RydWN0IFNpbXBsZVN0cnVjdCIKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9CisgICAgIH0KKyB9CisgCisgZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxv cmUgdW5pb24gU2ltcGxlVW5pb24iICIiIHsKKyAgIC1yZSAiLipbY29tcG91 bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Uge3VuaW9ufV0uKiRTVV9maWVsZHNf dHlwZXMuKiIgeworICAgICAgIHBhc3MgImV4cGxvcmUgdW5pb24gU2ltcGxl VW5pb24iCisgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIgImV4cGxv cmUgdHlwZSB1bmlvbiBTaW1wbGVVbmlvbiBmZWlsZCAwIiB7CisgICAgICAg ICAgICAgLXJlICIuKltjaGlsZF9zY2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7 ZmllbGQgJ2knIG9mICd1bmlvbiBTaW1wbGVVbmlvbid9IHtpbnR9XS4qIiB7 CisgICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUgdHlwZSB1bmlvbiBT aW1wbGVVbmlvbiBmZWlsZCAwIgorICAgICAgICAgICAgICAgICBnZGJfdGVz dF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gdW5pb24gU2ltcGxlVW5pb24g ZnJvbSBmaWVsZCAwIiB7CisgICAgICAgICAgICAgICAgICAgICAtcmUgIi4q W2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJFNVIHt1bmlvbn1dLiokU1Vf ZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBw YXNzICJyZXR1cm4gdG8gdW5pb24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAw IgorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgZ2RiX3Rl c3RfbXVsdGlwbGUgIjEiICJleHBsb3JlIHR5cGUgdW5pb24gU2ltcGxlVW5p b24gZmVpbGQgMSIgeworICAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfc2Nh bGFyX3R5cGVfZGVzY3JpcHRpb24ge2ZpZWxkICdjJyBvZiAndW5pb24gU2lt cGxlVW5pb24nfSB7Y2hhcn1dLioiIHsKKyAgICAgICAgICAgICAgICAgcGFz cyAiZXhwbG9yZSB0eXBlIHVuaW9uIFNpbXBsZVVuaW9uIGZlaWxkIDEiCisg ICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVy biB0byB1bmlvbiBTaW1wbGVVbmlvbiBmcm9tIGZpZWxkIDEiIHsKKyAgICAg ICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlw dGlvbiAkU1Uge3VuaW9ufV0uKiRTVV9maWVsZHNfdHlwZXMuKiIgeworICAg ICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byB1bmlvbiBT aW1wbGVVbmlvbiBmcm9tIGZpZWxkIDEiCisgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAg ICAgICB9CisgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMiIgImV4cGxv cmUgdHlwZSB1bmlvbiBTaW1wbGVVbmlvbiBmZWlsZCAyIiB7CisgICAgICAg ICAgICAgLXJlICIuKltjaGlsZF9zY2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7 ZmllbGQgJ2YnIG9mICd1bmlvbiBTaW1wbGVVbmlvbid9IHtmbG9hdH1dLioi IHsKKyAgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9u IFNpbXBsZVVuaW9uIGZlaWxkIDIiCisgICAgICAgICAgICAgICAgIGdkYl90 ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byB1bmlvbiBTaW1wbGVVbmlv biBmcm9tIGZpZWxkIDIiIHsKKyAgICAgICAgICAgICAgICAgICAgIC1yZSAi LipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Uge3VuaW9ufV0uKiRT VV9maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAg IHBhc3MgInJldHVybiB0byB1bmlvbiBTaW1wbGVVbmlvbiBmcm9tIGZpZWxk IDIiCisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBnZGJf dGVzdF9tdWx0aXBsZSAiMyIgImV4cGxvcmUgdHlwZSB1bmlvbiBTaW1wbGVV bmlvbiBmZWlsZCAzIiB7CisgICAgICAgICAgICAgLXJlICIuKltjaGlsZF9z Y2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7ZmllbGQgJ2QnIG9mICd1bmlvbiBT aW1wbGVVbmlvbid9IHtkb3VibGV9XS4qIiB7CisgICAgICAgICAgICAgICAg IHBhc3MgImV4cGxvcmUgdHlwZSB1bmlvbiBTaW1wbGVVbmlvbiBmZWlsZCAz IgorICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJy ZXR1cm4gdG8gdW5pb24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAzIiB7Cisg ICAgICAgICAgICAgICAgICAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVz Y3JpcHRpb24gJFNVIHt1bmlvbn1dLiokU1VfZmllbGRzX3R5cGVzLioiIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gdW5p b24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAzIgorICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQor ICAgICAgICAgfQorICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAi cmV0dXJuIHRvIEdEQiBwcm9tcHQgZnJvbSB1bmlvbiBTaW1wbGVVbmlvbiIg eworICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQiIHsKKyAgICAgICAg ICAgICAgICAgcGFzcyAicmV0dXJuIHRvIEdEQiBwcm9tcHQgZnJvbSB1bmlv biBTaW1wbGVVbmlvbiIKKyAgICAgICAgICAgICB9CisgICAgICAgICB9Cisg ICB9CisgfQorIAorIGdkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIFNTIiAi IiB7CisgICAgIC1yZSAiLipbdHlwZWRlZl90eXBlX2Rlc2NyaXB0aW9uIHtT U30gJFNTXS4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24ge1NTfSB7c3Ry dWN0L2NsYXNzfV0uKiRTU19maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAg cGFzcyAiZXhwbG9yZSBTUyIKKyAgICAgICAgIGdkYl90ZXN0X211bHRpcGxl ICIwIiAiZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDAiIHsKKyAgICAgICAgICAg ICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rlc2NyaXB0aW9uIHtmaWVs ZCAnYScgb2YgJ1NTJ30ge2ludH1dLioiIHsKKyAgICAgICAgICAgICAgICAg cGFzcyAiZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDAiCisgICAgICAgICAgICAg ICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBTUyBmcm9t IGZpZWxkIDAiIHsKKyAgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29t cG91bmRfdHlwZV9kZXNjcmlwdGlvbiB7U1N9IHtzdHJ1Y3QvY2xhc3N9XS4q JFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgcGFzcyAicmV0dXJuIHRvIFNTIGZyb20gZmllbGQgMCIKKyAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGdkYl90ZXN0X211bHRpcGxl ICIxIiAiZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDEiIHsKKyAgICAgICAgICAg ICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rlc2NyaXB0aW9uIHtmaWVs ZCAnZCcgb2YgJ1NTJ30ge2RvdWJsZX1dLioiIHsKKyAgICAgICAgICAgICAg ICAgcGFzcyAiZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDEiCisgICAgICAgICAg ICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBzdHJ1 Y3QgU2ltcGxlU3RydWN0IGZyb20gZmllbGQgMSIgeworICAgICAgICAgICAg ICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uIHtT U30ge3N0cnVjdC9jbGFzc31dLiokU1NfZmllbGRzX3R5cGVzLioiIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gU1MgZmll bGQgMSIKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGdk Yl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBHREIgcHJvbXB0IGZy b20gU1MiIHsKKyAgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7Cisg ICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJvbXB0IGZy b20gU1MiCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9Cisg fQorIAorIGdkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIHR5cGUgc3RydWN0 IENvbXBsZXhTdHJ1Y3QiICIiIHsKKyAgICAgLXJlICIuKltjb21wb3VuZF90 eXBlX2Rlc2NyaXB0aW9uICRDUyB7c3RydWN0L2NsYXNzfV0uKiRDU19maWVs ZHNfdHlwZXMuKiIgeworICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHN0 cnVjdCBDb21wbGV4U3RydWN0IgorICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlw bGUgIjAiICJleHBsb3JlIHR5cGUgc3RydWN0IENvbXBsZXhTdHJ1Y3QgZmll bGQgMCIgeworICAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfY29tcG91bmRf dHlwZV9kZXNjcmlwdGlvbiAkQ1NfZmllbGRfMCAkU1Mge3N0cnVjdC9jbGFz c31dLiokU1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAg cGFzcyAiZXhwbG9yZSB0eXBlIHN0cnVjdCBDb21wbGV4U3RydWN0IGZpZWxk IDAiCisgICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIg InJldHVybiB0byBDb21wbGV4U3RydWN0IGZyb20gZmllbGQgMCIgeworICAg ICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2Ny aXB0aW9uICRDUyB7c3RydWN0L2NsYXNzfV0uKiRDU19maWVsZHNfdHlwZXMu KiIgeworICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0 byBDb21wbGV4U3RydWN0IGZyb20gZmllbGQgMCIKKyAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKyAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIxIiAi ZXhwbG9yZSB0eXBlIHN0cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDEiIHsK KyAgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX2NvbXBvdW5kX3R5cGVfZGVz Y3JpcHRpb24gJENTX2ZpZWxkXzEgJFNVIHt1bmlvbn1dLiokU1VfZmllbGRz X3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0 eXBlIHN0cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDEiCisgICAgICAgICAg ICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBDb21w bGV4U3RydWN0IGZyb20gZmllbGQgMSIgeworICAgICAgICAgICAgICAgICAg ICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRDUyB7c3Ry dWN0L2NsYXNzfV0uKiRDU19maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAg ICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBDb21wbGV4U3RydWN0 IGZyb20gZmllbGQgMSIKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAg ICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIyIiAiZXhwbG9yZSB0eXBlIHN0 cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDIiIHsKKyAgICAgICAgICAgICAt cmUgIi4qW2NoaWxkX2FycmF5X3R5cGVfZGVzY3JpcHRpb24gJENTX2ZpZWxk XzIge1NTfV0uKiIgeworICAgICAgICAgICAgICAgICBwYXNzICJleHBsb3Jl IHR5cGUgc3RydWN0IENvbXBsZXhTdHJ1Y3QgZmllbGQgMiIKKyAgICAgICAg ICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIENv bXBsZXhTdHJ1Y3QgZnJvbSBmaWVsZCAyIiB7CisgICAgICAgICAgICAgICAg ICAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENTIHtz dHJ1Y3QvY2xhc3N9XS4qJENTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhTdHJ1 Y3QgZnJvbSBmaWVsZCAyIgorICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgfQor ICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIEdE QiBwcm9tcHQgZnJvbSBDb21wbGV4U3RydWN0IHR5cGUgZXhwbG9yYXRpb24i IHsKKyAgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAgICAg ICAgICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20gQ29t cGxleFN0cnVjdCB0eXBlIGV4cGxvcmF0aW9uIgorICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKyAgICAgfQorIH0KKyAKKyBnZGJfdGVzdF9tdWx0aXBs ZSAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiIgIiIgeworICAg ICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENVIHt1bmlv bn1dLiokQ1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgIHBhc3MgImV4 cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4VW5pb24iCisgICAgICAgICBnZGJf dGVzdF9tdWx0aXBsZSAiMCIgImV4cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4 U3RydWN0IGZpZWxkIDAiIHsKKyAgICAgICAgICAgICAtcmUgIi4qW2NoaWxk X2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENVX2ZpZWxkXzAgJFNTIHtz dHJ1Y3QvY2xhc3N9XS4qJFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAg ICAgICAgICAgIHBhc3MgImV4cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4VW5p b24gZmllbGQgMCIKKyAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlw bGUgIlwwIiAicmV0dXJuIHRvIENvbXBsZXhVbmlvbiBmcm9tIGZpZWxkIDAi IHsKKyAgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlw ZV9kZXNjcmlwdGlvbiAkQ1Uge3VuaW9ufV0uKiRDVV9maWVsZHNfdHlwZXMu KiIgeworICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0 byBDb21wbGV4VW5pb24gZnJvbSBmaWVsZCAwIgorICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQor ICAgICAgICAgfQorICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjEiICJl eHBsb3JlIHR5cGUgdW5pb24gQ29tcGxleFVuaW9uIGZpZWxkIDEiIHsKKyAg ICAgICAgICAgICAtcmUgIi4qW2NoaWxkX2FycmF5X3R5cGVfZGVzY3JpcHRp b24gJENVX2ZpZWxkXzEgJFNTXS4qIiB7CisgICAgICAgICAgICAgICAgIHBh c3MgImV4cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4VW5pb24gZmllbGQgMSIK KyAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0 dXJuIHRvIENvbXBsZXhVbmlvbiBhcnJheSIgeworICAgICAgICAgICAgICAg ICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRDVSB7 dW5pb259XS4qJENVX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhVbmlvbiBmcm9t IGZpZWxkIDEiCisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAg ICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gR0RCIHByb21w dCBmcm9tIENvbXBsZXhVbmlvbiB0eXBlIGV4cGxvcmF0aW9uIiB7CisgICAg ICAgICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAg ICBwYXNzICJyZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIENvbXBsZXhVbmlv biB0eXBlIGV4cGxvcmF0aW9uIgorICAgICAgICAgICAgIH0KKyAgICAgICAg IH0KKyAgICAgfQorIH0KKyAKKyBnZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9y ZSB0eXBlIGN1IiAiIiB7CisgICAgIC1yZSAiJ2N1JyBpcyBvZiB0eXBlICd1 bmlvbiBDb21wbGV4VW5pb24nLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlv biAkQ1Uge3VuaW9ufV0uKiRDVV9maWVsZHNfdHlwZXMuKiIgeworICAgICAg ICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiIKKyAg ICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIwIiAiZXhwbG9yZSB0eXBlIHVu aW9uIENvbXBsZXhTdHJ1Y3QgZmllbGQgMCIgeworICAgICAgICAgICAgIC1y ZSAiLipbY2hpbGRfY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1VfZmll bGRfMCAkU1Mge3N0cnVjdC9jbGFzc31dLiokU1NfZmllbGRzX3R5cGVzLioi IHsKKyAgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9u IENvbXBsZXhVbmlvbiBmaWVsZCAwIgorICAgICAgICAgICAgICAgICBnZGJf dGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gQ29tcGxleFVuaW9uIGZy b20gZmllbGQgMCIgeworICAgICAgICAgICAgICAgICAgICAgLXJlICIuKltj b21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRDVSB7dW5pb259XS4qJENVX2Zp ZWxkc190eXBlcy4qIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcGFz cyAicmV0dXJuIHRvIENvbXBsZXhVbmlvbiBmcm9tIGZpZWxkIDAiCisgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiMSIgImV4cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4VW5pb24gZmll bGQgMSIgeworICAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfYXJyYXlfdHlw ZV9kZXNjcmlwdGlvbiAkQ1VfZmllbGRfMSAkU1NdLioiIHsKKyAgICAgICAg ICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlv biBmaWVsZCAxIgorICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBs ZSAiXDAiICJyZXR1cm4gdG8gQ29tcGxleFVuaW9uIGFycmF5IiB7CisgICAg ICAgICAgICAgICAgICAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3Jp cHRpb24gJENVIHt1bmlvbn1dLiokQ1VfZmllbGRzX3R5cGVzLioiIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gQ29tcGxl eFVuaW9uIGZyb20gZmllbGQgMSIKKyAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAg IH0KKyAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0 byBHREIgcHJvbXB0IGZyb20gQ29tcGxleFVuaW9uIHR5cGUgZXhwbG9yYXRp b24iIHsKKyAgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAg ICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20g Q29tcGxleFVuaW9uIHR5cGUgZXhwbG9yYXRpb24iCisgICAgICAgICAgICAg fQorICAgICAgICAgfQorICAgICB9CisgfQpJbmRleDogdGVzdHN1aXRlL2dk Yi5weXRob24vcHktZXhwbG9yZS1jYy5leHAKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXhwbG9y ZS1jYy5leHAKZGlmZiAtTiB0ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1leHBs b3JlLWNjLmV4cAoqKiogL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAg LTAwMDAKLS0tIHRlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV4cGxvcmUtY2Mu ZXhwCTEgQXByIDIwMTIgMTg6NTU6NTQgLTAwMDAKKioqKioqKioqKioqKioq CioqKiAwICoqKioKLS0tIDEsMTQ2IC0tLS0KKyAjIENvcHlyaWdodCAoQykg MjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKyAjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorICMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgIworICMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAjCisgIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCisgIyBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIHRoZSBtZWNoYW5p c20KKyAjIGV4cG9zaW5nIHZhbHVlcyB0byBQeXRob24uCisgCisgaWYgeyBb c2tpcF9jcGx1c190ZXN0c10gfSB7IGNvbnRpbnVlIH0KKyAKKyBzZXQgdGVz dGZpbGUgInB5LWV4cGxvcmUiCisgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u Y2MKKyBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9CisgCisgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5l eHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBjKyt9XX0geworICAgICBy ZXR1cm4gLTEKKyB9CisgCisgIyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRob24g c2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgorIGlmIHsgW3NraXBfcHl0aG9u X3Rlc3RzXSB9IHsgY29udGludWUgfQorIAorIHNldCBpbnRfcHRyX3JlZl9k ZXNjICJUaGUgdmFsdWUgb2YgJ2ludF9wdHJfcmVmJyBpcyBvZiB0eXBlICdp bnRfcHRyJyB3aGljaCBpcyBhIHR5cGVkZWYgb2YgdHlwZSAnaW50IFxcKicu KlwnaW50X3B0cl9yZWYnIGlzIGEgcG9pbnRlciB0byBhIHZhbHVlIG9mIHR5 cGUgJ2ludCcuKiIKKyAKKyBzZXQgYl9kZXNjICJUaGUgdmFsdWUgb2YgJ2In IGlzIGEgc3RydWN0L2NsYXNzIG9mIHR5cGUgJ0InIHdpdGggdGhlIGZvbGxv d2luZyBmaWVsZHM6LipcCisgQSA9IDxFbnRlciAwIHRvIGV4cGxvcmUgdGhp cyBiYXNlIGNsYXNzIG9mIHR5cGUgJ0EnPi4qXAorIGkgPSAxMCBcXC5cXC4g XFwoVmFsdWUgb2YgdHlwZSAnaW50J1xcKS4qXAorIGMgPSA5NyAnYScgXFwu XFwuIFxcKFZhbHVlIG9mIHR5cGUgJ2NoYXInXFwpLioiCisgCisgc2V0IEJf ZGVzYyAiJ0InIGlzIGEgc3RydWN0L2NsYXNzIHdpdGggdGhlIGZvbGxvd2lu ZyBmaWVsZHM6LipcCisgQSA9IDxFbnRlciAwIHRvIGV4cGxvcmUgdGhpcyBi YXNlIGNsYXNzIG9mIHR5cGUgJ0EnPi4qXAorIGkgPSA8RW50ZXIgMSB0byBl eHBsb3JlIHRoaXMgZmllbGQgb2YgdHlwZSAnaW50Jz4uKlwKKyBjID0gPEVu dGVyIDIgdG8gZXhwbG9yZSB0aGlzIGZpZWxkIG9mIHR5cGUgJ2NoYXInPi4q IgorIAorIGlmICFbcnVudG9fbWFpbl0geworICAgIHJldHVybiAtMQorIH0K KyAKKyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQnJl YWsgaGVyZS4iXQorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCcmVh ayBoZXJlIiAiLipCcmVhayBoZXJlLioiCisgCisgZ2RiX3Rlc3QgImV4cGxv cmUgQSIgIidBJyBpcyBhIHN0cnVjdC9jbGFzcyB3aXRoIG5vIGZpZWxkc1wu IgorIGdkYl90ZXN0ICJleHBsb3JlIGEiICJUaGUgdmFsdWUgb2YgJ2EnIGlz IGEgc3RydWN0L2NsYXNzIG9mIHR5cGUgJ2NvbnN0IEEnIHdpdGggbm8gZmll bGRzXC4iCisgZ2RiX3Rlc3QgImV4cGxvcmUgaW50X3JlZiIgIidpbnRfcmVm JyBpcyBhIHNjYWxhciB2YWx1ZSBvZiB0eXBlICdpbnQnLippbnRfcmVmID0g MTAiCisgCisgZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUgaW50X3B0cl9y ZWYiICIiIHsKKyAgICAgLXJlICIkaW50X3B0cl9yZWZfZGVzYy4qQ29udGlu dWUgZXhwbG9yaW5nIGl0IGFzIGEgcG9pbnRlciB0byBhIHNpbmdsZSB2YWx1 ZSBcXFxbeS9uXFxcXTouKiIgeworICAgICAgICAgcGFzcyAiZXhwbG9yZSBp bnRfcHRyX3JlZiIKKyAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJ5IiAi ZXhwbG9yZV9pbnRfcHRyX3JlZl9hc19zaW5nbGVfdmFsdWVfcG9pbnRlciIg eworICAgICAgICAgICAgIC1yZSAiJ1xbKlxdaW50X3B0cl9yZWYnIGlzIGEg c2NhbGFyIHZhbHVlIG9mIHR5cGUgJ2ludCcuKlxbKlxdaW50X3B0cl9yZWYg PSAxMC4qJGdkYl9wcm9tcHQiIHsKKyAgICAgICAgICAgICAgICAgcGFzcyAi ZXhwbG9yZV9pbnRfcHRyX3JlZl9hc19zaW5nbGVfdmFsdWVfcG9pbnRlciIK KyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KKyB9CisgCisg Z2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUgYiIgIiIgeworICAgICAtcmUg IiRiX2Rlc2MuKkVudGVyIHRoZSBmaWVsZCBudW1iZXIgb2YgY2hvaWNlOi4q IiB7CisgICAgICAgICBwYXNzICJleHBsb3JlIGIiCisgICAgICAgICBnZGJf dGVzdF9tdWx0aXBsZSAiMCIgImV4cGxvcmVfYmFzZV9jbGFzc19BIiB7Cisg ICAgICAgICAgICAgLXJlICJUaGUgdmFsdWUgb2YgJ2JcLkEnIGlzIGEgc3Ry dWN0L2NsYXNzIG9mIHR5cGUgJ0EnIHdpdGggbm8gZmllbGRzXC4iIHsKKyAg ICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZV9iYXNlX2NsYXNzX0EiCisg ICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVy bl90b19iX2Zyb21fQSIgeworICAgICAgICAgICAgICAgICAgICAgLXJlICIu KiRiX2Rlc2MuKkVudGVyIHRoZSBmaWVsZCBudW1iZXIgb2YgY2hvaWNlOi4q IiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuX3Rv X2JfZnJvbV9BIgorICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl90ZXN0 X211bHRpcGxlICIxIiAiZXhwbG9yZV9maWVsZF9pX29mX2IiIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLXJlICInYlwuaScgaXMgYSBzY2Fs YXIgdmFsdWUgb2YgdHlwZSAnaW50Jy4qYlwuaSA9IDEwLioiIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmVfZmll bGRfaV9vZl9iIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuX3RvX2JfZnJvbV9pIiB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlICIk Yl9kZXNjLipFbnRlciB0aGUgZmllbGQgbnVtYmVyIG9mIGNob2ljZTouKiIg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXNzICJyZXR1cm5fdG9fYl9mcm9tX2kiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIyIiAiZXhwbG9yZV9maWVsZF9j X29mX2IiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlICIn YlwuYycgaXMgYSBzY2FsYXIgdmFsdWUgb2YgdHlwZSAnY2hhcicuKmJcLmMg PSAuKidhJy4qIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXNzICJleHBsb3JlX2ZpZWxkX2Nfb2ZfYiIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJl dHVybl90b19iX2Zyb21fYyIgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC1yZSAiJGJfZGVzYy4qRW50ZXIgdGhlIGZpZWxkIG51 bWJlciBvZiBjaG9pY2U6LioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuX3RvX2JfZnJvbV9pIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAi XDAiICJyZXR1cm5fdG9fZ2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm5fdG9fZ2RiX3By b21wdF9mcm9tX2IiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9Cisg ICAgICAgICB9CisgICAgIH0KKyB9CisgCisgZ2RiX3Rlc3RfbXVsdGlwbGUg ImV4cGxvcmUgQiIgIiIgeworICAgICAtcmUgIiRCX2Rlc2MuKkVudGVyIHRo ZSBmaWVsZCBudW1iZXIgb2YgY2hvaWNlOi4qIiB7CisgICAgICAgICBwYXNz ICJleHBsb3JlIEIiCisgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIg ImV4cGxvcmVfYmFzZV9jbGFzc19BIiB7CisgICAgICAgICAgICAgLXJlICJi YXNlIGNsYXNzICdBJyBvZiAnQicgaXMgYSBzdHJ1Y3QvY2xhc3Mgb2YgdHlw ZSAnQScgd2l0aCBubyBmaWVsZHNcLiIgeworICAgICAgICAgICAgICAgICBw YXNzICJleHBsb3JlX2Jhc2VfY2xhc3NfQSIKKyAgICAgICAgICAgICAgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuX3RvX0IiIHsKKyAgICAg ICAgICAgICAgICAgICAgIC1yZSAiJEJfZGVzYy4qRW50ZXIgdGhlIGZpZWxk IG51bWJlciBvZiBjaG9pY2U6LioiIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICBwYXNzICJyZXR1cm5fdG9fQiIKKyAgICAgICAgICAgICAgICAgICAg ICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIgImV4cGxvcmVfZmllbGRfaV9v Zl9CIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZSAiZmll bGQgJ2knIG9mICdCJyBpcyBvZiBhIHNjYWxhciB0eXBlICdpbnQnLioiIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImV4cGxv cmVfZmllbGRfaV9vZl9CIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuX3RvX0JfZnJv bV9pIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LXJlICIkQl9kZXNjLipFbnRlciB0aGUgZmllbGQgbnVtYmVyIG9mIGNob2lj ZTouKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYXNzICJyZXR1cm5fdG9fQl9mcm9tX2kiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIyIiAiZXhwbG9yZV9m aWVsZF9jX29mX0IiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LXJlICJmaWVsZCAnYycgb2YgJ0InIGlzIG9mIGEgc2NhbGFyIHR5cGUgJ2No YXInLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh c3MgImV4cGxvcmVfZmllbGRfY19vZl9CIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJu X3RvX0JfZnJvbV9jIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLXJlICIkQl9kZXNjLipFbnRlciB0aGUgZmllbGQgbnVtYmVy IG9mIGNob2ljZTouKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYXNzICJyZXR1cm5fdG9fQl9mcm9tX2MiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIg InJldHVybl90b19nZGJfcHJvbXB0IiB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQiIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybl90b19nZGJfcHJvbXB0 X2Zyb21fQiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KKyAgICAgfQorIH0KSW5kZXg6IHRlc3RzdWl0ZS9nZGIucHl0aG9u L01ha2VmaWxlLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvc3JjL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vTWFrZWZp bGUuaW4sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUKZGlmZiAtYyAtcCAt cjEuMTUgTWFrZWZpbGUuaW4KKioqIHRlc3RzdWl0ZS9nZGIucHl0aG9uL01h a2VmaWxlLmluCTIyIE1hciAyMDEyIDA4OjEwOjQ0IC0wMDAwCTEuMTUKLS0t IHRlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCTEgQXByIDIwMTIg MTg6NTU6NTQgLTAwMDAKKioqKioqKioqKioqKioqIEVYRUNVVEFCTEVTID0g cHktdHlwZSBweS12YWx1ZSBweS1wcmV0dHkKKioqIDUsMTEgKioqKgogIAlw eS1zeW1ib2wgcHktbWkgcHktYnJlYWtwb2ludCBweS1pbmZlcmlvciBweS1p bmZ0aHJlYWQgXAogIAlweS1zaGFyZWQgcHl0aG9uIGxpYi10eXBlcyBweS1l dmVudHMgcHktZXZ0aHJlYWRzIHB5LWZyYW1lIFwKICAJcHktbWkgcHktcHAt bWFpbnQgcHktcHJvZ3NwYWNlIHB5LXNlY3Rpb24tc2NyaXB0IHB5LW9iamZp bGUgXAohIAlweS1maW5pc2gtYnJlYWtwb2ludCBweS1maW5pc2gtYnJlYWtw b2ludDIgcHktdmFsdWUtY2MKICAKICBNSVNDRUxMQU5FT1VTID0gcHktc2hh cmVkLXNsLnNsIHB5LWV2ZW50cy1zaGxpYi5zbyBweS1ldmVudHMtc2hsaWIt bm9kZWJ1Zy5zbyAKICAKLS0tIDUsMTIgLS0tLQogIAlweS1zeW1ib2wgcHkt bWkgcHktYnJlYWtwb2ludCBweS1pbmZlcmlvciBweS1pbmZ0aHJlYWQgXAog IAlweS1zaGFyZWQgcHl0aG9uIGxpYi10eXBlcyBweS1ldmVudHMgcHktZXZ0 aHJlYWRzIHB5LWZyYW1lIFwKICAJcHktbWkgcHktcHAtbWFpbnQgcHktcHJv Z3NwYWNlIHB5LXNlY3Rpb24tc2NyaXB0IHB5LW9iamZpbGUgXAohIAlweS1m aW5pc2gtYnJlYWtwb2ludCBweS1maW5pc2gtYnJlYWtwb2ludDIgcHktdmFs dWUtY2MgcHktZXhwbG9yZSBcCiEgCXB5LWV4cGxvcmUtY2MKICAKICBNSVND RUxMQU5FT1VTID0gcHktc2hhcmVkLXNsLnNsIHB5LWV2ZW50cy1zaGxpYi5z byBweS1ldmVudHMtc2hsaWItbm9kZWJ1Zy5zbyAKICAK --00248c76914ee193f004bcabdf5e--