From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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= Authentication-Results: plum; dmarc=fail (p=none dis=none) header.from=polytechnique.org 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=E2pdb3XE; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=polytechnique.org header.i=@polytechnique.org header.a=rsa-sha256 header.s=svoboda header.b=3vfrFBo8; dkim-atps=neutral Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id 9AA82B80123 for ; Tue, 4 Jun 2024 14:26:29 +0100 (BST) 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=kT3Z9Ihd1i5V0LD9xq1W2HV3U3ovum3Ps83RQCz5kzw=; b=E2pdb3XEyIkutpMxFS5UXo2QcJivKK6+nVCOAc5TSvKqPZB4vYVMEpSf 71hXVAXtNPgHnhCMYCGUHR8XbRHz2wdAFGHo2U/2omdJrtQ/8tFxScmeL qP1e88yvCovoh+aqprqI5EU9D789vZvMARcu9yV735v5XJZW3GnUbxWAb E=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; 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:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (signature did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.08,213,1712613600"; d="scan'208,217";a="168966577" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 04 Jun 2024 15:26:27 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 7CBAAE0D59; Tue, 4 Jun 2024 15:26:27 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 670A5E0035 for ; Tue, 4 Jun 2024 15:26:23 +0200 (CEST) IronPort-SDR: 665f15fd_D6FJXUJpeubTl1bGeq5d7KdKrcrUsaSLlZnCCTolXJmP2Ka k6pwO2j6vy75MRPD84a7kcTMUO7YanRFQZiak9w== X-IPAS-Result: =?us-ascii?q?A0FbAgBmFF9mkCIeaIFagliBQYEDGQFiWhkaBwhIhFaDT?= =?us-ascii?q?44bkUeKcYFWFIEsFiMUAQMBDS4BDgQBAgQBAQMBAgGEOUYCFohKAh8GAQQyB?= =?us-ascii?q?w4BAgQBAQEBAwIDAQEBAQEBCAEBBQEBAQIBAQIEBgECEAEBAQEBASAeEA4nh?= =?us-ascii?q?XQNgkoZFSNrZQk3AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAgwBGYEDAQgKEwEBOBgjAxQBBgMCBA0BNRcBEhQGgiJEAYJkA?= =?us-ascii?q?wUMBpQHmzt6gTKBAYIMAQEGgQg+AgELAgIDDy4B2gSBYwmBMBiIFxoBJEhpA?= =?us-ascii?q?oQlhEAnD4FVRIEVNYJEb4I/CxcCAQGBJBUDAQECBAIJPAmDJYJphgiCAwGFS?= =?us-ascii?q?Vd+giRBgVMwbYEKLxhggicPgS1qDyRpgQFdD4IVFEICDIFMgUJ/JgtECVIQi?= =?us-ascii?q?AOBS0szIRMBVRMXCz4dAhYDGxQEMA8JCyYqBjkCEgwGBgZZNAkEIwMIBANCA?= =?us-ascii?q?yBxEQMEGgQLB3WBPIFpBBNEA4E3hx2CVoM7gh2EHEuEc4FrDGGIFYFzgUOBZ?= =?us-ascii?q?lCDLh1AAwttPTUUG6dRBDYCgm0CJA4KLgYBAWIHERMBGw4CIg0nAg4CERgHA?= =?us-ascii?q?xkRCBsEEQEHLQsFCC2SMRQoBCgBsQRsNAeEFoFcBgyIfYEklW+EBYFWiyqZM?= =?us-ascii?q?SKYQiCCNIcegSUJgW1plUIEhU6BbAMwgSsbAwwHMxowQ4JnCQo8HA+OKgIBA?= =?us-ascii?q?RWDWIE8AoEmgSRRO8Q8MkE1AgEBBzACBwEKAQEDCYViAQGDDDKBSAEB?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 tVh3pTmOHm4FQ== IronPort-HdrOrdr: A9a23:CUdSD6imGF6pqu+JDrostJDfRHBQXucji2hC6mlwRA09TyX4rb HMoB1/73XJYVkqNk3I9ersBEDiexPhHPxOgLX5VI3KNGLbUQCTQ72Kg7GP/xTQXwXAssRd2a 1jf6UWMqyTMXFKyeDg7k2dG9YkqeP3lJxAaN2uqktQcQ== X-Talos-CUID: 9a23:KPOUWmB0nkzRiCz6Ewdr834IIpopS3Dm8nffYF2IVUpDRLLAHA== X-Talos-MUID: =?us-ascii?q?9a23=3A70BSMA6OSYMbBBujl/StWcujxoxZ36XtT3w2wa8?= =?us-ascii?q?L+PuoLxAvaz7agR2eF9o=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.08,213,1712613600"; d="scan'208,217";a="88807064" X-MGA-submission: =?us-ascii?q?MDHQX6KZt1KsULAmttgI4sIIWSEBEZqGXa4mFA?= =?us-ascii?q?k/JCUrS2eZsAhtDLpFUsHTpqvY2eqC1muJfTMj3HmxsvaTWXcUGC2CM9?= =?us-ascii?q?gbX/SsyjwDAzExD0h1puYX3PJlzCPWec0yoVwsuY9G/ak0QpEEDhrcpp?= =?us-ascii?q?Qihez8AymfbrkXj8zGffb+DA=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; 04 Jun 2024 15:26:22 +0200 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 B8B54564688; Tue, 4 Jun 2024 15:26:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1717507579; bh=X4yY8T/stnW2+vyL1o4m/9MiRN0ltxcYB51Zhn61OB0=; h=From:To:Subject:Date:Message-ID; b=3vfrFBo85TEJYKXlPS5JgX0hjBdXDyAowIgudu1+XTeErSzzc13vZ2/RQ1hBwGwzM JnPpHZVEqCK1xmnn4qrFMFyvh/Um0HDJqEkLKEwQAH8+/d13gRQl2Uew/mNI1aotTW mDYx8oBaF5l2kD+KJroWB5Rvcw1dWb2JZBFpvSFg= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 04 Jun 2024 15:26:19 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Jun 4 15:26:20 2024 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.499999, queueID=17E32564689 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: 19139 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 ZWsgb2YgTWF5IDI4IHRvIEp1bmUgMDQsDQoyMDI0Lg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCnYwLjE3 IHJlbGVhc2Ugb2YgSmFuZSBTdHJlZXQgcGFja2FnZXMNCmpzb25zY2hlbWEyYXRkLCBHZW5lcmF0 ZSBhbiBBVEQgZmlsZSBmcm9tIGEgSlNPTiBTY2hlbWEgLyBPcGVuQVBJIGRvY3VtZW50DQpvcGFt LXJlcG9zaXRvcnkgcG9saWN5IGNoYW5nZTogY2hlY2tzdW1zIChubyBtZDUpIGFuZCBubyBleHRy YS1maWxlcw0KQ2FtbGtpdCDigJMgbWFjT1MvaU9TL0dOVXN0ZXAgdG9vbGtpdCBmb3IgT0NhbWwN CnBvc2l0aW9uIGZvciBNb29uQml0IGFkdm9jYXRlDQpXaHkgaXMgdGhlcmUgbm8gdHJhZGl0aW9u IG9mIENMSSBhbmQgVFVJIGFwcHM/DQpQcHhsaWIgZGV2IG1lZXRpbmdzDQpZb2pzb24gMi4yLjAN CkdyYWNlIDAuMi4wIPCfkoUsIGZhbmN5IGRpYWdub3N0aWNzIGxpYnJhcnkgZm9yIGNvbXBpbGVy cw0KRmlyc3QgcmVsZWFzZSBvZiBTbGlwc2hvdyBvbiBvcGFtIQ0KT3RoZXIgT0NhbWwgTmV3cw0K T2xkIENXTg0KDQoNCnYwLjE3IHJlbGVhc2Ugb2YgSmFuZSBTdHJlZXQgcGFja2FnZXMNCuKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFy Y2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLXYwLTE3LXJlbGVhc2Ut b2YtamFuZS1zdHJlZXQtcGFja2FnZXMvMTQ3MTcvMT4NCg0KDQpEaWFuYSBLYWxpbmljaGVua28g YW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICAqdjAuMTcgcmVsZWFz ZSBvZiBKYW5lIFN0cmVldCBwYWNrYWdlcyoNCg0KICBEZWFyIE9DYW1sIGRldmVsb3BlcnMsDQoN CiAgV2UgYXJlIHBsZWFzZWQgdG8gYW5ub3VuY2UgdGhlIHYwLjE3IHJlbGVhc2Ugb2YgSmFuZSBT dHJlZXQgcGFja2FnZXMhDQoNCiAgVGhpcyByZWxlYXNlIGNvbWVzIHdpdGggMTUgbmV3IHBhY2th Z2VzIGFuZCBhIG11bHRpdHVkZSBvZiBuZXcNCiAgZmVhdHVyZXMgYW5kIGZpeGVzLg0KDQoNClN3 aXRjaCB0byBPQ2FtbCA1LjENCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFdlIGFyZSBzd2l0Y2hpbmcgQmFzZSBhbmQgYWxsIG91 ciBwYWNrYWdlcyAoZXhjZXB0IGBzZXhwbGliMCcpIHRvDQogIE9DYW1sIDUuMSBhbmQgYWJvdmUu IFdlIGFyZSBhbHNvIHN3aXRjaGluZyBgc2V4cGxpYjAnIHRvIDQuMTQgdG8gdGFrZQ0KICBhZHZh bnRhZ2Ugb2YgdGhlIFRhaWwgUmVjdXJzaW9uIE1vZHVsbyBDb25zIG9wdGltaXphdGlvbiBpbiB0 aGUNCiAgY29tcGlsZXIuDQoNCg0KQ29yZSBvbiBPQ2FtbCA1LjINCuKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIER1ZSB0byBzb21lIGNoYW5n ZXMgdG8gYFN0ZGxpYi5HYycgaW4gT0NhbWwgNS4yLCBgY29yZS52MC4xNy4wJyBmYWlscw0KICB0 byBjb21waWxlIHdpdGggdGhhdCBsYW5ndWFnZSB2ZXJzaW9uLiBXZSB3aWxsIHJlbGVhc2UgYSBm aXggdGhhdA0KICBhbGxvd3MgdXNpbmcgQ29yZSB3aXRoIE9DYW1sIDUuMiBzb29uLg0KDQoNClRv cmNoIGFuZCBWQ2FtbA0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWMDQoNCiAgRHVlIHRvIHNvbWUgaXNzdWVzIHdpdGggdGhlaXIgYnVpbGRzLCBgdG9yY2gudjAu MTcuMCcgYW5kDQogIGB2Y2FtbC52MC4xNy4wJyB3ZXJlIG9taXR0ZWQgZnJvbSB0aGUgbWFpbiB2 MC4xNyByZWxlYXNlLiBXZSB3aWxsIHNvb24NCiAgc3VibWl0IHRob3NlIHBhY2thZ2VzIHRvIG9w YW0uDQoNCg0KQ2hhbmdlcw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgQnJvd3NlIG91ciBb R2l0SHViIHJlcG9zaXRvcmllc10gYW5kIGxvb2sgYXQgdGhlIHJlc3BlY3RpdmUNCiAgYENIQU5H RVMubWQnIGZpbGVzIGZvciBjaGFuZ2VzIHNpbmNlIHRoZSB2MC4xNiByZWxlYXNlLiBGb3IgZXhh bXBsZXMsDQogIHNlZSBjaGFuZ2Vsb2dzIGZvciBbQmFzZV0sIFtBc3luY19rZXJuZWxdLCBhbmQg W0JvbnNhaV0uDQoNCg0KW0dpdEh1YiByZXBvc2l0b3JpZXNdIDxodHRwczovL2dpdGh1Yi5jb20v amFuZXN0cmVldD4NCg0KW0Jhc2VdIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9iYXNl L2Jsb2IvbWFzdGVyL0NIQU5HRVMubWQ+DQoNCltBc3luY19rZXJuZWxdDQo8aHR0cHM6Ly9naXRo dWIuY29tL2phbmVzdHJlZXQvYXN5bmNfa2VybmVsL2Jsb2IvbWFzdGVyL0NIQU5HRVMubWQ+DQoN CltCb25zYWldIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9ib25zYWkvYmxvYi9tYXN0 ZXIvQ0hBTkdFUy5tZD4NCg0KDQpOZXcgcGFja2FnZXMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjA0KDQogIFthc3luY19sb2ddIOKAkyBhIGxvZ2dpbmcgbGlicmFyeSBmb3Ig QXN5bmMgY29kZSwgbW92ZWQgZnJvbQ0KICBgYXN5bmNfdW5peCcNCg0KICBbY2FwaXRhbGl6YXRp b25dIOKAkyBhIGxpYnJhcnkgZm9yIGNhc2UgY29udmVudGlvbnMgYW5kIHJlbmFtaW5nDQogIGlk ZW50aWZpZXJzDQoNCiAgW2NvZGljb25zXSDigJMgaWNvbnMgZnJvbSBWUyBDb2RlIGZvciB1c2Ug d2l0aCBCb25zYWkNCg0KICBbZ2VsXSDigJMgYSBsaWJyYXJ5IHRvIG1hcmsgbm9uLXJlY29yZCBm aWVsZHMgZ2xvYmFsIGZvciB1c2Ugd2l0aCBvdXINCiAgY29tcGlsZXIgZXh0ZW5zaW9ucw0KDQog IFtoYXJkY2FtbF9ldmVudF9kcml2ZW5fc2ltXSDigJMgYSBzaW11bGF0b3IgbGlicmFyeSBmb3Ig SGFyZGNhbWwNCg0KICBbb2NhbWxfaW50cmluc2ljc19rZXJuZWxdIOKAkyBhIHNwbGl0IGZyb20g YG9jYW1sX2ludHJpbnNpY3MnIGNvbXBhdGlibGUNCiAgd2l0aCBqYXZhc2NyaXB0DQoNCiAgW29j YW1sX29wZW5hcGlfZ2VuZXJhdG9yXSDigJMgYW4gT3BlbkFQSSAzIHRvIE9DYW1sIGNsaWVudCBn ZW5lcmF0b3INCg0KICBbcHB4X2RpZmZdIOKAkyBhIHBweCBmb3IgZ2VuZXJhdGlvbiBvZiBkaWZm cyBhbmQgdXBkYXRlIGZ1bmN0aW9ucyBmb3INCiAgT0NhbWwgdHlwZXMuDQoNCiAgW3BweF9lbWJl ZF9maWxlXSDigJMgYSBwcHggdGhhdCBhbGxvd3MgZW1iZWRkaW5nIGZpbGVzIGRpcmVjdGx5IGlu dG8NCiAgZXhlY3V0YWJsZXMvbGlicmFyaWVzIGFzIHN0cmluZ3Mgb3IgYnl0ZXMNCg0KICBbcHB4 bGliX2phbmVdIOKAkyB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBKYW5lIFN0cmVldCBBU1Qg Y29uc3RydWN0cw0KDQogIFtwcHhfcXVpY2tfdGVzdF0g4oCTIGEgcHB4IHByb3ZpZGluZyBhbiBl cmdvbm9taWMgd3JhcHBlciBmb3IgcXVpY2tjaGVjaw0KICB0ZXN0cywgc2ltaWxhciB0byBgcHB4 X2lubGluZV90ZXN0Jw0KDQogIFtwcHhfc3RyaW5nX2NvbnZdIOKAkyBkZXJpdmluZyBgdG9fc3Ry aW5nfmFuZCB+b2Zfc3RyaW5nJw0KDQogIFt1b3B0XSDigJMgdW5zYWZlIG9wdGlvbiB0eXBlIHRo YXQgZG9lcyBub3QgYWxsb2NhdGUsIG1vdmVkIGZyb20NCiAgYGNvcmVfa2VybmVsJw0KDQogIFt2 ZXJzaW9uZWRfcG9sbGluZ19zdGF0ZV9ycGNdIOKAkyBoZWxwZXIgZnVuY3Rpb25zIGZvciB2ZXJz aW9uZWQNCiAgYFBvbGxpbmdfc3RhdGVfcnBjLnQnDQoNCiAgW3ZpcnR1YWxfZG9tX3RvcGxheWVy XSDigJMgYmluZGluZ3MgZm9yIHRoZSBgZmxvYXRpbmdfcG9zaXRpb25pbmcnDQogIGphdmFzY3Jp cHQgbGlicmFyeQ0KDQoNClthc3luY19sb2ddIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVl dC9hc3luY19sb2c+DQoNCltjYXBpdGFsaXphdGlvbl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5l c3RyZWV0L2NhcGl0YWxpemF0aW9uPg0KDQpbY29kaWNvbnNdIDxodHRwczovL2dpdGh1Yi5jb20v amFuZXN0cmVldC9jb2RpY29ucz4NCg0KW2dlbF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3Ry ZWV0L2dlbD4NCg0KW2hhcmRjYW1sX2V2ZW50X2RyaXZlbl9zaW1dDQo8aHR0cHM6Ly9naXRodWIu Y29tL2phbmVzdHJlZXQvaGFyZGNhbWxfZXZlbnRfZHJpdmVuX3NpbT4NCg0KW29jYW1sX2ludHJp bnNpY3Nfa2VybmVsXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L29jYW1sX2ludHJp bnNpY3Nfa2VybmVsPg0KDQpbb2NhbWxfb3BlbmFwaV9nZW5lcmF0b3JdDQo8aHR0cHM6Ly9naXRo dWIuY29tL2phbmVzdHJlZXQvb2NhbWxfb3BlbmFwaV9nZW5lcmF0b3I+DQoNCltwcHhfZGlmZl0g PGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3BweF9kaWZmPg0KDQpbcHB4X2VtYmVkX2Zp bGVdIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9wcHhfZW1iZWRfZmlsZT4NCg0KW3Bw eGxpYl9qYW5lXSA8aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvcHB4bGliX2phbmU+DQoN CltwcHhfcXVpY2tfdGVzdF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3BweF9xdWlj a190ZXN0Pg0KDQpbcHB4X3N0cmluZ19jb252XSA8aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJl ZXQvcHB4X3N0cmluZ19jb252Pg0KDQpbdW9wdF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3Ry ZWV0L3VvcHQ+DQoNClt2ZXJzaW9uZWRfcG9sbGluZ19zdGF0ZV9ycGNdDQo8aHR0cHM6Ly9naXRo dWIuY29tL2phbmVzdHJlZXQvdmVyc2lvbmVkX3BvbGxpbmdfc3RhdGVfcnBjPg0KDQpbdmlydHVh bF9kb21fdG9wbGF5ZXJdDQo8aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvdmlydHVhbF9k b21fdG9wbGF5ZXI+DQoNCg0KanNvbnNjaGVtYTJhdGQsIEdlbmVyYXRlIGFuIEFURCBmaWxlIGZy b20gYSBKU09OIFNjaGVtYSAvIE9wZW5BUEkgZG9jdW1lbnQNCuKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczov L2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWpzb25zY2hlbWEyYXRkLWdlbmVyYXRlLWFuLWF0ZC1m aWxlLWZyb20tYS1qc29uLXNjaGVtYS1vcGVuYXBpLWRvY3VtZW50LzE0NzE4LzE+DQoNCg0KTG91 aXMgUm9jaMOpIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgQWhyZWZzIGhhcyByZWxlYXNlZCBqc29u c2NoZW1hMmF0ZCwgYSBjbGkgdG9vbCB0byBjb252ZXJ0IGFuIE9wZW5BUEkNCiAgb3IgSnNvbiBT Y2hlbWEgc3BlY2lmaWNhdGlvbiBpbnRvIGFuIGF0ZCBmaWxlLg0KDQogIFF1aXRlIGEgbG90IG9m IGFwaSBvdXQgdGhlcmUgYXJlIG5vdyBwdWJsaXNoaW5nIHNvbWUga2luZCBvZiBzcGVjIGZvcg0K ICB0aGVpciBleHBlY3RlZCBpbnB1dCBvdXIgb3V0cHV0LiBJdCdzIG9mdGVuIGRvbmUgdGhyb3Vn aCBhIGEgSlNPTg0KICBTY2hlbWEgb3IgT3BlbkFQSSBkb2N1bWVudC4gVGhlIGdvYWwgb2YgdGhp cyB0b29sIGlzIHRvIHNhdmUgdGltZSBmb3INCiAgbGFyZ2UgYXBpIGJ5IGRvaW5nIGEgbWVjaGFu aWNhbCB0cmFuc2xhdGlvbiB0byBhbiBhdGQgZmlsZSBpbnN0ZWFkIG9mDQogIHdyaXRpbmcgYWxs IHRoZSB0eXBlcyBieSBoYW5kLg0KDQogIFVuZm9ydHVuYXRlbHkgdGhlIHdvcmxkIGlzIGtpbmQg b2YgYSBtZXNzLiBNb3N0IG9mIHRoZSBzcGVjcyB3ZSBoYXZlDQogIHNlZW4gYXJlIG5vdCBmb2xs b3dpbmcgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIG9wZW5hcGkvanNvbnNjaGVtYSBidXQNCiAgY29u dGFpbiBhIGJpdCBvZiBldmVyeXRoaW5nLiBqc29uc2NoZW1hMmF0ZCBkb2VzIGl0cyBiZXN0IHRv IGRvIHRoZQ0KICByaWdodCB0aGluZywgYnV0IHRoZXJlIGFyZSBwcm9iYWJseSBjYXNlcyB0aGF0 IGFyZW4ndCBjb3ZlcmVkLg0KDQogIFRoZSBnZW5lcmF0ZWQgY29kZSBtaWdodCBhbHNvIG5vdCBi ZSBvcHRpbWFsLiBJdCBvZnRlbiBkZXNlcnZlcyBzb21lDQogIGhhbmQgY2xlYW51cCBhbmQgYSBi aXQgb2YgcmVuYW1pbmcuIEhvcGVmdWxseSBpdCBzdGlsbCBnaXZlcyBhIGdvb2QNCiAgaGVhZCBz dGFydC4NCg0KICBUaGFua3MgdG8gW0Vnb3IgQ2hlbW9raG9uZW5rb10gZm9yIHRoaXMgd29yay4N Cg0KICBUaGUgY29kZSBpcyBhdmFpbGFibGUgYXQgPGh0dHBzOi8vZ2l0aHViLmNvbS9haHJlZnMv anNvbnNjaGVtYTJhdGQ+DQoNCiAgQW5kIHRoZXJlIGlzIGEgcGFja2FnZSB0aGF0IGlzIHB1Ymxp c2hlZCBvbiBvcGFtDQogIDxodHRwczovL29jYW1sLm9yZy9wL2pzb25zY2hlbWEyYXRkL2xhdGVz dD4NCg0KDQpbRWdvciBDaGVtb2tob25lbmtvXSA8aHR0cHM6Ly9naXRodWIuY29tL2l4enpkPg0K DQoNCm9wYW0tcmVwb3NpdG9yeSBwb2xpY3kgY2hhbmdlOiBjaGVja3N1bXMgKG5vIG1kNSkgYW5k IG5vIGV4dHJhLWZpbGVzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBB cmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1vcGFtLXJlcG9zaXRv cnktcG9saWN5LWNoYW5nZS1jaGVja3N1bXMtbm8tbWQ1LWFuZC1uby1leHRyYS1maWxlcy8xNDcy MC8xPg0KDQoNCkhhbm5lcyBNZWhuZXJ0IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAg RGVhciBldmVyeW9uZSwNCg0KICB0aGUgb3BhbS1yZXBvc2l0b3J5IHBvbGljeSBqdXN0IGNoYW5n ZWQgdG8gKm5vdCBhY2NlcHQgbWQ1LW9ubHkNCiAgY2hlY2tzdW1zKiwgYW5kIGFsc28gdG8gKmF2 b2lkIGV4dHJhLWZpbGVzKiBpbiBwYWNrYWdlcyAodXNlDQogIGV4dHJhLXNvdXJjZSBpbnN0ZWFk KS4NCg0KDQpOT1RFOg0K4pWM4pWM4pWM4pWM4pWMDQoNCiAgSWYgeW91IGVuY291bnRlciBpc3N1 ZXMgZHVyaW5nIGBvcGFtIHVwZGF0ZScsIHBsZWFzZSBtYWtlIHN1cmUgdG8gaGF2ZQ0KICBgb3Bh bSAyLjEuNicgaW5zdGFsbGVkLCBhbmQgYGdwYXRjaCcgKGVzcGVjaWFsbHkgb24gQlNEIHN5c3Rl bXMgYW5kDQogIG1hY09TKS4gVGhpcyBtYXkgYnJlYWsgc2lsZW50bHksIGlmIHlvdSBlbmNvdW50 ZXIgaXNzdWVzLCBwbGVhc2UgYHJtDQogIC1yZiB+Ly5vcGFtL3JlcG8vZGVmYXVsdCAmJiBvcGFt IHVwZGF0ZSBkZWZhdWx0JyBTZWUgZnVydGhlciBub3RlcyBpbg0KICA8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sL29wYW0tcmVwb3NpdG9yeS9pc3N1ZXMvMjU5NjE+DQoNCg0KV2hhdCBoYXMgYmVl biBhY2hpZXZlZD8NCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIOKAoiBBIG5ldyBsaW50IGNoZWNrIHRoYXQg ZXJyb3JzIG9uIG1kNS1vbmx5IGNoZWNrc3VtIHNwZWNpZmljYXRpb24gaGFzDQogICAgYmVlbiBw dXQgaW50byBwbGFjZQ0KICAgIDxodHRwczovL2dpdGh1Yi5jb20vb2N1cnJlbnQvb3BhbS1yZXBv LWNpL3B1bGwvMzA0Pg0KICDigKIgQSBuZXcgbGludCBjaGVjayB0aGF0IGVycm9ycyBpZiBgZXh0 cmEtZmlsZXMnIGlzIHByZXNlbnQNCiAgICA8aHR0cHM6Ly9naXRodWIuY29tL29jdXJyZW50L29w YW0tcmVwby1jaS9wdWxsLzMxMz4NCiAg4oCiIFRoZSBleGlzdGluZyBgZXh0cmEtZmlsZXMnLCBi dW5kbGVkIGluIHRoZSBvcGFtLXJlcG9zaXRvcnksIGhhdmUNCiAgICBiZWVuIG1vdmVkIHRvIG9w YW0tc291cmNlLWFyY2hpdmVzDQogICAgKDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb3BhbS1z b3VyY2UtYXJjaGl2ZXMvcHVsbC8yOD4pDQogIOKAoiBUaGUgb3BhbSBmaWxlcyBpbiB0aGUgb3Bh bS1yZXBvc2l0b3J5IHdlcmUgY2hhbmdlZCB0byB1c2UNCiAgICBleHRyYS1zb3VyY2Ugd2l0aCB0 aGUgb3BhbS1zb3VyY2UtYXJjaGl2ZXMgcmVwb3NpdG9yeQ0KICAgIDxodHRwczovL2dpdGh1Yi5j b20vb2NhbWwvb3BhbS1yZXBvc2l0b3J5L2NvbW1pdC83NmViMzVjOGE3OGE4OTFjN2U1ZTI3YjVj MzIzMTZkN2FkZDFmNTJkPg0KICDigKIgQWxsIGV4aXN0aW5nIChhbmQgYXZhaWxhYmxlKSBwYWNr YWdlcyB1c2luZyBvbmx5IG1kNSBoYXZlIGJlZW4NCiAgICB1cGdyYWRlZCB0byB1c2Ugc2hhMjU2 IGFzIHdlbGwNCiAgICAoPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFtLXJlcG9zaXRvcnkv Y29tbWl0L2VhODdjNDllNTFmZjI5YTQ1OTQyMjQxOWUxNjg4OTM4ZmQ3N2E0NmY+KQ0KICDigKIg U2VlIHRoZSBQUiBmb3IgdGhlIGZ1bGwgY2hhbmdlcw0KICAgIDxodHRwczovL2dpdGh1Yi5jb20v b2NhbWwvb3BhbS1yZXBvc2l0b3J5L3B1bGwvMjU5NjA+DQogIOKAoiBTZWUgZGlzY3Vzc2lvbiBh dA0KICAgIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb3BhbS1yZXBvc2l0b3J5L2lzc3Vlcy8y NTg3Nj4NCg0KICBUaGVzZSBjaGFuZ2VzIHdlcmUgYXV0b21hdGVkIHVzaW5nIGBvcGFtIGFkbWlu IG1pZ3JhdGUtZXh0cmFmaWxlcycgYW5kDQogIGBvcGFtIGFkbWluIGFkZC1oYXNoZXMnICh1c2lu ZyB0aGUgYnJhbmNoDQogIDxodHRwczovL2dpdGh1Yi5jb20vaGFubmVzbS9vcGFtL3RyZWUvbWln cmF0ZS1leHRyYS1maWxlcz4pLiBUaGVyZSBpcw0KICBhIHV0aWxpdHkgdG8gY2hlY2sgdGhhdCBl eGlzdGluZyBmaWxlcyBhbmQgbWQ1IGNoZWNrc3VtcyBhcmUgc3RpbGwNCiAgcHJlc2VudCBpbiB0 aGUgbmV3IG9wYW0tcmVwb3NpdG9yeQ0KICA8aHR0cHM6Ly9naXRodWIuY29tL2hhbm5lc20vb3Bh bS1jaGVjay1jaGVja3N1bT4uDQoNCg0KSW1wYWN0IG9uIHVzZXJzIGFuZCBkZXZlbG9wZXJzDQri lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICDigKIgQSBsb3Qgb2YgcGFja2Fn ZXMgd2lsbCB3YW50IHRvIGJlIHJlY29tcGlsZWQgb24gYG9wYW0gdXBncmFkZScNCiAgICAoc2lu Y2UgY2hlY2tzdW0gY2hhbmdlZCwgZXh0cmEtZmlsZXMvZXh0cmEtc291cmNlIHdhcyBtb2RpZmll ZCkg4oCTDQogICAgc29ycnkgZm9yIHRoZSBleHRlbnNpdmUgdXNlIG9mIENQVSB0aW1lDQogIOKA oiBJZiB5b3UgbmVlZCB0byBpbmNsdWRlIGEgcGF0Y2ggb3IgYW4gZXh0cmEgZmlsZSBmb3IgeW91 ciBvcGFtDQogICAgcGFja2FnZSwgeW91IHdpbGwgbmVlZCB0byBob3N0IGl0IGVsc2V3aGVyZS4g WW91IGNhbiBob3N0IGl0IHVzaW5nIGENCiAgICBnaXN0ICg8aHR0cHM6Ly9naXN0LmdpdGh1Yi5j b20+KSwgb3Igb24geW91ciBzZXJ2ZXIuIEFsbCB0aGUNCiAgICBgZXh0cmEtc291cmNlJyB3aWxs IGJlIGNhY2hlZCBieSBgb3BhbS5vY2FtbC5vcmcnLg0KDQoNClRoZSByZWFzb25pbmcgZm9yIHRo aXMgY2hhbmdlDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBBcGFydCBmcm9t IG1ha2luZyB0aGUgbWVudGFsIG1vZGVsIG9mICJob3cgZG9lcyBvcGFtLXJlcG9zaXRvcnkgd29y ayINCiAgZWFzaWVyIChzaW5jZSB0aGVyZSdzIG5vIG1vcmUgYW55IGBmaWxlcycgc3ViZGlyZWN0 b3J5IHdoaWNoIGluY2x1ZGVzDQogIGZpbGVzIHRoYXQgYXJlIGFkZGVkIGR1cmluZyB0aGUgYnVp bGQpLCBpdCBhbHNvIG1ha2VzIHRoZSBhcHByb2FjaCB0bw0KICBjcnlwdG9ncmFwaGljYWxseSBz aWduIHRoZSByZXBvc2l0b3J5IG11Y2ggc21vb3RoZXIgKHNpbmNlIHdlIGNhbiBub3cNCiAgcmVs eSBvbiBub24td2VhayBoYXNoIGFsZ29yaXRobXMgYW5kIGRvbid0IG5lZWQgdG8gY29tcHV0ZSBt b3JlDQogIGhhc2hlcywgYW5kIG5vdCBuZWVkIHRvIGFkZCBmdXJ0aGVyIGhhc2hlcyB0byB0aGUg cmVwb3NpdG9yeSkuDQoNCiAgV2UgbmVlZGVkIHRvIGdldCBib3RoICh3ZWFrIGhhc2hlcyBBTkQg cmVtb3ZpbmcgZXh0cmEtZmlsZXMpIHRocm91Z2gNCiAgYXQgc29tZSBwb2ludCwgaXQgaGFzIGJl ZW4gZG9uZSB0b2RheS4NCg0KDQpDYW1sa2l0IOKAkyBtYWNPUy9pT1MvR05Vc3RlcCB0b29sa2l0 IGZvciBPQ2FtbA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBz Oi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tY2FtbGtpdC1tYWNvcy1pb3MtZ251c3RlcC10b29s a2l0LWZvci1vY2FtbC8xNDcyMi8xPg0KDQoNCmJvcmlzZCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEkgYW0gcGxlYXNlZCB0 byBhbm5vdW5jZSB0aGUgYWxwaGEgcmVsZWFzZSBvZiBbQ2FtbGtpdF0uICBDYW1sa2l0DQogIHBy b3ZpZGVzIE9DYW1sIGJpbmRpbmdzIHRvIGEgY29sbGVjdGlvbiBvZiBDb2NvYSBmcmFtZXdvcmtz IG9uIG1hY09TLA0KICBpT1MsIGFuZCBHTlVzdGVwLiBDdXJyZW50bHkgYXZhaWxhYmxlIGFyZSBG b3VuZGF0aW9uLCBBcHBLaXQsIFVJS2l0LA0KICBXZWJLaXQsIENvcmVJbWFnZSwgUGhvdG9zLCBh bmQgVmlzaW9uLg0KDQogIFRoZSBwYWNrYWdlIGBjYW1sa2l0JyBmb3IgbWFjT1MvR05Vc3RlcCBk ZXZlbG9wbWVudCBpcyBhdmFpbGFibGUgZnJvbQ0KICBPUEFNLiBUaGUga2V5IGxpYnJhcmllcyB0 byBhZGQgdG8geW91ciBkdW5lIGZpbGUgYXJlDQogIGBjYW1sa2l0LWJhc2UuZm91bmRhdGlvbicg YW5kIGBjYW1sa2l0LWd1aS5hcHBraXQnLg0KDQogIGlPUyBkZXZlbG9wbWVudCByZXF1aXJlcyBh IFtjcm9zcy10b29sY2hhaW5dLiBUaGUgcGFja2FnZSBpcyBuYW1lZA0KICBgY2FtbGtpdC1pb3Mn LiBVSUtpdCBpcyBpbiB0aGUgbGlicmFyeSBgY2FtbGtpdC1ndWkudWlraXQnLg0KDQogIE90aGVy IHVzZWZ1bCByZXNvdXJjZXM6DQogIOKAoiBbYSBzdGFydGVyIHByb2plY3QgdGVtcGxhdGUgZm9y IGlPU10NCiAg4oCiIFthIGZldyBleGFtcGxlIHBvcmdyYW1zXQ0KDQogIE1vcmUgaW5mb3JtYXRp b24gaXMgYXZhaWxhYmxlIG9uIHRoZSBbcHJvamVjdCdzIGdpdGh1YiBwYWdlXS4gRmVlZGJhY2sN CiAgYW5kIGNvbnRyaWJ1dGlvbnMgYXJlIHdlbGNvbWUuIEkgaG9wZSB3ZSBjYW4gbWFrZSBPQ2Ft bCB2aWFibGUgZm9yIEdVSQ0KICBkZXZlbG9wbWVudCBhbmQgb24gbW9iaWxlLiBIYXBweSBoYWNr aW5nIQ0KDQoNCltDYW1sa2l0XSA8aHR0cHM6Ly9naXRodWIuY29tL2Rib3Jpcy9jYW1sa2l0Pg0K DQpbY3Jvc3MtdG9vbGNoYWluXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sLWNyb3NzL29wYW0t Y3Jvc3MtaW9zPg0KDQpbYSBzdGFydGVyIHByb2plY3QgdGVtcGxhdGUgZm9yIGlPU10NCjxodHRw czovL2dpdGh1Yi5jb20vZGJvcmlzL2NhbWxraXQtc3RhcnRlci1ub3N0b3J5Ym9hcmQ+DQoNClth IGZldyBleGFtcGxlIHBvcmdyYW1zXSA8aHR0cHM6Ly9naXRodWIuY29tL2Rib3Jpcy9jYW1sa2l0 LWV4YW1wbGVzLz4NCg0KW3Byb2plY3QncyBnaXRodWIgcGFnZV0gPGh0dHBzOi8vZ2l0aHViLmNv bS9kYm9yaXMvY2FtbGtpdD4NCg0KDQpwb3NpdGlvbiBmb3IgTW9vbkJpdCBhZHZvY2F0ZQ0K4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlz Y3Vzcy5vY2FtbC5vcmcvdC9qb2ItcGFydC10aW1lLXBvc2l0aW9uLWZvci1tb29uYml0LWFkdm9j YXRlLzE0NzI2LzE+DQoNCg0KSG9uZ2JvIFpoYW5nIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAg TW9vbkJpdCBpcyBNTCBsYW5ndWFnZSBpbnNwaXJlZCBieSBSdXN0LCBHbyBhbmQgT0NhbWwsIGl0 IHdhcw0KICBhbm5vdW5jZWQgd2l0aCBhIFtXYXNtIGJhY2tlbmRdLCBhbmQgcmVjZW50bHkgd2Ug YWRkZWQgYSBbSmF2YVNjcmlwdA0KICBiYWNrZW5kXSwgd2UgcGxhbiB0byBzaGlwIGEgbmF0aXZl IGJhY2tlbmQgdGhpcyB5ZWFyLg0KDQogIEl0IGlzIHNpbWlsYXIgdG8gT0NhbWwsIHRoZSBtYWlu IGRpZmZlcmVuY2UgaXMgdGhhdCB3ZSBoYXZlIHRyYWl0cywNCiAgemVyby1jb3N0IGdlbmVyaWNz IGFuZCBtb2Rlcm4gdG9vbGluZyBzdXBwb3J0LiBZb3UgYXJlIHdlbGNvbWUgdG8gRE0NCiAgZm9y IG1vcmUgZGV0YWlscy4NCg0KDQpbV2FzbSBiYWNrZW5kXSA8aHR0cHM6Ly93d3cubW9vbmJpdGxh bmcuY29tL2Jsb2cvZmlyc3QtYW5ub3VuY2U+DQoNCltKYXZhU2NyaXB0IGJhY2tlbmRdIDxodHRw czovL3d3dy5tb29uYml0bGFuZy5jb20vYmxvZy9qcy1zdXBwb3J0Pg0KDQoNCldoeSBpcyB0aGVy ZSBubyB0cmFkaXRpb24gb2YgQ0xJIGFuZCBUVUkgYXBwcz8NCuKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qvd2h5LWlz LXRoZXJlLW5vLXRyYWRpdGlvbi1vZi1jbGktYW5kLXR1aS1hcHBzLzE0NjI4LzE3Pg0KDQoNCkRl ZXAgaW4gdGhpcyB0aHJlYWQsIEphenogYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJIG9uY2UgY3JlYXRlZCBhIGNvbW1hbmQt bGluZSBib29rbWFya2luZyB0b29sIGNhbGxlZCBbRmF2ZW1hcmtzXSBpbg0KICBPQ2FtbCB1c2lu ZyBKYW5lc3RyZWV0J3MgQ29yZSBDb21tYW5kLg0KDQoNCltGYXZlbWFya3NdIDxodHRwczovL2dp dGh1Yi5jb20vbnlpbnlpdGhhbm4vZmF2ZW1hcmtzPg0KDQoNClBweGxpYiBkZXYgbWVldGluZ3MN CuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvcHB4bGliLWRldi1t ZWV0aW5ncy8xMjQ0MS8yMz4NCg0KDQpDb250aW51aW5nIHRoaXMgdGhyZWFkLCBQYXRyaWNrIEZl cnJpcyBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFRoZSBb bWVldGluZyBub3RlcyBhcmUgbm93IGF2YWlsYWJsZSBmcm9tIHRoZSBsYXN0IG1lZXRpbmddLg0K DQogIFRoYW5rcyB0byBldmVyeW9uZSB3aG8gYXR0ZW5kZWQgdGhlIG1lZXRpbmcuIFRoZSBuZXh0 IG1lZXRpbmcgaXMgc2V0DQogIGZvciBbZGF0ZT0yMDI0LTA2LTE4IHRpbWU9MTc6MDA6MDAgdGlt ZXpvbmU9IkV1cm9wZS9Mb25kb24iXSwgaWYgdGhhdA0KICBjaGFuZ2VzIHdlJ2xsIHBvc3QgdG8g dGhpcyB0aHJlYWQuIEhvcGUgdG8gc2VlIHlvdSB0aGVyZSENCg0KDQpbbWVldGluZyBub3RlcyBh cmUgbm93IGF2YWlsYWJsZSBmcm9tIHRoZSBsYXN0IG1lZXRpbmddDQo8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sLXBweC9wcHhsaWIvd2lraS9EZXYtTWVldGluZy0yMDI0LTA1LTI4Pg0KDQoNCllv anNvbiAyLjIuMA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJj aGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4teW9qc29uLTItMi0wLzE0NzM3 LzE+DQoNCg0KTWFyZWsgS3ViaWNhIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVsbG8gZmVs bG93IENhbWVsLXdyYW5nbGVycywNCg0KICBJdCdzIG15IHBsZWFzdXJlIHRvIGFubm91bmNlIHRo ZSByZWxlYXNlIG9mIFlvanNvbiAyLjIuMCB3aGljaCB5b3UgY2FuDQogIGZpbmQgaW4geW91ciBu ZWlnaGJvcmhvb2QgW29wYW0tcmVwb3NpdG9yeV0uDQoNCiAgVGhlIG1vc3QgaW1wb3J0YW50IGhp Z2hsaWdodHMgaW5jbHVkZToNCg0KICDigKIgW0pTT041XSBzdXBwb3J0LiBHZXR0aW5nIGFubm95 ZWQgYnkgZGFuZ2xpbmcgY29tbWFzIGJlaW5nIGEgcHJvYmxlbQ0KICAgIG9yIHRoZSBpbmFiaWxp dHkgdG8gdXNlIGNvbW1lbnRzPyBKU09ONSBpcyBiYXNpY2FsbHkgSlNPTiBidXQgd2l0aA0KICAg IHRoZSBvYmplY3Qgc3ludGF4IG9mIEVDTUFTY3JpcHQgNS4xIHdoaWNoIGFsbG93cyBzb21lIGFk ZGl0aW9uYWwNCiAgICBmZWF0dXJlcyBsaWtlIHVucXVvdGVkIGtleXMsIGRhbmdsaW5nIGNvbW1h cyBvciB3ZWxsLCBjb21tZW50cy4gVGhpcw0KICAgIGhhcyBiZWVuIGluIHRoZSB3b3JrcyBmb3Ig eWVhcnMgYnV0IGZpbmFsbHkgbWFkZSBpdCB0byB0aGUNCiAgICBmaW5pc2gtbGluZS4gVGhlIG5l dyBKU09ONSBwYXJzZXIgcmVxdWlyZXMgYHNlZGxleCcgYW5kIGF0IGxlYXN0DQogICAgT0NhbWwg NC4wOCwgdGh1cyBpdCBpcyBwYXJ0IG9mIHRoZSBbeW9qc29uLWZpdmVdIHBhY2thZ2UuIEl0cyB1 c2FnZQ0KICAgIG1pbWljcyB0aGUgYFlvanNvbicgcGFja2FnZTsgdGhlcmUgZXhpc3QgYm90aCBg QmFzaWMnIGFuZCBgU2FmZScNCiAgICB2YXJpYW50cyBhbmQgdGhlIEFTVCBtYXRjaGVzIHRoZSBK U09OIHZhcmlhbnRzLg0KICDigKIgTm8gQ1BQTyBkZXBlbmRlbmN5IGFueW1vcmUuIEdpdmVuIHRo ZSBsYXJnZSBhbW91bnQgb2YNCiAgICByZXZlcnNlLWRlcGVuZGVuY2llcyBvbiBZb2pzb24sIGVh Y2ggZGVwZW5kZW5jeSBvZiBZb2pzb24gaXMgZ29pbmcNCiAgICB0byBiZSBhIGRlcGVuZGVuY3kg b2YgYSBsb3Qgb2YgcGFja2FnZXMsIHRodXMga2VlcGluZyB0aGUgZGVwZW5kZW5jeQ0KICAgIGNv bmUgc21hbGwgbWFrZXMgZXZlcnl0aGluZyAoc2xpZ2h0bHkpIGZhc3Rlci4gQXMgc3VjaCwgaW5z dGVhZCBvZg0KICAgIHVzaW5nIENQUE8gYXMgYSBjb21waWxlLXRpbWUgZGVwZW5kZW5jeSB3ZSBu b3cgdXNlIFvCtUNQUE9dIGFzIGENCiAgICBsaWdodC13ZWlnaHQgYWx0ZXJuYXRpdmUuIMK1Q1BQ TyBpcyBtZWFudCBmb3IgZW1iZWRkaW5nIGFzIHBhcnQgb2YNCiAgICB0aGUgYnVpbGQgcHJvY2Vz cyBhbmQgc3VwcG9ydHMgYSB0aW55IHN1YnNldCBvZiB3aGF0IENQUE8gc3VwcG9ydHMNCiAgICBi dXQgd2l0aG91dCBhbiBleHRyYSBwYWNrYWdlLg0KDQogIEhhcHB5IGRlLSBhbmQgZW5jb2Rpbmch DQoNCg0KW29wYW0tcmVwb3NpdG9yeV0gPGh0dHBzOi8vb2NhbWwub3JnL3AveW9qc29uLzIuMi4w Pg0KDQpbSlNPTjVdIDxodHRwczovL2pzb241Lm9yZy8+DQoNClt5b2pzb24tZml2ZV0gPGh0dHBz Oi8vb2NhbWwub3JnL3AveW9qc29uLWZpdmUvMi4yLjA+DQoNClvCtUNQUE9dIDxodHRwczovL2dp dGh1Yi5jb20vTGVvbmlkYXMtZnJvbS1YSVYvbXVjcHBvPg0KDQoNCkdyYWNlIDAuMi4wIPCfkoUs IGZhbmN5IGRpYWdub3N0aWNzIGxpYnJhcnkgZm9yIGNvbXBpbGVycw0K4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0 dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tZ3JhY2UtMC0yLTAtZmFuY3ktZGlhZ25vc3Rp Y3MtbGlicmFyeS1mb3ItY29tcGlsZXJzLzE0NzQxLzE+DQoNCg0KIkFsaXN0YWlyIE8nQnJpZW4g YW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJJ20gZXhjaXRlZCB0byBh bm5vdW5jZSB0aGUgcmVsZWFzZSBvZiBbZ3JhY2UgMC4yLjBdLCBhbiBPQ2FtbCBsaWJyYXJ5DQog IGZvciBidWlsZGluZywgcmVwb3J0aW5nIGFuZCByZW5kZXJpbmcgYmVhdXRpZnVsIGNvbXBpbGVy IGRpYWdub3N0aWNzDQogIDpjYW1lbDogOnBhaW50YnJ1c2g6LiBOb3cgYXZhaWxhYmxlIG9uIFtv cGFtLXJlcG9zaXRvcnldLg0KDQogIFRoZSB0aHJlZSBtYWluIGZlYXR1cmVzIG9mIHRoaXMgcmVs ZWFzZSBpbmNsdWRlOg0KICDigKIgOmJvb2tzOiAqVVRGOCBzdXBwb3J0KjogU291cmNlIGZpbGVz IGNhbiBub3cgY29udGFpbiBVbmljb2RlDQogICAgY2hhcmFjdGVycywgaW5jbHVkaW5nIGVtb2pp cyDimqHvuI8g8J+MiCDwn5qALCB3aXRoIHByb3BlciByZW5kZXJpbmcgb2YNCiAgICBBU0NJSSBh cnQgZm9yIGVycm9ycy4NCg0KICDigKIgOjEyMzQ6ICpFcnJvciBDb2Rlcyo6IERpYWdub3N0aWNz IGNhbiBub3cgaW5jbHVkZSBzaG9ydCwgc2VhcmNoYWJsZQ0KICAgIGVycm9yIGNvZGVzLiBBbGxv d2luZyBjb21waWxlcnMgdG8gaW50ZWdyYXRlIGEgW1J1c3QtbGlrZSBlcnJvciBjb2RlDQogICAg aW5kZXhdLg0KDQogIOKAoiDwn6SPICpDb21wYWN0IEFOU0kgRXJyb3JzKjogYEdyYWNlX2Fuc2lf cmVuZGVyZXInIG5vdyBzdXBwb3J0cyBhDQogICAgYHBwX2NvbXBhY3RfZGlhZ25vc3RpYycgZm9y IGNvbmNpc2UgZXJyb3IgbWVzc2FnZXMsIGRpc3BsYXlpbmcgb25seQ0KICAgIHRoZSBmaWxlIGxv Y2F0aW9uIGFuZCB0aGUgZXJyb3IgbWVzc2FnZS4NCg0KICA8aHR0cHM6Ly9nbG9iYWwuZGlzY291 cnNlLWNkbi5jb20vYnVzaW5lc3M3L3VwbG9hZHMvb2NhbWwvb3JpZ2luYWwvMlgvMy8zMWJhOTc1 ZDJjZjE3OTY2ZWI0NTMzYzFmNmJhNDQxNzMxNjg2ZDBkLnBuZz4NCg0KICBUYXAgaW50byB0aGUg cG93ZXIgb2YgR3JhY2UgZm9yIHlvdXIgZXJyb3IgcmVwb3J0aW5nISBIYXBweSBoYWNraW5nDQog IPCfkajigI3wn5K7DQoNCg0KW2dyYWNlIDAuMi4wXSA8aHR0cHM6Ly9naXRodWIuY29tL2pvaG55 b2IvZ3JhY2UvcmVsZWFzZXMvdGFnLzAuMi4wPg0KDQpbb3BhbS1yZXBvc2l0b3J5XSA8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sL29wYW0tcmVwb3NpdG9yeS9wdWxsLzI1OTU2Pg0KDQpbUnVzdC1s aWtlIGVycm9yIGNvZGUgaW5kZXhdDQo8aHR0cHM6Ly9kb2MucnVzdC1sYW5nLm9yZy9lcnJvcl9j b2Rlcy9lcnJvci1pbmRleC5odG1sPg0KDQpDSEFOR0VTOg0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWMDQoNCiAg4oCiIGZpeChyZW5kZXJlcik6IHJlbW92ZSB1bmNlc3NhcnkgdW5kZXJsaW5lcyB3 aGVuIHByaW50aW5nIGEgdW5pcXVlDQogICAgJ211bHRpLWxpbmUgYFRvcCcgbWFya2VyJyAoWyMz MV0pDQogIOKAoiBmaXgocmVuZGVyZXIpOiByZXBsYWNlIHVuaWNvZGUgY2hhcnMgd2l0aCBBU0NJ SSBpbiBgQ29uZmlnLmFzY2lpJw0KICAgIChbIzI3XSkNCiAg4oCiIGZlYXQocmVuZGVyZXIpOiBh ZGQgYE5PX0NPTE9SJyBhbmQgYFRFUk0nIHN1cHBvcnQgdG8gYENvbmZpZycgKFsjOF0pDQogIOKA oiBmZWF0KGNvcmUscmVuZGVyZXIpOiBhZGQgc3VwcG9ydCBmb3IgZXJyb3IgY29kZXMgKFsjMzBd KQ0KICDigKIgZmVhdChyZW5kZXJlcik6IGFkZCBzdXBwb3J0IGZvciBVVEY4IGVuY29kaW5nIChb IzI1XSkNCiAg4oCiIGZlYXQocmVuZGVyZXIpOiByZS1pbnRyb2R1Y2Ugc3VwcG9ydCBmb3IgY29t cGFjdCBkaWFnbm9zdGljDQogICAgcmVuZGVyaW5nIChbIzI4XSkNCiAg4oCiIHJlZmFjdG9yKHJl bmRlcmVyKSE6IG1vdmUgYGdyYWNlLnJlbmRlcmVyJyBsaWJyYXJ5IHRvDQogICAgYGdyYWNlLmFu c2lfcmVuZGVyZXInIChbIzI5XSkNCg0KDQpbIzMxXSA8aHR0cHM6Ly9naXRodWIuY29tL2pvaG55 b2IvZ3JhY2UvcHVsbC8zMT4NCg0KWyMyN10gPGh0dHBzOi8vZ2l0aHViLmNvbS9qb2hueW9iL2dy YWNlL3B1bGwvMjc+DQoNClsjOF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9qb2hueW9iL2dyYWNlL3B1 bGwvOD4NCg0KWyMzMF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9qb2hueW9iL2dyYWNlL3B1bGwvMzA+ DQoNClsjMjVdIDxodHRwczovL2dpdGh1Yi5jb20vam9obnlvYi9ncmFjZS9wdWxsLzI1Pg0KDQpb IzI4XSA8aHR0cHM6Ly9naXRodWIuY29tL2pvaG55b2IvZ3JhY2UvcHVsbC8yOD4NCg0KWyMyOV0g PGh0dHBzOi8vZ2l0aHViLmNvbS9qb2hueW9iL2dyYWNlL3B1bGwvMjk+DQoNCg0KQlJFQUtJTkcg Q0hBTkdFDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0K ICDigKIgYEdyYWNlX3JlbmRlcmluZycgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGBHcmFjZV9hbnNp X3JlbmRlcmVyJw0KICAgIGluc3RlYWQuDQoNCg0KRmlyc3QgcmVsZWFzZSBvZiBTbGlwc2hvdyBv biBvcGFtIQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoN CiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tZmlyc3QtcmVs ZWFzZS1vZi1zbGlwc2hvdy1vbi1vcGFtLzE0NzQzLzE+DQoNCg0KUGF1bC1FbGxpb3QgYW5ub3Vu Y2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIANCg0KICBJdCBpcyBteSBwbGVhc3VyZSB0byBhbm5vdW5jZSB0aGUgZmlyc3Qg W3JlbGVhc2VdIG9mIFtzbGlwc2hvd10gb24NCiAgYG9wYW0nLg0KDQogIFNsaXBzaG93IGlzIGEg cHJlc2VudGF0aW9uIHRvb2wgdG8gY3JlYXRlIHByZXNlbnRhdGlvbiB0aGF0IGFyZSBub3QNCiAg YmFzZWQgb24gc2xpZGVzLCBidXQgb24gbW9yZSBjb250aW51b3VzIHRyYW5zaXRpb25zLCBzaW1p bGFyIHRvDQogIHNjcm9sbGluZy4NCg0KICA8aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQu Y29tL3BhbmdsZXNkL3NsaXBzaG93L21hc3Rlci9zbGlwX3Njcm9sbC5naWY+DQoNCiAgWW91IGNh biBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzIG9uIHRoZSBbcHJvamVjdCByZXBv XSBhbmQNCiAgb24gdGhlIFtkb2N1bWVudGF0aW9uXS4NCg0KICBIb3cgaXMgdGhhdCByZWxhdGVk IHRvIHRoZSBPQ2FtbCBjb21tdW5pdHk/IFdoaWxlIHRoZQ0KICAicnVudGltZSIvImVuZ2luZSIg aXMgc3RpbGwgd3JpdHRlbiBpbiBqYXZhc2NyaXB0IChJIGRpZCBub3Qga25vdw0KICBPQ2FtbCBi YWNrIHRoZW4sIGJ1dCB0aGVyZSBpcyBhIFtwbGFuXSB0byByZXdyaXRlIGl0KSwgdGhlIGNvbXBp bGVyIGlzDQogIHdyaXR0ZW4gaW4gT0NhbWwhIEFuZCBJIGFtIHJlYWxseSBncmF0ZWZ1bCBmb3Ig dGhlIG1hbnkgYXV0aG9ycyBvZg0KICBvcGVuIHNvdXJjZSBsaWJyYXJpZXMsIG9mIHZlcnkgaGln aCBxdWFsaXR5LCB0aGF0IEkgZGVwZW5kIG9uIGFuZA0KICBjb3VsZCBkbyBub3RoaW5nIHdpdGhv dXQgdGhlbSA6KSAqKlRoYW5rcyBhIGxvdCoqIHRvIGFsbCBPQ2FtbCBsaWJyYXJ5DQogIGFuZCB0 b29sIGF1dGhvcnMhDQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAkIG9wYW0gdXBkYXRlDQog IOKUgiAkIG9wYW0gaW5zdGFsbCBzbGlwc2hvdw0KICDilIIgIyBjcmVhdGUgYW5kIG9wZW4gfnNv dXJjZS5tZH4gaW4geW91ciBlZGl0b3INCiAg4pSCICQgc2xpcHNob3cgLS1zZXJ2ZSBzb3VyY2Uu bWQNCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgSG9wZSBpdCBjYW4gYmUgdXNlZnVsIDpEDQoNCg0K W3JlbGVhc2VdDQo8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29wYW0tcmVwb3NpdG9yeS9wdWxs LzI1OTQ4I2lzc3VlY29tbWVudC0yMTQ2OTA2NzY2Pg0KDQpbc2xpcHNob3ddIDxodHRwczovL2dp dGh1Yi5jb20vcGFuZ2xlc2Qvc2xpcHNob3c+DQoNCltwcm9qZWN0IHJlcG9dIDxodHRwczovL2dp dGh1Yi5jb20vcGFuZ2xlc2Qvc2xpcHNob3c+DQoNCltkb2N1bWVudGF0aW9uXSA8aHR0cHM6Ly9z bGlwc2hvdy5yZWFkdGhlZG9jcy5pbz4NCg0KW3BsYW5dIDxodHRwczovL2dpdGh1Yi5jb20vcGFu Z2xlc2Qvc2xpcHNob3cvaXNzdWVzLzMyPg0KDQoNCk90aGVyIE9DYW1sIE5ld3MNCuKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQpGcm9tIHRoZSBvY2Ft bC5vcmcgYmxvZw0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVyZSBhcmUgbGlua3MgZnJvbSBtYW55IE9D YW1sIGJsb2dzIGFnZ3JlZ2F0ZWQgYXQgW3RoZSBvY2FtbC5vcmcNCiAgYmxvZ10uDQoNCiAg4oCi IFtFZmZlY3RpdmUgTUwgVGhyb3VnaCBNZXJsaW4ncyBEZXN0cnVjdCBDb21tYW5kXQ0KDQoNClt0 aGUgb2NhbWwub3JnIGJsb2ddIDxodHRwczovL29jYW1sLm9yZy9ibG9nLz4NCg0KW0VmZmVjdGl2 ZSBNTCBUaHJvdWdoIE1lcmxpbidzIERlc3RydWN0IENvbW1hbmRdDQo8aHR0cHM6Ly90YXJpZGVz LmNvbS9ibG9nLzIwMjQtMDUtMjktZWZmZWN0aXZlLW1sLXRocm91Z2gtbWVybGluLXMtZGVzdHJ1 Y3QtY29tbWFuZD4NCg0KDQpPbGQgQ1dODQrilZDilZDilZDilZDilZDilZDilZANCg0KICBJZiB5 b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3NlbmQgbWUgYSBtZXNzYWdlXSBhbmQg SSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sgYXQgW3RoZSBhcmNoaXZl XSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10uDQoNCiAgSWYgeW91IGFsc28g d2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91IG1heSBzdWJzY3JpYmUN CiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUg YSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3Ro ZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNTIGZl ZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vY3du LnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvaW5mby9j YW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0 Lz4NCg0K --=-=-= 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 May 28 to June 04, 20= 24.

v0.17 release of Jane Street packages

Diana Kalinichenko announced

v0.17 release of Jane Street packages

Dear OCaml developers,

We are pleased to announce the v0.17 release of Jane Street packages!

This release comes with 15 new packages and a multitude of new features and= fixes.

Switch to OCaml 5.1

We are switching Base and all our packages (except sexplib0) t= o OCaml 5.1 and above. We are also switching sexplib0 to 4.14 = to take advantage of the Tail Recursion Modulo Cons optimization in the com= piler.

Core on OCaml 5.2

Due to some changes to Stdlib.Gc in OCaml 5.2, core.v0.1= 7.0 fails to compile with that language version. We will release a f= ix that allows using Core with OCaml 5.2 soon.

Torch and VCaml

Due to some issues with their builds, torch.v0.17.0 and = vcaml.v0.17.0 were omitted from the main v0.17 release. We will soon= submit those packages to opam.

New packages

async_log =E2=80=93= a logging library for Async code, moved from async_unix

capitalization= =E2=80=93 a library for case conventions and renaming identifiers

codicons =E2=80=93 i= cons from VS Code for use with Bonsai

gel =E2=80=93 a library t= o mark non-record fields global for use with our compiler extensions

hardcam= l_event_driven_sim =E2=80=93 a simulator library for Hardcaml

ocaml_int= rinsics_kernel =E2=80=93 a split from ocaml_intrinsics com= patible with javascript

ocaml_ope= napi_generator =E2=80=93 an OpenAPI 3 to OCaml client generator

ppx_diff =E2=80=93 a= ppx for generation of diffs and update functions for OCaml types.

ppx_embed_file= =E2=80=93 a ppx that allows embedding files directly into executables/libr= aries as strings or bytes

ppxlib_jane =E2= =80=93 utilities for working with Jane Street AST constructs

ppx_quick_test= =E2=80=93 a ppx providing an ergonomic wrapper for quickcheck tests, simil= ar to ppx_inline_test

ppx_string_conv =E2=80=93 deriving to_string~and ~of_string

uopt =E2=80=93 unsafe op= tion type that does not allocate, moved from core_kernel

versi= oned_polling_state_rpc =E2=80=93 helper functions for versioned P= olling_state_rpc.t

virtual_dom_= toplayer =E2=80=93 bindings for the floating_positioning j= avascript library

jsonschema2atd, Generate an ATD file from a JSON Schema / Open= API document

Louis Roch=C3=A9 announced

Ahrefs has released jsonschema2atd, a cli tool to convert an OpenAPI or Jso= n Schema specification into an atd file.

Quite a lot of api out there are now publishing some kind of spec for their= expected input our output. It's often done through a a JSON Schema or Open= API document. The goal of this tool is to save time for large api by doing = a mechanical translation to an atd file instead of writing all the types by= hand.

Unfortunately the world is kind of a mess. Most of the specs we have seen a= re not following a specific version of openapi/jsonschema but contain a bit= of everything. jsonschema2atd does its best to do the right thing, but the= re are probably cases that aren't covered.

The generated code might also not be optimal. It often deserves some hand c= leanup and a bit of renaming. Hopefully it still gives a good head start.

Thanks to Egor Chemokhonenko for t= his work.

The code is available at https://github.com/ahrefs/jsonschema2atd

And there is a package that is published on opam https://ocaml.org/p/jsonschema2atd/latest

opam-repository policy change: checksums (no md5) and no extra= -files

Hannes Mehnert announced

Dear everyone,

the opam-repository policy just changed to not accept md5-only checksums= , and also to avoid extra-files in packages (use extra-source in= stead).

NOTE:

If you encounter issues during opam update, please make sure t= o have opam 2.1.6 installed, and gpatch (especial= ly on BSD systems and macOS). This may break silently, if you encounter iss= ues, please rm -rf ~/.opam/repo/default && opam update defaul= t See further notes in https://github.com/ocaml/opam-repository/issues/25961<= /a>

What has been achieved?

These changes were automated using opam admin migrate-extrafiles and opam admin add-hashes (using the branch https://github.com/ha= nnesm/opam/tree/migrate-extra-files). There is a utility to check that = existing files and md5 checksums are still present in the new opam-reposito= ry https://githu= b.com/hannesm/opam-check-checksum.

Impact on users and developers

  • A lot of packages will want to be recompiled on opam upgrade (since checksum changed, extra-files/extra-source was modified) –= sorry for the extensive use of CPU time
  • If you need to include a patch or an extra file for your opam package, = you will need to host it elsewhere. You can host it using a gist (https://gist.github.com), or on your serve= r. All the extra-source will be cached by opam.ocaml.org= .

The reasoning for this change

Apart from making the mental model of "how does opam-repository work" easie= r (since there's no more any files subdirectory which includes= files that are added during the build), it also makes the approach to cryp= tographically sign the repository much smoother (since we can now rely on n= on-weak hash algorithms and don't need to compute more hashes, and not need= to add further hashes to the repository).

We needed to get both (weak hashes AND removing extra-files) through at som= e point, it has been done today.

Camlkit – macOS/iOS/GNUstep toolkit for OCaml

borisd announced

I am pleased to announce the alpha release of Camlkit.=20 Camlkit provides OCaml bindings to a collection of Cocoa frameworks on macO= S, iOS, and GNUstep. Currently available are Foundation, AppKit, UIKit, Web= Kit, CoreImage, Photos, and Vision.

The package camlkit for macOS/GNUstep development is available= from OPAM. The key libraries to add to your dune file are camlkit-ba= se.foundation and camlkit-gui.appkit.

iOS development requires a cross-toolchain. The package is named camlkit-ios. UIKit is in the library camlkit-gui.uikit.

Other useful resources:

More information is available on the project's github page. Feedback and contributions are welcome. = I hope we can make OCaml viable for GUI development and on mobile. Happy ha= cking!

position for MoonBit advocate

Hongbo Zhang announced

MoonBit is ML language inspired by Rust, Go and OCaml, it was announced wit= h a Wasm backen= d, and recently we added a JavaScript backend, we plan to ship a native backend this y= ear.

It is similar to OCaml, the main difference is that we have traits, zero-co= st generics and modern tooling support. You are welcome to DM for more deta= ils.

Why is there no tradition of CLI and TUI apps?

Deep in this thread, Jazz announced

I once created a command-line bookmarking tool called Favemarks in OCaml using Janestreet's C= ore Command.

Ppxlib dev meetings

Continuing this thread, Patrick Ferris announced

The meeting notes are now available from the last meeting.

Thanks to everyone who attended the meeting. The next meeting is set for [d= ate=3D2024-06-18 time=3D17:00:00 timezone=3D"Europe/London"], if that chang= es we'll post to this thread. Hope to see you there!

Yojson 2.2.0

Marek Kubica announced

Hello fellow Camel-wranglers,

It's my pleasure to announce the release of Yojson 2.2.0 which you can find= in your neighborhood opam-rep= ository.

The most important highlights include:

  • JSON5 support. Getting annoyed by da= ngling commas being a problem or the inability to use comments? JSON5 is ba= sically JSON but with the object syntax of ECMAScript 5.1 which allows some= additional features like unquoted keys, dangling commas or well, comments.= This has been in the works for years but finally made it to the finish-lin= e. The new JSON5 parser requires sedlex and at least OCaml 4.0= 8, thus it is part of the yojson-five package. Its usage mimics the Yojson package;= there exist both Basic and Safe variants and the= AST matches the JSON variants.
  • No CPPO dependency anymore. Given the large amount of reverse-dependenc= ies on Yojson, each dependency of Yojson is going to be a dependency of a l= ot of packages, thus keeping the dependency cone small makes everything (sl= ightly) faster. As such, instead of using CPPO as a compile-time dependency= we now use =C2=B5C= PPO as a light-weight alternative. =C2=B5CPPO is meant for embedding as= part of the build process and supports a tiny subset of what CPPO supports= but without an extra package.

Happy de- and encoding!

Grace 0.2.0 =F0=9F=92=85, fancy diagnostics library for compil= ers

"Alistair O'Brien announced

I'm excited to announce the release of grace 0.2.0, an OCaml library for building,= reporting and rendering beautiful compiler diagnostics :camel: :paintbrush= :. Now available on opam-repository.

The three main features of this release include:

  • :books: UTF8 support: Source files can now contain Unicode chara= cters, including emojis =E2=9A=A1=EF=B8=8F =F0=9F=8C=88 =F0=9F=9A=80, with = proper rendering of ASCII art for errors.
  • :1234: Error Codes: Diagnostics can now include short, searchabl= e error codes. Allowing compilers to integrate a Rust-like error code index.
  • =F0=9F=A4=8F Compact ANSI Errors: Grace_ansi_renderer now supports a pp_compact_diagnostic for concise error mess= ages, displaying only the file location and the error message.

3D"31ba975d2cf=

Tap into the power of Grace for your error reporting! Happy hacking =F0=9F= =91=A8=E2=80=8D=F0=9F=92=BB

CHANGES:

  • fix(renderer): remove uncessary underlines when printing a unique 'mult= i-line Top marker' (#31)
  • fix(renderer): replace unicode chars with ASCII in Config.ascii (#27)
  • feat(renderer): add NO_COLOR and TERM support= to Config (#8)
  • feat(core,renderer): add support for error codes (#30)
  • feat(renderer): add support for UTF8 encoding (#25)
  • feat(renderer): re-introduce support for compact diagnostic rendering (= #28)
  • refactor(renderer)!: move grace.renderer library to = grace.ansi_renderer (#29)

BREAKING CHANGE

  • Grace_rendering has been removed. Use Grace_ansi_ren= derer instead.

First release of Slipshow on opam!

Paul-Elliot announced

It is my pleasure to announce the first release of slipshow on opam.

Slipshow is a presentation tool to create presentation that are not based o= n slides, but on more continuous transitions, similar to scrolling.

3D"slip_scroll.gif"

You can find more information and examples on the project repo and on the documentation.

How is that related to the OCaml community? While the "runtime"/"engine" is= still written in javascript (I did not know OCaml back then, but there is = a plan to re= write it), the compiler is written in OCaml! And I am really grateful for t= he many authors of open source libraries, of very high quality, that I depe= nd on and could do nothing without them :) Thanks a lot to al= l OCaml library and tool authors!

$ opam update
$ opam install slipshow
# create and open ~source.md~ in your editor
$ slipshow --serve source.md

Hope it can be useful :D

Other OCaml News

From the ocaml.org blog

Here are links from many OCaml blogs aggregated at the ocaml.org blog.

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.

--=-=-=--