[ruby-core:95345] [Ruby master Feature#16254] MRI internal: Define built-in classes in Ruby with `__intrinsic__` syntax

From: eregontp@...
Date: 2019-10-15 20:01:41 UTC
List: ruby-core #95345
SXNzdWUgIzE2MjU0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N
Cg0KDQpUaGlzIHNvdW5kcyBncmVhdC4NCg0KV2UgaGF2ZSB2ZXJ5IGEgc2ltaWxhciBtZWNoYW5p
c20gaW4gVHJ1ZmZsZVJ1YnksIGluaGVyaXRlZCBmcm9tIFJ1YmluaXVzLCB3aGljaCBpcyBjYWxs
ZWQgInByaW1pdGl2ZXMiIChhbGEgU21hbGx0YWxrKS4NCkNvbXBhcmVkIHRvIFJ1YmluaXVzIHdl
IGNoYW5nZWQgdGhlIHN5bnRheCBhbmQgYWx3YXlzIHVzZSB0aGUgYGludm9rZV9wcmltaXRpdmVg
IGZvcm0gKGxpa2UgYF9faW50cmluc2ljX19gIGFib3ZlKSwgbm90IHRoZSAidHJ5IGludHJpbnNp
YywgaWYgaXQgZmFpbHMgZmFsbGJhY2sgdG8gdGhlIFJ1YnkgY29kZSBiZWxvdyIgKFNtYWxsdGFs
ay1zdHlsZSkuDQoNCkl0IGxvb2tzIGxpa2UgdGhpczoNCmBgYHJ1YnkNCmNsYXNzIFdlYWtSZWYg
PCBEZWxlZ2F0b3INCiAgZGVmIGluaXRpYWxpemUob2JqKQ0KICAgIFRydWZmbGVQcmltaXRpdmUu
d2Vha3JlZl9zZXRfb2JqZWN0KHNlbGYsIG9iaikNCiAgZW5kDQplbmQNCmBgYA0KKGZyb20gaHR0
cHM6Ly9naXRodWIuY29tL29yYWNsZS90cnVmZmxlcnVieS9ibG9iLzQ0ZTYxMTczZjA2NjFjNDFk
YmY5YTRjN2EyMjkwOTFjZjZhYjgzZTMvbGliL3RydWZmbGUvd2Vha3JlZi5yYg0Kc2VlIG1vcmUg
ZXhhbXBsZXMgd2l0aCBodHRwczovL2dpdGh1Yi5jb20vb3JhY2xlL3RydWZmbGVydWJ5L3NlYXJj
aD9xPVRydWZmbGVQcmltaXRpdmUmdW5zY29wZWRfcT1UcnVmZmxlUHJpbWl0aXZlICkNCg0KV2Ug
cmVjZW50bHkgY2hhbmdlZCBmcm9tIGBUcnVmZmxlLmludm9rZV9wcmltaXRpdmUoOndlYWtyZWZf
c2V0X29iamVjdCwgc2VsZiwgb2JqKWAgdG8gYFRydWZmbGVQcmltaXRpdmUud2Vha3JlZl9zZXRf
b2JqZWN0KHNlbGYsIG9iailgIGJlY2F1c2U6DQoqIEl0J3MgbW9yZSBjb25jaXNlIGFuZCBhcmd1
YWJseSBlYXNpZXIgdG8gcmVhZC4NCiogQXMgaXQncyBsaWtlIGEgbm9ybWFsIG1ldGhvZCBjYWxs
LCB3ZSBjYW4gZ2VuZXJhdGUgc3R1YiBkZWZpbml0aW9ucyBpbiBJREVzIChlLmcuLCBpbiBJbnRl
bGxpSiksIHdoaWNoIGFsbG93cyB0byBqdW1wIGZyb20gUnVieSBjb2RlIHRvIHRoZSBjb3JyZXNw
b25kaW5nIEphdmEgY29kZSBvZiBUcnVmZmxlUnVieS4NCg0KSW1wbGVtZW50YXRpb24td2lzZSwg
dGhlIGNvZGUgYWJvdmUgd2lsbCBnZW5lcmF0ZSBhbiBBU1Qgb2YgdGhlIGZvcm0NCmBgYA0KTWV0
aG9kTm9kZShuYW1lPWluaXRpYWxpemUsIGFyZ3M9b2JqLCBib2R5PVsNCiAgUmVhZEFyZ3VtZW50
Tm9kZSwNCiAgV2Vha1JlZlNldE9iamVjdE5vZGUoY2hpbGRyZW49W1JlYWRTZWxmTm9kZSwgUmVh
ZExvY2FsTm9kZShuYW1lPW9iaildKQ0KXSkNCmBgYA0KSS5lLiwgdGhlIGludHJpbnNpYyBub2Rl
IGlzIGRpcmVjdGx5IGluIHRoZSBBU1Qgb2YgdGhlIG1ldGhvZCBpbiBUcnVmZmxlUnVieS4NCk9u
bHkgYSBmaXhlZCBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgaXMgYWxsb3dlZC4gVGhh
dCB3YXksIHRoZXJlIGlzIG5vIGNvZGUgZm9yIGFyZ3VtZW50IGhhbmRsaW5nLCBhcmd1bWVudHMg
dmFsdWVzIGFyZSBqdXN0IHBhc3NlZCBkaXJlY3RseSB0byB0aGUgV2Vha1JlZlNldE9iamVjdE5v
ZGUgYXMgYXJndW1lbnRzIGFyZSBzaW1wbHkgY2hpbGQgbm9kZXMuDQoNClRoZSBtYWluIHJlYXNv
biBJJ20gZGV0YWlsaW5nIHRoaXMgaXMgSSB0aGluayB0aGlzIGFuIG9wcG9ydHVuaXR5IHRvIHN0
YW5kYXJkaXplIHRoZSBzeW50YXggZm9yICJwcmltaXRpdmVzIi8iaW50cmluc2ljcyIuDQpObyBt
YXR0ZXIgdGhlIGltcGxlbWVudGF0aW9uIGxhbmd1YWdlLCBpdCBzZWVtcyB0aGUgY29uY2VwdCBv
ZiAicHJpbWl0aXZlcyIvImludHJpbnNpY3MiIGlzIHVuaXZlcnNhbC4NCg0KQSBjb21tb24gc3lu
dGF4IGZvciBpbnRyaW5zaWNzL3ByaW1pdGl2ZXMgd291bGQgYWxsb3cgdG8gc2hhcmUgUnVieSBj
b2RlIGZvciBjb3JlIGNsYXNzZXMgdXNpbmcgdGhlc2UgaW50cmluc2ljcy9wcmltaXRpdmVzLg0K
SXQgbWlnaHQgbG9vayBsaWtlIGl0J3MgbGl0dGxlIFJ1YnkgY29kZSwgYnV0IEknbSBjb25maWRl
bnQgaXQgd2lsbCBncm93Lg0KRm9yIGluc3RhbmNlLCBJIHdvdWxkbid0IGJlIHN1cnByaXNlZCB0
byBzZWUgc29tZSBvZiB0aGUgYXJndW1lbnQgcHJvY2Vzc2luZy92YWxpZGF0aW9uIG1vdmVkIHRv
IFJ1YnksIGFzIGl0IG1pZ2h0IGp1c3QgYmUgZWFzaWVyLg0KQXQgdGhlIHZlcnkgbGVhc3QsIG1l
dGhvZCBkZWZpbml0aW9ucyAodGhlIGFyZ3VtZW50IG5hbWVzIGFuZCB0aGVpciBkZWZhdWx0IHZh
bHVlcykgY291bGQgYmUgc2hhcmVkIGFuZCBhdm9pZCBkdXBsaWNhdGlvbi4NCg0KV2hhdCBkbyB5
b3UgdGhpbms/DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZl
YXR1cmUgIzE2MjU0OiBNUkkgaW50ZXJuYWw6IERlZmluZSBidWlsdC1pbiBjbGFzc2VzIGluIFJ1
Ynkgd2l0aCBgX19pbnRyaW5zaWNfX2Agc3ludGF4DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9y
Zy9pc3N1ZXMvMTYyNTQjY2hhbmdlLTgyMDU0DQoNCiogQXV0aG9yOiBrbzEgKEtvaWNoaSBTYXNh
ZGEpDQoqIFN0YXR1czogT3Blbg0KKiBQcmlvcml0eTogTm9ybWFsDQoqIEFzc2lnbmVlOiBrbzEg
KEtvaWNoaSBTYXNhZGEpDQoqIFRhcmdldCB2ZXJzaW9uOiANCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQWJzdHJhY3QNCg0KTVJJIGRlZmluZXMgbW9zdCBvZiBi
dWlsdC1pbiBjbGFzc2VzIGluIEMgd2l0aCBDLUFQSXMgbGlrZSBgcmJfZGVmaW5lX21ldGhvZCgp
YC4NCkhvd2V2ZXIsIHRoZXJlIGFyZSBzZXZlcmFsIGlzc3VlcyB1c2luZyBDLUFQSXMuDQoNCkEg
ZmV3IG1ldGhvZHMgYXJlIGRlZmluZWQgaW4gUnVieSB3cml0dGVuIGluIGBwcmVsdWRlLnJiYC4N
Ckhvd2V2ZXIsIHdlIGNhbiBub3QgZGVmaW5lIGFsbCBvZiBjbGFzc2VzIGJlY2F1c2Ugd2UgY2Fu
IG5vdCB0b3VjaCBkZWVwIGRhdGEgc3RydWN0dXJlIGluIFJ1YnkuDQpGdXJ0aGVybW9yZSwgdGhl
cmUgYXJlIHBlcmZvcm1hbmNlIGlzc3VlcyBpZiB3ZSB3cml0ZSBhbGwgb2YgdGhlbSBpbiBSdWJ5
Lg0KDQpUbyBzb2x2ZSB0aGlzIHNpdHVhdGlvbiwgSSB3YW50IHRvIHN1Z2dlc3Qgd3JpdHRlbiBp
biBSdWJ5IHdpdGggQyBpbnRyaW5zaWMgZnVuY3Rpb25zLg0KVGhpcyBwcm9wb3NhbCBpcyBzYW1l
IGFzIG15IFJ1YnlLYWlnaSAyMDE5IHRhbGsgPGh0dHBzOi8vcnVieWthaWdpLm9yZy8yMDE5L3By
ZXNlbnRhdGlvbnMva28xLmh0bWw+Lg0KDQojIFRlcm1pbm9sb2d5DQoNCiogQy1tZXRob2RzOiBt
ZXRob2RzIGRlZmluZWQgaW4gQyAoZGVmaW5lZCB3aXRoIGByYl9kZWZpbmVfbWV0aG9kKClgLCBl
dGMpLg0KKiBSdWJ5LW1ldGhvZHM6IG1ldGhvZHMgZGVmaW5lZCBpbiBSdWJ5Lg0KKiBJU2VxOiBU
aGUgYm9keSBvZiBgUlVieVZNOjpJbnN0cnVjdGlvblNlcXVlbmNlYCBvYmplY3Qgd2hpY2ggcmVw
cmVzZW50cyBieXRlY29kZSBmb3IgVk0uDQoNCiMgQmFja2dyb3VuZCAvIFByb2JsZW0gLyBJZGVh
DQoNCiMjIFdyaXR0ZW4gaW4gQw0KDQpBcyB5b3UgTVJJIGRldmVsb3BlcnMga25vdywgbW9zdCBv
ZiBtZXRob2RzIGFyZSB3cml0dGVuIGluIEMgd2l0aCBDLUFQSXMuDQpIb3dldmVyLCB0aGVyZSBh
cmUgc2V2ZXJhbCBpc3N1ZXMuDQoNCiMjIyAoMSkgQW5ub3RhdGlvbiBpc3N1ZXMgKGNvbXBhcmUg
d2l0aCBSdWJ5IG1ldGhvZHMpDQoNCkZvciBleGFtcGxlLCBDLW1ldGhvZHMgZGVmaW5lZCBieSBD
LUFQSXMgZG9lc24ndCBoYXZlIGBwYXJhbWV0ZXJzYCBpbmZvcm1hdGlvbiB3aGljaCBhcmUgcmV0
dXJuZWQgYnkgYE1ldGhvZCNwYXJhbWV0ZXJzYCwgYmVjYXVzZSB0aGVyZSBpcyB3YXkgdG8gZGVm
aW5lIHBhcmFtZXRlcnMgZm9yIEMgbWV0aG9kcy4NClRoZXJlIGFyZSBwcm9wb3NhbHMgdG8gYWRk
IHBhcmFtZXRlciBuYW1lIGluZm9ybWF0aW9uIGZvciBDLW1ldGhvZHMsIGhvd2V2ZXIsIEkgdGhp
bmsgaXQgd2lsbCBpbnRyb2R1Y2UgbmV3IGNvbXBsZXggQy1BUElzIGFuZCBpbnRyb2R1Y2UgYWRk
aXRpb25hbCBvdmVyaGVhZCBvbiBib290IHRpbWUuDQoNCi0+IElkZWE7IFdyaXRpbmcgbWV0aG9k
cyBpbiBSdWJ5IHdpbGwgc29sdmUgdGhpcyBpc3N1ZS4NCg0KIyMjICgyKSBBbm5vdGF0aW9uIGlz
c3VlcyAoZm9yIGZ1cnRoZXIgb3B0aW1pemF0aW9uKQ0KDQpJdCBpcyB1c2VmdWwgdG8ga25vdyB0
aGUgbWV0aG9kcyBhdHRyaWJ1dGUsIGZvciBleGFtcGxlLCB0aGUgbWV0aG9kIGNhdXNlcyBubyBz
aWRlLWVmZmVjdCAoYSBwdXJlIG1ldGhvZCkuDQpMYWJlbGluZyBhbGwgb2YgbWV0aG9kcyBpbmNs
dWRpbmcgdXNlciBwcm9ncmFtJ3MgbWV0aG9kcyBkb2Vzbid0IHNlZW0gZ29vZCBpZGVhIChub3Qg
UnVieS13YXkpLiBCdXQgSSB0aGluayBhbm5vdGF0aW5nIGJ1aWx0LWluIG1ldGhvZHMgaXMgZ29v
ZCB3YXkgYmVjYXVzZSB3ZSBjYW4gbWFuYWdlIChhbmQgd2UgY2FuIHJlbW92ZSB0aGVtIHdoZW4g
d2UgY2FuIG1ha2UgZ29vZCBhbmFseXplcikuDQoNClRoZXJlIGFyZSBubyB3YXkgdG8gYW5ub3Rh
dGUgdGhpcyBraW5kIG9mIGF0dHJpYnV0ZXMuDQoNCi0+IElkZWE6IFdyaXRpbmcgbWV0aG9kcyBp
biBSdWJ5IHdpbGwgbWFrZSBpdCBlYXN5IHRvIGludHJvZHVjZSBuZXcgYW5ub3RhdGlvbnMuDQoN
CiMjIyAoMykgUGVyZm9ybWFuY2UgaXNzdWUNCg0KVGhlcmUgYXJlIHNldmVyYWwgZmVhdHVyZXMg
d2hpY2ggYXJlIHNsb3dlciBpbiBDIHRoYW4gd3JpdHRlbiBpbiBSdWJ5Lg0KDQoqIGV4Y2VwdGlv
biBoYW5kbGluZyAoYHJiX2Vuc3VyZSgpYCwgZXRjKSBiZWNhdXNlIHdlIG5lZWQgdG8gY2FwdHVy
ZSBjb250ZXh0IHdpdGggYHNldGptcGAgb24gQy1tZXRob2RzLiBSdWJ5LW1ldGhvZHMgZG9lc24n
dCBuZWVkIHRvIGNhcHR1cmUgYW55IGNvbnRleHQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZy4NCiog
UGFzc2luZyBrZXl3b3JkIHBhcmFtZXRlcnMgYmVjYXVzZSBSdWJ5LW1ldGhvZHMgZG9lc24ndCBu
ZWVkIHRvIG1ha2UgYSBIYXNoIG9iamVjdCB0byBwYXNzIHRoZSBrZXl3b3JkIHBhcmFtZXRlcnMg
aWYgdGhleSBhcmUgcGFzc2VkIHdpdGggZXhwbGljaXQga2V5d29yZCBwYXJhbWV0ZXJzIChgZm9v
KGsxOiB2MSwgazI6IHYyKWApLg0KDQotPiBJZGVhOiBXcml0aW5nIG1ldGhvZHMgaW4gUnVieSBt
YWtlcyB0aGVtIGZhc3Rlci4NCg0KIyMjICg0KSBQcm9kdWN0aXZpdHkNCg0KSXQgaXMgdG91Z2gg
dG8gd3JpdGUgc29tZSBmZWF0dXJlcyBpbiBDOg0KDQpGb3IgZXhhbXBsZSwgaXQgaXMgZWFzeSB0
byB3cml0ZSBgcmVzY3VlYCBzeW50YXggaW4gUnVieToNCg0KYGBgcnVieQ0KIyBpbiBSdWJ5DQpk
ZWYgZHVtbXlfZnVuY19yZXNjdWUNCiAgbmlsDQpyZXNjdWUNCiAgbmlsDQplbmQNCmBgYA0KDQpC
dXQgaXQgaXMgZGlmZmljdWx0IHRvIHdyaXRlL3JlYWQgaW4gQzoNCg0KYGBgQw0Kc3RhdGljIFZB
TFVFDQpkdW1teV9ib2R5KFZBTFVFIHNlbGYpDQp7DQogICAgcmV0dXJuIFFuaWw7DQp9DQpzdGF0
aWMgVkFMVUUNCmR1bW15X3Jlc2N1ZShWQUxVRSBzZWxmKQ0Kew0KICAgIHJldHVybiBRbmlsOw0K
fQ0Kc3RhdGljIFZBTFVFDQp0ZHVtbXlfZnVuY19yZXNjdWUoVkFMVUUgc2VsZikNCnsNCiAgICBy
ZXR1cm4gcmJfcmVzY3VlKGR1bW15X2JvZHksIHNlbGYsIGR1bW15X3Jlc2N1ZSwgc2VsZik7DQp9
DQpgYGANCg0KKHRyYWluZWQgTVJJIGRldmVsb3BlciBjYW4gc2F5IGl0IGlzIG5vdCB0b3VnaCwg
dGhvdWdoIDpwKQ0KDQotPiBJZGVhOiBXcml0aW5nIG1ldGhvZHMgaW4gUnVieSBtYWtlcyB0aGVt
IGVhc3kuDQoNCiMjIyAoNSkgQVBJIGNoYW5nZQ0KDQpUbyBpbnRyb2R1Y2UgYEd1aWxkYCwgSSB3
YW50IHRvIHBhc3MgYSAiY29udGV4dCIgcGFyYW1ldGVyIChhcyBhIGZpcnN0IHBhcmFtZXRlcikg
Zm9yIGVhY2ggQy1mdW5jdGlvbnMgbGlrZSBgbXJiX3N0YXRlYCBvbiBtcnVieS4NClRoaXMgaXMg
YmVjYXVzZSBnZXR0aW5nIGl0IGZyb20gVExTIChUaHJlYWQtbG9jYWwtc3RvcmFnZSkgaXMgaGln
aC1jb3N0IG9wZXJhdGlvbiBvbiBkeW5hbWljIGxpYnJhcnkgKGxpYnJ1YnkpLg0KDQpNYXliZSBu
b2JvZHkgYWxsb3cgbWUgdG8gY2hhbmdlIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGZ1bmN0aW9ucyB1
c2VkIGJ5IGByYl9kZWZpbmVfbWV0aG9kKClgLg0KDQotPiBJZGVhOiBCdXQgaW50cm9kdWNlIG5l
dyBtZXRob2QgZGVmaW5pdGlvbiBmcmFtZXdvcmssIHdlIGNhbiBtb3ZlIGFuZCBjaGFuZ2UgdGhl
IHNwZWNpZmljYXRpb24sIEkgaG9wZS4NCk9mIGNvdXJzZSwgd2UgY2FuIHJlbWFpbiBjdXJyZW50
IGByYl9kZWZpbmVfbWV0aG9kKClgIEFQSXMgKHdpdGggYWRkaXRpb25hbCBjb3N0IG9uIGBHdWls
ZGAgYXZhaWxhYmxlIE1SSSkuDQoNCiMjIFdyaXR0ZW4gaW4gUnVieSBpbiBgcHJlbHVkZS5yYmAN
Cg0KVGhlcmUgaXMgYSBmaWxlIGBwcmVsdWRlLnJiYCB3aGljaCBhcmUgbG9hZGVkIGF0IGJvb3Qg
dGltZS4NClRoaXMgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSBzZXZlcmFsIG1ldGhvZHMsIHRvIHJl
ZHVjZSBrZXl3b3JkIHBhcmFtZXRlcnMgb3ZlcmhlYWQsIGZvciBleGFtcGxlIChgSU8jcmVhZF9u
b25ibG9ja2AsIGBUcmFjZVBvaW50I2VuYWJsZWApLg0KDQpIb3dldmVyLCB3cml0aW5nIGFsbCBv
ZiBtZXRob2RzIGluIFJ1YnkgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2U6DQoNCiogKDEpIGZlYXNp
YmlsaXR5IGlzc3VlICh3ZSBjYW4gbm90IGFjY2VzcyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSkN
CiogKDIpIHBlcmZvcm1hbmNlIGlzc3VlIChzbG93IGluIGdlbmVyYWwsIG9mIGNvdXJzZSkNCiog
KDMpIGF0b21pY2l0eSBpc3N1ZSAoR1ZML0dJTCkNCg0KVG8gc29sdmUgKDEpLCB3ZSBjYW4gcHJv
dmlkZSBsb3ctbGV2ZWwgQy1tZXRob2RzIHRvIGltcGxlbWVudCBoaWdoLWxldmVsIChub3JtYWwg
YnVpbHQtaW4pIG1ldGhvZHMuIEhvd2V2ZXIgaXNzdWVzICgyKSBhbmQgKDMpIGFyZSBub3Qgc29s
dmVkLg0KKEZyb20gQ1MgcmVzZWFyY2hlcnMgcGVyc3BlY3RpdmUsIG1ha2luZyBjbGV2ZXIgY29t
cGlsZXIgd2lsbCBzb2x2ZSB0aGVtLCBsaWtlIEpWTSwgZXRjLCBCdXQgd2UgZG9uJ3QgaGF2ZSBp
dCB5ZXQpDQoNCi0+IElkZWE6IFdyaXRpbmcgbWV0aG9kIGJvZHkgaW4gQyBpcyBmZWFzaWJsZS4N
Cg0KIyBQcm9wb3NhbA0KDQooMSkgSW50cm9kdWNpbmcgYGludHJpbnNpY2AgbWVjaGFuaXNtIHRv
IGRlZmluZSBidWlsdC1pbiBtZXRob2RzIGluIFJ1YnkuDQooMikgTG9hZCBmcm9tIGJpbmFyeSBm
b3JtYXQgdG8gcmVkdWNlIHN0YXJ0dXAgdGltZS4NCg0KIyMgKDEpIEludHJpbnNpYyBmdW5jdGlv
bg0KDQojIyMgQ2FsbGluZyBpbnRyaW5zaWMgZnVuY3Rpb24gc3ludGF4IGluIFJ1YnkNCg0KVG8g
ZGVmaW5lIGJ1aWx0LWluIG1ldGhvZHMsIGludHJvZHVjZSBzcGVjaWFsIFJ1Ynkgc3ludGF4IGBf
X2ludHJpbnNpY19fLmZ1bmMoYXJncylgLg0KSW4gdGhpcyBjYXNlLCByZWdpc3RlcmVkIGludHJp
bnNpYyBmdW5jdGlvbiBgZnVuYygpYCBpcyBjYWxsZWQgd2l0aCBgYXJnc2AuDQoNCkluIG5vcm1h
bCBSdWJ5IHByb2dyYW0sIGBfX2ludHJpbnNpY19fYCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9yIGEg
bWV0aG9kLg0KSG93ZXZlciwgcnVubmluZyBvbiBzcGVjaWFsIG1vZGUsIHRoZXkgYXJlIHBhcnNl
ZCBhcyBpbnRyaW5zaWMgZnVuY3Rpb24gY2FsbC4NCg0KSW50cmluc2ljIGZ1bmN0aW9ucyBjYW4g
bm90IGJlIGNhbGxlZCB3aXRoOg0KDQoqIGJsb2NrIA0KKiBrZXl3b3JkIGFyZ3VtZW50cw0KKiBz
cGxhdCBhcmd1bWVudHMNCg0KIyMjIERldmVsb3BtZW50IHN0ZXAgd2l0aCBpbnRyaW5zaWMgZnVu
Y3Rpb25zDQoNCigxKSBXcml0ZSBhIGNsYXNzL21vZHVsZSBpbiBSdWJ5IHdpdGggaW50cmluc2lj
IGZ1bmN0aW9uLg0KDQpgYGBydWJ5DQojIHN0cmluZy5yYg0KY2xhc3MgU3RyaW5nDQogIGRlZiBs
ZW5ndGgNCiAgICBfX2ludHJpbnNpY19fLnN0cl9sZW5ndGgNCiAgZW5kDQplbmQNCmBgYA0KDQoo
MikgSW1wbGVtZW50IGludHJpbnNpYyBmdW5jdGlvbnMNCg0KSXQgaXMgYWxtb3N0IHNhbWUgYXMg
ZnVuY3Rpb25zIHVzZWQgYnkgYHJiX2RlZmluZV9tZXRob2QoKWAuDQpIb3dldmVyIGl0IHdpbGwg
YWNjZXB0IGNvbnRleHQgcGFyYW1ldGVyIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQoNCihgcmJf
ZXhlY3V0aW9uX2NvbnRleHRfdGAgaXMgdG9vIGxvbmcsIHNvIHdlIGNhbiByZW5hbWUgaXQsIGBy
Yl9zdGF0ZWAgZm9yIGV4YW1wbGUpDQoNCmBgYEMNCnN0YXRpYyBWQUxVRQ0Kc3RyX2xlbmd0aChy
Yl9leGVjdXRpb25fY29udGV4dF90ICplYywgVkFMVUUgc2VsZikNCnsNCiAgcmV0dXJuIExPTkcy
TlVNKFJTVFJJTkdfTEVOKHNlbGYpKTsNCn0NCmBgYA0KDQooMykgRGVmaW5lIGFuIGludHJpbnNp
YyBmdW5jdGlvbiB0YWJsZSBhbmQgbG9hZCBgLnJiYCBmaWxlIHdpdGggdGhlIHRhYmxlLg0KDQpg
YGBDDQpJbml0X1N0cmluZyh2b2lkKQ0Kew0KICAuLi4NCiAgc3RhdGljIGNvbnN0IHJiX2V4cG9y
dF9pbnRyaW5zaWNfdCB0YWJsZVtdID0gew0KICAgIFJCX0VYUE9SVF9JTlRSSU5TSUMoc3RyX2xl
bmd0aCwgMCksIC8vIDAgaXMgYXJpdHkNCiAgICAuLi4NCiAgfTsNCiAgcmJfdm1fYnVpbHRpbl9s
b2FkKCJzdHJpbmciLCB0YWJsZSk7DQp9DQpgYGANCg0KIyMjIEV4YW1wbGUNCg0KVGhlcmUgYXJl
IHR3byBleGFtcGxlczoNCg0KKDEpIENvbXBhcmFibGUgbW9kdWxlOiBodHRwczovL2dpc3QuZ2l0
aHViLmNvbS9rbzEvN2YxOGU2NmQxYWUyNWJiMzBjN2U4MjNhYTU3ZjBkMzENCigyKSBUcmFjZVBv
aW50IGNsYXNzOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9rbzEvOTY5ZTU2OTBjZGE2MTgwZWQ5
ODllYjc5NjE5Y2E2MTINCg0KIyMgKDIpIExvYWQgZnJvbSBiaW5hcnkgZmlsZSB3aXRoIGxhenkg
bG9hZGluZw0KDQpMb2FkaW5nIG1hbnkgIi5yYiIgZmlsZXMgc2xvd3MgZG93biBzdGFydHVwIHRp
bWUuDQoNCldlIGhhdmUgYElTZXEjdG9fYmluYXJ5YCBtZXRob2QgdG8gZ2VuZXJhdGUgY29tcGls
ZWQgYmluYXJ5IGRhdGEgc28gdGhhdCB3ZSBjYW4gZWxpbWluYXRlIHBhcnNlL2NvbXBpbGUgdGlt
ZS4NCkZvcnR1bmF0ZWx5LCBbRmVhdHVyZSAjMTYxNjNdIG1ha2VzIGJpbmFyeSBkYXRhIHNtYWxs
Lg0KRnVydGhlcm1vcmUsIGVuYWJsaW5nICJsYXp5IGxvYWRpbmciIGZlYXR1cmUgaW1wcm92ZXMg
c3RhcnR1cCB0aW1lIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBnZW5lcmF0ZSBjb21wbGV0ZSBJ
U2Vxcy4gYFVTRV9MQVpZX0xPQURgIGluIHZtX2NvcmUuaCBlbmFibGVzIHRoaXMgZmVhdHVyZS4N
Cg0KV2UgbmVlZCB0byBjb21iaW5lIGJpbmFyeS4gVGhlcmUgYXJlIHNldmVyYWwgd2F5IChjb252
ZXJ0IGludG8gQydzIGFycmF5LCBjb25jYXQgd2l0aCBvYmpjb3B5IGlmIGF2YWlsYWJsZSBhbmQg
c28gb24pLg0KDQojIEV2YWx1YXRpb24NCg0KRXZhbHVhdGlvbnMgYXJlIHdyaXR0ZW4gaW4gbXkg
UnVieUthaWdpIDIwMTkgcHJlc2VudGF0aW9uOiA8aHR0cHM6Ly9ydWJ5a2FpZ2kub3JnLzIwMTkv
cHJlc2VudGF0aW9ucy9rbzEuaHRtbD4NCg0KUG9pbnRzOg0KDQoqIENhbGxpbmcgb3ZlcmhlYWQg
b2YgUnVieSBtZWh0b2RzIHdpdGggaW50cmluc2ljIGZ1bmN0aW9ucw0KICAqIE5vcm1hbCBjYXNl
LCBpdCBpcyBhbG1vc3Qgc2FtZSBhcyBDLW1ldGhvZHMgdXNpbmcgb3B0aW1pemVkIFZNIGluc3Ry
dWN0aW9ucy4NCiAgKiBXaXRoIGtleXdvcmQgcGFyYW1ldGVycywgaXQgaXMgZmFzdGVyIHRoYW4g
Qy1tZXRob2RzLg0KICAqIFdpdGggb3B0aW9uYWwgcGFyYW1ldGVycywgaXQgaXMgeDIgc2xvd2Vy
IHNvIGl0IHNob3VsZCBiZSBzb2x2ZWQgKCoxKS4NCg0KKiBMb2FkaW5nIG92ZXJoZWFkDQogICog
UmVxdWlyaW5nICIucmIiIGZpbGVzIGlzIGFib3V0IHgxNSBzbG93ZXIgdGhhbiBkZWZpbmluZyBD
IG1ldGhvZHMuDQogICogTG9hZGluZyBiaW5hcnkgZGF0YSB3aXRoIGxhenkgbG9hZGluZyB0ZWNo
bmlxdWUgaXMgYWJvdXQgeDIgc2xvd2VyIHRoYW4gQyBtZXRob2RzLiBOb3Qgc28gYmFkIHJlc3Vs
dC4NCiAgKiBBdCBSdWJ5S2FpZ2kgMjAxOSwgdGhlIGJpbmFyeSBkYXRhIHdhcyB2ZXJ5IGh1Z2Us
IGJ1dCBbRmVhdHVyZSAjMTYxNjNdIHJlZHVjZXMgdGhlIHNpemUgb2YgYmluYXJ5IGRhdGEuDQoN
ClsqMV0gSW50cm9kdWNpbmcgc3BlY2lhbCAib3ZlcmxvYWRpbmciIHNwZWNpZmllciBjYW4gc29s
dmUgaXQgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRvIGFzc2lnbiBvcHRpb25hbCBwYXJhbWV0ZXJz
LiBGaXJzdCBtZXRob2QgbG9va3VwIGNhbiBiZSBzbG93ZWQgZG93biwgYnV0IHdlIGNhbiBjYWNo
ZSB0aGUgbWV0aG9kIGxvb2t1cCByZXN1bHRzICh3aXRoIGFyaXR5KS4NCg0KYGBgcnVieQ0KIyBl
eGFtcGxlIHN5bnRheA0Kb3ZlcmxvYWQgZGVmIGZvbyhhKQ0KICBfX2ludHJpbnNpY19fLmZvbzEo
YSkNCmVuZA0Kb3ZlcmxvYWQgZGVmIGZvbyhhLCBiKQ0KICBfX2ludHJpbnNpY19fLmZvbzIoYSwg
YikNCmVuZA0KYGBgDQoNCiMgSW1wbGVtZW50YXRpb24NCg0KRG9uZToNCiogQ29tcGlsZSBjYWxs
aW5nIGludHJpbnNpYyBmdW5jdGlvbnMgKC5yYikNCiogRXhwb3J0aW5nIGludHJpbnNpYyBmdW5j
dGlvbiB0YWJsZSAoLmMpDQoNCk5vdCB5ZXQ6DQoqIExvYWRpbmcgZnJvbSBiaW5hcnkgbWVjaGFu
aXNtDQoqIEF0dHJpYnV0ZSBzeW50YXgNCiogbW9zdCBvZiBidWlsdC1pbiBjbGFzcyByZXBsYWNl
bWVudA0KDQpOb3csIG1pbmlydWJ5IGFuZCBydWJ5IChsaWJydWJ5KSBsb2FkICcqLnJiJyBmaWxl
cyBkaXJlY3RseS4gSG93ZXZlciwgcnVieSAobGlicnVieSkgc2hvdWxkIGxvYWQgY29tcGlsZWQg
YmluYXJ5IGZpbGUuDQoNCiMgRGlzY3Vzc2lvbg0KDQojIyBEbyB3ZSByZXdyaXRlIGFsbCBvZiBi
dWlsdC1pbiBjbGFzc2VzIGF0IG9uY2U/DQoNCk5vLiBXZSBjYW4gdHJ5IGFuZCBtaWdyYXRlIHRo
ZW0uDQoNCiMjIERvIHdlIHN1cHBvcnQgaW50cmluc2ljIG1lY2hhbmlzbSBmb3IgQy1leHRlbnNp
b24gbGlicmFyaWVzPw0KDQpNYXliZSBpbiBmdXR1cmUuIE5vdyB3ZSBjYW4gdHJ5IGl0IG9uIE1S
SSBjb3Jlcy4NCg0KIyMgYF9faW50cmluc2ljX19gIGtleXdvcmQNCg0KT24gbXkgUnVieUthaWdp
IDIwMTkgdGFsaywgSSBwcm9wb3NlZCBgX19DX19gLCBidXQgSSB0aGluayBgX19pbnRyaW5zaWNf
X2AgaXMgbW9yZSBkZXNjcmlwdGl2ZSAoYnV0IGEgYml0IGxvbmcpLg0KQW5vdGhlciBpZGVhIGlz
IGBSdWJ5Vk06OmludHJpbnNpYy5mdW5jKC4uLilgLg0KDQpJIGhhdmUgbm8gc3Ryb25nIG9waW5p
b24uIFdlIGNhbiBjaGFuZ2UgdGhpcyBzeW50YXggdW50aWwgd2UgZXhwb3NlIHRoaXMgc3ludGF4
IGZvciBDLWV4dGVuc2lvbnMuDQoNCiMjIENhbiB3ZSBzdXBwb3J0IGBfX2ludHJpbnNpY19fYCBp
biBub3JtYWwgUnVieSBzY3JpcHQ/DQoNCk5vLiBUaGlzIGZlYXR1cmUgaXMgb25seSBmb3IgYnVp
bHQtaW4gZmVhdHVyZXMuDQpBcyBJIGRlc2NyaWJlZCzjgIBjYWxsaW5nIGludHJpbnNpYyBmdW5j
dGlvbiBzeW50YXggaGFzIHNldmVyYWwgcmVzdHJpY3Rpb24gY29tcGFyZSB3aXRoIG5vcm1hbCBt
ZXRob2QgY2FsbHMsIHNvIHRoYXQgSSB0aGluayB0aGV5IGFyZSBub3QgZXhwb3NlZCBhcyBub3Jt
YWwgUnVieSBwcm9ncmFtcywgSU1PLg0KDQojIyBTaG91bGQgd2UgbWFpbnRhaW4gaW50cmluc2lj
IGZ1bmN0aW9uIHRhYmxlPw0KDQpOb3csIHllcy4gQW5kIHdlIG5lZWQgdG8gbWFrZSB0aGlzIHRh
YmxlIGF1dG9tYXRpY2FsbHkgYmVjYXVzZSBtYW51YWwgb3BlcmF0aW9ucyBjYW4gaW50cm9kdWNl
IG1pc3Rha2UgdmVyeSBlYXNpbHkuDQoNCkNvcnJlc3BvbmRpbmcgIi5yYiIgZmlsZSAoYHRyYWNl
X3BvaW50LnJiYCwgZm9yIGV4YW1wbGUpIGtub3dzIHdoaWNoIGludHJpbnNpYyBmdW5jdGlvbnMg
YXJlIG5lZWRlZC4NClBhcnNpbmcgIi5yYiIgZmlsZSBjYW4gZ2VuZXJhdGUgdGhlIHRhYmxlIGF1
dG9tYXRpY2FsbHkuDQpIb3dldmVyLCB3ZSBuZWVkIGEgbGF0ZXN0IHZlcnNpb24gUnVieSB0byBw
YXJzZSB0aGUgc2NyaXB0cyBpZiB0aGV5IHVzZXMgc3ludGF4IHdoaWNoIGFyZSBzdXBwb3J0ZWQg
YnkgbGF0ZXN0IHZlcnNpb24gb2YgUnVieS4NCg0KRm9yIGV4YW1wbGUsIHdlIG5lZWQgUnVieSAy
LjcgbWFzdGVyIHRvIHBhcnNlIGEgc2NyaXB0IHdoaWNoIHVzZXMgcGF0dGVybiBtYXRjaGluZyBz
eW50YXguDQpIb3dldmVyLCB0aGUgc3lzdGVtJ3MgcnVieSAoYEJBU0VfUlVCWWApIHNob3VsZCBi
ZSBvbGRlciB2ZXJzaW9uLiBUaGlzIGlzIG9uZSBvZiBib290c3RyYXAgcHJvYmxlbS4NClRoaXMg
aXMgImNoaWNrZW4tYW5kLWVnZyIgcHJvYmxlbS4NCg0KVGhlcmUgYXJlIHNldmVyYWwgaWRlYXMu
DQoNCigxKSBQYXJzZSBhICIuYyIgZmlsZSB0byBnZW5lcmF0ZSBhIHRhYmxlIHVzaW5nIGZ1bmN0
aW9uIGF0dHJpYnV0ZS4NCg0KYGBgQw0KSU5UUklOU0lDX0ZVTkNUSU9OIHN0YXRpYyBWQUxVRQ0K
c3RyX2xlbmd0aCguLi4pDQouLi4NCmBgYA0KDQooMikgQnVpbGQgYW5vdGhlciBydWJ5IHBhcnNl
ciB3aXRoIHNvdXJjZSBjb2RlLCAicGFyc2UtcnVieSIuDQoNCiogMS4gZ2VuZXJhdGUgcGFyc2Ut
cnVieSB3aXRoIEMgY29kZS4NCiogMi4gcnVuIHBhcnNlLXJ1YnkgdG8gZ2VuZXJhdGUgdGFibGVz
IGJ5IHBhcnNpbmcgIi5yYiIgZmlsZXMuIFRoaXMgcHJvY2VzcyBpcyB3cml0dGVuIGluIEMuDQoq
IDMuIGJ1aWxkIG1pbmlydWJ5IGFuZCBydWJ5IHdpdGggZ2VuZXJhdGVkIHRhYmxlLg0KDQpXZSBj
YW4gbWFrZSBpdCwgYnV0IGl0IGludHJvZHVjZXMgbmV3IGNvbXBsZXggYnVpbGQgcHJvY2Vzcy4N
Cg0KKDMpIFJlc3RyaWN0ICIucmIiIHN5bnRheA0KDQpSZXN0cmljdCBzeW50YXggd2hpY2ggY2Fu
IGJlIHVzZWQgYnkgYEJBU0VfUlVCWWAgZm9yIGJ1aWx0LWluICIucmIiIGZpbGVzLg0KSXQgaXMg
ZWFzeSB0byBsaXN0IHVwIGludHJpbnNpYyBmdW5jdGlvbnMgdXNpbmcgUmlwcGVyIG9yIEFTVCBv
ciBgSVNlcSN0b19hYC4NCg0KKDMpIGlzIG1vc3QgZWFzeSBidXQgbm90IHNvIGNvb2wuDQooMikg
aXMgZmxleGlibGUsIGJ1dCBpdCBuZWVkcyBpbXBsZW1lbnRhdGlvbiBjb3N0IGFuZCBpbmNyZWFz
ZXMgYnVpbGQgY29tcGxleGl0eS4NCg0KDQojIyBQYXRoIG9mICcqLnJiJyBmaWxlcyBhbmQgaW5z
dGFsbCBvciBub3QNCg0KVGhlIHBhdGggb2YgYHByZWx1ZGUucmJgIGlzIGA8aW50ZXJuYWw6cHJl
bHVkZT5gLiBXZSBoYXZlIHNldmVyYWwgb3B0aW9ucy4NCg0KKiAoMSkgRG9uJ3QgaW5zdGFsbCAi
LnJiIiBmaWxlcyBhbmQgbWFrZSB0aGVzZSBwYXRoIGA8aW50ZXJuYWw6dHJhY2VfcG9pbnQucmI+
YCwgZm9yIGV4YW1wbGUuDQoqICgyKSBJbnN0YWxsICIucmIiIGFuZCBtYWtlIHRoZXNlIHBhdGhz
IG5vbi1leGlzdGluZyBwYXRocyBzdWNoIGFzIGA8aW50ZXJuYWw+L2luc3RhbGxkaXIvbGliL2J1
aWx0aW4vdHJhY2VfcG9pbnQucmJgLg0KKiAoMykgSW5zdGFsbCAiLnJiIiBhbmQgbWFrZSB0aGVz
ZSBwYXRocyByZWFsIHBhdGhzLg0KDQpXZSB3aWxsIHRyYW5zbGF0ZSAiLnJiIiBmaWxlcyBpbnRv
IGJpbmFyeSBkYXRhIGFuZCBsaW5rIHRoZW0gaW50byBgcnVieWAgKGBsaWJydWJ5YCkuDQpTbyB0
aGUgbW9kaWZpY2F0aW9uIG9mIGluc3RhbGxlZCAiLnJiIiBmaWxlcyBhcmUgbm90IGFmZmVjdCB0
aGUgYmVoYXZpb3IuIEl0IGNhbiBpbnRyb2R1Y2UgY29uZnVzaW9uIHNvIHRoYXQgSSB3cm90ZSAo
MSkgYW5kICgyKS4NCg0KRm9yICgzKSwgaXQgaXMgcG9zc2libGUgdG8gbG9hZCAiLnJiIiBmaWxl
cyBpZiB0aGVyZSBpcyBtb2RpZmljYXRpb24gKG1heWJlIGRldGVjdCBieSBtb2RpZmllZCBkYXRl
KSBhbmQgbG9hZCBmcm9tIHRoZW0uIEJ1dCBpdCB3aWxsIGludHJvZHVjZSBhbiBvdmVyaGVhZCAo
ZGlzayBhY2Nlc3Mgb3ZlcmhlYWQpLg0KDQojIyBDb21wYXRpYmlsaXR5IGlzc3VlPw0KDQpUaGVy
ZSBhcmUgc2V2ZXJhbCBjb21wYXRpYmlsaXR5IGlzc3Vlcy4gRm9yIGV4YW1wbGUsIGBUcmFjZVBv
aW50YCBgYy1jYWxsYCBldmVudHMgYXJlIGNoYW5nZWQgdG8gYGNhbGxgIGV2ZW50cy4NCkFuZCB0
aGVyZSBhcmUgbW9yZSBpbmNvbXBhdGlibGVzLg0KV2UgbmVlZCB0byBjaGVjayB0aGVtIGNhcmVm
dWxseS4NCg0KIyMgQm9vdHN0cmFwIGlzc3VlPw0KDQpZZXMsIHRoZXJlIGFyZS4NCg0KTG9hZGlu
ZyBgLnJiYCBmaWxlcyBhdCBib290IHRpbWluZyBvZiBhbiBpbnRlcnByZXRlciBjYW4gY2F1c2Ug
cHJvYmxlbS4NCkZvciBleGFtcGxlLCBiZWZvcmUgaW5pdGlhbGl6aW5nIFN0cmluZyBjbGFzcywg
dGhlIGNsYXNzIG9mIFN0cmluZyBsaXRlcmFsIGlzIDAgKGJlY2F1c2UgU3RyaW5nIGNsYXNzIGlz
IG5vdCBnZW5lcmF0ZWQpLg0KDQpJIGludHJvZHVjZXMgc2V2ZXJhbCB3b3JrYXJvdW5kcyBidXQg
d2UgbmVlZCB0byBtb2RpZnkgbW9yZS4NCg0KIyBDb25jbHVzaW9uDQoNCkhvdyBhYm91dCB0byBp
bnRyb2R1Y2UgdGhpcyBtZWNoYW5pc20gYW5kIHRyeSBpdCBvbiBSdWJ5IDIuNz8NCldlIGNhbiBy
ZXZlcnQgdGhlc2UgY2hhbmdlcyBpZiB3ZSBmb3VuZCBhbnkgdHJvdWJsZXMsIGlmIHdlIGRvbid0
IGV4cG9zZSB0aGlzIG1lY2hhbmlzbSBhbmQgb25seSBpbnRlcm5hbCBjaGFuZ2VzLg0KDQoNCg0K
DQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KClVuc3Vic2NyaWJlOiA8bWFpbHRv
OnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0
dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29y
ZT4K

In This Thread

Prev Next