From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass smtp.mailfrom=; dkim=fail; arc=none (Message is not ARC signed); dmarc=fail (Used From Domain Record) header.from=umbernetworks.com policy.dmarc=quarantine Received: from mail.umbernetworks.com (mail.umbernetworks.com [198.74.51.139]) by mail.toke.dk (Postfix) with ESMTPS id 37F3B1156BCA; Sun, 24 May 2026 23:57:27 +0200 (CEST) Received: from webmail.umbernetworks.com (files.umbernetwork.com [198.74.51.139]) by mail.umbernetworks.com (Postfix) with ESMTPA id 9EDEC219E42; Sun, 24 May 2026 21:57:25 +0000 (UTC) MIME-Version: 1.0 Date: Sun, 24 May 2026 14:57:25 -0700 From: bob.mcmahon@umbernetworks.com To: Frantisek Borsik Cc: dan , Robert McMahon , David Lang , "Livingood, Jason" , Cake List , Make-Wifi-fast , bloat , Jeremy Austin via Rpm , codel@lists.bufferbloat.net, "Dave.seddon Ca" , William Fisher , Igor Aleinikov , Jim , Jiml , Douglas Fairbairn , Thomas , Tim Odriscoll , Morten , Sebastian Moeller , Mt Denicolo , Mmcmahon01 , Santanu Sinha , Matthew , Koen DS , Shotaro Saito , Robin Jarry , Ehf , G White , Chunyuhu07 , Matthew Fischer In-Reply-To: References: <709dac7800ee7ad92aafd4eab1c761d9@umbernetworks.com> <0oq1n88q-36qn-p6s7-699s-p4nr0440p950@ynat.uz> <8e14c6935753c6263351ad00ec59b9cb@umbernetworks.com> Message-ID: <055e42685cddfa4c1a4ff4da089996eb@umbernetworks.com> X-Sender: bob.mcmahon@umbernetworks.com X-MailFrom: bob.mcmahon@umbernetworks.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation Message-ID-Hash: 3GIYO5RLTDRTHL2QZLFPL2OKAHFLC5D5 X-Message-ID-Hash: 3GIYO5RLTDRTHL2QZLFPL2OKAHFLC5D5 X-Mailman-Approved-At: Mon, 25 May 2026 10:07:04 +0200 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8; format=flowed X-Content-Filtered-By: Mailman/MimeDel 3.3.10 X-Mailman-Version: 3.3.10 Precedence: list Subject: [Bloat] Re: [Rpm] Re: Re: [Cake] "Fi-Wi is a new forwarding plane for wireless" - Bob McMahon List-Id: General list for discussing Bufferbloat Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: SGkgRnJhbmssDQoNClRoZSBxdWVzdGlvbiBuZWVkcyB0byBiZSBmcmFtZWQgaW4gbWVhc3VyYWJs ZSB0ZXJtcy4NCg0KVGhlIHN5c3RlbXMgeW91IG5hbWVkIG9wZXJhdGUgYXQgZGlmZmVyZW50IGxh eWVycyB0aGFuIHRoZSA4MDIuMTEgDQpNQUMvUEhZIGxheWVyIHdoZXJlIFRYT1AgYWxsb2NhdGlv biwgcmV0cmllcywgRURDQSBjb250ZW50aW9uLCBBTVBEVSANCmJlaGF2aW9yLCBhbmQgYWlydGlt ZSB1dGlsaXphdGlvbiBvY2N1ciB0aHJvdWdob3V0IHRoZSBidWlsZGluZy4gDQpiYXRtYW4tYWR2 IHJvdXRlcyBiZXR3ZWVuIG1lc2ggbm9kZXMuIENBS0UgYW5kIEZRLUNvRGVsIG9wZXJhdGUgb24g DQpJUC1sYXllciBxdWV1ZXMuIFFvRSBtaWRkbGUtYm94ZXMgb3BlcmF0ZSBmcm9tIHRoZSBXQU4v SVAgc2lkZS4NCg0KU28gdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgSVAtbGF5ZXIgQVFNcyBvciBX QU4tc2lkZSBRb0Ugc3lzdGVtcyBhZmZlY3QgDQptZWFzdXJhYmxlIDgwMi4xMSBNQUMvUEhZIGJl aGF2aW9yIHVuZGVyIGxvYWQuDQoNCklmIHRoZXkgZG8sIHRoZSBwcmVkaWN0ZWQgTUFDL1BIWSBl ZmZlY3RzIHdvdWxkIGluY2x1ZGU6DQoNCiAgCSogbG93ZXIgZmFpbGVkIFRYT1AgcGVyY2VudGFn ZQ0KICAJKiBsb3dlciByZXRyYW5zbWlzc2lvbiBhaXJ0aW1lIGZyYWN0aW9uDQogIAkqIGltcHJv dmVkIEFNUERVIGNvbXBsZXRpb24gZWZmaWNpZW5jeQ0KICAJKiBoaWdoZXIgcGF5bG9hZCBkZWxp dmVyZWQgcGVyIFRYT1ANCiAgCSogbG93ZXIgQU1QRFUgdHJ1bmNhdGlvbiBmcmVxdWVuY3kNCiAg CSogcmVkdWNlZCBFRENBIHdhaXQgZGlzdHJpYnV0aW9ucw0KICAJKiBpbXByb3ZlZCBhaXJ0aW1l IHV0aWxpemF0aW9uDQogIAkqIHJlZHVjZWQgc2VydmljZS10aW1lIHZhcmlhbmNlDQogIAkqIGNo YW5nZWQgTUNTIGRpc3RyaWJ1dGlvbnMgYWNyb3NzIHN0YXRpb25zIHVuZGVyIHJlYWxpc3RpYyBz cGF0aWFsIA0KdG9wb2xvZ3ksIHBhcnRpY3VsYXJseSBhdCBjb3ZlcmFnZSBlZGdlcyBhbmQgd2hl cmUgbXVsdGlwbGUgQVBzIG9yIFJSSHMgDQphcmUgY2FuZGlkYXRlcyBmb3Igbm9kZSBzZWxlY3Rp b24NCg0KVGhhdCBpcyB0aGUgbWVhc3VyZW1lbnQgZ2FwIEkgYW0gcG9pbnRpbmcgYXQuIFRoZSBp bmR1c3RyeSBoYXMgZXh0ZW5zaXZlIA0KODAyLjExIGZlYXR1cmUgbGlzdHMgYW5kIG1hcmtldGlu ZyBjbGFpbXMsIHdpdGggY29tcGFyYXRpdmVseSBsaXR0bGUgDQpvcGVuIHRvb2xpbmcgdG8gZmFs c2lmeSB3aGF0IHRob3NlIGFjdHVhbGx5IGRvIHRvIGJ1aWxkaW5nIHdpZGUgODAyLjExIA0KTUFD L1BIWSBiZWhhdmlvciB1bmRlciByZWFsIG11bHRpLWNsaWVudCwgbXVsdGktQVAgbG9hZC4NCg0K SSBkZXZlbG9wZWQgYW5kIHN0aWxsIG1haW50YWluIGlwZXJmMiBiZWNhdXNlIHRocm91Z2hwdXQg YWxvbmUgaGFzIA0KcHJvdmVuIGFuIGluc3VmZmljaWVudCBtZWFzdXJlbWVudCBtb2RlbCBmb3Ig bmV0d29yayBiZWhhdmlvciwgZS5nLiANCmxhdGVuY2llcyBhbmQgcmVzcG9uc2l2ZW5lc3MgdW5k ZXIgbG9hZC4gRmVhdHVyZXMgYWRkZWQgdG8gaXBlcmYyIA0KaW5jbHVkZToNCg0KICAJKiB0cmlw LXRpbWVzDQogIAkqIGJvdW5jZWJhY2sgdGVzdGluZw0KICAJKiBvbmUtd2F5IElQIHBhY2tldCB0 aW1pbmcgbWVhc3VyZW1lbnRzDQogIAkqIHBhY2tldC1sZXZlbCBsYXRlbmN5IGhpc3RvZ3JhbXMN CiAgCSogbWVzc2FnZS1sZXZlbCAoVENQIHdyaXRlL3JlYWQgY29tcGxldGlvbikgbGF0ZW5jeSBo aXN0b2dyYW1zDQogIAkqIHJlc3BvbnNpdmVuZXNzIHVuZGVyIGxvYWQgbWVhc3VyZW1lbnRzDQog IAkqIGVuaGFuY2VkIHBlci1pbnRlcnZhbCByZXBvcnRpbmcNCiAgCSogQ1dORCByZXBvcnRpbmcN CiAgCSogUlRUIHJlcG9ydGluZw0KICAJKiBieXRlcy9wYWNrZXRzIGluLWZsaWdodCByZXBvcnRp bmcNCiAgCSogVENQIHJldHJhbnNtaXNzaW9uIHJlcG9ydGluZw0KICAJKiBUQ1AgY29uZ2VzdGlv bi1jb250cm9sIHNlbGVjdGlvbiAoQ1VCSUMsIEJCUiwgUHJhZ3VlLCBldGMuKQ0KICAJKiB1ZHAt bDRzIGluY2x1ZGluZyBDRSBjb3VudGVycyBhbmQgZHVyYXRpb25zDQogIAkqIGlzb2Nocm9ub3Vz IHRyYWZmaWMgZ2VuZXJhdGlvbg0KICAJKiBzb2NrZXQtbGF5ZXIgcGFjaW5nIHZpYSBTT19NQVhf UEFDSU5HX1JBVEUNCiAgCSogdG9rZW4tYnVja2V0IHdyaXRlLXJhdGUgY29udHJvbA0KICAJKiBN YXJrb3YtY2hhaW4gcGFja2V0LXNpemUgZ2VuZXJhdGlvbg0KICAJKiBVRFAgbGF0ZW5jeS9qaXR0 ZXIgYW5hbHlzaXMNCiAgCSogbXVsdGljYXN0IHRlc3RpbmcNCg0KVGhvc2UgbWVhc3VyZW1lbnRz IG9wZXJhdGUgYWJvdmUgdGhlIDgwMi4xMSBNQUMvUEhZLiBUaGUgbWlzc2luZyBsYXllciANCnJl bWFpbnMgb3BlbiA4MDIuMTEgTUFDL1BIWSB0ZWxlbWV0cnksIHdoaWNoIGlzIHdoYXQgSSdtIGJ1 aWxkaW5nIG5vdy4NCg0KVGhpcyBtZWFzdXJlbWVudCBzdGFuZGFyZCBzaG91bGQgYXBwbHkgZXF1 YWxseSB0byBhbnkgY2xhaW0gZnJvbSBhbnkgDQphcmNoaXRlY3R1cmUsIGluY2x1ZGluZyBGaS1X aS4NCg0KVGhlIHF1ZXN0aW9uIGJlY29tZXM6IGRvZXMgY2VudHJhbGl6ZWQgTUFDIHRlbGVtZXRy eSBhbmQgY29vcmRpbmF0ZWQgDQphaXJ0aW1lIGNvbnRyb2wgYWZmZWN0IG1lYXN1cmFibGUgODAy LjExIE1BQy9QSFkgYmVoYXZpb3IgdW5kZXIgbG9hZCANCnJlbGF0aXZlIHRvIGF1dG9ub21vdXMg QVAgb3BlcmF0aW9uPw0KDQpNZWFzdXJlIHRoZSBzYW1lIE1BQy9QSFkgbWV0cmljcyB1bmRlciBl cXVpdmFsZW50IHRvcG9sb2d5LCBvZmZlcmVkIA0KbG9hZCwgYW5kIGNsaWVudCBtaXguIElmIHRo b3NlIG1lYXN1cmVtZW50cyBkbyBub3QgaW1wcm92ZSByZWxhdGl2ZSB0byANCmJhc2VsaW5lLCB0 aGUgYXJjaGl0ZWN0dXJhbCBjbGFpbSBvZiBGaS1XaSBmYWlscy4gV2Ugd29uJ3Qga25vdyB1bnRp bCANCkZpLVdpIGlzIGRlc2lnbmVkLCBidWlsdCwgZGVwbG95ZWQgYW5kIG1lYXN1cmVkIGF0IG1h bnkgZGlmZmVyZW50IA0KbG9jYXRpb25zLiBUaGUgdGhlb3JldGljYWwgY2FzZSBpcyBzdHJvbmcu ICBDZW50cmFsaXplZCBzY2hlZHVsaW5nLCANCmpvaW50IG9wdGltaXphdGlvbiwgYW5kIG9ic2Vy dmFiaWxpdHkgYWxsIGFyZ3VlIGZvciBpdC4gVGhlIGRlc2lnbiBhbmQgDQptZWFzdXJlbWVudHMg YXJlIHRoZSBuZXh0IHN0ZXBzLiBUaGVuIHdlJ2xsIHNlZSBiYXNlZCBvbiBldmlkZW5jZS4NCg0K Qm9iDQoNCj4gVGVjaG5pY2FsbHksIEJldGFtYXggd2FzIHN1cGVyaW9yIHRvIFZIUywgYW5kIHll dC4uLg0KPiANCj4gSWYgd2Ugd291bGQgYmUgdGFsa2luZyBhYm91dCBGaVdpIHByZS1qdW1wIGZy b20gV2ktRmkgNSB0byBXaS1GaTYvRS83LCANCj4gSSB3b3VsZCBldmVuIHRyeSB0byBkbyBteSBi ZXN0IGFuZCBpZ25vcmUgaHR0cHM6Ly9mYXN0Z29vZC5jaGVhcC4NCj4gQnV0IHdlIGFyZSBub3Qg dGhlcmUsIGZvciBiZXR0ZXIgb3IgZm9yIHdvcnNlLg0KPiANCj4gSVNQcyBsaWtlIERhbiB0aGF0 IHVzZSBXaS1GaSA2ICh3aXRoIG1lc2gsIGVzcGVjaWFsbHkgYmFzZWQgb24gDQo+IGJhdG1hbi1h ZHYgYW5kIEZRLUNvRGVsIC8gQ0FLRSkgYW5kIGFib3ZlIGF0IGN1c3RvbWVyIHByZW1pc2VzIGFu ZCANCj4gUXVhbGl0eSBvZiBFeHBlcmllbmNlIG1pZGRsZS1ib3ggb24gdGhlaXIgbGFzdC1taWxl LCB3aGlsZSBwcm92aWRpbmcgDQo+IGdvb2QsIHBlcnNvbmFsIGN1c3RvbWVyIHNlcnZpY2UgKG5v dCBzb21lIGNyYXBweSBvdXRzb3VyY2luZyBvZiBpdCB0byANCj4gSW5kaWEgb3IgIkFJIikgd2ls bCBiZSBoYXJkIHRvIGJlYXQsIGV2ZW4gZm9yIGEgYmlnIHRlbGNvL0lTUCBvZmZlcmluZyANCj4g Y2hlYXBlciBwcmljZS4gWWVzLCBzb21lIHBlb3BsZSB3aWxsIGxlYXZlIGJ1dCB0aGUgbW9zdCBv ZiB0aGVtIHdpbGwgYmUgDQo+IGNvbWluZyBiYWNrLg0KPiANCj4gVGhpcyBpcywgYmVsaWV2ZSBp dCBvciBub3QsIG5vdCBhIGhpZ2ggYmFyIHRvIGp1bXAgb3ZlciwgZXZlbiB0aG91Z2ggDQo+IG5v dCBtYW55IElTUHMgYXJlIGdldHRpbmcgaXQgYWxyZWFkeS4gV2UgYWxsIGtub3cgdGhhdCBtb3Jl IG9yIGxlc3M6IA0KPiAiQmFuZHdpZHRoIGlzIGEgbGllLCBCYW5kd2lkdGggaXMgZGVhZCwiIHNv IGl0J3MgY29taW5nLiBUaGV5IHdpbGwgYmUgDQo+IHRocm93aW5nIG1vcmUgYmFuZHdpZHRoIG9u IGl0IGZvciBzb21lIHRpbWUsIGJ1dCB3ZSB3aWxsIGJlIGdldHRpbmcgDQo+IGZyb20gImlubm92 YXRvcnMiIHRvICJlYXJseSBhZG9wdGVycyIgc29vbiBhbmQgdGhlbiwgYWxsIHdlIG5lZWQgaXMg DQo+IGp1c3QgdGhhdCAiY3Jvc3NpbmcgdGhlIGNoYXNtLiINCj4gDQo+IERlc3BpdGUgYWxsIHRo ZSBkaWZmaWN1bHRpZXMsIGl0IHdpbGwgYmUgZmFzdGVyIGFuZCBjaGVhcGVyIC0gYWxzbyANCj4g Imdvb2QgZW5vdWdoLCIgdGhhbiBGaVdpLiBPciByYXRoZXIsIGl0J3MgaGVyZSBhbHJlYWR5LCBp dCdzIGp1c3Qgbm90IA0KPiBldmVubHkgZGlzdHJpYnV0ZWQuDQo+IFRoZXJlIG1pZ2h0IGJlIHNv bWUgZ29vZCBuaWNoZSB1c2UgY2FzZSBmb3IgRmlXaSwgdGhvdWdoLCBvbmNlIGl0IHdpbGwgDQo+ IG1hdHVyZSBhbmQgZ2V0IHRoZXJlLg0KPiANCj4gQWxsIHRoZSBiZXN0LA0KPiANCj4gRnJhbmsN Cj4gDQo+IEZyYW50aXNlayAoRnJhbmspIEJvcnNpaw0KPiANCj4gSW4gbG92aW5nIG1lbW9yeSBv ZiBEYXZlIFTDpGh0OiAxOTY1LTIwMjUNCj4gDQo+IGh0dHBzOi8vbGlicmVxb3MuaW8vMjAyNS8w NC8wMS9pbi1sb3ZpbmctbWVtb3J5LW9mLWRhdmUvDQo+IA0KPiBodHRwczovL3d3dy5saW5rZWRp bi5jb20vaW4vZnJhbnRpc2VrYm9yc2lrDQo+IA0KPiBTaWduYWwsIFRlbGVncmFtLCBXaGF0c0Fw cDogKzQyMTkxOTQxNjcxNA0KPiANCj4gaU1lc3NhZ2UsIG1vYmlsZTogKzQyMDc3NTIzMDg4NQ0K PiANCj4gU2t5cGU6IGNhc2lvYTUzMDJjYQ0KPiANCj4gZnJhbnRpc2VrLmJvcnNpa0BnbWFpbC5j b20NCj4gDQo+IE9uIFN1biwgTWF5IDI0LCAyMDI2IGF0IDI6MTLigK9BTSBkYW4gPGRhbmRlbnNv bkBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gU2F0LCBNYXkgMjMsIDIwMjYgYXQgMTA6Mzbi gK9BTSA8Ym9iLm1jbWFob25AdW1iZXJuZXR3b3Jrcy5jb20+IHdyb3RlOg0KPiANCj4+IEkgZG9u J3QgaGF2ZSBhcmd1bWVudHMgb24gdGhlIHRlY2huaWNhbCBiaXRzIG9mIHlvdXIgcmVwbHkuDQo+ IA0KPiBUaGUgaW5kdXN0cnkgaGFzbid0IHByb3ZpZGVkIG9wZW4gc291cmNlIHRvb2xzIHRvIGFu YWx5emUgODAyLjExIA0KPiBwcm9wZXJseS4gVGhlIHByb3ByaWV0YXJ5IG9uZXMgYXJlIHRpZ2h0 bHkgY291cGxlZCB0byBjaGlwIGZpcm13YXJlLCANCj4gb3duZWQgYnkgODAyLjExIHZlbmRvcnMs IGFuZCBub3QgZm9yIHNhbGUuDQo+IA0KPiBZb3UndmUgYnVpbHQgc29saWQgbmV0d29ya3MsIGVz cGVjaWFsbHkgZ2l2ZW4gaG93IGxpdHRsZSA4MDIuMTEgDQo+IE1BQy1sYXllciBhbmQgTUNTIG9i c2VydmFiaWxpdHkgY3VycmVudCB0b29saW5nIGV4cG9zZXMuIEkgaG9wZSB0byBtYWtlIA0KPiBv cGVuIHNvdXJjZSA4MDIuMTEgTUFDIHRlbGVtZXRyeSB0b29scyBhdmFpbGFibGUgc29vbmVyIHJh dGhlciB0aGFuIA0KPiBsYXRlci4gVGhlc2Ugd2lsbCBydW4gb24gYm90aCBhbiBFU1AzMi1DNSBh bmQgYW4gUlBpNS4gVGhlIGluZXhwZW5zaXZlIA0KPiBFU1AzMiBhbGxvd3MgbW9uaXRvcnMgdG8g YmUgcGxhY2VkIHRocm91Z2hvdXQgYSB2ZW51ZSBhdCBsb3cgY29zdC4NCj4gDQo+IEEga2V5IGlz c3VlIGlzIHdoYXQncyBiZWluZyBtZWFzdXJlZC4gWW91ciBkZXBsb3ltZW50IGRhdGEgaXMgYSAN Cj4gY2FwYWNpdHkgYW5hbHlzaXMuIE9uY2UgYmFzZWxpbmUgY2FwYWNpdHkgaXMgYWRlcXVhdGUs IHVzZXIgZXhwZXJpZW5jZSANCj4gaXMgZHJpdmVuIGJ5IHRhaWwgbGF0ZW5jeSBhbmQgc2Vydmlj ZS10aW1lIHZhcmlhbmNlIHJhdGhlciB0aGFuIA0KPiB0aHJvdWdocHV0LiBBIG5ldHdvcmsgY2Fu IHNhdHVyYXRlIGFnZ3JlZ2F0ZSB0aHJvdWdocHV0IHdoaWxlIHN0aWxsIA0KPiBzaG93aW5nIGxh cmdlIHNlcnZpY2UtdGltZSB2YXJpYW5jZSBhbmQgbG9uZyBwZXItZmxvdyB0YWlscyB1bmRlciAN Cj4gY29udGVudGlvbi4gVGhlc2UgYXJlIGRpZmZlcmVudCBtZWFzdXJlbWVudHMuDQo+IA0KPiBB bmQgQ09ERUwgYW5kIENBS0UgYXJlIElQLWxheWVyIG1lY2hhbmlzbXMuIFRoZXkgZG9uJ3Qgb3Bl cmF0ZSBvbiANCj4gODAyLjExIFRYT1BzIG9yIGFpcnRpbWUgc29qb3Vybiwgd2hpY2ggaXMgd2hl cmUgdGhlIGNvbnRlbnRpb24gYW5kIA0KPiBzZXJ2aWNlLXRpbWUgdmFyaWFuY2UgYWN0dWFsbHkg bGl2ZS4gQVFMIGlzIGNsb3Nlci4gSXQgb3BlcmF0ZXMgb24gDQo+IGFpcnRpbWUgYXQgdGhlIGRy aXZlci9maXJtd2FyZSBib3VuZGFyeSwgYnV0IGl0J3Mgc3RpbGwgcGVyLUFQLiBUaGVyZSdzIA0K PiBubyBjb29yZGluYXRpb24gYWNyb3NzIEFQcyBhbmQgbm8gTUFDIHRlbGVtZXRyeSBleHBvc2Vk IHVwd2FyZC4NCj4gDQo+IFNsaWRlIDYgb2YgbXkgRFBESyBTdW1taXQgU3RvY2tob2xtIHRhbGsg bGF5cyBvdXQgdGhlIGxheWVyaW5nOiANCj4gaHR0cHM6Ly93d3cudW1iZXJuZXR3b3Jrcy5jb20v RFBES19XaUZpX1N0b2NraG9sbV9QcmVzLmh0bWwNCj4gDQo+IENoZWNrIG91dCBpcGVyZjIncyBh ZHZhbmNlZCBmZWF0dXJlcyBhcm91bmQgLS1ib3VuY2ViYWNrLCAtLXRyaXAtdGltZXMsIA0KPiBh bmQgLS1oaXN0b2dyYW1zLiBUaGVzZSBhcmUgYXZhaWxhYmxlIGFzIG9wZW4gc291cmNlLiBNYW4g cGFnZTogDQo+IGh0dHBzOi8vaXBlcmYyLnNvdXJjZWZvcmdlLmlvL2lwZXJmLW1hbnBhZ2UuaHRt bA0KPiANCj4gSSdsbCB0cnkgdG8gcmVzcG9uZCB3aXRoIHNvbWUgbWV0cmljcyBzb29uLiBNeSBy aWcgaXMgZG93biBhdCB0aGUgDQo+IG1vbWVudCwgc28gZ2l2ZSBtZSBhIGZldyBkYXlzLg0KPiAN Cj4gQm9iDQo+IA0KPiBJIGFncmVlLiAgSG93ZXZlciwgSSdtIG5vdCBhY3R1YWxseSBqdXN0IG1l YXN1cmluZyB0aHJvdWdocHV0LCBidXQgDQo+IHJ1bm5pbmcgbGF0ZW5jeSBzZW5zaXRpdmUgYXBw bGljYXRpb25zIHdpdGhvdXQgaXNzdWVzLiAgRnJhbmsgbWlnaHQgDQo+IGF0dGVzdCB0byBteSBl ZmZvcnRzIHRvIHJlZHVjZSBsYXRlbmN5IGFuZCBJIHJvdXRpbmVseSBzaGFyZSBkYXRhIG9uIA0K PiBscW9zIChhbmQgYW5vdGhlciBRb0UgcHJvZHVjdCdzKSBUQ1AgbWVhc3VyZW1lbnRzIGZvciBs YXRlbmN5IGFuZCBhbW9uZyANCj4gUW9FIHVzZXJzLCBJIGJlbGlldmUgbXkgbmV0d29yayBpcyB0 b3AgMSUgaW4gbGF0ZW5jeSBhbmQgaml0dGVyIGFuZCBpbiANCj4gdGhlIFdJU1Agc3BhY2UuICBP YnZpb3VzbHkgSSdtIG5vdCBnb2luZyB0byBjb21wZXRlIHdpdGggWEdTUE9OIA0KPiBvcGVyYXRv cnMuLiAodGhvdWdoIEknbSBvbmx5IG1lYXN1cmluZyBUQ1AgYmVjYXVzZSB0aGF0J3MgdGhlICdl YXNpZXN0JyANCj4gdG8gbWVhc3VyZSBwYXNzaXZlbHkgcHJhY3RpY2FsbHkpLiAgV2hpbGUgdGhp cyBpcyBub3QgYW4gZW5naW5lZXJpbmcgDQo+IGFkZXF1YXRlIGJlbmNobWFyaywgaWYgbXkgVm9J UCBoYW5kc2V0cyB3b3JrIG92ZXIgd2lyZWxlc3MgdGhlbiB0aGUgDQo+IHdpcmVsZXNzIGlzIGdv b2QgaXMgYSB2ZXJ5IHJlYXNvbmFibGUgbGF0ZW5jeSwgaml0dGVyLCBsb3NzIGFyZ3VtZW50LiAg DQo+IEFuZCBJIHJ1biBhIGZldyBicmFuZHMgb2YgV2lGaSBiYXNlZCBWb0lQIHBob25lcyAoRmFu dmlsbCBXeHh4IHNlcmllcywgDQo+IFllYWxpbmsgV3h4IGFuZCBBWHh4IHNlcmllcykuICBTaW1p bGFybHksIGlmIHRoZSBzb25vcyB3b3JrcyBhbmQgaXMgaW4gDQo+IHN5bmMsIHRoZSB3aWZpIGlz IGdvb2QuDQo+IA0KPiBBcyBhIHNlcnZpY2UgY29tcGFueSBhbmQgYXMgYSB1c2VyLCBJIGRvbid0 IHJlYWxseSBjYXJlIHNvIG11Y2ggd2hlcmUgDQo+IHRoZSBnb29kbmVzcyBpcyBpbiB0aGUgc3lz dGVtLCBtYWMgbGF5ZXIgb3IgSVAgaGF2aW5nIGNha2Ugd29yayBpdCdzIA0KPiBtYWdpYy4gIEJh c2ljYWxseSBydW5uaW5nIGFuIEFQIG9uIE9GTURBIChhcyBtdWNoIGFzIHBvc3NpYmxlKSBhbmQg d2VsbCANCj4gdW5kZXIgdGhlICdyZWQgbGluZScgY2FwYWNpdHkgZGVsaXZlcnMgZ3JlYXQgcmVz dWx0cyBvbiBXaUZpNyByYWRpb3MgDQo+IChhbmQgc29tZSBXaUZpNiByYWRpb3MpLiAgSSBoYXZl IG5vIGRvdWJ0IHRoYXQgRmlXaSBjb3VsZCBnZXQgbW9yZSBvZiANCj4gdGhlIHRoZW9yZXRpY2Fs IHRocm91Z2hwdXQgZGVsaXZlcmVkIGF0IHRoZSBtYWMgbGF5ZXIuDQo+IA0KPiBEZWxpdmVyYWJs ZXMgYXJlIGFsbCB0aGF0IG1hdHRlciB0byBtZSBhbmQgSSB0aGluayB0byBidXllcnMgYW5kIHVz ZXJzLiANCj4gIEJlbmNobWFya3MgdGVzdCBkZWxpdmVyYWJsZXMgd2hpY2ggaXMgZ3JlYXQgYW5k IEknbSBhIHJvdXRpbmcgaXBlcmYqIA0KPiB1c2VyLiAgSXQncyBlbmdpbmVlcmluZydzIHByb2Js ZW0gdG8gZGV2ZWxvcCB0aGUgbmV4dCB0ZWNoICpBTkQqIA0KPiBzb2xpY2l0IGZ1bmRpbmcgdG8g ZG8gc28u