Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBncL-00063v-GW for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 00:21:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mBncK-0004Fx-FI for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 00:21:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBncJ-0004Fg-Sw for pgsql-hackers@lists.postgresql.org; Fri, 06 Aug 2021 00:21:40 +0000 Received: from smtp-fw-80007.amazon.com ([99.78.197.218]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBncH-00073d-7w for pgsql-hackers@postgresql.org; Fri, 06 Aug 2021 00:21:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1628209297; x=1659745297; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=gLycNBNP053nvSlV5TOoY1albbCfD+XK1jvypUtigRU=; b=U7eeI4XODDTg2j0N1WR/md9YIycKe0Km035KewenEicpBF8b+1OVeb4y /krYjL9mtkkmXG6IvcBRb2b2cLcecph+jbCnvUX0gMdbylESau0kFqRZt YYKogHQlhoMq5GpwMzV4zA6yW/IzSwiHqEB+CM0dLw1R54tcecLR9C47X 8=; X-Amazon-filename: v5-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch X-IronPort-AV: E=Sophos;i="5.84,299,1620691200"; d="scan'208,223";a="17391059" Subject: Re: archive status ".ready" files may be created too early Thread-Topic: archive status ".ready" files may be created too early Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-2a-119b4f96.us-west-2.amazon.com) ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with ESMTP; 06 Aug 2021 00:21:36 +0000 Received: from EX13MTAUWB001.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-2a-119b4f96.us-west-2.amazon.com (Postfix) with ESMTPS id 6927D1A027C; Fri, 6 Aug 2021 00:21:35 +0000 (UTC) Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13MTAUWB001.ant.amazon.com (10.43.161.249) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 6 Aug 2021 00:21:35 +0000 Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13D03UWC004.ant.amazon.com (10.43.162.49) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 6 Aug 2021 00:21:34 +0000 Received: from EX13D03UWC004.ant.amazon.com ([10.43.162.49]) by EX13D03UWC004.ant.amazon.com ([10.43.162.49]) with mapi id 15.00.1497.023; Fri, 6 Aug 2021 00:21:34 +0000 From: "Bossart, Nathan" To: Kyotaro Horiguchi CC: "alvherre@alvh.no-ip.org" , "x4mmm@yandex-team.ru" , "a.lubennikova@postgrespro.ru" , "hlinnaka@iki.fi" , "matsumura.ryo@fujitsu.com" , "masao.fujii@gmail.com" , "pgsql-hackers@postgresql.org" Thread-Index: AQHXBlOcCCTzqq5m7Uma04zSuWx/6atYjIMA//+aBICABK+JgP//qfYAgACvAID//9F4gAAoArgA//+nPACAA9nigP//qHQAgACqMwCAAMe5AIACUeaAgAAjTwD//55qgIAAm8IAgACkkoA= Date: Fri, 6 Aug 2021 00:21:34 +0000 Message-ID: <839F3FB0-CAFB-455D-9010-F894A6978FAC@amazon.com> References: <20210805.105757.2185619490399623846.horikyota.ntt@gmail.com> <20210805.130420.22317944693814351.horikyota.ntt@gmail.com> <20210805.163232.980813829599921437.horikyota.ntt@gmail.com> In-Reply-To: <20210805.163232.980813829599921437.horikyota.ntt@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.161.187] Content-Type: multipart/mixed; boundary="_002_839F3FB0CAFB455D9010F894A6978FACamazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_839F3FB0CAFB455D9010F894A6978FACamazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <6A6AB79E0734DC4BAF75B6C3DFCBE689@amazon.com> Content-Transfer-Encoding: base64 T24gOC81LzIxLCAxMjozOSBBTSwgIkt5b3Rhcm8gSG9yaWd1Y2hpIiA8aG9yaWt5b3RhLm50dEBn bWFpbC5jb20+IHdyb3RlOg0KPiBIb25lc3RseSBJIGRvbid0IGxpa2UgaGF2aW5nIHRoaXMgaW5p dGlhbGl6YXRpb24gaW4gWExvZ1dyaXRlLiAgV2UNCj4gc2hvdWxkIGFuZCBJIHRoaW5rIGNhbiBp bml0aWFsaXplIGl0IGVhcmxpZXIuICBJdCBzZWVtcyB0byBtZSB0aGUgbW9zdA0KPiBhcHByb3By aWF0ZSB0aW1pbmcgdG8gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGUgaXMganVzdCBiZWZvcmUgcnVu bmluZw0KPiB0aGUgZW5kLW9mLXJlY292ZXJ5IGNoZWNrcG9pbnQpLiAgU2luY2UgU3RhcnR1cFhM T0cga25vd3MgdGhlIGZpcnN0DQo+IHNlZ21lbnQgdG8gd3JpdGUgLiAgSWYgaXQgd2VyZSBzZXQg dG8gMCwgdGhhdCBkb2Vzbid0IG1hdHRlciBhdCBhbGwuDQo+IFdlIGNhbiBnZXQgcmlkIG9mIHRo ZSBuZXcgc3ltYm9sIGJ5IGRvaW5nIHRoaXMuDQoNClRoaXMgc2VlbXMgbGlrZSBhIGdvb2QgaWRl YSB0byBtZS4gIEkgbWFkZSB0aGlzIGNoYW5nZSBpbiB2NS4gIEkNCnBlcmZvcm1lZCBzb21lIGJh c2ljIHRlc3RpbmcsIGFuZCBpdCBzZWVtcyB0byByZWxpYWJseSBpbml0aWFsaXplDQpsYXN0Tm90 aWZpZWRTZWcgY29ycmVjdGx5Lg0KDQo+ICsJLyoNCj4gKwkgKiBFbmRPZkxvZyByZXNpZGVzIG9u IHRoZSBuZXh0IHNlZ21lbnQgb2YgdGhlIGxhc3QgZmluaXNoZWQgb25lLiBTZXQgdGhlDQo+ICsJ ICogbGFzdCBmaW5pc2hlZCBzZWdtZW50IGFzIGxhc3ROb3RpZmllZFNlZyBub3cuICBJbiB0aGUg Y2FzZSB3aGVyZSB0aGUNCj4gKwkgKiBsYXN0IGNyYXNoIGhhcyBsZWZ0IHRoZSBsYXN0IHNldmVy YWwgc2VnbWVudHMgbm90IGJlaW5nIG1hcmtlZCBhcw0KPiArCSAqIC5yZWFkeSwgdGhlIGNoZWNr cG9pbnQganVzdCBhZnRlciBkb2VzIHRoYXQgZm9yIGFsbCBmaW5pc2hlZCBzZWdtZW50cy4NCj4g KwkgKiBUaGVyZSdzIGEgY29ybmVyIGNhc2Ugd2hlcmUgdGhlIGNoZWNrcG9pbnQgYWR2YW5jZXMg c2VnbWVudCwgYnV0IHRoYXQNCj4gKwkgKiBlbmRzIHVwIGF0IG1vc3Qgd2l0aCBhIGR1cGxpY2F0 ZSBhcmNoaXZlIG5vdGlmaWNhdGlvbi4NCj4gKwkgKi8NCg0KSSdtIG5vdCBxdWl0ZSBmb2xsb3dp bmcgdGhlIGNvcm5lciBjYXNlIHlvdSd2ZSBkZXNjcmliZWQgaGVyZS4gIElzIGl0DQpwb3NzaWJs ZSB0aGF0IHRoZSBzZWdtZW50IHRoYXQgRW5kT2ZMb2cgcG9pbnRzIHRvIHdpbGwgYmUgZWxpZ2li bGUgZm9yDQpyZW1vdmFsIGFmdGVyIHRoZSBjaGVja3BvaW50Pw0KDQpJbiB2NSBvZiB0aGUgcGF0 Y2gsIEkndmUgYWxzbyBhZGRlZCBhbiBleHRyYSBjYWxsIHRvDQpOb3RpZnlTZWdtZW50c1JlYWR5 Rm9yQXJjaGl2ZSgpIGluIHRoZSBzYW1lIHBsYWNlIHdlIHByZXZpb3VzbHkNCmNyZWF0ZWQgdGhl IC5yZWFkeSBmaWxlcy4gIEkgdGhpbmsgdGhpcyBoZWxwcyBub3RpZnkgYXJjaGl2ZXIgc29vbmVy DQppbiBjZXJ0YWluIGNhc2VzIChlLmcuLCBhc3luY2hyb25vdXMgY29tbWl0KS4NCg0KTmF0aGFu DQoNCg== --_002_839F3FB0CAFB455D9010F894A6978FACamazoncom_ Content-Type: application/octet-stream; name="v5-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch" Content-Description: v5-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch Content-Disposition: attachment; filename="v5-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch"; size=19465; creation-date="Fri, 06 Aug 2021 00:21:34 GMT"; modification-date="Fri, 06 Aug 2021 00:21:34 GMT" Content-ID: <2573CC8BE5DB5744A6C2DFCB228EED43@amazon.com> Content-Transfer-Encoding: base64 RnJvbSBhMzBkZTczZmRhNDU3YjQwMjFiOTZmMzcxNzE5MGQ4OGQ4Nzk1M2JiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogVGh1LCA1IEF1ZyAyMDIxIDIzOjQ4OjA0ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2NSAx LzFdIEF2b2lkIGNyZWF0aW5nIGFyY2hpdmUgc3RhdHVzICIucmVhZHkiIGZpbGVzIHRvbwogZWFy bHkuCgpXQUwgcmVjb3JkcyBtYXkgc3BhbiBtdWx0aXBsZSBzZWdtZW50cywgYnV0IFhMb2dXcml0 ZSgpIGRvZXMgbm90CndhaXQgZm9yIHRoZSBlbnRpcmUgcmVjb3JkIHRvIGJlIHdyaXR0ZW4gb3V0 IHRvIGRpc2sgYmVmb3JlCmNyZWF0aW5nIGFyY2hpdmUgc3RhdHVzIGZpbGVzLiAgSW5zdGVhZCwg YXMgc29vbiBhcyB0aGUgbGFzdCBXQUwKcGFnZSBvZiB0aGUgc2VnbWVudCBpcyB3cml0dGVuLCB0 aGUgYXJjaGl2ZSBzdGF0dXMgZmlsZSB3aWxsIGJlCmNyZWF0ZWQuICBJZiBQb3N0Z3JlU1FMIGNy YXNoZXMgYmVmb3JlIGl0IGlzIGFibGUgdG8gd3JpdGUgdGhlIHJlc3QKb2YgdGhlIHJlY29yZCwg aXQgd2lsbCBlbmQgdXAgcmV1c2luZyBzZWdtZW50cyB0aGF0IGhhdmUgYWxyZWFkeQpiZWVuIG1h cmtlZCBhcyByZWFkeS1mb3ItYXJjaGl2YWwuICBIb3dldmVyLCB0aGUgYXJjaGl2ZXIgcHJvY2Vz cwptYXkgaGF2ZSBhbHJlYWR5IHByb2Nlc3NlZCB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIHNlZ21l bnQsIHNvIHRoZQp3cm9uZyB2ZXJzaW9uIG9mIHRoZSBzZWdtZW50IG1heSBiZSBiYWNrZWQtdXAu ICBUaGlzIGJhY2tlZC11cApzZWdtZW50IHdpbGwgY2F1c2Ugb3BlcmF0aW9ucyBzdWNoIGFzIHBv aW50LWluLXRpbWUgcmVzdG9yZXMgdG8KZmFpbC4KClRvIGZpeCB0aGlzLCB3ZSBrZWVwIHRyYWNr IG9mIHJlY29yZHMgdGhhdCBzcGFuIGFjcm9zcyBzZWdtZW50cyBhbmQKZW5zdXJlIHRoYXQgc2Vn bWVudHMgYXJlIG9ubHkgbWFya2VkIHJlYWR5LWZvci1hcmNoaXZhbCBvbmNlIHN1Y2gKcmVjb3Jk cyBoYXZlIGJlZW4gY29tcGxldGVseSB3cml0dGVuIHRvIGRpc2suCi0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdGltZWxpbmUuYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICB8IDMwNyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2ZS5jIHwgIDE0ICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgIHwgICA2ICstCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0IHwgICAxICsKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nYXJjaGl2ZS5oICAgICAgICAgfCAgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMzEy IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90 aW1lbGluZS5jCmluZGV4IDhkMDkwM2MxNzUuLmFjZDVjMjQzMWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vdGltZWxpbmUuYwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHdyaXRlVGltZUxpbmVIaXN0 b3J5KFRpbWVMaW5lSUQgbmV3VExJLCBUaW1lTGluZUlEIHBhcmVudFRMSSwKIAlpZiAoWExvZ0Fy Y2hpdmluZ0FjdGl2ZSgpKQogCXsKIAkJVExIaXN0b3J5RmlsZU5hbWUoaGlzdGZuYW1lLCBuZXdU TEkpOwotCQlYTG9nQXJjaGl2ZU5vdGlmeShoaXN0Zm5hbWUpOworCQlYTG9nQXJjaGl2ZU5vdGlm eShoaXN0Zm5hbWUsIHRydWUpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmlu ZGV4IGQwZWM2YTgzNGIuLmY5NWRkOTIyMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMK QEAgLTUxMiw2ICs1MTIsMTMgQEAgdHlwZWRlZiBlbnVtIEV4Y2x1c2l2ZUJhY2t1cFN0YXRlCiAg Ki8KIHN0YXRpYyBTZXNzaW9uQmFja3VwU3RhdGUgc2Vzc2lvbkJhY2t1cFN0YXRlID0gU0VTU0lP Tl9CQUNLVVBfTk9ORTsKIAorLyogZW50cmllcyBmb3IgUmVjb3JkQm91bmRhcnlNYXAsIHVzZWQg dG8gbWFyayBzZWdtZW50cyByZWFkeSBmb3IgYXJjaGl2YWwgKi8KK3R5cGVkZWYgc3RydWN0IFJl Y29yZEJvdW5kYXJ5RW50cnkKK3sKKwlYTG9nU2VnTm8gc2VnOwkvKiBtdXN0IGJlIGZpcnN0ICov CisJWExvZ1JlY1B0ciBwb3M7Cit9IFJlY29yZEJvdW5kYXJ5RW50cnk7CisKIC8qCiAgKiBTaGFy ZWQgc3RhdGUgZGF0YSBmb3IgV0FMIGluc2VydGlvbi4KICAqLwpAQCAtNzIzLDYgKzczMCwxMiBA QCB0eXBlZGVmIHN0cnVjdCBYTG9nQ3RsRGF0YQogCSAqLwogCVhMb2dSZWNQdHIJbGFzdEZwd0Rp c2FibGVSZWNQdHI7CiAKKwkvKgorCSAqIFRoZSBsYXN0IHNlZ21lbnQgd2UndmUgbWFya2VkIHJl YWR5IGZvciBhcmNoaXZhbC4gIFByb3RlY3RlZCBieQorCSAqIGluZm9fbGNrLgorCSAqLworCVhM b2dTZWdObyBsYXN0Tm90aWZpZWRTZWc7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tz IHNoYXJlZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ0N0bERhdGE7CiAKQEAgLTcz Niw2ICs3NDksMTIgQEAgc3RhdGljIFdBTEluc2VydExvY2tQYWRkZWQgKldBTEluc2VydExvY2tz ID0gTlVMTDsKICAqLwogc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUgPSBOVUxM OwogCisvKgorICogUmVjb3JkIGJvdW5kYXJ5IG1hcCwgdXNlZCBmb3IgbWFya2luZyBzZWdtZW50 cyBhcyByZWFkeSBmb3IgYXJjaGl2YWwuCisgKiBQcm90ZWN0ZWQgYnkgQXJjaE5vdGlmeUxvY2su CisgKi8KK3N0YXRpYyBIVEFCICpSZWNvcmRCb3VuZGFyeU1hcCA9IE5VTEw7CisKIC8qCiAgKiBD YWxjdWxhdGUgdGhlIGFtb3VudCBvZiBzcGFjZSBsZWZ0IG9uIHRoZSBwYWdlIGFmdGVyICdlbmRw dHInLiBCZXdhcmUKICAqIG11bHRpcGxlIGV2YWx1YXRpb24hCkBAIC05NjIsNiArOTgxLDEzIEBA IHN0YXRpYyBYTG9nUmVjUHRyIFhMb2dCeXRlUG9zVG9SZWNQdHIodWludDY0IGJ5dGVwb3MpOwog c3RhdGljIFhMb2dSZWNQdHIgWExvZ0J5dGVQb3NUb0VuZFJlY1B0cih1aW50NjQgYnl0ZXBvcyk7 CiBzdGF0aWMgdWludDY0IFhMb2dSZWNQdHJUb0J5dGVQb3MoWExvZ1JlY1B0ciBwdHIpOwogc3Rh dGljIHZvaWQgY2hlY2tYTG9nQ29uc2lzdGVuY3koWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwor c3RhdGljIHZvaWQgUmVnaXN0ZXJSZWNvcmRCb3VuZGFyeUVudHJ5KFhMb2dTZWdObyBzZWcsIFhM b2dSZWNQdHIgcG9zKTsKK3N0YXRpYyB2b2lkIE5vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZl KFhMb2dSZWNQdHIgZmx1c2hSZWNQdHIpOworc3RhdGljIFhMb2dTZWdObyBHZXRMYXN0Tm90aWZp ZWRTZWdtZW50KHZvaWQpOworc3RhdGljIHZvaWQgU2V0TGFzdE5vdGlmaWVkU2VnbWVudChYTG9n U2VnTm8gc2VnKTsKK3N0YXRpYyBYTG9nU2VnTm8gR2V0TGF0ZXN0UmVjb3JkQm91bmRhcnlTZWdt ZW50KFhMb2dTZWdObyBsYXN0X25vdGlmaWVkLAorCQkJCQkJCQkJCQkJWExvZ1JlY1B0ciBmbHVz aGVkLCBib29sICpmb3VuZCk7CitzdGF0aWMgdm9pZCBSZW1vdmVSZWNvcmRCb3VuZGFyaWVzVXBU byhYTG9nU2VnTm8gc2VnKTsKIAogc3RhdGljIHZvaWQgV0FMSW5zZXJ0TG9ja0FjcXVpcmUodm9p ZCk7CiBzdGF0aWMgdm9pZCBXQUxJbnNlcnRMb2NrQWNxdWlyZUV4Y2x1c2l2ZSh2b2lkKTsKQEAg LTExNTgsNiArMTE4NCw5IEBAIFhMb2dJbnNlcnRSZWNvcmQoWExvZ1JlY0RhdGEgKnJkYXRhLAog CSAqLwogCWlmIChTdGFydFBvcyAvIFhMT0dfQkxDS1NaICE9IEVuZFBvcyAvIFhMT0dfQkxDS1Na KQogCXsKKwkJWExvZ1NlZ05vIFN0YXJ0U2VnOworCQlYTG9nU2VnTm8gRW5kU2VnOworCiAJCVNw aW5Mb2NrQWNxdWlyZSgmWExvZ0N0bC0+aW5mb19sY2spOwogCQkvKiBhZHZhbmNlIGdsb2JhbCBy ZXF1ZXN0IHRvIGluY2x1ZGUgbmV3IGJsb2NrKHMpICovCiAJCWlmIChYTG9nQ3RsLT5Mb2d3cnRS cXN0LldyaXRlIDwgRW5kUG9zKQpAQCAtMTE2NSwxMiArMTE5NCwzNiBAQCBYTG9nSW5zZXJ0UmVj b3JkKFhMb2dSZWNEYXRhICpyZGF0YSwKIAkJLyogdXBkYXRlIGxvY2FsIHJlc3VsdCBjb3B5IHdo aWxlIEkgaGF2ZSB0aGUgY2hhbmNlICovCiAJCUxvZ3dydFJlc3VsdCA9IFhMb2dDdGwtPkxvZ3dy dFJlc3VsdDsKIAkJU3BpbkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CisKKwkJLyoK KwkJICogUmVjb3JkIHRoZSByZWNvcmQgYm91bmRhcnkgaWYgd2UgY3Jvc3NlZCB0aGUgc2VnbWVu dCBib3VuZGFyeS4gIFRoaXMKKwkJICogaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBzZWdtZW50cyBh cmUgbm90IG1hcmtlZCByZWFkeSBmb3IgYXJjaGl2YWwKKwkJICogYmVmb3JlIHRoZSBlbnRpcmUg cmVjb3JkIGhhcyBiZWVuIGZsdXNoZWQgdG8gZGlzay4KKwkJICoKKwkJICogTm90ZSB0aGF0IHdl IGRvIG5vdCB1c2UgWExCeXRlVG9QcmV2U2VnKCkgZm9yIGRldGVybWluaW5nIHRoZSBlbmRpbmcK KwkJICogc2VnbWVudC4gIFRoaXMgaXMgZG9uZSBzbyB0aGF0IGEgcmVjb3JkIHRoYXQgZml0cyBw ZXJmZWN0bHkgaW50byB0aGUKKwkJICogZW5kIG9mIHRoZSBzZWdtZW50IGlzIG1hcmtlZCByZWFk eSBmb3IgYXJjaGl2YWwgYXMgc29vbiBhcyB0aGUKKwkJICogZmx1c2hlZCBwb2ludGVyIGp1bXBz IHRvIHRoZSBuZXh0IHNlZ21lbnQuCisJCSAqLworCQlYTEJ5dGVUb1NlZyhTdGFydFBvcywgU3Rh cnRTZWcsIHdhbF9zZWdtZW50X3NpemUpOworCQlYTEJ5dGVUb1NlZyhFbmRQb3MsIEVuZFNlZywg d2FsX3NlZ21lbnRfc2l6ZSk7CisKKwkJaWYgKFN0YXJ0U2VnICE9IEVuZFNlZyAmJiBYTG9nQXJj aGl2aW5nQWN0aXZlKCkpCisJCXsKKwkJCVJlZ2lzdGVyUmVjb3JkQm91bmRhcnlFbnRyeShFbmRT ZWcsIEVuZFBvcyk7CisKKwkJCS8qCisJCQkgKiBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgdGhlIHJl Y29yZCB3YXMgYWxyZWFkeSBmbHVzaGVkIHRvIGRpc2sgYW5kCisJCQkgKiB3ZSBtaXNzZWQgbWFy a2luZyBzZWdtZW50cyBhcyByZWFkeSBmb3IgYXJjaGl2ZSwgc28gdHJ5IHRvIGRvCisJCQkgKiB0 aGF0IG5vdy4KKwkJCSAqLworCQkJTm90aWZ5U2VnbWVudHNSZWFkeUZvckFyY2hpdmUoSW52YWxp ZFhMb2dSZWNQdHIpOworCQl9CiAJfQogCiAJLyoKIAkgKiBJZiB0aGlzIHdhcyBhbiBYTE9HX1NX SVRDSCByZWNvcmQsIGZsdXNoIHRoZSByZWNvcmQgYW5kIHRoZSBlbXB0eQotCSAqIHBhZGRpbmcg c3BhY2UgdGhhdCBmaWxscyB0aGUgcmVzdCBvZiB0aGUgc2VnbWVudCwgYW5kIHBlcmZvcm0KLQkg KiBlbmQtb2Ytc2VnbWVudCBhY3Rpb25zIChlZywgbm90aWZ5aW5nIGFyY2hpdmVyKS4KKwkgKiBw YWRkaW5nIHNwYWNlIHRoYXQgZmlsbHMgdGhlIHJlc3Qgb2YgdGhlIHNlZ21lbnQuCiAJICovCiAJ aWYgKGlzTG9nU3dpdGNoKQogCXsKQEAgLTEyNjQsNiArMTMxNywyMTQgQEAgWExvZ0luc2VydFJl Y29yZChYTG9nUmVjRGF0YSAqcmRhdGEsCiAJcmV0dXJuIEVuZFBvczsKIH0KIAorLyoKKyAqIFJl Z2lzdGVyUmVjb3JkQm91bmRhcnlFbnRyeQorICoKKyAqIFRoaXMgZW50ZXJzIGEgbmV3IGVudHJ5 IGludG8gdGhlIHJlY29yZCBib3VuZGFyeSBtYXAsIHdoaWNoIGlzIHVzZWQgZm9yCisgKiBkZXRl cm1pbmcgd2hlbiBpdCBpcyBzYWZlIHRvIG1hcmsgYSBzZWdtZW50IGFzIHJlYWR5IGZvciBhcmNo aXZhbC4gIEFuIGVudHJ5CisgKiB3aXRoIHRoZSBnaXZlbiBrZXkgKHRoZSBzZWdtZW50IG51bWJl cikgbXVzdCBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgbWFwLgorICogQWxzbywgdGhlIGNhbGxl ciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBYTEJ5dGVUb1NlZygpIHdvdWxkIHJl dHVybgorICogdGhlIHNhbWUgc2VnbWVudCBudW1iZXIgZm9yIHRoZSBnaXZlbiByZWNvcmQgcG9p bnRlci4KKyAqLworc3RhdGljIHZvaWQKK1JlZ2lzdGVyUmVjb3JkQm91bmRhcnlFbnRyeShYTG9n U2VnTm8gc2VnLCBYTG9nUmVjUHRyIHBvcykKK3sKKwlSZWNvcmRCb3VuZGFyeUVudHJ5ICplbnRy eTsKKwlib29sIGZvdW5kOworCisJTFdMb2NrQWNxdWlyZShBcmNoTm90aWZ5TG9jaywgTFdfRVhD TFVTSVZFKTsKKworCWVudHJ5ID0gKFJlY29yZEJvdW5kYXJ5RW50cnkgKikgaGFzaF9zZWFyY2go UmVjb3JkQm91bmRhcnlNYXAsCisJCQkJCQkJCQkJCQkodm9pZCAqKSAmc2VnLCBIQVNIX0VOVEVS LAorCQkJCQkJCQkJCQkJJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJST1IsICJyZWNv cmQgYm91bmRhcnkgZW50cnkgZm9yIHNlZ21lbnQgYWxyZWFkeSBleGlzdHMiKTsKKworCWVudHJ5 LT5wb3MgPSBwb3M7CisKKwlMV0xvY2tSZWxlYXNlKEFyY2hOb3RpZnlMb2NrKTsKK30KKworLyoK KyAqIE5vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZlCisgKgorICogVGhpcyBmdW5jdGlvbiBt YXJrcyBzZWdtZW50cyBhcyByZWFkeSBmb3IgYXJjaGl2YWwsIGdpdmVuIHRoYXQgaXQgaXMgc2Fm ZSB0bworICogZG8gc28uICBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiByZXBlYXRl ZGx5LCBldmVuIGlmIG5vdGhpbmcgaGFzCisgKiBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUg aXQgd2FzIGNhbGxlZC4KKyAqCisgKiBJZiBmbHVzaFJlY1B0ciBpcyBub3QgZXF1YWwgdG8gSW52 YWxpZFhMb2dSZWNQdHIsIGl0IGlzIHVzZWQgYXMgdGhlIGN1cnJlbnQKKyAqICJmbHVzaGVkIiBw b2ludGVyLiAgT3RoZXJ3aXNlLCB3ZSByZXRyaWV2ZSB0aGUgdmFsdWUgaW4gc2hhcmVkIG1lbW9y eS4KKyAqLworc3RhdGljIHZvaWQKK05vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZlKFhMb2dS ZWNQdHIgZmx1c2hSZWNQdHIpCit7CisJWExvZ1JlY1B0cglmbHVzaGVkOworCVhMb2dTZWdObwlm bHVzaGVkX3NlZzsKKwlYTG9nU2VnTm8JbGF0ZXN0X2JvdW5kYXJ5X3NlZzsKKwlYTG9nU2VnTm8J bGFzdF9ub3RpZmllZDsKKwlib29sCQlmb3VuZDsKKworCS8qCisJICogV2UgZmlyc3QgZG8gYSBx dWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBiYWlsIG91dCB3aXRob3V0IHRha2lu ZworCSAqIHRoZSBBcmNoTm90aWZ5TG9jayBhdCBhbGwuICBJdCBpcyBleHBlY3RlZCB0aGF0IHRo aXMgZnVuY3Rpb24gd2lsbCBydW4KKwkgKiBmcmVxdWVudGx5IGFuZCB0aGF0IGl0IHdpbGwgbmVl ZCB0byBkbyBub3RoaW5nIHRoZSB2YXN0IG1ham9yaXR5IG9mIHRoZQorCSAqIHRpbWUuCisJICoK KwkgKiBTcGVjaWZpY2FsbHksIHdlIGJhaWwgb3V0IGlmIHdlJ3ZlIGFscmVhZHkgbWFya2VkIHRo ZSBzZWdtZW50IHByaW9yIHRvCisJICogdGhlIHNlZ21lbnQgdGhhdCBjb250YWlucyAiZmx1c2hl ZCIgYXMgcmVhZHkgZm9yIGFyY2hpdmFsLiAgV2UKKwkgKiBpbnRlbnRpb25hbGx5IHVzZSBYTEJ5 dGVUb1NlZygpIGluc3RlYWQgb2YgWExCeXRlVG9QcmV2U2VnKCkgc28gdGhhdCB3ZQorCSAqIGRv bid0IHNraXAgbm90aWZ5aW5nIHdoZW4gYSByZWNvcmQgZml0cyBwZXJmZWN0bHkgaW50byB0aGUg ZW5kIG9mIGEKKwkgKiBzZWdtZW50LiAgKCJmbHVzaGVkIiBzaG91bGQgcG9pbnQgdG8gdGhlIGZp cnN0IGJ5dGUgb2YgdGhlIHJlY29yZCBfYWZ0ZXJfCisJICogdGhlIG9uZSB0aGF0IGlzIGtub3du IHRvIGJlIGZsdXNoZWQgdG8gZGlzay4pCisJICovCisJbGFzdF9ub3RpZmllZCA9IEdldExhc3RO b3RpZmllZFNlZ21lbnQoKTsKKworCS8qCisJICogSWYgbm8gZmx1c2hlZCBwb2ludGVyIHdhcyBw cm92aWRlZCwgcmV0cmlldmUgdGhlIHZhbHVlIGZyb20gc2hhcmVkCisJICogbWVtb3J5LgorCSAq LworCWlmIChmbHVzaFJlY1B0ciA9PSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJZmx1c2hlZCA9IEdl dEZsdXNoUmVjUHRyKCk7CisJZWxzZQorCQlmbHVzaGVkID0gZmx1c2hSZWNQdHI7CisJWExCeXRl VG9TZWcoZmx1c2hlZCwgZmx1c2hlZF9zZWcsIHdhbF9zZWdtZW50X3NpemUpOworCisJaWYgKGxh c3Rfbm90aWZpZWQgPj0gZmx1c2hlZF9zZWcgLSAxKQorCQlyZXR1cm47CisKKwlMV0xvY2tBY3F1 aXJlKEFyY2hOb3RpZnlMb2NrLCBMV19FWENMVVNJVkUpOworCisJLyoKKwkgKiBSZW9idGFpbiBs YXN0Tm90aWZpZWRTZWcgaW4gY2FzZSBzb21lb25lIGVsc2UgY2hhbmdlZCBpdCwgYW5kIHJldHJp ZXZlCisJICogdGhlIGxhdGVzdCByZWNvcmQgYm91bmRhcnkgc2VnbWVudCB0byB1c2UgZm9yIG5v dGlmeWluZyBzZWdtZW50cy4KKwkgKi8KKwlsYXN0X25vdGlmaWVkID0gR2V0TGFzdE5vdGlmaWVk U2VnbWVudCgpOworCWxhdGVzdF9ib3VuZGFyeV9zZWcgPSBHZXRMYXRlc3RSZWNvcmRCb3VuZGFy eVNlZ21lbnQobGFzdF9ub3RpZmllZCwgZmx1c2hlZCwgJmZvdW5kKTsKKworCS8qCisJICogTm90 aWZ5IGFyY2hpdmVyIGFib3V0IHNlZ21lbnRzIHRoYXQgYXJlIHJlYWR5IGZvciBhcmNoaXZhbCAo YnkgY3JlYXRpbmcKKwkgKiB0aGUgY29ycmVzcG9uZGluZyAucmVhZHkgZmlsZXMpLCBhbmQgZGlz Y2FyZCBzZWdtZW50IGJvdW5kYXJpZXMgdGhhdCBhcmUKKwkgKiBubyBsb25nZXIgbmVlZGVkLgor CSAqLworCWlmIChmb3VuZCkKKwl7CisJCVhMb2dTZWdObyBzZWc7CisKKwkJLyoKKwkJICogVXBk YXRlIHNoYXJlZCBtZW1vcnkuICBXZSBkbyB0aGlzIGZpcnN0IHNvIHRoYXQgb3RoZXIgY2FsbGVy cyBiZWdpbgorCQkgKiBiYWlsaW5nIG91dCBiZWZvcmUgdGFraW5nIEFyY2hOb3RpZnlMb2NrIGFz IHNvb24gYXMgcG9zc2libGUuICBJdCBpcworCQkgKiBwb3NzaWJsZSB0aGF0IFhMb2dBcmNoaXZl Tm90aWZ5U2VnKCkgd2lsbCBmYWlsLCBidXQKKwkJICogUmVtb3ZlT2xkWGxvZ0ZpbGVzKCkgd2ls bCByZXRyeSBpdCBhcyBuZWNlc3NhcnkuCisJCSAqLworCQlTZXRMYXN0Tm90aWZpZWRTZWdtZW50 KGxhdGVzdF9ib3VuZGFyeV9zZWcgLSAxKTsKKworCQkvKiBjcmVhdGUgdGhlIGFyY2hpdmUgc3Rh dHVzIGZpbGVzICovCisJCWZvciAoc2VnID0gbGFzdF9ub3RpZmllZCArIDE7IHNlZyA8IGxhdGVz dF9ib3VuZGFyeV9zZWc7IHNlZysrKQorCQkJWExvZ0FyY2hpdmVOb3RpZnlTZWcoc2VnLCBmYWxz ZSk7CisKKwkJLyogcmVtb3ZlIG9sZCBib3VuZGFyaWVzIGZyb20gdGhlIG1hcCAqLworCQlSZW1v dmVSZWNvcmRCb3VuZGFyaWVzVXBUbyhsYXRlc3RfYm91bmRhcnlfc2VnKTsKKworCQlQZ0FyY2hX YWtldXAoKTsKKwl9CisKKwlMV0xvY2tSZWxlYXNlKEFyY2hOb3RpZnlMb2NrKTsKK30KKworLyoK KyAqIEdldExhdGVzdFJlY29yZEJvdW5kYXJ5U2VnbWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb24g ZmluZHMgdGhlIGxhdGVzdCByZWNvcmQgYm91bmRhcnkgaW4gUmVjb3JkQm91bmRhcnlNYXAgdGhh dCBpcworICogbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBnaXZlbiAiZmx1c2hlZCIgcG9pbnRl ciBhbmQgcmV0dXJucyBpdHMgYXNzb2NpYXRlZAorICogc2VnbWVudCBudW1iZXIsIGdpdmVuIHRo YXQgaXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsYXN0IG5vdGlmaWVkIHNlZ21lbnQuICBJZgorICog c3VjaCBhIHNlZ21lbnQgbnVtYmVyIGlzIGZvdW5kLCAqZm91bmQgaXMgc2V0IHRvIHRydWUuICBP dGhlcndpc2UsICpmb3VuZCBpcworICogc2V0IHRvIGZhbHNlLCBhbmQgdGhlIHJldHVybiB2YWx1 ZSBpcyB1bmRlZmluZWQuCisgKi8KK3N0YXRpYyBYTG9nU2VnTm8KK0dldExhdGVzdFJlY29yZEJv dW5kYXJ5U2VnbWVudChYTG9nU2VnTm8gbGFzdF9ub3RpZmllZCwgWExvZ1JlY1B0ciBmbHVzaGVk LAorCQkJCQkJCSAgIGJvb2wgKmZvdW5kKQoreworCVhMb2dTZWdObwlmbHVzaGVkX3NlZzsKKwlY TG9nU2VnTm8Jc2VnOworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKEFyY2hOb3RpZnlMb2NrKSk7 CisJQXNzZXJ0KGZvdW5kICE9IE5VTEwpOworCisJWExCeXRlVG9TZWcoZmx1c2hlZCwgZmx1c2hl ZF9zZWcsIHdhbF9zZWdtZW50X3NpemUpOworCisJZm9yIChzZWcgPSBmbHVzaGVkX3NlZzsgc2Vn ID4gbGFzdF9ub3RpZmllZDsgc2VnLS0pCisJeworCQlSZWNvcmRCb3VuZGFyeUVudHJ5ICplbnRy eTsKKworCQllbnRyeSA9IChSZWNvcmRCb3VuZGFyeUVudHJ5ICopIGhhc2hfc2VhcmNoKFJlY29y ZEJvdW5kYXJ5TWFwLAorCQkJCQkJCQkJCQkJCSh2b2lkICopICZzZWcsIEhBU0hfRklORCwKKwkJ CQkJCQkJCQkJCQlOVUxMKTsKKworCQlpZiAoZW50cnkgIT0gTlVMTCAmJiBmbHVzaGVkID49IGVu dHJ5LT5wb3MpCisJCXsKKwkJCSpmb3VuZCA9IHRydWU7CisJCQlyZXR1cm4gZW50cnktPnNlZzsK KwkJfQorCX0KKworCSpmb3VuZCA9IGZhbHNlOworCXJldHVybiAwOworfQorCisvKgorICogUmVt b3ZlT2xkUmVjb3JkQm91bmRhcmllcworICoKKyAqIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhbGwg ZW50cmllcyBpbiB0aGUgUmVjb3JkQm91bmRhcnlNYXAgd2l0aCBzZWdtZW50CisgKiBudW1iZXJz IHVwIHRvIGFuIGluY2x1ZGluZyBzZWcuCisgKi8KK3N0YXRpYyB2b2lkCitSZW1vdmVSZWNvcmRC b3VuZGFyaWVzVXBUbyhYTG9nU2VnTm8gc2VnKQoreworCVJlY29yZEJvdW5kYXJ5RW50cnkgKmVu dHJ5OworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJ bk1vZGUoQXJjaE5vdGlmeUxvY2ssIExXX0VYQ0xVU0lWRSkpOworCisJaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBSZWNvcmRCb3VuZGFyeU1hcCk7CisKKwl3aGlsZSAoKGVudHJ5ID0gKFJlY29yZEJv dW5kYXJ5RW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJ aWYgKGVudHJ5LT5zZWcgPD0gc2VnKQorCQkJKHZvaWQpIGhhc2hfc2VhcmNoKFJlY29yZEJvdW5k YXJ5TWFwLCAodm9pZCAqKSAmZW50cnktPnNlZywKKwkJCQkJCQkgICBIQVNIX1JFTU9WRSwgTlVM TCk7CisJfQorfQorCisvKgorICogR2V0TGFzdE5vdGlmaWVkU2VnbWVudAorICoKKyAqIFJldHJp ZXZlcyBsYXN0IG5vdGlmaWVkIHNlZ21lbnQgZnJvbSBzaGFyZWQgbWVtb3J5LgorICovCitYTG9n U2VnTm8KK0dldExhc3ROb3RpZmllZFNlZ21lbnQodm9pZCkKK3sKKwlYTG9nU2VnTm8gc2VnOwor CisJU3BpbkxvY2tBY3F1aXJlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CisJc2VnID0gWExvZ0N0bC0+ bGFzdE5vdGlmaWVkU2VnOworCVNwaW5Mb2NrUmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2spOwor CisJcmV0dXJuIHNlZzsKK30KKworLyoKKyAqIFNldExhc3ROb3RpZmllZFNlZ21lbnQKKyAqCisg KiBTZXRzIGxhc3Qgbm90aWZpZWQgc2VnbWVudCBpbiBzaGFyZWQgbWVtb3J5LgorICovCitzdGF0 aWMgdm9pZAorU2V0TGFzdE5vdGlmaWVkU2VnbWVudChYTG9nU2VnTm8gc2VnKQoreworCVNwaW5M b2NrQWNxdWlyZSgmWExvZ0N0bC0+aW5mb19sY2spOworCVhMb2dDdGwtPmxhc3ROb3RpZmllZFNl ZyA9IHNlZzsKKwlTcGluTG9ja1JlbGVhc2UoJlhMb2dDdGwtPmluZm9fbGNrKTsKK30KKwogLyoK ICAqIFJlc2VydmVzIHRoZSByaWdodCBhbW91bnQgb2Ygc3BhY2UgZm9yIGEgcmVjb3JkIG9mIGdp dmVuIHNpemUgZnJvbSB0aGUgV0FMLgogICogKlN0YXJ0UG9zIGlzIHNldCB0byB0aGUgYmVnaW5u aW5nIG9mIHRoZSByZXNlcnZlZCBzZWN0aW9uLCAqRW5kUG9zIHRvCkBAIC0yNTg2LDExICsyODQ3 LDEzIEBAIFhMb2dXcml0ZShYTG9nd3J0UnFzdCBXcml0ZVJxc3QsIGJvb2wgZmxleGlibGUpCiAJ CQkgKiBsYXRlci4gRG9pbmcgaXQgaGVyZSBlbnN1cmVzIHRoYXQgb25lIGFuZCBvbmx5IG9uZSBi YWNrZW5kIHdpbGwKIAkJCSAqIHBlcmZvcm0gdGhpcyBmc3luYy4KIAkJCSAqCi0JCQkgKiBUaGlz IGlzIGFsc28gdGhlIHJpZ2h0IHBsYWNlIHRvIG5vdGlmeSB0aGUgQXJjaGl2ZXIgdGhhdCB0aGUK LQkJCSAqIHNlZ21lbnQgaXMgcmVhZHkgdG8gY29weSB0byBhcmNoaXZhbCBzdG9yYWdlLCBhbmQg dG8gdXBkYXRlIHRoZQotCQkJICogdGltZXIgZm9yIGFyY2hpdmVfdGltZW91dCwgYW5kIHRvIHNp Z25hbCBmb3IgYSBjaGVja3BvaW50IGlmCi0JCQkgKiB0b28gbWFueSBsb2dmaWxlIHNlZ21lbnRz IGhhdmUgYmVlbiB1c2VkIHNpbmNlIHRoZSBsYXN0Ci0JCQkgKiBjaGVja3BvaW50LgorCQkJICog SWYgV0FMIGFyY2hpdmluZyBpcyBhY3RpdmUsIHdlIGF0dGVtcHQgdG8gbm90aWZ5IHRoZSBhcmNo aXZlciBvZgorCQkJICogYW55IHNlZ21lbnRzIHRoYXQgYXJlIG5vdyByZWFkeSBmb3IgYXJjaGl2 YWwuCisJCQkgKgorCQkJICogVGhpcyBpcyBhbHNvIHRoZSByaWdodCBwbGFjZSB0byB1cGRhdGUg dGhlIHRpbWVyIGZvcgorCQkJICogYXJjaGl2ZV90aW1lb3V0IGFuZCB0byBzaWduYWwgZm9yIGEg Y2hlY2twb2ludCBpZiB0b28gbWFueQorCQkJICogbG9nZmlsZSBzZWdtZW50cyBoYXZlIGJlZW4g dXNlZCBzaW5jZSB0aGUgbGFzdCBjaGVja3BvaW50LgorCQkJICoKIAkJCSAqLwogCQkJaWYgKGZp bmlzaGluZ19zZWcpCiAJCQl7CkBAIC0yNjAyLDcgKzI4NjUsNyBAQCBYTG9nV3JpdGUoWExvZ3dy dFJxc3QgV3JpdGVScXN0LCBib29sIGZsZXhpYmxlKQogCQkJCUxvZ3dydFJlc3VsdC5GbHVzaCA9 IExvZ3dydFJlc3VsdC5Xcml0ZTsJLyogZW5kIG9mIHBhZ2UgKi8KIAogCQkJCWlmIChYTG9nQXJj aGl2aW5nQWN0aXZlKCkpCi0JCQkJCVhMb2dBcmNoaXZlTm90aWZ5U2VnKG9wZW5Mb2dTZWdObyk7 CisJCQkJCU5vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZlKExvZ3dydFJlc3VsdC5GbHVzaCk7 CiAKIAkJCQlYTG9nQ3RsLT5sYXN0U2VnU3dpdGNoVGltZSA9IChwZ190aW1lX3QpIHRpbWUoTlVM TCk7CiAJCQkJWExvZ0N0bC0+bGFzdFNlZ1N3aXRjaExTTiA9IExvZ3dydFJlc3VsdC5GbHVzaDsK QEAgLTI2OTAsNiArMjk1Myw5IEBAIFhMb2dXcml0ZShYTG9nd3J0UnFzdCBXcml0ZVJxc3QsIGJv b2wgZmxleGlibGUpCiAJCQlYTG9nQ3RsLT5Mb2d3cnRScXN0LkZsdXNoID0gTG9nd3J0UmVzdWx0 LkZsdXNoOwogCQlTcGluTG9ja1JlbGVhc2UoJlhMb2dDdGwtPmluZm9fbGNrKTsKIAl9CisKKwlp ZiAoWExvZ0FyY2hpdmluZ0FjdGl2ZSgpKQorCQlOb3RpZnlTZWdtZW50c1JlYWR5Rm9yQXJjaGl2 ZShJbnZhbGlkWExvZ1JlY1B0cik7CiB9CiAKIC8qCkBAIC01MTE3LDYgKzUzODMsOSBAQCBYTE9H U2htZW1TaXplKHZvaWQpCiAJLyogYW5kIHRoZSBidWZmZXJzIHRoZW1zZWx2ZXMgKi8KIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoWExPR19CTENLU1osIFhMT0didWZmZXJzKSk7CiAK KwkvKiBzdHVmZiBmb3IgbWFya2luZyBzZWdtZW50cyBhcyByZWFkeSBmb3IgYXJjaGl2YWwgKi8K KwlzaXplID0gYWRkX3NpemUoc2l6ZSwgaGFzaF9lc3RpbWF0ZV9zaXplKDE2LCBzaXplb2YoUmVj b3JkQm91bmRhcnlFbnRyeSkpKTsKKwogCS8qCiAJICogTm90ZTogd2UgZG9uJ3QgY291bnQgQ29u dHJvbEZpbGVEYXRhLCBpdCBjb21lcyBvdXQgb2YgdGhlICJzbG9wIGZhY3RvciIKIAkgKiBhZGRl ZCBieSBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzLiAgVGhpcyBsZXRzIHVzIHVzZSB0 aGlzCkBAIC01MTM0LDYgKzU0MDMsNyBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJY2hhcgkgICAq YWxsb2NwdHI7CiAJaW50CQkJaTsKIAlDb250cm9sRmlsZURhdGEgKmxvY2FsQ29udHJvbEZpbGU7 CisJSEFTSENUTAkJaW5mbzsKIAogI2lmZGVmIFdBTF9ERUJVRwogCkBAIC01MjI3LDEyICs1NDk3 LDIwIEBAIFhMT0dTaG1lbUluaXQodm9pZCkKIAlYTG9nQ3RsLT5JbnN0YWxsWExvZ0ZpbGVTZWdt ZW50QWN0aXZlID0gZmFsc2U7CiAJWExvZ0N0bC0+U2hhcmVkUHJvbW90ZUlzVHJpZ2dlcmVkID0g ZmFsc2U7CiAJWExvZ0N0bC0+V2FsV3JpdGVyU2xlZXBpbmcgPSBmYWxzZTsKKwlYTG9nQ3RsLT5s YXN0Tm90aWZpZWRTZWcgPSAweEZGRkZGRkZGRkZGRkZGRkY7CiAKIAlTcGluTG9ja0luaXQoJlhM b2dDdGwtPkluc2VydC5pbnNlcnRwb3NfbGNrKTsKIAlTcGluTG9ja0luaXQoJlhMb2dDdGwtPmlu Zm9fbGNrKTsKIAlTcGluTG9ja0luaXQoJlhMb2dDdGwtPnVsc25fbGNrKTsKIAlJbml0U2hhcmVk TGF0Y2goJlhMb2dDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZhcmlhYmxl SW5pdCgmWExvZ0N0bC0+cmVjb3ZlcnlOb3RQYXVzZWRDVik7CisKKwkvKiBJbml0aWFsaXplIHN0 dWZmIGZvciBtYXJraW5nIHNlZ21lbnRzIGFzIHJlYWR5IGZvciBhcmNoaXZhbC4gKi8KKwltZW1z ZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CisJaW5mby5rZXlzaXplID0gc2l6ZW9mKFhMb2dT ZWdObyk7CisJaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3JkQm91bmRhcnlFbnRyeSk7CisJ UmVjb3JkQm91bmRhcnlNYXAgPSBTaG1lbUluaXRIYXNoKCJSZWNvcmQgQm91bmRhcnkgVGFibGUi LCAxNiwgMTYsICZpbmZvLAorCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKIH0K IAogLyoKQEAgLTc4NjQsNiArODE0MiwxNyBAQCBTdGFydHVwWExPRyh2b2lkKQogCVhMb2dDdGwt PkxvZ3dydFJxc3QuV3JpdGUgPSBFbmRPZkxvZzsKIAlYTG9nQ3RsLT5Mb2d3cnRScXN0LkZsdXNo ID0gRW5kT2ZMb2c7CiAKKwkvKgorCSAqIEluaXRpYWxpemUgWExvZ0N0bC0+bGFzdE5vdGlmaWVk U2VnIHRvIHRoZSBwcmV2aW91cyBXQUwgZmlsZS4KKwkgKi8KKwlpZiAoWExvZ0FyY2hpdmluZ0Fj dGl2ZSgpKQorCXsKKwkJWExvZ1NlZ05vIEVuZE9mTG9nU2VnOworCisJCVhMQnl0ZVRvU2VnKEVu ZE9mTG9nLCBFbmRPZkxvZ1NlZywgd2FsX3NlZ21lbnRfc2l6ZSk7CisJCVNldExhc3ROb3RpZmll ZFNlZ21lbnQoRW5kT2ZMb2dTZWcgLSAxKTsKKwl9CisKIAkvKgogCSAqIFVwZGF0ZSBmdWxsX3Bh Z2Vfd3JpdGVzIGluIHNoYXJlZCBtZW1vcnkgYW5kIHdyaXRlIGFuIFhMT0dfRlBXX0NIQU5HRQog CSAqIHJlY29yZCBiZWZvcmUgcmVzb3VyY2UgbWFuYWdlciB3cml0ZXMgY2xlYW51cCBXQUwgcmVj b3JkcyBvciBjaGVja3BvaW50CkBAIC03OTkxLDcgKzgyODAsNyBAQCBTdGFydHVwWExPRyh2b2lk KQogCQkJCVhMb2dBcmNoaXZlQ2xlYW51cChwYXJ0aWFsZm5hbWUpOwogCiAJCQkJZHVyYWJsZV9y ZW5hbWUob3JpZ3BhdGgsIHBhcnRpYWxwYXRoLCBFUlJPUik7Ci0JCQkJWExvZ0FyY2hpdmVOb3Rp ZnkocGFydGlhbGZuYW1lKTsKKwkJCQlYTG9nQXJjaGl2ZU5vdGlmeShwYXJ0aWFsZm5hbWUsIHRy dWUpOwogCQkJfQogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ2FyY2hpdmUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZl LmMKaW5kZXggMjZiMDIzZTc1NC4uZTljYWM5MGI0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2FyY2hpdmUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nYXJjaGl2ZS5jCkBAIC00MzMsNyArNDMzLDcgQEAgS2VlcEZpbGVSZXN0b3JlZEZy b21BcmNoaXZlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnhsb2dmbmFtZSkKIAlpZiAo WExvZ0FyY2hpdmVNb2RlICE9IEFSQ0hJVkVfTU9ERV9BTFdBWVMpCiAJCVhMb2dBcmNoaXZlRm9y Y2VEb25lKHhsb2dmbmFtZSk7CiAJZWxzZQotCQlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nZm5hbWUp OworCQlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nZm5hbWUsIHRydWUpOwogCiAJLyoKIAkgKiBJZiB0 aGUgZXhpc3RpbmcgZmlsZSB3YXMgcmVwbGFjZWQsIHNpbmNlIHdhbHNlbmRlcnMgbWlnaHQgaGF2 ZSBpdCBvcGVuLApAQCAtNDY0LDcgKzQ2NCw3IEBAIEtlZXBGaWxlUmVzdG9yZWRGcm9tQXJjaGl2 ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICp4bG9nZm5hbWUpCiAgKiB0aGVuIHdoZW4g Y29tcGxldGUsIHJlbmFtZSBpdCB0byAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwQzYuZG9uZQogICov CiB2b2lkCi1YTG9nQXJjaGl2ZU5vdGlmeShjb25zdCBjaGFyICp4bG9nKQorWExvZ0FyY2hpdmVO b3RpZnkoY29uc3QgY2hhciAqeGxvZywgYm9vbCBub3RpZnkpCiB7CiAJY2hhcgkJYXJjaGl2ZVN0 YXR1c1BhdGhbTUFYUEdQQVRIXTsKIAlGSUxFCSAgICpmZDsKQEAgLTQ4OSw4ICs0ODksOCBAQCBY TG9nQXJjaGl2ZU5vdGlmeShjb25zdCBjaGFyICp4bG9nKQogCQlyZXR1cm47CiAJfQogCi0JLyog Tm90aWZ5IGFyY2hpdmVyIHRoYXQgaXQncyBnb3Qgc29tZXRoaW5nIHRvIGRvICovCi0JaWYgKElz VW5kZXJQb3N0bWFzdGVyKQorCS8qIElmIGNhbGxlciByZXF1ZXN0ZWQsIG5vdGlmeSBhcmNoaXZl ciB0aGF0IGl0J3MgZ290IHNvbWV0aGluZyB0byBkbyAqLworCWlmIChub3RpZnkpCiAJCVBnQXJj aFdha2V1cCgpOwogfQogCkBAIC00OTgsMTIgKzQ5OCwxMiBAQCBYTG9nQXJjaGl2ZU5vdGlmeShj b25zdCBjaGFyICp4bG9nKQogICogQ29udmVuaWVuY2Ugcm91dGluZSB0byBub3RpZnkgdXNpbmcg c2VnbWVudCBudW1iZXIgcmVwcmVzZW50YXRpb24gb2YgZmlsZW5hbWUKICAqLwogdm9pZAotWExv Z0FyY2hpdmVOb3RpZnlTZWcoWExvZ1NlZ05vIHNlZ25vKQorWExvZ0FyY2hpdmVOb3RpZnlTZWco WExvZ1NlZ05vIHNlZ25vLCBib29sIG5vdGlmeSkKIHsKIAljaGFyCQl4bG9nW01BWEZOQU1FTEVO XTsKIAogCVhMb2dGaWxlTmFtZSh4bG9nLCBUaGlzVGltZUxpbmVJRCwgc2Vnbm8sIHdhbF9zZWdt ZW50X3NpemUpOwotCVhMb2dBcmNoaXZlTm90aWZ5KHhsb2cpOworCVhMb2dBcmNoaXZlTm90aWZ5 KHhsb2csIG5vdGlmeSk7CiB9CiAKIC8qCkBAIC02MDgsNyArNjA4LDcgQEAgWExvZ0FyY2hpdmVD aGVja0RvbmUoY29uc3QgY2hhciAqeGxvZykKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBSZXRyeSBj cmVhdGlvbiBvZiB0aGUgLnJlYWR5IGZpbGUgKi8KLQlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nKTsK KwlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nLCB0cnVlKTsKIAlyZXR1cm4gZmFsc2U7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDlhMmJjMzdmZDcuLjYwZGUzYmU5 MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpAQCAtNjIyLDcgKzYyMiw3 IEBAIFdhbFJlY2VpdmVyTWFpbih2b2lkKQogCQkJaWYgKFhMb2dBcmNoaXZlTW9kZSAhPSBBUkNI SVZFX01PREVfQUxXQVlTKQogCQkJCVhMb2dBcmNoaXZlRm9yY2VEb25lKHhsb2dmbmFtZSk7CiAJ CQllbHNlCi0JCQkJWExvZ0FyY2hpdmVOb3RpZnkoeGxvZ2ZuYW1lKTsKKwkJCQlYTG9nQXJjaGl2 ZU5vdGlmeSh4bG9nZm5hbWUsIHRydWUpOwogCQl9CiAJCXJlY3ZGaWxlID0gLTE7CiAKQEAgLTc2 MCw3ICs3NjAsNyBAQCBXYWxSY3ZGZXRjaFRpbWVMaW5lSGlzdG9yeUZpbGVzKFRpbWVMaW5lSUQg Zmlyc3QsIFRpbWVMaW5lSUQgbGFzdCkKIAkJCWlmIChYTG9nQXJjaGl2ZU1vZGUgIT0gQVJDSElW RV9NT0RFX0FMV0FZUykKIAkJCQlYTG9nQXJjaGl2ZUZvcmNlRG9uZShmbmFtZSk7CiAJCQllbHNl Ci0JCQkJWExvZ0FyY2hpdmVOb3RpZnkoZm5hbWUpOworCQkJCVhMb2dBcmNoaXZlTm90aWZ5KGZu YW1lLCB0cnVlKTsKIAogCQkJcGZyZWUoZm5hbWUpOwogCQkJcGZyZWUoY29udGVudCk7CkBAIC05 MTUsNyArOTE1LDcgQEAgWExvZ1dhbFJjdldyaXRlKGNoYXIgKmJ1ZiwgU2l6ZSBuYnl0ZXMsIFhM b2dSZWNQdHIgcmVjcHRyKQogCQkJCWlmIChYTG9nQXJjaGl2ZU1vZGUgIT0gQVJDSElWRV9NT0RF X0FMV0FZUykKIAkJCQkJWExvZ0FyY2hpdmVGb3JjZURvbmUoeGxvZ2ZuYW1lKTsKIAkJCQllbHNl Ci0JCQkJCVhMb2dBcmNoaXZlTm90aWZ5KHhsb2dmbmFtZSk7CisJCQkJCVhMb2dBcmNoaXZlTm90 aWZ5KHhsb2dmbmFtZSwgdHJ1ZSk7CiAJCQl9CiAJCQlyZWN2RmlsZSA9IC0xOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0IGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dAppbmRleCA2YzdjZjZjMjk1Li5kMzkyMjVi Zjk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0 CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQKQEAgLTUzLDMg KzUzLDQgQEAgWGFjdFRydW5jYXRpb25Mb2NrCQkJCQk0NAogIyA0NSB3YXMgWGFjdFRydW5jYXRp b25Mb2NrIHVudGlsIHJlbW92YWwgb2YgQmFja2VuZFJhbmRvbUxvY2sKIFdyYXBMaW1pdHNWYWN1 dW1Mb2NrCQkJCTQ2CiBOb3RpZnlRdWV1ZVRhaWxMb2NrCQkJCQk0NworQXJjaE5vdGlmeUxvY2sJ CQkJCQk0OApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dhcmNoaXZlLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2FyY2hpdmUuaAppbmRleCAzZWRkMWE5NzZjLi5lMjVjM2Q4 MTE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2FyY2hpdmUuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2FyY2hpdmUuaApAQCAtMjMsOCArMjMsOCBAQCBleHRlcm4g Ym9vbCBSZXN0b3JlQXJjaGl2ZWRGaWxlKGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnhsb2dmbmFt ZSwKIGV4dGVybiB2b2lkIEV4ZWN1dGVSZWNvdmVyeUNvbW1hbmQoY29uc3QgY2hhciAqY29tbWFu ZCwgY29uc3QgY2hhciAqY29tbWFuZE5hbWUsCiAJCQkJCQkJCSAgIGJvb2wgZmFpbE9uU2lnbmFs KTsKIGV4dGVybiB2b2lkIEtlZXBGaWxlUmVzdG9yZWRGcm9tQXJjaGl2ZShjb25zdCBjaGFyICpw YXRoLCBjb25zdCBjaGFyICp4bG9nZm5hbWUpOwotZXh0ZXJuIHZvaWQgWExvZ0FyY2hpdmVOb3Rp ZnkoY29uc3QgY2hhciAqeGxvZyk7Ci1leHRlcm4gdm9pZCBYTG9nQXJjaGl2ZU5vdGlmeVNlZyhY TG9nU2VnTm8gc2Vnbm8pOworZXh0ZXJuIHZvaWQgWExvZ0FyY2hpdmVOb3RpZnkoY29uc3QgY2hh ciAqeGxvZywgYm9vbCBub3RpZnkpOworZXh0ZXJuIHZvaWQgWExvZ0FyY2hpdmVOb3RpZnlTZWco WExvZ1NlZ05vIHNlZ25vLCBib29sIG5vdGlmeSk7CiBleHRlcm4gdm9pZCBYTG9nQXJjaGl2ZUZv cmNlRG9uZShjb25zdCBjaGFyICp4bG9nKTsKIGV4dGVybiBib29sIFhMb2dBcmNoaXZlQ2hlY2tE b25lKGNvbnN0IGNoYXIgKnhsb2cpOwogZXh0ZXJuIGJvb2wgWExvZ0FyY2hpdmVJc0J1c3koY29u c3QgY2hhciAqeGxvZyk7Ci0tIAoyLjE2LjYKCg== --_002_839F3FB0CAFB455D9010F894A6978FACamazoncom_--