[ruby-core:121613] [Ruby Feature#21254] Inlining Class#new
From:
"jez (Jake Zimmerman) via ruby-core" <ruby-core@...>
Date:
2025-04-09 20:57:19 UTC
List:
ruby-core #121613
SXNzdWUgIzIxMjU0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamV6IChKYWtlIFppbW1lcm1hbikuDQoN Cg0KQHRlbmRlcmxvdmVtYWtpbmcgUXVlc3Rpb24gYWJvdXQgYW4gZXh0ZW5zaW9uIHRvIHRoZSBj dXJyZW50IGltcGxlbWVudGF0aW9uLg0KDQpXZSBoYXZlIGEgZmFpciBhbW91bnQgb2YgY29kZSB0 aGF0IGxvb2tzIGxpa2UgdGhpczoNCg0KYGBgcnVieQ0KY2xhc3MgSG9sZHNFdmVuTnVtYmVycw0K ICBkZWYgaW5pdGlhbGl6ZShldmVuKQ0KICAgIEBldmVuID0gZXZlbg0KICBlbmQNCg0KICBwcml2 YXRlX2NsYXNzX21ldGhvZCA6bmV3DQoNCiAgZGVmIHNlbGYubWFrZShuKQ0KICAgIHJldHVybiBu aWwgdW5sZXNzIG4uZXZlbj8NCiAgICANCiAgICBzZWxmLm5ldyhuKQ0KICBlbmQNCmVuZA0KYGBg DQoNCkkgYmVsaWV2ZSB0aGF0IGluIHRoaXMgc25pcHBldCwgdGhlIGNhbGwgdG8gYHNlbGYubmV3 KG4pYCB3b3VsZCBub3QgYmUgZXF1YWwgdG8gYHJiX2NsYXNzX25ld19pbnN0YW5jZV9wYXNzX2t3 YCB3aGVuIGRvaW5nIHRoZSBgdm1fbWV0aG9kX2NmdW5jX2lzYCBzZWFyY2gsIGJlY2F1c2UgdGhl cmUgd2lsbCBoYXZlIGJlZW4gYW5vdGhlciBtZXRob2QgZW50cnkgY3JlYXRlZCBieSB0aGUgY2Fs bCB0byBgcHJpdmF0ZV9jbGFzc19tZXRob2QgOm5ld2AuDQoNCkknbSBjdXJpb3VzOiBjb3VsZCB3 ZSBhZGQgYSBzZWNvbmQgY2hlY2sgYWZ0ZXIgW3RoaXMgY2hlY2tdKGh0dHBzOi8vZ2l0aHViLmNv bS9ydWJ5L3J1YnkvY29tcGFyZS9tYXN0ZXIuLi5TaG9waWZ5OnJ1Ynk6aW5saW5lLW5ldyNkaWZm LTdlOTg3ZjEzZTc1OGE1MWJlMjBkOWNlMWUzOGFkNDZjYWJhZTJhZWJkZmU2OTY4NzIwZjBkNTcw ZGI2MTc3MmFSOTE4KSBzdWNoIHRoYXQgaWYgdGhlIG1ldGhvZCBlbnRyeSBpcyBgVk1fTUVUSE9E X1RZUEVfWlNVUEVSYCwgd2Uga2VlcCBzZWFyY2hpbmcgdG8gZmluZCB0aGUgYHN1cGVyYCBtZXRo b2QgdGhhdCB3b3VsZCBiZSBjYWxsZWQgYW5kIHNlZSBpZiB0aGUgYHN1cGVyYCBtZXRob2QgaXMg YHJiX2NsYXNzX25ld19pbnN0YW5jZV9wYXNzX2t3YD8gUGx1cyBhbHNvIGlubGluZSB0aGUgbG9n aWMgdG8gY2hlY2sgd2hldGhlciB0aGUgcHJpdmF0ZSBtZXRob2QgY2FsbCBpcyBva2F5IGluIHRo YXQgc2Vjb25kIGNvbmRpdGlvbiAoYmVmb3JlIHRoZSBmaW5hbCBkZW9wdGltaXphdGlvbiBqdW1w KS4NCg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1 cmUgIzIxMjU0OiBJbmxpbmluZyBDbGFzcyNuZXcNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn L2lzc3Vlcy8yMTI1NCNjaGFuZ2UtMTEyNjY1DQoNCiogQXV0aG9yOiB0ZW5kZXJsb3ZlbWFraW5n IChBYXJvbiBQYXR0ZXJzb24pDQoqIFN0YXR1czogT3Blbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KV2Ugd291bGQgbGlrZSB0byBwcm9wb3NlIGlubGluaW5nIFlB UlYgYnl0ZWNvZGUgZm9yIHNwZWVkaW5nIHVwIG9iamVjdCBhbGxvY2F0aW9ucywgc3BlY2lmaWNh bGx5IGlubGluaW5nIHRoZSBgQ2xhc3MjbmV3YCBtZXRob2QuICBJbiBvcmRlciB0byBzdXBwb3J0 IGlubGluaW5nIHRoaXMgbWV0aG9kLCB3ZSB3b3VsZCBsaWtlIHRvIGludHJvZHVjZSBhIG5ldyBZ QVJWIGluc3RydWN0aW9uIGBvcHRfbmV3YC4gIFRoaXMgaW5zdHJ1Y3Rpb24gd2lsbCBhbGxvY2F0 ZSBhbiBvYmplY3QgaWYgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIGlzIG5vdCBvdmVycmlkZGVuLCBv dGhlcndpc2UgaXQgd2lsbCBqdW1wIHRvIGEg4oCcc2xvdyBwYXRo4oCdIGZvciBjYWxsaW5nIGEg bWV0aG9kLg0KDQpgQ2xhc3MjbmV3YCBlc3BlY2lhbGx5IGJlbmVmaXRzIGZyb20gaW5saW5pbmcg Zm9yIHR3byByZWFzb25zOg0KMS4gQ2FsbGluZyBgaW5pdGlhbGl6ZWAgZGlyZWN0bHkgbWVhbnMg d2UgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIHRlbXBvcmFyeSBoYXNoIGZvciBrZXl3b3JkIGFy Z3VtZW50cw0KMi4gV2UgYXJlIGFibGUgdG8gdXNlIGFuIGlubGluZSBjYWNoZSB3aGVuIGNhbGxp bmcgdGhlIGBpbml0aWFsaXplYCBtZXRob2QNCg0KVGhlIHBhdGNoIGNhbiBiZSBmb3VuZCBbaGVy ZV0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzEzMDgwKSwgYnV0IHBsZWFzZSBm aW5kIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYmVsb3cuDQoNCiMjIEltcGxlbWVudGF0aW9uIERl dGFpbHMNClRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbXBpbGVyIHRvIGVtaXQgc3BlY2lhbCBp bnN0cnVjdGlvbnMgd2hlbiBpdCBzZWVzIGEgY2FsbHNpdGUgdGhhdCB1c2VzIOKAnG5ld+KAnS4g IEJlZm9yZSB0aGlzIHBhdGNoLCBjYWxsaW5nIGBPYmplY3QubmV3YCB3b3VsZCByZXN1bHQgaW4g Ynl0ZWNvZGUgbGlrZSB0aGlzOg0KDQpgYGANCnJ1YnkgLS1kdW1wPWluc25zIC1lJ09iamVjdC5u ZXcnDQo9PSBkaXNhc206ICM8SVNlcTo8bWFpbj5ALWU6MSAoMSwwKS0oMSwxMCk+DQowMDAwIG9w dF9nZXRjb25zdGFudF9wYXRoICAgICAgICAgICAgICAgICAgIDxpYzowIE9iamVjdD4gICAgICAg ICAgICAgKCAgIDEpW0xpXQ0KMDAwMiBvcHRfc2VuZF93aXRob3V0X2Jsb2NrICAgICAgICAgICAg ICAgICA8Y2FsbGRhdGEhbWlkOm5ldywgYXJnYzowLCBBUkdTX1NJTVBMRT4NCjAwMDQgbGVhdmUN CmBgYA0KDQpXaXRoIHRoaXMgcGF0Y2gsIHRoZSBieXRlY29kZSBsb29rcyBsaWtlIHRoaXM6DQoN CmBgYA0KLi9ydWJ5IC0tZHVtcD1pbnNucyAtZSdPYmplY3QubmV3Jw0KPT0gZGlzYXNtOiAjPElT ZXE6PG1haW4+QC1lOjEgKDEsMCktKDEsMTApPg0KMDAwMCBvcHRfZ2V0Y29uc3RhbnRfcGF0aCAg ICAgICAgICAgICAgICAgICA8aWM6MCBPYmplY3Q+ICAgICAgICAgICAgICggICAxKVtMaV0NCjAw MDIgcHV0bmlsDQowMDAzIHN3YXANCjAwMDQgb3B0X25ldyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGNhbGxkYXRhIW1pZDpuZXcsIGFyZ2M6MCwgQVJHU19TSU1QTEU+LCAxMQ0KMDAw NyBvcHRfc2VuZF93aXRob3V0X2Jsb2NrICAgICAgICAgICAgICAgICA8Y2FsbGRhdGEhbWlkOmlu aXRpYWxpemUsIGFyZ2M6MCwgRkNBTEx8QVJHU19TSU1QTEU+DQowMDA5IGp1bXAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDE0DQowMDExIG9wdF9zZW5kX3dpdGhvdXRfYmxvY2sg ICAgICAgICAgICAgICAgIDxjYWxsZGF0YSFtaWQ6bmV3LCBhcmdjOjAsIEFSR1NfU0lNUExFPg0K MDAxMyBzd2FwDQowMDE0IHBvcA0KMDAxNSBsZWF2ZQ0KYGBgDQoNClRoZSBuZXcgYG9wdF9uZXdg IGluc3RydWN0aW9uIGNoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgYG5ld2AgaW1wbGVtZW50YXRp b24gaXMgdGhlIGRlZmF1bHQg4oCcYWxsb2NhdG9y4oCdIGltcGxlbWVudGF0aW9uLiAgSWYgaXQg aXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yLCB0aGVuIHRoZSBpbnN0cnVjdGlvbiB3aWxsIGFsbG9j YXRlIHRoZSBvYmplY3QgYW5kIGNhbGwgaW5pdGlhbGl6ZSBwYXNzaW5nIHBhcmFtZXRlcnMgdG8g aW5pdGlhbGl6ZSBidXQgbm90IHRvIGBuZXdgLiAgSWYgdGhlIG1ldGhvZCBpcyBub3QgdGhlIGRl ZmF1bHQgYWxsb2NhdG9yIGltcGxlbWVudGF0aW9uLCBpdCB3aWxsIGp1bXAgdG8gdGhlIG5vcm1h bCBtZXRob2QgZGlzcGF0Y2ggaW5zdHJ1Y3Rpb25zLg0KUGVyZm9ybWFuY2UgSW1wcm92ZW1lbnRz DQpUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIGFsbCBhbGxvY2F0aW9ucyB0aGF0 IHVzZSB0aGUgbm9ybWFsIOKAnG5ld+KAnSBtZXRob2QgZm9yIGFsbG9jYXRpb24uICBIZXJlIGFy ZSB0d28gZXhhbXBsZXMgKGFsbCBvZiB0aGVzZSBiZW5jaG1hcmtzIGNvbXBhcmUgUnVieSAzLjQu MiBhZ2FpbnN0IFJ1YnkgbWFzdGVyIHdpdGggaW5saW5pbmcgcGF0Y2gpOg0KDQpBIHNpbXBsZSBg T2JqZWN0Lm5ld2AgaW4gYSBob3QgbG9vcCBpbXByb3ZlcyBieSBhYm91dCAyNCU6DQoNCmBgYA0K aHlwZXJmaW5lICJydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwgMTBfMDAw XzAwMDsgT2JqZWN0Lm5ldzsgaSArPSAxOyBlbmQnIiAiLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIC1l J2kgPSAwOyB3aGlsZSBpIDwgMTBfMDAwXzAwMDsgT2JqZWN0Lm5ldzsgaSArPSAxOyBlbmQnIg0K QmVuY2htYXJrIDE6IHJ1YnkgLS1kaXNhYmxlLWdlbXMgLWUnaSA9IDA7IHdoaWxlIGkgPCAxMF8w MDBfMDAwOyBPYmplY3QubmV3OyBpICs9IDE7IGVuZCcNCiAgVGltZSAobWVhbiDCsSDPgyk6ICAg ICA0MzYuNiBtcyDCsSAgIDMuMyBtcyAgICBbVXNlcjogNDMyLjMgbXMsIFN5c3RlbTogMy44IG1z XQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgIDQzMC41IG1zIOKApiA0NDIuNiBtcyAgICAxMCBy dW5zDQogDQpCZW5jaG1hcmsgMjogLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGls ZSBpIDwgMTBfMDAwXzAwMDsgT2JqZWN0Lm5ldzsgaSArPSAxOyBlbmQnDQogIFRpbWUgKG1lYW4g wrEgz4MpOiAgICAgMzUxLjEgbXMgwrEgICAzLjYgbXMgICAgW1VzZXI6IDM0Ny40IG1zLCBTeXN0 ZW06IDMuMyBtc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAzNDMuOSBtcyDigKYgMzU3LjQg bXMgICAgMTAgcnVucw0KIA0KU3VtbWFyeQ0KICAuL3J1YnkgLS1kaXNhYmxlLWdlbXMgLWUnaSA9 IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBPYmplY3QubmV3OyBpICs9IDE7IGVuZCcgcmFuDQog ICAgMS4yNCDCsSAwLjAyIHRpbWVzIGZhc3RlciB0aGFuIHJ1YnkgLS1kaXNhYmxlLWdlbXMgLWUn aSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBPYmplY3QubmV3OyBpICs9IDE7IGVuZCcNCmBg YA0KDQpVc2luZyBhIHNpbmdsZSBrZXl3b3JkIGFyZ3VtZW50IGlzIGltcHJvdmVkIGJ5IGFib3V0 IDcyJToNCg0KYGBgDQo+IGh5cGVyZmluZSAicnVieSAtLWRpc2FibGUtZ2VtcyAtZSdpID0gMDsg d2hpbGUgaSA8IDEwXzAwMF8wMDA7IEhhc2gubmV3KGNhcGFjaXR5OiAwKTsgaSArPSAxOyBlbmQn IiAiLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwgMTBfMDAwXzAwMDsg SGFzaC5uZXcoY2FwYWNpdHk6IDApOyBpICs9IDE7IGVuZCciDQpCZW5jaG1hcmsgMTogcnVieSAt LWRpc2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAwMF8wMDA7IEhhc2gubmV3KGNh cGFjaXR5OiAwKTsgaSArPSAxOyBlbmQnDQogIFRpbWUgKG1lYW4gwrEgz4MpOiAgICAgIDEuMDgy IHMgwrEgIDAuMDA3IHMgICAgW1VzZXI6IDEuMDc0IHMsIFN5c3RlbTogMC4wMDggc10NCiAgUmFu Z2UgKG1pbiDigKYgbWF4KTogICAgMS4wNzEgcyDigKYgIDEuMDkxIHMgICAgMTAgcnVucw0KIA0K QmVuY2htYXJrIDI6IC4vcnVieSAtLWRpc2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEw XzAwMF8wMDA7IEhhc2gubmV3KGNhcGFjaXR5OiAwKTsgaSArPSAxOyBlbmQnDQogIFRpbWUgKG1l YW4gwrEgz4MpOiAgICAgNjI3LjYgbXMgwrEgICA0LjggbXMgICAgW1VzZXI6IDYyMi42IG1zLCBT eXN0ZW06IDQuNSBtc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICA2MjIuMSBtcyDigKYgNjM3 LjIgbXMgICAgMTAgcnVucw0KIA0KU3VtbWFyeQ0KICAuL3J1YnkgLS1kaXNhYmxlLWdlbXMgLWUn aSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBIYXNoLm5ldyhjYXBhY2l0eTogMCk7IGkgKz0g MTsgZW5kJyByYW4NCiAgICAxLjcyIMKxIDAuMDIgdGltZXMgZmFzdGVyIHRoYW4gcnVieSAtLWRp c2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAwMF8wMDA7IEhhc2gubmV3KGNhcGFj aXR5OiAwKTsgaSArPSAxOyBlbmQnDQpgYGANCg0KVGhlIHBlcmZvcm1hbmNlIGluY3JlYXNlIGRl cGVuZHMgb24gdGhlIG51bWJlciBhbmQgdHlwZSBvZiBwYXJhbWV0ZXJzIHBhc3NlZCB0byBgaW5p dGlhbGl6ZWAuICBGb3IgZXhhbXBsZSwgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0IHRha2Vz IDMgcGFyYW1ldGVycyBjYW4gc2VlIGEgc3BlZWQgaW1wcm92ZW1lbnQgb2YgfjN4Og0KDQpgYGAN CmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gY2F0IHRlc3QucmIN CmNsYXNzIEZvbw0KICBkZWYgaW5pdGlhbGl6ZSBhOiwgYjosIGM6DQogIGVuZA0KZW5kDQppID0g MA0Kd2hpbGUgaSA8IDEwXzAwMF8wMDANCiAgRm9vLm5ldyhhOiAxLCBiOiAyLCBjOiAzKQ0KICBG b28ubmV3KGE6IDEsIGI6IDIsIGM6IDMpDQogIEZvby5uZXcoYTogMSwgYjogMiwgYzogMykNCiAg aSArPSAxDQplbmQNCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4g aHlwZXJmaW5lICJydWJ5IC0tZGlzYWJsZS1nZW1zIHRlc3QucmIiICIuL3J1YnkgLS1kaXNhYmxl LWdlbXMgdGVzdC5yYiINCkJlbmNobWFyayAxOiBydWJ5IC0tZGlzYWJsZS1nZW1zIHRlc3QucmIN CiAgVGltZSAobWVhbiDCsSDPgyk6ICAgICAgMy43MDAgcyDCsSAgMC4wMzMgcyAgICBbVXNlcjog My42ODEgcywgU3lzdGVtOiAwLjAxOCBzXQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgICAzLjYz NiBzIOKApiAgMy43NTEgcyAgICAxMCBydW5zDQogDQpCZW5jaG1hcmsgMjogLi9ydWJ5IC0tZGlz YWJsZS1nZW1zIHRlc3QucmINCiAgVGltZSAobWVhbiDCsSDPgyk6ICAgICAgMS4xODIgcyDCsSAg MC4wMTMgcyAgICBbVXNlcjogMS4xNzMgcywgU3lzdGVtOiAwLjAwOCBzXQ0KICBSYW5nZSAobWlu IOKApiBtYXgpOiAgICAxLjE2NSBzIOKApiAgMS4yMDMgcyAgICAxMCBydW5zDQogDQpTdW1tYXJ5 DQogIC4vcnVieSAtLWRpc2FibGUtZ2VtcyB0ZXN0LnJiIHJhbg0KICAgIDMuMTMgwrEgMC4wNCB0 aW1lcyBmYXN0ZXIgdGhhbiBydWJ5IC0tZGlzYWJsZS1nZW1zIHRlc3QucmINCmBgYA0KDQpPbmUg ZmFjdG9yIGluIHRoZSBwZXJmb3JtYW5jZSBpbmNyZWFzZSBmb3Iga2V5d29yZCBhcmd1bWVudHMg aXMgdGhhdCBpbmxpbmluZyBpcyBhYmxlIHRvIGVsaW1pbmF0ZSB0aGUgaGFzaCBhbGxvY2F0aW9u IHdoZW4gY2FsbGluZyDigJx0aHJvdWdo4oCdIHRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGBDbGFz cyNuZXdgOg0KDQpgYGANCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3 KT4gY2F0IHRlc3QucmINCmNsYXNzIEZvbw0KICBkZWYgaW5pdGlhbGl6ZSBhOiwgYjosIGM6DQog IGVuZA0KZW5kDQpkZWYgYWxsb2NzDQogIHggPSBHQy5zdGF0KDp0b3RhbF9hbGxvY2F0ZWRfb2Jq ZWN0cykNCiAgeWllbGQNCiAgR0Muc3RhdCg6dG90YWxfYWxsb2NhdGVkX29iamVjdHMpIC0geA0K ZW5kDQpkZWYgdGVzdDsgYWxsb2NzIHsgRm9vLm5ldyhhOiAxLCBiOiAyLCBjOiAzKSB9OyBlbmQN CnRlc3QNCnAgdGVzdA0KYWFyb25AdGMtbGFuLWFkYXB0ZXIgfi9nL3J1YnkgKGlubGluZS1uZXcp PiBydWJ5IC12IHRlc3QucmINCnJ1YnkgMy40LjIgKDIwMjUtMDItMTUgcmV2aXNpb24gZDI5MzBm OGU3YSkgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCjINCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4v Zy9ydWJ5IChpbmxpbmUtbmV3KT4gLi9ydWJ5IC12IHRlc3QucmINCnJ1YnkgMy41LjBkZXYgKDIw MjUtMDQtMDNUMTM6MDM6MTlaIGlubGluZS1uZXcgNTY3YzU0MjA4YykgK1BSSVNNIFthcm02NC1k YXJ3aW4yNF0NCjENCmBgYA0KDQojIyBNZW1vcnkgSW5jcmVhc2UNCg0KT2YgY291cnNlIHRoaXMg cGF0Y2ggaXMgbm90IOKAnGZyZWXigJ0uICBJbmxpbmluZyB0aGUgbWV0aG9kIGNhbGwgYWRkcyBl eHRyYSBZQVJWIGluc3RydWN0aW9ucy4gIFdlIGVzdGltYXRlIHRoaXMgcGF0Y2ggaW5jcmVhc2Vz IGBuZXdgIGNhbGwgc2l0ZXMgYnkgYWJvdXQgMTIyIGJ5dGVzOg0KDQpgYGANCmFhcm9uQHRjLWxh bi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gY2F0IHRlc3QucmINCnJlcXVpcmUgIm9i anNwYWNlIg0KY2xhc3MgRm9vDQogIGRlZiBpbml0aWFsaXplDQogIGVuZA0KZW5kDQpkZWYgdGVz dA0KICBGb28ubmV3DQplbmQNCnB1dHMgT2JqZWN0U3BhY2UubWVtc2l6ZV9vZihSdWJ5Vk06Oklu c3RydWN0aW9uU2VxdWVuY2Uub2YobWV0aG9kKDp0ZXN0KSkpDQphYXJvbkB0Yy1sYW4tYWRhcHRl ciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IHJ1YnkgLXYgdGVzdC5yYg0KcnVieSAzLjQuMiAoMjAy NS0wMi0xNSByZXZpc2lvbiBkMjkzMGY4ZTdhKSArUFJJU00gW2FybTY0LWRhcndpbjI0XQ0KNTQ0 DQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IC4vcnVieSAtdiB0 ZXN0LnJiDQpydWJ5IDMuNS4wZGV2ICgyMDI1LTA0LTAzVDEzOjAzOjE5WiBpbmxpbmUtbmV3IDU2 N2M1NDIwOGMpICtQUklTTSBbYXJtNjQtZGFyd2luMjRdDQo2NTYNCmBgYA0KDQpXZeKAmXZlIHRl c3RlZCB0aGlzIGluIFNob3BpZnnigJlzIG1vbm9saXRoLCBjb21wYXJpbmcgUnVieSAzLjQuMiBh bmQgUnVieSAzLjUraW5saW5pbmcsIGFuZCBpdCBzZWVtcyB0byBpbmNyZWFzZSB0b3RhbCBJU0VR IG1lbWVzaXplIGJ5IGFib3V0IDMuOG1iIChyb3VnaGx5IDAuNSUgaW5jcmVhc2UgaW4gSVNFUSBz aXplKToNCg0KYGBgDQppcmIobWFpbik6MDAxPiA3MzcxOTE5NzIgLSA3MzMzNTQzODgNCj0+IDM4 Mzc1ODQNCmBgYA0KDQpIb3dldmVyLCBSdWJ5IDMuNSBoYXMgbW9yZSBvdmVyYWxsIElTRVEgb2Jq ZWN0cyB0aGFuIFJ1YnkgMy40LjI6DQoNCmBgYA0KYWFyb25AQWFyb25zLU1hY0Jvb2stUHJvIH4v RG93bmxvYWRzPiB3YyAtbCBzaXplcy1pbmxpbmUudHh0DQogIDc4OTU0NSBzaXplcy1pbmxpbmUu dHh0DQphYXJvbkBBYXJvbnMtTWFjQm9vay1Qcm8gfi9Eb3dubG9hZHM+IHdjIC1sIHNpemVzLTMu NC50eHQNCiAgNzg5NDc5IHNpemVzLTMuNC50eHQNCmBgYA0KDQpXZSBzZWUgdG90YWwgaGVhcCBz aXplIGFzIHJlcG9ydGVkIGJ5IGBtZW1zaXplYCB0byBvbmx5IGluY3JlYXNlIGJ5IGFib3V0IDFN QjoNCg0KYGBgDQppcmIobWFpbik6MDAxPiAzOTgxMDc1NjE3IC0gMzk3OTkyNjUwNQ0KPT4gMTE0 OTExMg0KYGBgDQoNCiMjIENoYW5nZXMgdG8gYGNhbGxlcmANCg0KVGhpcyBwYXRjaCBjaGFuZ2Vz IGBjYWxsZXJgIHJlcG9ydGluZyBpbiB0aGUgYGluaXRpYWxpemVgIG1ldGhvZDoNCg0KYGBgDQph YXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IGNhdCB0ZXN0LnJiDQpy ZXF1aXJlICJvYmpzcGFjZSINCg0KY2xhc3MgRm9vDQogIGRlZiBpbml0aWFsaXplDQogICAgcHV0 cyBjYWxsZXINCiAgZW5kDQplbmQNCg0KZGVmIHRlc3QNCiAgRm9vLm5ldw0KZW5kDQoNCnRlc3QN CmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gcnVieSAtdiB0ZXN0 LnJiDQpydWJ5IDMuNC4yICgyMDI1LTAyLTE1IHJldmlzaW9uIGQyOTMwZjhlN2EpICtQUklTTSBb YXJtNjQtZGFyd2luMjRdDQp0ZXN0LnJiOjEwOmluICdDbGFzcyNuZXcnDQp0ZXN0LnJiOjEwOmlu ICdPYmplY3QjdGVzdCcNCnRlc3QucmI6MTM6aW4gJzxtYWluPicNCmFhcm9uQHRjLWxhbi1hZGFw dGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gLi9ydWJ5IC12IHRlc3QucmINCnJ1YnkgMy41LjBk ZXYgKDIwMjUtMDQtMDNUMTM6MDM6MTlaIGlubGluZS1uZXcgNTY3YzU0MjA4YykgK1BSSVNNIFth cm02NC1kYXJ3aW4yNF0NCnRlc3QucmI6MTA6aW4gJ09iamVjdCN0ZXN0Jw0KdGVzdC5yYjoxMzpp biAnPG1haW4+Jw0KYGBgDQoNCkFzIHlvdSBjYW4gc2VlIGluIHRoZSBhYm92ZSBvdXRwdXQsIHRo ZSBgQ2xhc3MjbmV3YCBmcmFtZSBpcyBlbGltaW5hdGVkLiAgSSdtIG5vdCBzdXJlIGlmIGFueW9u ZSByZWFsbHkgY2FyZXMgYWJvdXQgdGhpcyBmcmFtZS4gIFdlJ3ZlIHRlc3RlZCB0aGlzIHBhdGNo IGluIFNob3BpZnkncyBDSSwgYW5kIGRpZG4ndCBmaW5kIGFueSBjb2RlIHRoYXQgZGVwZW5kcyBv biB0aGlzIGNhbGxzdGFjay4gIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggZGlkIHJlcXVpcmUgW2NoYW5n ZXMgdG8gRVJCIGZvciBlbWl0dGluZyB3YXJuaW5nc10oaHR0cHM6Ly9naXRodWIuY29tL3J1Ynkv cnVieS9wdWxsLzEzMDgwL2ZpbGVzI2RpZmYtNzYyNGY5NWY1MjFiMzMzM2RlOGM2ODdkNzBjMjU3 NGFhMzE2MTZjZWJmOTUwNGQ4YmNmNjczODY1ZmJmNmVjZFI0NzUtUjQ4NikuDQoNClRoYXQgc2Fp ZCwgZWxpbWluYXRpbmcgdGhlIGZyYW1lIGFsc28gaGFzIHRoZSBzaWRlLWVmZmVjdCBvZiBtYWtp bmcgc29tZSBvZiBvdXIgYWxsb2NhdGlvbiB0cmFjaW5nIHRvb2xzIGEgbGl0dGxlIG1vcmUgdXNl ZnVsOg0KDQpgYGANCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4g Y2F0IHRlc3QucmINCnJlcXVpcmUgIm9ianNwYWNlIg0KDQpjbGFzcyBGb28NCiAgZGVmIHRlc3QN CiAgICBPYmplY3QubmV3DQogIGVuZA0KZW5kDQoNCk9iamVjdFNwYWNlLnRyYWNlX29iamVjdF9h bGxvY2F0aW9ucyBkbw0KICBvYmogPSBGb28ubmV3LnRlc3QNCiAgcHV0cyBPYmplY3RTcGFjZS5h bGxvY2F0aW9uX2NsYXNzX3BhdGgob2JqKQ0KICBwdXRzIE9iamVjdFNwYWNlLmFsbG9jYXRpb25f bWV0aG9kX2lkKG9iaikNCmVuZA0KYWFyb25AdGMtbGFuLWFkYXB0ZXIgfi9nL3J1YnkgKGlubGlu ZS1uZXcpPiBydWJ5IC12IHRlc3QucmINCnJ1YnkgMy40LjIgKDIwMjUtMDItMTUgcmV2aXNpb24g ZDI5MzBmOGU3YSkgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCkNsYXNzDQpuZXcNCmFhcm9uQHRj LWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gLi9ydWJ5IC12IHRlc3QucmINCnJ1 YnkgMy41LjBkZXYgKDIwMjUtMDQtMDdUMTk6NDA6NTlaIGlubGluZS1uZXcgMmNmMGVmYTE4ZSkg K1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCkZvbw0KdGVzdA0KYGBgDQoNCkJlZm9yZSBpbmxpbmlu ZywgYE9iamVjdFNwYWNlYCB3b3VsZCByZXBvcnQgdGhlIGFsbG9jYXRpb24gY2xhc3MgcGF0aCBh bmQgbWV0aG9kIGlkIGFzIGBDbGFzcyNuZXdgIHdoaWNoIGlzbid0IHZlcnkgaGVscGZ1bC4gV2l0 aCB0aGUgaW5saW5pbmcgcGF0Y2gsIHdlIGNhbiBzZWUgdGhhdCB0aGUgb2JqZWN0IGlzIGFsbG9j YXRlZCBpbiBgRm9vI3Rlc3RgLg0KDQojIyBTdW1tYXJ5DQoNCkkgdGhpbmsgdGhlIG92ZXJhbGwg bWVtb3J5IGluY3JlYXNlIGlzIG1vZGVzdCwgYW5kIHRoZSBjaGFuZ2UgdG8gYGNhbGxlcmAgaXMg YWNjZXB0YWJsZSBlc3BlY2lhbGx5IGdpdmVuIHRoZSBwZXJmb3JtYW5jZSBpbmNyZWFzZSB0aGlz IHBhdGNoIHByb3ZpZGVzLg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8N CiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNv cmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNj cmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBy dWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMv cnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv