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 1nWYdc-0007yq-CT for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Mar 2022 07:09:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nWYdb-0001fG-82 for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Mar 2022 07:09:03 +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 1nWYda-0001f7-Ba for pgsql-hackers@lists.postgresql.org; Tue, 22 Mar 2022 07:09:02 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nWYdU-0003fg-Vb for pgsql-hackers@lists.postgresql.org; Tue, 22 Mar 2022 07:09:01 +0000 Received: by mail-ed1-x534.google.com with SMTP id r23so20578102edb.0 for ; Tue, 22 Mar 2022 00:08:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=L5XRnPRB6Gr4MAwI9N9LRyA+OEpB7+/F7pjfu2pHq/M=; b=GMXp4UF67PNn1vFIPxlS+9ZrDpCI3Tk579q2iau1umulNNPGKCsymx6YMnMP8UC+sI ZzG7/I7mg7VDpm1DtNl70JNk/iVMWxhYY76tZAvLLClG5XkNsmEF1YMlTV/hIC9GwMp8 ESLwuYLWR9RIU+TBo2McnYic0crwztaJjurAF/R+O6ngYG5RYxCmNxRK3WNMO1PyOfrp 34jO5Ofnsgn2Gh9R3v2JR52EL4zXkBBxEoSm+yUDj+PyeWC3NfIIJE939CXRsFy3zcv5 MqGZBbgt9gkdmcS/6AttH0fToluebIAk5GZOZXBOMW2TC+4ptyvsvA3wUTr+iNuKX8FB ZMlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=L5XRnPRB6Gr4MAwI9N9LRyA+OEpB7+/F7pjfu2pHq/M=; b=bPIQRAaeYd/NjmzdlXm8a4gbCnPLf9gVtMk/4oyUwsASngo6FMnVbHJpOExWVkDTh1 kXfui+XFmmpDiLxNMs0iZ14iI9ZKI9XdKq4gO8hzm7oYpkXR8g8oq7JCx2OUzTjXqyXj aDPpbwt6DQmVULl7TifE+sciPcMLkUjr+VojISYhBrd2/qjJqSkurg/Vf67qoRApu6Bb IC9jjtWeDPzBElh3qyT5hWt6ObHbO3r5bJr3PGXIHiAvfK1fhVf5TEmaPZmDrEHUa3E4 Pu0GUN+Aa4UO//U0cHWUbsNDVQrGHJmalofcv8HGKAEeLoE6yOja8X2awi/BJJWyKOoG 7fSg== X-Gm-Message-State: AOAM530yHKRfq1hGFoQfhDDdY40WUYjT/RgINJ37bvArzgNsNHoccaGk loW8Aps2msPL4xsorXfDA40eCasO3oT8E9wisYehVnWX8DVn1w== X-Google-Smtp-Source: ABdhPJy0fQKJpmVKi36+5oDD8CV0bdPp3Q5tOqezuu9bbOsoqWszLf8La/qwWJSbd2KSJR7a80kFl/laLIiL+sM2fOI= X-Received: by 2002:a05:6402:440d:b0:412:9e8a:5e51 with SMTP id y13-20020a056402440d00b004129e8a5e51mr27406527eda.362.1647932934694; Tue, 22 Mar 2022 00:08:54 -0700 (PDT) MIME-Version: 1.0 From: vignesh C Date: Tue, 22 Mar 2022 12:38:43 +0530 Message-ID: Subject: Skipping schema changes in publication To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000002fc5ca05dac94982" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002fc5ca05dac94982 Content-Type: text/plain; charset="UTF-8" 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. This feature is for the pg16 version. Thoughts? Regards, Vignesh --0000000000002fc5ca05dac94982 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_l11s8fpu0 RnJvbSAxNTNlMDMzYTc4YWNlNjZiZmJlMWNkMzdkYjJmM2RlNTA2NzQwYmNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAxOCBNYXIgMjAyMiAxMDo0MTozNSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjFd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIG9mIHNjaGVtYS4KCkEgbmV3IG9wdGlvbiAiU0tJ UCBBTEwgVEFCTEVTIElOIFNDSEVNQSIgaW4gQ3JlYXRlL0FsdGVyIFB1YmxpY2F0aW9uIGFsbG93 cwpvbmUgb3IgbW9yZSBza2lwIHNjaGVtYXMgdG8gYmUgc3BlY2lmaWVkLCBwdWJsaXNoZXIgd2ls bCBza2lwIHNlbmRpbmcgdGhlIGRhdGEKb2YgdGhlIHRhYmxlcyBwcmVzZW50IGluIHRoZSBza2lw IHNjaGVtYSB0byB0aGUgc3Vic2NyaWJlci4KClRoZSBuZXcgc3ludGF4IGFsbG93cyBzcGVjaWZ5 aW5nIHNjaGVtYXMuIEZvciBleGFtcGxlOgpDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxM IFRBQkxFUyBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHMxLHMyOwpPUgpBTFRFUiBQVUJMSUNB VElPTiBwdWIxIEFERCBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHMxLHMyOwoKQSBuZXcgY29s dW1uIHBuc2tpcCBpcyBhZGRlZCB0byB0YWJsZSAicGdfcHVibGljYXRpb25fbmFtZXNwYWNlIiwg dG8gbWFpbnRhaW4KdGhlIHNjaGVtYXMgdGhhdCB0aGUgdXNlciB3YW50cyB0byBza2lwIHB1Ymxp c2hpbmcgdGhyb3VnaCB0aGUgcHVibGljYXRpb24uCk1vZGlmaWVkIHRoZSBvdXRwdXQgcGx1Z2lu IChwZ291dHB1dCkgdG8gc2tpcCBwdWJsaXNoaW5nIHRoZSBjaGFuZ2VzIGlmIHRoZQpyZWxhdGlv biBpcyBwYXJ0IG9mIHNraXAgc2NoZW1hIHB1YmxpY2F0aW9uLgoKVXBkYXRlcyBwZ19kdW1wIHRv IGlkZW50aWZ5IGFuZCBkdW1wIHNraXAgc2NoZW1hIHB1YmxpY2F0aW9ucy4gVXBkYXRlcyB0aGUg XGQKZmFtaWx5IG9mIGNvbW1hbmRzIHRvIGRpc3BsYXkgc2tpcCBzY2hlbWEgcHVibGljYXRpb25z IGFuZCBcZFJwKyB2YXJpYW50IHdpbGwKbm93IGRpc3BsYXkgYXNzb2NpYXRlZCBza2lwIHNjaGVt YXMgaWYgYW55LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAg ICAgICB8ICAgOSArKwogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAg ICAgIHwgICA3ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgICAg ICAgfCAgMjggKysrLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAg ICAgIHwgIDI4ICsrKy0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgICAgICAg ICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAg ICAgIHwgIDY2ICsrKysrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jICAgICAgICB8IDEyMyArKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgMTQgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgICAgICAgICAgICAgICAgICAgICB8ICA5OSArKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgIDI0ICstLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAyMiArKystCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgMzMgKysrKy0KIHNyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcF9zb3J0LmMgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDMwICsrKysrCiBzcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKysrCiBzcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgMjUgKystLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAgIHwgIDIwICsrLQogLi4uL2NhdGFs b2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAgfCAgODQgKysrKysrKysrKystCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgNDEgKysrKystCiAuLi4v dC8wMzBfcmVwX2NoYW5nZXNfc2tpcF9zY2hlbWEucGwgICAgICAgICAgfCAgOTYgKysrKysrKysr KysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAg MSArCiAyOCBmaWxlcyBjaGFuZ2VkLCA2NzggaW5zZXJ0aW9ucygrKSwgMTI0IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMF9yZXBfY2hh bmdlc19za2lwX3NjaGVtYS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMmE4Y2QwMjY2NC4uMThlM2Nm ODJhYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTYyODEsNiArNjI4MSwxNSBAQCBTQ1JBTS1TSEEtMjU2 JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBs YWNlYWJsZT4mbAogICAgICAgIFJlZmVyZW5jZSB0byBzY2hlbWEKICAgICAgIDwvcGFyYT48L2Vu dHJ5PgogICAgICA8L3Jvdz4KKworICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5wbnNraXA8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiB0aGUgc2NoZW1hIGlzIHNraXAg c2NoZW1hCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4K ICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNn bWwKaW5kZXggNTU1ZmJkNzQ5Yy4uZTJhNGI4OTIyNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBs aWNhdGlvbi5zZ21sCkBAIC01OTksOSArNTk5LDEwIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJl bW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VS CiAKICAgPHBhcmE+CiAgICBUbyBhZGQgdGFibGVzIHRvIGEgcHVibGljYXRpb24sIHRoZSB1c2Vy IG11c3QgaGF2ZSBvd25lcnNoaXAgcmlnaHRzIG9uIHRoZQotICAgdGFibGUuIFRvIGFkZCBhbGwg dGFibGVzIGluIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9uLCB0aGUgdXNlciBtdXN0IGJlIGEKLSAg IHN1cGVydXNlci4gVG8gY3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHRh YmxlcyBvciBhbGwgdGFibGVzIGluCi0gICBzY2hlbWEgYXV0b21hdGljYWxseSwgdGhlIHVzZXIg bXVzdCBiZSBhIHN1cGVydXNlci4KKyAgIHRhYmxlLiBUbyBhZGQgYWxsIHRhYmxlcyBpbiBzY2hl bWEgb3Igc2tpcCBhbGwgdGFibGVzIGluIHNjaGVtYSB0byBhCisgICBwdWJsaWNhdGlvbiwgdGhl IHVzZXIgbXVzdCBiZSBhIHN1cGVydXNlci4gVG8gY3JlYXRlIGEgcHVibGljYXRpb24gdGhhdAor ICAgcHVibGlzaGVzIGFsbCB0YWJsZXMgb3IgYWxsIHRhYmxlcyBpbiBzY2hlbWEgYXV0b21hdGlj YWxseSwgdGhlIHVzZXIgbXVzdCBiZQorICAgYSBzdXBlcnVzZXIuCiAgIDwvcGFyYT4KIAogICA8 cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCAzMmI3NWY2 Yzc4Li44NDY2ZTk0YWIwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1Ymxp Y2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21s CkBAIC0zMSw3ICszMSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiA8cGhyYXNlPndoZXJl IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxh Y2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsg V0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFj ZWFibGU+ICkgXSBbLCAuLi4gXQotICAgIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5U X1NDSEVNQSB9IFssIC4uLiBdCisgICAgW1NLSVBdIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBD VVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+ CiAKQEAgLTcxLDEyICs3MSwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICA8cGFyYT4K ICAgIFlvdSBtdXN0IG93biB0aGUgcHVibGljYXRpb24gdG8gdXNlIDxjb21tYW5kPkFMVEVSIFBV QkxJQ0FUSU9OPC9jb21tYW5kPi4KICAgIEFkZGluZyBhIHRhYmxlIHRvIGEgcHVibGljYXRpb24g YWRkaXRpb25hbGx5IHJlcXVpcmVzIG93bmluZyB0aGF0IHRhYmxlLgotICAgVGhlIDxsaXRlcmFs PkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gYW5kCi0gICA8bGl0ZXJhbD5TRVQg QUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gcmVxdWlyZXMg dGhlCi0gICBpbnZva2luZyB1c2VyIHRvIGJlIGEgc3VwZXJ1c2VyLiAgVG8gYWx0ZXIgdGhlIG93 bmVyLCB5b3UgbXVzdCBhbHNvIGJlIGEKKyAgIFRoZSA8bGl0ZXJhbD5BREQgW1NLSVBdIEFMTCBU QUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBhbmQKKyAgIDxsaXRlcmFsPlNFVCBbU0tJUF0gQUxM IFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gcmVxdWlyZXMKKyAg IHRoZSBpbnZva2luZyB1c2VyIHRvIGJlIGEgc3VwZXJ1c2VyLiAgVG8gYWx0ZXIgdGhlIG93bmVy LCB5b3UgbXVzdCBhbHNvIGJlIGEKICAgIGRpcmVjdCBvciBpbmRpcmVjdCBtZW1iZXIgb2YgdGhl IG5ldyBvd25pbmcgcm9sZS4gVGhlIG5ldyBvd25lciBtdXN0IGhhdmUKICAgIDxsaXRlcmFsPkNS RUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBkYXRhYmFzZS4gIEFsc28sIHRoZSBuZXcg b3duZXIKLSAgIG9mIGEgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yIDxsaXRl cmFsPkZPUiBBTEwgVEFCTEVTIElOCisgICBvZiBhIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5GT1IgW1NLSVBdIEFMTCBUQUJMRVMgSU4KICAgIFNDSEVNQTwv bGl0ZXJhbD4gcHVibGljYXRpb24gbXVzdCBiZSBhIHN1cGVydXNlci4gSG93ZXZlciwgYSBzdXBl cnVzZXIgY2FuCiAgICBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiBhIHB1YmxpY2F0aW9uIHJlZ2Fy ZGxlc3Mgb2YgdGhlc2UgcmVzdHJpY3Rpb25zLgogICA8L3BhcmE+CkBAIC04OCw2ICs4OCwxNCBA QCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgYWRkaW5nL3NldHRpbmcgYSB0YWJsZSB0byBh IHB1YmxpY2F0aW9uIHRoYXQgYWxyZWFkeSBoYXMgYSB0YWJsZSdzIHNjaGVtYSBhcwogICAgcGFy dCBvZiB0aGUgc3BlY2lmaWVkIHNjaGVtYSBpcyBub3Qgc3VwcG9ydGVkLgogICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBUaGUgPGxpdGVyYWw+QUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8 L2xpdGVyYWw+IGFuZAorICAgPGxpdGVyYWw+U0VUIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8 L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZpZWQgb25seSBmb3IKKyAgIDxsaXRlcmFsPkZPUiBBTEwg VEFCTEVTPC9saXRlcmFsPiBwdWJsaWNhdGlvbi4gSXQgaXMgbm90IHN1cHBvcnRlZCBmb3IKKyAg IDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSA8L2xpdGVyYWw+IHB1YmxpY2F0aW9u IGFuZAorICAgPGxpdGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBwdWJsaWNhdGlvbi4KKyAgPC9w YXJhPgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CkBAIC0xOTUsNiArMjAzLDE2IEBAIEFM VEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBBTEwgVEFCTEVTIElOIFNDSEVN QSBtYXJrZXRpbmcsIHNhbGVzOwogQUxURVIgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNh dGlvbiBBREQgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBBTEwgVEFCTEVTIElOIFNDSEVNQSBw cm9kdWN0aW9uOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAg IEFkZCBza2lwIHNjaGVtYXMgPHN0cnVjdG5hbWU+c2FsZXNfanVuZTwvc3RydWN0bmFtZT4gYW5k CisgICA8c3RydWN0bmFtZT5zYWxlc19qdWx5PC9zdHJ1Y3RuYW1lPiB0byB0aGUgcHVibGljYXRp b24KKyAgIDxzdHJ1Y3RuYW1lPm15cHVibGljYXRpb248L3N0cnVjdG5hbWU+OgorPHByb2dyYW1s aXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBBREQgU0tJUCBBTEwgVEFC TEVTIElOIFNDSEVNQSBzYWxlc19qdW5lLCBzYWxlc19qdWx5OworPC9wcm9ncmFtbGlzdGluZz4K KyAgPC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDQ5NzliOWI2NDYuLjAzZDhlODJlZWMgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjIsNyArMjIsNyBA QCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+ CiBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPgotICAgIFsgRk9SIEFMTCBUQUJMRVMKKyAgICBbIEZPUiBBTEwgVEFCTEVT IFtTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9XQogICAgICAg fCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwv cmVwbGFjZWFibGU+IFssIC4uLiBdIF0KICAgICBbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkg XQogCkBAIC0xMTcsNiArMTE3LDIzIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFs PlNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBNYXJrcyB0aGUgcHVibGljYXRpb24gYXMgb25lIHRoYXQg c2tpcHMgcmVwbGljYXRpbmcgY2hhbmdlcyBmb3IgYWxsCisgICAgICB0YWJsZXMgaW4gdGhlIHNw ZWNpZmllZCBsaXN0IG9mIHNjaGVtYXMuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAg ICAgIDxsaXRlcmFsPlNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGNhbiBiZSBz cGVjaWZpZWQgb25seSBmb3IKKyAgICAgIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFs PiBwdWJsaWNhdGlvbi4gSXQgaXMgbm90IHN1cHBvcnRlZCBmb3IKKyAgICAgIDxsaXRlcmFsPkZP UiBBTEwgVEFCTEVTIElOIFNDSEVNQSA8L2xpdGVyYWw+IHB1YmxpY2F0aW9uIGFuZAorICAgICAg PGxpdGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBwdWJsaWNhdGlvbi4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4K ICAgICA8dGVybT48bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTMyNyw2ICszNDQsMTUgQEAgQ1JFQVRFIFBVQkxJQ0FU SU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gRk9SIFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cywg QUxMIFRBQkwKICAgIDxzdHJ1Y3RuYW1lPnNhbGVzPC9zdHJ1Y3RuYW1lPjoKIDxwcm9ncmFtbGlz dGluZz4KIENSRUFURSBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBGT1IgQUxMIFRBQkxF UyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFs bCBjaGFuZ2VzIGluIGFsbCB0aGUgdGFibGVzIGV4Y2VwdCBmb3IKKyAgIHRoZSBjaGFuZ2VzIG9m IGFsbCB0aGUgdGFibGVzIHByZXNlbnQgaW4gdGhlIHNjaGVtYQorICAgPHN0cnVjdG5hbWU+bWFy a2V0aW5nPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+c2FsZXM8L3N0cnVjdG5hbWU+Ogor PHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gRk9SIEFM TCBUQUJMRSBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3By b2dyYW1saXN0aW5nPjwvcGFyYT4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwK aW5kZXggY2FhYmIwNmM1My4uNGJhNDE0MDkzMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApAQCAt MTg1Niw4ICsxODU2LDkgQEAgdGVzdGRiPSZndDsKICAgICAgICAgSWYgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxlPiBpcwogICAgICAgICBzcGVjaWZp ZWQsIG9ubHkgdGhvc2UgcHVibGljYXRpb25zIHdob3NlIG5hbWVzIG1hdGNoIHRoZSBwYXR0ZXJu IGFyZQogICAgICAgICBsaXN0ZWQuCi0gICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlz IGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMgYW5kCi0gICAgICAgIHNj aGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRpb24gYXJlIHNob3duIGFzIHdlbGwu CisgICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21t YW5kIG5hbWUsIHRoZSB0YWJsZXMsCisgICAgICAgIHNjaGVtYXMgYW5kIHRoZSBza2lwIHNjaGVt YSBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24KKyAgICAgICAgYXMg d2VsbC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJs aXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNzg5Yjg5NWRi OC4uNzExZGRhODY0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMjg3 LDcgKzI4Nyw4IEBAIEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKICAqIGFuY2VzdG9yIGlzIGF0IHRoZSBl bmQgb2YgdGhlIGxpc3QuCiAgKi8KIE9pZAotR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlv bihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwpCitHZXRU b3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywK KwkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJTGlz dENlbGwgICAqbGM7CiAJT2lkCQkJdG9wbW9zdF9yZWxpZCA9IEludmFsaWRPaWQ7CkBAIC0zMDEs NiArMzAyLDcgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBM aXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAkJT2lkCQkJYW5jZXN0b3IgPSBs Zmlyc3Rfb2lkKGxjKTsKIAkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRp b25zKGFuY2VzdG9yKTsKIAkJTGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5JTDsKKwkJTGlzdCAg ICAgICAqYXNraXBzY2hlbWFQdWJpZHMgPSBOSUw7CiAKIAkJbGV2ZWwrKzsKIApAQCAtMzEzLDgg KzMxNSwxMCBAQCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExp c3QgKmFuY2VzdG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAogCQl9CiAJCWVsc2UKIAkJewotCQkJ YXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShh bmNlc3RvcikpOwotCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhc2NoZW1hUHViaWRzLCBwdWJvaWQp KQorCQkJYXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVz cGFjZShhbmNlc3RvciksIGZhbHNlKTsKKwkJCWFza2lwc2NoZW1hUHViaWRzID0gR2V0U2NoZW1h UHVibGljYXRpb25zKGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKSwgdHJ1ZSk7CisJCQlpZiAo bGlzdF9tZW1iZXJfb2lkKGFzY2hlbWFQdWJpZHMsIHB1Ym9pZCkgfHwKKwkJCQkocHViYWxsdGFi bGVzICYmICFsaXN0X21lbWJlcl9vaWQoYXNraXBzY2hlbWFQdWJpZHMsIHB1Ym9pZCkpKQogCQkJ ewogCQkJCXRvcG1vc3RfcmVsaWQgPSBhbmNlc3RvcjsKIApAQCAtNDM2LDEzICs0NDAsMTQgQEAg cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpw cmksCiAgKiBJbnNlcnQgbmV3IHB1YmxpY2F0aW9uIC8gc2NoZW1hIG1hcHBpbmcuCiAgKi8KIE9i amVjdEFkZHJlc3MKLXB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1h aWQsIGJvb2wgaWZfbm90X2V4aXN0cykKK3B1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblNjaEluZm8gKnB1YnNjaCwgYm9vbCBpZl9ub3RfZXhpc3RzKQogewogCVJl bGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVwOwogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVi bGljYXRpb25fbmFtZXNwYWNlXTsKIAlib29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlvbl9u YW1lc3BhY2VdOwogCU9pZAkJCXBzc2NoaWQ7CisJT2lkCQkJc2NoZW1haWQgPSBwdWJzY2gtPm9p ZDsKIAlQdWJsaWNhdGlvbiAqcHViID0gR2V0UHVibGljYXRpb24ocHViaWQpOwogCUxpc3QJICAg KnNjaGVtYVJlbHMgPSBOSUw7CiAJT2JqZWN0QWRkcmVzcyBteXNlbGYsCkBAIC00ODMsNiArNDg4 LDggQEAgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwgYm9v bCBpZl9ub3RfZXhpc3RzKQogCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKTsKIAl2YWx1ZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5uc3BpZCAtIDFdID0KIAkJT2JqZWN0SWRHZXRE YXR1bShzY2hlbWFpZCk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNlX3Bu c2tpcCAtIDFdID0KKwkJQm9vbEdldERhdHVtKHB1YnNjaC0+c2tpcCk7CiAKIAl0dXAgPSBoZWFw X2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKIApAQCAt NjMwLDEzICs2MzcsMjMgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiByb290 IHBhcnRpdGlvbmVkIHRhYmxlcy4KICAqLwogTGlzdCAqCi1HZXRBbGxUYWJsZXNQdWJsaWNhdGlv blJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpCitHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsIGJvb2wgcHVidmlhcm9vdCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsK IAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0 dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqc2tpcHNjaGVtYWlkbGlz dCA9IE5JTDsKKwlMaXN0CSAgICpwdWJzY2hlbWFsaXN0ID0gR2V0UHVibGljYXRpb25TY2hlbWFz KHB1YmlkKTsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJZm9yZWFjaChjZWxsLCBwdWJzY2hlbWFs aXN0KQorCXsKKwkJUHVibGljYXRpb25TY2hJbmZvICpwdWJzY2ggPSAoUHVibGljYXRpb25TY2hJ bmZvICopIGxmaXJzdChjZWxsKTsKKworCQlza2lwc2NoZW1haWRsaXN0ID0gbGFwcGVuZF9vaWQo cmVzdWx0LCBwdWJzY2gtPm9pZCk7CisJfQogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0 aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtNjUxLDkgKzY2OCwxMSBAQCBH ZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpCiAJewogCQlG b3JtX3BnX2NsYXNzIHJlbEZvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsK IAkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CisJCU9pZAkJCXNjaGlkID0gZ2V0X3JlbF9u YW1lc3BhY2UocmVsaWQpOwogCiAJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVs Rm9ybSkgJiYKLQkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkpCisJ CQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpICYmCisJCQkhbGlzdF9t ZW1iZXJfb2lkKHNraXBzY2hlbWFpZGxpc3QsIHNjaGlkKSkKIAkJCXJlc3VsdCA9IGxhcHBlbmRf b2lkKHJlc3VsdCwgcmVsaWQpOwogCX0KIApAQCAtNjcyLDkgKzY5MSwxMSBAQCBHZXRBbGxUYWJs ZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpCiAJCXsKIAkJCUZvcm1fcGdf Y2xhc3MgcmVsRm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOwogCQkJT2lk CQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CisJCQlPaWQJCQlzY2hpZCA9IGdldF9yZWxfbmFtZXNw YWNlKHJlbGlkKTsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3Jt KSAmJgotCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNw YXJ0aXRpb24gJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKHNraXBzY2hlbWFpZGxpc3QsIHNjaGlk KSkKIAkJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC03 MTMsMTAgKzczNCwxNCBAQCBHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKQogCXdoaWxl IChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQogCXsKIAkJ Rm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcHVic2NoOworCQlQdWJsaWNhdGlvblNjaElu Zm8gKnNjaGluZm8gPSBtYWtlTm9kZShQdWJsaWNhdGlvblNjaEluZm8pOworCiAKIAkJcHVic2No ID0gKEZvcm1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNlKSBHRVRTVFJVQ1QodHVwKTsKKwkJc2No aW5mby0+b2lkID0gcHVic2NoLT5wbm5zcGlkOworCQlzY2hpbmZvLT5za2lwID0gcHVic2NoLT5w bnNraXA7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJzY2gtPnBubnNwaWQp OworCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgc2NoaW5mbyk7CiAJfQogCiAJc3lzdGFibGVf ZW5kc2NhbihzY2FuKTsKQEAgLTcyOSw3ICs3NTQsNyBAQCBHZXRQdWJsaWNhdGlvblNjaGVtYXMo T2lkIHB1YmlkKQogICogR2V0cyB0aGUgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGFzc29jaWF0 ZWQgd2l0aCBhIHNwZWNpZmllZCBzY2hlbWEuCiAgKi8KIExpc3QgKgotR2V0U2NoZW1hUHVibGlj YXRpb25zKE9pZCBzY2hlbWFpZCkKK0dldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQs IGJvb2wgc2tpcHB1YikKIHsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAq cHVic2NobGlzdDsKQEAgLTc0Myw3ICs3NjgsOCBAQCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lk IHNjaGVtYWlkKQogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnNjaGxpc3QtPm1lbWJlcnNbaV0tPnR1 cGxlOwogCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UpIEdF VFNUUlVDVCh0dXApKS0+cG5wdWJpZDsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQs IHB1YmlkKTsKKwkJaWYgKHNraXBwdWIgPT0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFj ZSkgR0VUU1RSVUNUKHR1cCkpLT5wbnNraXApCisJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1 bHQsIHB1YmlkKTsKIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0KHB1YnNjaGxpc3QpOwpAQCAt ODEyLDcgKzgzOCw4IEBAIEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFp ZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogICogcHVibGljYXRpb24uCiAgKi8K IExpc3QgKgotR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCitHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJ IGJvb2wgYnNraXApCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3QJICAgKnB1YnNj aGVtYWxpc3QgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOwpAQCAtODIwLDExICs4NDcs MTYgQEAgR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNh dGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAKIAlmb3JlYWNoKGNlbGwsIHB1YnNjaGVtYWxpc3Qp CiAJewotCQlPaWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQoY2VsbCk7CisJCVB1YmxpY2F0aW9u U2NoSW5mbyAqcHVic2NoID0gKFB1YmxpY2F0aW9uU2NoSW5mbyAqKSBsZmlyc3QoY2VsbCk7CiAJ CUxpc3QJICAgKnNjaGVtYVJlbHMgPSBOSUw7CiAKLQkJc2NoZW1hUmVscyA9IEdldFNjaGVtYVB1 YmxpY2F0aW9uUmVsYXRpb25zKHNjaGVtYWlkLCBwdWJfcGFydG9wdCk7Ci0JCXJlc3VsdCA9IGxp c3RfY29uY2F0KHJlc3VsdCwgc2NoZW1hUmVscyk7CisKKwkJLyogU2tpcCB0aGUgc2tpcCBwdWJs aWNhdGlvbiBzY2hlbWFzIGlmIGJza2lwIGlzIHRydWUgKi8KKwkJaWYgKGJza2lwICYmICFwdWJz Y2gtPnNraXApCisJCXsKKwkJCXNjaGVtYVJlbHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0 aW9ucyhwdWJzY2gtPm9pZCwgcHViX3BhcnRvcHQpOworCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQo cmVzdWx0LCBzY2hlbWFSZWxzKTsKKwkJfQogCX0KIAogCXJldHVybiByZXN1bHQ7CkBAIC05NTgs NyArOTkwLDggQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQog CQkgKi8KIAkJaWYgKHB1YmxpY2F0aW9uLT5hbGx0YWJsZXMpCiAJCXsKLQkJCXRhYmxlcyA9IEdl dEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLT5wdWJ2aWFyb290KTsK KwkJCXRhYmxlcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9u LT5vaWQsCisJCQkJCQkJCQkJCQkJICBwdWJsaWNhdGlvbi0+cHVidmlhcm9vdCk7CiAJCX0KIAkJ ZWxzZQogCQl7CkBAIC05NzIsNyArMTAwNSw4IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMo UEdfRlVOQ1RJT05fQVJHUykKIAkJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkJCQlwdWJsaWNhdGlv bi0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgot CQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCQkJCQkJCQkJCQkJCVBV QkxJQ0FUSU9OX1BBUlRfTEVBRiwKKwkJCQkJCQkJCQkJCQkJCXRydWUpOwogCQkJdGFibGVzID0g bGlzdF9jb25jYXRfdW5pcXVlX29pZChyZWxpZHMsIHNjaGVtYXJlbGlkcyk7CiAKIAkJCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDFhYWQyZTc2OWMuLjhmZDYz YzAxYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xNzcsOCAr MTc3LDggQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0 LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAKIAlmb3JlYWNoKGNlbGwsIHB1Ym9ianNwZWNfbGlzdCkK IAl7Ci0JCU9pZAkJCXNjaGVtYWlkOwogCQlMaXN0CSAgICpzZWFyY2hfcGF0aDsKKwkJUHVibGlj YXRpb25TY2hJbmZvICpwdWJzY2ggPSBtYWtlTm9kZShQdWJsaWNhdGlvblNjaEluZm8pOwogCiAJ CXB1Ym9iaiA9IChQdWJsaWNhdGlvbk9ialNwZWMgKikgbGZpcnN0KGNlbGwpOwogCkBAIC0xODgs MTAgKzE4OCwxMSBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVj X2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1 Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJM RVNfSU5fU0NIRU1BOgotCQkJCXNjaGVtYWlkID0gZ2V0X25hbWVzcGFjZV9vaWQocHVib2JqLT5u YW1lLCBmYWxzZSk7CisJCQkJcHVic2NoLT5vaWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmot Pm5hbWUsIGZhbHNlKTsKKwkJCQlwdWJzY2gtPnNraXAgPSBwdWJvYmotPnNraXA7CiAKIAkJCQkv KiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICov Ci0JCQkJKnNjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCpzY2hlbWFzLCBzY2hlbWFp ZCk7CisJCQkJKnNjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWUoKnNjaGVtYXMsIHB1YnNjaCk7 CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1B OgogCQkJCXNlYXJjaF9wYXRoID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOwpAQCAtMjAwLDEx ICsyMDEsMTEgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19s aXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9TQ0hFTUEpLAogCQkJCQkJCWVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIGZv ciBDVVJSRU5UX1NDSEVNQSIpKTsKIAotCQkJCXNjaGVtYWlkID0gbGluaXRpYWxfb2lkKHNlYXJj aF9wYXRoKTsKKwkJCQlwdWJzY2gtPm9pZCA9IGxpbml0aWFsX29pZChzZWFyY2hfcGF0aCk7CiAJ CQkJbGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRl cyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KLQkJCQkqc2NoZW1hcyA9IGxpc3Rf YXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKKwkJCQkqc2NoZW1hcyA9IGxp c3RfYXBwZW5kX3VuaXF1ZSgqc2NoZW1hcywgcHVic2NoKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1 bHQ6CiAJCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwpAQCAtMjMwLDI0ICsyMzEsMjkgQEAgQ2hl Y2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihMaXN0ICpyZWxzLCBMaXN0ICpzY2hl bWFpZGxpc3QsCiAJCVJlbGF0aW9uCXJlbCA9IHB1Yl9yZWwtPnJlbGF0aW9uOwogCQlPaWQJCQly ZWxTY2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCk7CiAKLQkJaWYgKGxpc3RfbWVt YmVyX29pZChzY2hlbWFpZGxpc3QsIHJlbFNjaGVtYUlkKSkKKwkJZm9yZWFjaChsYywgc2NoZW1h aWRsaXN0KQogCQl7Ci0JCQlpZiAoY2hlY2tvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxF U19JTl9TQ0hFTUEpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJCQllcnJtc2coImNhbm5vdCBhZGQgc2NoZW1h IFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQkJICAgZ2V0X25hbWVzcGFjZV9uYW1lKHJl bFNjaGVtYUlkKSksCi0JCQkJCQllcnJkZXRhaWwoIlRhYmxlIFwiJXNcIiBpbiBzY2hlbWEgXCIl c1wiIGlzIGFscmVhZHkgcGFydCBvZiB0aGUgcHVibGljYXRpb24sIGFkZGluZyB0aGUgc2FtZSBz Y2hlbWEgaXMgbm90IHN1cHBvcnRlZC4iLAotCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCksCi0JCQkJCQkJCSAgZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSkpOwot CQkJZWxzZSBpZiAoY2hlY2tvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFKQotCQkJCWVy ZXBvcnQoRVJST1IsCi0JCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAotCQkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXMuJXNcIiB0byBwdWJs aWNhdGlvbiIsCi0JCQkJCQkJICAgZ2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSwKLQkJ CQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKLQkJCQkJCWVycmRldGFpbCgi VGFibGUncyBzY2hlbWEgXCIlc1wiIGlzIGFscmVhZHkgcGFydCBvZiB0aGUgcHVibGljYXRpb24g b3IgcGFydCBvZiB0aGUgc3BlY2lmaWVkIHNjaGVtYSBsaXN0LiIsCi0JCQkJCQkJCSAgZ2V0X25h bWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSkpOworCQkJUHVibGljYXRpb25TY2hJbmZvICpwdWJf c2NoID0gKFB1YmxpY2F0aW9uU2NoSW5mbyAqKSBsZmlyc3QobGMpOworCisJCQlpZiAocHViX3Nj aC0+b2lkID09IHJlbFNjaGVtYUlkKQorCQkJeworCQkJCWlmIChjaGVja29ianR5cGUgPT0gUFVC TElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCWVycm1z ZygiY2Fubm90IGFkZCBzY2hlbWEgXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKKwkJCQkJCQkJICAg Z2V0X25hbWVzcGFjZV9uYW1lKHJlbFNjaGVtYUlkKSksCisJCQkJCQkJZXJyZGV0YWlsKCJUYWJs ZSBcIiVzXCIgaW4gc2NoZW1hIFwiJXNcIiBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0 aW9uLCBhZGRpbmcgdGhlIHNhbWUgc2NoZW1hIGlzIG5vdCBzdXBwb3J0ZWQuIiwKKwkJCQkJCQkJ CSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJCSAgZ2V0X25hbWVzcGFj ZV9uYW1lKHJlbFNjaGVtYUlkKSkpOworCQkJCWVsc2UgaWYgKGNoZWNrb2JqdHlwZSA9PSBQVUJM SUNBVElPTk9CSl9UQUJMRSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCWVycm1zZygiY2Fubm90IGFk ZCByZWxhdGlvbiBcIiVzLiVzXCIgdG8gcHVibGljYXRpb24iLAorCQkJCQkJCQkgICBnZXRfbmFt ZXNwYWNlX25hbWUocmVsU2NoZW1hSWQpLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSwKKwkJCQkJCQllcnJkZXRhaWwoIlRhYmxlJ3Mgc2NoZW1hIFwiJXNcIiBpcyBh bHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9yIHBhcnQgb2YgdGhlIHNwZWNpZmllZCBz Y2hlbWEgbGlzdC4iLAorCQkJCQkJCQkJICBnZXRfbmFtZXNwYWNlX25hbWUocmVsU2NoZW1hSWQp KSk7CisJCQl9CiAJCX0KIAl9CiB9CkBAIC0yOTcsNyArMzAzLDcgQEAgY29udGFpbl9pbnZhbGlk X3JmY29sdW1uX3dhbGtlcihOb2RlICpub2RlLCByZl9jb250ZXh0ICpjb250ZXh0KQogICovCiBi b29sCiBjb250YWluX2ludmFsaWRfcmZjb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlv biwgTGlzdCAqYW5jZXN0b3JzLAotCQkJCQkJIGJvb2wgcHVidmlhcm9vdCkKKwkJCQkJCSBib29s IHB1YnZpYXJvb3QsIGJvb2wgcHViYWxsdGFibGVzKQogewogCUhlYXBUdXBsZQlyZnR1cGxlOwog CU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CkBAIC0zMjQsNyArMzMw LDggQEAgY29udGFpbl9pbnZhbGlkX3JmY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRp b24sIExpc3QgKmFuY2VzdG9ycywKIAlpZiAocHVidmlhcm9vdCAmJiByZWxhdGlvbi0+cmRfcmVs LT5yZWxpc3BhcnRpdGlvbikKIAl7CiAJCXB1Ymxpc2hfYXNfcmVsaWQKLQkJCT0gR2V0VG9wTW9z dEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMKTsKKwkJCT0gR2V0 VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMLAorCQkJ CQkJCQkJCQkgIHB1YmFsbHRhYmxlcyk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlkKHB1Ymxpc2hfYXNf cmVsaWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtNjk3LDE4ICs3MDQsMjAg QEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlv blN0bXQgKnN0bXQpCiAJLyogTWFrZSB0aGUgY2hhbmdlcyB2aXNpYmxlLiAqLwogCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CiAKKwlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5w dWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7 CisKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlpZiAo c3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJeworCQlBc3NlcnQoIXJlbGF0aW9ucyk7CisKIAkJLyog SW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4g Ki8KIAkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwoKTsKIAl9CiAJZWxzZQogCXsKLQkJT2Jq ZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRp b25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKLQotCQkvKiBGT1IgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCisJCS8qIEZPUiBbU0tJUF0gQUxMIFRBQkxF UyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCiAJCWlmIChsaXN0X2xlbmd0aChzY2hl bWFpZGxpc3QpID4gMCAmJiAhc3VwZXJ1c2VyKCkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQll cnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCkBAIC03MjgsMTYgKzczNywx NiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1 ZSwgTlVMTCk7CiAJCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKIAkJfQorCX0KIAotCQlpZiAobGlz dF9sZW5ndGgoc2NoZW1haWRsaXN0KSA+IDApCi0JCXsKLQkJCS8qCi0JCQkgKiBTY2hlbWEgbG9j ayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHRvIHByZXZlbnQKLQkJ CSAqIGNvbmN1cnJlbnQgc2NoZW1hIGRlbGV0aW9uLgotCQkJICovCi0JCQlMb2NrU2NoZW1hTGlz dChzY2hlbWFpZGxpc3QpOwotCQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1Ym9pZCwgc2NoZW1h aWRsaXN0LCB0cnVlLCBOVUxMKTsKLQkJfQorCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3Qp ID4gMCkKKwl7CisJCS8qCisJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1Ymxp Y2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAorCQkgKiBjb25jdXJyZW50IHNjaGVtYSBkZWxl dGlvbi4KKwkJICovCisJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7CisJCVB1YmxpY2F0 aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7CiAJfQogCiAJ dGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKQEAgLTkwNiw3ICs5MTUsOCBAQCBB bHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAogCQl9CiAKIAkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGlj YXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9Q QVJUX0FMTCk7CisJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfQUxMLAorCQkJCQkJCQkJ CQkJCQlmYWxzZSk7CiAJCXJlbGlkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocmVsaWRzLCBz Y2hlbWFyZWxpZHMpOwogCiAJCUludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMocmVsaWRzKTsKQEAg LTk3MCw3ICs5ODAsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkgKiBDaGVjayBpZiB0aGUgcmVsYXRpb24gaXMg bWVtYmVyIG9mIHRoZSBleGlzdGluZyBzY2hlbWEgaW4gdGhlCiAJCSAqIHB1YmxpY2F0aW9uIG9y IG1lbWJlciBvZiB0aGUgc2NoZW1hIGxpc3Qgc3BlY2lmaWVkLgogCQkgKi8KLQkJc2NoZW1hcyA9 IGxpc3RfY29uY2F0X2NvcHkoc2NoZW1haWRsaXN0LCBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHVi aWQpKTsKKwkJc2NoZW1hcyA9IGxpc3RfY29uY2F0KHNjaGVtYWlkbGlzdCwgR2V0UHVibGljYXRp b25TY2hlbWFzKHB1YmlkKSk7CiAJCUNoZWNrT2JqU2NoZW1hTm90QWxyZWFkeUluUHVibGljYXRp b24ocmVscywgc2NoZW1hcywKIAkJCQkJCQkJCQkJICBQVUJMSUNBVElPTk9CSl9UQUJMRSk7CiAK QEAgLTExMjQsNyArMTEzNCw3IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQlMaXN0CSAgICpkZWxzY2hlbWFzID0gTklMOwogCiAJCS8qIElk ZW50aWZ5IHdoaWNoIHNjaGVtYXMgc2hvdWxkIGJlIGRyb3BwZWQgKi8KLQkJZGVsc2NoZW1hcyA9 IGxpc3RfZGlmZmVyZW5jZV9vaWQob2xkc2NoZW1haWRzLCBzY2hlbWFpZGxpc3QpOworCQlkZWxz Y2hlbWFzID0gbGlzdF9kaWZmZXJlbmNlKG9sZHNjaGVtYWlkcywgc2NoZW1haWRsaXN0KTsKIAog CQkvKgogCQkgKiBTY2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBh bHRlcmVkIHRvIHByZXZlbnQKQEAgLTExNTIsNiArMTE2MiwyMCBAQCBDaGVja0FsdGVyUHVibGlj YXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJCSAg TGlzdCAqdGFibGVzLCBMaXN0ICpzY2hlbWFpZGxpc3QpCiB7CiAJRm9ybV9wZ19wdWJsaWNhdGlv biBwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCUxpc3RD ZWxsICAgKmxjOworCisJYm9vbAkJbm9uc2tpcHNjaGVtYSA9IGZhbHNlOworCWJvb2wJCXNraXBz Y2hlbWEgPSBmYWxzZTsKKworCWZvcmVhY2gobGMsIHNjaGVtYWlkbGlzdCkKKwl7CisJCVB1Ymxp Y2F0aW9uU2NoSW5mbyAqcHViX3NjaCA9IChQdWJsaWNhdGlvblNjaEluZm8gKikgbGZpcnN0KGxj KTsKKworCQlpZiAoIXB1Yl9zY2gtPnNraXApCisJCQlub25za2lwc2NoZW1hID0gdHJ1ZTsKKwkJ ZWxzZQorCQkJc2tpcHNjaGVtYSA9IHRydWU7CisJfQogCiAJaWYgKChzdG10LT5hY3Rpb24gPT0g QVBfQWRkT2JqZWN0cyB8fCBzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykgJiYKIAkJc2No ZW1haWRsaXN0ICYmICFzdXBlcnVzZXIoKSkKQEAgLTExNjMsMTMgKzExODcsMjAgQEAgQ2hlY2tB bHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVw LAogCSAqIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1hbmlwdWxhdGUgdGhlIHB1Ymxp Y2F0aW9uIHRhYmxlcyBpbgogCSAqIHNjaGVtYQogCSAqLwotCWlmIChzY2hlbWFpZGxpc3QgJiYg cHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlmIChub25za2lwc2NoZW1hICYmIHB1YmZvcm0tPnB1 YmFsbHRhYmxlcykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJwdWJsaWNhdGlvbiBc IiVzXCIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUyIsCiAJCQkJCQlOYW1lU3RyKHB1YmZv cm0tPnB1Ym5hbWUpKSwKIAkJCQkgZXJyZGV0YWlsKCJUYWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90 IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxMIFRBQkxFUyBwdWJs aWNhdGlvbnMuIikpKTsKIAorCWlmIChza2lwc2NoZW1hICYmICFwdWJmb3JtLT5wdWJhbGx0YWJs ZXMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGlz IG5vdCBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIiwKKwkJCQkJCU5hbWVTdHIocHViZm9ybS0+ cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNraXAgdGFibGVzIGZyb20gc2NoZW1hIGNhbm5v dCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gTk9OIEFMTCBUQUJMRVMgcHVi bGljYXRpb25zLiIpKSk7CisKIAkvKiBDaGVjayB0aGF0IHVzZXIgaXMgYWxsb3dlZCB0byBtYW5p cHVsYXRlIHRoZSBwdWJsaWNhdGlvbiB0YWJsZXMuICovCiAJaWYgKHRhYmxlcyAmJiBwdWJmb3Jt LT5wdWJhbGx0YWJsZXMpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTQzLDcgKzE1NzQsOCBAQCBM b2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KQogCiAJZm9yZWFjaChsYywgc2NoZW1hbGlz dCkKIAl7Ci0JCU9pZAkJCXNjaGVtYWlkID0gbGZpcnN0X29pZChsYyk7CisJCVB1YmxpY2F0aW9u U2NoSW5mbyAqcHVic2NoID0gKFB1YmxpY2F0aW9uU2NoSW5mbyAqKSBsZmlyc3QobGMpOworCQlP aWQJCQlzY2hlbWFpZCA9IHB1YnNjaC0+b2lkOwogCiAJCS8qIEFsbG93IHF1ZXJ5IGNhbmNlbCBp biBjYXNlIHRoaXMgdGFrZXMgYSBsb25nIHRpbWUgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKQEAgLTE2NDgsMTAgKzE2ODAsMTAgQEAgUHVibGljYXRpb25BZGRTY2hlbWFzKE9pZCBwdWJp ZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCiAJZm9yZWFjaChsYywgc2No ZW1hcykKIAl7Ci0JCU9pZAkJCXNjaGVtYWlkID0gbGZpcnN0X29pZChsYyk7CiAJCU9iamVjdEFk ZHJlc3Mgb2JqOworCQlQdWJsaWNhdGlvblNjaEluZm8gKnB1YnNjaCA9IChQdWJsaWNhdGlvblNj aEluZm8gKikgbGZpcnN0KGxjKTsKIAotCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKHB1 YmlkLCBzY2hlbWFpZCwgaWZfbm90X2V4aXN0cyk7CisJCW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9z Y2hlbWEocHViaWQsIHB1YnNjaCwgaWZfbm90X2V4aXN0cyk7CiAJCWlmIChzdG10KQogCQl7CiAJ CQlFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxlQ29tbWFuZChvYmosIEludmFsaWRPYmplY3RBZGRy ZXNzLApAQCAtMTY3NSw3ICsxNzA3LDggQEAgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHVi aWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAogCWZvcmVhY2gobGMsIHNjaGVt YXMpCiAJewotCQlPaWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQobGMpOworCQlQdWJsaWNhdGlv blNjaEluZm8gKnB1YnNjaCA9IChQdWJsaWNhdGlvblNjaEluZm8gKikgbGZpcnN0KGxjKTsKKwkJ T2lkCQkJc2NoZW1haWQgPSBwdWJzY2gtPm9pZDsKIAogCQlwc2lkID0gR2V0U3lzQ2FjaGVPaWQy KFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25f bmFtZXNwYWNlX29pZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggODBmYWFlOTg1ZS4u ZTRhZTEzNmFjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE2Mzg1LDcgKzE2Mzg1 LDcgQEAgQWx0ZXJUYWJsZU5hbWVzcGFjZShBbHRlck9iamVjdFNjaGVtYVN0bXQgKnN0bXQsIE9p ZCAqb2xkc2NoZW1hKQogCWlmIChzdG10LT5vYmplY3RUeXBlID09IE9CSkVDVF9UQUJMRSkKIAl7 CiAJCUxpc3RDZWxsICAgKmxjOwotCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hlbWFQ dWJsaWNhdGlvbnMobnNwT2lkKTsKKwkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1h UHVibGljYXRpb25zKG5zcE9pZCwgZmFsc2UpOwogCQlMaXN0CSAgICpyZWxQdWJpZHMgPSBHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpOwogCiAJCWZvcmVhY2go bGMsIHJlbFB1YmlkcykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggZDRmODQ1NWEyYi4uODFlYTgw NTgyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTQ4NTQsNiArNDg1NCwxNyBAQCBfY29weVB1 YmxpY2F0aW9uVGFibGUoY29uc3QgUHVibGljYXRpb25UYWJsZSAqZnJvbSkKIAlyZXR1cm4gbmV3 bm9kZTsKIH0KIAorc3RhdGljIFB1YmxpY2F0aW9uU2NoSW5mbyAqCitfY29weVB1YmxpY2F0aW9u U2NoSW5mbyhjb25zdCBQdWJsaWNhdGlvblNjaEluZm8gKmZyb20pCit7CisJUHVibGljYXRpb25T Y2hJbmZvICpuZXdub2RlID0gbWFrZU5vZGUoUHVibGljYXRpb25TY2hJbmZvKTsKKworCUNPUFlf U0NBTEFSX0ZJRUxEKG9pZCk7CisJQ09QWV9TQ0FMQVJfRklFTEQoc2tpcCk7CisKKwlyZXR1cm4g bmV3bm9kZTsKK30KKwogc3RhdGljIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqCiBfY29weUNyZWF0 ZVB1YmxpY2F0aW9uU3RtdChjb25zdCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKmZyb20pCiB7CkBA IC01OTQwLDYgKzU5NTEsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQlj YXNlIFRfUHVibGljYXRpb25PYmpTcGVjOgogCQkJcmV0dmFsID0gX2NvcHlQdWJsaWNhdGlvbk9i amVjdChmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfUHVibGljYXRpb25TY2hJbmZvOgorCQkJ cmV0dmFsID0gX2NvcHlQdWJsaWNhdGlvblNjaEluZm8oZnJvbSk7CisJCQlicmVhazsKIAkJY2Fz ZSBUX1B1YmxpY2F0aW9uVGFibGU6CiAJCQlyZXR2YWwgPSBfY29weVB1YmxpY2F0aW9uVGFibGUo ZnJvbSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBmMTAwMmFmZTdhLi5i MmI5MTFhOTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j bHVkZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgIm5vZGVzL3BhdGhub2Rlcy5oIgog I2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlv bi5oIgogCiAKIC8qCkBAIC0yMzI2LDYgKzIzMjcsMTYgQEAgX2VxdWFsUHVibGljYXRpb25UYWJs ZShjb25zdCBQdWJsaWNhdGlvblRhYmxlICphLCBjb25zdCBQdWJsaWNhdGlvblRhYmxlICpiKQog CXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbAorX2VxdWFsUHVibGljYXRpb25TY2hlbWEo Y29uc3QgUHVibGljYXRpb25TY2hJbmZvICphLAorCQkJCQkJY29uc3QgUHVibGljYXRpb25TY2hJ bmZvICpiKQoreworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG9pZCk7CisJQ09NUEFSRV9TQ0FMQVJf RklFTEQoc2tpcCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wKIF9lcXVhbENy ZWF0ZVB1YmxpY2F0aW9uU3RtdChjb25zdCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKmEsCiAJCQkJ CQkJY29uc3QgQ3JlYXRlUHVibGljYXRpb25TdG10ICpiKQpAQCAtMzkzNSw2ICszOTQ2LDkgQEAg ZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX1B1YmxpY2F0aW9u T2JqU3BlYzoKIAkJCXJldHZhbCA9IF9lcXVhbFB1YmxpY2F0aW9uT2JqZWN0KGEsIGIpOwogCQkJ YnJlYWs7CisJCWNhc2UgVF9QdWJsaWNhdGlvblNjaEluZm86CisJCQlyZXR2YWwgPSBfZXF1YWxQ dWJsaWNhdGlvblNjaGVtYShhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfUHVibGljYXRpb25U YWJsZToKIAkJCXJldHZhbCA9IF9lcXVhbFB1YmxpY2F0aW9uVGFibGUoYSwgYik7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IDAwMzZjMmY5ZTIuLjIzOTAxM2FmOTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtMjE5LDYgKzIxOSwxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ0FTYml0cyhpbnQgY2FzX2Jp dHMsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciAqY29uc3RyVHlwZSwKIAkJCSAgIGJvb2wgKm5v X2luaGVyaXQsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyB2b2lkIHByZXByb2Nl c3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LAogCQkJCQkJCQkgICBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCBwcmVwcm9jZXNzX2FsbHRhYmxlc19wdWJv YmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsCisJCQkJCQkJCQkJCSBjb3JlX3l5c2Nhbl90 IHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCBjaGVja19za2lwX2luX3B1Ym9ial9saXN0KExpc3Qg KnB1Ym9ianNwZWNfbGlzdCwKKwkJCQkJCQkJCQkJIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsK IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAKICV9CkBAIC00NDYsNyArNDUwLDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQl0cmFuc2Zvcm1fZWxlbWVudF9saXN0IHRyYW5zZm9ybV90 eXBlX2xpc3QKIAkJCQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJ dmFjdXVtX3JlbGF0aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0Ci0JCQkJZHJvcF9v cHRpb25fbGlzdCBwdWJfb2JqX2xpc3QKKwkJCQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlz dCBza2lwX3B1Yl9vYmpfbGlzdAogCiAldHlwZSA8bm9kZT4Jb3B0X3JvdXRpbmVfYm9keQogJXR5 cGUgPGdyb3VwY2xhdXNlPiBncm91cF9jbGF1c2UKQEAgLTk3MTgsMTIgKzk3MjIsMTUgQEAgQ3Jl YXRlUHVibGljYXRpb25TdG10OgogCQkJCQluLT5vcHRpb25zID0gJDQ7CiAJCQkJCSQkID0gKE5v ZGUgKiluOwogCQkJCX0KLQkJCXwgQ1JFQVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIEFMTCBUQUJM RVMgb3B0X2RlZmluaXRpb24KKwkJCXwgQ1JFQVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIEFMTCBU QUJMRVMgc2tpcF9wdWJfb2JqX2xpc3Qgb3B0X2RlZmluaXRpb24KIAkJCQl7CiAJCQkJCUNyZWF0 ZVB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVB1YmxpY2F0aW9uU3RtdCk7CiAJ CQkJCW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJbi0+b3B0aW9ucyA9ICQ3OworCQkJCQluLT5vcHRp b25zID0gJDg7CiAJCQkJCW4tPmZvcl9hbGxfdGFibGVzID0gdHJ1ZTsKKwkJCQkJbi0+cHVib2Jq ZWN0cyA9IChMaXN0ICopJDc7CisJCQkJCXByZXByb2Nlc3NfcHVib2JqX2xpc3Qobi0+cHVib2Jq ZWN0cywgeXlzY2FubmVyKTsKKwkJCQkJcHJlcHJvY2Vzc19hbGx0YWJsZXNfcHVib2JqX2xpc3Qo bi0+cHVib2JqZWN0cywgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQog CQkJfCBDUkVBVEUgUFVCTElDQVRJT04gbmFtZSBGT1IgcHViX29ial9saXN0IG9wdF9kZWZpbml0 aW9uCkBAIC05NzMzLDYgKzk3NDAsNyBAQCBDcmVhdGVQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4t Pm9wdGlvbnMgPSAkNjsKIAkJCQkJbi0+cHVib2JqZWN0cyA9IChMaXN0ICopJDU7CiAJCQkJCXBy ZXByb2Nlc3NfcHVib2JqX2xpc3Qobi0+cHVib2JqZWN0cywgeXlzY2FubmVyKTsKKwkJCQkJY2hl Y2tfc2tpcF9pbl9wdWJvYmpfbGlzdChuLT5wdWJvYmplY3RzLCB5eXNjYW5uZXIpOwogCQkJCQkk JCA9IChOb2RlICopbjsKIAkJCQl9CiAJCTsKQEAgLTk3NjQsMTQgKzk3NzIsMzEgQEAgUHVibGlj YXRpb25PYmpTcGVjOgogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJ CQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQTsKIAkJ CQkJJCQtPm5hbWUgPSAkNTsKKwkJCQkJJCQtPnNraXAgPSBmYWxzZTsKIAkJCQkJJCQtPmxvY2F0 aW9uID0gQDU7CiAJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NIRU1BIENVUlJFTlRfU0NI RU1BCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJ CSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CisJ CQkJCSQkLT5za2lwID0gZmFsc2U7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA1OwogCQkJCX0KKwkJ CXwgU0tJUCBBTEwgVEFCTEVTIElOX1AgU0NIRU1BIENvbElkCisJCQkJeworCQkJCQkkJCA9IG1h a2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElD QVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQTsKKwkJCQkJJCQtPm5hbWUgPSAkNjsKKwkJCQkJJCQt PnNraXAgPSB0cnVlOworCQkJCQkkJC0+bG9jYXRpb24gPSBANjsKKwkJCQl9CisJCQl8IFNLSVAg QUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQQorCQkJCXsKKwkJCQkJJCQgPSBt YWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJ Q0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOworCQkJCQkkJC0+c2tpcCA9IHRydWU7CisJ CQkJCSQkLT5sb2NhdGlvbiA9IEA2OworCQkJCX0KIAkJCXwgQ29sSWQgT3B0V2hlcmVDbGF1c2UK IAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKQEAgLTk4MjYs NiArOTg1MSwxMiBAQCBwdWJfb2JqX2xpc3Q6IAlQdWJsaWNhdGlvbk9ialNwZWMKIAkJCQkJeyAk JCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorIHNraXBfcHViX29ial9saXN0OglwdWJfb2Jq X2xpc3QKKwkJCQkJCXsgJCQgPSAkMTsgfQorCQkJCQl8IC8qRU1QVFkqLworCQkJCQkJeyAkJCA9 IE5VTEw7IH0KKwk7CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEFMVEVSIFBVQkxJ Q0FUSU9OIG5hbWUgU0VUICggb3B0aW9ucyApCkBAIC0xNzQ0OCw2ICsxNzQ3OSw3IEBAIHByZXBy b2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5 c2Nhbm5lcikKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2Jq OwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgcHJldm9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9D T05USU5VQVRJT047CisJYm9vbCBwcmV2c2tpcG9iaiA9IGZhbHNlOwogCiAJaWYgKCFwdWJvYmpz cGVjX2xpc3QpCiAJCXJldHVybjsKQEAgLTE3NDY1LDcgKzE3NDk3LDEwIEBAIHByZXByb2Nlc3Nf cHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cikKIAkJcHVib2JqID0gKFB1YmxpY2F0aW9uT2JqU3BlYyAqKSBsZmlyc3QoY2VsbCk7CiAKIAkJ aWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04pCisJ CXsKIAkJCXB1Ym9iai0+cHVib2JqdHlwZSA9IHByZXZvYmp0eXBlOworCQkJcHVib2JqLT5za2lw ID0gcHJldnNraXBvYmo7CisJCX0KIAogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJ Q0FUSU9OT0JKX1RBQkxFKQogCQl7CkBAIC0xNzUxMyw2ICsxNzU0OCw2NCBAQCBwcmVwcm9jZXNz X3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5u ZXIpCiAJCX0KIAogCQlwcmV2b2JqdHlwZSA9IHB1Ym9iai0+cHVib2JqdHlwZTsKKwkJcHJldnNr aXBvYmogPSBwdWJvYmotPnNraXA7CisJfQorfQorCisvKgorICogUHJvY2VzcyBwdWJvYmpzcGVj X2xpc3QgdG8gY2hlY2sgaWYgYW55IG90aGVyIG9wdGlvbiBvdGhlciB0aGF0CisgKiAiU0tJUCBB TEwgVEFCTEVTIElOIFNDSEVNQSIgaXMgc3BlY2lmaWVkIHdpdGggIkFMTCBUQUJMRVMiIGFuZCB0 aHJvdyBhbgorICogZXJyb3IuCisgKi8KK3N0YXRpYyB2b2lkCitwcmVwcm9jZXNzX2FsbHRhYmxl c19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2Fu bmVyKQoreworCUxpc3RDZWxsICAgKmNlbGw7CisJUHVibGljYXRpb25PYmpTcGVjICpwdWJvYmo7 CisKKwlpZiAoIXB1Ym9ianNwZWNfbGlzdCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChjZWxsLCBw dWJvYmpzcGVjX2xpc3QpCisJeworCQlwdWJvYmogPSAoUHVibGljYXRpb25PYmpTcGVjICopIGxm aXJzdChjZWxsKTsKKworCQkvKiBPbmx5IFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgb3B0aW9u IHN1cHBvcnRlZCB3aXRoIEFMTCBUQUJMRVMgKi8KKwkJaWYgKHB1Ym9iai0+cHVib2JqdHlwZSAh PSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BIHx8CisJCQkhcHVib2JqLT5za2lwKQor CQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJZXJybXNnKCJvbmx5IFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgY2FuIGJlIHNw ZWNpZmllZCB3aXRoIEFMTCBUQUJMRVMgb3B0aW9uIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihwdWJvYmotPmxvY2F0aW9uKSk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBQcm9jZXNzIHB1Ym9i anNwZWNfbGlzdCB0byBjaGVjayBpZiAiU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSIgaXMgc3Bl Y2lmaWVkCisgKiB3aXRoICJBTEwgVEFCTEVTIiBhbmQgdGhyb3cgYW4gZXJyb3IuCisgKi8KK3N0 YXRpYyB2b2lkCitjaGVja19za2lwX2luX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlz dCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKwlQdWJs aWNhdGlvbk9ialNwZWMgKnB1Ym9iajsKKworCWlmICghcHVib2Jqc3BlY19saXN0KQorCQlyZXR1 cm47CisKKwlmb3JlYWNoKGNlbGwsIHB1Ym9ianNwZWNfbGlzdCkKKwl7CisJCXB1Ym9iaiA9IChQ dWJsaWNhdGlvbk9ialNwZWMgKikgbGZpcnN0KGNlbGwpOworCisJCS8qIE9ubHkgU0tJUCBBTEwg VEFCTEVTIElOIFNDSEVNQSBvcHRpb24gc3VwcG9ydGVkIHdpdGggQUxMIFRBQkxFUyAqLworCQlp ZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUEg JiYKKwkJCXB1Ym9iai0+c2tpcCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coIlNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hF TUEgY2FuIGJlIHNwZWNpZmllZCBvbmx5IHdpdGggQUxMIFRBQkxFUyBvcHRpb24iKSwKKwkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKIAl9CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDVmZGRhYjNhM2QuLmMx NTY0Mzk0YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwpAQCAtMTc0NSw3ICsxNzQ1LDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCSAqIHRoZSBjYWNoZSBlbnRyeSB1c2luZyBhIGhp c3RvcmljIHNuYXBzaG90IGFuZCBhbGwgdGhlIGxhdGVyIGNoYW5nZXMKIAkJICogYXJlIGFic29y YmVkIHdoaWxlIGRlY29kaW5nIFdBTC4KIAkJICovCi0JCUxpc3QJICAgKnNjaGVtYVB1YmlkcyA9 IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFJZCk7CisJCUxpc3QgICAgICAgKnNjaGVtYVB1 YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFJZCwgZmFsc2UpOworCQlMaXN0ICAg ICAgICpza2lwU2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYUlkLCB0 cnVlKTsKIAkJTGlzdENlbGwgICAqbGM7CiAJCU9pZAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxp ZDsKIAkJaW50CQkJcHVibGlzaF9hbmNlc3Rvcl9sZXZlbCA9IDA7CkBAIC0xODI0LDIyICsxODI1 LDYgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVs YXRpb24pCiAJCQlPaWQJcHViX3JlbGlkID0gcmVsaWQ7CiAJCQlpbnQJYW5jZXN0b3JfbGV2ZWwg PSAwOwogCi0JCQkvKgotCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0 aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24gcm9vdAotCQkJICogYW5kIHNldCB0aGUgYW5jZXN0b3Ig bGV2ZWwgYWNjb3JkaW5nbHkuCi0JCQkgKi8KLQkJCWlmIChwdWItPmFsbHRhYmxlcykKLQkJCXsK LQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYmIGFtX3BhcnRp dGlvbikKLQkJCQl7Ci0JCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5j ZXN0b3JzKHJlbGlkKTsKLQotCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsK LQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOwotCQkJCX0KLQkJ CX0KLQogCQkJaWYgKCFwdWJsaXNoKQogCQkJewogCQkJCWJvb2wJCWFuY2VzdG9yX3B1Ymxpc2hl ZCA9IGZhbHNlOwpAQCAtMTg1OCw3ICsxODQzLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQkJYW5jZXN0b3IgPSBHZXRU b3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLAogCQkJCQkJCQkJCQkJCQkJICAg YW5jZXN0b3JzLAotCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsKTsKKwkJCQkJCQkJCQkJCQkJCSAg ICZsZXZlbCwKKwkJCQkJCQkJCQkJCQkJCSAgIHB1Yi0+YWxsdGFibGVzKTsKIAogCQkJCQlpZiAo YW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJewpAQCAtMTg3Myw2ICsxODU5LDcgQEAgZ2V0 X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAK IAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8CiAJCQkJCWxpc3Rf bWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAorCQkJCQkocHViLT5hbGx0YWJs ZXMgJiYgIWxpc3RfbWVtYmVyX29pZChza2lwU2NoZW1hUHViaWRzLCBwdWItPm9pZCkpIHx8CiAJ CQkJCWFuY2VzdG9yX3B1Ymxpc2hlZCkKIAkJCQkJcHVibGlzaCA9IHRydWU7CiAJCQl9CkBAIC0x OTQyLDYgKzE5MjksNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBS ZWxhdGlvbiByZWxhdGlvbikKIAogCQlsaXN0X2ZyZWUocHViaWRzKTsKIAkJbGlzdF9mcmVlKHNj aGVtYVB1Ymlkcyk7CisJCWxpc3RfZnJlZShza2lwU2NoZW1hUHViaWRzKTsKIAkJbGlzdF9mcmVl KHJlbF9wdWJsaWNhdGlvbnMpOwogCiAJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSB0cnVlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggZmNjZmZjZTU3Mi4uNTc3MTkwNjU4OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01NTM4LDYgKzU1MzgsOCBAQCB2b2lk CiBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNh dGlvbkRlc2MgKnB1YmRlc2MpCiB7CiAJTGlzdAkgICAqcHVib2lkczsKKwlMaXN0CSAgICphbGx0 YWJsZXNwdWJvaWRzOworCUxpc3QJICAgKnNraXBzY2hlbWFwdWJvaWRzOwogCUxpc3RDZWxsICAg KmxjOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCU9pZAkJCXNjaGVtYWlkOwpAQCAtNTU2OSw3 ICs1NTcxLDggQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlv biwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCS8qIEZldGNoIHRoZSBwdWJsaWNhdGlvbiBt ZW1iZXJzaGlwIGluZm8uICovCiAJcHVib2lkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJl bGlkKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKLQlwdWJv aWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlv bnMoc2NoZW1haWQpKTsKKwlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsIGZhbHNlKSk7CisJc2tpcHNjaGVtYXB1 Ym9pZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsIHRydWUpOwogCiAJaWYgKHJl bGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKQEAgLTU1ODQsMTEgKzU1ODcsMjEg QEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGlj YXRpb25EZXNjICpwdWJkZXNjKQogCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo YW5jZXN0b3IpKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwog CQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJCQkJ IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQkJCQkJCQkJCQkgR2V0U2NoZW1h UHVibGljYXRpb25zKHNjaGVtYWlkLCBmYWxzZSkpOworCQkJc2tpcHNjaGVtYXB1Ym9pZHMgPSBs aXN0X2NvbmNhdF91bmlxdWVfb2lkKHNraXBzY2hlbWFwdWJvaWRzLAorCQkJCQkJCQkJCQkJCSAg IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCwgdHJ1ZSkpOwogCQl9CiAJfQotCXB1Ym9p ZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0 aW9ucygpKTsKIAorCWFsbHRhYmxlc3B1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMo KTsKKworCS8qCisJICogQXBwZW5kICJBTEwgVEFCTEVTIiBwdWJsaWNhdGlvbnMgd2hpY2ggZG9l cyBub3QgZXhjbHVkZSB0aGlzCisJICogcmVsYXRpb24ncyBzY2hlbWEuCisJICovCisJcHVib2lk cyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJCQkJCSBsaXN0X2RpZmZl cmVuY2Vfb2lkKGFsbHRhYmxlc3B1Ym9pZHMsCisJCQkJCQkJCQkJCQkJCSBza2lwc2NoZW1hcHVi b2lkcykpOwogCWZvcmVhY2gobGMsIHB1Ym9pZHMpCiAJewogCQlPaWQJCQlwdWJpZCA9IGxmaXJz dF9vaWQobGMpOwpAQCAtNTYxNyw3ICs1NjMwLDggQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9u RGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlpZiAo IXB1YmZvcm0tPnB1YmFsbHRhYmxlcyAmJgogCQkJKHB1YmZvcm0tPnB1YnVwZGF0ZSB8fCBwdWJm b3JtLT5wdWJkZWxldGUpICYmCiAJCQljb250YWluX2ludmFsaWRfcmZjb2x1bW4ocHViaWQsIHJl bGF0aW9uLCBhbmNlc3RvcnMsCi0JCQkJCQkJCQkgcHViZm9ybS0+cHVidmlhcm9vdCkpCisJCQkJ CQkJCQkgcHViZm9ybS0+cHVidmlhcm9vdCwKKwkJCQkJCQkJCSBwdWJmb3JtLT5wdWJhbGx0YWJs ZXMpKQogCQl7CiAJCQlpZiAocHViZm9ybS0+cHVidXBkYXRlKQogCQkJCXB1YmRlc2MtPnJmX3Zh bGlkX2Zvcl91cGRhdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGU1ODE2YzRjY2UuLmJmZTNk OGMxZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDAxMyw2ICs0MDEzLDcgQEAgZ2V0UHVibGljYXRpb25O YW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAJaW50CQkJaV9vaWQ7CiAJaW50CQkJaV9wbnB1Ymlk OwogCWludAkJCWlfcG5uc3BpZDsKKwlpbnQJCQlpX3Buc2tpcDsKIAlpbnQJCQlpLAogCQkJCWos CiAJCQkJbnR1cHM7CkBAIC00MDI0LDcgKzQwMjUsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFj ZXMoQXJjaGl2ZSAqZm91dCkKIAogCS8qIENvbGxlY3QgYWxsIHB1YmxpY2F0aW9uIG1lbWJlcnNo aXAgaW5mby4gKi8KIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCSAiU0VMRUNU IHRhYmxlb2lkLCBvaWQsIHBucHViaWQsIHBubnNwaWQgIgorCQkJCQkJICJTRUxFQ1QgdGFibGVv aWQsIG9pZCwgcG5wdWJpZCwgcG5uc3BpZCwgcG5za2lwICIKIAkJCQkJCSAiRlJPTSBwZ19jYXRh bG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSIpOwogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShm b3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIApAQCAtNDAzNCw2ICs0MDM1LDcg QEAgZ2V0UHVibGljYXRpb25OYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAJaV9vaWQgPSBQUWZu dW1iZXIocmVzLCAib2lkIik7CiAJaV9wbnB1YmlkID0gUFFmbnVtYmVyKHJlcywgInBucHViaWQi KTsKIAlpX3BubnNwaWQgPSBQUWZudW1iZXIocmVzLCAicG5uc3BpZCIpOworCWlfcG5za2lwID0g UFFmbnVtYmVyKHJlcywgInBuc2tpcCIpOwogCiAJLyogdGhpcyBhbGxvY2F0aW9uIG1heSBiZSBt b3JlIHRoYW4gd2UgbmVlZCAqLwogCXB1YnNpbmZvID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9m KFB1YmxpY2F0aW9uU2NoZW1hSW5mbykpOwpAQCAtNDA0Myw2ICs0MDQ1LDcgQEAgZ2V0UHVibGlj YXRpb25OYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAJewogCQlPaWQJCQlwbnB1YmlkID0gYXRv b2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3BucHViaWQpKTsKIAkJT2lkCQkJcG5uc3BpZCA9IGF0 b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9wbm5zcGlkKSk7CisJCWNoYXIJICAgKnBuc2tpcCA9 IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9wbnNraXApKTsKIAkJUHVibGljYXRpb25J bmZvICpwdWJpbmZvOwogCQlOYW1lc3BhY2VJbmZvICpuc3BpbmZvOwogCkBAIC00MDY1LDcgKzQw NjgsMTAgQEAgZ2V0UHVibGljYXRpb25OYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAJCQljb250 aW51ZTsKIAogCQkvKiBPSywgbWFrZSBhIER1bXBhYmxlT2JqZWN0IGZvciB0aGlzIHJlbGF0aW9u c2hpcCAqLwotCQlwdWJzaW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9UQUJM RV9JTl9TQ0hFTUE7CisJCWlmIChzdHJjbXAocG5za2lwLCAidCIpID09IDApCisJCQlwdWJzaW5m b1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1NDSEVNQTsK KwkJZWxzZQorCQkJcHVic2luZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fVEFC TEVfSU5fU0NIRU1BOwogCQlwdWJzaW5mb1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0KIAkJCWF0 b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOwogCQlwdWJzaW5mb1tqXS5kb2Jq LmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKQEAgLTQxOTAs MTMgKzQxOTYsMTUgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKICAqCSAgZHVtcCB0aGUgZGVmaW5pdGlvbiBv ZiB0aGUgZ2l2ZW4gcHVibGljYXRpb24gc2NoZW1hIG1hcHBpbmcuCiAgKi8KIHN0YXRpYyB2b2lk Ci1kdW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRp b25TY2hlbWFJbmZvICpwdWJzaW5mbykKK2R1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZShBcmNoaXZl ICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblNjaGVtYUluZm8gKnB1YnNpbmZvLAorCQkJCQkJIGJv b2wgYnNraXApCiB7CiAJRHVtcE9wdGlvbnMgKmRvcHQgPSBmb3V0LT5kb3B0OwogCU5hbWVzcGFj ZUluZm8gKnNjaGVtYWluZm8gPSBwdWJzaW5mby0+cHVic2NoZW1hOwogCVB1YmxpY2F0aW9uSW5m byAqcHViaW5mbyA9IHB1YnNpbmZvLT5wdWJsaWNhdGlvbjsKIAlQUUV4cEJ1ZmZlciBxdWVyeTsK IAljaGFyCSAgICp0YWc7CisJY2hhcgkgICAqZGVzY3JpcHRpb24gPSAoYnNraXApID8gIlBVQkxJ Q0FUSU9OIFNLSVAgVEFCTEVTIElOIFNDSEVNQSIgOiAiUFVCTElDQVRJT04gVEFCTEVTIElOIFND SEVNQSI7CiAKIAkvKiBEbyBub3RoaW5nIGluIGRhdGEtb25seSBkdW1wICovCiAJaWYgKGRvcHQt PmRhdGFPbmx5KQpAQCAtNDIwNiw4ICs0MjE0LDEyIEBAIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFj ZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblNjaGVtYUluZm8gKnB1YnNpbmZvKQog CiAJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCi0JYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICJBTFRFUiBQVUJMSUNBVElPTiAlcyAiLCBmbXRJZChwdWJpbmZvLT5kb2JqLm5hbWUpKTsK LQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSAlcztc biIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkpOworCWFwcGVuZFBRRXhwQnVmZmVyKHF1 ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgQUREICIsIGZtdElkKHB1YmluZm8tPmRvYmoubmFt ZSkpOworCisJaWYgKGJza2lwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIlNLSVAg Iik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMTCBUQUJMRVMgSU4gU0NIRU1BICVz O1xuIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CiAKIAkvKgogCSAqIFRoZXJlIGlz IG5vIHBvaW50IGluIGNyZWF0aW5nIGRyb3AgcXVlcnkgYXMgdGhlIGRyb3AgaXMgZG9uZSBieSBz Y2hlbWEKQEAgLTQyMTgsNyArNDIzMCw3IEBAIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZShBcmNo aXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblNjaGVtYUluZm8gKnB1YnNpbmZvKQogCQkJCQkg QVJDSElWRV9PUFRTKC50YWcgPSB0YWcsCiAJCQkJCQkJCSAgLm5hbWVzcGFjZSA9IHNjaGVtYWlu Zm8tPmRvYmoubmFtZSwKIAkJCQkJCQkJICAub3duZXIgPSBwdWJpbmZvLT5yb2xuYW1lLAotCQkJ CQkJCQkgIC5kZXNjcmlwdGlvbiA9ICJQVUJMSUNBVElPTiBUQUJMRVMgSU4gU0NIRU1BIiwKKwkJ CQkJCQkJICAuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiwKIAkJCQkJCQkJICAuc2VjdGlvbiA9 IFNFQ1RJT05fUE9TVF9EQVRBLAogCQkJCQkJCQkgIC5jcmVhdGVTdG10ID0gcXVlcnktPmRhdGEp KTsKIApAQCAtOTg1Myw5ICs5ODY1LDE1IEBAIGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpm b3V0LCBEdW1wYWJsZU9iamVjdCAqZG9iaikKIAkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CiAJ CQlkdW1wUHVibGljYXRpb25UYWJsZShmb3V0LCAoY29uc3QgUHVibGljYXRpb25SZWxJbmZvICop IGRvYmopOwogCQkJYnJlYWs7CisJCWNhc2UgRE9fUFVCTElDQVRJT05fU0tJUF9UQUJMRV9JTl9T Q0hFTUE6CisJCQlkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoZm91dCwKKwkJCQkJCQkJCSAoY29u c3QgUHVibGljYXRpb25TY2hlbWFJbmZvICopIGRvYmosCisJCQkJCQkJCQkgdHJ1ZSk7CisJCQli cmVhazsKIAkJY2FzZSBET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUE6CiAJCQlkdW1wUHVi bGljYXRpb25OYW1lc3BhY2UoZm91dCwKLQkJCQkJCQkJCSAoY29uc3QgUHVibGljYXRpb25TY2hl bWFJbmZvICopIGRvYmopOworCQkJCQkJCQkJIChjb25zdCBQdWJsaWNhdGlvblNjaGVtYUluZm8g KikgZG9iaiwKKwkJCQkJCQkJCSBmYWxzZSk7CiAJCQlicmVhazsKIAkJY2FzZSBET19TVUJTQ1JJ UFRJT046CiAJCQlkdW1wU3Vic2NyaXB0aW9uKGZvdXQsIChjb25zdCBTdWJzY3JpcHRpb25JbmZv ICopIGRvYmopOwpAQCAtMTc3ODYsNiArMTc4MDQsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2ll cyhEdW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fUE9MSUNZ OgogCQkJY2FzZSBET19QVUJMSUNBVElPTjoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgor CQkJY2FzZSBET19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1NDSEVNQToKIAkJCWNhc2UgRE9f UFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BOgogCQkJY2FzZSBET19TVUJTQ1JJUFRJT046CiAJ CQkJLyogUG9zdC1kYXRhIG9iamVjdHM6IG11c3QgY29tZSBhZnRlciB0aGUgcG9zdC1kYXRhIGJv dW5kYXJ5ICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA3NzJkYzBjZjdhLi4yZDM5OTc1MjI4IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmgKQEAgLTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fUE9MSUNZLAogCURPX1BV QkxJQ0FUSU9OLAogCURPX1BVQkxJQ0FUSU9OX1JFTCwKKwlET19QVUJMSUNBVElPTl9TS0lQX1RB QkxFX0lOX1NDSEVNQSwKIAlET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCiAJRE9fU1VC U0NSSVBUSU9OCiB9IER1bXBhYmxlT2JqZWN0VHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRl eCAxNTkyMDkwODM5Li5kMDI0OTM2YjE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC05MSw2 ICs5MSw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fUE9MSUNZLAogCVBS SU9fUFVCTElDQVRJT04sCiAJUFJJT19QVUJMSUNBVElPTl9SRUwsCisJUFJJT19QVUJMSUNBVElP Tl9TS0lQX1RBQkxFX0lOX1NDSEVNQSwKIAlQUklPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVN QSwKIAlQUklPX1NVQlNDUklQVElPTiwKIAlQUklPX0RFRkFVTFRfQUNMLAkJCS8qIGRvbmUgaW4g QUNMIHBhc3MgKi8KQEAgLTE0NSw2ICsxNDYsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0 VHlwZVByaW9yaXR5W10gPQogCVBSSU9fUE9MSUNZLAkJCQkvKiBET19QT0xJQ1kgKi8KIAlQUklP X1BVQkxJQ0FUSU9OLAkJCS8qIERPX1BVQkxJQ0FUSU9OICovCiAJUFJJT19QVUJMSUNBVElPTl9S RUwsCQkvKiBET19QVUJMSUNBVElPTl9SRUwgKi8KKwlQUklPX1BVQkxJQ0FUSU9OX1NLSVBfVEFC TEVfSU5fU0NIRU1BLAkvKiBET19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1NDSEVNQSAqLwog CVBSSU9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAkvKiBET19QVUJMSUNBVElPTl9UQUJM RV9JTl9TQ0hFTUEgKi8KIAlQUklPX1NVQlNDUklQVElPTgkJCS8qIERPX1NVQlNDUklQVElPTiAq LwogfTsKQEAgLTE0ODgsNiArMTQ5MCwxMSBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1bXBh YmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiUFVCTElDQVRJ T04gVEFCTEUgKElEICVkIE9JRCAldSkiLAogCQkJCQkgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQu b2lkKTsKIAkJCXJldHVybjsKKwkJY2FzZSBET19QVUJMSUNBVElPTl9TS0lQX1RBQkxFX0lOX1ND SEVNQToKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQVUJMSUNBVElPTiBTS0lQ IFRBQkxFUyBJTiBTQ0hFTUEgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5kdW1wSWQsIG9i ai0+Y2F0SWQub2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QVUJMSUNBVElPTl9UQUJMRV9J Tl9TQ0hFTUE6CiAJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCiAJCQkJCSAiUFVCTElDQVRJT04g VEFCTEVTIElOIFNDSEVNQSAoSUQgJWQgT0lEICV1KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs CmluZGV4IGZkMTA1MmU1ZGIuLmM3YjE2NDE5MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs CkBAIC0yMzkyLDYgKzIzOTIsMTUgQEAgbXkgJXRlc3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxf cnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNB VElPTiBwdWI1JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCAgID0+ ICdDUkVBVEUgUFVCTElDQVRJT04gcHViNSBGT1IgQUxMIFRBQkxFUzsnLAorCQlyZWdleHAgPT4g cXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViNSBGT1IgQUxMIFRBQkxFUyBXSVRIIChw dWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwK KwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUw LAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpAQCAtMjQ3NCw2 ICsyNDgzLDI3IEBAIG15ICV0ZXN0cyA9ICgKIAkJdW5saWtlID0+IHsgZXhjbHVkZV9kdW1wX3Rl c3Rfc2NoZW1hID0+IDEsIH0sCiAJfSwKIAorCSdBTFRFUiBQVUJMSUNBVElPTiBwdWI1IEFERCBT S0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIGR1bXBfdGVzdCcgPT4geworCQljcmVhdGVfb3JkZXIg PT4gNTEsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQUxURVIgUFVCTElDQVRJT04gcHViNSBBREQg U0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3Q7JywKKwkJcmVnZXhwID0+IHFyL14K KwkJCVxRQUxURVIgUFVCTElDQVRJT04gcHViNSBBREQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVN QSBkdW1wX3Rlc3Q7XEUKKwkJCS94bSwKKwkJbGlrZSAgID0+IHsgJWZ1bGxfcnVucywgc2VjdGlv bl9wb3N0X2RhdGEgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsgZXhjbHVkZV9kdW1wX3Rlc3Rfc2No ZW1hID0+IDEsIH0sCisJfSwKKworCSdBTFRFUiBQVUJMSUNBVElPTiBwdWI1IEFERCBTS0lQIEFM TCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYycgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTIsCisJ CWNyZWF0ZV9zcWwgPT4KKwkJICAnQUxURVIgUFVCTElDQVRJT04gcHViNSBBREQgU0tJUCBBTEwg VEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIg UFVCTElDQVRJT04gcHViNSBBREQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7XEUK KwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEs IH0sCisJfSwKKwogCSdDUkVBVEUgU0NIRU1BIHB1YmxpYycgPT4gewogCQlyZWdleHAgPT4gcXIv XkNSRUFURSBTQ0hFTUEgcHVibGljOy9tLAogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDcxNDA5N2NhZDEuLjljYmE4 NGQ2OTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCkBAIC0yODk2LDYgKzI4OTYsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gcC5vaWQgPSBwbi5wbnB1YmlkXG4iCiAJ CQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjIE9OIHBjLnJlbG5hbWVzcGFj ZSA9IHBuLnBubnNwaWRcbiIKIAkJCQkJCQkJICAiV0hFUkUgcGMub2lkID0nJXMnIGFuZCBwZ19j YXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCisJCQkJCQkJCSAgIiAg QU5EIHBuLnBuc2tpcCA9ICdmJ1xuIgogCQkJCQkJCQkgICJVTklPTlxuIgogCQkJCQkJCQkgICJT RUxFQ1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIJCSwgcGdfZ2V0X2V4cHIocHIucHJxdWFsLCBj Lm9pZClcbiIKQEAgLTYwNjYsNiArNjA2Nyw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2Ug blxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1l c3BhY2UgcG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkXG4iCiAJCQkJCQkJCSAgIldIRVJFIHBuLnBu cHViaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAgIiAgQU5EIHBuLnBuc2tpcCA9ICdmJ1xuIgogCQkJ CQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOwogCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNh dGlvbkRlc2MoJmJ1ZiwgIlRhYmxlcyBmcm9tIHNjaGVtYXM6IiwKIAkJCQkJCQkJCQkJCXRydWUs ICZjb250KSkKQEAgLTYwNzMsNiArNjA3NSwyMSBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25z dCBjaGFyICpwYXR0ZXJuKQogCQkJfQogCQl9CiAKKwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUw MDAwKQorCQl7CisJCQkvKiBHZXQgdGhlIHNraXAgc2NoZW1hcyBmb3IgdGhlIHNwZWNpZmllZCBw dWJsaWNhdGlvbiAqLworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxF Q1Qgbi5uc3BuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBu XG4iCisJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNw YWNlIHBuIE9OIG4ub2lkID0gcG4ucG5uc3BpZFxuIgorCQkJCQkJCSAgIldIRVJFIHBuLnBucHVi aWQgPSAnJXMnXG4iCisJCQkJCQkJICAiICBBTkQgcG4ucG5za2lwID0gJ3QnXG4iCisJCQkJCQkJ ICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRl c2MoJmJ1ZiwgIlNraXAgdGFibGVzIGZyb20gc2NoZW1hczoiLAorCQkJCQkJCQkJCQl0cnVlLCAm Y29udCkpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCX0KKwogCQlwcmludFRhYmxlKCZjb250 LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVh bnVwKCZjb250KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDVjMDY0NTk1YTkuLmNkY2MzM2RmYjcg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmMKQEAgLTE4MTQsOCArMTgxNCwxMCBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXMo IkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJBREQi LCAiRFJPUCIsICJPV05FUiBUTyIsICJSRU5BTUUgVE8iLCAiU0VUIik7CiAJLyogQUxURVIgUFVC TElDQVRJT04gPG5hbWU+IEFERCAqLwotCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJBREQiKSkKLQkJQ09NUExFVEVfV0lUSCgiQUxMIFRBQkxFUyBJ TiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiQUREfERST1AiKSkKKwkJQ09NUExFVEVfV0lUSCgiQUxMIFRBQkxF UyBJTiBTQ0hFTUEiLCAiU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOworCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8RFJP UCIsICJTS0lQIikpCisJCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1BIik7CiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxT RVQiLCAiVEFCTEUiKSB8fAogCQkJIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERHxTRVQiLCAiVEFCTEUiKSAmJgogCQkJICBlbmRzX3dpdGgocHJldl93 ZCwgJywnKSkpCkBAIC0xODM2LDEzICsxODM4LDEzIEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEgoIiwiLCAiV0hF UkUgKCIpOwogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiQUREfFNFVCIsICJUQUJMRSIpKQogCQlDT01QTEVURV9XSVRIKCIsIik7Ci0JLyog QUxURVIgUFVCTElDQVRJT04gPG5hbWU+IERST1AgKi8KLQllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRFJPUCIpKQotCQlDT01QTEVURV9XSVRIKCJB TEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxu YW1lPiBTRVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiU0VUIikpCi0JCUNPTVBMRVRFX1dJVEgoIigiLCAiQUxMIFRBQkxFUyBJTiBTQ0hF TUEiLCAiVEFCTEUiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIkFMTCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1B IikpCisJCUNPTVBMRVRFX1dJVEgoIigiLCAiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiU0tJUCBB TEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiU0tJUCIpKQorCQlDT01QTEVURV9X SVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8RFJPUHxTRVQiLCAiQUxMIiwgIlRBQkxFUyIs ICJJTiIsICJTQ0hFTUEiKSB8fAorCQkJIE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJBRER8RFJPUHxTRVQiLCAiU0tJUCIsICJBTEwiLCAiVEFCTEVTIiwgIklOIiwg IlNDSEVNQSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zf c2NoZW1hcwogCQkJCQkJCQkgIiBBTkQgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAog CQkJCQkJCQkgIkNVUlJFTlRfU0NIRU1BIik7CkBAIC0yOTczLDcgKzI5NzUsNyBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIp KQogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVNQSIpOwogCWVsc2Ug aWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFM TCIsICJUQUJMRVMiKSkKLQkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIiwgIldJVEggKCIpOwor CQlDT01QTEVURV9XSVRIKCJJTiBTQ0hFTUEiLCAiU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSIs ICJXSVRIICgiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZfd2Qs ICcsJykpCiAJCUNPTVBMRVRFX1dJVEgoIldIRVJFICgiLCAiV0lUSCAoIik7CiAJLyogQ29tcGxl dGUgIkNSRUFURSBQVUJMSUNBVElPTiA8bmFtZT4gRk9SIFRBQkxFIiB3aXRoICI8dGFibGU+LCAu Li4iICovCkBAIC0yOTk1LDExICsyOTk3LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFy ICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJICogQ29tcGxldGUgIkNSRUFURSBQVUJMSUNB VElPTiA8bmFtZT4gRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIDxzY2hlbWE+LAogCSAqIC4uLiIK IAkgKi8KLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIpKQorCWVsc2UgaWYgKE1h dGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJU QUJMRVMiLCAiSU4iLCAiU0NIRU1BIikgfHwKKwkJCSBNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJTS0lQIiwgIkFMTCIsICJUQUJMRVMiLCAiSU4iLCAi U0NIRU1BIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9z Y2hlbWFzCiAJCQkJCQkJCSAiIEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCiAJ CQkJCQkJCSAiQ1VSUkVOVF9TQ0hFTUEiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIklOIiwgIlND SEVNQSIsIE1hdGNoQW55KSAmJiAoIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKSkKKwllbHNlIGlm ICgoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxM IiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgfHwKKwkJCSAgTWF0Y2hlcygi Q1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTS0lQIiwgIkZPUiIsICJBTEwiLCAi VEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55KSkgJiYKKwkJCSAoIWVuZHNfd2l0aChw cmV2X3dkLCAnLCcpKSkKIAkJQ09NUExFVEVfV0lUSCgiV0lUSCAoIik7CiAJLyogQ29tcGxldGUg IkNSRUFURSBQVUJMSUNBVElPTiA8bmFtZT4gWy4uLl0gV0lUSCIgKi8KIAllbHNlIGlmIChIZWFk TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIikgJiYgVGFpbE1hdGNoZXMoIldJVEgiLCAi KCIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IGZlNzczY2Y5YjcuLjIw NmRlZjdlMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTEwMiw2ICsx MDIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiAJTm9kZQkgICAqd2hl cmVDbGF1c2U7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAordHlwZWRlZiBzdHJ1Y3QgUHVibGlj YXRpb25TY2hJbmZvCit7CisJTm9kZVRhZwkJdHlwZTsKKwlPaWQJCQlvaWQ7CisJYm9vbAkJc2tp cDsKK30gUHVibGljYXRpb25TY2hJbmZvOworCiBleHRlcm4gUHVibGljYXRpb24gKkdldFB1Ymxp Y2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVibGljYXRpb24gKkdldFB1YmxpY2F0aW9uQnlO YW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gTGlzdCAq R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKTsKQEAgLTEyNCwyNCArMTMxLDI3IEBA IHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvblBhcnRPcHQKIAogZXh0ZXJuIExpc3QgKkdldFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCk7Ci1leHRlcm4g TGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoYm9vbCBwdWJ2aWFyb290KTsK K2V4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQs IGJvb2wgcHVidmlhcm9vdCk7CiBleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25TY2hlbWFzKE9p ZCBwdWJpZCk7Ci1leHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFp ZCk7CitleHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFpZCwgYm9v bCBza2lwcHViKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgc2NoZW1haWQsCiAJCQkJCQkJCQkJICAgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KTsKIGV4dGVybiBMaXN0ICpHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHVi b2lkLAotCQkJCQkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CisJCQkJ CQkJCQkJCSAgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkgIGJv b2wgYnNraXApOwogZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhM aXN0ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwK IAkJCQkJCQkJCQkJT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5Q dWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCi0JCQkJCQkJCQkJCWludCAq YW5jZXN0b3JfbGV2ZWwpOworCQkJCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLAorCQkJCQkJ CQkJCQlib29sIHB1YmFsbHRhYmxlcyk7CiAKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3Jl bGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24o T2lkIHB1YmlkKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlv bihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJCQkJCQkgIGJvb2wg aWZfbm90X2V4aXN0cyk7Ci1leHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfc2No ZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLAorZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGlj YXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsCisJCQkJCQkJCQkJCVB1YmxpY2F0aW9uU2NoSW5m byAqcHVic2NoLAogCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOwogCiBleHRlcm4gT2lk CWdldF9wdWJsaWNhdGlvbl9vaWQoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29r KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNw YWNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oCmlu ZGV4IGU0MzA2ZGEwMmUuLjFlMWI4MmNkNjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaApAQCAtMzIsNiArMzIsNyBAQCBDQVRBTE9HKHBnX3B1 YmxpY2F0aW9uX25hbWVzcGFjZSw4OTAxLFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVsYXRpb25JZCkK IAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcG5wdWJpZCBCS0lfTE9PS1VQKHBnX3B1 YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9pZAkJCXBubnNwaWQg QktJX0xPT0tVUChwZ19uYW1lc3BhY2UpOwkvKiBPaWQgb2YgdGhlIHNjaGVtYSAqLworCWJvb2wJ CXBuc2tpcCBCS0lfREVGQVVMVChmKTsKIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb25fbmFtZXNw YWNlOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5oCmluZGV4IDc4MTNjYmNiNmIuLjBmMjdjZDgzNDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5oCkBAIC0zMiw2ICszMiw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNz IEFsdGVyUHVibGljYXRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3T3duZXJJZCk7 CiBleHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uT3duZXJfb2lkKE9pZCBwdWJpZCwgT2lkIG5l d093bmVySWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhMaXN0ICpy ZWxpZHMpOwogZXh0ZXJuIGJvb2wgY29udGFpbl9pbnZhbGlkX3JmY29sdW1uKE9pZCBwdWJpZCwg UmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkgTGlzdCAqYW5jZXN0b3JzLCBib29sIHB1YnZp YXJvb3QpOworCQkJCQkJCQkJIExpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290LAorCQkJ CQkJCQkJIGJvb2wgcHViYWxsdGFibGVzKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBVQkxJQ0FUSU9O Q01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA1ZDA3NWYwYzM0Li4xOGJiYTNiZjNiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25v ZGVzLmgKQEAgLTQ5MCw2ICs0OTAsNyBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfUGFydGl0 aW9uQ21kLAogCVRfVmFjdXVtUmVsYXRpb24sCiAJVF9QdWJsaWNhdGlvbk9ialNwZWMsCisJVF9Q dWJsaWNhdGlvblNjaEluZm8sCiAJVF9QdWJsaWNhdGlvblRhYmxlLAogCiAJLyoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAppbmRleCA2ZjgzYTc5YTk2Li4xZDRjZjAxNWZlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCkBAIC0zNjcyLDYgKzM2NzIsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbk9i alNwZWMKIAlQdWJsaWNhdGlvbk9ialNwZWNUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhp cyBwdWJsaWNhdGlvbiBvYmplY3QgKi8KIAljaGFyCSAgICpuYW1lOwogCVB1YmxpY2F0aW9uVGFi bGUgKnB1YnRhYmxlOworCWJvb2wJCXNraXA7CiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBs b2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWM7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggNGUxOTFjMTIwYS4u ZmFhMmNlMzRlMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNh dGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQK QEAgLTgxLDYgKzgxLDM1IEBAIERFVEFJTDogIFRhYmxlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUg YWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZPUiBBTEwKIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxsdGFibGVzIiBpcyBkZWZpbmVk IGFzIEZPUiBBTEwgVEFCTEVTCiBERVRBSUw6ICBUYWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJl IGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbnMuCistLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgc2tpcCBzY2hlbWEgdG8gJ0ZPUiBBTEwg VEFCTEVTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJs ZXMgQUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCitTa2lwIHRhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorCist LSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIHNraXAgc2NoZW1hIGZyb20gJ0ZPUiBBTEwgVEFCTEVT JyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgRFJP UCBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9mb3Jh bGx0YWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9yYWxsdGFibGVzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAg IHwgZgorKDEgcm93KQorCistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2tpcCBzY2hlbWEgdG8g J0ZPUiBBTEwgVEFCTEVTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JhbGx0YWJsZXMgU0VUIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJw KyB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgfCBmICAgICAgICAgfCBmCitTa2lwIHRhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90 ZXN0IgorCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxOwogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKQEAgLTExNiw2ICsxNDUsMTggQEAgQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBTRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIAorLS0gZmFpbCAtIGNhbid0IGFkZCBz a2lwIHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBBREQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsK K0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGFibGUiIGlzIG5vdCBkZWZpbmVkIGFz IEZPUiBBTEwgVEFCTEVTCitERVRBSUw6ICBTa2lwIHRhYmxlcyBmcm9tIHNjaGVtYSBjYW5ub3Qg YmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1Ymxp Y2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBkcm9wIHNraXAgc2NoZW1hIGZyb20gJ0ZPUiBUQUJM RScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBT S0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworRVJST1I6ICBwdWJsaWNhdGlvbiAi dGVzdHB1Yl9mb3J0YWJsZSIgaXMgbm90IGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMKK0RFVEFJ TDogIFNraXAgdGFibGVzIGZyb20gc2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBm cm9tLCBvciBzZXQgb24gTk9OIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNh bid0IHNldCBza2lwIHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBw dWJfdGVzdDsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGFibGUiIGlzIG5vdCBk ZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTCitERVRBSUw6ICBTa2lwIHRhYmxlcyBmcm9tIHNjaGVt YSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9ucy4KIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3Q7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwpAQCAtMTQxLDYgKzE4Miwx OCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl9ub3BrOwogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAK Ky0tIGZhaWwgLSBjYW4ndCBhZGQgc2tpcCBzY2hlbWEgdG8gc2NoZW1hIHB1YmxpY2F0aW9uCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBBREQgU0tJUCBBTEwgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdDsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yc2NoZW1h IiBpcyBub3QgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUworREVUQUlMOiAgU2tpcCB0YWJsZXMg ZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBO T04gQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3QgZHJvcCBza2lwIHNj aGVtYSBmcm9tIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JzY2hlbWEgRFJPUCBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworRVJST1I6 ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JzY2hlbWEiIGlzIG5vdCBkZWZpbmVkIGFzIEZPUiBB TEwgVEFCTEVTCitERVRBSUw6ICBTa2lwIHRhYmxlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUgYWRk ZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIE5PTiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9u cy4KKy0tIGZhaWwgLSBjYW4ndCBzZXQgc2tpcCBzY2hlbWEgdG8gc2NoZW1hICBwdWJsaWNhdGlv bgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFNLSVAgQUxMIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNj aGVtYSIgaXMgbm90IGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIFNraXAgdGFi bGVzIGZyb20gc2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQg b24gTk9OIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgogU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRh YmxlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGx0 YWJsZXMnOwogICAgICAgIHB1Ym5hbWUgICAgICAgIHwgcHViYWxsdGFibGVzIAogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQpAQCAtMTYzLDEwICsyMTYsMzcgQEAgUHVibGlj YXRpb25zOgogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKLSgx IHJvdykKK1NraXAgdGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19za2lwc2NoZW1hIEZPUiBBTEwgVEFCTEVTIFNLSVAgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3Q7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworXGRScCsgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfc2tpcHNjaGVtYQorICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfc2tpcHNjaGVtYQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKK1NraXAgdGFibGVzIGZyb20gc2NoZW1hczoK KyAgICAicHViX3Rlc3QiCiAKKy0tIGZhaWwgLSBjYW4ndCBzcGVjaWZ5IHNraXAgc2NoZW1hIGFs b25nIHdpdGggdGFibGUgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlX3NraXBzY2hlbWEgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9waywgU0tJUCBB TEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK0VSUk9SOiAgU0tJUCBBTEwgVEFCTEVTIElO IFNDSEVNQSBjYW4gYmUgc3BlY2lmaWVkIG9ubHkgd2l0aCBBTEwgVEFCTEVTIG9wdGlvbgorTElO RSAxOiAuLi5FIHB1Yl90ZXN0LnRlc3RwdWJfbm9waywgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIGNhbid0IHNwZWNpZnkgc2tpcCBzY2hlbWEg YWxvbmcgd2l0aCBzY2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnNjaGVtYV9za2lwc2NoZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwg U0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK0VSUk9SOiAgU0tJUCBBTEwgVEFC TEVTIElOIFNDSEVNQSBjYW4gYmUgc3BlY2lmaWVkIG9ubHkgd2l0aCBBTEwgVEFCTEVTIG9wdGlv bgorTElORSAxOiAuLi5CTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgU0tJUCBBTEwgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIGNhbid0IHNwZWNpZnkgb25seSBz a2lwIHNjaGVtYSB3aGlsZSBjcmVhdGUgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX3NraXBzY2hlbWEgRk9SIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7 CitFUlJPUjogIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgY2FuIGJlIHNwZWNpZmllZCBvbmx5 IHdpdGggQUxMIFRBQkxFUyBvcHRpb24KK0xJTkUgMTogLi4uTiB0ZXN0cHViX3NraXBzY2hlbWEg Rk9SIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIERST1AgVEFC TEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywg dGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwg dGVzdHB1Yl9mb3JhbGx0YWJsZXNfc2tpcHNjaGVtYTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3Ri bDMgKGEgaW50KTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRT ICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDU0NTdjNTZiMzMuLmRlMTk3MGY5ZTAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTU4LDYgKzU4LDE2IEBAIEFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIERST1AgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3Q7CiAtLSBmYWlsIC0gY2FuJ3Qgc2V0IHNjaGVtYSB0byAnRk9SIEFMTCBU QUJMRVMnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxl cyBTRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiAKKy0tIHNob3VsZCBiZSBhYmxl IHRvIGFkZCBza2lwIHNjaGVtYSB0byAnRk9SIEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBBREQgU0tJUCBBTEwgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCistLSBzaG91bGQg YmUgYWJsZSB0byBkcm9wIHNraXAgc2NoZW1hIGZyb20gJ0ZPUiBBTEwgVEFCTEVTJyBwdWJsaWNh dGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgRFJPUCBTS0lQIEFM TCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMK Ky0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCBza2lwIHNjaGVtYSB0byAnRk9SIEFMTCBUQUJMRVMn IHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBTRVQg U0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfZm9yYWxs dGFibGVzCisKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEZPUiBUQUJMRSB0ZXN0cHViX3RibDE7CiBSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOwpAQCAtNzEsNiArODEsMTMgQEAgQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3J0YWJsZSBEUk9QIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCiAKKy0tIGZhaWwgLSBjYW4ndCBhZGQg c2tpcCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgQUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7 CistLSBmYWlsIC0gY2FuJ3QgZHJvcCBza2lwIHNjaGVtYSBmcm9tICdGT1IgVEFCTEUnIHB1Ymxp Y2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgU0tJUCBBTEwg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKKy0tIGZhaWwgLSBjYW4ndCBzZXQgc2tpcCBzY2hl bWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9ydGFibGUgU0VUIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CisKIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnNjaGVtYSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwpAQCAtODUsMTIgKzEwMiwzNCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQogCistLSBmYWlsIC0gY2FuJ3QgYWRkIHNr aXAgc2NoZW1hIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JzY2hlbWEgQUREIFNLSVAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CistLSBm YWlsIC0gY2FuJ3QgZHJvcCBza2lwIHNjaGVtYSBmcm9tIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRFJPUCBTS0lQIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OworLS0gZmFpbCAtIGNhbid0IHNldCBza2lwIHNjaGVtYSB0byBzY2hl bWEgIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQg U0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKKwogU0VMRUNUIHB1Ym5hbWUsIHB1 YmFsbHRhYmxlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9m b3JhbGx0YWJsZXMnOwogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJs ZXMKIAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX3NraXBzY2hlbWEgRk9SIEFMTCBUQUJMRVMgU0tJUCBB TEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CisKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX3NraXBzY2hlbWEKKworLS0gZmFpbCAtIGNh bid0IHNwZWNpZnkgc2tpcCBzY2hlbWEgYWxvbmcgd2l0aCB0YWJsZSBwdWJsaWNhdGlvbgorQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfc2tpcHNjaGVtYSBGT1IgVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl9ub3BrLCBTS0lQIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0Owor CistLSBmYWlsIC0gY2FuJ3Qgc3BlY2lmeSBza2lwIHNjaGVtYSBhbG9uZyB3aXRoIHNjaGVtYSBw dWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hX3NraXBzY2hl bWEgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBTS0lQIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OworCistLSBmYWlsIC0gY2FuJ3Qgc3BlY2lmeSBvbmx5IHNraXAgc2No ZW1hIHdoaWxlIGNyZWF0ZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c2tpcHNjaGVtYSBGT1IgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKKwogRFJP UCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYTsKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2No ZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19za2lwc2NoZW1hOwogCiBDUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmwzIChhIGludCk7CiBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJ TkhFUklUUyAodGVzdHB1Yl90YmwzKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzMF9yZXBfY2hhbmdlc19za2lwX3NjaGVtYS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzMF9yZXBfY2hhbmdlc19za2lwX3NjaGVtYS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi43YTE2YWQzNTBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDMwX3JlcF9jaGFuZ2VzX3NraXBfc2NoZW1hLnBsCkBAIC0wLDAgKzEs OTYgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0aW9uIHRlc3RzIGZvciBza2lwIHNj aGVtYSBwdWJsaWNhdGlvbnMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBU ZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9k ZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVf cHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9z dWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsK KyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIFRlc3QgcmVwbGljYXRpb24gd2l0aCBwdWJs aWNhdGlvbnMgY3JlYXRlZCB1c2luZyBGT1IgQUxMIFRBQkxFUyBTS0lQIEFMTCBUQUJMRVMgSU4g U0NIRU1BCisjIG9wdGlvbi4KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBwdWJsaXNo ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgU0NIRU1B IHNjaDEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFU RSBUQUJMRSBzY2gxLnRhYjEgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUg cHVibGljLnRhYjEoYSBpbnQpIik7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBz dWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFU RSBTQ0hFTUEgc2NoMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHB1YmxpYy50YWIxIChhIGludCkiKTsK KworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAk bm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1 Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBzY2gxIik7 CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiCispOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyMgQWxzbyB3YWl0IGZvciBpbml0aWFs IHRhYmxlIHN5bmMgdG8gZmluaXNoCitteSAkc3luY2VkX3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3Vu dCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25fcmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElO ICgncicsICdzJyk7IjsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0aGUgc2NoZW1h IHRhYmxlIGRhdGEgZG9lcyBub3Qgc3luYyBmb3Igc2tpcCBzY2hlbWFzCitteSAkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgq KSwgbWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCks ICdjaGVjayB0YWJsZXN5bmMgaXMgc2tpcHBlZCBmb3Igc2tpcCBzY2hlbWFzJyk7CisKKyMgSW5z ZXJ0IHNvbWUgZGF0YSBpbnRvIGZldyB0YWJsZXMgYW5kIHZlcmlmeSB0aGF0IGluc2VydGVkIGRh dGEgaXMgbm90IHJlcGxpY2F0ZWQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDExLDIw KSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVt YScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsKK2lz KCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJl cicpOworCisjIEFsdGVyIHB1YmxpY2F0aW9uIHRvIHNraXAgZGF0YSBjaGFuZ2VzIGluIHB1Ymxp YyBhbmQgdmVyaWZ5IHRoYXQgc3Vic2NyaWJlciBkb2VzIG5vdCBnZXQKKyMgdGhlIG5ldyB0YWJs ZSBkYXRhLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAgICAg IkFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIGFkZCBTS0lQIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHB1YmxpYyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KyAgICAgICAgIklOU0VSVCBJTlRPIHB1YmxpYy50YWIxIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMo MSwxMCkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9z Y2hlbWEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gcHVibGljLnRhYjEi KTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByb3dzIG9uIHN1YnNjcmliZXIgY2F0Y2h1 cCcpOworCisjIEFsdGVyIHB1YmxpY2F0aW9uIHRvIGRyb3Agc2tpcCBzY2hlbWEgcHVibGljIGFu ZCB2ZXJpZnkgdGhhdCBzdWJzY3JpYmVyIGdldHMKKyMgdGhlIG5ldyB0YWJsZSBkYXRhLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAgICAgIkFMVEVSIFBVQkxJ Q0FUSU9OIHRhcF9wdWJfc2NoZW1hIGRyb3AgU0tJUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJs aWMiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgICAgICJJ TlNFUlQgSU5UTyBwdWJsaWMudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDEsMTApKSIpOwor Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7CisK KyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAg ICAgIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBwdWJsaWMudGFiMSIpOwor aXMoJHJlc3VsdCwgcXEoMTB8MXwxMCksICdjaGVjayByb3dzIG9uIHN1YnNjcmliZXIgY2F0Y2h1 cCcpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdmYXN0Jyk7Ciskbm9kZV9wdWJsaXNoZXIt PnN0b3AoJ2Zhc3QnKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IDkzZDUxOTA1MDguLmU4NTY5ZjI4MzUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0yMDY1LDYgKzIwNjUsNyBAQCBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiBQdWJsaWNhdGlv blBhcnRPcHQKIFB1YmxpY2F0aW9uUmVsSW5mbwogUHVibGljYXRpb25TY2hlbWFJbmZvCitQdWJs aWNhdGlvblNjaEluZm8KIFB1YmxpY2F0aW9uVGFibGUKIFB1bGxGaWx0ZXIKIFB1bGxGaWx0ZXJP cHMKLS0gCjIuMzIuMAoK --0000000000002fc5ca05dac94982--