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=hmcJE7JF; 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=FwgOPA1u; 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 793E3B80123 for ; Tue, 14 May 2024 14:25:53 +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=DU7SaaldrLnHtykJSmSdauwNTCfLwXQ/kc1k3iMC4fw=; b=hmcJE7JFzmBr4M6gpQL82FjWiQm8hScfe86cNkqpjFPPdQ2lB9ylDnD0 cYtUt3iiM85JqfZRxOJN8BN8wjf+oKuhHjuglRpo0SNysc4mXWT5Opwds FhH5LzKPP4AEtU4hkZvQgjFWdCqFg12bovCmLUP3+8IG0H3hAXrsACa3D g=; 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,159,1712613600"; d="scan'208,217";a="165668110" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 14 May 2024 15:25:52 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id B7A7FE0CE2; Tue, 14 May 2024 15:25:51 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 76400E004E for ; Tue, 14 May 2024 15:25:47 +0200 (CEST) IronPort-SDR: 66436659_koSa0hxiJpGXqA7oRdy+TRNNlU5TQTv2gyMNIMf+EyDEHQK HMjR7y2I0F6tpbptO9DiAmDElDJK56Vqhrx6HvA== X-IPAS-Result: =?us-ascii?q?A0FcBABfZUNmkCIeaIFagliBQVsoGQFiWDMHCEgDAYQWP?= =?us-ascii?q?INPjhuBFQGFVoNehnyIQYQpgQAdORQBAwENLgEOBAECBAEBAwECAYILgi5GA?= =?us-ascii?q?haIKgIfBgEEMwYOAQIEAQEBAQMCAwEBAQEBAQgBAQUBAQECAQECBAYBAhABA?= =?us-ascii?q?QEBAQEgHhAOJ4V0DYJKLiNrZQk3AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAgwBgQAODgEIBAYTAQEtBQYYFA8DFAEGAwIED?= =?us-ascii?q?QE1AwEmFAaCDlgBgmQDBQwGlHObO3p/M4EBggwBAQaBCD4CAQIJAgIDAQ4JJ?= =?us-ascii?q?QHaBIFjCQ0CgTmDEYR6CRoBJEgEZQKCJoIIhDcnD4FVRIEVNYFzSgdvghA0B?= =?us-ascii?q?gsMAQEBAQEXRGABAQIGCTwJgyWCaYYQJoFrAYJQgn1XFXKCXoEaa22BCC8Ya?= =?us-ascii?q?4JDK4ECeQIGFggCgQ9ZWQ9agToUQgIMgS1Nhi+BS0szIRMBVRMXCz4JFgIWA?= =?us-ascii?q?xsUBDAPCQsmKgY2AhIMBgYGWSAWCQQjAwgEA0QDIHERAwQaBAsHdYFAgWsEE?= =?us-ascii?q?0QDgTiHH4JWgzuCHoQfS4R0gXYOYYpGHUADC209NRQbKKMRBDUCKoJLDiwFA?= =?us-ascii?q?QwBARo9CRMaAQcDCRYCGAgCJAoILQwKGREIDQUJAwERBwEOHwkCBQYGKZIwC?= =?us-ascii?q?wkQGCoDjxmhaGw0B4QWgVsGDIh9gSSVa4QFgVaJa4E9lyCCESKYQIJUgnOEK?= =?us-ascii?q?gqBGwlegQ5phRiEa4s/E4FEg3qBeyRJYgEBGQEOBzMaMEMNAgQLghUBHBcJF?= =?us-ascii?q?jAcD48zgmhBfS2CbjvDGEE1AgEBBwcpAgcBCgEBAwmFYgEBgwoCJgQIgUgBA?= =?us-ascii?q?Q?= IronPort-PHdr: A9a23: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 JwBjhff3OuuIY5EXnqqckE= IronPort-Data: A9a23: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 vlALkXS3Hi4FX0= IronPort-HdrOrdr: A9a23:LQhr76EBt0NhxyDlpLqE1ceALOsnbusQ8zAXPiFKOH9om6mj/f xG88506faZslsssRIb+exoWpPgfZq0z/ccirX5Vo3MYOCJggeVBbAnxbSn6TztES/z+4dmpM VdWpk7Lsb/SXxzjcOS2njdLz/M+qjjzJyV X-Talos-CUID: 9a23:i8Qtcm7nKaCW4s4sdNss0UUSPt0BanTmyiniAGiDJWFLZL+pRgrF X-Talos-MUID: =?us-ascii?q?9a23=3AuG3awQ2c+zJVY+4QZYZVYtjGCjUj3Zn3FWUhkb8?= =?us-ascii?q?/geKcNX0oJy6P0T+7Tdpy?= X-IronPort-Anti-Spam-Filtered: true X-URL-LookUp-ScanningError: 1 X-IronPort-AV: E=Sophos;i="6.08,159,1712613600"; d="scan'208,217";a="165668080" X-URL-ContentFilter: X-MGA-submission: =?us-ascii?q?MDEbNph3e2bNKaI3SqiW7GjMER4Fd5Tf0P+yX0?= =?us-ascii?q?mFldvYHq07viQ1VSdb48e5HkVGzb6HxbFZVQ/0olrRd9R4/qoj5cppWr?= =?us-ascii?q?3cHrIoC/QpMVdKGUxA70JJHwd8R5TK0j29Bn8+RqcRkdQam5rS6ccK3o?= =?us-ascii?q?8JSdc79YD6WPADBo+UG2m2uQ=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2024 15:25:45 +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 A88B1564A14 for ; Tue, 14 May 2024 15:25:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1715693144; bh=6eq0mNVyEKdtY/LdLi79KG99RwTpiPRP2dVgPSEdneE=; h=From:To:Subject:Date:Message-ID; b=FwgOPA1u/ex3HjolUG2RsdHwBnluelmC/24Bvqqwuz2iPz/sbuxf+kuNmqgtDWZWH vNo5vyy6iwT8xUcR6XGHiN2KJ73AtebsisrmCqbj1kWY1QjRM9bqiGDtnnGiL5c4V8 /r0rZuA/J4hU3fkjt4O+IOrhN6Gz6zM+IaQyH42g= From: Alan Schmitt To: caml-list@inria.fr Date: Tue, 14 May 2024 15:25:44 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue May 14 15:25:45 2024 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.438612, queueID=E9CD0564A16 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: 19128 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 ZWsgb2YgTWF5IDA3IHRvIDE0LA0KMjAyNC4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpTb21lIGNvZGUg Zm9yIE1vbGVjdWxhciBNZWNoYW5pY3MgaW4gT0NhbWwNCk9DYW1sLm9yZyBOZXdzbGV0dGVyOiBB cHJpbCAyMDI0DQpFeGFtcGxlIG9mIHVzaW5nIExTUCBzZXJ2ZXIgaW4gRW1hY3MNCkR1bmUgRGV2 ZWxvcGVyIEV4cGVyaWVuY2UgRmVlZGJhY2sgRm9ybQ0KRGtNTCAyLjEuMQ0KQSBNYXkgdXBkYXRl IG9uIHdhc21fb2Zfb2NhbWwNCk9DYW1sIDUuMi4wIHJlbGVhc2VkDQpPbGQgQ1dODQoNCg0KU29t ZSBjb2RlIGZvciBNb2xlY3VsYXIgTWVjaGFuaWNzIGluIE9DYW1sDQrilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0K ICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3NvbWUtY29kZS1mb3It bW9sZWN1bGFyLW1lY2hhbmljcy1pbi1vY2FtbC1hbm4vMTQ2MTAvMT4NCg0KDQpVbml4SnVua2ll IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSADQoNCiAgUmVjZW50bHksIEkgcmVsZWFzZWQgYSBidW5jaCBvZiBjb2Rl IGZvciBzb21lIE1vbGVjdWxhciBNZWNoYW5pY3MNCiAgY2FsY3VsYXRpb25zIGluIE9DYW1sLg0K DQogIFRoaXMgaXMgcHJldHR5IG11Y2ggYXQgdGhlIGJldGEgc3RhZ2UgZm9yIHRoZSBtb21lbnQu DQoNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9Vbml4SnVua2llL01NTz4NCg0KICBNYXliZSBpbiB0 aGUgZnV0dXJlIEkgd2lsbCBjcmVhdGUgYSBwcm9wZXIgbGlicmFyeSB0byBlbmNhcHN1bGF0ZSB0 aGUNCiAgTW9sIGFuZCBNb2wyIG1vZHVsZXMgaW4gdGhlcmU7IHRoZXkgYWxsb3cgdG8gcGVyZm9y bSBzb21lIG9wZXJhdGlvbnMNCiAgb24gc21hbGwgbW9sZWN1bGVzLg0KDQogIEZvciB0aG9zZSBp bnRlcmVzdGVkLCB0aGVyZSBpcyBhIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlDQogIFVu aXZlcnNhbCBGb3JjZSBGaWVsZCAoVUZGKSBpbiB0aGVyZTsgb25seSB0aGUgcGFydCBjb25jZXJu aW5nDQogIG5vbi1ib25kZWQgaW50ZXJhY3Rpb25zLg0KDQoNCk9DYW1sLm9yZyBOZXdzbGV0dGVy OiBBcHJpbCAyMDI0DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0K ICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L29jYW1sLW9yZy1uZXdz bGV0dGVyLWFwcmlsLTIwMjQvMTQ2MTEvMT4NCg0KDQpTYWJpbmUgU2NobWFsdHogYW5ub3VuY2Vk DQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIANCg0KICBXZWxjb21lIHRvIHRoZSBBcHJpbCAyMDI0IGVkaXRp b24gb2YgdGhlIE9DYW1sLm9yZyBuZXdzbGV0dGVyISBUaGlzDQogIHVwZGF0ZSBoYXMgYmVlbiBj b21waWxlZCBieSB0aGUgT0NhbWwub3JnIHRlYW0uIFlvdSBjYW4gZmluZCBbcHJldmlvdXMNCiAg dXBkYXRlc10gb24gRGlzY3Vzcy4NCg0KICBPdXIgZ29hbCBpcyB0byBtYWtlIE9DYW1sLm9yZyB0 aGUgYmVzdCByZXNvdXJjZSBmb3IgYW55b25lIHdobyB3YW50cw0KICB0byBnZXQgc3RhcnRlZCBh bmQgYmUgcHJvZHVjdGl2ZSBpbiBPQ2FtbC4gVGhlIE9DYW1sLm9yZyBuZXdzbGV0dGVyDQogIHBy b3ZpZGVzIGFuIHVwZGF0ZSBvbiBvdXIgcHJvZ3Jlc3MgdG93YXJkcyB0aGF0IGdvYWwgYW5kIGFu IG92ZXJ2aWV3DQogIG9mIHRoZSBjaGFuZ2VzIHdlIGFyZSB3b3JraW5nIG9uLg0KDQogIFdlIGNv dWxkbid0IGRvIGl0IHdpdGhvdXQgYWxsIHRoZSBhbWF6aW5nIHBlb3BsZSB3aG8gaGVscCB1cyBy ZXZpZXcsDQogIHJldmlzZSwgYW5kIGNyZWF0ZSBiZXR0ZXIgT0NhbWwgZG9jdW1lbnRhdGlvbiBh bmQgd29yayBvbiBpc3N1ZXMuIFlvdXINCiAgcGFydGljaXBhdGlvbiBlbmFibGVzIHVzIHRvIHNv IG11Y2ggbW9yZSB0aGFuIHdlIGNvdWxkIGp1c3QgYnkNCiAgb3Vyc2VsdmVzLiBUaGFuayB5b3Uh DQoNCiAgVGhpcyBuZXdzbGV0dGVyIGNvdmVyczoNCiAg4oCiICpPQ2FtbCBDb29rYm9vazoqIFdl IHNoaXBwZWQgYSBuZXcsIGNvbW11bml0eS1kcml2ZW4gc2VjdGlvbiBpbiB0aGUNCiAgICAgTGVh cm4gYXJlYS4gSGVscCB1cyBtYWtlIGl0IHJlYWxseSB1c2VmdWwgYnkgY29udHJpYnV0aW5nIGFu ZA0KICAgICByZXZpZXdpbmcgcmVjaXBlcyBmb3IgY29tbW9uIHRhc2tzIQ0KICDigKIgKkNvbW11 bml0eSAmIE1hcmtldGluZyBQYWdlcyBSZXdvcms6KiBXZSBoYXZlIFVJIGRlc2lnbnMgZm9yIHRo ZQ0KICAgICByZXdvcmtlZCBhbmQgbmV3IHBhZ2VzIG9mIHRoZSBjb21tdW5pdHkgc2VjdGlvbiBh bmQgYXJlIHN0YXJ0aW5nDQogICAgIHdvcmsgdG8gaW1wbGVtZW50IHRoZXNlLg0KICDigKIgKkdl bmVyYWwgSW1wcm92ZW1lbnRzOiogQXMgdXN1YWwsIHdlIGFsc28gd29ya2VkIG9uIGdlbmVyYWwN CiAgICAgbWFpbnRlbmFuY2UgYW5kIGltcHJvdmVtZW50cywgc28gd2UncmUgaGlnaGxpZ2h0aW5n IHNvbWUgb2YgdGhlDQogICAgIHdvcmsgdGhhdCBoYXBwZW5lZCBiZWxvdy4NCg0KDQpbcHJldmlv dXMgdXBkYXRlc10gPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdGFnL29jYW1sb3JnLW5ld3Ns ZXR0ZXI+DQoNCk9wZW4gSXNzdWVzIGZvciBDb250cmlidXRvcnMNCuKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjA0KDQogIFlvdSBjYW4gZmluZCBbb3BlbiBpc3N1ZXMgZm9yIGNvbnRyaWJ1dG9y cyBoZXJlXSENCg0KICBIZXJlJ3Mgc29tZSBuZXcgKGFuZCBhcyBvZiB0aW1lIG9mIHdyaXRpbmcg dGhpcyBuZXdzbGV0dGVyIHN0aWxsIG9wZW4pDQogIGlzc3VlcyB0aGF0IHdlcmUgb3BlbmVkIHRo aXMgbW9udGg6DQoNCiAg4oCiIFBhY2thZ2UgVmVyc2lvbnMgcGFnZSBpcyBtaXNzaW5nIGRhcmsg bW9kZSBzdHlsZXMNCiAgICBbb2NhbWwvb2NhbWwub3JnIzIzNDFdIGJ5IFtAc2FiaW5lXQ0KICDi gKIgKERhdGEpIEV4dGVuZCB0aGUgRGF0YSBNb2RlbCBvZiBBY2FkZW1pYyBJbnN0aXR1dGlvbiB0 byBSZWNvcmQNCiAgICBJbmZvcm1hdGlvbiBhYm91dCBDb3Vyc2UgTWF0ZXJpYWxzIFtvY2FtbC9v Y2FtbC5vcmcjMjMyOF0gYnkNCiAgICBbQHNhYmluZV0NCg0KDQpbb3BlbiBpc3N1ZXMgZm9yIGNv bnRyaWJ1dG9ycyBoZXJlXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvaXNz dWVzP3E9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rbGFiZWwlM0ElMjJoZWxwK3dhbnRlZCUyMitubyUz QWFzc2lnbmVlPg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzNDFdIDxodHRwczovL2dpdGh1Yi5jb20v b2NhbWwvb2NhbWwub3JnL2lzc3Vlcy8yMzQxPg0KDQpbQHNhYmluZV0gPGh0dHBzOi8vZ2l0aHVi LmNvbS9zYWJpbmU+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjMyOF0gPGh0dHBzOi8vZ2l0aHViLmNv bS9vY2FtbC9vY2FtbC5vcmcvaXNzdWVzLzIzMjg+DQoNCg0KVGhlIE9DYW1sIENvb2tib29rDQri lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0K ICBXZSBzaGlwcGVkIGEgbmV3LCBjb21tdW5pdHktZHJpdmVuIHNlY3Rpb24gaW4gdGhlIExlYXJu IGFyZWE6IHRoZQ0KICBPQ2FtbCBDb29rYm9vayENCg0KICBUaGUgT0NhbWwgQ29va2Jvb2sgaXMg YSBwbGFjZSB3aGVyZSBPQ2FtbCBkZXZlbG9wZXJzIHNoYXJlIGhvdyB0bw0KICBzb2x2ZSBjb21t b24gdGFza3MgdXNpbmcgcGFja2FnZXMgZnJvbSB0aGUgZWNvc3lzdGVtLg0KDQogIEEgdGFzayBp cyBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBkb25lIGluc2lkZSBhIHByb2plY3QuIEEgcmVj aXBlDQogIGlzIGEgY29kZSBzYW1wbGUgYW5kIGV4cGxhbmF0aW9ucyBvbiBob3cgdG8gcGVyZm9y bSBhIHRhc2sgdXNpbmcgYQ0KICBjb21iaW5hdGlvbiBvZiBvcGVuIHNvdXJjZSBsaWJyYXJpZXMu DQoNCiAgVGhlIENvb2tib29rIG5vdyBsaXZlIGF0IFtvY2FtbC5vcmcvY29va2Jvb2tdLCBidXQg dGhlcmUgYXJlIG5vdCBhIGxvdA0KICBvZiByZWNpcGVzIHB1Ymxpc2hlZCB5ZXQuDQoNCiAgSGVy ZSdzIGhvdyB3ZSBuZWVkIHlvdXIgaGVscDoNCg0KICAxLiBIZWxwIHJldmlldyBbb3BlbiBwdWxs IHJlcXVlc3RzIGZvciBjb29rYm9vayByZWNpcGVzXSENCiAgMi4gQ29udHJpYnV0ZSBuZXcgcmVj aXBlcyBhbmQgdGFza3MgZm9yIHRoZSBjb29rYm9vayENCiAgMy4gU3VnZ2VzdCBpbXByb3ZlbWVu dHMgdG8gZXhpc3RpbmcgcmVjaXBlcyBhbmQgdGhlIFVJLg0KDQogICpSZWxldmFudCBQUnMgYW5k IEFjdGl2aXRpZXM6Kg0KICDigKIgT3BlbiBQUnMgaW4gbmVlZCBvZiByZXZpZXdlcnM6DQogICAg 4oCiIFBSOiBDb29rYm9vayBnZW9kZXNpYyBbb2NhbWwvb2NhbWwub3JnIzIzODFdIGJ5IFtARi1M b3llcl0NCiAgICDigKIgUFI6IENvb2tib29rIC8gc3VicHJvY2VzcyBjcmVhdGlvbiBbb2NhbWwv b2NhbWwub3JnIzIzODJdIGJ5DQogICAgICBbQEYtTG95ZXJdDQogICAg4oCiIFBSOiBDb29rYm9v ayBnZXRlbnYgW29jYW1sL29jYW1sLm9yZyMyMzgzXSBieSBbQEYtTG95ZXJdDQogICAg4oCiIFBS OiBDb29rYm9vayA6IGxpbmFsZyBbb2NhbWwvb2NhbWwub3JnIzIzODZdIGJ5IFtARi1Mb3llcl0N CiAgICDigKIgUFI6IFVzZSBjYW1semlwIGFuZCB3aXRoX29wZW5fdGV4dCBbb2NhbWwvb2NhbWwu b3JnIzIzNzFdIGJ5DQogICAgICBbQGN1aWh0bGF1YWNdDQogICAg4oCiIFBSOiBEZXNlcmlhbGlz ZSBhbmQgcG9zdC1wcm9jZXNzIFlBTUwgcmVjaXBlcw0KICAgICAgW29jYW1sL29jYW1sLm9yZyMy MzcyXSBieSBbQGN1aWh0bGF1YWNdDQogICAg4oCiIFBSOiBSZWJhc2VkIGRhdGFiYXNlIHJlY2lw ZXMgW29jYW1sL29jYW1sLm9yZyMyMzc2XSBieQ0KICAgICAgW0BjdWlodGxhdWFjXQ0KICAgIOKA oiBQUjogUmViYXNlZCBiYXNpYyBjb25jdXJyZW5jeSByZWNpcGUgW29jYW1sL29jYW1sLm9yZyMy Mzc3XSBieQ0KICAgICAgW0BjdWlodGxhdWFjXQ0KICAgIOKAoiBQUjogUmViYXNlZCBzb3J0aW5n IHJlY2lwZSBbb2NhbWwvb2NhbWwub3JnIzIzNzhdIGJ5IFtAY3VpaHRsYXVhY10NCiAgICDigKIg UFI6IFJlYmFzZWQgYXNjaWkgYW5kIHV0Zi04IHJlY2lwZXMgW29jYW1sL29jYW1sLm9yZyMyMzc5 XSBieQ0KICAgICAgW0BjdWlodGxhdWFjXQ0KDQoNCltvY2FtbC5vcmcvY29va2Jvb2tdIDxodHRw czovL29jYW1sLm9yZy9jb29rYm9vaz4NCg0KW29wZW4gcHVsbCByZXF1ZXN0cyBmb3IgY29va2Jv b2sgcmVjaXBlc10NCjxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGxzP3E9 aXMlM0FwcitpcyUzQW9wZW4rbGFiZWwlM0FDb29rYm9vaz4NCg0KW29jYW1sL29jYW1sLm9yZyMy MzgxXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzIzODE+DQoNCltA Ri1Mb3llcl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9GLUxveWVyPg0KDQpbb2NhbWwvb2NhbWwub3Jn IzIzODJdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM4Mj4NCg0K W29jYW1sL29jYW1sLm9yZyMyMzgzXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9y Zy9wdWxsLzIzODM+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjM4Nl0gPGh0dHBzOi8vZ2l0aHViLmNv bS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzg2Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzNzFdIDxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM3MT4NCg0KW0BjdWlodGxh dWFjXSA8aHR0cHM6Ly9naXRodWIuY29tL2N1aWh0bGF1YWM+DQoNCltvY2FtbC9vY2FtbC5vcmcj MjM3Ml0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzcyPg0KDQpb b2NhbWwvb2NhbWwub3JnIzIzNzZdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3Jn L3B1bGwvMjM3Nj4NCg0KW29jYW1sL29jYW1sLm9yZyMyMzc3XSA8aHR0cHM6Ly9naXRodWIuY29t L29jYW1sL29jYW1sLm9yZy9wdWxsLzIzNzc+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjM3OF0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzc4Pg0KDQpbb2NhbWwvb2Nh bWwub3JnIzIzNzldIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM3 OT4NCg0KDQpDb21tdW5pdHkgJiBNYXJrZXRpbmcgUGFnZXMgUmV3b3JrDQrilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBXZSBoYXZlIFtVSSBkZXNpZ25z IGZvciB0aGUgcmV3b3JrZWQgYW5kIG5ldyBwYWdlcyBvZiB0aGUgY29tbXVuaXR5DQogIHNlY3Rp b25dIGFuZCBhcmUgc3RhcnRpbmcgd29yayB0byBpbXBsZW1lbnQgdGhlc2UuIFdlIGFyZSBvcGVu aW5nDQogIHNtYWxsIGlzc3VlcyBmb3IgY29udHJpYnV0b3JzIHRvIGhlbHAuIDpvcmFuZ2VfaGVh cnQ6DQoNCiAgKlJlbGV2YW50IFBScyBhbmQgQWN0aXZpdGllczoqDQogIOKAoiBQUjogVUk6IEFk ZGVkIERhdGVUaW1lIG9mIEV2ZW50IG9uIHRoZSBDbGllbnQgU2lkZSBpbiB0aGUgVXNlcidzDQog ICAgVGltZXpvbmUgW29jYW1sL29jYW1sLm9yZyMyMzM5XSBieSBbQG1haGEtc2FjaGluXQ0KICDi gKIgUFI6IENyZWF0ZSBuZXcgRXZlbnRzIHBhZ2Ugd2l0aCByb3V0aW5nIHVuZGVyIENvbW11bml0 eQ0KICAgIFtvY2FtbC9vY2FtbC5vcmcjMjMzOF0gYnkgW0BzaGFrdGhpbWFhbl0NCiAg4oCiIFBS OiBBZGQgZXZlbnRfdHlwZSBmaWVsZCB0byBFdmVudHMsIGFuZCByZW5kZXIgdGFnIGluIEV2ZW50 IGNhcmRzDQogICAgW29jYW1sL29jYW1sLm9yZyMyMzY2XSBieSBbQGNzYWx0YWNoaW5dDQoNCg0K W1VJIGRlc2lnbnMgZm9yIHRoZSByZXdvcmtlZCBhbmQgbmV3IHBhZ2VzIG9mIHRoZSBjb21tdW5p dHkgc2VjdGlvbl0NCjxodHRwczovL3d3dy5maWdtYS5jb20vZmlsZS83aG1vV2tRUDlQZ0xUZlpD cWlaTVdhL09DYW1sLUNvbW11bml0eS1QYWdlcz90eXBlPWRlc2lnbiZub2RlLWlkPTYzNyUzQTQ1 MzkmbW9kZT1kZXNpZ24mdD1ScFFsR3ZPcGVnMWE5M0FaLTE+DQoNCltvY2FtbC9vY2FtbC5vcmcj MjMzOV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzM5Pg0KDQpb QG1haGEtc2FjaGluXSA8aHR0cHM6Ly9naXRodWIuY29tL21haGEtc2FjaGluPg0KDQpbb2NhbWwv b2NhbWwub3JnIzIzMzhdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwv MjMzOD4NCg0KW0BzaGFrdGhpbWFhbl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9zaGFrdGhpbWFhbj4N Cg0KW29jYW1sL29jYW1sLm9yZyMyMzY2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1s Lm9yZy9wdWxsLzIzNjY+DQoNCltAY3NhbHRhY2hpbl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9jc2Fs dGFjaGluPg0KDQoNCkdlbmVyYWwgSW1wcm92ZW1lbnRzIGFuZCBEYXRhIEFkZGl0aW9ucw0K4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM DQoNCiAgKlJlbGV2YW50IFBScyBhbmQgQWN0aXZpdGllczoqDQogIOKAoiBCdWdmaXhlcw0KICAg IOKAoiBQUjogZml4OiBhZGQgLm1vZHVsZXMgc3R5bGUgZm9yIG9kb2MtZ2VuZXJhdGVkIGRvY3Vt ZW50YXRpb24gcGFnZXMNCiAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjM1NV0gYnkgW0BzYWJpbmVd DQogICAg4oCiIFBSOiBGaXg6IGNvcnJlY3QgdGV4dCBjb2xvciBvbiBjb21tdW5pdHkgcmVzb3Vy Y2UgY2FyZA0KICAgICAgW29jYW1sL29jYW1sLm9yZyMyMzI5XSBieSBbQHNhYmluZV0NCiAgICDi gKIgUFI6IGZpeDogTWFrZSBDb21tdW5pdHkgY2FyZCBhYm91dCBMZWFybk9DYW1sIHBvaW50IHRv IHRoZSBjb3JyZWN0DQogICAgICBVUkwgW29jYW1sL29jYW1sLm9yZyMyMzMxXSBieSBbQHl1cnVn XQ0KICDigKIgRG9jdW1lbnRhdGlvbg0KICAgIOKAoiBQUjogT0NhbWwgVG91cjogLU5ldyBzZWN0 aW9ucy0gSW50cm9kdWN0aW9uIGFuZCBCZWZvcmUgV2UNCiAgICAgIEJlZ2luLiBBZGRlZCBSRVBM IGRlZmluaXRpb24gYW5kIGRvdWJsZSBzZW1pY29sb24gdXNlDQogICAgICBbb2NhbWwvb2NhbWwu b3JnIzIzMzZdIGJ5IFtAQWxmcmVkby1DYXJsb25dDQogICAg4oCiIFBSOiBNaW5vciBsaW5lIGVk aXRpbmcgb24gIlZhbHVlcyBhbmQgRnVuY3Rpb25zIiBUdXRvcmlhbA0KICAgICAgW29jYW1sL29j YW1sLm9yZyMyMzIxXSBieSBbQGpldXhkZWF1XQ0KICDigKIgRGF0YQ0KICAgIOKAoiBQUjogW3Bs YW5ldF06IGFkZCBtZWxhbmdlIGJsb2cgW29jYW1sL29jYW1sLm9yZyMyMzYyXSBieQ0KICAgICAg W0Bhbm1vbnRlaXJvXQ0KICAgIOKAoiBQUjogKGRhdGEpIGFkZCBhcHJpbCBPVVBTIG1lZXR1cCBb b2NhbWwvb2NhbWwub3JnIzIzNjBdIGJ5DQogICAgICBbQHNhYmluZV0NCiAgICDigKIgUFI6IEFk ZCBUVU0gYXMgYW4gYWNhZGVtaWMgaW5zdGl0dXRpb24gW29jYW1sL29jYW1sLm9yZyMyMzQ3XSBi eQ0KICAgICAgW0BQdW1QdW03XQ0KICAgIOKAoiBQUjogQWRkIFJvdXRpbmUgam9iIHBvc3QuIFtv Y2FtbC9vY2FtbC5vcmcjMjMyNV0gYnkgW0BtZWZ5bF0NCiAgICDigKIgUFI6IChkYXRhKSBBZGQg T0NhbWwgV29ya3Nob3AgdG8gVXBjb21pbmcgRXZlbnRzDQogICAgICBbb2NhbWwvb2NhbWwub3Jn IzIzMjZdIGJ5IFtAc2FiaW5lXQ0KICAgIOKAoiBQUjogKGRhdGEpIGFkZCBSZWFzb25TVEhMTSBt ZWV0dXAgW29jYW1sL29jYW1sLm9yZyMyMzA4XSBieQ0KICAgICAgW0BzYWJpbmVdDQogICAg4oCi IFBSOiBBZGQgbWlzc2luZyBNZHggY2hhbmdlbG9ncyBbb2NhbWwvb2NhbWwub3JnIzIzNjhdIGJ5 DQogICAgICBbQHRtYXR0aW9dDQogICAg4oCiIFBSOiBGaXggc21hbGwgdHlwbyBpbiBEdW5lIDMu MTQgYW5ub3VuY2VtZW50DQogICAgICBbb2NhbWwvb2NhbWwub3JnIzIzMTVdIGJ5IFtATGVvbmlk YXMtZnJvbS1YSVZdDQogICAg4oCiIFBSOiBEdW5lIDMuMTUuMCBhbm5vdW5jZW1lbnQgW29jYW1s L29jYW1sLm9yZyMyMzE2XSBieQ0KICAgICAgW0BMZW9uaWRhcy1mcm9tLVhJVl0NCiAgICDigKIg UFI6IE9DYW1sIDUuMi4wLWJldGEyIGNoYW5nZWxvZyBlbnRyeSBbb2NhbWwvb2NhbWwub3JnIzIz NDNdIGJ5DQogICAgICBbQE9jdGFjaHJvbl0NCiAgICDigKIgUFI6IChkYXRhKSBhZGQgTWFyY2gg MjAyNCBPQ2FtbC5vcmcgbmV3c2xldHRlcg0KICAgICAgW29jYW1sL29jYW1sLm9yZyMyMzE3XSBi eSBbQHNhYmluZV0NCiAgICDigKIgUFI6IEFkZCB0aGUgYW5ub3VuZW1lbnQgZm9yIG9wYW0gMi4y LjB+YmV0YTINCiAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjMzNF0gYnkgW0BraXQtdHkta2F0ZV0N CiAgICDigKIgUFI6IGpvYnM6IHJlbW92ZSBYZW5TZXJ2ZXIgcG9zaXRpb25zIFtvY2FtbC9vY2Ft bC5vcmcjMjM4N10gYnkNCiAgICAgIFtAZWR3aW50b3Jva10NCiAg4oCiIE1vdmUgb2YgdGhlIE9D YW1sIExhbmd1YWdlIE1hbnVhbCBmcm9tIHYyLm9jYW1sLm9yZyB0byBvY2FtbC5vcmcNCiAgICDi gKIgUFI6IGZpeDogU2VydmUgbWFudWFsIHVuZGVyIC9sdHMgYW5kIC9sYXRlc3QgVVJMcw0KICAg ICAgW29jYW1sL29jYW1sLm9yZyMyMzQ1XSBieSBbQHNhYmluZV0NCiAgICDigKIgUFI6IFJlbW92 ZSAvbWFudWFsL2x0cyBVUkwsIGZpeCBicm9rZW4gcm91dGUgZm9yIC9tYW51YWwvbGF0ZXN0DQog ICAgICBbb2NhbWwvb2NhbWwub3JnIzIzNDhdIGJ5IFtAc2FiaW5lXQ0KICAgIOKAoiBQUjogQWRk IC9hcGkvKiogcmVkaXJlY3Rpb24gW29jYW1sL29jYW1sLm9yZyMyMzUyXSBieSBbQG10ZWx2ZXJz XQ0KICAgIOKAoiBQUjogSGFuZGxlIGx0cywgZGVmYXVsdCBhbmQgbWlzc2luZyB2ZXJzaW9uIGlu IG1pZGRsZXdhcmUNCiAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjM1OF0gYnkgW0BjdWlodGxhdWFj XQ0KICAgIOKAoiBQUjogQWRkIHNlcnZlZCBwYWdlcyB0byBzaXRlbWFwIFtvY2FtbC9vY2FtbC5v cmcjMjM2M10gYnkNCiAgICAgIFtAY3VpaHRsYXVhY10NCiAgICDigKIgUFI6IFNraXAgdW5yZWxl YXNlZCBtYW51YWxzIGZyb20gc2l0ZW1hcCBbb2NhbWwvb2NhbWwub3JnIzIzNjddIGJ5DQogICAg ICBbQGN1aWh0bGF1YWNdDQogICAg4oCiIFBSOiBUdXJuIHNvbWUgdjIgcmVkaXJlY3RzIGludG8g bG9jYWwgW29jYW1sL29jYW1sLm9yZyMyMzU2XSBieQ0KICAgICAgW0BjdWlodGxhdWFjXQ0KICDi gKIgUmVmYWN0b3IgLyBDb2RlIGhlYWx0aA0KICAgIOKAoiBQUjogUmVtb3ZlIENvbW1pdCBtb2R1 bGUgZnJvbSBHbG9iYWwgW29jYW1sL29jYW1sLm9yZyMyMzE5XSBieQ0KICAgICAgW0BjdWlodGxh dWFjXSAoY3JlYXRlZC9tZXJnZWQ6IDIwMjQtMDQtMDVUMTQ6MTc6MzFaKQ0KICAgIOKAoiBQUjog Y2hvcmU6IHJlbW92ZSBsZWFybl9zaWRlYmFyLmVtbCwgd2hpY2ggd2FzIG5vdCB1c2VkIGFueW1v cmUNCiAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjM0Ml0gYnkgW0BzYWJpbmVdDQogICAg4oCiIFBS OiBBZGQgbGluayB0byBkZXBsb3kuY2kub2NhbWwub3JnIGluIEhBQ0tJTkcNCiAgICAgIFtvY2Ft bC9vY2FtbC5vcmcjMjM1NF0gYnkgW0BjdWlodGxhdWFjXQ0KICAgIOKAoiBQUjogVXNlIHR5cGUg YW5ub3RhdGlvbiBmb3IgZGF0YSBwYXJhbWV0ZXJzIFtvY2FtbC9vY2FtbC5vcmcjMjM4NF0NCiAg ICAgIGJ5IFtAY3VpaHRsYXVhY10NCg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzNTVdIDxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM1NT4NCg0KW0BzYWJpbmVdIDxodHRw czovL2dpdGh1Yi5jb20vc2FiaW5lPg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzMjldIDxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjMyOT4NCg0KW29jYW1sL29jYW1sLm9y ZyMyMzMxXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzIzMzE+DQoN CltAeXVydWddIDxodHRwczovL2dpdGh1Yi5jb20veXVydWc+DQoNCltvY2FtbC9vY2FtbC5vcmcj MjMzNl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzM2Pg0KDQpb QEFsZnJlZG8tQ2FybG9uXSA8aHR0cHM6Ly9naXRodWIuY29tL0FsZnJlZG8tQ2FybG9uPg0KDQpb b2NhbWwvb2NhbWwub3JnIzIzMjFdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3Jn L3B1bGwvMjMyMT4NCg0KW0BqZXV4ZGVhdV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9qZXV4ZGVhdT4N Cg0KW29jYW1sL29jYW1sLm9yZyMyMzYyXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1s Lm9yZy9wdWxsLzIzNjI+DQoNCltAYW5tb250ZWlyb10gPGh0dHBzOi8vZ2l0aHViLmNvbS9hbm1v bnRlaXJvPg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzNjBdIDxodHRwczovL2dpdGh1Yi5jb20vb2Nh bWwvb2NhbWwub3JnL3B1bGwvMjM2MD4NCg0KW29jYW1sL29jYW1sLm9yZyMyMzQ3XSA8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzIzNDc+DQoNCltAUHVtUHVtN10gPGh0 dHBzOi8vZ2l0aHViLmNvbS9QdW1QdW03Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzMjVdIDxodHRw czovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjMyNT4NCg0KW0BtZWZ5bF0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9tZWZ5bD4NCg0KW29jYW1sL29jYW1sLm9yZyMyMzI2XSA8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzIzMjY+DQoNCltvY2FtbC9vY2FtbC5v cmcjMjMwOF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzA4Pg0K DQpbb2NhbWwvb2NhbWwub3JnIzIzNjhdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwu b3JnL3B1bGwvMjM2OD4NCg0KW0B0bWF0dGlvXSA8aHR0cHM6Ly9naXRodWIuY29tL3RtYXR0aW8+ DQoNCltvY2FtbC9vY2FtbC5vcmcjMjMxNV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2Ft bC5vcmcvcHVsbC8yMzE1Pg0KDQpbQExlb25pZGFzLWZyb20tWElWXSA8aHR0cHM6Ly9naXRodWIu Y29tL0xlb25pZGFzLWZyb20tWElWPg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzMTZdIDxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjMxNj4NCg0KW29jYW1sL29jYW1sLm9y ZyMyMzQzXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzIzNDM+DQoN CltAT2N0YWNocm9uXSA8aHR0cHM6Ly9naXRodWIuY29tL09jdGFjaHJvbj4NCg0KW29jYW1sL29j YW1sLm9yZyMyMzE3XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzIz MTc+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjMzNF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9v Y2FtbC5vcmcvcHVsbC8yMzM0Pg0KDQpbQGtpdC10eS1rYXRlXSA8aHR0cHM6Ly9naXRodWIuY29t L2tpdC10eS1rYXRlPg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzODddIDxodHRwczovL2dpdGh1Yi5j b20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM4Nz4NCg0KW0BlZHdpbnRvcm9rXSA8aHR0cHM6Ly9n aXRodWIuY29tL2Vkd2ludG9yb2s+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjM0NV0gPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzQ1Pg0KDQpbb2NhbWwvb2NhbWwub3Jn IzIzNDhdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM0OD4NCg0K W29jYW1sL29jYW1sLm9yZyMyMzUyXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9y Zy9wdWxsLzIzNTI+DQoNCltAbXRlbHZlcnNdIDxodHRwczovL2dpdGh1Yi5jb20vbXRlbHZlcnM+ DQoNCltvY2FtbC9vY2FtbC5vcmcjMjM1OF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2Ft bC5vcmcvcHVsbC8yMzU4Pg0KDQpbQGN1aWh0bGF1YWNdIDxodHRwczovL2dpdGh1Yi5jb20vY3Vp aHRsYXVhYz4NCg0KW29jYW1sL29jYW1sLm9yZyMyMzYzXSA8aHR0cHM6Ly9naXRodWIuY29tL29j YW1sL29jYW1sLm9yZy9wdWxsLzIzNjM+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjM2N10gPGh0dHBz Oi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzY3Pg0KDQpbb2NhbWwvb2NhbWwu b3JnIzIzNTZdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM1Nj4N Cg0KW29jYW1sL29jYW1sLm9yZyMyMzE5XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1s Lm9yZy9wdWxsLzIzMTk+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjM0Ml0gPGh0dHBzOi8vZ2l0aHVi LmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yMzQyPg0KDQpbb2NhbWwvb2NhbWwub3JnIzIzNTRd IDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjM1ND4NCg0KW29jYW1s L29jYW1sLm9yZyMyMzg0XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxs LzIzODQ+DQoNCg0KRXhhbXBsZSBvZiB1c2luZyBMU1Agc2VydmVyIGluIEVtYWNzDQrilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZl Og0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2V4YW1wbGUtb2YtdXNpbmctbHNwLXNl cnZlci1pbi1lbWFjcy8xNDYwMS80Pg0KDQoNClRpbSBNY0dpbGNocmlzdCBhbm5vdW5jZWQNCuKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgA0KDQogIEkgd3JvdGUgYSBibG9nIHBvc3QgYWJvdXQgbXkgc2V0dXAN CiAgPGh0dHBzOi8vbGFtYmRhZm9vLmNvbS9wb3N0cy8yMDIyLTA5LTA3LW9jYW1sLXdpdGgtZW1h Y3MtMjAyMi5odG1sPg0KICBUaGUgb25seSBjaGFuZ2UgSSd2ZSBtYWRlIGlzIHRvIHVzZSBgZW52 cmMtbW9kZScgcmF0aGVyIHRoYW4NCiAgYGRpcmVudi1tb2RlJy4NCg0KDQpEdW5lIERldmVsb3Bl ciBFeHBlcmllbmNlIEZlZWRiYWNrIEZvcm0NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczov L2Rpc2N1c3Mub2NhbWwub3JnL3QvZHVuZS1kZXZlbG9wZXItZXhwZXJpZW5jZS1mZWVkYmFjay1m b3JtLzE0NjE3LzE+DQoNCg0Kb3N0ZXJhIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgVGhlIER1bmUgdGVhbSBhdCBbVGFyaWRl c10gaXMgbG9va2luZyB0byBnZXQgaW5wdXRzIGZyb20gYWxsIG9mIHlvdSB0bw0KICBpbXByb3Zl IHRoZSBEdW5lIERYIChkZXZlbG9wZXIgZXhwZXJpZW5jZSksIHNvIHdlJ3ZlIG9wZW5lZCBhIFtz bWFsbCwNCiAgYW5vbnltb3VzLCB1bnN0cnVjdHVyZWQgZmVlZGJhY2sgZm9ybV0gdG8gaGVhciB5 b3VyIGlkZWFzIG9uIGhvdyBEdW5lDQogIGNvdWxkIGJlIGltcHJvdmVkIDpjYW1lbDoNCg0KICBX ZSdyZSBsb29raW5nIGZvcndhcmQgdG8geW91ciBpZGVhcyEgOnNwYXJrbGVzOg0KDQoNCltUYXJp ZGVzXSA8aHR0cHM6Ly90YXJpZGVzLmNvbT4NCg0KW3NtYWxsLCBhbm9ueW1vdXMsIHVuc3RydWN0 dXJlZCBmZWVkYmFjayBmb3JtXQ0KPGh0dHBzOi8vZm9ybXMuZ2xlL2l6ZzV4U3QxWE5wM2k0UmM4 Pg0KDQoNCkRrTUwgMi4xLjENCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFy Y2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWRrbWwtMi0xLTEvMTQ2MjAv MT4NCg0KDQpqYmVja2ZvcmQgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBVc2UgW2h0dHBzOi8vb2NhbWwub3Jn L2luc3RhbGxdIGlmIHlvdSBhcmUgYSBmaXJzdC10aW1lIHVzZXIgKHRoZQ0KICBpbnN0YWxsIHN0 ZXBzIGhhdmVuJ3QgY2hhbmdlZCkuDQoNCiAgVGhlIHVwZ3JhZGUgc3RlcHMgYW5kIHJlbGVhc2Ug bm90ZXMgYXJlIGF2YWlsYWJsZSBhdA0KICA8aHR0cHM6Ly9naXRsYWIuY29tL2RrbWwvZGlzdHJp YnV0aW9ucy9ka21sLy0vcmVsZWFzZXMvMi4xLjE+LiBGb3INCiAgdGhvc2Ugd2hvIGFyZSBvbiAy LjEuMCwgdGhlIHVwZ3JhZGUgaXMgdGhlIGZvbGxvd2luZyBpbiBQb3dlclNoZWxsOg0KDQogIOKU jOKUgOKUgOKUgOKUgA0KICDilIIgMS4uNiB8ICUgeyAgQCgiYmFzaCIsInNoIiwid2l0aC1ka21s Iiwib2NhbWxsc3AiLCJnaXQiLCJvcGFtIiwiZHVuZSIsIm9jYW1scnVuIikgfCAlIHsgdGFza2tp bGwgL0YgL0lNICIkXy5leGUiIH07IFN0YXJ0LVNsZWVwIDEgfQ0KICDilIIgd2luZ2V0IHVwZ3Jh ZGUgZGttbA0KICDilJTilIDilIDilIDilIANCg0KDQpbaHR0cHM6Ly9vY2FtbC5vcmcvaW5zdGFs bF0gPGh0dHBzOi8vb2NhbWwub3JnL2luc3RhbGw+DQoNCk1ham9yIENoYW5nZXMNCuKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIOKAoiBUaGUgb3BhbSByZXBvc2l0 b3J5IGlzIGZpeGVkIHRvIFtjb21taXQNCiAgICA2YzNmNzNmNDI4OTBjYzE5ZjgxZWIxZGVjODAy M2MyY2Q3YjhiNWNkXSBmb3Igc3RhYmlsaXR5LiBJZiB5b3UgbmVlZA0KICAgIGEgbmV3IHZlcnNp b24gb2YgYSBwYWNrYWdlIGFuZCBjYW4ndCB3YWl0IGZvciB0aGUgbmV4dCB2ZXJzaW9uIG9mDQog ICAgRGtNTCwgeW91IGNhbiBwaW4gdGhhdCBwYWNrYWdlJ3MgdXJsIChyZWNvbW1lbmRlZCkgb3Ig ZmxvYXQgdGhlIG9wYW0NCiAgICByZXBvc2l0b3J5IHdpdGggYG9wYW0gcmVwb3NpdG9yeSBzZXQt dXJsIGRlZmF1bHQNCiAgICBnaXQraHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29wYW0tcmVwb3Np dG9yeS5naXQjbWFpbicuDQogIOKAoiBXaW5kb3dzIFNESyAxMC4wLjIyNjIxLjAgYW5kIFZDIDE3 LjggKDE0LjM4KSBhZGRlZCB0byBhbGxvd2VkDQogICAgbGlzdC4gVGhpcyBzdXBwb3J0cyBWaXN1 YWwgU3R1ZGlvIDIwMjIsIGVzcGVjaWFsbHkgZm9yIEdpdExhYiBDSS4NCiAg4oCiIE5ldyBzdXBw b3J0ZWQgcGFja2FnZTogYHRpbnlfaHR0cGQnDQoNCg0KW2NvbW1pdCA2YzNmNzNmNDI4OTBjYzE5 ZjgxZWIxZGVjODAyM2MyY2Q3YjhiNWNkXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFt LXJlcG9zaXRvcnkvdHJlZS82YzNmNzNmNDI4OTBjYzE5ZjgxZWIxZGVjODAyM2MyY2Q3YjhiNWNk Pg0KDQoNClBhdGNoZXMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIOKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgQ0KICAgUGFj a2FnZSAgICAgICAgICAgICAgICAgV2hhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ c3N1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K ICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIANCiAgIGBiYXNlX2JpZ3N0cmluZy52MTYuMCcgIEltcGxlbWVudCBgbWVtbWVtJyBm b3IgV2luZG93cyAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L2Jhc2VfYmlnc3Ry aW5nL2lzc3Vlcy82PiANCiAgIGBjb3JlX2tlcm5lbC52MC4xNi4wJyAgIE1TVkMgZml4IGRpZG4n dCBtYWtlIGl0IHRvIDAuMTYuMCAgPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L2NvcmVf a2VybmVsL3B1bGwvMTA3PiAgICANCiAg4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSBDQoNCg0KVXBncmFkZWQgUGFja2FnZXMNCuKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIOKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgQ0KICAgUGFja2Fn ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICAg ICAgICAgVG8gDQogIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgA0KICAgZHVuZSAoZXQgYWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMi4xICAg ICAgICAgICAgICAgICAgICAzLjE1LjAgDQogICBvY2FtbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA0LjE0LjAgICAgICAgICAgICAgICAgICAgIDQuMTQuMiANCiAgIG9jYW1sZm9y bWF0IChldCBhbCkgICAgICAgICAgICAgICAgICAgIDAuMjUuMSAgICAgICAgICAgICAgICAgICAg MC4yNi4xIA0KICAgb2RvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMi4w ICAgICAgICAgICAgICAgICAgICAgMi40LjEgDQogICBvZG9jLXBhcnNlciAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMi4wLjAgICAgICAgICAgICAgICAgICAgICAyLjQuMSANCiAgIGxzcCAo ZXQgYWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTYuMiAgICAgICAgICAgICAgICAg ICAgMS4xNy4wIA0KICAgbWR4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu My4wICAgICAgICAgICAgICAgICAgICAgMi40LjEgDQogICBjdHlwZXMgKGV0IGFsKSAgICAgICAw LjE5LjItd2luZG93c3N1cHBvcnQtcjcgIDAuMTkuMi13aW5kb3dzc3VwcG9ydC1yOCANCiAgIHRp bnlfaHR0cGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwLjE2IA0KICDilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIENCg0KICBUaGFua3MgdG8gT0NhbWwgU29mdHdhcmUgRm91bmRhdGlvbiBmb3Igc3Bv bnNvcmluZyBEa01MIQ0KDQoNCkEgTWF5IHVwZGF0ZSBvbiB3YXNtX29mX29jYW1sDQrilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNz Lm9jYW1sLm9yZy90L2EtbWF5LXVwZGF0ZS1vbi13YXNtLW9mLW9jYW1sLzE0NjM1LzE+DQoNCg0K SmFuIE1pZHRnYWFyZCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFNwcmluZyBpcyBvdmVy IHVzIGFuZCBzZXZlcmFsIG1vbnRocyBoYXZlIHBhc3NlZCBzaW5jZSB3ZSBsYXN0IHNoYXJlZA0K ICBbYW4gdXBkYXRlIG9uIFdlYkFzc2VtYmx5IGNvbXBpbGF0aW9uXS4NCg0KDQpbYW4gdXBkYXRl IG9uIFdlYkFzc2VtYmx5IGNvbXBpbGF0aW9uXQ0KPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcv dC9hLWRlY2VtYmVyLXVwZGF0ZS1mcm9tLXRoZS1vY2FtbC13YXNtLW9yZ2FuaXNhdGlvbi8xMzU2 NT4NCg0KSW50cm9kdWN0aW9uDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwN Cg0KICBbYHdhc21fb2Zfb2NhbWwnXSBpcyBhIGNvbXBpbGVyIGZyb20gT0NhbWwgYnl0ZWNvZGUg dG8gW1dlYkFzc2VtYmx5XSwNCiAgc2ltaWxhciB0byBbYGpzX29mX29jYW1sJ10gZnJvbSB3aGlj aCBpdCB3YXMgZm9ya2VkLiBgd2FzbV9vZl9vY2FtbCcNCiAgb2ZmZXJzIGEgZnVuY3Rpb25hbCwg YWxtb3N0IGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGBqc19vZl9vY2FtbCcgLQ0KICB3aXRoIGJl dHRlciBwZXJmb3JtYW5jZS4NCg0KICBGb3Igbm93LCB0aGUgY29tcGlsZXIgdGFyZ2V0cyBhIEph dmFTY3JpcHQtaG9zdGVkIFdlYkFzc2VtYmx5DQogIGVuZ2luZS4gVGhlIHByb2R1Y2VkIGNvZGUg ZnVydGhlcm1vcmUgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBbV2FzbQ0KICBleHRlbnNpb25zXSB0 byBydW46DQogIOKAoiBbdGhlIEdDIGV4dGVuc2lvbl0sIGluY2x1ZGluZyBmdW5jdGlvbmFsIHJl ZmVyZW5jZXMgYW5kIDMxLWJpdA0KICAgIGludGVnZXJzDQogIOKAoiBbdGhlIHRhaWwtY2FsbCBl eHRlbnNpb25dDQogIOKAoiBbdGhlIGV4Y2VwdGlvbiBoYW5kbGluZyBleHRlbnNpb25dDQoNCg0K W2B3YXNtX29mX29jYW1sJ10gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC13YXNtL3dhc21fb2Zf b2NhbWw+DQoNCltXZWJBc3NlbWJseV0gPGh0dHBzOi8vd2ViYXNzZW1ibHkub3JnLz4NCg0KW2Bq c19vZl9vY2FtbCddIDxodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9qc19vZl9vY2FtbD4NCg0K W1dhc20gZXh0ZW5zaW9uc10gPGh0dHBzOi8vd2ViYXNzZW1ibHkub3JnL3JvYWRtYXAvPg0KDQpb dGhlIEdDIGV4dGVuc2lvbl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9nYz4NCg0K W3RoZSB0YWlsLWNhbGwgZXh0ZW5zaW9uXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJs eS90YWlsLWNhbGwvYmxvYi9tYWluL3Byb3Bvc2Fscy90YWlsLWNhbGwvT3ZlcnZpZXcubWQ+DQoN Clt0aGUgZXhjZXB0aW9uIGhhbmRsaW5nIGV4dGVuc2lvbl0NCjxodHRwczovL2dpdGh1Yi5jb20v V2ViQXNzZW1ibHkvZXhjZXB0aW9uLWhhbmRsaW5nL2Jsb2IvbWFzdGVyL3Byb3Bvc2Fscy9leGNl cHRpb24taGFuZGxpbmcvRXhjZXB0aW9ucy5tZD4NCg0KDQpQbGF0Zm9ybSBzdXBwb3J0DQrilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICDigKIgW05v ZGUgMjIgbm93IHN1cHBvcnRzIHRoZSBXYXNtR0MgZXh0ZW5zaW9uXSwgbWVhbmluZyB0aGF0IGl0 IGNhbiBydW4NCiAgICBgd2FzbV9vZl9vY2FtbCcgb3V0cHV0IG91dCBvZiB0aGUgYm94IQ0KICDi gKIgQ2xvdWRGbGFyZSB1c2VzIFtWOCAxMi4wIHNpbmNlIERlYyA0LCAyMDIzXS4gW1RoaXMgY29y cmVzcG9uZHMgdG8NCiAgICBDaHJvbWUgMTIwXSwgYW5kIHRodXMgaW5jbHVkZXMgdGhlIFdhc21H QyBleHRlbnNpb24sIGVmZmVjdGl2ZWx5DQogICAgZW5hYmxpbmcgT0NhbWwgZGV2ZWxvcG1lbnQg b24gQ2xvdWRGbGFyZSEgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlDQogICAgW1dlYkFzc2VtYmx5 IENsb3VkRmxhcmUgZG9jc10NCiAg4oCiIFtUaGUgdXBjb21pbmcgMC4xNC4wIHJlbGVhc2VdIG9m IFt0aGUgV2FzbUVkZ2UgV2ViQXNzZW1ibHkgZW5naW5lXQ0KICAgIGFkZHMgV2FzbUdDIHN1cHBv cnQgdG9vLiBBbG9uZyB3aXRoIHRoZSBbanVzdCBtZXJnZWQgZXhjZXB0aW9uDQogICAgc3VwcG9y dF0sIHRoaXMgcGF2ZXMgdGhlIHdheSBmb3IgcnVubmluZyBgd2FzbV9vZl9vY2FtbCcgb3V0cHV0 4oCmDQoNCg0KW05vZGUgMjIgbm93IHN1cHBvcnRzIHRoZSBXYXNtR0MgZXh0ZW5zaW9uXQ0KPGh0 dHBzOi8vbm9kZWpzLm9yZy9lbi9ibG9nL2Fubm91bmNlbWVudHMvdjIyLXJlbGVhc2UtYW5ub3Vu Y2U+DQoNCltWOCAxMi4wIHNpbmNlIERlYyA0LCAyMDIzXQ0KPGh0dHBzOi8vZGV2ZWxvcGVycy5j bG91ZGZsYXJlLmNvbS93b3JrZXJzL3BsYXRmb3JtL2NoYW5nZWxvZy8jMjAyMy0xMi0wND4NCg0K W1RoaXMgY29ycmVzcG9uZHMgdG8gQ2hyb21lIDEyMF0gPGh0dHBzOi8vdjguZGV2L2RvY3MvdmVy c2lvbi1udW1iZXJzPg0KDQpbV2ViQXNzZW1ibHkgQ2xvdWRGbGFyZSBkb2NzXQ0KPGh0dHBzOi8v ZGV2ZWxvcGVycy5jbG91ZGZsYXJlLmNvbS93b3JrZXJzL3J1bnRpbWUtYXBpcy93ZWJhc3NlbWJs eS8+DQoNCltUaGUgdXBjb21pbmcgMC4xNC4wIHJlbGVhc2VdDQo8aHR0cHM6Ly9naXRodWIuY29t L1dhc21FZGdlL1dhc21FZGdlL3JlbGVhc2VzL3RhZy8wLjE0LjAtcmMuND4NCg0KW3RoZSBXYXNt RWRnZSBXZWJBc3NlbWJseSBlbmdpbmVdIDxodHRwczovL2dpdGh1Yi5jb20vV2FzbUVkZ2UvV2Fz bUVkZ2U+DQoNCltqdXN0IG1lcmdlZCBleGNlcHRpb24gc3VwcG9ydF0NCjxodHRwczovL2dpdGh1 Yi5jb20vV2FzbUVkZ2UvV2FzbUVkZ2UvcHVsbC8zMzA2Pg0KDQoNCmB3YXNtX29mX29jYW1sJyBu ZXdzDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYwNCg0KICBTaW5jZSB0aGUgbGFzdCB1cGRhdGUgaW4gRGVjZW1iZXINCiAg4oCiIErD qXLDtG1lIGdhdmUgYSB0YWxrIGFib3V0IGB3YXNtX29mX29jYW1sJyBhdCB0aGUgSU5SSUEgQ2Ft Yml1bQ0KICAgIHNlbWluYXIgLSBbc2xpZGVzIGF2YWlsYWJsZSBoZXJlXQ0KICDigKIgT2xpdmll ciBOaWNvbGUgam9pbmVkIHRoZSBgd2FzbV9vZl9vY2FtbCcgZWZmb3J0DQogIOKAoiBKw6lyw7Rt ZSBhbmQgT2xpdmllciB2aXNpdGVkIEphbmUgU3RyZWV0IHRvIGhlbHAgdGhlbSBhZG9wdA0KICAg IGB3YXNtX29mX29jYW1sJw0KDQogIE5vdGFibGUgZmVhdHVyZXMNCiAg4oCiIFNvdXJjZW1hcCBz dXBwb3J0IHdhcyBhZGRlZCBbb2NhbWwtd2FzbS93YXNtX29mX29jYW1sIzI3XQ0KICAgIOKAoiBU aGlzIHJlcXVpcmVkIGFkZGluZyBzb3VyY2VtYXAgc3VwcG9ydCB0byB0aGUgYHdhc20tbWV0YWRj ZScgYW5kDQogICAgICBgd2FzbS1tZXJnZScgYmluYXJ5ZW4gdG9vbHMgW1dlYkFzc2VtYmx5L2Jp bmFyeWVuIzYzNzJdDQogIOKAoiBBIGZpcnN0IGltcGxlbWVudGF0aW9uIG9mIHNlcGFyYXRlIGNv bXBpbGF0aW9uIHdhcyBjb21wbGV0ZWQNCiAgICBbb2NhbWwtd2FzbS93YXNtX29mX29jYW1sIzM2 XQ0KICAgIOKAoiBPbmUgY2FuIGNvbXBpbGUgY21vIGFuZCBjbWEgZmlsZXMsIHByb2R1Y2luZyBp bnRlcm1lZGlhdGUgYXJjaGl2ZQ0KICAgICAgZmlsZXMNCiAgICDigKIgVGhlbiB0aGUgZmlsZXMg Y2FuIGJlIGxpbmtlZCB0b2dldGhlcjogcmVsZXZhbnQgV2FzbSBtb2R1bGVzIGFyZQ0KICAgICAg cHV0IGluIGEgZGlyZWN0b3J5LCBhbmQgSmF2YVNjcmlwdCBjb2RlIGlzIGdlbmVyYXRlZCB0byBs b2FkIHRoZW0NCiAgICAgIGFuZCBsaW5rIHRoZW0gdG9nZXRoZXINCiAg4oCiIFN0b3JlIGxvbmct bGl2ZWQgdG9wbGV2ZWwgdmFsdWVzIGludG8gZ2xvYmFscw0KICAgIFtvY2FtbC13YXNtL3dhc21f b2Zfb2NhbWwjMzBdDQogICAg4oCiIFRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHByb2R1Y2VkIGJ5 IGB3YXNtX29mX29jYW1sJyBjYW4gYmUgbGFyZ2UNCiAgICAgIGFuZCBjb250YWluIGEgbGFyZ2Ug bnVtYmVyIG9mIHZhcmlhYmxlcy4gVGhpcyBpcyBjaGFsbGVuZ2luZyB0bw0KICAgICAgYm90aCBi aW5hcnllbiB0b29scyBhbmQgdGhlIFdhc20gZW5naW5lcy4gVGhlIHByb2JsZW0gY2FuIGJlDQog ICAgICBhbGxldmlhdGVkIGJ5IHN0b3JpbmcgbG9uZy1saXZlZCB0b3BsZXZlbCB2YWx1ZXMgaW50 byBnbG9iYWwNCiAgICAgIHZhcmlhYmxlcy4gQXMgYW4gc2lkZSBiZW5lZml0LCBtYW55IGNsb3N1 cmVzIGNhbiBiZSBzdGF0aWNhbGx5DQogICAgICBhbGxvY2F0ZWQgKHNpbmNlIHRoZWlyIGZyZWUg dmFyaWFibGVzIGFyZSBub3cgc3RvcmVkIGluIGdsb2JhbHMpLA0KICAgICAgd2hpY2ggYWdhaW4g Y2FuIHByb3ZpZGUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGluIHRoZSByZW1haW5pbmcNCiAg ICAgIHBhcnRzIG9mIHRoZSBjb2RlLg0KICDigKIgVHVwbGUgc3ludGF4IGNoYW5nZXMgW29jYW1s LXdhc20vd2FzbV9vZl9vY2FtbCMzMV0NCiAgICDigKIgUHJlcGFyZWQgdGhlIHN3aXRjaCB0byB0 aGUgbmV3IHZlcnNpb24gb2YgYmluYXJ5ZW4sIHdoaWNoIGhhcw0KICAgICAgc21hbGwgc3ludGF4 IGNoYW5nZXMNCiAg4oCiIFVzZSB0aGUgSlMgU3RyaW5nIEJ1aWx0aW5zIHByb3Bvc2FsIGZvciBz dHJpbmcgY29udmVyc2lvbnMgd2hlbg0KICAgIGF2YWlsYWJsZSBbb2NhbWwtd2FzbS93YXNtX29m X29jYW1sIzMzXQ0KICDigKIgSW1wcm92ZSB0aGUgV0FUIChXYXNtIHRleHQgZm9ybWF0KSBvdXRw dXQgdG8gYmUgbW9yZSByZWFkYWJsZQ0KICAgIFtvY2FtbC13YXNtL3dhc21fb2Zfb2NhbWwjMzRd DQogICAg4oCiIE5hbWUgbG9jYWwgdmFyaWFibGVzICh0aGV5IHdlcmUganVzdCBudW1iZXJlZCkg YW5kIHVzZSBzaG9ydGVyDQogICAgICBuYW1lcyAodGhlIG5hbWVzIHVzZWQgdG8gYmUgc3lzdGVt YXRpY2FsbHkgc3VmZml4ZWQgdG8gZW5zdXJlIHRoZXkNCiAgICAgIHdlcmUgdW5pcXVlKS4NCg0K ICBPdGhlciBmZWF0dXJlcyBhbmQgZml4ZXMNCiAg4oCiIEZpeGVkIGZpbGUgZGVzY3JpcHRvciBt YW5hZ2VtZW50IHNvIHRoYXQgaXQgd29ya3Mgd2l0aCBsYXJnZSBmaWxlDQogICAgZGVzY3JpcHRv cnMgW29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbCMxOF0NCiAg4oCiIFBSOiBVcGRhdGUgRmlyZWZv eCB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIFJFQURNRSAobm8gbG9uZ2VyIGJldGEpDQogICAgW29j YW1sLXdhc20vd2FzbV9vZl9vY2FtbCMxOV0NCiAg4oCiIFBSOiBGaXggcGluIGJyYW5jaCBpbiBp bnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zDQogICAgW29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbCMy MF0NCiAg4oCiIFBSOiBBZGQgYFN0ZGxpYi5TdHJpbmcuZm9sZF97bGVmdCxyaWdodH0nIHRvIGJ1 aWxkIG9uIE9DYW1sIDwgNC4xMw0KICAgIFtvY2FtbC13YXNtL3dhc21fb2Zfb2NhbWwjMjFdDQog IOKAoiBQUiB0cmFuc2xhdGluZyBzdHVicyBvZiBgaW50ZWdlcnNfanNfc3R1YnMnIHRvIFdhc20N CiAgICBbbzEtbGFicy9pbnRlZ2Vyc19zdHVic19qcyMxMF0NCiAgICDigKIgVHJhY2tlZCBhIGJ1 ZyBpbiBhIHRlc3Qgb24gdGhlIHJlcG8gW28xLWxhYnMvaW50ZWdlcnNfc3R1YnNfanMjOV0NCiAg 4oCiIFBSOiBHZW5lcmF0ZSB2YWxpZCBXYXNtIGNvZGUgW29jYW1sLXdhc20vd2FzbV9vZl9vY2Ft bCMyMl0NCiAg4oCiIFBSOiBBdm9pZCB1c2luZyBgZXZhbCcgZm9yIHN0YXRpY2FsbHkga25vd24g c3RyaW5ncw0KICAgIFtvY2FtbC13YXNtL3dhc21fb2Zfb2NhbWwjMjRdDQogIOKAoiBQUjogSGF2 ZSBwaHlzaWNhbCBlcXVhbGl0eSBpbnNwZWN0IEphdmFzY3JpcHQgb2JqZWN0cw0KICAgIFtvY2Ft bC13YXNtL3dhc21fb2Zfb2NhbWwjMjVdDQogIOKAoiBQUjogVHVuZSBvcHRpbWl6YXRpb24gcHJv ZmlsZXMgW29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbCMyNl0NCiAg4oCiIFBSOiBDb3JyZWN0aW9u IGFuZCBwcmVjaXNpb24gYWJvdXQgQmluYXJ5ZW4gdmVyc2lvbg0KICAgIFtvY2FtbC13YXNtL3dh c21fb2Zfb2NhbWwjMjldDQoNCiAgQmluYXJ5ZW4gZml4ZXMNCiAg4oCiIFBSOiB3YXNtLW1lcmdl OiBjaGVjayB0aGF0IHRoZSB0eXBlcyBvZiBpbXBvcnRzIGFuZCBleHBvcnRzDQogICAgbWF0Y2gu IFtXZWJBc3NlbWJseS9iaW5hcnllbiM2NDM3XQ0KICAgIOKAoiBJbXByb3ZlZCBiaW5hcnllbidz IGxpbmtlciB0byBjaGVjayB0aGF0IHRoZSB0eXBlcyBvZiBpbXBvcnRzIGFuZA0KICAgICAgZXhw b3J0cyBtYXRjaC4gRm91bmQgYSB0eXBlIG1pc21hdGNoIGluIHRoZSB3YXNtX29mX29jYW1sIHJ1 bnRpbWUNCiAgICAgIHRoaXMgd2F5Lg0KICDigKIgUFI6IEZpeGVzIHJlZ2FyZGluZyBleHBsaWNp dCBuYW1lcyBbV2ViQXNzZW1ibHkvYmluYXJ5ZW4jNjQ2Nl0NCiAgICDigKIgVGhlIG5hbWUgb2Yg c29tZSBtb2R1bGUgY29tcG9uZW50cyB3ZXJlIGxvc3QgZHVyaW5nIG1vZHVsZSBsaW5raW5nDQog IOKAoiBQUjogRml4IHdyaXRpbmcgb2YgZGF0YSBzZWdtZW50IG5hbWVzIGluIG5hbWUgc2VjdGlv bg0KICAgIFtXZWJBc3NlbWJseS9iaW5hcnllbiM2NDYyXQ0KICAgIOKAoiBCaW5hcnllbiBjb3Vs ZCBhY3R1YWxseSBnZW5lcmF0ZSBhIG1hbGZvcm1lZCBuYW1lIHNlY3Rpb24NCg0KDQpbc2xpZGVz IGF2YWlsYWJsZSBoZXJlXQ0KPGh0dHBzOi8vY2FtYml1bS5pbnJpYS5mci9zZW1pbmFpcmVzL3Ry YW5zcGFyZW50cy8yMDIzMTIxMy5KZXJvbWUuVm91aWxsb24ucGRmPg0KDQpbb2NhbWwtd2FzbS93 YXNtX29mX29jYW1sIzI3XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC13YXNtL3dhc21fb2Zf b2NhbWwvcHVsbC8yNz4NCg0KW1dlYkFzc2VtYmx5L2JpbmFyeWVuIzYzNzJdDQo8aHR0cHM6Ly9n aXRodWIuY29tL1dlYkFzc2VtYmx5L2JpbmFyeWVuL3B1bGwvNjM3Mj4NCg0KW29jYW1sLXdhc20v d2FzbV9vZl9vY2FtbCMzNl0NCjxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtd2FzbS93YXNtX29m X29jYW1sL3B1bGwvMzY+DQoNCltvY2FtbC13YXNtL3dhc21fb2Zfb2NhbWwjMzBdDQo8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbC9wdWxsLzMwPg0KDQpbb2NhbWwt d2FzbS93YXNtX29mX29jYW1sIzMxXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC13YXNtL3dh c21fb2Zfb2NhbWwvcHVsbC8zMT4NCg0KW29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbCMzM10NCjxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwtd2FzbS93YXNtX29mX29jYW1sL3B1bGwvMzM+DQoNCltv Y2FtbC13YXNtL3dhc21fb2Zfb2NhbWwjMzRdDQo8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXdh c20vd2FzbV9vZl9vY2FtbC9wdWxsLzM0Pg0KDQpbb2NhbWwtd2FzbS93YXNtX29mX29jYW1sIzE4 XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC13YXNtL3dhc21fb2Zfb2NhbWwvaXNzdWVzLzE4 Pg0KDQpbb2NhbWwtd2FzbS93YXNtX29mX29jYW1sIzE5XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9v Y2FtbC13YXNtL3dhc21fb2Zfb2NhbWwvcHVsbC8xOT4NCg0KW29jYW1sLXdhc20vd2FzbV9vZl9v Y2FtbCMyMF0NCjxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtd2FzbS93YXNtX29mX29jYW1sL3B1 bGwvMjA+DQoNCltvY2FtbC13YXNtL3dhc21fb2Zfb2NhbWwjMjFdDQo8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbC9wdWxsLzIxPg0KDQpbbzEtbGFicy9pbnRlZ2Vy c19zdHVic19qcyMxMF0NCjxodHRwczovL2dpdGh1Yi5jb20vbzEtbGFicy9pbnRlZ2Vyc19zdHVi c19qcy9wdWxsLzEwPg0KDQpbbzEtbGFicy9pbnRlZ2Vyc19zdHVic19qcyM5XQ0KPGh0dHBzOi8v Z2l0aHViLmNvbS9vMS1sYWJzL2ludGVnZXJzX3N0dWJzX2pzL2lzc3Vlcy85Pg0KDQpbb2NhbWwt d2FzbS93YXNtX29mX29jYW1sIzIyXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC13YXNtL3dh c21fb2Zfb2NhbWwvcHVsbC8yMj4NCg0KW29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbCMyNF0NCjxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwtd2FzbS93YXNtX29mX29jYW1sL3B1bGwvMjQ+DQoNCltv Y2FtbC13YXNtL3dhc21fb2Zfb2NhbWwjMjVdDQo8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXdh c20vd2FzbV9vZl9vY2FtbC9wdWxsLzI1Pg0KDQpbb2NhbWwtd2FzbS93YXNtX29mX29jYW1sIzI2 XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC13YXNtL3dhc21fb2Zfb2NhbWwvcHVsbC8yNj4N Cg0KW29jYW1sLXdhc20vd2FzbV9vZl9vY2FtbCMyOV0NCjxodHRwczovL2dpdGh1Yi5jb20vb2Nh bWwtd2FzbS93YXNtX29mX29jYW1sL3B1bGwvMjk+DQoNCltXZWJBc3NlbWJseS9iaW5hcnllbiM2 NDM3XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9iaW5hcnllbi9wdWxsLzY0Mzc+ DQoNCltXZWJBc3NlbWJseS9iaW5hcnllbiM2NDY2XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJB c3NlbWJseS9iaW5hcnllbi9wdWxsLzY0NjY+DQoNCltXZWJBc3NlbWJseS9iaW5hcnllbiM2NDYy XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9iaW5hcnllbi9wdWxsLzY0NjI+DQoN Cg0KT0NhbWwgNS4yLjAgcmVsZWFzZWQNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1 c3Mub2NhbWwub3JnL3Qvb2NhbWwtNS0yLTAtcmVsZWFzZWQvMTQ2MzgvMT4NCg0KDQpvY3RhY2hy b24gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIANCg0KICBUaGUgT0NhbWwgdGVhbSBoYXMgdGhlIHBsZWFzdXJlIG9mIGNl bGVicmF0aW5nIHRoZSBiaXJ0aGRheSBvZiBJbmdlDQogIExlaG1hbm4gYnkgYW5ub3VuY2luZyB0 aGUgcmVsZWFzZSBvZiBPQ2FtbCB2ZXJzaW9uIDUuMi4wLg0KDQogIFNvbWUgb2YgdGhlIGhpZ2hs aWdodHMgaW4gT0NhbWwgNS4yLjAgYXJlOg0KICDigKIgUmUtaW50cm9kdWNlZCBHQyBjb21wYWN0 aW9uDQogICAgR0MgY29tcGFjdGlvbiBjYW4gbm93IGJlIG1hbnVhbGx5IHRyaWdnZXJlZCBieSBj YWxsaW5nIGBHYy5jb21wYWN0DQogICAgKCknIG1hbnVhbGx5LiAgVGhpcyBpcyBleHBlY3RlZCB0 byBiZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvcg0KICAgIHByb2dyYW1zIHRoYXQgd2lzaCB0byBy ZWxlYXNlIG1lbW9yeSB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhZnRlciBhDQogICAgdGVtcG9y YXJ5IG1lbW9yeS1pbnRlbnNpdmUgcGhhc2UuDQoNCiAg4oCiIFJlc3RvcmVkIG5hdGl2ZSBiYWNr ZW5kIGZvciBQT1dFUiA2NCBiaXRzDQogICAgV2l0aCB0aGlzIHJlc3RvcmVkIGJhY2tlbmQsIGFs bCA2NCBiaXRzIGFyY2hpdGVjdHVyZSBzdXBwb3J0ZWQgaW4NCiAgICBPQ2FtbCA0IGFyZSBzdXBw b3J0ZWQgYmluIE9DYW1sIDUNCg0KICDigKIgVGhyZWFkIHNhbml0aXplciBzdXBwb3J0DQogICAg VGhyZWFkIHNhbml0aXplciBpcyBhIGR5bmFtaWMgZGF0YSByYWNlIGRldGVjdG9yIHdoaWNoIGlu c3RydW1lbnQNCiAgICBtZW1vcnkgYWNjZXNzZXMgdG8gZGV0ZWN0IGFuZCBleHBsYWluIGRhdGEg cmFjZXMgYXQgZXhlY3V0aW9uDQogICAgdGltZS4gU2luY2UgdGhlIGluc3RydW1lbnRhdGlvbiBp cyBjb3N0bHkgKHdpdGggYSAyeCB0byA3eA0KICAgIHNsb3dkb3duKSwgaXQgbXVzdCBiZSBlbmFi bGVkIHdpdGggdGhlIGBvY2FtbC1vcHRpb24tdHNhbicNCiAgICBjb25maWd1cmF0aW9uIGZsYWcu IChUaGUgcmVmZXJlbmNlIG1hbnVhbCBjb250YWlucyBtb3JlIGluZm9ybWF0aW9uDQogICAgb24g aG93IHRvIHVzZSBUU0FOLikNCg0KICDigKIgTmV3IER5bmFycmF5IG1vZHVsZQ0KICAgIFRoaXMg bmV3IHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlIHByb3ZpZGVzIGEgc3RhbmRhcmQgaW1wbGVtZW50 YXRpb24NCiAgICBmb3IgcmVzaXplYWJsZSBhcnJheSwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBi ZSBtZW1vcnkgc2FmZSBldmVuIGluDQogICAgcHJlc2VuY2Ugb2YgZGF0YSByYWNlcy4NCg0KICDi gKIgTmV3IC1IIGZsYWcgZm9yIGhpZGRlbiBpbmNsdWRlIGRpcmVjdG9yaWVzDQogICAgVGhpcyBu ZXcgZmxhZyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYnVpbGQgdG9vbHMgdG8gc3BsaXQgY2xlYW5s eQ0KICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGRpcmVjdCAodGhlIGRlcGVuZGVuY2llcyBleHBs aWNpdGx5IGFkZGVkIGJ5DQogICAgdGhlIHByb2plY3QpIGFuZCBpbmRpcmVjdCBkZXBlbmRlbmNp ZXMgKHRoZSBkZXBlbmRlbmNpZXMgaW50cm9kdWNlZA0KICAgIGJ5IHRoZSBkaXJlY3QgZGVwZW5k ZW5jaWVzKSB3aXRob3V0IHRoZSBxdWlya3Mgb2YgcHJldmlvdXMNCiAgICBpbXBsZW1lbnRhdGlv bnMuDQoNCiAg4oCiIFByb2plY3Qtd2lkZSBvY2N1cmVuY2UgbWV0YWRhdGEgc3VwcG9ydCBmb3Ig ZGV2ZWxvcGVyIHRvb2xzDQogICAgV2hlbiBjb21waWxpbmcgYSBtb2R1bGUgd2l0aCB0aGUgYC1i aW4tYW5ub3QnIGFuZA0KICAgIGAtYmluLWFubm90LW9jY3VycmVuY2VzJyBmbGFncywgdGhlIGNv bXBpbGVyIHN0b3JlcyBpbiB0aGUgYC5jbXQnDQogICAgZmlsZSBhbiBpbmRleCBvZiBhbGwgb2Nj dXJlbmNlcyBvZiB2YWx1ZXMsIHR5cGVzLCBtb2R1bGVzLCDigKYNCg0KICDigKIgUmF3IGlkZW50 aWZpZXJzDQogICAgVG8gaW1wcm92ZSBPQ2FtbCB1cHdhcmQtY29tcGF0aWJpbGl0eSwgdGhlcmUg aXMgYSBuZXcgc3ludGF4IGZvcg0KICAgIGxvd2VyY2FzZSBpZGVudGlmaWVycywgYGxldCBcI2lm ID0gMCcsIHdoaWNoIHdvcmtzIGV2ZW4gaWYgdGhlDQogICAgaWRlbnRpZmllciBpcyBhIGtleXdv cmQgaW4gc29tZSBPQ2FtbCB2ZXJzaW9ucy4gVGhpcyBjaGFuZ2UgaGFzIGJlZW4NCiAgICBhZG9w dGVkIGluIE9DYW1sIDUuMiBpbiBwcmVwYXJhdGlvbiBvZiB0aGUgaW50cm9kdWN0aW9uIG9mIHRo ZQ0KICAgIGBlZmZlY3QnIGtleXdvcmQgaW4gT0NhbWwgNS4zDQoNCiAg4oCiIExvY2FsIG9wZW4g aW4gdHlwZSBleHByZXNzaW9ucw0KICAgIExvY2FsIG9wZW4gYXJlIG5vdyBhbGxvd2VkIGluIHR5 cGUgZXhwcmVzc2lvbjogYHZhbCAoKyk6IEludDY0Lih0IC0+DQogICAgdCAtPiB0KScuDQoNCiAg QW5kIGEgbG90IG9mIGluY3JlbWVudGFsIGNoYW5nZXM6DQoNCiAg4oCiIEFyb3VuZCAyMCBuZXcg ZnVuY3Rpb25zIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJlc2lkZXMgdGhlIG5ldw0KICAgIER5 bmFycmF5IG1vZHVsZSAoaW4gdGhlIGBBcnJheScsIGBGbG9hdCcsIGBGb3JtYXQnLCBgRnVuJywN CiAgICBgSW5fY2hhbm5lbCcsIGBPdXRfY2hhbm5lbCcsIGFuZCBgUmFuZG9tJyBtb2R1bGVzICkN CiAg4oCiIE1hbnkgZml4ZXMgYW5kIGltcHJvdmVtZW50cyBpbiB0aGUgcnVudGltZQ0KICDigKIg TWFueSBidWcgZml4ZXMNCg0KICBPQ2FtbCA1LjIuMCBpcyBzdGlsbCBhIHNvbWV3aGF0IGV4cGVy aW1lbnRhbCByZWxlYXNlIGNvbXBhcmVkIHRvIHRoZQ0KICBPQ2FtbCA0LjE0IGJyYW5jaC4gSW4g cGFydGljdWxhcg0KDQogIOKAoiBUaGUgV2luZG93cyBNU1ZDIHBvcnQgaXMgc3RpbGwgdW5hdmFp bGFibGUuDQogIOKAoiBFcGhlbWVyb24gcGVyZm9ybWFuY2VzIG5lZWQgdG8gYmUgaW52ZXN0aWdh dGVkLg0KICDigKIgYHN0YXRtZW1wcm9mJyBpcyBiZWluZyB0ZXN0ZWQgaW4gdGhlIGRldmVsb3Bl ciBicmFuY2ggb2YgT0NhbWwuDQogIOKAoiBUaGVyZSBhcmUgYSBudW1iZXIgb2Yga25vd24gcnVu dGltZSBjb25jdXJyZW5jeSBvciBHQyBwZXJmb3JtYW5jZQ0KICAgIGJ1Z3MgKHRoYXQgdHJpZ2dl ciB1bmRlciByYXJlIGNpcmN1bXN0YW5jZXMpLg0KDQogIFNpbmNlIHRoZSBXaW5kb3dzIE1TVkMg cG9ydCBhbmQgc3RhdG1lbXByb2YgYXJlIHN0aWxsIG1pc3NpbmcsIHRoZQ0KICBtYWludGVuYW5j ZSBzdXBwb3J0IGZvciBPQ2FtbCA0LjE0IHdpbGwgYmUgZXh0ZW5kZWQgdW50aWwgYXQgbGVhc3Qg dGhlDQogIGVuZCBvZiB0aGUgeWVhci4NCg0KICBQbGVhc2UgcmVwb3J0IGFueSB1bmV4cGVjdGVk IGJlaGF2aW91cnMgb24gdGhlIFtPQ2FtbCBpc3N1ZSB0cmFja2VyXQ0KICBhbmQgcG9zdCBhbnkg cXVlc3Rpb25zIG9yIGNvbW1lbnRzIHlvdSBtaWdodCBoYXZlIGhlcmUgb24gZGlzY3Vzcy4NCg0K ICBUaGUgZnVsbCBsaXN0IG9mIGNoYW5nZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBjaGFuZ2Vsb2cg YmVsb3cuDQoNCg0KW09DYW1sIGlzc3VlIHRyYWNrZXJdIDxodHRwczovL2dpdGh1Yi5jb20vb2Nh bWwvb2NhbWwvaXNzdWVzPg0KDQpJbnN0YWxsYXRpb24gSW5zdHJ1Y3Rpb25zDQrilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYwNCg0KICBUaGUgYmFzZSBjb21waWxlciBjYW4gYmUgaW5zdGFsbGVkIGFzIGFuIG9w YW0gc3dpdGNoIHdpdGggdGhlDQogIGZvbGxvd2luZyBjb21tYW5kczoNCg0KICDilIzilIDilIDi lIDilIANCiAg4pSCIG9wYW0gdXBkYXRlDQogIOKUgiBvcGFtIHN3aXRjaCBjcmVhdGUgNS4yLjAN CiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgVGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgcmVsZWFzZSBj YW5kaWRhdGUgaXMgYWxzbyBkaXJlY3RseSBhdmFpbGFibGUNCiAgb246DQoNCiAg4oCiIFtHaXRI dWJdDQogIOKAoiBbT0NhbWwgYXJjaGl2ZXMgYXQgSW5yaWFdDQoNCg0KW0dpdEh1Yl0gPGh0dHBz Oi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9hcmNoaXZlLzUuMi4wLnRhci5nej4NCg0KW09DYW1s IGFyY2hpdmVzIGF0IElucmlhXQ0KPGh0dHBzOi8vY2FtbC5pbnJpYS5mci9wdWIvZGlzdHJpYi9v Y2FtbC01LjIvb2NhbWwtNS4yLjAudGFyLmd6Pg0KDQoNCkZpbmUtVHVuZWQgQ29tcGlsZXIgQ29u ZmlndXJhdGlvbg0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoN CiAgSWYgeW91IHdhbnQgdG8gdHdlYWsgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvbXBpbGVy LCB5b3UgY2FuIHN3aXRjaA0KICB0byB0aGUgb3B0aW9uIHZhcmlhbnQgd2l0aDoNCg0KICDilIzi lIDilIDilIDilIANCiAg4pSCIG9wYW0gdXBkYXRlDQogIOKUgiBvcGFtIHN3aXRjaCBjcmVhdGUg PHN3aXRjaF9uYW1lPiBvY2FtbC12YXJpYW50cy41LjEuMCtvcHRpb25zIDxvcHRpb25fbGlzdD4N CiAg4pSU4pSA4pSA4pSA4pSADQoNCg0KICB3aGVyZSBgPG9wdGlvbl9saXN0PicgaXMgYSBzcGFj ZSBzZXBhcmF0ZWQgbGlzdCBvZiBgb2NhbWwtb3B0aW9uLSonDQogIHBhY2thZ2VzLiBGb3IgaW5z dGFuY2UsIGZvciBhIGBmbGFtYmRhJyBhbmQgYG5vLWZsYXQtZmxvYXQtYXJyYXknDQogIHN3aXRj aDoNCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIG9wYW0gc3dpdGNoIGNyZWF0ZSA1LjIuMCtm bGFtYmRhK25mZmEgb2NhbWwtdmFyaWFudHMuNS4yLjArb3B0aW9ucyBvY2FtbC1vcHRpb24tZmxh bWJkYSBvY2FtbC1vcHRpb24tbm8tZmxhdC1mbG9hdC1hcnJheQ0KICDilJTilIDilIDilIDilIAN Cg0KDQpPQ2FtbCA1LjIuMCBDaGFuZ2Vsb2cgKDEzIE1heSAyMDI0KQ0K4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCihDaGFuZ2Vsb2cgZWxpZGVkIHRv IHJlZHVjZSBtZXNzYWdlIHNpemUuIFBsZWFzZSBmb2xsb3cgdGhlIGFyY2hpdmUgbGluaw0KYWJv dmUuKSANCg0KDQpPbGQgQ1dODQrilZDilZDilZDilZDilZDilZDilZANCg0KICBJZiB5b3UgaGFw cGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3NlbmQgbWUgYSBtZXNzYWdlXSBhbmQgSSdsbCBt YWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sgYXQgW3RoZSBhcmNoaXZlXSBvciB0 aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10uDQoNCiAgSWYgeW91IGFsc28gd2lzaCB0 byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91IG1heSBzdWJzY3JpYmUNCiAgdG8g dGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNz YWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNo aXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2Yg dGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4N Cg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvaW5mby9jYW1sLWxp c3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --=-=-= 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 07 to 14, 2024.

Some code for Molecular Mechanics in OCaml

UnixJunkie announced

Recently, I released a bunch of code for some Molecular Mechanics calculations in OCaml.

This is pretty much at the beta stage for the moment.

https://github.com/UnixJunkie= /MMO

Maybe in the future I will create a proper library to encapsulate the Mol and Mol2 modules in there; they allow to perform some operations on small molecules.

For those interested, there is a partial implementation of the Universal Fo= rce Field (UFF) in there; only the part concerning non-bonded interactions.

OCaml.org Newsletter: April 2024

Sabine Schmaltz announced

Welcome to the April 2024 edition of the OCaml.org newsletter! This update = has been compiled by the OCaml.org team. You can find previous updates on Discuss.

Our goal is to make OCaml.org the best resource for anyone who wants to get= started and be productive in OCaml. The OCaml.org newsletter provides an u= pdate on our progress towards that goal and an overview of the changes we a= re working on.

We couldn't do it without all the amazing people who help us review, revise= , and create better OCaml documentation and work on issues. Your participat= ion enables us to so much more than we could just by ourselves. Thank you!

This newsletter covers:

  • OCaml Cookbook: We shipped a new, community-driven section in th= e Learn area. Help us make it really useful by contributing and reviewing r= ecipes for common tasks!
  • Community & Marketing Pages Rework: We have UI designs for t= he reworked and new pages of the community section and are starting work to= implement these.
  • General Improvements: As usual, we also worked on general mainte= nance and improvements, so we're highlighting some of the work that happene= d below.

Open Issues for Contributors

You can find open issues for co= ntributors here!

Here's some new (and as of time of writing this newsletter still open) issu= es that were opened this month:

The OCaml Cookbook

We shipped a new, community-driven section in the Learn area: the OCaml Coo= kbook!

The OCaml Cookbook is a place where OCaml developers share how to solve com= mon tasks using packages from the ecosystem.

A task is something that needs to be done inside a project. A recipe is a c= ode sample and explanations on how to perform a task using a combination of= open source libraries.

The Cookbook now live at ocaml.org/c= ookbook, but there are not a lot of recipes published yet.

Here's how we need your help:

  1. Help review open pull requests for cookbook recipes!
  2. Contribute new recipes and tasks for the cookbook!
  3. Suggest improvements to existing recipes and the UI.

Relevant PRs and Activities:

Community & Marketing Pages Rework

We have UI designs for the reworked and new pages of the = community section and are starting work to implement these. We are open= ing small issues for contributors to help. :orange_heart:=20

Relevant PRs and Activities:

General Improvements and Data Additions

Relevant PRs and Activities:

Example of using LSP server in Emacs

Tim McGilchrist announced

I wrote a blog post about my setup https://lambdafoo.com/posts/2022-09-0= 7-ocaml-with-emacs-2022.html The only change I've made is to use = envrc-mode rather than direnv-mode.

Dune Developer Experience Feedback Form

ostera announced

The Dune team at Tarides is looking to = get inputs from all of you to improve the Dune DX (developer experience), s= o we've opened a small, ano= nymous, unstructured feedback form to hear your ideas on how Dune could= be improved :camel:=20

We're looking forward to your ideas! :sparkles:=20

DkML 2.1.1

jbeckford announced

Use https://ocaml.org/install if = you are a first-time user (the install steps haven't changed).

The upgrade steps and release notes are available at https://gitlab.com/dkml/d= istributions/dkml/-/releases/2.1.1. For those who are on 2.1.0, the upg= rade is the following in PowerShell:

1..6 | % {  @("bash","sh","with-dkml","ocamllsp","git","opam","dune","ocaml=
run") | % { taskkill /F /IM "$_.exe" }; Start-Sleep 1 }
winget upgrade dkml

Major Changes

  • The opam repository is fixed to commit 6c3f73f4= 2890cc19f81eb1dec8023c2cd7b8b5cd for stability. If you need a new versi= on of a package and can't wait for the next version of DkML, you can pin th= at package's url (recommended) or float the opam repository with opam= repository set-url default git+https://github.com/ocaml/opam-repository.gi= t#main.
  • Windows SDK 10.0.22621.0 and VC 17.8 (14.38) added to allowed list. Thi= s supports Visual Studio 2022, especially for GitLab CI.
  • New supported package: tiny_httpd

Patches

Package What Issue
base_bigstring.v16.0 Implement memmem for Windows https://github.com/janestreet/base_bigstring/issues/6
core_kernel.v0.16.0 MSVC fix didn't make it to 0.16.0 https://github.com/janestreet/core_kernel/pull/107

Upgraded Packages

Package From To
dune (et al) 3.12.1 3.15.0
ocaml 4.14.0 4.14.2
ocamlformat (et al) 0.25.1 0.26.1
odoc 2.2.0 2.4.1
odoc-parser 2.0.0 2.4.1
lsp (et al) 1.16.2 1.17.0
mdx 2.3.0 2.4.1
ctypes (et al) 0.19.2-windowssupport-r7 0.19.2-windowssupport-r8
tiny_httpd   0.16

Thanks to OCaml Software Foundation for sponsoring DkML!

A May update on wasm_of_ocaml

Jan Midtgaard announced

Spring is over us and several months have passed since we last shared an update on WebAssembly compilation.

Introduction

wasm_of_ocaml= is a compiler from OCaml bytecode to WebAssembly, similar to js_of_ocaml from which it was forked. wasm_of_ocaml offers a functional, almost drop-in replacement for <= code>js_of_ocaml - with better performance.

For now, the compiler targets a JavaScript-hosted WebAssembly engine. The p= roduced code furthermore requires the following Wasm extensions to run:

Platform support

wasm_of_ocaml news

Since the last update in December

  • J=C3=A9r=C3=B4me gave a talk about wasm_of_ocaml at the IN= RIA Cambium seminar - slides available here
  • Olivier Nicole joined the wasm_of_ocaml effort
  • J=C3=A9r=C3=B4me and Olivier visited Jane Street to help them adopt wasm_of_ocaml

Notable features

  • Sourcemap support was added ocaml-wasm/wasm_of_ocaml#27
  • A first implementation of separate compilation was completed ocaml-wasm/wasm_of_oc= aml#36
    • One can compile cmo and cma files, producing intermediate archive files=
    • Then the files can be linked together: relevant Wasm modules are put in= a directory, and JavaScript code is generated to load them and link them t= ogether
  • Store long-lived toplevel values into globals ocaml-wasm/wasm_of_ocaml#30
    • The initialization code produced by wasm_of_ocaml can be l= arge and contain a large number of variables. This is challenging to both b= inaryen tools and the Wasm engines. The problem can be alleviated by storin= g long-lived toplevel values into global variables. As an side benefit, man= y closures can be statically allocated (since their free variables are now = stored in globals), which again can provide performance improvements in the= remaining parts of the code.
  • Tuple syntax changes ocaml-wasm/wasm_of_ocaml#31
    • Prepared the switch to the new version of binaryen, which has small syn= tax changes
  • Use the JS String Builtins proposal for string conversions when availab= le ocaml-wa= sm/wasm_of_ocaml#33
  • Improve the WAT (Wasm text format) output to be more readable ocaml-wasm/wasm_of= _ocaml#34
    • Name local variables (they were just numbered) and use shorter names (t= he names used to be systematically suffixed to ensure they were unique).

Other features and fixes

Binaryen fixes

OCaml 5.2.0 released

octachron announced

The OCaml team has the pleasure of celebrating the birthday of Inge Lehmann= by announcing the release of OCaml version 5.2.0.

Some of the highlights in OCaml 5.2.0 are:

  • Re-introduced GC compaction
    GC compaction can now be manually triggered by calling Gc.compact ()<= /code> manually. This is expected to be particularly useful for programs that wish to releas= e memory to the operating system after a temporary memory-intensive phase.
  • Restored native backend for POWER 64 bits
    With this restored backend, all 64 bits architecture supported in OCaml 4 a= re supported bin OCaml 5
  • Thread sanitizer support
    Thread sanitizer is a dynamic data race detector which instrument memory accesses to detect and explain data races at execution time. Since the instrumentation is costly (with a 2x to 7x slowdown), it must be enabled wi= th the ocaml-option-tsan configuration flag. (The reference manua= l contains more information on how to use TSAN.)
  • New Dynarray module
    This new standard library module provides a standard implementation for res= izeable array, which is guaranteed to be memory safe even in presence of data races.
  • New -H flag for hidden include directories
    This new flag makes it possible for build tools to split cleanly dependenci= es between direct (the dependencies explicitly added by the project) and indir= ect dependencies (the dependencies introduced by the direct dependencies) witho= ut the quirks of previous implementations.
  • Project-wide occurence metadata support for developer tools
    When compiling a module with the -bin-annot and -bin-ann= ot-occurrences flags, the compiler stores in the .cmt file an index of all oc= curences of values, types, modules, …
  • Raw identifiers
    To improve OCaml upward-compatibility, there is a new syntax for lowercase identifiers, let \#if =3D 0, which works even if the identifie= r is a keyword in some OCaml versions. This change has been adopted in OCaml 5.2 in preparation of the introduction of the effect keyword in OCaml= 5.3
  • Local open in type expressions
    Local open are now allowed in type expression: val (+): Int64.(t ->= ; t -> t).

And a lot of incremental changes:

  • Around 20 new functions in the standard library besides the new Dynarra= y module (in the Array, Float, Format, = Fun, In_channel, Out_channel, and Ra= ndom modules )
  • Many fixes and improvements in the runtime
  • Many bug fixes

OCaml 5.2.0 is still a somewhat experimental release compared to the OCaml 4.14 branch. In particular

  • The Windows MSVC port is still unavailable.
  • Ephemeron performances need to be investigated.
  • statmemprof is being tested in the developer branch of OCa= ml.
  • There are a number of known runtime concurrency or GC performance bugs (that trigger under rare circumstances).

Since the Windows MSVC port and statmemprof are still missing, the maintena= nce support for OCaml 4.14 will be extended until at least the end of the year.

Please report any unexpected behaviours on the OCaml issue tracker and post any questions or com= ments you might have here on discuss.

The full list of changes can be found in the changelog below.

Installation Instructions

The base compiler can be installed as an opam switch with the following com= mands:

opam update
opam switch create 5.2.0

The source code for the release candidate is also directly available on:

Fine-Tuned Compiler Configuration

If you want to tweak the configuration of the compiler, you can switch to t= he option variant with:

opam update
opam switch create <switch_name> ocaml-variants.5.1.0+options <opt=
ion_list>

where <option_list> is a space separated list of o= caml-option-* packages. For instance, for a flambda and= no-flat-float-array switch:

opam switch create 5.2.0+flambda+nffa ocaml-variants.5.2.0+options ocaml-op=
tion-flambda ocaml-option-no-flat-float-array

OCaml 5.2.0 Changelog (13 May 2024)

(Changelog elided to reduce message size. Please follow the archive link above for the full message.)

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.

--=-=-=--