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, T_SPF_PERMERROR,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 3DD4E1F54E for ; Sun, 31 Jul 2022 13:58:00 +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="z4S2tgOA"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id A16E8121789; Sun, 31 Jul 2022 22:57:53 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 083BB120A10 for ; Sun, 31 Jul 2022 22:57:51 +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:cc; s=smtpapi; bh=0qx9MpUJvefcEAHUj66n58NSpF//vTUiywGO9/cGKPU=; b=z4S2tgOA/jhUjAzDuhjRQ6KMAfktIxRqU3NQ5p6kEpOUbUc47xCHmTR0SF8bHBMQgaQf crGaoiIzy5CvOIEMwBPIPebXr6Uew2T5y4EZfjCt5MnB7aUpJdcrPg5QmhA6KFClGKold1 ZabFSpC6OlcF77SM5DW99nW/7ayY1Y4Gk= Received: by filterdrecv-66b95c5ffd-7qrd4 with SMTP id filterdrecv-66b95c5ffd-7qrd4-1-62E68A5E-2A 2022-07-31 13:57:50.237867735 +0000 UTC m=+841952.753274200 Received: from herokuapp.com (unknown) by geopod-ismtpd-3-5 (SG) with ESMTP id 0RMwfdMGRUS9jG-4fbytxg for ; Sun, 31 Jul 2022 13:57:50.222 +0000 (UTC) Date: Sun, 31 Jul 2022 13:57:50 +0000 (UTC) From: "Eregon (Benoit Daloze)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18949 X-Redmine-Issue-Author: Eregon X-Redmine-Sender: Eregon 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: 85798 X-SG-EID: =?us-ascii?Q?DvL3W2Xo+Vk=2FeUn3F50L=2FNc8u9NqZCnbE0mXZHiyye4R1YZg=2FtAFc0SAFzpcS=2F?= =?us-ascii?Q?Zcr7BqPN=2FYCcMZBMITNeIci9STxYay0JAJWPbek?= =?us-ascii?Q?rFR+qX9WD8wMBMIRaa7sLK9tfQVHvFL5Kwk=2FP7X?= =?us-ascii?Q?0ZaAAZNfSO=2FDXJHP15korYOXPDWrLeJo8e8xbe4?= =?us-ascii?Q?4HnMnOkW9gkmdLMaudXY9+EY4eKuCBj4GqL74tx?= =?us-ascii?Q?kht=2F9aEiy3cBpWqPPZXrT44tSFIohJwJt06DN9H?= =?us-ascii?Q?zIX6wwieVWrYqOBYNnrag=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109393 Subject: [ruby-core:109393] [Ruby master Feature#18949] Deprecate and remove replicate and dummy encodings 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" SXNzdWUgIzE4OTQ5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpJIGhhdmUgdXBkYXRlZCB0aGUgaXNzdWUgZGVzY3JpcHRpb24gd2l0aCBhIGBUbyBEZWNp ZGVgIHNlY3Rpb24gdG8gc3VtbWFyaXplIGZvciB0aGUgZGV2IG1lZXRpbmc6IGh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODk0OSNUby1EZWNpZGUNCg0KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTg5NDk6IERlcHJlY2F0ZSBhbmQg cmVtb3ZlIHJlcGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzDQpodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy9pc3N1ZXMvMTg5NDkjY2hhbmdlLTk4NTQzDQoNCiogQXV0aG9yOiBFcmVnb24gKEJl bm9pdCBEYWxvemUpDQoqIFN0YXR1czogT3Blbg0KKiBQcmlvcml0eTogTm9ybWFsDQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpSdWJ5IGhhcyBhIGxvdCBvZiBhY2Np ZGVudGFsIGNvbXBsZXhpdHkuDQpTb21ldGltZXMgaXQgYmVjb21lcyBjbGVhciBzb21lIGZlYXR1 cmVzIGJyaW5nIGEgbG90IG9mIGNvbXBsZXhpdHkgYW5kIHlldCBwcm92aWRlIGxpdHRsZSB2YWx1 ZSBvciBhcmUgdXNlZCB2ZXJ5IHJhcmVseS4NCkFsc28gbW9zdCBSdWJ5IHVzZXJzIGRvIG5vdCBl dmVuIGtub3cgYWJvdXQgdGhlc2UgZmVhdHVyZXMuDQpSZXBsaWNhdGUgYW5kIGR1bW15IGVuY29k aW5ncyBzZWVtIHRvIGNsZWFybHkgZmFsbCBpbnRvIHRoaXMgY2F0ZWdvcnksIGFsbW9zdCBub2Jv ZHkgdXNlcyB0aGVtIGJ1dCB0aGV5IGFkZCBhIHNpZ25pZmljYW50IGNvbXBsZXhpdHkgYW5kIGFs c28gYWRkIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuDQpOb3RhYmx5LCB0aGUg ZXhpc3RlbmNlIG9mIHRob3NlIG1lYW5zIHRoZSBudW1iZXIgb2YgZW5jb2RpbmdzIGluIGEgUnVi eSBydW50aW1lIGlzIGFjdHVhbGx5IHZhcmlhYmxlIGFuZCBub3QgZml4ZWQuDQpUaGF0IG1lYW5z IGV4dHJhIHN5bmNocm9uaXphdGlvbiwgaGFzaHRhYmxlIGxvb2t1cHMsIGluZGlyZWN0aW9ucywg ZnVuY3Rpb24gY2FsbHMsIGV0Yy4NCg0KIyMgUmVwbGljYXRlIEVuY29kaW5ncw0KDQpSZXBsaWNh dGUgZW5jb2RpbmdzIGFyZSBjcmVhdGVkIHVzaW5nIGBFbmNvZGluZyNyZXBsaWNhdGUobmFtZSlg Lg0KSXQgYWxtb3N0IHNvdW5kcyBsaWtlIGFuIGFsaWFzIGJ1dCBpbiBmYWN0IGl0IGlzIG1vcmUg dGhhbiB0aGF0IGFuZCBjcmVhdGVzIGEgbmV3IEVuY29kaW5nIG9iamVjdCwgd2hpY2ggY2FuIGJl IHVzZWQgYnkgYSBTdHJpbmc6DQpgYGBydWJ5DQplID0gRW5jb2Rpbmc6OlVTX0FTQ0lJLnJlcGxp Y2F0ZSgnTVktVVMtQVNDSUknKQ0KcyA9ICJhYmMiLmZvcmNlX2VuY29kaW5nKGUpDQpwIHMuZW5j b2RpbmcgIyA9PiBlDQpwIHMuZW5jb2RpbmcubmFtZSAjID0+ICdNWS1VUy1BU0NJSScNCmBgYA0K DQpUaGlzIHNlZW1zIGNvbXBsZXRlbHkgdXNlbGVzcy4NClRoZXJlIGlzIGFuIG9idmlvdXMgZmly c3Qgc3RlcCBoZXJlIHdoaWNoIGlzIHRvIGNoYW5nZSBgRW5jb2RpbmcjcmVwbGljYXRlYCB0byBy ZXR1cm4gdGhlIHJlY2VpdmVyLCBhbmQganVzdCBpbnN0YWxsIGFuIGFsaWFzIGZvciBpdC4NClRo YXQgYXZvaWRzIGNyZWF0aW5nIG1vcmUgZW5jb2RpbmcgaW5zdGFuY2VzIG5lZWRsZXNzbHkuDQoN CkkgdGhpbmsgd2Ugc2hvdWxkIGFsc28gZGVwcmVjYXRlIGFuZCByZW1vdmUgdGhpcyBtZXRob2Qg dGhvdWdoLCBpdCBpcyBuZXZlciBhIGdvb2QgaWRlYSB0byBoYXZlIGEgZ2xvYmFsIG11dGFibGUg bWFwIGxpa2UgdGhpcy4NCklmIHNvbWVvbmUgd2FudCBleHRyYSBhbGlhc2VzIGZvciBlbmNvZGlu Z3MsIHRoZXkgY2FuIGVhc2lseSB0byBkbyBzbyBieSBoYXZpbmcgdGhlaXIgb3duIEhhc2g6IGB7 IGFsaWFzID0+IGVuY29kaW5nIH0uZmV0Y2gobmFtZSkgeyBFbmNvZGluZy5maW5kKG5hbWUpIH1g Lg0KDQojIyBEdW1teSBFbmNvZGluZ3MNCg0KRHVtbXkgZW5jb2RpbmdzIGFyZSBub3QgcmVhbCBl bmNvZGluZ3MuIFRoZXkgYXJlIGFydGlmaWNpYWwgZW5jb2RpbmdzIGRlc2lnbmVkIHRvIGxvb2sg bGlrZSBlbmNvZGluZ3MsIGJ1dCBkb24ndCBmdW5jdGlvbiBhcyBlbmNvZGluZ3MgaW4gUnVieS4N CkZyb20gdGhlIGRvY3M6DQpgYGANCmVuYy5kdW1teT8gLT4gdHJ1ZSBvciBmYWxzZQ0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpSZXR1cm5zIHRydWUgZm9yIGR1bW15IGVuY29kaW5ncy4gQSBkdW1teSBlbmNv ZGluZyBpcyBhbiBlbmNvZGluZyBmb3INCndoaWNoIGNoYXJhY3RlciBoYW5kbGluZyBpcyBub3Qg cHJvcGVybHkgaW1wbGVtZW50ZWQuIEl0IGlzIHVzZWQgZm9yDQpzdGF0ZWZ1bCBlbmNvZGluZ3Mu DQpgYGANCg0KSSB3b25kZXIgd2h5IHdlIGhhdmUgdGhvc2UgaGFsZi1pbXBsZW1lbnRlZCBlbmNv ZGluZ3MgaW4gY29yZSwgaXQgc291bmRzIHRvIG1lIGxpa2UgdW5maW5pc2hlZCB3b3JrIHdoaWNo IHNob3VsZCBub3QgaGF2ZSBiZWVuIG1lcmdlZC4NCg0KVGhlICJjb2RlcG9pbnRzIiBvZiBkdW1t eSBlbmNvZGluZ3MgYXJlIGp1c3QgImJ5dGVzIiBhbmQgc28gdGhleSBiZWhhdmUgdGhlIHNhbWUg YXMgYEVuY29kaW5nOjpCSU5BUllgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIFVURi0xNiBh bmQgVVRGLTMyIGR1bW15IGVuY29kaW5ncy4NCg0KIyMjIFVURi0xNiBhbmQgVVRGLTMyIGR1bW15 IGVuY29kaW5ncw0KDQpUaGVzZSB0d28gYXJlIHNwZWNpYWwgZHVtbXkgZW5jb2RpbmdzLg0KV2hh dCB0aGV5IGRvIGlzIHRoZXkgc2NhbiB0aGUgZmlyc3QgMiBvciA0IGJ5dGVzIG9mIHRoZSBTdHJp bmcsIGFuZCBpZiB0aG9zZSBieXRlcyBhcmUgYSBieXRlLW9yZGVyIG1hcmsgKEJPTSksDQp0aGUg dHJ1ZSAiYWN0dWFsIiBlbmNvZGluZyBpcyByZXNvbHZlZCB0byBVVEYtMTZCRS9VVEYtMTZMRSBv ciBVVEYtMzJCRS9VVEYtMzJMRS4NCk90aGVyd2lzZSwgYEVuY29kaW5nOjpCSU5BUllgIGlzIHJl dHVybmVkLg0KVGhpcyBsb2dpYyBpcyBkb25lIGJ5IGBnZXRfYWN0dWFsX2VuY29kaW5nKClgLg0K DQpXaGF0IGlzIHdlaXJkIGlzIHRoaXMgY2hlY2sgaXMgbm90IGRvbmUgb24gU3RyaW5nIGNyZWF0 aW9uLCBubywgaXQgaXMgZG9uZSAqZXZlcnkgdGltZSogdGhlIGVuY29kaW5nIG9mIHRoYXQgU3Ry aW5nIGlzIGFjY2Vzc2VkIChhbmQgdGhlIHJlc3VsdCBpcyBub3Qgc3RvcmVkIG9uIHRoZSBTdHJp bmcpLg0KVGhhdCBpcyBhIG5lZWRsZXNzIG92ZXJoZWFkIGFuZCByZWFsbHkgdW5yZWxpYWJsZSBz ZW1hbnRpY3MuDQpEbyB3ZSByZWFsbHkgd2FudCBhIFN0cmluZyB3aGljaCBhdXRvbWFnaWNhbGx5 IGNoYW5nZXMgYmV0d2VlbiBVVEYtMTZMRSBhbmQgVVRGLTE2QkUgYmFzZWQgb24gbXV0YXRpbmcg aXRzIGJ5dGVzPyBJIHRoaW5rIG5vYm9keSB3YW50cyB0aGF0Og0KYGBgcnVieQ0KcyA9ICJceEZG XHhGRWFceDAwYlx4MDBjXHgwMGRceDAwIi5mb3JjZV9lbmNvZGluZygiVVRGLTE2IikNCnAgcyAj ID0+ICJcdUZFRkZhYmNkIg0Kcy5zZXRieXRlIDAsIDI1NA0Kcy5zZXRieXRlIDEsIDI1NQ0KcCBz ICMgPT4gIlx1RkVGRlx1NjEwMFx1NjIwMFx1NjMwMFx1NjQwMCINCmBgYA0KDQpJIHRoaW5rIHRo ZSBwYXRoIGlzIGNsZWFyLCB3ZSBzaG91bGQgZGVwcmVjYXRlIGFuZCB0aGVuIHJlbW92ZSBFbmNv ZGluZzo6VVRGXzE2IGFuZCBFbmNvZGluZzo6VVRGXzMyIChkdW1teSBlbmNvZGluZ3MpLg0KQW5k IHRoZW4gd2Ugbm8gbG9uZ2VyIG5lZWQgYGdldF9hY3R1YWxfZW5jb2RpbmcoKWAgYW5kIHRoZSBv dmVyaGVhZCBpdCBhZGRzIHRvIGV2ZXJ5IFN0cmluZyBtZXRob2QuDQoNCldlIGNvdWxkIGFsc28g a2VlcCB0aG9zZSBjb25zdGFudHMgYW5kIG1ha2UgdGhlbSByZWZlciB0aGUgbmF0aXZlLWVuZGlh biBVVEYtMTYvMzIuDQpCdXQgdGhhdCBjb3VsZCBjYXVzZSBjb25mdXNpbmcgZXJyb3JzIGFzIHdl IHdvdWxkIGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGVtLg0KV2UgY291bGQgYWRkIGBFbmNvZGlu Zzo6VVRGXzE2TkVgIC8gYEVuY29kaW5nOjpVVEZfMTZfTkFUSVZFX0VORElBTmAgaWYgdGhhdCBp cyB1c2VmdWwuDQoNCkFub3RoZXIgcG9zc2liaWxpdHkgd291bGQgYmUgdG8gcmVzb2x2ZSB0aGVz ZSBlbmNvZGluZ3Mgb24gU3RyaW5nIGNyZWF0aW9uLCBsaWtlOg0KYGBgDQoiXHhGRlx4RkUiLmZv cmNlX2VuY29kaW5nKCJVVEYtMTYiKS5lbmNvZGluZyAjID0+IFVURi0xNkxFDQpTdHJpbmcubmV3 KCJceEZGXHhGRSIsIGVuY29kaW5nOiBFbmNvZGluZzo6VVRGXzE2KS5lbmNvZGluZyAjID0+IFVU Ri0xNkxFDQoiYWIiLmZvcmNlX2VuY29kaW5nKCJVVEYtMTYiKS5lbmNvZGluZyAjIGV4Y2VwdGlv biwgbm90IGEgQk9NDQpTdHJpbmcubmV3KCJhYiIsIGVuY29kaW5nOiBFbmNvZGluZzo6VVRGXzE2 KS5lbmNvZGluZyAjIGV4Y2VwdGlvbiwgbm90IGEgQk9NDQpgYGANCkkgdGhpbmsgaXQgaXMgdW5u ZWNlc3NhcnkgdG8ga2VlcCBzdWNoIGNvbXBsZXhpdHkgdGhvdWdoLg0KQSBjbGFzcyBtZXRob2Qg b24gU3RyaW5nIG9yIEVuY29kaW5nIGxpa2UgZS5nLiBgRW5jb2RpbmcuZmluZF9mcm9tX2JvbShz dHJpbmcpYCBpcyBzbyBtdWNoIGNsZWFyZXIgYW5kIGVmZmljaWVudCAobm8gbmVlZCB0byBzcGVj aWFsIGNhc2UgdGhvc2UgZW5jb2RpbmdzIGluIFN0cmluZy5uZXcsICNmb3JjZV9lbmNvZGluZywg ZXRjKS4NCg0KRldJVyBKUnVieSBzZWVtcyB0byB1c2UgYGdldEFjdHVhbEVuY29kaW5nKClgIG9u bHkgaW4gMiBwbGFjZXMgKHNjYW5Gb3JDb2RlUmFuZ2UsIGluc3BlY3QpLCB3aGljaCBpcyBhbiBp bmRpY2F0aW9uIHRob3NlIGR1bW15IFVURiBlbmNvZGluZ3MgYXJlIGJhcmVseSB1c2VkIGlmIGV2 ZXIuIFNpbWlsYXJseSwgVHJ1ZmZsZVJ1Ynkgb25seSBoYXMgNCB1c2FnZXMgb2YgYEdldEFjdHVh bEVuY29kaW5nTm9kZWAuDQoNCiMjIyBFeGlzdGluZyBkdW1teSBlbmNvZGluZ3MNCg0KYGBgDQo+ IEVuY29kaW5nLmxpc3Quc2VsZWN0KCY6ZHVtbXk/KSANClsjPEVuY29kaW5nOlVURi0xNiAoZHVt bXkpPiwgICM8RW5jb2Rpbmc6VVRGLTMyIChkdW1teSk+LA0KICM8RW5jb2Rpbmc6SUJNMDM3IChk dW1teSk+LCAjPEVuY29kaW5nOlVURi03IChkdW1teSk+LA0KICM8RW5jb2Rpbmc6SVNPLTIwMjIt SlAgKGR1bW15KT4sICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAtMiAoZHVtbXkpPiwgIzxFbmNvZGlu ZzpJU08tMjAyMi1KUC1LRERJIChkdW1teSk+LA0KICM8RW5jb2Rpbmc6Q1A1MDIyMCAoZHVtbXkp PiwgIzxFbmNvZGluZzpDUDUwMjIxIChkdW1teSk+XQ0KYGBgDQoNClNvIGJlc2lkZXMgVVRGLTE2 L1VURi0zMiBkdW1teSwgaXQncyBvbmx5IDcgZW5jb2RpbmdzLg0KRG9lcyBhbnlvbmUgdXNlIG9u ZSBvZiB0aGVzZSA3IGR1bW15IGVuY29kaW5ncz8NCg0KV2hhdCBpcyBpbnRlcmVzdGluZyB0byBu b3RlLCBpcyB0aGF0IHRoZXNlIGVuY29kaW5ncyBhcmUgZXhhY3RseSB0aGUgb25lcyB0aGF0IGFy ZSBhbHNvIG5vdCBBU0NJSS1jb21wYXRpYmxlLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgVVRGLTE2 QkUvVVRGLTE2TEUvVVRGLTMyQkUvVVRGLTMyTEUgKG5vbi1kdW1teSkuDQpBcyBhIG5vdGUsIFVU Ri17MTYsMzJ9e0JFLExFfSBhcmUgQVNDSUktY29tcGF0aWJsZSBpbiBjb2RlcG9pbnRzIGJ1dCBu b3QgaW4gYnl0ZXMsIGFuZCBSdWJ5IHVzZXMgdGhlIGJ5dGVzIGRlZmluaXRpb24gb2YgQVNDSUkt Y29tcGF0aWJsZS4NClRoZXJlIGlzIHBvdGVudGlhbCB0byBzaW1wbGlmeSBlbmNvZGluZyBjb21w YXRpYmlsaXR5IHJ1bGVzIGFuZCBlbmNvZGluZyBjb21wYXRpYmlsaXR5IGNoZWNrcyBiYXNlZCBv biB0aGF0Lg0KU28gd2hhdCB0aGlzIG1lYW5zIGlzIGlmIHdlIHJlbW92ZWQgZHVtbXkgZW5jb2Rp bmdzLCBhbGwgZW5jb2RpbmdzIGV4Y2VwdCBVVEYtezE2LDMyfXtCRSxMRX0gd291bGQgYmUgQVND SUktY29tcGF0aWJsZSwgd2hpY2ggd291bGQgbGVhZCB0byBzaWduaWZpY2FudCBzaW1wbGlmaWNh dGlvbnMgZm9yIG1hbnkgc3RyaW5nIG9wZXJhdGlvbnMgd2hpY2ggY3VycmVudGx5IG5lZWQgdG8g aGFuZGxlIGR1bW15IGVuY29kaW5ncyBzcGVjaWFsbHkuDQpVbmljb2RlIGVuY29kaW5ncyBsaWtl IFVURi17MTYsMzJ9e0JFLExFfSBhbHJlYWR5IGhhdmUgc3BlY2lhbCBiZWhhdmlvciBmb3Igc29t ZSBSdWJ5IG1ldGhvZHMsIHNvIHRob3NlIGFyZSBhbHJlYWR5IGhhbmRsZWQgc3BlY2lhbGx5IGlu IHNvbWUgcGxhY2VzICh0aGV5IGFyZSB0aGUgb25seSBlbmNvZGluZ3Mgd2l0aCBtaW5MZW5ndGgg PiAxKS4NCg0KYGBgDQo+IEVuY29kaW5nLmxpc3QucmVqZWN0KCY6YXNjaWlfY29tcGF0aWJsZT8p DQpbIzxFbmNvZGluZzpVVEYtMTZCRT4sICM8RW5jb2Rpbmc6VVRGLTE2TEU+LA0KICM8RW5jb2Rp bmc6VVRGLTMyQkU+LCAjPEVuY29kaW5nOlVURi0zMkxFPiwNCiAjPEVuY29kaW5nOlVURi0xNiAo ZHVtbXkpPiwgIzxFbmNvZGluZzpVVEYtMzIgKGR1bW15KT4sDQogIzxFbmNvZGluZzpJQk0wMzcg KGR1bW15KT4sICM8RW5jb2Rpbmc6VVRGLTcgKGR1bW15KT4sDQogIzxFbmNvZGluZzpJU08tMjAy Mi1KUCAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08tMjAyMi1KUC0yIChkdW1teSk+LCAjPEVuY29k aW5nOklTTy0yMDIyLUpQLUtEREkgKGR1bW15KT4sDQogIzxFbmNvZGluZzpDUDUwMjIwIChkdW1t eSk+LCAjPEVuY29kaW5nOkNQNTAyMjEgKGR1bW15KT5dDQpgYGANCg0KV2hhdCBjYW4gd2UgZG8g d2l0aCBzdWNoIGEgZHVtbXkgbm9uLUFTQ0lJLWNvbXBhdGlibGUgZW5jb2Rpbmc/DQpBbG1vc3Qg bm90aGluZyB1c2VmdWw6DQpgYGBydWJ5DQpzID0gImFiYyIuZW5jb2RlKCJJQk0wMzciKQ0KPT4g Ilx4ODFceDgyXHg4MyINCj4gcy5ieXRlcw0KPT4gWzEyOSwgMTMwLCAxMzFdDQo+IHMuY29kZXBv aW50cw0KPT4gWzEyOSwgMTMwLCAxMzFdDQo+IHMgPT0gImFiYyINCj0+IGZhbHNlDQo+ICLDqXTD qSIuZW5jb2RlKCJJQk0wMzciKQ0KPT4gIlx4NTFceEEzXHg1MSINCmBgYA0KDQpTbyBhYm91dCB0 aGUgb25seSB0aGluZyB0aGF0IHdvcmtzIHdpdGggdGhlbSBpcyBgU3RyaW5nI2VuY29kZWAuDQoN CkkgdGhpbmsgd2UgY291bGQgcHJlc2VydmUgdGhhdCBmdW5jdGlvbmFsaXR5LCBpZiBhY3R1YWxs eSB1c2VkIChkb2VzIGFueW9uZSB1c2Ugb25lIG9mIHRoZXNlIDcgZHVtbXkgZW5jb2RpbmdzPyks IHRocm91Z2g6DQpgYGBydWJ5DQo+ICLDqXTDqSIuZW5jb2RlKCJJQk0wMzciKQ0KPT4gIlx4NTFc eEEzXHg1MSIgKC5lbmNvZGluZyA9PSBCSU5BUlkpDQo+ICJceDUxXHhBM1x4NTEiLmVuY29kZSgi VVRGLTgiLCAiSUJNMDM3IikgIyBlbmNvZGUgZnJvbSBJQk0wMzcgdG8gVVRGLTgNCj0+ICLDqXTD qSIgKC5lbmNvZGluZyA9PSBVVEYtOCkNCmBgYA0KDQpUaGF0IHdheSB0aGVyZSBpcyBubyBuZWVk IGZvciB0aG9zZSB0byBiZSBFbmNvZGluZyBpbnN0YW5jZXMsIHdlIHdvdWxkIG9ubHkgbmVlZCB0 aGUgY29udmVyc2lvbiB0YWJsZXMuDQoNCkl0IGlzIGV2ZW4gYmV0dGVyIGlmIHdlIGNhbiByZW1v dmUgdGhlbSwgc28gdGhlIG5vdGlvbiBvZiAiZHVtbXkgZW5jb2RpbmdzIiBjYW4gZGlzYXBwZWFy IGNvbXBsZXRlbHkgYW5kIG5vYm9keSBuZWVkcyB0byB1bmRlcnN0YW5kIG9yIGltcGxlbWVudCB0 aGVtLg0KDQojIyMgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKG5hbWUpDQoNClRoZSBDLUFQSSBo YXMgYHJiX2RlZmluZV9kdW1teV9lbmNvZGluZyhjb25zdCBjaGFyICpuYW1lKWAuDQpUaGlzIGNy ZWF0ZXMgYSBuZXcgRW5jb2RpbmcgaW5zdGFuY2Ugd2l0aCBgZHVtbXk/PXRydWVgLCBhbmQgaXQg aXMgYWxzbyBub24tQVNDSUktY29tcGF0aWJsZS4NClRoZXJlIHNlZW1zIHRvIGJlIG5vIHB1cnBv c2UgdG8gdGhpcyBiZXNpZGVzIHN0b3JpbmcgdGhlIG1ldGFkYXRhIG9mIGFuIGVuY29kaW5nIHdo aWNoIGRvZXMgbm90IGV4aXN0IGluIFJ1YnkuDQpUaGlzIHNlZW1zIGEgcmVhbGx5IGV4cGVuc2l2 ZS9jb21wbGV4IHdheSB0byBoYW5kbGUgdGhhdCBmcm9tIHRoZSBWTSBwb2ludCBvZiB2aWV3IChi ZWNhdXNlIGl0IGR5bmFtaWNhbGx5IGNyZWF0ZXMgYW4gRW5jb2RpbmcgYW5kIGFkZCBpdCB0byBs aXN0cy9tYXBzL2V0YykuDQpBIHNpbXBsZSByZXBsYWNlbWVudCB3b3VsZCBiZSB0byBtYXJrIHRo ZSBTdHJpbmcgYXMgQklOQVJZIGFuZCBzYXZlIHRoZSBlbmNvZGluZyBuYW1lIGFzIGFuIGluc3Rh bmNlIHZhcmlhYmxlIG9mIHRoYXQgU3RyaW5nLg0KU2luY2UgYW55d2F5IFJ1YnkgY2FuJ3QgdW5k ZXJzdGFuZCBhbnl0aGluZyBhYm91dCB0aGF0IFN0cmluZywgaXQncyBqdXN0IHJhdyBieXRlcyB0 byBSdWJ5J3MgZXllcy4NCg0KIyMgU3VtbWFyeQ0KDQpJIHN1Z2dlc3Qgd2UgZGVwcmVjYXRlIHJl cGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzIGluIFJ1YnkgMy4yLg0KQW5kIHRoZW4gd2UgcmVt b3ZlIHRoZW0gaW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KVGhpcyB3aWxsIHNpZ25pZmljYW50bHkg c2ltcGxpZnkgc3RyaW5nLXJlbGF0ZWQgbWV0aG9kcywgYW5kIHRoZSBiZWhhdmlvciBleHBvc2Vk IHRvIFJ1YnkgdXNlcnMuDQoNCkl0IHdpbGwgYWxzbyBzaWduaWZpY2FudGx5IHNwZWVkdXAgZW5j b2RpbmcgbG9va3VwIGluIENSdWJ5IChhbmQgb3RoZXIgUnVieSBpbXBsZW1lbnRhdGlvbnMpLg0K V2l0aCBhIGZpeGVkIG51bWJlciBvZiBlbmNvZGluZ3Mgd2UgY2FuIGVuc3VyZSBhbGwgZW5jb2Rp bmcgaW5kaWNlcyBmaXQgaW4gNyBiaXRzLCBhbmQgYEVOQ09ESU5HX0dFVGAgY2FuIGJlIHNpbXBs eSBgUkJfRU5DT0RJTkdfR0VUX0lOTElORURgLg0KYGdldF9hY3R1YWxfZW5jb2RpbmcoKWAgd2ls bCBiZSBnb25lIGFuZCBpdHMgb3ZlcmhlYWQgYXMgd2VsbC4NCmByYl9lbmNfZnJvbV9pbmRleCgp YCB3b3VsZCBiZSBqdXN0IGByZXR1cm4gZ2xvYmFsX2VuY190YWJsZS0+bGlzdFtpbmRleF0uZW5j O2AsIGluc3RlYWQgb2YgdGhlIGV4cGVuc2l2ZSBiZWhhdmlvciBjdXJyZW50bHkgd2l0aCBgR0xP QkFMX0VOQ19UQUJMRV9FVkFMYCB3aGljaCB0YWtlcyBhIGxvY2sgYW5kIG1vcmUgd2hlbiB0aGVy ZSBhcmUgbXVsdGlwbGUgUmFjdG9ycy4NCk1hbnkgY2hlY2tzIGluIHRoZXNlIG1ldGhvZHMgd291 bGQgYmUgcmVtb3ZlZCBhcyB3ZWxsLg0KWWV0IGFub3RoZXIgaW1wcm92ZW1lbnQgd291bGQgYmUg dG8gbG9hZCBhbGwgZW5jb2RpbmdzIGVhZ2VybHksIHRoYXQgaXMgc21hbGwgYW5kIGZhc3QgaW4g bXkgZXhwZXJpZW5jZSwgd2hhdCBpcyBzbG93IGFuZCBiaWcgaXMgdGhlIGNvbnZlcnNpb24gdGFi bGVzLCB0aGF0J2Qgc2ltcGxpZnkgYG11c3RfZW5jaW5kZXgoKWAgZnVydGhlci4NClRoZXNlIGNo YW5nZXMgd291bGQgYWZmZWN0IG1vc3QgU3RyaW5nIG1ldGhvZHMsIHdoaWNoIHVzZQ0KYGBgDQpT VFJfRU5DX0dFVC0+Z2V0X2VuY29kaW5nIHdoaWNoIGRvZXM6DQogIGdldF9hY3R1YWxfZW5jb2Rp bmctPnJiX2VuY19mcm9tX2luZGV4IGFuZCBwb3NzaWJseSAtPmVuY19mcm9tX2luZGV4DQogIEVO Q09ESU5HX0dFVC0+UkJfRU5DT0RJTkdfR0VUX0lOTElORUQgYW5kIHBvc3NpYmx5IC0+cmJfZW5j X2dldF9pbmRleC0+ZW5jX2dldF9pbmRleF9zdHItPnJiX2F0dHJfZ2V0DQpgYGANClNvbWUgb2Yg dGhlc2UgZGV0YWlscyBhcmUgbWVudGlvbmVkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1 YnkvcHVsbC82MDk1I2Rpc2N1c3Npb25fcjkxNTE0OTcwOC4NClRoZSBvdmVyaGVhZCBpcyBzbyBs YXJnZSB0aGF0IGl0IGlzIHdvcnRoIGhhbmRsaW5nIHNvbWUgaGFyZGNvZGVkIGVuY29kaW5nIGlu ZGljZXMgZGlyZWN0bHkgaW4gU3RyaW5nIG1ldGhvZHMuDQpUaGlzIGZlZWxzIHdyb25nLCBnZXR0 aW5nIHRoZSBlbmNvZGluZyBmcm9tIGEgU3RyaW5nIHNob3VsZCBiZSBzaW1wbGUsIHN0cmFpZ2h0 Zm9yd2FyZCBhbmQgZmFzdC4NCg0KRnVydGhlciBvcHRpbWl6YXRpb25zIHdpbGwgYmUgdW5sb2Nr ZWQgYXMgdGhlIGVuY29kaW5nIGxpc3QgYmVjb21lcyBmaXhlZCBhbmQgaW1tdXRhYmxlLg0KRm9y IGV4YW1wbGUsIHRoZSBuYW1lLXRvLUVuY29kaW5nIG1hcCBpcyB0aGVuIGltbXV0YWJsZSBhbmQg Y291bGQgdXNlIHBlcmZlY3QgaGFzaGluZy4NCklubGluZSBjYWNoaW5nIHRob3NlIGxvb2t1cHMg YWxzbyBiZWNvbWVzIGVhc2llciBhcyB0aGUgdGhlIG1hcCBjYW5ub3QgY2hhbmdlLg0KQWxzbyB0 aGF0IG1hcCB3b3VsZCBubyBsb25nZXIgbmVlZCBzeW5jaHJvbml6YXRpb24sIGV0Yy4NCg0KIyMg VG8gRGVjaWRlDQoNCkVhY2ggaXRlbSBpcyBpbmRlcGVuZGVudC4gSSB0aGluayAxICYgMiBhcmUg dmVyeSBpbXBvcnRhbnQsIDMgbGVzcyBidXQgd291bGQgYmUgbmljZS4NCg0KMS4gUmVtb3ZlIGBF bmNvZGluZyNyZXBsaWNhdGVgIGFuZCBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKClgLiBXaXRo IHRoYXQgdGhlcmUgaXMgYSBmaXhlZCBudW1iZXIgb2YgZW5jb2RpbmdzLCBhIGxvdCBvZiBzaW1w bGlmaWNhdGlvbnMgYW5kIG1hbnkgb3B0aW1pemF0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5 IGFyZSB1c2VkIHJlc3BlY3RpdmVseSBpbiBvbmx5IDEgZ2VtIGFuZCA1IGdlbXMsIHNlZSBodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg5NDkjbm90ZS00DQoyLiBSZW1vdmUgdGhl IGR1bW15IFVURi0xNiBhbmQgVVRGLTMyIGVuY29kaW5ncy4gVGhpcyByZW1vdmVzIHRoZSBuZWVk IGZvciBgZ2V0X2FjdHVhbF9lbmNvZGluZygpYCB3aGljaCBpcyBleHBlbnNpdmUuIFRoaXMgZnVu Y3Rpb25hbGl0eSBzZWVtcyByYXJlbHkgdXNlZCBpbiBwcmFjdGljZSwgYW5kIGl0IG9ubHkgd29y a3Mgd2hlbiBzdWNoIHN0cmluZ3MgaGF2ZSBhIEJPTSwgd2hpY2ggaXMgdmVyeSByYXJlLg0KMy4g UmVtb3ZlIG90aGVyIGR1bW15IGVuY29kaW5ncywgc28gdGhlcmUgYXJlIG5vIG1vcmUgZHVtbXkg ImhhbGYtaW1wbGVtZW50ZWQiIGVuY29kaW5ncyBhbmQgYWxsIGVuY29kaW5ncyBhcmUgQVNDSUkt Y29tcGF0aWJsZSBpbiB0ZXJtcyBvZiBjb2RlcG9pbnRzLg0KDQoNCg0KLS0gDQpodHRwczovL2J1 Z3MucnVieS1sYW5nLm9yZy8NCg==