From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.4 required=3.0 tests=FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,MAILING_LIST_MULTI, MIME_HTML_MOSTLY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48D75C3A5A4 for ; Sun, 25 Aug 2019 15:29:29 +0000 (UTC) Received: from krantz.zx2c4.com (krantz.zx2c4.com [192.95.5.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D88F1206DD for ; Sun, 25 Aug 2019 15:29:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D88F1206DD Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=t-online.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=wireguard-bounces@lists.zx2c4.com Received: from krantz.zx2c4.com (localhost [IPv6:::1]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 9e4f80fa; Sun, 25 Aug 2019 15:29:28 +0000 (UTC) Received: from krantz.zx2c4.com (localhost [127.0.0.1]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 7c949df0 for ; Tue, 6 Aug 2019 13:08:39 +0000 (UTC) Received: from mailout02.t-online.de (mailout02.t-online.de [194.25.134.17]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 466808cf for ; Tue, 6 Aug 2019 13:08:39 +0000 (UTC) Received: from fwd40.aul.t-online.de (fwd40.aul.t-online.de [172.20.26.139]) by mailout02.t-online.de (Postfix) with SMTP id 1E26241FFF91; Tue, 6 Aug 2019 15:08:38 +0200 (CEST) Received: from majestix.boerner.local (VaFUmcZprhzUslwZlMcuV0mhwaeZltOHDe3UwvF0JCXoxWVRpMelmbOvJq6pdcxgjL@[79.252.222.102]) by fwd40.t-online.de with (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384 encrypted) esmtp id 1huzCd-0g2pdo0; Tue, 6 Aug 2019 15:08:35 +0200 From: boerner@t-online.de To: David Kerr Subject: Re: Wireguard command line tools for Android Date: Tue, 06 Aug 2019 15:08:35 +0200 Message-ID: <7181986.TQHKWN5Ixf@majestix.boerner.local> In-Reply-To: References: <5549622.se0SCevcK7@majestix.boerner.local> <2995139.DOlZOuy8Ws@majestix.boerner.local> MIME-Version: 1.0 X-ID: VaFUmcZprhzUslwZlMcuV0mhwaeZltOHDe3UwvF0JCXoxWVRpMelmbOvJq6pdcxgjL X-TOI-MSGID: 472b4793-4e34-453b-888e-06a43a0d489a X-Mailman-Approved-At: Sun, 25 Aug 2019 17:29:26 +0200 Cc: wireguard@lists.zx2c4.com X-BeenThere: wireguard@lists.zx2c4.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development discussion of WireGuard List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============2567240925551926880==" Errors-To: wireguard-bounces@lists.zx2c4.com Sender: "WireGuard" This is a multi-part message in MIME format. --===============2567240925551926880== Content-Type: multipart/alternative; boundary="nextPart7600200.F45XqUlRNf" Content-Transfer-Encoding: 7Bit This is a multi-part message in MIME format. --nextPart7600200.F45XqUlRNf Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="iso-8859-1" Hi David, No luck - changing IP addresses are common practice here in Europe. For "privacy reasons" they say, but I think it's just inherited from the former dial-in connections. Even the IPv6 prefix changes every day, in my case the last two bytes of the prefix. Stable addresses are available for enterprise contracts, and you pay extra for that. But now I understand why nobody has this issue in mind on the other side of the pond. I will post a feature request. Tom Am Dienstag, 6. August 2019, 14:33:44 CEST schrieb David Kerr: Hi Tom, Yes I have a stable IP external address. Under normal circumstances it only changes if I change device (the MAC address) that requests the dhcp lease. Thus I only have to deal with roaming (changing IPs) on my client device(s) not the server. I have never heard of a ISP that changes an assigned IP address every 24 hours, its pretty unfriendly practice. Normally client devices request renewal of the specific IP address it was previously assigned, so your ISP is explicitly refusing to renew that and causing the client to request a new IP. I would be seeking a new ISP in your situation. David On Tue, Aug 6, 2019 at 3:17 AM wrote: Hi David, Thanks for your elaborate answer! Yes, your assumption is right - my clients connect to a URL that resolves to an internal address when inside my local LAN. The idea was to keep traffic internal whenever possible. I have now followed your suggestion and have my VPN URL always resolved to the external IP address so the address won't change when leaving/entering the local network. For me, this solves a part of my issue but not all of it. My router is assigned a new external address (both IPv4 and IPv6) every 24 h, and obviously this invalidates the public IP adresses known by the server and the client simultaneously, as they are identical for the clients connected to the local network. That makes the handshake fail, and "wg" on the server shows that it is still looking for its endpoints at the old address. The same is true for the clients. Disconnecting/reconnecting the clients fixes the tunnel until the next address change, because then Wireguard looks for the DNS record instead of using its stored address information. I think it would be a good feature if Wireguard could refresh its endpoint addresses automatically when an endpoint is not reachable anymore. How does it work on your side? Have you a constant external IP address? Thomas Am Montag, 5. August 2019, 23:28:41 CEST schrieb David Kerr: I assume you have set the client configs to connect to something like "vpn.example.com[2]:" . How does DNS resolve this when inside your local LAN? Does it resolve to the same public IP address that your DSL router is connected to, or does it resolve to an internal address like 192.168.1.1? The way I have this working is to ensure that my VPN URL always resolves to the external IP address, even when I am inside my home network. To do that I had to update my DNS server configuration to make sure that my VPN URL is always resolved by an external DNS provider... I have my own custom network gateway/router and set dnsmasq.static to include the line... server=/vpn.example.com/8.8.8.8[3] Now this works for me because my wireguard server is running on my custom gateway/router... no NAT forwarding to an internal host running wireguard. If you are running wireguard on an internal server then you also need to make sure that your firewall rules don't block connections to your external interface from your local LAN and do the right NATing -- which is probably not permitted by default. I forget how to do this, but I'm sure google will find some instructions. David On Mon, Aug 5, 2019 at 2:57 PM wrote: Hey all, I've recently set up my private VPN with Wireguard. I am running my local server behind a DSL router with a variable public IP address, accessible via dyndns and NAT, and several mobile clients (Android, Notebooks). Everything is working fine so far, except of one issue that I would like discuss here: Roaming doesn't work reliably when a device leaves or re-enters the home LAN, nor when the public IP address is changed by my ISP. The reason seems clear to me: In these cases both peers change their IP address simultaneously whereas the Wireguard protocol relies on only one address changing at a time. My approach would be to shut down Wireguard on the clients as long as they are connected to their home network locally and to bring up the tunnel only when they leave the home network. Besides the roaming issue it would be desirable to use the local connection when it is available rather than to take the detour over the internet. And it should be done automatically so users need not remember to switch on/off VPN all the time.My idea was to use Tasker to perform something like wg-quick up|down tun1 accordingly, but the Wireguard command line tools wg and wg-quick don't seem to be available (anymore). In older forum posts I've seen that you can install them from the app settings, but in my version (v0.0.20190708) this option is not available. Does anybody know about another solution? Or, as a question to the developers, would it be a big deal to bring back the command line feature? Thanks, Tom _______________________________________________WireGuard mailing list WireGuard@lists.zx2c4.com[4] https://lists.zx2c4.com/mailman/listinfo/wireguard[5] -------- [1] mailto:boerner@t-online.de [2] http://vpn.example.com [3] http://vpn.example.com/8.8.8.8 [4] mailto:WireGuard@lists.zx2c4.com [5] https://lists.zx2c4.com/mailman/listinfo/wireguard --nextPart7600200.F45XqUlRNf Content-Transfer-Encoding: base64 Content-Type: text/html; charset="iso-8859-1" PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iICJodHRwOi8v d3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3N0cmljdC5kdGQiPgo8aHRtbD48aGVhZD48bWV0YSBu YW1lPSJxcmljaHRleHQiIGNvbnRlbnQ9IjEiIC8+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KcCwg bGkgeyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH0KPC9zdHlsZT48L2hlYWQ+PGJvZHkgc3R5bGU9 IiBmb250LWZhbWlseTonTm90byBTYW5zJzsgZm9udC1zaXplOjEwcHQ7IGZvbnQtd2VpZ2h0OjQw MDsgZm9udC1zdHlsZTpub3JtYWw7Ij4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2lu LWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0OjBweDsgbWFyZ2luLXJpZ2h0OjBweDsgLXF0LWJsb2Nr LWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij5IaSBEYXZpZCw8 L3A+CjxwIHN0eWxlPSItcXQtcGFyYWdyYXBoLXR5cGU6ZW1wdHk7IG1hcmdpbi10b3A6MHB4OyBt YXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6MHB4OyBtYXJnaW4tcmlnaHQ6MHB4OyAtcXQt YmxvY2staW5kZW50OjA7IHRleHQtaW5kZW50OjBweDsgIj4mbmJzcDs8L3A+CjxwIHN0eWxlPSIg bWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDowcHg7IG1hcmdp bi1yaWdodDowcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQtdXNl ci1zdGF0ZTowOyI+Tm8gbHVjayAtIGNoYW5naW5nIElQIGFkZHJlc3NlcyBhcmUgY29tbW9uIHBy YWN0aWNlIGhlcmUgaW4gRXVyb3BlLiBGb3IgJnF1b3Q7cHJpdmFjeSByZWFzb25zJnF1b3Q7IHRo ZXkgc2F5LCBidXQgSSB0aGluayBpdCdzIGp1c3QgaW5oZXJpdGVkIGZyb20gdGhlIGZvcm1lciBk aWFsLWluIGNvbm5lY3Rpb25zLiBFdmVuIHRoZSBJUHY2IHByZWZpeCBjaGFuZ2VzIGV2ZXJ5IGRh eSwgaW4gbXkgY2FzZSB0aGUgbGFzdCB0d28gYnl0ZXMgb2YgdGhlIHByZWZpeC4gU3RhYmxlIGFk ZHJlc3NlcyBhcmUgYXZhaWxhYmxlIGZvciBlbnRlcnByaXNlIGNvbnRyYWN0cywgYW5kIHlvdSBw YXkgZXh0cmEgZm9yIHRoYXQuPC9wPgo8cCBzdHlsZT0iIG1hcmdpbi10b3A6MHB4OyBtYXJnaW4t Ym90dG9tOjBweDsgbWFyZ2luLWxlZnQ6MHB4OyBtYXJnaW4tcmlnaHQ6MHB4OyAtcXQtYmxvY2st aW5kZW50OjA7IHRleHQtaW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPkJ1dCBub3cgSSB1 bmRlcnN0YW5kIHdoeSBub2JvZHkgaGFzIHRoaXMgaXNzdWUgaW4gbWluZCBvbiB0aGUgb3RoZXIg c2lkZSBvZiB0aGUgcG9uZC4gSSB3aWxsIHBvc3QgYSBmZWF0dXJlIHJlcXVlc3QuPC9wPgo8cCBz dHlsZT0iLXF0LXBhcmFncmFwaC10eXBlOmVtcHR5OyBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJv dHRvbTowcHg7IG1hcmdpbi1sZWZ0OjBweDsgbWFyZ2luLXJpZ2h0OjBweDsgLXF0LWJsb2NrLWlu ZGVudDowOyB0ZXh0LWluZGVudDowcHg7ICI+Jm5ic3A7PC9wPgo8cCBzdHlsZT0iIG1hcmdpbi10 b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6MHB4OyBtYXJnaW4tcmlnaHQ6 MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQtaW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6 MDsiPlRvbTwvcD4KPHAgc3R5bGU9Ii1xdC1wYXJhZ3JhcGgtdHlwZTplbXB0eTsgbWFyZ2luLXRv cDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDowcHg7IG1hcmdpbi1yaWdodDow cHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAiPiZuYnNwOzwvcD4KPHAg c3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0OjBw eDsgbWFyZ2luLXJpZ2h0OjBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7 IC1xdC11c2VyLXN0YXRlOjA7Ij5BbSBEaWVuc3RhZywgNi4gQXVndXN0IDIwMTksIDE0OjMzOjQ0 IENFU1Qgc2NocmllYiBEYXZpZCBLZXJyOjxiciAvPjwvcD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9w OjEycHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo0MHB4OyBtYXJnaW4tcmlnaHQ6 NDBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRl OjA7Ij48c3BhbiBzdHlsZT0iIGZvbnQtZmFtaWx5Oid2ZXJkYW5hLHNhbnMtc2VyaWYnOyI+SGkg VG9tLDwvc3Bhbj48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206 MHB4OyBtYXJnaW4tbGVmdDo0MHB4OyBtYXJnaW4tcmlnaHQ6NDBweDsgLXF0LWJsb2NrLWluZGVu dDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij48c3BhbiBzdHlsZT0iIGZv bnQtZmFtaWx5Oid2ZXJkYW5hLHNhbnMtc2VyaWYnOyI+oCBZZXMgSSBoYXZlIGEgc3RhYmxlIElQ IGV4dGVybmFsIGFkZHJlc3MuoCBVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyBpdCBvbmx5IGNo YW5nZXMgaWYgSSBjaGFuZ2UgZGV2aWNlICh0aGUgTUFDIGFkZHJlc3MpIHRoYXQgcmVxdWVzdHMg dGhlIGRoY3AgbGVhc2UuoCBUaHVzIEkgb25seSBoYXZlIHRvIGRlYWwgd2l0aCByb2FtaW5nIChj aGFuZ2luZyBJUHMpIG9uIG15IGNsaWVudCBkZXZpY2Uocykgbm90IHRoZSBzZXJ2ZXIuoCBJIGhh dmUgbmV2ZXIgaGVhcmQgb2YgYSBJU1AgdGhhdCBjaGFuZ2VzIGFuIGFzc2lnbmVkIElQIGFkZHJl c3MgZXZlcnkgMjQgaG91cnMsIGl0cyBwcmV0dHkgdW5mcmllbmRseSBwcmFjdGljZS6gIE5vcm1h bGx5IGNsaWVudCBkZXZpY2VzIHJlcXVlc3QgcmVuZXdhbCBvZiB0aGUgc3BlY2lmaWMgSVAgYWRk cmVzcyBpdCB3YXMgcHJldmlvdXNseSBhc3NpZ25lZCwgc28geW91ciBJU1AgaXMgZXhwbGljaXRs eSByZWZ1c2luZyB0byByZW5ldyB0aGF0IGFuZCBjYXVzaW5nIHRoZSBjbGllbnQgdG8gcmVxdWVz dCBhIG5ldyBJUC6gIEkgd291bGQgYmUgc2Vla2luZyBhIG5ldyBJU1AgaW4geW91ciBzaXR1YXRp b24uPC9zcGFuPjwvcD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTow cHg7IG1hcmdpbi1sZWZ0OjQwcHg7IG1hcmdpbi1yaWdodDo0MHB4OyAtcXQtYmxvY2staW5kZW50 OjA7IHRleHQtaW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPjxzcGFuIHN0eWxlPSIgZm9u dC1mYW1pbHk6J3ZlcmRhbmEsc2Fucy1zZXJpZic7Ij48YnIgLz48L3NwYW4+PC9wPgo8cCBzdHls ZT0iIG1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6NDBweDsg bWFyZ2luLXJpZ2h0OjQwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAt cXQtdXNlci1zdGF0ZTowOyI+PHNwYW4gc3R5bGU9IiBmb250LWZhbWlseTondmVyZGFuYSxzYW5z LXNlcmlmJzsiPkRhdmlkPC9zcGFuPjwvcD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFy Z2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0OjBweDsgbWFyZ2luLXJpZ2h0OjBweDsgLXF0LWJs b2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij48YnIgLz48 L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4t bGVmdDo0MHB4OyBtYXJnaW4tcmlnaHQ6NDBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWlu ZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij5PbiBUdWUsIEF1ZyA2LCAyMDE5IGF0IDM6MTcg QU0gJmx0OzxhIGhyZWY9Im1haWx0bzpib2VybmVyQHQtb25saW5lLmRlIj48c3BhbiBzdHlsZT0i IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMjk4MGI5OyI+Ym9lcm5lckB0LW9u bGluZS5kZTwvc3Bhbj48L2E+Jmd0OyB3cm90ZTo8YnIgLz48L3A+CjxwIHN0eWxlPSIgbWFyZ2lu LXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo0NXB4OyBtYXJnaW4tcmln aHQ6NDBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0 YXRlOjA7Ij5IaSBEYXZpZCw8L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1i b3R0b206MHB4OyBtYXJnaW4tbGVmdDo0NXB4OyBtYXJnaW4tcmlnaHQ6NDBweDsgLXF0LWJsb2Nr LWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij5UaGFua3MgZm9y IHlvdXIgZWxhYm9yYXRlIGFuc3dlciE8L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1h cmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo0NXB4OyBtYXJnaW4tcmlnaHQ6NDBweDsgLXF0 LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij6gPC9w Pgo8cCBzdHlsZT0iIG1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxl ZnQ6NDVweDsgbWFyZ2luLXJpZ2h0OjQwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRl bnQ6MHB4OyAtcXQtdXNlci1zdGF0ZTowOyI+WWVzLCB5b3VyIGFzc3VtcHRpb24gaXMgcmlnaHQg LSBteSBjbGllbnRzIGNvbm5lY3QgdG8gYSBVUkwgdGhhdCByZXNvbHZlcyB0byBhbiBpbnRlcm5h bCBhZGRyZXNzIHdoZW4gaW5zaWRlIG15IGxvY2FsIExBTi4gVGhlIGlkZWEgd2FzIHRvIGtlZXAg dHJhZmZpYyBpbnRlcm5hbCB3aGVuZXZlciBwb3NzaWJsZS4gPC9wPgo8cCBzdHlsZT0iIG1hcmdp bi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6NDVweDsgbWFyZ2luLXJp Z2h0OjQwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQtdXNlci1z dGF0ZTowOyI+SSBoYXZlIG5vdyBmb2xsb3dlZCB5b3VyIHN1Z2dlc3Rpb24gYW5kIGhhdmUgbXkg VlBOIFVSTCBhbHdheXMgcmVzb2x2ZWQgdG8gdGhlIGV4dGVybmFsIElQIGFkZHJlc3Mgc28gdGhl IGFkZHJlc3Mgd29uJ3QgY2hhbmdlIHdoZW4gbGVhdmluZy9lbnRlcmluZyB0aGUgbG9jYWwgbmV0 d29yay48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBt YXJnaW4tbGVmdDo0NXB4OyBtYXJnaW4tcmlnaHQ6NDBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0 ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij5Gb3IgbWUsIHRoaXMgc29sdmVzIGEg cGFydCBvZiBteSBpc3N1ZSBidXQgbm90IGFsbCBvZiBpdC4gPC9wPgo8cCBzdHlsZT0iIG1hcmdp bi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6NDVweDsgbWFyZ2luLXJp Z2h0OjQwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQtdXNlci1z dGF0ZTowOyI+TXkgcm91dGVyIGlzIGFzc2lnbmVkIGEgbmV3IGV4dGVybmFsIGFkZHJlc3MgKGJv dGggSVB2NCBhbmQgSVB2NikgZXZlcnkgMjQgaCwgYW5kIG9idmlvdXNseSB0aGlzIGludmFsaWRh dGVzIHRoZSBwdWJsaWMgSVAgYWRyZXNzZXMga25vd24gYnkgdGhlIHNlcnZlciBhbmQgdGhlIGNs aWVudCBzaW11bHRhbmVvdXNseSwgYXMgdGhleSBhcmUgaWRlbnRpY2FsIGZvciB0aGUgY2xpZW50 cyBjb25uZWN0ZWQgdG8gdGhlIGxvY2FsIG5ldHdvcmsuIFRoYXQgbWFrZXMgdGhlIGhhbmRzaGFr ZSBmYWlsLCBhbmQgJnF1b3Q7d2cmcXVvdDsgb24gdGhlIHNlcnZlciBzaG93cyB0aGF0IGl0IGlz IHN0aWxsIGxvb2tpbmcgZm9yIGl0cyBlbmRwb2ludHMgYXQgdGhlIG9sZCBhZGRyZXNzLiBUaGUg c2FtZSBpcyB0cnVlIGZvciB0aGUgY2xpZW50cy48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDow cHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo0NXB4OyBtYXJnaW4tcmlnaHQ6NDBw eDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7 Ij5EaXNjb25uZWN0aW5nL3JlY29ubmVjdGluZyB0aGUgY2xpZW50cyBmaXhlcyB0aGUgdHVubmVs IHVudGlsIHRoZSBuZXh0IGFkZHJlc3MgY2hhbmdlLCBiZWNhdXNlIHRoZW4gV2lyZWd1YXJkIGxv b2tzIGZvciB0aGUgRE5TIHJlY29yZCBpbnN0ZWFkIG9mIHVzaW5nIGl0cyBzdG9yZWQgYWRkcmVz cyBpbmZvcm1hdGlvbi4gSSB0aGluayBpdCB3b3VsZCBiZSBhIGdvb2QgZmVhdHVyZSBpZiBXaXJl Z3VhcmQgY291bGQgcmVmcmVzaCBpdHMgZW5kcG9pbnQgYWRkcmVzc2VzIGF1dG9tYXRpY2FsbHkg d2hlbiBhbiBlbmRwb2ludCBpcyBub3QgcmVhY2hhYmxlIGFueW1vcmUuPC9wPgo8cCBzdHlsZT0i IG1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6NDVweDsgbWFy Z2luLXJpZ2h0OjQwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQt dXNlci1zdGF0ZTowOyI+oDwvcD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJv dHRvbTowcHg7IG1hcmdpbi1sZWZ0OjQ1cHg7IG1hcmdpbi1yaWdodDo0MHB4OyAtcXQtYmxvY2st aW5kZW50OjA7IHRleHQtaW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPkhvdyBkb2VzIGl0 IHdvcmsgb24geW91ciBzaWRlPyBIYXZlIHlvdSBhIGNvbnN0YW50IGV4dGVybmFsIElQIGFkZHJl c3M/PC9wPgo8cCBzdHlsZT0iIG1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFy Z2luLWxlZnQ6NDVweDsgbWFyZ2luLXJpZ2h0OjQwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4 dC1pbmRlbnQ6MHB4OyAtcXQtdXNlci1zdGF0ZTowOyI+oDwvcD4KPHAgc3R5bGU9IiBtYXJnaW4t dG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0OjQ1cHg7IG1hcmdpbi1yaWdo dDo0MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQtaW5kZW50OjBweDsgLXF0LXVzZXItc3Rh dGU6MDsiPlRob21hczwvcD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRv bTowcHg7IG1hcmdpbi1sZWZ0OjQ1cHg7IG1hcmdpbi1yaWdodDo0MHB4OyAtcXQtYmxvY2staW5k ZW50OjA7IHRleHQtaW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPqA8L3A+CjxwIHN0eWxl PSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo0NXB4OyBt YXJnaW4tcmlnaHQ6NDBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1x dC11c2VyLXN0YXRlOjA7Ij6gPC9wPgo8cCBzdHlsZT0iIG1hcmdpbi10b3A6MHB4OyBtYXJnaW4t Ym90dG9tOjBweDsgbWFyZ2luLWxlZnQ6NDVweDsgbWFyZ2luLXJpZ2h0OjQwcHg7IC1xdC1ibG9j ay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQtdXNlci1zdGF0ZTowOyI+QW0gTW9udGFn LCA1LiBBdWd1c3QgMjAxOSwgMjM6Mjg6NDEgQ0VTVCBzY2hyaWViIERhdmlkIEtlcnI6PGJyIC8+ PC9wPgo8cCBzdHlsZT0iIG1hcmdpbi10b3A6MTJweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdp bi1sZWZ0Ojg1cHg7IG1hcmdpbi1yaWdodDo4MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQt aW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPjxzcGFuIHN0eWxlPSIgZm9udC1mYW1pbHk6 J3ZlcmRhbmEsc2Fucy1zZXJpZic7Ij5JIGFzc3VtZSB5b3UgaGF2ZSBzZXQgdGhlIGNsaWVudCBj b25maWdzIHRvIGNvbm5lY3QgdG8gc29tZXRoaW5nIGxpa2UgJnF1b3Q7PC9zcGFuPjxhIGhyZWY9 Imh0dHA6Ly92cG4uZXhhbXBsZS5jb20iPjxzcGFuIHN0eWxlPSIgZm9udC1mYW1pbHk6J3ZlcmRh bmEsc2Fucy1zZXJpZic7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMjk4MGI5 OyI+dnBuLmV4YW1wbGUuY29tPC9zcGFuPjwvYT48c3BhbiBzdHlsZT0iIGZvbnQtZmFtaWx5Oid2 ZXJkYW5hLHNhbnMtc2VyaWYnOyI+OiZsdDtwb3J0Jmd0OyZxdW90OyAuIEhvdyBkb2VzIEROUyBy ZXNvbHZlIHRoaXMgd2hlbiBpbnNpZGUgeW91ciBsb2NhbCBMQU4/oCBEb2VzIGl0IHJlc29sdmUg dG8gdGhlIHNhbWUgcHVibGljIElQIGFkZHJlc3MgdGhhdCB5b3VyIERTTCByb3V0ZXIgaXMgY29u bmVjdGVkIHRvLCBvciBkb2VzIGl0IHJlc29sdmUgdG8gYW4gaW50ZXJuYWwgYWRkcmVzcyBsaWtl IDE5Mi4xNjguMS4xPzwvc3Bhbj48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdp bi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo4NXB4OyBtYXJnaW4tcmlnaHQ6ODBweDsgLXF0LWJs b2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij48c3BhbiBz dHlsZT0iIGZvbnQtZmFtaWx5Oid2ZXJkYW5hLHNhbnMtc2VyaWYnOyI+PGJyIC8+PC9zcGFuPjwv cD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1s ZWZ0Ojg1cHg7IG1hcmdpbi1yaWdodDo4MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQtaW5k ZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPjxzcGFuIHN0eWxlPSIgZm9udC1mYW1pbHk6J3Zl cmRhbmEsc2Fucy1zZXJpZic7Ij5UaGUgd2F5IEkgaGF2ZSB0aGlzIHdvcmtpbmcgaXMgdG8gZW5z dXJlIHRoYXQgbXkgVlBOIFVSTCBhbHdheXMgcmVzb2x2ZXMgdG8gdGhlIGV4dGVybmFsIElQIGFk ZHJlc3MsIGV2ZW4gd2hlbiBJIGFtIGluc2lkZSBteSBob21lIG5ldHdvcmsuoCBUbyBkbyB0aGF0 IEkgaGFkIHRvIHVwZGF0ZSBteSBETlMgc2VydmVyIGNvbmZpZ3VyYXRpb24gdG8gbWFrZSBzdXJl IHRoYXQgbXkgVlBOIFVSTCBpcyBhbHdheXMgcmVzb2x2ZWQgYnkgYW4gZXh0ZXJuYWwgRE5ToHBy b3ZpZGVyLi4uIEkgaGF2ZSBteSBvd24gY3VzdG9tIG5ldHdvcmsgZ2F0ZXdheS9yb3V0ZXIgYW5k IHNldCBkbnNtYXNxLnN0YXRpYyB0byBpbmNsdWRlIHRoZSBsaW5lLi4uPC9zcGFuPjwvcD4KPHAg c3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0Ojg1 cHg7IG1hcmdpbi1yaWdodDo4MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQtaW5kZW50OjBw eDsgLXF0LXVzZXItc3RhdGU6MDsiPjxzcGFuIHN0eWxlPSIgZm9udC1mYW1pbHk6J3ZlcmRhbmEs c2Fucy1zZXJpZic7Ij48YnIgLz48L3NwYW4+PC9wPgo8cCBzdHlsZT0iIG1hcmdpbi10b3A6MHB4 OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6ODVweDsgbWFyZ2luLXJpZ2h0OjgwcHg7 IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQtdXNlci1zdGF0ZTowOyI+ PHNwYW4gc3R5bGU9IiBmb250LWZhbWlseTondmVyZGFuYSxzYW5zLXNlcmlmJzsiPnNlcnZlcj0v PC9zcGFuPjxhIGhyZWY9Imh0dHA6Ly92cG4uZXhhbXBsZS5jb20vOC44LjguOCI+PHNwYW4gc3R5 bGU9IiBmb250LWZhbWlseTondmVyZGFuYSxzYW5zLXNlcmlmJzsgdGV4dC1kZWNvcmF0aW9uOiB1 bmRlcmxpbmU7IGNvbG9yOiMyOTgwYjk7Ij52cG4uZXhhbXBsZS5jb20vOC44LjguODwvc3Bhbj48 L2E+PHNwYW4gc3R5bGU9IiBmb250LWZhbWlseTondmVyZGFuYSxzYW5zLXNlcmlmJzsiPjxiciAv Pjwvc3Bhbj48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4 OyBtYXJnaW4tbGVmdDo4NXB4OyBtYXJnaW4tcmlnaHQ6ODBweDsgLXF0LWJsb2NrLWluZGVudDow OyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij48c3BhbiBzdHlsZT0iIGZvbnQt ZmFtaWx5Oid2ZXJkYW5hLHNhbnMtc2VyaWYnOyI+PGJyIC8+PC9zcGFuPjwvcD4KPHAgc3R5bGU9 IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0Ojg1cHg7IG1h cmdpbi1yaWdodDo4MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQtaW5kZW50OjBweDsgLXF0 LXVzZXItc3RhdGU6MDsiPjxzcGFuIHN0eWxlPSIgZm9udC1mYW1pbHk6J3ZlcmRhbmEsc2Fucy1z ZXJpZic7Ij5Ob3cgdGhpcyB3b3JrcyBmb3IgbWUgYmVjYXVzZSBteSB3aXJlZ3VhcmQgc2VydmVy IGlzIHJ1bm5pbmcgb24gbXkgY3VzdG9tIGdhdGV3YXkvcm91dGVyLi4uIG5vIE5BVCBmb3J3YXJk aW5nIHRvIGFuIGludGVybmFsIGhvc3QgcnVubmluZyB3aXJlZ3VhcmQuoCBJZiB5b3UgYXJlIHJ1 bm5pbmcgd2lyZWd1YXJkIG9uIGFuIGludGVybmFsIHNlcnZlciB0aGVuIHlvdSBhbHNvIG5lZWQg dG8gbWFrZSBzdXJlIHRoYXQgeW91ciBmaXJld2FsbCBydWxlcyBkb24ndCBibG9jayBjb25uZWN0 aW9ucyB0byB5b3VyIGV4dGVybmFsIGludGVyZmFjZSBmcm9tIHlvdXIgbG9jYWwgTEFOIGFuZCBk byB0aGUgcmlnaHQgTkFUaW5nIC0tIHdoaWNoIGlzIHByb2JhYmx5IG5vdCBwZXJtaXR0ZWQgYnkg ZGVmYXVsdC6gIEkgZm9yZ2V0IGhvdyB0byBkbyB0aGlzLCBidXQgSSdtIHN1cmUgZ29vZ2xlIHdp bGwgZmluZCBzb21lIGluc3RydWN0aW9ucy48L3NwYW4+PC9wPgo8cCBzdHlsZT0iIG1hcmdpbi10 b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6ODVweDsgbWFyZ2luLXJpZ2h0 OjgwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQtdXNlci1zdGF0 ZTowOyI+PHNwYW4gc3R5bGU9IiBmb250LWZhbWlseTondmVyZGFuYSxzYW5zLXNlcmlmJzsiPjxi ciAvPjwvc3Bhbj48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206 MHB4OyBtYXJnaW4tbGVmdDo4NXB4OyBtYXJnaW4tcmlnaHQ6ODBweDsgLXF0LWJsb2NrLWluZGVu dDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij48c3BhbiBzdHlsZT0iIGZv bnQtZmFtaWx5Oid2ZXJkYW5hLHNhbnMtc2VyaWYnOyI+RGF2aWQ8L3NwYW4+PC9wPgo8cCBzdHls ZT0iIG1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6ODVweDsg bWFyZ2luLXJpZ2h0OjgwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAt cXQtdXNlci1zdGF0ZTowOyI+PHNwYW4gc3R5bGU9IiBmb250LWZhbWlseTondmVyZGFuYSxzYW5z LXNlcmlmJzsiPjxiciAvPjwvc3Bhbj48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1h cmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo4NXB4OyBtYXJnaW4tcmlnaHQ6ODBweDsgLXF0 LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij48c3Bh biBzdHlsZT0iIGZvbnQtZmFtaWx5Oid2ZXJkYW5hLHNhbnMtc2VyaWYnOyI+PGJyIC8+PC9zcGFu PjwvcD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdp bi1sZWZ0Ojg1cHg7IG1hcmdpbi1yaWdodDo4MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQt aW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPjxzcGFuIHN0eWxlPSIgZm9udC1mYW1pbHk6 J3ZlcmRhbmEsc2Fucy1zZXJpZic7Ij48YnIgLz48L3NwYW4+PC9wPgo8cCBzdHlsZT0iIG1hcmdp bi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6ODVweDsgbWFyZ2luLXJp Z2h0OjgwcHg7IC1xdC1ibG9jay1pbmRlbnQ6MDsgdGV4dC1pbmRlbnQ6MHB4OyAtcXQtdXNlci1z dGF0ZTowOyI+PHNwYW4gc3R5bGU9IiBmb250LWZhbWlseTondmVyZGFuYSxzYW5zLXNlcmlmJzsi PjxiciAvPjwvc3Bhbj48YnIgLz48L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdp bi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDo4NXB4OyBtYXJnaW4tcmlnaHQ6ODBweDsgLXF0LWJs b2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij5PbiBNb24s IEF1ZyA1LCAyMDE5IGF0IDI6NTcgUE0gJmx0OzxhIGhyZWY9Im1haWx0bzpib2VybmVyQHQtb25s aW5lLmRlIj48c3BhbiBzdHlsZT0iIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjoj Mjk4MGI5OyI+Ym9lcm5lckB0LW9ubGluZS5kZTwvc3Bhbj48L2E+Jmd0OyB3cm90ZTo8YnIgLz48 L3A+CjxwIHN0eWxlPSIgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4t bGVmdDo5MHB4OyBtYXJnaW4tcmlnaHQ6ODBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWlu ZGVudDowcHg7IC1xdC11c2VyLXN0YXRlOjA7Ij5IZXkgYWxsLDxiciAvPjxiciAvPkkndmUgcmVj ZW50bHkgc2V0IHVwIG15IHByaXZhdGUgVlBOIHdpdGggV2lyZWd1YXJkLiBJIGFtIHJ1bm5pbmcg bXkgbG9jYWwgc2VydmVyIGJlaGluZCBhIERTTCByb3V0ZXIgd2l0aCBhIHZhcmlhYmxlIHB1Ymxp YyBJUCBhZGRyZXNzLCBhY2Nlc3NpYmxlIHZpYSBkeW5kbnMgYW5kIE5BVCwgYW5kIHNldmVyYWwg bW9iaWxlIGNsaWVudHMgKEFuZHJvaWQsIE5vdGVib29rcykuIDxiciAvPkV2ZXJ5dGhpbmcgaXMg d29ya2luZyBmaW5lIHNvIGZhciwgZXhjZXB0IG9mIG9uZSBpc3N1ZSB0aGF0IEkgd291bGQgbGlr ZSBkaXNjdXNzIGhlcmU6IDxiciAvPlJvYW1pbmcgZG9lc24ndCB3b3JrIHJlbGlhYmx5IHdoZW4g YSBkZXZpY2UgbGVhdmVzIG9yIHJlLWVudGVycyB0aGUgaG9tZSBMQU4sIG5vciB3aGVuIHRoZSBw dWJsaWMgSVAgYWRkcmVzcyBpcyBjaGFuZ2VkIGJ5IG15IElTUC4gVGhlIHJlYXNvbiBzZWVtcyBj bGVhciB0byBtZTogSW4gdGhlc2UgY2FzZXMgYm90aCBwZWVycyBjaGFuZ2UgdGhlaXIgSVAgYWRk cmVzcyBzaW11bHRhbmVvdXNseSB3aGVyZWFzIHRoZSBXaXJlZ3VhcmQgcHJvdG9jb2wgcmVsaWVz IG9uIG9ubHkgb25lIGFkZHJlc3MgY2hhbmdpbmcgYXQgYSB0aW1lLjxiciAvPjxiciAvPk15IGFw cHJvYWNoIHdvdWxkIGJlIHRvIHNodXQgZG93biBXaXJlZ3VhcmQgb24gdGhlIGNsaWVudHMgYXMg bG9uZyBhcyB0aGV5IGFyZSBjb25uZWN0ZWQgdG8gdGhlaXIgaG9tZSBuZXR3b3JrIGxvY2FsbHkg YW5kIHRvIGJyaW5nIHVwIHRoZSB0dW5uZWwgb25seSB3aGVuIHRoZXkgbGVhdmUgdGhlIGhvbWUg bmV0d29yay4gQmVzaWRlcyB0aGUgcm9hbWluZyBpc3N1ZSBpdKAgd291bGQgYmUgZGVzaXJhYmxl IHRvIHVzZSB0aGUgbG9jYWwgY29ubmVjdGlvbiB3aGVuIGl0IGlzIGF2YWlsYWJsZSByYXRoZXIg dGhhbiB0byB0YWtlIHRoZSBkZXRvdXIgb3ZlciB0aGUgaW50ZXJuZXQuIEFuZCBpdKAgc2hvdWxk IGJlIGRvbmUgYXV0b21hdGljYWxseSBzbyB1c2VycyBuZWVkIG5vdCByZW1lbWJlciB0byBzd2l0 Y2ggb24vb2ZmIFZQTiBhbGwgdGhlIHRpbWUuPGJyIC8+TXkgaWRlYSB3YXMgdG8gdXNlIFRhc2tl ciB0byBwZXJmb3JtIHNvbWV0aGluZyBsaWtlIHdnLXF1aWNrIHVwfGRvd24gdHVuMSBhY2NvcmRp bmdseSwgYnV0IHRoZSBXaXJlZ3VhcmQgY29tbWFuZCBsaW5lIHRvb2xzIHdnIGFuZCB3Zy1xdWlj ayBkb24ndCBzZWVtIHRvIGJlIGF2YWlsYWJsZSAoYW55bW9yZSkuIEluIG9sZGVyIGZvcnVtIHBv c3RzIEkndmUgc2VlbiB0aGF0IHlvdSBjYW4gaW5zdGFsbCB0aGVtIGZyb20gdGhlIGFwcCBzZXR0 aW5ncywgYnV0IGluIG15IHZlcnNpb24gKHYwLjAuMjAxOTA3MDgpIHRoaXMgb3B0aW9uIGlzIG5v dCBhdmFpbGFibGUuPGJyIC8+PGJyIC8+RG9lcyBhbnlib2R5IGtub3cgYWJvdXQgYW5vdGhlciBz b2x1dGlvbj8gT3IsIGFzIGEgcXVlc3Rpb24gdG8gdGhlIGRldmVsb3BlcnMsIHdvdWxkIGl0IGJl IGEgYmlnIGRlYWwgdG8gYnJpbmcgYmFjayB0aGUgY29tbWFuZCBsaW5lIGZlYXR1cmU/PGJyIC8+ PGJyIC8+VGhhbmtzLCBUb208YnIgLz48YnIgLz48YnIgLz48YnIgLz48YnIgLz5fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxiciAvPldpcmVHdWFyZCBtYWls aW5nIGxpc3Q8YnIgLz48YSBocmVmPSJtYWlsdG86V2lyZUd1YXJkQGxpc3RzLnp4MmM0LmNvbSI+ PHNwYW4gc3R5bGU9IiB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IzI5ODBiOTsi PldpcmVHdWFyZEBsaXN0cy56eDJjNC5jb208L3NwYW4+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBz Oi8vbGlzdHMuengyYzQuY29tL21haWxtYW4vbGlzdGluZm8vd2lyZWd1YXJkIj48c3BhbiBzdHls ZT0iIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMjk4MGI5OyI+aHR0cHM6Ly9s aXN0cy56eDJjNC5jb20vbWFpbG1hbi9saXN0aW5mby93aXJlZ3VhcmQ8L3NwYW4+PC9hPjxiciAv PjwvcD4KPHAgc3R5bGU9IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdp bi1sZWZ0OjQ1cHg7IG1hcmdpbi1yaWdodDo0MHB4OyAtcXQtYmxvY2staW5kZW50OjA7IHRleHQt aW5kZW50OjBweDsgLXF0LXVzZXItc3RhdGU6MDsiPjxiciAvPjxiciAvPjwvcD4KPHAgc3R5bGU9 IiBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0OjBweDsgbWFy Z2luLXJpZ2h0OjBweDsgLXF0LWJsb2NrLWluZGVudDowOyB0ZXh0LWluZGVudDowcHg7IC1xdC11 c2VyLXN0YXRlOjA7Ij48YnIgLz48YnIgLz48L3A+PC9ib2R5PjwvaHRtbD4= --nextPart7600200.F45XqUlRNf-- --===============2567240925551926880== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ WireGuard mailing list WireGuard@lists.zx2c4.com https://lists.zx2c4.com/mailman/listinfo/wireguard --===============2567240925551926880==--