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 1mYwnm-0001JW-D4 for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Oct 2021 20:49:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mYwnl-00023l-4I for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Oct 2021 20:49:09 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mYwnk-00022l-Mm for pgsql-hackers@lists.postgresql.org; Fri, 08 Oct 2021 20:49:08 +0000 Received: from smtp-fw-80007.amazon.com ([99.78.197.218]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mYwnf-0002gC-8T for pgsql-hackers@lists.postgresql.org; Fri, 08 Oct 2021 20:49:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1633726144; x=1665262144; h=from:to:date:message-id:references:in-reply-to: mime-version:subject; bh=HQEGk4Y6qJA6Eol00Fq8GdRy4zFBucBf2a/g4YW5/7I=; b=RRUfjONFnkb9zRQAkoAL5VKNGMwd1yWQWvF5oyZtxhmNznvoKCsbHNdr NTPBaUrhUoKJp5gPsylH90zxNabnablPUDdinK9sL3jei5veNxWLKPS/J gSOo+vN/e8cYY78/EOb/cLjiXRtcFzoB+REU/kUY7ZOojiYGDn4rRJ3WS E=; X-Amazon-filename: v6-0001-Move-WAL-segment-creation-logic-to-its-own-functi.patch, v6-0002-WAL-segment-pre-allocation.patch X-IronPort-AV: E=Sophos;i="5.85,358,1624320000"; d="scan'208,223";a="32915389" Subject: Re: Pre-allocating WAL files Thread-Topic: Pre-allocating WAL files Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-pdx-2c-90419278.us-west-2.amazon.com) ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with ESMTP; 08 Oct 2021 20:49:00 +0000 Received: from EX13MTAUWB001.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan3.pdx.amazon.com [10.236.137.198]) by email-inbound-relay-pdx-2c-90419278.us-west-2.amazon.com (Postfix) with ESMTPS id C181542227; Fri, 8 Oct 2021 20:48:59 +0000 (UTC) Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13MTAUWB001.ant.amazon.com (10.43.161.207) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 8 Oct 2021 20:48:59 +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, 8 Oct 2021 20:48:59 +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, 8 Oct 2021 20:48:59 +0000 From: "Bossart, Nathan" To: Maxim Orlov , "pgsql-hackers@lists.postgresql.org" Thread-Index: AQHXWav8+6ha4BKnPEG53jEY0XwfWasIN++AgCyQ/oCAb1ZkgIAihiGAgAM9sgA= Date: Fri, 8 Oct 2021 20:48:58 +0000 Message-ID: <146BBD58-273E-4849-BFC1-0B42DC5B46D4@amazon.com> References: <20201225200953.jjkrytlrzojbndh5@alap3.anarazel.de> <51BAAB3B-9D3C-4155-B125-42E4F06DCDF4@amazon.com> <163352276350.15435.3988688227048304232.pgcf@coridan.postgresql.org> In-Reply-To: <163352276350.15435.3988688227048304232.pgcf@coridan.postgresql.org> 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.147] Content-Type: multipart/mixed; boundary="_003_146BBD58273E4849BFC10B42DC5B46D4amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_146BBD58273E4849BFC10B42DC5B46D4amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <06F70D4D318B9C4486FFC065C4C61C4C@amazon.com> Content-Transfer-Encoding: base64 T24gMTAvNi8yMSwgOTozNCBBTSwgIkJvc3NhcnQsIE5hdGhhbiIgPGJvc3NhcnRuQGFtYXpvbi5j b20+IHdyb3RlOg0KPiBJIGhhdmUgYmVlbiB0aGlua2luZyBhYm91dCB0aGUgcmlnaHQgcGxhY2Ug dG8gcHV0IHRoaXMgbG9naWMuICBNeQ0KPiBmaXJzdCB0aG91Z2h0IGlzIHRoYXQgaXQgc291bmRz IGxpa2Ugc29tZXRoaW5nIHRoYXQgb3VnaHQgdG8gZ28gaW4gdGhlDQo+IFdBTCB3cml0ZXIgcHJv Y2VzcywgYnV0IGFzIEFuZHJlcyBub3RlZCB1cHRocmVhZCwgdGhhdCBpcyB1bmRlc2lyYWJsZQ0K PiBiZWNhdXNlIGl0J2xsIGFkZCBsYXRlbmN5IGZvciBhc3luY2hyb25vdXMgY29tbWl0cy4gIFRo ZSBjaGVja3BvaW50ZXINCj4gcHJvY2VzcyBzZWVtcyB0byBiZSBhbm90aGVyIGNhbmRpZGF0ZSwg YnV0IEknbSBub3QgdG90YWxseSBzdXJlIGhvdw0KPiBpdCdsbCBmaXQgaW4uICBNeSBwYXRjaCB3 b3JrcyBieSBtYWludGFpbmluZyBhIHNtYWxsIHBvb2wgb2YgcHJlLQ0KPiBhbGxvY2F0ZWQgc2Vn bWVudHMgdGhhdCBpcyBxdWlja2x5IHJlcGxlbmlzaGVkIHdoZW5ldmVyIG9uZSBpcyB1c2VkLg0K PiBJZiB0aGUgY2hlY2twb2ludGVyIGlzIHNwZW5kaW5nIG1vc3Qgb2YgaXRzIHRpbWUgY2hlY2tw b2ludGluZywgdGhpcw0KPiBzbWFsbCBwb29sIGNvdWxkIHJlbWFpbiBlbXB0eSBmb3IgbG9uZyBw ZXJpb2RzIG9mIHRpbWUuICBUbyBrZWVwIHByZS0NCj4gYWxsb2NhdGluZyBXQUwgd2hpbGUgd2Un cmUgY2hlY2twb2ludGluZywgcGVyaGFwcyB3ZSBjb3VsZCBhZGQgYW5vdGhlcg0KPiBmdW5jdGlv biBsaWtlIENoZWNrcG9pbnRXcml0ZURlbGF5KCkgdGhhdCBpcyBjYWxsZWQgcGVyaW9kaWNhbGx5 Lg0KPiBUaGVyZSBzdGlsbCBtaWdodCBiZSBzZXZlcmFsIG9wZXJhdGlvbnMgaW4gQ2hlY2tQb2lu dEd1dHMoKSB0aGF0IHRha2UNCj4gYSB3aGlsZSBhbmQgbGVhdmUgdGhlIHNlZ21lbnQgcG9vbCBl bXB0eSwgYnV0IG1heWJlIHRoYXQncyBva2F5IGZvcg0KPiBub3cuDQoNCkhlcmUgaXMgYSBmaXJz dCBhdHRlbXB0IGF0IGFkZGluZyB0aGUgcHJlLWFsbG9jYXRpb24gbG9naWMgdG8gdGhlDQpjaGVj a3BvaW50ZXIuICBJIHdlbnQgYWhlYWQgYW5kIGp1c3QgdXNlZCBDaGVja3BvaW50V3JpdGVEZWxh eSgpIGZvcg0KcHJlLWFsbG9jYXRpbmcgZHVyaW5nIGNoZWNrcG9pbnRzLiAgSSd2ZSBkb25lIGEg ZmV3IHBnYmVuY2ggcnVucywgYW5kDQppdCBzZWVtcyB0byB3b3JrIHByZXR0eSB3ZWxsLiAgSW5p dGlhbGl6YXRpb24gaXMgYXJvdW5kIDE1JSBmYXN0ZXIsDQphbmQgSSdtIHNlZWluZyBhYm91dCBh IDUlIGluY3JlYXNlIGluIFRQUyB3aXRoIGEgc2ltcGxlLXVwZGF0ZQ0Kd29ya2xvYWQgd2l0aCB3 YWxfcmVjeWNsZSB0dXJuZWQgb2ZmLiAgT2YgY291cnNlLCB0aGVzZSBpbXByb3ZlbWVudHMNCmdv IGF3YXkgb25jZSBzZWdtZW50cyBjYW4gYmUgcmVjeWNsZWQuDQoNCk5hdGhhbg0KDQo= --_003_146BBD58273E4849BFC10B42DC5B46D4amazoncom_ Content-Type: application/octet-stream; name="v6-0001-Move-WAL-segment-creation-logic-to-its-own-functi.patch" Content-Description: v6-0001-Move-WAL-segment-creation-logic-to-its-own-functi.patch Content-Disposition: attachment; filename="v6-0001-Move-WAL-segment-creation-logic-to-its-own-functi.patch"; size=7668; creation-date="Fri, 08 Oct 2021 20:48:58 GMT"; modification-date="Fri, 08 Oct 2021 20:48:58 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA4OTc0ZmJiNzMzOWNhOGI3NWQyYzUwMGRkZTgzYTI2MzI0YzkyZTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogV2VkLCA2IE9jdCAyMDIxIDE3OjE2OjM0ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2NiAx LzJdIE1vdmUgV0FMIHNlZ21lbnQgY3JlYXRpb24gbG9naWMgdG8gaXRzIG93biBmdW5jdGlvbi4K Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIHwgMTAzICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jICAg ICB8IDExNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1 ZGUvc3RvcmFnZS9mZC5oICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgMTE2IGlu c2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMK aW5kZXggMjZkY2MwMGFjMC4uZDBiZTU0YmM5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YwpAQCAtMzI4NCwxMSArMzI4NCw5IEBAIHN0YXRpYyBpbnQKIFhMb2dGaWxlSW5pdEludGVybmFs KFhMb2dTZWdObyBsb2dzZWdubywgYm9vbCAqYWRkZWQsIGNoYXIgKnBhdGgpCiB7CiAJY2hhcgkJ dG1wcGF0aFtNQVhQR1BBVEhdOwotCVBHQWxpZ25lZFhMb2dCbG9jayB6YnVmZmVyOwogCVhMb2dT ZWdObwlpbnN0YWxsZWRfc2Vnbm87CiAJWExvZ1NlZ05vCW1heF9zZWdubzsKIAlpbnQJCQlmZDsK LQlpbnQJCQlzYXZlX2Vycm5vOwogCiAJWExvZ0ZpbGVQYXRoKHBhdGgsIFRoaXNUaW1lTGluZUlE LCBsb2dzZWdubywgd2FsX3NlZ21lbnRfc2l6ZSk7CiAKQEAgLTMzMTYsMTA2ICszMzE0LDcgQEAg WExvZ0ZpbGVJbml0SW50ZXJuYWwoWExvZ1NlZ05vIGxvZ3NlZ25vLCBib29sICphZGRlZCwgY2hh ciAqcGF0aCkKIAllbG9nKERFQlVHMiwgImNyZWF0aW5nIGFuZCBmaWxsaW5nIG5ldyBXQUwgZmls ZSIpOwogCiAJc25wcmludGYodG1wcGF0aCwgTUFYUEdQQVRILCBYTE9HRElSICIveGxvZ3RlbXAu JWQiLCAoaW50KSBnZXRwaWQoKSk7Ci0KLQl1bmxpbmsodG1wcGF0aCk7Ci0KLQkvKiBkbyBub3Qg dXNlIGdldF9zeW5jX2JpdCgpIGhlcmUgLS0tIHdhbnQgdG8gZnN5bmMgb25seSBhdCBlbmQgb2Yg ZmlsbCAqLwotCWZkID0gQmFzaWNPcGVuRmlsZSh0bXBwYXRoLCBPX1JEV1IgfCBPX0NSRUFUIHwg T19FWENMIHwgUEdfQklOQVJZKTsKLQlpZiAoZmQgPCAwKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVh dGUgZmlsZSBcIiVzXCI6ICVtIiwgdG1wcGF0aCkpKTsKLQotCW1lbXNldCh6YnVmZmVyLmRhdGEs IDAsIFhMT0dfQkxDS1NaKTsKLQotCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5U X1dBTF9JTklUX1dSSVRFKTsKLQlzYXZlX2Vycm5vID0gMDsKLQlpZiAod2FsX2luaXRfemVybykK LQl7Ci0JCXN0cnVjdCBpb3ZlYyBpb3ZbUEdfSU9WX01BWF07Ci0JCWludAkJCWJsb2NrczsKLQot CQkvKgotCQkgKiBaZXJvLWZpbGwgdGhlIGZpbGUuICBXaXRoIHRoaXMgc2V0dGluZywgd2UgZG8g dGhpcyB0aGUgaGFyZCB3YXkgdG8KLQkJICogZW5zdXJlIHRoYXQgYWxsIHRoZSBmaWxlIHNwYWNl IGhhcyByZWFsbHkgYmVlbiBhbGxvY2F0ZWQuICBPbgotCQkgKiBwbGF0Zm9ybXMgdGhhdCBhbGxv dyAiaG9sZXMiIGluIGZpbGVzLCBqdXN0IHNlZWtpbmcgdG8gdGhlIGVuZAotCQkgKiBkb2Vzbid0 IGFsbG9jYXRlIGludGVybWVkaWF0ZSBzcGFjZS4gIFRoaXMgd2F5LCB3ZSBrbm93IHRoYXQgd2UK LQkJICogaGF2ZSBhbGwgdGhlIHNwYWNlIGFuZCAoYWZ0ZXIgdGhlIGZzeW5jIGJlbG93KSB0aGF0 IGFsbCB0aGUKLQkJICogaW5kaXJlY3QgYmxvY2tzIGFyZSBkb3duIG9uIGRpc2suICBUaGVyZWZv cmUsIGZkYXRhc3luYygyKSBvcgotCQkgKiBPX0RTWU5DIHdpbGwgYmUgc3VmZmljaWVudCB0byBz eW5jIGZ1dHVyZSB3cml0ZXMgdG8gdGhlIGxvZyBmaWxlLgotCQkgKi8KLQotCQkvKiBQcmVwYXJl IHRvIHdyaXRlIG91dCBhIGxvdCBvZiBjb3BpZXMgb2Ygb3VyIHplcm8gYnVmZmVyIGF0IG9uY2Uu ICovCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Rob2YoaW92KTsgKytpKQotCQl7Ci0JCQlp b3ZbaV0uaW92X2Jhc2UgPSB6YnVmZmVyLmRhdGE7Ci0JCQlpb3ZbaV0uaW92X2xlbiA9IFhMT0df QkxDS1NaOwotCQl9Ci0KLQkJLyogTG9vcCwgd3JpdGluZyBhcyBtYW55IGJsb2NrcyBhcyB3ZSBj YW4gZm9yIGVhY2ggc3lzdGVtIGNhbGwuICovCi0JCWJsb2NrcyA9IHdhbF9zZWdtZW50X3NpemUg LyBYTE9HX0JMQ0tTWjsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBibG9ja3M7KQotCQl7Ci0JCQlp bnQJCQlpb3ZjbnQgPSBNaW4oYmxvY2tzIC0gaSwgbGVuZ3Rob2YoaW92KSk7Ci0JCQlvZmZfdAkJ b2Zmc2V0ID0gaSAqIFhMT0dfQkxDS1NaOwotCi0JCQlpZiAocGdfcHdyaXRldl93aXRoX3JldHJ5 KGZkLCBpb3YsIGlvdmNudCwgb2Zmc2V0KSA8IDApCi0JCQl7Ci0JCQkJc2F2ZV9lcnJubyA9IGVy cm5vOwotCQkJCWJyZWFrOwotCQkJfQotCi0JCQlpICs9IGlvdmNudDsKLQkJfQotCX0KLQllbHNl Ci0JewotCQkvKgotCQkgKiBPdGhlcndpc2UsIHNlZWtpbmcgdG8gdGhlIGVuZCBhbmQgd3JpdGlu ZyBhIHNvbGl0YXJ5IGJ5dGUgaXMKLQkJICogZW5vdWdoLgotCQkgKi8KLQkJZXJybm8gPSAwOwot CQlpZiAocGdfcHdyaXRlKGZkLCB6YnVmZmVyLmRhdGEsIDEsIHdhbF9zZWdtZW50X3NpemUgLSAx KSAhPSAxKQotCQl7Ci0JCQkvKiBpZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUgbm8g ZGlzayBzcGFjZSAqLwotCQkJc2F2ZV9lcnJubyA9IGVycm5vID8gZXJybm8gOiBFTk9TUEM7Ci0J CX0KLQl9Ci0JcGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOwotCi0JaWYgKHNhdmVfZXJybm8pCi0J ewotCQkvKgotCQkgKiBJZiB3ZSBmYWlsIHRvIG1ha2UgdGhlIGZpbGUsIGRlbGV0ZSBpdCB0byBy ZWxlYXNlIGRpc2sgc3BhY2UKLQkJICovCi0JCXVubGluayh0bXBwYXRoKTsKLQotCQljbG9zZShm ZCk7Ci0KLQkJZXJybm8gPSBzYXZlX2Vycm5vOwotCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVy cmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJIGVycm1zZygiY291bGQgbm90IHdyaXRlIHRv IGZpbGUgXCIlc1wiOiAlbSIsIHRtcHBhdGgpKSk7Ci0JfQotCi0JcGdzdGF0X3JlcG9ydF93YWl0 X3N0YXJ0KFdBSVRfRVZFTlRfV0FMX0lOSVRfU1lOQyk7Ci0JaWYgKHBnX2ZzeW5jKGZkKSAhPSAw KQotCXsKLQkJaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOwotCi0JCWNsb3NlKGZkKTsKLQkJZXJy bm8gPSBzYXZlX2Vycm5vOwotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxl X2FjY2VzcygpLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJW0i LCB0bXBwYXRoKSkpOwotCX0KLQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7Ci0KLQlpZiAoY2xv c2UoZmQpICE9IDApCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNj ZXNzKCksCi0JCQkJIGVycm1zZygiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsIHRt cHBhdGgpKSk7CisJQ3JlYXRlRW1wdHlXYWxTZWdtZW50KHRtcHBhdGgpOwogCiAJLyoKIAkgKiBO b3cgbW92ZSB0aGUgc2VnbWVudCBpbnRvIHBsYWNlIHdpdGggaXRzIGZpbmFsIG5hbWUuICBDb3Bl IHdpdGgKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKaW5kZXggZjljZGE2OTA2ZC4uYTQ0ZGY4NjUzNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2ZkLmMKQEAgLTM4NzAsMyArMzg3MCwxMTcgQEAgcGdfcHdyaXRldl93aXRo X3JldHJ5KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90 IG9mZnNldCkKIAogCXJldHVybiBzdW07CiB9CisKKy8qCisgKiBDcmVhdGVFbXB0eVdhbFNlZ21l bnQKKyAqCisgKiBDcmVhdGUgYSBuZXcgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgbmV3IFdB TCBzZWdtZW50LiAgVGhlIGNhbGxlciBpcworICogcmVzcG9uc2libGUgZm9yIGluc3RhbGxpbmcg dGhlIG5ldyBmaWxlIGluIHBnX3dhbC4KKyAqLwordm9pZAorQ3JlYXRlRW1wdHlXYWxTZWdtZW50 KGNvbnN0IGNoYXIgKnBhdGgpCit7CisJUEdBbGlnbmVkWExvZ0Jsb2NrIHpidWZmZXI7CisJaW50 CQkJZmQ7CisJaW50CQkJc2F2ZV9lcnJubzsKKworCXVubGluayhwYXRoKTsKKworCS8qIGRvIG5v dCB1c2UgZ2V0X3N5bmNfYml0KCkgaGVyZSAtLS0gd2FudCB0byBmc3luYyBvbmx5IGF0IGVuZCBv ZiBmaWxsICovCisJZmQgPSBCYXNpY09wZW5GaWxlKHBhdGgsIE9fUkRXUiB8IE9fQ1JFQVQgfCBP X0VYQ0wgfCBQR19CSU5BUlkpOworCWlmIChmZCA8IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0 ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKSkpOworCisJbWVtc2V0KHpidWZmZXIuZGF0YSwgMCwg WExPR19CTENLU1opOworCisJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfV0FM X0lOSVRfV1JJVEUpOworCXNhdmVfZXJybm8gPSAwOworCWlmICh3YWxfaW5pdF96ZXJvKQorCXsK KwkJc3RydWN0IGlvdmVjIGlvdltQR19JT1ZfTUFYXTsKKwkJaW50CQkJYmxvY2tzOworCisJCS8q CisJCSAqIFplcm8tZmlsbCB0aGUgZmlsZS4gIFdpdGggdGhpcyBzZXR0aW5nLCB3ZSBkbyB0aGlz IHRoZSBoYXJkIHdheSB0bworCQkgKiBlbnN1cmUgdGhhdCBhbGwgdGhlIGZpbGUgc3BhY2UgaGFz IHJlYWxseSBiZWVuIGFsbG9jYXRlZC4gIE9uCisJCSAqIHBsYXRmb3JtcyB0aGF0IGFsbG93ICJo b2xlcyIgaW4gZmlsZXMsIGp1c3Qgc2Vla2luZyB0byB0aGUgZW5kCisJCSAqIGRvZXNuJ3QgYWxs b2NhdGUgaW50ZXJtZWRpYXRlIHNwYWNlLiAgVGhpcyB3YXksIHdlIGtub3cgdGhhdCB3ZQorCQkg KiBoYXZlIGFsbCB0aGUgc3BhY2UgYW5kIChhZnRlciB0aGUgZnN5bmMgYmVsb3cpIHRoYXQgYWxs IHRoZQorCQkgKiBpbmRpcmVjdCBibG9ja3MgYXJlIGRvd24gb24gZGlzay4gIFRoZXJlZm9yZSwg ZmRhdGFzeW5jKDIpIG9yCisJCSAqIE9fRFNZTkMgd2lsbCBiZSBzdWZmaWNpZW50IHRvIHN5bmMg ZnV0dXJlIHdyaXRlcyB0byB0aGUgbG9nIGZpbGUuCisJCSAqLworCisJCS8qIFByZXBhcmUgdG8g d3JpdGUgb3V0IGEgbG90IG9mIGNvcGllcyBvZiBvdXIgemVybyBidWZmZXIgYXQgb25jZS4gKi8K KwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZihpb3YpOyArK2kpCisJCXsKKwkJCWlvdltp XS5pb3ZfYmFzZSA9IHpidWZmZXIuZGF0YTsKKwkJCWlvdltpXS5pb3ZfbGVuID0gWExPR19CTENL U1o7CisJCX0KKworCQkvKiBMb29wLCB3cml0aW5nIGFzIG1hbnkgYmxvY2tzIGFzIHdlIGNhbiBm b3IgZWFjaCBzeXN0ZW0gY2FsbC4gKi8KKwkJYmxvY2tzID0gd2FsX3NlZ21lbnRfc2l6ZSAvIFhM T0dfQkxDS1NaOworCQlmb3IgKGludCBpID0gMDsgaSA8IGJsb2NrczspCisJCXsKKwkJCWludAkJ CWlvdmNudCA9IE1pbihibG9ja3MgLSBpLCBsZW5ndGhvZihpb3YpKTsKKwkJCW9mZl90CQlvZmZz ZXQgPSBpICogWExPR19CTENLU1o7CisKKwkJCWlmIChwZ19wd3JpdGV2X3dpdGhfcmV0cnkoZmQs IGlvdiwgaW92Y250LCBvZmZzZXQpIDwgMCkKKwkJCXsKKwkJCQlzYXZlX2Vycm5vID0gZXJybm87 CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCWkgKz0gaW92Y250OworCQl9CisJfQorCWVsc2UKKwl7 CisJCS8qCisJCSAqIE90aGVyd2lzZSwgc2Vla2luZyB0byB0aGUgZW5kIGFuZCB3cml0aW5nIGEg c29saXRhcnkgYnl0ZSBpcworCQkgKiBlbm91Z2guCisJCSAqLworCQllcnJubyA9IDA7CisJCWlm IChwZ19wd3JpdGUoZmQsIHpidWZmZXIuZGF0YSwgMSwgd2FsX3NlZ21lbnRfc2l6ZSAtIDEpICE9 IDEpCisJCXsKKwkJCS8qIGlmIHdyaXRlIGRpZG4ndCBzZXQgZXJybm8sIGFzc3VtZSBubyBkaXNr IHNwYWNlICovCisJCQlzYXZlX2Vycm5vID0gZXJybm8gPyBlcnJubyA6IEVOT1NQQzsKKwkJfQor CX0KKwlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CisKKwlpZiAoc2F2ZV9lcnJubykKKwl7CisJ CS8qCisJCSAqIElmIHdlIGZhaWwgdG8gbWFrZSB0aGUgZmlsZSwgZGVsZXRlIGl0IHRvIHJlbGVh c2UgZGlzayBzcGFjZQorCQkgKi8KKwkJdW5saW5rKHBhdGgpOworCisJCWNsb3NlKGZkKTsKKwor CQllcnJubyA9IHNhdmVfZXJybm87CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZV9m b3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBc IiVzXCI6ICVtIiwgcGF0aCkpKTsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJ VF9FVkVOVF9XQUxfSU5JVF9TWU5DKTsKKwlpZiAocGdfZnN5bmMoZmQpICE9IDApCisJeworCQlp bnQJCQlzYXZlX2Vycm5vID0gZXJybm87CisKKwkJY2xvc2UoZmQpOworCQllcnJubyA9IHNhdmVf ZXJybm87CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCks CisJCQkJIGVycm1zZygiY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpKSk7 CisJfQorCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKKworCWlmIChjbG9zZShmZCkgIT0gMCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkg ZXJybXNnKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv ZmQuaAppbmRleCAzNDYwMmFlMDA2Li5hYmNkNzRiZDUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL2ZkLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCkBAIC0xOTAsNiAr MTkwLDcgQEAgZXh0ZXJuIGludAlkdXJhYmxlX3VubGluayhjb25zdCBjaGFyICpmbmFtZSwgaW50 IGxvZ2xldmVsKTsKIGV4dGVybiBpbnQJZHVyYWJsZV9yZW5hbWVfZXhjbChjb25zdCBjaGFyICpv bGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlLCBpbnQgbG9nbGV2ZWwpOwogZXh0ZXJuIHZvaWQg U3luY0RhdGFEaXJlY3Rvcnkodm9pZCk7CiBleHRlcm4gaW50CWRhdGFfc3luY19lbGV2ZWwoaW50 IGVsZXZlbCk7CitleHRlcm4gdm9pZCBDcmVhdGVFbXB0eVdhbFNlZ21lbnQoY29uc3QgY2hhciAq cGF0aCk7CiAKIC8qIEZpbGVuYW1lIGNvbXBvbmVudHMgKi8KICNkZWZpbmUgUEdfVEVNUF9GSUxF U19ESVIgInBnc3FsX3RtcCIKLS0gCjIuMTYuNgoK --_003_146BBD58273E4849BFC10B42DC5B46D4amazoncom_ Content-Type: application/octet-stream; name="v6-0002-WAL-segment-pre-allocation.patch" Content-Description: v6-0002-WAL-segment-pre-allocation.patch Content-Disposition: attachment; filename="v6-0002-WAL-segment-pre-allocation.patch"; size=24543; creation-date="Fri, 08 Oct 2021 20:48:58 GMT"; modification-date="Fri, 08 Oct 2021 20:48:58 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA3ODMyOWYxYTZiNTE2MzllYjhmNjk0MjZlZjEyNzA5MWI0NGMzODk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogRnJpLCA4IE9jdCAyMDIxIDIwOjIyOjIzICswMDAwClN1YmplY3Q6IFtQQVRDSCB2NiAy LzJdIFdBTCBzZWdtZW50IHByZS1hbGxvY2F0aW9uLgoKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysrCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAgNjAgKysrKysrLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgMjM0ICsrKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMgICAgICAgICAgfCAg IDYgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jICAgICAgICAgICAgICAgICB8ICAy MiArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAgMTEg KysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSAr CiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyAgICAgICAgIHwgIDE5ICsrLQog c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwgIHwgICA0ICstCiBz cmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgICAgICAgICAgICAgfCAgNDggKysrKysr CiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd3JpdGVyLmggICAgICAgICAgICAgfCAgIDUgKwog c3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiAx NCBmaWxlcyBjaGFuZ2VkLCA0MTcgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCmluZGV4IDBhOGUzNWM1OWYuLjBlNjZlNDE1ZmYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTMyMDMsNiAr MzIwMywyOSBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAgICAgPC9saXN0aXRlbT4KICAgICAg PC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXdhbC1wcmVhbGxv Y2F0ZS1tYXgtc2l6ZSIgeHJlZmxhYmVsPSJ3YWxfcHJlYWxsb2NhdGVfbWF4X3NpemUiPgorICAg ICAgPHRlcm0+PHZhcm5hbWU+d2FsX3ByZWFsbG9jYXRlX21heF9zaXplPC92YXJuYW1lPiAoPHR5 cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2 YXJuYW1lPndhbF9wcmVhbGxvY2F0ZV9tYXhfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBw YXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAg ICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG1heGltdW0gYW1vdW50 IG9mIFdBTCB0byBwcmUtYWxsb2NhdGUgZm9yIHVzZSB3aGVuIGEgbmV3IFdBTCBzZWdtZW50Cisg ICAgICAgIG11c3QgYmUgaW5pdGlhbGl6ZWQuICBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIGEg c2l6ZSBsZXNzIHRoYW4gdGhlIFdBTAorICAgICAgICBzZWdtZW50IHNpemUgZGlzYWJsZXMgdGhp cyBiZWhhdmlvci4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDY0IG1lZ2FieXRlcworICAgICAgICAo PGxpdGVyYWw+NjRNQjwvbGl0ZXJhbD4pLiAgVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0 IGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmls ZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQgbGluZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAg ICA8cGFyYT4KKyAgICAgICAgV0FMIHByZS1hbGxvY2F0aW9uIG1heSBpbXByb3ZlIHBlcmZvcm1h bmNlIGluIHNjZW5hcmlvcyB3aGVyZSBuZXcgV0FMCisgICAgICAgIHNlZ21lbnRzIG11c3QgYmUg Y3JlYXRlZCAoZS5nLiwgZHVyaW5nIGNoZWNrcG9pbnRzIHdoZW4gV0FMIHNlZ21lbnRzCisgICAg ICAgIGNhbm5vdCBiZSByZWN5Y2xlZCkuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXdh bC1idWZmZXJzIiB4cmVmbGFiZWw9IndhbF9idWZmZXJzIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1l PndhbF9idWZmZXJzPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCiAgICAgICA8aW5k ZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IGQwYmU1NGJjOWIuLmUwYjg0 MzIxZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTMyODcsNiArMzI4Nyw4IEBA IFhMb2dGaWxlSW5pdEludGVybmFsKFhMb2dTZWdObyBsb2dzZWdubywgYm9vbCAqYWRkZWQsIGNo YXIgKnBhdGgpCiAJWExvZ1NlZ05vCWluc3RhbGxlZF9zZWdubzsKIAlYTG9nU2VnTm8JbWF4X3Nl Z25vOwogCWludAkJCWZkOworCWludAkJCXByZWFsbG9jX3NlZ3M7CisJYm9vbAkJZm91bmRfcHJl YWxsb2MgPSBmYWxzZTsKIAogCVhMb2dGaWxlUGF0aChwYXRoLCBUaGlzVGltZUxpbmVJRCwgbG9n c2Vnbm8sIHdhbF9zZWdtZW50X3NpemUpOwogCkBAIC0zMzA2LDE1ICszMzA4LDQ1IEBAIFhMb2dG aWxlSW5pdEludGVybmFsKFhMb2dTZWdObyBsb2dzZWdubywgYm9vbCAqYWRkZWQsIGNoYXIgKnBh dGgpCiAJCXJldHVybiBmZDsKIAogCS8qCi0JICogSW5pdGlhbGl6ZSBhbiBlbXB0eSAoYWxsIHpl cm9lcykgc2VnbWVudC4gIE5PVEU6IGl0IGlzIHBvc3NpYmxlIHRoYXQKLQkgKiBhbm90aGVyIHBy b2Nlc3MgaXMgZG9pbmcgdGhlIHNhbWUgdGhpbmcuICBJZiBzbywgd2Ugd2lsbCBlbmQgdXAKLQkg KiBwcmUtY3JlYXRpbmcgYW4gZXh0cmEgbG9nIHNlZ21lbnQuICBUaGF0IHNlZW1zIE9LLCBhbmQg YmV0dGVyIHRoYW4KLQkgKiBob2xkaW5nIHRoZSBsb2NrIHRocm91Z2hvdXQgdGhpcyBsZW5ndGh5 IHByb2Nlc3MuCisJICogVHJ5IHRvIHVzZSBhIHByZS1hbGxvY2F0ZWQgc2VnbWVudCwgaWYgb25l IGV4aXN0cy4gIElmIG5vbmUgYXJlCisJICogYXZhaWxhYmxlLCB3ZSBmYWxsIGJhY2sgdG8gY3Jl YXRpbmcgYSBuZXcgc2VnbWVudCBvbiBvdXIgb3duLgorCSAqCisJICogTm90ZSB0aGF0IHdlIHN0 aWxsIGxvb2sgZm9yIGEgcHJlLWFsbG9jYXRlZCBzZWdtZW50IGV2ZW4gaWYgdGhlIHByZS0KKwkg KiBhbGxvY2F0aW9uIGZ1bmN0aW9uYWxpdHkgaXMgZGlzYWJsZWQgdmlhIHRoZSBHVUNzLiAgVGhp cyBlbnN1cmVzIHRoYXQgYW55CisJICogcHJlLWFsbG9jYXRlZCBzZWdtZW50cyBsZWZ0IG92ZXIg YWZ0ZXIgdHVybmluZyBvZmYgdGhlIHByZS1hbGxvY2F0aW9uCisJICogZnVuY3Rpb25hbGl0eSBh cmUgc3RpbGwgZWxpZ2libGUgZm9yIHVzZS4KIAkgKi8KLQllbG9nKERFQlVHMiwgImNyZWF0aW5n IGFuZCBmaWxsaW5nIG5ldyBXQUwgZmlsZSIpOworCUxXTG9ja0FjcXVpcmUoV0FMUHJlYWxsb2Nh dGlvbkxvY2ssIExXX0VYQ0xVU0lWRSk7CisJcHJlYWxsb2Nfc2VncyA9IEdldE51bVByZWFsbG9j YXRlZFdhbFNlZ3MoKTsKKwlpZiAocHJlYWxsb2Nfc2VncyA+IDApCisJeworCQllbG9nKERFQlVH MiwgInVzaW5nIHByZS1hbGxvY2F0ZWQgV0FMIGZpbGUiKTsKIAotCXNucHJpbnRmKHRtcHBhdGgs IE1BWFBHUEFUSCwgWExPR0RJUiAiL3hsb2d0ZW1wLiVkIiwgKGludCkgZ2V0cGlkKCkpOwotCUNy ZWF0ZUVtcHR5V2FsU2VnbWVudCh0bXBwYXRoKTsKKwkJZm91bmRfcHJlYWxsb2MgPSB0cnVlOwor CQlwcmVhbGxvY19zZWdzLS07CisJCVNldE51bVByZWFsbG9jYXRlZFdhbFNlZ3MocHJlYWxsb2Nf c2Vncyk7CisJCXNucHJpbnRmKHRtcHBhdGgsIE1BWFBHUEFUSCwgIiVzL3ByZWFsbG9jYXRlZF9z ZWdtZW50cy94bG9ndGVtcC4lZCIsCisJCQkJIFhMT0dESVIsIHByZWFsbG9jX3NlZ3MpOworCX0K KwllbHNlCisJeworCQkvKgorCQkgKiBXZSdyZSBub3QgdXNpbmcgYSBwcmUtYWxsb2NhdGVkIHNl Z21lbnQsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBrZWVwCisJCSAqIGhvbGRpbmcgdGhlIFdBTFBy ZWFsbG9jYXRpb25Mb2NrLgorCQkgKi8KKwkJTFdMb2NrUmVsZWFzZShXQUxQcmVhbGxvY2F0aW9u TG9jayk7CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSBhbiBlbXB0eSAoYWxsIHplcm9lcykgc2Vn bWVudC4gIE5PVEU6IGl0IGlzIHBvc3NpYmxlIHRoYXQKKwkJICogYW5vdGhlciBwcm9jZXNzIGlz IGRvaW5nIHRoZSBzYW1lIHRoaW5nLiAgSWYgc28sIHdlIHdpbGwgZW5kIHVwCisJCSAqIHByZS1j cmVhdGluZyBhbiBleHRyYSBsb2cgc2VnbWVudC4gIFRoYXQgc2VlbXMgT0ssIGFuZCBiZXR0ZXIg dGhhbgorCQkgKiBob2xkaW5nIHRoZSBsb2NrIHRocm91Z2hvdXQgdGhpcyBsZW5ndGh5IHByb2Nl c3MuCisJCSAqLworCQllbG9nKERFQlVHMiwgImNyZWF0aW5nIGFuZCBmaWxsaW5nIG5ldyBXQUwg ZmlsZSIpOworCisJCXNucHJpbnRmKHRtcHBhdGgsIE1BWFBHUEFUSCwgWExPR0RJUiAiL3hsb2d0 ZW1wLiVkIiwgKGludCkgZ2V0cGlkKCkpOworCQlDcmVhdGVFbXB0eVdhbFNlZ21lbnQodG1wcGF0 aCwgRVJST1IpOworCX0KIAogCS8qCiAJICogTm93IG1vdmUgdGhlIHNlZ21lbnQgaW50byBwbGFj ZSB3aXRoIGl0cyBmaW5hbCBuYW1lLiAgQ29wZSB3aXRoCkBAIC0zMzM2LDcgKzMzNjgsNyBAQCBY TG9nRmlsZUluaXRJbnRlcm5hbChYTG9nU2VnTm8gbG9nc2Vnbm8sIGJvb2wgKmFkZGVkLCBjaGFy ICpwYXRoKQogCWlmIChJbnN0YWxsWExvZ0ZpbGVTZWdtZW50KCZpbnN0YWxsZWRfc2Vnbm8sIHRt cHBhdGgsIHRydWUsIG1heF9zZWdubykpCiAJewogCQkqYWRkZWQgPSB0cnVlOwotCQllbG9nKERF QlVHMiwgImRvbmUgY3JlYXRpbmcgYW5kIGZpbGxpbmcgbmV3IFdBTCBmaWxlIik7CisJCWVsb2co REVCVUcyLCAiZG9uZSBpbnN0YWxsaW5nIG5ldyBXQUwgZmlsZSIpOwogCX0KIAllbHNlCiAJewpA QCAtMzM0OSw2ICszMzgxLDE4IEBAIFhMb2dGaWxlSW5pdEludGVybmFsKFhMb2dTZWdObyBsb2dz ZWdubywgYm9vbCAqYWRkZWQsIGNoYXIgKnBhdGgpCiAJCWVsb2coREVCVUcyLCAiYWJhbmRvbmVk IG5ldyBXQUwgZmlsZSIpOwogCX0KIAorCS8qCisJICogSWYgd2UgYXJlIHVzaW5nIGEgcHJlLWFs bG9jYXRlZCBzZWdtZW50LCB3ZSd2ZSBiZWVuIGhvbGRpbmcgb250byB0aGUKKwkgKiBXQUxQcmVh bGxvY2F0aW9uTG9jayBhbGwgdGhpcyB0aW1lIHNvIHRoYXQgdGhlIGNoZWNrcG9pbnRlciBwcm9j ZXNzIGNhbid0CisJICogb3ZlcndyaXRlIHRoZSBmaWxlIGJlZm9yZSB3ZSd2ZSBpbnN0YWxsZWQg aXQuCisJICoKKwkgKiBXaGlsZSB3ZSdyZSBhdCBpdCwgYWxzbyBudWRnZSB0aGUgY2hlY2twb2lu dGVyIHByb2Nlc3Mgc28gdGhhdCBpdCBwcmUtCisJICogYWxsb2NhdGVzIG5ldyBzZWdtZW50cyBp ZiBwb3NzaWJsZS4KKwkgKi8KKwlpZiAoZm91bmRfcHJlYWxsb2MpCisJCUxXTG9ja1JlbGVhc2Uo V0FMUHJlYWxsb2NhdGlvbkxvY2spOworCVJlcXVlc3RXYWxQcmVhbGxvY2F0aW9uKCk7CisKIAly ZXR1cm4gLTE7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IGJl NzM2NjM3OWQuLjMyMzc1OTVkYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Y2hlY2twb2ludGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIu YwpAQCAtMTI3LDYgKzEyNyw5IEBAIHR5cGVkZWYgc3RydWN0CiAJdWludDMyCQludW1fYmFja2Vu ZF93cml0ZXM7IC8qIGNvdW50cyB1c2VyIGJhY2tlbmQgYnVmZmVyIHdyaXRlcyAqLwogCXVpbnQz MgkJbnVtX2JhY2tlbmRfZnN5bmM7CS8qIGNvdW50cyB1c2VyIGJhY2tlbmQgZnN5bmMgY2FsbHMg Ki8KIAorCWJvb2wJCXdhbF9wcmVhbGxvY19yZXF1ZXN0ZWQ7CS8qIHByb3RlY3RlZCBieSBja3B0 X2xjayAqLworCWludAkJCW51bV9wcmVhbGxvY19zZWdzOwkvKiBwcm90ZWN0ZWQgYnkgV0FMUHJl YWxsb2NhdGlvbkxvY2sgKi8KKwogCWludAkJCW51bV9yZXF1ZXN0czsJLyogY3VycmVudCAjIG9m IHJlcXVlc3RzICovCiAJaW50CQkJbWF4X3JlcXVlc3RzOwkvKiBhbGxvY2F0ZWQgYXJyYXkgc2l6 ZSAqLwogCUNoZWNrcG9pbnRlclJlcXVlc3QgcmVxdWVzdHNbRkxFWElCTEVfQVJSQVlfTUVNQkVS XTsKQEAgLTE0Myw2ICsxNDYsNyBAQCBzdGF0aWMgQ2hlY2twb2ludGVyU2htZW1TdHJ1Y3QgKkNo ZWNrcG9pbnRlclNobWVtOwogaW50CQkJQ2hlY2tQb2ludFRpbWVvdXQgPSAzMDA7CiBpbnQJCQlD aGVja1BvaW50V2FybmluZyA9IDMwOwogZG91YmxlCQlDaGVja1BvaW50Q29tcGxldGlvblRhcmdl dCA9IDAuOTsKK2ludAkJCXdhbF9wcmVhbGxvY19tYXhfc2l6ZV9tYiA9IDA7CiAKIC8qCiAgKiBQ cml2YXRlIHN0YXRlCkBAIC0xNjUsNiArMTY5LDEwIEBAIHN0YXRpYyBib29sIElzQ2hlY2twb2lu dE9uU2NoZWR1bGUoZG91YmxlIHByb2dyZXNzKTsKIHN0YXRpYyBib29sIEltbWVkaWF0ZUNoZWNr cG9pbnRSZXF1ZXN0ZWQodm9pZCk7CiBzdGF0aWMgYm9vbCBDb21wYWN0Q2hlY2twb2ludGVyUmVx dWVzdFF1ZXVlKHZvaWQpOwogc3RhdGljIHZvaWQgVXBkYXRlU2hhcmVkTWVtb3J5Q29uZmlnKHZv aWQpOworc3RhdGljIHZvaWQgU2NhbkZvckV4aXN0aW5nUHJlYWxsb2NhdGVkU2VnbWVudHModm9p ZCk7CitzdGF0aWMgYm9vbCBJbnN0YWxsUHJlYWxsb2NhdGVkV2FsU2VnKGNvbnN0IGNoYXIgKnBh dGgpOworc3RhdGljIHZvaWQgRG9XYWxQcmVBbGxvY2F0aW9uKHZvaWQpOworc3RhdGljIGludCBH ZXRNYXhQcmVhbGxvY2F0ZWRXYWxTZWdzKHZvaWQpOwogCiAvKiBTaWduYWwgaGFuZGxlcnMgKi8K IHN0YXRpYyB2b2lkIFJlcUNoZWNrcG9pbnRIYW5kbGVyKFNJR05BTF9BUkdTKTsKQEAgLTMyOSw2 ICszMzcsMTEgQEAgQ2hlY2twb2ludGVyTWFpbih2b2lkKQogCSAqLwogCVByb2NHbG9iYWwtPmNo ZWNrcG9pbnRlckxhdGNoID0gJk15UHJvYy0+cHJvY0xhdGNoOwogCisJLyoKKwkgKiBMb29rIGZv ciBhbnkgbGVmdG92ZXIgcHJlLWFsbG9jYXRlZCBzZWdtZW50cyB3ZSBjYW4gdXNlLgorCSAqLwor CVNjYW5Gb3JFeGlzdGluZ1ByZWFsbG9jYXRlZFNlZ21lbnRzKCk7CisKIAkvKgogCSAqIExvb3Ag Zm9yZXZlcgogCSAqLwpAQCAtMzQ5LDYgKzM2MiwxMSBAQCBDaGVja3BvaW50ZXJNYWluKHZvaWQp CiAJCUFic29yYlN5bmNSZXF1ZXN0cygpOwogCQlIYW5kbGVDaGVja3BvaW50ZXJJbnRlcnJ1cHRz KCk7CiAKKwkJLyoKKwkJICogRmlyc3QgZG8gV0FMIHByZS1hbGxvY2F0aW9uLgorCQkgKi8KKwkJ RG9XYWxQcmVBbGxvY2F0aW9uKCk7CisKIAkJLyoKIAkJICogRGV0ZWN0IGEgcGVuZGluZyBjaGVj a3BvaW50IHJlcXVlc3QgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgZmxhZ3MKIAkJICogd29yZCBp biBzaGFyZWQgbWVtb3J5IGlzIG5vbnplcm8uICBXZSBzaG91bGRuJ3QgbmVlZCB0byBhY3F1aXJl IHRoZQpAQCAtNTA3LDYgKzUyNSwxMiBAQCBDaGVja3BvaW50ZXJNYWluKHZvaWQpCiAJCWlmICgo KHZvbGF0aWxlIENoZWNrcG9pbnRlclNobWVtU3RydWN0ICopIENoZWNrcG9pbnRlclNobWVtKS0+ Y2twdF9mbGFncykKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIEFsc28gc2tpcCBzbGVlcGlu ZyBpZiBXQUwgcHJlLWFsbG9jYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLgorCQkgKi8KKwkJaWYg KCgodm9sYXRpbGUgQ2hlY2twb2ludGVyU2htZW1TdHJ1Y3QgKikgQ2hlY2twb2ludGVyU2htZW0p LT53YWxfcHJlYWxsb2NfcmVxdWVzdGVkKQorCQkJY29udGludWU7CisKIAkJLyoKIAkJICogU2xl ZXAgdW50aWwgd2UgYXJlIHNpZ25hbGVkIG9yIGl0J3MgdGltZSBmb3IgYW5vdGhlciBjaGVja3Bv aW50IG9yCiAJCSAqIHhsb2cgZmlsZSBzd2l0Y2guCkBAIC02ODIsNiArNzA2LDggQEAgSW1tZWRp YXRlQ2hlY2twb2ludFJlcXVlc3RlZCh2b2lkKQogICoKICAqICdwcm9ncmVzcycgaXMgYW4gZXN0 aW1hdGUgb2YgaG93IG11Y2ggb2YgdGhlIHdvcmsgaGFzIGJlZW4gZG9uZSwgYXMgYQogICogZnJh Y3Rpb24gYmV0d2VlbiAwLjAgbWVhbmluZyBub25lLCBhbmQgMS4wIG1lYW5pbmcgYWxsIGRvbmUu CisgKgorICogVGhpcyBmdW5jdGlvbiBhbHNvIHRha2VzIGNhcmUgb2YgaGFuZGxpbmcgYW55IFdB TCBwcmUtYWxsb2NhdGlvbiByZXF1ZXN0cy4KICAqLwogdm9pZAogQ2hlY2twb2ludFdyaXRlRGVs YXkoaW50IGZsYWdzLCBkb3VibGUgcHJvZ3Jlc3MpCkBAIC02OTIsNiArNzE4LDE1IEBAIENoZWNr cG9pbnRXcml0ZURlbGF5KGludCBmbGFncywgZG91YmxlIHByb2dyZXNzKQogCWlmICghQW1DaGVj a3BvaW50ZXJQcm9jZXNzKCkpCiAJCXJldHVybjsKIAorCS8qCisJICogV0FMIHByZS1hbGxvY2F0 aW9uIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhyb3R0bGluZyBCdWZmZXJTeW5jKCkncyB3cml0 ZQorCSAqIHJhdGUuICBIb3dldmVyLCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcmVx dWVudGx5IGR1cmluZworCSAqIGNoZWNrcG9pbnRzLCBpdCBpcyBhIGNvbnZlbmllbnQgcGxhY2Ug dG8gaGFuZGxlIGFueSBwZW5kaW5nIFdBTCBwcmUtCisJICogYWxsb2NhdGlvbiByZXF1ZXN0cy4K KwkgKi8KKwlpZiAoKCh2b2xhdGlsZSBDaGVja3BvaW50ZXJTaG1lbVN0cnVjdCAqKSBDaGVja3Bv aW50ZXJTaG1lbSktPndhbF9wcmVhbGxvY19yZXF1ZXN0ZWQpCisJCURvV2FsUHJlQWxsb2NhdGlv bigpOworCiAJLyoKIAkgKiBQZXJmb3JtIHRoZSB1c3VhbCBkdXRpZXMgYW5kIHRha2UgYSBuYXAs IHVubGVzcyB3ZSdyZSBiZWhpbmQgc2NoZWR1bGUsCiAJICogaW4gd2hpY2ggY2FzZSB3ZSBqdXN0 IHRyeSB0byBjYXRjaCB1cCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgpAQCAtODIzLDYgKzg1OCwy MDMgQEAgSXNDaGVja3BvaW50T25TY2hlZHVsZShkb3VibGUgcHJvZ3Jlc3MpCiAJcmV0dXJuIHRy dWU7CiB9CiAKKy8qCisgKiBHZXROdW1QcmVhbGxvY2F0ZWRXYWxTZWdzCisgKgorICogUmV0dXJu cyB0aGUgbnVtYmVyIG9mIHByZS1hbGxvY2F0ZWQgV0FMIHNlZ21lbnRzIGluIHRoZSBwcmVhbGxv Y2F0ZWRfc2VnbWVudHMKKyAqIGRpcmVjdG9yeS4gIENhbGxlcnMgYXJlIGV4cGVjdGVkIHRvIGhv bGQgdGhlIFdBTFByZWFsbG9jYXRpb25Mb2NrLgorICovCitpbnQKK0dldE51bVByZWFsbG9jYXRl ZFdhbFNlZ3Modm9pZCkKK3sKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoV0FMUHJlYWxsb2NhdGlv bkxvY2spKTsKKwlyZXR1cm4gQ2hlY2twb2ludGVyU2htZW0tPm51bV9wcmVhbGxvY19zZWdzOwor fQorCisvKgorICogU2V0TnVtUHJlYWxsb2NhdGVkV2FsU2VncworICoKKyAqIFNldHMgdGhlIG51 bWJlciBvZiBwcmUtYWxsb2NhdGVkIFdBTCBzZWdtZW50cyBpbiB0aGUgcHJlYWxsb2NhdGVkX3Nl Z21lbnRzCisgKiBkaXJlY3RvcnkuICBDYWxsZXJzIGFyZSBleHBlY3RlZCB0byBob2xkIHRoZSBX QUxQcmVhbGxvY2F0aW9uTG9jaworICogZXhjbHVzaXZlbHkuCisgKi8KK3ZvaWQKK1NldE51bVBy ZWFsbG9jYXRlZFdhbFNlZ3MoaW50IGkpCit7CisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2Rl KFdBTFByZWFsbG9jYXRpb25Mb2NrLCBMV19FWENMVVNJVkUpKTsKKwlDaGVja3BvaW50ZXJTaG1l bS0+bnVtX3ByZWFsbG9jX3NlZ3MgPSBpOworfQorCisvKgorICogU2NhbkZvckV4aXN0aW5nUHJl YWxsb2NhdGVkU2VnbWVudHMKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIHRocm91Z2gg cGdfd2FsL3ByZWFsbG9jYXRlZF9zZWdtZW50cyBmb3IgYW55IHNlZ21lbnRzCisgKiB0aGF0IHdl cmUgbGVmdCBvdmVyIGFuZCBzZXRzIHRoZSB0cmFja2luZyB2YXJpYWJsZSBpbiBzaGFyZWQgbWVt b3J5CisgKiBhY2NvcmRpbmdseS4KKyAqLworc3RhdGljIHZvaWQKK1NjYW5Gb3JFeGlzdGluZ1By ZWFsbG9jYXRlZFNlZ21lbnRzKHZvaWQpCit7CisJaW50CQlpID0gMDsKKworCS8qCisJICogZnN5 bmMgdGhlIHByZWFsbG9jYXRlZF9zZWdtZW50cyBkaXJlY3RvcnkgaW4gY2FzZSBhbnkgcmVuYW1l cyBoYXZlIHlldCB0bworCSAqIGJlIGZsdXNoZWQgdG8gZGlzay4KKwkgKi8KKwlmc3luY19mbmFt ZV9leHQoWExPR0RJUiAiL3ByZWFsbG9jYXRlZF9zZWdtZW50cyIsIHRydWUsIGZhbHNlLCBGQVRB TCk7CisKKwkvKgorCSAqIEdhdGhlciBhbGwgdGhlIHByZWFsbG9jYXRlZCBzZWdtZW50cyB3ZSBj YW4gZmluZC4KKwkgKi8KKwl3aGlsZSAodHJ1ZSkKKwl7CisJCUZJTEUgKmZkOworCQljaGFyIHBh dGhbTUFYUEdQQVRIXTsKKworCQlzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIlcy9wcmVhbGxv Y2F0ZWRfc2VnbWVudHMveGxvZ3RlbXAuJWQiLAorCQkJCSBYTE9HRElSLCBpKTsKKworCQlmZCA9 IEFsbG9jYXRlRmlsZShwYXRoLCAiciIpOworCQlpZiAoZmQgIT0gTlVMTCkKKwkJeworCQkJRnJl ZUZpbGUoZmQpOworCQkJaSsrOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKGVycm5vICE9IEVO T0VOVCkKKwkJCQllcmVwb3J0KEZBVEFMLAorCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNz KCksCisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBwYXRo KSkpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlMV0xvY2tBY3F1aXJlKFdBTFByZWFsbG9jYXRp b25Mb2NrLCBMV19FWENMVVNJVkUpOworCVNldE51bVByZWFsbG9jYXRlZFdhbFNlZ3MoaSk7CisJ TFdMb2NrUmVsZWFzZShXQUxQcmVhbGxvY2F0aW9uTG9jayk7CisKKwllbG9nKERFQlVHMiwgImZv dW5kICVkIHByZWFsbG9jYXRlZCBzZWdtZW50cyBkdXJpbmcgc3RhcnR1cCIsIGkpOworfQorCisv KgorICogSW5zdGFsbFByZWFsbG9jYXRlZFdhbFNlZworICoKKyAqIFJlbmFtZXMgdGhlIGZpbGUg YXQgInBhdGgiIHRvIHRoZSBuZXh0IG9wZW4gcHJlLWFsbG9jYXRlZCBzZWdtZW50IHNsb3QgYW5k CisgKiBidW1wcyB1cCBudW1fcHJlYWxsb2Nfc2Vncy4gIElmIHRoZXJlIGlzIGEgcHJvYmxlbSwg YSBXQVJOSU5HIGlzIGVtaXR0ZWQsIHdlCisgKiBhdHRlbXB0IHRvIGRlbGV0ZSB0aGUgZmlsZSwg YW5kIGZhbHNlIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlLCB0cnVlIGlzCisgKiByZXR1cm5lZC4K KyAqLworc3RhdGljIGJvb2wKK0luc3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcoY29uc3QgY2hhciAq cGF0aCkKK3sKKwljaGFyCW5ld3BhdGhbTUFYUEdQQVRIXTsKKwlpbnQJCXJjOworCisJTFdMb2Nr QWNxdWlyZShXQUxQcmVhbGxvY2F0aW9uTG9jaywgTFdfRVhDTFVTSVZFKTsKKworCXNucHJpbnRm KG5ld3BhdGgsIE1BWFBHUEFUSCwgIiVzL3ByZWFsbG9jYXRlZF9zZWdtZW50cy94bG9ndGVtcC4l ZCIsCisJWExPR0RJUiwgQ2hlY2twb2ludGVyU2htZW0tPm51bV9wcmVhbGxvY19zZWdzKTsKKwor CXJjID0gZHVyYWJsZV9yZW5hbWUocGF0aCwgbmV3cGF0aCwgREVCVUcxKTsKKwlpZiAocmMgPT0g MCkKKwkJQ2hlY2twb2ludGVyU2htZW0tPm51bV9wcmVhbGxvY19zZWdzKys7CisJZWxzZQorCXsK KwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJ CSBlcnJtc2coImZpbGUgXCIlc1wiIGNvdWxkIG5vdCBiZSByZW5hbWVkIHRvIFwiJXNcIjogJW0i LAorCQkJCQkJcGF0aCwgbmV3cGF0aCkpKTsKKworCQkodm9pZCkgZHVyYWJsZV91bmxpbmsocGF0 aCwgREVCVUcxKTsKKwkJKHZvaWQpIGR1cmFibGVfdW5saW5rKG5ld3BhdGgsIERFQlVHMSk7CisJ fQorCisJTFdMb2NrUmVsZWFzZShXQUxQcmVhbGxvY2F0aW9uTG9jayk7CisKKwlyZXR1cm4gKHJj ID09IDApOworfQorCisvKgorICogRG9XYWxQcmVBbGxvY2F0aW9uCisgKgorICogVHJpZXMgdG8g YWxsb2NhdGUgdXAgdG8gd2FsX3ByZWFsbG9jYXRlX21heF9zaXplIHdvcnRoIG9mIFdBTC4KKyAq Lworc3RhdGljIHZvaWQKK0RvV2FsUHJlQWxsb2NhdGlvbih2b2lkKQoreworCWludAkJc2Vnc190 b19wcmVhbGxvYzsKKworCS8qCisJICogUmVzZXQgdGhlIHJlcXVlc3QgZmxhZy4KKwkgKi8KKwlT cGluTG9ja0FjcXVpcmUoJkNoZWNrcG9pbnRlclNobWVtLT5ja3B0X2xjayk7CisJQ2hlY2twb2lu dGVyU2htZW0tPndhbF9wcmVhbGxvY19yZXF1ZXN0ZWQgPSBmYWxzZTsKKwlTcGluTG9ja1JlbGVh c2UoJkNoZWNrcG9pbnRlclNobWVtLT5ja3B0X2xjayk7CisKKwkvKgorCSAqIERldGVybWluZSBo b3cgbWFueSBzZWdtZW50cyB0byBwcmUtYWxsb2NhdGUuCisJICovCisJTFdMb2NrQWNxdWlyZShX QUxQcmVhbGxvY2F0aW9uTG9jaywgTFdfU0hBUkVEKTsKKwlzZWdzX3RvX3ByZWFsbG9jID0gR2V0 TWF4UHJlYWxsb2NhdGVkV2FsU2VncygpIC0gR2V0TnVtUHJlYWxsb2NhdGVkV2FsU2VncygpOwor CUxXTG9ja1JlbGVhc2UoV0FMUHJlYWxsb2NhdGlvbkxvY2spOworCisJLyoKKwkgKiBEbyB0aGUg cHJlLWFsbG9jYXRpb24uCisJICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzZWdzX3RvX3ByZWFs bG9jOyBpKyspCisJeworCQljaGFyCXRtcHBhdGhbTUFYUEdQQVRIXTsKKworCQlzbnByaW50Zih0 bXBwYXRoLCBNQVhQR1BBVEgsICIlcy9wcmVhbGxvY2F0ZWRfc2VnbWVudHMveGxvZ3RlbXAiLCBY TE9HRElSKTsKKworCQlpZiAoIUNyZWF0ZUVtcHR5V2FsU2VnbWVudCh0bXBwYXRoLCBXQVJOSU5H KSB8fAorCQkJIUluc3RhbGxQcmVhbGxvY2F0ZWRXYWxTZWcodG1wcGF0aCkpCisJCXsKKwkJCWVs b2coREVCVUcyLCAiZmFpbGVkIHRvIHByZS1hbGxvY2F0ZSBXQUwgc2VnbWVudCIpOworCQkJcmV0 dXJuOworCQl9CisJCWVsc2UKKwkJCWVsb2coREVCVUcyLCAicHJlLWFsbG9jYXRlZCBXQUwgc2Vn bWVudCIpOworCisJCS8qIENoZWNrIGZvciBiYXJyaWVyIGV2ZW50cy4gKi8KKwkJaWYgKFByb2NT aWduYWxCYXJyaWVyUGVuZGluZykKKwkJCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOworCisJ CWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCQkJcmV0dXJuOworCX0KK30KKworLyoKKyAq IEdldE1heFByZWFsbG9jYXRlZFdhbFNlZ3MKKyAqCisgKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG51 bWJlciBvZiBwcmUtYWxsb2NhdGVkIFdBTCBzZWdtZW50cyB0byBjcmVhdGUgYmFzZWQgb24KKyAq IHRoZSBjdXJyZW50IHZhbHVlIG9mIHdhbF9wcmVhbGxvY2F0ZV9tYXhfc2l6ZS4KKyAqLworc3Rh dGljIGludAorR2V0TWF4UHJlYWxsb2NhdGVkV2FsU2Vncyh2b2lkKQoreworCXJldHVybiB3YWxf cHJlYWxsb2NfbWF4X3NpemVfbWIgLyAod2FsX3NlZ21lbnRfc2l6ZSAvICgxMDI0ICogMTAyNCkp OworfQorCisvKgorICogUmVxdWVzdFdhbFByZWFsbG9jYXRpb24KKyAqCisgKiBSZXF1ZXN0cyB0 aGF0IG1vcmUgc2VnbWVudHMgYmUgcHJlLWFsbG9jYXRlZCBmb3IgZnV0dXJlIHVzZS4KKyAqLwor dm9pZAorUmVxdWVzdFdhbFByZWFsbG9jYXRpb24odm9pZCkKK3sKKwlTcGluTG9ja0FjcXVpcmUo JkNoZWNrcG9pbnRlclNobWVtLT5ja3B0X2xjayk7CisJQ2hlY2twb2ludGVyU2htZW0tPndhbF9w cmVhbGxvY19yZXF1ZXN0ZWQgPSB0cnVlOworCVNwaW5Mb2NrUmVsZWFzZSgmQ2hlY2twb2ludGVy U2htZW0tPmNrcHRfbGNrKTsKKworCWlmIChQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJMYXRjaCAm JgorCQlHZXRNYXhQcmVhbGxvY2F0ZWRXYWxTZWdzKCkgPiAwKQorCQlTZXRMYXRjaChQcm9jR2xv YmFsLT5jaGVja3BvaW50ZXJMYXRjaCk7Cit9CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlzaWduYWwgaGFuZGxlciByb3V0aW5lcwpAQCAtODk2LDYgKzExMjgs OCBAQCBDaGVja3BvaW50ZXJTaG1lbUluaXQodm9pZCkKIAkJQ2hlY2twb2ludGVyU2htZW0tPm1h eF9yZXF1ZXN0cyA9IE5CdWZmZXJzOwogCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJkNoZWNrcG9p bnRlclNobWVtLT5zdGFydF9jdik7CiAJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmQ2hlY2twb2lu dGVyU2htZW0tPmRvbmVfY3YpOworCQlDaGVja3BvaW50ZXJTaG1lbS0+d2FsX3ByZWFsbG9jX3Jl cXVlc3RlZCA9IGZhbHNlOworCQlDaGVja3BvaW50ZXJTaG1lbS0+bnVtX3ByZWFsbG9jX3NlZ3Mg PSAwOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJh Y2t1cC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCmluZGV4IDRjOTdh YjdiNWEuLmU4NDI4OGE4YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jh c2ViYWNrdXAuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMKQEAg LTE0MTIsMTEgKzE0MTIsMTMgQEAgc2VuZERpcihjb25zdCBjaGFyICpwYXRoLCBpbnQgYmFzZXBh dGhsZW4sIGJvb2wgc2l6ZW9ubHksIExpc3QgKnRhYmxlc3BhY2VzLAogCQkJc2l6ZSArPSBfdGFy V3JpdGVEaXIocGF0aGJ1ZiwgYmFzZXBhdGhsZW4sICZzdGF0YnVmLCBzaXplb25seSk7CiAKIAkJ CS8qCi0JCQkgKiBBbHNvIHNlbmQgYXJjaGl2ZV9zdGF0dXMgZGlyZWN0b3J5IChieSBoYWNraXNo bHkgcmV1c2luZwotCQkJICogc3RhdGJ1ZiBmcm9tIGFib3ZlIC4uLikuCisJCQkgKiBBbHNvIHNl bmQgYXJjaGl2ZV9zdGF0dXMgYW5kIHByZWFsbG9jYXRlZF9zZWdtZW50cyAoYnkgaGFja2lzaGx5 CisJCQkgKiByZXVzaW5nIHN0YXRidWYgZnJvbSBhYm92ZSAuLi4pLgogCQkJICovCiAJCQlzaXpl ICs9IF90YXJXcml0ZUhlYWRlcigiLi9wZ193YWwvYXJjaGl2ZV9zdGF0dXMiLCBOVUxMLCAmc3Rh dGJ1ZiwKIAkJCQkJCQkJCXNpemVvbmx5KTsKKwkJCXNpemUgKz0gX3RhcldyaXRlSGVhZGVyKCIu L3BnX3dhbC9wcmVhbGxvY2F0ZWRfc2VnbWVudHMiLCBOVUxMLCAmc3RhdGJ1ZiwKKwkJCQkJCQkJ CXNpemVvbmx5KTsKIAogCQkJY29udGludWU7CQkJLyogZG9uJ3QgcmVjdXJzZSBpbnRvIHBnX3dh bCAqLwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCmluZGV4IGE0NGRmODY1MzcuLmU1NDI1NTk3ZGYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCkBAIC0zODc3LDggKzM4NzcsOCBAQCBwZ19wd3JpdGV2X3dp dGhfcmV0cnkoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2Zm X3Qgb2Zmc2V0KQogICogQ3JlYXRlIGEgbmV3IGZpbGUgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIG5l dyBXQUwgc2VnbWVudC4gIFRoZSBjYWxsZXIgaXMKICAqIHJlc3BvbnNpYmxlIGZvciBpbnN0YWxs aW5nIHRoZSBuZXcgZmlsZSBpbiBwZ193YWwuCiAgKi8KLXZvaWQKLUNyZWF0ZUVtcHR5V2FsU2Vn bWVudChjb25zdCBjaGFyICpwYXRoKQorYm9vbAorQ3JlYXRlRW1wdHlXYWxTZWdtZW50KGNvbnN0 IGNoYXIgKnBhdGgsIGludCBlbGV2ZWwpCiB7CiAJUEdBbGlnbmVkWExvZ0Jsb2NrIHpidWZmZXI7 CiAJaW50CQkJZmQ7CkBAIC0zODg5LDkgKzM4ODksMTIgQEAgQ3JlYXRlRW1wdHlXYWxTZWdtZW50 KGNvbnN0IGNoYXIgKnBhdGgpCiAJLyogZG8gbm90IHVzZSBnZXRfc3luY19iaXQoKSBoZXJlIC0t LSB3YW50IHRvIGZzeW5jIG9ubHkgYXQgZW5kIG9mIGZpbGwgKi8KIAlmZCA9IEJhc2ljT3BlbkZp bGUocGF0aCwgT19SRFdSIHwgT19DUkVBVCB8IE9fRVhDTCB8IFBHX0JJTkFSWSk7CiAJaWYgKGZk IDwgMCkKLQkJZXJlcG9ydChFUlJPUiwKKwl7CisJCWVyZXBvcnQoZWxldmVsLAogCQkJCShlcnJj b2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgZmls ZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KIAogCW1lbXNldCh6 YnVmZmVyLmRhdGEsIDAsIFhMT0dfQkxDS1NaKTsKIApAQCAtMzk2MSw5ICszOTY0LDEwIEBAIENy ZWF0ZUVtcHR5V2FsU2VnbWVudChjb25zdCBjaGFyICpwYXRoKQogCiAJCWVycm5vID0gc2F2ZV9l cnJubzsKIAotCQllcmVwb3J0KEVSUk9SLAorCQllcmVwb3J0KGVsZXZlbCwKIAkJCQkoZXJyY29k ZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkgZXJybXNnKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmls ZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCXBnc3RhdF9y ZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5UX1dBTF9JTklUX1NZTkMpOwpAQCAtMzk3MywxNCAr Mzk3NywyMCBAQCBDcmVhdGVFbXB0eVdhbFNlZ21lbnQoY29uc3QgY2hhciAqcGF0aCkKIAogCQlj bG9zZShmZCk7CiAJCWVycm5vID0gc2F2ZV9lcnJubzsKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJl cG9ydChlbGV2ZWwsCiAJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJIGVycm1z ZygiY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpKSk7CisJCXJldHVybiBm YWxzZTsKIAl9CiAJcGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOwogCiAJaWYgKGNsb3NlKGZkKSAh PSAwKQotCQllcmVwb3J0KEVSUk9SLAorCXsKKwkJZXJlcG9ydChlbGV2ZWwsCiAJCQkJKGVycmNv ZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJIGVycm1zZygiY291bGQgbm90IGNsb3NlIGZpbGUg XCIlc1wiOiAlbSIsIHBhdGgpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1 ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50 eHQgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0CmluZGV4IDZjN2Nm NmMyOTUuLjIxMmJkYThlN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s d2xvY2tuYW1lcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVz LnR4dApAQCAtNTMsMyArNTMsNCBAQCBYYWN0VHJ1bmNhdGlvbkxvY2sJCQkJCTQ0CiAjIDQ1IHdh cyBYYWN0VHJ1bmNhdGlvbkxvY2sgdW50aWwgcmVtb3ZhbCBvZiBCYWNrZW5kUmFuZG9tTG9jawog V3JhcExpbWl0c1ZhY3V1bUxvY2sJCQkJNDYKIE5vdGlmeVF1ZXVlVGFpbExvY2sJCQkJCTQ3CitX QUxQcmVhbGxvY2F0aW9uTG9jawkJCQk0OApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggZDJjZTRhODQ1 MC4uNGQzMjc0YTcwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0yODQwLDYgKzI4NDAsMTcgQEAg c3RhdGljIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBO VUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJ3YWxfcHJlYWxsb2NhdGVfbWF4X3NpemUiLCBQR0Nf U0lHSFVQLCBXQUxfU0VUVElOR1MsCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG1heGltdW0g YW1vdW50IG9mIFdBTCB0byBwcmUtYWxsb2NhdGUuIiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRf TUIKKwkJfSwKKwkJJndhbF9wcmVhbGxvY19tYXhfc2l6ZV9tYiwKKwkJNjQsIDAsIDEwMjQwMCwK KwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsid2FsX2J1ZmZlcnMiLCBQR0NfUE9T VE1BU1RFUiwgV0FMX1NFVFRJTkdTLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIg b2YgZGlzay1wYWdlIGJ1ZmZlcnMgaW4gc2hhcmVkIG1lbW9yeSBmb3IgV0FMLiIpLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDNmZTlhNTNj YjMuLjMwOTc0NWU5MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKQEAgLTIyMyw2ICsyMjMsNyBAQAogCQkJCQkjIG9mZiwgcGdseiwgbHo0LCBv ciBvbgogI3dhbF9pbml0X3plcm8gPSBvbgkJCSMgemVyby1maWxsIG5ldyBXQUwgZmlsZXMKICN3 YWxfcmVjeWNsZSA9IG9uCQkJIyByZWN5Y2xlIFdBTCBmaWxlcworI3dhbF9wcmVhbGxvY2F0ZV9t YXhfc2l6ZSA9IDY0TUIJIyBhbW91bnQgb2YgV0FMIHRvIHByZS1hbGxvY2F0ZQogI3dhbF9idWZm ZXJzID0gLTEJCQkjIG1pbiAzMmtCLCAtMSBzZXRzIGJhc2VkIG9uIHNoYXJlZF9idWZmZXJzCiAJ CQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI3dhbF93cml0ZXJfZGVsYXkgPSAyMDBt cwkJIyAxLTEwMDAwIG1pbGxpc2Vjb25kcwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwppbmRleCAxZWQ0ODA4ZDUzLi5hYTUyYWFl ZmZiIDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2lu aXRkYi9pbml0ZGIuYwpAQCAtMjA4LDYgKzIwOCw3IEBAIHN0YXRpYyBjaGFyICpleHRyYV9vcHRp b25zID0gIiI7CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3ViZGlyc1tdID0gewogCSJnbG9i YWwiLAogCSJwZ193YWwvYXJjaGl2ZV9zdGF0dXMiLAorCSJwZ193YWwvcHJlYWxsb2NhdGVkX3Nl Z21lbnRzIiwKIAkicGdfY29tbWl0X3RzIiwKIAkicGdfZHluc2htZW0iLAogCSJwZ19ub3RpZnki LApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyBiL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKaW5kZXggMjdlZTYzOTRjZi4uMDYy M2NmZTRiMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAu YworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jCkBAIC02ODAsNiAr NjgwLDIyIEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVpbnQzMiB0aW1lbGlu ZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0 ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHN0YXR1c2Rpcik7CiAJCQlleGl0KDEpOwogCQl9CisK KwkJLyoKKwkJICogQWxzbyBjcmVhdGUgcGdfd2FsL3ByZWFsbG9jYXRlZF9zZWdtZW50cyBpZiBu ZWNlc3NhcnkuCisJCSAqLworCQlpZiAoUFFzZXJ2ZXJWZXJzaW9uKGNvbm4pID49IDE1MDAwMCkK KwkJeworCQkJY2hhciBwcmVhbGxvY19kaXJbTUFYUEdQQVRIXTsKKworCQkJc25wcmludGYocHJl YWxsb2NfZGlyLCBzaXplb2YocHJlYWxsb2NfZGlyKSwgIiVzL3BnX3dhbC9wcmVhbGxvY2F0ZWRf c2VnbWVudHMiLAorCQkJCQkgYmFzZWRpcik7CisJCQlpZiAocGdfbWtkaXJfcChwcmVhbGxvY19k aXIsIHBnX2Rpcl9jcmVhdGVfbW9kZSkgIT0gMCAmJiBlcnJubyAhPSBFRVhJU1QpCisJCQl7CisJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwg cHJlYWxsb2NfZGlyKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9CiAJfQogCiAJLyoKQEAgLTE2 MTEsNyArMTYyNyw4IEBAIFJlY2VpdmVUYXJBbmRVbnBhY2tDb3B5Q2h1bmsoc2l6ZV90IHIsIGNo YXIgKmNvcHlidWYsIHZvaWQgKmNhbGxiYWNrX2RhdGEpCiAJCQkJCSAqLwogCQkJCQlpZiAoISgo cGdfc3RyX2VuZHN3aXRoKHN0YXRlLT5maWxlbmFtZSwgIi9wZ193YWwiKSB8fAogCQkJCQkJICAg cGdfc3RyX2VuZHN3aXRoKHN0YXRlLT5maWxlbmFtZSwgIi9wZ194bG9nIikgfHwKLQkJCQkJCSAg IHBnX3N0cl9lbmRzd2l0aChzdGF0ZS0+ZmlsZW5hbWUsICIvYXJjaGl2ZV9zdGF0dXMiKSkgJiYK KwkJCQkJCSAgIHBnX3N0cl9lbmRzd2l0aChzdGF0ZS0+ZmlsZW5hbWUsICIvYXJjaGl2ZV9zdGF0 dXMiKSB8fAorCQkJCQkJICAgcGdfc3RyX2VuZHN3aXRoKHN0YXRlLT5maWxlbmFtZSwgIi9wcmVh bGxvY2F0ZWRfc2VnbWVudHMiKSkgJiYKIAkJCQkJCSAgZXJybm8gPT0gRUVYSVNUKSkKIAkJCQkJ ewogCQkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFj a3VwLnBsIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwKaW5k ZXggYTJjYjJhNzY3OS4uNDNlMWUzZTg5ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3Qv MDEwX3BnX2Jhc2ViYWNrdXAucGwKQEAgLTEyMCwxMCArMTIwLDEwIEBAIFNLSVA6CiAJCSJjaGVj ayBiYWNrdXAgZGlyIHBlcm1pc3Npb25zIik7CiB9CiAKLSMgT25seSBhcmNoaXZlX3N0YXR1cyBk aXJlY3Rvcnkgc2hvdWxkIGJlIGNvcGllZCBpbiBwZ193YWwvLgorIyBPbmx5IGFyY2hpdmVfc3Rh dHVzIGFuZCBwcmVhbGxvY2F0ZWRfc2VnbWVudHMgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIGNvcGll ZCBpbiBwZ193YWwvLgogaXNfZGVlcGx5KAogCVsgc29ydChzbHVycF9kaXIoIiR0ZW1wZGlyL2Jh Y2t1cC9wZ193YWwvIikpIF0sCi0JWyBzb3J0IHF3KC4gLi4gYXJjaGl2ZV9zdGF0dXMpIF0sCisJ WyBzb3J0IHF3KC4gLi4gYXJjaGl2ZV9zdGF0dXMgcHJlYWxsb2NhdGVkX3NlZ21lbnRzKSBdLAog CSdubyBXQUwgZmlsZXMgY29waWVkJyk7CiAKICMgQ29udGVudHMgb2YgdGhlc2UgZGlyZWN0b3Jp ZXMgc2hvdWxkIG5vdCBiZSBjb3BpZWQuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2Fs L3BnX3Jlc2V0d2FsLmMgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKaW5kZXgg ODRiNmY3MGFkNi4uY2EwOWFkNzJkMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9w Z19yZXNldHdhbC5jCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpAQCAt ODUsNiArODUsNyBAQCBzdGF0aWMgdm9pZCBSZXdyaXRlQ29udHJvbEZpbGUodm9pZCk7CiBzdGF0 aWMgdm9pZCBGaW5kRW5kT2ZYTE9HKHZvaWQpOwogc3RhdGljIHZvaWQgS2lsbEV4aXN0aW5nWExP Ryh2b2lkKTsKIHN0YXRpYyB2b2lkIEtpbGxFeGlzdGluZ0FyY2hpdmVTdGF0dXModm9pZCk7Citz dGF0aWMgdm9pZCBLaWxsRXhpc3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cyh2b2lkKTsKIHN0YXRp YyB2b2lkIFdyaXRlRW1wdHlYTE9HKHZvaWQpOwogc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCk7CiAK QEAgLTUzMCw2ICs1MzEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJUmV3cml0 ZUNvbnRyb2xGaWxlKCk7CiAJS2lsbEV4aXN0aW5nWExPRygpOwogCUtpbGxFeGlzdGluZ0FyY2hp dmVTdGF0dXMoKTsKKwlLaWxsRXhpc3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cygpOwogCVdyaXRl RW1wdHlYTE9HKCk7CiAKIAlwcmludGYoXygiV3JpdGUtYWhlYWQgbG9nIHJlc2V0XG4iKSk7CkBA IC0xMTIwLDYgKzExMjIsNTIgQEAgS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1cyh2b2lkKQogfQog CiAKKy8qCisgKiBSZW1vdmUgZXhpc3RpbmcgcHJlYWxsb2NhdGVkIHNlZ21lbnRzCisgKi8KK3N0 YXRpYyB2b2lkCitLaWxsRXhpc3RpbmdQcmVhbGxvY2F0ZWRTZWdtZW50cyh2b2lkKQoreworI2Rl ZmluZSBQUkVBTExPQ1NFR0RJUiBYTE9HRElSICIvcHJlYWxsb2NhdGVkX3NlZ21lbnRzIgorCisJ RElSCQkgICAqeGxkaXI7CisJc3RydWN0IGRpcmVudCAqeGxkZTsKKwljaGFyCQlwYXRoW01BWFBH UEFUSCArIHNpemVvZihQUkVBTExPQ1NFR0RJUildOworCisJeGxkaXIgPSBvcGVuZGlyKFBSRUFM TE9DU0VHRElSKTsKKwlpZiAoeGxkaXIgPT0gTlVMTCkKKwl7CisJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBQUkVBTExPQ1NFR0RJUik7CisJCWV4 aXQoMSk7CisJfQorCisJd2hpbGUgKGVycm5vID0gMCwgKHhsZGUgPSByZWFkZGlyKHhsZGlyKSkg IT0gTlVMTCkKKwl7CisJCWlmIChzdHJuY21wKHhsZGUtPmRfbmFtZSwgInhsb2d0ZW1wIiwgc3Ry bGVuKCJ4bG9ndGVtcCIpKSA9PSAgMCkKKwkJeworCQkJc25wcmludGYocGF0aCwgc2l6ZW9mKHBh dGgpLCAiJXMvJXMiLCBQUkVBTExPQ1NFR0RJUiwgeGxkZS0+ZF9uYW1lKTsKKwkJCWlmICh1bmxp bmsocGF0aCkgPCAwKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGRlbGV0ZSBm aWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9CisJfQorCisJ aWYgKGVycm5vKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBkaXJlY3Rvcnkg XCIlc1wiOiAlbSIsIFBSRUFMTE9DU0VHRElSKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoY2xv c2VkaXIoeGxkaXIpKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZGlyZWN0 b3J5IFwiJXNcIjogJW0iLCBQUkVBTExPQ1NFR0RJUik7CisJCWV4aXQoMSk7CisJfQorfQorCisK IC8qCiAgKiBXcml0ZSBhbiBlbXB0eSBYTE9HIGZpbGUsIGNvbnRhaW5pbmcgb25seSB0aGUgY2hl Y2twb2ludCByZWNvcmQKICAqIGFscmVhZHkgc2V0IHVwIGluIENvbnRyb2xGaWxlLgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5oIGIvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9iZ3dyaXRlci5oCmluZGV4IGM0MzBiMWIyMzYuLjgzMDNlYjQ4Y2IgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2Jnd3JpdGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAgZXh0ZXJuIGludAlCZ1dyaXRl ckRlbGF5OwogZXh0ZXJuIGludAlDaGVja1BvaW50VGltZW91dDsKIGV4dGVybiBpbnQJQ2hlY2tQ b2ludFdhcm5pbmc7CiBleHRlcm4gZG91YmxlIENoZWNrUG9pbnRDb21wbGV0aW9uVGFyZ2V0Owor ZXh0ZXJuIGludAl3YWxfcHJlYWxsb2NfbWF4X3NpemVfbWI7CiAKIGV4dGVybiB2b2lkIEJhY2tn cm91bmRXcml0ZXJNYWluKHZvaWQpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwogZXh0ZXJuIHZv aWQgQ2hlY2twb2ludGVyTWFpbih2b2lkKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKQEAgLTQy LDQgKzQzLDggQEAgZXh0ZXJuIHZvaWQgQ2hlY2twb2ludGVyU2htZW1Jbml0KHZvaWQpOwogCiBl eHRlcm4gYm9vbCBGaXJzdENhbGxTaW5jZUxhc3RDaGVja3BvaW50KHZvaWQpOwogCitleHRlcm4g aW50IEdldE51bVByZWFsbG9jYXRlZFdhbFNlZ3Modm9pZCk7CitleHRlcm4gdm9pZCBTZXROdW1Q cmVhbGxvY2F0ZWRXYWxTZWdzKGludCBpKTsKK2V4dGVybiB2b2lkIFJlcXVlc3RXYWxQcmVhbGxv Y2F0aW9uKHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogX0JHV1JJVEVSX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaApp bmRleCBhYmNkNzRiZDUxLi4yZDE3NDUwOWM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL2ZkLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCkBAIC0xOTAsNyArMTkwLDcg QEAgZXh0ZXJuIGludAlkdXJhYmxlX3VubGluayhjb25zdCBjaGFyICpmbmFtZSwgaW50IGxvZ2xl dmVsKTsKIGV4dGVybiBpbnQJZHVyYWJsZV9yZW5hbWVfZXhjbChjb25zdCBjaGFyICpvbGRmaWxl LCBjb25zdCBjaGFyICpuZXdmaWxlLCBpbnQgbG9nbGV2ZWwpOwogZXh0ZXJuIHZvaWQgU3luY0Rh dGFEaXJlY3Rvcnkodm9pZCk7CiBleHRlcm4gaW50CWRhdGFfc3luY19lbGV2ZWwoaW50IGVsZXZl bCk7Ci1leHRlcm4gdm9pZCBDcmVhdGVFbXB0eVdhbFNlZ21lbnQoY29uc3QgY2hhciAqcGF0aCk7 CitleHRlcm4gYm9vbCBDcmVhdGVFbXB0eVdhbFNlZ21lbnQoY29uc3QgY2hhciAqcGF0aCwgaW50 IGVsZXZlbCk7CiAKIC8qIEZpbGVuYW1lIGNvbXBvbmVudHMgKi8KICNkZWZpbmUgUEdfVEVNUF9G SUxFU19ESVIgInBnc3FsX3RtcCIKLS0gCjIuMTYuNgoK --_003_146BBD58273E4849BFC10B42DC5B46D4amazoncom_--