Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wbXSw-002eF3-39 for pgsql-bugs@arkaria.postgresql.org; Mon, 22 Jun 2026 05:45:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wbXSv-004c9P-31 for pgsql-bugs@arkaria.postgresql.org; Mon, 22 Jun 2026 05:45:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wbXSv-004c9H-1x for pgsql-bugs@lists.postgresql.org; Mon, 22 Jun 2026 05:45:01 +0000 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wbXSt-00000001hwe-0ulR for pgsql-bugs@lists.postgresql.org; Mon, 22 Jun 2026 05:45:01 +0000 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-7e615efd7d7so3577359a34.2 for ; Sun, 21 Jun 2026 22:44:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782107097; cv=none; d=google.com; s=arc-20240605; b=E/Mu3JYY7LmM2v/QDvuPa/f5KCBqqAdk7xW8/lRr707AUtgPfIacLloWHnvjU/O2Ov TehB1gxe+a5k0RzBp5ZwcCGVJhp4x8trOn2iKi8erDvMqfTQ2422OM7NcF5hDES+8Et8 HT+ekIx3/E75fTyVNULy4WPppUFPlp3kovlbckbRPcv4fJ4DWpxv+dlzSi18n/QHMK9e z9hwriku5fDTjcC8IAmOLdlmLFyqp5nSY7UHwGVXYo/dvSdM+gvbkQVME+NzUfxruLuk OVM8JoeV3IE6oijMvnDnhnir8+9RvN/rd+xP+4ssq4IyAkOLJMdbCAyx4gy/pDoECEnM y2ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=jX8ow3xt0+Tnt/eLRexYOB2j0YCF14jPs0VsyPh2/2k=; fh=UxbwJDfGFBsdn5YUL0hY7ceK7rsEl6AXxtqQZWuV6+M=; b=EaIwY77dLabOk+ZzbT1McC2Bx0W1aJOt5pJ9ntl0HfQZsua587IX8U1zdUnOpge3gf Ev7hjLgTKjc+8eyYIiDjqy/Sk8MWecVlQoht9onf6ORJJDY/sq/1VlUDBJHK6H9Nor4y wrN1qZwDb7Hmjq3KTxaBKwlgndGM2wRoqryMSiOYoxRPSCxhK0CDYC7vIaCpgm+DK2gk Z4OXXVW0O3OEQv5Z4KIBk3njOPvFaa+wX1MRkUkNuBjjJNy3TUrmugow+rnE865QFd0M VtoesdfUlfSN+ZUQSFFTV0T8m3ZuPIVKdxixYLuIBN+L2CwcbqEmSFot5Rzkdwi7wlhR rQdg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782107097; x=1782711897; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jX8ow3xt0+Tnt/eLRexYOB2j0YCF14jPs0VsyPh2/2k=; b=nYItRZMHuLpcHktjY8b2hHA6cAf1Uy28EIAwncX3k62x+FsRaGdwVOLL1fG+5579MZ n0oCyeTZgO3vqmEf89EXlppO59immVIC+pNCXAVBFjXOKi6x/ox7pyZG4vdmLDklZkI1 7yr0KZ0qFS19lEcVK47oyuAORs6osBjjO5RG51zn94+XQJYrYdKRqjA0uhGo7pNwUzAK WLekolEVoxg8nMYnpwsHBoUnqB/COTzENYEhNrAmv+GcRpTTOW+VMs+6jBK7cllUFN7R 6ludmjpfCwu2i3LgUozmQtU7Iqn7tH7emkcuI52O4dlPkMwiUgHewD13dzXv+7Jkh1gk J4JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782107097; x=1782711897; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jX8ow3xt0+Tnt/eLRexYOB2j0YCF14jPs0VsyPh2/2k=; b=eXZN4JKMD57vAsZH/vs4vii3+2WvDc9e6ANWkAd9Xroz7JL87l4KjZ1ZIfvTohnghR yKHfUMgvRs4M8EGE7N6D34XZ+D3HKoKFLTXGLmhNXrYQqS+i8Q14w1rp4NTf1A8suTSU GcHUYHAx7XyONr4jVl8FnSVSqEu7Ww6YknpfUsrtCmjtzLHG4JUkmjGx2ikOv31+nW0R 7HttsyfHixVqTbbTaq7aUrbeTS4Qv1Ssr4cLWW+72rs3sFIaLMW0RraLRwd9H84JveKY BXiqmGuoRWF5SChIV4vBwAPYlDsqsghG2rqJnuUHpkrrvBioRvgeihzbnmLkhGTjk0Dy qvrg== X-Forwarded-Encrypted: i=1; AFNElJ8NnOepZTCHUIbT5DcsMPUGkrIvNLysadRsNXnfHkW/9Q9VnvsC4UetgG3hy3eM9G1djw7EjM6c/3rQ@lists.postgresql.org X-Gm-Message-State: AOJu0YyARrEYJFpQg8cg6LmMZ0TkZIJyg5VKWBBzdb0ADfDaPNVx4ebb R8JcIlooDXr/dcyaWl7LAEmZcYFpPSDPtIALGk3DW1Rfd+LuvwvBnFRtft+5BcGxyxEaI0L2iL7 VGBnEodkbFw5eWH3l0oO0SIdx1SPiaO4= X-Gm-Gg: AfdE7cm+ugc0+BkGNHEZmaOpdVyZ7Glv5L0K7d8CxrRPZ7HbZzPpA5KLppsud3GN+u1 7nPWeoa4cKJFngqEdr8DTCK+wGWXacqbvZLf/D3kB+zowBKWHHMHJKLwTDefnhbmQHUQSOl3C6C TKkjzwkuLqxTFbFxgNuNrgnTDdfRyCz2UuzL0iqGKQ2wsA9KafbIS6ban/VMMz64CL/tlyObZMD kYNLuvnBjKFP21cqkLxM9NxhSKhXiqbFVI0KzwznmLAdAMsC8lybvHz6Li2Wt0Qiyz/OQiILqvd awwEfdiSIUQ9iZRr61MXJY35P8T8J/9pH9jZT0m332Sbyq4XuYPz3jF+ihkLz5YO+pjaUEwmDYY V2BCnErHvuGBL7+ZIqB6ZwfPOqQ== X-Received: by 2002:a05:6808:2448:b0:489:f158:ee6c with SMTP id 5614622812f47-489f158f2e3mr9217936b6e.21.1782107097268; Sun, 21 Jun 2026 22:44:57 -0700 (PDT) MIME-Version: 1.0 References: <19483-80de42dc4e62cfd6@postgresql.org> <104812.1780847519@sss.pgh.pa.us> <5184088806e70ed5db7e83bd6540a016b3802c1d.camel@cybertec.at> In-Reply-To: <5184088806e70ed5db7e83bd6540a016b3802c1d.camel@cybertec.at> From: =?UTF-8?Q?H=C3=BCseyin_Demir?= Date: Mon, 22 Jun 2026 07:44:45 +0200 X-Gm-Features: AVVi8CeBYMMsB_e6GXIgaxUQKZHPB5XD9c_3yHCp9tpDRYjH6VQY9t3rpn1evf0 Message-ID: Subject: Re: BUG #19483: pg_upgrade fails with orphan records in pg_init_priv catalog table To: Laurenz Albe Cc: Tom Lane , Greg Sabino Mullane , pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000007c57540654d1248f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007c57540654d1248f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, > Further testing shows that changing this query isn't enough. > There are three more places where pg_dump queries pg_init_privs > (in getAggregates, getFuncs and dumpTable). > > So we'd have to use a similarly ugly query in all these places, > which doesn't seem particularly attractive and introduces > considerable code duplication. > > One approach I can think of is to have a macro SAFE_INITPRIVS > that contains the ugly subquery and is used in all these places. > > The other idea is to do some post-processing of the aclitems > found, but they are in string form and would need to get parsed > again, which doesn't look attractive either. Thanks for the feedback. I created a simple v4 patch to cover your feedback v4 applies the filter at all four sites where pg_dump queries pg_init_privs= : - getAggregates() =E2=80=94 WHERE clause comparison - getFuncs() =E2=80=94 WHERE clause comparison - getAdditionalACLs() =E2=80=94 SELECT expression (object-level initprivs) - PREPQUERY_GETCOLUMNACLS =E2=80=94 SELECT expression (column-level initpri= vs, objsubid !=3D 0) Secondly to avoid duplicating the multi-line subquery at every call site, I introduced a SAFE_INITPRIVS(col) macro. I tried to add more clean and detailed comments for future commits but please let me know if you have additional feedback on it. Regards, Demir. --0000000000007c57540654d1248f Content-Type: application/octet-stream; name="v4-0001-pg_dump-skip-dangling-initprivs.patch" Content-Disposition: attachment; filename="v4-0001-pg_dump-skip-dangling-initprivs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqosikbg0 RnJvbSA5MTJkYjAxOTRiY2M4ZjcwOTRmZWIyMmQyOGE1ZjA1ZTYzNGRjOWQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIdXNleWluIERlbWlyIDxodXNleWluLmQzckBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTkgSnVuIDIwMjYgMDc6Mzk6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw Z19kdW1wOiBza2lwIHBnX2luaXRfcHJpdnMgZW50cmllcyBmb3Igbm9uLWV4aXN0ZW50IHJvbGVz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpwZ19pbml0X3ByaXZzLCBpbnRyb2R1 Y2VkIGluIFBvc3RncmVTUUwgOS42LCByZWNvcmRzIHRoZSAiaW5pdGlhbCIKcHJpdmlsZWdlIHN0 YXRlIG9mIG9iamVjdHMg4oCUIGVpdGhlciBzZXQgYnkgaW5pdGRiIChwcml2dHlwZSAnaScpIG9y IGJ5CkNSRUFURSBFWFRFTlNJT04gc2NyaXB0cyAocHJpdnR5cGUgJ2UnKS4gIHBnX2R1bXAgcmVh ZHMgdGhpcyBjYXRhbG9nIHRvCmRldGVybWluZSB3aGljaCBBQ0wgY2hhbmdlcyB0aGUgdXNlciBt YWRlIG9uIHRvcCBvZiB0aGUgZGVmYXVsdHMsIHNvIGl0CmNhbiBlbWl0IHRoZSByaWdodCBHUkFO VC9SRVZPS0Ugc3RhdGVtZW50cy4KCkJlZm9yZSBjb21taXQgNTM0Mjg3NDAzOTEsIFBvc3RncmVT UUwgZGlkIG5vdCByZWNvcmQgcm9sZSBkZXBlbmRlbmNpZXMKZm9yIHBnX2luaXRfcHJpdnMgZW50 cmllcyBpbiBwZ19zaGRlcGVuZCwgbWVhbmluZyBEUk9QIFJPTEUgY291bGQgbGVhdmUKYmVoaW5k IEFDTCBlbnRyaWVzIHdob3NlIGdyYW50ZWUgb3IgZ3JhbnRvciBPSUQgbm8gbG9uZ2VyIGV4aXN0 cyBpbgpwZ19hdXRoaWQuICBDcm9zcy1jbHVzdGVyIHJlc3RvcmVzIChkdW1waW5nIGZyb20gb25l IHN5c3RlbSB3aGVyZSBhIHJvbGUKZXhpc3RlZCwgcmVzdG9yaW5nIHRvIGFub3RoZXIgd2hlcmUg aXQgZG9lcyBub3QpIGNhbiBwcm9kdWNlIHRoZSBzYW1lCnNpdHVhdGlvbiBldmVuIG9uIG1vZGVy biByZWxlYXNlcy4KClRoZSBvbGQgY29kZSBwYXNzZWQgdGhlc2UgZGFuZ2xpbmcgYWNsaXRlbSBl bnRyaWVzIHRocm91Z2ggdW5jaGFuZ2VkLgpBIGRhbmdsaW5nIGdyYW50ZWUgY2F1c2VkIHBnX2R1 bXAgdG8gZW1pdCBzdGF0ZW1lbnRzIHN1Y2ggYXMKCiAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNU SU9OIGZvbygpIFRPICI4Nzg2OCI7Cgp3aGVyZSAiODc4NjgiIGlzIGEgbnVtZXJpYyBPSUQg4oCU IGludmFsaWQgU1FMIHRoYXQgZmFpbHMgb24gcmVzdG9yZS4KQSBkYW5nbGluZyBncmFudG9yIGNh dXNlZCBwZ19kdW1wIHRvIGVtaXQKCiAgICBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OICI4Nzg2 OCI7CgpiZWZvcmUgdGhlIEdSQU5ULCB3aGljaCBsaWtld2lzZSBmYWlscyBvbiByZXN0b3JlIG9y IHBnX3VwZ3JhZGUuCgpUaGVyZSBpcyBhIHNlY29uZCwgbW9yZSBzdWJ0bGUgYnVnOiBnZXRBZ2dy ZWdhdGVzKCkgYW5kIGdldEZ1bmNzKCkgdXNlCnBpcC5pbml0cHJpdnMgdW5maWx0ZXJlZCBpbiB0 aGVpciBXSEVSRSBjbGF1c2UgdG8gZGVjaWRlIHdoZXRoZXIgYW4Kb2JqZWN0IG5lZWRzIEFDTCBv dXRwdXQgYXQgYWxsLiAgV2hlbiBhbGwgaW5pdHByaXZzIGVudHJpZXMgZm9yIGFuCm9iamVjdCBh cmUgZGFuZ2xpbmcgYW5kIHRoZSBsaXZlIHByb2FjbCBpcyBOVUxMLCB0aGUgY29tcGFyaXNvbgoK ICAgIHAucHJvYWNsIElTIERJU1RJTkNUIEZST00gcGlwLmluaXRwcml2cwoKZXZhbHVhdGVzIHRv IHRydWUgKE5VTEwgSVMgRElTVElOQ1QgRlJPTSA8bm9uLU5VTEwgYXJyYXk+KSwgY2F1c2luZyB0 aGUKb2JqZWN0IHRvIGJlIHNlbGVjdGVkIGZvciBBQ0wgb3V0cHV0LiAgQWZ0ZXIgZ2V0QWRkaXRp b25hbEFDTHMoKSByZXR1cm5zCk5VTEwgZm9yIHRoZSBub3ctZW1wdHkgaW5pdHByaXZzLCBkdW1w QUNMKCkgY29tcHV0ZXMgdGhlIGRlbHRhIGZyb20KYWNsZGVmYXVsdCB0byBOVUxMIGFuZCBlbWl0 cyBhIHNwdXJpb3VzIFJFVk9LRSB0aGF0IGJyZWFrcyByZXN0b3JlLgoKRml4IGJ5IGZpbHRlcmlu ZyBlYWNoIGFjbGl0ZW0gd2hvc2UgZ3JhbnRvciBvciBub24tUFVCTElDIGdyYW50ZWUgT0lECmRv ZXMgbm90IGFwcGVhciBpbiBwZ19hdXRoaWQsIGFuZCBieSBhcHBseWluZyB0aGF0IGZpbHRlciBh dCBhbGwgZm91cgpzaXRlcyB3aGVyZSBwZ19kdW1wIHF1ZXJpZXMgcGdfaW5pdF9wcml2czoKCiAg LSBnZXRBZ2dyZWdhdGVzKCk6IFdIRVJFIGNsYXVzZSBjb21wYXJpc29uCiAgLSBnZXRGdW5jcygp OiBXSEVSRSBjbGF1c2UgY29tcGFyaXNvbgogIC0gZ2V0QWRkaXRpb25hbEFDTHMoKTogU0VMRUNU IGV4cHJlc3Npb24gKG9iamVjdC1sZXZlbCBpbml0cHJpdnMpCiAgLSBQUkVQUVVFUllfR0VUQ09M VU1OQUNMUzogU0VMRUNUIGV4cHJlc3Npb24gKGNvbHVtbi1sZXZlbCBpbml0cHJpdnMsCiAgICBv YmpzdWJpZCAhPSAwKQoKVG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIG11bHRpLWxpbmUgc3VicXVl cnkgYXQgZXZlcnkgY2FsbCBzaXRlLCBkZWZpbmUKYSBTQUZFX0lOSVRQUklWUyhjb2wpIG1hY3Jv IHRoYXQgZXhwYW5kcyB0byB0aGUgZmlsdGVyaW5nIGV4cHJlc3Npb24gdmlhCkMgYWRqYWNlbnQg c3RyaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbi4KCklmIGFsbCBlbnRyaWVzIGZvciBhbiBvYmpl Y3QgYXJlIGRhbmdsaW5nIHRoZSByZXN1bHQgaXMgTlVMTCBhbmQgbm8gQUNMCmlzIGVtaXR0ZWQs IHdoaWNoIGlzIGNvcnJlY3Qg4oCUIHdlIGNhbm5vdCByZXN0b3JlIGdyYW50cyBpbnZvbHZpbmcg cm9sZXMKdGhhdCBkbyBub3QgZXhpc3QuCgpBIHNpbWlsYXIgaXNzdWUgaW4gcGdfZHVtcGFsbCB3 YXMgZml4ZWQgYnkgY29tbWl0IDc0YjQ0MzhhNzBiLgoKVGhpcyBidWcgaGFzIGV4aXN0ZWQgc2lu Y2UgcGdfaW5pdF9wcml2cyB3YXMgaW50cm9kdWNlZCBpbiA5LjYuCkJhY2twYXRjaCB0byAxNCAo b2xkZXN0IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnJhbmNoKS4KCkF1dGhvcjogSHVzZXlpbiBEZW1p ciA8aHVzZXlpbi5kM3JAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzE5NDgzLTgwZGU0MmRjNGU2MmNmZDYlNDBwb3N0Z3Jlc3FsLm9yZwpCYWNrcGF0Y2gtdGhyb3Vn aDogMTQKLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgNTggKysrKysrLQogLi4uL3QvMDA4X3BnX2R1bXBfZGFuZ2xpbmdfaW5pdHByaXZzLnBsICAg ICAgIHwgMTYxICsrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0 aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX2R1 bXAvdC8wMDhfcGdfZHVtcF9kYW5nbGluZ19pbml0cHJpdnMucGwKCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBh MGY3ZjhlMjE2OC4uNzE5MDY5MWNhNzcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMjM3LDYgKzIzNyw0NCBA QCBzdGF0aWMgaW50CW5zZXF1ZW5jZXMgPSAwOwogCWZtdFF1YWxpZmllZElkKChvYmopLT5kb2Jq Lm5hbWVzcGFjZS0+ZG9iai5uYW1lLCBcCiAJCQkJICAgKG9iaiktPmRvYmoubmFtZSkKIAorLyoK KyAqIFNRTCBmcmFnbWVudCB0aGF0IHN0cmlwcyBkYW5nbGluZyByb2xlIE9JRHMgZnJvbSBhIHBn X2luaXRfcHJpdnMgYWNsaXRlbVtdCisgKiBjb2x1bW4uICBBbiBlbnRyeSBpcyBkYW5nbGluZyB3 aGVuIGl0cyBncmFudG9yIG9yIG5vbi1QVUJMSUMgZ3JhbnRlZSBubworICogbG9uZ2VyIGV4aXN0 cyBpbiBwZ19hdXRoaWQuICBCZWZvcmUgY29tbWl0IDUzNDI4NzQwMzkxIHBnX3NoZGVwZW5kIGRp ZCBub3QKKyAqIHJlY29yZCBkZXBlbmRlbmNpZXMgZm9yIHBnX2luaXRfcHJpdnMsIHNvIERST1Ag Uk9MRSBjb3VsZCBzaWxlbnRseSBsZWF2ZQorICogYmVoaW5kIHN1Y2ggZW50cmllczsgY3Jvc3Mt Y2x1c3RlciByZXN0b3JlcyBjYW4gcHJvZHVjZSB0aGUgc2FtZSBzaXR1YXRpb24KKyAqIG9uIG1v ZGVybiByZWxlYXNlcy4gIFBhc3NpbmcgZGFuZ2xpbmcgZW50cmllcyB0aHJvdWdoIGNhdXNlcyBw Z19kdW1wIHRvCisgKiBlbWl0ICJTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIDxvaWQ+IiBvciAi R1JBTlQgLi4uIFRPIDxvaWQ+IiB3aXRoIGEKKyAqIG51bWVyaWMgT0lEIGFzIHJvbGUgbmFtZSwg d2hpY2ggZmFpbHMgb24gcmVzdG9yZS4gIFdlIHNpbGVudGx5IGRyb3AgYW55CisgKiBlbnRyeSB3 aG9zZSBncmFudG9yIG9yIGdyYW50ZWUgaXMgbWlzc2luZzsgaWYgYWxsIGVudHJpZXMgYXJlIHJl bW92ZWQgdGhlCisgKiByZXN1bHQgaXMgTlVMTC4KKyAqCisgKiBUaGUgYXJndW1lbnQgbXVzdCBi ZSBhIGNvbXBpbGUtdGltZSBzdHJpbmcgbGl0ZXJhbCBuYW1pbmcgdGhlIGFjbGl0ZW1bXQorICog Y29sdW1uIChhbHdheXMgInBpcC5pbml0cHJpdnMiIGluIHByYWN0aWNlKS4gIEMgYWRqYWNlbnQg c3RyaW5nIGxpdGVyYWwKKyAqIGNvbmNhdGVuYXRpb24gc3BsaWNlcyB0aGUgZXhwYW5zaW9uIGlu dG8gdGhlIHN1cnJvdW5kaW5nIHF1ZXJ5IHN0cmluZy4KKyAqLworI2RlZmluZSBTQUZFX0lOSVRQ UklWUyhjb2wpIFwKKwkiTlVMTElGKFxuIiBcCisJIiAgICBBUlJBWShcbiIgXAorCSIgICAgICBT RUxFQ1QgZWx0IEZST00gcGdfY2F0YWxvZy51bm5lc3QoIiBjb2wgIikgQVMgZWx0XG4iIFwKKwki ICAgICAgLyoga2VlcCBvbmx5IHZhbGlkIGVudHJpZXMsIGkuZS4gdGhvc2Ugd2l0aG91dC4uLiAq L1xuIiBcCisJIiAgICAgIFdIRVJFIE5PVCBFWElTVFMgKFxuIiBcCisJIiAgICAgICAgU0VMRUNU IDEgRlJPTSBwZ19jYXRhbG9nLmFjbGV4cGxvZGUoQVJSQVlbZWx0XSkgYWNlXG4iIFwKKwkiICAg ICAgICAvKiAuLi5hIG5vbi1leGlzdGluZyBncmFudG9yLi4uICovXG4iIFwKKwkiICAgICAgICBX SEVSRSBOT1QgRVhJU1RTIChcbiIgXAorCSIgICAgICAgICAgU0VMRUNUIDEgRlJPTSBwZ19jYXRh bG9nLnBnX3JvbGVzIEFTIHIxXG4iIFwKKwkiICAgICAgICAgIFdIRVJFIHIxLm9pZCA9IGFjZS5n cmFudG9yXG4iIFwKKwkiICAgICAgICApXG4iIFwKKwkiICAgICAgICAvKiAuLi5vciBhIG5vbi1l eGlzdGluZyBncmFudGVlICgwIG1lYW5zIFBVQkxJQykgKi9cbiIgXAorCSIgICAgICAgIE9SIGFj ZS5ncmFudGVlIDw+IDBcbiIgXAorCSIgICAgICAgICAgQU5EIE5PVCBFWElTVFMgKFxuIiBcCisJ IiAgICAgICAgICAgIFNFTEVDVCAxIEZST00gcGdfY2F0YWxvZy5wZ19yb2xlcyBBUyByMlxuIiBc CisJIiAgICAgICAgICAgIFdIRVJFIHIyLm9pZCA9IGFjZS5ncmFudGVlXG4iIFwKKwkiICAgICAg ICAgIClcbiIgXAorCSIgICAgICApXG4iIFwKKwkiICAgICksIEFSUkFZW106OnBnX2NhdGFsb2cu YWNsaXRlbVtdXG4iIFwKKwkiICApIgorCiBzdGF0aWMgdm9pZCBoZWxwKGNvbnN0IGNoYXIgKnBy b2duYW1lKTsKIHN0YXRpYyB2b2lkIHNldHVwX2Nvbm5lY3Rpb24oQXJjaGl2ZSAqQUgsCiAJCQkJ CQkJIGNvbnN0IGNoYXIgKmR1bXBlbmNvZGluZywgY29uc3QgY2hhciAqZHVtcHNuYXBzaG90LApA QCAtNjkwNiw3ICs2OTQ0LDggQEAgZ2V0QWdncmVnYXRlcyhBcmNoaXZlICpmb3V0KQogCQkJCQkJ ICAicC5wcm9uYW1lc3BhY2UgIT0gIgogCQkJCQkJICAiKFNFTEVDVCBvaWQgRlJPTSBwZ19uYW1l c3BhY2UgIgogCQkJCQkJICAiV0hFUkUgbnNwbmFtZSA9ICdwZ19jYXRhbG9nJykgT1IgIgotCQkJ CQkJICAicC5wcm9hY2wgSVMgRElTVElOQ1QgRlJPTSBwaXAuaW5pdHByaXZzIiwKKwkJCQkJCSAg InAucHJvYWNsIElTIERJU1RJTkNUIEZST00gIgorCQkJCQkJICBTQUZFX0lOSVRQUklWUygicGlw LmluaXRwcml2cyIpLAogCQkJCQkJICBhZ2dfY2hlY2spOwogCQlpZiAoZG9wdC0+YmluYXJ5X3Vw Z3JhZGUpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTcwODgsNyArNzEyNyw4 IEBAIGdldEZ1bmNzKEFyY2hpdmUgKmZvdXQpCiAJCQkJCQkJCSAicmVmY2xhc3NpZCA9ICdwZ19l eHRlbnNpb24nOjpyZWdjbGFzcyBBTkQgIgogCQkJCQkJCQkgImRlcHR5cGUgPSAnZScpIik7CiAJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiXG4gIE9SIHAucHJvYWNsIElT IERJU1RJTkNUIEZST00gcGlwLmluaXRwcml2cyIpOworCQkJCQkJCSAiXG4gIE9SIHAucHJvYWNs IElTIERJU1RJTkNUIEZST00gIgorCQkJCQkJCSBTQUZFX0lOSVRQUklWUygicGlwLmluaXRwcml2 cyIpKTsKIAkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHF1ZXJ5LCAnKScpOwogCX0KIAllbHNlCkBA IC0xMDkwMCw4ICsxMDk0MCw5IEBAIGdldEFkZGl0aW9uYWxBQ0xzKEFyY2hpdmUgKmZvdXQpCiAJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTA2MDApCiAJewogCQlwcmludGZQUUV4cEJ1ZmZl cihxdWVyeSwKLQkJCQkJCSAgIlNFTEVDVCBvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgcHJp dnR5cGUsIGluaXRwcml2cyAiCi0JCQkJCQkgICJGUk9NIHBnX2luaXRfcHJpdnMiKTsKKwkJCQkJ CSAgIlNFTEVDVCBwaXAub2Jqb2lkLCBwaXAuY2xhc3NvaWQsIHBpcC5vYmpzdWJpZCwgcGlwLnBy aXZ0eXBlLFxuIgorCQkJCQkJICBTQUZFX0lOSVRQUklWUygicGlwLmluaXRwcml2cyIpICIgQVMg aW5pdHByaXZzXG4iCisJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfaW5pdF9wcml2cyBwaXAi KTsKIAogCQlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RV UExFU19PSyk7CiAKQEAgLTE3MDk3LDEwICsxNzEzOCwxMSBAQCBkdW1wVGFibGUoQXJjaGl2ZSAq Zm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJICogYW5kIHJpc2sgdG8gYXZvaWQg aGFyZC13aXJpbmcgdGhhdCBrbm93bGVkZ2UgaGVyZS4KIAkJCQkgKi8KIAkJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkJCSAiU0VMRUNUIGF0LmF0dG5hbWUsICIKLQkJCQkJ CQkJCSAiYXQuYXR0YWNsLCAiCi0JCQkJCQkJCQkgIid7fScgQVMgYWNsZGVmYXVsdCwgIgotCQkJ CQkJCQkJICJwaXAucHJpdnR5cGUsIHBpcC5pbml0cHJpdnMgIgorCQkJCQkJCQkJICJTRUxFQ1Qg YXQuYXR0bmFtZSxcbiIKKwkJCQkJCQkJCSAiYXQuYXR0YWNsLFxuIgorCQkJCQkJCQkJICIne30n IEFTIGFjbGRlZmF1bHQsXG4iCisJCQkJCQkJCQkgInBpcC5wcml2dHlwZSxcbiIKKwkJCQkJCQkJ CSBTQUZFX0lOSVRQUklWUygicGlwLmluaXRwcml2cyIpICIgQVMgaW5pdHByaXZzXG4iCiAJCQkJ CQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgYXQgIgogCQkJCQkJCQkJICJMRUZU IEpPSU4gcGdfY2F0YWxvZy5wZ19pbml0X3ByaXZzIHBpcCBPTiAiCiAJCQkJCQkJCQkgIihhdC5h dHRyZWxpZCA9IHBpcC5vYmpvaWQgIgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDA4 X3BnX2R1bXBfZGFuZ2xpbmdfaW5pdHByaXZzLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDA4X3Bn X2R1bXBfZGFuZ2xpbmdfaW5pdHByaXZzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5hMGJhMzY1MDk4OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfZHVt cC90LzAwOF9wZ19kdW1wX2RhbmdsaW5nX2luaXRwcml2cy5wbApAQCAtMCwwICsxLDE2MSBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjQtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyMKKyMgVGVzdHMgdGhhdCBwZ19kdW1wIHNpbGVudGx5IHNraXBzIHBnX2luaXRfcHJp dnMgZW50cmllcyB0aGF0IHJlZmVyZW5jZQorIyByb2xlcyBubyBsb25nZXIgcHJlc2VudCBpbiBw Z19hdXRoaWQsIHJhdGhlciB0aGFuIGVtaXR0aW5nIGludmFsaWQgR1JBTlQKKyMgb3IgU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiBzdGF0ZW1lbnRzIHdpdGggbnVtZXJpYyBPSURzIGFzIHJvbGUg bmFtZXMuCisjCisjIEZvdXIgY2FzZXMgYXJlIHRlc3RlZDoKKyMgICAxLiBEYW5nbGluZyBncmFu dGVlICAtLSB0aGUgcm9sZSB0aGF0IHJlY2VpdmVkIHRoZSBwcml2aWxlZ2Ugd2FzIGRyb3BwZWQu CisjICAgMi4gRGFuZ2xpbmcgZ3JhbnRvciAgLS0gdGhlIHJvbGUgdGhhdCBncmFudGVkIHRoZSBw cml2aWxlZ2Ugd2FzIGRyb3BwZWQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzIGNh dXNlZCBicm9rZW4gU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBvdXRwdXQpLgorIyAgIDMuIENv bHVtbi1sZXZlbCBBQ0wgIC0tIHNhbWUgZGFuZ2xpbmctZ3JhbnRlZSBzY2VuYXJpbyBidXQgZm9y IGEgY29sdW1uCisjICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0cHJpdnMgZW50cnkgKG9i anN1YmlkICE9IDApLgorIyAgIDQuIFNwdXJpb3VzIFJFVk9LRSAgIC0tIGEgcGdfY2F0YWxvZyBm dW5jdGlvbiB3aG9zZSBvbmx5IGluaXRwcml2cyBlbnRyeSBpcworIyAgICAgICAgICAgICAgICAg ICAgICAgICAgYWxsLWRhbmdsaW5nOyB3aXRob3V0IGZpbHRlcmluZyB0aGUgV0hFUkUgY2xhdXNl IGluCisjICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGdW5jcygpIHRoZSBvYmplY3QgaXMg aW5jb3JyZWN0bHkgc2VsZWN0ZWQgZm9yIEFDTAorIyAgICAgICAgICAgICAgICAgICAgICAgICAg b3V0cHV0IGFuZCBkdW1wQUNMKCkgZW1pdHMgYSBzcHVyaW91cyBSRVZPS0UuCisKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7 CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7Cisk bm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3NfZGFuZ2xpbmcnKTsKKworIyBTZXQgdXAgYWxsIGZv dXIgZGFuZ2xpbmcgY2FzZXMgaW4gb25lIHNlc3Npb24uICBXZSBjYW5ub3QgdXNlIG5vcm1hbAor IyBEUk9QIFJPTEUgYmVjYXVzZSBwZ19zaGRlcGVuZCB3b3VsZCBibG9jayBpdCwgc28gd2UgZGVs ZXRlIHJvbGVzIGRpcmVjdGx5CisjIGZyb20gcGdfYXV0aGlkIHdpdGggYWxsb3dfc3lzdGVtX3Rh YmxlX21vZHMuCiskbm9kZS0+c2FmZV9wc3FsKAorCSdyZWdyZXNzX2RhbmdsaW5nJywKKwlxewor U0VUIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzID0gdHJ1ZTsKKworLS0gQ2FzZSAxOiBkYW5nbGlu ZyBncmFudGVlLgorLS0gZ2hvc3RfZ3JhbnRlZSByZWNlaXZlZCBFWEVDVVRFOyBhZnRlciBkZWxl dGlvbiBpdHMgT0lEIGJlY29tZXMgZGFuZ2xpbmcuCitDUkVBVEUgUk9MRSBnaG9zdF9ncmFudGVl OworCitDUkVBVEUgRlVOQ1RJT04gcHVibGljLnRlc3RfZnVuY19ncmFudGVlKCkgUkVUVVJOUyBp bnQgTEFOR1VBR0Ugc3FsIEFTICdTRUxFQ1QgMSc7CisKK0lOU0VSVCBJTlRPIHBnX2luaXRfcHJp dnMgKG9iam9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBwcml2dHlwZSwgaW5pdHByaXZzKQorU0VM RUNUIHAub2lkLAorICAgICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBX SEVSRSByZWxuYW1lID0gJ3BnX3Byb2MnKSwKKyAgICAgICAwLAorICAgICAgICdlJywKKyAgICAg ICBBUlJBWVsoJ2dob3N0X2dyYW50ZWU9WC8nIHx8IGN1cnJlbnRfdXNlcik6OmFjbGl0ZW1dCitG Uk9NICAgcGdfY2F0YWxvZy5wZ19wcm9jIHAKK1dIRVJFICBwLnByb25hbWUgPSAndGVzdF9mdW5j X2dyYW50ZWUnCitBTkQgICAgcC5wcm9uYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNl OworCistLSBDYXNlIDI6IGRhbmdsaW5nIGdyYW50b3IuCistLSBnaG9zdF9ncmFudG9yIGlzIHRo ZSBncmFudG9yOyBhZnRlciBkZWxldGlvbiBpdHMgT0lEIGFwcGVhcnMgaW4KKy0tIFNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gb3V0cHV0LCBjYXVzaW5nIHJlc3RvcmUgZmFpbHVyZXMuCitDUkVB VEUgUk9MRSBnaG9zdF9ncmFudG9yOworCitDUkVBVEUgRlVOQ1RJT04gcHVibGljLnRlc3RfZnVu Y19ncmFudG9yKCkgUkVUVVJOUyBpbnQgTEFOR1VBR0Ugc3FsIEFTICdTRUxFQ1QgMic7CisKK0lO U0VSVCBJTlRPIHBnX2luaXRfcHJpdnMgKG9iam9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBwcml2 dHlwZSwgaW5pdHByaXZzKQorU0VMRUNUIHAub2lkLAorICAgICAgIChTRUxFQ1Qgb2lkIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX3Byb2MnKSwKKyAgICAgICAw LAorICAgICAgICdlJywKKyAgICAgICBBUlJBWVsoJz1YLycgfHwgJ2dob3N0X2dyYW50b3InKTo6 YWNsaXRlbV0KK0ZST00gICBwZ19jYXRhbG9nLnBnX3Byb2MgcAorV0hFUkUgIHAucHJvbmFtZSA9 ICd0ZXN0X2Z1bmNfZ3JhbnRvcicKK0FORCAgICBwLnByb25hbWVzcGFjZSA9ICdwdWJsaWMnOjpy ZWduYW1lc3BhY2U7CisKKy0tIENhc2UgMzogY29sdW1uLWxldmVsIGRhbmdsaW5nIGdyYW50ZWUg KG9ianN1YmlkICE9IDApLgorLS0gZ2hvc3RfY29sX3JvbGUgcmVjZWl2ZWQgU0VMRUNUIG9uIGEg Y29sdW1uOyBhZnRlciBkZWxldGlvbiBpdHMgT0lECistLSB3b3VsZCBhcHBlYXIgaW4gYSBHUkFO VCAuLi4gT04gVEFCTEUgdCAoY29sKSBzdGF0ZW1lbnQuCitDUkVBVEUgUk9MRSBnaG9zdF9jb2xf cm9sZTsKKworQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0X3RibCAoY29sMSBpbnQpOworCitJTlNF UlQgSU5UTyBwZ19pbml0X3ByaXZzIChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgcHJpdnR5 cGUsIGluaXRwcml2cykKK1NFTEVDVCB0Lm9pZCwKKyAgICAgICAoU0VMRUNUIG9pZCBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ19jbGFzcycpLAorICAgICAgIDEs CisgICAgICAgJ2UnLAorICAgICAgIEFSUkFZWygnZ2hvc3RfY29sX3JvbGU9ci8nIHx8IGN1cnJl bnRfdXNlcik6OmFjbGl0ZW1dCitGUk9NICAgcGdfY2F0YWxvZy5wZ19jbGFzcyB0CitXSEVSRSAg dC5yZWxuYW1lID0gJ3Rlc3RfdGJsJworQU5EICAgIHQucmVsbmFtZXNwYWNlID0gJ3B1YmxpYyc6 OnJlZ25hbWVzcGFjZTsKKworLS0gQ2FzZSA0OiBzcHVyaW91cyBSRVZPS0UgY2F1c2VkIGJ5IGFs bC1kYW5nbGluZyBpbml0cHJpdnMgYW5kIE5VTEwgcHJvYWNsLgorLS0gZ2hvc3RfY2F0YWxvZ19y b2xlIGlzIHRoZSBvbmx5IGdyYW50ZWU7IGFmdGVyIGRlbGV0aW9uIHRoZSB1bmZpbHRlcmVkIFdI RVJFCistLSBjbGF1c2UgaW4gZ2V0RnVuY3MoKSB3b3VsZCBzZWxlY3QgaW50NCBmb3IgQUNMIG91 dHB1dCBhbmQgZHVtcEFDTCgpIHdvdWxkCistLSBlbWl0IGEgc3B1cmlvdXMgIlJFVk9LRSBFWEVD VVRFIEZST00gUFVCTElDIiB0aGF0IGJyZWFrcyByZXN0b3JlLgorQ1JFQVRFIFJPTEUgZ2hvc3Rf Y2F0YWxvZ19yb2xlOworCitJTlNFUlQgSU5UTyBwZ19pbml0X3ByaXZzIChvYmpvaWQsIGNsYXNz b2lkLCBvYmpzdWJpZCwgcHJpdnR5cGUsIGluaXRwcml2cykKK1NFTEVDVCBwLm9pZCwKKyAgICAg ICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdw Z19wcm9jJyksCisgICAgICAgMCwKKyAgICAgICAnaScsCisgICAgICAgQVJSQVlbKCdnaG9zdF9j YXRhbG9nX3JvbGU9WC8nIHx8IGN1cnJlbnRfdXNlcik6OmFjbGl0ZW1dCitGUk9NICAgcGdfY2F0 YWxvZy5wZ19wcm9jIHAKK1dIRVJFICBwLnByb25hbWUgPSAnaW50NCcKK0FORCAgICBwLnByb25h bWVzcGFjZSA9IChTRUxFQ1Qgb2lkIEZST00gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UKKyAgICAg ICAgICAgICAgICAgICAgICAgICBXSEVSRSBuc3BuYW1lID0gJ3BnX2NhdGFsb2cnKQorTElNSVQg IDE7CisKKy0tIFJlbW92ZSBhbGwgZ2hvc3Qgcm9sZXMsIGxlYXZpbmcgZGFuZ2xpbmcgT0lEcyBp biBwZ19pbml0X3ByaXZzLgorREVMRVRFIEZST00gcGdfY2F0YWxvZy5wZ19hdXRoaWQKK1dIRVJF IHJvbG5hbWUgSU4gKCdnaG9zdF9ncmFudGVlJywgJ2dob3N0X2dyYW50b3InLCAnZ2hvc3RfY29s X3JvbGUnLAorICAgICAgICAgICAgICAgICAgJ2dob3N0X2NhdGFsb2dfcm9sZScpOworfSk7CisK K215ICR0ZW1wZGlyICAgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKK215ICRk dW1wX2ZpbGUgPSAiJHRlbXBkaXIvZGFuZ2xpbmcuc3FsIjsKKworIyBwZ19kdW1wIG11c3Qgc3Vj Y2VlZCBldmVuIHRob3VnaCBwZ19pbml0X3ByaXZzIGhhcyBkYW5nbGluZyByb2xlIE9JRHMuCitj b21tYW5kX29rKAorCVsKKwkJJ3BnX2R1bXAnLAorCQknLS1wb3J0JyAgICAgICAgPT4gJG5vZGUt PnBvcnQsCisJCSctLXNjaGVtYS1vbmx5JywKKwkJJy1mJyAgICAgICAgICAgID0+ICRkdW1wX2Zp bGUsCisJCSdyZWdyZXNzX2RhbmdsaW5nJywKKwldLAorCSdwZ19kdW1wIHN1Y2NlZWRzIHdpdGgg ZGFuZ2xpbmcgcGdfaW5pdF9wcml2cyBlbnRyaWVzJyk7CisKK215ICRkdW1wID0gc2x1cnBfZmls ZSgkZHVtcF9maWxlKTsKKworIyBUaGUgdXNlci1kZWZpbmVkIG9iamVjdHMgbXVzdCBzdGlsbCBh cHBlYXIgaW4gdGhlIGR1bXAuCitsaWtlKCRkdW1wLCBxci9DUkVBVEUgRlVOQ1RJT04gcHVibGlj XC50ZXN0X2Z1bmNfZ3JhbnRlZS8sCisJJ2Z1bmN0aW9uIHdpdGggZGFuZ2xpbmcgZ3JhbnRlZSBp cyBwcmVzZW50IGluIGR1bXAnKTsKK2xpa2UoJGR1bXAsIHFyL0NSRUFURSBGVU5DVElPTiBwdWJs aWNcLnRlc3RfZnVuY19ncmFudG9yLywKKwknZnVuY3Rpb24gd2l0aCBkYW5nbGluZyBncmFudG9y IGlzIHByZXNlbnQgaW4gZHVtcCcpOworbGlrZSgkZHVtcCwgcXIvQ1JFQVRFIFRBQkxFIHB1Ymxp Y1wudGVzdF90YmwvLAorCSd0YWJsZSB3aXRoIGRhbmdsaW5nIGNvbHVtbiBpbml0cHJpdnMgaXMg cHJlc2VudCBpbiBkdW1wJyk7CisKKyMgTm8gc3RhdGVtZW50IHNob3VsZCByZWZlcmVuY2UgYSBi YXJlIG51bWVyaWMgT0lEIGFzIGEgcm9sZSBuYW1lLgordW5saWtlKCRkdW1wLCBxci9HUkFOVFxi LipcYlRPXHMrIlswLTldKyIvLAorCSdubyBHUkFOVCB3aXRoIG51bWVyaWMgT0lEIGFzIHJvbGUg bmFtZScpOwordW5saWtlKCRkdW1wLCBxci9TRVNTSU9OIEFVVEhPUklaQVRJT05ccysiWzAtOV0r Ii8sCisJJ25vIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gd2l0aCBudW1lcmljIE9JRCBhcyBy b2xlIG5hbWUnKTsKKworIyBObyBHUkFOVCBhdCBhbGwgZm9yIHRoZSBkYW5nbGluZy1ncmFudGVl IGZ1bmN0aW9uLgordW5saWtlKCRkdW1wLCBxci9HUkFOVFxiLipcYnRlc3RfZnVuY19ncmFudGVl LywKKwknbm8gR1JBTlQgZm9yIHRlc3RfZnVuY19ncmFudGVlIHdoZW4gYWxsIGluaXRwcml2cyBl bnRyaWVzIGFyZSBkYW5nbGluZycpOworCisjIE5vIEdSQU5UIGF0IGFsbCBmb3IgdGhlIGRhbmds aW5nLWdyYW50b3IgZnVuY3Rpb24uCit1bmxpa2UoJGR1bXAsIHFyL0dSQU5UXGIuKlxidGVzdF9m dW5jX2dyYW50b3IvLAorCSdubyBHUkFOVCBmb3IgdGVzdF9mdW5jX2dyYW50b3Igd2hlbiBhbGwg aW5pdHByaXZzIGVudHJpZXMgYXJlIGRhbmdsaW5nJyk7CisKKyMgTm8gY29sdW1uIEdSQU5UIGZv ciB0aGUgZGFuZ2xpbmcgY29sdW1uIGluaXRwcml2cy4KK3VubGlrZSgkZHVtcCwgcXIvR1JBTlRc Yi4qXGJ0ZXN0X3RibFxiLipcKGNvbDFcKS8sCisJJ25vIGNvbHVtbiBHUkFOVCBmb3IgdGVzdF90 Ymwgd2hlbiBjb2x1bW4gaW5pdHByaXZzIGVudHJpZXMgYXJlIGRhbmdsaW5nJyk7CisKKyMgTm8g c3B1cmlvdXMgUkVWT0tFIGZvciB0aGUgY2F0YWxvZyBmdW5jdGlvbiB3aG9zZSBvbmx5IGluaXRw cml2cyBlbnRyeSB3YXMKKyMgYWxsLWRhbmdsaW5nLiAgV2l0aG91dCB0aGUgV0hFUkUgY2xhdXNl IGZpbHRlciBhIGRlbHRhIGZyb20gYWNsZGVmYXVsdCB0bworIyBOVUxMIHdvdWxkIGhhdmUgY2F1 c2VkIGR1bXBBQ0woKSB0byBlbWl0ICJSRVZPS0UgRVhFQ1VURSBGUk9NIFBVQkxJQyIuCit1bmxp a2UoJGR1bXAsIHFyL1JFVk9LRVxiLipcYmludDRccypcKC8sCisJJ25vIHNwdXJpb3VzIFJFVk9L RSBmb3IgaW50NCB3aGVuIGFsbCBpbml0cHJpdnMgZW50cmllcyBhcmUgZGFuZ2xpbmcnKTsKKwor ZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000007c57540654d1248f--