Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1venTs-000Nqb-2q for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jan 2026 04:55:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1venTq-00BAVQ-1M for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jan 2026 04:55:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1venTp-00BAVI-2l for pgsql-hackers@lists.postgresql.org; Sun, 11 Jan 2026 04:55:10 +0000 Received: from mail-dl1-x1235.google.com ([2607:f8b0:4864:20::1235]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1venTn-005wqh-0b for pgsql-hackers@postgresql.org; Sun, 11 Jan 2026 04:55:09 +0000 Received: by mail-dl1-x1235.google.com with SMTP id a92af1059eb24-121b14d0089so5775026c88.0 for ; Sat, 10 Jan 2026 20:55:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1768107304; x=1768712104; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=Afro5kx0VKMQQvnfdw3jtPclQG+2QF28TYoVd3MJK/M=; b=hv9ifAdx3Z5VFtrgHCr6juT9+LnOjOJcjFJXo8T7oeuVO+iRFD3dJeNhrwMjUsfTHD A5cHhAkafwNGF4k0Bnmix60sqp1R31RsEQyn/ylr1M51kmEEp13o7t9xy/t1ZsQTc7E/ ItaUO88w8kCSkiFDaE3LWcnP0XRvtDHUkexaxfdlh0kCrh/Pw35yfXPVDqMmqL7CX1U5 8XClHAEp/Kf9MlLkyTysLiqUfdvgWFH+5jgix0NPs9cB4Xy4WEY/dC2jPYinoIBJBKr8 Te1Ds4RCoXcHic58C6cWVIDNCqKURzrnymN98qW2Bs7161cvvhvt6c4rtTAsYnapOwM6 b8lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768107304; x=1768712104; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Afro5kx0VKMQQvnfdw3jtPclQG+2QF28TYoVd3MJK/M=; b=aWiTzmzGfdsykBe7/K9SCN+9VHdAHEYO6HOsCcMkJ470FKssgUypm75VbVXMWEDbwl 6/C1Xh7VZN/3kBkN2lBf3+WWBqIIoeMz9a0RSRDK4e1JtSG4jqfNOg0Ut1dllNOJNeLT QRWlrzFaI0jiQ2/SmxGEExSTle6kiF4wqKXo9/0KKVGkWh2A1BOR1qpZHoJDMISqnQvT MKwoOUKYJlYlcow3BQ2CqbZSPvTgbUsVKoNAwRqU5WArC0aYYdHK9f0XrA6HqBO9HyjB 4YCcyR29pwA6ZOQg78fvkKep1gwH1qRlYr68BfT1Xb6yaM+z3qPuo/KE9RWLUykQixpo j0rA== X-Forwarded-Encrypted: i=1; AJvYcCW8gR0SZiMleoSFvblXajGbGmpeO5ukcvbYeegeWLf2RouP+KGhzPiSg9MGX9sRPkJ9Vfe+LDmRrWOwRC9R@postgresql.org X-Gm-Message-State: AOJu0Yxw0CH7o/tuLKWZToV/y7U7mnuxm9R+V9VtSs0U/OgiLlOIkVpY vgG4FlBrSemDQ4crHXW5WBsAo9ndZrVxOD/S7lSS5yh+4LId/sZh6gqa6n0mNO0YZw== X-Gm-Gg: AY/fxX7gaMWQxmF/5zyMYIhG7NLxa1IBgnY3y+kzewLfQOh7Sc4cZfyCKVyL8eowcHw qeM6dkU7d7gIhwB31VLTnO25rY6RLn9mQmmYsAyi2E97fMneCHgFpKfS+mdQhkjkiGhnzIa1nn5 DbbitOnoffxHDXIkDxenQSU86XTOZLQ6PVmwVgP7Q+wTKrgxcrPf0jGzShLkQtTWErYA4CNxb0r oex6fYbY59GWMoVfsDmpPTHMxpp1YjKnkT1cyZ5TFAfqZlW5EQxbzQNNPnnEtwY5MFt/LK5PG6Q t1Re14RnUbWX3H7VoioDloqtH13w2hVYo39ZWbFf90CmUnIAiuYXCV1t1/jxlEW7quMcsQT7Dl9 n8avqz1z6eWFrBJ+6iCQyF3uQMseFG1h8HbsJs0eoW6PNwZ7qwUZCNAJXx1A0qHyJH9gxiOXkJd wGqnbU5EBr/bDIqaqgT8DnCpX6hRuZAO0vhKkvXWPz6EU= X-Google-Smtp-Source: AGHT+IFuoe9YSZMsjq9nWrduLCAAzLXxGQs1JJeBmjPTwnQrXtMdvT2BDGilV0a1aEMK/HCWZWsDGw== X-Received: by 2002:a05:7022:609a:b0:11b:923d:7735 with SMTP id a92af1059eb24-121f8af867cmr14073305c88.1.1768107303641; Sat, 10 Jan 2026 20:55:03 -0800 (PST) Received: from jeff-ws-bridge.lan (c-24-7-19-3.hsd1.ca.comcast.net. [24.7.19.3]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-121f23b798asm16321699c88.0.2026.01.10.20.55.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Jan 2026 20:55:02 -0800 (PST) Message-ID: <5dfe845221db2e7d38fc7c2a18a4ba5ea29cdfc0.camel@j-davis.com> Subject: Re: [19] CREATE SUBSCRIPTION ... SERVER From: Jeff Davis To: Shlok Kyal Cc: Ashutosh Bapat , Bharath Rupireddy , Joe Conway , pgsql-hackers@postgresql.org Date: Sat, 10 Jan 2026 20:55:01 -0800 In-Reply-To: <7a5df376fffb273430aec9e89f88c31d52dcf295.camel@j-davis.com> References: <149ff9264db27cdf724b65709fbbaee4bf316835.camel@j-davis.com> <830a2bc6cbbb2e6e01c6c0d9f31f320822e10603.camel@j-davis.com> <433d0845248e86c0317d9d396926182cfe157340.camel@j-davis.com> <05ae37abb207cd6bf6b126780024692d91402b0b.camel@j-davis.com> <93392ffa941ab0d436e19e0ab5d04d0e42c02d3f.camel@j-davis.com> <26be917cb07b6aa3ef5dd15f6b59d1b375ece6e8.camel@j-davis.com> <55201bd916e748acfc754c8f95880dae8e4e5ed0.camel@j-davis.com> <2a89b14a2b1622bffb8b137ca1f9ab7866f2d2b9.camel@j-davis.com> <61831790a0a937038f78ce09f8dd4cef7de7456a.camel@j-davis.com> <0910b47040406c1d24ec0150dafb5bae6b910ed7.camel@j-davis.com> <7338f22c4534322a08ab6ce9f879e2e308eb5e5d.camel@j-davis.com> <34fd5885b8245d1014f4426ea22af61229d42e3e.camel@j-davis.com> <7a5df376fffb273430aec9e89f88c31d52dcf295.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-kl0RrKiC5IM47BBuZ/Ok" User-Agent: Evolution 3.52.3-0ubuntu1.1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-kl0RrKiC5IM47BBuZ/Ok Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2025-12-26 at 13:52 -0800, Jeff Davis wrote: > On Wed, 2025-04-02 at 17:58 +0530, Shlok Kyal wrote: > > I reviewed the patch and I have a comment: > >=20 > > If version is >=3D18, the query will have 'suboriginremotelsn', > > 'subenabled', 'subfailover' twice. >=20 > Thank you. Fixed and rebased. Attached new version with significant changes: - fixed several issues (including some improper merges in the last rebase) - refactored to share code between postgres_fdw_connection() and connect_pg_server() - added docs in postgres_fdw - added tests in core - bumped postgres_fdw version to 1.3 Regards, Jeff Davis --=-kl0RrKiC5IM47BBuZ/Ok Content-Disposition: attachment; filename="v16-0001-CREATE-SUBSCRIPTION-.-SERVER.patch" Content-Type: text/x-patch; name="v16-0001-CREATE-SUBSCRIPTION-.-SERVER.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0ZDNiOWVlZWYyODI4NGE0MWQ5NmU0MWU4NGFmMjVjMTBlNzliYTIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDIgSmFuIDIwMjQgMTM6NDI6NDggLTA4MDAKU3ViamVjdDogW1BBVENIIHYxNl0gQ1JFQVRF IFNVQlNDUklQVElPTiAuLi4gU0VSVkVSLgoKLS0tIENBVFZFUlNJT04gQlVNUCAtLS0KCkFsbG93 IHNwZWNpZnlpbmcgYSBmb3JlaWduIHNlcnZlciBmb3IgQ1JFQVRFIFNVQlNDUklQVElPTiwgcmF0 aGVyIHRoYW4KYSByYXcgY29ubmVjdGlvbiBzdHJpbmcgd2l0aCBDT05ORUNUSU9OLgoKVXNpbmcg YSBmb3JlaWduIHNlcnZlciBhcyBhIGxheWVyIG9mIGluZGlyZWN0aW9uIGltcHJvdmVzIG1hbmFn ZW1lbnQKb2YgbXVsdGlwbGUgc3Vic2NyaXB0aW9ucyB0byB0aGUgc2FtZSBzZXJ2ZXIuIEl0IGFs c28gcHJvdmlkZXMKaW50ZWdyYXRpb24gd2l0aCB1c2VyIG1hcHBpbmdzIGluIGNhc2UgZGlmZmVy ZW50IHN1YnNjcmlwdGlvbnMgaGF2ZQpkaWZmZXJlbnQgb3duZXJzIG9yIGEgc3Vic2NyaXB0aW9u IGNoYW5nZXMgb3duZXJzLgoKUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5i YXBhdC5vc3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU2hsb2sgS3lhbCA8c2hsb2sua3lhbC5v c3NAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzYxODMxNzkwYTBh OTM3MDM4Zjc4Y2UwOWY4ZGQ0Y2VmN2RlNzQ1NmEuY2FtZWxAai1kYXZpcy5jb20KLS0tCiBjb250 cmliL3Bvc3RncmVzX2Zkdy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGNvbnRy aWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDI5OSArKysrKysrKysr Ky0tLS0tLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8 ICAgOCArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAg IDIgKwogLi4uL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHctLTEuMi0tMS4zLnNxbCAgIHwgIDEy ICsKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jb250cm9sICAgICB8ICAgMiAr LQogY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgICA3ICsK IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1YnNjcmlwdGlvbi5wbCAgICB8ICA3MSArKysr KwogZG9jL3NyYy9zZ21sL3Bvc3RncmVzLWZkdy5zZ21sICAgICAgICAgICAgICAgIHwgIDI2ICsr CiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgfCAgMTggKy0K IGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAxMSArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgIDM4ICsrLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYyAgICAgICAgICAgIHwgIDU4ICsrKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8IDE2OCArKysr KysrKystCiBzcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyAgICAgICAgICAgICAgICAgfCAg ODEgKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8 ICAyMiArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDE2ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAg MzkgKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgIDEx ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyLmggfCAgIDMg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgIHwgICA3ICst CiBzcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaCAgICAgICAgICAgICAgICAgfCAgIDMgKwog c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAzICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0ICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgMjMgKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgfCAgMjYgKysKIDI4IGZpbGVz IGNoYW5nZWQsIDgxMCBpbnNlcnRpb25zKCspLCAxNTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LS0xLjItLTEuMy5zcWwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3Bvc3RncmVzX2Zkdy90LzAxMF9zdWJzY3JpcHRp b24ucGwKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9NYWtlZmlsZSBiL2NvbnRy aWIvcG9zdGdyZXNfZmR3L01ha2VmaWxlCmluZGV4IDhlYWY0ZDI2M2I2Li5iOGM3OGI1ODgwNCAx MDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvTWFrZWZpbGUKQEAgLTE0LDcgKzE0LDcgQEAgUEdfQ1BQRkxBR1MgPSAtSSQo bGlicHFfc3JjZGlyKQogU0hMSUJfTElOS19JTlRFUk5BTCA9ICQobGlicHEpCiAKIEVYVEVOU0lP TiA9IHBvc3RncmVzX2ZkdwotREFUQSA9IHBvc3RncmVzX2Zkdy0tMS4wLnNxbCBwb3N0Z3Jlc19m ZHctLTEuMC0tMS4xLnNxbCBwb3N0Z3Jlc19mZHctLTEuMS0tMS4yLnNxbAorREFUQSA9IHBvc3Rn cmVzX2Zkdy0tMS4wLnNxbCBwb3N0Z3Jlc19mZHctLTEuMC0tMS4xLnNxbCBwb3N0Z3Jlc19mZHct LTEuMS0tMS4yLnNxbCBwb3N0Z3Jlc19mZHctLTEuMi0tMS4zLnNxbAogCiBSRUdSRVNTID0gcG9z dGdyZXNfZmR3IHF1ZXJ5X2NhbmNlbAogSVNPTEFUSU9OID0gZXZhbF9wbGFuX3F1YWwKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA0ODdhMWEyMzE3MC4uMGQyZGViYmVhZDAgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTEzMiw2ICsxMzIsNyBAQCBQR19GVU5DVElPTl9J TkZPX1YxKHBvc3RncmVzX2Zkd19nZXRfY29ubmVjdGlvbnMpOwogUEdfRlVOQ1RJT05fSU5GT19W MShwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zXzFfMik7CiBQR19GVU5DVElPTl9JTkZPX1Yx KHBvc3RncmVzX2Zkd19kaXNjb25uZWN0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNf ZmR3X2Rpc2Nvbm5lY3RfYWxsKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNfZmR3X2Nv bm5lY3Rpb24pOwogCiAvKiBwcm90b3R5cGVzIG9mIHByaXZhdGUgZnVuY3Rpb25zICovCiBzdGF0 aWMgdm9pZCBtYWtlX25ld19jb25uZWN0aW9uKENvbm5DYWNoZUVudHJ5ICplbnRyeSwgVXNlck1h cHBpbmcgKnVzZXIpOwpAQCAtNDc2LDE0MSArNDc3LDE1OSBAQCBwZ2Zkd19zZWN1cml0eV9jaGVj ayhjb25zdCBjaGFyICoqa2V5d29yZHMsIGNvbnN0IGNoYXIgKip2YWx1ZXMsIFVzZXJNYXBwaW5n ICp1cwogfQogCiAvKgotICogQ29ubmVjdCB0byByZW1vdGUgc2VydmVyIHVzaW5nIHNwZWNpZmll ZCBzZXJ2ZXIgYW5kIHVzZXIgbWFwcGluZyBwcm9wZXJ0aWVzLgorICogQ29uc3RydWN0IGNvbm5l Y3Rpb24gcGFyYW1zIGZyb20gZ2VuZXJpYyBvcHRpb25zIG9mIEZvcmVpZ25TZXJ2ZXIgYW5kCisg KiBVc2VyTWFwcGluZy4gIChTb21lIG9mIHRoZW0gbWlnaHQgbm90IGJlIGxpYnBxIG9wdGlvbnMs IGluIHdoaWNoIGNhc2Ugd2UnbGwKKyAqIGp1c3Qgd2FzdGUgYSBmZXcgYXJyYXkgc2xvdHMuKQog ICovCi1zdGF0aWMgUEdjb25uICoKLWNvbm5lY3RfcGdfc2VydmVyKEZvcmVpZ25TZXJ2ZXIgKnNl cnZlciwgVXNlck1hcHBpbmcgKnVzZXIpCitzdGF0aWMgdm9pZAorY29uc3RydWN0X2Nvbm5lY3Rp b25fcGFyYW1zKEZvcmVpZ25TZXJ2ZXIgKnNlcnZlciwgVXNlck1hcHBpbmcgKnVzZXIsCisJCQkJ CQkJY29uc3QgY2hhciAqKipwX2tleXdvcmRzLCBjb25zdCBjaGFyICoqKnBfdmFsdWVzLAorCQkJ CQkJCWNoYXIgKipwX2FwcG5hbWUpCiB7Ci0JUEdjb25uCSAgICp2b2xhdGlsZSBjb25uID0gTlVM TDsKKwljb25zdCBjaGFyICoqa2V5d29yZHM7CisJY29uc3QgY2hhciAqKnZhbHVlczsKKwljaGFy CSAgICphcHBuYW1lID0gTlVMTDsKKwlpbnQJCQluOwogCiAJLyoKLQkgKiBVc2UgUEdfVFJZIGJs b2NrIHRvIGVuc3VyZSBjbG9zaW5nIGNvbm5lY3Rpb24gb24gZXJyb3IuCisJICogQWRkIDQgZXh0 cmEgc2xvdHMgZm9yIGFwcGxpY2F0aW9uX25hbWUsIGZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWUs CisJICogY2xpZW50X2VuY29kaW5nLCBlbmQgbWFya2VyLCBhbmQgMyBleHRyYSBzbG90cyBmb3Ig c2NyYW0ga2V5cyBhbmQKKwkgKiByZXF1aXJlZCBzY3JhbSBwYXNzLXRocm91Z2ggb3B0aW9ucy4K IAkgKi8KLQlQR19UUlkoKTsKLQl7Ci0JCWNvbnN0IGNoYXIgKiprZXl3b3JkczsKLQkJY29uc3Qg Y2hhciAqKnZhbHVlczsKLQkJY2hhcgkgICAqYXBwbmFtZSA9IE5VTEw7Ci0JCWludAkJCW47CisJ biA9IGxpc3RfbGVuZ3RoKHNlcnZlci0+b3B0aW9ucykgKyBsaXN0X2xlbmd0aCh1c2VyLT5vcHRp b25zKSArIDQgKyAzOworCWtleXdvcmRzID0gKGNvbnN0IGNoYXIgKiopIHBhbGxvYyhuICogc2l6 ZW9mKGNoYXIgKikpOworCXZhbHVlcyA9IChjb25zdCBjaGFyICoqKSBwYWxsb2MobiAqIHNpemVv ZihjaGFyICopKTsKIAotCQkvKgotCQkgKiBDb25zdHJ1Y3QgY29ubmVjdGlvbiBwYXJhbXMgZnJv bSBnZW5lcmljIG9wdGlvbnMgb2YgRm9yZWlnblNlcnZlcgotCQkgKiBhbmQgVXNlck1hcHBpbmcu ICAoU29tZSBvZiB0aGVtIG1pZ2h0IG5vdCBiZSBsaWJwcSBvcHRpb25zLCBpbgotCQkgKiB3aGlj aCBjYXNlIHdlJ2xsIGp1c3Qgd2FzdGUgYSBmZXcgYXJyYXkgc2xvdHMuKSAgQWRkIDQgZXh0cmEg c2xvdHMKLQkJICogZm9yIGFwcGxpY2F0aW9uX25hbWUsIGZhbGxiYWNrX2FwcGxpY2F0aW9uX25h bWUsIGNsaWVudF9lbmNvZGluZywKLQkJICogZW5kIG1hcmtlciwgYW5kIDMgZXh0cmEgc2xvdHMg Zm9yIHNjcmFtIGtleXMgYW5kIHJlcXVpcmVkIHNjcmFtCi0JCSAqIHBhc3MtdGhyb3VnaCBvcHRp b25zLgotCQkgKi8KLQkJbiA9IGxpc3RfbGVuZ3RoKHNlcnZlci0+b3B0aW9ucykgKyBsaXN0X2xl bmd0aCh1c2VyLT5vcHRpb25zKSArIDQgKyAzOwotCQlrZXl3b3JkcyA9IChjb25zdCBjaGFyICoq KSBwYWxsb2MobiAqIHNpemVvZihjaGFyICopKTsKLQkJdmFsdWVzID0gKGNvbnN0IGNoYXIgKiop IHBhbGxvYyhuICogc2l6ZW9mKGNoYXIgKikpOworCW4gPSAwOworCW4gKz0gRXh0cmFjdENvbm5l Y3Rpb25PcHRpb25zKHNlcnZlci0+b3B0aW9ucywKKwkJCQkJCQkJICBrZXl3b3JkcyArIG4sIHZh bHVlcyArIG4pOworCW4gKz0gRXh0cmFjdENvbm5lY3Rpb25PcHRpb25zKHVzZXItPm9wdGlvbnMs CisJCQkJCQkJCSAga2V5d29yZHMgKyBuLCB2YWx1ZXMgKyBuKTsKIAotCQluID0gMDsKLQkJbiAr PSBFeHRyYWN0Q29ubmVjdGlvbk9wdGlvbnMoc2VydmVyLT5vcHRpb25zLAotCQkJCQkJCQkJICBr ZXl3b3JkcyArIG4sIHZhbHVlcyArIG4pOwotCQluICs9IEV4dHJhY3RDb25uZWN0aW9uT3B0aW9u cyh1c2VyLT5vcHRpb25zLAotCQkJCQkJCQkJICBrZXl3b3JkcyArIG4sIHZhbHVlcyArIG4pOwot Ci0JCS8qCi0JCSAqIFVzZSBwZ2Zkd19hcHBsaWNhdGlvbl9uYW1lIGFzIGFwcGxpY2F0aW9uX25h bWUgaWYgc2V0LgotCQkgKgotCQkgKiBQUWNvbm5lY3RkYlBhcmFtcygpIHByb2Nlc3NlcyB0aGUg cGFyYW1ldGVyIGFycmF5cyBmcm9tIHN0YXJ0IHRvCi0JCSAqIGVuZC4gSWYgYW55IGtleSB3b3Jk IGlzIHJlcGVhdGVkLCB0aGUgbGFzdCB2YWx1ZSBpcyB1c2VkLiBUaGVyZWZvcmUKLQkJICogbm90 ZSB0aGF0IHBnZmR3X2FwcGxpY2F0aW9uX25hbWUgbXVzdCBiZSBhZGRlZCB0byB0aGUgYXJyYXlz IGFmdGVyCi0JCSAqIG9wdGlvbnMgb2YgRm9yZWlnblNlcnZlciBhcmUsIHNvIHRoYXQgaXQgY2Fu IG92ZXJyaWRlCi0JCSAqIGFwcGxpY2F0aW9uX25hbWUgc2V0IGluIEZvcmVpZ25TZXJ2ZXIuCi0J CSAqLwotCQlpZiAocGdmZHdfYXBwbGljYXRpb25fbmFtZSAmJiAqcGdmZHdfYXBwbGljYXRpb25f bmFtZSAhPSAnXDAnKQotCQl7Ci0JCQlrZXl3b3Jkc1tuXSA9ICJhcHBsaWNhdGlvbl9uYW1lIjsK LQkJCXZhbHVlc1tuXSA9IHBnZmR3X2FwcGxpY2F0aW9uX25hbWU7Ci0JCQluKys7Ci0JCX0KKwkv KgorCSAqIFVzZSBwZ2Zkd19hcHBsaWNhdGlvbl9uYW1lIGFzIGFwcGxpY2F0aW9uX25hbWUgaWYg c2V0LgorCSAqCisJICogUFFjb25uZWN0ZGJQYXJhbXMoKSBwcm9jZXNzZXMgdGhlIHBhcmFtZXRl ciBhcnJheXMgZnJvbSBzdGFydCB0byBlbmQuCisJICogSWYgYW55IGtleSB3b3JkIGlzIHJlcGVh dGVkLCB0aGUgbGFzdCB2YWx1ZSBpcyB1c2VkLiBUaGVyZWZvcmUgbm90ZQorCSAqIHRoYXQgcGdm ZHdfYXBwbGljYXRpb25fbmFtZSBtdXN0IGJlIGFkZGVkIHRvIHRoZSBhcnJheXMgYWZ0ZXIgb3B0 aW9ucworCSAqIG9mIEZvcmVpZ25TZXJ2ZXIgYXJlLCBzbyB0aGF0IGl0IGNhbiBvdmVycmlkZSBh cHBsaWNhdGlvbl9uYW1lIHNldCBpbgorCSAqIEZvcmVpZ25TZXJ2ZXIuCisJICovCisJaWYgKHBn ZmR3X2FwcGxpY2F0aW9uX25hbWUgJiYgKnBnZmR3X2FwcGxpY2F0aW9uX25hbWUgIT0gJ1wwJykK Kwl7CisJCWtleXdvcmRzW25dID0gImFwcGxpY2F0aW9uX25hbWUiOworCQl2YWx1ZXNbbl0gPSBw Z2Zkd19hcHBsaWNhdGlvbl9uYW1lOworCQluKys7CisJfQogCi0JCS8qCi0JCSAqIFNlYXJjaCB0 aGUgcGFyYW1ldGVyIGFycmF5cyB0byBmaW5kIGFwcGxpY2F0aW9uX25hbWUgc2V0dGluZywgYW5k Ci0JCSAqIHJlcGxhY2UgZXNjYXBlIHNlcXVlbmNlcyBpbiBpdCB3aXRoIHN0YXR1cyBpbmZvcm1h dGlvbiBpZiBmb3VuZC4KLQkJICogVGhlIGFycmF5cyBhcmUgc2VhcmNoZWQgYmFja3dhcmRzIGJl Y2F1c2UgdGhlIGxhc3QgdmFsdWUgaXMgdXNlZCBpZgotCQkgKiBhcHBsaWNhdGlvbl9uYW1lIGlz IHJlcGVhdGVkbHkgc2V0LgotCQkgKi8KLQkJZm9yIChpbnQgaSA9IG4gLSAxOyBpID49IDA7IGkt LSkKKwkvKgorCSAqIFNlYXJjaCB0aGUgcGFyYW1ldGVyIGFycmF5cyB0byBmaW5kIGFwcGxpY2F0 aW9uX25hbWUgc2V0dGluZywgYW5kCisJICogcmVwbGFjZSBlc2NhcGUgc2VxdWVuY2VzIGluIGl0 IHdpdGggc3RhdHVzIGluZm9ybWF0aW9uIGlmIGZvdW5kLiAgVGhlCisJICogYXJyYXlzIGFyZSBz ZWFyY2hlZCBiYWNrd2FyZHMgYmVjYXVzZSB0aGUgbGFzdCB2YWx1ZSBpcyB1c2VkIGlmCisJICog YXBwbGljYXRpb25fbmFtZSBpcyByZXBlYXRlZGx5IHNldC4KKwkgKi8KKwlmb3IgKGludCBpID0g biAtIDE7IGkgPj0gMDsgaS0tKQorCXsKKwkJaWYgKHN0cmNtcChrZXl3b3Jkc1tpXSwgImFwcGxp Y2F0aW9uX25hbWUiKSA9PSAwICYmCisJCQkqKHZhbHVlc1tpXSkgIT0gJ1wwJykKIAkJewotCQkJ aWYgKHN0cmNtcChrZXl3b3Jkc1tpXSwgImFwcGxpY2F0aW9uX25hbWUiKSA9PSAwICYmCi0JCQkJ Kih2YWx1ZXNbaV0pICE9ICdcMCcpCisJCQkvKgorCQkJICogVXNlIHRoaXMgYXBwbGljYXRpb25f bmFtZSBzZXR0aW5nIGlmIGl0J3Mgbm90IGVtcHR5IHN0cmluZyBldmVuCisJCQkgKiBhZnRlciBh bnkgZXNjYXBlIHNlcXVlbmNlcyBpbiBpdCBhcmUgcmVwbGFjZWQuCisJCQkgKi8KKwkJCWFwcG5h bWUgPSBwcm9jZXNzX3BnZmR3X2FwcG5hbWUodmFsdWVzW2ldKTsKKwkJCWlmIChhcHBuYW1lWzBd ICE9ICdcMCcpCiAJCQl7Ci0JCQkJLyoKLQkJCQkgKiBVc2UgdGhpcyBhcHBsaWNhdGlvbl9uYW1l IHNldHRpbmcgaWYgaXQncyBub3QgZW1wdHkgc3RyaW5nCi0JCQkJICogZXZlbiBhZnRlciBhbnkg ZXNjYXBlIHNlcXVlbmNlcyBpbiBpdCBhcmUgcmVwbGFjZWQuCi0JCQkJICovCi0JCQkJYXBwbmFt ZSA9IHByb2Nlc3NfcGdmZHdfYXBwbmFtZSh2YWx1ZXNbaV0pOwotCQkJCWlmIChhcHBuYW1lWzBd ICE9ICdcMCcpCi0JCQkJewotCQkJCQl2YWx1ZXNbaV0gPSBhcHBuYW1lOwotCQkJCQlicmVhazsK LQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIFRoaXMgZW1wdHkgYXBwbGljYXRpb25fbmFtZSBpcyBu b3QgdXNlZCwgc28gd2Ugc2V0Ci0JCQkJICogdmFsdWVzW2ldIHRvIE5VTEwgYW5kIGtlZXAgc2Vh cmNoaW5nIHRoZSBhcnJheSB0byBmaW5kIHRoZQotCQkJCSAqIG5leHQgb25lLgotCQkJCSAqLwot CQkJCXZhbHVlc1tpXSA9IE5VTEw7Ci0JCQkJcGZyZWUoYXBwbmFtZSk7Ci0JCQkJYXBwbmFtZSA9 IE5VTEw7CisJCQkJdmFsdWVzW2ldID0gYXBwbmFtZTsKKwkJCQlicmVhazsKIAkJCX0KKworCQkJ LyoKKwkJCSAqIFRoaXMgZW1wdHkgYXBwbGljYXRpb25fbmFtZSBpcyBub3QgdXNlZCwgc28gd2Ug c2V0IHZhbHVlc1tpXSB0bworCQkJICogTlVMTCBhbmQga2VlcCBzZWFyY2hpbmcgdGhlIGFycmF5 IHRvIGZpbmQgdGhlIG5leHQgb25lLgorCQkJICovCisJCQl2YWx1ZXNbaV0gPSBOVUxMOworCQkJ cGZyZWUoYXBwbmFtZSk7CisJCQlhcHBuYW1lID0gTlVMTDsKIAkJfQorCX0KKworCSpwX2FwcG5h bWUgPSBhcHBuYW1lOwogCi0JCS8qIFVzZSAicG9zdGdyZXNfZmR3IiBhcyBmYWxsYmFja19hcHBs aWNhdGlvbl9uYW1lICovCi0JCWtleXdvcmRzW25dID0gImZhbGxiYWNrX2FwcGxpY2F0aW9uX25h bWUiOwotCQl2YWx1ZXNbbl0gPSAicG9zdGdyZXNfZmR3IjsKKwkvKiBVc2UgInBvc3RncmVzX2Zk dyIgYXMgZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZSAqLworCWtleXdvcmRzW25dID0gImZhbGxi YWNrX2FwcGxpY2F0aW9uX25hbWUiOworCXZhbHVlc1tuXSA9ICJwb3N0Z3Jlc19mZHciOworCW4r KzsKKworCS8qIFNldCBjbGllbnRfZW5jb2Rpbmcgc28gdGhhdCBsaWJwcSBjYW4gY29udmVydCBl bmNvZGluZyBwcm9wZXJseS4gKi8KKwlrZXl3b3Jkc1tuXSA9ICJjbGllbnRfZW5jb2RpbmciOwor CXZhbHVlc1tuXSA9IEdldERhdGFiYXNlRW5jb2RpbmdOYW1lKCk7CisJbisrOworCisJLyogQWRk IHJlcXVpcmVkIFNDUkFNIHBhc3MtdGhyb3VnaCBjb25uZWN0aW9uIG9wdGlvbnMgaWYgaXQncyBl bmFibGVkLiAqLworCWlmIChNeVByb2NQb3J0ICE9IE5VTEwgJiYgTXlQcm9jUG9ydC0+aGFzX3Nj cmFtX2tleXMgJiYgVXNlU2NyYW1QYXNzdGhyb3VnaChzZXJ2ZXIsIHVzZXIpKQorCXsKKwkJaW50 CQkJbGVuOworCQlpbnQJCQllbmNvZGVkX2xlbjsKKworCQlrZXl3b3Jkc1tuXSA9ICJzY3JhbV9j bGllbnRfa2V5IjsKKwkJbGVuID0gcGdfYjY0X2VuY19sZW4oc2l6ZW9mKE15UHJvY1BvcnQtPnNj cmFtX0NsaWVudEtleSkpOworCQkvKiBkb24ndCBmb3JnZXQgdGhlIHplcm8tdGVybWluYXRvciAq LworCQl2YWx1ZXNbbl0gPSBwYWxsb2MwKGxlbiArIDEpOworCQllbmNvZGVkX2xlbiA9IHBnX2I2 NF9lbmNvZGUoTXlQcm9jUG9ydC0+c2NyYW1fQ2xpZW50S2V5LAorCQkJCQkJCQkJc2l6ZW9mKE15 UHJvY1BvcnQtPnNjcmFtX0NsaWVudEtleSksCisJCQkJCQkJCQkoY2hhciAqKSB2YWx1ZXNbbl0s IGxlbik7CisJCWlmIChlbmNvZGVkX2xlbiA8IDApCisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90 IGVuY29kZSBTQ1JBTSBjbGllbnQga2V5Iik7CiAJCW4rKzsKIAotCQkvKiBTZXQgY2xpZW50X2Vu Y29kaW5nIHNvIHRoYXQgbGlicHEgY2FuIGNvbnZlcnQgZW5jb2RpbmcgcHJvcGVybHkuICovCi0J CWtleXdvcmRzW25dID0gImNsaWVudF9lbmNvZGluZyI7Ci0JCXZhbHVlc1tuXSA9IEdldERhdGFi YXNlRW5jb2RpbmdOYW1lKCk7CisJCWtleXdvcmRzW25dID0gInNjcmFtX3NlcnZlcl9rZXkiOwor CQlsZW4gPSBwZ19iNjRfZW5jX2xlbihzaXplb2YoTXlQcm9jUG9ydC0+c2NyYW1fU2VydmVyS2V5 KSk7CisJCS8qIGRvbid0IGZvcmdldCB0aGUgemVyby10ZXJtaW5hdG9yICovCisJCXZhbHVlc1tu XSA9IHBhbGxvYzAobGVuICsgMSk7CisJCWVuY29kZWRfbGVuID0gcGdfYjY0X2VuY29kZShNeVBy b2NQb3J0LT5zY3JhbV9TZXJ2ZXJLZXksCisJCQkJCQkJCQlzaXplb2YoTXlQcm9jUG9ydC0+c2Ny YW1fU2VydmVyS2V5KSwKKwkJCQkJCQkJCShjaGFyICopIHZhbHVlc1tuXSwgbGVuKTsKKwkJaWYg KGVuY29kZWRfbGVuIDwgMCkKKwkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZW5jb2RlIFNDUkFN IHNlcnZlciBrZXkiKTsKIAkJbisrOwogCi0JCS8qIEFkZCByZXF1aXJlZCBTQ1JBTSBwYXNzLXRo cm91Z2ggY29ubmVjdGlvbiBvcHRpb25zIGlmIGl0J3MgZW5hYmxlZC4gKi8KLQkJaWYgKE15UHJv Y1BvcnQgIT0gTlVMTCAmJiBNeVByb2NQb3J0LT5oYXNfc2NyYW1fa2V5cyAmJiBVc2VTY3JhbVBh c3N0aHJvdWdoKHNlcnZlciwgdXNlcikpCi0JCXsKLQkJCWludAkJCWxlbjsKLQkJCWludAkJCWVu Y29kZWRfbGVuOwotCi0JCQlrZXl3b3Jkc1tuXSA9ICJzY3JhbV9jbGllbnRfa2V5IjsKLQkJCWxl biA9IHBnX2I2NF9lbmNfbGVuKHNpemVvZihNeVByb2NQb3J0LT5zY3JhbV9DbGllbnRLZXkpKTsK LQkJCS8qIGRvbid0IGZvcmdldCB0aGUgemVyby10ZXJtaW5hdG9yICovCi0JCQl2YWx1ZXNbbl0g PSBwYWxsb2MwKGxlbiArIDEpOwotCQkJZW5jb2RlZF9sZW4gPSBwZ19iNjRfZW5jb2RlKE15UHJv Y1BvcnQtPnNjcmFtX0NsaWVudEtleSwKLQkJCQkJCQkJCQlzaXplb2YoTXlQcm9jUG9ydC0+c2Ny YW1fQ2xpZW50S2V5KSwKLQkJCQkJCQkJCQkoY2hhciAqKSB2YWx1ZXNbbl0sIGxlbik7Ci0JCQlp ZiAoZW5jb2RlZF9sZW4gPCAwKQotCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZW5jb2RlIFND UkFNIGNsaWVudCBrZXkiKTsKLQkJCW4rKzsKLQotCQkJa2V5d29yZHNbbl0gPSAic2NyYW1fc2Vy dmVyX2tleSI7Ci0JCQlsZW4gPSBwZ19iNjRfZW5jX2xlbihzaXplb2YoTXlQcm9jUG9ydC0+c2Ny YW1fU2VydmVyS2V5KSk7Ci0JCQkvKiBkb24ndCBmb3JnZXQgdGhlIHplcm8tdGVybWluYXRvciAq LwotCQkJdmFsdWVzW25dID0gcGFsbG9jMChsZW4gKyAxKTsKLQkJCWVuY29kZWRfbGVuID0gcGdf YjY0X2VuY29kZShNeVByb2NQb3J0LT5zY3JhbV9TZXJ2ZXJLZXksCi0JCQkJCQkJCQkJc2l6ZW9m KE15UHJvY1BvcnQtPnNjcmFtX1NlcnZlcktleSksCi0JCQkJCQkJCQkJKGNoYXIgKikgdmFsdWVz W25dLCBsZW4pOwotCQkJaWYgKGVuY29kZWRfbGVuIDwgMCkKLQkJCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IGVuY29kZSBTQ1JBTSBzZXJ2ZXIga2V5Iik7Ci0JCQluKys7CisJCS8qCisJCSAqIFJl cXVpcmUgc2NyYW0tc2hhLTI1NiB0byBlbnN1cmUgdGhhdCBubyBvdGhlciBhdXRoIG1ldGhvZCBp cyB1c2VkCisJCSAqIHdoZW4gY29ubmVjdGluZyB3aXRoIGZvcmVpZ24gc2VydmVyLgorCQkgKi8K KwkJa2V5d29yZHNbbl0gPSAicmVxdWlyZV9hdXRoIjsKKwkJdmFsdWVzW25dID0gInNjcmFtLXNo YS0yNTYiOworCQluKys7CisJfQogCi0JCQkvKgotCQkJICogUmVxdWlyZSBzY3JhbS1zaGEtMjU2 IHRvIGVuc3VyZSB0aGF0IG5vIG90aGVyIGF1dGggbWV0aG9kIGlzCi0JCQkgKiB1c2VkIHdoZW4g Y29ubmVjdGluZyB3aXRoIGZvcmVpZ24gc2VydmVyLgotCQkJICovCi0JCQlrZXl3b3Jkc1tuXSA9 ICJyZXF1aXJlX2F1dGgiOwotCQkJdmFsdWVzW25dID0gInNjcmFtLXNoYS0yNTYiOwotCQkJbisr OwotCQl9CisJa2V5d29yZHNbbl0gPSB2YWx1ZXNbbl0gPSBOVUxMOworCisJLyogVmVyaWZ5IHRo ZSBzZXQgb2YgY29ubmVjdGlvbiBwYXJhbWV0ZXJzLiAqLworCWNoZWNrX2Nvbm5fcGFyYW1zKGtl eXdvcmRzLCB2YWx1ZXMsIHVzZXIpOwogCi0JCWtleXdvcmRzW25dID0gdmFsdWVzW25dID0gTlVM TDsKKwkqcF9rZXl3b3JkcyA9IGtleXdvcmRzOworCSpwX3ZhbHVlcyA9IHZhbHVlczsKK30KKwor LyoKKyAqIENvbm5lY3QgdG8gcmVtb3RlIHNlcnZlciB1c2luZyBzcGVjaWZpZWQgc2VydmVyIGFu ZCB1c2VyIG1hcHBpbmcgcHJvcGVydGllcy4KKyAqLworc3RhdGljIFBHY29ubiAqCitjb25uZWN0 X3BnX3NlcnZlcihGb3JlaWduU2VydmVyICpzZXJ2ZXIsIFVzZXJNYXBwaW5nICp1c2VyKQorewor CVBHY29ubgkgICAqdm9sYXRpbGUgY29ubiA9IE5VTEw7CisKKwkvKgorCSAqIFVzZSBQR19UUlkg YmxvY2sgdG8gZW5zdXJlIGNsb3NpbmcgY29ubmVjdGlvbiBvbiBlcnJvci4KKwkgKi8KKwlQR19U UlkoKTsKKwl7CisJCWNvbnN0IGNoYXIgKiprZXl3b3JkczsKKwkJY29uc3QgY2hhciAqKnZhbHVl czsKKwkJY2hhcgkgICAqYXBwbmFtZTsKIAotCQkvKiBWZXJpZnkgdGhlIHNldCBvZiBjb25uZWN0 aW9uIHBhcmFtZXRlcnMuICovCi0JCWNoZWNrX2Nvbm5fcGFyYW1zKGtleXdvcmRzLCB2YWx1ZXMs IHVzZXIpOworCQljb25zdHJ1Y3RfY29ubmVjdGlvbl9wYXJhbXMoc2VydmVyLCB1c2VyLCAma2V5 d29yZHMsICZ2YWx1ZXMsICZhcHBuYW1lKTsKIAogCQkvKiBmaXJzdCB0aW1lLCBhbGxvY2F0ZSBv ciBnZXQgdGhlIGN1c3RvbSB3YWl0IGV2ZW50ICovCiAJCWlmIChwZ2Zkd193ZV9jb25uZWN0ID09 IDApCkBAIC0yMzA4LDYgKzIzMjcsNTYgQEAgcG9zdGdyZXNfZmR3X2dldF9jb25uZWN0aW9uc19p bnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAl9CiB9CiAKKy8qCisgKiBWYWx1ZXMg aW4gY29ubmVjdGlvbiBzdHJpbmdzIG11c3QgYmUgZW5jbG9zZWQgaW4gc2luZ2xlIHF1b3Rlcy4g U2luZ2xlCisgKiBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIG11c3QgYmUgZXNjYXBlZCB3aXRoIGJh Y2tzbGFzaC4gTkI6IHRoZXNlIHJ1bGVzIGFyZQorICogZGlmZmVyZW50IGZyb20gdGhlIHJ1bGVz IGZvciBlc2NhcGluZyBhIFNRTCBsaXRlcmFsLgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kRXNj YXBlZFZhbHVlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBjaGFyICp2YWwpCit7CisJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoc3RyLCAnXCcnKTsKKwlmb3IgKGludCBpID0gMDsgdmFsW2ldICE9ICdcMCc7 IGkrKykKKwl7CisJCWlmICh2YWxbaV0gPT0gJ1xcJyB8fCB2YWxbaV0gPT0gJ1wnJykKKwkJCWFw cGVuZFN0cmluZ0luZm9DaGFyKHN0ciwgJ1xcJyk7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKHN0 ciwgdmFsW2ldKTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoc3RyLCAnXCcnKTsKK30KKwor RGF0dW0KK3Bvc3RncmVzX2Zkd19jb25uZWN0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lk CQkJdXNlcmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlPaWQJCQlzZXJ2ZXJpZCA9IFBHX0dFVEFS R19PSUQoMSk7CisJRm9yZWlnblNlcnZlciAqc2VydmVyID0gR2V0Rm9yZWlnblNlcnZlcihzZXJ2 ZXJpZCk7CisJVXNlck1hcHBpbmcgKnVzZXIgPSBHZXRVc2VyTWFwcGluZyh1c2VyaWQsIHNlcnZl cmlkKTsKKwlTdHJpbmdJbmZvRGF0YSBzdHI7CisJY29uc3QgY2hhciAqKmtleXdvcmRzOworCWNv bnN0IGNoYXIgKip2YWx1ZXM7CisJY2hhcgkgICAqYXBwbmFtZTsKKwljaGFyCSAgICpzZXAgPSAi IjsKKworCWNvbnN0cnVjdF9jb25uZWN0aW9uX3BhcmFtcyhzZXJ2ZXIsIHVzZXIsICZrZXl3b3Jk cywgJnZhbHVlcywgJmFwcG5hbWUpOworCisJaW5pdFN0cmluZ0luZm8oJnN0cik7CisJZm9yIChp bnQgaSA9IDA7IGtleXdvcmRzW2ldICE9IE5VTEw7IGkrKykKKwl7CisJCWlmICh2YWx1ZXNbaV0g PT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCQlhcHBlbmRTdHJpbmdJbmZvKCZzdHIsICIlcyVzID0g Iiwgc2VwLCBrZXl3b3Jkc1tpXSk7CisJCWFwcGVuZEVzY2FwZWRWYWx1ZSgmc3RyLCB2YWx1ZXNb aV0pOworCQlzZXAgPSAiICI7CisJfQorCisJaWYgKGFwcG5hbWUgIT0gTlVMTCkKKwkJcGZyZWUo YXBwbmFtZSk7CisJcGZyZWUoa2V5d29yZHMpOworCXBmcmVlKHZhbHVlcyk7CisJUEdfUkVUVVJO X1RFWFRfUChjc3RyaW5nX3RvX3RleHQoc3RyLmRhdGEpKTsKK30KKwogLyoKICAqIExpc3QgYWN0 aXZlIGZvcmVpZ24gc2VydmVyIGNvbm5lY3Rpb25zLgogICoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDYwNjY1MTBjN2MwLi5kZGZkMjM4 YzUwYSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNf ZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcu b3V0CkBAIC0yNTUsNiArMjU1LDE0IEBAIFNFTEVDVCBjMywgYzQgRlJPTSBmdDEgT1JERVIgQlkg YzMsIGMxIExJTUlUIDE7ICAtLSBzaG91bGQgd29yayBhZ2FpbgogQU5BTFlaRSBmdDE7CiBBTFRF UiBGT1JFSUdOIFRBQkxFIGZ0MiBPUFRJT05TICh1c2VfcmVtb3RlX2VzdGltYXRlICd0cnVlJyk7 CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSB0ZXN0IHN1YnNjcmlwdGlvbgorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JF QVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3BnZmR3X3N1YnNjcmlwdGlvbiBTRVJWRVIgdGVzdHNl cnZlcjEKKyAgUFVCTElDQVRJT04gcHViMSBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25uZWN0 ID0gZmFsc2UpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlv biwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCitE Uk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3BnZmR3X3N1YnNjcmlwdGlvbjsKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tIHRlc3QgZXJyb3IgY2FzZSBmb3IgY3JlYXRlIHB1YmxpY2F0aW9uIG9uIGZvcmVpZ24g dGFibGUKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Z0YmwgRk9S IFRBQkxFIGZ0MTsgIC0tIHNob3VsZCBmYWlsCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVz X2Zkdy9tZXNvbi5idWlsZCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkCmluZGV4 IGVhNGNkOWZjZDQ2Li4zZTJlZDA2Yjc2NiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvbWVzb24uYnVpbGQKQEAg LTI3LDYgKzI3LDcgQEAgaW5zdGFsbF9kYXRhKAogICAncG9zdGdyZXNfZmR3LS0xLjAuc3FsJywK ICAgJ3Bvc3RncmVzX2Zkdy0tMS4wLS0xLjEuc3FsJywKICAgJ3Bvc3RncmVzX2Zkdy0tMS4xLS0x LjIuc3FsJywKKyAgJ3Bvc3RncmVzX2Zkdy0tMS4yLS0xLjMuc3FsJywKICAga3dhcmdzOiBjb250 cmliX2RhdGFfYXJncywKICkKIApAQCAtNTAsNiArNTEsNyBAQCB0ZXN0cyArPSB7CiAgICd0YXAn OiB7CiAgICAgJ3Rlc3RzJzogWwogICAgICAgJ3QvMDAxX2F1dGhfc2NyYW0ucGwnLAorICAgICAg J3QvMDEwX3N1YnNjcmlwdGlvbi5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4yLS0xLjMuc3FsIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LS0xLjItLTEuMy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViY2YwYmEyZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LS0xLjItLTEuMy5zcWwKQEAgLTAsMCArMSwx MiBAQAorLyogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LS0xLjItLTEuMy5zcWwg Ki8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRo YW4gdmlhIEFMVEVSIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJT04gcG9zdGdy ZXNfZmR3IFVQREFURSBUTyAnMS4zJyIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIHRh a2VzIGludGVybmFsIHBhcmFtZXRlciB0byBwcmV2ZW50IGNhbGxpbmcgZnJvbSBTUUwKK0NSRUFU RSBGVU5DVElPTiBwb3N0Z3Jlc19mZHdfY29ubmVjdGlvbihvaWQsIG9pZCwgaW50ZXJuYWwpCitS RVRVUk5TIHRleHQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVCBQQVJB TExFTCBSRVNUUklDVEVEOworCitBTFRFUiBGT1JFSUdOIERBVEEgV1JBUFBFUiBwb3N0Z3Jlc19m ZHcgQ09OTkVDVElPTiBwb3N0Z3Jlc19mZHdfY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jb250cm9sIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmNvbnRyb2wKaW5kZXggYTRiODAwYmU0ZmMuLmFlMjk2M2Q0ODBkIDEw MDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuY29udHJvbAorKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuY29udHJvbApAQCAtMSw1ICsxLDUg QEAKICMgcG9zdGdyZXNfZmR3IGV4dGVuc2lvbgogY29tbWVudCA9ICdmb3JlaWduLWRhdGEgd3Jh cHBlciBmb3IgcmVtb3RlIFBvc3RncmVTUUwgc2VydmVycycKLWRlZmF1bHRfdmVyc2lvbiA9ICcx LjInCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4zJwogbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIv cG9zdGdyZXNfZmR3JwogcmVsb2NhdGFibGUgPSB0cnVlCmRpZmYgLS1naXQgYS9jb250cmliL3Bv c3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Nx bC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDRmN2FiMmVkMGFjLi4wYzdiZjExNDRmOCAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKKysrIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKQEAgLTI0NCw2ICsyNDQsMTMg QEAgU0VMRUNUIGMzLCBjNCBGUk9NIGZ0MSBPUkRFUiBCWSBjMywgYzEgTElNSVQgMTsgIC0tIHNo b3VsZCB3b3JrIGFnYWluCiBBTkFMWVpFIGZ0MTsKIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQyIE9Q VElPTlMgKHVzZV9yZW1vdGVfZXN0aW1hdGUgJ3RydWUnKTsKIAorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g dGVzdCBzdWJzY3JpcHRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc19wZ2Zkd19zdWJzY3JpcHRpb24gU0VSVkVSIHRlc3RzZXJ2ZXIxCisgIFBVQkxJQ0FUSU9O IHB1YjEgV0lUSCAoc2xvdF9uYW1lID0gTk9ORSwgY29ubmVjdCA9IGZhbHNlKTsKK0RST1AgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfcGdmZHdfc3Vic2NyaXB0aW9uOworCiAtLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LSB0ZXN0IGVycm9yIGNhc2UgZm9yIGNyZWF0ZSBwdWJsaWNhdGlvbiBvbiBmb3JlaWduIHRhYmxl CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy90LzAxMF9z dWJzY3JpcHRpb24ucGwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy90LzAxMF9zdWJzY3JpcHRpb24u cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzOWU4ZmRiYmE0Ci0t LSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvdC8wMTBfc3Vic2NyaXB0aW9u LnBsCkBAIC0wLDAgKzEsNzEgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNCwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBCYXNpYyBsb2dpY2FsIHJlcGxpY2F0 aW9uIHRlc3QKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK K3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2Rl X3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7 Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwor JG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAk bm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3Jp YmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7 CisKKyMgQ3JlYXRlIHNvbWUgcHJlZXhpc3RpbmcgY29udGVudCBvbiBwdWJsaXNoZXIKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfaW5z IEFTIFNFTEVDVCBhLCBhICsgMSBhcyBiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMikgQVMg YSIpOworCisjIFJlcGxpY2F0ZSB0aGUgY2hhbmdlcyB3aXRob3V0IGNvbHVtbnMKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGFiX25vX2NvbCgp Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyB0YWJfbm9fY29sIGRlZmF1bHQgVkFMVUVTIik7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHN1 YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IEVYVEVOU0lPTiBwb3N0Z3Jlc19mZHciKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRhYl9pbnMgKGEgaW50LCBiIGludCkiKTsKKworIyBT ZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9w dWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRB QkxFIHRhYl9pbnMiKTsKKworbXkgJHB1Ymxpc2hlcl9ob3N0ID0gJG5vZGVfcHVibGlzaGVyLT5o b3N0OworbXkgJHB1Ymxpc2hlcl9wb3J0ID0gJG5vZGVfcHVibGlzaGVyLT5wb3J0OworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTRVJWRVIgdGFwX3Nl cnZlciBGT1JFSUdOIERBVEEgV1JBUFBFUiBwb3N0Z3Jlc19mZHcgT1BUSU9OUyAoaG9zdCAnJHB1 Ymxpc2hlcl9ob3N0JywgcG9ydCAnJHB1Ymxpc2hlcl9wb3J0JywgZGJuYW1lICdwb3N0Z3Jlcycp IgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFU RSBVU0VSIE1BUFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdGFwX3NlcnZlciIKKyk7CisKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgRk9SRUlHTiBUQUJM RSBmX3RhYl9pbnMgKGEgaW50LCBiIGludCkgU0VSVkVSIHRhcF9zZXJ2ZXIgT1BUSU9OUyh0YWJs ZV9uYW1lICd0YWJfaW5zJykiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVJWRVIgdGFwX3NlcnZlciBQ VUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHBhc3N3b3JkX3JlcXVpcmVkPWZhbHNlKSIKKyk7CisK KyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yicp OworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSAoU0VMRUNUIGYuYiA9IGwuYiBhcyBtYXRjaCBGUk9N IHRhYl9pbnMgbCwgZl90YWJfaW5zIGYgV0hFUkUgbC5hID0gZi5hKSBXSEVSRSBtYXRjaCIpOwor aXMoJHJlc3VsdCwgcXEoMTAwMiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBz dWJzY3JpYmVyJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IklOU0VSVCBJTlRPIHRhYl9pbnMgU0VMRUNUIGEsIGEgKyAxIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEwMDMsMTA1MCkgYSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Rh cF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gKFNFTEVDVCBmLmIgPSBsLmIgYXMgbWF0Y2gg RlJPTSB0YWJfaW5zIGwsIGZfdGFiX2lucyBmIFdIRVJFIGwuYSA9IGYuYSkgV0hFUkUgbWF0Y2gi KTsKK2lzKCRyZXN1bHQsIHFxKDEwNTApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlcicpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9wb3N0Z3Jlcy1mZHcuc2dtbCBiL2RvYy9zcmMvc2dtbC9wb3N0Z3Jlcy1mZHcuc2dtbApp bmRleCA5YjAzMmZiZjY3NS4uZGE3MTZiZDcwYjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9w b3N0Z3Jlcy1mZHcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcG9zdGdyZXMtZmR3LnNnbWwKQEAg LTEwNDksNiArMTA0OSwzMiBAQCBwb3N0Z3Jlcz0jIFNFTEVDVCBwb3N0Z3Jlc19mZHdfZGlzY29u bmVjdF9hbGwoKTsKICAgPC9wYXJhPgogIDwvc2VjdDI+CiAKKyA8c2VjdDIgaWQ9InBvc3RncmVz LWZkdy1zZXJ2ZXItc3Vic2NyaXB0aW9uIj4KKyAgPHRpdGxlPlN1YnNjcmlwdGlvbiBNYW5hZ2Vt ZW50PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxmaWxlbmFtZT5wb3N0Z3Jlc19mZHc8L2ZpbGVu YW1lPiBzdXBwb3J0cyBzdWJzY3JpcHRpb24gY29ubmVjdGlvbnMgdXNpbmcKKyAgIHRoZSBzYW1l IG9wdGlvbnMgZGVzY3JpYmVkIGluIDx4cmVmCisgICBsaW5rZW5kPSJwb3N0Z3Jlcy1mZHctb3B0 aW9ucy1jb25uZWN0aW9uIi8+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBGb3IgZXhhbXBs ZSwgYXNzdW1pbmcgdGhlIHJlbW90ZSBzZXJ2ZXIgPGxpdGVyYWw+Zm9yZWlnbi1ob3N0PC9saXRl cmFsPiBoYXMKKyAgIGEgcHVibGljYXRpb24gPGxpdGVyYWw+dGVzdHB1YjwvbGl0ZXJhbD46Cis8 cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgU0VSVkVSIHN1YnNjcmlwdGlvbl9zZXJ2ZXIgRk9SRUlH TiBEQVRBIFdSQVBQRVIgcG9zdGdyZXNfZmR3IE9QVElPTlMgKGhvc3QgJ2ZvcmVpZ24taG9zdCcs IGRibmFtZSAnZm9yZWlnbl9kYicpOworQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgbG9jYWxfdXNl ciBTRVJWRVIgc3Vic2NyaXB0aW9uX3NlcnZlciBPUFRJT05TICh1c2VyICdmb3JlaWduX3VzZXIn LCBwYXNzd29yZCAncGFzc3dvcmQnKTsKK0NSRUFURSBTVUJTQ1JJUFRJT04gbXlfc3Vic2NyaXB0 aW9uIFNFUlZFUiBzdWJzY3JpcHRpb25fc2VydmVyIFBVQkxJQ0FUSU9OIHRlc3RwdWI7Cis8L3By b2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBjcmVhdGUgYSBzdWJz Y3JpcHRpb24sIHRoZSB1c2VyIG11c3QgYmUgYSBtZW1iZXIgb2YgdGhlIDx4cmVmCisgICBsaW5r ZW5kPSJwcmVkZWZpbmVkLXJvbGUtcGctY3JlYXRlLXN1YnNjcmlwdGlvbiIvPiByb2xlIGFuZCBo YXZlCisgICA8bGl0ZXJhbD5VU0FHRTwvbGl0ZXJhbD4gcHJpdmlsZWdlcyBvbiB0aGUgc2VydmVy LgorICA8L3BhcmE+CisgPC9zZWN0Mj4KKwogIDxzZWN0MiBpZD0icG9zdGdyZXMtZmR3LXRyYW5z YWN0aW9uLW1hbmFnZW1lbnQiPgogICA8dGl0bGU+VHJhbnNhY3Rpb24gTWFuYWdlbWVudDwvdGl0 bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDI3YzA2 NDM5ZjRmLi42MzYzMDc2MDVlMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9z dWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlv bi5zZ21sCkBAIC0yMSw2ICsyMSw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJl ZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgorQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VSVkVSIDxyZXBsYWNlYWJs ZT5zZXJ2ZXJuYW1lPC9yZXBsYWNlYWJsZT4KIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IENPTk5FQ1RJT04gJzxyZXBs YWNlYWJsZT5jb25uaW5mbzwvcmVwbGFjZWFibGU+JwogQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIFBVQkxJQ0FU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uXSBbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cHVibGljYXRpb25fb3B0aW9uPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkgXQogQUxURVIgU1VCU0NS SVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4g QUREIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlv bl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cHVibGljYXRpb25fb3B0aW9uPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkgXQpA QCAtMTAyLDEzICsxMDMsMjQgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRl cnN1YnNjcmlwdGlvbi1wYXJhbXMtc2VydmVyIj4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVJWRVIg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPjwv bGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMg Y2xhdXNlIHJlcGxhY2VzIHRoZSBmb3JlaWduIHNlcnZlciBvciBjb25uZWN0aW9uIHN0cmluZyBv cmlnaW5hbGx5CisgICAgICBzZXQgYnkgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlw dGlvbiIvPiB3aXRoIHRoZSBmb3JlaWduIHNlcnZlcgorICAgICAgPHJlcGxhY2VhYmxlPnNlcnZl cm5hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVyc3Vic2NyaXB0 aW9uLXBhcmFtcy1jb25uZWN0aW9uIj4KICAgICA8dGVybT48bGl0ZXJhbD5DT05ORUNUSU9OICc8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxhY2VhYmxlPic8L2xp dGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGNs YXVzZSByZXBsYWNlcyB0aGUgY29ubmVjdGlvbiBzdHJpbmcgb3JpZ2luYWxseSBzZXQgYnkKLSAg ICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24iLz4uICBTZWUgdGhlcmUg Zm9yIG1vcmUKLSAgICAgIGluZm9ybWF0aW9uLgorICAgICAgVGhpcyBjbGF1c2UgcmVwbGFjZXMg dGhlIGZvcmVpZ24gc2VydmVyIG9yIGNvbm5lY3Rpb24gc3RyaW5nIG9yaWdpbmFsbHkKKyAgICAg IHNldCBieSA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uIi8+IHdpdGggdGhl IGNvbm5lY3Rpb24KKyAgICAgIHN0cmluZyA8cmVwbGFjZWFibGU+Y29ubmluZm88L3JlcGxhY2Vh YmxlPi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggYjdkZDM2MTI5 NGIuLmU5YTYwZTcwNzE4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJz Y3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbApAQCAtMjIsNyArMjIsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICA8cmVmc3lu b3BzaXNkaXY+CiA8c3lub3BzaXM+CiBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgQ09O TkVDVElPTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5pbmZvPC9yZXBsYWNl YWJsZT4nCisgICAgeyBTRVJWRVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcnZl cm5hbWU8L3JlcGxhY2VhYmxlPiB8IENPTk5FQ1RJT04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb25uaW5mbzwvcmVwbGFjZWFibGU+JyB9CiAgICAgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBb LCAuLi5dCiAgICAgWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNj cmlwdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKSBdCiA8L3N5bm9wc2lzPgpA QCAtNzcsNiArNzcsMTUgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVz dWJzY3JpcHRpb24tcGFyYW1zLXNlcnZlciI+CisgICAgPHRlcm0+PGxpdGVyYWw+U0VSVkVSIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJuYW1lPC9yZXBsYWNlYWJsZT48L2xp dGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBIGZvcmVp Z24gc2VydmVyIHRvIHVzZSBmb3IgdGhlIGNvbm5lY3Rpb24uCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLWNvbm5lY3Rpb24iPgogICAgIDx0ZXJtPjxsaXRl cmFsPkNPTk5FQ1RJT04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25uaW5mbzwv cmVwbGFjZWFibGU+JzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggMmIxMDMyNDUyOTAuLjdmZTgzYmQ0NDM2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTE5LDExICsxOSwxNCBAQAog I2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVh bS5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X2ZvcmVpZ25fc2VydmVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24uaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9h Y2wuaCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTY5LDcgKzcyLDcgQEAgR2V0UHVi bGljYXRpb25zU3RyKExpc3QgKnB1YmxpY2F0aW9ucywgU3RyaW5nSW5mbyBkZXN0LCBib29sIHF1 b3RlX2xpdGVyYWwpCiAgKiBGZXRjaCB0aGUgc3Vic2NyaXB0aW9uIGZyb20gdGhlIHN5c2NhY2hl LgogICovCiBTdWJzY3JpcHRpb24gKgotR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBt aXNzaW5nX29rKQorR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBi b29sIGFjbGNoZWNrKQogewogCUhlYXBUdXBsZQl0dXA7CiAJU3Vic2NyaXB0aW9uICpzdWI7CkBA IC0xMDgsMTAgKzExMSwzNSBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Np bmdfb2spCiAJc3ViLT5yZXRlbnRpb25hY3RpdmUgPSBzdWJmb3JtLT5zdWJyZXRlbnRpb25hY3Rp dmU7CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KLQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51 bGwoU1VCU0NSSVBUSU9OT0lELAotCQkJCQkJCQkgICB0dXAsCi0JCQkJCQkJCSAgIEFudW1fcGdf c3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvKTsKLQlzdWItPmNvbm5pbmZvID0gVGV4dERhdHVtR2V0 Q1N0cmluZyhkYXR1bSk7CisJaWYgKE9pZElzVmFsaWQoc3ViZm9ybS0+c3Vic2VydmVyKSkKKwl7 CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisKKwkJLyogcmVjaGVjayBBQ0wgaWYgcmVxdWVzdGVk ICovCisJCWlmIChhY2xjaGVjaykKKwkJeworCQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNr KEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLAorCQkJCQkJCQkJCXN1YmZvcm0tPnN1YnNlcnZlciwK KwkJCQkJCQkJCQlzdWJmb3JtLT5zdWJvd25lciwgQUNMX1VTQUdFKTsKKworCQkJaWYgKGFjbHJl c3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJCSBlcnJtc2coInN1YnNjcmlw dGlvbiBvd25lciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIG9uIGZvcmVpZ24gc2Vy dmVyIFwiJXNcIiIsCisJCQkJCQkJCUdldFVzZXJOYW1lRnJvbUlkKHN1YmZvcm0tPnN1Ym93bmVy LCBmYWxzZSksCisJCQkJCQkJCUZvcmVpZ25TZXJ2ZXJOYW1lKHN1YmZvcm0tPnN1YnNlcnZlcikp KSk7CisJCX0KKworCQlzdWItPmNvbm5pbmZvID0gRm9yZWlnblNlcnZlckNvbm5lY3Rpb25TdHJp bmcoc3ViZm9ybS0+c3Vib3duZXIsCisJCQkJCQkJCQkJCQkJICBzdWJmb3JtLT5zdWJzZXJ2ZXIp OworCX0KKwllbHNlCisJeworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NS SVBUSU9OT0lELAorCQkJCQkJCQkJICAgdHVwLAorCQkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViY29ubmluZm8pOworCQlzdWItPmNvbm5pbmZvID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhkYXR1bSk7CisJfQogCiAJLyogR2V0IHNsb3RuYW1lICovCiAJZGF0dW0gPSBTeXNDYWNoZUdl dEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Zm9yZWlnbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMKaW5kZXgg YjU2ZDFhZDY3ODUuLjQ1NjgxMjM1NzgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9mb3JlaWduY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMK QEAgLTUyMiwyMSArNTIyLDUzIEBAIGxvb2t1cF9mZHdfdmFsaWRhdG9yX2Z1bmMoRGVmRWxlbSAq dmFsaWRhdG9yKQogCS8qIHZhbGlkYXRvcidzIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLCBzbyB3 ZSBkb24ndCBjaGVjayB0aGUgdHlwZSAqLwogfQogCisvKgorICogQ29udmVydCBhIGNvbm5lY3Rp b24gc3RyaW5nIGZ1bmN0aW9uIG5hbWUgcGFzc2VkIGZyb20gdGhlIHBhcnNlciB0byBhbiBPaWQu CisgKi8KK3N0YXRpYyBPaWQKK2xvb2t1cF9mZHdfY29ubmVjdGlvbl9mdW5jKERlZkVsZW0gKmNv bm5lY3Rpb24pCit7CisJT2lkCQkJY29ubmVjdGlvbk9pZDsKKwlPaWQJCQlmdW5jYXJndHlwZXNb M107CisKKwlpZiAoY29ubmVjdGlvbiA9PSBOVUxMIHx8IGNvbm5lY3Rpb24tPmFyZyA9PSBOVUxM KQorCQlyZXR1cm4gSW52YWxpZE9pZDsKKworCS8qIGNvbm5lY3Rpb24gc3RyaW5nIGZ1bmN0aW9u cyB0YWtlIHVzZXIgb2lkLCBzZXJ2ZXIgb2lkICovCisJZnVuY2FyZ3R5cGVzWzBdID0gT0lET0lE OworCWZ1bmNhcmd0eXBlc1sxXSA9IE9JRE9JRDsKKwlmdW5jYXJndHlwZXNbMl0gPSBJTlRFUk5B TE9JRDsKKworCWNvbm5lY3Rpb25PaWQgPSBMb29rdXBGdW5jTmFtZSgoTGlzdCAqKSBjb25uZWN0 aW9uLT5hcmcsIDMsIGZ1bmNhcmd0eXBlcywgZmFsc2UpOworCisJLyogY2hlY2sgdGhhdCBjb25u ZWN0aW9uIHN0cmluZyBmdW5jdGlvbiBoYXMgY29ycmVjdCByZXR1cm4gdHlwZSAqLworCWlmIChn ZXRfZnVuY19yZXR0eXBlKGNvbm5lY3Rpb25PaWQpICE9IFRFWFRPSUQpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1z ZygiZnVuY3Rpb24gJXMgbXVzdCByZXR1cm4gdHlwZSAlcyIsCisJCQkJCQlOYW1lTGlzdFRvU3Ry aW5nKChMaXN0ICopIGNvbm5lY3Rpb24tPmFyZyksICJ0ZXh0IikpKTsKKworCXJldHVybiBjb25u ZWN0aW9uT2lkOworfQorCiAvKgogICogUHJvY2VzcyBmdW5jdGlvbiBvcHRpb25zIG9mIENSRUFU RS9BTFRFUiBGRFcKICAqLwogc3RhdGljIHZvaWQKIHBhcnNlX2Z1bmNfb3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNfb3B0aW9ucywKIAkJCQkgICBib29sICpoYW5kbGVyX2dp dmVuLCBPaWQgKmZkd2hhbmRsZXIsCi0JCQkJICAgYm9vbCAqdmFsaWRhdG9yX2dpdmVuLCBPaWQg KmZkd3ZhbGlkYXRvcikKKwkJCQkgICBib29sICp2YWxpZGF0b3JfZ2l2ZW4sIE9pZCAqZmR3dmFs aWRhdG9yLAorCQkJCSAgIGJvb2wgKmNvbm5lY3Rpb25fZ2l2ZW4sIE9pZCAqZmR3Y29ubmVjdGlv bikKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCiAJKmhhbmRsZXJfZ2l2ZW4gPSBmYWxzZTsKIAkq dmFsaWRhdG9yX2dpdmVuID0gZmFsc2U7CisJKmNvbm5lY3Rpb25fZ2l2ZW4gPSBmYWxzZTsKIAkv KiByZXR1cm4gSW52YWxpZE9pZCBpZiBub3QgZ2l2ZW4gKi8KIAkqZmR3aGFuZGxlciA9IEludmFs aWRPaWQ7CiAJKmZkd3ZhbGlkYXRvciA9IEludmFsaWRPaWQ7CisJKmZkd2Nvbm5lY3Rpb24gPSBJ bnZhbGlkT2lkOwogCiAJZm9yZWFjaChjZWxsLCBmdW5jX29wdGlvbnMpCiAJewpAQCAtNTU2LDYg KzU4OCwxMyBAQCBwYXJzZV9mdW5jX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpm dW5jX29wdGlvbnMsCiAJCQkqdmFsaWRhdG9yX2dpdmVuID0gdHJ1ZTsKIAkJCSpmZHd2YWxpZGF0 b3IgPSBsb29rdXBfZmR3X3ZhbGlkYXRvcl9mdW5jKGRlZik7CiAJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGRlZi0+ZGVmbmFtZSwgImNvbm5lY3Rpb24iKSA9PSAwKQorCQl7CisJCQlpZiAoKmNvbm5l Y3Rpb25fZ2l2ZW4pCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmLCBwc3RhdGUpOwor CQkJKmNvbm5lY3Rpb25fZ2l2ZW4gPSB0cnVlOworCQkJKmZkd2Nvbm5lY3Rpb24gPSBsb29rdXBf ZmR3X2Nvbm5lY3Rpb25fZnVuYyhkZWYpOworCQl9CiAJCWVsc2UKIAkJCWVsb2coRVJST1IsICJv cHRpb24gXCIlc1wiIG5vdCByZWNvZ25pemVkIiwKIAkJCQkgZGVmLT5kZWZuYW1lKTsKQEAgLTU3 NSw4ICs2MTQsMTAgQEAgQ3JlYXRlRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlRmR3U3RtdCAqc3RtdCkKIAlPaWQJCQlmZHdJZDsKIAlib29sCQloYW5kbGVyX2dp dmVuOwogCWJvb2wJCXZhbGlkYXRvcl9naXZlbjsKKwlib29sCQljb25uZWN0aW9uX2dpdmVuOwog CU9pZAkJCWZkd2hhbmRsZXI7CiAJT2lkCQkJZmR3dmFsaWRhdG9yOworCU9pZAkJCWZkd2Nvbm5l Y3Rpb247CiAJRGF0dW0JCWZkd29wdGlvbnM7CiAJT2lkCQkJb3duZXJJZDsKIAlPYmplY3RBZGRy ZXNzIG15c2VsZjsKQEAgLTYyMCwxMCArNjYxLDEyIEBAIENyZWF0ZUZvcmVpZ25EYXRhV3JhcHBl cihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZkd1N0bXQgKnN0bXQpCiAJLyogTG9va3VwIGhh bmRsZXIgYW5kIHZhbGlkYXRvciBmdW5jdGlvbnMsIGlmIGdpdmVuICovCiAJcGFyc2VfZnVuY19v cHRpb25zKHBzdGF0ZSwgc3RtdC0+ZnVuY19vcHRpb25zLAogCQkJCQkgICAmaGFuZGxlcl9naXZl biwgJmZkd2hhbmRsZXIsCi0JCQkJCSAgICZ2YWxpZGF0b3JfZ2l2ZW4sICZmZHd2YWxpZGF0b3Ip OworCQkJCQkgICAmdmFsaWRhdG9yX2dpdmVuLCAmZmR3dmFsaWRhdG9yLAorCQkJCQkgICAmY29u bmVjdGlvbl9naXZlbiwgJmZkd2Nvbm5lY3Rpb24pOwogCiAJdmFsdWVzW0FudW1fcGdfZm9yZWln bl9kYXRhX3dyYXBwZXJfZmR3aGFuZGxlciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShmZHdoYW5k bGVyKTsKIAl2YWx1ZXNbQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHd2YWxpZGF0b3Ig LSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZmR3dmFsaWRhdG9yKTsKKwl2YWx1ZXNbQW51bV9wZ19m b3JlaWduX2RhdGFfd3JhcHBlcl9mZHdjb25uZWN0aW9uIC0gMV0gPSBPYmplY3RJZEdldERhdHVt KGZkd2Nvbm5lY3Rpb24pOwogCiAJbnVsbHNbQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9m ZHdhY2wgLSAxXSA9IHRydWU7CiAKQEAgLTY5NSw4ICs3MzgsMTAgQEAgQWx0ZXJGb3JlaWduRGF0 YVdyYXBwZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZkd1N0bXQgKnN0bXQpCiAJRGF0dW0J CWRhdHVtOwogCWJvb2wJCWhhbmRsZXJfZ2l2ZW47CiAJYm9vbAkJdmFsaWRhdG9yX2dpdmVuOwor CWJvb2wJCWNvbm5lY3Rpb25fZ2l2ZW47CiAJT2lkCQkJZmR3aGFuZGxlcjsKIAlPaWQJCQlmZHd2 YWxpZGF0b3I7CisJT2lkCQkJZmR3Y29ubmVjdGlvbjsKIAlPYmplY3RBZGRyZXNzIG15c2VsZjsK IAogCXJlbCA9IHRhYmxlX29wZW4oRm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CkBAIC03MjYsNyArNzcxLDggQEAgQWx0ZXJGb3JlaWduRGF0YVdyYXBwZXIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZkd1N0bXQgKnN0bXQpCiAKIAlwYXJzZV9mdW5jX29w dGlvbnMocHN0YXRlLCBzdG10LT5mdW5jX29wdGlvbnMsCiAJCQkJCSAgICZoYW5kbGVyX2dpdmVu LCAmZmR3aGFuZGxlciwKLQkJCQkJICAgJnZhbGlkYXRvcl9naXZlbiwgJmZkd3ZhbGlkYXRvcik7 CisJCQkJCSAgICZ2YWxpZGF0b3JfZ2l2ZW4sICZmZHd2YWxpZGF0b3IsCisJCQkJCSAgICZjb25u ZWN0aW9uX2dpdmVuLCAmZmR3Y29ubmVjdGlvbik7CiAKIAlpZiAoaGFuZGxlcl9naXZlbikKIAl7 CkBAIC03NjQsNiArODEwLDEyIEBAIEFsdGVyRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJGZHdTdG10ICpzdG10KQogCQlmZHd2YWxpZGF0b3IgPSBmZHdGb3JtLT5m ZHd2YWxpZGF0b3I7CiAJfQogCisJaWYgKGNvbm5lY3Rpb25fZ2l2ZW4pCisJeworCQlyZXBsX3Zh bFtBbnVtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyX2Zkd2Nvbm5lY3Rpb24gLSAxXSA9IE9iamVj dElkR2V0RGF0dW0oZmR3Y29ubmVjdGlvbik7CisJCXJlcGxfcmVwbFtBbnVtX3BnX2ZvcmVpZ25f ZGF0YV93cmFwcGVyX2Zkd2Nvbm5lY3Rpb24gLSAxXSA9IHRydWU7CisJfQorCiAJLyoKIAkgKiBJ ZiBvcHRpb25zIHNwZWNpZmllZCwgdmFsaWRhdGUgYW5kIHVwZGF0ZS4KIAkgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBkNjY3NGYyMGZjMi4uMGFlNzY2ZTU3 ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTI3LDEzICsy NywxNiBAQAogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfYXV0aGlkX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25fc2VydmVyLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9y ZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3VzZXJfbWFwcGluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJmb3Jl aWduL2ZvcmVpZ24uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTU5Myw2ICs1OTYsNyBAQCBDcmVh dGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10 ICpzdG10LAogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKIAlPaWQJCQlv d25lciA9IEdldFVzZXJJZCgpOwogCUhlYXBUdXBsZQl0dXA7CisJT2lkCQkJc2VydmVyaWQ7CiAJ Y2hhcgkgICAqY29ubmluZm87CiAJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CiAJTGlz dAkgICAqcHVibGljYXRpb25zOwpAQCAtNjk1LDE1ICs2OTksNDAgQEAgQ3JlYXRlU3Vic2NyaXB0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAlp ZiAob3B0cy5zeW5jaHJvbm91c19jb21taXQgPT0gTlVMTCkKIAkJb3B0cy5zeW5jaHJvbm91c19j b21taXQgPSAib2ZmIjsKIAotCWNvbm5pbmZvID0gc3RtdC0+Y29ubmluZm87Ci0JcHVibGljYXRp b25zID0gc3RtdC0+cHVibGljYXRpb247Ci0KIAkvKiBMb2FkIHRoZSBsaWJyYXJ5IHByb3ZpZGlu ZyB1cyBsaWJwcSBjYWxscy4gKi8KIAlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxz ZSk7CiAKKwlpZiAoc3RtdC0+c2VydmVybmFtZSkKKwl7CisJCUZvcmVpZ25TZXJ2ZXIgKnNlcnZl cjsKKworCQlBc3NlcnQoIXN0bXQtPmNvbm5pbmZvKTsKKwkJY29ubmluZm8gPSBOVUxMOworCisJ CXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoc3RtdC0+c2VydmVybmFtZSwgZmFsc2Up OworCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9uSWQs IHNlcnZlci0+c2VydmVyaWQsIG93bmVyLCBBQ0xfVVNBR0UpOworCQlpZiAoYWNscmVzdWx0ICE9 IEFDTENIRUNLX09LKQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfRk9SRUlH Tl9TRVJWRVIsIHNlcnZlci0+c2VydmVybmFtZSk7CisKKwkJLyogbWFrZSBzdXJlIGEgdXNlciBt YXBwaW5nIGV4aXN0cyAqLworCQlHZXRVc2VyTWFwcGluZyhvd25lciwgc2VydmVyLT5zZXJ2ZXJp ZCk7CisKKwkJc2VydmVyaWQgPSBzZXJ2ZXItPnNlcnZlcmlkOworCQljb25uaW5mbyA9IEZvcmVp Z25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKG93bmVyLCBzZXJ2ZXJpZCk7CisJfQorCWVsc2UKKwl7 CisJCUFzc2VydChzdG10LT5jb25uaW5mbyk7CisKKwkJc2VydmVyaWQgPSBJbnZhbGlkT2lkOwor CQljb25uaW5mbyA9IHN0bXQtPmNvbm5pbmZvOworCX0KKwogCS8qIENoZWNrIHRoZSBjb25uZWN0 aW9uIGluZm8gc3RyaW5nLiAqLwogCXdhbHJjdl9jaGVja19jb25uaW5mbyhjb25uaW5mbywgb3B0 cy5wYXNzd29yZHJlcXVpcmVkICYmICFzdXBlcnVzZXIoKSk7CiAKKwlwdWJsaWNhdGlvbnMgPSBz dG10LT5wdWJsaWNhdGlvbjsKKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZvcm0gYSBuZXcgdHVwbGUu ICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwogCW1lbXNldChudWxscywg ZmFsc2UsIHNpemVvZihudWxscykpOwpAQCAtNzMzLDggKzc2MiwxMiBAQCBDcmVhdGVTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAog CQlJbnQzMkdldERhdHVtKG9wdHMubWF4cmV0ZW50aW9uKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3VicmV0ZW50aW9uYWN0aXZlIC0gMV0gPQogCQlJbnQzMkdldERhdHVtKG9wdHMu cmV0YWluZGVhZHR1cGxlcyk7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5p bmZvIC0gMV0gPQotCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKKwl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSBzZXJ2ZXJpZDsKKwlpZiAoIU9pZElz VmFsaWQoc2VydmVyaWQpKQorCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmlu Zm8gLSAxXSA9CisJCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKKwllbHNlCisJCW51 bGxzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPSB0cnVlOwogCWlmIChv cHRzLnNsb3RfbmFtZSkKIAkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNsb3RuYW1l IC0gMV0gPQogCQkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1laW4sIENTdHJpbmdHZXREYXR1bShv cHRzLnNsb3RfbmFtZSkpOwpAQCAtNzU1LDYgKzc4OCwxOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCiAJcmVj b3JkRGVwZW5kZW5jeU9uT3duZXIoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQsIG93bmVy KTsKIAorCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBz dWJpZCk7CisKKwlpZiAoc3RtdC0+c2VydmVybmFtZSkKKwl7CisJCU9iamVjdEFkZHJlc3MgcmVm ZXJlbmNlZDsKKworCQlBc3NlcnQoT2lkSXNWYWxpZChzZXJ2ZXJpZCkpOworCisJCU9iamVjdEFk ZHJlc3NTZXQocmVmZXJlbmNlZCwgRm9yZWlnblNlcnZlclJlbGF0aW9uSWQsIHNlcnZlcmlkKTsK KwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05P Uk1BTCk7CisJfQorCiAJLyoKIAkgKiBBIHJlcGxpY2F0aW9uIG9yaWdpbiBpcyBjdXJyZW50bHkg Y3JlYXRlZCBmb3IgYWxsIHN1YnNjcmlwdGlvbnMsCiAJICogaW5jbHVkaW5nIHRob3NlIHRoYXQg b25seSBjb250YWluIHNlcXVlbmNlcyBvciBhcmUgb3RoZXJ3aXNlIGVtcHR5LgpAQCAtOTA4LDgg Kzk1Myw2IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJaWYgKG9wdHMuZW5hYmxlZCB8fCBvcHRzLnJldGFpbmRl YWR0dXBsZXMpCiAJCUFwcGx5TGF1bmNoZXJXYWtldXBBdENvbW1pdCgpOwogCi0JT2JqZWN0QWRk cmVzc1NldChteXNlbGYsIFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkKTsKLQogCUludm9r ZU9iamVjdFBvc3RDcmVhdGVIb29rKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkLCAwKTsK IAogCXJldHVybiBteXNlbGY7CkBAIC0xMzczLDcgKzE0MTYsMTQgQEAgQWx0ZXJTdWJzY3JpcHRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgT0JKRUNUX1NVQlNDUklQVElPTiwKIAkJ CQkJICAgc3RtdC0+c3VibmFtZSk7CiAKLQlzdWIgPSBHZXRTdWJzY3JpcHRpb24oc3ViaWQsIGZh bHNlKTsKKwkvKgorCSAqIFNraXAgQUNMIGNoZWNrcyBvbiB0aGUgc3Vic2NyaXB0aW9uJ3MgZm9y ZWlnbiBzZXJ2ZXIsIGlmIGFueS4gSWYKKwkgKiBjaGFuZ2luZyB0aGUgc2VydmVyIChvciByZXBs YWNpbmcgaXQgd2l0aCBhIHJhdyBjb25uZWN0aW9uKSwgdGhlbiB0aGUKKwkgKiBvbGQgb25lIHdp bGwgYmUgcmVtb3ZlZCBhbnl3YXkuIElmIGNoYW5naW5nIHNvbWV0aGluZyB1bnJlbGF0ZWQsCisJ ICogdGhlcmUncyBubyBuZWVkIHRvIGRvIGFuIGFkZGl0aW9uYWwgQUNMIGNoZWNrIGhlcmU7IHRo YXQgd2lsbCBiZSBkb25lCisJICogYnkgdGhlIHN1YnNjcmlwdGlvbiB3b3JrZXIgYW55d2F5Lgor CSAqLworCXN1YiA9IEdldFN1YnNjcmlwdGlvbihzdWJpZCwgZmFsc2UsIGZhbHNlKTsKIAogCXJl dGFpbl9kZWFkX3R1cGxlcyA9IHN1Yi0+cmV0YWluZGVhZHR1cGxlczsKIAlvcmlnaW4gPSBzdWIt Pm9yaWdpbjsKQEAgLTEzOTgsNiArMTQ0OCw4IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCW1lbXNldChudWxscywg ZmFsc2UsIHNpemVvZihudWxscykpOwogCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihy ZXBsYWNlcykpOwogCisJT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFN1YnNjcmlwdGlvblJlbGF0 aW9uSWQsIHN1YmlkKTsKKwogCXN3aXRjaCAoc3RtdC0+a2luZCkKIAl7CiAJCWNhc2UgQUxURVJf U1VCU0NSSVBUSU9OX09QVElPTlM6CkBAIC0xNzA4LDcgKzE3NjAsNzkgQEAgQWx0ZXJTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJ CQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBBTFRFUl9TVUJTQ1JJUFRJT05fU0VSVkVSOgorCQkJ eworCQkJCUZvcmVpZ25TZXJ2ZXIgKm5ld19zZXJ2ZXI7CisJCQkJT2JqZWN0QWRkcmVzcyByZWZl cmVuY2VkOworCQkJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJCQkJY2hhcgkgICAqY29ubmluZm87 CisKKwkJCQkvKgorCQkJCSAqIFJlbW92ZSB3aGF0IHdhcyB0aGVyZSBiZWZvcmUsIGVpdGhlciBh bm90aGVyIGZvcmVpZ24gc2VydmVyCisJCQkJICogb3IgYSBjb25uZWN0aW9uIHN0cmluZy4KKwkJ CQkgKi8KKwkJCQlpZiAoZm9ybS0+c3Vic2VydmVyKQorCQkJCXsKKwkJCQkJZGVsZXRlRGVwZW5k ZW5jeVJlY29yZHNGb3JTcGVjaWZpYyhTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBmb3JtLT5vaWQs CisJCQkJCQkJCQkJCQkJICAgREVQRU5ERU5DWV9OT1JNQUwsCisJCQkJCQkJCQkJCQkJICAgRm9y ZWlnblNlcnZlclJlbGF0aW9uSWQsIGZvcm0tPnN1YnNlcnZlcik7CisJCQkJfQorCQkJCWVsc2UK KwkJCQl7CisJCQkJCW51bGxzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0g PSB0cnVlOworCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAt IDFdID0gdHJ1ZTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIEZpbmQgdGhlIG5ldyBzZXJ2ZXIg YW5kIHVzZXIgbWFwcGluZy4gQ2hlY2sgQUNMIG9mIHNlcnZlcgorCQkJCSAqIGJhc2VkIG9uIGN1 cnJlbnQgdXNlciBJRCwgYnV0IGZpbmQgdGhlIHVzZXIgbWFwcGluZyBiYXNlZAorCQkJCSAqIG9u IHRoZSBzdWJzY3JpcHRpb24gb3duZXIuCisJCQkJICovCisJCQkJbmV3X3NlcnZlciA9IEdldEZv cmVpZ25TZXJ2ZXJCeU5hbWUoc3RtdC0+c2VydmVybmFtZSwgZmFsc2UpOworCQkJCWFjbHJlc3Vs dCA9IG9iamVjdF9hY2xjaGVjayhGb3JlaWduU2VydmVyUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJ bmV3X3NlcnZlci0+c2VydmVyaWQsCisJCQkJCQkJCQkJCWZvcm0tPnN1Ym93bmVyLCBBQ0xfVVNB R0UpOworCQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJ CQkJCQkgZXJybXNnKCJzdWJzY3JpcHRpb24gb3duZXIgXCIlc1wiIGRvZXMgbm90IGhhdmUgcGVy bWlzc2lvbiBvbiBmb3JlaWduIHNlcnZlciBcIiVzXCIiLAorCQkJCQkJCQkJR2V0VXNlck5hbWVG cm9tSWQoZm9ybS0+c3Vib3duZXIsIGZhbHNlKSwKKwkJCQkJCQkJCUZvcmVpZ25TZXJ2ZXJOYW1l KG5ld19zZXJ2ZXItPnNlcnZlcmlkKSkpKTsKKworCQkJCS8qIG1ha2Ugc3VyZSBhIHVzZXIgbWFw cGluZyBleGlzdHMgKi8KKwkJCQlHZXRVc2VyTWFwcGluZyhmb3JtLT5zdWJvd25lciwgbmV3X3Nl cnZlci0+c2VydmVyaWQpOworCisJCQkJY29ubmluZm8gPSBGb3JlaWduU2VydmVyQ29ubmVjdGlv blN0cmluZyhmb3JtLT5zdWJvd25lciwKKwkJCQkJCQkJCQkJCQkJIG5ld19zZXJ2ZXItPnNlcnZl cmlkKTsKKworCQkJCS8qIExvYWQgdGhlIGxpYnJhcnkgcHJvdmlkaW5nIHVzIGxpYnBxIGNhbGxz LiAqLworCQkJCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKKwkJCQkvKiBD aGVjayB0aGUgY29ubmVjdGlvbiBpbmZvIHN0cmluZy4gKi8KKwkJCQl3YWxyY3ZfY2hlY2tfY29u bmluZm8oY29ubmluZm8sCisJCQkJCQkJCQkgIHN1Yi0+cGFzc3dvcmRyZXF1aXJlZCAmJiAhc3Vi LT5vd25lcnN1cGVydXNlcik7CisKKwkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi c2VydmVyIC0gMV0gPSBuZXdfc2VydmVyLT5zZXJ2ZXJpZDsKKwkJCQlyZXBsYWNlc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJzZXJ2ZXIgLSAxXSA9IHRydWU7CisKKwkJCQlPYmplY3RBZGRyZXNz U2V0KHJlZmVyZW5jZWQsIEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBuZXdfc2VydmVyLT5zZXJ2 ZXJpZCk7CisJCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBF TkRFTkNZX05PUk1BTCk7CisKKwkJCQl1cGRhdGVfdHVwbGUgPSB0cnVlOworCQkJfQorCQkJYnJl YWs7CisKIAkJY2FzZSBBTFRFUl9TVUJTQ1JJUFRJT05fQ09OTkVDVElPTjoKKwkJCS8qIHJlbW92 ZSByZWZlcmVuY2UgdG8gZm9yZWlnbiBzZXJ2ZXIgYW5kIGRlcGVuZGVuY2llcywgaWYgcHJlc2Vu dCAqLworCQkJaWYgKGZvcm0tPnN1YnNlcnZlcikKKwkJCXsKKwkJCQlkZWxldGVEZXBlbmRlbmN5 UmVjb3Jkc0ZvclNwZWNpZmljKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIGZvcm0tPm9pZCwKKwkJ CQkJCQkJCQkJCSAgIERFUEVOREVOQ1lfTk9STUFMLAorCQkJCQkJCQkJCQkJICAgRm9yZWlnblNl cnZlclJlbGF0aW9uSWQsIGZvcm0tPnN1YnNlcnZlcik7CisKKwkJCQl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSBJbnZhbGlkT2lkOworCQkJCXJlcGxhY2VzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFdID0gdHJ1ZTsKKwkJCX0KKwogCQkJLyog TG9hZCB0aGUgbGlicmFyeSBwcm92aWRpbmcgdXMgbGlicHEgY2FsbHMuICovCiAJCQlsb2FkX2Zp bGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAJCQkvKiBDaGVjayB0aGUgY29ubmVjdGlv biBpbmZvIHN0cmluZy4gKi8KQEAgLTE5OTMsOCArMjExNyw2IEBAIEFsdGVyU3Vic2NyaXB0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCiAJdGFi bGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAotCU9iamVjdEFkZHJlc3NTZXQobXlz ZWxmLCBTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCk7Ci0KIAlJbnZva2VPYmplY3RQb3N0 QWx0ZXJIb29rKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkLCAwKTsKIAogCS8qIFdha2Ug dXAgcmVsYXRlZCByZXBsaWNhdGlvbiB3b3JrZXJzIHRvIGhhbmRsZSB0aGlzIGNoYW5nZSBxdWlj a2x5LiAqLwpAQCAtMjA4MSw5ICsyMjAzLDI4IEBAIERyb3BTdWJzY3JpcHRpb24oRHJvcFN1YnNj cmlwdGlvblN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAlzdWJuYW1lID0gcHN0cmR1cChO YW1lU3RyKCpEYXR1bUdldE5hbWUoZGF0dW0pKSk7CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KLQlk YXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELCB0dXAsCi0JCQkJ CQkJCSAgIEFudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvKTsKLQljb25uaW5mbyA9IFRl eHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCWlmIChPaWRJc1ZhbGlkKGZvcm0tPnN1YnNlcnZl cikpCisJeworCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCisJCWFjbHJlc3VsdCA9IG9iamVjdF9h Y2xjaGVjayhGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgZm9ybS0+c3Vic2VydmVyLAorCQkJCQkJ CQkJZm9ybS0+c3Vib3duZXIsIEFDTF9VU0FHRSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hF Q0tfT0spCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAorCQkJCQkgZXJybXNnKCJzdWJzY3JpcHRpb24gb3duZXIgXCIlc1wi IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiBvbiBmb3JlaWduIHNlcnZlciBcIiVzXCIiLAorCQkJ CQkJCUdldFVzZXJOYW1lRnJvbUlkKGZvcm0tPnN1Ym93bmVyLCBmYWxzZSksCisJCQkJCQkJRm9y ZWlnblNlcnZlck5hbWUoZm9ybS0+c3Vic2VydmVyKSkpKTsKKworCQljb25uaW5mbyA9IEZvcmVp Z25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKGZvcm0tPnN1Ym93bmVyLAorCQkJCQkJCQkJCQkJIGZv cm0tPnN1YnNlcnZlcik7CisJfQorCWVsc2UKKwl7CisJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy Tm90TnVsbChTVUJTQ1JJUFRJT05PSUQsIHR1cCwKKwkJCQkJCQkJCSAgIEFudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YmNvbm5pbmZvKTsKKwkJY29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRh dHVtKTsKKwl9CiAKIAkvKiBHZXQgc2xvdG5hbWUgKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0 cihTVUJTQ1JJUFRJT05PSUQsIHR1cCwKQEAgLTIxODIsNiArMjMyMyw3IEBAIERyb3BTdWJzY3Jp cHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAl9CiAK IAkvKiBDbGVhbiB1cCBkZXBlbmRlbmNpZXMgKi8KKwlkZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0Zv cihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCwgZmFsc2UpOwogCWRlbGV0ZVNoYXJlZERl cGVuZGVuY3lSZWNvcmRzRm9yKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkLCAwKTsKIAog CS8qIFJlbW92ZSBhbnkgYXNzb2NpYXRlZCByZWxhdGlvbiBzeW5jaHJvbml6YXRpb24gc3RhdGVz LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMgYi9zcmMvYmFj a2VuZC9mb3JlaWduL2ZvcmVpZ24uYwppbmRleCBiOTEyYTA2ZGQxNS4uNGUxOGJhZGU0MDkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCisrKyBiL3NyYy9iYWNrZW5k L2ZvcmVpZ24vZm9yZWlnbi5jCkBAIC03Miw2ICs3Miw3IEBAIEdldEZvcmVpZ25EYXRhV3JhcHBl ckV4dGVuZGVkKE9pZCBmZHdpZCwgYml0czE2IGZsYWdzKQogCWZkdy0+ZmR3bmFtZSA9IHBzdHJk dXAoTmFtZVN0cihmZHdmb3JtLT5mZHduYW1lKSk7CiAJZmR3LT5mZHdoYW5kbGVyID0gZmR3Zm9y bS0+ZmR3aGFuZGxlcjsKIAlmZHctPmZkd3ZhbGlkYXRvciA9IGZkd2Zvcm0tPmZkd3ZhbGlkYXRv cjsKKwlmZHctPmZkd2Nvbm5lY3Rpb24gPSBmZHdmb3JtLT5mZHdjb25uZWN0aW9uOwogCiAJLyog RXh0cmFjdCB0aGUgZmR3b3B0aW9ucyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKEZPUkVJ R05EQVRBV1JBUFBFUk9JRCwKQEAgLTE3Niw2ICsxNzcsMzEgQEAgR2V0Rm9yZWlnblNlcnZlckV4 dGVuZGVkKE9pZCBzZXJ2ZXJpZCwgYml0czE2IGZsYWdzKQogfQogCiAKKy8qCisgKiBGb3JlaWdu U2VydmVyTmFtZSAtIGdldCBuYW1lIG9mIGZvcmVpZ24gc2VydmVyLgorICovCitjaGFyICoKK0Zv cmVpZ25TZXJ2ZXJOYW1lKE9pZCBzZXJ2ZXJpZCkKK3sKKwlGb3JtX3BnX2ZvcmVpZ25fc2VydmVy IHNlcnZlcmZvcm07CisJY2hhcgkgICAqc2VydmVybmFtZTsKKwlIZWFwVHVwbGUJdHA7CisKKwl0 cCA9IFNlYXJjaFN5c0NhY2hlMShGT1JFSUdOU0VSVkVST0lELCBPYmplY3RJZEdldERhdHVtKHNl cnZlcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZm9yZWlnbiBzZXJ2ZXIgJXUiLCBzZXJ2ZXJpZCk7CisK KwlzZXJ2ZXJmb3JtID0gKEZvcm1fcGdfZm9yZWlnbl9zZXJ2ZXIpIEdFVFNUUlVDVCh0cCk7CisK KwlzZXJ2ZXJuYW1lID0gcHN0cmR1cChOYW1lU3RyKHNlcnZlcmZvcm0tPnNydm5hbWUpKTsKKwor CVJlbGVhc2VTeXNDYWNoZSh0cCk7CisKKwlyZXR1cm4gc2VydmVybmFtZTsKK30KKworCiAvKgog ICogR2V0Rm9yZWlnblNlcnZlckJ5TmFtZSAtIGxvb2sgdXAgdGhlIGZvcmVpZ24gc2VydmVyIGRl ZmluaXRpb24gYnkgbmFtZS4KICAqLwpAQCAtMTkxLDYgKzIxNyw2MSBAQCBHZXRGb3JlaWduU2Vy dmVyQnlOYW1lKGNvbnN0IGNoYXIgKnNydm5hbWUsIGJvb2wgbWlzc2luZ19vaykKIH0KIAogCisv KgorICogUmV0cmlldmUgY29ubmVjdGlvbiBzdHJpbmcgZnJvbSBzZXJ2ZXIncyBGRFcuCisgKi8K K2NoYXIgKgorRm9yZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoT2lkIHVzZXJpZCwgT2lkIHNl cnZlcmlkKQoreworCXN0YXRpYyBNZW1vcnlDb250ZXh0IHRlbXBDb250ZXh0ID0gTlVMTDsKKwlN ZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlGb3JlaWduU2VydmVyICpzZXJ2ZXI7CisJRm9yZWlnbkRh dGFXcmFwcGVyICpmZHc7CisJRGF0dW0JCWNvbm5lY3Rpb25fZGF0dW07CisJdGV4dAkgICAqY29u bmVjdGlvbl90ZXh0OworCWNoYXIJICAgKnJlc3VsdDsKKworCS8qCisJICogR2V0Rm9yZWlnblNl cnZlciwgR2V0Rm9yZWlnbkRhdGFXcmFwcGVyLCBhbmQgdGhlIGNvbm5lY3Rpb24gZnVuY3Rpb24K KwkgKiBpdHNlbGYgYWxsIGxlYWsgbWVtb3J5IGludG8gQ3VycmVudE1lbW9yeUNvbnRleHQuIFN3 aXRjaCB0byBhIHRlbXBvcmFyeQorCSAqIGNvbnRleHQgZm9yIGVhc3kgY2xlYW51cC4KKwkgKi8K KwlpZiAodGVtcENvbnRleHQgPT0gTlVMTCkKKwl7CisJCXRlbXBDb250ZXh0ID0gQWxsb2NTZXRD b250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSJGRFdDb25uZWN0aW9u Q29udGV4dCIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCX0KKworCW9s ZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0ZW1wQ29udGV4dCk7CisKKwlzZXJ2ZXIgPSBH ZXRGb3JlaWduU2VydmVyKHNlcnZlcmlkKTsKKwlmZHcgPSBHZXRGb3JlaWduRGF0YVdyYXBwZXIo c2VydmVyLT5mZHdpZCk7CisKKwlpZiAoIU9pZElzVmFsaWQoZmR3LT5mZHdjb25uZWN0aW9uKSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJmb3JlaWduIGRhdGEgd3JhcHBlciBcIiVz XCIgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpb24gY29ubmVjdGlvbnMiLAorCQkJCQkJZmR3 LT5mZHduYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJGb3JlaWduIGRhdGEgd3JhcHBlciBtdXN0IGJl IGRlZmluZWQgd2l0aCBDT05ORUNUSU9OIHNwZWNpZmllZC4iKSkpOworCisKKwljb25uZWN0aW9u X2RhdHVtID0gT2lkRnVuY3Rpb25DYWxsMyhmZHctPmZkd2Nvbm5lY3Rpb24sCisJCQkJCQkJCQkJ T2JqZWN0SWRHZXREYXR1bSh1c2VyaWQpLAorCQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0oc2Vy dmVyaWQpLAorCQkJCQkJCQkJCVBvaW50ZXJHZXREYXR1bShOVUxMKSk7CisKKwljb25uZWN0aW9u X3RleHQgPSBEYXR1bUdldFRleHRQUChjb25uZWN0aW9uX2RhdHVtKTsKKworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOworCisJcmVzdWx0ID0gdGV4dF90b19jc3RyaW5nKGNvbm5lY3Rp b25fdGV4dCk7CisKKwlNZW1vcnlDb250ZXh0UmVzZXQodGVtcENvbnRleHQpOworCisJcmV0dXJu IHJlc3VsdDsKK30KKworCiAvKgogICogR2V0VXNlck1hcHBpbmcgLSBsb29rIHVwIHRoZSB1c2Vy IG1hcHBpbmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNzEzZWU1YzEwYTIuLmY5MGZhZDJmZDRkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKQEAgLTU1ODAsNiArNTU4MCw4IEBAIGZkd19vcHRpb246CiAJCQl8IE5PIEhB TkRMRVIJCQkJCQl7ICQkID0gbWFrZURlZkVsZW0oImhhbmRsZXIiLCBOVUxMLCBAMSk7IH0KIAkJ CXwgVkFMSURBVE9SIGhhbmRsZXJfbmFtZQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgidmFsaWRhdG9y IiwgKE5vZGUgKikgJDIsIEAxKTsgfQogCQkJfCBOTyBWQUxJREFUT1IJCQkJCQl7ICQkID0gbWFr ZURlZkVsZW0oInZhbGlkYXRvciIsIE5VTEwsIEAxKTsgfQorCQkJfCBDT05ORUNUSU9OIGhhbmRs ZXJfbmFtZQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgiY29ubmVjdGlvbiIsIChOb2RlICopICQyLCBA MSk7IH0KKwkJCXwgTk8gQ09OTkVDVElPTgkJCQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgiY29ubmVj dGlvbiIsIE5VTEwsIEAxKTsgfQogCQk7CiAKIGZkd19vcHRpb25zOgpAQCAtMTEwMzAsNiArMTEw MzIsMTYgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdDoKIAkJCQkJbi0+b3B0aW9ucyA9ICQ4Owog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBDUkVBVEUgU1VCU0NSSVBUSU9OIG5h bWUgU0VSVkVSIG5hbWUgUFVCTElDQVRJT04gbmFtZV9saXN0IG9wdF9kZWZpbml0aW9uCisJCQkJ eworCQkJCQlDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpuID0KKwkJCQkJCW1ha2VOb2RlKENyZWF0 ZVN1YnNjcmlwdGlvblN0bXQpOworCQkJCQluLT5zdWJuYW1lID0gJDM7CisJCQkJCW4tPnNlcnZl cm5hbWUgPSAkNTsKKwkJCQkJbi0+cHVibGljYXRpb24gPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9 ICQ4OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQk7CiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgpAQCAtMTEwNTksNiArMTEwNzEsMTYgQEAgQWx0ZXJTdWJzY3JpcHRpb25TdG10Ogog CQkJCQluLT5jb25uaW5mbyA9ICQ1OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJ fCBBTFRFUiBTVUJTQ1JJUFRJT04gbmFtZSBTRVJWRVIgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJT dWJzY3JpcHRpb25TdG10ICpuID0KKwkJCQkJCW1ha2VOb2RlKEFsdGVyU3Vic2NyaXB0aW9uU3Rt dCk7CisKKwkJCQkJbi0+a2luZCA9IEFMVEVSX1NVQlNDUklQVElPTl9TRVJWRVI7CisJCQkJCW4t PnN1Ym5hbWUgPSAkMzsKKwkJCQkJbi0+c2VydmVybmFtZSA9ICQ1OworCQkJCQkkJCA9IChOb2Rl ICopIG47CisJCQkJfQogCQkJfCBBTFRFUiBTVUJTQ1JJUFRJT04gbmFtZSBSRUZSRVNIIFBVQkxJ Q0FUSU9OIG9wdF9kZWZpbml0aW9uCiAJCQkJewogCQkJCQlBbHRlclN1YnNjcmlwdGlvblN0bXQg Km4gPQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggYWQyODFl NzA2OWIuLjA3NjEyNTI1ZjMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKQEAgLTUwNTUsNyArNTA1NSw3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9p ZCkKIAkvKiBFbnN1cmUgYWxsb2NhdGlvbnMgaW4gcGVybWFuZW50IGNvbnRleHQuICovCiAJb2xk Y3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQluZXdzdWIgPSBH ZXRTdWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJbmV3c3Vi ID0gR2V0U3Vic2NyaXB0aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUsIHRydWUp OwogCiAJLyoKIAkgKiBFeGl0IGlmIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQuIFRoaXMg bm9ybWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4KQEAgLTUxNjEsNyArNTE2MSw5IEBAIG1heWJlX3Jl cmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIH0KIAogLyoKLSAqIENhbGxiYWNrIGZyb20gc3Vic2Ny aXB0aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4KKyAqIENhbGxiYWNrIGZyb20gc3Vic2NyaXB0 aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4gQWxzbyBuZWVkZWQgZm9yIHNlcnZlciBvcgorICog dXNlciBtYXBwaW5nIGludmFsaWRhdGlvbiwgd2hpY2ggY2FuIGNoYW5nZSB0aGUgY29ubmVjdGlv biBpbmZvcm1hdGlvbiBmb3IKKyAqIHN1YnNjcmlwdGlvbnMgdGhhdCBjb25uZWN0IHVzaW5nIGEg c2VydmVyIG9iamVjdC4KICAqLwogc3RhdGljIHZvaWQKIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2Io RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKQEAgLTU3NjcsNyArNTc2 OSw3IEBAIEluaXRpYWxpemVMb2dSZXBXb3JrZXIodm9pZCkKIAkgKi8KIAlMb2NrU2hhcmVkT2Jq ZWN0KFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIDAs CiAJCQkJCSBBY2Nlc3NTaGFyZUxvY2spOwotCU15U3Vic2NyaXB0aW9uID0gR2V0U3Vic2NyaXB0 aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCU15U3Vic2NyaXB0aW9uID0g R2V0U3Vic2NyaXB0aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUsIHRydWUpOwog CWlmICghTXlTdWJzY3JpcHRpb24pCiAJewogCQllcmVwb3J0KExPRywKQEAgLTU4MjksNiArNTgz MSwxNCBAQCBJbml0aWFsaXplTG9nUmVwV29ya2VyKHZvaWQpCiAJQ2FjaGVSZWdpc3RlclN5c2Nh Y2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OT0lELAogCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9jaGFu Z2VfY2IsCiAJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwkvKiBLZWVwIHVzIGluZm9ybWVkIGFib3V0 IHN1YnNjcmlwdGlvbiBjaGFuZ2VzLiAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNr KEZPUkVJR05TRVJWRVJPSUQsCisJCQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKKwkJ CQkJCQkJICAoRGF0dW0pIDApOworCS8qIEtlZXAgdXMgaW5mb3JtZWQgYWJvdXQgc3Vic2NyaXB0 aW9uIGNoYW5nZXMuICovCisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVVNFUk1BUFBJ TkdPSUQsCisJCQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKKwkJCQkJCQkJICAoRGF0 dW0pIDApOwogCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soQVVUSE9JRCwKIAkJCQkJ CQkJICBzdWJzY3JpcHRpb25fY2hhbmdlX2NiLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYjllMGVkZjg3NTUu LjE1M2YwNGFjNDAzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTUxMjEsNiArNTEyMSw3IEBAIGdldFN1YnNj cmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX3N1YmRpc2FibGVvbmVycjsKIAlpbnQJ CQlpX3N1YnBhc3N3b3JkcmVxdWlyZWQ7CiAJaW50CQkJaV9zdWJydW5hc293bmVyOworCWludAkJ CWlfc3Vic2VydmVybmFtZTsKIAlpbnQJCQlpX3N1YmNvbm5pbmZvOwogCWludAkJCWlfc3Vic2xv dG5hbWU7CiAJaW50CQkJaV9zdWJzeW5jY29tbWl0OwpAQCAtNTIxNywxNCArNTIxOCwyNCBAQCBn ZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lv biA+PSAxOTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiIHMu c3VibWF4cmV0ZW50aW9uXG4iKTsKKwkJCQkJCQkgIiBzLnN1Ym1heHJldGVudGlvbixcbiIpOwog CWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCi0JCQkJCQkgICIgMCBBUyBzdWJtYXhy ZXRlbnRpb25cbiIpOworCQkJCQkJICAiIDAgQVMgc3VibWF4cmV0ZW50aW9uLFxuIik7CisKKwlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiIGZzLnNydm5hbWUgQVMgc3Vic2VydmVybmFtZVxuIik7CisJZWxzZQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBOVUxMIEFTIHN1YnNlcnZlcm5hbWVcbiIpOwogCiAJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkgIkZST00gcGdfc3Vic2NyaXB0aW9u IHNcbiIpOwogCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkwMDAwKQorCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIkxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2Zv cmVpZ25fc2VydmVyIGZzIFxuIgorCQkJCQkJCSAiICAgIE9OIGZzLm9pZCA9IHMuc3Vic2VydmVy IFxuIik7CisKIAlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYgZm91dC0+cmVtb3RlVmVyc2lv biA+PSAxNzAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBvIFxuIgpAQCAt NTI1Niw2ICs1MjY3LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlfc3Vi ZmFpbG92ZXIgPSBQUWZudW1iZXIocmVzLCAic3ViZmFpbG92ZXIiKTsKIAlpX3N1YnJldGFpbmRl YWR0dXBsZXMgPSBQUWZudW1iZXIocmVzLCAic3VicmV0YWluZGVhZHR1cGxlcyIpOwogCWlfc3Vi bWF4cmV0ZW50aW9uID0gUFFmbnVtYmVyKHJlcywgInN1Ym1heHJldGVudGlvbiIpOworCWlfc3Vi c2VydmVybmFtZSA9IFBRZm51bWJlcihyZXMsICJzdWJzZXJ2ZXJuYW1lIik7CiAJaV9zdWJjb25u aW5mbyA9IFBRZm51bWJlcihyZXMsICJzdWJjb25uaW5mbyIpOwogCWlfc3Vic2xvdG5hbWUgPSBQ UWZudW1iZXIocmVzLCAic3Vic2xvdG5hbWUiKTsKIAlpX3N1YnN5bmNjb21taXQgPSBQUWZudW1i ZXIocmVzLCAic3Vic3luY2NvbW1pdCIpOwpAQCAtNTI3Nyw2ICs1Mjg5LDEwIEBAIGdldFN1YnNj cmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAogCQlzdWJpbmZvW2ldLnN1YmVuYWJsZWQgPQogCQkJ KHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJlbmFibGVkKSwgInQiKSA9PSAwKTsKKwkJ aWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV9zdWJzZXJ2ZXJuYW1lKSkKKwkJCXN1YmluZm9baV0u c3Vic2VydmVybmFtZSA9IE5VTEw7CisJCWVsc2UKKwkJCXN1YmluZm9baV0uc3Vic2VydmVybmFt ZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJzZXJ2ZXJuYW1lKSk7CiAJCXN1 YmluZm9baV0uc3ViYmluYXJ5ID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3Vi YmluYXJ5KSwgInQiKSA9PSAwKTsKIAkJc3ViaW5mb1tpXS5zdWJzdHJlYW0gPSAqKFBRZ2V0dmFs dWUocmVzLCBpLCBpX3N1YnN0cmVhbSkpOwpAQCAtNTI5Myw4ICs1MzA5LDExIEBAIGdldFN1YnNj cmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlf c3VicmV0YWluZGVhZHR1cGxlcyksICJ0IikgPT0gMCk7CiAJCXN1YmluZm9baV0uc3VibWF4cmV0 ZW50aW9uID0KIAkJCWF0b2koUFFnZXR2YWx1ZShyZXMsIGksIGlfc3VibWF4cmV0ZW50aW9uKSk7 Ci0JCXN1YmluZm9baV0uc3ViY29ubmluZm8gPQotCQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3N1YmNvbm5pbmZvKSk7CisJCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfc3ViY29u bmluZm8pKQorCQkJc3ViaW5mb1tpXS5zdWJjb25uaW5mbyA9IE5VTEw7CisJCWVsc2UKKwkJCXN1 YmluZm9baV0uc3ViY29ubmluZm8gPQorCQkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwg aV9zdWJjb25uaW5mbykpOwogCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3N1YnNsb3RuYW1l KSkKIAkJCXN1YmluZm9baV0uc3Vic2xvdG5hbWUgPSBOVUxMOwogCQllbHNlCkBAIC01NTAzLDkg KzU1MjIsMTcgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3Jp cHRpb25JbmZvICpzdWJpbmZvKQogCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHEsICJEUk9QIFNVQlND UklQVElPTiAlcztcbiIsCiAJCQkJCSAgcXN1Ym5hbWUpOwogCi0JYXBwZW5kUFFFeHBCdWZmZXIo cXVlcnksICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzIENPTk5FQ1RJT04gIiwKKwlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwgIkNSRUFURSBTVUJTQ1JJUFRJT04gJXMgIiwKIAkJCQkJICBxc3VibmFt ZSk7Ci0JYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5LCBzdWJpbmZvLT5zdWJjb25uaW5mbywg Zm91dCk7CisJaWYgKHN1YmluZm8tPnN1YnNlcnZlcm5hbWUpCisJeworCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxdWVyeSwgIlNFUlZFUiAlcyIsIGZtdElkKHN1YmluZm8tPnN1YnNlcnZlcm5hbWUpKTsK Kwl9CisJZWxzZQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDT05ORUNUSU9OICIp OworCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXVlcnksIHN1YmluZm8tPnN1YmNvbm5pbmZvLCBm b3V0KTsKKwl9CiAKIAkvKiBCdWlsZCBsaXN0IG9mIHF1b3RlZCBwdWJsaWNhdGlvbnMgYW5kIGFw cGVuZCB0aGVtIHRvIHF1ZXJ5LiAqLwogCWlmICghcGFyc2VQR0FycmF5KHN1YmluZm8tPnN1YnB1 YmxpY2F0aW9ucywgJnB1Ym5hbWVzLCAmbnB1Ym5hbWVzKSkKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDRjNGIx NGU1ZmM3Li5jNTQ2NjUxZGFjYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC03MTksNiArNzE5LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAlib29sCQlzdWJmYWlsb3ZlcjsKIAlib29s CQlzdWJyZXRhaW5kZWFkdHVwbGVzOwogCWludAkJCXN1Ym1heHJldGVudGlvbjsKKwljaGFyCSAg ICpzdWJzZXJ2ZXJuYW1lOwogCWNoYXIJICAgKnN1YmNvbm5pbmZvOwogCWNoYXIJICAgKnN1YnNs b3RuYW1lOwogCWNoYXIJICAgKnN1YnN5bmNjb21taXQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5k ZXggOGI5MWJjMDAwNjIuLmM1ODdlOWJhOTQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0y MzMyLDcgKzIzMzIsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAll bHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFueSkpCiAJCUNP TVBMRVRFX1dJVEgoIkNPTk5FQ1RJT04iLCAiRU5BQkxFIiwgIkRJU0FCTEUiLCAiT1dORVIgVE8i LAogCQkJCQkgICJSRU5BTUUgVE8iLCAiUkVGUkVTSCBQVUJMSUNBVElPTiIsICJSRUZSRVNIIFNF UVVFTkNFUyIsCi0JCQkJCSAgIlNFVCIsICJTS0lQICgiLCAiQUREIFBVQkxJQ0FUSU9OIiwgIkRS T1AgUFVCTElDQVRJT04iKTsKKwkJCQkJICAiU0VSVkVSIiwgIlNFVCIsICJTS0lQICgiLCAiQURE IFBVQkxJQ0FUSU9OIiwgIkRST1AgUFVCTElDQVRJT04iKTsKIAkvKiBBTFRFUiBTVUJTQ1JJUFRJ T04gPG5hbWU+IFJFRlJFU0ggKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJTVUJTQ1JJ UFRJT04iLCBNYXRjaEFueSwgTWF0Y2hBbnlOLCAiUkVGUkVTSCIpKQogCQlDT01QTEVURV9XSVRI KCJQVUJMSUNBVElPTiIsICJTRVFVRU5DRVMiKTsKQEAgLTM4NDgsOSArMzg0OCwxNiBAQCBtYXRj aF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAogLyogQ1JFQVRFIFNVQlNDUklQVElP TiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFu eSkpCi0JCUNPTVBMRVRFX1dJVEgoIkNPTk5FQ1RJT04iKTsKKwkJQ09NUExFVEVfV0lUSCgiU0VS VkVSIiwgIkNPTk5FQ1RJT04iKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VCU0NS SVBUSU9OIiwgTWF0Y2hBbnksICJTRVJWRVIiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgo IlBVQkxJQ0FUSU9OIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElP TiIsIE1hdGNoQW55LCAiQ09OTkVDVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgi UFVCTElDQVRJT04iKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9O IiwgTWF0Y2hBbnksICJTRVJWRVIiLAorCQkJCQkgTWF0Y2hBbnksICJQVUJMSUNBVElPTiIpKQor CXsKKwkJLyogY29tcGxldGUgd2l0aCBub3RoaW5nIGhlcmUgYXMgdGhpcyByZWZlcnMgdG8gcmVt b3RlIHB1YmxpY2F0aW9ucyAqLworCX0KIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VC U0NSSVBUSU9OIiwgTWF0Y2hBbnksICJDT05ORUNUSU9OIiwKIAkJCQkJIE1hdGNoQW55LCAiUFVC TElDQVRJT04iKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVp Z25fZGF0YV93cmFwcGVyLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93 cmFwcGVyLmgKaW5kZXggZDQ3YmY0Njc4MTAuLmFkMDU2OWIwNjgwIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyLmgKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oCkBAIC0zNiw2ICszNiw5IEBAIENB VEFMT0cocGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIsMjMyOCxGb3JlaWduRGF0YVdyYXBwZXJSZWxh dGlvbklkKQogCU9pZAkJCWZkd3ZhbGlkYXRvciBCS0lfTE9PS1VQX09QVChwZ19wcm9jKTsJLyog b3B0aW9uIHZhbGlkYXRpb24KIAkJCQkJCQkJCQkJCQkJICogZnVuY3Rpb24sIG9yIDAgaWYKIAkJ CQkJCQkJCQkJCQkJICogbm9uZSAqLworCU9pZAkJCWZkd2Nvbm5lY3Rpb24gQktJX0xPT0tVUF9P UFQocGdfcHJvYyk7CS8qIGNvbm5lY3Rpb24gc3RyaW5nCisJCQkJCQkJCQkJCQkJCSAqIGZ1bmN0 aW9uLCBvciAwIGlmCisJCQkJCQkJCQkJCQkJCSAqIG5vbmUgKi8KIAogI2lmZGVmIENBVEFMT0df VkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJYWNsaXRl bQkJZmR3YWNsWzFdOwkJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaAppbmRleCBmMzU3MWQyYmZjZi4uMzMyZTdiZWNmZmEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAtOTAsOSArOTAsMTEgQEAgQ0FUQUxPRyhw Z19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JF TEFUSU9OIEJLSV9ST1cKIAkJCQkJCQkJCSAqIGV4Y2VlZGVkIG1heF9yZXRlbnRpb25fZHVyYXRp b24sIHdoZW4KIAkJCQkJCQkJCSAqIGRlZmluZWQgKi8KIAorCU9pZAkJCXN1YnNlcnZlcjsJCS8q IFNldCBpZiBjb25uZWN0aW5nIHdpdGggc2VydmVyICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxF TgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rp b24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KLQl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9S Q0VfTk9UX05VTEw7CisJdGV4dAkJc3ViY29ubmluZm87CS8qIFNldCBpZiBjb25uZWN0aW5nIHdp dGggY29ubmVjdGlvbiBzdHJpbmcgKi8KIAogCS8qIFNsb3QgbmFtZSBvbiBwdWJsaXNoZXIgKi8K IAlOYW1lRGF0YQlzdWJzbG90bmFtZSBCS0lfRk9SQ0VfTlVMTDsKQEAgLTE5OSw3ICsyMDEsOCBA QCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAogI2VuZGlmCQkJCQkJCS8qIEVYUE9TRV9U T19DTElFTlRfQ09ERSAqLwogCi1leHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24o T2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vi c2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLAorCQkJCQkJCQkJIGJvb2wgYWNs Y2hlY2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7 CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oIGIvc3JjL2luY2x1ZGUvZm9yZWlnbi9m b3JlaWduLmgKaW5kZXggYzE4NWQxNDU4YTIuLjY1ZWQ5YTdmOTg3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaAorKysgYi9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVp Z24uaApAQCAtMjgsNiArMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBGb3JlaWduRGF0YVdyYXBwZXIK IAljaGFyCSAgICpmZHduYW1lOwkJLyogTmFtZSBvZiB0aGUgRkRXICovCiAJT2lkCQkJZmR3aGFu ZGxlcjsJCS8qIE9pZCBvZiBoYW5kbGVyIGZ1bmN0aW9uLCBvciAwICovCiAJT2lkCQkJZmR3dmFs aWRhdG9yOwkvKiBPaWQgb2YgdmFsaWRhdG9yIGZ1bmN0aW9uLCBvciAwICovCisJT2lkCQkJZmR3 Y29ubmVjdGlvbjsJLyogT2lkIG9mIGNvbm5lY3Rpb24gc3RyaW5nIGZ1bmN0aW9uLCBvciAwICov CiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIGZkd29wdGlvbnMgYXMgRGVmRWxlbSBsaXN0ICovCiB9 IEZvcmVpZ25EYXRhV3JhcHBlcjsKIApAQCAtNjUsMTAgKzY2LDEyIEBAIHR5cGVkZWYgc3RydWN0 IEZvcmVpZ25UYWJsZQogCiAKIGV4dGVybiBGb3JlaWduU2VydmVyICpHZXRGb3JlaWduU2VydmVy KE9pZCBzZXJ2ZXJpZCk7CitleHRlcm4gY2hhciAqRm9yZWlnblNlcnZlck5hbWUoT2lkIHNlcnZl cmlkKTsKIGV4dGVybiBGb3JlaWduU2VydmVyICpHZXRGb3JlaWduU2VydmVyRXh0ZW5kZWQoT2lk IHNlcnZlcmlkLAogCQkJCQkJCQkJCQkgICBiaXRzMTYgZmxhZ3MpOwogZXh0ZXJuIEZvcmVpZ25T ZXJ2ZXIgKkdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAqc3J2bmFtZSwKIAkJCQkJ CQkJCQkJIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4gY2hhciAqRm9yZWlnblNlcnZlckNvbm5l Y3Rpb25TdHJpbmcoT2lkIHVzZXJpZCwgT2lkIHNlcnZlcmlkKTsKIGV4dGVybiBVc2VyTWFwcGlu ZyAqR2V0VXNlck1hcHBpbmcoT2lkIHVzZXJpZCwgT2lkIHNlcnZlcmlkKTsKIGV4dGVybiBGb3Jl aWduRGF0YVdyYXBwZXIgKkdldEZvcmVpZ25EYXRhV3JhcHBlcihPaWQgZmR3aWQpOwogZXh0ZXJu IEZvcmVpZ25EYXRhV3JhcHBlciAqR2V0Rm9yZWlnbkRhdGFXcmFwcGVyRXh0ZW5kZWQoT2lkIGZk d2lkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGFhYzRiZmM3MGQ5Li5hODE4NzdiYmYxMSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDM3OCw2ICs0Mzc4LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdAogewogCU5vZGVUYWcJCXR5cGU7CiAJY2hhcgkgICAq c3VibmFtZTsJCS8qIE5hbWUgb2YgdGhlIHN1YnNjcmlwdGlvbiAqLworCWNoYXIJICAgKnNlcnZl cm5hbWU7CQkvKiBTZXJ2ZXIgbmFtZSBvZiBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpjb25uaW5m bzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHB1Ymxpc2hlciAqLwogCUxpc3QJICAgKnB1Ymxp Y2F0aW9uOwkvKiBPbmUgb3IgbW9yZSBwdWJsaWNhdGlvbiB0byBzdWJzY3JpYmUgdG8gKi8KIAlM aXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCkBAIC00Mzg2LDYg KzQzODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdWJzY3JpcHRpb25TdG10CiB0eXBlZGVm IGVudW0gQWx0ZXJTdWJzY3JpcHRpb25UeXBlCiB7CiAJQUxURVJfU1VCU0NSSVBUSU9OX09QVElP TlMsCisJQUxURVJfU1VCU0NSSVBUSU9OX1NFUlZFUiwKIAlBTFRFUl9TVUJTQ1JJUFRJT05fQ09O TkVDVElPTiwKIAlBTFRFUl9TVUJTQ1JJUFRJT05fU0VUX1BVQkxJQ0FUSU9OLAogCUFMVEVSX1NV QlNDUklQVElPTl9BRERfUFVCTElDQVRJT04sCkBAIC00NDAxLDYgKzQ0MDMsNyBAQCB0eXBlZGVm IHN0cnVjdCBBbHRlclN1YnNjcmlwdGlvblN0bXQKIAlOb2RlVGFnCQl0eXBlOwogCUFsdGVyU3Vi c2NyaXB0aW9uVHlwZSBraW5kOyAvKiBBTFRFUl9TVUJTQ1JJUFRJT05fT1BUSU9OUywgZXRjICov CiAJY2hhcgkgICAqc3VibmFtZTsJCS8qIE5hbWUgb2YgdGhlIHN1YnNjcmlwdGlvbiAqLworCWNo YXIJICAgKnNlcnZlcm5hbWU7CQkvKiBTZXJ2ZXIgbmFtZSBvZiBwdWJsaXNoZXIgKi8KIAljaGFy CSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHB1Ymxpc2hlciAqLwogCUxp c3QJICAgKnB1YmxpY2F0aW9uOwkvKiBPbmUgb3IgbW9yZSBwdWJsaWNhdGlvbiB0byBzdWJzY3Jp YmUgdG8gKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBvZiBEZWZFbGVtIG5vZGVzICov CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CmluZGV4IDIxNWViODk5YmUzLi41 OWM2NDEyNmJkYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lu cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQKQEAgLTIy NCw2ICsyMjQsNyBAQCBOT1RJQ0U6ICBjaGVja2luZyBwZ19leHRlbnNpb24ge2V4dGNvbmZpZ30g PT4gcGdfY2xhc3Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVpZ25fZGF0YV93cmFw cGVyIHtmZHdvd25lcn0gPT4gcGdfYXV0aGlkIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19m b3JlaWduX2RhdGFfd3JhcHBlciB7ZmR3aGFuZGxlcn0gPT4gcGdfcHJvYyB7b2lkfQogTk9USUNF OiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIge2Zkd3ZhbGlkYXRvcn0gPT4gcGdf cHJvYyB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIge2Zk d2Nvbm5lY3Rpb259ID0+IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVp Z25fc2VydmVyIHtzcnZvd25lcn0gPT4gcGdfYXV0aGlkIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2lu ZyBwZ19mb3JlaWduX3NlcnZlciB7c3J2ZmR3fSA9PiBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciB7 b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfdXNlcl9tYXBwaW5nIHt1bXVzZXJ9ID0+IHBnX2F1 dGhpZCB7b2lkfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0Cmlu ZGV4IGIzZWNjZDhhZmUzLi4xOGExNDZlYzhhMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMSw2ICsxLDE0IEBACiAtLQogLS0gU1VCU0NSSVBUSU9O CiAtLQorLS0gZGlyZWN0b3J5IHBhdGhzIGFuZCBkbHN1ZmZpeCBhcmUgcGFzc2VkIHRvIHVzIGlu IGVudmlyb25tZW50IHZhcmlhYmxlcworXGdldGVudiBsaWJkaXIgUEdfTElCRElSCitcZ2V0ZW52 IGRsc3VmZml4IFBHX0RMU1VGRklYCitcc2V0IHJlZ3Jlc3NsaWIgOmxpYmRpciAnL3JlZ3Jlc3Mn IDpkbHN1ZmZpeAorQ1JFQVRFIEZVTkNUSU9OIHRlc3RfZmR3X2Nvbm5lY3Rpb24ob2lkLCBvaWQs IGludGVybmFsKQorICAgIFJFVFVSTlMgdGV4dAorICAgIEFTIDoncmVncmVzc2xpYicsICd0ZXN0 X2Zkd19jb25uZWN0aW9uJworICAgIExBTkdVQUdFIEM7CiBDUkVBVEUgUk9MRSByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIExPR0lOIFNVUEVSVVNFUjsKIENSRUFURSBST0xFIHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIyOwogQ1JFQVRFIFJPTEUgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjMg SU4gUk9MRSBwZ19jcmVhdGVfc3Vic2NyaXB0aW9uOwpAQCAtMTQwLDYgKzE0OCwyMSBAQCBFUlJP UjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBpbnZhbGlkIGNvbm5lY3Rpb24g b3B0aW9uICJpX2RvbnRfZXhpcwogLS0gY29ubmVjdGluZywgc28gdGhpcyBpcyByZWxpYWJsZSBh bmQgc2FmZSkKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNSBDT05ORUNUSU9O ICdwb3J0PS0xJyBQVUJMSUNBVElPTiB0ZXN0cHViOwogRVJST1I6ICBzdWJzY3JpcHRpb24gInJl Z3Jlc3NfdGVzdHN1YjUiIGNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6IGludmFs aWQgcG9ydCBudW1iZXI6ICItMSIKK0NSRUFURSBGT1JFSUdOIERBVEEgV1JBUFBFUiB0ZXN0X2Zk dzsKK0NSRUFURSBTRVJWRVIgdGVzdF9zZXJ2ZXIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgdGVzdF9m ZHc7CitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIFNF UlZFUiB0ZXN0X3NlcnZlcjsKKy0tIGZhaWwsIG5lZWQgQ09OTkVDVElPTiBjbGF1c2UKK0NSRUFU RSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNiBTRVJWRVIgdGVzdF9zZXJ2ZXIgUFVCTElD QVRJT04gdGVzdHB1YiBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25uZWN0ID0gZmFsc2UpOwor RVJST1I6ICBmb3JlaWduIGRhdGEgd3JhcHBlciAidGVzdF9mZHciIGRvZXMgbm90IHN1cHBvcnQg c3Vic2NyaXB0aW9uIGNvbm5lY3Rpb25zCitERVRBSUw6ICBGb3JlaWduIGRhdGEgd3JhcHBlciBt dXN0IGJlIGRlZmluZWQgd2l0aCBDT05ORUNUSU9OIHNwZWNpZmllZC4KK0FMVEVSIEZPUkVJR04g REFUQSBXUkFQUEVSIHRlc3RfZmR3IENPTk5FQ1RJT04gdGVzdF9mZHdfY29ubmVjdGlvbjsKK0NS RUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNiBTRVJWRVIgdGVzdF9zZXJ2ZXIgUFVC TElDQVRJT04gdGVzdHB1YiBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25uZWN0ID0gZmFsc2Up OworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0 ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3Jl YXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFs dGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCitEUk9QIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWI2OworRFJPUCBVU0VSIE1BUFBJTkcgRk9SIHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgU0VSVkVSIHRlc3Rfc2VydmVyOworRFJPUCBTRVJWRVIgdGVzdF9z ZXJ2ZXI7CitEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSIHRlc3RfZmR3OwogLS0gZmFpbCAtIGlu dmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgZHVyaW5nIEFMVEVSCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jhcic7CiBFUlJPUjogIGludmFsaWQgY29u bmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25u ZWN0aW9uIGluZm8gc3RyaW5nCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3JlZ3Jlc3Mu YyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcmVncmVzcy5jCmluZGV4IGNlNWY1ZjllYjE5Li5mNjcwNzVj YWUzMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9yZWdyZXNzLmMKQEAgLTcyOSw2ICs3MjksMTMgQEAgdGVzdF9mZHdfaGFuZGxl cihQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9OVUxMKCk7CiB9CiAKK1BHX0ZVTkNUSU9O X0lORk9fVjEodGVzdF9mZHdfY29ubmVjdGlvbik7CitEYXR1bQordGVzdF9mZHdfY29ubmVjdGlv bihQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0 KCJkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QiKSk7Cit9CisKIFBHX0ZVTkNUSU9OX0lORk9f VjEoaXNfY2F0YWxvZ190ZXh0X3VuaXF1ZV9pbmRleF9vaWQpOwogRGF0dW0KIGlzX2NhdGFsb2df dGV4dF91bmlxdWVfaW5kZXhfb2lkKFBHX0ZVTkNUSU9OX0FSR1MpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3Vic2NyaXB0aW9uLnNxbAppbmRleCBlZjBjMjk4ZDJkZi4uMDQ0ODA5ZjY2N2IgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApAQCAtMiw2ICsyLDE3IEBACiAtLSBTVUJTQ1JJ UFRJT04KIC0tCiAKKy0tIGRpcmVjdG9yeSBwYXRocyBhbmQgZGxzdWZmaXggYXJlIHBhc3NlZCB0 byB1cyBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK1xnZXRlbnYgbGliZGlyIFBHX0xJQkRJUgor XGdldGVudiBkbHN1ZmZpeCBQR19ETFNVRkZJWAorCitcc2V0IHJlZ3Jlc3NsaWIgOmxpYmRpciAn L3JlZ3Jlc3MnIDpkbHN1ZmZpeAorCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9mZHdfY29ubmVjdGlv bihvaWQsIG9pZCwgaW50ZXJuYWwpCisgICAgUkVUVVJOUyB0ZXh0CisgICAgQVMgOidyZWdyZXNz bGliJywgJ3Rlc3RfZmR3X2Nvbm5lY3Rpb24nCisgICAgTEFOR1VBR0UgQzsKKwogQ1JFQVRFIFJP TEUgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciBMT0dJTiBTVVBFUlVTRVI7CiBDUkVBVEUgUk9M RSByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyMjsKIENSRUFURSBST0xFIHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIzIElOIFJPTEUgcGdfY3JlYXRlX3N1YnNjcmlwdGlvbjsKQEAgLTg1LDYgKzk2 LDIxIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNSBDT05ORUNUSU9OICdp X2RvbnRfZXhpc3Q9cGFyYW0nIFBVQkxJQ0FUSU9OCiAtLSBjb25uZWN0aW5nLCBzbyB0aGlzIGlz IHJlbGlhYmxlIGFuZCBzYWZlKQogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI1 IENPTk5FQ1RJT04gJ3BvcnQ9LTEnIFBVQkxJQ0FUSU9OIHRlc3RwdWI7CiAKK0NSRUFURSBGT1JF SUdOIERBVEEgV1JBUFBFUiB0ZXN0X2ZkdzsKK0NSRUFURSBTRVJWRVIgdGVzdF9zZXJ2ZXIgRk9S RUlHTiBEQVRBIFdSQVBQRVIgdGVzdF9mZHc7CitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIFNFUlZFUiB0ZXN0X3NlcnZlcjsKKworLS0gZmFpbCwgbmVl ZCBDT05ORUNUSU9OIGNsYXVzZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI2 IFNFUlZFUiB0ZXN0X3NlcnZlciBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKHNsb3RfbmFtZSA9 IE5PTkUsIGNvbm5lY3QgPSBmYWxzZSk7CisKK0FMVEVSIEZPUkVJR04gREFUQSBXUkFQUEVSIHRl c3RfZmR3IENPTk5FQ1RJT04gdGVzdF9mZHdfY29ubmVjdGlvbjsKK0NSRUFURSBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViNiBTRVJWRVIgdGVzdF9zZXJ2ZXIgUFVCTElDQVRJT04gdGVzdHB1 YiBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25uZWN0ID0gZmFsc2UpOworRFJPUCBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViNjsKKworRFJPUCBVU0VSIE1BUFBJTkcgRk9SIHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgU0VSVkVSIHRlc3Rfc2VydmVyOworRFJPUCBTRVJWRVIgdGVzdF9z ZXJ2ZXI7CitEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSIHRlc3RfZmR3OworCiAtLSBmYWlsIC0g aW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBkdXJpbmcgQUxURVIKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZm9vYmFyJzsKIAotLSAKMi40My4wCgo= --=-kl0RrKiC5IM47BBuZ/Ok--