Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:39898 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 76351 invoked from network); 12 Aug 2008 20:51:43 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 12 Aug 2008 20:51:43 -0000 Authentication-Results: pb1.pair.com header.from=helly@php.net; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=helly@php.net; spf=unknown; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 85.214.94.56 as permitted sender) X-PHP-List-Original-Sender: helly@php.net X-Host-Fingerprint: 85.214.94.56 aixcept.net Linux 2.6 Received: from [85.214.94.56] ([85.214.94.56:42214] helo=h1149922.serverkompetenz.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 92/C6-04075-CD7F1A84 for ; Tue, 12 Aug 2008 16:51:42 -0400 Received: from MBOERGER-ZRH (unknown [193.142.125.1]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by h1149922.serverkompetenz.net (Postfix) with ESMTP id 621F211F006; Tue, 12 Aug 2008 22:51:36 +0200 (CEST) Date: Tue, 12 Aug 2008 22:51:35 +0200 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <279600845.20080812225135@marcus-boerger.de> To: Marcus Boerger CC: "Etienne Kneuss" , "Stanislav Malyshev" , , "Lukas Kahwe Smith" , In-Reply-To: <496879481.20080812153636@marcus-boerger.de> References: <909776579.20080803142659@marcus-boerger.de> <840985F2-A701-4BE4-91F6-F6B39048CF9B@pooteeweet.org> <48A09FF4.1030101@zend.com> <7f3ed2c30808111411t51553771j389f05c3436bc625@mail.gmail.com> <48A0C415.9090104@zend.com> <48A0D579.2000000@zend.com> <48A0DBAE.2010401@zend.com> <496879481.20080812153636@marcus-boerger.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------C91BD24535A4F3A6" Subject: Re: [PHP-DEV] Inconsistencies in 5.3 From: helly@php.net (Marcus Boerger) ------------C91BD24535A4F3A6 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Hello Marcus, Tuesday, August 12, 2008, 3:36:36 PM, you wrote: > Hello Etienne, > Tuesday, August 12, 2008, 3:04:48 AM, you wrote: >> Hello, >> On Tue, Aug 12, 2008 at 2:39 AM, Stanislav Malyshev wrote: >>> Hi! >>> >>>> but if the {} syntax is introduced, it will be made to affect only the >>>> code inside it, right? If so, I fail to see your point, since the new >>>> syntax will solve that problem. >>> >>> While introducing a whole collection of new problems - such as that we will >>> have now split scope, that you can get in and out many times in the same >>> file. As we discussed on the list many times, it's not exactly what we want >>> and definitely not the use case it was designed for. I don't see any use for >>> it besides promoting bad coding practices. >> To me >> namespace A { >> code >> } >> namespace B { >> code >> } >> code >> seems equivalent to >> namespace A; >> code >> namespace B; >> code >> namespace ; >> code >> Only nicer. And I can hardly how it's going to cause more problems? >> But if that's so, fine. >> My point is that if we are going to allow multiple namespaces per file >> solely on the perspective of permitting packaging, we should also >> allow mixing namespaced and non-namespaced code for that same >> perspective, and the current syntax is not going to allow that. >> I'd really like the {} syntax if multiple namespaces per file is >> allowed. If it's not, then it's not much more than syntactic sugar and >> I couldn't care less. > Exact same reasoning here. Now, I want to follow up with two things: > I) personal recent encounters > II) collection of argumenmts > III) personal preference > IV) what to do next > I) personal recent encounters > Technically it is pretty easy to come up with parser/lexer changes that > allow anything you want. Starting from real parser support for only one > namespace as the first statement per file down to muliple nested > namespaces after some initial code outside any namespace as in global, > patch for that attached. It does not include zend_language_scanner.c > and is not fully functionally. it just allows getting a feeling for > namespaces with curlies and and a potential limitationt to have non > namespaces code only prior to the first namespace keyword. Also it > could be done much easier but I wanted the extended info stuff the way > it is. > At the end of the day my biggest issues her are: > 1) Namespaces without curly braces and concatenation of files lead to > difference code behavior. > I am not saying that curly braces would solve this fully per se, as you > could still use include/require statements. My point is rather that we > do not addredss this issue at all right now. > And btw, with curly braces we could at least disallow include/require > inside namespaces. Just as we don't allow include/require in classes > outside methods. > 2) When we allow multiple namespaces per file for concatenation, then > why do we not allow code outside of namespaces. Because sooner or > later we want that too. We would want that for the exact reason we > want to have multiple namespaces today - concatenation of files. > However without curly braces we can never concatenate files with code > outside namespaces. > 3) We are moving in the wrong direction here. Instead of keeping the > language easy we make it more complex to understand and deal with. And > the biggest reasons brought up so far are, circled around > - concatenation for speed > - whitespace > - which other language we relate to > I am really sorry for having to keep this running, but we are running > into somethign extremely bad. And it doesn't even work out in the long > run. > Another example. Remember when we first introduced cli? We thought of > adding a new file type that wouldn't need PIs (). We luckily > decided against that idea to keep the language easy. Without curlies we > will sooner or later be in a situation where there are two kinds of php > files. Those with namespaces and those without and they wouldn't be > able to cooperate. > II) collection of argumenmts > Let me try to summarize up to this point. The following options have been > outlined and discussed in more detail: > 1) Kepp all as is: multiple 'namespace' declarations per file, no {} > + For some people this means no additional whitespace (other people do > not have this issue, yet counted as +) > 0 No direct nesting support (some like it, some don't) > 0 Looks and feels more or less like Java packages > 0 Original namespaces in pre 5.0beta had curlies > 0 Is different from C++'s namespaces so it should look different, > more in: http://news.php.net/php.internals/39838 > - Indirect nesting (only): php -r 'namespace foo; namespace foo::bar;' > - Like Java but allows multiple per file and has different keyword > - Multiple namespaces per file as a hack that is not meant to be used > - Two types of scripts, those with and those without namespaces, which > also prevents concatenation as a general solution if one file has > global code > - A file included in a namespaced method is not in that same namespace, > if we fix this we end up in different behavior of include/require for > namespe/non namespace files. If we disallow that, we make it harder > to understand when it is allowed and when not. > - A file included from a namespaced function/method body ends up in > that function method but not in its namespace: > http://lxr.php.net/source/ZendEngine2/tests/ns_069.phpt > http://lxr.php.net/source/ZendEngine2/tests/ns_069.inc > 2) Change keyword 'namespace' to 'package' > 0 Besides the file concatenation this would be exactly what Java does > - Namespace has been a reserved keyword, added 15th August 2007: > > http://cvs.php.net/viewvc.cgi/phpdoc/en/appendices/reserved.xml?r1=1.66&r2=1.67 > - 'Package' is not a reserved keyword at all > [The arguments of 1) aply] > 2b) Like 2) but no multiple namespaces per file (no file concatenation) > 0 Phar can be used to put several file in one anyway > 3) Add curly braces to 'namespace' > + Real nesting (some people don't like it but we support it anyway) > + Allows for global, non namespaced code, and thus full concatenation of > files > 0 Looks and feels exactly like C++ (besides we need to discuss whether to > allow code outside namespace). > 0 Makes it a block structure like class which uses {} > - For some people this means additional whitespace (other people do not > have this issue, yet counted as -) > Why reuse keyword 'namespace' to identify root namespace (namespace::)? > - Why not use ':::' instead (re2c allows that easily) ? > Why no non namespced code? > - Issues with compiler caches > Do we need to support concatenation of files at all costs? > - We actually ship phar which allows to pack as many namespaced files > in a single php file, no matter what namespace support we end up > allowing. > III) personal preference > My preference is 3) and the next one would be 2) without file > concatenation support, as in one namespace per file only. > IV) what to do next > Someone should collect more arguments from the various threads (I am > sure there are more) and put them on a wiki. This pretty much looks > like a job for Lukas :-) In a pretty long IRC discussion we discussed besides other stuff the following: a) Prevent include/require inside namespaced functions. Patch: php-no-include-in-namespaced-functions-6.0-20080812.diff.txt Should pretty much work. b) Allow both 'namspace foo;' as well as 'namespace foo {}'. Patch: php-namespaces-with-curlies-6.0-20080812.diff.txt Note that this patch does not come with test updates and necessary error message adjustage. Best regards, Marcus ------------C91BD24535A4F3A6 Content-Type: text/plain; name="php-no-include-in-namespaced-functions-6.0-20080812.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="php-no-include-in-namespaced-functions-6.0-20080812.diff.txt" SW5kZXg6IFplbmQvemVuZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5 L1plbmRFbmdpbmUyL3plbmQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MjEKZGlmZiAt dSAtcCAtZCAtcjEuNDIxIHplbmQuYwotLS0gWmVuZC96ZW5kLmMJMTIgQXVnIDIwMDggMTc6 MTU6NTggLTAwMDAJMS40MjEKKysrIFplbmQvemVuZC5jCTEyIEF1ZyAyMDA4IDIwOjExOjIy IC0wMDAwCkBAIC04NzQsNiArODc0LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZXJfZ2xvYmFs c19jdG9yKHplbmRfYwogCiAJQ0coaW50ZXJhY3RpdmUpID0gMDsKIAlDRyhsaXRlcmFsX3R5 cGUpID0gWkVORF9TVFJfVFlQRTsKKwlDRyhmdW5jdGlvbl9uZXN0X2xldmVsKSA9IDA7CiAK IAljb21waWxlcl9nbG9iYWxzLT5hdXRvX2dsb2JhbHMgPSAoSGFzaFRhYmxlICopIG1hbGxv YyhzaXplb2YoSGFzaFRhYmxlKSk7CiAJemVuZF91X2hhc2hfaW5pdF9leChjb21waWxlcl9n bG9iYWxzLT5hdXRvX2dsb2JhbHMsIGdsb2JhbF9hdXRvX2dsb2JhbHNfdGFibGUtPm5OdW1P ZkVsZW1lbnRzLCBOVUxMLCBOVUxMLCAxLCBVRyh1bmljb2RlKSwgMCk7CkluZGV4OiBaZW5k L3plbmRfY29tcGlsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1pl bmRFbmdpbmUyL3plbmRfY29tcGlsZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgzNwpk aWZmIC11IC1wIC1kIC1yMS44MzcgemVuZF9jb21waWxlLmMKLS0tIFplbmQvemVuZF9jb21w aWxlLmMJMTIgQXVnIDIwMDggMTc6MTU6NTkgLTAwMDAJMS44MzcKKysrIFplbmQvemVuZF9j b21waWxlLmMJMTIgQXVnIDIwMDggMjA6MTE6MjMgLTAwMDAKQEAgLTEyMTYsNiArMTIxNiw3 IEBAIHZvaWQgemVuZF9kb19iZWdpbl9mdW5jdGlvbl9kZWNsYXJhdGlvbigKIAl6c3RyIGxj bmFtZTsKIAl6ZW5kX2Jvb2wgb3JpZ19pbnRlcmFjdGl2ZTsKIAorCUNHKGZ1bmN0aW9uX25l c3RfbGV2ZWwpKys7CiAJaWYgKGlzX21ldGhvZCkgewogCQlpZiAoQ0coYWN0aXZlX2NsYXNz X2VudHJ5KS0+Y2VfZmxhZ3MgJiBaRU5EX0FDQ19JTlRFUkZBQ0UpIHsKIAkJCWlmICgoWl9M VkFMKGZuX2ZsYWdzX3pub2RlLT51LmNvbnN0YW50KSAmIH4oWkVORF9BQ0NfU1RBVElDfFpF TkRfQUNDX1BVQkxJQykpKSB7CkBAIC0xNDk4LDYgKzE0OTksNyBAQCB2b2lkIHplbmRfZG9f ZW5kX2Z1bmN0aW9uX2RlY2xhcmF0aW9uKGNvCiAKIAl6ZW5kX2RvX2V4dGVuZGVkX2luZm8o VFNSTUxTX0MpOwogCXplbmRfZG9fcmV0dXJuKE5VTEwsIDAgVFNSTUxTX0NDKTsKKwlDRyhm dW5jdGlvbl9uZXN0X2xldmVsKS0tOwogCiAJcGFzc190d28oQ0coYWN0aXZlX29wX2FycmF5 KSBUU1JNTFNfQ0MpOwogCkBAIC00NDg3LDYgKzQ0ODksMTYgQEAgdm9pZCB6ZW5kX2RvX2lu Y2x1ZGVfb3JfZXZhbChpbnQgdHlwZSwgegogCXsKIAkJemVuZF9vcCAqb3BsaW5lID0gZ2V0 X25leHRfb3AoQ0coYWN0aXZlX29wX2FycmF5KSBUU1JNTFNfQ0MpOwogCisJCWlmICh0eXBl ICE9IFpFTkRfRVZBTCAmJiBDRyhmdW5jdGlvbl9uZXN0X2xldmVsKQorCQkJJiYgQ0coY3Vy cmVudF9uYW1lc3BhY2UpICYmIFpfU1RSTEVOX1AoQ0coY3VycmVudF9uYW1lc3BhY2UpKSkK KwkJeworCQkJemVuZF9lcnJvcihFX0NPTVBJTEVfV0FSTklORywKKwkJCQkiSW5jbHVkZSBv ciByZXF1aXJlIHN0YXRlbWVudCBpbnNpZGUgZnVuY3Rpb24gJXYlcyV2IGluc2lkZSBuYW1l c3BhY2UgJVIiLAorCQkJCUNHKGFjdGl2ZV9jbGFzc19lbnRyeSkgPyBDRyhhY3RpdmVfY2xh c3NfZW50cnkpLT5uYW1lIDogRU1QVFlfWlNUUiwKKwkJCQlDRyhhY3RpdmVfY2xhc3NfZW50 cnkpID8gIjo6IiA6ICIiLAorCQkJCUNHKGFjdGl2ZV9vcF9hcnJheSktPmZ1bmN0aW9uX25h bWUudiwKKwkJCQlaX1RZUEVfUChDRyhjdXJyZW50X25hbWVzcGFjZSkpLCBaX1VOSVZBTF9Q KENHKGN1cnJlbnRfbmFtZXNwYWNlKSkpOworCQl9CiAJCW9wbGluZS0+b3Bjb2RlID0gWkVO RF9JTkNMVURFX09SX0VWQUw7CiAJCW9wbGluZS0+cmVzdWx0Lm9wX3R5cGUgPSBJU19WQVI7 CiAJCW9wbGluZS0+cmVzdWx0LnUudmFyID0gZ2V0X3RlbXBvcmFyeV92YXJpYWJsZShDRyhh Y3RpdmVfb3BfYXJyYXkpKTsKSW5kZXg6IFplbmQvemVuZF9nbG9iYWxzLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9nbG9iYWxzLmgs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTgwCmRpZmYgLXUgLXAgLWQgLXIxLjE4MCB6ZW5k X2dsb2JhbHMuaAotLS0gWmVuZC96ZW5kX2dsb2JhbHMuaAkxMSBBdWcgMjAwOCAxNzoxOTow MSAtMDAwMAkxLjE4MAorKysgWmVuZC96ZW5kX2dsb2JhbHMuaAkxMiBBdWcgMjAwOCAyMDox MToyMyAtMDAwMApAQCAtODgsNiArODgsNyBAQCBzdHJ1Y3QgX3plbmRfY29tcGlsZXJfZ2xv YmFscyB7CiAKIAljaGFyICpoZXJlZG9jOwogCWludCBoZXJlZG9jX2xlbjsKKwlpbnQgZnVu Y3Rpb25fbmVzdF9sZXZlbDsKIAogCXplbmRfb3BfYXJyYXkgKmFjdGl2ZV9vcF9hcnJheTsK IApJbmRleDogWmVuZC90ZXN0cy9uc18wNjkucGhwdAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi90ZXN0cy9uc18wNjkucGhwdCx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4xCmRpZmYgLXUgLXAgLWQgLXIxLjEgbnNfMDY5LnBocHQKLS0tIFpl bmQvdGVzdHMvbnNfMDY5LnBocHQJMTIgQXVnIDIwMDggMTE6NTE6MzQgLTAwMDAJMS4xCisr KyBaZW5kL3Rlc3RzL25zXzA2OS5waHB0CTEyIEF1ZyAyMDA4IDIwOjExOjI0IC0wMDAwCkBA IC0zLDIyICszLDM2IEBACiAtLUZJTEUtLQogPD9waHAKIAotbmFtZXNwYWNlIGZvbzsKK25h bWVzcGFjZSBmb286OmJhcjsKKworZnVuY3Rpb24gZnVuY0EoKSB7CisgIHZhcl9kdW1wKChi aW5hcnkpX19OQU1FU1BBQ0VfXyk7CisgIGluY2x1ZGUgX19ESVJfXyAuICcvbnNfMDY5Lmlu Yyc7CisgIHZhcl9kdW1wKChiaW5hcnkpX19OQU1FU1BBQ0VfXyk7Cit9CiAKIGNsYXNzIFRl c3QgewotICBzdGF0aWMgZnVuY3Rpb24gZigpIHsKKyAgc3RhdGljIGZ1bmN0aW9uIGZ1bmNC KCkgewogICAgIHZhcl9kdW1wKChiaW5hcnkpX19OQU1FU1BBQ0VfXyk7CiAgICAgaW5jbHVk ZSBfX0RJUl9fIC4gJy9uc18wNjkuaW5jJzsKICAgICB2YXJfZHVtcCgoYmluYXJ5KV9fTkFN RVNQQUNFX18pOwogICB9CiB9CiAKLVRlc3Q6OmYoKTsKK2Z1bmNBKCk7CitUZXN0OjpmdW5j QigpOwogCiA/PgogPT09RE9ORT09PQotLS1FWFBFQ1QtLQotc3RyaW5nKDMpICJmb28iCist LUVYUEVDVEYtLQorCitXYXJuaW5nOiBJbmNsdWRlIG9yIHJlcXVpcmUgc3RhdGVtZW50IGlu c2lkZSBmdW5jdGlvbiBmb286OmJhcjo6ZnVuY0EgaW5zaWRlIG5hbWVzcGFjZSBmb286OmJh ciBpbiAlc25zXzA2OS5waHAgb24gbGluZSAlZAorCitXYXJuaW5nOiBJbmNsdWRlIG9yIHJl cXVpcmUgc3RhdGVtZW50IGluc2lkZSBmdW5jdGlvbiBmb286OmJhcjo6VGVzdDo6ZnVuY0Ig aW5zaWRlIG5hbWVzcGFjZSBmb286OmJhciBpbiAlc25zXzA2OS5waHAgb24gbGluZSAlZAor c3RyaW5nKDgpICJmb286OmJhciIKIHN0cmluZygwKSAiIgotc3RyaW5nKDMpICJmb28iCitz dHJpbmcoOCkgImZvbzo6YmFyIgorc3RyaW5nKDgpICJmb286OmJhciIKK3N0cmluZygwKSAi Igorc3RyaW5nKDgpICJmb286OmJhciIKID09PURPTkU9PT0K ------------C91BD24535A4F3A6 Content-Type: text/plain; name="php-namespaces-with-curlies-6.0-20080812.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="php-namespaces-with-curlies-6.0-20080812.diff.txt" SW5kZXg6IFplbmQvemVuZF9jb21waWxlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Jl cG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9jb21waWxlLmMsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuODM3CmRpZmYgLXUgLXAgLWQgLXIxLjgzNyB6ZW5kX2NvbXBpbGUuYwotLS0gWmVu ZC96ZW5kX2NvbXBpbGUuYwkxMiBBdWcgMjAwOCAxNzoxNTo1OSAtMDAwMAkxLjgzNworKysg WmVuZC96ZW5kX2NvbXBpbGUuYwkxMiBBdWcgMjAwOCAyMDo0NzozMCAtMDAwMApAQCAtNTM4 Miw3ICs1MzgyLDIxIEBAIHZvaWQgemVuZF9kb19idWlsZF9uYW1lc3BhY2VfbmFtZSh6bm9k ZSAKIH0KIC8qIH19fSAqLwogCi12b2lkIHplbmRfZG9fbmFtZXNwYWNlKGNvbnN0IHpub2Rl ICpuYW1lIFRTUk1MU19EQykgLyoge3t7ICovCit2b2lkIHplbmRfZG9fZW5kX25hbWVzcGFj ZShUU1JNTFNfRCkgLyoge3t7ICovCit7CisJaWYgKENHKGN1cnJlbnRfbmFtZXNwYWNlKSkg eworCQl6dmFsX2R0b3IoQ0coY3VycmVudF9uYW1lc3BhY2UpKTsKKwkJQ0coY3VycmVudF9u YW1lc3BhY2UpID0gTlVMTDsKKwl9CisJaWYgKENHKGN1cnJlbnRfaW1wb3J0KSkgeworCQl6 ZW5kX2hhc2hfZGVzdHJveShDRyhjdXJyZW50X2ltcG9ydCkpOworCQllZnJlZShDRyhjdXJy ZW50X2ltcG9ydCkpOworCQlDRyhjdXJyZW50X2ltcG9ydCkgPSBOVUxMOworCX0KK30KKy8q IH19fSAqLworCit2b2lkIHplbmRfZG9fYmVnaW5fbmFtZXNwYWNlKGNvbnN0IHpub2RlICpu YW1lIFRTUk1MU19EQykgLyoge3t7ICovCiB7CiAJdW5zaWduZWQgaW50IGxjbmFtZV9sZW47 CiAJenN0ciBsY25hbWU7CkBAIC01NDA4LDE2ICs1NDQ2LDggQEAgdm9pZCB6ZW5kX2RvX25h bWVzcGFjZShjb25zdCB6bm9kZSAqbmFtZQogCX0KIAllZnJlZShsY25hbWUudik7CiAKLQlp ZiAoQ0coY3VycmVudF9uYW1lc3BhY2UpKSB7Ci0JCXp2YWxfZHRvcihDRyhjdXJyZW50X25h bWVzcGFjZSkpOwotCX0gZWxzZSB7Ci0JCUFMTE9DX1pWQUwoQ0coY3VycmVudF9uYW1lc3Bh Y2UpKTsKLQl9Ci0JaWYgKENHKGN1cnJlbnRfaW1wb3J0KSkgewotCQl6ZW5kX2hhc2hfZGVz dHJveShDRyhjdXJyZW50X2ltcG9ydCkpOwotCQllZnJlZShDRyhjdXJyZW50X2ltcG9ydCkp OwotCQlDRyhjdXJyZW50X2ltcG9ydCkgPSBOVUxMOwotCX0KKwl6ZW5kX2RvX2VuZF9uYW1l c3BhY2UoVFNSTUxTX0MpOworCUFMTE9DX1pWQUwoQ0coY3VycmVudF9uYW1lc3BhY2UpKTsK IAogCSpDRyhjdXJyZW50X25hbWVzcGFjZSkgPSBuYW1lLT51LmNvbnN0YW50OwogfQpJbmRl eDogWmVuZC96ZW5kX2NvbXBpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3Np dG9yeS9aZW5kRW5naW5lMi96ZW5kX2NvbXBpbGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4zODgKZGlmZiAtdSAtcCAtZCAtcjEuMzg4IHplbmRfY29tcGlsZS5oCi0tLSBaZW5kL3pl bmRfY29tcGlsZS5oCTEyIEF1ZyAyMDA4IDE3OjE1OjU5IC0wMDAwCTEuMzg4CisrKyBaZW5k L3plbmRfY29tcGlsZS5oCTEyIEF1ZyAyMDA4IDIwOjQ3OjMwIC0wMDAwCkBAIC01NDMsNyAr NTQzLDggQEAgdm9pZCB6ZW5kX2RvX2Fic3RyYWN0X21ldGhvZChjb25zdCB6bm9kZQogCiB2 b2lkIHplbmRfZG9fZGVjbGFyZV9jb25zdGFudCh6bm9kZSAqbmFtZSwgem5vZGUgKnZhbHVl IFRTUk1MU19EQyk7CiB2b2lkIHplbmRfZG9fYnVpbGRfbmFtZXNwYWNlX25hbWUoem5vZGUg KnJlc3VsdCwgem5vZGUgKnByZWZpeCwgem5vZGUgKm5hbWUgVFNSTUxTX0RDKTsKLXZvaWQg emVuZF9kb19uYW1lc3BhY2UoY29uc3Qgem5vZGUgKm5hbWUgVFNSTUxTX0RDKTsKK3ZvaWQg emVuZF9kb19iZWdpbl9uYW1lc3BhY2UoY29uc3Qgem5vZGUgKm5hbWUgVFNSTUxTX0RDKTsK K3ZvaWQgemVuZF9kb19lbmRfbmFtZXNwYWNlKFRTUk1MU19EKTsKIHZvaWQgemVuZF9kb191 c2Uoem5vZGUgKm5hbWUsIHpub2RlICpuZXdfbmFtZSwgaW50IGlzX2dsb2JhbCBUU1JNTFNf REMpOwogdm9pZCB6ZW5kX2RvX2VuZF9jb21waWxhdGlvbihUU1JNTFNfRCk7CiAKSW5kZXg6 IFplbmQvemVuZF9sYW5ndWFnZV9wYXJzZXIueQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv cmVwb3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX2xhbmd1YWdlX3BhcnNlci55LHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjIxMApkaWZmIC11IC1wIC1kIC1yMS4yMTAgemVuZF9sYW5ndWFn ZV9wYXJzZXIueQotLS0gWmVuZC96ZW5kX2xhbmd1YWdlX3BhcnNlci55CTEyIEF1ZyAyMDA4 IDEwOjIyOjU3IC0wMDAwCTEuMjEwCisrKyBaZW5kL3plbmRfbGFuZ3VhZ2VfcGFyc2VyLnkJ MTIgQXVnIDIwMDggMjA6NDc6MzAgLTAwMDAKQEAgLTE1MywxNyArMTUzLDIzIEBACiAlJSAv KiBSdWxlcyAqLwogCiBzdGFydDoKLQl0b3Bfc3RhdGVtZW50X2xpc3QJeyB6ZW5kX2RvX2Vu ZF9jb21waWxhdGlvbihUU1JNTFNfQyk7IH0KKwl0b3Bfc3RhdGVtZW50X29yX25hbWVzcGFj ZV9saXN0CXsgemVuZF9kb19lbmRfY29tcGlsYXRpb24oVFNSTUxTX0MpOyB9CiA7CiAKLXRv cF9zdGF0ZW1lbnRfbGlzdDoKLQkJdG9wX3N0YXRlbWVudF9saXN0ICB7IHplbmRfZG9fZXh0 ZW5kZWRfaW5mbyhUU1JNTFNfQyk7IH0gdG9wX3N0YXRlbWVudCB7IEhBTkRMRV9JTlRFUkFD VElWRSgpOyB9Cit0b3Bfc3RhdGVtZW50X29yX25hbWVzcGFjZV9saXN0OgorCQl0b3Bfc3Rh dGVtZW50X29yX25hbWVzcGFjZV9saXN0ICB7IHplbmRfZG9fZXh0ZW5kZWRfaW5mbyhUU1JN TFNfQyk7IH0gdG9wX3N0YXRlbWVudF9vcl9uYW1lc3BhY2UgeyBIQU5ETEVfSU5URVJBQ1RJ VkUoKTsgfQogCXwJLyogZW1wdHkgKi8KIDsKIAotbmFtZXNwYWNlX25hbWU6Ci0JCVRfU1RS SU5HIHsgJCQgPSAkMTsgfQotCXwJbmFtZXNwYWNlX25hbWUgVF9QQUFNQVlJTV9ORUtVRE9U QVlJTSBUX1NUUklORyB7IHplbmRfZG9fYnVpbGRfbmFtZXNwYWNlX25hbWUoJiQkLCAmJDEs ICYkMyBUU1JNTFNfQ0MpOyB9Cit0b3Bfc3RhdGVtZW50X29yX25hbWVzcGFjZToKKwkJdG9w X3N0YXRlbWVudAorCXwJVF9OQU1FU1BBQ0UgbmFtZXNwYWNlX25hbWUgJzsnCXsgemVuZF9k b19iZWdpbl9uYW1lc3BhY2UoJiQyIFRTUk1MU19DQyk7IH0KKwl8CVRfTkFNRVNQQUNFIG5h bWVzcGFjZV9uYW1lICd7Jwl7IHplbmRfZG9fYmVnaW5fbmFtZXNwYWNlKCYkMiBUU1JNTFNf Q0MpOyB9IHRvcF9zdGF0ZW1lbnRfbGlzdCAnfScgeyB6ZW5kX2RvX2VuZF9uYW1lc3BhY2Uo VFNSTUxTX0MpOyB9Cis7CisKK3RvcF9zdGF0ZW1lbnRfbGlzdDoKKwkJdG9wX3N0YXRlbWVu dF9saXN0ICB7IHplbmRfZG9fZXh0ZW5kZWRfaW5mbyhUU1JNTFNfQyk7IH0gdG9wX3N0YXRl bWVudCB7IEhBTkRMRV9JTlRFUkFDVElWRSgpOyB9CisJfAkvKiBlbXB0eSAqLwogOwogCiB0 b3Bfc3RhdGVtZW50OgpAQCAtMTcxLDExICsxNzcsMTUgQEAgdG9wX3N0YXRlbWVudDoKIAl8 CWZ1bmN0aW9uX2RlY2xhcmF0aW9uX3N0YXRlbWVudAl7IHplbmRfZG9fZWFybHlfYmluZGlu ZyhUU1JNTFNfQyk7IH0KIAl8CWNsYXNzX2RlY2xhcmF0aW9uX3N0YXRlbWVudAkJeyB6ZW5k X2RvX2Vhcmx5X2JpbmRpbmcoVFNSTUxTX0MpOyB9CiAJfAlUX0hBTFRfQ09NUElMRVIgJygn ICcpJyAnOycJCXsgemVuZF9kb19oYWx0X2NvbXBpbGVyX3JlZ2lzdGVyKFRTUk1MU19DKTsg WVlBQ0NFUFQ7IH0KLQl8CVRfTkFNRVNQQUNFIG5hbWVzcGFjZV9uYW1lICc7Jwl7IHplbmRf ZG9fbmFtZXNwYWNlKCYkMiBUU1JNTFNfQ0MpOyB9CiAJfAlUX1VTRSB1c2VfZGVjbGFyYXRp b25zICc7JwogCXwJY29uc3RhbnRfZGVjbGFyYXRpb24gJzsnCiA7CiAKK25hbWVzcGFjZV9u YW1lOgorCQlUX1NUUklORyB7ICQkID0gJDE7IH0KKwl8CW5hbWVzcGFjZV9uYW1lIFRfUEFB TUFZSU1fTkVLVURPVEFZSU0gVF9TVFJJTkcgeyB6ZW5kX2RvX2J1aWxkX25hbWVzcGFjZV9u YW1lKCYkJCwgJiQxLCAmJDMgVFNSTUxTX0NDKTsgfQorOworCiB1c2VfZGVjbGFyYXRpb25z OgogCQl1c2VfZGVjbGFyYXRpb25zICcsJyB1c2VfZGVjbGFyYXRpb24KIAl8CXVzZV9kZWNs YXJhdGlvbgo= ------------C91BD24535A4F3A6--