[ruby-core:121615] [Ruby Feature#21254] Inlining Class#new
From:
"tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>
Date:
2025-04-09 23:15:05 UTC
List:
ruby-core #121615
SXNzdWUgIzIxMjU0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGVuZGVybG92ZW1ha2luZyAoQWFyb24g UGF0dGVyc29uKS4NCg0KDQp0ZW5kZXJsb3ZlbWFraW5nIChBYXJvbiBQYXR0ZXJzb24pIHdyb3Rl IGluICNub3RlLTc6DQo+IEkgbWFkZSBhIHBhdGNoIGZvciBpdCBbaGVyZV0oaHR0cHM6Ly9naXRo dWIuY29tL3J1YnkvcnVieS9jb21taXQvYjhlMzdmZDVjYzU4OGQwNTU3NmIyNGMxM2Y5NGM1NDQw OWIyYTlkYiksIGJ1dCBJIGhhdmVuJ3QgdGVzdGVkIGl0IGluIENJIHlldC4NCg0KQGpoYXd0aG9y biBwb2ludGVkIG91dCBhIHByb2JsZW0gdG8gbWUgd2l0aCB0aGlzIHBhdGNoIHRoYXQgSSBkaWRu J3QgdGhpbmsgYWJvdXQuDQoNCklmIHdlIGNvbnNpZGVyIHRoaXMgY29kZToNCg0KYGBgcnVieQ0K Y2xhc3MgQQ0KICBwcml2YXRlX2NsYXNzX21ldGhvZCA6bmV3DQoNCiAgZGVmIHNlbGYubWFrZQ0K ICAgIG5ldyAjIGZhc3QgcGF0aA0KICBlbmQNCmVuZA0KQS5tYWtlDQpBLm1ha2UNCmBgYA0KDQpX aGVuIHdlIHRyeSB0byBbbG9vayB1cCB0aGUgYG5ld2AgbWV0aG9kXShodHRwczovL2dpdGh1Yi5j b20vcnVieS9ydWJ5L2NvbW1pdC9iOGUzN2ZkNWNjNTg4ZDA1NTc2YjI0YzEzZjk0YzU0NDA5YjJh OWRiI2RpZmYtZjhjMTc0MzQ3ZTZlYTg4ODliNTAzNjA2NGExZmY0ZmU1ZTdjNTNhODIxYmVmYTli ZGM1Y2NiZjE3ODAwYTY0OVIyMzUyKSBpdCB3aWxsIGZpbGwgb3V0IHRoZSBpbmxpbmUgY2FjaGUg d2l0aCB0aGUgWlNVUEVSIGVudHJ5LiAgQnV0IHNpbmNlIHRoZSBaU1VQRVIgZW50cnkgW3dvbid0 IHBhc3MgdGhlIGByYl9jbGFzc19uZXdfaW5zdGFuY2VfcGFzc19rd2AgY2hlY2tdKGh0dHBzOi8v Z2l0aHViLmNvbS9ydWJ5L3J1YnkvY29tbWl0L2I4ZTM3ZmQ1Y2M1ODhkMDU1NzZiMjRjMTNmOTRj NTQ0MDliMmE5ZGIjZGlmZi1mOGMxNzQzNDdlNmVhODg4OWI1MDM2MDY0YTFmZjRmZTVlN2M1M2E4 MjFiZWZhOWJkYzVjY2JmMTc4MDBhNjQ5UjIzNTkpLCB3ZSdsbCBlbmQgdXAgW2xvb2tpbmcgdXAg dGhlIGBuZXdgIG1ldGhvZCBpbiBmcm9tIHRoZSBzdXBlcmNsYXNzXShodHRwczovL2dpdGh1Yi5j b20vcnVieS9ydWJ5L2NvbW1pdC9iOGUzN2ZkNWNjNTg4ZDA1NTc2YjI0YzEzZjk0YzU0NDA5YjJh OWRiI2RpZmYtZjhjMTc0MzQ3ZTZlYTg4ODliNTAzNjA2NGExZmY0ZmU1ZTdjNTNhODIxYmVmYTli ZGM1Y2NiZjE3ODAwYTY0OVIyMzY0KSwgd2hpY2ggd2lsbCBmaWxsIG91dCB0aGUgaW5saW5lIGNh Y2hlIHdpdGggdGhlIG1ldGhvZCBmcm9tIHRoZSBzdXBlcmNsYXNzLg0KDQpPbiB0aGUgbmV4dCBj YWxsIHRvIGBBLm1ha2VgLCBpdCB3aWxsIG1pc3MgY2FjaGUgYWdhaW4gYmVjYXVzZSB0aGUgcmVj ZWl2ZXIgaXMgYEFgLCBiYXNpY2FsbHkgcmVwZWF0aW5nIHRoZSBhYm92ZSBzdGVwcy4gIEluIHRo aXMgY2FzZSB0aGUgaW5saW5lIGNhY2hlIHdpbGwga2VlcCBwaW5nLXBvbmdpbmcgYmV0d2VlbiB0 aGUgWlNVUEVSIG1ldGhvZCBhbmQgdGhlIHN1cGVyY2xhc3NlcyBtZXRob2Q7IG5ldmVyIGhpdHRp bmcuDQoNCk1heWJlIHdlIGNhbiBmaWd1cmUgb3V0IGEgd2F5IHRvIGRvIHRoaXMgaW4gdGhlIGZ1 dHVyZSwgYnV0IEknbSBub3Qgc3VyZSBpZiBpdCdzIGEgZ29vZCBpZGVhIHJpZ2h0IG5vdy4gIFRo aXMgcGFydGljdWxhciBjYXNlIG1pZ2h0IGFjdHVhbGx5IGJlIGJldHRlciBoYW5kbGVkIGJ5IHRo ZSBKSVQgdGhhbiB0aGUgaW50ZXJwcmV0ZXIuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIxMjU0OiBJbmxpbmluZyBDbGFzcyNuZXcNCmh0dHBz Oi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTI1NCNjaGFuZ2UtMTEyNjY3DQoNCiogQXV0 aG9yOiB0ZW5kZXJsb3ZlbWFraW5nIChBYXJvbiBQYXR0ZXJzb24pDQoqIFN0YXR1czogT3Blbg0K LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KV2Ugd291bGQgbGlrZSB0 byBwcm9wb3NlIGlubGluaW5nIFlBUlYgYnl0ZWNvZGUgZm9yIHNwZWVkaW5nIHVwIG9iamVjdCBh bGxvY2F0aW9ucywgc3BlY2lmaWNhbGx5IGlubGluaW5nIHRoZSBgQ2xhc3MjbmV3YCBtZXRob2Qu ICBJbiBvcmRlciB0byBzdXBwb3J0IGlubGluaW5nIHRoaXMgbWV0aG9kLCB3ZSB3b3VsZCBsaWtl IHRvIGludHJvZHVjZSBhIG5ldyBZQVJWIGluc3RydWN0aW9uIGBvcHRfbmV3YC4gIFRoaXMgaW5z dHJ1Y3Rpb24gd2lsbCBhbGxvY2F0ZSBhbiBvYmplY3QgaWYgdGhlIGRlZmF1bHQgYWxsb2NhdG9y IGlzIG5vdCBvdmVycmlkZGVuLCBvdGhlcndpc2UgaXQgd2lsbCBqdW1wIHRvIGEg4oCcc2xvdyBw YXRo4oCdIGZvciBjYWxsaW5nIGEgbWV0aG9kLg0KDQpgQ2xhc3MjbmV3YCBlc3BlY2lhbGx5IGJl bmVmaXRzIGZyb20gaW5saW5pbmcgZm9yIHR3byByZWFzb25zOg0KMS4gQ2FsbGluZyBgaW5pdGlh bGl6ZWAgZGlyZWN0bHkgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIHRlbXBvcmFy eSBoYXNoIGZvciBrZXl3b3JkIGFyZ3VtZW50cw0KMi4gV2UgYXJlIGFibGUgdG8gdXNlIGFuIGlu bGluZSBjYWNoZSB3aGVuIGNhbGxpbmcgdGhlIGBpbml0aWFsaXplYCBtZXRob2QNCg0KVGhlIHBh dGNoIGNhbiBiZSBmb3VuZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxs LzEzMDgwKSwgYnV0IHBsZWFzZSBmaW5kIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYmVsb3cuDQoN CiMjIEltcGxlbWVudGF0aW9uIERldGFpbHMNClRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbXBp bGVyIHRvIGVtaXQgc3BlY2lhbCBpbnN0cnVjdGlvbnMgd2hlbiBpdCBzZWVzIGEgY2FsbHNpdGUg dGhhdCB1c2VzIOKAnG5ld+KAnS4gIEJlZm9yZSB0aGlzIHBhdGNoLCBjYWxsaW5nIGBPYmplY3Qu bmV3YCB3b3VsZCByZXN1bHQgaW4gYnl0ZWNvZGUgbGlrZSB0aGlzOg0KDQpgYGANCnJ1YnkgLS1k dW1wPWluc25zIC1lJ09iamVjdC5uZXcnDQo9PSBkaXNhc206ICM8SVNlcTo8bWFpbj5ALWU6MSAo MSwwKS0oMSwxMCk+DQowMDAwIG9wdF9nZXRjb25zdGFudF9wYXRoICAgICAgICAgICAgICAgICAg IDxpYzowIE9iamVjdD4gICAgICAgICAgICAgKCAgIDEpW0xpXQ0KMDAwMiBvcHRfc2VuZF93aXRo b3V0X2Jsb2NrICAgICAgICAgICAgICAgICA8Y2FsbGRhdGEhbWlkOm5ldywgYXJnYzowLCBBUkdT X1NJTVBMRT4NCjAwMDQgbGVhdmUNCmBgYA0KDQpXaXRoIHRoaXMgcGF0Y2gsIHRoZSBieXRlY29k ZSBsb29rcyBsaWtlIHRoaXM6DQoNCmBgYA0KLi9ydWJ5IC0tZHVtcD1pbnNucyAtZSdPYmplY3Qu bmV3Jw0KPT0gZGlzYXNtOiAjPElTZXE6PG1haW4+QC1lOjEgKDEsMCktKDEsMTApPg0KMDAwMCBv cHRfZ2V0Y29uc3RhbnRfcGF0aCAgICAgICAgICAgICAgICAgICA8aWM6MCBPYmplY3Q+ICAgICAg ICAgICAgICggICAxKVtMaV0NCjAwMDIgcHV0bmlsDQowMDAzIHN3YXANCjAwMDQgb3B0X25ldyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhbGxkYXRhIW1pZDpuZXcsIGFyZ2M6MCwg QVJHU19TSU1QTEU+LCAxMQ0KMDAwNyBvcHRfc2VuZF93aXRob3V0X2Jsb2NrICAgICAgICAgICAg ICAgICA8Y2FsbGRhdGEhbWlkOmluaXRpYWxpemUsIGFyZ2M6MCwgRkNBTEx8QVJHU19TSU1QTEU+ DQowMDA5IGp1bXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0DQowMDExIG9w dF9zZW5kX3dpdGhvdXRfYmxvY2sgICAgICAgICAgICAgICAgIDxjYWxsZGF0YSFtaWQ6bmV3LCBh cmdjOjAsIEFSR1NfU0lNUExFPg0KMDAxMyBzd2FwDQowMDE0IHBvcA0KMDAxNSBsZWF2ZQ0KYGBg DQoNClRoZSBuZXcgYG9wdF9uZXdgIGluc3RydWN0aW9uIGNoZWNrcyB3aGV0aGVyIG9yIG5vdCB0 aGUgYG5ld2AgaW1wbGVtZW50YXRpb24gaXMgdGhlIGRlZmF1bHQg4oCcYWxsb2NhdG9y4oCdIGlt cGxlbWVudGF0aW9uLiAgSWYgaXQgaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yLCB0aGVuIHRoZSBp bnN0cnVjdGlvbiB3aWxsIGFsbG9jYXRlIHRoZSBvYmplY3QgYW5kIGNhbGwgaW5pdGlhbGl6ZSBw YXNzaW5nIHBhcmFtZXRlcnMgdG8gaW5pdGlhbGl6ZSBidXQgbm90IHRvIGBuZXdgLiAgSWYgdGhl IG1ldGhvZCBpcyBub3QgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIGltcGxlbWVudGF0aW9uLCBpdCB3 aWxsIGp1bXAgdG8gdGhlIG5vcm1hbCBtZXRob2QgZGlzcGF0Y2ggaW5zdHJ1Y3Rpb25zLg0KUGVy Zm9ybWFuY2UgSW1wcm92ZW1lbnRzDQpUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9m IGFsbCBhbGxvY2F0aW9ucyB0aGF0IHVzZSB0aGUgbm9ybWFsIOKAnG5ld+KAnSBtZXRob2QgZm9y IGFsbG9jYXRpb24uICBIZXJlIGFyZSB0d28gZXhhbXBsZXMgKGFsbCBvZiB0aGVzZSBiZW5jaG1h cmtzIGNvbXBhcmUgUnVieSAzLjQuMiBhZ2FpbnN0IFJ1YnkgbWFzdGVyIHdpdGggaW5saW5pbmcg cGF0Y2gpOg0KDQpBIHNpbXBsZSBgT2JqZWN0Lm5ld2AgaW4gYSBob3QgbG9vcCBpbXByb3ZlcyBi eSBhYm91dCAyNCU6DQoNCmBgYA0KaHlwZXJmaW5lICJydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kg PSAwOyB3aGlsZSBpIDwgMTBfMDAwXzAwMDsgT2JqZWN0Lm5ldzsgaSArPSAxOyBlbmQnIiAiLi9y dWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwgMTBfMDAwXzAwMDsgT2JqZWN0 Lm5ldzsgaSArPSAxOyBlbmQnIg0KQmVuY2htYXJrIDE6IHJ1YnkgLS1kaXNhYmxlLWdlbXMgLWUn aSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBPYmplY3QubmV3OyBpICs9IDE7IGVuZCcNCiAg VGltZSAobWVhbiDCsSDPgyk6ICAgICA0MzYuNiBtcyDCsSAgIDMuMyBtcyAgICBbVXNlcjogNDMy LjMgbXMsIFN5c3RlbTogMy44IG1zXQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgIDQzMC41IG1z IOKApiA0NDIuNiBtcyAgICAxMCBydW5zDQogDQpCZW5jaG1hcmsgMjogLi9ydWJ5IC0tZGlzYWJs ZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwgMTBfMDAwXzAwMDsgT2JqZWN0Lm5ldzsgaSArPSAx OyBlbmQnDQogIFRpbWUgKG1lYW4gwrEgz4MpOiAgICAgMzUxLjEgbXMgwrEgICAzLjYgbXMgICAg W1VzZXI6IDM0Ny40IG1zLCBTeXN0ZW06IDMuMyBtc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTog ICAzNDMuOSBtcyDigKYgMzU3LjQgbXMgICAgMTAgcnVucw0KIA0KU3VtbWFyeQ0KICAuL3J1Ynkg LS1kaXNhYmxlLWdlbXMgLWUnaSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBPYmplY3QubmV3 OyBpICs9IDE7IGVuZCcgcmFuDQogICAgMS4yNCDCsSAwLjAyIHRpbWVzIGZhc3RlciB0aGFuIHJ1 YnkgLS1kaXNhYmxlLWdlbXMgLWUnaSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBPYmplY3Qu bmV3OyBpICs9IDE7IGVuZCcNCmBgYA0KDQpVc2luZyBhIHNpbmdsZSBrZXl3b3JkIGFyZ3VtZW50 IGlzIGltcHJvdmVkIGJ5IGFib3V0IDcyJToNCg0KYGBgDQo+IGh5cGVyZmluZSAicnVieSAtLWRp c2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAwMF8wMDA7IEhhc2gubmV3KGNhcGFj aXR5OiAwKTsgaSArPSAxOyBlbmQnIiAiLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3 aGlsZSBpIDwgMTBfMDAwXzAwMDsgSGFzaC5uZXcoY2FwYWNpdHk6IDApOyBpICs9IDE7IGVuZCci DQpCZW5jaG1hcmsgMTogcnVieSAtLWRpc2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEw XzAwMF8wMDA7IEhhc2gubmV3KGNhcGFjaXR5OiAwKTsgaSArPSAxOyBlbmQnDQogIFRpbWUgKG1l YW4gwrEgz4MpOiAgICAgIDEuMDgyIHMgwrEgIDAuMDA3IHMgICAgW1VzZXI6IDEuMDc0IHMsIFN5 c3RlbTogMC4wMDggc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAgMS4wNzEgcyDigKYgIDEu MDkxIHMgICAgMTAgcnVucw0KIA0KQmVuY2htYXJrIDI6IC4vcnVieSAtLWRpc2FibGUtZ2VtcyAt ZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAwMF8wMDA7IEhhc2gubmV3KGNhcGFjaXR5OiAwKTsgaSAr PSAxOyBlbmQnDQogIFRpbWUgKG1lYW4gwrEgz4MpOiAgICAgNjI3LjYgbXMgwrEgICA0LjggbXMg ICAgW1VzZXI6IDYyMi42IG1zLCBTeXN0ZW06IDQuNSBtc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4 KTogICA2MjIuMSBtcyDigKYgNjM3LjIgbXMgICAgMTAgcnVucw0KIA0KU3VtbWFyeQ0KICAuL3J1 YnkgLS1kaXNhYmxlLWdlbXMgLWUnaSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBIYXNoLm5l dyhjYXBhY2l0eTogMCk7IGkgKz0gMTsgZW5kJyByYW4NCiAgICAxLjcyIMKxIDAuMDIgdGltZXMg ZmFzdGVyIHRoYW4gcnVieSAtLWRpc2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAw MF8wMDA7IEhhc2gubmV3KGNhcGFjaXR5OiAwKTsgaSArPSAxOyBlbmQnDQpgYGANCg0KVGhlIHBl cmZvcm1hbmNlIGluY3JlYXNlIGRlcGVuZHMgb24gdGhlIG51bWJlciBhbmQgdHlwZSBvZiBwYXJh bWV0ZXJzIHBhc3NlZCB0byBgaW5pdGlhbGl6ZWAuICBGb3IgZXhhbXBsZSwgYW4gYGluaXRpYWxp emVgIG1ldGhvZCB0aGF0IHRha2VzIDMgcGFyYW1ldGVycyBjYW4gc2VlIGEgc3BlZWQgaW1wcm92 ZW1lbnQgb2YgfjN4Og0KDQpgYGANCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxp bmUtbmV3KT4gY2F0IHRlc3QucmINCmNsYXNzIEZvbw0KICBkZWYgaW5pdGlhbGl6ZSBhOiwgYjos IGM6DQogIGVuZA0KZW5kDQppID0gMA0Kd2hpbGUgaSA8IDEwXzAwMF8wMDANCiAgRm9vLm5ldyhh OiAxLCBiOiAyLCBjOiAzKQ0KICBGb28ubmV3KGE6IDEsIGI6IDIsIGM6IDMpDQogIEZvby5uZXco YTogMSwgYjogMiwgYzogMykNCiAgaSArPSAxDQplbmQNCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4v Zy9ydWJ5IChpbmxpbmUtbmV3KT4gaHlwZXJmaW5lICJydWJ5IC0tZGlzYWJsZS1nZW1zIHRlc3Qu cmIiICIuL3J1YnkgLS1kaXNhYmxlLWdlbXMgdGVzdC5yYiINCkJlbmNobWFyayAxOiBydWJ5IC0t ZGlzYWJsZS1nZW1zIHRlc3QucmINCiAgVGltZSAobWVhbiDCsSDPgyk6ICAgICAgMy43MDAgcyDC sSAgMC4wMzMgcyAgICBbVXNlcjogMy42ODEgcywgU3lzdGVtOiAwLjAxOCBzXQ0KICBSYW5nZSAo bWluIOKApiBtYXgpOiAgICAzLjYzNiBzIOKApiAgMy43NTEgcyAgICAxMCBydW5zDQogDQpCZW5j aG1hcmsgMjogLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIHRlc3QucmINCiAgVGltZSAobWVhbiDCsSDP gyk6ICAgICAgMS4xODIgcyDCsSAgMC4wMTMgcyAgICBbVXNlcjogMS4xNzMgcywgU3lzdGVtOiAw LjAwOCBzXQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgICAxLjE2NSBzIOKApiAgMS4yMDMgcyAg ICAxMCBydW5zDQogDQpTdW1tYXJ5DQogIC4vcnVieSAtLWRpc2FibGUtZ2VtcyB0ZXN0LnJiIHJh bg0KICAgIDMuMTMgwrEgMC4wNCB0aW1lcyBmYXN0ZXIgdGhhbiBydWJ5IC0tZGlzYWJsZS1nZW1z IHRlc3QucmINCmBgYA0KDQpPbmUgZmFjdG9yIGluIHRoZSBwZXJmb3JtYW5jZSBpbmNyZWFzZSBm b3Iga2V5d29yZCBhcmd1bWVudHMgaXMgdGhhdCBpbmxpbmluZyBpcyBhYmxlIHRvIGVsaW1pbmF0 ZSB0aGUgaGFzaCBhbGxvY2F0aW9uIHdoZW4gY2FsbGluZyDigJx0aHJvdWdo4oCdIHRoZSBDIGlt cGxlbWVudGF0aW9uIG9mIGBDbGFzcyNuZXdgOg0KDQpgYGANCmFhcm9uQHRjLWxhbi1hZGFwdGVy IH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gY2F0IHRlc3QucmINCmNsYXNzIEZvbw0KICBkZWYgaW5p dGlhbGl6ZSBhOiwgYjosIGM6DQogIGVuZA0KZW5kDQpkZWYgYWxsb2NzDQogIHggPSBHQy5zdGF0 KDp0b3RhbF9hbGxvY2F0ZWRfb2JqZWN0cykNCiAgeWllbGQNCiAgR0Muc3RhdCg6dG90YWxfYWxs b2NhdGVkX29iamVjdHMpIC0geA0KZW5kDQpkZWYgdGVzdDsgYWxsb2NzIHsgRm9vLm5ldyhhOiAx LCBiOiAyLCBjOiAzKSB9OyBlbmQNCnRlc3QNCnAgdGVzdA0KYWFyb25AdGMtbGFuLWFkYXB0ZXIg fi9nL3J1YnkgKGlubGluZS1uZXcpPiBydWJ5IC12IHRlc3QucmINCnJ1YnkgMy40LjIgKDIwMjUt MDItMTUgcmV2aXNpb24gZDI5MzBmOGU3YSkgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCjINCmFh cm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gLi9ydWJ5IC12IHRlc3Qu cmINCnJ1YnkgMy41LjBkZXYgKDIwMjUtMDQtMDNUMTM6MDM6MTlaIGlubGluZS1uZXcgNTY3YzU0 MjA4YykgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCjENCmBgYA0KDQojIyBNZW1vcnkgSW5jcmVh c2UNCg0KT2YgY291cnNlIHRoaXMgcGF0Y2ggaXMgbm90IOKAnGZyZWXigJ0uICBJbmxpbmluZyB0 aGUgbWV0aG9kIGNhbGwgYWRkcyBleHRyYSBZQVJWIGluc3RydWN0aW9ucy4gIFdlIGVzdGltYXRl IHRoaXMgcGF0Y2ggaW5jcmVhc2VzIGBuZXdgIGNhbGwgc2l0ZXMgYnkgYWJvdXQgMTIyIGJ5dGVz Og0KDQpgYGANCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gY2F0 IHRlc3QucmINCnJlcXVpcmUgIm9ianNwYWNlIg0KY2xhc3MgRm9vDQogIGRlZiBpbml0aWFsaXpl DQogIGVuZA0KZW5kDQpkZWYgdGVzdA0KICBGb28ubmV3DQplbmQNCnB1dHMgT2JqZWN0U3BhY2Uu bWVtc2l6ZV9vZihSdWJ5Vk06Okluc3RydWN0aW9uU2VxdWVuY2Uub2YobWV0aG9kKDp0ZXN0KSkp DQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IHJ1YnkgLXYgdGVz dC5yYg0KcnVieSAzLjQuMiAoMjAyNS0wMi0xNSByZXZpc2lvbiBkMjkzMGY4ZTdhKSArUFJJU00g W2FybTY0LWRhcndpbjI0XQ0KNTQ0DQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5s aW5lLW5ldyk+IC4vcnVieSAtdiB0ZXN0LnJiDQpydWJ5IDMuNS4wZGV2ICgyMDI1LTA0LTAzVDEz OjAzOjE5WiBpbmxpbmUtbmV3IDU2N2M1NDIwOGMpICtQUklTTSBbYXJtNjQtZGFyd2luMjRdDQo2 NTYNCmBgYA0KDQpXZeKAmXZlIHRlc3RlZCB0aGlzIGluIFNob3BpZnnigJlzIG1vbm9saXRoLCBj b21wYXJpbmcgUnVieSAzLjQuMiBhbmQgUnVieSAzLjUraW5saW5pbmcsIGFuZCBpdCBzZWVtcyB0 byBpbmNyZWFzZSB0b3RhbCBJU0VRIG1lbWVzaXplIGJ5IGFib3V0IDMuOG1iIChyb3VnaGx5IDAu NSUgaW5jcmVhc2UgaW4gSVNFUSBzaXplKToNCg0KYGBgDQppcmIobWFpbik6MDAxPiA3MzcxOTE5 NzIgLSA3MzMzNTQzODgNCj0+IDM4Mzc1ODQNCmBgYA0KDQpIb3dldmVyLCBSdWJ5IDMuNSBoYXMg bW9yZSBvdmVyYWxsIElTRVEgb2JqZWN0cyB0aGFuIFJ1YnkgMy40LjI6DQoNCmBgYA0KYWFyb25A QWFyb25zLU1hY0Jvb2stUHJvIH4vRG93bmxvYWRzPiB3YyAtbCBzaXplcy1pbmxpbmUudHh0DQog IDc4OTU0NSBzaXplcy1pbmxpbmUudHh0DQphYXJvbkBBYXJvbnMtTWFjQm9vay1Qcm8gfi9Eb3du bG9hZHM+IHdjIC1sIHNpemVzLTMuNC50eHQNCiAgNzg5NDc5IHNpemVzLTMuNC50eHQNCmBgYA0K DQpXZSBzZWUgdG90YWwgaGVhcCBzaXplIGFzIHJlcG9ydGVkIGJ5IGBtZW1zaXplYCB0byBvbmx5 IGluY3JlYXNlIGJ5IGFib3V0IDFNQjoNCg0KYGBgDQppcmIobWFpbik6MDAxPiAzOTgxMDc1NjE3 IC0gMzk3OTkyNjUwNQ0KPT4gMTE0OTExMg0KYGBgDQoNCiMjIENoYW5nZXMgdG8gYGNhbGxlcmAN Cg0KVGhpcyBwYXRjaCBjaGFuZ2VzIGBjYWxsZXJgIHJlcG9ydGluZyBpbiB0aGUgYGluaXRpYWxp emVgIG1ldGhvZDoNCg0KYGBgDQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5l LW5ldyk+IGNhdCB0ZXN0LnJiDQpyZXF1aXJlICJvYmpzcGFjZSINCg0KY2xhc3MgRm9vDQogIGRl ZiBpbml0aWFsaXplDQogICAgcHV0cyBjYWxsZXINCiAgZW5kDQplbmQNCg0KZGVmIHRlc3QNCiAg Rm9vLm5ldw0KZW5kDQoNCnRlc3QNCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxp bmUtbmV3KT4gcnVieSAtdiB0ZXN0LnJiDQpydWJ5IDMuNC4yICgyMDI1LTAyLTE1IHJldmlzaW9u IGQyOTMwZjhlN2EpICtQUklTTSBbYXJtNjQtZGFyd2luMjRdDQp0ZXN0LnJiOjEwOmluICdDbGFz cyNuZXcnDQp0ZXN0LnJiOjEwOmluICdPYmplY3QjdGVzdCcNCnRlc3QucmI6MTM6aW4gJzxtYWlu PicNCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gLi9ydWJ5IC12 IHRlc3QucmINCnJ1YnkgMy41LjBkZXYgKDIwMjUtMDQtMDNUMTM6MDM6MTlaIGlubGluZS1uZXcg NTY3YzU0MjA4YykgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCnRlc3QucmI6MTA6aW4gJ09iamVj dCN0ZXN0Jw0KdGVzdC5yYjoxMzppbiAnPG1haW4+Jw0KYGBgDQoNCkFzIHlvdSBjYW4gc2VlIGlu IHRoZSBhYm92ZSBvdXRwdXQsIHRoZSBgQ2xhc3MjbmV3YCBmcmFtZSBpcyBlbGltaW5hdGVkLiAg SSdtIG5vdCBzdXJlIGlmIGFueW9uZSByZWFsbHkgY2FyZXMgYWJvdXQgdGhpcyBmcmFtZS4gIFdl J3ZlIHRlc3RlZCB0aGlzIHBhdGNoIGluIFNob3BpZnkncyBDSSwgYW5kIGRpZG4ndCBmaW5kIGFu eSBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGlzIGNhbGxzdGFjay4gIEhvd2V2ZXIsIHRoaXMgcGF0 Y2ggZGlkIHJlcXVpcmUgW2NoYW5nZXMgdG8gRVJCIGZvciBlbWl0dGluZyB3YXJuaW5nc10oaHR0 cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzEzMDgwL2ZpbGVzI2RpZmYtNzYyNGY5NWY1 MjFiMzMzM2RlOGM2ODdkNzBjMjU3NGFhMzE2MTZjZWJmOTUwNGQ4YmNmNjczODY1ZmJmNmVjZFI0 NzUtUjQ4NikuDQoNClRoYXQgc2FpZCwgZWxpbWluYXRpbmcgdGhlIGZyYW1lIGFsc28gaGFzIHRo ZSBzaWRlLWVmZmVjdCBvZiBtYWtpbmcgc29tZSBvZiBvdXIgYWxsb2NhdGlvbiB0cmFjaW5nIHRv b2xzIGEgbGl0dGxlIG1vcmUgdXNlZnVsOg0KDQpgYGANCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4v Zy9ydWJ5IChpbmxpbmUtbmV3KT4gY2F0IHRlc3QucmINCnJlcXVpcmUgIm9ianNwYWNlIg0KDQpj bGFzcyBGb28NCiAgZGVmIHRlc3QNCiAgICBPYmplY3QubmV3DQogIGVuZA0KZW5kDQoNCk9iamVj dFNwYWNlLnRyYWNlX29iamVjdF9hbGxvY2F0aW9ucyBkbw0KICBvYmogPSBGb28ubmV3LnRlc3QN CiAgcHV0cyBPYmplY3RTcGFjZS5hbGxvY2F0aW9uX2NsYXNzX3BhdGgob2JqKQ0KICBwdXRzIE9i amVjdFNwYWNlLmFsbG9jYXRpb25fbWV0aG9kX2lkKG9iaikNCmVuZA0KYWFyb25AdGMtbGFuLWFk YXB0ZXIgfi9nL3J1YnkgKGlubGluZS1uZXcpPiBydWJ5IC12IHRlc3QucmINCnJ1YnkgMy40LjIg KDIwMjUtMDItMTUgcmV2aXNpb24gZDI5MzBmOGU3YSkgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0N CkNsYXNzDQpuZXcNCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4g Li9ydWJ5IC12IHRlc3QucmINCnJ1YnkgMy41LjBkZXYgKDIwMjUtMDQtMDdUMTk6NDA6NTlaIGlu bGluZS1uZXcgMmNmMGVmYTE4ZSkgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCkZvbw0KdGVzdA0K YGBgDQoNCkJlZm9yZSBpbmxpbmluZywgYE9iamVjdFNwYWNlYCB3b3VsZCByZXBvcnQgdGhlIGFs bG9jYXRpb24gY2xhc3MgcGF0aCBhbmQgbWV0aG9kIGlkIGFzIGBDbGFzcyNuZXdgIHdoaWNoIGlz bid0IHZlcnkgaGVscGZ1bC4gV2l0aCB0aGUgaW5saW5pbmcgcGF0Y2gsIHdlIGNhbiBzZWUgdGhh dCB0aGUgb2JqZWN0IGlzIGFsbG9jYXRlZCBpbiBgRm9vI3Rlc3RgLg0KDQojIyBTdW1tYXJ5DQoN CkkgdGhpbmsgdGhlIG92ZXJhbGwgbWVtb3J5IGluY3JlYXNlIGlzIG1vZGVzdCwgYW5kIHRoZSBj aGFuZ2UgdG8gYGNhbGxlcmAgaXMgYWNjZXB0YWJsZSBlc3BlY2lhbGx5IGdpdmVuIHRoZSBwZXJm b3JtYW5jZSBpbmNyZWFzZSB0aGlzIHBhdGNoIHByb3ZpZGVzLg0KDQoNCg0KLS0gDQpodHRwczov L2J1Z3MucnVieS1sYW5nLm9yZy8NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5 LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2 ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFu Zy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv