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.9 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS 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 919831F466 for ; Wed, 29 Jan 2020 16:57:59 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id A224812099A; Thu, 30 Jan 2020 01:57:36 +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 12D1A120992 for ; Thu, 30 Jan 2020 01:57:33 +0900 (JST) Received: by filterdrecv-p3iad2-57f487d66-lzqns with SMTP id filterdrecv-p3iad2-57f487d66-lzqns-18-5E31B97E-5A 2020-01-29 16:57:34.784057303 +0000 UTC m=+3773456.150734900 Received: from herokuapp.com (unknown [54.235.233.18]) by ismtpd0055p1mdw1.sendgrid.net (SG) with ESMTP id K1q4s4zGQ96rd1tJ0TfG8Q for ; Wed, 29 Jan 2020 16:57:34.641 +0000 (UTC) Date: Wed, 29 Jan 2020 16:57:34 +0000 (UTC) From: daniel@dan42.com Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 72749 X-Redmine-Project: ruby-master X-Redmine-Issue-Id: 16511 X-Redmine-Issue-Author: Dan0042 X-Redmine-Sender: Dan0042 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-SG-EID: =?us-ascii?Q?8sy4RigFvRTdBfCVJrT9zb2J88PC92TMQwdNgaWYaq7rZ+0+CEw1oCjB748iWb?= =?us-ascii?Q?2u9d7PTZ2yQmVJ4jqlmAeTzzV1UReDM0fkHosyI?= =?us-ascii?Q?HcXANxKLoSYJ2=2FzTIb3s6RrxQgwbU6eWiF1QHnN?= =?us-ascii?Q?850xFLW4FctAxshLYyDazFKMiJnk=2FbQE28axGK4?= =?us-ascii?Q?JFEus34RDj4AzRuMwp1LzZct+bflmjUq1dmJ4ch?= =?us-ascii?Q?uSYi=2FZGfcjk7+TARg=3D?= To: ruby-core@ruby-lang.org X-ML-Name: ruby-core X-Mail-Count: 97021 Subject: [ruby-core:97021] [Ruby master Feature#16511] Staged warnings for keyword arguments X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE2NTExIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRGFuMDA0MiAoRGFuaWVsIERlTG9ybWUp Lg0KDQoNCj4gZ2VtIHVzZXIgZG9lc24ndCB3YW50IHRvIHVwZ3JhZGUgdG8gYSBuZXcgbWFqb3Ig dmVyc2lvbiBvZiB0aGUgZ2VtIHdpdGggYW4gaW5jb21wYXRpYmxlIEFQSQ0KDQpJIHRoaW5rIHRo aXMgcGFydCBkZXNlcnZlcyBleHBsYW5hdGlvbiBiZWNhdXNlIHNvIGZhciBJIGhhdmVuJ3Qgc2Vl biBtdWNoIGRpc2N1c3Npb24gb2Ygd2hhdCBoYXBwZW5zIHRvIHBlb3BsZSB3aG8gX3VzZV8gZ2Vt cy4NClBsZWFzZSBjb25zaWRlciB0aGlzIHNjZW5hcmlvOg0KDQoqIGF1dGhvciBvZiBnZW0gImZv b2JhciIgZml4ZXMgdGhlIGtleXdvcmQgd2FybmluZ3MgaW4gcnVieSAyLjcgYW5kIHB1Ymxpc2hl cyBhIG5ldyB2ZXJzaW9uIDMuMS4wIChvbmx5IHYzIGlzIHN1cHBvcnRlZCkNCiogZ2VtIHVzZXIg ZmluZHMga2V5d29yZCB3YXJuaW5ncyBjb21pbmcgZnJvbSBmb29iYXIgMS40LjcNCiogaGUgdXBn cmFkZXMgdGVlbnkgdmVyc2lvbiB0byAxLjQuMTIgYnV0IHRoZSB3YXJuaW5ncyBhcmUgc3RpbGwg dGhlcmUNCiogaGUgdXBncmFkZXMgbWlub3IgdmVyc2lvbiB0byAxLjYuMyBidXQgdGhlIHdhcm5p bmdzIGFyZSBzdGlsbCB0aGVyZQ0KKiBoZSBtdXN0IHVwZ3JhZGUgdG8gMy4xLjAgYnV0IHRoZSBB UEkgaGFzIGNoYW5nZWQgYW5kIHJlcXVpcmVzIHZhcmlvdXMgZml4ZXMgdG8gdGhlIGFwcA0KKiBo ZSBjYW4ndCB1cGdyYWRlIHRvIHJ1YnkgMy4wIGFzIGxvbmcgYXMgdGhpcyBpc24ndCBkb25lDQoq IHNvIGhlIGhhcyB0byBmaXggdGhlIGFwcCB0byB1c2UgZm9vYmFyIDMuMS4wDQoqICoqMyB5ZWFy cyBwYXNzLi4uKiogcnVieTJfa2V5d29yZHMgYXJlIGJlaW5nIGRlcHJlY2F0ZWQNCiogYXV0aG9y IG9mIGdlbSAiZm9vYmFyIiBjaGFuZ2VzIHJ1YnkyX2tleXdvcmRzIHRvIGAqKmt3cmVzdGAgZGVs ZWdhdGlvbiBhbmQgcHVibGlzaGVzIGEgbmV3IHZlcnNpb24gNC4yLjAgKG9ubHkgdjQgaXMgc3Vw cG9ydGVkKQ0KKiB1c2VyIG9mIGdlbSAiZm9vYmFyIiBmaW5kcyBrZXl3b3JkIHdhcm5pbmdzIGNv bWluZyBmcm9tIHRoZSBnZW0NCiogaGUgdXBncmFkZXMgdGVlbnkgdmVyc2lvbiB0byAzLjEuNyBi dXQgdGhlIHdhcm5pbmdzIGFyZSBzdGlsbCB0aGVyZQ0KKiBoZSB1cGdyYWRlcyBtaW5vciB2ZXJz aW9uIHRvIDMuMi4yIGJ1dCB0aGUgd2FybmluZ3MgYXJlIHN0aWxsIHRoZXJlDQoqIGhlIG11c3Qg dXBncmFkZSB0byA0LjIuMCBidXQgdGhlIEFQSSBoYXMgY2hhbmdlZCBhbmQgcmVxdWlyZXMgdmFy aW91cyBmaXhlcyB0byB0aGUgYXBwDQoqIGhlIGNhbid0IHVwZ3JhZGUgdG8gcnVieSAzLjMgYXMg bG9uZyBhcyB0aGlzIGlzbid0IGRvbmUNCiogc28gaGUgaGFzIHRvIGZpeCB0aGUgYXBwIF9BR0FJ Tl8sIHRvIHVzZSBmb29iYXIgNC4yLjANCg0KVGhpcyBpcyBhIHdvcnN0LWNhc2Ugc2NlbmFyaW8g YnV0IGl0IGRvZXNuJ3Qgc291bmQgc28gZmFyZmV0Y2hlZCB0byBtZS4NCg0KV2hhdCBJIHdvdWxk IGxpa2UgdG8gc2VlIGlzIHRoaXM6DQoNCiogYXV0aG9yIG9mIGdlbSAiZm9vYmFyIiBmaXhlcyB0 aGUga2V5d29yZCB3YXJuaW5ncyAoZXhjZXB0IFtmaXggaW4gMy54XSkgYW5kIHB1Ymxpc2hlcyBh IG5ldyB2ZXJzaW9uIDMuMS4wIChvbmx5IHYzIGlzIHN1cHBvcnRlZCkNCiogb25seSBbRklYIE5P V10gd2FybmluZ3MgYXJlIGRpc3BsYXllZCBpbiB0aGUgY2FzZSBvZiBnZW1zIGluIFJVQllHRU1T X0RJUiwgYW5kIHRoZXkgYXJlIHByZXR0eSByYXJlDQoqIHVzZXIgb2YgZ2VtICJmb29iYXIiIGZp bmRzIG5vIGtleXdvcmQgd2FybmluZ3MgY29taW5nIGZyb20gdGhlIGdlbSwgbm90aGluZyB0byB1 cGdyYWRlIGV4Y2VwdCBoaXMgb3duIGNvZGUNCiogKiozIHllYXJzIHBhc3MuLi4qKiBbZml4IG5v d10gYW5kIFtmaXggaW4gMy54XSB3YXJuaW5ncyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IGV2ZW4g aW4gUlVCWUdFTVNfRElSDQoqIGF1dGhvciBvZiBnZW0gImZvb2JhciIgZml4ZXMgdGhlIHdhcm5p bmdzIHRvIHVzZSBgKipgIHN5bnRheCBhbmQgcHVibGlzaGVzIGEgbmV3IHZlcnNpb24gNC4yLjAg KG9ubHkgdjQgaXMgc3VwcG9ydGVkKQ0KKiBnZW0gdXNlciBmaW5kcyBrZXl3b3JkIHdhcm5pbmdz IGNvbWluZyBmcm9tIGZvb2JhciAxLjQuNw0KKiBoZSB1cGdyYWRlcyB0ZWVueSB2ZXJzaW9uIHRv IDEuNC4xMiBidXQgdGhlIHdhcm5pbmdzIGFyZSBzdGlsbCB0aGVyZQ0KKiBoZSB1cGdyYWRlcyBt aW5vciB2ZXJzaW9uIHRvIDEuNi4zIGJ1dCB0aGUgd2FybmluZ3MgYXJlIHN0aWxsIHRoZXJlDQoq IGhlIG11c3QgdXBncmFkZSB0byA0LjIuMCBidXQgdGhlIEFQSSBoYXMgY2hhbmdlZCBhbmQgcmVx dWlyZXMgdmFyaW91cyBmaXhlcyB0byB0aGUgYXBwDQoqIGhlIGNhbid0IHVwZ3JhZGUgdG8gcnVi eSAzLjQgYXMgbG9uZyBhcyB0aGlzIGlzbid0IGRvbmUsIGJ1dCB0aGF0J3MgaW4gdHdvIHllYXJz DQoqIHNvIGhlIGhhcyBzb21lIHRpbWUgdG8gZml4IHRoZSBhcHAsIE9OQ0UsIHRvIHVzZSBmb29i YXIgNC4yLjANCg0KSXNuJ3QgdGhhdCBiZXR0ZXI/IE5vdGUgdGhhdCB0aGUgd29yc3QgY2FzZSB3 b3VsZCBzdGlsbCBpbnZvbHZlIHR3byB1cGdyYWRlcywgYnV0IGl0IHdvdWxkIGJlIHNpZ25pZmlj YW50bHkgbGVzcyBsaWtlbHk6IG9ubHkgaWYgYSBnZW0gaGFzIHdhcm5pbmdzIHdpdGggX2JvdGhf IFtGSVggTk9XXSBhbmQgW2ZpeCBpbiAzLnhdIHdhcm5pbmdzLg0KDQoNCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzE2NTExOiBTdGFnZWQgd2Fybmlu Z3MgZm9yIGtleXdvcmQgYXJndW1lbnRzDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1 ZXMvMTY1MTEjY2hhbmdlLTg0MTExDQoNCiogQXV0aG9yOiBEYW4wMDQyIChEYW5pZWwgRGVMb3Jt ZSkNCiogU3RhdHVzOiBPcGVuDQoqIFByaW9yaXR5OiBOb3JtYWwNCiogQXNzaWduZWU6IA0KKiBU YXJnZXQgdmVyc2lvbjogDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpBcyBhbiBhbHRlcm5hdGl2ZSB0byAjMTY0NjMgYW5kICMxNjQ5NCBJJ2QgbGlrZSB0byBwcm9w b3NlIHRoaXMgYXBwcm9hY2gsIHdoaWNoIEkgYmVsaWV2ZSBhbGxvd3MgYSAqKm11Y2gqKiBtb3Jl IGZsZXhpYmxlIHBhdGggZm9yIG1pZ3JhdGlvbiBvZiBrZXl3b3JkIGFyZ3VtZW50cy4NCg0KVGhl IGlkZWEgaXMgdG8gaW5kaWNhdGUgZm9yIGV2ZXJ5IEhhc2ggb2JqZWN0IGlmIGl0J3MgaW50ZW5k ZWQgdG8gcmVwcmVzZW50IGEgX2tleXdvcmRfIGhhc2ggb3IgYSBfZGF0YV8gaGFzaC4gVGhpcyBl eHRyYSBpbmZvcm1hdGlvbiBpcyB0aGVuIHVzZWQgdG8gZ2VuZXJhdGUgbW9yZSBncmFudWxhciB3 YXJuaW5ncyBkZXBlbmRpbmcgb24gYSB1c2VyJ3MgY29tcGF0aWJpbGl0eSBuZWVkcy4NCg0KVGhl ICJrZXl3b3JkbmVzcyIgb2YgYSBoYXNoIHdvdWxkIGJlIGluZGljYXRlZCBieSBhICoqZmxhZyoq IG9uIHRoZSBIYXNoIG9iamVjdDsgdGhpcyBpcyBhbHJlYWR5IGltcGxlbWVudGVkIGluIDIuNyBh bmQgaXMgdGhlIGFwcHJvYWNoIGZhdm9yZWQgYnkgTWF0ei4gTGV0J3MgY2FsbCB0aGlzIGZsYWdn ZWQgaGFzaCBhICJLd0hhc2giLCBhbmQgYSBub24tZmxhZ2dlZCBoYXNoIGlzIGp1c3QgYSAiSGFz aCIuIE5vdGU6IHRoaXMgY291bGQgYWxzbyBiZSBpbXBsZW1lbnRlZCB2aWEgYSAqKnN1YmNsYXNz Kiogb2YgSGFzaCAoSSBwZXJzb25hbGx5IGZhdm9yIHRoaXMgb2JqZWN0LW9yaWVudGVkIGFwcHJv YWNoKSB3aGljaCB3YXMgdGhlIG9yaWdpbmFsIGlkZWEgaW4gdGhpcyBwcm9wb3NhbC4NCg0KSSds bCB0cnkgdG8gZGVzY3JpYmUgdGhlIGlkZWEgaW4gZGV0YWlsIGJ5IGJyZWFraW5nIGl0IGRvd24g aW50byBmaWd1cmF0aXZlIHN0ZXBzLiAoU2tpcCB0byAiUHV0dGluZyBpdCBhbGwgdG9nZXRoZXIi IGZvciB0aGUgVEw7RFIgdmVyc2lvbi4pIEltYWdpbmUgc3RhcnRpbmcgd2l0aCBydWJ5IDIuNiBh bmQgdGhlbjoNCg0KIyMjIFN0ZXAgMQ0KDQpXaGVuIGEgZG91YmxlLXNwbGF0IG9yIGEgYnJhY2Ut bGVzcyBoYXNoIGlzIHVzZWQsIGluc3RlYWQgb2YgYSBIYXNoIGl0IGNyZWF0ZXMgYSBLd0hhc2gu DQoNCmBgYHJ1YnkNCmRlZiBmb28oeCkgeCBlbmQNCmZvbyhrOjEpLmNsYXNzICAgICAgIz0+IEt3 SGFzaA0KZm9vKCoqaGFzaCkuY2xhc3MgICAjPT4gS3dIYXNoDQpbazoxXS5sYXN0LmNsYXNzICAg ICM9PiBLd0hhc2gNClsqKmhhc2hdLmxhc3QuY2xhc3MgIz0+IEt3SGFzaA0KeyoqaGFzaH0uY2xh c3MgICAgICAjPT4gSGFzaA0KYGBgDQoNCkF0IHRoaXMgcG9pbnQgd2UgaGF2ZW4ndCBpbnRyb2R1 Y2VkIGFueSByZWFsIGNoYW5nZS4gRXZlcnl0aGluZyB0aGF0IHdvcmtlZCBiZWZvcmUgaXMgc3Rp bGwgd29ya2luZyB0aGUgc2FtZSB3YXkuDQooV2l0aCBhIG1pbm9yIGV4Y2VwdGlvbiBpZiB1c2lu ZyB0aGUgc3ViY2xhc3MgYXBwcm9hY2g6IHVudXN1YWwgY29kZSBsaWtlIGBrdy5jbGFzcyA9PSBI YXNoYCB3b3VsZCBub3cgcmV0dXJuIGZhbHNlLikNCg0KIyMjIFN0ZXAgMg0KDQpXaGVuIHRoZXJl IGlzIGFtYmlndWl0eSBkdWUgdG8gb3B0aW9uYWwgdnMga2V5d29yZCBhcmd1bWVudCwgd2UgcmVs eSBvbiB0aGUgbGFzdCBhcmd1bWVudCBiZWluZyBIYXNoIG9yIEt3SGFzaCB0byBkaXNhbWJpZ3Vh dGUuDQoNCmBgYHJ1YnkNCmRlZiBmb28oeD1uaWwsICoqa3cpDQogIFt4LGt3XQ0KZW5kDQpmb28o e2s6MX0pICM9PiBbe2s6MX0se31dDQpmb28oazoxKSAgICM9PiBbbmlsLHtrOjF9XQ0KYGBgDQoN ClRoaXMgaXMgdGhlIF9taW5pbXVtXyBhbW91bnQgb2YgaW5jb21wYXRpYmlsaXR5IHJlcXVpcmVk IHRvIHNvbHZlIEFMTCBidWdzIHByZXZpb3VzbHkgcmVwb3J0ZWQgd2l0aCBrZXl3b3JkIGFyZ3Vt ZW50cy4gKCM4MDQwLCAjODMxNiwgIzk4OTgsICMxMDg1NiwgIzExMjM2LCAjMTE5NjcsICMxMjEw NCwgIzEyNzE3LCAjMTI4MjEsICMxMzMzNiwgIzEzNjQ3LCAjMTQxMzAsIGV0Yy4pIA0KDQpUaGUg d2FybmluZ3MgZm9yIHRoaXMgd291bGQgYmUgYWJvdXQgYW4gaW1wZW5kaW5nIF9jaGFuZ2Ugb2Yg YmVoYXZpb3JfIGluIHRoZSBfbmV4dCBydWJ5IHZlcnNpb25fLCB3aGVyZSBgZm9vKHtrOjF9KWAg aXMgbm8gbG9uZ2VyIGludGVycHJldGVkIGFzIGtleXdvcmQgYXJndW1lbnQuDQoNCiMjIyBTdGVw IDMNCg0KSW50cm9kdWNlIGFkZGl0aW9uYWwgaW5jb21wYXRpYmlsaXR5IHRvIGltcHJvdmUgY2xh cml0eSBvZiBkZXNpZ24uIEhlcmUgd2UgZGVwcmVjYXRlIHRoZSBhdXRvbWF0aWMgY29udmVyc2lv biBvZiBIYXNoIHRvIGtleXdvcmQgYXJndW1lbnQ7IG9ubHkgS3dIYXNoIGlzIGFjY2VwdGVkLiBX aXRoIGEgZGVwcmVjYXRpb24vd2FybmluZyBwaGFzZSwgb2YgY291cnNlLiBUaGUgImF1dG9tYXRp YyIgcHJvbW90aW9uIG9mIGEgS3dIYXNoIHRvIGEga2V5d29yZCBhcmd1bWVudCBmb2xsb3dzIHRo ZSBzYW1lIHJ1bGVzIGFzIGEgSGFzaCBpbiAyLjY7IHNpbmNlIHRoZSBLd0hhc2ggaXMgY29uY2Vw dHVhbGx5IGludGVuZGVkIHRvIHJlcHJlc2VudCBrZXl3b3JkIGFyZ3VtZW50cywgdGhpcyBjb252 ZXJzaW9uIG1ha2VzIHNlbnNlIGluIGEgd2F5IHRoYXQgYSBub3JtYWwgZGF0YSBIYXNoIGRvZXNu J3QuIFdlJ3ZlIHRha2VuIHRoZSAibGFzdCBwb3NpdGlvbmFsIGhhc2giIGNvbmNlcHQgYW5kIHNw bGl0IGl0IGludG8gImNvbmNlcHR1YWxseSBhIGhhc2giIGFuZCAiY29uY2VwdHVhbGx5IGtleXdv cmQgYXJndW1lbnRzIi4gX01vc3QgaW1wb3J0YW50bHlfLCBhbGwgdGhlIGNoYW5nZXMgcmVxdWly ZWQgdG8gc2lsZW5jZSB0aGVzZSB3YXJuaW5ncyBhcmUgX2NvbXBhdGlibGUgd2l0aCAyLjZfLg0K DQpgYGBydWJ5DQpkZWYgZm9vKHgsICoqa3cpOyBlbmQNCmZvbyhrOjEpICAgICAgIyBBcmd1bWVu dEVycm9yIGJlY2F1c2UgeCBub3Qgc3BlY2lmaWVkDQpmb28oMSwge2s6MX0pICMgQXJndW1lbnRF cnJvciBiZWNhdXNlIHRvbyBtYW55IGFyZ3VtZW50czsgSGFzaCBjYW5ub3QgYmUgY29udmVydGVk IHRvIEt3SGFzaHMNCm9wdHMgPSBbazoxXS5maXJzdA0KZm9vKG9wdHMpICAgICAjIG9wdHMgaXMg YSBLd0hhc2ggdGhlcmVmb3JlIHVzZWQgYXMga2V5d29yZCBhcmd1bWVudDsgQXJndW1lbnRFcnJv ciBiZWNhdXNlIHggbm90IHNwZWNpZmllZA0KZm9vKDEsIG9wdHMpICAjIG9wdHMgaXMgYSBLd0hh c2ggdGhlcmVmb3JlIHVzZWQgYXMga2V5d29yZCBhcmd1bWVudA0KYGBgDQoNClRoZSB3YXJuaW5n cyBmb3IgdGhpcyB3b3VsZCBiZSBhYm91dCB1cGNvbWluZyBfZXJyb3JzXyBmb3IgcG9zaXRpb25h bCBhcmd1bWVudHM6IGBmb28oeDoxKWAgd2lsbCBiZSAiZ2l2ZW4gMCwgZXhwZWN0ZWQgMSIgYW5k IGBmb28oMSx7eDoyfSlgIHdpbGwgYmUgImdpdmVuIDIsIGV4cGVjdGVkIDEiLiBTdWNoIGVycm9y cyBhcmUgdXNlZnVsIHdoZW4gZGV2ZWxvcGluZywgYnV0IHRoZXJlIGlzIG5vIG5ldyBmdW5jdGlv bmFsaXR5IHBlciBzZSwganVzdCBhIHN0cmljdGVyIHN5bnRheC4gU28gaXQncyBsZXNzIGltcG9y dGFudCB0byBlc2NhbGF0ZSB0byBhbiBlcnJvciBhbmQgd2UgY2FuIGtlZXAgdGhlIHdhcm5pbmdz IGZvciBsb25nZXIgdGhhbiBTdGVwIDIuDQoNCkF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhY2hpZXZl ZCBfYWxtb3N0LWZ1bGxfICoqZHluYW1pYyoqIGtleXdvcmQgc2VwYXJhdGlvbiwgYXMgb3Bwb3Nl ZCB0byB0aGUgY3VycmVudCBfYWxtb3N0LWZ1bGxfICoqc3RhdGljKiogYXBwcm9hY2guIEkgd2Fu dCB0byBtYWtlIHRoZSBwb2ludCBoZXJlIHRoYXQsIHllcywga2V5d29yZCBhcmd1bWVudHMgKiph cmUqKiBzZXBhcmF0ZWQsIGl0J3MganVzdCBhIGRpZmZlcmVudCBwYXJhZGlnbS4gV2l0aCBzdGF0 aWMgc2VwYXJhdGlvbiwgYSBrZXl3b3JkIGFyZ3VtZW50IGlzIGRlZmluZWQgbGV4aWNhbGx5IGJ5 IGEgZG91YmxlLXNwbGF0LiBXaXRoIGR5bmFtaWMgc2VwYXJhdGlvbiwgYSBrZXl3b3JkIGFyZ3Vt ZW50IGlzIHdoZW4gdGhlIGxhc3QgYXJndW1lbnQgaXMgYSBLd0hhc2guIHt7Tm90ZTogSSdtIHNh eWluZyAiYWxtb3N0LWZ1bGwiIGJlY2F1c2UgS3dIYXNoIGlzIG5vdCBwcm9tb3RlZCB0byBrZXl3 b3JkcyBpbiBgZGVmIGZvbyhhLCoqa3cpO2VuZDtmb28oeDoxKWAgYW5kIGJlY2F1c2Ugc3RhdGlj IGtleXdvcmRzIGFyZSBhdXRvLWRlbW90ZWQgdG8gcG9zaXRpb25hbCBpbiBgZGVmIGZvbyhhKTtl bmQ7Zm9vKHg6MSlgfX0NCg0KQW55IGZvcm0gb2YgZGVsZWdhdGlvbiB3b3JrcyB3aXRoIG5vIGNo YW5nZSByZXF1aXJlZC4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGJlaGF2aW9yIG9mIDIuNiBidXQgb25s eSBmb3IgS3dIYXNoIG9iamVjdHMuIFRoaXMgaXMgc2ltaWxhciB0byBoYXZpbmcgMi43IHdpdGgg YHJ1YnkyX2tleXdvcmRzYCBlbmFibGVkIGJ5IGRlZmF1bHQuIEJ1dCBhbHNvIGRpZmZlcmVudCBp biBzb21lIHdheXM7IG1vc3Qgbm90YWJseSBpdCBhbGxvd3MgdGhlIGNhc2Ugc2hvd24gaW4gIzE2 NDk0IHRvIHdvcmsgYnkgZGVmYXVsdDoNCg0KYGBgcnVieQ0KYXJyYXkgPSBbeDoxXQ0KYXJyYXku cHVzaCh4OjIpDQphcnJheS5tYXB7IHx4OnwgeCB9ICM9PiBbMSwyXQ0KW3t4OjN9XS5tYXB7IHx4 OnwgeCB9ICM9PiBidXQgdGhpcyB3YXJucywgYXMgaXQgc2hvdWxkDQpgYGANCg0KVGhlIGN1cnJl bnQgYXBwcm9hY2ggZG9lcyBub3QgYWxsb3cgdGhpcyB0byB3b3JrIGF0IGFsbC4gVGhlIHNvbHV0 aW9uIHByb3Bvc2VkIGluICMxNjQ5NCBoYXMgYWxsIHRoZSBzYW1lIGZsYXdzIGFzIEhhc2gtYmFz ZWQga2V5d29yZCBhcmd1bWVudHM7IHdoYXQgaGFwcGVucyB0byBgZWFjaHsgfHg9bmlsLCoqa3d8 IH1gID8gVGhpcyBzb2x1dGlvbiBhbGxvd3MgYSBLd0hhc2ggdG8gYmUgY29udmVydGVkIHRvLi4u IGtleXdvcmRzLiBWZXJ5IHVuc3VycHJpc2luZy4NCg0KR2l2ZW4gdGhhdCBydWJ5IGlzIGEgZHlu YW1pY2FsbHktdHlwZWQgbGFuZ3VhZ2UgSSBmZWVsIHRoYXQgZHluYW1pYyB0eXBpbmcgb2Yga2V5 d29yZHMgaWYgYSBtb3JlIG5hdHVyYWwgZml0IHRoYW4gc3RhdGljIHR5cGluZy4gQnV0IEkgcmVh bGl6ZSB0aGF0IG1hbnkgZGlzYWdyZWUgd2l0aCB0aGF0LCB3aGljaCBpcyB3aHkgd2UgY29udGlu dWUgdG8uLi4NCg0KIyMjIFN0ZXAgNA0KDQpJbnRyb2R1Y2UgYWRkaXRpb25hbCBpbmNvbXBhdGli aWxpdHkgdG8gcmVhY2ggc3RhdGljL2xleGljYWwgc2VwYXJhdGlvbiBvZiBrZXl3b3JkIGFyZ3Vt ZW50cy4gSGVyZSB3ZSByZXF1aXJlIHRoYXQgZXZlbiBhIEt3SGFzaCBzaG91bGQgYmUgcGFzc2Vk IHdpdGggYSBkb3VibGUtc3BsYXQgaW4gb3JkZXIgdG8gcXVhbGlmeSBhcyBhIGtleXdvcmQgYXJn dW1lbnQuDQoNCmBgYHJ1YnkNCmRlZiBiYXIoKiprdykNCmVuZA0KZGVmIGZvbygqKmt3KQ0KICBi YXIoa3cpICAgIz0+IGVycm9yOyBLd0hhc2ggcGFzc2VkIHdpdGhvdXQgKioNCiAgYmFyKCoqa3cp ICM9PiBvaw0KZW5kDQpgYGANCg0KQXQgdGhpcyBwb2ludCB3ZSd2ZSByZWFjaGVkIHRoZSBzYW1l IGJlaGF2aW9yIGFzIDIuNy4gRGVsZWdhdGlvbiBuZWVkcyB0byBiZSBmaXhlZCwgYnV0IGFzIHdl IGtub3cgdGhlIGNoYW5nZXMgcmVxdWlyZWQgdG8gc2lsZW5jZSB0aGVzZSB3YXJuaW5ncyBhcmUg Kipub3QqKiBjb21wYXRpYmxlIHdpdGggMi42IG9yIDIuNy4gVGhlIHdhcm5pbmdzIGZvciB0aGlz IGFyZSBfZnVuZGFtZW50YWxseSBub3QgZml4YWJsZV8gYXMgbG9uZyBhcyBTdGVwIDIgaGFzIG5v dCBiZWVuIGZpeGVkLiBUaGlzIGlzIHRoZSBjb3JlIHJlYXNvbiB3aHkgYHJ1YnkyX2tleXdvcmRz YCBpcyBjdXJyZW50bHkgbmVjZXNzYXJ5IGluIDIuNy4gU28gaW4gdGhlIHZlcnNpb24gYWZ0ZXIg Mi43IHdlIGNhbiBlbmFibGUgdGhlc2Ugd2FybmluZ3MgYnkgZGVmYXVsdCBzaW5jZSBpdCdzIG5v dyBwb3NzaWJsZSB0byBmaXggZGVsZWdhdGlvbiB0byB1c2Ugc3RhdGljIGtleXdvcmRzLiBFeGNl cHQgdGhhdCBnZW0gYXV0aG9ycyB3aG8gbmVlZCB0byBzdGF5IGNvbXBhdGlibGUgd2l0aCDiiaQy LjcgY2Fubm90IHlldCBtYWtlIHRoZXNlIGNoYW5nZXMsIHNvIHdlIGludHJvZHVjZSBhIHdheSB0 byBfc2lsZW5jZSAqKm9ubHkqKiB0aGVzZSAiU3RlcCA0IiB3YXJuaW5nc18sIGZvciBwZW9wbGUg d2hvIG5lZWQgdG8gcmVtYWluIGNvbXBhdGlibGUgd2l0aCDiiaQyLjcuIEFuZCB3ZSBrZWVwIHRo ZW0gYXMgd2FybmluZ3MgaW5zdGVhZCBvZiBlcnJvcnMgdW50aWwgcnVieSAyLjcgaXMgRU9MLg0K DQpTbyBpbnN0ZWFkIG9mIGhhdmluZyB0byB1cGRhdGUgYSBidW5jaCBvZiBwbGFjZXMgd2l0aCBg cnVieTJfa2V5d29yZHNgIGp1c3QgdG8gdGVtcG9yYXJpbHkgc2lsZW5jZSB3YXJuaW5ncywgaXQn cyBhIHNpbmdsZSBmbGFnIGxpa2UgYFdhcm5pbmdbOnJ1YnkzX2tleXdvcmRzXWAuIE9uY2UgcnVi eSAyLjcgaXMgRU9MIHRoZXNlIGJlY29tZSBjb250cm9sbGVkIGJ5IGBXYXJuaW5nWzpkZXByZWNh dGVkXWAgd2hpY2ggdGVsbHMgcGVvcGxlIHRoZXkgKipoYXZlKiogdG8gZml4IHRoZWlyIGNvZGUu IFdoaWNoIGlzIGp1c3QgbGlrZSB0aGUgZXZlbnR1YWwgZGVwcmVjYXRpb24gb2YgYHJ1YnkyX2tl eXdvcmRzYCwganVzdCB3aXRob3V0IHRoZSBidXN5IHdvcmsgb2YgYWRkaW5nIGBydWJ5Ml9rZXl3 b3Jkc2Agc3RhdGVtZW50cyBpbiB0aGUgZmlyc3QgcGxhY2UuIEJ1dCBhZ2FpbiwgdGhpcyBpbnRy b2R1Y2VzIG5vIG5ldyBmdW5jdGlvbmFsaXR5LCBqdXN0IGEgc3RyaWN0ZXIgc3ludGF4LiBTbyB3 ZSBjYW4gcGxheSBuaWNlIGFuZCBsZWF2ZSB0aGUgd2FybmluZ3MgZm9yIGEgZmV3IHllYXJzIGJl Zm9yZSBjaGFuZ2luZyB0byBlcnJvcnMuDQoNClRoZSBxdWVzdGlvbiByZW1haW5zIG9mIGhvdyB0 byBoYW5kbGUgIzE2NDk0IGhlcmUuIEVpdGhlciBkaXNhbGxvdyBpdCBlbnRpcmVseSwgYnV0IEkg dGhpbmsgdGhhdCB3b3VsZCBiZSBhIHNoYW1lLiBPciBqdXN0IGxpa2UgIzE2NDk0IHN1Z2dlc3Rz LCBhbGxvdyBoYXNoIHVucGFja2luZyBpbiBub24tbGFtYmRhIFByb2MuIEV4Y2VwdCB0aGF0IG5v dyBpdCBjYW4gYmUgYSBLd0hhc2ggaW5zdGVhZCBvZiBhIEhhc2gsIHdoaWNoIGF0IGxlYXN0IHBy ZXNlcnZlcyBkeW5hbWljIGtleXdvcmQgc2VwYXJhdGlvbi4NCg0KIyMgUHV0dGluZyBpdCBhbGwg dG9nZXRoZXIgKFRMO0RSKQ0KDQpUaGUgaWRlYSBpcyBfbm90XyB0byByZWltcGxlbWVudCBrZXl3 b3JkIGFyZ3VtZW50IHNlcGFyYXRpb247IGFsbCB0aGF0IGlzIG5lZWRlZCBpcyB0byBpbXBsZW1l bnQgdGhlIHRoaW5ncyBhYm92ZSB0aGF0IGFyZSBub3QgaW4gMi43Og0KKiBDcmVhdGUgYSBLd0hh c2ggb2JqZWN0IGZvciBicmFjZS1sZXNzIGFuZCBkb3VibGUtc3BsYXR0ZWQgaGFzaGVzLg0KKiBE aWZmZXJlbnRpYXRlIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHdhcm5pbmdzIGFuZCBhbGxvdyB0byB0 b2dnbGUgb24vb2ZmIHNlcGFyYXRlbHkNCiAgKiBTdGVwIDIgd2FybmluZ3MgX211c3RfIGJlIGZp eGVkIG5vdzsgY2Fubm90IHRvZ2dsZSBvZmYNCiAgKiBTdGVwIDMgd2FybmluZ3MgX3Nob3VsZF8g YmUgZml4ZWQgbm93IGJ1dCB5b3UgZG9uJ3QgYWJzb2x1dGVseSBuZWVkIHRvIHVwZ3JhZGUgeW91 ciBnZW1zIGp1c3QgZm9yIHRoYXQNCiAgKiBTdGVwIDQgd2FybmluZ3MgX3Nob3VsZF8gYmUgZml4 ZWQgaW4gbmV4dCB2ZXJzaW9uIHVubGVzcyB5b3UgbmVlZCB0byBzdXBwb3J0IOKJpDIuNw0KDQpJ IHRoaW5rIHRoYXQncyBhbGwsIHJlYWxseS4uLg0KDQojIyMgUHJvcw0KKiBDbGVhbmVyIHdheSB0 byBzb2x2ZSAjMTY0OTQNCiogQmV0dGVyIGNvbXBhdGliaWxpdHkgKGF0IGxlYXN0IHVudGlsIDIu NiBpcyBFT0wpDQogICAqIGRlbGVnYXRpb24NCiAgICogc3RvcmluZyBhbiBhcmd1bWVudCBsaXN0 IHRoYXQgZW5kcyB3aXRoIGEgS3dIYXNoDQogICAqIGRlc3RydWN0dXJpbmcgaXRlcmF0aW9uICgj MTY0OTQpDQoqIFdlIGNhbiBhdm9pZCB0aGUgInVuZm9ydHVuYXRlIGNvcm5lciBjYXNlIiBhcyBk ZXNjcmliZWQgaW4gdGhlIFtyZWxlYXNlIG5vdGVzXShodHRwczovL3d3dy5ydWJ5LWxhbmcub3Jn L2VuL25ld3MvMjAxOS8xMi8xMi9zZXBhcmF0aW9uLW9mLXBvc2l0aW9uYWwtYW5kLWtleXdvcmQt YXJndW1lbnRzLWluLXJ1YnktMy0wLykNCiAgICogaW4gMi43IG9ubHkgZG8gbm90IG91dHB1dCAi U3RlcCA0IiB3YXJuaW5ncywgbGVhdmUgZGVsZWdhdGlvbiBsaWtlIGl0IHdhcw0KICAgKiBpbiAy LjggdGhlICJTdGVwIDMiIHdhcm5pbmdzIGhhdmUgYmVlbiBmaXhlZCBhbmQgYSBIYXNoIHdpbGwg bm90IGJlIGNvbnZlcnRlZCB0byBrZXl3b3JkIGFyZ3VtZW50cw0KICAgKiBkZWxlZ2F0aW9uIGNh biBub3cgc2FmZWx5IGJlIGZpeGVkIHRvIHVzZSB0aGUgYCoqYCBzeW50YXgNCiogcnVieTJfa2V5 d29yZHMgaXMgbm90IHJlcXVpcmVkLCB3aGljaCBpcyBkZXNpcmFibGUgYmVjYXVzZQ0KICAgKiBp dCdzIGEgaGlkZGVuIGZsYWcgX2hhY2tfDQogICAqIGl0IHJlcXVpcmVzIHRvIGNoYW5nZSB0aGUg Y29kZSBub3csIGFuZCBjaGFuZ2UgaXQgX2FnYWluXyB3aGVuIHJ1YnkyX2tleXdvcmRzIGlzIGRl cHJlY2F0ZWQ7IHR3aWNlIHRoZSB3b3JrOyB0d2ljZSB0aGUgZ2VtIHVwZ3JhZGVzDQogICAqIGl0 IHdhcyBzdXBwb3NlZCB0byBiZSB1c2VkIG9ubHkgZm9yIHBlb3BsZSB3aG8gbmVlZCB0byBzdXBw b3J0IDIuNiBvciBiZWxvdywgYnV0IGl0J3MgYmVpbmcgbWlzdW5kZXJzdG9vZCBhcyBhbiBhY2Nl cHRhYmxlIHdheSB0byBmaXggZGVsZWdhdGlvbiBpbiBnZW5lcmFsDQogICAqIHRoZXJlJ3MgdGhl IG5vbi16ZXJvIHJpc2sgdGhhdCBydWJ5Ml9rZXl3b3JkcyB3aWxsIG5ldmVyIGJlIHJlbW92ZWQs IGxlYXZpbmcgdXMgd2l0aCBhIHBlcm1hbmVudCAiaGFjayBtb2RlIg0KICAgICAgKiBkeW5hbWlj IGtleXdvcmRzIGFyZSBieSBmYXIgcHJlZmVyYWJsZSB0byBzdXBwb3J0aW5nIHJ1YnkyX2tleXdv cmRzIGZvcmV2ZXINCiogTGlrZWx5IF9iZXR0ZXIgcGVyZm9ybWFuY2VfLCBhcyB0aGUgS3dIYXNo IGNsYXNzIGNhbiBiZSBvcHRpbWl6ZWQgc3BlY2lmaWNhbGx5IGZvciB0aGUgY2hhcmFjdGVyaXN0 aWNzIG9mIGtleXdvcmQgYXJndW1lbnRzLg0KKiBNb3JlIGZsZXhpYmxlIG1pZ3JhdGlvbg0KICAg KiBBbGxvdyBtb3JlIHRpbWUgdG8gdXBncmFkZSB0aGUgaGFyZCBzdHVmZiBpbiBTdGVwIDQNCiAg ICogQ2FuIHJlYWNoIHRoZSBfc2FtZV8gZ29hbCBhcyB0aGUgY3VycmVudCBzdGF0aWMgYXBwcm9h Y2gNCiAgICogTGFyZ2VyICJzdXBwb3J0IHpvbmUiIGh0dHBzOi8veGtjZC5jb20vMjIyNC8NCiAg ICogSW5zdGVhZCBvZiB3aWRlLXJhbmdpbmcgaW5jb21wYXRpYmlsaXRpZXMgYWxsIGF0IG9uY2Us IHRoZXJlJ3MgdGhlIF9wb3NzaWJpbGl0eV8gb2YgbWFraW5nIGl0IGZpbmVyLWdyYWluZWQgYW5k IG1vcmUgZ3JhZHVhbA0KICAgICAgKiBydWJ5aXN0cyBjYW4gX2Nob29zZV8gdG8gbWlncmF0ZSBh bGwgYXQgb25jZSBvciBpbiBzbWFsbGVyIGNodW5rcw0KICAgKiBJdCBoZWRnZXMgdGhlIHJpc2tz IGJ5IGtlZXBpbmcgbW9yZSBwb3NzaWJpbGl0aWVzIG9wZW4gZm9yIG5vdy4NCiAgICogSXQgYWxs b3dzIHRvIGNvcC1vdXQgYXQgU3RlcCAzIGlmIFN0ZXAgNCB0dXJucyBvdXQgdG9vIGhhcmQgYmVj YXVzZSBpdCBicmVha3MgdG9vIG11Y2ggc3R1ZmYNCg0KIyMjIENvbnMNCiogSXQgYWxsb3dzIHRv IGNvcC1vdXQgYXQgU3RlcCAzIGlmIFN0ZXAgNCB0dXJucyBvdXQgdG9vIGhhcmQgYmVjYXVzZSBp dCBicmVha3MgdG9vIG11Y2ggc3R1ZmYNCg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy8NCg==