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 1truuX-00BQXw-8W for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Mar 2025 08:24:25 +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 1truuW-00AvnT-0P for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Mar 2025 08:24:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1truuV-00AvnK-9k for pgsql-hackers@lists.postgresql.org; Tue, 11 Mar 2025 08:24:23 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1truuR-002BpR-1q for pgsql-hackers@postgresql.org; Tue, 11 Mar 2025 08:24:22 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-524038ba657so2162525e0c.0 for ; Tue, 11 Mar 2025 01:24:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741681459; x=1742286259; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=BpSmzvMfrMgoq6mIZc5YGQIjOKlkUXtA4cRQOBiEFCg=; b=DqYeeeXmwWIZxN7SiyhdDUXGIkDOFm5HsrizAX6pjtPv5aAwV3pPxCffY/AgN3pa2f 2wCw3wDanyI4Knv4d07uxGcxPe/8XzwP6Zh02dGjSmm6VQ0F4Sf3pJd+mKATdAamcc/U i7kV6SYk58IfhjcfTepJ3SK2cOCZQoICFc8CvdntLGVVsszwwlZU3oQ6Jx2ERhDgzuKw 7O0ICu+AsjIs/FT98SzwlE9C23n9Bnkcc5sUAP6iyQgRC6Mjj5pCBsczH2KNZDRjJ5Yx ATXuY6iDsYcaeh1847qGvRmq0Mu6H8X2HFPngabpY5DuZ0M4FsbjUkpwhRrlG/OjSUkY OHHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741681459; x=1742286259; h=cc: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=BpSmzvMfrMgoq6mIZc5YGQIjOKlkUXtA4cRQOBiEFCg=; b=eLhjid2WpQHEAkELEI9BBRbBGgGdWVeHuYYmqbqUw/iewEpYmtuozGZFEgwweufo2h VG49iY92N6wy4ISWAJz/t7XP96N+1zeCamGUmeb3wIeigiKakNaI4ktwpGl7GrUygSmO JApu8e+9enwfsukitxYGOAOrwfk6A95QiGwz5rlwqu8c8r22Pr52q7VaiIEpBWvArfpA rdsmzt7/s32OEWlwAIBtm/JY4RPmb1OcMKsvuGNAgqYbHBGOQWuc8kZwdhHW+cJk3g6e Bcr835uyrPkIp235aL4dcCzAqsTLwRKsJxY60Xs8Jrie364lw7W8YyDF5MufEciZ3vZL lrEg== X-Forwarded-Encrypted: i=1; AJvYcCXdrG2ECZe26y4rTxAm0sWer5rWVMEmae1XtseOaW+7wRMdM6A6l+jofzyw3NaZ9tlpn6L3doNoofbZj8Rd@postgresql.org X-Gm-Message-State: AOJu0YzmexafSsD3pKgOdP01zdB1MDyXwkxAYrHr3EDV5Cw0oYVctbTd iomZcLHG8sCC5lmtcONy1MWlfNBODa/rgXVIHmMB1WUkQowyLJodT/A4MB8ElTckNgMYY0GZBhO F+shaekDOW1lhvwIZwR4n6rPqcfk= X-Gm-Gg: ASbGncsvZjv9WuKSHpNSrrgRATLF51HBcLIp7iqo6GWsOf7ziyC1tbeipYywdZXEBim u3RMPuBhEpNG1OHBLTeDpnYHbj/9GXnxsDZujc6E/lGTa0ychSDm7mIsKKnZGCBmA0RzU8bM4vB WmAgwSPQ+3gYJL/hQW5GMn0M08tgM7n9055t8YUhVYNWqD55bJhnf6qv69 X-Google-Smtp-Source: AGHT+IFbQNzYK326A7N0kXTjE7nNdu0EGq0hoglcgH1IrjF1WrAiAi7zeIy+sT8dAI8+FY16C3CSAQRK6fx07L6wYug= X-Received: by 2002:a05:6122:8295:b0:51e:ffd1:67f3 with SMTP id 71dfb90a1353d-52419719ed4mr1539748e0c.7.1741681458815; Tue, 11 Mar 2025 01:24:18 -0700 (PDT) MIME-Version: 1.0 References: <8620df11-96e4-4ca3-8f3c-33a479260961@joeconway.com> <4162f7f7-6fd6-4720-98e2-89f80e3de2ed@joeconway.com> <153b71b8-b6fb-4930-aaff-a7334cb3f6d6@joeconway.com> <8ef5f5d6-38db-4624-8eef-2d96c9eba9d4@joeconway.com> In-Reply-To: From: jian he Date: Tue, 11 Mar 2025 16:23:42 +0800 X-Gm-Features: AQ5f1JrK8kAU5dVDTdk8gE0JyR7hIvobfnIwY9etMYNVT42pV6VEqrKAl2SgXsw Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Junwang Zhao Cc: Joe Conway , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000aa55e306300cd03f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000aa55e306300cd03f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Mar 2, 2025 at 1:28=E2=80=AFPM Junwang Zhao wro= te: > > > I've refactored the patch to adapt the newly introduced CopyToRoutine str= uct, > see 2e4127b6d2. > > v15-0001 is the merged one of v14-0001 and v14-0002 > > There are some other ongoing *copy to/from* refactors[1] which we can ben= efit > to make the code cleaner, especially the checks done in ProcessCopyOption= s. > > [1]: https://www.postgresql.org/message-id/20250301.115009.42484440773664= 7598.kou%40clear-code.com > hi. git apply --check $PATCHES/v15-0001-Introduce-json-format-for-COPY-TO.patch error: patch failed: src/backend/commands/copyfrom.c:155 error: src/backend/commands/copyfrom.c: patch does not apply error: patch failed: src/backend/commands/copyto.c:176 error: src/backend/commands/copyto.c: patch does not apply seems to need rebase. the attachment is the rebase, minor comments tweaks, and commit message twe= aks. another issue is this patch entry in commitfest [1] status is: Not processe= d, which means no cfbots CI tests, seems not great. not sure how to resolve this issue.... [1] https://commitfest.postgresql.org/patch/4716/ --000000000000aa55e306300cd03f Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0002-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v16-0002-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8483m0e0 RnJvbSAyNGUxODU4NzIyZGJiMjVjNDg0MmQwZWMyZGVlNWIxMDQ3ZWRjYzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTEgTWFyIDIwMjUgMTY6MTk6NTUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NiAyLzJdIEFkZCBvcHRpb24gZm9yY2VfYXJyYXkgZm9yIENPUFkgSlNPTiBGT1JNQVQKCmZvcmNl X2FycmF5IG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIGluIENPUFkgVE8gd2l0aCBKU09OIGZvcm1h dC4KaXQgbWFrZSB0aGUgb3V0cHV0IGpzb24gb3V0cHV0IGJlaGF2ZSBsaWtlIGpzb24gYXJyYXkg dHlwZS4KCnJlZmFjdG9yZWQgYnkgSnVud2FuZyBaaGFvIHRvIGFkYXB0IHRoZSBuZXdseSBpbnRy b2R1Y2VkIENvcHlUb1JvdXRpbmUgc3RydWN0KDJlNDEyN2I2ZDIpLgoKQXV0aG9yOiBKb2UgQ29u d2F5IDxtYWlsQGpvZWNvbndheS5jb20+CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0FMdmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0RrY2clNDBt YWlsLmdtYWlsLmNvbQpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzZhMDQ2MjhkLTBk NTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bqb2Vjb253YXkuY29tCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9jb3B5LnNnbWwgICAgICAgICB8IDE0ICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jICAgICAgICB8IDEzICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21t YW5kcy9jb3B5LmggICAgICAgIHwgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5 Lm91dCB8IDIzICsrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5 LnNxbCAgICAgIHwgIDggKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggOWM1MTlkOGE5ZTIuLjdiM2M5MTNk NGVlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDMsNiArNDMsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlCiAgICAgRk9SQ0VfUVVPVEUgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05PVF9O VUxMIHsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dICkgfCAqIH0KICAgICBGT1JDRV9OVUxMIHsgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgfCAq IH0KKyAgICBGT1JDRV9BUlJBWSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29s ZWFuPC9yZXBsYWNlYWJsZT4gXQogICAgIE9OX0VSUk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPgogICAgIFJFSkVDVF9MSU1JVCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWF4ZXJyb3I8L3JlcGxhY2VhYmxlPgogICAgIEVO Q09ESU5HICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5jb2RpbmdfbmFtZTwvcmVw bGFjZWFibGU+JwpAQCAtMzkyLDYgKzM5MywxOSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNFX0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFja2V0 cyBhcyBhcnJheSBkZWNvcmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5kIG9m IG91dHB1dCwgYW5kIGNvbW1hcyBiZXR3ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9ubHkg aW4KKyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVzaW5n CisgICAgICA8bGl0ZXJhbD5KU09OPC9saXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlzCisg ICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+ PGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHkuYwppbmRleCBiNmY3NGM3OThkMC4uN2I0YzY0ZWE5N2UgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMK QEAgLTUwNCw2ICs1MDQsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LAogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCWxvZ192ZXJib3Np dHlfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9vbAkJcmVqZWN0X2xpbWl0X3NwZWNpZmllZCA9IGZh bHNlOworCWJvb2wJCWZvcmNlX2FycmF5X3NwZWNpZmllZCA9IGZhbHNlOwogCUxpc3RDZWxsICAg Km9wdGlvbjsKIAogCS8qIFN1cHBvcnQgZXh0ZXJuYWwgdXNlIGZvciBvcHRpb24gc2FuaXR5IGNo ZWNraW5nICovCkBAIC02NTgsNiArNjU5LDEzIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkJCWRlZmVsLT5kZWZuYW1lKSwKIAkJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CiAJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAiZm9yY2VfYXJyYXkiKSA9PSAwKQorCQl7CisJCQlpZiAoZm9y Y2VfYXJyYXlfc3BlY2lmaWVkKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBw c3RhdGUpOworCQkJZm9yY2VfYXJyYXlfc3BlY2lmaWVkID0gdHJ1ZTsKKwkJCW9wdHNfb3V0LT5m b3JjZV9hcnJheSA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQl9CiAJCWVsc2UgaWYgKHN0cmNt cChkZWZlbC0+ZGVmbmFtZSwgIm9uX2Vycm9yIikgPT0gMCkKIAkJewogCQkJaWYgKG9uX2Vycm9y X3NwZWNpZmllZCkKQEAgLTkwNiw2ICs5MTQsMTEgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAogCQkJCWVycm1zZygiQ09QWSBqc29uIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIs ICJDT1BZIEZST00iKSk7CiAKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9K U09OICYmIG9wdHNfb3V0LT5mb3JjZV9hcnJheSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSAl cyBjYW4gb25seSB1c2VkIHdpdGggSlNPTiBtb2RlIiwgIkZPUkNFX0FSUkFZIikpOworCiAJaWYg KG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYwppbmRleCBjMWQ0Y2JlZWRlYS4uMzkzYzA0NDBhZDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0 by5jCkBAIC04NCw2ICs4NCw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQogCUxp c3QJICAgKmF0dG51bWxpc3Q7CQkvKiBpbnRlZ2VyIGxpc3Qgb2YgYXR0bnVtcyB0byBjb3B5ICov CiAJY2hhcgkgICAqZmlsZW5hbWU7CQkvKiBmaWxlbmFtZSwgb3IgTlVMTCBmb3IgU1RET1VUICov CiAJYm9vbAkJaXNfcHJvZ3JhbTsJCS8qIGlzICdmaWxlbmFtZScgYSBwcm9ncmFtIHRvIHBvcGVu PyAqLworCWJvb2wJCWpzb25fcm93X2RlbGltX25lZWRlZDsJLyogbmVlZCBkZWxpbWl0ZXIgdG8g c3RhcnQgbmV4dCBqc29uIGFycmF5IGVsZW1lbnQgKi8KIAljb3B5X2RhdGFfZGVzdF9jYiBkYXRh X2Rlc3RfY2I7IC8qIGZ1bmN0aW9uIGZvciB3cml0aW5nIGRhdGEgKi8KIAogCUNvcHlGb3JtYXRP cHRpb25zIG9wdHM7CkBAIC0xMjgsNiArMTI5LDcgQEAgc3RhdGljIHZvaWQgQ29weVRvVGV4dExp a2VPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJ CQkJIGJvb2wgaXNfY3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0 YXRlIGNzdGF0ZSk7CiBzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNz dGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbkVuZChD b3B5VG9TdGF0ZSBjc3RhdGUpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQoQ29weVRv U3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5h cnlPdXRGdW5jKENvcHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5cGlkLCBGbWdySW5mbyAqZmlu Zm8pOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpOwpAQCAtMTcyLDcgKzE3NCw3IEBAIHN0YXRpYyBjb25zdCBD b3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVKc29uID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlU b1RleHRMaWtlU3RhcnQsCiAJLkNvcHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlrZU91dEZ1bmMs CiAJLkNvcHlUb09uZVJvdyA9IENvcHlUb0pzb25PbmVSb3csCi0JLkNvcHlUb0VuZCA9IENvcHlU b1RleHRMaWtlRW5kLAorCS5Db3B5VG9FbmQgPSBDb3B5VG9Kc29uRW5kLAogfTsKIAogLyogYmlu YXJ5IGZvcm1hdCAqLwpAQCAtMjM4LDYgKzI0MCwxNiBAQCBDb3B5VG9UZXh0TGlrZVN0YXJ0KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpCiAKIAkJQ29weVNlbmRUZXh0TGlr ZUVuZE9mUm93KGNzdGF0ZSk7CiAJfQorCisJLyoKKwkgKiBJZiBKU09OIGhhcyBiZWVuIHJlcXVl c3RlZCwgYW5kIEZPUkNFX0FSUkFZIGhhcyBiZWVuIHNwZWNpZmllZCBzZW5kCisJICogdGhlIG9w ZW5pbmcgYnJhY2tldC4KKwkgKi8KKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9KU09OICYmIGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwl7CisJCUNvcHlTZW5kQ2hh cihjc3RhdGUsICdbJyk7CisJCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOworCX0K IH0KIAogLyoKQEAgLTM0OSwxMSArMzYxLDMxIEBAIENvcHlUb0pzb25PbmVSb3coQ29weVRvU3Rh dGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAlyZXN1bHQgPSBtYWtlU3RyaW5nSW5m bygpOwogCWNvbXBvc2l0ZV90b19qc29uKHJvd2RhdGEsIHJlc3VsdCwgZmFsc2UpOwogCisJaWYg KGNzdGF0ZS0+anNvbl9yb3dfZGVsaW1fbmVlZGVkICYmIGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJh eSkKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJywnKTsKKwllbHNlIGlmIChjc3RhdGUtPm9wdHMu Zm9yY2VfYXJyYXkpCisJeworCQkvKiBmaXJzdCByb3cgbmVlZHMgbm8gZGVsaW1pdGVyICovCisJ CUNvcHlTZW5kQ2hhcihjc3RhdGUsICcgJyk7CisJCWNzdGF0ZS0+anNvbl9yb3dfZGVsaW1fbmVl ZGVkID0gdHJ1ZTsKKwl9CisKIAlDb3B5U2VuZERhdGEoY3N0YXRlLCByZXN1bHQtPmRhdGEsIHJl c3VsdC0+bGVuKTsKIAogCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogfQogCisv KiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxiYWNrIGZvciBqc29uIGZvcm1hdCAqLwor c3RhdGljIHZvaWQKK0NvcHlUb0pzb25FbmQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworCWlmIChj c3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkpCisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnXScp OworCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKKwl9Cit9CisKIC8qCiAgKiBJ bXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhcnQgY2FsbGJhY2sgZm9yIGJpbmFyeSBmb3JtYXQuIFNl bmQgYSBoZWFkZXIKICAqIGZvciBhIGJpbmFyeSBjb3B5LgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmlu ZGV4IDYwNjliMTE4ODM0Li5lMGM3NDEyZWMwYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAt MzI3OCw3ICszMjc4LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRj aEFueSwgIldJVEgiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJGT1JNQVQiLCAiRlJFRVpFIiwg IkRFTElNSVRFUiIsICJOVUxMIiwKIAkJCQkJICAiSEVBREVSIiwgIlFVT1RFIiwgIkVTQ0FQRSIs ICJGT1JDRV9RVU9URSIsCi0JCQkJCSAgIkZPUkNFX05PVF9OVUxMIiwgIkZPUkNFX05VTEwiLCAi RU5DT0RJTkciLCAiREVGQVVMVCIsCisJCQkJCSAgIkZPUkNFX05PVF9OVUxMIiwgIkZPUkNFX05V TEwiLCAiRk9SQ0VfQVJSQVkiLCAiRU5DT0RJTkciLCAiREVGQVVMVCIsCiAJCQkJCSAgIk9OX0VS Uk9SIiwgIkxPR19WRVJCT1NJVFkiKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxU TyBmaWxlbmFtZSBXSVRIIChGT1JNQVQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCAwN2ZjYzJiYzlh Yy4uZmE4YThhYjdlMzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTg5LDYgKzg5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMKIAlMaXN0CSAgICpmb3JjZV9ub3RudWxsOwkvKiBs aXN0IG9mIGNvbHVtbiBuYW1lcyAqLwogCWJvb2wJCWZvcmNlX25vdG51bGxfYWxsOwkvKiBGT1JD RV9OT1RfTlVMTCAqPyAqLwogCWJvb2wJICAgKmZvcmNlX25vdG51bGxfZmxhZ3M7CS8qIHBlci1j b2x1bW4gQ1NWIEZOTiBmbGFncyAqLworCWJvb2wJCWZvcmNlX2FycmF5OwkvKiBhZGQgSlNPTiBh cnJheSBkZWNvcmF0aW9ucyAqLwogCUxpc3QJICAgKmZvcmNlX251bGw7CQkvKiBsaXN0IG9mIGNv bHVtbiBuYW1lcyAqLwogCWJvb2wJCWZvcmNlX251bGxfYWxsOyAvKiBGT1JDRV9OVUxMICo/ICov CiAJYm9vbAkgICAqZm9yY2VfbnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk4gZmxhZ3Mg Ki8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CmluZGV4IDBkNGNmYzBiNjBhLi4zZDA3ODE3 MDBiMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CkBAIC0xMTAsNiArMTEwLDI5IEBA IExJTkUgMTogY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBp Z25vcmUpOwogY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKIEVSUk9SOiAg Q09QWSBqc29uIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KIC0tIGFsbCBvZiB0 aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCistLUVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGNzdiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CitFUlJPUjogIENPUFkgRk9SQ0Vf QVJSQVkgY2FuIG9ubHkgdXNlZCB3aXRoIEpTT04gbW9kZQorLS1vaworY29weSBjb3B5dGVzdCB0 byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSk7CitbCisgeyJzdHlsZSI6IkRPUyIs InRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQorLHsic3R5bGUiOiJVbml4IiwidGVzdCI6 ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQorLHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYi LCJmaWxsZXIiOjN9CisseyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxc bmIiLCJmaWxsZXIiOjR9CitdCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s IGZvcmNlX2FycmF5IHRydWUpOworWworIHsic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRl ZiIsImZpbGxlciI6MX0KKyx7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxl ciI6Mn0KKyx7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQorLHsi c3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQor XQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSBmYWxz ZSk7Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0 eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMi LCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0 IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hh cmFjdGVycwogY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJp YWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCmluZGV4IDZlZTk2ZjVhYTUxLi4yNzgxYzI0YmQ4NCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29weS5zcWwKQEAgLTEwMSw2ICsxMDEsMTQgQEAgY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOwogY29weSBjb3B5dGVzdCBmcm9t IHN0ZGluKGZvcm1hdCBqc29uKTsKIC0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVy cm9yCiAKKy0tRXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3Jj ZV9hcnJheSB0cnVlKTsKKworLS1vaworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBq c29uLCBmb3JjZV9hcnJheSk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s IGZvcmNlX2FycmF5IHRydWUpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29u LCBmb3JjZV9hcnJheSBmYWxzZSk7CisKIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwog Y3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJpYWwsCi0tIAoy LjM0LjEKCg== --000000000000aa55e306300cd03f Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0001-Introduce-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v16-0001-Introduce-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8483m0m1 RnJvbSA3MWNmMTdjOWQxYWVmZWNjODljYzM4OGI5NzliYmZjOTk1Mjg5OGM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTEgTWFyIDIwMjUgMTU6NTM6MzcgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NiAxLzJdIEludHJvZHVjZSBqc29uIGZvcm1hdCBmb3IgQ09QWSBUTwoKanNvbiBmb3JtYXQgaXMg b25seSBhbGxvd2VkIGluIENPUFkgVE8gb3BlcmF0aW9uLgphbHNvIGNhbm5vdCBiZSB1c2VkIHdp dGgge2hlYWRlciwgZGVmYXVsdCwgbnVsbCwgZGVsaW1pdGVyfSBvcHRpb25zIGFuZCBtYW55IG90 aGVyIG9wdGlvbnMuCmZ1bGx5IHRlc3RlZCBvbiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNx bC4KCkNvcHlGb3JtYXQgZW51bSBwYXJ0IHdhcyBjb2llZCBmcm9tIEpvZWwgSmFjb2Jzb24gPGpv ZWxAY29tcGlsZXIub3JnPgpyZWZhY3RvcmVkIGJ5IEppYW4gSGUgdG8gZml4IHNvbWUgbWlzY2Vs bGFuZW91cyBpc3N1ZS4KcmVmYWN0b3JlZCBieSBKdW53YW5nIFpoYW8gdG8gYWRhcHQgdGhlIG5l d2x5IGludHJvZHVjZWQgQ29weVRvUm91dGluZSBzdHJ1Y3QoMmU0MTI3YjZkMikuCgpBdXRob3I6 IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNvbT4KUmV2aWV3ZWQtYnk6ICJBbmRyZXkgTS4g Qm9yb2RpbiIgPHg0bW1tQHlhbmRleC10ZWFtLnJ1PiwKUmV2aWV3ZWQtYnk6IERlYW4gUmFzaGVl ZCA8ZGVhbi5hLnJhc2hlZWRAZ21haWwuY29tPiwKUmV2aWV3ZWQtYnk6IERhbmllbCBWZXJpdGUg PGRhbmllbEBtYW5pdG91LW1haWwub3JnPiwKUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxh bmRyZXdAZHVuc2xhbmUubmV0PiwKUmV2aWV3ZWQtYnk6IERhdmluIFNoZWFyZXIgPGRhdmluQGFw YWNoZS5vcmc+LApSZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFp bC5jb20+LApSZXZpZXdlZC1ieTogQWx2YXJvIEhlcnJlcmEgPGFsdmhlcnJlQGFsdmgubm8taXAu b3JnPgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1dVdQRlZ3 cGtfN2lpMnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29tCmRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUtNWE4ZGMz MDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAg ICAgICAgfCAxMyArKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICAgIHwg NzcgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMg fCAgNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgIHwgODMgKysrKysr KysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgIHwgIDggKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAgICAgICAgfCAgNSAr LQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgIHwgIDIgKy0KIHNyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgICAgICB8IDE0ICsrKystCiBzcmMvaW5jbHVkZS91dGls cy9qc29uLmggICAgICAgICAgICAgfCAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0ICAgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9jb3B5LnNxbCAgICAgICAgfCA0NyArKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgfCAgMSArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyODYgaW5z ZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCBkZjA5M2RhOTdj NS4uOWM1MTlkOGE5ZTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0yMTksMTAgKzIxOSwxNSBAQCBDT1BZ IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBTZWxlY3RzIHRoZSBkYXRhIGZvcm1hdCB0byBiZSBy ZWFkIG9yIHdyaXR0ZW46CiAgICAgICA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPiwKICAgICAgIDxs aXRlcmFsPmNzdjwvbGl0ZXJhbD4gKENvbW1hIFNlcGFyYXRlZCBWYWx1ZXMpLAorICAgICAgPGxp dGVyYWw+anNvbjwvbGl0ZXJhbD4gKEphdmFTY3JpcHQgT2JqZWN0IE5vdGF0aW9uKSwKICAgICAg IG9yIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4uCiAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0 ZXJhbD50ZXh0PC9saXRlcmFsPi4KICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtY29weS1m aWxlLWZvcm1hdHMiLz4gYmVsb3cgZm9yIGRldGFpbHMuCiAgICAgIDwvcGFyYT4KKyAgICAgPHBh cmE+CisgICAgICBUaGUgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gb3B0aW9uIGlzIGFsbG93ZWQg b25seSBpbgorICAgICAgPGNvbW1hbmQ+Q09QWSBUTzwvY29tbWFuZD4uCisgICAgIDwvcGFyYT4K ICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTI1Nyw3ICsyNjIsNyBA QCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICAobGluZSkgb2YgdGhlIGZpbGUuICBUaGUg ZGVmYXVsdCBpcyBhIHRhYiBjaGFyYWN0ZXIgaW4gdGV4dCBmb3JtYXQsCiAgICAgICBhIGNvbW1h IGluIDxsaXRlcmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICAgVGhpcyBtdXN0IGJlIGEg c2luZ2xlIG9uZS1ieXRlIGNoYXJhY3Rlci4KLSAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxv d2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBU aGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0 ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMjcxLDcgKzI3Niw3IEBAIENP UFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIHN0cmluZyBpbiA8bGl0ZXJhbD5DU1Y8L2xpdGVy YWw+IGZvcm1hdC4gWW91IG1pZ2h0IHByZWZlciBhbgogICAgICAgZW1wdHkgc3RyaW5nIGV2ZW4g aW4gdGV4dCBmb3JtYXQgZm9yIGNhc2VzIHdoZXJlIHlvdSBkb24ndCB3YW50IHRvCiAgICAgICBk aXN0aW5ndWlzaCBudWxscyBmcm9tIGVtcHR5IHN0cmluZ3MuCi0gICAgICBUaGlzIG9wdGlvbiBp cyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0 LgorICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5i aW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAg PC9wYXJhPgogCiAgICAgIDxub3RlPgpAQCAtMjk0LDcgKzI5OSw3IEBAIENPUFkgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUKICAgICAgIGlzIGZvdW5kIGluIHRoZSBpbnB1dCBmaWxlLCB0aGUgZGVmYXVsdCB2 YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW4KICAgICAgIHdpbGwgYmUgdXNlZC4KICAg ICAgIFRoaXMgb3B0aW9uIGlzIGFsbG93ZWQgb25seSBpbiA8Y29tbWFuZD5DT1BZIEZST008L2Nv bW1hbmQ+LCBhbmQgb25seSB3aGVuCi0gICAgICBub3QgdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9s aXRlcmFsPiBmb3JtYXQuCisgICAgICBub3QgdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFs PiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0zMTAsNyArMzE1LDcgQEAgQ09QWSB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZQogICAgICAgSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvIDxsaXRlcmFs Pk1BVENIPC9saXRlcmFsPiwgdGhlIG51bWJlciBhbmQgbmFtZXMKICAgICAgIG9mIHRoZSBjb2x1 bW5zIGluIHRoZSBoZWFkZXIgbGluZSBtdXN0IG1hdGNoIHRoZSBhY3R1YWwgY29sdW1uIG5hbWVz IG9mCiAgICAgICB0aGUgdGFibGUsIGluIG9yZGVyOyAgb3RoZXJ3aXNlIGFuIGVycm9yIGlzIHJh aXNlZC4KLSAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVy YWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxs b3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNv bjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICAgVGhlIDxsaXRlcmFsPk1BVENIPC9saXRlcmFsPiBv cHRpb24gaXMgb25seSB2YWxpZCBmb3IgPGNvbW1hbmQ+Q09QWQogICAgICAgRlJPTTwvY29tbWFu ZD4gY29tbWFuZHMuCiAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBjZmNhOWQ5ZGMy OS4uYjZmNzRjNzk4ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTUyNSwxMSArNTI1LDEzIEBAIFBy b2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJZXJyb3JDb25mbGljdGlu Z0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJCQlmb3JtYXRfc3BlY2lmaWVkID0gdHJ1ZTsKIAkJ CWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09IDApCi0JCQkJIC8qIGRlZmF1bHQgZm9ybWF0ICov IDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09QWV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYg KHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQotCQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7 CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0 cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQotCQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOwor CQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9CSU5BUlk7CisJCQllbHNlIGlmIChz dHJjbXAoZm10LCAianNvbiIpID09IDApCisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9S TUFUX0pTT047CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtNjg5LDMxICs2OTEsNDcgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21w YXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAq IGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWxp bSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19v dXQtPmRlbGltKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRp b24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBC SU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYg b3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JN QVRfSlNPTiAmJiBvcHRzX291dC0+ZGVsaW0pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFt ZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCisJCQkJZXJybXNnKCJjYW5ub3Qg c3BlY2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiREVMSU1JVEVSIikpOworCisJaWYgKG9wdHNfb3V0 LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJ CQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsK IAotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlm IChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgb3B0c19vdXQtPm51bGxf cHJpbnQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiTlVMTCIp KTsKKworCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRz X291dC0+ZGVmYXVsdF9wcmludCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklO QVJZIG1vZGUiLCAiREVGQVVMVCIpKSk7CiAKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9KU09OICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCWVycm1zZygiY2Fubm90 IHNwZWNpZnkgJXMgaW4gSlNPTiBtb2RlIiwgIkRFRkFVTFQiKSk7CisKIAkvKiBTZXQgZGVmYXVs dHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwogCWlmICghb3B0c19vdXQtPmRlbGltKQotCQlvcHRz X291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2X21vZGUgPyAiLCIgOiAiXHQiOworCQlvcHRzX291 dC0+ZGVsaW0gPSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViA/ICIsIiA6ICJc dCI7CiAKIAlpZiAoIW9wdHNfb3V0LT5udWxsX3ByaW50KQotCQlvcHRzX291dC0+bnVsbF9wcmlu dCA9IG9wdHNfb3V0LT5jc3ZfbW9kZSA/ICIiIDogIlxcTiI7CisJCW9wdHNfb3V0LT5udWxsX3By aW50ID0gb3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgPyAiIiA6ICJcXE4iOwog CW9wdHNfb3V0LT5udWxsX3ByaW50X2xlbiA9IHN0cmxlbihvcHRzX291dC0+bnVsbF9wcmludCk7 CiAKLQlpZiAob3B0c19vdXQtPmNzdl9tb2RlKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0NTVikKIAl7CiAJCWlmICghb3B0c19vdXQtPnF1b3RlKQogCQkJb3B0c19vdXQt PnF1b3RlID0gIlwiIjsKQEAgLTc2MSw3ICs3NzksNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCSAqIGZ1dHVyZS1wcm9vZmluZy4gIExpa2V3aXNlIHdlIGRpc2Fs bG93IGFsbCBkaWdpdHMgdGhvdWdoIG9ubHkgb2N0YWwKIAkgKiBkaWdpdHMgYXJlIGFjdHVhbGx5 IGRhbmdlcm91cy4KIAkgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJgorCWlmIChvcHRz X291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJgogCQlzdHJjaHIoIlxcLmFiY2RlZmdo aWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSIsCiAJCQkgICBvcHRzX291dC0+ZGVsaW1bMF0p ICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC03NjksNDMgKzc4Nyw0OCBAQCBQcm9jZXNz Q29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNPUFkgZGVsaW1p dGVyIGNhbm5vdCBiZSBcIiVzXCIiLCBvcHRzX291dC0+ZGVsaW0pKSk7CiAKIAkvKiBDaGVjayBo ZWFkZXIgKi8KLQlpZiAob3B0c19vdXQtPmJpbmFyeSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUp CisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0 LT5oZWFkZXJfbGluZSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBv ZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiY2Fubm90IHNw ZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiSEVBREVSIikpKTsKIAorCWlmIChvcHRzX291dC0+ Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiSEVBREVS IikpOworCiAJLyogQ2hlY2sgcXVvdGUgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBv cHRzX291dC0+cXVvdGUgIT0gTlVMTCkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZP Uk1BVF9DU1YgJiYgb3B0c19vdXQtPnF1b3RlICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNs YXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwog CQkJCSBlcnJtc2coIkNPUFkgJXMgcmVxdWlyZXMgQ1NWIG1vZGUiLCAiUVVPVEUiKSkpOwogCi0J aWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19vdXQtPnF1b3RlKSAhPSAxKQor CWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJiBzdHJsZW4ob3B0c19v dXQtPnF1b3RlKSAhPSAxKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJDT1BZIHF1b3RlIG11c3QgYmUg YSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAotCWlmIChvcHRzX291dC0+Y3N2X21v ZGUgJiYgb3B0c19vdXQtPmRlbGltWzBdID09IG9wdHNfb3V0LT5xdW90ZVswXSkKKwlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQtPmRlbGltWzBdID09 IG9wdHNfb3V0LT5xdW90ZVswXSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRl ciBhbmQgcXVvdGUgbXVzdCBiZSBkaWZmZXJlbnQiKSkpOwogCiAJLyogQ2hlY2sgZXNjYXBlICov Ci0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgb3B0c19vdXQtPmVzY2FwZSAhPSBOVUxMKQor CWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZXNj YXBlICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2Yg YSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coIkNPUFkgJXMgcmVx dWlyZXMgQ1NWIG1vZGUiLCAiRVNDQVBFIikpKTsKIAotCWlmIChvcHRzX291dC0+Y3N2X21vZGUg JiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+ZXNjYXBlKSAhPSAxKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKIAkJCQkgZXJybXNnKCJDT1BZIGVzY2FwZSBtdXN0IGJlIGEgc2luZ2xlIG9uZS1ieXRlIGNo YXJhY3RlciIpKSk7CiAKIAkvKiBDaGVjayBmb3JjZV9xdW90ZSAqLwotCWlmICghb3B0c19vdXQt PmNzdl9tb2RlICYmIChvcHRzX291dC0+Zm9yY2VfcXVvdGUgfHwgb3B0c19vdXQtPmZvcmNlX3F1 b3RlX2FsbCkpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChv cHRzX291dC0+Zm9yY2VfcXVvdGUgfHwgb3B0c19vdXQtPmZvcmNlX3F1b3RlX2FsbCkpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5n LiBPTl9FUlJPUiAqLwpAQCAtODE5LDggKzg0Miw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09QWSBGUk9NIikpKTsKIAogCS8qIENoZWNrIGZvcmNl X25vdG51bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNl X25vdG51bGwgIT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9ub3RudWxsX2FsbCkp CisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+ Zm9yY2Vfbm90bnVsbCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9ub3Ru dWxsX2FsbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBD T1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtODM1LDggKzg1OCw4IEBAIFByb2Nlc3ND b3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09QWSBUTyIpKSk7CiAKIAkv KiBDaGVjayBmb3JjZV9udWxsICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgKG9wdHNf b3V0LT5mb3JjZV9udWxsICE9IE5JTCB8fAotCQkJCQkJCQlvcHRzX291dC0+Zm9yY2VfbnVsbF9h bGwpKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiAob3B0c19v dXQtPmZvcmNlX251bGwgIT0gTklMIHx8CisJCQkJCQkJCQkJCQlvcHRzX291dC0+Zm9yY2VfbnVs bF9hbGwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09Q WSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KQEAgLTg2MCw3ICs4ODMsNyBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJIk5VTEwiKSkpOwogCiAJLyogRG9u J3QgYWxsb3cgdGhlIENTViBxdW90ZSBjaGFyIHRvIGFwcGVhciBpbiB0aGUgbnVsbCBzdHJpbmcu ICovCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJgorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJgogCQlzdHJjaHIob3B0c19vdXQtPm51bGxfcHJpbnQsIG9wdHNf b3V0LT5xdW90ZVswXSkgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTg3Nyw2ICs5MDAsMTIgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgZXJybXNnKCJDT1BZICVz IGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiRlJFRVpFIiwKIAkJCQkJCSJDT1BZIFRPIikpKTsK IAorCS8qIENoZWNrIGpzb24gZm9ybWF0ICAqLworCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0pTT04gJiYgaXNfZnJvbSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSBqc29u IG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIsICJDT1BZIEZST00iKSk7CisKIAlpZiAob3B0 c19vdXQtPmRlZmF1bHRfcHJpbnQpCiAJewogCQlpZiAoIWlzX2Zyb20pCkBAIC04OTYsNyArOTI1 LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkiREVG QVVMVCIpKSk7CiAKIAkJLyogRG9uJ3QgYWxsb3cgdGhlIENTViBxdW90ZSBjaGFyIHRvIGFwcGVh ciBpbiB0aGUgZGVmYXVsdCBzdHJpbmcuICovCi0JCWlmIChvcHRzX291dC0+Y3N2X21vZGUgJiYK KwkJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmCiAJCQlzdHJjaHIo b3B0c19vdXQtPmRlZmF1bHRfcHJpbnQsIG9wdHNfb3V0LT5xdW90ZVswXSkgIT0gTlVMTCkKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKQEAgLTkxMyw3ICs5NDIsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkgZXJybXNnKCJOVUxMIHNwZWNpZmljYXRpb24gYW5kIERFRkFVTFQgc3Bl Y2lmaWNhdGlvbiBjYW5ub3QgYmUgdGhlIHNhbWUiKSkpOwogCX0KIAkvKiBDaGVjayBvbl9lcnJv ciAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5vbl9lcnJvciAhPSBDT1BZ X09OX0VSUk9SX1NUT1ApCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklO QVJZICYmIG9wdHNfb3V0LT5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9SX1NUT1ApCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCSBlcnJt c2coIm9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlIikpKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IGJjZjY2ZjBhZGY4Li5iZmUxOTM3NTM5YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xNTUsOSArMTU1LDkgQEAgc3RhdGljIGNvbnN0IENvcHlG cm9tUm91dGluZSBDb3B5RnJvbVJvdXRpbmVCaW5hcnkgPSB7CiBzdGF0aWMgY29uc3QgQ29weUZy b21Sb3V0aW5lICoKIENvcHlGcm9tR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAq b3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUpCisJaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weUZyb21Sb3V0aW5lQ1NWOwotCWVsc2UgaWYgKG9w dHMtPmJpbmFyeSkKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZ KQogCQlyZXR1cm4gJkNvcHlGcm9tUm91dGluZUJpbmFyeTsKIAogCS8qIGRlZmF1bHQgaXMgdGV4 dCAqLwpAQCAtMjYxLDcgKzI2MSw3IEBAIENvcHlGcm9tRXJyb3JDYWxsYmFjayh2b2lkICphcmcp CiAJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSk7CiAJCXJldHVybjsKIAl9Ci0JaWYgKGNzdGF0 ZS0+b3B0cy5iaW5hcnkpCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf QklOQVJZKQogCXsKIAkJLyogY2FuJ3QgdXNlZnVsbHkgZGlzcGxheSB0aGUgZGF0YSAqLwogCQlp ZiAoY3N0YXRlLT5jdXJfYXR0bmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwpp bmRleCBlODEyOGY4NWU2Yi4uMDIyNjNmMWIxZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bXBhcnNlLmMKQEAgLTE3MSw3ICsxNzEsNyBAQCBSZWNlaXZlQ29weUJlZ2luKENvcHlGcm9tU3Rh dGUgY3N0YXRlKQogewogCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAlpbnQJCQluYXR0cyA9IGxpc3Rf bGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7Ci0JaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9w dHMuYmluYXJ5ID8gMSA6IDApOworCWludDE2CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgPyAxIDogMCk7CiAJaW50CQkJaTsKIAogCXBxX2JlZ2lu bWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5SW5SZXNwb25zZSk7CkBAIC03NDcsNyArNzQ3LDcgQEAg Ym9vbAogTmV4dENvcHlGcm9tUmF3RmllbGRzKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBjaGFyICoq KmZpZWxkcywgaW50ICpuZmllbGRzKQogewogCXJldHVybiBOZXh0Q29weUZyb21SYXdGaWVsZHNJ bnRlcm5hbChjc3RhdGUsIGZpZWxkcywgbmZpZWxkcywKLQkJCQkJCQkJCQkgY3N0YXRlLT5vcHRz LmNzdl9tb2RlKTsKKwkJCQkJCQkJCQkgY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1B VF9DU1YpOwogfQogCiAvKgpAQCAtNzc0LDcgKzc3NCw3IEBAIE5leHRDb3B5RnJvbVJhd0ZpZWxk c0ludGVybmFsKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBjaGFyICoqKmZpZWxkcywgaW50ICpuZmll bGRzCiAJYm9vbAkJZG9uZTsKIAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBp bnB1dCAqLwotCUFzc2VydCghY3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KCEoY3N0YXRl LT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpKTsKIAogCS8qIG9uIGlucHV0IGNo ZWNrIHRoYXQgdGhlIGhlYWRlciBsaW5lIGlzIGNvcnJlY3QgaWYgbmVlZGVkICovCiAJaWYgKGNz dGF0ZS0+Y3VyX2xpbmVubyA9PSAwICYmIGNzdGF0ZS0+b3B0cy5oZWFkZXJfbGluZSkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMKaW5kZXggODRhM2YzODc5YTguLmMxZDRjYmVlZGVhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci90dXB0 YWJsZS5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgog I2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAg LTMxLDYgKzMyLDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Zk LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2pzb24uaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgpAQCAtMTI1LDYgKzEyNyw3IEBAIHN0YXRpYyB2b2lk IENvcHlUb0NTVk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90 KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlzX2Nzdik7CiBzdGF0aWMgdm9p ZCBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOworc3RhdGljIHZvaWQgQ29w eVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsK IHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVE ZXNjIHR1cERlc2MpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0 ZSBjc3RhdGUsIE9pZCBhdHR0eXBpZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENv cHlUb0JpbmFyeU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90 KTsKQEAgLTE0NCw3ICsxNDcsNyBAQCBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0 YXRlIGNzdGF0ZSwgaW50MTYgdmFsKTsKIC8qCiAgKiBDT1BZIFRPIHJvdXRpbmVzIGZvciBidWls dC1pbiBmb3JtYXRzLgogICoKLSAqIENTViBhbmQgdGV4dCBmb3JtYXRzIHNoYXJlIHRoZSBzYW1l IFRleHRMaWtlIHJvdXRpbmVzIGV4Y2VwdCBmb3IgdGhlCisgKiBDU1YgYW5kIHRleHQsIGpzb24g Zm9ybWF0cyBzaGFyZSB0aGUgc2FtZSBUZXh0TGlrZSByb3V0aW5lcyBleGNlcHQgZm9yIHRoZQog ICogb25lLXJvdyBjYWxsYmFjay4KICAqLwogCkBAIC0xNjQsNiArMTY3LDE0IEBAIHN0YXRpYyBj b25zdCBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVDU1YgPSB7CiAJLkNvcHlUb0VuZCA9IENv cHlUb1RleHRMaWtlRW5kLAogfTsKIAorLyoganNvbiBmb3JtYXQgKi8KK3N0YXRpYyBjb25zdCBD b3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVKc29uID0geworCS5Db3B5VG9TdGFydCA9IENvcHlU b1RleHRMaWtlU3RhcnQsCisJLkNvcHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlrZU91dEZ1bmMs CisJLkNvcHlUb09uZVJvdyA9IENvcHlUb0pzb25PbmVSb3csCisJLkNvcHlUb0VuZCA9IENvcHlU b1RleHRMaWtlRW5kLAorfTsKKwogLyogYmluYXJ5IGZvcm1hdCAqLwogc3RhdGljIGNvbnN0IENv cHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUJpbmFyeSA9IHsKIAkuQ29weVRvU3RhcnQgPSBDb3B5 VG9CaW5hcnlTdGFydCwKQEAgLTE3NiwxNiArMTg3LDE4IEBAIHN0YXRpYyBjb25zdCBDb3B5VG9S b3V0aW5lIENvcHlUb1JvdXRpbmVCaW5hcnkgPSB7CiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGlu ZSAqCiBDb3B5VG9HZXRSb3V0aW5lKGNvbnN0IENvcHlGb3JtYXRPcHRpb25zICpvcHRzKQogewot CWlmIChvcHRzLT5jc3ZfbW9kZSkKKwlpZiAob3B0cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NT VikKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwotCWVsc2UgaWYgKG9wdHMtPmJpbmFyeSkK KwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZKQogCQlyZXR1cm4g JkNvcHlUb1JvdXRpbmVCaW5hcnk7CisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0ID09IENPUFlfRk9S TUFUX0pTT04pCisJCXJldHVybiAmQ29weVRvUm91dGluZUpzb247CiAKIAkvKiBkZWZhdWx0IGlz IHRleHQgKi8KIAlyZXR1cm4gJkNvcHlUb1JvdXRpbmVUZXh0OwogfQogCi0vKiBJbXBsZW1lbnRh dGlvbiBvZiB0aGUgc3RhcnQgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzICovCisv KiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhcnQgY2FsbGJhY2sgZm9yIHRleHQsIENTViwgYW5k IGpzb24gZm9ybWF0cyAqLwogc3RhdGljIHZvaWQKIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRv U3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIHsKQEAgLTIwNCw2ICsyMTcsOCBAQCBD b3B5VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2Mp CiAJCUxpc3RDZWxsICAgKmN1cjsKIAkJYm9vbAkJaGRyX2RlbGltID0gZmFsc2U7CiAKKwkJQXNz ZXJ0KGNzdGF0ZS0+b3B0cy5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfSlNPTik7CisKIAkJZm9yZWFj aChjdXIsIGNzdGF0ZS0+YXR0bnVtbGlzdCkKIAkJewogCQkJaW50CQkJYXR0bnVtID0gbGZpcnN0 X2ludChjdXIpOwpAQCAtMjE1LDcgKzIzMCw3IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRv U3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAogCQkJY29sbmFtZSA9IE5hbWVTdHIo VHVwbGVEZXNjQXR0cih0dXBEZXNjLCBhdHRudW0gLSAxKS0+YXR0bmFtZSk7CiAKLQkJCWlmIChj c3RhdGUtPm9wdHMuY3N2X21vZGUpCisJCQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9DU1YpCiAJCQkJQ29weUF0dHJpYnV0ZU91dENTVihjc3RhdGUsIGNvbG5hbWUsIGZh bHNlKTsKIAkJCWVsc2UKIAkJCQlDb3B5QXR0cmlidXRlT3V0VGV4dChjc3RhdGUsIGNvbG5hbWUp OwpAQCAtMjI2LDcgKzI0MSw3IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0 YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIH0KIAogLyoKLSAqIEltcGxlbWVudGF0aW9uIG9mIHRo ZSBvdXRmdW5jIGNhbGxiYWNrIGZvciB0ZXh0IGFuZCBDU1YgZm9ybWF0cy4gQXNzaWduCisgKiBJ bXBsZW1lbnRhdGlvbiBvZiB0aGUgb3V0ZnVuYyBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQg anNvbiBmb3JtYXRzLiBBc3NpZ24KICAqIHRoZSBvdXRwdXQgZnVuY3Rpb24gZGF0YSB0byB0aGUg Z2l2ZW4gKmZpbmZvLgogICovCiBzdGF0aWMgdm9pZApAQCAtMjk5LDEzICszMTQsNDYgQEAgQ29w eVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLAogCUNvcHlTZW5kVGV4dExpa2VF bmRPZlJvdyhjc3RhdGUpOwogfQogCi0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxi YWNrIGZvciB0ZXh0IGFuZCBDU1YgZm9ybWF0cyAqLworLyogSW1wbGVtZW50YXRpb24gb2YgdGhl IGVuZCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzICovCiBzdGF0aWMg dm9pZAogQ29weVRvVGV4dExpa2VFbmQoQ29weVRvU3RhdGUgY3N0YXRlKQogewogCS8qIE5vdGhp bmcgdG8gZG8gaGVyZSAqLwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiBwZXItcm93IGNhbGxi YWNrIGZvciBqc29uIGZvcm1hdCAqLworc3RhdGljIHZvaWQKK0NvcHlUb0pzb25PbmVSb3coQ29w eVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlEYXR1bQkJcm93ZGF0 YTsKKwlTdHJpbmdJbmZvCXJlc3VsdDsKKworCS8qCisJICogaWYgdGhlIENPUFkgVE8gc291cmNl IGRhdGEgY29tZSBmcm9tIHF1ZXJ5IHJhdGhlciB0aGFuIHBsYWluIHRhYmxlLCB3ZSBuZWVkCisJ ICogY29weSBDb3B5VG9TdGF0ZS0+UXVlcnlEZXNjLT5UdXBsZURlc2MgdG8gc2xvdC0+dHRzX3R1 cGxlRGVzY3JpcHRvci4KKwkgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBzbG90J3Mg VHVwbGVEZXNjIG1heSBjaGFuZ2UgZHVyaW5nIHF1ZXJ5IGV4ZWN1dGlvbiwKKwkgKiBhbmQgd2Ug ZGVwZW5kIG9uIGl0IHdoZW4gY2FsbGluZyBjb21wb3NpdGVfdG9fanNvbi4KKwkgKi8KKwlpZiAo IWNzdGF0ZS0+cmVsKQorCXsKKwkJbWVtY3B5KFR1cGxlRGVzY0F0dHIoc2xvdC0+dHRzX3R1cGxl RGVzY3JpcHRvciwgMCksCisJCQkgICBUdXBsZURlc2NBdHRyKGNzdGF0ZS0+cXVlcnlEZXNjLT50 dXBEZXNjLCAwKSwKKwkJCSAgIGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLT5uYXR0cyAqIHNp emVvZihGb3JtRGF0YV9wZ19hdHRyaWJ1dGUpKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGNz dGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLT5uYXR0czsgaSsrKQorCQkJcG9wdWxhdGVfY29tcGFj dF9hdHRyaWJ1dGUoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgaSk7CisKKwkJQmxlc3NUdXBs ZURlc2Moc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcik7CisJfQorCXJvd2RhdGEgPSBFeGVjRmV0 Y2hTbG90SGVhcFR1cGxlRGF0dW0oc2xvdCk7CisJcmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsK Kwljb21wb3NpdGVfdG9fanNvbihyb3dkYXRhLCByZXN1bHQsIGZhbHNlKTsKKworCUNvcHlTZW5k RGF0YShjc3RhdGUsIHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOworCisJQ29weVNlbmRUZXh0 TGlrZUVuZE9mUm93KGNzdGF0ZSk7Cit9CisKIC8qCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg c3RhcnQgY2FsbGJhY2sgZm9yIGJpbmFyeSBmb3JtYXQuIFNlbmQgYSBoZWFkZXIKICAqIGZvciBh IGJpbmFyeSBjb3B5LgpAQCAtMzkyLDE0ICs0NDAsMjUgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9T dGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0gbGlz dF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+ b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuZm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVn aW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7CiAJcHFfc2VuZGJ5dGUoJmJ1 ZiwgZm9ybWF0KTsJLyogb3ZlcmFsbCBmb3JtYXQgKi8KLQlwcV9zZW5kaW50MTYoJmJ1ZiwgbmF0 dHMpOwotCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQotCQlwcV9zZW5kaW50MTYoJmJ1Ziwg Zm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3Jt YXQgIT0gQ09QWV9GT1JNQVRfSlNPTikKKwl7CisJCXBxX3NlbmRpbnQxNigmYnVmLCBuYXR0cyk7 CisJCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCQkJcHFfc2VuZGludDE2KCZidWYsIGZv cm1hdCk7IC8qIHBlci1jb2x1bW4gZm9ybWF0cyAqLworCX0KKwllbHNlCisJeworCQkvKgorCQkg KiBKU09OIGZvcm1hdCBpcyBhbHdheXMgb25lIG5vbi1iaW5hcnkgY29sdW1uCisJCSAqLworCQlw cV9zZW5kaW50MTYoJmJ1ZiwgMSk7CisJCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKKwl9CiAJcHFf ZW5kbWVzc2FnZSgmYnVmKTsKIAljc3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfRlJPTlRFTkQ7CiB9 CkBAIC00OTksNyArNTU4LDcgQEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUp CiB9CiAKIC8qCi0gKiBXcmFwcGVyIGZ1bmN0aW9uIG9mIENvcHlTZW5kRW5kT2ZSb3cgZm9yIHRl eHQgYW5kIENTViBmb3JtYXRzLiBTZW5kcyB0aGUKKyAqIFdyYXBwZXIgZnVuY3Rpb24gb2YgQ29w eVNlbmRFbmRPZlJvdyBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzLiBTZW5kcyB0aGUK ICAqIGxpbmUgdGVybWluYXRpb24gYW5kIGRvIGNvbW1vbiBhcHByb3ByaWF0ZSB0aGluZ3MgZm9y IHRoZSBlbmQgb2Ygcm93LgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4 IDI3MWFlMjZjYmFmLi5lMjY4ODFiYjEzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zNDkzLDYgKzM0OTMs MTAgQEAgY29weV9vcHRfaXRlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1h dCIsIChOb2RlICopIG1ha2VTdHJpbmcoImNzdiIpLCBAMSk7CiAJCQkJfQorCQkJfCBKU09OCisJ CQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5n KCJqc29uIiksIEAxKTsKKwkJCQl9CiAJCQl8IEhFQURFUl9QCiAJCQkJewogCQkJCQkkJCA9IG1h a2VEZWZFbGVtKCJoZWFkZXIiLCAoTm9kZSAqKSBtYWtlQm9vbGVhbih0cnVlKSwgQDEpOwpAQCAt MzU3NSw2ICszNTc5LDEwIEBAIGNvcHlfZ2VuZXJpY19vcHRfZWxlbToKIAkJCQl7CiAJCQkJCSQk ID0gbWFrZURlZkVsZW0oJDEsICQyLCBAMSk7CiAJCQkJfQorCQkJfCBGT1JNQVRfTEEgY29weV9n ZW5lcmljX29wdF9hcmcKKwkJCQl7CisJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIsICQy LCBAMSk7CisJCQkJfQogCQk7CiAKIGNvcHlfZ2VuZXJpY19vcHRfYXJnOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMKaW5kZXggNTE0NTI3NTVmNTguLmJmNjkzNDdmYTk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAg LTg1LDggKzg1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkFnZ1N0YXRlCiAJSnNvblVuaXF1ZUJ1 aWxkZXJTdGF0ZSB1bmlxdWVfY2hlY2s7CiB9IEpzb25BZ2dTdGF0ZTsKIAotc3RhdGljIHZvaWQg Y29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKLQkJ CQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogc3RhdGljIHZvaWQgYXJyYXlfZGltX3RvX2pz b24oU3RyaW5nSW5mbyByZXN1bHQsIGludCBkaW0sIGludCBuZGltcywgaW50ICpkaW1zLAogCQkJ CQkJCSAgRGF0dW0gKnZhbHMsIGJvb2wgKm51bGxzLCBpbnQgKnZhbGNvdW50LAogCQkJCQkJCSAg SnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5jb2lkLApAQCAtNTE2LDggKzUx NCw5IEBAIGFycmF5X3RvX2pzb25faW50ZXJuYWwoRGF0dW0gYXJyYXksIFN0cmluZ0luZm8gcmVz dWx0LCBib29sIHVzZV9saW5lX2ZlZWRzKQogCiAvKgogICogVHVybiBhIGNvbXBvc2l0ZSAvIHJl Y29yZCBpbnRvIEpTT04uCisgKiBFeHBvcnRlZCBzbyBDT1BZIFRPIGNhbiB1c2UgaXQuCiAgKi8K LXN0YXRpYyB2b2lkCit2b2lkCiBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0 cmluZ0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2ZlZWRzKQogewogCUhlYXBUdXBsZUhlYWRl ciB0ZDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA4NDMyYmU2NDFhYy4uNjA2OWIxMTg4MzQg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTMyODMsNyArMzI4Myw3IEBAIG1hdGNoX3ByZXZp b3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9N fFRPIGZpbGVuYW1lIFdJVEggKEZPUk1BVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxj b3B5IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiRk9STUFU IikpCi0JCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIpOworCQlDT01QTEVU RV9XSVRIKCJiaW5hcnkiLCAiY3N2IiwgInRleHQiLCAianNvbiIpOwogCiAJLyogQ29tcGxldGUg Q09QWSA8c3RoPiBGUk9NIGZpbGVuYW1lIFdJVEggKE9OX0VSUk9SICovCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRjaEFueSwgIldJVEgi LCAiKCIsICJPTl9FUlJPUiIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IDA2ZGZkZmVmNzIxLi4wN2Zj YzJiYzlhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtNTEsNiArNTEsMTcgQEAgdHlwZWRlZiBlbnVt IENvcHlMb2dWZXJib3NpdHlDaG9pY2UKIAlDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSwgLyog bG9ncyBhZGRpdGlvbmFsIG1lc3NhZ2VzICovCiB9IENvcHlMb2dWZXJib3NpdHlDaG9pY2U7CiAK Ky8qCisgKiBSZXByZXNlbnRzIHRoZSBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9uLgorICov Cit0eXBlZGVmIGVudW0gQ29weUZvcm1hdAoreworCUNPUFlfRk9STUFUX1RFWFQgPSAwLAorCUNP UFlfRk9STUFUX0JJTkFSWSwKKwlDT1BZX0ZPUk1BVF9DU1YsCisJQ09QWV9GT1JNQVRfSlNPTiwK K30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25zLCBp biBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1hdHRp bmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBoZXJl LCBidXQKQEAgLTYxLDkgKzcyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMK IAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLwogCWludAkJCWZpbGVfZW5j b2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsCiAJCQkJ CQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQlib29sCQliaW5hcnk7CQkJLyogYmluYXJ5 IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1hdDsJCQkvKiBmb3JtYXQgb2YgdGhlIENPUFkg b3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ ICovCi0JYm9vbAkJY3N2X21vZGU7CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAq LwogCUNvcHlIZWFkZXJDaG9pY2UgaGVhZGVyX2xpbmU7CS8qIGhlYWRlciBsaW5lPyAqLwogCWNo YXIJICAgKm51bGxfcHJpbnQ7CQkvKiBOVUxMIG1hcmtlciBzdHJpbmcgKHNlcnZlciBlbmNvZGlu ZyEpICovCiAJaW50CQkJbnVsbF9wcmludF9sZW47IC8qIGxlbmd0aCBvZiBzYW1lICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29u LmgKaW5kZXggNDliYmRhN2FjMDYuLjFmYThlMmNlOGUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9qc29uLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNyw2ICsx Nyw4IEBACiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKIAogLyogZnVuY3Rpb25zIGluIGpz b24uYyAqLworZXh0ZXJuIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBT dHJpbmdJbmZvIHJlc3VsdCwKKwkJCQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogZXh0ZXJu IHZvaWQgZXNjYXBlX2pzb24oU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRl cm4gdm9pZCBlc2NhcGVfanNvbl93aXRoX2xlbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAq c3RyLCBpbnQgbGVuKTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uX3RleHQoU3RyaW5nSW5mbyBi dWYsIGNvbnN0IHRleHQgKnR4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCAw NmJhZThjNjFhZS4uMGQ0Y2ZjMGI2MGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApA QCAtNzMsNiArNzMsODAgQEAgY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiBj MSwiY29sIHdpdGggLCBjb21tYSIsImNvbCB3aXRoICIiIHF1b3RlIgogMSxhLDEKIDIsYiwyCist LS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IGNv cHl0ZXN0IHRvIHN0ZG91dCBqc29uOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVm IiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIi OjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHls ZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9Citjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJzdHlsZSI6IkRPUyIsInRlc3Qi OiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5k ZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVy IjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxs ZXIiOjR9CistLSBhbGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7CitFUlJPUjog IGNhbm5vdCBzcGVjaWZ5IERFTElNSVRFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgbnVsbCAnXE4nKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkg TlVMTCBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwg ZGVmYXVsdCAnfCcpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBERUZBVUxUIGluIEpTT04gbW9k ZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBoZWFkZXIpOworRVJST1I6 ICBjYW5ub3Qgc3BlY2lmeSBIRUFERVIgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIHF1b3RlICciJyk7CitFUlJPUjogIENPUFkgUVVPVEUgcmVxdWly ZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZXNjYXBl ICciJyk7CitFUlJPUjogIENPUFkgRVNDQVBFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX3F1b3RlICopOworRVJST1I6ICBDT1BZ IEZPUkNFX1FVT1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAo Zm9ybWF0IGpzb24sIGZvcmNlX25vdF9udWxsICopOworRVJST1I6ICBDT1BZIEZPUkNFX05PVF9O VUxMIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIGZvcmNlX251bGwgKik7CitFUlJPUjogIENPUFkgRk9SQ0VfTlVMTCByZXF1aXJlcyBDU1Yg bW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25v cmUpOworRVJST1I6ICBDT1BZIE9OX0VSUk9SIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTwor TElORSAxOiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGln bm9yZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor Y29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKK0VSUk9SOiAgQ09QWSBqc29u IG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KKy0tIGFsbCBvZiB0aGUgYWJvdmUg c2hvdWxkIHlpZWxkIGVycm9yCistLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0 ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRl eHQsCisgICAgZjIgdGltZXN0YW1wdHopOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNl bGVjdCBnLmksCisgICAgICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAg ICAnbGluZSB3aXRoICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAg ICAgICAgICAnbGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQs CisgICAgICAgICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0 ZV9zZXJpZXMoMSw1KSBhcyBnKGkpOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkgdmFs dWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2FhYVwv YmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmInOjp0ZXh0KSwK KyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUnYWFhXHRiYmIn Ojp0ZXh0KTsKK2NvcHkgY29weWpzb250ZXN0IHRvIHN0ZG91dCBqc29uOworeyJpZCI6MSwiZjEi OiJsaW5lIHdpdGggXCIgaW4gaXQ6IDEiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAi fQoreyJpZCI6MiwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogMiIsImYyIjoiMTk5Ny0wMi0xMFQx NzozMjowMS0wODowMCJ9Cit7ImlkIjozLCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogMyIsImYy IjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjo0LCJmMSI6ImxpbmUgd2l0aCAn IGluIGl0OiA0IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjUsImYx IjoibGluZSB3aXRoIFwiIGluIGl0OiA1IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAw In0KK3siaWQiOjEsImYxIjoiYWFhXCJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjIsImYxIjoiYWFh XFxiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjMsImYxIjoiYWFhL2JiYiIsImYyIjpudWxsfQoreyJp ZCI6NCwiZjEiOiJhYWFcYmJiYiIsImYyIjpudWxsfQoreyJpZCI6NSwiZjEiOiJhYWFcZmJiYiIs ImYyIjpudWxsfQoreyJpZCI6NiwiZjEiOiJhYWFcbmJiYiIsImYyIjpudWxsfQoreyJpZCI6Nywi ZjEiOiJhYWFccmJiYiIsImYyIjpudWxsfQoreyJpZCI6OCwiZjEiOiJhYWFcdGJiYiIsImYyIjpu dWxsfQogY3JlYXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUg d2l0aCB0YWI6IAkiIHRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCAzMDA5YmRmZGY4OS4u NmVlOTZmNWFhNTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC04Miw2ICs4Miw1MyBAQCB0aGlz IGlzIGp1c3QgYSBsaW5lIGZ1bGwgb2YganVuayB0aGF0IHdvdWxkIGVycm9yIG91dCBpZiBwYXJz ZWQKIAogY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiAKKy0tLSB0ZXN0IGNv cHlpbmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IGpzb247CisKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7CisK Ky0tIGFsbCBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29weSBjb3B5dGVz dCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK2NvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgbnVsbCAnXE4nKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZGVmYXVsdCAnfCcpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBqc29uLCBoZWFkZXIpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBq c29uLCBxdW90ZSAnIicpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBl c2NhcGUgJyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2Vf cXVvdGUgKik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX25v dF9udWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9u dWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBp Z25vcmUpOworY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKKy0tIGFsbCBv ZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCisKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hh cmFjdGVycworY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJp YWwsCisgICAgZjEgdGV4dCwKKyAgICBmMiB0aW1lc3RhbXB0eik7CisKK2luc2VydCBpbnRvIGNv cHlqc29udGVzdAorICBzZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcuaSAlIDIgPSAw IFRIRU4KKyAgICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAg ICAgICAgIEVMU0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8IGcuaTo6dGV4 dAorICAgICAgICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5NyBQU1Qn CisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKKworaW5zZXJ0IGludG8gY29w eWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmIn Ojp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUn YWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRl eHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKKworY29weSBjb3B5anNvbnRlc3QgdG8gc3Rkb3V0 IGpzb247CisKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50LAogCSJjb2xu YW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOTg0 MDA2MDk5N2YuLmEyZTRiZmVlMGUyIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTAw LDYgKzUwMCw3IEBAIENvbnZlcnNpb25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29r ZWRDb25zdHJhaW50CiBDb3B5RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENv cHlGcm9tUm91dGluZQogQ29weUZyb21TdGF0ZQotLSAKMi4zNC4xCgo= --000000000000aa55e306300cd03f--