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.5 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=no 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 8DD201F4D7 for ; Tue, 17 May 2022 20:41:01 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="mU4TBdVP"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id A3850120DDC; Wed, 18 May 2022 05:40:58 +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 DBCBC120A9F for ; Wed, 18 May 2022 05:40:55 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to; s=smtpapi; bh=zRF9jq88f3SXKyQOMhK22y9GRmkzlw+OUiE0CDUx7Rg=; b=mU4TBdVP1usf+I5OQTWKWYFttK/tjcsCQt0wUqxcLUsHj40Dte689UeoEzZVjcokT9b/ VUL38qg/QEMajNMz/HbGVyt1rMcamGWVY9Vdy2RhaehpbXWqU0cb2p7HEbjN4Y11x0VePx BnieXQrtahRIJHTioBI10hfa5qKxPrMq4= Received: by filterdrecv-74cbf9986b-stf76 with SMTP id filterdrecv-74cbf9986b-stf76-1-62840856-13 2022-05-17 20:40:54.265344437 +0000 UTC m=+3538577.604056027 Received: from herokuapp.com (unknown) by geopod-ismtpd-2-0 (SG) with ESMTP id rGhmVxgsT6ahxwEhsDizcw for ; Tue, 17 May 2022 20:40:54.171 +0000 (UTC) Date: Tue, 17 May 2022 20:40:54 +0000 (UTC) From: "ioquatix (Samuel Williams)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Bug X-Redmine-Issue-Id: 18782 X-Redmine-Issue-Author: ioquatix X-Redmine-Sender: ioquatix 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: 84972 X-SG-EID: =?us-ascii?Q?RXGrw3WrKfUduNFRrzMMcXYHKEABJI9T84jNjq2g6rBTg=2FXhHIicnPoJUXLutJ?= =?us-ascii?Q?tdNFg7BiEDMUtMCwjaLtb0ItKeRyv3NlZm6AYiJ?= =?us-ascii?Q?s0JX4M8UXTDJvYAjC8A0nTPjhKCKYRamGAxLHLH?= =?us-ascii?Q?8BMgp5=2FsZzJi8ZhwUJVomb3J7cBJ7VK3U1SHok=2F?= =?us-ascii?Q?2OqsduTdNal2FakdvVLDWTVlvRGAQobHBuTptSG?= =?us-ascii?Q?3d62dFs0VgCcX7PMeU19OCMjKBjqw+c+=2FHVxN4N?= =?us-ascii?Q?fSehZMcrJnX4MVcTXyw1A=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 108603 Subject: [ruby-core:108603] [Ruby master Bug#18782] Race conditions in autoload when loading the same feature with multiple threads. 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" SXNzdWUgIzE4NzgyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgaW9xdWF0aXggKFNhbXVlbCBXaWxsaWFt cykuCgoKCkBmeG4gc2FpZDoKCj4gT25jZSB0aGUgdHJpZ2dlciBoYXMgYmVlbiBleGVjdXRlZCwg aXQgaXMgZ29uZSwgdGhlIHdheSBJIHNlZSBpdC4gSG93IGlzIHRoYXQgcmVwcmVzZW50ZWQgaW50 ZXJuYWxseSwgSSBkb24ndCBjYXJlIGFuZCBzaG91bGQgbm90IGRyaXZlIHRoZSBkZXNpZ24gb2Yg dGhlIGludGVyZmFjZSBpbiBteSB2aWV3LiBUbyBtZSwgYXV0b2xvYWQgaXMgbm90IG1ldGFkYXRh IG9mIHRoZSBtb2R1bGUgeW91IG5lZWQgdG8gcHJlc2VydmUgYW5kIGF1dG9sb2FkPyBzaG91bGQg c2F5IGlmIHRoZXJlJ3MgYW4gYXV0b2xvYWQgbm90IHlldCB0cmlnZ2VyZWQgaW4gdGhlIGNsYXNz L21vZHVsZSBvciBhbmNlc3RvcnMgb3Igbm90LgoKTWF5YmUsIGJ1dCBob3cgaXQgYWN0dWFsbHkg d29ya3MgaXMgYSBsb3QgbW9yZSBudWFuY2VkLgoKQ29uc2lkZXIgbXVsdGlwbGUgdGhyZWFkcyB0 cnlpbmcgdG8gcmVxdWlyZSBhIGZlYXR1cmUgd2hpY2ggaXMgc2xvdyB0byBsb2FkLiBMZXQncyBz YXkgaXQncyBhIHdlYiBzZXZlciwgYW5kIHRoZSBmaXJzdCB0aHJlYWQgaXMgY2FuY2VsbGVkIGJl Y2F1c2UgdGhlIHJlcXVlc3QgaXMgY2FuY2VsbGVkLiBTaG91bGQgdGhpcyBjYXVzZSBhbGwgc3Vi c2VxdWVudCBhdHRlbXB0cyB0byB1c2UgdGhlIGNvbnN0YW50IHRvIGZhaWw/IElmIHlvdSB0aGlu ayBvZiBpdCBsaWtlIGEgdHJpZ2dlciwgdGhlIGZpcnN0IHRocmVhZCBmaXJlcyB0aGUgdHJpZ2dl ciwgZmFpbHMgdG8gbG9hZCB0aGUgZmlsZSwgYW5kIG5vdyBpdCdzIGdvbmUgYW5kIGNhbiBuZXZl ciBiZSBsb2FkZWQuIEJ1dCBpZiB5b3UgbG9vayBhdCBpdCBhcyBtb3JlIG9mIGEgZ2F0ZSBvciBk b29yd2F5LCBvbiB0cmFuc2l0aW9uaW5nIHRocm91Z2ggdGhlIGRvb3J3YXksIHlvdSBtYXkgZXZl bnR1YWxseSBnZXQgdGhlIGNvbnN0YW50LCBldmVuIGlmIHByaW9yIHRocmVhZHMgZmFpbGVkIHRv IG1ha2UgaXQgYWxsIHRoZSB3YXkgdGhyb3VnaC4KClRoZSBkb29yd2F5IHN0eWxlIGlzIHNhZmVy IGJlY2F1c2UgYSB0cmFuc2llbnQgZmFpbHVyZSB3b24ndCBjYXVzZSB0aGUgY29uc3RhbnQgbG9h ZCB0byBmYWlsIG91dHJpZ2h0IGFuZCBhbGxvd3Mgc3Vic2VxdWVudCB0aHJlYWRzIHRvIHJldHJ5 LiBJdCdzIGFsc28gZWFzaWVyIGZyb20gYW4gaW1wbGVtZW50YXRpb24gcG9pbnQgb2YgdmlldyB0 byBOT1QgbXV0YXRlIHRoZSBhdXRvbG9hZCBzdGF0ZSB3aGlsZSBpdCdzIGJlaW5nIGxvYWRlZCB3 aGljaCBpbnRyb2R1Y2VzIG1vcmUgY29tcGxleGl0eSBpbiB0aGUgbG9ja2luZyBhbmQgc3RhdGUg bWFuYWdlbWVudC4gRXNzZW50aWFsbHkgSSBwcmVmZXIgaW1tdXRhYmxlIGF1dG9sb2FkIHN0YXRl ICsgcmVhZC1vbmx5IG9wZXJhdGlvbnMgZHVyaW5nIGxvYWQuIERlbGV0aW5nIHRoZSBzdGF0ZSBp cyBhIHdyaXRlIG9wZXJhdGlvbiB3aGljaCBzaWduaWZpY2FudGx5IGNvbXBsaWNhdGVzIHRoZSBp bnRlcm5hbCBsb2NraW5nIGxvZ2ljLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpCdWcgIzE4NzgyOiBSYWNlIGNvbmRpdGlvbnMgaW4gYXV0b2xvYWQgd2hlbiBsb2Fk aW5nIHRoZSBzYW1lIGZlYXR1cmUgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgpodHRwczovL2J1Z3Mu cnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg3ODIjY2hhbmdlLTk3NjQxCgoqIEF1dGhvcjogaW9xdWF0 aXggKFNhbXVlbCBXaWxsaWFtcykKKiBTdGF0dXM6IE9wZW4KKiBQcmlvcml0eTogTm9ybWFsCiog QmFja3BvcnQ6IDIuNzogVU5LTk9XTiwgMy4wOiBVTktOT1dOLCAzLjE6IFVOS05PV04KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJIGhhdmUgaWRlbnRpZmllZCBzZXZl cmFsIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgYXV0b2xvYWQgY29kZS4KCjEuIEl0J3MgcG9zc2li bGUgdG8gcmFjZSBvbiBhZGRpbmcgYW5kIHRoZW4gZGVsZXRpbmcgaXRlbXMgaW4gYGF1dG9sb2Fk X2ZlYXR1cmVtYXBgLiBXaGVuIHRoaXMgaGFwcGVucywgdHdvIHRocmVhZHMgd2lsbCB0cnkgdG8g bG9hZCB0aGUgc2FtZSBmaWxlIHdpdGggZGlmZmVyZW50IGF1dG9sb2FkIGRhdGEgYW5kIGRlYWRs b2NrLgoyLiBXaGVuIGZpbmlzaGluZyBhdXRvbG9hZCwgaXQncyBuZWNlc3NhcnkgdG8gY2xlYXIg YGVsZS0+c3RhdGVgIGJlZm9yZSBzZXR0aW5nIGNvbnN0YW50cy4gSWYgdGhpcyBpcyBub3Qgc3lu Y2hyb25pc2VkLCBhIHRocmVhZCBjYW4gc2VlIHRoZSBjbGVhcmVkIGBlbGUtPnN0YXRlYCBiZWZv cmUgc2VlaW5nIHRoZSBjb25zdGFudHMgYW5kIGFzc3VtZSB0aGUgY29uc3RhbnQgaXMgbm90IGJl aW5nIGF1dG9sb2FkZWQgYW5kIHRoZW4gZmFpbCB3aXRoIGBOYW1lRXJyb3JgLgoKVGhpcyB0ZXN0 IGNhc2UgY2FuIHJlcHJvZHVjZSBib3RoIGNhc2VzOgoKYGBgCiMgdGVzdC5yYgphdXRvbG9hZF9w YXRoID0gRmlsZS5qb2luKF9fZGlyX18sICJmb29iYXIucmIiKQpGaWxlLndyaXRlKGF1dG9sb2Fk X3BhdGgsICdtb2R1bGUgRm9vOyBlbmQ7IG1vZHVsZSBCYXI7IGVuZCcpCgoxMDBfMDAwLnRpbWVz IGRvCgkkc3RkZXJyLnB1dHMgIi0tLS0tLS0tLS0tLS0tLS0tLS0tIgoJYXV0b2xvYWQgOkZvbywg YXV0b2xvYWRfcGF0aAoJYXV0b2xvYWQgOkJhciwgYXV0b2xvYWRfcGF0aAoKCXQxID0gVGhyZWFk Lm5ldyB7Rm9vfQoJdDIgPSBUaHJlYWQubmV3IHtCYXJ9CgoJdDEuam9pbgoJdDIuam9pbgoKCU9i amVjdC5zZW5kKDpyZW1vdmVfY29uc3QsIDpGb28pCglPYmplY3Quc2VuZCg6cmVtb3ZlX2NvbnN0 LCA6QmFyKQoKCSRMT0FERURfRkVBVFVSRVMuZGVsZXRlKGF1dG9sb2FkX3BhdGgpCmVuZApgYGAK CkV4YW1wbGUgZmFpbHVyZSBvZiBjYXNlICgxKToKCmBgYAotLS0tLS0tLS0tLS0tLS0tLS0tLSAo c3VjY2VzcykKYXV0b2xvYWRfYnlfc29tZW9uZV9lbHNlIGVsZT0weDU1ZjMzYjgwNmEzMCBlbGUt PnN0YXRlPShuaWwpCmF1dG9sb2FkX2J5X3NvbWVvbmVfZWxzZSBlbGU9MHg1NWYzM2I4MDZhMzAg ZWxlLT5zdGF0ZT0obmlsKQpjaGVja19hdXRvbG9hZF9yZXF1aXJlZCAyCmF1dG9sb2FkX2J5X3Nv bWVvbmVfZWxzZSBlbGU9MHg1NWYzM2I4MDZhMzAgZWxlLT5zdGF0ZT0weDdmZGQ2NzhiZTc4MApj aGVja19hdXRvbG9hZF9yZXF1aXJlZCA0CmF1dG9sb2FkX2J5X3NvbWVvbmVfZWxzZSBlbGU9MHg1 NWYzM2I4MDZhMzAgZWxlLT5zdGF0ZT0weDdmZGQ2NzhiZTc4MApjaGVja19hdXRvbG9hZF9yZXF1 aXJlZCA0CmVsZT0weDU1ZjMzYjgwNmEzMCBlbGUtPnN0YXRlPTB4N2ZkZDY3OGJlNzgwID0gTlVM TApjaGVja19hdXRvbG9hZF9yZXF1aXJlZCA0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tIChmYWlsdXJl KQphdXRvbG9hZF9ieV9zb21lb25lX2Vsc2UgZWxlPTB4NTVmMzNiODA2YTMwIGVsZS0+c3RhdGU9 KG5pbCkKYXV0b2xvYWRfYnlfc29tZW9uZV9lbHNlIGVsZT0weDU1ZjMzYjZlOGY0MCBlbGUtPnN0 YXRlPShuaWwpCmNoZWNrX2F1dG9sb2FkX3JlcXVpcmVkIDIKY2hlY2tfYXV0b2xvYWRfcmVxdWly ZWQgMwphdXRvbG9hZF9ieV9zb21lb25lX2Vsc2UgZWxlPTB4NTVmMzNiODA2YTMwIGVsZS0+c3Rh dGU9MHg3ZmRkNjc3OWQ3ODAKY2hlY2tfYXV0b2xvYWRfcmVxdWlyZWQgMQphdXRvbG9hZF9ieV9z b21lb25lX2Vsc2UgZWxlPTB4NTVmMzNiODA2YTMwIGVsZS0+c3RhdGU9MHg3ZmRkNjc3OWQ3ODAK Y2hlY2tfYXV0b2xvYWRfcmVxdWlyZWQgMQplbGU9MHg1NWYzM2I4MDZhMzAgZWxlLT5zdGF0ZT0w eDdmZGQ2Nzc5ZDc4MCA9IE5VTEwKZWxlPTB4NTVmMzNiNmU4ZjQwIGVsZS0+c3RhdGU9MHg3ZmRk Njc4YmU3ODAgPSBOVUxMCi4uL3Rlc3QucmI6MTI6aW4gYGpvaW4nOiBObyBsaXZlIHRocmVhZHMg bGVmdC4gRGVhZGxvY2s/IChmYXRhbCkKMyB0aHJlYWRzLCAzIHNsZWVwcyBjdXJyZW50OjB4MDAw MDU1ZjMzYjc3MTI1MCBtYWluIHRocmVhZDoweDAwMDA1NWYzM2I2NmUwOTAKKiAjPFRocmVhZDow eDAwMDA3ZmRkNmEyY2IwYjAgc2xlZXBfZm9yZXZlcj4KICAgcmJfdGhyZWFkX3Q6MHgwMDAwNTVm MzNiNjZlMDkwIG5hdGl2ZToweDAwMDA3ZmRkNmE3MWMzYzAgaW50OjAKICAgCiogIzxUaHJlYWQ6 MHgwMDAwN2ZkZDY3NmUwMDkwIC4uL3Rlc3QucmI6OSBzbGVlcF9mb3JldmVyPgogICByYl90aHJl YWRfdDoweDAwMDA1NWYzM2I3NzBmZjAgbmF0aXZlOjB4MDAwMDdmZGQ2Nzg5ZTY0MCBpbnQ6MSBt dXRleDoweDAwMDA1NWYzM2I3YzUxMDAgY29uZDoxCiAgICBkZXBlbmRlZCBieTogdGJfdGhyZWFk X2lkOjB4MDAwMDU1ZjMzYjY2ZTA5MAogICAKKiAjPFRocmVhZDoweDAwMDA3ZmRkNjc2ZTEyMzgg Li4vdGVzdC5yYjoxMCBzbGVlcF9mb3JldmVyPgogICByYl90aHJlYWRfdDoweDAwMDA1NWYzM2I3 NzEyNTAgbmF0aXZlOjB4MDAwMDdmZGQ2NzliZjY0MCBpbnQ6MAogICAKCglmcm9tIC4uL3Rlc3Qu cmI6MTI6aW4gYGJsb2NrIGluIDxtYWluPicKCWZyb20gLi4vdGVzdC5yYjo0OmluIGB0aW1lcycK CWZyb20gLi4vdGVzdC5yYjo0OmluIGA8bWFpbj4nCm1ha2U6ICoqKiBbdW5jb21tb24ubWs6MTI1 MDogcnVucnVieV0gRXJyb3IgMQpgYGAKCkV4YW1wbGUgZmFpbHVyZSBvZiBjYXNlICgyKToKCmBg YApbMHg3ZjE3NWZlNWIwYzhdIHJiX2F1dG9sb2FkX3N0ciBtb2Q9T2JqZWN0IGlkPUZvbyBmaWxl PSIvaG9tZS9zYW11ZWwvUHJvamVjdHMvaW9xdWF0aXgvcnVieS9mb29iYXIucmIiClsweDdmMTc1 ZmU1YjBjOF0gcmJfYXV0b2xvYWRfc3RyIGNvbnN0X3NldCBtb2Q9T2JqZWN0IGlkPUZvbyBmaWxl PSIvaG9tZS9zYW11ZWwvUHJvamVjdHMvaW9xdWF0aXgvcnVieS9mb29iYXIucmIiClsweDdmMTc1 ZmU1YjBjOF0gcmJfYXV0b2xvYWRfc3RyIG1vZD1PYmplY3QgaWQ9QmFyIGZpbGU9Ii9ob21lL3Nh bXVlbC9Qcm9qZWN0cy9pb3F1YXRpeC9ydWJ5L2Zvb2Jhci5yYiIKWzB4N2YxNzVmZTViMGM4XSBy Yl9hdXRvbG9hZF9zdHIgY29uc3Rfc2V0IG1vZD1PYmplY3QgaWQ9QmFyIGZpbGU9Ii9ob21lL3Nh bXVlbC9Qcm9qZWN0cy9pb3F1YXRpeC9ydWJ5L2Zvb2Jhci5yYiIKWzB4N2YxNzVmZTYxZDg4XSBy Yl9jb25zdF9zZWFyY2hfZnJvbSB2YWx1ZSA9PSBRdW5kZWYgLT4gYXV0b2xvYWRpbmcKWzB4N2Yx NzVmZTYxZTc4XSByYl9jb25zdF9zZWFyY2hfZnJvbSB2YWx1ZSA9PSBRdW5kZWYgLT4gYXV0b2xv YWRpbmcKWzB4N2YxNzVmZTYxZTc4XSBBc3NpZ25pbmcgY29uc3RhbnRzLi4uClsweDdmMTc1ZmU2 MWQ4OF0gcmJfY29uc3Rfc2VhcmNoX2Zyb20gdmFsdWUgPT0gUXVuZGVmIC0+IGF1dG9sb2FkaW5n ClsweDdmMTc1ZmU2MWU3OF0gYXV0b2xvYWRfY29uc3Rfc2V0IG5hbWU9OkZvbyB2YWx1ZT1Gb28K WzB4N2YxNzVmZTYxZTc4XSBhdXRvbG9hZF9jb25zdF9zZXQgbmFtZT06QmFyIHZhbHVlPUJhcgoj PFRocmVhZDoweDAwMDA3ZjE3NWZlNjFkODggLi4vdGVzdC5yYjoxMSBydW4+IHRlcm1pbmF0ZWQg d2l0aCBleGNlcHRpb24gKHJlcG9ydF9vbl9leGNlcHRpb24gaXMgdHJ1ZSk6Ci4uL3Rlc3QucmI6 MTE6aW4gYGJsb2NrICgyIGxldmVscykgaW4gPG1haW4+JzogdW5pbml0aWFsaXplZCBjb25zdGFu dCBCYXIgKE5hbWVFcnJvcikKLi4vdGVzdC5yYjoxMTppbiBgYmxvY2sgKDIgbGV2ZWxzKSBpbiA8 bWFpbj4nOiB1bmluaXRpYWxpemVkIGNvbnN0YW50IEJhciAoTmFtZUVycm9yKQptYWtlOiAqKiog W3VuY29tbW9uLm1rOjEyNTA6IHJ1bnJ1YnldIEVycm9yIDEKYGBgCgpUaGVzZSBmYWlsdXJlcyBh cmUgdmVyeSB1bmNvbW1vbiBidXQgaXQgZG9lcyBpbXBhY3QgUnVieSBhcyBmYXIgYmFjayBhcyAy LjcsIGFuZCBwcm9iYWJseSBlYXJsaWVyLgoKLS0tRmlsZXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQowMDAxLUFkZC1SVUJZX1ZNX0NSSVRJQ0FMX1NFQ1RJT04tZm9yLWRldGVjdGlu Zy11bmV4cGVjdGUucGF0Y2ggKDIuMDcgS0IpCjAwMDItUHJldmVudC1yYWNlLWJldHdlZW4tR0Mt bWFyay1hbmQtYXV0b2xvYWQtc2V0dXAucGF0Y2ggKDEuMDEgS0IpCjAwMDMtUHJvdGVjdC1yYWNl LW9uLWF1dG9sb2FkLXN0YXRlLnBhdGNoICgxMC42IEtCKQowMDA0LUluY3JlYXNlLXRpbWVvdXQt Zm9yLWRlYnVnLXRlc3RzLnBhdGNoICg5MTAgQnl0ZXMpCjAwMDUtUmV2ZXJ0LXJlbW92YWwtb2Yt bm9uLWNvbmRpdGlvbmFsLXhmcmVlLnBhdGNoICg2OTEgQnl0ZXMpCgoKLS0gCmh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnLwo=