From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTP id B29905A027B for ; Wed, 14 Feb 2024 11:24:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1707906285; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4pZ58DhX4DDIcfOU5nI0qQtmapkyJpk0KjmjRB3PQ4k=; b=ZQBVTgVFHLsc8s9ynDF7RdHNG5wHqjTKgVV5tXcx9kMPvptcQvrUJq3IBepd0GCvV6Hi7n SL+vE7K1GratwH+00hzCrgmnd8SHOrtl3YdZkSB73e2d4cUez+Tht7ryeMtexBslTh3Dxb elTub4jlXYMvpMhDtvWzLQSTvP+EHAk= Received: from mail-oi1-f199.google.com (mail-oi1-f199.google.com [209.85.167.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-251-krLfnihJNsG3v8yI7ocoMQ-1; Wed, 14 Feb 2024 05:24:44 -0500 X-MC-Unique: krLfnihJNsG3v8yI7ocoMQ-1 Received: by mail-oi1-f199.google.com with SMTP id 5614622812f47-3bd36b9fdafso6524591b6e.1 for ; Wed, 14 Feb 2024 02:24:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707906283; x=1708511083; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4pZ58DhX4DDIcfOU5nI0qQtmapkyJpk0KjmjRB3PQ4k=; b=bqhZlv0jsg2lueo86kUNSweXzyCZRR4c5y0hXMYj4kDyzCrQglZLD5ng5bGQOTS1Hn 1W32t5jbeVDiiZVeHQcy/SEc4QoMd4hoBR3leaNenrTjF2AjC6Ay0sEQ9JCFWYGJbYo1 Ong0jot3KcEIs7kEgkhm092k4oWGfmsaD9gV93qncivAr+qZ4XbYOU8ZYoJB2BVhNBSo 1LPg6Kc4mc6r1fk87SOk4NCzycsdYvEr/m8OEFFeDDUWvtBI35P47OY0i9bOdH7RL8sg jg4a8aLXY7ARJGhq5yAtqJ2ZvlOskcGK+IEsTqTpsnmiXqk05neTGcbxfGDrW229OxXr MP+g== X-Gm-Message-State: AOJu0YxPgfefO2o7EwwJIyzksELarjWX3pStMcE5RuNQ8ujVpPJaSx3G NeReDFlxX+l5svugsKqEj/IvUafkL+sbMgbEALlYo9zW1dmFuPHSnX8B7gS8/KQwP2bxf3KTP4J ik2V73GBeKUo29V9ZrmIhIzvN3wqmCThBrJ/rOY3RHZW2RuqKHw== X-Received: by 2002:a05:6808:bcc:b0:3be:5c44:b943 with SMTP id o12-20020a0568080bcc00b003be5c44b943mr2313007oik.47.1707906283643; Wed, 14 Feb 2024 02:24:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IFOTabkG15O+eJSB9DOJbfyCT1v4Zqrg9A8n/E9uojcwaRw/6vXI0AkK99YsGstL6kK3Gk0fw== X-Received: by 2002:a05:6808:bcc:b0:3be:5c44:b943 with SMTP id o12-20020a0568080bcc00b003be5c44b943mr2312988oik.47.1707906283112; Wed, 14 Feb 2024 02:24:43 -0800 (PST) Received: from [192.168.188.25] ([80.243.52.134]) by smtp.gmail.com with ESMTPSA id x8-20020a05622a000800b0042c6c103f7bsm1888379qtw.37.2024.02.14.02.24.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 14 Feb 2024 02:24:42 -0800 (PST) Message-ID: Date: Wed, 14 Feb 2024 11:24:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pasta does not correctly handle bind errors with port ranges To: Stefano Brivio References: <20240209220939.2f477a76@elisabeth> <20240212151331.277ef9fd@elisabeth> <6f64c0df-3b96-453a-a3a7-8a3fb2c1d70c@redhat.com> <20240212175632.5ec08dd6@elisabeth> <20240214101543.6202c69e@elisabeth> From: Paul Holzinger In-Reply-To: <20240214101543.6202c69e@elisabeth> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: JXBEEY2XEECEDPC6Y6GNHJF5OTUYJVUR X-Message-ID-Hash: JXBEEY2XEECEDPC6Y6GNHJF5OTUYJVUR X-MailFrom: pholzing@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQpPbiAxNC8wMi8yMDI0IDEwOjE1LCBTdGVmYW5vIEJyaXZpbyB3cm90ZToNCj4gT24gTW9uLCAx MiBGZWIgMjAyNCAxNzo1NjozMiArMDEwMA0KPiBTdGVmYW5vIEJyaXZpbyA8c2JyaXZpb0ByZWRo YXQuY29tPiB3cm90ZToNCj4NCj4+IE9uIE1vbiwgMTIgRmViIDIwMjQgMTU6NDM6MDAgKzAxMDAN Cj4+IFBhdWwgSG9semluZ2VyIDxwaG9semluZ0ByZWRoYXQuY29tPiB3cm90ZToNCj4+DQo+Pj4g T24gMTIvMDIvMjAyNCAxNToxMywgU3RlZmFubyBCcml2aW8gd3JvdGU6DQo+Pj4+IE9uIE1vbiwg MTIgRmViIDIwMjQgMTI6NDU6MDAgKzAxMDANCj4+Pj4gUGF1bCBIb2x6aW5nZXIgPHBob2x6aW5n QHJlZGhhdC5jb20+IHdyb3RlOg0KPj4+PiAgICAgDQo+Pj4+PiBIaSBTdGVmYW5vLA0KPj4+Pj4N Cj4+Pj4+IE9uIDA5LzAyLzIwMjQgMjI6MDksIFN0ZWZhbm8gQnJpdmlvIHdyb3RlOg0KPj4+Pj4+ IEhpIFBhdWwsDQo+Pj4+Pj4NCj4+Pj4+PiBPbiBGcmksIDkgRmViIDIwMjQgMTc6NTc6MDUgKzAx MDANCj4+Pj4+PiBQYXVsIEhvbHppbmdlciA8cGhvbHppbmdAcmVkaGF0LmNvbT4gd3JvdGU6DQo+ Pj4+Pj4gICAgICAgIA0KPj4+Pj4+PiBIaSBhbGwsDQo+Pj4+Pj4+IEkgZm91bmQgc29tZSBpc3N1 ZXMgd2l0aCB0aGUgcGFzdGEgcG9ydCBiaW5kaW5nIGxvZ2ljLCBpdCBkb2VzIG5vdA0KPj4+Pj4+ PiBjb3JyZWN0bHkgaGFuZGxlIGVycm9ycyB3aGVuIHRyeWluZyB0byBiaW5kIGEgcG9ydCByYW5n ZS4NCj4+Pj4+Pj4gTGV0J3MgZmlyc3QgYmluZCBhIHBvcnQgc28gd2UgY2FuIGZvcmNlIGFuIGVy cm9yIGNvbmRpdGlvbiBpdDoNCj4+Pj4+Pj4gJCBuYyAtbCAtcCA4MDgwICYNCj4+Pj4+Pj4gJCBw YXN0YSAtdCA4MDgwwqAgdHJ1ZQ0KPj4+Pj4+PiBGYWlsZWQgdG8gYmluZCBhbnkgcG9ydCBmb3Ig Jy10IDgwODAnLCBleGl0aW5nIDwtLSBmYWlscyBhcyBleHBlY3RlZA0KPj4+Pj4+PiAkIHBhc3Rh IC10IDgwODEgLXQgODA4MMKgIHRydWUNCj4+Pj4+Pj4gRmFpbGVkIHRvIGJpbmQgYW55IHBvcnQg Zm9yICctdCA4MDgwJywgZXhpdGluZyA8LS0gaGVyZSBpdCBhbHNvIGZhaWxzDQo+Pj4+Pj4+IGNv cnJlY3RseQ0KPj4+Pj4+PiAkIHBhc3RhIC10IDgwODAtODA4McKgIHRydWUNCj4+Pj4+Pj4gPC0t IG5vIGVycm9yIGV2ZW4gdGhvdWdoIHBhc3RhIGNvdWxkIG5vdCBiaW5kIDgwODANCj4+Pj4+PiBU aGlzIGlzIGFjdHVhbGx5IGludGVuZGVkOiBpdCBvbmx5IGZhaWxzIGlmIGl0IGNhbid0IGJpbmQg KmFueSogcG9ydCBpbg0KPj4+Pj4+IGEgZ2l2ZW4gcmFuZ2UsIHNvIHRoYXQgdXNlcnMgZG9uJ3Qg aGF2ZSB0byBleHBsaWNpdGx5IGV4Y2x1ZGUgcG9ydHMNCj4+Pj4+PiBmcm9tIHJhbmdlcyBpbiBj YXNlIHNvbWUgYXJlIGFscmVhZHkgdGFrZW4sIGtub3dpbmdseSBvciBub3QuIFRoYXQncw0KPj4+ Pj4+IHdoeSB0aGUgZXJyb3IgbWVzc2FnZSBzYXlzICJhbnkgcG9ydCIuDQo+Pj4+PiBPayBidXQg dGhpcyByZXN1bHRzIGluIGEgdmVyeSBpbmNvbnNpc3RlbnQgYmVoYXZpb3IuIEkgYXJndWUgdGhp cyBpcyBub3QNCj4+Pj4+IHdoYXQgYSBub3JtYWwgdXNlciBleHBlY3RzIGF0IGFsbC4NCj4+Pj4g VGhpcyByZWFsbHkgZGVwZW5kcyBvbiB0aGUgdXNlci4gVGhlIG1haW4gdXNhZ2UgYmVoaW5kIHRo ZSBjdXJyZW50DQo+Pj4+IGJlaGF2aW91ciBpcyB0aGUgImFsbCIgZm9yd2FyZGluZyBtb2RlLCBh cyBvcmlnaW5hbGx5IGRlc2lnbmVkIGZvcg0KPj4+PiBLdWJlVmlydCwgbm93IGF2YWlsYWJsZSB2 aWEgbGlidmlydCBpbiB0d28gZm9ybXM6IC10IGFsbCAvIC11IGFsbCwgb3INCj4+Pj4gZ2l2aW5n IGV4Y2x1ZGVkIHJhbmdlcyBvbmx5IChmcm9tIHRoZSBtYW4gcGFnZTogIlNwZWNpZnlpbmcgZXhj bHVkZWQNCj4+Pj4gcmFuZ2VzIG9ubHkgaW1wbGllcyB0aGF0IGFsbCBvdGhlciBwb3J0cyBhcmUg Zm9yd2FyZGVkLiIpLg0KPj4+Pg0KPj4+PiBBdCBsZWFzdCB0aGlzIHBhcnQsIHNwZWNpZmljYWxs eSwgaXMgYW4gZXN0YWJsaXNoZWQgYmVoYXZpb3VyIGFuZCB3ZQ0KPj4+PiBjYW4ndCBicmVhayBp dC4NCj4+Pj4NCj4+Pj4gQnV0IHRoYXQncyBub3QgYSBzdWJzdGFudGlhbCBjb25mbGljdCB3aXRo IHdoYXQgeW91J3JlIGFza2luZyBmb3INCj4+Pj4gUG9kbWFuOiB3ZSBjYW4ga2VlcCB0aGlzIGJl aGF2aW91ciBvbmx5IGlmIHRoZSB1c2VyIGFza3MgdG8gZm9yd2FyZA0KPj4+PiAoYWxtb3N0KSAi YWxsIiB0aGUgcG9ydHMgKGluIHdoYXRldmVyIHdheSkuIEFuZCBQb2RtYW4gbmV2ZXIgYXNrcyBm b3INCj4+Pj4gdGhhdCwgYW5kIHByb2JhYmx5IG5ldmVyIHdpbGwuDQo+Pj4+ICAgICANCj4+Pj4+ IEl0IGlzIG5vdCBldmVuIGRvY3VtZW50ZWQgaW4gdGhlIG1hbiBwYWdlLg0KPj4+PiBSaWdodCwg eWVzLCB3ZSdsbCBuZWVkIHRvIGRlc2NyaWJlIGl0Lg0KPj4+PiAgICAgDQo+Pj4+Pj4gRm9yIHR3 byBwb3J0cyBpdCBwcm9iYWJseSBtYWtlcyBubyBzZW5zZSwgYnV0IGZvciBsYXJnZXIgcmFuZ2Vz DQo+Pj4+Pj4gZXhjbHVkaW5nIGRvemVucyBvZiBwb3J0cyBjYW4gZ2V0IHF1aXRlIGFubm95aW5n IGZvciB0aGUgdXNlci4gQW5kDQo+Pj4+Pj4gd2FybmluZ3Mgb24gZmFpbGVkIGJpbmQoKSBjYWxs cyBjb3VsZCBnZXQgcXVpdGUgbm9pc3ksIHRvby4NCj4+Pj4+IEF0IHRoZSBzYW1lIHRpbWUgdGhp cyBjYW4gcmVzdWx0IGluIGEgbG90IG9mIHVuZXhwZWN0ZWQgcHJvYmxlbXMgZm9yDQo+Pj4+PiB1 c2VycyBhcyBpdCBqdXN0IGhpZGVzIHBvdGVudGlhbCBwcm9ibGVtcywgYXNzdW1pbmcgODAwMS05 MDAwIGFyZQ0KPj4+Pj4gYWxyZWFkeSBpbiB1c2UgdGhlbiAtdCA4MDAwLTkwMDAgd291bGQgd29y ayBhbmQgdGhlbiBvbmUgbWlnaHQNCj4+Pj4+IHJlYXNvbmFibHkgZXhwZWN0IHRoYXQgaWYgdGhl eSBjb25uZWN0IHRvIGFueSBvZiB0aGUgZ2l2ZW4gcG9ydHMgdGhleQ0KPj4+Pj4gdGFsayB0byB0 aGUgcGFzdGEgbmFtZXNwYWNlIGFuZCBub3Qgc29tZXRoaW5nIGVsc2UsIHRoaXMgY291bGQgYmUg YQ0KPj4+Pj4gc2VjdXJpdHkgY29uY2Vybi4gSSB3b3VsZCBzYXkgaW4gc3VjaCBjYXNlIHllcyBJ IHdhbnQgdG8gc2VlIGEgbG9nZ2VkDQo+Pj4+PiBlcnJvciBmb3IgZWFjaCBpbmRpdmlkdWFsIHBv cnQuDQo+Pj4+IEkgc2VlLCBidXQgYWdhaW4sIGlmIGp1c3QgcG9ydCA4MDA1IGlzIG5vdCBhdmFp bGFibGUsIHlvdSBtaWdodCBzYXkNCj4+Pj4gdGhhdCBoYXZpbmcgcGFzdGEgc3VjY2VlZCBpcyBh IHNlY3VyaXR5IGNvbmNlcm4gYmVjYXVzZSBzb21lYm9keSBjYW4NCj4+Pj4gInN0ZWFsIiB0aGUg cG9ydCwgb3IgdGhhdCBoYXZpbmcgcGFzdGEgZmFpbCBpcyBhIG51aXNhbmNlIGJlY2F1c2UgdGhl DQo+Pj4+IHVzZXIgcHJvYmFibHkganVzdCB3YW50ZWQgdG8gZm9yd2FyZCB0aGUgcmVtYWluaW5n IDEwMDAgcG9ydHMsIGFuZA0KPj4+PiBncmFjZWZ1bCBkZWdyYWRhdGlvbiB3b3VsZCBiZSBkZXNp cmFibGUgaW5zdGVhZC4NCj4+Pj4NCj4+Pj4gSXQncyBwcmV0dHkgaW1wb3NzaWJsZSB0byBkcmF3 IGEgbGluZSBpbiBhIGRpZmZlcmVudCB3YXkgdGhhdCdzIG5vdA0KPj4+PiBjb25zaWRlcmVkIGlu Y29uc2lzdGVudCBvciBpbmNvbnZlbmllbnQgYnkgc29tZS4gU286DQo+Pj4gWWVhaCBJIHVuZGVy c3RhbmQgdGhhdCwgSSBndWVzcyBJIGp1c3QgYW0gbWlzc2luZyB0aGUgdXNlIGNhc2Ugb2YNCj4+ PiBmb3J3YXJkaW5nIGxhcmdlIHBvcnQgcmFuZ2VzIGluIGdlbmVyYWwgYXMgSSBkb24ndCB1bmRl cnN0YW5kIGhvdyBpdCBpcw0KPj4+IHVzZWQgaW4gcHJhY3RpY2UuIEFzIGFuIGFwcGxpY2F0aW9u IGluc2lkZSB0aGUgVk0vY29udGFpbmVyIHRoYXQganVzdA0KPj4+IGJpbmRzIGEgcG9ydCBpdCBo YXMgbm8ga25vd2xlZGdlIHdoZW5ldmVyIHBhc3N0L3Bhc3RhIGZvcndhcmRlZCB0aGUgcG9ydA0K Pj4+IHNvIGlmIGl0IGhhcHBlbnMgdG8gdXNlIG9uZSB0aGF0IHdhcyBza2lwcGVkIGJlY2F1c2Ug aXQgd2FzIGFscmVhZHkgdXNlZA0KPj4+IG9uIHRoZSBob3N0IGl0IGp1c3Qgd29uJ3QgZ2V0IGV4 dGVybmFsIGNvbm5lY3Rpb25zLg0KPj4gVGhlICJob3N0IiBjb3VsZCBiZSBhIHZlcnkgY29udHJv bGxlZCBlbnZpcm9ubWVudCwgc3VjaCBhcyBhIGRlZGljYXRlZA0KPj4gbmV0d29yayBuYW1lc3Bh Y2UsIHNheSBhIEt1YmVybmV0ZXMgcG9kLiBPbmUgZXhhbXBsZSBJIGhhdmUgZnJlc2ggaW4NCj4+ IG1pbmQsIEt1YmVWaXJ0IHdpdGggSXN0aW86DQo+Pg0KPj4gICAgaHR0cHM6Ly9rdWJldmlydC5p by91c2VyLWd1aWRlL3ZpcnR1YWxfbWFjaGluZXMvaXN0aW9fc2VydmljZV9tZXNoLw0KPj4NCj4+ IFNlcnZpY2UgbWVzaGVzIGFyZSB1c3VhbGx5IGltcGxlbWVudGVkIGJ5IC8gZGVzaWduZWQgZm9y IGNvbnRhaW5lcnMuIElmDQo+PiB5b3UgbW92ZSBzb21lIHBhcnRzIChpbXBsZW1lbnRpbmcgYSBu dW1iZXIgb2Ygc2VydmVycykgdG8gYSB2aXJ0dWFsDQo+PiBtYWNoaW5lLCB0aGV5IGRvbid0IGV4 cGVjdCB0byBnZXQgYW55IGNvbm5lY3Rpb24gdG8gdGhlIHBvcnRzIHRoYXQgYXJlDQo+PiBub3Jt YWxseSB0YWtlbiBvbiB0aGUgaG9zdCwgYnV0IGFueXRoaW5nIGVsc2UgaXMgbGVnaXRpbWF0ZS4N Cj4+DQo+Pj4gSSBndWVzcyB0aGUgYW5zd2VyIGZvciB0aGF0IGlzIHVzZXIgZXJyb3IvcHJvYmxl bS4NCj4+IEluIHNvbWUgc2Vuc2UsIHllcy4gTWluZCB0aGF0IHdlIGhhdmUgYXV0b21hdGljIGFu ZCBzb21ld2hhdCBhYnN0cmFjdGVkDQo+PiB1c2VycywgdG9vLCB3aGljaCBpcyBub3Qgc28gbXVj aCB0aGUgZm9jdXMgZm9yIFBvZG1hbi4NCj4+DQo+Pj4+Pj4gSWYgaXQncyBhIHByb2JsZW0gZm9y IFBvZG1hbiwgSSBjYW4gdGhpbmsgb2YgdHdvIHNvbHV0aW9ucy4gT25lIHdvdWxkDQo+Pj4+Pj4g YmUgYW4gb3B0aW9uIHN1Y2ggYXMgLS1zdHJpY3QtYmluZCBvciBzdWNobGlrZSAoYmV0dGVyIG5h bWVzIHdhcm1seQ0KPj4+Pj4+IHdlbGNvbWUpLg0KPj4+Pj4gSXQgaXMgYSBiaWcgcHJvYmxlbSBm b3IgcG9kbWFuIGFzIGl0IGRvZXMgbm90IGRvIHdoYXQgdXNlcnMgd2FudCB1cyB0bw0KPj4+Pj4g ZG8uIEFsc28sIGJlY2F1c2UgcG9kbWFuIGlzIHNtYXJ0IGVub3VnaCB0byBjb21iaW5lIHNldmVy YWwgcG9ydHMgaW50bw0KPj4+Pj4gcmFuZ2VzIGludGVybmFsbHkgZm9yIHBlcmZvcm1hbmNlIHJl YXNvbnMsIHNvbWV0aGluZyBsaWtlIC1wIDgwOjgwIC1wDQo+Pj4+PiA4MTo4MSBpcyBhbHdheXMg YSByYW5nZSBmb3IgcG9kbWFuIHRodXMgdGhlcmUgaXMgbm8gd2F5IGZvciBwb2RtYW4gdXNlcnMN Cj4+Pj4+IHRvIGF2b2lkIGhpdHRpbmcgdGhpcyBwcm9ibGVtLiBBbiBvcHQtaW4gb3B0aW9uIHdv cmtzIGZvciBtZSBidXQgdGhlbiB3ZQ0KPj4+Pj4gbmVlZCB0byBidW1wIHRoZSBtaW5pbXVtIHBh c3RhIHJlcXVpcmVtZW50IHZlcnNpb24gZm9yIHBvZG1hbiB3aGljaCBpcyBhDQo+Pj4+PiBiaXQg YW5ub3lpbmcgYXMgSSB3b3VsZCBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIHZlcnNpb25zIGxhbmRz IGluIG91ciBDSS4NCj4+Pj4gLi4ud291bGQgcHJvYmluZyBmb3IgdGhlIG9wdGlvbiBiZSBhIHBv c3NpYmlsaXR5PyBUaGF0IGlzLCBydW4gJ3Bhc3RhDQo+Pj4+IC0tc3RyaWN0LWJpbmQnLCBhbmQg aWYgaXQgZmFpbHMsIGxvZyBhIHdhcm5pbmcgYW5kIGNvbnRpbnVlIHdpdGhvdXQgdGhlDQo+Pj4+ IG9wdGlvbi4NCj4+Pj4NCj4+Pj4gSWYgdGhhdCdzIHRvbyBjdW1iZXJzb21lLCB0aGVuIEkgd291 bGQgc2tpcCB0aGUgbmV3IG9wdGlvbiBhbmQgY2hhbmdlDQo+Pj4+IGl0IHRvIHNpbXBseSBmYWls IGlmIHdlIGNhbid0IGJpbmQgYSBzaW5nbGUgcG9ydCAoYW5kIHJlcG9ydCB0aGUgc2luZ2xlDQo+ Pj4+IGVycm9yIHJpZ2h0IGF3YXkpLCB1bmxlc3MgdGhlIHVzZXIgcmVxdWVzdHMgdG8gZm9yd2Fy ZCAiYWxtb3N0IGFsbCIgdGhlDQo+Pj4+IHBvcnRzLCBpbiB3aGljaCBjYXNlIHdlIGNvdWxkIHBy b2JhYmx5IHdhcm4oKSB3aXRoIGEgbGlzdCBvZiB0aGUgcG9ydHMNCj4+Pj4gdGhhdCB3ZSBjb3Vs ZG4ndCBiaW5kLg0KPj4+IEkgYW0gZmluZSB3aXRoIGFuIG9wdCBpbiBvcHRpb24sIGl0IGp1c3Qg bWVhbnMgdGhhdCBJIHdpbGwgbmVlZCB0byB3YWl0DQo+Pj4gYSBiaXQgdW50aWwgdGhlIHBhc3N0 IHBhY2thZ2UgbGFuZGVkIGluIGZlZG9yYSBhbmQgb3VyIENJIGltYWdlcyBiZWZvcmUNCj4+PiBJ IGNhbiBpbXBsZW1lbnQgaXQuIFJldHJ5aW5nIHdpdGhvdXQgdGhhdCBvcHRpb24gaXMgYSBnb29k IGlkZWEgYnV0IEkNCj4+PiByYXRoZXIganVzdCBtYWtlIGEgY2xlYW4gcmVxdWlyZW1lbnQgb2Yg dmVyc2lvbiB4eHggdG8gbm90IGNvbXBsaWNhdGUNCj4+PiB0aGUgcG9kbWFuIGNvZGUuIFdlIGFy ZSBpbiBwcm9jZXNzIG9mIGZpbmFsaXppbmcgUG9kbWFuIDUuMCByaWdodCBub3cgc28NCj4+PiBp ZiBzdWNoIG9wdGlvbiBjb3VsZCBiZSBpbXBsZW1lbnRlZCB3aXRoaW4gdGhlIG5leHQgMi0zIHdl ZWtzIHRoYXQgd291bGQNCj4+PiBiZSBncmVhdCBhbmQgSSBjYW4gYWRkIGEgbm90ZSB0aGUgd2Ug cmVxdWlyZSBwYXNzdCB2ZXJzaW9uIFhYWCBub3cgYXMNCj4+PiBwYXJ0IG9mIDUuMCBhbmQgbWFr ZSBpdCB0aGUgcGFja2FnZXJzIHJlc3BvbnNpYmlsaXR5IHRvIHByb3ZpZGUgdGhhdC4NCj4+IE9r YXksIGdyZWF0LiBJJ2xsIHNlbmQgYSBwYXRjaCBpbiBhIGJpdC4NCj4gQWZ0ZXIgdGhpbmtpbmcg YWJvdXQgaXQgYSBiaXQgZnVydGhlcjogYWRkaW5nIHlldCBhIG5ldyBvcHRpb24gZG9lc24ndA0K PiBtYWtlIGEgbG90IG9mIHNlbnNlIGlmIGFsbCB3ZSB3YW50IHRvIHByZXNlcnZlIGlzIHRoZSBl c3RhYmxpc2hlZA0KPiBiZWhhdmlvdXIgZm9yIC10IC8gLXUgYWxsLCBhbmQgd2hpbGUgd2UgY2Fu IGRvY3VtZW50IGV2ZXJ5dGhpbmcsIGl0DQo+IG1ha2VzIHRoaW5ncyBldmVuIG1vcmUgY29udm9s dXRlZCAoYW5kIGhhcmRlciB0byBkb2N1bWVudCkuDQo+DQo+IEluIHRoZSAnYWxsJyBjYXNlLCBv ciB3aXRoIGV4Y2x1ZGVkIHJhbmdlcyBvbmx5LCB3ZSdyZSB2ZXJ5IGxpa2VseSB0bw0KPiBmYWls IHRvIGJpbmQgc29tZSBwb3J0cywgYW5kIHRoZSB1c2VyIGNhbiB2ZXJ5IHJlYXNvbmFibHkgZXhw ZWN0IGl0LCBzbw0KPiB3ZSBjYW4gaGF2ZSBhIGRpZmZlcmVudCBiZWhhdmlvdXIgZm9yIHRob3Nl IHR5cGVzIG9mIHBvcnQgZm9yd2FyZGluZw0KPiBzcGVjaWZpZXJzIGFuZCBkb2N1bWVudCBpdC4g SXQgYWN0dWFsbHkgbWFrZXMgdGhlIGNvZGUgc2hvcnRlciwgcGVyaGFwcw0KPiBzaW1wbGVyLg0K Pg0KPiBJbiBhbnkgb3RoZXIgY2FzZSwgd2UnbGwgZmFpbCBhcyB5b3Ugc3VnZ2VzdGVkIGFuZCBy ZXBvcnQgdGhlIGVycm9yLiBJZg0KPiB0aGUgdXNlciB3YW50cyB0byBoYXZlIHRoaXMgc2FtZSBi ZWhhdmlvdXIgZm9yIC10IGFsbCwgdGhleSBjYW4gYWxzbw0KPiB3cml0ZSBpdCBhcyAtdCAwLTY1 NTM1IC0tIHRoYXQncyBhIHJhdGhlciBjbGVhciBpbmRpY2F0aW9uIHRoYXQgdGhleQ0KPiB3YW50 IHRvIGJpbmQgKmFsbCogdGhlIHBvcnRzLg0KPg0KPiBXaXRoIHRoZSBwYXRjaCBJIGp1c3QgcG9z dGVkOg0KPg0KPiAgICAkIGNhdCAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfdW5wcml2aWxlZ2VkX3Bv cnRfc3RhcnQNCj4gICAgMjENCj4gICAgJCAuL3Bhc3N0IC10IDIwDQo+ICAgIEZhaWxlZCB0byBi aW5kIHBvcnQgMjAgKFBlcm1pc3Npb24gZGVuaWVkKSBmb3Igb3B0aW9uICctdCAyMCcsIGV4aXRp bmcNCj4gICAgJCAuL3Bhc3N0IC10IDIwLTUwMDANCj4gICAgRmFpbGVkIHRvIGJpbmQgcG9ydCAy MCAoUGVybWlzc2lvbiBkZW5pZWQpIGZvciBvcHRpb24gJy10IDIwLTUwMDAnLCBleGl0aW5nDQo+ ICAgICQgLi9wYXNzdCAtdCAyMyAtdCAxOA0KPiAgICBGYWlsZWQgdG8gYmluZCBwb3J0IDE4IChQ ZXJtaXNzaW9uIGRlbmllZCkgZm9yIG9wdGlvbiAnLXQgMTgnLCBleGl0aW5nDQo+ICAgICQgLi9w YXNzdCAtdCAyMi0yMw0KPiAgICBGYWlsZWQgdG8gYmluZCBwb3J0IDIyIChBZGRyZXNzIGFscmVh ZHkgaW4gdXNlKSBmb3Igb3B0aW9uICctdCAyMi0yMycsIGV4aXRpbmcNCj4NCj4gYnV0Og0KPg0K PiAgICAkIC4vcGFzc3QgLXQgfjAsfjIxLTY1NTM1DQo+ICAgIEZhaWxlZCB0byBiaW5kIGFueSBw b3J0IGZvciAnLXQgfjAsfjIxLTY1NTM1JywgZXhpdGluZw0KPg0KPiBiZWNhdXNlIHRoaXMgYXBw cm94aW1hdGVzIHRoZSAtdCBhbGwgYmVoYXZpb3VyLCBtaW51cyBzb21lIHBvcnRzLg0KPg0KPiBM ZXQgbWUga25vdyBpZiB0aGlzIHdvcmtzIGZvciB5b3UuDQpTdXJlIHRoaXMgd29ya3MgZm9yIG1l LCB0aGFua3MuDQoNCg==