[#122258] [Ruby Misc#21367] Remove link to ruby-doc.org from www.ruby-lang.org/en/documentation/ — "p8 (Petrik de Heus) via ruby-core" <ruby-core@...>
Issue #21367 has been reported by p8 (Petrik de Heus).
11 messages
2025/05/23
[ruby-core:122031] [Ruby Feature#21311] Namespace on read (revised)
From:
"jhawthorn (John Hawthorn) via ruby-core" <ruby-core@...>
Date:
2025-05-12 23:50:17 UTC
List:
ruby-core #122031
SXNzdWUgIzIxMzExIGhhcyBiZWVuIHVwZGF0ZWQgYnkgamhhd3Rob3JuIChKb2huIEhhd3Rob3Ju KS4NCg0KDQpTb3JyeSwgSSBkaWRuJ3QgZ2V0IGEgY2hhbmNlIHRvIHJldmlldyB0aGlzIGJlZm9y ZSBpdCB3YXMgbWVyZ2VkLiBJIHJlYWxseSBkb24ndCB0aGluayBhZGRpbmcgdGhpcyBsZXZlbCBv ZiBpbmRpcmVjdGlvbiB0byBSQ0xBU1NfRVhUIGFjY2VzcyBhbmQgc2ltaWxhciBpcyBhIGdvb2Qg aWRlYS4NCg0KTGV0J3MgbG9vayBhdCBgcmJfY2xhc3NfZ2V0X3N1cGVyY2xhc3NgIGFzIGFuIGV4 YW1wbGUuIFRoaXMgc2hvdWxkIGJlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgY29kZSBpbnNlcnRl ZCBldmVyeSB0aW1lIGBSQ0xBU1NfU1VQRVJgIGlzIHVzZWQuIEhlcmUncyBob3cgaXQgbG9va3Mg YmVmb3JlIG5hbWVzcGFjZXMgd2VyZSBtZXJnZWQ6DQoNCmBgYA0K4p2vIGxsdm0tb2JqZHVtcCAt ZCAtLXN5bWJvbGl6ZS1vcGVyYW5kcyAtLXg4Ni1hc20tc3ludGF4PWludGVsIC0tbm8tc2hvdy1y YXctaW5zbiAtLW5vLWxlYWRpbmctYWRkciAtLWRpc2Fzc2VtYmxlLXN5bWJvbHM9cmJfY2xhc3Nf Z2V0X3N1cGVyY2xhc3MgLVMgLi9taW5pcnVieQ0KDQouL21pbmlydWJ5OiAgICAgZmlsZSBmb3Jt YXQgZWxmNjQteDg2LTY0DQoNCkRpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gLnRleHQ6DQoNCjxyYl9j bGFzc19nZXRfc3VwZXJjbGFzcz46DQo7ICAgICByZXR1cm4gUkNMQVNTKGtsYXNzKS0+c3VwZXI7 DQogICAgICAgICAgICAgICAgbW92ICAgICByYXgsIHF3b3JkIHB0ciBbcmRpICsgMHgxMF0NCjsg fQ0KICAgICAgICAgICAgICAgIHJldA0KYGBgDQoNClRoaXMgaXMgaG93IHNvbWV0aGluZyB0aGlz IGNvbW1vbiBpbiB0aGUgVk0gc2hvdWxkIGlkZWFsbHkgbG9vay4gSnVzdCBvbmUgaW5zdHJ1Y3Rp b24gKGEgY291cGxlIHdvdWxkIGJlIGZpbmUpIHRvIHJlYWQgdGhlIGRhdGEgd2UgbmVlZCBhbmQg cmV0dXJuaW5nIGl0LiBObyBicmFuY2hpbmcsIG5vIGxvY2tpbmcsIGVhc2lseSBpbmxpbmVhYmxl IG9yIHRhdWdodCB0byB0aGUgSklUIGNvbXBpbGVyLg0KDQpIZXJlJ3MgaG93IGByYl9jbGFzc19n ZXRfc3VwZXJjbGFzc2AgbG9va3Mgbm93Og0KDQoNCmBgYA0K4p2vIGxsdm0tb2JqZHVtcCAtZCAt LXN5bWJvbGl6ZS1vcGVyYW5kcyAtLXg4Ni1hc20tc3ludGF4PWludGVsIC0tbm8tc2hvdy1yYXct aW5zbiAtLW5vLWxlYWRpbmctYWRkciAtLWRpc2Fzc2VtYmxlLXN5bWJvbHM9cmJfY2xhc3NfZ2V0 X3N1cGVyY2xhc3MgLVMgLi9taW5pcnVieQ0KDQouL21pbmlydWJ5OiAgICAgZmlsZSBmb3JtYXQg ZWxmNjQteDg2LTY0DQoNCkRpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gLnRleHQ6DQoNCjxyYl9jbGFz c19nZXRfc3VwZXJjbGFzcz46DQo7IHsNCiAgICAgICAgICAgICAgICBwdXNoICAgIHJieA0KICAg ICAgICAgICAgICAgIHN1YiAgICAgcnNwLCAweDEwDQogICAgICAgICAgICAgICAgbW92ICAgICBy YngsIHF3b3JkIHB0ciBmczpbMHgyOF0NCiAgICAgICAgICAgICAgICBtb3YgICAgIHF3b3JkIHB0 ciBbcnNwICsgMHg4XSwgcmJ4DQogICAgICAgICAgICAgICAgbW92ICAgICByYngsIHJkaQ0KOyAg ICAgaWYgKFJDTEFTU19QUklNRV9DTEFTU0VYVF9SRUFEQUJMRV9QKG9iaikpIHsNCiAgICAgICAg ICAgICAgICBjbXAgICAgIHF3b3JkIHB0ciBbcmRpICsgMHgxMF0sIDB4MA0KICAgICAgICAgICAg ICAgIGplICAgICAgIDxMMD4NCjsgICAgIG5zID0gcmJfY3VycmVudF9uYW1lc3BhY2UoKTsNCiAg ICAgICAgICAgICAgICBjYWxsICAgICA8cmJfY3VycmVudF9uYW1lc3BhY2U+DQo7ICAgICBpZiAo IW5zIHx8IE5BTUVTUEFDRV9CVUlMVElOX1AobnMpKSB7DQogICAgICAgICAgICAgICAgdGVzdCAg ICByYXgsIHJheA0KICAgICAgICAgICAgICAgIGplICAgICAgIDxMMD4NCiAgICAgICAgICAgICAg ICBjbXAgICAgIGJ5dGUgcHRyIFtyYXggKyAweDc4XSwgMHgwDQogICAgICAgICAgICAgICAgamUg ICAgICAgPEwxPg0KPEwwPjoNCjsgICAgIHJldHVybiBSQ0xBU1NfRVhUX1BSSU1FKG9iaik7DQog ICAgICAgICAgICAgICAgbGVhICAgICByYXgsIFtyYnggKyAweDE4XQ0KPEwzPjoNCjsgICAgIHJl dHVybiBSQ0xBU1NfU1VQRVIoa2xhc3MpOw0KICAgICAgICAgICAgICAgIG1vdiAgICAgcmF4LCBx d29yZCBwdHIgW3JheCArIDB4OF0NCjsgfQ0KICAgICAgICAgICAgICAgIG1vdiAgICAgcmR4LCBx d29yZCBwdHIgW3JzcCArIDB4OF0NCiAgICAgICAgICAgICAgICBzdWIgICAgIHJkeCwgcXdvcmQg cHRyIGZzOlsweDI4XQ0KICAgICAgICAgICAgICAgIGpuZSAgICAgIDxMMj4NCiAgICAgICAgICAg ICAgICBhZGQgICAgIHJzcCwgMHgxMA0KICAgICAgICAgICAgICAgIHBvcCAgICAgcmJ4DQogICAg ICAgICAgICAgICAgcmV0DQogICAgICAgICAgICAgICAgbm9wICAgICBkd29yZCBwdHIgW3JheCAr IHJheF0NCjxMMT46DQo7ICAgICBzdF90YWJsZSAqY2xhc3NleHRfdGJsID0gUkNMQVNTX0NMQVNT RVhUX1RCTChvYmopOw0KICAgICAgICAgICAgICAgIG1vdiAgICAgcmRpLCBxd29yZCBwdHIgW3Ji eCArIDB4MTBdDQo7ICAgICBpZiAoY2xhc3NleHRfdGJsKSB7DQogICAgICAgICAgICAgICAgdGVz dCAgICByZGksIHJkaQ0KICAgICAgICAgICAgICAgIGplICAgICAgIDxMMD4NCjsgICAgICAgICBp ZiAocmJfc3RfbG9va3VwKGNsYXNzZXh0X3RibCwgKHN0X2RhdGFfdClucy0+bnNfb2JqZWN0LCAm Y2xhc3NleHRfcHRyKSkgew0KICAgICAgICAgICAgICAgIG1vdiAgICAgcnNpLCBxd29yZCBwdHIg W3JheF0NCiAgICAgICAgICAgICAgICBtb3YgICAgIHJkeCwgcnNwDQogICAgICAgICAgICAgICAg Y2FsbCAgICAgPHJiX3N0X2xvb2t1cD4NCiAgICAgICAgICAgICAgICB0ZXN0ICAgIGVheCwgZWF4 DQogICAgICAgICAgICAgICAgamUgICAgICAgPEwwPg0KOyAgICAgICAgICAgICByZXR1cm4gKHJi X2NsYXNzZXh0X3QgKiljbGFzc2V4dF9wdHI7DQogICAgICAgICAgICAgICAgbW92ICAgICByYXgs IHF3b3JkIHB0ciBbcnNwXQ0KOyAgICAgaWYgKGV4dCkNCiAgICAgICAgICAgICAgICB0ZXN0ICAg IHJheCwgcmF4DQogICAgICAgICAgICAgICAgam5lICAgICAgPEwzPg0KICAgICAgICAgICAgICAg IGptcCAgICAgIDxMMD4NCjxMMj46DQo7IH0NCiAgICAgICAgICAgICAgICBjYWxsICAgICA8X19z dGFja19jaGtfZmFpbEBwbHQ+DQpgYGANCg0KSXQncyB0ZW1wdGluZyB0byBhc3N1bWUgdGhhdCBi ZWNhdXNlIHdlJ3JlIG5vdCB0YWtpbmcgdGhlIGJyYW5jaGVzIHdpdGggdGhlIG1vcmUgZXhwZW5z aXZlIG9wZXJhdGlvbiB0aGVyZSBpc24ndCBhIGxvdCBvZiBjb3N0LCBob3dldmVyIGJlY2F1c2Ug d2UgbWlnaHQgYmUgY2FsbGluZyBhbGwgb2YgdGhlc2Ugb3RoZXIgbWV0aG9kcywgdGhlIEMgY29t cGlsZXIgaGFzIHRvIGJlIHBlc3NpbWlzdGljIGFuZCBnZW5lcmF0ZSBjb2RlIGFzc3VtaW5nIHRo ZSBtZXRob2QgY2FsbHMgd2VyZSB0YWtlbiBlYWNoIHRpbWUuIFNvIG5vdCBvbmx5IGlzIG91ciBv bmUgaW5zdHJ1Y3Rpb24gbm93IDE0IGluc3RydWN0aW9ucyB3aXRoIHR3byBjb25kaXRpb25hbCBi cmFuY2hlcywgYW55IG9mIHRoZSBodW5kcmVkcyBvZiBsb2NhdGlvbnMgdGhpcyBpcyBpbmxpbmVk LCB0aGUgc3Vycm91bmRpbmcgY29kZSB0aGUgQyBjb21waWxlciBnZW5lcmF0ZXMgd2lsbCBiZSB3 b3JzZS4NCg0KSSBkb24ndCBzaGFyZSB0aGUgb3B0aW1pc20gdGhhdCB0aGlzIGNhbiBiZSBtYWRl IGVmZmljaWVudCB3aXRoIG1vcmUgd29yay4gSW4gZmFjdCBJIGV4cGVjdCB0aGlzIHRvIGJlY29t ZSBldmVuIHNsb3dlciBhcyBidWdzIGFyZSBmaXhlZC4gRm9yIGV4YW1wbGUgZXZlbiB0aGlzIGh1 Z2UgZGlzYXNzZW1ibHkgaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBbZG9lcyBub3QgaG9sZCB0 aGUgVk0gbG9jayB3aGVyZSBpdCBzaG91bGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1Ynkv cHVsbC8xMzIyNiNkaXNjdXNzaW9uX3IyMDg1MzI5NDEyKSBhbmQgd2lsbCBhbG1vc3QgY2VydGFp bmx5IHNlZ2ZhdWx0IHVuZGVyIFJhY3RvcnMuDQoNCkkgcmVhbGx5IHRoaW5rIHdlIG5lZWQgYW4g aW1wbGVtZW50YXRpb24gd2hlcmUgVF9DTEFTUyBhZ2FpbiByZWZlcnMgdG8gYSB1bmlxdWUgaW1w bGVtZW50YXRpb24gKHJhdGhlciB0aGFuIG5lZWRpbmcgdG8gbG9vayB1cCB0aGUgaW1wbGVtZW50 YXRpb24gZm9yIHRoZSBjdXJyZW50IG5hbWVzcGFjZSksIGFuZCBSQ0xBU1NfRVhUIGlzIG9uY2Ug YWdhaW5zdCBqdXN0IHBvaW50ZXIgYXJpdGhtZXRpYy4gT3RoZXJ3aXNlIEkgZG9uJ3Qgc2VlIHBv c3NpYmxlIGhvdyB3aXRoIHRoaXMgaW1wbGVtZW50YXRpb24gaXQncyBwb3NzaWJsZSB0byBoYXZl IGFuIGVmZmljaWVudCBKSVQgY29tcGlsZXIgKHVubGVzcyBpdCBkaXNhYmxlcyBpdHNlbGYgd2hl biB0aGVyZSBhcmUgbmFtZXNwYWNlcyksIGFuIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBS YWN0b3JzICh3ZSBjYW4ndCB3cml0ZSBhbnkgbG9jay1mcmVlIGFjY2VzcyB0byBjbGFzcy1yZWxh dGVkIGNvbnRlbnRzLCBiZWNhdXNlIGNsYXNzZXMgY2Fubm90IGJlIGFjY2Vzc2VkIHdpdGhvdXQg YSBsb2NrIGFuZCBoYXNoIGxvb2t1cCksIG9yIGV2ZW4gYSBmYXN0IGludGVycHJldGVyICh0aGUg NSUgc2xvd2Rvd24gd2UgYWxyZWFkeSBzZWUgaGVyZSkuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIxMzExOiBOYW1lc3BhY2Ugb24gcmVhZCAo cmV2aXNlZCkNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTMxMSNjaGFuZ2Ut MTEzMTgxDQoNCiogQXV0aG9yOiB0YWdvbW9yaXMgKFNhdG9zaGkgVGFnb21vcmkpDQoqIFN0YXR1 czogQXNzaWduZWQNCiogQXNzaWduZWU6IHRhZ29tb3JpcyAoU2F0b3NoaSBUYWdvbW9yaSkNCiog VGFyZ2V0IHZlcnNpb246IDMuNQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KVGhpcyByZXBsYWNlcyAjMTk3NDQgDQoNCiMjIENvbmNlcHQNCg0KVGhpcyBwcm9wb3Nl cyBhIG5ldyBmZWF0dXJlIHRvIGRlZmluZSB2aXJ0dWFsIHRvcC1sZXZlbCBuYW1lc3BhY2VzIGlu IFJ1YnkuIFRob3NlIG5hbWVzcGFjZXMgY2FuIHJlcXVpcmUvbG9hZCBsaWJyYXJpZXMgKGVpdGhl ciAucmIgb3IgbmF0aXZlIGV4dGVuc2lvbikgc2VwYXJhdGVseSBmcm9tIG90aGVyIG5hbWVzcGFj ZXMuIERlcGVuZGVuY2llcyBvZiByZXF1aXJlZC9sb2FkZWQgbGlicmFyaWVzIGFyZSBhbHNvIHJl cXVpcmVkL2xvYWRlZCBpbiB0aGUgbmFtZXNwYWNlLg0KDQpUaGlzIGZlYXR1cmUgd2lsbCBiZSBk aXNhYmxlZCBieSBkZWZhdWx0IGF0IGZpcnN0LCBhbmQgd2lsbCBiZSBlbmFibGVkIGJ5IGFuIGVu diB2YXJpYWJsZSBgUlVCWV9OQU1FU1BBQ0U9MWAgYXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUu DQooSXQgY291bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0IGluIHRoZSBmdXR1cmUgcG9zc2libHku KQ0KDQojIyMgIm9uIHJlYWQiIGFwcHJvYWNoDQoNClRoZSAib24gd3JpdGUiIGFwcHJvYWNoIGhl cmUgaXMgdGhlIGRlc2lnbiB0byBkZWZpbmUgbmFtZXNwYWNlcyBvbiB0aGUgbG9hZGVkIHNpZGUu IEZvciBleGFtcGxlLCBKYXZhIHBhY2thZ2VzIGFyZSBkZWZpbmVkIGluIHRoZSAuamF2YSBmaWxl cyBhbmQgaXQgaXMgcmVxdWlyZWQgdG8gc2VwYXJhdGUgbmFtZXNwYWNlcyBmcm9tIGVhY2ggb3Ro ZXIuIEl0IGNhbiBiZSBpbXBsZW1lbnRlZCB2ZXJ5IGVhc2lseSwgYnV0IGl0IHJlcXVpcmVzIGFs bCBsaWJyYXJpZXMgdG8gYmUgdXBkYXRlZCB3aXRoIHRoZSBwYWNrYWdlIGRlY2xhcmF0aW9uLiAo SW4gbXkgb3BpbmlvbiwgaXQncyBhbG1vc3QgaW1wb3NzaWJsZSBpbiB0aGUgUnVieSBlY29zeXN0 ZW0uKQ0KDQpUaGUgIm9uIHJlYWQiIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBuYW1lc3BhY2VzIGFu ZCB0aGVuIHJlcXVpcmUvbG9hZCBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcyBpbiB0aGVtLiBQ cm9ncmFtbWVycyBjYW4gY29udHJvbCBuYW1lc3BhY2Ugc2VwYXJhdGlvbiBhdCB0aGUgInJlYWQi IHRpbWUuIFNvLCB3ZSBjYW4gaW50cm9kdWNlIHRoZSBuYW1lc3BhY2Ugc2VwYXJhdGlvbiBpbmNy ZW1lbnRhbGx5Lg0KDQojIyBNb3RpdmF0aW9uDQoNClRoZSAibmFtZXNwYWNlIG9uIHJlYWQiIGNh biBzb2x2ZSB0aGUgMiBwcm9ibGVtcyBiZWxvdywgYW5kIGNhbiBtYWtlIGEgcGF0aCB0byBzb2x2 ZSBhbm90aGVyIHByb2JsZW06DQoNCiogQXZvaWRpbmcgbmFtZSBjb25mbGljdHMgYmV0d2VlbiBs aWJyYXJpZXMNCiAgKiBBcHBsaWNhdGlvbnMgY2FuIHJlcXVpcmUgdHdvIGRpZmZlcmVudCBsaWJy YXJpZXMgc2FmZWx5IHdoaWNoIHVzZSB0aGUgc2FtZSBtb2R1bGUgbmFtZS4NCiogQXZvaWRpbmcg dW5leHBlY3RlZCBnbG9iYWxseSBzaGFyZWQgbW9kdWxlcy9vYmplY3RzDQogICogQXBwbGljYXRp b25zIGNhbiBtYWtlIGFuIGluZGVwZW5kZW50L3Vuc2hhcmVkIG1vZHVsZSBpbnN0YW5jZS4NCiog TXVsdGlwbGUgdmVyc2lvbnMgb2YgZ2VtcyBjYW4gYmUgcmVxdWlyZWQNCiAgKiBBcHBsaWNhdGlv biBkZXZlbG9wZXJzIHdpbGwgaGF2ZSBmZXdlciB2ZXJzaW9uIGNvbmZsaWN0cyBiZXR3ZWVuIGdl bSBkZXBlbmRlbmNpZXMgaWYgcnVieWdlbXMvYnVuZGxlciB3aWxsIHN1cHBvcnQgdGhlIG5hbWVz cGFjZSBvbiByZWFkLiAoU3VwcG9ydCBmcm9tIFJ1YnlHZW1zL0J1bmRsZXIgYW5kL29yIG90aGVy IHBhY2thZ2luZyBzeXN0ZW1zIHdpbGwgYmUgbmVlZGVkKQ0KDQpGb3IgdGhlIG1vdGl2YXRpb24g ZGV0YWlscywgc2VlIFtGZWF0dXJlICMxOTc0NF0uDQoNCiMjIEhvdyB3ZSBjYW4gdXNlIE5hbWVz cGFjZQ0KDQpgYGBydWJ5DQojIGFwcDEucmINClBPUlQgPSAyMDQ4DQpjbGFzcyBBcHANCiAgZGVm IHNlbGYucG9ydCA9IDo6UE9SVA0KICBkZWYgdmFsID0gUE9SVC50b19zDQplbmQNCg0KcCBBcHAu cG9ydCAjIDIwNDgNCg0KIyBhcHAyLnJiDQpjbGFzcyBOdW1iZXINCiAgZGVmIGRvdWJsZSA9IHNl bGYgKiAyDQplbmQNCg0KUE9SVCA9IDIwNDguZG91YmxlDQpjbGFzcyBBcHANCiAgZGVmIHNlbGYu cG9ydCA9IDo6UE9SVA0KICBkZWYgdmFsID0gUE9SVC5kb3VibGUudG9fcw0KZW5kDQoNCnAgQXBw LnBvcnQgIyA0MDk2DQoNCiMgbWFpbi5yYiAtIGV4ZWN1dGVkIGFzIGBydWJ5IG1haW4ucmJgDQpu czEgPSBOYW1lc3BhY2UubmV3DQpuczEucmVxdWlyZSgnLi9hcHAxJykgIyAyMDQ4DQpuczIgPSBO YW1lc3BhY2UubmV3DQpuczIucmVxdWlyZSgnLi9hcHAyJykgIyA0MDk2DQoNClBPUlQgPSA4MDgw DQpjbGFzcyBBcHANCiAgZGVmIHNlbGYucG9ydCA9IDo6UE9SVA0KICBkZWYgdmFsID0gUE9SVC50 b19zDQplbmQNCg0KcCBBcHAucG9ydCAjIDgwODANCnAgQXBwLm5ldy52YWwgIyAiODA4MCINCg0K cCBuczE6OkFwcC5wb3J0ICMgMjA0OA0KcCBuczE6OkFwcC5uZXcudmFsICMgIjIwNDgiDQoNCnAg bnMyOjpBcHAucG9ydCAjIDQwOTYNCnAgbnMyOjpBcHAubmV3LnZhbCAjICI4MTkyIg0KDQoxLmRv dWJsZSAjIE5vTWV0aG9kRXJyb3INCmBgYA0KDQojIyBOYW1lc3BhY2Ugc3BlY2lmaWNhdGlvbg0K DQojIyMgVHlwZXMgb2YgbmFtZXNwYWNlcw0KDQpUaGVyZSBhcmUgdHdvIG5hbWVzcGFjZSB0eXBl cywgInJvb3QiIGFuZCAidXNlciIgbmFtZXNwYWNlLiAiUm9vdCIgbmFtZXNwYWNlIGV4aXN0cyBz b2xlbHkgaW4gYSBSdWJ5IHByb2Nlc3MsIGFuZCAidXNlciIgbmFtZXNwYWNlcyBjYW4gYmUgY3Jl YXRlZCBhcyBtYW55IGFzIFJ1YnkgcHJvZ3JhbW1lcnMgd2FudC4NCg0KIyMjIFJvb3QgbmFtZXNw YWNlDQoNClJvb3QgbmFtZXNwYWNlIGlzIGEgdW5pcXVlIG5hbWVzcGFjZSB0byBiZSBkZWZpbmVk IHdoZW4gYSBSdWJ5IHByb2Nlc3Mgc3RhcnRzLiBJdCBvbmx5IGNvbnRhaW5zIGJ1aWx0LWluIGNs YXNzZXMvbW9kdWxlcy9jb25zdGFudHMsIHdoaWNoIGFyZSBhdmFpbGFibGUgd2l0aG91dCBhbnkg YHJlcXVpcmVgIGNhbGxzLCBpbmNsdWRpbmcgUnVieUdlbXMgaXRzZWxmICh3aGVuIGAtLWRpc2Fi bGUtZ2Vtc2AgaXMgbm90IHNwZWNpZmllZCkuDQoNCkF0IGhlcmUsICJidWlsdGluIiBjbGFzc2Vz L21vZHVsZXMgYXJlIGNsYXNzZXMvbW9kdWxlcyBhY2Nlc3NpYmxlIHdoZW4gdXNlcnMnIHNjcmlw dCBldmFsdWF0aW9uIHN0YXJ0cywgd2l0aG91dCBhbnkgcmVxdWlyZS9sb2FkIGNhbGxzLg0KDQoj IyMgVXNlciBuYW1lc3BhY2UNCg0KVXNlciBuYW1lc3BhY2UgaXMgYSBuYW1lc3BhY2UgdG8gcnVu IHVzZXJzJyBSdWJ5IHNjcmlwdHMuIFRoZSAibWFpbiIgbmFtZXNwYWNlIGlzIHRoZSBuYW1lc3Bh Y2UgdG8gcnVuIHRoZSB1c2VyJ3MgYC5yYmAgc2NyaXB0IHNwZWNpZmllZCBieSB0aGUgYHJ1Ynlg IGNvbW1hbmQtbGluZSBhcmd1bWVudC4gT3RoZXIgdXNlciBuYW1lc3BhY2VzICgib3B0aW9uYWwi IG5hbWVzcGFjZXMpIGNhbiBiZSBjcmVhdGVkIGJ5IGBOYW1lc3BhY2UubmV3YCBjYWxsLg0KDQpJ biB1c2VyIG5hbWVzcGFjZSAoYm90aCBtYWluIGFuZCBvcHRpb25hbCBuYW1lc3BhY2VzKSwgYnVp bHQtaW4gY2xhc3MvbW9kdWxlIGRlZmluaXRpb25zIGFyZSBjb3BpZWQgZnJvbSB0aGUgcm9vdCBu YW1lc3BhY2UsIGFuZCBvdGhlciBuZXcgY2xhc3Nlcy9tb2R1bGVzIGFyZSBkZWZpbmVkIGluIHRo ZSBuYW1lc3BhY2UsIHNlcGFyYXRlbHkgZnJvbSBvdGhlciAocm9vdC91c2VyKSBuYW1lc3BhY2Vz Lg0KVGhlIG5ld2x5IGRlZmluZWQgY2xhc3Nlcy9tb2R1bGVzIGFyZSB0b3AtbGV2ZWwgY2xhc3Nl cy9tb2R1bGVzIGluIHRoZSBtYWluIG5hbWVzcGFjZSBsaWtlIGBBcHBgLCBidXQgaW4gb3B0aW9u YWwgbmFtZXNwYWNlcywgY2xhc3Nlcy9tb2R1bGVzIGFyZSBkZWZpbmVkIHVuZGVyIHRoZSBuYW1l c3BhY2UgKHN1YmNsYXNzIG9mIE1vZHVsZSksIGxpa2UgYG5zOjpBcHBgLg0KDQpJbiB0aGF0IG5h bWVzcGFjZSBgbnNgLCBgbnM6OkFwcGAgaXMgYWNjZXNzaWJsZSBhcyBgQXBwYCAob3IgYDo6QXBw YCkuIFRoZXJlIGlzIG5vIHdheSB0byBhY2Nlc3MgYEFwcGAgaW4gdGhlIG1haW4gbmFtZXNwYWNl IGZyb20gdGhlIGNvZGUgaW4gdGhlIGRpZmZlcmVudCBuYW1lc3BhY2UgYG5zYC4NCg0KIyMjIENv bnN0YW50cywgY2xhc3MgdmFyaWFibGVzIGFuZCBnbG9iYWwgdmFyaWFibGVzDQoNCkNvbnN0YW50 cywgQ2xhc3MgdmFyaWFibGVzIG9mIGJ1aWx0LWluIGNsYXNzZXMgYW5kIGdsb2JhbCB2YXJpYWJs ZXMgYXJlIGFsc28gc2VwYXJhdGVkIGJ5IG5hbWVzcGFjZS4gVmFsdWVzIHNldCB0byBjbGFzcy9n bG9iYWwgdmFyaWFibGVzIGluIGEgbmFtZXNwYWNlIGFyZSBpbnZpc2libGUgaW4gb3RoZXIgbmFt ZXNwYWNlcy4NCg0KIyMjIE1ldGhvZHMgYW5kIHByb2NzDQoNCk1ldGhvZHMgZGVmaW5lZCBpbiBh IG5hbWVzcGFjZSBydW4gd2l0aCB0aGUgZGVmaW5lZCBuYW1lc3BhY2UsIGV2ZW4gd2hlbiBjYWxs ZWQgZnJvbSBvdGhlciBuYW1lc3BhY2VzLg0KUHJvY3MgY3JlYXRlZCBpbiBhIG5hbWVzcGFjZSBy dW4gd2l0aCB0aGUgZGVmaW5lZCBuYW1lc3BhY2UgdG9vLg0KDQojIyMgRHluYW1pYyBsaW5rIGxp YnJhcmllcw0KDQpEeW5hbWljIGxpbmsgbGlicmFyaWVzICh0eXBpY2FsbHkgLnNvIGZpbGVzKSBh cmUgYWxzbyBsb2FkZWQgaW4gbmFtZXNwYWNlcyBhcyB3ZWxsIGFzIC5yYiBmaWxlcy4NCg0KIyMj IE9wZW4gY2xhc3MgKENoYW5nZXMgb24gYnVpbHQtaW4gY2xhc3NlcykNCg0KSW4gdXNlciBuYW1l c3BhY2VzLCBidWlsdC1pbiBjbGFzcyBkZWZpbml0aW9ucyBjYW4gYmUgbW9kaWZpZWQuIEJ1dCB0 aG9zZSBvcGVyYXRpb25zIGFyZSBwcm9jZXNzZWQgYXMgY29weS1vbi13cml0ZSBvZiBjbGFzcyBk ZWZpbml0aW9uIGZyb20gdGhlIHJvb3QgbmFtZXNwYWNlLCBhbmQgdGhlIGNoYW5nZWQgZGVmaW5p dGlvbnMgYXJlIHZpc2libGUgb25seSBpbiB0aGUgKHVzZXIpIG5hbWVzcGFjZS4NCg0KRGVmaW5p dGlvbnMgaW4gdGhlIHJvb3QgbmFtZXNwYWNlIGFyZSBub3QgbW9kaWZpYWJsZSBmcm9tIG90aGVy IG5hbWVzcGFjZXMuIE1ldGhvZHMgZGVmaW5lZCBpbiB0aGUgcm9vdCBuYW1lc3BhY2UgcnVuIG9u bHkgd2l0aCByb290LW5hbWVzcGFjZSBkZWZpbml0aW9ucy4NCg0KIyMgRW5hYmxpbmcgTmFtZXNw YWNlDQoNClNwZWNpZnkgYFJVQllfTkFNRVNQQUNFPTFgIGVudmlyb25tZW50IHZhcmlhYmxlIHdo ZW4gc3RhcnRpbmcgUnVieSBwcm9jZXNzZXMuIGAxYCBpcyB0aGUgb25seSB2YWxpZCB2YWx1ZSBo ZXJlLg0KDQpOYW1lc3BhY2UgZmVhdHVyZSBjYW4gYmUgZW5hYmxlZCBvbmx5IHdoZW4gUnVieSBw cm9jZXNzZXMgc3RhcnQuIFNldHRpbmcgYFJVQllfTkFNRVNQQUNFPTFgIGFmdGVyIHN0YXJ0aW5n IFJ1Ynkgc2NyaXB0cyBwZXJmb3JtcyBub3RoaW5nLg0KDQojIyBQdWxsLXJlcXVlc3QNCg0KaHR0 cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzEzMjI2DQoNCg0KDQoNCg0KDQotLSANCmh0 dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0gcnVieS1jb3JlQG1s LnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcnVieS1jb3Jl LWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0dHBzOi8vbWwucnVi eS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5nLm9yZy8=