From owner-freebsd-transport@freebsd.org Fri Sep 11 07:40:24 2020 Return-Path: Delivered-To: freebsd-transport@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 34F043D08DE for ; Fri, 11 Sep 2020 07:40:24 +0000 (UTC) (envelope-from Richard.Scheffenegger@netapp.com) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2056.outbound.protection.outlook.com [40.107.237.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "GlobalSign Organization Validation CA - SHA256 - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4BnnjM0cpHz3yWs for ; Fri, 11 Sep 2020 07:40:22 +0000 (UTC) (envelope-from Richard.Scheffenegger@netapp.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E+8y038ZibmkiZZGPAZDWeP8wGbfUffJTi/+r7td4F4MZ1uWbxtN5tD/9pcbv+hIgUBtz0VAkDw7y4bz1kZ0Hm3MVOfwR+hHFH7x2ZbnxzEthWF+KTWnq5IS3UaM6ca8Y0jX7tOqqoORtzEA4PUyJie0AP8+v+udnQInimUdxbIFTTn7LZ7R0fr3gm9X/KscmfBfuB48U9TUccMlmEnFbmhRAPx/TURh8Fg/bsN6XmYGuVDc9gJVdad3e9uW/o4GYzEtr1VWu/BKiMCe7WU3rcRi3op9wKpIuP2Szpi0CIoLEFRaBhM6eikWbbXXRDNJ2XayDiRD0qm5G6SGllIBIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3dQQIIZ0eG4xD7GQP3AU9JG0rJIJOWysrB7kEHgOZyo=; b=M4SNUmzc7foNOVukht4WuyrvU1Q2/ixz43u5/WYjCN/NTi5OMg354FOrf+CUmv6+6G+MLqUhZ6b1vFc+sY/QJgbh5MC3SANFZyFbc4P/rbw3iQWlh8brSIH37NEOSI04oPzizuaIhDGCiV54q96WhVF0quOitQy1Id6qjjOxy5JcNS1KG59VGzTYws83sM2pUwqoor8cw8eu7zgjrqAN2sJAlUj5CzblgvU1B5fp8mwosvkuloisnFgxKZoEjwBQaq7fEN0akoEc+84YGKTHMKYf9Y1ddCJ7EBwYJjXq5R8TBRdL5uV2l23VG3bodxQ0iz9gZGJIBGQGTM8HH4OZ9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=netapp.com; dmarc=pass action=none header.from=netapp.com; dkim=pass header.d=netapp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netapp.onmicrosoft.com; s=selector1-netapp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3dQQIIZ0eG4xD7GQP3AU9JG0rJIJOWysrB7kEHgOZyo=; b=FbLDQ0QMWe4MhdIxHs0uyzdzESdnImBSWOeytaQ7wWCKjlaZ1xlZxDnfrplPLLQ7/8BFw4ORoMYsE5ey8g0HvibNEdnyAGAeh00WTJC3sb7+kGNLTD52F88pQvsfAFKrbyOuZe1FYpreTP75PfY5d4yzgJV38UgwJOEkh62sFeA= Received: from SN4PR0601MB3728.namprd06.prod.outlook.com (2603:10b6:803:51::24) by SN4PR0601MB3629.namprd06.prod.outlook.com (2603:10b6:803:4b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.18; Fri, 11 Sep 2020 07:40:20 +0000 Received: from SN4PR0601MB3728.namprd06.prod.outlook.com ([fe80::84a9:fc74:7eed:ca3a]) by SN4PR0601MB3728.namprd06.prod.outlook.com ([fe80::84a9:fc74:7eed:ca3a%7]) with mapi id 15.20.3370.016; Fri, 11 Sep 2020 07:40:20 +0000 From: "Scheffenegger, Richard" To: Liang Tian , FreeBSD Transport Subject: RE: Fast recovery ssthresh value Thread-Topic: Fast recovery ssthresh value Thread-Index: AQHWeNGXKLXrd0Ypk0G/FpBfyhwhfqlGGMBAgBqPXACAARNjQIABNHEAgAA7XmA= Date: Fri, 11 Sep 2020 07:40:19 +0000 Message-ID: References: In-Reply-To: Accept-Language: de-AT, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [185.236.167.136] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0704313f-da23-4fab-05fb-08d85625ef50 x-ms-traffictypediagnostic: SN4PR0601MB3629: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: b/GSQKVVCwF8cD4wCY0+BCLB4ToIkP1nzVo3GbZz/C9XvHzN3JPd0tRCkrHR6NbK3Knc3Vi84Jz+zZIoEaRUPrIHWGAvIGZ/lOEDHG2ifPCUkh9bRCZVKAWrPFCrFAQZt4SEkCIqQoVxWGMd9rMtilraTiurftxDtujfskhOntkuhhmgVLlH12TOfoRnVVsNqnmWwYTl4yW64jA0kOy9UcvMnAKLQT7gOpSw4+CZOULNH+miLovXbdgJKk3XkTDD1nGBCThasyxQ+Q8vW1d16DvK9aoA4v61CalQ6ypcOXRUR3nx9ql24kLat+jrbzSfsOKxYHxI9EqrqSmQvPYKl+8T/ZFuuSlT0IfQG/vIkKLTqCVLtLSInjrFkUf+jYZMl6tlNfRsc+aP4eZmqT+5cA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN4PR0601MB3728.namprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(8936002)(6506007)(76116006)(26005)(316002)(53546011)(66556008)(186003)(5660300002)(52536014)(66476007)(478600001)(66946007)(33656002)(64756008)(66446008)(71200400001)(7696005)(110136005)(8676002)(3480700007)(9686003)(966005)(86362001)(83380400001)(2906002)(55016002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: fR3xnxL5S+3l3DXf0HbdQmeKjhC1O/ZVOQ2B44sRsuTrEAc6rwmuCgLIJTXXJPdYRfDsJsfa8ZFKz1IcxuCx8Mf1sqKtB/HDP+MFHeQe4y0OX+4Zw7Vu9xC6BO48st3Oag554/ARG1Smgty9QyEOPT2l1h05OfcfdUeeFNAkyjlm85DjZmbkwUW5VjjLF/42SYjbcUB5ZD3e0xJDyRm7M2qs5kV7IimehzwkAue5hfIQlCh1EwtPihX4yscNUFIfBc27AkFCz1wYeBMjBmg83e0Z+HFE8a8FN8USXduHi+b8h1feIh1a6Df29h0cySGCN2nk+gb8WacbxmTuW7o9G58ydvaKbwIkH7ULyI5vGfSwePwsPjo8YUVBXY+S4H0h82n9Gvi24xuUwZjyhEa5ZfcXiHwXY2uw6/rWQStKitscI/KeKLPdQrIWf/tgsrYP1BXtcFGryTwYmVLcd9s+ltNquBKKOpGv4PPKcwQHg8EPdRv8LuDpUOm/2UTMq/Wa5JY/+sW0wgFHhEqeOGhxCrJ0MBnzFRbHHbwC81e8hf3KQwIfifwJW8ImMTFR81F7KAm1hSXonw9R07+7YBQ3sfAvr3foYIA8wcD6J1F5oPHdsX8el4cPTFWF7UxEVT3lDXU/a3WI84LgzQcLSP4eww== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: netapp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN4PR0601MB3728.namprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0704313f-da23-4fab-05fb-08d85625ef50 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2020 07:40:20.0273 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4b0911a0-929b-4715-944b-c03745165b3a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YwrGVMk2Oqn015lzRRlQwwJj99D60i9/uAunhvYe/poR1F6WiPChuRBH8y83QQxhsszwqG/FDbigrmBLhFFVOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0601MB3629 X-Rspamd-Queue-Id: 4BnnjM0cpHz3yWs X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=netapp.onmicrosoft.com header.s=selector1-netapp-onmicrosoft-com header.b=FbLDQ0QM; dmarc=none; spf=pass (mx1.freebsd.org: domain of Richard.Scheffenegger@netapp.com designates 40.107.237.56 as permitted sender) smtp.mailfrom=Richard.Scheffenegger@netapp.com X-Spamd-Result: default: False [-3.49 / 15.00]; HAS_XOIP(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:40.107.0.0/16]; MIME_BASE64_TEXT_BOGUS(1.00)[]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[netapp.onmicrosoft.com:+]; MIME_BASE64_TEXT(0.10)[]; RCPT_COUNT_TWO(0.00)[2]; NEURAL_HAM_SHORT(-1.09)[-1.091]; FREEMAIL_TO(0.00)[gmail.com,freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:8075, ipnet:40.104.0.0/14, country:US]; ARC_ALLOW(-1.00)[microsoft.com:s=arcselector9901:i=1]; NEURAL_HAM_MEDIUM(-0.98)[-0.983]; R_DKIM_ALLOW(-0.20)[netapp.onmicrosoft.com:s=selector1-netapp-onmicrosoft-com]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.02)[-1.018]; TAGGED_RCPT(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[netapp.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[40.107.237.56:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[40.107.237.56:from]; MAILMAN_DEST(0.00)[freebsd-transport] X-BeenThere: freebsd-transport@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: Discussions of transport level network protocols in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Sep 2020 07:40:24 -0000 UGVyZmVjdCENCg0KUGxlYXNlIHNoYXJlIHlvdXIgZmluZGluZ3MgdGhlbiwgYXMgcmV2aWV3cyAo aW5jbHVkaW5nIGluZm9ybWFsIG9uZXMpIGFyZSBuZWVkZWQgcHJpb3IgdG8gbWUgY29tbWl0dGlu ZyB0aGlzIHBhdGNoLg0KDQpOb3RlIHRoYXQgaXQgYnVpbGRzIHVwb24gRDE4NjI0LCB3aGljaCBp cyBjdXJyZW50bHkgaW4gc3RhYmxlLzEyIGFuZCBoZWFkLCBidXQgbm90IGFueSByZWxlYXNlZCBi cmFuY2hlcy4gU28geW91IG1heSBuZWVkIHRvIGFwcGx5IHRoYXQgdG9vIGlmIHlvdSBhcmVuJ3Qg dXNpbmcgaGVhZC4NCg0KQmVzdCByZWdhcmRzLA0KDQoNClJpY2hhcmQgU2NoZWZmZW5lZ2dlcg0K DQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogTGlhbmcgVGlhbiA8bC50aWFuLmVt YWlsQGdtYWlsLmNvbT4gDQpTZW50OiBGcmVpdGFnLCAxMS4gU2VwdGVtYmVyIDIwMjAgMDY6MDYN ClRvOiBTY2hlZmZlbmVnZ2VyLCBSaWNoYXJkIDxSaWNoYXJkLlNjaGVmZmVuZWdnZXJAbmV0YXBw LmNvbT47IEZyZWVCU0QgVHJhbnNwb3J0IDxmcmVlYnNkLXRyYW5zcG9ydEBmcmVlYnNkLm9yZz4N ClN1YmplY3Q6IFJlOiBGYXN0IHJlY292ZXJ5IHNzdGhyZXNoIHZhbHVlDQoNCk5ldEFwcCBTZWN1 cml0eSBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dGVybmFsIGVtYWlsLiBEbyBub3QgY2xpY2sgbGlu a3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6ZSB0aGUgc2VuZGVyIGFu ZCBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQoNCg0KDQoNCkhpIFJpY2hhcmQsDQoNClRoYW5r cyEgSSdtIGFibGUgdG8gYXBwbHkgdGhlIHBhdGNoZXMuIEknbGwgdGVzdCBpdC4NCg0KUmVnYXJk cywNCkxpYW5nDQoNCg0KDQpPbiBUaHUsIFNlcCAxMCwgMjAyMCBhdCA1OjQ5IEFNIFNjaGVmZmVu ZWdnZXIsIFJpY2hhcmQgPFJpY2hhcmQuU2NoZWZmZW5lZ2dlckBuZXRhcHAuY29tPiB3cm90ZToN Cj4NCj4gSGkgTGlhbmcsDQo+DQo+IFllcywgeW91IGFyZSBhYnNvbHV0ZWx5IGNvcnJlY3QgYWJv dXQgdGhpcyBvYnNlcnZhdGlvbi4gVGhlIFNBQ0sgbG9zcyByZWNvdmVyeSB3aWxsIG9ubHkgc2Vu ZCAgb25lIE1TUyBwZXIgcmVjZWl2ZWQgQUNLIHJpZ2h0IG5vdyAtIGFuZCB3aGVuIHRoZXJlIGlz IEFDSyB0aGlubmluZyBwcmVzZW50LCB3aWxsIGZhaWwgdG8gdGltZWx5IHJlY292ZXIgYWxsIHRo ZSBtaXNzaW5nIHBhY2tldHMsIGV2ZW50dWFsbHkgcmVjZWl2aW5nIG5vIG1vcmUgQUNLIHRvIGNs b2NrIG91dCBtb3JlIHJldHJhbnNtaXNzaW9ucy4uLg0KPg0KPiBJIGhhdmUgYSBEaWZmIGluIHJl dmlldywgdG8gaW1wbGVtZW50IFByb3BvcnRpb25hbCBSYXRlIFJlZHVjdGlvbjoNCj4NCj4gaHR0 cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QxODg5Mg0KPg0KPiBXaGljaCBzaG91bGQgYWRkcmVz cyBub3Qgb25seSB0aGF0IGlzc3VlIGFib3V0IEFDSyB0aGlubmluZywgYnV0IGFsc28gdGhlIGlz c3VlIHRoYXQgY3VycmVudCBTQUNLIGxvc3MgcmVjb3ZlcnkgaGFzIHRvIHdhaXQgdW50aWwgcGlw ZSBkcm9wcyBiZWxvdyBzc3RocmVzaCwgYmVmb3JlIHRoZSByZXRyYW5zbWlzc2lvbnMgYXJlIGNs b2NrZWQgb3V0LiBBbmQgdGhlbiwgdGhleSB3b3VsZCBhY3R1YWxseSBiZSBjbG9ja2VkIG91dCBh dCB0aGUgc2FtZSByYXRlIGF0IHRoZSBpbmNvbWluZyBBQ0tzLiBUaGlzIHdvdWxkIGJlIHRoZSBz YW1lIHJhdGUgYXMgd2hlbiB0aGUgb3ZlcmxvYWQgaGFwcGVuZWQgKGJhcnJpbmcgYW55IEFDSyB0 aGlubmluZyksIGFuZCBhcyBhIHNlY29uZGFyeSBlZmZlY3QsIGl0IHdhcyBvYnNlcnZlZCB0aGF0 IHRoaXMgYmVoYXZpb3IgdG9vIGNhbiBsZWFkIHRvIHNlbGYtaW5mbGljdGVkIGxvc3MgLSBvZiBy ZXRyYW5zbWlzc2lvbnMuDQo+DQo+IElmIHlvdSBoYXZlIHRoZSBhYmlsaXR5IHRvIHBhdGNoIHlv dXIga2VybmVsIHdpdGggRDE4ODkyIGFuZCBvYnNlcnZlIGhvdyB0aGUgcmVhY3Rpb24gaXMgaW4g eW91ciBkcmFtYXRpYyBBQ0sgdGhpbm5pbmcgc2NlbmFyaW8sIHRoYXQgd291bGQgYmUgZ29vZCB0 byBrbm93ISBUaGUgYXNzdW1wdGlvbiBvZiB0aGUgUGF0Y2ggd2FzLCB0aGF0IC0gYXMgcGVyIFRD UCBSRkMgcmVxdWlyZW1lbnRzIC0gdGhlcmUgaXMgb25lIEFDSyBmb3IgZWFjaCByZWNlaXZlZCBv dXQtb2Ytc2VxdWVuY2UgZGF0YSBzZWdtZW50LCBhbmQgQUNLIGRyb3BzIC8gdGhpbm5pbmcgYXJl IG5vdCBoYXBwZW5pbmcgb24gc3VjaCBhIG1hc3NpdmUgc2NhbGUgYXMgeW91IGRlc2NyaWJlIGl0 Lg0KPg0KPiBCZXN0IHJlZ2FyZHMsDQo+DQo+IFJpY2hhcmQgU2NoZWZmZW5lZ2dlcg0KPg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBvd25lci1mcmVlYnNkLXRyYW5zcG9y dEBmcmVlYnNkLm9yZyANCj4gPG93bmVyLWZyZWVic2QtdHJhbnNwb3J0QGZyZWVic2Qub3JnPiBP biBCZWhhbGYgT2YgTGlhbmcgVGlhbg0KPiBTZW50OiBNaXR0d29jaCwgOS4gU2VwdGVtYmVyIDIw MjAgMTk6MTYNCj4gVG86IFNjaGVmZmVuZWdnZXIsIFJpY2hhcmQgPFJpY2hhcmQuU2NoZWZmZW5l Z2dlckBuZXRhcHAuY29tPg0KPiBDYzogRnJlZUJTRCBUcmFuc3BvcnQgPGZyZWVic2QtdHJhbnNw b3J0QGZyZWVic2Qub3JnPg0KPiBTdWJqZWN0OiBSZTogRmFzdCByZWNvdmVyeSBzc3RocmVzaCB2 YWx1ZQ0KPg0KPiBIaSBSaWNoYXJkLA0KPg0KPiBUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbiBh bmQgc29ycnkgZm9yIHRoZSBsYXRlIHJlcGx5Lg0KPiBJJ3ZlIGJlZW4gaW52ZXN0aWdhdGluZyBT QUNLIGxvc3MgcmVjb3ZlcnkgYW5kIEkgdGhpbmsgSSdtIHNlZWluZyBhbiANCj4gaXNzdWUgc2lt aWxhciB0byB0aGUgQUJDIEwgdmFsdWUgaXNzdWUgdGhhdCBJIHJlcG9ydGVkDQo+IHByZXZpb3Vz bHkoaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QyNjEyMCkgYW5kIEkgZG8gYmVsaWV2ZSB0 aGVyZSBpcyBhIGRldmlhdGlvbiB0byBSRkMzNTE3Og0KPiBUaGUgaXNzdWUgaGFwcGVucyB3aGVu IGEgRHVwQWNrIGlzIHJlY2VpdmVkIGR1cmluZyBTQUNLIGxvc3MgcmVjb3ZlcnkgaW4gdGhlIHBy ZXNlbmNlIG9mIEFDSyBUaGlubmluZyBvciByZWNlaXZlciBlbmFibGluZyBMUk8sIHdoaWNoIG1l YW5zIHRoZSBTQUNLIGJsb2NrIGVkZ2VzIGNvdWxkIGV4cGFuZCBieSBtb3JlIHRoYW4gMSBTTVNT KFdlJ3ZlIHNlZW4gMzAqU01TUyksIGkuZS4gYSBzaW5nbGUgRHVwQWNrIGNvdWxkIGRlY3JlbWVu dCBgcGlwZWAgYnkgbW9yZSB0aGFuIDEgU01TUy4NCj4gSW4gUkZDMzUxNywNCj4gKEMpIElmIGN3 bmQgLSBwaXBlID49IDEgU01TUywgdGhlIHNlbmRlciBTSE9VTEQgdHJhbnNtaXQgb25lIG9yIG1v cmUgc2VnbWVudHMuLi4NCj4gICAgICAgICAoQy41KSBJZiBjd25kIC0gcGlwZSA+PSAxIFNNU1Ms IHJldHVybiB0byAoQy4xKSBTbyBiYXNlZCBvbiBSRkMsIHRoZSBzZW5kZXIgc2hvdWxkIGJlIGFi bGUgdG8gc2VuZCBtb3JlIHNlZ21lbnRzIGlmIHN1Y2ggRHVwQWNrIGlzIHJlY2VpdmVkLCBiZWNh dXNlIG9mIHRoZSBiaWcgY2hhbmdlIHRvIGBwaXBlYC4NCj4NCj4gSW4gdGhlIGN1cnJlbnQgaW1w bGVtZW50YXRpb24sIHRoZSBjd2luIHZhcmlhYmxlLCB3aGljaCBjb250cm9scyB0aGUgYW1vdW50 IG9mIGRhdGEgdGhhdCBjYW4gYmUgdHJhbnNtaXR0ZWQgYmFzZWQgb24gdGhlIG5ldyBpbmZvcm1h dGlvbiwgaXMgZGljdGF0ZWQgYnkgc25kX2N3bmQuIFRoZSBzbmRfY3duZCBpcyBpbmNyZW1lbnRl ZCBieSAxIFNNU1MgZm9yIGVhY2ggRHVwQWNrIHJlY2VpdmVkLiBJIGJlbGlldmUgdGhpcyBlZmZl Y3RpdmVseSBsaW1pdHMgdGhlIHJldHJhbnNtaXNzaW9uIHRyaWdnZXJlZCBieSBlYWNoIER1cEFj ayB0byAxIFNNU1MgLSAgZGV2aWF0aW9uLg0KPiAgMzA3ICAgICAgICAgY3dpbiA9DQo+ICAzMDgg ICAgICAgICAgICAgaW1heChtaW4odHAtPnNuZF93bmQsIHRwLT5zbmRfY3duZCkgLSBzYWNrX2J5 dGVzX3J4bXQsIDApOw0KPg0KPiBBcyBhIHJlc3VsdCwgU0FDSyBpcyBub3QgZG9pbmcgZW5vdWdo IHJlY292ZXJ5IGluIHRoaXMgc2NlbmFyaW8gYW5kIGxvc3MgaGFzIHRvIGJlIHJlY292ZXJlZCBi eSBSVE8uDQo+IEFnYWluLCBJJ2QgYXBwcmVjaWF0ZSBmZWVkYmFjayBmcm9tIHRoZSBjb21tdW5p dHkuDQo+DQo+IFJlZ2FyZHMsDQo+IExpYW5nIFRpYW4NCj4NCj4NCj4NCj4NCj4gT24gU3VuLCBB dWcgMjMsIDIwMjAgYXQgMzo1NiBQTSBTY2hlZmZlbmVnZ2VyLCBSaWNoYXJkIDxSaWNoYXJkLlNj aGVmZmVuZWdnZXJAbmV0YXBwLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBIaSBMaWFuZywNCj4gPg0K PiA+IEluIFNBQ0sgbG9zcyByZWNvdmVyeSwgeW91IGNhbiByZWNvdmVyIHVwIHRvIHNzdGhyZXNo IChwcmlvciBjd25kLzIgW29yIDcwJSBpbiBjYXNlIG9mIGN1YmljXSkgbG9zdCBieXRlcyAtIGF0 IGxlYXN0IGluIHRoZW9yeS4NCj4gPg0KPiA+IEluIGNvbXBhcmlzb24sIChOZXcpUmVubyBjYW4g b25seSByZWNvdmVyIG9uZSBsb3N0IHBhY2tldCBwZXIgd2luZG93LCBhbmQgdGhlbiBrZWVwcyBv biB0cmFuc21pdHRpbmcgbmV3IHNlZ21lbnRzIChhY2sgKyBjd25kKSwgZXZlbiBiZWZvcmUgdGhl IHJlY2VpcHQgb2YgdGhlIHJldHJhbnNtaXR0ZWQgcGFja2V0IGlzIGFja2VkLg0KPiA+DQo+ID4g Rm9yIGhpc3RvcmljIHJlYXNvbnMsIHRoZSBzZW1hbnRpYyBvZiB0aGUgdmFyaWFibGUgY3duZCBp cyBvdmVybG9hZGVkIGR1cmluZyBsb3NzIHJlY292ZXJ5LCBhbmQgaXQgZG9lc24ndCAicmVhbGx5 IiBpbmRpY2F0ZSBjd25kLCBidXQgcmF0aGVyIGluZGljYXRlcyBpZi93aGVuIHJldHJhbnNtaXNz aW9ucyBjYW4gaGFwcGVuLg0KPiA+DQo+ID4NCj4gPiBJbiBib3RoIGNhc2VzIChhbHNvIHRoZSBz aW1wbGUgb25lLCB3aXRoIG9ubHkgb25lIHBhY2tldCBsb3NzKSwgY3duZCBzaG91bGQgYmUgZXF1 YWwgKG9yIG5lYXIgZXF1YWwpIHRvIHNzdGhyZXNoIGJ5IHRoZSB0aW1lIGxvc3MgcmVjb3Zlcnkg aXMgZmluaXNoZWQgLSBidXQgTk9UIGJlZm9yZSEgV2hpbGUgaXQgbWF5IGFwcGVhciBsaWtlIHNs b3ctc3RhcnQsIHRoZSB2YWx1ZSBvZiB0aGUgY3duZCB2YXJpYWJsZSByZWFsbHkgaW5jcmVhc2Vz IGJ5IGFja2VkX2J5dGVzIG9ubHkgcGVyIEFDSyAobm90IGFja2VkX2J5dGVzICsgU01TUyksIHNp bmNlIHRoZSBsZWZ0IGVkZ2UgKHNuZF91bmEpIGRvZXNuJ3QgbW92ZSByaWdodCAtIHVubGlrZSBk dXJpbmcgc2xvdy1zdGFydC4gQnV0IG51bWVyaWNhbGx5LCB0aGVzZSBkaWZmZXJlbnQgcGhhc2Vz IChzbG93LXN0YXJ0IC8gc2FjayBsb3NzLXJlY292ZXJ5KSBtYXkgYXBwZWFyIHZlcnkgc2ltaWxh ci4NCj4gPg0KPiA+IFlvdSBjb3VsZCBjaGVjayB0aGlzIHVzaW5nIHRoZSAobG9hZGFibGUpIFNJ RlRSIG1vZHVsZSwgd2hpY2ggY2FwdHVyZXMgdF9mbGFncyAoaW5kaWNhdGluZyBpZiBjb25nL2xv c3MgcmVjb3ZlcnkgaXMgYWN0aXZlKSwgc3N0aHJlc2gsIGN3bmQsIGFuZCBvdGhlciBwYXJhbWV0 ZXJzLg0KPiA+DQo+ID4gVGhhdCBpcyBhdCBsZWFzdCBob3cgdGhpbmdzIGFyZSBzdXBwb3NlZCB0 byB3b3JrOyBvciBoYXZlIHlvdSBpbnZlc3RpZ2F0ZWQgdGhlIHRpbWluZyBhbmQgYmVoYXZpb3Ig b2YgU0FDSyBsb3NzIHJlY292ZXJ5IGFuZCBmb3VuZCBhIGRldmlhdGlvbiB0byBSRkMzNTE3PyBO b3RlIHRoYXQgRkJTRCBjdXJyZW50bHkgaGFzIG5vdCBmdWxseSBpbXBsZW1lbnRlZCBSRkM2Njc1 IHN1cHBvcnQgKHdoaWNoIGRldmlhdGVzIHNsaWdodGx5IGZyb20gMzUxNyB1bmRlciBzcGVjaWZp YyBjaXJjdW1zdGFuY2VzOyBJIGhhdmUgYSBwYXRjaCBwZW5kaW5nIHRvIGltcGxlbWVudGUgNjY3 NSByZXNjdWUgcmV0cmFuc21pc3Npb25zLCBidXQgaGF2ZW4ndCB0d2Vha2VkIHRoZSBvdGhlciBh c3BlY3RzIG9mIDY2NzUgdnMuIDM1MTcuDQo+ID4NCj4gPiBCVFc6IFdoaWxlIGZyZWVic2QtbmV0 IGlzIG5vdCB0aGUgd3JvbmcgREwgcGVyIHNlLCBUQ1AsIFVEUCwgU0NUUCBzcGVjaWZpYyBxdWVz dGlvbnMgY2FuIGFsc28gYmUgcG9zdGVkIHRvIGZyZWVic2QtdHJhbnNwb3J0LCB3aGljaCBpcyBt b3JlIG5hcnJvd2x5IGZvY3VzZWQuDQo+ID4NCj4gPiBCZXN0IHJlZ2FyZHMsDQo+ID4NCj4gPiBS aWNoYXJkIFNjaGVmZmVuZWdnZXINCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gRnJvbTogb3duZXItZnJlZWJzZC1uZXRAZnJlZWJzZC5vcmcgPG93bmVyLWZyZWVic2Qt bmV0QGZyZWVic2Qub3JnPiANCj4gPiBPbiBCZWhhbGYgT2YgTGlhbmcgVGlhbg0KPiA+IFNlbnQ6 IFNvbm50YWcsIDIzLiBBdWd1c3QgMjAyMCAwMDoxNA0KPiA+IFRvOiBmcmVlYnNkLW5ldCA8ZnJl ZWJzZC1uZXRAZnJlZWJzZC5vcmc+DQo+ID4gU3ViamVjdDogRmFzdCByZWNvdmVyeSBzc3RocmVz aCB2YWx1ZQ0KPiA+DQo+ID4gSGkgYWxsLA0KPiA+DQo+ID4gV2hlbiAzIGR1cGFja3MgYXJlIHJl Y2VpdmVkIGFuZCBUQ1AgZW50ZXIgZmFzdCByZWNvdmVyeSwgaWYgU0FDSyBpcyB1c2VkLCB0aGUg Q1dORCBpcyBzZXQgdG8gbWF4c2VnOg0KPiA+DQo+ID4gMjU5MyAgICAgICAgICAgICAgICAgICAg IGlmICh0cC0+dF9mbGFncyAmIFRGX1NBQ0tfUEVSTUlUKSB7DQo+ID4gMjU5NCAgICAgICAgICAg ICAgICAgICAgICAgICBUQ1BTVEFUX0lOQygNCj4gPiAyNTk1ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0Y3BzX3NhY2tfcmVjb3ZlcnlfZXBpc29kZSk7DQo+ID4gMjU5NiAgICAgICAgICAg ICAgICAgICAgICAgICB0cC0+c25kX3JlY292ZXIgPSB0cC0+c25kX254dDsNCj4gPiAyNTk3ICAg ICAgICAgICAgICAgICAgICAgICAgIHRwLT5zbmRfY3duZCA9IG1heHNlZzsNCj4gPiAyNTk4ICAg ICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB0cC0+dF9mYi0+dGZiX3RjcF9vdXRwdXQodHAp Ow0KPiA+IDI1OTkgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBkcm9wOw0KPiA+IDI2MDAg ICAgICAgICAgICAgICAgICAgICB9DQo+ID4NCj4gPiBPdGhlcndpc2UoU0FDSyBpcyBub3QgaW4g dXNlKSwgQ1dORCBpcyBzZXQgdG8gbWF4c2VnIGJlZm9yZQ0KPiA+IHRjcF9vdXRwdXQoKSBhbmQg dGhlbiBzZXQgYmFjayB0byBzbmRfc3N0aHJlc2graW5mbGF0aW9uDQo+ID4gMjYwMSAgICAgICAg ICAgICAgICAgICAgIHRwLT5zbmRfbnh0ID0gdGgtPnRoX2FjazsNCj4gPiAyNjAyICAgICAgICAg ICAgICAgICAgICAgdHAtPnNuZF9jd25kID0gbWF4c2VnOw0KPiA+IDI2MDMgICAgICAgICAgICAg ICAgICAgICAodm9pZCkgdHAtPnRfZmItPnRmYl90Y3Bfb3V0cHV0KHRwKTsNCj4gPiAyNjA0ICAg ICAgICAgICAgICAgICAgICAgS0FTU0VSVCh0cC0+c25kX2xpbWl0ZWQgPD0gMiwNCj4gPiAyNjA1 ICAgICAgICAgICAgICAgICAgICAgICAgICgiJXM6IHRwLT5zbmRfbGltaXRlZCB0b28gYmlnIiwN Cj4gPiAyNjA2ICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKSk7DQo+ID4gMjYwNyAg ICAgICAgICAgICAgICAgICAgIHRwLT5zbmRfY3duZCA9IHRwLT5zbmRfc3N0aHJlc2ggKw0KPiA+ IDI2MDggICAgICAgICAgICAgICAgICAgICAgICAgIG1heHNlZyAqDQo+ID4gMjYwOSAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRwLT50X2R1cGFja3MgLSB0cC0+c25kX2xpbWl0ZWQpOw0KPiA+ IDI2MTAgICAgICAgICAgICAgICAgICAgICBpZiAoU0VRX0dUKG9ueHQsIHRwLT5zbmRfbnh0KSkN Cj4gPiAyNjExICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zbmRfbnh0ID0gb254dDsNCj4g PiAyNjEyICAgICAgICAgICAgICAgICAgICAgZ290byBkcm9wOw0KPiA+DQo+ID4gSSdtIHdvbmRl cmluZyBpbiB0aGUgU0FDSyBjYXNlLCBzaG91bGQgQ1dORCBiZSBzZXQgYmFjayB0byBzc3RocmVz aCh3aGljaCBoYXMgYmVlbiBzbGFzaGVkIGluIGNjX2Nvbmdfc2lnbmFsKCkgYSBmZXcgbGluZXMg YWJvdmUpIGJlZm9yZSBsaW5lIDI1OTksIGxpa2Ugbm9uLVNBQ0sgY2FzZSwgaW5zdGVhZCBvZiBk b2luZyBzbG93IHN0YXJ0IGZyb20gbWF4c2VnPw0KPiA+IEkgcmVhZCByZmM2Njc1IGFuZCBhIGZl dyBvdGhlcnMsIGFuZCBpdCBsb29rcyBsaWtlIHRoYXQncyB0aGUgY2FzZS4gSSBhcHByZWNpYXRl IHlvdXIgb3BpbmlvbiwgYWdhaW4uDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gTGlhbmcNCj4gPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+IGZyZWVi c2QtbmV0QGZyZWVic2Qub3JnIG1haWxpbmcgbGlzdCANCj4gPiBodHRwczovL2xpc3RzLmZyZWVi c2Qub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWJzZC1uZXQNCj4gPiBUbyB1bnN1YnNjcmliZSwg c2VuZCBhbnkgbWFpbCB0byAiZnJlZWJzZC1uZXQtdW5zdWJzY3JpYmVAZnJlZWJzZC5vcmciDQo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IGZyZWVi c2QtdHJhbnNwb3J0QGZyZWVic2Qub3JnIG1haWxpbmcgbGlzdCANCj4gaHR0cHM6Ly9saXN0cy5m cmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVic2QtdHJhbnNwb3J0DQo+IFRvIHVuc3Vi c2NyaWJlLCBzZW5kIGFueSBtYWlsIHRvICJmcmVlYnNkLXRyYW5zcG9ydC11bnN1YnNjcmliZUBm cmVlYnNkLm9yZyINCg==