Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1njh7m-0001Wk-OC for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Apr 2022 12:50:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1njh7k-0007gU-Oh for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Apr 2022 12:50:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1njh7k-0007gK-8T for pgsql-hackers@lists.postgresql.org; Wed, 27 Apr 2022 12:50:28 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1njh7g-0006a8-5j for pgsql-hackers@lists.postgresql.org; Wed, 27 Apr 2022 12:50:27 +0000 Received: by mail-ed1-x52a.google.com with SMTP id z99so1820519ede.5 for ; Wed, 27 Apr 2022 05:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=22laThGFwCLEqcmz+Xt1N5HRM0xmWGDthkohPkX5IsM=; b=gEnFrhBaYH8wk24UL2tz+qSaccEY1nRo7ec0W3wJSy74pP9iCYDjBzZEW6VkDFDUXb GVYenSpn1cG+XIDLyJNqZre0if2hmHxxaDSXG2LmjzD/xid25NCu83jncHG6t+inZOIR +YqYJPfW/PMqbBokytbH45PxYBJ/nTpo63uOKRMet7XY0PNDLhQpgHqe3DZIK+zm2mIO K5wVQZDX30EPY1DwfXjJHwYtyK6mIyaIOq3Kkn6EHe78UY8Y8gqQjA9FrCIwSLxfX+Mv NZrdJegQWovgy8iNwS72sdUjie7OYOc1UkSmAXHbaeelAdnrYPbuTur488h7tO06ZOMO 06nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=22laThGFwCLEqcmz+Xt1N5HRM0xmWGDthkohPkX5IsM=; b=Vc/s4lCwzfyoHhYggq/Ji1kC9zYIOu6cKiq+M1gd1q90BgGtrMfPwt1rTyXwNtFBF9 bD8ySE+l5HJFebCyw6z3uRsnHXBeqWXFp5GiB+mwwldYYU/uWRlBeBxlJS66ssrLcisU xF0IvTkm3dap03hVKccyYf+fepiTB1sb6U8r7wBYYkoDQ/eJmqt+VW2XkJDarrnO4N2C yaj/RWLW4gh9QsjSAjOngWeS/cWdEvltCW9cLsOnX2WA/feGgA7VtPeRYefumSf89xmO pU+tC/g76DB8MMQUARitgHAJbRKuJavWuMzURB/rCEUXxrII+/jIrTPiFuiV/eXzu1Nr MGog== X-Gm-Message-State: AOAM533p4SK0EiCj8QWTnpZJVRMp3DoO+Hh/9NwnxVoyKM3ufOO+lqSX vUv0oUojTJyTSYMsMUiHQvKSMcnL2EzG0NREFHlN+qTaoPfuPO5g X-Google-Smtp-Source: ABdhPJyNfUBwexEvZ0yPTl7B8YEsbxcxq5TA6p2YswrZLTcJc/OH5J3P+5TlZDRdkEXY5rJrqFAbtjDG1dWA8eAKtIw= X-Received: by 2002:a05:6402:430c:b0:425:b084:6141 with SMTP id m12-20020a056402430c00b00425b0846141mr30385809edc.67.1651063823007; Wed, 27 Apr 2022 05:50:23 -0700 (PDT) MIME-Version: 1.0 References: <00afeb42-19b3-47a6-821e-e78d366eb0b0@www.fastmail.com> In-Reply-To: From: vignesh C Date: Wed, 27 Apr 2022 18:20:11 +0530 Message-ID: Subject: Re: Skipping schema changes in publication To: "osumi.takamichi@fujitsu.com" Cc: Amit Kapila , Euler Taveira , Peter Eisentraut , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000ac201805dda24025" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ac201805dda24025 Content-Type: text/plain; charset="UTF-8" On Tue, Apr 26, 2022 at 11:32 AM osumi.takamichi@fujitsu.com wrote: > > On Thursday, April 21, 2022 12:15 PM vignesh C wrote: > > Updated patch by changing the syntax to use EXCEPT instead of SKIP. > Hi > > > This is my review comments on the v2 patch. > > (1) gram.y > > I think we can make a unified function that merges > preprocess_alltables_pubobj_list with check_except_in_pubobj_list. > > With regard to preprocess_alltables_pubobj_list, > we don't use the 2nd argument "location" in this function. Removed location and made a unified function. > (2) create_publication.sgml > > + > + Create a publication that publishes all changes in all the tables except for > + the changes of users and > + departments table; > > This sentence should end ":" not ";". Modified > (3) publication.out & publication.sql > > +-- fail - can't set except table to schema publication > +ALTER PUBLICATION testpub_forschema SET EXCEPT TABLE testpub_tbl1; > > There is one unnecessary space in the comment. > Kindly change from "schema publication" to "schema publication". Modified > (4) pg_dump.c & describe.c > > In your first email of this thread, you explained this feature > is for PG16. Don't we need additional branch for PG16 ? > > @@ -6322,6 +6328,21 @@ describePublications(const char *pattern) > } > } > > + if (pset.sversion >= 150000) > + { > > > @@ -4162,7 +4164,7 @@ getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables) > /* Collect all publication membership info. */ > if (fout->remoteVersion >= 150000) > appendPQExpBufferStr(query, > - "SELECT tableoid, oid, prpubid, prrelid, " > + "SELECT tableoid, oid, prpubid, prrelid, prexcept," > Modified by adding a comment saying "FIXME: 150000 should be changed to 160000 later for PG16." > (5) psql-ref.sgml > > + If + is appended to the command name, the tables, > + except tables and schemas associated with each publication are shown as > + well. > > I'm not sure if "except tables" is a good description. > I suggest "excluded tables". This applies to the entire patch, > in case if this is reasonable suggestion. Modified it in most of the places where it was applicable. I felt the usage was ok in a few places. Thanks for the comments, the attached v3 patch has the changes for the same. Regards. Vignesh --000000000000ac201805dda24025 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Disposition: attachment; filename="v3-0001-Skip-publishing-the-tables-specified-in-EXCEPT-TA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l2hkrc3r0 RnJvbSBmOGE4ZGZmNDc4NjM4ZjgyMjM3N2YyNTE1ZjY5ZGY5YzZjY2U1MDFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMCBBcHIgMjAyMiAxMToxOTo1MCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjNd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyBvcHRpb24gIkVYQ0VQVCBUQUJMRSIgaW4gQ3JlYXRlL0FsdGVyIFB1YmxpY2F0aW9uIGFs bG93cwpvbmUgb3IgbW9yZSB0YWJsZXMgdG8gYmUgZXhjbHVkZWQsIHB1Ymxpc2hlciB3aWxsIGV4 Y2x1ZGUgc2VuZGluZyB0aGUgZGF0YQpvZiB0aGUgZXhjbHVkZWQgdGFibGVzIHRvIHRoZSBzdWJz Y3JpYmVyLgoKVGhlIG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgc2NoZW1hcy4gRm9yIGV4 YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSB0MSx0MjsKT1IKQUxURVIgUFVCTElDQVRJT04gcHViMSBBREQgRVhDRVBUIFRBQkxFIHQxLHQy OwoKQSBuZXcgY29sdW1uIHByZXhjZXB0IGlzIGFkZGVkIHRvIHRhYmxlICJwZ19wdWJsaWNhdGlv bl9yZWwiLCB0byBtYWludGFpbgp0aGUgcmVsYXRpb25zIHRoYXQgdGhlIHVzZXIgd2FudHMgdG8g ZXhjbHVkZSBwdWJsaXNoaW5nIHRocm91Z2ggdGhlIHB1YmxpY2F0aW9uLgpNb2RpZmllZCB0aGUg b3V0cHV0IHBsdWdpbiAocGdvdXRwdXQpIHRvIGV4Y2x1ZGUgcHVibGlzaGluZyB0aGUgY2hhbmdl cyBvZiB0aGUKZXhjbHVkZWQgdGFibGVzLgoKVXBkYXRlcyBwZ19kdW1wIHRvIGlkZW50aWZ5IGFu ZCBkdW1wIHRoZSBleGNsdWRlZCB0YWJsZXMgb2YgdGhlIHB1YmxpY2F0aW9ucy4KVXBkYXRlcyB0 aGUgXGQgZmFtaWx5IG9mIGNvbW1hbmRzIHRvIGRpc3BsYXkgZXhjbHVkZWQgdGFibGVzIG9mIHRo ZQpwdWJsaWNhdGlvbnMgYW5kIFxkUnArIHZhcmlhbnQgd2lsbCBub3cgZGlzcGxheSBhc3NvY2lh dGVkIGV4Y2VwdCB0YWJsZXMgaWYgYW55LgoKQnVtcCBjYXRhbG9nIHZlcnNpb24uCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA5ICsrCiBkb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDggKy0KIGRvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgICAgICB8ICAxNCArKy0KIGRvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8ICAyOSArKysrLQogZG9j L3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCAgMzYgKysrKy0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAxMDYgKysrKysr KysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAg ICB8ICA3OCArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jICAgfCAgMjUgKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMgICAgICAgICAgICB8ICAxNyArKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAg ICAgICAgICAgICAgICB8ICA0NSArKysrKystLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQu YyAgICAgICAgICAgICAgICB8ICAgNyArKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAu cGwgICAgICAgICAgICAgIHwgIDIzICsrKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAg ICAgICAgICAgICAgICAgICB8ICA1MiArKysrKysrLS0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuYyAgICAgICAgICAgICAgICAgICB8ICAxNSArKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaCAgICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbl9yZWwuaCAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5oICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0ICAgICB8ICA4MSArKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgNDAgKysrKysrLQogLi4uL3QvMDMzX3JlcF9j aGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAgICAgICAgIHwgIDk3ICsrKysrKysrKysrKysrKysKIDI0 IGZpbGVzIGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMzX3JlcF9jaGFuZ2VzX2V4 Y2VwdF90YWJsZS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggYTUzM2EyMTUzZS4uNzhlOGMyMmE1OSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKQEAgLTY0MjYsNiArNjQyNiwxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBs YWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJs ZT4mbAogICAgICAgaWYgdGhlcmUgaXMgbm8gcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRp b24uPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgPHN0cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9v bDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhl IHRhYmxlIG11c3QgYmUgZXhjbHVkZWQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cHJh dHRyczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDJ2ZWN0b3I8L3R5cGU+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAppbmRleCAxNDVlYTcxZDYxLi5mYmVkNzM1MDY2IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExNjUsMTAgKzExNjUsMTAgQEAgQ09O VEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdf MTYzOTUiIGR1cmluZyAiSU5TRVIKICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgVG8gYWRkIHRh YmxlcyB0byBhIHB1YmxpY2F0aW9uLCB0aGUgdXNlciBtdXN0IGhhdmUgb3duZXJzaGlwIHJpZ2h0 cyBvbiB0aGUKLSAgIHRhYmxlLiBUbyBhZGQgYWxsIHRhYmxlcyBpbiBzY2hlbWEgdG8gYSBwdWJs aWNhdGlvbiwgdGhlIHVzZXIgbXVzdCBiZSBhCi0gICBzdXBlcnVzZXIuIFRvIGNyZWF0ZSBhIHB1 YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCB0YWJsZXMgb3IgYWxsIHRhYmxlcyBpbgotICAg c2NoZW1hIGF1dG9tYXRpY2FsbHksIHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuCisgICBU byBhZGQgdGFibGVzIG9yIGV4Y2x1ZGUgdGFibGVzIHRvIGEgcHVibGljYXRpb24sIHRoZSB1c2Vy IG11c3QgaGF2ZQorICAgb3duZXJzaGlwIHJpZ2h0cyBvbiB0aGUgdGFibGUuIFRvIGFkZCBhbGwg dGFibGVzIGluIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9uLAorICAgdGhlIHVzZXIgbXVzdCBiZSBh IHN1cGVydXNlci4gVG8gY3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsCisg ICB0YWJsZXMgb3IgYWxsIHRhYmxlcyBpbiBzY2hlbWEgYXV0b21hdGljYWxseSwgdGhlIHVzZXIg bXVzdCBiZSBhIHN1cGVydXNlci4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IGUyY2NlNDk0NzEuLjJhOGU0ZTA0MWIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMwLDcgKzMwLDcgQEAg QUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9m OjwvcGhyYXNlPgogCi0gICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFsg V0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFj ZWFibGU+ICkgXSBbLCAuLi4gXQorICAgIFtFWENFUFRdIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4 cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KICAgICBBTEwgVEFCTEVTIElOIFND SEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFj ZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5 bm9wc2lzZGl2PgpAQCAtNzAsOCArNzAsOCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogCiAg IDxwYXJhPgogICAgWW91IG11c3Qgb3duIHRoZSBwdWJsaWNhdGlvbiB0byB1c2UgPGNvbW1hbmQ+ QUxURVIgUFVCTElDQVRJT048L2NvbW1hbmQ+LgotICAgQWRkaW5nIGEgdGFibGUgdG8gYSBwdWJs aWNhdGlvbiBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgb3duaW5nIHRoYXQgdGFibGUuCi0gICBUaGUg PGxpdGVyYWw+QUREIEFMTCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBhbmQKKyAgIEFkZGlu ZyBhIHRhYmxlIG9yIGV4Y2x1ZGluZyBhIHRhYmxlIHRvIGEgcHVibGljYXRpb24gYWRkaXRpb25h bGx5IHJlcXVpcmVzCisgICBvd25pbmcgdGhhdCB0YWJsZS4gVGhlIDxsaXRlcmFsPkFERCBBTEwg VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gYW5kCiAgICA8bGl0ZXJhbD5TRVQgQUxMIFRBQkxF UyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gcmVxdWlyZXMgdGhlCiAgICBp bnZva2luZyB1c2VyIHRvIGJlIGEgc3VwZXJ1c2VyLiAgVG8gYWx0ZXIgdGhlIG93bmVyLCB5b3Ug bXVzdCBhbHNvIGJlIGEKICAgIGRpcmVjdCBvciBpbmRpcmVjdCBtZW1iZXIgb2YgdGhlIG5ldyBv d25pbmcgcm9sZS4gVGhlIG5ldyBvd25lciBtdXN0IGhhdmUKQEAgLTIwMCw2ICsyMDAsMTQgQEAg QUxURVIgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24gQUREIEFMTCBUQUJMRVMgSU4gU0NI RU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CiAKKyAg PHBhcmE+CisgICBBZGRpbmcgdGFibGVzIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBh bmQKKyAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPiB0aGF0IG11c3QgYmUg ZXhjbHVkZWQgZnJvbSB0aGUKKyAgIHB1YmxpY2F0aW9uIDxzdHJ1Y3RuYW1lPnByb2R1Y3Rpb25f cHVibGljYXRpb248L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElD QVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBBREQgRVhDRVBUIFRBQkxFIHVzZXJzLCBkZXBh cnRtZW50cyBwcm9kdWN0aW9uOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKICAgPHBhcmE+ CiAgICBBZGQgdGFibGVzIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIDxzdHJ1 Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPiBhbmQgc2NoZW1hCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCAxYTgyOGU4ZDJmLi5mOTM0NDcyZGIyIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTIyLDcgKzIyLDcg QEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lz PgogQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KLSAgICBbIEZPUiBBTEwgVEFCTEVTCisgICAgWyBGT1IgQUxMIFRBQkxF UyBbRVhDRVBUIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF1dCiAgICAgICB8IEZPUiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gXQogICAgIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNh dGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKSBdCiAKQEAgLTE1Niw2ICsxNTYs MjQgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAK KworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xp dGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBNYXJrcyB0 aGUgcHVibGljYXRpb24gYXMgb25lIHRoYXQgZXhjbHVkZXMgcmVwbGljYXRpbmcgY2hhbmdlcyBm b3IgdGhlCisgICAgICBzcGVjaWZpZWQgdGFibGVzLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBh cmE+CisgICAgICA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZp ZWQgb25seSBmb3IKKyAgICAgIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJs aWNhdGlvbi4gSXQgaXMgbm90IHN1cHBvcnRlZCBmb3IKKyAgICAgIDxsaXRlcmFsPkZPUiBBTEwg VEFCTEVTIElOIFNDSEVNQSA8L2xpdGVyYWw+IHB1YmxpY2F0aW9uIGFuZAorICAgICAgPGxpdGVy YWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBwdWJsaWNhdGlvbi4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8 dGVybT48bGl0ZXJhbD5XSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1Ymxp Y2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4K ICAgICA8bGlzdGl0ZW0+CkBAIC0zNTEsNiArMzY5LDE1IEBAIENSRUFURSBQVUJMSUNBVElPTiBw cm9kdWN0aW9uX3B1YmxpY2F0aW9uIEZPUiBUQUJMRSB1c2VycywgZGVwYXJ0bWVudHMsIEFMTCBU QUJMCiBDUkVBVEUgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24gRk9SIEFMTCBUQUJMRVMg SU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFu Z2VzIGluIGFsbCB0aGUgdGFibGVzIGV4Y2VwdCBmb3IKKyAgIHRoZSBjaGFuZ2VzIG9mIDxzdHJ1 Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRz PC9zdHJ1Y3RuYW1lPiB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElP TiBteXB1YmxpY2F0aW9uIEZPUiBBTEwgVEFCTEUgRVhDRVBUIFRBQkxFIHVzZXJzLCBkZXBhcnRt ZW50czsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIENyZWF0 ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGZvciB0YWJsZSA8c3Ry dWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAgICBidXQgcmVwbGljYXRlcyBvbmx5IGNvbHVt bnMgPHN0cnVjdG5hbWU+dXNlcl9pZDwvc3RydWN0bmFtZT4gYW5kCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNn bWwKaW5kZXggNWZjNmIxMDM0YS4uMzg4OTc5NmIzZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApA QCAtMTg2OCw4ICsxODY4LDkgQEAgdGVzdGRiPSZndDsKICAgICAgICAgSWYgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxlPiBpcwogICAgICAgICBzcGVj aWZpZWQsIG9ubHkgdGhvc2UgcHVibGljYXRpb25zIHdob3NlIG5hbWVzIG1hdGNoIHRoZSBwYXR0 ZXJuIGFyZQogICAgICAgICBsaXN0ZWQuCi0gICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+ IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMgYW5kCi0gICAgICAg IHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRpb24gYXJlIHNob3duIGFzIHdl bGwuCisgICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBj b21tYW5kIG5hbWUsIHRoZSB0YWJsZXMsCisgICAgICAgIGV4Y2x1ZGVkIHRhYmxlcyBhbmQgc2No ZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24gYXMKKyAgICAg ICAgd2VsbC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92 YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggMjYzMTU1 OGZmMS4uNmE1YTkxMGEzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAt MjkwLDcgKzI5MCw4IEBAIEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1 bHQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKICAqIGFuY2VzdG9yIGlzIGF0IHRo ZSBlbmQgb2YgdGhlIGxpc3QuCiAgKi8KIE9pZAotR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNh dGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwpCitH ZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9y cywKKwkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJ TGlzdENlbGwgICAqbGM7CiAJT2lkCQkJdG9wbW9zdF9yZWxpZCA9IEludmFsaWRPaWQ7CkBAIC0z MDIsOCArMzAzLDkgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lk LCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAlmb3JlYWNoKGxjLCBhbmNl c3RvcnMpCiAJewogCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwotCQlMaXN0CSAg ICphcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpOworCQlMaXN0CSAg ICphcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsIGZhbHNlKTsKIAkJ TGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5JTDsKKwkJTGlzdAkgICAqYWV4Y2VwdHB1YmlkczsK IAogCQlsZXZlbCsrOwogCkBAIC0zMTcsNyArMzE5LDkgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5Q dWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2 ZWwKIAkJZWxzZQogCQl7CiAJCQlhc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25z KGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKSk7Ci0JCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFz Y2hlbWFQdWJpZHMsIHB1Ym9pZCkpCisJCQlhZXhjZXB0cHViaWRzID0gR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMoYW5jZXN0b3IsIHRydWUpOworCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhc2NoZW1h UHViaWRzLCBwdWJvaWQpIHx8CisJCQkJKHB1YmFsbHRhYmxlcyAmJiAhbGlzdF9tZW1iZXJfb2lk KGFleGNlcHRwdWJpZHMsIHB1Ym9pZCkpKQogCQkJewogCQkJCXRvcG1vc3RfcmVsaWQgPSBhbmNl c3RvcjsKIApAQCAtMzk2LDYgKzQwMCw5IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQg cHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQlPYmplY3RJZEdldERhdHVtKHB1Ymlk KTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJyZWxpZCAtIDFdID0KIAkJT2Jq ZWN0SWRHZXREYXR1bShyZWxpZCk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3By ZXhjZXB0IC0gMV0gPQorCQlCb29sR2V0RGF0dW0ocHJpLT5leGNlcHQpOworCiAKIAkvKiBBZGQg cXVhbGlmaWNhdGlvbnMsIGlmIGF2YWlsYWJsZSAqLwogCWlmIChwcmktPndoZXJlQ2xhdXNlICE9 IE5VTEwpCkBAIC02NjYsNyArNjczLDcgQEAgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHVi aWQsIE9pZCBzY2hlbWFpZCwgYm9vbCBpZl9ub3RfZXhpc3RzKQogCiAvKiBHZXRzIGxpc3Qgb2Yg cHVibGljYXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbiAqLwogTGlzdCAqCi1HZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhPaWQgcmVsaWQpCitHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQs IGJvb2wgYmV4Y2VwdCkKIHsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAq cHVicmVsbGlzdDsKQEAgLTY4MCw3ICs2ODcsOCBAQCBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhP aWQgcmVsaWQpCiAJCUhlYXBUdXBsZQl0dXAgPSAmcHVicmVsbGlzdC0+bWVtYmVyc1tpXS0+dHVw bGU7CiAJCU9pZAkJCXB1YmlkID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNU KHR1cCkpLT5wcnB1YmlkOwogCi0JCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQp OworCQlpZiAoYmV4Y2VwdCA9PSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1Qo dHVwKSktPnByZXhjZXB0KQorCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7 CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlTGlzdChwdWJyZWxsaXN0KTsKQEAgLTc3OSw3ICs3ODcs NyBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCkKICAqIHJvb3QgcGFydGl0aW9uZWQg dGFibGVzLgogICovCiBMaXN0ICoKLUdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKGJv b2wgcHVidmlhcm9vdCkKK0dldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJp ZCwgYm9vbCBwdWJ2aWFyb290KQogewogCVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRh IGtleVsxXTsKQEAgLTc4Nyw2ICs3OTUsMTMgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxh dGlvbnMoYm9vbCBwdWJ2aWFyb290KQogCUhlYXBUdXBsZQl0dXBsZTsKIAlMaXN0CSAgICpyZXN1 bHQgPSBOSUw7CiAKKwkvKgorCSAqIHBnX3B1YmxpY2F0aW9uX3JlbCBhbmQgcGdfcHVibGljYXRp b25fbmFtZXNwYWNlICB3aWxsIG9ubHkgaGF2ZSBleGNsdWRlZAorCSAqIHRhYmxlcyBpbiBjYXNl IG9mIGFsbCB0YWJsZXMgcHVibGljYXRpb24sIG5vIG5lZWQgdG8gcGFzcyBleGNlcHQgZmxhZwor CSAqIHRvIGdldCB0aGUgcmVsYXRpb25zLgorCSAqLworCUxpc3QJICAgKmV4Y2VwdHB1YnRhYmxl bGlzdCA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLCBQVUJMSUNBVElPTl9QQVJUX0FM TCk7CisKIAljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOwogCiAJU2NhbktleUluaXQoJmtleVswXSwKQEAgLTgwMiw3ICs4MTcsOCBAQCBH ZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpCiAJCU9pZAkJ CXJlbGlkID0gcmVsRm9ybS0+b2lkOwogCiAJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxp ZCwgcmVsRm9ybSkgJiYKLQkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9v dCkpCisJCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpICYmCisJCQkh bGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1YnRhYmxlbGlzdCwgcmVsaWQpKQogCQkJcmVzdWx0ID0g bGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJfQogCkBAIC04MjMsNyArODM5LDggQEAgR2V0 QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoYm9vbCBwdWJ2aWFyb290KQogCQkJT2lkCQkJ cmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxp ZCwgcmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24pCisJCQkJIXJlbEZv cm0tPnJlbGlzcGFydGl0aW9uICYmCisJCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRwdWJ0YWJs ZWxpc3QsIHJlbGlkKSkKIAkJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsK IAkJfQogCkBAIC0xMTA3LDcgKzExMjQsOCBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCSAqLwogCQlpZiAocHVibGljYXRpb24tPmFsbHRhYmxlcykKIAkJ ewotCQkJdGFibGVzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRp b24tPnB1YnZpYXJvb3QpOworCQkJdGFibGVzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxh dGlvbnMocHVibGljYXRpb24tPm9pZCwKKwkJCQkJCQkJCQkJCQkgIHB1YmxpY2F0aW9uLT5wdWJ2 aWFyb290KTsKIAkJfQogCQllbHNlCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMKaW5kZXggNmRmMGU2NjcwZi4uMjU3ZTY2OWU0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKQEAgLTI5Nyw3ICsyOTcsNyBAQCBjb250YWluX2ludmFsaWRfcmZj b2x1bW5fd2Fsa2VyKE5vZGUgKm5vZGUsIHJmX2NvbnRleHQgKmNvbnRleHQpCiAgKi8KIGJvb2wK IHB1Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0 aW9uLCBMaXN0ICphbmNlc3RvcnMsCi0JCQkJCQkgYm9vbCBwdWJ2aWFyb290KQorCQkJCQkJCSAg IGJvb2wgcHVidmlhcm9vdCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJSGVhcFR1cGxlCXJmdHVw bGU7CiAJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKQEAgLTMyNCw3 ICszMjQsOCBAQCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxh dGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0 aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKIAkJcHVibGlzaF9hc19yZWxpZAotCQkJ PSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwp OworCQkJPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMs IE5VTEwsCisJCQkJCQkJCQkJCSAgcHViYWxsdGFibGVzKTsKIAogCQlpZiAoIU9pZElzVmFsaWQo cHVibGlzaF9hc19yZWxpZCkpCiAJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CkBAIC0zNzMs NyArMzc0LDcgQEAgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVs YXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKICAqLwogYm9vbAogcHViX2NvbGxpc3Rf Y29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlz dCAqYW5jZXN0b3JzLAotCQkJCQkJIGJvb2wgcHVidmlhcm9vdCkKKwkJCQkJCQkJCWJvb2wgcHVi dmlhcm9vdCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJSGVhcFR1cGxlCXR1cGxlOwogCU9pZAkJ CXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CkBAIC0zOTIsNyArMzkzLDcgQEAg cHViX2NvbGxpc3RfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiBy ZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3IKIAkgKi8KIAlpZiAocHVidmlhcm9vdCAmJiByZWxhdGlv bi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7Ci0JCXB1Ymxpc2hfYXNfcmVsaWQgPSBHZXRU b3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwpOworCQlw dWJsaXNoX2FzX3JlbGlkID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwg YW5jZXN0b3JzLCBOVUxMLCBwdWJhbGx0YWJsZXMpOwogCiAJCWlmICghT2lkSXNWYWxpZChwdWJs aXNoX2FzX3JlbGlkKSkKIAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKQEAgLTgzNSw1NCAr ODM2LDUzIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVi bGljYXRpb25TdG10ICpzdG10KQogCS8qIE1ha2UgdGhlIGNoYW5nZXMgdmlzaWJsZS4gKi8KIAlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCi0JLyogQXNzb2NpYXRlIG9iamVjdHMgd2l0aCB0 aGUgcHVibGljYXRpb24uICovCi0JaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQotCXsKLQkJLyog SW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4g Ki8KLQkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwoKTsKLQl9Ci0JZWxzZQotCXsKLQkJT2Jq ZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRp b25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKKwlPYmplY3RzSW5QdWJsaWNhdGlvblRv T2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCQkJCQkJCSZzY2hl bWFpZGxpc3QpOwogCi0JCS8qIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBl cnVzZXIgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHNjaGVtYWlkbGlzdCkgPiAwICYmICFzdXBlcnVz ZXIoKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lF TlRfUFJJVklMRUdFKSwKLQkJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBjcmVhdGUg Rk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOworCS8qIEZPUiBBTEwgVEFC TEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAobGlzdF9sZW5ndGgoc2No ZW1haWRsaXN0KSA+IDAgJiYgIXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQllcnJtc2coIm11c3Qg YmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRp b24iKSk7CiAKLQkJaWYgKGxpc3RfbGVuZ3RoKHJlbGF0aW9ucykgPiAwKQotCQl7Ci0JCQlMaXN0 CSAgICpyZWxzOworCWlmIChsaXN0X2xlbmd0aChyZWxhdGlvbnMpID4gMCkKKwl7CisJCUxpc3QJ ICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7Ci0JCQlDaGVj a09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNjaGVtYWlkbGlzdCwKLQkJ CQkJCQkJCQkJCSAgUFVCTElDQVRJT05PQkpfVEFCTEUpOworCQlyZWxzID0gT3BlblRhYmxlTGlz dChyZWxhdGlvbnMpOworCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJl bHMsIHNjaGVtYWlkbGlzdCwKKwkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OT0JKX1RBQkxFKTsKIAot CQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAot CQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJVHJhbnNmb3JtUHViV2hl cmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJCQkJcHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChyZWxz LCBwc3RhdGUtPnBfc291cmNldGV4dCwKLQkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QpOworCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChyZWxzLCBwc3RhdGUtPnBfc291 cmNldGV4dCwKKwkJCQkJCQkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlQdWJs aWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJs ZUxpc3QocmVscyk7Ci0JCX0KKwkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0 cnVlLCBOVUxMKTsKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJfQogCi0JCWlmIChsaXN0X2xl bmd0aChzY2hlbWFpZGxpc3QpID4gMCkKLQkJewotCQkJLyoKLQkJCSAqIFNjaGVtYSBsb2NrIGlz IGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAotCQkJICog Y29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCi0JCQkgKi8KLQkJCUxvY2tTY2hlbWFMaXN0KHNj aGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxp c3QsIHRydWUsIE5VTEwpOwotCQl9CisJLyogdGFibGVzIGFkZGVkIHRocm91Z2ggYSBzY2hlbWEg Ki8KKwlpZiAobGlzdF9sZW5ndGgoc2NoZW1haWRsaXN0KSA+IDApCisJeworCQkvKgorCQkgKiBT Y2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHRvIHBy ZXZlbnQKKwkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCisJCSAqLworCQlMb2NrU2No ZW1hTGlzdChzY2hlbWFpZGxpc3QpOworCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBz Y2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwogCX0KIAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhj bHVzaXZlTG9jayk7CiAKKwkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlv bi4gKi8KKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJeworCQkvKiBJbnZhbGlkYXRlIHJl bGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLworCQlDYWNoZUlu dmFsaWRhdGVSZWxjYWNoZUFsbCgpOworCX0KKwogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29r KFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHVib2lkLCAwKTsKIAogCWlmICh3YWxfbGV2ZWwgIT0g V0FMX0xFVkVMX0xPR0lDQUwpCkBAIC0xMzU1LDYgKzEzNTUsMTkgQEAgQ2hlY2tBbHRlclB1Ymxp Y2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCQkg IExpc3QgKnRhYmxlcywgTGlzdCAqc2NoZW1haWRsaXN0KQogewogCUZvcm1fcGdfcHVibGljYXRp b24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwlMaXN0 Q2VsbCAgICpsYzsKKwlib29sCQlub25leGNlcHR0YWJsZSA9IGZhbHNlOworCWJvb2wJCWV4Y2Vw dHRhYmxlID0gZmFsc2U7CisKKwlmb3JlYWNoKGxjLCB0YWJsZXMpCisJeworCQlQdWJsaWNhdGlv blRhYmxlICpwdWJfdGFibGUgPSBsZmlyc3Rfbm9kZShQdWJsaWNhdGlvblRhYmxlLCBsYyk7CisK KwkJaWYgKCFwdWJfdGFibGUtPmV4Y2VwdCkKKwkJCW5vbmV4Y2VwdHRhYmxlID0gdHJ1ZTsKKwkJ ZWxzZQorCQkJZXhjZXB0dGFibGUgPSB0cnVlOworCX0KIAogCWlmICgoc3RtdC0+YWN0aW9uID09 IEFQX0FkZE9iamVjdHMgfHwgc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpICYmCiAJCXNj aGVtYWlkbGlzdCAmJiAhc3VwZXJ1c2VyKCkpCkBAIC0xMzc0LDEyICsxMzg3LDE5IEBAIENoZWNr QWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1 cCwKIAkJCQkgZXJyZGV0YWlsKCJUYWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRv LCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuIikp KTsKIAogCS8qIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1hbmlwdWxhdGUgdGhlIHB1 YmxpY2F0aW9uIHRhYmxlcy4gKi8KLQlpZiAodGFibGVzICYmIHB1YmZvcm0tPnB1YmFsbHRhYmxl cykKKwlpZiAobm9uZXhjZXB0dGFibGUgJiYgdGFibGVzICYmIHB1YmZvcm0tPnB1YmFsbHRhYmxl cykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMg ZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUyIsCiAJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5h bWUpKSwKIAkJCQkgZXJyZGV0YWlsKCJUYWJsZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3Bw ZWQgZnJvbSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuIikpKTsKKworCWlmIChleGNlcHR0 YWJsZSAmJiAhcHViZm9ybS0+cHViYWxsdGFibGVzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBl cnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxF UyIsCisJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKKwkJCQkgZXJyZGV0YWlsKCJl eGNlcHQgdGFibGUgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBO T04gQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuIikpKTsKIH0KIAogLyoKQEAgLTE2NTYsNiArMTY3 Niw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQlwdWJfcmVsLT5yZWxhdGlvbiA9 IHJlbDsKIAkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsKIAkJcHViX3Jl bC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsK IAkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lk KHJlbGlkcywgbXlyZWxpZCk7CiAKQEAgLTE3MjgsNiArMTc0OSw3IEBAIE9wZW5UYWJsZUxpc3Qo TGlzdCAqdGFibGVzKQogCiAJCQkJLyogY2hpbGQgaW5oZXJpdHMgY29sdW1uIGxpc3QgZnJvbSBw YXJlbnQgKi8KIAkJCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKKwkJCQlwdWJfcmVs LT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7 CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBjaGlsZHJlbGlkKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwppbmRleCAyY2Q4NTQ2ZDQ3Li40ZDY2MGRlNTVlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwpAQCAtMTYyNzQsNyArMTYyNzQsNyBAQCBBVFByZXBDaGFuZ2VQZXJz aXN0ZW5jZShSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dHRUQgYXMgVU5M T0dHRUQgdGFibGVzIGNhbid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2VkICYm Ci0JCWxpc3RfbGVuZ3RoKEdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQo cmVsKSkpID4gMCkKKwkJbGlzdF9sZW5ndGgoR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRp b25HZXRSZWxpZChyZWwpLCBmYWxzZSkpID4gMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJy bXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlIFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNlIGl0IGlz IHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIsCkBAIC0xNjQxMSw3ICsxNjQxMSw3IEBAIEFsdGVyVGFi bGVOYW1lc3BhY2UoQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpzdG10LCBPaWQgKm9sZHNjaGVtYSkK IAl7CiAJCUxpc3RDZWxsICAgKmxjOwogCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hl bWFQdWJsaWNhdGlvbnMobnNwT2lkKTsKLQkJTGlzdAkgICAqcmVsUHViaWRzID0gR2V0UmVsYXRp b25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJTGlzdAkgICAqcmVsUHVi aWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBmYWxz ZSk7CiAKIAkJZm9yZWFjaChsYywgcmVsUHViaWRzKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBjOTk0 MWQ5Y2I0Li40YTJkODNkYWNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTIxOSw2ICsyMTksOCBAQCBzdGF0 aWMgdm9pZCBwcm9jZXNzQ0FTYml0cyhpbnQgY2FzX2JpdHMsIGludCBsb2NhdGlvbiwgY29uc3Qg Y2hhciAqY29uc3RyVHlwZSwKIAkJCSAgIGJvb2wgKm5vX2luaGVyaXQsIGNvcmVfeXlzY2FuX3Qg eXlzY2FubmVyKTsKIHN0YXRpYyB2b2lkIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVi b2Jqc3BlY19saXN0LAogCQkJCQkJCQkgICBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CitzdGF0 aWMgdm9pZCBjaGVja19leGNlcHRfcHVib2JqcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVf eXlzY2FuX3QgeXlzY2FubmVyLAorCQkJCQkJCQkgYm9vbCBhbGx0YWJsZXMpOwogc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAogJX0KQEAgLTQ1NSw3ICs0NTcsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCQkJCXRyYW5zZm9ybV9lbGVtZW50X2xpc3QgdHJhbnNmb3JtX3R5cGVfbGlzdAog CQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVs YXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKLQkJCQlkcm9wX29wdGlvbl9saXN0 IHB1Yl9vYmpfbGlzdAorCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0IGV4Y2VwdF9w dWJfb2JqX2xpc3QKIAogJXR5cGUgPG5vZGU+CW9wdF9yb3V0aW5lX2JvZHkKICV0eXBlIDxncm91 cGNsYXVzZT4gZ3JvdXBfY2xhdXNlCkBAIC00OTMsNyArNDk1LDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKICV0eXBlIDxsaXN0PglvcHRfaW50ZXJ2YWwgaW50ZXJ2YWxfc2Vjb25kCiAldHlw ZSA8c3RyPgkJdW5pY29kZV9ub3JtYWxfZm9ybQogCi0ldHlwZSA8Ym9vbGVhbj4gb3B0X2luc3Rl YWQKKyV0eXBlIDxib29sZWFuPiBvcHRfaW5zdGVhZCBvcHRfZXhjZXB0CiAldHlwZSA8Ym9vbGVh bj4gb3B0X3VuaXF1ZSBvcHRfY29uY3VycmVudGx5IG9wdF92ZXJib3NlIG9wdF9mdWxsCiAldHlw ZSA8Ym9vbGVhbj4gb3B0X2ZyZWV6ZSBvcHRfYW5hbHl6ZSBvcHRfZGVmYXVsdCBvcHRfcmVjaGVj awogJXR5cGUgPGRlZmVsdD4Jb3B0X2JpbmFyeSBjb3B5X2RlbGltaXRlcgpAQCAtOTg3OSwxMiAr OTg4MSwxNSBAQCBDcmVhdGVQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPm9wdGlvbnMgPSAkNDsK IAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBDUkVBVEUgUFVCTElDQVRJT04gbmFt ZSBGT1IgQUxMIFRBQkxFUyBvcHRfZGVmaW5pdGlvbgorCQkJfCBDUkVBVEUgUFVCTElDQVRJT04g bmFtZSBGT1IgQUxMIFRBQkxFUyBleGNlcHRfcHViX29ial9saXN0IG9wdF9kZWZpbml0aW9uCiAJ CQkJewogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQdWJs aWNhdGlvblN0bXQpOwogCQkJCQluLT5wdWJuYW1lID0gJDM7Ci0JCQkJCW4tPm9wdGlvbnMgPSAk NzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OworCQkJCQluLT5wdWJvYmplY3RzID0gKExpc3QgKikk NzsKIAkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSB0cnVlOworCQkJCQlwcmVwcm9jZXNzX3B1Ym9i al9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7CisJCQkJCWNoZWNrX2V4Y2VwdF9wdWJv YmpzKG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lciwgdHJ1ZSk7CiAJCQkJCSQkID0gKE5vZGUgKilu OwogCQkJCX0KIAkJCXwgQ1JFQVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIHB1Yl9vYmpfbGlzdCBv cHRfZGVmaW5pdGlvbgpAQCAtOTg5NCw2ICs5ODk5LDcgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10 OgogCQkJCQluLT5vcHRpb25zID0gJDY7CiAJCQkJCW4tPnB1Ym9iamVjdHMgPSAoTGlzdCAqKSQ1 OwogCQkJCQlwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7 CisJCQkJCWNoZWNrX2V4Y2VwdF9wdWJvYmpzKG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lciwgZmFs c2UpOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CiAJCTsKQEAgLTk5MTIsMjYgKzk5MTgs MzAgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogICogcmVsYXRpb25fZXhwciBoZXJlLgogICov CiBQdWJsaWNhdGlvbk9ialNwZWM6Ci0JCQlUQUJMRSByZWxhdGlvbl9leHByIG9wdF9jb2x1bW5f bGlzdCBPcHRXaGVyZUNsYXVzZQorCQkJb3B0X2V4Y2VwdCBUQUJMRSByZWxhdGlvbl9leHByIG9w dF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQ dWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JK X1RBQkxFOwogCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsK LQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwotCQkJCQkkJC0+cHVidGFibGUtPmNv bHVtbnMgPSAkMzsKLQkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OworCQkJCQkk JC0+ZXhjZXB0ID0gJDE7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMzsKKwkJCQkJ JCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDQ7CisJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1 c2UgPSAkNTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQogCQkJfCBBTEwgVEFCTEVT IElOX1AgU0NIRU1BIENvbElkCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9u T2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lO X1NDSEVNQTsKIAkJCQkJJCQtPm5hbWUgPSAkNTsKKwkJCQkJJCQtPmV4Y2VwdCA9IGZhbHNlOwog CQkJCQkkJC0+bG9jYXRpb24gPSBANTsKIAkJCQl9CiAJCQl8IEFMTCBUQUJMRVMgSU5fUCBTQ0hF TUEgQ1VSUkVOVF9TQ0hFTUEKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25P YmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5f Q1VSX1NDSEVNQTsKKwkJCQkJJCQtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCQkkJC0+bG9jYXRpb24g PSBANTsKIAkJCQl9CiAJCQl8IENvbElkIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQpA QCAtOTk5NSw2ICsxMDAwNSwxNyBAQCBwdWJfb2JqX2xpc3Q6IAlQdWJsaWNhdGlvbk9ialNwZWMK IAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorIGV4Y2VwdF9wdWJfb2JqX2xp c3Q6CXB1Yl9vYmpfbGlzdAorCQkJCQl7ICQkID0gJDE7IH0KKwkJCXwgLypFTVBUWSovCisJCQkJ CXsgJCQgPSBOVUxMOyB9CisJOworCitvcHRfZXhjZXB0OgorCQkJRVhDRVBUCQkJCQkJCQkJeyAk JCA9IHRydWU7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gZmFsc2U7IH0KKwkJOwor CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFNF VCAoIG9wdGlvbnMgKQpAQCAtMTg3MTIsNiArMTg3MzMsNyBAQCBwcmVwcm9jZXNzX3B1Ym9ial9s aXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJTGlz dENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1Ym9iajsKIAlQdWJsaWNhdGlv bk9ialNwZWNUeXBlIHByZXZvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOwor CWJvb2wgcHJldmV4Y2VwdG9iaiA9IGZhbHNlOwogCiAJaWYgKCFwdWJvYmpzcGVjX2xpc3QpCiAJ CXJldHVybjsKQEAgLTE4NzI5LDcgKzE4NzUxLDEwIEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3Qo TGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJcHVib2Jq ID0gKFB1YmxpY2F0aW9uT2JqU3BlYyAqKSBsZmlyc3QoY2VsbCk7CiAKIAkJaWYgKHB1Ym9iai0+ cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04pCisJCXsKIAkJCXB1Ym9i ai0+cHVib2JqdHlwZSA9IHByZXZvYmp0eXBlOworCQkJcHVib2JqLT5leGNlcHQgPSBwcmV2ZXhj ZXB0b2JqOworCQl9CiAKIAkJaWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9C Sl9UQUJMRSkKIAkJewpAQCAtMTg3NTAsNiArMTg3NzUsOCBAQCBwcmVwcm9jZXNzX3B1Ym9ial9s aXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJ cHVib2JqLT5wdWJ0YWJsZSA9IHB1YnRhYmxlOwogCQkJCXB1Ym9iai0+bmFtZSA9IE5VTEw7CiAJ CQl9CisKKwkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHB1Ym9iai0+ZXhjZXB0OwogCQl9 CiAJCWVsc2UgaWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRVNf SU5fU0NIRU1BIHx8CiAJCQkJIHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9U QUJMRVNfSU5fQ1VSX1NDSEVNQSkKQEAgLTE4Nzg0LDYgKzE4ODExLDQxIEBAIHByZXByb2Nlc3Nf cHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cikKIAkJfQogCiAJCXByZXZvYmp0eXBlID0gcHVib2JqLT5wdWJvYmp0eXBlOworCQlwcmV2ZXhj ZXB0b2JqID0gcHVib2JqLT5leGNlcHQ7CisJfQorfQorCisvKgorICogUHJvY2VzcyBwdWJvYmpz cGVjX2xpc3QgdG8gY2hlY2sgaWYgIkVYQ0VQVCBUQUJMRVMiIGlzIHNwZWNpZmllZCBvbmx5Cisg KiB3aXRoICJBTEwgVEFCTEVTIiBhbmQgIkVYQ0VQVCBUQUJMRVMiIGFyZSBub3Qgc3BlY2lmaWVk IHdpdGggIk5PTiBBTEwgVEFCTEVTIgorICogcHVibGljYXRpb25zLgorICovCitzdGF0aWMgdm9p ZAorY2hlY2tfZXhjZXB0X3B1Ym9ianMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nh bl90IHl5c2Nhbm5lciwKKwkJCQkJCQlib29sIGFsbHRhYmxlcykKK3sKKwlMaXN0Q2VsbCAgICpj ZWxsOworCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2JqOworCisJaWYgKCFwdWJvYmpzcGVjX2xp c3QpCisJCXJldHVybjsKKworCWZvcmVhY2goY2VsbCwgcHVib2Jqc3BlY19saXN0KQorCXsKKwkJ cHVib2JqID0gKFB1YmxpY2F0aW9uT2JqU3BlYyAqKSBsZmlyc3QoY2VsbCk7CisKKwkJLyogRVhD RVBUIFRBQkxFIG9wdGlvbiBzdXBwb3J0ZWQgb25seSB3aXRoIEFMTCBUQUJMRVMgKi8KKwkJaWYg KCFhbGx0YWJsZXMgJiYgcHVib2JqLT5leGNlcHQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJFWENFUFQgVEFCTEUg Y2FuIGJlIHNwZWNpZmllZCBvbmx5IHdpdGggQUxMIFRBQkxFUyBvcHRpb24iKSwKKwkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKwkJLyogT25seSBFWENFUFQgVEFC TEUgb3B0aW9uIHN1cHBvcnRlZCB3aXRoIEFMTCBUQUJMRVMgKi8KKwkJZWxzZSBpZiAoYWxsdGFi bGVzICYmICFwdWJvYmotPmV4Y2VwdCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coIm9ubHkgRVhDRVBUIFRBQkxFIGNh biBiZSBzcGVjaWZpZWQgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbiIpLAorCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYjE5N2JmZDU2NS4uNGRjZDM1ZDFmNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOTg4 LDcgKzE5ODgsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxh dGlvbiByZWxhdGlvbikKIAlpZiAoIWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQpCiAJewogCQlPaWQJ CQlzY2hlbWFJZCA9IGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKTsKLQkJTGlzdAkgICAqcHViaWRz ID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQpOworCQlMaXN0CSAgICpwdWJpZHMgPSBH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgZmFsc2UpOworCQlMaXN0CSAgICpleGNlcHRU YWJsZVB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkLCB0cnVlKTsKIAogCQkv KgogCQkgKiBXZSBkb24ndCBhY3F1aXJlIGEgbG9jayBvbiB0aGUgbmFtZXNwYWNlIHN5c3RlbSB0 YWJsZSBhcyB3ZSBidWlsZApAQCAtMjA3NywyMiArMjA3OCw2IEBAIGdldF9yZWxfc3luY19lbnRy eShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJT2lkCXB1Yl9yZWxp ZCA9IHJlbGlkOwogCQkJaW50CWFuY2VzdG9yX2xldmVsID0gMDsKIAotCQkJLyoKLQkJCSAqIElm IHRoaXMgaXMgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwgcGljayB0aGUgcGFydGl0aW9u IHJvb3QKLQkJCSAqIGFuZCBzZXQgdGhlIGFuY2VzdG9yIGxldmVsIGFjY29yZGluZ2x5LgotCQkJ ICovCi0JCQlpZiAocHViLT5hbGx0YWJsZXMpCi0JCQl7Ci0JCQkJcHVibGlzaCA9IHRydWU7Ci0J CQkJaWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCi0JCQkJewotCQkJCQlMaXN0 CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7Ci0KLQkJCQkJ cHViX3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7Ci0JCQkJCWFuY2VzdG9yX2xldmVsID0g bGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKLQkJCQl9Ci0JCQl9Ci0KIAkJCWlmICghcHVibGlzaCkK IAkJCXsKIAkJCQlib29sCQlhbmNlc3Rvcl9wdWJsaXNoZWQgPSBmYWxzZTsKQEAgLTIxMTEsNyAr MjA5Niw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9u IHJlbGF0aW9uKQogCiAJCQkJCWFuY2VzdG9yID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNh dGlvbihwdWItPm9pZCwKIAkJCQkJCQkJCQkJCQkJCSAgIGFuY2VzdG9ycywKLQkJCQkJCQkJCQkJ CQkJCSAgICZsZXZlbCk7CisJCQkJCQkJCQkJCQkJCQkgICAmbGV2ZWwsCisJCQkJCQkJCQkJCQkJ CQkgICBwdWItPmFsbHRhYmxlcyk7CiAKIAkJCQkJaWYgKGFuY2VzdG9yICE9IEludmFsaWRPaWQp CiAJCQkJCXsKQEAgLTIxMjYsNiArMjExMiw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJCQkJaWYgKGxpc3RfbWVtYmVyX29p ZChwdWJpZHMsIHB1Yi0+b2lkKSB8fAogCQkJCQlsaXN0X21lbWJlcl9vaWQoc2NoZW1hUHViaWRz LCBwdWItPm9pZCkgfHwKKwkJCQkJKHB1Yi0+YWxsdGFibGVzICYmCisJCQkJCSAhbGlzdF9tZW1i ZXJfb2lkKGV4Y2VwdFRhYmxlUHViaWRzLCBwdWItPm9pZCkpIHx8CiAJCQkJCWFuY2VzdG9yX3B1 Ymxpc2hlZCkKIAkJCQkJcHVibGlzaCA9IHRydWU7CiAJCQl9CkBAIC0yMjAxLDYgKzIxODksNyBA QCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlv bikKIAogCQlsaXN0X2ZyZWUocHViaWRzKTsKIAkJbGlzdF9mcmVlKHNjaGVtYVB1Ymlkcyk7CisJ CWxpc3RfZnJlZShleGNlcHRUYWJsZVB1Ymlkcyk7CiAJCWxpc3RfZnJlZShyZWxfcHVibGljYXRp b25zKTsKIAogCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IDQzZjE0YzIzM2QuLjU2NTkyYWZhYzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYwpAQCAtNTU2Miw2ICs1NTYyLDggQEAgdm9pZAogUmVsYXRpb25CdWls ZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJk ZXNjKQogewogCUxpc3QJICAgKnB1Ym9pZHM7CisJTGlzdAkgICAqYWxsdGFibGVzcHVib2lkczsK KwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOwogCUxpc3RDZWxsICAgKmxjOwogCU1lbW9y eUNvbnRleHQgb2xkY3h0OwogCU9pZAkJCXNjaGVtYWlkOwpAQCAtNTU5NSw3ICs1NTk3LDcgQEAg UmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRp b25EZXNjICpwdWJkZXNjKQogCXB1YmRlc2MtPmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7 CiAKIAkvKiBGZXRjaCB0aGUgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwotCXB1Ym9p ZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CisJcHVib2lkcyA9IEdldFJlbGF0 aW9uUHVibGljYXRpb25zKHJlbGlkLCBmYWxzZSk7CiAJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5h bWVzcGFjZShyZWxhdGlvbik7CiAJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVi b2lkcywgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CiAKQEAgLTU2MDksMTQgKzU2 MTEsMTkgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwg UHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lk KGxjKTsKIAogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJ CQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKSk7CisJCQkJCQkJCQkJ CSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgZmFsc2UpKTsKIAkJCXNjaGVtYWlk ID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0 X3VuaXF1ZV9vaWQocHVib2lkcywKIAkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhz Y2hlbWFpZCkpOworCQkJZXhjZXB0cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQoZXhj ZXB0cHVib2lkcywKKwkJCQkJCQkJCQkJCSAgIEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2Vz dG9yLCB0cnVlKSk7CiAJCX0KIAl9Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQo cHVib2lkcywgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCkpOwogCisJYWxsdGFibGVzcHVib2lk cyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpOworCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91 bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChhbGx0YWJs ZXNwdWJvaWRzLAorCQkJCQkJCQkJCQkJCQkgZXhjZXB0cHVib2lkcykpOwogCWZvcmVhY2gobGMs IHB1Ym9pZHMpCiAJewogCQlPaWQJCQlwdWJpZCA9IGxmaXJzdF9vaWQobGMpOwpAQCAtNTY0NSw3 ICs1NjUyLDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlv biwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlpZiAoIXB1YmZvcm0tPnB1YmFsbHRhYmxl cyAmJgogCQkJKHB1YmZvcm0tPnB1YnVwZGF0ZSB8fCBwdWJmb3JtLT5wdWJkZWxldGUpICYmCiAJ CQlwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3Rv cnMsCi0JCQkJCQkJCQkgcHViZm9ybS0+cHVidmlhcm9vdCkpCisJCQkJCQkJCQkJICAgcHViZm9y bS0+cHVidmlhcm9vdCwgcHViZm9ybS0+cHViYWxsdGFibGVzKSkKIAkJewogCQkJaWYgKHB1YmZv cm0tPnB1YnVwZGF0ZSkKIAkJCQlwdWJkZXNjLT5yZl92YWxpZF9mb3JfdXBkYXRlID0gZmFsc2U7 CkBAIC01NjYyLDcgKzU2NjksNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0 aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCWlmICghcHViZm9ybS0+ cHViYWxsdGFibGVzICYmCiAJCQkocHViZm9ybS0+cHVidXBkYXRlIHx8IHB1YmZvcm0tPnB1YmRl bGV0ZSkgJiYKIAkJCXB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKHB1YmlkLCBy ZWxhdGlvbiwgYW5jZXN0b3JzLAotCQkJCQkJCQkJIHB1YmZvcm0tPnB1YnZpYXJvb3QpKQorCQkJ CQkJCQkJCQkJcHViZm9ybS0+cHVidmlhcm9vdCwgcHViZm9ybS0+cHViYWxsdGFibGVzKSkKIAkJ ewogCQkJaWYgKHB1YmZvcm0tPnB1YnVwZGF0ZSkKIAkJCQlwdWJkZXNjLT5jb2xzX3ZhbGlkX2Zv cl91cGRhdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDc4NmQ1OTJlMmIuLjkzNzFlM2JhNDQg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwpAQCAtMjg1LDcgKzI4NSw4IEBAIHN0YXRpYyB2b2lkIGR1bXBCbG9iKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IEJsb2JJbmZvICpiaW5mbyk7CiBzdGF0aWMgaW50CWR1bXBCbG9i cyhBcmNoaXZlICpmb3V0LCBjb25zdCB2b2lkICphcmcpOwogc3RhdGljIHZvaWQgZHVtcFBvbGlj eShBcmNoaXZlICpmb3V0LCBjb25zdCBQb2xpY3lJbmZvICpwb2xpbmZvKTsKIHN0YXRpYyB2b2lk IGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1 YmluZm8pOwotc3RhdGljIHZvaWQgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwg Y29uc3QgUHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5mbyk7CitzdGF0aWMgdm9pZCBkdW1wUHVi bGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKnB1 YnJpbmZvLAorCQkJCQkJCQkgYm9vbCBiZXhjZXB0KTsKIHN0YXRpYyB2b2lkIGR1bXBTdWJzY3Jp cHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbyk7CiBz dGF0aWMgdm9pZCBkdW1wRGF0YWJhc2UoQXJjaGl2ZSAqQUgpOwogc3RhdGljIHZvaWQgZHVtcERh dGFiYXNlQ29uZmlnKEFyY2hpdmUgKkFILCBQUUV4cEJ1ZmZlciBvdXRidWYsCkBAIC00MTUxLDYg KzQxNTIsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8g dGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWludAkJCWlfcHJyZWxpZDsKIAlpbnQJCQlpX3By cmVscXVhbDsKIAlpbnQJCQlpX3ByYXR0cnM7CisJaW50CQkJaV9wcmV4Y2VwdDsKIAlpbnQJCQlp LAogCQkJCWosCiAJCQkJbnR1cHM7CkBAIC00MTYyLDggKzQxNjQsMTcgQEAgZ2V0UHVibGljYXRp b25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxl cykKIAogCS8qIENvbGxlY3QgYWxsIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KIAlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKKwkJCQkJCQkiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVs aWQsXG4iKTsKKworCQkvKiBGSVhNRTogMTUwMDAwIHNob3VsZCBiZSBjaGFuZ2VkIHRvIDE2MDAw MCBsYXRlciBmb3IgUEcxNi4gKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAw KQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcHJleGNlcHQsXG4iKTsKKwkJZWxz ZQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgcHJleGNlcHQsXG4i KTsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgIlNFTEVDVCB0YWJs ZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCiAJCQkJCQkJICJwZ19jYXRhbG9nLnBnX2dl dF9leHByKHBycXVhbCwgcHJyZWxpZCkgQVMgcHJyZWxxdWFsLCAiCiAJCQkJCQkJICIoQ0FTRVxu IgogCQkJCQkJCSAiICBXSEVOIHByLnByYXR0cnMgSVMgTk9UIE5VTEwgVEhFTlxuIgpAQCAtNDE3 NCw2ICs0MTg1LDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkgIiAgICAgIFdIRVJFIGF0dHJl bGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlcbiIKIAkJCQkJCQkgIiAg RUxTRSBOVUxMIEVORCkgcHJhdHRycyAiCiAJCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fcmVsIHByIik7CisJfQogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwgIgpA QCAtNDE4OSw2ICs0MjAxLDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwg VGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpX3BycmVsaWQgPSBQUWZudW1i ZXIocmVzLCAicHJyZWxpZCIpOwogCWlfcHJyZWxxdWFsID0gUFFmbnVtYmVyKHJlcywgInBycmVs cXVhbCIpOwogCWlfcHJhdHRycyA9IFBRZm51bWJlcihyZXMsICJwcmF0dHJzIik7CisJaV9wcmV4 Y2VwdCA9IFBRZm51bWJlcihyZXMsICJwcmV4Y2VwdCIpOwogCiAJLyogdGhpcyBhbGxvY2F0aW9u IG1heSBiZSBtb3JlIHRoYW4gd2UgbmVlZCAqLwogCXB1YnJpbmZvID0gcGdfbWFsbG9jKG50dXBz ICogc2l6ZW9mKFB1YmxpY2F0aW9uUmVsSW5mbykpOwpAQCAtNDIwMCw2ICs0MjEzLDcgQEAgZ2V0 UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50 IG51bVRhYmxlcykKIAkJT2lkCQkJcHJyZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwg aV9wcnJlbGlkKSk7CiAJCVB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbzsKIAkJVGFibGVJbmZvICAq dGJpbmZvOworCQljaGFyICAgICAgICpwcmV4Y2VwdCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJl cywgaSwgaV9wcmV4Y2VwdCkpOwogCiAJCS8qCiAJCSAqIElnbm9yZSBhbnkgZW50cmllcyBmb3Ig d2hpY2ggd2UgYXJlbid0IGludGVyZXN0ZWQgaW4gZWl0aGVyIHRoZQpAQCAtNDIyMCw3ICs0MjM0 LDExIEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0Ymxp bmZvW10sIGludCBudW1UYWJsZXMpCiAJCQljb250aW51ZTsKIAogCQkvKiBPSywgbWFrZSBhIER1 bXBhYmxlT2JqZWN0IGZvciB0aGlzIHJlbGF0aW9uc2hpcCAqLwotCQlwdWJyaW5mb1tqXS5kb2Jq Lm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9SRUw7CisJCWlmIChzdHJjbXAocHJleGNlcHQsICJm IikgPT0gMCkKKwkJCXB1YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJQ0FUSU9OX1JF TDsKKwkJZWxzZQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05f RVhDRVBUX1JFTDsKKwogCQlwdWJyaW5mb1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0KIAkJCWF0 b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOwogCQlwdWJyaW5mb1tqXS5kb2Jq LmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKQEAgLTQzMTQs MTMgKzQzMzIsMTUgQEAgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNv bnN0IFB1YmxpY2F0aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCiAgKgkgIGR1bXAgdGhlIGRlZmlu aXRpb24gb2YgdGhlIGdpdmVuIHB1YmxpY2F0aW9uIHRhYmxlIG1hcHBpbmcKICAqLwogc3RhdGlj IHZvaWQKLWR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0 aW9uUmVsSW5mbyAqcHVicmluZm8pCitkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0 LCBjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvLAorCQkJCQkgYm9vbCBiZXhjZXB0 KQogewogCUR1bXBPcHRpb25zICpkb3B0ID0gZm91dC0+ZG9wdDsKIAlQdWJsaWNhdGlvbkluZm8g KnB1YmluZm8gPSBwdWJyaW5mby0+cHVibGljYXRpb247CiAJVGFibGVJbmZvICAqdGJpbmZvID0g cHVicmluZm8tPnB1YnRhYmxlOwogCVBRRXhwQnVmZmVyIHF1ZXJ5OwogCWNoYXIJICAgKnRhZzsK KwljaGFyCSAgICpkZXNjcmlwdGlvbjsKIAogCS8qIERvIG5vdGhpbmcgaW4gZGF0YS1vbmx5IGR1 bXAgKi8KIAlpZiAoZG9wdC0+ZGF0YU9ubHkpCkBAIC00MzMwLDggKzQzNTAsMTUgQEAgZHVtcFB1 YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25SZWxJbmZvICpw dWJyaW5mbykKIAogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAotCWFwcGVuZFBRRXhw QnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgQUREIFRBQkxFIE9OTFkiLAorCWFw cGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgQUREICIsCiAJCQkJ CSAgZm10SWQocHViaW5mby0+ZG9iai5uYW1lKSk7CisKKwlpZiAoYmV4Y2VwdCkKKwkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICJFWENFUFQgIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIlRBQkxFIE9OTFkiKTsKKwlkZXNjcmlwdGlvbiA9IChiZXhjZXB0KSA/ICJQVUJM SUNBVElPTiBFWENFUFQgVEFCTEUiIDogIlBVQkxJQ0FUSU9OIFRBQkxFIjsKKwogCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LCAiICVzIiwKIAkJCQkJICBmbXRRdWFsaWZpZWREdW1wYWJsZSh0Ymlu Zm8pKTsKIApAQCAtNDM2MCw3ICs0Mzg3LDcgQEAgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2 ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5mbykKIAkJCQkJIEFSQ0hJ VkVfT1BUUygudGFnID0gdGFnLAogCQkJCQkJCQkgIC5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmou bmFtZXNwYWNlLT5kb2JqLm5hbWUsCiAJCQkJCQkJCSAgLm93bmVyID0gcHViaW5mby0+cm9sbmFt ZSwKLQkJCQkJCQkJICAuZGVzY3JpcHRpb24gPSAiUFVCTElDQVRJT04gVEFCTEUiLAorCQkJCQkJ CQkgIC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLAogCQkJCQkJCQkgIC5zZWN0aW9uID0gU0VD VElPTl9QT1NUX0RBVEEsCiAJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBxdWVyeS0+ZGF0YSkpOwog CkBAIC05OTM2LDcgKzk5NjMsMTAgQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQs IER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQkJZHVtcFB1YmxpY2F0aW9uKGZvdXQsIChjb25zdCBQ dWJsaWNhdGlvbkluZm8gKikgZG9iaik7CiAJCQlicmVhazsKIAkJY2FzZSBET19QVUJMSUNBVElP Tl9SRUw6Ci0JCQlkdW1wUHVibGljYXRpb25UYWJsZShmb3V0LCAoY29uc3QgUHVibGljYXRpb25S ZWxJbmZvICopIGRvYmopOworCQkJZHVtcFB1YmxpY2F0aW9uVGFibGUoZm91dCwgKGNvbnN0IFB1 YmxpY2F0aW9uUmVsSW5mbyAqKSBkb2JqLCBmYWxzZSk7CisJCQlicmVhazsKKwkJY2FzZSBET19Q VUJMSUNBVElPTl9FWENFUFRfUkVMOgorCQkJZHVtcFB1YmxpY2F0aW9uVGFibGUoZm91dCwgKGNv bnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBkb2JqLCB0cnVlKTsKIAkJCWJyZWFrOwogCQljYXNl IERPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQToKIAkJCWR1bXBQdWJsaWNhdGlvbk5hbWVz cGFjZShmb3V0LApAQCAtMTc4NjksNiArMTc4OTksNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2ll cyhEdW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fUE9MSUNZ OgogCQkJY2FzZSBET19QVUJMSUNBVElPTjoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgor CQkJY2FzZSBET19QVUJMSUNBVElPTl9FWENFUFRfUkVMOgogCQkJY2FzZSBET19QVUJMSUNBVElP Tl9UQUJMRV9JTl9TQ0hFTUE6CiAJCQljYXNlIERPX1NVQlNDUklQVElPTjoKIAkJCQkvKiBQb3N0 LWRhdGEgb2JqZWN0czogbXVzdCBjb21lIGFmdGVyIHRoZSBwb3N0LWRhdGEgYm91bmRhcnkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCmluZGV4IDFkMjFjMjkwNmYuLjA3YTUwZWNlNjggMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAt ODAsNiArODAsNyBAQCB0eXBlZGVmIGVudW0KIAlET19SRUZSRVNIX01BVFZJRVcsCiAJRE9fUE9M SUNZLAogCURPX1BVQkxJQ0FUSU9OLAorCURPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwsCiAJRE9f UFVCTElDQVRJT05fUkVMLAogCURPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQSwKIAlET19T VUJTQ1JJUFRJT04KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCA1ZGUzMjQxZWI0Li5hMTE2ZjRk YTk3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC05MCw2ICs5MCw3IEBAIGVudW0gZGJPYmpl Y3RUeXBlUHJpb3JpdGllcwogCVBSSU9fRktfQ09OU1RSQUlOVCwKIAlQUklPX1BPTElDWSwKIAlQ UklPX1BVQkxJQ0FUSU9OLAorCVBSSU9fUFVCTElDQVRJT05fRVhDRVBUX1JFTCwKIAlQUklPX1BV QkxJQ0FUSU9OX1JFTCwKIAlQUklPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQSwKIAlQUklP X1NVQlNDUklQVElPTiwKQEAgLTE0NCw2ICsxNDUsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2Jq ZWN0VHlwZVByaW9yaXR5W10gPQogCVBSSU9fUkVGUkVTSF9NQVRWSUVXLAkJLyogRE9fUkVGUkVT SF9NQVRWSUVXICovCiAJUFJJT19QT0xJQ1ksCQkJCS8qIERPX1BPTElDWSAqLwogCVBSSU9fUFVC TElDQVRJT04sCQkJLyogRE9fUFVCTElDQVRJT04gKi8KKwlQUklPX1BVQkxJQ0FUSU9OX0VYQ0VQ VF9SRUwsCS8qIERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwgKi8KIAlQUklPX1BVQkxJQ0FUSU9O X1JFTCwJCS8qIERPX1BVQkxJQ0FUSU9OX1JFTCAqLwogCVBSSU9fUFVCTElDQVRJT05fVEFCTEVf SU5fU0NIRU1BLAkvKiBET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEgKi8KIAlQUklPX1NV QlNDUklQVElPTgkJCS8qIERPX1NVQlNDUklQVElPTiAqLwpAQCAtMTQ4OCw2ICsxNDkwLDExIEBA IGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3QgKm9iaiwgY2hhciAqYnVmLCBp bnQgYnVmc2l6ZSkKIAkJCQkJICJQVUJMSUNBVElPTiBUQUJMRSAoSUQgJWQgT0lEICV1KSIsCiAJ CQkJCSBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0dXJuOworCQljYXNlIERP X1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw6CisJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCisJCQkJ CSAiUFVCTElDQVRJT04gRVhDRVBUIFRBQkxFIChJRCAlZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+ ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CisJCQlyZXR1cm47CiAJCWNhc2UgRE9fUFVCTElDQVRJ T05fVEFCTEVfSU5fU0NIRU1BOgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAogCQkJCQkgIlBV QkxJQ0FUSU9OIFRBQkxFUyBJTiBTQ0hFTUEgKElEICVkIE9JRCAldSkiLApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbAppbmRleCAzYjMxZTEzZjYyLi45YjAzN2QxZWI0IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbApAQCAtMjQ1NCw2ICsyNDU0LDE1IEBAIG15ICV0ZXN0cyA9ICgKIAkJbGlrZSA9 PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCiAJfSwKIAorCSdDUkVB VEUgUFVCTElDQVRJT04gcHViNScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0 ZV9zcWwgICA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjUgRk9SIEFMTCBUQUJMRVM7JywKKwkJ cmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjUgRk9SIEFMTCBUQUJM RVMgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xF CisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAx LCB9LAorCX0sCisKIAknQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxJyA9PiB7CiAJCWNyZWF0ZV9v cmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEK QEAgLTI1NTgsNiArMjU2NywyMCBAQCBteSAldGVzdHMgPSAoCiAJCXVubGlrZSA9PiB7IGV4Y2x1 ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAogCX0sCiAKKwknQUxURVIgUFVCTElDQVRJT04g cHViNSBBREQgRVhDRVBUIFRBQkxFIHRlc3RfdGFibGUnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+ IDUyLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjUgQUREIEVY Q0VQVCBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJ XFFBTFRFUiBQVUJMSUNBVElPTiBwdWI1IEFERCBFWENFUFQgVEFCTEUgT05MWSBkdW1wX3Rlc3Qu dGVzdF90YWJsZTtcRQorCQkJL3htLAorCQlsaWtlICAgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9u X3Bvc3RfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rf c2NoZW1hID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUgICAgICAgPT4gMSwKKwkJfSwKKwl9 LAorCiAJJ0NSRUFURSBTQ0hFTUEgcHVibGljJyA9PiB7CiAJCXJlZ2V4cCA9PiBxci9eQ1JFQVRF IFNDSEVNQSBwdWJsaWM7L20sCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j IGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNDM2OWYyMjM1Yi4uMTA1N2U5ZTdjZiAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKQEAgLTI5NTIsMTUgKzI5NTIsMzIgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1 YmxpY2F0aW9uIHBcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRp b25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgogCQkJCQkJCQkgICIJCUpPSU4gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJX SEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgotCQkJCQkJCQkgICJVTklPTlxuIgorCQkJCQkJCQkg ICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJyIsCisJCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7CisK KwkJCQkvKiBGSVhNRTogMTUwMDAwIHNob3VsZCBiZSBjaGFuZ2VkIHRvIDE2MDAwMCBsYXRlciBm b3IgUEcxNi4gKi8KKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgQU5EIHByLnByZXhjZXB0ID0gJ2YnXG4iKTsKKworCQkJ CWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJVTklPTlxuIgogCQkJCQkJCQkgICJTRUxFQ1QgcHVi bmFtZVxuIgogCQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICIJCSwgTlVMTFxuIgog CQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJCQkg ICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJs aXNoYWJsZSgnJXMnKVxuIgotCQkJCQkJCQkgICJPUkRFUiBCWSAxOyIsCi0JCQkJCQkJCSAgb2lk LCBvaWQsIG9pZCwgb2lkKTsKKwkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBn X2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIsCisJCQkJCQkJCSAg b2lkKTsKKworCQkJCS8qIEZJWE1FOiAxNTAwMDAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gMTYwMDAw IGxhdGVyIGZvciBQRzE2LiAqLworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJ CQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCSAgIgkJQU5EIE5PVCBFWElTVFMg KFNFTEVDVCAxXG4iCisJCQkJCQkJCQkgICIJCQkJCQkJRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCQkJICAiCQkJCQkJCQlKT0lOIHBnX2NhdGFsb2cucGdf Y2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkgIAkgCQkJCQkJT04gcHIucHJyZWxpZCA9IHBjLm9p ZFxuIgorCQkJCQkJCQkJICAiCQkJCQkJCVdIRVJFIHByLnBycmVsaWQgPSAnJXMnIEFORCBwci5w cnB1YmlkID0gcC5vaWQpXG4iLAorCQkJCQkJCQkJICBvaWQpOworCisJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDE7Iik7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC02 MzAyLDggKzYzMTksMTMgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCiAJ CQkJCQkJICAiV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAgQU5E IGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMn XG4iCi0JCQkJCQkJICAiT1JERVIgQlkgMSwyIiwgcHViaWQpOworCQkJCQkJCSAgIiAgQU5EIHBy LnBycHViaWQgPSAnJXMnXG4iLCBwdWJpZCk7CisKKwkJCS8qIEZJWE1FOiAxNTAwMDAgc2hvdWxk IGJlIGNoYW5nZWQgdG8gMTYwMDAwIGxhdGVyIGZvciBQRzE2LiAqLworCQkJaWYgKHBzZXQuc3Zl cnNpb24gPj0gMTUwMDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICIgIEFORCBwci5w cmV4Y2VwdCA9ICdmJ1xuIik7CisKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJPUkRFUiBC WSAxLDIiKTsKIAkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiVGFi bGVzOiIpLCBmYWxzZSwgJmNvbnQpKQogCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCkBAIC02MzIy LDYgKzYzNDQsMjIgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikK IAkJCX0KIAkJfQogCisJCS8qIEZJWE1FOiAxNTAwMDAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gMTYw MDAwIGxhdGVyIGZvciBQRzE2LiAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJ CXsKKwkJCS8qIEdldCB0aGUgZXhjbHVkZWQgdGFibGVzIGZvciB0aGUgc3BlY2lmaWVkIHB1Ymxp Y2F0aW9uICovCisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBj b25jYXQoYy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVzcGFjZSwgJy4nLCBjLnJlbG5hbWUpXG4iCisJ CQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkgICIgICAgIEpP SU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlk XG4iCisJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICclcydcbiIKKwkJCQkJCQkgICIgIEFO RCBwci5wcmV4Y2VwdCA9ICd0J1xuIgorCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJ CQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsICJFeGNlcHQgdGFibGVzOiIs CisJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJfQor CiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxl KTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggNTg4 YzA4NDFmZS4uNzg3MGUxNmFjZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMTgyMiw4ICsxODIyLDEx IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQp CiAJCUNPTVBMRVRFX1dJVEgoIkFERCIsICJEUk9QIiwgIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIs ICJTRVQiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gQUREICovCiAJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIpKQorCQlDT01Q TEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJFWENFUFQgVEFCTEUiLCAiVEFCTEUi KTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi QUREIiwgIkVYQ0VQVCIpKQogCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIs ICJUQUJMRSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIikgfHwKKwkJCSBNYXRjaGVzKCJBTFRFUiIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJFWENFUFQiLCAiVEFCTEUiKSB8fAogCQkJ IChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQi LCAiVEFCTEUiKSAmJgogCQkJICBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkpCiAJCUNPTVBMRVRF X1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CkBAIC0xODQ1LDEw ICsxODQ4LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQs IGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEgoIiwiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8 bmFtZT4gRFJPUCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJEUk9QIikpCi0JCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1B IiwgIlRBQkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIkVY Q0VQVCBUQUJMRSIsICJUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJEUk9QIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCJU QUJMRSIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBTRVQgKi8KIAllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIikpCi0JCUNPTVBM RVRFX1dJVEgoIigiLCAiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJQ09NUExF VEVfV0lUSCgiKCIsICJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJFWENFUFQgVEFCTEUiLCAiVEFC TEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiU0VUIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSIpOwogCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8RFJPUHxTRVQi LCAiQUxMIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVS WV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUg Tk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKQEAgLTI5ODUsNyArMjk5Miw5IEBAIHBzcWxfY29tcGxl dGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIikpCiAJ CUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJUQUJMRVMgSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwg IlRBQkxFUyIpKQotCQlDT01QTEVURV9XSVRIKCJJTiBTQ0hFTUEiLCAiV0lUSCAoIik7CisJCUNP TVBMRVRFX1dJVEgoIklOIFNDSEVNQSIsICJXSVRIICgiLCAiRVhDRVBUIFRBQkxFIik7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlRBQkxFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEUiKTsKIAll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCiAJCUNPTVBM RVRFX1dJVEgoIldIRVJFICgiLCAiV0lUSCAoIik7CiAJLyogQ29tcGxldGUgIkNSRUFURSBQVUJM SUNBVElPTiA8bmFtZT4gRk9SIFRBQkxFIiB3aXRoICI8dGFibGU+LCAuLi4iICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggMjliMTg1NjY2NS4uZWVlZTk2ZjQyZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTA4LDExICsxMDgsMTIgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiAJUmVsYXRpb24JcmVsYXRpb247CiAJTm9k ZQkgICAqd2hlcmVDbGF1c2U7CiAJTGlzdAkgICAqY29sdW1uczsKKwlib29sCQlleGNlcHQ7CiB9 IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlv bihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbkJ5TmFtZShj b25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwotZXh0ZXJuIExpc3QgKkdldFJl bGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7CitleHRlcm4gTGlzdCAqR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBib29sIGJleGNlcHQpOwogCiAvKi0tLS0tLS0tLQogICog RXhwZWN0ZWQgdmFsdWVzIGZvciBwdWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YgR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMoKSwKQEAgLTEzMiw3ICsxMzMsNyBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRp b25QYXJ0T3B0CiAKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHVi aWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxs VGFibGVzUHVibGljYXRpb25zKHZvaWQpOwotZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1Ymxp Y2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsVGFi bGVzUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBib29sIHB1YnZpYXJvb3QpOwogZXh0 ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExpc3Qg KkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdldFNj aGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKQEAgLTE0Myw3ICsxNDQsNyBA QCBleHRlcm4gTGlzdCAqR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3Vs dCwKIAkJCQkJCQkJCQkJUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAogCQkJCQkJCQkJ CQlPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9u KE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKLQkJCQkJCQkJCQkJaW50ICphbmNlc3Rvcl9s ZXZlbCk7CisJCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwsIGJvb2wgcHViYWxsdGFibGVz KTsKIAogZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsK IGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQgcHViaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKaW5kZXggNGZlYjU4MTg5OS4uMmViMWZiZWFi ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSw2ICsz MSw3IEBAIENBVEFMT0cocGdfcHVibGljYXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxh dGlvbklkKQogCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09L VVAocGdfcHVibGljYXRpb24pOyAvKiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJ cHJyZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLwor CWJvb2wJCXByZXhjZXB0IEJLSV9ERUZBVUxUKGYpOwkvKiBleGNlcHQgdGhlIHJlbGF0aW9uICov CiAKICNpZmRlZglDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3Rh cnQgaGVyZSAqLwogCXBnX25vZGVfdHJlZSBwcnF1YWw7CQkvKiBxdWFsaWZpY2F0aW9ucyAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaAppbmRleCBhZTg3Y2FmMDg5Li5hNTE1 Y2RiODAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaApAQCAtMzIsOCAr MzIsOCBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclB1YmxpY2F0aW9uT3duZXIoY29uc3Qg Y2hhciAqbmFtZSwgT2lkIG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJQdWJsaWNhdGlv bk93bmVyX29pZChPaWQgcHViaWQsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEludmFs aWRhdGVQdWJsaWNhdGlvblJlbHMoTGlzdCAqcmVsaWRzKTsKIGV4dGVybiBib29sIHB1Yl9yZl9j b250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJ CQkJCQkJIExpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290KTsKKwkJCQkJCQkJCQkgICBM aXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCwgYm9vbCBhbGx0YWJsZXMpOwogZXh0ZXJu IGJvb2wgcHViX2NvbGxpc3RfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxh dGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCSBMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9v dCk7CisJCQkJCQkJCQkJCQlMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCwgYm9vbCBh bGx0YWJsZXMpOwogCiAjZW5kaWYJCQkJCQkJLyogUFVCTElDQVRJT05DTURTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaAppbmRleCBkYTAyNjU4YzgxLi4zMDhkM2MwN2E4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCkBAIC00MDAzLDYgKzQwMDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlv blRhYmxlCiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNo ZWQgKi8KIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KIAlMaXN0 CSAgICpjb2x1bW5zOwkJLyogTGlzdCBvZiBjb2x1bW5zIGluIGEgcHVibGljYXRpb24gdGFibGUg Ki8KKwlib29sCQlleGNlcHQ7CQkJLyogZXhjZXB0IHJlbGF0aW9uICovCiB9IFB1YmxpY2F0aW9u VGFibGU7CiAKIC8qCkBAIC00MDIzLDYgKzQwMjQsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNh dGlvbk9ialNwZWMKIAlQdWJsaWNhdGlvbk9ialNwZWNUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUg b2YgdGhpcyBwdWJsaWNhdGlvbiBvYmplY3QgKi8KIAljaGFyCSAgICpuYW1lOwogCVB1YmxpY2F0 aW9uVGFibGUgKnB1YnRhYmxlOworCWJvb2wJCWV4Y2VwdDsKIAlpbnQJCQlsb2NhdGlvbjsJCS8q IHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uT2JqU3Bl YzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAzOThj MGYzOGY2Li42MzA4MzBhOGNlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dApAQCAtMTE2LDYgKzExNiwzNSBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0IgogCistLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgZXhjZXB0 IHRhYmxlIHRvICdGT1IgQUxMIFRBQkxFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzIEFERCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworXGRS cCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJf dGJsMSIKKworLS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IGV4Y2VwdCB0YWJsZSB0byAnRk9SIEFM TCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRh YmxlcyBTRVQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMjsKK1xkUnArIHRlc3RwdWJfZm9yYWxs dGFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X2ZvcmFsbHRhYmxlcworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDIiCisKKy0tIHNob3Vs ZCBiZSBhYmxlIHRvIGRyb3AgZXhjZXB0IHRhYmxlIGZyb20gJ0ZPUiBBTEwgVEFCTEVTJyBwdWJs aWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgRFJPUCBFWENF UFQgVEFCTEUgdGVzdHB1Yl90YmwyOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVz CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorKDEgcm93KQor CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JzY2hlbWEgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKQEAgLTE0MSw2ICsxNzAsMzAgQEAgQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsK IFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogCistLSBmYWlsIC0gY2FuJ3Qg YWRkIGV4Y2VwdCB0YWJsZSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKK0VS Uk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGFibGUiIGlzIG5vdCBkZWZpbmVkIGFzIEZP UiBBTEwgVEFCTEVTCitERVRBSUw6ICBleGNlcHQgdGFibGUgY2Fubm90IGJlIGFkZGVkIHRvLCBk cm9wcGVkIGZyb20sIG9yIHNldCBvbiBOT04gQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCistLSBm YWlsIC0gY2FuJ3QgZHJvcCBleGNlcHQgdGFibGUgZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlv bgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9QIEVYQ0VQVCBUQUJMRSB0 ZXN0cHViX3RibDE7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBpcyBu b3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUworREVUQUlMOiAgZXhjZXB0IHRhYmxlIGNhbm5v dCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gTk9OIEFMTCBUQUJMRVMgcHVi bGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IHNldCBleGNlcHQgdGFibGUgdG8gJ0ZPUiBUQUJM RScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VUIEVY Q0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2Zv cnRhYmxlIiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUworREVUQUlMOiAgZXhjZXB0 IHRhYmxlIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gTk9OIEFM TCBUQUJMRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGFkZCBleGNlcHQgdGFibGUg dG8gc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVt YSBBREQgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKK0VSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWJfZm9yc2NoZW1hIiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUworREVUQUlM OiAgZXhjZXB0IHRhYmxlIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQg b24gTk9OIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGRyb3AgZXhj ZXB0IHRhYmxlIGZyb20gc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcnNjaGVtYSBEUk9QIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIHB1 YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNjaGVtYSIgaXMgbm90IGRlZmluZWQgYXMgRk9SIEFMTCBU QUJMRVMKK0RFVEFJTDogIGV4Y2VwdCB0YWJsZSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQg ZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBj YW4ndCBzZXQgZXhjZXB0IHRhYmxlIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitF UlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNjaGVtYSIgaXMgbm90IGRlZmluZWQgYXMg Rk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIGV4Y2VwdCB0YWJsZSBjYW5ub3QgYmUgYWRkZWQgdG8s IGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4KIFNF TEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJu YW1lID0gJ3Rlc3RwdWJfZm9yYWxsdGFibGVzJzsKICAgICAgICBwdWJuYW1lICAgICAgICB8IHB1 YmFsbHRhYmxlcyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KQEAgLTE2 NSw4ICsyMTgsMzQgQEAgUHVibGljYXRpb25zOgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBm CiAoMSByb3cpCiAKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsK K1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6 CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIGZhaWwgLSBjYW4ndCBzcGVjaWZ5IGV4 Y2VwdCB0YWJsZSBhbG9uZyB3aXRoIHRhYmxlIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZV9leGNlcHR0YWJsZSBGT1IgVEFCTEUgcHViX3Rlc3QudGVzdHB1 Yl9ub3BrLCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworRVJST1I6ICBFWENFUFQgVEFCTEUg Y2FuIGJlIHNwZWNpZmllZCBvbmx5IHdpdGggQUxMIFRBQkxFUyBvcHRpb24KK0xJTkUgMTogLi4u YWJsZV9leGNlcHR0YWJsZSBGT1IgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrLCBFWENFUFQg VEFCLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gZmFpbCAtIGNhbid0IHNwZWNpZnkgZXhjZXB0IHRhYmxlIGFsb25n IHdpdGggc2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0 YWJsZV9leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIEVYQ0VQ VCBUQUJMRSB0ZXN0cHViX3RibDE7CitFUlJPUjogIEVYQ0VQVCBUQUJMRSBjYW4gYmUgc3BlY2lm aWVkIG9ubHkgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbgorTElORSAxOiAuLi5sZV9leGNlcHR0YWJs ZSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIEVYQ0VQVCBUQUIuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBmYWlsIC0gY2FuJ3Qgc3BlY2lmeSBvbmx5IGV4Y2VwdCB0YWJsZSB3aGlsZSBjcmVhdGUg cHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2V4Y2VwdHRh YmxlIEZPUiBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworRVJST1I6ICBFWENFUFQgVEFCTEUg Y2FuIGJlIHNwZWNpZmllZCBvbmx5IHdpdGggQUxMIFRBQkxFUyBvcHRpb24KK0xJTkUgMTogLi4u RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2V4Y2VwdHRhYmxlIEZPUiBFWENFUFQg VEFCLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVt YTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFi bGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTsK IENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKIENSRUFURSBUQUJMRSB0ZXN0cHVi X3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVi bGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4 IDllYjg2ZmQ1NGYuLjc0NjA5OGVjYjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwKQEAgLTcxLDYgKzcxLDE2IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUg RFJPUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9ydGFibGUgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsg dGVzdHB1Yl9mb3J0YWJsZQogCistLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgZXhjZXB0IHRhYmxl IHRvICdGT1IgQUxMIFRBQkxFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzIEFERCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworXGRScCsgdGVz dHB1Yl9mb3JhbGx0YWJsZXMKKy0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCBleGNlcHQgdGFibGUg dG8gJ0ZPUiBBTEwgVEFCTEVTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JhbGx0YWJsZXMgU0VUIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDI7CitcZFJwKyB0ZXN0 cHViX2ZvcmFsbHRhYmxlcworLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBleGNlcHQgdGFibGUg ZnJvbSAnRk9SIEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHRhYmxlcyBEUk9QIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDI7CitcZFJwKyB0 ZXN0cHViX2ZvcmFsbHRhYmxlcworCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKQEAgLTg1LDEyICs5 NSw0MCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfbm9wazsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1h IFNFVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVt YQogCistLSBmYWlsIC0gY2FuJ3QgYWRkIGV4Y2VwdCB0YWJsZSB0byAnRk9SIFRBQkxFJyBwdWJs aWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgRVhDRVBUIFRB QkxFIHRlc3RwdWJfdGJsMTsKKy0tIGZhaWwgLSBjYW4ndCBkcm9wIGV4Y2VwdCB0YWJsZSBmcm9t ICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRh YmxlIERST1AgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKKy0tIGZhaWwgLSBjYW4ndCBzZXQg ZXhjZXB0IHRhYmxlIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworCistLSBm YWlsIC0gY2FuJ3QgYWRkIGV4Y2VwdCB0YWJsZSB0byBzY2hlbWEgcHVibGljYXRpb24KK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEFERCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90 YmwxOworLS0gZmFpbCAtIGNhbid0IGRyb3AgZXhjZXB0IHRhYmxlIGZyb20gc2NoZW1hIHB1Ymxp Y2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIEVYQ0VQVCBU QUJMRSB0ZXN0cHViX3RibDE7CistLSBmYWlsIC0gY2FuJ3Qgc2V0IGV4Y2VwdCB0YWJsZSB0byBz Y2hlbWEgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNF VCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOwogU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxl cyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGx0YWJs ZXMnOwogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKIAorU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSB0 ZXN0cHViX3RibDE7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorCistLSBmYWlsIC0gY2FuJ3Qgc3BlY2lmeSBleGNl cHQgdGFibGUgYWxvbmcgd2l0aCB0YWJsZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGVfZXhjZXB0dGFibGUgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf bm9waywgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKKworLS0gZmFpbCAtIGNhbid0IHNwZWNp ZnkgZXhjZXB0IHRhYmxlIGFsb25nIHdpdGggc2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZV9leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QsIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CisKKy0tIGZhaWwgLSBj YW4ndCBzcGVjaWZ5IG9ubHkgZXhjZXB0IHRhYmxlIHdoaWxlIGNyZWF0ZSBwdWJsaWNhdGlvbgor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfZXhjZXB0dGFibGUgRk9SIEVYQ0VQ VCBUQUJMRSB0ZXN0cHViX3RibDE7CisKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1 Yl9mb3JzY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0 cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGU7CiAKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKIENSRUFURSBU QUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMzX3JlcF9jaGFuZ2VzX2V4Y2VwdF90 YWJsZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzM19yZXBfY2hhbmdlc19leGNlcHRf dGFibGUucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWY2MTQxY2Vj YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzM19yZXBfY2hh bmdlc19leGNlcHRfdGFibGUucGwKQEAgLTAsMCArMSw5NyBAQAorCisjIENvcHlyaWdodCAoYykg MjAyMS0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIExvZ2lj YWwgcmVwbGljYXRpb24gdGVzdHMgZm9yIGV4Y2VwdCB0YWJsZSBwdWJsaWNhdGlvbnMKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxp emUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBD cmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0 KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OworCisjIFRlc3QgcmVwbGljYXRpb24gd2l0aCBwdWJsaWNhdGlvbnMgY3JlYXRlZCB1c2luZyBG T1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUKKyMgb3B0aW9uLgorIyBDcmVhdGUgc2NoZW1hcyBh bmQgdGFibGVzIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNSRUFURSBTQ0hFTUEgc2NoMSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHNjaDEudGFiMSBBUyBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzKDEsMTApIEFTIGEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSBwdWJsaWMudGFiMShhIGludCkiKTsKKworIyBDcmVhdGUgc2No ZW1hcyBhbmQgdGFibGVzIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ1JFQVRFIFNDSEVNQSBzY2gxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50KSIpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgcHVi bGljLnRhYjEgKGEgaW50KSIpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRw dWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBv c3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg c2NoMS50YWIxIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiCispOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyMgQWxzbyB3YWl0 IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCitteSAkc3luY2VkX3F1ZXJ5ID0KKyAg IlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25fcmVsIFdIRVJFIHNyc3Vi c3RhdGUgTk9UIElOICgncicsICdzJyk7IjsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlf dW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hp bGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVj ayB0aGUgdGFibGUgZGF0YSBkb2VzIG5vdCBzeW5jIGZvciBleGNsdWRlZCB0YWJsZQorbXkgJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg Y291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gc2NoMS50YWIxIik7CitpcygkcmVzdWx0LCBx cSgwfHwpLCAnY2hlY2sgdGFibGVzeW5jIGlzIGV4Y2x1ZGVkIGZvciBleGNsdWRlZCB0YWJsZXMn KTsKKworIyBJbnNlcnQgc29tZSBkYXRhIGludG8gZmV3IHRhYmxlcyBhbmQgdmVyaWZ5IHRoYXQg aW5zZXJ0ZWQgZGF0YSBpcyBub3QKKyMgcmVwbGljYXRlZAorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUyhnZW5lcmF0 ZV9zZXJpZXMoMTEsMjApKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J3RhcF9zdWJfc2NoZW1hJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNj aDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0 cyBvbiBzdWJzY3JpYmVyJyk7CisKKyMgQWx0ZXIgcHVibGljYXRpb24gdG8gZXhjbHVkZSBkYXRh IGNoYW5nZXMgaW4gcHVibGljLnRhYjEgYW5kIHZlcmlmeSB0aGF0CisjIHN1YnNjcmliZXIgZG9l cyBub3QgZ2V0IHRoZSBuZXcgdGFibGUgZGF0YS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisgICAgICAgICJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBh ZGQgRVhDRVBUIFRBQkxFIHB1YmxpYy50YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorICAgICAgICAiSU5TRVJUIElOVE8gcHVibGljLnRhYjEgVkFMVUVTKGdl bmVyYXRlX3NlcmllcygxLDEwKSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCd0YXBfc3ViX3NjaGVtYScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJP TSBwdWJsaWMudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNrIHJvd3Mgb24gc3Vi c2NyaWJlciBjYXRjaHVwJyk7CisKKyMgQWx0ZXIgcHVibGljYXRpb24gdG8gZHJvcCBleGNlcHQg dGFibGUgcHVibGljLnRhYjEgYW5kIHZlcmlmeSB0aGF0IHN1YnNjcmliZXIKKyMgZ2V0cyB0aGUg bmV3IHRhYmxlIGRhdGEuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor ICAgICAgICAiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgZHJvcCBFWENFUFQgVEFC TEUgcHVibGljLnRhYjEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisgICAgICAgICJJTlNFUlQgSU5UTyBwdWJsaWMudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVz KDEsMTApKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJf c2NoZW1hJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKyAgICAgICAgIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBwdWJs aWMudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMTB8MXwxMCksICdjaGVjayByb3dzIG9uIHN1YnNj cmliZXIgY2F0Y2h1cCcpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdmYXN0Jyk7Ciskbm9k ZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjMyLjAK Cg== --000000000000ac201805dda24025--