[#111712] [Ruby master Feature#19322] Support spawning "private" child processes — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtqdHNhbmFrdHNpZGlzIChLSiBUc2Fu
14 messages
2023/01/07
[ruby-core:111787] [Ruby master Feature#19322] Support spawning "private" child processes
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2023-01-11 19:38:27 UTC
List:
ruby-core #111787
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N DQoNDQoNDQpJTUhPIHRoaXMgc291bmRzIGxpa2Ugc29tZSBjb2RlIGlzIGRvaW5nIGJhZCBzdHVm ZiBhbmQgbm90IHByb3Blcmx5IGNhcmluZyBhYm91dCBpdHMgb3duIHJlc291cmNlcy4NDQoNDQpJ biB0aGUgZXhhbXBsZSB5b3Ugc2hvd24sIEkgYmVsaWV2ZSBpdCdzIG5vbmUgb2YgVW5pY29ybidz IGJ1c2luZXNzIHRvIHJlYXAgYXJiaXRyYXJ5IHByb2Nlc3NlcywgaXQgZG9lc24ndCBjb21wb3Nl IChJIGNvdWxkIGJlIHdyb25nLCBidXQgdGhpcyBzZWVtcyBhIGdlbmVyYWwgcnVsZSB3aGVuIGl0 IGNvbWUgdG8gcmVzb3VyY2VzIG9mIGEgcHJvZ3JhbTogZG9uJ3QgbWVzcyB3aXRoIHdoYXQgeW91 IGRvbid0IG93bikuDQ0KVW5pY29ybiBzaG91bGQga2VlcCBhIGxpc3Qgb2YgcGlkIHN1YnByb2Nl c3NlcyBpdCBjcmVhdGVkLCBhbmQgb25seSBkbyBzb21ldGhpbmcgb24gdGhlIGBTaWduYWwudHJh cCg6Q0hMRCkgZG9gIGlmIGl0J3Mgb25lIG9mIHRoZXNlIHBpZHMuDQ0KSSB0aGluayBpdCdzIGEg dmVyeSBmcmVxdWVudCBwYXR0ZXJuIHRvIHRyYWNrIHBpZHMgb2Ygc3VicHJvY2Vzc2VzIGFuZCBj b25uZWN0IHRvIHRyYXAgaGFuZGxlcnMuDQ0KDQ0KSU1ITyB0aGUgcHJvcG9zZWQgQVBJIGFyZSB3 YXkgdG9vIGJpZyBhbmQgaW52YXNpdmUgdG8gd29ya2Fyb3VuZCBhIGJhZCBsaWJyYXJ5IHdoaWNo IGRvZXMgUHJvY2Vzcy53YWl0YWxsLg0NClRoZSBwcm9wb3NlZCB3b3JrYXJvdW5kIGluIGh0dHBz Oi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTMyMiNub3RlLTEgZG9lc24ndCBzZWVtIHRv byBiYWQuDQ0KDQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NCkZl YXR1cmUgIzE5MzIyOiBTdXBwb3J0IHNwYXduaW5nICJwcml2YXRlIiBjaGlsZCBwcm9jZXNzZXMN DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTkzMjIjY2hhbmdlLTEwMTE5OQ0N Cg0NCiogQXV0aG9yOiBranRzYW5ha3RzaWRpcyAoS0ogVHNhbmFrdHNpZGlzKQ0NCiogU3RhdHVz OiBPcGVuDQ0KKiBQcmlvcml0eTogTm9ybWFsDQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0NCiMjIEJhY2tncm91bmQNDQoNDQpUaGUgdHJhZGl0aW9uYWwgVW5peCBw cm9jZXNzIEFQSXMgKGBmb3JrYCBldGMpIGFyZSBwb29ybHkgaXNvbGF0ZWQuIElmIGEgbGlicmFy eSBzcGF3bnMgYSBjaGlsZCBwcm9jZXNzLCB0aGlzIGlzIG5vdCB0cmFuc3BhcmVudCB0byB0aGUg cHJvZ3JhbSB1c2luZyB0aGUgbGlicmFyeS4gQW55IHNpZ25hbCBoYW5kbGVyIGZvciBgU0lHQ0hM RGAgaW4gdGhlIHByb2dyYW0gd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgc3Bhd25lZCBwcm9jZXNz IGV4aXRzLCBhbmQgZXZlbiB3b3JzZSwgaWYgdGhlIHBhcmVudCBjYWxscyBgUHJvY2Vzcy53YWl0 cGlkMigtMSlgLCBpdCB3aWxsIGNvbnN1bWUgdGhlIHJldHVybmVkIHN0YXR1cyBjb2RlLCBzdGVh bGluZyBpdCBmcm9tIHRoZSBsaWJyYXJ5IQ0NCg0NClVuZm9ydHVuYXRlbHksIHRoZSBwcmFjdGlj ZSBvZiByZXNwb25kaW5nIHRvIGBTSUdDSExEYCBieSBjYWxsaW5nIGB3YWl0cGlkMigtMSlgIGlu IGEgbG9vcCBpcyBhIHByZXR0eSBjb21tb24gdW5peGlzbS4gRm9yIGV4YW1wbGUsIFVuaWNvcm4g ZG9lcyBpdCBbaGVyZV0oaHR0cHM6Ly95aGJ0Lm5ldC91bmljb3JuLmdpdC90cmVlL2xpYi91bmlj b3JuL2h0dHBfc2VydmVyLnJiI240MDEpLiBJbiBzaG9ydCwgdGhlcmUgaXMgbm8gcmVsaWFibGUg d2F5IGZvciBhIGdlbSB0byBzcGF3biBhIGNoaWxkIHByb2Nlc3MgaW4gYSB3YXkgdGhhdCBjYW7i gJl0ICh1bmludGVudGlvbmFsbHkpIGJlIGludGVyZmVyZWQgd2l0aCBieSBvdGhlciBwYXJ0cyBv ZiB0aGUgcHJvZ3JhbS4NDQoNDQojIyBQcm9ibGVtIHN0YXRlbWVudA0NCg0NCkNvbnNpZGVyIHRo ZSBmb2xsb3dpbmcgcHJvZ3JhbS4NDQoNDQpgYGBydWJ5DQ0KIyBJbWFnaW5lIHRoaXMgcGFydCBv ZiB0aGUgcHJvZ3JhbSBpcyBpbiBzb21lIHRvcC1sZXZlbCBhcHBsaWNhdGlvbiBldmVudCBsb29w DQ0KIyBvciBzb21ldGhpbmcgLSBzaW1pbGFyIHRvIGhvdyBVbmljb3JuIHdvcmtzLiBJdCBkZXRl Y3RzIGNoaWxkIHByb2Nlc3NlcyBleGl0aW5nDQ0KIyBhbmQgdGFrZXMgc29tZSBhY3Rpb24gKHBv c3NpYmx5IHJlc3RhcnRpbmcgYSBjcmFzaGVkIHdvcmtlciwgZm9yIGV4YW1wbGUpLg0NClNpZ25h bC50cmFwKDpDSExEKSBkbw0NCiAgbG9vcCBkbw0NCiAgICBiZWdpbg0NCiAgICAgIHBpZCwgc3Rh dHVzID0gUHJvY2Vzcy53YWl0cGlkMiAtMQ0NCiAgICAgIHB1dHMgIlNpZ25hbCBoYW5kbGVyIHJl YXBlZCAje3BpZH0gI3tzdGF0dXMuaW5zcGVjdH0iDQ0KICAgIHJlc2N1ZSBFcnJubzo6RUNISUxE DQ0KICAgICAgcHV0cyAiU2lnbmFsIGhhbmRsZXIgcmVhcGVkIG5vdGhpbmciDQ0KICAgICAgYnJl YWsNDQogICAgZW5kDQ0KICBlbmQNDQplbmQNDQoNDQojIEltYWdpbmUgdGhhdCBfdGhpc18gcGFy dCBvZiB0aGUgcHJvZ3JhbSBpcyBidXJpZWQgZGVlcCBpbiBzb21lIGdlbS4gSXQga25vd3MNDQoj IG5vdGhpbmcgYWJvdXQgdGhlIGFwcGxpY2F0aW9uIFNJR0NITEQgaGFuZGxpbmcsIGFuZCBxdWl0 ZSBwb3NzaWJseSB0aGUgYXBwbGljYXRpb24NDQojIGF1dGhvciBtaWdodCBub3QgZXZlbiBrbm93 IHRoaXMgZ2VtIHNwYXducyBhIGNoaWxkIHByb2Nlc3MgdG8gZG8gaXRzIHdvcmshDQ0KcmVxdWly ZSAnb3BlbjMnDQ0KbG9vcCBkbw0NCiAgbywgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTIoIi9iaW4v c2giLCAiLWMiLCAiZWNobyAnaGVsbG8nIikNDQogIHB1dHMgInJhbiBjb21tYW5kLCBnb3QgI3tv LmNob21wfSAje3N0YXR1cy5pbnNwZWN0fSINDQplbmQNDQpgYGANDQoNDQpJbiBjdXJyZW50IHZl cnNpb25zIG9mIFJ1YnksIF9zb21lXyBsb29wIGl0ZXJhdGlvbnMgd2lsbCBmdW5jdGlvbiBjb3Jy ZWN0bHksIGFuZCBwcmludCBzb21ldGhpbmcgbGlrZSB0aGlzLiBUaGUgZ2VtIGdldHMgdGhlIGBQ cm9jZXNzOjpTdGF0dXNgIG9iamVjdCBmcm9tIGl0cyBjb21tYW5kIGFuZCBjYW4ga25vdyBpZiBl LmcuIGl0IGV4aXRlZCBhYm5vcm1hbGx5Lg0NCg0NCmBgYA0NCnJhbiBjb21tYW5kLCBnb3Qgb2hh aXRoYXIgIzxQcm9jZXNzOjpTdGF0dXM6IHBpZCAxMTUzNjg3IGV4aXQgMD4NDQpTaWduYWwgaGFu ZGxlciByZWFwZWQgbm90aGluZw0NCmBgYA0NCg0NCkhvd2V2ZXIsIG90aGVyIGl0ZXJhdGlvbnMg b2YgdGhlIGxvb3AgcHJpbnQgdGhpcy4gVGhlIHNpZ25hbCBoYW5kbGVyIHJ1bnMgYW5kIGNhbGxz IGBQcm9jZXNzLndhaXRwaWQyKC0xKWAgYmVmb3JlIHRoZSBjb2RlIGluIG9wZW4zIGNhbiBkbyBz by4gVGhlbiwgdGhlIGdlbSBjb2RlIGRvZXMgbm90IGdldCBhIGBQcm9jZXNzOjpTdGF0dXNgIG9i amVjdCEgVGhpcyBpcyBhbHNvIHBvdGVudGlhbGx5IGJhZCBmb3IgdGhlIGFwcGxpY2F0aW9uOyBp dCByZWFwZWQgYSBjaGlsZCBwcm9jZXNzIGl0IGRpZG4ndCBldmVuIGtub3cgZXhpc3RlZCwgYW5k IGl0IG1pZ2h0IGNhdXNlIHNvbWUgc3VycHJpc2luZyBidWdzIGlmIHRoZSBhcHBsaWNhdGlvbiBh dXRob3IgZGlkbid0IGtub3cgdGhpcyB3YXMgYSBwb3NzaWJpbGl0eS4NDQoNDQpgYGANDQpTaWdu YWwgaGFuZGxlciByZWFwZWQgMTE1MzU5NiAjPFByb2Nlc3M6OlN0YXR1czogcGlkIDExNTM1OTYg ZXhpdCAwPg0NClNpZ25hbCBoYW5kbGVyIHJlYXBlZCBub3RoaW5nDQ0KcmFuIGNvbW1hbmQsIGdv dCBvaGFpdGhhciBuaWwNDQpgYGANDQoNDQpXZSB3b3VsZCBsaWtlIGEgZmFtaWx5IG9mIEFQSXMg d2hpY2ggYWxsb3cgYSBnZW0gdG8gc3Bhd24gYSBjaGlsZCBwcm9jZXNzIGFuZCBndWFyYW50ZWVz IHRoYXQgdGhlIGdlbSBjYW4gd2FpdCBvbiBpdC4gU29tZSBjb25jdXJyZW50IGNhbGwgdG8gYFBy b2Nlc3Mud2FpdHBpZDIoLTEpYCAob3IgZXZlbiBgUHJvY2Vzcy53YWl0cGlkMigkc29tZV9sdWNr eV9ndWVzc19mb3JfdGhlX3BpZClgKSBzaG91bGQgbm90IHN0ZWFsIHRoZSBzdGF0dXMgb3V0IGZy b20gdW5kZXJuZWF0aCB0aGUgY29kZSB3aGljaCBjcmVhdGVkIHRoZSBwcm9jZXNzLiBJZGVhbGx5 LCB3ZSBzaG91bGQgZXZlbiBzdXBwcmVzcyB0aGUgYFNJR0NITERgIHNpZ25hbCB0byBhdm9pZCB0 aGUgYXBwbGljYXRpb24gc2lnbmFsIGhhbmRsZXIgbmVlZGxlc3NseSB3YWtpbmcgdXAuDQ0KDQ0K DQ0KIyMgUHJvcG9zZWQgUnVieS1sZXZlbCBBUElzLg0NCg0NCkkgcHJvcG9zZSB3ZSBjcmVhdGUg dGhlIGZvbGxvd2luZyBuZXcgbWV0aG9kcyBpbiBSdWJ5Lg0NCg0NCiogYFByb2Nlc3Muc3Bhd25f cHJpdmF0ZWANDQoqIGBQcm9jZXNzLmZvcmtfcHJpdmF0ZWANDQoNDQpUaGVzZSBtZXRob2RzIGJl aGF2ZSBpZGVudGljYWxseSB0byB0aGVpciBub24tX3ByaXZhdGUgdmVyc2lvbnMgaW4gYWxsIHJl c3BlY3QsIGV4Y2VwdCBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHBpZCwgdGhleSByZXR1cm4gYW4g b2JqZWN0IG9mIHR5cGUgYFByb2Nlc3M6OlByaXZhdGVIYW5kbGVgLg0NCg0NCmBQcm9jZXNzOjpQ cml2YXRlSGFuZGxlYCB3b3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoNDQoNDQoqIGBw aWQoKWAgLSByZXR1cm5zIHRoZSBwaWQgZm9yIHRoZSBjcmVhdGVkIHByb2Nlc3MNDQoqIGB3YWl0 KClgIC0gYmxvY2tzIHRoZSBjYWxsZXIgdW50aWwgdGhlIGNyZWF0ZWQgcHJvY2VzcyBoYXMgZXhp dGVkLCBhbmQgcmV0dXJucyBhIGBQcm9jZXNzOjpTdGF0dXNgIG9iamVjdC4gSWYgdGhlIGhhbmRs ZSBoYXMgX2FscmVhZHlfIGhhZCBgI3dhaXRgIGNhbGxlZCBvbiBpdCwgaXQgcmV0dXJucyB0aGUg c2FtZSBgUHJvY2Vzczo6U3RhdHVzYCBvYmplY3QgYXMgd2FzIHJldHVybmVkIHRoZW4gaW1tZWRp YXRlbHkuIFRoaXMgaXMgdW5saWtlIGBQcm9jZXNzLndhaXRwaWRgIGFuZCBmcmllbmRzLCB3aGlj aCB3b3VsZCByYWlzZSBhbiBFQ0hJTEQgaW4gdGhpcyBjYXNlIChvciwgaW4gdGhlIGZhY2Ugb2Yg cGlkIHdyYXBhcm91bmQsIHBvdGVudGlhbGx5IHdhaXQgb24gc29tZSBvdGhlciB0b3RhbGx5IHVu cmVsYXRlZCBjaGlsZCBwcm9jZXNzIHdpdGggdGhlIHNhbWUgcGlkKS4NDQoqIGB3YWl0X25vbmJs b2NrKClgIC0gaWYgdGhlIGNyZWF0ZWQgcHJvY2VzcyBoYXMgZXhpdGVkLCBiZWhhdmVzIGxpa2Ug YCN3YWl0YDsgb3RoZXJ3aXNlLCBpdCByZXR1cm5zIGEgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0 IGZvciB3aGljaCBgI2V4aXRlZD9gIHJldHVybnMgZmFsc2UuDQ0KKiBga2lsbCguLi4pYCAtIGlm IHRoZSBjcmVhdGVkIHByb2Nlc3MgaGFzIG5vdCBiZWVuIHJlYXBlZCB2aWEgYSBjYWxsIHRvIGAj d2FpdGAsIHBlcmZvcm1zIGlkZW50aWNhbGx5IHRvIGBQcm9jZXNzLmtpbGwgLi4uLCBwaWRgLiBP dGhlcndpc2UsIGlmIHRoZSBwcm9jZXNzIF9oYXNfIGJlZW4gcmVhcGVkLCByYWlzZXMgYEVycm5v OjpFU1JDSGAgaW1tZWRpYXRlbHkgd2l0aG91dCBpc3N1aW5nIGEgc3lzdGVtIGNhbGwuIFRoaXMg ZW5zdXJlcyB0aGF0LCBpZiBwaWRzIHdyYXAgYXJvdW5kLCB0aGF0IHRoZSB3cm9uZyBwcm9jZXNz IGlzIG5vdCBzaWduYWxlZCBieSBtaXN0YWtlLg0NCg0NCkEgY2FsbCB0byBgUHJvY2Vzcy53YWl0 YCwgYFByb2Nlc3Mud2FpdHBpZGAsIG9yIGBQcm9jZXNzLndhaXRwaWQyYCB3aWxsIF9uZXZlcl8g cmV0dXJuIGEgYFByb2Nlc3M6OlN0YXR1c2AgZm9yIGEgcHJvY2VzcyBzdGFydGVkIHdpdGggYSBg X3ByaXZhdGVgIG1ldGhvZCwgZXZlbiBpZiB0aGF0IGNhbGwgaXMgbWFkZSB3aXRoIHRoZSBwaWQg b2YgdGhlIGNoaWxkIHByb2Nlc3MuIFRoZSBfb25seV8gd2F5IHRvIHJlYXAgYSBwcml2YXRlIGNo aWxkIHByb2Nlc3MgaXMgdGhyb3VnaCBgUHJvY2Vzczo6UHJpdmF0ZUhhbmRsZWAuDQ0KDQ0KVGhl IGltcGxlbWVudGF0aW9uIG9mIGBJTy5wb3BlbmAsIGBLZXJuZWwjc3lzdGVtYCwgYEtlcm5lbCNw b3BlbmAsIGJhY2t0aWNrcywgYW5kIHRoZSBgT3BlbjNgIG1vZHVsZSB3b3VsZCBiZSBjaGFuZ2Vk IHRvIHVzZSB0aGlzIHByaXZhdGUgcHJvY2VzcyBtZWNoYW5pc20gaW50ZXJuYWxseSwgYWx0aG91 Z2ggdGhleSBkbyBub3QgcmV0dXJuIHBpZHMgc28gdGhleSBkbyBub3QgbmVlZCB0byBoYXZlIHRo ZWlyIGludGVyZmFjZXMgY2hhbmdlZC4gKG5vdGUgdGhvdWdoIC0gSSBkb24ndCBiZWxpZXZlIGBL ZXJuZWwjc3lzdGVtYCBzdWZmZXJzIGZyb20gdGhlIHNhbWUgcHJvYmxlbSBhcyB0aGUgYG9wZW4z YCBleGFtcGxlIGFib3ZlLCBiZWNhdXNlIGl0IGRvZXMgbm90IHlpZWxkIHRoZSBHVkwgbm9yIGNo ZWNrIGludGVycnVwdHMgaW4gYmV0d2VlbiBzcGF3bmluZyB0aGUgY2hpbGQgYW5kIHdhaXRpbmcg b24gaXQpDQ0KDQ0KIyMgSW1wbGVtZW50YXRpb24gc3RyYXRlZ3kNDQoNDQpJIGJlbGlldmUgdGhp cyBjYW4gYmUgaW1wbGVtZW50ZWQsIGluIGJyb2FkIHN0cm9rZXMsIHdpdGggYW4gYXBwcm9hY2gg bGlrZSB0aGlzOg0NCg0NCiogS2VlcCBhIGdsb2JhbCB0YWJsZSBtYXBwaW5nIHBpZHMgLT4gaGFu ZGxlcyBmb3IgcHJvY2Vzc2VzIGNyZWF0ZWQgd2l0aCBgZm9ya19wcml2YXRlYCBvciBgc3Bhd25f cHJpdmF0ZWAuDQ0KKiBXaGVuIGEgY2hpbGQgcHJvY2VzcyBpcyB3YWl0ZWQgb24sIGNvbnN1bHQg dGhlIGhhbmRsZSB0YWJsZS4gSWYgdGhlcmUgaXMgYSBoYW5kbGUgcmVnaXN0ZXJlZCwgYW5kIHRo ZSB3YWl0IGNhbGwgd2FzIG1hZGUgd2l0aG91dCB0aGUgaGFuZGxlLCBkbyBOT1QgcmV0dXJuIHRo ZSByZWFwZWQgc3RhdHVzLiBJbnN0ZWFkLCBzYXZlIHRoZSBzdGF0dXMgYWdhaW5zdCB0aGUgaGFu ZGxlLCBhbmQgcmVwZWF0IHRoZSBjYWxsIHRvIGB3YWl0cGlkYC4NDQoqIElmIHRoZSB3YWl0IGNh bGwgX3dhc18gbWFkZSB3aXRoIHRoZSBoYW5kbGUsIHdlIGNhbiByZXR1cm4gdGhlIA0NCiogT25j ZSBhIGhhbmRsZSBoYXMgaGFkIHRoZSBjaGlsZCBzdGF0dXMgc2F2ZWQgYWdhaW5zdCBpdCwgaXQg aXMgcmVtb3ZlZCBmcm9tIHRoZSB0YWJsZS4NDQoqIEEgc3Vic2VxdWVudCBjYWxsIHRvIHdhaXQg b24gdGhhdCBwaSB0aGUgaGFuZGxlIHdpbGwgbG9vayB1cCB0aGUgc2F2ZWQgaW5mb3JtYXRpb24g YW5kIHJldHVybiBpdCB3aXRob3V0IG1ha2luZyBhIHN5c3RlbSBjYWxsLg0NCg0NCkluIGZhY3Qs IG1vc3Qgb2YgdGhlIGluZnJhc3RydWN0dXJlIHRvIGRvIHRoaXMgY29ycmVjdGx5IGlzIGFscmVh ZHkgaW4gcGxhY2UgLSBpdCB3YXMgYWRkZWQgYnkgQGswa3VidW4gYW5kIEBub3JtYWxwZXJzb24g Zm91ciB5ZWFycyBhZ28gLSBodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTQ4Njcu IE1KSVQgaGFkIGEgc2ltaWxhciBwcm9ibGVtIHRvIHRoZSBvbmUgZGVzY3JpYmVkIGluIHRoaXMg aXNzdWU7IGl0IG5lZWRzIHRvIGZvcmsgYSBDIGNvbXBpbGVyLCBidXQgaWYgdGhlIGFwcGxpY2F0 aW9uIHBlcmZvcm1zIGEgYFByb2Nlc3Mud2FpdHBpZDIoLTEpYCwgaXQgY291bGQgd2luZCB1cCBy ZWFwaW5nIHRoZSBnY2MgcHJvY2VzcyBvdXQgZnJvbSB1bmRlcm5lYXRoIG1qaXQuIFRoaXMgY29k ZSBoYXMgY2hhbmdlZCBjb25zaWRlcmFibHkgb3ZlciB0aGUgY291cnNlIG9mIGxhc3QgeWVhciwg YnV0IG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBtaml0IHN0aWxsIHVzZXMgdGhpcyBpbmZyYXN0 cnVjdHVyZSB0byBwcm90ZWN0IGl0cyBSdWJ5IGNoaWxkLXByb2Nlc3MgZnJvbSBiZWNvbWluZyB2 aXNpYmxlIHRvIFJ1YnkgY29kZS4NDQoNDQpJbiBhbnkgY2FzZSwgdGhlIHdheSB3YWl0cGlkIHdv cmtzIF9jdXJyZW50bHlfLCBpcyB0aGF0Li4uDQ0KDQ0KKiBSdWJ5IGFjdHVhbGx5IGRvZXMgYWxs IGNhbGxzIHRvIGB3YWl0cGlkYCBhcyBgV05PSEFOR2AgKGkuZS4gbm9uYmxvY2tpbmcpIGludGVy bmFsbHkuDQ0KKiBJZiBhIGNhbGwgdG8gYHdhaXRwaWRgIGZpbmRzIG5vIGNoaWxkcmVuLCBpdCBi bG9ja3MgdGhlIHRocmVhZCwgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSBpbiBhIHN0cnVjdHVyZSBv ZiB0eXBlIGBzdHJ1Y3Qgd2FpdHBpZF9zdGF0ZWAuDQ0KKiBSdWJ5IGFsc28ga2VlcHMgYSBsaXN0 IG9mIGFsbCBgd2FpdHBpZF9zdGF0ZWAncyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgd2FpdGVk IGZvciwgYHZtLT53YWl0aW5nX3BpZHNgIGFuZCBgdm0tPndhaXRpbmdfZ3Jwc2AuDQ0KKiBUaGVz ZSBzdHJ1Y3R1cmVzIGFyZSBwcm90ZWN0ZWQgd2l0aCBhIHNwZWNpZmljIG11dGV4LCBgdm0tPndh aXRwaWRfbG9ja2AuDQ0KKiBSdWJ5IGludGVybmFsbHkgdXNlcyB0aGUgU0lHQ0hMRCBzaWduYWwg dG8gcmVhcCB0aGUgZGVhZCBjaGlsZHJlbiwgYW5kIHRoZW4gZmluZCBhIHdhaXRpbmcgY2FsbCB0 byBgd2FpdHBpZGAgKHZpYSB0aGUgdHdvIGxpc3RzKSB0byBhY3R1YWxseSBkaXNwYXRjaCB0aGUg cmVhcGVkIHN0YXR1cyB0by4gDQ0KKiBJZiBzb21lIGNhbGxlciBpcyB3YWl0aW5nIGZvciBhIHNw ZWNpZmljIHBpZCwgdGhhdCBfYWx3YXlzXyB0YWtlcyBwcmlvcml0eSBvdmVyIHNvbWUgb3RoZXIg Y2FsbGVyIHRoYXQncyB3YWl0aW5nIGZvciBhIHBpZC1ncm91cCAoZS5nLiBgLTFgKS4NDQoNDQpt aml0J3MgY2hpbGQgcHJvY2VzcyBpcyBwcm90ZWN0ZWQsIGJlY2F1c2U6DQ0KDQ0KKiBXaGVuIG1q aXQgZm9ya3MsIGl0IHVzZXMgYSBtZXRob2QgYHJiX21qaXRfZm9ya2AgdG8gZG8gc28uDQ0KKiBU aGF0IGNhbGxzIHRoZSBhY3R1YWwgYGZvcmtgIGltcGxlbWVudGF0aW9uIF93aGlsc3Qgc3RpbGwg aG9sZGluZ18gYHZtLT53YWl0cGlkX2xvY2tgDQ0KKiBCZWZvcmUgeWllbGRpbmcgdGhlIGxvY2ss IGl0IGluc2VydHMgYW4gZW50cnkgaW4gYHZtLT53YWl0aW5nX3BpZHNgIHNheWluZyB0aGF0IG1q aXQgaXMgd2FpdGluZyBmb3IgdGhlIGp1c3QtY3JlYXRlZCBjaGlsZC4NDQoqIFNpbmNlIGRpcmVj dCB3YWl0cyBmb3IgcGlkcyBhbHdheXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcGlkLWdyb3Vwcywg dGhpcyBlbnN1cmVzIHRoYXQgbWppdCB3aWxsIGFsd2F5cyByZWFwIGl0cyBvd24gY2hpbGRyZW4u DQ0KDQ0KSSBiZWxpZXZlIHRoaXMgbWVjaGFuaXNtIGNhbiBiZSBleHRlbmRlZCBhbmQgZ2VuZXJh bGlzZWQgdG8gcG93ZXIgdGhlIHByb3Bvc2VkIEFQSSwgYW5kIG1qaXQgY291bGQgaXRzZWxmIHVz ZSB0aGF0IHJhdGhlciB0aGFuIGhhdmluZyBtaml0LXNwZWNpZmljIGhhbmRsaW5nIGluIGBwcm9j ZXNzLmNgLg0NCg0NCiMjIFBPQyBpbXBsZW1lbnRhdGlvbg0NCg0NCkkgc2tldGNoZWQgb3V0IGEg X3ZlcnlfIHJvdWdoIFBPQyB0byBzZWUgaWYgd2hhdCBJIHNhaWQgYWJvdmUgd291bGQgYmUgcG9z c2libGUsIGFuZCBJIHRoaW5rIGl0IGlzOg0NCg0NCmh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1 YnkvY29tbWl0LzYwMDljNTY0YjE2ODYyMDAxNTM1ZjJiNTYxZjFhMTJmNmU3ZTBjNTcNDQoNDQpU aGUgZm9sbG93aW5nIHNjcmlwdCBiZWhhdmVzIGhvdyBJIGV4cGVjdCB3aXRoIHRoaXMgcGF0Y2g6 DQ0KDQ0KYGBgcnVieQ0NCnBpZCwgaCA9IFByb2Nlc3Muc3Bhd25fcHJpdmF0ZSAiL2Jpbi9zaCIs ICItYyIsICJzbGVlcCAxOyBleGl0IDY5Ig0NCnB1dHMgInBpZCAtPiAje3BpZH0iDQ0KcHV0cyAi aCAtPiAje2h9Ig0NCg0NCiMgc2hvdWxkIEVTUkNILg0NCnNsZWVwIDINDQpiZWdpbg0NCiAgICBQ cm9jZXNzLndhaXRwaWQyIC0xDQ0KcmVzY3VlID0+IGUNDQogICAgcHV0cyAid2FpdHBpZCBlcnIg LT4gI3tlfSINDQplbmQNDQp3cGlkLCBzdGF0dXMgPSBoLndhaXQNDQpwdXRzICJ3cGlkIC0+ICN7 d3BpZH0iDQ0KcHV0cyAic3RhdHVzIC0+ICN7c3RhdHVzLmluc3BlY3R9Ig0NCmBgYA0NCg0NCmBg YA0NCmt0c2FuYWt0c2lkaXNAbGltYS1saW51eDEgcnVieSAlIC4vdG9vbC9ydW5ydWJ5LnJiIC0t IC4vdHN0MS5yYg0NCnBpZCAtPiAxMTU0MTA1DQ0KaCAtPiAjPFByb2Nlc3M6OlByaXZhdGVIYW5k bGU6MHgwMDAwZmZmZjk0MDE0MDk4Pg0NCndhaXRwaWQgZXJyIC0+IE5vIGNoaWxkIHByb2Nlc3Nl cw0NCndwaWQgLT4gMTE1NDEwNQ0NCnN0YXR1cyAtPiAjPFByb2Nlc3M6OlN0YXR1czogcGlkIDEx NTQxMDUgZXhpdCA0Pg0NCmBgYA0NCg0NClRoZSBjaGlsZCBwcm9jZXNzIGNhbiBiZSB3YWl0ZWQg b24gd2l0aCB0aGUgaGFuZGxlLCBhbmQgdGhlIGNhbGwgdG8gYHdhaXRwaWQyKC0xKWAgZmluZHMg bm90aGluZy4NDQoNDQojIyBQcmV2aW91cyBpZGVhOiBPUy1zcGVjaWZpYyBoYW5kbGVzDQ0KDQ0K TXkgZmlyc3QgdmVyc2lvbiBvZiB0aGlzIHByb3Bvc2FsIGludm9sdmVkIGEgc2ltaWxhciBBUEks IGJ1dCBwb3dlcmluZyBpdCB3aXRoIHBsYXRmb3JtLXNwZWNpZmljIGNvbmNlcHRzIGF2YWlsYWJs ZSBvbiBMaW51eCwgV2luZG93cywgYW5kIEZyZWVCU0Qgd2hpY2ggb2ZmZXIgcmljaGVyIGNvbnRy b2wgdGhhbiBqdXN0IHBpZHMgJiB0aGUgYHdhaXRgIHN5c2NhbGwuIEluIHBhcnRpY3VsYXIsIEkg aGFkIGJlbGlldmVkIHRoYXQgd2UgY291bGQgdXNlIHRoZSBgY2xvbmVgIHN5c2NhbGwgaW4gTGlu dXggdG8gY3JlYXRlIGEgY2hpbGQgcHJvY2VzcyB3aGljaDoNDQoNDQoqIENvdWxkIGJlIHJlZmVy cmVkIHRvIGJ5IGEgdW5pcXVlIGZpbGUgZGVzY3JpcHRvciAoYSBwaWRmZCkgd2hpY2ggd291bGQg YmUgZ3VhcmFudGVlZCBuZXZlciB0byBiZSByZS11c2VkICh1bmxpa2UgYSBwaWQpLA0NCiogV291 bGQgbm90IGdlbmVyYXRlIGEgc2lnbmFsIHdoZW4gaXQgZXhpdGVkIChpLmUuIG5vIFNJR0NITEQp Lg0NCiogQ291bGQgbm90IGJlIHdhaXRlZCBvbiBieSBhbiB1bnNwZWN0aW5nIHRvIGB3YWl0cGlk YCAoZXhjZXB0IGlmIGEgc3BlY2lhbCBmbGFnIGBfX1dDTE9ORWAgYXMgcGFzc2VkKS4NDQoNDQpV bmZvcnR1bmF0ZWx5LCB3aGVuIEkgdHJpZWQgdG8gaW1wbGVtZW50IHRoaXMsIEkgcmFuIGludG8g YSBwcmV0dHkgc2VyaW91cyBzbmFnLiBJdCBpcyBwb3NzaWJsZSB0byBjcmVhdGUgc3VjaCBhIHBy b2Nlc3MgLSBCVVQsIHdoZW4gdGhlIHByb2Nlc3MgZXhlYydzLCBpdCBnb2VzIF9iYWNrXyB0byAi cmFpc2UtU0lHQ0hMRC1vbi1leGl0IiBhbmQgImFsbG93LXdhaXRpbmctd2l0aG91dC1fX1dDTE9O RSIgbW9kZXMuIEkgZ3Vlc3MgdGhpcyBmdW5jdGlvbmFsaXR5IGluIHRoZSBjbG9uZSBzeXNjYWxs IGlzIHJlYWxseSBkZXNpZ25lZCB0byBwb3dlciB0aHJlYWRzIGluIExpbnV4LCByYXRoZXIgdGhh biBiZWluZyBhIGdlbmVyYWwtcHVycG9zZSAiaGlkZGVuIHByb2Nlc3MiIEFQSS4NDQoNDQpTbywg SSBkb24ndCB0aGluayB3ZSBzaG91bGQgdXNlIHBpZGZkcyBpbiB0aGlzIHByb3Bvc2FsLg0NCg0N CiMjIE1vdGl2YXRpb24NDQoNDQpNeSB1c2UtY2FzZSBmb3IgdGhpcyBpcyB0aGF0IEnigJltIHdv cmtpbmcgb24gYSBwZXJmLWJhc2VkIHByb2ZpbGluZyB0b29sIGZvciBSdWJ5LiBUbyBnZXQgYXJv dW5kIHNvbWUgTGludXggY2FwYWJpbGl0eSBpc3N1ZXMsIEkgd2FudCBteSBwcm9maWxlciBnZW0g KG9yIENSdWJ5IHBhdGNoLCB3aGF0ZXZlciBpdCB3aW5kcyB1cCBiZWluZyEpIHRvIGZvcmsgYSBw cml2aWxlZ2VkIGhlbHBlciBiaW5hcnkgdG8gZG8gc29tZSBlQlBGIHR3aWRkbGluZy4gQnV0LCBp ZiB5b3XigJlyZSBwcm9maWxpbmcgZS5nLiBhIFVuaWNvcm4gbWFzdGVyIHByb2Nlc3MsIHRoZSBy ZXN1bHQgb2YgdGhhdCBiaW5hcnkgZXhpdGluZyBtaWdodCBiZSBjYXVnaHQgYnkgVW5pY29ybiBp dHNlbGYsIHJhdGhlciB0aGFuIG15IChnZW0gfCBpbnRlcnByZXRlciBmZWF0dXJlKS4NDQoNDQpJ biBteSBjYXNlLCBJJ20gc28gZGVlcCBpbiBsaW51eCBzcGVjaWZpYyBzdHVmZiB0aGF0IGp1c3Qg Y2FsbGluZyBgY2xvbmUoMilgIGZyb20gbXkgZXh0ZW5zaW9uIGlzIHByb2JhYmx5IGZpbmUsIGJ1 dCBJIGhhZCBlbm91Z2ggb2YgYSBsb29rIGF0IHRoaXMgcHJvY2VzcyBtYW5hZ2VtZW50IHN0dWZm IEkgdGhvdWdodCBpdCB3b3VsZCBiZSB3b3J0aCBhc2tpbmcgdGhlIHF1ZXN0aW9uIGlmIHRoaXMg bWlnaHQgYmUgdXNlZnVsIHRvIG90aGVyLCBtb3JlIG5vcm1hbCwgZ2Vtcy4NDQoNDQoNDQoNDQoN DQotLSANDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NDQogX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBy dWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0 byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0 cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL3Bvc3Rvcml1cy9saXN0cy9ydWJ5LWNvcmUu bWwucnVieS1sYW5nLm9yZy8=