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 1nY758-0005gm-Or for pgsql-hackers@arkaria.postgresql.org; Sat, 26 Mar 2022 14:07:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nY756-0003RT-Fd for pgsql-hackers@arkaria.postgresql.org; Sat, 26 Mar 2022 14:07:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nY755-0003RK-CX for pgsql-hackers@lists.postgresql.org; Sat, 26 Mar 2022 14:07:51 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nY74v-0004iP-E2 for pgsql-hackers@lists.postgresql.org; Sat, 26 Mar 2022 14:07:50 +0000 Received: by mail-ed1-x536.google.com with SMTP id a17so12124840edm.9 for ; Sat, 26 Mar 2022 07:07:41 -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; bh=BRyfTbDTbDB2fpy4R08lEdPIAsO5R90wfgwWFKgixVg=; b=M0YvVuDMS3gPo1+64f8fzh2q4rPop2/ku7I7JZZL5IseKSGRydtL4mwpGlar3LjN/Z 1c6BnwsEFdKJ2BKchsFJVXx/sNsU9eVr/CQrK87gG9Nb0EsqGV1PHpIjdhYRebDNdzzQ g2vLmVRr583pwobdxaizWEcoI5xAI1gwUtO96jB9w5Y2QVPpUIJIDCrkePOmqD2KkX7t TsmnIl06vc6LnpkZDUr9PtXhwEn8+5W3IBNw7xya90jypPVZ6JGlYEfMEUfKfA2qUNUA ASL5svCjz+FtXgMxSYxm3VUDLvXrIfJeKHqfTz4rKooFlpvff2E8lcn4QEHI+jWhTzlO xa7g== 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; bh=BRyfTbDTbDB2fpy4R08lEdPIAsO5R90wfgwWFKgixVg=; b=319i0hyYRMFJMJ6GJaL7VOSEN2O58eQtI3mftWox5tSdPHCVHqzULODoqPawTR4bQN OEzbtqwkpfaaGEXlsz6LpbzpxL1aefow8z+JrVc7DJIZ9v53OwljdJiC3DYHFLNnAQAV AOwJz79GHyDDdNzzSQ4Rd+OmdwmgPBeNkCvUMTSCLp8zHKAGAB4XcE3ig+fx/FrdHa/m Y85ZwhA9ixnN9f8bQxMDu1w8cRUul6umaYqnXqnSY7j1JcuCg8c/BOPtzgm34Xu+qirQ oCtyvF11u4+XtHzksOEwdzzEdUNUbMFDdOeDHuitFwNwCPu7WDgmbUUW4+c3u5JaxfHt +6Uw== X-Gm-Message-State: AOAM530fjxPzeWAnmdc2u4vv8l1TZJ8/NHgT+bJjt392/wy4a2YcECrN mIlycoM1t8PLyl9j0wyGjeYmiiXouz8yx/hAIumb84I/ X-Google-Smtp-Source: ABdhPJzj/DjXiovdbTXScFywwky2OHDTNK56rEmeAXjtsr8dUi2gTcgY/L1fBxcOK9ASBbyY1M+v78+QdaQuyq8fgOk= X-Received: by 2002:a50:9fad:0:b0:419:f22:46db with SMTP id c42-20020a509fad000000b004190f2246dbmr4721263edf.354.1648303658942; Sat, 26 Mar 2022 07:07:38 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Sat, 26 Mar 2022 19:37:26 +0530 Message-ID: Subject: Re: Skipping schema changes in publication To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000012dca605db1f9a3b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000012dca605db1f9a3b Content-Type: text/plain; charset="UTF-8" On Tue, Mar 22, 2022 at 12:38 PM vignesh C wrote: > > Hi, > > This feature adds an option to skip changes of all tables in specified > schema while creating publication. > This feature is helpful for use cases where the user wants to > subscribe to all the changes except for the changes present in a few > schemas. > Ex: > CREATE PUBLICATION pub1 FOR ALL TABLES SKIP ALL TABLES IN SCHEMA s1,s2; > OR > ALTER PUBLICATION pub1 ADD SKIP ALL TABLES IN SCHEMA s1,s2; > > A new column pnskip is added to table "pg_publication_namespace", to > maintain the schemas that the user wants to skip publishing through > the publication. Modified the output plugin (pgoutput) to skip > publishing the changes if the relation is part of skip schema > publication. > As a continuation to this, I will work on implementing skipping tables > from all tables in schema and skipping tables from all tables > publication. > > Attached patch has the implementation for this. The patch was not applying on top of HEAD because of the recent commits, attached patch is rebased on top of HEAD. Regards, Vignesh --00000000000012dca605db1f9a3b Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-Skip-publishing-the-tables-of-schema.patch" Content-Disposition: attachment; filename="v1-0001-Skip-publishing-the-tables-of-schema.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l17x4e300 RnJvbSAxNTI0MjU0NjI5YzcyMTQ5YWU5OWQxM2FhZTI4M2QzYWE2YTcwMjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAyNiBNYXIgMjAyMiAxOToxOTozMSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjFd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIG9mIHNjaGVtYS4KCkEgbmV3IG9wdGlvbiAiU0tJ UCBBTEwgVEFCTEVTIElOIFNDSEVNQSIgaW4gQ3JlYXRlL0FsdGVyIFB1YmxpY2F0aW9uIGFsbG93 cwpvbmUgb3IgbW9yZSBza2lwIHNjaGVtYXMgdG8gYmUgc3BlY2lmaWVkLCBwdWJsaXNoZXIgd2ls bCBza2lwIHNlbmRpbmcgdGhlIGRhdGEKb2YgdGhlIHRhYmxlcyBwcmVzZW50IGluIHRoZSBza2lw IHNjaGVtYSB0byB0aGUgc3Vic2NyaWJlci4KClRoZSBuZXcgc3ludGF4IGFsbG93cyBzcGVjaWZ5 aW5nIHNjaGVtYXMuIEZvciBleGFtcGxlOgpDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxM IFRBQkxFUyBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHMxLHMyOwpPUgpBTFRFUiBQVUJMSUNB VElPTiBwdWIxIEFERCBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHMxLHMyOwoKQSBuZXcgY29s dW1uIHBuc2tpcCBpcyBhZGRlZCB0byB0YWJsZSAicGdfcHVibGljYXRpb25fbmFtZXNwYWNlIiwg dG8gbWFpbnRhaW4KdGhlIHNjaGVtYXMgdGhhdCB0aGUgdXNlciB3YW50cyB0byBza2lwIHB1Ymxp c2hpbmcgdGhyb3VnaCB0aGUgcHVibGljYXRpb24uCk1vZGlmaWVkIHRoZSBvdXRwdXQgcGx1Z2lu IChwZ291dHB1dCkgdG8gc2tpcCBwdWJsaXNoaW5nIHRoZSBjaGFuZ2VzIGlmIHRoZQpyZWxhdGlv biBpcyBwYXJ0IG9mIHNraXAgc2NoZW1hIHB1YmxpY2F0aW9uLgoKVXBkYXRlcyBwZ19kdW1wIHRv IGlkZW50aWZ5IGFuZCBkdW1wIHNraXAgc2NoZW1hIHB1YmxpY2F0aW9ucy4gVXBkYXRlcyB0aGUg XGQKZmFtaWx5IG9mIGNvbW1hbmRzIHRvIGRpc3BsYXkgc2tpcCBzY2hlbWEgcHVibGljYXRpb25z IGFuZCBcZFJwKyB2YXJpYW50IHdpbGwKbm93IGRpc3BsYXkgYXNzb2NpYXRlZCBza2lwIHNjaGVt YXMgaWYgYW55LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAg ICAgICB8ICAgOSArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAg ICAgfCAgIDcgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgICAg ICB8ICAyOCArKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAg ICB8ICAyOCArKy0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAg IHwgIDcwICsrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAg ICAgICB8IDE4NiArKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMgICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMgICAgICAgICAgICAgICAgfCAgMTQgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgICAgICB8IDExOSArKysrKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgIDI1ICstLQogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDIxICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICAgICAgfCAgMzMgKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w X3NvcnQuYyAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCAgICAgICAgICAgICAgfCAgMzAgKysrCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YyAgICAgICAgICAgICAgICAgICB8ICAyNiArKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uaCAgICAgICAgICB8ICAyMCArLQogLi4uL2NhdGFsb2cvcGdfcHVibGljYXRpb25f bmFtZXNwYWNlLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5oICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dCAgICAgfCAgODEgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbCAgICAgICAgICB8ICA0MSArKystCiAuLi4vdC8wMzJfcmVwX2NoYW5nZXNfc2tpcF9z Y2hlbWEucGwgICAgICAgICAgfCAgOTYgKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEgKwogMjggZmlsZXMgY2hhbmdlZCwgNzQyIGlu c2VydGlvbnMoKyksIDE1NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzJfcmVwX2NoYW5nZXNfc2tpcF9zY2hlbWEucGwKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCmluZGV4IDU2MGUyMDViOTUuLjU5YjAxMjZjMTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02MzA0 LDYgKzYzMDQsMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBj b3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBBIG51bGwgdmFs dWUgaW5kaWNhdGVzIHRoYXQgYWxsIGNvbHVtbnMgYXJlIHB1Ymxpc2hlZC4KICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5wbnNraXA8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiB0aGUgc2NoZW1hIGlz IHNraXAgc2NoZW1hCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90 Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKaW5kZXggNTU1ZmJkNzQ5Yy4uZTJhNGI4OTIyNiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCkBAIC01OTksOSArNTk5LDEwIEBAIENPTlRFWFQ6ICBwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcg IklOU0VSCiAKICAgPHBhcmE+CiAgICBUbyBhZGQgdGFibGVzIHRvIGEgcHVibGljYXRpb24sIHRo ZSB1c2VyIG11c3QgaGF2ZSBvd25lcnNoaXAgcmlnaHRzIG9uIHRoZQotICAgdGFibGUuIFRvIGFk ZCBhbGwgdGFibGVzIGluIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9uLCB0aGUgdXNlciBtdXN0IGJl IGEKLSAgIHN1cGVydXNlci4gVG8gY3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMg YWxsIHRhYmxlcyBvciBhbGwgdGFibGVzIGluCi0gICBzY2hlbWEgYXV0b21hdGljYWxseSwgdGhl IHVzZXIgbXVzdCBiZSBhIHN1cGVydXNlci4KKyAgIHRhYmxlLiBUbyBhZGQgYWxsIHRhYmxlcyBp biBzY2hlbWEgb3Igc2tpcCBhbGwgdGFibGVzIGluIHNjaGVtYSB0byBhCisgICBwdWJsaWNhdGlv biwgdGhlIHVzZXIgbXVzdCBiZSBhIHN1cGVydXNlci4gVG8gY3JlYXRlIGEgcHVibGljYXRpb24g dGhhdAorICAgcHVibGlzaGVzIGFsbCB0YWJsZXMgb3IgYWxsIHRhYmxlcyBpbiBzY2hlbWEgYXV0 b21hdGljYWxseSwgdGhlIHVzZXIgbXVzdCBiZQorICAgYSBzdXBlcnVzZXIuCiAgIDwvcGFyYT4K IAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRp b24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCA0 MDM2NmExMGZlLi5jODU0NzIyYmRhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlv bi5zZ21sCkBAIC0zMiw3ICszMiw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKICAgICBU QUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdIFssIC4uLiBd CiAgICAgU0VRVUVOQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcXVlbmNlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQotICAgIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBD VVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCisgICAgW1NLSVBdIEFMTCBUQUJMRVMgSU4gU0NIRU1B IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJs ZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiAgICAgQUxMIFNFUVVFTkNFUyBJTiBTQ0hF TUEgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2Vh YmxlPiB8IENVUlJFTlRfU0NIRU1BIH0gWywgLi4uIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5v cHNpc2Rpdj4KQEAgLTczLDEyICs3MywxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICA8 cGFyYT4KICAgIFlvdSBtdXN0IG93biB0aGUgcHVibGljYXRpb24gdG8gdXNlIDxjb21tYW5kPkFM VEVSIFBVQkxJQ0FUSU9OPC9jb21tYW5kPi4KICAgIEFkZGluZyBhIHRhYmxlIHRvIGEgcHVibGlj YXRpb24gYWRkaXRpb25hbGx5IHJlcXVpcmVzIG93bmluZyB0aGF0IHRhYmxlLgotICAgVGhlIDxs aXRlcmFsPkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gYW5kCi0gICA8bGl0ZXJh bD5TRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gcmVx dWlyZXMgdGhlCi0gICBpbnZva2luZyB1c2VyIHRvIGJlIGEgc3VwZXJ1c2VyLiAgVG8gYWx0ZXIg dGhlIG93bmVyLCB5b3UgbXVzdCBhbHNvIGJlIGEKKyAgIFRoZSA8bGl0ZXJhbD5BREQgW1NLSVBd IEFMTCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBhbmQKKyAgIDxsaXRlcmFsPlNFVCBbU0tJ UF0gQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gcmVxdWly ZXMKKyAgIHRoZSBpbnZva2luZyB1c2VyIHRvIGJlIGEgc3VwZXJ1c2VyLiAgVG8gYWx0ZXIgdGhl IG93bmVyLCB5b3UgbXVzdCBhbHNvIGJlIGEKICAgIGRpcmVjdCBvciBpbmRpcmVjdCBtZW1iZXIg b2YgdGhlIG5ldyBvd25pbmcgcm9sZS4gVGhlIG5ldyBvd25lciBtdXN0IGhhdmUKICAgIDxsaXRl cmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBkYXRhYmFzZS4gIEFsc28sIHRo ZSBuZXcgb3duZXIKLSAgIG9mIGEgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IG9y IDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTIElOCisgICBvZiBhIDxsaXRlcmFsPkZPUiBBTEwgVEFC TEVTPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5GT1IgW1NLSVBdIEFMTCBUQUJMRVMgSU4KICAgIFND SEVNQTwvbGl0ZXJhbD4gcHVibGljYXRpb24gbXVzdCBiZSBhIHN1cGVydXNlci4gSG93ZXZlciwg YSBzdXBlcnVzZXIgY2FuCiAgICBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiBhIHB1YmxpY2F0aW9u IHJlZ2FyZGxlc3Mgb2YgdGhlc2UgcmVzdHJpY3Rpb25zLgogICA8L3BhcmE+CkBAIC05MCw2ICs5 MCwxNCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgYWRkaW5nL3NldHRpbmcgYSB0YWJs ZSB0byBhIHB1YmxpY2F0aW9uIHRoYXQgYWxyZWFkeSBoYXMgYSB0YWJsZSdzIHNjaGVtYSBhcwog ICAgcGFydCBvZiB0aGUgc3BlY2lmaWVkIHNjaGVtYSBpcyBub3Qgc3VwcG9ydGVkLgogICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUaGUgPGxpdGVyYWw+QUREIFNLSVAgQUxMIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+IGFuZAorICAgPGxpdGVyYWw+U0VUIFNLSVAgQUxMIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZpZWQgb25seSBmb3IKKyAgIDxsaXRlcmFsPkZP UiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJsaWNhdGlvbi4gSXQgaXMgbm90IHN1cHBvcnRlZCBm b3IKKyAgIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSA8L2xpdGVyYWw+IHB1Ymxp Y2F0aW9uIGFuZAorICAgPGxpdGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBwdWJsaWNhdGlvbi4K KyAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CkBAIC0yMjAsNiArMjI4LDE2 IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBBTEwgVEFCTEVTIElO IFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOwogQUxURVIgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9w dWJsaWNhdGlvbiBBREQgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBBTEwgVEFCTEVTIElOIFND SEVNQSBwcm9kdWN0aW9uOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgorCisgICA8cGFy YT4KKyAgIEFkZCBza2lwIHNjaGVtYXMgPHN0cnVjdG5hbWU+c2FsZXNfanVuZTwvc3RydWN0bmFt ZT4gYW5kCisgICA8c3RydWN0bmFtZT5zYWxlc19qdWx5PC9zdHJ1Y3RuYW1lPiB0byB0aGUgcHVi bGljYXRpb24KKyAgIDxzdHJ1Y3RuYW1lPm15cHVibGljYXRpb248L3N0cnVjdG5hbWU+OgorPHBy b2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBBREQgU0tJUCBB TEwgVEFCTEVTIElOIFNDSEVNQSBzYWxlc19qdW5lLCBzYWxlc19qdWx5OworPC9wcm9ncmFtbGlz dGluZz4KKyAgPC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IGQyNzM5OTY4ZDkuLmU4Mzg2NGQx NzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjgsNyAr MjgsNyBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5vYmplY3QgdHlwZTwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4K IAotICAgIFRBQkxFUworICAgIFRBQkxFUyBbU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSB7IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwg Q1VSUkVOVF9TQ0hFTUEgfV0KICAgICBTRVFVRU5DRVMKIAogPHBocmFzZT53aGVyZSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4g aXMgb25lIG9mOjwvcGhyYXNlPgpAQCAtMTQ2LDYgKzE0NiwyMyBAQCBDUkVBVEUgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48bGl0ZXJhbD5TS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTWFya3MgdGhlIHB1YmxpY2F0 aW9uIGFzIG9uZSB0aGF0IHNraXBzIHJlcGxpY2F0aW5nIGNoYW5nZXMgZm9yIGFsbAorICAgICAg dGFibGVzIGluIHRoZSBzcGVjaWZpZWQgbGlzdCBvZiBzY2hlbWFzLgorICAgICA8L3BhcmE+CisK KyAgICAgPHBhcmE+CisgICAgICA8bGl0ZXJhbD5TS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BPC9s aXRlcmFsPiBjYW4gYmUgc3BlY2lmaWVkIG9ubHkgZm9yCisgICAgICA8bGl0ZXJhbD5GT1IgQUxM IFRBQkxFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24uIEl0IGlzIG5vdCBzdXBwb3J0ZWQgZm9yCisg ICAgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgPC9saXRlcmFsPiBwdWJsaWNh dGlvbiBhbmQKKyAgICAgIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gcHVibGljYXRpb24u CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAg IDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVMgSU4gU0NI RU1BPC9saXRlcmFsPjwvdGVybT4KICAgICA8dGVybT48bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNF UyBJTiBTQ0hFTUE8L2xpdGVyYWw+PC90ZXJtPgpAQCAtMzU1LDYgKzM3MiwxNSBAQCBDUkVBVEUg UFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBGT1IgVEFCTEUgdXNlcnMsIGRlcGFy dG1lbnRzLCBBTEwgVEFCTAogICAgPHN0cnVjdG5hbWU+c2FsZXM8L3N0cnVjdG5hbWU+OgogPHBy b2dyYW1saXN0aW5nPgogQ1JFQVRFIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEZPUiBB TEwgVEFCTEVTIElOIFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOworPC9wcm9ncmFtbGlzdGluZz4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJs aXNoZXMgYWxsIGNoYW5nZXMgaW4gYWxsIHRoZSB0YWJsZXMgZXhjZXB0IGZvcgorICAgdGhlIGNo YW5nZXMgb2YgYWxsIHRoZSB0YWJsZXMgcHJlc2VudCBpbiB0aGUgc2NoZW1hCisgICA8c3RydWN0 bmFtZT5tYXJrZXRpbmc8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5zYWxlczwvc3RydWN0 bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlv biBGT1IgQUxMIFRBQkxFIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxl czsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5z Z21sCmluZGV4IGNhYWJiMDZjNTMuLjRiYTQxNDA5MzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwK QEAgLTE4NTYsOCArMTg1Niw5IEBAIHRlc3RkYj0mZ3Q7CiAgICAgICAgIElmIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT4gaXMKICAgICAgICAgc3Bl Y2lmaWVkLCBvbmx5IHRob3NlIHB1YmxpY2F0aW9ucyB3aG9zZSBuYW1lcyBtYXRjaCB0aGUgcGF0 dGVybiBhcmUKICAgICAgICAgbGlzdGVkLgotICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRlcmFs PiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgdGFibGVzIGFuZAotICAgICAg ICBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93biBhcyB3 ZWxsLgorICAgICAgICBJZiA8bGl0ZXJhbD4rPC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUg Y29tbWFuZCBuYW1lLCB0aGUgdGFibGVzLAorICAgICAgICBzY2hlbWFzIGFuZCB0aGUgc2tpcCBz Y2hlbWEgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRpb24gYXJlIHNob3duCisgICAgICAg IGFzIHdlbGwuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwv dmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGE1YTU0 ZTY3NmUuLjhhNmFmODNlZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAg LTMzOCw3ICszMzgsOCBAQCBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVz dWx0LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAgKiBhbmNlc3RvciBpcyBhdCB0 aGUgZW5kIG9mIHRoZSBsaXN0LgogICovCiBPaWQKLUdldFRvcE1vc3RBbmNlc3RvckluUHVibGlj YXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsKQor R2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3Rv cnMsCisJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwsIGJvb2wgcHViYWxsdGFibGVzKQogewog CUxpc3RDZWxsICAgKmxjOwogCU9pZAkJCXRvcG1vc3RfcmVsaWQgPSBJbnZhbGlkT2lkOwpAQCAt MzUyLDYgKzM1Myw3IEBAIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9p ZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsCiAJCU9pZAkJCWFuY2VzdG9y ID0gbGZpcnN0X29pZChsYyk7CiAJCUxpc3QJICAgKmFwdWJpZHMgPSBHZXRSZWxhdGlvblB1Ymxp Y2F0aW9ucyhhbmNlc3Rvcik7CiAJCUxpc3QJICAgKmFzY2hlbWFQdWJpZHMgPSBOSUw7CisJCUxp c3QgICAgICAgKmFza2lwc2NoZW1hUHViaWRzID0gTklMOwogCiAJCWxldmVsKys7CiAKQEAgLTM2 Niw4ICszNjgsMTEgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lk LCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAkJewogCQkJLyogd2Ugb25s eSBzZWFyY2ggZm9yIGFuY2VzdG9ycyBvZiB0YWJsZXMsIHNvIFBVQl9PQkpUWVBFX1RBQkxFICov CiAJCQlhc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25zKGdldF9yZWxfbmFtZXNw YWNlKGFuY2VzdG9yKSwKLQkJCQkJCQkJCQkJCSAgUFVCX09CSlRZUEVfVEFCTEUpOwotCQkJaWYg KGxpc3RfbWVtYmVyX29pZChhc2NoZW1hUHViaWRzLCBwdWJvaWQpKQorCQkJCQkJCQkJCQkJICBQ VUJfT0JKVFlQRV9UQUJMRSwgZmFsc2UpOworCQkJYXNraXBzY2hlbWFQdWJpZHMgPSBHZXRTY2hl bWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpLAorCQkJCQkJCQkJCQkJ CSAgUFVCX09CSlRZUEVfVEFCTEUsIHRydWUpOworCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhc2No ZW1hUHViaWRzLCBwdWJvaWQpIHx8CisJCQkJKHB1YmFsbHRhYmxlcyAmJiAhbGlzdF9tZW1iZXJf b2lkKGFza2lwc2NoZW1hUHViaWRzLCBwdWJvaWQpKSkKIAkJCXsKIAkJCQl0b3Btb3N0X3JlbGlk ID0gYW5jZXN0b3I7CiAKQEAgLTYzMSwxMyArNjM2LDE0IEBAIHB1Yl9jb2xsaXN0X3RvX2JpdG1h cHNldChCaXRtYXBzZXQgKmNvbHVtbnMsIERhdHVtIHB1YmNvbHMsIE1lbW9yeUNvbnRleHQgbWN4 dCkKICAqIEluc2VydCBuZXcgcHVibGljYXRpb24gLyBzY2hlbWEgbWFwcGluZy4KICAqLwogT2Jq ZWN0QWRkcmVzcwotcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFp ZCwgY2hhciBvYmplY3RUeXBlLCBib29sIGlmX25vdF9leGlzdHMpCitwdWJsaWNhdGlvbl9hZGRf c2NoZW1hKE9pZCBwdWJpZCwgUHVibGljYXRpb25TY2hJbmZvICpwdWJzY2gsIGNoYXIgb2JqZWN0 VHlwZSwgYm9vbCBpZl9ub3RfZXhpc3RzKQogewogCVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJ dHVwOwogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25fbmFtZXNwYWNlXTsKIAli b29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VdOwogCU9pZAkJCXBzc2No aWQ7CisJT2lkCQkJc2NoZW1haWQgPSBwdWJzY2gtPm9pZDsKIAlQdWJsaWNhdGlvbiAqcHViID0g R2V0UHVibGljYXRpb24ocHViaWQpOwogCUxpc3QJICAgKnNjaGVtYVJlbHMgPSBOSUw7CiAJT2Jq ZWN0QWRkcmVzcyBteXNlbGYsCkBAIC02ODMsNiArNjg5LDggQEAgcHVibGljYXRpb25fYWRkX3Nj aGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwgY2hhciBvYmplY3RUeXBlLCBib29sIGlmX25v dF9leGkKIAkJT2JqZWN0SWRHZXREYXR1bShzY2hlbWFpZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVi bGljYXRpb25fbmFtZXNwYWNlX3BudHlwZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9iamVjdFR5 cGUpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbnNraXAgLSAxXSA9 CisJCUJvb2xHZXREYXR1bShwdWJzY2gtPnNraXApOwogCiAJdHVwID0gaGVhcF9mb3JtX3R1cGxl KFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7CiAKQEAgLTg5MCwxMyArODk4 LDIzIEBAIEdldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcm9vdCBwYXJ0aXRp b25lZCB0YWJsZXMuCiAgKi8KIExpc3QgKgotR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlv bnMoYm9vbCBwdWJ2aWFyb290KQorR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoT2lk IHB1YmlkLCBib29sIHB1YnZpYXJvb3QpCiB7CiAJUmVsYXRpb24JY2xhc3NSZWw7CiAJU2Nhbktl eURhdGEga2V5WzFdOwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJ TGlzdAkgICAqcmVzdWx0ID0gTklMOworCUxpc3QJICAgKnNraXBzY2hlbWFpZGxpc3QgPSBOSUw7 CisJTGlzdAkgICAqcHVic2NoZW1hbGlzdCA9IEdldFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJpZCwg UFVCX09CSlRZUEVfVEFCTEUpOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlmb3JlYWNoKGNlbGws IHB1YnNjaGVtYWxpc3QpCisJeworCQlQdWJsaWNhdGlvblNjaEluZm8gKnB1YnNjaCA9IChQdWJs aWNhdGlvblNjaEluZm8gKikgbGZpcnN0KGNlbGwpOworCisJCXNraXBzY2hlbWFpZGxpc3QgPSBs YXBwZW5kX29pZChyZXN1bHQsIHB1YnNjaC0+b2lkKTsKKwl9CiAKIAljbGFzc1JlbCA9IHRhYmxl X29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCkBAIC05MTEsOSAr OTI5LDExIEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9v dCkKIAl7CiAJCUZvcm1fcGdfY2xhc3MgcmVsRm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJV Q1QodHVwbGUpOwogCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0tPm9pZDsKKwkJT2lkCQkJc2NoaWQg PSBnZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7CiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNz KHJlbGlkLCByZWxGb3JtKSAmJgotCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2 aWFyb290KSkKKwkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkgJiYK KwkJCSFsaXN0X21lbWJlcl9vaWQoc2tpcHNjaGVtYWlkbGlzdCwgc2NoaWQpKQogCQkJcmVzdWx0 ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJfQogCkBAIC05MzIsOSArOTUyLDExIEBA IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCkKIAkJewog CQkJRm9ybV9wZ19jbGFzcyByZWxGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBs ZSk7CiAJCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0tPm9pZDsKKwkJCU9pZAkJCXNjaGlkID0gZ2V0 X3JlbF9uYW1lc3BhY2UocmVsaWQpOwogCiAJCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVs aWQsIHJlbEZvcm0pICYmCi0JCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9uKQorCQkJCSFyZWxG b3JtLT5yZWxpc3BhcnRpdGlvbiAmJgorCQkJCSFsaXN0X21lbWJlcl9vaWQoc2tpcHNjaGVtYWlk bGlzdCwgc2NoaWQpKQogCQkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwog CQl9CiAKQEAgLTk4MywxMCArMTAwNSwxNCBAQCBHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1 YmlkLCBjaGFyIG9iamVjdFR5cGUpCiAJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lz dGFibGVfZ2V0bmV4dChzY2FuKSkpCiAJewogCQlGb3JtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFj ZSBwdWJzY2g7CisJCVB1YmxpY2F0aW9uU2NoSW5mbyAqc2NoaW5mbyA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uU2NoSW5mbyk7CisKIAogCQlwdWJzY2ggPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1l c3BhY2UpIEdFVFNUUlVDVCh0dXApOworCQlzY2hpbmZvLT5vaWQgPSBwdWJzY2gtPnBubnNwaWQ7 CisJCXNjaGluZm8tPnNraXAgPSBwdWJzY2gtPnBuc2tpcDsKIAotCQlyZXN1bHQgPSBsYXBwZW5k X29pZChyZXN1bHQsIHB1YnNjaC0+cG5uc3BpZCk7CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0 LCBzY2hpbmZvKTsKIAl9CiAKIAlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOwpAQCAtMTAwNSw3ICsx MDMxLDcgQEAgR2V0UHVibGljYXRpb25TY2hlbWFzKE9pZCBwdWJpZCwgY2hhciBvYmplY3RUeXBl KQogICogV2hpY2ggaXMgd2h5IHdlIGhhbmRsZSB0aGUgUFVCX09CSlRZUEVfVU5TVVBQT1JURUQg b2JqZWN0IHR5cGUgdG9vLgogICovCiBMaXN0ICoKLUdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQg c2NoZW1haWQsIGNoYXIgb2JqZWN0VHlwZSkKK0dldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2No ZW1haWQsIGNoYXIgb2JqZWN0VHlwZSwgYm9vbCBza2lwcHViKQogewogCUxpc3QJICAgKnJlc3Vs dCA9IE5JTDsKIAlDYXRDTGlzdCAgICpwdWJzY2hsaXN0OwpAQCAtMTAzMCw3ICsxMDU2LDggQEAg R2V0U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFpZCwgY2hhciBvYmplY3RUeXBlKQogCQlp ZiAocG50eXBlICE9IG9iamVjdFR5cGUpCiAJCQljb250aW51ZTsKIAotCQlyZXN1bHQgPSBsYXBw ZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKKwkJaWYgKHNraXBwdWIgPT0gKChGb3JtX3BnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZSkgR0VUU1RSVUNUKHR1cCkpLT5wbnNraXApCisJCQlyZXN1bHQgPSBs YXBwZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0KHB1 YnNjaGxpc3QpOwpAQCAtMTExNiw3ICsxMTQzLDcgQEAgR2V0U2NoZW1hUHVibGljYXRpb25SZWxh dGlvbnMoT2lkIHNjaGVtYWlkLCBjaGFyIG9iamVjdFR5cGUsCiAgKi8KIExpc3QgKgogR2V0QWxs U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUsCi0J CQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCisJCQkJCQkJCSBQdWJsaWNh dGlvblBhcnRPcHQgcHViX3BhcnRvcHQsIGJvb2wgYnNraXApCiB7CiAJTGlzdAkgICAqcmVzdWx0 ID0gTklMOwogCUxpc3QJICAgKnB1YnNjaGVtYWxpc3QgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMo cHViaWQsIG9iamVjdFR5cGUpOwpAQCAtMTEyNiwxMiArMTE1MywxNiBAQCBHZXRBbGxTY2hlbWFQ dWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgb2JqZWN0VHlwZSwKIAogCWZvcmVh Y2goY2VsbCwgcHVic2NoZW1hbGlzdCkKIAl7Ci0JCU9pZAkJCXNjaGVtYWlkID0gbGZpcnN0X29p ZChjZWxsKTsKKwkJUHVibGljYXRpb25TY2hJbmZvICpwdWJzY2ggPSAoUHVibGljYXRpb25TY2hJ bmZvICopIGxmaXJzdChjZWxsKTsKIAkJTGlzdAkgICAqc2NoZW1hUmVscyA9IE5JTDsKIAotCQlz Y2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoc2NoZW1haWQsIG9iamVj dFR5cGUsCi0JCQkJCQkJCQkJCQkgICBwdWJfcGFydG9wdCk7Ci0JCXJlc3VsdCA9IGxpc3RfY29u Y2F0KHJlc3VsdCwgc2NoZW1hUmVscyk7CisJCS8qIFNraXAgdGhlIHNraXAgc2NoZW1hcyBpZiBi c2tpcCBpcyB0cnVlICovCisJCWlmIChic2tpcCAmJiAhcHVic2NoLT5za2lwKQorCQl7CisJCQlz Y2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHVic2NoLT5vaWQsIG9i amVjdFR5cGUsCisJCQkJCQkJCQkJCQkJICAgcHViX3BhcnRvcHQpOworCQkJcmVzdWx0ID0gbGlz dF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsKKwkJfQogCX0KIAogCXJldHVybiByZXN1bHQ7 CkBAIC0xMzAzLDcgKzEzMzQsOCBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCSAqLwogCQlpZiAocHVibGljYXRpb24tPmFsbHRhYmxlcykKIAkJewotCQkJ dGFibGVzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRpb24tPnB1 YnZpYXJvb3QpOworCQkJdGFibGVzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMo cHVibGljYXRpb24tPm9pZCwKKwkJCQkJCQkJCQkJCQkgIHB1YmxpY2F0aW9uLT5wdWJ2aWFyb290 KTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTEzMTksNyArMTM1MSw4IEBAIHBnX2dldF9wdWJsaWNh dGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCQkJCQkJCQkJCVBVQl9PQkpUWVBF X1RBQkxFLAogCQkJCQkJCQkJCQkJCQkJcHVibGljYXRpb24tPnB1YnZpYXJvb3QgPwogCQkJCQkJ CQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UIDoKLQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FU SU9OX1BBUlRfTEVBRik7CisJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0xFQUYsCisJ CQkJCQkJCQkJCQkJCQl0cnVlKTsKIAkJCXRhYmxlcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQo cmVsaWRzLCBzY2hlbWFyZWxpZHMpOwogCiAJCQkvKgpAQCAtMTM5OCw3ICsxNDMxLDggQEAgcGdf Z2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkJ CQkJUFVCX09CSlRZUEVfU0VRVUVOQ0UsCiAJCQkJCQkJCQkJCQkJCQlwdWJsaWNhdGlvbi0+cHVi dmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgotCQkJCQkJ CQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FU SU9OX1BBUlRfTEVBRiwKKwkJCQkJCQkJCQkJCQkJCXRydWUpOwogCQkJc2VxdWVuY2VzID0gbGlz dF9jb25jYXRfdW5pcXVlX29pZChyZWxpZHMsIHNjaGVtYXJlbGlkcyk7CiAJCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA4NGUzN2RmNzgzLi5jYmM4MDViYmRk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMTg1LDggKzE4NSw4 IEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFy c2VTdGF0ZSAqcHN0YXRlLAogCiAJZm9yZWFjaChjZWxsLCBwdWJvYmpzcGVjX2xpc3QpCiAJewot CQlPaWQJCQlzY2hlbWFpZDsKIAkJTGlzdAkgICAqc2VhcmNoX3BhdGg7CisJCVB1YmxpY2F0aW9u U2NoSW5mbyAqcHVic2NoID0gbWFrZU5vZGUoUHVibGljYXRpb25TY2hJbmZvKTsKIAogCQlwdWJv YmogPSAoUHVibGljYXRpb25PYmpTcGVjICopIGxmaXJzdChjZWxsKTsKIApAQCAtMTk5LDE2ICsx OTksMTggQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0 LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJKnNlcXVlbmNlcyA9IGxhcHBlbmQoKnNlcXVlbmNl cywgcHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JK X1RBQkxFU19JTl9TQ0hFTUE6Ci0JCQkJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJv YmotPm5hbWUsIGZhbHNlKTsKKwkJCQlwdWJzY2gtPm9pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHB1 Ym9iai0+bmFtZSwgZmFsc2UpOworCQkJCXB1YnNjaC0+c2tpcCA9IHB1Ym9iai0+c2tpcDsKIAog CQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2No MSIgKi8KLQkJCQkqdGFibGVzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCp0YWJs ZXNfc2NoZW1hcywgc2NoZW1haWQpOworCQkJCSp0YWJsZXNfc2NoZW1hcyA9IGxpc3RfYXBwZW5k X3VuaXF1ZSgqdGFibGVzX3NjaGVtYXMsIHB1YnNjaCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBV QkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9TQ0hFTUE6Ci0JCQkJc2NoZW1haWQgPSBnZXRfbmFt ZXNwYWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsKKwkJCQlwdWJzY2gtPm9pZCA9IGdldF9u YW1lc3BhY2Vfb2lkKHB1Ym9iai0+bmFtZSwgZmFsc2UpOworCQkJCXB1YnNjaC0+c2tpcCA9IHB1 Ym9iai0+c2tpcDsKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNp ZmllcyAic2NoMSwgc2NoMSIgKi8KLQkJCQkqc2VxdWVuY2VzX3NjaGVtYXMgPSBsaXN0X2FwcGVu ZF91bmlxdWVfb2lkKCpzZXF1ZW5jZXNfc2NoZW1hcywgc2NoZW1haWQpOworCQkJCSpzZXF1ZW5j ZXNfc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZSgqc2VxdWVuY2VzX3NjaGVtYXMsIHB1YnNj aCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NI RU1BOgogCQkJCXNlYXJjaF9wYXRoID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOwpAQCAtMjE3 LDExICsyMTksMTIgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3Bl Y19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9TQ0hFTUEpLAogCQkJCQkJCWVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVk IGZvciBDVVJSRU5UX1NDSEVNQSIpKTsKIAotCQkJCXNjaGVtYWlkID0gbGluaXRpYWxfb2lkKHNl YXJjaF9wYXRoKTsKKwkJCQlwdWJzY2gtPm9pZCA9IGxpbml0aWFsX29pZChzZWFyY2hfcGF0aCk7 CiAJCQkJbGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKKwkJCQlwdWJzY2gtPnNraXAgPSBwdWJvYmot PnNraXA7CiAKIAkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMg InNjaDEsIHNjaDEiICovCi0JCQkJKnRhYmxlc19zY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVl X29pZCgqdGFibGVzX3NjaGVtYXMsIHNjaGVtYWlkKTsKKwkJCQkqdGFibGVzX3NjaGVtYXMgPSBs aXN0X2FwcGVuZF91bmlxdWUoKnRhYmxlc19zY2hlbWFzLCBwdWJzY2gpOwogCQkJCWJyZWFrOwog CQkJY2FzZSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fQ1VSX1NDSEVNQToKIAkJCQlzZWFy Y2hfcGF0aCA9IGZldGNoX3NlYXJjaF9wYXRoKGZhbHNlKTsKQEAgLTIzMCwxMSArMjMzLDEyIEBA IE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwK IAkJCQkJCQllcnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgQ1VSUkVOVF9T Q0hFTUEiKSk7CiAKLQkJCQlzY2hlbWFpZCA9IGxpbml0aWFsX29pZChzZWFyY2hfcGF0aCk7CisJ CQkJcHVic2NoLT5vaWQgPSBsaW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOwogCQkJCWxpc3RfZnJl ZShzZWFyY2hfcGF0aCk7CisJCQkJcHVic2NoLT5za2lwID0gcHVib2JqLT5za2lwOwogCiAJCQkJ LyogRmlsdGVyIG91dCBkdXBsaWNhdGVzIGlmIHVzZXIgc3BlY2lmaWVzICJzY2gxLCBzY2gxIiAq LwotCQkJCSpzZXF1ZW5jZXNfc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNlcXVl bmNlc19zY2hlbWFzLCBzY2hlbWFpZCk7CisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0gbGlzdF9h cHBlbmRfdW5pcXVlKCpzZXF1ZW5jZXNfc2NoZW1hcywgcHVic2NoKTsKIAkJCQlicmVhazsKIAkJ CWRlZmF1bHQ6CiAJCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwpAQCAtMjYwLDQwICsyNjQsNDUg QEAgQ2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihMaXN0ICpyZWxzLCBMaXN0 ICpzY2hlbWFpZGxpc3QsCiAJCVJlbGF0aW9uCXJlbCA9IHB1Yl9yZWwtPnJlbGF0aW9uOwogCQlP aWQJCQlyZWxTY2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCk7CiAKLQkJaWYgKGxp c3RfbWVtYmVyX29pZChzY2hlbWFpZGxpc3QsIHJlbFNjaGVtYUlkKSkKKwkJZm9yZWFjaChsYywg c2NoZW1haWRsaXN0KQogCQl7Ci0JCQlpZiAoY2hlY2tvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JK X1RBQkxFU19JTl9TQ0hFTUEpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJCQllcnJtc2coImNhbm5vdCBhZGQg c2NoZW1hIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQkJICAgZ2V0X25hbWVzcGFjZV9u YW1lKHJlbFNjaGVtYUlkKSksCi0JCQkJCQllcnJkZXRhaWwoIlRhYmxlIFwiJXNcIiBpbiBzY2hl bWEgXCIlc1wiIGlzIGFscmVhZHkgcGFydCBvZiB0aGUgcHVibGljYXRpb24sIGFkZGluZyB0aGUg c2FtZSBzY2hlbWEgaXMgbm90IHN1cHBvcnRlZC4iLAotCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksCi0JCQkJCQkJCSAgZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlk KSkpOwotCQkJZWxzZSBpZiAoY2hlY2tvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNF U19JTl9TQ0hFTUEpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJCQllcnJtc2coImNhbm5vdCBhZGQgc2NoZW1h IFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQkJICAgZ2V0X25hbWVzcGFjZV9uYW1lKHJl bFNjaGVtYUlkKSksCi0JCQkJCQllcnJkZXRhaWwoIlNlcXVlbmNlIFwiJXNcIiBpbiBzY2hlbWEg XCIlc1wiIGlzIGFscmVhZHkgcGFydCBvZiB0aGUgcHVibGljYXRpb24sIGFkZGluZyB0aGUgc2Ft ZSBzY2hlbWEgaXMgbm90IHN1cHBvcnRlZC4iLAotCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCksCi0JCQkJCQkJCSAgZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSkp OwotCQkJZWxzZSBpZiAoY2hlY2tvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFKQotCQkJ CWVyZXBvcnQoRVJST1IsCi0JCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAotCQkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXMuJXNcIiB0byBw dWJsaWNhdGlvbiIsCi0JCQkJCQkJICAgZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSwK LQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKLQkJCQkJCWVycmRldGFp bCgiVGFibGUncyBzY2hlbWEgXCIlc1wiIGlzIGFscmVhZHkgcGFydCBvZiB0aGUgcHVibGljYXRp b24gb3IgcGFydCBvZiB0aGUgc3BlY2lmaWVkIHNjaGVtYSBsaXN0LiIsCi0JCQkJCQkJCSAgZ2V0 X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSkpOwotCQkJZWxzZSBpZiAoY2hlY2tvYmp0eXBl ID09IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQkJZXJybXNnKCJj YW5ub3QgYWRkIHJlbGF0aW9uIFwiJXMuJXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQkJICAg Z2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSwKLQkJCQkJCQkgICBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSwKLQkJCQkJCWVycmRldGFpbCgiU2VxdWVuY2UncyBzY2hlbWEgXCIl c1wiIGlzIGFscmVhZHkgcGFydCBvZiB0aGUgcHVibGljYXRpb24gb3IgcGFydCBvZiB0aGUgc3Bl Y2lmaWVkIHNjaGVtYSBsaXN0LiIsCi0JCQkJCQkJCSAgZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNj aGVtYUlkKSkpOworCQkJUHVibGljYXRpb25TY2hJbmZvICpwdWJfc2NoID0gKFB1YmxpY2F0aW9u U2NoSW5mbyAqKSBsZmlyc3QobGMpOworCisJCQlpZiAocHViX3NjaC0+b2lkID09IHJlbFNjaGVt YUlkKQorCQkJeworCQkJCWlmIChjaGVja29ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVT X0lOX1NDSEVNQSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCWVycm1zZygiY2Fubm90IGFkZCBzY2hl bWEgXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKKwkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKHJl bFNjaGVtYUlkKSksCisJCQkJCQkJZXJyZGV0YWlsKCJUYWJsZSBcIiVzXCIgaW4gc2NoZW1hIFwi JXNcIiBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uLCBhZGRpbmcgdGhlIHNhbWUg c2NoZW1hIGlzIG5vdCBzdXBwb3J0ZWQuIiwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCksCisJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUocmVsU2NoZW1hSWQpKSk7CisJ CQkJZWxzZSBpZiAoY2hlY2tvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9T Q0hFTUEpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQllcnJtc2coImNhbm5vdCBhZGQgc2NoZW1hIFwi JXNcIiB0byBwdWJsaWNhdGlvbiIsCisJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShyZWxTY2hl bWFJZCkpLAorCQkJCQkJCWVycmRldGFpbCgiU2VxdWVuY2UgXCIlc1wiIGluIHNjaGVtYSBcIiVz XCIgaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiwgYWRkaW5nIHRoZSBzYW1lIHNj aGVtYSBpcyBub3Qgc3VwcG9ydGVkLiIsCisJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpLAorCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSkpOworCQkJ CWVsc2UgaWYgKGNoZWNrb2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRSkKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCQkJCWVycm1zZygiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVzLiVzXCIgdG8gcHVi bGljYXRpb24iLAorCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUocmVsU2NoZW1hSWQpLAorCQkJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkJCQllcnJkZXRhaWwoIlRh YmxlJ3Mgc2NoZW1hIFwiJXNcIiBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9y IHBhcnQgb2YgdGhlIHNwZWNpZmllZCBzY2hlbWEgbGlzdC4iLAorCQkJCQkJCQkJZ2V0X25hbWVz cGFjZV9uYW1lKHJlbFNjaGVtYUlkKSkpOworCQkJCWVsc2UgaWYgKGNoZWNrb2JqdHlwZSA9PSBQ VUJMSUNBVElPTk9CSl9TRVFVRU5DRSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCWVycm1zZygiY2Fu bm90IGFkZCByZWxhdGlvbiBcIiVzLiVzXCIgdG8gcHVibGljYXRpb24iLAorCQkJCQkJCQlnZXRf bmFtZXNwYWNlX25hbWUocmVsU2NoZW1hSWQpLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSwKKwkJCQkJCQllcnJkZXRhaWwoIlNlcXVlbmNlJ3Mgc2NoZW1hIFwiJXNcIiBp cyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9yIHBhcnQgb2YgdGhlIHNwZWNpZmll ZCBzY2hlbWEgbGlzdC4iLAorCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlk KSkpOworCQkJfQogCQl9CiAJfQogfQpAQCAtMzQzLDcgKzM1Miw3IEBAIGNvbnRhaW5faW52YWxp ZF9yZmNvbHVtbl93YWxrZXIoTm9kZSAqbm9kZSwgcmZfY29udGV4dCAqY29udGV4dCkKICAqLwog Ym9vbAogcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24g cmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKLQkJCQkJCSBib29sIHB1YnZpYXJvb3QpCisJCQkJ CQkgYm9vbCBwdWJ2aWFyb290LCBib29sIHB1YmFsbHRhYmxlcykKIHsKIAlIZWFwVHVwbGUJcmZ0 dXBsZTsKIAlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwpAQCAtMzcw LDcgKzM3OSw4IEBAIHB1Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAJaWYgKHB1YnZpYXJvb3QgJiYgcmVs YXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJewogCQlwdWJsaXNoX2FzX3JlbGlkCi0J CQk9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVM TCk7CisJCQk9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9y cywgTlVMTCwKKwkJCQkJCQkJCQkJICBwdWJhbGx0YWJsZXMpOwogCiAJCWlmICghT2lkSXNWYWxp ZChwdWJsaXNoX2FzX3JlbGlkKSkKIAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKQEAgLTQx OSw3ICs0MjksNyBAQCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBS ZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogICovCiBib29sCiBwdWJfY29sbGlz dF9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBM aXN0ICphbmNlc3RvcnMsCi0JCQkJCQkgYm9vbCBwdWJ2aWFyb290KQorCQkJCQkJIGJvb2wgcHVi dmlhcm9vdCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJSGVhcFR1cGxlCXR1cGxlOwogCU9pZAkJ CXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CkBAIC00MzgsNyArNDQ4LDcgQEAg cHViX2NvbGxpc3RfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiBy ZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3IKIAkgKi8KIAlpZiAocHVidmlhcm9vdCAmJiByZWxhdGlv bi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7Ci0JCXB1Ymxpc2hfYXNfcmVsaWQgPSBHZXRU b3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwpOworCQlw dWJsaXNoX2FzX3JlbGlkID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwg YW5jZXN0b3JzLCBOVUxMLCBwdWJhbGx0YWJsZXMpOwogCiAJCWlmICghT2lkSXNWYWxpZChwdWJs aXNoX2FzX3JlbGlkKSkKIAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKQEAgLTkwNyw5ICs5 MTcsMTQgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJLyogTWFrZSB0aGUgY2hhbmdlcyB2aXNpYmxlLiAqLwogCUNv bW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKKwlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhz dG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZ0YWJsZXMsICZzZXF1ZW5jZXMsCisJCQkJCQkJICAg JnRhYmxlc19zY2hlbWFpZGxpc3QsICZzZXF1ZW5jZXNfc2NoZW1haWRsaXN0KTsKKwogCS8qIEFz c29jaWF0ZSBvYmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLwogCWlmIChmb3JfYWxsX3Rh YmxlcyB8fCBmb3JfYWxsX3NlcXVlbmNlcykKIAl7CisJCUFzc2VydCghdGFibGVzKTsKKwogCQkv KiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0 LiAqLwogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwogCX0KQEAgLTkyMCwxMiArOTM1 LDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNh dGlvblN0bXQgKnN0bXQpCiAJICovCiAJaWYgKCFmb3JfYWxsX3RhYmxlcyB8fCAhZm9yX2FsbF9z ZXF1ZW5jZXMpCiAJewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmpl Y3RzLCBwc3RhdGUsCi0JCQkJCQkJCSAgICZ0YWJsZXMsICZzZXF1ZW5jZXMsCi0JCQkJCQkJCSAg ICZ0YWJsZXNfc2NoZW1haWRsaXN0LAotCQkJCQkJCQkgICAmc2VxdWVuY2VzX3NjaGVtYWlkbGlz dCk7Ci0KLQkJLyogRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAq LworCQkvKiBGT1IgW1NLSVBdIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNl ciAqLwogCQlpZiAobGlzdF9sZW5ndGgodGFibGVzX3NjaGVtYWlkbGlzdCkgPiAwICYmICFzdXBl cnVzZXIoKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJ Q0lFTlRfUFJJVklMRUdFKSwKQEAgLTk2OCwxOSArOTc4LDYgQEAgQ3JlYXRlUHVibGljYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQlDbG9z ZVJlbGF0aW9uTGlzdChyZWxzKTsKIAkJfQogCi0JCS8qIHRhYmxlcyBhZGRlZCB0aHJvdWdoIGEg c2NoZW1hICovCi0JCWlmIChsaXN0X2xlbmd0aCh0YWJsZXNfc2NoZW1haWRsaXN0KSA+IDApCi0J CXsKLQkJCS8qCi0JCQkgKiBTY2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlv biBpcyBjcmVhdGVkIHRvIHByZXZlbnQKLQkJCSAqIGNvbmN1cnJlbnQgc2NoZW1hIGRlbGV0aW9u LgotCQkJICovCi0JCQlMb2NrU2NoZW1hTGlzdCh0YWJsZXNfc2NoZW1haWRsaXN0KTsKLQkJCVB1 YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsCi0JCQkJCQkJCSAgdGFibGVzX3NjaGVtYWlkbGlz dCwgUFVCX09CSlRZUEVfVEFCTEUsCi0JCQkJCQkJCSAgdHJ1ZSwgTlVMTCk7Ci0JCX0KLQogCQkv KiBzZXF1ZW5jZXMgYWRkZWQgdGhyb3VnaCBhIHNjaGVtYSAqLwogCQlpZiAobGlzdF9sZW5ndGgo c2VxdWVuY2VzX3NjaGVtYWlkbGlzdCkgPiAwKQogCQl7CkBAIC05OTUsNiArOTkyLDE5IEBAIENy ZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10 ICpzdG10KQogCQl9CiAJfQogCisJLyogdGFibGVzIGFkZGVkIHRocm91Z2ggYSBzY2hlbWEgKi8K KwlpZiAobGlzdF9sZW5ndGgodGFibGVzX3NjaGVtYWlkbGlzdCkgPiAwKQorCXsKKwkJLyoKKwkJ ICogU2NoZW1hIGxvY2sgaXMgaGVsZCB1bnRpbCB0aGUgcHVibGljYXRpb24gaXMgY3JlYXRlZCB0 byBwcmV2ZW50CisJCSAqIGNvbmN1cnJlbnQgc2NoZW1hIGRlbGV0aW9uLgorCQkgKi8KKwkJTG9j a1NjaGVtYUxpc3QodGFibGVzX3NjaGVtYWlkbGlzdCk7CisJCVB1YmxpY2F0aW9uQWRkU2NoZW1h cyhwdWJvaWQsCisJCQkJCQkJCXRhYmxlc19zY2hlbWFpZGxpc3QsIFBVQl9PQkpUWVBFX1RBQkxF LAorCQkJCQkJCQl0cnVlLCBOVUxMKTsKKwl9CisKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxh dGlvbklkLCBwdWJvaWQsIDApOwpAQCAtMTE5MCw3ICsxMjAwLDggQEAgQWx0ZXJQdWJsaWNhdGlv bk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwK IAkJLyogdGFibGVzICovCiAJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKIAkJCQkJCQkJCQkJCQkJUFVCX09CSlRZUEVfVEFCTEUs Ci0JCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJCQkJCQkJCQkJCQkJUFVC TElDQVRJT05fUEFSVF9BTEwsCisJCQkJCQkJCQkJCQkJCWZhbHNlKTsKIAkJcmVsaWRzID0gbGlz dF9jb25jYXRfdW5pcXVlX29pZChyZWxpZHMsIHNjaGVtYXJlbGlkcyk7CiAKIAkJLyogc2VxdWVu Y2VzICovCkBAIC0xMjAxLDcgKzEyMTIsOCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCiAJCXNjaGVtYXJl bGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKIAkJ CQkJCQkJCQkJCQkJUFVCX09CSlRZUEVfU0VRVUVOQ0UsCi0JCQkJCQkJCQkJCQkJCVBVQkxJQ0FU SU9OX1BBUlRfQUxMKTsKKwkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9BTEwsCisJCQkJ CQkJCQkJCQkJCWZhbHNlKTsKIAkJcmVsaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChyZWxp ZHMsIHNjaGVtYXJlbGlkcyk7CiAKIAkJSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhyZWxpZHMp OwpAQCAtMTI2NSw5ICsxMjc3LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJICogQ2hlY2sgaWYgdGhlIHJlbGF0 aW9uIGlzIG1lbWJlciBvZiB0aGUgZXhpc3Rpbmcgc2NoZW1hIGluIHRoZQogCQkgKiBwdWJsaWNh dGlvbiBvciBtZW1iZXIgb2YgdGhlIHNjaGVtYSBsaXN0IHNwZWNpZmllZC4KIAkJICovCi0JCXNj aGVtYXMgPSBsaXN0X2NvbmNhdF9jb3B5KHNjaGVtYWlkbGlzdCwKLQkJCQkJCQkJICAgR2V0UHVi bGljYXRpb25TY2hlbWFzKHB1YmlkLAotCQkJCQkJCQkJCQkJCQkgUFVCX09CSlRZUEVfVEFCTEUp KTsKKwkJc2NoZW1hcyA9IGxpc3RfY29uY2F0KHNjaGVtYWlkbGlzdCwKKwkJCQkJCQkgIEdldFB1 YmxpY2F0aW9uU2NoZW1hcyhwdWJpZCwgUFVCX09CSlRZUEVfVEFCTEUpKTsKIAkJQ2hlY2tPYmpT Y2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihyZWxzLCBzY2hlbWFzLAogCQkJCQkJCQkJCQkg IFBVQkxJQ0FUSU9OT0JKX1RBQkxFKTsKIApAQCAtMTQ2Miw3ICsxNDczLDcgQEAgQWx0ZXJQdWJs aWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxpc3QJICAgKmRl bHNjaGVtYXMgPSBOSUw7CiAKIAkJLyogSWRlbnRpZnkgd2hpY2ggc2NoZW1hcyBzaG91bGQgYmUg ZHJvcHBlZCAqLwotCQlkZWxzY2hlbWFzID0gbGlzdF9kaWZmZXJlbmNlX29pZChvbGRzY2hlbWFp ZHMsIHNjaGVtYWlkbGlzdCk7CisJCWRlbHNjaGVtYXMgPSBsaXN0X2RpZmZlcmVuY2Uob2xkc2No ZW1haWRzLCBzY2hlbWFpZGxpc3QpOwogCiAJCS8qCiAJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQg dW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGFsdGVyZWQgdG8gcHJldmVudApAQCAtMTQ5MSw2ICsx NTAyLDIwIEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkJICBMaXN0ICpzZXF1ZW5jZXMsIExpc3QgKnNlcXVlbmNl c19zY2hlbWFpZGxpc3QpCiB7CiAJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0gKEZvcm1f cGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCUxpc3RDZWxsICAgKmxjOworCisJYm9v bAkJbm9uc2tpcHNjaGVtYSA9IGZhbHNlOworCWJvb2wJCXNraXBzY2hlbWEgPSBmYWxzZTsKKwor CWZvcmVhY2gobGMsIHRhYmxlc19zY2hlbWFpZGxpc3QpCisJeworCQlQdWJsaWNhdGlvblNjaElu Zm8gKnB1Yl9zY2ggPSAoUHVibGljYXRpb25TY2hJbmZvICopIGxmaXJzdChsYyk7CisKKwkJaWYg KCFwdWJfc2NoLT5za2lwKQorCQkJbm9uc2tpcHNjaGVtYSA9IHRydWU7CisJCWVsc2UKKwkJCXNr aXBzY2hlbWEgPSB0cnVlOworCX0KIAogCWlmICgoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVj dHMgfHwgc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpICYmCiAJCSh0YWJsZXNfc2NoZW1h aWRsaXN0IHx8IHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpICYmICFzdXBlcnVzZXIoKSkKQEAgLTE1 MDIsMTMgKzE1MjcsMjAgQEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCSAqIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2Vk IHRvIG1hbmlwdWxhdGUgdGhlIHB1YmxpY2F0aW9uIHRhYmxlcyBpbgogCSAqIHNjaGVtYQogCSAq LwotCWlmICh0YWJsZXNfc2NoZW1haWRsaXN0ICYmIHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKKwlp ZiAobm9uc2tpcHNjaGVtYSAmJiBwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCiAJCQkJIGVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGlzIGRlZmluZWQgYXMgRk9SIEFM TCBUQUJMRVMiLAogCQkJCQkJTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCiAJCQkJIGVycmRl dGFpbCgiVGFibGVzIGZyb20gc2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9t LCBvciBzZXQgb24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLiIpKSk7CiAKKwlpZiAoc2tp cHNjaGVtYSAmJiAhcHViZm9ybS0+cHViYWxsdGFibGVzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ CSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRB QkxFUyIsCisJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKKwkJCQkgZXJyZGV0YWls KCJTa2lwIHRhYmxlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJv bSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4iKSkpOworCiAJLyoKIAkg KiBDaGVjayB0aGF0IHVzZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVsYXRlIHRoZSBwdWJsaWNhdGlv biBzZXF1ZW5jZXMgaW4KIAkgKiBzY2hlbWEKQEAgLTIwNTQsNyArMjA4Niw4IEBAIExvY2tTY2hl bWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpCiAKIAlmb3JlYWNoKGxjLCBzY2hlbWFsaXN0KQogCXsK LQkJT2lkCQkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJUHVibGljYXRpb25TY2hJbmZv ICpwdWJzY2ggPSAoUHVibGljYXRpb25TY2hJbmZvICopIGxmaXJzdChsYyk7CisJCU9pZAkJCXNj aGVtYWlkID0gcHVic2NoLT5vaWQ7CiAKIAkJLyogQWxsb3cgcXVlcnkgY2FuY2VsIGluIGNhc2Ug dGhpcyB0YWtlcyBhIGxvbmcgdGltZSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpAQCAt MjE2NCwxMCArMjE5NywxMCBAQCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0 ICpzY2hlbWFzLCBjaGFyIG9iamVjdFR5cGUsCiAKIAlmb3JlYWNoKGxjLCBzY2hlbWFzKQogCXsK LQkJT2lkCQkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJUHVibGljYXRpb25TY2hJbmZv ICpwdWJzY2ggPSAoUHVibGljYXRpb25TY2hJbmZvICopIGxmaXJzdChsYyk7CiAJCU9iamVjdEFk ZHJlc3Mgb2JqOwogCi0JCW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEocHViaWQsIHNjaGVt YWlkLCBvYmplY3RUeXBlLCBpZl9ub3RfZXhpc3RzKTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRk X3NjaGVtYShwdWJpZCwgcHVic2NoLCBvYmplY3RUeXBlLCBpZl9ub3RfZXhpc3RzKTsKIAkJaWYg KHN0bXQpCiAJCXsKIAkJCUV2ZW50VHJpZ2dlckNvbGxlY3RTaW1wbGVDb21tYW5kKG9iaiwgSW52 YWxpZE9iamVjdEFkZHJlc3MsCkBAIC0yMTkxLDcgKzIyMjQsOCBAQCBQdWJsaWNhdGlvbkRyb3BT Y2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgY2hhciBvYmplY3RUeXBlLCBib29sIG1p c3NpbmdfbwogCiAJZm9yZWFjaChsYywgc2NoZW1hcykKIAl7Ci0JCU9pZAkJCXNjaGVtYWlkID0g bGZpcnN0X29pZChsYyk7CisJCVB1YmxpY2F0aW9uU2NoSW5mbyAqcHVic2NoID0gKFB1YmxpY2F0 aW9uU2NoSW5mbyAqKSBsZmlyc3QobGMpOworCQlPaWQJCQlzY2hlbWFpZCA9IHB1YnNjaC0+b2lk OwogCiAJCXBzaWQgPSBHZXRTeXNDYWNoZU9pZDMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJ CQkJCQkJICAgQW51bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Vfb2lkLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCAxMjRiOTk2MWRjLi4yYjFlMjliZTEwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwpAQCAtMTYzODksNyArMTYzODksOSBAQCBBbHRlclRhYmxlTmFtZXNwYWNlKEFs dGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwgT2lkICpvbGRzY2hlbWEpCiAJaWYgKHN0bXQtPm9i amVjdFR5cGUgPT0gT0JKRUNUX1RBQkxFKQogCXsKIAkJTGlzdENlbGwgICAqbGM7Ci0JCUxpc3QJ ICAgKnNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhuc3BPaWQsIFBVQl9PQkpU WVBFX1RBQkxFKTsKKwkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRp b25zKG5zcE9pZCwKKwkJCQkJCQkJCQkJCQkJIFBVQl9PQkpUWVBFX1RBQkxFLAorCQkJCQkJCQkJ CQkJCQkgZmFsc2UpOwogCQlMaXN0CSAgICpyZWxQdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpOwogCiAJCWZvcmVhY2gobGMsIHJlbFB1YmlkcykK QEAgLTE2NDEwLDcgKzE2NDEyLDcgQEAgQWx0ZXJUYWJsZU5hbWVzcGFjZShBbHRlck9iamVjdFNj aGVtYVN0bXQgKnN0bXQsIE9pZCAqb2xkc2NoZW1hKQogCWVsc2UgaWYgKHN0bXQtPm9iamVjdFR5 cGUgPT0gT0JKRUNUX1NFUVVFTkNFKQogCXsKIAkJTGlzdENlbGwgICAqbGM7Ci0JCUxpc3QJICAg KnNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhuc3BPaWQsIFBVQl9PQkpUWVBF X1NFUVVFTkNFKTsKKwkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRp b25zKG5zcE9pZCwgUFVCX09CSlRZUEVfU0VRVUVOQ0UsIGZhbHNlKTsKIAkJTGlzdAkgICAqcmVs UHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKTsK IAogCQlmb3JlYWNoKGxjLCByZWxQdWJpZHMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IGUzOGZm NDAwMGYuLjg5YzExMWUxOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC00ODU1LDYgKzQ4NTUs MTcgQEAgX2NvcHlQdWJsaWNhdGlvblRhYmxlKGNvbnN0IFB1YmxpY2F0aW9uVGFibGUgKmZyb20p CiAJcmV0dXJuIG5ld25vZGU7CiB9CiAKK3N0YXRpYyBQdWJsaWNhdGlvblNjaEluZm8gKgorX2Nv cHlQdWJsaWNhdGlvblNjaEluZm8oY29uc3QgUHVibGljYXRpb25TY2hJbmZvICpmcm9tKQorewor CVB1YmxpY2F0aW9uU2NoSW5mbyAqbmV3bm9kZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uU2NoSW5m byk7CisKKwlDT1BZX1NDQUxBUl9GSUVMRChvaWQpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHNraXAp OworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIHN0YXRpYyBDcmVhdGVQdWJsaWNhdGlvblN0bXQg KgogX2NvcHlDcmVhdGVQdWJsaWNhdGlvblN0bXQoY29uc3QgQ3JlYXRlUHVibGljYXRpb25TdG10 ICpmcm9tKQogewpAQCAtNTk0MSw2ICs1OTUyLDkgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9p ZCAqZnJvbSkKIAkJY2FzZSBUX1B1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCXJldHZhbCA9IF9jb3B5 UHVibGljYXRpb25PYmplY3QoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX1B1YmxpY2F0aW9u U2NoSW5mbzoKKwkJCXJldHZhbCA9IF9jb3B5UHVibGljYXRpb25TY2hJbmZvKGZyb20pOworCQkJ YnJlYWs7CiAJCWNhc2UgVF9QdWJsaWNhdGlvblRhYmxlOgogCQkJcmV0dmFsID0gX2NvcHlQdWJs aWNhdGlvblRhYmxlKGZyb20pOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXgg MGYzMzBlM2M3MC4uMTE3MDZlNzgxNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1 YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMzMsNiAr MzMsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNsdWRlICJub2Rlcy9w YXRobm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfcHVibGljYXRpb24uaCIKIAogCiAvKgpAQCAtMjMyNyw2ICsyMzI4LDE2IEBAIF9lcXVhbFB1 YmxpY2F0aW9uVGFibGUoY29uc3QgUHVibGljYXRpb25UYWJsZSAqYSwgY29uc3QgUHVibGljYXRp b25UYWJsZSAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbFB1Ymxp Y2F0aW9uU2NoZW1hKGNvbnN0IFB1YmxpY2F0aW9uU2NoSW5mbyAqYSwKKwkJCQkJCWNvbnN0IFB1 YmxpY2F0aW9uU2NoSW5mbyAqYikKK3sKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChvaWQpOworCUNP TVBBUkVfU0NBTEFSX0ZJRUxEKHNraXApOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBi b29sCiBfZXF1YWxDcmVhdGVQdWJsaWNhdGlvblN0bXQoY29uc3QgQ3JlYXRlUHVibGljYXRpb25T dG10ICphLAogCQkJCQkJCWNvbnN0IENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqYikKQEAgLTM5MzYs NiArMzk0Nyw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2Ug VF9QdWJsaWNhdGlvbk9ialNwZWM6CiAJCQlyZXR2YWwgPSBfZXF1YWxQdWJsaWNhdGlvbk9iamVj dChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfUHVibGljYXRpb25TY2hJbmZvOgorCQkJcmV0 dmFsID0gX2VxdWFsUHVibGljYXRpb25TY2hlbWEoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBU X1B1YmxpY2F0aW9uVGFibGU6CiAJCQlyZXR2YWwgPSBfZXF1YWxQdWJsaWNhdGlvblRhYmxlKGEs IGIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA5NDVhOWFkYThiLi5hZGRkYjMzNjY2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKQEAgLTIxOSw2ICsyMTksMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NBU2Jp dHMoaW50IGNhc19iaXRzLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIgKmNvbnN0clR5cGUsCiAJ CQkgICBib29sICpub19pbmhlcml0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMg dm9pZCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwKIAkJCQkJ CQkJICAgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQgcHJlcHJvY2Vzc19h bGx0YWJsZXNfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LAorCQkJCQkJCQkJCQkg TGlzdCAqZm9yX2FsbF9vYmplY3RzLAorCQkJCQkJCQkJCQkgaW50IGxvY2F0aW9uLAorCQkJCQkJ CQkJCQkgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQgY2hlY2tfc2tpcF9p bl9wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsCisJCQkJCQkJCQkJCSBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAlfQpAQCAtNDQ3 LDYgKzQ1Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRp b25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1 dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0IHB1Yl9v YmpfdHlwZV9saXN0CisJCQkJc2tpcF9wdWJfb2JqX2xpc3QKIAogJXR5cGUgPG5vZGU+CW9wdF9y b3V0aW5lX2JvZHkKICV0eXBlIDxncm91cGNsYXVzZT4gZ3JvdXBfY2xhdXNlCkBAIC05NzE2LDEy ICs5NzIzLDE4IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+b3B0aW9ucyA9ICQ0 OwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IENSRUFURSBQVUJMSUNBVElPTiBu YW1lIEZPUiBBTEwgcHViX29ial90eXBlX2xpc3Qgb3B0X2RlZmluaXRpb24KKwkJCXwgQ1JFQVRF IFBVQkxJQ0FUSU9OIG5hbWUgRk9SIEFMTCBwdWJfb2JqX3R5cGVfbGlzdCBza2lwX3B1Yl9vYmpf bGlzdCBvcHRfZGVmaW5pdGlvbgogCQkJCXsKIAkJCQkJQ3JlYXRlUHVibGljYXRpb25TdG10ICpu ID0gbWFrZU5vZGUoQ3JlYXRlUHVibGljYXRpb25TdG10KTsKIAkJCQkJbi0+cHVibmFtZSA9ICQz OwotCQkJCQluLT5vcHRpb25zID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+ Zm9yX2FsbF9vYmplY3RzID0gJDY7CisJCQkJCW4tPnB1Ym9iamVjdHMgPSAoTGlzdCAqKSQ3Owor CQkJCQlwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7CisJ CQkJCXByZXByb2Nlc3NfYWxsdGFibGVzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsCisJCQkJ CQkJCQkJCQkJIG4tPmZvcl9hbGxfb2JqZWN0cywKKwkJCQkJCQkJCQkJCQkgQDYsCisJCQkJCQkJ CQkJCQkJIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJCXwgQ1JF QVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIHB1Yl9vYmpfbGlzdCBvcHRfZGVmaW5pdGlvbgpAQCAt OTczMSw2ICs5NzQ0LDcgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQluLT5vcHRpb25z ID0gJDY7CiAJCQkJCW4tPnB1Ym9iamVjdHMgPSAoTGlzdCAqKSQ1OwogCQkJCQlwcmVwcm9jZXNz X3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7CisJCQkJCWNoZWNrX3NraXBf aW5fcHVib2JqX2xpc3Qobi0+cHVib2JqZWN0cywgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9k ZSAqKW47CiAJCQkJfQogCQk7CkBAIC05NzYzLDE4ICs5Nzc3LDM2IEBAIFB1YmxpY2F0aW9uT2Jq U3BlYzoKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+ cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE7CiAJCQkJCSQkLT5u YW1lID0gJDU7CisJCQkJCSQkLT5za2lwID0gZmFsc2U7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA1 OwogCQkJCX0KIAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQQogCQkJ CXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVi b2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOworCQkJCQkkJC0+ c2tpcCA9IGZhbHNlOwogCQkJCQkkJC0+bG9jYXRpb24gPSBANTsKIAkJCQl9CisJCQl8IFNLSVAg QUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQ dWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JK X1RBQkxFU19JTl9TQ0hFTUE7CisJCQkJCSQkLT5uYW1lID0gJDY7CisJCQkJCSQkLT5za2lwID0g dHJ1ZTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDY7CisJCQkJfQorCQkJfCBTS0lQIEFMTCBUQUJM RVMgSU5fUCBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUo UHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9C Sl9UQUJMRVNfSU5fQ1VSX1NDSEVNQTsKKwkJCQkJJCQtPnNraXAgPSB0cnVlOworCQkJCQkkJC0+ bG9jYXRpb24gPSBANjsKKwkJCQl9CiAJCQl8IFNFUVVFTkNFIHJlbGF0aW9uX2V4cHIKIAkJCQl7 CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9i anR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRTsKKwkJCQkJJCQtPnNraXAgPSBmYWxzZTsK IAkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CiAJCQkJCSQk LT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKIAkJCQl9CkBAIC05NzgzLDEyICs5ODE1LDE0IEBA IFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNw ZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9T Q0hFTUE7CiAJCQkJCSQkLT5uYW1lID0gJDU7CisJCQkJCSQkLT5za2lwID0gZmFsc2U7CiAJCQkJ CSQkLT5sb2NhdGlvbiA9IEA1OwogCQkJCX0KIAkJCXwgQUxMIFNFUVVFTkNFUyBJTl9QIFNDSEVN QSBDVVJSRU5UX1NDSEVNQQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9i alNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19J Tl9DVVJfU0NIRU1BOworCQkJCQkkJC0+c2tpcCA9IGZhbHNlOwogCQkJCQkkJC0+bG9jYXRpb24g PSBANTsKIAkJCQl9CiAJCQl8IENvbElkIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQpA QCAtOTg2NSw2ICs5ODk5LDEyIEBAIHB1Yl9vYmpfdHlwZV9saXN0OglwdWJfb2JqX3R5cGUKIAk7 CiAKIAorIHNraXBfcHViX29ial9saXN0OglwdWJfb2JqX2xpc3QKKwkJCQkJCXsgJCQgPSAkMTsg fQorCQkJCQl8IC8qRU1QVFkqLworCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwk7CisKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogICoKICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUICggb3B0aW9u cyApCkBAIC0xNzQ4Miw2ICsxNzUyMiw3IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAq cHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAlMaXN0Q2VsbCAgICpj ZWxsOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2JqOwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5 cGUgcHJldm9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CisJYm9vbCBwcmV2 c2tpcG9iaiA9IGZhbHNlOwogCiAJaWYgKCFwdWJvYmpzcGVjX2xpc3QpCiAJCXJldHVybjsKQEAg LTE3NDk5LDcgKzE3NTQwLDEwIEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jq c3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJcHVib2JqID0gKFB1YmxpY2F0 aW9uT2JqU3BlYyAqKSBsZmlyc3QoY2VsbCk7CiAKIAkJaWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9 PSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04pCisJCXsKIAkJCXB1Ym9iai0+cHVib2JqdHlw ZSA9IHByZXZvYmp0eXBlOworCQkJcHVib2JqLT5za2lwID0gcHJldnNraXBvYmo7CisJCX0KIAog CQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFIHx8CiAJCQlw dWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfU0VRVUVOQ0UpCkBAIC0xNzU3OSw2 ICsxNzYyMyw3NyBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlz dCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCX0KIAogCQlwcmV2b2JqdHlwZSA9IHB1Ym9i ai0+cHVib2JqdHlwZTsKKwkJcHJldnNraXBvYmogPSBwdWJvYmotPnNraXA7CisJfQorfQorCisv KgorICogUHJvY2VzcyBwdWJvYmpzcGVjX2xpc3QgdG8gY2hlY2sgaWYgYW55IG90aGVyIG9wdGlv biBvdGhlciB0aGF0CisgKiAiU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSIgaXMgc3BlY2lmaWVk IHdpdGggIkFMTCBUQUJMRVMiIGFuZCB0aHJvdyBhbgorICogZXJyb3IuCisgKi8KK3N0YXRpYyB2 b2lkCitwcmVwcm9jZXNzX2FsbHRhYmxlc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xp c3QsIExpc3QgKmZvcl9hbGxfb2JqZWN0cywKKwkJCQkJCQkJIGludCBsb2NhdGlvbiwgY29yZV95 eXNjYW5fdCB5eXNjYW5uZXIpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKwlib29sIGZvcl9hbGxf dGFibGVzID0gZmFsc2U7CisKKwlpZiAoIXB1Ym9ianNwZWNfbGlzdCkKKwkJcmV0dXJuOworCisJ LyogVHJhbnNsYXRlIHRoZSBsaXN0IG9mIG9iamVjdCB0eXBlcyAocmVwcmVzZW50ZWQgYnkgc3Ry aW5ncykgdG8gYm9vbCBmbGFncy4gKi8KKwlmb3JlYWNoIChjZWxsLCBmb3JfYWxsX29iamVjdHMp CisJeworCQljaGFyICAgKnZhbCA9IHN0clZhbChsZmlyc3QoY2VsbCkpOworCQlpZiAoc3RyY21w KHZhbCwgInRhYmxlcyIpID09IDApCisJCQlmb3JfYWxsX3RhYmxlcyA9IHRydWU7CisJfQorCisJ aWYgKCFmb3JfYWxsX3RhYmxlcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQllcnJtc2coIlNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg Y2FuIGJlIHNwZWNpZmllZCBvbmx5IHdpdGggQUxMIFRBQkxFUyBvcHRpb24iKSwKKwkJCQlwYXJz ZXJfZXJycG9zaXRpb24obG9jYXRpb24pKTsKKworCWZvcmVhY2goY2VsbCwgcHVib2Jqc3BlY19s aXN0KQorCXsKKwkJUHVibGljYXRpb25PYmpTcGVjICpwdWJvYmogPSAoUHVibGljYXRpb25PYmpT cGVjICopIGxmaXJzdChjZWxsKTsKKworCQkvKiBPbmx5IFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hF TUEgb3B0aW9uIHN1cHBvcnRlZCB3aXRoIEFMTCBUQUJMRVMgKi8KKwkJaWYgKHB1Ym9iai0+cHVi b2JqdHlwZSAhPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BIHx8CisJCQkhcHVib2Jq LT5za2lwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCWVycm1zZygib25seSBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIGNhbiBi ZSBzcGVjaWZpZWQgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbiIpLAorCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHVib2JqLT5sb2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIFByb2Nlc3MgcHVib2Jq c3BlY19saXN0IHRvIGNoZWNrIGlmICJTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIiBpcyBzcGVj aWZpZWQKKyAqIHdpdGggIkFMTCBUQUJMRVMiIGFuZCB0aHJvdyBhbiBlcnJvci4KKyAqLworc3Rh dGljIHZvaWQKK2NoZWNrX3NraXBfaW5fcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0 LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKwlMaXN0Q2VsbCAgICpjZWxsOworCVB1Ymxp Y2F0aW9uT2JqU3BlYyAqcHVib2JqOworCisJaWYgKCFwdWJvYmpzcGVjX2xpc3QpCisJCXJldHVy bjsKKworCWZvcmVhY2goY2VsbCwgcHVib2Jqc3BlY19saXN0KQorCXsKKwkJcHVib2JqID0gKFB1 YmxpY2F0aW9uT2JqU3BlYyAqKSBsZmlyc3QoY2VsbCk7CisKKwkJLyogT25seSBTS0lQIEFMTCBU QUJMRVMgSU4gU0NIRU1BIG9wdGlvbiBzdXBwb3J0ZWQgd2l0aCBBTEwgVEFCTEVTICovCisJCWlm IChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSAm JgorCQkJcHVib2JqLT5za2lwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygiU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVN QSBjYW4gYmUgc3BlY2lmaWVkIG9ubHkgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbiIpLAorCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOwogCX0KIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggODkzODMzZWE4My4uMzVi MjhmN2JjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CkBAIC0xOTQ5LDcgKzE5NDksOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpk YXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJICogdGhlIGNhY2hlIGVudHJ5IHVzaW5nIGEgaGlz dG9yaWMgc25hcHNob3QgYW5kIGFsbCB0aGUgbGF0ZXIgY2hhbmdlcwogCQkgKiBhcmUgYWJzb3Ji ZWQgd2hpbGUgZGVjb2RpbmcgV0FMLgogCQkgKi8KLQkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0g R2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYUlkLCBvYmplY3RUeXBlKTsKKwkJTGlzdAkgICAq c2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYUlkLCBvYmplY3RUeXBl LCBmYWxzZSk7CisJCUxpc3QJICAgKnNraXBTY2hlbWFQdWJpZHMgPSBHZXRTY2hlbWFQdWJsaWNh dGlvbnMoc2NoZW1hSWQsIG9iamVjdFR5cGUsIHRydWUpOwogCQlMaXN0Q2VsbCAgICpsYzsKIAkJ T2lkCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwogCQlpbnQJCQlwdWJsaXNoX2FuY2VzdG9y X2xldmVsID0gMDsKQEAgLTIwMzIsMjIgKzIwMzMsMTEgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBH T3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQlpbnQJYW5jZXN0b3JfbGV2 ZWwgPSAwOwogCiAJCQkvKgotCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1Ymxp Y2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24gcm9vdAotCQkJICogYW5kIHNldCB0aGUgYW5jZXN0 b3IgbGV2ZWwgYWNjb3JkaW5nbHkuIElmIHRoaXMgaXMgYSBGT1IgQUxMCi0JCQkgKiBTRVFVRU5D RVMgcHVibGljYXRpb24sIHdlIHB1Ymxpc2ggaXQgdG9vIGJ1dCB3ZSBkb24ndCBuZWVkIHRvCi0J CQkgKiBwaWNrIHRoZSBwYXJ0aXRpb24gcm9vdCBldGMuCisJCQkgKiBJZiB0aGlzIGlzIGEgRk9S IEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24sIHdlIHB1Ymxpc2ggaXQgdG9vCisJCQkgKiBidXQg d2UgZG9uJ3QgbmVlZCB0byBwaWNrIHRoZSBwYXJ0aXRpb24gcm9vdCBldGMuCiAJCQkgKi8KLQkJ CWlmIChwdWItPmFsbHRhYmxlcyB8fCBwdWItPmFsbHNlcXVlbmNlcykKLQkJCXsKKwkJCWlmIChw dWItPmFsbHNlcXVlbmNlcykKIAkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2 aWFyb290ICYmIGFtX3BhcnRpdGlvbikKLQkJCQl7Ci0JCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9 IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQotCQkJCQlwdWJfcmVsaWQgPSBsbGFz dF9vaWQoYW5jZXN0b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNl c3RvcnMpOwotCQkJCX0KLQkJCX0KIAogCQkJaWYgKCFwdWJsaXNoKQogCQkJewpAQCAtMjA2Nyw3 ICsyMDU3LDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRp b24gcmVsYXRpb24pCiAKIAkJCQkJYW5jZXN0b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1Ymxp Y2F0aW9uKHB1Yi0+b2lkLAogCQkJCQkJCQkJCQkJCQkJICAgYW5jZXN0b3JzLAotCQkJCQkJCQkJ CQkJCQkJICAgJmxldmVsKTsKKwkJCQkJCQkJCQkJCQkJCSAgICZsZXZlbCwKKwkJCQkJCQkJCQkJ CQkJCSAgIHB1Yi0+YWxsdGFibGVzKTsKIAogCQkJCQlpZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9p ZCkKIAkJCQkJewpAQCAtMjA4Miw2ICsyMDczLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQlpZiAobGlzdF9tZW1iZXJf b2lkKHB1YmlkcywgcHViLT5vaWQpIHx8CiAJCQkJCWxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJp ZHMsIHB1Yi0+b2lkKSB8fAorCQkJCQkocHViLT5hbGx0YWJsZXMgJiYgIWxpc3RfbWVtYmVyX29p ZChza2lwU2NoZW1hUHViaWRzLCBwdWItPm9pZCkpIHx8CiAJCQkJCWFuY2VzdG9yX3B1Ymxpc2hl ZCkKIAkJCQkJcHVibGlzaCA9IHRydWU7CiAJCQl9CkBAIC0yMTU4LDYgKzIxNTAsNyBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAog CQlsaXN0X2ZyZWUocHViaWRzKTsKIAkJbGlzdF9mcmVlKHNjaGVtYVB1Ymlkcyk7CisJCWxpc3Rf ZnJlZShza2lwU2NoZW1hUHViaWRzKTsKIAkJbGlzdF9mcmVlKHJlbF9wdWJsaWNhdGlvbnMpOwog CiAJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKaW5kZXggZDQ3ZmFjN2JiOS4uZGEzOWViZmNjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCkBAIC01NTU4LDYgKzU1NTgsOCBAQCB2b2lkCiBSZWxhdGlvbkJ1aWxkUHVibGlj YXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiB7 CiAJTGlzdAkgICAqcHVib2lkczsKKwlMaXN0CSAgICphbGx0YWJsZXNwdWJvaWRzOworCUxpc3QJ ICAgKnNraXBzY2hlbWFwdWJvaWRzOwogCUxpc3RDZWxsICAgKmxjOwogCU1lbW9yeUNvbnRleHQg b2xkY3h0OwogCU9pZAkJCXNjaGVtYWlkOwpAQCAtNTU5OCw3ICs1NjAwLDggQEAgUmVsYXRpb25C dWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpw dWJkZXNjKQogCW9ialR5cGUgPSBwdWJfZ2V0X29iamVjdF90eXBlX2Zvcl9yZWxraW5kKHJlbGtp bmQpOwogCiAJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJ CQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsIG9ialR5cGUpKTsKKwkJCQkJCQkJ CSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsIG9ialR5cGUsIGZhbHNlKSk7CisJc2tp cHNjaGVtYXB1Ym9pZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsIG9ialR5cGUs IHRydWUpOwogCiAJLyoKIAkgKiBJZiB0aGlzIGlzIGEgcGFydGlvbiAoYW5kIHRodXMgYSB0YWJs ZSksIGxvb2t1cCBhbGwgYW5jZXN0b3JzIGFuZCB0cmFjawpAQCAtNTYyMCwxMCArNTYyMywxNSBA QCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNh dGlvbkRlc2MgKnB1YmRlc2MpCiAJCQlzY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNwYWNlKGFuY2Vz dG9yKTsKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCiAJCQkJ CQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsCi0JCQkJCQkJCQkJCQkJCQkJ ICAgUFVCX09CSlRZUEVfVEFCTEUpKTsKKwkJCQkJCQkJCQkJCQkJCQkgICBQVUJfT0JKVFlQRV9U QUJMRSwgZmFsc2UpKTsKKwkJCXNraXBzY2hlbWFwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVl X29pZChza2lwc2NoZW1hcHVib2lkcywKKwkJCQkJCQkJCQkJCQkgICBHZXRTY2hlbWFQdWJsaWNh dGlvbnMoc2NoZW1haWQsCisJCQkJCQkJCQkJCQkJCQkJCQkJIFBVQl9PQkpUWVBFX1RBQkxFLCB0 cnVlKSk7CiAJCX0KIAl9CiAKKwlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVibGlj YXRpb25zKCk7CisKIAkvKgogCSAqIENvbnNpZGVyIGFsc28gRk9SIEFMTCBUQUJMRVMgYW5kIEZP UiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucywKIAkgKiBkZXBlbmRpbmcgb24gdGhlIHJlbGtp bmQgb2YgdGhlIHJlbGF0aW9uLgpAQCAtNTYzMSw3ICs1NjM5LDkgQEAgUmVsYXRpb25CdWlsZFB1 YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNj KQogCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpCiAJ CXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFNlcXVlbmNl c1B1YmxpY2F0aW9ucygpKTsKIAllbHNlCi0JCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVf b2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsKKwkJcHVib2lkcyA9IGxp c3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNl X29pZChhbGx0YWJsZXNwdWJvaWRzLAorCQkJCQkJCQkJCQkJCQkJIHNraXBzY2hlbWFwdWJvaWRz KSk7CiAKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKQEAgLTU2NjIsNyArNTY3Miw4IEBAIFJl bGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9u RGVzYyAqcHViZGVzYykKIAkJaWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYKIAkJCShwdWJm b3JtLT5wdWJ1cGRhdGUgfHwgcHViZm9ybS0+cHViZGVsZXRlKSAmJgogCQkJcHViX3JmX2NvbnRh aW5zX2ludmFsaWRfY29sdW1uKHB1YmlkLCByZWxhdGlvbiwgYW5jZXN0b3JzLAotCQkJCQkJCQkJ IHB1YmZvcm0tPnB1YnZpYXJvb3QpKQorCQkJCQkJCQkJIHB1YmZvcm0tPnB1YnZpYXJvb3QsCisJ CQkJCQkJCQkgcHViZm9ybS0+cHViYWxsdGFibGVzKSkKIAkJewogCQkJaWYgKHB1YmZvcm0tPnB1 YnVwZGF0ZSkKIAkJCQlwdWJkZXNjLT5yZl92YWxpZF9mb3JfdXBkYXRlID0gZmFsc2U7CkBAIC01 Njc5LDcgKzU2OTAsNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJl bGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCWlmICghcHViZm9ybS0+cHViYWxs dGFibGVzICYmCiAJCQkocHViZm9ybS0+cHVidXBkYXRlIHx8IHB1YmZvcm0tPnB1YmRlbGV0ZSkg JiYKIAkJCXB1Yl9jb2xsaXN0X2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKHB1YmlkLCByZWxhdGlv biwgYW5jZXN0b3JzLAotCQkJCQkJCQkJIHB1YmZvcm0tPnB1YnZpYXJvb3QpKQorCQkJCQkJCQkJ IHB1YmZvcm0tPnB1YnZpYXJvb3QsIHB1YmZvcm0tPnB1YmFsbHRhYmxlcykpCiAJCXsKIAkJCWlm IChwdWJmb3JtLT5wdWJ1cGRhdGUpCiAJCQkJcHViZGVzYy0+Y29sc192YWxpZF9mb3JfdXBkYXRl ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA1MzViMTYwMTY1Li44YmVkMTJkOWIyIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKQEAgLTQwNDAsNiArNDA0MCw3IEBAIGdldFB1YmxpY2F0aW9uTmFtZXNwYWNlcyhBcmNo aXZlICpmb3V0KQogCWludAkJCWlfcG5wdWJpZDsKIAlpbnQJCQlpX3BubnNwaWQ7CiAJaW50CQkJ aV9wbnR5cGU7CisJaW50CQkJaV9wbnNraXA7CiAJaW50CQkJaSwKIAkJCQlqLAogCQkJCW50dXBz OwpAQCAtNDA1MSw3ICs0MDUyLDcgQEAgZ2V0UHVibGljYXRpb25OYW1lc3BhY2VzKEFyY2hpdmUg KmZvdXQpCiAKIAkvKiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICov CiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwg b2lkLCBwbnB1YmlkLCBwbm5zcGlkLCBwbnR5cGUgIgorCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQs IG9pZCwgcG5wdWJpZCwgcG5uc3BpZCwgcG50eXBlLCBwbnNraXAgIgogCQkJCQkJICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIik7CiAJcmVzID0gRXhlY3V0ZVNxbFF1 ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwogCkBAIC00MDYyLDYgKzQw NjMsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2ZSAqZm91dCkKIAlpX3BucHVi aWQgPSBQUWZudW1iZXIocmVzLCAicG5wdWJpZCIpOwogCWlfcG5uc3BpZCA9IFBRZm51bWJlcihy ZXMsICJwbm5zcGlkIik7CiAJaV9wbnR5cGUgPSBQUWZudW1iZXIocmVzLCAicG50eXBlIik7CisJ aV9wbnNraXAgPSBQUWZudW1iZXIocmVzLCAicG5za2lwIik7CiAKIAkvKiB0aGlzIGFsbG9jYXRp b24gbWF5IGJlIG1vcmUgdGhhbiB3ZSBuZWVkICovCiAJcHVic2luZm8gPSBwZ19tYWxsb2MobnR1 cHMgKiBzaXplb2YoUHVibGljYXRpb25TY2hlbWFJbmZvKSk7CkBAIC00MDcyLDYgKzQwNzQsNyBA QCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2ZSAqZm91dCkKIAkJT2lkCQkJcG5wdWJp ZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9wbnB1YmlkKSk7CiAJCU9pZAkJCXBubnNw aWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfcG5uc3BpZCkpOwogCQljaGFyCQlwbnR5 cGUgPSBQUWdldHZhbHVlKHJlcywgaSwgaV9wbnR5cGUpWzBdOworCQljaGFyICAgICAgICpwbnNr aXAgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcG5za2lwKSk7CiAJCVB1YmxpY2F0 aW9uSW5mbyAqcHViaW5mbzsKIAkJTmFtZXNwYWNlSW5mbyAqbnNwaW5mbzsKIApAQCAtNDA5NCw3 ICs0MDk3LDEwIEBAIGdldFB1YmxpY2F0aW9uTmFtZXNwYWNlcyhBcmNoaXZlICpmb3V0KQogCQkJ Y29udGludWU7CiAKIAkJLyogT0ssIG1ha2UgYSBEdW1wYWJsZU9iamVjdCBmb3IgdGhpcyByZWxh dGlvbnNoaXAgKi8KLQkJcHVic2luZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05f VEFCTEVfSU5fU0NIRU1BOworCQlpZiAoc3RyY21wKHBuc2tpcCwgInQiKSA9PSAwKQorCQkJcHVi c2luZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fU0tJUF9UQUJMRV9JTl9TQ0hF TUE7CisJCWVsc2UKKwkJCXB1YnNpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJQ0FUSU9O X1RBQkxFX0lOX1NDSEVNQTsKIAkJcHVic2luZm9bal0uZG9iai5jYXRJZC50YWJsZW9pZCA9CiAJ CQlhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdGFibGVvaWQpKTsKIAkJcHVic2luZm9bal0u ZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfb2lkKSk7CkBAIC00 MjUyLDEzICs0MjU4LDE1IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAgKgkgIGR1bXAgdGhlIGRlZmluaXRp b24gb2YgdGhlIGdpdmVuIHB1YmxpY2F0aW9uIHNjaGVtYSBtYXBwaW5nLgogICovCiBzdGF0aWMg dm9pZAotZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1Ymxp Y2F0aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCitkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJj aGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25TY2hlbWFJbmZvICpwdWJzaW5mbywKKwkJCQkJ CSBib29sIGJza2lwKQogewogCUR1bXBPcHRpb25zICpkb3B0ID0gZm91dC0+ZG9wdDsKIAlOYW1l c3BhY2VJbmZvICpzY2hlbWFpbmZvID0gcHVic2luZm8tPnB1YnNjaGVtYTsKIAlQdWJsaWNhdGlv bkluZm8gKnB1YmluZm8gPSBwdWJzaW5mby0+cHVibGljYXRpb247CiAJUFFFeHBCdWZmZXIgcXVl cnk7CiAJY2hhcgkgICAqdGFnOworCWNoYXIJICAgKmRlc2NyaXB0aW9uID0gKGJza2lwKSA/ICJQ VUJMSUNBVElPTiBTS0lQIFRBQkxFUyBJTiBTQ0hFTUEiIDogIlBVQkxJQ0FUSU9OIFRBQkxFUyBJ TiBTQ0hFTUEiOwogCiAJLyogRG8gbm90aGluZyBpbiBkYXRhLW9ubHkgZHVtcCAqLwogCWlmIChk b3B0LT5kYXRhT25seSkKQEAgLTQyNzEsNyArNDI3OSwxMyBAQCBkdW1wUHVibGljYXRpb25OYW1l c3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25TY2hlbWFJbmZvICpwdWJzaW5m bykKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMVEVSIFBVQkxJQ0FUSU9OICVzICIsIGZt dElkKHB1YmluZm8tPmRvYmoubmFtZSkpOwogCiAJaWYgKHB1YnNpbmZvLT5wdWJ0eXBlID09ICd0 JykKLQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg JXM7XG4iLCBmbXRJZChzY2hlbWFpbmZvLT5kb2JqLm5hbWUpKTsKKwl7CisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiQUREICIpOworCQlpZiAoYnNraXApCisJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIlNLSVAgIik7CisKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJB TEwgVEFCTEVTIElOIFNDSEVNQSAlcztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkp OworCX0KIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUREIEFMTCBTRVFVRU5D RVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CiAKQEAg LTQyODQsNyArNDI5OCw3IEBAIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZShBcmNoaXZlICpmb3V0 LCBjb25zdCBQdWJsaWNhdGlvblNjaGVtYUluZm8gKnB1YnNpbmZvKQogCQkJCQkgQVJDSElWRV9P UFRTKC50YWcgPSB0YWcsCiAJCQkJCQkJCSAgLm5hbWVzcGFjZSA9IHNjaGVtYWluZm8tPmRvYmou bmFtZSwKIAkJCQkJCQkJICAub3duZXIgPSBwdWJpbmZvLT5yb2xuYW1lLAotCQkJCQkJCQkgIC5k ZXNjcmlwdGlvbiA9ICJQVUJMSUNBVElPTiBUQUJMRVMgSU4gU0NIRU1BIiwKKwkJCQkJCQkJICAu ZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiwKIAkJCQkJCQkJICAuc2VjdGlvbiA9IFNFQ1RJT05f UE9TVF9EQVRBLAogCQkJCQkJCQkgIC5jcmVhdGVTdG10ID0gcXVlcnktPmRhdGEpKTsKIApAQCAt OTkzNSw5ICs5OTQ5LDE1IEBAIGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBEdW1w YWJsZU9iamVjdCAqZG9iaikKIAkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CiAJCQlkdW1wUHVi bGljYXRpb25UYWJsZShmb3V0LCAoY29uc3QgUHVibGljYXRpb25SZWxJbmZvICopIGRvYmopOwog CQkJYnJlYWs7CisJCWNhc2UgRE9fUFVCTElDQVRJT05fU0tJUF9UQUJMRV9JTl9TQ0hFTUE6CisJ CQlkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoZm91dCwKKwkJCQkJCQkJCSAoY29uc3QgUHVibGlj YXRpb25TY2hlbWFJbmZvICopIGRvYmosCisJCQkJCQkJCQkgdHJ1ZSk7CisJCQlicmVhazsKIAkJ Y2FzZSBET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUE6CiAJCQlkdW1wUHVibGljYXRpb25O YW1lc3BhY2UoZm91dCwKLQkJCQkJCQkJCSAoY29uc3QgUHVibGljYXRpb25TY2hlbWFJbmZvICop IGRvYmopOworCQkJCQkJCQkJIChjb25zdCBQdWJsaWNhdGlvblNjaGVtYUluZm8gKikgZG9iaiwK KwkJCQkJCQkJCSBmYWxzZSk7CiAJCQlicmVhazsKIAkJY2FzZSBET19TVUJTQ1JJUFRJT046CiAJ CQlkdW1wU3Vic2NyaXB0aW9uKGZvdXQsIChjb25zdCBTdWJzY3JpcHRpb25JbmZvICopIGRvYmop OwpAQCAtMTc4NjgsNiArMTc4ODgsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhEdW1wYWJs ZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fUE9MSUNZOgogCQkJY2Fz ZSBET19QVUJMSUNBVElPTjoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgorCQkJY2FzZSBE T19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1NDSEVNQToKIAkJCWNhc2UgRE9fUFVCTElDQVRJ T05fVEFCTEVfSU5fU0NIRU1BOgogCQkJY2FzZSBET19TVUJTQ1JJUFRJT046CiAJCQkJLyogUG9z dC1kYXRhIG9iamVjdHM6IG11c3QgY29tZSBhZnRlciB0aGUgcG9zdC1kYXRhIGJvdW5kYXJ5ICov CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaAppbmRleCA2ODgwOTNjNTVlLi4yNGI4MDlhOGZjIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAg LTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FUSU9O LAogCURPX1BVQkxJQ0FUSU9OX1JFTCwKKwlET19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1ND SEVNQSwKIAlET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCiAJRE9fU1VCU0NSSVBUSU9O CiB9IER1bXBhYmxlT2JqZWN0VHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wX3NvcnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCAxNTkyMDkw ODM5Li5kMDI0OTM2YjE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0 LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC05MSw2ICs5MSw3IEBA IGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fUE9MSUNZLAogCVBSSU9fUFVCTElD QVRJT04sCiAJUFJJT19QVUJMSUNBVElPTl9SRUwsCisJUFJJT19QVUJMSUNBVElPTl9TS0lQX1RB QkxFX0lOX1NDSEVNQSwKIAlQUklPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQSwKIAlQUklP X1NVQlNDUklQVElPTiwKIAlQUklPX0RFRkFVTFRfQUNMLAkJCS8qIGRvbmUgaW4gQUNMIHBhc3Mg Ki8KQEAgLTE0NSw2ICsxNDYsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0VHlwZVByaW9y aXR5W10gPQogCVBSSU9fUE9MSUNZLAkJCQkvKiBET19QT0xJQ1kgKi8KIAlQUklPX1BVQkxJQ0FU SU9OLAkJCS8qIERPX1BVQkxJQ0FUSU9OICovCiAJUFJJT19QVUJMSUNBVElPTl9SRUwsCQkvKiBE T19QVUJMSUNBVElPTl9SRUwgKi8KKwlQUklPX1BVQkxJQ0FUSU9OX1NLSVBfVEFCTEVfSU5fU0NI RU1BLAkvKiBET19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1NDSEVNQSAqLwogCVBSSU9fUFVC TElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAkvKiBET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hF TUEgKi8KIAlQUklPX1NVQlNDUklQVElPTgkJCS8qIERPX1NVQlNDUklQVElPTiAqLwogfTsKQEAg LTE0ODgsNiArMTQ5MCwxMSBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1bXBhYmxlT2JqZWN0 ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiUFVCTElDQVRJT04gVEFCTEUg KElEICVkIE9JRCAldSkiLAogCQkJCQkgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lkKTsKIAkJ CXJldHVybjsKKwkJY2FzZSBET19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1NDSEVNQToKKwkJ CXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQVUJMSUNBVElPTiBTS0lQIFRBQkxFUyBJ TiBTQ0hFTUEgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQu b2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUE6 CiAJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCiAJCQkJCSAiUFVCTElDQVRJT04gVEFCTEVTIElO IFNDSEVNQSAoSUQgJWQgT0lEICV1KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8w MDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGFm NWQ2ZmE1YTMuLmIxNDg2NDY0OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9w Z19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yNDAy LDYgKzI0MDIsMTUgQEAgbXkgJXRlc3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2Vj dGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI2 JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUg UFVCTElDQVRJT04gcHViNiBGT1IgQUxMIFRBQkxFUzsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJ XFFDUkVBVEUgUFVCTElDQVRJT04gcHViNiBGT1IgQUxMIFRBQkxFUyBXSVRIIChwdWJsaXNoID0g J2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlLCBzZXF1ZW5jZScpO1xFCisJCQkveG0s CisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0s CisKIAknQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA1 MCwKIAkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKQEAgLTI1Mjcs NiArMjUzNiwyNyBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0 aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwknQUxURVIgUFVCTElDQVRJT04gcHViNiBB REQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QnID0+IHsKKwkJY3JlYXRlX29y ZGVyID0+IDUxLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjYg QUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0OycsCisJCXJlZ2V4cCA9PiBx ci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjYgQUREIFNLSVAgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgZHVtcF90ZXN0O1xFCisJCQkveG0sCisJCWxpa2UgICA9PiB7ICVmdWxsX3J1bnMsIHNl Y3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJCXVubGlrZSA9PiB7IGV4Y2x1ZGVfZHVtcF90ZXN0 X3NjaGVtYSA9PiAxLCB9LAorCX0sCisKKwknQUxURVIgUFVCTElDQVRJT04gcHViNiBBREQgU0tJ UCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWMnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUy LAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjYgQUREIFNLSVAg QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFM VEVSIFBVQkxJQ0FUSU9OIHB1YjYgQUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGlj O1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9 PiAxLCB9LAorCX0sCisKIAknQ1JFQVRFIFNDSEVNQSBwdWJsaWMnID0+IHsKIAkJcmVnZXhwID0+ IHFyL15DUkVBVEUgU0NIRU1BIHB1YmxpYzsvbSwKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA0ZGRkZjA4Nzg5Li41 NTEwYzE5MGRiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjk2NCw3ICsyOTY0LDcgQEAgZGVzY3JpYmVPbmVUYWJs ZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRh bG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb25fbmFtZXNwYWNlIHBuIE9OIHAub2lkID0gcG4ucG5wdWJpZFxuIgogCQkJCQkJ CQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwYy5yZWxuYW1lc3BhY2UgPSBw bi5wbm5zcGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHBjLm9pZCA9JyVzJyBhbmQgcG4ucG50eXBl ID0gJ3QnIGFuZCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4i CisJCQkJCQkJCSAgIldIRVJFIHBjLm9pZCA9JyVzJyBhbmQgcG4ucG50eXBlID0gJ3QnIEFORCBw bi5wbnNraXAgPSAnZicgYW5kIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUo JyVzJylcbiIKIAkJCQkJCQkJICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVc biIKIAkJCQkJCQkJICAiCQksIHBnX2dldF9leHByKHByLnBycXVhbCwgYy5vaWQpXG4iCkBAIC02 MjA5LDcgKzYyMDksNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu KQogCQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lXG4iCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0 YWxvZy5wZ19uYW1lc3BhY2UgblxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkXG4iCi0JCQkJ CQkJCSAgIldIRVJFIHBuLnBucHViaWQgPSAnJXMnIEFORCBwbi5wbnR5cGUgPSAndCdcbiIKKwkJ CQkJCQkJICAiV0hFUkUgcG4ucG5wdWJpZCA9ICclcycgQU5EIHBuLnBudHlwZSA9ICd0JyBBTkQg cG4ucG5za2lwID0gJ2YnXG4iCiAJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CiAJCQkJ aWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCAiVGFibGVzIGZyb20gc2NoZW1h czoiLAogCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQpAQCAtNjI0OCw2ICs2MjQ4LDIxIEBAIGRl c2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQl9CiAJCX0KIAorCQlp ZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCXsKKwkJCS8qIEdldCB0aGUgc2tpcCBzY2hl bWFzIGZvciB0aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9uICovCisJCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWVcbiIKKwkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfbmFtZXNwYWNlIG5cbiIKKwkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkXG4iCisJ CQkJCQkJICAiV0hFUkUgcG4ucG5wdWJpZCA9ICclcydcbiIKKwkJCQkJCQkgICIgIEFORCBwbi5w bnNraXAgPSAndCdcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOworCQkJaWYgKCFh ZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCAiU2tpcCB0YWJsZXMgZnJvbSBzY2hlbWFz OiIsCisJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJ fQorCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dm aWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXgg NjNiZmRmMTFjNi4uMmI3ZmNhY2ExNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMTgxNSw3ICsxODE1 LDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAkJQ09NUExFVEVfV0lUSCgiQUREIiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRP IiwgIlNFVCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikpCi0JCUNP TVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIkFMTCBTRVFVRU5DRVMgSU4gU0NI RU1BIiwgIlRBQkxFIiwgIlNFUVVFTkNFIik7CisJCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMg SU4gU0NIRU1BIiwgIkFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIiwgIlNLSVAgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEiLCAiVEFCTEUiLCAiU0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlNLSVAiKSkKKwkJQ09NUExFVEVf V0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJUQUJMRSIpIHx8CiAJCQkgKEhl YWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJU QUJMRSIpICYmCiAJCQkgIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKSkKQEAgLTE4NDIsMTEgKzE4 NDQsMTYgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiLCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1l PiBEUk9QICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkRST1AiKSkKLQkJQ09NUExFVEVfV0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAi QUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiLCAiU0VRVUVOQ0UiKTsKKwkJQ09NUExF VEVfV0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEi LCAiU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIsICJTRVFVRU5DRSIpOworCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJEUk9QIiwg IlNLSVAiKSkKKwkJQ09NUExFVEVfV0lUSCgiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiKTsKIAkvKiBB TFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIpKQotCQlDT01QTEVURV9XSVRIKCIoIiwg IkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIkFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIiwgIlRBQkxF IiwgIlNFUVVFTkNFIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERHxEUk9QfFNFVCIsICJBTEwiLCAiVEFCTEVTfFNFUVVFTkNFUyIsICJJ TiIsICJTQ0hFTUEiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIsICJBTEwgVEFCTEVTIElOIFNDSEVN QSIsICJBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSIsICJTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1B IiwgIlRBQkxFIiwgIlNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJTS0lQIikpCisJCUNPTVBMRVRFX1dJVEgoIkFM TCBUQUJMRVMgSU4gU0NIRU1BIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIkFERHxEUk9QfFNFVCIsICJBTEwiLCAiVEFCTEVTfFNFUVVFTkNF UyIsICJJTiIsICJTQ0hFTUEiKSB8fAorCQkJIE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJBRER8RFJPUHxTRVQiLCAiU0tJUCIsICJBTEwiLCAiVEFCTEVTIiwgIklO IiwgIlNDSEVNQSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rf b2Zfc2NoZW1hcwogCQkJCQkJCQkgIiBBTkQgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSci LAogCQkJCQkJCQkgIkNVUlJFTlRfU0NIRU1BIik7CkBAIC0yOTc5LDcgKzI5ODYsOSBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkg ICJTRVFVRU5DRSIsICJBTEwgU0VRVUVOQ0VTIiwgIkFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIik7 CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiQUxMIikpCiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJUQUJMRVMgSU4gU0NIRU1B IiwgIlNFUVVFTkNFUyIsICJTRVFVRU5DRVMgSU4gU0NIRU1BIik7Ci0JZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxF U3xTRVFVRU5DRVMiKSkKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIikpCisJCUNPTVBMRVRFX1dJVEgoIklO IFNDSEVNQSIsICJXSVRIICgiLCAiU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSIpOworCWVsc2Ug aWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFM TCIsICJTRVFVRU5DRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIiwgIldJVEggKCIp OwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi Rk9SIiwgIlRBQkxFfFNFUVVFTkNFIiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwg JywnKSkKIAkJQ09NUExFVEVfV0lUSCgiV0hFUkUgKCIsICJXSVRIICgiKTsKQEAgLTMwMDUsMTEg KzMwMTQsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwg aW50IGVuZCkKIAkgKiBDb21wbGV0ZSAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgQUxM IFRBQkxFU3xTRVFVRU5DRVMgSU4gU0NIRU1BIDxzY2hlbWE+LAogCSAqIC4uLiIKIAkgKi8KLQll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIs ICJBTEwiLCAiVEFCTEVTfFNFUVVFTkNFUyIsICJJTiIsICJTQ0hFTUEiKSkKKwllbHNlIGlmIChN YXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAi VEFCTEVTfFNFUVVFTkNFUyIsICJJTiIsICJTQ0hFTUEiKSB8fAorCQkJIE1hdGNoZXMoIkNSRUFU RSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlNLSVAiLCAiQUxMIiwgIlRBQkxF UyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zv cl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xc XFxfJSUnIiwKIAkJCQkJCQkJICJDVVJSRU5UX1NDSEVNQSIpOwotCWVsc2UgaWYgKE1hdGNoZXMo IkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVN8 U0VRVUVOQ0VTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55KSAmJiAoIWVuZHNfd2l0aChwcmV2 X3dkLCAnLCcpKSkKKwllbHNlIGlmICgoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFU3xTRVFVRU5DRVMiLCAiSU4iLCAiU0NIRU1B IiwgTWF0Y2hBbnkpIHx8CisJCQkgIE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiU0tJUCIsICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBN YXRjaEFueSkpICYmCisJCQkgKCFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkpCiAJCUNPTVBMRVRF X1dJVEgoIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+ IFsuLi5dIFdJVEgiICovCiAJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIpICYmIFRhaWxNYXRjaGVzKCJXSVRIIiwgIigiKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uaAppbmRleCAxODZkOGVhNzRiLi4zYzA5MTIwNjIwIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0xMjEsNiArMTIxLDEzIEBAIHR5cGVkZWYgc3RydWN0IFB1 YmxpY2F0aW9uUmVsSW5mbwogCUxpc3QJICAgKmNvbHVtbnM7CiB9IFB1YmxpY2F0aW9uUmVsSW5m bzsKIAordHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25TY2hJbmZvCit7CisJTm9kZVRhZwkJdHlw ZTsKKwlPaWQJCQlvaWQ7CisJYm9vbAkJc2tpcDsKK30gUHVibGljYXRpb25TY2hJbmZvOworCiBl eHRlcm4gUHVibGljYXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVi bGljYXRpb24gKkdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wg bWlzc2luZ19vayk7CiBleHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJl bGlkKTsKQEAgLTE0NCwxOSArMTUxLDIxIEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvblBhcnRP cHQKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIg b2JqZWN0VHlwZSwKIAkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwog ZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0 ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpOworZXh0 ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgYm9v bCBwdWJ2aWFyb290KTsKIGV4dGVybiB2b2lkIEdldEFjdGlvbnNJblB1YmxpY2F0aW9uKE9pZCBw dWJpZCwgUHVibGljYXRpb25BY3Rpb25zICphY3Rpb25zKTsKIGV4dGVybiBMaXN0ICpHZXRQdWJs aWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUpOwotZXh0ZXJuIExpc3Qg KkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQsIGNoYXIgb2JqZWN0VHlwZSk7Citl eHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFpZCwgY2hhciBvYmpl Y3RUeXBlLCBib29sIHNraXBwdWIpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgY2hhciBvYmplY3RUeXBlLAogCQkJCQkJCQkJCSAgIFB1 YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsU2NoZW1h UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ym9pZCwgY2hhciBvYmplY3RUeXBlLAotCQkJCQkJ CQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CisJCQkJCQkJCQkJCSAgUHVi bGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkgIGJvb2wgYnNraXApOwog ZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQs CiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJ T2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihP aWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCi0JCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2 ZWwpOworCQkJCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLAorCQkJCQkJCQkJCQlib29sIHB1 YmFsbHRhYmxlcyk7CiAKIGV4dGVybiBMaXN0ICpHZXRBbGxTZXF1ZW5jZXNQdWJsaWNhdGlvbnMo dm9pZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnMo dm9pZCk7CkBAIC0xNjUsNyArMTc0LDggQEAgZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVs YXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihP aWQgcHViaWQpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9u KE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJCSAgYm9vbCBp Zl9ub3RfZXhpc3RzKTsKLWV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9zY2hl bWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsCitleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNh dGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJUHVibGljYXRpb25TY2hJbmZv ICpwdWJzY2gsCiAJCQkJCQkJCQkJCWNoYXIgb2JqZWN0VHlwZSwKIAkJCQkJCQkJCQkJYm9vbCBp Zl9ub3RfZXhpc3RzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbl9uYW1lc3BhY2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25f bmFtZXNwYWNlLmgKaW5kZXggNzM0MGExZWM2NC4uNTcwOWVmYTY5ZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oCkBAIC0zMyw2ICszMyw3IEBA IENBVEFMT0cocGdfcHVibGljYXRpb25fbmFtZXNwYWNlLDg5MDEsUHVibGljYXRpb25OYW1lc3Bh Y2VSZWxhdGlvbklkKQogCU9pZAkJCXBucHViaWQgQktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7 IC8qIE9pZCBvZiB0aGUgcHVibGljYXRpb24gKi8KIAlPaWQJCQlwbm5zcGlkIEJLSV9MT09LVVAo cGdfbmFtZXNwYWNlKTsJLyogT2lkIG9mIHRoZSBzY2hlbWEgKi8KIAljaGFyCQlwbnR5cGU7CQkJ CQkJCQkvKiBvYmplY3QgdHlwZSB0byBpbmNsdWRlICovCisJYm9vbAkJcG5za2lwIEJLSV9ERUZB VUxUKGYpOwkJCQkvKiBza2lwIG9iamVjdHMgKi8KIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb25f bmFtZXNwYWNlOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5oCmluZGV4IGFlODdjYWYwODkuLjBjOGFkMjQ5MzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCkBAIC0zMiw4ICszMiwxMCBAQCBleHRlcm4gT2JqZWN0 QWRkcmVzcyBBbHRlclB1YmxpY2F0aW9uT3duZXIoY29uc3QgY2hhciAqbmFtZSwgT2lkIG5ld093 bmVySWQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJQdWJsaWNhdGlvbk93bmVyX29pZChPaWQgcHViaWQs IE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMo TGlzdCAqcmVsaWRzKTsKIGV4dGVybiBib29sIHB1Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVt bihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJIExpc3QgKmFuY2VzdG9y cywgYm9vbCBwdWJ2aWFyb290KTsKKwkJCQkJCQkJCSBMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVi dmlhcm9vdCwKKwkJCQkJCQkJCSBib29sIHB1YmFsbHRhYmxlcyk7CiBleHRlcm4gYm9vbCBwdWJf Y29sbGlzdF9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0 aW9uLAotCQkJCQkJCQkJIExpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290KTsKKwkJCQkJ CQkJCSBMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCwKKwkJCQkJCQkJCSBib29sIHB1 YmFsbHRhYmxlcyk7CiAKICNlbmRpZgkJCQkJCQkvKiBQVUJMSUNBVElPTkNNRFNfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25v ZGVzLmgKaW5kZXggNWQwNzVmMGMzNC4uMThiYmEzYmYzYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC00OTAs NiArNDkwLDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX1BhcnRpdGlvbkNtZCwKIAlUX1Zh Y3V1bVJlbGF0aW9uLAogCVRfUHVibGljYXRpb25PYmpTcGVjLAorCVRfUHVibGljYXRpb25TY2hJ bmZvLAogCVRfUHVibGljYXRpb25UYWJsZSwKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5k ZXggNWE0NThjNDJlNS4uNGVkMDEyMWZkOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzY3 OSw2ICszNjc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25PYmpTcGVjCiAJUHVibGlj YXRpb25PYmpTcGVjVHlwZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24g b2JqZWN0ICovCiAJY2hhcgkgICAqbmFtZTsKIAlQdWJsaWNhdGlvblRhYmxlICpwdWJ0YWJsZTsK Kwlib29sCQlza2lwOwogCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0x IGlmIHVua25vd24gKi8KIH0gUHVibGljYXRpb25PYmpTcGVjOwogCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDAzMDhlNDBiYTYuLjg4NDRmMjYxOWQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC04NCw2ICs4NCwz NSBAQCBERVRBSUw6ICBUYWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9w cGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxMCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cmFsbHRhYmxlcyBTRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBFUlJPUjogIHB1 YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFRB QkxFUwogREVUQUlMOiAgVGFibGVzIGZyb20gc2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJv cHBlZCBmcm9tLCBvciBzZXQgb24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgorLS0gc2hv dWxkIGJlIGFibGUgdG8gYWRkIHNraXAgc2NoZW1hIHRvICdGT1IgQUxMIFRBQkxFUycgcHVibGlj YXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIEFERCBTS0lQIEFM TCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgfCBmCitTa2lwIHRhYmxlcyBmcm9tIHNj aGVtYXM6CisgICAgInB1Yl90ZXN0IgorCistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2tpcCBz Y2hlbWEgdG8gJ0ZPUiBBTEwgVEFCTEVTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXMgU0VUIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGlj OworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAg ICAgICAgfCBmCitTa2lwIHRhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1YmxpYyIKKworLS0g c2hvdWxkIGJlIGFibGUgdG8gZHJvcCBza2lwIHNjaGVtYSBmcm9tICdGT1IgQUxMIFRBQkxFUycg cHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIERST1Ag U0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRh YmxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKKygxIHJvdykKKwogU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMTsKIFJFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CkBAIC0xMTksNiArMTQ4LDE4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y dGFibGUgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogVGFibGVzIGZyb20gc2No ZW1hczoKICAgICAicHViX3Rlc3QiCiAKKy0tIGZhaWwgLSBjYW4ndCBhZGQgc2tpcCBzY2hlbWEg dG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y dGFibGUgQUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitFUlJPUjogIHB1 YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRB QkxFUworREVUQUlMOiAgU2tpcCB0YWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRv LCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBOT04gQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCist LSBmYWlsIC0gY2FuJ3QgZHJvcCBza2lwIHNjaGVtYSBmcm9tICdGT1IgVEFCTEUnIHB1YmxpY2F0 aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgU0tJUCBBTEwgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9y dGFibGUiIGlzIG5vdCBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTCitERVRBSUw6ICBTa2lwIHRh YmxlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0 IG9uIE5PTiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBzZXQgc2tp cCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9ydGFibGUgU0VUIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitF UlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBpcyBub3QgZGVmaW5lZCBhcyBG T1IgQUxMIFRBQkxFUworREVUQUlMOiAgU2tpcCB0YWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJl IGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBOT04gQUxMIFRBQkxFUyBwdWJsaWNh dGlvbnMuCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 OwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKQEAgLTE0NCw2ICsxODUsMTggQEAgQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf bm9wazsKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogCistLSBmYWlsIC0g Y2FuJ3QgYWRkIHNraXAgc2NoZW1hIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3Q7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNjaGVtYSIgaXMgbm90IGRl ZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIFNraXAgdGFibGVzIGZyb20gc2NoZW1h IGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gTk9OIEFMTCBUQUJM RVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGRyb3Agc2tpcCBzY2hlbWEgZnJvbSBz Y2hlbWEgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIERS T1AgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK0VSUk9SOiAgcHVibGljYXRp b24gInRlc3RwdWJfZm9yc2NoZW1hIiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUwor REVUQUlMOiAgU2tpcCB0YWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9w cGVkIGZyb20sIG9yIHNldCBvbiBOT04gQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCistLSBmYWls IC0gY2FuJ3Qgc2V0IHNraXAgc2NoZW1hIHRvIHNjaGVtYSAgcHVibGljYXRpb24KK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0OworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JzY2hlbWEiIGlzIG5v dCBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTCitERVRBSUw6ICBTa2lwIHRhYmxlcyBmcm9tIHNj aGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwg VEFCTEVTIHB1YmxpY2F0aW9ucy4KIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBw Z19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZm9yYWxsdGFibGVzJzsKICAg ICAgICBwdWJuYW1lICAgICAgICB8IHB1YmFsbHRhYmxlcyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0KQEAgLTE2OCw4ICsyMjEsMzQgQEAgUHVibGljYXRpb25zOgogIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEg cm93KQogCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfc2tpcHNjaGVtYSBGT1IgQUxMIFRBQkxFUyBTS0lQ IEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX3NraXBzY2hlbWEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf c2tpcHNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2Vx dWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0 ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1NraXAgdGFibGVzIGZyb20gc2NoZW1hczoKKyAg ICAicHViX3Rlc3QiCisKKy0tIGZhaWwgLSBjYW4ndCBzcGVjaWZ5IHNraXAgc2NoZW1hIGFsb25n IHdpdGggdGFibGUgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRh YmxlX3NraXBzY2hlbWEgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9waywgU0tJUCBBTEwg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK0VSUk9SOiAgU0tJUCBBTEwgVEFCTEVTIElOIFND SEVNQSBjYW4gYmUgc3BlY2lmaWVkIG9ubHkgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbgorTElORSAx OiAuLi5FIHB1Yl90ZXN0LnRlc3RwdWJfbm9waywgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBw dWJfdGVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIGNhbid0IHNwZWNpZnkgc2tpcCBzY2hlbWEgYWxv bmcgd2l0aCBzY2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnNjaGVtYV9za2lwc2NoZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgU0tJ UCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK0VSUk9SOiAgU0tJUCBBTEwgVEFCTEVT IElOIFNDSEVNQSBjYW4gYmUgc3BlY2lmaWVkIG9ubHkgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbgor TElORSAxOiAuLi5CTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgU0tJUCBBTEwgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIGNhbid0IHNwZWNpZnkgb25seSBza2lw IHNjaGVtYSB3aGlsZSBjcmVhdGUgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX3NraXBzY2hlbWEgRk9SIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitF UlJPUjogIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgY2FuIGJlIHNwZWNpZmllZCBvbmx5IHdp dGggQUxMIFRBQkxFUyBvcHRpb24KK0xJTkUgMTogLi4uTiB0ZXN0cHViX3NraXBzY2hlbWEgRk9S IFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIERST1AgVEFCTEUg dGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVz dHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfc2tpcHNjaGVtYTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMg KGEgaW50KTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0 ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDk2YjAyOTQ3ZmEuLmUyMDMxYjRhYzYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTYwLDYgKzYwLDE2IEBAIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIERST1AgQUxMIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3Q7CiAtLSBmYWlsIC0gY2FuJ3Qgc2V0IHNjaGVtYSB0byAnRk9SIEFMTCBUQUJM RVMnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBT RVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiAKKy0tIHNob3VsZCBiZSBhYmxlIHRv IGFkZCBza2lwIHNjaGVtYSB0byAnRk9SIEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBBREQgU0tJUCBBTEwgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCistLSBzaG91bGQgYmUg YWJsZSB0byBzZXQgc2tpcCBzY2hlbWEgdG8gJ0ZPUiBBTEwgVEFCTEVTJyBwdWJsaWNhdGlvbgor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgU0VUIFNLSVAgQUxMIFRBQkxF UyBJTiBTQ0hFTUEgcHVibGljOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKy0tIHNob3Vs ZCBiZSBhYmxlIHRvIGRyb3Agc2tpcCBzY2hlbWEgZnJvbSAnRk9SIEFMTCBUQUJMRVMnIHB1Ymxp Y2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBEUk9QIFNLSVAg QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMK KwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMTsKIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CkBAIC03Myw2ICs4MywxMyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnRhYmxlIERST1AgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKIAorLS0gZmFpbCAtIGNhbid0IGFkZCBza2lwIHNj aGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3J0YWJsZSBBREQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKKy0tIGZh aWwgLSBjYW4ndCBkcm9wIHNraXAgc2NoZW1hIGZyb20gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24K K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBTS0lQIEFMTCBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0OworLS0gZmFpbCAtIGNhbid0IHNldCBza2lwIHNjaGVtYSB0byAn Rk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJs ZSBTRVQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKKwogU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2No ZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CkBAIC04NywxMiArMTA0LDM0IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9yc2NoZW1hIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsK IFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hCiAKKy0tIGZhaWwgLSBjYW4ndCBhZGQgc2tpcCBzY2hl bWEgdG8gc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNj aGVtYSBBREQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKKy0tIGZhaWwgLSBj YW4ndCBkcm9wIHNraXAgc2NoZW1hIGZyb20gc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3Q7CistLSBmYWlsIC0gY2FuJ3Qgc2V0IHNraXAgc2NoZW1hIHRvIHNjaGVtYSAgcHVi bGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBTS0lQIEFM TCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworCiBTRUxFQ1QgcHVibmFtZSwgcHViYWxsdGFi bGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0ZXN0cHViX2ZvcmFsbHRh Ymxlcyc7CiBcZCsgdGVzdHB1Yl90YmwyCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwogCitT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JhbGx0YWJsZXNfc2tpcHNjaGVtYSBGT1IgQUxMIFRBQkxFUyBTS0lQIEFMTCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworXGRS cCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfc2tpcHNjaGVtYQorCistLSBmYWlsIC0gY2FuJ3Qgc3Bl Y2lmeSBza2lwIHNjaGVtYSBhbG9uZyB3aXRoIHRhYmxlIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZV9za2lwc2NoZW1hIEZPUiBUQUJMRSBwdWJfdGVzdC50 ZXN0cHViX25vcGssIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CisKKy0tIGZh aWwgLSBjYW4ndCBzcGVjaWZ5IHNraXAgc2NoZW1hIGFsb25nIHdpdGggc2NoZW1hIHB1YmxpY2F0 aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWFfc2tpcHNjaGVtYSBGT1Ig QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3Q7CisKKy0tIGZhaWwgLSBjYW4ndCBzcGVjaWZ5IG9ubHkgc2tpcCBzY2hlbWEgd2hp bGUgY3JlYXRlIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9za2lwc2No ZW1hIEZPUiBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworCiBEUk9QIFRBQkxF IHRlc3RwdWJfdGJsMjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRl c3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRl c3RwdWJfZm9yYWxsdGFibGVzX3NraXBzY2hlbWE7CiAKIENSRUFURSBUQUJMRSB0ZXN0cHViX3Ri bDMgKGEgaW50KTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRT ICh0ZXN0cHViX3RibDMpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3JlcF9jaGFuZ2VzX3NraXBfc2NoZW1hLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3JlcF9jaGFuZ2VzX3NraXBfc2NoZW1hLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjdhMTZhZDM1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzJfcmVwX2NoYW5nZXNfc2tpcF9zY2hlbWEucGwKQEAgLTAsMCArMSw5NiBAQAor CisjIENvcHlyaWdodCAoYykgMjAyMS0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorCisjIExvZ2ljYWwgcmVwbGljYXRpb24gdGVzdHMgZm9yIHNraXAgc2NoZW1hIHB1 YmxpY2F0aW9ucwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1v cmU7CisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNo ZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2Rl X3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVf c3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgVGVzdCByZXBsaWNhdGlvbiB3aXRoIHB1YmxpY2F0aW9u cyBjcmVhdGVkIHVzaW5nIEZPUiBBTEwgVEFCTEVTIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEK KyMgb3B0aW9uLgorIyBDcmVhdGUgc2NoZW1hcyBhbmQgdGFibGVzIG9uIHB1Ymxpc2hlcgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBTQ0hFTUEgc2NoMSIp OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxF IHNjaDEudGFiMSBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBwdWJsaWMu dGFiMShhIGludCkiKTsKKworIyBDcmVhdGUgc2NoZW1hcyBhbmQgdGFibGVzIG9uIHN1YnNjcmli ZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFNDSEVN QSBzY2gxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFU RSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgcHVibGljLnRhYjEgKGEgaW50KSIpOworCisjIFNl dHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1 Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVt YSBGT1IgQUxMIFRBQkxFUyBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHNjaDEiKTsKKworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1Yl9zY2hlbWEgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNB VElPTiB0YXBfcHViX3NjaGVtYSIKKyk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgndGFwX3N1Yl9zY2hlbWEnKTsKKworIyBBbHNvIHdhaXQgZm9yIGluaXRpYWwgdGFibGUg c3luYyB0byBmaW5pc2gKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0g MCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJywg J3MnKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAk c3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJz Y3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIENoZWNrIHRoZSBzY2hlbWEgdGFibGUg ZGF0YSBkb2VzIG5vdCBzeW5jIGZvciBza2lwIHNjaGVtYXMKK215ICRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4o YSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNr IHRhYmxlc3luYyBpcyBza2lwcGVkIGZvciBza2lwIHNjaGVtYXMnKTsKKworIyBJbnNlcnQgc29t ZSBkYXRhIGludG8gZmV3IHRhYmxlcyBhbmQgdmVyaWZ5IHRoYXQgaW5zZXJ0ZWQgZGF0YSBpcyBu b3QgcmVwbGljYXRlZAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki SU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMoMTEsMjApKSIpOwor Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7CisK KyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3Vs dCwgcXEoMHx8KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CisK KyMgQWx0ZXIgcHVibGljYXRpb24gdG8gc2tpcCBkYXRhIGNoYW5nZXMgaW4gcHVibGljIGFuZCB2 ZXJpZnkgdGhhdCBzdWJzY3JpYmVyIGRvZXMgbm90IGdldAorIyB0aGUgbmV3IHRhYmxlIGRhdGEu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICAgICAiQUxURVIg UFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgYWRkIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg cHVibGljIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICAg ICAiSU5TRVJUIElOVE8gcHVibGljLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxLDEwKSki KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScp OworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBwdWJsaWMudGFiMSIpOworaXMo JHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNrIHJvd3Mgb24gc3Vic2NyaWJlciBjYXRjaHVwJyk7CisK KyMgQWx0ZXIgcHVibGljYXRpb24gdG8gZHJvcCBza2lwIHNjaGVtYSBwdWJsaWMgYW5kIHZlcmlm eSB0aGF0IHN1YnNjcmliZXIgZ2V0cworIyB0aGUgbmV3IHRhYmxlIGRhdGEuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICAgICAiQUxURVIgUFVCTElDQVRJT04g dGFwX3B1Yl9zY2hlbWEgZHJvcCBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYyIpOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAgICAgIklOU0VSVCBJ TlRPIHB1YmxpYy50YWIxIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMoMSwxMCkpIik7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9zY2hlbWEnKTsKKworJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICAgICAiU0VM RUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHB1YmxpYy50YWIxIik7CitpcygkcmVz dWx0LCBxcSgxMHwxfDEwKSwgJ2NoZWNrIHJvd3Mgb24gc3Vic2NyaWJlciBjYXRjaHVwJyk7CisK KyRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcCgn ZmFzdCcpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg ODVjODA4YWY5MC4uNzYyN2I0NjU0NyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIw NjUsNiArMjA2NSw3IEBAIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIFB1YmxpY2F0aW9uUGFydE9w dAogUHVibGljYXRpb25SZWxJbmZvCiBQdWJsaWNhdGlvblNjaGVtYUluZm8KK1B1YmxpY2F0aW9u U2NoSW5mbwogUHVibGljYXRpb25UYWJsZQogUHVsbEZpbHRlcgogUHVsbEZpbHRlck9wcwotLSAK Mi4zMi4wCgo= --00000000000012dca605db1f9a3b--