From unknown Sat Jun 21 12:13:34 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#56488 <56488@debbugs.gnu.org> To: bug#56488 <56488@debbugs.gnu.org> Subject: Status: process/thread interaction causes infinite hang in url-copy-file Reply-To: bug#56488 <56488@debbugs.gnu.org> Date: Sat, 21 Jun 2025 19:13:34 +0000 retitle 56488 process/thread interaction causes infinite hang in url-copy-f= ile reassign 56488 emacs submitter 56488 Tom Gillespie severity 56488 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 10 17:26:28 2022 Received: (at submit) by debbugs.gnu.org; 10 Jul 2022 21:26:28 +0000 Received: from localhost ([127.0.0.1]:37862 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oAeRe-0006La-IR for submit@debbugs.gnu.org; Sun, 10 Jul 2022 17:26:28 -0400 Received: from lists.gnu.org ([209.51.188.17]:51768) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oAeRb-0006LR-GS for submit@debbugs.gnu.org; Sun, 10 Jul 2022 17:26:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34974) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oAeRb-0005ZT-9k for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2022 17:26:23 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:40771) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oAeRZ-0006Zp-3S for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2022 17:26:22 -0400 Received: by mail-pf1-x42c.google.com with SMTP id y141so3295204pfb.7 for ; Sun, 10 Jul 2022 14:26:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=KG2ANxIKXwVGsbDvVXvQBF7xaSFX0DEnptBs0ueMphU=; b=fO83Ududb0jjCnHtSrVWhDqxx9jip4qHDP16+cyECqRAkrp5MNnKW/LiB3LNnzVVbM HPTF4dcXqSgL6YO3dE5V/ukFFb4cWX6/AapE5KLOoyeBcWuYrcrte+4UCCLSEtmoj7bH Fln2Kbgf3nHQ+Qe3D2sh7mOImwzeBbe4sltH7fJ1J6HDb5islSlTdQxxq0mz/7PmB7+x v6S/1Z5iu56vU7jThzuxXUwyZWRKPg3RWdGL4UCbvTi8h8mPQv+YgkPsyMKjoxtwLu79 V969rYFAHyZfrCtpfd7kBC2oBsRUkmzqtD9nmK0KJsY+YIywzI7uh8RlpgVVgyPHEV/q Uxww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=KG2ANxIKXwVGsbDvVXvQBF7xaSFX0DEnptBs0ueMphU=; b=bBebmfPD4S4YVQhm1b/jxQutHoqDkvuPcb1sXc4MiQAxMcYqvVedxaPeWpYuOBGvfr 8V0tVC/NU6llf2ILhuSVnbmviEUwSWgaHqm9z1M3ya2XqflJ6i0oyq8mvZpH03EuNqtv abRFUSmzuoYR8njTzu9lyq9Z03I3JqDggI9ITzBAzPFJV4OitUEzTqMmL9XuL4AjMM60 Ec0shQCV7mdRv1NpetX3lv44z/oSWjfMXe0LVi/IdHpMvOU/MaDtsOxVq3oQ6k70M/yE yp5EoOlNi4rAEz8ziaVZdtt4vbXurwMWmciqbzBESVhlvzV3eEF6pr/hPqSdX/9CEDBQ vymQ== X-Gm-Message-State: AJIora/VeOpMlQRALUZriJKMRZtXwlwnvRZoEF7wvbz7ciE23BdaITqI 8ntbOx+90SjgHorGSLVZxzVYt/Tn2xHY6B8teIrvr7Ag+JA= X-Google-Smtp-Source: AGRyM1tQkvJjKTaXdFsiKq7YV+w7otjdXg2HhglHwGTEvnLxqupUBd7t0lhaFbaj6omh6Kn6SlDDwrW2gu69mmBo9F8= X-Received: by 2002:a63:155b:0:b0:416:f21:1a68 with SMTP id 27-20020a63155b000000b004160f211a68mr397436pgv.312.1657488379374; Sun, 10 Jul 2022 14:26:19 -0700 (PDT) MIME-Version: 1.0 From: Tom Gillespie Date: Sun, 10 Jul 2022 14:26:08 -0700 Message-ID: Subject: process/thread interaction causes infinite hang in url-copy-file To: Emacs Bug Report Content-Type: multipart/mixed; boundary="00000000000013c8cf05e37a16e7" Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=tgbugs@gmail.com; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) 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.3 (--) --00000000000013c8cf05e37a16e7 Content-Type: text/plain; charset="UTF-8" This is a bug that appears to be caused by calling set-process-thread on some process, allowing that process to finish and be cleaned up, and then trying to wait on some other process called at a later point. While the issue appears when calling url-copy-file, I suspect that other functions that create a process and then wait for the result are affected, but I have not identified any at this point in time. I have attached process-thread-bugs.el that was also included in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=56487 which includes the repro for this issue. The two functions of interest are enable-hang and maybe-trigger-hang. Assuming process-thread-bugs.el is in the top level of the emacs repo run the following commands to see the behavior in action src/emacs -Q -batch -l ./process-thread-bugs.el wont hang 1 src/emacs -Q -batch -l ./process-thread-bugs.el will hang 1 src/emacs -Q -batch -l ./process-thread-bugs.el will hang 2 When calling will hang 1 or will hang 2, the behavior should be obvious as a presumably infinite number of lines of "oh no" being printed to stderr. --00000000000013c8cf05e37a16e7 Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="process-thread-bugs.el" Content-Disposition: attachment; filename="process-thread-bugs.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l5ftmjok0 OzsgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7OyBtYXhpbXVtIGhlaXNlbmJ1Z3MgaGVy ZQoKOzsgZW1hY3MgMjggYW5kIDI5IHdpbGwgaGFuZyBhbmQgYWJvcnQKOzsgZW1hY3MgMjcgd2ls bCBoYW5nIGJ1dCB3aWxsIG5vdCBhYm9ydCwgYnV0IHRoZSBkZWFkbG9ja3MgaW4gMjcgaGF2ZSBu byB0aW1lb3V0Cgo7OyB0aGVyZSBhcmUgdHdvIGJ1Z3MsIGEgaGFuZyBidWcgYW5kIGFuIGFib3J0 IGJ1Zwo7OyBmb3IgdGhlIGhhbmcgYnVnIGB1cmwtaHR0cC1hc3luYy1zZW50aW5lbCcgYW5kIGB1 cmwtaHR0cC1nZW5lcmljLWZpbHRlcicKOzsgbmV2ZXIgZmlyZSBkdXJpbmcgdGhlIGhhbmcsIHlv dSBjYW4gY29weSB0aGVpciBkZWZpbnRpb25zIGludG8gdGhpcyBmaWxlCjs7IGFuZCBhZGQgYSBt ZXNzYWdlIHdoZW4gdGhleSBmaXJlIHRvIHNlZSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UgaWYgeW91 IHdhbnQKOzsgdG8gdmVyaWZ5IG9uIHlvdXIgc3lzdGVtCgo7OyBoYXBwZW5zIG9uIGdlbnRvbyBt dXNsIHdpdGggeG9yZwo7OyBoYXBwZW5zIG9uIGFscGluZSB3aGVuIGdsaWIgQU5EIHhvcmctc2Vy dmVyIGFuZCBmcmllbmRzIGFyZSBpbnN0YWxsZWQKCjs7IGRvY2tlciBydW4gLXYgL2hvbWUvdG9t L2dpdC9vcmdzdHJhcDovdGVzdCAtdiAvaG9tZS90b20vZ2l0L05PRk9SSy9lbWFjczovZW1hY3Mt c3JjIC1pdCBhbHBpbmU6bGF0ZXN0IAo7OyBhcGsgYWRkIGVtYWNzIGdpdCBidWlsZC1iYXNlIGF1 dG9jb25mIHRleGluZm8gZ251dGxzLWRldiBuY3Vyc2VzLWRldiBnbGliLWRldiB4b3JnLXNlcnZl ci1kZXYgbGlieGF3LWRldgoKOzsgZG9ja2VyIHJ1biAtdiAvaG9tZS90b20vZ2l0L29yZ3N0cmFw Oi90ZXN0IC12IC9ob21lL3RvbS9naXQvTk9GT1JLL2VtYWNzOi9lbWFjcy1zcmMgLWl0IHRnYnVn cy9tdXNsOmVtYWNzCgo7OyBnaXQgY2xvbmUgZW1hY3Mtc3JjIGVtYWNzCjs7IGNkIGVtYWNzOyAu L2F1dG9nZW4uc2gKCjs7IGNvbmZpZ3VyZSBtdXN0IGJlIHJ1biB3aXRoIC0td2l0aC14LXRvb2xr aXQ9bHVjaWQgd2hpY2ggaXRzZWxmIHJlcXVyaWVzIC0td2l0aG91dC1jYWlybwo7OyB0aGUgLS13 aXRob3V0LXtqcGVnLGdpZix0aWZmfSBhcmUgbm90IHJlcXVpcmVkLCBidXQgYXZvaWQgdW5pbnN0 YWxsZWQgZGVwZW5kZW5jaWVzCjs7IENGTEFHUz0iLWdnZGIzIC1PMCIgQ1hYRkxBR1M9Ii1nZ2Ri MyAtTzAiIExERkxBR1M9Ii1nZ2RiMyIgXAo7OyAuL2NvbmZpZ3VyZSAtLXdpdGgteC10b29sa2l0 PWx1Y2lkIFwKOzsgLS13aXRob3V0LWpwZWcgLS13aXRob3V0LWdpZiAtLXdpdGhvdXQtdGlmZgo7 OyBjZCBzcmM7IG1ha2UgLWo4OyBjZCAtCgo7OyAgICAgICAgIHNyYy9lbWFjcyAtUSAtYmF0Y2gg LWwgL3Rlc3QvcHJvY2Vzcy10aHJlYWQtYnVncy5lbCB3aWxsIGhhbmcgMQo7OyAgICAgICAgIHNy Yy9lbWFjcyAtUSAtYmF0Y2ggLWwgL3Rlc3QvcHJvY2Vzcy10aHJlYWQtYnVncy5lbCB3b250IGhh bmcgMQo7OyB3aGlsZSAkKHNyYy9lbWFjcyAtUSAtYmF0Y2ggLWwgL3Rlc3QvcHJvY2Vzcy10aHJl YWQtYnVncy5lbCB3aWxsIGFib3J0IDEpOyBkbyB0cnVlOyBkb25lCjs7IHdoaWxlICQoc3JjL2Vt YWNzIC1RIC1iYXRjaCAtbCAvdGVzdC9wcm9jZXNzLXRocmVhZC1idWdzLmVsIHdvbnQgYWJvcnQg MSk7IGRvIHRydWU7IGRvbmUKCjs7IGlmIGJpc2VjdGluZyB5b3Ugd2lsbCB3YW50IGFuIGV4dGVy bmFsIHRpbWVvdXQgYmVjYXVzZSBiZXR3ZWVuIDI3IGFuZCAyOCB0aGUgdGltZW91dCBpcyBpbmZp bml0ZQo7OyB3aGlsZSAkKHRpbWVvdXQgMyBzcmMvZW1hY3MgLVEgLWJhdGNoIC1sIC90ZXN0L3By b2Nlc3MtdGhyZWFkLWJ1Z3MuZWwgd2lsbCBhYm9ydCAxOyBSRVQ9JD87IHRlc3QgJFJFVCA9IDEy NCB8fCB0ZXN0ICRSRVQgPSAwOyk7IGRvIHRydWU7IGRvbmUKCjs7IHVzZWZ1bCBmdW5jdGlvbnMg dG8gY2hlY2sgd2hldGhlciB0aGUgYWJvcnQgYnVnIG1hbmlmZXN0cwo7OyBmdW5jdGlvbiBsb29w LWFib3J0ICgpIHsgd2hpbGUgdHJ1ZTsgZG8gc3JjL2VtYWNzIC1RIC1iYXRjaCAtbCAuL3Byb2Nl c3MtdGhyZWFkLWJ1Z3MuZWwgd2lsbCBhYm9ydCAxIHx8IHJldHVybiAkPzsgZG9uZSB9Cjs7IGZ1 bmN0aW9uIGxvb3Atbm8tYWJvcnQgKCkgeyB3aGlsZSB0cnVlOyBkbyBzcmMvZW1hY3MgLVEgLWJh dGNoIC1sIC4vcHJvY2Vzcy10aHJlYWQtYnVncy5lbCB3b250IGFib3J0IDEgfHwgcmV0dXJuICQ/ OyBkb25lIH0KOzsgdGhlbiBjYWxsIGxvb3AtYWJvcnQgOyBlY2hvICQ/Cgo7OyB4Z3NlbGVjdC5j IGFuZCB0aHJlYWQuYyBhcmUgdGhlIHR3byBmaWxlcyB0aGF0IGhhdmUgYmVlbiBpbXBsaWNhdGVk CgoobWVzc2FnZSAiU1RBUlQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIikKCihyZXF1aXJlICd1cmwtaHR0cCkKCihkZWZ1biBlbmFibGUtaGFu ZyAoKQogIChsZXQqICgocGVyciAobWFrZS1waXBlLXByb2Nlc3MKICAgICAgICAgICAgICAgIDpu YW1lICJwZXJyIHByb2Nlc3MgaGFuZyIpKQogICAgICAgICAocG91dCAobWFrZS1wcm9jZXNzCiAg ICAgICAgICAgICAgICA6bmFtZSAicG91dCBwcm9jZXNzIGhhbmciCiAgICAgICAgICAgICAgICA6 c3RkZXJyIHBlcnIKICAgICAgICAgICAgICAgIDpjb21tYW5kICcoInRydWUiKSkpKQogICAgKGxl dCAoKHRvdXQgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkgKHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1v dXRwdXQgcG91dCkpKSkpCiAgICAgICAgICAodGVyciAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAo d2hpbGUgKGFjY2VwdC1wcm9jZXNzLW91dHB1dCBwZXJyKSkpKSkpCiAgICAgIChzZXQtcHJvY2Vz cy10aHJlYWQgcG91dCB0b3V0KQogICAgICAoc2V0LXByb2Nlc3MtdGhyZWFkIHBlcnIgdGVycikK ICAgICAgKHRocmVhZC1qb2luIHRvdXQpCiAgICAgICh0aHJlYWQtam9pbiB0ZXJyKSkpKQoKKGRl ZnVuIG1heWJlLXRyaWdnZXItaGFuZyAodXJsIG1lc3NhZ2UpCiAgKGxldCAoZG9uZSkKICAgIDs7 IGB1cmwtaHR0cCcgaXMgdGhlIGxvYWRlciwgYnV0IGl0IGlzIG5vdCB3aGVyZSB0aGUgcHJvYmxl bSBpcwogICAgOzsodXJsLXJldHJpZXZlIHVybCAobGFtYmRhIChzdGF0dXMpIChzZXRxIGRvbmUg dCkpKQogICAgOzsgSSdtIHRoaW5raW5nIHNvbWV0aGluZyBpbiBgdXJsLWh0dHAtZmluZC1mcmVl LWNvbm5lY3Rpb24nCiAgICA7OyBzcGVjaWZpY2FsbHkgYG9wZW4tbmV0d29yay1zdHJlYW0nIGFu ZCB0aGVuIGBtYWtlLW5ldHdvcmstcHJvY2VzcycKICAgIDs7IG9vb28sIGl0cyB3b3JzZSwgd2Ug ZG8gbWFrZSBpdCB0aHJvdWdoIGBtYWtlLW5ldHdvcmstcHJvY2VzcycKICAgIDs7IGFuZCBhbHNv IG5vdCBpbiBgb3Blbi1uZXR3b3JrLXN0cmVhbScsIGFuZCBhbHNvIG5vdCBgdXJsLWh0dHAtZmlu ZC1mcmVlLWNvbm5lY3Rpb24nCiAgICA7OyBuZXcgY2FuZGlkYXRlcyBhcmUgYHVybC1odHRwLWFz eW5jLXNlbnRpbmVsJyBhbmQgYHVybC1odHRwLWdlbmVyaWMtZmlsdGVyJwoKICAgIDs7IG5hcnJv d2VkIGRvd24gcHJvYmxlbSB0byBzZW50aW5lbCBhbmQgZmlsdGVyIG5ldmVyIGdldHRpbmcgYSBo aXQKICAgIChsZXQqICgoYnVmZmVyICh1cmwtaHR0cCAodXJsLWdlbmVyaWMtcGFyc2UtdXJsIHVy bCkgKGxhbWJkYSAoKSAoc2V0cSBkb25lIHQpKSAnKCkpKQogICAgICAgICAgIChwcm9jZXNzIChn ZXQtYnVmZmVyLXByb2Nlc3MgYnVmZmVyKSkpCiAgICAgIChtZXNzYWdlICJwczogJVMiIChwcm9j ZXNzLXNlbnRpbmVsIHByb2Nlc3MpKSkKICAgICh3aGlsZSAobm90IGRvbmUpIChzbGVlcC1mb3Ig MC4xKSAobWVzc2FnZSBtZXNzYWdlKSkKICAgIChjbC1sb29wIGZvciBwIGluIChwcm9jZXNzLWxp c3QpIGRvCiAgICAgICAgICAgICAod2hlbiAoZXEgKHByb2Nlc3MtdHlwZSBwKSAnbmV0d29yaykK ICAgICAgICAgICAgICAgKHN0b3AtcHJvY2VzcyBwKQogICAgICAgICAgICAgICAoZGVsZXRlLXBy b2Nlc3MgcCkpKSkpCgooZGVmdW4gaW5zdWZmaWNpZW50LXRvLWVuYWJsZS1hYm9ydC0wICgpCiAg KGxldCogKChwZXJyIChtYWtlLXBpcGUtcHJvY2VzcwogICAgICAgICAgICAgICAgOm5hbWUgInBl cnIgcHJvY2VzcyBpbmVhLTAiKSkKICAgICAgICAgKHBvdXQgKG1ha2UtcHJvY2VzcwogICAgICAg ICAgICAgICAgOm5hbWUgInBvdXQgcHJvY2VzcyBpbmVhLTAiCiAgICAgICAgICAgICAgICA6c3Rk ZXJyIHBlcnIKICAgICAgICAgICAgICAgIDpjb21tYW5kICcoInRydWUiKSkpKQogICAgKGxldCAo KHRvdXQgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkgKHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1vdXRw dXQgcG91dCkpKSkpCiAgICAgICAgICAodGVyciAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAod2hp bGUgKGFjY2VwdC1wcm9jZXNzLW91dHB1dCBwZXJyKSkpKSkpKSkpCgooZGVmdW4gaW5zdWZmaWNp ZW50LXRvLWVuYWJsZS1hYm9ydC0xICgpCiAgKGxldCogKChwZXJyIChtYWtlLXBpcGUtcHJvY2Vz cwogICAgICAgICAgICAgICAgOm5hbWUgInBlcnIgcHJvY2VzcyBpbmVhLTEiKSkKICAgICAgICAg KHBvdXQgKG1ha2UtcHJvY2VzcwogICAgICAgICAgICAgICAgOm5hbWUgInBvdXQgcHJvY2VzcyBp bmVhLTEiCiAgICAgICAgICAgICAgICA6c3RkZXJyIHBlcnIKICAgICAgICAgICAgICAgIDpjb21t YW5kICcoInRydWUiKSkpKQogICAgKGxldCAoKHRvdXQgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkg KHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1vdXRwdXQgcG91dCkpKSkpCiAgICAgICAgICAodGVyciAo bWFrZS10aHJlYWQgKGxhbWJkYSAoKSAod2hpbGUgKGFjY2VwdC1wcm9jZXNzLW91dHB1dCBwZXJy KSkpKSkpCiAgICAgIChzZXQtcHJvY2Vzcy10aHJlYWQgcG91dCB0b3V0KSkpKQoKKGRlZnVuIGVu YWJsZS1hYm9ydCAoKQogIChsZXQqICgocGVyciAobWFrZS1waXBlLXByb2Nlc3MKICAgICAgICAg ICAgICAgIDpuYW1lICJwZXJyIHByb2Nlc3MgYWJvcnQiKSkKICAgICAgICAgKHBvdXQgKG1ha2Ut cHJvY2VzcwogICAgICAgICAgICAgICAgOm5hbWUgInBvdXQgcHJvY2VzcyBhYm9ydCIKICAgICAg ICAgICAgICAgIDpzdGRlcnIgcGVycgogICAgICAgICAgICAgICAgOmNvbW1hbmQgJygidHJ1ZSIp KSkpCiAgICAobGV0ICgodG91dCAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAod2hpbGUgKGFjY2Vw dC1wcm9jZXNzLW91dHB1dCBwb3V0KSkpKSkKICAgICAgICAgICh0ZXJyIChtYWtlLXRocmVhZCAo bGFtYmRhICgpICh3aGlsZSAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IHBlcnIpKSkpKSkKICAgICAo c2V0LXByb2Nlc3MtdGhyZWFkIHBlcnIgdGVycikpKSkKCihkZWZ1biBlbmFibGUtYWJvcnQtMiAo KQogIChsZXQqICgocGVyciAobWFrZS1waXBlLXByb2Nlc3MKICAgICAgICAgICAgICAgIDpuYW1l ICJwZXJyIHByb2Nlc3MgZW5hYmxlIGFib3J0IDIiKSkKICAgICAgICAgKHBvdXQgKG1ha2UtcHJv Y2VzcwogICAgICAgICAgICAgICAgOm5hbWUgInBvdXQgcHJvY2VzcyBlbmFibGUgYWJvcnQgMiIK ICAgICAgICAgICAgICAgIDpzdGRlcnIgcGVycgogICAgICAgICAgICAgICAgOmNvbW1hbmQgJygi dHJ1ZSIpKSkpCiAgICAobGV0ICgodG91dCAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAod2hpbGUg KGFjY2VwdC1wcm9jZXNzLW91dHB1dCBwb3V0KSkpKSkKICAgICAgICAgICh0ZXJyIChtYWtlLXRo cmVhZCAobGFtYmRhICgpICh3aGlsZSAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IHBlcnIpKSkpKQog ICAgICAgICAgKHRsb2wgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkgbmlsKSkpKQogICAgICAoc2V0 LXByb2Nlc3MtdGhyZWFkIHBvdXQgdG91dCkKICAgICAgKHNldC1wcm9jZXNzLXRocmVhZCBwZXJy IHRlcnIpCiAgICAgIDs7IHR1cm5zIG91dCBBTlkgdGhyZWFkLWpvaW4gd2lsbCBkbz8KICAgICAg OzsgYXQgbGVhc3QgZm9yIGEgY29tbWFuZCB0aGF0IHJldHVybnMgYXMgcXVpY2tseSBhcyAidHJ1 ZSIKICAgICAgKHRocmVhZC1qb2luIHRsb2wpKSkpCgooZGVmdW4gbWF5YmUtdHJpZ2dlci1hYm9y dCAoKQogIChsZXQqICgocGVyciAobWFrZS1waXBlLXByb2Nlc3MKICAgICAgICAgICAgICAgIDpu YW1lICJwZXJyIHByb2Nlc3MiKSkKICAgICAgICAgKHBvdXQgKG1ha2UtcHJvY2VzcwogICAgICAg ICAgICAgICAgOm5hbWUgInBvdXQgcHJvY2VzcyIKICAgICAgICAgICAgICAgIDpzdGRlcnIgcGVy cgogICAgICAgICAgICAgICAgOzsgdHVybnMgb3V0IG5vIGRlbGF5IGlzIHJlcXVpcmVkICcoInNs ZWVwIiAiLjAxIikKICAgICAgICAgICAgICAgIDpjb21tYW5kICcoInRydWUiKQogICAgICAgICAg ICAgICAgKSkpCiAgICAobGV0ICgodG91dCAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAod2hpbGUg KGFjY2VwdC1wcm9jZXNzLW91dHB1dCBwb3V0KSkpKSkKICAgICAgICAgICh0ZXJyIChtYWtlLXRo cmVhZCAobGFtYmRhICgpICh3aGlsZSAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IHBlcnIpKSkpKSkK ICAgICAgKHNldC1wcm9jZXNzLXRocmVhZCBwZXJyIHRlcnIpCiAgICAgICh0aHJlYWQtam9pbiB0 ZXJyKSkpKQoKKGRlZnVuIHdvbnQtaGFuZyAoKQogIChtYXliZS10cmlnZ2VyLWhhbmcgImh0dHA6 Ly9leGFtcGxlLm9yZy8iICJ0aGlzIG9uZSBpcyBvayIpCiAgKGVuYWJsZS1oYW5nKQogIChtYXli ZS10cmlnZ2VyLWhhbmcgImh0dHA6Ly9leGFtcGxlLm9yZy8iICJub3cgc29tZWhvdyBvayIpKQoK KGRlZnVuIHdpbGwtaGFuZy0xICgpCiAgOzsgdGhlIHRocmVhZCBpcyBjcmVhdGVkIGFuZCBleGl0 cywgYnV0IHNvbWVob3cgdGhlIHNlbnRpbmVsIGlzIG5ldmVyIGNhbGxlZCA/PwogIDs7KG1heWJl LXRyaWdnZXItaGFuZyAiaHR0cDovL3d3dy5nbnUub3JnIiAidGhpcyBvbmUgaXMgb2siKQogIChl bmFibGUtaGFuZykKICAobWF5YmUtdHJpZ2dlci1oYW5nICJodHRwOi8vZXhhbXBsZS5vcmcvIiAi b2ggbm8iKSkKCihkZWZ1biB3aWxsLWhhbmctMiAoKQogIChtYXliZS10cmlnZ2VyLWhhbmcgImh0 dHA6Ly93d3cuZ251Lm9yZy8iICJ0aGlzIG9uZSBpcyBvayIpCiAgKGVuYWJsZS1oYW5nKQogICht YXliZS10cmlnZ2VyLWhhbmcgImh0dHA6Ly9leGFtcGxlLm9yZy8iICJvaCBubyIpKQoKKGRlZnVu IHdvbnQtYWJvcnQtMSAoKQogIChtZXNzYWdlICJ3YS0xICVzIiAoZW1hY3MtcGlkKSkKICAoaW5z dWZmaWNpZW50LXRvLWVuYWJsZS1hYm9ydC0wKQogIChlbmFibGUtaGFuZykpCgooZGVmdW4gd29u dC1hYm9ydC0yICgpCiAgKG1lc3NhZ2UgIndhLTIgJXMiIChlbWFjcy1waWQpKQogIChpbnN1ZmZp Y2llbnQtdG8tZW5hYmxlLWFib3J0LTEpCiAgKGVuYWJsZS1oYW5nKSkKCihkZWZ1biB3b250LWFi b3J0LTMgKCkKICAobWVzc2FnZSAid2EtMyAlcyIgKGVtYWNzLXBpZCkpCiAgKGVuYWJsZS1hYm9y dCkKICAoZW5hYmxlLWFib3J0KSkKCihkZWZ1biB3aWxsLWFib3J0LTEgKCkKICA7OyBzbyBJJ20g a2luZCBvZiBhbWF6ZWQgdGhhdCBJIHdhcyBhYmxlIHRvIHJlcHJvZHVjZSB0aGlzCiAgOzsgZm9y IGV4dHJhIGZ1biwgd2hlbiB0aGlzIGRvZXNuJ3QgYWJvcnQgaXQgd2lsbCBhbHNvIHNvbWV0aW1l cyBkZWFkbG9jawogIDs7IE9PT08sIHNvbWV0aW1lcyBpbiAyNyB5b3UgY2FuIGdldCBhIGxvbmcg aGFuZyEgQk9PTSBnb3RjaGEgMTAgc2Vjb25kIGhhbmdzCiAgOzsgbG9va3MgbGlrZSBhIGRlYWRs b2NrIG9yIHNvbWV0aGluZywgdmVyeSB2ZXJ5IHNwb3JhZGljCiAgOzsgbG9va3MgbGlrZSB0aGUg YXBsaW5lIGNvbmZpZyBmb3IgMjguMSBhbHNvIGhhcyB0aGUgMTBzIGRlYWRsb2NrCiAgKGVuYWJs ZS1oYW5nKQogIChtZXNzYWdlICJNQVlCRSBBQk9SVCAxIikKICAoc2V0cSBzdGFydCAoY3VycmVu dC10aW1lKSkKICAoZW5hYmxlLWhhbmcpCiAgKG1lc3NhZ2UgIiVzIHRvb2s6ICVzIiAoZW1hY3Mt cGlkKSAoZmxvYXQtdGltZSAodGltZS1zaW5jZSBzdGFydCkpKSkKCihkZWZ1biB3aWxsLWFib3J0 LTIgKCkKICAoZW5hYmxlLWFib3J0KQogIChtZXNzYWdlICJNQVlCRSBBQk9SVCAyIikKICAoc2V0 cSBzdGFydCAoY3VycmVudC10aW1lKSkKICAobWF5YmUtdHJpZ2dlci1hYm9ydCkKICAobWVzc2Fn ZSAiJXMgdG9vazogJXMiIChlbWFjcy1waWQpIChmbG9hdC10aW1lICh0aW1lLXNpbmNlIHN0YXJ0 KSkpKQoKKGRlZm1hY3JvIGNsaWNhc2UgKCZyZXN0IHJlc3QpCiAgKGxldCAoKG91dCBgKGFuZCAs QChtYXBjYXIgKGxhbWJkYSAodykgKGlmIChtZW1iZXIgdyBhcmd2KSB0IG5pbCkpIHJlc3QpKSkp CiAgICA7OyhtZXNzYWdlICIlUyIgb3V0KQogICAgb3V0KSkKCih3aGVuIChjbGljYXNlICJwcm90 ZWN0IikKICA7OyBzb21laG93IGB1cmwtaHR0cCcgaGFzIGEgcHJvdGVjdGl2ZSBlZmZlY3QgYWdh aW5zdCBhYm9ydCwgYnV0IG5vdCB0aGUgOSBvciAxMCBzZWNvbmQgaGFuZwogIDs7IG5vdGUgdGhh dCB0aGlzIGlzIHByb3RlY3RpdmUgTk9UIHByZXZlbnRhdGl2ZSwgaXQgc2VlbXMgdG8gZGVjcmVh c2UgdGhlIHByb2JhYmlsaXR5IG9mCiAgOzsgdGhlIGNvbmRpdGlvbiBoYXBwZW5pbmcsIGJ1dCBl dmVudHVhbGx5IHRoZSBhYm9ydCB3aWxsIGhhcHBlbgogIDs7IG5ldyBndWVzcyBpcyB1bmluaXRp YWxpemVkIHBvaW50ZXIgdG8gY29udGV4dC0+b3duZXJfY291bnQgbWF5YmUgPz8/CiAgOzsgaXQg ZG9lc24ndCBtYXR0ZXIgd2hldGhlciB3ZSBjbGVhbiB1cCB0aGUgbmV0d29yayBwcm9jZXNzIHNv IHRoYXQgYnJhbmNoIGlzIHJlbW92ZWQKICA7OyBhIGNhbGwgdG8gYG1ha2UtbmV0d29yay1wcm9j ZXNzJyBkb2VzIG5vdCBoYXZlIHRoZSBlZmZlY3QsIGV2ZW4gaWYgYHVybC1odHRwJyBkb2Vzbid0 IGVpdGhlcgogIChtYXliZS10cmlnZ2VyLWhhbmcgImh0dHA6Ly9leGFtcGxlLm9yZy8iICJwcm90 ZWN0aXZlIikpCgooY29uZAogKChjbGljYXNlICJ3b250IiAiaGFuZyIpICAgICAgKHdvbnQtaGFu ZykpCiAoKGNsaWNhc2UgIndpbGwiICJoYW5nIiAiMSIpICAod2lsbC1oYW5nLTEpKQogKChjbGlj YXNlICJ3aWxsIiAiaGFuZyIgIjIiKSAgKHdpbGwtaGFuZy0yKSkKCiAoKGNsaWNhc2UgIndvbnQi ICJhYm9ydCIgIjEiKSAod29udC1hYm9ydC0xKSkKICgoY2xpY2FzZSAid29udCIgImFib3J0IiAi MiIpICh3b250LWFib3J0LTIpKQogKChjbGljYXNlICJ3b250IiAiYWJvcnQiICIzIikgKHdvbnQt YWJvcnQtMykpCgogOzsgdGhpcyB3aWxsIGhhbmcgd2hlbiBwcm90ZWN0ZWQgdmlhIHdvbnQtaGFu ZwogKChjbGljYXNlICJ3aWxsIiAiYWJvcnQiICIxIikgKHdpbGwtYWJvcnQtMSkpCiA7OyB0aGlz IHdpbGwgTk9UIGhhbmcgd2hlbiBwcm90ZWN0ZWQgdmlhIHdvbnQtaGFuZyBwcm9iYWJseSBiZWNh dXNlIHRoZXJlIGlzIG9ubHkgb25lIGFjY2VwdD8KICgoY2xpY2FzZSAid2lsbCIgImFib3J0IiAi MiIpICh3aWxsLWFib3J0LTIpKQogKHQgKGVycm9yICJ1bmtub3duIHRlc3QgY2FzZSIpKSkK --00000000000013c8cf05e37a16e7--