From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS,UNPARSEABLE_RELAY shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id C81071F403 for ; Tue, 4 Oct 2022 14:29:43 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.b="LJZBZfc7"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id E6EF2120B71; Tue, 4 Oct 2022 23:29:38 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 6DB1E120B70 for ; Tue, 4 Oct 2022 23:29:36 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=s1; bh=1K/KoTi9CzhCqgO+XBHVeHiLoQOJT3XASPEChigog3o=; b=LJZBZfc7tDSmPNueV1TzlbPFZV9ERzyEfM5KLUSXYVPEksZdhN/c98WrdeJStl/Ni/MN 8sbH16HT4C1zAdcnek8o2pU18i7FOgxkAJpveHbWS8mbP298wKqOHrS2WBT8HOEIaiNXeJ Ujes2ExDe6tuG+dSALxO52xsKwjOq1SF8CEzMBJTvqlOEJJ5eslapPTqc2SslQ07A2/fkh 8lxfmd3b/Z3o/1yeu/Dmt7/uRBTKWXk7oBxMOOvijnqYx1iEBDyUR5Wq9nYeu26Gss7Z8d qdxTwKiJH8ssQH0+jGiawFFky3+SduTnkxrhYAhWNui+dz2+NzJ0Ht+uj5BKZowQ== Received: by filterdrecv-7fc4c76f6-8wk7t with SMTP id filterdrecv-7fc4c76f6-8wk7t-1-633C434E-49 2022-10-04 14:29:34.42956532 +0000 UTC m=+5332.640224058 Received: from herokuapp.com (unknown) by geopod-ismtpd-2-5 (SG) with ESMTP id -2ROM3vlQxWohYL4efRUow for ; Tue, 04 Oct 2022 14:29:34.359 +0000 (UTC) Date: Tue, 04 Oct 2022 14:29:34 +0000 (UTC) From: "austin (Austin Ziegler)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 19024 X-Redmine-Issue-Author: shioyama X-Redmine-Sender: austin X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 86641 X-SG-EID: =?us-ascii?Q?DZv5R2lXppH4VDtnTbzozZvAfTMQDIuiqc52yQGUxibk2YmwbamuHVhEx30u+N?= =?us-ascii?Q?yD3jEB9fCp=2FPZaTvB2Tz7yxhGfc=2FN=2FzNr0P0mlD?= =?us-ascii?Q?A7179U1yVCyMVGXyoUjj213RuVclsg7LWUvvDSa?= =?us-ascii?Q?IIoe2Y5pbAA8GCKLgJ6ZbBlKq4R3S0FuBgnj5tO?= =?us-ascii?Q?1rmAUZRWKPuz0U8HPV0aDK81cgY6x5XenTTiCHc?= =?us-ascii?Q?LxLa+JGhr4RhXH6VEzprtjvHOE5C=2FIY6vmPszqW?= =?us-ascii?Q?DOFqKuY=2FgFRy4nPfN9dEg=3D=3D?= To: ruby-core@neon.ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 110183 Subject: [ruby-core:110183] [Ruby master Feature#19024] Proposal: Import Modules X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE5MDI0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYXVzdGluIChBdXN0aW4gWmllZ2xlciku DQoNCg0Kc2hpb3lhbWEgKENocmlzIFNhbHpiZXJnKSB3cm90ZSBpbiAjbm90ZS0xMToNCj4gVGhh dCBzYWlkLCB0byBiZSBjbGVhciwgdGhlIFJ1YnkgcGF0Y2ggZG9lcyBub3QgYWN0dWFsbHkgaGl0 IHRoaXMgY29uZmxpY3QsIGl0J3MgdGhlIGdlbSB0aGF0IGRvZXMuIFRoZSBwYXRjaCBvbmx5IHJl cXVpcmVzIGEgZmlsZSBvbmNlLCBfaW4gd2hhdGV2ZXIgY29udGV4dCBpdCB3YXMgcmVxdWlyZWQg aW5fLiBJZiB5b3UgcmVxdWlyZSBpdCBpbiBhIHdyYXAgY29udGV4dCwgdGhhdCdzIHdoZXJlIHRo ZSBjb2RlIGlzIHJlcXVpcmVkLCBwZXJpb2QuIElmIHlvdSB0cnkgdG8gcmVxdWlyZSB0aGUgc2Ft ZSBmaWxlIGFnYWluIGZyb20gdG9wbGV2ZWwsIG9yIGZyb20gYSBkaWZmZXJlbnQgd3JhcCBjb250 ZXh0LCB5b3UgZ2V0IGBmYWxzZWAgYW5kIG5vdGhpbmcgaGFwcGVucy4NCg0KSeKAmW0gc3RpbGwg dmVyeSBtdWNoIGFnYWluc3QgdGhpcyBjb25jZXB0LCBiZWNhdXNlIHRoaXMgcnVsZSB3aWxsICph YnNvbHV0ZWx5KiBjYXVzZSBjb2RlIHRvIGJyZWFrLiBXaGF0IHlvdeKAmXJlIGRlc2NyaWJpbmcg aXMgc29tZXRoaW5nIHRoYXQgKm9ubHkqIHJlYWxseSBoYXMgdmFsdWUgZm9yIGFwcGxpY2F0aW9u cywgYnV0IGJlY2F1c2UgeW914oCZcmUgZXh0ZW5kaW5nIHRyYW5zaXRpdml0eSB0byBgcmVxdWly ZWAsIHlvdSB3aWxsIGVuZCB1cCBoaWRpbmcgc2hhcmVkIGRlcGVuZGVuY2llcyB3aXRob3V0IHRo ZSAiYmVuZWZpdCIgb2YgYmVpbmcgYWJsZSB0byBsb2FkIHRoZSBzYW1lIGNvZGUgKG9yIG11bHRp cGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lIGNvZGUpIG1vcmUgdGhhbiBvbmNlIGxpa2UgaW4gSmF2 YVNjcmlwdC4gV29yc2UsIGdpdmVuIHRoZSBleGlzdGVuY2Ugb2YgYGF1dG9sb2FkYCwgdHJhY2tp bmcgZG93biB0aGVzZSBpc3N1ZXMgd291bGQgaXRzZWxmIGJlIGEgYml0IG9mIGEgaGVpc2VuYnVn LWh1bnQuDQoNCmBgYHJ1YnkNCiMgYS5yYg0KcmVxdWlyZSAnZmFyYWRheScNCg0KIyBiLnJiDQpy ZXF1aXJlICdmYXJhZGF5Jw0KDQojIGFwcC5yYg0KYXBpMSA9IGltcG9ydCAiYSINCmFwaTIgPSBp bXBvcnQgImIiDQoNCnJlcXVpcmUgJ2ZhcmFkYXknDQoNCmE6OkZhcmFkYXkgIyA9PiBGYXJhZGF5 DQpiOjpGYXJhZGF5ICMgPT4gTmFtZUVycm9yOiB1bmluaXRpYWxpemVkIGNvbnN0YW50IEZhcmFk YXkNCkZhcmFkYXkgIyA9PiBOYW1lRXJyb3I6IHVuaW5pdGlhbGl6ZWQgY29uc3RhbnQgRmFyYWRh eQ0KYGBgDQoNClllcywgdGhlIGZpeCBpcyBlYXN5OiBgcmVxdWlyZSAnZmFyYWRheSdgIGJlZm9y ZSBkb2luZyBhbnkgYGltcG9ydHMsIGJ1dCB0aGF0IGJyZWFrcyB3aXRoIGF1dG9sb2FkIGFuZCB3 aXRob3V0IGVhZ2VyIGxvYWRpbmcgKG5vdCBldmVyeSBSdWJ5IGFwcGxpY2F0aW9uIGlzIHVzaW5n IFJhaWxzIHdpdGggaXRzIHVzZSBvZiBCdW5kbGVyIGVhZ2VyIGxvYWRpbmcpLg0KDQpUaGUgKm9u bHkqIHdheXMgdGhhdCB5b3UgY2FuIG1ha2UgYW55IG9mIHRoaXMgd29yayB3aXRoIHRoZSByZWFs aXR5IG9mIFJ1YnnigJlzIGVjb3N5c3RlbSBhcmU6IChhKSBhbGxvdyBkZXBlbmRlbmNpZXMgdG8g b3B0IG91dCBvZiBiZWluZyB3cmFwcGVkICh3aGljaCBtYWtlcyB0aGlzIG1pc2ZlYXR1cmUgbGVz cyB1c2VmdWwpLCAoYikgbWFrZSBpdCBzb21ldGhpbmcgdGhhdCBnZW1zIGFuZCBhcHAgY29kZSBj YW4gYm90aCBvcHQgaW50byAoZS5nLiwgc29tZXRoaW5nIGxpa2UgYSBgcGFja2FnZV9jb25zdGFu dGApLCBvciAoYykgbWFrZSBgJExPQURFRF9GRUFUVVJFU2AgdW5pcXVlIHBlciBjb250ZXh0ICh0 aGVyZWJ5IGFsbG93aW5nIHRoZSBzYW1lIGNvZGUgdG8gYmUgbG9hZGVkIGludG8gbWVtb3J5IG1v cmUgdGhhbiBvbmNlLCB3aGljaCBpcyBvbmUgb2YgSlPigJlzIGJpZ2dlc3QgbWlzZmVhdHVyZXMp Lg0KDQo+ID4gV291bGQgdGhlcmUgYmUgdGhpbmdzIHRoYXQgd291bGQgd29yayBpbiBvbmUgbW9k ZSBhbmQgbm90IGluIHRoZSBvdGhlciB3aXRoaW4gTm9rb2dpcmk/DQo+IA0KPiBJJ2QgbmVlZCB0 byBsb29rIG1vcmUgY2xvc2VseSBhdCBOb2tvZ2lyaSB0byBhbnN3ZXIgdGhhdCwgc28gZmFyIEkn dmUgYmVlbiBmb2N1c2luZyBvbiBSYWlscy4gQnV0IEknZCBiZSBnbGFkIHRvIGRvIHRoYXQuDQoN ClRoZSBwcm9ibGVtIGhlcmUgaXNu4oCZdCBzbyBtdWNoIE5va29naXJpIG9uIGl0cyBvd24sIGJ1 dCB0aGUgZmFjdCB0aGF0IE5va29naXJpIGlzIGEgY29tcGlsZWQgZXh0ZW5zaW9uLiBBbnkgZGVw ZW5kZW5jeSB0aGF0IGxvYWRzIGEgY29tcGlsZWQgZXh0ZW5zaW9uIGlzIGdvaW5nIHRvIGhhdmUg YXNzdW1wdGlvbnMgYmFrZWQgaW50byB0aGUgY29tcGlsZWQgY29kZSwgYW5kIHRoaXMgd291bGQg YWJzb2x1dGVseSBicmVhayB0aG9zZSBhc3N1bXB0aW9ucy4gQW5kIGNvbXBpbGVkIGV4dGVuc2lv bnMgY2Fubm90IHR5cGljYWxseSBiZSBsb2FkZWQgbW9yZSB0aGFuIG9uY2UgcmVnYXJkbGVzcyBv ZiBhbnl0aGluZyBlbHNlLg0KDQo+IFB1dHRpbmcgbXkgY2FyZHMgb24gdGhlIHRhYmxlLCBJIHBl cnNvbmFsbHkgaGF2ZSBhbHdheXMgZm91bmQgdGhlIGFzc3VtcHRpb24gdGhhdCBhbGwgUnVieSBj b2RlIGlzIGxvYWRlZCBmcm9tIHRvcGxldmVsIHRvIGJlIG9uZSBvZiBSdWJ5J3MgYmlnZ2VzdCB3 ZWFrbmVzc2VzLiBUaGF0J3MgbXkgdmlldywgYW5kIEknbSBoYXBweSB0byBlbGFib3JhdGUgb24g aXQsIGJ1dCBteSBmb2N1cyByaWdodCBub3cgd2lsbCBiZSBvYmplY3RpdmVseSBvbiB3aGV0aGVy IHRoaXMgdG9wbGV2ZWwtY2VudHJpYyBkZXNpZ24gaXMgaW5ldml0YWJsZSBvciBub3QuDQoNClBs ZWFzZSBlbGFib3JhdGUgb24gdGhpcywgYXMgSSBjYW4gb25seSB0aGluayBvZiBhIGhhbmRmdWwg b2YgbGFuZ3VhZ2VzIChtb3N0IGRlc2NlbmRlZCBmcm9tIEphdmFTY3JpcHQpIHdoZXJlIGNvZGUg aXMgKm5vdCogcmVmZXJlbmNlZCBmcm9tIHRoZSB0b3AtbGV2ZWwsIGFuZCB0aGV5IGFsbCBoYXZl IHRoZSBtdWNoIGJpZ2dlciB3ZWFrbmVzcyBvZiBiZWluZyBhYmxlIHRvIGxvYWQgdGhlIHNhbWUg Y29kZSBtdWx0aXBsZSB0aW1lcyBpbiBtdWx0aXBsZSBjb250ZXh0cyBzdWNoIHRoYXQgeW91IGNh bm5vdCBiZSBjZXJ0YWluIHdoZXRoZXIgdHdvIHJlbGF0ZWQgcGllY2VzIG9mIGNvZGUgYXJlIHJ1 bm5pbmcgdGhlIHNhbWUgdmVyc2lvbi4gQmFycmluZyBzb21lIGFic29sdXRlIHRyaWNrZXJ5ICh3 aGljaCBJ4oCZdmUgZG9uZSBiZWZvcmUpIGFuZCAodG8gc29tZSBkZWdyZWUpIHJlZmluZW1lbnRz ICh3aGljaCBJIHN0aWxsIGhhdmVuJ3QgdXNlZCksIHlvdSBjYW4gYmUgZ3VhcmFudGVlZCB0aGF0 IGlmIHlvdeKAmXJlIGNhbGxpbmcgYSBtZXRob2QsIGFsbCBjYWxscyB0byB0aGF0IG1ldGhvZCB3 aWxsIGJlIHRoZSAqc2FtZSogbWV0aG9kLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxOTAyNDogUHJvcG9zYWw6IEltcG9ydCBNb2R1bGVzDQpo dHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTkwMjQjY2hhbmdlLTk5NDU4DQoNCiog QXV0aG9yOiBzaGlveWFtYSAoQ2hyaXMgU2FsemJlcmcpDQoqIFN0YXR1czogT3Blbg0KKiBQcmlv cml0eTogTm9ybWFsDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpU aGVyZSBpcyBubyBnZW5lcmFsIHdheSBpbiBSdWJ5IHRvIGxvYWQgY29kZSBvdXRzaWRlIG9mIHRo ZSBnbG9iYWxseS1zaGFyZWQgbmFtZXNwYWNlLiBUaGlzIG1ha2VzIGl0IGhhcmQgdG8gaXNvbGF0 ZSBjb21wb25lbnRzIG9mIGFuIGFwcGxpY2F0aW9uIGZyb20gZWFjaCBvdGhlciBhbmQgZnJvbSB0 aGUgYXBwbGljYXRpb24gaXRzZWxmLCBsZWFkaW5nIHRvIGNvbXBsaWNhdGVkIHJlbGF0aW9uc2hp cHMgdGhhdCBjYW4gYmVjb21lIGludHJhY3RhYmxlIGFzIGFwcGxpY2F0aW9ucyBncm93IGluIHNp emUuDQoNClRoZSBncm93aW5nIHBvcHVsYXJpdHkgb2YgYSBnZW0gbGlrZSBbUGFja3dlcmtdKGh0 dHBzOi8vZ2l0aHViLmNvbS9zaG9waWZ5L3BhY2t3ZXJrKSwgd2hpY2ggcHJvdmlkZXMgYSBuZXcg Y29uY2VwdCBvZiAicGFja2FnZSIgdG8gZW5mb2NlIGJvdW5kYXJpZXMgc3RhdGljYWxseSBpbiBD SSwgaXMgZXZpZGVuY2UgdGhhdCB0aGlzIGlzIGEgcmVhbCBwcm9ibGVtLiBCdXQgaW50cm9kdWNp bmcgYSBuZXcgcGFja2FnaW5nIGNvbmNlcHQgYW5kIENJIHN0ZXAgaXMgYXQgYmVzdCBvbmx5IGEg cGFydGlhbCBzb2x1dGlvbiwgd2l0aCBkb3duc2lkZXM6IGl0IGFkZHMgY29tcGxleGl0eSBhbmQg Y29nbml0aXZlIG92ZXJoZWFkIHRoYXQgd291bGRuJ3QgYmUgbmVjZXNzYXJ5IGlmIFJ1YnkgcHJv dmlkZWQgYmV0dGVyIHBhY2thZ2luZyBpdHNlbGYgKGFzIE1hdHogaGFzIHN1Z2dlc3RlZCBbaXQg c2hvdWxkXShodHRwczovL3lvdXR1LmJlL0RwMTJhM0tHTkZ3P3Q9Mjk1NikpLg0KDQpUaGVyZSBp cyBfb25lXyBsaW1pdGVkIHdheSBpbiBSdWJ5IGN1cnJlbnRseSB0byBsb2FkIGNvZGUgd2l0aG91 dCBwb2xsdXRpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2U6IGBsb2FkYCB3aXRoIHRoZSBgd3JhcGAg cGFyYW1ldGVyLCB3aGljaCBhcyBvZiBodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMv NjIxMCBjYW4gbm93IGJlIGEgbW9kdWxlLiBIb3dldmVyLCB0aGlzIG9wdGlvbiBkb2VzIG5vdCBh cHBseSB0cmFuc2l0aXZlbHkgdG8gYHJlcXVpcmVgIGNhbGxzIHdpdGhpbiB0aGUgbG9hZGVkIGZp bGUsIHNvIGl0cyB1c2VmdWxuZXNzIGlzIGxpbWl0ZWQuDQoNCk15IHByb3Bvc2FsIGhlcmUgaXMg dG8gZW5hYmxlIG1vZHVsZSBpbXBvcnRzIGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6DQoNCjEuIGFw cGx5IHRoZSBgd3JhcGAgbW9kdWxlIG5hbWVzcGFjZSB0cmFuc2l0aXZlbHkgdG8gYHJlcXVpcmVg cyBpbnNpZGUgdGhlIGxvYWRlZCBjb2RlLCBpbmNsdWRpbmcgbmF0aXZlIGV4dGVuc2lvbnMgKG9y IHByb3ZpZGUgYSBuZXcgZmxhZyBvciBtZXRob2QgdGhhdCB3b3VsZCBkbyB0aGlzKSwNCjIuIG1h a2UgdGhlIGB3cmFwYCBtb2R1bGUgdGhlIHRvcGxldmVsIGNvbnRleHQgZm9yIGNvZGUgbG9hZGVk IHVuZGVyIGl0LCBzbyBgOjpGb29gIHJlc29sdmVzIHRvIGA8dG9wX3dyYXBwZXI+OjpGb29gIGlu IGxvYWRlZCBjb2RlIChvciwgYWdhaW4sIHByb3ZpZGUgYSBuZXcgZmxhZyBvciBtZXRob2QgdGhh dCB3b3VsZCBkbyB0aGlzKS4gX0Fsc28gbWFrZSB0aGlzIGFwcGx5IHdoZW4gY29kZSB1bmRlciB0 aGUgd3JhcHBlciBtb2R1bGUgaXMgY2FsbGVkIG91dHNpZGUgb2YgdGhlIGxvYWQgcHJvY2VzcyAo d2hlbiBgdG9wX3dyYXBwZXJgIGlzIG5vIGxvbmdlciBzZXQpICZtZGFzaDsgdGhpcyBtYXkgYmUg cXVpdGUgaGFyZCB0byBkb18uDQozLiByZXNvbHZlIGBuYW1lYCBvbiBhbm9ueW1vdXMgbW9kdWxl cyB1bmRlciB0aGUgd3JhcHBlZCBtb2R1bGUgdG8gdGhlaXIgbmFtZXMgd2l0aG91dCB0aGUgdG9w IHdyYXBwZXIgbW9kdWxlLCBzbyBgPHRvcF93cmFwcGVyPjo6Rm9vLm5hbWVgIGV2YWx1YXRlcyB0 byBgIkZvbyJgLiBUaGVyZSBtYXkgYmUgb3RoZXIgd2F5cyB0byBoYW5kbGUgdGhpcyBwcm9ibGVt LCBidXQgYSBnZW0gbGlrZSBSYWlscyB1c2VzIGBuYW1lYCB0byByZXNvbHZlIGZpbGVuYW1lcyBh bmQgZmFpbHMgd2hlbiBhbm9ueW1vdXMgbW9kdWxlcyByZXR1cm4gc29tZXRoaW5nIGxpa2UgYCM8 TW9kdWxlOiAuLi4+OjpBY3RpdmVSZWNvcmRgIGluc3RlYWQgb2YganVzdCBgQWN0aXZlUmVjb3Jk YC4NCg0KSSBoYXZlIHJvdWdobHkgaW1wbGVtZW50ZWQgdGhlc2UgdGhyZWUgdGhpbmdzIGluIFt0 aGlzIHBhdGNoXShodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L2NvbXBhcmUvbWFzdGVyLi4u c2hpb3lhbWE6cnVieTppbXBvcnRfbW9kdWxlcykuIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgaW5j b21wbGV0ZSAoaXQgZG9lcyBub3QgY292ZXIgdGhlIGxhc3QgaGlnaGxpZ2h0ZWQgcGFydCBvZiAy KSBidXQgcHJvdmlkZXMgZW5vdWdoIG9mIGEgYmFzaXMgdG8gaW1wbGVtZW50IGFuIGBpbXBvcnRg IG1ldGhvZCwgd2hpY2ggSSBoYXZlIGRvbmUgaW4gYSBnZW0gY2FsbGVkIFtJbV0oaHR0cHM6Ly9n aXRodWIuY29tL3NoaW95YW1hL2ltKS4NCg0KSW0gcHJvdmlkZXMgYW4gYGltcG9ydGAgbWV0aG9k IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGltcG9ydCBnZW0gY29kZSB1bmRlciBhIG5hbWVzcGFjZToN Cg0KYGBgcnVieQ0KcmVxdWlyZSAiaW0iDQpleHRlbmQgSW0NCg0KYWN0aXZlX21vZGVsID0gaW1w b3J0ICJhY3RpdmVfbW9kZWwiDQojPT4gPCNJbTo6SW1wb3J0IHJvb3Q6IGFjdGl2ZV9tb2RlbD4N Cg0KQWN0aXZlTW9kZWwNCiM9PiBOYW1lRXJyb3INCg0KYWN0aXZlX21vZGVsOjpBY3RpdmVNb2Rl bA0KIz0+IEFjdGl2ZU1vZGVsDQoNCmFjdGl2ZV9yZWNvcmQgPSBpbXBvcnQgImFjdGl2ZV9yZWNv cmQiDQojPT4gPCNJbTo6SW1wb3J0IHJvb3Q6IGFjdGl2ZV9yZWNvcmQ+DQoNCiMgQ29uc3RhbnRz IGRlZmluZWQgaW4gdGhlIHNhbWUgZmlsZSB1bmRlciBkaWZmZXJlbnQgaW1wb3J0cyBwb2ludCB0 byB0aGUgc2FtZSBvYmplY3RzDQphY3RpdmVfcmVjb3JkOjpBY3RpdmVNb2RlbCA9PSBhY3RpdmVf bW9kZWw6OkFjdGl2ZU1vZGVsDQojPT4gdHJ1ZQ0KYGBgDQoNCldpdGggdGhlIGNvbnN0YW50cyBh bGwgbG9hZGVkIHVuZGVyIGFuIGFub255bW91cyBuYW1lc3BhY2UsIGFueSBjb2RlIGltcG9ydGlu ZyB0aGUgZ2VtIGNhbiBuYW1lIGNvbnN0YW50cyBob3dldmVyIGl0IGxpa2VzOg0KDQpgYGBydWJ5 DQpjbGFzcyBQb3N0IDwgYWN0aXZlX3JlY29yZDo6QWN0aXZlUmVjb3JkOjpCYXNlDQplbmQNCg0K QVIgPSBhY3RpdmVfcmVjb3JkOjpBY3RpdmVSZWNvcmQNCg0KUG9zdC5zdXBlcmNsYXNzDQojPT4g QVI6OkJhc2UNCmBgYA0KDQpOb3RlIHRoYXQgdGhpcyBlbmFibGVzIHRoZSBpbXBvcnRlciB0byBj b21wbGV0ZWx5IGRldGVybWluZSB0aGUgbmFtaW5nIGZvciBldmVyeSBjb25zdGFudCBpdCBpbXBv cnRzLiBTbyBnZW1zIGNhbiBvcHQgdG8gaGlkZSB0aGVpciBkZXBlbmRlbmNpZXMgYnkgImFuY2hv cmluZyIgdGhlbSBpbnNpZGUgdGhlaXIgb3duIG5hbWVzcGFjZSwgbGlrZSB0aGlzOg0KDQpgYGBy dWJ5DQojIGluIGxpYi9teV9nZW0ucmINCm1vZHVsZSBNeUdlbQ0KICBkZXAgPSBpbXBvcnQgIm15 X2dlbV9kZXBlbmRlbmN5Ig0KDQogICMgbXlfZ2VtX2RlcGVuZGVuY3kgaXMgImFuY2hvcmVkIiB1 bmRlciB0aGUgTXlHZW0gbmFtZXNwYWNlLCBzbyBub3QgZXhwb3NlZCB0byB1c2Vycw0KICAjIG9m IHRoZSBnZW0gdW5sZXNzIHRoZXkgYWxzbyByZXF1aXJlIGl0Lg0KICBNeUdlbURlcGVuZGVuY3kg PSBkZXANCg0KICAjLi4uDQplbmQNCmBgYA0KDQpUaGVyZSBhcmUgYSBjb3VwbGUgaW1wb3J0YW50 IGltcGxlbWVudGF0aW9uIGRlY2lzaW9ucyBpbiB0aGUgZ2VtOg0KDQoxLiBfT25seSBsb2FkIGNv ZGUgb25jZS5fIFdoZW4gdGhlIHNhbWUgZmlsZSBpcyBpbXBvcnRlZCBhZ2FpbiAoZWl0aGVyIGRp cmVjdGx5IG9yIHRyYW5zaXRpdmVseSksICJjb3B5IiBjb25zdGFudHMgZnJvbSBwcmV2aW91c2x5 IGltcG9ydGVkIG5hbWVzcGFjZSB0byB0aGUgbmV3IG5hbWVzcGFjZSB1c2luZyBhIHJlZ2lzdHJ5 IHdoaWNoIG1hcHMgd2hpY2ggbmFtZXNwYWNlIChpbXBvcnQpIHdhcyB1c2VkIHRvIGxvYWQgd2hp Y2ggZmlsZSAoYXMgc2hvd24gYWJvdmUgd2l0aCBhY3RpdmVyZWNvcmQvYWN0aXZlbW9kZWwpLiBU aGlzIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCBkaWZmZXJlbnQgaW1wb3J0cyBjYW4gInNl ZSIgc2hhcmVkIGZpbGVzLiBBIHNpbWlsYXIgcmVnaXN0cnkgaXMgdXNlZCB0byB0cmFjayBhdXRv bG9hZHMgc28gdGhhdCB0aGV5IHdvcmsgY29ycmVjdGx5IHdoZW4gdXNlZCBmcm9tIGltcG9ydGVk IGNvZGUuDQoyLiBUb3BsZXZlbCBjb3JlIHR5cGVzIChgTmlsQ2xhc3NgLCBgVHJ1ZUNsYXNzYCwg YEZhbHNlQ2xhc3NgLCBgU3RyaW5nYCwgZXRjKSBhcmUgImFsaWFzZWQiIHRvIGNvbnN0YW50cyB1 bmRlciBlYWNoIGltcG9ydCBtb2R1bGUgdG8gbWFrZSB0aGVtIGF2YWlsYWJsZS4gVGh1cyB0aGVy ZSBjYW4gYmUgc2lkZS1lZmZlY3RzIG9mIGltcG9ydGluZyBjb2RlLCBidXQgdGhpcyBhbGxvd3Mg YSBnZW0gbGlrZSBSYWlscyB0byBtb25rZXlwYXRjaCBjb3JlIGNsYXNzZXMgd2hpY2ggaXQgbmVl ZHMgdG8gZG8gZm9yIGl0IHRvIHdvcmsuDQozLiBgT2JqZWN0LmNvbnN0X21pc3NpbmdgIGlzIHBh dGNoZWQgdG8gY2hlY2sgdGhlIGNhbGxlciBsb2NhdGlvbiBhbmQgcmVzb2x2ZSB0byB0aGUgY29u c3RhbnQgZGVmaW5lZCB1bmRlciBhbiBpbXBvcnQsIGlmIHRoZXJlIGlzIGFuIGltcG9ydCBkZWZp bmVkIGZvciB0aGF0IGZpbGUuDQoNClRvIGJlIGNsZWFyOiAqKkkgdGhpbmsgMSkgc2hvdWxkIGJl IGltcGxlbWVudGVkIGluIFJ1YnksIGJ1dCBub3QgMikgYW5kIDMpLioqIFRoZSBsYXN0IG9uZSAo YE9iamVjdC5jb25zdF9taXNzaW5nYCkgaXMgYSBoYWNrIHRvIHN1cHBvcnQgdGhlIGNhc2Ugd2hl cmUgYSB0b3BsZXZlbCBjb25zdGFudCBpcyByZWZlcmVuY2VkIGZyb20gYSBtZXRob2QgY2FsbGVk IGluIGltcG9ydGVkIGNvZGUgKGF0IHdoaWNoIHBvaW50IHRoZSBgdG9wX3dyYXBwZXJgIGlzIG5v dCBhY3RpdmUuKQ0KDQpJIGtub3cgdGhpcyBpcyBhIGJpZyBwcm9wb3NhbCwgYW5kIHRoZXJlIGFy ZSBzdHJvbmcgb3BpbmlvbnMgaGVsZC4gSSB3b3VsZCByZWFsbHkgYXBwcmVjaWF0ZSBjb25zdHJ1 Y3RpdmUgZmVlZGJhY2sgb24gdGhpcyBnZW5lcmFsIGlkZWEuDQoNClNlZSBhbHNvIHNpbWlsYXIg ZGlzY3Vzc2lvbiBpbjogaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzEwMzIwDQoN Cg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0K