From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:403:478a::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id e3UQBfSL7mS7fAEAauVa8A:P1 (envelope-from ) for ; Wed, 30 Aug 2023 02:23:16 +0200 Received: from aspmx1.migadu.com ([2001:41d0:403:478a::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id e3UQBfSL7mS7fAEAauVa8A (envelope-from ) for ; Wed, 30 Aug 2023 02:23:16 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id CE0554536A for ; Wed, 30 Aug 2023 02:23:15 +0200 (CEST) Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=scratchpost.org header.s=kas202303142049 header.b=IAI28ziA; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1693354996; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=hTZlXFxRMrBttKuib44RwrpJPUQa8XqTMlzSpgwEj3Q=; b=N5NI3beLf+q4no71Y1PQPfvUcLb8UvpwgLcwcFHqKeiho2pFD+UIorYShd/r6lPaTm6xtq hiFgxDoqw5O5Eq2iXspJpkLFgbgEO8ZVSM2UDhlc/7k4gnr1U5gc5muixolUaMpyczvl6i 7LdpwAHzO4PilNNDRUtyycvmPzDFEnB2oSRkHUNsqSgklugQoYaR8jOZl7gfXfynsZ0lX3 1Fx2vaNuMamWDpWoOR2AivS1o2kbCTapbHGvu31KbZ9vMebPDavm9ten5XBgEOMbeb85Kc ixRo0J4nzlNMWe+qYF+Guzy90Z2RvsBarCpH+6ZbCvDSaTdMdwE1xVWGQwFFzg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=scratchpost.org header.s=kas202303142049 header.b=IAI28ziA; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1693354996; a=rsa-sha256; cv=none; b=CwqafSVchC7iEnDMzc4dvs/hNjJYS3IDAiVAd0MgS2oSaMkrocOoXSVffN27SZvz3beBYp zKiyfAX1yb3YXw5qsz1MGTUZRrTIkt4rMqLW1nEkyk4JUQvuqwSXhe8g2/Srv+yarjWOJD tjD++4ZRs9U8zqSMIh6SmQ5idAibK+2qbrEI+EI0Qz+B9f/EcqcQLHsw2a7W51fiHk/XH9 MA7bX+z8+LjK7uGMz1JE+6exVVX+I6ry0TnDD3IQwpEmWxNtXB7IihXF7KutnAImFaMqZN hEwSZdz2ycUuIAKTDYHyhyrCpxerP8jFPzHoxUyHjhepSRBpJU59o9bys/Rpkw== Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qb8yX-0001Ua-Jp; Tue, 29 Aug 2023 20:22:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qb8yN-0001Tp-HC for guix-devel@gnu.org; Tue, 29 Aug 2023 20:22:16 -0400 Received: from dd30410.kasserver.com ([85.13.145.193]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qb8yI-0004jr-4D; Tue, 29 Aug 2023 20:22:14 -0400 Received: from dd30410.kasserver.com (dd0805.kasserver.com [85.13.161.253]) by dd30410.kasserver.com (Postfix) with ESMTPSA id 9814811201CB; Wed, 30 Aug 2023 02:22:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=scratchpost.org; s=kas202303142049; t=1693354921; bh=hTZlXFxRMrBttKuib44RwrpJPUQa8XqTMlzSpgwEj3Q=; h=Subject:To:References:From:In-Reply-To:Date:From; b=IAI28ziASNUNK0ODW/5MrE+pbU3/8qEwe+f59rUZTYRuqkjmE85II17GyRsXOICE9 Y07+BY8Cn1u29Yfm7AS76MhVGx9SGo22ktZpXdcNDwX21XV7yCCb64G6sL/DZH+sJJ SMRigGbNirdbdKJulTieVx78MVncZy6GNakdslJ1dpO1wTu7SsfhnKbjruuOdV0zPe yeFse7OhFrjYlHNEGZj4WT45mxKiEFYKjU3x28aGPg7BT2c8MPk3vji1Tg11rzHyoG 2UESx9G7JUFvlcK2rR/W/81wRtYlrFok2IXmxcDdZWMfoakgyW5McR0WQqceUU0UL6 goAUnPoJJy0gg== Subject: Re: How can we decrease the cognitive overhead for contributors? To: guix-devel@gnu.org, cox.katherine.e@gmail.com, ludo@gnu.org References: From: "Danny Milosavljevic" User-Agent: ALL-INKL Webmail 2.11 X-SenderIP: 84.115.230.171 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="=_6b438f15c99d51550f89e226b0382b66" Message-Id: <20230830002201.9814811201CB@dd30410.kasserver.com> Date: Wed, 30 Aug 2023 02:22:01 +0200 (CEST) X-Spamd-Bar: + Received-SPF: pass client-ip=85.13.145.193; envelope-from=dannym@scratchpost.org; helo=dd30410.kasserver.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -2.92 X-Spam-Score: -2.92 X-Migadu-Scanner: mx0.migadu.com X-Migadu-Queue-Id: CE0554536A X-TUID: GEsnw2HgrZ2F This is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format --=_6b438f15c99d51550f89e226b0382b66 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Hi, > review" because of the amount of cognitive overhead required. I've written > a script for myself that tries to perform all the steps including running > the git command to submit the patch, and this has helped me, but that this > is necessary for me to do might be something that, if addressed, could > help others. I agree that automating the technical steps of contributing to Guix would be nice. I suggest that we preinstall a script that does the equivalent of this: if [ ! -d guix ] then git clone --depth=1 https://git.savannah.gnu.org/git/guix.git guix else (cd guix && git pull --rebase) fi \ && cd guix && guix shell -C -D guix -- ./bootstrap \ && guix shell -C -D guix -- ./configure --localstatedir=/var --disable-daemon \ && guix shell -C -D guix -- make -j5 \ && ./pre-inst-env guix edit "$@" \ && git add gnu/packages/*.scm Also, we should automate adding an smtp server (after ascertaining that port 25 localhost is not open or something? Not sure.): git config --global sendemail.smtpencryption tls git config --global sendemail.smtpserver mail.messagingengine.com git config --global sendemail.smtpuser foo@example.com git config --global sendemail.smtpserverport 587 git config --global sendemail.smtppass hackme There's even a file guix/etc/git/gitconfig already--aha! This would reduce the barrier to entry a lot. It's unfortunate that for example pre-inst-env doesn't work correctly (for me; checked on multiple computers) when you don't invoke "make" beforehand (sometimes it just picks up the wrong guix and doesn't say anything!). On the other hand, using a guix.scm anywhere else works without make. If I do "guix edit xyz" it opens a file in /gnu/store that I can't edit. Not sure what good that is. It would be better to ask and then automatically suggest invoking the script above that prepares a guix development environment. It's kinda weird we don't just have a "guix contrib" subcommand or something that automates basic things that any guix contributor needs. > I can't ever seem to get the GNU style commit messages correct. Writing the metadata into the commit messages is annoying. It totally should be automated, especially since Scheme has pretty simple syntax (so it should be easy to write such a thing/famous-last-words). It should just figure out which procedures the changed lines were in, automatically. (This probably does exist in emacs) Because of the line-based nature of the diff tools and of a lot of git tools, we do need to have which procedure was changed in the git commit message, though. > I don't use the email-based patch workflow day-to-day, so this is another > area where I spend a lot of time trying to make sure I'm doing things > correctly. Especially since one needs to the debbugs dance where one first opens a new bug report by sending an email to guix-patches@gnu.org, waits for an ID to be mailed to you, only after that to reply to @debbugs.gnu.org, attaching the patches (copying the message-id from the old mail manually as a reference). That is such a weird workaround for a debbugs limitation. This definitely should be automated. Why not generate a UUID locally and send a mail to @debbugs.gnu.org ? That may require changes to debbugs, though. > manually managing Guile imports is laborious. As a fledgling schemer, I > often forget which imports I needed just for development. Yeah. I like that we now tell the user whether imports are unused, and also which import it could most likely be if it's missing. But automating the cleanup and adding like it is in Java IDEs would totally be awesome. With a language as dynamic as Guile I think this problem is intractable since you can never be sure someone dynamically does (or doesn't) need the import. Can still be approximated. I attached some changes to guix to make the contributor experience less bad. It doesn't look nice but it does work and I even prefer that workflow myself now. @Ludo: What do you think? > Does this affect anyone else? The basic setup affects one only when one changes workstations--which I suspect is why it wasn't improved until now. It's just too rare a problem per person. But it's a very bad barrier of entry for new contributors, and there's no reason for it to be there! But the other annoyances totally affect me all the time, too. Cheers, Danny P.S. We could also do git config --local alias.send-patches 'git send-email -r origin/master --cover-letter --annotate --to=guix-patches@gnu.org' --=_6b438f15c99d51550f89e226b0382b66 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; charset=utf-8; name=0001-guix-scripts-Add-contrib-script.patch Content-Disposition: attachment; filename=0001-guix-scripts-Add-contrib-script.patch RnJvbSAxMGYxNmIwYjNjZjQ3OTMxZGI1Yzk2MDdiOTU4NzJmNDc3NTUwNDIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8MTBmMTZiMGIzY2Y0NzkzMWRiNWM5NjA3Yjk1ODcy ZjQ3NzU1MDQyMi4xNjkzMzUwMTAzLmdpdC5kYW5ueW1Ac2NyYXRjaHBvc3Qub3JnPgpGcm9tOiBE YW5ueSBNaWxvc2F2bGpldmljIDxkYW5ueW1Ac2NyYXRjaHBvc3Qub3JnPgpEYXRlOiBXZWQsIDMw IEF1ZyAyMDIzIDAwOjUwOjAwICswMjAwClN1YmplY3Q6IFtQQVRDSF0gZ3VpeDogc2NyaXB0czog QWRkICJjb250cmliIiBzY3JpcHQuCgoqIGd1aXgvc2NyaXB0cy9jb250cmliLnNjbTogTmV3IGZp bGUuCiogZ3VpeC9zY3JpcHRzL2VkaXQuc2NtIChzcGF3bi1lZGl0b3IpOiBNZW50aW9uIG5ldyBj b21tYW5kICJndWl4IGNvbnRyaWIiIGlmIGFwcGxpY2FibGUuCiogbWFuaWZlc3Quc2NtOiBOZXcg ZmlsZS4KKiBkb2MvZ3VpeC50ZXhpIChJbnZva2luZyBndWl4IGNvbnRyaWIpOiBOZXcgbm9kZS4K LS0tCiBkb2MvZ3VpeC50ZXhpICAgICAgICAgICAgfCAgMTcgKysrCiBndWl4L3NjcmlwdHMvY29u dHJpYi5zY20gfCAyNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBn dWl4L3NjcmlwdHMvZWRpdC5zY20gICAgfCAgNTMgKysrKy0tLS0KIG1hbmlmZXN0LnNjbSAgICAg ICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDMxNiBpbnNlcnRpb25zKCspLCAyMSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBndWl4L3NjcmlwdHMvY29udHJpYi5zY20K IGNyZWF0ZSBtb2RlIDEwMDY0NCBtYW5pZmVzdC5zY20KCmRpZmYgLS1naXQgYS9kb2MvZ3VpeC50 ZXhpIGIvZG9jL2d1aXgudGV4aQppbmRleCBmODJiYjk5MDY5Li5jNjI2YTViOGJhIDEwMDY0NAot LS0gYS9kb2MvZ3VpeC50ZXhpCisrKyBiL2RvYy9ndWl4LnRleGkKQEAgLTMyNyw2ICszMjcsNyBA QCBUb3AKIAogKiBJbnZva2luZyBndWl4IGJ1aWxkOjogICAgICAgICBCdWlsZGluZyBwYWNrYWdl cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAqIEludm9raW5nIGd1aXggZWRpdDo6ICAgICAgICAg IEVkaXRpbmcgcGFja2FnZSBkZWZpbml0aW9ucy4KKyogSW52b2tpbmcgZ3VpeCBjb250cmliOjog ICAgICAgQ29udHJpYnV0aW5nIGNoYW5nZXMgdG8gR3VpeC4KICogSW52b2tpbmcgZ3VpeCBkb3du bG9hZDo6ICAgICAgRG93bmxvYWRpbmcgYSBmaWxlIGFuZCBwcmludGluZyBpdHMgaGFzaC4KICog SW52b2tpbmcgZ3VpeCBoYXNoOjogICAgICAgICAgQ29tcHV0aW5nIHRoZSBjcnlwdG9ncmFwaGlj IGhhc2ggb2YgYSBmaWxlLgogKiBJbnZva2luZyBndWl4IGltcG9ydDo6ICAgICAgICBJbXBvcnRp bmcgcGFja2FnZSBkZWZpbml0aW9ucy4KQEAgLTEzNzczLDYgKzEzNzc0LDIyIEBAIEludm9raW5n IGd1aXggZWRpdAogQHZhcntkaXJlY3Rvcnl9fSkgYWxsb3dzIHlvdSB0byBhZGQgQHZhcntkaXJl Y3Rvcnl9IHRvIHRoZSBmcm9udCBvZiB0aGUKIHBhY2thZ2UgbW9kdWxlIHNlYXJjaCBwYXRoIGFu ZCBzbyBtYWtlIHlvdXIgb3duIHBhY2thZ2VzIHZpc2libGUuCiAKK0Bub2RlIEludm9raW5nIGd1 aXggY29udHJpYgorQHNlY3Rpb24gSW52b2tpbmcgQGNvbW1hbmR7Z3VpeCBjb250cmlifQorVGhl IEBjb21tYW5ke2d1aXggY29udHJpYiBlZGl0fSBjb21tYW5kIGFsbG93cyBuZXcgY29udHJpYnV0 b3JzIHRvIGVhc2lseQorZ2V0IHN0YXJ0ZWQgaW4gY29udHJpYnV0aW5nIHRvIGd1aXguCisKK0Zp cnN0LCBpZiBAY29tbWFuZHtndWl4IGVkaXR9IGVuZGVkIHVwIHdpdGggYSBmaWxlIGluIHRoZSBz dG9yZQorKHdoaWNoIGlzbid0IGVkaXRhYmxlKSwgdGhlbiBndWl4IHdpbGwgZ2l2ZSBhIGhpbnQg dG8gdXNlCitAY29tbWFuZHtndWl4IGNvbnRyaWIgZWRpdH0gaW5zdGVhZC4KKworQGNvbW1hbmR7 Z3VpeCBjb250cmliIGVkaXR9IHdpbGwgYXV0b21hdGljYWxseSBjaGVjayBvdXQgR3VpeCBzb3Vy Y2UgY29kZQorZnJvbSB2ZXJzaW9uIGNvbnRyb2wsIGJ1aWxkIGl0LCBvcHRpb25hbGx5IHNldCB1 cCBnaXQgaW4gb3JkZXIgdG8gc2VuZCBlbWFpbAorYW5kIGdlbmVyYWxseSBwcmVwYXJlIGEgY29u dHJpYnV0b3JzJyBtYWNoaW5lLiAgVGhlbiBpdCB3aWxsIGdpdmUgYSBoaW50Cit0byB1c2UgQGNv bW1hbmQgey4vcHJlLWluc3QtZW52IGd1aXggZWRpdH0gaW4gb3JkZXIgdG8gYWN0dWFsbHkgZWRp dAordGhlIGZpbGUgaW5zaWRlIHRoYXQgbmV3IHNvdXJjZSBjb2RlIGNoZWNrb3V0IG9mIGd1aXgu ICBJdCB3aWxsIGFsc28gZ2l2ZQorYSBoaW50IG9uIGhvdyB0byBzZW5kIHRoZSBmaW5pc2hlZCBj aGFuZ2VzIHRvIHVzLgorCiBAbm9kZSBJbnZva2luZyBndWl4IGRvd25sb2FkCiBAc2VjdGlvbiBJ bnZva2luZyBAY29tbWFuZHtndWl4IGRvd25sb2FkfQogCmRpZmYgLS1naXQgYS9ndWl4L3Njcmlw dHMvY29udHJpYi5zY20gYi9ndWl4L3NjcmlwdHMvY29udHJpYi5zY20KbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2M5NTI5MzMwNQotLS0gL2Rldi9udWxsCisrKyBiL2d1 aXgvc2NyaXB0cy9jb250cmliLnNjbQpAQCAtMCwwICsxLDI2NiBAQAorOzs7IEdOVSBHdWl4IC0t LSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCis7OzsgQ29weXJpZ2h0IMKp IDIwMjEtMjAyMyBMdWRvdmljIENvdXJ0w6hzIDxsdWRvQGdudS5vcmc+Cis7OzsgQ29weXJpZ2h0 IMKpIDIwMjMgRGFubnkgTWlsb3NhdmxqZXZpYyA8ZGFubnltQHNjcmF0Y2hwb3N0Lm9yZz4KKzs7 OworOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1aXgg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dAorOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7OyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ3VpeCBzY3JpcHRzIGNvbnRyaWIp CisgICM6dXNlLW1vZHVsZSAoZ3VpeCB1aSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGRpYWdub3N0 aWNzKSA7ICM6c2VsZWN0IChsb2NhdGlvbiBsZWF2ZSByZXBvcnQtZXJyb3IpCisgICM6dXNlLW1v ZHVsZSAoZ3VpeCBzY3JpcHRzIGVudmlyb25tZW50KQorICAjOmF1dG9sb2FkICAgKGd1aXggc2Ny aXB0cyBidWlsZCkgKHNob3ctYnVpbGQtb3B0aW9ucy1oZWxwCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2hvdy1uYXRpdmUtYnVpbGQtb3B0aW9ucy1oZWxwKQorICAjOmF1 dG9sb2FkICAgKGd1aXggdHJhbnNmb3JtYXRpb25zKSAob3B0aW9ucy0+dHJhbnNmb3JtYXRpb24K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uLW9w dGlvbi1rZXk/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93LXRy YW5zZm9ybWF0aW9uLW9wdGlvbnMtaGVscCkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHNjcmlwdHMp CisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnaXQpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1 dGlscykKKyAgIzp1c2UtbW9kdWxlIChndWl4IHBhY2thZ2VzKQorICAjOnVzZS1tb2R1bGUgKGd1 aXggcHJvZmlsZXMpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTI2KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0zNykKKyAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktNzEpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCisgICM6 dXNlLW1vZHVsZSAoaWNlLTkgcG9wZW4pCisgICM6dXNlLW1vZHVsZSAoaWNlLTkgdGV4dHVhbC1w b3J0cykKKyAgIzphdXRvbG9hZCAgIChpY2UtOSByZGVsaW0pIChyZWFkLWxpbmUpCisgICM6YXV0 b2xvYWQgICAoZ3VpeCBiYXNlMzIpIChieXRldmVjdG9yLT5iYXNlMzItc3RyaW5nKQorICAjOmF1 dG9sb2FkICAgKHJucnMgYnl0ZXZlY3RvcnMpIChzdHJpbmctPnV0ZjgpCisgICM6YXV0b2xvYWQg ICAoZ3VpeCB1dGlscykgKGNvbmZpZy1kaXJlY3RvcnkgY2FjaGUtZGlyZWN0b3J5KQorICAjOmF1 dG9sb2FkICAgKGd1aXggZGVzY3JpYmUpIChjdXJyZW50LWNoYW5uZWxzKQorICAjOmF1dG9sb2Fk ICAgKGd1aXggY2hhbm5lbHMpIChjaGFubmVsLWNvbW1pdCkKKyAgIzphdXRvbG9hZCAgIChnY3J5 cHQgaGFzaCkgKHNoYTI1NikKKyAgIzp1c2UtbW9kdWxlICgoZ3VpeCBidWlsZCB1dGlscykgIzpz ZWxlY3QgKG1rZGlyLXApKQorICAjOnVzZS1tb2R1bGUgKGd1aXggY2FjaGUpCisgICM6dXNlLW1v ZHVsZSAoKGljZS05IGZ0dykgIzpzZWxlY3QgKHNjYW5kaXIpKQorICAjOmF1dG9sb2FkICAgKGlj ZS05IHByZXR0eS1wcmludCkgKHByZXR0eS1wcmludCkKKyAgIzphdXRvbG9hZCAgIChnbnUgcGFj a2FnZXMpIChjYWNoZS1pcy1hdXRob3JpdGF0aXZlPworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhY2thZ2UtdW5pcXVlLXZlcnNpb24tcHJlZml4CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3BlY2lmaWNhdGlvbi0+cGFja2FnZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNwZWNpZmljYXRpb24tPnBhY2thZ2Urb3V0cHV0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbnMtPm1hbmlmZXN0KQorICAjOmV4cG9ydCAoZ3Vp eC1jb250cmliKSkKKworKGRlZmluZSAoc2hvdy1oZWxwKQorICAoZGlzcGxheSAoR18gIlVzYWdl OiBndWl4IGNvbnRyaWIgZWRpdCBQQUNLQUdFUy4uLgorQ3JlYXRlL3VwZGF0ZSBhIGRldmVsb3Bt ZW50IGVudmlyb25tZW50IGZvciBndWl4IGFuZCBvcGVuIGEgdGV4dCBlZGl0b3Igd2l0aAorUEFD S0FHRVMgaW5zaWRlIGl0LlxuIikpCisgIChuZXdsaW5lKQorCisgIDs7IFRoZXNlIHR3byBvcHRp b25zIGRpZmZlciBmcm9tICdndWl4IGVudmlyb25tZW50Jy4KKworICAoZGlzcGxheSAoR18gIgor ICAtaCwgLS1oZWxwICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0IikpCisg IChkaXNwbGF5IChHXyAiCisgIC1WLCAtLXZlcnNpb24gICAgICAgICAgZGlzcGxheSB2ZXJzaW9u IGluZm9ybWF0aW9uIGFuZCBleGl0IikpCisgIChuZXdsaW5lKQorICAoc2hvdy1idWctcmVwb3J0 LWluZm9ybWF0aW9uKSkKKworOzs7IEZJWE1FOgorCisoZGVmaW5lICh0YWctcGFja2FnZS1hcmcg b3B0cyBhcmcpCisgICJSZXR1cm4gYSB0d28tZWxlbWVudCBsaXN0IHdpdGggdGhlIGZvcm0gKFRB RyBBUkcpIHRoYXQgdGFncyBBUkcgd2l0aCBlaXRoZXIKKydhZC1ob2MnIGluIE9QVFMgaGFzIHRo ZSAnYWQtaG9jPycga2V5IHNldCB0byAjdCwgb3IgJ2lucHV0cycgb3RoZXJ3aXNlLiIKKyAgKGlm IChhc3NvYy1yZWYgb3B0cyAnYWQtaG9jPykKKyAgICAgIGAoYWQtaG9jLXBhY2thZ2UgLGFyZykK KyAgICAgIGAocGFja2FnZSAsYXJnKSkpCisKKyhkZWZpbmUgKGVuc3VyZS1hZC1ob2MgYWxpc3Qp CisgIChpZiAoYXNzcS1yZWYgYWxpc3QgJ2FkLWhvYz8pCisgICAgICBhbGlzdAorICAgICAgYCgo YWQtaG9jPyAuICN0KSAsQGFsaXN0KSkpCisKKyhkZWZpbmUgKHdyYXBwZWQtb3B0aW9uIG9wdCkK KyAgIldyYXAgT1BULCBhIFNSRkktMzcgb3B0aW9uLCBzdWNoIHRoYXQgaXRzIHByb2Nlc3NvciBh bHdheXMgYWRkcyB0aGUKKydhZC1ob2M/JyBmbGFnIHRvIHRoZSByZXN1bHRpbmcgYWxpc3QuIgor ICAob3B0aW9uIChvcHRpb24tbmFtZXMgb3B0KQorICAgICAgICAgIChvcHRpb24tcmVxdWlyZWQt YXJnPyBvcHQpCisgICAgICAgICAgKG9wdGlvbi1vcHRpb25hbC1hcmc/IG9wdCkKKyAgICAgICAg ICAoY29tcG9zZSBlbnN1cmUtYWQtaG9jIChvcHRpb24tcHJvY2Vzc29yIG9wdCkpKSkKKworKGRl ZmluZSAlb3B0aW9ucworICA7OyBTcGVjaWZpY2F0aW9uIG9mIHRoZSBjb21tYW5kLWxpbmUgb3B0 aW9ucy4KKyAgKGxldCAoKHRvLXJlbW92ZSAnKCJhZC1ob2MiICJpbmhlcml0IiAibG9hZCIgImhl bHAiICJ2ZXJzaW9uIikpKQorICAgIChhcHBlbmQKKyAgICAgICAgKGxpc3QgKG9wdGlvbiAnKCNc aCAiaGVscCIpICNmICNmCisgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdzCisgICAg ICAgICAgICAgICAgICAgICAgICAoc2hvdy1oZWxwKQorICAgICAgICAgICAgICAgICAgICAgICAg KGV4aXQgMCkpKQorICAgICAgICAgICAgICAob3B0aW9uICcoI1xWICJ2ZXJzaW9uIikgI2YgI2YK KyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIGFyZ3MKKyAgICAgICAgICAgICAgICAgICAg ICAgIChzaG93LXZlcnNpb24tYW5kLWV4aXQgImd1aXggY29udHJpYiIpKSkpCisgICAgICAgIChm aWx0ZXItbWFwIChsYW1iZGEgKG9wdCkKKyAgICAgICAgICAgICAgICAgICAgICAoYW5kIChub3Qg KGFueSAobGFtYmRhIChuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbWJlciBuYW1lIHRvLXJlbW92ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG9wdGlvbi1uYW1lcyBvcHQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICh3cmFwcGVkLW9wdGlvbiBvcHQpKSkKKyAgICAgICAgICAgICAgICAgICAgJWVudmlyb25tZW50 LW9wdGlvbnMpKSkpCisKKyhkZWZpbmUgJWRlZmF1bHQtb3B0aW9ucworIGAoKSkKKworKGRlZmlu ZSAocGFyc2UtYXJncyBhcmdzKQorICAiUGFyc2UgdGhlIGxpc3Qgb2YgY29tbWFuZCBsaW5lIGFy Z3VtZW50cyBBUkdTLiIKKyAgKGRlZmluZSAoaGFuZGxlLWFyZ3VtZW50IGFyZyByZXN1bHQpCisg ICAgKGFsaXN0LWNvbnMgJ3BhY2thZ2UgKHRhZy1wYWNrYWdlLWFyZyByZXN1bHQgYXJnKQorICAg ICAgICAgICAgICAgIChlbnN1cmUtYWQtaG9jIHJlc3VsdCkpKQorCisgIDs7IFRoZSAnLS0nIHRv a2VuIGlzIHVzZWQgdG8gc2VwYXJhdGUgdGhlIGNvbW1hbmQgdG8gcnVuIGZyb20gdGhlIHJlc3Qg b2YKKyAgOzsgdGhlIG9wZXJhbmRzLgorICAobGV0ICgoYXJncyBjb21tYW5kIChicmVhayAoY3V0 IHN0cmluZz0/ICItLSIgPD4pIGFyZ3MpKSkKKyAgICAocGFyc2UtY29tbWFuZC1saW5lIGFyZ3Mg JW9wdGlvbnMgKGxpc3QgJWRlZmF1bHQtb3B0aW9ucykpKSkKKworKGRlZmluZSAoaW52b2tlLWFu ZC1yZWFkIC4gYXJncykKKyAgIkludm9rZSBBUkdTIGFuZCByZWFkIGl0cyBzdGRvdXQgaW50byBh IHN0cmluZyIKKyAgKGxldCogKChwaXBlIChhcHBseSBvcGVuLXBpcGUqIE9QRU5fUkVBRCBhcmdz KSkKKyAgICAgICAgIChyZXN1bHQgKHN0cmluZy10cmltLXJpZ2h0IChnZXQtc3RyaW5nLWFsbCBw aXBlKSkpCisgICAgICAgICAoY2xvc2UtcGlwZSBwaXBlKSkKKyAgICByZXN1bHQpKQorCisoZGVm aW5lIChlbnN1cmUtZ2l0LXNldHRpbmcgbmFtZSBkZWZhdWx0LXZhbHVlKQorICAobGV0ICgoY3Vy cmVudC12YWx1ZSAoaW52b2tlLWFuZC1yZWFkICJnaXQiICJjb25maWciICItLWdsb2JhbCIgbmFt ZSkpKQorICAgIChmb3JtYXQgI3QgIkN1cnJlbnQgc2V0dGluZyBvZiB+cyBpcyB+c34lIiBuYW1l IGN1cnJlbnQtdmFsdWUpCisgICAgKGxldCAoKGRlZmF1bHQtdmFsdWUgKGlmIChzdHJpbmc9PyBj dXJyZW50LXZhbHVlICIiKSBkZWZhdWx0LXZhbHVlIGN1cnJlbnQtdmFsdWUpKSkKKyAgICAgIChm b3JtYXQgI3QgIldoYXQgdmFsdWUgZG8geW91IHdhbnQgZm9yIGdpdCBzZXR0aW5nIH5zPyBbfmFd ICIgbmFtZSBkZWZhdWx0LXZhbHVlKQorICAgICAgKGZvcmNlLW91dHB1dCkKKyAgICAgIChsZXQg KChuZXctdmFsdWUgKHN0cmluZy10cmltLXJpZ2h0IChyZWFkLWxpbmUpKSkpCisgICAgICAgICh1 bmxlc3MgKHN0cmluZz0/IG5ldy12YWx1ZSBjdXJyZW50LXZhbHVlKQorICAgICAgICAgIChpbnZv a2UgImdpdCIgImNvbmZpZyIgIi0tZ2xvYmFsIiBuYW1lIChpZiAoc3RyaW5nPT8gbmV3LXZhbHVl ICIiKSBkZWZhdWx0LXZhbHVlIG5ldy12YWx1ZSkpKSkpKSkKKworKGRlZmluZSAoY29uZmlndXJl LWdpdCkKKyAgOyBPciBqdXN0IGFzayB1c2VyIHRvIGRvIGBndWl4IHNoZWxsIC1DYCBpbiB0aGUg Z3VpeCBjaGVja291dCBkaXJlY3RvcnkKKyAgKGZvcm1hdCAjdCAiVGhpcyB3aWxsIHNldCB1cCB5 b3VyIHVzZXIncyBnaXQuIElmIHlvdSBkb24ndCB3YW50IHVzIHRvIGRvIHRoYXQsIGNhbmNlbCBu b3cufiUiKQorCisgIChpZiAoc3RyaW5nPT8gKGludm9rZS1hbmQtcmVhZCAiZ2l0IiAiLWgiKSAi IikKKyAgICAgIChleGl0IDEpKQorOyAgICAgIFBsZWFzZSBpbnN0YWxsIGBnaXQnLS1mb3IgZXhh bXBsZSBieSBlbnRlcmluZyB0aGUgZ3VpeCBlbnZpcm9ubWVudCB1c2luZyBgZ3VpeCBzaGVsbCAt QyciCisKKyAgKGlmIChzdHJpbmc9PyAoaW52b2tlLWFuZC1yZWFkICJnaXQiICJzZW5kLWVtYWls IiAiLWgiKSAiIikKKyAgICAgIChleGl0IDEpKQorIDsgICAgIChsZWF2ZSAiUGxlYXNlIGluc3Rh bGwgYGdpdCBzZW5kLWVtYWlsJy0tZm9yIGV4YW1wbGUgYnkgZW50ZXJpbmcgdGhlIGd1aXggZW52 aXJvbm1lbnQgdXNpbmcgYGd1aXggc2hlbGwgLUMnIikKKworICAoZW5zdXJlLWdpdC1zZXR0aW5n ICJ1c2VyLmVtYWlsIiAiIikKKyAgKGVuc3VyZS1naXQtc2V0dGluZyAidXNlci5uYW1lIiAiIikK KworICAoZW5zdXJlLWdpdC1zZXR0aW5nICJzZW5kZW1haWwuc210cHNlcnZlciIgIiIpCisgIChl bnN1cmUtZ2l0LXNldHRpbmcgInNlbmRlbWFpbC5zbXRwZW5jcnlwdGlvbiIgInRscyIpCisgIChl bnN1cmUtZ2l0LXNldHRpbmcgInNlbmRlbWFpbC5zbXRwc2VydmVycG9ydCIgIjU4NyIpCisgIChl bnN1cmUtZ2l0LXNldHRpbmcgInNlbmRlbWFpbC5zbXRwdXNlciIgIiIpCisgIChlbnN1cmUtZ2l0 LXNldHRpbmcgInNlbmRlbWFpbC5zbXRwcGFzcyIgIiIpKQorCis7IGR1cGxpY2F0ZQorKGRlZmlu ZSAoYXV0aG9yaXplZC1kaXJlY3RvcnktZmlsZSkKKyAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUg ZmlsZSBsaXN0aW5nIGRpcmVjdG9yaWVzIGZvciB3aGljaCAnZ3VpeCBzaGVsbCcgbWF5CithdXRv bWF0aWNhbGx5IGxvYWQgJ2d1aXguc2NtJyBvciAnbWFuaWZlc3Quc2NtJyBmaWxlcy4iCisgIChz dHJpbmctYXBwZW5kIChjb25maWctZGlyZWN0b3J5KSAiL3NoZWxsLWF1dGhvcml6ZWQtZGlyZWN0 b3JpZXMiKSkKKworOyBkdXBsaWNhdGUKKyhkZWZpbmUgKGF1dGhvcml6ZWQtc2hlbGwtZGlyZWN0 b3J5PyBkaXJlY3RvcnkpCisgICJSZXR1cm4gdHJ1ZSBpZiBESVJFQ1RPUlkgaXMgYW1vbmcgdGhl IGF1dGhvcml6ZWQgZGlyZWN0b3JpZXMgZm9yIGF1dG9tYXRpYworbG9hZGluZy4gIFRoZSBsaXN0 IG9mIGF1dGhvcml6ZWQgZGlyZWN0b3JpZXMgaXMgcmVhZCBmcm9tCisnYXV0aG9yaXplZC1kaXJl Y3RvcnktZmlsZSc7IGVhY2ggbGluZSBtdXN0IGJlIGVpdGhlcjogYW4gYWJzb2x1dGUgZmlsZSBu YW1lLAorYSBoYXNoLXByZWZpeGVkIGNvbW1lbnQsIG9yIGEgYmxhbmsgbGluZS4iCisgIChjYXRj aCAnc3lzdGVtLWVycm9yCisgICAgKGxhbWJkYSAoKQorICAgICAgKGNhbGwtd2l0aC1pbnB1dC1m aWxlIChhdXRob3JpemVkLWRpcmVjdG9yeS1maWxlKQorICAgICAgICAobGFtYmRhIChwb3J0KQor ICAgICAgICAgIChsZXQgbG9vcCAoKQorICAgICAgICAgICAgKG1hdGNoIChyZWFkLWxpbmUgcG9y dCkKKyAgICAgICAgICAgICAgKCg/IGVvZi1vYmplY3Q/KSAjZikKKyAgICAgICAgICAgICAgKCg9 IHN0cmluZy10cmltIGxpbmUpCisgICAgICAgICAgICAgICAoY29uZCAoKHN0cmluZy1wcmVmaXg/ ICIjIiBsaW5lKSAgIDtjb21tZW50CisgICAgICAgICAgICAgICAgICAgICAgKGxvb3ApKQorICAg ICAgICAgICAgICAgICAgICAgKChzdHJpbmctcHJlZml4PyAiLyIgbGluZSkgICA7YWJzb2x1dGUg ZmlsZSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgKG9yIChzdHJpbmc9PyBsaW5lIGRpcmVj dG9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvb3ApKSkKKyAgICAgICAgICAgICAg ICAgICAgICgoc3RyaW5nLW51bGw/IChzdHJpbmctdHJpbS1yaWdodCBsaW5lKSkgO2JsYW5rIGxp bmUKKyAgICAgICAgICAgICAgICAgICAgICAobG9vcCkpCisgICAgICAgICAgICAgICAgICAgICAo ZWxzZSAgICAgICAgICAgICAgICAgICAgICAgIDtib2d1cyBsaW5lCisgICAgICAgICAgICAgICAg ICAgICAgKGxldCAoKGxvYyAobG9jYXRpb24gKHBvcnQtZmlsZW5hbWUgcG9ydCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9ydC1saW5lIHBvcnQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcnQtY29sdW1uIHBvcnQp KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAod2FybmluZyBsb2MgKEdfICJpZ25vcmluZyBp bnZhbGlkIGZpbGUgbmFtZTogJ35hJ34lIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpbmUpKSkpKSkpKSkpCisgICAgKGNvbnN0ICNmKSkpCisKKyhkZWZpbmUgKHByZXBhcmUt Z3VpeC1jaGVja291dCBkZXN0aW5hdGlvbi1kaXJlY3RvcnkpCisgIChta2Rpci1wIGRlc3RpbmF0 aW9uLWRpcmVjdG9yeSkKKyAgOyBUT0RPOiBTb21laG93IGRpdmluZSBzc2ggVVJMID8KKyAgOyBU T0RPOiBSZXNvbHZlIC9nbnUvc3RvcmUvdzc3cHNuYnJ5eHZwanhoNTR5MXE3bDdnYnk1ZHI1dmst Z3VpeC1tb2R1bGUtdW5pb24vc2hhcmUvZ3VpbGUvc2l0ZS8zLjAvZ251L3BhY2thZ2VzL2FuZHJv aWQuc2NtIGJhY2sgdG8gY2hhbm5lbCBnaXQgdXJsIGFuZCBjb21taXQ7IHRoZW4gY2hlY2sgKGF0 IGxlYXN0KSB0aGF0IG91dC4KKyAgOyAgICAgICBTbzogaXRlcmF0ZSBvdmVyIGNoYW5uZWxzOyBm aW5kIHdoZXJlIHRoZSBzb3VyY2UgZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYWNrYWdlIGlz PworICA7ICAgICAgIFRoZW46IFVzZSBzdGFydGluZy1jb21taXQgZnJvbSB0aGUgcmVzcGVjdGl2 ZSBjaGFubmVsPyBOb3Qgc3VyZSB3aGF0IHRoYXQncyBmb3IgaW4gdGhlIGZpcnN0IHBsYWNlCisg IDsgICAgICAgVGhlbjogRHluYW1pY2FsbHkgc2V0IGRlc3RpbmF0aW9uLWRpcmVjdG9yeQorICA7 IFRPRE86IHJlZiAnKGJyYW5jaCAuICJtYXN0ZXIiKQorICA7IFRPRE86IC0tZGVwdGggMSBvciBz b21ldGhpbmcKKyAgKHVwZGF0ZS1jYWNoZWQtY2hlY2tvdXQgImh0dHBzOi8vZ2l0LnNhdmFubmFo LmdudS5vcmcvZ2l0L2d1aXguZ2l0IiAjOnJlZiAnKCkgIzpjYWNoZS1kaXJlY3RvcnkgZGVzdGlu YXRpb24tZGlyZWN0b3J5KQorICA7IE1vcmUgZ3VpeC1lbnZpcm9ubWVudCogb3B0aW9uczoKKyAg OyAgKHBhY2thZ2UgYWQtaG9jLXBhY2thZ2UgIm5hbm8iKQorICA7ICAoYWQtaG9jPyAuICN0KQor ICA7ICAoc3lzdGVtIC4gIng4Nl82NC1saW51eCIpCisgIDsgIChzdWJzdGl0dXRlcz8gLiAjdCkK KyAgOyAgKHN5bWxpbmtzKQorICA7ICAob2ZmbG9hZD8gLiAjdCkKKyAgOyAgKGdyYWZ0PyAuICN0 KQorICA7ICAocHJpbnQtYnVpbGQtdHJhY2U/IC4gI3QpCisgIDsgIChwcmludC1leHRlbmRlZC1i dWlsZC10cmFjZT8gLiAjdCkKKyAgOyAgKG11bHRpcGxleGVkLWJ1aWxkLW91dHB1dD8gLiAjdCkK KyAgOyAgKGRlYnVnIC4gMCkKKyAgOyAgKHZlcmJvc2l0eSAuIDEpCisgIChkZWZpbmUgKGluLWd1 aXgtY2hlY2tvdXQgY29tbWFuZCkKKyAgICAoZ3VpeC1lbnZpcm9ubWVudCogYCgocGFja2FnZSBw YWNrYWdlICJndWl4IikgKGFkLWhvYz8gLiAjZikgKGRlYnVnIC4gMCkgKHZlcmJvc2l0eSAuIDEp IChleGVjIC4gLGNvbW1hbmQpKSkpIDsgVE9ETzogb3B0cyBpbnN0ZWFkIG9mICcoKQorCisgIDs7 IEFwcGVuZCBkZXN0aW5hdGlvbi1kaXJlY3RvcnkgdG8gKGF1dGhvcml6ZWQtZGlyZWN0b3J5LWZp bGUpCisgICh1bmxlc3MgKGF1dGhvcml6ZWQtc2hlbGwtZGlyZWN0b3J5PyBkZXN0aW5hdGlvbi1k aXJlY3RvcnkpCisgICAgKGxldCAoKG91dHB1dC1wb3J0IChvcGVuLWZpbGUgKGF1dGhvcml6ZWQt ZGlyZWN0b3J5LWZpbGUpICJhIikpKQorICAgICAgKG5ld2xpbmUgb3V0cHV0LXBvcnQpCisgICAg ICAoZGlzcGxheSBkZXN0aW5hdGlvbi1kaXJlY3Rvcnkgb3V0cHV0LXBvcnQpCisgICAgICAobmV3 bGluZSBvdXRwdXQtcG9ydCkKKyAgICAgIChjbG9zZSBvdXRwdXQtcG9ydCkpKQorCisgIDsgVE9E TzogYXNrIHdoZXRoZXIgdG8gZG8gYSBkZXYgbW9kZSBzZXR1cCBhbmQgaGludCB0aGF0IGl0IHdp bGwgY2hhbmdlIHVzZXItZ2xvYmFsIHNldHRpbmdzIQorICAoZm9ybWF0ICN0ICJEbyB5b3Ugd2Fu dCB0byByZWNvbmZpZ3VyZSB0aGUgYGdpdCcgdmVyc2lvbiBjb250cm9sIHN5c3RlbT8gKGlmIHlv dSB3YW50IHRvIGNvbnRyaWJ1dGUgeW91ciBjaGFuZ2VzLCB0aGlzIGlzIHVzZWZ1bCkgW3ldICIp CisgIChmb3JjZS1vdXRwdXQpCisgIChsZXQgKChhbnN3ZXIgKHN0cmluZy10cmltLXJpZ2h0IChy ZWFkLWxpbmUpKSkpCisgICAgKHdoZW4gKG9yIChzdHJpbmc9PyBhbnN3ZXIgInkiKQorICAgICAg ICAgICAgICAoc3RyaW5nPT8gYW5zd2VyICJ5ZXMiKSkKKyAgICAgIChjb25maWd1cmUtZ2l0KSkp CisKKyAgOyBCdWlsZCBHdWl4CisgIChpbi1ndWl4LWNoZWNrb3V0ICcoInNoIiAiLWMiICIuL2Jv b3RzdHJhcCAmJiAuL2NvbmZpZ3VyZSAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLXN5c2NvbmZkaXI9 L2V0YyAtLWRpc2FibGUtZGFlbW9uICYmIG1ha2UgLWoiKSkKKyAgOyBGSVhNRTogd2UgZGllZCBi ZWNhdXNlIG9mIHRoZSBleGVjLCBidXQgd2Ugc3RpbGwgd2FudGVkIHRvIHByaW50IGEgaGludAor KQorCisKKwwKKyhkZWZpbmUtY29tbWFuZCAoZ3VpeC1jb250cmliIC4gYXJncykKKyAgKGNhdGVn b3J5IGRldmVsb3BtZW50KQorICAoc3lub3BzaXMgImNvbnRyaWJ1dGUgdG8gR3VpeCIpCisKKyAg KHdpdGgtZXJyb3ItaGFuZGxpbmcKKyAgICAoZGVmaW5lIG9wdHMKKyAgICAgIChwYXJzZS1hcmdz IGFyZ3MpKQorICAgIChsZXQgKChhcmd1bWVudHMgKHJldmVyc2UgKGZpbHRlci1tYXAgKG1hdGNo LWxhbWJkYSAoKGFyZ3VtZW50IC4gYikgYikpIG9wdHMpKSkpCisgICAgICAobWF0Y2ggYXJndW1l bnRzCisgICAgICAgKCgiZWRpdCIgcGFja2FnZXMgLi4uKQorICAgICAgICAoYmVnaW4KKyAgICAg ICAgICAobGV0ICgoZGVzdGluYXRpb24tZGlyZWN0b3J5IChzdHJpbmctYXBwZW5kIChnZXRlbnYg IkhPTUUiKSAiL3NyYy9ndWl4IikpKQorICAgICAgICAgICAgKHByZXBhcmUtZ3VpeC1jaGVja291 dCBkZXN0aW5hdGlvbi1kaXJlY3RvcnkpCisgICAgICAgICAgICAoZGlzcGxheS1oaW50IChHXyAi SW4gdGhlIGZ1dHVyZSwgaWYgeW91IHdhbnQgYSBtdWNoIGZhc3RlciB3b3JrZmxvdywgcGxlYXNl IGRpcmVjdGx5IGVkaXQgZmlsZXMgaW4gfnMgYW5kIGFsc28gaW52b2tlIGAuL3ByZS1pbnN0LWVu diBndWl4IH5hJyBpbiB0aGVyZS4iKSBkZXN0aW5hdGlvbi1kaXJlY3RvcnkgKHN0cmluZy1qb2lu IGFyZ3MgIiAiKSkKKyAgICAgICAgICAgIChkaXNwbGF5LWhpbnQgKEdfICJJZiB5b3UgYXJlIGRv bmUgYW5kIHlvdSB3YW50IHRvIGVtYWlsIHBhdGNoZXMgZm9yIHJldmlldywgeW91IGNhbiB1c2Ug YGdpdCBzZW5kLWVtYWlsIC1yIG9yaWdpbi9tYXN0ZXIgLS1jb3Zlci1sZXR0ZXIgLS1hbm5vdGF0 ZScgb3Igc2ltaWxhci4iKSkKKyAgICAgICAgICAgICN0CisgICAgICAgICAgICApKSkpKSkpCmRp ZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvZWRpdC5zY20gYi9ndWl4L3NjcmlwdHMvZWRpdC5zY20K aW5kZXggNWNlMjg3MGM1YS4uMjllMGZjNDE5MSAxMDA2NDQKLS0tIGEvZ3VpeC9zY3JpcHRzL2Vk aXQuc2NtCisrKyBiL2d1aXgvc2NyaXB0cy9lZGl0LnNjbQpAQCAtMjEsNiArMjEsNyBAQAogKGRl ZmluZS1tb2R1bGUgKGd1aXggc2NyaXB0cyBlZGl0KQogICAjOnVzZS1tb2R1bGUgKGd1aXggdWkp CiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBzY3JpcHRzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggc3Rv cmUpCiAgICM6dXNlLW1vZHVsZSAoKGd1aXggc2NyaXB0cyBidWlsZCkgIzpzZWxlY3QgKCVzdGFu ZGFyZC1idWlsZC1vcHRpb25zKSkKICAgIzp1c2UtbW9kdWxlICgoZ3VpeCBkaWFnbm9zdGljcykK ICAgICAgICAgICAgICAgICAjOnNlbGVjdCAobG9jYXRpb24tZmlsZSBsb2NhdGlvbi1saW5lKSkK QEAgLTcxLDI4ICs3MiwzOCBAQCAoZGVmaW5lIChzZWFyY2gtcGF0aCogcGF0aCBmaWxlKQogICAg ICAgICAgICAgIGZpbGUgcGF0aCkpCiAgICAgYWJzb2x1dGUtZmlsZS1uYW1lKSkKIAotKGRlZmlu ZSAobG9jYXRpb24tPmxvY2F0aW9uLXNwZWNpZmljYXRpb24gbG9jYXRpb24pCi0gICJSZXR1cm4g dGhlIGxvY2F0aW9uIHNwZWNpZmljYXRpb24gZm9yIExPQ0FUSU9OIGZvciBhIHR5cGljYWwgZWRp dG9yIGNvbW1hbmQKLWxpbmUuIgotICAobGlzdCAoc3RyaW5nLWFwcGVuZCAiKyIKLSAgICAgICAg ICAgICAgICAgICAgICAgKG51bWJlci0+c3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAo bG9jYXRpb24tbGluZSBsb2NhdGlvbikpKQotICAgICAgICAoc2VhcmNoLXBhdGgqICVsb2FkLXBh dGggKGxvY2F0aW9uLWZpbGUgbG9jYXRpb24pKSkpCi0KLShkZWZpbmUgKHNwYXduLWVkaXRvciBs b2NhdGlvbnMpCisoZGVmaW5lIChzcGF3bi1lZGl0b3IgbG9jYXRpb25zIHNwZWNzKQogICAiU3Bh d24gKCVlZGl0b3IpIHRvIGVkaXQgdGhlIGNvZGUgYXQgTE9DQVRJT05TLCBhIGxpc3Qgb2YgPGxv Y2F0aW9uPgogcmVjb3JkcywgYW5kIGV4aXQuIgotICAoY2F0Y2ggJ3N5c3RlbS1lcnJvcgotICAg IChsYW1iZGEgKCkKLSAgICAgIChsZXQgKChmaWxlLW5hbWVzIChhcHBlbmQtbWFwIGxvY2F0aW9u LT5sb2NhdGlvbi1zcGVjaWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsb2NhdGlvbnMpKSkKLSAgICAgICAgOzsgVXNlIGBzeXN0ZW0nIGluc3RlYWQgb2YgYGV4 ZWMnIGluIG9yZGVyIHRvIHNhbmVseSBoYW5kbGUKLSAgICAgICAgOzsgcG9zc2libGUgY29tbWFu ZCBsaW5lIGFyZ3VtZW50cyBpbiAlRURJVE9SLgotICAgICAgICAoZXhpdCAoc3lzdGVtIChzdHJp bmctam9pbiAoY29ucyAoJWVkaXRvcikgZmlsZS1uYW1lcykpKSkpKQotICAgIChsYW1iZGEgYXJn cwotICAgICAgKGxldCAoKGVycm5vIChzeXN0ZW0tZXJyb3ItZXJybm8gYXJncykpKQotICAgICAg ICAobGVhdmUgKEdfICJmYWlsZWQgdG8gbGF1bmNoICd+YSc6IH5hfiUiKQotICAgICAgICAgICAg ICAgKCVlZGl0b3IpIChzdHJlcnJvciBlcnJubykpKSkpKQorCisgIChsZXQgKChsb2NhdGlvbi0+ bG9jYXRpb24tc3BlY2lmaWNhdGlvbgorICAgICAgICAgKGxhbWJkYSAobG9jYXRpb24pCisgICAg ICAgICAgICJSZXR1cm4gdGhlIGxvY2F0aW9uIHNwZWNpZmljYXRpb24gZm9yIExPQ0FUSU9OIGZv ciBhIHR5cGljYWwKK2VkaXRvciBjb21tYW5kIGxpbmUuICBBcyBhIHNpZGUtZWZmZWN0LCBpZiB0 aGUgTE9DQVRJT04gaXMgYSBzdG9yZSBwYXRoLAorbGVhdmUgd2l0aCBhbiBlcnJvciBtZXNzYWdl LiIKKyAgICAgICAgICAgKGxpc3QgKHN0cmluZy1hcHBlbmQgIisiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChudW1iZXItPnN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxvY2F0aW9uLWxpbmUgbG9jYXRpb24pKSkKKworICAgICAgICAgICAgICAgICAo bGV0ICgocGF0aCAoc2VhcmNoLXBhdGgqICVsb2FkLXBhdGggKGxvY2F0aW9uLWZpbGUgbG9jYXRp b24pKSkpCisgICAgICAgICAgICAgICAgICAgKGlmIChzdG9yZS1wYXRoPyBwYXRoKQorICAgICAg ICAgICAgICAgICAgICAgICAobGVhdmUgKEdfICIgJ35hJyBpcyBub3QgZGlyZWN0bHkgZWRpdGFi bGUufiUKK0hpbnQ6IFRyeSAnZ3VpeCBjb250cmliIGVkaXQgfmEnIGluIG9yZGVyIHRvIHByZXBh cmUgYSBHdWl4IGRldmVsb3BtZW50IGVudmlyb25tZW50CitpbiB5b3VyIGhvbWUgZGlyZWN0b3J5 IGFuZCBlZGl0IGl0IHRoZXJlLn4lIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh dGggKHN0cmluZy1qb2luIHNwZWNzICIgIikpCisgICAgICAgICAgICAgICAgICAgICAgIHBhdGgp KSkpKSkKKworICAgIChjYXRjaCAnc3lzdGVtLWVycm9yCisgICAgICAobGFtYmRhICgpCisgICAg ICAgIChsZXQgKChmaWxlLW5hbWVzIChhcHBlbmQtbWFwIGxvY2F0aW9uLT5sb2NhdGlvbi1zcGVj aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9u cykpKQorICAgICAgICAgIDs7IFVzZSBgc3lzdGVtJyBpbnN0ZWFkIG9mIGBleGVjJyBpbiBvcmRl ciB0byBzYW5lbHkgaGFuZGxlCisgICAgICAgICAgOzsgcG9zc2libGUgY29tbWFuZCBsaW5lIGFy Z3VtZW50cyBpbiAlRURJVE9SLgorICAgICAgICAgIChleGl0IChzeXN0ZW0gKHN0cmluZy1qb2lu IChjb25zICglZWRpdG9yKSBmaWxlLW5hbWVzKSkpKSkpCisgICAgICAobGFtYmRhIGFyZ3MKKyAg ICAgICAgKGxldCAoKGVycm5vIChzeXN0ZW0tZXJyb3ItZXJybm8gYXJncykpKQorICAgICAgICAg IChsZWF2ZSAoR18gImZhaWxlZCB0byBsYXVuY2ggJ35hJzogfmF+JSIpCisgICAgICAgICAgICAg ICAgICglZWRpdG9yKSAoc3RyZXJyb3IgZXJybm8pKSkpKSkpCiAKIAwKIChkZWZpbmUtY29tbWFu ZCAoZ3VpeC1lZGl0IC4gYXJncykKQEAgLTExMSw0ICsxMjIsNCBAQCAoZGVmaW5lLWNvbW1hbmQg KGd1aXgtZWRpdCAuIGFyZ3MpCiAgICAgICAod2hlbiAobnVsbD8gc3BlY3MpCiAgICAgICAgIChs ZWF2ZSAoR18gIm5vIHBhY2thZ2VzIHNwZWNpZmllZCwgbm90aGluZyB0byBlZGl0fiUiKSkpCiAK LSAgICAgIChzcGF3bi1lZGl0b3IgbG9jYXRpb25zKSkpKQorICAgICAgKHNwYXduLWVkaXRvciBs b2NhdGlvbnMgKHBhcnNlLWFyZ3VtZW50cykpKSkpCmRpZmYgLS1naXQgYS9tYW5pZmVzdC5zY20g Yi9tYW5pZmVzdC5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDBh YWFhZThlOQotLS0gL2Rldi9udWxsCisrKyBiL21hbmlmZXN0LnNjbQpAQCAtMCwwICsxIEBACiso c3BlY2lmaWNhdGlvbnMtPm1hbmlmZXN0ICcoImdpdCIgImdpdDpzZW5kLWVtYWlsIikpCgpiYXNl LWNvbW1pdDogMzdhOGY5MjM0MGY0NWJhZjA5NjYyOTg2NjM1NGJkMDg4NDc1NDU2YQotLSAKMi4z OS4yCgo= --=_6b438f15c99d51550f89e226b0382b66--