[ruby-core:115056] [Ruby master Feature#19744] Namespace on read
From:
"maciej.mensfeld (Maciej Mensfeld) via ruby-core" <ruby-core@...>
Date:
2023-10-15 14:16:18 UTC
List:
ruby-core #115056
SXNzdWUgIzE5NzQ0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWFjaWVqLm1lbnNmZWxkIChNYWNpZWog TWVuc2ZlbGQpLg0NCg0NCg0NCklmIEkgbWF5Lg0NCg0NCiMjIyBgOjpgIHNjb3BlDQ0KDQ0KU2lt aWxhciB0byBKZXJlbXksIG15IGdlbXMgaGVhdmlseSB1c2UgdGhlIHRvcC1sZXZlbCByZWZlcmVu Y2UuIExpa2Ugb3RoZXJzLCBJIGFsc28gaGF2ZSBuYW1lc3BhY2VzIHRoYXQgY29sbGlkZSB3aXRo IHRoZSByb290IG9uY2UuIEZvciBleGFtcGxlLCBgS2FyYWZrYTo6QWN0aXZlSm9iYCBvcGVyYXRl cyBieSByZWZlcmVuY2luZyBpdHNlbGYgYW5kIGl0cyBpbnRlcm5hbHMgbG9jYWxseSBidXQgYWxz byByZWZlcnMgdG8gYDo6QWN0aXZlSm9iYC4gSW4gc29tZSBzY2VuYXJpb3MsIEkgdXNlIGl0IHRv IGVhc2Ugd2l0aCByZWFkYWJpbGl0eSBmb3IgZGV2ZWxvcGVycyBhcyBpdCBpcyBlYXNpZXIgdG8g dHJhY2sgdGhpbmdzIHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QgbGV2ZWwuIFNvbWV0aW1lcywgaXQg aXMgbmVlZGVkIGJlY2F1c2Ugb2YgbmFtZSBjb25mbGljdHMuDQ0KDQ0KIyMjIFVzZXIgRXhwZXJp ZW5jZQ0NCg0NCkkgYW0gdW5zdXJlIGlmIG5hbWVzcGFjZXMgd2lsbCBiZSBlYXN5IHRvIGRlYnVn L3dvcmsgd2l0aC4gV2hlbiBJIGRlYnVnIGdlbXMsIGF0IHRoZSBtb21lbnQsIGl0IGlzIGZhaXJs eSBlYXN5IGZvciBtZSB0byB1bmRlcnN0YW5kIHRoZSB2ZXJzaW9uaW5nIGFuZCB0byBiZSBhYmxl IHRvIG1vZGlmeSB0aGVtIGluIHBsYWNlIHdoZW4gcmVzZWFyY2hpbmcgc29tZSBidWdzL21vbmtl eSBwYXRjaGVzIC8gZXRjLiBXaXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgbmFtZXNwYWNlLCBJIGNh biBpbWFnaW5lIHRoaXMgbWF5IGJlIGEgYml0IGN1bWJlcnNvbWUgZHVlIHRvIHRoZSByZXF1aXJl bWVudCBvZiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBpbiB3aGljaCBhIGdpdmVuIHBpZWNlIG9m IGNvZGUgb3BlcmF0ZXMuIA0NCg0NCiMjIyBTZWN1cml0eQ0NCg0NCiMjIyMgQ29kZSBFeGVjdXRp b24NDQoNDQpUaGVyZSBhcmUgbm8gZXhwbGljaXQgc2VjdXJpdHkgcmlza3MgSSBjYW4gaW1hZ2lu ZSwgYnV0IEkgd291bGQgc2F5IHRoYXQgaXQgbWF5LCBhcyBvdGhlcnMgbWVudGlvbmVkLCBsb29z ZW4gdGhlIHByZXNzdXJlIG9uIHVwZ3JhZGluZy4gSSBjYW4gYWxzbyBpbWFnaW5lIHRoYXQgaXQg bWF5IGJlIGEgYml0IGNvbmZ1c2luZyB0byBnZXQgbXVsdGlwbGUgcmVjb3JkcyBvbiB0aGUgc2Ft ZSB2dWxuZXJhYmlsaXRpZXMgcGVyIHByb2plY3QgZnJvbSB0b29scyBsaWtlIGJ1bmRsZXIgYXVk aXQsIGFzIHRoZXJlIG1heSBiZSBzY2VuYXJpb3MgdGhhdCB0aGUgc2FtZSB2dWxuZXJhYmlsaXR5 IHdpbGwgYmUgYXNzaWduZWQgdG8gYSBmZXcgdmVyc2lvbnMgaW4gdXNlLiANDQoNDQpBbm90aGVy IHF1ZXN0aW9uIGlzIG9uIHRoZSBjb21wbGV4aXR5IG9mIHRoaW5ncyBsaWtlIHJlYWNoYWJpbGl0 eSBhbmFseXNpcy4gSXQgbWF5IGJlY29tZSBhIGJpdCBtb3JlIGNvbXBsZXggKHRob3VnaCBub3Qg aW1wb3NzaWJsZSAtIGxvb2sgbnBtKS4NDQoNDQojIyMjIERlcGVuZGVuY2llcw0NCg0NClBsZWFz ZSByZWFkIHRoZSBCdW5kbGVyIHNlY3Rpb24gYmVsb3cuDQ0KDQ0KIyMjIEJ1bmRsZXINDQoNDQot IFdoaWxlIHRoZSBwbHVnaW4gQVBJIGlzIG5vdCB3aWRlbHkgdXNlZCwgdGhlcmUgYXJlIHNvbWUg KGluY2x1ZGluZyBtZSkgdGhhdCB1dGlsaXplIHRoZW0uIEknbSBhbG1vc3QgY2VydGFpbiB0aGF0 IGludHJvZHVjdGlvbiBvZiBuYW1lc3BhY2VzIHdpbGwgY2F1c2UgQVBJIGNoYW5nZXMgdG8gdGhl IHBsdWdpbnMgQVBJLg0NCg0NCj4gDQ0KICAgIEJ1bmRsZXIgc2hvdWxkIHJlc29sdmUgZGVwZW5k ZW5jaWVzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgY3VycmVudCBvbmUgKE1vc3QgbGlicmFyaWVz IGhhdmUganVzdCAxIHZlcnNpb24vY29weSB1bmRlciB0aGUgdmVuZG9yKQ0NCiAgICBCdW5kbGVy IHNob3VsZCByZWNvbW1lbmQgdXNlcnMgcmVzb2x2ZSBjb25mbGljdHMgYnkgdXBkYXRpbmcgbGli cmFyaWVzIGFzIGZhciBhcyBwb3NzaWJsZQ0NCiAgICBVc2VycyBjYW4gY29uZmlndXJlIHRvIGRl cGVuZCBvbiBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhIGxpYnJhcnkgb25seSB3aGVuIGNvbmZsaWN0 cyBjYW5ub3QgYmUgcmVzb2x2ZWQgdGhyb3VnaCB1bmNvbWZvcnRhYmxlL3VuLXVzZXItZnJpZW5k bHkgb3B0aW9ucy9jb21tYW5kcy9ldGMNDQoNDQoNDQpJIHRyaWVkIHRvIGZpbmQgaW5mb3JtYXRp b24gb24gd2hldGhlciBvdXIgUHViR3J1YiBpbXBsZW1lbnRhdGlvbiB3b3VsZCBzdXBwb3J0IHN1 Y2ggYmVoYXZpb3IgYnV0IEkgY291bGRuJ3QuIEkgb25seSBmb3VuZCByZWZlcmVuY2VzIGZyb20g RWxtIGFuZCBEYXJ0IGltcGxlbWVudGF0aW9ucyBzdGF0aW5nIHRoYXQ6DQ0KDQ0KPiBWZXJzaW9u cyB1c2UgdGhlIHNlbWFudGljIHZlcnNpb25pbmcgc2NoZW1lIChNYWpvci5NaW5vci5QYXRjaCku DQ0KPiBQYWNrYWdlcyBjYW5ub3QgYmUgc2ltdWx0YW5lb3VzbHkgcHJlc2VudCBhdCB0d28gZGlm ZmVyZW50IHZlcnNpb25zLg0NCg0NClNhbWUgd2l0aCBEYXJ0IChyZWY6IGh0dHBzOi8vZGFydC5k ZXYvdG9vbHMvcHViL3ZlcnNpb25pbmcpOg0NCg0NCj4gSW5zdGVhZCwgd2hlbiB5b3UgZGVwZW5k IG9uIGEgcGFja2FnZSwgeW91ciBhcHAgb25seSB1c2VzIGEgc2luZ2xlIGNvcHkgb2YgdGhhdCBw YWNrYWdlLiBXaGVuIHlvdSBoYXZlIGEgc2hhcmVkIGRlcGVuZGVuY3ksIGV2ZXJ5dGhpbmcgdGhh dCBkZXBlbmRzIG9uIGl0IGhhcyB0byBhZ3JlZSBvbiB3aGljaCB2ZXJzaW9uIHRvIHVzZS4gSWYg dGhleSBkb27igJl0LCB5b3UgZ2V0IGFuIGVycm9yLg0NCg0NClRoaXMgd291bGQgbWVhbiB0aGF0 IHRvIHN1cHBvcnQgYW55ICJvbiBjb25mbGljdCIgc3VnZ2VzdGlvbnMgb3IgcmVzb2x1dGlvbiwg d2Ugd291bGQgaGF2ZSB0byByZXBsYWNlL2VuaGFuY2UgdGhpcyBlbmdpbmUuIFN1Y2ggY2hhbmdl cyBhbHdheXMgcG9zZSBhIHNpZ25pZmljYW50IHJpc2sgb2YgaW50cm9kdWNpbmcgbmV3IGRlcGVu ZGVuY3kgY29uZnVzaW9uIGJ1Z3MuIE9uIHRvcCBvZiB0aGF0LCB3ZSBuZWVkIHRvIGFuc3dlciB0 aGUgcXVlc3Rpb24gb2YgaG93IHN1Y2ggbXVsdGktdmVyc2lvbnMgb3BlcmF0aW9ucyBzaG91bGQg YmVoYXZlIG9uIGNvbnN0cmFpbnRzIGNvbWluZyBmcm9tIG11bHRpcGxlIHNvdXJjZXMuIFdoYXQg aWYgdGhlIHNhbWUgIm5hbWUiIGNvbWVzIGZyb20gdHdvIHNvdXJjZXMsIG9uZSBwdWJsaWMgYW5k IG9uZSBwcml2YXRlPyBTaW5jZSB3ZSB3aWxsIGFsbG93IGZvciBuYW1lc3BhY2luZywgc2hvdWxk IHN1Y2ggYSB0aGluZyBiZSBhbGxvd2VkPyBJZiBzbywgd2UgbWF5IGhhdmUgdG8gdXBkYXRlIGhv dyBnZW1zIGFyZSBjYWNoZWQgbG9jYWxseSB0byBpbmNsdWRlIHRoZWlyIGZ1bGwgc291cmNlIHRv IGF2b2lkIG5hbWUgY29sbGlzaW9ucy4NDQoNDQpGaW5hbGx5LCBpZiB3ZSBnbyB3aXRoIHRoaXM6 DQ0KDQ0KPiAgQnVuZGxlciBzaG91bGQgcmVzb2x2ZSBkZXBlbmRlbmNpZXMgaW4gdGhlIHNhbWUg d2F5IGFzIHRoZSBjdXJyZW50IG9uZQ0NCg0NCkl0IG9ubHkgbWl0aWdhdGVzICJjb21wbGV0ZSIg Y29uZmxpY3RzIGJ1dCBkb2VzIG5vdCBwcmV2ZW50IGZyb20gc2l0dWF0aW9ucyB3aGVyZSBBICYg QiBkZXBlbmQgb24gQyBhbmQgYXJlIGJvdGggYWJsZSB0byByZXNvbHZlIHRvIHNvbWV0aGluZyBv bGQgYnV0IGFjY2VwdGFibGUuIFRoZSBpc3N1ZSBvZiBvbmUgb2YgZGVwZW5kZW5jaWVzICJsaW1p dGluZyIgdGhpbmdzIHdpbGwgc3RpbGwgc3RheS4NDQoNDQo+IEhvdyBjYW4gR2VtZmlsZS5sb2Nr IGhhbmRsZSB0aGlzPyBQcm9iYWJseSwgdGhlIGZvcm1hdCBuZWVkcyB0byBjaGFuZ2Ugc2lnbmlm aWNhbnRseSB0byBzdXBwb3J0IHRoYXQ/DQ0KDQ0KWWVzLCB0aG91Z2ggSSB0aGluayBpdCBjYW4g YmUgZG9uZSBpbiBhIHdheSB0aGF0IHdvdWxkIGJlIGNvbXBhdGlibGUgYXMgbG9uZyBhcyB0aGVy ZSBhcmUgbm8gbmFtZXNwYWNlcyBpbiB1c2UuDQ0KDQ0KPiBIb3cgbG9uZyBtaWdodCBpdCB0YWtl IHRvIGltcGxlbWVudCBhbGwgdGhpcyBpbiBSdWJ5R2VtcyAmIEJ1bmRsZXI/IFVudGlsIHRoZW4s IHRoaXMgZmVhdHVyZSBpcyBwcm9iYWJseSB1bnVzYWJsZSBmb3IgbW9zdCBSdWJ5aXN0cywgYXMg bW9zdCB1c2UgUnVieUdlbXMgJiBCdW5kbGVyLg0NCg0NCkdyZWF0IHF1ZXN0aW9uIHRvIERhdmlk IFJvZHLDrWd1ZXogLSBJJ2xsIHBpbmcgaGltLg0NCg0NCiMjIExlYXJuaW5nIGZyb20gb3RoZXIg UmVnaXN0cmllcyAvIFRlY2hub2xvZ2llcw0NCg0NCkJlZm9yZSBnZXR0aW5nICJmdWxsIGluIiB3 aXRoIGEgZmVhdHVyZSBsaWtlIHRoaXMsIEkgdGhpbmsgaXQgd291bGQgYmUgZ29vZCB0byByZXNl YXJjaCBpdHMgZnJlcXVlbmN5L3NjYWxlIG9mIHVzYWJpbGl0eS4gTWF5YmUgd2UgY291bGQgZ2V0 IGFub255bW91cyBkYXRhIG9uIHN0cnVjdHVyZXMgb2YgbG9jayBmaWxlcyBmcm9tIHRlY2hub2xv Z2llcyB0aGF0IHN1cHBvcnQgdGhpcyB0byBhbmFseXplIHRoZSBmcmVxdWVuY3kgb2Ygc3VjaCBm ZWF0dXJlIGFkb3B0aW9uLiBXZSBjb3VsZCB0YWtlIGJvdGggT1NTIGRhdGEgdG8gdW5kZXJzdGFu ZCBob3cgb2Z0ZW4gdGhpcyBpcyBiZWluZyB1c2VkIGluIHBhY2thZ2VzIGFuZCBnZXQgZGF0YSBm cm9tIGFjdHVhbCBwcm9qZWN0cyBhbmQgc29tZSB2aWFibGUgaW5zaWdodHMuIA0NCg0NCiMjIFN1 bW1hcnkNDQoNDQpJJ20gaGVzaXRhbnQgYWJvdXQgaXQuDQ0KDQ0KT24gb25lIHNpZGUsIEkndmUg YmVlbiBtaXNzaW5nIGl0IGEgZmV3IHRpbWVzIG15c2VsZi4gT24gdGhlIG90aGVyIGhhbmQsIEkg YW0gbm90IHN1cmUgdGhhdCB0aGlzIGlzIGEgZmVhdHVyZSB0aGF0IHdpbGwgZ2V0IHdpZGUgYWRv cHRpb24uIE9uY2UgaXQgaXMgaW4gYW5kIGJleW9uZCBhbiBleHBlcmltZW50YWwgcGhhc2UsIGl0 IHdpbGwgaGF2ZSB0byBnZXQgc29saWQgc3VwcG9ydCBmcm9tIFJ1YnkgQ29yZSwgUnVieUdlbXMs IGFuZCBCdW5kbGVyLiBGb3IgaXQgdG8gYmUgY29uc2lkZXJlZCB1c2FibGUsIGl0IG11c3QgaGF2 ZSBhIGdyZWF0IHVzZXIgZXhwZXJpZW5jZSBhcm91bmQgdXNhZ2UgYW5kIGRlYnVnZ2FiaWxpdHkg YW5kIHNvbGlkIGRvY3VtZW50YXRpb24gZm9yIHVzZXJzIHRvIHVuZGVyc3RhbmQuDQ0KDQ0KPiBC dXQgb24gdGhlIG90aGVyIGhhbmQsIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgdXBkYXRlZCBzdGls bCBleGlzdCBldmVuIHVuZGVyIHZlcnkgc3Ryb25nIHByZXNzdXJlLiANDQoNDQpBYnNvbHV0ZWx5 LCBhbmQgYXQgdGhlIHNhbWUgdGltZSwgc29tZSBvZiB0aGVtIGdldCBhZG9wdGVkIGFuZCBiZWNv bWUgbWFpbnRhaW5lZCBhZ2Fpbi4gVGhlIHByZXNzdXJlIHdpbGwgYmUgbG93ZXJlZCBpZiBzdWNo IGEgcHJvYmxlbSBjYW4gYmUgImJ5cGFzc2VkIiBieSBuYW1lc3BhY2VzLg0NCg0NCldoaWxlIHVz ZWZ1bCBhdCBzb21lIHRpbWVzLCBJIGRvIG5vdCBmZWVsIHRoaXMgd2lsbCBnZXQgd2lkZSBhZG9w dGlvbiwgZXNwZWNpYWxseSBhcyBAdGFnb21vcmlzIGhpbXNlbGYgc2FpZCBoZXJlOg0NCg0NCj4g QnVuZGxlciBzaG91bGQgcmVzb2x2ZSBkZXBlbmRlbmNpZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHRo ZSBjdXJyZW50IG9uZSAoTW9zdCBsaWJyYXJpZXMgaGF2ZSBqdXN0IDEgdmVyc2lvbi9jb3B5IHVu ZGVyIHRoZSB2ZW5kb3IpDQ0KQnVuZGxlciBzaG91bGQgcmVjb21tZW5kIHVzZXJzIHJlc29sdmUg Y29uZmxpY3RzIGJ5IHVwZGF0aW5nIGxpYnJhcmllcyBhcyBmYXIgYXMgcG9zc2libGUNDQoNDQoN DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KRmVhdHVyZSAjMTk3 NDQ6IE5hbWVzcGFjZSBvbiByZWFkDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVz LzE5NzQ0I2NoYW5nZS0xMDQ5MzENDQoNDQoqIEF1dGhvcjogdGFnb21vcmlzIChTYXRvc2hpIFRh Z29tb3JpKQ0NCiogU3RhdHVzOiBPcGVuDQ0KKiBQcmlvcml0eTogTm9ybWFsDQ0KLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NCiMgV2hhdCBpcyB0aGUgIk5hbWVzcGFj ZSBvbiByZWFkIg0NCg0NClRoaXMgcHJvcG9zZXMgYSBuZXcgZmVhdHVyZSB0byBkZWZpbmUgdmly dHVhbCB0b3AtbGV2ZWwgbmFtZXNwYWNlcyBpbiBSdWJ5LiBUaG9zZSBuYW1lc3BhY2VzIGNhbiBy ZXF1aXJlL2xvYWQgbGlicmFyaWVzIChlaXRoZXIgLnJiIG9yIG5hdGl2ZSBleHRlbnNpb24pIHNl cGFyYXRlbHkgZnJvbSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gRGVwZW5kZW5jaWVzIG9mIHJlcXVp cmVkL2xvYWRlZCBsaWJyYXJpZXMgYXJlIGFsc28gcmVxdWlyZWQvbG9hZGVkIGluIHRoZSBuYW1l c3BhY2UuDQ0KDQ0KIyMjIE1vdGl2YXRpb24NDQoNDQpUaGUgIm5hbWVzcGFjZSBvbiByZWFkIiBj YW4gc29sdmUgdGhlIDIgcHJvYmxlbXMgYmVsb3csIGFuZCBjYW4gbWFrZSBhIHBhdGggdG8gc29s dmUgYW5vdGhlciBwcm9ibGVtOg0NClRoZSBkZXRhaWxzIG9mIHRob3NlIG1vdGl2YXRpb25zIGFy ZSBkZXNjcmliZWQgaW4gdGhlIGJlbG93IHNlY3Rpb24gKCJNb3RpdmF0aW9uIGRldGFpbHMiKS4N DQoNDQojIyMjIEF2b2lkaW5nIG5hbWUgY29uZmxpY3RzIGJldHdlZW4gbGlicmFyaWVzDQ0KDQ0K QXBwbGljYXRpb25zIGNhbiByZXF1aXJlIHR3byBkaWZmZXJlbnQgbGlicmFyaWVzIHNhZmVseSB3 aGljaCB1c2UgdGhlIHNhbWUgbW9kdWxlIG5hbWUuDQ0KDQ0KIyMjIyBBdm9pZGluZyB1bmV4cGVj dGVkIGdsb2JhbGx5IHNoYXJlZCBtb2R1bGVzL29iamVjdHMNDQoNDQpBcHBsaWNhdGlvbnMgY2Fu IG1ha2UgYW4gaW5kZXBlbmRlbnQvdW5zaGFyZWQgbW9kdWxlIGluc3RhbmNlLg0NCg0NCiMjIyMg KEluIHRoZSBmdXR1cmUpIE11bHRpcGxlIHZlcnNpb25zIG9mIGdlbXMgY2FuIGJlIHJlcXVpcmVk DQ0KDQ0KQXBwbGljYXRpb24gZGV2ZWxvcGVycyB3aWxsIGhhdmUgZmV3ZXIgdmVyc2lvbiBjb25m bGljdHMgYmV0d2VlbiBnZW0gZGVwZW5kZW5jaWVzIGlmIHJ1YnlnZW1zL2J1bmRsZXIgd2lsbCBz dXBwb3J0IHRoZSBuYW1lc3BhY2Ugb24gcmVhZC4NDQoNDQojIyMgRXhhbXBsZSBjb2RlIHdpdGgg dGhpcyBmZWF0dXJlDQ0KDQ0KYGBgcnVieQ0NCiMgeW91cl9tb2R1bGUucmINDQptb2R1bGUgWW91 ck1vZHVsZQ0NCmVuZA0NCg0NCiMgbXlfbW9kdWxlLnJiDQ0KcmVxdWlyZSAneW91cl9tb2R1bGUn DQ0KDQ0KbW9kdWxlIE15TW9kdWxlDQ0KZW5kDQ0KDQ0KIyBleGFtcGxlLnJiDQ0KbmFtZXNwYWNl MSA9IE5hbWVTcGFjZS5uZXcNDQpuYW1lc3BhY2UxLnJlcXVpcmUoJ215X21vZHVsZScpICM9PiB0 cnVlDQ0KDQ0KbmFtZXNwYWNlMTo6TXlNb2R1bGUgIz0+ICM8TW9kdWxlOjB4MDAwMDAwMDEwMjdl YTY1MD46Ok15TW9kdWxlIChvciAjPE5hbWVTcGFjZToweDAwLi4uPjo6TXlNb2R1bGUgPykNDQpu YW1lc3BhY2UxOjpZb3VyTW9kdWxlICMgc2ltaWxhciB0byB0aGUgYWJvdmUNDQoNDQpNeU1vZHVs ZSAjIE5hbWVFcnJvcg0NCllvdXJNb2R1bGUgIyBOYW1lRXJyb3INDQoNDQpuYW1lc3BhY2UyID0g TmFtZVNwYWNlLm5ldyAgICAgICMgQW55IG51bWJlciBvZiBuYW1lc3BhY2VzIGNhbiBiZSBkZWZp bmVkDQ0KbmFtZXNwYWNlMi5yZXF1aXJlKCdteV9tb2R1bGUnKSAjIERpZmZlcmVudCBsaWJyYXJ5 ICJpbnN0YW5jZSIgZnJvbSBuYW1lc3BhY2UxDQ0KDQ0KcmVxdWlyZSAnbXlfbW9kdWxlJyAjIHJl cXVpcmUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UNDQoNDQpNeU1vZHVsZS5vYmplY3RfaWQgIT0g bmFtZXNwYWNlMTo6TXlNb2R1bGUub2JqZWN0X2lkICM9PiB0cnVlDQ0KbmFtZXNwYWNlMTo6TXlN b2R1bGUub2JqZWN0X2lkICE9IG5hbWVzcGFjZTI6Ok15TW9kdWxlLm9iamVjdF9pZA0NCmBgYA0N Cg0NClRoZSByZXF1aXJlZC9sb2FkZWQgbGlicmFyaWVzIHdpbGwgZGVmaW5lIGRpZmZlcmVudCAi aW5zdGFuY2VzIiBvZiBtb2R1bGVzL2NsYXNzZXMgaW4gdGhvc2UgbmFtZXNwYWNlcyAoanVzdCBs aWtlIHRoZSAid3JhcHBlciIgMm5kIGFyZ3VtZW50IG9mIGBLZXJuZWwubG9hZGApLiBUaGlzIGRv ZXNuJ3QgaW50cm9kdWNlIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMgaWYgYWxsIGxpYnJhcmllcyB1 c2UgcmVsYXRpdmUgbmFtZSByZXNvbHV0aW9uICh3aXRob3V0IGZvcmNlZCB0b3AtbGV2ZWwgcmVm ZXJlbmNlIGxpa2UgYDo6TmFtZWApLg0NCg0NCiMgIk9uIHJlYWQiOiBvcHRpb25hbCwgdXNlci1k cml2ZW4gZmVhdHVyZQ0NCg0NCiJPbiByZWFkIiBpcyBhIGtleSB0aGluZyBvZiB0aGlzIGZlYXR1 cmUuIFRoYXQgbWVhbnM6DQ0KDQ0KKiBObyBjaGFuZ2VzIGFyZSByZXF1aXJlZCBpbiBleGlzdGlu Zy9uZXcgbGlicmFyaWVzIChleGNlcHQgZm9yIGxpbWl0ZWQgY2FzZXMsIGRlc2NyaWJlZCBiZWxv dykNDQoqIE5vIGNoYW5nZXMgYXJlIHJlcXVpcmVkIGluIGFwcGxpY2F0aW9ucyBpZiBpdCBkb2Vz bid0IG5lZWQgbmFtZXNwYWNlcw0NCiogVXNlcnMgY2FuIGVuYWJsZS91c2UgbmFtZXNwYWNlcyBq dXN0IGZvciBsaW1pdGVkIGNvZGUgaW4gdGhlIHdob2xlIGxpYnJhcnkvYXBwbGljYXRpb24NDQoN DQpVc2VycyBjYW4gc3RhcnQgdXNpbmcgdGhpcyBmZWF0dXJlIHN0ZXAgYnkgc3RlcCAoaWYgdGhl eSB3YW50IGl0KSB3aXRob3V0IGFueSBiaWcganVtcHMuDQ0KDQ0KIyMgTW90aXZhdGlvbiBkZXRh aWxzDQ0KDQ0KVGhpcyBmZWF0dXJlIGNhbiBzb2x2ZSBtdWx0aXBsZSBwcm9ibGVtcyBJIGhhdmUg aW4gd3JpdGluZy9leGVjdXRpbmcgUnVieSBjb2RlLiBUaG9zZSBhcmUgZnJvbSB0aGUgMyBwcm9i bGVtcyBJIG1lbnRpb25lZCBhYm92ZTogbmFtZSBjb25mbGljdHMsIGdsb2JhbGx5IHNoYXJlZCBt b2R1bGVzLCBhbmQgbGlicmFyeSB2ZXJzaW9uIGNvbmZsaWN0cyBiZXR3ZWVuIGRlcGVuZGVuY2ll cy4gSSdsbCBkZXNjcmliZSA0IHNjZW5hcmlvcyBhYm91dCB0aG9zZSBwcm9ibGVtcy4NDQoNDQoj IyMgUnVubmluZyBtdWx0aXBsZSBhcHBsaWNhdGlvbnMgb24gYSBSdWJ5IHByb2Nlc3MNDQoNDQpN b2Rlcm4gY29tcHV0ZXJzIGhhdmUgbWFueSBDUFUgY29yZXMgYW5kIGxhcmdlIG1lbW9yeSBzcGFj ZXMuIFdlIHNvbWV0aW1lcyB3YW50IHRvIGhhdmUgbWFueSBzZXBhcmF0ZSBhcHBsaWNhdGlvbnMg KGVpdGhlciBtaWNyby1zZXJ2aWNlIGFyY2hpdGVjdHVyZSBvciBtb2R1bGFyIG1vbm9saXRoKS4g Q3VycmVudGx5LCBydW5uaW5nIHRob3NlIGFwcGxpY2F0aW9ucyByZXF1aXJlIGRpZmZlcmVudCBw cm9jZXNzZXMuIEl0IHJlcXVpcmVzIGFkZGl0aW9uYWwgY29tcHV0YXRpb24gY29zdHMgKGVzcGVj aWFsbHkgaW4gZGV2ZWxvcGluZyB0aG9zZSBhcHBsaWNhdGlvbnMpLg0NCg0NCklmIHdlIGhhdmUg aXNvbGF0ZWQgbmFtZXNwYWNlcyBhbmQgY2FuIGxvYWQgYXBwbGljYXRpb25zIGluIHRob3NlIG5h bWVzcGFjZXMsIHdlJ2xsIGJlIGFibGUgdG8gcnVuIGFwcHMgb24gYSBwcm9jZXNzLCB3aXRoIGxl c3Mgb3ZlcmhlYWQuDQ0KDQ0KKEkgd2FudCB0byBydW4gbWFueSBBV1MgTGFtYmRhIGFwcGxpY2F0 aW9ucyBvbiBhIHByb2Nlc3MgaW4gaXNvbGF0ZWQgbmFtZXNwYWNlcy4pDQ0KDQ0KIyMjIFJ1bm5p bmcgdGVzdHMgaW4gaXNvbGF0ZWQgbmFtZXNwYWNlcw0NCg0NClRlc3RzIHRoYXQgcmVxdWlyZSBl eHRlcm5hbCBsaWJyYXJpZXMgbmVlZCBtYW55IGhhY2tzIHRvOg0NCg0NCiogcmVxdWlyZSBhIGxp YnJhcnkgbXVsdGlwbGUgdGltZXMNDQoqIHJlcXVpcmUgbWFueSBkaWZmZXJlbnQgM3JkIHBhcnR5 IGxpYnJhcmllcyBpbnRvIGlzb2xhdGVkIHNwYWNlcyAodGhvc2UgbWF5IGNvbmZsaWN0IHdpdGgg ZWFjaCBvdGhlcikNDQoNDQpTb2Z0d2FyZSB3aXRoIHBsdWdpbiBzeXN0ZW1zIChmb3IgZXhhbXBs ZSwgRmx1ZW50ZCkgd2lsbCBnZXQgYmVuZWZpdCBmcm9tIG5hbWVzcGFjZXMuDQ0KDQ0KSW4gYWRk aXRpb24gdG8gaXQsIGFwcGxpY2F0aW9uIHRlc3RzIGNhbiBhdm9pZCB1bmV4cGVjdGVkIHNpZGUg ZWZmZWN0cyBpZiB0ZXN0cyBhcmUgZXhlY3V0ZWQgaW4gaXNvbGF0ZWQgbmFtZXNwYWNlcy4NDQoN DQojIyMgU2FmZWx5IGlzb2xhdGVkIGxpYnJhcnkgaW5zdGFuY2VzDQ0KDQ0KTGlicmFyaWVzIG1h eSBoYXZlIGdsb2JhbGx5IHNoYXJlZCBzdGF0ZXMuIEZvciBleGFtcGxlLCBbT2pdKGh0dHBzOi8v Z2l0aHViLmNvbS9vaGxlcjU1L29qKSBoYXMgYSBnbG9iYWwgYE9iai5kZWZhdWx0X29wdGlvbnNg IG9iamVjdCB0byBjaGFuZ2UgdGhlIGxpYnJhcnkgYmVoYXZpb3IuIFRob3NlIG9wdGlvbnMgbWF5 IGJlIGNoYW5nZWQgYnkgYW55IGRlcGVuZGVuY3kgbGlicmFyaWVzIG9yIGFwcGxpY2F0aW9ucywg YW5kIGl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIGBPamAgZ2xvYmFsbHksIHVuZXhwZWN0ZWRs eS4NDQoNDQpGb3Igc3VjaCBsaWJyYXJpZXMsIHdlJ2xsIGJlIGFibGUgdG8gaW5zdGFudGlhdGUg YSBzYWZlIGxpYnJhcnkgaW5zdGFuY2UgaW4gYW4gaXNvbGF0ZWQgbmFtZXNwYWNlLg0NCg0NCiMj IyBBdm9pZGluZyBkZXBlbmRlbmN5IGhlbGxzDQ0KDQ0KTW9kZXJuIGFwcGxpY2F0aW9ucyB1c2Ug bWFueSBsaWJyYXJpZXMsIGFuZCB0aG9zZSBsaWJyYXJpZXMgcmVxdWlyZSBtdWNoIG1vcmUgZGVw ZW5kZW5jaWVzLiBUaG9zZSBkZXBlbmRlbmNpZXMgd2lsbCBjYXVzZSB2ZXJzaW9uIGNvbmZsaWN0 cyB2ZXJ5IG9mdGVuLiBJbiBzdWNoIGNhc2VzLCBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHNob3Vs ZCByZXNvbHZlIHRob3NlIGJ5IHVwZGF0aW5nIGVhY2ggbGlicmFyaWVzLCBvciBzaG91bGQganVz dCB3YWl0IGZvciB0aGUgbmV3IHJlbGVhc2Ugb2YgbGlicmFyaWVzIHRvIGNvbmZsaWN0IHRob3Nl IGxpYnJhcmllcy4gU29tZXRpbWVzLCBsaWJyYXJ5IG1haW50YWluZXJzIGRvbid0IHJlbGVhc2Ug dXBkYXRlZCB2ZXJzaW9ucywgYW5kIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIGRvIG5vdGhp bmcuDQ0KDQ0KSWYgbmFtZXNwYWNlcyBjYW4gcmVxdWlyZS9sb2FkIGEgbGlicmFyeSBtdWx0aXBs ZSB0aW1lcywgaXQgYWxzbyBlbmFibGVzIHRvIHJlcXVpcmUvbG9hZCBkaWZmZXJlbnQgdmVyc2lv bnMgb2YgYSBsaWJyYXJ5IGluIGEgcHJvY2Vzcy4gSXQgcmVxdWlyZXMgdGhlIHN1cHBvcnQgb2Yg cnVieWdlbXMsIGJ1dCBuYW1lc3BhY2VzIHNob3VsZCBiZSBhIGdvb2QgZnVuZGFtZW50YWwgb2Yg aXQuDQ0KDQ0KIyMgRXhwZWN0ZWQgcHJvYmxlbXMNDQoNDQojIyMgVXNlIG9mIHRvcC1sZXZlbCBy ZWZlcmVuY2VzDQ0KDQ0KSW4gbXkgZXhwZWN0YXRpb24sIGA6Ok5hbWVgIHNob3VsZCByZWZlciB0 aGUgdG9wLWxldmVsIGBOYW1lYCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gSSBleHBlY3QgdGhh dCBgOjpFTlZgIHNob3VsZCBjb250YWluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIEJ1dCBp dCBtYXkgY2F1c2UgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBpZiBsaWJyYXJ5IGNvZGUgdXNlcyBg OjpNeUxpYnJhcnlgIHRvIHJlZmVyIHRoZW1zZWx2ZXMgaW4gdGhlaXIgZGVlcGx5IG5lc3RlZCBs aWJyYXJ5IGNvZGUuDQ0KDQ0KIyMjIEFkZGl0aW9uYWwgbWVtb3J5IGNvbnN1bXB0aW9uDQ0KDQ0K QW4gZXh0ZW5zaW9uIGxpYnJhcnkgKGR5bmFtaWNhbGx5IGxpbmtlZCBsaWJyYXJ5KSBtYXkgYmUg bG9hZGVkIG11bHRpcGxlIHRpbWVzIChieSBgZGxvcGVuYCBmb3IgdGVtcG9yYXJpbHkgY29waWVk IGRsbCBmaWxlcykgdG8gbG9hZCBpc29sYXRlZCBsaWJyYXJ5ICJpbnN0YW5jZXMiIGlmIGRpZmZl cmVudCBuYW1lc3BhY2VzIHJlcXVpcmUgdGhlIHNhbWUgZXh0ZW5zaW9uIGxpYnJhcnkuIFRoYXQg Y29uc3VtZXMgYWRkaXRpb25hbCBtZW1vcnkuDQ0KDQ0KSW4gbXkgb3BpbmlvbiwgYWRkaXRpb25h bCBtZW1vcnkgY29uc3VtcHRpb24gaXMgYSBtaW5pbXVtIGNvc3QgdG8gcmVhbGl6ZSBsb2FkaW5n IGV4dGVuc2lvbiBsaWJyYXJpZXMgbXVsdGlwbGUgdGltZXMgd2l0aG91dCBjb21wYXRpYmlsaXR5 IGlzc3Vlcy4NDQoNDQpUaGlzIG9jY3VycyBvbmx5IHdoZW4gcHJvZ3JhbW1lcnMgdXNlIG5hbWVz cGFjZXMuIEFuZCBpdCdzIG9ubHkgYWJvdXQgbGlicmFyaWVzIHRoYXQgYXJlIHVzZWQgaW4gMiBv ciBtb3JlIG5hbWVzcGFjZXMuDQ0KDQ0KIyMjIFRoZSBjaGFuZ2Ugb2YgYGRsb3BlbmAgZmxhZyBh Ym91dCBleHRlbnNpb24gbGlicmFyaWVzDQ0KDQ0KVG8gbG9hZCBhbiBleHRlbnNpb24gbGlicmFy eSBtdWx0aXBsZSB0aW1lcyB3aXRob3V0IGNvbmZsaWN0aW5nIHN5bWJvbHMsIGFsbCBleHRlbnNp b25zIHNob3VsZCBzdG9wIHNoYXJpbmcgc3ltYm9scyBnbG9iYWxseS4gTGlicmFyaWVzIHJlZmVy cmluZyBzeW1ib2xzIGZyb20gb3RoZXIgZXh0ZW5zaW9uIGxpYnJhcmllcyB3aWxsIGhhdmUgdG8g Y2hhbmdlIGNvZGUgJiBkZXBlbmRlbmNpZXMuDQ0KDQ0KKEFib3V0IHRoZSB0aGluZ3MgYWJvdXQg ZXh0ZW5zaW9uIGxpYnJhcmllcywgW05hcnVzZSBhbHNvIHdyb3RlIGFuIGVudHJ5XShodHRwczov L25hcnVzZS5oYXRlYmxvLmpwL2VudHJ5LzIwMjMvMDUvMjIvMTkzNDExKS4pDQ0KDQ0KIyBNaXNj DQ0KDQ0KVGhlIHByb29mLW9mLWNvbmNlcHQgYnJhbmNoIGlzIGhlcmU6IGh0dHBzOi8vZ2l0aHVi LmNvbS90YWdvbW9yaXMvcnVieS9wdWxsLzENDQpJdCdzIHN0aWxsIHdvcmstaW4tcHJvZ3Jlc3Mg YnJhbmNoLCBlc3BlY2lhbGx5IGZvciBleHRlbnNpb24gbGlicmFyaWVzLg0NCg0NCg0NCg0NCg0N Ci0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1 YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRv IHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRw czovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5t bC5ydWJ5LWxhbmcub3JnLw==