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.94.2) (envelope-from ) id 1tcezE-001kgW-HF for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Jan 2025 06:22:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tcezD-00GlTR-Az for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Jan 2025 06:22:11 +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.94.2) (envelope-from ) id 1tcezC-00GlTJ-Qc for pgsql-hackers@lists.postgresql.org; Tue, 28 Jan 2025 06:22:10 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tcez9-001uh6-0j for pgsql-hackers@lists.postgresql.org; Tue, 28 Jan 2025 06:22:10 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-ab633d9582aso947941166b.1 for ; Mon, 27 Jan 2025 22:22:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738045325; x=1738650125; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Nmdia59zfW8XWukdW4yK1J9KXimvlBv9gs/0hh5c/eY=; b=gjqjYkUkxZKTqovN/NTWvdwlqtpBCUrR6dcRT4K+AT1Q/S3aZl9ltu7BqmumJz2OLr wHi+5caUsQlHwvqNLBMFKPL1qEWNfRz5DP/iQBOFs41H+91nbLVG2i+k0W2cHALfhrlX 0BDYkbra5OC5RcBr9sEZ+7mEF5cFc0da4qm9yiqEMwDb1trgU3W61Yq4CPdikNgP4GdQ rML++H7JdKfnKTK6t5RZNPqqn7K+dXdIT39hqSc9nfcZCtkqx8siZ+CKrUFEBuTL/5oc WNzHV/MywnnZs3OjCalH/Rrxm0C2PDZ37NbTL+pu7cP9haXbEG2xJ/FE9NXhFu9wWzS9 ex3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738045325; x=1738650125; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Nmdia59zfW8XWukdW4yK1J9KXimvlBv9gs/0hh5c/eY=; b=HfKwS6L1piD4tz/I8F6Pdu3L0Zs+OJn+RenIYOcLeAcbCz2gxlAqdk8wN2OcxTZq3a 7e1ugiqnmMajaDp8+ee/DJv0glJ3O/02s8B96CEN4weVFNq/u8nOV615ekvo8ClDQyRX OWLe15SGG4TcmjxawcT28JymkYt7WzZMFKjqxMUEu86s28oykggN3dYnMeyDFsL6rBg8 ZoMQ2/sS9I1bx0O95aqiINAfF+w6EmJ9oqSE1yDr5XS76aHZYP9hrQ/u9YwltiA9RLCJ 4wc4SrHQPYcn/hXRn2V8QXnuUbAd417/cmcAIBUbcfzvBzmx15VHA6puXB6w8IhQXHkn QlgA== X-Forwarded-Encrypted: i=1; AJvYcCWOKQ8wWubJQStpA3CRp+pLPu+70vLDIPm5Og3MAAo/83a9U1nDnkMUaqeefAN0z8AbMpLaENb5Pj/KdhvO@lists.postgresql.org X-Gm-Message-State: AOJu0YxaihH02yHbci9PXjvcvdiIy7ltCi2VUq6sXX1eOHlTmoaDoHvZ K/1U9uAV1LSUoYEbN2alXJpVAHIPeINL+88OmokDKppOHDQ3ll/VIp7A+9LULfuoFI31wHYRaZs kd1mlvKYwlV2cvhtKop0bSmWre08= X-Gm-Gg: ASbGncsO7p7i0ruTrgVNP3a1l85JZvW/8Jg4cP6VXU09NSEDC5AOlrd47SAgunryxJX d1bxMn7jUtbKLIRArhBw7FYmeM02ftHhoZSBUZKkPNnqFAv1eosTWeZXmsnBq+X2MVFOr+6uy44 V7xbPI2XTGbQ== X-Google-Smtp-Source: AGHT+IGEXsWOVe8452706lebaU+r33I7DwRCoeNhSkc8wDBAojdp+fZVpruPDAarG1nCVr9mZ+cqzX2+0r04Vr3HkYM= X-Received: by 2002:a17:907:1c89:b0:aa6:ac9b:681f with SMTP id a640c23a62f3a-ab38b44d45amr4603406166b.43.1738045324716; Mon, 27 Jan 2025 22:22:04 -0800 (PST) MIME-Version: 1.0 References: <202501110844.5ztsym4vbflm@alvherre.pgsql> In-Reply-To: From: Srinath Reddy Date: Tue, 28 Jan 2025 11:51:52 +0530 X-Gm-Features: AWEUYZnKAJMov6kYpLn4uu38KUECKr9Dp4zfh8-T6R7RWdASjZJFLDLxqrGUrCM Message-ID: Subject: Re: Non-text mode for pg_dumpall To: Mahendra Singh Thalor , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002f24b8062cbe364e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002f24b8062cbe364e Content-Type: multipart/alternative; boundary="0000000000002f24b7062cbe364c" --0000000000002f24b7062cbe364c Content-Type: text/plain; charset="UTF-8" make check-world fails,i think we don't need $port and $filename instead we can use something like 'xxx'.so fixed it in the below patch. Regards, Srinath Reddy Sadipiralla, EDB: http://www.enterprisedb.com --0000000000002f24b7062cbe364c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
make check-world fails,i think we don't need $port and= $filename instead we can use something like 'xxx'.so fixed it in t= he below patch.

Regards,
Srinath Reddy Sadipiralla,
EDB:=C2=A0= http://www.enterprisedb.com

--0000000000002f24b7062cbe364c-- --0000000000002f24b8062cbe364e Content-Type: application/octet-stream; name="v1-fix-make-check-world.patch" Content-Disposition: attachment; filename="v1-fix-make-check-world.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6g3a3wx0 RnJvbSA3NjY2YzZkMjMyMWI2OTZjNWI0YTdkZDRjNGM4MGY3YjEyYjIyODEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTcmluYXRoIFJlZGR5IFNhZGlwaXJhbGxhIDxzcmluYXRoMjEz M0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjggSmFuIDIwMjUgMTE6NDE6MTQgKzA1MzAKU3ViamVj dDogW1BBVENIIDEvMV0gCVJlZmFjdG9yIGNvbW1hbmRfZmFpbHNfbGlrZSBpbiBwZ19kdW1wL3Qv MDAxX2Jhc2ljLnBsCiB0byBwYXNzIG1ha2UgY2hlY2std29ybGQuCgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvcGdfZHVtcGFsbC5zZ21sICAgICAgICAgfCAgNzggKystCiBkb2Mvc3JjL3NnbWwvcmVm L3BnX3Jlc3RvcmUuc2dtbCAgICAgICAgIHwgIDI5ICsKIHNyYy9iaW4vcGdfZHVtcC9NYWtlZmls ZSAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iaW4vcGdfZHVtcC9jb21tb25fZHVtcGFs bF9yZXN0b3JlLmMgfCAzMTQgKysrKysrKysrKwogc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbl9kdW1w YWxsX3Jlc3RvcmUuaCB8ICAyNiArCiBzcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyAgICAgfCAgMTUg Ky0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuYyAgICAgICAgfCAgIDMgKy0KIHNyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iaW4vcGdfZHVt cC9wZ19kdW1wYWxsLmMgICAgICAgICAgICAgfCA1MTYgKysrKysrKy0tLS0tLS0tLS0KIHNyYy9i aW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMgICAgICAgICAgICAgfCA3MDEgKysrKysrKysrKysrKysr KysrKysrKy0KIHNyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbCAgICAgICAgICAgfCAgMTEg Kwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICB8ICAgMiArCiAxNSBm aWxlcyBjaGFuZ2VkLCAxMzczIGluc2VydGlvbnMoKyksIDM0MCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX2R1bXAvY29tbW9uX2R1bXBhbGxfcmVzdG9yZS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbl9kdW1wYWxsX3Jlc3RvcmUu aAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBzcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFz aWMucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvcGdfZHVtcGFsbC5zZ21sCmluZGV4IDAxNGYyNzkyNTguLjhjYTQ5YTY1 OTcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcGFsbC5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvcGdfZHVtcGFsbC5zZ21sCkBAIC0xMjEsNyArMTIxLDgzIEBAIFBvc3Rn cmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgIDxwYXJhPgogICAgICAgICBTZW5kIG91dHB1dCB0 byB0aGUgc3BlY2lmaWVkIGZpbGUuICBJZiB0aGlzIGlzIG9taXR0ZWQsIHRoZQogICAgICAgICBz dGFuZGFyZCBvdXRwdXQgaXMgdXNlZC4KLSAgICAgICA8L3BhcmE+CisgICAgICAgIE5vdGU6IFRo aXMgb3B0aW9uIGNhbiBiZSBvbWl0dGVkIG9ubHkgd2hlbiA8b3B0aW9uPi0tZm9ybWF0PC9vcHRp b24+IGlzIHBsYWluCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92 YXJsaXN0ZW50cnk+CisKKzx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi1GIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mb3JtYXQ8L3JlcGxhY2VhYmxlPjwvb3B0aW9u PjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1mb3JtYXQ9PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmZvcm1hdDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZ5IGZvcm1hdCBvZiBkdW1w IGZpbGVzLiAgSWYgd2Ugd2FudCB0byBkdW1wIGFsbCB0aGUgZGF0YWJhc2VzLAorICAgICAgICB0 aGVuIHBhc3MgdGhpcyBhcyBub24tcGxhaW4gc28gdGhhdCBkdW1wIG9mIGFsbCBkYXRhYmFzZXMg Y2FuIGJlIHRha2VuCisgICAgICAgIGluIHNlcGFyYXRlIHN1YmRpcmVjdG9yeSBpbiBhcmNoaXZl IGZvcm1hdC4KKyAgICAgICAgYnkgZGVmYXVsdCwgdGhpcyBpcyBwbGFpbiBmb3JtYXQuCisKKyAg ICAgICAgSWYgbm9uLXBsYWluIG1vZGUgaXMgcGFzc2VkLCB0aGVuIGdsb2JhbC5kYXQgKGdsb2Jh bCBzcWwgY29tbWFuZHMpIGFuZAorICAgICAgICBtYXAuZGF0KGRib2lkIGFuZCBkYm5hbWVzIGxp c3Qgb2YgYWxsIHRoZSBkYXRhYmFzZXMpIGZpbGVzIHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgICAg QXBhcnQgZnJvbSB0aGVzZSBmaWxlcywgb25lIHN1YmRpcmVjdG9yeSB3aXRoIGRhdGFiYXNlcyBu YW1lIHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgICAgVW5kZXIgdGhpcyBkYXRhYmFzZXMgc3ViZGly ZWN0b3J5LCB0aGVyZSB3aWxsIGJlIGZpbGVzIHdpdGggZGJvaWQgbmFtZSBmb3IgZWFjaAorICAg ICAgICBkYXRhYmFzZSBhbmQgaWYgPG9wdGlvbj4tLWZvcm1hdDwvb3B0aW9uPiBpcyBkaXJlY3Rv cnksIHRoZW4gdG9jLmRhdCBhbmQgb3RoZXIKKyAgICAgICAgZHVtcCBmaWxlcyB3aWxsIGJlIHVu ZGVyIGRib2lkIHN1YmRpcmVjdG9yeS4KKworICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAg IDx2YXJsaXN0ZW50cnk+CisgICAgICAgICA8dGVybT48bGl0ZXJhbD5kPC9saXRlcmFsPjwvdGVy bT4KKyAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmRpcmVjdG9yeTwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgIE91dHB1dCBh IGRpcmVjdG9yeS1mb3JtYXQgYXJjaGl2ZSBzdWl0YWJsZSBmb3IgaW5wdXQgaW50byBwZ19yZXN0 b3JlLiBVbmRlciBkYm9pZAorICAgICAgICAgICBzdWJkaXJlY3RvcnksIHRoaXMgd2lsbCBjcmVh dGUgYSBkaXJlY3Rvcnkgd2l0aCBvbmUgZmlsZSBmb3IgZWFjaCB0YWJsZSBhbmQgbGFyZ2UKKyAg ICAgICAgICAgb2JqZWN0IGJlaW5nIGR1bXBlZCwgcGx1cyBhIHNvLWNhbGxlZCBUYWJsZSBvZiBD b250ZW50cyBmaWxlIGRlc2NyaWJpbmcgdGhlIGR1bXBlZAorICAgICAgICAgICBvYmplY3RzIGlu IGEgbWFjaGluZS1yZWFkYWJsZSBmb3JtYXQgdGhhdCBwZ19yZXN0b3JlIGNhbiByZWFkLiBBIGRp cmVjdG9yeSBmb3JtYXQKKyAgICAgICAgICAgYXJjaGl2ZSBjYW4gYmUgbWFuaXB1bGF0ZWQgd2l0 aCBzdGFuZGFyZCBVbml4IHRvb2xzOyBmb3IgZXhhbXBsZSwgZmlsZXMgaW4gYW4KKyAgICAgICAg ICAgdW5jb21wcmVzc2VkIGFyY2hpdmUgY2FuIGJlIGNvbXByZXNzZWQgd2l0aCB0aGUgZ3ppcCwg bHo0LCBvciB6c3RkIHRvb2xzLiBUaGlzCisgICAgICAgICAgIGZvcm1hdCBpcyBjb21wcmVzc2Vk IGJ5IGRlZmF1bHQgdXNpbmcgZ3ppcCBhbmQgYWxzbyBzdXBwb3J0cyBwYXJhbGxlbCBkdW1wcy4K KyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgPHRlcm0+PGxpdGVy YWw+cDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICA8dGVybT48bGl0ZXJhbD5wbGFpbjwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgIE91dHB1dCBhIHBsYWluLXRleHQgU1FMIHNjcmlwdCBmaWxlICh0aGUgZGVmYXVsdCku CisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgIDx0ZXJtPjxsaXRl cmFsPmM8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgPHRlcm0+PGxpdGVyYWw+Y3VzdG9tPC9s aXRlcmFsPjwvdGVybT4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICAgT3V0cHV0IGEgY3VzdG9tLWZvcm1hdCBhcmNoaXZlIHN1aXRhYmxlIGZvciBpbnB1 dCBpbnRvIHBnX3Jlc3RvcmUuIFRvZ2V0aGVyIHdpdGggdGhlCisgICAgICAgICAgIGRpcmVjdG9y eSBvdXRwdXQgZm9ybWF0LCB0aGlzIGlzIHRoZSBtb3N0IGZsZXhpYmxlIG91dHB1dCBmb3JtYXQg aW4gdGhhdCBpdCBhbGxvd3MgbWFudWFsCisgICAgICAgICAgIHNlbGVjdGlvbiBhbmQgcmVvcmRl cmluZyBvZiBhcmNoaXZlZCBpdGVtcyBkdXJpbmcgcmVzdG9yZS4gVGhpcyBmb3JtYXQgaXMgYWxz bworICAgICAgICAgICBjb21wcmVzc2VkIGJ5IGRlZmF1bHQuCisgICAgICAgICAgPC9wYXJhPgor ICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAg IDx2YXJsaXN0ZW50cnk+CisgICAgICAgICA8dGVybT48bGl0ZXJhbD50PC9saXRlcmFsPjwvdGVy bT4KKyAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnRhcjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgIE91dHB1dCBhIHRhci1m b3JtYXQgYXJjaGl2ZSBzdWl0YWJsZSBmb3IgaW5wdXQgaW50byBwZ19yZXN0b3JlLiBUaGUgdGFy IGZvcm1hdCBpcworICAgICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIGRpcmVjdG9yeSBmb3Jt YXQ6IGV4dHJhY3RpbmcgYSB0YXItZm9ybWF0IGFyY2hpdmUgcHJvZHVjZXMgYSB2YWxpZAorICAg ICAgICAgICBkaXJlY3RvcnktZm9ybWF0IGFyY2hpdmUuIEhvd2V2ZXIsIHRoZSB0YXIgZm9ybWF0 IGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb24uIEFsc28sCisgICAgICAgICAgIHdoZW4gdXNp bmcgdGFyIGZvcm1hdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgdGFibGUgZGF0YSBpdGVtcyBjYW5u b3QgYmUgY2hhbmdlZCBkdXJpbmcgcmVzdG9yZS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICA8L3Zhcmlh YmxlbGlzdD4KKyAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJs aXN0ZW50cnk+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwKaW5kZXggYjhiMjdlMTcxOS4uYmEy OTEzYjMzNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwKQEAgLTE2Niw2ICsxNjYsMjUgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tLWV4 Y2x1ZGUtZGF0YWJhc2U9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3Jl cGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgRG8gbm90IHJlc3RvcmUgZGF0YWJhc2VzIHdob3NlIG5hbWUgbWF0Y2hlcwor ICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFi bGU+LgorICAgICAgICBNdWx0aXBsZSBwYXR0ZXJucyBjYW4gYmUgZXhjbHVkZWQgYnkgd3JpdGlu ZyBtdWx0aXBsZQorICAgICAgICA8b3B0aW9uPi0tZXhjbHVkZS1kYXRhYmFzZTwvb3B0aW9uPiBz d2l0Y2hlcy4gIFRoZQorICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0 dGVybjwvcmVwbGFjZWFibGU+IHBhcmFtZXRlciBpcworICAgICAgICBpbnRlcnByZXRlZCBhcyBh IHBhdHRlcm4gYWNjb3JkaW5nIHRvIHRoZSBzYW1lIHJ1bGVzIHVzZWQgYnkKKyAgICAgICAgPGFw cGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPidzIDxsaXRlcmFsPlxkPC9saXRlcmFsPgorICAg ICAgICBjb21tYW5kcyAoc2VlIDx4cmVmIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIi8+KSwK KyAgICAgICAgc28gbXVsdGlwbGUgZGF0YWJhc2VzIGNhbiBhbHNvIGJlIGV4Y2x1ZGVkIGJ5IHdy aXRpbmcgd2lsZGNhcmQKKyAgICAgICAgY2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybi4gIFdoZW4g dXNpbmcgd2lsZGNhcmRzLCBiZSBjYXJlZnVsIHRvCisgICAgICAgIHF1b3RlIHRoZSBwYXR0ZXJu IGlmIG5lZWRlZCB0byBwcmV2ZW50IHNoZWxsIHdpbGRjYXJkIGV4cGFuc2lvbi4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8 dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tZTwvb3B0aW9uPjwvdGVybT4KICAg ICAgIDx0ZXJtPjxvcHRpb24+LS1leGl0LW9uLWVycm9yPC9vcHRpb24+PC90ZXJtPgpAQCAtMzE1 LDYgKzMzNCwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVy bT48b3B0aW9uPi1nPC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4tLWdsb2Jh bHMtb25seTwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgUmVzdG9yZSBvbmx5IGdsb2JhbCBvYmplY3RzIChyb2xlcyBhbmQgdGFibGVzcGFj ZXMpLCBubyBkYXRhYmFzZXMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAg ICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxv cHRpb24+LUkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4PC9yZXBsYWNlYWJs ZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8dGVybT48b3B0aW9uPi0taW5kZXg9PHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+ CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUgYi9zcmMvYmluL3BnX2R1bXAv TWFrZWZpbGUKaW5kZXggMjMzYWQxNWNhNy4uYTRlNTU3ZDYyYyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQpAQCAtNDcs MTEgKzQ3LDExIEBAIGFsbDogcGdfZHVtcCBwZ19yZXN0b3JlIHBnX2R1bXBhbGwKIHBnX2R1bXA6 IHBnX2R1bXAubyBjb21tb24ubyBwZ19kdW1wX3NvcnQubyAkKE9CSlMpIHwgc3VibWFrZS1saWJw cSBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscwogCSQoQ0MpICQoQ0ZMQUdT KSBwZ19kdW1wLm8gY29tbW9uLm8gcGdfZHVtcF9zb3J0Lm8gJChPQkpTKSAkKExERkxBR1MpICQo TERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAotcGdfcmVzdG9yZTogcGdfcmVzdG9yZS5v ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdm ZXV0aWxzCi0JJChDQykgJChDRkxBR1MpIHBnX3Jlc3RvcmUubyAkKE9CSlMpICQoTERGTEFHUykg JChMREZMQUdTX0VYKSAkKExJQlMpIC1vICRAJChYKQorcGdfcmVzdG9yZTogcGdfcmVzdG9yZS5v IGNvbW1vbl9kdW1wYWxsX3Jlc3RvcmUubyAkKE9CSlMpIHwgc3VibWFrZS1saWJwcSBzdWJtYWtl LWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscworCSQoQ0MpICQoQ0ZMQUdTKSBwZ19yZXN0 b3JlLm8gY29tbW9uX2R1bXBhbGxfcmVzdG9yZS5vICQoT0JKUykgJChMREZMQUdTKSAkKExERkxB R1NfRVgpICQoTElCUykgLW8gJEAkKFgpCiAKLXBnX2R1bXBhbGw6IHBnX2R1bXBhbGwubyBkdW1w dXRpbHMubyBmaWx0ZXIubyAkKFdJTjMyUkVTKSB8IHN1Ym1ha2UtbGlicHEgc3VibWFrZS1saWJw Z3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKLQkkKENDKSAkKENGTEFHUykgcGdfZHVtcGFsbC5v IGR1bXB1dGlscy5vIGZpbHRlci5vICQoV0lOMzJSRVMpICQoTERGTEFHUykgJChMREZMQUdTX0VY KSAkKExJQlMpIC1vICRAJChYKQorcGdfZHVtcGFsbDogcGdfZHVtcGFsbC5vIGR1bXB1dGlscy5v IGZpbHRlci5vIGNvbW1vbl9kdW1wYWxsX3Jlc3RvcmUubyAkKFdJTjMyUkVTKSB8IHN1Ym1ha2Ut bGlicHEgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKKwkkKENDKSAkKENG TEFHUykgcGdfZHVtcGFsbC5vIGR1bXB1dGlscy5vIGZpbHRlci5vIGNvbW1vbl9kdW1wYWxsX3Jl c3RvcmUubyAkKFdJTjMyUkVTKSAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAk QCQoWCkKIAogaW5zdGFsbDogYWxsIGluc3RhbGxkaXJzCiAJJChJTlNUQUxMX1BST0dSQU0pIHBn X2R1bXAkKFgpICckKERFU1RESVIpJChiaW5kaXIpJy9wZ19kdW1wJChYKQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL2NvbW1vbl9kdW1wYWxsX3Jlc3RvcmUuYyBiL3NyYy9iaW4vcGdfZHVt cC9jb21tb25fZHVtcGFsbF9yZXN0b3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uYWNlNTA3NzA4NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9j b21tb25fZHVtcGFsbF9yZXN0b3JlLmMKQEAgLTAsMCArMSwzMTQgQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIGNvbW1vbl9kdW1wYWxsX3Jlc3RvcmUuYworICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJz aXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiB0aGlzIGlzIGEgY29tbW9uIGZpbGUgZm9yIHBnX2R1 bXBhbGwgYW5kIHBnX3Jlc3RvcmUuCisgKiBzcmMvYmluL3BnX2R1bXAvY29tbW9uX2R1bXBhbGxf cmVzdG9yZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3Rn cmVzX2ZlLmgiCisKKyNpbmNsdWRlICJjb21tb24vY29ubmVjdC5oIgorI2luY2x1ZGUgImNvbW1v bi9sb2dnaW5nLmgiCisjaW5jbHVkZSAiY29tbW9uL3N0cmluZy5oIgorI2luY2x1ZGUgImNvbW1v bl9kdW1wYWxsX3Jlc3RvcmUuaCIKKyNpbmNsdWRlICJkdW1wdXRpbHMuaCIKKyNpbmNsdWRlICJm ZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKKworc3RhdGljIGNoYXIgKmNvbnN0cnVjdENvbm5TdHIo Y29uc3QgY2hhciAqKmtleXdvcmRzLCBjb25zdCBjaGFyICoqdmFsdWVzKTsKKyNkZWZpbmUgZXhp dF9uaWNlbHkoY29kZSkgZXhpdChjb2RlKQorCisvKgorICogTWFrZSBhIGRhdGFiYXNlIGNvbm5l Y3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gIEFuCisgKiBpbnRlcmFjdGl2ZSBwYXNz d29yZCBwcm9tcHQgaXMgYXV0b21hdGljYWxseSBpc3N1ZWQgaWYgcmVxdWlyZWQuCisgKgorICog SWYgZmFpbF9vbl9lcnJvciBpcyBmYWxzZSwgd2UgcmV0dXJuIE5VTEwgd2l0aG91dCBwcmludGlu ZyBhbnkgbWVzc2FnZQorICogb24gZmFpbHVyZSwgYnV0IHByZXNlcnZlIGFueSBwcm9tcHRlZCBw YXNzd29yZCBmb3IgdGhlIG5leHQgdHJ5LgorICoKKyAqIE9uIHN1Y2Nlc3MsIHRoZSBnbG9iYWwg dmFyaWFibGUgJ2Nvbm5zdHInIGlzIHNldCB0byBhIGNvbm5lY3Rpb24gc3RyaW5nCisgKiBjb250 YWluaW5nIHRoZSBvcHRpb25zIHVzZWQuCisgKi8KK1BHY29ubiAqCitjb25uZWN0RGF0YWJhc2Uo Y29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjb25uZWN0aW9uX3N0cmluZywKKwkJCQlj b25zdCBjaGFyICpwZ2hvc3QsIGNvbnN0IGNoYXIgKnBncG9ydCwgY29uc3QgY2hhciAqcGd1c2Vy LAorCQkJCXRyaXZhbHVlIHByb21wdF9wYXNzd29yZCwgYm9vbCBmYWlsX29uX2Vycm9yLCBjb25z dCBjaGFyICpwcm9nbmFtZSwKKwkJCQljb25zdCBjaGFyICoqY29ubnN0ciwgaW50ICpzZXJ2ZXJf dmVyc2lvbikKK3sKKwlQR2Nvbm4JICAgKmNvbm47CisJYm9vbAkJbmV3X3Bhc3M7CisJY29uc3Qg Y2hhciAqcmVtb3RldmVyc2lvbl9zdHI7CisJaW50CQkJbXlfdmVyc2lvbjsKKwljb25zdCBjaGFy ICoqa2V5d29yZHMgPSBOVUxMOworCWNvbnN0IGNoYXIgKip2YWx1ZXMgPSBOVUxMOworCVBRY29u bmluZm9PcHRpb24gKmNvbm5fb3B0cyA9IE5VTEw7CisJc3RhdGljIGNoYXIgKnBhc3N3b3JkID0g TlVMTDsKKwlpbnQJCQlzZXJ2ZXJfdmVyc2lvbl90ZW1wOworCisJaWYgKHByb21wdF9wYXNzd29y ZCA9PSBUUklfWUVTICYmICFwYXNzd29yZCkKKwkJcGFzc3dvcmQgPSBzaW1wbGVfcHJvbXB0KCJQ YXNzd29yZDogIiwgZmFsc2UpOworCisJLyoKKwkgKiBTdGFydCB0aGUgY29ubmVjdGlvbi4gIExv b3AgdW50aWwgd2UgaGF2ZSBhIHBhc3N3b3JkIGlmIHJlcXVlc3RlZCBieQorCSAqIGJhY2tlbmQu CisJICovCisJZG8KKwl7CisJCWludAkJCWFyZ2NvdW50ID0gNjsKKwkJUFFjb25uaW5mb09wdGlv biAqY29ubl9vcHQ7CisJCWNoYXIJICAgKmVycl9tc2cgPSBOVUxMOworCQlpbnQJCQlpID0gMDsK KworCQlmcmVlKGtleXdvcmRzKTsKKwkJZnJlZSh2YWx1ZXMpOworCQlQUWNvbm5pbmZvRnJlZShj b25uX29wdHMpOworCisJCS8qCisJCSAqIE1lcmdlIHRoZSBjb25uZWN0aW9uIGluZm8gaW5wdXRz IGdpdmVuIGluIGZvcm0gb2YgY29ubmVjdGlvbiBzdHJpbmcKKwkJICogYW5kIG90aGVyIG9wdGlv bnMuICBFeHBsaWNpdGx5IGRpc2NhcmQgYW55IGRibmFtZSB2YWx1ZSBpbiB0aGUKKwkJICogY29u bmVjdGlvbiBzdHJpbmc7IG90aGVyd2lzZSwgUFFjb25uZWN0ZGJQYXJhbXMoKSB3b3VsZCBpbnRl cnByZXQKKwkJICogdGhhdCB2YWx1ZSBhcyBiZWluZyBpdHNlbGYgYSBjb25uZWN0aW9uIHN0cmlu Zy4KKwkJICovCisJCWlmIChjb25uZWN0aW9uX3N0cmluZykKKwkJeworCQkJY29ubl9vcHRzID0g UFFjb25uaW5mb1BhcnNlKGNvbm5lY3Rpb25fc3RyaW5nLCAmZXJyX21zZyk7CisJCQlpZiAoY29u bl9vcHRzID09IE5VTEwpCisJCQkJcGdfZmF0YWwoIiVzIiwgZXJyX21zZyk7CisKKwkJCWZvciAo Y29ubl9vcHQgPSBjb25uX29wdHM7IGNvbm5fb3B0LT5rZXl3b3JkICE9IE5VTEw7IGNvbm5fb3B0 KyspCisJCQl7CisJCQkJaWYgKGNvbm5fb3B0LT52YWwgIT0gTlVMTCAmJiBjb25uX29wdC0+dmFs WzBdICE9ICdcMCcgJiYKKwkJCQkJc3RyY21wKGNvbm5fb3B0LT5rZXl3b3JkLCAiZGJuYW1lIikg IT0gMCkKKwkJCQkJYXJnY291bnQrKzsKKwkJCX0KKworCQkJa2V5d29yZHMgPSBwZ19tYWxsb2Mw KChhcmdjb3VudCArIDEpICogc2l6ZW9mKCprZXl3b3JkcykpOworCQkJdmFsdWVzID0gcGdfbWFs bG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVvZigqdmFsdWVzKSk7CisKKwkJCWZvciAoY29ubl9v cHQgPSBjb25uX29wdHM7IGNvbm5fb3B0LT5rZXl3b3JkICE9IE5VTEw7IGNvbm5fb3B0KyspCisJ CQl7CisJCQkJaWYgKGNvbm5fb3B0LT52YWwgIT0gTlVMTCAmJiBjb25uX29wdC0+dmFsWzBdICE9 ICdcMCcgJiYKKwkJCQkJc3RyY21wKGNvbm5fb3B0LT5rZXl3b3JkLCAiZGJuYW1lIikgIT0gMCkK KwkJCQl7CisJCQkJCWtleXdvcmRzW2ldID0gY29ubl9vcHQtPmtleXdvcmQ7CisJCQkJCXZhbHVl c1tpXSA9IGNvbm5fb3B0LT52YWw7CisJCQkJCWkrKzsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxz ZQorCQl7CisJCQlrZXl3b3JkcyA9IHBnX21hbGxvYzAoKGFyZ2NvdW50ICsgMSkgKiBzaXplb2Yo KmtleXdvcmRzKSk7CisJCQl2YWx1ZXMgPSBwZ19tYWxsb2MwKChhcmdjb3VudCArIDEpICogc2l6 ZW9mKCp2YWx1ZXMpKTsKKwkJfQorCisJCWlmIChwZ2hvc3QpCisJCXsKKwkJCWtleXdvcmRzW2ld ID0gImhvc3QiOworCQkJdmFsdWVzW2ldID0gcGdob3N0OworCQkJaSsrOworCQl9CisJCWlmIChw Z3BvcnQpCisJCXsKKwkJCWtleXdvcmRzW2ldID0gInBvcnQiOworCQkJdmFsdWVzW2ldID0gcGdw b3J0OworCQkJaSsrOworCQl9CisJCWlmIChwZ3VzZXIpCisJCXsKKwkJCWtleXdvcmRzW2ldID0g InVzZXIiOworCQkJdmFsdWVzW2ldID0gcGd1c2VyOworCQkJaSsrOworCQl9CisJCWlmIChwYXNz d29yZCkKKwkJeworCQkJa2V5d29yZHNbaV0gPSAicGFzc3dvcmQiOworCQkJdmFsdWVzW2ldID0g cGFzc3dvcmQ7CisJCQlpKys7CisJCX0KKwkJaWYgKGRibmFtZSkKKwkJeworCQkJa2V5d29yZHNb aV0gPSAiZGJuYW1lIjsKKwkJCXZhbHVlc1tpXSA9IGRibmFtZTsKKwkJCWkrKzsKKwkJfQorCQlr ZXl3b3Jkc1tpXSA9ICJmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1lIjsKKwkJdmFsdWVzW2ldID0g cHJvZ25hbWU7CisJCWkrKzsKKworCQluZXdfcGFzcyA9IGZhbHNlOworCQljb25uID0gUFFjb25u ZWN0ZGJQYXJhbXMoa2V5d29yZHMsIHZhbHVlcywgdHJ1ZSk7CisKKwkJaWYgKCFjb25uKQorCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIFwiJXNcIiIsIGRibmFtZSk7 CisKKwkJaWYgKFBRc3RhdHVzKGNvbm4pID09IENPTk5FQ1RJT05fQkFEICYmCisJCQlQUWNvbm5l Y3Rpb25OZWVkc1Bhc3N3b3JkKGNvbm4pICYmCisJCQkhcGFzc3dvcmQgJiYKKwkJCXByb21wdF9w YXNzd29yZCAhPSBUUklfTk8pCisJCXsKKwkJCVBRZmluaXNoKGNvbm4pOworCQkJcGFzc3dvcmQg PSBzaW1wbGVfcHJvbXB0KCJQYXNzd29yZDogIiwgZmFsc2UpOworCQkJbmV3X3Bhc3MgPSB0cnVl OworCQl9CisJfSB3aGlsZSAobmV3X3Bhc3MpOworCisJLyogY2hlY2sgdG8gc2VlIHRoYXQgdGhl IGJhY2tlbmQgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hZGUgKi8KKwlpZiAoUFFzdGF0 dXMoY29ubikgPT0gQ09OTkVDVElPTl9CQUQpCisJeworCQlpZiAoZmFpbF9vbl9lcnJvcikKKwkJ CXBnX2ZhdGFsKCIlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJZWxzZQorCQl7CisJCQlQ UWZpbmlzaChjb25uKTsKKworCQkJZnJlZShrZXl3b3Jkcyk7CisJCQlmcmVlKHZhbHVlcyk7CisJ CQlQUWNvbm5pbmZvRnJlZShjb25uX29wdHMpOworCisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0K KworCS8qCisJICogT2ssIGNvbm5lY3RlZCBzdWNjZXNzZnVsbHkuIFJlbWVtYmVyIHRoZSBvcHRp b25zIHVzZWQsIGluIHRoZSBmb3JtIG9mIGEKKwkgKiBjb25uZWN0aW9uIHN0cmluZy4KKwkgKi8K KwlpZiAoY29ubnN0cikKKwkJKmNvbm5zdHIgPSBjb25zdHJ1Y3RDb25uU3RyKGtleXdvcmRzLCB2 YWx1ZXMpOworCisJZnJlZShrZXl3b3Jkcyk7CisJZnJlZSh2YWx1ZXMpOworCVBRY29ubmluZm9G cmVlKGNvbm5fb3B0cyk7CisKKwkvKiBDaGVjayB2ZXJzaW9uICovCisJcmVtb3RldmVyc2lvbl9z dHIgPSBQUXBhcmFtZXRlclN0YXR1cyhjb25uLCAic2VydmVyX3ZlcnNpb24iKTsKKwlpZiAoIXJl bW90ZXZlcnNpb25fc3RyKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGdldCBzZXJ2ZXIgdmVyc2lv biIpOworCXNlcnZlcl92ZXJzaW9uX3RlbXAgPSBQUXNlcnZlclZlcnNpb24oY29ubik7CisJaWYg KHNlcnZlcl92ZXJzaW9uX3RlbXAgPT0gMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBwYXJzZSBz ZXJ2ZXIgdmVyc2lvbiBcIiVzXCIiLAorCQkJCSByZW1vdGV2ZXJzaW9uX3N0cik7CisKKwkvKiBJ ZiBuZWVkZWQsIHRoZW4gY29weSBzZXJ2ZXIgdmVyc2lvbiB0byBvdXRlciBmdW5jdGlvbi4gKi8K KwlpZiAoc2VydmVyX3ZlcnNpb24pCisJCSpzZXJ2ZXJfdmVyc2lvbiA9IHNlcnZlcl92ZXJzaW9u X3RlbXA7CisKKwlteV92ZXJzaW9uID0gUEdfVkVSU0lPTl9OVU07CisKKwkvKgorCSAqIFdlIGFs bG93IHRoZSBzZXJ2ZXIgdG8gYmUgYmFjayB0byA5LjIsIGFuZCB1cCB0byBhbnkgbWlub3IgcmVs ZWFzZSBvZgorCSAqIG91ciBvd24gbWFqb3IgdmVyc2lvbi4gIChTZWUgYWxzbyB2ZXJzaW9uIGNo ZWNrIGluIHBnX2R1bXAuYy4pCisJICovCisJaWYgKG15X3ZlcnNpb24gIT0gc2VydmVyX3ZlcnNp b25fdGVtcAorCQkmJiAoc2VydmVyX3ZlcnNpb25fdGVtcCA8IDkwMjAwIHx8CisJCQkoc2VydmVy X3ZlcnNpb25fdGVtcCAvIDEwMCkgPiAobXlfdmVyc2lvbiAvIDEwMCkpKQorCXsKKwkJcGdfbG9n X2Vycm9yKCJhYm9ydGluZyBiZWNhdXNlIG9mIHNlcnZlciB2ZXJzaW9uIG1pc21hdGNoIik7CisJ CXBnX2xvZ19lcnJvcl9kZXRhaWwoInNlcnZlciB2ZXJzaW9uOiAlczsgJXMgdmVyc2lvbjogJXMi LAorCQkJCQkJCXJlbW90ZXZlcnNpb25fc3RyLCBwcm9nbmFtZSwgUEdfVkVSU0lPTik7CisJCWV4 aXRfbmljZWx5KDEpOworCX0KKworCVBRY2xlYXIoZXhlY3V0ZVF1ZXJ5KGNvbm4sIEFMV0FZU19T RUNVUkVfU0VBUkNIX1BBVEhfU1FMKSk7CisKKwlyZXR1cm4gY29ubjsKK30KKworLyogLS0tLS0t LS0tLQorICogQ29uc3RydWN0IGEgY29ubmVjdGlvbiBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4ga2V5 d29yZC92YWx1ZSBwYWlycy4gSXQgaXMKKyAqIHVzZWQgdG8gcGFzcyB0aGUgY29ubmVjdGlvbiBv cHRpb25zIHRvIHRoZSBwZ19kdW1wIHN1YnByb2Nlc3MuCisgKgorICogVGhlIGZvbGxvd2luZyBw YXJhbWV0ZXJzIGFyZSBleGNsdWRlZDoKKyAqCWRibmFtZQkJLSB2YXJpZXMgaW4gZWFjaCBwZ19k dW1wIGludm9jYXRpb24KKyAqCXBhc3N3b3JkCS0gaXQncyBub3Qgc2VjdXJlIHRvIHBhc3MgYSBw YXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lCisgKglmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1l IC0gd2UnbGwgbGV0IHBnX2R1bXAgc2V0IGl0CisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBj aGFyICoKK2NvbnN0cnVjdENvbm5TdHIoY29uc3QgY2hhciAqKmtleXdvcmRzLCBjb25zdCBjaGFy ICoqdmFsdWVzKQoreworCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJ Y2hhcgkgICAqY29ubnN0cjsKKwlpbnQJCQlpOworCWJvb2wJCWZpcnN0a2V5d29yZCA9IHRydWU7 CisKKwkvKiBDb25zdHJ1Y3QgYSBuZXcgY29ubmVjdGlvbiBzdHJpbmcgaW4ga2V5PSd2YWx1ZScg Zm9ybWF0LiAqLworCWZvciAoaSA9IDA7IGtleXdvcmRzW2ldICE9IE5VTEw7IGkrKykKKwl7CisJ CWlmIChzdHJjbXAoa2V5d29yZHNbaV0sICJkYm5hbWUiKSA9PSAwIHx8CisJCQlzdHJjbXAoa2V5 d29yZHNbaV0sICJwYXNzd29yZCIpID09IDAgfHwKKwkJCXN0cmNtcChrZXl3b3Jkc1tpXSwgImZh bGxiYWNrX2FwcGxpY2F0aW9uX25hbWUiKSA9PSAwKQorCQkJY29udGludWU7CisKKwkJaWYgKCFm aXJzdGtleXdvcmQpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoYnVmLCAnICcpOworCQlmaXJz dGtleXdvcmQgPSBmYWxzZTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoYnVmLCAiJXM9Iiwga2V5d29y ZHNbaV0pOworCQlhcHBlbmRDb25uU3RyVmFsKGJ1ZiwgdmFsdWVzW2ldKTsKKwl9CisKKwljb25u c3RyID0gcGdfc3RyZHVwKGJ1Zi0+ZGF0YSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGJ1Zik7CisJ cmV0dXJuIGNvbm5zdHI7Cit9CisKKy8qCisgKiBSdW4gYSBxdWVyeSwgcmV0dXJuIHRoZSByZXN1 bHRzLCBleGl0IHByb2dyYW0gb24gZmFpbHVyZS4KKyAqLworUEdyZXN1bHQgKgorZXhlY3V0ZVF1 ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpCit7CisJUEdyZXN1bHQgICAqcmVz OworCisJcGdfbG9nX2luZm8oImV4ZWN1dGluZyAlcyIsIHF1ZXJ5KTsKKworCXJlcyA9IFBRZXhl Yyhjb25uLCBxdWVyeSk7CisJaWYgKCFyZXMgfHwKKwkJUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIlF1ZXJ5IHdhczog JXMiLCBxdWVyeSk7CisJCVBRZmluaXNoKGNvbm4pOworCQlleGl0X25pY2VseSgxKTsKKwl9CisK KwlyZXR1cm4gcmVzOworfQorCisvKgorICogcGFyc2VEdW1wRm9ybWF0CisgKgorICogVGhpcyB3 aWxsIHZhbGlkYXRlIGR1bXAgZm9ybWF0cy4KKyAqLworQXJjaGl2ZUZvcm1hdAorcGFyc2VEdW1w Rm9ybWF0KGNvbnN0IGNoYXIgKmZvcm1hdCkKK3sKKwlBcmNoaXZlRm9ybWF0CWFyY2hEdW1wRm9y bWF0OworCisJaWYgKHBnX3N0cmNhc2VjbXAoZm9ybWF0LCAiYyIpID09IDApCisJCWFyY2hEdW1w Rm9ybWF0ID0gYXJjaEN1c3RvbTsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgImN1 c3RvbSIpID09IDApCisJCWFyY2hEdW1wRm9ybWF0ID0gYXJjaEN1c3RvbTsKKwllbHNlIGlmIChw Z19zdHJjYXNlY21wKGZvcm1hdCwgImQiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hE aXJlY3Rvcnk7CisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChmb3JtYXQsICJkaXJlY3RvcnkiKSA9 PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hEaXJlY3Rvcnk7CisJZWxzZSBpZiAocGdfc3Ry Y2FzZWNtcChmb3JtYXQsICJwIikgPT0gMCkKKwkJYXJjaER1bXBGb3JtYXQgPSBhcmNoTnVsbDsK KwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgInBsYWluIikgPT0gMCkKKwkJYXJjaER1 bXBGb3JtYXQgPSBhcmNoTnVsbDsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgInQi KSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hUYXI7CisJZWxzZSBpZiAocGdfc3RyY2Fz ZWNtcChmb3JtYXQsICJ0YXIiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hUYXI7CisJ ZWxzZQorCQlwZ19mYXRhbCgidW5yZWNvZ25pemVkIGFyY2hpdmUgZm9ybWF0IFwiJXNcIjsgcGxl YXNlIHNwZWNpZnkgXCJjXCIsIFwiZFwiLCBvciBcInRcIiIsCisJCQkJZm9ybWF0KTsKKworCXJl dHVybiBhcmNoRHVtcEZvcm1hdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21t b25fZHVtcGFsbF9yZXN0b3JlLmggYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uX2R1bXBhbGxfcmVz dG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmEyN2MzZTlmYjgK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uX2R1bXBhbGxfcmVzdG9y ZS5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGNvbW1vbl9k dW1wYWxsX3Jlc3RvcmUuaAorICogICAgICBDb21tb24gaGVhZGVyIGZpbGUgZm9yIHBnX2R1bXBh bGwgYW5kIHBnX3Jlc3RvcmUKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisg KgorICogSURFTlRJRklDQVRJT04KKyAqICAgIHNyYy9iaW4vcGdfZHVtcC9jb21tb25fZHVtcGFs bF9yZXN0b3JlLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBDT01NT05f RFVNUEFMTF9SRVNUT1JFX0gKKyNkZWZpbmUgQ09NTU9OX0RVTVBBTExfUkVTVE9SRV9ICisKKyNp bmNsdWRlICJwZ19iYWNrdXAuaCIKKworZXh0ZXJuIFBHY29ubiAqY29ubmVjdERhdGFiYXNlKGNv bnN0IGNoYXIgKmRibmFtZSwKKwkJY29uc3QgY2hhciAqY29ubmVjdGlvbl9zdHJpbmcsIGNvbnN0 IGNoYXIgKnBnaG9zdCwKKwkJY29uc3QgY2hhciAqcGdwb3J0LCBjb25zdCBjaGFyICpwZ3VzZXIs CisJCXRyaXZhbHVlIHByb21wdF9wYXNzd29yZCwgYm9vbCBmYWlsX29uX2Vycm9yLAorCQljb25z dCBjaGFyICpwcm9nbmFtZSwgY29uc3QgY2hhciAqKmNvbm5zdHIsIGludCAqc2VydmVyX3ZlcnNp b24pOworZXh0ZXJuICBQR3Jlc3VsdCAqZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3Qg Y2hhciAqcXVlcnkpOworZXh0ZXJuIEFyY2hpdmVGb3JtYXQgcGFyc2VEdW1wRm9ybWF0KGNvbnN0 IGNoYXIgKmZvcm1hdCk7CisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENPTU1P Tl9EVU1QQUxMX1JFU1RPUkVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL21lc29u LmJ1aWxkIGIvc3JjL2Jpbi9wZ19kdW1wL21lc29uLmJ1aWxkCmluZGV4IDYwM2JhNmNmYmYuLmRk ZWNhYzVjZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWlsZAorKysgYi9z cmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQKQEAgLTQ5LDYgKzQ5LDcgQEAgYmluX3RhcmdldHMg Kz0gcGdfZHVtcAogCiBwZ19kdW1wYWxsX3NvdXJjZXMgPSBmaWxlcygKICAgJ3BnX2R1bXBhbGwu YycsCisgICdjb21tb25fZHVtcGFsbF9yZXN0b3JlLmMnLAogKQogCiBpZiBob3N0X3N5c3RlbSA9 PSAnd2luZG93cycKQEAgLTY4LDYgKzY5LDcgQEAgYmluX3RhcmdldHMgKz0gcGdfZHVtcGFsbAog CiBwZ19yZXN0b3JlX3NvdXJjZXMgPSBmaWxlcygKICAgJ3BnX3Jlc3RvcmUuYycsCisgICdjb21t b25fZHVtcGFsbF9yZXN0b3JlLmMnLAogKQogCiBpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCBiL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXAuaAppbmRleCBmMGYxOWJiMGIyLi42NTAwMGU1YTA4IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cC5oCkBAIC0zMDYsNyArMzA2LDcgQEAgZXh0ZXJuIHZvaWQgU2V0QXJjaGl2ZU9wdGlvbnMoQXJj aGl2ZSAqQUgsIER1bXBPcHRpb25zICpkb3B0LCBSZXN0b3JlT3B0aW9ucyAqcm8KIAogZXh0ZXJu IHZvaWQgUHJvY2Vzc0FyY2hpdmVSZXN0b3JlT3B0aW9ucyhBcmNoaXZlICpBSFgpOwogCi1leHRl cm4gdm9pZCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpOworZXh0ZXJuIHZvaWQgUmVzdG9y ZUFyY2hpdmUoQXJjaGl2ZSAqQUhYLCBib29sIGFwcGVuZF9kYXRhKTsKIAogLyogT3BlbiBhbiBl eGlzdGluZyBhcmNoaXZlICovCiBleHRlcm4gQXJjaGl2ZSAqT3BlbkFyY2hpdmUoY29uc3QgY2hh ciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10KTsKQEAgLTMxOSw3ICszMTksNyBA QCBleHRlcm4gQXJjaGl2ZSAqQ3JlYXRlQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29u c3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAJCQkJCQkJICBEYXRhRGlyU3luY01ldGhvZCBzeW5jX21l dGhvZCk7CiAKIC8qIFRoZSAtLWxpc3Qgb3B0aW9uICovCi1leHRlcm4gdm9pZCBQcmludFRPQ1N1 bW1hcnkoQXJjaGl2ZSAqQUhYKTsKK2V4dGVybiB2b2lkIFByaW50VE9DU3VtbWFyeShBcmNoaXZl ICpBSFgsIGJvb2wgYXBwZW5kX2RhdGEpOwogCiBleHRlcm4gUmVzdG9yZU9wdGlvbnMgKk5ld1Jl c3RvcmVPcHRpb25zKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5k ZXggNzA3YTNmYzg0NC4uNzE1M2Q0YTQwYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuYwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgaW50CVJlc3RvcmluZ1RvREIoQXJjaGl2ZUhh bmRsZSAqQUgpOwogc3RhdGljIHZvaWQgZHVtcF9sb19idWYoQXJjaGl2ZUhhbmRsZSAqQUgpOwog c3RhdGljIHZvaWQgZHVtcFRpbWVzdGFtcChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAq bXNnLCB0aW1lX3QgdGltKTsKIHN0YXRpYyB2b2lkIFNldE91dHB1dChBcmNoaXZlSGFuZGxlICpB SCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0JCQkJCSAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lm aWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKTsKKwkJCWNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmlj YXRpb24gY29tcHJlc3Npb25fc3BlYywgYm9vbCBhcHBlbmRfZGF0YSk7CiBzdGF0aWMgQ29tcHJl c3NGaWxlSGFuZGxlICpTYXZlT3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFIKTsKIHN0YXRpYyB2b2lk IFJlc3RvcmVPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzRmlsZUhhbmRsZSAqc2F2 ZWRPdXRwdXQpOwogCkBAIC0zMzMsNyArMzMzLDcgQEAgUHJvY2Vzc0FyY2hpdmVSZXN0b3JlT3B0 aW9ucyhBcmNoaXZlICpBSFgpCiAKIC8qIFB1YmxpYyAqLwogdm9pZAotUmVzdG9yZUFyY2hpdmUo QXJjaGl2ZSAqQUhYKQorUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYLCBib29sIGFwcGVuZF9k YXRhKQogewogCUFyY2hpdmVIYW5kbGUgKkFIID0gKEFyY2hpdmVIYW5kbGUgKikgQUhYOwogCVJl c3RvcmVPcHRpb25zICpyb3B0ID0gQUgtPnB1YmxpYy5yb3B0OwpAQCAtNDUwLDcgKzQ1MCw3IEBA IFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkgKi8KIAlzYXYgPSBTYXZlT3V0cHV0KEFI KTsKIAlpZiAocm9wdC0+ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0 aG0gIT0gUEdfQ09NUFJFU1NJT05fTk9ORSkKLQkJU2V0T3V0cHV0KEFILCByb3B0LT5maWxlbmFt ZSwgcm9wdC0+Y29tcHJlc3Npb25fc3BlYyk7CisJCVNldE91dHB1dChBSCwgcm9wdC0+ZmlsZW5h bWUsIHJvcHQtPmNvbXByZXNzaW9uX3NwZWMsIGFwcGVuZF9kYXRhKTsKIAogCWFocHJpbnRmKEFI LCAiLS1cbi0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVtcFxuLS1cblxuIik7CiAKQEAgLTEyNjMs NyArMTI2Myw3IEBAIEFyY2hpdmVFbnRyeShBcmNoaXZlICpBSFgsIENhdGFsb2dJZCBjYXRhbG9n SWQsIER1bXBJZCBkdW1wSWQsCiAKIC8qIFB1YmxpYyAqLwogdm9pZAotUHJpbnRUT0NTdW1tYXJ5 KEFyY2hpdmUgKkFIWCkKK1ByaW50VE9DU3VtbWFyeShBcmNoaXZlICpBSFgsIGJvb2wgYXBwZW5k X2RhdGEpCiB7CiAJQXJjaGl2ZUhhbmRsZSAqQUggPSAoQXJjaGl2ZUhhbmRsZSAqKSBBSFg7CiAJ UmVzdG9yZU9wdGlvbnMgKnJvcHQgPSBBSC0+cHVibGljLnJvcHQ7CkBAIC0xMjc5LDcgKzEyNzks NyBAQCBQcmludFRPQ1N1bW1hcnkoQXJjaGl2ZSAqQUhYKQogCiAJc2F2ID0gU2F2ZU91dHB1dChB SCk7CiAJaWYgKHJvcHQtPmZpbGVuYW1lKQotCQlTZXRPdXRwdXQoQUgsIHJvcHQtPmZpbGVuYW1l LCBvdXRfY29tcHJlc3Npb25fc3BlYyk7CisJCVNldE91dHB1dChBSCwgcm9wdC0+ZmlsZW5hbWUs IG91dF9jb21wcmVzc2lvbl9zcGVjLCBhcHBlbmRfZGF0YSk7CiAKIAlpZiAoc3RyZnRpbWUoc3Rh bXBfc3RyLCBzaXplb2Yoc3RhbXBfc3RyKSwgUEdEVU1QX1NUUkZUSU1FX0ZNVCwKIAkJCQkgbG9j YWx0aW1lKCZBSC0+Y3JlYXRlRGF0ZSkpID09IDApCkBAIC0xNjU4LDcgKzE2NTgsOCBAQCBhcmNo cHJpbnRmKEFyY2hpdmUgKkFILCBjb25zdCBjaGFyICpmbXQsLi4uKQogCiBzdGF0aWMgdm9pZAog U2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwKLQkJICBj b25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpCisJCSAgY29u c3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkgIGJvb2wg YXBwZW5kX2RhdGEpCiB7CiAJQ29tcHJlc3NGaWxlSGFuZGxlICpDRkg7CiAJY29uc3QgY2hhciAq bW9kZTsKQEAgLTE2NzgsNyArMTY3OSw3IEBAIFNldE91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwg Y29uc3QgY2hhciAqZmlsZW5hbWUsCiAJZWxzZQogCQlmbiA9IGZpbGVubyhzdGRvdXQpOwogCi0J aWYgKEFILT5tb2RlID09IGFyY2hNb2RlQXBwZW5kKQorCWlmIChhcHBlbmRfZGF0YSB8fCBBSC0+ bW9kZSA9PSBhcmNoTW9kZUFwcGVuZCkKIAkJbW9kZSA9IFBHX0JJTkFSWV9BOwogCWVsc2UKIAkJ bW9kZSA9IFBHX0JJTkFSWV9XOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cF90YXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMKaW5kZXggYjViYTNiNDZk ZC4uZDk0ZDBkZTJhNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jCkBAIC04MjYsNyArODI2LDcg QEAgX0Nsb3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAkJc2F2VmVyYm9zZSA9IEFILT5w dWJsaWMudmVyYm9zZTsKIAkJQUgtPnB1YmxpYy52ZXJib3NlID0gMDsKIAotCQlSZXN0b3JlQXJj aGl2ZSgoQXJjaGl2ZSAqKSBBSCk7CisJCVJlc3RvcmVBcmNoaXZlKChBcmNoaXZlICopIEFILCBm YWxzZSk7CiAKIAkJU2V0QXJjaGl2ZU9wdGlvbnMoKEFyY2hpdmUgKikgQUgsIHNhdkRvcHQsIHNh dlJvcHQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmMKaW5kZXggNzlhZWM1ZjUxNS4uZjcw ZWE5MjMzZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuYwpAQCAtMjEsNyArMjEsOCBAQAog LyogR2xvYmFscyBleHBvcnRlZCBieSB0aGlzIGZpbGUgKi8KIGNvbnN0IGNoYXIgKnByb2duYW1l ID0gTlVMTDsKIAotI2RlZmluZSBNQVhfT05fRVhJVF9OSUNFTFkJCQkJMjAKKy8qIFRPRE86IGlu Y3JlYXNpbmcgdGhpcyB0byBrZWVwIDEwMCBkYiByZXN0b3JpbmcgYnkgc2luZ2xlIHBnX3Jlc3Rv cmUgY29tbWFuZC4gKi8KKyNkZWZpbmUgTUFYX09OX0VYSVRfTklDRUxZCQkJCTEwMAogCiBzdGF0 aWMgc3RydWN0CiB7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBhZjg1N2YwMGM3Li4yZGUyNjIxYzhmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTExNDgsNyArMTE0OCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCSAqIHJpZ2h0IG5vdy4KIAkgKi8KIAlpZiAocGxhaW5UZXh0KQotCQlSZXN0b3JlQXJjaGl2 ZShmb3V0KTsKKwkJUmVzdG9yZUFyY2hpdmUoZm91dCwgZmFsc2UpOwogCiAJQ2xvc2VBcmNoaXZl KGZvdXQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYwppbmRleCAzOTZmNzk3ODFjLi41OTE1YjFiMDUxIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wYWxsLmMKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVz X2ZlLmgiCiAKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNs dWRlIDx1bmlzdGQuaD4KIApAQCAtMjQsMTQgKzI1LDE3IEBACiAjaW5jbHVkZSAiY29tbW9uL2hh c2hmbl91bnN0YWJsZS5oIgogI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAi Y29tbW9uL3N0cmluZy5oIgorI2luY2x1ZGUgImNvbW1vbl9kdW1wYWxsX3Jlc3RvcmUuaCIKICNp bmNsdWRlICJkdW1wdXRpbHMuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIK ICNpbmNsdWRlICJmaWx0ZXIuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogI2luY2x1ZGUg InBnX2JhY2t1cC5oIgorI2luY2x1ZGUgInBnX2JhY2t1cF9hcmNoaXZlci5oIgogCiAvKiB2ZXJz aW9uIHN0cmluZyB3ZSBleHBlY3QgYmFjayBmcm9tIHBnX2R1bXAgKi8KICNkZWZpbmUgUEdEVU1Q X1ZFUlNJT05TVFIgInBnX2R1bXAgKFBvc3RncmVTUUwpICIgUEdfVkVSU0lPTiAiXG4iCisjZGVm aW5lIGV4aXRfbmljZWx5KGNvZGUpIGV4aXQoY29kZSkKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAg LTY0LDI4ICs2OCwyNCBAQCBzdGF0aWMgdm9pZCBkcm9wVGFibGVzcGFjZXMoUEdjb25uICpjb25u KTsKIHN0YXRpYyB2b2lkIGR1bXBUYWJsZXNwYWNlcyhQR2Nvbm4gKmNvbm4pOwogc3RhdGljIHZv aWQgZHJvcERCcyhQR2Nvbm4gKmNvbm4pOwogc3RhdGljIHZvaWQgZHVtcFVzZXJDb25maWcoUEdj b25uICpjb25uLCBjb25zdCBjaGFyICp1c2VybmFtZSk7Ci1zdGF0aWMgdm9pZCBkdW1wRGF0YWJh c2VzKFBHY29ubiAqY29ubik7CitzdGF0aWMgdm9pZCBkdW1wRGF0YWJhc2VzKFBHY29ubiAqY29u biwgQXJjaGl2ZUZvcm1hdCBhcmNoRHVtcEZvcm1hdCk7CiBzdGF0aWMgdm9pZCBkdW1wVGltZXN0 YW1wKGNvbnN0IGNoYXIgKm1zZyk7Ci1zdGF0aWMgaW50CXJ1blBnRHVtcChjb25zdCBjaGFyICpk Ym5hbWUsIGNvbnN0IGNoYXIgKmNyZWF0ZV9vcHRzKTsKK3N0YXRpYyBpbnQgcnVuUGdEdW1wKGNv bnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY3JlYXRlX29wdHMsCisJCQkJCSBjaGFyICpk YmZpbGUsIEFyY2hpdmVGb3JtYXQgYXJjaER1bXBGb3JtYXQpOwogc3RhdGljIHZvaWQgYnVpbGRT aFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJIGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFt ZSwgT2lkIG9iamVjdElkLAogCQkJCQkJCSBjb25zdCBjaGFyICpvYmp0eXBlLCBjb25zdCBjaGFy ICpvYmpuYW1lLAogCQkJCQkJCSBQUUV4cEJ1ZmZlciBidWZmZXIpOwotc3RhdGljIFBHY29ubiAq Y29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwKLQkJCQkJCQkgICBjb25zdCBjaGFy ICpjb25uZWN0aW9uX3N0cmluZywgY29uc3QgY2hhciAqcGdob3N0LAotCQkJCQkJCSAgIGNvbnN0 IGNoYXIgKnBncG9ydCwgY29uc3QgY2hhciAqcGd1c2VyLAotCQkJCQkJCSAgIHRyaXZhbHVlIHBy b21wdF9wYXNzd29yZCwgYm9vbCBmYWlsX29uX2Vycm9yKTsKLXN0YXRpYyBjaGFyICpjb25zdHJ1 Y3RDb25uU3RyKGNvbnN0IGNoYXIgKiprZXl3b3JkcywgY29uc3QgY2hhciAqKnZhbHVlcyk7Ci1z dGF0aWMgUEdyZXN1bHQgKmV4ZWN1dGVRdWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1 ZXJ5KTsKIHN0YXRpYyB2b2lkIGV4ZWN1dGVDb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hh ciAqcXVlcnkpOwogc3RhdGljIHZvaWQgZXhwYW5kX2RibmFtZV9wYXR0ZXJucyhQR2Nvbm4gKmNv bm4sIFNpbXBsZVN0cmluZ0xpc3QgKnBhdHRlcm5zLAogCQkJCQkJCQkgICBTaW1wbGVTdHJpbmdM aXN0ICpuYW1lcyk7CiBzdGF0aWMgdm9pZCByZWFkX2R1bXBhbGxfZmlsdGVycyhjb25zdCBjaGFy ICpmaWxlbmFtZSwgU2ltcGxlU3RyaW5nTGlzdCAqcGF0dGVybik7CitzdGF0aWMgdm9pZCBjcmVh dGVfb3Jfb3Blbl9kaXIoY29uc3QgY2hhciAqZGlybmFtZSk7CiAKIHN0YXRpYyBjaGFyIHBnX2R1 bXBfYmluW01BWFBHUEFUSF07CiBzdGF0aWMgY29uc3QgY2hhciAqcHJvZ25hbWU7CiBzdGF0aWMg UFFFeHBCdWZmZXIgcGdkdW1wb3B0czsKLXN0YXRpYyBjaGFyICpjb25uc3RyID0gIiI7CitzdGF0 aWMgY29uc3QgY2hhciAqY29ubnN0ciA9ICIiOwogc3RhdGljIGJvb2wgb3V0cHV0X2NsZWFuID0g ZmFsc2U7CiBzdGF0aWMgYm9vbCBza2lwX2FjbHMgPSBmYWxzZTsKIHN0YXRpYyBib29sIHZlcmJv c2UgPSBmYWxzZTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgaW50CW5vX3N1YnNjcmlwdGlv bnMgPSAwOwogc3RhdGljIGludAlub190b2FzdF9jb21wcmVzc2lvbiA9IDA7CiBzdGF0aWMgaW50 CW5vX3VubG9nZ2VkX3RhYmxlX2RhdGEgPSAwOwogc3RhdGljIGludAlub19yb2xlX3Bhc3N3b3Jk cyA9IDA7Ci1zdGF0aWMgaW50CXNlcnZlcl92ZXJzaW9uOworc3RhdGljIGludCBzZXJ2ZXJfdmVy c2lvbjsKIHN0YXRpYyBpbnQJbG9hZF92aWFfcGFydGl0aW9uX3Jvb3QgPSAwOwogc3RhdGljIGlu dAlvbl9jb25mbGljdF9kb19ub3RoaW5nID0gMDsKIApAQCAtMTIxLDggKzEyMSw2IEBAIHN0YXRp YyBjaGFyICpmaWxlbmFtZSA9IE5VTEw7CiBzdGF0aWMgU2ltcGxlU3RyaW5nTGlzdCBkYXRhYmFz ZV9leGNsdWRlX3BhdHRlcm5zID0ge05VTEwsIE5VTEx9Owogc3RhdGljIFNpbXBsZVN0cmluZ0xp c3QgZGF0YWJhc2VfZXhjbHVkZV9uYW1lcyA9IHtOVUxMLCBOVUxMfTsKIAotI2RlZmluZSBleGl0 X25pY2VseShjb2RlKSBleGl0KGNvZGUpCi0KIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogewpAQCAtMTQ3LDYgKzE0NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkJeyJwYXNzd29yZCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnVyd9LAogCQl7Im5vLXByaXZpbGVn ZXMiLCBub19hcmd1bWVudCwgTlVMTCwgJ3gnfSwKIAkJeyJuby1hY2wiLCBub19hcmd1bWVudCwg TlVMTCwgJ3gnfSwKKwkJeyJmb3JtYXQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0YnfSwK IAogCQkvKgogCQkgKiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZG9uJ3QgaGF2ZSBhbiBlcXVpdmFs ZW50IHNob3J0IG9wdGlvbiBsZXR0ZXIKQEAgLTE4OCw2ICsxODcsOCBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJY2hhcgkgICAqcGdkYiA9IE5VTEw7CiAJY2hhcgkgICAqdXNlX3Jv bGUgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmR1bXBlbmNvZGluZyA9IE5VTEw7CisJQXJjaGl2ZUZv cm1hdCBhcmNoRHVtcEZvcm1hdCA9IGFyY2hOdWxsOworCWNvbnN0IGNoYXIgKmZvcm1hdE5hbWUg PSAicCI7CiAJdHJpdmFsdWUJcHJvbXB0X3Bhc3N3b3JkID0gVFJJX0RFRkFVTFQ7CiAJYm9vbAkJ ZGF0YV9vbmx5ID0gZmFsc2U7CiAJYm9vbAkJZ2xvYmFsc19vbmx5ID0gZmFsc2U7CkBAIC0yMzcs NyArMjM4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJcGdkdW1wb3B0cyA9 IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBh cmd2LCAiYWNkOkU6ZjpnaDpsOk9wOnJzUzp0VTp2d1d4IiwgbG9uZ19vcHRpb25zLCAmb3B0aW5k ZXgpKSAhPSAtMSkKKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiYWNkOkU6 ZjpGOmdoOmw6T3A6cnNTOnRVOnZ3V3giLCBsb25nX29wdGlvbnMsICZvcHRpbmRleCkpICE9IC0x KQogCXsKIAkJc3dpdGNoIChjKQogCQl7CkBAIC0yNjUsNyArMjY2LDkgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBnZHVtcG9wdHMsICIg LWYgIik7CiAJCQkJYXBwZW5kU2hlbGxTdHJpbmcocGdkdW1wb3B0cywgZmlsZW5hbWUpOwogCQkJ CWJyZWFrOwotCisJCQljYXNlICdGJzoKKwkJCQlmb3JtYXROYW1lID0gcGdfc3RyZHVwKG9wdGFy Zyk7CisJCQkJYnJlYWs7CiAJCQljYXNlICdnJzoKIAkJCQlnbG9iYWxzX29ubHkgPSB0cnVlOwog CQkJCWJyZWFrOwpAQCAtNDE0LDYgKzQxNywyMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCWV4aXRfbmljZWx5KDEpOwogCX0KIAorCS8qIEdldCBmb3JtYXQgZm9yIGR1bXAuICov CisJYXJjaER1bXBGb3JtYXQgPSBwYXJzZUR1bXBGb3JtYXQoZm9ybWF0TmFtZSk7CisKKwkvKgor CSAqIElmIG5vbi1wbGFpbiBmb3JtYXQgaXMgc3BlY2lmaWVkIHRoZW4gd2UgbXVzdCBwcm92aWRl IHRoZQorCSAqIGZpbGUgbmFtZSB0byBjcmVhdGUgb25lIG1haW4gZGlyZWN0b3J5LgorCSAqLwor CWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCAmJgorCQkJKCFmaWxlbmFtZSB8fCBzdHJj bXAoZmlsZW5hbWUsICIiKSA9PSAwKSkKKwl7CisJCXBnX2xvZ19lcnJvcigib3B0aW9ucyAtRi8t LWZvcm1hdD1kfGN8dCByZXF1aXJlcyBvcHRpb24gLWYvLS1maWxlIHdpdGggbm9uLWVtcHR5IHN0 cmluZyIpOworCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUg aW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOworCQlleGl0X25pY2VseSgxKTsKKwl9CisKIAkvKgog CSAqIElmIHBhc3N3b3JkIHZhbHVlcyBhcmUgbm90IHJlcXVpcmVkIGluIHRoZSBkdW1wLCBzd2l0 Y2ggdG8gdXNpbmcKIAkgKiBwZ19yb2xlcyB3aGljaCBpcyBlcXVhbGx5IHVzZWZ1bCwganVzdCBt b3JlIGxpa2VseSB0byBoYXZlIHVucmVzdHJpY3RlZApAQCAtNDYwLDYgKzQ3OCwzMyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYgKG9uX2NvbmZsaWN0X2RvX25vdGhpbmcpCiAJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBnZHVtcG9wdHMsICIgLS1vbi1jb25mbGljdC1kby1ub3Ro aW5nIik7CiAKKwkvKgorCSAqIE9wZW4gdGhlIG91dHB1dCBmaWxlIGlmIHJlcXVpcmVkLCBvdGhl cndpc2UgdXNlIHN0ZG91dC4gIElmIHJlcXVpcmVkLAorCSAqIHRoZW4gY3JlYXRlIG5ldyBkaXJl Y3RvcnkgYW5kIGdsb2JhbC5kYXQgZmlsZS4KKwkgKi8KKwlpZiAoYXJjaER1bXBGb3JtYXQgIT0g YXJjaE51bGwpCisJeworCQljaGFyCXRvY19wYXRoW01BWFBHUEFUSF07CisKKwkJLyogQ3JlYXRl IG5ldyBkaXJlY3Rvcnkgb3IgYWNjZXB0IHRoZSBlbXB0eSBleGlzdGluZyBkaXJlY3RvcnkuICov CisJCWNyZWF0ZV9vcl9vcGVuX2RpcihmaWxlbmFtZSk7CisKKwkJc25wcmludGYodG9jX3BhdGgs IE1BWFBHUEFUSCwgIiVzL2dsb2JhbC5kYXQiLCBmaWxlbmFtZSk7CisKKwkJT1BGID0gZm9wZW4o dG9jX3BhdGgsIFBHX0JJTkFSWV9XKTsKKwkJaWYgKCFPUEYpCisJCQlwZ19mYXRhbCgiY291bGQg bm90IG9wZW4gZ2xvYmFsLmRhdCBmaWxlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJfQorCWVs c2UgaWYgKGZpbGVuYW1lKQorCXsKKwkJT1BGID0gZm9wZW4oZmlsZW5hbWUsIFBHX0JJTkFSWV9X KTsKKwkJaWYgKCFPUEYpCisJCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUg XCIlc1wiOiAlbSIsCisJCQkJCSBmaWxlbmFtZSk7CisJfQorCWVsc2UKKwkJT1BGID0gc3Rkb3V0 OworCiAJLyoKIAkgKiBJZiB0aGVyZSB3YXMgYSBkYXRhYmFzZSBzcGVjaWZpZWQgb24gdGhlIGNv bW1hbmQgbGluZSwgdXNlIHRoYXQsCiAJICogb3RoZXJ3aXNlIHRyeSB0byBjb25uZWN0IHRvIGRh dGFiYXNlICJwb3N0Z3JlcyIsIGFuZCBmYWlsaW5nIHRoYXQKQEAgLTQ2OCw3ICs1MTMsOCBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYgKHBnZGIpCiAJewogCQljb25uID0gY29u bmVjdERhdGFiYXNlKHBnZGIsIGNvbm5zdHIsIHBnaG9zdCwgcGdwb3J0LCBwZ3VzZXIsCi0JCQkJ CQkJICAgcHJvbXB0X3Bhc3N3b3JkLCBmYWxzZSk7CisJCQkJCQkJICAgcHJvbXB0X3Bhc3N3b3Jk LCBmYWxzZSwKKwkJCQkJCQkgICBwcm9nbmFtZSwgJmNvbm5zdHIsICZzZXJ2ZXJfdmVyc2lvbik7 CiAKIAkJaWYgKCFjb25uKQogCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFi YXNlIFwiJXNcIiIsIHBnZGIpOwpAQCAtNDc2LDEwICs1MjIsMTIgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCWVsc2UKIAl7CiAJCWNvbm4gPSBjb25uZWN0RGF0YWJhc2UoInBvc3Rn cmVzIiwgY29ubnN0ciwgcGdob3N0LCBwZ3BvcnQsIHBndXNlciwKLQkJCQkJCQkgICBwcm9tcHRf cGFzc3dvcmQsIGZhbHNlKTsKKwkJCQkJCQkgICBwcm9tcHRfcGFzc3dvcmQsIGZhbHNlLAorCQkJ CQkJCSAgIHByb2duYW1lLCAmY29ubnN0ciwgJnNlcnZlcl92ZXJzaW9uKTsKIAkJaWYgKCFjb25u KQogCQkJY29ubiA9IGNvbm5lY3REYXRhYmFzZSgidGVtcGxhdGUxIiwgY29ubnN0ciwgcGdob3N0 LCBwZ3BvcnQsIHBndXNlciwKLQkJCQkJCQkJICAgcHJvbXB0X3Bhc3N3b3JkLCB0cnVlKTsKKwkJ CQkJCQkJICAgcHJvbXB0X3Bhc3N3b3JkLCB0cnVlLAorCQkJCQkJCQkgICBwcm9nbmFtZSwgJmNv bm5zdHIsICZzZXJ2ZXJfdmVyc2lvbik7CiAKIAkJaWYgKCFjb25uKQogCQl7CkBAIC00OTYsMTkg KzU0NCw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlleHBhbmRfZGJuYW1lX3Bh dHRlcm5zKGNvbm4sICZkYXRhYmFzZV9leGNsdWRlX3BhdHRlcm5zLAogCQkJCQkJICAgJmRhdGFi YXNlX2V4Y2x1ZGVfbmFtZXMpOwogCi0JLyoKLQkgKiBPcGVuIHRoZSBvdXRwdXQgZmlsZSBpZiBy ZXF1aXJlZCwgb3RoZXJ3aXNlIHVzZSBzdGRvdXQKLQkgKi8KLQlpZiAoZmlsZW5hbWUpCi0Jewot CQlPUEYgPSBmb3BlbihmaWxlbmFtZSwgUEdfQklOQVJZX1cpOwotCQlpZiAoIU9QRikKLQkJCXBn X2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJIGZp bGVuYW1lKTsKLQl9Ci0JZWxzZQotCQlPUEYgPSBzdGRvdXQ7Ci0KIAkvKgogCSAqIFNldCB0aGUg Y2xpZW50IGVuY29kaW5nIGlmIHJlcXVlc3RlZC4KIAkgKi8KQEAgLTYwNyw3ICs2NDIsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogCiAJaWYgKCFnbG9iYWxzX29ubHkgJiYg IXJvbGVzX29ubHkgJiYgIXRhYmxlc3BhY2VzX29ubHkpCi0JCWR1bXBEYXRhYmFzZXMoY29ubik7 CisJCWR1bXBEYXRhYmFzZXMoY29ubiwgYXJjaER1bXBGb3JtYXQpOwogCiAJUFFmaW5pc2goY29u bik7CiAKQEAgLTYyMCw3ICs2NTUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ CWZjbG9zZShPUEYpOwogCiAJCS8qIHN5bmMgdGhlIHJlc3VsdGluZyBmaWxlLCBlcnJvcnMgYXJl IG5vdCBmYXRhbCAqLwotCQlpZiAoZG9zeW5jKQorCQlpZiAoZG9zeW5jICYmIChhcmNoRHVtcEZv cm1hdCA9PSBhcmNoTnVsbCkpCiAJCQkodm9pZCkgZnN5bmNfZm5hbWUoZmlsZW5hbWUsIGZhbHNl KTsKIAl9CiAKQEAgLTYzNyw2ICs2NzIsOCBAQCBoZWxwKHZvaWQpCiAKIAlwcmludGYoXygiXG5H ZW5lcmFsIG9wdGlvbnM6XG4iKSk7CiAJcHJpbnRmKF8oIiAgLWYsIC0tZmlsZT1GSUxFTkFNRSAg ICAgICAgICBvdXRwdXQgZmlsZSBuYW1lXG4iKSk7CisJcHJpbnRmKF8oIiAgLUYsIC0tZm9ybWF0 PWN8ZHx0fHAgICAgICAgICBvdXRwdXQgZmlsZSBmb3JtYXQgKGN1c3RvbSwgZGlyZWN0b3J5LCB0 YXIsXG4iCisJCQkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFpbiB0ZXh0IChk ZWZhdWx0KSlcbiIpKTsKIAlwcmludGYoXygiICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAg IHZlcmJvc2UgbW9kZVxuIikpOwogCXByaW50ZihfKCIgIC1WLCAtLXZlcnNpb24gICAgICAgICAg ICAgICAgb3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwogCXByaW50 ZihfKCIgIC0tbG9jay13YWl0LXRpbWVvdXQ9VElNRU9VVCAgZmFpbCBhZnRlciB3YWl0aW5nIFRJ TUVPVVQgZm9yIGEgdGFibGUgbG9ja1xuIikpOwpAQCAtMTQ4NywxMCArMTUyNCwxMyBAQCBleHBh bmRfZGJuYW1lX3BhdHRlcm5zKFBHY29ubiAqY29ubiwKICAqIER1bXAgY29udGVudHMgb2YgZGF0 YWJhc2VzLgogICovCiBzdGF0aWMgdm9pZAotZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCitk dW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubiwgQXJjaGl2ZUZvcm1hdCBhcmNoRHVtcEZvcm1hdCkK IHsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJaW50CQkJaTsKKwljaGFyCQlkYl9zdWJkaXJbTUFYUEdQ QVRIXTsKKwljaGFyCQlkYmZpbGVwYXRoW01BWFBHUEFUSF07CisJRklMRSAgICAgICAqbWFwX2Zp bGUgPSBOVUxMOwogCiAJLyoKIAkgKiBTa2lwIGRhdGFiYXNlcyBtYXJrZWQgbm90IGRhdGFsbG93 Y29ubiwgc2luY2Ugd2UnZCBiZSB1bmFibGUgdG8gY29ubmVjdApAQCAtMTUwNCw3ICsxNTQ0LDcg QEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiAJICogZG9lc24ndCBoYXZlIHNvbWUgZmFp bHVyZSBtb2RlIHdpdGggLS1jbGVhbi4KIAkgKi8KIAlyZXMgPSBleGVjdXRlUXVlcnkoY29ubiwK LQkJCQkJICAgIlNFTEVDVCBkYXRuYW1lICIKKwkJCQkJICAgIlNFTEVDVCBkYXRuYW1lLCBvaWQg IgogCQkJCQkgICAiRlJPTSBwZ19kYXRhYmFzZSBkICIKIAkJCQkJICAgIldIRVJFIGRhdGFsbG93 Y29ubiBBTkQgZGF0Y29ubmxpbWl0ICE9IC0yICIKIAkJCQkJICAgIk9SREVSIEJZIChkYXRuYW1l IDw+ICd0ZW1wbGF0ZTEnKSwgZGF0bmFtZSIpOwpAQCAtMTUxMiw5ICsxNTUyLDMzIEBAIGR1bXBE YXRhYmFzZXMoUEdjb25uICpjb25uKQogCWlmIChQUW50dXBsZXMocmVzKSA+IDApCiAJCWZwcmlu dGYoT1BGLCAiLS1cbi0tIERhdGFiYXNlc1xuLS1cblxuIik7CiAKKwkvKgorCSAqIElmIGRpcmVj dG9yeS90YXIvY3VzdG9tIGZvcm1hdCBpcyBzcGVjaWZpZWQgdGhlbiBjcmVhdGUgYSBzdWJkaXJl Y3RvcnkKKwkgKiB1bmRlciB0aGUgbWFpbiBkaXJlY3RvcnkgYW5kIGVhY2ggZGF0YWJhc2UgZHVt cCBmaWxlIHN1YmRpcmVjdG9yeSB3aWxsCisJICogYmUgY3JlYXRlZCB1bmRlciB0aGUgc3ViZGly ZWN0b3J5IGluIGFyY2hpdmUgbW9kZSBhcyBwZXIgc2luZ2xlIGRiIHBnX2R1bXAuCisJICovCisJ aWYgKGFyY2hEdW1wRm9ybWF0ICE9IGFyY2hOdWxsKQorCXsKKwkJY2hhcgltYXBfZmlsZV9wYXRo W01BWFBHUEFUSF07CisKKwkJc25wcmludGYoZGJfc3ViZGlyLCBNQVhQR1BBVEgsICIlcy9kYXRh YmFzZXMiLCBmaWxlbmFtZSk7CisKKwkJLyogQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IHdpdGggJ2Rh dGFiYXNlcycgbmFtZSB1bmRlciBtYWluIGRpcmVjdG9yeS4gKi8KKwkJaWYgKG1rZGlyKGRiX3N1 YmRpciwgMDc1NSkgIT0gMCkKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBzdWJk aXJlY3RvcnkgXCIlc1wiOiAlbSIsIGRiX3N1YmRpcik7CisKKwkJc25wcmludGYobWFwX2ZpbGVf cGF0aCwgTUFYUEdQQVRILCAiJXMvbWFwLmRhdCIsIGZpbGVuYW1lKTsKKworCQkvKiBDcmVhdGUg YSBtYXAgZmlsZSAodG8gc3RvcmUgZGJvaWQgYW5kIGRibmFtZSkgKi8KKwkJbWFwX2ZpbGUgPSBm b3BlbihtYXBfZmlsZV9wYXRoLCBQR19CSU5BUllfVyk7CisJCWlmICghbWFwX2ZpbGUpCisJCQlw Z19mYXRhbCgiY291bGQgbm90IG9wZW4gbWFwIGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsK Kwl9CisKIAlmb3IgKGkgPSAwOyBpIDwgUFFudHVwbGVzKHJlcyk7IGkrKykKIAl7CiAJCWNoYXIJ ICAgKmRibmFtZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCAwKTsKKwkJY2hhcgkgICAqb2lkID0gUFFn ZXR2YWx1ZShyZXMsIGksIDEpOwogCQljb25zdCBjaGFyICpjcmVhdGVfb3B0czsKIAkJaW50CQkJ cmV0OwogCkBAIC0xNTI5LDYgKzE1OTMsMTggQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4p CiAJCQljb250aW51ZTsKIAkJfQogCisJCS8qCisJCSAqIElmIHRoaXMgaXMgbm9uLXBsYWluIGR1 bXAgZm9ybWF0LCB0aGVuIGFwcGVuZCBkYm9pZCBhbmQgZGJuYW1lIHRvCisJCSAqIHRoZSBtYXAu ZGF0IGZpbGUuCisJCSAqLworCQlpZiAoYXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwpCisJCXsK KwkJCXNucHJpbnRmKGRiZmlsZXBhdGgsIE1BWFBHUEFUSCwgIlwiJXNcIi9cIiVzXCIiLCBkYl9z dWJkaXIsIG9pZCk7CisKKwkJCS8qIFB1dCBvbmUgbGluZSBlbnRyeSBmb3IgZGJvaWQgYW5kIGRi bmFtZSBpbiBtYXAgZmlsZS4gKi8KKwkJCWZwcmludGYobWFwX2ZpbGUsICIlcyAlc1xuIiwgb2lk LCBwZ19zdHJkdXAoZGJuYW1lKSk7CisJCX0KKwogCQlwZ19sb2dfaW5mbygiZHVtcGluZyBkYXRh YmFzZSBcIiVzXCIiLCBkYm5hbWUpOwogCiAJCWZwcmludGYoT1BGLCAiLS1cbi0tIERhdGFiYXNl IFwiJXNcIiBkdW1wXG4tLVxuXG4iLCBkYm5hbWUpOwpAQCAtMTU0Nyw5ICsxNjIzLDE3IEBAIGR1 bXBEYXRhYmFzZXMoUEdjb25uICpjb25uKQogCQkJCWNyZWF0ZV9vcHRzID0gIi0tY2xlYW4gLS1j cmVhdGUiOwogCQkJZWxzZQogCQkJewotCQkJCWNyZWF0ZV9vcHRzID0gIiI7CiAJCQkJLyogU2lu Y2UgcGdfZHVtcCB3b24ndCBlbWl0IGEgXGNvbm5lY3QgY29tbWFuZCwgd2UgbXVzdCAqLwotCQkJ CWZwcmludGYoT1BGLCAiXFxjb25uZWN0ICVzXG5cbiIsIGRibmFtZSk7CisJCQkJaWYgKGFyY2hE dW1wRm9ybWF0ID09IGFyY2hOdWxsKQorCQkJCXsKKwkJCQkJY3JlYXRlX29wdHMgPSAiIjsKKwkJ CQkJZnByaW50ZihPUEYsICJcXGNvbm5lY3QgJXNcblxuIiwgZGJuYW1lKTsKKwkJCQl9CisJCQkJ ZWxzZQorCQkJCXsKKwkJCQkJLyogRHVtcGluZyBhbGwgZGF0YWJhc2VzIHNvIGFkZCAtLWNyZWF0 ZSBvcHRpb24uICovCisJCQkJCWNyZWF0ZV9vcHRzID0gIi0tY3JlYXRlIjsKKwkJCQl9CiAJCQl9 CiAJCX0KIAkJZWxzZQpAQCAtMTU1OCwxOSArMTY0MiwzMCBAQCBkdW1wRGF0YWJhc2VzKFBHY29u biAqY29ubikKIAkJaWYgKGZpbGVuYW1lKQogCQkJZmNsb3NlKE9QRik7CiAKLQkJcmV0ID0gcnVu UGdEdW1wKGRibmFtZSwgY3JlYXRlX29wdHMpOworCQlyZXQgPSBydW5QZ0R1bXAoZGJuYW1lLCBj cmVhdGVfb3B0cywgZGJmaWxlcGF0aCwgYXJjaER1bXBGb3JtYXQpOwogCQlpZiAocmV0ICE9IDAp CiAJCQlwZ19mYXRhbCgicGdfZHVtcCBmYWlsZWQgb24gZGF0YWJhc2UgXCIlc1wiLCBleGl0aW5n IiwgZGJuYW1lKTsKIAogCQlpZiAoZmlsZW5hbWUpCiAJCXsKLQkJCU9QRiA9IGZvcGVuKGZpbGVu YW1lLCBQR19CSU5BUllfQSk7CisJCQljaGFyCXRvY19wYXRoW01BWFBHUEFUSF07CisKKwkJCWlm IChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkKKwkJCQlzbnByaW50Zih0b2NfcGF0aCwgTUFY UEdQQVRILCAiJXMvZ2xvYmFsLmRhdCIsIGZpbGVuYW1lKTsKKwkJCWVsc2UKKwkJCQlzbnByaW50 Zih0b2NfcGF0aCwgTUFYUEdQQVRILCAiJXMiLCBmaWxlbmFtZSk7CisKKwkJCU9QRiA9IGZvcGVu KHRvY19wYXRoLCBQR19CSU5BUllfQSk7CiAJCQlpZiAoIU9QRikKIAkJCQlwZ19mYXRhbCgiY291 bGQgbm90IHJlLW9wZW4gdGhlIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLAotCQkJCQkJIGZpbGVu YW1lKTsKKwkJCQkJCSB0b2NfcGF0aCk7CiAJCX0KIAl9CiAKKwkvKiBDbG9zZSBtYXAgZmlsZSAq LworCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkKKwkJZmNsb3NlKG1hcF9maWxlKTsK KwogCVBRY2xlYXIocmVzKTsKIH0KIApAQCAtMTU4MCw3ICsxNjc1LDggQEAgZHVtcERhdGFiYXNl cyhQR2Nvbm4gKmNvbm4pCiAgKiBSdW4gcGdfZHVtcCBvbiBkYm5hbWUsIHdpdGggc3BlY2lmaWVk IG9wdGlvbnMuCiAgKi8KIHN0YXRpYyBpbnQKLXJ1blBnRHVtcChjb25zdCBjaGFyICpkYm5hbWUs IGNvbnN0IGNoYXIgKmNyZWF0ZV9vcHRzKQorcnVuUGdEdW1wKGNvbnN0IGNoYXIgKmRibmFtZSwg Y29uc3QgY2hhciAqY3JlYXRlX29wdHMsIGNoYXIgKmRiZmlsZSwKKwkJQXJjaGl2ZUZvcm1hdCBh cmNoRHVtcEZvcm1hdCkKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgY29ubnN0cmJ1ZjsKIAlQUUV4cEJ1 ZmZlckRhdGEgY21kOwpAQCAtMTU4OSwxNyArMTY4NSwzNiBAQCBydW5QZ0R1bXAoY29uc3QgY2hh ciAqZGJuYW1lLCBjb25zdCBjaGFyICpjcmVhdGVfb3B0cykKIAlpbml0UFFFeHBCdWZmZXIoJmNv bm5zdHJidWYpOwogCWluaXRQUUV4cEJ1ZmZlcigmY21kKTsKIAotCXByaW50ZlBRRXhwQnVmZmVy KCZjbWQsICJcIiVzXCIgJXMgJXMiLCBwZ19kdW1wX2JpbiwKLQkJCQkJICBwZ2R1bXBvcHRzLT5k YXRhLCBjcmVhdGVfb3B0cyk7Ci0KIAkvKgotCSAqIElmIHdlIGhhdmUgYSBmaWxlbmFtZSwgdXNl IHRoZSB1bmRvY3VtZW50ZWQgcGxhaW4tYXBwZW5kIHBnX2R1bXAKLQkgKiBmb3JtYXQuCisJICog SWYgdGhpcyBpcyBub24tcGxhaW4gZm9ybWF0IGR1bXAsIHRoZW4gYXBwZW5kIGZpbGUgbmFtZSBh bmQgZHVtcAorCSAqIGZvcm1hdCB0byB0aGUgcGdfZHVtcCBjb21tYW5kIHRvIGdldCBhcmNoaXZl IGR1bXAuCiAJICovCi0JaWYgKGZpbGVuYW1lKQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21k LCAiIC1GYSAiKTsKKwlpZiAoYXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwpCisJeworCQlwcmlu dGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiIC1mICVzICVzIiwgcGdfZHVtcF9iaW4sCisJCQkJ CQkgIGRiZmlsZSwgY3JlYXRlX29wdHMpOworCisJCWlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNo RGlyZWN0b3J5KQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAgLS1mb3JtYXQ9ZGly ZWN0b3J5ICIpOworCQllbHNlIGlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNoQ3VzdG9tKQorCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAgLS1mb3JtYXQ9Y3VzdG9tICIpOworCQllbHNl IGlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNoVGFyKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNtZCwgIiAgLS1mb3JtYXQ9dGFyICIpOworCX0KIAllbHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjbWQsICIgLUZwICIpOworCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNtZCwgIlwiJXNc IiAlcyAlcyIsIHBnX2R1bXBfYmluLAorCQkJCQkJcGdkdW1wb3B0cy0+ZGF0YSwgY3JlYXRlX29w dHMpOworCisJCS8qCisJCSogSWYgd2UgaGF2ZSBhIGZpbGVuYW1lLCB1c2UgdGhlIHVuZG9jdW1l bnRlZCBwbGFpbi1hcHBlbmQgcGdfZHVtcAorCQkqIGZvcm1hdC4KKwkJKi8KKwkJaWYgKGZpbGVu YW1lKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAtRmEgIik7CisJCWVsc2UKKwkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjbWQsICIgLUZwICIpOworCX0KIAogCS8qCiAJICogQXBw ZW5kIHRoZSBkYXRhYmFzZSBuYW1lIHRvIHRoZSBhbHJlYWR5LWNvbnN0cnVjdGVkIHN0ZW0gb2Yg Y29ubmVjdGlvbgpAQCAtMTY0OSwyNTYgKzE3NjQsNiBAQCBidWlsZFNoU2VjTGFiZWxzKFBHY29u biAqY29ubiwgY29uc3QgY2hhciAqY2F0YWxvZ19uYW1lLCBPaWQgb2JqZWN0SWQsCiAJZGVzdHJv eVBRRXhwQnVmZmVyKHNxbCk7CiB9CiAKLS8qCi0gKiBNYWtlIGEgZGF0YWJhc2UgY29ubmVjdGlv biB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiAgQW4KLSAqIGludGVyYWN0aXZlIHBhc3N3b3Jk IHByb21wdCBpcyBhdXRvbWF0aWNhbGx5IGlzc3VlZCBpZiByZXF1aXJlZC4KLSAqCi0gKiBJZiBm YWlsX29uX2Vycm9yIGlzIGZhbHNlLCB3ZSByZXR1cm4gTlVMTCB3aXRob3V0IHByaW50aW5nIGFu eSBtZXNzYWdlCi0gKiBvbiBmYWlsdXJlLCBidXQgcHJlc2VydmUgYW55IHByb21wdGVkIHBhc3N3 b3JkIGZvciB0aGUgbmV4dCB0cnkuCi0gKgotICogT24gc3VjY2VzcywgdGhlIGdsb2JhbCB2YXJp YWJsZSAnY29ubnN0cicgaXMgc2V0IHRvIGEgY29ubmVjdGlvbiBzdHJpbmcKLSAqIGNvbnRhaW5p bmcgdGhlIG9wdGlvbnMgdXNlZC4KLSAqLwotc3RhdGljIFBHY29ubiAqCi1jb25uZWN0RGF0YWJh c2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjb25uZWN0aW9uX3N0cmluZywKLQkJ CQljb25zdCBjaGFyICpwZ2hvc3QsIGNvbnN0IGNoYXIgKnBncG9ydCwgY29uc3QgY2hhciAqcGd1 c2VyLAotCQkJCXRyaXZhbHVlIHByb21wdF9wYXNzd29yZCwgYm9vbCBmYWlsX29uX2Vycm9yKQot ewotCVBHY29ubgkgICAqY29ubjsKLQlib29sCQluZXdfcGFzczsKLQljb25zdCBjaGFyICpyZW1v dGV2ZXJzaW9uX3N0cjsKLQlpbnQJCQlteV92ZXJzaW9uOwotCWNvbnN0IGNoYXIgKiprZXl3b3Jk cyA9IE5VTEw7Ci0JY29uc3QgY2hhciAqKnZhbHVlcyA9IE5VTEw7Ci0JUFFjb25uaW5mb09wdGlv biAqY29ubl9vcHRzID0gTlVMTDsKLQlzdGF0aWMgY2hhciAqcGFzc3dvcmQgPSBOVUxMOwotCi0J aWYgKHByb21wdF9wYXNzd29yZCA9PSBUUklfWUVTICYmICFwYXNzd29yZCkKLQkJcGFzc3dvcmQg PSBzaW1wbGVfcHJvbXB0KCJQYXNzd29yZDogIiwgZmFsc2UpOwotCi0JLyoKLQkgKiBTdGFydCB0 aGUgY29ubmVjdGlvbi4gIExvb3AgdW50aWwgd2UgaGF2ZSBhIHBhc3N3b3JkIGlmIHJlcXVlc3Rl ZCBieQotCSAqIGJhY2tlbmQuCi0JICovCi0JZG8KLQl7Ci0JCWludAkJCWFyZ2NvdW50ID0gNjsK LQkJUFFjb25uaW5mb09wdGlvbiAqY29ubl9vcHQ7Ci0JCWNoYXIJICAgKmVycl9tc2cgPSBOVUxM OwotCQlpbnQJCQlpID0gMDsKLQotCQlmcmVlKGtleXdvcmRzKTsKLQkJZnJlZSh2YWx1ZXMpOwot CQlQUWNvbm5pbmZvRnJlZShjb25uX29wdHMpOwotCi0JCS8qCi0JCSAqIE1lcmdlIHRoZSBjb25u ZWN0aW9uIGluZm8gaW5wdXRzIGdpdmVuIGluIGZvcm0gb2YgY29ubmVjdGlvbiBzdHJpbmcKLQkJ ICogYW5kIG90aGVyIG9wdGlvbnMuICBFeHBsaWNpdGx5IGRpc2NhcmQgYW55IGRibmFtZSB2YWx1 ZSBpbiB0aGUKLQkJICogY29ubmVjdGlvbiBzdHJpbmc7IG90aGVyd2lzZSwgUFFjb25uZWN0ZGJQ YXJhbXMoKSB3b3VsZCBpbnRlcnByZXQKLQkJICogdGhhdCB2YWx1ZSBhcyBiZWluZyBpdHNlbGYg YSBjb25uZWN0aW9uIHN0cmluZy4KLQkJICovCi0JCWlmIChjb25uZWN0aW9uX3N0cmluZykKLQkJ ewotCQkJY29ubl9vcHRzID0gUFFjb25uaW5mb1BhcnNlKGNvbm5lY3Rpb25fc3RyaW5nLCAmZXJy X21zZyk7Ci0JCQlpZiAoY29ubl9vcHRzID09IE5VTEwpCi0JCQkJcGdfZmF0YWwoIiVzIiwgZXJy X21zZyk7Ci0KLQkJCWZvciAoY29ubl9vcHQgPSBjb25uX29wdHM7IGNvbm5fb3B0LT5rZXl3b3Jk ICE9IE5VTEw7IGNvbm5fb3B0KyspCi0JCQl7Ci0JCQkJaWYgKGNvbm5fb3B0LT52YWwgIT0gTlVM TCAmJiBjb25uX29wdC0+dmFsWzBdICE9ICdcMCcgJiYKLQkJCQkJc3RyY21wKGNvbm5fb3B0LT5r ZXl3b3JkLCAiZGJuYW1lIikgIT0gMCkKLQkJCQkJYXJnY291bnQrKzsKLQkJCX0KLQotCQkJa2V5 d29yZHMgPSBwZ19tYWxsb2MwKChhcmdjb3VudCArIDEpICogc2l6ZW9mKCprZXl3b3JkcykpOwot CQkJdmFsdWVzID0gcGdfbWFsbG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVvZigqdmFsdWVzKSk7 Ci0KLQkJCWZvciAoY29ubl9vcHQgPSBjb25uX29wdHM7IGNvbm5fb3B0LT5rZXl3b3JkICE9IE5V TEw7IGNvbm5fb3B0KyspCi0JCQl7Ci0JCQkJaWYgKGNvbm5fb3B0LT52YWwgIT0gTlVMTCAmJiBj b25uX29wdC0+dmFsWzBdICE9ICdcMCcgJiYKLQkJCQkJc3RyY21wKGNvbm5fb3B0LT5rZXl3b3Jk LCAiZGJuYW1lIikgIT0gMCkKLQkJCQl7Ci0JCQkJCWtleXdvcmRzW2ldID0gY29ubl9vcHQtPmtl eXdvcmQ7Ci0JCQkJCXZhbHVlc1tpXSA9IGNvbm5fb3B0LT52YWw7Ci0JCQkJCWkrKzsKLQkJCQl9 Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlrZXl3b3JkcyA9IHBnX21hbGxvYzAoKGFyZ2Nv dW50ICsgMSkgKiBzaXplb2YoKmtleXdvcmRzKSk7Ci0JCQl2YWx1ZXMgPSBwZ19tYWxsb2MwKChh cmdjb3VudCArIDEpICogc2l6ZW9mKCp2YWx1ZXMpKTsKLQkJfQotCi0JCWlmIChwZ2hvc3QpCi0J CXsKLQkJCWtleXdvcmRzW2ldID0gImhvc3QiOwotCQkJdmFsdWVzW2ldID0gcGdob3N0OwotCQkJ aSsrOwotCQl9Ci0JCWlmIChwZ3BvcnQpCi0JCXsKLQkJCWtleXdvcmRzW2ldID0gInBvcnQiOwot CQkJdmFsdWVzW2ldID0gcGdwb3J0OwotCQkJaSsrOwotCQl9Ci0JCWlmIChwZ3VzZXIpCi0JCXsK LQkJCWtleXdvcmRzW2ldID0gInVzZXIiOwotCQkJdmFsdWVzW2ldID0gcGd1c2VyOwotCQkJaSsr OwotCQl9Ci0JCWlmIChwYXNzd29yZCkKLQkJewotCQkJa2V5d29yZHNbaV0gPSAicGFzc3dvcmQi OwotCQkJdmFsdWVzW2ldID0gcGFzc3dvcmQ7Ci0JCQlpKys7Ci0JCX0KLQkJaWYgKGRibmFtZSkK LQkJewotCQkJa2V5d29yZHNbaV0gPSAiZGJuYW1lIjsKLQkJCXZhbHVlc1tpXSA9IGRibmFtZTsK LQkJCWkrKzsKLQkJfQotCQlrZXl3b3Jkc1tpXSA9ICJmYWxsYmFja19hcHBsaWNhdGlvbl9uYW1l IjsKLQkJdmFsdWVzW2ldID0gcHJvZ25hbWU7Ci0JCWkrKzsKLQotCQluZXdfcGFzcyA9IGZhbHNl OwotCQljb25uID0gUFFjb25uZWN0ZGJQYXJhbXMoa2V5d29yZHMsIHZhbHVlcywgdHJ1ZSk7Ci0K LQkJaWYgKCFjb25uKQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNl IFwiJXNcIiIsIGRibmFtZSk7Ci0KLQkJaWYgKFBRc3RhdHVzKGNvbm4pID09IENPTk5FQ1RJT05f QkFEICYmCi0JCQlQUWNvbm5lY3Rpb25OZWVkc1Bhc3N3b3JkKGNvbm4pICYmCi0JCQkhcGFzc3dv cmQgJiYKLQkJCXByb21wdF9wYXNzd29yZCAhPSBUUklfTk8pCi0JCXsKLQkJCVBRZmluaXNoKGNv bm4pOwotCQkJcGFzc3dvcmQgPSBzaW1wbGVfcHJvbXB0KCJQYXNzd29yZDogIiwgZmFsc2UpOwot CQkJbmV3X3Bhc3MgPSB0cnVlOwotCQl9Ci0JfSB3aGlsZSAobmV3X3Bhc3MpOwotCi0JLyogY2hl Y2sgdG8gc2VlIHRoYXQgdGhlIGJhY2tlbmQgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IG1h ZGUgKi8KLQlpZiAoUFFzdGF0dXMoY29ubikgPT0gQ09OTkVDVElPTl9CQUQpCi0JewotCQlpZiAo ZmFpbF9vbl9lcnJvcikKLQkJCXBnX2ZhdGFsKCIlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK LQkJZWxzZQotCQl7Ci0JCQlQUWZpbmlzaChjb25uKTsKLQotCQkJZnJlZShrZXl3b3Jkcyk7Ci0J CQlmcmVlKHZhbHVlcyk7Ci0JCQlQUWNvbm5pbmZvRnJlZShjb25uX29wdHMpOwotCi0JCQlyZXR1 cm4gTlVMTDsKLQkJfQotCX0KLQotCS8qCi0JICogT2ssIGNvbm5lY3RlZCBzdWNjZXNzZnVsbHku IFJlbWVtYmVyIHRoZSBvcHRpb25zIHVzZWQsIGluIHRoZSBmb3JtIG9mIGEKLQkgKiBjb25uZWN0 aW9uIHN0cmluZy4KLQkgKi8KLQljb25uc3RyID0gY29uc3RydWN0Q29ublN0cihrZXl3b3Jkcywg dmFsdWVzKTsKLQotCWZyZWUoa2V5d29yZHMpOwotCWZyZWUodmFsdWVzKTsKLQlQUWNvbm5pbmZv RnJlZShjb25uX29wdHMpOwotCi0JLyogQ2hlY2sgdmVyc2lvbiAqLwotCXJlbW90ZXZlcnNpb25f c3RyID0gUFFwYXJhbWV0ZXJTdGF0dXMoY29ubiwgInNlcnZlcl92ZXJzaW9uIik7Ci0JaWYgKCFy ZW1vdGV2ZXJzaW9uX3N0cikKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBnZXQgc2VydmVyIHZlcnNp b24iKTsKLQlzZXJ2ZXJfdmVyc2lvbiA9IFBRc2VydmVyVmVyc2lvbihjb25uKTsKLQlpZiAoc2Vy dmVyX3ZlcnNpb24gPT0gMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBwYXJzZSBzZXJ2ZXIgdmVy c2lvbiBcIiVzXCIiLAotCQkJCSByZW1vdGV2ZXJzaW9uX3N0cik7Ci0KLQlteV92ZXJzaW9uID0g UEdfVkVSU0lPTl9OVU07Ci0KLQkvKgotCSAqIFdlIGFsbG93IHRoZSBzZXJ2ZXIgdG8gYmUgYmFj ayB0byA5LjIsIGFuZCB1cCB0byBhbnkgbWlub3IgcmVsZWFzZSBvZgotCSAqIG91ciBvd24gbWFq b3IgdmVyc2lvbi4gIChTZWUgYWxzbyB2ZXJzaW9uIGNoZWNrIGluIHBnX2R1bXAuYy4pCi0JICov Ci0JaWYgKG15X3ZlcnNpb24gIT0gc2VydmVyX3ZlcnNpb24KLQkJJiYgKHNlcnZlcl92ZXJzaW9u IDwgOTAyMDAgfHwKLQkJCShzZXJ2ZXJfdmVyc2lvbiAvIDEwMCkgPiAobXlfdmVyc2lvbiAvIDEw MCkpKQotCXsKLQkJcGdfbG9nX2Vycm9yKCJhYm9ydGluZyBiZWNhdXNlIG9mIHNlcnZlciB2ZXJz aW9uIG1pc21hdGNoIik7Ci0JCXBnX2xvZ19lcnJvcl9kZXRhaWwoInNlcnZlciB2ZXJzaW9uOiAl czsgJXMgdmVyc2lvbjogJXMiLAotCQkJCQkJCXJlbW90ZXZlcnNpb25fc3RyLCBwcm9nbmFtZSwg UEdfVkVSU0lPTik7Ci0JCWV4aXRfbmljZWx5KDEpOwotCX0KLQotCVBRY2xlYXIoZXhlY3V0ZVF1 ZXJ5KGNvbm4sIEFMV0FZU19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMKSk7Ci0KLQlyZXR1cm4gY29u bjsKLX0KLQotLyogLS0tLS0tLS0tLQotICogQ29uc3RydWN0IGEgY29ubmVjdGlvbiBzdHJpbmcg ZnJvbSB0aGUgZ2l2ZW4ga2V5d29yZC92YWx1ZSBwYWlycy4gSXQgaXMKLSAqIHVzZWQgdG8gcGFz cyB0aGUgY29ubmVjdGlvbiBvcHRpb25zIHRvIHRoZSBwZ19kdW1wIHN1YnByb2Nlc3MuCi0gKgot ICogVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBleGNsdWRlZDoKLSAqCWRibmFtZQkJLSB2 YXJpZXMgaW4gZWFjaCBwZ19kdW1wIGludm9jYXRpb24KLSAqCXBhc3N3b3JkCS0gaXQncyBub3Qg c2VjdXJlIHRvIHBhc3MgYSBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lCi0gKglmYWxsYmFj a19hcHBsaWNhdGlvbl9uYW1lIC0gd2UnbGwgbGV0IHBnX2R1bXAgc2V0IGl0Ci0gKiAtLS0tLS0t LS0tCi0gKi8KLXN0YXRpYyBjaGFyICoKLWNvbnN0cnVjdENvbm5TdHIoY29uc3QgY2hhciAqKmtl eXdvcmRzLCBjb25zdCBjaGFyICoqdmFsdWVzKQotewotCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0 ZVBRRXhwQnVmZmVyKCk7Ci0JY2hhcgkgICAqY29ubnN0cjsKLQlpbnQJCQlpOwotCWJvb2wJCWZp cnN0a2V5d29yZCA9IHRydWU7Ci0KLQkvKiBDb25zdHJ1Y3QgYSBuZXcgY29ubmVjdGlvbiBzdHJp bmcgaW4ga2V5PSd2YWx1ZScgZm9ybWF0LiAqLwotCWZvciAoaSA9IDA7IGtleXdvcmRzW2ldICE9 IE5VTEw7IGkrKykKLQl7Ci0JCWlmIChzdHJjbXAoa2V5d29yZHNbaV0sICJkYm5hbWUiKSA9PSAw IHx8Ci0JCQlzdHJjbXAoa2V5d29yZHNbaV0sICJwYXNzd29yZCIpID09IDAgfHwKLQkJCXN0cmNt cChrZXl3b3Jkc1tpXSwgImZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWUiKSA9PSAwKQotCQkJY29u dGludWU7Ci0KLQkJaWYgKCFmaXJzdGtleXdvcmQpCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIo YnVmLCAnICcpOwotCQlmaXJzdGtleXdvcmQgPSBmYWxzZTsKLQkJYXBwZW5kUFFFeHBCdWZmZXIo YnVmLCAiJXM9Iiwga2V5d29yZHNbaV0pOwotCQlhcHBlbmRDb25uU3RyVmFsKGJ1ZiwgdmFsdWVz W2ldKTsKLQl9Ci0KLQljb25uc3RyID0gcGdfc3RyZHVwKGJ1Zi0+ZGF0YSk7Ci0JZGVzdHJveVBR RXhwQnVmZmVyKGJ1Zik7Ci0JcmV0dXJuIGNvbm5zdHI7Ci19Ci0KLS8qCi0gKiBSdW4gYSBxdWVy eSwgcmV0dXJuIHRoZSByZXN1bHRzLCBleGl0IHByb2dyYW0gb24gZmFpbHVyZS4KLSAqLwotc3Rh dGljIFBHcmVzdWx0ICoKLWV4ZWN1dGVRdWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1 ZXJ5KQotewotCVBHcmVzdWx0ICAgKnJlczsKLQotCXBnX2xvZ19pbmZvKCJleGVjdXRpbmcgJXMi LCBxdWVyeSk7Ci0KLQlyZXMgPSBQUWV4ZWMoY29ubiwgcXVlcnkpOwotCWlmICghcmVzIHx8Ci0J CVBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQotCXsKLQkJcGdfbG9nX2Vy cm9yKCJxdWVyeSBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwotCQlwZ19sb2df ZXJyb3JfZGV0YWlsKCJRdWVyeSB3YXM6ICVzIiwgcXVlcnkpOwotCQlQUWZpbmlzaChjb25uKTsK LQkJZXhpdF9uaWNlbHkoMSk7Ci0JfQotCi0JcmV0dXJuIHJlczsKLX0KLQogLyoKICAqIEFzIGFi b3ZlIGZvciBhIFNRTCBjb21tYW5kICh3aGljaCByZXR1cm5zIG5vdGhpbmcpLgogICovCkBAIC0x OTk0LDMgKzE4NTksNTggQEAgcmVhZF9kdW1wYWxsX2ZpbHRlcnMoY29uc3QgY2hhciAqZmlsZW5h bWUsIFNpbXBsZVN0cmluZ0xpc3QgKnBhdHRlcm4pCiAKIAlmaWx0ZXJfZnJlZSgmZnN0YXRlKTsK IH0KKworLyoKKyAqIGNyZWF0ZV9vcl9vcGVuX2RpcgorICoKKyAqIFRoaXMgd2lsbCBjcmVhdGUg YSBuZXcgZGlyZWN0b3J5IHdpdGggZ2l2ZW4gbmFtZS4gIElmIHRoZXJlIGlzIGFscmVhZHkgc2Ft ZQorICogZW1wdHkgZGlyZWN0b3J5IGV4aXN0LCB0aGVuIHVzZSBpdC4KKyAqLworc3RhdGljIHZv aWQKK2NyZWF0ZV9vcl9vcGVuX2Rpcihjb25zdCBjaGFyICpkaXJuYW1lKQoreworCXN0cnVjdCBz dGF0CQlzdDsKKwlib29sCQkJaXNfZW1wdHkgPSBmYWxzZTsKKworCS8qIHdlIGFjY2VwdCBhbiBl bXB0eSBleGlzdGluZyBkaXJlY3RvcnkgKi8KKwlpZiAoc3RhdChkaXJuYW1lLCAmc3QpID09IDAg JiYgU19JU0RJUihzdC5zdF9tb2RlKSkKKwl7CisJCURJUgkJKmRpciA9IG9wZW5kaXIoZGlybmFt ZSk7CisKKwkJaWYgKGRpcikKKwkJeworCQkJc3RydWN0IGRpcmVudAkqZDsKKworCQkJaXNfZW1w dHkgPSB0cnVlOworCisJCQl3aGlsZSAoZXJybm8gPSAwLCAoZCA9IHJlYWRkaXIoZGlyKSkpCisJ CQl7CisJCQkJaWYgKHN0cmNtcChkLT5kX25hbWUsICIuIikgIT0gMCAmJiBzdHJjbXAoZC0+ZF9u YW1lLCAiLi4iKSAhPSAwKQorCQkJCXsKKwkJCQkJaXNfZW1wdHkgPSBmYWxzZTsKKwkJCQkJYnJl YWs7CisJCQkJfQorCQkJfQorCisJCQlpZiAoZXJybm8pCisJCQkJcGdfZmF0YWwoImNvdWxkIG5v dCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCWRpcm5hbWUpOworCisJCQlpZiAo Y2xvc2VkaXIoZGlyKSkKKwkJCQlwZ19mYXRhbCgiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBc IiVzXCI6ICVtIiwKKwkJCQkJCWRpcm5hbWUpOworCQl9CisKKwkJaWYoIWlzX2VtcHR5KQorCQl7 CisJCQlwZ19sb2dfZXJyb3IoImRpcmVjdG9yeSBcIiVzXCIgZXhpc3RzIGJ1dCBpcyBub3QgZW1w dHkiLCBkaXJuYW1lKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJJZiB5b3Ugd2FudCB0byBkdW1w IGRhdGEgb24gdGhpcyBkaXJlY3RvcnksIGVpdGhlciByZW1vdmUgb3IgZW1wdHkgIgorCQkJCQkJ CSAgInRoaXMgZGlyZWN0b3J5IFwiJXNcIiBvciBydW4gJXMgIgorCQkJCQkJCSAgIndpdGggYW4g YXJndW1lbnQgb3RoZXIgdGhhbiBcIiVzXCIuIiwKKwkJCQkJCQkgIGRpcm5hbWUsIHByb2duYW1l LCBkaXJuYW1lKTsKKwkJCWV4aXRfbmljZWx5KDEpOworCQl9CisJfQorCWVsc2UgaWYgKG1rZGly KGRpcm5hbWUsIDA3MDApIDwgMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0 b3J5IFwiJXNcIjogJW0iLCBkaXJuYW1lKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19yZXN0b3JlLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCmluZGV4IDg4YWUz OWQ5MzguLjc5ZjYxMzk1YWUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3Jl LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwpAQCAtMiw3ICsyLDcgQEAKICAq CiAgKiBwZ19yZXN0b3JlLmMKICAqCXBnX3Jlc3RvcmUgaXMgYW4gdXRpbGl0eSBleHRyYWN0aW5n IHBvc3RncmVzIGRhdGFiYXNlIGRlZmluaXRpb25zCi0gKglmcm9tIGEgYmFja3VwIGFyY2hpdmUg Y3JlYXRlZCBieSBwZ19kdW1wIHVzaW5nIHRoZSBhcmNoaXZlcgorICoJZnJvbSBhIGJhY2t1cCBh cmNoaXZlIGNyZWF0ZWQgYnkgcGdfZHVtcC9wZ19kdW1wYWxsIHVzaW5nIHRoZSBhcmNoaXZlcgog ICoJaW50ZXJmYWNlLgogICoKICAqCXBnX3Jlc3RvcmUgd2lsbCByZWFkIHRoZSBiYWNrdXAgYXJj aGl2ZSBhbmQKQEAgLTQxLDI3ICs0MSw2NyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAK ICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaWZkZWYgSEFWRV9U RVJNSU9TX0gKICNpbmNsdWRlIDx0ZXJtaW9zLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgImNvbW1v bi9jb25uZWN0LmgiCisjaW5jbHVkZSAiY29tcHJlc3NfaW8uaCIKKyNpbmNsdWRlICJjb21tb24v c3RyaW5nLmgiCisjaW5jbHVkZSAiY29tbW9uX2R1bXBhbGxfcmVzdG9yZS5oIgogI2luY2x1ZGUg ImZlX3V0aWxzL29wdGlvbl91dGlscy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGls cy5oIgogI2luY2x1ZGUgImZpbHRlci5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5j bHVkZSAicGFyYWxsZWwuaCIKKyNpbmNsdWRlICJwZ19iYWNrdXBfYXJjaGl2ZXIuaCIKICNpbmNs dWRlICJwZ19iYWNrdXBfdXRpbHMuaCIKIAordHlwZWRlZiBzdHJ1Y3QgU2ltcGxlRGF0YWJhc2VP aWRMaXN0Q2VsbAoreworCXN0cnVjdCBTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsCSpuZXh0Owor CU9pZAkJCQkJCQkJCWRiX29pZDsKKwljb25zdCBjaGFyCQkJCQkJCSpkYl9uYW1lOworfSBTaW1w bGVEYXRhYmFzZU9pZExpc3RDZWxsOworCit0eXBlZGVmIHN0cnVjdCBTaW1wbGVEYXRhYmFzZU9p ZExpc3QKK3sKKwlTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsICpoZWFkOworCVNpbXBsZURhdGFi YXNlT2lkTGlzdENlbGwgKnRhaWw7Cit9IFNpbXBsZURhdGFiYXNlT2lkTGlzdDsKKworc3RhdGlj IHZvaWQKK3NpbXBsZV9kYl9vaWRfbGlzdF9hcHBlbmQoU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICps aXN0LCBPaWQgZGJfb2lkLCBjb25zdCBjaGFyICpkYm5hbWUpOworCiBzdGF0aWMgdm9pZCB1c2Fn ZShjb25zdCBjaGFyICpwcm9nbmFtZSk7CiBzdGF0aWMgdm9pZCByZWFkX3Jlc3RvcmVfZmlsdGVy cyhjb25zdCBjaGFyICpmaWxlbmFtZSwgUmVzdG9yZU9wdGlvbnMgKm9wdHMpOworc3RhdGljIGJv b2wgSXNGaWxlRXhpc3RzSW5EaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpm aWxlbmFtZSk7CitzdGF0aWMgYm9vbCByZXN0b3JlT25lRGF0YWJhc2UoY29uc3QgY2hhciAqaW5w dXRGaWxlU3BlYywKKwkJUmVzdG9yZU9wdGlvbnMgKm9wdHMsIGludCBudW1Xb3JrZXJzLCBib29s IGFwcGVuZF9kYXRhKTsKK3N0YXRpYyBpbnQgUmVhZE9uZVN0YXRlbWVudChTdHJpbmdJbmZvIGlu QnVmLCBGSUxFICpwZmlsZSk7CitzdGF0aWMgaW50IHJlc3RvcmVBbGxEYXRhYmFzZXMoUEdjb25u ICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwKKwlTaW1wbGVTdHJpbmdMaXN0IGRiX2V4 Y2x1ZGVfcGF0dGVybnMsIFJlc3RvcmVPcHRpb25zICpvcHRzLCBpbnQgbnVtV29ya2Vycyk7Citz dGF0aWMgdm9pZCBleGVjdXRlX2dsb2JhbF9zcWxfY29tbWFuZHMoUEdjb25uICpjb25uLCBjb25z dCBjaGFyICpkdW1wZGlycGF0aCwKKwkJY29uc3QgY2hhciAqb3V0ZmlsZSk7CitzdGF0aWMgaW50 IGZpbHRlcl9kYm5hbWVzX2Zvcl9yZXN0b3JlKFBHY29ubiAqY29ubiwKKwkJU2ltcGxlRGF0YWJh c2VPaWRMaXN0ICpkYm5hbWVfb2lkX2xpc3QsIFNpbXBsZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9w YXR0ZXJucyk7CitzdGF0aWMgaW50IGdldF9kYm5hbWVfb2lkX2xpc3RfZnJvbV9tZmlsZShjb25z dCBjaGFyICpkdW1wZGlycGF0aCwKKwkJU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpkYm5hbWVfb2lk X2xpc3QpOworc3RhdGljIHZvaWQgc2ltcGxlX2RiX29pZF9saXN0X2FwcGVuZChTaW1wbGVEYXRh YmFzZU9pZExpc3QgKmxpc3QsIE9pZCBkYl9vaWQsCisJCWNvbnN0IGNoYXIgKmRibmFtZSk7Citz dGF0aWMgYm9vbCBpc19mdWxsX3BhdHRlcm4oUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzdHIs IGNvbnN0IGNoYXIgKnB0cm4pOworc3RhdGljIHZvaWQgc2ltcGxlX3N0cmluZ19mdWxsX2xpc3Rf ZGVsZXRlKFNpbXBsZVN0cmluZ0xpc3QgKmxpc3QpOworc3RhdGljIHZvaWQgc2ltcGxlX2RiX29p ZF9mdWxsX2xpc3RfZGVsZXRlKFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqbGlzdCk7CitzdGF0aWMg dm9pZCBzaW1wbGVfZGJfb2lkX2xpc3RfZGVsZXRlKFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqbGlz dCwKKwkJU2ltcGxlRGF0YWJhc2VPaWRMaXN0Q2VsbCAqY2VsbCwgU2ltcGxlRGF0YWJhc2VPaWRM aXN0Q2VsbCAqcHJldik7CiAKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJ UmVzdG9yZU9wdGlvbnMgKm9wdHM7CiAJaW50CQkJYzsKLQlpbnQJCQlleGl0X2NvZGU7CiAJaW50 CQkJbnVtV29ya2VycyA9IDE7Ci0JQXJjaGl2ZSAgICAqQUg7CiAJY2hhcgkgICAqaW5wdXRGaWxl U3BlYzsKIAlzdGF0aWMgaW50CWRpc2FibGVfdHJpZ2dlcnMgPSAwOwogCXN0YXRpYyBpbnQJZW5h YmxlX3Jvd19zZWN1cml0eSA9IDA7CkBAIC03NywxMSArMTE3LDE0IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCXN0YXRpYyBpbnQJc3RyaWN0X25hbWVzID0gMDsKIAlib29sCQlkYXRh X29ubHkgPSBmYWxzZTsKIAlib29sCQlzY2hlbWFfb25seSA9IGZhbHNlOworCVNpbXBsZVN0cmlu Z0xpc3QgICAgZGJfZXhjbHVkZV9wYXR0ZXJucyA9IHtOVUxMLCBOVUxMfTsKKwlib29sCQkJCWds b2JhbHNfb25seSA9IGZhbHNlOwogCiAJc3RydWN0IG9wdGlvbiBjbWRvcHRzW10gPSB7CiAJCXsi Y2xlYW4iLCAwLCBOVUxMLCAnYyd9LAogCQl7ImNyZWF0ZSIsIDAsIE5VTEwsICdDJ30sCiAJCXsi ZGF0YS1vbmx5IiwgMCwgTlVMTCwgJ2EnfSwKKwkJeyJnbG9iYWxzLW9ubHkiLCAwLCBOVUxMLCAn Zyd9LAogCQl7ImRibmFtZSIsIDEsIE5VTEwsICdkJ30sCiAJCXsiZXhpdC1vbi1lcnJvciIsIDAs IE5VTEwsICdlJ30sCiAJCXsiZXhjbHVkZS1zY2hlbWEiLCAxLCBOVUxMLCAnTid9LApAQCAtMTI4 LDYgKzE3MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7Im5vLXNlY3VyaXR5 LWxhYmVscyIsIG5vX2FyZ3VtZW50LCAmbm9fc2VjdXJpdHlfbGFiZWxzLCAxfSwKIAkJeyJuby1z dWJzY3JpcHRpb25zIiwgbm9fYXJndW1lbnQsICZub19zdWJzY3JpcHRpb25zLCAxfSwKIAkJeyJm aWx0ZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNH0sCisJCXsiZXhjbHVkZS1kYXRhYmFz ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA2fSwKIAogCQl7TlVMTCwgMCwgTlVMTCwgMH0K IAl9OwpAQCAtMTU2LDcgKzIwMCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9 CiAJfQogCi0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImFjQ2Q6ZWY6Rjpo Okk6ajpsTDpuOk46T3A6UDpSc1M6dDpUOlU6dndXeDEiLAorCXdoaWxlICgoYyA9IGdldG9wdF9s b25nKGFyZ2MsIGFyZ3YsICJhQWNDZDplZjpGOmdoOkk6ajpsTDpuOk46T3A6UDpSc1M6dDpUOlU6 dndXeDEiLAogCQkJCQkJCWNtZG9wdHMsIE5VTEwpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykK QEAgLTE4MywxMSArMjI3LDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWlm IChzdHJsZW4ob3B0YXJnKSAhPSAwKQogCQkJCQlvcHRzLT5mb3JtYXROYW1lID0gcGdfc3RyZHVw KG9wdGFyZyk7CiAJCQkJYnJlYWs7CisJCQljYXNlICdnJzoKKwkJCQkvKiByZXN0b3JlIG9ubHkg Z2xvYmFsLmRhdCBmaWxlIGZyb20gZGlyZWN0b3J5ICovCisJCQkJZ2xvYmFsc19vbmx5ID0gdHJ1 ZTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ2gnOgogCQkJCWlmIChzdHJsZW4ob3B0YXJnKSAhPSAw KQogCQkJCQlvcHRzLT5jcGFyYW1zLnBnaG9zdCA9IHBnX3N0cmR1cChvcHRhcmcpOwogCQkJCWJy ZWFrOwotCiAJCQljYXNlICdqJzoJCQkvKiBudW1iZXIgb2YgcmVzdG9yZSBqb2JzICovCiAJCQkJ aWYgKCFvcHRpb25fcGFyc2VfaW50KG9wdGFyZywgIi1qLy0tam9icyIsIDEsCiAJCQkJCQkJCQkg IFBHX01BWF9KT0JTLApAQCAtMzAyLDYgKzM0OSwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkJCQkJZXhpdCgxKTsKIAkJCQlvcHRzLT5leGl0X29uX2Vycm9yID0gdHJ1ZTsKIAkJ CQlicmVhazsKKwkJCWNhc2UgNjoKKwkJCQkvKiBsaXN0IG9mIGRhdGFiYXNlcyBwYXR0ZXJucyB0 aG9zZSBuZWVkcyB0byBza2lwIHdoaWxlIHJlc3RvcmluZyAqLworCQkJCXNpbXBsZV9zdHJpbmdf bGlzdF9hcHBlbmQoJmRiX2V4Y2x1ZGVfcGF0dGVybnMsIG9wdGFyZyk7CisJCQkJYnJlYWs7CiAK IAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxh aW50ICovCkBAIC0zMjksNiArMzgwLDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CWlmICghb3B0cy0+Y3BhcmFtcy5kYm5hbWUgJiYgIW9wdHMtPmZpbGVuYW1lICYmICFvcHRzLT50 b2NTdW1tYXJ5KQogCQlwZ19mYXRhbCgib25lIG9mIC1kLy0tZGJuYW1lIGFuZCAtZi8tLWZpbGUg bXVzdCBiZSBzcGVjaWZpZWQiKTsKIAorCWlmIChkYl9leGNsdWRlX3BhdHRlcm5zLmhlYWQgIT0g TlVMTCAmJiBnbG9iYWxzX29ubHkpCisJeworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbiAtLWV4Y2x1 ZGUtZGF0YWJhc2UgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtZy8tLWdsb2JhbHMtb25s eSIpOworCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5m b3JtYXRpb24uIiwgcHJvZ25hbWUpOworCQlleGl0X25pY2VseSgxKTsKKwl9CisKIAkvKiBTaG91 bGQgZ2V0IGF0IG1vc3Qgb25lIG9mIC1kIGFuZCAtZiwgZWxzZSB1c2VyIGlzIGNvbmZ1c2VkICov CiAJaWYgKG9wdHMtPmNwYXJhbXMuZGJuYW1lKQogCXsKQEAgLTM4MywyOCArNDQxLDgwIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9wdHMtPmZvcm1hdE5hbWUpCiAJewot CQlzd2l0Y2ggKG9wdHMtPmZvcm1hdE5hbWVbMF0pCisJCW9wdHMtPmZvcm1hdCA9IHBhcnNlRHVt cEZvcm1hdChvcHRzLT5mb3JtYXROYW1lKTsKKworCQkvKiBQbGFpbiBmb3JtYXQgaXMgbm90IHN1 cHBvcnRlZCBmb3IgcGdfcmVzdG9yZS4gKi8KKwkJaWYgKG9wdHMtPmZvcm1hdCA9PSBhcmNoTnVs bCkKIAkJewotCQkJY2FzZSAnYyc6Ci0JCQljYXNlICdDJzoKLQkJCQlvcHRzLT5mb3JtYXQgPSBh cmNoQ3VzdG9tOwotCQkJCWJyZWFrOworCQkJcGdfZmF0YWwoInVucmVjb2duaXplZCBhcmNoaXZl IGZvcm1hdCBcIiVzXCI7IHBsZWFzZSBzcGVjaWZ5IFwiY1wiLCBcImRcIiwgb3IgXCJ0XCIiLAor CQkJCQlvcHRzLT5mb3JtYXROYW1lKTsKKwkJfQorCX0KIAotCQkJY2FzZSAnZCc6Ci0JCQljYXNl ICdEJzoKLQkJCQlvcHRzLT5mb3JtYXQgPSBhcmNoRGlyZWN0b3J5OwotCQkJCWJyZWFrOworCS8q CisJICogSWYgdG9jLmRhdCBmaWxlIGRvZXMgbm90IHByZXNlbnQgaW4gY3VycmVudCBwYXRoLCB0 aGVuIGNoZWNrIGZvcgorCSAqIGdsb2JhbC5kYXQuICBJZiBnbG9iYWwuZGF0IGZpbGUgaXMgcHJl c2VudCwgdGhlbiByZXN0b3JlIGFsbCB0aGUKKwkgKiBkYXRhYmFzZXMgZnJvbSBtYXAuZGF0KGlm IGV4aXN0KSBmaWxlIGxpc3QgYW5kIHNraXAgcmVzdG9yaW5nIGZvcgorCSAqIC0tZXhjbHVkZS1k YXRhYmFzZSBwYXR0ZXJucy4KKwkgKi8KKwlpZiAoaW5wdXRGaWxlU3BlYyAhPSBOVUxMICYmCisJ CQkhSXNGaWxlRXhpc3RzSW5EaXJlY3RvcnkoaW5wdXRGaWxlU3BlYywgInRvYy5kYXQiKSkKKwl7 CisJCS8qIElmIGdsb2JhbC5kYXQgaXMgZXhpc3QsIHRoZW4gcHJvY2VzcyBpdC4gKi8KKwkJaWYg KElzRmlsZUV4aXN0c0luRGlyZWN0b3J5KHBnX3N0cmR1cChpbnB1dEZpbGVTcGVjKSwgImdsb2Jh bC5kYXQiKSkKKwkJeworCQkJUEdjb25uCSpjb25uID0gTlVMTDsgLyogQ29ubmVjdGlvbiB0byBy ZXN0b3JlIGdsb2JhbCBzcWwgY29tbWFuZHMuICovCisJCQlpbnQJCWV4aXRfY29kZSA9IDA7CiAK LQkJCWNhc2UgJ3QnOgotCQkJY2FzZSAnVCc6Ci0JCQkJb3B0cy0+Zm9ybWF0ID0gYXJjaFRhcjsK LQkJCQlicmVhazsKKwkJCS8qIENvbm5lY3QgdG8gZGF0YWJhc2UgdG8gZXhlY3V0ZSBnbG9iYWwg c3FsIGNvbW1hbmRzIGZyb20gZ2xvYmFsLmRhdCBmaWxlLiAqLworCQkJaWYgKG9wdHMtPmNwYXJh bXMuZGJuYW1lKQorCQkJeworCQkJCWNvbm4gPSBjb25uZWN0RGF0YWJhc2Uob3B0cy0+Y3BhcmFt cy5kYm5hbWUsIE5VTEwsIG9wdHMtPmNwYXJhbXMucGdob3N0LAorCQkJCQkJb3B0cy0+Y3BhcmFt cy5wZ3BvcnQsIG9wdHMtPmNwYXJhbXMudXNlcm5hbWUsIFRSSV9ERUZBVUxULCBmYWxzZSwKKwkJ CQkJCXByb2duYW1lLCBOVUxMLCBOVUxMKTsKIAotCQkJZGVmYXVsdDoKLQkJCQlwZ19mYXRhbCgi dW5yZWNvZ25pemVkIGFyY2hpdmUgZm9ybWF0IFwiJXNcIjsgcGxlYXNlIHNwZWNpZnkgXCJjXCIs IFwiZFwiLCBvciBcInRcIiIsCi0JCQkJCQkgb3B0cy0+Zm9ybWF0TmFtZSk7Ci0JCX0KLQl9CisJ CQkJaWYgKCFjb25uKQorCQkJCQlwZ19mYXRhbCgiY291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJh c2UgXCIlc1wiIiwgb3B0cy0+Y3BhcmFtcy5kYm5hbWUpOworCQkJfQorCisJCQkvKiBPcGVuIGds b2JhbC5kYXQgZmlsZSBhbmQgZXhlY3V0ZS9hcHBlbmQgYWxsIHRoZSBnbG9iYWwgc3FsIGNvbW1h bmRzLiAqLworCQkJZXhlY3V0ZV9nbG9iYWxfc3FsX2NvbW1hbmRzKGNvbm4sIGlucHV0RmlsZVNw ZWMsIG9wdHMtPmZpbGVuYW1lKTsKKworCQkJLyogSWYgZ2xvYmFscy1vbmx5LCB0aGVuIHJldHVy biBmcm9tIGhlcmUuICovCisJCQlpZiAoZ2xvYmFsc19vbmx5KQorCQkJeworCQkJCWlmIChjb25u KQorCQkJCQlQUWZpbmlzaChjb25uKTsKKwkJCQlwZ19sb2dfaW5mbygiZGF0YWJhc2VzIHJlc3Rv cmluZyBpcyBza2lwcGVkIGFzIC1nLy0tZ2xvYmFscy1vbmx5IG9wdGlvbiBpcyBzcGVjaWZpZWQi KTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBOb3cgcmVzdG9yZSBhbGwgdGhlIGRhdGFi YXNlcyBmcm9tIG1hcC5kYXQgZmlsZS4gKi8KKwkJCQlleGl0X2NvZGUgPSByZXN0b3JlQWxsRGF0 YWJhc2VzKGNvbm4sIGlucHV0RmlsZVNwZWMsIGRiX2V4Y2x1ZGVfcGF0dGVybnMsCisJCQkJCQlv cHRzLCBudW1Xb3JrZXJzKTsKKwkJCX0KKworCQkJLyogRnJlZSBkYiBwYXR0ZXJuIGxpc3QuICov CisJCQlzaW1wbGVfc3RyaW5nX2Z1bGxfbGlzdF9kZWxldGUoJmRiX2V4Y2x1ZGVfcGF0dGVybnMp OworCisJCQlyZXR1cm4gZXhpdF9jb2RlOworCQl9LyogZW5kIGlmICovCisJfS8qIGVuZCBpZiAq LworCisJcmV0dXJuIHJlc3RvcmVPbmVEYXRhYmFzZShpbnB1dEZpbGVTcGVjLCBvcHRzLCBudW1X b3JrZXJzLCBmYWxzZSk7Cit9CisKKy8qCisgKiByZXN0b3JlT25lRGF0YWJhc2UKKyAqCisgKiBU aGlzIHdpbGwgcmVzdG9yZSBvbmUgZGF0YWJhc2UgdXNpbmcgdG9jLmRhdCBmaWxlLgorICovCitz dGF0aWMgYm9vbAorcmVzdG9yZU9uZURhdGFiYXNlKGNvbnN0IGNoYXIgKmlucHV0RmlsZVNwZWMs IFJlc3RvcmVPcHRpb25zICpvcHRzLAorCQlpbnQgbnVtV29ya2VycywgYm9vbCBhcHBlbmRfZGF0 YSkKK3sKKwlBcmNoaXZlCQkqQUg7CisJYm9vbAkJZXhpdF9jb2RlOwogCiAJQUggPSBPcGVuQXJj aGl2ZShpbnB1dEZpbGVTcGVjLCBvcHRzLT5mb3JtYXQpOwogCkBAIC00MzEsMTEgKzU0MSwxMSBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlBSC0+bnVtV29ya2VycyA9IG51bVdvcmtl cnM7CiAKIAlpZiAob3B0cy0+dG9jU3VtbWFyeSkKLQkJUHJpbnRUT0NTdW1tYXJ5KEFIKTsKKwkJ UHJpbnRUT0NTdW1tYXJ5KEFILCBhcHBlbmRfZGF0YSk7CiAJZWxzZQogCXsKIAkJUHJvY2Vzc0Fy Y2hpdmVSZXN0b3JlT3B0aW9ucyhBSCk7Ci0JCVJlc3RvcmVBcmNoaXZlKEFIKTsKKwkJUmVzdG9y ZUFyY2hpdmUoQUgsIGFwcGVuZF9kYXRhKTsKIAl9CiAKIAkvKiBkb25lLCBwcmludCBhIHN1bW1h cnkgb2YgaWdub3JlZCBlcnJvcnMgKi8KQEAgLTQ3MSw2ICs1ODEsNyBAQCB1c2FnZShjb25zdCBj aGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAtYywgLS1jbGVhbiAgICAgICAgICAgICAgICAg IGNsZWFuIChkcm9wKSBkYXRhYmFzZSBvYmplY3RzIGJlZm9yZSByZWNyZWF0aW5nXG4iKSk7CiAJ cHJpbnRmKF8oIiAgLUMsIC0tY3JlYXRlICAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIHRhcmdl dCBkYXRhYmFzZVxuIikpOwogCXByaW50ZihfKCIgIC1lLCAtLWV4aXQtb24tZXJyb3IgICAgICAg ICAgZXhpdCBvbiBlcnJvciwgZGVmYXVsdCBpcyB0byBjb250aW51ZVxuIikpOworCXByaW50Zihf KCIgIC1nLCAtLWdsb2JhbHMtb25seSAgICAgICAgICAgcmVzdG9yZSBvbmx5IGdsb2JhbCBvYmpl Y3RzLCBubyBkYXRhYmFzZXNcbiIpKTsKIAlwcmludGYoXygiICAtSSwgLS1pbmRleD1OQU1FICAg ICAgICAgICAgIHJlc3RvcmUgbmFtZWQgaW5kZXhcbiIpKTsKIAlwcmludGYoXygiICAtaiwgLS1q b2JzPU5VTSAgICAgICAgICAgICAgIHVzZSB0aGlzIG1hbnkgcGFyYWxsZWwgam9icyB0byByZXN0 b3JlXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUwsIC0tdXNlLWxpc3Q9RklMRU5BTUUgICAgICB1c2Ug dGFibGUgb2YgY29udGVudHMgZnJvbSB0aGlzIGZpbGUgZm9yXG4iCkBAIC00ODMsNiArNTk0LDcg QEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLVMsIC0tc3VwZXJ1 c2VyPU5BTUUgICAgICAgICBzdXBlcnVzZXIgdXNlciBuYW1lIHRvIHVzZSBmb3IgZGlzYWJsaW5n IHRyaWdnZXJzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXQsIC0tdGFibGU9TkFNRSAgICAgICAgICAg ICByZXN0b3JlIG5hbWVkIHJlbGF0aW9uICh0YWJsZSwgdmlldywgZXRjLilcbiIpKTsKIAlwcmlu dGYoXygiICAtVCwgLS10cmlnZ2VyPU5BTUUgICAgICAgICAgIHJlc3RvcmUgbmFtZWQgdHJpZ2dl clxuIikpOworCXByaW50ZihfKCIgIC0tZXhjbHVkZS1kYXRhYmFzZT1QQVRURVJOICAgZXhjbHVk ZSBkYXRhYmFzZXMgd2hvc2UgbmFtZSBtYXRjaGVzIHdpdGggcGF0dGVyblxuIikpOwogCXByaW50 ZihfKCIgIC14LCAtLW5vLXByaXZpbGVnZXMgICAgICAgICAgc2tpcCByZXN0b3JhdGlvbiBvZiBh Y2Nlc3MgcHJpdmlsZWdlcyAoZ3JhbnQvcmV2b2tlKVxuIikpOwogCXByaW50ZihfKCIgIC0xLCAt LXNpbmdsZS10cmFuc2FjdGlvbiAgICAgcmVzdG9yZSBhcyBhIHNpbmdsZSB0cmFuc2FjdGlvblxu IikpOwogCXByaW50ZihfKCIgIC0tZGlzYWJsZS10cmlnZ2VycyAgICAgICAgICAgZGlzYWJsZSB0 cmlnZ2VycyBkdXJpbmcgZGF0YS1vbmx5IHJlc3RvcmVcbiIpKTsKQEAgLTYyMSwzICs3MzMsNTQy IEBAIHJlYWRfcmVzdG9yZV9maWx0ZXJzKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBSZXN0b3JlT3B0 aW9ucyAqb3B0cykKIAogCWZpbHRlcl9mcmVlKCZmc3RhdGUpOwogfQorCisvKgorICogSXNGaWxl RXhpc3RzSW5EaXJlY3RvcnkKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgZmlsZSBleGlzdCBpbiBj dXJyZW50IGRpcmVjdG9yeS4KKyAqLworc3RhdGljIGJvb2wKK0lzRmlsZUV4aXN0c0luRGlyZWN0 b3J5KGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJc3RydWN0IHN0 YXQJCQlzdDsKKwljaGFyCQkJCWJ1ZltNQVhQR1BBVEhdOworCisJaWYgKHNucHJpbnRmKGJ1Ziwg TUFYUEdQQVRILCAiJXMvJXMiLCBkaXIsIGZpbGVuYW1lKSA+PSBNQVhQR1BBVEgpCisJCXBnX2Zh dGFsKCJkaXJlY3RvcnkgbmFtZSB0b28gbG9uZzogXCIlc1wiIiwgZGlyKTsKKworCXJldHVybiAo c3RhdChidWYsICZzdCkgPT0gMCAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKTsKK30KKworLyoKKyAq IFJlYWRPbmVTdGF0ZW1lbnQKKyAqCisgKiBUaGlzIHdpbGwgc3RhcnQgcmVhZGluZyBmcm9tIHBh c3NlZCBmaWxlIHBvaW50ZXIgdXNpbmcgZmdldGMgYW5kIHJlYWQgdGlsbAorICogc2VtaWNvbG9u KHNxbCBzdGF0ZW1lbnQgdGVybWluYXRvciBmb3IgZ2xvYmFsLnNxbCBmaWxlKQorICoKKyAqIEVP RiBpcyByZXR1cm5lZCBpZiBlbmQtb2YtZmlsZSBpbnB1dCBpcyBzZWVuOyB0aW1lIHRvIHNodXQg ZG93bi4KKyAqLworCitzdGF0aWMgaW50CitSZWFkT25lU3RhdGVtZW50KFN0cmluZ0luZm8gaW5C dWYsIEZJTEUgKnBmaWxlKQoreworCWludAkJCWM7IC8qIGNoYXJhY3RlciByZWFkIGZyb20gZ2V0 YygpICovCisKKwlyZXNldFN0cmluZ0luZm8oaW5CdWYpOworCisJLyoKKwkgKiBSZWFkIGNoYXJh Y3RlcnMgdW50aWwgRU9GIG9yIHRoZSBhcHByb3ByaWF0ZSBkZWxpbWl0ZXIgaXMgc2Vlbi4KKwkg Ki8KKwl3aGlsZSAoKGMgPSBmZ2V0YyhwZmlsZSkpICE9IEVPRikKKwl7CisJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKGluQnVmLCAoY2hhcikgYyk7CisKKwkJaWYgKGMgPT0gJ1xuJykKKwkJeworCQkJ aWYoaW5CdWYtPmxlbiA+IDEgJiYKKwkJCQkJaW5CdWYtPmRhdGFbaW5CdWYtPmxlbiAtIDJdID09 ICc7JykKKwkJCQlicmVhazsKKwkJCWVsc2UKKwkJCQljb250aW51ZTsKKwkJfQorCX0KKworCS8q IE5vIGlucHV0IGJlZm9yZSBFT0Ygc2lnbmFsIG1lYW5zIHRpbWUgdG8gcXVpdC4gKi8KKwlpZiAo YyA9PSBFT0YgJiYgaW5CdWYtPmxlbiA9PSAwKQorCQlyZXR1cm4gRU9GOworCisJLyogQWRkICdc MCcgdG8gbWFrZSBpdCBsb29rIHRoZSBzYW1lIGFzIG1lc3NhZ2UgY2FzZS4gKi8KKwlhcHBlbmRT dHJpbmdJbmZvQ2hhcihpbkJ1ZiwgKGNoYXIpICdcMCcpOworCisJcmV0dXJuICdRJzsKK30KKwor LyoKKyAqIGZpbHRlcl9kYm5hbWVzX2Zvcl9yZXN0b3JlCisgKgorICogVGhpcyB3aWxsIHJlbW92 ZSBuYW1lcyBmcm9tIGFsbCBkYmxpc3QgdGhhdCBhcmUgZ2l2ZW4gd2l0aCBleGNsdWRlLWRhdGFi YXNlCisgKiBvcHRpb24uCisgKgorICogcmV0dXJucyBudW1iZXIgb2YgZGJuYW1lcyB0aG9zZSB3 aWxsIGJlIHJlc3RvcmVkLgorICovCitzdGF0aWMgaW50CitmaWx0ZXJfZGJuYW1lc19mb3JfcmVz dG9yZShQR2Nvbm4gKmNvbm4sIFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqZGJuYW1lX29pZF9saXN0 LAorCQlTaW1wbGVTdHJpbmdMaXN0IGRiX2V4Y2x1ZGVfcGF0dGVybnMpCit7CisJU2ltcGxlRGF0 YWJhc2VPaWRMaXN0Q2VsbAkqZGJvaWRfY2VsbCA9IGRibmFtZV9vaWRfbGlzdC0+aGVhZDsKKwlT aW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsCSpkYm9pZHByZWNlbGwgPSBOVUxMOworCWludAkJCQkJ CQljb3VudF9kYiA9IDA7CisKKwkvKiBSZXR1cm4gMCBpZiB0aGVyZSBpcyBubyBkYiB0byByZXN0 b3JlLiAqLworCWlmIChkYm9pZF9jZWxsID09IE5VTEwpCisJCXJldHVybiAwOworCisJLyogUHJv Y2VzcyBvbmUgYnkgb25lIGFsbCBkYm5hbWVzIGFuZCBpZiBuZWVkcyB0byBza2lwIHJlc3Rvcmlu Zy4gKi8KKwl3aGlsZSAoZGJvaWRfY2VsbCAhPSBOVUxMKQorCXsKKwkJYm9vbAkJCQkJCXNraXBf ZGJfcmVzdG9yZSA9IGZhbHNlOworCQlTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsCSpuZXh0ID0g ZGJvaWRfY2VsbC0+bmV4dDsKKworCQkvKiBOb3cgbWF0Y2ggdGhpcyBkYm5hbWUgd2l0aCBleGNs dWRlLWRhdGFiYXNlIGxpc3QuICovCisJCWZvciAoU2ltcGxlU3RyaW5nTGlzdENlbGwgKmNlbGxk YiA9IGRiX2V4Y2x1ZGVfcGF0dGVybnMuaGVhZDsgY2VsbGRiOyBjZWxsZGIgPSBjZWxsZGItPm5l eHQpCisJCXsKKwkJCWlmICgoY29ubiAmJiBpc19mdWxsX3BhdHRlcm4oY29ubiwgZGJvaWRfY2Vs bC0+ZGJfbmFtZSwgY2VsbGRiLT52YWwpKSB8fAorCQkJCQkoIWNvbm4gJiYgcGdfc3RyY2FzZWNt cChkYm9pZF9jZWxsLT5kYl9uYW1lLCBjZWxsZGItPnZhbCkgPT0gMCkpCisJCQl7CisJCQkJLyoK KwkJCQkgKiBBcyB3ZSBuZWVkIHRvIHNraXAgdGhpcyBkYm5hbWUgc28gc2V0IGZsYWcgdG8gcmVt b3ZlIGl0IGZyb20KKwkJCQkgKiBsaXN0LgorCQkJCSAqCisJCQkJICogTm90ZTogd2UgY2FuJ3Qg cmVtb3ZlIHRoaXMgcGF0dGVybiBmcm9tIHNraXAgbGlzdCBhcyB3ZQorCQkJCSAqIG1pZ2h0IGhh dmUgbXVsdGlwbGUgZGF0YWJhc2UgbmFtZSB3aXRoIHRoaXMgc2FtZSBwYXR0ZXJuLgorCQkJCSAq LworCQkJCXNraXBfZGJfcmVzdG9yZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwor CQkvKiBJbmNyZW1lbnQgY291bnQgaWYgZGIgbmVlZHMgdG8gYmUgcmVzdG9yZWQuICovCisJCWlm IChza2lwX2RiX3Jlc3RvcmUpCisJCXsKKwkJCXBnX2xvZ19pbmZvKCJleGNsdWRpbmcgZGF0YWJh c2UgXCIlc1wiIiwgZGJvaWRfY2VsbC0+ZGJfbmFtZSk7CisJCQlzaW1wbGVfZGJfb2lkX2xpc3Rf ZGVsZXRlKGRibmFtZV9vaWRfbGlzdCwgZGJvaWRfY2VsbCwgZGJvaWRwcmVjZWxsKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCWNvdW50X2RiKys7IC8qIEluY3JlbWVudCBkYiBjb3V0ZXIuICovCisJ CQlkYm9pZHByZWNlbGwgPSBkYm9pZF9jZWxsOworCQl9CisKKwkJLyogUHJvY2VzcyBuZXh0IGRi bmFtZSBmcm9tIGRibmFtZSBsaXN0LiAqLworCQlkYm9pZF9jZWxsID0gbmV4dDsKKwl9CisKKwly ZXR1cm4gY291bnRfZGI7Cit9CisKKy8qCisgKiBnZXRfZGJuYW1lX29pZF9saXN0X2Zyb21fbWZp bGUKKyAqCisgKiBPcGVuIG1hcC5kYXQgZmlsZSBhbmQgcmVhZCBsaW5lIGJ5IGxpbmUgYW5kIHRo ZW4gcHJlcGFyZSBhIGxpc3Qgb2YgZGF0YWJhc2UKKyAqIG5hbWVzIGFuZCBjb3JyZXNwb2Rpbmcg ZGJfb2lkLgorICoKKyAqIFJldHVybnMsIHRvdGFsIG51bWJlciBvZiBkYXRhYmFzZSBuYW1lcyBp biBtYXAuZGF0IGZpbGUuCisgKi8KK3N0YXRpYyBpbnQKK2dldF9kYm5hbWVfb2lkX2xpc3RfZnJv bV9tZmlsZShjb25zdCBjaGFyICpkdW1wZGlycGF0aCwgU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpk Ym5hbWVfb2lkX2xpc3QpCit7CisJRklMRSAgICAqcGZpbGU7CisJY2hhciAgICBtYXBfZmlsZV9w YXRoW01BWFBHUEFUSF07CisJY2hhciAgICBsaW5lW01BWFBHUEFUSF07CisJaW50ICAgICBjb3Vu dCA9IDA7CisKKwlpZiAoIUlzRmlsZUV4aXN0c0luRGlyZWN0b3J5KHBnX3N0cmR1cChkdW1wZGly cGF0aCksICJtYXAuZGF0IikpCisJeworCQlwZ19sb2dfaW5mbygibWFwLmRhdCBmaWxlIGlzIG5v dCBwcmVzZW50IGluIGR1bXAgb2YgcGdfZHVtcGFsbCwgc28gbm90aGluZyB0byByZXN0b3JlLiIp OworCQlyZXR1cm4gMDsKKwl9CisKKwlzbnByaW50ZihtYXBfZmlsZV9wYXRoLCBNQVhQR1BBVEgs ICIlcy9tYXAuZGF0IiwgZHVtcGRpcnBhdGgpOworCisJLyogT3BlbiBtYXAuZGF0IGZpbGUuICov CisJcGZpbGUgPSBmb3BlbihtYXBfZmlsZV9wYXRoLCBQR19CSU5BUllfUik7CisKKwlpZiAocGZp bGUgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIG1hcC5kYXQgZmlsZTogXCIl c1wiIiwgbWFwX2ZpbGVfcGF0aCk7CisKKwkvKiBBcHBlbmQgYWxsIHRoZSBkYm5hbWUgYW5kIGRi X29pZCB0byB0aGUgbGlzdC4gKi8KKwl3aGlsZSgoZmdldHMobGluZSwgTUFYUEdQQVRILCBwZmls ZSkpICE9IE5VTEwpCisJeworCQlPaWQgICAgICAgICBkYl9vaWQ7CisJCWNoYXIJCWRiX29pZF9z dHJbTUFYUEdQQVRIICsgMV07CisJCWNoYXIgICAgICAgIGRibmFtZVtNQVhQR1BBVEggKyAxXTsK KworCQkvKiBFeHRyYWN0IGRib2lkLiAqLworCQlzc2NhbmYobGluZSwgIiV1IiAsICZkYl9vaWQp OworCQlzc2NhbmYobGluZSwgIiVzIiAsIGRiX29pZF9zdHIpOworCisJCS8qIE5vdyBjb3B5IGRi bmFtZS4gKi8KKwkJc3RyY3B5KGRibmFtZSwgbGluZSArIHN0cmxlbihkYl9vaWRfc3RyKSArIDEp OworCisJCS8qIFJlbW92ZSBcbiBmcm9tIGRiYW5tZS4gKi8KKwkJZGJuYW1lW3N0cmxlbihkYm5h bWUpIC0gMV0gPSAnXDAnOworCisJCXBnX2xvZ19pbmZvKCJmb3VuZCBkYm5hbWUgYXMgOiBcIiVz XCIgYW5kIGRiX29pZDoldSBpbiBtYXAuZGF0IGZpbGUgd2hpbGUgcmVzdG9yaW5nIiwgZGJuYW1l LCBkYl9vaWQpOworCisJCS8qIFJlcG9ydCBlcnJvciBpZiBmaWxlIGhhcyBhbnkgY29ycnVwdGVk IGRhdGEuICovCisJCWlmICghT2lkSXNWYWxpZChkYl9vaWQpIHx8IHN0cmxlbihkYm5hbWUpID09 IDApCisJCQlwZ19mYXRhbCgiaW52YWxpZCBlbnRyeSBpbiBtYXAuZGF0IGZpbGUgYXQgbGluZSA6 ICVkIiwgY291bnQgKyAxKTsKKworCQkvKgorCQkgKiBYWFggOiBiZWZvcmUgYWRkaW5nIGRibmFt ZSBpbnRvIGxpc3QsIHdlIGNhbiB2ZXJpZnkgdGhhdCB0aGlzIGRiCisJCSAqIG5lZWRzIHRvIHNr aXBwZWQgZm9yIHJlc3RvcmUgb3Igbm90IGJ1dCBhcyBvZiBub3csIHdlIGFyZSBtYWtpbmcKKwkJ ICogYSBsaXN0IG9mIGFsbCB0aGUgZGF0YWJhc2VzLgorCQkgKi8KKwkJc2ltcGxlX2RiX29pZF9s aXN0X2FwcGVuZChkYm5hbWVfb2lkX2xpc3QsIGRiX29pZCwgZGJuYW1lKTsKKwkJY291bnQrKzsK Kwl9CisKKwkvKiBDbG9zZSBtYXAuZGF0IGZpbGUuICovCisJZmNsb3NlKHBmaWxlKTsKKworCXJl dHVybiBjb3VudDsKK30KKworLyoKKyAqIHJlc3RvcmVBbGxEYXRhYmFzZXMKKyAqCisgKiBUaGlz IHdpbGwgcmVzdG9yZSBkYXRhYmFzZXMgdGhvc2UgZHVtcHMgYXJlIHByZXNlbnQgaW4KKyAqIGRp cmVjdG9yeSBiYXNlZCBvbiBtYXAuZGF0IGZpbGUgbWFwcGluZy4KKyAqCisgKiBUaGlzIHdpbGwg c2tpcCByZXN0b3JpbmcgZm9yIGRhdGFiYXNlcyB0aGF0IGFyZSBzcGVjaWZpZWQgd2l0aAorICog ZXhjbHVkZS1kYXRhYmFzZSBvcHRpb24uCisgKi8KK3N0YXRpYyBpbnQKK3Jlc3RvcmVBbGxEYXRh YmFzZXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwKKwkJU2ltcGxlU3Ry aW5nTGlzdCBkYl9leGNsdWRlX3BhdHRlcm5zLCBSZXN0b3JlT3B0aW9ucyAqb3B0cywKKwkJaW50 IG51bVdvcmtlcnMpCit7CisJU2ltcGxlRGF0YWJhc2VPaWRMaXN0CQkJZGJuYW1lX29pZF9saXN0 ID0ge05VTEwsIE5VTEx9OworCVNpbXBsZURhdGFiYXNlT2lkTGlzdENlbGwJCSpkYm9pZF9jZWxs OworCWludAkJCQkJCQkJZXhpdF9jb2RlID0gMDsKKwlpbnQJCQkJCQkJCW51bV9kYl9yZXN0b3Jl OworCWludAkJCQkJCQkJbnVtX3RvdGFsX2RiOworCisJbnVtX3RvdGFsX2RiID0gZ2V0X2RibmFt ZV9vaWRfbGlzdF9mcm9tX21maWxlKGR1bXBkaXJwYXRoLCAmZGJuYW1lX29pZF9saXN0KTsKKwor CS8qIElmIG1hcC5kYXQgaGFzIG5vIGVudHJ5LCByZXR1cm4gZnJvbSBoZXJlLiAqLworCWlmIChk Ym5hbWVfb2lkX2xpc3QuaGVhZCA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXBnX2xvZ19pbmZv KCJmb3VuZCB0b3RhbCAlZCBkYXRhYmFzZSBuYW1lcyBpbiBtYXAuZGF0IGZpbGUiLCBudW1fdG90 YWxfZGIpOworCisJaWYgKCFjb25uKQorCXsKKwkJcGdfbG9nX2luZm8oInRyeWluZyB0byBjb25u ZWN0IHBvc3RncmVzIGRhdGFiYXNlIHRvIGR1bXAgaW50byBvdXQgZmlsZSIpOworCisJCWNvbm4g PSBjb25uZWN0RGF0YWJhc2UoInBvc3RncmVzIiwgTlVMTCwgb3B0cy0+Y3BhcmFtcy5wZ2hvc3Qs CisJCQkJb3B0cy0+Y3BhcmFtcy5wZ3BvcnQsIG9wdHMtPmNwYXJhbXMudXNlcm5hbWUsIFRSSV9E RUZBVUxULCBmYWxzZSwKKwkJCQlwcm9nbmFtZSwgTlVMTCwgTlVMTCk7CisKKwkJLyogVHJ5IHdp dGggdGVtcGxhdGUxLiAqLworCQlpZiAoIWNvbm4pCisJCXsKKwkJCXBnX2xvZ19pbmZvKCJ0cnlp bmcgdG8gY29ubmVjdCB0ZW1wbGF0ZTEgZGF0YWJhc2UgYXMgZmFpbGVkIHRvIGNvbm5lY3QgdG8g cG9zdGdyZXMgdG8gZHVtcCBpbnRvIG91dCBmaWxlIik7CisKKwkJCWNvbm4gPSBjb25uZWN0RGF0 YWJhc2UoInRlbXBsYXRlMSIsIE5VTEwsIG9wdHMtPmNwYXJhbXMucGdob3N0LAorCQkJCQlvcHRz LT5jcGFyYW1zLnBncG9ydCwgb3B0cy0+Y3BhcmFtcy51c2VybmFtZSwgVFJJX0RFRkFVTFQsIGZh bHNlLAorCQkJCQlwcm9nbmFtZSwgTlVMTCwgTlVMTCk7CisKKwkJCWlmICghY29ubikKKwkJCQlw Z19sb2dfaW5mbygidGhlcmUgaXMgbm8gZGF0YWJhc2UgY29ubmVjdGlvbiBzbyBjb25zaWRlciBw YXR0ZXJuIGFzIHNpbXBsZSBuYW1lIGZvciBleGNsdWRlLWRhdGFiYXNlIik7CisJCX0KKwl9CisK KwkvKgorCSAqIFRPRE86IFRvIHNraXAgZGF0YWJhc2VzLCB3ZSBuZWVkIHRvIG1ha2UgYSBkZXNp Z24uCisJICoKKwkgKiBTa2lwIGFueSBleHBsaWNpdGx5IGV4Y2x1ZGVkIGRhdGFiYXNlLiAgSWYg dGhlcmUgaXMgbm8gZGF0YWJhc2UKKwkgKiBjb25uZWN0aW9uLCB0aGVuIGp1c3QgY29uc2lkZXIg cGF0dGVybiBhcyBzaW1wbGUgbmFtZSB0byBjb21wYXJlLgorCSAqLworCW51bV9kYl9yZXN0b3Jl ID0gZmlsdGVyX2RibmFtZXNfZm9yX3Jlc3RvcmUoY29ubiwgJmRibmFtZV9vaWRfbGlzdCwKKwkJ CWRiX2V4Y2x1ZGVfcGF0dGVybnMpOworCisJLyogQ2xvc2UgdGhlIGRiIGNvbm5lY3Rpb24gYXMg d2UgYXJlIGRvbmUgZ2xvYmFscyBhbmQgcGF0dGVybnMuICovCisJaWYgKGNvbm4pCisJCVBRZmlu aXNoKGNvbm4pOworCisJLyogRXhpdCBpZiBubyBkYiBuZWVkcyB0byBiZSByZXN0b3JlZC4gKi8K KwlpZiAoZGJuYW1lX29pZF9saXN0LmhlYWQgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisKKwlwZ19s b2dfaW5mbygibmVlZHMgdG8gcmVzdG9yZSAlZCBkYXRhYmFzZXMgb3V0IG9mICVkIGRhdGFiYXNl cyIsIG51bV9kYl9yZXN0b3JlLCBudW1fdG90YWxfZGIpOworCisJLyoKKwkgKiBUbyByZXN0b3Jl IG11bHRpcGxlIGRhdGFiYXNlcywgLUMgKGNyZWF0ZSBkYXRhYmFzZSkgb3B0aW9uIHNob3VsZCBi ZSBzcGVjaWZpZWQKKwkgKiBvciBhbGwgZGF0YWJhc2VzIHNob3VsZCBiZSBjcmVhdGVkIGJlZm9y ZSBwZ19yZXN0b3JlLgorCSAqLworCWlmIChvcHRzLT5jcmVhdGVEQiAhPSAxKQorCQlwZ19sb2df aW5mbygicmVzdG9yaW5nIGR1bXAgb2YgcGdfZHVtcGFsbCB3aXRob3V0IC1DIG9wdGlvbiwgdGhl cmUgbWlnaHQgYmUgbXVsdGlwbGUgZGF0YWJhc2VzIGluIGRpcmVjdG9yeS4iKTsKKworCS8qIFRP RE86IE1BWF9PTl9FWElUX05JQ0VMWSBpcyAxMDAgbm93Li4uIG1heCBBSCBoYW5kbGUgcmVnaXN0 ZXIgb24gZXhpdCAuKi8KKwlpZiAobnVtX2RiX3Jlc3RvcmUgPiAxMDApCisJeworCQlzaW1wbGVf ZGJfb2lkX2Z1bGxfbGlzdF9kZWxldGUoJmRibmFtZV9vaWRfbGlzdCk7CisJCXBnX2ZhdGFsKCJj b3VuZCBub3QgcmVzdG9yZSBtb3JlIHRoYW4gMTAwIGRhdGFiYXNlcyBieSBzaW5nbGUgcGdfcmVz dG9yZSwgaGVyZSB0b3RhbCBkYjolZCIsIG51bV9kYl9yZXN0b3JlKTsKKwl9CisKKwkvKgorCSAq IFhYWDogVE9ETyB0aWxsIG5vdywgd2UgbWFkZSBhIGxpc3Qgb2YgZGF0YWJhc2VzLCB0aG9zZSBu ZWVkcyB0byBiZSByZXN0b3JlZAorCSAqIGFmdGVyIHNraXBwaW5nIG5hbWVzIG9mIGV4Y2x1ZGUt ZGF0YWJhc2UuICBOb3cgd2UgY2FuIGxhdW5jaCBwYXJhbGxlbAorCSAqIHdvcmtlcnMgdG8gcmVz dG9yZSB0aGVzZSBkYXRhYmFzZXMuCisJICovCisJZGJvaWRfY2VsbCA9IGRibmFtZV9vaWRfbGlz dC5oZWFkOworCisJd2hpbGUoZGJvaWRfY2VsbCAhPSBOVUxMKQorCXsKKwkJY2hhcgkJc3ViZGly cGF0aFtNQVhQR1BBVEhdOworCQlpbnQJCQlkYmV4aXRfY29kZTsKKworCQkvKgorCQkgKiBXZSBu ZWVkIHRvIHJlc2V0IG92ZXJyaWRlX2RibmFtZSBzbyB0aGF0IG9iamVjdHMgY2FuIGJlIHJlc3Rv cmVkIGludG8KKwkJICogYWxyZWFkeSBjcmVhdGVkIGRhdGFiYXNlLiAodXNlZCB3aXRoIC1kLy0t ZGJuYW1lIG9wdGlvbikKKwkJICovCisJCWlmIChvcHRzLT5jcGFyYW1zLm92ZXJyaWRlX2RibmFt ZSkKKwkJeworCQkJcGZyZWUob3B0cy0+Y3BhcmFtcy5vdmVycmlkZV9kYm5hbWUpOworCQkJb3B0 cy0+Y3BhcmFtcy5vdmVycmlkZV9kYm5hbWUgPSBOVUxMOworCQl9CisKKwkJc25wcmludGYoc3Vi ZGlycGF0aCwgTUFYUEdQQVRILCAiJXMvZGF0YWJhc2VzLyV1IiwgZHVtcGRpcnBhdGgsIGRib2lk X2NlbGwtPmRiX29pZCk7CisKKwkJcGdfbG9nX2luZm8oInJlc3RvcmluZyBkYXRhYmFzZSBcIiVz XCIiLCBkYm9pZF9jZWxsLT5kYl9uYW1lKTsKKworCQlkYmV4aXRfY29kZSA9IHJlc3RvcmVPbmVE YXRhYmFzZShzdWJkaXJwYXRoLCBvcHRzLCBudW1Xb3JrZXJzLCB0cnVlKTsKKworCQkvKiBTdG9y ZSBleGl0X2NvZGUgdG8gcmVwb3J0IGl0IGJhY2suICovCisJCWlmIChleGl0X2NvZGUgPT0gMCAm JiBkYmV4aXRfY29kZSAhPSAwKQorCQkJZXhpdF9jb2RlID0gZGJleGl0X2NvZGU7CisKKwkJZGJv aWRfY2VsbCA9IGRib2lkX2NlbGwtPm5leHQ7CisJfSAvKiBlbmQgd2hpbGUgKi8KKworCS8qIExv ZyBudW1iZXIgb2YgcHJvY2Vzc2VkIGRhdGFiYXNlcy4qLworCXBnX2xvZ19pbmZvKCJudW1iZXIg b2YgcmVzdG9yZWQgZGF0YWJhc2VzIGFyZSAlZCIsIG51bV9kYl9yZXN0b3JlKTsKKworCS8qIEZy ZWUgZGJuYW1lIGFuZCBkYm9pZCBsaXN0LiAqLworCXNpbXBsZV9kYl9vaWRfZnVsbF9saXN0X2Rl bGV0ZSgmZGJuYW1lX29pZF9saXN0KTsKKworCXJldHVybiBleGl0X2NvZGU7Cit9CisKKy8qCisg KiBleGVjdXRlX2dsb2JhbF9zcWxfY29tbWFuZHMKKyAqCisgKiBUaGlzIHdpbGwgb3BlbiBnbG9i YWwuZGF0IGZpbGUgYW5kIHdpbGwgZXhlY3V0ZSBhbGwgZ2xvYmFsIHNxbCBjb21tYW5kcyBvbmUK KyAqIGJ5IG9uZSBzdGF0ZW1lbnQuCisgKiBTZW1pY29sb24gaXMgY29uc2lkZXJlZCBhcyBzdGF0 ZW1lbnQgdGVybWluYXRvci4gIElmIG91dGZpbGUgaXMgcGFzc2VkLCB0aGVuCisgKiB0aGlzIHdp bGwgY29weSBhbGwgc3FsIGNvbW1hbmRzIGludG8gb3V0ZmlsZSByYXRoZXIgdGhlbiBleGVjdXRp bmcgdGhlbS4KKyAqLworc3RhdGljIHZvaWQKK2V4ZWN1dGVfZ2xvYmFsX3NxbF9jb21tYW5kcyhQ R2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoLCBjb25zdCBjaGFyICpvdXRmaWxl KQoreworCWNoYXIgICAgICAgICAgICBnbG9iYWxfZmlsZV9wYXRoW01BWFBHUEFUSF07CisJUEdy ZXN1bHQJCSpyZXN1bHQ7CisJU3RyaW5nSW5mb0RhdGEJc3Fsc3RhdGVtZW50OworCUZJTEUJCQkq cGZpbGU7CisKKwlzbnByaW50ZihnbG9iYWxfZmlsZV9wYXRoLCBNQVhQR1BBVEgsICIlcy9nbG9i YWwuZGF0IiwgZHVtcGRpcnBhdGgpOworCisJLyogTm93IG9wZW4gZ2xvYmFsLmRhdCBmaWxlLiAq LworCXBmaWxlID0gZm9wZW4oZ2xvYmFsX2ZpbGVfcGF0aCwgUEdfQklOQVJZX1IpOworCisJaWYg KHBmaWxlID09IE5VTEwpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBnbG9iYWwuZGF0IGZp bGU6IFwiJXNcIiIsIGdsb2JhbF9maWxlX3BhdGgpOworCisJLyoKKwkgKiBJZiBvdXRmaWxlIGlz IGdpdmVuLCB0aGVuIGp1c3QgY29weSBhbGwgZ2xvYmFsLmRhdCBmaWxlIGRhdGEgaW50bworCSAq IG91dGZpbGUuCisJICovCisJaWYgKG91dGZpbGUpCisJeworCQljaGFyICAgICAgICAgICAgb3V0 X2ZpbGVfcGF0aFtNQVhQR1BBVEhdOworCQlGSUxFICAgICAgICAgICAgKm9maWxlOworCQlpbnQJ CQkJYzsKKworCQlzbnByaW50ZihvdXRfZmlsZV9wYXRoLCBNQVhQR1BBVEgsICIlcyIsIG91dGZp bGUpOworCisJCW9maWxlID0gZm9wZW4ob3V0X2ZpbGVfcGF0aCwgUEdfQklOQVJZX1cpOworCisJ CWlmIChvZmlsZSA9PSBOVUxMKQorCQl7CisJCQlmY2xvc2UocGZpbGUpOworCQkJcGdfZmF0YWwo ImNvdWxkIG5vdCBvcGVuIGZpbGU6IFwiJXNcIiIsIG91dF9maWxlX3BhdGgpOworCQl9CisKKwkJ LyogTm93IGFwcGVuZCBnbG9iYWwuZGF0IGlub3Qgb3V0ZmlsZS4gKi8KKwkJd2hpbGUgKChjID0g ZmdldGMocGZpbGUpKSAhPSBFT0YpCisJCXsKKwkJCWZwdXRjKGMsIG9maWxlKTsKKwkJfQorCisJ CWZjbG9zZShwZmlsZSk7CisJCWZjbG9zZShvZmlsZSk7CisJCXJldHVybjsKKwl9CisKKwkvKiBJ bml0IHNxbHN0YXRlbWVudCB0byBhcHBlbmQgY29tbWFuZHMgKi8KKwlpbml0U3RyaW5nSW5mbygm c3Fsc3RhdGVtZW50KTsKKworCS8qIFByb2Nlc3MgZmlsZSB0aWxsIEVPRiBhbmQgZXhlY3V0ZSBz cWwgc3RhdGVtZW50cyAqLworCXdoaWxlIChSZWFkT25lU3RhdGVtZW50KCZzcWxzdGF0ZW1lbnQs IHBmaWxlKSAhPSBFT0YpCisJeworCQlyZXN1bHQgPSBQUWV4ZWMoY29ubiwgc3Fsc3RhdGVtZW50 LmRhdGEpOworCisJCXN3aXRjaCAoUFFyZXN1bHRTdGF0dXMocmVzdWx0KSkKKwkJeworCQkJY2Fz ZSBQR1JFU19DT01NQU5EX09LOgorCQkJY2FzZSBQR1JFU19UVVBMRVNfT0s6CisJCQljYXNlIFBH UkVTX0VNUFRZX1FVRVJZOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBleGVjdXRlIHF1ZXJ5OiBcIiVzXCIgXG5Db21tYW5kIHdhczogXCIlc1wi IiwgUFFlcnJvck1lc3NhZ2UoY29ubiksIHNxbHN0YXRlbWVudC5kYXRhKTsKKwkJfQorCQlQUWNs ZWFyKHJlc3VsdCk7CisJfQorCisJZmNsb3NlKHBmaWxlKTsKK30KKworLyoKKyAqIHNpbXBsZV9k Yl9vaWRfbGlzdF9hcHBlbmQKKyAqCisgKiBhcHBlbmRzIGEgbm9kZSB0byB0aGUgbGlzdCBpbiB0 aGUgZW5kLgorICovCitzdGF0aWMgdm9pZAorc2ltcGxlX2RiX29pZF9saXN0X2FwcGVuZChTaW1w bGVEYXRhYmFzZU9pZExpc3QgKmxpc3QsIE9pZCBkYl9vaWQsIGNvbnN0IGNoYXIgKmRibmFtZSkK K3sKKwlTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsICpjZWxsOworCisJY2VsbCA9IHBnX21hbGxv Y19vYmplY3QoU2ltcGxlRGF0YWJhc2VPaWRMaXN0Q2VsbCk7CisKKwljZWxsLT5uZXh0ID0gTlVM TDsKKwljZWxsLT5kYl9vaWQgPSBkYl9vaWQ7CisJY2VsbC0+ZGJfbmFtZSA9IHBnX3N0cmR1cChk Ym5hbWUpOworCisJaWYgKGxpc3QtPnRhaWwpCisJCWxpc3QtPnRhaWwtPm5leHQgPSBjZWxsOwor CWVsc2UKKwkJbGlzdC0+aGVhZCA9IGNlbGw7CisJbGlzdC0+dGFpbCA9IGNlbGw7Cit9CisKKy8q CisgKiBzaW1wbGVfZGJfb2lkX2Z1bGxfbGlzdF9kZWxldGUKKyAqCisgKiBkZWxldGUgYWxsIGNl bGwgZnJvbSBkYm5hbWUgYW5kIGRib2lkIGxpc3QuCisgKi8KK3N0YXRpYyB2b2lkCitzaW1wbGVf ZGJfb2lkX2Z1bGxfbGlzdF9kZWxldGUoU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpsaXN0KQorewor CVNpbXBsZURhdGFiYXNlT2lkTGlzdENlbGwJKmNlbGwgPSBsaXN0LT5oZWFkOworCVNpbXBsZURh dGFiYXNlT2lkTGlzdENlbGwJKm5leHRjZWxsID0gTlVMTDsKKworCXdoaWxlIChjZWxsKQorCXsK KwkJbmV4dGNlbGwgPSBjZWxsLT5uZXh0OworCQlwZnJlZSAoY2VsbCk7CisJCWNlbGwgPSBuZXh0 Y2VsbDsKKwl9CisKKwlsaXN0LT5oZWFkID0gTlVMTDsKKwlsaXN0LT50YWlsID0gTlVMTDsKK30K KworLyoKKyAqIHNpbXBsZV9zdHJpbmdfZnVsbF9saXN0X2RlbGV0ZQorICoKKyAqIGRlbGV0ZSBh bGwgY2VsbCBmcm9tIHN0cmluZyBsaXN0LgorICovCitzdGF0aWMgdm9pZAorc2ltcGxlX3N0cmlu Z19mdWxsX2xpc3RfZGVsZXRlKFNpbXBsZVN0cmluZ0xpc3QgKmxpc3QpCit7CisJU2ltcGxlU3Ry aW5nTGlzdENlbGwJKmNlbGwgPSBsaXN0LT5oZWFkOworCVNpbXBsZVN0cmluZ0xpc3RDZWxsICAg ICpjZWxsbmV4dCA9IE5VTEw7CisKKwl3aGlsZSAoY2VsbCkKKwl7CisJCWNlbGxuZXh0ID0gY2Vs bC0+bmV4dDsKKwkJcGZyZWUoY2VsbCk7CisJCWNlbGwgPSBjZWxsbmV4dDsKKwl9CisKKwlsaXN0 LT5oZWFkID0gTlVMTDsKKwlsaXN0LT50YWlsID0gTlVMTDsKK30KKworLyoKKyAqIHNpbXBsZV9k Yl9vaWRfbGlzdF9kZWxldGUKKyAqCisgKiBkZWxldGUgY2VsbCBmcm9tIGRhdGFiYXNlIGFuZCBv aWQgbGlzdC4KKyAqLworc3RhdGljIHZvaWQKK3NpbXBsZV9kYl9vaWRfbGlzdF9kZWxldGUoU2lt cGxlRGF0YWJhc2VPaWRMaXN0ICpsaXN0LCBTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsICpjZWxs LAorCQlTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsICpwcmV2KQoreworCWlmIChwcmV2ID09IE5V TEwpCisJeworCQlsaXN0LT5oZWFkID0gY2VsbC0+bmV4dDsKKwkJcGZyZWUoY2VsbCk7CisJfQor CWVsc2UKKwl7CisJCXByZXYtPm5leHQgPSBjZWxsLT5uZXh0OworCQlwZnJlZShjZWxsKTsKKwl9 Cit9CisKKy8qCisgKiBpc19mdWxsX3BhdHRlcm4KKyAqCisgKiBUaGlzIHVzZXMgc3Vic3RyaW5n IGZ1bmN0aW9uIHRvIG1ha2UgMXN0IHN0cmluZyBmcm9tIHBhdHRlcm4uCisgKiBPdXRzdHJpbmcg b2Ygc3Vic3RyaW5nIGZ1bmN0aW9uIGlzIGNvbXBhcmVkIHdpdGggMXN0IHN0cmluZyB0bworICog dmFsaWRhdGUgdGhpcyBwYXR0ZXJuLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiAxc3Qgc3RyaW5n IGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIGdpdmVuIHBhdHRlcm4uCisgKgorICovCitzdGF0aWMg Ym9vbAoraXNfZnVsbF9wYXR0ZXJuKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3RyLCBjb25z dCBjaGFyICpwdHJuKQoreworCVBRRXhwQnVmZmVyCQlxdWVyeTsKKwlQR3Jlc3VsdAkJKnJlc3Vs dDsKKworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCXByaW50ZlBRRXhwQnVmZmVy KHF1ZXJ5LAorCQkJIlNFTEVDVCBzdWJzdHJpbmcgKCAiCisJCQkiICclcycgLCAiCisJCQkiICcl cycgKSAiLCBzdHIsIHB0cm4pOworCisgICByZXN1bHQgPSBleGVjdXRlUXVlcnkoY29ubiwgcXVl cnktPmRhdGEpOworCisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgPT0gUEdSRVNfVFVQTEVT X09LKQorCXsKKwkJaWYgKFBRbnR1cGxlcyhyZXN1bHQpID09IDEpCisJCXsKKwkJCWNvbnN0IGNo YXIJKm91dHN0ciA9IE5VTEw7CisKKwkJCS8qCisJCQkgKiBJZiBvdXRwdXQgc3RyaW5nIG9mIHN1 YnN0cmluZyBmdW5jdGlvbiBpcyBtYXRjaGVzIHdpdGggc3RyLCB0aGVuCisJCQkgKiB3ZSBjYW4g Y29uc3RydWN0IHN0ciBmcm9tIHBhdHRlcm4uCisJCQkgKi8KKwkJCWlmICghUFFnZXRpc251bGwo cmVzdWx0LCAwLCAwKSkKKwkJCQlvdXRzdHIgPSBQUWdldHZhbHVlKHJlc3VsdCwgMCwgMCk7CisK KwkJCWlmIChvdXRzdHIgJiYgcGdfc3RyY2FzZWNtcChvdXRzdHIsIHN0cikgPT0gMCkKKwkJCXsK KwkJCQlQUWNsZWFyKHJlc3VsdCk7CisJCQkJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKKwkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKwllbHNlCisJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IGV4ZWN1dGUgcXVlcnk6IFwiJXNcIiBcbkNvbW1hbmQgd2FzOiBcIiVzXCIiLCBQUWVy cm9yTWVzc2FnZShjb25uKSwgcXVlcnktPmRhdGEpOworCisJUFFjbGVhcihyZXN1bHQpOworCWRl c3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFf YmFzaWMucGwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyMTQyNDBmMWFl Li4yMGRkZjM2NDZhCi0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAorKysgYi9z cmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTIxOSw2ICsyMTksMTMgQEAgY29tbWFu ZF9mYWlsc19saWtlKAogCSdwZ19yZXN0b3JlOiBvcHRpb25zIC1DXC8tLWNyZWF0ZSBhbmQgLTFc Ly0tc2luZ2xlLXRyYW5zYWN0aW9uIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJwogKTsKIAorY29t bWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX3Jlc3RvcmUnLCAnLXAnLCAneHh4JywgJy1mJywgJ3h4 eCcsCisJCSItLWV4Y2x1ZGUtZGF0YWJhc2U9Z3JhYmFkZ2UiLAorCQknLS1nbG9iYWxzLW9ubHkn IF0sCisJcXIvXFFwZ19yZXN0b3JlOiBlcnJvcjogb3B0aW9uIC0tZXhjbHVkZS1kYXRhYmFzZSBj YW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIC1nXC8tLWdsb2JhbHMtb25seVxFLywKKwkncGdf cmVzdG9yZTogb3B0aW9uIC0tZXhjbHVkZS1kYXRhYmFzZSBjYW5ub3QgYmUgdXNlZCB0b2dldGhl ciB3aXRoIC1nLy0tZ2xvYmFscy1vbmx5Jyk7CisKICMgYWxzbyBmYWlscyBmb3IgLXIgYW5kIC10 LCBidXQgaXQgc2VlbXMgcG9pbnRsZXNzIHRvIGFkZCBtb3JlIHRlc3RzIGZvciB0aG9zZS4KIGNv bW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wYWxsJywgJy0tZXhjbHVkZS1kYXRhYmFzZT1m b28nLCAnLS1nbG9iYWxzLW9ubHknIF0sCkBAIC0yMjYsNCArMjMzLDggQEAgY29tbWFuZF9mYWls c19saWtlKAogCSdwZ19kdW1wYWxsOiBvcHRpb24gLS1leGNsdWRlLWRhdGFiYXNlIGNhbm5vdCBi ZSB1c2VkIHRvZ2V0aGVyIHdpdGggLWcvLS1nbG9iYWxzLW9ubHknCiApOwogCitjb21tYW5kX2Zh aWxzX2xpa2UoCisJWyAncGdfZHVtcGFsbCcsICctLWZvcm1hdCcsICd4JyBdLAorCXFyL1xRcGdf ZHVtcGFsbDogZXJyb3I6IHVucmVjb2duaXplZCBhcmNoaXZlIGZvcm1hdCAieCI7XEUvLAorCSdw Z19kdW1wYWxsOiB1bnJlY29nbml6ZWQgYXJjaGl2ZSBmb3JtYXQnKTsKIGRvbmVfdGVzdGluZygp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBhMjY0NGEyZTY1Li45NmY0NjBkMmUzIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjY3Myw2ICsyNjczLDggQEAgU2h1dGRvd25N b2RlCiBTaWduVFNWZWN0b3IKIFNpbXBsZUFjdGlvbkxpc3QKIFNpbXBsZUFjdGlvbkxpc3RDZWxs CitTaW1wbGVEYXRhYmFzZU9pZExpc3QKK1NpbXBsZURhdGFiYXNlT2lkTGlzdENlbGwKIFNpbXBs ZUVjb250ZXh0U3RhY2tFbnRyeQogU2ltcGxlT2lkTGlzdAogU2ltcGxlT2lkTGlzdENlbGwKLS0g CjIuNDMuMAoK --0000000000002f24b8062cbe364e--