From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Jaros=C5=82aw_?= =?UTF-8?Q?Rzesz=C3=B3tko?= Newsgroups: gmane.emacs.bugs Subject: bug#16220: url-http.el: Not conforming to HTTP spec Date: Fri, 3 Jan 2014 19:06:22 +0100 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113675249281ec04ef14c493 X-Trace: ger.gmane.org 1388772431 1595 80.91.229.3 (3 Jan 2014 18:07:11 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 3 Jan 2014 18:07:11 +0000 (UTC) Cc: 16220@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jan 03 19:07:18 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Vz99R-0007yj-Go for geb-bug-gnu-emacs@m.gmane.org; Fri, 03 Jan 2014 19:07:17 +0100 Original-Received: from localhost ([::1]:51118 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vz99Q-0006Mq-Re for geb-bug-gnu-emacs@m.gmane.org; Fri, 03 Jan 2014 13:07:16 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39653) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vz99I-0006Mh-HU for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2014 13:07:12 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vz99C-0003Ql-IL for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2014 13:07:08 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:46275) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vz99C-0003Qg-EZ for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2014 13:07:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Vz99B-00053a-VY for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2014 13:07:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?Jaros=C5=82aw_?= =?UTF-8?Q?Rzesz=C3=B3tko?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jan 2014 18:07:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 16220 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 16220-submit@debbugs.gnu.org id=B16220.138877238819391 (code B ref 16220); Fri, 03 Jan 2014 18:07:01 +0000 Original-Received: (at 16220) by debbugs.gnu.org; 3 Jan 2014 18:06:28 +0000 Original-Received: from localhost ([127.0.0.1]:60294 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vz98c-00052g-UF for submit@debbugs.gnu.org; Fri, 03 Jan 2014 13:06:28 -0500 Original-Received: from mail-pd0-f179.google.com ([209.85.192.179]:35972) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vz98a-00052W-2i for 16220@debbugs.gnu.org; Fri, 03 Jan 2014 13:06:25 -0500 Original-Received: by mail-pd0-f179.google.com with SMTP id r10so15677207pdi.38 for <16220@debbugs.gnu.org>; Fri, 03 Jan 2014 10:06:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=QyDymF1PCjCFPOKmbd6wzoyg9XGAzosbpYnL08eJ1Ds=; b=ILsFFHQSrEGRPObytO26xKjAjH6kPcWCuEZhYTXyAHCSDJNygGt6aaTLe31TkokdsD ZrsKNNLZatrgyMy+4zgCNSr+JH+Ha3cWIrEGpJ33P0TcN7FI/ytxoDGAKVDZohqcxDy0 Njw4F1n5q5iCsnA7VcHVxi6rf1U1ULThS4JBGlrezEfUis7oE42oC+gbCB/ciWJiTtiG yLQ1srShfXOk4qTJQOPI2yL3hdrTnPwU4UHJ0tX3y8r2VdEFU7rCKhlcMQnVOR+Hwt3a Fw16FbLPKjFocK5JrIkdvgSiSfjbOVmDj1I9T83peqJr7ScrO0h9jLidKrpzNfaFIDMP i5Cw== X-Received: by 10.69.19.225 with SMTP id gx1mr97380557pbd.62.1388772383104; Fri, 03 Jan 2014 10:06:23 -0800 (PST) Original-Received: by 10.66.101.201 with HTTP; Fri, 3 Jan 2014 10:06:22 -0800 (PST) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:82864 Archived-At: --001a113675249281ec04ef14c493 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: quoted-printable I attach a patch that removes the extra "\r\n", adds a function to merge two alists, and uses it to merge the extra-headers on top of the default-headers. I added a few basic tests, too. Cheers, Jaros=B3aw Rzesz=F3tko 2014/1/2 Stefan Monnier : >> The problem is that url-http.el sets a lot of headers by default that >> can not be overwritten in any other way then dynamically overshadowing >> some variables. > > Indeed, this is ugly. Improvements welcome. > >> For example, all connections are keep-alive by >> default, which is confusing in itself already, > > Not sure why it should be a problem. > >> (let ((url-request-method "GET") >> (url-request-extra-headers '(("Connection" . "close")))) >> (url-retrieve-synchronously "http://www.google.com/")) >> And what is sent is this: >> GET / HTTP/1.1 >> Connection: keep-alive >> ... >> Connection: close > >> Which again isn't valid HTTP and the behaviour of the HTTP server in >> this case is undefined and implementation specific. The only way to >> workaround this is doing this: > >> (let ((url-http-attempt-keepalives nil) >> (url-request-method "GET") >> (url-request-extra-headers '(("Connection" . "close")))) >> (url-retrieve-synchronously "http://www.google.com/")) > > Yuck! We can probably fix this fairly easily by letting > url-request-extra-headers override (rather than just add to) > other headers. > >> This is all the more irritating so many of the headers are set by >> default using the variables url-vars.el. Why those things are at all >> variables is a mystery to me. > > Probably partly historical evolution (there was no place to add new > "parameters", so adding dynamic vars was an easy way to add more control > without breaking existing code). > >> In the end it is much easier to do HTTP requests manually using >> make-network-process then it is with the url library, > > I think that's misleading: the URL library is supposed to deal with > things like proxies and redirections, which "manual requests via > make-network-process" probably won't handle. > >> Didn't anyone else run into problems with it? > > Apparently not yet. But I agree that the API might deserve a redesign > (IIRC another problem is in the way headers in the answer are returned > to the caller, which does not work consistently across different kinds > of URLs (ftp, http, file, imap, ...)). > > > Stefan --001a113675249281ec04ef14c493 Content-Type: text/x-patch; charset=UTF-8; name="url.patch" Content-Disposition: attachment; filename="url.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hpzr8afu0 PT09IG1vZGlmaWVkIGZpbGUgJ2xpc3Avc3Vici5lbCcKLS0tIG9sZC9saXNwL3N1YnIuZWwJMjAx NC0wMS0wMSAwNzo0MzozNCArMDAwMAorKysgbmV3L2xpc3Avc3Vici5lbAkyMDE0LTAxLTAzIDE3 OjU3OjE0ICswMDAwCkBAIC00NjQsNiArNDY0LDMwIEBACiAJICAgIChhc2V0IHRyZWUgaSAoY29w eS10cmVlIChhcmVmIHRyZWUgaSkgdmVjcCkpKQogCSAgdHJlZSkKICAgICAgIHRyZWUpKSkKKwor KGRlZnVuIG1lcmdlLWFsaXN0cyAoYWxpczEgYWxpczIga2V5Y21wKQorICAiTWVyZ2VzIGFsaXN0 cyBBTElTMSBhbmQgQUxJUzIsIG5vbi1kZXN0cnVjdGl2ZWx5LCByZXR1cm5pbmcKKyAgYW5vdGhl ciBhbGlzdCwgY29udGFpbmluZyB0aGUga2V5cyBmcm9tIGJvdGggQUxJUzEgYW5kIEFMSVMyLAor ICB3aXRoIHZhbHVlcyBmcm9tIEFMSVMyIHRha2luZyBwcmVjZWRlbmNlLiBGb3IgZWZmaWNpZW5j eSwgYQorICBjb21wYXJpc2lvbiBmdW5jdGlvbiBLRVlDTVAgaGF2ZSB0byBiZSBzdXBwbGllZCwg dGhlIGxpc3RzIHdpbGwKKyAgYmUgc29ydGVkIGFuZCB0aGVuIG1lcmdlZCBieSBoYXZpbmcgdHdv IHBvaW50ZXJzIHRyYXZlcnNlIHRoZQorICB0d28gbGlzdHMgc2ltdWxhdGVuZW91c2x5LiIKKyAg KGxldCAoKGFsaXN0MSAoc29ydCAoY29weS1saXN0IGFsaXMxKSBrZXljbXApKQorICAgICAgICAo YWxpc3QyIChzb3J0IChjb3B5LWxpc3QgYWxpczIpIGtleWNtcCkpCisgICAgICAgIChyZXMgKGxp c3QpKSkKKyAgICAod2hpbGUgKGFuZCBhbGlzdDEgYWxpc3QyKQorICAgICAgKGNvbmQgKChlcXVh bCAoY2FyIChjYXIgYWxpc3QxKSkgKGNhciAoY2FyIGFsaXN0MikpKQorICAgICAgICAgICAgIChw dXNoIChjYXIgYWxpc3QxKSByZXMpCisgICAgICAgICAgICAgKHNldHEgYWxpc3QxIChjZHIgYWxp c3QxKSkKKyAgICAgICAgICAgICAoc2V0cSBhbGlzdDIgKGNkciBhbGlzdDIpKSkKKyAgICAgICAg ICAgICgoZnVuY2FsbCBrZXljbXAgKGNhciBhbGlzdDEpIChjYXIgYWxpc3QyKSkKKyAgICAgICAg ICAgICAocHVzaCAoY2FyIGFsaXN0MSkgcmVzKQorICAgICAgICAgICAgIChzZXRxIGFsaXN0MSAo Y2RyIGFsaXN0MSkpKQorICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAocHVzaCAoY2FyIGFs aXN0MikgcmVzKQorICAgICAgICAgICAgIChzZXRxIGFsaXN0MiAoY2RyIGFsaXN0MikpKSkpCisg ICAgKG5jb25jIHJlcyBhbGlzdDEgYWxpc3QyKSkpCisKIAwKIDs7OzsgVmFyaW91cyBsaXN0LXNl YXJjaCBmdW5jdGlvbnMuCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL3VybC91cmwtY29va2ll LmVsJwotLS0gb2xkL2xpc3AvdXJsL3VybC1jb29raWUuZWwJMjAxNC0wMS0wMSAwNzo0MzozNCAr MDAwMAorKysgbmV3L2xpc3AvdXJsL3VybC1jb29raWUuZWwJMjAxNC0wMS0wMyAxNzo1MDowOCAr MDAwMApAQCAtMjA4LDYgKzIwOCw3IEBACiAJCSAgICAgKGlmIHJldHZhbAogCQkJIChjb25jYXQg cmV0dmFsICI7ICIgY2h1bmspCiAJCSAgICAgICAoY29uY2F0ICJDb29raWU6ICIgY2h1bmspKSkp KQorICAgIChtZXNzYWdlIChwcmluMS10by1zdHJpbmcgcmV0dmFsKSkKICAgICAoaWYgcmV0dmFs CiAJKGNvbmNhdCByZXR2YWwgIlxyXG4iKQogICAgICAgIiIpKSkKCj09PSBtb2RpZmllZCBmaWxl ICdsaXNwL3VybC91cmwtaHR0cC5lbCcKLS0tIG9sZC9saXNwL3VybC91cmwtaHR0cC5lbAkyMDE0 LTAxLTAxIDA3OjQzOjM0ICswMDAwCisrKyBuZXcvbGlzcC91cmwvdXJsLWh0dHAuZWwJMjAxNC0w MS0wMyAxODowNDowMyArMDAwMApAQCAtMjA5LDIwICsyMDksMjMgQEAKIAkodXJsLWh0dHAtbWFy ay1jb25uZWN0aW9uLWFzLWJ1c3kgaG9zdCBwb3J0IGNvbm5lY3Rpb24pKSkpCiAKIDs7IEJ1aWxk aW5nIGFuIEhUVFAgcmVxdWVzdAotKGRlZnVuIHVybC1odHRwLXVzZXItYWdlbnQtc3RyaW5nICgp CisoZGVmdW4gdXJsLWh0dHAtdXNlci1hZ2VudCAoKQogICAoaWYgKG9yIChlcSB1cmwtcHJpdmFj eS1sZXZlbCAncGFyYW5vaWQpCiAJICAoYW5kIChsaXN0cCB1cmwtcHJpdmFjeS1sZXZlbCkKIAkg ICAgICAgKG1lbXEgJ2FnZW50IHVybC1wcml2YWN5LWxldmVsKSkpCi0gICAgICAiIgotICAgIChm b3JtYXQgIlVzZXItQWdlbnQ6ICVzVVJMLyVzXHJcbiIKLQkgICAgKGlmIHVybC1wYWNrYWdlLW5h bWUKLQkJKGNvbmNhdCB1cmwtcGFja2FnZS1uYW1lICIvIiB1cmwtcGFja2FnZS12ZXJzaW9uICIg IikKLQkgICAgICAiIikKLQkgICAgdXJsLXZlcnNpb24pKSkKKyAgICAgICcoKQorICAgIGAoKCJV c2VyLWFnZW50IiAuCisgICAgICAgLChmb3JtYXQgIiVzVVJMLyVzIgorICAgICAgICAgICAgICAg IChpZiB1cmwtcGFja2FnZS1uYW1lCisgICAgICAgICAgICAgICAgICAgIChjb25jYXQgdXJsLXBh Y2thZ2UtbmFtZSAiLyIgdXJsLXBhY2thZ2UtdmVyc2lvbiAiICIpCisgICAgICAgICAgICAgICAg ICAiIikKKyAgICAgICAgICAgICAgICB1cmwtdmVyc2lvbikpKSkpCiAKIChkZWZ1biB1cmwtaHR0 cC1jcmVhdGUtcmVxdWVzdCAoJm9wdGlvbmFsIHJlZi11cmwpCiAgICJDcmVhdGUgYW4gSFRUUCBy ZXF1ZXN0IGZvciBgdXJsLWh0dHAtdGFyZ2V0LXVybCcsIHJlZmVycmVkIHRvIGJ5IFJFRi1VUkwu IgotICAobGV0KiAoKGV4dHJhLWhlYWRlcnMpCisgIChsZXQqICgoZGVmYXVsdC1oZWFkZXJzKQor ICAgICAgICAgKGV4dHJhLWhlYWRlcnMpCisgICAgICAgICAoaGVhZGVycy1zdHJpbmcpCiAJIChy ZXF1ZXN0IG5pbCkKIAkgKG5vLWNhY2hlIChjZHItc2FmZSAoYXNzb2MgIlByYWdtYSIgdXJsLWh0 dHAtZXh0cmEtaGVhZGVycykpKQogCSAodXNpbmctcHJveHkgdXJsLWh0dHAtcHJveHkpCkBAIC0y MzUsMTkgKzIzOCwxMyBAQAogCQkJICh1cmwtZ2V0LWF1dGhlbnRpY2F0aW9uIHVybC1odHRwLXBy b3h5IG5pbCAnYW55IG5pbCkpKSkKIAkgKHJlYWwtZm5hbWUgKHVybC1maWxlbmFtZSB1cmwtaHR0 cC10YXJnZXQtdXJsKSkKIAkgKGhvc3QgKHVybC1ob3N0IHVybC1odHRwLXRhcmdldC11cmwpKQot CSAoYXV0aCAoaWYgKGNkci1zYWZlIChhc3NvYyAiQXV0aG9yaXphdGlvbiIgdXJsLWh0dHAtZXh0 cmEtaGVhZGVycykpCi0JCSAgIG5pbAotCQkgKHVybC1nZXQtYXV0aGVudGljYXRpb24gKG9yCi0J CQkJCSAgKGFuZCAoYm91bmRwICdwcm94eS1pbmZvKQotCQkJCQkgICAgICAgcHJveHktaW5mbykK LQkJCQkJICB1cmwtaHR0cC10YXJnZXQtdXJsKSBuaWwgJ2FueSBuaWwpKSkpCisJIChhdXRoICh1 cmwtZ2V0LWF1dGhlbnRpY2F0aW9uIChvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChhbmQgKGJvdW5kcCAncHJveHktaW5mbykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5LWluZm8pCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXJsLWh0dHAtdGFyZ2V0LXVybCkgbmlsICdhbnkgbmlsKSkp CiAgICAgKGlmIChlcXVhbCAiIiByZWFsLWZuYW1lKQogCShzZXRxIHJlYWwtZm5hbWUgIi8iKSkK ICAgICAoc2V0cSBuby1jYWNoZSAoYW5kIG5vLWNhY2hlIChzdHJpbmctbWF0Y2ggIm5vLWNhY2hl IiBuby1jYWNoZSkpKQotICAgIChpZiBhdXRoCi0JKHNldHEgYXV0aCAoY29uY2F0ICJBdXRob3Jp emF0aW9uOiAiIGF1dGggIlxyXG4iKSkpCi0gICAgKGlmIHByb3h5LWF1dGgKLQkoc2V0cSBwcm94 eS1hdXRoIChjb25jYXQgIlByb3h5LUF1dGhvcml6YXRpb246ICIgcHJveHktYXV0aCAiXHJcbiIp KSkKIAogICAgIDs7IFByb3RlY3Rpb24gYWdhaW5zdCBzdHVwaWQgdmFsdWVzIGluIHRoZSByZWZl cnJlcgogICAgIChpZiAoYW5kIHJlZi11cmwgKHN0cmluZ3AgcmVmLXVybCkgKG9yIChzdHJpbmc9 IHJlZi11cmwgImZpbGU6bmlsIikKQEAgLTI2MCwxNCArMjU3LDU2IEBACiAJCSAobWVtcSAnbGFz dGxvYyB1cmwtcHJpdmFjeS1sZXZlbCkpKQogCShzZXRxIHJlZi11cmwgbmlsKSkKIAotICAgIDs7 IHVybC1odHRwLWV4dHJhLWhlYWRlcnMgY29udGFpbnMgYW4gYXNzb2MtbGlzdCBvZgotICAgIDs7 IGhlYWRlci92YWx1ZSBwYWlycyB0aGF0IHdlIG5lZWQgdG8gcHV0IGludG8gdGhlIHJlcXVlc3Qu Ci0gICAgKHNldHEgZXh0cmEtaGVhZGVycyAobWFwY29uY2F0Ci0JCQkgKGxhbWJkYSAoeCkKLQkJ CSAgIChjb25jYXQgKGNhciB4KSAiOiAiIChjZHIgeCkpKQotCQkJIHVybC1odHRwLWV4dHJhLWhl YWRlcnMgIlxyXG4iKSkKLSAgICAoaWYgKG5vdCAoZXF1YWwgZXh0cmEtaGVhZGVycyAiIikpCi0J KHNldHEgZXh0cmEtaGVhZGVycyAoY29uY2F0IGV4dHJhLWhlYWRlcnMgIlxyXG4iKSkpCisgICAg OzsgRGVmYXVsdC1oZWFkZXJzIGFuZCB1cmwtaHR0cC1leHRyYS1oZWFkZXJzIGFyZSBib3RoIGFs aXN0cyBvZgorICAgIDs7IGhlYWRlci92YWx1ZSBwYWlycworICAgIChzZXRxIGRlZmF1bHQtaGVh ZGVycworICAgICAgICAgIGAoKCJDb25uZWN0aW9uIiAuICwoaWYgKG9yIHVzaW5nLXByb3h5Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCB1cmwtaHR0cC1hdHRlbXB0 LWtlZXBhbGl2ZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsb3NlIiAi a2VlcC1hbGl2ZSIpKQorICAgICAgICAgICAgKCJIb3N0IiAuICwoaWYgKC89ICh1cmwtcG9ydCB1 cmwtaHR0cC10YXJnZXQtdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmwt c2NoZW1lLWdldC1wcm9wZXJ0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXJs LXR5cGUgdXJsLWh0dHAtdGFyZ2V0LXVybCkgJ2RlZmF1bHQtcG9ydCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZm9ybWF0ICIlczolZCIgaG9zdCAodXJsLXBvcnQgdXJsLWh0dHAtdGFy Z2V0LXVybCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCkpCisgICAgICAgICAgICAo Ik1JTUUtVmVyc2lvbiIgLiAiMS4wIikKKyAgICAgICAgICAgICgiQWNjZXB0IiAuICwob3IgdXJs LW1pbWUtYWNjZXB0LXN0cmluZyAiKi8qIikpICAgICAgICAgICAgCisgICAgICAgICAgICAsQCh3 aGVuIChhbmQgKG5vdCBuby1jYWNoZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVy IHVybC1odHRwLW1ldGhvZCAnKCJHRVQiIG5pbCkpKQorICAgICAgICAgICAgICAgIChsZXQgKCh0 bSAodXJsLWlzLWNhY2hlZCB1cmwtaHR0cC10YXJnZXQtdXJsKSkpCisgICAgICAgICAgICAgICAg ICAoaWYgdG0KKyAgICAgICAgICAgICAgICAgICAgICBgKCgiSWYtbW9kaWZpZWQtc2luY2UiIC4g LCh1cmwtZ2V0LW5vcm1hbGl6ZWQtZGF0ZSB0bSkpKSkpKQorICAgICAgICAgICAgLEAod2hlbiBy ZWYtdXJsCisgICAgICAgICAgICAgICAgYCgoIlJlZmVyZXIiIC4gLHJlZi11cmwpKSkKKyAgICAg ICAgICAgICxAKHdoZW4gdXJsLXBlcnNvbmFsLW1haWwtYWRkcmVzcworICAgICAgICAgICAgICAg IGAoKCJGcm9tIiAuICx1cmwtcGVyc29uYWwtbWFpbC1hZGRyZXNzKSkpCisgICAgICAgICAgICAs QCh3aGVuIHVybC1taW1lLWVuY29kaW5nLXN0cmluZworICAgICAgICAgICAgICAgIGAoKCJBY2Nl cHQtZW5jb2RpbmciIC4gLHVybC1taW1lLWVuY29kaW5nLXN0cmluZykpKQorICAgICAgICAgICAg LEAod2hlbiB1cmwtbWltZS1jaGFyc2V0LXN0cmluZworICAgICAgICAgICAgICAgIGAoKCJBY2Nl cHQtY2hhcnNldCIgLiAsdXJsLW1pbWUtY2hhcnNldC1zdHJpbmcpKSkKKyAgICAgICAgICAgICxA KHdoZW4gdXJsLW1pbWUtbGFuZ3VhZ2Utc3RyaW5nCisgICAgICAgICAgICAgICAgYCgoIkFjY2Vw dC1sYW5ndWFnZSIgLiAsdXJsLW1pbWUtbGFuZ3VhZ2Utc3RyaW5nKSkpCisgICAgICAgICAgICAs QCh3aGVuIGF1dGgKKyAgICAgICAgICAgICAgICBgKCgiQXV0aG9yaXphdGlvbiIgLiAsYXV0aCkp KQorICAgICAgICAgICAgLEAod2hlbiBwcm94eS1hdXRoCisgICAgICAgICAgICAgICAgYCgoIlBy b3h5LUF1dGhvcml6YXRpb24iIC4gLHByb3h5LWF1dGgpKSkKKyAgICAgICAgICAgICxAKHdoZW4g dXJsLWh0dHAtZGF0YQorICAgICAgICAgICAgICAgIGAoKCJDb250ZW50LWxlbmd0aCIgLiAsKG51 bWJlci10by1zdHJpbmcgKGxlbmd0aCB1cmwtaHR0cC1kYXRhKSkpKSkKKyAgICAgICAgICAgICxA KHdoZW4gdXJsLWV4dGVuc2lvbnMtaGVhZGVyCisgICAgICAgICAgICAgICAgYCgoIkV4dGVuc2lv biIgLiAsdXJsLWV4dGVuc2lvbnMtaGVhZGVyKSkpCisgICAgICAgICAgICAsQCh1cmwtaHR0cC11 c2VyLWFnZW50KSkpCisKKyAgICA7OzsgdXJsLWh0dHAtZXh0cmEtaGVhZGVycyBhcmUgbWVyZ2Vk IG9uIHRvcCBkZWZhdWx0LWhlYWRlcnMsIGFueQorICAgIDs7OyBoZWFkZXJzIHNwZWNpZmllZCBp biBib3RoIHdpbGwgYmUgc2VudCBhcyBwZXIgdmFsdWUgaW4KKyAgICA7OzsgdXJsLWh0dHAtZXh0 cmEtaGVhZGVycworICAgIChzZXRxIGhlYWRlcnMtc3RyaW5nCisgICAgICAgICAgKGNvbmNhdAor ICAgICAgICAgICAobWFwY29uY2F0CisgICAgICAgICAgICAobGFtYmRhICh4KQorICAgICAgICAg ICAgICAoY29uY2F0IChjYXIgeCkgIjogIiAoY2RyIHgpKSkKKyAgICAgICAgICAgIChtZXJnZS1h bGlzdHMgZGVmYXVsdC1oZWFkZXJzIHVybC1odHRwLWV4dHJhLWhlYWRlcnMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxhbWJkYSAoYSBiKSAoc3RyaW5nLWxlc3NwIChjYXIgYSkgKGNhciBi KSkpKQorICAgICAgICAgICAgIlxyXG4iKQorICAgICAgICAgICAiXHJcbiIpKQogCiAgICAgOzsg VGhpcyB3YXMgZG9uZSB3aXRoIGEgY2FsbCB0byBgZm9ybWF0Jy4gIENvbmNhdGVuYXRpbmcgcGFy dHMgaGFzCiAgICAgOzsgdGhlIGFkdmFudGFnZSBvZiBrZWVwaW5nIHRoZSBwYXJ0cyBvZiBlYWNo IGhlYWRlciB0b2dldGhlciBhbmQKQEAgLTI4Nyw3OCArMzI2LDIxIEBACiAgICAgICAgICAgICdz dHJpbmctYXMtdW5pYnl0ZQogICAgICAgICAgICAoZGVscSBuaWwKICAgICAgICAgICAgIChsaXN0 Ci0gICAgICAgICAgICAgOzsgVGhlIHJlcXVlc3QKKyAgICAgICAgICAgICA7OyBUaGUgcmVxdWVz dCBsaW5lCiAgICAgICAgICAgICAgKG9yIHVybC1odHRwLW1ldGhvZCAiR0VUIikgIiAiCiAgICAg ICAgICAgICAgKGlmIHVzaW5nLXByb3h5ICh1cmwtcmVjcmVhdGUtdXJsIHVybC1odHRwLXRhcmdl dC11cmwpIHJlYWwtZm5hbWUpCiAgICAgICAgICAgICAgIiBIVFRQLyIgdXJsLWh0dHAtdmVyc2lv biAiXHJcbiIKLSAgICAgICAgICAgICA7OyBWZXJzaW9uIG9mIE1JTUUgd2Ugc3BlYWsKLSAgICAg ICAgICAgICAiTUlNRS1WZXJzaW9uOiAxLjBcclxuIgotICAgICAgICAgICAgIDs7IChtYXliZSkg VHJ5IHRvIGtlZXAgdGhlIGNvbm5lY3Rpb24gb3BlbgotICAgICAgICAgICAgICJDb25uZWN0aW9u OiAiIChpZiAob3IgdXNpbmctcHJveHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgdXJsLWh0dHAtYXR0ZW1wdC1rZWVwYWxpdmVzKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImNsb3NlIiAia2VlcC1hbGl2ZSIpICJcclxuIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBIVFRQIGV4dGVuc2lvbnMgd2Ugc3VwcG9ydAotICAgICAg ICAgICAgIChpZiB1cmwtZXh0ZW5zaW9ucy1oZWFkZXIKLSAgICAgICAgICAgICAgICAgKGZvcm1h dAotICAgICAgICAgICAgICAgICAgIkV4dGVuc2lvbjogJXNcclxuIiB1cmwtZXh0ZW5zaW9ucy1o ZWFkZXIpKQotICAgICAgICAgICAgIDs7IFdobyB3ZSB3YW50IHRvIHRhbGsgdG8KLSAgICAgICAg ICAgICAoaWYgKC89ICh1cmwtcG9ydCB1cmwtaHR0cC10YXJnZXQtdXJsKQotICAgICAgICAgICAg ICAgICAgICAgKHVybC1zY2hlbWUtZ2V0LXByb3BlcnR5Ci0gICAgICAgICAgICAgICAgICAgICAg KHVybC10eXBlIHVybC1odHRwLXRhcmdldC11cmwpICdkZWZhdWx0LXBvcnQpKQotICAgICAgICAg ICAgICAgICAoZm9ybWF0Ci0gICAgICAgICAgICAgICAgICAiSG9zdDogJXM6JWRcclxuIiBob3N0 ICh1cmwtcG9ydCB1cmwtaHR0cC10YXJnZXQtdXJsKSkKLSAgICAgICAgICAgICAgIChmb3JtYXQg Ikhvc3Q6ICVzXHJcbiIgaG9zdCkpCi0gICAgICAgICAgICAgOzsgV2hvIGl0cyBmcm9tCi0gICAg ICAgICAgICAgKGlmIHVybC1wZXJzb25hbC1tYWlsLWFkZHJlc3MKLSAgICAgICAgICAgICAgICAg KGNvbmNhdAotICAgICAgICAgICAgICAgICAgIkZyb206ICIgdXJsLXBlcnNvbmFsLW1haWwtYWRk cmVzcyAiXHJcbiIpKQotICAgICAgICAgICAgIDs7IEVuY29kaW5ncyB3ZSB1bmRlcnN0YW5kCi0g ICAgICAgICAgICAgKGlmIHVybC1taW1lLWVuY29kaW5nLXN0cmluZwotICAgICAgICAgICAgICAg ICAoY29uY2F0Ci0gICAgICAgICAgICAgICAgICAiQWNjZXB0LWVuY29kaW5nOiAiIHVybC1taW1l LWVuY29kaW5nLXN0cmluZyAiXHJcbiIpKQotICAgICAgICAgICAgIChpZiB1cmwtbWltZS1jaGFy c2V0LXN0cmluZwotICAgICAgICAgICAgICAgICAoY29uY2F0Ci0gICAgICAgICAgICAgICAgICAi QWNjZXB0LWNoYXJzZXQ6ICIgdXJsLW1pbWUtY2hhcnNldC1zdHJpbmcgIlxyXG4iKSkKLSAgICAg ICAgICAgICA7OyBMYW5ndWFnZXMgd2UgdW5kZXJzdGFuZAotICAgICAgICAgICAgIChpZiB1cmwt bWltZS1sYW5ndWFnZS1zdHJpbmcKLSAgICAgICAgICAgICAgICAgKGNvbmNhdAotICAgICAgICAg ICAgICAgICAgIkFjY2VwdC1sYW5ndWFnZTogIiB1cmwtbWltZS1sYW5ndWFnZS1zdHJpbmcgIlxy XG4iKSkKLSAgICAgICAgICAgICA7OyBUeXBlcyB3ZSB1bmRlcnN0YW5kCi0gICAgICAgICAgICAg IkFjY2VwdDogIiAob3IgdXJsLW1pbWUtYWNjZXB0LXN0cmluZyAiKi8qIikgIlxyXG4iCi0gICAg ICAgICAgICAgOzsgVXNlciBhZ2VudAotICAgICAgICAgICAgICh1cmwtaHR0cC11c2VyLWFnZW50 LXN0cmluZykKLSAgICAgICAgICAgICA7OyBQcm94eSBBdXRob3JpemF0aW9uCi0gICAgICAgICAg ICAgcHJveHktYXV0aAotICAgICAgICAgICAgIDs7IEF1dGhvcml6YXRpb24KLSAgICAgICAgICAg ICBhdXRoCisgICAgICAgICAgICAgOzsgSGVhZGVycworICAgICAgICAgICAgIGhlYWRlcnMtc3Ry aW5nCiAgICAgICAgICAgICAgOzsgQ29va2llcwotCSAgICAgKHdoZW4gKHVybC11c2UtY29va2ll cyB1cmwtaHR0cC10YXJnZXQtdXJsKQotCSAgICAgICAodXJsLWNvb2tpZS1nZW5lcmF0ZS1oZWFk ZXItbGluZXMKLQkJaG9zdCByZWFsLWZuYW1lCi0JCShlcXVhbCAiaHR0cHMiICh1cmwtdHlwZSB1 cmwtaHR0cC10YXJnZXQtdXJsKSkpKQotICAgICAgICAgICAgIDs7IElmLW1vZGlmaWVkLXNpbmNl Ci0gICAgICAgICAgICAgKGlmIChhbmQgKG5vdCBuby1jYWNoZSkKLSAgICAgICAgICAgICAgICAg ICAgICAobWVtYmVyIHVybC1odHRwLW1ldGhvZCAnKCJHRVQiIG5pbCkpKQotICAgICAgICAgICAg ICAgICAobGV0ICgodG0gKHVybC1pcy1jYWNoZWQgdXJsLWh0dHAtdGFyZ2V0LXVybCkpKQotICAg ICAgICAgICAgICAgICAgIChpZiB0bQotICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJJ Zi1tb2RpZmllZC1zaW5jZTogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmwt Z2V0LW5vcm1hbGl6ZWQtZGF0ZSB0bSkgIlxyXG4iKSkpKQotICAgICAgICAgICAgIDs7IFdoZW5j ZSB3ZSBjYW1lCi0gICAgICAgICAgICAgKGlmIHJlZi11cmwgKGNvbmNhdAotICAgICAgICAgICAg ICAgICAgICAgICAgICAiUmVmZXJlcjogIiByZWYtdXJsICJcclxuIikpCi0gICAgICAgICAgICAg ZXh0cmEtaGVhZGVycwotICAgICAgICAgICAgIDs7IExlbmd0aCBvZiBkYXRhCi0gICAgICAgICAg ICAgKGlmIHVybC1odHRwLWRhdGEKLSAgICAgICAgICAgICAgICAgKGNvbmNhdAotICAgICAgICAg ICAgICAgICAgIkNvbnRlbnQtbGVuZ3RoOiAiIChudW1iZXItdG8tc3RyaW5nCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggdXJsLWh0dHAtZGF0YSkpCi0gICAg ICAgICAgICAgICAgICAiXHJcbiIpKQotICAgICAgICAgICAgIDs7IEVuZCByZXF1ZXN0CisgICAg ICAgICAgICAgKHdoZW4gKHVybC11c2UtY29va2llcyB1cmwtaHR0cC10YXJnZXQtdXJsKQorICAg ICAgICAgICAgICAgKHVybC1jb29raWUtZ2VuZXJhdGUtaGVhZGVyLWxpbmVzCisgICAgICAgICAg ICAgICAgaG9zdCByZWFsLWZuYW1lCisgICAgICAgICAgICAgICAgKGVxdWFsICJodHRwcyIgKHVy bC10eXBlIHVybC1odHRwLXRhcmdldC11cmwpKSkpCisgICAgICAgICAgICAgOzsgRW5kIG9mIGhl YWRlcnMKICAgICAgICAgICAgICAiXHJcbiIKLSAgICAgICAgICAgICA7OyBBbnkgZGF0YQotICAg ICAgICAgICAgIHVybC1odHRwLWRhdGEKLQkgICAgIDs7IElmIGB1cmwtaHR0cC1kYXRhJyBpcyBu aWwsIGF2b2lkIHR3byBDUkxGcyAoQnVnIzg5MzEpLgotCSAgICAgKGlmIHVybC1odHRwLWRhdGEg IlxyXG4iKSkpCisgICAgICAgICAgICAgOzsgRGF0YQorICAgICAgICAgICAgIHVybC1odHRwLWRh dGEpKQogICAgICAgICAgICAiIikpCiAgICAgKHVybC1odHRwLWRlYnVnICJSZXF1ZXN0IGlzOiBc biVzIiByZXF1ZXN0KQogICAgIHJlcXVlc3QpKQoKPT09IGFkZGVkIGZpbGUgJ3Rlc3QvYXV0b21h dGVkL3VybC1odHRwLXRlc3RzLmVsJwotLS0gb2xkL3Rlc3QvYXV0b21hdGVkL3VybC1odHRwLXRl c3RzLmVsCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIG5ldy90ZXN0L2F1dG9tYXRlZC91 cmwtaHR0cC10ZXN0cy5lbAkyMDE0LTAxLTAzIDE4OjA2OjIxICswMDAwCkBAIC0wLDAgKzEsMTAw IEBACis7OzsgdXJsLWh0dHAuZWwgLS0tIFRlc3Qgc3VpdGUgZm9yIHVybC1odHRwLgorCis7OyBD b3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor OzsgQXV0aG9yOiBKYXJvc8WCYXcgUnplc3rDs3RrbyA8anJ6ZXN6b3Rrb0BnbWFpbC5jb20+Cis7 OyBLZXl3b3JkczogZGF0YQorCis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisK Kzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7 IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdlcnQpCisocmVxdWly ZSAndXJsLWZ1dHVyZSkKKworKGVydC1kZWZ0ZXN0IHVybC1odHRwLWNyZWF0ZS1yZXF1ZXN0L2Ny ZWF0ZXMtdmFsaWQtaHR0cC1nZXQtcmVxdWVzdCAoKQorICAobGV0KiAoKHVybC1odHRwLWV4dHJh LWhlYWRlcnMpCisgICAgICAgICAodXJsLWh0dHAtcHJveHkgbmlsKSAgICAgIAorICAgICAgICAg KHVybC1odHRwLW1ldGhvZCAiR0VUIikKKyAgICAgICAgICh1cmwtaHR0cC10YXJnZXQtdXJsICh1 cmwtZ2VuZXJpYy1wYXJzZS11cmwgImh0dHA6Ly93d3cuZ251Lm9yZy8iKSkKKyAgICAgICAgICh1 cmwtaHR0cC1kYXRhKQorICAgICAgICAgKHVybC1wYWNrYWdlLW5hbWUgIlhZWiIpCisgICAgICAg ICAodXJsLXBhY2thZ2UtdmVyc2lvbiAiMi4wIikpCisgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAg ICAgIChpbnNlcnQgKHVybC1odHRwLWNyZWF0ZS1yZXF1ZXN0KSkKKyAgICAgIChnb3RvLWNoYXIg KHBvaW50LW1pbikpCisgICAgICAoc2hvdWxkIChsb29raW5nLWF0ICJHRVQgLyBIVFRQLzEuMVxy XG4iKSkKKyAgICAgIChzaG91bGQgKHNlYXJjaC1mb3J3YXJkICJBY2NlcHQ6ICovKlxyXG4iKSkK KyAgICAgIChzaG91bGQgKHNlYXJjaC1mb3J3YXJkICJIb3N0OiB3d3cuZ251Lm9yZ1xyXG4iKSkK KyAgICAgIChzaG91bGQgKHNlYXJjaC1mb3J3YXJkICJVc2VyLWFnZW50OiBYWVovMi4wIFVSTC9F bWFjc1xyXG4iKSkpKSkKKworKGVydC1kZWZ0ZXN0IHVybC1odHRwLWNyZWF0ZS1yZXF1ZXN0L3Nl bmRzLXNpbmdsZWxpbmUtaHR0cC1jb29raWVzICgpCisgIChsZXQqICgodXJsLWh0dHAtZXh0cmEt aGVhZGVycykKKyAgICAgICAgICh1cmwtaHR0cC1wcm94eSBuaWwpICAgICAgCisgICAgICAgICAo dXJsLWh0dHAtbWV0aG9kICJHRVQiKQorICAgICAgICAgKHVybC1odHRwLXRhcmdldC11cmwgKHVy bC1nZW5lcmljLXBhcnNlLXVybCAiaHR0cDovL3d3dy51cmwtaHR0cC10ZXN0LWhvc3QuY29tLyIp KQorICAgICAgICAgKHVybC1odHRwLWRhdGEpCisgICAgICAgICAodXJsLWNvb2tpZS1tdWx0aXBs ZS1saW5lIG5pbCkpCisgICAgKHNldGYgKHVybC11c2UtY29va2llcyB1cmwtaHR0cC10YXJnZXQt dXJsKSB0KQorICAgIChzZXRxIHVybC1jb29raWUtc3RvcmFnZSBuaWwpCisgICAgKHVud2luZC1w cm90ZWN0CisgICAgICAgIChwcm9nbgorICAgICAgICAgICh1cmwtY29va2llLXN0b3JlICJ0ZXN0 MSIgInRlc3R2YWx1ZTF0ZXN0dmFsdWUxdGVzdHZhbHVlMXRlc3R2YWx1ZTF0ZXN0dmFsdWUxIiBu aWwgInd3dy51cmwtaHR0cC10ZXN0LWhvc3QuY29tIiAiLyIpCisgICAgICAgICAgKHVybC1jb29r aWUtc3RvcmUgInRlc3QyIiAidGVzdHZhbHVlMiIgbmlsICJ3d3cudXJsLWh0dHAtdGVzdC1ob3N0 LmNvbSIgIi8iKQorICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAgICAgICAoaW5z ZXJ0ICh1cmwtaHR0cC1jcmVhdGUtcmVxdWVzdCkpCisgICAgICAgICAgICAoZ290by1jaGFyIChw b2ludC1taW4pKQorICAgICAgICAgICAgKHNob3VsZCAoc2VhcmNoLWZvcndhcmQgIkNvb2tpZTog dGVzdDE9dGVzdHZhbHVlMXRlc3R2YWx1ZTF0ZXN0dmFsdWUxdGVzdHZhbHVlMXRlc3R2YWx1ZTE7 IHRlc3QyPXRlc3R2YWx1ZTJcclxuIikpKSkKKyAgICAgIChzZXRxIHVybC1jb29raWUtc3RvcmFn ZSBuaWwpKSkpCisKKyhlcnQtZGVmdGVzdCB1cmwtaHR0cC1jcmVhdGUtcmVxdWVzdC9zZW5kcy1t dWx0aWxpbmUtaHR0cC1jb29raWVzICgpCisgIChsZXQqICgodXJsLWh0dHAtZXh0cmEtaGVhZGVy cykKKyAgICAgICAgICh1cmwtaHR0cC1wcm94eSBuaWwpICAgICAgCisgICAgICAgICAodXJsLWh0 dHAtbWV0aG9kICJHRVQiKQorICAgICAgICAgKHVybC1odHRwLXRhcmdldC11cmwgKHVybC1nZW5l cmljLXBhcnNlLXVybCAiaHR0cDovL3d3dy51cmwtaHR0cC10ZXN0LWhvc3QuY29tLyIpKQorICAg ICAgICAgKHVybC1odHRwLWRhdGEpCisgICAgICAgICAodXJsLWNvb2tpZS1tdWx0aXBsZS1saW5l IHQpCisgICAgICAgICAoY29va2llLXZhbHVlKSkKKyAgICAoc2V0ZiAodXJsLXVzZS1jb29raWVz IHVybC1odHRwLXRhcmdldC11cmwpIHQpCisgICAgKHNldHEgdXJsLWNvb2tpZS1zdG9yYWdlIG5p bCkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKHByb2duCisgICAgICAgICAgKHVybC1j b29raWUtc3RvcmUgInRlc3QxIiAidGVzdHZhbHVlMXRlc3R2YWx1ZTF0ZXN0dmFsdWUxdGVzdHZh bHVlMXRlc3R2YWx1ZTEiIG5pbCAid3d3LnVybC1odHRwLXRlc3QtaG9zdC5jb20iICIvIikKKyAg ICAgICAgICAodXJsLWNvb2tpZS1zdG9yZSAidGVzdDIiICJ0ZXN0dmFsdWUyIiBuaWwgInd3dy51 cmwtaHR0cC10ZXN0LWhvc3QuY29tIiAiLyIpCisgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIK KyAgICAgICAgICAgIChpbnNlcnQgKHVybC1odHRwLWNyZWF0ZS1yZXF1ZXN0KSkKKyAgICAgICAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAoc2hvdWxkIChzZWFyY2gt Zm9yd2FyZCAiQ29va2llOiB0ZXN0MT10ZXN0dmFsdWUxdGVzdHZhbHVlMXRlc3R2YWx1ZTF0ZXN0 dmFsdWUxdGVzdHZhbHVlMVxyXG4iKSkKKyAgICAgICAgICAgIChzaG91bGQgKHNlYXJjaC1mb3J3 YXJkICJDb29raWU6IHRlc3QyPXRlc3R2YWx1ZTJcclxuIikpKSkKKyAgICAgIChzZXRxIHVybC1j b29raWUtc3RvcmFnZSBuaWwpKSkpCisKKyhlcnQtZGVmdGVzdCB1cmwtaHR0cC1jcmVhdGUtcmVx dWVzdC9jcmVhdGVzLXZhbGlkLWh0dHAtcG9zdC1yZXF1ZXN0ICgpCisgIChsZXQqICgodXJsLWh0 dHAtZXh0cmEtaGVhZGVycykKKyAgICAgICAgICh1cmwtaHR0cC1wcm94eSBuaWwpICAgICAgCisg ICAgICAgICAodXJsLWh0dHAtbWV0aG9kICJQT1NUIikKKyAgICAgICAgICh1cmwtaHR0cC10YXJn ZXQtdXJsICh1cmwtZ2VuZXJpYy1wYXJzZS11cmwgImh0dHA6Ly93d3cuZ251Lm9yZy8iKSkKKyAg ICAgICAgICh1cmwtaHR0cC1kYXRhICJ0ZXN0IikpCisgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAg ICAgIChpbnNlcnQgKHVybC1odHRwLWNyZWF0ZS1yZXF1ZXN0KSkKKyAgICAgIChnb3RvLWNoYXIg KHBvaW50LW1pbikpCisgICAgICAoc2hvdWxkIChsb29raW5nLWF0ICJQT1NUIC8gSFRUUC8xLjFc clxuIikpCisgICAgICAoc2hvdWxkIChzZWFyY2gtZm9yd2FyZCAiQWNjZXB0OiAqLypcclxuIikp CisgICAgICAoc2hvdWxkIChzZWFyY2gtZm9yd2FyZCAiQ29udGVudC1sZW5ndGg6IDRcclxuIikp CisgICAgICAoc2hvdWxkIChzZWFyY2gtZm9yd2FyZCAiSG9zdDogd3d3LmdudS5vcmdcclxuIikp CisgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgKHNob3VsZCAoc2VhcmNoLWZv cndhcmQgIlxyXG5cclxuIikpCisgICAgICAoc2hvdWxkIChzZWFyY2gtZm9yd2FyZCAidGVzdCIp KQorICAgICAgKHNob3VsZCAoZXF1YWwgKHBvaW50KSAocG9pbnQtbWF4KSkpKSkpCgo= --001a113675249281ec04ef14c493--