From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60069.outbound.protection.outlook.com [40.107.6.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 062CB3B29E for ; Mon, 4 Mar 2019 06:55:04 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=darbyshire-bryant.me.uk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G/8RHAn1zzIEgc9AZ50uKL1HG/ZVMbO30xcewGXRpYc=; b=pFyOjWMSoRLbGV3plmcGI1fmFRcPeRiYwTZ5O1WRtLd3tXYEhp0bMkkumnEqw8LssbZjbWSAA5S2Lw6tfk2/qVkjOiU0D61/+gMvev/KPNcWEygxzvzgj546fx/eYNY7nr0g458GSw1EDp8v4eUHW43n/YgrL8XC/WXgeS379MU= Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com (10.171.105.143) by VI1PR0302MB3390.eurprd03.prod.outlook.com (52.134.13.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.19; Mon, 4 Mar 2019 11:55:01 +0000 Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::a8fc:70f:5750:d2d8]) by VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::a8fc:70f:5750:d2d8%9]) with mapi id 15.20.1665.020; Mon, 4 Mar 2019 11:55:01 +0000 From: Kevin Darbyshire-Bryant To: =?utf-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= CC: Pete Heist , "cake@lists.bufferbloat.net" Thread-Topic: [Cake] Using firewall connmarks as tin selectors Thread-Index: AQHUzuE2G2xEsQ5GYEyzhQJ8ApV4l6X0jIqAgAVEzgCAAVxZgIAAJ58AgAAEvICAAApXgA== Date: Mon, 4 Mar 2019 11:55:01 +0000 Message-ID: <52F1A35A-9F57-40EC-AF9B-EC6D8BD376BE@darbyshire-bryant.me.uk> References: <1443315187.406067.1551301968084@webmail.strato.de> <000901d4cf15$27748ec0$765dac40$@gmail.com> <67E78212-F68E-4BD1-946D-F1830EEA2968@darbyshire-bryant.me.uk> <4D01FA8A-E732-49C8-A4E6-8EA453CFA80C@heistp.net> <87d0n6lwgw.fsf@toke.dk> In-Reply-To: <87d0n6lwgw.fsf@toke.dk> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=kevin@darbyshire-bryant.me.uk; x-originating-ip: [2a02:c7f:1240:ee00::dc83] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2de0352b-7d2e-4779-40e1-08d6a0983bac x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7027125)(7023125)(5600127)(711020)(4605104)(2017052603328)(7153060)(7193020); SRVR:VI1PR0302MB3390; x-ms-traffictypediagnostic: VI1PR0302MB3390: x-microsoft-exchange-diagnostics: =?utf-8?B?MTtWSTFQUjAzMDJNQjMzOTA7MjM6R1BOMFg2cHlUbVgzdmFHZS90aTg4NUor?= =?utf-8?B?R2o4VHBnSUU2SHF4bGl0VlJjNkRlUU1XckFmTmFOV2FMUi9sM0tMcWVJWEdL?= =?utf-8?B?dmllWDlBTWN4dUl3OEJXZldKbFNWdjZQdnlwaDBpeXMyRkFkaUpvcXA4TFh4?= =?utf-8?B?aGxVTFJ4alVkcWswRE0xR0hFTXIybnM5cyt6a1B5MW13V2RzeG82K1p2ZXYy?= =?utf-8?B?Z0REWVJCYWxtTk92b3h0b2p5ME0rRXk2Wm1LSDAzd28waHAxR1N2MVltOW0y?= =?utf-8?B?UFFnMU9wQ1FPUExROTlNeFpqOCtKRHVBcUpacmtTV3JWR2g3cTJWN3l4YzVo?= =?utf-8?B?WnRubnduOXpjTlZac1M4ZmMyRlg0aE1BQVJReGN6eFV6MHlkQ3AzZEpYYW52?= =?utf-8?B?Wnc4OEthbUN3YUdJaTJ2QkNNc2MxWmcvZ3k3YTRGcFVuUlF3ZVZGUUxYKzN4?= =?utf-8?B?cU5NSW1LRWtnT0NHNTY0c1JrWnlRYWw2NzJkU1pkSlpMdWdMeFBXZFliVXNz?= =?utf-8?B?cHc2RFdUYUR1d2kxeXNXS1JSRlF4cXpqZ2lUTE96QUNRaTg0SkhaVnlCVXo3?= =?utf-8?B?S3pIMGpxc0lNRU1tRUM0SXVucHBrbXM0Y1hDTlFiMFhlR1BPcEJyQ3kzaHds?= =?utf-8?B?M1NpT1djdFF3ZjNJS2VFaVBvSzZ0bFBVWnp3TkdrS3h5akxUcm82SUN1dUVW?= =?utf-8?B?RTFyYlg1dU83Tjh1M3lLQUdHZEhMVG1LUHNLSnkxWVprN1JpdnZpdU5ZSkcr?= =?utf-8?B?V1R3Wk1odUlScHkyajFDbTJHV1lQTnU0TFhoc1RrNjVlNmsveWRGTkVnSnhr?= =?utf-8?B?QnM2UjZrTllCemtZRUZnTGhuSjV6Und5TGNXbWVvd0F6Wis0QTBOSXlhK014?= =?utf-8?B?eDBZRUx4UnJKMVhZZm1HYkZvOUZ2NGRuM2ZLNyt3SUFqemp0ZDlpaU14cWht?= =?utf-8?B?U3N6bm13MzlKcDkzVFVLcWd6VFBpTUF2M1ovTWZsQnNoRmFlcFY0WVF3OGpj?= =?utf-8?B?eGZseWxNZ0tmdXM4L2RqMEt6TGkwait5L2krbThsdzlJT2VWZm1SajdGOXor?= =?utf-8?B?ZEVULy9PY0c1dm9PTjRkR1h4VVRjcHZocFFBQ2xIeXh6NFVHNHNuUUdKWFdp?= =?utf-8?B?ek5FdG54Umg3bjJSK3pwTWhwTjhJMDd1QTIzcGRrRTEwYVZheVJ2TVUwVUN1?= =?utf-8?B?c1hOczBXMHZZNG4vdDJEdllFemY2RTM5NG9NRVFlQ1JYK2NPcTZVR1dSamdo?= =?utf-8?B?WnJsT2tkTlNhWHRSY2tpa3NMaWtHNzRubE1wdythbzBPWERVMVpiaWhlTHpW?= =?utf-8?B?WGd1TU5QQ0VqSVVHaFV0MTNEQjNhMnVUdE1kd0ZlMGorS3N6V1hPV2pnQXh6?= =?utf-8?B?bXJIYm5xQ0Z1RVg0U0I5QmRzVFl1TTFDN3IzdnZRWXZYYzNKQ21pbGJIc3Ay?= =?utf-8?B?blcwQk5HdE5XV202bGNUdWNzN0dtYWpEdGJlWjY3SGwzdWRFL0dqcU1aelN0?= =?utf-8?B?TGJEQUsvWlZJUUFJM2h3NkpHTDU5bkJuSTUyam1ac1MzbktnMUdZN3IxNTd2?= =?utf-8?B?eEM2NnJxU0xhRkpUWDRUS2EzU0hCbUFrc3d3Uy9NLyt5MnhkUWc0VmQ3WTlW?= =?utf-8?B?V2JzUWVBS29JcVU4Rmx5N3ZBTHNwV1JPRTQwdDlScmc5WmJEQmVTYkdNZVF4?= =?utf-8?B?VEVsTWQ0MXh4TkdxRDloU09ZY0VTM3ViY1NOQ0c1Wll1ZDFsVUJNcGp0YTcw?= =?utf-8?B?ekdpTVJzMC9EellOMUVxNmlJZjFHa0tjM1RYck44ckx1NnZqSEJLdkMrNzZP?= =?utf-8?B?T0J4S3lyM0JHWFl6Z2Z0UmhhTVlnNHovZm5PenB6bWpFNTNybG16S01jSWk1?= =?utf-8?B?YU9EaXN6TkllT3dRbU5lQytMUG4zc2RZNG1iWW5iYWg2VUcwSGF1Y1V3V0Vn?= =?utf-8?Q?TA7zUZ4itncpz0KmunHaNGJh60SamJUY=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 09669DB681 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(979002)(396003)(39830400003)(366004)(136003)(376002)(346002)(199004)(189003)(25786009)(106356001)(305945005)(105586002)(446003)(54906003)(71190400001)(2616005)(53936002)(102836004)(186003)(7736002)(11346002)(93886005)(2906002)(36756003)(486006)(82746002)(68736007)(71200400001)(6512007)(83716004)(66574012)(6916009)(6116002)(508600001)(476003)(33656002)(99286004)(4326008)(316002)(81166006)(5660300002)(46003)(81156014)(30864003)(6246003)(8676002)(229853002)(86362001)(14444005)(5024004)(76176011)(53546011)(6436002)(6506007)(97736004)(6486002)(8936002)(74482002)(256004)(14454004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0302MB3390; H:VI1PR0302MB2750.eurprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: BBjPxbiIUDePJ5k6GEqra4NVTXLrN6aXRdLSvKwWY0Q47iD0CQzwO0d0RjG2/s1lVWFBlf5meWss7YNKSU3i5vOGaEVW2nu0Te5UAqYCC0DaKmqR8RkLfnqoekQxe45qTL4ZmSjp5C3RXYwAsxEBMaht6rUIG89pfayEyoXm7qLeYTl2LfSb07//D7El0WV+oXqNSWM2iLhL5Dl8q3WF0vVCMgZWUVNuNvRDpznxI+fP0NfUts+AVw9OhxJ0NY5Utv2LWHN74c7ola2VuansZB/EEF/9IEZD6J118bw8q0eRm1cqnbU9ZH4nJHRVovf57ZFDFQYrsZIHH1l7CorHcnVngW82i38JH6sT3/DYAS4vrXbLUNR8emsOra5NXGB6zly32TfnQZsCJ4yPn5qYfatpwnmfLJY+JaRwHZeICmI= Content-Type: text/plain; charset="utf-8" Content-ID: <6406380850A78A43AA7D54DE2270EE82@eurprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-Network-Message-Id: 2de0352b-7d2e-4779-40e1-08d6a0983bac X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Mar 2019 11:55:01.4059 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9151708b-c553-406f-8e56-694f435154a4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0302MB3390 Subject: Re: [Cake] Using firewall connmarks as tin selectors X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Mar 2019 11:55:04 -0000 DQoNCj4gT24gNCBNYXIgMjAxOSwgYXQgMTE6MTcsIFRva2UgSMO4aWxhbmQtSsO4cmdlbnNlbiA8 dG9rZUByZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+IEtldmluIERhcmJ5c2hpcmUtQnJ5YW50IDxr ZXZpbkBkYXJieXNoaXJlLWJyeWFudC5tZS51az4gd3JpdGVzOg0KPiANCj4+PiBPbiA0IE1hciAy MDE5LCBhdCAwODozOSwgUGV0ZSBIZWlzdCA8cGV0ZUBoZWlzdHAubmV0PiB3cm90ZToNCj4+PiAN Cj4+PiANCj4+Pj4gT24gTWFyIDMsIDIwMTksIGF0IDEyOjUyIFBNLCBLZXZpbiBEYXJieXNoaXJl LUJyeWFudCA8a2V2aW5AZGFyYnlzaGlyZS1icnlhbnQubWUudWs+IHdyb3RlOg0KPj4+PiANCj4+ Pj4gVGhlIHZlcnkgYmFkIGlkZWE6DQo+Pj4+IA0KPj4+PiBBbmQgaXTigJlzIGJhZCDigJhjb3Mg aXTigJlzIHNvcnQgb2YgaW5jb21wYXRpYmxlIHdpdGggdGhlIGV4aXN0aW5nIGZ3bWFyaw0KPj4+ PiBpbXBsZW1lbnRhdGlvbiBhcyBkZXNjcmliZWQgYWJvdmUuIFNvIGFuIGF3ZnVsIGxvdCBvZiBv dXINCj4+Pj4gc2hlbmFuaWdhbnMgYWJvdmUgaXMgZHVlIHRvIERTQ1Agbm90IHRyYXZlcnNpbmcg dGhlIGludGVybmV0DQo+Pj4+IHBhcnRpY3VsYXJseSB3ZWxsLiBUaGUgc29sdXRpb24gYWJvdmUg YWJzdHJhY3RzIERTQ1AgaW50byDigJl0aW5z4oCZDQo+Pj4+IHdoaWNoIHdlIHB1dCBpbnRvIGZ3 bWFya3MuIEFub3RoZXIgYXBwcm9hY2ggd291bGQgYmUgdG8gcHV0IHRoZSBEU0NQDQo+Pj4+ICpp bnRvKiB0aGUgZndtYXJrLiBDQUtFIGNvdWxkIChvcHRpb25hbGx5KSBjb3B5IHRoZSBGV01BUksg Y29udGFpbmVkDQo+Pj4+IERTQ1AgaW50byB0aGUgZGlmZnNlcnYgZmllbGQgb250byB0aGUgYWN0 dWFsIHBhY2tldHMuIFZvaWxhIERTQ1ANCj4+Pj4gdHJhdmVyc2FsIGFjcm9zcyDigJl0aW50ZXJu ZXQgd2l0aCB0aW4vYmFuZHdpZHRoIGFsbG9jYXRpb24gaW4gb3VyDQo+Pj4+IGxvY2FsIGRvbWFp biBwcmVzZXJ2ZWQuDQo+Pj4gDQo+Pj4gSWYgSSB1bmRlcnN0YW5kIGl0IHJpZ2h0LCBhbm90aGVy IHVzZSBjYXNlIGZvciB0aGlzIOKAnHZlcnkgYmFkIGlkZWHigJ0NCj4+PiBpcyBwcmVzZXJ2aW5n IERTQ1AgbG9jYWxseSB3aGlsZSB0cmF2ZXJzaW5nIHVwc3RyZWFtIFdpRmkgbGlua3MgYXMNCj4+ PiBiZXN0ZWZmb3J0LCB3aGljaCBhdm9pZHMgYWlydGltZSBlZmZpY2llbmN5IHByb2JsZW1zIHRo YXQgY2FuIG9jY3VyDQo+Pj4gd2l0aCA4MDIuMTFlIChXTU0pLiBJbiBjYXNlcyB3aGVyZSB0aGUg cm91dGVyIGNvbmZpZyBjYW7igJl0IGJlIGNoYW5nZWQNCj4+PiAoODAyLjExZSBpcyBtYW5kYXRv cnkgYWZ0ZXIgYWxsKSBJ4oCZdmUgdXNlZCBJUElQIHR1bm5lbHMgZm9yIHRoaXMsIGFzDQo+Pj4g aXQgaGlkZXMgRFNDUCBmcm9tIHRoZSBXaUZpIHN0YWNrIHdoaWxlIHByZXNlcnZpbmcgdGhlIHZh bHVlcyB0aHJvdWdoDQo+Pj4gdGhlIHR1bm5lbCwgYnV0IHRoaXMgd291bGQgYmUgZWFzaWVyLiBO ZWF04oCmIDopDQo+PiANCj4+IEV2ZXJ5b25lIGhhcyB1bmRlcnN0b29kIHRoZSBpbnRlbnQgJiBt YXliZSB0aGUgaW1wbGVtZW50YXRpb24NCj4+IGNvcnJlY3RseS4gMiBwYXRjaGVzIGF0dGFjaGVk LCBvbmUgZm9yIGNha2UsIG9uZSBmb3IgdGMuDQo+PiANCj4+IFRoZXkgYXJlIG5haXZlbHkgY29k ZWQgYW5kIHNvbWUgb2YgaXQgdW5kb2VzIFRva2XigJlzIHJlY2VudCB0aWR5aW5nIHVwDQo+PiAo c29ycnkhKQ0KPiANCj4gSGVoLiBGaXJzdCBjb21tZW50OiBEb24ndCBkbyB0aGF0IDspDQoNCkkg ZGlkIHNheSBuYWl2ZWx5IGNvZGVkLg0KDQo+IA0KPiBBIGZldyBtb3JlIGJlbG93Lg0KPiANCj4+ IDAxMkMgQUNCMiAyOEM2IEM1M0UgOTc3NSAgOTEyMyBCM0EyIDM4OUIgOURFMiAzMzRBDQo+PiBk aWZmIC0tZ2l0IGEvcGt0X3NjaGVkLmggYi9wa3Rfc2NoZWQuaA0KPj4gaW5kZXggYTJmNTcwYy4u ZDFmMjg4ZCAxMDA2NDQNCj4+IC0tLSBhL3BrdF9zY2hlZC5oDQo+PiArKysgYi9wa3Rfc2NoZWQu aA0KPj4gQEAgLTg3OSw2ICs4NzksNyBAQCBlbnVtIHsNCj4+IAlUQ0FfQ0FLRV9BQ0tfRklMVEVS LA0KPj4gCVRDQV9DQUtFX1NQTElUX0dTTywNCj4+IAlUQ0FfQ0FLRV9GV01BUkssDQo+PiArCVRD QV9DQUtFX0lDSU5HLA0KPj4gCV9fVENBX0NBS0VfTUFYDQo+PiB9Ow0KPj4gI2RlZmluZSBUQ0Ff Q0FLRV9NQVgJKF9fVENBX0NBS0VfTUFYIC0gMSkNCj4+IGRpZmYgLS1naXQgYS9zY2hfY2FrZS5j IGIvc2NoX2Nha2UuYw0KPj4gaW5kZXggNzMzYjg5Ny4uNWFjYTBmMyAxMDA2NDQNCj4+IC0tLSBh L3NjaF9jYWtlLmMNCj4+ICsrKyBiL3NjaF9jYWtlLmMNCj4+IEBAIC0yNzAsNyArMjcwLDggQEAg ZW51bSB7DQo+PiAJQ0FLRV9GTEFHX0lOR1JFU1MJICAgPSBCSVQoMiksDQo+PiAJQ0FLRV9GTEFH X1dBU0gJCSAgID0gQklUKDMpLA0KPj4gCUNBS0VfRkxBR19TUExJVF9HU08JICAgPSBCSVQoNCks DQo+PiAtCUNBS0VfRkxBR19GV01BUksJICAgPSBCSVQoNSkNCj4+ICsJQ0FLRV9GTEFHX0ZXTUFS SwkgICA9IEJJVCg1KSwNCj4+ICsJQ0FLRV9GTEFHX0lDSU5HCQkgICA9IEJJVCg2KQ0KPiANCj4g VGhpcyBpbXBsaWVzIHRoYXQgaWNpbmcgYW5kIGZ3bWFyayBjYW4gYmUgZW5hYmxlZCBjb21wbGV0 ZWx5DQo+IGluZGVwZW5kZW50bHkgb2YgZWFjaCBvdGhlci4gQXJlIHlvdSBzdXJlIGFib3V0IHRo ZSBzZW1hbnRpY3MgZm9yIHRoYXQ/DQoNCk5vLCBJ4oCZbSBub3QuICBJIHNlbnQgdGhlIHBhdGNo ZXMgc28gb3RoZXJzIGNvdWxkIHNlZSBteSBsdW5hY3kgaW4gYWN0aW9uIGFuZCBob3BlZnVsbHkg aW1wcm92ZSBpdC4NCg0KVGhlIGFjdHVhbCBvcGVyYXRpb24gbGlua3MgRldNQVJLLCBJTkdSRVNT ICYgSUNJTkcgaW4gYSB2YXJpZXR5IG9mIGNvbWJpbmF0aW9ucy4NCg0KPj4gfTsNCj4+IA0KPj4g LyogQ09CQUxUIG9wZXJhdGVzIHRoZSBDb2RlbCBhbmQgQkxVRSBhbGdvcml0aG1zIGluIHBhcmFs bGVsLCBpbiBvcmRlciB0bw0KPj4gQEAgLTMzMyw3ICszMzQsNyBAQCBzdGF0aWMgY29uc3QgdTgg ZGlmZnNlcnY4W10gPSB7DQo+PiB9Ow0KPj4gDQo+PiBzdGF0aWMgY29uc3QgdTggZGlmZnNlcnY0 W10gPSB7DQo+PiAtCTAsIDIsIDAsIDAsIDIsIDAsIDAsIDAsDQo+PiArCTAsIDEsIDAsIDAsIDIs IDAsIDAsIDAsDQo+PiAJMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCj4+IAkyLCAwLCAyLCAwLCAy LCAwLCAyLCAwLA0KPj4gCTIsIDAsIDIsIDAsIDIsIDAsIDIsIDAsDQo+PiBAQCAtMzQ0LDcgKzM0 NSw3IEBAIHN0YXRpYyBjb25zdCB1OCBkaWZmc2VydjRbXSA9IHsNCj4+IH07DQo+PiANCj4+IHN0 YXRpYyBjb25zdCB1OCBkaWZmc2VydjNbXSA9IHsNCj4+IC0JMCwgMCwgMCwgMCwgMiwgMCwgMCwg MCwNCj4+ICsJMCwgMSwgMCwgMCwgMiwgMCwgMCwgMCwNCj4gDQo+IFdoeSBhcmUgeW91IG1lc3Np bmcgd2l0aCB0aGUgZGlmZnNlcnYgbWFwcGluZ3MgaW4gdGhpcyBwYXRjaD8NCg0KVGhpcyBpcyBh IGNvbWJpbmF0aW9uIHBhdGNoIG9mIERhdmXigJlzIG5ldyBMRSBjb2RpbmcgYW5kIHRoZSBmd21h cmsvZHNjcCBtYW5nbGluZy4NCg0KPiANCj4+IAkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KPj4g CTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQo+PiAJMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCj4+ IEBAIC0xNjE4LDcgKzE2MTksMjQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBjYWtlX2Ryb3Aoc3Ry dWN0IFFkaXNjICpzY2gsIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSkNCj4+IAlyZXR1cm4gaWR4 ICsgKHRpbiA8PCAxNik7DQo+PiB9DQo+PiANCj4+IC1zdGF0aWMgdTggY2FrZV9oYW5kbGVfZGlm ZnNlcnYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHdhc2gpDQo+PiArdm9pZCBjYWtlX3VwZGF0 ZV9kaWZmc2VydihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBkc2NwKQ0KPj4gK3sNCj4+ICsJc3dp dGNoIChza2ItPnByb3RvY29sKSB7DQo+PiArCWNhc2UgaHRvbnMoRVRIX1BfSVApOg0KPj4gKwkJ aWYgKChpcHY0X2dldF9kc2ZpZWxkKGlwX2hkcihza2IpKSAmIH5JTkVUX0VDTl9NQVNLKSAhPSBk c2NwKQ0KPj4gKwkJCWlwdjRfY2hhbmdlX2RzZmllbGQoaXBfaGRyKHNrYiksIElORVRfRUNOX01B U0ssIGRzY3ApOw0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgaHRvbnMoRVRIX1BfSVBWNik6DQo+ PiArCQlpZiAoKGlwdjZfZ2V0X2RzZmllbGQoaXB2Nl9oZHIoc2tiKSkgJiB+SU5FVF9FQ05fTUFT SykgIT0gZHNjcCkNCj4+ICsJCQlpcHY2X2NoYW5nZV9kc2ZpZWxkKGlwdjZfaGRyKHNrYiksIElO RVRfRUNOX01BU0ssIGRzY3ApOw0KPj4gKwkJYnJlYWs7DQo+PiArCWRlZmF1bHQ6DQo+PiArCQli cmVhazsNCj4+ICsJfQ0KPj4gKw0KPj4gK30NCj4gDQo+IFNvIHdhc2hpbmcgaXMganVzdCBhIHNw ZWNpYWwgY2FzZSBvZiB0aGlzICh3YXNoIGlzDQo+IGNha2VfdXBkYXRlX2RpZmZzZXJ2KHNrYiww KSkuIFNvIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBhZGQgYW5vdGhlcg0KPiBmdW5jdGlvbiwganVz dCBhdWdtZW50IHRoZSBleGlzdGluZyBoYW5kbGluZyBjb2RlLg0KDQpFcm0sIHRoYXTigJlzIGV4 YWN0bHkgd2hhdCBJ4oCZdmUgZG9uZS4NCg0KPiANCj4+ICtzdGF0aWMgdTggY2FrZV9oYW5kbGVf ZGlmZnNlcnYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCB3YXNoKQ0KPj4gew0KPj4gCXU4IGRz Y3A7DQo+PiANCj4+IEBAIC0xNjQ0LDM3ICsxNjYyLDcwIEBAIHN0YXRpYyB1OCBjYWtlX2hhbmRs ZV9kaWZmc2VydihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgd2FzaCkNCj4+IAl9DQo+PiB9DQo+ PiANCj4+ICsjaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19ORl9DT05OVFJBQ0spDQo+IA0KPiBTYXZl IGFuIGlmZGVmIGJlbG93IGJ5IG1vdmluZyB0aGUgaWZkZWYgaW5zaWRlIHRoZSBmdW5jdGlvbiBk ZWZpbml0aW9uLg0KPiANCj4+ICt2b2lkIGNha2VfdXBkYXRlX2N0X21hcmsoc3RydWN0IHNrX2J1 ZmYgKnNrYiwgdTggZHNjcCkNCj4+ICt7DQo+PiArCWVudW0gaXBfY29ubnRyYWNrX2luZm8gY3Rp bmZvOw0KPj4gKwlzdHJ1Y3QgbmZfY29ubiAqY3Q7DQo+PiArDQo+PiArCWN0ID0gbmZfY3RfZ2V0 KHNrYiwgJmN0aW5mbyk7DQo+PiArCWlmICghY3QpDQo+PiArCQlyZXR1cm47DQo+PiArDQo+PiAr CWN0LT5tYXJrICY9IDB4ODBmZmZmZmY7DQo+PiArCWN0LT5tYXJrIHw9ICgweDQwIHwgZHNjcCkg PDwgMjQ7DQo+IA0KPiBSaWdodCwgc28gd2UgKm1pZ2h0KiBoYXZlIGFuIGFyZ3VtZW50IHRoYXQg cHV0dGluZyB0aGUgKnRpbiogaW50byB0aGUNCj4gZndtYXJrIGlzIENBS0UncyBidXNpbmVzcywg YnV0IGNvcHlpbmcgb3ZlciB0aGUgZHNjcCBtYXJrIGlzIG5vdA0KPiBzb21ldGhpbmcgYSBxZGlz YyBzaG91bGQgYmUgZG9pbmfigKYNCg0KV2h5IGV2ZXIgbm90PyAgSXTigJlzIG5vdCB0aGUgRFND UCwgaXTigJlzIGEgbG9va3VwIHZhbHVlIGludG8gdGhlIGNha2UgcHJpb3JpdHkgdGFibGUsIGl0 IGp1c3QgaGFwcGVucyB0byBsb29rIGxpa2UgdGhlIERTQ1AgOy0pDQoNCg0KPj4gKwluZl9jb25u dHJhY2tfZXZlbnRfY2FjaGUoSVBDVF9NQVJLLCBjdCk7DQo+PiArfQ0KPj4gKyNlbmRpZg0KPiAN Cj4gQWxzbywgYXJlIHlvdSBzdXJlIHRoaXMgd2lsbCB3b3JrIGluIGFsbCBwZXJtdXRhdGlvbnMg b2YgY29ubnRyYWNrIGJlaW5nDQo+IGEgbW9kdWxlIHZzIG5vdCBldGM/ICh3ZSBoYWQgdG8ganVt cCB0aHJvdWdoIHF1aXRlIHNvbWUgaG9vcHMgdG8gZ2V0IHRoZQ0KPiBjb25udHJhY2sgaG9va3Mg dG8gd29yayBsYXN0IHRpbWU7IHRoaXMgaXMgcHJvYmFibHkgbXkgYmlnZ2VzdCB3b3JyeSBoZXJl KS4NCg0KTm8sIEkgaGF2ZSBhYnNvbHV0ZWx5IG5vIGNsdWUgaGVyZSBhdCBhbGwuDQoNCj4gDQo+ PiBzdGF0aWMgc3RydWN0IGNha2VfdGluX2RhdGEgKmNha2Vfc2VsZWN0X3RpbihzdHJ1Y3QgUWRp c2MgKnNjaCwNCj4+IAkJCQkJICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPj4gew0KPj4gCXN0 cnVjdCBjYWtlX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7DQo+PiAtCXUzMiB0aW47 DQo+PiArCWJvb2wgd2FzaDsNCj4+IAl1OCBkc2NwOw0KPj4gKwl1OCB0aW47DQo+PiANCj4+IC0J LyogVGluIHNlbGVjdGlvbjogRGVmYXVsdCB0byBkaWZmc2Vydi1iYXNlZCBzZWxlY3Rpb24sIGFs bG93IG92ZXJyaWRpbmcNCj4+IC0JICogdXNpbmcgZmlyZXdhbGwgbWFya3Mgb3Igc2tiLT5wcmlv cml0eS4NCj4+IC0JICovDQo+PiAtCWRzY3AgPSBjYWtlX2hhbmRsZV9kaWZmc2Vydihza2IsDQo+ PiAtCQkJCSAgICBxLT5yYXRlX2ZsYWdzICYgQ0FLRV9GTEFHX1dBU0gpOw0KPj4gKwl3YXNoID0g ISEocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19XQVNIKTsNCj4+ICsNCj4+ICsJaWYgKHEtPnRp bl9tb2RlID09IENBS0VfRElGRlNFUlZfQkVTVEVGRk9SVCkgew0KPj4gDQo+PiAtCWlmIChxLT50 aW5fbW9kZSA9PSBDQUtFX0RJRkZTRVJWX0JFU1RFRkZPUlQpDQo+PiAJCXRpbiA9IDA7DQo+PiAr CQlpZiAod2FzaCkNCj4+ICsJCQljYWtlX3VwZGF0ZV9kaWZmc2Vydihza2IsIDApOw0KPj4gDQo+ PiAtCWVsc2UgaWYgKHEtPnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfRldNQVJLICYmIC8qIHVzZSBm dyBtYXJrICovDQo+PiAtCQkgc2tiLT5tYXJrICYmDQo+PiAtCQkgc2tiLT5tYXJrIDw9IHEtPnRp bl9jbnQpDQo+PiAtCQl0aW4gPSBxLT50aW5fb3JkZXJbc2tiLT5tYXJrIC0gMV07DQo+PiArCX0g ZWxzZSBpZiAoVENfSF9NQUooc2tiLT5wcmlvcml0eSkgPT0gc2NoLT5oYW5kbGUgJiYgLyogdXNl IHByaW9yaXR5ICovDQo+PiArCQkgICBUQ19IX01JTihza2ItPnByaW9yaXR5KSA+IDAgJiYNCj4+ ICsJCSAgIFRDX0hfTUlOKHNrYi0+cHJpb3JpdHkpIDw9IHEtPnRpbl9jbnQpIHsNCj4+IA0KPj4g LQllbHNlIGlmIChUQ19IX01BSihza2ItPnByaW9yaXR5KSA9PSBzY2gtPmhhbmRsZSAmJg0KPj4g LQkJIFRDX0hfTUlOKHNrYi0+cHJpb3JpdHkpID4gMCAmJg0KPj4gLQkJIFRDX0hfTUlOKHNrYi0+ cHJpb3JpdHkpIDw9IHEtPnRpbl9jbnQpDQo+PiAJCXRpbiA9IHEtPnRpbl9vcmRlcltUQ19IX01J Tihza2ItPnByaW9yaXR5KSAtIDFdOw0KPj4gKwkJaWYgKHdhc2gpDQo+PiArCQkJY2FrZV91cGRh dGVfZGlmZnNlcnYoc2tiLCAwKTsNCj4+ICsNCj4+ICsJfSBlbHNlIGlmIChxLT5yYXRlX2ZsYWdz ICYgQ0FLRV9GTEFHX0ZXTUFSSyAmJiAvKiB1c2UgZncgbWFyayAqLw0KPj4gKwkJICAgc2tiLT5t YXJrICYgMHg0MDAwMDAwMCkgew0KPj4gKw0KPj4gKwkJZHNjcCA9IHNrYi0+bWFyayA+PiAyNCAm IDB4M2Y7DQo+PiArCQl0aW4gPSBxLT50aW5faW5kZXhbZHNjcF07DQo+PiANCj4+IC0JZWxzZSB7 DQo+PiArCQlpZiAod2FzaCkNCj4+ICsJCQljYWtlX3VwZGF0ZV9kaWZmc2Vydihza2IsIDApOw0K Pj4gKwkJZWxzZSBpZiAocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JQ0lORykNCj4+ICsJCQlj YWtlX3VwZGF0ZV9kaWZmc2Vydihza2IsIGRzY3AgPDwgMik7DQo+PiArDQo+PiArCX0gZWxzZSB7 IC8qIGZhbGxiYWNrIHRvIERTQ1AgKi8NCj4+ICsJCS8qIGV4dHJhY3QgdGhlIERpZmZzZXJ2IFBy ZWNlZGVuY2UgZmllbGQsIGlmIGl0IGV4aXN0cyAqLw0KPj4gKwkJLyogYW5kIGNsZWFyIERTQ1Ag Yml0cyBpZiB3YXNoaW5nICovDQo+PiArCQlkc2NwID0gY2FrZV9oYW5kbGVfZGlmZnNlcnYoc2ti LCB3YXNoKTsNCj4+IAkJdGluID0gcS0+dGluX2luZGV4W2RzY3BdOw0KPiANCj4gQXMgSSBzYWlk IGFib3ZlLCBubyByZWFzb24gdG8gcmV2ZXJ0IHRoZSBjbGVhbnVwIGNvbW1pdOKApg0KPiANCj4+ IAkJaWYgKHVubGlrZWx5KHRpbiA+PSBxLT50aW5fY250KSkNCj4+IAkJCXRpbiA9IDA7DQo+PiAr DQo+PiArI2lmIElTX1JFQUNIQUJMRShDT05GSUdfTkZfQ09OTlRSQUNLKQ0KPj4gKwkJaWYgKHEt PnJhdGVfZmxhZ3MgJiBDQUtFX0ZMQUdfRldNQVJLICYmICEocS0+cmF0ZV9mbGFncyAmIENBS0Vf RkxBR19JTkdSRVNTKSkNCj4+ICsJCQljYWtlX3VwZGF0ZV9jdF9tYXJrKHNrYiwgZHNjcCk7DQo+ PiArI2VuZGlmDQo+IA0KPiBTZWUgYWJvdmUgYWJvdXQgbW92aW5nIHRoZSBpZmRlZiBhbmQgbG9z aW5nIHRoaXMgb25lLg0KDQpEb25lDQoNCj4gDQo+PiAJfQ0KPj4gDQo+PiAJcmV0dXJuICZxLT50 aW5zW3Rpbl07DQo+PiBAQCAtMjc2Myw2ICsyODE0LDEzIEBAIHN0YXRpYyBpbnQgY2FrZV9jaGFu Z2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwNCj4+IAkJCXEtPnJhdGVf ZmxhZ3MgJj0gfkNBS0VfRkxBR19GV01BUks7DQo+PiAJfQ0KPj4gDQo+PiArCWlmICh0YltUQ0Ff Q0FLRV9JQ0lOR10pIHsNCj4+ICsJCWlmICghIW5sYV9nZXRfdTMyKHRiW1RDQV9DQUtFX0lDSU5H XSkpDQo+PiArCQkJcS0+cmF0ZV9mbGFncyB8PSBDQUtFX0ZMQUdfSUNJTkc7DQo+PiArCQllbHNl DQo+PiArCQkJcS0+cmF0ZV9mbGFncyAmPSB+Q0FLRV9GTEFHX0lDSU5HOw0KPj4gKwl9DQo+PiAr DQo+PiAJaWYgKHEtPnRpbnMpIHsNCj4+IAkJc2NoX3RyZWVfbG9jayhzY2gpOw0KPj4gCQljYWtl X3JlY29uZmlndXJlKHNjaCk7DQo+PiBAQCAtMjk0Nyw2ICszMDA1LDEwIEBAIHN0YXRpYyBpbnQg Y2FrZV9kdW1wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPj4gCQkJ ISEocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19GV01BUkspKSkNCj4+IAkJZ290byBubGFfcHV0 X2ZhaWx1cmU7DQo+PiANCj4+ICsJaWYgKG5sYV9wdXRfdTMyKHNrYiwgVENBX0NBS0VfSUNJTkcs DQo+PiArCQkJISEocS0+cmF0ZV9mbGFncyAmIENBS0VfRkxBR19JQ0lORykpKQ0KPj4gKwkJZ290 byBubGFfcHV0X2ZhaWx1cmU7DQo+PiArDQo+PiAJcmV0dXJuIG5sYV9uZXN0X2VuZChza2IsIG9w dHMpOw0KPj4gDQo+PiBubGFfcHV0X2ZhaWx1cmU6DQo+PiBGcm9tIDAwZTkzYjBkYmJkZTEwYWNm YzhiYzBhMzc4N2NhNGQ2OTNmMGNjYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxDQo+PiBGcm9t OiBLZXZpbiBEYXJieXNoaXJlLUJyeWFudCA8bGRpckBkYXJieXNoaXJlLWJyeWFudC5tZS51az4N Cj4+IERhdGU6IFdlZCwgMjcgRmViIDIwMTkgMTQ6NDY6MDUgKzAwMDANCj4+IFN1YmplY3Q6IFtQ QVRDSF0gY2FrZTogYWRkIGZ3bWFyayAmIGljaW5nIG9wdGlvbnMNCj4+IA0KPj4gU2lnbmVkLW9m Zi1ieTogS2V2aW4gRGFyYnlzaGlyZS1CcnlhbnQgPGxkaXJAZGFyYnlzaGlyZS1icnlhbnQubWUu dWs+DQo+PiAtLS0NCj4+IGluY2x1ZGUvdWFwaS9saW51eC9wa3Rfc2NoZWQuaCB8ICAyICsrDQo+ PiBtYW4vbWFuOC90Yy1jYWtlLjggICAgICAgICAgICAgfCAxOSArKysrKysrKysrKysrKysrDQo+ PiB0Yy9xX2Nha2UuYyAgICAgICAgICAgICAgICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrDQo+PiAzIGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKykNCj4+ IA0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3Rfc2NoZWQuaCBiL2luY2x1 ZGUvdWFwaS9saW51eC9wa3Rfc2NoZWQuaA0KPj4gaW5kZXggMDFmOTYzNTIuLmYyYjFiMjcwIDEw MDY0NA0KPj4gLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9zY2hlZC5oDQo+PiArKysgYi9p bmNsdWRlL3VhcGkvbGludXgvcGt0X3NjaGVkLmgNCj4+IEBAIC05NTQsNiArOTU0LDggQEAgZW51 bSB7DQo+PiAJVENBX0NBS0VfSU5HUkVTUywNCj4+IAlUQ0FfQ0FLRV9BQ0tfRklMVEVSLA0KPj4g CVRDQV9DQUtFX1NQTElUX0dTTywNCj4+ICsJVENBX0NBS0VfRldNQVJLLA0KPj4gKwlUQ0FfQ0FL RV9JQ0lORywNCj4+IAlfX1RDQV9DQUtFX01BWA0KPj4gfTsNCj4+ICNkZWZpbmUgVENBX0NBS0Vf TUFYCShfX1RDQV9DQUtFX01BWCAtIDEpDQo+PiBkaWZmIC0tZ2l0IGEvbWFuL21hbjgvdGMtY2Fr ZS44IGIvbWFuL21hbjgvdGMtY2FrZS44DQo+PiBpbmRleCBlZGE0MzZlMS4uNjI2ZDQ1MjUgMTAw NjQ0DQo+PiAtLS0gYS9tYW4vbWFuOC90Yy1jYWtlLjgNCj4+ICsrKyBiL21hbi9tYW44L3RjLWNh a2UuOA0KPj4gQEAgLTczLDYgKzczLDEyIEBAIFRJTUUgfA0KPj4gXQ0KPj4gLmJyDQo+PiBbDQo+ PiArLkJSIGZ3bWFyaw0KPj4gK3wNCj4+ICsuQlIgbm9md21hcmsqDQo+PiArXQ0KPj4gKy5icg0K Pj4gK1sNCj4+IC5CUiBzcGxpdC1nc28qDQo+PiB8DQo+PiAuQlIgbm8tc3BsaXQtZ3NvDQo+PiBA QCAtNjIzLDYgKzYyOSwxOSBAQCBvdmVycmlkZSBtZWNoYW5pc207IGlmIGEgaG9zdCBJRCBpcyBh c3NpZ25lZCwgaXQgd2lsbCBiZSB1c2VkIGFzIGJvdGggc291cmNlIGFuZA0KPj4gZGVzdGluYXRp b24gaG9zdC4NCj4+IA0KPj4gDQo+PiArLlNIIE9WRVJSSURJTkcgQ0xBU1NJRklDQVRJT04gV0lU SCBORVRGSUxURVIgQ09OTk1BUktTDQo+PiArDQo+PiArSW4gYWRkaXRpb24gdG8gVEMgRklMVEVS IHRpbiBjbGFzc2lmaWNhdGlvbiwgZmlyZXdhbGwgbWFya3MgbWF5IGFsc28gb3B0aW9uYWxseQ0K Pj4gK2JlIHVzZWQuICBUaGUgcHJpb3JpdHkgb3JkZXIgKGhpZ2hlc3QgdG8gbG93ZXN0KSBmb3Ig dGluIHNlbGVjdGlvbiBpcyBUQyBmaWx0ZXIsDQo+PiArZmlyZXdhbGwgbWFyayBhbmQgdGhlbiBE U0NQLg0KPj4gKy5QUA0KPj4gKy5CIGZ3bWFyaw0KPj4gKw0KPj4gKy5icg0KPj4gKwlFbmFibGVz IENPTk5NQVJLIGJhc2VkIHRpbiBzZWxlY3Rpb24uIFZhbGlkIENPTk5NQVJLUyByYW5nZSBmcm9t IDEgdG8gdGhlDQo+PiArbWF4aW11bSBudW1iZXIgb2YgdGlucyBpLmUuIDMgdGlucyBmb3IgZGlm ZnNlcnYzLCA0IHRpbnMgZm9yIGRpZmZzZXJ2NC4NCj4+ICtWYWx1ZXMgb3V0c2lkZSB0aGUgdmFs aWQgcmFuZ2UgYXJlIGlnbm9yZWQgYW5kIENBS0Ugd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcNCj4+ ICtEU0NQIGZvciB0aW4gc2VsZWN0aW9uLg0KPiANCj4gVGhpcyBzaG91bGQgZG9jdW1lbnQgdGhl IG1hc2tpbmcgYW5kIHNoaWZ0aW5nLg0KDQpZZXMsIGFuZCB0aGUg4oCYaWNpbmfigJkgb3B0aW9u IGhvd2V2ZXIgdGhhdCB0dXJucyBvdXQuICBBZ2FpbiBpdOKAmXMgYSBjYXNlIG9mIHNoYXJpbmcg d2hhdCBJIGhhdmUgZm9yIG90aGVycyB0byB0ZXN0LCBwbGF5LCBpbXByb3ZlLg0KDQo+IA0KPiAN Cj4+IA0KPj4gLlNIIEVYQU1QTEVTDQo+PiAjIHRjIHFkaXNjIGRlbGV0ZSByb290IGRldiBldGgw DQo+PiBkaWZmIC0tZ2l0IGEvdGMvcV9jYWtlLmMgYi90Yy9xX2Nha2UuYw0KPj4gaW5kZXggZTgy N2UzZjEuLmZkYWZkM2I3IDEwMDY0NA0KPj4gLS0tIGEvdGMvcV9jYWtlLmMNCj4+ICsrKyBiL3Rj L3FfY2FrZS5jDQo+PiBAQCAtNzksNiArNzksOCBAQCBzdGF0aWMgdm9pZCBleHBsYWluKHZvaWQp DQo+PiAiICAgICAgICAgICAgICAgICAgZHVhbC1zcmNob3N0IHwgZHVhbC1kc3Rob3N0IHwgdHJp cGxlLWlzb2xhdGUqIF1cbiINCj4+ICIgICAgICAgICAgICAgICAgWyBuYXQgfCBub25hdCogXVxu Ig0KPj4gIiAgICAgICAgICAgICAgICBbIHdhc2ggfCBub3dhc2gqIF1cbiINCj4+ICsiICAgICAg ICAgICAgICAgIFsgaWNpbmcgfCBub2ljaW5nKiBdXG4iDQo+PiArIiAgICAgICAgICAgICAgICBb IGZ3bWFyayB8IG5vZndtYXJrKiBdXG4iDQo+IA0KPiBNdWNoIGFzIEkgYXBwcmVjaWF0ZSB0aGUg d29yZHBsYXksIEknbSBub3Qgc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGdvaW5nDQo+IHRvIGJlIHN1 cGVyIGhlbHBmdWwgZm9yIHNvbWV0aGluZyBqdXN0IHRyeWluZyB0byBtYWtlIHNlbnNlIG9mIHRo ZQ0KPiBjb21tYW5kIG91dHB1dC4gTm90IHN1cmUgSSBoYXZlIGEgYmV0dGVyIHN1Z2dlc3Rpb24s IHRob3VnaC4uLg0KPiANCj4gLVRva2UNCg0KDQpDaGVlcnMsDQoNCktldmluIEQtQg0KDQowMTJD IEFDQjIgMjhDNiBDNTNFIDk3NzUgIDkxMjMgQjNBMiAzODlCIDlERTIgMzM0QQ0KDQo=