From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=CmdYTyMs; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id 9764140084 for ; Tue, 16 Dec 2025 13:31:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=RG1GO3BkmspsonOBZqCkY7R0VrhIzUhchkL77UdOvno=; b=CmdYTyMs6ap1ajx/t7u0wQ8gqmcRjOSQgCkDNM6aUfqdAkBax/YsXcdP gxokprQHpGOOlSuZ8gCehFr6c2vBsh5iIq+GB28Tl6+dt8X7R1NyZK06D au1lD2Jjw6oPmKv/YYZuENKA3B2/rqx+beUXyXD73IPZXiE9MLAAYAf/p A=; X-CSE-ConnectionGUID: r4xC5wX+TtaitUDTmZwNgg== X-CSE-MsgGUID: /WcjeEhaTJq6OJJSJ97LfQ== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@prod-sympa-app.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.21,153,1763420400"; d="scan'208,217";a="254701759" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 16 Dec 2025 14:31:06 +0100 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 1A52281C2B; Tue, 16 Dec 2025 14:31:06 +0100 (CET) Received: from mail3-relais-sop.national.inria.fr (dsi-ha-lb1-dmz.inria.fr [128.93.162.100]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id 5E26C81BC6 for ; Tue, 16 Dec 2025 14:30:56 +0100 (CET) X-CSE-ConnectionGUID: mu5iamSiSv+v4VP3crSxIA== X-CSE-MsgGUID: XKSG8vBbTGa3UUnLWiMSNA== IronPort-SDR: 69415f0e_M9Oi71f75pk0S0x6YdcC6dTKCB6LxvxWPlEGnFuxG2lVmQy ROp7NVIyW8AFdILaR40+Wyahmu86eEunnzTKA+w== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0EyBQAEXkFphSIeaIFahBZbKBkBbF8zBwhJhFWDTwiLP?= =?us-ascii?q?YJgnEiBaYEsFgUeFQEDAQ0uARsEAQIEAQEDAQIBggyCdAIWjFMCHwYBBDQTA?= =?us-ascii?q?QIEAQEBAQMCAwEBAQEBAQEBAQ0BAQUBAQECAQECBAYBAhABAQEBQEmGTw2CR?= =?us-ascii?q?Rk4Ux5lCQYBAQEBAQEBAQEBAQEBASIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAgQEBAECBRwQawECBgQGEwEBJhIYFA8DF?= =?us-ascii?q?AEGAwIEDQE1AwETARIaghBYAYIgAgJPAwUMBAKWNJtNen8zgQGCDAEBBoEIP?= =?us-ascii?q?gIBAgIHAgUBDgkm2g6BZAmBMxiFboJKGwEFJUlRGgKESQmEMgInD4FVRIFKg?= =?us-ascii?q?XMSP2+BfkELFwEBAQEVA4EIBAUBCwYCAQgSDyQJgyWCaYImehQdhgKCcHgvB?= =?us-ascii?q?4VZBolbgURLMywBVRMXCwcFXoEIAyo0LW4yHYEjPhdzgRSDSR5oDwaBEYNPi?= =?us-ascii?q?RgPiWxXAwttPTcUG5R6QxkWEyWBQCUOOAYrExoBOQUDEQ4BASAPHwEBBAQJG?= =?us-ascii?q?goHBQoZHQkEAQkCGS8LOgOEYI1uCSQBAyoCj1qOGJNZgQo0B4QfgV4GDIkIg?= =?us-ascii?q?SaHJo5ghASBV4VAhXyHApE2gRwimGQiiV2BJgmBb2uFI4NXgRSLFjwEhVSBf?= =?us-ascii?q?yNsPwEdDAczGjAiIQ0PBIITAQEyCUYcD44tFoNeECOBC4MaFyTDbi8CQjUCA?= =?us-ascii?q?QEHMQIHAQoBAQMJhWIBAWmLHSwIgUsBAQ?= IronPort-PHdr: A9a23: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 i9NLWeg4HvYCJIZnhE/bfo74lJWL9L/Ens= IronPort-Data: A9a23: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 4QqbTgsfXxXgnId3Sqtl7C51f3ZUP7SI+0UUBqy IronPort-HdrOrdr: A9a23:FoTDsK8nNeb06FCNOlNuk+DlI+orL9Y04lQ7vn2ZKCYlEfBw8v rFoB1173HJYVoqNU3I+urhBEDjexLhHPdOiOF7AV7IZmbbUQWTQL1K3M/L/HnLGiH19OJRvJ 0QEZRWOZnXFlY/qc775WCDYrIdKTS8gcWVuds= X-Talos-CUID: =?us-ascii?q?9a23=3ANLysVmoglI0jJMv3aCb6C4rmUcU4L3zUyUzRGFH?= =?us-ascii?q?7FzpXcOaeU2SA2Yoxxg=3D=3D?= X-Talos-MUID: 9a23:S6GNCwW8lIHOt/3q/A/Pvx4yKu1i34unU30wl7E5uuy/EwUlbg== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.21,153,1763420400"; d="scan'208,217";a="133857738" X-URL-ContentFilter: X-MGA-submission: =?us-ascii?q?MDFRc+A1yEtk35MQj002IfPKOpEYKGl9p4fdYe?= =?us-ascii?q?SHKQD3V6d+I+fw5Dq2OEbOP+ARAvbnpgpXd/2fabEno+hoaUN+dudJBI?= =?us-ascii?q?pF1FMQ9hOnEq7nM8Gzi4WPliazSmfG4NE7G8c1pJ139U4UmbJsUicoHO?= =?us-ascii?q?4ttvmoWtuiXrDWDany29/u3w=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2025 14:30:54 +0100 Received: from mac-03220211.irisa.fr (mac-03220211.irisa.fr [131.254.21.249]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 8EFF81A372; Tue, 16 Dec 2025 14:30:53 +0100 (CET) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 16 Dec 2025 14:30:53 +0100 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Dec 16 14:30:53 2025 +0100 (CET)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.499999, queueID=B02F11A3B2 X-Org-Mail: alan.schmitt.1995@polytechnique.org Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19412 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgRGVjZW1iZXIgMDkgdG8gMTYsDQoyMDI1Lg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNClNvZnR3 YXJlIEVuZ2luZWVyIChPQ2FtbCkg4oCTIExleGlGaSwgUGFyaXMNCk9wYW0gcmVwb3NpdG9yeSBh cmNoaXZhbCwgbmV4dCBydW4gKHNjaGVkdWxlZCAyMDI2LTAxLTAxKQ0KYmxhbWUsIGEgc2ltcGxl IHdlYmFwcCBhcyBhbiB1bmlrZXJuZWwNCkEgbmV3IGtpbmQgb2Yga25vd2xlZGdlLWJhc2UgZm9y IE9DYW1sJ3MgZG9jDQpTZXJpYWxwb3J0IC0gbmV3IHNlcmlhbCBjb21tdW5pY2F0aW9uIGxpYnJh cnkNCkx3dC42LjAuMH5iZXRhIChkaXJlY3Qtc3R5bGUsIG11bHRpLWRvbWFpbiBwYXJhbGxlbGlz bSkNCkNhbGwgZm9yIFBhcnRpY2lwYXRpb246IEJPQiAyMDI2IChCZXJsaW4sIE1hciAxMykNCk90 aGVyIE9DYW1sIE5ld3MNCk9sZCBDV04NCg0KDQpTb2Z0d2FyZSBFbmdpbmVlciAoT0NhbWwpIOKA kyBMZXhpRmksIFBhcmlzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy90L2pvYi1zb2Z0d2FyZS1lbmdpbmVlci1vY2FtbC1sZXhpZmktcGFyaXMv MTc1ODYvMT4NCg0KDQpBbGFpbiBGcmlzY2ggYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIaSBh bGwsDQoNCiAgW0xleGlGaV0gaXMgbG9va2luZyBmb3IgYSAqU29mdHdhcmUgRW5naW5lZXIqIHRv IGpvaW4gb3VyIGRldmVsb3BtZW50DQogIHRlYW0gaW4gUGFyaXMuIFRoZSB3b3JrIGlzIHByaW1h cmlseSBpbiBPQ2FtbCwgY29udHJpYnV0aW5nIHRvIG91cg0KICBjb2RlYmFzZSBhY3Jvc3MgY29y ZSBjb21wb25lbnRzLCB0b29saW5nLCBhbmQgcHJvZHVjdCBmZWF0dXJlcy4NCg0KICBJZiB5b3Un cmUgaW50ZXJlc3RlZCBpbiB3b3JraW5nIG9uIGEgbGFyZ2UsIGxvbmctbGl2ZWQgT0NhbWwgc3lz dGVtDQogIHVzZWQgaW4gcHJvZHVjdGlvbiBieSBmaW5hbmNpYWwgaW5zdGl0dXRpb25zLCB5b3Ug Y2FuIGZpbmQgdGhlIGZ1bGwNCiAgam9iIGRlc2NyaXB0aW9uIGhlcmU6DQogIFtodHRwczovL3d3 dy5sZXhpZmkuY29tL2NhcmVlcnMvc29mdHdhcmVfZW5naW5lZXIvXQ0KDQogIEhhcHB5IHRvIGFu c3dlciBhbnkgcXVlc3Rpb25zIQ0KDQoNCltMZXhpRmldIDxodHRwczovL3d3dy5sZXhpZmkuY29t Pg0KDQpbaHR0cHM6Ly93d3cubGV4aWZpLmNvbS9jYXJlZXJzL3NvZnR3YXJlX2VuZ2luZWVyL10N CjxodHRwczovL3d3dy5sZXhpZmkuY29tL2NhcmVlcnMvc29mdHdhcmVfZW5naW5lZXIvP3V0bV9z b3VyY2U9Y2hhdGdwdC5jb20+DQoNCg0KT3BhbSByZXBvc2l0b3J5IGFyY2hpdmFsLCBuZXh0IHJ1 biAoc2NoZWR1bGVkIDIwMjYtMDEtMDEpDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy90L29wYW0tcmVwb3NpdG9yeS1hcmNoaXZhbC1uZXh0LXJ1bi1zY2hlZHVs ZWQtMjAyNi0wMS0wMS8xNzU4Ny8xPg0KDQoNCkhhbm5lcyBNZWhuZXJ0IGFubm91bmNlZA0K4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSADQoNCiAgRGVhciBldmVyeW9uZSwNCg0KICB3ZSBkaWQgYW5vdGhlciBydW4g b2YgdGhlIGFyY2hpdmFsIGJhc2VkIG9uIHRoZSB4LW1haW50ZW5hbmNlLWludGVudA0KICBvZiBv cGFtIHBhY2thZ2VzLiBUaGUgcnVuIHdhcyB1c2luZyBbb3BhbS1yZXBvc2l0b3J5IGF0IGNvbW1p dA0KICBkNjg0Yzg5NmViNmY3ZTYwMzBkNmVlNjUzMzhkOWRiMjJhNjEyZjAxXSAoRGVjIDl0aCwg MjA6MDA6MDAgQ0VUKS4NCg0KICBUaGUgdG9vbCB1c2VkIGlzIFttYWludGVuYW5jZS1pbnRlbnQt ZmlsdGVyXSB3aXRoIG9wYW0gMi41IGFuZCBPQ2FtbA0KICA1LjQuIEl0IHRvb2sgYXJvdW5kIDFH QiBvZiBtZW1vcnkgYW5kIGFyb3VuZCAxMDBoIG9mIENQVSB0aW1lDQogIChbZG9uYXRpb25zIHdl bGNvbWVdKS4NCg0KICBJbiB0b3RhbCwgNDUxMCBwYWNrYWdlcyB3ZXJlIGNhbmRpZGF0ZXMsIG91 dCBvZiB3aGljaCAzMzYxIGFyZQ0KICBzY2hlZHVsZWQgZm9yIGFyY2hpdmFsLg0KDQoNCltvcGFt LXJlcG9zaXRvcnkgYXQgY29tbWl0IGQ2ODRjODk2ZWI2ZjdlNjAzMGQ2ZWU2NTMzOGQ5ZGIyMmE2 MTJmMDFdDQo8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29wYW0tcmVwb3NpdG9yeS90cmVlL2Q2 ODRjODk2ZWI2ZjdlNjAzMGQ2ZWU2NTMzOGQ5ZGIyMmE2MTJmMDE+DQoNClttYWludGVuYW5jZS1p bnRlbnQtZmlsdGVyXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5uZXNtL21haW50ZW5hbmNlLWlu dGVudC1maWx0ZXIvdHJlZS8xNGQzZDgwZWQxZDI2ZjI3NzlmMGNlZDNlM2I5ODUyYmM1OWFjN2Zi Pg0KDQpbZG9uYXRpb25zIHdlbGNvbWVdIDxodHRwczovL3JvYnVyLmNvb3AvRG9uYXRlPg0KDQpU ZXN0aW5nDQrilYzilYzilYzilYzilYzilYzilYwNCg0KICBUbyB0ZXN0IHdoZXRoZXIgeW91ciBD SSAvIGxvY2sgLyBlbnZpcm9ubWVudCB3aWxsIGJlIGFmZmVjdGVkIGJ5IHRoZQ0KICByZW1vdmFs IG9mIHBhY2thZ2VzLCB5b3UgY2FuIGNyZWF0ZSBhIGZyZXNoIG9wYW0gc3dpdGNoIGFuZCB1c2Ug dGhlDQogIG9wYW0tcmVwb3NpdG9yeSBmcm9tIHRoZSBicmFuY2g6DQoNCiAg4pSM4pSA4pSA4pSA 4pSADQogIOKUgiAkIG9wYW0gcmVwb3NpdG9yeSBhZGQgYXJjaGl2YWwtMjAyNjAxMDEgaHR0cHM6 Ly9naXRodWIuY29tL2hhbm5lc20vb3BhbS1yZXBvc2l0b3J5LmdpdCNhcmNoaXZhbC0yMDI2MDEw MQ0KICDilIIgJCBvcGFtIHN3aXRjaCBjcmVhdGUgYXJjaGl2YWwtMjAyNjAxMDEgIC0tcmVwb3Np dG9yaWVzIGFyY2hpdmFsLTIwMjYwMTAxDQogIOKUgiAkIGV2YWwgYG9wYW0gZW52YA0KICDilJTi lIDilIDilIDilIANCg0KICBBbHRlcm5hdGl2ZWx5LCBpbiBDSSBzeXN0ZW1zIHlvdSBjYW4gZG8g dGVtcG9yYXJpbHkgZm9yIHRlc3Rpbmc6DQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgJCBvcGFt IHJlcG8gc2V0LXVybCBkZWZhdWx0IGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5uZXNtL29wYW0tcmVw b3NpdG9yeS5naXQjYXJjaGl2YWwtMjAyNjAxMDENCiAg4pSU4pSA4pSA4pSA4pSADQoNCg0KUmV2 ZXJ0aW5nIGFyY2hpdmFsDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYwNCg0KICBJZiB5b3Ugd2FudCB0byBwcmVzZXJ2ZSBhIHBhY2thZ2UsIHBs ZWFzZSBkb27igJl0IGhlc2l0YXRlIHRvIGNvbW1lbnQgb24NCiAgdGhlIGlzc3VlIDxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb3BhbS1yZXBvc2l0b3J5L3B1bGwvMjkwNTg+DQoNCiAgSXQgaXMg aW1wb3J0YW50IHRoYXQgeW91IGluY2x1ZGUgdGhlIHBhY2thZ2UgbmFtZSBhbmQgaXRzIHZlcnNp b24sIGFzDQogIHdlbGwgYXMgd2hlcmUgaXQgaXMgdXNlZCAocHJlZmVyYWJseSBhIFVSTCksIGFu ZCBhIGNvbnRhY3QgKGVtYWlsDQogIGFkZHJlc3MpLg0KDQogIC9FZGl0b3LigJlzIG5vdGU6IHBs ZWFzZSBmb2xsb3cgdGhlIGFyY2hpdmUgbGluayBmb3IgdGhlIGxpc3Qgb2YNCiAgcGFja2FnZXMg dG8gYmUgYXJjaGl2ZWQuLw0KDQoNCmJsYW1lLCBhIHNpbXBsZSB3ZWJhcHAgYXMgYW4gdW5pa2Vy bmVsDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1i bGFtZS1hLXNpbXBsZS13ZWJhcHAtYXMtYW4tdW5pa2VybmVsLzE3NTg4LzE+DQoNCg0KQ2FsYXNj aWJldHRhIFJvbWFpbiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0K DQogIEkgYW0gcGxlYXNlZCB0byBhbm5vdW5jZSB0aGUgZGV2ZWxvcG1lbnQgb2YgW2BibGFtZSdd LCBhIHVuaWtlcm5lbA0KICB0aGF0IHByb3ZpZGVzIGEgc2VhcmNoIGVuZ2luZSBpbiB0aGUgZm9y bSBvZiBhIHdlYiBpbnRlcmZhY2UgYmFzZWQgb24NCiAgYW4gZW1haWwgYXJjaGl2ZS4NCg0KICBU aGlzIHdvcmsgaXMgc3BvbnNvcmVkIGJ5IFtOTG5ldF0gYXMgcGFydCBvZiBvdXIgW1BUVF0gcHJv amVjdC4gRm9yDQogIG1vcmUgZGV0YWlscyBvbiB0aGUgdW5pa2VybmVsLCBvdXIgYXJjaGl2ZSBz eXN0ZW0sIGFuZCBvdXIgc2VhcmNoDQogIGVuZ2luZSwgd2UgcmVjb21tZW5kIHJlYWRpbmcgb3Vy IGFydGljbGUgYXZhaWxhYmxlIFtoZXJlXS4gVGhpcw0KICBwcm9qZWN0IGlzIHRoZSBzeW50aGVz aXMgb2Ygc2V2ZXJhbCBwcm9qZWN0cyBvbiB0aGUgc3ViamVjdDoNCiAg4oCiIFttcm1pbWVdIHRv IHBhcnNlL2VuY29kZSBlbWFpbHMNCiAg4oCiIFtjYXJ0b25dIHRvIGFyY2hpdmUgZW1haWxzDQog IOKAoiBbc3RlbV0gdG8gc2VhcmNoIGVtYWlscw0KICDigKIgW2JsYXplXSBsaWtlIGEgU3dpc3Mg QXJteSBrbmlmZSBmb3IgbWFuaXB1bGF0aW5nIGVtYWlscyBhbmQgYXJjaGl2ZXMNCiAg4oCiIGFu ZCBvZiBjb3Vyc2Ugc29tZSBvZiBvdXIgcHJvamVjdHMgbGlrZSBbbWlvdV0sIFt1dGNwXSBvciBb dmlmXQ0KDQogIElmIHlvdSBsaWtlIG91ciB3b3JrLCB5b3UgY2FuIHNwb25zb3IgdXMgW3ZpYSBH aXRIdWJdIG9yIGJ5IGZvbGxvd2luZw0KICB0aGUgaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZSBbaGVy ZV0uIFRoYW5rIHlvdSB0byBldmVyeW9uZSB3aG8gaGFzDQogIHBhcnRpY2lwYXRlZCBpbiB0aGUg ZGV2ZWxvcG1lbnQgb2YgdGhlc2UgcHJvamVjdHMsIHdoZXRoZXIgZGlyZWN0bHkgb3INCiAgaW5k aXJlY3RseS4NCg0KICBTbywgaGFwcHkgaGFja2luZyAiZGlzY3JpbWluYXRpbmcgaGFja2VycyIg OikgIQ0KDQoNCltgYmxhbWUnXSA8aHR0cHM6Ly9naXRodWIuY29tL3JvYnVyLWNvb3AvYmxhbWUu Z2l0Pg0KDQpbTkxuZXRdIDxodHRwczovL25sbmV0Lm5sLz4NCg0KW1BUVF0gPGh0dHBzOi8vbmxu ZXQubmwvcHJvamVjdC9QVFQvPg0KDQpbaGVyZV0NCjxodHRwczovL2Jsb2cucm9idXIuY29vcC9h cnRpY2xlcy8yMDI1LTA0LTEyLXB0dC1zZWFyY2gtd2ViYXBwLmh0bWw+DQoNClttcm1pbWVdIDxo dHRwczovL2dpdGh1Yi5jb20vbWlyYWdlL21ybWltZT4NCg0KW2NhcnRvbl0gPGh0dHBzOi8vZ2l0 aHViLmNvbS9yb2J1ci1jb29wL2NhcnRvbj4NCg0KW3N0ZW1dIDxodHRwczovL2dpdGh1Yi5jb20v cm9idXItY29vcC9zdGVtPg0KDQpbYmxhemVdIDxodHRwczovL2dpdGh1Yi5jb20vZGlub3NhdXJl L2JsYXplPg0KDQpbbWlvdV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9yb2J1ci1jb29wL21pb3U+DQoN Clt1dGNwXSA8aHR0cHM6Ly9naXRodWIuY29tL3JvYnVyLWNvb3AvdXRjcD4NCg0KW3ZpZl0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9yb2J1ci1jb29wL3ZpZj4NCg0KW3ZpYSBHaXRIdWJdIDxodHRwczov L2dpdGh1Yi5jb20vc3BvbnNvcnMvcm9idXItY29vcD4NCg0KW2hlcmVdIDxodHRwczovL3JvYnVy LmNvb3AvRG9uYXRlPg0KDQoNCkEgbmV3IGtpbmQgb2Yga25vd2xlZGdlLWJhc2UgZm9yIE9DYW1s J3MgZG9jDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy90L2EtbmV3LWtpbmQtb2Yta25vd2xlZGdlLWJhc2UtZm9yLW9jYW1scy1k b2MvMTc1OTMvMT4NCg0KDQpNb3N0YWZhIFRvdW55IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoN CiAgSGVsbG8sDQoNCiAgSSBoYXZlIGJlZW4gZm9sbG93aW5nIEBzYWJpbmUncyBwb3N0LA0KICA8 aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2xvb2tpbmctZm9yLW1haW50YWluZXJzLW1vZGVy YXRvcnMtZm9yLXRoZS1vY2FtbC1jb29rYm9vay8xNjQ5Nz4uDQoNCiAgSSByZWFsbHkgd2FudCB0 byBjb250cmlidXRlIGJ1dCBsaWtlIGFueSBlbmdpbmVlciwgSSBhbSBwcmVzc3VyZWQgb24NCiAg ZGVhZGxpbmVzLCB3aGljaCBpbmNlbnRpdml6ZXMgbWUgdG8gYXNrIGhlcmUgb3IgaW4gRGlzY29y ZC4gVGhlcmUgYXJlDQogIGV2ZW4gd29uZGVyZnVsIGJvb2tzIGxpa2UgW1R5cGUgVGhlb3J5IGFu ZCBGb3JtYWwgUHJvb2ZdLCBidXQgSSBjYW5ub3QNCiAgYWxsb2NhdGUgZ29vZCB0aW1lIHRvIHJl YWQgdGhlbS4NCg0KICBUaGF0IG1vdGl2YXRlZCBtZSB0byB0aGluayBvZiBhIG5ldyBtZWNoYW5p c20sIHdoZXJlIGRvY3VtZW50YXRpb25zDQogIGFuZCBxdWVzdGlvbi1hbnN3ZXJzIGFyZSBicmlk Z2VkLCB0aHJvdWdoIFtTbmlwcGV0XSBwcm9qZWN0Lg0KDQogIFNvbWVvbmUgYXNrcyBhIHF1ZXN0 aW9uIGxpa2UgW3RoaXNdLiBJbnN0ZWFkIG9mIGFuc3dlcmluZyB0aGUNCiAgcXVlc3Rpb24sIHlv dSBtdXN0IGNvbnRyaWJ1dGUgYSBzZWxmLWNvbnRhaW5lZCBwYXJhZ3JhcGgsIGNhbGxlZA0KICAi c25pcHBldCIsIHRoZW4gY2l0ZSBpdCBpbiB0aGUgcXVlc3Rpb24uIEZvciBleGFtcGxlIHRoZSBx dWVzdGlvbg0KICBjaXRlczoNCiAg4oCiIHNuaXBwZXQgW1BhcmFtZXRyaWMgQWJzdHJhY3Rpb24g d2l0aCBGdW5jdG9ycyBhbmQgTW9kdWxlc10gZGVzaWduDQogICAgcGF0dGVybiBpbiBPQ2FtbCwg Y2l0aW5nDQogIOKAoiBzbmlwcGV0IFtGdW5jdG9yLCBPQ2FtbF0gbGlua2luZyB0byBPQ2FtbCdz IGRvYywgY2l0aW5nDQogIOKAoiBzbmlwcGV0IFtGdW5jdG9yLCBQTF0gbGlua2luZyB0byBDYXRl Z29yeSB0aGVvcnkgYmxvZywgY2l0aW5nDQogIOKAoiBzbmlwcGV0IFtBYnN0cmFjdCBEYXRhIFR5 cGVzXSBsaW5raW5nIHRvIFNvZnR3YXJlIEZvdW5kYXRpb25zIGJvb2suDQoNCiAgSWYgc29tZSBz bmlwcGV0IGdldHMgYSBoaWdoIG51bWJlciBvZiBjaXRhdGlvbnMsIHRoZW4gdGhhdCB3b3VsZCBi ZSBhDQogIHNpZ25hbCB0byBjb250cmlidXRlIGl0IHRvIE9DYW1sJ3MgZG9jdW1lbnRhdGlvbnMg b3IgW09DYW1sdmVyc2VdLiBJbg0KICBvdGhlciB3b3JkcywgT0NhbWwncyBjb29rYm9va3Mgd2ls bCBiZSBuYXR1cmFsbHkgY29udHJpYnV0ZWQgYXMgbW9yZQ0KICBwZW9wbGUncyBxdWVzdGlvbnMg Z2V0IGFuc3dlcmVkLCBhbmQgd2lsbCBiZSBuYXR1cmFsbHkgY2VydGlmaWVkIGFzDQogIG1vcmUg cGVvcGxlIGNpdGUgaXQhDQoNCiAgVGhlIHByb2plY3QgaXMgYnVpbHQgb24gRHJlYW0sIG9wZW4t c291cmNlLCBhbmQgQ0MgNC4wIGxpY2Vuc2VkLiBJJ2QNCiAgYmUgaGFwcHkgdG8gc2VlIE9DYW1s J3MgbWFpbnRhaW5lcnMgc2VsZi1ob3N0IGFuIGluc3RhbmNlIG9mIGl0IGluDQogIE9DYW1sJ3Mg b2ZmaWNpYWwgd2Vic2l0ZS4gV2UgY291bGQgZXZlbiBkZXNpZ24gYSB2b3RpbmcgbWVjaGFuaXNt IHRvDQogIGVsZWN0IHNuaXBwZXRzIGZvciB0aGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbi4NCg0K ICBGb3Igbm93LCBJIGFtIGhhcHB5IHRvIGxpc3RlbiB0byB5b3VyIGZlZWRiYWNrLg0KDQoNCltU eXBlIFRoZW9yeSBhbmQgRm9ybWFsIFByb29mXQ0KPGh0dHBzOi8vd3d3LmNhbWJyaWRnZS5vcmcv Y29yZS9ib29rcy90eXBlLXRoZW9yeS1hbmQtZm9ybWFsLXByb29mLzA0NzI2NDBBQUQzNEUwNDVD N0YxNDBCNDZBNTdBNjdDPg0KDQpbU25pcHBldF0gPGh0dHBzOi8vc25pcHBldC5tb3N0YWZhdG91 bnkuY29tL2Fib3V0Pg0KDQpbdGhpc10gPGh0dHBzOi8vc25pcHBldC5tb3N0YWZhdG91bnkuY29t L3F1ZXN0aW9uLzIvc2hvdz4NCg0KW1BhcmFtZXRyaWMgQWJzdHJhY3Rpb24gd2l0aCBGdW5jdG9y cyBhbmQgTW9kdWxlc10NCjxodHRwczovL3NuaXBwZXQubW9zdGFmYXRvdW55LmNvbS9zbmlwcGV0 LzI1L3Nob3c+DQoNCltGdW5jdG9yLCBPQ2FtbF0gPGh0dHBzOi8vc25pcHBldC5tb3N0YWZhdG91 bnkuY29tL3NuaXBwZXQvMjYvc2hvdz4NCg0KW0Z1bmN0b3IsIFBMXSA8aHR0cHM6Ly9zbmlwcGV0 Lm1vc3RhZmF0b3VueS5jb20vc25pcHBldC8yOC9zaG93Pg0KDQpbQWJzdHJhY3QgRGF0YSBUeXBl c10gPGh0dHBzOi8vc25pcHBldC5tb3N0YWZhdG91bnkuY29tL3NuaXBwZXQvMjcvc2hvdz4NCg0K W09DYW1sdmVyc2VdIDxodHRwczovL29jYW1sdmVyc2UubmV0Lz4NCg0KDQpTZXJpYWxwb3J0IC0g bmV3IHNlcmlhbCBjb21tdW5pY2F0aW9uIGxpYnJhcnkNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0K DQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLXNlcmlhbHBv cnQtbmV3LXNlcmlhbC1jb21tdW5pY2F0aW9uLWxpYnJhcnkvMTc1OTQvMT4NCg0KDQpNaWtoYWls IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSADQoNCiAgSGkgdGhlcmUhDQoNCiAgSSdtIGhhcHB5IHRvIGFubm91bmNlIHRoZSBmaXJz dCByZWxlYXNlIG9mIHRoZSBbc2VyaWFscG9ydF0NCiAgbGlicmFyeS4gVGhlIGxpYnJhcnkgaXMg cGxhbm5lZCB0byBiZSBhIGNyb3NzLXBsYXRmb3JtIGxpYnJhcnkgZm9yDQogIHNlcmlhbCBwb3J0 IGNvbW11bmljYXRpb24gaW4gT0NhbWwsIHdoaWNoIHN1cHBvcnRzIGJvdGggUE9TSVggYW5kDQog IFdpbmRvd3Mgc3lzdGVtcy4gSXQgcHJvdmlkZXMgc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91 cyBpbnRlcmZhY2VzDQogIHVzaW5nIHZhcmlvdXMgSS9PIGxpYnJhcmllcyAobGlrZSBMd3QgYW5k IG90aGVyKS4NCg0KICBUaGUgbGlicmFyeSBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBQT1NJWCBz eXN0ZW1zLg0KDQogIDxodHRwczovL2dpc3QuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2R4M21vZC80 MDJlZjRjNWYzZjA2NjQ1YzZjNzEwMGRhMmU4Njc2Zi9yYXcvMzFmMjFmMTk5MjNlZDJkZDRhMWE0 NzdkOGNiYmMxZDA2ZDU5ZjA3Yi9zZXJpYWxwb3J0LnN2Zz4NCg0KICBUaGUgbWFpbiBtb3RpdmF0 aW9uIGJlaGluZCBjcmVhdGluZyB0aGlzIHByb2plY3QgaXMgdG8gYWRkcmVzcyB0aGUNCiAgbGFj ayBvZiBhIGNvbXByZWhlbnNpdmUgbGlicmFyeSBmb3IgbWFuYWdpbmcgc2VyaWFsIHBvcnQgY29t bXVuaWNhdGlvbg0KICBpbiBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLCBhcyB3ZWxsIGFzIHRoZSBs YWNrIG9mIGFuIGludHVpdGl2ZSBBUEkgZm9yDQogIHRoaXMgdGFzay4gVGhlIGV4aXN0aW5nIFtP U2VyaWFsXSBsaWJyYXJ5IGhhcyBzaWduaWZpY2FudCBsaW1pdGF0aW9ucw0KICBpbiB0ZXJtcyBv ZiBmdW5jdGlvbmFsaXR5IGFuZCBmdXR1cmUgZGV2ZWxvcG1lbnQsIG1ha2luZyBpdCB1bnN1aXRh YmxlDQogIGZvciB1c2UgaW4gbW9kZXJuIGVudmlyb25tZW50cy4NCg0KICBUaGUgc2VyaWFsIHBv cnQgbGlicmFyeSBpcyBtb3N0IGluc3BpcmVkIGJ5IHNpbWlsYXIgaW1wbGVtZW50YXRpb25zIGlu DQogIG90aGVyIGxhbmd1YWdlcywgc3VjaCBhcyBSdXN0J3Mgc2VyaWFscG9ydCBhbmQgR29sYW5n J3MNCiAgYnVnc3QvZ28tc2VyaWFsLg0KDQoNCltzZXJpYWxwb3J0XSA8aHR0cHM6Ly9naXRodWIu Y29tL2R4M21vZC9zZXJpYWxwb3J0Pg0KDQpbT1NlcmlhbF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9t LWxhbmlha2VhL29zZXJpYWw+DQoNClVzYWdlDQrilYzilYzilYzilYzilYwNCg0KICBUeXBpY2Fs bHksIGFuIGV4YW1wbGUgb2YgdXNhZ2UgaXMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGEgUEMgYW5k IGFuDQogIEFyZHVpbm8gYm9hcmQgb3Igb3RoZXIgZGV2aWNlcyB2aWEgYW4gb2xkLXNjaG9vbCBz ZXJpYWwgcG9ydC4NCg0KICDilIzilIDilIDilIDilIANCiAg4pSCICMgI3JlcXVpcmUgInNlcmlh bHBvcnQudW5peCI7Ow0KICDilIIgICgqICNyZXF1aXJlICJzZXJpYWxwb3J0Lmx3dCI7OyAqKQ0K ICDilIIgDQogIOKUgiAjIGxldCBwb3J0X29wdHMgPSBTZXJpYWxwb3J0LlBvcnRfb3B0aW9ucy5t YWtlIH5iYXVkX3JhdGU6OTYwMCAoKQ0KICDilIIgICBhbmQgcG9ydF9uYW1lID0gIi9kZXYvdHR5 VVNCMCIgaW4NCiAg4pSCIA0KICDilIIgICBTZXJpYWxwb3J0X3VuaXgud2l0aF9vcGVuX2NvbW11 bmljYXRpb24gfm9wdHM6cG9ydF9vcHRzIHBvcnRfbmFtZQ0KICDilIIgICAgIGJlZ2luIGZ1biBz ZXJfcG9ydCAtPg0KICDilIIgICAgICAgKCogR2V0IGNoYW5uZWxzIGFic3RyYWN0aW9ucyBmb3Ig aGlnaC1sZXZlbCB3b3JraW5nIHdpdGggSS9PIHdpdGhvdXQgYnVmZmVyaW5nLiAqKQ0KICDilIIg ICAgICAgbGV0IGljLCBvYyA9IFNlcmlhbHBvcnRfdW5peC50b19jaGFubmVscyBzZXJfcG9ydCBp bg0KICDilIIgICAgICAgKCogV2FpdCB1bnRpbCBBcmR1aW5vIGhhcyBiZWVuIGluaXRpYWxpemVk LiAqKQ0KICDilIIgICAgICAgVW5peC5zbGVlcCAyOw0KICDilIIgICAgICAgKCogU2VuZCB0aGUg bWVzc2FnZSB0byB0aGUgQXJkdWlubyB2aWEgdGhlIHNlcmlhbCBwb3J0LiAqKQ0KICDilIIgICAg ICAgT3V0X2NoYW5uZWwub3V0cHV0X3N0cmluZyBvYyAiSGVsbG8gZnJvbSBQQyFcbiI7DQogIOKU giAgICAgICAoKiBSZWFkIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJpYWwgcG9ydC4gKikNCiAg 4pSCICAgICAgIEluX2NoYW5uZWwuaW5wdXRfbGluZSBpYw0KICDilIIgICAgIGVuZA0KICDilJTi lIDilIDilIDilIANCg0KICBFbmpveSBpdCENCg0KDQpXaW5kb3dzIHN1cHBvcnRzDQrilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBJIHdpbGwgYmUg aW1wbGVtZW50aW5nIFdpbmRvd3Mgc3VwcG9ydCBpbiB0aGUgbmV4dCB2ZXJzaW9uIChjb21pbmcN CiAgc29vbikuDQoNCg0KUC5TLg0K4pWM4pWM4pWM4pWMDQoNCiAgSSB3b3VsZCBiZSBkZWxpZ2h0 ZWQgdG8gZGlzY3VzcyB5b3VyIGlkZWFzIGFuZCBzdWdnZXN0aW9uIQ0KDQoNCkx3dC42LjAuMH5i ZXRhIChkaXJlY3Qtc3R5bGUsIG11bHRpLWRvbWFpbiBwYXJhbGxlbGlzbSkNCuKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQog IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWx3dC02LTAtMC1iZXRhLWRpcmVjdC1z dHlsZS1tdWx0aS1kb21haW4tcGFyYWxsZWxpc20vMTcyODMvOD4NCg0KDQpSYXBoYcOrbCBQcm91 c3QgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBgbHd0LjYuMC4wLWJldGEwMScgaGFz IGJlZW4gcmVsZWFzZWQhDQoNCiAgV2l0aCB0aGlzIHJlbGVhc2UgY29tZXMgYSBjaGFuZ2UgaW4g dGhlIHRpdGxlIG9mIHRoaXMgdGhyZWFkOg0KICDilIzilIDilIDilIDilIANCiAg4pSCIC0gW0FO Tl0gTHd0LjYuMC4wfmJldGEgKGRpcmVjdC1zdHlsZSwgbXVsdGktZG9tYWluIHBhcmFsbGVsaXNt KQ0KICDilIIgKyBbQU5OXSBMd3QuNi4wLjB+YmV0YSAoZGlyZWN0LXN0eWxlLCBydW50aW1lLWV2 ZW50IHRyYWNpbmcpDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIFRoaXMgaXMgbGlrZWx5IHRoZSBs YXN0IGJldGEgYmVmb3JlIHRoZSByZWxlYXNlIG9mIEx3dC42LjAuMCwgcGxlYXNlDQogIHRlc3Qg YW5kIHNoYXJlIHlvdXIgZmVlZGJhY2suIFRoZSBoaWdobGlnaHRzIGFyZQ0KICDigKIgKGNvbXBh cmVkIHRvIHByZXZpb3VzIGJldGEpIG5vIG1vcmUgbXVsdGlkb21haW4tbXVsdGlzY2hlZHVsZXIN CiAgICBwYXJhbGxlbGlzbQ0KICAgIOKAoiBpdCB3YXMgdG9vIGJ1Z2d5LA0KICAgIOKAoiB5b3Ug Y2FuIHN0aWxsIHVzZSBgTHd0X2RvbWFpbicNCiAg4oCiIChjb21wYXJlZCB0byBwcmV2aW91cyBi ZXRhKSBydW50aW1lLWV2ZW50cyBwcm9kdWNlIGEgdHJhY2Ugb2YNCiAgICBleGVjdXRpb24gb2Yg eW91ciBsd3QgcHJvZ3JhbSBmb3IgYmV0dGVyIGRlYnVnZ2luZw0KICAgIOKAoiBvbmx5IGlmIGBs d3RfcnVudGltZV9ldmVudHMnIGlzIGluc3RhbGxlZCwNCiAgICDigKIgdHJhY2luZyBpbnN0cnVj dGlvbnMgYWRkZWQgYnkgcHB4LA0KICAgIOKAoiBleGFtcGxlIHByb2R1Y2luZyBhIHRyYWNlIG9m IHJlY2VudCBldmVudHMgaW4gY2FzZSBvZiBjcmFzaCBpbg0KICAgICAgPGh0dHBzOi8vZ2l0aHVi LmNvbS9vY3NpZ2VuL2x3dC90cmVlLzYuMC4wLWJldGEwMS9leGFtcGxlcy90cmFjaW5nPg0KICAg IOKAoiBleGFtcGxlIGxpdmUgbW9uaXRvcmluZyB0aGUgZXZlbnRzIHRvIHNlbmQgc2lnbmFsIGlu IGNhc2Ugb2Ygc3RhbGwNCiAgICAgIGluDQogICAgICA8aHR0cHM6Ly9naXRodWIuY29tL29jc2ln ZW4vbHd0L3RyZWUvNi4wLjAtYmV0YTAxL2V4YW1wbGVzL3N0YWxsX2RldGVjdGlvbj4NCiAg4oCi IChjb21wYXJlZCB0byBMd3QuNS45KSBkaXJlY3Qtc3R5bGUgd2l0aCBgTHd0X2RpcmVjdCcNCiAg ICDigKIgeW91IGNhbiB3cml0ZSBkaXJlY3Qtc3R5bGUgbHd0ICh3aXRoaW4gYSBnaXZlbiBzY29w ZSkNCiAgICDigKIgZS5nLiwgeW91IGNhbiBpbnRlcmFjdCB3aXRoIGxpYnJhcmllcyB0aGF0IG9u bHkgcHJvdmlkZSBgaXRlciA6DQogICAgICAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCcgc3Vj aCBhcw0KICAgICAg4pSM4pSA4pSA4pSA4pSADQogICAgICDilIIgbGV0IGl0ZXJfcyBmIGggPQ0K ICAgICAg4pSCICAgTHd0X2RpcmVjdC5zcGF3biBAQCBmdW4gKCkgLT4NCiAgICAgIOKUgiAgICAg SGFzaHRibC5pdGVyIChmdW4gayB2IC0+IEx3dF9kaXJlY3QuYXdhaXQgKGYgayB2KSkgaA0KICAg ICAg4pSU4pSA4pSA4pSA4pSADQoNCiAgT25jZSBhZ2FpbiwgdGhhbmtzIHRvIEBjLWN1YmUgZm9y IHRoZSBkaXJlY3Qtc3R5bGUgZmVhdHVyZSB3aGljaCBtYWtlcw0KICBpdCBwb3NzaWJsZSB0byB1 c2UgTHd0IGluIGNvbmp1bmN0aW9uIHdpdGggbGlicmFyaWVzIGV2ZW4gaWYgdGhleQ0KICBkb24n dCBpbmNsdWRlIHNwZWNpYWwgYW1lbml0aWVzIGZvciBpdC4NCg0KICBUaGFua3MgYWdhaW4gZm9y IEBlZHdpbiBmb3IgdGhlIGJ1ZyByZXBvcnQgb24gbXVsdGktc2NoZWR1bGVyLXJlbGF0ZWQNCiAg ZmFpbHVyZXMuDQoNCg0KQ2FsbCBmb3IgUGFydGljaXBhdGlvbjogQk9CIDIwMjYgKEJlcmxpbiwg TWFyIDEzKQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToN CiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9jYWxsLWZvci1wYXJ0aWNpcGF0aW9uLWJv Yi0yMDI2LWJlcmxpbi1tYXItMTMvMTc1OTgvMT4NCg0KDQpNaWNoYWVsIFNwZXJiZXIgYW5ub3Vu Y2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIANCg0KICBGaW5hbGx5LCBsb3RzIG9mIE9DYW1sIGNvbnRl bnQgYXQgQk9CIQ0KDQoNCuKAnFdoYXQgaGFwcGVucyB3aGVuIHdlIHVzZSB3aGF04oCZcyBiZXN0 IGZvciBhIGNoYW5nZT/igJ0NCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjA0KDQogIOKAoiBbYGJvYmtvbmYuZGUvMjAyNi8nXQ0KICDigKIgQmVybGluLCBNYXIgMTMN Cg0KICBCT0IgY29uZmVyZW5jZSBpcyBhIHBsYWNlIGZvciBkZXZlbG9wZXJzLCBhcmNoaXRlY3Rz LCBhbmQNCiAgZGVjaXNpb24tbWFrZXJzIHRvIGV4cGxvcmUgdGVjaG5vbG9naWVzIGJleW9uZCB0 aGUgbWFpbnN0cmVhbSBpbg0KICBzb2Z0d2FyZSBkZXZlbG9wbWVudCBhbmQgdG8gZmluZCB0aGUg YmVzdCB0b29scyBhdmFpbGFibGUgdG8gc29mdHdhcmUNCiAgZGV2ZWxvcGVycyB0b2RheS4gT3Vy IGdvYWwgaXMgZm9yIGFsbCBwYXJ0aWNpcGFudHMgb2YgQk9CIHRvIHJldHVybg0KICBob21lIHdp dGggbmV3IGluc2lnaHRzIHRoYXQgZW5hYmxlIHRoZW0gdG8gaW1wcm92ZSB0aGVpciBvd24gc29m dHdhcmUNCiAgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4NCg0KDQpbYGJvYmtvbmYuZGUvMjAyNi8n XSA8aHR0cHM6Ly9ib2Jrb25mLmRlLzIwMjYvPg0KDQoNCltQcm9ncmFtXQ0K4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWMDQoNCiAgVGhlIFtwcm9ncmFtXSBmZWF0dXJlcyAxNiB0YWxrcyBhbmQg OCB0dXRvcmlhbHMgb24gY3VycmVudCB0b3BpY3MuDQoNCiAgVGFsayBzdWJqZWN0cyBpbmNsdWRl cyBmdW5jdGlvbmFsIHByb2dyYW1taW5nLCBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUsDQogIGZvcm1h bCBtZXRob2RzLCBhY2Nlc3NpYmlsaXR5LCBVSSBwcm9ncmFtbWluZywgcmVhY3RpdmUgc3lzdGVt cywgYW5kDQogIGRvbWFpbi1kcml2ZW4gZGVzaWduLg0KDQogIEJPQiB0dXRvcmlhbCBpbmNsdWRl IHNlc3Npb25zIG9uIFR5cGVTY3JpcHQsIE9DYW1sLCBIYXNrZWxsLCBBZ2RhLA0KICBhY2Nlc3Np YmlsaXR5LCBhbmQgcmVhY3RpdmUgc3lzdGVtcy4NCg0KICBTdGVmYW4gS2F1Zm1hbm4gd2lsbCBn aXZlIHRoZSBrZXlub3RlIHRhbGsgb24gZGlnaXRhbCBzb3ZlcmVpZ250eS4NCg0KDQpbUHJvZ3Jh bV0gPGh0dHBzOi8vYm9ia29uZi5kZS8yMDI2L3Byb2dyYW0uaHRtbD4NCg0KW3Byb2dyYW1dIDxo dHRwczovL2JvYmtvbmYuZGUvMjAyNi9wcm9ncmFtLmh0bWw+DQoNCg0KW1JlZ2lzdHJhdGlvbl0N CuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFtSZWdpc3Ry YXRpb25dIGlzIG9wZW4gLSBtYW55IGRpc2NvdW50IG9wdGlvbnMgLSBpbmNsdWRpbmcgbGltaXRl ZA0KICBlYXJseS1iaXJkIGRpc2NvdW50cyAtIGFyZSBhdmFpbGFibGUsIGFzIGFyZSBncmFudHMg Zm9yIG1lbWJlcnMgb2YNCiAgZ3JvdXBzIHVuZGVycmVwcmVzZW50ZWQgaW4gdGVjaC4NCg0KDQpb UmVnaXN0cmF0aW9uXSA8aHR0cHM6Ly9ib2Jrb25mLmRlLzIwMjYvcmVnaXN0cmF0aW9uLmh0bWw+ DQoNCg0KT3RoZXIgT0NhbWwgTmV3cw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCkZyb20gdGhlIG9jYW1sLm9yZyBibG9nDQrilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBIZXJlIGFyZSBsaW5rcyBmcm9tIG1hbnkgT0NhbWwgYmxvZ3MgYWdncmVnYXRlZCBhdCBb dGhlIG9jYW1sLm9yZw0KICBibG9nXS4NCg0KICDigKIgW0FvQUggRGF5IDE0OiBEZWJ1Z2dpbmcg YSBLYXJha2VlcCBDTEkgYWdhaW5zdCB0aGUgbGl2ZSBzZXJ2aWNlXQ0KICDigKIgW0FvQUggRGF5 IDEzOiBIZWNrbGluZyBhbiBPQ2FtbCBIVFRQIGNsaWVudCBmcm9tIDUwIGltcGxlbWVudGF0aW9u cw0KICAgIGluIDEwIGxhbmd1YWdlc10NCiAg4oCiIFtBZHZlbnQgb2YgQ29kZSAyMDI1XQ0KICDi gKIgW0FvQUggRGF5IDEyOiBFaW8gQ29ubmVjdGlvbiBwb29saW5nIGFuZCBldmVudCB0cmFjaW5n XQ0KICDigKIgW09uZSBNb2xseW1hd2ssIE11bHRpcGxlIEFsYmF0cm9zcyBzZXJ2ZXJzXQ0KICDi gKIgW0FvQUggRGF5IDEwOiBCdWlsZGluZyBhIFRVSSBmb3IgU29ydGFsIHVzaW5nIE1vc2FpY10N CiAg4oCiIFtBb0FIIERheSAxMTogSFRUUCBDb29raWVzIGFuZCB2aWJpbmcgUkZDcyBmb3IgYnJl YWtmYXN0XQ0KICDigKIgW0NyZWF0aW5nIGBvY2FtbC5udmltJyB0byBCcmluZyBOZW92aW0gU3Vw cG9ydCB0byBPQ2FtbCdzIExTUA0KICAgIFNlcnZlcl0NCiAg4oCiIFtBb0FIIERheSA5OiBBZGRp bmcgYSBCb25zYWkgdGVybWluYWwgVUkgdG8gU29ydGFsXQ0KICDigKIgW09DYW1sIFJvdW5kdXA6 IE5vdmVtYmVyIDIwMjVdDQogIOKAoiBbQW4gU1ZHIGlzIGFsbCB5b3UgbmVlZF0NCiAg4oCiIFtB b0FIIERheSA4OiBCdWlsZGluZyBhIGNvbnRhY3RzIENMSSBtYW5hZ2VyIHdpdGggU29ydGFsXQ0K ICDigKIgW0FvQUggRGF5IDc6IENvbnZlcnRpbmcgYmV0d2VlbiBKU09OIGFuZCBZYW1sIHdpdGgg eWFtbHRdDQogIOKAoiBbQW9BSCBEYXkgNjogR2V0dGluZyBhIFlhbWwgMS4yIGltcGxlbWVudGF0 aW9uIGluIHB1cmUgT0NhbWxdDQogIOKAoiBbUHJpdmF0ZSByZXBvcyBpbiBPQ3VycmVudF0NCiAg 4oCiIFtBb0FIIERheSA1OiBCeXRlc3J3IEVpbyBhZGFwdGVycyBhbmQgYXV0b21hdGluZyBvcGFt IG1ldGFkYXRhXQ0KICDigKIgW0Egd2ViYXBwIHRvIHNlYXJjaCBlbWFpbHMgYXMgYW4gdW5pa2Vy bmVsXQ0KICDigKIgW0FvQUggRGF5IDQ6IEdvaW5nIHJlY3Vyc2l2ZSB3aXRoIENsYXVkZWlvIGZv ciBDbGF1ZGVdDQogIOKAoiBbQW9BSCBEYXkgMzogWERHIGZpbGVzeXN0ZW0gcGF0aHMgdXNpbmcg RWlvIGNhcGFiaWxpdGllc10NCiAg4oCiIFtBb0FIIERheSAyOiBCdWlsZGluZyBhbiBPQ2FtbCBK U09ORmVlZCBsaWJyYXJ5XQ0KICDigKIgW0FvQUggRGF5IDE6IEJ1aWxkaW5nIGEgQmFzZTMyIENy b2NrZm9yZCBsaWJyYXJ5IGluIE9DYW1sXQ0KICDigKIgW1RoZSBBSSBGcmVuY2ggQ29ubmVjdGlv biB0byB0aGUgUHJhY3RpY2Ugb2YgU2NpZW5jZV0NCiAg4oCiIFsyMDI1IEFkdmVudCBvZiBBZ2Vu dGljIEh1bXBzOiBCdWlsZGluZyBhIHVzZWZ1bCBPKHgpQ2FtbCBsaWJyYXJ5DQogICAgZXZlcnkg ZGF5XQ0KDQoNClt0aGUgb2NhbWwub3JnIGJsb2ddIDxodHRwczovL29jYW1sLm9yZy9ibG9nLz4N Cg0KW0FvQUggRGF5IDE0OiBEZWJ1Z2dpbmcgYSBLYXJha2VlcCBDTEkgYWdhaW5zdCB0aGUgbGl2 ZSBzZXJ2aWNlXQ0KPGh0dHBzOi8vYW5pbC5yZWNvaWwub3JnL25vdGVzL2FvYWgtMjAyNS0xND4N Cg0KW0FvQUggRGF5IDEzOiBIZWNrbGluZyBhbiBPQ2FtbCBIVFRQIGNsaWVudCBmcm9tIDUwIGlt cGxlbWVudGF0aW9ucyBpbg0KMTAgbGFuZ3VhZ2VzXSA8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcv bm90ZXMvYW9haC0yMDI1LTEzPg0KDQpbQWR2ZW50IG9mIENvZGUgMjAyNV0NCjxodHRwczovL3d3 dy50dW5idXJ5Lm9yZy8yMDI1LzEyLzEyL2FkdmVudC1vZi1jb2RlLz4NCg0KW0FvQUggRGF5IDEy OiBFaW8gQ29ubmVjdGlvbiBwb29saW5nIGFuZCBldmVudCB0cmFjaW5nXQ0KPGh0dHBzOi8vYW5p bC5yZWNvaWwub3JnL25vdGVzL2FvYWgtMjAyNS0xMj4NCg0KW09uZSBNb2xseW1hd2ssIE11bHRp cGxlIEFsYmF0cm9zcyBzZXJ2ZXJzXQ0KPGh0dHBzOi8vYmxvZy5yb2J1ci5jb29wL2FydGljbGVz L21vbGx5bWF3a19tZXRhLmh0bWw+DQoNCltBb0FIIERheSAxMDogQnVpbGRpbmcgYSBUVUkgZm9y IFNvcnRhbCB1c2luZyBNb3NhaWNdDQo8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcvbm90ZXMvYW9h aC0yMDI1LTEwPg0KDQpbQW9BSCBEYXkgMTE6IEhUVFAgQ29va2llcyBhbmQgdmliaW5nIFJGQ3Mg Zm9yIGJyZWFrZmFzdF0NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy9hb2FoLTIwMjUt MTE+DQoNCltDcmVhdGluZyBgb2NhbWwubnZpbScgdG8gQnJpbmcgTmVvdmltIFN1cHBvcnQgdG8g T0NhbWwncyBMU1AgU2VydmVyXQ0KPGh0dHBzOi8vdGFyaWRlcy5jb20vYmxvZy8yMDI1LTEyLTEw LWNyZWF0aW5nLW9jYW1sLW52aW0tdG8tYnJpbmctbmVvdmltLXN1cHBvcnQtdG8tb2NhbWwtcy1s c3Atc2VydmVyPg0KDQpbQW9BSCBEYXkgOTogQWRkaW5nIGEgQm9uc2FpIHRlcm1pbmFsIFVJIHRv IFNvcnRhbF0NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy9hb2FoLTIwMjUtOT4NCg0K W09DYW1sIFJvdW5kdXA6IE5vdmVtYmVyIDIwMjVdDQo8aHR0cHM6Ly9wYXRyaWNrLnNpcnJlZi5v cmcvb2NhbWwtcm91bmR1cC1ub3ZlbWJlci0yMDI1Lz4NCg0KW0FuIFNWRyBpcyBhbGwgeW91IG5l ZWRdDQo8aHR0cHM6Ly9qb24ucmVjb2lsLm9yZy9ibG9nLzIwMjUvMTIvYW4tc3ZnLWlzLWFsbC15 b3UtbmVlZC5odG1sPg0KDQpbQW9BSCBEYXkgODogQnVpbGRpbmcgYSBjb250YWN0cyBDTEkgbWFu YWdlciB3aXRoIFNvcnRhbF0NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy9hb2FoLTIw MjUtOD4NCg0KW0FvQUggRGF5IDc6IENvbnZlcnRpbmcgYmV0d2VlbiBKU09OIGFuZCBZYW1sIHdp dGggeWFtbHRdDQo8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcvbm90ZXMvYW9haC0yMDI1LTc+DQoN CltBb0FIIERheSA2OiBHZXR0aW5nIGEgWWFtbCAxLjIgaW1wbGVtZW50YXRpb24gaW4gcHVyZSBP Q2FtbF0NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy9hb2FoLTIwMjUtNj4NCg0KW1By aXZhdGUgcmVwb3MgaW4gT0N1cnJlbnRdDQo8aHR0cHM6Ly93d3cudHVuYnVyeS5vcmcvMjAyNS8x Mi8wNS9vY3VycmVudC1wcml2YXRlLXJlcG9zLz4NCg0KW0FvQUggRGF5IDU6IEJ5dGVzcncgRWlv IGFkYXB0ZXJzIGFuZCBhdXRvbWF0aW5nIG9wYW0gbWV0YWRhdGFdDQo8aHR0cHM6Ly9hbmlsLnJl Y29pbC5vcmcvbm90ZXMvYW9haC0yMDI1LTU+DQoNCltBIHdlYmFwcCB0byBzZWFyY2ggZW1haWxz IGFzIGFuIHVuaWtlcm5lbF0NCjxodHRwczovL2Jsb2cucm9idXIuY29vcC9hcnRpY2xlcy8yMDI1 LTA0LTEyLXB0dC1zZWFyY2gtd2ViYXBwLmh0bWw+DQoNCltBb0FIIERheSA0OiBHb2luZyByZWN1 cnNpdmUgd2l0aCBDbGF1ZGVpbyBmb3IgQ2xhdWRlXQ0KPGh0dHBzOi8vYW5pbC5yZWNvaWwub3Jn L25vdGVzL2FvYWgtMjAyNS00Pg0KDQpbQW9BSCBEYXkgMzogWERHIGZpbGVzeXN0ZW0gcGF0aHMg dXNpbmcgRWlvIGNhcGFiaWxpdGllc10NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy9h b2FoLTIwMjUtMz4NCg0KW0FvQUggRGF5IDI6IEJ1aWxkaW5nIGFuIE9DYW1sIEpTT05GZWVkIGxp YnJhcnldDQo8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcvbm90ZXMvYW9haC0yMDI1LTI+DQoNCltB b0FIIERheSAxOiBCdWlsZGluZyBhIEJhc2UzMiBDcm9ja2ZvcmQgbGlicmFyeSBpbiBPQ2FtbF0N CjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy9hb2FoLTIwMjUtMT4NCg0KW1RoZSBBSSBG cmVuY2ggQ29ubmVjdGlvbiB0byB0aGUgUHJhY3RpY2Ugb2YgU2NpZW5jZV0NCjxodHRwczovL2Fu aWwucmVjb2lsLm9yZy9ub3Rlcy9lbnRlbnRlLWNvcmRpYWxlPg0KDQpbMjAyNSBBZHZlbnQgb2Yg QWdlbnRpYyBIdW1wczogQnVpbGRpbmcgYSB1c2VmdWwgTyh4KUNhbWwgbGlicmFyeSBldmVyeQ0K ZGF5XSA8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcvbm90ZXMvYW9haC0yMDI1Pg0KDQoNCk9sZCBD V04NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIElmIHlvdSBoYXBwZW4gdG8gbWlzcyBhIENX TiwgeW91IGNhbiBbc2VuZCBtZSBhIG1lc3NhZ2VdIGFuZCBJJ2xsIG1haWwNCiAgaXQgdG8geW91 LCBvciBnbyB0YWtlIGEgbG9vayBhdCBbdGhlIGFyY2hpdmVdIG9yIHRoZSBbUlNTIGZlZWQgb2Yg dGhlDQogIGFyY2hpdmVzXS4NCg0KICBJZiB5b3UgYWxzbyB3aXNoIHRvIHJlY2VpdmUgaXQgZXZl cnkgd2VlayBieSBtYWlsLCB5b3UgbWF5IHN1YnNjcmliZQ0KICB0byB0aGUgW2NhbWwtbGlzdF0u DQoNCiAgW0FsYW4gU2NobWl0dF0NCg0KDQpbc2VuZCBtZSBhIG1lc3NhZ2VdIDxtYWlsdG86YWxh bi5zY2htaXR0QHBvbHl0ZWNobmlxdWUub3JnPg0KDQpbdGhlIGFyY2hpdmVdIDxodHRwczovL2Fs YW4ucGV0aXRlcG9tbWUubmV0L2N3bi8+DQoNCltSU1MgZmVlZCBvZiB0aGUgYXJjaGl2ZXNdIDxo dHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0L2N3bi9jd24ucnNzPg0KDQpbY2FtbC1saXN0XSA8 aHR0cHM6Ly9zeW1wYS5pbnJpYS5mci9zeW1wYS9pbmZvL2NhbWwtbGlzdD4NCg0KW0FsYW4gU2No bWl0dF0gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvPg0KDQo= --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of December 09 to 16, 20= 25.

Software Engineer (OCaml) – LexiFi, Paris

Alain Frisch announced

Hi all,

LexiFi is looking for a Software = Engineer to join our development team in Paris. The work is primarily i= n OCaml, contributing to our codebase across core components, tooling, and = product features.

If you're interested in working on a large, long-lived OCaml system used in= production by financial institutions, you can find the full job descriptio= n here: https://www.lexifi.com/careers/software_engineer/

Happy to answer any questions!

Opam repository archival, next run (scheduled 2026-01-01)

Hannes Mehnert announced

Dear everyone,

we did another run of the archival based on the x-maintenance-intent of opa= m packages. The run was using opam-repository at co= mmit d684c896eb6f7e6030d6ee65338d9db22a612f01 (Dec 9th, 20:00:00 CET).

The tool used is maintenance-intent-fil= ter with opam 2.5 and OCaml 5.4. It took around 1GB of memory and aroun= d 100h of CPU time (donations welcome= ).

In total, 4510 packages were candidates, out of which 3361 are scheduled fo= r archival.

Testing

To test whether your CI / lock / environment will be affected by the remova= l of packages, you can create a fresh opam switch and use the opam-reposito= ry from the branch:

$ opam repository add archival-20260101 https://github.com/hannesm/opam-rep=
ository.git#archival-20260101
$ opam switch create archival-20260101  --repositories archival-20260101
$ eval `opam env`

Alternatively, in CI systems you can do temporarily for testing:

$ opam repo set-url default https://github.com/hannesm/opam-repository.git#=
archival-20260101

Reverting archival

If you want to preserve a package, please don=E2=80=99t hesitate to comment= on the issue https://github.com/ocaml/opam-repository/pull/29058

It is important that you include the package name and its version, as well = as where it is used (preferably a URL), and a contact (email address).

Editor=E2=80=99s note: please follow the archive link for the list of pa= ckages to be archived.

blame, a simple webapp as an unikernel

Calascibetta Romain announced

I am pleased to announce the development of blame, a unikernel that provides a se= arch engine in the form of a web interface based on an email archive.

This work is sponsored by NLnet as part o= f our PTT project. For more d= etails on the unikernel, our archive system, and our search engine, we reco= mmend reading our article available here. This project is the synth= esis of several projects on the subject:

  • mrmime to parse/encode= emails
  • carton to archive = emails
  • stem to search email= s
  • blaze like a Swiss A= rmy knife for manipulating emails and archives
  • and of course some of our projects like miou, ut= cp or vif

If you like our work, you can sponsor us via GitHub or by following the instructions available = here. Thank you to everyone who h= as participated in the development of these projects, whether directly or i= ndirectly.

So, happy hacking "discriminating hackers" :) !

A new kind of knowledge-base for OCaml's doc

Mostafa Touny announced

Hello,

I have been following @sabine's post, https://= discuss.ocaml.org/t/looking-for-maintainers-moderators-for-the-ocaml-cookbo= ok/16497.

I really want to contribute but like any engineer, I am pressured on deadli= nes, which incentivizes me to ask here or in Discord. There are even wonder= ful books like Type Theory and Formal P= roof, but I cannot allocate good time to read them.

That motivated me to think of a new mechanism, where documentations and que= stion-answers are bridged, through Snippet project.

Someone asks a question like this. Instead of answering the question, you must contri= bute a self-contained paragraph, called "snippet", then cite it in the ques= tion. For example the question cites:

If some snippet gets a high number of citations, then that would be a signa= l to contribute it to OCaml's documentations or OCamlverse. In other words, OCaml's cookbooks will be naturall= y contributed as more people's questions get answered, and will be naturall= y certified as more people cite it!

The project is built on Dream, open-source, and CC 4.0 licensed. I'd be hap= py to see OCaml's maintainers self-host an instance of it in OCaml's offici= al website. We could even design a voting mechanism to elect snippets for t= he official documentation.

For now, I am happy to listen to your feedback.

Serialport - new serial communication library

Mikhail announced

Hi there!

I'm happy to announce the first release of the serialport library. The library is planned to be a= cross-platform library for serial port communication in OCaml, which suppo= rts both POSIX and Windows systems. It provides synchronous and asynchronou= s interfaces using various I/O libraries (like Lwt and other).

The library currently only supports POSIX systems.

The main motivation behind creating this project is to address the lack of = a comprehensive library for managing serial port communication in different= environments, as well as the lack of an intuitive API for this task. The e= xisting OSerial libra= ry has significant limitations in terms of functionality and future develop= ment, making it unsuitable for use in modern environments.

The serial port library is most inspired by similar implementations in othe= r languages, such as Rust's serialport and Golang's bugst/go-serial.

Usage

Typically, an example of usage is communication between a PC and an Arduino= board or other devices via an old-school serial port.

# #require "serialport.unix";;
 (* #require "serialport.lwt";;=
 *)

# let port_opts =3D Serialport.Port_options.make ~baud_rate:9600 ()
  and port_name =3D "=
/dev/ttyUSB0" in<=
/span>

  Serialport_unix.with_open_communication ~opts:port_opts port_name
    begin fun ser_port ->
      (* Get channels abstractions for =
high-level working with I/O without buffering. *)
      let ic, oc =3D Serialport_unix.<=
/span>to_channels ser_port in
      (* Wait until Arduino has been in=
itialized. *)
      Unix.sleep =
2;
      (* Send the message to the Arduin=
o via the serial port. *)
      Out_channel.output_string oc "Hello from PC!\n";
      (* Read the response from the ser=
ial port. *)
      In_channel.=
input_line ic
    end

Enjoy it!

Windows supports

I will be implementing Windows support in the next version (coming soon).

P.S.

I would be delighted to discuss your ideas and suggestion!

Lwt.6.0.0~beta (direct-style, multi-domain parallelism)

Rapha=C3=ABl Proust announced

lwt.6.0.0-beta01 has been released!

With this release comes a change in the title of this thread:

- [ANN] Lwt.6.0.0~beta (direct-style, multi-domain parallelism)
+ [ANN] Lwt.6.0.0~beta (direct-style, runtime-event tracing)

This is likely the last beta before the release of Lwt.6.0.0, please test a= nd share your feedback. The highlights are

  • (compared to previous beta) no more multidomain-multischeduler parallel= ism
    • it was too buggy,
    • you can still use Lwt_domain
  • (compared to previous beta) runtime-events produce a trace of execution= of your lwt program for better debugging
    • only if lwt_runtime_events is installed,
    • tracing instructions added by ppx,
    • example producing a trace of recent events in case of crash in http= s://github.com/ocsigen/lwt/tree/6.0.0-beta01/examples/tracing
    • example live monitoring the events to send signal in case of stall in <= a href=3D"https://github.com/ocsigen/lwt/tree/6.0.0-beta01/examples/stall_d= etection">https://github.com/ocsigen/lwt/tree/6.0.0-beta01/examples/stall_d= etection
  • (compared to Lwt.5.9) direct-style with Lwt_direct
    • you can write direct-style lwt (within a given scope)
    • e.g., you can interact with libraries that only provide iter : ('a -&= gt; unit) -> 'a -> unit such as

      let iter_s f h =
      =3D
        Lwt_direct.spaw=
      n @@ fun () ->
          Hashtbl.iter =
      (fun k v ->=
      ; Lwt_direct.awai=
      t (f k v)) h
      

Once again, thanks to @c-cube for the direct-style feature which makes it p= ossible to use Lwt in conjunction with libraries even if they don't include= special amenities for it.

Thanks again for @edwin for the bug report on multi-scheduler-related failu= res.

Call for Participation: BOB 2026 (Berlin, Mar 13)

Michael Sperber announced

Finally, lots of OCaml content at BOB!

=E2=80=9CWhat happens when we use what=E2=80=99s best= for a change?=E2=80=9D

BOB conference is a place for developers, architects, and decision-makers to explore technologies beyond the mainstream in software development and to find the best tools available to software developers today. Our goal is for all participants of BOB to return home with new insights that enable them to improve their own software development experience.

Prog= ram

The program features 1= 6 talks and 8 tutorials on current topics.

Talk subjects includes functional programming, software architecture, formal methods, accessibility, UI programming, reactive systems, and domain-driven design.

BOB tutorial include sessions on TypeScript, OCaml, Haskell, Agda, accessibility, and reactive systems.

Stefan Kaufmann will give the keynote talk on digital sovereignty.

Registration

Registration is o= pen - many discount options - including limited early-bird discounts - are available, as are grants for members of groups underrepresented in tech.

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a loo= k at the archive or the <= a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive= s.

If you also wish to receive it every week by mail, you may subscribe to the= caml-list.

--=-=-=--