From owner-freebsd-transport@freebsd.org Tue Sep 15 20:49:41 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 4B0EB3DFDCD for ; Tue, 15 Sep 2020 20:49:41 +0000 (UTC) (envelope-from Richard.Scheffenegger@netapp.com) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2071.outbound.protection.outlook.com [40.107.237.71]) (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 4Brb2D2W68z4d3y for ; Tue, 15 Sep 2020 20:49:39 +0000 (UTC) (envelope-from Richard.Scheffenegger@netapp.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jSXjRfCpyZXfyiORt8xcnaKNGIdOsN7WXveLIS2rCMP2uo66idCjQt/+vhRg6/ufhZ4kaETVhADuVeko4ApqpGR/+6J+NC7/oUdwmZWKGZQlBvLGsarfqVih6AYVsnuvsAS86iW3f9+o7bmLArcgjhvylBw4n6rFIqR9CBR/FkUMiZc1m2l51OUcxmgbnk/skvzNYK6PManNG6ELYTOG8ZqBgHf2398MViArsKfg9thGuckHe8DVmswXzq178i7tQ3UDTYL2VCC1QOCPxFjYJJ/lbMWlsRuK+dHVzPoPiPCigez2oKgz6NYyy3VIdXL97R3efEtEkRFAUQZD1sT3UQ== 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=A0Hd96nkPDestnzHNOF/OyN+sF6YWlmxB+pkV9+hQIY=; b=CTWJo4ntjKTmm4VXXvTZHbsx45hO3mvrsvnPeHQaaGoDqPqm61IIVhzZFAnABqtn9P4zD+reYJA8Fi5Bnbq1JJR3Kd2KYVhq8AgSXxbVDv59ZddcYHwNyuyJIK1Mn8HI/hgAZlYCNHBQKxF4SK+ohv5tcISM6QxURaaaqx8nI/WqbgGfAYxEXaTzEbZ5KO1F501gyl9L2NNMsyABw3ydFHj6j5WCWW/82I4cvT3bGyKuU99dKfQ+HRBrsd5MispixUEgm+klEsGPXlK9BaLgediYe2iMkIbzN/OT0r4D430wfSlGSD9f7tje1vS6IxX2v4LdAyMUR0suU1oyBEDTeA== 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=A0Hd96nkPDestnzHNOF/OyN+sF6YWlmxB+pkV9+hQIY=; b=0fycO/9ElkgMfOCU2h4NsxzCbETDUOmQZe/gH5TWTBDYqF1y94JkTP/zprvGCU5humRrJrXvg4dtMlFpAg8lEbf2wdNW0jgxxX9tCIlRSxsLZwm2DYvVjWsDr4Jkg3bkGf88GIhPkWEj0um3IUlhgnx6cCWQ6cnGK3rSZuJExUY= Received: from SN4PR0601MB3728.namprd06.prod.outlook.com (2603:10b6:803:51::24) by SA0PR06MB6891.namprd06.prod.outlook.com (2603:10b6:806:ba::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.16; Tue, 15 Sep 2020 20:49:38 +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.019; Tue, 15 Sep 2020 20:49:38 +0000 From: "Scheffenegger, Richard" To: Liang Tian CC: FreeBSD Transport Subject: RE: Fast recovery ssthresh value Thread-Topic: Fast recovery ssthresh value Thread-Index: AQHWeNGXKLXrd0Ypk0G/FpBfyhwhfqlGGMBAgBqPXACAARNjQIABNHEAgAA7XmCAAJ24gIAF8pSggACOgwCAAAbyMA== Date: Tue, 15 Sep 2020 20:49:38 +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: [217.70.211.12] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d4432f9d-2ff9-4245-2a13-08d859b8dc95 x-ms-traffictypediagnostic: SA0PR06MB6891: 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: IeFTGkQKTxv+AbmXhktyB8W7d5TJjhv4jYVG2EvGQen49k7S4DxvrI1d8l89e6eYWCEIBIilfQXWZROLLhEW8HBdNpWCAWSY3M8Cqvd8fYPuOobMdyqtFXmhTzJBgQLUjmxlWsyaWvpPKR5fsSW38H/sA5zyu8eaoIQ/1AXc8/1qUXiIrU6eNDbm//GL4+9y9ddNkK+coAlQhQJ/wU2kM8W+T1CXIXewF0inAbmUaX4gN67UcNIADW4xIUnUR/vzkvg/GFkqtGxYMdw3eTEsWdV72e/19wNUhHmp6FGgmhUU6bUl434587TN6Qy2FfDsMeeQhN71pLnrqF/ngob5exXD20YKoCP+0uHxJc912HxvXcmUDSrEqU2+46z1QTWbTuYX27OtLFJhJKxe4otdrA== 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)(376002)(396003)(346002)(136003)(39860400002)(316002)(6506007)(55016002)(966005)(9686003)(33656002)(53546011)(76116006)(64756008)(66446008)(66476007)(26005)(66946007)(66556008)(86362001)(8936002)(5660300002)(2906002)(3480700007)(83380400001)(4326008)(8676002)(186003)(6916009)(71200400001)(478600001)(30864003)(7696005)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 1uevvdGF1RNUkeTr6l1VmbF9PLiehOGUyzz7cxQZ22ry8BD9dgvS2JO/NOOqPQwc6LyBv+8fG2uzQpHqkIkSYU+uK+7SyHha7X4c4ErPMELybfB1uhDOf097GwkDA9BK7uKXe4QLKTrStnvWcRWBJwbEAUlsgLIx/Ki4JR445wpst+IztQymvwTqJU47/KRRBayup1ywfsXIahRBXjQVI46vyvaapkLXt2jEsVDv5FIm+jF6yQcfiyPjrjraK7uOr8lAggGhgnDUJeucGniAJCNOLn1xOUKl5Rc6V52nbAIyxzhif2JS8H3BjySVUxuqAL3lLNbvLgdrUGoLkh7xCqTLLdnv5BkyQ/GZGg7THQw7XHVfth1zU3EMpLdJQKrzxoOKfuPi6lt46Ak8qaVRZzj6VDIrfDp0JB5cNC79poKDC0VmJFATXR5DOkIs7URlGyNYOaNODZbaKHESTaJIrQXw6JE/Dtj6cZSD7K5Qv85Zdmi7GbR93Y6ilUCugwPdMw3uVKiM9B9fYr54P3FE33H1ok4wtEYfVSqCSJ4VMyL30KlC4g5ZHEdhRJ1BleAjzHMxGg69qWr7AXddkePk5Ag4CinzIuwJFX2+Ubd9/hVST/6rs7yoSpPhmOG9VmlrljKS1NI2O8Ntm1kfX3c73g== 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: d4432f9d-2ff9-4245-2a13-08d859b8dc95 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Sep 2020 20:49:38.0733 (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: 676sOYhbw3ZYP6SSA3VbRVDLS4EvWj+qMrcfWty2usHrJQe7Dj40crwA1tl3RGS32O93AZBVK0F/iA2veVaPgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR06MB6891 X-Rspamd-Queue-Id: 4Brb2D2W68z4d3y X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=netapp.onmicrosoft.com header.s=selector1-netapp-onmicrosoft-com header.b=0fycO/9E; dmarc=none; spf=pass (mx1.freebsd.org: domain of Richard.Scheffenegger@netapp.com designates 40.107.237.71 as permitted sender) smtp.mailfrom=Richard.Scheffenegger@netapp.com X-Spamd-Result: default: False [-2.89 / 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(-0.51)[-0.508]; FREEMAIL_TO(0.00)[gmail.com]; 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.96)[-0.963]; R_DKIM_ALLOW(-0.20)[netapp.onmicrosoft.com:s=selector1-netapp-onmicrosoft-com]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.02)[-1.022]; MIME_GOOD(-0.10)[text/plain]; TAGGED_RCPT(0.00)[]; DMARC_NA(0.00)[netapp.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[40.107.237.71:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[40.107.237.71: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: Tue, 15 Sep 2020 20:49:41 -0000 VGhhbmsgeW91IGZvciBzcG90dGluZyB0aGlzIC0gSSBhZG1pdCBJJ3ZlIG5vdCBzY2FubmVkIHRo ZSBjb250ZXh0IGZhciBlbm91Z2ggdXAuDQoNCkFsc28sIGFzIHlvdSByZXBvcnRlZCB0aGUgc2Ft ZSBpc3N1ZSB3aXRoIHJlZ3VsYXIgU0FDSywgSSBjcmVhdGVkIHRoaXMgRGlmZiwgdG8gYWxzbyBh ZGRyZXNzIHRoaXMgcGFydGljdWxhciB0aW55Z3JhbSBpc3N1ZSB3aGlsZSBTQUNLIGxvc3MgcmVj b3ZlcnkgaXMgb24tZ29pbmcuIExvb2tpbmcgdXAgdGhlIGNvcnJlY3QgcGFja2V0IHNpemUgaW4g YWxsIHRoZSBzbG93LXBhdGggcHJvY2Vzc2luZyBzaG91bGRuJ3QgYmUgcHJvYmxlbWF0aWMgYXQg YWxsLCB3aGlsZSBpbXByb3ZpbmcgdGhlIG5ldHdvcmsgZWZmaWNpZW5jeSBieSBhdm9pZGluZyB0 aGUgdHJhbnNtaXNzaW9uIG9mIHRpbnlncmFtcy4NCg0KaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qu b3JnL0QyNjQ0Ng0KDQoNClJpY2hhcmQgU2NoZWZmZW5lZ2dlcg0KDQoNCi0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQpGcm9tOiBMaWFuZyBUaWFuIDxsLnRpYW4uZW1haWxAZ21haWwuY29tPiAN ClNlbnQ6IERpZW5zdGFnLCAxNS4gU2VwdGVtYmVyIDIwMjAgMjI6MjINClRvOiBTY2hlZmZlbmVn Z2VyLCBSaWNoYXJkIDxSaWNoYXJkLlNjaGVmZmVuZWdnZXJAbmV0YXBwLmNvbT4NCkNjOiBGcmVl QlNEIFRyYW5zcG9ydCA8ZnJlZWJzZC10cmFuc3BvcnRAZnJlZWJzZC5vcmc+DQpTdWJqZWN0OiBS ZTogRmFzdCByZWNvdmVyeSBzc3RocmVzaCB2YWx1ZQ0KDQpOZXRBcHAgU2VjdXJpdHkgV0FSTklO RzogVGhpcyBpcyBhbiBleHRlcm5hbCBlbWFpbC4gRG8gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4g YXR0YWNobWVudHMgdW5sZXNzIHlvdSByZWNvZ25pemUgdGhlIHNlbmRlciBhbmQga25vdyB0aGUg Y29udGVudCBpcyBzYWZlLg0KDQoNCg0KDQpIaSBSaWNoYXJkLA0KDQpUaGFua3MuIEl0IHdvcmtz IHdlbGwgbm93LiBXZSBhbHNvIGhhZCBhbiBvYnNlcnZhdGlvbiB0aGF0IHRoZSBtYWpvcml0eSBv ZiB0aW55Z3JhbXMgd2VyZSBjYXVzZWQgYnkgdGhlIHRfbWF4c2VnIHVzYWdlIGluIHRjcF9zYWNr X3BhcnRpYWxhY2soKS4gTm93IHdpdGggUFJSIHdlIHJhcmVseSBzZWUgdGlueWdyYW1zIGJlY2F1 c2UgMSkNCnRjcF9zYWNrX3BhcnRpYWxhY2soKSBpcyBubyBsb25nZXIgY2FsbGVkIDIpIHRoZSB1 cGRhdGVkIFBSUiBwYXRjaA0KDQpKdXN0IG9uZSBjb21tZW50IG9uIHRoZSBwYXRjaDogbGluZSAy NTQ2IGlzIHJlZHVuZGFudCBiZWNhdXNlIG1heHNlZyBpcyBhbHJlYWR5IGRlZmluZWQgYW5kIGNh bGN1bGF0ZWQgaW4gbGluZSAyNDc3DQoNClJlZ2FyZHMsDQpMaWFuZw0KDQpPbiBUdWUsIFNlcCAx NSwgMjAyMCBhdCAxMDozNSBBTSBTY2hlZmZlbmVnZ2VyLCBSaWNoYXJkIDxSaWNoYXJkLlNjaGVm ZmVuZWdnZXJAbmV0YXBwLmNvbT4gd3JvdGU6DQo+DQo+IEhpIExpYW5nLA0KPg0KPiBJIHdhcyBh Ym91dCB0byBzZW5kIG91dCB0aGlzIGVtYWlsIG5vdGlmeWluZyB5b3Ugb2YgdGhlIGNoYW5nZXMg dG8gdGhlIHBhdGNoLCB3aGVyZSB5b3UgdW5jb3ZlcmVkIHRoZSBpc3N1ZXMgd2l0aCBUU29wdCBl bmFibGVkIFRDUCBmbG93cy4NCj4NCj4gaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QxODg5 Mg0KPg0KPiBDYW4geW91IHBsZWFzZSByZS1wYXRjaCB5b3VyIHRlc3QgbWFjaGluZSB3aXRoIHRo aXMgdXBkYXRlZCB2ZXJzaW9uIChJIGZpeGVkIG9uZSBtZXJnZSBpc3N1ZSBkdWUgdG8gd2hpdGVz cGFjZSBjbGVhbnVwIHJlY2VudGx5IHRvbywgc28gaXQgc2hvdWxkIGFwcGx5IGNsZWFubHkgdG8g SEVBRCBub3cpLg0KPg0KPiBQbGVhc2UgbGV0IHVzIGtub3cgYW5kIHNoYXJlIGFueSBjb21tZW50 cyBhbmQgY3JpdGljaXNtIGFib3V0IHRoaXMgcGF0Y2ghDQo+DQo+IFRoYW5rcyBhZ2FpbiBmb3Ig dGVzdGluZyAtIGFuZCBmaW5kaW5nIHRoZSBvdmVybG9va2VkIGNvbWJpbmF0aW9uIHdpdGggdGlt ZXN0YW1wcy4NCj4NCj4NCj4gUmljaGFyZCBTY2hlZmZlbmVnZ2VyDQo+DQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExpYW5nIFRpYW4gPGwudGlhbi5lbWFpbEBnbWFpbC5j b20+DQo+IFNlbnQ6IEZyZWl0YWcsIDExLiBTZXB0ZW1iZXIgMjAyMCAxOTowMg0KPiBUbzogU2No ZWZmZW5lZ2dlciwgUmljaGFyZCA8UmljaGFyZC5TY2hlZmZlbmVnZ2VyQG5ldGFwcC5jb20+DQo+ IENjOiBGcmVlQlNEIFRyYW5zcG9ydCA8ZnJlZWJzZC10cmFuc3BvcnRAZnJlZWJzZC5vcmc+DQo+ IFN1YmplY3Q6IFJlOiBGYXN0IHJlY292ZXJ5IHNzdGhyZXNoIHZhbHVlDQo+DQo+IE5ldEFwcCBT ZWN1cml0eSBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dGVybmFsIGVtYWlsLiBEbyBub3QgY2xpY2sg bGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6ZSB0aGUgc2VuZGVy IGFuZCBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQo+DQo+DQo+DQo+DQo+IEhpIFJpY2hhcmQs DQo+DQo+IEluaXRpYWwgdGVzdHMgc2hvdyBQUlIgaXMgZG9pbmcgcXVpdGUgd2VsbC4gU2VlIHRy YWNlIGJlbG93IHNob3dpbmcgcmVzcG9uc2UgdG8gVFN2YWwgMjcxMzM4MTkxNiBhbmQgMjcxMzM4 MTkxNy4NCj4gSSBoYXZlIGEgY29tbWVudCBvbiB0aGUgcGF0Y2g6IEkgdGhpbmsgYWxsIHRoZSB0 cC0+dF9tYXhzZWcgc2hvdWxkIGJlIA0KPiByZXBsYWNlZCB3aXRoIG1heHNlZyBpbiB0aGUgZGlm ZiAoaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QxODg5MiksDQo+IHdoZXJlIG1heHNlZyA9 IHRjcF9tYXhzZWcodHApLiBUaGlzIHdpbGwgdGFrZSBUQ1Agb3B0aW9ucyh0aW1lc3RhbXAgaW4g dGhpcyBjYXNlKSBpbnRvIGFjY291bnQgYW5kIGF2b2lkIHNlbmRpbmcgdGhlIHRpbnlncmFtcyB3 aXRoIGxlbiAxMjAgYW5kIDM2IGluIHRoZSB0cmFjZSBiZWxvdy4NCj4gSW50ZXJlc3RpbmdseSB3 ZSB3ZXJlIGFsc28gY2hhc2luZyBhbm90aGVyIGlzc3VlIHdoZXJlIHdlIHNlZSBhIGxvdCBvZg0K PiAxMiBieXRlcyBzZWdtZW50cyB3aGVuIHJldHJhbnNtaXNzaW9uIGhhcHBlbnMoYmVmb3JlIGFw cGx5aW5nIFBSVCANCj4gcGF0Y2gpLCB3ZSBhcmUgc3VzcGVjdGluZyB0aGUgbWl4ZWQgdXNhZ2Ug b2YgdF9tYXhzZWcgYW5kIG1heHNlZyA9DQo+IHRjcF9tYXhzZWcodHApIGluIHRoZSB0Y3AgY29k ZSBpcyBjYXVzaW5nIHRoaXM6IHRoZSBDQ0EgbW9kdWxlcyBhcmUgYWxsIHVzaW5nIHRfbWF4c2Vn IGZvciBDV05EIGluY3JlYXNlIGluc3RlYWQgb2YgZWZmZWN0aXZlIFNNU1MuDQo+DQo+IFtUQ1Ag RHVwIEFDSyA0MTU0MSMzXSA1MjQ2NiAgPiAgODAgW0FDS10gU2VxPTE1NiBBY2s9NDQ1OTY0NDEN Cj4gV2luPTMxNDQ3MDQgTGVuPTAgVFN2YWw9MjcxMzM4MTkxNCBUU2Vjcj0xNjM2NjA0NzMwIFNM RT00Njc4NTMxNw0KPiBTUkU9NDY3OTA4NjkNCj4gW1RDUCBEdXAgQUNLIDQxNTQxIzRdIDUyNDY2 ICA+ICA4MCBbQUNLXSBTZXE9MTU2IEFjaz00NDU5NjQ0MQ0KPiBXaW49MzE0NDcwNCBMZW49MCBU U3ZhbD0yNzEzMzgxOTE2IFRTZWNyPTE2MzY2MDQ3MzAgU0xFPTQ2Nzg1MzE3DQo+IFNSRT00Njgw NDc0OQ0KPiBbVENQIER1cCBBQ0sgNDE1NDEjNV0gNTI0NjYgID4gIDgwIFtBQ0tdIFNlcT0xNTYg QWNrPTQ0NTk2NDQxDQo+IFdpbj0zMTQ0NzA0IExlbj0wIFRTdmFsPTI3MTMzODE5MTcgVFNlY3I9 MTYzNjYwNDczMCBTTEU9NDY3ODUzMTcNCj4gU1JFPTQ2ODA4OTEzDQo+IFtUQ1AgT3V0LU9mLU9y ZGVyXSA4MCAgPiAgNTI0NjYgW0FDS10gU2VxPTQ0NTk3ODUzIEFjaz0xNTYgV2luPTEwNDg1NzYN Cj4gTGVuPTEzODggVFN2YWw9MTYzNjYwNDkwNCBUU2Vjcj0yNzEzMzgxOTE2IFtUQ1AgT3V0LU9m LU9yZGVyXSA4MCAgPiAgDQo+IDUyNDY2IFtBQ0tdIFNlcT00NDU5OTI0MSBBY2s9MTU2IFdpbj0x MDQ4NTc2DQo+IExlbj0xMzg4IFRTdmFsPTE2MzY2MDQ5MDQgVFNlY3I9MjcxMzM4MTkxNiBbVENQ IE91dC1PZi1PcmRlcl0gODAgID4gIA0KPiA1MjQ2NiBbQUNLXSBTZXE9NDQ2MDA2MjkgQWNrPTE1 NiBXaW49MTA0ODU3Ng0KPiBMZW49MTM4OCBUU3ZhbD0xNjM2NjA0OTA0IFRTZWNyPTI3MTMzODE5 MTYgW1RDUCBPdXQtT2YtT3JkZXJdIDgwICA+ICANCj4gNTI0NjYgW0FDS10gU2VxPTQ0NjAyMDE3 IEFjaz0xNTYgV2luPTEwNDg1NzYNCj4gTGVuPTEzODggVFN2YWw9MTYzNjYwNDkwNCBUU2Vjcj0y NzEzMzgxOTE2IFtUQ1AgT3V0LU9mLU9yZGVyXSA4MCAgPiAgDQo+IDUyNDY2IFtBQ0tdIFNlcT00 NDYwMzQwNSBBY2s9MTU2IFdpbj0xMDQ4NTc2DQo+IExlbj0xMzg4IFRTdmFsPTE2MzY2MDQ5MDQg VFNlY3I9MjcxMzM4MTkxNiBbVENQIE91dC1PZi1PcmRlcl0gODAgID4gIA0KPiA1MjQ2NiBbQUNL XSBTZXE9NDQ2MDQ3OTMgQWNrPTE1NiBXaW49MTA0ODU3Ng0KPiBMZW49MTM4OCBUU3ZhbD0xNjM2 NjA0OTA0IFRTZWNyPTI3MTMzODE5MTYgW1RDUCBPdXQtT2YtT3JkZXJdIDgwICA+ICANCj4gNTI0 NjYgW0FDS10gU2VxPTQ0NjA2MTgxIEFjaz0xNTYgV2luPTEwNDg1NzYNCj4gTGVuPTEzODggVFN2 YWw9MTYzNjYwNDkwNCBUU2Vjcj0yNzEzMzgxOTE2IFtUQ1AgT3V0LU9mLU9yZGVyXSA4MCAgPiAg DQo+IDUyNDY2IFtBQ0tdIFNlcT00NDYwNzU2OSBBY2s9MTU2IFdpbj0xMDQ4NTc2DQo+IExlbj0x Mzg4IFRTdmFsPTE2MzY2MDQ5MDQgVFNlY3I9MjcxMzM4MTkxNiBbVENQIE91dC1PZi1PcmRlcl0g ODAgID4gIA0KPiA1MjQ2NiBbQUNLXSBTZXE9NDQ2MDg5NTcgQWNrPTE1NiBXaW49MTA0ODU3Ng0K PiBMZW49MTM4OCBUU3ZhbD0xNjM2NjA0OTA0IFRTZWNyPTI3MTMzODE5MTYgW1RDUCBPdXQtT2Yt T3JkZXJdIDgwICA+ICANCj4gNTI0NjYgW0FDS10gU2VxPTQ0NjEwMzQ1IEFjaz0xNTYgV2luPTEw NDg1NzYNCj4gTGVuPTEzODggVFN2YWw9MTYzNjYwNDkwNCBUU2Vjcj0yNzEzMzgxOTE2IFtUQ1Ag T3V0LU9mLU9yZGVyXSA4MCAgPiAgDQo+IDUyNDY2IFtBQ0tdIFNlcT00NDYxMTczMyBBY2s9MTU2 IFdpbj0xMDQ4NTc2DQo+IExlbj0xMjAgVFN2YWw9MTYzNjYwNDkwNCBUU2Vjcj0yNzEzMzgxOTE2 IFtUQ1AgT3V0LU9mLU9yZGVyXSA4MCAgPiAgDQo+IDUyNDY2IFtBQ0tdIFNlcT00NDYxMTg1MyBB Y2s9MTU2IFdpbj0xMDQ4NTc2DQo+IExlbj0xMzg4IFRTdmFsPTE2MzY2MDQ5MDUgVFNlY3I9Mjcx MzM4MTkxNyBbVENQIE91dC1PZi1PcmRlcl0gODAgID4gIA0KPiA1MjQ2NiBbQUNLXSBTZXE9NDQ2 MTMyNDEgQWNrPTE1NiBXaW49MTA0ODU3Ng0KPiBMZW49MTM4OCBUU3ZhbD0xNjM2NjA0OTA1IFRT ZWNyPTI3MTMzODE5MTcgW1RDUCBPdXQtT2YtT3JkZXJdIDgwICA+ICANCj4gNTI0NjYgW0FDS10g U2VxPTQ0NjE0NjI5IEFjaz0xNTYgV2luPTEwNDg1NzYNCj4gTGVuPTEzODggVFN2YWw9MTYzNjYw NDkwNSBUU2Vjcj0yNzEzMzgxOTE3IFtUQ1AgT3V0LU9mLU9yZGVyXSA4MCAgPiAgDQo+IDUyNDY2 IFtBQ0tdIFNlcT00NDYxNjAxNyBBY2s9MTU2IFdpbj0xMDQ4NTc2DQo+IExlbj0zNiBUU3ZhbD0x NjM2NjA0OTA1IFRTZWNyPTI3MTMzODE5MTcgW1RDUCBEdXAgQUNLIDQxNTQxIzZdIDUyNDY2ICAN Cj4gPiAgODAgW0FDS10gU2VxPTE1NiBBY2s9NDQ1OTY0NDENCj4gV2luPTMxNDQ3MDQgTGVuPTAg VFN2YWw9MjcxMzM4MTkyNSBUU2Vjcj0xNjM2NjA0NzMwIFNMRT00Njc4NTMxNw0KPiBTUkU9NDY4 NjcyMDkNCj4gW1RDUCBPdXQtT2YtT3JkZXJdIDgwICA+ICA1MjQ2NiBbQUNLXSBTZXE9NDQ2MTYw NTMgQWNrPTE1NiBXaW49MTA0ODU3Ng0KPiBMZW49MTM4OCBUU3ZhbD0xNjM2NjA0OTEyIFRTZWNy PTI3MTMzODE5MjUgW1RDUCBPdXQtT2YtT3JkZXJdIDgwICA+ICANCj4gNTI0NjYgW0FDS10gU2Vx PTQ0NjE3NDQxIEFjaz0xNTYgV2luPTEwNDg1NzYNCj4gTGVuPTEzODggVFN2YWw9MTYzNjYwNDkx MiBUU2Vjcj0yNzEzMzgxOTI1DQo+DQo+IFRoYW5rcywNCj4gTGlhbmcNCj4gLi4uDQo+DQo+IE9u IEZyaSwgU2VwIDExLCAyMDIwIGF0IDM6NDAgQU0gU2NoZWZmZW5lZ2dlciwgUmljaGFyZCA8Umlj aGFyZC5TY2hlZmZlbmVnZ2VyQG5ldGFwcC5jb20+IHdyb3RlOg0KPiA+DQo+ID4gUGVyZmVjdCEN Cj4gPg0KPiA+IFBsZWFzZSBzaGFyZSB5b3VyIGZpbmRpbmdzIHRoZW4sIGFzIHJldmlld3MgKGlu Y2x1ZGluZyBpbmZvcm1hbCBvbmVzKSBhcmUgbmVlZGVkIHByaW9yIHRvIG1lIGNvbW1pdHRpbmcg dGhpcyBwYXRjaC4NCj4gPg0KPiA+IE5vdGUgdGhhdCBpdCBidWlsZHMgdXBvbiBEMTg2MjQsIHdo aWNoIGlzIGN1cnJlbnRseSBpbiBzdGFibGUvMTIgYW5kIGhlYWQsIGJ1dCBub3QgYW55IHJlbGVh c2VkIGJyYW5jaGVzLiBTbyB5b3UgbWF5IG5lZWQgdG8gYXBwbHkgdGhhdCB0b28gaWYgeW91IGFy ZW4ndCB1c2luZyBoZWFkLg0KPiA+DQo+ID4gQmVzdCByZWdhcmRzLA0KPiA+DQo+ID4NCj4gPiBS aWNoYXJkIFNjaGVmZmVuZWdnZXINCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gRnJvbTogTGlhbmcgVGlhbiA8bC50aWFuLmVtYWlsQGdtYWlsLmNvbT4NCj4gPiBTZW50 OiBGcmVpdGFnLCAxMS4gU2VwdGVtYmVyIDIwMjAgMDY6MDYNCj4gPiBUbzogU2NoZWZmZW5lZ2dl ciwgUmljaGFyZCA8UmljaGFyZC5TY2hlZmZlbmVnZ2VyQG5ldGFwcC5jb20+OyANCj4gPiBGcmVl QlNEIFRyYW5zcG9ydCA8ZnJlZWJzZC10cmFuc3BvcnRAZnJlZWJzZC5vcmc+DQo+ID4gU3ViamVj dDogUmU6IEZhc3QgcmVjb3Zlcnkgc3N0aHJlc2ggdmFsdWUNCj4gPg0KPiA+IE5ldEFwcCBTZWN1 cml0eSBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dGVybmFsIGVtYWlsLiBEbyBub3QgY2xpY2sgbGlu a3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6ZSB0aGUgc2VuZGVyIGFu ZCBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPiBIaSBS aWNoYXJkLA0KPiA+DQo+ID4gVGhhbmtzISBJJ20gYWJsZSB0byBhcHBseSB0aGUgcGF0Y2hlcy4g SSdsbCB0ZXN0IGl0Lg0KPiA+DQo+ID4gUmVnYXJkcywNCj4gPiBMaWFuZw0KPiA+DQo+ID4NCj4g Pg0KPiA+IE9uIFRodSwgU2VwIDEwLCAyMDIwIGF0IDU6NDkgQU0gU2NoZWZmZW5lZ2dlciwgUmlj aGFyZCA8UmljaGFyZC5TY2hlZmZlbmVnZ2VyQG5ldGFwcC5jb20+IHdyb3RlOg0KPiA+ID4NCj4g PiA+IEhpIExpYW5nLA0KPiA+ID4NCj4gPiA+IFllcywgeW91IGFyZSBhYnNvbHV0ZWx5IGNvcnJl Y3QgYWJvdXQgdGhpcyBvYnNlcnZhdGlvbi4gVGhlIFNBQ0sgbG9zcyByZWNvdmVyeSB3aWxsIG9u bHkgc2VuZCAgb25lIE1TUyBwZXIgcmVjZWl2ZWQgQUNLIHJpZ2h0IG5vdyAtIGFuZCB3aGVuIHRo ZXJlIGlzIEFDSyB0aGlubmluZyBwcmVzZW50LCB3aWxsIGZhaWwgdG8gdGltZWx5IHJlY292ZXIg YWxsIHRoZSBtaXNzaW5nIHBhY2tldHMsIGV2ZW50dWFsbHkgcmVjZWl2aW5nIG5vIG1vcmUgQUNL IHRvIGNsb2NrIG91dCBtb3JlIHJldHJhbnNtaXNzaW9ucy4uLg0KPiA+ID4NCj4gPiA+IEkgaGF2 ZSBhIERpZmYgaW4gcmV2aWV3LCB0byBpbXBsZW1lbnQgUHJvcG9ydGlvbmFsIFJhdGUgUmVkdWN0 aW9uOg0KPiA+ID4NCj4gPiA+IGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9EMTg4OTINCj4g PiA+DQo+ID4gPiBXaGljaCBzaG91bGQgYWRkcmVzcyBub3Qgb25seSB0aGF0IGlzc3VlIGFib3V0 IEFDSyB0aGlubmluZywgYnV0IGFsc28gdGhlIGlzc3VlIHRoYXQgY3VycmVudCBTQUNLIGxvc3Mg cmVjb3ZlcnkgaGFzIHRvIHdhaXQgdW50aWwgcGlwZSBkcm9wcyBiZWxvdyBzc3RocmVzaCwgYmVm b3JlIHRoZSByZXRyYW5zbWlzc2lvbnMgYXJlIGNsb2NrZWQgb3V0LiBBbmQgdGhlbiwgdGhleSB3 b3VsZCBhY3R1YWxseSBiZSBjbG9ja2VkIG91dCBhdCB0aGUgc2FtZSByYXRlIGF0IHRoZSBpbmNv bWluZyBBQ0tzLiBUaGlzIHdvdWxkIGJlIHRoZSBzYW1lIHJhdGUgYXMgd2hlbiB0aGUgb3Zlcmxv YWQgaGFwcGVuZWQgKGJhcnJpbmcgYW55IEFDSyB0aGlubmluZyksIGFuZCBhcyBhIHNlY29uZGFy eSBlZmZlY3QsIGl0IHdhcyBvYnNlcnZlZCB0aGF0IHRoaXMgYmVoYXZpb3IgdG9vIGNhbiBsZWFk IHRvIHNlbGYtaW5mbGljdGVkIGxvc3MgLSBvZiByZXRyYW5zbWlzc2lvbnMuDQo+ID4gPg0KPiA+ ID4gSWYgeW91IGhhdmUgdGhlIGFiaWxpdHkgdG8gcGF0Y2ggeW91ciBrZXJuZWwgd2l0aCBEMTg4 OTIgYW5kIG9ic2VydmUgaG93IHRoZSByZWFjdGlvbiBpcyBpbiB5b3VyIGRyYW1hdGljIEFDSyB0 aGlubmluZyBzY2VuYXJpbywgdGhhdCB3b3VsZCBiZSBnb29kIHRvIGtub3chIFRoZSBhc3N1bXB0 aW9uIG9mIHRoZSBQYXRjaCB3YXMsIHRoYXQgLSBhcyBwZXIgVENQIFJGQyByZXF1aXJlbWVudHMg LSB0aGVyZSBpcyBvbmUgQUNLIGZvciBlYWNoIHJlY2VpdmVkIG91dC1vZi1zZXF1ZW5jZSBkYXRh IHNlZ21lbnQsIGFuZCBBQ0sgZHJvcHMgLyB0aGlubmluZyBhcmUgbm90IGhhcHBlbmluZyBvbiBz dWNoIGEgbWFzc2l2ZSBzY2FsZSBhcyB5b3UgZGVzY3JpYmUgaXQuDQo+ID4gPg0KPiA+ID4gQmVz dCByZWdhcmRzLA0KPiA+ID4NCj4gPiA+IFJpY2hhcmQgU2NoZWZmZW5lZ2dlcg0KPiA+ID4NCj4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBvd25lci1mcmVlYnNk LXRyYW5zcG9ydEBmcmVlYnNkLm9yZw0KPiA+ID4gPG93bmVyLWZyZWVic2QtdHJhbnNwb3J0QGZy ZWVic2Qub3JnPiBPbiBCZWhhbGYgT2YgTGlhbmcgVGlhbg0KPiA+ID4gU2VudDogTWl0dHdvY2gs IDkuIFNlcHRlbWJlciAyMDIwIDE5OjE2DQo+ID4gPiBUbzogU2NoZWZmZW5lZ2dlciwgUmljaGFy ZCA8UmljaGFyZC5TY2hlZmZlbmVnZ2VyQG5ldGFwcC5jb20+DQo+ID4gPiBDYzogRnJlZUJTRCBU cmFuc3BvcnQgPGZyZWVic2QtdHJhbnNwb3J0QGZyZWVic2Qub3JnPg0KPiA+ID4gU3ViamVjdDog UmU6IEZhc3QgcmVjb3Zlcnkgc3N0aHJlc2ggdmFsdWUNCj4gPiA+DQo+ID4gPiBIaSBSaWNoYXJk LA0KPiA+ID4NCj4gPiA+IFRoYW5rcyBmb3IgdGhlIGV4cGxhbmF0aW9uIGFuZCBzb3JyeSBmb3Ig dGhlIGxhdGUgcmVwbHkuDQo+ID4gPiBJJ3ZlIGJlZW4gaW52ZXN0aWdhdGluZyBTQUNLIGxvc3Mg cmVjb3ZlcnkgYW5kIEkgdGhpbmsgSSdtIHNlZWluZyANCj4gPiA+IGFuIGlzc3VlIHNpbWlsYXIg dG8gdGhlIEFCQyBMIHZhbHVlIGlzc3VlIHRoYXQgSSByZXBvcnRlZA0KPiA+ID4gcHJldmlvdXNs eShodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDI2MTIwKSBhbmQgSSBkbyBiZWxpZXZlIHRo ZXJlIGlzIGEgZGV2aWF0aW9uIHRvIFJGQzM1MTc6DQo+ID4gPiBUaGUgaXNzdWUgaGFwcGVucyB3 aGVuIGEgRHVwQWNrIGlzIHJlY2VpdmVkIGR1cmluZyBTQUNLIGxvc3MgcmVjb3ZlcnkgaW4gdGhl IHByZXNlbmNlIG9mIEFDSyBUaGlubmluZyBvciByZWNlaXZlciBlbmFibGluZyBMUk8sIHdoaWNo IG1lYW5zIHRoZSBTQUNLIGJsb2NrIGVkZ2VzIGNvdWxkIGV4cGFuZCBieSBtb3JlIHRoYW4gMSBT TVNTKFdlJ3ZlIHNlZW4gMzAqU01TUyksIGkuZS4gYSBzaW5nbGUgRHVwQWNrIGNvdWxkIGRlY3Jl bWVudCBgcGlwZWAgYnkgbW9yZSB0aGFuIDEgU01TUy4NCj4gPiA+IEluIFJGQzM1MTcsDQo+ID4g PiAoQykgSWYgY3duZCAtIHBpcGUgPj0gMSBTTVNTLCB0aGUgc2VuZGVyIFNIT1VMRCB0cmFuc21p dCBvbmUgb3IgbW9yZSBzZWdtZW50cy4uLg0KPiA+ID4gICAgICAgICAoQy41KSBJZiBjd25kIC0g cGlwZSA+PSAxIFNNU1MsIHJldHVybiB0byAoQy4xKSBTbyBiYXNlZCBvbiBSRkMsIHRoZSBzZW5k ZXIgc2hvdWxkIGJlIGFibGUgdG8gc2VuZCBtb3JlIHNlZ21lbnRzIGlmIHN1Y2ggRHVwQWNrIGlz IHJlY2VpdmVkLCBiZWNhdXNlIG9mIHRoZSBiaWcgY2hhbmdlIHRvIGBwaXBlYC4NCj4gPiA+DQo+ ID4gPiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIGN3aW4gdmFyaWFibGUsIHdo aWNoIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgZGF0YSB0aGF0IGNhbiBiZSB0cmFuc21pdHRlZCBi YXNlZCBvbiB0aGUgbmV3IGluZm9ybWF0aW9uLCBpcyBkaWN0YXRlZCBieSBzbmRfY3duZC4gVGhl IHNuZF9jd25kIGlzIGluY3JlbWVudGVkIGJ5IDEgU01TUyBmb3IgZWFjaCBEdXBBY2sgcmVjZWl2 ZWQuIEkgYmVsaWV2ZSB0aGlzIGVmZmVjdGl2ZWx5IGxpbWl0cyB0aGUgcmV0cmFuc21pc3Npb24g dHJpZ2dlcmVkIGJ5IGVhY2ggRHVwQWNrIHRvIDEgU01TUyAtICBkZXZpYXRpb24uDQo+ID4gPiAg MzA3ICAgICAgICAgY3dpbiA9DQo+ID4gPiAgMzA4ICAgICAgICAgICAgIGltYXgobWluKHRwLT5z bmRfd25kLCB0cC0+c25kX2N3bmQpIC0gc2Fja19ieXRlc19yeG10LCAwKTsNCj4gPiA+DQo+ID4g PiBBcyBhIHJlc3VsdCwgU0FDSyBpcyBub3QgZG9pbmcgZW5vdWdoIHJlY292ZXJ5IGluIHRoaXMg c2NlbmFyaW8gYW5kIGxvc3MgaGFzIHRvIGJlIHJlY292ZXJlZCBieSBSVE8uDQo+ID4gPiBBZ2Fp biwgSSdkIGFwcHJlY2lhdGUgZmVlZGJhY2sgZnJvbSB0aGUgY29tbXVuaXR5Lg0KPiA+ID4NCj4g PiA+IFJlZ2FyZHMsDQo+ID4gPiBMaWFuZyBUaWFuDQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4g Pg0KPiA+ID4gT24gU3VuLCBBdWcgMjMsIDIwMjAgYXQgMzo1NiBQTSBTY2hlZmZlbmVnZ2VyLCBS aWNoYXJkIDxSaWNoYXJkLlNjaGVmZmVuZWdnZXJAbmV0YXBwLmNvbT4gd3JvdGU6DQo+ID4gPiA+ DQo+ID4gPiA+IEhpIExpYW5nLA0KPiA+ID4gPg0KPiA+ID4gPiBJbiBTQUNLIGxvc3MgcmVjb3Zl cnksIHlvdSBjYW4gcmVjb3ZlciB1cCB0byBzc3RocmVzaCAocHJpb3IgY3duZC8yIFtvciA3MCUg aW4gY2FzZSBvZiBjdWJpY10pIGxvc3QgYnl0ZXMgLSBhdCBsZWFzdCBpbiB0aGVvcnkuDQo+ID4g PiA+DQo+ID4gPiA+IEluIGNvbXBhcmlzb24sIChOZXcpUmVubyBjYW4gb25seSByZWNvdmVyIG9u ZSBsb3N0IHBhY2tldCBwZXIgd2luZG93LCBhbmQgdGhlbiBrZWVwcyBvbiB0cmFuc21pdHRpbmcg bmV3IHNlZ21lbnRzIChhY2sgKyBjd25kKSwgZXZlbiBiZWZvcmUgdGhlIHJlY2VpcHQgb2YgdGhl IHJldHJhbnNtaXR0ZWQgcGFja2V0IGlzIGFja2VkLg0KPiA+ID4gPg0KPiA+ID4gPiBGb3IgaGlz dG9yaWMgcmVhc29ucywgdGhlIHNlbWFudGljIG9mIHRoZSB2YXJpYWJsZSBjd25kIGlzIG92ZXJs b2FkZWQgZHVyaW5nIGxvc3MgcmVjb3ZlcnksIGFuZCBpdCBkb2Vzbid0ICJyZWFsbHkiIGluZGlj YXRlIGN3bmQsIGJ1dCByYXRoZXIgaW5kaWNhdGVzIGlmL3doZW4gcmV0cmFuc21pc3Npb25zIGNh biBoYXBwZW4uDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEluIGJvdGggY2FzZXMgKGFsc28g dGhlIHNpbXBsZSBvbmUsIHdpdGggb25seSBvbmUgcGFja2V0IGxvc3MpLCBjd25kIHNob3VsZCBi ZSBlcXVhbCAob3IgbmVhciBlcXVhbCkgdG8gc3N0aHJlc2ggYnkgdGhlIHRpbWUgbG9zcyByZWNv dmVyeSBpcyBmaW5pc2hlZCAtIGJ1dCBOT1QgYmVmb3JlISBXaGlsZSBpdCBtYXkgYXBwZWFyIGxp a2Ugc2xvdy1zdGFydCwgdGhlIHZhbHVlIG9mIHRoZSBjd25kIHZhcmlhYmxlIHJlYWxseSBpbmNy ZWFzZXMgYnkgYWNrZWRfYnl0ZXMgb25seSBwZXIgQUNLIChub3QgYWNrZWRfYnl0ZXMgKyBTTVNT KSwgc2luY2UgdGhlIGxlZnQgZWRnZSAoc25kX3VuYSkgZG9lc24ndCBtb3ZlIHJpZ2h0IC0gdW5s aWtlIGR1cmluZyBzbG93LXN0YXJ0LiBCdXQgbnVtZXJpY2FsbHksIHRoZXNlIGRpZmZlcmVudCBw aGFzZXMgKHNsb3ctc3RhcnQgLyBzYWNrIGxvc3MtcmVjb3ZlcnkpIG1heSBhcHBlYXIgdmVyeSBz aW1pbGFyLg0KPiA+ID4gPg0KPiA+ID4gPiBZb3UgY291bGQgY2hlY2sgdGhpcyB1c2luZyB0aGUg KGxvYWRhYmxlKSBTSUZUUiBtb2R1bGUsIHdoaWNoIGNhcHR1cmVzIHRfZmxhZ3MgKGluZGljYXRp bmcgaWYgY29uZy9sb3NzIHJlY292ZXJ5IGlzIGFjdGl2ZSksIHNzdGhyZXNoLCBjd25kLCBhbmQg b3RoZXIgcGFyYW1ldGVycy4NCj4gPiA+ID4NCj4gPiA+ID4gVGhhdCBpcyBhdCBsZWFzdCBob3cg dGhpbmdzIGFyZSBzdXBwb3NlZCB0byB3b3JrOyBvciBoYXZlIHlvdSBpbnZlc3RpZ2F0ZWQgdGhl IHRpbWluZyBhbmQgYmVoYXZpb3Igb2YgU0FDSyBsb3NzIHJlY292ZXJ5IGFuZCBmb3VuZCBhIGRl dmlhdGlvbiB0byBSRkMzNTE3PyBOb3RlIHRoYXQgRkJTRCBjdXJyZW50bHkgaGFzIG5vdCBmdWxs eSBpbXBsZW1lbnRlZCBSRkM2Njc1IHN1cHBvcnQgKHdoaWNoIGRldmlhdGVzIHNsaWdodGx5IGZy b20gMzUxNyB1bmRlciBzcGVjaWZpYyBjaXJjdW1zdGFuY2VzOyBJIGhhdmUgYSBwYXRjaCBwZW5k aW5nIHRvIGltcGxlbWVudGUgNjY3NSByZXNjdWUgcmV0cmFuc21pc3Npb25zLCBidXQgaGF2ZW4n dCB0d2Vha2VkIHRoZSBvdGhlciBhc3BlY3RzIG9mIDY2NzUgdnMuIDM1MTcuDQo+ID4gPiA+DQo+ ID4gPiA+IEJUVzogV2hpbGUgZnJlZWJzZC1uZXQgaXMgbm90IHRoZSB3cm9uZyBETCBwZXIgc2Us IFRDUCwgVURQLCBTQ1RQIHNwZWNpZmljIHF1ZXN0aW9ucyBjYW4gYWxzbyBiZSBwb3N0ZWQgdG8g ZnJlZWJzZC10cmFuc3BvcnQsIHdoaWNoIGlzIG1vcmUgbmFycm93bHkgZm9jdXNlZC4NCj4gPiA+ ID4NCj4gPiA+ID4gQmVzdCByZWdhcmRzLA0KPiA+ID4gPg0KPiA+ID4gPiBSaWNoYXJkIFNjaGVm ZmVuZWdnZXINCj4gPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+ID4gRnJvbTogb3duZXItZnJlZWJzZC1uZXRAZnJlZWJzZC5vcmcgDQo+ID4gPiA+IDxvd25l ci1mcmVlYnNkLW5ldEBmcmVlYnNkLm9yZz4gT24gQmVoYWxmIE9mIExpYW5nIFRpYW4NCj4gPiA+ ID4gU2VudDogU29ubnRhZywgMjMuIEF1Z3VzdCAyMDIwIDAwOjE0DQo+ID4gPiA+IFRvOiBmcmVl YnNkLW5ldCA8ZnJlZWJzZC1uZXRAZnJlZWJzZC5vcmc+DQo+ID4gPiA+IFN1YmplY3Q6IEZhc3Qg cmVjb3Zlcnkgc3N0aHJlc2ggdmFsdWUNCj4gPiA+ID4NCj4gPiA+ID4gSGkgYWxsLA0KPiA+ID4g Pg0KPiA+ID4gPiBXaGVuIDMgZHVwYWNrcyBhcmUgcmVjZWl2ZWQgYW5kIFRDUCBlbnRlciBmYXN0 IHJlY292ZXJ5LCBpZiBTQUNLIGlzIHVzZWQsIHRoZSBDV05EIGlzIHNldCB0byBtYXhzZWc6DQo+ ID4gPiA+DQo+ID4gPiA+IDI1OTMgICAgICAgICAgICAgICAgICAgICBpZiAodHAtPnRfZmxhZ3Mg JiBURl9TQUNLX1BFUk1JVCkgew0KPiA+ID4gPiAyNTk0ICAgICAgICAgICAgICAgICAgICAgICAg IFRDUFNUQVRfSU5DKA0KPiA+ID4gPiAyNTk1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 Y3BzX3NhY2tfcmVjb3ZlcnlfZXBpc29kZSk7DQo+ID4gPiA+IDI1OTYgICAgICAgICAgICAgICAg ICAgICAgICAgdHAtPnNuZF9yZWNvdmVyID0gdHAtPnNuZF9ueHQ7DQo+ID4gPiA+IDI1OTcgICAg ICAgICAgICAgICAgICAgICAgICAgdHAtPnNuZF9jd25kID0gbWF4c2VnOw0KPiA+ID4gPiAyNTk4 ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB0cC0+dF9mYi0+dGZiX3RjcF9vdXRwdXQo dHApOw0KPiA+ID4gPiAyNTk5ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZHJvcDsNCj4g PiA+ID4gMjYwMCAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gT3RoZXJ3 aXNlKFNBQ0sgaXMgbm90IGluIHVzZSksIENXTkQgaXMgc2V0IHRvIG1heHNlZyBiZWZvcmUNCj4g PiA+ID4gdGNwX291dHB1dCgpIGFuZCB0aGVuIHNldCBiYWNrIHRvIHNuZF9zc3RocmVzaCtpbmZs YXRpb24NCj4gPiA+ID4gMjYwMSAgICAgICAgICAgICAgICAgICAgIHRwLT5zbmRfbnh0ID0gdGgt PnRoX2FjazsNCj4gPiA+ID4gMjYwMiAgICAgICAgICAgICAgICAgICAgIHRwLT5zbmRfY3duZCA9 IG1heHNlZzsNCj4gPiA+ID4gMjYwMyAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB0cC0+dF9m Yi0+dGZiX3RjcF9vdXRwdXQodHApOw0KPiA+ID4gPiAyNjA0ICAgICAgICAgICAgICAgICAgICAg S0FTU0VSVCh0cC0+c25kX2xpbWl0ZWQgPD0gMiwNCj4gPiA+ID4gMjYwNSAgICAgICAgICAgICAg ICAgICAgICAgICAoIiVzOiB0cC0+c25kX2xpbWl0ZWQgdG9vIGJpZyIsDQo+ID4gPiA+IDI2MDYg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pKTsNCj4gPiA+ID4gMjYwNyAgICAgICAg ICAgICAgICAgICAgIHRwLT5zbmRfY3duZCA9IHRwLT5zbmRfc3N0aHJlc2ggKw0KPiA+ID4gPiAy NjA4ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhzZWcgKg0KPiA+ID4gPiAyNjA5ICAgICAg ICAgICAgICAgICAgICAgICAgICAodHAtPnRfZHVwYWNrcyAtIHRwLT5zbmRfbGltaXRlZCk7DQo+ ID4gPiA+IDI2MTAgICAgICAgICAgICAgICAgICAgICBpZiAoU0VRX0dUKG9ueHQsIHRwLT5zbmRf bnh0KSkNCj4gPiA+ID4gMjYxMSAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+c25kX254dCA9 IG9ueHQ7DQo+ID4gPiA+IDI2MTIgICAgICAgICAgICAgICAgICAgICBnb3RvIGRyb3A7DQo+ID4g PiA+DQo+ID4gPiA+IEknbSB3b25kZXJpbmcgaW4gdGhlIFNBQ0sgY2FzZSwgc2hvdWxkIENXTkQg YmUgc2V0IGJhY2sgdG8gc3N0aHJlc2god2hpY2ggaGFzIGJlZW4gc2xhc2hlZCBpbiBjY19jb25n X3NpZ25hbCgpIGEgZmV3IGxpbmVzIGFib3ZlKSBiZWZvcmUgbGluZSAyNTk5LCBsaWtlIG5vbi1T QUNLIGNhc2UsIGluc3RlYWQgb2YgZG9pbmcgc2xvdyBzdGFydCBmcm9tIG1heHNlZz8NCj4gPiA+ ID4gSSByZWFkIHJmYzY2NzUgYW5kIGEgZmV3IG90aGVycywgYW5kIGl0IGxvb2tzIGxpa2UgdGhh dCdzIHRoZSBjYXNlLiBJIGFwcHJlY2lhdGUgeW91ciBvcGluaW9uLCBhZ2Fpbi4NCj4gPiA+ID4N Cj4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiBMaWFuZw0KPiA+ID4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ID4gPiBmcmVlYnNkLW5ldEBmcmVl YnNkLm9yZyBtYWlsaW5nIGxpc3QgDQo+ID4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWJzZC5vcmcv bWFpbG1hbi9saXN0aW5mby9mcmVlYnNkLW5ldA0KPiA+ID4gPiBUbyB1bnN1YnNjcmliZSwgc2Vu ZCBhbnkgbWFpbCB0byAiZnJlZWJzZC1uZXQtdW5zdWJzY3JpYmVAZnJlZWJzZC5vcmciDQo+ID4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ID4g ZnJlZWJzZC10cmFuc3BvcnRAZnJlZWJzZC5vcmcgbWFpbGluZyBsaXN0IA0KPiA+ID4gaHR0cHM6 Ly9saXN0cy5mcmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVic2QtdHJhbnNwb3J0DQo+ ID4gPiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0byAiZnJlZWJzZC10cmFuc3BvcnQt dW5zdWJzY3JpYmVAZnJlZWJzZC5vcmciDQo=