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 1uXYxk-00BVQT-IV for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Jul 2025 05:27:52 +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 1uXYxi-00GQ8L-7x for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Jul 2025 05:27:50 +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 1uXYxh-00GQ87-QV for pgsql-hackers@lists.postgresql.org; Fri, 04 Jul 2025 05:27:50 +0000 Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uXYxf-005dUE-2S for pgsql-hackers@postgresql.org; Fri, 04 Jul 2025 05:27:50 +0000 Received: by mail-vs1-xe2b.google.com with SMTP id ada2fe7eead31-4e9c6b44477so367835137.3 for ; Thu, 03 Jul 2025 22:27:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751606866; x=1752211666; 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=HMWxDWR0tR5SEN6nbpdPjcZyYi9mEBYqoXist93SSR4=; b=gtACvkJz9LIuwiWhRZwNdqRAQLTYttjZ8Di+zgM4gbHhIGNBP1SKGgEkcgU80nkmsO Ynv5400NqbwbALOShV61l/mI4nBpPsxdZD9EuGCU9rp/jifqQJyh5SA6O2S3D+EAUr8s Vr9N9YFCd5dWjVaS9OcMWwpMnGgWVN3r2Do/djOHx9SzsZYgUjihLTih7JvzTkG2WEgO F3TolVzCCHa49XTXGyyqyHlhUGqeNHir4Gf9GfxU8SlX1+jUI5I93aaV390BWUemaCOW YIGVGlopErrP48J8B7/nGtmGX/fECq+wYgAVUf+0pzOjg/X2msTh/tpJQUCKzW+tbzCa 9SCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751606866; x=1752211666; 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=HMWxDWR0tR5SEN6nbpdPjcZyYi9mEBYqoXist93SSR4=; b=v+ebOiUFwLg/deBwNdv+sSydAtgfp0OB1Zr7YWAavHNv8909pgJuwc2Q9HZb5E5CUj fwGL6sCoE16KaJkINKes0nBYptE5mRkqrKW9aM1OhMy1l+jhgmK/xic7v+XO1/rtRdHP lSZ5oQeIsGxnoS489mpNX35XuGaJNamJbKoCrCnDGiJnz6GQ4c8UajthySh1GuZkc27H 0JSh81QGGXf+UGTFTCm2+azuJU807NJVJtVLAODOYebKhWBIZmYLcljx6Gp08xr+D8AW d5adH28vwxiLjBaixcQxosj24Z/ALLXbhRpcih5kGJGL3+6BLloSZGjjAbkq+GNMmFxy 1VgQ== X-Forwarded-Encrypted: i=1; AJvYcCUyY/W1YHfYGH04Rg0zpl4+FRIl4I40OhFjfIYk/nkH7Wi2uUWFpQnqbsOap5+ZuS6hzKqFSw50E+xsDVqk@postgresql.org X-Gm-Message-State: AOJu0Yywk9ZP4DZt96BowKs6PdEsiPtSmr2ob65/d21mc4INz1bMIR5f kIOcqJl21iHTzn3JeDA7B6zVIFXIMfs7/EeD2U+q0j5eIEenY/iQUe7A+OD0F+BfeumKpYUdwmS 6a315xVD9fJe5YeZB3xlzm8cxAIasLZA= X-Gm-Gg: ASbGncvLQox6Wge24IpYpYGNknuqemGjDVx282iVobulaR/CqxfAP4RiTmBOpBkjFk4 QSl7eDkiCZ5Rypunavoia4C5OdBIVBJOXqAYphVI9pJ3nF9Y1Wi2mbRoFfI1QiJnuvO2F14pLNI 8m1k4KB6B/jlQlazkz8q88ECI4ZzbJL/dZEW94kkrBZHYk6WdO8RNj7uQXVlYS/Z6AVIYzT7MvH R4= X-Google-Smtp-Source: AGHT+IEcJJyY9KEmJkZtyaD94DnF5zjnw7TKa/PXCBoJRXljp63dSm9VUyzdP3tp24mrhMnZOmbtFFnWssomj/EAF1w= X-Received: by 2002:a05:6102:160b:b0:4e9:968b:4409 with SMTP id ada2fe7eead31-4f2f1ef26b6mr312505137.17.1751606865781; Thu, 03 Jul 2025 22:27:45 -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: Fri, 4 Jul 2025 13:27:08 +0800 X-Gm-Features: Ac12FXzaUM_N27RYR_uF7vfjHTCLyZYKc-IViAh0VlhTfIpaaHJQfeAUBofCrsA 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="0000000000000588a4063913c123" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000588a4063913c123 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 11, 2025 at 4:23=E2=80=AFPM jian he wrote: > hi. rebase and minor tweaks. --0000000000000588a4063913c123 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0002-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v17-0002-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcodh5f01 RnJvbSA0NGM0OTRmZDhkN2ZkYjlkOGZkNWQyZDJhNDhmNDliNzc5ZDFiY2I5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNCBKdWwgMjAyNSAxMzoyNTowMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE3 IDIvMl0gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZPUk1BVAoKZm9yY2Vf YXJyYXkgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgaW4gQ09QWSBUTyB3aXRoIEpTT04gZm9ybWF0 LiAgaXQgbWFrZSB0aGUKb3V0cHV0IGpzb24gb3V0cHV0IGJlaGF2ZSBsaWtlIGpzb24gYXJyYXkg dHlwZS4gIHJlZmFjdG9yZWQgYnkgSnVud2FuZyBaaGFvIHRvCmFkYXB0IHRoZSBuZXdseSBpbnRy b2R1Y2VkIENvcHlUb1JvdXRpbmUgc3RydWN0KDJlNDEyN2I2ZDIpLgoKQXV0aG9yOiBKb2UgQ29u d2F5IDxtYWlsQGpvZWNvbndheS5jb20+CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0FMdmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0RrY2clNDBt YWlsLmdtYWlsLmNvbQpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzZhMDQ2MjhkLTBk NTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bqb2Vjb253YXkuY29tCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9jb3B5LnNnbWwgICAgICAgICB8IDE0ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5LmMgICAgICAgIHwgMTMgKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jICAgICAgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5v dXQgfCAyMyArKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNx bCAgICAgIHwgIDggKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggMjE5NjA0YWQzMDYuLmMwMTkyNzg2NGJk IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NvcHkuc2dtbApAQCAtNDAsNiArNDAsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgSEVBREVSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3Jl cGxhY2VhYmxlPiB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBs YWNlYWJsZT4gfCBNQVRDSCBdCiAgICAgUVVPVEUgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5xdW90ZV9jaGFyYWN0ZXI8L3JlcGxhY2VhYmxlPicKICAgICBFU0NBUEUgJzxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lc2NhcGVfY2hhcmFjdGVyPC9yZXBsYWNlYWJsZT4nCisg ICAgRk9SQ0VfQVJSQVkgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwv cmVwbGFjZWFibGU+IF0KICAgICBGT1JDRV9RVU9URSB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CiAgICAg Rk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05VTEwgeyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gKSB8ICogfQpAQCAtMzY2LDYgKzM2NywxOSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNFX0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFj a2V0cyBhcyBhcnJheSBkZWNvcmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5k IG9mIG91dHB1dCwgYW5kIGNvbW1hcyBiZXR3ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9u bHkgaW4KKyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVz aW5nCisgICAgICA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlz CisgICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRl cm0+PGxpdGVyYWw+Rk9SQ0VfUVVPVEU8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHkuYwppbmRleCAyMTNlNTljYzQzNS4uZDIzZWY5OWUzOTUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMKQEAgLTUxNCw2ICs1MTQsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCWxvZ192 ZXJib3NpdHlfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9vbAkJcmVqZWN0X2xpbWl0X3NwZWNpZmll ZCA9IGZhbHNlOworCWJvb2wJCWZvcmNlX2FycmF5X3NwZWNpZmllZCA9IGZhbHNlOwogCUxpc3RD ZWxsICAgKm9wdGlvbjsKIAogCS8qIFN1cHBvcnQgZXh0ZXJuYWwgdXNlIGZvciBvcHRpb24gc2Fu aXR5IGNoZWNraW5nICovCkBAIC02NzAsNiArNjcxLDEzIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCWRlZmVsLT5kZWZuYW1lKSwKIAkJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CiAJCX0KKwkJZWxzZSBp ZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZm9yY2VfYXJyYXkiKSA9PSAwKQorCQl7CisJCQlp ZiAoZm9yY2VfYXJyYXlfc3BlY2lmaWVkKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRl ZmVsLCBwc3RhdGUpOworCQkJZm9yY2VfYXJyYXlfc3BlY2lmaWVkID0gdHJ1ZTsKKwkJCW9wdHNf b3V0LT5mb3JjZV9hcnJheSA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQl9CiAJCWVsc2UgaWYg KHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgIm9uX2Vycm9yIikgPT0gMCkKIAkJewogCQkJaWYgKG9u X2Vycm9yX3NwZWNpZmllZCkKQEAgLTkxOCw2ICs5MjYsMTEgQEAgUHJvY2Vzc0NvcHlPcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAogCQkJCWVycm1zZygiQ09QWSAlcyBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGgg JXMiLCAianNvbiIsICJDT1BZIEZST00iKSk7CiAKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBD T1BZX0ZPUk1BVF9KU09OICYmIG9wdHNfb3V0LT5mb3JjZV9hcnJheSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVy cm1zZygiQ09QWSAlcyBjYW4gb25seSB1c2VkIHdpdGggSlNPTiBtb2RlIiwgIkZPUkNFX0FSUkFZ IikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9t KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCAzNGI3MjkzNmJjYS4uMTgwNjE2NjFmYjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCkBAIC04NCw2ICs4NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9T dGF0ZURhdGEKIAlMaXN0CSAgICphdHRudW1saXN0OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51 bXMgdG8gY29weSAqLwogCWNoYXIJICAgKmZpbGVuYW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwg Zm9yIFNURE9VVCAqLwogCWJvb2wJCWlzX3Byb2dyYW07CQkvKiBpcyAnZmlsZW5hbWUnIGEgcHJv Z3JhbSB0byBwb3Blbj8gKi8KKworCS8qIG5lZWQgZGVsaW1pdGVyIHRvIHN0YXJ0IG5leHQganNv biBhcnJheSBlbGVtZW50ICovCisJYm9vbAkJanNvbl9yb3dfZGVsaW1fbmVlZGVkOworCiAJY29w eV9kYXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRh ICovCiAKIAlDb3B5Rm9ybWF0T3B0aW9ucyBvcHRzOwpAQCAtMTI4LDYgKzEzMiw3IEBAIHN0YXRp YyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlzX2Nzdik7CiBzdGF0aWMgdm9pZCBDb3B5VG9U ZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOwogc3RhdGljIHZvaWQgQ29weVRvSnNvbk9u ZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKK3N0YXRpYyB2 b2lkIENvcHlUb0pzb25FbmQoQ29weVRvU3RhdGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlU b0JpbmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwogc3Rh dGljIHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0ZSBjc3RhdGUsIE9pZCBhdHR0 eXBpZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeU9uZVJvdyhD b3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKQEAgLTE3Miw3ICsxNzcs NyBAQCBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lSnNvbiA9IHsKIAku Q29weVRvU3RhcnQgPSBDb3B5VG9UZXh0TGlrZVN0YXJ0LAogCS5Db3B5VG9PdXRGdW5jID0gQ29w eVRvVGV4dExpa2VPdXRGdW5jLAogCS5Db3B5VG9PbmVSb3cgPSBDb3B5VG9Kc29uT25lUm93LAot CS5Db3B5VG9FbmQgPSBDb3B5VG9UZXh0TGlrZUVuZCwKKwkuQ29weVRvRW5kID0gQ29weVRvSnNv bkVuZCwKIH07CiAKIC8qIGJpbmFyeSBmb3JtYXQgKi8KQEAgLTIzOCw2ICsyNDMsMTYgQEAgQ29w eVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQog CiAJCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogCX0KKworCS8qCisJICogSWYg SlNPTiBoYXMgYmVlbiByZXF1ZXN0ZWQsIGFuZCBGT1JDRV9BUlJBWSBoYXMgYmVlbiBzcGVjaWZp ZWQgc2VuZCB0aGUKKwkgKiBvcGVuaW5nIGJyYWNrZXQuCisJICovCisJaWYgKGNzdGF0ZS0+b3B0 cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkp CisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnWycpOworCQlDb3B5U2VuZFRleHRMaWtlRW5k T2ZSb3coY3N0YXRlKTsKKwl9CiB9CiAKIC8qCkBAIC0zNDksMTEgKzM2NCwzMSBAQCBDb3B5VG9K c29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJcmVz dWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKIAljb21wb3NpdGVfdG9fanNvbihyb3dkYXRhLCByZXN1 bHQsIGZhbHNlKTsKIAorCWlmIChjc3RhdGUtPmpzb25fcm93X2RlbGltX25lZWRlZCAmJiBjc3Rh dGUtPm9wdHMuZm9yY2VfYXJyYXkpCisJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICcsJyk7CisJZWxz ZSBpZiAoY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCXsKKwkJLyogZmlyc3Qgcm93IG5lZWRz IG5vIGRlbGltaXRlciAqLworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnICcpOworCQljc3RhdGUt Pmpzb25fcm93X2RlbGltX25lZWRlZCA9IHRydWU7CisJfQorCiAJQ29weVNlbmREYXRhKGNzdGF0 ZSwgcmVzdWx0LT5kYXRhLCByZXN1bHQtPmxlbik7CiAKIAlDb3B5U2VuZFRleHRMaWtlRW5kT2ZS b3coY3N0YXRlKTsKIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGVuZCBjYWxsYmFjayBm b3IganNvbiBmb3JtYXQgKi8KK3N0YXRpYyB2b2lkCitDb3B5VG9Kc29uRW5kKENvcHlUb1N0YXRl IGNzdGF0ZSkKK3sKKwlpZiAoY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCXsKKwkJQ29weVNl bmRDaGFyKGNzdGF0ZSwgJ10nKTsKKwkJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7 CisJfQorfQorCiAvKgogICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNhbGxiYWNrIGZv ciBiaW5hcnkgZm9ybWF0LiBTZW5kIGEgaGVhZGVyCiAgKiBmb3IgYSBiaW5hcnkgY29weS4KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwppbmRleCBiZDRjMDNiZTA1MC4uNTUzMTM2MTIzOTggMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKQEAgLTMzMDMsNyArMzMwMyw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hB bnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgi Rk9STUFUIiwgIkZSRUVaRSIsICJERUxJTUlURVIiLCAiTlVMTCIsCiAJCQkJCSAgIkhFQURFUiIs ICJRVU9URSIsICJFU0NBUEUiLCAiRk9SQ0VfUVVPVEUiLAotCQkJCQkgICJGT1JDRV9OT1RfTlVM TCIsICJGT1JDRV9OVUxMIiwgIkVOQ09ESU5HIiwgIkRFRkFVTFQiLAorCQkJCQkgICJGT1JDRV9O T1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkZPUkNFX0FSUkFZIiwgIkVOQ09ESU5HIiwgIkRFRkFV TFQiLAogCQkJCQkgICJPTl9FUlJPUiIsICJMT0dfVkVSQk9TSVRZIiwgIlJFSkVDVF9MSU1JVCIp OwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZPUk1B VCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IDg1YWVkYzI2N2Q2Li43Mjc0YjBkM2NhNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaApAQCAtODcsNiArODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0 aW9ucwogCUxpc3QJICAgKmZvcmNlX25vdG51bGw7CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICov CiAJYm9vbAkJZm9yY2Vfbm90bnVsbF9hbGw7CS8qIEZPUkNFX05PVF9OVUxMICo/ICovCiAJYm9v bAkgICAqZm9yY2Vfbm90bnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk5OIGZsYWdzICov CisJYm9vbAkJZm9yY2VfYXJyYXk7CS8qIGFkZCBKU09OIGFycmF5IGRlY29yYXRpb25zICovCiAJ TGlzdAkgICAqZm9yY2VfbnVsbDsJCS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJ Zm9yY2VfbnVsbF9hbGw7IC8qIEZPUkNFX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9udWxs X2ZsYWdzOwkvKiBwZXItY29sdW1uIENTViBGTiBmbGFncyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29weS5vdXQKaW5kZXggZmNiODgyM2UxMDEuLmYzMTk2ZmQ1NjA5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weS5vdXQKQEAgLTExMCw2ICsxMTAsMjkgQEAgTElORSAxOiBjb3B5IGNvcHl0ZXN0 IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7CiBjb3B5IGNvcHl0ZXN0 IGZyb20gc3RkaW4oZm9ybWF0IGpzb24pOwogRVJST1I6ICBDT1BZIGpzb24gbW9kZSBjYW5ub3Qg YmUgdXNlZCB3aXRoIENPUFkgRlJPTQogLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQg ZXJyb3IKKy0tRXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3Jj ZV9hcnJheSB0cnVlKTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9BUlJBWSBjYW4gb25seSB1c2VkIHdp dGggSlNPTiBtb2RlCistLW9rCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s IGZvcmNlX2FycmF5KTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJm aWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9 CisseyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxl IjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7Citb CisgeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQorLHsic3R5 bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQorLHsic3R5bGUiOiJNYWMi LCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9CisseyJzdHlsZSI6ImVzY1xcYXBlIiwidGVz dCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CitdCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsKK3sic3R5bGUiOiJET1MiLCJ0 ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KK3sic3R5bGUiOiJVbml4IiwidGVzdCI6ImFi Y1xuZGVmIiwiZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZp bGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwi ZmlsbGVyIjo0fQogLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0 YWJsZSBjb3B5anNvbnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwK aW5kZXggODBiZDRhNTkyMzkuLmM1NWFhMDhlOTlkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbApAQCAt MTAwLDYgKzEwMCwxNCBAQCBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9u X2Vycm9yIGlnbm9yZSk7CiBjb3B5IGNvcHl0ZXN0IGZyb20gc3RkaW4oZm9ybWF0IGpzb24pOwog LS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IKIAorLS1FcnJvcgorY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworCistLW9r Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5KTsKK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7Citj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsK KwogLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5 anNvbnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKLS0gCjIuMzQuMQoK --0000000000000588a4063913c123 Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0001-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v17-0001-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcodh5ev0 RnJvbSA5ODQ4NDZjNDJkZWU0ZGE2YmQ3MThjYzI0MDMxYmMwMjcyZDYyZjEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNCBKdWwgMjAyNSAxMzoyMzozMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE3 IDEvMl0ganNvbiBmb3JtYXQgZm9yIENPUFkgVE8KCkpTT04gZm9ybWF0IGlzIG9ubHkgc3VwcG9y dGVkIHdpdGggdGhlIENPUFkgVE8gb3BlcmF0aW9uLiBJdCBpcyBpbmNvbXBhdGlibGUKd2l0aCBv cHRpb25zIHN1Y2ggYXMgSEVBREVSLCBERUZBVUxULCBOVUxMLCBERUxJTUlURVIsIGFuZCBzZXZl cmFsIG90aGVycy4gVGhpcwpoYXMgYmVlbiB0aG9yb3VnaGx5IHRlc3RlZCBpbiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb3B5LnNxbAoKVGhlIENvcHlGb3JtYXQgZW51bSB3YXMgb3JpZ2luYWxseSBj b250cmlidXRlZCBieSBKb2VsIEphY29ic29uCmpvZWxAY29tcGlsZXIub3JnLCBsYXRlciByZWZh Y3RvcmVkIGJ5IEppYW4gSGUgdG8gYWRkcmVzcyB2YXJpb3VzIGlzc3VlcywgYW5kCmZ1cnRoZXIg YWRhcHRlZCBieSBKdW53YW5nIFpoYW8gdG8gc3VwcG9ydCB0aGUgbmV3bHkgaW50cm9kdWNlZCBD b3B5VG9Sb3V0aW5lCnN0cnVjdCAoY29tbWl0IDJlNDEyN2I2ZDIpLgoKQXV0aG9yOiBKb2UgQ29u d2F5IDxtYWlsQGpvZWNvbndheS5jb20+ClJldmlld2VkLWJ5OiAiQW5kcmV5IE0uIEJvcm9kaW4i IDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4sClJldmlld2VkLWJ5OiBEZWFuIFJhc2hlZWQgPGRlYW4u YS5yYXNoZWVkQGdtYWlsLmNvbT4sClJldmlld2VkLWJ5OiBEYW5pZWwgVmVyaXRlIDxkYW5pZWxA bWFuaXRvdS1tYWlsLm9yZz4sClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4sClJldmlld2VkLWJ5OiBEYXZpbiBTaGVhcmVyIDxkYXZpbkBhcGFjaGUub3Jn PiwKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwK UmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KCmRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FMdmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6 Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0RrY2clNDBtYWlsLmdtYWlsLmNvbQpkaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tLzZhMDQ2MjhkLTBkNTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bq b2Vjb253YXkuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgIHwg MTMgKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICB8IDc5ICsrKysr KysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAg ICAgfCAgNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIHwgIDcgKyst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgfCA4MyArKysrKysrKysrKysr KysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgfCAg OCArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgICAgICAgICB8ICA1ICstCiBzcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weS5oICAgICAgICAgIHwgMTQgKysrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2pzb24u aCAgICAgICAgICAgICB8ICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQg ICB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHkuc3FsICAgICAgICB8IDQ2ICsrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgIHwgIDEgKwogMTMgZmlsZXMgY2hhbmdlZCwgMjg4IGluc2VydGlvbnMo KyksIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggYzJkMWZiYzFmYmUuLjIxOTYw NGFkMzA2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtMjI4LDEwICsyMjgsMTUgQEAgQ09QWSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZQogICAgICAgU2VsZWN0cyB0aGUgZGF0YSBmb3JtYXQgdG8gYmUgcmVhZCBvciB3 cml0dGVuOgogICAgICAgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4sCiAgICAgICA8bGl0ZXJhbD5j c3Y8L2xpdGVyYWw+IChDb21tYSBTZXBhcmF0ZWQgVmFsdWVzKSwKKyAgICAgIDxsaXRlcmFsPmpz b248L2xpdGVyYWw+IChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbiksCiAgICAgICBvciA8bGl0 ZXJhbD5iaW5hcnk8L2xpdGVyYWw+LgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+dGV4 dDwvbGl0ZXJhbD4uCiAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLWNvcHktZmlsZS1mb3Jt YXRzIi8+IGJlbG93IGZvciBkZXRhaWxzLgogICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAg ICAgVGhlIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4K KyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LgorICAgICA8L3BhcmE+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yNjYsNyArMjcxLDcgQEAgQ09QWSB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZQogICAgICAgKGxpbmUpIG9mIHRoZSBmaWxlLiAgVGhlIGRlZmF1bHQg aXMgYSB0YWIgY2hhcmFjdGVyIGluIHRleHQgZm9ybWF0LAogICAgICAgYSBjb21tYSBpbiA8bGl0 ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgIFRoaXMgbXVzdCBiZSBhIHNpbmdsZSBv bmUtYnl0ZSBjaGFyYWN0ZXIuCi0gICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVu IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRp b24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9y IDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI4MCw3ICsyODUsNyBAQCBDT1BZIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICgg PHJlcGxhY2VhYmxlCiAgICAgICBzdHJpbmcgaW4gPGxpdGVyYWw+Q1NWPC9saXRlcmFsPiBmb3Jt YXQuIFlvdSBtaWdodCBwcmVmZXIgYW4KICAgICAgIGVtcHR5IHN0cmluZyBldmVuIGluIHRleHQg Zm9ybWF0IGZvciBjYXNlcyB3aGVyZSB5b3UgZG9uJ3Qgd2FudCB0bwogICAgICAgZGlzdGluZ3Vp c2ggbnVsbHMgZnJvbSBlbXB0eSBzdHJpbmdzLgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFs bG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAg IFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4K IAogICAgICA8bm90ZT4KQEAgLTMwMyw3ICszMDgsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgICBpcyBmb3VuZCBpbiB0aGUgaW5wdXQgZmlsZSwgdGhlIGRlZmF1bHQgdmFsdWUgb2Yg dGhlIGNvcnJlc3BvbmRpbmcgY29sdW1uCiAgICAgICB3aWxsIGJlIHVzZWQuCiAgICAgICBUaGlz IG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPiwg YW5kIG9ubHkgd2hlbgotICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4g Zm9ybWF0LgorICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxp dGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMzMwLDcgKzMzNSw3IEBAIENPUFkgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUKICAgICAgIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gY29tbWFuZHMuCiAg ICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dl ZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhp cyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVy YWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBmYWU5 YzQxZGI2NS4uMjEzZTU5Y2M0MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTUyMSw2ICs1MjEsOCBA QCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlvcHRzX291dCA9IChD b3B5Rm9ybWF0T3B0aW9ucyAqKSBwYWxsb2MwKHNpemVvZihDb3B5Rm9ybWF0T3B0aW9ucykpOwog CiAJb3B0c19vdXQtPmZpbGVfZW5jb2RpbmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLwor CW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRp b25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0 aW9ucykKQEAgLTUzNSwxMSArNTM3LDEzIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJ CQlmb3JtYXRfc3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09 IDApCi0JCQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENP UFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZ X0ZPUk1BVF9CSU5BUlk7CisJCQllbHNlIGlmIChzdHJjbXAoZm10LCAianNvbiIpID09IDApCisJ CQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0pTT047CiAJCQllbHNlCiAJCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLApAQCAtNjk5LDMxICs3MDMsNDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhl c2UgdGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRz X291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJLyotIHRyYW5zbGF0b3I6 ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkg ZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkp OwogCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYg KG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291dC0+ZGVsaW0p CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9O X0VSUk9SICovCisJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1vZGUiLCAi REVMSU1JVEVSIikpOworCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklO QVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAl cyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291dC0+YmluYXJ5ICYm IG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlf Rk9STUFUX0pTT04gJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJZXJybXNnKCJjYW5ub3Qgc3Bl Y2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiTlVMTCIpKTsKKworCWlmIChvcHRzX291dC0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVy cm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVGQVVMVCIpKSk7CiAK KwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYmIG9wdHNfb3V0LT5k ZWZhdWx0X3ByaW50KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCWVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gSlNPTiBtb2RlIiwg IkRFRkFVTFQiKSk7CisKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwog CWlmICghb3B0c19vdXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2 X21vZGUgPyAiLCIgOiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0NTViA/ICIsIiA6ICJcdCI7CiAKIAlpZiAoIW9wdHNfb3V0LT5udWxs X3ByaW50KQotCQlvcHRzX291dC0+bnVsbF9wcmludCA9IG9wdHNfb3V0LT5jc3ZfbW9kZSA/ICIi IDogIlxcTiI7CisJCW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQtPmZvcm1hdCA9PSBD T1BZX0ZPUk1BVF9DU1YgPyAiIiA6ICJcXE4iOwogCW9wdHNfb3V0LT5udWxsX3ByaW50X2xlbiA9 IHN0cmxlbihvcHRzX291dC0+bnVsbF9wcmludCk7CiAKLQlpZiAob3B0c19vdXQtPmNzdl9tb2Rl KQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAl7CiAJCWlmICgh b3B0c19vdXQtPnF1b3RlKQogCQkJb3B0c19vdXQtPnF1b3RlID0gIlwiIjsKQEAgLTc3MSw3ICs3 OTEsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqIGZ1dHVy ZS1wcm9vZmluZy4gIExpa2V3aXNlIHdlIGRpc2FsbG93IGFsbCBkaWdpdHMgdGhvdWdoIG9ubHkg b2N0YWwKIAkgKiBkaWdpdHMgYXJlIGFjdHVhbGx5IGRhbmdlcm91cy4KIAkgKi8KLQlpZiAoIW9w dHNfb3V0LT5jc3ZfbW9kZSAmJgorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFU X0NTViAmJgogCQlzdHJjaHIoIlxcLmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4 OSIsCiAJCQkgICBvcHRzX291dC0+ZGVsaW1bMF0pICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1Is CkBAIC03NzksNDMgKzc5OSw0OCBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCSBlcnJtc2coIkNPUFkgZGVsaW1pdGVyIGNhbm5vdCBiZSBcIiVzXCIiLCBvcHRz X291dC0+ZGVsaW0pKSk7CiAKIAkvKiBDaGVjayBoZWFkZXIgKi8KLQlpZiAob3B0c19vdXQtPmJp bmFyeSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCisJaWYg KG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5oZWFk ZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAl cyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVy cm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiSEVBREVSIikpKTsKIAor CWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgb3B0c19vdXQtPmhl YWRlcl9saW5lKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09O IG1vZGUiLCAiSEVBREVSIikpOworCiAJLyogQ2hlY2sgcXVvdGUgKi8KLQlpZiAoIW9wdHNfb3V0 LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+cXVvdGUgIT0gTlVMTCkKKwlpZiAob3B0c19vdXQtPmZv cm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQtPnF1b3RlICE9IE5VTEwpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5n LiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coIkNPUFkgJXMgcmVxdWlyZXMgQ1NWIG1vZGUiLCAi UVVPVEUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19vdXQt PnF1b3RlKSAhPSAxKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAm JiBzdHJsZW4ob3B0c19vdXQtPnF1b3RlKSAhPSAxKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJDT1BZ IHF1b3RlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAotCWlmIChv cHRzX291dC0+Y3N2X21vZGUgJiYgb3B0c19vdXQtPmRlbGltWzBdID09IG9wdHNfb3V0LT5xdW90 ZVswXSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19v dXQtPmRlbGltWzBdID09IG9wdHNfb3V0LT5xdW90ZVswXSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNn KCJDT1BZIGRlbGltaXRlciBhbmQgcXVvdGUgbXVzdCBiZSBkaWZmZXJlbnQiKSkpOwogCiAJLyog Q2hlY2sgZXNjYXBlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgb3B0c19vdXQtPmVz Y2FwZSAhPSBOVUxMKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAm JiBvcHRzX291dC0+ZXNjYXBlICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMg aXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJt c2coIkNPUFkgJXMgcmVxdWlyZXMgQ1NWIG1vZGUiLCAiRVNDQVBFIikpKTsKIAotCWlmIChvcHRz X291dC0+Y3N2X21vZGUgJiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCisJaWYgKG9w dHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+ZXNj YXBlKSAhPSAxKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJDT1BZIGVzY2FwZSBtdXN0IGJlIGEgc2lu Z2xlIG9uZS1ieXRlIGNoYXJhY3RlciIpKSk7CiAKIAkvKiBDaGVjayBmb3JjZV9xdW90ZSAqLwot CWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRzX291dC0+Zm9yY2VfcXVvdGUgfHwgb3B0 c19vdXQtPmZvcmNlX3F1b3RlX2FsbCkpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9G T1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfcXVvdGUgfHwgb3B0c19vdXQtPmZvcmNlX3F1 b3RlX2FsbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBD T1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtODI5LDggKzg1NCw4IEBAIFByb2Nlc3ND b3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09QWSBGUk9NIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX25vdG51bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAo b3B0c19vdXQtPmZvcmNlX25vdG51bGwgIT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3Jj ZV9ub3RudWxsX2FsbCkpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NW ICYmIChvcHRzX291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNf b3V0LT5mb3JjZV9ub3RudWxsX2FsbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMg dGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtODQ1LDggKzg3 MCw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09Q WSBUTyIpKSk7CiAKIAkvKiBDaGVjayBmb3JjZV9udWxsICovCi0JaWYgKCFvcHRzX291dC0+Y3N2 X21vZGUgJiYgKG9wdHNfb3V0LT5mb3JjZV9udWxsICE9IE5JTCB8fAotCQkJCQkJCQlvcHRzX291 dC0+Zm9yY2VfbnVsbF9hbGwpKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFU X0NTViAmJiAob3B0c19vdXQtPmZvcmNlX251bGwgIT0gTklMIHx8CisJCQkJCQkJCQkJCQlvcHRz X291dC0+Zm9yY2VfbnVsbF9hbGwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRo ZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KQEAgLTg3MCw3ICs4OTUs NyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJIk5VTEwi KSkpOwogCiAJLyogRG9uJ3QgYWxsb3cgdGhlIENTViBxdW90ZSBjaGFyIHRvIGFwcGVhciBpbiB0 aGUgbnVsbCBzdHJpbmcuICovCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJgorCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJgogCQlzdHJjaHIob3B0c19vdXQtPm51 bGxfcHJpbnQsIG9wdHNfb3V0LT5xdW90ZVswXSkgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTg4Nyw2 ICs5MTIsMTIgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkg ZXJybXNnKCJDT1BZICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiRlJFRVpFIiwKIAkJCQkJ CSJDT1BZIFRPIikpKTsKIAorCS8qIENoZWNrIGpzb24gZm9ybWF0ICAqLworCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgaXNfZnJvbSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVy cm1zZygiQ09QWSAlcyBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAianNvbiIsICJDT1BZ IEZST00iKSk7CisKIAlpZiAob3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCiAJewogCQlpZiAoIWlz X2Zyb20pCkBAIC05MDYsNyArOTM3LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJCQkJCQkiREVGQVVMVCIpKSk7CiAKIAkJLyogRG9uJ3QgYWxsb3cgdGhlIENT ViBxdW90ZSBjaGFyIHRvIGFwcGVhciBpbiB0aGUgZGVmYXVsdCBzdHJpbmcuICovCi0JCWlmIChv cHRzX291dC0+Y3N2X21vZGUgJiYKKwkJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JN QVRfQ1NWICYmCiAJCQlzdHJjaHIob3B0c19vdXQtPmRlZmF1bHRfcHJpbnQsIG9wdHNfb3V0LT5x dW90ZVswXSkgIT0gTlVMTCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKQEAgLTkyMyw3ICs5NTQsNyBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgZXJybXNnKCJOVUxMIHNwZWNpZmlj YXRpb24gYW5kIERFRkFVTFQgc3BlY2lmaWNhdGlvbiBjYW5ub3QgYmUgdGhlIHNhbWUiKSkpOwog CX0KIAkvKiBDaGVjayBvbl9lcnJvciAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNf b3V0LT5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9SX1NUT1ApCisJaWYgKG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5vbl9lcnJvciAhPSBDT1BZX09O X0VSUk9SX1NUT1ApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAogCQkJCSBlcnJtc2coIm9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGlu IEJJTkFSWSBtb2RlIikpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IGZiYmJjMDlhOTdi Li42YzRiZDMwMzg0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xNTUsOSArMTU1LDkg QEAgc3RhdGljIGNvbnN0IENvcHlGcm9tUm91dGluZSBDb3B5RnJvbVJvdXRpbmVCaW5hcnkgPSB7 CiBzdGF0aWMgY29uc3QgQ29weUZyb21Sb3V0aW5lICoKIENvcHlGcm9tR2V0Um91dGluZShjb25z dCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUpCisJaWYg KG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weUZyb21Sb3V0 aW5lQ1NWOwotCWVsc2UgaWYgKG9wdHMtPmJpbmFyeSkKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfQklOQVJZKQogCQlyZXR1cm4gJkNvcHlGcm9tUm91dGluZUJpbmFyeTsK IAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwpAQCAtMjYxLDcgKzI2MSw3IEBAIENvcHlGcm9tRXJy b3JDYWxsYmFjayh2b2lkICphcmcpCiAJCQkJICAgY3N0YXRlLT5jdXJfcmVsbmFtZSk7CiAJCXJl dHVybjsKIAl9Ci0JaWYgKGNzdGF0ZS0+b3B0cy5iaW5hcnkpCisJaWYgKGNzdGF0ZS0+b3B0cy5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZKQogCXsKIAkJLyogY2FuJ3QgdXNlZnVsbHkgZGlz cGxheSB0aGUgZGF0YSAqLwogCQlpZiAoY3N0YXRlLT5jdXJfYXR0bmFtZSkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBiMWFlOTdiODMzZC4uNTc4ZTZjMGM5YTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTE3MSw3ICsxNzEsNyBAQCBSZWNlaXZl Q29weUJlZ2luKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogewogCVN0cmluZ0luZm9EYXRhIGJ1ZjsK IAlpbnQJCQluYXR0cyA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7Ci0JaW50MTYJ CWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuYmluYXJ5ID8gMSA6IDApOworCWludDE2CQlmb3JtYXQg PSAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgPyAxIDogMCk7CiAJ aW50CQkJaTsKIAogCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5SW5SZXNwb25zZSk7 CkBAIC03NDcsNyArNzQ3LDcgQEAgYm9vbAogTmV4dENvcHlGcm9tUmF3RmllbGRzKENvcHlGcm9t U3RhdGUgY3N0YXRlLCBjaGFyICoqKmZpZWxkcywgaW50ICpuZmllbGRzKQogewogCXJldHVybiBO ZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChjc3RhdGUsIGZpZWxkcywgbmZpZWxkcywKLQkJ CQkJCQkJCQkgY3N0YXRlLT5vcHRzLmNzdl9tb2RlKTsKKwkJCQkJCQkJCQkgY3N0YXRlLT5vcHRz LmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpOwogfQogCiAvKgpAQCAtNzc0LDcgKzc3NCw4IEBA IE5leHRDb3B5RnJvbVJhd0ZpZWxkc0ludGVybmFsKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBjaGFy ICoqKmZpZWxkcywgaW50ICpuZmllbGRzCiAJYm9vbAkJZG9uZSA9IGZhbHNlOwogCiAJLyogb25s eSBhdmFpbGFibGUgZm9yIHRleHQgb3IgY3N2IGlucHV0ICovCi0JQXNzZXJ0KCFjc3RhdGUtPm9w dHMuYmluYXJ5KTsKKwlBc3NlcnQoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9U RVhUIHx8CisJCSAgIGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIAog CS8qIG9uIGlucHV0IGNoZWNrIHRoYXQgdGhlIGhlYWRlciBsaW5lIGlzIGNvcnJlY3QgaWYgbmVl ZGVkICovCiAJaWYgKGNzdGF0ZS0+Y3VyX2xpbmVubyA9PSAwICYmIGNzdGF0ZS0+b3B0cy5oZWFk ZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggNjdi OTRiOTFjYWUuLjM0YjcyOTM2YmNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtMjQsNiArMjQs NyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgImZ1 bmNhcGkuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTMxLDYgKzMyLDcgQEAKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidGNvcC90 Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgpAQCAtMTI1LDYgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIENvcHlUb0NTVk9uZVJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0YXRpYyB2b2lkIENvcHlU b1RleHRMaWtlT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qs CiAJCQkJCQkJCSBib29sIGlzX2Nzdik7CiBzdGF0aWMgdm9pZCBDb3B5VG9UZXh0TGlrZUVuZChD b3B5VG9TdGF0ZSBjc3RhdGUpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9T dGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0YXRpYyB2b2lkIENvcHlUb0Jp bmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwogc3RhdGlj IHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0ZSBjc3RhdGUsIE9pZCBhdHR0eXBp ZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeU9uZVJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKQEAgLTE0NCw3ICsxNDcsNyBA QCBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0YXRlIGNzdGF0ZSwgaW50MTYgdmFs KTsKIC8qCiAgKiBDT1BZIFRPIHJvdXRpbmVzIGZvciBidWlsdC1pbiBmb3JtYXRzLgogICoKLSAq IENTViBhbmQgdGV4dCBmb3JtYXRzIHNoYXJlIHRoZSBzYW1lIFRleHRMaWtlIHJvdXRpbmVzIGV4 Y2VwdCBmb3IgdGhlCisgKiBDU1YgYW5kIHRleHQsIGpzb24gZm9ybWF0cyBzaGFyZSB0aGUgc2Ft ZSBUZXh0TGlrZSByb3V0aW5lcyBleGNlcHQgZm9yIHRoZQogICogb25lLXJvdyBjYWxsYmFjay4K ICAqLwogCkBAIC0xNjQsNiArMTY3LDE0IEBAIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lIENv cHlUb1JvdXRpbmVDU1YgPSB7CiAJLkNvcHlUb0VuZCA9IENvcHlUb1RleHRMaWtlRW5kLAogfTsK IAorLyoganNvbiBmb3JtYXQgKi8KK3N0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lIENvcHlUb1Jv dXRpbmVKc29uID0geworCS5Db3B5VG9TdGFydCA9IENvcHlUb1RleHRMaWtlU3RhcnQsCisJLkNv cHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlrZU91dEZ1bmMsCisJLkNvcHlUb09uZVJvdyA9IENv cHlUb0pzb25PbmVSb3csCisJLkNvcHlUb0VuZCA9IENvcHlUb1RleHRMaWtlRW5kLAorfTsKKwog LyogYmluYXJ5IGZvcm1hdCAqLwogc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91 dGluZUJpbmFyeSA9IHsKIAkuQ29weVRvU3RhcnQgPSBDb3B5VG9CaW5hcnlTdGFydCwKQEAgLTE3 NiwxNiArMTg3LDE4IEBAIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVC aW5hcnkgPSB7CiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSAqCiBDb3B5VG9HZXRSb3V0aW5l KGNvbnN0IENvcHlGb3JtYXRPcHRpb25zICpvcHRzKQogewotCWlmIChvcHRzLT5jc3ZfbW9kZSkK KwlpZiAob3B0cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJcmV0dXJuICZDb3B5VG9S b3V0aW5lQ1NWOwotCWVsc2UgaWYgKG9wdHMtPmJpbmFyeSkKKwllbHNlIGlmIChvcHRzLT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZKQogCQlyZXR1cm4gJkNvcHlUb1JvdXRpbmVCaW5hcnk7 CisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pCisJCXJldHVybiAm Q29weVRvUm91dGluZUpzb247CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KIAlyZXR1cm4gJkNv cHlUb1JvdXRpbmVUZXh0OwogfQogCi0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhcnQgY2Fs bGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0 aGUgc3RhcnQgY2FsbGJhY2sgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cyAqLwogc3Rh dGljIHZvaWQKIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURl c2MgdHVwRGVzYykKIHsKQEAgLTIwNCw2ICsyMTcsOCBAQCBDb3B5VG9UZXh0TGlrZVN0YXJ0KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpCiAJCUxpc3RDZWxsICAgKmN1cjsK IAkJYm9vbAkJaGRyX2RlbGltID0gZmFsc2U7CiAKKwkJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3Jt YXQgIT0gQ09QWV9GT1JNQVRfSlNPTik7CisKIAkJZm9yZWFjaChjdXIsIGNzdGF0ZS0+YXR0bnVt bGlzdCkKIAkJewogCQkJaW50CQkJYXR0bnVtID0gbGZpcnN0X2ludChjdXIpOwpAQCAtMjE1LDcg KzIzMCw3IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURl c2MgdHVwRGVzYykKIAogCQkJY29sbmFtZSA9IE5hbWVTdHIoVHVwbGVEZXNjQXR0cih0dXBEZXNj LCBhdHRudW0gLSAxKS0+YXR0bmFtZSk7CiAKLQkJCWlmIChjc3RhdGUtPm9wdHMuY3N2X21vZGUp CisJCQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCQkJQ29w eUF0dHJpYnV0ZU91dENTVihjc3RhdGUsIGNvbG5hbWUsIGZhbHNlKTsKIAkJCWVsc2UKIAkJCQlD b3B5QXR0cmlidXRlT3V0VGV4dChjc3RhdGUsIGNvbG5hbWUpOwpAQCAtMjI2LDcgKzI0MSw3IEBA IENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVz YykKIH0KIAogLyoKLSAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBvdXRmdW5jIGNhbGxiYWNrIGZv ciB0ZXh0IGFuZCBDU1YgZm9ybWF0cy4gQXNzaWduCisgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg b3V0ZnVuYyBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzLiBBc3NpZ24K ICAqIHRoZSBvdXRwdXQgZnVuY3Rpb24gZGF0YSB0byB0aGUgZ2l2ZW4gKmZpbmZvLgogICovCiBz dGF0aWMgdm9pZApAQCAtMjk5LDEzICszMTQsNDYgQEAgQ29weVRvVGV4dExpa2VPbmVSb3coQ29w eVRvU3RhdGUgY3N0YXRlLAogCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogfQog Ci0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxiYWNrIGZvciB0ZXh0IGFuZCBDU1Yg Zm9ybWF0cyAqLworLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGVuZCBjYWxsYmFjayBmb3IgdGV4 dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzICovCiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VF bmQoQ29weVRvU3RhdGUgY3N0YXRlKQogewogCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLwogfQog CisvKiBJbXBsZW1lbnRhdGlvbiBvZiBwZXItcm93IGNhbGxiYWNrIGZvciBqc29uIGZvcm1hdCAq Lworc3RhdGljIHZvaWQKK0NvcHlUb0pzb25PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBs ZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlEYXR1bQkJcm93ZGF0YTsKKwlTdHJpbmdJbmZvCXJlc3Vs dDsKKworCS8qCisJICogaWYgdGhlIENPUFkgVE8gc291cmNlIGRhdGEgY29tZSBmcm9tIHF1ZXJ5 IHJhdGhlciB0aGFuIHBsYWluIHRhYmxlLCB3ZQorCSAqIG5lZWQgY29weSBDb3B5VG9TdGF0ZS0+ UXVlcnlEZXNjLT5UdXBsZURlc2MgdG8gc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvci4KKwkgKiBU aGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBzbG90J3MgVHVwbGVEZXNjIG1heSBjaGFuZ2Ug ZHVyaW5nIHF1ZXJ5CisJICogZXhlY3V0aW9uLCBhbmQgd2UgZGVwZW5kIG9uIGl0IHdoZW4gY2Fs bGluZyBjb21wb3NpdGVfdG9fanNvbi4KKwkgKi8KKwlpZiAoIWNzdGF0ZS0+cmVsKQorCXsKKwkJ bWVtY3B5KFR1cGxlRGVzY0F0dHIoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgMCksCisJCQkg ICBUdXBsZURlc2NBdHRyKGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLCAwKSwKKwkJCSAgIGNz dGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLT5uYXR0cyAqIHNpemVvZihGb3JtRGF0YV9wZ19hdHRy aWJ1dGUpKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBE ZXNjLT5uYXR0czsgaSsrKQorCQkJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUoc2xvdC0+dHRz X3R1cGxlRGVzY3JpcHRvciwgaSk7CisKKwkJQmxlc3NUdXBsZURlc2Moc2xvdC0+dHRzX3R1cGxl RGVzY3JpcHRvcik7CisJfQorCXJvd2RhdGEgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlRGF0dW0o c2xvdCk7CisJcmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKKwljb21wb3NpdGVfdG9fanNvbihy b3dkYXRhLCByZXN1bHQsIGZhbHNlKTsKKworCUNvcHlTZW5kRGF0YShjc3RhdGUsIHJlc3VsdC0+ ZGF0YSwgcmVzdWx0LT5sZW4pOworCisJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7 Cit9CisKIC8qCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhcnQgY2FsbGJhY2sgZm9yIGJp bmFyeSBmb3JtYXQuIFNlbmQgYSBoZWFkZXIKICAqIGZvciBhIGJpbmFyeSBjb3B5LgpAQCAtMzky LDE0ICs0NDAsMjUgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3Ry aW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRu dW1saXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7 CisJaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJ TkFSWSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNn X0NvcHlPdXRSZXNwb25zZSk7CiAJcHFfc2VuZGJ5dGUoJmJ1ZiwgZm9ybWF0KTsJLyogb3ZlcmFs bCBmb3JtYXQgKi8KLQlwcV9zZW5kaW50MTYoJmJ1ZiwgbmF0dHMpOwotCWZvciAoaSA9IDA7IGkg PCBuYXR0czsgaSsrKQotCQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVt biBmb3JtYXRzICovCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfSlNP TikKKwl7CisJCXBxX3NlbmRpbnQxNigmYnVmLCBuYXR0cyk7CisJCWZvciAoaSA9IDA7IGkgPCBu YXR0czsgaSsrKQorCQkJcHFfc2VuZGludDE2KCZidWYsIGZvcm1hdCk7IC8qIHBlci1jb2x1bW4g Zm9ybWF0cyAqLworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBKU09OIGZvcm1hdCBpcyBhbHdh eXMgb25lIG5vbi1iaW5hcnkgY29sdW1uCisJCSAqLworCQlwcV9zZW5kaW50MTYoJmJ1ZiwgMSk7 CisJCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKKwl9CiAJcHFfZW5kbWVzc2FnZSgmYnVmKTsKIAlj c3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfRlJPTlRFTkQ7CiB9CkBAIC00OTksNyArNTU4LDcgQEAg Q29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiB9CiAKIC8qCi0gKiBXcmFwcGVy IGZ1bmN0aW9uIG9mIENvcHlTZW5kRW5kT2ZSb3cgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzLiBT ZW5kcyB0aGUKKyAqIFdyYXBwZXIgZnVuY3Rpb24gb2YgQ29weVNlbmRFbmRPZlJvdyBmb3IgdGV4 dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzLiBTZW5kcyB0aGUKICAqIGxpbmUgdGVybWluYXRpb24g YW5kIGRvIGNvbW1vbiBhcHByb3ByaWF0ZSB0aGluZ3MgZm9yIHRoZSBlbmQgb2Ygcm93LgogICov CiBzdGF0aWMgaW5saW5lIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDcwYTBkODMyYTExLi5kZTBmNWVi NDExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zNDkyLDYgKzM0OTIsMTAgQEAgY29weV9vcHRfaXRlbToK IAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIsIChOb2RlICopIG1ha2VTdHJp bmcoImNzdiIpLCBAMSk7CiAJCQkJfQorCQkJfCBKU09OCisJCQkJeworCQkJCQkkJCA9IG1ha2VE ZWZFbGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5nKCJqc29uIiksIEAxKTsKKwkJCQl9 CiAJCQl8IEhFQURFUl9QCiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJoZWFkZXIiLCAo Tm9kZSAqKSBtYWtlQm9vbGVhbih0cnVlKSwgQDEpOwpAQCAtMzU3NCw2ICszNTc4LDEwIEBAIGNv cHlfZ2VuZXJpY19vcHRfZWxlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oJDEsICQy LCBAMSk7CiAJCQkJfQorCQkJfCBGT1JNQVRfTEEgY29weV9nZW5lcmljX29wdF9hcmcKKwkJCQl7 CisJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIsICQyLCBAMSk7CisJCQkJfQogCQk7CiAK IGNvcHlfZ2VuZXJpY19vcHRfYXJnOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKaW5kZXggNTE0NTI3NTVmNTgu LmJmNjkzNDdmYTk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAgLTg1LDggKzg1LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgSnNvbkFnZ1N0YXRlCiAJSnNvblVuaXF1ZUJ1aWxkZXJTdGF0ZSB1bmlxdWVfY2hl Y2s7CiB9IEpzb25BZ2dTdGF0ZTsKIAotc3RhdGljIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0 dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKLQkJCQkJCQkgIGJvb2wgdXNlX2xpbmVf ZmVlZHMpOwogc3RhdGljIHZvaWQgYXJyYXlfZGltX3RvX2pzb24oU3RyaW5nSW5mbyByZXN1bHQs IGludCBkaW0sIGludCBuZGltcywgaW50ICpkaW1zLAogCQkJCQkJCSAgRGF0dW0gKnZhbHMsIGJv b2wgKm51bGxzLCBpbnQgKnZhbGNvdW50LAogCQkJCQkJCSAgSnNvblR5cGVDYXRlZ29yeSB0Y2F0 ZWdvcnksIE9pZCBvdXRmdW5jb2lkLApAQCAtNTE2LDggKzUxNCw5IEBAIGFycmF5X3RvX2pzb25f aW50ZXJuYWwoRGF0dW0gYXJyYXksIFN0cmluZ0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2Zl ZWRzKQogCiAvKgogICogVHVybiBhIGNvbXBvc2l0ZSAvIHJlY29yZCBpbnRvIEpTT04uCisgKiBF eHBvcnRlZCBzbyBDT1BZIFRPIGNhbiB1c2UgaXQuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBj b21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LCBib29s IHVzZV9saW5lX2ZlZWRzKQogewogCUhlYXBUdXBsZUhlYWRlciB0ZDsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwppbmRleCA1M2U3ZDM1ZmU5OC4uYmQ0YzAzYmUwNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKQEAgLTMzMDgsNyArMzMwOCw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJu X2lkLAogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZP Uk1BVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9N fFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiRk9STUFUIikpCi0JCUNPTVBMRVRFX1dJVEgo ImJpbmFyeSIsICJjc3YiLCAidGV4dCIpOworCQlDT01QTEVURV9XSVRIKCJiaW5hcnkiLCAiY3N2 IiwgInRleHQiLCAianNvbiIpOwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVu YW1lIFdJVEggKE9OX0VSUk9SICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBN YXRjaEFueSwgIkZST018VE8iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJPTl9FUlJPUiIpKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weS5oCmluZGV4IDU0MTE3NmUxOTgwLi44NWFlZGMyNjdkNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaApAQCAtNDgsNiArNDgsMTcgQEAgdHlwZWRlZiBlbnVtIENvcHlMb2dWZXJib3NpdHlDaG9p Y2UKIAlDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSwgLyogbG9ncyBhZGRpdGlvbmFsIG1lc3Nh Z2VzICovCiB9IENvcHlMb2dWZXJib3NpdHlDaG9pY2U7CiAKKy8qCisgKiBSZXByZXNlbnRzIHRo ZSBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9uLgorICovCit0eXBlZGVmIGVudW0gQ29weUZv cm1hdAoreworCUNPUFlfRk9STUFUX1RFWFQgPSAwLAorCUNPUFlfRk9STUFUX0JJTkFSWSwKKwlD T1BZX0ZPUk1BVF9DU1YsCisJQ09QWV9GT1JNQVRfSlNPTiwKK30gQ29weUZvcm1hdDsKKwogLyoK ICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25zLCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwg b2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1hdHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6 ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBoZXJlLCBidXQKQEAgLTU4LDkgKzY5LDgg QEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20g dGhlIENPUFkgY29tbWFuZCAqLwogCWludAkJCWZpbGVfZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVt b3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsCiAJCQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVj aWZpZWQgKi8KLQlib29sCQliaW5hcnk7CQkJLyogYmluYXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9y bWF0CWZvcm1hdDsJCQkvKiBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9uICovCiAJYm9vbAkJ ZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ICovCi0JYm9vbAkJY3N2X21vZGU7 CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAqLwogCWludAkJCWhlYWRlcl9saW5l OwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBDT1BZX0hFQURFUl9YWFgKIAkJCQkJCQkJ ICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hhcgkgICAqbnVsbF9wcmludDsJCS8qIE5V TEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5nISkgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL2pzb24uaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAppbmRleCA0OWJi ZGE3YWMwNi4uMWZhOGUyY2U4ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24u aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKQEAgLTE3LDYgKzE3LDggQEAKICNpbmNs dWRlICJsaWIvc3RyaW5naW5mby5oIgogCiAvKiBmdW5jdGlvbnMgaW4ganNvbi5jICovCitleHRl cm4gdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVz dWx0LAorCQkJCQkJCSAgYm9vbCB1c2VfbGluZV9mZWVkcyk7CiBleHRlcm4gdm9pZCBlc2NhcGVf anNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyKTsKIGV4dGVybiB2b2lkIGVzY2Fw ZV9qc29uX3dpdGhfbGVuKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpzdHIsIGludCBsZW4p OwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb25fdGV4dChTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgdGV4 dCAqdHh0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CmluZGV4IGFjNjZlYjU1YWVlLi5m Y2I4ODIzZTEwMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CkBAIC03Myw2ICs3Myw4 MCBAQCBjb3B5IGNvcHl0ZXN0MyB0byBzdGRvdXQgY3N2IGhlYWRlcjsKIGMxLCJjb2wgd2l0aCAs IGNvbW1hIiwiY29sIHdpdGggIiIgcXVvdGUiCiAxLGEsMQogMixiLDIKKy0tLSB0ZXN0IGNvcHlp bmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IGpzb247Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9 Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUi OiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUi LCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYi LCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6 Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxl IjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KKy0tIGFs bCBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNp ZnkgREVMSU1JVEVSIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1h dCBqc29uLCBudWxsICdcTicpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEpTT04g bW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7 CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IERFRkFVTFQgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7CitFUlJPUjogIGNhbm5vdCBzcGVj aWZ5IEhFQURFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgcXVvdGUgJyInKTsKK0VSUk9SOiAgQ09QWSBRVU9URSByZXF1aXJlcyBDU1YgbW9kZQor Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBlc2NhcGUgJyInKTsKK0VSUk9S OiAgQ09QWSBFU0NBUEUgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQganNvbiwgZm9yY2VfcXVvdGUgKik7CitFUlJPUjogIENPUFkgRk9SQ0VfUVVPVEUg cmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwg Zm9yY2Vfbm90X251bGwgKik7CitFUlJPUjogIENPUFkgRk9SQ0VfTk9UX05VTEwgcmVxdWlyZXMg Q1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfbnVs bCAqKTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9OVUxMIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNv cHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7CitFUlJPUjog IENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIFRPCitMSU5FIDE6IGNvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitjb3B5IGNvcHl0ZXN0 IGZyb20gc3RkaW4oZm9ybWF0IGpzb24pOworRVJST1I6ICBDT1BZIGpzb24gbW9kZSBjYW5ub3Qg YmUgdXNlZCB3aXRoIENPUFkgRlJPTQorLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQg ZXJyb3IKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycworY3JlYXRlIHRlbXAgdGFibGUg Y29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJpYWwsCisgICAgZjEgdGV4dCwKKyAgICBmMiB0 aW1lc3RhbXB0eik7CitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QKKyAgc2VsZWN0IGcuaSwKKyAg ICAgICAgIENBU0UgV0hFTiBnLmkgJSAyID0gMCBUSEVOCisgICAgICAgICAgICdsaW5lIHdpdGgg JycgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTFNFCisgICAgICAgICAgICdsaW5l IHdpdGggIiBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVORCwKKyAgICAgICAgICdN b24gRmViIDEwIDE3OjMyOjAxIDE5OTcgUFNUJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUp IGFzIGcoaSk7CitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QgKGYxKSB2YWx1ZXMKKyhFJ2FhYVwi YmJiJzo6dGV4dCksCisoRSdhYWFcXGJiYic6OnRleHQpLAorKEUnYWFhXC9iYmInOjp0ZXh0KSwK KyhFJ2FhYVxiYmJiJzo6dGV4dCksCisoRSdhYWFcZmJiYic6OnRleHQpLAorKEUnYWFhXG5iYmIn Ojp0ZXh0KSwKKyhFJ2FhYVxyYmJiJzo6dGV4dCksCisoRSdhYWFcdGJiYic6OnRleHQpOworY29w eSBjb3B5anNvbnRlc3QgdG8gc3Rkb3V0IGpzb247Cit7ImlkIjoxLCJmMSI6ImxpbmUgd2l0aCBc IiBpbiBpdDogMSIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjoyLCJm MSI6ImxpbmUgd2l0aCAnIGluIGl0OiAyIiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAw In0KK3siaWQiOjMsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiAzIiwiZjIiOiIxOTk3LTAyLTEw VDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjQsImYxIjoibGluZSB3aXRoICcgaW4gaXQ6IDQiLCJm MiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6NSwiZjEiOiJsaW5lIHdpdGgg XCIgaW4gaXQ6IDUiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MSwi ZjEiOiJhYWFcImJiYiIsImYyIjpudWxsfQoreyJpZCI6MiwiZjEiOiJhYWFcXGJiYiIsImYyIjpu dWxsfQoreyJpZCI6MywiZjEiOiJhYWEvYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo0LCJmMSI6ImFh YVxiYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo1LCJmMSI6ImFhYVxmYmJiIiwiZjIiOm51bGx9Cit7 ImlkIjo2LCJmMSI6ImFhYVxuYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo3LCJmMSI6ImFhYVxyYmJi IiwiZjIiOm51bGx9Cit7ImlkIjo4LCJmMSI6ImFhYVx0YmJiIiwiZjIiOm51bGx9CiBjcmVhdGUg dGVtcCB0YWJsZSBjb3B5dGVzdDQgKAogCWMxIGludCwKIAkiY29sbmFtZSB3aXRoIHRhYjogCSIg dGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCmluZGV4IGExMzE2YzczYmFjLi44MGJkNGE1OTIzOSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weS5zcWwKQEAgLTgyLDYgKzgyLDUyIEBAIHRoaXMgaXMganVzdCBhIGxp bmUgZnVsbCBvZiBqdW5rIHRoYXQgd291bGQgZXJyb3Igb3V0IGlmIHBhcnNlZAogCiBjb3B5IGNv cHl0ZXN0MyB0byBzdGRvdXQgY3N2IGhlYWRlcjsKIAorLS0tIHRlc3QgY29weWluZyBpbiBKU09O IG1vZGUgd2l0aCB2YXJpb3VzIHN0eWxlcworY29weSBjb3B5dGVzdCB0byBzdGRvdXQganNvbjsK K2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7CisKKy0tIGFsbCBvZiB0aGUg Zm9sbG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgbnVsbCAnXE4nKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZGVmYXVsdCAnfCcpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBo ZWFkZXIpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBxdW90ZSAnIicp OworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBlc2NhcGUgJyInKTsKK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfcXVvdGUgKik7Citjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX25vdF9udWxsICopOworY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9udWxsICopOworY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworY29weSBj b3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKKy0tIGFsbCBvZiB0aGUgYWJvdmUgc2hv dWxkIHlpZWxkIGVycm9yCisKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycworY3JlYXRl IHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJpYWwsCisgICAgZjEgdGV4 dCwKKyAgICBmMiB0aW1lc3RhbXB0eik7CisKK2luc2VydCBpbnRvIGNvcHlqc29udGVzdAorICBz ZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcuaSAlIDIgPSAwIFRIRU4KKyAgICAgICAg ICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVMU0UKKyAg ICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRU5E LAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5NyBQU1QnCisgIGZyb20gZ2VuZXJh dGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKKworaW5zZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkg dmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2Fh YVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmInOjp0ZXh0 KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUnYWFhXHRi YmInOjp0ZXh0KTsKKworY29weSBjb3B5anNvbnRlc3QgdG8gc3Rkb3V0IGpzb247CisKIGNyZWF0 ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50LAogCSJjb2xuYW1lIHdpdGggdGFiOiAJ IiB0ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMTE0YmRhZmFmZGYuLmZhN2Q3 YjkyNDRhIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTE4LDYgKzUxOCw3IEBAIENv bnZlcnNpb25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBD b3B5RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQog Q29weUZyb21TdGF0ZQotLSAKMi4zNC4xCgo= --0000000000000588a4063913c123--