From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 19665 invoked from network); 5 Mar 2023 23:38:53 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 5 Mar 2023 23:38:53 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1678059533; b=b+wZ9TfbaF63iDGPI+/Bsd8RYf5q4FQkeGL6BBr9Rl2FZPGrCAQOMZXlIUrrkq4bUobiyxwNJW wClt5Z+p7SyD01fNw03ulpTo6I8GJ3UX6YV2wa9OpQBdymXvjCaXOQnjZSHax42eFi+YFEJy1Y b/sTuh5UufkvbfBIYWB7X5v7zCKEuLlZFGMIUl/jlMhrrnE0cqKekwiqRlRzirT237eQA001Qy n9vd3i2B1Mj8XjE9k3X+uCRz/Gl1DbcJYEf1mhjSs9nTg7ShsREGE0aENk3gGkob0fTox3kVmS 2Rioeeel6F54wJ6kwSg3jt10rx2+jwCMQC8fWGcyL44B5A==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f46.google.com) smtp.remote-ip=209.85.208.46; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1678059533; bh=hPM1rQ6V2/ec3wqN2UblxyldZTQI/MJMy2cqsD7eXNs=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=f0eq1i7zG+S23jZ1WAlebUGXfbvitD8FCMLQ+8z+Yvm36zXCHiBrTqtTst3r2KEbgfZNwn4eLX Z7qP721cQqkQkFT1oRH1WmbGN3j7OrXHLSqnqHoOXOIitveu+DSpHtESImESVmA1SXY8aXKzGn hxeS3sycLxzxGTXkGB+lQWvpp/Oy8dLS8EDyb4nVZKTPpc6faz80PNYf5JC+g9j5rGfC0UyiN0 dO8fTw0L1JPDcBHqTn3GVpwvA9nmjSwlQazN6nHybo5lHKfKlW9nEzs7S9uMQmOPFZKWl4i0M3 0Mhhlw9hg4as0q6Sp75asvwJLGyptZDiVybsOw5Z1KB7tw==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=hPM1rQ6V2/ec3wqN2UblxyldZTQI/MJMy2cqsD7eXNs=; b=P6txxq3elguw5V/aUtd6HnFhCq F8tM3U5dEnzIHwRHw89ZpLQeTlCyTQ6Ad9C/I0OxQVRJtwoA/Xa9wmR3JUPWVwMGZpC+oHVJMEjY4 qD9MbvBSC2uuBS7pvrqK/cQpN2KHOXCnXlPwuNzIKSIbSAEaXwKeFjPdGPsaynScrRbms+uJjrPpp 8ZZn3i+vA2A09rFeo+IGYwbcZ2L9dzRpxIZNVkQH/6XgevZ9RMlfs7Xb6dnEtX+DRwitIKriOSmVi lWdm4s/VOSRNSq/L3lI+v1u6VnwwlU1jBUOmpIMjKzh3FeiiW2XkkLENFpcnKg5YU3cZSqLmlpOSo bi636iaA==; Received: by zero.zsh.org with local id 1pYxwL-000CA2-3O; Sun, 05 Mar 2023 23:38:53 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f46.google.com) smtp.remote-ip=209.85.208.46; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ed1-f46.google.com ([209.85.208.46]:35357) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1pYxw6-000Br2-9T; Sun, 05 Mar 2023 23:38:39 +0000 Received: by mail-ed1-f46.google.com with SMTP id u9so31797719edd.2 for ; Sun, 05 Mar 2023 15:38:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=hPM1rQ6V2/ec3wqN2UblxyldZTQI/MJMy2cqsD7eXNs=; b=PMvBe++Fk/hDhHpkMO5tBpGzRrMrq08hR69AyWp2LOA5xaGYdCxLTy0tHYGcGbkOww RO858oCgGWopaoePuQZsAEL5lDfGle+gQJex3wOzeoQ8jVeXwlGX844lbNGAUKFiSdtc 3DLC5kROenkPknS02saERc7W8Z7MZ4DXq1MLa7a0ahOW+LxSFEpfw285sq14zGI4aohP yPBkK3tB6S+qogN/icXIhW1EFZ3uW07JMxo3/Axb6PhqmjsYkgrHI+GYmybTiOAGCxkM N0JAyOAHAckcWGdxjLPw6ZdiuGH3iSQTkH3PD51Tsgbxex1n4V8+/28YF/TSNrPgegUB pZXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=hPM1rQ6V2/ec3wqN2UblxyldZTQI/MJMy2cqsD7eXNs=; b=PeJRhe0VpKlYdIFWuCEmtB4yRbuyXTEOQ4Rr99dlMMw24NHEOrIzRSf/O6pGMHi/op lMSj1LAyU2ObJgSBrsXKJ2oNUuWKphzjtRRuaKO+rLKXPutiblHoPjgGOoD8OzbOOIaf vqKu4VMSL9ii4l6qdwtEV4OwQEMOIGoevwf4vMzJlqfOBILe55g0RS6zzFpmCAX58KZX KA3gEmnZHdunrPGx2/cUbmM9ih7uLzHd8iETtF2zwgrdn1UKMuDysW0ErFlhlKWlwa5C Hq+BQ49SPI/QEsDkc+8FVQMJtCNd0PAuoh++gJfRRHAJ+PtPjbOJ30FDCYyZbL5GOk0M pXWg== X-Gm-Message-State: AO0yUKUcGfiaEygABIP1gpmhCKVNEumo8yQgppjnQbUTol4bLJPf4HOi xEwRlp+bjycfWNrdQWgOGTo3SNyYnXH3KOm6Dwrnstgy3EXZpA6XLHM= X-Google-Smtp-Source: AK7set8rBP54AlK/o4omgzlVlFzs2QwqFpgoGO6rFkZNOCWFUND5c2/XXgwVMD7DFXboXUztWZhnML1zPlSWbwgU180= X-Received: by 2002:a50:c313:0:b0:4be:7259:bed7 with SMTP id a19-20020a50c313000000b004be7259bed7mr4898483edb.3.1678059517778; Sun, 05 Mar 2023 15:38:37 -0800 (PST) MIME-Version: 1.0 From: Bart Schaefer Date: Sun, 5 Mar 2023 15:38:06 -0800 Message-ID: Subject: [PATCH] Fixes and tests for namespace prefixes To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000786c4c05f62fadc7" X-Seq: 51510 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --000000000000786c4c05f62fadc7 Content-Type: text/plain; charset="UTF-8" This causes parameters with a leading "." to be skipped by "set" and by "typeset" without other arguments. Also included are tests, and a fix for my misunderstanding of the use of the "once" argument in itype_end(). Patch applies with fuzz if workers/51509 is not applied first, but one of the tests is for ${!...} so that test will fail in that case. --000000000000786c4c05f62fadc7 Content-Type: text/plain; charset="US-ASCII"; name="namespace-fix.txt" Content-Disposition: attachment; filename="namespace-fix.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lew17y9m0 ZGlmZiAtLWdpdCBhL1NyYy9idWlsdGluLmMgYi9TcmMvYnVpbHRpbi5jCmluZGV4IDExYzFhYjNh NC4uZDk5ODAyZjVmIDEwMDY0NAotLS0gYS9TcmMvYnVpbHRpbi5jCisrKyBiL1NyYy9idWlsdGlu LmMKQEAgLTIyNDAsNyArMjI0MCw4IEBAIHR5cGVzZXRfc2luZ2xlKGNoYXIgKmNuYW1lLCBjaGFy ICpwbmFtZSwgUGFyYW0gcG0sIGludCBmdW5jLAogCQlwYXJhbXRhYi0+cHJpbnRub2RlKCZwbS0+ bm9kZSwgUFJJTlRfVFlQRVNFVCk7CiAJICAgIGVsc2UgaWYgKCFPUFRfSVNTRVQob3BzLCdnJykg JiYKIAkJICAgICAodW5zZXQoVFlQRVNFVFNJTEVOVCkgfHwgT1BUX0lTU0VUKG9wcywnbScpKSkK LQkJcGFyYW10YWItPnByaW50bm9kZSgmcG0tPm5vZGUsIFBSSU5UX0lOQ0xVREVWQUxVRSk7CisJ CXBhcmFtdGFiLT5wcmludG5vZGUoJnBtLT5ub2RlLAorCQkJCSAgICBQUklOVF9JTkNMVURFVkFM VUV8UFJJTlRfV0lUSF9OQU1FU1BBQ0UpOwogCSAgICByZXR1cm4gcG07CiAJfQogCWlmICgocG0t Pm5vZGUuZmxhZ3MgJiBQTV9SRVNUUklDVEVEKSAmJiBpc3NldChSRVNUUklDVEVEKSkgewpAQCAt MjI3NCw3ICsyMjc1LDcgQEAgdHlwZXNldF9zaW5nbGUoY2hhciAqY25hbWUsIGNoYXIgKnBuYW1l LCBQYXJhbSBwbSwgaW50IGZ1bmMsCiAJICAgIH0KIAl9CiAJaWYgKE9QVF9JU1NFVChvcHMsJ3An KSkgewotCSAgICBwYXJhbXRhYi0+cHJpbnRub2RlKCZwbS0+bm9kZSwgUFJJTlRfVFlQRVNFVCk7 CisJICAgIHBhcmFtdGFiLT5wcmludG5vZGUoJnBtLT5ub2RlLCBQUklOVF9UWVBFU0VUfFBSSU5U X1dJVEhfTkFNRVNQQUNFKTsKIAkgICAgcmV0dXJuIHBtOwogCX0KIAlpZiAodXNlcG0gPT0gMikJ CS8qIGRvIG5vdCBjaGFuZ2UgdGhlIFBNX1VOU0VUIGZsYWcgKi8KQEAgLTI2NjIsNyArMjY2Myw3 IEBAIGJpbl90eXBlc2V0KGNoYXIgKm5hbWUsIGNoYXIgKiphcmd2LCBMaW5rTGlzdCBhc3NpZ25z LCBPcHRpb25zIG9wcywgaW50IGZ1bmMpCiAgICAgY2hhciAqb3B0c3RyID0gVFlQRVNFVF9PUFRT VFI7CiAgICAgaW50IG9uID0gMCwgb2ZmID0gMCwgcm9mZiwgYml0ID0gUE1fQVJSQVk7CiAgICAg aW50IGk7Ci0gICAgaW50IHJldHVybnZhbCA9IDAsIHByaW50ZmxhZ3MgPSAwOworICAgIGludCBy ZXR1cm52YWwgPSAwLCBwcmludGZsYWdzID0gUFJJTlRfV0lUSF9OQU1FU1BBQ0U7CiAgICAgaW50 IGhhc2FyZ3MgPSAqYXJndiAhPSBOVUxMIHx8IChhc3NpZ25zICYmIGZpcnN0bm9kZShhc3NpZ25z KSk7CiAKICAgICAvKiBQT1NJWEJVSUxUSU5TIGlzIHNldCBmb3IgYmFzaC9rc2ggYW5kIGJvdGgg aWdub3JlIC1wIHdpdGggYXJncyAqLwpAQCAtMjczMCw3ICsyNzMxLDYgQEAgYmluX3R5cGVzZXQo Y2hhciAqbmFtZSwgY2hhciAqKmFyZ3YsIExpbmtMaXN0IGFzc2lnbnMsIE9wdGlvbnMgb3BzLCBp bnQgZnVuYykKIAogICAgIHF1ZXVlX3NpZ25hbHMoKTsKIAotICAgIC8qIEdpdmVuIG5vIGFyZ3Vt ZW50cywgbGlzdCB3aGF0ZXZlciB0aGUgb3B0aW9ucyBzcGVjaWZ5LiAqLwogICAgIGlmIChPUFRf SVNTRVQob3BzLCdwJykpIHsKIAogCWlmIChpc3NldChQT1NJWEJVSUxUSU5TKSAmJiBTSEVMTF9F TVVMQVRJT04oKSAhPSBFTVVMQVRFX0tTSCkgewpAQCAtMjc1Niw4ICsyNzU2LDE0IEBAIGJpbl90 eXBlc2V0KGNoYXIgKm5hbWUsIGNoYXIgKiphcmd2LCBMaW5rTGlzdCBhc3NpZ25zLCBPcHRpb25z IG9wcywgaW50IGZ1bmMpCiAJICAgIC8qIC1wMCB0cmVhdGVkIGFzIC1wIGZvciBjb25zaXN0ZW5j eSAqLwogCX0KICAgICB9CisKKyAgICAvKiBHaXZlbiBubyBhcmd1bWVudHMsIGxpc3Qgd2hhdGV2 ZXIgdGhlIG9wdGlvbnMgc3BlY2lmeS4gKi8KICAgICBpZiAoIWhhc2FyZ3MpIHsKIAlpbnQgZXhj bHVkZSA9IDA7CisKKwlpZiAoIU9QVF9JU1NFVChvcHMsJ20nKSkKKwkgICAgcHJpbnRmbGFncyAm PSB+UFJJTlRfV0lUSF9OQU1FU1BBQ0U7CisJCiAJaWYgKCFPUFRfSVNTRVQob3BzLCdwJykpIHsK IAkgICAgaWYgKCEob258cm9mZikpCiAJCXByaW50ZmxhZ3MgfD0gUFJJTlRfVFlQRTsKZGlmZiAt LWdpdCBhL1NyYy9wYXJhbXMuYyBiL1NyYy9wYXJhbXMuYwppbmRleCA4NWVhZWU2MDkuLjAyMWQz NDFlOCAxMDA2NDQKLS0tIGEvU3JjL3BhcmFtcy5jCisrKyBiL1NyYy9wYXJhbXMuYwpAQCAtNTk2 Niw2ICs1OTY2LDEwIEBAIHByaW50cGFyYW1ub2RlKEhhc2hOb2RlIGhuLCBpbnQgcHJpbnRmbGFn cykKICAgICBQYXJhbSBwID0gKFBhcmFtKSBobjsKICAgICBQYXJhbSBwZWVyID0gTlVMTDsKIAor ICAgIGlmICghKHAtPm5vZGUuZmxhZ3MgJiBQTV9IQVNIRUxFTSkgJiYKKwkhKHByaW50ZmxhZ3Mg JiBQUklOVF9XSVRIX05BTUVTUEFDRSkgJiYgKihwLT5ub2RlLm5hbSkgPT0gJy4nKQorCXJldHVy bjsKKyAgICAKICAgICBpZiAocC0+bm9kZS5mbGFncyAmIFBNX1VOU0VUKSB7CiAJaWYgKChwcmlu dGZsYWdzICYgKFBSSU5UX1BPU0lYX1JFQURPTkxZfFBSSU5UX1BPU0lYX0VYUE9SVCkgJiYKIAkg ICAgIHAtPm5vZGUuZmxhZ3MgJiAoUE1fUkVBRE9OTFl8UE1fRVhQT1JURUQpKSB8fApkaWZmIC0t Z2l0IGEvU3JjL3V0aWxzLmMgYi9TcmMvdXRpbHMuYwppbmRleCA4Y2U5YTE3NWQuLjE0ZmYwZWQ0 NyAxMDA2NDQKLS0tIGEvU3JjL3V0aWxzLmMKKysrIGIvU3JjL3V0aWxzLmMKQEAgLTQzMTksMTMg KzQzMTksMTMgQEAgaXR5cGVfZW5kKGNvbnN0IGNoYXIgKnB0ciwgaW50IGl0eXBlLCBpbnQgb25j ZSkKIHsKICAgICBpZiAoaXR5cGUgPT0gSU5BTUVTUEMpIHsKIAlpdHlwZSA9IElJREVOVDsKLQlp ZiAob25jZSA9PSAwICYmICghaXNzZXQoUE9TSVhJREVOVElGSUVSUykgfHwgRU1VTEFUSU9OKEVN VUxBVEVfS1NIKSkpIHsKKwlpZiAoIWlzc2V0KFBPU0lYSURFTlRJRklFUlMpIHx8IEVNVUxBVElP TihFTVVMQVRFX0tTSCkpIHsKIAkgICAgLyogU3BlY2lhbCBjYXNlIGZvciBuYW1lcyBjb250YWlu aW5nICIuIiwga3NoOTMgbmFtZXNwYWNlcyAqLwogCSAgICBjaGFyICp0ID0gaXR5cGVfZW5kKHB0 ciArICgqcHRyID09ICcuJyksIGl0eXBlLCAwKTsKLQkgICAgaWYgKHQgPiBwdHIrMSkgeworCSAg ICBpZiAodCA+IHB0ciArICgqcHRyID09ICcuJykpIHsKIAkJaWYgKCp0ID09ICcuJykKLQkJICAg IHJldHVybiBpdHlwZV9lbmQodCsxLCBpdHlwZSwgMCk7Ci0JCWVsc2UKKwkJICAgIHB0ciA9IHQg KyAxOwkvKiBGYWxsIHRocm91Z2ggKi8KKwkJZWxzZSBpZiAoIW9uY2UpCiAJCSAgICByZXR1cm4g dDsKIAkgICAgfQogCX0KZGlmZiAtLWdpdCBhL1NyYy96c2guaCBiL1NyYy96c2guaAppbmRleCBm M2E3NzcwNDUuLmEwMjQzZTk4ZSAxMDA2NDQKLS0tIGEvU3JjL3pzaC5oCisrKyBiL1NyYy96c2gu aApAQCAtMjE4NCw2ICsyMTg0LDcgQEAgdHlwZWRlZiBncm91cHNldCAqR3JvdXBzZXQ7CiAjZGVm aW5lIFBSSU5UX0xJTkUJICAgICAgICAoMTw8NikKICNkZWZpbmUgUFJJTlRfUE9TSVhfRVhQT1JU CSgxPDw3KQogI2RlZmluZSBQUklOVF9QT1NJWF9SRUFET05MWQkoMTw8OCkKKyNkZWZpbmUgUFJJ TlRfV0lUSF9OQU1FU1BBQ0UJKDE8PDkpCiAKIC8qIGZsYWdzIGZvciBwcmludGluZyBmb3IgdGhl IHdoZW5jZSBidWlsdGluICovCiAjZGVmaW5lIFBSSU5UX1dIRU5DRV9DU0gJKDE8PDcpCmRpZmYg LS1naXQgYS9UZXN0L0swMnBhcmFtZXRlci56dHN0IGIvVGVzdC9LMDJwYXJhbWV0ZXIuenRzdApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjhhMWJlMWUzNgotLS0gL2Rldi9u dWxsCisrKyBiL1Rlc3QvSzAycGFyYW1ldGVyLnp0c3QKQEAgLTAsMCArMSwxMDYgQEAKKyMgVGVz dCBwYXJhbWV0ZXIgZXhwYW5zaW9uIHdpdGggbmFtZXNwYWNlIHN5bnRheAorIyAoaGVhdmlseSBi b3Jyb3dlZCBmcm9tIEQwNHBhcmFtZXRlci56dHN0KQorCislcHJlcAorCisldGVzdAorCisgIC5r MDIuZm9vPSd0aGUgZmlyc3QgcGFyYW1ldGVyJworICAuazAyLmJhcj0ndGhlIHNlY29uZCBwYXJh bWV0ZXInCisgIHByaW50IC1sICQuazAyLmZvbyAkey5rMDIuYmFyfQorMDpCYXNpYyBzY2FsYXJz IHdpdGggbmFtZXNwYWNlCitGOkJyYWNlcyBhcmUgcmVxdWlyZWQKKz4kLmswMi5mb28KKz50aGUg c2Vjb25kIHBhcmFtZXRlcgorCisgIHR5cGVzZXQgLmswMi5iYXI9J3RoZSBzZWNvbmQgcGFyYW1l dGVyJworICBwcmludCAtbCAkey5rMDIuYmFyfQorMDpTY2FsYXIgYnV0IHdpdGggdHlwZXNldAor PnRoZSBzZWNvbmQgcGFyYW1ldGVyCisKKyAgLmswMi5hcnJheTE9KHRoZSBmaXJzdCBhcnJheSkK KyAgLmswMi5hcnJheTI9KHRoZSBzZWNvbmQgYXJyYXkpCisgIHByaW50IC1sICQuazAyLmFycmF5 MSAkey5rMDIuYXJyYXkyfQorMDpCYXNpYyBhcnJheXMgd2l0aCBuYW1lc3BhY2UKKz4kLmswMi5h cnJheTEKKz50aGUKKz5zZWNvbmQKKz5hcnJheQorCisgIHR5cGVzZXQgLWEgLmswMi5hcnJheTI9 KHRoZSBzZWNvbmQgYXJyYXkpCisgIHByaW50IC1sICR7LmswMi5hcnJheTJ9CiswOkFycmF5IGJ1 dCB3aXRoIHR5cGVzZXQKKz50aGUKKz5zZWNvbmQKKz5hcnJheQorCisgIHNldG9wdCBrc2hhcnJh eXMKKyAgcHJpbnQgLWwgJHsuazAyLmFycmF5Mn0KKyAgdW5zZXRvcHQga3NoYXJyYXlzCiswOkJh c2ljIGtzaGFycmF5IHdpdGggbmFtZXNwYWNlCis+dGhlCisKKyAgc2V0b3B0IHNod29yZHNwbGl0 CisgIHByaW50IC1sICR7LmswMi5mb299ICR7PT0uazAyLmJhcn0KKyAgdW5zZXRvcHQgc2h3b3Jk c3BsaXQKKzA6QmFzaWMgc2h3b3Jkc3BsaXQgd2l0aCBuYW1lc3BhY2UKKz50aGUKKz5maXJzdAor PnBhcmFtZXRlcgorPnRoZSBzZWNvbmQgcGFyYW1ldGVyCisKKyAgcHJpbnQgJHsrLmswMi5mb299 ICR7Ky5rMDIubm90YXBwZWFyaW5naW50aGlzdGVzdH0KKzA6JCsuLi4gYW5kIG5hbWVzcGFjZQor PjEgMAorCisgIC5rMDIueD0oKQorICBwcmludCAkeysuazAyLnh9ICR7Ky5rMDIueFsxXX0gJHsr LmswMi54WyhyKWZvb119ICR7Ky5rMDIueFsociliYXJdfQorICAuazAyLng9KGZvbykKKyAgcHJp bnQgJHsrLmswMi54fSAkeysuazAyLnhbMV19ICR7Ky5rMDIueFsocilmb29dfSAkeysuazAyLnhb KHIpYmFyXX0KKzA6JCsuLi4gd2l0aCBhcnJheXMgYW5kIG5hbWVzcGFjZQorPjEgMCAwIDAKKz4x IDEgMSAwCisKKyAgIyBTZWUgRDA0IGZvciBjb21wbGV0ZSBleHBsYW5hdGlvbi4KKyAgIyBGb3Ig SzAyIHdlJ3JlIGp1c3QgdGVzdGluZyB0aGF0IGZsYWcgc3ludGF4IHdvcmtzLgorICAuazAyLmZv bz0nPGZpdmU+IHtzaXh9IChzZXZlbikgPmVpZ2h0PCB9bmluZXsgfGZvcnR5LXR3b3wgJG1hbnkk ICl0ZW4oIG1vcmUnCisgIC5rMDIuYXJyYXk9KCR7KHopLmswMi5mb299KQorICBwcmludCAtbCAk eyhRKS5rMDIuYXJyYXl9CiswOiR7KHopLi4ufSBhbmQgJHsoUSkuLi59IGZvciBzb21lIGhhcmQg dG8gcGFyc2UgY2FzZXMKKz48Cis+Zml2ZQorPj4KKz57c2l4fQorPigKKz5zZXZlbgorPikKKz4+ Cis+ZWlnaHQKKz48Cis+fW5pbmV7Cis+fAorPmZvcnR5LXR3bworPnwKKz4kbWFueSQKKz4pCis+ dGVuKCBtb3JlCisKKyAgLmswMi5hcnJheT0oY2hhcmFjdGVycyBpbiBhbiBhcnJheSkKKyAgcHJp bnQgJHsoYykjLmswMi5hcnJheX0KKzA6JHsoYykjLi4ufQorPjIyCisKKyAgKCkgeworICAgIHR5 cGVzZXQgLW4gLmswMi5yZWY9LmswMi5hcnJheQorICAgIGVtdWxhdGUgLUwga3NoCisgICAgcHJp bnQgLWwgJHshLmswMi5yZWZ9ICR7KCEpLmswMi5yZWZ9ICR7LmswMi5yZWZ9CisgIH0KKzA6bmFt ZXJlZnMgd2l0aCBuYW1lc3BhY2VzCis+LmswMi5hcnJheQorPi5rMDIuYXJyYXkKKz5jaGFyYWN0 ZXJzCisKKyAgay4yPXRlc3QKKyAgcHJpbnQgJHtrLjJ9CiswOlBhcnNlIHdpdGhvdXQgbGVhZGlu ZyBkb3QgKGZ1dHVyZSBwcm9vZmluZykKKz50ZXN0Cg== --000000000000786c4c05f62fadc7--