From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 13 03:38:47 2019 Received: (at submit) by debbugs.gnu.org; 13 Oct 2019 07:38:47 +0000 Received: from localhost ([127.0.0.1]:34865 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJYSk-0002xo-K8 for submit@debbugs.gnu.org; Sun, 13 Oct 2019 03:38:47 -0400 Received: from lists.gnu.org ([209.51.188.17]:44567) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJYSh-0002xe-SQ for submit@debbugs.gnu.org; Sun, 13 Oct 2019 03:38:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46839) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iJYSe-0006Nm-M1 for guix-patches@gnu.org; Sun, 13 Oct 2019 03:38:43 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iJYSb-0003Kj-Js for guix-patches@gnu.org; Sun, 13 Oct 2019 03:38:40 -0400 Received: from mail-qt1-x82a.google.com ([2607:f8b0:4864:20::82a]:41578) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iJYSb-0003K6-Bi for guix-patches@gnu.org; Sun, 13 Oct 2019 03:38:37 -0400 Received: by mail-qt1-x82a.google.com with SMTP id v52so20546427qtb.8 for ; Sun, 13 Oct 2019 00:38:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=Rptv8exakJRZJqdiSMEx+NkUOBRPIG1Pvq77jk53JVQ=; b=SBQTpvoKkQfK2zqHK3HXazJVC41r26m8QAPd0gkqXCLz2JaaO+08vrJMsLxYVAZu8E jq3+ItxzmCMCBuqkSISTLBi4cma8gomnIHbv8fSHtl5CZRb4I9m80jIt0Ej+FLruV/Y0 DR6axr8p0jzS3+F/X5HVwQl1mThlJukKIHQvD1bpIW49XFfZqgUF/KFAersgQeIdvmcY Uc9HUOcaRUvM3BjYpuV//Ze7CAV/vAQ7wccB9qquwa52Yzy/kV69fo73YB3mUojBMOVX 1dsjLoJzm8+LCIxPecjIHbwF+VidyQgE3T+5jtj+kT0ijwl7L/PleTdafL9i6jIKjMgB X8sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Rptv8exakJRZJqdiSMEx+NkUOBRPIG1Pvq77jk53JVQ=; b=ahDP+0+OMRCWkioxY+h4XpiwnM5csAvQ6Eu0dCvfgU+HCQSe7d+CUpzjbP1uIPJlHO LG/D5+yAbHcw6qWJp9TC1znTwgZN2GUzSZMk5PPrA3JoHSKH7UNGGTiw5vad4cC/iIaK XR96jdy8EFb4CBV7md/z0WLct+//bUvOHlCKIdLsvf/SkDcpEHKXJ4IhgECk7g811PZN kyf1vukBZcUZkjp3vHJuP3ymoDG0XVVbN9aO4/GTPdf7uk69J4ZSJ3Tf7wMbBpHG/hut WA55ehNkBObJnr/x7xwIoswl1vUfRyvSWmnuAAQ29/W1dD8Ev6SxNOrknq0//0HliTFV TGkA== X-Gm-Message-State: APjAAAWIXhUn0g94Rfa1SoURCSRqe7OvELXhOR/Z+o+qgMg1qec+FUT6 RyCd4KQiOq7NA12k+g/1hOSpJUbhgEnU3HC7QAfIy0Yp X-Google-Smtp-Source: APXvYqyiTQlv2o9A40+aaCiBqrT0BkeSR4hP0DsTBy4vKMoxxPwZV5xozV1U33gQtm1mVsyJVblzYA2IU/KnGlFT+HU= X-Received: by 2002:ad4:43e9:: with SMTP id f9mr25739123qvu.66.1570952315528; Sun, 13 Oct 2019 00:38:35 -0700 (PDT) MIME-Version: 1.0 From: Brian Leung Date: Sun, 13 Oct 2019 00:37:59 -0700 Message-ID: Subject: [PATCH] Topologically sort recursively-imported packages To: guix-patches@gnu.org Content-Type: multipart/mixed; boundary="000000000000bb43020594c5d6c1" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::82a X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) --000000000000bb43020594c5d6c1 Content-Type: multipart/alternative; boundary="000000000000bb42ff0594c5d6bf" --000000000000bb42ff0594c5d6bf Content-Type: text/plain; charset="UTF-8" Hi Guix, Attached is a patch modifying the recursive importer in utils.scm. Thanks, Brian --000000000000bb42ff0594c5d6bf Content-Type: text/html; charset="UTF-8"
Hi Guix,

Attached is a patch modifying the recursive importer in utils.scm.

Thanks,
Brian
--000000000000bb42ff0594c5d6bf-- --000000000000bb43020594c5d6c1 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-guix-utils-Topologically-sort-recursively-imported-r.patch" Content-Disposition: attachment; filename="0001-guix-utils-Topologically-sort-recursively-imported-r.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1ooaohc0 RnJvbSA2ZmVjNmE3MmE3OTM4NzUzMzA3Y2NmM2I3YmRhZDhiZmY3MmU0N2Y5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCcmlhbiBMZXVuZyA8bGV1bmdia0BtYWlsZmVuY2UuY29tPgpE YXRlOiBGcmksIDExIE9jdCAyMDE5IDIzOjE4OjAzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZ3Vp eDogdXRpbHM6IFRvcG9sb2dpY2FsbHkgc29ydCByZWN1cnNpdmVseS1pbXBvcnRlZCByZWNpcGVz LgoKVGhpcyBvdXRwdXQgb3JkZXIsIHdoZW4gaXQgaXMgd2VsbC1kZWZpbmVkLCBmYWNpbGl0YXRl cyB0aGUgcHJvY2VzcyBvZgpkZWNpZGluZyB3aGF0IHRvIHVwc3RyZWFtIG5leHQgZm9yIGEgcGFj a2FnZSB3aXRoIGEgbGFyZ2UgZGVwZW5kZW5jeSBjbG9zdXJlLgoKKiBndWl4L2ltcG9ydC91dGls cy5zY20gKHJlY3Vyc2l2ZS1pbXBvcnQpOiBFbmZvcmNlIHRvcG9sb2dpY2FsIHNvcnQuCiAgUmVt b3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4gUmV2ZXJzZSBvdXRwdXQgaGVyZSBpbnN0ZWFkIG9m IGluIGluZGl2aWR1YWwKICBpbXBvcnRlcnMuCiogZ3VpeC9zY3JpcHRzL2ltcG9ydC9jcmFuLnNj bSAoZ3VpeC1pbXBvcnQtY3Jhbik6IFVuc3RyZWFtaWZ5IGFuZCBkb24ndAogIHJldmVyc2UgaGVy ZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBndWl4L3NjcmlwdHMvaW1wb3J0L2Ny YXRlLnNjbSAoZ3VpeC1pbXBvcnQtY3JhdGUpOiBVbnN0cmVhbWlmeSBhbmQgZG9uJ3QKICByZXZl cnNlIGhlcmUuIFJlbW92ZSBkZXBlbmRlbmN5IG9uIHNyZmktNDEuCiogZ3VpeC9zY3JpcHRzL2lt cG9ydC9lbHBhLnNjbSAoZ3VpeC1pbXBvcnQtZWxwYSkgVW5zdHJlYW1pZnkgYW5kIGRvbid0CiAg cmV2ZXJzZSBoZXJlLiBSZW1vdmUgZGVwZW5kZW5jeSBvbiBzcmZpLTQxLgoqIGd1aXgvc2NyaXB0 cy9pbXBvcnQvZ2VtLnNjbSAoZ3VpeC1pbXBvcnQtZ2VtKSBVbnN0cmVhbWlmeSBhbmQgZG9uJ3Qg cmV2ZXJzZQogIGhlcmUuIFJlbW92ZSBkZXBlbmRlbmN5IG9uIHNyZmktNDEuCiogZ3VpeC9zY3Jp cHRzL2ltcG9ydC9oYWNrYWdlLnNjbSAoZ3VpeC1pbXBvcnQtaGFja2FnZSkgVW5zdHJlYW1pZnkg YW5kIGRvbid0CiAgcmV2ZXJzZSBoZXJlLiBSZW1vdmUgZGVwZW5kZW5jeSBvbiBzcmZpLTQxLgoq IGd1aXgvc2NyaXB0cy9pbXBvcnQvb3BhbS5zY20gKGd1aXgtaW1wb3J0LW9wYW0pIFVuc3RyZWFt aWZ5IGFuZCBkb24ndAogIHJldmVyc2UgaGVyZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00 MS4KKiBndWl4L3NjcmlwdHMvaW1wb3J0L3B5cGkuc2NtIChndWl4LWltcG9ydC1weXBpKSBVbnN0 cmVhbWlmeSBhbmQgZG9uJ3QKICByZXZlcnNlIGhlcmUuIFJlbW92ZSBkZXBlbmRlbmN5IG9uIHNy ZmktNDEuCiogZ3VpeC9zY3JpcHRzL2ltcG9ydC9zdGFja2FnZS5zY20gKGd1aXgtaW1wb3J0LXN0 YWNrYWdlKSBVbnN0cmVhbWlmeSBhbmQKICBkb24ndCByZXZlcnNlIGhlcmUuIFJlbW92ZSBkZXBl bmRlbmN5IG9uIHNyZmktNDEuCiogdGVzdHMvY3JhdGUuc2NtIChjYXJnby1yZWN1cnNpdmUtaW1w b3J0KTogQWRkIHRlc3QuCiogdGVzdHMvZ2VtLnNjbSAoZ2VtLXJlY3Vyc2l2ZS1pbXBvcnQpOiBV cGRhdGUgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHRoZQogIHJldmVyc2luZyBvZiB0aGUgbGlz dCBub3cgdGFrZXMgcGxhY2UgaW4gdGhlIHJlY3Vyc2l2ZSBpbXBvcnRlci4gUmVtb3ZlCiAgZGVw ZW5kZW5jeSBvbiBzcmZpLTQxLgotLS0KIGd1aXgvaW1wb3J0L3V0aWxzLnNjbSAgICAgICAgICAg IHwgIDY3ICsrKystLS0KIGd1aXgvc2NyaXB0cy9pbXBvcnQvY3Jhbi5zY20gICAgIHwgICA3ICst CiBndWl4L3NjcmlwdHMvaW1wb3J0L2NyYXRlLnNjbSAgICB8ICAgNSArLQogZ3VpeC9zY3JpcHRz L2ltcG9ydC9lbHBhLnNjbSAgICAgfCAgIDcgKy0KIGd1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNj bSAgICAgIHwgICA1ICstCiBndWl4L3NjcmlwdHMvaW1wb3J0L2hhY2thZ2Uuc2NtICB8ICAgNSAr LQogZ3VpeC9zY3JpcHRzL2ltcG9ydC9vcGFtLnNjbSAgICAgfCAgIDUgKy0KIGd1aXgvc2NyaXB0 cy9pbXBvcnQvcHlwaS5zY20gICAgIHwgICA1ICstCiBndWl4L3NjcmlwdHMvaW1wb3J0L3N0YWNr YWdlLnNjbSB8ICAgNSArLQogZ3VpeC9zY3JpcHRzL2ltcG9ydC90ZXhsaXZlLnNjbSAgfCAgIDEg LQogdGVzdHMvY3JhdGUuc2NtICAgICAgICAgICAgICAgICAgfCAzMzQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQogdGVzdHMvZ2VtLnNjbSAgICAgICAgICAgICAgICAgICAgfCAgNDEg KystLQogMTIgZmlsZXMgY2hhbmdlZCwgMzk0IGluc2VydGlvbnMoKyksIDkzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2d1aXgvaW1wb3J0L3V0aWxzLnNjbSBiL2d1aXgvaW1wb3J0L3V0aWxz LnNjbQppbmRleCA0Njk0YjZlN2VmLi5lYWVjMzU3ZTc4IDEwMDY0NAotLS0gYS9ndWl4L2ltcG9y dC91dGlscy5zY20KKysrIGIvZ3VpeC9pbXBvcnQvdXRpbHMuc2NtCkBAIC00Miw3ICs0Miw2IEBA CiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp LTExKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0yNikKLSAgIzp1c2UtbW9kdWxlIChzcmZp IHNyZmktNDEpCiAgICM6ZXhwb3J0IChmYWN0b3JpemUtdXJpCiAKICAgICAgICAgICAgIGZsYXR0 ZW4KQEAgLTM4MCwzNyArMzc5LDM5IEBAIHNlcGFyYXRlZCBieSBQUkVELiIKIChkZWZpbmUqIChy ZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSByZXBvCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOmtleSByZXBvLT5ndWl4LXBhY2thZ2UgZ3VpeC1uYW1lCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjOmFsbG93LW90aGVyLWtleXMpCi0gICJHZW5lcmF0ZSBhIHN0cmVhbSBvZiBw YWNrYWdlIGV4cHJlc3Npb25zIGZvciBQQUNLQUdFLU5BTUUgYW5kIGFsbCBpdHMKLWRlcGVuZGVu Y2llcy4iCisgICJHZW5lcmF0ZSBhIGxpc3Qgb2YgcGFja2FnZSBleHByZXNzaW9ucyBmb3IgUEFD S0FHRS1OQU1FIGFuZCBhbGwgaXRzCitkZXBlbmRlbmNpZXMuICBUaGUgbGlzdCB3aWxsIGJlIGlu IGEgdG9wb2xvZ2ljYWwgb3JkZXJpbmcsIGlmIG9uZSBleGlzdHMuIgogICAoZGVmaW5lIChleGlz dHM/IGRlcGVuZGVuY3kpCiAgICAgKG5vdCAobnVsbD8gKGZpbmQtcGFja2FnZXMtYnktbmFtZSAo Z3VpeC1uYW1lIGRlcGVuZGVuY3kpKSkpKQotICAoZGVmaW5lIGluaXRpYWwtc3RhdGUgKGxpc3Qg I2YgKGxpc3QgcGFja2FnZS1uYW1lKSAobGlzdCkpKQotICAoZGVmaW5lIChzdGVwIHN0YXRlKQot ICAgIChtYXRjaCBzdGF0ZQotICAgICAgKChwcmV2IChuZXh0IC4gcmVzdCkgZG9uZSkKLSAgICAg ICAoZGVmaW5lIChoYW5kbGU/IGRlcCkKLSAgICAgICAgIChhbmQKLSAgICAgICAgICAgKG5vdCAo ZXF1YWw/IGRlcCBuZXh0KSkKLSAgICAgICAgICAgKG5vdCAobWVtYmVyIGRlcCBkb25lKSkKLSAg ICAgICAgICAgKG5vdCAoZXhpc3RzPyBkZXApKSkpCi0gICAgICAgKHJlY2VpdmUgKHBhY2thZ2Ug LiBkZXBlbmRlbmNpZXMpIChyZXBvLT5ndWl4LXBhY2thZ2UgbmV4dCByZXBvKQotICAgICAgICAg KGxpc3QKLSAgICAgICAgICAgKGlmIHBhY2thZ2UgcGFja2FnZSAnKCkpIDs7IGRlZmF1bHQgI2Yg b24gZmFpbHVyZSB3b3VsZCBpbnRlcnJ1cHQKLSAgICAgICAgICAgKGlmIHBhY2thZ2UKLSAgICAg ICAgICAgICAobHNldC11bmlvbiBlcXVhbD8gcmVzdCAoZmlsdGVyIGhhbmRsZT8gKGNhciBkZXBl bmRlbmNpZXMpKSkKLSAgICAgICAgICAgICByZXN0KQotICAgICAgICAgICAoY29ucyBuZXh0IGRv bmUpKSkpCi0gICAgICAoKHByZXYgJygpIGRvbmUpCi0gICAgICAgKGxpc3QgI2YgJygpIGRvbmUp KSkpCi0KLSAgOzsgR2VuZXJhdGUgYSBsYXp5IHN0cmVhbSBvZiBwYWNrYWdlIGV4cHJlc3Npb25z IGZvciBhbGwgdW5rbm93bgotICA7OyBkZXBlbmRlbmNpZXMgaW4gdGhlIGdyYXBoLgotICAoc3Ry ZWFtLXVuZm9sZAotICAgIDs7IG1hcDogcHJvZHVjZSBhIHN0cmVhbSBlbGVtZW50Ci0gICAgKG1h dGNoLWxhbWJkYSAoKGxhdGVzdCBxdWV1ZSBkb25lKSBsYXRlc3QpKQotICAgIDs7IHByZWRpY2F0 ZQotICAgIChtYXRjaC1sYW1iZGEgKChsYXRlc3QgcXVldWUgZG9uZSkgbGF0ZXN0KSkKLSAgICA7 OyBnZW5lcmF0b3I6IHVwZGF0ZSB0aGUgcXVldWUKLSAgICBzdGVwCi0gICAgOzsgaW5pdGlhbCBz dGF0ZQotICAgIChzdGVwIGluaXRpYWwtc3RhdGUpKSkKKworICAoZGVmaW5lIGdyYXBoIChtYWtl LWhhc2gtdGFibGUpKQorICAoZGVmaW5lIHJlY2lwZS1tYXAgKG1ha2UtaGFzaC10YWJsZSkpCisg IChkZWZpbmUgc3RhY2sgKGxpc3QgcGFja2FnZS1uYW1lKSkKKyAgKGRlZmluZSBhY2N1bSAnKCkp CisKKyAgKHdoaWxlIChub3QgKG51bGw/IHN0YWNrKSkKKyAgICAobGV0ICgocGFja2FnZS1uYW1l IChjYXIgc3RhY2spKSkKKyAgICAgIChtYXRjaCAoaGFzaC1yZWYgZ3JhcGggcGFja2FnZS1uYW1l KQorICAgICAgICAoJygpCisgICAgICAgICAoc2V0ISBzdGFjayAoY2RyIHN0YWNrKSkKKyAgICAg ICAgIChzZXQhIGFjY3VtIChjb25zIChoYXNoLXJlZiByZWNpcGUtbWFwIHBhY2thZ2UtbmFtZSkg YWNjdW0pKSkKKyAgICAgICAgKChkZXAgLiByZXN0KQorICAgICAgICAgKGRlZmluZSAoaGFuZGxl PyBkZXApCisgICAgICAgICAgIChhbmQKKyAgICAgICAgICAgIChub3QgKGVxdWFsPyBkZXAgcGFj a2FnZS1uYW1lKSkKKyAgICAgICAgICAgIChub3QgKGhhc2gtcmVmIHJlY2lwZS1tYXAgZGVwKSkK KyAgICAgICAgICAgIChub3QgKGV4aXN0cz8gZGVwKSkpKQorICAgICAgICAgKGhhc2gtc2V0ISBn cmFwaCBwYWNrYWdlLW5hbWUgcmVzdCkKKyAgICAgICAgICh3aGVuIChoYW5kbGU/IGRlcCkKKyAg ICAgICAgICAgKHNldCEgc3RhY2sgKGNvbnMgZGVwIHN0YWNrKSkpKQorICAgICAgICAoI2YKKyAg ICAgICAgIChyZWNlaXZlIChwYWNrYWdlLXJlY2lwZSAuIGRlcGVuZGVuY2llcykKKyAgICAgICAg ICAgICAocmVwby0+Z3VpeC1wYWNrYWdlIHBhY2thZ2UtbmFtZSByZXBvKQorICAgICAgICAgICAo aGFzaC1zZXQhIGdyYXBoIHBhY2thZ2UtbmFtZQorICAgICAgICAgICAgICAgICAgICAgIChvciAo YW5kIChub3QgKG51bGw/IGRlcGVuZGVuY2llcykpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhciBkZXBlbmRlbmNpZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkp KQorICAgICAgICAgICAoaGFzaC1zZXQhIHJlY2lwZS1tYXAgcGFja2FnZS1uYW1lCisgICAgICAg ICAgICAgICAgICAgICAgKG9yIHBhY2thZ2UtcmVjaXBlICcoKSkpKSkpKSkKKworICAocmV2ZXJz ZSBhY2N1bSkpCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvaW1wb3J0L2NyYW4uc2NtIGIvZ3Vp eC9zY3JpcHRzL2ltcG9ydC9jcmFuLnNjbQppbmRleCBiNjU5MmY3OGE5Li5kNmYzNzFlZjNhIDEw MDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0L2NyYW4uc2NtCisrKyBiL2d1aXgvc2NyaXB0 cy9pbXBvcnQvY3Jhbi5zY20KQEAgLTI3LDcgKzI3LDYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZp IHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVsZSAo c3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2UtbW9k dWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6ZXhw b3J0IChndWl4LWltcG9ydC1jcmFuKSkKQEAgLTk4LDEwICs5Nyw4IEBAIEltcG9ydCBhbmQgY29u dmVydCB0aGUgQ1JBTiBwYWNrYWdlIGZvciBQQUNLQUdFLU5BTUUuXG4iKSkKICAgICAgICAoaWYg KGFzc29jLXJlZiBvcHRzICdyZWN1cnNpdmUpCiAgICAgICAgICAgIDs7IFJlY3Vyc2l2ZSBpbXBv cnQKICAgICAgICAgICAgKG1hcCBwYWNrYWdlLT5kZWZpbml0aW9uCi0gICAgICAgICAgICAgICAg KHJldmVyc2UKLSAgICAgICAgICAgICAgICAgKHN0cmVhbS0+bGlzdAotICAgICAgICAgICAgICAg ICAgKGNyYW4tcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdlLW5hbWUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChhc3NvYy1yZWYgb3B0cyAncmVwbykgJ2NyYW4p KSkpKQorICAgICAgICAgICAgICAgIChjcmFuLXJlY3Vyc2l2ZS1pbXBvcnQgcGFja2FnZS1uYW1l CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGFzc29jLXJlZiBv cHRzICdyZXBvKSAnY3JhbikpKQogICAgICAgICAgICA7OyBTaW5nbGUgaW1wb3J0CiAgICAgICAg ICAgIChsZXQgKChzZXhwIChjcmFuLT5ndWl4LXBhY2thZ2UgcGFja2FnZS1uYW1lCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChhc3NvYy1yZWYgb3B0cyAn cmVwbykgJ2NyYW4pKSkpCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvaW1wb3J0L2NyYXRlLnNj bSBiL2d1aXgvc2NyaXB0cy9pbXBvcnQvY3JhdGUuc2NtCmluZGV4IDQ2OTBjY2ViNGQuLjkyMDM0 ZGFiM2MgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvY3JhdGUuc2NtCisrKyBiL2d1 aXgvc2NyaXB0cy9pbXBvcnQvY3JhdGUuc2NtCkBAIC0yOCw3ICsyOCw2IEBACiAgICM6dXNlLW1v ZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTExKQogICAjOnVz ZS1tb2R1bGUgKHNyZmkgc3JmaS0zNykKLSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktNDEpCiAg ICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgZm9ybWF0 KQogICAjOmV4cG9ydCAoZ3VpeC1pbXBvcnQtY3JhdGUpKQpAQCAtMTAxLDkgKzEwMCw3IEBAIElt cG9ydCBhbmQgY29udmVydCB0aGUgY3JhdGUuaW8gcGFja2FnZSBmb3IgUEFDS0FHRS1OQU1FLlxu IikpCiAgICAgICAgICAgICAgICAgICAgYChkZWZpbmUtcHVibGljICwoc3RyaW5nLT5zeW1ib2wg bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAscGtnKSkKICAgICAgICAgICAgICAgICAgIChf ICNmKSkKLSAgICAgICAgICAgICAgICAocmV2ZXJzZQotICAgICAgICAgICAgICAgICAoc3RyZWFt LT5saXN0Ci0gICAgICAgICAgICAgICAgICAoY3JhdGUtcmVjdXJzaXZlLWltcG9ydCBuYW1lKSkp KQorICAgICAgICAgICAgICAgIChjcmF0ZS1yZWN1cnNpdmUtaW1wb3J0IG5hbWUpKQogICAgICAg ICAgICAobGV0ICgoc2V4cCAoY3JhdGUtPmd1aXgtcGFja2FnZSBuYW1lIHZlcnNpb24pKSkKICAg ICAgICAgICAgICAodW5sZXNzIHNleHAKICAgICAgICAgICAgICAgIChsZWF2ZSAoR18gImZhaWxl ZCB0byBkb3dubG9hZCBtZXRhLWRhdGEgZm9yIHBhY2thZ2UgJ35hJ34lIikKZGlmZiAtLWdpdCBh L2d1aXgvc2NyaXB0cy9pbXBvcnQvZWxwYS5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0L2VscGEu c2NtCmluZGV4IGYxZWQ1MDE2YmEuLmQyNzBkMmI0YmMgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0 cy9pbXBvcnQvZWxwYS5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9lbHBhLnNjbQpAQCAt MjcsNyArMjcsNiBAQAogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQogICAjOnVzZS1tb2R1 bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMzcpCi0gICM6dXNl LW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQogICAj OnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAgIzpleHBvcnQgKGd1aXgtaW1wb3J0LWVscGEp KQpAQCAtMTAxLDEwICsxMDAsOCBAQCBJbXBvcnQgdGhlIGxhdGVzdCBwYWNrYWdlIG5hbWVkIFBB Q0tBR0UtTkFNRSBmcm9tIGFuIEVMUEEgcmVwb3NpdG9yeS5cbiIpKQogICAgICAgICAgICAgICAg ICAgIGAoZGVmaW5lLXB1YmxpYyAsKHN0cmluZy0+c3ltYm9sIG5hbWUpCiAgICAgICAgICAgICAg ICAgICAgICAgLHBrZykpCiAgICAgICAgICAgICAgICAgICAoXyAjZikpCi0gICAgICAgICAgICAg ICAgKHJldmVyc2UKLSAgICAgICAgICAgICAgICAgKHN0cmVhbS0+bGlzdAotICAgICAgICAgICAg ICAgICAgKGVscGEtcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdlLW5hbWUKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChhc3NvYy1yZWYgb3B0cyAncmVwbykgJ2du dSkpKSkpCisgICAgICAgICAgICAgICAgKGVscGEtcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdlLW5h bWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoYXNzb2MtcmVm IG9wdHMgJ3JlcG8pICdnbnUpKSkKICAgICAgICAgICAgKGxldCAoKHNleHAgKGVscGEtPmd1aXgt cGFja2FnZSBwYWNrYWdlLW5hbWUgKGFzc29jLXJlZiBvcHRzICdyZXBvKSkpKQogICAgICAgICAg ICAgICh1bmxlc3Mgc2V4cAogICAgICAgICAgICAgICAgKGxlYXZlIChHXyAiZmFpbGVkIHRvIGRv d25sb2FkIHBhY2thZ2UgJ35hJ34lIikgcGFja2FnZS1uYW1lKSkKZGlmZiAtLWdpdCBhL2d1aXgv c2NyaXB0cy9pbXBvcnQvZ2VtLnNjbSBiL2d1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNjbQppbmRl eCBiNmQ5Y2NhYWU0Li5jNjQ1OTZiNTE0IDEwMDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0 L2dlbS5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9nZW0uc2NtCkBAIC0yNiw3ICsyNiw2 IEBACiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTExKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0zNykKLSAgIzp1c2UtbW9kdWxlIChz cmZpIHNyZmktNDEpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCiAgICM6dXNlLW1vZHVs ZSAoaWNlLTkgZm9ybWF0KQogICAjOmV4cG9ydCAoZ3VpeC1pbXBvcnQtZ2VtKSkKQEAgLTk1LDkg Kzk0LDcgQEAgSW1wb3J0IGFuZCBjb252ZXJ0IHRoZSBSdWJ5R2VtcyBwYWNrYWdlIGZvciBQQUNL QUdFLU5BTUUuXG4iKSkKICAgICAgICAgICAgICAgICAgICBgKGRlZmluZS1wdWJsaWMgLChzdHJp bmctPnN5bWJvbCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICxwa2cpKQogICAgICAgICAg ICAgICAgICAgKF8gI2YpKQotICAgICAgICAgICAgICAgIChyZXZlcnNlCi0gICAgICAgICAgICAg ICAgIChzdHJlYW0tPmxpc3QKLSAgICAgICAgICAgICAgICAgIChnZW0tcmVjdXJzaXZlLWltcG9y dCBwYWNrYWdlLW5hbWUgJ3J1YnlnZW1zKSkpKQorICAgICAgICAgICAgICAgIChnZW0tcmVjdXJz aXZlLWltcG9ydCBwYWNrYWdlLW5hbWUgJ3J1YnlnZW1zKSkKICAgICAgICAgICAgKGxldCAoKHNl eHAgKGdlbS0+Z3VpeC1wYWNrYWdlIHBhY2thZ2UtbmFtZSkpKQogICAgICAgICAgICAgICh1bmxl c3Mgc2V4cAogICAgICAgICAgICAgICAgKGxlYXZlIChHXyAiZmFpbGVkIHRvIGRvd25sb2FkIG1l dGEtZGF0YSBmb3IgcGFja2FnZSAnfmEnfiUiKQpkaWZmIC0tZ2l0IGEvZ3VpeC9zY3JpcHRzL2lt cG9ydC9oYWNrYWdlLnNjbSBiL2d1aXgvc2NyaXB0cy9pbXBvcnQvaGFja2FnZS5zY20KaW5kZXgg ZjRhYWM2MTA3OC4uNzEwZTc4NmE3OSAxMDA2NDQKLS0tIGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9o YWNrYWdlLnNjbQorKysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0L2hhY2thZ2Uuc2NtCkBAIC0yNyw3 ICsyNyw2IEBACiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAo c3JmaSBzcmZpLTExKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0zNykKLSAgIzp1c2UtbW9k dWxlIChzcmZpIHNyZmktNDEpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCiAgICM6dXNl LW1vZHVsZSAoaWNlLTkgZm9ybWF0KQogICAjOmV4cG9ydCAoZ3VpeC1pbXBvcnQtaGFja2FnZSkp CkBAIC0xMzAsOSArMTI5LDcgQEAgdmVyc2lvbi5cbiIpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBgKGRlZmluZS1wdWJsaWMgLChzdHJpbmctPnN5bWJvbCBuYW1lKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAscGtnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoXyAjZikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXZlcnNlCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFwcGx5IGhhY2thZ2UtcmVjdXJzaXZlLWltcG9ydCBhcmd1bWVudHMpKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChhcHBseSBoYWNrYWdlLXJlY3Vyc2l2ZS1pbXBvcnQgYXJndW1l bnRzKSkKICAgICAgICAgICAgICAgICAgICAgIDs7IFNpbmdsZSBpbXBvcnQKICAgICAgICAgICAg ICAgICAgICAgIChhcHBseSBoYWNrYWdlLT5ndWl4LXBhY2thZ2UgYXJndW1lbnRzKSkpKQogICAg ICAgKHVubGVzcyBzZXhwIChlcnJvci1mbikpCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvaW1w b3J0L29wYW0uc2NtIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9vcGFtLnNjbQppbmRleCAyZDI0OWEy MTNmLi4yMGRhMTQzN2ZlIDEwMDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0L29wYW0uc2Nt CisrKyBiL2d1aXgvc2NyaXB0cy9pbXBvcnQvb3BhbS5zY20KQEAgLTI1LDcgKzI1LDYgQEAKICAg Izp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEp CiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3Jm aS00MSkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2Ut OSBmb3JtYXQpCiAgICM6ZXhwb3J0IChndWl4LWltcG9ydC1vcGFtKSkKQEAgLTk0LDkgKzkzLDcg QEAgSW1wb3J0IGFuZCBjb252ZXJ0IHRoZSBvcGFtIHBhY2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5c biIpKQogICAgICAgICAgICAgICAgICAgIGAoZGVmaW5lLXB1YmxpYyAsKHN0cmluZy0+c3ltYm9s IG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgLHBrZykpCiAgICAgICAgICAgICAgICAgICAo XyAjZikpCi0gICAgICAgICAgICAgICAgKHJldmVyc2UKLSAgICAgICAgICAgICAgICAgKHN0cmVh bS0+bGlzdAotICAgICAgICAgICAgICAgICAgKG9wYW0tcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdl LW5hbWUpKSkpCisgICAgICAgICAgICAgICAgKG9wYW0tcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdl LW5hbWUpKQogICAgICAgICAgICA7OyBTaW5nbGUgaW1wb3J0CiAgICAgICAgICAgIChsZXQgKChz ZXhwIChvcGFtLT5ndWl4LXBhY2thZ2UgcGFja2FnZS1uYW1lKSkpCiAgICAgICAgICAgICAgKHVu bGVzcyBzZXhwCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvaW1wb3J0L3B5cGkuc2NtIGIvZ3Vp eC9zY3JpcHRzL2ltcG9ydC9weXBpLnNjbQppbmRleCA3YmQ4MzgxOGJhLi4zMzE2NzE3NGUyIDEw MDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0L3B5cGkuc2NtCisrKyBiL2d1aXgvc2NyaXB0 cy9pbXBvcnQvcHlwaS5zY20KQEAgLTI2LDcgKzI2LDYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZp IHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVsZSAo c3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2UtbW9k dWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6ZXhw b3J0IChndWl4LWltcG9ydC1weXBpKSkKQEAgLTk1LDkgKzk0LDcgQEAgSW1wb3J0IGFuZCBjb252 ZXJ0IHRoZSBQeVBJIHBhY2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5cbiIpKQogICAgICAgICAgICAg ICAgICAgIGAoZGVmaW5lLXB1YmxpYyAsKHN0cmluZy0+c3ltYm9sIG5hbWUpCiAgICAgICAgICAg ICAgICAgICAgICAgLHBrZykpCiAgICAgICAgICAgICAgICAgICAoXyAjZikpCi0gICAgICAgICAg ICAgICAgKHJldmVyc2UKLSAgICAgICAgICAgICAgICAgKHN0cmVhbS0+bGlzdAotICAgICAgICAg ICAgICAgICAgKHB5cGktcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdlLW5hbWUpKSkpCisgICAgICAg ICAgICAgICAgKHB5cGktcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdlLW5hbWUpKQogICAgICAgICAg ICA7OyBTaW5nbGUgaW1wb3J0CiAgICAgICAgICAgIChsZXQgKChzZXhwIChweXBpLT5ndWl4LXBh Y2thZ2UgcGFja2FnZS1uYW1lKSkpCiAgICAgICAgICAgICAgKHVubGVzcyBzZXhwCmRpZmYgLS1n aXQgYS9ndWl4L3NjcmlwdHMvaW1wb3J0L3N0YWNrYWdlLnNjbSBiL2d1aXgvc2NyaXB0cy9pbXBv cnQvc3RhY2thZ2Uuc2NtCmluZGV4IGI0YjEyNTgxYmYuLmQ3NzMyOGRjYmYgMTAwNjQ0Ci0tLSBh L2d1aXgvc2NyaXB0cy9pbXBvcnQvc3RhY2thZ2Uuc2NtCisrKyBiL2d1aXgvc2NyaXB0cy9pbXBv cnQvc3RhY2thZ2Uuc2NtCkBAIC0yNyw3ICsyNyw2IEBACiAgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTExKQogICAjOnVzZS1tb2R1bGUgKHNy Zmkgc3JmaS0zNykKLSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktNDEpCiAgICM6dXNlLW1vZHVs ZSAoaWNlLTkgbWF0Y2gpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgZm9ybWF0KQogICAjOmV4cG9y dCAoZ3VpeC1pbXBvcnQtc3RhY2thZ2UpKQpAQCAtMTEwLDkgKzEwOSw3IEBAIEltcG9ydCBhbmQg Y29udmVydCB0aGUgTFRTIFN0YWNrYWdlIHBhY2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5cbiIpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKGRlZmluZS1wdWJsaWMgLChzdHJpbmctPnN5 bWJvbCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscGtnKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoXyAjZikpCi0gICAgICAgICAgICAgICAgICAgICAgICAg IChyZXZlcnNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5IHN0YWNrYWdlLXJlY3Vyc2l2ZS1pbXBvcnQg YXJndW1lbnRzKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgc3RhY2thZ2Ut cmVjdXJzaXZlLWltcG9ydCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgOzsgU2lu Z2xlIGltcG9ydAogICAgICAgICAgICAgICAgICAgICAgKGFwcGx5IHN0YWNrYWdlLT5ndWl4LXBh Y2thZ2UgYXJndW1lbnRzKSkpKQogICAgICAgKHVubGVzcyBzZXhwIChlcnJvci1mbikpCmRpZmYg LS1naXQgYS9ndWl4L3NjcmlwdHMvaW1wb3J0L3RleGxpdmUuc2NtIGIvZ3VpeC9zY3JpcHRzL2lt cG9ydC90ZXhsaXZlLnNjbQppbmRleCAxY2NlZWU3MDUxLi5lMzFjNTZkMGNlIDEwMDY0NAotLS0g YS9ndWl4L3NjcmlwdHMvaW1wb3J0L3RleGxpdmUuc2NtCisrKyBiL2d1aXgvc2NyaXB0cy9pbXBv cnQvdGV4bGl2ZS5zY20KQEAgLTI1LDcgKzI1LDYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNy ZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2UtbW9kdWxl IChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6ZXhwb3J0 IChndWl4LWltcG9ydC10ZXhsaXZlKSkKZGlmZiAtLWdpdCBhL3Rlc3RzL2NyYXRlLnNjbSBiL3Rl c3RzL2NyYXRlLnNjbQppbmRleCBjMTQ4NjJhZDlmLi5kNTVjODE0YmNmIDEwMDY0NAotLS0gYS90 ZXN0cy9jcmF0ZS5zY20KKysrIGIvdGVzdHMvY3JhdGUuc2NtCkBAIC0yOCw3ICsyOCw3IEBACiAg ICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTY0 KSkKIAotKGRlZmluZSB0ZXN0LWNyYXRlCisoZGVmaW5lIHRlc3QtZm9vLWNyYXRlCiAgICJ7CiAg IFwiY3JhdGVcIjogewogICAgIFwibWF4X3ZlcnNpb25cIjogXCIxLjAuMFwiLApAQCAtNTAsNyAr NTAsNyBAQAogICB9CiB9IikKIAotKGRlZmluZSB0ZXN0LWRlcGVuZGVuY2llcworKGRlZmluZSB0 ZXN0LWZvby1kZXBlbmRlbmNpZXMKICAgInsKICAgXCJkZXBlbmRlbmNpZXNcIjogWwogICAgICB7 CkBAIC02MCw2ICs2MCwxNzYgQEAKICAgXQogfSIpCiAKKyhkZWZpbmUgdGVzdC1yb290LWNyYXRl CisgICJ7CisgIFwiY3JhdGVcIjogeworICAgIFwibWF4X3ZlcnNpb25cIjogXCIxLjAuMFwiLAor ICAgIFwibmFtZVwiOiBcInJvb3RcIiwKKyAgICBcImRlc2NyaXB0aW9uXCI6IFwic3VtbWFyeVwi LAorICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcInJlcG9z aXRvcnlcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcImtleXdvcmRzXCI6IFtcImR1 bW15XCIgXCJ0ZXN0XCJdLAorICAgIFwiY2F0ZWdvcmllc1wiOiBbXCJ0ZXN0XCJdCisgICAgXCJh Y3R1YWxfdmVyc2lvbnNcIjogWworICAgICAgeyBcImlkXCI6IFwiZm9vXCIsCisgICAgICAgIFwi bnVtXCI6IFwiMS4wLjBcIiwKKyAgICAgICAgXCJsaWNlbnNlXCI6IFwiTUlUIE9SIEFwYWNoZS0y LjBcIiwKKyAgICAgICAgXCJsaW5rc1wiOiB7CisgICAgICAgICAgXCJkZXBlbmRlbmNpZXNcIjog XCIvYXBpL3YxL2NyYXRlcy9yb290LzEuMC4wL2RlcGVuZGVuY2llc1wiCisgICAgICAgIH0KKyAg ICAgIH0KKyAgICBdCisgIH0KK30iKQorCisoZGVmaW5lIHRlc3Qtcm9vdC1kZXBlbmRlbmNpZXMK KyAgInsKKyAgXCJkZXBlbmRlbmNpZXNcIjogWworICAgICB7CisgICAgICAgXCJjcmF0ZV9pZFwi OiBcImludGVybWVkaWF0ZS0xXCIsCisgICAgICAgXCJraW5kXCI6IFwibm9ybWFsXCIsCisgICAg IH0sCisgICAgIHsKKyAgICAgICBcImNyYXRlX2lkXCI6IFwiaW50ZXJtZWRpYXRlLTJcIiwKKyAg ICAgICBcImtpbmRcIjogXCJub3JtYWxcIiwKKyAgICAgfQorICAgICB7CisgICAgICAgXCJjcmF0 ZV9pZFwiOiBcImxlYWYtYWxpY2VcIiwKKyAgICAgICBcImtpbmRcIjogXCJub3JtYWxcIiwKKyAg ICAgfSwKKyAgICAgeworICAgICAgIFwiY3JhdGVfaWRcIjogXCJsZWFmLWJvYlwiLAorICAgICAg IFwia2luZFwiOiBcIm5vcm1hbFwiLAorICAgICB9LAorICBdCit9IikKKworKGRlZmluZSB0ZXN0 LWludGVybWVkaWF0ZS0xLWNyYXRlCisgICJ7CisgIFwiY3JhdGVcIjogeworICAgIFwibWF4X3Zl cnNpb25cIjogXCIxLjAuMFwiLAorICAgIFwibmFtZVwiOiBcImludGVybWVkaWF0ZS0xXCIsCisg ICAgXCJkZXNjcmlwdGlvblwiOiBcInN1bW1hcnlcIiwKKyAgICBcImhvbWVwYWdlXCI6IFwiaHR0 cDovL2V4YW1wbGUuY29tXCIsCisgICAgXCJyZXBvc2l0b3J5XCI6IFwiaHR0cDovL2V4YW1wbGUu Y29tXCIsCisgICAgXCJrZXl3b3Jkc1wiOiBbXCJkdW1teVwiIFwidGVzdFwiXSwKKyAgICBcImNh dGVnb3JpZXNcIjogW1widGVzdFwiXQorICAgIFwiYWN0dWFsX3ZlcnNpb25zXCI6IFsKKyAgICAg IHsgXCJpZFwiOiBcImludGVybWVkaWF0ZS0xXCIsCisgICAgICAgIFwibnVtXCI6IFwiMS4wLjBc IiwKKyAgICAgICAgXCJsaWNlbnNlXCI6IFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwKKyAgICAgICAg XCJsaW5rc1wiOiB7CisgICAgICAgICAgXCJkZXBlbmRlbmNpZXNcIjogXCIvYXBpL3YxL2NyYXRl cy9pbnRlcm1lZGlhdGUtMS8xLjAuMC9kZXBlbmRlbmNpZXNcIgorICAgICAgICB9CisgICAgICB9 CisgICAgXQorICB9Cit9IikKKworKGRlZmluZSB0ZXN0LWludGVybWVkaWF0ZS0xLWRlcGVuZGVu Y2llcworICAieworICBcImRlcGVuZGVuY2llc1wiOiBbCisgICAgIHsKKyAgICAgICBcImNyYXRl X2lkXCI6IFwiaW50ZXJtZWRpYXRlLTJcIiwKKyAgICAgICBcImtpbmRcIjogXCJub3JtYWxcIiwK KyAgICAgfSwKKyAgICAgeworICAgICAgIFwiY3JhdGVfaWRcIjogXCJsZWFmLWFsaWNlXCIsCisg ICAgICAgXCJraW5kXCI6IFwibm9ybWFsXCIsCisgICAgIH0sCisgICAgIHsKKyAgICAgICBcImNy YXRlX2lkXCI6IFwibGVhZi1ib2JcIiwKKyAgICAgICBcImtpbmRcIjogXCJub3JtYWxcIiwKKyAg ICAgfQorICBdCit9IikKKworKGRlZmluZSB0ZXN0LWludGVybWVkaWF0ZS0yLWNyYXRlCisgICJ7 CisgIFwiY3JhdGVcIjogeworICAgIFwibWF4X3ZlcnNpb25cIjogXCIxLjAuMFwiLAorICAgIFwi bmFtZVwiOiBcImludGVybWVkaWF0ZS0yXCIsCisgICAgXCJkZXNjcmlwdGlvblwiOiBcInN1bW1h cnlcIiwKKyAgICBcImhvbWVwYWdlXCI6IFwiaHR0cDovL2V4YW1wbGUuY29tXCIsCisgICAgXCJy ZXBvc2l0b3J5XCI6IFwiaHR0cDovL2V4YW1wbGUuY29tXCIsCisgICAgXCJrZXl3b3Jkc1wiOiBb XCJkdW1teVwiIFwidGVzdFwiXSwKKyAgICBcImNhdGVnb3JpZXNcIjogW1widGVzdFwiXQorICAg IFwiYWN0dWFsX3ZlcnNpb25zXCI6IFsKKyAgICAgIHsgXCJpZFwiOiBcImludGVybWVkaWF0ZS0y XCIsCisgICAgICAgIFwibnVtXCI6IFwiMS4wLjBcIiwKKyAgICAgICAgXCJsaWNlbnNlXCI6IFwi TUlUIE9SIEFwYWNoZS0yLjBcIiwKKyAgICAgICAgXCJsaW5rc1wiOiB7CisgICAgICAgICAgXCJk ZXBlbmRlbmNpZXNcIjogXCIvYXBpL3YxL2NyYXRlcy9pbnRlcm1lZGlhdGUtMi8xLjAuMC9kZXBl bmRlbmNpZXNcIgorICAgICAgICB9CisgICAgICB9CisgICAgXQorICB9Cit9IikKKworKGRlZmlu ZSB0ZXN0LWludGVybWVkaWF0ZS0yLWRlcGVuZGVuY2llcworICAieworICBcImRlcGVuZGVuY2ll c1wiOiBbCisgICAgIHsKKyAgICAgICBcImNyYXRlX2lkXCI6IFwibGVhZi1ib2JcIiwKKyAgICAg ICBcImtpbmRcIjogXCJub3JtYWxcIiwKKyAgICAgfSwKKyAgXQorfSIpCisKKyhkZWZpbmUgdGVz dC1sZWFmLWFsaWNlLWNyYXRlCisgICJ7CisgIFwiY3JhdGVcIjogeworICAgIFwibWF4X3ZlcnNp b25cIjogXCIxLjAuMFwiLAorICAgIFwibmFtZVwiOiBcImxlYWYtYWxpY2VcIiwKKyAgICBcImRl c2NyaXB0aW9uXCI6IFwic3VtbWFyeVwiLAorICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwOi8vZXhh bXBsZS5jb21cIiwKKyAgICBcInJlcG9zaXRvcnlcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwK KyAgICBcImtleXdvcmRzXCI6IFtcImR1bW15XCIgXCJ0ZXN0XCJdLAorICAgIFwiY2F0ZWdvcmll c1wiOiBbXCJ0ZXN0XCJdCisgICAgXCJhY3R1YWxfdmVyc2lvbnNcIjogWworICAgICAgeyBcImlk XCI6IFwibGVhZi1hbGljZVwiLAorICAgICAgICBcIm51bVwiOiBcIjEuMC4wXCIsCisgICAgICAg IFwibGljZW5zZVwiOiBcIk1JVCBPUiBBcGFjaGUtMi4wXCIsCisgICAgICAgIFwibGlua3NcIjog eworICAgICAgICAgIFwiZGVwZW5kZW5jaWVzXCI6IFwiL2FwaS92MS9jcmF0ZXMvbGVhZi1hbGlj ZS8xLjAuMC9kZXBlbmRlbmNpZXNcIgorICAgICAgICB9CisgICAgICB9CisgICAgXQorICB9Cit9 IikKKworKGRlZmluZSB0ZXN0LWxlYWYtYWxpY2UtZGVwZW5kZW5jaWVzCisgICJ7CisgIFwiZGVw ZW5kZW5jaWVzXCI6IFtdCit9IikKKworKGRlZmluZSB0ZXN0LWxlYWYtYm9iLWNyYXRlCisgICJ7 CisgIFwiY3JhdGVcIjogeworICAgIFwibWF4X3ZlcnNpb25cIjogXCIxLjAuMFwiLAorICAgIFwi bmFtZVwiOiBcImxlYWYtYm9iXCIsCisgICAgXCJkZXNjcmlwdGlvblwiOiBcInN1bW1hcnlcIiwK KyAgICBcImhvbWVwYWdlXCI6IFwiaHR0cDovL2V4YW1wbGUuY29tXCIsCisgICAgXCJyZXBvc2l0 b3J5XCI6IFwiaHR0cDovL2V4YW1wbGUuY29tXCIsCisgICAgXCJrZXl3b3Jkc1wiOiBbXCJkdW1t eVwiIFwidGVzdFwiXSwKKyAgICBcImNhdGVnb3JpZXNcIjogW1widGVzdFwiXQorICAgIFwiYWN0 dWFsX3ZlcnNpb25zXCI6IFsKKyAgICAgIHsgXCJpZFwiOiBcImxlYWYtYm9iXCIsCisgICAgICAg IFwibnVtXCI6IFwiMS4wLjBcIiwKKyAgICAgICAgXCJsaWNlbnNlXCI6IFwiTUlUIE9SIEFwYWNo ZS0yLjBcIiwKKyAgICAgICAgXCJsaW5rc1wiOiB7CisgICAgICAgICAgXCJkZXBlbmRlbmNpZXNc IjogXCIvYXBpL3YxL2NyYXRlcy9sZWFmLWJvYi8xLjAuMC9kZXBlbmRlbmNpZXNcIgorICAgICAg ICB9CisgICAgICB9CisgICAgXQorICB9Cit9IikKKworKGRlZmluZSB0ZXN0LWxlYWYtYm9iLWRl cGVuZGVuY2llcworICAieworICBcImRlcGVuZGVuY2llc1wiOiBbXQorfSIpCisKIChkZWZpbmUg dGVzdC1zb3VyY2UtaGFzaAogICAiIikKIApAQCAtNzksMTQgKzI0OSwxNCBAQAogICAgICAgICAg KGxhbWJkYSAodXJsIC4gcmVzdCkKICAgICAgICAgICAgKG1hdGNoIHVybAogICAgICAgICAgICAg ICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9mb28iCi0gICAgICAgICAgICAgIChv cGVuLWlucHV0LXN0cmluZyB0ZXN0LWNyYXRlKSkKKyAgICAgICAgICAgICAgKG9wZW4taW5wdXQt c3RyaW5nIHRlc3QtZm9vLWNyYXRlKSkKICAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlv L2FwaS92MS9jcmF0ZXMvZm9vLzEuMC4wL2Rvd25sb2FkIgogICAgICAgICAgICAgICAoc2V0ISB0 ZXN0LXNvdXJjZS1oYXNoCiAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItPm5peC1iYXNlMzIt c3RyaW5nCiAgICAgICAgICAgICAgICAgIChzaGEyNTYgKHN0cmluZy0+Ynl0ZXZlY3RvciAiZW1w dHkgZmlsZVxuIiAidXRmLTgiKSkpKQogICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcg ImVtcHR5IGZpbGVcbiIpKQogICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3Yx L2NyYXRlcy9mb28vMS4wLjAvZGVwZW5kZW5jaWVzIgotICAgICAgICAgICAgICAob3Blbi1pbnB1 dC1zdHJpbmcgdGVzdC1kZXBlbmRlbmNpZXMpKQorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1z dHJpbmcgdGVzdC1mb28tZGVwZW5kZW5jaWVzKSkKICAgICAgICAgICAgICAoXyAoZXJyb3IgIlVu ZXhwZWN0ZWQgVVJMOiAiIHVybCkpKSkpCiAgICAgKG1hdGNoIChjcmF0ZS0+Z3VpeC1wYWNrYWdl ICJmb28iKQogICAgICAgKCgncGFja2FnZQpAQCAtMTExLDQgKzI4MSwxNjAgQEAKICAgICAgICh4 CiAgICAgICAgKHBrICdmYWlsIHggI2YpKSkpKQogCisodGVzdC1hc3NlcnQgImNhcmdvLXJlY3Vy c2l2ZS1pbXBvcnQiCisgIDs7IFJlcGxhY2UgbmV0d29yayByZXNvdXJjZXMgd2l0aCBzYW1wbGUg ZGF0YS4KKyAgKG1vY2sgKChndWl4IGh0dHAtY2xpZW50KSBodHRwLWZldGNoCisgICAgICAgICAo bGFtYmRhICh1cmwgLiByZXN0KQorICAgICAgICAgICAobWF0Y2ggdXJsCisgICAgICAgICAgICAg KCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL3Jvb3QiCisgICAgICAgICAgICAgIChv cGVuLWlucHV0LXN0cmluZyB0ZXN0LXJvb3QtY3JhdGUpKQorICAgICAgICAgICAgICgiaHR0cHM6 Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9yb290LzEuMC4wL2Rvd25sb2FkIgorICAgICAgICAg ICAgICAoc2V0ISB0ZXN0LXNvdXJjZS1oYXNoCisgICAgICAgICAgICAgICAgICAgIChieXRldmVj dG9yLT5uaXgtYmFzZTMyLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgKHNoYTI1NiAoc3Ry aW5nLT5ieXRldmVjdG9yICJlbXB0eSBmaWxlXG4iICJ1dGYtOCIpKSkpCisgICAgICAgICAgICAg IChvcGVuLWlucHV0LXN0cmluZyAiZW1wdHkgZmlsZVxuIikpCisgICAgICAgICAgICAgKCJodHRw czovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL3Jvb3QvMS4wLjAvZGVwZW5kZW5jaWVzIgorICAg ICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1yb290LWRlcGVuZGVuY2llcykpCisg ICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2ludGVybWVkaWF0 ZS0xIgorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1pbnRlcm1lZGlhdGUt MS1jcmF0ZSkpCisgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVz L2ludGVybWVkaWF0ZS0xLzEuMC4wL2Rvd25sb2FkIgorICAgICAgICAgICAgICAoc2V0ISB0ZXN0 LXNvdXJjZS1oYXNoCisgICAgICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5uaXgtYmFzZTMy LXN0cmluZworICAgICAgICAgICAgICAgICAgICAgKHNoYTI1NiAoc3RyaW5nLT5ieXRldmVjdG9y ICJlbXB0eSBmaWxlXG4iICJ1dGYtOCIpKSkpCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0 cmluZyAiZW1wdHkgZmlsZVxuIikpCisgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9h cGkvdjEvY3JhdGVzL2ludGVybWVkaWF0ZS0xLzEuMC4wL2RlcGVuZGVuY2llcyIKKyAgICAgICAg ICAgICAgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtaW50ZXJtZWRpYXRlLTEtZGVwZW5kZW5jaWVz KSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0ZXMvaW50ZXJt ZWRpYXRlLTIiCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWludGVybWVk aWF0ZS0yLWNyYXRlKSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9j cmF0ZXMvaW50ZXJtZWRpYXRlLTIvMS4wLjAvZG93bmxvYWQiCisgICAgICAgICAgICAgIChzZXQh IHRlc3Qtc291cmNlLWhhc2gKKyAgICAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItPm5peC1i YXNlMzItc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAoc2hhMjU2IChzdHJpbmctPmJ5dGV2 ZWN0b3IgImVtcHR5IGZpbGVcbiIgInV0Zi04IikpKSkKKyAgICAgICAgICAgICAgKG9wZW4taW5w dXQtc3RyaW5nICJlbXB0eSBmaWxlXG4iKSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVz LmlvL2FwaS92MS9jcmF0ZXMvaW50ZXJtZWRpYXRlLTIvMS4wLjAvZGVwZW5kZW5jaWVzIgorICAg ICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1pbnRlcm1lZGlhdGUtMi1kZXBlbmRl bmNpZXMpKQorICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9s ZWFmLWFsaWNlIgorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1sZWFmLWFs aWNlLWNyYXRlKSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0 ZXMvbGVhZi1hbGljZS8xLjAuMC9kb3dubG9hZCIKKyAgICAgICAgICAgICAgKHNldCEgdGVzdC1z b3VyY2UtaGFzaAorICAgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+bml4LWJhc2UzMi1z dHJpbmcKKyAgICAgICAgICAgICAgICAgICAgIChzaGEyNTYgKHN0cmluZy0+Ynl0ZXZlY3RvciAi ZW1wdHkgZmlsZVxuIiAidXRmLTgiKSkpKQorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJp bmcgImVtcHR5IGZpbGVcbiIpKQorICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBp L3YxL2NyYXRlcy9sZWFmLWFsaWNlLzEuMC4wL2RlcGVuZGVuY2llcyIKKyAgICAgICAgICAgICAg KG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtbGVhZi1hbGljZS1kZXBlbmRlbmNpZXMpKQorICAgICAg ICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9sZWFmLWJvYiIKKyAgICAg ICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtbGVhZi1ib2ItY3JhdGUpKQorICAgICAg ICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9sZWFmLWJvYi8xLjAuMC9k b3dubG9hZCIKKyAgICAgICAgICAgICAgKHNldCEgdGVzdC1zb3VyY2UtaGFzaAorICAgICAgICAg ICAgICAgICAgICAoYnl0ZXZlY3Rvci0+bml4LWJhc2UzMi1zdHJpbmcKKyAgICAgICAgICAgICAg ICAgICAgIChzaGEyNTYgKHN0cmluZy0+Ynl0ZXZlY3RvciAiZW1wdHkgZmlsZVxuIiAidXRmLTgi KSkpKQorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgImVtcHR5IGZpbGVcbiIpKQor ICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9sZWFmLWJvYi8x LjAuMC9kZXBlbmRlbmNpZXMiCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0 LWxlYWYtYm9iLWRlcGVuZGVuY2llcykpCisgICAgICAgICAgICAgKF8gKGVycm9yICJVbmV4cGVj dGVkIFVSTDogIiB1cmwpKSkpKQorICAgICAgICAobWF0Y2ggKGNyYXRlLXJlY3Vyc2l2ZS1pbXBv cnQgInJvb3QiKQorICAgICAgICAgIDs7IHJ1c3QtaW50ZXJtZWRpYXRlLTIgaGFzIG5vIGRlcGVu ZGVuY3kgb24gdGhlIHJ1c3QtbGVhZi1hbGljZSBwYWNrYWdlLCBzbyB0aGlzIGlzIGEgdmFsaWQg b3JkZXJpbmcKKyAgICAgICAgICAoKCgncGFja2FnZQorICAgICAgICAgICAgICAoJ25hbWUgInJ1 c3QtbGVhZi1ib2IiKQorICAgICAgICAgICAgICAoJ3ZlcnNpb24gKD8gc3RyaW5nPyB2ZXIpKQor ICAgICAgICAgICAgICAoJ3NvdXJjZQorICAgICAgICAgICAgICAgKCdvcmlnaW4KKyAgICAgICAg ICAgICAgICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgKCd1cmkgKCdj cmF0ZS11cmkgImxlYWYtYm9iIiAndmVyc2lvbikpCisgICAgICAgICAgICAgICAgICgnZmlsZS1u YW1lCisgICAgICAgICAgICAgICAgICAoJ3N0cmluZy1hcHBlbmQgJ25hbWUgIi0iICd2ZXJzaW9u ICIudGFyLmd6IikpCisgICAgICAgICAgICAgICAgICgnc2hhMjU2CisgICAgICAgICAgICAgICAg ICAoJ2Jhc2UzMgorICAgICAgICAgICAgICAgICAgICg/IHN0cmluZz8gaGFzaCkpKSkpCisgICAg ICAgICAgICAgICgnYnVpbGQtc3lzdGVtICdjYXJnby1idWlsZC1zeXN0ZW0pCisgICAgICAgICAg ICAgICgnaG9tZS1wYWdlICJodHRwOi8vZXhhbXBsZS5jb20iKQorICAgICAgICAgICAgICAoJ3N5 bm9wc2lzICJzdW1tYXJ5IikKKyAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbiAic3VtbWFyeSIp CisgICAgICAgICAgICAgICgnbGljZW5zZSAoJ2xpc3QgJ2xpY2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6 YXNsMi4wKSkpCisgICAgICAgICAgICAoJ3BhY2thZ2UKKyAgICAgICAgICAgICAgKCduYW1lICJy dXN0LWludGVybWVkaWF0ZS0yIikKKyAgICAgICAgICAgICAgKCd2ZXJzaW9uICg/IHN0cmluZz8g dmVyKSkKKyAgICAgICAgICAgICAgKCdzb3VyY2UKKyAgICAgICAgICAgICAgICgnb3JpZ2luCisg ICAgICAgICAgICAgICAgICgnbWV0aG9kICd1cmwtZmV0Y2gpCisgICAgICAgICAgICAgICAgICgn dXJpICgnY3JhdGUtdXJpICJpbnRlcm1lZGlhdGUtMiIgJ3ZlcnNpb24pKQorICAgICAgICAgICAg ICAgICAoJ2ZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgKCdzdHJpbmctYXBwZW5kICduYW1l ICItIiAndmVyc2lvbiAiLnRhci5neiIpKQorICAgICAgICAgICAgICAgICAoJ3NoYTI1NgorICAg ICAgICAgICAgICAgICAgKCdiYXNlMzIKKyAgICAgICAgICAgICAgICAgICAoPyBzdHJpbmc/IGhh c2gpKSkpKQorICAgICAgICAgICAgICAoJ2J1aWxkLXN5c3RlbSAnY2FyZ28tYnVpbGQtc3lzdGVt KQorICAgICAgICAgICAgICAoJ2FyZ3VtZW50cworICAgICAgICAgICAgICAgKCdxdWFzaXF1b3Rl CisgICAgICAgICAgICAgICAgKCcjOmNhcmdvLWlucHV0cyAoKCJydXN0LWxlYWYtYm9iIiAoJ3Vu cXVvdGUgcnVzdC1sZWFmLWJvYikpKSkpKQorICAgICAgICAgICAgICAoJ2hvbWUtcGFnZSAiaHR0 cDovL2V4YW1wbGUuY29tIikKKyAgICAgICAgICAgICAgKCdzeW5vcHNpcyAic3VtbWFyeSIpCisg ICAgICAgICAgICAgICgnZGVzY3JpcHRpb24gInN1bW1hcnkiKQorICAgICAgICAgICAgICAoJ2xp Y2Vuc2UgKCdsaXN0ICdsaWNlbnNlOmV4cGF0ICdsaWNlbnNlOmFzbDIuMCkpKQorICAgICAgICAg ICAgKCdwYWNrYWdlCisgICAgICAgICAgICAgICgnbmFtZSAicnVzdC1sZWFmLWFsaWNlIikKKyAg ICAgICAgICAgICAgKCd2ZXJzaW9uICg/IHN0cmluZz8gdmVyKSkKKyAgICAgICAgICAgICAgKCdz b3VyY2UKKyAgICAgICAgICAgICAgICgnb3JpZ2luCisgICAgICAgICAgICAgICAgICgnbWV0aG9k ICd1cmwtZmV0Y2gpCisgICAgICAgICAgICAgICAgICgndXJpICgnY3JhdGUtdXJpICJsZWFmLWFs aWNlIiAndmVyc2lvbikpCisgICAgICAgICAgICAgICAgICgnZmlsZS1uYW1lCisgICAgICAgICAg ICAgICAgICAoJ3N0cmluZy1hcHBlbmQgJ25hbWUgIi0iICd2ZXJzaW9uICIudGFyLmd6IikpCisg ICAgICAgICAgICAgICAgICgnc2hhMjU2CisgICAgICAgICAgICAgICAgICAoJ2Jhc2UzMgorICAg ICAgICAgICAgICAgICAgICg/IHN0cmluZz8gaGFzaCkpKSkpCisgICAgICAgICAgICAgICgnYnVp bGQtc3lzdGVtICdjYXJnby1idWlsZC1zeXN0ZW0pCisgICAgICAgICAgICAgICgnaG9tZS1wYWdl ICJodHRwOi8vZXhhbXBsZS5jb20iKQorICAgICAgICAgICAgICAoJ3N5bm9wc2lzICJzdW1tYXJ5 IikKKyAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbiAic3VtbWFyeSIpCisgICAgICAgICAgICAg ICgnbGljZW5zZSAoJ2xpc3QgJ2xpY2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6YXNsMi4wKSkpCisgICAg ICAgICAgICAoJ3BhY2thZ2UKKyAgICAgICAgICAgICAgKCduYW1lICJydXN0LWludGVybWVkaWF0 ZS0xIikKKyAgICAgICAgICAgICAgKCd2ZXJzaW9uICg/IHN0cmluZz8gdmVyKSkKKyAgICAgICAg ICAgICAgKCdzb3VyY2UKKyAgICAgICAgICAgICAgICgnb3JpZ2luCisgICAgICAgICAgICAgICAg ICgnbWV0aG9kICd1cmwtZmV0Y2gpCisgICAgICAgICAgICAgICAgICgndXJpICgnY3JhdGUtdXJp ICJpbnRlcm1lZGlhdGUtMSIgJ3ZlcnNpb24pKQorICAgICAgICAgICAgICAgICAoJ2ZpbGUtbmFt ZQorICAgICAgICAgICAgICAgICAgKCdzdHJpbmctYXBwZW5kICduYW1lICItIiAndmVyc2lvbiAi LnRhci5neiIpKQorICAgICAgICAgICAgICAgICAoJ3NoYTI1NgorICAgICAgICAgICAgICAgICAg KCdiYXNlMzIKKyAgICAgICAgICAgICAgICAgICAoPyBzdHJpbmc/IGhhc2gpKSkpKQorICAgICAg ICAgICAgICAoJ2J1aWxkLXN5c3RlbSAnY2FyZ28tYnVpbGQtc3lzdGVtKQorICAgICAgICAgICAg ICAoJ2FyZ3VtZW50cworICAgICAgICAgICAgICAgKCdxdWFzaXF1b3RlCisgICAgICAgICAgICAg ICAgKCcjOmNhcmdvLWlucHV0cyAoKCJydXN0LWludGVybWVkaWF0ZS0yIiAoJ3VucXVvdGUgcnVz dC1pbnRlcm1lZGlhdGUtMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJy dXN0LWxlYWYtYWxpY2UiICgndW5xdW90ZSBydXN0LWxlYWYtYWxpY2UpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgicnVzdC1sZWFmLWJvYiIgKCd1bnF1b3RlIHJ1c3QtbGVh Zi1ib2IpKSkpKSkKKyAgICAgICAgICAgICAgKCdob21lLXBhZ2UgImh0dHA6Ly9leGFtcGxlLmNv bSIpCisgICAgICAgICAgICAgICgnc3lub3BzaXMgInN1bW1hcnkiKQorICAgICAgICAgICAgICAo J2Rlc2NyaXB0aW9uICJzdW1tYXJ5IikKKyAgICAgICAgICAgICAgKCdsaWNlbnNlICgnbGlzdCAn bGljZW5zZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkKKyAgICAgICAgICAgICgncGFja2FnZQor ICAgICAgICAgICAgICAoJ25hbWUgInJ1c3Qtcm9vdCIpCisgICAgICAgICAgICAgICgndmVyc2lv biAoPyBzdHJpbmc/IHZlcikpCisgICAgICAgICAgICAgICgnc291cmNlCisgICAgICAgICAgICAg ICAoJ29yaWdpbgorICAgICAgICAgICAgICAgICAoJ21ldGhvZCAndXJsLWZldGNoKQorICAgICAg ICAgICAgICAgICAoJ3VyaSAoJ2NyYXRlLXVyaSAicm9vdCIgJ3ZlcnNpb24pKQorICAgICAgICAg ICAgICAgICAoJ2ZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgKCdzdHJpbmctYXBwZW5kICdu YW1lICItIiAndmVyc2lvbiAiLnRhci5neiIpKQorICAgICAgICAgICAgICAgICAoJ3NoYTI1Ngor ICAgICAgICAgICAgICAgICAgKCdiYXNlMzIKKyAgICAgICAgICAgICAgICAgICAoPyBzdHJpbmc/ IGhhc2gpKSkpKQorICAgICAgICAgICAgICAoJ2J1aWxkLXN5c3RlbSAnY2FyZ28tYnVpbGQtc3lz dGVtKQorICAgICAgICAgICAgICAoJ2FyZ3VtZW50cworICAgICAgICAgICAgICAgKCdxdWFzaXF1 b3RlCisgICAgICAgICAgICAgICAgKCcjOmNhcmdvLWlucHV0cyAoKCJydXN0LWludGVybWVkaWF0 ZS0xIiAoJ3VucXVvdGUgcnVzdC1pbnRlcm1lZGlhdGUtMSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCJydXN0LWludGVybWVkaWF0ZS0yIiAoJ3VucXVvdGUgcnVzdC1pbnRl cm1lZGlhdGUtMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJydXN0LWxl YWYtYWxpY2UiICgndW5xdW90ZSBydXN0LWxlYWYtYWxpY2UpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgicnVzdC1sZWFmLWJvYiIgKCd1bnF1b3RlIHJ1c3QtbGVhZi1ib2Ip KSkpKSkKKyAgICAgICAgICAgICAgKCdob21lLXBhZ2UgImh0dHA6Ly9leGFtcGxlLmNvbSIpCisg ICAgICAgICAgICAgICgnc3lub3BzaXMgInN1bW1hcnkiKQorICAgICAgICAgICAgICAoJ2Rlc2Ny aXB0aW9uICJzdW1tYXJ5IikKKyAgICAgICAgICAgICAgKCdsaWNlbnNlICgnbGlzdCAnbGljZW5z ZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkpCisgICAgICAgICAgICN0KQorICAgICAgICAgICh4 CisgICAgICAgICAgIChwayAnZmFpbCB4ICNmKSkpKSkKKwogKHRlc3QtZW5kICJjcmF0ZSIpCmRp ZmYgLS1naXQgYS90ZXN0cy9nZW0uc2NtIGIvdGVzdHMvZ2VtLnNjbQppbmRleCBhMTJlZGIyOTRj Li4wMWFlOGE0NDcwIDEwMDY0NAotLS0gYS90ZXN0cy9nZW0uc2NtCisrKyBiL3Rlc3RzL2dlbS5z Y20KQEAgLTI0LDcgKzI0LDYgQEAKICAgIzp1c2UtbW9kdWxlIChnY3J5cHQgaGFzaCkKICAgIzp1 c2UtbW9kdWxlIChndWl4IHRlc3RzKQogICAjOnVzZS1tb2R1bGUgKChndWl4IGJ1aWxkIHV0aWxz KSAjOnNlbGVjdCAoZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkpKQotICAjOnVzZS1tb2R1bGUgKHNy Zmkgc3JmaS00MSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktNjQpCiAgICM6dXNlLW1vZHVs ZSAoaWNlLTkgbWF0Y2gpKQogCkBAIC0xMjEsMjcgKzEyMCw4IEBACiAgICAgICAgICAgICAgICh2 YWx1ZXMgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtYnVuZGxlci1qc29uKQogICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctbGVuZ3RoIHRlc3QtYnVuZGxlci1qc29uKSkpCiAgICAgICAgICAg ICAgKF8gKGVycm9yICJVbmV4cGVjdGVkIFVSTDogIiB1cmwpKSkpKQotICAgICAgICAobWF0Y2gg KHN0cmVhbS0+bGlzdCAoZ2VtLXJlY3Vyc2l2ZS1pbXBvcnQgImZvbyIpKQorICAgICAgICAobWF0 Y2ggKGdlbS1yZWN1cnNpdmUtaW1wb3J0ICJmb28iKQogICAgICAgICAgICgoKCdwYWNrYWdlCi0g ICAgICAgICAgICAgICgnbmFtZSAicnVieS1mb28iKQotICAgICAgICAgICAgICAoJ3ZlcnNpb24g IjEuMC4wIikKLSAgICAgICAgICAgICAgKCdzb3VyY2UKLSAgICAgICAgICAgICAgICgnb3JpZ2lu Ci0gICAgICAgICAgICAgICAgICgnbWV0aG9kICd1cmwtZmV0Y2gpCi0gICAgICAgICAgICAgICAg ICgndXJpICgncnVieWdlbXMtdXJpICJmb28iICd2ZXJzaW9uKSkKLSAgICAgICAgICAgICAgICAg KCdzaGEyNTYKLSAgICAgICAgICAgICAgICAgICgnYmFzZTMyCi0gICAgICAgICAgICAgICAgICAg IjFhMjcwbWxhamhybXBxYmh4Y3FqcXlwbnZncnE0cGdpeHB2M3c5Z3dwMXdycmFwbndyemsiKSkp KQotICAgICAgICAgICAgICAoJ2J1aWxkLXN5c3RlbSAncnVieS1idWlsZC1zeXN0ZW0pCi0gICAg ICAgICAgICAgICgncHJvcGFnYXRlZC1pbnB1dHMKLSAgICAgICAgICAgICAgICgncXVhc2lxdW90 ZQotICAgICAgICAgICAgICAgICgoImJ1bmRsZXIiICgndW5xdW90ZSAnYnVuZGxlcikpCi0gICAg ICAgICAgICAgICAgICgicnVieS1iYXIiICgndW5xdW90ZSAncnVieS1iYXIpKSkpKQotICAgICAg ICAgICAgICAoJ3N5bm9wc2lzICJBIGNvb2wgZ2VtIikKLSAgICAgICAgICAgICAgKCdkZXNjcmlw dGlvbiAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgY29vbCBnZW0iKQotICAgICAgICAgICAgICAo J2hvbWUtcGFnZSAiaHR0cHM6Ly9leGFtcGxlLmNvbSIpCi0gICAgICAgICAgICAgICgnbGljZW5z ZSAoJ2xpc3QgJ2xpY2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6YXNsMi4wKSkpCi0gICAgICAgICAgICAo J3BhY2thZ2UKICAgICAgICAgICAgICAgKCduYW1lICJydWJ5LWJ1bmRsZXIiKQogICAgICAgICAg ICAgICAoJ3ZlcnNpb24gIjEuMTQuMiIpCiAgICAgICAgICAgICAgICgnc291cmNlCkBAIC0xNzMs NiArMTUzLDI1IEBACiAgICAgICAgICAgICAgICgnc3lub3BzaXMgIkFub3RoZXIgY29vbCBnZW0i KQogICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uICJBbm90aGVyIGNvb2wgZ2VtIikKICAgICAg ICAgICAgICAgKCdob21lLXBhZ2UgImh0dHBzOi8vZXhhbXBsZS5jb20iKQorICAgICAgICAgICAg ICAoJ2xpY2Vuc2UgKCdsaXN0ICdsaWNlbnNlOmV4cGF0ICdsaWNlbnNlOmFzbDIuMCkpKQorICAg ICAgICAgICAgKCdwYWNrYWdlCisgICAgICAgICAgICAgICgnbmFtZSAicnVieS1mb28iKQorICAg ICAgICAgICAgICAoJ3ZlcnNpb24gIjEuMC4wIikKKyAgICAgICAgICAgICAgKCdzb3VyY2UKKyAg ICAgICAgICAgICAgICgnb3JpZ2luCisgICAgICAgICAgICAgICAgICgnbWV0aG9kICd1cmwtZmV0 Y2gpCisgICAgICAgICAgICAgICAgICgndXJpICgncnVieWdlbXMtdXJpICJmb28iICd2ZXJzaW9u KSkKKyAgICAgICAgICAgICAgICAgKCdzaGEyNTYKKyAgICAgICAgICAgICAgICAgICgnYmFzZTMy CisgICAgICAgICAgICAgICAgICAgIjFhMjcwbWxhamhybXBxYmh4Y3FqcXlwbnZncnE0cGdpeHB2 M3c5Z3dwMXdycmFwbndyemsiKSkpKQorICAgICAgICAgICAgICAoJ2J1aWxkLXN5c3RlbSAncnVi eS1idWlsZC1zeXN0ZW0pCisgICAgICAgICAgICAgICgncHJvcGFnYXRlZC1pbnB1dHMKKyAgICAg ICAgICAgICAgICgncXVhc2lxdW90ZQorICAgICAgICAgICAgICAgICgoImJ1bmRsZXIiICgndW5x dW90ZSAnYnVuZGxlcikpCisgICAgICAgICAgICAgICAgICgicnVieS1iYXIiICgndW5xdW90ZSAn cnVieS1iYXIpKSkpKQorICAgICAgICAgICAgICAoJ3N5bm9wc2lzICJBIGNvb2wgZ2VtIikKKyAg ICAgICAgICAgICAgKCdkZXNjcmlwdGlvbiAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgY29vbCBn ZW0iKQorICAgICAgICAgICAgICAoJ2hvbWUtcGFnZSAiaHR0cHM6Ly9leGFtcGxlLmNvbSIpCiAg ICAgICAgICAgICAgICgnbGljZW5zZSAoJ2xpc3QgJ2xpY2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6YXNs Mi4wKSkpKQogICAgICAgICAgICAjdCkKICAgICAgICAgICAoeAotLSAKMi4yMy4wCgo= --000000000000bb43020594c5d6c1-- From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 18 05:31:40 2019 Received: (at 37730) by debbugs.gnu.org; 18 Oct 2019 09:31:40 +0000 Received: from localhost ([127.0.0.1]:49384 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iLObj-0003pU-MI for submit@debbugs.gnu.org; Fri, 18 Oct 2019 05:31:40 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37611) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iLObh-0003pC-AH for 37730@debbugs.gnu.org; Fri, 18 Oct 2019 05:31:38 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:59775) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iLObb-0006v8-J6; Fri, 18 Oct 2019 05:31:31 -0400 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=38700 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iLObb-0000l9-3G; Fri, 18 Oct 2019 05:31:31 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Brian Leung Subject: Re: [bug#37730] [PATCH] Topologically sort recursively-imported packages References: Date: Fri, 18 Oct 2019 11:31:26 +0200 In-Reply-To: (Brian Leung's message of "Sun, 13 Oct 2019 00:37:59 -0700") Message-ID: <87lfti5rip.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37730 Cc: 37730@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Brian, Brian Leung skribis: > From 6fec6a72a7938753307ccf3b7bdad8bff72e47f9 Mon Sep 17 00:00:00 2001 > From: Brian Leung > Date: Fri, 11 Oct 2019 23:18:03 -0700 > Subject: [PATCH] guix: utils: Topologically sort recursively-imported rec= ipes. > > This output order, when it is well-defined, facilitates the process of > deciding what to upstream next for a package with a large dependency clos= ure. That=E2=80=99s a great idea! > * guix/import/utils.scm (recursive-import): Enforce topological sort. > Remove dependency on srfi-41. Reverse output here instead of in individ= ual > importers. > * guix/scripts/import/cran.scm (guix-import-cran): Unstreamify and don't > reverse here. Remove dependency on srfi-41. Instead of =E2=80=9CUnstreamify=E2=80=9D, please write precisely what has c= hanged, like =E2=80=9CRemove call to =E2=80=98stream-fold=E2=80=99 and call =E2=80=98foo= bar=E2=80=99 directly.=E2=80=9D, =E2=80=9CRemove call to =E2=80=98stream->list=E2=80=99.=E2=80=9D, etc. > + (define graph (make-hash-table)) > + (define recipe-map (make-hash-table)) > + (define stack (list package-name)) > + (define accum '()) > + > + (while (not (null? stack)) > + (let ((package-name (car stack))) > + (match (hash-ref graph package-name) > + ('() > + (set! stack (cdr stack)) > + (set! accum (cons (hash-ref recipe-map package-name) accum))) > + ((dep . rest) > + (define (handle? dep) > + (and > + (not (equal? dep package-name)) > + (not (hash-ref recipe-map dep)) > + (not (exists? dep)))) > + (hash-set! graph package-name rest) > + (when (handle? dep) > + (set! stack (cons dep stack)))) > + (#f > + (receive (package-recipe . dependencies) > + (repo->guix-package package-name repo) > + (hash-set! graph package-name > + (or (and (not (null? dependencies)) > + (car dependencies)) > + '())) > + (hash-set! recipe-map package-name > + (or package-recipe '()))))))) > + > + (reverse accum)) Do you think you could rewrite this (1) in a functional style (you can use vhashes instead of hash tables), and (2) using =E2=80=98match=E2=80=99 = instead of =E2=80=98cdr=E2=80=99 & co.? That would more closely match our conventions (info "(guix) Coding Style") and would also probably allow for easier testing. Regarding tests, you could make the topological sort code above a separate procedure, and write a couple of tests that call it. WDYT? The rest LGTM. Thank you! Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 11:50:36 2019 Received: (at 37730) by debbugs.gnu.org; 4 Dec 2019 16:50:36 +0000 Received: from localhost ([127.0.0.1]:42549 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icXrE-00084i-PZ for submit@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:36 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icXrB-00084R-7C for 37730@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:30 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50497) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icXr1-0001xy-SM for 37730@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:21 -0500 Received: from [160.174.176.236] (port=48134 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icXqs-0007oq-Ti for 37730@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:16 -0500 Resent-To: 37730@debbugs.gnu.org Resent-From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Resent-Date: Wed, 04 Dec 2019 17:50:07 +0100 Resent-Message-ID: <87fti0dohs.fsf@gnu.org> Received: from solo.fdn.fr ([unix socket]) by solo (Cyrus 2.5.10-Debian-2.5.10-3.2) with LMTPA; Tue, 03 Dec 2019 23:04:01 +0100 X-Sieve: CMU Sieve 2.4 Received: by solo.fdn.fr (Postfix) id EF4BFD0AD8; Tue, 3 Dec 2019 23:04:00 +0100 (CET) Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by solo.fdn.fr (Postfix) with ESMTPS id 94A61D0A77 for ; Tue, 3 Dec 2019 23:04:00 +0100 (CET) Received: from fencepost.gnu.org ([2001:470:142:3::e]:36958) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icGGx-00073c-M3 for ludovic.courtes@fdn.fr; Tue, 03 Dec 2019 17:03:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36241) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icGGw-0005eF-FB for ludo@gnu.org; Tue, 03 Dec 2019 17:03:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1icGGr-0006lo-8V for ludo@gnu.org; Tue, 03 Dec 2019 17:03:54 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from mail-qk1-x733.google.com ([2607:f8b0:4864:20::733]:47051) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1icGGp-0006BZ-RW for ludo@gnu.org; Tue, 03 Dec 2019 17:03:49 -0500 Received: by mail-qk1-x733.google.com with SMTP id f5so5074165qkm.13 for ; Tue, 03 Dec 2019 14:03:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=1Rv+sNnaUkJosgf+k6Uru7HU/7gV0a1rABSpDv/l3vY=; b=ukf66pppu4aO9YrUm7s5SaEshsPXiFs6wfZamAVVSi5VjAY7SBehZKejPKAr6cRMne Vod3tsRdn4Q350J7SJVBlZMhllcOzIIqx3K5ukGpUtbkH9b0LCCdEhiJxbXfb7oittFX 6yn5jeS0x+VEYdlyr4a4fHxtYWnU6E3mhVmkD7jN5sn1usOOaM7D/8KkHGo4a7fxKGRL vUgMVeqcK2qoMm2sHYqKs06r3UmXkya78zRCLXI9cMUyQv2Awx3Z7sR/VZx+oveuNBjy A1LPGFcpYNf2V1NS+568QZykkfUGmwpvdjnMTBPmT3MDf/lOUYJqEK+xhMEROhWcGWYm t8LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=1Rv+sNnaUkJosgf+k6Uru7HU/7gV0a1rABSpDv/l3vY=; b=lqRbYF3LabIo99hJHEzC/XWrinDzlfjzjDPw9dsi6QvyaDLCKH28zG+BBoWb1npJBV 3hnTQgWMzDn58y+Egyt1zbT7Op2hKsUu2HgWMjoCNptRk6fJ+7ssAvrzEXYcRHT3X40P aLYoM5W8d2bkxucNTA/sMqRfw0yC9QuxlP1W2M+geqkFige5oVGhJAKUaSrwWkOTUEJF M6/kW3iDDuXqQylcj1VIbKS1xrDJ80s8dNwDMi/yw+l8cDtOuwGgCQp1xf6Pq86HMcS8 PN8FhOVET2A3coSYAv1Q02TrbleVaQQSP8HSKtqQGsUMRA6pZUmBvE805okARH/OPTf/ AIDA== X-Gm-Message-State: APjAAAVTTDVU4NnU2iy1FnAkhWEayK1JLDBuAzCCtXf2pKi2AF+LFcad dQzxY7vfl38ovPwX+PQ0u5resUmqJ389rLB8piIER37X X-Google-Smtp-Source: APXvYqwEHzG4ZtrPdZzb5vQyTVHUwZsd4WhMN1qTXOt1wkHsOLjLq13eE8jsmyXPuVzh/au3uADOJyf9AvoAunT1t5k= X-Received: by 2002:a37:7487:: with SMTP id p129mr7814479qkc.296.1575410618690; Tue, 03 Dec 2019 14:03:38 -0800 (PST) MIME-Version: 1.0 References: <87lfti5rip.fsf@gnu.org> In-Reply-To: <87lfti5rip.fsf@gnu.org> From: Brian Leung Date: Tue, 3 Dec 2019 14:03:02 -0800 Message-ID: Subject: Re: [bug#37730] [PATCH] Topologically sort recursively-imported packages To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= , Efraim Flashner Content-Type: multipart/mixed; boundary="0000000000004d8cd90598d3deab" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::733 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 37730 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --0000000000004d8cd90598d3deab Content-Type: multipart/alternative; boundary="0000000000004d8cd50598d3dea9" --0000000000004d8cd50598d3dea9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Ludo, Sorry for putting this off; my Guix installation got corrupted and I wasn't able to roll back. I'm writing this from within VirtualBox. In the attached patch I've addressed most of your concerns, except for this one: > Regarding tests, you could make the topological sort code above a > separate procedure, and write a couple of tests that call it. I don't see how this would help. We would have to pass it the `repo->guix-package` function and the `repo` variable as an arguments that remain the same across all the tail-recursive invocations of `topo-sort`, which would make it harder to read. And we'd have to come up with some custom `repo->guix-package` function, when we already have one for the (say) Crate test. Efraim: I recall you mentioning a while back that topologically sorted output would be nice to have. Please confirm this patch works as expected for you. Thanks, Brian On Fri, Oct 18, 2019 at 2:31 AM Ludovic Court=C3=A8s wrote: > Hi Brian, > > Brian Leung skribis: > > > From 6fec6a72a7938753307ccf3b7bdad8bff72e47f9 Mon Sep 17 00:00:00 2001 > > From: Brian Leung > > Date: Fri, 11 Oct 2019 23:18:03 -0700 > > Subject: [PATCH] guix: utils: Topologically sort recursively-imported > recipes. > > > > This output order, when it is well-defined, facilitates the process of > > deciding what to upstream next for a package with a large dependency > closure. > > That=E2=80=99s a great idea! > > > * guix/import/utils.scm (recursive-import): Enforce topological sort. > > Remove dependency on srfi-41. Reverse output here instead of in > individual > > importers. > > * guix/scripts/import/cran.scm (guix-import-cran): Unstreamify and don'= t > > reverse here. Remove dependency on srfi-41. > > Instead of =E2=80=9CUnstreamify=E2=80=9D, please write precisely what has= changed, like > =E2=80=9CRemove call to =E2=80=98stream-fold=E2=80=99 and call =E2=80=98f= oobar=E2=80=99 directly.=E2=80=9D, =E2=80=9CRemove call > to =E2=80=98stream->list=E2=80=99.=E2=80=9D, etc. > > > + (define graph (make-hash-table)) > > + (define recipe-map (make-hash-table)) > > + (define stack (list package-name)) > > + (define accum '()) > > + > > + (while (not (null? stack)) > > + (let ((package-name (car stack))) > > + (match (hash-ref graph package-name) > > + ('() > > + (set! stack (cdr stack)) > > + (set! accum (cons (hash-ref recipe-map package-name) accum))) > > + ((dep . rest) > > + (define (handle? dep) > > + (and > > + (not (equal? dep package-name)) > > + (not (hash-ref recipe-map dep)) > > + (not (exists? dep)))) > > + (hash-set! graph package-name rest) > > + (when (handle? dep) > > + (set! stack (cons dep stack)))) > > + (#f > > + (receive (package-recipe . dependencies) > > + (repo->guix-package package-name repo) > > + (hash-set! graph package-name > > + (or (and (not (null? dependencies)) > > + (car dependencies)) > > + '())) > > + (hash-set! recipe-map package-name > > + (or package-recipe '()))))))) > > + > > + (reverse accum)) > > Do you think you could rewrite this (1) in a functional style (you can > use vhashes instead of hash tables), and (2) using =E2=80=98match=E2=80= =99 instead of > =E2=80=98cdr=E2=80=99 & co.? > > That would more closely match our conventions (info "(guix) Coding > Style") and would also probably allow for easier testing. > > Regarding tests, you could make the topological sort code above a > separate procedure, and write a couple of tests that call it. > > WDYT? > > The rest LGTM. > > Thank you! > > Ludo=E2=80=99. > --0000000000004d8cd50598d3dea9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Ludo,

Sorry for putting t= his off; my Guix installation got corrupted and I wasn't able to roll b= ack. I'm writing this from within VirtualBox.

= In the attached patch I've addressed most of your concerns, except for = this one:

> Regarding tests, you could make= the topological sort code above a
> separate procedure, and write a couple of tests that call it.

I don't see how this would help. We would have to pass= it the `repo->guix-package` function and the `repo` variable as an argu= ments that remain the same across all the tail-recursive invocations of `t= opo-sort`, which would make it harder to read. And we'd have to come up= with some custom `repo->guix-package` function, when we already have on= e for the (say) Crate test.

Efraim: I recall you m= entioning a while back that topologically sorted output would be nice to ha= ve. Please confirm this patch works as expected for you.

Thanks,
Brian

On Fri, Oct 18, 2019 at 2:31 AM Lud= ovic Court=C3=A8s <ludo@gnu.org> = wrote:
Hi Brian,=

Brian Leung <bk= leung89@gmail.com> skribis:

> From 6fec6a72a7938753307ccf3b7bdad8bff72e47f9 Mon Sep 17 00:00:00 2001=
> From: Brian Leung <leungbk@mailfence.com>
> Date: Fri, 11 Oct 2019 23:18:03 -0700
> Subject: [PATCH] guix: utils: Topologically sort recursively-imported = recipes.
>
> This output order, when it is well-defined, facilitates the process of=
> deciding what to upstream next for a package with a large dependency c= losure.

That=E2=80=99s a great idea!

> * guix/import/utils.scm (recursive-import): Enforce topological sort.<= br> >=C2=A0 =C2=A0Remove dependency on srfi-41. Reverse output here instead = of in individual
>=C2=A0 =C2=A0importers.
> * guix/scripts/import/cran.scm (guix-import-cran): Unstreamify and don= 't
>=C2=A0 =C2=A0reverse here. Remove dependency on srfi-41.

Instead of =E2=80=9CUnstreamify=E2=80=9D, please write precisely what has c= hanged, like
=E2=80=9CRemove call to =E2=80=98stream-fold=E2=80=99 and call =E2=80=98foo= bar=E2=80=99 directly.=E2=80=9D, =E2=80=9CRemove call
to =E2=80=98stream->list=E2=80=99.=E2=80=9D, etc.

> +=C2=A0 (define graph (make-hash-table))
> +=C2=A0 (define recipe-map (make-hash-table))
> +=C2=A0 (define stack (list package-name))
> +=C2=A0 (define accum '())
> +
> +=C2=A0 (while (not (null? stack))
> +=C2=A0 =C2=A0 (let ((package-name (car stack)))
> +=C2=A0 =C2=A0 =C2=A0 (match (hash-ref graph package-name)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ('()
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set! stack (cdr stack))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set! accum (cons (hash-ref recipe-= map package-name) accum)))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((dep . rest)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(define (handle? dep)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(and
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (equal? dep package-na= me))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (hash-ref recipe-map d= ep))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (exists? dep))))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(hash-set! graph package-name rest)=
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (handle? dep)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set! stack (cons dep stack)= )))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (#f
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(receive (package-recipe . dependen= cies)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(repo->guix-packag= e package-name repo)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(hash-set! graph package-nam= e
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 (or (and (not (null? dependencies))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(car dependencies))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 '()))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(hash-set! recipe-map packag= e-name
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 (or package-recipe '())))))))
> +
> +=C2=A0 (reverse accum))

Do you think you could rewrite this (1) in a functional style (you can
use vhashes instead of hash tables), and (2) using =E2=80=98match=E2=80=99 = instead of
=E2=80=98cdr=E2=80=99 & co.?

That would more closely match our conventions (info "(guix) Coding
Style") and would also probably allow for easier testing.

Regarding tests, you could make the topological sort code above a
separate procedure, and write a couple of tests that call it.

WDYT?

The rest LGTM.

Thank you!

Ludo=E2=80=99.
--0000000000004d8cd50598d3dea9-- --0000000000004d8cd90598d3deab Content-Type: text/x-patch; charset="US-ASCII"; name="0001-guix-utils-Topologically-sort-recursively-imported-r.patch" Content-Disposition: attachment; filename="0001-guix-utils-Topologically-sort-recursively-imported-r.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k3qere6i0 RnJvbSAyZjgxYjNjZWE3ZjA3NDQ2YzBhNTdjMmVmMzcxZDM3ZmYyZTE1NDgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCcmlhbiBMZXVuZyA8bGV1bmdia0BtYWlsZmVuY2UuY29tPgpE YXRlOiBGcmksIDExIE9jdCAyMDE5IDIzOjE4OjAzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZ3Vp eDogdXRpbHM6IFRvcG9sb2dpY2FsbHkgc29ydCByZWN1cnNpdmVseSBpbXBvcnRlZCByZWNpcGVz LgoKVGhpcyBvdXRwdXQgb3JkZXIsIHdoZW4gaXQgaXMgd2VsbC1kZWZpbmVkLCBmYWNpbGl0YXRl cyB0aGUgcHJvY2VzcyBvZgpkZWNpZGluZyB3aGF0IHRvIHVwc3RyZWFtIG5leHQgZm9yIGEgcGFj a2FnZSB3aXRoIGEgbGFyZ2UgZGVwZW5kZW5jeSBjbG9zdXJlLgoKKiBndWl4L2ltcG9ydC91dGls cy5zY20gKHJlY3Vyc2l2ZS1pbXBvcnQpOiBFbmZvcmNlIHRvcG9sb2dpY2FsIHNvcnQuIFJlbW92 ZQpkZXBlbmRlbmN5IG9uIHNyZmktNDEuIEltcG9ydCB2bGlzdCBtb2R1bGUuIFJldmVyc2Ugb3V0 cHV0IGhlcmUgaW5zdGVhZCBvZiBpbgppbmRpdmlkdWFsIGltcG9ydGVycy4KKiBndWl4L3Njcmlw dHMvaW1wb3J0L2NyYW4uc2NtIChndWl4LWltcG9ydC1jcmFuKTogUmVtb3ZlIGNhbGxzIHRvCnN0 cmVhbS0+bGlzdCBhbmQgcmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBn dWl4L3NjcmlwdHMvaW1wb3J0L2NyYXRlLnNjbSAoZ3VpeC1pbXBvcnQtY3JhdGUpOiBSZW1vdmUg Y2FsbHMgdG8Kc3RyZWFtLT5saXN0IGFuZCByZXZlcnNlLiBSZW1vdmUgZGVwZW5kZW5jeSBvbiBz cmZpLTQxLgoqIGd1aXgvc2NyaXB0cy9pbXBvcnQvZWxwYS5zY20gKGd1aXgtaW1wb3J0LWVscGEp OiBSZW1vdmUgY2FsbHMgdG8Kc3RyZWFtLT5saXN0IGFuZCByZXZlcnNlLiBSZW1vdmUgZGVwZW5k ZW5jeSBvbiBzcmZpLTQxLgoqIGd1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNjbSAoZ3VpeC1pbXBv cnQtZ2VtKTogUmVtb3ZlIGNhbGxzIHRvIHN0cmVhbS0+bGlzdAphbmQgcmV2ZXJzZS4gUmVtb3Zl IGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBndWl4L3NjcmlwdHMvaW1wb3J0L2hhY2thZ2Uuc2Nt IChndWl4LWltcG9ydC1oYWNrYWdlKTogUmVtb3ZlIGNhbGxzIHRvCnN0cmVhbS0+bGlzdCBhbmQg cmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBndWl4L3NjcmlwdHMvaW1w b3J0L29wYW0uc2NtIChndWl4LWltcG9ydC1vcGFtKTogUmVtb3ZlIGNhbGxzIHRvCnN0cmVhbS0+ bGlzdCBhbmQgcmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBndWl4L3Nj cmlwdHMvaW1wb3J0L3B5cGkuc2NtIChndWl4LWltcG9ydC1weXBpKTogUmVtb3ZlIGNhbGxzIHRv CnN0cmVhbS0+bGlzdCBhbmQgcmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4K KiBndWl4L3NjcmlwdHMvaW1wb3J0L3N0YWNrYWdlLnNjbSAoZ3VpeC1pbXBvcnQtc3RhY2thZ2Up OiBSZW1vdmUgY2FsbHMgdG8Kc3RyZWFtLT5saXN0IGFuZCByZXZlcnNlLiBSZW1vdmUgZGVwZW5k ZW5jeSBvbiBzcmZpLTQxLgoqIHRlc3RzL2NyYXRlLnNjbSAoY2FyZ28tcmVjdXJzaXZlLWltcG9y dCk6IEFkZCB0ZXN0LgoqIHRlc3RzL2dlbS5zY20gKGdlbS1yZWN1cnNpdmUtaW1wb3J0KTogVXBk YXRlIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCB0aGUKcmV2ZXJzaW5nIG9mIHRoZSBsaXN0IG5v dyB0YWtlcyBwbGFjZSBpbiB0aGUgcmVjdXJzaXZlIGltcG9ydGVyLiBSZW1vdmUKZGVwZW5kZW5j eSBvbiBzcmZpLTQxLgotLS0KIGd1aXgvaW1wb3J0L3V0aWxzLnNjbSAgICAgICAgICAgIHwgIDg3 ICsrKysrLS0tCiBndWl4L3NjcmlwdHMvaW1wb3J0L2NyYW4uc2NtICAgICB8ICAgNyArLQogZ3Vp eC9zY3JpcHRzL2ltcG9ydC9jcmF0ZS5zY20gICAgfCAgIDUgKy0KIGd1aXgvc2NyaXB0cy9pbXBv cnQvZWxwYS5zY20gICAgIHwgICA3ICstCiBndWl4L3NjcmlwdHMvaW1wb3J0L2dlbS5zY20gICAg ICB8ICAgNSArLQogZ3VpeC9zY3JpcHRzL2ltcG9ydC9oYWNrYWdlLnNjbSAgfCAgIDUgKy0KIGd1 aXgvc2NyaXB0cy9pbXBvcnQvb3BhbS5zY20gICAgIHwgICA1ICstCiBndWl4L3NjcmlwdHMvaW1w b3J0L3B5cGkuc2NtICAgICB8ICAgNSArLQogZ3VpeC9zY3JpcHRzL2ltcG9ydC9zdGFja2FnZS5z Y20gfCAgIDUgKy0KIGd1aXgvc2NyaXB0cy9pbXBvcnQvdGV4bGl2ZS5zY20gIHwgICAxIC0KIHRl c3RzL2NyYXRlLnNjbSAgICAgICAgICAgICAgICAgIHwgMzM0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIHRlc3RzL2dlbS5zY20gICAgICAgICAgICAgICAgICAgIHwgIDQxICsrLS0K IDEyIGZpbGVzIGNoYW5nZWQsIDQxNCBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9ndWl4L2ltcG9ydC91dGlscy5zY20gYi9ndWl4L2ltcG9ydC91dGlscy5zY20K aW5kZXggNDY5NGI2ZTdlZi4uOWVjY2YyMGIzOSAxMDA2NDQKLS0tIGEvZ3VpeC9pbXBvcnQvdXRp bHMuc2NtCisrKyBiL2d1aXgvaW1wb3J0L3V0aWxzLnNjbQpAQCAtMzksMTAgKzM5LDEwIEBACiAg ICM6dXNlLW1vZHVsZSAoaWNlLTkgcmRlbGltKQogICAjOnVzZS1tb2R1bGUgKGljZS05IHJlY2Vp dmUpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkg dmxpc3QpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTExKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0yNikKLSAgIzp1c2UtbW9kdWxl IChzcmZpIHNyZmktNDEpCiAgICM6ZXhwb3J0IChmYWN0b3JpemUtdXJpCiAKICAgICAgICAgICAg IGZsYXR0ZW4KQEAgLTM4MCwzNyArMzgwLDU4IEBAIHNlcGFyYXRlZCBieSBQUkVELiIKIChkZWZp bmUqIChyZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSByZXBvCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjOmtleSByZXBvLT5ndWl4LXBhY2thZ2UgZ3VpeC1uYW1lCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjOmFsbG93LW90aGVyLWtleXMpCi0gICJHZW5lcmF0ZSBhIHN0cmVh bSBvZiBwYWNrYWdlIGV4cHJlc3Npb25zIGZvciBQQUNLQUdFLU5BTUUgYW5kIGFsbCBpdHMKLWRl cGVuZGVuY2llcy4iCisgICJHZW5lcmF0ZSBhIGxpc3Qgb2YgcGFja2FnZSBleHByZXNzaW9ucyBm b3IgUEFDS0FHRS1OQU1FIGFuZCBhbGwgaXRzCitkZXBlbmRlbmNpZXMuICBUaGUgbGlzdCB3aWxs IGJlIGluIGEgdG9wb2xvZ2ljYWwgb3JkZXJpbmcsIGlmIG9uZSBleGlzdHMuIgogICAoZGVmaW5l IChleGlzdHM/IGRlcGVuZGVuY3kpCiAgICAgKG5vdCAobnVsbD8gKGZpbmQtcGFja2FnZXMtYnkt bmFtZSAoZ3VpeC1uYW1lIGRlcGVuZGVuY3kpKSkpKQotICAoZGVmaW5lIGluaXRpYWwtc3RhdGUg KGxpc3QgI2YgKGxpc3QgcGFja2FnZS1uYW1lKSAobGlzdCkpKQotICAoZGVmaW5lIChzdGVwIHN0 YXRlKQotICAgIChtYXRjaCBzdGF0ZQotICAgICAgKChwcmV2IChuZXh0IC4gcmVzdCkgZG9uZSkK LSAgICAgICAoZGVmaW5lIChoYW5kbGU/IGRlcCkKLSAgICAgICAgIChhbmQKLSAgICAgICAgICAg KG5vdCAoZXF1YWw/IGRlcCBuZXh0KSkKLSAgICAgICAgICAgKG5vdCAobWVtYmVyIGRlcCBkb25l KSkKLSAgICAgICAgICAgKG5vdCAoZXhpc3RzPyBkZXApKSkpCi0gICAgICAgKHJlY2VpdmUgKHBh Y2thZ2UgLiBkZXBlbmRlbmNpZXMpIChyZXBvLT5ndWl4LXBhY2thZ2UgbmV4dCByZXBvKQotICAg ICAgICAgKGxpc3QKLSAgICAgICAgICAgKGlmIHBhY2thZ2UgcGFja2FnZSAnKCkpIDs7IGRlZmF1 bHQgI2Ygb24gZmFpbHVyZSB3b3VsZCBpbnRlcnJ1cHQKLSAgICAgICAgICAgKGlmIHBhY2thZ2UK LSAgICAgICAgICAgICAobHNldC11bmlvbiBlcXVhbD8gcmVzdCAoZmlsdGVyIGhhbmRsZT8gKGNh ciBkZXBlbmRlbmNpZXMpKSkKLSAgICAgICAgICAgICByZXN0KQotICAgICAgICAgICAoY29ucyBu ZXh0IGRvbmUpKSkpCi0gICAgICAoKHByZXYgJygpIGRvbmUpCi0gICAgICAgKGxpc3QgI2YgJygp IGRvbmUpKSkpCi0KLSAgOzsgR2VuZXJhdGUgYSBsYXp5IHN0cmVhbSBvZiBwYWNrYWdlIGV4cHJl c3Npb25zIGZvciBhbGwgdW5rbm93bgotICA7OyBkZXBlbmRlbmNpZXMgaW4gdGhlIGdyYXBoLgot ICAoc3RyZWFtLXVuZm9sZAotICAgIDs7IG1hcDogcHJvZHVjZSBhIHN0cmVhbSBlbGVtZW50Ci0g ICAgKG1hdGNoLWxhbWJkYSAoKGxhdGVzdCBxdWV1ZSBkb25lKSBsYXRlc3QpKQotICAgIDs7IHBy ZWRpY2F0ZQotICAgIChtYXRjaC1sYW1iZGEgKChsYXRlc3QgcXVldWUgZG9uZSkgbGF0ZXN0KSkK LSAgICA7OyBnZW5lcmF0b3I6IHVwZGF0ZSB0aGUgcXVldWUKLSAgICBzdGVwCi0gICAgOzsgaW5p dGlhbCBzdGF0ZQotICAgIChzdGVwIGluaXRpYWwtc3RhdGUpKSkKKworICAoZGVmaW5lIGdyYXBo IHZsaXN0LW51bGwpCisgIChkZWZpbmUgcmVjaXBlLW1hcCB2bGlzdC1udWxsKQorICAoZGVmaW5l IHN0YWNrIChsaXN0IHBhY2thZ2UtbmFtZSkpCisgIChkZWZpbmUgYWNjdW0gJygpKQorCisgIChk ZWZpbmUgKHRvcG8tc29ydCBzdGFjayBncmFwaCByZWNpcGUtbWFwIGFjY3VtKQorICAgIChpZiAo bnVsbD8gc3RhY2spCisgICAgICAgIChyZXZlcnNlIGFjY3VtKQorICAgICAgICAobGV0ICgoaGVh ZC1wYWNrYWdlIChjYXIgc3RhY2spKSkKKyAgICAgICAgICAobWF0Y2ggKHZoYXNoLWFzc29jIGhl YWQtcGFja2FnZSBncmFwaCkKKyAgICAgICAgICAgICgoa2V5IC4gJygpKQorICAgICAgICAgICAg IChsZXQgKChuZXh0LXN0YWNrIChjZHIgc3RhY2spKQorICAgICAgICAgICAgICAgICAgIChuZXh0 LWFjY3VtIChjb25zIChjZHIgKHZoYXNoLWFzc29jIGhlYWQtcGFja2FnZSByZWNpcGUtbWFwKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2N1bSkpKQorICAgICAgICAg ICAgICAgKHRvcG8tc29ydCBuZXh0LXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdy YXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS1tYXAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV4dC1hY2N1bSkpKQorICAgICAgICAgICAgKChrZXkgLiAoZGVwIC4gcmVz dCkpCisgICAgICAgICAgICAgKGRlZmluZSAoaGFuZGxlPyBkZXApCisgICAgICAgICAgICAgICAo YW5kCisgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWw/IGRlcCBoZWFkLXBhY2thZ2UpKQorICAg ICAgICAgICAgICAgIChub3QgKHZoYXNoLWFzc29jIGRlcCByZWNpcGUtbWFwKSkKKyAgICAgICAg ICAgICAgICAobm90IChleGlzdHM/IGRlcCkpKSkKKyAgICAgICAgICAgICAobGV0KiAoKG5leHQt c3RhY2sgKGlmIChoYW5kbGU/IGRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb25zIGRlcCBzdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YWNrKSkKKyAgICAgICAgICAgICAgICAgICAgKG5leHQtZ3JhcGggKHZoYXNoLWNvbnMga2V5 IHJlc3QgZ3JhcGgpKSkKKyAgICAgICAgICAgICAgICh0b3BvLXNvcnQgbmV4dC1zdGFjaworICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWdyYXBoCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlY2lwZS1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjdW0pKSkKKyAgICAg ICAgICAgICgjZgorICAgICAgICAgICAgIChyZWNlaXZlIChwYWNrYWdlLXJlY2lwZSAuIGRlcGVu ZGVuY2llcykgKHJlcG8tPmd1aXgtcGFja2FnZSBoZWFkLXBhY2thZ2UgcmVwbykKKyAgICAgICAg ICAgICAgIChsZXQgKChuZXh0LWdyYXBoICh2aGFzaC1jb25zIGhlYWQtcGFja2FnZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGRlcGVuZGVuY2ll cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlcCAu IHJlc3QpIGRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCgpICcoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBncmFwaCkpCisgICAgICAgICAgICAgICAgICAgICAobmV4dC1yZWNpcGUtbWFwICh2aGFzaC1j b25zIGhlYWQtcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhY2thZ2UtcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlY2lwZS1tYXApKSkKKyAgICAgICAgICAgICAgICAgKHRvcG8t c29ydCBzdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtZ3JhcGgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXh0LXJlY2lwZS1tYXAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhY2N1bSkpKSkpKSkpCisKKyAgKHRvcG8tc29ydCBzdGFjayBncmFwaCByZWNp cGUtbWFwIGFjY3VtKSkKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvY3Jhbi5zY20g Yi9ndWl4L3NjcmlwdHMvaW1wb3J0L2NyYW4uc2NtCmluZGV4IGI2NTkyZjc4YTkuLmQ2ZjM3MWVm M2EgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvY3Jhbi5zY20KKysrIGIvZ3VpeC9z Y3JpcHRzL2ltcG9ydC9jcmFuLnNjbQpAQCAtMjcsNyArMjcsNiBAQAogICAjOnVzZS1tb2R1bGUg KHNyZmkgc3JmaS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9k dWxlIChzcmZpIHNyZmktMzcpCi0gICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVz ZS1tb2R1bGUgKGljZS05IG1hdGNoKQogICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAg IzpleHBvcnQgKGd1aXgtaW1wb3J0LWNyYW4pKQpAQCAtOTgsMTAgKzk3LDggQEAgSW1wb3J0IGFu ZCBjb252ZXJ0IHRoZSBDUkFOIHBhY2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5cbiIpKQogICAgICAg IChpZiAoYXNzb2MtcmVmIG9wdHMgJ3JlY3Vyc2l2ZSkKICAgICAgICAgICAgOzsgUmVjdXJzaXZl IGltcG9ydAogICAgICAgICAgICAobWFwIHBhY2thZ2UtPmRlZmluaXRpb24KLSAgICAgICAgICAg ICAgICAocmV2ZXJzZQotICAgICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAgICAgICAg ICAgICAgICAoY3Jhbi1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGFzc29jLXJlZiBvcHRzICdyZXBvKSAn Y3JhbikpKSkpCisgICAgICAgICAgICAgICAgKGNyYW4tcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdl LW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoYXNzb2Mt cmVmIG9wdHMgJ3JlcG8pICdjcmFuKSkpCiAgICAgICAgICAgIDs7IFNpbmdsZSBpbXBvcnQKICAg ICAgICAgICAgKGxldCAoKHNleHAgKGNyYW4tPmd1aXgtcGFja2FnZSBwYWNrYWdlLW5hbWUKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGFzc29jLXJlZiBv cHRzICdyZXBvKSAnY3JhbikpKSkKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvY3Jh dGUuc2NtIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9jcmF0ZS5zY20KaW5kZXggNDY5MGNjZWI0ZC4u OTIwMzRkYWIzYyAxMDA2NDQKLS0tIGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9jcmF0ZS5zY20KKysr IGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9jcmF0ZS5zY20KQEAgLTI4LDcgKzI4LDYgQEAKICAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAg ICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00 MSkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBm b3JtYXQpCiAgICM6ZXhwb3J0IChndWl4LWltcG9ydC1jcmF0ZSkpCkBAIC0xMDEsOSArMTAwLDcg QEAgSW1wb3J0IGFuZCBjb252ZXJ0IHRoZSBjcmF0ZS5pbyBwYWNrYWdlIGZvciBQQUNLQUdFLU5B TUUuXG4iKSkKICAgICAgICAgICAgICAgICAgICBgKGRlZmluZS1wdWJsaWMgLChzdHJpbmctPnN5 bWJvbCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICxwa2cpKQogICAgICAgICAgICAgICAg ICAgKF8gI2YpKQotICAgICAgICAgICAgICAgIChyZXZlcnNlCi0gICAgICAgICAgICAgICAgIChz dHJlYW0tPmxpc3QKLSAgICAgICAgICAgICAgICAgIChjcmF0ZS1yZWN1cnNpdmUtaW1wb3J0IG5h bWUpKSkpCisgICAgICAgICAgICAgICAgKGNyYXRlLXJlY3Vyc2l2ZS1pbXBvcnQgbmFtZSkpCiAg ICAgICAgICAgIChsZXQgKChzZXhwIChjcmF0ZS0+Z3VpeC1wYWNrYWdlIG5hbWUgdmVyc2lvbikp KQogICAgICAgICAgICAgICh1bmxlc3Mgc2V4cAogICAgICAgICAgICAgICAgKGxlYXZlIChHXyAi ZmFpbGVkIHRvIGRvd25sb2FkIG1ldGEtZGF0YSBmb3IgcGFja2FnZSAnfmEnfiUiKQpkaWZmIC0t Z2l0IGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9lbHBhLnNjbSBiL2d1aXgvc2NyaXB0cy9pbXBvcnQv ZWxwYS5zY20KaW5kZXggZjFlZDUwMTZiYS4uZDI3MGQyYjRiYyAxMDA2NDQKLS0tIGEvZ3VpeC9z Y3JpcHRzL2ltcG9ydC9lbHBhLnNjbQorKysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0L2VscGEuc2Nt CkBAIC0yNyw3ICsyNyw2IEBACiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNl LW1vZHVsZSAoc3JmaSBzcmZpLTExKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0zNykKLSAg Izp1c2UtbW9kdWxlIChzcmZpIHNyZmktNDEpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gp CiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgZm9ybWF0KQogICAjOmV4cG9ydCAoZ3VpeC1pbXBvcnQt ZWxwYSkpCkBAIC0xMDEsMTAgKzEwMCw4IEBAIEltcG9ydCB0aGUgbGF0ZXN0IHBhY2thZ2UgbmFt ZWQgUEFDS0FHRS1OQU1FIGZyb20gYW4gRUxQQSByZXBvc2l0b3J5LlxuIikpCiAgICAgICAgICAg ICAgICAgICAgYChkZWZpbmUtcHVibGljICwoc3RyaW5nLT5zeW1ib2wgbmFtZSkKICAgICAgICAg ICAgICAgICAgICAgICAscGtnKSkKICAgICAgICAgICAgICAgICAgIChfICNmKSkKLSAgICAgICAg ICAgICAgICAocmV2ZXJzZQotICAgICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAgICAg ICAgICAgICAgICAoZWxwYS1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKGFzc29jLXJlZiBvcHRzICdyZXBv KSAnZ251KSkpKSkKKyAgICAgICAgICAgICAgICAoZWxwYS1yZWN1cnNpdmUtaW1wb3J0IHBhY2th Z2UtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChhc3Nv Yy1yZWYgb3B0cyAncmVwbykgJ2dudSkpKQogICAgICAgICAgICAobGV0ICgoc2V4cCAoZWxwYS0+ Z3VpeC1wYWNrYWdlIHBhY2thZ2UtbmFtZSAoYXNzb2MtcmVmIG9wdHMgJ3JlcG8pKSkpCiAgICAg ICAgICAgICAgKHVubGVzcyBzZXhwCiAgICAgICAgICAgICAgICAobGVhdmUgKEdfICJmYWlsZWQg dG8gZG93bmxvYWQgcGFja2FnZSAnfmEnfiUiKSBwYWNrYWdlLW5hbWUpKQpkaWZmIC0tZ2l0IGEv Z3VpeC9zY3JpcHRzL2ltcG9ydC9nZW0uc2NtIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9nZW0uc2Nt CmluZGV4IGI2ZDljY2FhZTQuLmM2NDU5NmI1MTQgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9p bXBvcnQvZ2VtLnNjbQorKysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0L2dlbS5zY20KQEAgLTI2LDcg KzI2LDYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChz cmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1 bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2Ut bW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6ZXhwb3J0IChndWl4LWltcG9ydC1nZW0pKQpAQCAt OTUsOSArOTQsNyBAQCBJbXBvcnQgYW5kIGNvbnZlcnQgdGhlIFJ1YnlHZW1zIHBhY2thZ2UgZm9y IFBBQ0tBR0UtTkFNRS5cbiIpKQogICAgICAgICAgICAgICAgICAgIGAoZGVmaW5lLXB1YmxpYyAs KHN0cmluZy0+c3ltYm9sIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgLHBrZykpCiAgICAg ICAgICAgICAgICAgICAoXyAjZikpCi0gICAgICAgICAgICAgICAgKHJldmVyc2UKLSAgICAgICAg ICAgICAgICAgKHN0cmVhbS0+bGlzdAotICAgICAgICAgICAgICAgICAgKGdlbS1yZWN1cnNpdmUt aW1wb3J0IHBhY2thZ2UtbmFtZSAncnVieWdlbXMpKSkpCisgICAgICAgICAgICAgICAgKGdlbS1y ZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSAncnVieWdlbXMpKQogICAgICAgICAgICAobGV0 ICgoc2V4cCAoZ2VtLT5ndWl4LXBhY2thZ2UgcGFja2FnZS1uYW1lKSkpCiAgICAgICAgICAgICAg KHVubGVzcyBzZXhwCiAgICAgICAgICAgICAgICAobGVhdmUgKEdfICJmYWlsZWQgdG8gZG93bmxv YWQgbWV0YS1kYXRhIGZvciBwYWNrYWdlICd+YSd+JSIpCmRpZmYgLS1naXQgYS9ndWl4L3Njcmlw dHMvaW1wb3J0L2hhY2thZ2Uuc2NtIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9oYWNrYWdlLnNjbQpp bmRleCBmNGFhYzYxMDc4Li43MTBlNzg2YTc5IDEwMDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1w b3J0L2hhY2thZ2Uuc2NtCisrKyBiL2d1aXgvc2NyaXB0cy9pbXBvcnQvaGFja2FnZS5zY20KQEAg LTI3LDcgKzI3LDYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9k dWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3KQotICAjOnVz ZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKICAg Izp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6ZXhwb3J0IChndWl4LWltcG9ydC1oYWNr YWdlKSkKQEAgLTEzMCw5ICsxMjksNyBAQCB2ZXJzaW9uLlxuIikpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGAoZGVmaW5lLXB1YmxpYyAsKHN0cmluZy0+c3ltYm9sIG5hbWUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwa2cpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChfICNmKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHJldmVyc2UKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzdHJlYW0tPmxpc3QKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYXBwbHkgaGFja2FnZS1yZWN1cnNpdmUtaW1wb3J0IGFyZ3VtZW50cykpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5IGhhY2thZ2UtcmVjdXJzaXZlLWltcG9ydCBh cmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgICAgOzsgU2luZ2xlIGltcG9ydAogICAgICAg ICAgICAgICAgICAgICAgKGFwcGx5IGhhY2thZ2UtPmd1aXgtcGFja2FnZSBhcmd1bWVudHMpKSkp CiAgICAgICAodW5sZXNzIHNleHAgKGVycm9yLWZuKSkKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0 cy9pbXBvcnQvb3BhbS5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0L29wYW0uc2NtCmluZGV4IDJk MjQ5YTIxM2YuLjIwZGExNDM3ZmUgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvb3Bh bS5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9vcGFtLnNjbQpAQCAtMjUsNyArMjUsNiBA QAogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3Jm aS0xMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMzcpCi0gICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTQxKQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQogICAjOnVzZS1tb2R1bGUg KGljZS05IGZvcm1hdCkKICAgIzpleHBvcnQgKGd1aXgtaW1wb3J0LW9wYW0pKQpAQCAtOTQsOSAr OTMsNyBAQCBJbXBvcnQgYW5kIGNvbnZlcnQgdGhlIG9wYW0gcGFja2FnZSBmb3IgUEFDS0FHRS1O QU1FLlxuIikpCiAgICAgICAgICAgICAgICAgICAgYChkZWZpbmUtcHVibGljICwoc3RyaW5nLT5z eW1ib2wgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAscGtnKSkKICAgICAgICAgICAgICAg ICAgIChfICNmKSkKLSAgICAgICAgICAgICAgICAocmV2ZXJzZQotICAgICAgICAgICAgICAgICAo c3RyZWFtLT5saXN0Ci0gICAgICAgICAgICAgICAgICAob3BhbS1yZWN1cnNpdmUtaW1wb3J0IHBh Y2thZ2UtbmFtZSkpKSkKKyAgICAgICAgICAgICAgICAob3BhbS1yZWN1cnNpdmUtaW1wb3J0IHBh Y2thZ2UtbmFtZSkpCiAgICAgICAgICAgIDs7IFNpbmdsZSBpbXBvcnQKICAgICAgICAgICAgKGxl dCAoKHNleHAgKG9wYW0tPmd1aXgtcGFja2FnZSBwYWNrYWdlLW5hbWUpKSkKICAgICAgICAgICAg ICAodW5sZXNzIHNleHAKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvcHlwaS5zY20g Yi9ndWl4L3NjcmlwdHMvaW1wb3J0L3B5cGkuc2NtCmluZGV4IDdiZDgzODE4YmEuLjMzMTY3MTc0 ZTIgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvcHlwaS5zY20KKysrIGIvZ3VpeC9z Y3JpcHRzL2ltcG9ydC9weXBpLnNjbQpAQCAtMjYsNyArMjYsNiBAQAogICAjOnVzZS1tb2R1bGUg KHNyZmkgc3JmaS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9k dWxlIChzcmZpIHNyZmktMzcpCi0gICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVz ZS1tb2R1bGUgKGljZS05IG1hdGNoKQogICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAg IzpleHBvcnQgKGd1aXgtaW1wb3J0LXB5cGkpKQpAQCAtOTUsOSArOTQsNyBAQCBJbXBvcnQgYW5k IGNvbnZlcnQgdGhlIFB5UEkgcGFja2FnZSBmb3IgUEFDS0FHRS1OQU1FLlxuIikpCiAgICAgICAg ICAgICAgICAgICAgYChkZWZpbmUtcHVibGljICwoc3RyaW5nLT5zeW1ib2wgbmFtZSkKICAgICAg ICAgICAgICAgICAgICAgICAscGtnKSkKICAgICAgICAgICAgICAgICAgIChfICNmKSkKLSAgICAg ICAgICAgICAgICAocmV2ZXJzZQotICAgICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAg ICAgICAgICAgICAgICAocHlwaS1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSkpKSkKKyAg ICAgICAgICAgICAgICAocHlwaS1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSkpCiAgICAg ICAgICAgIDs7IFNpbmdsZSBpbXBvcnQKICAgICAgICAgICAgKGxldCAoKHNleHAgKHB5cGktPmd1 aXgtcGFja2FnZSBwYWNrYWdlLW5hbWUpKSkKICAgICAgICAgICAgICAodW5sZXNzIHNleHAKZGlm ZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvc3RhY2thZ2Uuc2NtIGIvZ3VpeC9zY3JpcHRz L2ltcG9ydC9zdGFja2FnZS5zY20KaW5kZXggYjRiMTI1ODFiZi4uZDc3MzI4ZGNiZiAxMDA2NDQK LS0tIGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9zdGFja2FnZS5zY20KKysrIGIvZ3VpeC9zY3JpcHRz L2ltcG9ydC9zdGFja2FnZS5zY20KQEAgLTI3LDcgKzI3LDYgQEAKICAgIzp1c2UtbW9kdWxlIChz cmZpIHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2Ut bW9kdWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6 ZXhwb3J0IChndWl4LWltcG9ydC1zdGFja2FnZSkpCkBAIC0xMTAsOSArMTA5LDcgQEAgSW1wb3J0 IGFuZCBjb252ZXJ0IHRoZSBMVFMgU3RhY2thZ2UgcGFja2FnZSBmb3IgUEFDS0FHRS1OQU1FLlxu IikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoZGVmaW5lLXB1YmxpYyAsKHN0cmlu Zy0+c3ltYm9sIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwa2cpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICNmKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgKHJldmVyc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJlYW0tPmxpc3QK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgc3RhY2thZ2UtcmVjdXJzaXZlLWlt cG9ydCBhcmd1bWVudHMpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSBzdGFj a2FnZS1yZWN1cnNpdmUtaW1wb3J0IGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICA7 OyBTaW5nbGUgaW1wb3J0CiAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgc3RhY2thZ2UtPmd1 aXgtcGFja2FnZSBhcmd1bWVudHMpKSkpCiAgICAgICAodW5sZXNzIHNleHAgKGVycm9yLWZuKSkK ZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvdGV4bGl2ZS5zY20gYi9ndWl4L3Njcmlw dHMvaW1wb3J0L3RleGxpdmUuc2NtCmluZGV4IDFjY2VlZTcwNTEuLmUzMWM1NmQwY2UgMTAwNjQ0 Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvdGV4bGl2ZS5zY20KKysrIGIvZ3VpeC9zY3JpcHRz L2ltcG9ydC90ZXhsaXZlLnNjbQpAQCAtMjUsNyArMjUsNiBAQAogICAjOnVzZS1tb2R1bGUgKHNy Zmkgc3JmaS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9kdWxl IChzcmZpIHNyZmktMzcpCi0gICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVzZS1t b2R1bGUgKGljZS05IG1hdGNoKQogICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAgIzpl eHBvcnQgKGd1aXgtaW1wb3J0LXRleGxpdmUpKQpkaWZmIC0tZ2l0IGEvdGVzdHMvY3JhdGUuc2Nt IGIvdGVzdHMvY3JhdGUuc2NtCmluZGV4IGMxNDg2MmFkOWYuLmQ1NWM4MTRiY2YgMTAwNjQ0Ci0t LSBhL3Rlc3RzL2NyYXRlLnNjbQorKysgYi90ZXN0cy9jcmF0ZS5zY20KQEAgLTI4LDcgKzI4LDcg QEAKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNy ZmktNjQpKQogCi0oZGVmaW5lIHRlc3QtY3JhdGUKKyhkZWZpbmUgdGVzdC1mb28tY3JhdGUKICAg InsKICAgXCJjcmF0ZVwiOiB7CiAgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCkBAIC01 MCw3ICs1MCw3IEBACiAgIH0KIH0iKQogCi0oZGVmaW5lIHRlc3QtZGVwZW5kZW5jaWVzCisoZGVm aW5lIHRlc3QtZm9vLWRlcGVuZGVuY2llcwogICAiewogICBcImRlcGVuZGVuY2llc1wiOiBbCiAg ICAgIHsKQEAgLTYwLDYgKzYwLDE3NiBAQAogICBdCiB9IikKIAorKGRlZmluZSB0ZXN0LXJvb3Qt Y3JhdGUKKyAgInsKKyAgXCJjcmF0ZVwiOiB7CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4w XCIsCisgICAgXCJuYW1lXCI6IFwicm9vdFwiLAorICAgIFwiZGVzY3JpcHRpb25cIjogXCJzdW1t YXJ5XCIsCisgICAgXCJob21lcGFnZVwiOiBcImh0dHA6Ly9leGFtcGxlLmNvbVwiLAorICAgIFwi cmVwb3NpdG9yeVwiOiBcImh0dHA6Ly9leGFtcGxlLmNvbVwiLAorICAgIFwia2V5d29yZHNcIjog W1wiZHVtbXlcIiBcInRlc3RcIl0sCisgICAgXCJjYXRlZ29yaWVzXCI6IFtcInRlc3RcIl0KKyAg ICBcImFjdHVhbF92ZXJzaW9uc1wiOiBbCisgICAgICB7IFwiaWRcIjogXCJmb29cIiwKKyAgICAg ICAgXCJudW1cIjogXCIxLjAuMFwiLAorICAgICAgICBcImxpY2Vuc2VcIjogXCJNSVQgT1IgQXBh Y2hlLTIuMFwiLAorICAgICAgICBcImxpbmtzXCI6IHsKKyAgICAgICAgICBcImRlcGVuZGVuY2ll c1wiOiBcIi9hcGkvdjEvY3JhdGVzL3Jvb3QvMS4wLjAvZGVwZW5kZW5jaWVzXCIKKyAgICAgICAg fQorICAgICAgfQorICAgIF0KKyAgfQorfSIpCisKKyhkZWZpbmUgdGVzdC1yb290LWRlcGVuZGVu Y2llcworICAieworICBcImRlcGVuZGVuY2llc1wiOiBbCisgICAgIHsKKyAgICAgICBcImNyYXRl X2lkXCI6IFwiaW50ZXJtZWRpYXRlLTFcIiwKKyAgICAgICBcImtpbmRcIjogXCJub3JtYWxcIiwK KyAgICAgfSwKKyAgICAgeworICAgICAgIFwiY3JhdGVfaWRcIjogXCJpbnRlcm1lZGlhdGUtMlwi LAorICAgICAgIFwia2luZFwiOiBcIm5vcm1hbFwiLAorICAgICB9CisgICAgIHsKKyAgICAgICBc ImNyYXRlX2lkXCI6IFwibGVhZi1hbGljZVwiLAorICAgICAgIFwia2luZFwiOiBcIm5vcm1hbFwi LAorICAgICB9LAorICAgICB7CisgICAgICAgXCJjcmF0ZV9pZFwiOiBcImxlYWYtYm9iXCIsCisg ICAgICAgXCJraW5kXCI6IFwibm9ybWFsXCIsCisgICAgIH0sCisgIF0KK30iKQorCisoZGVmaW5l IHRlc3QtaW50ZXJtZWRpYXRlLTEtY3JhdGUKKyAgInsKKyAgXCJjcmF0ZVwiOiB7CisgICAgXCJt YXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCisgICAgXCJuYW1lXCI6IFwiaW50ZXJtZWRpYXRlLTFc IiwKKyAgICBcImRlc2NyaXB0aW9uXCI6IFwic3VtbWFyeVwiLAorICAgIFwiaG9tZXBhZ2VcIjog XCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcInJlcG9zaXRvcnlcIjogXCJodHRwOi8vZXhh bXBsZS5jb21cIiwKKyAgICBcImtleXdvcmRzXCI6IFtcImR1bW15XCIgXCJ0ZXN0XCJdLAorICAg IFwiY2F0ZWdvcmllc1wiOiBbXCJ0ZXN0XCJdCisgICAgXCJhY3R1YWxfdmVyc2lvbnNcIjogWwor ICAgICAgeyBcImlkXCI6IFwiaW50ZXJtZWRpYXRlLTFcIiwKKyAgICAgICAgXCJudW1cIjogXCIx LjAuMFwiLAorICAgICAgICBcImxpY2Vuc2VcIjogXCJNSVQgT1IgQXBhY2hlLTIuMFwiLAorICAg ICAgICBcImxpbmtzXCI6IHsKKyAgICAgICAgICBcImRlcGVuZGVuY2llc1wiOiBcIi9hcGkvdjEv Y3JhdGVzL2ludGVybWVkaWF0ZS0xLzEuMC4wL2RlcGVuZGVuY2llc1wiCisgICAgICAgIH0KKyAg ICAgIH0KKyAgICBdCisgIH0KK30iKQorCisoZGVmaW5lIHRlc3QtaW50ZXJtZWRpYXRlLTEtZGVw ZW5kZW5jaWVzCisgICJ7CisgIFwiZGVwZW5kZW5jaWVzXCI6IFsKKyAgICAgeworICAgICAgIFwi Y3JhdGVfaWRcIjogXCJpbnRlcm1lZGlhdGUtMlwiLAorICAgICAgIFwia2luZFwiOiBcIm5vcm1h bFwiLAorICAgICB9LAorICAgICB7CisgICAgICAgXCJjcmF0ZV9pZFwiOiBcImxlYWYtYWxpY2Vc IiwKKyAgICAgICBcImtpbmRcIjogXCJub3JtYWxcIiwKKyAgICAgfSwKKyAgICAgeworICAgICAg IFwiY3JhdGVfaWRcIjogXCJsZWFmLWJvYlwiLAorICAgICAgIFwia2luZFwiOiBcIm5vcm1hbFwi LAorICAgICB9CisgIF0KK30iKQorCisoZGVmaW5lIHRlc3QtaW50ZXJtZWRpYXRlLTItY3JhdGUK KyAgInsKKyAgXCJjcmF0ZVwiOiB7CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCisg ICAgXCJuYW1lXCI6IFwiaW50ZXJtZWRpYXRlLTJcIiwKKyAgICBcImRlc2NyaXB0aW9uXCI6IFwi c3VtbWFyeVwiLAorICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAg ICBcInJlcG9zaXRvcnlcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcImtleXdvcmRz XCI6IFtcImR1bW15XCIgXCJ0ZXN0XCJdLAorICAgIFwiY2F0ZWdvcmllc1wiOiBbXCJ0ZXN0XCJd CisgICAgXCJhY3R1YWxfdmVyc2lvbnNcIjogWworICAgICAgeyBcImlkXCI6IFwiaW50ZXJtZWRp YXRlLTJcIiwKKyAgICAgICAgXCJudW1cIjogXCIxLjAuMFwiLAorICAgICAgICBcImxpY2Vuc2Vc IjogXCJNSVQgT1IgQXBhY2hlLTIuMFwiLAorICAgICAgICBcImxpbmtzXCI6IHsKKyAgICAgICAg ICBcImRlcGVuZGVuY2llc1wiOiBcIi9hcGkvdjEvY3JhdGVzL2ludGVybWVkaWF0ZS0yLzEuMC4w L2RlcGVuZGVuY2llc1wiCisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdCisgIH0KK30iKQorCiso ZGVmaW5lIHRlc3QtaW50ZXJtZWRpYXRlLTItZGVwZW5kZW5jaWVzCisgICJ7CisgIFwiZGVwZW5k ZW5jaWVzXCI6IFsKKyAgICAgeworICAgICAgIFwiY3JhdGVfaWRcIjogXCJsZWFmLWJvYlwiLAor ICAgICAgIFwia2luZFwiOiBcIm5vcm1hbFwiLAorICAgICB9LAorICBdCit9IikKKworKGRlZmlu ZSB0ZXN0LWxlYWYtYWxpY2UtY3JhdGUKKyAgInsKKyAgXCJjcmF0ZVwiOiB7CisgICAgXCJtYXhf dmVyc2lvblwiOiBcIjEuMC4wXCIsCisgICAgXCJuYW1lXCI6IFwibGVhZi1hbGljZVwiLAorICAg IFwiZGVzY3JpcHRpb25cIjogXCJzdW1tYXJ5XCIsCisgICAgXCJob21lcGFnZVwiOiBcImh0dHA6 Ly9leGFtcGxlLmNvbVwiLAorICAgIFwicmVwb3NpdG9yeVwiOiBcImh0dHA6Ly9leGFtcGxlLmNv bVwiLAorICAgIFwia2V5d29yZHNcIjogW1wiZHVtbXlcIiBcInRlc3RcIl0sCisgICAgXCJjYXRl Z29yaWVzXCI6IFtcInRlc3RcIl0KKyAgICBcImFjdHVhbF92ZXJzaW9uc1wiOiBbCisgICAgICB7 IFwiaWRcIjogXCJsZWFmLWFsaWNlXCIsCisgICAgICAgIFwibnVtXCI6IFwiMS4wLjBcIiwKKyAg ICAgICAgXCJsaWNlbnNlXCI6IFwiTUlUIE9SIEFwYWNoZS0yLjBcIiwKKyAgICAgICAgXCJsaW5r c1wiOiB7CisgICAgICAgICAgXCJkZXBlbmRlbmNpZXNcIjogXCIvYXBpL3YxL2NyYXRlcy9sZWFm LWFsaWNlLzEuMC4wL2RlcGVuZGVuY2llc1wiCisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdCisg IH0KK30iKQorCisoZGVmaW5lIHRlc3QtbGVhZi1hbGljZS1kZXBlbmRlbmNpZXMKKyAgInsKKyAg XCJkZXBlbmRlbmNpZXNcIjogW10KK30iKQorCisoZGVmaW5lIHRlc3QtbGVhZi1ib2ItY3JhdGUK KyAgInsKKyAgXCJjcmF0ZVwiOiB7CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCisg ICAgXCJuYW1lXCI6IFwibGVhZi1ib2JcIiwKKyAgICBcImRlc2NyaXB0aW9uXCI6IFwic3VtbWFy eVwiLAorICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcInJl cG9zaXRvcnlcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcImtleXdvcmRzXCI6IFtc ImR1bW15XCIgXCJ0ZXN0XCJdLAorICAgIFwiY2F0ZWdvcmllc1wiOiBbXCJ0ZXN0XCJdCisgICAg XCJhY3R1YWxfdmVyc2lvbnNcIjogWworICAgICAgeyBcImlkXCI6IFwibGVhZi1ib2JcIiwKKyAg ICAgICAgXCJudW1cIjogXCIxLjAuMFwiLAorICAgICAgICBcImxpY2Vuc2VcIjogXCJNSVQgT1Ig QXBhY2hlLTIuMFwiLAorICAgICAgICBcImxpbmtzXCI6IHsKKyAgICAgICAgICBcImRlcGVuZGVu Y2llc1wiOiBcIi9hcGkvdjEvY3JhdGVzL2xlYWYtYm9iLzEuMC4wL2RlcGVuZGVuY2llc1wiCisg ICAgICAgIH0KKyAgICAgIH0KKyAgICBdCisgIH0KK30iKQorCisoZGVmaW5lIHRlc3QtbGVhZi1i b2ItZGVwZW5kZW5jaWVzCisgICJ7CisgIFwiZGVwZW5kZW5jaWVzXCI6IFtdCit9IikKKwogKGRl ZmluZSB0ZXN0LXNvdXJjZS1oYXNoCiAgICIiKQogCkBAIC03OSwxNCArMjQ5LDE0IEBACiAgICAg ICAgICAobGFtYmRhICh1cmwgLiByZXN0KQogICAgICAgICAgICAobWF0Y2ggdXJsCiAgICAgICAg ICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2ZvbyIKLSAgICAgICAgICAg ICAgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtY3JhdGUpKQorICAgICAgICAgICAgICAob3Blbi1p bnB1dC1zdHJpbmcgdGVzdC1mb28tY3JhdGUpKQogICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0 ZXMuaW8vYXBpL3YxL2NyYXRlcy9mb28vMS4wLjAvZG93bmxvYWQiCiAgICAgICAgICAgICAgIChz ZXQhIHRlc3Qtc291cmNlLWhhc2gKICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+bml4LWJh c2UzMi1zdHJpbmcKICAgICAgICAgICAgICAgICAgKHNoYTI1NiAoc3RyaW5nLT5ieXRldmVjdG9y ICJlbXB0eSBmaWxlXG4iICJ1dGYtOCIpKSkpCiAgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0 cmluZyAiZW1wdHkgZmlsZVxuIikpCiAgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9h cGkvdjEvY3JhdGVzL2Zvby8xLjAuMC9kZXBlbmRlbmNpZXMiCi0gICAgICAgICAgICAgIChvcGVu LWlucHV0LXN0cmluZyB0ZXN0LWRlcGVuZGVuY2llcykpCisgICAgICAgICAgICAgIChvcGVuLWlu cHV0LXN0cmluZyB0ZXN0LWZvby1kZXBlbmRlbmNpZXMpKQogICAgICAgICAgICAgIChfIChlcnJv ciAiVW5leHBlY3RlZCBVUkw6ICIgdXJsKSkpKSkKICAgICAobWF0Y2ggKGNyYXRlLT5ndWl4LXBh Y2thZ2UgImZvbyIpCiAgICAgICAoKCdwYWNrYWdlCkBAIC0xMTEsNCArMjgxLDE2MCBAQAogICAg ICAgKHgKICAgICAgICAocGsgJ2ZhaWwgeCAjZikpKSkpCiAKKyh0ZXN0LWFzc2VydCAiY2FyZ28t cmVjdXJzaXZlLWltcG9ydCIKKyAgOzsgUmVwbGFjZSBuZXR3b3JrIHJlc291cmNlcyB3aXRoIHNh bXBsZSBkYXRhLgorICAobW9jayAoKGd1aXggaHR0cC1jbGllbnQpIGh0dHAtZmV0Y2gKKyAgICAg ICAgIChsYW1iZGEgKHVybCAuIHJlc3QpCisgICAgICAgICAgIChtYXRjaCB1cmwKKyAgICAgICAg ICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0ZXMvcm9vdCIKKyAgICAgICAgICAg ICAgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3Qtcm9vdC1jcmF0ZSkpCisgICAgICAgICAgICAgKCJo dHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL3Jvb3QvMS4wLjAvZG93bmxvYWQiCisgICAg ICAgICAgICAgIChzZXQhIHRlc3Qtc291cmNlLWhhc2gKKyAgICAgICAgICAgICAgICAgICAgKGJ5 dGV2ZWN0b3ItPm5peC1iYXNlMzItc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAoc2hhMjU2 IChzdHJpbmctPmJ5dGV2ZWN0b3IgImVtcHR5IGZpbGVcbiIgInV0Zi04IikpKSkKKyAgICAgICAg ICAgICAgKG9wZW4taW5wdXQtc3RyaW5nICJlbXB0eSBmaWxlXG4iKSkKKyAgICAgICAgICAgICAo Imh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0ZXMvcm9vdC8xLjAuMC9kZXBlbmRlbmNpZXMi CisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LXJvb3QtZGVwZW5kZW5jaWVz KSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0ZXMvaW50ZXJt ZWRpYXRlLTEiCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWludGVybWVk aWF0ZS0xLWNyYXRlKSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9j cmF0ZXMvaW50ZXJtZWRpYXRlLTEvMS4wLjAvZG93bmxvYWQiCisgICAgICAgICAgICAgIChzZXQh IHRlc3Qtc291cmNlLWhhc2gKKyAgICAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItPm5peC1i YXNlMzItc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAoc2hhMjU2IChzdHJpbmctPmJ5dGV2 ZWN0b3IgImVtcHR5IGZpbGVcbiIgInV0Zi04IikpKSkKKyAgICAgICAgICAgICAgKG9wZW4taW5w dXQtc3RyaW5nICJlbXB0eSBmaWxlXG4iKSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVz LmlvL2FwaS92MS9jcmF0ZXMvaW50ZXJtZWRpYXRlLTEvMS4wLjAvZGVwZW5kZW5jaWVzIgorICAg ICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1pbnRlcm1lZGlhdGUtMS1kZXBlbmRl bmNpZXMpKQorICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9p bnRlcm1lZGlhdGUtMiIKKyAgICAgICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtaW50 ZXJtZWRpYXRlLTItY3JhdGUpKQorICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBp L3YxL2NyYXRlcy9pbnRlcm1lZGlhdGUtMi8xLjAuMC9kb3dubG9hZCIKKyAgICAgICAgICAgICAg KHNldCEgdGVzdC1zb3VyY2UtaGFzaAorICAgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+ bml4LWJhc2UzMi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgIChzaGEyNTYgKHN0cmluZy0+ Ynl0ZXZlY3RvciAiZW1wdHkgZmlsZVxuIiAidXRmLTgiKSkpKQorICAgICAgICAgICAgICAob3Bl bi1pbnB1dC1zdHJpbmcgImVtcHR5IGZpbGVcbiIpKQorICAgICAgICAgICAgICgiaHR0cHM6Ly9j cmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9pbnRlcm1lZGlhdGUtMi8xLjAuMC9kZXBlbmRlbmNpZXMi CisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWludGVybWVkaWF0ZS0yLWRl cGVuZGVuY2llcykpCisgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3Jh dGVzL2xlYWYtYWxpY2UiCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWxl YWYtYWxpY2UtY3JhdGUpKQorICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3Yx L2NyYXRlcy9sZWFmLWFsaWNlLzEuMC4wL2Rvd25sb2FkIgorICAgICAgICAgICAgICAoc2V0ISB0 ZXN0LXNvdXJjZS1oYXNoCisgICAgICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5uaXgtYmFz ZTMyLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgKHNoYTI1NiAoc3RyaW5nLT5ieXRldmVj dG9yICJlbXB0eSBmaWxlXG4iICJ1dGYtOCIpKSkpCisgICAgICAgICAgICAgIChvcGVuLWlucHV0 LXN0cmluZyAiZW1wdHkgZmlsZVxuIikpCisgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5p by9hcGkvdjEvY3JhdGVzL2xlYWYtYWxpY2UvMS4wLjAvZGVwZW5kZW5jaWVzIgorICAgICAgICAg ICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1sZWFmLWFsaWNlLWRlcGVuZGVuY2llcykpCisg ICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYtYm9iIgor ICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1sZWFmLWJvYi1jcmF0ZSkpCisg ICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYtYm9iLzEu MC4wL2Rvd25sb2FkIgorICAgICAgICAgICAgICAoc2V0ISB0ZXN0LXNvdXJjZS1oYXNoCisgICAg ICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZworICAgICAgICAg ICAgICAgICAgICAgKHNoYTI1NiAoc3RyaW5nLT5ieXRldmVjdG9yICJlbXB0eSBmaWxlXG4iICJ1 dGYtOCIpKSkpCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyAiZW1wdHkgZmlsZVxu IikpCisgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYt Ym9iLzEuMC4wL2RlcGVuZGVuY2llcyIKKyAgICAgICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5n IHRlc3QtbGVhZi1ib2ItZGVwZW5kZW5jaWVzKSkKKyAgICAgICAgICAgICAoXyAoZXJyb3IgIlVu ZXhwZWN0ZWQgVVJMOiAiIHVybCkpKSkpCisgICAgICAgIChtYXRjaCAoY3JhdGUtcmVjdXJzaXZl LWltcG9ydCAicm9vdCIpCisgICAgICAgICAgOzsgcnVzdC1pbnRlcm1lZGlhdGUtMiBoYXMgbm8g ZGVwZW5kZW5jeSBvbiB0aGUgcnVzdC1sZWFmLWFsaWNlIHBhY2thZ2UsIHNvIHRoaXMgaXMgYSB2 YWxpZCBvcmRlcmluZworICAgICAgICAgICgoKCdwYWNrYWdlCisgICAgICAgICAgICAgICgnbmFt ZSAicnVzdC1sZWFmLWJvYiIpCisgICAgICAgICAgICAgICgndmVyc2lvbiAoPyBzdHJpbmc/IHZl cikpCisgICAgICAgICAgICAgICgnc291cmNlCisgICAgICAgICAgICAgICAoJ29yaWdpbgorICAg ICAgICAgICAgICAgICAoJ21ldGhvZCAndXJsLWZldGNoKQorICAgICAgICAgICAgICAgICAoJ3Vy aSAoJ2NyYXRlLXVyaSAibGVhZi1ib2IiICd2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICAgKCdm aWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICgnc3RyaW5nLWFwcGVuZCAnbmFtZSAiLSIgJ3Zl cnNpb24gIi50YXIuZ3oiKSkKKyAgICAgICAgICAgICAgICAgKCdzaGEyNTYKKyAgICAgICAgICAg ICAgICAgICgnYmFzZTMyCisgICAgICAgICAgICAgICAgICAgKD8gc3RyaW5nPyBoYXNoKSkpKSkK KyAgICAgICAgICAgICAgKCdidWlsZC1zeXN0ZW0gJ2NhcmdvLWJ1aWxkLXN5c3RlbSkKKyAgICAg ICAgICAgICAgKCdob21lLXBhZ2UgImh0dHA6Ly9leGFtcGxlLmNvbSIpCisgICAgICAgICAgICAg ICgnc3lub3BzaXMgInN1bW1hcnkiKQorICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uICJzdW1t YXJ5IikKKyAgICAgICAgICAgICAgKCdsaWNlbnNlICgnbGlzdCAnbGljZW5zZTpleHBhdCAnbGlj ZW5zZTphc2wyLjApKSkKKyAgICAgICAgICAgICgncGFja2FnZQorICAgICAgICAgICAgICAoJ25h bWUgInJ1c3QtaW50ZXJtZWRpYXRlLTIiKQorICAgICAgICAgICAgICAoJ3ZlcnNpb24gKD8gc3Ry aW5nPyB2ZXIpKQorICAgICAgICAgICAgICAoJ3NvdXJjZQorICAgICAgICAgICAgICAgKCdvcmln aW4KKyAgICAgICAgICAgICAgICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKKyAgICAgICAgICAgICAg ICAgKCd1cmkgKCdjcmF0ZS11cmkgImludGVybWVkaWF0ZS0yIiAndmVyc2lvbikpCisgICAgICAg ICAgICAgICAgICgnZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAoJ3N0cmluZy1hcHBlbmQg J25hbWUgIi0iICd2ZXJzaW9uICIudGFyLmd6IikpCisgICAgICAgICAgICAgICAgICgnc2hhMjU2 CisgICAgICAgICAgICAgICAgICAoJ2Jhc2UzMgorICAgICAgICAgICAgICAgICAgICg/IHN0cmlu Zz8gaGFzaCkpKSkpCisgICAgICAgICAgICAgICgnYnVpbGQtc3lzdGVtICdjYXJnby1idWlsZC1z eXN0ZW0pCisgICAgICAgICAgICAgICgnYXJndW1lbnRzCisgICAgICAgICAgICAgICAoJ3F1YXNp cXVvdGUKKyAgICAgICAgICAgICAgICAoJyM6Y2FyZ28taW5wdXRzICgoInJ1c3QtbGVhZi1ib2Ii ICgndW5xdW90ZSBydXN0LWxlYWYtYm9iKSkpKSkpCisgICAgICAgICAgICAgICgnaG9tZS1wYWdl ICJodHRwOi8vZXhhbXBsZS5jb20iKQorICAgICAgICAgICAgICAoJ3N5bm9wc2lzICJzdW1tYXJ5 IikKKyAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbiAic3VtbWFyeSIpCisgICAgICAgICAgICAg ICgnbGljZW5zZSAoJ2xpc3QgJ2xpY2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6YXNsMi4wKSkpCisgICAg ICAgICAgICAoJ3BhY2thZ2UKKyAgICAgICAgICAgICAgKCduYW1lICJydXN0LWxlYWYtYWxpY2Ui KQorICAgICAgICAgICAgICAoJ3ZlcnNpb24gKD8gc3RyaW5nPyB2ZXIpKQorICAgICAgICAgICAg ICAoJ3NvdXJjZQorICAgICAgICAgICAgICAgKCdvcmlnaW4KKyAgICAgICAgICAgICAgICAgKCdt ZXRob2QgJ3VybC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgKCd1cmkgKCdjcmF0ZS11cmkgImxl YWYtYWxpY2UiICd2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICAgKCdmaWxlLW5hbWUKKyAgICAg ICAgICAgICAgICAgICgnc3RyaW5nLWFwcGVuZCAnbmFtZSAiLSIgJ3ZlcnNpb24gIi50YXIuZ3oi KSkKKyAgICAgICAgICAgICAgICAgKCdzaGEyNTYKKyAgICAgICAgICAgICAgICAgICgnYmFzZTMy CisgICAgICAgICAgICAgICAgICAgKD8gc3RyaW5nPyBoYXNoKSkpKSkKKyAgICAgICAgICAgICAg KCdidWlsZC1zeXN0ZW0gJ2NhcmdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgICAgICAgICAgKCdob21l LXBhZ2UgImh0dHA6Ly9leGFtcGxlLmNvbSIpCisgICAgICAgICAgICAgICgnc3lub3BzaXMgInN1 bW1hcnkiKQorICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uICJzdW1tYXJ5IikKKyAgICAgICAg ICAgICAgKCdsaWNlbnNlICgnbGlzdCAnbGljZW5zZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkK KyAgICAgICAgICAgICgncGFja2FnZQorICAgICAgICAgICAgICAoJ25hbWUgInJ1c3QtaW50ZXJt ZWRpYXRlLTEiKQorICAgICAgICAgICAgICAoJ3ZlcnNpb24gKD8gc3RyaW5nPyB2ZXIpKQorICAg ICAgICAgICAgICAoJ3NvdXJjZQorICAgICAgICAgICAgICAgKCdvcmlnaW4KKyAgICAgICAgICAg ICAgICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgKCd1cmkgKCdjcmF0 ZS11cmkgImludGVybWVkaWF0ZS0xIiAndmVyc2lvbikpCisgICAgICAgICAgICAgICAgICgnZmls ZS1uYW1lCisgICAgICAgICAgICAgICAgICAoJ3N0cmluZy1hcHBlbmQgJ25hbWUgIi0iICd2ZXJz aW9uICIudGFyLmd6IikpCisgICAgICAgICAgICAgICAgICgnc2hhMjU2CisgICAgICAgICAgICAg ICAgICAoJ2Jhc2UzMgorICAgICAgICAgICAgICAgICAgICg/IHN0cmluZz8gaGFzaCkpKSkpCisg ICAgICAgICAgICAgICgnYnVpbGQtc3lzdGVtICdjYXJnby1idWlsZC1zeXN0ZW0pCisgICAgICAg ICAgICAgICgnYXJndW1lbnRzCisgICAgICAgICAgICAgICAoJ3F1YXNpcXVvdGUKKyAgICAgICAg ICAgICAgICAoJyM6Y2FyZ28taW5wdXRzICgoInJ1c3QtaW50ZXJtZWRpYXRlLTIiICgndW5xdW90 ZSBydXN0LWludGVybWVkaWF0ZS0yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoInJ1c3QtbGVhZi1hbGljZSIgKCd1bnF1b3RlIHJ1c3QtbGVhZi1hbGljZSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJydXN0LWxlYWYtYm9iIiAoJ3VucXVvdGUgcnVz dC1sZWFmLWJvYikpKSkpKQorICAgICAgICAgICAgICAoJ2hvbWUtcGFnZSAiaHR0cDovL2V4YW1w bGUuY29tIikKKyAgICAgICAgICAgICAgKCdzeW5vcHNpcyAic3VtbWFyeSIpCisgICAgICAgICAg ICAgICgnZGVzY3JpcHRpb24gInN1bW1hcnkiKQorICAgICAgICAgICAgICAoJ2xpY2Vuc2UgKCds aXN0ICdsaWNlbnNlOmV4cGF0ICdsaWNlbnNlOmFzbDIuMCkpKQorICAgICAgICAgICAgKCdwYWNr YWdlCisgICAgICAgICAgICAgICgnbmFtZSAicnVzdC1yb290IikKKyAgICAgICAgICAgICAgKCd2 ZXJzaW9uICg/IHN0cmluZz8gdmVyKSkKKyAgICAgICAgICAgICAgKCdzb3VyY2UKKyAgICAgICAg ICAgICAgICgnb3JpZ2luCisgICAgICAgICAgICAgICAgICgnbWV0aG9kICd1cmwtZmV0Y2gpCisg ICAgICAgICAgICAgICAgICgndXJpICgnY3JhdGUtdXJpICJyb290IiAndmVyc2lvbikpCisgICAg ICAgICAgICAgICAgICgnZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAoJ3N0cmluZy1hcHBl bmQgJ25hbWUgIi0iICd2ZXJzaW9uICIudGFyLmd6IikpCisgICAgICAgICAgICAgICAgICgnc2hh MjU2CisgICAgICAgICAgICAgICAgICAoJ2Jhc2UzMgorICAgICAgICAgICAgICAgICAgICg/IHN0 cmluZz8gaGFzaCkpKSkpCisgICAgICAgICAgICAgICgnYnVpbGQtc3lzdGVtICdjYXJnby1idWls ZC1zeXN0ZW0pCisgICAgICAgICAgICAgICgnYXJndW1lbnRzCisgICAgICAgICAgICAgICAoJ3F1 YXNpcXVvdGUKKyAgICAgICAgICAgICAgICAoJyM6Y2FyZ28taW5wdXRzICgoInJ1c3QtaW50ZXJt ZWRpYXRlLTEiICgndW5xdW90ZSBydXN0LWludGVybWVkaWF0ZS0xKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoInJ1c3QtaW50ZXJtZWRpYXRlLTIiICgndW5xdW90ZSBydXN0 LWludGVybWVkaWF0ZS0yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInJ1 c3QtbGVhZi1hbGljZSIgKCd1bnF1b3RlIHJ1c3QtbGVhZi1hbGljZSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCJydXN0LWxlYWYtYm9iIiAoJ3VucXVvdGUgcnVzdC1sZWFm LWJvYikpKSkpKQorICAgICAgICAgICAgICAoJ2hvbWUtcGFnZSAiaHR0cDovL2V4YW1wbGUuY29t IikKKyAgICAgICAgICAgICAgKCdzeW5vcHNpcyAic3VtbWFyeSIpCisgICAgICAgICAgICAgICgn ZGVzY3JpcHRpb24gInN1bW1hcnkiKQorICAgICAgICAgICAgICAoJ2xpY2Vuc2UgKCdsaXN0ICds aWNlbnNlOmV4cGF0ICdsaWNlbnNlOmFzbDIuMCkpKSkKKyAgICAgICAgICAgI3QpCisgICAgICAg ICAgKHgKKyAgICAgICAgICAgKHBrICdmYWlsIHggI2YpKSkpKQorCiAodGVzdC1lbmQgImNyYXRl IikKZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbS5zY20gYi90ZXN0cy9nZW0uc2NtCmluZGV4IGExMmVk YjI5NGMuLjAxYWU4YTQ0NzAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2dlbS5zY20KKysrIGIvdGVzdHMv Z2VtLnNjbQpAQCAtMjQsNyArMjQsNiBAQAogICAjOnVzZS1tb2R1bGUgKGdjcnlwdCBoYXNoKQog ICAjOnVzZS1tb2R1bGUgKGd1aXggdGVzdHMpCiAgICM6dXNlLW1vZHVsZSAoKGd1aXggYnVpbGQg dXRpbHMpICM6c2VsZWN0IChkZWxldGUtZmlsZS1yZWN1cnNpdmVseSkpCi0gICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTQxKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS02NCkKICAgIzp1c2Ut bW9kdWxlIChpY2UtOSBtYXRjaCkpCiAKQEAgLTEyMSwyNyArMTIwLDggQEAKICAgICAgICAgICAg ICAgKHZhbHVlcyAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1idW5kbGVyLWpzb24pCiAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZy1sZW5ndGggdGVzdC1idW5kbGVyLWpzb24pKSkKICAgICAg ICAgICAgICAoXyAoZXJyb3IgIlVuZXhwZWN0ZWQgVVJMOiAiIHVybCkpKSkpCi0gICAgICAgICht YXRjaCAoc3RyZWFtLT5saXN0IChnZW0tcmVjdXJzaXZlLWltcG9ydCAiZm9vIikpCisgICAgICAg IChtYXRjaCAoZ2VtLXJlY3Vyc2l2ZS1pbXBvcnQgImZvbyIpCiAgICAgICAgICAgKCgoJ3BhY2th Z2UKLSAgICAgICAgICAgICAgKCduYW1lICJydWJ5LWZvbyIpCi0gICAgICAgICAgICAgICgndmVy c2lvbiAiMS4wLjAiKQotICAgICAgICAgICAgICAoJ3NvdXJjZQotICAgICAgICAgICAgICAgKCdv cmlnaW4KLSAgICAgICAgICAgICAgICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKLSAgICAgICAgICAg ICAgICAgKCd1cmkgKCdydWJ5Z2Vtcy11cmkgImZvbyIgJ3ZlcnNpb24pKQotICAgICAgICAgICAg ICAgICAoJ3NoYTI1NgotICAgICAgICAgICAgICAgICAgKCdiYXNlMzIKLSAgICAgICAgICAgICAg ICAgICAiMWEyNzBtbGFqaHJtcHFiaHhjcWpxeXBudmdycTRwZ2l4cHYzdzlnd3Axd3JyYXBud3J6 ayIpKSkpCi0gICAgICAgICAgICAgICgnYnVpbGQtc3lzdGVtICdydWJ5LWJ1aWxkLXN5c3RlbSkK LSAgICAgICAgICAgICAgKCdwcm9wYWdhdGVkLWlucHV0cwotICAgICAgICAgICAgICAgKCdxdWFz aXF1b3RlCi0gICAgICAgICAgICAgICAgKCgiYnVuZGxlciIgKCd1bnF1b3RlICdidW5kbGVyKSkK LSAgICAgICAgICAgICAgICAgKCJydWJ5LWJhciIgKCd1bnF1b3RlICdydWJ5LWJhcikpKSkpCi0g ICAgICAgICAgICAgICgnc3lub3BzaXMgIkEgY29vbCBnZW0iKQotICAgICAgICAgICAgICAoJ2Rl c2NyaXB0aW9uICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBjb29sIGdlbSIpCi0gICAgICAgICAg ICAgICgnaG9tZS1wYWdlICJodHRwczovL2V4YW1wbGUuY29tIikKLSAgICAgICAgICAgICAgKCds aWNlbnNlICgnbGlzdCAnbGljZW5zZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkKLSAgICAgICAg ICAgICgncGFja2FnZQogICAgICAgICAgICAgICAoJ25hbWUgInJ1YnktYnVuZGxlciIpCiAgICAg ICAgICAgICAgICgndmVyc2lvbiAiMS4xNC4yIikKICAgICAgICAgICAgICAgKCdzb3VyY2UKQEAg LTE3Myw2ICsxNTMsMjUgQEAKICAgICAgICAgICAgICAgKCdzeW5vcHNpcyAiQW5vdGhlciBjb29s IGdlbSIpCiAgICAgICAgICAgICAgICgnZGVzY3JpcHRpb24gIkFub3RoZXIgY29vbCBnZW0iKQog ICAgICAgICAgICAgICAoJ2hvbWUtcGFnZSAiaHR0cHM6Ly9leGFtcGxlLmNvbSIpCisgICAgICAg ICAgICAgICgnbGljZW5zZSAoJ2xpc3QgJ2xpY2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6YXNsMi4wKSkp CisgICAgICAgICAgICAoJ3BhY2thZ2UKKyAgICAgICAgICAgICAgKCduYW1lICJydWJ5LWZvbyIp CisgICAgICAgICAgICAgICgndmVyc2lvbiAiMS4wLjAiKQorICAgICAgICAgICAgICAoJ3NvdXJj ZQorICAgICAgICAgICAgICAgKCdvcmlnaW4KKyAgICAgICAgICAgICAgICAgKCdtZXRob2QgJ3Vy bC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgKCd1cmkgKCdydWJ5Z2Vtcy11cmkgImZvbyIgJ3Zl cnNpb24pKQorICAgICAgICAgICAgICAgICAoJ3NoYTI1NgorICAgICAgICAgICAgICAgICAgKCdi YXNlMzIKKyAgICAgICAgICAgICAgICAgICAiMWEyNzBtbGFqaHJtcHFiaHhjcWpxeXBudmdycTRw Z2l4cHYzdzlnd3Axd3JyYXBud3J6ayIpKSkpCisgICAgICAgICAgICAgICgnYnVpbGQtc3lzdGVt ICdydWJ5LWJ1aWxkLXN5c3RlbSkKKyAgICAgICAgICAgICAgKCdwcm9wYWdhdGVkLWlucHV0cwor ICAgICAgICAgICAgICAgKCdxdWFzaXF1b3RlCisgICAgICAgICAgICAgICAgKCgiYnVuZGxlciIg KCd1bnF1b3RlICdidW5kbGVyKSkKKyAgICAgICAgICAgICAgICAgKCJydWJ5LWJhciIgKCd1bnF1 b3RlICdydWJ5LWJhcikpKSkpCisgICAgICAgICAgICAgICgnc3lub3BzaXMgIkEgY29vbCBnZW0i KQorICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBj b29sIGdlbSIpCisgICAgICAgICAgICAgICgnaG9tZS1wYWdlICJodHRwczovL2V4YW1wbGUuY29t IikKICAgICAgICAgICAgICAgKCdsaWNlbnNlICgnbGlzdCAnbGljZW5zZTpleHBhdCAnbGljZW5z ZTphc2wyLjApKSkpCiAgICAgICAgICAgICN0KQogICAgICAgICAgICh4Ci0tIAoyLjI0LjAKCg== --0000000000004d8cd90598d3deab-- From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 11:50:42 2019 Received: (at 37730) by debbugs.gnu.org; 4 Dec 2019 16:50:42 +0000 Received: from localhost ([127.0.0.1]:42552 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icXrK-000850-Gn for submit@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58890) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icXrI-00084b-7P for 37730@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:37 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50499) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icXr9-0002wK-Sn for 37730@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:28 -0500 Received: from [160.174.176.236] (port=48136 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icXr6-0007p1-Su for 37730@debbugs.gnu.org; Wed, 04 Dec 2019 11:50:26 -0500 Resent-To: 37730@debbugs.gnu.org Resent-From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Resent-Date: Wed, 04 Dec 2019 17:50:21 +0100 Resent-Message-ID: <87blsodohe.fsf@gnu.org> Received: from solo.fdn.fr ([unix socket]) by solo (Cyrus 2.5.10-Debian-2.5.10-3.2) with LMTPA; Wed, 04 Dec 2019 00:07:42 +0100 X-Sieve: CMU Sieve 2.4 Received: by solo.fdn.fr (Postfix) id 75F92D0AE4; Wed, 4 Dec 2019 00:07:42 +0100 (CET) Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by solo.fdn.fr (Postfix) with ESMTPS id 22800D0AE0 for ; Wed, 4 Dec 2019 00:07:42 +0100 (CET) Received: from fencepost.gnu.org ([2001:470:142:3::e]:37961) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icHGf-0005IU-0Y for ludovic.courtes@fdn.fr; Tue, 03 Dec 2019 18:07:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48027) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icHGd-0002Yn-3d for ludo@gnu.org; Tue, 03 Dec 2019 18:07:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1icHGX-0005Bq-CG for ludo@gnu.org; Tue, 03 Dec 2019 18:07:37 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from mail-qk1-x72f.google.com ([2607:f8b0:4864:20::72f]:42180) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1icHGT-000581-FA for ludo@gnu.org; Tue, 03 Dec 2019 18:07:31 -0500 Received: by mail-qk1-x72f.google.com with SMTP id a10so5262372qko.9 for ; Tue, 03 Dec 2019 15:07:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=o5+uBDLq3SiwpAvO0VruqQ9nbez5Hs69emtBrqe8f6c=; b=lrzFaignhGYmkW7z0zAJkbYV9wLObJ4m3cdAPBB9KecVAE3EwR0GKHtVD3cMImKdxk CeyGB9inz5lbMzVelLyJlIhD96WbP3pig46VyV8k3HVvWy33Rvch0qxWmBmyG2PQknev 1RGiQPMbey7RF+KS3Ou+A8whcqfrwgDIxR6GMHfXRXHDQ3eYAub+V5LrGskRPTgFJFT5 XIAy+Q0ipH5MKm1A3xYgilFN8DG47vRL2HsXa1go0lHL6H1TRy497ZbCGETfJXRBR9rI uNhtvZloP4PjSke0/PwQ6OK+L4+G5+HMg0zFtp+4sdSGS0L6ecwJn7j73X2/xdD6b/np 3vjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=o5+uBDLq3SiwpAvO0VruqQ9nbez5Hs69emtBrqe8f6c=; b=HylrqA9bSGZbRewyg0ibVLXkvz70ZDziBmO3Z1d+LA7N0rctdoL64m12gYjQARVd5R iUkGgunwgX0i/R4RlFK0HXpwZbVOMELFF9YDv6vJQ79PqnIEcgnKChxuIYSRGBzQEfGo NhInDyR96sMGy0PgY8DMZgIw8iQyapuHdJv80/MCs/74M1srugFI4YFxhUFiinWB9R/z 03nAMWap+erWQPC1vYF0WyK8EEG3IiFtsYdhXR1yLvnirw4spEHXSooazD6Wr4IbCD0P ZPnX3YzZXhcEm4o43rGKzthIip741VEnaQWXJyTofSE65zb3DwvB6v9wq41W9uHVf8Ov alDw== X-Gm-Message-State: APjAAAXibPknKZ4D/1Zk2BLg8/dNXRXr8IwE5i3HH48fXOqlcNhoptr6 lItD0l8I1OLpGnKX2q4fPHZ2GvVtYnMJuB8ILNZ5Tw== X-Google-Smtp-Source: APXvYqxT/figfH9L4jx1Rl+Sbes9bI7zerfbASFyl4yfWfRoifwtyNxyp2XfjcN3olkdsdyFymR1/O6yk7rfJay/cvo= X-Received: by 2002:a37:6481:: with SMTP id y123mr7955421qkb.171.1575414447755; Tue, 03 Dec 2019 15:07:27 -0800 (PST) MIME-Version: 1.0 References: <87lfti5rip.fsf@gnu.org> In-Reply-To: From: Brian Leung Date: Tue, 3 Dec 2019 15:06:51 -0800 Message-ID: Subject: Re: [bug#37730] [PATCH] Topologically sort recursively-imported packages To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= , Efraim Flashner Content-Type: multipart/mixed; boundary="000000000000887cea0598d4c2f4" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::72f X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 37730 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --000000000000887cea0598d4c2f4 Content-Type: multipart/alternative; boundary="000000000000887ce70598d4c2f2" --000000000000887ce70598d4c2f2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Attached is a small edit to clarify the shape of something and rename accordingly. On Tue, Dec 3, 2019 at 2:03 PM Brian Leung wrote: > Hi Ludo, > > Sorry for putting this off; my Guix installation got corrupted and I > wasn't able to roll back. I'm writing this from within VirtualBox. > > In the attached patch I've addressed most of your concerns, except for > this one: > > > Regarding tests, you could make the topological sort code above a > > separate procedure, and write a couple of tests that call it. > > I don't see how this would help. We would have to pass it the > `repo->guix-package` function and the `repo` variable as an arguments tha= t > remain the same across all the tail-recursive invocations of `topo-sort`, > which would make it harder to read. And we'd have to come up with some > custom `repo->guix-package` function, when we already have one for the > (say) Crate test. > > Efraim: I recall you mentioning a while back that topologically sorted > output would be nice to have. Please confirm this patch works as expected > for you. > > Thanks, > Brian > > On Fri, Oct 18, 2019 at 2:31 AM Ludovic Court=C3=A8s wrote= : > >> Hi Brian, >> >> Brian Leung skribis: >> >> > From 6fec6a72a7938753307ccf3b7bdad8bff72e47f9 Mon Sep 17 00:00:00 2001 >> > From: Brian Leung >> > Date: Fri, 11 Oct 2019 23:18:03 -0700 >> > Subject: [PATCH] guix: utils: Topologically sort recursively-imported >> recipes. >> > >> > This output order, when it is well-defined, facilitates the process of >> > deciding what to upstream next for a package with a large dependency >> closure. >> >> That=E2=80=99s a great idea! >> >> > * guix/import/utils.scm (recursive-import): Enforce topological sort. >> > Remove dependency on srfi-41. Reverse output here instead of in >> individual >> > importers. >> > * guix/scripts/import/cran.scm (guix-import-cran): Unstreamify and don= 't >> > reverse here. Remove dependency on srfi-41. >> >> Instead of =E2=80=9CUnstreamify=E2=80=9D, please write precisely what ha= s changed, like >> =E2=80=9CRemove call to =E2=80=98stream-fold=E2=80=99 and call =E2=80=98= foobar=E2=80=99 directly.=E2=80=9D, =E2=80=9CRemove call >> to =E2=80=98stream->list=E2=80=99.=E2=80=9D, etc. >> >> > + (define graph (make-hash-table)) >> > + (define recipe-map (make-hash-table)) >> > + (define stack (list package-name)) >> > + (define accum '()) >> > + >> > + (while (not (null? stack)) >> > + (let ((package-name (car stack))) >> > + (match (hash-ref graph package-name) >> > + ('() >> > + (set! stack (cdr stack)) >> > + (set! accum (cons (hash-ref recipe-map package-name) accum))= ) >> > + ((dep . rest) >> > + (define (handle? dep) >> > + (and >> > + (not (equal? dep package-name)) >> > + (not (hash-ref recipe-map dep)) >> > + (not (exists? dep)))) >> > + (hash-set! graph package-name rest) >> > + (when (handle? dep) >> > + (set! stack (cons dep stack)))) >> > + (#f >> > + (receive (package-recipe . dependencies) >> > + (repo->guix-package package-name repo) >> > + (hash-set! graph package-name >> > + (or (and (not (null? dependencies)) >> > + (car dependencies)) >> > + '())) >> > + (hash-set! recipe-map package-name >> > + (or package-recipe '()))))))) >> > + >> > + (reverse accum)) >> >> Do you think you could rewrite this (1) in a functional style (you can >> use vhashes instead of hash tables), and (2) using =E2=80=98match=E2=80= =99 instead of >> =E2=80=98cdr=E2=80=99 & co.? >> >> That would more closely match our conventions (info "(guix) Coding >> Style") and would also probably allow for easier testing. >> >> Regarding tests, you could make the topological sort code above a >> separate procedure, and write a couple of tests that call it. >> >> WDYT? >> >> The rest LGTM. >> >> Thank you! >> >> Ludo=E2=80=99. >> > --000000000000887ce70598d4c2f2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Attached is a small edit to clarify the shape of something= and rename accordingly.

On Tue, Dec 3, 2019 at 2:03 PM Brian Leung &l= t;bkleung89@gmail.com> wrote:=
Hi Ludo,

Sorry for putting this off; my Gui= x installation got corrupted and I wasn't able to roll back. I'm wr= iting this from within VirtualBox.

In the attached= patch I've addressed most of your concerns, except for this one:

> Regarding tests, you could make the topologica= l sort code above a
> separate procedure, and write a couple of tests that call it.

I don't see how this would help. We would have to pass= it the `repo->guix-package` function and the `repo` variable as an argu= ments that remain the same across all the tail-recursive invocations of `t= opo-sort`, which would make it harder to read. And we'd have to come up= with some custom `repo->guix-package` function, when we already have on= e for the (say) Crate test.

Efraim: I recall you m= entioning a while back that topologically sorted output would be nice to ha= ve. Please confirm this patch works as expected for you.

Thanks,
Brian

On Fri, Oct 18, 2019 at 2:31 AM Lud= ovic Court=C3=A8s <lud= o@gnu.org> wrote:
Hi Brian,

Brian Leung <bk= leung89@gmail.com> skribis:

> From 6fec6a72a7938753307ccf3b7bdad8bff72e47f9 Mon Sep 17 00:00:00 2001=
> From: Brian Leung <leungbk@mailfence.com>
> Date: Fri, 11 Oct 2019 23:18:03 -0700
> Subject: [PATCH] guix: utils: Topologically sort recursively-imported = recipes.
>
> This output order, when it is well-defined, facilitates the process of=
> deciding what to upstream next for a package with a large dependency c= losure.

That=E2=80=99s a great idea!

> * guix/import/utils.scm (recursive-import): Enforce topological sort.<= br> >=C2=A0 =C2=A0Remove dependency on srfi-41. Reverse output here instead = of in individual
>=C2=A0 =C2=A0importers.
> * guix/scripts/import/cran.scm (guix-import-cran): Unstreamify and don= 't
>=C2=A0 =C2=A0reverse here. Remove dependency on srfi-41.

Instead of =E2=80=9CUnstreamify=E2=80=9D, please write precisely what has c= hanged, like
=E2=80=9CRemove call to =E2=80=98stream-fold=E2=80=99 and call =E2=80=98foo= bar=E2=80=99 directly.=E2=80=9D, =E2=80=9CRemove call
to =E2=80=98stream->list=E2=80=99.=E2=80=9D, etc.

> +=C2=A0 (define graph (make-hash-table))
> +=C2=A0 (define recipe-map (make-hash-table))
> +=C2=A0 (define stack (list package-name))
> +=C2=A0 (define accum '())
> +
> +=C2=A0 (while (not (null? stack))
> +=C2=A0 =C2=A0 (let ((package-name (car stack)))
> +=C2=A0 =C2=A0 =C2=A0 (match (hash-ref graph package-name)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ('()
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set! stack (cdr stack))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set! accum (cons (hash-ref recipe-= map package-name) accum)))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((dep . rest)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(define (handle? dep)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(and
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (equal? dep package-na= me))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (hash-ref recipe-map d= ep))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (exists? dep))))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(hash-set! graph package-name rest)=
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (handle? dep)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set! stack (cons dep stack)= )))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (#f
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(receive (package-recipe . dependen= cies)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(repo->guix-packag= e package-name repo)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(hash-set! graph package-nam= e
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 (or (and (not (null? dependencies))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(car dependencies))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 '()))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(hash-set! recipe-map packag= e-name
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 (or package-recipe '())))))))
> +
> +=C2=A0 (reverse accum))

Do you think you could rewrite this (1) in a functional style (you can
use vhashes instead of hash tables), and (2) using =E2=80=98match=E2=80=99 = instead of
=E2=80=98cdr=E2=80=99 & co.?

That would more closely match our conventions (info "(guix) Coding
Style") and would also probably allow for easier testing.

Regarding tests, you could make the topological sort code above a
separate procedure, and write a couple of tests that call it.

WDYT?

The rest LGTM.

Thank you!

Ludo=E2=80=99.
--000000000000887ce70598d4c2f2-- --000000000000887cea0598d4c2f4 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-guix-utils-Topologically-sort-recursively-imported-r.patch" Content-Disposition: attachment; filename="0001-guix-utils-Topologically-sort-recursively-imported-r.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k3qh0lwk0 RnJvbSA5MTUyNzRkNDkzMTE2ZDA2M2JmZTJhOTUzYTllODU1YjgzMTI3MTFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCcmlhbiBMZXVuZyA8bGV1bmdia0BtYWlsZmVuY2UuY29tPgpE YXRlOiBGcmksIDExIE9jdCAyMDE5IDIzOjE4OjAzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gZ3Vp eDogdXRpbHM6IFRvcG9sb2dpY2FsbHkgc29ydCByZWN1cnNpdmVseSBpbXBvcnRlZCByZWNpcGVz LgoKVGhpcyBvdXRwdXQgb3JkZXIsIHdoZW4gaXQgaXMgd2VsbC1kZWZpbmVkLCBmYWNpbGl0YXRl cyB0aGUgcHJvY2VzcyBvZgpkZWNpZGluZyB3aGF0IHRvIHVwc3RyZWFtIG5leHQgZm9yIGEgcGFj a2FnZSB3aXRoIGEgbGFyZ2UgZGVwZW5kZW5jeSBjbG9zdXJlLgoKKiBndWl4L2ltcG9ydC91dGls cy5zY20gKHJlY3Vyc2l2ZS1pbXBvcnQpOiBFbmZvcmNlIHRvcG9sb2dpY2FsIHNvcnQuIFJlbW92 ZQpkZXBlbmRlbmN5IG9uIHNyZmktNDEuIEltcG9ydCB2bGlzdCBtb2R1bGUuIFJldmVyc2Ugb3V0 cHV0IGhlcmUgaW5zdGVhZCBvZiBpbgppbmRpdmlkdWFsIGltcG9ydGVycy4KKiBndWl4L3Njcmlw dHMvaW1wb3J0L2NyYW4uc2NtIChndWl4LWltcG9ydC1jcmFuKTogUmVtb3ZlIGNhbGxzIHRvCnN0 cmVhbS0+bGlzdCBhbmQgcmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBn dWl4L3NjcmlwdHMvaW1wb3J0L2NyYXRlLnNjbSAoZ3VpeC1pbXBvcnQtY3JhdGUpOiBSZW1vdmUg Y2FsbHMgdG8Kc3RyZWFtLT5saXN0IGFuZCByZXZlcnNlLiBSZW1vdmUgZGVwZW5kZW5jeSBvbiBz cmZpLTQxLgoqIGd1aXgvc2NyaXB0cy9pbXBvcnQvZWxwYS5zY20gKGd1aXgtaW1wb3J0LWVscGEp OiBSZW1vdmUgY2FsbHMgdG8Kc3RyZWFtLT5saXN0IGFuZCByZXZlcnNlLiBSZW1vdmUgZGVwZW5k ZW5jeSBvbiBzcmZpLTQxLgoqIGd1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNjbSAoZ3VpeC1pbXBv cnQtZ2VtKTogUmVtb3ZlIGNhbGxzIHRvIHN0cmVhbS0+bGlzdAphbmQgcmV2ZXJzZS4gUmVtb3Zl IGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBndWl4L3NjcmlwdHMvaW1wb3J0L2hhY2thZ2Uuc2Nt IChndWl4LWltcG9ydC1oYWNrYWdlKTogUmVtb3ZlIGNhbGxzIHRvCnN0cmVhbS0+bGlzdCBhbmQg cmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBndWl4L3NjcmlwdHMvaW1w b3J0L29wYW0uc2NtIChndWl4LWltcG9ydC1vcGFtKTogUmVtb3ZlIGNhbGxzIHRvCnN0cmVhbS0+ bGlzdCBhbmQgcmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4KKiBndWl4L3Nj cmlwdHMvaW1wb3J0L3B5cGkuc2NtIChndWl4LWltcG9ydC1weXBpKTogUmVtb3ZlIGNhbGxzIHRv CnN0cmVhbS0+bGlzdCBhbmQgcmV2ZXJzZS4gUmVtb3ZlIGRlcGVuZGVuY3kgb24gc3JmaS00MS4K KiBndWl4L3NjcmlwdHMvaW1wb3J0L3N0YWNrYWdlLnNjbSAoZ3VpeC1pbXBvcnQtc3RhY2thZ2Up OiBSZW1vdmUgY2FsbHMgdG8Kc3RyZWFtLT5saXN0IGFuZCByZXZlcnNlLiBSZW1vdmUgZGVwZW5k ZW5jeSBvbiBzcmZpLTQxLgoqIHRlc3RzL2NyYXRlLnNjbSAoY2FyZ28tcmVjdXJzaXZlLWltcG9y dCk6IEFkZCB0ZXN0LgoqIHRlc3RzL2dlbS5zY20gKGdlbS1yZWN1cnNpdmUtaW1wb3J0KTogVXBk YXRlIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCB0aGUKcmV2ZXJzaW5nIG9mIHRoZSBsaXN0IG5v dyB0YWtlcyBwbGFjZSBpbiB0aGUgcmVjdXJzaXZlIGltcG9ydGVyLiBSZW1vdmUKZGVwZW5kZW5j eSBvbiBzcmZpLTQxLgotLS0KIGd1aXgvaW1wb3J0L3V0aWxzLnNjbSAgICAgICAgICAgIHwgIDg2 ICsrKysrLS0tCiBndWl4L3NjcmlwdHMvaW1wb3J0L2NyYW4uc2NtICAgICB8ICAgNyArLQogZ3Vp eC9zY3JpcHRzL2ltcG9ydC9jcmF0ZS5zY20gICAgfCAgIDUgKy0KIGd1aXgvc2NyaXB0cy9pbXBv cnQvZWxwYS5zY20gICAgIHwgICA3ICstCiBndWl4L3NjcmlwdHMvaW1wb3J0L2dlbS5zY20gICAg ICB8ICAgNSArLQogZ3VpeC9zY3JpcHRzL2ltcG9ydC9oYWNrYWdlLnNjbSAgfCAgIDUgKy0KIGd1 aXgvc2NyaXB0cy9pbXBvcnQvb3BhbS5zY20gICAgIHwgICA1ICstCiBndWl4L3NjcmlwdHMvaW1w b3J0L3B5cGkuc2NtICAgICB8ICAgNSArLQogZ3VpeC9zY3JpcHRzL2ltcG9ydC9zdGFja2FnZS5z Y20gfCAgIDUgKy0KIGd1aXgvc2NyaXB0cy9pbXBvcnQvdGV4bGl2ZS5zY20gIHwgICAxIC0KIHRl c3RzL2NyYXRlLnNjbSAgICAgICAgICAgICAgICAgIHwgMzM0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIHRlc3RzL2dlbS5zY20gICAgICAgICAgICAgICAgICAgIHwgIDQxICsrLS0K IDEyIGZpbGVzIGNoYW5nZWQsIDQxMyBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9ndWl4L2ltcG9ydC91dGlscy5zY20gYi9ndWl4L2ltcG9ydC91dGlscy5zY20K aW5kZXggNDY5NGI2ZTdlZi4uMGQ5ZTVmYmZkZCAxMDA2NDQKLS0tIGEvZ3VpeC9pbXBvcnQvdXRp bHMuc2NtCisrKyBiL2d1aXgvaW1wb3J0L3V0aWxzLnNjbQpAQCAtMzksMTAgKzM5LDEwIEBACiAg ICM6dXNlLW1vZHVsZSAoaWNlLTkgcmRlbGltKQogICAjOnVzZS1tb2R1bGUgKGljZS05IHJlY2Vp dmUpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkg dmxpc3QpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTExKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0yNikKLSAgIzp1c2UtbW9kdWxl IChzcmZpIHNyZmktNDEpCiAgICM6ZXhwb3J0IChmYWN0b3JpemUtdXJpCiAKICAgICAgICAgICAg IGZsYXR0ZW4KQEAgLTM4MCwzNyArMzgwLDU3IEBAIHNlcGFyYXRlZCBieSBQUkVELiIKIChkZWZp bmUqIChyZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSByZXBvCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjOmtleSByZXBvLT5ndWl4LXBhY2thZ2UgZ3VpeC1uYW1lCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjOmFsbG93LW90aGVyLWtleXMpCi0gICJHZW5lcmF0ZSBhIHN0cmVh bSBvZiBwYWNrYWdlIGV4cHJlc3Npb25zIGZvciBQQUNLQUdFLU5BTUUgYW5kIGFsbCBpdHMKLWRl cGVuZGVuY2llcy4iCisgICJHZW5lcmF0ZSBhIGxpc3Qgb2YgcGFja2FnZSBleHByZXNzaW9ucyBm b3IgUEFDS0FHRS1OQU1FIGFuZCBhbGwgaXRzCitkZXBlbmRlbmNpZXMuICBUaGUgbGlzdCB3aWxs IGJlIGluIGEgdG9wb2xvZ2ljYWwgb3JkZXJpbmcsIGlmIG9uZSBleGlzdHMuIgogICAoZGVmaW5l IChleGlzdHM/IGRlcGVuZGVuY3kpCiAgICAgKG5vdCAobnVsbD8gKGZpbmQtcGFja2FnZXMtYnkt bmFtZSAoZ3VpeC1uYW1lIGRlcGVuZGVuY3kpKSkpKQotICAoZGVmaW5lIGluaXRpYWwtc3RhdGUg KGxpc3QgI2YgKGxpc3QgcGFja2FnZS1uYW1lKSAobGlzdCkpKQotICAoZGVmaW5lIChzdGVwIHN0 YXRlKQotICAgIChtYXRjaCBzdGF0ZQotICAgICAgKChwcmV2IChuZXh0IC4gcmVzdCkgZG9uZSkK LSAgICAgICAoZGVmaW5lIChoYW5kbGU/IGRlcCkKLSAgICAgICAgIChhbmQKLSAgICAgICAgICAg KG5vdCAoZXF1YWw/IGRlcCBuZXh0KSkKLSAgICAgICAgICAgKG5vdCAobWVtYmVyIGRlcCBkb25l KSkKLSAgICAgICAgICAgKG5vdCAoZXhpc3RzPyBkZXApKSkpCi0gICAgICAgKHJlY2VpdmUgKHBh Y2thZ2UgLiBkZXBlbmRlbmNpZXMpIChyZXBvLT5ndWl4LXBhY2thZ2UgbmV4dCByZXBvKQotICAg ICAgICAgKGxpc3QKLSAgICAgICAgICAgKGlmIHBhY2thZ2UgcGFja2FnZSAnKCkpIDs7IGRlZmF1 bHQgI2Ygb24gZmFpbHVyZSB3b3VsZCBpbnRlcnJ1cHQKLSAgICAgICAgICAgKGlmIHBhY2thZ2UK LSAgICAgICAgICAgICAobHNldC11bmlvbiBlcXVhbD8gcmVzdCAoZmlsdGVyIGhhbmRsZT8gKGNh ciBkZXBlbmRlbmNpZXMpKSkKLSAgICAgICAgICAgICByZXN0KQotICAgICAgICAgICAoY29ucyBu ZXh0IGRvbmUpKSkpCi0gICAgICAoKHByZXYgJygpIGRvbmUpCi0gICAgICAgKGxpc3QgI2YgJygp IGRvbmUpKSkpCi0KLSAgOzsgR2VuZXJhdGUgYSBsYXp5IHN0cmVhbSBvZiBwYWNrYWdlIGV4cHJl c3Npb25zIGZvciBhbGwgdW5rbm93bgotICA7OyBkZXBlbmRlbmNpZXMgaW4gdGhlIGdyYXBoLgot ICAoc3RyZWFtLXVuZm9sZAotICAgIDs7IG1hcDogcHJvZHVjZSBhIHN0cmVhbSBlbGVtZW50Ci0g ICAgKG1hdGNoLWxhbWJkYSAoKGxhdGVzdCBxdWV1ZSBkb25lKSBsYXRlc3QpKQotICAgIDs7IHBy ZWRpY2F0ZQotICAgIChtYXRjaC1sYW1iZGEgKChsYXRlc3QgcXVldWUgZG9uZSkgbGF0ZXN0KSkK LSAgICA7OyBnZW5lcmF0b3I6IHVwZGF0ZSB0aGUgcXVldWUKLSAgICBzdGVwCi0gICAgOzsgaW5p dGlhbCBzdGF0ZQotICAgIChzdGVwIGluaXRpYWwtc3RhdGUpKSkKKworICAoZGVmaW5lIGdyYXBo IHZsaXN0LW51bGwpCisgIChkZWZpbmUgcmVjaXBlLW1hcCB2bGlzdC1udWxsKQorICAoZGVmaW5l IHN0YWNrIChsaXN0IHBhY2thZ2UtbmFtZSkpCisgIChkZWZpbmUgYWNjdW0gJygpKQorCisgIChk ZWZpbmUgKHRvcG8tc29ydCBzdGFjayBncmFwaCByZWNpcGUtbWFwIGFjY3VtKQorICAgIChpZiAo bnVsbD8gc3RhY2spCisgICAgICAgIChyZXZlcnNlIGFjY3VtKQorICAgICAgICAobGV0ICgoaGVh ZC1wYWNrYWdlIChjYXIgc3RhY2spKSkKKyAgICAgICAgICAobWF0Y2ggKHZoYXNoLWFzc29jIGhl YWQtcGFja2FnZSBncmFwaCkKKyAgICAgICAgICAgICgoa2V5IC4gJygpKQorICAgICAgICAgICAg IChsZXQgKChuZXh0LXN0YWNrIChjZHIgc3RhY2spKQorICAgICAgICAgICAgICAgICAgIChuZXh0 LWFjY3VtIChjb25zIChjZHIgKHZoYXNoLWFzc29jIGhlYWQtcGFja2FnZSByZWNpcGUtbWFwKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2N1bSkpKQorICAgICAgICAg ICAgICAgKHRvcG8tc29ydCBuZXh0LXN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdy YXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS1tYXAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV4dC1hY2N1bSkpKQorICAgICAgICAgICAgKChrZXkgLiAoZGVwIC4gcmVz dCkpCisgICAgICAgICAgICAgKGRlZmluZSAoaGFuZGxlPyBkZXApCisgICAgICAgICAgICAgICAo YW5kCisgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWw/IGRlcCBoZWFkLXBhY2thZ2UpKQorICAg ICAgICAgICAgICAgIChub3QgKHZoYXNoLWFzc29jIGRlcCByZWNpcGUtbWFwKSkKKyAgICAgICAg ICAgICAgICAobm90IChleGlzdHM/IGRlcCkpKSkKKyAgICAgICAgICAgICAobGV0KiAoKG5leHQt c3RhY2sgKGlmIChoYW5kbGU/IGRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb25zIGRlcCBzdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YWNrKSkKKyAgICAgICAgICAgICAgICAgICAgKG5leHQtZ3JhcGggKHZoYXNoLWNvbnMga2V5 IHJlc3QgZ3JhcGgpKSkKKyAgICAgICAgICAgICAgICh0b3BvLXNvcnQgbmV4dC1zdGFjaworICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWdyYXBoCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlY2lwZS1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjdW0pKSkKKyAgICAg ICAgICAgICgjZgorICAgICAgICAgICAgIChyZWNlaXZlIChwYWNrYWdlLXJlY2lwZSAuIGRlcGVu ZGVuY2llcykgKHJlcG8tPmd1aXgtcGFja2FnZSBoZWFkLXBhY2thZ2UgcmVwbykKKyAgICAgICAg ICAgICAgIChsZXQgKChuZXh0LWdyYXBoICh2aGFzaC1jb25zIGhlYWQtcGFja2FnZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZGVwZW5kZW5jaWVzIGhh cyBzaGFwZSAnKCgicGFja2FnZS1hIiAicGFja2FnZS1iIiAuLi4pKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBkZXBlbmRlbmNpZXMpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaCkpCisgICAgICAgICAg ICAgICAgICAgICAobmV4dC1yZWNpcGUtbWFwICh2aGFzaC1jb25zIGhlYWQtcGFja2FnZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UtcmVj aXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl Y2lwZS1tYXApKSkKKyAgICAgICAgICAgICAgICAgKHRvcG8tc29ydCBzdGFjaworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5leHQtZ3JhcGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuZXh0LXJlY2lwZS1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2N1bSkpKSkp KSkpCisKKyAgKHRvcG8tc29ydCBzdGFjayBncmFwaCByZWNpcGUtbWFwIGFjY3VtKSkKZGlmZiAt LWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvY3Jhbi5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0 L2NyYW4uc2NtCmluZGV4IGI2NTkyZjc4YTkuLmQ2ZjM3MWVmM2EgMTAwNjQ0Ci0tLSBhL2d1aXgv c2NyaXB0cy9pbXBvcnQvY3Jhbi5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9jcmFuLnNj bQpAQCAtMjcsNyArMjcsNiBAQAogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQogICAjOnVz ZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMzcpCi0g ICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNo KQogICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAgIzpleHBvcnQgKGd1aXgtaW1wb3J0 LWNyYW4pKQpAQCAtOTgsMTAgKzk3LDggQEAgSW1wb3J0IGFuZCBjb252ZXJ0IHRoZSBDUkFOIHBh Y2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5cbiIpKQogICAgICAgIChpZiAoYXNzb2MtcmVmIG9wdHMg J3JlY3Vyc2l2ZSkKICAgICAgICAgICAgOzsgUmVjdXJzaXZlIGltcG9ydAogICAgICAgICAgICAo bWFwIHBhY2thZ2UtPmRlZmluaXRpb24KLSAgICAgICAgICAgICAgICAocmV2ZXJzZQotICAgICAg ICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAgICAgICAgICAgICAgICAoY3Jhbi1yZWN1cnNp dmUtaW1wb3J0IHBhY2thZ2UtbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAob3IgKGFzc29jLXJlZiBvcHRzICdyZXBvKSAnY3JhbikpKSkpCisgICAgICAgICAg ICAgICAgKGNyYW4tcmVjdXJzaXZlLWltcG9ydCBwYWNrYWdlLW5hbWUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoYXNzb2MtcmVmIG9wdHMgJ3JlcG8pICdjcmFu KSkpCiAgICAgICAgICAgIDs7IFNpbmdsZSBpbXBvcnQKICAgICAgICAgICAgKGxldCAoKHNleHAg KGNyYW4tPmd1aXgtcGFja2FnZSBwYWNrYWdlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAob3IgKGFzc29jLXJlZiBvcHRzICdyZXBvKSAnY3JhbikpKSkK ZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvY3JhdGUuc2NtIGIvZ3VpeC9zY3JpcHRz L2ltcG9ydC9jcmF0ZS5zY20KaW5kZXggNDY5MGNjZWI0ZC4uOTIwMzRkYWIzYyAxMDA2NDQKLS0t IGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9jcmF0ZS5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9y dC9jcmF0ZS5zY20KQEAgLTI4LDcgKzI4LDYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmkt MSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2UtbW9kdWxlIChp Y2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6ZXhwb3J0IChn dWl4LWltcG9ydC1jcmF0ZSkpCkBAIC0xMDEsOSArMTAwLDcgQEAgSW1wb3J0IGFuZCBjb252ZXJ0 IHRoZSBjcmF0ZS5pbyBwYWNrYWdlIGZvciBQQUNLQUdFLU5BTUUuXG4iKSkKICAgICAgICAgICAg ICAgICAgICBgKGRlZmluZS1wdWJsaWMgLChzdHJpbmctPnN5bWJvbCBuYW1lKQogICAgICAgICAg ICAgICAgICAgICAgICxwa2cpKQogICAgICAgICAgICAgICAgICAgKF8gI2YpKQotICAgICAgICAg ICAgICAgIChyZXZlcnNlCi0gICAgICAgICAgICAgICAgIChzdHJlYW0tPmxpc3QKLSAgICAgICAg ICAgICAgICAgIChjcmF0ZS1yZWN1cnNpdmUtaW1wb3J0IG5hbWUpKSkpCisgICAgICAgICAgICAg ICAgKGNyYXRlLXJlY3Vyc2l2ZS1pbXBvcnQgbmFtZSkpCiAgICAgICAgICAgIChsZXQgKChzZXhw IChjcmF0ZS0+Z3VpeC1wYWNrYWdlIG5hbWUgdmVyc2lvbikpKQogICAgICAgICAgICAgICh1bmxl c3Mgc2V4cAogICAgICAgICAgICAgICAgKGxlYXZlIChHXyAiZmFpbGVkIHRvIGRvd25sb2FkIG1l dGEtZGF0YSBmb3IgcGFja2FnZSAnfmEnfiUiKQpkaWZmIC0tZ2l0IGEvZ3VpeC9zY3JpcHRzL2lt cG9ydC9lbHBhLnNjbSBiL2d1aXgvc2NyaXB0cy9pbXBvcnQvZWxwYS5zY20KaW5kZXggZjFlZDUw MTZiYS4uZDI3MGQyYjRiYyAxMDA2NDQKLS0tIGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9lbHBhLnNj bQorKysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0L2VscGEuc2NtCkBAIC0yNyw3ICsyNyw2IEBACiAg ICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEx KQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0zNykKLSAgIzp1c2UtbW9kdWxlIChzcmZpIHNy ZmktNDEpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCiAgICM6dXNlLW1vZHVsZSAoaWNl LTkgZm9ybWF0KQogICAjOmV4cG9ydCAoZ3VpeC1pbXBvcnQtZWxwYSkpCkBAIC0xMDEsMTAgKzEw MCw4IEBAIEltcG9ydCB0aGUgbGF0ZXN0IHBhY2thZ2UgbmFtZWQgUEFDS0FHRS1OQU1FIGZyb20g YW4gRUxQQSByZXBvc2l0b3J5LlxuIikpCiAgICAgICAgICAgICAgICAgICAgYChkZWZpbmUtcHVi bGljICwoc3RyaW5nLT5zeW1ib2wgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAscGtnKSkK ICAgICAgICAgICAgICAgICAgIChfICNmKSkKLSAgICAgICAgICAgICAgICAocmV2ZXJzZQotICAg ICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAgICAgICAgICAgICAgICAoZWxwYS1yZWN1 cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgKGFzc29jLXJlZiBvcHRzICdyZXBvKSAnZ251KSkpKSkKKyAgICAgICAg ICAgICAgICAoZWxwYS1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChhc3NvYy1yZWYgb3B0cyAncmVwbykgJ2du dSkpKQogICAgICAgICAgICAobGV0ICgoc2V4cCAoZWxwYS0+Z3VpeC1wYWNrYWdlIHBhY2thZ2Ut bmFtZSAoYXNzb2MtcmVmIG9wdHMgJ3JlcG8pKSkpCiAgICAgICAgICAgICAgKHVubGVzcyBzZXhw CiAgICAgICAgICAgICAgICAobGVhdmUgKEdfICJmYWlsZWQgdG8gZG93bmxvYWQgcGFja2FnZSAn fmEnfiUiKSBwYWNrYWdlLW5hbWUpKQpkaWZmIC0tZ2l0IGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9n ZW0uc2NtIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9nZW0uc2NtCmluZGV4IGI2ZDljY2FhZTQuLmM2 NDU5NmI1MTQgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNjbQorKysgYi9n dWl4L3NjcmlwdHMvaW1wb3J0L2dlbS5zY20KQEAgLTI2LDcgKzI2LDYgQEAKICAgIzp1c2UtbW9k dWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNl LW1vZHVsZSAoc3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAg Izp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQp CiAgICM6ZXhwb3J0IChndWl4LWltcG9ydC1nZW0pKQpAQCAtOTUsOSArOTQsNyBAQCBJbXBvcnQg YW5kIGNvbnZlcnQgdGhlIFJ1YnlHZW1zIHBhY2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5cbiIpKQog ICAgICAgICAgICAgICAgICAgIGAoZGVmaW5lLXB1YmxpYyAsKHN0cmluZy0+c3ltYm9sIG5hbWUp CiAgICAgICAgICAgICAgICAgICAgICAgLHBrZykpCiAgICAgICAgICAgICAgICAgICAoXyAjZikp Ci0gICAgICAgICAgICAgICAgKHJldmVyc2UKLSAgICAgICAgICAgICAgICAgKHN0cmVhbS0+bGlz dAotICAgICAgICAgICAgICAgICAgKGdlbS1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSAn cnVieWdlbXMpKSkpCisgICAgICAgICAgICAgICAgKGdlbS1yZWN1cnNpdmUtaW1wb3J0IHBhY2th Z2UtbmFtZSAncnVieWdlbXMpKQogICAgICAgICAgICAobGV0ICgoc2V4cCAoZ2VtLT5ndWl4LXBh Y2thZ2UgcGFja2FnZS1uYW1lKSkpCiAgICAgICAgICAgICAgKHVubGVzcyBzZXhwCiAgICAgICAg ICAgICAgICAobGVhdmUgKEdfICJmYWlsZWQgdG8gZG93bmxvYWQgbWV0YS1kYXRhIGZvciBwYWNr YWdlICd+YSd+JSIpCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvaW1wb3J0L2hhY2thZ2Uuc2Nt IGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9oYWNrYWdlLnNjbQppbmRleCBmNGFhYzYxMDc4Li43MTBl Nzg2YTc5IDEwMDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0L2hhY2thZ2Uuc2NtCisrKyBi L2d1aXgvc2NyaXB0cy9pbXBvcnQvaGFja2FnZS5zY20KQEAgLTI3LDcgKzI3LDYgQEAKICAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCiAg ICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3KQotICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00 MSkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBm b3JtYXQpCiAgICM6ZXhwb3J0IChndWl4LWltcG9ydC1oYWNrYWdlKSkKQEAgLTEzMCw5ICsxMjks NyBAQCB2ZXJzaW9uLlxuIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoZGVmaW5l LXB1YmxpYyAsKHN0cmluZy0+c3ltYm9sIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICxwa2cpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICNmKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgKHJldmVyc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IChzdHJlYW0tPmxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgaGFja2Fn ZS1yZWN1cnNpdmUtaW1wb3J0IGFyZ3VtZW50cykpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFwcGx5IGhhY2thZ2UtcmVjdXJzaXZlLWltcG9ydCBhcmd1bWVudHMpKQogICAgICAgICAg ICAgICAgICAgICAgOzsgU2luZ2xlIGltcG9ydAogICAgICAgICAgICAgICAgICAgICAgKGFwcGx5 IGhhY2thZ2UtPmd1aXgtcGFja2FnZSBhcmd1bWVudHMpKSkpCiAgICAgICAodW5sZXNzIHNleHAg KGVycm9yLWZuKSkKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvb3BhbS5zY20gYi9n dWl4L3NjcmlwdHMvaW1wb3J0L29wYW0uc2NtCmluZGV4IDJkMjQ5YTIxM2YuLjIwZGExNDM3ZmUg MTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvb3BhbS5zY20KKysrIGIvZ3VpeC9zY3Jp cHRzL2ltcG9ydC9vcGFtLnNjbQpAQCAtMjUsNyArMjUsNiBAQAogICAjOnVzZS1tb2R1bGUgKHNy Zmkgc3JmaS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9kdWxl IChzcmZpIHNyZmktMzcpCi0gICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVzZS1t b2R1bGUgKGljZS05IG1hdGNoKQogICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAgIzpl eHBvcnQgKGd1aXgtaW1wb3J0LW9wYW0pKQpAQCAtOTQsOSArOTMsNyBAQCBJbXBvcnQgYW5kIGNv bnZlcnQgdGhlIG9wYW0gcGFja2FnZSBmb3IgUEFDS0FHRS1OQU1FLlxuIikpCiAgICAgICAgICAg ICAgICAgICAgYChkZWZpbmUtcHVibGljICwoc3RyaW5nLT5zeW1ib2wgbmFtZSkKICAgICAgICAg ICAgICAgICAgICAgICAscGtnKSkKICAgICAgICAgICAgICAgICAgIChfICNmKSkKLSAgICAgICAg ICAgICAgICAocmV2ZXJzZQotICAgICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAgICAg ICAgICAgICAgICAob3BhbS1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSkpKSkKKyAgICAg ICAgICAgICAgICAob3BhbS1yZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSkpCiAgICAgICAg ICAgIDs7IFNpbmdsZSBpbXBvcnQKICAgICAgICAgICAgKGxldCAoKHNleHAgKG9wYW0tPmd1aXgt cGFja2FnZSBwYWNrYWdlLW5hbWUpKSkKICAgICAgICAgICAgICAodW5sZXNzIHNleHAKZGlmZiAt LWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvcHlwaS5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0 L3B5cGkuc2NtCmluZGV4IDdiZDgzODE4YmEuLjMzMTY3MTc0ZTIgMTAwNjQ0Ci0tLSBhL2d1aXgv c2NyaXB0cy9pbXBvcnQvcHlwaS5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9weXBpLnNj bQpAQCAtMjYsNyArMjYsNiBAQAogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQogICAjOnVz ZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMzcpCi0g ICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNo KQogICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAgIzpleHBvcnQgKGd1aXgtaW1wb3J0 LXB5cGkpKQpAQCAtOTUsOSArOTQsNyBAQCBJbXBvcnQgYW5kIGNvbnZlcnQgdGhlIFB5UEkgcGFj a2FnZSBmb3IgUEFDS0FHRS1OQU1FLlxuIikpCiAgICAgICAgICAgICAgICAgICAgYChkZWZpbmUt cHVibGljICwoc3RyaW5nLT5zeW1ib2wgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAscGtn KSkKICAgICAgICAgICAgICAgICAgIChfICNmKSkKLSAgICAgICAgICAgICAgICAocmV2ZXJzZQot ICAgICAgICAgICAgICAgICAoc3RyZWFtLT5saXN0Ci0gICAgICAgICAgICAgICAgICAocHlwaS1y ZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSkpKSkKKyAgICAgICAgICAgICAgICAocHlwaS1y ZWN1cnNpdmUtaW1wb3J0IHBhY2thZ2UtbmFtZSkpCiAgICAgICAgICAgIDs7IFNpbmdsZSBpbXBv cnQKICAgICAgICAgICAgKGxldCAoKHNleHAgKHB5cGktPmd1aXgtcGFja2FnZSBwYWNrYWdlLW5h bWUpKSkKICAgICAgICAgICAgICAodW5sZXNzIHNleHAKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0 cy9pbXBvcnQvc3RhY2thZ2Uuc2NtIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9zdGFja2FnZS5zY20K aW5kZXggYjRiMTI1ODFiZi4uZDc3MzI4ZGNiZiAxMDA2NDQKLS0tIGEvZ3VpeC9zY3JpcHRzL2lt cG9ydC9zdGFja2FnZS5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9zdGFja2FnZS5zY20K QEAgLTI3LDcgKzI3LDYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3KQotICAj OnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkK ICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCiAgICM6ZXhwb3J0IChndWl4LWltcG9ydC1z dGFja2FnZSkpCkBAIC0xMTAsOSArMTA5LDcgQEAgSW1wb3J0IGFuZCBjb252ZXJ0IHRoZSBMVFMg U3RhY2thZ2UgcGFja2FnZSBmb3IgUEFDS0FHRS1OQU1FLlxuIikpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGAoZGVmaW5lLXB1YmxpYyAsKHN0cmluZy0+c3ltYm9sIG5hbWUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwa2cpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChfICNmKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHJldmVyc2UKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzdHJlYW0tPmxpc3QKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYXBwbHkgc3RhY2thZ2UtcmVjdXJzaXZlLWltcG9ydCBhcmd1bWVudHMpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSBzdGFja2FnZS1yZWN1cnNpdmUtaW1wb3J0 IGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICAgICAgICA7OyBTaW5nbGUgaW1wb3J0CiAgICAg ICAgICAgICAgICAgICAgICAoYXBwbHkgc3RhY2thZ2UtPmd1aXgtcGFja2FnZSBhcmd1bWVudHMp KSkpCiAgICAgICAodW5sZXNzIHNleHAgKGVycm9yLWZuKSkKZGlmZiAtLWdpdCBhL2d1aXgvc2Ny aXB0cy9pbXBvcnQvdGV4bGl2ZS5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0L3RleGxpdmUuc2Nt CmluZGV4IDFjY2VlZTcwNTEuLmUzMWM1NmQwY2UgMTAwNjQ0Ci0tLSBhL2d1aXgvc2NyaXB0cy9p bXBvcnQvdGV4bGl2ZS5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC90ZXhsaXZlLnNjbQpA QCAtMjUsNyArMjUsNiBAQAogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQogICAjOnVzZS1t b2R1bGUgKHNyZmkgc3JmaS0xMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMzcpCi0gICM6 dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQog ICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKICAgIzpleHBvcnQgKGd1aXgtaW1wb3J0LXRl eGxpdmUpKQpkaWZmIC0tZ2l0IGEvdGVzdHMvY3JhdGUuc2NtIGIvdGVzdHMvY3JhdGUuc2NtCmlu ZGV4IGMxNDg2MmFkOWYuLmQ1NWM4MTRiY2YgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NyYXRlLnNjbQor KysgYi90ZXN0cy9jcmF0ZS5zY20KQEAgLTI4LDcgKzI4LDcgQEAKICAgIzp1c2UtbW9kdWxlIChp Y2UtOSBtYXRjaCkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktNjQpKQogCi0oZGVmaW5lIHRl c3QtY3JhdGUKKyhkZWZpbmUgdGVzdC1mb28tY3JhdGUKICAgInsKICAgXCJjcmF0ZVwiOiB7CiAg ICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCkBAIC01MCw3ICs1MCw3IEBACiAgIH0KIH0i KQogCi0oZGVmaW5lIHRlc3QtZGVwZW5kZW5jaWVzCisoZGVmaW5lIHRlc3QtZm9vLWRlcGVuZGVu Y2llcwogICAiewogICBcImRlcGVuZGVuY2llc1wiOiBbCiAgICAgIHsKQEAgLTYwLDYgKzYwLDE3 NiBAQAogICBdCiB9IikKIAorKGRlZmluZSB0ZXN0LXJvb3QtY3JhdGUKKyAgInsKKyAgXCJjcmF0 ZVwiOiB7CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCisgICAgXCJuYW1lXCI6IFwi cm9vdFwiLAorICAgIFwiZGVzY3JpcHRpb25cIjogXCJzdW1tYXJ5XCIsCisgICAgXCJob21lcGFn ZVwiOiBcImh0dHA6Ly9leGFtcGxlLmNvbVwiLAorICAgIFwicmVwb3NpdG9yeVwiOiBcImh0dHA6 Ly9leGFtcGxlLmNvbVwiLAorICAgIFwia2V5d29yZHNcIjogW1wiZHVtbXlcIiBcInRlc3RcIl0s CisgICAgXCJjYXRlZ29yaWVzXCI6IFtcInRlc3RcIl0KKyAgICBcImFjdHVhbF92ZXJzaW9uc1wi OiBbCisgICAgICB7IFwiaWRcIjogXCJmb29cIiwKKyAgICAgICAgXCJudW1cIjogXCIxLjAuMFwi LAorICAgICAgICBcImxpY2Vuc2VcIjogXCJNSVQgT1IgQXBhY2hlLTIuMFwiLAorICAgICAgICBc ImxpbmtzXCI6IHsKKyAgICAgICAgICBcImRlcGVuZGVuY2llc1wiOiBcIi9hcGkvdjEvY3JhdGVz L3Jvb3QvMS4wLjAvZGVwZW5kZW5jaWVzXCIKKyAgICAgICAgfQorICAgICAgfQorICAgIF0KKyAg fQorfSIpCisKKyhkZWZpbmUgdGVzdC1yb290LWRlcGVuZGVuY2llcworICAieworICBcImRlcGVu ZGVuY2llc1wiOiBbCisgICAgIHsKKyAgICAgICBcImNyYXRlX2lkXCI6IFwiaW50ZXJtZWRpYXRl LTFcIiwKKyAgICAgICBcImtpbmRcIjogXCJub3JtYWxcIiwKKyAgICAgfSwKKyAgICAgeworICAg ICAgIFwiY3JhdGVfaWRcIjogXCJpbnRlcm1lZGlhdGUtMlwiLAorICAgICAgIFwia2luZFwiOiBc Im5vcm1hbFwiLAorICAgICB9CisgICAgIHsKKyAgICAgICBcImNyYXRlX2lkXCI6IFwibGVhZi1h bGljZVwiLAorICAgICAgIFwia2luZFwiOiBcIm5vcm1hbFwiLAorICAgICB9LAorICAgICB7Cisg ICAgICAgXCJjcmF0ZV9pZFwiOiBcImxlYWYtYm9iXCIsCisgICAgICAgXCJraW5kXCI6IFwibm9y bWFsXCIsCisgICAgIH0sCisgIF0KK30iKQorCisoZGVmaW5lIHRlc3QtaW50ZXJtZWRpYXRlLTEt Y3JhdGUKKyAgInsKKyAgXCJjcmF0ZVwiOiB7CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4w XCIsCisgICAgXCJuYW1lXCI6IFwiaW50ZXJtZWRpYXRlLTFcIiwKKyAgICBcImRlc2NyaXB0aW9u XCI6IFwic3VtbWFyeVwiLAorICAgIFwiaG9tZXBhZ2VcIjogXCJodHRwOi8vZXhhbXBsZS5jb21c IiwKKyAgICBcInJlcG9zaXRvcnlcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcImtl eXdvcmRzXCI6IFtcImR1bW15XCIgXCJ0ZXN0XCJdLAorICAgIFwiY2F0ZWdvcmllc1wiOiBbXCJ0 ZXN0XCJdCisgICAgXCJhY3R1YWxfdmVyc2lvbnNcIjogWworICAgICAgeyBcImlkXCI6IFwiaW50 ZXJtZWRpYXRlLTFcIiwKKyAgICAgICAgXCJudW1cIjogXCIxLjAuMFwiLAorICAgICAgICBcImxp Y2Vuc2VcIjogXCJNSVQgT1IgQXBhY2hlLTIuMFwiLAorICAgICAgICBcImxpbmtzXCI6IHsKKyAg ICAgICAgICBcImRlcGVuZGVuY2llc1wiOiBcIi9hcGkvdjEvY3JhdGVzL2ludGVybWVkaWF0ZS0x LzEuMC4wL2RlcGVuZGVuY2llc1wiCisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdCisgIH0KK30i KQorCisoZGVmaW5lIHRlc3QtaW50ZXJtZWRpYXRlLTEtZGVwZW5kZW5jaWVzCisgICJ7CisgIFwi ZGVwZW5kZW5jaWVzXCI6IFsKKyAgICAgeworICAgICAgIFwiY3JhdGVfaWRcIjogXCJpbnRlcm1l ZGlhdGUtMlwiLAorICAgICAgIFwia2luZFwiOiBcIm5vcm1hbFwiLAorICAgICB9LAorICAgICB7 CisgICAgICAgXCJjcmF0ZV9pZFwiOiBcImxlYWYtYWxpY2VcIiwKKyAgICAgICBcImtpbmRcIjog XCJub3JtYWxcIiwKKyAgICAgfSwKKyAgICAgeworICAgICAgIFwiY3JhdGVfaWRcIjogXCJsZWFm LWJvYlwiLAorICAgICAgIFwia2luZFwiOiBcIm5vcm1hbFwiLAorICAgICB9CisgIF0KK30iKQor CisoZGVmaW5lIHRlc3QtaW50ZXJtZWRpYXRlLTItY3JhdGUKKyAgInsKKyAgXCJjcmF0ZVwiOiB7 CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCisgICAgXCJuYW1lXCI6IFwiaW50ZXJt ZWRpYXRlLTJcIiwKKyAgICBcImRlc2NyaXB0aW9uXCI6IFwic3VtbWFyeVwiLAorICAgIFwiaG9t ZXBhZ2VcIjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcInJlcG9zaXRvcnlcIjogXCJo dHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcImtleXdvcmRzXCI6IFtcImR1bW15XCIgXCJ0ZXN0 XCJdLAorICAgIFwiY2F0ZWdvcmllc1wiOiBbXCJ0ZXN0XCJdCisgICAgXCJhY3R1YWxfdmVyc2lv bnNcIjogWworICAgICAgeyBcImlkXCI6IFwiaW50ZXJtZWRpYXRlLTJcIiwKKyAgICAgICAgXCJu dW1cIjogXCIxLjAuMFwiLAorICAgICAgICBcImxpY2Vuc2VcIjogXCJNSVQgT1IgQXBhY2hlLTIu MFwiLAorICAgICAgICBcImxpbmtzXCI6IHsKKyAgICAgICAgICBcImRlcGVuZGVuY2llc1wiOiBc Ii9hcGkvdjEvY3JhdGVzL2ludGVybWVkaWF0ZS0yLzEuMC4wL2RlcGVuZGVuY2llc1wiCisgICAg ICAgIH0KKyAgICAgIH0KKyAgICBdCisgIH0KK30iKQorCisoZGVmaW5lIHRlc3QtaW50ZXJtZWRp YXRlLTItZGVwZW5kZW5jaWVzCisgICJ7CisgIFwiZGVwZW5kZW5jaWVzXCI6IFsKKyAgICAgewor ICAgICAgIFwiY3JhdGVfaWRcIjogXCJsZWFmLWJvYlwiLAorICAgICAgIFwia2luZFwiOiBcIm5v cm1hbFwiLAorICAgICB9LAorICBdCit9IikKKworKGRlZmluZSB0ZXN0LWxlYWYtYWxpY2UtY3Jh dGUKKyAgInsKKyAgXCJjcmF0ZVwiOiB7CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIs CisgICAgXCJuYW1lXCI6IFwibGVhZi1hbGljZVwiLAorICAgIFwiZGVzY3JpcHRpb25cIjogXCJz dW1tYXJ5XCIsCisgICAgXCJob21lcGFnZVwiOiBcImh0dHA6Ly9leGFtcGxlLmNvbVwiLAorICAg IFwicmVwb3NpdG9yeVwiOiBcImh0dHA6Ly9leGFtcGxlLmNvbVwiLAorICAgIFwia2V5d29yZHNc IjogW1wiZHVtbXlcIiBcInRlc3RcIl0sCisgICAgXCJjYXRlZ29yaWVzXCI6IFtcInRlc3RcIl0K KyAgICBcImFjdHVhbF92ZXJzaW9uc1wiOiBbCisgICAgICB7IFwiaWRcIjogXCJsZWFmLWFsaWNl XCIsCisgICAgICAgIFwibnVtXCI6IFwiMS4wLjBcIiwKKyAgICAgICAgXCJsaWNlbnNlXCI6IFwi TUlUIE9SIEFwYWNoZS0yLjBcIiwKKyAgICAgICAgXCJsaW5rc1wiOiB7CisgICAgICAgICAgXCJk ZXBlbmRlbmNpZXNcIjogXCIvYXBpL3YxL2NyYXRlcy9sZWFmLWFsaWNlLzEuMC4wL2RlcGVuZGVu Y2llc1wiCisgICAgICAgIH0KKyAgICAgIH0KKyAgICBdCisgIH0KK30iKQorCisoZGVmaW5lIHRl c3QtbGVhZi1hbGljZS1kZXBlbmRlbmNpZXMKKyAgInsKKyAgXCJkZXBlbmRlbmNpZXNcIjogW10K K30iKQorCisoZGVmaW5lIHRlc3QtbGVhZi1ib2ItY3JhdGUKKyAgInsKKyAgXCJjcmF0ZVwiOiB7 CisgICAgXCJtYXhfdmVyc2lvblwiOiBcIjEuMC4wXCIsCisgICAgXCJuYW1lXCI6IFwibGVhZi1i b2JcIiwKKyAgICBcImRlc2NyaXB0aW9uXCI6IFwic3VtbWFyeVwiLAorICAgIFwiaG9tZXBhZ2Vc IjogXCJodHRwOi8vZXhhbXBsZS5jb21cIiwKKyAgICBcInJlcG9zaXRvcnlcIjogXCJodHRwOi8v ZXhhbXBsZS5jb21cIiwKKyAgICBcImtleXdvcmRzXCI6IFtcImR1bW15XCIgXCJ0ZXN0XCJdLAor ICAgIFwiY2F0ZWdvcmllc1wiOiBbXCJ0ZXN0XCJdCisgICAgXCJhY3R1YWxfdmVyc2lvbnNcIjog WworICAgICAgeyBcImlkXCI6IFwibGVhZi1ib2JcIiwKKyAgICAgICAgXCJudW1cIjogXCIxLjAu MFwiLAorICAgICAgICBcImxpY2Vuc2VcIjogXCJNSVQgT1IgQXBhY2hlLTIuMFwiLAorICAgICAg ICBcImxpbmtzXCI6IHsKKyAgICAgICAgICBcImRlcGVuZGVuY2llc1wiOiBcIi9hcGkvdjEvY3Jh dGVzL2xlYWYtYm9iLzEuMC4wL2RlcGVuZGVuY2llc1wiCisgICAgICAgIH0KKyAgICAgIH0KKyAg ICBdCisgIH0KK30iKQorCisoZGVmaW5lIHRlc3QtbGVhZi1ib2ItZGVwZW5kZW5jaWVzCisgICJ7 CisgIFwiZGVwZW5kZW5jaWVzXCI6IFtdCit9IikKKwogKGRlZmluZSB0ZXN0LXNvdXJjZS1oYXNo CiAgICIiKQogCkBAIC03OSwxNCArMjQ5LDE0IEBACiAgICAgICAgICAobGFtYmRhICh1cmwgLiBy ZXN0KQogICAgICAgICAgICAobWF0Y2ggdXJsCiAgICAgICAgICAgICAgKCJodHRwczovL2NyYXRl cy5pby9hcGkvdjEvY3JhdGVzL2ZvbyIKLSAgICAgICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5n IHRlc3QtY3JhdGUpKQorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgdGVzdC1mb28t Y3JhdGUpKQogICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9m b28vMS4wLjAvZG93bmxvYWQiCiAgICAgICAgICAgICAgIChzZXQhIHRlc3Qtc291cmNlLWhhc2gK ICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+bml4LWJhc2UzMi1zdHJpbmcKICAgICAgICAg ICAgICAgICAgKHNoYTI1NiAoc3RyaW5nLT5ieXRldmVjdG9yICJlbXB0eSBmaWxlXG4iICJ1dGYt OCIpKSkpCiAgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyAiZW1wdHkgZmlsZVxuIikp CiAgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2Zvby8xLjAu MC9kZXBlbmRlbmNpZXMiCi0gICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWRl cGVuZGVuY2llcykpCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWZvby1k ZXBlbmRlbmNpZXMpKQogICAgICAgICAgICAgIChfIChlcnJvciAiVW5leHBlY3RlZCBVUkw6ICIg dXJsKSkpKSkKICAgICAobWF0Y2ggKGNyYXRlLT5ndWl4LXBhY2thZ2UgImZvbyIpCiAgICAgICAo KCdwYWNrYWdlCkBAIC0xMTEsNCArMjgxLDE2MCBAQAogICAgICAgKHgKICAgICAgICAocGsgJ2Zh aWwgeCAjZikpKSkpCiAKKyh0ZXN0LWFzc2VydCAiY2FyZ28tcmVjdXJzaXZlLWltcG9ydCIKKyAg OzsgUmVwbGFjZSBuZXR3b3JrIHJlc291cmNlcyB3aXRoIHNhbXBsZSBkYXRhLgorICAobW9jayAo KGd1aXggaHR0cC1jbGllbnQpIGh0dHAtZmV0Y2gKKyAgICAgICAgIChsYW1iZGEgKHVybCAuIHJl c3QpCisgICAgICAgICAgIChtYXRjaCB1cmwKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVz LmlvL2FwaS92MS9jcmF0ZXMvcm9vdCIKKyAgICAgICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5n IHRlc3Qtcm9vdC1jcmF0ZSkpCisgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkv djEvY3JhdGVzL3Jvb3QvMS4wLjAvZG93bmxvYWQiCisgICAgICAgICAgICAgIChzZXQhIHRlc3Qt c291cmNlLWhhc2gKKyAgICAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItPm5peC1iYXNlMzIt c3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAoc2hhMjU2IChzdHJpbmctPmJ5dGV2ZWN0b3Ig ImVtcHR5IGZpbGVcbiIgInV0Zi04IikpKSkKKyAgICAgICAgICAgICAgKG9wZW4taW5wdXQtc3Ry aW5nICJlbXB0eSBmaWxlXG4iKSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2Fw aS92MS9jcmF0ZXMvcm9vdC8xLjAuMC9kZXBlbmRlbmNpZXMiCisgICAgICAgICAgICAgIChvcGVu LWlucHV0LXN0cmluZyB0ZXN0LXJvb3QtZGVwZW5kZW5jaWVzKSkKKyAgICAgICAgICAgICAoImh0 dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0ZXMvaW50ZXJtZWRpYXRlLTEiCisgICAgICAgICAg ICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWludGVybWVkaWF0ZS0xLWNyYXRlKSkKKyAgICAg ICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0ZXMvaW50ZXJtZWRpYXRlLTEv MS4wLjAvZG93bmxvYWQiCisgICAgICAgICAgICAgIChzZXQhIHRlc3Qtc291cmNlLWhhc2gKKyAg ICAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItPm5peC1iYXNlMzItc3RyaW5nCisgICAgICAg ICAgICAgICAgICAgICAoc2hhMjU2IChzdHJpbmctPmJ5dGV2ZWN0b3IgImVtcHR5IGZpbGVcbiIg InV0Zi04IikpKSkKKyAgICAgICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5nICJlbXB0eSBmaWxl XG4iKSkKKyAgICAgICAgICAgICAoImh0dHBzOi8vY3JhdGVzLmlvL2FwaS92MS9jcmF0ZXMvaW50 ZXJtZWRpYXRlLTEvMS4wLjAvZGVwZW5kZW5jaWVzIgorICAgICAgICAgICAgICAob3Blbi1pbnB1 dC1zdHJpbmcgdGVzdC1pbnRlcm1lZGlhdGUtMS1kZXBlbmRlbmNpZXMpKQorICAgICAgICAgICAg ICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9pbnRlcm1lZGlhdGUtMiIKKyAgICAg ICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtaW50ZXJtZWRpYXRlLTItY3JhdGUpKQor ICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9pbnRlcm1lZGlh dGUtMi8xLjAuMC9kb3dubG9hZCIKKyAgICAgICAgICAgICAgKHNldCEgdGVzdC1zb3VyY2UtaGFz aAorICAgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+bml4LWJhc2UzMi1zdHJpbmcKKyAg ICAgICAgICAgICAgICAgICAgIChzaGEyNTYgKHN0cmluZy0+Ynl0ZXZlY3RvciAiZW1wdHkgZmls ZVxuIiAidXRmLTgiKSkpKQorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJpbmcgImVtcHR5 IGZpbGVcbiIpKQorICAgICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRl cy9pbnRlcm1lZGlhdGUtMi8xLjAuMC9kZXBlbmRlbmNpZXMiCisgICAgICAgICAgICAgIChvcGVu LWlucHV0LXN0cmluZyB0ZXN0LWludGVybWVkaWF0ZS0yLWRlcGVuZGVuY2llcykpCisgICAgICAg ICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYtYWxpY2UiCisgICAg ICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyB0ZXN0LWxlYWYtYWxpY2UtY3JhdGUpKQorICAg ICAgICAgICAgICgiaHR0cHM6Ly9jcmF0ZXMuaW8vYXBpL3YxL2NyYXRlcy9sZWFmLWFsaWNlLzEu MC4wL2Rvd25sb2FkIgorICAgICAgICAgICAgICAoc2V0ISB0ZXN0LXNvdXJjZS1oYXNoCisgICAg ICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZworICAgICAgICAg ICAgICAgICAgICAgKHNoYTI1NiAoc3RyaW5nLT5ieXRldmVjdG9yICJlbXB0eSBmaWxlXG4iICJ1 dGYtOCIpKSkpCisgICAgICAgICAgICAgIChvcGVuLWlucHV0LXN0cmluZyAiZW1wdHkgZmlsZVxu IikpCisgICAgICAgICAgICAgKCJodHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYt YWxpY2UvMS4wLjAvZGVwZW5kZW5jaWVzIgorICAgICAgICAgICAgICAob3Blbi1pbnB1dC1zdHJp bmcgdGVzdC1sZWFmLWFsaWNlLWRlcGVuZGVuY2llcykpCisgICAgICAgICAgICAgKCJodHRwczov L2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYtYm9iIgorICAgICAgICAgICAgICAob3Blbi1p bnB1dC1zdHJpbmcgdGVzdC1sZWFmLWJvYi1jcmF0ZSkpCisgICAgICAgICAgICAgKCJodHRwczov L2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYtYm9iLzEuMC4wL2Rvd25sb2FkIgorICAgICAg ICAgICAgICAoc2V0ISB0ZXN0LXNvdXJjZS1oYXNoCisgICAgICAgICAgICAgICAgICAgIChieXRl dmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgKHNoYTI1NiAo c3RyaW5nLT5ieXRldmVjdG9yICJlbXB0eSBmaWxlXG4iICJ1dGYtOCIpKSkpCisgICAgICAgICAg ICAgIChvcGVuLWlucHV0LXN0cmluZyAiZW1wdHkgZmlsZVxuIikpCisgICAgICAgICAgICAgKCJo dHRwczovL2NyYXRlcy5pby9hcGkvdjEvY3JhdGVzL2xlYWYtYm9iLzEuMC4wL2RlcGVuZGVuY2ll cyIKKyAgICAgICAgICAgICAgKG9wZW4taW5wdXQtc3RyaW5nIHRlc3QtbGVhZi1ib2ItZGVwZW5k ZW5jaWVzKSkKKyAgICAgICAgICAgICAoXyAoZXJyb3IgIlVuZXhwZWN0ZWQgVVJMOiAiIHVybCkp KSkpCisgICAgICAgIChtYXRjaCAoY3JhdGUtcmVjdXJzaXZlLWltcG9ydCAicm9vdCIpCisgICAg ICAgICAgOzsgcnVzdC1pbnRlcm1lZGlhdGUtMiBoYXMgbm8gZGVwZW5kZW5jeSBvbiB0aGUgcnVz dC1sZWFmLWFsaWNlIHBhY2thZ2UsIHNvIHRoaXMgaXMgYSB2YWxpZCBvcmRlcmluZworICAgICAg ICAgICgoKCdwYWNrYWdlCisgICAgICAgICAgICAgICgnbmFtZSAicnVzdC1sZWFmLWJvYiIpCisg ICAgICAgICAgICAgICgndmVyc2lvbiAoPyBzdHJpbmc/IHZlcikpCisgICAgICAgICAgICAgICgn c291cmNlCisgICAgICAgICAgICAgICAoJ29yaWdpbgorICAgICAgICAgICAgICAgICAoJ21ldGhv ZCAndXJsLWZldGNoKQorICAgICAgICAgICAgICAgICAoJ3VyaSAoJ2NyYXRlLXVyaSAibGVhZi1i b2IiICd2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICAgKCdmaWxlLW5hbWUKKyAgICAgICAgICAg ICAgICAgICgnc3RyaW5nLWFwcGVuZCAnbmFtZSAiLSIgJ3ZlcnNpb24gIi50YXIuZ3oiKSkKKyAg ICAgICAgICAgICAgICAgKCdzaGEyNTYKKyAgICAgICAgICAgICAgICAgICgnYmFzZTMyCisgICAg ICAgICAgICAgICAgICAgKD8gc3RyaW5nPyBoYXNoKSkpKSkKKyAgICAgICAgICAgICAgKCdidWls ZC1zeXN0ZW0gJ2NhcmdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgICAgICAgICAgKCdob21lLXBhZ2Ug Imh0dHA6Ly9leGFtcGxlLmNvbSIpCisgICAgICAgICAgICAgICgnc3lub3BzaXMgInN1bW1hcnki KQorICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uICJzdW1tYXJ5IikKKyAgICAgICAgICAgICAg KCdsaWNlbnNlICgnbGlzdCAnbGljZW5zZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkKKyAgICAg ICAgICAgICgncGFja2FnZQorICAgICAgICAgICAgICAoJ25hbWUgInJ1c3QtaW50ZXJtZWRpYXRl LTIiKQorICAgICAgICAgICAgICAoJ3ZlcnNpb24gKD8gc3RyaW5nPyB2ZXIpKQorICAgICAgICAg ICAgICAoJ3NvdXJjZQorICAgICAgICAgICAgICAgKCdvcmlnaW4KKyAgICAgICAgICAgICAgICAg KCdtZXRob2QgJ3VybC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgKCd1cmkgKCdjcmF0ZS11cmkg ImludGVybWVkaWF0ZS0yIiAndmVyc2lvbikpCisgICAgICAgICAgICAgICAgICgnZmlsZS1uYW1l CisgICAgICAgICAgICAgICAgICAoJ3N0cmluZy1hcHBlbmQgJ25hbWUgIi0iICd2ZXJzaW9uICIu dGFyLmd6IikpCisgICAgICAgICAgICAgICAgICgnc2hhMjU2CisgICAgICAgICAgICAgICAgICAo J2Jhc2UzMgorICAgICAgICAgICAgICAgICAgICg/IHN0cmluZz8gaGFzaCkpKSkpCisgICAgICAg ICAgICAgICgnYnVpbGQtc3lzdGVtICdjYXJnby1idWlsZC1zeXN0ZW0pCisgICAgICAgICAgICAg ICgnYXJndW1lbnRzCisgICAgICAgICAgICAgICAoJ3F1YXNpcXVvdGUKKyAgICAgICAgICAgICAg ICAoJyM6Y2FyZ28taW5wdXRzICgoInJ1c3QtbGVhZi1ib2IiICgndW5xdW90ZSBydXN0LWxlYWYt Ym9iKSkpKSkpCisgICAgICAgICAgICAgICgnaG9tZS1wYWdlICJodHRwOi8vZXhhbXBsZS5jb20i KQorICAgICAgICAgICAgICAoJ3N5bm9wc2lzICJzdW1tYXJ5IikKKyAgICAgICAgICAgICAgKCdk ZXNjcmlwdGlvbiAic3VtbWFyeSIpCisgICAgICAgICAgICAgICgnbGljZW5zZSAoJ2xpc3QgJ2xp Y2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6YXNsMi4wKSkpCisgICAgICAgICAgICAoJ3BhY2thZ2UKKyAg ICAgICAgICAgICAgKCduYW1lICJydXN0LWxlYWYtYWxpY2UiKQorICAgICAgICAgICAgICAoJ3Zl cnNpb24gKD8gc3RyaW5nPyB2ZXIpKQorICAgICAgICAgICAgICAoJ3NvdXJjZQorICAgICAgICAg ICAgICAgKCdvcmlnaW4KKyAgICAgICAgICAgICAgICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKKyAg ICAgICAgICAgICAgICAgKCd1cmkgKCdjcmF0ZS11cmkgImxlYWYtYWxpY2UiICd2ZXJzaW9uKSkK KyAgICAgICAgICAgICAgICAgKCdmaWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICgnc3RyaW5n LWFwcGVuZCAnbmFtZSAiLSIgJ3ZlcnNpb24gIi50YXIuZ3oiKSkKKyAgICAgICAgICAgICAgICAg KCdzaGEyNTYKKyAgICAgICAgICAgICAgICAgICgnYmFzZTMyCisgICAgICAgICAgICAgICAgICAg KD8gc3RyaW5nPyBoYXNoKSkpKSkKKyAgICAgICAgICAgICAgKCdidWlsZC1zeXN0ZW0gJ2Nhcmdv LWJ1aWxkLXN5c3RlbSkKKyAgICAgICAgICAgICAgKCdob21lLXBhZ2UgImh0dHA6Ly9leGFtcGxl LmNvbSIpCisgICAgICAgICAgICAgICgnc3lub3BzaXMgInN1bW1hcnkiKQorICAgICAgICAgICAg ICAoJ2Rlc2NyaXB0aW9uICJzdW1tYXJ5IikKKyAgICAgICAgICAgICAgKCdsaWNlbnNlICgnbGlz dCAnbGljZW5zZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkKKyAgICAgICAgICAgICgncGFja2Fn ZQorICAgICAgICAgICAgICAoJ25hbWUgInJ1c3QtaW50ZXJtZWRpYXRlLTEiKQorICAgICAgICAg ICAgICAoJ3ZlcnNpb24gKD8gc3RyaW5nPyB2ZXIpKQorICAgICAgICAgICAgICAoJ3NvdXJjZQor ICAgICAgICAgICAgICAgKCdvcmlnaW4KKyAgICAgICAgICAgICAgICAgKCdtZXRob2QgJ3VybC1m ZXRjaCkKKyAgICAgICAgICAgICAgICAgKCd1cmkgKCdjcmF0ZS11cmkgImludGVybWVkaWF0ZS0x IiAndmVyc2lvbikpCisgICAgICAgICAgICAgICAgICgnZmlsZS1uYW1lCisgICAgICAgICAgICAg ICAgICAoJ3N0cmluZy1hcHBlbmQgJ25hbWUgIi0iICd2ZXJzaW9uICIudGFyLmd6IikpCisgICAg ICAgICAgICAgICAgICgnc2hhMjU2CisgICAgICAgICAgICAgICAgICAoJ2Jhc2UzMgorICAgICAg ICAgICAgICAgICAgICg/IHN0cmluZz8gaGFzaCkpKSkpCisgICAgICAgICAgICAgICgnYnVpbGQt c3lzdGVtICdjYXJnby1idWlsZC1zeXN0ZW0pCisgICAgICAgICAgICAgICgnYXJndW1lbnRzCisg ICAgICAgICAgICAgICAoJ3F1YXNpcXVvdGUKKyAgICAgICAgICAgICAgICAoJyM6Y2FyZ28taW5w dXRzICgoInJ1c3QtaW50ZXJtZWRpYXRlLTIiICgndW5xdW90ZSBydXN0LWludGVybWVkaWF0ZS0y KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInJ1c3QtbGVhZi1hbGljZSIg KCd1bnF1b3RlIHJ1c3QtbGVhZi1hbGljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCJydXN0LWxlYWYtYm9iIiAoJ3VucXVvdGUgcnVzdC1sZWFmLWJvYikpKSkpKQorICAg ICAgICAgICAgICAoJ2hvbWUtcGFnZSAiaHR0cDovL2V4YW1wbGUuY29tIikKKyAgICAgICAgICAg ICAgKCdzeW5vcHNpcyAic3VtbWFyeSIpCisgICAgICAgICAgICAgICgnZGVzY3JpcHRpb24gInN1 bW1hcnkiKQorICAgICAgICAgICAgICAoJ2xpY2Vuc2UgKCdsaXN0ICdsaWNlbnNlOmV4cGF0ICds aWNlbnNlOmFzbDIuMCkpKQorICAgICAgICAgICAgKCdwYWNrYWdlCisgICAgICAgICAgICAgICgn bmFtZSAicnVzdC1yb290IikKKyAgICAgICAgICAgICAgKCd2ZXJzaW9uICg/IHN0cmluZz8gdmVy KSkKKyAgICAgICAgICAgICAgKCdzb3VyY2UKKyAgICAgICAgICAgICAgICgnb3JpZ2luCisgICAg ICAgICAgICAgICAgICgnbWV0aG9kICd1cmwtZmV0Y2gpCisgICAgICAgICAgICAgICAgICgndXJp ICgnY3JhdGUtdXJpICJyb290IiAndmVyc2lvbikpCisgICAgICAgICAgICAgICAgICgnZmlsZS1u YW1lCisgICAgICAgICAgICAgICAgICAoJ3N0cmluZy1hcHBlbmQgJ25hbWUgIi0iICd2ZXJzaW9u ICIudGFyLmd6IikpCisgICAgICAgICAgICAgICAgICgnc2hhMjU2CisgICAgICAgICAgICAgICAg ICAoJ2Jhc2UzMgorICAgICAgICAgICAgICAgICAgICg/IHN0cmluZz8gaGFzaCkpKSkpCisgICAg ICAgICAgICAgICgnYnVpbGQtc3lzdGVtICdjYXJnby1idWlsZC1zeXN0ZW0pCisgICAgICAgICAg ICAgICgnYXJndW1lbnRzCisgICAgICAgICAgICAgICAoJ3F1YXNpcXVvdGUKKyAgICAgICAgICAg ICAgICAoJyM6Y2FyZ28taW5wdXRzICgoInJ1c3QtaW50ZXJtZWRpYXRlLTEiICgndW5xdW90ZSBy dXN0LWludGVybWVkaWF0ZS0xKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo InJ1c3QtaW50ZXJtZWRpYXRlLTIiICgndW5xdW90ZSBydXN0LWludGVybWVkaWF0ZS0yKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInJ1c3QtbGVhZi1hbGljZSIgKCd1bnF1 b3RlIHJ1c3QtbGVhZi1hbGljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCJydXN0LWxlYWYtYm9iIiAoJ3VucXVvdGUgcnVzdC1sZWFmLWJvYikpKSkpKQorICAgICAgICAg ICAgICAoJ2hvbWUtcGFnZSAiaHR0cDovL2V4YW1wbGUuY29tIikKKyAgICAgICAgICAgICAgKCdz eW5vcHNpcyAic3VtbWFyeSIpCisgICAgICAgICAgICAgICgnZGVzY3JpcHRpb24gInN1bW1hcnki KQorICAgICAgICAgICAgICAoJ2xpY2Vuc2UgKCdsaXN0ICdsaWNlbnNlOmV4cGF0ICdsaWNlbnNl OmFzbDIuMCkpKSkKKyAgICAgICAgICAgI3QpCisgICAgICAgICAgKHgKKyAgICAgICAgICAgKHBr ICdmYWlsIHggI2YpKSkpKQorCiAodGVzdC1lbmQgImNyYXRlIikKZGlmZiAtLWdpdCBhL3Rlc3Rz L2dlbS5zY20gYi90ZXN0cy9nZW0uc2NtCmluZGV4IGExMmVkYjI5NGMuLjAxYWU4YTQ0NzAgMTAw NjQ0Ci0tLSBhL3Rlc3RzL2dlbS5zY20KKysrIGIvdGVzdHMvZ2VtLnNjbQpAQCAtMjQsNyArMjQs NiBAQAogICAjOnVzZS1tb2R1bGUgKGdjcnlwdCBoYXNoKQogICAjOnVzZS1tb2R1bGUgKGd1aXgg dGVzdHMpCiAgICM6dXNlLW1vZHVsZSAoKGd1aXggYnVpbGQgdXRpbHMpICM6c2VsZWN0IChkZWxl dGUtZmlsZS1yZWN1cnNpdmVseSkpCi0gICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQxKQogICAj OnVzZS1tb2R1bGUgKHNyZmkgc3JmaS02NCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkp CiAKQEAgLTEyMSwyNyArMTIwLDggQEAKICAgICAgICAgICAgICAgKHZhbHVlcyAob3Blbi1pbnB1 dC1zdHJpbmcgdGVzdC1idW5kbGVyLWpzb24pCiAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu Zy1sZW5ndGggdGVzdC1idW5kbGVyLWpzb24pKSkKICAgICAgICAgICAgICAoXyAoZXJyb3IgIlVu ZXhwZWN0ZWQgVVJMOiAiIHVybCkpKSkpCi0gICAgICAgIChtYXRjaCAoc3RyZWFtLT5saXN0IChn ZW0tcmVjdXJzaXZlLWltcG9ydCAiZm9vIikpCisgICAgICAgIChtYXRjaCAoZ2VtLXJlY3Vyc2l2 ZS1pbXBvcnQgImZvbyIpCiAgICAgICAgICAgKCgoJ3BhY2thZ2UKLSAgICAgICAgICAgICAgKCdu YW1lICJydWJ5LWZvbyIpCi0gICAgICAgICAgICAgICgndmVyc2lvbiAiMS4wLjAiKQotICAgICAg ICAgICAgICAoJ3NvdXJjZQotICAgICAgICAgICAgICAgKCdvcmlnaW4KLSAgICAgICAgICAgICAg ICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKLSAgICAgICAgICAgICAgICAgKCd1cmkgKCdydWJ5Z2Vt cy11cmkgImZvbyIgJ3ZlcnNpb24pKQotICAgICAgICAgICAgICAgICAoJ3NoYTI1NgotICAgICAg ICAgICAgICAgICAgKCdiYXNlMzIKLSAgICAgICAgICAgICAgICAgICAiMWEyNzBtbGFqaHJtcHFi aHhjcWpxeXBudmdycTRwZ2l4cHYzdzlnd3Axd3JyYXBud3J6ayIpKSkpCi0gICAgICAgICAgICAg ICgnYnVpbGQtc3lzdGVtICdydWJ5LWJ1aWxkLXN5c3RlbSkKLSAgICAgICAgICAgICAgKCdwcm9w YWdhdGVkLWlucHV0cwotICAgICAgICAgICAgICAgKCdxdWFzaXF1b3RlCi0gICAgICAgICAgICAg ICAgKCgiYnVuZGxlciIgKCd1bnF1b3RlICdidW5kbGVyKSkKLSAgICAgICAgICAgICAgICAgKCJy dWJ5LWJhciIgKCd1bnF1b3RlICdydWJ5LWJhcikpKSkpCi0gICAgICAgICAgICAgICgnc3lub3Bz aXMgIkEgY29vbCBnZW0iKQotICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uICJUaGlzIHBhY2th Z2UgcHJvdmlkZXMgYSBjb29sIGdlbSIpCi0gICAgICAgICAgICAgICgnaG9tZS1wYWdlICJodHRw czovL2V4YW1wbGUuY29tIikKLSAgICAgICAgICAgICAgKCdsaWNlbnNlICgnbGlzdCAnbGljZW5z ZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkKLSAgICAgICAgICAgICgncGFja2FnZQogICAgICAg ICAgICAgICAoJ25hbWUgInJ1YnktYnVuZGxlciIpCiAgICAgICAgICAgICAgICgndmVyc2lvbiAi MS4xNC4yIikKICAgICAgICAgICAgICAgKCdzb3VyY2UKQEAgLTE3Myw2ICsxNTMsMjUgQEAKICAg ICAgICAgICAgICAgKCdzeW5vcHNpcyAiQW5vdGhlciBjb29sIGdlbSIpCiAgICAgICAgICAgICAg ICgnZGVzY3JpcHRpb24gIkFub3RoZXIgY29vbCBnZW0iKQogICAgICAgICAgICAgICAoJ2hvbWUt cGFnZSAiaHR0cHM6Ly9leGFtcGxlLmNvbSIpCisgICAgICAgICAgICAgICgnbGljZW5zZSAoJ2xp c3QgJ2xpY2Vuc2U6ZXhwYXQgJ2xpY2Vuc2U6YXNsMi4wKSkpCisgICAgICAgICAgICAoJ3BhY2th Z2UKKyAgICAgICAgICAgICAgKCduYW1lICJydWJ5LWZvbyIpCisgICAgICAgICAgICAgICgndmVy c2lvbiAiMS4wLjAiKQorICAgICAgICAgICAgICAoJ3NvdXJjZQorICAgICAgICAgICAgICAgKCdv cmlnaW4KKyAgICAgICAgICAgICAgICAgKCdtZXRob2QgJ3VybC1mZXRjaCkKKyAgICAgICAgICAg ICAgICAgKCd1cmkgKCdydWJ5Z2Vtcy11cmkgImZvbyIgJ3ZlcnNpb24pKQorICAgICAgICAgICAg ICAgICAoJ3NoYTI1NgorICAgICAgICAgICAgICAgICAgKCdiYXNlMzIKKyAgICAgICAgICAgICAg ICAgICAiMWEyNzBtbGFqaHJtcHFiaHhjcWpxeXBudmdycTRwZ2l4cHYzdzlnd3Axd3JyYXBud3J6 ayIpKSkpCisgICAgICAgICAgICAgICgnYnVpbGQtc3lzdGVtICdydWJ5LWJ1aWxkLXN5c3RlbSkK KyAgICAgICAgICAgICAgKCdwcm9wYWdhdGVkLWlucHV0cworICAgICAgICAgICAgICAgKCdxdWFz aXF1b3RlCisgICAgICAgICAgICAgICAgKCgiYnVuZGxlciIgKCd1bnF1b3RlICdidW5kbGVyKSkK KyAgICAgICAgICAgICAgICAgKCJydWJ5LWJhciIgKCd1bnF1b3RlICdydWJ5LWJhcikpKSkpCisg ICAgICAgICAgICAgICgnc3lub3BzaXMgIkEgY29vbCBnZW0iKQorICAgICAgICAgICAgICAoJ2Rl c2NyaXB0aW9uICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBjb29sIGdlbSIpCisgICAgICAgICAg ICAgICgnaG9tZS1wYWdlICJodHRwczovL2V4YW1wbGUuY29tIikKICAgICAgICAgICAgICAgKCds aWNlbnNlICgnbGlzdCAnbGljZW5zZTpleHBhdCAnbGljZW5zZTphc2wyLjApKSkpCiAgICAgICAg ICAgICN0KQogICAgICAgICAgICh4Ci0tIAoyLjI0LjAKCg== --000000000000887cea0598d4c2f4-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 08 12:09:30 2019 Received: (at 37730) by debbugs.gnu.org; 8 Dec 2019 17:09:30 +0000 Received: from localhost ([127.0.0.1]:52195 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ie03m-0003Zi-2o for submit@debbugs.gnu.org; Sun, 08 Dec 2019 12:09:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:57970) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ie03k-0003ZV-9Q for 37730@debbugs.gnu.org; Sun, 08 Dec 2019 12:09:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:47045) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ie03c-000606-RC; Sun, 08 Dec 2019 12:09:22 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=60518 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ie03c-00048j-Ei; Sun, 08 Dec 2019 12:09:20 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Brian Leung Subject: Re: [bug#37730] [PATCH] Topologically sort recursively-imported packages References: <87lfti5rip.fsf@gnu.org> Date: Sun, 08 Dec 2019 18:09:14 +0100 In-Reply-To: (Brian Leung's message of "Tue, 3 Dec 2019 15:06:51 -0800") Message-ID: <87immqpww5.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37730 Cc: Ricardo Wurmus , 37730@debbugs.gnu.org, Efraim Flashner X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi Brian, Thanks for the updated patch! Brian Leung skribis: > From 915274d493116d063bfe2a953a9e855b8312711e Mon Sep 17 00:00:00 2001 > From: Brian Leung > Date: Fri, 11 Oct 2019 23:18:03 -0700 > Subject: [PATCH] guix: utils: Topologically sort recursively imported rec= ipes. [...] > + (define graph vlist-null) > + (define recipe-map vlist-null) > + (define stack (list package-name)) > + (define accum '()) > + > + (define (topo-sort stack graph recipe-map accum) > + (if (null? stack) > + (reverse accum) > + (let ((head-package (car stack))) > + (match (vhash-assoc head-package graph) > + ((key . '()) > + (let ((next-stack (cdr stack)) > + (next-accum (cons (cdr (vhash-assoc head-package reci= pe-map)) > + accum))) > + (topo-sort next-stack > + graph > + recipe-map > + next-accum))) > + ((key . (dep . rest)) > + (define (handle? dep) > + (and > + (not (equal? dep head-package)) > + (not (vhash-assoc dep recipe-map)) > + (not (exists? dep)))) > + (let* ((next-stack (if (handle? dep) > + (cons dep stack) > + stack)) > + (next-graph (vhash-cons key rest graph))) > + (topo-sort next-stack > + next-graph > + recipe-map > + accum))) > + (#f > + (receive (package-recipe . dependencies) (repo->guix-packag= e head-package repo) > + (let ((next-graph (vhash-cons head-package > + ;; dependencies has shape '= (("package-a" "package-b" ...)) > + (car dependencies) > + graph)) > + (next-recipe-map (vhash-cons head-package > + (or > + package-recipe > + '()) > + recipe-map))) > + (topo-sort stack > + next-graph > + next-recipe-map > + accum)))))))) > + > + (topo-sort stack graph recipe-map accum)) I found this to be relatively complex (and part of this complexity was already there before the patch) and quite different from the other graph-walking procedures we have in different places, which got me thinking why that is. After a bit of researching and trying, I found that the attached patch expresses the same thing, including topological sorting, in a hopefully clearer way, or at least more consistent with other graph-walking procedures in the code. WDYT? If that=E2=80=99s fine with you, I=E2=80=99d be willing to apply this patch= , and then apply other bits of your patch (the tests and stream removal) on top of it. How does that sound? Returning a topologically-sorted set of packages means that nothing is output until we=E2=80=99ve walked the whole dependency graph, so we indeed = have to get rid of streams. I guess it=E2=80=99s a tradeoff. Ricardo, how do y= ou feel about this change? Thanks! Ludo=E2=80=99. --=-=-= Content-Type: text/x-patch Content-Disposition: inline diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 4694b6e7ef..bdce902d87 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -34,12 +34,14 @@ #:use-module (guix gexp) #:use-module (guix store) #:use-module (guix download) + #:use-module (guix sets) #:use-module (gnu packages) #:use-module (ice-9 match) #:use-module (ice-9 rdelim) #:use-module (ice-9 receive) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-41) @@ -377,40 +379,51 @@ separated by PRED." (chr (char-downcase chr))) name))) +(define (topological-sort nodes + node-dependencies + node-name) + "Perform a breadth-first traversal of the graph rooted at NODES, a list of +nodes, and return the list of nodes sorted in topological order. Call +NODE-DEPENDENCIES to obtain the dependencies of a node, and NODE-NAME to +obtain a node's uniquely identifying \"key\"." + (let loop ((nodes nodes) + (result '()) + (visited (set))) + (match nodes + (() + (reverse result)) + ((head . tail) + (if (set-contains? visited (node-name head)) + (loop tail result visited) + (let ((dependencies (node-dependencies head))) + (loop (append dependencies tail) + (cons head result) + (set-insert (node-name head) visited)))))))) + (define* (recursive-import package-name repo #:key repo->guix-package guix-name #:allow-other-keys) "Generate a stream of package expressions for PACKAGE-NAME and all its dependencies." - (define (exists? dependency) - (not (null? (find-packages-by-name (guix-name dependency))))) - (define initial-state (list #f (list package-name) (list))) - (define (step state) - (match state - ((prev (next . rest) done) - (define (handle? dep) - (and - (not (equal? dep next)) - (not (member dep done)) - (not (exists? dep)))) - (receive (package . dependencies) (repo->guix-package next repo) - (list - (if package package '()) ;; default #f on failure would interrupt - (if package - (lset-union equal? rest (filter handle? (car dependencies))) - rest) - (cons next done)))) - ((prev '() done) - (list #f '() done)))) + (define-record-type + (make-node name package dependencies) + node? + (name node-name) + (package node-package) + (dependencies node-dependencies)) - ;; Generate a lazy stream of package expressions for all unknown - ;; dependencies in the graph. - (stream-unfold - ;; map: produce a stream element - (match-lambda ((latest queue done) latest)) - ;; predicate - (match-lambda ((latest queue done) latest)) - ;; generator: update the queue - step - ;; initial state - (step initial-state))) + (define (exists? name) + (not (null? (find-packages-by-name (guix-name name))))) + + (define (lookup-node name) + (receive (package dependencies) (repo->guix-package name repo) + (make-node name package dependencies))) + + (list->stream ;TODO: remove streams + (map node-package + (topological-sort (list (lookup-node package-name)) + (lambda (node) + (map lookup-node + (remove exists? + (node-dependencies node)))) + node-name)))) --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 08 16:10:16 2019 Received: (at 37730) by debbugs.gnu.org; 8 Dec 2019 21:10:16 +0000 Received: from localhost ([127.0.0.1]:52306 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ie3ol-0003mG-Ng for submit@debbugs.gnu.org; Sun, 08 Dec 2019 16:10:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36860) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ie3ok-0003lg-7a for 37730@debbugs.gnu.org; Sun, 08 Dec 2019 16:10:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:49757) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ie3of-0000ml-42 for 37730@debbugs.gnu.org; Sun, 08 Dec 2019 16:10:09 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=60710 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ie3oe-0000tr-IU for 37730@debbugs.gnu.org; Sun, 08 Dec 2019 16:10:08 -0500 Resent-To: 37730@debbugs.gnu.org Resent-From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Resent-Date: Sun, 08 Dec 2019 22:10:04 +0100 Resent-Message-ID: <87a782o76b.fsf@gnu.org> Received: from solo.fdn.fr ([unix socket]) by solo (Cyrus 2.5.10-Debian-2.5.10-3.2) with LMTPA; Sun, 08 Dec 2019 19:32:05 +0100 X-Sieve: CMU Sieve 2.4 Received: by solo.fdn.fr (Postfix) id 06FB1D0BEF; Sun, 8 Dec 2019 19:32:05 +0100 (CET) Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by solo.fdn.fr (Postfix) with ESMTPS id BE20FD0A00 for ; Sun, 8 Dec 2019 19:32:04 +0100 (CET) Received: from fencepost.gnu.org ([2001:470:142:3::e]:47714) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ie1Lf-0002rC-KN for ludovic.courtes@fdn.fr; Sun, 08 Dec 2019 13:32:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44193) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ie1Le-0004E2-KX for ludo@gnu.org; Sun, 08 Dec 2019 13:32:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ie1Lc-0002cy-Pc for ludo@gnu.org; Sun, 08 Dec 2019 13:32:02 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from mail-qv1-xf34.google.com ([2607:f8b0:4864:20::f34]:46687) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ie1Lc-0002YI-JG for ludo@gnu.org; Sun, 08 Dec 2019 13:32:00 -0500 Received: by mail-qv1-xf34.google.com with SMTP id t9so1801838qvh.13 for ; Sun, 08 Dec 2019 10:32:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=cHsPS5t0UZLcO+/PdhvhWQwfF73V+R+nOc4eqEf5ieQ=; b=TUdXpZKhIwmLsAk2fVHechG7/GkXDuscpCyKFBhq+toafpUj6B1WcUPoAtzOIJrvEs +oihKSTnaoB8lFpGAsWS7GAovwY+XTwBnCCUIimaGRLu0EoXwi1PvcWHDUPDGGw8TcDB 77/hIf/NncQhEFfnJ2nUXmZD9DSHDFA+AbnGetvR6ie/Nsbx40JARO3QkN81MqOzbQi6 IcaYcAiSUXExyyUhyxuOm9T/MnFd3IPQIbYpnCmyVQm/oBZHOMEcePGwrIXiDLNFP25W yVnevooGZq0zOPizL2egdYMw9ythUYBpYlgsoplOjt/DWxonjcO6KpEUAs6ILHEBKSXN RT7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=cHsPS5t0UZLcO+/PdhvhWQwfF73V+R+nOc4eqEf5ieQ=; b=Hewl78y9E68vn3C/1widLD9RbSBc5uyqRciF2y0lohPFKS9XtOIz/n6r02XrnxXplk Ns+InTM8+NQEWD8HC1qPeEptgTz+43S/24xuuhEWg5rFpvyW8Txo93tXPPinIFiwhmbM 7uPa0ZMp6USKslYMFVBvTX/EQs8HnpkQ+WGE14Tdd/8R1H8Stz56oZqygTZBb8tpbd/1 tFdthhLWMxc6OyLPlWn6K6caUaZ7W2R1pARo+d8+gdAfwZFzeNUUmlpIfTx/VVGJan6k AiTlgtAyBNMN44/OpjfxLsjd4oU2WpvW9XXLMrTxwIUqpn2Gip+IZle2OBhusSJj2yrd MDgQ== X-Gm-Message-State: APjAAAWUKdkX+/s9+xNNOIhYXonqkHL9+0BacnFpBPgm/mhkOew/6uP1 SXwArDUZciMnMJHipRHmbXB5RAWXJSl8uocgOoKiuC/x X-Google-Smtp-Source: APXvYqwfU2disE0saVAN24QgqWDZb5a7npquN2UROG1v+EipePn3Ua0dsHU+7bSbmgWKabXB6IVX/ocByGpM104xl1c= X-Received: by 2002:a0c:b034:: with SMTP id k49mr21723281qvc.144.1575829919324; Sun, 08 Dec 2019 10:31:59 -0800 (PST) MIME-Version: 1.0 References: <87lfti5rip.fsf@gnu.org> <87immqpww5.fsf@gnu.org> In-Reply-To: <87immqpww5.fsf@gnu.org> From: Brian Leung Date: Sun, 8 Dec 2019 10:31:23 -0800 Message-ID: Subject: Re: [bug#37730] [PATCH] Topologically sort recursively-imported packages To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Content-Type: multipart/alternative; boundary="0000000000009160af0599357efc" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::f34 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: 37730 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) --0000000000009160af0599357efc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Ludo, > If that=E2=80=99s fine with you, I=E2=80=99d be willing to apply this pat= ch, and then > apply other bits of your patch (the tests and stream removal) on top of > it. How does that sound? Sure, your patch seems clearer to me. Thanks, Brian On Sun, Dec 8, 2019 at 9:09 AM Ludovic Court=C3=A8s wrote: > Hi Brian, > > Thanks for the updated patch! > > Brian Leung skribis: > > > From 915274d493116d063bfe2a953a9e855b8312711e Mon Sep 17 00:00:00 2001 > > From: Brian Leung > > Date: Fri, 11 Oct 2019 23:18:03 -0700 > > Subject: [PATCH] guix: utils: Topologically sort recursively imported > recipes. > > [...] > > > + (define graph vlist-null) > > + (define recipe-map vlist-null) > > + (define stack (list package-name)) > > + (define accum '()) > > + > > + (define (topo-sort stack graph recipe-map accum) > > + (if (null? stack) > > + (reverse accum) > > + (let ((head-package (car stack))) > > + (match (vhash-assoc head-package graph) > > + ((key . '()) > > + (let ((next-stack (cdr stack)) > > + (next-accum (cons (cdr (vhash-assoc head-package > recipe-map)) > > + accum))) > > + (topo-sort next-stack > > + graph > > + recipe-map > > + next-accum))) > > + ((key . (dep . rest)) > > + (define (handle? dep) > > + (and > > + (not (equal? dep head-package)) > > + (not (vhash-assoc dep recipe-map)) > > + (not (exists? dep)))) > > + (let* ((next-stack (if (handle? dep) > > + (cons dep stack) > > + stack)) > > + (next-graph (vhash-cons key rest graph))) > > + (topo-sort next-stack > > + next-graph > > + recipe-map > > + accum))) > > + (#f > > + (receive (package-recipe . dependencies) > (repo->guix-package head-package repo) > > + (let ((next-graph (vhash-cons head-package > > + ;; dependencies has shape > '(("package-a" "package-b" ...)) > > + (car dependencies) > > + graph)) > > + (next-recipe-map (vhash-cons head-package > > + (or > > + package-recipe > > + '()) > > + recipe-map))) > > + (topo-sort stack > > + next-graph > > + next-recipe-map > > + accum)))))))) > > + > > + (topo-sort stack graph recipe-map accum)) > > I found this to be relatively complex (and part of this complexity was > already there before the patch) and quite different from the other > graph-walking procedures we have in different places, which got me > thinking why that is. > > After a bit of researching and trying, I found that the attached patch > expresses the same thing, including topological sorting, in a hopefully > clearer way, or at least more consistent with other graph-walking > procedures in the code. WDYT? > > If that=E2=80=99s fine with you, I=E2=80=99d be willing to apply this pat= ch, and then > apply other bits of your patch (the tests and stream removal) on top of > it. How does that sound? > > Returning a topologically-sorted set of packages means that nothing is > output until we=E2=80=99ve walked the whole dependency graph, so we indee= d have > to get rid of streams. I guess it=E2=80=99s a tradeoff. Ricardo, how do= you > feel about this change? > > Thanks! > > Ludo=E2=80=99. > > --0000000000009160af0599357efc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj5IaSBMdWRvLDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Jmd0 OyBJZiB0aGF04oCZcyBmaW5lIHdpdGggeW91LCBJ4oCZZCBiZSB3aWxsaW5nIHRvIGFwcGx5IHRo aXMgcGF0Y2gsIGFuZCB0aGVuPGJyPiZndDsgYXBwbHkgb3RoZXIgYml0cyBvZiB5b3VyIHBhdGNo ICh0aGUgdGVzdHMgYW5kIHN0cmVhbSByZW1vdmFsKSBvbiB0b3Agb2Y8YnI+Jmd0OyBpdC7CoCBI b3cgZG9lcyB0aGF0IHNvdW5kPzwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+U3VyZSwgeW91ciBw YXRjaCBzZWVtcyBjbGVhcmVyIHRvIG1lLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhhbmtz LDwvZGl2PjxkaXY+QnJpYW48YnI+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1 b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+T24gU3VuLCBEZWMgOCwgMjAx OSBhdCA5OjA5IEFNIEx1ZG92aWMgQ291cnTDqHMgJmx0OzxhIGhyZWY9Im1haWx0bzpsdWRvQGdu dS5vcmciPmx1ZG9AZ251Lm9yZzwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBj bGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVy LWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+SGkgQnJp YW4sPGJyPg0KPGJyPg0KVGhhbmtzIGZvciB0aGUgdXBkYXRlZCBwYXRjaCE8YnI+DQo8YnI+DQpC cmlhbiBMZXVuZyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmJrbGV1bmc4OUBnbWFpbC5jb20iIHRhcmdl dD0iX2JsYW5rIj5ia2xldW5nODlAZ21haWwuY29tPC9hPiZndDsgc2tyaWJpczo8YnI+DQo8YnI+ DQomZ3Q7IEZyb20gOTE1Mjc0ZDQ5MzExNmQwNjNiZmUyYTk1M2E5ZTg1NWI4MzEyNzExZSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDE8YnI+DQomZ3Q7IEZyb206IEJyaWFuIExldW5nICZsdDs8YSBo cmVmPSJtYWlsdG86bGV1bmdia0BtYWlsZmVuY2UuY29tIiB0YXJnZXQ9Il9ibGFuayI+bGV1bmdi a0BtYWlsZmVuY2UuY29tPC9hPiZndDs8YnI+DQomZ3Q7IERhdGU6IEZyaSwgMTEgT2N0IDIwMTkg MjM6MTg6MDMgLTA3MDA8YnI+DQomZ3Q7IFN1YmplY3Q6IFtQQVRDSF0gZ3VpeDogdXRpbHM6IFRv cG9sb2dpY2FsbHkgc29ydCByZWN1cnNpdmVseSBpbXBvcnRlZCByZWNpcGVzLjxicj4NCjxicj4N ClsuLi5dPGJyPg0KPGJyPg0KJmd0OyArwqAgKGRlZmluZSBncmFwaCB2bGlzdC1udWxsKTxicj4N CiZndDsgK8KgIChkZWZpbmUgcmVjaXBlLW1hcCB2bGlzdC1udWxsKTxicj4NCiZndDsgK8KgIChk ZWZpbmUgc3RhY2sgKGxpc3QgcGFja2FnZS1uYW1lKSk8YnI+DQomZ3Q7ICvCoCAoZGVmaW5lIGFj Y3VtICYjMzk7KCkpPGJyPg0KJmd0OyArPGJyPg0KJmd0OyArwqAgKGRlZmluZSAodG9wby1zb3J0 IHN0YWNrIGdyYXBoIHJlY2lwZS1tYXAgYWNjdW0pPGJyPg0KJmd0OyArwqAgwqAgKGlmIChudWxs PyBzdGFjayk8YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCAocmV2ZXJzZSBhY2N1bSk8YnI+DQomZ3Q7 ICvCoCDCoCDCoCDCoCAobGV0ICgoaGVhZC1wYWNrYWdlIChjYXIgc3RhY2spKSk8YnI+DQomZ3Q7 ICvCoCDCoCDCoCDCoCDCoCAobWF0Y2ggKHZoYXNoLWFzc29jIGhlYWQtcGFja2FnZSBncmFwaCk8 YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCAoKGtleSAuICYjMzk7KCkpPGJyPg0KJmd0OyAr wqAgwqAgwqAgwqAgwqAgwqAgwqAobGV0ICgobmV4dC1zdGFjayAoY2RyIHN0YWNrKSk8YnI+DQom Z3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChuZXh0LWFjY3VtIChjb25zIChjZHIg KHZoYXNoLWFzc29jIGhlYWQtcGFja2FnZSByZWNpcGUtbWFwKSk8YnI+DQomZ3Q7ICvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGFjY3VtKSkp PGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAodG9wby1zb3J0IG5leHQtc3RhY2s8 YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncmFwaDxi cj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlY2lwZS1t YXA8YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXh0 LWFjY3VtKSkpPGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgKChrZXkgLiAoZGVwIC4gcmVz dCkpPGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAoZGVmaW5lIChoYW5kbGU/IGRlcCk8 YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChhbmQ8YnI+DQomZ3Q7ICvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAobm90IChlcXVhbD8gZGVwIGhlYWQtcGFja2FnZSkpPGJyPg0KJmd0 OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKG5vdCAodmhhc2gtYXNzb2MgZGVwIHJlY2lwZS1t YXApKTxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChub3QgKGV4aXN0cz8gZGVw KSkpKTxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgKGxldCogKChuZXh0LXN0YWNrIChp ZiAoaGFuZGxlPyBkZXApPGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGNvbnMgZGVwIHN0YWNrKTxicj4NCiZndDsgK8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0YWNrKSk8 YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAobmV4dC1ncmFwaCAodmhh c2gtY29ucyBrZXkgcmVzdCBncmFwaCkpKTxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgKHRvcG8tc29ydCBuZXh0LXN0YWNrPGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgbmV4dC1ncmFwaDxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlY2lwZS1tYXA8YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhY2N1bSkpKTxicj4NCiZndDsgK8KgIMKgIMKgIMKg IMKgIMKgICgjZjxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgKHJlY2VpdmUgKHBhY2th Z2UtcmVjaXBlIC4gZGVwZW5kZW5jaWVzKSAocmVwby0mZ3Q7Z3VpeC1wYWNrYWdlIGhlYWQtcGFj a2FnZSByZXBvKTxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKGxldCAoKG5leHQt Z3JhcGggKHZoYXNoLWNvbnMgaGVhZC1wYWNrYWdlPGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA7OyBk ZXBlbmRlbmNpZXMgaGFzIHNoYXBlICYjMzk7KCgmcXVvdDtwYWNrYWdlLWEmcXVvdDsgJnF1b3Q7 cGFja2FnZS1iJnF1b3Q7IC4uLikpPGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoY2FyIGRlcGVuZGVu Y2llcyk8YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdyYXBoKSk8YnI+DQomZ3Q7ICvCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoChuZXh0LXJlY2lwZS1tYXAgKHZoYXNoLWNvbnMgaGVhZC1w YWNrYWdlPGJyPg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKG9yPGJyPg0KJmd0OyArwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBwYWNrYWdlLXJlY2lwZTxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgJiMzOTsoKSk8YnI+DQomZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWNpcGUtbWFwKSkpPGJy Pg0KJmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAodG9wby1zb3J0IHN0YWNrPGJyPg0K Jmd0OyArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dC1ncmFw aDxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG5l eHQtcmVjaXBlLW1hcDxicj4NCiZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGFjY3VtKSkpKSkpKSk8YnI+DQomZ3Q7ICs8YnI+DQomZ3Q7ICvCoCAodG9wby1z b3J0IHN0YWNrIGdyYXBoIHJlY2lwZS1tYXAgYWNjdW0pKTxicj4NCjxicj4NCkkgZm91bmQgdGhp cyB0byBiZSByZWxhdGl2ZWx5IGNvbXBsZXggKGFuZCBwYXJ0IG9mIHRoaXMgY29tcGxleGl0eSB3 YXM8YnI+DQphbHJlYWR5IHRoZXJlIGJlZm9yZSB0aGUgcGF0Y2gpIGFuZCBxdWl0ZSBkaWZmZXJl bnQgZnJvbSB0aGUgb3RoZXI8YnI+DQpncmFwaC13YWxraW5nIHByb2NlZHVyZXMgd2UgaGF2ZSBp biBkaWZmZXJlbnQgcGxhY2VzLCB3aGljaCBnb3QgbWU8YnI+DQp0aGlua2luZyB3aHkgdGhhdCBp cy48YnI+DQo8YnI+DQpBZnRlciBhIGJpdCBvZiByZXNlYXJjaGluZyBhbmQgdHJ5aW5nLCBJIGZv dW5kIHRoYXQgdGhlIGF0dGFjaGVkIHBhdGNoPGJyPg0KZXhwcmVzc2VzIHRoZSBzYW1lIHRoaW5n LCBpbmNsdWRpbmcgdG9wb2xvZ2ljYWwgc29ydGluZywgaW4gYSBob3BlZnVsbHk8YnI+DQpjbGVh cmVyIHdheSwgb3IgYXQgbGVhc3QgbW9yZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgZ3JhcGgtd2Fs a2luZzxicj4NCnByb2NlZHVyZXMgaW4gdGhlIGNvZGUuwqAgV0RZVD88YnI+DQo8YnI+DQpJZiB0 aGF04oCZcyBmaW5lIHdpdGggeW91LCBJ4oCZZCBiZSB3aWxsaW5nIHRvIGFwcGx5IHRoaXMgcGF0 Y2gsIGFuZCB0aGVuPGJyPg0KYXBwbHkgb3RoZXIgYml0cyBvZiB5b3VyIHBhdGNoICh0aGUgdGVz dHMgYW5kIHN0cmVhbSByZW1vdmFsKSBvbiB0b3Agb2Y8YnI+DQppdC7CoCBIb3cgZG9lcyB0aGF0 IHNvdW5kPzxicj4NCjxicj4NClJldHVybmluZyBhIHRvcG9sb2dpY2FsbHktc29ydGVkIHNldCBv ZiBwYWNrYWdlcyBtZWFucyB0aGF0IG5vdGhpbmcgaXM8YnI+DQpvdXRwdXQgdW50aWwgd2XigJl2 ZSB3YWxrZWQgdGhlIHdob2xlIGRlcGVuZGVuY3kgZ3JhcGgsIHNvIHdlIGluZGVlZCBoYXZlPGJy Pg0KdG8gZ2V0IHJpZCBvZiBzdHJlYW1zLsKgIEkgZ3Vlc3MgaXTigJlzIGEgdHJhZGVvZmYuwqAg UmljYXJkbywgaG93IGRvIHlvdTxicj4NCmZlZWwgYWJvdXQgdGhpcyBjaGFuZ2U/PGJyPg0KPGJy Pg0KVGhhbmtzITxicj4NCjxicj4NCkx1ZG/igJkuPGJyPg0KPGJyPg0KPC9ibG9ja3F1b3RlPjwv ZGl2Pg0K --0000000000009160af0599357efc-- From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 11 08:01:43 2019 Received: (at 37730-done) by debbugs.gnu.org; 11 Dec 2019 13:01:43 +0000 Received: from localhost ([127.0.0.1]:56990 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1if1cc-00057m-Ly for submit@debbugs.gnu.org; Wed, 11 Dec 2019 08:01:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40541) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1if1cb-00057W-Gm for 37730-done@debbugs.gnu.org; Wed, 11 Dec 2019 08:01:41 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40888) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1if1cV-0004mQ-DD; Wed, 11 Dec 2019 08:01:35 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=59868 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1if08D-0001Jb-NX; Wed, 11 Dec 2019 06:26:14 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Brian Leung Subject: Re: [bug#37730] [PATCH] Topologically sort recursively-imported packages References: <87lfti5rip.fsf@gnu.org> <87immqpww5.fsf@gnu.org> Date: Wed, 11 Dec 2019 12:26:12 +0100 In-Reply-To: (Brian Leung's message of "Sun, 8 Dec 2019 10:31:23 -0800") Message-ID: <87pngvje7f.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37730-done Cc: 37730-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Brian, Brian Leung skribis: >> If that=E2=80=99s fine with you, I=E2=80=99d be willing to apply this pa= tch, and then >> apply other bits of your patch (the tests and stream removal) on top of >> it. How does that sound? > > Sure, your patch seems clearer to me. I pushed patches that combine mine and yours: 4982de4c32 import: crate: Add recursive import test. 70a8e13277 import: utils: 'recursive-import' returns a list rather than a= stream. ddd5915900 import: utils: 'recursive-import' returns packages in topologi= cal order. Let me know if you notice anything wrong! Thank you, Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 12 10:15:13 2019 Received: (at 37730-done) by debbugs.gnu.org; 12 Dec 2019 15:15:13 +0000 Received: from localhost ([127.0.0.1]:60805 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ifQBN-0006t7-FY for submit@debbugs.gnu.org; Thu, 12 Dec 2019 10:15:13 -0500 Received: from sender4-of-o51.zoho.com ([136.143.188.51]:21176) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ifQBL-0006sw-9X for 37730-done@debbugs.gnu.org; Thu, 12 Dec 2019 10:15:12 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1576163706; cv=none; d=zohomail.com; s=zohoarc; b=VxvUm2F42tfW9Rin9by4j3CvbBTyB8EhiFU5CiNPY+9wRZzzJdWDh24NCj5C3OTzlw2BN9W4DKVm2oz6QzDpjr4rq25REayHUFobckIQLnNoZbDkuPzviAMkNP3uOh5YK3XubASDulRrVS4oQBQlFkQ4Ehhov0K5KBlAdJdxhKg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1576163706; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=caHeXKwywREc+52kONuY5H7zUQdWBH4qSYdC/hk4aLI=; b=YOArOohPttxG3zVZ69FBVFXN5zPUDWZ2WQSxcuY8eoRYFy598nalNBk7+RRqYFBL67UG9xzGFO+Y7h6zclw1NU/vsV+RuUM9BBQ+2eyqAq4PzNJZ/d7LE676jIeduRcr3l2sZUiUavBK0pIQlCL0tIvdnuMgRZGQqn0av69+zYs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=elephly.net; spf=pass smtp.mailfrom=rekado@elephly.net; dmarc=pass header.from= header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1576163706; s=zoho; d=elephly.net; i=rekado@elephly.net; h=References:From:To:Cc:Subject:In-reply-to:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding; bh=caHeXKwywREc+52kONuY5H7zUQdWBH4qSYdC/hk4aLI=; b=TxCq4pR8O8z68t/qsojcEn3GNTqtjeNyGBfd3jKbFGm5Hn4lBhGD+cM7N69XFtbJ SQcTOVbODSRR+/aL+fVTnthSpHWnOwzekelN+zbrNOrE3MMyHC9ThTWZl+edjwQAaAz BsyoV4Df0uI92brQgXUL7NjzD+WNrK9vvucn5xwk= Received: from localhost (p54AD4459.dip0.t-ipconnect.de [84.173.68.89]) by mx.zohomail.com with SMTPS id 1576163705447272.50807860481393; Thu, 12 Dec 2019 07:15:05 -0800 (PST) References: <87lfti5rip.fsf@gnu.org> <87immqpww5.fsf@gnu.org> <87pngvje7f.fsf@gnu.org> User-agent: mu4e 1.2.0; emacs 26.3 From: Ricardo Wurmus To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: bug#37730: [PATCH] Topologically sort recursively-imported packages In-reply-to: <87pngvje7f.fsf@gnu.org> X-URL: https://elephly.net X-PGP-Key: https://elephly.net/rekado.pubkey X-PGP-Fingerprint: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC Date: Thu, 12 Dec 2019 16:15:01 +0100 Message-ID: <87sglp379m.fsf@elephly.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37730-done Cc: Brian Leung , 37730-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ludovic Court=C3=A8s writes: > Hi Brian, > > Brian Leung skribis: > >>> If that=E2=80=99s fine with you, I=E2=80=99d be willing to apply this p= atch, and then >>> apply other bits of your patch (the tests and stream removal) on top of >>> it. How does that sound? >> >> Sure, your patch seems clearer to me. > > I pushed patches that combine mine and yours: > > 4982de4c32 import: crate: Add recursive import test. > 70a8e13277 import: utils: 'recursive-import' returns a list rather than= a stream. > ddd5915900 import: utils: 'recursive-import' returns packages in topolo= gical order. Thank you! > Let me know if you notice anything wrong! I believe the docstring of RECURSIVE-IMPORT in (guix import utils) needs to be adjusted. It still refers to streams. --=20 Ricardo From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 12 16:18:27 2019 Received: (at 37730-done) by debbugs.gnu.org; 12 Dec 2019 21:18:27 +0000 Received: from localhost ([127.0.0.1]:60966 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ifVqt-0004bG-GS for submit@debbugs.gnu.org; Thu, 12 Dec 2019 16:18:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51583) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ifVqq-0004b3-VT for 37730-done@debbugs.gnu.org; Thu, 12 Dec 2019 16:18:25 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45194) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ifVql-0006sA-OM; Thu, 12 Dec 2019 16:18:19 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=43544 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ifVql-0000jc-7M; Thu, 12 Dec 2019 16:18:19 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Ricardo Wurmus Subject: Re: bug#37730: [PATCH] Topologically sort recursively-imported packages References: <87lfti5rip.fsf@gnu.org> <87immqpww5.fsf@gnu.org> <87pngvje7f.fsf@gnu.org> <87sglp379m.fsf@elephly.net> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 22 Frimaire an 228 de la =?utf-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Thu, 12 Dec 2019 22:18:17 +0100 In-Reply-To: <87sglp379m.fsf@elephly.net> (Ricardo Wurmus's message of "Thu, 12 Dec 2019 16:15:01 +0100") Message-ID: <87wob1450m.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37730-done Cc: Brian Leung , 37730-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi, Ricardo Wurmus skribis: > Ludovic Court=C3=A8s writes: > >> Hi Brian, >> >> Brian Leung skribis: >> >>>> If that=E2=80=99s fine with you, I=E2=80=99d be willing to apply this = patch, and then >>>> apply other bits of your patch (the tests and stream removal) on top of >>>> it. How does that sound? >>> >>> Sure, your patch seems clearer to me. >> >> I pushed patches that combine mine and yours: >> >> 4982de4c32 import: crate: Add recursive import test. >> 70a8e13277 import: utils: 'recursive-import' returns a list rather tha= n a stream. >> ddd5915900 import: utils: 'recursive-import' returns packages in topol= ogical order. > > Thank you! > >> Let me know if you notice anything wrong! > > I believe the docstring of RECURSIVE-IMPORT in (guix import utils) needs > to be adjusted. It still refers to streams. Oops, fixed! (Will push shortly.) Thanks, Ludo=E2=80=99. From unknown Thu Sep 11 02:37:29 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 10 Jan 2020 12:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator