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 D351B1F403 for ; Tue, 11 Oct 2022 02:51:37 +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="EUgqXEvE"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 35A191209E9; Tue, 11 Oct 2022 11:51:32 +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 6EC141209DC for ; Tue, 11 Oct 2022 11:51:29 +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=Ue33Brqr//HkwZpl1XdO3O+ALrbHPSJDU4ddQhGgMss=; b=EUgqXEvEVg3G734iqYuWTGo8WzPN7IVBtCACjlG9yaBxtr0fId1t5J3fJOaYf694fJXv e1mfE/c2h5eO0/F4gCRlM1pKPyrXWT6dgzFeRKKDmzkaymqCxI8DPJ7WZuPY4XfLM5AjDq +MvDbLDknAgBQd8PBQbFY23/pVgYnUDcyHd9Wh6CDlok5rcYN3vvtE897xgCeoT0e+fE4b lBTZ5GkcXP5rHzQEwJWoRBD0ONimgRh4m61Dusn5cLEbjmZTr4VtY4BaEZK0xzSARTQbQq duaXWOKyKNTkYoxEMsNEmJXOQXvKyJ3hnc98dFU/cLR8yMD1A8oWegO2y32HDvsA== Received: by filterdrecv-9766d65c6-946ct with SMTP id filterdrecv-9766d65c6-946ct-1-6344DA2E-69 2022-10-11 02:51:26.803911735 +0000 UTC m=+1141594.387962657 Received: from herokuapp.com (unknown) by geopod-ismtpd-4-3 (SG) with ESMTP id gYMClt4TQhis96cQIg7AKQ for ; Tue, 11 Oct 2022 02:51:26.791 +0000 (UTC) Date: Tue, 11 Oct 2022 02:51:26 +0000 (UTC) From: "shioyama (Chris Salzberg)" 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: shioyama 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: 86711 X-SG-EID: =?us-ascii?Q?2eXjFJg7SJ5y3z7=2FYZLzXiX0MH8ZxaRPe+ZjMibzxKHc16mJTtFOJX09zPdTSg?= =?us-ascii?Q?i7RAdHtyRFyjpk4L96iTT9m5Mpw0LXz5lR9wlty?= =?us-ascii?Q?qBqkXkD3olYAv59Tj=2FPWA=2FSeFWmSFzFMPcrPFAh?= =?us-ascii?Q?Br1iGynmZfcr3X6PNkbu0r5AItN9=2Fusjaohu3FU?= =?us-ascii?Q?u+aE7Y5kcTYbvicmXrMmROst5GNnXbbewuvRj3E?= =?us-ascii?Q?cyeSS0lp9r7fj97TSOtesrv2hnNiKgCXlFk2T3X?= =?us-ascii?Q?OKyeF7P76tOFkme5nfWdA=3D=3D?= To: ruby-core@neon.ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 110253 Subject: [ruby-core:110253] [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" SXNzdWUgIzE5MDI0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgc2hpb3lhbWEgKENocmlzIFNhbHpiZXJn KS4KCgpAamVyZW15ZXZhbnMwCgpUaGFua3MgZm9yIHlvdXIgdGhvdWdodGZ1bCByZXNwb25zZSEK Cj4gRm9yIHNpbWlsYXIgcmVhc29ucywgbWFraW5nIHJlcXVpcmUgaW1wbGljaXRseSBzdXBwb3J0 IHRoZSBjdXJyZW50bHkgd3JhcHBpbmcgbW9kdWxlIHdvdWxkIGJyZWFrIGlkZW1wb3RlbmN5IGFu ZCB0aGVyZWZvcmUgSSBkbyBub3QgdGhpbmsgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQuCgpJIGFn cmVlLCBhbmQgZnJvbSB0aGUgYmVnaW5uaW5nIEkgaGF2ZSBub3QgYWR2b2NhdGVkIGFsbG93aW5n IHBhc3NpbmcgZXh0cmEgcGFyYW1ldGVycyB0byBgcmVxdWlyZWAuIEl0IHNlZW1zIHRoYXQgZXZl cnlvbmUgaGVyZSBhZ3JlZXMgdGhhdCBjaGFuZ2luZyBgcmVxdWlyZWAgaW4gYWxtb3N0IGFueSB3 YXkgdGhhdCBhbHRlcnMgaXRzIGJhc2ljIHByZW1pc2VzIGlzIGZ1bmRhbWVudGFsbHkgYSBuby1n by4KCkdpdmVuIHRoYXQsIHdvdWxkbid0IGl0IG1ha2Ugc2Vuc2UgdG8gY2xvc2UgWyMxMDMyMF0o aHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzEwMzIwKSwgaWRlYWxseSB3aXRoIGEg bm90ZSBleHBsYWluaW5nIHdoeSB0aGUgcHJvcG9zYWwgdGhlcmUgaXMgbm90IGZlYXNpYmxlPyBB bHRob3VnaCBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGlzIGlzc3VlLCB0aGF0IG9uZSBlbnRpcmVs eSBjZW50ZXJzIG9uIGNoYW5naW5nIGByZXF1aXJlYCBpbiBzdWNoIGEgd2F5IHRoYXQsIGFzIEkg cmVhZCBpdCwgaXQgaXMgbm8gbG9uZ2VyIGV4Y2x1c2l2ZWx5IGlkZW1wb3RlbnQuCgpJIGFzayBi ZWNhdXNlIGxlYXZpbmcgdGhhdCBpc3N1ZSBvcGVuIGludml0ZXMgdGhlIGludGVycHJldGF0aW9u IChwZXJoYXBzIG1pc3Rha2VuKSB0aGF0IHRoZSBwcm9wb3NhbCB0aGVyZSBpcyBmZWFzaWJsZSBn aXZlbiB0aGUgcmlnaHQgaW1wbGVtZW50YXRpb24sIHdoZXJlYXMgYXMgSSBzZWUgaXQgZnJvbSBk aXNjdXNzaW9ucyBoZXJlIGl0IHNlZW1zIGFsbW9zdCBlbnRpcmVseSBfaW5mZWFzaWJsZV8gdW5k ZXIgYW55IGNpcmN1bXN0YW5jZXMuCgo+IFdoaWxlIEkgdW5kZXJzdGFuZCB0aGUgZ29hbCBvZiBy ZWR1Y2luZyBuYW1lc3BhY2UgImJvaWxlcnBsYXRlIiwgSSB0aGluayBpdCBpcyBpbXBvcnRhbnQg dG8gdW5kZXJzdGFuZCB0aGF0IHJlbW92aW5nIGV4cGxpY2l0IG5hbWVzcGFjZXMgaXMgYSB0cmFk ZW9mZi4gSWYgeW91IGRvIG5vdCBsZWF2ZSB0aGUgbmFtZXNwYWNlcyBpbiB0aGUgZmlsZSwgYnV0 IGluc3RlYWQgbGV0IHRoZW0gYmUgaW1wbGljaXQsIHRoZSBjb2RlIGxpa2VseSBiZWNvbWVzIG1v cmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQuIFlvdSBzdGF0ZSB0aGF0IHByb2dyYW1tZXJzIHdv dWxkIG5hdHVyYWxseSBwcmVmZXIgaW1wbGljaXQgbmFtZXNwYWNlcyBvdmVyIGV4cGxpY2l0IG5h bWVzcGFjZXMsIGJ1dCBJJ20gbm90IHN1cmUgdGhhdCBpcyB0cnVlLiBJbXBsaWNpdCBjb2RlIGlz IG5vdCBuZWNlc3NhcmlseSBiZXR0ZXIgdGhhbiBleHBsaWNpdCBjb2RlLiBXaGF0IHlvdSBjb25z aWRlciAiaXJyZWxldmFudCIgbWF5IGJlIHZlcnkgcmVsZXZhbnQgdG8gc29tZW9uZSB3aG8gaXNu J3QgZmFtaWxpYXIgd2l0aCB0aGUgY29kZSBhbiBhbGwgb2YgdGhlIGltcGxpY2l0IG5hbWVzcGFj ZXMgYmVpbmcgZGVhbHQgd2l0aC4KCkkgYWdyZWUgdGhhdCB0aGVyZSBpcyBhIHRyYWRlb2ZmLCBh cyBAZnhuIGVhcmxpZXIgY29tbWVudGVkIHdoZW4gaGUgd3JvdGUgdGhhdCB0aGUgaWRlYSBicmVh a3MgdGhlIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gdGhhdCAiYnkgbG9va2luZyBhdCB5b3VyIHNv dXJjZSBjb2RlLCB5b3Uga25vdyB0aGUgbmVzdGluZy4iIAoKQnV0IHRoaXMgaXMgYWJvdXQgbXVj aCBtb3JlIHRoYW4gcmVkdWNpbmcgYm9pbGVycGxhdGUuIEl0IGlzIGFib3V0IGEgZnVuZGFtZW50 YWwgc2hpZnQgaW4gcGVyc3BlY3RpdmUsIGZyb20gb25lIHdoZXJlIGV2ZXJ5dGhpbmcgaXMgdmlz aWJsZSBldmVyeXdoZXJlLCB0byBvbmUgd2hlcmUgdGhlICJwZXJzcGVjdGl2ZSIgaXMgaXRzZWxm IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBjcmVhdGVkLCBuZXN0ZWQgYW5kIGlzb2xhdGVkLgoKWW91 IHdyaXRlICJpbXBsaWNpdCBjb2RlIGlzIG5vdCBuZWNlc3NhcmlseSBiZXR0ZXIgdGhhbiBleHBs aWNpdCBjb2RlIi4gSSBhZ3JlZS4gQXV0b2xvYWRpbmcsIGZvciBleGFtcGxlLCBtYWtlcyBhIHNp bWlsYXIgdHJhZGVvZmYgb2YgaW1wbGljaXQgb3ZlciBleHBsaWNpdCwgYW5kIHRoYXQgdHJhZGVv ZmYgbGlrZXdpc2UgaGFzIG5vbi10cml2aWFsIGRvd25zaWRlcy4gQXV0b2xvYWRpbmcgY2FuIGFs c28gYmUgc2VlbiBhcyByZWR1Y2luZyBib2lsZXJwbGF0ZSAoYWxsIHRob3NlIGByZXF1aXJlYHMg d2Ugbm8gbG9uZ2VyIG5lZWQpLCBidXQgY2xlYXJseSBpdCBpcyBhYm91dCBtb3JlIHRoYW4gdGhh dC4KClJ1YnkgaGFzIG1hbnkgc2hhcnAga25pdmVzIGxpa2UgdGhpcywgYW5kIHRoZSB3YXkgd2Ug aGFuZGxlIHRob3NlIGtuaXZlcyBpcyBieSBjcmVhdGluZyBjb252ZW50aW9ucyBhcm91bmQgdGhl aXIgdXNhZ2UuIE11Y2ggdGhlIHdheSBaZWl0d2VyayAoYW5kIFJhaWxzKSBwcm92aWRlZCBmaWxl IG9yZ2FuaXphdGlvbiBjb252ZW50aW9ucyBhcm91bmQgYXV0b2xvYWRpbmcsIGFueSBtZWNoYW5p c20gaW4gUnVieSB0aGF0IHdvdWxkIGFsbG93IGNvZGUgdG8gYmUgaW1wb3J0ZWQgaW4gdGhlIHdh eSBJJ20gZGVzY3JpYmluZyB3b3VsZCBhbHNvIGludml0ZSBzb21lIGtpbmQgb2YgY29udmVudGlv bnMgYXJvdW5kIGl0cyB1c2FnZSB0byBtYWtlIGl0IG1vcmUgdXNlZnVsLgoKSSBhZG1pdCB0aGF0 IHRoaXMgaXMgdmVyeSBoYW5kLXdhdnksIGFuZCBJIG5lZWQgdG8gcHJvdmlkZSBhIGNsZWFyZXIg ZGVtb25zdHJhdGlvbiBvZiB3aGF0IHRob3NlIGNvbnZlbnRpb25zIG1pZ2h0IGxvb2sgbGlrZS4g VGhpcyBpcyBzb21ldGhpbmcgdGhhdCBpcyBsYWNraW5nIGZyb20gdGhpcyBwcm9wb3NhbCwgYW5k IHNvbWV0aGluZyBJIGFtIHRoaW5raW5nIGEgbG90IGFib3V0LiBJIHdpbGwgY29tZSBiYWNrIHRv IHRoaXMgcG9pbnQuCgo+IFlvdSBkZXNjcmliZSB0aGUgY3VycmVudCBzdGF0ZSBvZiBhZmZhaXJz IGFzIGEgInRlcnJpYmxlIHRyYWRlb2ZmIiwgYnV0IHRoYXQgc2VlbXMgaHlwZXJib2xpYyB0byBt ZS4gQXQgbW9zdCwgaGF2aW5nIHRvIHVzZSBleHBsaWNpdCBuYW1lc3BhY2VzIHNob3VsZCBiZSBt aWxkbHkgYW5ub3lpbmcsIGV2ZW4gaWYgeW91IGhhdmUgZnVsbCB1bmRlcnN0YW5kaW5nIG9mIHRo ZSBjb2RlIGFuZCBjYW4gZGVhbCB3aXRoIGltcGxpY2l0IG5hbWVzcGFjZXMuCgpJIGNhbiBzZWUg aG93IHlvdSBzZWUgdGhhdCBzdGF0ZW1lbnQgYXMgaHlwZXJib2xpYywgYnV0IEkgZG9uJ3Qgc2Vl IGl0IHRoYXQgd2F5LiBNYXliZSBJIHNob3VsZCBoYXZlIHF1YWxpZmllZCB0aGUgInRlcnJpYmxl Ii1uZXNzIG9mIHRoZSB0cmFkZW9mZiBhcyBiZWluZyByZWxhdGl2ZSB0byB0aGUgc2l6ZSBvZiB0 aGUgY29kZSBzcGFjZSBpbnZvbHZlZDsgaW4gYSBjb2RlYmFzZSBvZiBhIGRvemVuIGZpbGVzIHRo aXMgaXMgbm90IHRlcnJpYmxlLgoKT1RPSCBzb2x2aW5nIGEgIm1pbGRseSBhbm5veWluZyIgcHJv YmxlbSBpcyBub3QgdG8gbWUgYW4gYXBwcm9wcmlhdGUgY2hhcmFjdGVyaXphdGlvbiBvZiB3aGF0 IEkgYW0gZGVzY3JpYmluZy4gTWF5YmUgdGhhdCdzIGJlY2F1c2UgZWFjaCB0aW1lIEkgcHJlc2Vu dCBvbmUgYXNwZWN0IG9mIHdoYXQgSSBzZWUgYXMgYSBiaWdnZXIgcGljdHVyZSBjaGFuZ2UuCgpJ bXBvcnRzIGFzIGEgY29uY2VwdCB0YWNrbGVzIHNldmVyYWwgaGFyZCBwcm9ibGVtcyBhdCBvbmNl LCBpbmNsdWRpbmc6CgotIGxpdGVyYWwgbmFtZXNwYWNlcyBhbmQgY29kZSBncm91cGluZywgYW5k IHRoZSBtaXNhbGlnbm1lbnQgb2YgaW5jZW50aXZlcyBpbnZvbHZlZCAoYXMgZGVzY3JpYmVkKQot IGVuY2Fwc3VsYXRpb24vaXNvbGF0aW9uIChpLmUuIFBhY2t3ZXJrLCBwYWNrYWdlcyBldGMuKQot IG5hbWVzcGFjZSBjb2xsaXNpb25zL2NvbmZsaWN0cyAoSSB3YW50IGEgc2VtYW50aWNhbGx5LW1l YW5pbmdmdWwgYFBsYXRmb3JtYCBpbiBteSBhcHBsaWNhdGlvbiBidXQgaXQgY29uZmxpY3RzIHdp dGggdGhlIGBwbGF0Zm9ybWAgZ2VtKQoKVGhlIGxhc3Qgb25lIGhlcmUsIHdoaWNoIEkgaGF2ZSBi YXJlbHkgdG91Y2hlZCBvbiwgaXMgYSBwcm9ibGVtIHdlIGp1c3QgbGl2ZSB3aXRoIGFzIFJ1Ynlp c3RzLCBhbmQgdG8gc29tZSBkZWdyZWUgSSB0aGluayBzaW1wbHkgaW50ZXJuYWxpemUgYXMgInRo ZSB3YXkgdGhpbmdzIHdvcmsiLiBCdXQgdGhpcyBpcyBhIHJlYWwgcHJvYmxlbSB0aGF0IGRlc2Vy dmVzIGEgcHJvcGVyIHNvbHV0aW9uLgoKPiBOb3RlIHRoYXQgeW91IGNhbiBjdXJyZW50bHkgc3Vw cG9ydCBtdWx0aXBsZSBuYW1lc3BhY2VzIHVzaW5nIGBldmFsYC4gCgpJdCdzIGludGVyZXN0aW5n IHlvdSBicm91Z2h0IHVwIHRoaXMgZXhhbXBsZSwgYmVjYXVzZSBJIGhhdmUgY29uc2lkZXJlZCBp bXBsZW1lbnRhdGlvbnMgZm9yIGBpbXBvcnRgIHVzaW5nIGBldmFsYCBhdCBsZWFzdCBhcyBhIHBy b29mLW9mLWNvbmNlcHQsIGJ1dCBpdCBkb2Vzbid0IHdvcmsgZm9yIHRoZSB2ZXJ5IGltcG9ydGFu dCBjYXNlIHdoZXJlIEkgd2FudCB0byBldmFsdWF0ZSB1bmRlciBhbiBhbm9ueW1vdXMgbW9kdWxl IG5hbWVzcGFjZTsgaW4geW91ciBleGFtcGxlLCB5b3UgbmVlZCB0byBzdXBwbHkgYSBkZWRpY2F0 ZWQgbmFtZWQgY29udGV4dCAoYFBheW1lbnRzOjpOZXN0ZWRgKSB0byBsb2FkIHRoZSBjb2RlIGlu dG8uIFRoaXMgbWF5IHNlZW0gbGlrZSBhIG1pbm9yIHBvaW50IGJ1dCBJIGRvbid0IGJlbGlldmUg aXQgaXMuCgpPbmx5IHdpdGggYW4gYW5vbnltb3VzLXJvb3RlZCBuYW1lc3BhY2UgY2FuIHdlIGF2 b2lkIHBvbGx1dGluZyB0aGUgcGFyZW50IGxvYWQgY29udGV4dCdzIG5hbWVzcGFjZSwgYW5kIGF2 b2lkIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBsb2FkZWQgY29uc3RhbnRzIGluIHRo YXQgc2FtZSBuYW1lc3BhY2UuCgppLmUuIEkgd2FudCB0aGlzOgoKYGBgcnVieQptb2R1bGUgUGF5 bWVudHMKICBmb29fY2xpZW50ID0gTW9kdWxlLm5ldyBkbwogICAgZm9vX3BhdGggPSBGaWxlLmV4 cGFuZF9wYXRoKCJhcGlfY2xpZW50cy9mb29fY2xpZW50LnJiIiwgX19kaXJfXykpCiAgICBldmFs IEZpbGUucmVhZChmb29fcGF0aCksIGJpbmRpbmcsIGZvb19wYXRoCiAgZW5kCgogICMgZG8gc29t ZXRoaW5nIHdpdGggZm9vX2NsaWVudDo6Rm9vQ2xpZW50CmVuZApgYGAKCmJ1dCB0aGlzIGFjdHVh bGx5IHRyYW5zbGF0ZXMgdG8gdGhpczoKCmBgYHJ1YnkKbW9kdWxlIFBheW1lbnRzCiAgZm9vX2Ns aWVudCA9IE1vZHVsZS5uZXcgZG8KICAgIGNsYXNzIEZvb0NsaWVudCA8IE15Q2xpZW50R2VtOjpB cGlDbGllbnQKICAgICAgIyAuLi4KICAgIGVuZAogIGVuZAplbmQKYGBgCgpUaGlzIGRvZXMgbm90 IGRlZmluZSBgZm9vX2NsaWVudDo6Rm9vQ2xpZW50YCwgYnV0IHJhdGhlciBgOjpQYXltZW50czo6 Rm9vQ2xpZW50YCwgYmVjYXVzZSBhbnkgY2FsbCB0byBgbW9kdWxlYCBvciBgY2xhc3NgIGluIHRo ZSBldmFsdWF0ZWQgZmlsZSB3aWxsIHJlc29sdmUgYmFjayB0byB0aGUgY2xvc2VzdCBfbmFtZWRf IGNvbnRleHQsIGluIHRoaXMgY2FzZSBgUGF5bWVudHNgLgoKYGxvYWRgIHdpdGggdGhlIHdyYXAg bW9kdWxlIGlzIGRpZmZlcmVudCBiZWNhdXNlIGl0IHJlc29sdmVzIGBtb2R1bGVgIGFuZCBgY2xh c3NgIGRlZmluaXRpb25zIHRvIHRoZSB3cmFwIG1vZHVsZSwgX3JlZ2FyZGxlc3Mgb2Ygd2hldGhl ciB0aGF0IG1vZHVsZSBpcyBhbm9ueW1vdXNfLiBBcyBmYXIgYXMgSSBjYW4gdGVsbCB0aGVyZSBp cyBubyBvdGhlciB3YXkgKGluY2x1ZGluZyAidWdseSIgaGFja3MgbGlrZSBgZXZhbGAgb24gZmls ZSBjb250ZW50cykgaW4gUnVieSB0byBkbyB0aGlzLiBJdCBpcyB0aGlzICh1bmludGVuZGVkPykg ImZlYXR1cmUiIHRoYXQgSSBhbSBhdHRlcG10aW5nIHRvIGxldmVyYWdlIGhlcmUsIHRvIG1ha2Ug aXQgbW9yZSBwb3dlcmZ1bC4KCkkgbG92ZSB0aGF0IHRoaXMgY29uY2VwdCBvZiBhbiAidW5yb290 ZWQiIG5lc3RlZCBuYW1lc3BhY2UgKHdoYXQgSSBhbSBsb29zZWx5IHJlZmVycmluZyB0byBhcyBh biAiaW1wb3J0IiBoZXJlKSBpcyBhY3R1YWxseSBzb21ldGhpbmcgdGhhdCBhbHJlYWR5IGV4aXN0 cyBpbiBSdWJ5LiBJdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGFkZGVkLCBpdCBzaW1wbHkgbmVlZHMg dG8gYmUgdHdlYWtlZCB0byBtYWtlIGl0IGlzb2xhdGVkIGZyb20gaXRzIHBhcmVudC4KCj4gSSB0 aGluayBpdCB3b3VsZCBiZSBoZWxwZnVsIGlmLCBmb3IgZWFjaCBvZiB0aGUgcGF0Y2hlcyB5b3Ug YXJlIHByb3Bvc2luZywgeW91IGluY2x1ZGUgdGVzdHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2Vl IHdoYXQgZWFjaCBwYXRjaCBhbGxvd3MgYW5kIGhvdyB0aGUgYmVoYXZpb3IgY2hhbmdlcy4gCgpU aGFua3MsIEkgd2lsbCBkbyB0aGlzLiBUaGVyZSBhcmUgbm90IG1hbnkgb2YgdGhlc2U7IHRoZXJl IG1heSBpbiBmYWN0IG9ubHkgYmUgb25lIG9yIHR3by4KCkp1c3QgdG8gY2xhcmlmeSB0aG91Z2g6 IEkgaGFkIG9yaWdpbmFsbHkgaW50ZW5kZWQgdG8gYWN0dWFsbHkgZG8ganVzdCB0aGlzLiBCdXQg YWZ0ZXIgZGlzY3Vzc2lvbiBhdCB0aGUgRGV2ZWxvcGVycyBNZWV0aW5nIGl0IHdhcyByZWNvbW1l bmRlZCB0aGF0IEkgbGF5IG91dCB0aGUgYmlnZ2VyIHBpY3R1cmUgaW4gYSBuZXcgaXNzdWUgc2Vw YXJhdGUgZnJvbSBbIzEwMzIwXShodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTAz MjApLCB0byBtb3RpdmF0ZSBpbmRpdmlkdWFsIGNoYW5nZXMsIHNvIHRoYXQgaXMgd2hhdCBJIGhh dmUgZG9uZS4gQW5kIGluZGVlZCwgSSBub3cgdGhpbmsgdGhhdCBoYXZpbmcgdGhlIGJpZyBwaWN0 dXJlIGlzIHZlcnkgaW1wb3J0YW50IGluIHVuZGVyc3RhbmRpbmcgdGhlIGluZGl2aWR1YWwgY2hh bmdlcywgc28gSSB3aWxsIGxpbmsgYmFjayBoZXJlIHRvIGNvbnRleHR1YWxpemUgYW5kIG1vdGl2 YXRlIGVhY2ggb2YgdGhlbS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KRmVhdHVyZSAjMTkwMjQ6IFByb3Bvc2FsOiBJbXBvcnQgTW9kdWxlcwpodHRwczovL2J1Z3Mu cnVieS1sYW5nLm9yZy9pc3N1ZXMvMTkwMjQjY2hhbmdlLTk5NTQyCgoqIEF1dGhvcjogc2hpb3lh bWEgKENocmlzIFNhbHpiZXJnKQoqIFN0YXR1czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGVyZSBpcyBubyBnZW5lcmFs IHdheSBpbiBSdWJ5IHRvIGxvYWQgY29kZSBvdXRzaWRlIG9mIHRoZSBnbG9iYWxseS1zaGFyZWQg bmFtZXNwYWNlLiBUaGlzIG1ha2VzIGl0IGhhcmQgdG8gaXNvbGF0ZSBjb21wb25lbnRzIG9mIGFu IGFwcGxpY2F0aW9uIGZyb20gZWFjaCBvdGhlciBhbmQgZnJvbSB0aGUgYXBwbGljYXRpb24gaXRz ZWxmLCBsZWFkaW5nIHRvIGNvbXBsaWNhdGVkIHJlbGF0aW9uc2hpcHMgdGhhdCBjYW4gYmVjb21l IGludHJhY3RhYmxlIGFzIGFwcGxpY2F0aW9ucyBncm93IGluIHNpemUuCgpUaGUgZ3Jvd2luZyBw b3B1bGFyaXR5IG9mIGEgZ2VtIGxpa2UgW1BhY2t3ZXJrXShodHRwczovL2dpdGh1Yi5jb20vc2hv cGlmeS9wYWNrd2VyayksIHdoaWNoIHByb3ZpZGVzIGEgbmV3IGNvbmNlcHQgb2YgInBhY2thZ2Ui IHRvIGVuZm9jZSBib3VuZGFyaWVzIHN0YXRpY2FsbHkgaW4gQ0ksIGlzIGV2aWRlbmNlIHRoYXQg dGhpcyBpcyBhIHJlYWwgcHJvYmxlbS4gQnV0IGludHJvZHVjaW5nIGEgbmV3IHBhY2thZ2luZyBj b25jZXB0IGFuZCBDSSBzdGVwIGlzIGF0IGJlc3Qgb25seSBhIHBhcnRpYWwgc29sdXRpb24sIHdp dGggZG93bnNpZGVzOiBpdCBhZGRzIGNvbXBsZXhpdHkgYW5kIGNvZ25pdGl2ZSBvdmVyaGVhZCB0 aGF0IHdvdWxkbid0IGJlIG5lY2Vzc2FyeSBpZiBSdWJ5IHByb3ZpZGVkIGJldHRlciBwYWNrYWdp bmcgaXRzZWxmIChhcyBNYXR6IGhhcyBzdWdnZXN0ZWQgW2l0IHNob3VsZF0oaHR0cHM6Ly95b3V0 dS5iZS9EcDEyYTNLR05Gdz90PTI5NTYpKS4KClRoZXJlIGlzIF9vbmVfIGxpbWl0ZWQgd2F5IGlu IFJ1YnkgY3VycmVudGx5IHRvIGxvYWQgY29kZSB3aXRob3V0IHBvbGx1dGluZyB0aGUgZ2xvYmFs IG5hbWVzcGFjZTogYGxvYWRgIHdpdGggdGhlIGB3cmFwYCBwYXJhbWV0ZXIsIHdoaWNoIGFzIG9m IGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy82MjEwIGNhbiBub3cgYmUgYSBtb2R1 bGUuIEhvd2V2ZXIsIHRoaXMgb3B0aW9uIGRvZXMgbm90IGFwcGx5IHRyYW5zaXRpdmVseSB0byBg cmVxdWlyZWAgY2FsbHMgd2l0aGluIHRoZSBsb2FkZWQgZmlsZSwgc28gaXRzIHVzZWZ1bG5lc3Mg aXMgbGltaXRlZC4KCk15IHByb3Bvc2FsIGhlcmUgaXMgdG8gZW5hYmxlIG1vZHVsZSBpbXBvcnRz IGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6CgoxLiBhcHBseSB0aGUgYHdyYXBgIG1vZHVsZSBuYW1l c3BhY2UgdHJhbnNpdGl2ZWx5IHRvIGByZXF1aXJlYHMgaW5zaWRlIHRoZSBsb2FkZWQgY29kZSwg aW5jbHVkaW5nIG5hdGl2ZSBleHRlbnNpb25zIChvciBwcm92aWRlIGEgbmV3IGZsYWcgb3IgbWV0 aG9kIHRoYXQgd291bGQgZG8gdGhpcyksCjIuIG1ha2UgdGhlIGB3cmFwYCBtb2R1bGUgdGhlIHRv cGxldmVsIGNvbnRleHQgZm9yIGNvZGUgbG9hZGVkIHVuZGVyIGl0LCBzbyBgOjpGb29gIHJlc29s dmVzIHRvIGA8dG9wX3dyYXBwZXI+OjpGb29gIGluIGxvYWRlZCBjb2RlIChvciwgYWdhaW4sIHBy b3ZpZGUgYSBuZXcgZmxhZyBvciBtZXRob2QgdGhhdCB3b3VsZCBkbyB0aGlzKS4gX0Fsc28gbWFr ZSB0aGlzIGFwcGx5IHdoZW4gY29kZSB1bmRlciB0aGUgd3JhcHBlciBtb2R1bGUgaXMgY2FsbGVk IG91dHNpZGUgb2YgdGhlIGxvYWQgcHJvY2VzcyAod2hlbiBgdG9wX3dyYXBwZXJgIGlzIG5vIGxv bmdlciBzZXQpICZtZGFzaDsgdGhpcyBtYXkgYmUgcXVpdGUgaGFyZCB0byBkb18uCjMuIHJlc29s dmUgYG5hbWVgIG9uIGFub255bW91cyBtb2R1bGVzIHVuZGVyIHRoZSB3cmFwcGVkIG1vZHVsZSB0 byB0aGVpciBuYW1lcyB3aXRob3V0IHRoZSB0b3Agd3JhcHBlciBtb2R1bGUsIHNvIGA8dG9wX3dy YXBwZXI+OjpGb28ubmFtZWAgZXZhbHVhdGVzIHRvIGAiRm9vImAuIFRoZXJlIG1heSBiZSBvdGhl ciB3YXlzIHRvIGhhbmRsZSB0aGlzIHByb2JsZW0sIGJ1dCBhIGdlbSBsaWtlIFJhaWxzIHVzZXMg YG5hbWVgIHRvIHJlc29sdmUgZmlsZW5hbWVzIGFuZCBmYWlscyB3aGVuIGFub255bW91cyBtb2R1 bGVzIHJldHVybiBzb21ldGhpbmcgbGlrZSBgIzxNb2R1bGU6IC4uLj46OkFjdGl2ZVJlY29yZGAg aW5zdGVhZCBvZiBqdXN0IGBBY3RpdmVSZWNvcmRgLgoKSSBoYXZlIHJvdWdobHkgaW1wbGVtZW50 ZWQgdGhlc2UgdGhyZWUgdGhpbmdzIGluIFt0aGlzIHBhdGNoXShodHRwczovL2dpdGh1Yi5jb20v cnVieS9ydWJ5L2NvbXBhcmUvbWFzdGVyLi4uc2hpb3lhbWE6cnVieTppbXBvcnRfbW9kdWxlcyku IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgaW5jb21wbGV0ZSAoaXQgZG9lcyBub3QgY292ZXIgdGhl IGxhc3QgaGlnaGxpZ2h0ZWQgcGFydCBvZiAyKSBidXQgcHJvdmlkZXMgZW5vdWdoIG9mIGEgYmFz aXMgdG8gaW1wbGVtZW50IGFuIGBpbXBvcnRgIG1ldGhvZCwgd2hpY2ggSSBoYXZlIGRvbmUgaW4g YSBnZW0gY2FsbGVkIFtJbV0oaHR0cHM6Ly9naXRodWIuY29tL3NoaW95YW1hL2ltKS4KCkltIHBy b3ZpZGVzIGFuIGBpbXBvcnRgIG1ldGhvZCB3aGljaCBjYW4gYmUgdXNlZCB0byBpbXBvcnQgZ2Vt IGNvZGUgdW5kZXIgYSBuYW1lc3BhY2U6CgpgYGBydWJ5CnJlcXVpcmUgImltIgpleHRlbmQgSW0K CmFjdGl2ZV9tb2RlbCA9IGltcG9ydCAiYWN0aXZlX21vZGVsIgojPT4gPCNJbTo6SW1wb3J0IHJv b3Q6IGFjdGl2ZV9tb2RlbD4KCkFjdGl2ZU1vZGVsCiM9PiBOYW1lRXJyb3IKCmFjdGl2ZV9tb2Rl bDo6QWN0aXZlTW9kZWwKIz0+IEFjdGl2ZU1vZGVsCgphY3RpdmVfcmVjb3JkID0gaW1wb3J0ICJh Y3RpdmVfcmVjb3JkIgojPT4gPCNJbTo6SW1wb3J0IHJvb3Q6IGFjdGl2ZV9yZWNvcmQ+CgojIENv bnN0YW50cyBkZWZpbmVkIGluIHRoZSBzYW1lIGZpbGUgdW5kZXIgZGlmZmVyZW50IGltcG9ydHMg cG9pbnQgdG8gdGhlIHNhbWUgb2JqZWN0cwphY3RpdmVfcmVjb3JkOjpBY3RpdmVNb2RlbCA9PSBh Y3RpdmVfbW9kZWw6OkFjdGl2ZU1vZGVsCiM9PiB0cnVlCmBgYAoKV2l0aCB0aGUgY29uc3RhbnRz IGFsbCBsb2FkZWQgdW5kZXIgYW4gYW5vbnltb3VzIG5hbWVzcGFjZSwgYW55IGNvZGUgaW1wb3J0 aW5nIHRoZSBnZW0gY2FuIG5hbWUgY29uc3RhbnRzIGhvd2V2ZXIgaXQgbGlrZXM6CgpgYGBydWJ5 CmNsYXNzIFBvc3QgPCBhY3RpdmVfcmVjb3JkOjpBY3RpdmVSZWNvcmQ6OkJhc2UKZW5kCgpBUiA9 IGFjdGl2ZV9yZWNvcmQ6OkFjdGl2ZVJlY29yZAoKUG9zdC5zdXBlcmNsYXNzCiM9PiBBUjo6QmFz ZQpgYGAKCk5vdGUgdGhhdCB0aGlzIGVuYWJsZXMgdGhlIGltcG9ydGVyIHRvIGNvbXBsZXRlbHkg ZGV0ZXJtaW5lIHRoZSBuYW1pbmcgZm9yIGV2ZXJ5IGNvbnN0YW50IGl0IGltcG9ydHMuIFNvIGdl bXMgY2FuIG9wdCB0byBoaWRlIHRoZWlyIGRlcGVuZGVuY2llcyBieSAiYW5jaG9yaW5nIiB0aGVt IGluc2lkZSB0aGVpciBvd24gbmFtZXNwYWNlLCBsaWtlIHRoaXM6CgpgYGBydWJ5CiMgaW4gbGli L215X2dlbS5yYgptb2R1bGUgTXlHZW0KICBkZXAgPSBpbXBvcnQgIm15X2dlbV9kZXBlbmRlbmN5 IgoKICAjIG15X2dlbV9kZXBlbmRlbmN5IGlzICJhbmNob3JlZCIgdW5kZXIgdGhlIE15R2VtIG5h bWVzcGFjZSwgc28gbm90IGV4cG9zZWQgdG8gdXNlcnMKICAjIG9mIHRoZSBnZW0gdW5sZXNzIHRo ZXkgYWxzbyByZXF1aXJlIGl0LgogIE15R2VtRGVwZW5kZW5jeSA9IGRlcAoKICAjLi4uCmVuZApg YGAKClRoZXJlIGFyZSBhIGNvdXBsZSBpbXBvcnRhbnQgaW1wbGVtZW50YXRpb24gZGVjaXNpb25z IGluIHRoZSBnZW06CgoxLiBfT25seSBsb2FkIGNvZGUgb25jZS5fIFdoZW4gdGhlIHNhbWUgZmls ZSBpcyBpbXBvcnRlZCBhZ2FpbiAoZWl0aGVyIGRpcmVjdGx5IG9yIHRyYW5zaXRpdmVseSksICJj b3B5IiBjb25zdGFudHMgZnJvbSBwcmV2aW91c2x5IGltcG9ydGVkIG5hbWVzcGFjZSB0byB0aGUg bmV3IG5hbWVzcGFjZSB1c2luZyBhIHJlZ2lzdHJ5IHdoaWNoIG1hcHMgd2hpY2ggbmFtZXNwYWNl IChpbXBvcnQpIHdhcyB1c2VkIHRvIGxvYWQgd2hpY2ggZmlsZSAoYXMgc2hvd24gYWJvdmUgd2l0 aCBhY3RpdmVyZWNvcmQvYWN0aXZlbW9kZWwpLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUg dGhhdCBkaWZmZXJlbnQgaW1wb3J0cyBjYW4gInNlZSIgc2hhcmVkIGZpbGVzLiBBIHNpbWlsYXIg cmVnaXN0cnkgaXMgdXNlZCB0byB0cmFjayBhdXRvbG9hZHMgc28gdGhhdCB0aGV5IHdvcmsgY29y cmVjdGx5IHdoZW4gdXNlZCBmcm9tIGltcG9ydGVkIGNvZGUuCjIuIFRvcGxldmVsIGNvcmUgdHlw ZXMgKGBOaWxDbGFzc2AsIGBUcnVlQ2xhc3NgLCBgRmFsc2VDbGFzc2AsIGBTdHJpbmdgLCBldGMp IGFyZSAiYWxpYXNlZCIgdG8gY29uc3RhbnRzIHVuZGVyIGVhY2ggaW1wb3J0IG1vZHVsZSB0byBt YWtlIHRoZW0gYXZhaWxhYmxlLiBUaHVzIHRoZXJlIGNhbiBiZSBzaWRlLWVmZmVjdHMgb2YgaW1w b3J0aW5nIGNvZGUsIGJ1dCB0aGlzIGFsbG93cyBhIGdlbSBsaWtlIFJhaWxzIHRvIG1vbmtleXBh dGNoIGNvcmUgY2xhc3NlcyB3aGljaCBpdCBuZWVkcyB0byBkbyBmb3IgaXQgdG8gd29yay4KMy4g YE9iamVjdC5jb25zdF9taXNzaW5nYCBpcyBwYXRjaGVkIHRvIGNoZWNrIHRoZSBjYWxsZXIgbG9j YXRpb24gYW5kIHJlc29sdmUgdG8gdGhlIGNvbnN0YW50IGRlZmluZWQgdW5kZXIgYW4gaW1wb3J0 LCBpZiB0aGVyZSBpcyBhbiBpbXBvcnQgZGVmaW5lZCBmb3IgdGhhdCBmaWxlLgoKVG8gYmUgY2xl YXI6ICoqSSB0aGluayAxKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gUnVieSwgYnV0IG5vdCAy KSBhbmQgMykuKiogVGhlIGxhc3Qgb25lIChgT2JqZWN0LmNvbnN0X21pc3NpbmdgKSBpcyBhIGhh Y2sgdG8gc3VwcG9ydCB0aGUgY2FzZSB3aGVyZSBhIHRvcGxldmVsIGNvbnN0YW50IGlzIHJlZmVy ZW5jZWQgZnJvbSBhIG1ldGhvZCBjYWxsZWQgaW4gaW1wb3J0ZWQgY29kZSAoYXQgd2hpY2ggcG9p bnQgdGhlIGB0b3Bfd3JhcHBlcmAgaXMgbm90IGFjdGl2ZS4pCgpJIGtub3cgdGhpcyBpcyBhIGJp ZyBwcm9wb3NhbCwgYW5kIHRoZXJlIGFyZSBzdHJvbmcgb3BpbmlvbnMgaGVsZC4gSSB3b3VsZCBy ZWFsbHkgYXBwcmVjaWF0ZSBjb25zdHJ1Y3RpdmUgZmVlZGJhY2sgb24gdGhpcyBnZW5lcmFsIGlk ZWEuCgpTZWUgYWxzbyBzaW1pbGFyIGRpc2N1c3Npb24gaW46IGh0dHBzOi8vYnVncy5ydWJ5LWxh bmcub3JnL2lzc3Vlcy8xMDMyMAoKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==