Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tQ4cY-00HTnx-IW for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2024 13:06:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tQ4cX-0059Sa-UI for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2024 13:06:45 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tQ4cW-0059R9-OK for pgsql-hackers@lists.postgresql.org; Tue, 24 Dec 2024 13:06:45 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tQ4cU-000LVd-0B for pgsql-hackers@postgresql.org; Tue, 24 Dec 2024 13:06:43 +0000 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-5d414b8af7bso9575964a12.0 for ; Tue, 24 Dec 2024 05:06:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735045600; x=1735650400; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=E+iRfQiR2Gn4/iEUxeaf1vzg/FN3TEn0ol9JaM5gEII=; b=DFo6fPSkJZJiRiIy88Od4b91IVaFiy1PpE14TxD1DKeE/eKo4W40eKpoYqo0jktxFo Wph8wzeueoJgMCTL+W2hx6vY/m/FDGNcUR2j18xR7ELFlCl68Asxdf9vHrxJcYQvIfpW JwxCym7aoTWiGXTNJnyrFAWrGJ6Wog3YOqELVbMV5LRY7YnWBlRtefYY0yQz77MHeNxc G4/Fq2ELFBQWQ5tkjXPe5F3AgdAPm4jOAccqMMpPQk2wcwJwE6HP8Ci72D0A82APo0wW AJcXEZLfQTFMDnHhI9OYLzoc2TZMTpXaikE6FE8WVjD9khM9617ZwTHWjobdDd1nRXdc 4Ong== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735045600; x=1735650400; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E+iRfQiR2Gn4/iEUxeaf1vzg/FN3TEn0ol9JaM5gEII=; b=pIZ5IRpoQ6FFA+AJsawP/597yPjOEUNKYKx9T6knKMphzv/nhrxktj2pA7jmezpMpx YXAQiUvUa47PSvMo/1UtfsjwTzkV115fxAFAsHhdav1IusG98/Ps5pwyTy6GEtPz7ZCn vnIqJ8gGRezatjJQZ9TDcXXl0zy2qkzDBvVgeRFsxvc8QkjapyXBRH9xPvbm/3kenxJz YQqdPGLQAcEvsDw66c8VT0ghl0P3eW3rwnuh9yX6BIYr42A7My2uUNczb/BSt3wSflK7 DOJ+uzuHfSqyscgOrURLDdRkHL/EAjwbdMMsoBb2WXhEJf5E7uF3aOW5azOfzZ1LLOB7 pTyQ== X-Gm-Message-State: AOJu0YwTIZ3grCyyiB4nviDUeDTZXXjoZXGjrYvlHrPv2h4sfxsHoHGv neQtm5YN100sLZooBSKv3B/WPj6/DeVG+kuKL8IxM2wofZTWxICIz70GXyFwuOCFJcMp7YXfYRT YCX/AonhY+mKReniJt6jGNc+r63k= X-Gm-Gg: ASbGncuRlccBSTahMSYE3qKtSXv7mXgX2IkUE4OXpi2w3pMK/jdy977QnODfnPPNs/2 BEN8KXC9pTOPasZOmR1u8JVC+x5LPKw1EExgESZKks08gwNRmzCbbHCSPpBRC7qBr7yzB7rDu X-Google-Smtp-Source: AGHT+IGJQDR6R7UcDExRGeWEfgjBo1F31AA6IfyhqSPisNnQiSOypGzHxclKZp4yamO6Zt+q8aSmIwo+XkufXvGTXBw= X-Received: by 2002:a05:6402:1eca:b0:5d6:37ec:60cf with SMTP id 4fb4d7f45d1cf-5d81de48c1cmr16775879a12.27.1735045599532; Tue, 24 Dec 2024 05:06:39 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Tue, 24 Dec 2024 14:06:26 +0100 Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Matthias van de Meent Cc: PostgreSQL Hackers , Andrey Borodin , Melanie Plageman Content-Type: multipart/mixed; boundary="000000000000a19089062a03c8a5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a19089062a03c8a5 Content-Type: multipart/alternative; boundary="000000000000a19088062a03c8a3" --000000000000a19088062a03c8a3 Content-Type: text/plain; charset="UTF-8" Hello! Now STIR used for validation (but without resetting of snapshot during that phase for now). Best regards, Mikhail. > --000000000000a19088062a03c8a3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello!

Now STIR used for val= idation (but without=C2=A0resetting of snapshot during that=C2=A0phase=C2= =A0for now).

Best=C2=A0regards,
Mikhail.=
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
--000000000000a19088062a03c8a3-- --000000000000a19089062a03c8a5 Content-Type: application/octet-stream; name="v8-0004-Allow-snapshot-resets-during-parallel-concurrent-.patch" Content-Disposition: attachment; filename="v8-0004-Allow-snapshot-resets-during-parallel-concurrent-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52hauge3 RnJvbSAzMWIyOGY0YTQ1OGRhOTQ4NmQ3ZDg1MWVlNmEzMWYwMjQxZGYwNzRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAyIERlYyAyMDI0IDAxOjMzOjIxICswMTAwClN1YmplY3Q6IFtQQVRDSCB2OCA0Lzdd IEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudCBpbmRleAog YnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhyb3Vn aG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9uIGFu ZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBwcmV2 aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFsbGVs IGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2VzOgot IEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBwYXJh bGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8gc3Vw cG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3JrZXJz IHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlCiAgcHJvY2VlZGluZyB3 aXRoIHNjYW4KLSBBZGQgcmVncmVzc2lvbiB0ZXN0cyB0byB2ZXJpZnkgYmVoYXZpb3Igd2l0aCB2 YXJpb3VzIGluZGV4IHR5cGVzCgpUaGUgc25hcHNob3QgcmVzZXQgYXBwcm9hY2ggaXMgc2FmZSBm b3Igbm9uLXVuaXF1ZSBpbmRleGVzIHNpbmNlIHRoZXkgZG9uJ3QKbmVlZCBzbmFwc2hvdCBjb25z aXN0ZW5jeSBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBGb3IgdW5pcXVlIGluZGV4ZXMsIHdlCmNv bnRpbnVlIHRvIG1haW50YWluIGEgY29uc2lzdGVudCBzbmFwc2hvdCB0byBwcm9wZXJseSBlbmZv cmNlIHVuaXF1ZW5lc3MKY29uc3RyYWludHMuCgpUaGlzIGhlbHBzIHJlZHVjZSB0aGUgeG1pbiBo b3Jpem9uIGltcGFjdCBvZiBsb25nLXJ1bm5pbmcgY29uY3VycmVudCBpbmRleApidWlsZHMgaW4g cGFyYWxsZWwgbW9kZSwgaW1wcm92aW5nIFZBQ1VVTSdzIGFiaWxpdHkgdG8gY2xlYW4gdXAgZGVh ZCB0dXBsZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAg ICAgIHwgNDMgKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYyAgICAgIHwgMTIgKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jICAgICAgICAgICB8IDM4ICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAzNyArKysrKysrKysrKystLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAgKysrKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAzICst CiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAgICAgfCAgOCAtLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAgICB8ICAzICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgOSArKy0tCiAuLi4v ZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAyMyArKysrKysrKy0K IC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA3ICsrLQog MTMgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYwppbmRleCBkNjk4NTlhYzRkZi4uMDc4MmJkNjRhNmEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKQEAgLTE0Myw3ICsxNDMsNiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVh ZGVyCiAJICovCiAJQnJpblNoYXJlZCAqYnJpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRz b3J0OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZl clVzYWdlICpidWZmZXJ1c2FnZTsKIH0gQnJpbkxlYWRlcjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBz dGF0aWMgdm9pZCBicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwK IHN0YXRpYyB2b2lkIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJp bkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXpl IF9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBz bmFwc2hvdCk7CitzdGF0aWMgU2l6ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVs YXRpb24gaGVhcCk7CiBzdGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5C dWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJy aW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBh dGVfYXNfd29ya2VyKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtMjM1Nyw3ICsyMzU2 LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogewogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsK IAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwotCVNuYXBzaG90CXNuYXBzaG90OwogCVNpemUJ CWVzdGJyaW5zaGFyZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlCcmluU2hhcmVkICpicmluc2hhcmVk OwpAQCAtMjM2Nyw2ICsyMzY1LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCUJ1ZmZlclVz YWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJv b2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJd2FpdF9mb3Jfc25h cHNob3RfYXR0YWNoOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJf UEFSVElDSVBBVElPTgpAQCAtMjM4OCwyNSArMjM4NywyNSBAQCBfYnJpbl9iZWdpbl9wYXJhbGxl bChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9y bWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3Qg cmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3Mg KGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCi0J ICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQg aW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogY29uY3Vy cmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgcHVzaCBpdCBh cyBhY3RpdmUuCisJICogTGF0ZXIgd2UgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0 byB0aGF0IHNuYXBzaG90IHdoaWxlIHRoYXQKKwkgKiBzbmFwc2hvdCBpcyByZXNldCBwZXJpb2Rp Y2FsbHkuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCiAJewogCQlBc3NlcnQoQWN0aXZlU25h cHNob3RTZXQoKSk7Ci0JCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJQXNzZXJ0KCFBY3RpdmVTbmFw c2hvdFNldCgpKTsKIAkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3Qo KSk7CiAJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tF WV9CUklOX1NIQVJFRCB3b3Jrc3BhY2UuCiAJICovCi0JZXN0YnJpbnNoYXJlZCA9IF9icmluX3Bh cmFsbGVsX2VzdGltYXRlX3NoYXJlZChoZWFwLCBzbmFwc2hvdCk7CisJZXN0YnJpbnNoYXJlZCA9 IF9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGJyaW5zaGFyZWQpOwogCWVzdHNvcnQgPSB0dXBs ZXNvcnRfZXN0aW1hdGVfc2hhcmVkKHNjYW50dXBsZXNvcnRzdGF0ZXMpOwogCXNobV90b2NfZXN0 aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0c29ydCk7CkBAIC0yNDQ2LDggKzI0NDUs NiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNu YXBzaG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJh bGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUoKTsKIAkJcmV0dXJuOwpAQCAt MjQ3Miw3ICsyNDY5LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1 aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUoaGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21C cmluU2hhcmVkKGJyaW5zaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBzaG90KTsKKwkJCQkJCQkJICBp c2NvbmN1cnJlbnQgPyBJbnZhbGlkU25hcHNob3QgOiBTbmFwc2hvdEFueSwKKwkJCQkJCQkJICBp c2NvbmN1cnJlbnQpOwogCiAJLyoKIAkgKiBTdG9yZSBzaGFyZWQgdHVwbGVzb3J0LXByaXZhdGUg c3RhdGUsIGZvciB3aGljaCB3ZSByZXNlcnZlZCBzcGFjZS4KQEAgLTI1MTgsNyArMjUxNiw2IEBA IF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJYnJpbmxlYWRlci0+bnBhcnRpY2lwYW50dHVwbGVz b3J0cysrOwogCWJyaW5sZWFkZXItPmJyaW5zaGFyZWQgPSBicmluc2hhcmVkOwogCWJyaW5sZWFk ZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWJyaW5sZWFkZXItPnNuYXBzaG90ID0gc25h cHNob3Q7CiAJYnJpbmxlYWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKIAlicmlubGVhZGVyLT5i dWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0yNTM0LDYgKzI1MzEsMTYgQEAgX2JyaW5f YmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xl YXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJzX2xlYWRlciA9IGJy aW5sZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hv dHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBJbiBjYXNlIHdoZW4g bGVhZGVyIGdvaW5nIHRvIHJlc2V0IG93biBhY3RpdmUgc25hcHNob3QgYXMgd2VsbCAtIHdlIG5l ZWQgdG8KKwkgKiB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNo b3QuCisJICovCisJd2FpdF9mb3Jfc25hcHNob3RfYXR0YWNoID0gaXNjb25jdXJyZW50ICYmIGxl YWRlcnBhcnRpY2lwYXRlczsKKworCWlmICh3YWl0X2Zvcl9zbmFwc2hvdF9hdHRhY2gpCisJCVdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVh cCBzY2FuIG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xl YWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAt MjU0Miw3ICsyNTQ5LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1 aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVk cyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UK IAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZv cmV2ZXIuCiAJICovCi0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlm ICghd2FpdF9mb3Jfc25hcHNob3RfYXR0YWNoKQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0yNTY1LDkgKzI1NzMsNiBAQCBfYnJpbl9lbmRfcGFy YWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZv ciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQog CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZi cmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1W Q0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChicmlu bGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFw c2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0 UGFyYWxsZWxNb2RlKCk7CiB9CkBAIC0yNzY3LDE0ICsyNzcyLDE0IEBAIF9icmluX3BhcmFsbGVs X21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAogLyoKICAqIFJldHVybnMgc2l6ZSBvZiBz aGFyZWQgbWVtb3J5IHJlcXVpcmVkIHRvIHN0b3JlIHN0YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBi cmluIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3 aWxsIHVzZS4KKyAqIGJyaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fYnJpbl9w YXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3Qp CitfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBj LmYuIHNobV90b2NfYWxsb2NhdGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAly ZXR1cm4gYWRkX3NpemUoQlVGRkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFyZWQpKSwKLQkJCQkJdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIHNuYXBzaG90KSk7CisJCQkJCXRhYmxlX3Bh cmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBJbnZhbGlkU25hcHNob3QpKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDk4MGM1MWUzMmI5Li4y ZTUxNjM2MDljMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBA IC0xMjMxLDE0ICsxMjMxLDEzIEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmll dmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1 c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25j dXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkND IHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhh dC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxl IHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBldmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBu b24tdW5pcXVlIGluZGV4KS4KIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiAKIAkvKgogCSAqIEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBz aG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KLQkgKiBJbiBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29t ZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJlcXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2Fu IHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAly ZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5k ZXhJbmZvLT5paV9VbmlxdWUgJiYKQEAgLTEzMDAsOCArMTI5OSwxMSBAQCBoZWFwYW1faW5kZXhf YnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290 c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hv dCA9IHNjYW4tPnJzX3NuYXBzaG90OwotCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwot CQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90 cykKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJCX0KIAl9CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2Mp IHNjYW47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDVjNDU4MWFmYjFhLi4y YWNiZjEyMTc0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTE0MTEsNiAr MTQxMSw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7 CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKIAlib29sCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSB0cnVlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90OworCWJvb2wJCXdhaXRf Zm9yX3NuYXBzaG90X2F0dGFjaDsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVf TEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MjgsMTIgKzE0MzAsMjEgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJl cXVlc3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVu aXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzCisJ ICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2lu Y2UgdGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jv c3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkCisJICogYSBzdGFi bGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLgor ICAgICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFidHNwb29sLT5pc3Vu aXF1ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4g IEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNl IHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVh bCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcyku ICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFw c2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJ ICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVz ZXQgcGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24tdW5pcXVlIGluZGV4LgogCSAqLwog CWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NDEsNiArMTQ1MiwxMSBAQCBfYnRfYmVnaW5f cGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50 IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCXNu YXBzaG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC0xNTAxLDcgKzE1MTcsNyBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQog CQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkK KwkJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFw c2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxs ZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xNTI4LDcgKzE1NDQs OCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmJyb2tlbmhvdGNoYWluID0gZmFs c2U7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCi0JCQkJCQkJCSAg c25hcHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90 KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Ig d2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjA0LDYgKzE2MjEsMTYgQEAgX2J0X2JlZ2lu X3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGlu dCByZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xlYXIgYnVp bGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJ0bGVhZGVyID0gYnRsZWFkZXI7 CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdv aW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBJbiBjYXNlIHdoZW4gbGVhZGVyIGdv aW5nIHRvIHJlc2V0IG93biBhY3RpdmUgc25hcHNob3QgYXMgd2VsbCAtIHdlIG5lZWQgdG8KKwkg KiB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICov CisJd2FpdF9mb3Jfc25hcHNob3RfYXR0YWNoID0gcmVzZXRfc25hcHNob3QgJiYgbGVhZGVycGFy dGljaXBhdGVzOworCisJaWYgKHdhaXRfZm9yX3NuYXBzaG90X2F0dGFjaCkKKwkJV2FpdEZvclBh cmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4g b3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0X2xlYWRlcl9wYXJ0 aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjEyLDcgKzE2MzksOCBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hl ZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVy ZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFy YWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCF3YWl0X2Zvcl9zbmFwc2hvdF9hdHRh Y2gpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYg KG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KQEAg LTE2MzYsNyArMTY2NCw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRMZWFkZXIgKmJ0bGVhZGVyKQog CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnRsZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmYnRs ZWFkZXItPndhbHVzYWdlW2ldKTsKIAogCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBz bmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVy LT5zbmFwc2hvdCkpCisJaWYgKGJ0bGVhZGVyLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3Qg JiYgSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNuYXBzaG90KSkKIAkJVW5yZWdpc3RlclNuYXBz aG90KGJ0bGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChidGxlYWRl ci0+cGN4dCk7CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMKaW5kZXggYmQ4NzE1YjY3OTcuLmNhYzdhOWVhODhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMKQEAgLTEzMSwxMCArMTMxLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0 ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6ID0gMDsKIAot CWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9IEludmFsaWRT bmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRkX3NpemUoc3os IEVzdGltYXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNzZXJ0KHNuYXBz aG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8 IHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXplKHN6LCByZWwt PnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAtMTQzLDIxICsx NDMsMzYgQEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNo b3Qgc25hcHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0 aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAgU25hcHNob3Qg c25hcHNob3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNldF9zbmFwc2hv dCkKIHsKIAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nh bl9pbml0aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYgPSBz bmFwc2hvdF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCS8qCisJICog SW5pdGlhbGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFsIHNjYW5zIHdp dGggYSByZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBzbmFwc2hvdCBp bmZvLiBGb3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCByZXNldHMsIG1h cmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsK KwkJQXNzZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2FuLT5waHNfc25h cHNob3RfYW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSB0cnVlOwor CQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplIik7CisJfQor CWVsc2UgaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBz aG90KHNuYXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsK IAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9z bmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNob3QgPT0gU25h cHNob3RBbnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4tPnBoc19zbmFw c2hvdF9hbnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJ fQogfQogCkBAIC0xNzAsNyArMTg1LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxh dGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJl bEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0 b3IpKTsKIAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkgKiBGb3Igc2Nh bnMgdGhhdAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4g YWNjb3JkaW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMgdGhlIGluaXRp YWwgc3RhdGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJeworCQlB c3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9U OworCQkvKiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLworCQlzbmFwc2hv dCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBz aG90X2FueSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQg Ki8KIAkJc25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+ cGhzX3NuYXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRl eCAwYTFlMDg5ZWMxZC4uZDQ5YzZlZTQxMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFy YWxsZWwuYwpAQCAtNzYsNiArNzYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVS X1NUQVRFCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9VTkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEUpCiAj ZGVmaW5lIFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZG RkZGRkZGMDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVECQlVSU5U NjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFyYWxsZWwgc3Rh dGUuICovCiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMwMSw2ICszMDIs MTAgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJ CQkJCQlwY3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBtdWxfc2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJCS8qIEVzdGlt YXRlIGhvdyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8uICovCiAJCXNo bV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBjeHQtPmxpYnJh cnlfbmFtZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpA QCAtMzcyLDYgKzM3Nyw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQg KnBjeHQpCiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0 ZWRlbnVtc3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOworCQlib29sCSAg ICpzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAKIAkJLyogU2Vy aWFsaXplIHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00ODcsNiArNDkz LDE5IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCXN0 cmNweShlbnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0cmNweShlbnRy eXBvaW50c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUpOwogCQlzaG1f dG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50 c3RhdGUpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgdG8g cGFzcyBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNob3QuCisJCSAq LworCQlzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxvY2F0ZShwY3h0 LT50b2MsIG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJZm9yIChp ID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndvcmtlcltpXS5z bmFwc2hvdF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAqIHNpemVvZihi b29sKTsKKwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBmYWxzZTsKKwkJ fQorCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNU T1JFRCwgc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0ZSBud29ya2Vy c190b19sYXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4gKi8KQEAgLTU0 Miw2ICs1NjEsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogCQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHBj eHQtPnNlZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVzdG9yZWQgZmxh ZyB0byBmYWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJYm9vbAkgICAq c25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90X3Jlc3RvcmVk X3NwYWNlID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQ U0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7 ICsraSkKKwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJfQogfQogCiAv KgpAQCAtNjU3LDYgKzY4NywxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250 ZXh0ICpwY3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRoZWlyIGVy cm9yIHF1ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZhaWxzIHRv IGRvIHRoaXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIgZWFjaCBw YXJhbGxlbCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNuYXBzaG90 LiBUaGlzIGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cyB0byBl bnN1cmUgYWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90IGJlZm9y ZSBwcm9jZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNzdW1lIHRo YXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUKICAqIG51 bWJlciBvZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhhdmUgaW5p dGlhbGl6ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBXaGV0aGVy IG9yIG5vdCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02ODYsNyArNzIwLDcgQEAg TGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNhbGwgdGhp cyBmdW5jdGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQogewogCWlu dAkJCWk7CiAKQEAgLTczMCw5ICs3NjQsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVldWUocGN4 dC0+d29ya2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVyKG1xKSAh PSBOVUxMKQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hl ZC4gKi8KLQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7Ci0JCQkJ CSsrcGN4dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2FpdF9mb3Jfc25h cHNob3QgfHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQorCQkJCQl7CisJ CQkJCQkvKiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLworCQkJCQkJcGN4 dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3BjeHQtPm5rbm93 bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxzZSBpZiAoc3Rh dHVzID09IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTEsNiArMTMyOCw3IEBAIFBhcmFsbGVsV29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQYXJhbGxlbFN0 YXRlICpmcHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkgICAqc25hcHNo b3RfcmVzdG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7 CiAJY2hhcgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ4OSw2ICsxNTI3LDEwIEBAIFBhcmFsbGVs V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRl cl9wZ3Byb2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJLyogU25hcHNo b3QgaXMgcmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJvdXQgaXQuICov CisJc25hcHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl W1BhcmFsbGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3ZlIGNoYW5nZWQg d2hpY2ggdHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZhbGlkYXRlCiAJ ICogc3lzdGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBlMGFkYTVjZTE1OS4uZjQ0NjRm NjQ3ODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzAsNyArMTUzMCw3IEBAIGluZGV4X2NvbmN1 cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFs b2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOwotCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZv LT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlB c3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBp bmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDdjYjEyYTExYzJkLi4yOTA3YjM2Njc5 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0yNjIsNyArMjYyLDggQEAgRXhl Y1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90 b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBw c2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUt PmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50 b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L3RpbWUvc25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXgg MjE4OWJmMGQ5YWUuLmIzY2M3YTJjMTUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90 aW1lL3NuYXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAt Mjg3LDE0ICsyODcsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBTbmFwc2hvdAog R2V0TGF0ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJlIGFibGUgdG8g cmVsYXggdGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29yawotCSAqIG5l ZWRzIGl0LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2coRVJST1IsCi0J CQkgImNhbm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFyYWxsZWwgb3Bl cmF0aW9uIik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMgcmVxdWlyaW5n IHN1cHBvcnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9naWNhbCBkZWNv ZGluZywgYnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVkLgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cGFyYWxsZWwuaAppbmRleCA2OWZmZTU0OThmOS4uOTY0YTdlOTQ1YmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJh bGxlbC5oCkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsV29ya2VySW5m bwogewogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1fbXFfaGFuZGxl ICplcnJvcl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBhcmFsbGVsV29y a2VySW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02NSw3ICs2Niw3 IEBAIGV4dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBj eHQpOwogZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0 ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2VycyhQYXJhbGxl bENvbnRleHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJuIHZvaWQgTGF1 bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRlcm4gdm9pZCBX YWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKK2V4 dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQg KnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFs bGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBE ZXN0cm95UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gYm9v bCBQYXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBlMTg4 NGFjZjQ5My4uYTk2MDMwODRhZWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODgsNiArODgsNyBA QCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVsRmlsZUxvY2F0 b3IgcGhzX2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8KIAlib29sCQlw aHNfc3luY3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dpYz8gKi8KIAli b29sCQlwaHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19zbmFwc2hvdF9k YXRhPyAqLworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JFU0VUX1NOQVBT SE9UPyAqLwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNuYXBzaG90ICov CiB9IFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRh YmxlU2NhbkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApp bmRleCBmNGM3ZDJhOTJiZi4uOWVlNWVhMTVmZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTE4 NCw3ICsxMTg0LDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJl bGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9pZCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICBQYXJhbGxl bFRhYmxlU2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJ CQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wgcmVzZXRfc25h cHNob3QpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5gIG5lZWRzIHRv IGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xODAyLDkgKzE4MDMsOSBAQCB0YWJsZV9z Y2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQg T2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0s IGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIu CiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29u Y3VycmVudCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNj YW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhlIGZseSB0byBh bGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNv bmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKKyAqIGZv ciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkg dG8gYWxsb3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUg ZG91YmxlCiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA1ZGI1NDUzMGYxNy4uNTk1YTQwMDBj ZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3LDYgKzE3LDEy IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0 X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNl Jyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFC TEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQg SU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIwMCkgcyhpKTsKQEAgLTcyLDI0ICs3OCwzNSBAQCBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVj dGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhl IHNhbWUgaW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNF VCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBz aW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VM RUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZm ZWN0aXZlJyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJs ZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMg TEFTVCk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKQEAgLTk3LDcgKzExNCw5IEBAIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5P VElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3Fs IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNo b3RzLnNxbAppbmRleCA1MDcyNTM1YjM1NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25h cHNob3RzLnNxbApAQCAtMyw3ICszLDcgQEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAn bm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nh bl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7 CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0 X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGlu IHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9Mik7CiAKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBw YXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0 ICs4Niw0IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAog RFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50czsKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000a19089062a03c8a5 Content-Type: application/octet-stream; name="v8-0001-this-is-https-commitfest.postgresql.org-50-5160-m.patch" Content-Disposition: attachment; filename="v8-0001-this-is-https-commitfest.postgresql.org-50-5160-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52haug60 RnJvbSAxMmVmYjgyMjA2Y2VlNzg0M2JmMTdjY2FiYWNjOTE0MzVkMGJhYzVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxMTozNjoyOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjggMS83 XSB0aGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy81MC81MTYwLwogbWVy Z2VkIGluIHNpbmdsZSBjb21taXQuIGl0IGlzIHJlcXVpcmVkIGZvciBzdGFiaWxpdHkgb2Ygc3Ry ZXNzIHRlc3RzLgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAg ICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAg ICAgfCAxMTkgKysrKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAg ICAgICAgIHwgMTM1ICsrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5j ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv TWFrZWZpbGUgICAgfCAgIDcgKy0KIC4uLi9leHBlY3RlZC9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0Lm91dCAgICB8ICA4MCArKysrKysKIC4uLi9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3By ZWRpY2F0ZS5vdXQgICB8ICA4MCArKysrKysKIC4uLi9leHBlY3RlZC9yZWluZGV4X2NvbmN1cnJl bnRseV91cHNlcnQub3V0ICB8IDIzOCArKysrKysrKysrKysrKysrKysKIC4uLm5kZXhfY29uY3Vy cmVudGx5X3Vwc2VydF9vbl9jb25zdHJhaW50Lm91dCB8IDIzOCArKysrKysrKysrKysrKysrKysK IC4uLmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3BhcnRpdGlvbmVkLm91dCB8IDIzOCArKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5i dWlsZCB8ICAxMSArCiAuLi4vc3BlY3MvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5zcGVjICAg ICAgfCAgNjggKysrKysKIC4uLi9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3ByZWRpY2F0ZS5z cGVjICB8ICA3MCArKysrKysKIC4uLi9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQu c3BlYyAgICB8ICA4NiArKysrKysrCiAuLi5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9jb25z dHJhaW50LnNwZWMgfCAgODYgKysrKysrKwogLi4uaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9w YXJ0aXRpb25lZC5zcGVjIHwgIDg4ICsrKysrKysKIDE4IGZpbGVzIGNoYW5nZWQsIDE1MDUgaW5z ZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2luZGV4X2NvbmN1cnJlbnRseV91cHNl cnQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfcHJlZGljYXRlLm91dAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVu dGx5X3Vwc2VydF9vbl9jb25zdHJhaW50Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmN1cnJlbnRseV91 cHNlcnRfcGFydGl0aW9uZWQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnQuc3BlYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVj cy9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3ByZWRpY2F0ZS5zcGVjCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29u Y3VycmVudGx5X3Vwc2VydC5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9j b25zdHJhaW50LnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3BlY3MvcmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X3BhcnRpdGlvbmVk LnNwZWMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDQwNDljZTFhMTBmLi45MzI4NTRk NmM2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE3NjYsNiArMTc2Niw3IEBAIERl ZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2Fz IHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQogCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1p Z2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgogCSAqLworCUlOSkVDVElPTl9QT0lOVCgiZGVmaW5l X2luZGV4X2JlZm9yZV9zZXRfdmFsaWQiKTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMpOwogCVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwpA QCAtNDIwNiw3ICs0MjA3LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiB0aGUgc2Ft ZSB0aW1lIHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IGdldCBjb25zdHJhaW50IHZpb2xhdGlvbnMgZnJv bSB0aGUKIAkgKiBpbmRleGVzIHdpdGggdGhlIGNvcnJlY3QgbmFtZXMuCiAJICovCi0KKwlJTkpF Q1RJT05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwIik7 CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAogCS8qCkBAIC00Mjg1LDYgKzQyODYsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAqIGluZGV4X2Ryb3AoKSBmb3IgbW9yZSBkZXRh aWxzLgogCSAqLwogCisJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc2V0X2RlYWQiKTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzQpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2ssIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCBmMGE1 Zjg4NzlhOS4uODIwNzQ5MjM5Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBA IC0xMTcsNiArMTE3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNp bmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgor I2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVu dCB0byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwogdHlwZWRlZiBl bnVtCkBAIC05MzYsNiArOTM3LDggQEAgcmV0cnk6CiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxl ID0gc2F2ZV9zY2FudHVwbGU7CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KGV4aXN0 aW5nX3Nsb3QpOworCWlmICghY29uZmxpY3QpCisJCUlOSkVDVElPTl9QT0lOVCgiY2hlY2tfZXhj bHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Iik7CiAKIAlyZXR1cm4gIWNv bmZsaWN0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDc2NTE4ODYy MjkxLi5hZWVlZTQxZDVmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAt NDgzLDYgKzQ4Myw0OCBAQCBFeGVjRmluZFBhcnRpdGlvbihNb2RpZnlUYWJsZVN0YXRlICptdHN0 YXRlLAogCXJldHVybiBycmk7CiB9CiAKKy8qCisgKiBJc0luZGV4Q29tcGF0aWJsZUFzQXJiaXRl cgorICogCQlDaGVja3MgaWYgdGhlIGluZGV4ZXMgYXJlIGlkZW50aWNhbCBpbiB0ZXJtcyBvZiBi ZWluZyB1c2VkCisgKiAJCWFzIGFyYml0ZXJzIGZvciB0aGUgSU5TRVJUIE9OIENPTkZMSUNUIG9w ZXJhdGlvbiBieSBjb21wYXJpbmcKKyAqIAkJdGhlbSB0byB0aGUgcHJvdmlkZWQgYXJiaXRlciBp bmRleC4KKyAqCisgKiBSZXR1cm5zIHRoZSB0cnVlIGlmIGluZGV4ZXMgYXJlIGNvbXBhdGlibGUu CisgKi8KK3N0YXRpYyBib29sCitJc0luZGV4Q29tcGF0aWJsZUFzQXJiaXRlcihSZWxhdGlvbglh cmJpdGVySW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5mbyAgKmFyYml0ZXJJbmRleElu Zm8sCisJCQkJCQkgICBSZWxhdGlvbglpbmRleFJlbGF0aW9uLAorCQkJCQkJICAgSW5kZXhJbmZv ICAqaW5kZXhJbmZvKQoreworCWludCBpOworCisJaWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX1Vu aXF1ZSAhPSBpbmRleEluZm8tPmlpX1VuaXF1ZSkKKwkJcmV0dXJuIGZhbHNlOworCS8qIGl0IGlz IG5vdCBzdXBwb3J0ZWQgZm9yIGNhc2VzIG9mIGV4Y2x1c2lvbiBjb25zdHJhaW50cy4gKi8KKwlp ZiAoYXJiaXRlckluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwgfHwgaW5kZXhJbmZv LT5paV9FeGNsdXNpb25PcHMgIT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChhcmJpdGVy SW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZG5rZXlhdHRzICE9IGluZGV4UmVsYXRpb24tPnJk X2luZGV4LT5pbmRua2V5YXR0cykKKwkJcmV0dXJuIGZhbHNlOworCisJZm9yIChpID0gMDsgaSA8 IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0czsgaSsrKQorCXsKKwkJaW50CQkJ YXJiaXRlckF0dG9ObyA9IGFyYml0ZXJJbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5ka2V5LnZh bHVlc1tpXTsKKwkJaW50CQkJYXR0b05vID0gaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtl eS52YWx1ZXNbaV07CisJCWlmIChhcmJpdGVyQXR0b05vICE9IGF0dG9ObykKKwkJCXJldHVybiBm YWxzZTsKKwl9CisKKwlpZiAobGlzdF9kaWZmZXJlbmNlKFJlbGF0aW9uR2V0SW5kZXhFeHByZXNz aW9ucyhhcmJpdGVySW5kZXhSZWxhdGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4RXhwcmVz c2lvbnMoaW5kZXhSZWxhdGlvbikpICE9IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGxp c3RfZGlmZmVyZW5jZShSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGFyYml0ZXJJbmRleFJlbGF0 aW9uKSwKKwkJCQkJCVJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoaW5kZXhSZWxhdGlvbikpICE9 IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCXJldHVybiB0cnVlOworfQorCiAvKgogICogRXhlY0lu aXRQYXJ0aXRpb25JbmZvCiAgKgkJTG9jayB0aGUgcGFydGl0aW9uIGFuZCBpbml0aWFsaXplIFJl c3VsdFJlbEluZm8uICBBbHNvIHNldHVwIG90aGVyCkBAIC02OTMsNiArNzM1LDggQEAgRXhlY0lu aXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRl LAogCQlpZiAocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyAh PSBOSUwpCiAJCXsKIAkJCUxpc3QJICAgKmNoaWxkSWR4czsKKwkJCUxpc3QgCSAgICpub25BbmNl c3RvcklkeHMgPSBOSUw7CisJCQlpbnQJCSAgIGksIGosIGFkZGl0aW9uYWxfYXJiaXRlcnMgPSAw OwogCiAJCQljaGlsZElkeHMgPSBSZWxhdGlvbkdldEluZGV4TGlzdChsZWFmX3BhcnRfcnJpLT5y aV9SZWxhdGlvbkRlc2MpOwogCkBAIC03MDMsMjMgKzc0Nyw3NCBAQCBFeGVjSW5pdFBhcnRpdGlv bkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCQkJTGlz dENlbGwgICAqbGMyOwogCiAJCQkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMo Y2hpbGRJZHgpOwotCQkJCWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25m bGljdEFyYml0ZXJJbmRleGVzKQorCQkJCWlmIChhbmNlc3RvcnMpCiAJCQkJewotCQkJCQlpZiAo bGlzdF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0X29pZChsYzIpKSkKLQkJCQkJCWFyYml0 ZXJJbmRleGVzID0gbGFwcGVuZF9vaWQoYXJiaXRlckluZGV4ZXMsIGNoaWxkSWR4KTsKKwkJCQkJ Zm9yZWFjaChsYzIsIHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4 ZXMpCisJCQkJCXsKKwkJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoYW5jZXN0b3JzLCBsZmlyc3Rf b2lkKGxjMikpKQorCQkJCQkJCWFyYml0ZXJJbmRleGVzID0gbGFwcGVuZF9vaWQoYXJiaXRlcklu ZGV4ZXMsIGNoaWxkSWR4KTsKKwkJCQkJfQogCQkJCX0KKwkJCQllbHNlIC8qIE5vIGFuY2VzdG9y IHdhcyBmb3VuZCBmb3IgdGhhdCBpbmRleC4gU2F2ZSBpdCBmb3IgcmVjaGVja2luZyBsYXRlci4g Ki8KKwkJCQkJbm9uQW5jZXN0b3JJZHhzID0gbGFwcGVuZF9vaWQobm9uQW5jZXN0b3JJZHhzLCBj aGlsZElkeCk7CiAJCQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CiAJCQl9CisKKwkJCS8qCisJCQkg KiBJZiBhbnkgbm9uLWFuY2VzdG9yIGluZGV4ZXMgYXJlIGZvdW5kLCB3ZSBuZWVkIHRvIGNvbXBh cmUgdGhlbSB3aXRoIG90aGVyCisJCQkgKiBpbmRleGVzIG9mIHRoZSByZWxhdGlvbiB0aGF0IHdp bGwgYmUgdXNlZCBhcyBhcmJpdGVycy4gVGhpcyBpcyBuZWNlc3NhcnkKKwkJCSAqIHdoZW4gYSBw YXJ0aXRpb25lZCBpbmRleCBpcyBwcm9jZXNzZWQgYnkgUkVJTkRFWCBDT05DVVJSRU5UTFkuIEJv dGggaW5kZXhlcworCQkJICogbXVzdCBiZSBjb25zaWRlcmVkIGFzIGFyYml0ZXJzIHRvIGVuc3Vy ZSB0aGF0IGFsbCBjb25jdXJyZW50IHRyYW5zYWN0aW9ucworCQkJICogdXNlIHRoZSBzYW1lIHNl dCBvZiBhcmJpdGVycy4KKwkJCSAqLworCQkJaWYgKG5vbkFuY2VzdG9ySWR4cykKKwkJCXsKKwkJ CQlmb3IgKGkgPSAwOyBpIDwgbGVhZl9wYXJ0X3JyaS0+cmlfTnVtSW5kaWNlczsgaSsrKQorCQkJ CXsKKwkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChub25BbmNlc3RvcklkeHMsIGxlYWZfcGFydF9y cmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tpXS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJ CQl7CisJCQkJCQlSZWxhdGlvbiBub25BbmNlc3RvckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRf cnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV07CisJCQkJCQlJbmRleEluZm8gKm5vbkFuY2Vz dG9ySW5kZXhJbmZvID0gbGVhZl9wYXJ0X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkluZm9baV07CisJ CQkJCQlBc3NlcnQoIWxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5kZXhlcywgbm9uQW5jZXN0b3JJ bmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCkpOworCisJCQkJCQkvKiBJdCBpcyB0 b28gZWFybHkgdG8gdXMgbm9uLXJlYWR5IGluZGV4ZXMgYXMgYXJiaXRlcnMgKi8KKwkJCQkJCWlm ICghbm9uQW5jZXN0b3JJbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0cykKKwkJCQkJCQljb250 aW51ZTsKKworCQkJCQkJZm9yIChqID0gMDsgaiA8IGxlYWZfcGFydF9ycmktPnJpX051bUluZGlj ZXM7IGorKykKKwkJCQkJCXsKKwkJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFyYml0ZXJJbmRl eGVzLAorCQkJCQkJCQkJCQkJbGVhZl9wYXJ0X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2pd LT5yZF9pbmRleC0+aW5kZXhyZWxpZCkpCisJCQkJCQkJeworCQkJCQkJCQlSZWxhdGlvbiBhcmJp dGVySW5kZXhSZWxhdGlvbiA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tq XTsKKwkJCQkJCQkJSW5kZXhJbmZvICphcmJpdGVySW5kZXhJbmZvID0gbGVhZl9wYXJ0X3JyaS0+ cmlfSW5kZXhSZWxhdGlvbkluZm9bal07CisKKwkJCQkJCQkJLyogSWYgbm9uLWFuY2VzdG9yIGlu ZGV4IGFyZSBjb21wYXRpYmxlIHRvIGFyYml0ZXIgLSB1c2UgaXQgYXMgYXJiaXRlciB0b28uICov CisJCQkJCQkJCWlmIChJc0luZGV4Q29tcGF0aWJsZUFzQXJiaXRlcihhcmJpdGVySW5kZXhSZWxh dGlvbiwgYXJiaXRlckluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgIG5vbkFuY2VzdG9ySW5k ZXhSZWxhdGlvbiwgbm9uQW5jZXN0b3JJbmRleEluZm8pKQorCQkJCQkJCQl7CisJCQkJCQkJCQlh cmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLAorCQkJCQkJCQkJCQkJ CQkJCSBub25BbmNlc3RvckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRleHJlbGlkKTsKKwkJ CQkJCQkJCWFkZGl0aW9uYWxfYXJiaXRlcnMrKzsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJ CX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCWxpc3RfZnJlZShub25BbmNlc3RvcklkeHMpOwor CisJCQkvKgorCQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5n dGgsIHNvbWV0aGluZyBpcyB3cm9uZy4KKwkJCSAqIChUaGlzIHNob3VsZG4ndCBoYXBwZW4sIHNp bmNlIGFyYml0ZXIgaW5kZXggc2VsZWN0aW9uIHNob3VsZCBub3QKKwkJCSAqIHBpY2sgdXAgYSBu b24tcmVhZHkgaW5kZXguKQorCQkJICoKKwkJCSAqIEJ1dCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGFu IGFkZGl0aW9uYWwgYXJiaXRlciBpbmRleGVzIGFsc28uCisJCQkgKi8KKwkJCWlmIChsaXN0X2xl bmd0aChyb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzKSAhPQor CQkJCWxpc3RfbGVuZ3RoKGFyYml0ZXJJbmRleGVzKSAtIGFkZGl0aW9uYWxfYXJiaXRlcnMpCisJ CQkJZWxvZyhFUlJPUiwgImludmFsaWQgYXJiaXRlciBpbmRleCBsaXN0Iik7CiAJCX0KLQotCQkv KgotCQkgKiBJZiB0aGUgcmVzdWx0aW5nIGxpc3RzIGFyZSBvZiBpbmVxdWFsIGxlbmd0aCwgc29t ZXRoaW5nIGlzIHdyb25nLgotCQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSBhcmJp dGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQgbm90Ci0JCSAqIHBpY2sgdXAgYW4gaW52YWxpZCBp bmRleC4pCi0JCSAqLwotCQlpZiAobGlzdF9sZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29u Q29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0KLQkJCWxpc3RfbGVuZ3RoKGFyYml0ZXJJbmRleGVz KSkKLQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5kZXggbGlzdCIpOwogCQlsZWFm X3BhcnRfcnJpLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSBhcmJpdGVySW5kZXhlczsK IAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAxMTYxNTIw Zjc2Yi4uMjNjZjRjNmI1NDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiCiAKIAogdHlwZWRlZiBzdHJ1Y3QgTVRUYXJnZXRSZWxMb29rdXAK QEAgLTEwODcsNiArMTA4OCw3IEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250 ZXh0LAogCQkJCQlyZXR1cm4gTlVMTDsKIAkJCQl9CiAJCQl9CisJCQlJTkpFQ1RJT05fUE9JTlQo ImV4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUiKTsKIAogCQkJLyoKIAkJCSAq IEJlZm9yZSB3ZSBzdGFydCBpbnNlcnRpb24gcHJvcGVyLCBhY3F1aXJlIG91ciAic3BlY3VsYXRp dmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCAxNTMzOTBmMmRjOS4uNTZi NThkMWVkNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTcxNCwxMiAr NzE0LDE0IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAlMaXN0 CSAgICppbmRleExpc3Q7CiAJTGlzdENlbGwgICAqbDsKIAotCS8qIE5vcm1hbGl6ZWQgaW5mZXJl bmNlIGF0dHJpYnV0ZXMgYW5kIGluZmVyZW5jZSBleHByZXNzaW9uczogKi8KLQlCaXRtYXBzZXQg ICppbmZlckF0dHJzID0gTlVMTDsKLQlMaXN0CSAgICppbmZlckVsZW1zID0gTklMOworCS8qIE5v cm1hbGl6ZWQgcmVxdWlyZWQgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnM6ICovCisJQml0bWFw c2V0ICAqcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBOVUxMOworCUxpc3QJICAgKnJlcXVpcmVkQXJi aXRlckVsZW1zID0gTklMOworCUxpc3QJICAgKnJlcXVpcmVkSW5kZXhQcmVkRXhwcnMgPSAoTGlz dCAqKSBvbmNvbmZsaWN0LT5hcmJpdGVyV2hlcmU7CiAKIAkvKiBSZXN1bHRzICovCiAJTGlzdAkg ICAqcmVzdWx0cyA9IE5JTDsKKwlib29sCSAgIGZvdW5kVmFsaWQgPSBmYWxzZTsKIAogCS8qCiAJ ICogUXVpY2tseSByZXR1cm4gTklMIGZvciBPTiBDT05GTElDVCBETyBOT1RISU5HIHdpdGhvdXQg YW4gaW5mZXJlbmNlCkBAIC03NTQsOCArNzU2LDggQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBs YW5uZXJJbmZvICpyb290KQogCiAJCWlmICghSXNBKGVsZW0tPmV4cHIsIFZhcikpCiAJCXsKLQkJ CS8qIElmIG5vdCBhIHBsYWluIFZhciwganVzdCBzaG92ZSBpdCBpbiBpbmZlckVsZW1zIGZvciBu b3cgKi8KLQkJCWluZmVyRWxlbXMgPSBsYXBwZW5kKGluZmVyRWxlbXMsIGVsZW0tPmV4cHIpOwor CQkJLyogSWYgbm90IGEgcGxhaW4gVmFyLCBqdXN0IHNob3ZlIGl0IGluIHJlcXVpcmVkQXJiaXRl ckVsZW1zIGZvciBub3cgKi8KKwkJCXJlcXVpcmVkQXJiaXRlckVsZW1zID0gbGFwcGVuZChyZXF1 aXJlZEFyYml0ZXJFbGVtcywgZWxlbS0+ZXhwcik7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC03 NjcsMzAgKzc2OSw3NiBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3Qp CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVy cm1zZygid2hvbGUgcm93IHVuaXF1ZSBpbmRleCBpbmZlcmVuY2Ugc3BlY2lmaWNhdGlvbnMgYXJl IG5vdCBzdXBwb3J0ZWQiKSkpOwogCi0JCWluZmVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihpbmZl ckF0dHJzLAorCQlyZXF1aXJlZEFyYml0ZXJBdHRycyA9IGJtc19hZGRfbWVtYmVyKHJlcXVpcmVk QXJiaXRlckF0dHJzLAogCQkJCQkJCQkJYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmli dXRlTnVtYmVyKTsKIAl9CiAKKwlpbmRleExpc3QgPSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWxh dGlvbik7CisKIAkvKgogCSAqIExvb2t1cCBuYW1lZCBjb25zdHJhaW50J3MgaW5kZXguICBUaGlz IGlzIG5vdCBpbW1lZGlhdGVseSByZXR1cm5lZAotCSAqIGJlY2F1c2Ugc29tZSBhZGRpdGlvbmFs IHNhbml0eSBjaGVja3MgYXJlIHJlcXVpcmVkLgorCSAqIGJlY2F1c2Ugc29tZSBhZGRpdGlvbmFs IHNhbml0eSBjaGVja3MgYXJlIHJlcXVpcmVkLiBBZGRpdGlvbmFsbHksIHdlCisJICogbmVlZCB0 byBwcm9jZXNzIG90aGVyIGluZGV4ZXMgYXMgcG90ZW50aWFsIGFyYml0ZXJzIHRvIGFjY291bnQg Zm9yCisJICogY2FzZXMgd2hlcmUgUkVJTkRFWCBDT05DVVJSRU5UTFkgaXMgcHJvY2Vzc2luZyBh biBpbmRleCB1c2VkIGFzIGEKKwkgKiBuYW1lZCBjb25zdHJhaW50LgogCSAqLwogCWlmIChvbmNv bmZsaWN0LT5jb25zdHJhaW50ICE9IEludmFsaWRPaWQpCiAJewogCQlpbmRleE9pZEZyb21Db25z dHJhaW50ID0gZ2V0X2NvbnN0cmFpbnRfaW5kZXgob25jb25mbGljdC0+Y29uc3RyYWludCk7CiAK IAkJaWYgKGluZGV4T2lkRnJvbUNvbnN0cmFpbnQgPT0gSW52YWxpZE9pZCkKKwkJewogCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0J CQkJCSBlcnJtc2coImNvbnN0cmFpbnQgaW4gT04gQ09ORkxJQ1QgY2xhdXNlIGhhcyBubyBhc3Nv Y2lhdGVkIGluZGV4IikpKTsKKwkJCQkJZXJybXNnKCJjb25zdHJhaW50IGluIE9OIENPTkZMSUNU IGNsYXVzZSBoYXMgbm8gYXNzb2NpYXRlZCBpbmRleCIpKSk7CisJCX0KKworCQkvKgorCQkgKiBG aW5kIHRoZSBuYW1lZCBjb25zdHJhaW50IGluZGV4IHRvIGV4dHJhY3QgaXRzIGF0dHJpYnV0ZXMg YW5kIHByZWRpY2F0ZXMuCisJCSAqIFdlIG9wZW4gYWxsIGluZGV4ZXMgaW4gdGhlIGxvb3AgdG8g YXZvaWQgZGVhZGxvY2sgb2YgY2hhbmdlZCBvcmRlciBvZiBsb2Nrcy4KKwkJICogKi8KKwkJZm9y ZWFjaChsLCBpbmRleExpc3QpCisJCXsKKwkJCU9pZAkJCWluZGV4b2lkID0gbGZpcnN0X29pZChs KTsKKwkJCVJlbGF0aW9uCWlkeFJlbDsKKwkJCUZvcm1fcGdfaW5kZXggaWR4Rm9ybTsKKwkJCUF0 dHJOdW1iZXIJbmF0dDsKKworCQkJaWR4UmVsID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5y ZWxsb2NrbW9kZSk7CisJCQlpZHhGb3JtID0gaWR4UmVsLT5yZF9pbmRleDsKKworCQkJaWYgKGlk eEZvcm0tPmluZGlzcmVhZHkpCisJCQl7CisJCQkJaWYgKGluZGV4T2lkRnJvbUNvbnN0cmFpbnQg PT0gaWR4Rm9ybS0+aW5kZXhyZWxpZCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFByZXBhcmUg cmVxdWlyZW1lbnRzIGZvciBvdGhlciBpbmRleGVzIHRvIGJlIHVzZWQgYXMgYXJiaXRlciB0b2dl dGhlcgorCQkJCQkgKiB3aXRoIGluZGV4T2lkRnJvbUNvbnN0cmFpbnQuIEl0IGlzIHJlcXVpcmVk IHRvIGludm9sdmUgYm90aCBlcXVhbHMgaW5kZXhlcworCQkJCQkgKiBpbiBjYXNlIG9mIFJFSU5E RVggQ09OQ1VSUkVOVExZLgorCQkJCQkgKi8KKwkJCQkJZm9yIChuYXR0ID0gMDsgbmF0dCA8IGlk eEZvcm0tPmluZG5rZXlhdHRzOyBuYXR0KyspCisJCQkJCXsKKwkJCQkJCWludAkJCWF0dG5vID0g aWR4UmVsLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tuYXR0XTsKKworCQkJCQkJaWYgKGF0dG5v ICE9IDApCisJCQkJCQkJcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1 aXJlZEFyYml0ZXJBdHRycywKKwkJCQkJCQkJCQkJCQkJICBhdHRubyAtIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQl9CisJCQkJCXJlcXVpcmVkQXJiaXRlckVsZW1z ID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGlkeFJlbCk7CisJCQkJCXJlcXVpcmVkSW5k ZXhQcmVkRXhwcnMgPSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGlkeFJlbCk7CisJCQkJCS8q IFdlIGFyZSBkb25lLCBzbywgcXVpdGUgdGhlIGxvb3AuICovCisJCQkJCWluZGV4X2Nsb3NlKGlk eFJlbCwgTm9Mb2NrKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJaW5kZXhfY2xvc2Uo aWR4UmVsLCBOb0xvY2spOworCQl9CiAJfQogCiAJLyoKIAkgKiBVc2luZyB0aGF0IHJlcHJlc2Vu dGF0aW9uLCBpdGVyYXRlIHRocm91Z2ggdGhlIGxpc3Qgb2YgaW5kZXhlcyBvbiB0aGUKIAkgKiB0 YXJnZXQgcmVsYXRpb24gdG8gdHJ5IGFuZCBmaW5kIGEgbWF0Y2gKIAkgKi8KLQlpbmRleExpc3Qg PSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWxhdGlvbik7Ci0KIAlmb3JlYWNoKGwsIGluZGV4TGlz dCkKIAl7CiAJCU9pZAkJCWluZGV4b2lkID0gbGZpcnN0X29pZChsKTsKQEAgLTgxMyw3ICs4NjEs MTMgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQlpZHhSZWwg PSBpbmRleF9vcGVuKGluZGV4b2lkLCBydGUtPnJlbGxvY2ttb2RlKTsKIAkJaWR4Rm9ybSA9IGlk eFJlbC0+cmRfaW5kZXg7CiAKLQkJaWYgKCFpZHhGb3JtLT5pbmRpc3ZhbGlkKQorCQkvKgorCQkg KiBXZSBuZWVkIHRvIGNvbnNpZGVyIGJvdGggaW5kaXN2YWxpZCBhbmQgaW5kaXNyZWFkeSBpbmRl eGVzIGJlY2F1c2UKKwkJICogdGhlbSBtYXkgYmVjb21lIGluZGlzdmFsaWQgYmVmb3JlIGV4ZWN1 dGlvbiBwaGFzZS4gSXQgaXMgcmVxdWlyZWQKKwkJICogdG8ga2VlcCBzZXQgb2YgaW5kZXhlcyB1 c2VkIGFzIGFyYml0ZXIgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbAorCQkgKiBjb25jdXJyZW50IHRy YW5zYWN0aW9ucy4KKwkJICovCisJCWlmICghaWR4Rm9ybS0+aW5kaXNyZWFkeSkKIAkJCWdvdG8g bmV4dDsKIAogCQkvKgpAQCAtODMzLDI3ICs4ODcsMjMgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVz KFBsYW5uZXJJbmZvICpyb290KQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkJCSBlcnJtc2coIk9OIENPTkZMSUNUIERP IFVQREFURSBub3Qgc3VwcG9ydGVkIHdpdGggZXhjbHVzaW9uIGNvbnN0cmFpbnRzIikpKTsKLQot CQkJcmVzdWx0cyA9IGxhcHBlbmRfb2lkKHJlc3VsdHMsIGlkeEZvcm0tPmluZGV4cmVsaWQpOwot CQkJbGlzdF9mcmVlKGluZGV4TGlzdCk7Ci0JCQlpbmRleF9jbG9zZShpZHhSZWwsIE5vTG9jayk7 Ci0JCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKLQkJCXJldHVybiByZXN1bHRzOwor CQkJZ290byBmb3VuZDsKIAkJfQogCQllbHNlIGlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ICE9 IEludmFsaWRPaWQpCiAJCXsKLQkJCS8qIE5vIHBvaW50IGluIGZ1cnRoZXIgd29yayBmb3IgaW5k ZXggaW4gbmFtZWQgY29uc3RyYWludCBjYXNlICovCi0JCQlnb3RvIG5leHQ7CisJCQkvKiBJbiB0 aGUgY2FzZSBvZiAiT04gY29uc3RyYWludF9uYW1lIERPIFVQREFURSIgd2UgbmVlZCB0byBza2lw IG5vbi11bmlxdWUgY2FuZGlkYXRlcy4gKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5kaXN1bmlxdWUg JiYgb25jb25mbGljdC0+YWN0aW9uID09IE9OQ09ORkxJQ1RfVVBEQVRFKQorCQkJCWdvdG8gbmV4 dDsKKwkJfSAgZWxzZSB7CisJCQkvKgorCQkJICogT25seSBjb25zaWRlcmluZyBjb252ZW50aW9u YWwgaW5mZXJlbmNlIGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAorCQkJICogY29uc3RyYWludHMp LCBzbyBpbmRleCB1bmRlciBjb25zaWRlcmF0aW9uIGNhbiBiZSBpbW1lZGlhdGVseQorCQkJICog c2tpcHBlZCBpZiBpdCdzIG5vdCB1bmlxdWUKKwkJCSAqLworCQkJaWYgKCFpZHhGb3JtLT5pbmRp c3VuaXF1ZSkKKwkJCQlnb3RvIG5leHQ7CiAJCX0KIAotCQkvKgotCQkgKiBPbmx5IGNvbnNpZGVy aW5nIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UgYXQgdGhpcyBwb2ludCAobm90IG5hbWVkCi0JCSAq IGNvbnN0cmFpbnRzKSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRp YXRlbHkKLQkJICogc2tpcHBlZCBpZiBpdCdzIG5vdCB1bmlxdWUKLQkJICovCi0JCWlmICghaWR4 Rm9ybS0+aW5kaXN1bmlxdWUpCi0JCQlnb3RvIG5leHQ7Ci0KIAkJLyoKIAkJICogU28tY2FsbGVk IHVuaXF1ZSBjb25zdHJhaW50cyB3aXRoIFdJVEhPVVQgT1ZFUkxBUFMgYXJlIHJlYWxseQogCQkg KiBleGNsdXNpb24gY29uc3RyYWludHMsIHNvIHNraXAgdGhvc2UgdG9vLgpAQCAtODczLDcgKzky Myw3IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJfQogCiAJ CS8qIE5vbi1leHByZXNzaW9uIGF0dHJpYnV0ZXMgKGlmIGFueSkgbXVzdCBtYXRjaCAqLwotCQlp ZiAoIWJtc19lcXVhbChpbmRleGVkQXR0cnMsIGluZmVyQXR0cnMpKQorCQlpZiAoIWJtc19lcXVh bChpbmRleGVkQXR0cnMsIHJlcXVpcmVkQXJiaXRlckF0dHJzKSkKIAkJCWdvdG8gbmV4dDsKIAog CQkvKiBFeHByZXNzaW9uIGF0dHJpYnV0ZXMgKGlmIGFueSkgbXVzdCBtYXRjaCAqLwpAQCAtODgx LDYgKzkzMSwxMCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJ CWlmIChpZHhFeHBycyAmJiB2YXJubyAhPSAxKQogCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikg aWR4RXhwcnMsIDEsIHZhcm5vLCAwKTsKIAorCQkvKgorCQkgKiBJZiBhcmJpdGVyRWxlbXMgYXJl IHByZXNlbnQsIGNoZWNrIHRoZW0uIElmIG5hbWUgPmNvbnN0cmFpbnQgaXMKKwkJICogcHJlc2Vu dCBhcmJpdGVyRWxlbXMgPT0gTklMLgorCQkgKi8KIAkJZm9yZWFjaChlbCwgb25jb25mbGljdC0+ YXJiaXRlckVsZW1zKQogCQl7CiAJCQlJbmZlcmVuY2VFbGVtICplbGVtID0gKEluZmVyZW5jZUVs ZW0gKikgbGZpcnN0KGVsKTsKQEAgLTkxOCwyNyArOTcyLDM1IEBAIGluZmVyX2FyYml0ZXJfaW5k ZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJfQogCiAJCS8qCi0JCSAqIE5vdyB0aGF0IGFsbCBp bmZlcmVuY2UgZWxlbWVudHMgd2VyZSBtYXRjaGVkLCBlbnN1cmUgdGhhdCB0aGUKKwkJICogSW4g Y2FzZSBvZiB0aGUgY29udmVudGlvbmFsIGluZmVyZW5jZSBpbnZvbHZlZCBlbnN1cmUgdGhhdCB0 aGUKIAkJICogZXhwcmVzc2lvbiBlbGVtZW50cyBmcm9tIGluZmVyZW5jZSBjbGF1c2UgYXJlIG5v dCBtaXNzaW5nIGFueQogCQkgKiBjYXRhbG9nZWQgZXhwcmVzc2lvbnMuICBUaGlzIGRvZXMgdGhl IHJpZ2h0IHRoaW5nIHdoZW4gdW5pcXVlCiAJCSAqIGluZGV4ZXMgcmVkdW5kYW50bHkgcmVwZWF0 IHRoZSBzYW1lIGF0dHJpYnV0ZSwgb3IgaWYgYXR0cmlidXRlcwogCQkgKiByZWR1bmRhbnRseSBh cHBlYXIgbXVsdGlwbGUgdGltZXMgd2l0aGluIGFuIGluZmVyZW5jZSBjbGF1c2UuCisJCSAqCisJ CSAqIEluIHRoZSBjYXNlIG9mIG5hbWVkIGNvbnN0cmFpbnQgZW5zdXJlIGNhbmRpZGF0ZSBoYXMg ZXF1YWwgc2V0CisJCSAqIG9mIGV4cHJlc3Npb25zIGFzIHRoZSBuYW1lZCBjb25zdHJhaW50IGlu ZGV4LgogCQkgKi8KLQkJaWYgKGxpc3RfZGlmZmVyZW5jZShpZHhFeHBycywgaW5mZXJFbGVtcykg IT0gTklMKQorCQlpZiAobGlzdF9kaWZmZXJlbmNlKGlkeEV4cHJzLCByZXF1aXJlZEFyYml0ZXJF bGVtcykgIT0gTklMKQogCQkJZ290byBuZXh0OwogCi0JCS8qCi0JCSAqIElmIGl0J3MgYSBwYXJ0 aWFsIGluZGV4LCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1wbGllZCBieSB0aGUgT04KLQkJICog Q09ORkxJQ1QncyBXSEVSRSBjbGF1c2UuCi0JCSAqLwogCQlwcmVkRXhwcnMgPSBSZWxhdGlvbkdl dEluZGV4UHJlZGljYXRlKGlkeFJlbCk7CiAJCWlmIChwcmVkRXhwcnMgJiYgdmFybm8gIT0gMSkK IAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIHByZWRFeHBycywgMSwgdmFybm8sIDApOwogCi0J CWlmICghcHJlZGljYXRlX2ltcGxpZWRfYnkocHJlZEV4cHJzLCAoTGlzdCAqKSBvbmNvbmZsaWN0 LT5hcmJpdGVyV2hlcmUsIGZhbHNlKSkKKwkJLyoKKwkJICogSWYgaXQncyBhIHBhcnRpYWwgaW5k ZXggYW5kIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UsIGl0cyBwcmVkaWNhdGUgbXVzdCBiZSBpbXBs aWVkCisJCSAqIGJ5IHRoZSBPTiBDT05GTElDVCdzIFdIRVJFIGNsYXVzZS4KKwkJICovCisJCWlm IChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IEludmFsaWRPaWQgJiYgIXByZWRpY2F0ZV9pbXBs aWVkX2J5KHByZWRFeHBycywgcmVxdWlyZWRJbmRleFByZWRFeHBycywgZmFsc2UpKQorCQkJZ290 byBuZXh0OworCQkvKiBJZiBpdCdzIGEgcGFydGlhbCBpbmRleCBhbmQgbmFtZWQgY29uc3RyYWlu dCBwcmVkaWNhdGVzIG11c3QgYmUgZXF1YWwuICovCisJCWlmIChpbmRleE9pZEZyb21Db25zdHJh aW50ICE9IEludmFsaWRPaWQgJiYgbGlzdF9kaWZmZXJlbmNlKHByZWRFeHBycywgcmVxdWlyZWRJ bmRleFByZWRFeHBycykgIT0gTklMKQogCQkJZ290byBuZXh0OwogCitmb3VuZDoKIAkJcmVzdWx0 cyA9IGxhcHBlbmRfb2lkKHJlc3VsdHMsIGlkeEZvcm0tPmluZGV4cmVsaWQpOworCQlmb3VuZFZh bGlkIHw9IGlkeEZvcm0tPmluZGlzdmFsaWQ7CiBuZXh0OgogCQlpbmRleF9jbG9zZShpZHhSZWws IE5vTG9jayk7CiAJfQpAQCAtOTQ2LDcgKzEwMDgsOCBAQCBuZXh0OgogCWxpc3RfZnJlZShpbmRl eExpc3QpOwogCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOwogCi0JaWYgKHJlc3VsdHMg PT0gTklMKQorCS8qIEl0IGlzIHJlcXVpcmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGluZGlzdmFs aWQgaW5kZXggZHVyaW5nIHRoZSBwbGFubmluZy4gKi8KKwlpZiAocmVzdWx0cyA9PSBOSUwgfHwg IWZvdW5kVmFsaWQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX0NPTFVNTl9SRUZFUkVOQ0UpLAogCQkJCSBlcnJtc2coInRoZXJlIGlzIG5vIHVuaXF1ZSBv ciBleGNsdXNpb24gY29uc3RyYWludCBtYXRjaGluZyB0aGUgT04gQ09ORkxJQ1Qgc3BlY2lmaWNh dGlvbiIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IGExYTBjMmFkZWI2Li4yMTg5 YmYwZDlhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTY0LDYgKzY0LDcgQEAKICNp bmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2lu dC5oIgogCiAKIC8qCkBAIC0zOTIsNiArMzkzLDcgQEAgSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCh2b2lkKQogCQlwYWlyaW5naGVhcF9yZW1vdmUoJlJlZ2lzdGVyZWRTbmFwc2hvdHMsICZDYXRh bG9nU25hcHNob3QtPnBoX25vZGUpOwogCQlDYXRhbG9nU25hcHNob3QgPSBOVUxMOwogCQlTbmFw c2hvdFJlc2V0WG1pbigpOworCQlJTkpFQ1RJT05fUE9JTlQoImludmFsaWRhdGVfY2F0YWxvZ19z bmFwc2hvdF9lbmQiKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9NYWtlZmlsZQppbmRleCAwNzUzYTlkZjU4Yy4uZjhmODZlOGYzYjYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTEzLDcgKzEzLDEyIEBAIFBHRklM RURFU0MgPSAiaW5qZWN0aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRz IgogUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVpbmRleF9jb25jCiBSRUdSRVNTX09QVFMg PSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvcmVncmVzcwogCi1JU09MQVRJT04g PSBiYXNpYyBpbnBsYWNlCitJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIFwKKwkJCXJlaW5kZXhf Y29uY3VycmVudGx5X3Vwc2VydCBcCisJCQlpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0IFwKKwkJ CXJlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZCBcCisJCQlyZWluZGV4X2Nv bmN1cnJlbnRseV91cHNlcnRfb25fY29uc3RyYWludCBcCisJCQlpbmRleF9jb25jdXJyZW50bHlf dXBzZXJ0X3ByZWRpY2F0ZQogCiBUQVBfVEVTVFMgPSAxCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9pbmRl eF9jb25jdXJyZW50bHlfdXBzZXJ0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uN2YwNjU5ZTgzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5vdXQK QEAgLTAsMCArMSw4MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDQgc2Vzc2lvbnMKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMzX3N0YXJ0X2NyZWF0ZV9pbmRleCBzMV9zdGFydF91cHNlcnQg czRfd2FrZXVwX2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIHMyX3N0YXJ0X3Vwc2VydCBz NF93YWtldXBfczFfZnJvbV9pbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3QgczRfd2FrZXVwX3My IHM0X3dha2V1cF9zMQoraW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9p bnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFy dF9jcmVhdGVfaW5kZXg6IENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIHRibF9wa2V5 X2R1cGxpY2F0ZSBPTiB0ZXN0LnRibChpKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMV9zdGFydF91 cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3Qo aSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czRfd2FrZXVwX2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkOiAKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkJyk7CisJU0VM RUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxp ZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2Fr ZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygx IHJvdykKKworc3RlcCBzM19zdGFydF9jcmVhdGVfaW5kZXg6IDwuLi4gY29tcGxldGVkPgorc3Rl cCBzMl9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkg b24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxX2Zyb21faW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90 OiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2ludmFsaWRhdGVfY2F0YWxvZ19z bmFwc2hvdF9lbmQnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2ludmFsaWRh dGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3Bl Y3VsYXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0 X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25m bGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9u X29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNf ZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vw c2VydDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvZXhwZWN0ZWQvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wcmVkaWNhdGUu b3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2luZGV4X2Nv bmN1cnJlbnRseV91cHNlcnRfcHJlZGljYXRlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMjMwMGQ1MTY1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvaW5kZXhfY29uY3VycmVudGx5X3Vwc2Vy dF9wcmVkaWNhdGUub3V0CkBAIC0wLDAgKzEsODAgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCA0 IHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9jcmVhdGVfaW5kZXgg czFfc3RhcnRfdXBzZXJ0IHM0X3dha2V1cF9kZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCBz Ml9zdGFydF91cHNlcnQgczRfd2FrZXVwX3MxX2Zyb21faW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBz aG90IHM0X3dha2V1cF9zMiBzNF93YWtldXBfczEKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK KworaW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczNfc3RhcnRfY3JlYXRlX2luZGV4OiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSB0YmxfcGtleV9zcGVjaWFsX2R1cGxpY2F0ZSBPTiB0ZXN0LnRibChhYnMoaSkpIFdI RVJFIGkgPCAxMDAwMDsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMV9zdGFydF91cHNlcnQ6IElOU0VS VCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3QoYWJzKGkpKSB3aGVy ZSBpIDwgMTAwIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+ CitzdGVwIHM0X3dha2V1cF9kZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZDogCisJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCcp OworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZGVmaW5lX2luZGV4X2JlZm9yZV9z ZXRfdmFsaWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9p bnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfY3JlYXRlX2luZGV4OiA8Li4uIGNvbXBsZXRl ZD4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMs bm93KCkpICBvbiBjb25mbGljdChhYnMoaSkpIHdoZXJlIGkgPCAxMDAgZG8gdXBkYXRlIHNldCB1 cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxX2Zyb21f aW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90OiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19k ZXRhY2goJ2ludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQnKTsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c193YWtldXAoJ2ludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQnKTsKKwor aW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4 ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsK KworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVw X3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9v cl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZs aWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193 YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9j b25jdXJyZW50bHlfdXBzZXJ0Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNGJiYmNiZGQ4OAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmN1 cnJlbnRseV91cHNlcnQub3V0CkBAIC0wLDAgKzEsMjM4IEBACitQYXJzZWQgdGVzdCBzcGVjIHdp dGggNCBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNfc3RhcnRfcmVpbmRleCBz MV9zdGFydF91cHNlcnQgczRfd2FrZXVwX3RvX3N3YXAgczJfc3RhcnRfdXBzZXJ0IHM0X3dha2V1 cF9zMSBzNF93YWtldXBfczIgczRfd2FrZXVwX3RvX3NldF9kZWFkCitpbmplY3Rpb25fcG9pbnRz X2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50 c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIHRlc3QudGJsX3BrZXk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFfc3RhcnRfdXBzZXJ0 OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRv IHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dh a2V1cF90b19zd2FwOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhf cmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcp OworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVw CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworc3RlcCBzMl9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygx Myxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25m bGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9u X29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNf ZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vw c2VydDogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHM0X3dha2V1cF9zMjogCisJU0VMRUNUIGluamVj dGlvbl9wb2ludHNfZGV0YWNoKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZl Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdleGVjX2luc2VydF9iZWZvcmVf aW5zZXJ0X3NwZWN1bGF0aXZlJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5q ZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMyX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHM0X3dha2V1cF90b19zZXRfZGVhZDogCisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2Rl YWQnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFj aAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4 OiA8Li4uIGNvbXBsZXRlZD4KKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMzX3N0YXJ0X3JlaW5k ZXggczJfc3RhcnRfdXBzZXJ0IHM0X3dha2V1cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzNF93 YWtldXBfczEgczRfd2FrZXVwX3MyIHM0X3dha2V1cF90b19zZXRfZGVhZAoraW5qZWN0aW9uX3Bv aW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9w b2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyA8d2FpdGluZyAuLi4+CitzdGVwIHMyX3N0YXJ0X3Vw c2VydDogSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChp KSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz NF93YWtldXBfdG9fc3dhcDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWlu ZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3 YXAnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dh a2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCiso MSByb3cpCisKK3N0ZXAgczFfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxV RVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5v dygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF9zMTogCisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9f Y29uZmxpY3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrX2V4Y2x1 c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCitpbmplY3Rpb25fcG9p bnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMV9zdGFy dF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzNF93YWtldXBfczI6IAorCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxh dGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVm b3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl9zdGFydF91cHNlcnQ6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzNF93YWtldXBfdG9fc2V0X2RlYWQ6IAorCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3Nl dF9kZWFkJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0 aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19k ZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVp bmRleDogPC4uLiBjb21wbGV0ZWQ+CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9y ZWluZGV4IHM0X3dha2V1cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzMl9zdGFydF91cHNlcnQg czRfd2FrZXVwX3MxIHM0X3dha2V1cF90b19zZXRfZGVhZCBzNF93YWtldXBfczIKK2luamVjdGlv bl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rp b25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGtleTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtl dXBfdG9fc3dhcDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4X3Jl bGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAnKTsK KworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczFfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMs bm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMyX3N0YXJ0X3Vwc2VydDogSU5TRVJUIElOVE8gdGVzdC50Ymwg VkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQg PSBub3coKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfczE6IAorCVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2RldGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 X25vX2NvbmZsaWN0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdjaGVja19l eGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKworaW5qZWN0aW9u X3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFf c3RhcnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3RvX3NldF9kZWFk OiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29u Y3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dh a2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisK K2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitzdGVwIHM0X3dha2V1cF9zMjogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdl eGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlJyk7CisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlJyk7 CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMl9zdGFy dF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9j b25zdHJhaW50Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfb25fY29uc3RyYWludC5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQxY2ZkMTczMWM4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhf Y29uY3VycmVudGx5X3Vwc2VydF9vbl9jb25zdHJhaW50Lm91dApAQCAtMCwwICsxLDIzOCBAQAor UGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDQgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMzX3N0YXJ0X3JlaW5kZXggczFfc3RhcnRfdXBzZXJ0IHM0X3dha2V1cF90b19zd2FwIHMyX3N0 YXJ0X3Vwc2VydCBzNF93YWtldXBfczEgczRfd2FrZXVwX3MyIHM0X3dha2V1cF90b19zZXRfZGVh ZAoraW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyA8d2FpdGluZyAuLi4+Citz dGVwIHMxX3N0YXJ0X3Vwc2VydDogSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygp KSBvbiBjb25mbGljdCBvbiBjb25zdHJhaW50IHRibF9wa2V5IGRvIHVwZGF0ZSBzZXQgdXBkYXRl ZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF90b19zd2FwOiAKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVu dGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWlu ZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCitpbmplY3Rpb25fcG9p bnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl9zdGFy dF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxp Y3Qgb24gY29uc3RyYWludCB0YmxfcGtleSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3co KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfczE6IAorCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2RldGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2Nv bmZsaWN0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdjaGVja19leGNsdXNp b25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKworaW5qZWN0aW9uX3BvaW50 c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfc3RhcnRf dXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRp dmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9y ZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitp bmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4uIGNv bXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3RvX3NldF9kZWFkOiAKKwlTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRf ZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlv bl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0 YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygx IHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5k ZXg6IDwuLi4gY29tcGxldGVkPgorCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNfc3RhcnRfcmVp bmRleCBzMl9zdGFydF91cHNlcnQgczRfd2FrZXVwX3RvX3N3YXAgczFfc3RhcnRfdXBzZXJ0IHM0 X3dha2V1cF9zMSBzNF93YWtldXBfczIgczRfd2FrZXVwX3RvX3NldF9kZWFkCitpbmplY3Rpb25f cG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9u X3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIHRlc3QudGJsX3BrZXk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJfc3RhcnRf dXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0 IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRfd2FrZXVwX3RvX3N3YXA6IAorCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3 YXAnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK KworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogSU5T RVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdCBvbiBjb25zdHJh aW50IHRibF9wa2V5IGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAu Li4+CitzdGVwIHM0X3dha2V1cF9zMTogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNo KCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVf Y29uc3RyYWludF9ub19jb25mbGljdCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMV9zdGFydF91cHNlcnQ6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzNF93YWtldXBfczI6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCVNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVj dWxhdGl2ZScpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2lu dHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworc3RlcCBzMl9zdGFydF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgorc3Rl cCBzNF93YWtldXBfdG9fc2V0X2RlYWQ6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisJU0VM RUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRs eV9iZWZvcmVfc2V0X2RlYWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmpl Y3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogPC4uLiBjb21w bGV0ZWQ+CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9yZWluZGV4IHM0X3dha2V1 cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzMl9zdGFydF91cHNlcnQgczRfd2FrZXVwX3MxIHM0 X3dha2V1cF90b19zZXRfZGVhZCBzNF93YWtldXBfczIKK2luamVjdGlvbl9wb2ludHNfYXR0YWNo CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworaW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFj aAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg dGVzdC50YmxfcGtleTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfdG9fc3dhcDogCisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc3dhcCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVp bmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAnKTsKKworaW5qZWN0aW9uX3Bv aW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfc3Rh cnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZs aWN0IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93 KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0 LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkg ZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczRf d2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1 c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25v X2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3Bv aW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHM0X3dha2V1cF90b19zZXRfZGVhZDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVu dGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2lu amVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzNF93YWtldXBfczI6IAorCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxh dGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVm b3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4 X2NvbmN1cnJlbnRseV91cHNlcnRfcGFydGl0aW9uZWQub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0 aXRpb25lZC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM5NWZm MjY0ZjEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZC5vdXQK QEAgLTAsMCArMSwyMzggQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCA0IHNlc3Npb25zCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19zdGFydF9yZWluZGV4IHMxX3N0YXJ0X3Vwc2VydCBzNF93 YWtldXBfdG9fc3dhcCBzMl9zdGFydF91cHNlcnQgczRfd2FrZXVwX3MxIHM0X3dha2V1cF9zMiBz NF93YWtldXBfdG9fc2V0X2RlYWQKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0 aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAg czNfc3RhcnRfcmVpbmRleDogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFy dGl0aW9uX3BrZXk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFfc3RhcnRfdXBzZXJ0OiBJTlNFUlQg SU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBz ZXQgdXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF90b19z d2FwOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2Fr ZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworCitpbmpl Y3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMl9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkg b24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczRfd2FrZXVwX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOwor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1 ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK KworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogPC4u LiBjb21wbGV0ZWQ+CitzdGVwIHM0X3dha2V1cF9zMjogCisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlJyk7CisJU0VM RUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3Nw ZWN1bGF0aXZlJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3Bv aW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitzdGVwIHMyX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHM0X3dha2V1cF90b19zZXRfZGVhZDogCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVu dGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2lu amVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiA8Li4uIGNv bXBsZXRlZD4KKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMzX3N0YXJ0X3JlaW5kZXggczJfc3Rh cnRfdXBzZXJ0IHM0X3dha2V1cF90b19zd2FwIHMxX3N0YXJ0X3Vwc2VydCBzNF93YWtldXBfczEg czRfd2FrZXVwX3MyIHM0X3dha2V1cF90b19zZXRfZGVhZAoraW5qZWN0aW9uX3BvaW50c19hdHRh Y2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEg cm93KQorCitpbmplY3Rpb25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0 YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygx IHJvdykKKworc3RlcCBzM19zdGFydF9yZWluZGV4OiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSB0ZXN0LnRibF9wYXJ0aXRpb25fcGtleTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMl9zdGFydF91 cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3Qo aSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czRfd2FrZXVwX3RvX3N3YXA6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVp bmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAnKTsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c193YWtldXAoJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9z d2FwJyk7CisKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193 YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxX3N0YXJ0X3Vwc2VydDogSU5TRVJUIElOVE8gdGVzdC50YmwgVkFM VUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBu b3coKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzNF93YWtldXBfczE6IAorCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25v X2NvbmZsaWN0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdjaGVja19leGNs dXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKworaW5qZWN0aW9uX3Bv aW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfc3Rh cnRfdXBzZXJ0OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3Vs YXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2Jl Zm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczRfd2FrZXVwX3RvX3NldF9kZWFkOiAKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9z ZXRfZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxh dGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisKK2luamVjdGlvbl9wb2ludHNf ZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAK KygxIHJvdykKKworaW5qZWN0aW9uX3BvaW50c193YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3Jl aW5kZXg6IDwuLi4gY29tcGxldGVkPgorCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNfc3RhcnRf cmVpbmRleCBzNF93YWtldXBfdG9fc3dhcCBzMV9zdGFydF91cHNlcnQgczJfc3RhcnRfdXBzZXJ0 IHM0X3dha2V1cF9zMSBzNF93YWtldXBfdG9fc2V0X2RlYWQgczRfd2FrZXVwX3MyCitpbmplY3Rp b25fcG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworaW5qZWN0 aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMzX3N0YXJ0X3JlaW5kZXg6IFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OyA8d2FpdGluZyAuLi4+Citz dGVwIHM0X3dha2V1cF90b19zd2FwOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZv cmVfc3dhcCcpOworCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2lu dHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworc3RlcCBzMV9zdGFydF91cHNlcnQ6IElOU0VSVCBJTlRPIHRlc3QudGJs IFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0 ID0gbm93KCk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0OiBJTlNFUlQgSU5U TyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQg dXBkYXRlZF9hdCA9IG5vdygpOyA8d2FpdGluZyAuLi4+CitzdGVwIHM0X3dha2V1cF9zMTogCisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVl X2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtl dXAoJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOwor CitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK Kworc3RlcCBzMV9zdGFydF91cHNlcnQ6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzNF93YWtldXBf dG9fc2V0X2RlYWQ6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleF9y ZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7CisJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0 X2RlYWQnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRz X3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczRfd2FrZXVwX3MyOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKwlTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3Bl Y3VsYXRpdmUnKTsKKworaW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmplY3Rpb25fcG9p bnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK3N0ZXAgczNfc3RhcnRfcmVpbmRleDogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyX3N0YXJ0X3Vwc2VydDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKaW5kZXggNThmMTkwMDExNTcuLjkxZmM4Y2U2 ODdmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24u YnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxk CkBAIC00NCw3ICs0NCwxNiBAQCB0ZXN0cyArPSB7CiAgICAgJ3NwZWNzJzogWwogICAgICAgJ2Jh c2ljJywKICAgICAgICdpbnBsYWNlJywKKyAgICAgICdyZWluZGV4X2NvbmN1cnJlbnRseV91cHNl cnQnLAorICAgICAgJ2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnQnLAorICAgICAgJ3JlaW5kZXhf Y29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZCcsCisgICAgICAncmVpbmRleF9jb25jdXJy ZW50bHlfdXBzZXJ0X29uX2NvbnN0cmFpbnQnLAorICAgICAgJ2luZGV4X2NvbmN1cnJlbnRseV91 cHNlcnRfcHJlZGljYXRlJywKICAgICBdLAorICAgICMgVGhlIGluamVjdGlvbiBwb2ludHMgYXJl IGNsdXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0YWxsY2hlY2sKKyAgICAncnVubmluZ2NoZWNr JzogZmFsc2UsCisgICAgIyBXZSB3YWl0aW5nIGZvciBhbGwgc25hcHNob3RzLCBzbywgYXZvaWQg cGFyYWxsZWwgdGVzdCBleGVjdXRpb25zCisgICAgJ3J1bm5pbmdjaGVjay1wYXJhbGxlbCc6IGZh bHNlLAogICB9LAogICAndGFwJzogewogICAgICdlbnYnOiB7CkBAIC01Myw1ICs2Miw3IEBAIHRl c3RzICs9IHsKICAgICAndGVzdHMnOiBbCiAgICAgICAndC8wMDFfc3RhdHMucGwnLAogICAgIF0s CisgICAgIyBUaGUgaW5qZWN0aW9uIHBvaW50cyBhcmUgY2x1c3Rlci13aWRlLCBzbyBkaXNhYmxl IGluc3RhbGxjaGVjaworICAgICdydW5uaW5nY2hlY2snOiBmYWxzZSwKICAgfSwKIH0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9pbmRleF9jb25j dXJyZW50bHlfdXBzZXJ0LnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv c3BlY3MvaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4wNzU0NTA5MzViNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0LnNwZWMKQEAgLTAsMCArMSw2OCBAQAorIyBUZXN0IHJhY2UgY29uZGl0aW9ucyBpbnZvbHZp bmc6CisjIC0gczE6IFVQU0VSVCBhIHR1cGxlCisjIC0gczI6IFVQU0VSVCB0aGUgc2FtZSB0dXBs ZQorIyAtIHMzOiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWQorIyAtIHM0OiBvcGVy YXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50cworCitzZXR1cAoreworCUNSRUFURSBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFVOTE9H R0VEIFRBQkxFIHRlc3QudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFt cCk7CisJQUxURVIgVEFCTEUgdGVzdC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworfQor Cit0ZWFyZG93bgoreworCURST1AgU0NIRU1BIHRlc3QgQ0FTQ0FERTsKKwlEUk9QIEVYVEVOU0lP TiBpbmplY3Rpb25fcG9pbnRzOworfQorCitzZXNzaW9uIHMxCitzZXR1cAl7CisJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnLCAn d2FpdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW52YWxpZGF0ZV9jYXRh bG9nX3NuYXBzaG90X2VuZCcsICd3YWl0Jyk7Cit9CitzdGVwIHMxX3N0YXJ0X3Vwc2VydAl7IElO U0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBk YXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7IH0KKworc2Vzc2lvbiBzMgorc2V0dXAJeworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScsICd3YWl0 Jyk7Cit9CitzdGVwIHMyX3N0YXJ0X3Vwc2VydAl7IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVF UygxMyxub3coKSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93 KCk7IH0KKworc2Vzc2lvbiBzMworc2V0dXAJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZGVmaW5lX2luZGV4 X2JlZm9yZV9zZXRfdmFsaWQnLCAnd2FpdCcpOworfQorc3RlcCBzM19zdGFydF9jcmVhdGVfaW5k ZXgJCXsgQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfZHVwbGljYXRl IE9OIHRlc3QudGJsKGkpOyB9CisKK3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVwX3MxCQl7CisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVl X2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtl dXAoJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOwor fQorc3RlcCBzNF93YWtldXBfczFfZnJvbV9pbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3QJewor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBz aG90X2VuZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW52YWxpZGF0ZV9j YXRhbG9nX3NuYXBzaG90X2VuZCcpOworfQorc3RlcCBzNF93YWtldXBfczIJCXsKKwlTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3Vs YXRpdmUnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2Jl Zm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKK30KK3N0ZXAgczRfd2FrZXVwX2RlZmluZV9pbmRl eF9iZWZvcmVfc2V0X3ZhbGlkCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2Rl ZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNf d2FrZXVwKCdkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCcpOworfQorCitwZXJtdXRhdGlv bgorCXMzX3N0YXJ0X2NyZWF0ZV9pbmRleAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF9k ZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1 cF9zMV9mcm9tX2ludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdAorCXM0X3dha2V1cF9zMgorCXM0 X3dha2V1cF9zMQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9pbmRleF9jb25jdXJyZW50bHlfdXBz ZXJ0X3ByZWRpY2F0ZS5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3Nw ZWNzL2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfcHJlZGljYXRlLnNwZWMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcwYTI3NDc1ZTEwCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2luZGV4X2NvbmN1cnJl bnRseV91cHNlcnRfcHJlZGljYXRlLnNwZWMKQEAgLTAsMCArMSw3MCBAQAorIyBUZXN0IHJhY2Ug Y29uZGl0aW9ucyBpbnZvbHZpbmc6CisjIC0gczE6IFVQU0VSVCBhIHR1cGxlCisjIC0gczI6IFVQ U0VSVCB0aGUgc2FtZSB0dXBsZQorIyAtIHMzOiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJF TlRMWQorIyAtIHM0OiBvcGVyYXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50cworCitzZXR1cAor eworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgU0NIRU1BIHRl c3Q7CisJQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRlc3QudGJsKGkgaW50LCB1cGRhdGVkX2F0IHRp bWVzdGFtcCk7CisKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRibF9wa2V5X3NwZWNpYWwgT04gdGVz dC50YmwoYWJzKGkpKSBXSEVSRSBpIDwgMTAwMDsKKwlBTFRFUiBUQUJMRSB0ZXN0LnRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9MCk7Cit9CisKK3RlYXJkb3duCit7CisJRFJPUCBTQ0hFTUEgdGVz dCBDQVNDQURFOworCURST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Cit9CisKK3Nlc3Np b24gczEKK3NldHVwCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVf Y29uc3RyYWludF9ub19jb25mbGljdCcsICd3YWl0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCdpbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3RfZW5kJywgJ3dhaXQnKTsKK30K K3N0ZXAgczFfc3RhcnRfdXBzZXJ0CXsgSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5v dygpKSBvbiBjb25mbGljdChhYnMoaSkpIHdoZXJlIGkgPCAxMDAgZG8gdXBkYXRlIHNldCB1cGRh dGVkX2F0ID0gbm93KCk7IH0KKworc2Vzc2lvbiBzMgorc2V0dXAJeworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3NldF9sb2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScsICd3YWl0Jyk7Cit9CitzdGVw IHMyX3N0YXJ0X3Vwc2VydAl7IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkg IG9uIGNvbmZsaWN0KGFicyhpKSkgd2hlcmUgaSA8IDEwMCBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRf YXQgPSBub3coKTsgfQorCitzZXNzaW9uIHMzCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdkZWZp bmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCcsICd3YWl0Jyk7Cit9CitzdGVwIHMzX3N0YXJ0X2Ny ZWF0ZV9pbmRleAkJeyBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSB0YmxfcGtleV9z cGVjaWFsX2R1cGxpY2F0ZSBPTiB0ZXN0LnRibChhYnMoaSkpIFdIRVJFIGkgPCAxMDAwMDt9CisK K3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVwX3MxCQl7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxp Y3QnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrX2V4Y2x1c2lvbl9v cl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworfQorc3RlcCBzNF93YWtldXBfczFf ZnJvbV9pbnZhbGlkYXRlX2NhdGFsb2dfc25hcHNob3QJeworCVNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgnaW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90X2VuZCcpOworCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW52YWxpZGF0ZV9jYXRhbG9nX3NuYXBzaG90X2VuZCcp OworfQorc3RlcCBzNF93YWtldXBfczIJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRpdmUnKTsKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c193YWtldXAoJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3VsYXRp dmUnKTsKK30KK3N0ZXAgczRfd2FrZXVwX2RlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkCXsK KwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2RlZmluZV9pbmRleF9iZWZvcmVfc2V0 X3ZhbGlkJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdkZWZpbmVfaW5kZXhf YmVmb3JlX3NldF92YWxpZCcpOworfQorCitwZXJtdXRhdGlvbgorCXMzX3N0YXJ0X2NyZWF0ZV9p bmRleAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF9kZWZpbmVfaW5kZXhfYmVmb3JlX3Nl dF92YWxpZAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF9zMV9mcm9tX2ludmFsaWRhdGVf Y2F0YWxvZ19zbmFwc2hvdAorCXM0X3dha2V1cF9zMgorCXM0X3dha2V1cF9zMQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnQuc3BlYyBiL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNl cnQuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzhiODZkODQz NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv c3BlY3MvcmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0LnNwZWMKQEAgLTAsMCArMSw4NiBAQAor IyBUZXN0IHJhY2UgY29uZGl0aW9ucyBpbnZvbHZpbmc6CisjIC0gczE6IFVQU0VSVCBhIHR1cGxl CisjIC0gczI6IFVQU0VSVCB0aGUgc2FtZSB0dXBsZQorIyAtIHMzOiBSRUlOREVYIGNvbmN1cnJl bnQgcHJpbWFyeSBrZXkgaW5kZXgKKyMgLSBzNDogb3BlcmF0aW9ucyB3aXRoIGluamVjdGlvbiBw b2ludHMKKworc2V0dXAKK3sKKwlDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CisJ Q1JFQVRFIFNDSEVNQSB0ZXN0OworCUNSRUFURSBVTkxPR0dFRCBUQUJMRSB0ZXN0LnRibChpIGlu dCBwcmltYXJ5IGtleSwgdXBkYXRlZF9hdCB0aW1lc3RhbXApOworCUFMVEVSIFRBQkxFIHRlc3Qu dGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKK30KKwordGVhcmRvd24KK3sKKwlEUk9QIFND SEVNQSB0ZXN0IENBU0NBREU7CisJRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK30K Kworc2Vzc2lvbiBzMQorc2V0dXAJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2Nh bCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hlY2tfZXhjbHVzaW9uX29y X3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0JywgJ3dhaXQnKTsKK30KK3N0ZXAgczFfc3Rh cnRfdXBzZXJ0CXsgSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25m bGljdChpKSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsgfQorCitzZXNzaW9uIHMy CitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1 bGF0aXZlJywgJ3dhaXQnKTsKK30KK3N0ZXAgczJfc3RhcnRfdXBzZXJ0CXsgSU5TRVJUIElOVE8g dGVzdC50YmwgVkFMVUVTKDEzLG5vdygpKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0IHVw ZGF0ZWRfYXQgPSBub3coKTsgfQorCitzZXNzaW9uIHMzCitzZXR1cAl7CisJU0VMRUNUIGluamVj dGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnLCAnd2FpdCcp OworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25j dXJyZW50bHlfYmVmb3JlX3N3YXAnLCAnd2FpdCcpOworfQorc3RlcCBzM19zdGFydF9yZWluZGV4 CQkJeyBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyB9CisKK3Nlc3Np b24gczQKK3N0ZXAgczRfd2FrZXVwX3RvX3N3YXAJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc3dhcCcpOworfQorc3RlcCBzNF93YWtldXBfczEJCXsKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWlu dF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tf ZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7Cit9CitzdGVwIHM0 X3dha2V1cF9zMgkJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNl cnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3dha2V1cCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworfQorc3Rl cCBzNF93YWtldXBfdG9fc2V0X2RlYWQJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRh Y2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50 bHlfYmVmb3JlX3NldF9kZWFkJyk7Cit9CisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRl eAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF90b19zd2FwCisJczJfc3RhcnRfdXBzZXJ0 CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisK K3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dh a2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVw X3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVp bmRleAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczJfc3RhcnRfdXBz ZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisJczRfd2FrZXVwX3My ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9vbl9j b25zdHJhaW50LnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mv cmVpbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0X29uX2NvbnN0cmFpbnQuc3BlYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2Q4ZTM3MWJiMGEKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3MvcmVpbmRleF9jb25j dXJyZW50bHlfdXBzZXJ0X29uX2NvbnN0cmFpbnQuc3BlYwpAQCAtMCwwICsxLDg2IEBACisjIFRl c3QgcmFjZSBjb25kaXRpb25zIGludm9sdmluZzoKKyMgLSBzMTogVVBTRVJUIGEgdHVwbGUKKyMg LSBzMjogVVBTRVJUIHRoZSBzYW1lIHR1cGxlCisjIC0gczM6IFJFSU5ERVggY29uY3VycmVudCBw cmltYXJ5IGtleSBpbmRleAorIyAtIHM0OiBvcGVyYXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50 cworCitzZXR1cAoreworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVB VEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRlc3QudGJsKGkgaW50IHBy aW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7CisJQUxURVIgVEFCTEUgdGVzdC50Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworfQorCit0ZWFyZG93bgoreworCURST1AgU0NIRU1B IHRlc3QgQ0FTQ0FERTsKKwlEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworfQorCitz ZXNzaW9uIHMxCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5p cXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnLCAnd2FpdCcpOworfQorc3RlcCBzMV9zdGFydF91 cHNlcnQJeyBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0 IG9uIGNvbnN0cmFpbnQgdGJsX3BrZXkgZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7 IH0KKworc2Vzc2lvbiBzMgorc2V0dXAJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlY19pbnNlcnRfYmVm b3JlX2luc2VydF9zcGVjdWxhdGl2ZScsICd3YWl0Jyk7Cit9CitzdGVwIHMyX3N0YXJ0X3Vwc2Vy dAl7IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUygxMyxub3coKSkgb24gY29uZmxpY3Qgb24g Y29uc3RyYWludCB0YmxfcGtleSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsgfQor CitzZXNzaW9uIHMzCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2Nv bmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQnLCAnd2FpdCcpOworCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3N3YXAn LCAnd2FpdCcpOworfQorc3RlcCBzM19zdGFydF9yZWluZGV4CQkJeyBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSB0ZXN0LnRibF9wa2V5OyB9CisKK3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVw X3RvX3N3YXAJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVs YXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOwor fQorc3RlcCBzNF93YWtldXBfczEJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9j b25zdHJhaW50X25vX2NvbmZsaWN0Jyk7Cit9CitzdGVwIHM0X3dha2V1cF9zMgkJeworCVNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVj dWxhdGl2ZScpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRf YmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworfQorc3RlcCBzNF93YWtldXBfdG9fc2V0X2Rl YWQJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25f Y29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7 Cit9CisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXMxX3N0YXJ0X3Vwc2VydAor CXM0X3dha2V1cF90b19zd2FwCisJczJfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRf d2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3Rh cnRfcmVpbmRleAorCXMyX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3Rh cnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3Nl dF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXM0X3dha2V1cF90b19z d2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczJfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJ czRfd2FrZXVwX3RvX3NldF9kZWFkCisJczRfd2FrZXVwX3MyClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3Nw ZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydF9wYXJ0aXRpb25lZC5zcGVjIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlaW5kZXhfY29uY3VycmVudGx5X3Vw c2VydF9wYXJ0aXRpb25lZC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5iOTI1MzQ2MzAzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcGVjcy9yZWluZGV4X2NvbmN1cnJlbnRseV91cHNlcnRfcGFydGl0aW9u ZWQuc3BlYwpAQCAtMCwwICsxLDg4IEBACisjIFRlc3QgcmFjZSBjb25kaXRpb25zIGludm9sdmlu ZzoKKyMgLSBzMTogVVBTRVJUIGEgdHVwbGUKKyMgLSBzMjogVVBTRVJUIHRoZSBzYW1lIHR1cGxl CisjIC0gczM6IFJFSU5ERVggY29uY3VycmVudCBwcmltYXJ5IGtleSBpbmRleAorIyAtIHM0OiBv cGVyYXRpb25zIHdpdGggaW5qZWN0aW9uIHBvaW50cworCitzZXR1cAoreworCUNSRUFURSBFWFRF TlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFRB QkxFIHRlc3QudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKKwlDUkVBVEUgVEFCTEUgdGVzdC50YmxfcGFydGl0aW9uIFBB UlRJVElPTiBPRiB0ZXN0LnRibAorCQlGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDAwMCkKKwkJ V0lUSCAocGFyYWxsZWxfd29ya2VycyA9IDApOworfQorCit0ZWFyZG93bgoreworCURST1AgU0NI RU1BIHRlc3QgQ0FTQ0FERTsKKwlEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworfQor CitzZXNzaW9uIHMxCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja19leGNsdXNpb25fb3Jf dW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnLCAnd2FpdCcpOworfQorc3RlcCBzMV9zdGFy dF91cHNlcnQJeyBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZs aWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOyB9CisKK3Nlc3Npb24gczIK K3NldHVwCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWNfaW5zZXJ0X2JlZm9yZV9pbnNlcnRfc3BlY3Vs YXRpdmUnLCAnd2FpdCcpOworfQorc3RlcCBzMl9zdGFydF91cHNlcnQJeyBJTlNFUlQgSU5UTyB0 ZXN0LnRibCBWQUxVRVMoMTMsbm93KCkpIG9uIGNvbmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBk YXRlZF9hdCA9IG5vdygpOyB9CisKK3Nlc3Npb24gczMKK3NldHVwCXsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCcsICd3YWl0Jyk7 CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4X3JlbGF0aW9uX2NvbmN1 cnJlbnRseV9iZWZvcmVfc3dhcCcsICd3YWl0Jyk7Cit9CitzdGVwIHMzX3N0YXJ0X3JlaW5kZXgJ CQl7IFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OyB9 CisKK3Nlc3Npb24gczQKK3N0ZXAgczRfd2FrZXVwX3RvX3N3YXAJCXsKKwlTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9z d2FwJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZWluZGV4X3JlbGF0aW9u X2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCcpOworfQorc3RlcCBzNF93YWtldXBfczEJCXsKKwlT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVf Y29uc3RyYWludF9ub19jb25mbGljdCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Jyk7Cit9 CitzdGVwIHM0X3dha2V1cF9zMgkJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn ZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScpOworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3dha2V1cCgnZXhlY19pbnNlcnRfYmVmb3JlX2luc2VydF9zcGVjdWxhdGl2ZScp OworfQorc3RlcCBzNF93YWtldXBfdG9fc2V0X2RlYWQJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ3JlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVh ZCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgncmVpbmRleF9yZWxhdGlvbl9j b25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkJyk7Cit9CisKK3Blcm11dGF0aW9uCisJczNfc3Rh cnRfcmVpbmRleAorCXMxX3N0YXJ0X3Vwc2VydAorCXM0X3dha2V1cF90b19zd2FwCisJczJfc3Rh cnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3Nl dF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNfc3RhcnRfcmVpbmRleAorCXMyX3N0YXJ0X3Vwc2Vy dAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJ czRfd2FrZXVwX3MyCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisKK3Blcm11dGF0aW9uCisJczNf c3RhcnRfcmVpbmRleAorCXM0X3dha2V1cF90b19zd2FwCisJczFfc3RhcnRfdXBzZXJ0CisJczJf c3RhcnRfdXBzZXJ0CisJczRfd2FrZXVwX3MxCisJczRfd2FrZXVwX3RvX3NldF9kZWFkCisJczRf d2FrZXVwX3MyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000a19089062a03c8a5 Content-Type: application/octet-stream; name="v8-0005-Allow-snapshot-resets-in-concurrent-unique-index-.patch" Content-Disposition: attachment; filename="v8-0005-Allow-snapshot-resets-in-concurrent-unique-index-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52haugf4 RnJvbSAzYzgyZTA0MDRkYjkwODQ5MWJkMGViYWYxZDE3N2Y5NzQxYzZjNmFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCA3IERlYyAyMDI0IDIzOjI3OjM0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2OCA1Lzdd IEFsbG93IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleAogYnVpbGRz CgpQcmV2aW91c2x5LCBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMgdXNlZCBhIGZpeGVk IHNuYXBzaG90IGZvciB0aGUgZW50aXJlCnNjYW4gdG8gZW5zdXJlIHByb3BlciB1bmlxdWVuZXNz IGNoZWNrcy4gVGhpcyBjb3VsZCBkZWxheSB2YWN1dW0ncyBhYmlsaXR5IHRvCmNsZWFuIHVwIGRl YWQgdHVwbGVzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJpb2RpY2FsbHkgZHVyaW5nIGNvbmN1 cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUKc3RpbGwgbWFpbnRhaW5pbmcgdW5pcXVl bmVzcyBieToKCjEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlxdWVuZXNzIGNoZWNr cyBpbiB0dXBsZXNvcnQKMi4gQWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBfYnRfbG9hZCB0 aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUga2V5IHZhbHVl cwoKVGhpcyBpbXByb3ZlcyB2YWN1dW0gZWZmZWN0aXZlbmVzcyBkdXJpbmcgbG9uZy1ydW5uaW5n IGluZGV4IGJ1aWxkcyB3aXRob3V0CmNvbXByb21pc2luZyBpbmRleCB1bmlxdWVuZXNzIGVuZm9y Y2VtZW50LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAg ICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jICAgICAgICAg IHwgICA4ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAg fCAxNzMgKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNw bGl0bG9jLmMgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRp bHMuYyAgICAgICAgICB8ICAyOSArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAg ICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMg ICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZh cmlhbnRzLmMgICAgfCAgNjcgKysrKystLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAg ICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAg ICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAg ICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQgICAgICAgICAgfCAgIDYgKwogMTIgZmlsZXMgY2hhbmdlZCwgMjQ1IGluc2VydGlvbnMoKyks IDc4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CmluZGV4IDJlNTE2MzYwOWMxLi45MjFiODA2NjQyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjMyLDE1ICsxMjMyLDE1IEBAIGhlYXBhbV9pbmRleF9i dWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBxdWFsIGNoZWNrcyAo YmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gSW4gYQogCSAq IGNvbmN1cnJlbnQgYnVpbGQsIG9yIGR1cmluZyBib290c3RyYXAsIHdlIHRha2UgYSByZWd1bGFy IE1WQ0Mgc25hcHNob3QKIAkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0 byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMgcmVzZXQKLQkgKiBldmVyeSBzbyBvZnRlbiAo aW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4KS4KKwkgKiBldmVyeSBzbyBvZnRlbi4KIAkgKi8K IAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgotCSAqIEZvciB1bmlx dWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4K KwkgKiBGb3IgY29uY3VycmVudCBidWlsZHMgb2Ygbm9uLXN5c3RlbSBpbmRleGVzLCB3ZSBtYXkg d2FudCB0byBwZXJpb2RpY2FsbHkKKwkgKiByZXNldCBzbmFwc2hvdHMgdG8gYWxsb3cgdmFjdXVt IHRvIGNsZWFuIHVwIHR1cGxlcy4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgJiYKLQkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKIAkJCQkJ ICAhaXNfc3lzdGVtX2NhdGFsb2c7IC8qIGp1c3QgZm9yIHRoZSBjYXNlICovCiAKIAkvKiBva2F5 IHRvIGlnbm9yZSBsYXp5IFZBQ1VVTXMgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRkZWR1cC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRk ZWR1cC5jCmluZGV4IDQ1NmQ4NmI1MWM5Li4zMWI1OTI2NWEyOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0ZGVkdXAuYwpAQCAtMTQ4LDcgKzE0OCw3IEBAIF9idF9kZWR1cF9wYXNzKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgSW5kZXhUdXBsZSBuZXdpdGVtLCBTaXplIG5ld2l0ZW1zeiwK IAkJCV9idF9kZWR1cF9zdGFydF9wZW5kaW5nKHN0YXRlLCBpdHVwLCBvZmZudW0pOwogCQl9CiAJ CWVsc2UgaWYgKHN0YXRlLT5kZWR1cGxpY2F0ZSAmJgotCQkJCSBfYnRfa2VlcF9uYXR0c19mYXN0 KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJCQkgX2J0X2tlZXBfbmF0 dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzICYmCiAJCQkJ IF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkvKgpAQCAtMzc0LDcg KzM3NCw3IEBAIF9idF9ib3R0b211cGRlbF9wYXNzKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Ziwg UmVsYXRpb24gaGVhcFJlbCwKIAkJCS8qIGl0dXAgc3RhcnRzIGZpcnN0IHBlbmRpbmcgaW50ZXJ2 YWwgKi8KIAkJCV9idF9kZWR1cF9zdGFydF9wZW5kaW5nKHN0YXRlLCBpdHVwLCBvZmZudW0pOwog CQl9Ci0JCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCkgPiBua2V5YXR0cyAmJgorCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3Rh dGUtPmJhc2UsIGl0dXAsIE5VTEwpID4gbmtleWF0dHMgJiYKIAkJCQkgX2J0X2RlZHVwX3NhdmVf aHRpZChzdGF0ZSwgaXR1cCkpCiAJCXsKIAkJCS8qIFR1cGxlIGlzIGVxdWFsOyBqdXN0IGFkZGVk IGl0cyBUSURzIHRvIHBlbmRpbmcgaW50ZXJ2YWwgKi8KQEAgLTc4OSwxMiArNzg5LDEyIEBAIF9i dF9kb19zaW5nbGV2YWwoUmVsYXRpb24gcmVsLCBQYWdlIHBhZ2UsIEJURGVkdXBTdGF0ZSBzdGF0 ZSwKIAlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG1pbm9mZik7CiAJaXR1cCA9IChJbmRl eFR1cGxlKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JaWYgKF9idF9rZWVwX25hdHRz X2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCWlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cykKIAl7CiAJCWl0ZW1p ZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKSk7CiAJ CWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAotCQlpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXApID4gbmtleWF0dHMpCisJCWlm IChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0 cykKIAkJCXJldHVybiB0cnVlOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpp bmRleCAyYWNiZjEyMTc0NS4uYWM5ZTVhY2ZjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCkBAIC04Myw2ICs4Myw3IEBAIHR5cGVkZWYgc3RydWN0IEJUU3Bvb2wKIAlSZWxhdGlv bglpbmRleDsKIAlib29sCQlpc3VuaXF1ZTsKIAlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CisJ Ym9vbAkJdW5pcXVlX2RlYWRfaWdub3JlZDsKIH0gQlRTcG9vbDsKIAogLyoKQEAgLTEwMSw2ICsx MDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNoYXJlZAogCU9pZAkJCWluZGV4cmVsaWQ7CiAJYm9v bAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9k ZWFkX2lnbm9yZWQ7CiAJYm9vbAkJaXNjb25jdXJyZW50OwogCWludAkJCXNjYW50dXBsZXNvcnRz dGF0ZXM7CiAKQEAgLTIwMywxNSArMjA1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEJUTGVhZGVyCiAg Ki8KIHR5cGVkZWYgc3RydWN0IEJUQnVpbGRTdGF0ZQogewotCWJvb2wJCWlzdW5pcXVlOwotCWJv b2wJCW51bGxzX25vdF9kaXN0aW5jdDsKIAlib29sCQloYXZlZGVhZDsKIAlSZWxhdGlvbgloZWFw OwogCUJUU3Bvb2wgICAgKnNwb29sOwogCiAJLyoKLQkgKiBzcG9vbDIgaXMgbmVlZGVkIG9ubHkg d2hlbiB0aGUgaW5kZXggaXMgYSB1bmlxdWUgaW5kZXguIERlYWQgdHVwbGVzIGFyZQotCSAqIHB1 dCBpbnRvIHNwb29sMiBpbnN0ZWFkIG9mIHNwb29sIGluIG9yZGVyIHRvIGF2b2lkIHVuaXF1ZW5l c3MgY2hlY2suCisJICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEg dW5pcXVlIGluZGV4IGFuZCBidWlsZCBub24tY29uY3VycmVudGx5LgorCSAqIERlYWQgdHVwbGVz IGFyZSBwdXQgaW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1 bmlxdWVuZXNzIGNoZWNrLgogCSAqLwogCUJUU3Bvb2wgICAgKnNwb29sMjsKIAlkb3VibGUJCWlu ZHR1cGxlczsKQEAgLTMwMyw4ICszMDMsNiBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJUmVzZXRVc2FnZSgpOwogI2VuZGlm CQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICovCiAKLQlidWlsZHN0YXRlLmlzdW5pcXVlID0g aW5kZXhJbmZvLT5paV9VbmlxdWU7Ci0JYnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBp bmRleEluZm8tPmlpX051bGxzTm90RGlzdGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZh bHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGhlYXA7CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IE5VTEw7 CkBAIC0zNzksNiArMzc3LDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRl eCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJ YnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3Rp bmN0OworICAgIC8qCisgICAgICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVu aXF1ZSBjaGVja3MgaW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorICAgICAqIEl0IGlzIHJl cXVpcmVkIGJlY2F1c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisgICAgICovCisJ YnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAm JiBpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMgcHJpbWFyeSBzcG9vbCAqLwog CWJ1aWxkc3RhdGUtPnNwb29sID0gYnRzcG9vbDsKQEAgLTQyNyw4ICs0MzAsOSBAQCBfYnRfc3Bv b2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsCiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlzbSBvciBhbnkgb3RoZXIgZmFj dG9yLgogCSAqLwogCWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3RhdGUgPQotCQl0dXBsZXNvcnRf YmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3RhdGUtPmlzdW5pcXVlLAotCQkJ CQkJCQkJYnVpbGRzdGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQl0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5pcXVlLAorCQkJCQkJCQkJYnRz cG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRzcG9vbC0+dW5pcXVlX2RlYWRf aWdub3JlZCwKIAkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJ CQkJCQkJVFVQTEVTT1JUX05PTkUpOwogCkBAIC00MzYsOCArNDQwLDEyIEBAIF9idF9zcG9vbHNf aGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwKIAkgKiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRleCwgcHV0IGRlYWQgdHVwbGVz IGluIGEgc2Vjb25kIHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91dCBvZiB0aGUgdW5pcXVlbmVz cyBjaGVjay4gIFdlIGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bvb2wgKGZvcgogCSAqIGRlYWQg dHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0u CisJICoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgYXJlIG5v dCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNu YXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogdmFs aWRhdGlvbiBwaGFzZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJaWYgKGlu ZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJewogCQlC VFNwb29sICAgICpidHNwb29sMiA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wp KTsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwpAQCAtNDY4LDcgKzQ3Niw3 IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdv cmtfbWVtCiAJCSAqLwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBs ZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgd29ya19t ZW0sCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3JkaW5hdGUyLCBUVVBMRVNPUlRf Tk9ORSk7CiAJfQogCkBAIC0xMTQ3LDEzICsxMTU1LDExNiBAQCBfYnRfbG9hZChCVFdyaXRlU3Rh dGUgKndzdGF0ZSwgQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJU29ydFN1 cHBvcnQgc29ydEtleXM7CiAJaW50NjQJCXR1cGxlc19kb25lID0gMDsKIAlib29sCQlkZWR1cGxp Y2F0ZTsKKwlib29sCQlmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZTsKIAogCXdzdGF0ZS0+YnVsa3N0 YXRlID0gc21ncl9idWxrX3N0YXJ0X3JlbCh3c3RhdGUtPmluZGV4LCBNQUlOX0ZPUktOVU0pOwog CiAJZGVkdXBsaWNhdGUgPSB3c3RhdGUtPmluc2tleS0+YWxsZXF1YWxpbWFnZSAmJiAhYnRzcG9v bC0+aXN1bmlxdWUgJiYKIAkJQlRHZXREZWR1cGxpY2F0ZUl0ZW1zKHdzdGF0ZS0+aW5kZXgpOwor CS8qCisJICogVGhlIHVuaXF1ZV9kZWFkX2lnbm9yZWQgZG9lcyBub3QgZ3VhcmFudGVlIGFic2Vu Y2Ugb2YgbXVsdGlwbGUgYWxpdmUKKwkgKiB0dXBsZXMgd2l0aCBzYW1lIHZhbHVlcyBleGlzdHMg aW4gdGhlIHNwb29sLiBTdWNoIHRoaW5nIG1heSBoYXBwZW4gaWYKKwkgKiBhbGl2ZSB0dXBsZXMg YXJlIGxvY2F0ZWQgYmV0d2VlbiBhIGZldyBkZWFkIHR1cGxlcywgbGlrZSB0aGlzOiBhZGRkYS4K KwkgKi8KKwlmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2ln bm9yZWQ7CiAKLQlpZiAobWVyZ2UpCisJaWYgKGZhaWxfb25fYWxpdmVfZHVwbGljYXRlKQorCXsK KwkJYm9vbAlzZWVuX2FsaXZlID0gZmFsc2UsCisJCQkJcHJldl90ZXN0ZWQgPSBmYWxzZTsKKwkJ SW5kZXhUdXBsZSBwcmV2ID0gTlVMTDsKKwkJVHVwbGVUYWJsZVNsb3QgCQkqc2xvdCA9IE1ha2VT aW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHdzdGF0ZS0+aGVhcCksCisJCQkJ CQkJCQkJCQkJCQkgICAmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKKwkJSW5kZXhGZXRjaFRhYmxl RGF0YSAqZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbih3c3RhdGUtPmhlYXApOworCisJ CUFzc2VydChidHNwb29sLT5pc3VuaXF1ZSk7CisJCUFzc2VydCghYnRzcG9vbDIpOworCisJCXdo aWxlICgoaXR1cCA9IHR1cGxlc29ydF9nZXRpbmRleHR1cGxlKGJ0c3Bvb2wtPnNvcnRzdGF0ZSwg dHJ1ZSkpICE9IE5VTEwpCisJCXsKKwkJCWJvb2wJdHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJ CS8qIFdoZW4gd2Ugc2VlIGZpcnN0IHR1cGxlLCBjcmVhdGUgZmlyc3QgaW5kZXggcGFnZSAqLwor CQkJaWYgKHN0YXRlID09IE5VTEwpCisJCQkJc3RhdGUgPSBfYnRfcGFnZXN0YXRlKHdzdGF0ZSwg MCk7CisKKwkJCWlmIChwcmV2ICE9IE5VTEwpIC8qIGlmIGlzIG5vdCB0aGUgZmlyc3QgdHVwbGUg Ki8KKwkJCXsKKwkJCQlib29sCWhhc19udWxscyA9IGZhbHNlLAorCQkJCQkJY2FsbF9hZ2Fpbiwg LyoganVzdCB0byBwYXNzIHNvbWV0aGluZyAqLworCQkJCQkJaWdub3JlZCwgIC8qIGp1c3QgdG8g cGFzcyBzb21ldGhpbmcgKi8KKwkJCQkJCW5vd19hbGl2ZTsKKwkJCQlJdGVtUG9pbnRlckRhdGEg dGlkOworCisJCQkJLyogaWYgdGhpcyB0dXBsZXMgZXF1YWwgdG8gcHJldmlvdXNlIG9uZT8gKi8K KwkJCQlpZiAod3N0YXRlLT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UpCisJCQkJCXR1cGxlc19lcXVh bCA9IF9idF9rZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgcHJldiwgaXR1cCwgJmhhc19u dWxscykgPiBrZXlzejsKKwkJCQllbHNlCisJCQkJCXR1cGxlc19lcXVhbCA9IF9idF9rZWVwX25h dHRzKHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsd3N0YXRlLT5pbnNrZXksICZoYXNfbnVsbHMp ID4ga2V5c3o7CisKKwkJCQkvKiBoYW5kbGUgbnVsbCB2YWx1ZXMgY29ycmVjdGx5ICovCisJCQkJ aWYgKGhhc19udWxscyAmJiAhYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0KQorCQkJCQl0dXBs ZXNfZXF1YWwgPSBmYWxzZTsKKworCQkJCWlmICh0dXBsZXNfZXF1YWwpCisJCQkJeworCQkJCQkv KiBjaGVjayBwcmV2aW91cyB0dXBsZSBpZiBub3QgeWV0ICovCisJCQkJCWlmICghcHJldl90ZXN0 ZWQpCisJCQkJCXsKKwkJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsKKwkJCQkJCXRpZCA9IHByZXYt PnRfdGlkOworCQkJCQkJc2Vlbl9hbGl2ZSA9IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNo LCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLCAmaWdub3JlZCk7CisJCQkJ CQlwcmV2X3Rlc3RlZCA9IHRydWU7CisJCQkJCX0KKworCQkJCQljYWxsX2FnYWluID0gZmFsc2U7 CisJCQkJCXRpZCA9IGl0dXAtPnRfdGlkOworCQkJCQlub3dfYWxpdmUgPSB0YWJsZV9pbmRleF9m ZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2Fpbiwg Jmlnbm9yZWQpOworCisJCQkJCS8qIGFyZSBtdWx0aXBsZSBhbGl2ZSB0dXBsZXMgZGV0ZWN0ZWQg aW4gZXF1YWwgZ3JvdXA/ICovCisJCQkJCWlmIChzZWVuX2FsaXZlICYmIG5vd19hbGl2ZSkKKwkJ CQkJeworCQkJCQkJY2hhciAqa2V5X2Rlc2M7CisJCQkJCQlUdXBsZURlc2MgdHVwRGVzID0gUmVs YXRpb25HZXREZXNjcih3c3RhdGUtPmluZGV4KTsKKwkJCQkJCWJvb2wgaXNudWxsW0lOREVYX01B WF9LRVlTXTsKKwkJCQkJCURhdHVtIHZhbHVlc1tJTkRFWF9NQVhfS0VZU107CisKKwkJCQkJCWlu ZGV4X2RlZm9ybV90dXBsZShpdHVwLCB0dXBEZXMsIHZhbHVlcywgaXNudWxsKTsKKworCQkJCQkJ a2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlwdGlvbih3c3RhdGUtPmluZGV4LCB2YWx1 ZXMsIGlzbnVsbCk7CisKKwkJCQkJCS8qIGtlZXAgdGhpcyBtZXNzYWdlIGluIHN5bmMgd2l0aCB0 aGUgc2FtZSBpbiBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrICovCisJCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAor CQkJCQkJCQkJCWVycm1zZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwK KwkJCQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUod3N0YXRlLT5pbmRleCkpLAor CQkJCQkJCQkJCWtleV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBr ZXlfZGVzYykgOgorCQkJCQkJCQkJCWVycmRldGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiks CisJCQkJCQkJCQkJZXJydGFibGVjb25zdHJhaW50KHdzdGF0ZS0+aGVhcCwKKwkJCQkJCQkJCQkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUod3N0YXRlLT5pbmRleCkpKSk7CisJCQkJCX0K KwkJCQkJc2Vlbl9hbGl2ZSB8PSBub3dfYWxpdmU7CisJCQkJfQorCQkJfQorCisJCQlpZiAoIXR1 cGxlc19lcXVhbCkKKwkJCXsKKwkJCQlzZWVuX2FsaXZlID0gZmFsc2U7CisJCQkJcHJldl90ZXN0 ZWQgPSBmYWxzZTsKKwkJCX0KKworCQkJX2J0X2J1aWxkYWRkKHdzdGF0ZSwgc3RhdGUsIGl0dXAs IDApOworCQkJaWYgKHByZXYpIHBmcmVlKHByZXYpOworCQkJcHJldiA9IENvcHlJbmRleFR1cGxl KGl0dXApOworCisJCQkvKiBSZXBvcnQgcHJvZ3Jlc3MgKi8KKwkJCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19ET05FLAorCQkJCQkJCQkJCSAr K3R1cGxlc19kb25lKTsKKwkJfQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3Qp OworCQl0YWJsZV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCX0KKwllbHNlIGlmIChtZXJnZSkK IAl7CiAJCS8qCiAJCSAqIEFub3RoZXIgQlRTcG9vbCBmb3IgZGVhZCB0dXBsZXMgZXhpc3RzLiBO b3cgd2UgaGF2ZSB0byBtZXJnZQpAQCAtMTMxNCw3ICsxNDI1LDcgQEAgX2J0X2xvYWQoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCQkJ CQkJCQkJCUludmFsaWRPZmZzZXROdW1iZXIpOwogCQkJfQogCQkJZWxzZSBpZiAoX2J0X2tlZXBf bmF0dHNfZmFzdCh3c3RhdGUtPmluZGV4LCBkc3RhdGUtPmJhc2UsCi0JCQkJCQkJCQkJIGl0dXAp ID4ga2V5c3ogJiYKKwkJCQkJCQkJCQkgaXR1cCwgTlVMTCkgPiBrZXlzeiAmJgogCQkJCQkgX2J0 X2RlZHVwX3NhdmVfaHRpZChkc3RhdGUsIGl0dXApKQogCQkJewogCQkJCS8qCkBAIC0xNDExLDcg KzE1MjIsNiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdl OwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90ID0gdHJ1ZTsKLQlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlib29sCQl3YWl0 X2Zvcl9zbmFwc2hvdF9hdHRhY2g7CiAJaW50CQkJcXVlcnlsZW47CiAKQEAgLTE0MzAsMjEgKzE1 NDAsMTIgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxl YWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAotICAgIC8qCi0JICog Rm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2Fs bHkgcmVzZXQgc25hcHNob3RzCi0JICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZh bmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0Ci0JICogcmVxdWlyZSBh IGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBz dGlsbCBuZWVkCi0JICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlx dWVuZXNzIGNvbnN0cmFpbnRzLgotICAgICAqLwotCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJy ZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKLQogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBv ZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkg KiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8g b3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBS RUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFr ZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUg YWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBlcmlv ZGljYWxseSBpbgotCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KKwkgKiBsaXZlIGFjY29y ZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2Fs bHkuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCiAJewpAQCAtMTQ1MiwxNiArMTU1MywxNiBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRf cG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KLQllbHNlIGlmIChyZXNldF9zbmFwc2hv dCkKKwllbHNlCiAJeworCQkvKgorCQkgKiBGb3IgY29uY3VycmVudCBpbmRleCBidWlsZHMsIHdl IGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzIHRvIGFsbG93CisJCSAqIHRoZSB4bWlu IGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24n dAorCQkgKiByZXF1aXJlIGEgY29uc2lzdGVudCB2aWV3IGFjcm9zcyB0aGUgZW50aXJlIHNjYW4u CisJCSAqLwogCQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsKIAkJUHVzaEFjdGl2ZVNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJfQotCWVsc2UKLQl7Ci0JCXNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0 aXZlU25hcHNob3Qoc25hcHNob3QpOwotCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Ig b3VyIG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNTMx LDYgKzE2MzIsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmluZGV4cmVsaWQg PSBSZWxhdGlvbkdldFJlbGlkKGJ0c3Bvb2wtPmluZGV4KTsKIAlidHNoYXJlZC0+aXN1bmlxdWUg PSBidHNwb29sLT5pc3VuaXF1ZTsKIAlidHNoYXJlZC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnRz cG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVk ID0gYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAlidHNoYXJlZC0+aXNjb25jdXJyZW50 ID0gaXNjb25jdXJyZW50OwogCWJ0c2hhcmVkLT5zY2FudHVwbGVzb3J0c3RhdGVzID0gc2NhbnR1 cGxlc29ydHN0YXRlczsKIAlidHNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlf aWQoKTsKQEAgLTE1NDUsNyArMTY0Nyw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShidHNwb29sLT5oZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVs VGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKSwKIAkJCQkJCQkJICBzbmFwc2hvdCwKLQkJ CQkJCQkJICByZXNldF9zbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8q CiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2Ug cmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjI2LDcgKzE3MjgsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwo QlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3Qp CiAJICogSW4gY2FzZSB3aGVuIGxlYWRlciBnb2luZyB0byByZXNldCBvd24gYWN0aXZlIHNuYXBz aG90IGFzIHdlbGwgLSB3ZSBuZWVkIHRvCiAJICogd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBv cnRlZCBpbml0aWFsIHNuYXBzaG90LgogCSAqLwotCXdhaXRfZm9yX3NuYXBzaG90X2F0dGFjaCA9 IHJlc2V0X3NuYXBzaG90ICYmIGxlYWRlcnBhcnRpY2lwYXRlczsKKwl3YWl0X2Zvcl9zbmFwc2hv dF9hdHRhY2ggPSBpc2NvbmN1cnJlbnQgJiYgbGVhZGVycGFydGljaXBhdGVzOwogCiAJaWYgKHdh aXRfZm9yX3NuYXBzaG90X2F0dGFjaCkKIAkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNo KHBjeHQsIHRydWUpOwpAQCAtMTc0Miw2ICsxODQ0LDcgQEAgX2J0X2xlYWRlcl9wYXJ0aWNpcGF0 ZV9hc193b3JrZXIoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRlcndvcmtlci0+aW5k ZXggPSBidWlsZHN0YXRlLT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2VyLT5pc3VuaXF1ZSA9 IGJ1aWxkc3RhdGUtPnNwb29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXItPm51bGxzX25vdF9k aXN0aW5jdCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGluY3Q7CisJbGVhZGVy d29ya2VyLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPnVuaXF1ZV9k ZWFkX2lnbm9yZWQ7CiAKIAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwgaWYgcmVxdWlyZWQg Ki8KIAlpZiAoIWJ0bGVhZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0xODQ1LDExICsxOTQ4 LDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2Mg KnRvYykKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0g YnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hh cmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9 IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1cCBzaGFyZWQgc3Rh dGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBzaG1fdG9jX2xvb2t1 cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBsZXNvcnRfYXR0YWNo X3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlKQorCWlm ICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQpCiAJewogCQli dHNwb29sMiA9IE5VTEw7CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5MjgsNiArMjAzMiw3 IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wg KmJ0c3Bvb2wyLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJCQkJCQkJCQkJCQkg YnRzcG9vbC0+aXN1bmlxdWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0 aW5jdCwKKwkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJ CQkJCQkJCQkgc29ydG1lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkgVFVQTEVTT1JUX05P TkUpOwogCkBAIC0xOTUwLDE0ICsyMDU1LDEyIEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0 KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29yZGluYXRlMi0+blBh cnRpY2lwYW50cyA9IC0xOwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQy OwogCQlidHNwb29sMi0+c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJl ZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNlLAorCQkJdHVwbGVz b3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBmYWxz ZSwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3JrX21lbSksIGNvb3Jk aW5hdGUyLAogCQkJCQkJCQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGluIGJ1aWxkc3RhdGUg Zm9yIF9idF9idWlsZF9jYWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGJ0c2hh cmVkLT5pc3VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVk LT5udWxsc19ub3RfZGlzdGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZhbHNlOwogCWJ1 aWxkc3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IGJ0c3Bv b2w7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5kZXggMWY0MGQ0MDI2 M2UuLmUyZWQ0NTM3MDI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNwbGl0bG9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5j CkBAIC02ODcsNyArNjg3LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5kU3BsaXREYXRhICpz dGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQo c3RhdGUtPm9yaWdwYWdlLCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0 ZW0oc3RhdGUtPm9yaWdwYWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0 c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlrZWVwbmF0dHMgPSBf YnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0sIE5VTEwp OwogCiAJCWlmIChrZWVwbmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAkJewpA QCAtNzE4LDcgKzcxOCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3Rh dGUsIE9mZnNldE51bWJlciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlkKCZ0dXAtPnRfdGlk LCAmc3RhdGUtPm5ld2l0ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwogCS8qIENoZWNrIHNh bWUgY29uZGl0aW9ucyBhcyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8KLQlrZWVwbmF0dHMg PSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOwor CWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+ bmV3aXRlbSwgTlVMTCk7CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtl eWF0dHMpCiAJewpAQCAtOTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRh ICpzdGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBwZW5kaW5nIGEgaGVh cCBUSUQgaW4gbmV3IGhpZ2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNwbGl0CiAJICogd2l0 aCBkZWZhdWx0IHN0cmF0ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFsLgogCSAqLwotCXBl cmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwg cmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUt PnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9 IGluZG5rZXlhdHRzKQogCQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAgLTk4OCw3ICs5ODgs NyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRw YWdlLAogCSAqIElmIHBhZ2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNhdGVzLCBhIHNpbmds ZSB2YWx1ZSBzdHJhdGVneSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVkLgogCSAqLwotCXBl cmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwg cmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUt PnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9 IGluZG5rZXlhdHRzKQogCXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9EVVBMSUNBVEVTOwpA QCAtMTAyNyw3ICsxMDI3LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBT cGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3Jp Z3BhZ2UsIFBfSElLRVkpOwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0 ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNf ZmFzdChzdGF0ZS0+cmVsLCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtKTsKKwkJ CQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZlY3RwZW5hbHR5IDw9 IGluZG5rZXlhdHRzKQogCQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZBTFVFOwogCQllbHNl CkBAIC0xMTQ5LDcgKzExNDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5kU3BsaXREYXRhICpz dGF0ZSwgU3BsaXRQb2ludCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3BsaXRfbGFzdGxlZnQo c3RhdGUsIHNwbGl0KTsKIAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0cmlnaHQoc3RhdGUs IHNwbGl0KTsKIAotCXJldHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3Rs ZWZ0LCBmaXJzdHJpZ2h0KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHV0aWxzLmMKaW5kZXggNTBjYmYwNmNiNDUuLjNkNmRkYTRhY2U4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC0xMDAsOCArMTAwLDYgQEAgc3RhdGljIGJvb2wg X2J0X2NoZWNrX3Jvd2NvbXBhcmUoU2NhbktleSBza2V5LAogCQkJCQkJCQkgU2NhbkRpcmVjdGlv biBkaXIsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRfY2hlY2trZXlzX2xv b2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0YXRpYyBpbnQJX2J0 X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAotCQkJCQkJICAg SW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOwogCiAKIC8qCkBA IC00NjcyLDcgKzQ2NzAsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxl IGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFCVHJlZVR1cGxlSXNQ aXZvdChsYXN0bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmlnaHQpKTsKIAogCS8q IERldGVybWluZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBpbiB0cnVuY2F0ZWQg dHVwbGUgKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0LCBmaXJz dHJpZ2h0LCBpdHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVsLCBsYXN0 bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYgREVCVUdfTk9fVFJV TkNBVEUKIAkvKiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZlIGZvciB0ZXN0aW5n IHB1cnBvc2VzICovCkBAIC00NzkwLDE3ICs0Nzg4LDI0IEBAIF9idF90cnVuY2F0ZShSZWxhdGlv biByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKIC8qCiAg KiBfYnRfa2VlcF9uYXR0cyAtIGhvdyBtYW55IGtleSBhdHRyaWJ1dGVzIHRvIGtlZXAgd2hlbiB0 cnVuY2F0aW5nLgogICoKKyAqIFRoaXMgaXMgZXhwb3J0ZWQgdG8gYmUgdXNlZCBhcyBjb21wYXJp c29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJyZW50CisgKiB1bmlxdWUgaW5kZXggYnVpbGQgaW4g Y2FzZSBfYnRfa2VlcF9uYXR0c19mYXN0IGlzIG5vdCBzdWl0YWJsZSBiZWNhdXNlCisgKiBjb2xs YXRpb24gaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUuCisgKgogICog Q2FsbGVyIHByb3ZpZGVzIHR3byB0dXBsZXMgdGhhdCBlbmNsb3NlIGEgc3BsaXQgcG9pbnQuICBD YWxsZXIncyBpbnNlcnRpb24KICAqIHNjYW5rZXkgaXMgdXNlZCB0byBjb21wYXJlIHRoZSB0dXBs ZXM7IHRoZSBzY2Fua2V5J3MgYXJndW1lbnQgdmFsdWVzIGFyZQogICogbm90IGNvbnNpZGVyZWQg aGVyZS4KICAqCisgKiBoYXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBu dWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUuCisgKgogICogVGhpcyBjYW4gcmV0dXJuIGEgbnVtYmVy IG9mIGF0dHJpYnV0ZXMgdGhhdCBpcyBvbmUgZ3JlYXRlciB0aGFuIHRoZQogICogbnVtYmVyIG9m IGtleSBhdHRyaWJ1dGVzIGZvciB0aGUgaW5kZXggcmVsYXRpb24uICBUaGlzIGluZGljYXRlcyB0 aGF0IHRoZQogICogY2FsbGVyIG11c3QgdXNlIGEgaGVhcCBUSUQgYXMgYSB1bmlxdWUtaWZpZXIg aW4gbmV3IHBpdm90IHR1cGxlLgogICovCi1zdGF0aWMgaW50CitpbnQKIF9idF9rZWVwX25hdHRz KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0 LAotCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KQorCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBf a2V5LAorCQkJICAgYm9vbCAqaGFzbnVsbHMpCiB7CiAJaW50CQkJbmtleWF0dHMgPSBJbmRleFJl bGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CiAJVHVwbGVEZXNjCWl0dXBkZXNj ID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwpAQCAtNDgyNiw2ICs0ODMxLDggQEAgX2J0X2tlZXBf bmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0 cmlnaHQsCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwgYXR0bnVtLCBpdHVw ZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZpcnN0cmlnaHQsIGF0 dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQorCQkJKCpoYXNudWxs cykgfD0gKGlzTnVsbDEgfHwgaXNOdWxsMik7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikK IAkJCWJyZWFrOwpAQCAtNDg0NSw3ICs0ODUyLDcgQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24g cmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJICogZXhw ZWN0ZWQgaW4gYW4gYWxsZXF1YWxpbWFnZSBpbmRleC4KIAkgKi8KIAlBc3NlcnQoIWl0dXBfa2V5 LT5hbGxlcXVhbGltYWdlIHx8Ci0JCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0 KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpKTsKKwkJICAga2VlcG5hdHRzID09IF9idF9rZWVw X25hdHRzX2Zhc3QocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCkpOwogCiAJcmV0dXJu IGtlZXBuYXR0czsKIH0KQEAgLTQ4NTYsNyArNDg2Myw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICog VGhpcyBpcyBleHBvcnRlZCBzbyB0aGF0IGEgY2FuZGlkYXRlIHNwbGl0IHBvaW50IGNhbiBoYXZl IGl0cyBlZmZlY3Qgb24KICAqIHN1ZmZpeCB0cnVuY2F0aW9uIGluZXhwZW5zaXZlbHkgZXZhbHVh dGVkIGFoZWFkIG9mIHRpbWUgd2hlbiBmaW5kaW5nIGEKICAqIHNwbGl0IGxvY2F0aW9uLiAgQSBu YWl2ZSBiaXR3aXNlIGFwcHJvYWNoIHRvIGRhdHVtIGNvbXBhcmlzb25zIGlzIHVzZWQgdG8KLSAq IHNhdmUgY3ljbGVzLgorICogc2F2ZSBjeWNsZXMuIEFsc28sIGl0IG1heSBiZSB1c2VkIGFzIGNv bXBhcmlzb24gZnVuY3Rpb24gZHVyaW5nIGNvbmN1cnJlbnQKKyAqIGJ1aWxkIG9mIHVuaXF1ZSBp bmRleC4KICAqCiAgKiBUaGUgYXBwcm9hY2ggdGFrZW4gaGVyZSB1c3VhbGx5IHByb3ZpZGVzIHRo ZSBzYW1lIGFuc3dlciBhcyBfYnRfa2VlcF9uYXR0cwogICogd2lsbCAoZm9yIHRoZSBzYW1lIHBh aXIgb2YgdHVwbGVzIGZyb20gYSBoZWFwa2V5c3BhY2UgaW5kZXgpLCBzaW5jZSB0aGUKQEAgLTQ4 NjUsNiArNDg3Myw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogImVxdWFsIGltYWdlIiBjb2x1bW5z LCByb3V0aW5lIGlzIGd1YXJhbnRlZWQgdG8gZ2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMKICAqIF9i dF9rZWVwX25hdHRzIHdvdWxkLgogICoKKyAqIGhhc251bGxzIHZhbHVlIHNldCB0byB0cnVlIGlu IGNhc2Ugb2YgYW55IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4KKyAqCiAgKiBDYWxsZXJzIGNh biByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYXR0cmlidXRlcyBjb25zaWRlcmVkIGVxdWFsIGhlcmUg YXJlCiAgKiBkZWZpbml0ZWx5IGFsc28gZXF1YWwgYWNjb3JkaW5nIHRvIF9idF9rZWVwX25hdHRz LCBldmVuIHdoZW4gdGhlIGluZGV4IHVzZXMKICAqIGFuIG9wY2xhc3Mgb3IgY29sbGF0aW9uIHRo YXQgaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUuCkBAIC00ODczLDcg KzQ4ODMsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxl ZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIG1vcmUgYmFsYW5jZWQgc3BsaXQgcG9pbnQu CiAgKi8KIGludAotX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUg bGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKK19idF9rZWVwX25hdHRzX2Zhc3QoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCisJ CQkJCWJvb2wgKmhhc251bGxzKQogewogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0 RGVzY3IocmVsKTsKIAlpbnQJCQlrZXlzeiA9IEluZGV4UmVsYXRpb25HZXROdW1iZXJPZktleUF0 dHJpYnV0ZXMocmVsKTsKQEAgLTQ4OTAsNiArNDkwMSw4IEBAIF9idF9rZWVwX25hdHRzX2Zhc3Qo UmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQp CiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwgYXR0bnVtLCBpdHVwZGVzYywg JmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZpcnN0cmlnaHQsIGF0dG51bSwg aXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQorCQkJKmhhc251bGxzIHw9IChp c051bGwxIHwgaXNOdWxsMik7CiAJCWF0dCA9IFR1cGxlRGVzY0F0dHIoaXR1cGRlc2MsIGF0dG51 bSAtIDEpOwogCiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXgg ZjQ0NjRmNjQ3ODkuLjRlZWM1NTI1OTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0xNTMwLDcgKzE1 MzAsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCiAJ LyogSW52YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2VydCAqLwogCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFu Z2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwg c2F2ZV9uZXN0bGV2ZWwpOwpAQCAtMzI5Miw5ICszMjkyLDkgQEAgSW5kZXhDaGVja0V4Y2x1c2lv bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKICAqIGRvZXMgbm90 IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhl IGluZGV4LgogICoKLSAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXgg d2Ugc2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUKLSAqIHNjYW4sIHdoaWNoIGNhdXNlcyBu ZXcgc25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNv bgotICogZm9yIHRoYXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9yd2FyZC4K KyAqIEZ1cnRoZXJtb3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZSBzY2FuLCB3 aGljaCBjYXVzZXMgbmV3CisgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNv IG9mdGVuLiBUaGUgcmVhc29uICBmb3IgdGhhdCBpcyB0bworICogcHJvcGFnYXRlIHRoZSB4bWlu IGhvcml6b24gZm9yd2FyZC4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNy ZWFkeSIgKGJ1dCBzdGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKICAqIGNvbW1pdCB0aGUgc2Vj b25kIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDZjMWZjZThlZDI1Li5hMDI3Mjk5MTFmZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2NzAsOCArMTY3MCw4IEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUgbmV3 IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUgZGlmZmVyZW50 IGluZGV4IGtleXMuCiAJICoKLQkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxl cyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNpbmdsZSBvcgotCSAqIG11bHRpcGxlIHJlZnJlc2hp bmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bworCSAq IFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNp bmcgbXVsdGlwbGUKKwkgKiByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhh dCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxl IHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICogYnkgdHJhbnNhY3Rp b25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cgY29tbWl0dGVkIG9y CiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUgaXMgZWl0aGVyIHRo ZSBlbmQgb2YgaXRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dHZhcmlhbnRzLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMK aW5kZXggZTA3YmE0ZWE0YjEuLmFhNGZjYWFjOWEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29y dC90dXBsZXNvcnR2YXJpYW50cy5jCkBAIC0xMjMsNiArMTIzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QK IAogCWJvb2wJCWVuZm9yY2VVbmlxdWU7CS8qIGNvbXBsYWluIGlmIHdlIGZpbmQgZHVwbGljYXRl IHR1cGxlcyAqLwogCWJvb2wJCXVuaXF1ZU51bGxzTm90RGlzdGluY3Q7IC8qIHVuaXF1ZSBjb25z dHJhaW50IG51bGwgdHJlYXRtZW50ICovCisJYm9vbAkJdW5pcXVlRGVhZElnbm9yZWQ7IC8qIGln bm9yZSBkZWFkIHR1cGxlcyBpbiB1bmlxdWUgY2hlY2sgKi8KIH0gVHVwbGVzb3J0SW5kZXhCVHJl ZUFyZzsKIAogLyoKQEAgLTM0OSw2ICszNTAsNyBAQCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRy ZWUoUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJCQlSZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQli b29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJYm9vbCB1bmlxdWVOdWxsc05vdERpc3RpbmN0LAor CQkJCQkJCWJvb2wgdW5pcXVlRGVhZElnbm9yZWQsCiAJCQkJCQkJaW50IHdvcmtNZW0sCiAJCQkJ CQkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQlpbnQgc29ydG9wdCkKQEAgLTM5 MSw2ICszOTMsNyBAQCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJl bCwKIAlhcmctPmluZGV4LmluZGV4UmVsID0gaW5kZXhSZWw7CiAJYXJnLT5lbmZvcmNlVW5pcXVl ID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVO dWxsc05vdERpc3RpbmN0OworCWFyZy0+dW5pcXVlRGVhZElnbm9yZWQgPSB1bmlxdWVEZWFkSWdu b3JlZDsKIAogCWluZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXkoaW5kZXhSZWwsIE5VTEwpOwog CkBAIC0xNTIwLDYgKzE1MjMsNyBAQCBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNv bnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1cGxlICpiLAogCQlEYXR1bQkJdmFsdWVzW0lO REVYX01BWF9LRVlTXTsKIAkJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKIAkJY2hhcgkg ICAqa2V5X2Rlc2M7CisJCWJvb2wJCXVuaXF1ZUNoZWNrRmFpbCA9IHRydWU7CiAKIAkJLyoKIAkJ ICogU29tZSByYXRoZXIgYnJhaW4tZGVhZCBpbXBsZW1lbnRhdGlvbnMgb2YgcXNvcnQgKHN1Y2gg YXMgdGhlIG9uZSBpbgpAQCAtMTUyOSwxOCArMTUzMyw1NyBAQCBjb21wYXJldHVwX2luZGV4X2J0 cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1cGxlICpiLAogCQkg Ki8KIAkJQXNzZXJ0KHR1cGxlMSAhPSB0dXBsZTIpOwogCi0JCWluZGV4X2RlZm9ybV90dXBsZSh0 dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251bGwpOwotCi0JCWtleV9kZXNjID0gQnVpbGRJbmRl eFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOwot Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAot CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpLAotCQkJ CSBrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2Mp IDoKLQkJCQkgZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKLQkJCQkgZXJydGFi bGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJlbCwKLQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSkpOworCQkvKiBUaGlzIGlzIGZhaWwtZmFz dCBjaGVjaywgc2VlIF9idF9sb2FkIGZvciBkZXRhaWxzLiAqLworCQlpZiAoYXJnLT51bmlxdWVE ZWFkSWdub3JlZCkKKwkJeworCQkJYm9vbAlhbnlfdHVwbGVfZGVhZCwKKwkJCQkJY2FsbF9hZ2Fp biA9IGZhbHNlLAorCQkJCQlpZ25vcmVkOworCisJCQlUdXBsZVRhYmxlU2xvdAkqc2xvdCA9IE1h a2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGFyZy0+aW5kZXguaGVhcFJl bCksCisJCQkJCQkJCQkJCQkJCQkgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCQlJdGVtUG9p bnRlckRhdGEgdGlkID0gdHVwbGUxLT50X3RpZDsKKworCQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAq ZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihhcmctPmluZGV4LmhlYXBSZWwpOworCQkJ YW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNu YXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJaWYgKCFhbnlf dHVwbGVfZGVhZCkKKwkJCXsKKwkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJdGlkID0gdHVw bGUyLT50X3RpZDsKKwkJCQlhbnlfdHVwbGVfZGVhZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBs ZShmZXRjaCwgJnR1cGxlMi0+dF90aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4s CisJCQkJCQkJCQkJCQkJCSAgJmlnbm9yZWQpOworCQkJfQorCisJCQlpZiAoYW55X3R1cGxlX2Rl YWQpCisJCQl7CisJCQkJZWxvZyhERUJVRzUsICJza2lwcGluZyBkdXBsaWNhdGUgdmFsdWVzIGJl Y2F1c2Ugc29tZSBvZiB0aGVtIGFyZSBkZWFkOiAoJXUsJXUpIHZzICgldSwldSkiLAorCQkJCQkg SXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUxLT50X3RpZCksCisJCQkJCSBJdGVtUG9p bnRlckdldE9mZnNldE51bWJlcigmdHVwbGUxLT50X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdl dEJsb2NrTnVtYmVyKCZ0dXBsZTItPnRfdGlkKSwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKCZ0dXBsZTItPnRfdGlkKSk7CisKKwkJCQl1bmlxdWVDaGVja0ZhaWwgPSBmYWxzZTsK KwkJCX0KKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCQl0YWJsZV9p bmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCQl9CisJCWlmICh1bmlxdWVDaGVja0ZhaWwpCisJCXsK KwkJCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251bGwpOwor CisJCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+aW5kZXguaW5k ZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKKworCQkJLyoga2VlcCB0aGlzIGVycm9yIG1lc3NhZ2Ug aW4gc3luYyB3aXRoIHRoZSBzYW1lIGluIF9idF9sb2FkICovCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAorCQkJCQkJCWVycm1zZygi Y291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKKwkJCQkJCQkJICAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpLAorCQkJCQkJCWtleV9kZXNj ID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVzYykgOgorCQkJCQkJ CWVycmRldGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCisJCQkJCQkJZXJydGFibGVjb25z dHJhaW50KGFyZy0+aW5kZXguaGVhcFJlbCwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25i dHJlZS5oCmluZGV4IDEyM2ZiYTYyNGRiLi40MjAwZDJiZDIwZSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHJlZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApA QCAtMTI5Nyw4ICsxMjk3LDEwIEBAIGV4dGVybiBib29sIGJ0cHJvcGVydHkoT2lkIGluZGV4X29p ZCwgaW50IGF0dG5vLAogZXh0ZXJuIGNoYXIgKmJ0YnVpbGRwaGFzZW5hbWUoaW50NjQgcGhhc2Vu dW0pOwogZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhU dXBsZSBsYXN0bGVmdCwKIAkJCQkJCQkgICBJbmRleFR1cGxlIGZpcnN0cmlnaHQsIEJUU2Nhbklu c2VydCBpdHVwX2tleSk7CitleHRlcm4gaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQkJICAgQlRT Y2FuSW5zZXJ0IGl0dXBfa2V5LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gaW50CV9idF9rZWVw X25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAotCQkJCQkJCQlJ bmRleFR1cGxlIGZpcnN0cmlnaHQpOworCQkJCQkJCQlJbmRleFR1cGxlIGZpcnN0cmlnaHQsIGJv b2wgKmhhc251bGxzKTsKIGV4dGVybiBib29sIF9idF9jaGVja19uYXR0cyhSZWxhdGlvbiByZWws IGJvb2wgaGVhcGtleXNwYWNlLCBQYWdlIHBhZ2UsCiAJCQkJCQkJT2Zmc2V0TnVtYmVyIG9mZm51 bSk7CiBleHRlcm4gdm9pZCBfYnRfY2hlY2tfdGhpcmRfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXAsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA5ZWU1ZWExNWZkNC4uZWMzNzY5NTg1YzMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTgwMyw5ICsxODAzLDggQEAgdGFibGVfc2Nhbl9hbmFs eXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdo dCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAq IEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50ICBpbmRleCBidWlsZCBTT19SRVNFVF9T TkFQU0hPVCBpcyBhcHBsaWVkCi0gKiBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5n aW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KLSAqIGhvcml6b24gcHJvcGFn YXRlLgorICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBT SE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLgorICogVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcg c25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAq Lwogc3RhdGljIGlubGluZSBkb3VibGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oUmVsYXRpb24g dGFibGVfcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggYi9z cmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCBjZGU4M2Y2MjAxNS4uYWU1ZjRkMjhm ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCkBAIC00MjgsNiArNDI4LDcgQEAgZXh0ZXJuIFR1cGxl c29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwK IAkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJCQkJCQkJICAgYm9vbCBl bmZvcmNlVW5pcXVlLAogCQkJCQkJCQkJCQkJICAgYm9vbCB1bmlxdWVOdWxsc05vdERpc3RpbmN0 LAorCQkJCQkJCQkJCQkJICAgYm9vbAl1bmlxdWVEZWFkSWdub3JlZCwKIAkJCQkJCQkJCQkJCSAg IGludCB3b3JrTWVtLCBTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCQkJCQkJICAg aW50IHNvcnRvcHQpOwogZXh0ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5k ZXhfaGFzaChSZWxhdGlvbiBoZWFwUmVsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMu b3V0CmluZGV4IDU5NWE0MDAwY2UwLi45ZjAzZmEzMDMzYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0 CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dApAQCAtNDEsNyArNDEsMTEgQEAgRU5EOyAkJDsKIC0tLS0tLS0tLS0t LS0tLS0KIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtl cnM9MCk7CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVz ZXRfc25hcHNob3RzCkBAIC04Niw3ICs5MCw5IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2Rl dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOwogKDEgcm93KQogCiBD UkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQotLSAKMi40My4wCgo= --000000000000a19089062a03c8a5 Content-Type: application/octet-stream; name="v8-0003-Allow-advancing-xmin-during-non-unique-non-parall.patch" Content-Disposition: attachment; filename="v8-0003-Allow-advancing-xmin-during-non-unique-non-parall.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52haugd2 RnJvbSA0NTJlZjcwODlkYjc3OWEwODQyMWExMDg0NTg0YzEzYzU5OWQxMzIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNzo0MToyOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjggMy83 XSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwgbm9uLXBhcmFsbGVsIAog Y29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgcGVyaW9kaWNhbGx5IHJlc2V0dGluZyBzbmFwc2hv dHMKCkxvbmctcnVubmluZyB0cmFuc2FjdGlvbnMgbGlrZSB0aG9zZSB1c2VkIGJ5IENSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggQ09OQ1VSUkVOVExZIGNhbiBob2xkIGJhY2sg dGhlIGdsb2JhbCB4bWluIGhvcml6b24sIHByZXZlbnRpbmcgVkFDVVVNIGZyb20gY2xlYW5pbmcg dXAgZGVhZCB0dXBsZXMgYW5kIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gdHJhbnNhY3Rpb24gSUQg d3JhcGFyb3VuZCBpc3N1ZXMuIEluIFBvc3RncmVTUUwgMTQsIGNvbW1pdCBkOWQwNzYyMjJmNWIg YXR0ZW1wdGVkIHRvIGFsbG93IFZBQ1VVTSB0byBpZ25vcmUgaW5kZXhpbmcgdHJhbnNhY3Rpb25z IHdpdGggQ09OQ1VSUkVOVExZIHRvIG1pdGlnYXRlIHRoaXMgcHJvYmxlbS4gSG93ZXZlciwgdGhp cyB3YXMgcmV2ZXJ0ZWQgaW4gY29tbWl0IGUyOGJiODg1MTk2OSBiZWNhdXNlIGl0IGNvdWxkIGNh dXNlIGluZGV4ZXMgdG8gbWlzcyBoZWFwIHR1cGxlcyB0aGF0IHdlcmUgSE9ULXVwZGF0ZWQgYW5k IEhPVC1wcnVuZWQgZHVyaW5nIHRoZSBpbmRleCBjcmVhdGlvbiwgbGVhZGluZyB0byBpbmRleCBj b3JydXB0aW9uLgoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc2FmZSBhbHRlcm5hdGl2ZSBieSBw ZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyBub24tdW5pcXVl LCBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMuIEJ5IHJlc2V0dGluZyB0aGUg c25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2Nhbiwgd2UgYWxsb3cgdGhl IHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlIHdpdGhvdXQgcmlza2luZyBpbmRleCBjb3JydXB0aW9u LiBUaGlzIGFwcHJvYWNoIGlzIHNhZmUgZm9yIG5vbi11bmlxdWUgaW5kZXggYnVpbGRzIGJlY2F1 c2UgdGhleSBkbyBub3QgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzIHRoYXQgcmVxdWly ZSBhIGNvbnNpc3RlbnQgc25hcHNob3QgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4KCkN1cnJlbnRs eSwgdGhpcyB0ZWNobmlxdWUgaXMgYXBwbGllZCB0bzoKCk5vbi1wYXJhbGxlbCBpbmRleCBidWls ZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYW5kIHdpbGwg YmUgYWRkcmVzc2VkIGluIGEgZnV0dXJlIGNvbW1pdC4KTm9uLXVuaXF1ZSBpbmRleGVzOiBVbmlx dWUgaW5kZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNuYXBzaG90IHRvIGVu Zm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cywgYW5kIHN1cHBvcnQgZm9yIHRoZW0gbWF5IGJl IGFkZGVkIGluIHRoZSBmdXR1cmUuCk9ubHkgZHVyaW5nIHRoZSBmaXJzdCBzY2FuIG9mIHRoZSBo ZWFwOiBUaGUgc2Vjb25kIHNjYW4gZHVyaW5nIGluZGV4IHZhbGlkYXRpb24gc3RpbGwgdXNlcyBh IHNpbmdsZSBzbmFwc2hvdCB0byBlbnN1cmUgaW5kZXggY29ycmVjdG5lc3MuCgpUbyBpbXBsZW1l bnQgdGhpcywgYSBuZXcgc2NhbiBvcHRpb24gU09fUkVTRVRfU05BUFNIT1QgaXMgaW50cm9kdWNl ZC4gV2hlbiBzZXQsIGl0IGNhdXNlcyB0aGUgc25hcHNob3QgdG8gYmUgcmVzZXQgZXZlcnkgU09f UkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgcGFnZXMgZHVyaW5nIHRoZSBzY2FuLiBUaGUgaGVh cCBzY2FuIGNvZGUgaXMgYWRqdXN0ZWQgdG8gc3VwcG9ydCB0aGlzIG9wdGlvbiwgYW5kIHRoZSBp bmRleCBidWlsZCBjb2RlIGlzIG1vZGlmaWVkIHRvIHVzZSBpdCBmb3IgYXBwbGljYWJsZSBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0aGF0IGFyZSBub3Qgb24gc3lzdGVtIGNhdGFsb2dzIGFuZCBu b3QgdXNpbmcgcGFyYWxsZWwgd29ya2Vycy4KClRoaXMgYWRkcmVzc2VzIHRoZSBpc3N1ZXMgdGhh dCBsZWQgdG8gdGhlIHJldmVyc2lvbiBvZiBjb21taXQgZDlkMDc2MjIyZjViLCBwcm92aWRpbmcg YSBzYWZlIHdheSB0byBhbGxvdyB4bWluIGFkdmFuY2VtZW50IGR1cmluZyBsb25nLXJ1bm5pbmcg bm9uLXVuaXF1ZSwgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHdoaWxlIGVu c3VyaW5nIGluZGV4IGNvcnJlY3RuZXNzLgoKUmVncmVzc2lvbiB0ZXN0cyBhcmUgYWRkZWQgdG8g dmVyaWZ5IHRoZSBiZWhhdmlvci4KLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j ICAgICAgICAgICAgICAgfCAgIDMgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUu YyAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAg ICAgICAgICAgICAgIHwgIDE0ICsrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMg ICAgICAgICAgICAgIHwgIDQ2ICsrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jICAgICAgfCAgNTcgKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMTQgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMzAgKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jICAgICAgICAgICAgICB8ICAxNCArLS0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaCAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKystCiBzcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDEwNyArKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSArCiAuLi4vc3Fs L2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgODYgKysrKysrKysrKysr KysKIDE1IGZpbGVzIGNoYW5nZWQsIDM4NCBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhw ZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1j aGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggZmZlNGY3MjE2NzIuLjdmYjA1MmNlM2RlIDEwMDY0 NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1j aGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTY4OSw3ICs2ODksOCBAQCBidF9jaGVja19ldmVyeV9s ZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAog CQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2Nh biBrZXkgKi8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICov Ci0JCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHRydWUsIC8q IHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGZhbHNlKTsKIAogCQkvKgogCQkgKiBTY2FuIHdp bGwgYmVoYXZlIGFzIHRoZSBmaXJzdCBzY2FuIG9mIGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDQ4Y2I4ZjU5YzRmLi5mZjdjYzA3ZGY5 OSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2Nv bnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzMyLDcgKzMzMiw3IEBAIHBnc3Rh dF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQkJIGVycm1z Zygib25seSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkvKiBEaXNhYmxlIHN5bmNzY2Fu IGJlY2F1c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6ZXJvIHVwd2FyZHMgKi8KLQlz Y2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRy dWUsIGZhbHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RB bnksIDAsIE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3REaXJ0eSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKaW5kZXggM2FlZGVjODgyY2QuLmQ2OTg1OWFjNGRmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbi5jCkBAIC0yMzY2LDYgKzIzNjYsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJV2Fs VXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxl YWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJ Q0lQQVRJT04KQEAgLTIzOTEsOSArMjM5MiwxNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ ICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7 CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFu eTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJ CXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwor CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkv KgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVE IHdvcmtzcGFjZS4KQEAgLTI0MzYsNiArMjQ0NCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJy aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFs IGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25h cHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVz dHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTI1MTUsNiArMjUyNSw4IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5j aGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19s YXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9icmluX2VuZF9wYXJhbGxlbChicmlubGVhZGVyLCBOVUxM KTsKIAkJcmV0dXJuOwogCX0KQEAgLTI1MzEsNiArMjU0Myw4IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBo YW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQp OworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGQwMDMwMGM1ZGNiLi4xZmRm ZGY5NjQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNp bmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3BjY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIK IAogCiBzdGF0aWMgSGVhcFR1cGxlIGhlYXBfcHJlcGFyZV9pbnNlcnQoUmVsYXRpb24gcmVsYXRp b24sIEhlYXBUdXBsZSB0dXAsCkBAIC01NjYsNiArNTY3LDM2IEBAIGhlYXBfcHJlcGFyZV9wYWdl c2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9D S19VTkxPQ0spOwogfQogCisvKgorICogUmVzZXQgdGhlIGFjdGl2ZSBzbmFwc2hvdCBkdXJpbmcg YSBzY2FuLgorICogVGhpcyBlbnN1cmVzIHRoZSB4bWluIGhvcml6b24gY2FuIGFkdmFuY2Ugd2hp bGUgbWFpbnRhaW5pbmcgc2FmZSB0dXBsZSB2aXNpYmlsaXR5LgorICogTm90ZTogTm8gb3RoZXIg c25hcHNob3Qgc2hvdWxkIGJlIGFjdGl2ZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uCisgKi8KK3N0 YXRpYyBpbmxpbmUgdm9pZAoraGVhcF9yZXNldF9zY2FuX3NuYXBzaG90KFRhYmxlU2NhbkRlc2Mg c3NjYW4pCit7CisJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0 aXZlLiAqLworCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hv dCk7CisJLyogQW5kIG1ha2Ugc3VyZSBhY3RpdmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQu ICovCisJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJUG9w QWN0aXZlU25hcHNob3QoKTsKKworCXNzY2FuLT5yc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hv dDsgLyoganVzdCBvdCBiZSB0aWR5ICovCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZl U25hcHNob3QoKSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCisJLyogR29hbCBv ZiBzbmFwc2hvdCByZXNldCBpcyB0byBhbGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNU SU9OX1BPSU5UUworCS8qIEluIHNvbWUgY2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1 ZSB4aWQgYXNzaWduLiAqLworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUi KTsKKyNlbmRpZgorCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwor CXNzY2FuLT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBo ZWFwX2ZldGNoX25leHRfYnVmZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20g TUFJTl9GT1JLTlVNLgogICoKQEAgLTYwNyw3ICs2MzgsMTMgQEAgaGVhcF9mZXRjaF9uZXh0X2J1 ZmZlcihIZWFwU2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19j YnVmID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwp OwogCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Js b2NrID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisjZGVmaW5lIFNPX1JF U0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIDY0CisJCWlmICgoc2Nhbi0+cnNfYmFzZS5yc19mbGFn cyAmIFNPX1JFU0VUX1NOQVBTSE9UKSAmJgorCQkJKHNjYW4tPnJzX2NibG9jayAlIFNPX1JFU0VU X1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApKQorCQkJaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 KChUYWJsZVNjYW5EZXNjKSBzY2FuKTsKKwl9CiB9CiAKIC8qCkBAIC0xMjMzLDYgKzEyNzAsMTUg QEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKHNjYW4tPnJzX3BhcmFs bGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJlZShzY2FuLT5yc19wYXJhbGxlbHdvcmtlcmRh dGEpOwogCisJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkK Kwl7CisJCUFzc2VydCghKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9U KSk7CisJCS8qIE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4g Ki8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsK KwkJLyogQW5kIG1ha2Ugc3VyZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwkJQXNz ZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJfQorCiAJaWYgKHNj YW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKQogCQlVbnJlZ2lzdGVyU25h cHNob3Qoc2Nhbi0+cnNfYmFzZS5yc19zbmFwc2hvdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGE4ZDk1ZTBmMWMxLi45ODBjNTFlMzJiOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMTkwLDYgKzExOTAsOCBA QCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ RXhwckNvbnRleHQgKmVjb250ZXh0OwogCVNuYXBzaG90CXNuYXBzaG90OwogCWJvb2wJCW5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCA9IGZhbHNlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCA9IGZhbHNlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90cyA9IGZhbHNlOwogCVRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbjsKIAlCbG9ja051bWJlciBwcmV2aW91c19ibGtubyA9IEludmFsaWRC bG9ja051bWJlcjsKIAlCbG9ja051bWJlciByb290X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVy OwpAQCAtMTIyNCw5ICsxMjI2LDYgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mgc2NhbiB0dXBs ZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVkaWNhdGUsIGlm IGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVk aWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2Ug cmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RB bnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGlt ZQpAQCAtMTIzNiw2ICsxMjM1LDE1IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CiAKKwkvKgorCSAqIEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNu YXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KKwkgKiBJbiBjYXNlIG9mIHBhcmFsbGVsIHNjYW4g c29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJlcXVpcmVkCisJICogdG8gcGVyZm9ybSBz Y2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFkeS4KKwkgKi8K KwlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYKKwkJCQkJICAh aW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKKwkJCQkJICAhaXNfc3lzdGVtX2NhdGFsb2c7IC8qIGp1 c3QgZm9yIHRoZSBjYXNlICovCisKIAkvKiBva2F5IHRvIGlnbm9yZSBsYXp5IFZBQ1VVTXMgaGVy ZSAqLwogCWlmICghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpICYmICFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQpCiAJCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKGhlYXBSZWxhdGlvbik7CkBAIC0xMjQ0LDI0ICsxMjUyLDQxIEBAIGhlYXBhbV9pbmRl eF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAl7CiAJCS8qCiAJCSAq IFNlcmlhbCBpbmRleCBidWlsZC4KLQkJICoKLQkJICogTXVzdCBiZWdpbiBvdXIgb3duIGhlYXAg c2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCi0JCSAqIHJlZ2lzdGVyIGEg c25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgogCQkg Ki8KIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSkKIAkJewotCQkJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JCQlu ZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJc25hcHNob3QgPSBHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCk7CisJCQkvKgorCQkJICogTXVzdCBiZWdpbiBvdXIgb3duIGhlYXAgc2Nh biBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCisJCQkgKiByZWdpc3RlciBhIHNu YXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJvbC4KKwkJCSAq IEluIGNhc2Ugb2YgcmVzZXR0aW5nIG9mIHNuYXBzaG90IGR1cmluZyB0aGUgc2NhbiByZWdpc3Ry YXRpb24gaXMKKwkJCSAqIG5vdCBhbGxvd2VkIGJlY2F1c2Ugc25hcHNob3QgaXMgZ29pbmcgdG8g YmUgY2hhbmdlZCBldmVyeSBzbworCQkJICogb2Z0ZW4uCisJCQkgKi8KKwkJCWlmICghcmVzZXRf c25hcHNob3RzKQorCQkJeworCQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CisJCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCX0KKwkJCUFzc2Vy dCghQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3Qp OworCQkJLyogc3RvcmUgbGluayB0byBzbmFwc2hvdCBiZWNhdXNlIGl0IG1heSBiZSBjb3BpZWQg Ki8KKwkJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwkJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAkJZWxzZQorCQl7CisJCQlBc3NlcnQoIWluZGV4SW5m by0+aWlfQ29uY3VycmVudCk7CiAJCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQl9CiAKIAkJ c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8qIHJlbGF0aW9uICov CiAJCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJCQkgMCwgLyogbnVt YmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJ IHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSBhbGxvd19z eW5jKTsJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgYWxsb3dfc3luYywJLyogc3luY3Nj YW4gT0s/ICovCisJCQkJCQkJCQkgcmVzZXRfc25hcHNob3RzIC8qIHJlc2V0IHNuYXBzaG90cz8g Ki8pOwogCX0KIAllbHNlCiAJewpAQCAtMTI3NSw2ICsxMzAwLDggQEAgaGVhcGFtX2luZGV4X2J1 aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQoIUlzQm9vdHN0 cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJc25hcHNob3Qg PSBzY2FuLT5yc19zbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJ bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAl9CiAKIAloc2NhbiA9IChIZWFwU2Nh bkRlc2MpIHNjYW47CkBAIC0xMjg5LDYgKzEzMTYsMTMgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFw c2hvdEFueSA/IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pIDoKIAkJICAgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKTsKIAlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNo b3RBbnkgfHwgIWFueXZpc2libGUpOworCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8 fCBBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9y IHByZWRpY2F0ZSwgaWYgYW55LiAqLworCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRl eEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkvKiBDbGVhciByZWZlcmVuY2UgdG8gc25h cHNob3Qgc2luY2UgaXQgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIHNjYW4gaXRzZWxmLiAqLworCWlm IChyZXNldF9zbmFwc2hvdHMpCisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OwogCiAJLyog UHVibGlzaCBudW1iZXIgb2YgYmxvY2tzIHRvIHNjYW4gKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0x NzI0LDYgKzE3NTgsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOwogCisJaWYgKG5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkvKiB3ZSBjYW4gbm93IGZv cmdldCBvdXIgc25hcHNob3QsIGlmIHNldCBhbmQgcmVnaXN0ZXJlZCBieSB1cyAqLwogCWlmIChu ZWVkX3VucmVnaXN0ZXJfc25hcHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7 CkBAIC0xNzk2LDcgKzE4MzIsOCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJ CQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mg c3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsJLyogc3luY3NjYW4gbm90IE9LICovCisJ CQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCisJCQkJCQkJCSBmYWxzZSk7CiAJ aHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMK aW5kZXggNGI0ZWJmZjZhMTcuLmExMDRiYTlkZjc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0u YwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCSAqLwogCQlzeXNzY2FuLT5zY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhl YXBSZWxhdGlvbiwgc25hcHNob3QsCiAJCQkJCQkJCQkJCSAgbmtleXMsIGtleSwKLQkJCQkJCQkJ CQkJICB0cnVlLCBmYWxzZSk7CisJCQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAkJ c3lzc2Nhbi0+aXNjYW4gPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQu YwppbmRleCAxN2EzNTJkMDQwYy4uNWM0NTgxYWZiMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jCkBAIC0xNDEwLDYgKzE0MTAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJV2Fs VXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxl YWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJ Q0lQQVRJT04KQEAgLTE0MzUsOSArMTQzNiwxNiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJ CUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQ dXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6 ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBA IC0xNDkxLDYgKzE0OTksOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gRFNNIHNl Z21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAo cGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQor CQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkK IAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRl eHQocGN4dCk7CkBAIC0xNTg1LDYgKzE1OTUsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyog SWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVyKTsKIAkJcmV0dXJuOwogCX0KQEAgLTE2MDEsNiAr MTYxMyw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUt dG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFs bGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3Qp CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggMDVk YzZhZGQ3ZWIuLmUwYWRhNWNlMTU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC03OSw2ICs3OSw3IEBA CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CiAKIC8qIFBvdGVudGlhbGx5IHNldCBieSBwZ191cGdyYWRlX3N1cHBvcnQgZnVuY3Rpb25zICov CiBPaWQJCQliaW5hcnlfdXBncmFkZV9uZXh0X2luZGV4X3BnX2NsYXNzX29pZCA9IEludmFsaWRP aWQ7CkBAIC0xNDkwLDggKzE0OTEsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhl YXBSZWxhdGlvbklkLAogCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5k ZXhJbmZvOwogCi0JLyogVGhpcyBoYWQgYmV0dGVyIG1ha2Ugc3VyZSB0aGF0IGEgc25hcHNob3Qg aXMgYWN0aXZlICovCi0JQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCUFzc2VydCghVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJLyogT3BlbiBhbmQgbG9jayB0aGUgcGFyZW50IGhl YXAgcmVsYXRpb24gKi8KIAloZWFwUmVsID0gdGFibGVfb3BlbihoZWFwUmVsYXRpb25JZCwgU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKQEAgLTE1MDksMTkgKzE1MTAsMjggQEAgaW5kZXhfY29u Y3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAogCWluZGV4UmVsYXRpb24gPSBp bmRleF9vcGVuKGluZGV4UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwkvKiBCdWls ZEluZGV4SW5mbyBtYXkgcmVxdWlyZSBhcyBzbmFwc2hvdCBmb3IgZXhwcmVzc2lvbnMgYW5kIHBy ZWRpY2F0ZXMgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKIAkvKgogCSAqIFdlIGhhdmUgdG8gcmUtYnVpbGQgdGhlIEluZGV4SW5mbyBzdHJ1Y3QsIHNp bmNlIGl0IHdhcyBsb3N0IGluIHRoZQogCSAqIGNvbW1pdCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hl cmUgdGhpcyBjb25jdXJyZW50IGluZGV4IHdhcyBjcmVhdGVkIGF0CiAJICogdGhlIGNhdGFsb2cg bGV2ZWwuCiAJICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7 CisJLyogRG9uZSB3aXRoIHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlBc3Nl cnQoIWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzKTsKIAlpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKKwlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogTm93IGJ1 aWxkIHRoZSBpbmRleCAqLwogCWluZGV4X2J1aWxkKGhlYXBSZWwsIGluZGV4UmVsYXRpb24sIGlu ZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCisJLyogSW52YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90 IGp1c3QgZm9yIGFzc2VydCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3Nl cnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVl KSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAkvKiBSb2xsIGJh Y2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9Y YWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwogCkBAIC0xNTMyLDEyICsxNTQyLDE5IEBA IGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJdGFibGVfY2xv c2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2sp OwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxl IGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLwor CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCiAJICog VXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0aGUgaW5kZXggYXMgcmVhZHkgZm9yIGlu c2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYW55IG5ldyB0cmFu c2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0CiAJICogaW5zZXJ0IG5ldyBlbnRyaWVz IGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFuZCBub24tSE9UIHVwZGF0ZXMuCiAJICov CiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NF VF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0aCBvdXIgc25hcHNob3QgKi8KKwlQb3BB Y3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzIwNSw3ICszMjIyLDggQEAgSW5kZXhDaGVj a0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIg b2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUs CS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIHRydWUpOyAvKiBzeW5j c2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0sgKi8KKwkJCQkJCQkJIGZh bHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2Fu RGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMjY4LDEyICszMjg2LDE2IEBAIEluZGV4Q2hlY2tF eGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRo ZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2NhbiksIHdoZXJlYXMgYSBub3JtYWwKICAq IGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNlbnRseS1kZWFkIHR1cGxlcy4gIFRoaXMg aXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0aGUgaW5kZXggdmFsaWQgdW50aWwgYWxs IHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUKLSAqIHRvIHNlZSB0aG9zZSB0dXBsZXMg YXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0aGF0IGlzIHRvIGF2b2lkCisgKiB0byBz ZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9mIHJlYXNvbnMgZm9yIGRvaW5nIHRoYXQg aXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUgdG8gY29uY3Vy cmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUg c2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwKICAqIGlmIHdl IHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4g aW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0 YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgorICogRnVydGhlcm1vcmUsIGluIGNh c2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZQor ICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2 ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdhdGUgdGhl IHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJp bmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRo ZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZv ciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhl IHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA5 MzI4NTRkNmM2MC4uNmMxZmNlOGVkMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0x NjcwLDIzICsxNjcwLDE3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNoYWlucyBj YW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRo ZQogCSAqIGNoYWluIGhhdmUgZGlmZmVyZW50IGluZGV4IGtleXMuCiAJICoKLQkgKiBXZSBub3cg dGFrZSBhIG5ldyBzbmFwc2hvdCwgYW5kIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVz IHRoYXQKLQkgKiBhcmUgdmlzaWJsZSBpbiB0aGlzIHNuYXBzaG90LiAgV2UgY2FuIGJlIHN1cmUg dGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxs IHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNpbmdsZSBvcgorCSAqIG11bHRpcGxlIHJl ZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0 bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNp bmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25v dyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4g IFRodXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKIAkgKiBI T1QtY2hhaW4gb3IgdGhlIGV4dGVuc2lvbiBvZiB0aGUgY2hhaW4gaXMgSE9ULXNhZmUgZm9yIHRo aXMgaW5kZXguCiAJICovCiAKLQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25z IGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0JUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkvKiBQZXJmb3JtIGNvbmN1cnJlbnQgYnVpbGQgb2Yg aW5kZXggKi8KIAlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQodGFibGVJZCwgaW5kZXhSZWxhdGlv bklkKTsKIAotCS8qIHdlIGNhbiBkbyBhd2F5IHdpdGggb3VyIHNuYXBzaG90ICovCi0JUG9wQWN0 aXZlU25hcHNob3QoKTsKLQogCS8qCiAJICogQ29tbWl0IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFr ZSB0aGUgaW5kaXNyZWFkeSB1cGRhdGUgdmlzaWJsZS4KIAkgKi8KQEAgLTQwODQsOSArNDA3OCw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWlmIChuZXdpZHgtPnNhZmUpCiAJCQlzZXRf aW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0JCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBm dW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KLQkJUHVzaEFjdGl2ZVNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dy ZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAq IHRhYmxlIGludm9sdmVkLgpAQCAtNDEwMSw3ICs0MDkyLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIG5ldyBpbmRleCAqLwogCQlp bmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQp OwogCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGYzODU2YzUxOWY2 Li41Yzc1MTRjOTZhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNjEs NiArNjEsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogZG91YmxlCQljdXJzb3JfdHVwbGVfZnJh Y3Rpb24gPSBERUZBVUxUX0NVUlNPUl9UVVBMRV9GUkFDVElPTjsKQEAgLTY3NzksNiArNjc4MCw3 IEBAIHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQp CiAJUmVsYXRpb24JaGVhcDsKIAlSZWxhdGlvbglpbmRleDsKIAlSZWxPcHRJbmZvICpyZWw7CisJ Ym9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJaW50CQkJcGFyYWxsZWxf d29ya2VyczsKIAlCbG9ja051bWJlciBoZWFwX2Jsb2NrczsKIAlkb3VibGUJCXJlbHR1cGxlczsK QEAgLTY4MzQsNiArNjgzNiwxMSBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJs ZU9pZCwgT2lkIGluZGV4T2lkKQogCWhlYXAgPSB0YWJsZV9vcGVuKHRhYmxlT2lkLCBOb0xvY2sp OwogCWluZGV4ID0gaW5kZXhfb3BlbihpbmRleE9pZCwgTm9Mb2NrKTsKIAorCS8qIFNldCBBY3Rp dmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8K KwlpZiAoIUFjdGl2ZVNuYXBzaG90U2V0KCkpIHsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7 CisJfQogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGl0J3Mgc2FmZSB0byBwcm9jZWVkLgogCSAqCkBA IC02ODkxLDYgKzY4OTgsOCBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9p ZCwgT2lkIGluZGV4T2lkKQogCQlwYXJhbGxlbF93b3JrZXJzLS07CiAKIGRvbmU6CisJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlpbmRleF9j bG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaAppbmRleCBhZGI0NzhhOTNjYS4uZjRjN2QyYTkyYmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKICNkZWZpbmUgREVGQVVMVF9UQUJM RV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjksNiArNzAsMTcgQEAgdHlwZWRlZiBlbnVtIFNj YW5PcHRpb25zCiAJICogbmVlZGVkLiBJZiB0YWJsZSBkYXRhIG1heSBiZSBuZWVkZWQsIHNldCBT T19ORUVEX1RVUExFUy4KIAkgKi8KIAlTT19ORUVEX1RVUExFUyA9IDEgPDwgMTAsCisJLyoKKwkg KiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywg ZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFw c2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFwc2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0 IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoKKwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBz Y2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICogR29hbCBvZiBzdWNoIG1vZGUgaXMga2Vl cCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2FyZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJICovCisJU09fUkVTRVRfU05BUFNIT1Qg PSAxIDw8IDExLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtOTM1LDcgKzk0Nyw4IEBAIGV4 dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0 aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkgIGludCBu a2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksCi0JCQkJCSAgYm9vbCBhbGxvd19zdHJhdCwg Ym9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJvb2wgYWxsb3dfc3lu YywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQogewogCXVpbnQzMgkJZmxhZ3MgPSBTT19U WVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIApAQCAtOTQzLDYgKzk1NiwxNSBAQCB0 YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ ZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFsbG93X3N5bmMpCiAJCWZsYWdzIHw9IFNP X0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJSU5KRUNUSU9OX1BPSU5U KCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzIik7CisJCS8qIEFjdGl2ZSBz bmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBz aG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUgc25hcHNob3Qgc2hvdWxkIG5vdCBiZSBy ZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGluZy4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2 ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJCWZsYWdzIHw9IChTT19SRVNFVF9TTkFQ U0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNu YXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CkBAIC0xNzc5LDYgKzE4MDEsMTAg QEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLCBUcmFu c2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhhcmQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhl eSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIGNoYWluIHRpcC4KICAqIFRoaXMgb25s eSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2Vu ZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCisgKgorICogSW4gY2FzZSBvZiBub24t dW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVudCBidWlsZAorICogU09fUkVT RVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5n aW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFn YXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihS ZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFr ZWZpbGUKaW5kZXggZjhmODZlOGYzYjYuLjczODkzZDM1MWJiIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMCw3ICsxMCw3IEBAIEVYVEVOU0lPTiA9 IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJ TEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50 cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVpbmRleF9jb25jCitSRUdSRVNTID0g aW5qZWN0aW9uX3BvaW50cyByZWluZGV4X2NvbmMgY2ljX3Jlc2V0X3NuYXBzaG90cwogUkVHUkVT U19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNP TEFUSU9OID0gYmFzaWMgaW5wbGFjZSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVkYjU0NTMwZjE3Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVj dGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0wLDAgKzEsMTA3IEBACitDUkVBVEUgRVhU RU5TSU9OIGluamVjdGlvbl9wb2ludHM7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKKyBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOworIGluamVjdGlv bl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBTQ0hFTUEgY2lj X3Jlc2V0X3NuYXA7CitDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1h cnkga2V5LCBqIGludCk7CitJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGks IGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKK0NSRUFURSBGVU5DVElP TiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpIFJFVFVSTlMgYm9vbCBJ TU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBF WEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBNT0QoJDEsIDIpID0g MDsKK0VORDsgJCQ7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0 YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VB R0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50 KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CistLS0tLS0tLS0tLS0tLS0tCitBTFRF UiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp KTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRf c2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jl c2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlX25vX3BhcmFtKCk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lO RyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZm ZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKy0tIFRoZSBzYW1lIGluIHBh cmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVs X3dvcmtlcnM9Mik7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGks IDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp LCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2Fz Y2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxl IGNpY19yZXNldF9zbmFwLnRibAorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRf c25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9u IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9tZXNvbi5idWlsZAppbmRleCA5MWZjOGNlNjg3Zi4uZjI4ODYzM2RhNGYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM1LDYgKzM1LDcg QEAgdGVzdHMgKz0gewogICAgICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAg ICAgICAncmVpbmRleF9jb25jJywKKyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBd LAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8g J3NyYy90ZXN0L3JlZ3Jlc3MnXSwKICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVz dGVyLXdpZGUsIHNvIGRpc2FibGUgaW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2Np Y19yZXNldF9zbmFwc2hvdHMuc3FsCkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJT04g aW5qZWN0aW9uX3BvaW50czsKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hv dF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKwor Q1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25h cC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9z bmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkp OworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRl Z2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwg QVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBS RVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFC TEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRF ICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisK Ky0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBh cmFsbGVsX3dvcmtlcnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikg V0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK KworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGks IGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBV U0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBU aGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwg MiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor RFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50czsKLS0gCjIuNDMuMAoK --000000000000a19089062a03c8a5 Content-Type: application/octet-stream; name="v8-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v8-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52hauga1 RnJvbSBiNGYyMmExZGE0YmJiZmY2YTI2OGMwZjYyMTk2YTI2NGNiMTI2ODk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjggMi83 XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFkZCBj b21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z LCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdyaXR5 IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4IHR5 cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcgaW5k ZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29ya2Vy IGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFiaWxp dHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29uZGl0 aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNyYy9i aW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAxNDQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1 aWxkCmluZGV4IDI5MmIzM2ViMDk0Li40YThmNGZiYzhiMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWls ZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwnLAog ICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3NfZGFt YWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNoZWNr L3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTQy ZThmYjg0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2lj LnBsCkBAIC0wLDAgKzEsMTQ0IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZIHdp dGggY29uY3VycmVudCBtb2RpZmljYXRpb25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmljdDsK K3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor VGVzdDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBpZiBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2RlLCAk cmVzdWx0KTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAkUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFydDsKKyRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2spKTsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50IHBy aW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1bHQg MCwKKwkJCQkJCQkJYzMgbW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCkpKTsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1ZW5jZQorJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFVRU5DRSBpbl9yb3df cmVidWlsZCBTVEFSVCAxIElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKFNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOworCisjIENyZWF0ZSBo ZWxwZXIgZnVuY3Rpb25zIGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJsZSgpIFJFVFVSTlMg Ym9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJRVhFQ1VU RSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJRU5EOyAkJDsKKykp OworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIEZVTkNUSU9OIHBy ZWRpY2F0ZV9jb25zdChpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJTEFOR1VBR0Ug cGxwZ3NxbCBBUyAkJAorCUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0gMDsKKwlFTkQ7ICQk OworKSk7CisKKyMgUnVuIENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMgY29uY3VycmVudGx5 IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMw IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtx cnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRp b25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywKKwl7CisJCSdjb25j dXJyZW50X29wcycgPT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6Omlu dGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2 YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgdmFyaWFu dCByYW5kb20oMCwgNSkKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYg Omxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtl cnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6 dmFyaWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJs KGksIHVwZGF0ZWRfYXQpIFdIRVJFIHByZWRpY2F0ZV9zdGFibGUoKTsKKwkJCQkJXGVsaWYgOnZh cmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChp LCB1cGRhdGVkX2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9 IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0 ZWRfYXQpIFdIRVJFIHByZWRpY2F0ZV9jb25zdChpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA0 CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChwcmVkaWNhdGVf Y29uc3QoaSkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDUKKwkJCQkJCUNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9h dCkgV0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNsZWVwIDEw IG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9 PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hl Y2soJ2lkeF8yJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7 CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yOworCQkJCVxlbmRpZgorCQkJCVNF TEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5k b20oMTAwMCwgMTAwMDAwKQorCQkJCUJFR0lOOworCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMo Zmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERP IFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxV RVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkp IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRibCBW QUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNU KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZM SUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRP IHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENP TkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBz ZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQkJQ09NTUlUOworCQkJXGVuZGlmCisJCSkK Kwl9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRi bDspKTsKKworIyBSdW4gQ0lDL1JJQyBmb3IgdW5pcXVlIGluZGV4IGNvbmN1cnJlbnRseSB3aXRo IHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpv YnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0 dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3 aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWScsCisJeworCQknY29uY3VycmVu dF9vcHNfdW5pcXVlX2lkeCcgPT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0 Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNU IG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQg cGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxU RVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGkpOworCQkJCQlcc2xl ZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdpZHhfMicsIGhlYXBhbGxpbmRl eGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBpZHhfMjsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRl eF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0 cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJXGVuZGlmCisJ CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVt IHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0Ymwg VkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElD VChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0dmFs KCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVuZGlmCisJCSkKKwl9KTsKKworJG5vZGUtPnN0 b3A7Citkb25lX3Rlc3RpbmcoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjQz LjAKCg== --000000000000a19089062a03c8a5 Content-Type: application/octet-stream; name="v8-0006-Add-STIR-Short-Term-Index-Replacement-access-meth.patch" Content-Disposition: attachment; filename="v8-0006-Add-STIR-Short-Term-Index-Replacement-access-meth.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52haugh5 RnJvbSA2ZjJkM2NlMDY5ZDVjY2M3MzhiM2JhY2FhOTQ3NTljMTM1MzEwMzBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjggNi83 XSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzIG1ldGhvZAoK VGhpcyBwYXRjaCBwcm92aWRlcyBmb3VuZGF0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgZm9yIHVwY29t aW5nIGVuaGFuY2VtZW50cyB0bwpjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBieSBpbnRyb2R1Y2lu ZzoKCi0gKippaV9BdXhpbGlhcnkqKiBpbiBgSW5kZXhJbmZvYDogSW5kaWNhdGVzIHRoYXQgYW4g aW5kZXggaXMgYW4gYXV4aWxpYXJ5CiAgaW5kZXgsIHNwZWNpZmljYWxseSBmb3IgdXNlIGR1cmlu ZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcy4KLSAqKnZhbGlkYXRlX2luZGV4KiogaW4gYEluZGV4 VmFjdXVtSW5mb2A6IFNpZ25hbHMgd2hlbiBhIHZhY3V1bSBvciBjbGVhbnVwCiAgb3BlcmF0aW9u IGlzIHZhbGlkYXRpbmcgYSBuZXdseSBidWlsdCBpbmRleCAoZS5nLiwgZHVyaW5nIGNvbmN1cnJl bnQgYnVpbGQpLgoKQWRkaXRpb25hbGx5LCBhIG5ldyAqKlNUSVIgKFNob3J0LVRlcm0gSW5kZXgg UmVwbGFjZW1lbnQpKiogYWNjZXNzIG1ldGhvZCBpcwppbnRyb2R1Y2VkLCBpbnRlbmRlZCBzb2xl bHkgZm9yIHNob3J0LWxpdmVkLCBhdXhpbGlhcnkgdXNhZ2UuIFNUSVIgZnVuY3Rpb25zCmFzIGFu IGVwaGVtZXJhbCBoZWxwZXIgZHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB0ZW1wb3Jh cmlseSBzdG9yaW5nIFRJRHMKd2l0aG91dCBwcm92aWRpbmcgdGhlIGZ1bGwgZmVhdHVyZXMgb2Yg YSB0eXBpY2FsIGluZGV4LiBBcyBzdWNoLCBpdCByYWlzZXMKd2FybmluZ3Mgb3IgZXJyb3JzIHdo ZW4gYWNjZXNzZWQgb3V0c2lkZSBpdHMgc3BlY2lhbGl6ZWQgdXNhZ2UgcGF0aC4KClRoZXNlIGNo YW5nZXMgbGF5IGVzc2VudGlhbCBncm91bmR3b3JrIGZvciBmdXJ0aGVyIGltcHJvdmVtZW50cyB0 byBjb25jdXJyZW50CmluZGV4IGJ1aWxkcy4KLS0tCiBjb250cmliL3Bnc3RhdHR1cGxlL3Bnc3Rh dHR1cGxlLmMgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSAgICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSAgICAgICAgIHwgIDE4ICsKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkICAgICAgfCAgIDUgKwogc3JjL2JhY2tl bmQvYWNjZXNzL3N0aXIvc3Rpci5jICAgICAgICAgICB8IDU3NiArKysrKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25z LmggICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmggICAgICAgICAg ICAgICAgfCAxMTcgKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0ICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdCAgICAgICB8ICAg NCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdCAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvdXRp bHMvaW5kZXhfc2VsZnVuY3MuaCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2FtdXRpbHMub3V0ICAgIHwgICA4ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29w cl9zYW5pdHkub3V0IHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 ICAgICAgIHwgIDI0ICstCiAyMyBmaWxlcyBjaGFuZ2VkLCA3ODAgaW5zZXJ0aW9ucygrKSwgMTgg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv TWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNv bi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKCmRpZmYgLS1n aXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1 cGxlL3Bnc3RhdHR1cGxlLmMKaW5kZXggZmY3Y2MwN2RmOTkuLjAwN2VmYzRlZDBjIDEwMDY0NAot LS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCkBAIC0yODIsNiArMjgyLDkgQEAgcGdzdGF0X3JlbGF0aW9u KFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCQljYXNlIFNQR0lTVF9B TV9PSUQ6CiAJCQkJZXJyID0gInNwZ2lzdCBpbmRleCI7CiAJCQkJYnJlYWs7CisJCQljYXNlIFNU SVJfQU1fT0lEOgorCQkJCWVyciA9ICJzdGlyIGluZGV4IjsKKwkJCQlicmVhazsKIAkJCWNhc2Ug QlJJTl9BTV9PSUQ6CiAJCQkJZXJyID0gImJyaW4gaW5kZXgiOwogCQkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNjZXNzL01h a2VmaWxlCmluZGV4IDE5MzJkMTFkMTU0Li5jZDY1MjRhNTRhYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQpA QCAtOSw2ICs5LDYgQEAgdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAogU1VCRElSUwkgICAgPSBicmluIGNvbW1vbiBn aW4gZ2lzdCBoYXNoIGhlYXAgaW5kZXggbmJ0cmVlIHJtZ3JkZXNjIHNwZ2lzdCBcCi0JCQkgIHNl cXVlbmNlIHRhYmxlIHRhYmxlc2FtcGxlIHRyYW5zYW0KKwkJCSAgc3RpciBzZXF1ZW5jZSB0YWJs ZSB0YWJsZXNhbXBsZSB0cmFuc2FtCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2Vu ZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBmMmNhOTQz MDU4MS4uYmVjNzliNDhjYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAg LTI1MzgsNiArMjUzOCw3IEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWws IEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBE RUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8uc3Ry YXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBmYWxz ZTsKIAogCS8qCiAJICogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KQEAgLTI1 ODksNiArMjU5MCw3IEBAIGxhenlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJ bmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9 IHJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmlu Zm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCS8qCiAJICogVXBkYXRlIGVycm9yIHRyYWNl YmFjayBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5i dWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZAppbmRleCA2MmEzNzFkYjdmNy4u NjNlZTBlZjEzNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcgQEAgc3Vi ZGlyKCduYnRyZWUnKQogc3ViZGlyKCdybWdyZGVzYycpCiBzdWJkaXIoJ3NlcXVlbmNlJykKIHN1 YmRpcignc3BnaXN0JykKK3N1YmRpcignc3RpcicpCiBzdWJkaXIoJ3RhYmxlJykKIHN1YmRpcign dGFibGVzYW1wbGUnKQogc3ViZGlyKCd0cmFuc2FtJykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9zdGlyL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZhZTU4OThiOGQ3Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUKQEAgLTAsMCAr MSwxOCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgTWFrZWZpbGUtLQorIyAgICBNYWtlZmls ZSBmb3IgYWNjZXNzL3N0aXIKKyMKKyMgSURFTlRJRklDQVRJT04KKyMgICAgc3JjL2JhY2tlbmQv YWNjZXNzL3N0aXIvTWFrZWZpbGUKKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNy Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVk ZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAorCitPQkpTID0gXAorCXN0aXIu bworCitpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzljNmVjYTg0OGQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZApAQCAtMCwwICsxLDUg QEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorCitiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisJJ3N0aXIuYycsCispClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv c3Rpci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44M2FhMjU1MTc2ZgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpAQCAtMCwwICsxLDU3NiBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogc3Rpci5jCisgKgkgIEltcGxlbWVudGF0aW9uIG9mIFNob3J0LVRl cm0gSW5kZXggUmVwbGFjZW1lbnQuCisgKgorICogU1RJUiBpcyBhIHNwZWNpYWxpemVkIGFjY2Vz cyBtZXRob2QgdHlwZSBkZXNpZ25lZCBmb3IgdGVtcG9yYXJ5IHN0b3JhZ2UKKyAqIG9mIFRJRCB2 YWx1ZXMgZHVyaW5nIGNvbmN1cmVybnQgaW5kZXggYnVpbGQgb3BlcmF0aW9ucy4KKyAqCisgKiBU aGUgdHlwaWNhbCBsaWZlY3ljbGUgb2YgYSBTVElSIGluZGV4IGlzOgorICogMS4gY3JlYXRlZCBh cyBhbiBhdXhpbGlhcnkgaW5kZXggZm9yIENJQy9SSUMKKyAqIDIuIGFjY2VwdHMgaW5zZXJ0cyBm b3IgYSBwZXJpb2QKKyAqIDMuIHN0aXJidWxrZGVsZXRlIGNhbGxlZCBkdXJpbmcgaW5kZXggdmFs aWRhdGlvbiBwaGFzZQorICogNS4gZ2V0cyBkcm9wcGVkCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYworICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1 ZGUgImFjY2Vzcy9zdGlyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCisjaW5jbHVk ZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3Mu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisjaW5jbHVkZSAidXRpbHMvY2F0 Y2FjaGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvYW12YWxpZGF0ZS5oIgorI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfYW1wcm9jLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgInV0aWxzL3JlZ3Byb2MuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5j bHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgor I2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKworLyoKKyAqIFN0aXIgaGFuZGxlciBmdW5j dGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNjZXNzIG1ldGhvZCBwYXJhbWV0ZXJz CisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3RpcmhhbmRsZXIoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5lID0gbWFrZU5vZGUoSW5kZXhBbVJv dXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3RyYXRlZ3kgYW5kIHByb2NlZHVyZSBu dW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMgPSBTVElSX05TVFJBVEVHSUVTOwor CWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsKKwlhbXJvdXRpbmUtPmFtb3B0c3By b2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNUSVIgZG9lc24ndCBzdXBwb3J0IG1v c3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+YW1jYW5vcmRlciA9IGZhbHNlOwor CWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FuYmFj a3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5pcXVlID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9uYWxrZXkgPSB0 cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1z ZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1zdG9yYWdlID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbXByZWRsb2NrcyA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+ YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbmluY2x1ZGUgPSB0 cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdvcmttZW0gPSBmYWxzZTsKKwlhbXJv dXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJCVZBQ1VVTV9PUFRJT05fUEFSQUxM RUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQ0xFQU5VUDsKKwlhbXJvdXRpbmUt PmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQgdXAgZnVuY3Rpb24gY2FsbGJhY2tz ICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxkOworCWFtcm91dGluZS0+YW1idWls ZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5lLT5hbWluc2VydCA9IHN0aXJpbnNl cnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBOVUxMOworCWFtcm91dGluZS0+YW1i dWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0aW5lLT5hbXZhY3V1bWNsZWFudXAg PSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFtY2FucmV0dXJuID0gTlVMTDsKKwlh bXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rlc3RpbWF0ZTsKKwlhbXJvdXRpbmUt PmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGluZS0+YW1wcm9wZXJ0eSA9IE5VTEw7 CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtdmFs aWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5hbWFkanVzdG1lbWJlcnMgPSBOVUxM OworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVnaW5zY2FuOworCWFtcm91dGluZS0+ YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+YW1nZXR0dXBsZSA9IE5VTEw7CisJ YW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVuZHNjYW4gPSBz dGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5h bXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0aW1hdGVwYXJhbGxlbHNjYW4gPSBO VUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2FuID0gTlVMTDsKKwlhbXJvdXRpbmUt PmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVUVVJOX1BPSU5URVIoYW1yb3V0aW5l KTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBjbGFzcyBmb3IgU1RJUiBpbmRleC4K KyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBzbyB2YWxpZGF0aW8gbWF5IGJlIHNr aXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29uc2lzdGVuY3kuCisgKi8KK2Jvb2wK K3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwlib29sIHJlc3VsdCA9IHRydWU7CisJ SGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFzcyBjbGFzc2Zvcm07CisJT2lkIG9w ZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJRm9ybV9wZ19vcGZhbWlseSBmYW1p bHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRDTGlzdCAqcHJvY2xpc3QsCisJCQkq b3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xhc3MgaW5mb3JtYXRpb24gKi8KKwlj bGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BjbGFz c29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc3R1cCkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBjbGFzcyAldSIsIG9wY2xhc3NvaWQp OworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChjbGFzc3R1cCk7CisK KwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5OworCisKKwkvKiBGZXRjaCBvcGZh bWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlM WU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig b3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOworCWZhbWlseWZvcm0gPSAoRm9ybV9w Z19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisKKwlvcGZhbWlseW5hbWUgPSBOYW1l U3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0Y2ggYWxsIG9wZXJhdG9ycyBhbmQg c3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICovCisJb3BybGlzdCA9IFNlYXJjaFN5 c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5b2lkKSk7 CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNUFJPQ05VTSwgT2JqZWN0SWRHZXRE YXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5kaXZpZHVhbCBvcGVyYXRvcnMgKi8K Kwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJzOyBpKyspCisJeworCQlIZWFwVHVw bGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOworCQlGb3JtX3BnX2Ftb3Ag b3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChvcHJ0dXApOworCisJCS8qIENoZWNr IGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLworCQlpZiAob3ByZm9ybS0+YW1vcHN0 cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0ZWd5ID4gU1RJUl9OU1RSQVRFR0lF UykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAlcyBjb250 YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRlZ3kgbnVtYmVyICVkIiwKKwkJCQkJ CQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+ YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3BzdHJhdGVneSkpKTsKKwkJCXJlc3Vs dCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0IHN1cHBvcnQgT1JERVIgQlkgb3Bl cmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSAhPSBBTU9QX1NFQVJDSCB8fAor CQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWlseSkpCisJCXsKKwkJCWVyZXBvcnQo SU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFpbnMgaW52YWxpZCBPUkRFUiBC WSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFt ZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJ cmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBvcGVyYXRvciBzaWduYXR1cmUgLS0t IHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJaWYgKCFjaGVja19hbW9wX3NpZ25h dHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3Bs ZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBlKSkKKwkJeworCQkJZXJl cG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVyYXRvciAl cyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJ CQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJcmVzdWx0ID0g ZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNoZUxpc3QocHJvY2xpc3QpOworCVJl bGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFzZVN5c0NhY2hlKGZhbWlseXR1cCk7 CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKwor LyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElSIGluZGV4LgorICogVGhlIHNraXBJ bnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0cyB3aWxsIGJlIGFjY2VwdGVkIG9y IHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIFBh Z2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0 YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNUSVJfTUVUQSk7CisJbWV0YWRhdGEg PSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNldChtZXRhZGF0YSwgMCwgc2l6ZW9m KFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFnaWNrTnVtYmVyID0gU1RJUl9NQUdJ Q0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9IHNraXBJbnNlcnRzOworCSgoUGFn ZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXplb2YoU3Rpck1ldGFQYWdlRGF0YSk7 Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIG1ldGFwYWdlIGZvciBhIFNU SVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgaW5kZXggY3JlYXRpb24uCisgKi8K K3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251 bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdlOworCUdlbmVyaWNYTG9n U3RhdGUgKnN0YXRlOworCisJLyoKKwkgKiBNYWtlIGEgbmV3IHBhZ2U7IHNpbmNlIGl0IGlzIGZp cnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aAorCSAqIGJsb2NrIG51bWJlciAw IChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5vIG5lZWQgdG8gaG9sZCB0aGUgZXh0ZW5zaW9uCisJ ICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5vdCBiZSBjb25jdXJyZW50IGluc2VydGVycyB5ZXQu CisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgZm9ya251bSwg UF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKTsKKwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZl cikgPT0gU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwkvKiBJbml0aWFsaXplIGNvbnRlbnRzIG9m IG1ldGEgcGFnZSAqLworCXN0YXRlID0gR2VuZXJpY1hMb2dTdGFydChpbmRleCk7CisJbWV0YVBh Z2UgPSBHZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0YXRlLCBtZXRhQnVmZmVyLAorCQkJCQkJ CQkJCSBHRU5FUklDX1hMT0dfRlVMTF9JTUFHRSk7CisJU3RpckZpbGxNZXRhcGFnZShpbmRleCwg bWV0YVBhZ2UsIGZvcmtudW0gPT0gSU5JVF9GT1JLTlVNKTsKKwlHZW5lcmljWExvZ0ZpbmlzaChz dGF0ZSk7CisKKwlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCisvKgorICog SW5pdGlhbGl6ZSBhbnkgcGFnZSBvZiBhIHN0aXIgaW5kZXguCisgKi8KK3ZvaWQKK1N0aXJJbml0 UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncykKK3sKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7 CisKKwlQYWdlSW5pdChwYWdlLCBCTENLU1osIHNpemVvZihTdGlyUGFnZU9wYXF1ZURhdGEpKTsK KworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCW9wYXF1ZS0+ZmxhZ3MgPSBm bGFnczsKKwlvcGFxdWUtPnN0aXJfcGFnZV9pZCA9IFNUSVJfUEFHRV9JRDsKK30KKworLyoKKyAq IEFkZCBhIHR1cGxlIHRvIGEgU1RJUiBwYWdlLiBSZXR1cm5zIGZhbHNlIGlmIHR1cGxlIGRvZXNu J3QgZml0LgorICogVGhlIHR1cGxlIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UuCisg Ki8KK3N0YXRpYyBib29sCitTdGlyUGFnZUFkZEl0ZW0oUGFnZSBwYWdlLCBTdGlyVHVwbGUgKnR1 cGxlKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisJUG9p bnRlciBwdHI7CisKKwkvKiBXZSBzaG91bGRuJ3QgYmUgcG9pbnRlZCB0byBhbiBpbnZhbGlkIHBh Z2UgKi8KKwlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkvKiBEb2VzIG5ldyB0dXBsZSBm aXQgb24gdGhlIHBhZ2U/ICovCisJaWYgKFN0aXJQYWdlR2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdl KSA8IHNpemVvZihTdGlyVHVwbGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBDb3B5IG5ldyB0 dXBsZSB0byB0aGUgZW5kIG9mIHBhZ2UgKi8KKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShw YWdlKTsKKwlpdHVwID0gU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEp OworCW1lbWNweSgoUG9pbnRlcikgaXR1cCwgKFBvaW50ZXIpIHR1cGxlLCBzaXplb2YoU3RpclR1 cGxlKSk7CisKKwkvKiBBZGp1c3QgbWF4b2ZmIGFuZCBwZF9sb3dlciAqLworCW9wYXF1ZS0+bWF4 b2ZmKys7CisJcHRyID0gKFBvaW50ZXIpIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5t YXhvZmYgKyAxKTsKKwkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA9IHB0ciAtIHBhZ2U7 CisKKwkvKiBBc3NlcnQgd2UgZGlkbid0IG92ZXJydW4gYXZhaWxhYmxlIHNwYWNlICovCisJQXNz ZXJ0KCgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyIDw9ICgoUGFnZUhlYWRlcikgcGFnZSkt PnBkX3VwcGVyKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluc2VydCBhIG5ldyB0dXBs ZSBpbnRvIGEgU1RJUiBpbmRleC4KKyAqLworYm9vbAorc3Rpcmluc2VydChSZWxhdGlvbiBpbmRl eCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkgIEl0ZW1Qb2ludGVyIGh0X2N0aWQs IFJlbGF0aW9uIGhlYXBSZWwsCisJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJ ICBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykK K3sKKwlTdGlyVHVwbGUgKml0dXA7CisJTWVtb3J5Q29udGV4dCBvbGRDdHg7CisJTWVtb3J5Q29u dGV4dCBpbnNlcnRDdHg7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIGJ1 ZmZlciwKKwkJCW1ldGFCdWZmZXI7CisJUGFnZSBwYWdlOworCUdlbmVyaWNYTG9nU3RhdGUgKnN0 YXRlOworCXVpbnQxNiBibGtObzsKKworCS8qIENyZWF0ZSB0ZW1wb3JhcnkgY29udGV4dCBmb3Ig aW5zZXJ0IG9wZXJhdGlvbiAqLworCWluc2VydEN0eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShD dXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCSAgIlN0aXIgaW5zZXJ0IHRlbXBvcmFyeSBj b250ZXh0IiwKKwkJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwlvbGRDdHgg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5zZXJ0Q3R4KTsKKworCS8qIENyZWF0ZSBuZXcgdHVw bGUgd2l0aCBoZWFwIHBvaW50ZXIgKi8KKwlpdHVwID0gKFN0aXJUdXBsZSAqKSBwYWxsb2MwKHNp emVvZihTdGlyVHVwbGUpKTsKKwlpdHVwLT5oZWFwUHRyID0gKmh0X2N0aWQ7CisKKwltZXRhQnVm ZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwlmb3IgKDs7 KQorCXsKKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCW1l dGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikpOworCQkv KiBDaGVjayBpZiBpbnNlcnRzIGFyZSBhbGxvd2VkICovCisJCWlmIChtZXRhRGF0YS0+c2tpcElu c2VydHMpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7CisJCQlyZXR1 cm4gZmFsc2U7CisJCX0KKwkJYmxrTm8gPSBtZXRhRGF0YS0+bGFzdEJsa05vOworCQkvKiBEb24n dCBob2xkIG1ldGFidWZmZXIgbG9jayB3aGlsZSBkb2luZyBpbnNlcnQgKi8KKwkJTG9ja0J1ZmZl cihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCWlmIChibGtObyA+IDApCisJ CXsKKwkJCWJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIGJsa05vKTsKKwkJCUxvY2tCdWZmZXIo YnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCisJCQlzdGF0ZSA9IEdlbmVyaWNYTG9n U3RhcnQoaW5kZXgpOworCQkJcGFnZSA9IEdlbmVyaWNYTG9nUmVnaXN0ZXJCdWZmZXIoc3RhdGUs IGJ1ZmZlciwgMCk7CisKKwkJCUFzc2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCQkJLyogVHJ5 IHRvIGFkZCB0dXBsZSB0byBleGlzdGluZyBwYWdlICovCisJCQlpZiAoU3RpclBhZ2VBZGRJdGVt KHBhZ2UsIGl0dXApKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MhICBBcHBseSB0aGUgY2hhbmdlLCBj bGVhbiB1cCwgYW5kIGV4aXQgKi8KKwkJCQlHZW5lcmljWExvZ0ZpbmlzaChzdGF0ZSk7CisJCQkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJCVJlbGVhc2VCdWZmZXIobWV0YUJ1ZmZl cik7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCQkJTWVtb3J5Q29udGV4 dERlbGV0ZShpbnNlcnRDdHgpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKworCQkJLyogRGlk bid0IGZpdCwgbXVzdCB0cnkgb3RoZXIgcGFnZXMgKi8KKwkJCUdlbmVyaWNYTG9nQWJvcnQoc3Rh dGUpOworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQl9CisKKwkJLyogTmVlZCB0 byBhZGQgbmV3IHBhZ2UgLSBnZXQgZXhjbHVzaXZlIGxvY2sgb24gbWV0YSBwYWdlICovCisJCUxv Y2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKworCQlzdGF0ZSA9 IEdlbmVyaWNYTG9nU3RhcnQoaW5kZXgpOworCQltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0YShH ZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0YXRlLCBtZXRhQnVmZmVyLCBHRU5FUklDX1hMT0df RlVMTF9JTUFHRSkpOworCQkvKiBDaGVjayBpZiBhbm90aGVyIGJhY2tlbmQgYWxyZWFkeSBleHRl bmRlZCB0aGUgaW5kZXggKi8KKworCQlpZiAoYmxrTm8gIT0gbWV0YURhdGEtPmxhc3RCbGtObykK KwkJeworCQkJQXNzZXJ0KGJsa05vIDwgbWV0YURhdGEtPmxhc3RCbGtObyk7CisJCQkvKiBTb21l b25lIGVsc2UgaW5zZXJ0ZWQgdGhlIG5ldyBwYWdlIGludG8gdGhlIGluZGV4LCBsZXRzIHRyeSBh Z2FpbiAvCisJCQkgKi8KKwkJCUdlbmVyaWNYTG9nQWJvcnQoc3RhdGUpOworCQkJTG9ja0J1ZmZl cihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJY29udGludWU7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBNdXN0IGV4dGVuZCB0aGUgZmlsZSAqLworCQkJYnVmZmVyID0gRXh0 ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05VTSwgTlVMTCwKKwkJCQkJ CQkJCSAgIEVCX0xPQ0tfRklSU1QpOworCisJCQlwYWdlID0gR2VuZXJpY1hMb2dSZWdpc3RlckJ1 ZmZlcihzdGF0ZSwgYnVmZmVyLCBHRU5FUklDX1hMT0dfRlVMTF9JTUFHRSk7CisJCQlTdGlySW5p dFBhZ2UocGFnZSwgMCk7CisKKwkJCWlmICghU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQor CQkJeworCQkJCS8qIFdlIHNob3VsZG4ndCBiZSBoZXJlIHNpbmNlIHdlJ3JlIGluc2VydGluZyB0 byBhbiBlbXB0eSBwYWdlICovCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBhZGQgbmV3IHN0 aXIgdHVwbGUgdG8gZW1wdHkgcGFnZSIpOworCQkJfQorCisJCQkvKiBVcGRhdGUgbWV0YSBwYWdl IHdpdGggbmV3IGxhc3QgYmxvY2sgbnVtYmVyICovCisJCQltZXRhRGF0YS0+bGFzdEJsa05vID0g QnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKKwkJCUdlbmVyaWNYTG9nRmluaXNoKHN0YXRl KTsKKworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJVW5sb2NrUmVsZWFzZUJ1 ZmZlcihtZXRhQnVmZmVyKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJ CQlNZW1vcnlDb250ZXh0RGVsZXRlKGluc2VydEN0eCk7CisKKwkJCXJldHVybiBmYWxzZTsKKwkJ fQorCX0KK30KKworLyoKKyAqIFNUSVIgZG9lc24ndCBzdXBwb3J0IHNjYW5zIC0gdGhlc2UgZnVu Y3Rpb25zIGFsbCBlcnJvciBvdXQKKyAqLworSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJl bGF0aW9uIHIsIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAo ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlz IG5vdCBhIG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkCitzdGlycmVz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAor CQkgIFNjYW5LZXkgb3JkZXJieXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBp cyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZCBzdGlyZW5k c2NhbihJbmRleFNjYW5EZXNjIHNjYW4pCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3Qg aW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKworLyoKKyAqIEJ1aWxkIGEgU1RJUiBpbmRl eCAtIG9ubHkgYWxsb3dlZCBmb3IgYXV4aWxpYXJ5IGluZGV4ZXMuCisgKiBKdXN0IGluaXRpYWxp emVzIHRoZSBtZXRhIHBhZ2Ugd2l0aG91dCBhbnkgaGVhcCBzY2Fucy4KKyAqLworSW5kZXhCdWls ZFJlc3VsdCAqc3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJ ICAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCUluZGV4QnVpbGRSZXN1bHQgKnJl c3VsdDsKKworCWlmICghaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1Is IChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJTVElSIGlu ZGV4ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYmUgYnVpbHQiKSkpOworCisJU3RpckluaXRNZXRh cGFnZShpbmRleCwgTUFJTl9GT1JLTlVNKTsKKworCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0 ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdC0+aGVhcF90dXBs ZXMgPSAwOworCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gMDsKKwlyZXR1cm4gcmVzdWx0OworfQor Cit2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJJbml0TWV0YXBh Z2UoaW5kZXgsIElOSVRfRk9SS05VTSk7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rp cmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJIEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqc3RhdHMsCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2Fs bGJhY2ssCisJCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfc3RhdGUpCit7CisJUmVsYXRpb24gaW5k ZXggPSBpbmZvLT5pbmRleDsKKwlCbG9ja051bWJlciBibGtubywgbnBhZ2VzOworCUJ1ZmZlciBi dWZmZXI7CisJUGFnZSBwYWdlOworCisJLyogRm9yIG5vcm1hbCBWQUNVVU0sIG1hcmsgdG8gc2tp cCBpbnNlcnRzIGFuZCB3YXJuIGFib3V0IGluZGV4IGRyb3AgbmVlZGVkICovCisJaWYgKCFpbmZv LT52YWxpZGF0ZV9pbmRleCkKKwl7CisJCVN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhpbmRleCk7CisK KwkJZXJlcG9ydChXQVJOSU5HLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBs aWtlIHRoaXMgaW5kZXggbmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7CisJCXJldHVy biBOVUxMOworCX0KKworCWlmIChzdGF0cyA9PSBOVUxMKQorCQlzdGF0cyA9IChJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KSk7CisK KwkvKgorCSAqIEl0ZXJhdGUgb3ZlciB0aGUgcGFnZXMuIFdlIGRvbid0IGNhcmUgYWJvdXQgY29u Y3VycmVudGx5IGFkZGVkIHBhZ2VzLAorCSAqIGJlY2F1c2UgaW5kZXggaXMgbWFya2VkIGFzIG5v dC1yZWFkeSBmb3IgdGhhdCBtb21tZW50IGFuZCBpbmRleCBub3QKKwkgKiB1c2VkIGZvciBpbnNl cnQuCisJICovCisJbnBhZ2VzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhpbmRleCk7CisJ Zm9yIChibGtubyA9IFNUSVJfSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCisJ eworCQlTdGlyVHVwbGUgKml0dXAsICppdHVwRW5kOworCisJCXZhY3V1bV9kZWxheV9wb2ludCgp OworCisJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgTUFJTl9GT1JLTlVNLCBi bGtubywKKwkJCQkJCQkJCVJCTV9OT1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKworCQlMb2NrQnVm ZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWZmZXIpOworCisJCWlmIChQYWdlSXNOZXcocGFnZSkpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VC dWZmZXIoYnVmZmVyKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaXR1cCA9IFN0aXJQYWdlR2V0 VHVwbGUocGFnZSwgRmlyc3RPZmZzZXROdW1iZXIpOworCQlpdHVwRW5kID0gU3RpclBhZ2VHZXRU dXBsZShwYWdlLCBPZmZzZXROdW1iZXJOZXh0KFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpKSk7 CisJCXdoaWxlIChpdHVwIDwgaXR1cEVuZCkKKwkJeworCQkJLyogRG8gd2UgaGF2ZSB0byBkZWxl dGUgdGhpcyB0dXBsZT8gKi8KKwkJCWlmIChjYWxsYmFjaygmaXR1cC0+aGVhcFB0ciwgY2FsbGJh Y2tfc3RhdGUpKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJ3ZSBuZXZlciBkZWxldGUgaW4gc3RpciIpKSk7 CisJCQl9CisKKwkJCWl0dXAgPSBTdGlyUGFnZUdldE5leHRUdXBsZShpdHVwKTsKKwkJfQorCisJ CVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwl9CisKKwlyZXR1cm4gc3RhdHM7Cit9CisK Ky8qCisgKiBNYXJrIGEgU1RJUiBpbmRleCB0byBza2lwIGZ1dHVyZSBpbnNlcnRzCisgKi8KK3Zv aWQgU3Rpck1hcmtBc1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJNZXRhUGFn ZURhdGEgKm1ldGFEYXRhOworCUJ1ZmZlciBtZXRhQnVmZmVyOworCVBhZ2UgbWV0YVBhZ2U7CisJ R2VuZXJpY1hMb2dTdGF0ZSAqc3RhdGU7CisKKwltZXRhQnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRl eCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpOworCisJc3RhdGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKKwlt ZXRhUGFnZSA9IEdlbmVyaWNYTG9nUmVnaXN0ZXJCdWZmZXIoc3RhdGUsIG1ldGFCdWZmZXIsCisJ CQkJCQkJCQkJIEdFTkVSSUNfWExPR19GVUxMX0lNQUdFKTsKKwltZXRhRGF0YSA9IFN0aXJQYWdl R2V0TWV0YShtZXRhUGFnZSk7CisJaWYgKCFtZXRhRGF0YS0+c2tpcEluc2VydHMpCisJeworCQlt ZXRhRGF0YS0+c2tpcEluc2VydHMgPSB0cnVlOworCQlHZW5lcmljWExvZ0ZpbmlzaChzdGF0ZSk7 CisJfQorCWVsc2UKKwl7CisJCUdlbmVyaWNYTG9nQWJvcnQoc3RhdGUpOworCX0KKwlVbmxvY2tS ZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCitJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 aXJ2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCQlJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzKQoreworCVN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhpbmZvLT5p bmRleCk7CisJZXJlcG9ydChXQVJOSU5HLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNl ZW1zIGxpa2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwly ZXR1cm4gTlVMTDsKK30KKworYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJv b2wgdmFsaWRhdGUpCit7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgc3RpcmNvc3Rlc3RpbWF0 ZShQbGFubmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLAorCQkJCQkgZG91YmxlIGxvb3Bf Y291bnQsIENvc3QgKmluZGV4U3RhcnR1cENvc3QsCisJCQkJCSBDb3N0ICppbmRleFRvdGFsQ29z dCwgU2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0aXZpdHksCisJCQkJCSBkb3VibGUgKmluZGV4Q29y cmVsYXRpb24sIGRvdWJsZSAqaW5kZXhQYWdlcykKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBh IG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA0ZWVjNTUyNTk5My4uOTJkNWYzYWMwMDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKQEAgLTM0MDIsNiArMzQwMiw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFw SWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmluZm8ubWVzc2FnZV9sZXZl bCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gaGVhcFJlbGF0aW9uLT5yZF9y ZWwtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBOVUxMOworCWl2aW5mby52YWxpZGF0 ZV9pbmRleCA9IHRydWU7CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6 ZS5jCmluZGV4IDlhNTZkZTIyODJmLi5kNTRkMzEwYmE0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YwpAQCAtNzE4LDYgKzcxOCw3IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFj dXVtUGFyYW1zICpwYXJhbXMsCiAJCQlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IGVsZXZlbDsKIAkJ CWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBvbmVyZWwtPnJkX3JlbC0+cmVsdHVwbGVzOwogCQkJ aXZpbmZvLnN0cmF0ZWd5ID0gdmFjX3N0cmF0ZWd5OworCQkJaXZpbmZvLnZhbGlkYXRlX2luZGV4 ID0gZmFsc2U7CiAKIAkJCXN0YXRzID0gaW5kZXhfdmFjdXVtX2NsZWFudXAoJml2aW5mbywgTlVM TCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDY3Y2JhMTdhNTY0 Li5lNDMyN2I0ZjdkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC04 ODQsNiArODg0LDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVs VmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRfY291 bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50OwogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSBwdnMtPnNoYXJlZC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHB2cy0+YnN0 cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJLyogVXBkYXRlIGVy cm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFtZSA9IHBzdHJkdXAoUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDdl NWRmN2JlYTRkLi40NGE4YTFmMjg3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFr ZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTgyNSw2ICs4 MjUsNyBAQCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQg YW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgtYnVpbGQgc3Rh dGUgdG8gZGVmYXVsdCAqLwogCW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJbi0+aWlf UGFyYWxsZWxXb3JrZXJzID0gMDsKKwluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsKIAogCS8qIHNl dCB1cCBmb3IgcG9zc2libGUgdXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0gPSBhbW9pZDsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmgKaW5kZXggODE2NTNmZWJjMTguLjE5NGRiYmUxZDBlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aApAQCAtNTIsNiArNTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlib29s CQllc3RpbWF0ZWRfY291bnQ7CS8qIG51bV9oZWFwX3R1cGxlcyBpcyBhbiBlc3RpbWF0ZSAqLwog CWludAkJCW1lc3NhZ2VfbGV2ZWw7CS8qIGVyZXBvcnQgbGV2ZWwgZm9yIHByb2dyZXNzIG1lc3Nh Z2VzICovCiAJZG91YmxlCQludW1faGVhcF90dXBsZXM7CS8qIHR1cGxlcyByZW1haW5pbmcgaW4g aGVhcCAqLworCWJvb2wJCXZhbGlkYXRlX2luZGV4OyAvKiB2YWxpZGF0aW5nIGNvbmN1cnJlbnRs eSBidWlsdCBpbmRleD8gKi8KIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNj ZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAqLwogfSBJbmRleFZhY3V1bUluZm87CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsb3B0aW9ucy5oCmluZGV4IGRmNjkyM2M5ZDUwLi4wOTY2Mzk3ZDM0NCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsb3B0aW9ucy5oCkBAIC01MSw4ICs1MSw5IEBAIHR5cGVkZWYgZW51bSByZWxvcHRfa2luZAog CVJFTE9QVF9LSU5EX1ZJRVcgPSAoMSA8PCA5KSwKIAlSRUxPUFRfS0lORF9CUklOID0gKDEgPDwg MTApLAogCVJFTE9QVF9LSU5EX1BBUlRJVElPTkVEID0gKDEgPDwgMTEpLAorCVJFTE9QVF9LSU5E X1NUSVIgPSAoMSA8PCAxMiksCiAJLyogaWYgeW91IGFkZCBhIG5ldyBraW5kLCBtYWtlIHN1cmUg eW91IHVwZGF0ZSAibGFzdF9kZWZhdWx0IiB0b28gKi8KLQlSRUxPUFRfS0lORF9MQVNUX0RFRkFV TFQgPSBSRUxPUFRfS0lORF9QQVJUSVRJT05FRCwKKwlSRUxPUFRfS0lORF9MQVNUX0RFRkFVTFQg PSBSRUxPUFRfS0lORF9TVElSLAogCS8qIHNvbWUgY29tcGlsZXJzIHRyZWF0IGVudW1zIGFzIHNp Z25lZCBpbnRzLCBzbyB3ZSBjYW4ndCB1c2UgMSA8PCAzMSAqLwogCVJFTE9QVF9LSU5EX01BWCA9 ICgxIDw8IDMwKQogfSByZWxvcHRfa2luZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9zdGlyLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi45OTQzYzQyYTk3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9zdGlyLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHN0aXIuaAorICoJICBoZWFkZXIgZmlsZSBmb3IgcG9zdGdyZXMgc3RpciBhY2Nl c3MgbWV0aG9kIGltcGxlbWVudGF0aW9uLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3Jj L2luY2x1ZGUvYWNjZXNzL3N0aXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZu ZGVmIF9TVElSX0hfCisjZGVmaW5lIF9TVElSX0hfCisKKyNpbmNsdWRlICJhbWFwaS5oIgorI2lu Y2x1ZGUgInhsb2cuaCIKKyNpbmNsdWRlICJnZW5lcmljX3hsb2cuaCIKKyNpbmNsdWRlICJpdHVw LmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL3BhdGhub2Rlcy5oIgorCisv KiBTdXBwb3J0IHByb2NlZHVyZXMgbnVtYmVycyAqLworI2RlZmluZSBTVElSX05QUk9DCQkJCTAK KworLyogU2NhbiBzdHJhdGVnaWVzICovCisjZGVmaW5lIFNUSVJfTlNUUkFURUdJRVMJCTEKKwor I2RlZmluZSBTVElSX09QVElPTlNfUFJPQwkJCQkwCisKKy8qIE1hY3JvcyBmb3IgYWNjZXNzaW5n IHN0aXIgcGFnZSBzdHJ1Y3R1cmVzICovCisjZGVmaW5lIFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2Up ICgoU3RpclBhZ2VPcGFxdWUpIFBhZ2VHZXRTcGVjaWFsUG9pbnRlcihwYWdlKSkKKyNkZWZpbmUg U3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkgKFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpLT5tYXhv ZmYpCisjZGVmaW5lIFN0aXJQYWdlSXNNZXRhKHBhZ2UpIFwKKwkoKFN0aXJQYWdlR2V0T3BhcXVl KHBhZ2UpLT5mbGFncyAmIFNUSVJfTUVUQSkgIT0gMCkKKyNkZWZpbmUgU3RpclBhZ2VHZXREYXRh KHBhZ2UpCQkoKFN0aXJUdXBsZSAqKVBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKyNkZWZpbmUgU3Rp clBhZ2VHZXRUdXBsZShwYWdlLCBvZmZzZXQpIFwKKwkoKFN0aXJUdXBsZSAqKShQYWdlR2V0Q29u dGVudHMocGFnZSkgXAorCQkrIHNpemVvZihTdGlyVHVwbGUpICogKChvZmZzZXQpIC0gMSkpKQor I2RlZmluZSBTdGlyUGFnZUdldE5leHRUdXBsZSh0dXBsZSkgXAorCSgoU3RpclR1cGxlICopKChQ b2ludGVyKSh0dXBsZSkgKyBzaXplb2YoU3RpclR1cGxlKSkpCisKKworCisvKiBQcmVzZXJ2ZWQg cGFnZSBudW1iZXJzICovCisjZGVmaW5lIFNUSVJfTUVUQVBBR0VfQkxLTk8JKDApCisjZGVmaW5l IFNUSVJfSEVBRF9CTEtOTwkJKDEpIC8qIGZpcnN0IGRhdGEgcGFnZSAqLworCisKKy8qIE9wYXF1 ZSBmb3Igc3RpciBwYWdlcyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RpclBhZ2VPcGFxdWVEYXRhCit7 CisJT2Zmc2V0TnVtYmVyIG1heG9mZjsJCS8qIG51bWJlciBvZiBpbmRleCB0dXBsZXMgb24gcGFn ZSAqLworCXVpbnQxNgkJZmxhZ3M7CQkJLyogc2VlIGJpdCBkZWZpbml0aW9ucyBiZWxvdyAqLwor CXVpbnQxNgkJdW51c2VkOwkJCS8qIHBsYWNlaG9sZGVyIHRvIGZvcmNlIG1heGFsaWduaW5nIG9m IHNpemUgb2YKKwkJCQkJCQkJICogU3RpclBhZ2VPcGFxdWVEYXRhIGFuZCB0byBwbGFjZQorCQkJ CQkJCQkgKiBzdGlyX3BhZ2VfaWQgZXhhY3RseSBhdCB0aGUgZW5kIG9mIHBhZ2UgKi8KKwl1aW50 MTYJCXN0aXJfcGFnZV9pZDsJLyogZm9yIGlkZW50aWZpY2F0aW9uIG9mIFNUSVIgaW5kZXhlcyAq LworfSBTdGlyUGFnZU9wYXF1ZURhdGE7CisKKy8qIFN0aXIgcGFnZSBmbGFncyAqLworI2RlZmlu ZSBTVElSX01FVEEJCSgxPDwwKQorCit0eXBlZGVmIFN0aXJQYWdlT3BhcXVlRGF0YSAqU3RpclBh Z2VPcGFxdWU7CisKKyNkZWZpbmUgU1RJUl9QQUdFX0lECQkweEZGODQKKworLyogTWV0YWRhdGEg b2Ygc3RpciBpbmRleCAqLwordHlwZWRlZiBzdHJ1Y3QgU3Rpck1ldGFQYWdlRGF0YQoreworCXVp bnQzMgkJbWFnaWNrTnVtYmVyOworCXVpbnQxNgkJbGFzdEJsa05vOworCWJvb2wJCXNraXBJbnNl cnRzOwkvKiBzaG91bGQgd2UganVzdCBleGl0IHdpdGhvdXQgYW55IGluc2VydHMgKi8KK30gU3Rp ck1ldGFQYWdlRGF0YTsKKworLyogTWFnaWMgbnVtYmVyIHRvIGRpc3Rpbmd1aXNoIHN0aXIgcGFn ZXMgZnJvbSBvdGhlcnMgKi8KKyNkZWZpbmUgU1RJUl9NQUdJQ0tfTlVNQkVSICgweERCQUMwREVG KQorCisjZGVmaW5lIFN0aXJQYWdlR2V0TWV0YShwYWdlKQkoKFN0aXJNZXRhUGFnZURhdGEgKikg UGFnZUdldENvbnRlbnRzKHBhZ2UpKQorCit0eXBlZGVmIHN0cnVjdCBTdGlyVHVwbGUKK3sKKwlJ dGVtUG9pbnRlckRhdGEgaGVhcFB0cjsKK30gU3RpclR1cGxlOworCisjZGVmaW5lIFN0aXJQYWdl R2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdlKSBcCisJKEJMQ0tTWiAtIE1BWEFMSUdOKFNpemVPZlBh Z2VIZWFkZXJEYXRhKSBcCisJCS0gU3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkgKiAoc2l6ZW9m KFN0aXJUdXBsZSkpIFwKKwkJLSBNQVhBTElHTihzaXplb2YoU3RpclBhZ2VPcGFxdWVEYXRhKSkp CisKK2V4dGVybiB2b2lkIFN0aXJGaWxsTWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0 YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpOworZXh0ZXJuIHZvaWQgU3RpckluaXRNZXRhcGFnZShS ZWxhdGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVtKTsKK2V4dGVybiB2b2lkIFN0aXJJbml0 UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncyk7CitleHRlcm4gdm9pZCBTdGlyTWFya0FzU2tp cEluc2VydHMoUmVsYXRpb24gaW5kZXgpOworCisvKiBpbmRleCBhY2Nlc3MgbWV0aG9kIGludGVy ZmFjZSBmdW5jdGlvbnMgKi8KK2V4dGVybiBib29sIHN0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29p ZCk7CitleHRlcm4gYm9vbCBzdGlyaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBEYXR1bSAqdmFsdWVz LCBib29sICppc251bGwsCisJCQkJCSBJdGVtUG9pbnRlciBodF9jdGlkLCBSZWxhdGlvbiBoZWFw UmVsLAorCQkJCQkgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJCQkJIGJvb2wgaW5k ZXhVbmNoYW5nZWQsCisJCQkJCSBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOworZXh0ZXJu IEluZGV4U2NhbkRlc2Mgc3RpcmJlZ2luc2NhbihSZWxhdGlvbiByLCBpbnQgbmtleXMsIGludCBu b3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcnJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNj YW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKKwkJCQkJIFNjYW5LZXkgb3JkZXJieXMsIGlu dCBub3JkZXJieXMpOworZXh0ZXJuIHZvaWQgc3RpcmVuZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu KTsKK2V4dGVybiBJbmRleEJ1aWxkUmVzdWx0ICpzdGlyYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCisJCQkJCQkJCSBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOworZXh0 ZXJuIHZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpOworZXh0ZXJuIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RpcmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJ CQkJCQkJCSAgIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsIEluZGV4QnVsa0RlbGV0ZUNh bGxiYWNrIGNhbGxiYWNrLAorCQkJCQkJCQkJCSAgIHZvaWQgKmNhbGxiYWNrX3N0YXRlKTsKK2V4 dGVybiBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJ2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVt SW5mbyAqaW5mbywKKwkJCQkJCQkJCQkJICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKTsK K2V4dGVybiBieXRlYSAqc3Rpcm9wdGlvbnMoRGF0dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0 ZSk7CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5k YXQKaW5kZXggZGI4NzQ5MDI4MjAuLjUxMzUwZGYwYmYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2FtLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdApA QCAtMzMsNSArMzMsOCBAQAogeyBvaWQgPT4gJzM1ODAnLCBvaWRfc3ltYm9sID0+ICdCUklOX0FN X09JRCcsCiAgIGRlc2NyID0+ICdibG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhv ZCcsCiAgIGFtbmFtZSA9PiAnYnJpbicsIGFtaGFuZGxlciA9PiAnYnJpbmhhbmRsZXInLCBhbXR5 cGUgPT4gJ2knIH0sCit7IG9pZCA9PiAnNTU1NScsIG9pZF9zeW1ib2wgPT4gJ1NUSVJfQU1fT0lE JywKKyAgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhv ZCcsCisgIGFtbmFtZSA9PiAnc3RpcicsIGFtaGFuZGxlciA9PiAnc3RpcmhhbmRsZXInLCBhbXR5 cGUgPT4gJ2knIH0sCiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bj bGFzcy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CmluZGV4IGY1MDNj NjUyZWJjLi5hOGYwZTY2ZDE1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGNsYXNzLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CkBAIC00 ODgsNCArNDg4LDggQEAKIAogIyBubyBicmluIG9wY2xhc3MgZm9yIHRoZSBnZW9tZXRyaWMgdHlw ZXMgZXhjZXB0IGJveAogCisjIGFsbG93IGFueSB0eXBlcyBmb3IgU1RJUgoreyBvcGNtZXRob2Qg PT4gJ3N0aXInLCBvaWRfc3ltYm9sID0+ICdBTllfU1RJUl9PUFNfT0lEJywgb3BjbmFtZSA9PiAn c3Rpcl9vcHMnLAorICBvcGNmYW1pbHkgPT4gJ3N0aXIvYW55X29wcycsIG9wY2ludHlwZSA9PiAn YW55J30sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHku ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKaW5kZXggYzhhYzhjNzNk ZWYuLjQxZWEwYzNjYTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFt aWx5LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdApAQCAtMzA0 LDUgKzMwNCw3IEBACiAgIG9wZm1ldGhvZCA9PiAnaGFzaCcsIG9wZm5hbWUgPT4gJ211bHRpcmFu Z2Vfb3BzJyB9LAogeyBvaWQgPT4gJzYxNTgnLAogICBvcGZtZXRob2QgPT4gJ2dpc3QnLCBvcGZu YW1lID0+ICdtdWx0aXJhbmdlX29wcycgfSwKK3sgb2lkID0+ICc1NTU4JywKKyAgb3BmbWV0aG9k ID0+ICdzdGlyJywgb3BmbmFtZSA9PiAnYW55X29wcycgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMGYyMmMyMTcyMzUuLjU5ZjUwZTJiMDI3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTkzNSw2ICs5MzUsMTAgQEAKICAgcHJvbmFtZSA9PiAnYnJpbmhhbmRsZXInLCBw cm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ2luZGV4X2FtX2hhbmRsZXInLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAogICBwcm9zcmMgPT4gJ2JyaW5oYW5kbGVyJyB9LAor eyBvaWQgPT4gJzU1NTYnLCBkZXNjciA9PiAnc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBh Y2Nlc3MgbWV0aG9kIGhhbmRsZXInLAorICBwcm9uYW1lID0+ICdzdGlyaGFuZGxlcicsIHByb3Zv bGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAnaW5kZXhfYW1faGFuZGxlcicsIHByb2Fy Z3R5cGVzID0+ICdpbnRlcm5hbCcsCisgIHByb3NyYyA9PiAnc3RpcmhhbmRsZXInIH0sCiB7IG9p ZCA9PiAnMzk1MicsIGRlc2NyID0+ICdicmluOiBzdGFuZGFsb25lIHNjYW4gbmV3IHRhYmxlIHBh Z2VzJywKICAgcHJvbmFtZSA9PiAnYnJpbl9zdW1tYXJpemVfbmV3X3ZhbHVlcycsIHByb3ZvbGF0 aWxlID0+ICd2JywKICAgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICdpbnQ0Jywg cHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggN2Y3MWI3 NjI1ZGYuLjc0ODY1NWZkMGNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTcyLDEyICsxNzIs MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJQnJva2VuSG90Q2hhaW4JCWRpZCB3 ZSBkZXRlY3QgYW55IGJyb2tlbiBIT1QgY2hhaW5zPwogICoJCVN1bW1hcml6aW5nCQkJaXMgaXQg YSBzdW1tYXJpemluZyBpbmRleD8KICAqCQlQYXJhbGxlbFdvcmtlcnMJCSMgb2Ygd29ya2VycyBy ZXF1ZXN0ZWQgKGV4Y2x1ZGVzIGxlYWRlcikKKyAqCQlBdXhpbGlhcnkJCQkjIGluZGV4LWhlbHBl ciBmb3IgY29uY3VycmVudCBidWlsZD8KICAqCQlBbQkJCQkJT2lkIG9mIGluZGV4IEFNCiAgKgkJ QW1DYWNoZQkJCQlwcml2YXRlIGNhY2hlIGFyZWEgZm9yIGluZGV4IEFNCiAgKgkJQ29udGV4dAkJ CQltZW1vcnkgY29udGV4dCBob2xkaW5nIHRoaXMgSW5kZXhJbmZvCiAgKgotICogaWlfQ29uY3Vy cmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGFuZCBpaV9QYXJhbGxlbFdvcmtlcnMgYXJlIHVzZWQg b25seQotICogZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9l ZCBvdGhlcndpc2UuCisgKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4 aWxpYXJ5IGFuZCBpaV9QYXJhbGxlbFdvcmtlcnMKKyAqIGFyZSB1c2VkIG9ubHkgZHVyaW5nIGlu ZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCiAgKiAt LS0tLS0tLS0tLS0tLS0tCiAgKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwpAQCAtMjA2LDYg KzIwNyw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX1N1bW1hcml6aW5n OwogCWJvb2wJCWlpX1dpdGhvdXRPdmVybGFwczsKIAlpbnQJCQlpaV9QYXJhbGxlbFdvcmtlcnM7 CisJYm9vbAkJaWlfQXV4aWxpYXJ5OwogCU9pZAkJCWlpX0FtOwogCXZvaWQJICAgKmlpX0FtQ2Fj aGU7CiAJTWVtb3J5Q29udGV4dCBpaV9Db250ZXh0OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvaW5kZXhfc2VsZnVuY3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNz LmgKaW5kZXggYTQxY2QyYjdmZDkuLjYxZjNkM2RlYTBjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3Nl bGZ1bmNzLmgKQEAgLTYyLDYgKzYyLDE0IEBAIGV4dGVybiB2b2lkIHNwZ2Nvc3Rlc3RpbWF0ZShz dHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJU2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0 aXZpdHksCiAJCQkJCQkJZG91YmxlICppbmRleENvcnJlbGF0aW9uLAogCQkJCQkJCWRvdWJsZSAq aW5kZXhQYWdlcyk7CitleHRlcm4gdm9pZCBzdGlyY29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVy SW5mbyAqcm9vdCwKKwkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRoLAorCQkJCQkJCWRvdWJs ZSBsb29wX2NvdW50LAorCQkJCQkJCUNvc3QgKmluZGV4U3RhcnR1cENvc3QsCisJCQkJCQkJQ29z dCAqaW5kZXhUb3RhbENvc3QsCisJCQkJCQkJU2VsZWN0aXZpdHkgKmluZGV4U2VsZWN0aXZpdHks CisJCQkJCQkJZG91YmxlICppbmRleENvcnJlbGF0aW9uLAorCQkJCQkJCWRvdWJsZSAqaW5kZXhQ YWdlcyk7CiBleHRlcm4gdm9pZCBnaW5jb3N0ZXN0aW1hdGUoc3RydWN0IFBsYW5uZXJJbmZvICpy b290LAogCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBhdGgsCiAJCQkJCQkJZG91YmxlIGxvb3Bf Y291bnQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dAppbmRleCA3YWI2MTEzYzYx OS4uOTJjMDMzYTIwMTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11 dGlscy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dApAQCAt MTczLDcgKzE3MywxMyBAQCBzZWxlY3QgYW1uYW1lLCBwcm9wLCBwZ19pbmRleGFtX2hhc19wcm9w ZXJ0eShhLm9pZCwgcHJvcCkgYXMgcAogIHNwZ2lzdCB8IGNhbl9leGNsdWRlICAgfCB0CiAgc3Bn aXN0IHwgY2FuX2luY2x1ZGUgICB8IHQKICBzcGdpc3QgfCBib2d1cyAgICAgICAgIHwgCi0oMzYg cm93cykKKyBzdGlyICAgfCBjYW5fb3JkZXIgICAgIHwgZgorIHN0aXIgICB8IGNhbl91bmlxdWUg ICAgfCBmCisgc3RpciAgIHwgY2FuX211bHRpX2NvbCB8IHQKKyBzdGlyICAgfCBjYW5fZXhjbHVk ZSAgIHwgZgorIHN0aXIgICB8IGNhbl9pbmNsdWRlICAgfCB0Cisgc3RpciAgIHwgYm9ndXMgICAg ICAgICB8IAorKDQyIHJvd3MpCiAKIC0tCiAtLSBhZGRpdGlvbmFsIGNoZWNrcyBmb3IgcGdfaW5k ZXhfY29sdW1uX2hhc19wcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vcHJfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0 eS5vdXQKaW5kZXggYjY3MzY0MmFkMWQuLjI2NDVkOTcwNjI5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKQEAgLTIxMTksOSArMjExOSwxMCBAQCBGUk9NIHBnX29w Y2xhc3MgQVMgYzEKIFdIRVJFIE5PVCBFWElTVFMoU0VMRUNUIDEgRlJPTSBwZ19hbW9wIEFTIGEx CiAgICAgICAgICAgICAgICAgIFdIRVJFIGExLmFtb3BmYW1pbHkgPSBjMS5vcGNmYW1pbHkKICAg ICAgICAgICAgICAgICAgICBBTkQgYmluYXJ5X2NvZXJjaWJsZShjMS5vcGNpbnR5cGUsIGExLmFt b3BsZWZ0dHlwZSkpOwotIG9wY25hbWUgfCBvcGNmYW1pbHkgCi0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KLSgwIHJvd3MpCisgb3BjbmFtZSAgfCBvcGNmYW1pbHkgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgc3Rpcl9vcHMgfCAgICAgIDU1NTgKKygxIHJvdykKIAogLS0gQ2hlY2sgdGhhdCBlYWNo IG9wZXJhdG9yIGxpc3RlZCBpbiBwZ19hbW9wIGhhcyBhbiBhc3NvY2lhdGVkIG9wY2xhc3MsCiAt LSB0aGF0IGlzIG9uZSB3aG9zZSBvcGNpbnR5cGUgbWF0Y2hlcyBvcHJsZWZ0IChwb3NzaWJseSBi eSBjb2VyY2lvbikuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAzNmRjMzFjMTZj NC4uYTZkODZjYjRjYTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dApAQCAtNTA3NCw3 ICs1MDc0LDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlCiAgaGVh cDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykKKyBzdGlyICAgfCBJbmRleAor KDkgcm93cykKIAogXGRBICoKIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKQEAgLTUwODgsNyArNTA4 OSw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZQogIGhlYXAyICB8 IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXgKKyg5IHJv d3MpCiAKIFxkQSBoKgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpAQCAtNTExMyw5ICs1MTE1LDkg QEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogCiBcZEE6IGV4dHJhIGFyZ3VtZW50ICJiYXIiIGln bm9yZWQKIFxkQSsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3Mg bWV0aG9kcwotICBOYW1lICB8IFR5cGUgIHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAg ICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAKLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwor ICBOYW1lICB8IFR5cGUgIHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgICBE ZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICBicmluICAgfCBJbmRleCB8IGJyaW5oYW5kbGVyICAgICAgICAgIHwgYmxvY2sgcmFuZ2UgaW5k ZXggKEJSSU4pIGFjY2VzcyBtZXRob2QKICBidHJlZSAgfCBJbmRleCB8IGJ0aGFuZGxlciAgICAg ICAgICAgIHwgYi10cmVlIGluZGV4IGFjY2VzcyBtZXRob2QKICBnaW4gICAgfCBJbmRleCB8IGdp bmhhbmRsZXIgICAgICAgICAgIHwgR0lOIGluZGV4IGFjY2VzcyBtZXRob2QKQEAgLTUxMjQsMTIg KzUxMjYsMTMgQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVh cF90YWJsZWFtX2hhbmRsZXIgfCBoZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBU YWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5k bGVyICAgICAgICAgICB8IFNQLUdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBz dGlyICAgfCBJbmRleCB8IHN0aXJoYW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCBy ZXBsYWNlbWVudCBhY2Nlc3MgbWV0aG9kCisoOSByb3dzKQogCiBcZEErICoKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwotICBOYW1lICB8IFR5cGUg IHwgICAgICAgSGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAg ICAgICAgICAKLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworICBOYW1lICB8IFR5cGUgIHwgICAgICAg SGFuZGxlciAgICAgICAgfCAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAg ICAgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBicmluICAgfCBJbmRleCB8IGJyaW5o YW5kbGVyICAgICAgICAgIHwgYmxvY2sgcmFuZ2UgaW5kZXggKEJSSU4pIGFjY2VzcyBtZXRob2QK ICBidHJlZSAgfCBJbmRleCB8IGJ0aGFuZGxlciAgICAgICAgICAgIHwgYi10cmVlIGluZGV4IGFj Y2VzcyBtZXRob2QKICBnaW4gICAgfCBJbmRleCB8IGdpbmhhbmRsZXIgICAgICAgICAgIHwgR0lO IGluZGV4IGFjY2VzcyBtZXRob2QKQEAgLTUxMzgsNyArNTE0MSw4IEBAIExpc3Qgb2YgYWNjZXNz IG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0 YWJsZSBhY2Nlc3MgbWV0aG9kCiAgaGVhcDIgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxl ciB8IAogIHNwZ2lzdCB8IEluZGV4IHwgc3BnaGFuZGxlciAgICAgICAgICAgfCBTUC1HaVNUIGlu ZGV4IGFjY2VzcyBtZXRob2QKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXggfCBzdGlyaGFuZGxl ciAgICAgICAgICB8IHNob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZAor KDkgcm93cykKIAogXGRBKyBoKgogICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3Mg bWV0aG9kcwotLSAKMi40My4wCgo= --000000000000a19089062a03c8a5 Content-Type: application/octet-stream; name="v8-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-a.patch" Content-Disposition: attachment; filename="v8-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52haugi6 RnJvbSBiNmJiMGRjYzM1OThiNTEyMDNhYjg5OTQwZjU5M2Y2Y2ZiZjZmZTdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAyNCBEZWMgMjAyNCAxMzo0MDo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjggNy83 XSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4aWxp YXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2VzcyB0 byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24uIFRo aXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMgYnk6 CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxhY2Vt ZW50KSBpbmRleCB0byB0cmFjawogIG5ldyB0dXBsZXMgZHVyaW5nIHRoZSBtYWluIGluZGV4IGJ1 aWxkCi0gVXNpbmcgdGhlIGF1eGlsaWFyeSBpbmRleCB0byBjYXRjaCBhbGwgdHVwbGVzIGluc2Vy dGVkIGR1cmluZyB0aGUgYnVpbGQgcGhhc2UKICBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gYSBzZWNv bmQgaGVhcCBzY2FuCi0gTWVyZ2luZyB0aGUgYXV4aWxpYXJ5IGluZGV4IGNvbnRlbnQgd2l0aCB0 aGUgbWFpbiBpbmRleCBkdXJpbmcgdmFsaWRhdGlvbgotIEF1dG9tYXRpY2FsbHkgY2xlYW5pbmcg dXAgdGhlIGF1eGlsaWFyeSBpbmRleCBhZnRlciB0aGUgbWFpbiBpbmRleCBpcyByZWFkeQoKVGhp cyBhcHByb2FjaCBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBhIHNlY29uZCBmdWxsIHRhYmxlIHNj YW4gZHVyaW5nIGluZGV4CnZhbGlkYXRpb24sIG1ha2luZyB0aGUgcHJvY2VzcyBtb3JlIGVmZmlj aWVudCBlc3BlY2lhbGx5IGZvciBsYXJnZSB0YWJsZXMuClRoZSBhdXhpbGlhcnkgaW5kZXggaXMg YXV0b21hdGljYWxseSBkcm9wcGVkIGFmdGVyIHRoZSBtYWluIGluZGV4IGJlY29tZXMgdmFsaWQu CgpUaGlzIGNoYW5nZSBhZmZlY3RzIGJvdGggQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQg UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkKb3BlcmF0aW9ucy4gVGhlIFNUSVIgYWNjZXNzIG1l dGhvZCBpcyBhZGRlZCBzcGVjaWZpY2FsbHkgZm9yIHRoZXNlIGF1eGlsaWFyeQppbmRleGVzIGFu ZCBjYW5ub3QgYmUgdXNlZCBkaXJlY3RseSBieSB1c2Vycy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAzODQgKysrKysrKysrLS0tLS0tLS0tCiBz cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAyODAgKysrKysr KysrKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgICAgIHwg ICAzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAgfCAz NjIgKysrKysrKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAg ICAgICAgICAgICB8ICAyOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAg ICAgICAgICAgIHwgIDE1ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oICAgICAg ICAgICAgICAgfCAgIDQgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAg ICAgICAgICB8ICAyOCArKwogLi4uL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dCAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICAg ICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICAg ICB8ICAgMyArCiAxMiBmaWxlcyBjaGFuZ2VkLCA3OTIgaW5zZXJ0aW9ucygrKSwgMzIzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDky MWI4MDY2NDJhLi5kNTc1MDgzOTYyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJh eS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCkBAIC0xNzc3LDI0NiArMTc3OCwyNjcgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3Nj YW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiByZWx0dXBsZXM7CiB9CiAKLXN0YXRp YyB2b2lkCitzdGF0aWMgVHJhbnNhY3Rpb25JZAogaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQkJCSAgIEluZGV4SW5mbyAqaW5kZXhJbmZvLAotCQkJCQkJICAgU25hcHNob3Qgc25hcHNo b3QsCi0JCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICAgVmFsaWRh dGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3Rh dGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBzY2FuOwotCUhlYXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFw VHVwbGUJaGVhcFR1cGxlOworCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoOworCVRyYW5zYWN0 aW9uSWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9v bAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3RhdGUgICpwcmVkaWNhdGU7Ci0JVHVw bGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICplc3RhdGU7Ci0JRXhwckNvbnRleHQgKmVj b250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0J T2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JYm9vbAkJ aW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Js a25vID0gSW52YWxpZEJsb2NrTnVtYmVyOworCisJU25hcHNob3QJCXNuYXBzaG90OworCVR1cGxl VGFibGVTbG90ICAqc2xvdDsKKwlFU3RhdGUJCQkqZXN0YXRlOworCUV4cHJDb250ZXh0CQkqZWNv bnRleHQ7CiAKIAkvKiBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBtZXJnZSAqLwotCUl0ZW1Qb2lu dGVyIGluZGV4Y3Vyc29yID0gTlVMTDsKLQlJdGVtUG9pbnRlckRhdGEgZGVjb2RlZDsKLQlib29s CQl0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZTsKKwlJdGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBO VUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5VTEwsCisJCQkJCXByZXZfaW5kZXhjdXJzb3Ig PSBOVUxMOworCUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVkLAorCQkJCQlhdXhkZWNvZGVkLAorCQkJ CQlwcmV2X2RlY29kZWQsCisJCQkJCWZldGNoZWQ7CisJYm9vbAkJCXR1cGxlc29ydF9lbXB0eSA9 IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZTsKKworCUFzc2VydCghSGF2 ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBzaG90KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisKKwkvKgorCSAqIE5vdyB0YWtlIHRoZSAicmVmZXJlbmNl IHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2FuZGlkYXRlCisJICog dHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3RzIGluCisJICog dXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbiBhcyBpbi1wcm9ncmVzcyB0aGF0IG91ciBy ZWZlcmVuY2UKKwkgKiBzbmFwc2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLiAgSWYgc3VjaCBhIHJl Y2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgorCSAqIGRlbGV0ZWQgdHVwbGVzIGluIHRoZSB0 YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0CisJICogdGhv c2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXBy b2dyZXNzIHdpbGwKKwkgKiBleHBlY3Qgc3VjaCB0dXBsZXMgdG8gYmUgdGhlcmUgb25jZSB3ZSBt YXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KKwkgKgorCSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGlu ZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCisJICogd2Ug bWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkgKiBXZSBhbHNvIHNldCBBY3RpdmVTbmFw c2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBpbiBpbmRleGVzIG1heQorCSAqIG5l ZWQgYSBzbmFwc2hvdC4KKwkgKi8KKwlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJh bnNhY3Rpb25TbmFwc2hvdCgpKTsKKwlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCWxp bWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwogCiAJLyoKIAkgKiBzYW5pdHkgY2hlY2tzCiAJICov CiAJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxhbSkpOwogCi0J LyoKLQkgKiBOZWVkIGFuIEVTdGF0ZSBmb3IgZXZhbHVhdGlvbiBvZiBpbmRleCBleHByZXNzaW9u cyBhbmQgcGFydGlhbC1pbmRleAotCSAqIHByZWRpY2F0ZXMuICBBbHNvIGEgc2xvdCB0byBob2xk IHRoZSBjdXJyZW50IHR1cGxlLgotCSAqLwogCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUo KTsKIAllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAlzbG90ID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwK LQkJCQkJCQkJCSZUVFNPcHNIZWFwVHVwbGUpOworCQkJCQkJCQkJJlRUU09wc0J1ZmZlckhlYXBU dXBsZSk7CiAKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhl IHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90Owog Ci0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCi0J cHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3Rh dGUpOwotCiAJLyoKLQkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAg V2UgbmVlZCBqdXN0IHRob3NlIHR1cGxlcwotCSAqIHNhdGlzZnlpbmcgdGhlIHBhc3NlZC1pbiBy ZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRpc2FibGUgc3luY3NjYW4KLQkgKiBoZXJlLCBi ZWNhdXNlIGl0J3MgY3JpdGljYWwgdGhhdCB3ZSByZWFkIGZyb20gYmxvY2sgemVybyBmb3J3YXJk IHRvCi0JICogbWF0Y2ggdGhlIHNvcnRlZCBUSURzLgorCSAqIFByZXBhcmUgdG8gZmV0Y2ggaGVh cCB0dXBsZXMgaW4gaW5kZXggc3R5bGUuIFRoaXMgaGVscHMgdG8gcmVjb25zdHJ1Y3QKKwkgKiBh IHR1cGxlIGZyb20gdGhlIGhlYXAgd2hlbiB3ZSBvbmx5IGhhdmUgYW4gSXRlbVBvaW50ZXIuCiAJ ICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8qIHJlbGF0 aW9uICovCi0JCQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KLQkJCQkJCQkJIDAsIC8q IG51bWJlciBvZiBrZXlzICovCi0JCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwotCQkJCQkJ CQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkgZmFsc2Us CS8qIHN5bmNzY2FuIG5vdCBPSyAqLwotCQkJCQkJCQkgZmFsc2UpOwotCWhzY2FuID0gKEhlYXBT Y2FuRGVzYykgc2NhbjsKKwlmZXRjaCA9IGhlYXBhbV9pbmRleF9mZXRjaF9iZWdpbihoZWFwUmVs YXRpb24pOworCisJLyogSW5pdGlhbGl6ZSBwb2ludGVycy4gKi8KKwlJdGVtUG9pbnRlclNldElu dmFsaWQoJmRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmcHJldl9kZWNvZGVkKTsK KwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52 YWxpZCgmZmV0Y2hlZCk7CiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X1NDQU5fQkxPQ0tTX1RPVEFMLAotCQkJCQkJCQkgaHNjYW4tPnJzX25ibG9ja3MpOworCS8qIFdl J2xsIHRyYWNrIHRoZSBsYXN0ICJtYWluIiBpbmRleCBwb3NpdGlvbiBpbiBwcmV2X2luZGV4Y3Vy c29yLiAqLworCXByZXZfaW5kZXhjdXJzb3IgPSAmcHJldl9kZWNvZGVkOwogCiAJLyoKLQkgKiBT Y2FuIGFsbCB0dXBsZXMgbWF0Y2hpbmcgdGhlIHNuYXBzaG90LgorCSAqIE1haW4gbG9vcDogd2Ug c3RlcCB0aHJvdWdoIHRoZSBhdXhpbGlhcnkgc29ydCAoYXV4U3RhdGUtPnR1cGxlc29ydCksCisJ ICogd2hpY2ggaG9sZHMgVElEcyB0aGF0IG11c3QgYmUgbWVyZ2VkIHdpdGggb3IgY29tcGFyZWQg dG8gdGhvc2UgZnJvbQorCSAqIHRoZSAibWFpbiIgc29ydCAoc3RhdGUtPnR1cGxlc29ydCkuCiAJ ICovCi0Jd2hpbGUgKChoZWFwVHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5E aXJlY3Rpb24pKSAhPSBOVUxMKQorCXdoaWxlICghYXV4dHVwbGVzb3J0X2VtcHR5KQogCXsKLQkJ SXRlbVBvaW50ZXIgaGVhcGN1cnNvciA9ICZoZWFwVHVwbGUtPnRfc2VsZjsKLQkJSXRlbVBvaW50 ZXJEYXRhIHJvb3RUdXBsZTsKLQkJT2Zmc2V0TnVtYmVyIHJvb3Rfb2ZmbnVtOwotCisJCURhdHVt CQl0c192YWw7CisJCWJvb2wJCXRzX2lzbnVsbDsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAotCQlzdGF0ZS0+aHR1cHMgKz0gMTsKLQotCQlpZiAoKHByZXZpb3VzX2Jsa25vID09IEludmFs aWRCbG9ja051bWJlcikgfHwKLQkJCShoc2Nhbi0+cnNfY2Jsb2NrICE9IHByZXZpb3VzX2Jsa25v KSkKLQkJewotCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JM T0NLU19ET05FLAotCQkJCQkJCQkJCSBoc2Nhbi0+cnNfY2Jsb2NrKTsKLQkJCXByZXZpb3VzX2Js a25vID0gaHNjYW4tPnJzX2NibG9jazsKLQkJfQotCiAJCS8qCi0JCSAqIEFzIGNvbW1lbnRlZCBp biB0YWJsZV9pbmRleF9idWlsZF9zY2FuLCB3ZSBzaG91bGQgaW5kZXggaGVhcC1vbmx5Ci0JCSAq IHR1cGxlcyB1bmRlciB0aGUgVElEcyBvZiB0aGVpciByb290IHR1cGxlczsgc28gd2hlbiB3ZSBh ZHZhbmNlIG9udG8KLQkJICogYSBuZXcgaGVhcCBwYWdlLCBidWlsZCBhIG1hcCBvZiByb290IGl0 ZW0gb2Zmc2V0cyBvbiB0aGUgcGFnZS4KLQkJICoKLQkJICogVGhpcyBjb21wbGljYXRlcyBtZXJn aW5nIGFnYWluc3QgdGhlIHR1cGxlc29ydCBvdXRwdXQ6IHdlIHdpbGwKLQkJICogdmlzaXQgdGhl IGxpdmUgdHVwbGVzIGluIG9yZGVyIGJ5IHRoZWlyIG9mZnNldHMsIGJ1dCB0aGUgcm9vdAotCQkg KiBvZmZzZXRzIHRoYXQgd2UgbmVlZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIGluZGV4IGNvbnRl bnRzIG1pZ2h0IGJlCi0JCSAqIG9yZGVyZWQgZGlmZmVyZW50bHkuICBTbyB3ZSBtaWdodCBoYXZl IHRvICJsb29rIGJhY2siIHdpdGhpbiB0aGUKLQkJICogdHVwbGVzb3J0IG91dHB1dCwgYnV0IG9u bHkgd2l0aGluIHRoZSBjdXJyZW50IHBhZ2UuICBXZSBoYW5kbGUgdGhhdAotCQkgKiBieSBrZWVw aW5nIGEgYm9vbCBhcnJheSBpbl9pbmRleFtdIHNob3dpbmcgYWxsIHRoZQotCQkgKiBhbHJlYWR5 LXBhc3NlZC1vdmVyIHR1cGxlc29ydCBvdXRwdXQgVElEcyBvZiB0aGUgY3VycmVudCBwYWdlLiBX ZQotCQkgKiBjbGVhciB0aGF0IGFycmF5IGhlcmUsIHdoZW4gYWR2YW5jaW5nIG9udG8gYSBuZXcg aGVhcCBwYWdlLgotCQkgKi8KLQkJaWYgKGhzY2FuLT5yc19jYmxvY2sgIT0gcm9vdF9ibGtubykK KwkJKiBBdHRlbXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBhdXhpbGlhcnkgc29y dC4gSWYgaXQncworCQkqIGVtcHR5LCB3ZSBzZXQgYXV4aW5kZXhjdXJzb3IgdG8gTlVMTC4KKwkJ Ki8KKwkJYXV4dHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShhdXhTdGF0ZS0+ dHVwbGVzb3J0LCB0cnVlLAorCQkJCQkJCQkJCQkJIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxs LAorCQkJCQkJCQkJCQkJIE5VTEwpOworCQlBc3NlcnQoYXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0 c19pc251bGwpOworCQlpZiAoIWF1eHR1cGxlc29ydF9lbXB0eSkKIAkJewotCQkJUGFnZQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwotCi0JCQlMb2NrQnVmZmVyKGhzY2Fu LT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0JCQloZWFwX2dldF9yb290X3R1cGxlcyhw YWdlLCByb290X29mZnNldHMpOwotCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVS X0xPQ0tfVU5MT0NLKTsKLQotCQkJbWVtc2V0KGluX2luZGV4LCAwLCBzaXplb2YoaW5faW5kZXgp KTsKLQotCQkJcm9vdF9ibGtubyA9IGhzY2FuLT5yc19jYmxvY2s7CisJCQlpdGVtcHRyX2RlY29k ZSgmYXV4ZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKKwkJCWF1eGluZGV4Y3Vyc29y ID0gJmF1eGRlY29kZWQ7CiAJCX0KLQotCQkvKiBDb252ZXJ0IGFjdHVhbCB0dXBsZSBUSUQgdG8g cm9vdCBUSUQgKi8KLQkJcm9vdFR1cGxlID0gKmhlYXBjdXJzb3I7Ci0JCXJvb3Rfb2ZmbnVtID0g SXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvcik7Ci0KLQkJaWYgKEhlYXBUdXBs ZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSkKKwkJZWxzZQogCQl7Ci0JCQlyb290X29mZm51bSA9IHJv b3Rfb2Zmc2V0c1tyb290X29mZm51bSAtIDFdOwotCQkJaWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlk KHJvb3Rfb2ZmbnVtKSkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJybXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmlu ZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25seSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwi JXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaGVhcGN1cnNvciks Ci0JCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJ CQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRpb24pKSkpOwotCQkJSXRl bVBvaW50ZXJTZXRPZmZzZXROdW1iZXIoJnJvb3RUdXBsZSwgcm9vdF9vZmZudW0pOworCQkJYXV4 aW5kZXhjdXJzb3IgPSBOVUxMOwogCQl9CiAKIAkJLyoKLQkJICogIm1lcmdlIiBieSBza2lwcGlu ZyB0aHJvdWdoIHRoZSBpbmRleCB0dXBsZXMgdW50aWwgd2UgZmluZCBvciBwYXNzCi0JCSAqIHRo ZSBjdXJyZW50IHJvb3QgdHVwbGUuCi0JCSAqLwotCQl3aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAm JgotCQkJICAgKCFpbmRleGN1cnNvciB8fAotCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1 cnNvciwgJnJvb3RUdXBsZSkgPCAwKSkKKwkJKiBJZiB0aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90 IHlldCBlbXB0eSwgd2Ugbm93IHRyeSB0byBzeW5jaHJvbml6ZQorCQkqIHRoZSAibWFpbiIgc29y dCBjdXJzb3IgKGluZGV4Y3Vyc29yKSB3aXRoIGF1eGluZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJ CSogdGhlIG1haW4gc29ydCBjdXJzb3IgdW50aWwgd2UndmUgcmVhY2hlZCBvciBwYXNzZWQgdGhl IGF1eGlsaWFyeSBUSUQuCisJCSovCisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQogCQl7Ci0J CQlEYXR1bQkJdHNfdmFsOwotCQkJYm9vbAkJdHNfaXNudWxsOwotCi0JCQlpZiAoaW5kZXhjdXJz b3IpCisJCQkvKgorCQkJICogTW92ZSB0aGUgbWFpbiBzb3J0IGZvcndhcmQgd2hpbGU6CisJCQkg KiAgICgxKSBJdCdzIG5vdCBleGhhdXN0ZWQgKHR1cGxlc29ydF9lbXB0eSA9PSBmYWxzZSksIGFu ZAorCQkJICogICAoMikgRWl0aGVyIGluZGV4Y3Vyc29yIGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlv bikgb3IKKwkJCSAqICAgICAgIGluZGV4Y3Vyc29yIDwgYXV4aW5kZXhjdXJzb3IgaW4gVElEIG9y ZGVyLgorCQkJICovCisJCQl3aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAmJiAoaW5kZXhjdXJzb3Ig PT0gTlVMTCB8fCAvKiBudWxsIG9uIGZpcnN0IHRpbWUgaGVyZSAqLworCQkJCQkJSXRlbVBvaW50 ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPCAwKSkKIAkJCXsKKwkJCQkv KiBLZWVwIHRyYWNrIG9mIHRoZSBwcmV2aW91cyBUSUQgaW4gcHJldl9kZWNvZGVkLiAqLworCQkJ CXByZXZfZGVjb2RlZCA9IGRlY29kZWQ7CiAJCQkJLyoKLQkJCQkgKiBSZW1lbWJlciBpbmRleCBp dGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJlbnQgaGVhcCBwYWdlCisJCQkJICogR2V0IHRo ZSBuZXh0IFRJRCBmcm9tIHRoZSBtYWluIHNvcnQuIElmIGl0J3MgZW1wdHksCisJCQkJICogd2Ug c2V0IGluZGV4Y3Vyc29yIHRvIE5VTEwuCiAJCQkJICovCi0JCQkJaWYgKEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoaW5kZXhjdXJzb3IpID09IHJvb3RfYmxrbm8pCi0JCQkJCWluX2luZGV4W0l0 ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGluZGV4Y3Vyc29yKSAtIDFdID0gdHJ1ZTsKLQkJCX0K LQotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVz b3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJ CQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251 bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUo JmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVj b2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5kZXhj dXJzb3IgPSBOVUxMOworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0o c3RhdGUtPnR1cGxlc29ydCwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAm dHNfaXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNzZXJ0KHR1cGxlc29ydF9l bXB0eSB8fCAhdHNfaXNudWxsKTsKKwkJCQlpZiAoIXR1cGxlc29ydF9lbXB0eSkKKwkJCQl7CisJ CQkJCWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBEYXR1bUdldEludDY0KHRzX3ZhbCkpOworCQkJ CQlpbmRleGN1cnNvciA9ICZkZWNvZGVkOworCisJCQkJCS8qCisJCQkJCSAqIElmIHRoZSBjdXJy ZW50IFRJRCBpbiB0aGUgbWFpbiBzb3J0IGlzIGEgZHVwbGljYXRlIG9mIHRoZQorCQkJCQkgKiBw cmV2aW91cyBvbmUgKHByZXZfaW5kZXhjdXJzb3IpLCBza2lwIGl0IHRvIGF2b2lkCisJCQkJCSAq IGRvdWJsZS1pbnNlcnRpbmcgdGhlIHNhbWUgVElELiBTdWNoIHNpdHVhdGlvbiBpcyBwb3NzaWJs ZQorCQkJCQkgKiBkdWUgY29uY3VycmVudCBwYWdlIHNwbGl0cyBpbiBidHJlZSAoYW5kLCBwcm9i YWJhbHkgb3RoZXIKKwkJCQkJICogaW5kZXhlcyBhcyB3ZWxsKS4KKwkJCQkJICovCisJCQkJCWlm IChJdGVtUG9pbnRlckNvbXBhcmUocHJldl9pbmRleGN1cnNvciwgaW5kZXhjdXJzb3IpID09IDAp CisJCQkJCXsKKwkJCQkJCWVsb2coREVCVUc1LCAic2tpcHBpbmcgZHVwbGljYXRlIHRpZCBpbiB0 YXJnZXQgaW5kZXggc25hcHNob3Q6ICgldSwldSkiLAorCQkJCQkJCSBJdGVtUG9pbnRlckdldEJs b2NrTnVtYmVyKGluZGV4Y3Vyc29yKSwKKwkJCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1i ZXIoaW5kZXhjdXJzb3IpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlp bmRleGN1cnNvciA9IE5VTEw7CisJCQkJfQorCisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAkJCX0KLQkJfQotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZXNvcnQgaGFzIG92ZXJzaG90ICph bmQqIHdlIGRpZG4ndCBzZWUgYSBtYXRjaCBlYXJsaWVyLAotCQkgKiB0aGVuIHRoaXMgdHVwbGUg aXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwgc28gaW5zZXJ0IGl0LgotCQkgKi8KLQkJaWYgKCh0 dXBsZXNvcnRfZW1wdHkgfHwKLQkJCSBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsICZy b290VHVwbGUpID4gMCkgJiYKLQkJCSFpbl9pbmRleFtyb290X29mZm51bSAtIDFdKQotCQl7Ci0J CQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0K LQkJCS8qIFNldCB1cCBmb3IgcHJlZGljYXRlIG9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwot CQkJRXhlY1N0b3JlSGVhcFR1cGxlKGhlYXBUdXBsZSwgc2xvdCwgZmFsc2UpOwogCiAJCQkvKgot CQkJICogSW4gYSBwYXJ0aWFsIGluZGV4LCBkaXNjYXJkIHR1cGxlcyB0aGF0IGRvbid0IHNhdGlz ZnkgdGhlCi0JCQkgKiBwcmVkaWNhdGUuCisJCQkgKiBOb3csIGlmIGVpdGhlcjoKKwkJCSAqICAt IHRoZSBtYWluIHNvcnQgaXMgZW1wdHksIG9yCisJCQkgKiAgLSBpbmRleGN1cnNvciA+IGF1eGlu ZGV4Y3Vyc29yLAorCQkJICoKKwkJCSAqIHRoZW4gYXV4aW5kZXhjdXJzb3IgaWRlbnRpZmllcyBh IFRJRCB0aGF0IGRvZXNuJ3QgYXBwZWFyIGluCisJCQkgKiB0aGUgbWFpbiBzb3J0LiBXZSBsaWtl bHkgbmVlZCB0byBpbnNlcnQgaXQKKwkJCSAqIGludG8gdGhlIHRhcmdldCBpbmRleCBpZiBpdOKA mXMgdmlzaWJsZSBpbiB0aGUgaGVhcC4KIAkJCSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxM KQorCQkJaWYgKHR1cGxlc29ydF9lbXB0eSB8fCBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJz b3IsIGF1eGluZGV4Y3Vyc29yKSA+IDApCiAJCQl7Ci0JCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNh dGUsIGVjb250ZXh0KSkKLQkJCQkJY29udGludWU7Ci0JCQl9CisJCQkJYm9vbCBjYWxsX2FnYWlu ID0gZmFsc2U7CisJCQkJYm9vbCBhbGxfZGVhZCA9IGZhbHNlOworCQkJCUl0ZW1Qb2ludGVyIHRp ZDsKIAotCQkJLyoKLQkJCSAqIEZvciB0aGUgY3VycmVudCBoZWFwIHR1cGxlLCBleHRyYWN0IGFs bCB0aGUgYXR0cmlidXRlcyB3ZSB1c2UKLQkJCSAqIGluIHRoaXMgaW5kZXgsIGFuZCBub3RlIHdo aWNoIGFyZSBudWxsLiAgVGhpcyBhbHNvIHBlcmZvcm1zCi0JCQkgKiBldmFsdWF0aW9uIG9mIGFu eSBleHByZXNzaW9ucyBuZWVkZWQuCi0JCQkgKi8KLQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5m bywKLQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkgICBlc3RhdGUsCi0JCQkJCQkgICB2YWx1ZXMsCi0J CQkJCQkgICBpc251bGwpOworCQkJCS8qIENvcHkgdGhlIGF1eGluZGV4Y3Vyc29yIFRJRCBpbnRv IGZldGNoZWQuICovCisJCQkJZmV0Y2hlZCA9ICphdXhpbmRleGN1cnNvcjsKKwkJCQl0aWQgPSAm ZmV0Y2hlZDsKIAotCQkJLyoKLQkJCSAqIFlvdSdkIHRoaW5rIHdlIHNob3VsZCBnbyBhaGVhZCBh bmQgYnVpbGQgdGhlIGluZGV4IHR1cGxlIGhlcmUsCi0JCQkgKiBidXQgc29tZSBpbmRleCBBTXMg d2FudCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcgb24gdGhlIGRhdGEKLQkJCSAqIGZpcnN0LiBT byBwYXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNudWxsW10gYXJyYXlzLCBpbnN0ZWFkLgotCQkJICov Ci0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVwbGUgaXMgYWxyZWFkeSBjb21taXR0ZWQgZGVhZCwg eW91IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBjb3VsZCBzdXBwcmVzcyB1bmlxdWVuZXNzIGNoZWNr aW5nLCBidXQgdGhpcyBpcyBubyBsb25nZXIgdHJ1ZQotCQkJICogaW4gdGhlIHByZXNlbmNlIG9m IEhPVCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlzIGFjdHVhbGx5IGEgcHJveHkKLQkJCSAqIGZvciBh IHVuaXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdob2xlIEhPVC1jaGFpbi4gIFRoYXQgaXMsIHRoZQot CQkJICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNvdWxkIGJlIGRlYWQgYmVjYXVzZSBpdCB3YXMgYWxy ZWFkeQotCQkJICogSE9ULXVwZGF0ZWQsIGFuZCBpZiBzbyB0aGUgdXBkYXRpbmcgdHJhbnNhY3Rp b24gd2lsbCBub3QgaGF2ZQotCQkJICogdGhvdWdodCBpdCBzaG91bGQgaW5zZXJ0IGluZGV4IGVu dHJpZXMuICBUaGUgaW5kZXggQU0gd2lsbAotCQkJICogY2hlY2sgdGhlIHdob2xlIEhPVC1jaGFp biBhbmQgY29ycmVjdGx5IGRldGVjdCBhIGNvbmZsaWN0IGlmCi0JCQkgKiB0aGVyZSBpcyBvbmUu Ci0JCQkgKi8KKwkJCQkvKiBSZXNldCB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGZvciB0 aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRf cGVyX3R1cGxlX21lbW9yeSk7CisJCQkJc3RhdGUtPmh0dXBzICs9IDE7CiAKLQkJCWluZGV4X2lu c2VydChpbmRleFJlbGF0aW9uLAotCQkJCQkJIHZhbHVlcywKLQkJCQkJCSBpc251bGwsCi0JCQkJ CQkgJnJvb3RUdXBsZSwKLQkJCQkJCSBoZWFwUmVsYXRpb24sCi0JCQkJCQkgaW5kZXhJbmZvLT5p aV9VbmlxdWUgPwotCQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMgOiBVTklRVUVfQ0hFQ0tfTk8sCi0J CQkJCQkgZmFsc2UsCi0JCQkJCQkgaW5kZXhJbmZvKTsKLQotCQkJc3RhdGUtPnR1cHNfaW5zZXJ0 ZWQgKz0gMTsKKwkJCQkvKgorCQkJCSAqIEZldGNoIHRoZSB0dXBsZSBmcm9tIHRoZSBoZWFwIHRv IHNlZSBpZiBpdCdzIHZpc2libGUKKwkJCQkgKiB1bmRlciBvdXIgc25hcHNob3QuIElmIGl0IGlz LCBmb3JtIHRoZSBpbmRleCBrZXkgdmFsdWVzCisJCQkJICogYW5kIGluc2VydCBhIG5ldyBlbnRy eSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJCQkJICovCisJCQkJaWYgKGhlYXBhbV9pbmRleF9m ZXRjaF90dXBsZShmZXRjaCwgdGlkLCBzbmFwc2hvdCwgc2xvdCwgJmNhbGxfYWdhaW4sICZhbGxf ZGVhZCkpCisJCQkJeworCisJCQkJCS8qIENvbXB1dGUgdGhlIGtleSB2YWx1ZXMgYW5kIG51bGwg ZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICovCisJCQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywK KwkJCQkJCQkJICAgc2xvdCwKKwkJCQkJCQkJICAgZXN0YXRlLAorCQkJCQkJCQkgICB2YWx1ZXMs CisJCQkJCQkJCSAgIGlzbnVsbCk7CisKKwkJCQkJLyoKKwkJCQkJICogSW5zZXJ0IHRoZSB0dXBs ZSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJCQkJCSAqLworCQkJCQlpbmRleF9pbnNlcnQoaW5k ZXhSZWxhdGlvbiwKKwkJCQkJCQkJIHZhbHVlcywKKwkJCQkJCQkJIGlzbnVsbCwKKwkJCQkJCQkJ IGF1eGluZGV4Y3Vyc29yLCAvKiBpbnNlcnQgcm9vdCB0dXBsZSAqLworCQkJCQkJCQkgaGVhcFJl bGF0aW9uLAorCQkJCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPworCQkJCQkJCQkgVU5JUVVF X0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKKwkJCQkJCQkJIGZhbHNlLAorCQkJCQkJCQkg aW5kZXhJbmZvKTsKKworCQkJCQlzdGF0ZS0+dHVwc19pbnNlcnRlZCArPSAxOworCisJCQkJCWVs b2coREVCVUc1LCAiaW5zZXJ0ZWQgdGlkOiAoJXUsJXUpLCByb290OiAoJXUsICV1KSIsCisJCQkJ CQkJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoYXV4aW5kZXhjdXJzb3IpLAorCQkJCQkJ CQkJCQlJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihhdXhpbmRleGN1cnNvciksCisJCQkJCQkJ CQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIodGlkKSwKKwkJCQkJCQkJCQkJSXRlbVBvaW50 ZXJHZXRPZmZzZXROdW1iZXIodGlkKSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8q CisJCQkJCSAqIFRoZSB0dXBsZSB3YXNuJ3QgdmlzaWJsZSB1bmRlciBvdXIgc25hcHNob3QuIFdl CisJCQkJCSAqIHNraXAgaW5zZXJ0aW5nIGl0IGludG8gdGhlIHRhcmdldCBpbmRleCBiZWNhdXNl CisJCQkJCSAqIGZyb20gb3VyIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IGV4aXN0LgorCQkJCQkg Ki8KKwkJCQkJZWxvZyhERUJVRzUsICJza2lwcGluZyBpbnNlcnQgdG8gdGFyZ2V0IGluZGV4IGJl Y2F1c2UgdGlkIG5vdCB2aXNpYmxlOiAoJXUsJXUpIiwKKwkJCQkJCSBJdGVtUG9pbnRlckdldEJs b2NrTnVtYmVyKGF1eGluZGV4Y3Vyc29yKSwKKwkJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51 bWJlcihhdXhpbmRleGN1cnNvcikpOworCQkJCX0KKwkJCX0KIAkJfQogCX0KIAotCXRhYmxlX2Vu ZHNjYW4oc2Nhbik7Ci0KIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCiAJ RnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKIAorCWhlYXBhbV9pbmRleF9mZXRjaF9lbmQoZmV0 Y2gpOworCisJLyoKKwkgKiBEcm9wIHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRv IHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCisJICogc25hcHNob3QgaG9sZGVycywgZWxz ZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KKwkgKiBkb2lu ZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNuYXBzaG90 IGFzIG9uZQorCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4gIEJ1dCBmaXJzdCwgc2F2ZSB0aGUgc25h cHNob3QncyB4bWluIHRvIHVzZSBhcworCSAqIGxpbWl0WG1pbiBmb3IgR2V0Q3VycmVudFZpcnR1 YWxYSURzKCkuCisJICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlVbnJlZ2lzdGVyU25hcHNo b3Qoc25hcHNob3QpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoTXlQ cm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKKyNpZiBVU0VfSU5KRUNUSU9OX1BP SU5UUworCWlmIChNeVByb2MtPnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCkKKwkJSU5KRUNU SU9OX1BPSU5UKCJoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQiKTsKKyNlbmRpZgog CS8qIFRoZXNlIG1heSBoYXZlIGJlZW4gcG9pbnRpbmcgdG8gdGhlIG5vdy1nb25lIGVzdGF0ZSAq LwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKIAlpbmRleEluZm8tPmlp X1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKKworCXJldHVybiBsaW1pdFhtaW47CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKaW5kZXggOTJkNWYzYWMwMDkuLmYwMzg5ZWY4NTgzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCkBAIC03MTgsNiArNzE4LDkgQEAgVXBkYXRlSW5kZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQs CiAgKiBhbGxvd19zeXN0ZW1fdGFibGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0g Y2F0YWxvZwogICogaXNfaW50ZXJuYWw6IGlmIHRydWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3Ig bmV3IGluZGV4CiAgKiBjb25zdHJhaW50SWQ6IGlmIG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2Yg Y3JlYXRlZCBjb25zdHJhaW50CisgKiByZWxwZXJzaXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwg dG8gdXNlIGZvciBpbmRleC4gSW4gbW9zdCBvZiB0aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQg YmUgZXF1YWwgdG8gcGVyc2lzdGVuY2UgbGV2ZWwgb2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGlu ZGV4ZXMgYXJlIG9ubHkgZXhjZXB0aW9uIGhlcmUuCiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9m IHRoZSBjcmVhdGVkIGluZGV4LgogICovCkBAIC03NDIsNyArNzQ1LDggQEAgaW5kZXhfY3JlYXRl KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCSBiaXRzMTYgY29uc3RyX2ZsYWdzLAogCQkJIGJv b2wgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMsCiAJCQkgYm9vbCBpc19pbnRlcm5hbCwKLQkJCSBP aWQgKmNvbnN0cmFpbnRJZCkKKwkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCSBjaGFyIHJlbHBl cnNpc3RlbmNlKQogewogCU9pZAkJCWhlYXBSZWxhdGlvbklkID0gUmVsYXRpb25HZXRSZWxpZCho ZWFwUmVsYXRpb24pOwogCVJlbGF0aW9uCXBnX2NsYXNzOwpAQCAtNzUzLDExICs3NTcsMTEgQEAg aW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlib29sCQlpc19leGNsdXNpb247 CiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJaW50CQkJaTsKLQljaGFyCQlyZWxwZXJzaXN0ZW5jZTsK IAlib29sCQlpc3ByaW1hcnkgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSkgIT0g MDsKIAlib29sCQlpbnZhbGlkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0lOVkFMSUQpICE9IDA7 CiAJYm9vbAkJY29uY3VycmVudCA9IChmbGFncyAmIElOREVYX0NSRUFURV9DT05DVVJSRU5UKSAh PSAwOwogCWJvb2wJCXBhcnRpdGlvbmVkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX1BBUlRJVElP TkVEKSAhPSAwOworCWJvb2wJCWF1eGlsaWFyeSA9IChmbGFncyAmIElOREVYX0NSRUFURV9BVVhJ TElBUlkpICE9IDA7CiAJY2hhcgkJcmVsa2luZDsKIAlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhp ZDsKIAlNdWx0aVhhY3RJZCByZWxtaW5teGlkOwpAQCAtNzgzLDcgKzc4Nyw2IEBAIGluZGV4X2Ny ZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5h bWVzcGFjZShoZWFwUmVsYXRpb24pOwogCXNoYXJlZF9yZWxhdGlvbiA9IGhlYXBSZWxhdGlvbi0+ cmRfcmVsLT5yZWxpc3NoYXJlZDsKIAltYXBwZWRfcmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVk KGhlYXBSZWxhdGlvbik7Ci0JcmVscGVyc2lzdGVuY2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+ cmVscGVyc2lzdGVuY2U7CiAKIAkvKgogCSAqIGNoZWNrIHBhcmFtZXRlcnMKQEAgLTc5MSw2ICs3 OTQsMTEgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlpZiAoaW5kZXhJ bmZvLT5paV9OdW1JbmRleEF0dHJzIDwgMSkKIAkJZWxvZyhFUlJPUiwgIm11c3QgaW5kZXggYXQg bGVhc3Qgb25lIGNvbHVtbiIpOwogCisJaWYgKGluZGV4SW5mby0+aWlfQW0gPT0gU1RJUl9BTV9P SUQgJiYgIWF1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidXNlci1kZWZpbmVkIGluZGV4 ZXMgd2l0aCBTVElSIGFjY2VzcyBtZXRob2QgYXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCiAJaWYg KCFhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyAmJgogCQlJc1N5c3RlbVJlbGF0aW9uKGhlYXBSZWxh dGlvbikgJiYKIAkJSXNOb3JtYWxQcm9jZXNzaW5nTW9kZSgpKQpAQCAtMTQ2MSw3ICsxNDY5LDgg QEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwg T2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJICAwLAogCQkJCQkJCSAgdHJ1ZSwgLyogYWxsb3cgdGFi bGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZz8gKi8KIAkJCQkJCQkgIGZhbHNlLAkvKiBpc19pbnRl cm5hbD8gKi8KLQkJCQkJCQkgIE5VTEwpOworCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIGhlYXBS ZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAKIAkvKiBDbG9zZSB0aGUgcmVsYXRp b25zIHVzZWQgYW5kIGNsZWFuIHVwICovCiAJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9M b2NrKTsKQEAgLTE0NzEsNiArMTQ4MCwxNTQgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJcmV0dXJuIG5ld0lu ZGV4SWQ7CiB9CiAKKy8qCisgKiBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eAorICoKKyAq IENyZWF0ZSBjb25jdXJyZW50bHkgYW4gYXV4aWxpYXJ5IGluZGV4IGJhc2VkIG9uIHRoZSBkZWZp bml0aW9uIG9mIHRoZSBvbmUKKyAqIHByb3ZpZGVkIGJ5IGNhbGxlci4gIFRoZSBpbmRleCBpcyBp bnNlcnRlZCBpbnRvIGNhdGFsb2dzIGFuZCBuZWVkcyB0byBiZQorICogYnVpbHQgbGF0ZXIgb24u IFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJvY2Vzc2luZy4KKyAq CisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2UgdG8gdXNlIGZvciB0aGlzIGlu ZGV4LgorICovCitPaWQKK2luZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwgT2lkIG1haW5JbmRleElkLAorCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lk LCBjb25zdCBjaGFyICpuZXdOYW1lKQoreworCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CisJSW5k ZXhJbmZvICAqb2xkSW5mbywKKwkJCSpuZXdJbmZvOworCU9pZAkJCW5ld0luZGV4SWQgPSBJbnZh bGlkT2lkOworCUhlYXBUdXBsZQlpbmRleFR1cGxlOworCisJTGlzdAkgICAqaW5kZXhDb2xOYW1l cyA9IE5JTDsKKwlMaXN0CSAgICppbmRleEV4cHJzID0gTklMOworCUxpc3QJICAgKmluZGV4UHJl ZHMgPSBOSUw7CisKKwlPaWQgKmF1eE9wY2xhc3NJZHM7CisJaW50MTYgKmF1eENvbG9wdGlvbnM7 CisKKwlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihtYWluSW5kZXhJZCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwkvKiBUaGUgbmV3IGluZGV4IG5lZWRzIHNvbWUgaW5mb3JtYXRpb24gZnJvbSB0 aGUgb2xkIGluZGV4ICovCisJb2xkSW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24p OworCisJLyoKKwkgKiBCdWlsZCBvZiBhbiBhdXhpbGlhcnkgaW5kZXggd2l0aCBleGNsdXNpb24g Y29uc3RyYWludHMgaXMgbm90CisJICogc3VwcG9ydGVkLgorCSAqLworCWlmIChvbGRJbmZvLT5p aV9FeGNsdXNpb25PcHMgIT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQllcnJtc2coImF1eGlsaWFyeSBp bmRleCBjcmVhdGlvbiBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGlzIG5vdCBzdXBwb3J0ZWQi KSkpOworCisJLyogR2V0IHRoZSBhcnJheSBvZiBjbGFzcyBhbmQgY29sdW1uIG9wdGlvbnMgSURz IGZyb20gaW5kZXggaW5mbyAqLworCWluZGV4VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhS RUxJRCwgT2JqZWN0SWRHZXREYXR1bShtYWluSW5kZXhJZCkpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZChpbmRleFR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IGluZGV4ICV1IiwgbWFpbkluZGV4SWQpOworCisKKwkvKgorCSAqIEZldGNoIHRoZSBsaXN0IG9m IGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzIGRpcmVjdGx5IGZyb20gdGhlCisJICogY2F0YWxv Z3MuICBUaGlzIGNhbm5vdCByZWx5IG9uIHRoZSBpbmZvcm1hdGlvbiBmcm9tIEluZGV4SW5mbyBv ZiB0aGUKKwkgKiBvbGQgaW5kZXggYXMgdGhlc2UgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBmb3IgdGhl IHBsYW5uZXIuCisJICovCisJaWYgKG9sZEluZm8tPmlpX0V4cHJlc3Npb25zICE9IE5JTCkKKwl7 CisJCURhdHVtCQlleHByRGF0dW07CisJCWNoYXIJICAgKmV4cHJTdHJpbmc7CisKKwkJZXhwckRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJ CQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMpOworCQlleHByU3RyaW5nID0gVGV4dERh dHVtR2V0Q1N0cmluZyhleHByRGF0dW0pOworCQlpbmRleEV4cHJzID0gKExpc3QgKikgc3RyaW5n VG9Ob2RlKGV4cHJTdHJpbmcpOworCQlwZnJlZShleHByU3RyaW5nKTsKKwl9CisJaWYgKG9sZElu Zm8tPmlpX1ByZWRpY2F0ZSAhPSBOSUwpCisJeworCQlEYXR1bQkJcHJlZERhdHVtOworCQljaGFy CSAgICpwcmVkU3RyaW5nOworCisJCXByZWREYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwo SU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkgICBBbnVtX3BnX2luZGV4X2luZHBy ZWQpOworCQlwcmVkU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwcmVkRGF0dW0pOworCQlp bmRleFByZWRzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHByZWRTdHJpbmcpOworCisJCS8qIEFs c28gY29udmVydCB0byBpbXBsaWNpdC1BTkQgZm9ybWF0ICovCisJCWluZGV4UHJlZHMgPSBtYWtl X2FuZHNfaW1wbGljaXQoKEV4cHIgKikgaW5kZXhQcmVkcyk7CisJCXBmcmVlKHByZWRTdHJpbmcp OworCX0KKworCS8qCisJICogQnVpbGQgdGhlIGluZGV4IGluZm9ybWF0aW9uIGZvciB0aGUgbmV3 IGluZGV4LiAgTm90ZSB0aGF0IHJlYnVpbGQgb2YKKwkgKiBpbmRleGVzIHdpdGggZXhjbHVzaW9u IGNvbnN0cmFpbnRzIGlzIG5vdCBzdXBwb3J0ZWQsIGhlbmNlIHRoZXJlIGlzIG5vCisJICogbmVl ZCB0byBmaWxsIGFsbCB0aGUgaWlfRXhjbHVzaW9uKiBmaWVsZHMuCisJICovCisJbmV3SW5mbyA9 IG1ha2VJbmRleEluZm8ob2xkSW5mby0+aWlfTnVtSW5kZXhBdHRycywKKwkJCQkJCQlvbGRJbmZv LT5paV9OdW1JbmRleEtleUF0dHJzLAorCQkJCQkJCVNUSVJfQU1fT0lELCAvKiBzcGVjaWFsIEFN IGZvciBhdXggaW5kZXhlcyAqLworCQkJCQkJCWluZGV4RXhwcnMsCisJCQkJCQkJaW5kZXhQcmVk cywKKwkJCQkJCQlmYWxzZSwgLyogYXV4IGluZGV4IGFyZSBub3QgdW5pcXVlICovCisJCQkJCQkJ b2xkSW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlmYWxzZSwJLyogbm90IHJlYWR5 IGZvciBpbnNlcnRzICovCisJCQkJCQkJdHJ1ZSwKKwkJCQkJCQlmYWxzZSwgLyogYXV4IGFyZSBu b3Qgc3VtbWFyaXppbmcgKi8KKwkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMpOwor CisJLyoKKwkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVt biBudW1iZXJzIGZvciB0aGUgbmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwgdGhpcyBp bmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9uLgorCSAq LworCWZvciAoaW50IGkgPSAwOyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQor CXsKKwkJVHVwbGVEZXNjCWluZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhSZWxh dGlvbik7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5kZXhUdXBE ZXNjLCBpKTsKKworCQlpbmRleENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVzLCBOYW1l U3RyKGF0dC0+YXR0bmFtZSkpOworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID0g b2xkSW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNzSWRzID0g cGFsbG9jMChzaXplb2YoT2lkKSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCWF1eENv bG9wdGlvbnMgPSBwYWxsb2MwKHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1JbmRleEF0 dHJzKTsKKworCS8qIEZpbGwgd2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8 IG5ld0luZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJZHNbaV0g PSBBTllfU1RJUl9PUFNfT0lEOworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisKKwluZXdJ bmRleElkID0gaW5kZXhfY3JlYXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05hbWUsCisJ CQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJCQkgIElu dmFsaWRPaWQsICAgIC8qIHBhcmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQs ICAgIC8qIHBhcmVudENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVOdW1i ZXIsIC8qIHJlbEZpbGVOdW1iZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJICBpbmRl eENvbE5hbWVzLAorCQkJCQkJCSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNwYWNlT2lk LAorCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJCSAgYXV4 T3BjbGFzc0lkcywKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25zLAorCQkJ CQkJCSAgTlVMTCwKKwkJCQkJCQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NSRUFURV9T S0lQX0JVSUxEIHwgSU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVfQVVYSUxJ QVJZLAorCQkJCQkJCSAgMCwKKwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJlIGEg c3lzdGVtIGNhdGFsb2c/ICovCisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJuYWw/ICov CisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQpOyAvKiBh dXggaW5kZXhlcyB1bmxvZ2dlZCAqLworCisJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2VkIGFu ZCBjbGVhbiB1cCAqLworCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJUmVs ZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOworCisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9CisKIC8q CiAgKiBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQKICAqCkBAIC0xNDgyLDcgKzE2MzksOCBAQCBp bmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQg b2xkSW5kZXhJZCwKICAqLwogdm9pZAogaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFw UmVsYXRpb25JZCwKLQkJCQkJCSBPaWQgaW5kZXhSZWxhdGlvbklkKQorCQkJCQkJIE9pZCBpbmRl eFJlbGF0aW9uSWQsCisJCQkJCQkgYm9vbCBhdXhpbGlhcnkpCiB7CiAJUmVsYXRpb24JaGVhcFJl bDsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKQEAgLTE1MjMsNiArMTY4MSw3IEBAIGluZGV4X2NvbmN1 cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJQXNzZXJ0KCFpbmRleEluZm8tPmlp X1JlYWR5Rm9ySW5zZXJ0cyk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlp bmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CisJaW5kZXhJbmZvLT5paV9BdXhp bGlhcnkgPSBhdXhpbGlhcnk7CiAJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKIAogCS8qIE5vdyBidWlsZCB0aGUgaW5kZXggKi8KQEAgLTMyNzUsMTIgKzM0MzQs MjAgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKgogICog V2UgZG8gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkIGJ5IGZpcnN0IGluc2VydGluZyB0aGUgY2F0 YWxvZyBlbnRyeSBmb3IgdGhlCiAgKiBpbmRleCB2aWEgaW5kZXhfY3JlYXRlKCksIG1hcmtpbmcg aXQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLgorICogVGhlbiB3ZSBjcmVhdGUg c3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggdGhlIHNhbWUgd2F5LiBJdCBiYXNlZCBvbiBTVElSIEFN LgogICogVGhlbiB3ZSBjb21taXQgb3VyIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIG5ldyBvbmUs IHRoZW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJl ZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5hdGUuICBOb3cKLSAqIHdlIGtub3cgdGhh dCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRl eCBhbmQKKyAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rp b25zIHdpbGwgc2VlIGluZGV4ZXMgYW5kCiAgKiBob25vciBpdHMgY29uc3RyYWludHMgb24gSE9U IHVwZGF0ZXM7IHNvIHdoaWxlIGV4aXN0aW5nIEhPVC1jaGFpbnMgbWlnaHQKICAqIGJlIGJyb2tl biB3aXRoIHJlc3BlY3QgdG8gdGhlIGluZGV4LCBubyBjdXJyZW50bHkgbGl2ZSB0dXBsZSB3aWxs IGhhdmUgYW4KLSAqIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQuICBXZSBub3cg YnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5IHZpYQorICogaW5jb21wYXRpYmxlIEhPVCB1cGRhdGUg ZG9uZSB0byBpdC4KKyAqCisgKiBBZnRlciB3ZSBidWlsZCBhdXhpbGlhcnkgaW5kZXguIEl0IGlz IGZhc3Qgb3BlcmF0aW9uIHdpdGhvdXQgYW55IGFjdHVhbAorICogdGFibGUgc2Nhbi4gQXMgcmVz dWx0LCB3ZSBoYXZlIGVtcHR5IFNUSVIgaW5kZXguIFdlIHdhaXQgYWdhaW4gZm9yIGFsbAorICog dHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8g dGVybWluYXRlLiBBdCB0aGF0CisgKiBtb21lbnQgYWxsIG5ldyB0dXBsZXMgYXJlIGdvaW5nIHRv IGJlIGluc2VydGVkIGludG8gYXV4aWxpYXJ5IGluZGV4LgorICoKKyAqIFdlIG5vdyBidWlsZCB0 aGUgaW5kZXggbm9ybWFsbHkgdmlhCiAgKiBpbmRleF9idWlsZCgpLCB3aGlsZSBob2xkaW5nIGEg d2VhayBsb2NrIHRoYXQgYWxsb3dzIGNvbmN1cnJlbnQKICAqIGluc2VydC91cGRhdGUvZGVsZXRl LiAgQWxzbywgd2UgaW5kZXggb25seSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQKICAqIGFzIG9mIHRo ZSBzdGFydCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFz IGEgbm9ybWFsCkBAIC0zMjkxLDYgKzM0NTgsNyBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKICAqIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cg YXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVh cFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhh dAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGls ZSB3ZSBidWlsdCB0aGUgaW5kZXguCisgKiBCdXQgdGhlZXNlIHR1cGxlcyBjb250YWluZWQgaW4g YXV4aWxpYXJ5IGluZGV4LgogICoKICAqIEZ1cnRoZXJtb3JlLCB3ZSBzZXQgU09fUkVTRVRfU05B UFNIT1QgZm9yIHRoZSBzY2FuLCB3aGljaCBjYXVzZXMgbmV3CiAgKiBzbmFwc2hvdCB0byBiZSBz ZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uICBmb3IgdGhhdCBpcyB0bwpA QCAtMzMwMCw4ICszNDY4LDEwIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhp cmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhh dmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwogICogd2Uga25v dyB0aGF0IGFueSBzdWJzZXF1ZW50bHktc3RhcnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgdGhl IGluZGV4IGFuZAotICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gIFdlIHRoZW4g dGFrZSBhIG5ldyByZWZlcmVuY2Ugc25hcHNob3QKLSAqIHdoaWNoIGlzIHBhc3NlZCB0byB2YWxp ZGF0ZV9pbmRleCgpLiAgQW55IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIGlu c2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8gaXQuIEF0IHRoYXQgbW9tZW50IHdlIGNsZWFyICJp bmRpc3JlYWR5IiBmb3IKKyAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9yZSBy ZXF1aXJlZC8KKyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90LCBh bnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBzbmFwLCBidXQg YXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LgogICogKEFu eSB0dXBsZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBp bnRvIHRoZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkg dHVwbGVzIGNvbW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzMwOSwxMiArMzQ3OSwxNCBAQCBJbmRl eENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQgbWlnaHQgY2Fy ZSBhYm91dCB0aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAgKgogICogdmFs aWRhdGVfaW5kZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBUSURzIGN1cnJl bnRseSBpbiB0aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBq dXN0IHN0b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNpbmcgYSBidWxr ZGVsZXRlIGNhbGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKICAq IGV2ZXIgc2F5ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGEgcGxh aW4gaW5kZXhzY2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9ydCBmdWxsLWlu ZGV4IGluZGV4c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQgZmluYWxseSBz Y2FuIHRoZSB0YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBUSUQgbGlzdAot ICogdG8gc2VlIHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRleC4gIFRodXMg d2Ugd2lsbCBlbnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhl IHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBvZiBib3RoIGF1 eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2Fp bnN0CisgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBhdXhpbGlhcnkg aW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRodXMgd2Ugd2ls bCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUKKyAqIHJlZmVy ZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxr ZGVsZXRlIGluIHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJn ZXQgbGFzdC4KICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlj a3k6IHdlIG1pZ2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBhbHJlYWR5IGRl YWQgb3IgaXMgaW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAgLTMzMzAsMjQg KzM1MDIsMjUgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAg KiBuZWNlc3NhcnkgdG8gYmUgc3VyZSB0aGVyZSBhcmUgbm9uZSBsZWZ0IHdpdGggYSB0cmFuc2Fj dGlvbiBzbmFwc2hvdAogICogb2xkZXIgdGhhbiB0aGUgcmVmZXJlbmNlIChhbmQgaGVuY2UgcG9z c2libHkgYWJsZSB0byBzZWUgdHVwbGVzIHdlIGRpZAogICogbm90IGluZGV4KS4gIFRoZW4gd2Ug bWFyayB0aGUgaW5kZXggImluZGlzdmFsaWQiIGFuZCBjb21taXQuICBTdWJzZXF1ZW50Ci0gKiB0 cmFuc2FjdGlvbnMgd2lsbCBiZSBhYmxlIHRvIHVzZSBpdCBmb3IgcXVlcmllcy4KLSAqCi0gKiBE b2luZyB0d28gZnVsbCB0YWJsZSBzY2FucyBpcyBhIGJydXRlLWZvcmNlIHN0cmF0ZWd5LiAgV2Ug Y291bGQgdHJ5IHRvIGJlCi0gKiBjbGV2ZXJlciwgZWcgc3RvcmluZyBuZXcgdHVwbGVzIGluIGEg c3BlY2lhbCBhcmVhIG9mIHRoZSB0YWJsZSAocGVyaGFwcwotICogbWFraW5nIHRoZSB0YWJsZSBh cHBlbmQtb25seSBieSBzZXR0aW5nIHVzZV9mc20pLiAgSG93ZXZlciB0aGF0IHdvdWxkCi0gKiBh ZGQgeWV0IG1vcmUgbG9ja2luZyBpc3N1ZXMuCisgKiB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhYmxl IHRvIHVzZSBpdCBmb3IgcXVlcmllcy4gQXV4aWxpYXJ5IGluZGV4IGlzCisgKiBkcm9wcGVkLgog ICovCi12b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCitUcmFuc2FjdGlvbklkCit2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBP aWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpCiB7CiAJUmVsYXRpb24JaGVhcFJlbGF0aW9uLAot CQkJCWluZGV4UmVsYXRpb247CisJCQkJaW5kZXhSZWxhdGlvbiwKKwkJCQlhdXhJbmRleFJlbGF0 aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKLQlJbmRleFZhY3V1bUluZm8gaXZpbmZvOwot CVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZTsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKKwlJ bmRleFZhY3V1bUluZm8gaXZpbmZvLCBhdXhpdmluZm87CisJVmFsaWRhdGVJbmRleFN0YXRlIHN0 YXRlLCBhdXhTdGF0ZTsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250 ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOworCS8qIFVzZSA4MCUgb2YgbWFpbnRlbmFuY2Vf d29ya19tZW0gdG8gdGFyZ2V0IGluZGV4IHNvcnRpbmcgYW5kCisJICogcmVzdCBmb3IgYXV4aWxp YXJ5ICovCisJaW50CQkJbWFpbl93b3JrX21lbV9wYXJ0ID0gKG1haW50ZW5hbmNlX3dvcmtfbWVt ICogOCkgLyAxMDsKIAogCXsKIAkJY29uc3QgaW50CXByb2dyZXNzX2luZGV4W10gPSB7CkBAIC0z MzgwLDEzICszNTUzLDE4IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElk LCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCWluZGV4UmVs YXRpb24gPSBpbmRleF9vcGVuKGluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWF1eEluZGV4 UmVsYXRpb24gPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJ LyoKIAkgKiBGZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlvdSBtaWdodCB0 aGluayB0aGlzIHNob3VsZCBiZQogCSAqIHBhc3NlZCBpbiBmcm9tIERlZmluZUluZGV4LCBidXQg aXRzIGNvcHkgaXMgbG9uZyBnb25lIGR1ZSB0byBoYXZpbmcKIAkgKiBiZWVuIGJ1aWx0IGluIGEg cHJldmlvdXMgdHJhbnNhY3Rpb24uKQorCSAqCisJICogV2UgbWlnaHQgbmVlZCBzbmFwc2hvdCBm b3IgaW5kZXggZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlcy4KIAkgKi8KKwlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4 SW5mbyhpbmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogbWFyayBi dWlsZCBpcyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50ID0gdHJ1ZTsKQEAgLTM0MDQsMTUgKzM1ODIsMzAgQEAgdmFsaWRhdGVfaW5k ZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5z dHJhdGVneSA9IE5VTEw7CiAJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1ZTsKIAorCS8qCisJ ICogQ29weSBhbGwgaW5mbyB0byBhdXhpbGlhcnkgaW5mbywgY2hhbmdpbmcgb25seSByZWxhdGlv bi4KKwkgKi8KKwlhdXhpdmluZm8gPSBpdmluZm87CisJYXV4aXZpbmZvLmluZGV4ID0gYXV4SW5k ZXhSZWxhdGlvbjsKKwogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRo ZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCiAJICogaXRlbSBwb2ludGVycy4g IFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVzZSBUSUQK IAkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywgd2hlcmVh cyBpbnQ4IGlzCiAJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KIAkgKi8KKwlh dXhTdGF0ZS50dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExl c3NPcGVyYXRvciwKKwkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLCBmYWxzZSwKKwkJCQkJCQkJCQkg ICBtYWludGVuYW5jZV93b3JrX21lbSAtIG1haW5fd29ya19tZW1fcGFydCwKKwkJCQkJCQkJCQkg ICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CisJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVw cyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOworCisJKHZvaWQpIGluZGV4X2J1bGtfZGVs ZXRlKCZhdXhpdmluZm8sIE5VTEwsCisJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2NhbGxiYWNrLCAm YXV4U3RhdGUpOworCiAJc3RhdGUudHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2RhdHVtKElO VDhPSUQsIEludDhMZXNzT3BlcmF0b3IsCiAJCQkJCQkJCQkJCUludmFsaWRPaWQsIGZhbHNlLAot CQkJCQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwKKwkJCQkJCQkJCQkJbWFpbl93b3JrX21l bV9wYXJ0LAogCQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMg PSBzdGF0ZS5pdHVwcyA9IHN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCkBAIC0zNDM1LDI3ICsz NjI4LDMzIEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9n cmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChz dGF0ZS50dXBsZXNvcnQpOworCXR1cGxlc29ydF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNv cnQpOworCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgotCSAqIE5vdyBzY2FuIHRoZSBoZWFw IGFuZCAibWVyZ2UiIGl0IHdpdGggdGhlIGluZGV4CisJICogTm93IG1lcmdlIGJvdGggaW5kZXhl cwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1RBQkxF U0NBTik7Ci0JdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCi0JCQkJCQkJ ICBpbmRleFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhJbmZvLAotCQkJCQkJCSAgc25hcHNob3Qs Ci0JCQkJCQkJICAmc3RhdGUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZB TElEQVRFX0lEWE1FUkdFKTsKKwlsaW1pdFhtaW4gPSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2Fu KGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCisJCQkJCQkJCQkJICBp bmRleEluZm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJCQkJICAmYXV4U3RhdGUpOwog Ci0JLyogRG9uZSB3aXRoIHR1cGxlc29ydCBvYmplY3QgKi8KKwkvKiBEb25lIHdpdGggdHVwbGVz b3J0IG9iamVjdHMgKi8KIAl0dXBsZXNvcnRfZW5kKHN0YXRlLnR1cGxlc29ydCk7CisJdHVwbGVz b3J0X2VuZChhdXhTdGF0ZS50dXBsZXNvcnQpOwogCiAJLyogTWFrZSBzdXJlIHRvIHJlbGVhc2Ug cmVzb3VyY2VzIGNhY2hlZCBpbiBpbmRleEluZm8gKGlmIG5lZWRlZCkuICovCiAJaW5kZXhfaW5z ZXJ0X2NsZWFudXAoaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvKTsKIAogCWVsb2coREVCVUcyLAot CQkgInZhbGlkYXRlX2luZGV4IGZvdW5kICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVw bGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKLQkJIHN0YXRlLmh0dXBzLCBzdGF0 ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CisJCSAidmFsaWRhdGVfaW5kZXggZmV0Y2hl ZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxlczsiCisJCQkJCQkiICUuMGYgYXV4 IGluZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCisJCSBzdGF0ZS5o dHVwcywgc3RhdGUuaXR1cHMsIGF1eFN0YXRlLml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsK IAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rp b25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zNDY0LDgg KzM2NjMsMTIgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBz aG90IHNuYXBzaG90KQogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVf c2VjX2NvbnRleHQpOwogCiAJLyogQ2xvc2UgcmVscywgYnV0IGtlZXAgbG9ja3MgKi8KKwlpbmRl eF9jbG9zZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4UmVs YXRpb24sIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOworCisJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlyZXR1cm4gbGlt aXRYbWluOwogfQogCiAvKgpAQCAtMzUyNCw2ICszNzI3LDEzIEBAIGluZGV4X3NldF9zdGF0ZV9m bGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFjdGlvbikKIAkJCUFzc2Vy dCghaW5kZXhGb3JtLT5pbmRpc3ZhbGlkKTsKIAkJCWluZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRy dWU7CiAJCQlicmVhazsKKwkJY2FzZSBJTkRFWF9EUk9QX0NMRUFSX1JFQURZOgorCQkJLyogQ2xl YXIgaW5kaXNyZWFkeSBkdXJpbmcgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIHNlcXVlbmNl ICovCisJCQlBc3NlcnQoaW5kZXhGb3JtLT5pbmRpc2xpdmUpOworCQkJQXNzZXJ0KGluZGV4Rm9y bS0+aW5kaXNyZWFkeSk7CisJCQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2YWxpZCk7CisJCQlp bmRleEZvcm0tPmluZGlzcmVhZHkgPSBmYWxzZTsKKwkJCWJyZWFrOwogCQljYXNlIElOREVYX0RS T1BfQ0xFQVJfVkFMSUQ6CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggYWQzMDgy YzYyYWMuLmZiYmNkN2QwMGRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0 aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMjUsNyArMzI1 LDggQEAgY3JlYXRlX3RvYXN0X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQg dG9hc3RJbmRleE9pZCwKIAkJCQkgQlRSRUVfQU1fT0lELAogCQkJCSByZWwtPnJkX3JlbC0+cmVs dGFibGVzcGFjZSwKIAkJCQkgY29sbGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBOVUxMLCBjb2xvcHRp b25zLCBOVUxMLCAoRGF0dW0pIDAsCi0JCQkJIElOREVYX0NSRUFURV9JU19QUklNQVJZLCAwLCB0 cnVlLCB0cnVlLCBOVUxMKTsKKwkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAsIHRydWUs IHRydWUsIE5VTEwsCisJCQkJIHRvYXN0X3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAK IAl0YWJsZV9jbG9zZSh0b2FzdF9yZWwsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKaW5kZXggYTAyNzI5OTExZmUuLjAyYjYzNmEwMDUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwpAQCAtNTU0LDYgKzU1NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogewogCWJv b2wJCWNvbmN1cnJlbnQ7CiAJY2hhcgkgICAqaW5kZXhSZWxhdGlvbk5hbWU7CisJY2hhcgkgICAq YXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmFjY2Vzc01ldGhvZE5hbWU7 CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CkBAIC01NjMsNiAr NTY0LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJ T2lkCQkJdGFibGVzcGFjZUlkOwogCU9pZAkJCWNyZWF0ZWRDb25zdHJhaW50SWQgPSBJbnZhbGlk T2lkOworCU9pZAkJCWF1eEluZGV4UmVsYXRpb25JZCA9IEludmFsaWRPaWQ7CiAJTGlzdAkgICAq aW5kZXhDb2xOYW1lczsKIAlMaXN0CSAgICphbGxJbmRleFBhcmFtczsKIAlSZWxhdGlvbglyZWw7 CkBAIC01ODQsMTAgKzU4NiwxMCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlpbnQJCQlu dW1iZXJPZktleUF0dHJpYnV0ZXM7CiAJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJT2JqZWN0 QWRkcmVzcyBhZGRyZXNzOworCU9iamVjdEFkZHJlc3MgYXV4QWRkcmVzczsKIAlMb2NrUmVsSWQJ aGVhcHJlbGlkOwogCUxPQ0tUQUcJCWhlYXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwot CVNuYXBzaG90CXNuYXBzaG90OwogCU9pZAkJCXJvb3Rfc2F2ZV91c2VyaWQ7CiAJaW50CQkJcm9v dF9zYXZlX3NlY19jb250ZXh0OwogCWludAkJCXJvb3Rfc2F2ZV9uZXN0bGV2ZWw7CkBAIC04MzQs NiArODM2LDE1IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCQkJCQlzdG10LT5l eGNsdWRlT3BOYW1lcywKIAkJCQkJCQkJCQkJc3RtdC0+cHJpbWFyeSwKIAkJCQkJCQkJCQkJc3Rt dC0+aXNjb25zdHJhaW50KTsKKwkvKgorCSAqIFNlbGVjdCBuYW1lIGZvciBhdXhpbGlhcnkgaW5k ZXgKKwkgKi8KKwlpZiAoY29uY3VycmVudCkKKwkJYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBDaG9v c2VSZWxhdGlvbk5hbWUoaW5kZXhSZWxhdGlvbk5hbWUsCisJCQkJCQkJCQkJCQkgIE5VTEwsCisJ CQkJCQkJCQkJCQkgICJjY2F1eCIsCisJCQkJCQkJCQkJCQkgIG5hbWVzcGFjZUlkLAorCQkJCQkJ CQkJCQkJICBmYWxzZSk7CiAKIAkvKgogCSAqIGxvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QsIHZl cmlmeSBpdCBjYW4gaGFuZGxlIHRoZSByZXF1ZXN0ZWQgZmVhdHVyZXMKQEAgLTEyMjcsNyArMTIz OCw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkgY29sb3B0aW9ucywgTlVMTCwg cmVsb3B0aW9ucywKIAkJCQkJIGZsYWdzLCBjb25zdHJfZmxhZ3MsCiAJCQkJCSBhbGxvd1N5c3Rl bVRhYmxlTW9kcywgIWNoZWNrX3JpZ2h0cywKLQkJCQkJICZjcmVhdGVkQ29uc3RyYWludElkKTsK KwkJCQkJICZjcmVhdGVkQ29uc3RyYWludElkLAorCQkJCQkgcmVsLT5yZF9yZWwtPnJlbHBlcnNp c3RlbmNlKTsKIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklk LCBpbmRleFJlbGF0aW9uSWQpOwogCkBAIC0xNTY5LDYgKzE1ODEsMTYgQEAgRGVmaW5lSW5kZXgo T2lkIHRhYmxlSWQsCiAJCXJldHVybiBhZGRyZXNzOwogCX0KIAorCS8qCisJICogSW4gY2FzZSBv ZiBjb25jdXJyZW50IGJ1aWxkIC0gY3JlYXRlIGF1eGlsaWFyeSBpbmRleCByZWNvcmQuCisJICov CisJaWYgKGNvbmN1cnJlbnQpCisJeworCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2F1eChyZWwsIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJdGFi bGVzcGFjZUlkLCBhdXhJbmRleFJlbGF0aW9uTmFtZSk7CisJCU9iamVjdEFkZHJlc3NTZXQoYXV4 QWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCX0KKwog CUF0RU9YYWN0X0dVQyhmYWxzZSwgcm9vdF9zYXZlX25lc3RsZXZlbCk7CiAJU2V0VXNlcklkQW5k U2VjQ29udGV4dChyb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQpOwogCkBA IC0xNTk3LDExICsxNjE5LDExIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJICog Rm9yIGEgY29uY3VycmVudCBidWlsZCwgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSB0aGUgY2F0YWxv ZyBlbnRyaWVzCiAJICogdmlzaWJsZSB0byBvdGhlciB0cmFuc2FjdGlvbnMgYmVmb3JlIHdlIHN0 YXJ0IHRvIGJ1aWxkIHRoZSBpbmRleC4gVGhhdAotCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20g bWFraW5nIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlcy4gIFRoZSBuZXcgaW5kZXgKLQkgKiB3aWxs IGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsIHNvIHRoYXQgbm8g b25lIGVsc2UKLQkgKiB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZv ciBxdWVyaWVzLgorCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0aWJs ZSBIT1QgdXBkYXRlcy4gTmV3IGluZGV4ZXMKKwkgKiAobWFpbiBhbmQgYXV4aWxpYXJ5KSB3aWxs IGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsCisJICogc28gdGhh dCBubyBvbmUgZWxzZSB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZv ciBxdWVyaWVzLgogCSAqCi0JICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rp b24gc28gdGhhdCB0aGUgaW5kZXggYmVjb21lcworCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJy ZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4ZXMgYmVjb21lcwogCSAqIHZpc2libGU7 IHRoZW4gc3RhcnQgYW5vdGhlci4gIE5vdGUgdGhhdCBhbGwgdGhlIGRhdGEgc3RydWN0dXJlcyB3 ZSBqdXN0CiAJICogYnVpbHQgYXJlIGxvc3QgaW4gdGhlIGNvbW1pdC4gIFRoZSBvbmx5IGRhdGEg d2Uga2VlcCBwYXN0IGhlcmUgYXJlIHRoZQogCSAqIHJlbGF0aW9uIElEcy4KQEAgLTE2MTEsNyAr MTYzMyw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNhbm5vdCBibG9jaywgZXZl biBpZiBzb21lb25lIGVsc2UgaXMgd2FpdGluZyBmb3IgYWNjZXNzLCBiZWNhdXNlIHdlCiAJICog YWxyZWFkeSBoYXZlIHRoZSBzYW1lIGxvY2sgd2l0aGluIG91ciB0cmFuc2FjdGlvbi4KIAkgKgot CSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Npb24gbG9jayBv biB0aGUgaW5kZXgsCisJICogTm90ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEg c2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRleGVzLAogCSAqIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG9w ZXJhdGlvbnMgdGhhdCBjb3VsZCBjaGFuZ2UgaXRzIHN0YXRlIHdoaWxlIHdlCiAJICogaG9sZCBs b2NrIG9uIHRoZSBwYXJlbnQgdGFibGUuICBUaGlzIG1pZ2h0IG5lZWQgdG8gY2hhbmdlIGxhdGVy LgogCSAqLwpAQCAtMTYzMiwxNCArMTY1NCwxNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAl7CiAJCWNvbnN0IGludAlwcm9ncmVzc19jb2xzW10gPSB7CiAJCQlQUk9HUkVTU19DUkVBVEVJ RFhfSU5ERVhfT0lELAorCQkJUFJPR1JFU1NfQ1JFQVRFSURYX0FVWF9JTkRFWF9PSUQsCiAJCQlQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UKIAkJfTsKIAkJY29uc3QgaW50NjQgcHJvZ3Jlc3NfdmFs c1tdID0gewogCQkJaW5kZXhSZWxhdGlvbklkLAorCQkJYXV4SW5kZXhSZWxhdGlvbklkLAogCQkJ UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMQogCQl9OwogCi0JCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfbXVsdGlfcGFyYW0oMiwgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7CisJ CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfY29scywgcHJv Z3Jlc3NfdmFscyk7CiAJfQogCiAJLyoKQEAgLTE2NTAsNyArMTY3NCw3IEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCSAqIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBVc2UgU2hh cmVMb2NrIHRvIGNvbnNpZGVyIHJ1bm5pbmcKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBob2xkIGxv Y2tzIHRoYXQgcGVybWl0IHdyaXRpbmcgdG8gdGhlIHRhYmxlLiAgTm90ZSB3ZQogCSAqIGRvIG5v dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHhhY3RzIHRoYXQgb3BlbiB0aGUgdGFibGUgZm9yIHdyaXRp bmcgYWZ0ZXIKLQkgKiB0aGlzIHBvaW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXggd2hl biB0aGV5IG9wZW4gaXQuCisJICogdGhpcyBwb2ludDsgdGhleSB3aWxsIHNlZSB0aGUgbmV3IGlu ZGV4ZXMgd2hlbiB0aGV5IG9wZW4gaXQuCiAJICoKIAkgKiBOb3RlOiB0aGUgcmVhc29uIHdlIHVz ZSBhY3R1YWwgbG9jayBhY3F1aXNpdGlvbiBoZXJlLCByYXRoZXIgdGhhbiBqdXN0CiAJICogY2hl Y2tpbmcgdGhlIFByb2NBcnJheSBhbmQgc2xlZXBpbmcsIGlzIHRoYXQgZGVhZGxvY2sgaXMgcG9z c2libGUgaWYKQEAgLTE2NjIsMTUgKzE2ODYsMzkgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAKIAkvKgogCSAqIEF0IHRoaXMgbW9tZW50IHdlIGFyZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5v IHRyYW5zYWN0aW9ucyB3aXRoIHRoZQotCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9u J3QgaGF2ZSB0aGlzIG5ldyBpbmRleCBpbiB0aGVpciBsaXN0IG9mCisJICogdGFibGUgb3BlbiBm b3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4ZXMgaW4gdGhlaXIgbGlzdCBv ZgogCSAqIGluZGV4ZXMuICBXZSBoYXZlIHdhaXRlZCBvdXQgYWxsIHRoZSBleGlzdGluZyB0cmFu c2FjdGlvbnMgYW5kIGFueSBuZXcKLQkgKiB0cmFuc2FjdGlvbiB3aWxsIGhhdmUgdGhlIG5ldyBp bmRleCBpbiBpdHMgbGlzdCwgYnV0IHRoZSBpbmRleCBpcyBzdGlsbAotCSAqIG1hcmtlZCBhcyAi bm90LXJlYWR5LWZvci1pbnNlcnRzIi4gIFRoZSBpbmRleCBpcyBjb25zdWx0ZWQgd2hpbGUKKwkg KiB0cmFuc2FjdGlvbiB3aWxsIGhhdmUgYm90aCBuZXcgaW5kZXhlcyBpbiBpdHMgbGlzdCwgYnV0 IGluZGV4ZXMgYXJlIHN0aWxsCisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMi LiBUaGUgaW5kZXhlcyBhcmUgY29uc3VsdGVkIHdoaWxlCiAJICogZGVjaWRpbmcgSE9ULXNhZmV0 eSB0aG91Z2guICBUaGlzIGFycmFuZ2VtZW50IGVuc3VyZXMgdGhhdCBubyBuZXcgSE9UCiAJICog Y2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVw bGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAq IFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNp bmcgbXVsdGlwbGUKKwkgKiBOb3cgY2FsbCBidWlsZCBvbiBhdXhpbGlhcnkgaW5kZXguIEluZGV4 IHdpbGwgYmUgY3JlYXRlZCBlbXB0eSB3aXRob3V0CisJICogYW55IGFjdHVhbCBoZWFwIHNjYW4s IGJ1dCBtYXJrZWQgYXMgInJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGdvYWwgb2YKKwkgKiB0aGF0 IGluZGV4IGlzIGFjY3VtdWxhdGUgbmV3IHR1cGxlcyB3aGlsZSBtYWluIGluZGV4IGlzIGFjdHVh bGx5IGJ1aWx0LgorCSAqLworCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZCh0YWJsZUlkLCBhdXhJ bmRleFJlbGF0aW9uSWQsIHRydWUpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJ U3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBi dWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRl eCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfMik7CisJLyoKKwkgKiBOb3cgd2UgbmVlZCB0byBlbnN1cmUgYXJlIG5v IHRyYW5zYWN0aW9ucyB3aXRoIHRoZSB3aXRoIGF1eGlsaWFyeSBpbmRleAorCSAqIG1hcmtlZCBh cyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4KKwkgKi8KKwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9j a3RhZywgU2hhcmVMb2NrLCB0cnVlKTsKKworCS8qCisJICogQXQgdGhpcyBtb21lbnQgd2UgYXJl IHN1cmUgd2hhdCBhbGwgbmV3IHR1cGxlcyBpbiB0YWJsZSBhcmUgaW5zZXJ0ZWQgaW50bworCSAq IGF1eGlsaWFyeSBpbmRleC4gTm93IGl0IGlzIHRpbWUgdG8gYnVpbGQgdGhlIHRhcmdldCBpbmRl eCBpdHNlbGYuCisJICoKKwkgKiBXZSBidWlsZCB0aGF0IGluZGV4IHVzaW5nIGFsbCB0dXBsZXMg dGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQogCSAqIHJlZnJlc2hpbmcgc25hcHNob3Rz LiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxl cyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1h ZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXgg YXJlIG5vdyBjb21taXR0ZWQgb3IKQEAgLTE2NzksNyArMTcyNyw3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCSAqLwogCiAJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4 ICovCi0JaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7 CisJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgZmFs c2UpOwogCiAJLyoKIAkgKiBDb21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSBpbmRp c3JlYWR5IHVwZGF0ZSB2aXNpYmxlLgpAQCAtMTY5OCw0MyArMTc0NiwyOCBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkgKiB0aGUgaW5kZXggbWFya2VkIGFzIHJlYWQtb25seSBmb3IgdXBk YXRlcy4KIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOwor CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CiAJV2FpdEZvckxvY2tl cnMoaGVhcGxvY2t0YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CiAKIAkvKgotCSAqIE5vdyB0YWtlIHRo ZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRl eCgpCi0JICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdo dCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4KLQkgKiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0 aW9uIGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHJlZmVyZW5jZQotCSAqIHNuYXBzaG90IHRyZWF0 cyBhcyBjb21taXR0ZWQuICBJZiBzdWNoIGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9u Ci0JICogZGVsZXRlZCB0dXBsZXMgaW4gdGhlIHRhYmxlLCB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRo ZW0gaW4gdGhlIGluZGV4OyB5ZXQKLQkgKiB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2ggc2VlIHRo ZSBkZWxldGluZyBvbmUgYXMgc3RpbGwtaW4tcHJvZ3Jlc3Mgd2lsbAotCSAqIGV4cGVjdCBzdWNo IHR1cGxlcyB0byBiZSB0aGVyZSBvbmNlIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAq Ci0JICogV2Ugc29sdmUgdGhpcyBieSB3YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2Fj dGlvbnMgdG8gZXhpdCBiZWZvcmUKLQkgKiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkg KgotCSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwgc2luY2UgZnVu Y3Rpb25zIGluIGluZGV4ZXMgbWF5Ci0JICogbmVlZCBhIHNuYXBzaG90LgorCSAqIFVwZGF0aW5n IHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UK KwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKLQorCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwogCS8qCi0JICogU2NhbiB0aGUgaW5kZXggYW5kIHRoZSBoZWFwLCBpbnNlcnQgYW55IG1pc3Np bmcgaW5kZXggZW50cmllcy4KKwkgKiBOb3cgdGFyZ2V0IGluZGV4IGlzIG1hcmtlZCBhcyAicmVh ZHkiIGZvciBhbGwgdHJhbnNhY3Rpb24uIFNvLCBhdXhpbGlhcnkKKwkgKiBpbmRleCBpcyBub3Qg bW9yZSBuZWVkZWQuIFNvLCBzdGFydCByZW1vdmluZyBwcm9jZXNzIGJ5IHJldmVydGluZyAicmVh ZHkiCisJICogZmxhZy4KIAkgKi8KLQl2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0 aW9uSWQsIHNuYXBzaG90KTsKLQotCS8qCi0JICogRHJvcCB0aGUgcmVmZXJlbmNlIHNuYXBzaG90 LiAgV2UgbXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0aW5nIG91dCBvdGhlcgotCSAqIHNuYXBzaG90 IGhvbGRlcnMsIGVsc2Ugd2Ugd2lsbCBkZWFkbG9jayBhZ2FpbnN0IG90aGVyIHByb2Nlc3NlcyBh bHNvCi0JICogZG9pbmcgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSwgd2hpY2ggd291bGQgc2Vl IG91ciBzbmFwc2hvdCBhcyBvbmUKLQkgKiB0aGV5IG11c3Qgd2FpdCBmb3IuICBCdXQgZmlyc3Qs IHNhdmUgdGhlIHNuYXBzaG90J3MgeG1pbiB0byB1c2UgYXMKLQkgKiBsaW1pdFhtaW4gZm9yIEdl dEN1cnJlbnRWaXJ0dWFsWElEcygpLgotCSAqLwotCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWlu OwotCisJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGF1eEluZGV4UmVsYXRpb25JZCwgSU5ERVhfRFJP UF9DTEVBUl9SRUFEWSk7CiAJUG9wQWN0aXZlU25hcHNob3QoKTsKLQlVbnJlZ2lzdGVyU25hcHNo b3Qoc25hcHNob3QpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkvKgorCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFu ZCB0YXJnZXQgaW5kZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgorCSAq LworCWxpbWl0WG1pbiA9IHZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwg YXV4SW5kZXhSZWxhdGlvbklkKTsKIAogCS8qCiAJICogVGhlIHNuYXBzaG90IHN1YnN5c3RlbSBj b3VsZCBzdGlsbCBjb250YWluIHJlZ2lzdGVyZWQgc25hcHNob3RzIHRoYXQKQEAgLTE3NDcsNiAr MTc4MCw0OSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCisJLyogVGVsbCBjb25jdXJy ZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlm IChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJLyoKKwkgKiBV cGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5z dXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFw c2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCS8qIE5vdyBpdCBpcyB0aW1lIHRvIG1h cmsgYXV4aWxpYXJ5IGluZGV4IGFzIGRlYWQgKi8KKwlpbmRleF9jb25jdXJyZW50bHlfc2V0X2Rl YWQodGFibGVJZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwor CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkvKgorCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJh bnNhY3Rpb24sIHRoZXJlJ3Mgbm8gbmVlZAorCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lD IGZsYWcgaGVyZS4KKwkgKi8KKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF80KTsKKwkvKiBOb3cgd2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9uIHRvIGlnbm9yZSBhdXhpbGlh cnkgYmVjYXVzZSBpdCBpcyBkZWFkICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogRHJvcCBhdXhpbGlhcnkg aW5kZXguCisJICoKKwkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0aGlz IHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKKwkgKiB0byBzZXQgdGhlIFBST0NfSU5fU0FG RV9JQyBmbGFnIGhlcmUuCisJICoKKwkgKiBVc2UgUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5U X0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUKKwkgKiByaWdodCBsb2NrIGxldmVs LgorCSAqLworCXBlcmZvcm1EZWxldGlvbigmYXV4QWRkcmVzcywgRFJPUF9SRVNUUklDVCwKKwkJ CQkJCQkgUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UX0xPQ0sgfCBQRVJGT1JNX0RFTEVUSU9O X0lOVEVSTkFMKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKIAkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGln bm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCiAJaWYgKHNhZmVfaW5kZXgpCiAJCXNldF9p bmRleHNhZmVfcHJvY2ZsYWdzKCk7CkBAIC0xNzU3LDEyICsxODMzLDEyIEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCS8qCiAJICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vu c2UgdGhhdCBpdCBjb250YWlucyBhbGwgY3VycmVudGx5CiAJICogaW50ZXJlc3RpbmcgdHVwbGVz LiAgQnV0IHNpbmNlIGl0IG1pZ2h0IG5vdCBjb250YWluIHR1cGxlcyBkZWxldGVkIGp1c3QKLQkg KiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91 dCBhbnkKLQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4K KwkgKiBiZWZvcmUgdGhlIGxhc3Qgc25hcHNob3QgZHVyaW5nIHZhbGlkYXRpbmcgd2FzIHRha2Vu LCB3ZSBoYXZlIHRvIHdhaXQKKwkgKiBvdXQgYW55IHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhh dmUgb2xkZXIgc25hcHNob3RzLgogCSAqLwogCUlOSkVDVElPTl9QT0lOVCgiZGVmaW5lX2luZGV4 X2JlZm9yZV9zZXRfdmFsaWQiKTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzMpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CiAJV2Fp dEZvck9sZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkvKgpAQCAtMzU0Miw2ICsz NjE4LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl0eXBlZGVmIHN0cnVjdCBSZWluZGV4 SW5kZXhJbmZvCiAJewogCQlPaWQJCQlpbmRleElkOworCQlPaWQJCQlhdXhJbmRleElkOwogCQlP aWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZlOwkJLyogZm9yIHNldF9p bmRleHNhZmVfcHJvY2ZsYWdzICovCkBAIC0zNTYzLDkgKzM2NDAsMTAgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkJUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkQsCiAJCVBST0dSRVNTX0NS RUFURUlEWF9QSEFTRSwKIAkJUFJPR1JFU1NfQ1JFQVRFSURYX0lOREVYX09JRCwKKwkJUFJPR1JF U1NfQ1JFQVRFSURYX0FVWF9JTkRFWF9PSUQsCiAJCVBST0dSRVNTX0NSRUFURUlEWF9BQ0NFU1Nf TUVUSE9EX09JRAogCX07Ci0JaW50NjQJCXByb2dyZXNzX3ZhbHNbNF07CisJaW50NjQJCXByb2dy ZXNzX3ZhbHNbNV07CiAKIAkvKgogCSAqIENyZWF0ZSBhIG1lbW9yeSBjb250ZXh0IHRoYXQgd2ls bCBzdXJ2aXZlIGZvcmNlZCB0cmFuc2FjdGlvbiBjb21taXRzIHdlCkBAIC0zODY1LDE1ICszOTQz LDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCiAJ ewogCQljaGFyCSAgICpjb25jdXJyZW50TmFtZTsKKwkJY2hhcgkgICAqYXV4Q29uY3VycmVudE5h bWU7CiAJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJzdChsYyk7CiAJCVJlaW5kZXhJbmRl eEluZm8gKm5ld2lkeDsKIAkJT2lkCQkJbmV3SW5kZXhJZDsKKwkJT2lkCQkJYXV4SW5kZXhJZDsK IAkJUmVsYXRpb24JaW5kZXhSZWw7CiAJCVJlbGF0aW9uCWhlYXBSZWw7CiAJCU9pZAkJCXNhdmVf dXNlcmlkOwogCQlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCQlpbnQJCQlzYXZlX25lc3RsZXZl bDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CisJCVJlbGF0aW9uCWF1eEluZGV4UmVsOwogCQlM b2NrUmVsSWQgICpsb2NrcmVsaWQ7CiAJCU9pZAkJCXRhYmxlc3BhY2VpZDsKIApAQCAtMzkxNSw4 ICszOTk2LDkgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3NfdmFsc1swXSA9 IFBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5EX1JFSU5ERVhfQ09OQ1VSUkVOVExZOwogCQlwcm9n cmVzc192YWxzWzFdID0gMDsJLyogaW5pdGlhbGl6aW5nICovCiAJCXByb2dyZXNzX3ZhbHNbMl0g PSBpZHgtPmluZGV4SWQ7Ci0JCXByb2dyZXNzX3ZhbHNbM10gPSBpZHgtPmFtSWQ7Ci0JCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNz X3ZhbHMpOworCQlwcm9ncmVzc192YWxzWzNdID0gSW52YWxpZE9pZDsKKwkJcHJvZ3Jlc3NfdmFs c1s0XSA9IGlkeC0+YW1JZDsKKwkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg1 LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAKIAkJLyogQ2hvb3NlIGEgdGVtcG9y YXJ5IHJlbGF0aW9uIG5hbWUgZm9yIHRoZSBuZXcgaW5kZXggKi8KIAkJY29uY3VycmVudE5hbWUg PSBDaG9vc2VSZWxhdGlvbk5hbWUoZ2V0X3JlbF9uYW1lKGlkeC0+aW5kZXhJZCksCkBAIC0zOTI0 LDYgKzQwMDYsMTEgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkJCQkJImNjbmV3 IiwKIAkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRy ZWxpZCksCiAJCQkJCQkJCQkJCWZhbHNlKTsKKwkJYXV4Q29uY3VycmVudE5hbWUgPSBDaG9vc2VS ZWxhdGlvbk5hbWUoZ2V0X3JlbF9uYW1lKGlkeC0+aW5kZXhJZCksCisJCQkJCQkJCQkJCU5VTEws CisJCQkJCQkJCQkJCSJjY2F1eCIsCisJCQkJCQkJCQkJCWdldF9yZWxfbmFtZXNwYWNlKGluZGV4 UmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpLAorCQkJCQkJCQkJCQlmYWxzZSk7CiAKIAkJLyogQ2hv b3NlIHRoZSBuZXcgdGFibGVzcGFjZSwgaW5kZXhlcyBvZiB0b2FzdCB0YWJsZXMgYXJlIG5vdCBt b3ZlZCAqLwogCQlpZiAoT2lkSXNWYWxpZChwYXJhbXMtPnRhYmxlc3BhY2VPaWQpICYmCkBAIC0z OTM3LDEyICs0MDI0LDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkJ aWR4LT5pbmRleElkLAogCQkJCQkJCQkJCQkJCXRhYmxlc3BhY2VpZCwKIAkJCQkJCQkJCQkJCQlj b25jdXJyZW50TmFtZSk7CisJCWF1eEluZGV4SWQgPSBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRl X2F1eChoZWFwUmVsLAorCQkJCQkJCQkJCQkJICAgaWR4LT5pbmRleElkLAorCQkJCQkJCQkJCQkJ ICAgdGFibGVzcGFjZWlkLAorCQkJCQkJCQkJCQkJICAgYXV4Q29uY3VycmVudE5hbWUpOwogCiAJ CS8qCiAJCSAqIE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0aGUgbmV3IGluZGV4LCBhIHNlc3Np b24tbGV2ZWwgbG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBvbiBpdC4KIAkJICovCiAJCW5ld0lu ZGV4UmVsID0gaW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sp OworCQlhdXhJbmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNs dXNpdmVMb2NrKTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBsaXN0IG9mIE9JRHMgYW5kIGxvY2tz IGluIHByaXZhdGUgY29udGV4dApAQCAtMzk1MSw2ICs0MDQzLDcgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAogCQluZXdpZHggPSBwYWxsb2Nfb2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwog CQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOworCQluZXdpZHgtPmF1eEluZGV4SWQgPSBh dXhJbmRleElkOwogCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJ ZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0gaWR4LT5hbUlkOwpAQCAtMzk2OSwx MCArNDA2MiwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlsb2NrcmVsaWQgPSBwYWxs b2Nfb2JqZWN0KExvY2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQgPSBuZXdJbmRleFJlbC0+cmRfbG9j a0luZm8ubG9ja1JlbElkOwogCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tz LCBsb2NrcmVsaWQpOworCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CSpsb2NrcmVsaWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOworCQlyZWxh dGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOwogCiAJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlpbmRleF9jbG9zZShpbmRleFJlbCwg Tm9Mb2NrKTsKKwkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Ns b3NlKG5ld0luZGV4UmVsLCBOb0xvY2spOwogCiAJCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5n ZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCkBAIC00MDUzLDEzICs0MTUwLDU1IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogZG9pbmcgdGhhdCwgd2FpdCB1bnRpbCBubyBy dW5uaW5nIHRyYW5zYWN0aW9ucyBjb3VsZCBoYXZlIHRoZSB0YWJsZSBvZgogCSAqIHRoZSBpbmRl eCBvcGVuIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBTZWUgInBoYXNlIDIiIGluCiAJ ICogRGVmaW5lSW5kZXgoKSBmb3IgbW9yZSBkZXRhaWxzLgorCSovCisJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9XQUlUXzEpOworCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1Rh Z3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkv KgorCSAqIE5vdyBidWlsZCBhbGwgYXV4aWxpYXJ5IGluZGV4ZXMgYW5kIG1hcmsgdGhlbSBhcyAi cmVhZHktZm9yLWluc2VydHMiLgorCSAqLworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsK KwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKworCQlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCisJCS8qCisJCSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBh Ym9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28gYXMKKwkJICogeGFjdC5jIGRv ZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJCSAqIHNl c3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJvcnQuCisJCSAqLworCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGluZyB0byBp Z25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlpZiAobmV3aWR4LT5zYWZlKQorCQkJ c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKiBCdWlsZCBhdXhpbGlhcnkgaW5kZXgs IGl0IGlzIGZhc3QgLSB3aXRob3V0IGFueSBhY3R1YWwgaGVhcCBzY2FuLCBqdXN0IGFuIGVtcHR5 IGluZGV4LiAqLworCQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50YWJsZUlkLCBu ZXdpZHgtPmF1eEluZGV4SWQsIHRydWUpOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCX0KKworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEJlY2F1c2Ug d2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8g bmVlZAorCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkgKi8KIAog CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAot CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkvKgorCSAqIFdhaXQgdW50aWwgYWxsIGF1 eGlsaWFyeSBpbmRleGVzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgYnkgYWxsCisJICogdHJhbnNh Y3Rpb25zLgorCSAqLwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9j aywgdHJ1ZSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKKwkvKiBOb3cgaXQgaXMg dGltZSB0byBwZXJmb3JtIHRhcmdldCBpbmRleCBidWlsZC4gKi8KIAlmb3JlYWNoKGxjLCBuZXdJ bmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CkBA IC00MDg2LDExICs0MjI1LDEyIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXByb2dyZXNz X3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJFTlRM WTsKIAkJcHJvZ3Jlc3NfdmFsc1sxXSA9IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRDsK IAkJcHJvZ3Jlc3NfdmFsc1syXSA9IG5ld2lkeC0+aW5kZXhJZDsKLQkJcHJvZ3Jlc3NfdmFsc1sz XSA9IG5ld2lkeC0+YW1JZDsKLQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0 LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CisJCXByb2dyZXNzX3ZhbHNbM10gPSBu ZXdpZHgtPmF1eEluZGV4SWQ7CisJCXByb2dyZXNzX3ZhbHNbNF0gPSBuZXdpZHgtPmFtSWQ7CisJ CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNSwgcHJvZ3Jlc3NfaW5kZXgsIHBy b2dyZXNzX3ZhbHMpOwogCiAJCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5k ZXggKi8KLQkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4 LT5pbmRleElkKTsKKwkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwg bmV3aWR4LT5pbmRleElkLCBmYWxzZSk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CiAJfQpAQCAtNDEwMiwyNCArNDI0Miw1MiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCSAq IG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCSAqLwogCisJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKKwlXYWl0Rm9yTG9ja2Vyc011 bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJLyoKKwkgKiBBdCB0aGlzIG1vbWVudCBhbGwgdGFyZ2V0IGluZGV4ZXMgYXJl IG1hcmtlZCBhcyAicmVhZHktdG8taW5zZXJ0Ii4gU28sCisJICogd2UgYXJlIGZyZWUgdG8gc3Rh cnQgcHJvY2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcy4KKwkgKi8KKwlmb3JlYWNo KGxjLCBuZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJz dChsYyk7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCS8qCisJCSAqIENoZWNrIGZv ciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28g YXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5z dXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJv cnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29uY3Vy cmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlpZiAo bmV3aWR4LT5zYWZlKQorCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKgorCQkg KiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28g ZW5zdXJlIHdlCisJCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlpbmRleF9zZXRfc3RhdGVf ZmxhZ3MobmV3aWR4LT5hdXhJbmRleElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKKwkJUG9w QWN0aXZlU25hcHNob3QoKTsKKworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisK IAkvKgogCSAqIFBoYXNlIDMgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgotCSAqIER1cmlu ZyB0aGlzIHBoYXNlIHRoZSBvbGQgaW5kZXhlcyBjYXRjaCB1cCB3aXRoIGFueSBuZXcgdHVwbGVz IHRoYXQKKwkgKiBEdXJpbmcgdGhpcyBwaGFzZSB0aGUgbmV3IGluZGV4ZXMgY2F0Y2ggdXAgd2l0 aCBhbnkgbmV3IHR1cGxlcyB0aGF0CiAJICogd2VyZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJldmlv dXMgcGhhc2UuICBTZWUgInBoYXNlIDMiIGluIERlZmluZUluZGV4KCkKIAkgKiBmb3IgbW9yZSBk ZXRhaWxzLgogCSAqLwotCi0JcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8y KTsKLQlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwot CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMp CiAJewogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwogCQlUcmFuc2Fj dGlvbklkIGxpbWl0WG1pbjsKLQkJU25hcHNob3QJc25hcHNob3Q7CiAKIAkJU3RhcnRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKIApAQCAtNDEzNCwxMyArNDMwMiw2IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJCWlmIChuZXdpZHgtPnNhZmUpCiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygp OwogCi0JCS8qCi0JCSAqIFRha2UgdGhlICJyZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBi ZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkKLQkJICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBs ZXMuCi0JCSAqLwotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQogCQkvKgogCQkg KiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVj dCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00MTQ5LDE5ICs0MzEwLDEyIEBAIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJl bGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXByb2dyZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVB VEVJRFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJFTlRMWTsKIAkJcHJvZ3Jlc3NfdmFsc1sxXSA9 IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOOwogCQlwcm9ncmVzc192 YWxzWzJdID0gbmV3aWR4LT5pbmRleElkOwotCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5h bUlkOwotCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2lu ZGV4LCBwcm9ncmVzc192YWxzKTsKKwkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YXV4SW5k ZXhJZDsKKwkJcHJvZ3Jlc3NfdmFsc1s0XSA9IG5ld2lkeC0+YW1JZDsKKwkJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg1LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7 CiAKLQkJdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIHNu YXBzaG90KTsKLQotCQkvKgotCQkgKiBXZSBjYW4gbm93IGRvIGF3YXkgd2l0aCBvdXIgYWN0aXZl IHNuYXBzaG90LCB3ZSBzdGlsbCBuZWVkIHRvIHNhdmUKLQkJICogdGhlIHhtaW4gbGltaXQgdG8g d2FpdCBmb3Igb2xkZXIgc25hcHNob3RzLgotCQkgKi8KLQkJbGltaXRYbWluID0gc25hcHNob3Qt PnhtaW47Ci0KLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJVW5yZWdpc3RlclNuYXBzaG90KHNu YXBzaG90KTsKKwkJbGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJsZUlkLCBu ZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisJCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkJLyoKIAkJICogVG8gZW5zdXJlIG5vIGRl YWRsb2Nrcywgd2UgbXVzdCBjb21taXQgYW5kIHN0YXJ0IHlldCBhbm90aGVyCkBAIC00MTgxLDcg KzQzMzUsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQg KnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKiB0aGVyZSdzIG5vIG5lZWQg dG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlLgogCQkgKi8KIAkJcGdzdGF0X3By b2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJCQkJCQkJCQkgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJCVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4s IHRydWUpOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNDI3MSwxNCArNDQy NSwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCS8qCiAJICogUGhhc2UgNSBvZiBSRUlO REVYIENPTkNVUlJFTlRMWQogCSAqCi0JICogTWFyayB0aGUgb2xkIGluZGV4ZXMgYXMgZGVhZC4g IEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubyBydW5uaW5nCi0JICogdHJhbnNhY3Rpb24gY291 bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28KKwkgKiBNYXJrIHRo ZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFzIGRlYWQuIEZpcnN0IHdlIG11c3Qgd2FpdCB1 bnRpbCBubworCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4 IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0YWls cy4KIAkgKi8KIAogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50 bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF80KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwogCVdh aXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUp OwogCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCkBAIC00MzAzLDYgKzQ0NTcsMjggQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAl9CiAKKwlmb3JlYWNo KGxjLCBuZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJz dChsYyk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhp cyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNz dWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZl bCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisKKwkJLyoKKwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBU T0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNo b3QuCisJCSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKKworCQlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdp ZHgtPmF1eEluZGV4SWQpOworCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCiAJLyogQ29t bWl0IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUgdXBkYXRlcyB2aXNpYmxlLiAqLwogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBA IC00MzE2LDExICs0NDkyLDExIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJLyoKIAkgKiBQ aGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkgKiBEcm9wIHRoZSBvbGQgaW5k ZXhlcy4KKwkgKiBEcm9wIHRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzLgogCSAqLwogCiAJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0J CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKKwkJCQkJCQkJIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9j a1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwogCiAJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC00MzQwLDYgKzQ1MTYsMTggQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBv YmplY3RzKTsKIAkJfQogCisJCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCQl7CisJCQlSZWlu ZGV4SW5kZXhJbmZvICppZHggPSBsZmlyc3QobGMpOworCQkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7 CisKKwkJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQkJb2JqZWN0Lm9i amVjdElkID0gaWR4LT5hdXhJbmRleElkOworCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwor CQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOworCQl9CisKIAkJ LyoKIAkJICogVXNlIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5k ZXhfZHJvcCgpIHVzZXMgdGhlCiAJCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCBlYzM3Njk1ODVjMy4uZDg4MTI0MWY4MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt NzE0LDExICs3MTQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJ CQkgICBUYWJsZVNjYW5EZXNjIHNjYW4pOwogCiAJLyogc2VlIHRhYmxlX2luZGV4X3ZhbGlkYXRl X3NjYW4gZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCi0Jdm9pZAkJKCppbmRleF92 YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAotCQkJCQkJCQkJCVJlbGF0aW9uIGlu ZGV4X3JlbCwKLQkJCQkJCQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJCQkJ CQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3Rh dGUgKnN0YXRlKTsKKwlUcmFuc2FjdGlvbklkIAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVs YXRpb24gdGFibGVfcmVsLAorCQkJCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVsLAorCQkJCQkJ CQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKKwkJCQkJCQkJCQkJCXN0cnVjdCBW YWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5k ZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIAogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODY2LDIy ICsxODY2LDIyIEBAIHRhYmxlX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gdGFibGVf cmVsLAogfQogCiAvKgotICogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiAtIHNlY29uZCB0YWJs ZSBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCisgKiB0YWJsZV9pbmRleF92YWxpZGF0 ZV9zY2FuIC0gdmFsaWRhdGlvbiBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCiAgKgog ICogU2VlIHZhbGlkYXRlX2luZGV4KCkgZm9yIGFuIGV4cGxhbmF0aW9uLgogICovCi1zdGF0aWMg aW5saW5lIHZvaWQKK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAogdGFibGVfaW5kZXhfdmFs aWRhdGVfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAJCQkJCQkgIFJlbGF0aW9uIGluZGV4X3Jl bCwKIAkJCQkJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJCSAgU25hcHNo b3Qgc25hcHNob3QsCi0JCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQor CQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgc3RydWN0 IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4c3RhdGUpCiB7Ci0JdGFibGVfcmVsLT5yZF90YWJsZWFt LT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxlX3JlbCwKLQkJCQkJCQkJCQkJICAgaW5kZXhfcmVs LAotCQkJCQkJCQkJCQkgICBpbmRleF9pbmZvLAotCQkJCQkJCQkJCQkgICBzbmFwc2hvdCwKLQkJ CQkJCQkJCQkJICAgc3RhdGUpOworCXJldHVybiB0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4 X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAorCQkJCQkJCQkJCQkJCSAgaW5kZXhfcmVsLAorCQkJ CQkJCQkJCQkJCSAgaW5kZXhfaW5mbywKKwkJCQkJCQkJCQkJCQkgIHN0YXRlLAorCQkJCQkJCQkJ CQkJCSAgYXV4c3RhdGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAyZGVhOTZmNDdjMy4u ODJkMGQ2YjQ2ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlwZWRlZiBl bnVtCiB7CiAJSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSwKIAlJTkRFWF9DUkVBVEVfU0VUX1ZBTElE LAorCUlOREVYX0RST1BfQ0xFQVJfUkVBRFksCiAJSU5ERVhfRFJPUF9DTEVBUl9WQUxJRCwKIAlJ TkRFWF9EUk9QX1NFVF9ERUFELAogfSBJbmRleFN0YXRlRmxhZ3NBY3Rpb247CkBAIC02NSw2ICs2 Niw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9uIGhlYXBS ZWwsCiAjZGVmaW5lCUlOREVYX0NSRUFURV9JRl9OT1RfRVhJU1RTCQkJKDEgPDwgNCkKICNkZWZp bmUJSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVECQkJKDEgPDwgNSkKICNkZWZpbmUgSU5ERVhfQ1JF QVRFX0lOVkFMSUQJCQkJKDEgPDwgNikKKyNkZWZpbmUgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWQkJ CQkoMSA8PCA3KQogCiBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJCQkJCQkgY29uc3QgY2hhciAqaW5kZXhSZWxhdGlvbk5hbWUsCkBAIC04Niw3ICs4OCw4 IEBAIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CSBiaXRzMTYgY29uc3RyX2ZsYWdzLAogCQkJCQkJIGJvb2wgYWxsb3dfc3lzdGVtX3RhYmxlX21v ZHMsCiAJCQkJCQkgYm9vbCBpc19pbnRlcm5hbCwKLQkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCk7 CisJCQkJCQkgT2lkICpjb25zdHJhaW50SWQsCisJCQkJCQkgY2hhciByZWxwZXJzaXN0ZW5jZSk7 CiAKICNkZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9NQVJLX0FTX1BSSU1BUlkJKDEgPDwgMCkK ICNkZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFCQkoMSA8PCAxKQpAQCAtMTAw LDggKzEwMywxNCBAQCBleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsCiAJ CQkJCQkJCQkJICAgY29uc3QgY2hhciAqbmV3TmFtZSk7CiAKK2V4dGVybiBPaWQJaW5kZXhfY29u Y3VycmVudGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAg T2lkIG1haW5JbmRleElkLAorCQkJCQkJCQkJCSAgT2lkIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJ CQkJICBjb25zdCBjaGFyICpuZXdOYW1lKTsKKwogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKLQkJCQkJCQkJCSBPaWQgaW5kZXhSZWxhdGlv bklkKTsKKwkJCQkJCQkJCSBPaWQgaW5kZXhSZWxhdGlvbklkLAorCQkJCQkJCQkJIGJvb2wgYXV4 aWxpYXJ5KTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X3N3YXAoT2lkIG5ld0lu ZGV4SWQsCiAJCQkJCQkJCQlPaWQgb2xkSW5kZXhJZCwKQEAgLTE0NSw3ICsxNTQsNyBAQCBleHRl cm4gdm9pZCBpbmRleF9idWlsZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQlib29sIGlz cmVpbmRleCwKIAkJCQkJCWJvb2wgcGFyYWxsZWwpOwogCi1leHRlcm4gdm9pZCB2YWxpZGF0ZV9p bmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJu IFRyYW5zYWN0aW9uSWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9p ZCBhdXhJbmRleElkKTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBp bmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dy ZXNzLmgKaW5kZXggNTYxNmQ2NDUyMzAuLjg5ZjhkMDJmZGMzIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dy ZXNzLmgKQEAgLTg4LDYgKzg4LDcgQEAKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExF U19ET05FCQkJMTIKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BBUlRJVElPTlNfVE9UQUwJ CTEzCiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUJCTE0CisjZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9BVVhfSU5ERVhfT0lECQkxNQogLyogMTUgYW5kIDE2IHJl c2VydmVkIGZvciAiYmxvY2sgbnVtYmVyIiBtZXRyaWNzICovCiAKIC8qIFBoYXNlcyBvZiBDUkVB VEUgSU5ERVggKGFzIGFkdmVydGlzZWQgdmlhIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSkgKi8K QEAgLTk2LDEwICs5NywxMSBAQAogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8yCQkJMwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NB Tgk0CiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9TT1JUCQk1Ci0j ZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9UQUJMRVNDQU4JNgorI2Rl ZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UJNgogI2RlZmlu ZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNwogI2RlZmluZSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfV0FJVF80CQkJOAogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF81CQkJOQorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82CQkJ MTAKIAogLyoKICAqIFN1YnBoYXNlcyBvZiBDUkVBVEUgSU5ERVgsIGZvciBpbmRleF9idWlsZC4K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5ZjAzZmEzMDMzYy4uNzgw MzEzZjQ3N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTIzLDYg KzIzLDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkJywgJ25v dGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRF IFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwogSU5T RVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC00MywzMCArNDksMzggQEAgQUxURVIgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVf c2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZm ZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9 IDA7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw YW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCkBAIC03 Niw5ICs5MCwxMSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJ TkcgQlJJTihpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBt b2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJz PTIpOwpAQCAtOTEsMjMgKzEwNywzMSBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnKTsKIAogQ1JFQVRFIFVOSVFVRSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRl X3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKIE5PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f bm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hF UkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92 YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZQpAQCAtMTE2LDEzICsxNDAsMTcgQEAgTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0 aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5V TExTIExBU1QpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3Zh bGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgU0NIRU1BIGNp Y19yZXNldF9zbmFwIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIg b2JqZWN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3Nx bC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggMjk0MWFhN2FlMzguLjI0OWQx MDYxYWRhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3Fs L2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTQsNiArNCw3IEBAIFNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVz ZXRfc25hcHNob3RzJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKK1NFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkJywg J25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxF IGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IDE5MDRlYjY1YmI5Li43ZTAw OGIxY2JkOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5k ZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApA QCAtMTQyMyw2ICsxNDIzLDcgQEAgREVUQUlMOiAgS2V5IChmMSk9KGIpIGFscmVhZHkgZXhpc3Rz LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25j dXJfaGVhcChmMik7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJjb25j dXJfaW5kZXgzIgogREVUQUlMOiAgS2V5IChmMik9KGIpIGlzIGR1cGxpY2F0ZWQuCitEUk9QIElO REVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVz IGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J2EnOwog Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYy KSBXSEVSRSBmMT0neCc7CkBAIC0zMDE1LDYgKzMwMTYsNyBAQCBJTlNFUlQgSU5UTyBjb25jdXJf cmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChj MSk7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJjb25jdXJfcmVpbmRl eF9pbmQ1IgogREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitEUk9QIElOREVY IGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0 aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBpbmRl eCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwpAQCAtMzAyNyw4ICszMDI5 LDEwIEBAIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgogIGMxICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogSW5kZXhlczoKICAgICAiY29uY3VyX3Jl aW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAgICAiY29uY3VyX3JlaW5k ZXhfaW5kNV9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKICAgICAiY29uY3VyX3JlaW5kZXhfaW5k NV9jY25ldyIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKIAorRFJPUCBJTkRFWCBjb25jdXJf cmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3 OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5k ZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hF UkUgYzEgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGlu Zy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dAppbmRleCBiY2Yx ZGIxMWQ3My4uM2ZlY2FhMzg4NTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvaW5kZXhpbmcub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcu b3V0CkBAIC0xNTg1LDEwICsxNTg1LDExIEBAIHNlbGVjdCBpbmRleHJlbGlkOjpyZWdjbGFzcywg aW5kaXN2YWxpZCwKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgcGFydGVkX2lzdmFsaWRfaWR4ICAgICAgICAgICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9p c3ZhbGlkX3RhYiAgICB8IAogIHBhcnRlZF9pc3ZhbGlkX2lkeF8xMSAgICAgICAgICB8IGYgICAg ICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTEgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHBy X2lkeAorIHBhcnRlZF9pc3ZhbGlkX2lkeF8xMV9jY2F1eCAgICB8IGYgICAgICAgICAgfCBwYXJ0 ZWRfaXN2YWxpZF90YWJfMTEgfCAKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMTJfZXhwcl9pZHggfCB0 ICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzEyIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFf ZXhwcl9pZHgKICBwYXJ0ZWRfaXN2YWxpZF90YWJfMV9leHByX2lkeCAgfCBmICAgICAgICAgIHwg cGFydGVkX2lzdmFsaWRfdGFiXzEgIHwgcGFydGVkX2lzdmFsaWRfaWR4CiAgcGFydGVkX2lzdmFs aWRfdGFiXzJfZXhwcl9pZHggIHwgdCAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8yICB8 IHBhcnRlZF9pc3ZhbGlkX2lkeAotKDUgcm93cykKKyg2IHJvd3MpCiAKIGRyb3AgdGFibGUgcGFy dGVkX2lzdmFsaWRfdGFiOwogLS0gQ2hlY2sgc3RhdGUgb2YgcmVwbGljYSBpbmRleGVzIHdoZW4g YXR0YWNoaW5nIGEgcGFydGl0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwK aW5kZXggYzA4NWUwNWYwNTIuLmM0NGU0NjBiMGQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV9pbmRleC5zcWwKQEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBJRiBOT1QgRVhJU1RTIGNvbmN1cl9pbmRleDIgT04gY29uY3VyX2hlYXAoZjEpOwog SU5TRVJUIElOVE8gY29uY3VyX2hlYXAgVkFMVUVTICgnYicsJ3gnKTsKIC0tIGNoZWNrIGlmIGNv bnN0cmFpbnQgaXMgZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVpbGQgdGltZQogQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CitE Uk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBp bmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9 J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9o ZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0xMjM5LDEwICsxMjQwLDEyIEBAIENSRUFURSBUQUJM RSBjb25jdXJfcmVpbmRleF90YWI0IChjMSBpbnQpOwogSU5TRVJUIElOVE8gY29uY3VyX3JlaW5k ZXhfdGFiNCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIC0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBp bnZhbGlkIGluZGV4LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3Jl aW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CitEUk9QIElOREVYIGNvbmN1 cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGlu ZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVh dGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3JlaW5kZXhfdGFi NAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25j dXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVy ZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNv bmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwotLSAKMi40My4wCgo= --000000000000a19089062a03c8a5--