[#110736] Can't sign in to bugs.ruby-lang.org — Daniel Berger <djberg96@...>
Hi,
4 messages
2022/11/13
[ruby-core:110773] [Ruby master Feature#19104] Introduce the cache-based optimization for Regexp matching
From:
"byroot (Jean Boussier)" <noreply@...>
Date:
2022-11-16 07:37:26 UTC
List:
ruby-core #110773
SXNzdWUgIzE5MTA0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYnlyb290IChKZWFuIEJvdXNzaWVyKS4N Cg0KDQpJIGJlbGlldmUgdGhpcyBjaGFuZ2UgbWF5IGhhdmUgaW50cm9kdWNlZCBhIHdlaXJkIGJ1 ZyB3aGljaCBpcyBjYXVzaW5nIHRoZSBgc2Fzc2AgZ2VtIHRvIGZhaWwgaW4gdW5wcmVkaWN0YWJs ZSB3YXlzLiBJIHdhcyBhYmxlIHRvIHByb2R1Y2UgYSBzaG9ydCByZXByb2R1Y3Rpb24gc2NyaXB0 Og0KDQpgYGBydWJ5DQptb2R1bGUgU2Fzcw0KICBIICAgICAgICA9IC9bMC05YS1mQS1GXS8NCiAg VU5JQ09ERSAgPSAvXFwje0h9ezEsNn1bIFx0XHJcblxmXT8vDQogIHMgPSAnXHV7ODB9LVx1e0Q3 RkZ9XHV7RTAwMH0tXHV7RkZGRH1cdXsxMDAwMH0tXHV7MTBGRkZGfScNCiAgTk9OQVNDSUkgPSAv WyN7c31dLw0KICBFU0NBUEUgICA9IC8je1VOSUNPREV9fFxcW14wLTlhLWZBLUZcclxuXGZdLw0K ICBOTVNUQVJUICA9IC9bX2EtekEtWl18I3tOT05BU0NJSX18I3tFU0NBUEV9Lw0KICBOTUNIQVIg ICA9IC9bYS16QS1aMC05Xy1dfCN7Tk9OQVNDSUl9fCN7RVNDQVBFfS8NCiAgVkFMSURfVU5JVCA9 IC8je05NU1RBUlR9I3tOTUNIQVJ9fCUqLw0KDQogIDEwMF8wMDAudGltZXMgZG8NCiAgICBwcmlu dCAnLicNCiAgICByYWlzZSAiV1RGPyIgaWYgIiUiICF+IFZBTElEX1VOSVQNCiAgZW5kDQplbmQN CmBgYA0KDQpUaGUgYWJvdmUgcmVnZXhwIHdpbGwgc29tZXRpbWUgbm90IG1hdGNoIGFmdGVyIGEg cmFuZG9tIG51bWJlciBvZiBpdGVyYXRpb25zLg0KDQpjYyBAbWFtZSANCg0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTkxMDQ6IEludHJvZHVjZSB0 aGUgY2FjaGUtYmFzZWQgb3B0aW1pemF0aW9uIGZvciBSZWdleHAgbWF0Y2hpbmcNCmh0dHBzOi8v YnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTEwNCNjaGFuZ2UtMTAwMTE4DQoNCiogQXV0aG9y OiBtYWtlX25vd19qdXN0IChLaXRzdW5lIFRTVVlVU0FUTykNCiogU3RhdHVzOiBPcGVuDQoqIFBy aW9yaXR5OiBOb3JtYWwNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N ClJlZ2V4cCBtYXRjaGluZyBjYXVzZXMgYSB0aW1lLWNvbXBsZXhpdHkgZXhwbG9zaW9uIHByb2Js ZW0gYXMga25vd24gYXMgUmVEb1MgKFtodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZURv U10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVEb1MpKS4gUmVEb1MgaGFzIGJlY29t ZSBzZXJpb3VzIHZ1bG5lcmFiaWxpdHkgaW4gbWFueSBwbGFjZXMgaW4gcmVjZW50IHllYXJzLCBh bmQgUnVieSBpcyBubyBleGNlcHRpb24uIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGluY29tcGxldGUg bGlzdCBvZiBzdWNoIHZ1bG5lcmFiaWxpdHkgcmVwb3J0czoNCg0KLSBbaHR0cHM6Ly9naXRodWIu Y29tL3NpbmF0cmEvc2luYXRyYS9wdWxsLzE4MjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5hdHJh L3NpbmF0cmEvcHVsbC8xODIzKQ0KLSBbaHR0cHM6Ly9naXRodWIuY29tL2xvc3Rpc2xhbmQvZmFy YWRheS1uZXRfaHR0cC9wdWxsLzI3XShodHRwczovL2dpdGh1Yi5jb20vbG9zdGlzbGFuZC9mYXJh ZGF5LW5ldF9odHRwL3B1bGwvMjcpDQoNClRoZXNlIHJlcG9ydHMgaGF2ZSBiZWVuIGFkZHJlc3Nl ZCBieSBmaXhpbmcgdGhlIGxpYnJhcnkvc29mdHdhcmUgaW1wbGVtZW50YXRpb24uIEJ1dCwgaWYg dGhlIGxhbmd1YWdl4oCZcyBSZWdleHAgaW1wbGVtZW50YXRpb24gYmVjb21lcyBzYWZlLCB0aGUg dnVsbmVyYWJpbGl0eSBpcyBmdW5kYW1lbnRhbGx5IGFyY2hpdmVkLg0KDQpGb3IgYSBmZXcgbW9u dGhzLCBSdWJ5IGhhcyBpbXBsZW1lbnRlZCBhIFJlZ2V4cCBtYXRjaGluZyB0aW1lb3V0IChbaHR0 cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE3ODM3XShodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy9pc3N1ZXMvMTc4MzcpKS4gSXQgaXMgb25lIG9mIHRoZSB1c2VmdWwgbWV0aG9kcyBm b3IgcHJldmVudGluZyBSZURvUyB2dWxuZXJhYmlsaXR5LCBidXQgaXQgaXMgYSBwcm9ibGVtIHRo YXQgc2V0dGluZyBhIGNvcnJlY3QgdGltZW91dCB2YWx1ZSBpcyBoYXJkLiBUaGlzIHZhbHVlIGlz IGRlcGVuZGluZyBvbiBpbnB1dCBsZW5ndGgsIGVudmlyb25tZW50LCBuZXR3b3JrIHN0YXR1cywg c3lzdGVtIGxvYWQsIGV0Yy4gV2hlbiB0aGUgdmFsdWUgaXMgdG9vIHNtYWxsLCBhIHN5c3RlbSBt YXkgYmUgYnJva2VuLCBidXQgd2hlbiB0aGUgdmFsdWUgaXMgdG9vIGxhcmdlLCBpdCBpcyBub3Qg dXNlZnVsIGZvciBwcmV2ZW50aW5nIFJlRG9TLg0KDQpUaGVyZWZvcmUsIGFzIGEgbmV3IHdheSB0 byBwcmV2ZW50IFJlRG9TLCB3ZSBwcm9wb3NlIHRvIGludHJvZHVjZSBjYWNoZS1iYXNlZCBvcHRp bWl6YXRpb24gZm9yIFJlZ2V4cCBtYXRjaGluZy4gQXMgQ1MgZnVuZGFtZW50YWwga25vd2xlZGdl LCBhdXRvbWF0b24gbWF0Y2hpbmcgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHBvc2l0aW9uIG9mIGlu cHV0IGFuZCBzdGF0ZS4gSW4gYWRkaXRpb24sIG1hdGNoaW5nIHRpbWUgZXhwbG9zaW9uIGlzIGNh dXNlZCBmb3IgcmVwZWF0aW5nIHRvIGFycml2ZSBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhbmQgc3Rh dGUgbWFueSB0aW1lcy4gVGhlbiwgUmVEb1MgY2FuIGJlIHByZXZlbnRlZCB3aGVuIHBhaXJzIG9m IHBvc2l0aW9uLCBhbmQgc3RhdGUgYXJyaXZlZCBvbmNlIGlzIHJlY29yZGVkIChjYWNoZWQpLiBJ biBmYWN0LCB1bmRlciBzdWNoIGFuIG9wdGltaXphdGlvbiwgaXQgaXMga25vd24gYXMgdGhlIG1h dGNoaW5nIHRpbWUgY29tcGxleGl0eSBpcyBsaW5lYXIgYWdhaW5zdCBpbnB1dCBzaXplIFsxXS4N Cg0KWzFdOiBEYXZpcywgSmFtZXMgQy4sIEZyYW5jaXNjbyBTZXJ2YW50LCBhbmQgRG9uZ3lvb24g TGVlLiAiVXNpbmcgc2VsZWN0aXZlIG1lbW9pemF0aW9uIHRvIGRlZmVhdCByZWd1bGFyIGV4cHJl c3Npb24gZGVuaWFsIG9mIHNlcnZpY2UgKFJlRG9TKS4iICoyMDIxIElFRUUgc3ltcG9zaXVtIG9u IHNlY3VyaXR5IGFuZCBwcml2YWN5IChTUCkqLiBJRUVFLCAyMDIxLiBbaHR0cHM6Ly93d3cuY29t cHV0ZXIub3JnL2NzZGwvcHJvY2VlZGluZ3MtYXJ0aWNsZS9zcC8yMDIxLzg5MzQwMGE1NDMvMW9h azk4OFRodk9dKGh0dHBzOi8vd3d3LmNvbXB1dGVyLm9yZy9jc2RsL3Byb2NlZWRpbmdzLWFydGlj bGUvc3AvMjAyMS84OTM0MDBhNTQzLzFvYWs5ODhUaHZPKQ0KDQpTZWUgdGhlIGZvbGxvd2luZyBl eGFtcGxlLg0KDQpgYGBiYXNoDQokIHJ1YnkgLS12ZXJzaW9uDQpydWJ5IDMuMi4wcHJldmlldzIg KDIwMjItMDktMDkgbWFzdGVyIDM1Y2ZjOWEzYmIpIFthcm02NC1kYXJ3aW4yMV0NCg0KJCB0aW1l IHJ1YnkgLWUgJy9eKGF8YSkqJC8gPX4gImEiICogMjggKyAiYiInDQpydWJ5IC1lICcvXihhfGEp KiQvID1+ICJhIiAqIDI4ICsgImIiJyAgOC40OXMgdXNlciAwLjA0cyBzeXN0ZW0gOTglIGNwdSA4 LjY2MyB0b3RhbA0KDQokIC4vbWluaXJ1YnkgLS12ZXJzaW9uDQpydWJ5IDMuMi4wZGV2ICgyMDIy LTEwLTI3VDEzOjM5OjU2WiByZWNhY2hlIGJjNTliN2NjMWUpIFthcm02NC1kYXJ3aW4yMV0NCg0K JCB0aW1lIC4vbWluaXJ1YnkgLWUgJy9eKGF8YSkqJC8gPX4gImEiICogMjggKyAiYiInDQouL21p bmlydWJ5IC1lICcvXihhfGEpKiQvID1+ICJhIiAqIDI4ICsgImIiJyAgMC4wMXMgdXNlciAwLjAx cyBzeXN0ZW0gOCUgY3B1IDAuMzEwIHRvdGFsDQpgYGANCg0KSW4gdGhpcyBleGFtcGxlLCB1c2lu ZyBydWJ5IHYzLjIuMC1wcmV2aWV3MiwgbWF0Y2hpbmcgYC9eKGF8YSkqJC9gIGFnYWluc3QgYCJh IiAqIDI4ICsgImIiYCB0YWtlcyA4LjYgc2Vjb25kcyBiZWNhdXNlIG1hdGNoaW5nIHRpbWUgb2Yg dGhpcyBSZWdleHAgdGFrZXMgZXhwb25lbnRpYWxseSBhZ2FpbnN0IGAiYSIgKiBOICsgImIiYCBm b3JtIHN0cmluZy4gQnV0LCB1c2luZyB0aGUgcGF0Y2hlZCB2ZXJzaW9uIG9mIHJ1YnksIGl0IHRh a2VzIDAuMDEgc2Vjb25kcy4gSW5jcmVkaWJseSBpdCBpcyA4NjAgdGltZXMgZmFzdGVyIGJlY2F1 c2UgbWF0Y2hpbmcgaXMgZG9uZSBpbiBsaW5lYXIgdGltZS4NCg0KQnkgdGhpcyBvcHRpbWl6YXRp b24sIHRoZSBtYXRjaGluZyB0aW1lIGlzIGxpbmVhciB0byB0aGUgaW5wdXQgc2l6ZS4gSXQgc291 bmRzIHNlY3VyZSBhbmQgZ29vZC4gVW5mb3J0dW5hdGVseSwgd2hlbiBSZWdleHAgdXNlcyBzb21l IGV4dGVuc2lvbiAoZS5nLiBsb29rLWFyb3VuZCwgYmFjay1yZWZlcmVuY2UsIHN1YmV4cHJlc3Np b24gY2FsbCksIHRoZSBvcHRpbWl6YXRpb24gaXMgbm90IGFwcGxpZWQuIEFsc28sIHRoZSBvcHRp bWl6YXRpb24gbmVlZHMgYSBiaXQgbW9yZSBtZW1vcnkgZm9yIGNhY2hpbmcuIEhvd2V2ZXIsIHdl IGhhdmUgYWxyZWFkeSBpbnZlc3RpZ2F0ZWQgdGhhdCB0aGV5IGFyZSBub3Qgc28gdGhlIG1ham9y IHByb2JsZW1zIChTZWUgdGhlICJMaW1pdGF0aW9uIiBzZWN0aW9uKS4NCg0KIyMgSW1wbGVtZW50 YXRpb24NCg0KVGhlIGJhc2ljIGNhY2hlIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsZXRlIGF0IHRo aXMgdGltZSBhbmQgY2FuIGJlIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgUHVsbCBSZXF1ZXN0Lg0K DQpbaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzY0ODZdKGh0dHBzOi8vZ2l0aHVi LmNvbS9ydWJ5L3J1YnkvcHVsbC82NDg2KQ0KDQpTb21lIHRlc3RzIHNlZW0gdG8gYmUgZmFpbGVk LCBidXQgaXQgaXMgbm8gcHJvYmxlbSEgQmVjYXVzZSB0aGUgZmFpbGVkIHRlc3RzIGFyZSBmb3Ig UmVnZXhwIHRpbWVvdXQsIG9wdGltaXphdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIHNvIHRoZXkg ZmFpbGVkIGFzIGV4cGVjdGVkLiBPZiBjb3Vyc2UsIHdlIG5lZWQgdG8gZml4IHRoZXNlIHRlc3Rz IGJlZm9yZSBtZXJnaW5nLg0KDQpJbXBsZW1lbnRhdGlvbiBub3RlczoNCg0KLSBBIG51bGwtY2hl Y2sgb24gbG9vcCBjYXVzZXMgbm9uLWxpbmVhciBiZWhhdmlvciwgc28gdGhlIGZpZWxkIHRvIGlu ZGV4IHRoZSBsYXRlc3QgbnVsbC1jaGVjayBpdGVtIG9uIHRoZSBzdGFjayBpcyBhZGRlZCB0byBP bmlnU3RhY2tUeXBlLiAoW2h0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82NDg2L2Zp bGVzI2RpZmYtNDM0NzQ2MGUzNzljZDk3MGJhMGI4OGI0YWNiMjE1ZWE2MGNiYWUzMDgxMjQ2NzVk ZTg4MTFlZWQzNzczNjdhYVI4MzFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82 NDg2L2ZpbGVzI2RpZmYtNDM0NzQ2MGUzNzljZDk3MGJhMGI4OGI0YWNiMjE1ZWE2MGNiYWUzMDgx MjQ2NzVkZTg4MTFlZWQzNzczNjdhYVI4MzEpKQ0KLSBXaGVuIHRoZSBsb29wIGlzIG51bGwgYW5k IHRoaXMgbG9vcCBoYXMgYSBjYXB0dXJlLCBtYXRjaGluZyBiZWhhdmVzIGFzIGEgbW9ub21hbmlh Yy4gVG8gcmVwcm9kdWNlIHRoaXMgYmVoYXZpb3IsIGNhY2hlcyBpbiB0aGUgbG9vcCBpcyBjbGVh cmVkIGFzIG5lY2Vzc2FyeS4gKFtodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvNjQ4 Ni9maWxlcyNkaWZmLWMzY2ZlMTllZmZmMGNjNTE4MTM4NDc0MTM4NjA2N2I4MWVhZGIyNTA1Yjhi OWIzZjk4MGQxMGY4MTUwMzczOTVSMzQzM10oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9w dWxsLzY0ODYvZmlsZXMjZGlmZi1jM2NmZTE5ZWZmZjBjYzUxODEzODQ3NDEzODYwNjdiODFlYWRi MjUwNWI4YjliM2Y5ODBkMTBmODE1MDM3Mzk1UjM0MzMpKQ0KTGlrZSBhIGZsaXAtZmxvcCBvcGVy YXRvciwgd2UgaG9wZSB0byBkcm9wIHRoaXMgaWYgcG9zc2libGUuIEJ1dCBpdCBzdGlsbCByZW1h aW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuDQoNCiMjIyBMaW1pdGF0aW9uDQoNCkNhY2hlLWJh c2VkIG9wdGltaXphdGlvbiBpcyBub3QgYXBwbGllZCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOg0K DQoxLiBSZWdleHAgdXNpbmcgc29tZSBleHRlbnNpb25zIChiYWNrLXJlZmVyZW5jZSBhbmQgc3Vi ZXhwcmVzc2lvbiBjYWxsLCBsb29rLWFyb3VuZCwgYXRvbWljLCBhYnNlbnQgb3BlcmF0b3JzKSBp cyBub3Qgb3B0aW1pemVkIGJlY2F1c2UgaXQgaXMgaW1wb3NzaWJsZSBvciBoYXJkLiBIb3dldmVy LCBpdCBtYXkgYmUgcG9zc2libGUgZm9yIGxvb2stYXJvdW5kIG9wZXJhdG9ycy4NCjIuIEEgYm91 bmRlZCBvciBmaXhlZCB0aW1lcyByZXBldGl0aW9uIG5lc3RpbmcgaW4gYW5vdGhlciByZXBldGl0 aW9uIChlLmcuIGAvKGF7MiwzfSkqL2ApLiBJdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBpc3N1ZSBl bnRpcmVseSwgYnV0IHdlIGJlbGlldmUgaXQgaXMgaGFyZCB0byBzdXBwb3J0IHRoaXMgY2FzZSBj b3JyZWN0bHkuDQozLiBCb3VuZGVkIG9yIGZpeGVkIHRpbWVzIHJlcGV0aXRpb24gaXMgdG9vIGxh cmdlIChlLmcuIGAvKGF8Yil7MTAwMDAwLDIwMDAwMH0vYCkuIFRoZSBjYWNoZSB0YWJsZSBzaXpl IGlzIHByb3BvcnRpb25hbCB0byB0aGUgcHJvZHVjdCBvZiB0aGUgbnVtYmVyIG9mIGNhY2hlIHBv aW50cyBvZiByZWdleCBhbmQgaW5wdXQgc2l6ZS4gSW4gdGhpcyBjYXNlLCBzaW5jZSB0aGUgbnVt YmVyIG9mIGNhY2hlIHBvaW50cyBiZWNvbWVzIHRvbyBsYXJnZSwgdGhlIG9wdGltaXphdGlvbiBj YW5ub3QgYmUgYXBwbGllZC4NCg0KRXhwZXJpbWVudHMgd2VyZSBjb25kdWN0ZWQgdG8gaW52ZXN0 aWdhdGUgaG93IHRoZXNlIGxpbWl0YXRpb25zIGFyZSBwcm9ibGVtYXRpYyBpbiBwcmFjdGljZS4g V2UgdXNlZCBPYmplY3RTcGFjZSB0byBjb2xsZWN0IFJlZ2V4cHMgYW5kIGludmVzdGlnYXRlIHdo ZXRoZXIgdGhleSBjb3VsZCBiZSBvcHRpbWl6ZWQgYW5kIHRoZSBudW1iZXIgb2YgY2FjaGUgcG9p bnRzLiBSZWdleHBzIHdlcmUgY29sbGVjdGVkIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIFdl YnJpY2ssIGFuZCBSYWlscy4gU2VlIHRoZSBmb2xsb3dpbmcgZ2lzdCBmb3IgdGhlIGRldGFpbHMg KFtodHRwczovL2dpc3QuZ2l0aHViLmNvbS9tYWtlbm93anVzdC84M2UxZTc1YTJkN2RlOGI5NTZl OTNiZGFjMDA0YTA2Yl0oaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbWFrZW5vd2p1c3QvODNlMWU3 NWEyZDdkZThiOTU2ZTkzYmRhYzAwNGEwNmIpKS4NCg0KVGhlIGV4cGVyaW1lbnRzIHJlc3VsdCBp cyBzaG93biBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLg0KDQp8IENvbGxlY3RlZCBmcm9tIHwgIyBS ZWdleHAgfCAjIG5vbi1vcHRpbWl6YWJsZSB8IE1heGltdW0gbnVtYmVyIG9mIGNhY2hlIHBvaW50 cyB8DQp8IC0tLSB8IC0tLSB8IC0tLSB8IC0tLSB8DQp8IHN0ZGxpYiB8IDEwMDkgfCA4NiAoOC41 MiUpIHwgODEgfA0KfCBXZWJyaWNrIHwgMzU2IHwgNDQgKDEyLjM2JSkgfCAyMCB8DQp8IFJhaWxz IHwgNzU5IHwgNzQgKDcuNzUlKSB8IDI3IHwNCnwgVG90YWwgPGJyPiAoRHVwbGljYXRpb25zIGFy ZSByZWR1Y2VkKSB8IDE1MDYgfCAxMTggKDcuODQlKSB8IDgxIHwNCg0KVGhpcyByZXN1bHQgc2hv d3MgdGhhdCB0aGUgcGVyY2VudGFnZSBvZiBub24tb3B0aW1pemFibGUgUmVnZXhwIGlzIGxlc3Mg dGhhbiAxMCUsIGFuZCB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBvcHRpbWl6YXRpb24g aXMgYWJvdXQgMTAgdGltZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nICg4MS84LCBmb3IgYSBi aXQgYXJyYXkpIGF0IHdvcnN0IGluIHRoaXMgY2FzZS4gSXQgaXMgY29uc2lkZXJlZCB0aGF0IGEg c3VmZmljaWVudCBudW1iZXIgb2YgUmVnZXhwIGNhbiBiZSBvcHRpbWl6ZWQgaW4gcHJhY3RpY2Uu DQoNCiMjIFNwZWNpZmljYXRpb24NCg0KVGhlIGRldGFpbGVkIHNwZWNpZmljYXRpb24gaGFzIGJl ZW4gZml4ZWQgeWV0LiBXZSBoYXZlIHNvbWUgaWRlYXMgYW5kIHdlIHdvdWxkIGxpa2UgdG8gZGlz Y3VzcyB0aGVtLg0KDQotIFdoZW4gaXMgb3B0aW1pemF0aW9uIGVuYWJsZWQ/IEN1cnJlbnRseSwg aXQgdHVybnMgb24gd2hlbiB0aGUgYmFja3RyYWNrIGNhdXNlcyBhcyBtYW55IGFzIHRoZSBpbnB1 dCBsZW5ndGguDQotIEhvdyB0aGUgbnVtYmVyIG9mIGNhY2hlIHBvaW50cyBpcyBhbGxvd2VkLCBh bmQgaG93IG1lbW9yeSBjYW4gYmUgYWxsb2NhdGVkPyBJdCBpcyBub3QgZGV0ZXJtaW5lZCBmb3Ig bm93Lg0KLSBJZiB0aGUgYWJvdmUgcGFyYW1ldGVycyBjYW4gYmUgc3BlY2lmaWVkIGJ5IHVzZXJz LCBob3cgYXJlIHRoZXkgc3BlY2lmaWVkPyAodmlhIGNvbW1hbmQtbGluZSBmbGFncywgb3Igc3Rh dGljIC8gaW5zdGFuY2UgcGFyYW1ldGVycyBsaWtlIGBSZWdleHAjLnRpbWVvdXQ9YCBhbmQgYFJl Z2V4cCN0aW1lb3V0PWApDQotIFVubGVzcyB0aGUgaW5wdXQgc2l6ZSBpcyB0b28gbGFyZ2UsIHRo ZSBhdmFpbGFiaWxpdHkgb2Ygb3B0aW1pemF0aW9uIGNhbiBiZSBkZXRlcm1pbmVkIG9uIGNvbXBp bGUtdGltZS4gU28sIHdlIHdvdWxkIGxpa2UgdG8gYWRkIGEgbmV3IGZsYWcgdG8gUmVnZXhwIHRv IGRldGVybWluZSB3aGV0aGVyIGEgY2FjaGUgaXMgYXZhaWxhYmxlLiBJdCBiZWNvbWVzIG9uZSBv ZiB0aGUgY3JpdGVyaWEgZm9yIHdoZXRoZXIgUmVnZXhwIGlzIGVmZmljaWVudGx5IGV4ZWN1dGFi bGUgb3Igbm90LiBXZSBiZWxpZXZlIGl0IGhlbHBzIHVzZXJzLiBUaHVzLCB3aGljaCBsZXR0ZXIg aXMgcHJlZmVycmVkIGZvciB0aGlzIHB1cnBvc2U/IGBsYCAobGluZWFyKSBvciBgcmAgKHJlZ3Vs YXIpIHNvdW5kcyBnb29kLCBidXQgSSBhbSBub3Qgc3VyZSB3aGljaCBpcyB0aGUgYmVzdC4NCg0K VGhhbmsgeW91Lg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCgpVbnN1 YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9 dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9yZy9jZ2ktYmluL21haWxtYW4v b3B0aW9ucy9ydWJ5LWNvcmU+Cg==