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_SCC_BODY_TEXT_LINE,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 D891D1F54E for ; Wed, 17 Aug 2022 19:52:02 +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="b8C4fXK6"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 32803121091; Thu, 18 Aug 2022 04:51:56 +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 7277E120EAB for ; Thu, 18 Aug 2022 04:51:54 +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=JZlh7lWH2EKTzcaLEYozgqiilhEZiindpVEH9DQjpjw=; b=b8C4fXK6yIWN45lQDBtME3O1ctO5BBn8vPPDoEPTHrS1oBobsGK+XuS8wJmWl7d8TdlZ /8r0mz2yNMhmoGoSrlQLrH9oM5kcoLvfyTz7QzU3OXiWSADD2zORNoiCJ9Ob1a9hssoyTj RQQ6UsFD2O39PeH9C1Jvk6a9oBevGzQkY= Received: by filterdrecv-7787b7f4d9-8tdft with SMTP id filterdrecv-7787b7f4d9-8tdft-1-62FD46D3-40 2022-08-17 19:51:47.724053492 +0000 UTC m=+2331975.650312539 Received: from herokuapp.com (unknown) by geopod-ismtpd-3-1 (SG) with ESMTP id ywopK0ifTfGub94uLAanBw for ; Wed, 17 Aug 2022 19:51:47.679 +0000 (UTC) Date: Wed, 17 Aug 2022 19:51:47 +0000 (UTC) From: "jemmai (Jemma Issroff)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18776 X-Redmine-Issue-Author: jemmai X-Redmine-Sender: jemmai 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: 85928 X-SG-EID: =?us-ascii?Q?F18P+2W1KnHe6ISASa+61nUK3i7mN03gxrUl5OPiI2ZTtcWzec3HAg3iwLkXVU?= =?us-ascii?Q?w9NVOsENbVlMKtc9X75yTo7Os1jg2OTxwg8Q8cw?= =?us-ascii?Q?8BUJUvIwxlbjh84AaCqXfs5zEtRxcVWI64BhuzD?= =?us-ascii?Q?a+sM05bTfr6QQO4aBv8BcQO5=2FPCevHK5I4JDhNT?= =?us-ascii?Q?sGWum42uEbIgaMHbbJ0BDccAw9j87rYxEYrbBce?= =?us-ascii?Q?m+5kFE5me6CRa1Bkld8DN+v6JTcyx0RtK5rntlj?= =?us-ascii?Q?FRJIMtV2KwRmhMi2PVitA=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109520 Subject: [ruby-core:109520] [Ruby master Feature#18776] Object Shapes 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" SXNzdWUgIzE4Nzc2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamVtbWFpIChKZW1tYSBJc3Nyb2ZmKS4K CgpBZnRlciBydW5uaW5nIHRoZSBZSklUIGJlbmNobWFya3MgaW4gcmVsZWFzZSBtb2RlLCB3ZSBm b3VuZCB0aGF0IHNldHRpbmcgaW5zdGFuY2UgdmFyaWFibGVzIGlzLCBpbmRlZWQsIHNsb3dlciBv biBvdXIgYnJhbmNoIHRoYW4gdGhlIG1hc3RlciBicmFuY2guIAoKWUpJVCBpcyBub3QgZXhpdGlu Zy4gWUpJVCBpcyBjYWxsaW5nIG91dCB0byBgcmJfdm1fc2V0aW5zdGFuY2V2YXJpYWJsZWAgdG8g c2V0IGluc3RhbmNlIHZhcmlhYmxlcy4gV2UgZGlzYXNzZW1ibGVkIHRoaXMgZnVuY3Rpb24gb24g Ym90aCBtYXN0ZXIgYW5kIG91ciBicmFuY2ggYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGNvbXBpbGVy IGlzIGVtaXR0aW5nIHVuZm9ydHVuYXRlIG1hY2hpbmUgY29kZSBvbiBvdXIgYnJhbmNoLiBJdCBs b29rcyBsaWtlIHdlIGFyZSBzcGlsbGluZyBkYXRhIHRvIHRoZSBzdGFjayB3aGVyZSB3ZSB3ZXJl bid0IGluIG1hc3Rlci4gCgohW10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVu dC5jb20vMTk4ODU2MC8xODUyMjk2NzItZDBkN2UxZTUtOTg5Ny00NjczLWE5ZTQtODQ2MDE2NWNl ZmNlLnBuZykKCk9uIHRoZSBsZWZ0IGlzIHRoZSBtYWNoaW5lIGNvZGUgaW4gb3VyIGJyYW5jaCwg b24gdGhlIHJpZ2h0IGlzIHRoZSBtYWNoaW5lIGNvZGUgZm9yIG1hc3Rlci4gSXQgbG9va3MgbGlr ZSB0aGUgbWFjaGluZSBjb2RlIG9uIG91ciBicmFuY2ggaXMgc3BpbGxpbmcgZGF0YSB0byB0aGUg c3RhY2sgYW5kIHdlIHRoaW5rIHRoaXMgaXMgd2h5IHRoZXJlJ3MgYSBzcGVlZCBkaWZmZXJlbmNl LiBXZSBjYW4gd29yayBvbiBjaGFuZ2luZyB0aGUgQyBjb2RlIHRvIGdldCBtb3JlIGVmZmljaWVu dCBtYWNoaW5lIGNvZGUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkZlYXR1cmUgIzE4Nzc2OiBPYmplY3QgU2hhcGVzCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn L2lzc3Vlcy8xODc3NiNjaGFuZ2UtOTg2ODkKCiogQXV0aG9yOiBqZW1tYWkgKEplbW1hIElzc3Jv ZmYpCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6IE5vcm1hbAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgT2JqZWN0IFNoYXBlcyBpbXBsZW1lbnRhdGlvbgoKQWFy b24gUGF0dGVyc29uLCBFaWxlZW4gVWNoaXRlbGxlIGFuZCBJIGhhdmUgYmVlbiB3b3JraW5nIG9u IGFuIGltcGxlbWVudGF0aW9uIG9mIE9iamVjdCBTaGFwZXMgZm9yIFJ1YnkuICBXZSBhcmUgZmls aW5nIGEgdGlja2V0IHRvIHNoYXJlIHdoYXQgd2UndmUgYmVlbiBkb2luZywgYXMgd2VsbCBhcyBn ZXQgZmVlZGJhY2sgb24gdGhlIHByb2plY3QgaW4gaXRzIGN1cnJlbnQgc3RhdGUuCgpXZSBob3Bl IHRvIGV2ZW50dWFsbHkgc3VibWl0IHRoZSBmaW5hbGl6ZWQgcHJvamVjdCB1cHN0cmVhbSBhZnRl ciB2ZXJpZnlpbmcgZWZmaWNhY3kuCgojIyBXaGF0IGFyZSBPYmplY3QgU2hhcGVzPwoKT2JqZWN0 IHNoYXBlcyBhcmUgYSB0ZWNobmlxdWUgZm9yIHJlcHJlc2VudGluZyBwcm9wZXJ0aWVzIG9mIGFu IG9iamVjdC4gT3RoZXIgbGFuZ3VhZ2UgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmcgW1RydWZm bGVSdWJ5XShodHRwczovL2dpdGh1Yi5jb20vb3JhY2xlL3RydWZmbGVydWJ5KSBhbmQgW1Y4XSho dHRwczovL3Y4LmRldi8pLCB1c2UgdGhpcyB0ZWNobmlxdWUuIENocmlzIFNlYXRvbiwgdGhlIGNy ZWF0b3Igb2YgVHJ1ZmZsZVJ1YnksIGRpc2N1c3NlZCBvYmplY3Qgc2hhcGVzIGluIGhpcyBbUnVi eUthaWdpIDIwMjEgS2V5bm90ZV0oaHR0cHM6Ly9ydWJ5a2FpZ2kub3JnLzIwMjEtdGFrZW91dC9w cmVzZW50YXRpb25zL2NocmlzZ3NlYXRvbi5odG1sKSBhbmQgTWF4aW1lIENoZXZhbGllci1Cb2lz dmVydCBkaXNjdXNzZWQgdGhlIGltcGxpY2F0aW9ucyBmb3IgWUpJVCBpbiB0aGUgbGF0dGVyIHBh cnQgb2YgW2hlciB0YWxrIGF0IFJ1YnlLYWlnaSAyMDIxXShodHRwczovL3d3dy55b3V0dWJlLmNv bS93YXRjaD92PVBCVkxmM3lmTXM4JnQ9MTEwMHMpLiBUaGUgb3JpZ2luYWwgaWRlYSBvZiBvYmpl Y3Qgc2hhcGVzIFtvcmlnaW5hdGVzIGZyb20gdGhlIFNlbGYgbGFuZ3VhZ2VdKGh0dHBzOi8vYmli bGlvZ3JhcGh5LnNlbGZsYW5ndWFnZS5vcmcvX3N0YXRpYy9pbXBsZW1lbnRhdGlvbi5wZGYpLCB3 aGljaCBpcyBjb25zaWRlcmVkIGEgZGlyZWN0IGRlc2NlbmRhbnQgb2YgU21hbGx0YWxrLgoKRWFj aCBzaGFwZSByZXByZXNlbnRzIGEgc3BlY2lmaWMgc2V0IG9mIGF0dHJpYnV0ZXMgKGluc3RhbmNl IHZhcmlhYmxlcyBhbmQgb3RoZXIgcHJvcGVydGllcykgYW5kIHRoZWlyIHZhbHVlcy4gSW4gb3Vy IGltcGxlbWVudGF0aW9uLCBhbGwgb2JqZWN0cyBoYXZlIGEgc2hhcGUuIFRoZSBzaGFwZXMgYXJl IG5vZGVzIGluIGEgdHJlZSBkYXRhIHN0cnVjdHVyZS4gRXZlcnkgZWRnZSBpbiB0aGUgdHJlZSBy ZXByZXNlbnRzIGFuIGF0dHJpYnV0ZSB0cmFuc2l0aW9uLgoKTW9yZSBzcGVjaWZpY2FsbHksIHNl dHRpbmcgYW4gaW5zdGFuY2UgdmFyaWFibGUgb24gYW4gaW5zdGFuY2Ugb2YgYW4gb2JqZWN0IGNy ZWF0ZXMgYW4gb3V0Z29pbmcgZWRnZSBmcm9tIHRoZSBpbnN0YW5jZSdzIGN1cnJlbnQgc2hhcGUu IFRoaXMgaXMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHNoYXBlIHRvIGFub3RoZXIuIFRoZSBlZGdl IHJlcHJlc2VudHMgdGhlIGluc3RhbmNlIHZhcmlhYmxlIHRoYXQgaXMgc2V0LgoKRm9yIGV4YW1w bGU6CgpgYGBydWJ5CmNsYXNzIEZvbwogIGRlZiBpbml0aWFsaXplCiAgICAjIEN1cnJlbnRseSB0 aGlzIGluc3RhbmNlIGlzIHRoZSByb290IHNoYXBlIChJRCAwKQogICAgQGEgPSAxICMgVHJhbnNp dGlvbnMgdG8gYSBuZXcgc2hhcGUgdmlhIGVkZ2UgQGEgKElEIDEpCiAgICBAYiA9IDIgIyBUcmFu c2l0aW9ucyB0byBhIG5ldyBzaGFwZSB2aWEgZWRnZSBAYiAoSUQgMikKICBlbmQKZW5kCgpmb28g PSBGb28ubmV3CmBgYAoKV2hlbiBgRm9vYCBpcyBpbnRpYWxpemVkLCBpdHMgc2hhcGUgaXMgdGhl IHJvb3Qgc2hhcGUgd2l0aCBJRCAwLiAgVGhlIHJvb3Qgc2hhcGUgcmVwcmVzZW50cyBhbiBlbXB0 eSBvYmplY3Qgd2l0aCBubyBpbnN0YW5jZSB2YXJpYWJsZXMuIEVhY2ggdGltZSBhbiBpbnN0YW5j ZSB2YXJpYWJsZSBpcyBzZXQgb24gYGZvb2AsIHRoZSBzaGFwZSBvZiB0aGUgaW5zdGFuY2UgY2hh bmdlcy4gSXQgZmlyc3QgdHJhbnNpdGlvbnMgd2l0aCBgQGFgIHRvIGEgc2hhcGUgd2l0aCBJRCAx LCBhbmQgdGhlbiB0cmFuc2l0aW9ucyB3aXRoIGBAYmAgdG8gYSBzaGFwZSB3aXRoIElEIDIuIElm IGBAYWAgaXMgdGhlbiBzZXQgdG8gYSBkaWZmZXJlbnQgdmFsdWUsIGl0cyBzaGFwZSB3aWxsIHJl bWFpbiB0aGUgc2hhcGUgd2l0aCBJRCAyLCBzaW5jZSB0aGlzIHNoYXBlIGFscmVhZHkgaW5jbHVk ZXMgdGhlIGluc3RhbmNlIHZhcmlhYmxlIGBAYWAuICAKCiFbXShodHRwczovL3VzZXItaW1hZ2Vz LmdpdGh1YnVzZXJjb250ZW50LmNvbS8xOTg4NTYwLzE2NzkxODM2MC0wYTZjOTFhYS0yNTg3LTQ4 Y2ItOGZmMi03ZjNhOTU4MzI4OGUuc3ZnKQoKVGhlcmUgaXMgb25lIGdsb2JhbCBzaGFwZSB0cmVl IGFuZCBvYmplY3RzIHdoaWNoIHVuZGVyZ28gdGhlIHNhbWUgc2hhcGUgdHJhbnNpdGlvbnMgaW4g dGhlIHNhbWUgb3JkZXIgd2lsbCBlbmQgdXAgd2l0aCB0aGUgc2FtZSBmaW5hbCBzaGFwZS4KCkZv ciBpbnN0YW5jZSwgaWYgd2UgaGF2ZSBhIGNsYXNzIGBCYXJgIGRlZmluZWQgYXMgZm9sbG93cywg dGhlIGZpcnN0IHRyYW5zaXRpb24gb24gYEJhci5uZXdgIHRocm91Z2ggdGhlIGluc3RhbmNlIHZh cmlhYmxlIGBAYWAgd2lsbCBiZSB0aGUgc2FtZSBhcyBgRm9vLm5ld2AncyBmaXJzdCB0cmFuc2l0 aW9uOgoKYGBgcnVieQpjbGFzcyBGb28KICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkg dGhpcyBpbnN0YW5jZSBpcyB0aGUgcm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5z aXRpb25zIHRvIGEgbmV3IHNoYXBlIHZpYSBlZGdlIEBhIChJRCAxKQogICAgQGIgPSAyICMgVHJh bnNpdGlvbnMgdG8gYSBuZXcgc2hhcGUgdmlhIGVkZ2UgQGIgKElEIDIpCiAgZW5kCmVuZAoKY2xh c3MgQmFyCiAgZGVmIGluaXRpYWxpemUKICAgICMgQ3VycmVudGx5IHRoaXMgaW5zdGFuY2UgaXMg dGhlIHJvb3Qgc2hhcGUgKElEIDApCiAgICBAYSA9IDEgIyBUcmFuc2l0aW9ucyB0byBzaGFwZSBk ZWZpbmVkIGVhcmxpZXIgdmlhIGVkZ2UgQGEgKElEIDEpCiAgICBAYyA9IDEgIyBUcmFuc2l0aW9u cyB0byBhIG5ldyBzaGFwZSB2aWEgZWRnZSBAYyAoSUQgMykKICAgIEBiID0gMSAjIFRyYW5zaXRp b25zIHRvIGEgbmV3IHNoYXBlIHZpYSBlZGdlIEBiIChJRCA0KQogIGVuZAplbmQKCmZvbyA9IEZv by5uZXcgIyBibHVlIGluIHRoZSBkaWFncmFtCmJhciA9IEJhci5uZXcgIyByZWQgaW4gdGhlIGRp YWdyYW0KYGBgCgpJbiB0aGUgZGlhZ3JhbSBiZWxvdywgcHVycGxlIHJlcHJlc2VudHMgc2hhcmVk IHRyYW5zaXRpb25zLCBibHVlIHJlcHJlc2VudHMgdHJhbnNpdGlvbnMgZm9yIG9ubHkgYGZvb2As IGFuZCByZWQgcmVwcmVzZW50cyB0cmFuc2l0aW9ucyBmb3Igb25seSBgYmFyYC4KCiFbXShodHRw czovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xOTg4NTYwLzE2NzkxODg5OS1m MWE2ZjM0NC1hZTVlLTRkYzAtYjE3YS1mYjE1NmQxZDU1MGYuc3ZnKQoKIyMjIENhY2hlIHN0cnVj dHVyZQoKRm9yIGluc3RhbmNlIHZhcmlhYmxlIHdyaXRlcnMsIHRoZSBjdXJyZW50IHNoYXBlIElE LCB0aGUgc2hhcGUgSUQgdGhhdCBpdmFyIHdyaXRlIHdvdWxkIHRyYW5zaXRpb24gdG8gYW5kIGlu c3RhbmNlIHZhcmlhYmxlIGluZGV4IGFyZSBhbGwgc3RvcmVkIGluIHRoZSBpbmxpbmUgY2FjaGUu IFRoZSBzaGFwZSBJRCBpcyB0aGUga2V5IHRvIHRoZSBjYWNoZS4KCkZvciBpbnN0YW5jZSB2YXJp YWJsZSByZWFkZXJzLCB0aGUgc2hhcGUgSUQgYW5kIGluc3RhbmNlIHZhcmlhYmxlIGluZGV4IGFy ZSBzdG9yZWQgaW4gdGhlIGlubGluZSBjYWNoZS4gIEFnYWluLCB0aGUgc2hhcGUgSUQgaXMgdGhl IGNhY2hlIGtleS4KCmBgYHJ1YnkKY2xhc3MgRm9vCiAgZGVmIGluaXRpYWxpemUKICAgIEBhID0g MSAjIElDIHNoYXBlX2lkOiAwLCBuZXh0IHNoYXBlOiAxLCBpdiBpbmRleCAwCiAgICBAYiA9IDEg IyBJQyBzaGFwZV9pZDogMSwgbmV4dCBzaGFwZTogMiwgaXYgaW5kZXggMQogIGVuZAogICAgCiAg ZGVmIGEKICAgIEBhICMgSUMgc2hhcGVfaWQ6IDIsIGl2IGluZGV4IDAKICBlbmQKZW5kCmBgYAoK IyMgUmF0aW9uYWxlCgpXZSB0aGluayB0aGF0IGFuIG9iamVjdCBzaGFwZSBpbXBsZW1lbnRhdGlv biB3aWxsIHNpbXBsaWZ5IGNhY2hlIGNoZWNrcywgaW5jcmVhc2UgaW5saW5lIGNhY2hlIGhpdHMs IGRlY3JlYXNlIHJ1bnRpbWUgY2hlY2tzLCBhbmQgZW5hYmxlIG90aGVyIHBvdGVudGlhbCBmdXR1 cmUgb3B0aW1pemF0aW9ucy4gVGhlc2UgYXJlIGFsbCBleHBsYWluZWQgYmVsb3cuIAoKIyMjIFNp bXBsaWZ5IGNhY2hpbmcKClRoZSBjdXJyZW50IGNhY2hlIGltcGxlbWVudGF0aW9uIGRlcGVuZHMg b24gdGhlIGNsYXNzIG9mIHRoZSByZWNlaXZlci4gU2luY2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGNs YXNzIGNhbiBiZSByZXVzZWQsIHRoZSBjdXJyZW50IGNhY2hlIGltcGxlbWVudGF0aW9uIGFsc28g ZGVwZW5kcyBvbiBhbiBpbmNyZW1lbnRpbmcgc2VyaWFsIG51bWJlciBzZXQgb24gdGhlIGNsYXNz ICh0aGUgY2xhc3Mgc2VyaWFsKS4gIFRoZSBzaGFwZSBpbXBsZW1lbnRhdGlvbiBoYXMgbm8gc3Vj aCBkZXBlbmRlbmN5LiBJdCBvbmx5IHJlcXVpcmVzIGNoZWNraW5nIHRoZSBzaGFwZSBJRCB0byBk ZXRlcm1pbmUgaWYgdGhlIGNhY2hlIGlzIHZhbGlkLgoKIyMjIENhY2hlIGhpdHMKCk9iamVjdHMg dGhhdCBzZXQgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBvcmRlciBjYW4gc2hhcmUgc2hhcGVzLiAg Rm9yIGV4YW1wbGU6CgpgYGBydWJ5CmNsYXNzIEhvZ2UKICBkZWYgaW5pdGlhbGl6ZQogICAgIyBD dXJyZW50bHkgdGhpcyBpbnN0YW5jZSBpcyB0aGUgcm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0g MSAjIFRyYW5zaXRpb25zIHRvIHRoZSBuZXh0IHNoYXBlIHZpYSBlZGdlIG5hbWVkIEBhCiAgICBA YiA9IDIgIyBUcmFuc2l0aW9ucyB0byBuZXh0IHNoYXBlIHZpYSBlZGdlIG5hbWVkIEBiCiAgZW5k CmVuZAoKY2xhc3MgRnVnYSA8IEhvZ2U7IGVuZAoKaG9nZSA9IEhvZ2UubmV3CmZ1Z2EgPSBGdWdh Lm5ldwpgYGAKCkluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgaW5zdGFuY2VzIGBob2dlYCBhbmQg YGZ1Z2FgIHdpbGwgc2hhcmUgdGhlIHNhbWUgc2hhcGUgSUQuICBUaGlzIG1lYW5zIGlubGluZSBj YWNoZXMgaW4gYGluaXRpYWxpemVgIHdpbGwgaGl0IGluIGJvdGggY2FzZXMuICBUaGlzIGNvbnRy YXN0cyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyB0aGUgY2xhc3Mg YXMgdGhlIGNhY2hlIGtleS4gIEluIG90aGVyIHdvcmRzLCB3aXRoIG9iamVjdCBzaGFwZXMgdGhl IGFib3ZlIGNvZGUgd2lsbCBoaXQgaW5saW5lIGNhY2hlcyB3aGVyZSB0aGUgY3VycmVudCBpbXBs ZW1lbnRhdGlvbiB3aWxsIG1pc3MuCgpJZiBwZXJmb3JtYW5jZSB0ZXN0aW5nIHJldmVhbHMgdGhh dCBjYWNoZSBoaXRzIGFyZSAqbm90KiBzdWJzdGFudGlhbGx5IGltcHJvdmVkLCB0aGVuIHdlIGNh biB1c2Ugc2hhcGVzIHRvIHJlY2xhaW0gbWVtb3J5IGZyb20gYFJCYXNpY2AuIFdlIGNhbiBhY2Nv bXBsaXNoIHRoaXMgYnkgZW5jb2RpbmcgdGhlIGNsYXNzIHdpdGhpbiB0aGUgc2hhcGUgdHJlZS4g VGhpcyB3aWxsIGhhdmUgYW4gZXF1aXZhbGVudCBjYWNoZSBoaXQgcmF0ZSB0byB0aGUgY3VycmVu dCBpbXBsZW1lbnRhdGlvbi4gT25jZSB0aGUgY2xhc3MgaXMgZW5jb2RlZCB3aXRoaW4gdGhlIHNo YXBlIHRyZWUsIHdlIGNhbiByZW1vdmUgdGhlIGNsYXNzIHBvaW50ZXIgZnJvbSBgUkJhc2ljYCBh bmQgZWl0aGVyIHJlY2xhaW0gdGhhdCBtZW1vcnkgb3IgZnJlZSBpdCBmb3IgYW5vdGhlciB1c2Uu CgojIyMgRGVjcmVhc2VzIHJ1bnRpbWUgY2hlY2tpbmcKCldlIGNhbiBlbmNvZGUgYXR0cmlidXRl cyB0aGF0IGFyZW4ndCBpbnN0YW5jZSB2YXJpYWJsZXMgaW50byBhbiBvYmplY3QncyBzaGFwZS4g Q3VycmVudGx5LCB3ZSBhbHNvIGluY2x1ZGUgZnJvemVuIHdpdGhpbiB0aGUgc2hhcGUuIFRoaXMg bWVhbnMgd2UgY2FuIGxpbWl0IGZyb3plbiBjaGVja3MgdG8gb25seSBjYWNoZSBtaXNzZXMuCgpG b3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlOgoKYGBgcnVieQpjbGFzcyBUb3RvCiAgZGVm IHNldF9hCiAgICBAYSA9IDEgIyBjYWNoZTogc2hhcGU6IDAsIG5leHQgc2hhcGU6IDEsIElWIGlk eDogMAogIGVuZAplbmQKCnRvdG8gPSBUb3RvLm5ldyAjIHNoYXBlIDAKdG90by5zZXRfYSAgICAg IyBzaGFwZSAxCgp0b3RvID0gVG90by5uZXcgIyBzaGFwZSAwCnRvdG8uZnJlZXplICAgICMgc2hh cGUgMgp0b3RvLnNldF9hICAgICAjIENhY2hlIG1pc3MsIEV4Y2VwdGlvbiEKYGBgCgohW10oaHR0 cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTk4ODU2MC8xNjc5MjAwMDEt YzRlNjMyNmItM2EzYy00ODNiLWE3OTctOWUwMjMxNzY0N2Q3LnN2ZykKCldpdGhvdXQgc2hhcGVz LCBhbGwgaW5zdGFuY2UgdmFyaWFibGUgc2V0cyByZXF1aXJlIGNoZWNraW5nIHRoZSBmcm96ZW4g c3RhdHVzIG9mIHRoZSBvYmplY3QuIFdpdGggc2hhcGVzLCB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sg dGhlIGZyb3plbiBzdGF0dXMgb24gY2FjaGUgbWlzc2VzLgoKV2UgY2FuIGFsc28gZWxpbWluYXRl IGVtYmVkZGVkIGFuZCBleHRlbmRlZCBjaGVja3Mgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIG9i amVjdCBzaGFwZXMuIEFueSBwYXJ0aWN1bGFyIHNoYXBlIHJlcHJlc2VudHMgYW4gb2JqZWN0IHRo YXQgaXMgX2VpdGhlcl8gZXh0ZW5kZWQgb3IgZW1iZWRkZWQuIEpJVHMgY2FuIHBvc3NpYmx5IHRh a2UgYWR2YW50YWdlIG9mIHRoaXMgZmFjdCBieSBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIG1hY2hp bmUgY29kZSBiYXNlZCBvbiB0aGUgc2hhcGVzLiAKICAgIAojIyMgQ2xhc3MgaW5zdGFuY2UgdmFy aWFibGVzIGNhbiBiZSBzdG9yZWQgaW4gYW4gYXJyYXkKCkN1cnJlbnRseSwgYFRfQ0xBU1NgIGFu ZCBgVF9NT0RVTEVgIGluc3RhbmNlcyBjYW5ub3QgdXNlIHRoZSBzYW1lIElWIGluZGV4IHRhYmxl IG9wdGltaXphdGlvbiB0aGF0IGBUX09CSkVDVGAgaW5zdGFuY2VzIHVzZS4gIFdlIHRoaW5rIHRo YXQgdGhlIG9iamVjdCBzaGFwZXMgdGVjaG5pcXVlIGNhbiBiZSBsZXZlcmFnZWQgYnkgY2xhc3Mg aW5zdGFuY2VzIHRvIHVzZSBhcnJheXMgZm9yIGNsYXNzIGluc3RhbmNlIHZhcmlhYmxlIHN0b3Jh Z2UgYW5kIG1heSBwb3NzaWJseSBsZWFkIHRvIGEgcmVkdWN0aW9uIGluIG1lbW9yeSB1c2FnZSAo dGhvdWdoIHdlIGhhdmUgeWV0IHRvIHRlc3QgdGhpcykuCgojIyBJbXBsZW1lbnRhdGlvbiBEZXRh aWxzCgpbSGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2plbW1haXNzcm9mZi9ydWJ5L2NvbW1pdC80 ZTk1ZDAxNjU0ZjI0Y2VmZjZjODMzMGNmNGU1YzdkYWM1MDQ3MzllKSBpcyBhIGxpbmsgdG8gb3Vy IGNvZGUgc28gZmFyLgoKQXMgbWVudGlvbmVkIGVhcmxpZXIsIHNoYXBlIG9iamVjdHMgZm9ybSBh IHRyZWUgZGF0YSBzdHJ1Y3R1cmUuICBJbiBvcmRlciB0byBsb29rIHVwIHRoZSBzaGFwZSBxdWlj a2x5LCB3ZSBhbHNvIHN0b3JlIHRoZSBzaGFwZXMgaW4gYSB3ZWFrIGFycmF5IHRoYXQgaXMgc3Rv cmVkIG9uIHRoZSBWTS4gIFRoZSBJRCBvZiB0aGUgc2hhcGUgaXMgdGhlIGluZGV4IGluIHRvIHRo ZSBhcnJheSwgYW5kIHRoZSBJRCBpcyBzdG9yZWQgb24gdGhlIG9iamVjdC4KCkZvciBgVF9PQkpF Q1RgIG9iamVjdHMsIHdlIHN0b3JlIHRoZSBzaGFwZSBJRCBpbiB0aGUgb2JqZWN0J3MgaGVhZGVy LiBPbiA2NCBiaXQgc3lzdGVtcywgdGhlIHVwcGVyIDMyIGJpdHMgYXJlIHVzZWQgYnkgUmFjdG9y cy4gIFdlIHdhbnQgb2JqZWN0IHNoYXBlcyB0byBiZSBlbmFibGVkIG9uIDMyIGJpdCBzeXN0ZW1z IGFuZCA2NCBiaXQgc3lzdGVtcyBzbyB0aGF0IGxpbWl0cyB1cyB0byB0aGUgYm90dG9tIDMyIGJp dHMgb2YgdGhlIE9iamVjdCBoZWFkZXIuICBUaGUgdG9wIDIwIGJpdHMgZm9yIGBUX09CSkVDVGAg b2JqZWN0cyB3YXMgdW51c2VkLCBzbyB3ZSB1c2VkIHRoZSB0b3AgMTYgYml0cyBmb3IgdGhlIHNo YXBlIGlkLiAgV2UgY2hvc2UgdGhlIHRvcCAxNiBiaXRzIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMg dG8gdXNlIGB1aW50MTZfdGAgYW5kIG1hc2tpbmcgdGhlIGhlYWRlciBiaXRzIGlzIGVhc2llci4K ClRoaXMgaW1wbGVtZW50YXRpb24gZGV0YWlsIGxpbWl0cyB1cyB0byB+NjVrIHNoYXBlcy4gV2Ug bWVhc3VyZWQgdGhlIG51bWJlciBvZiBzaGFwZXMgdXNlZCBvbiBhIHNpbXBsZSBbRGlzY291cnNl XShodHRwczovL2dpdGh1Yi5jb20vZGlzY291cnNlL2Rpc2NvdXJzZSkgYXBwbGljYXRpb24gKH4z LjVrKSwgW1JhaWxzQmVuY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9rMGt1YnVuL3JhaWxzYmVuY2gp ICh+NGspLCBhbmQgU2hvcGlmeSdzIG1vbm9saXRoJ3MgdGVzdCBzdWl0ZSAofjQwaykuIEFjY29y ZGluZ2x5LCB3ZSBkZWNpZGVkIHRvIGltcGxlbWVudCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gb2Jq ZWN0IHNoYXBlcyBzbyB3ZSBjYW4gcmVjeWNsZSBzaGFwZSBJRHMgd2hpY2ggYXJlIG5vIGxvbmdl ciBpbiB1c2UuICBXZSBhcmUgY3VycmVudGx5IHdvcmtpbmcgb24gc2hhcGUgR0MuCgpFdmVuIHRo b3VnaCBpdCdzIHVubGlrZWx5LCBpdCdzIHN0aWxsIHBvc3NpYmxlIGZvciBhbiBhcHBsaWNhdGlv biB0byBydW4gb3V0IG9mIHNoYXBlcy4gT25jZSBhbGwgc2hhcGUgSURzIGFyZSBpbiB1c2UsIGFu eSBvYmplY3RzIHRoYXQgbmVlZCBuZXcgc2hhcGUgSURzIHdpbGwgbmV2ZXIgaGl0IG9uIGlubGlu ZSBjYWNoZXMuCgojIyBFdmFsdWF0aW9uCgpXZSBoYXZlIHNvIGZhciB0ZXN0ZWQgdGhpcyBicmFu Y2ggd2l0aCBbRGlzY291cnNlXShodHRwczovL2dpdGh1Yi5jb20vZGlzY291cnNlL2Rpc2NvdXJz ZSksIFtSYWlsc0JlbmNoXShodHRwczovL2dpdGh1Yi5jb20vazBrdWJ1bi9yYWlsc2JlbmNoKSBh bmQgU2hvcGlmeSdzIG1vbm9saXRoLiBXZSBwbGFuIHRvIHRlc3QgdGhpcyBicmFuY2ggbW9yZSBi cm9hZGx5IGFnYWluc3Qgc2V2ZXJhbCBvcGVuIHNvdXJjZSBSdWJ5IGFuZCBSYWlscyBhcHBsaWNh dGlvbnMuIAoKQmVmb3JlIHdlIGNvbnNpZGVyIHRoaXMgYnJhbmNoIHRvIGJlIHJlYWR5IGZvciBm b3JtYWwgcmV2aWV3LCB3ZSB3YW50IHRoZSBydW50aW1lIHBlcmZvcm1hbmNlIGFuZCBtZW1vcnkg dXNhZ2Ugb2YgdGhlc2UgYmVuY2htYXJrcyB0byBiZSBlcXVpdmFsZW50IG9yIGJldHRlciB0aGFu IGl0IGlzIGN1cnJlbnRseS4gSW4gb3VyIG9waW5pb24sIGV2ZW4gd2l0aCBlcXVpdmFsZW50IHJ1 bnRpbWUgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSB1c2FnZSwgdGhlIGZ1dHVyZSBiZW5lZml0cyBv ZiB0aGlzIGFwcHJvYWNoIG1ha2UgdGhlIGNoYW5nZSBzZWVtIHdvcnRod2hpbGUuCgojIyBGZWVk YmFjawoKSWYgeW91IGhhdmUgYW55IGZlZWRiYWNrLCBjb21tZW50cywgb3IgcXVlc3Rpb25zLCBw bGVhc2UgbGV0IHVzIGtub3cgYW5kIHdlJ2xsIGRvIG91ciBiZXN0IHRvIGFkZHJlc3MgaXQuIFRo YW5rIHlvdSEKCi0tLUZpbGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kb2JqZWN0 LXNoYXBlcy5wYXRjaCAoMTgwIEtCKQoKCi0tIApodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8K