[#121498] [Ruby Bug#21210] IO::Buffer gets invalidated on GC compaction — "hanazuki (Kasumi Hanazuki) via ruby-core" <ruby-core@...>

Issue #21210 has been reported by hanazuki (Kasumi Hanazuki).

10 messages 2025/04/01

[#121519] [Ruby Bug#21214] VmRSS consumption increase in Ruby 3.4.2 vs Ruby 3.3.6 — "mood_vuadensl (LOIC VUADENS) via ruby-core" <ruby-core@...>

Issue #21214 has been reported by mood_vuadensl (LOIC VUADENS).

9 messages 2025/04/02

[#121542] [Ruby Bug#21217] Integer.sqrt produces wrong results even on input <= 1e18 — "hjroh0315 (Matthew Roh) via ruby-core" <ruby-core@...>

Issue #21217 has been reported by hjroh0315 (Matthew Roh).

8 messages 2025/04/06

[#121551] [Ruby Feature#21219] `Object#inspect` accept a list of instance variables to display — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>

Issue #21219 has been reported by byroot (Jean Boussier).

10 messages 2025/04/07

[#121556] [Ruby Bug#21220] Memory corruption in update_line_coverage() [write at index -1] — "mbcodeandsound (Mike Bourgeous) via ruby-core" <ruby-core@...>

Issue #21220 has been reported by mbcodeandsound (Mike Bourgeous).

16 messages 2025/04/07

[#121560] [Ruby Feature#21221] Proposal to upstream ZJIT — "maximecb (Maxime Chevalier-Boisvert) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjIxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IG1heGltZWNiIChNYXhpbWUgQ2hldmFs

8 messages 2025/04/07

[#121565] [Ruby Feature#21254] Inlining Class#new — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjU0IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHRlbmRlcmxvdmVtYWtpbmcgKEFhcm9u

12 messages 2025/04/07

[#121601] [Ruby Feature#21258] Retire CGI library from Ruby 3.5 — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #21258 has been reported by hsbt (Hiroshi SHIBATA).

11 messages 2025/04/09

[#121621] [Ruby Feature#21262] Proposal: `Ractor::Port` — "ko1 (Koichi Sasada) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjYyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtvMSAoS29pY2hpIFNhc2FkYSkuDQoN

8 messages 2025/04/10

[#121627] [Ruby Feature#21264] Extract Date library from Ruby repo in the future — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #21264 has been reported by hsbt (Hiroshi SHIBATA).

8 messages 2025/04/11

[#121686] [Ruby Feature#21274] Show performance warnings for easily avoidable unnecessary implicit splat allocations — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

Issue #21274 has been reported by jeremyevans0 (Jeremy Evans).

6 messages 2025/04/18

[#121700] [Ruby Feature#21279] Bare "rescue" should not rescue NameError — "AMomchilov (Alexander Momchilov) via ruby-core" <ruby-core@...>

Issue #21279 has been reported by AMomchilov (Alexander Momchilov).

9 messages 2025/04/21

[#121702] [Ruby Bug#21280] StringIO#set_encoding warns when backed by chilled string literal — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

Issue #21280 has been reported by jeremyevans0 (Jeremy Evans).

13 messages 2025/04/22

[#121721] [Ruby Bug#21283] Some tests of TestMkmfConvertible is failing with VS2022 17.14.0 preview 4.0 — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #21283 has been reported by hsbt (Hiroshi SHIBATA).

8 messages 2025/04/24

[#121745] [Ruby Bug#21286] Windows - MSYS2 just updated to GCC 15.1.0, builds failing — "MSP-Greg (Greg L) via ruby-core" <ruby-core@...>

Issue #21286 has been reported by MSP-Greg (Greg L).

15 messages 2025/04/27

[#121755] [Ruby Misc#21290] Unable to build ruby extension on Fedora 42 due to possible GCC 15 issues — "lukef (Luke Freeman) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjkwIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGx1a2VmIChMdWtlIEZyZWVtYW4pLg0K

8 messages 2025/04/28

[ruby-core:121621] [Ruby Feature#21262] Proposal: `Ractor::Port`

From: "ko1 (Koichi Sasada) via ruby-core" <ruby-core@...>
Date: 2025-04-10 14:43:57 UTC
List: ruby-core #121621
SXNzdWUgIzIxMjYyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtvMSAoS29pY2hpIFNhc2FkYSkuDQoN
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIxMjYy
OiBQcm9wb3NhbDogYFJhY3Rvcjo6UG9ydGANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lz
c3Vlcy8yMTI2Mg0KDQoqIEF1dGhvcjoga28xIChLb2ljaGkgU2FzYWRhKQ0KKiBTdGF0dXM6IEFz
c2lnbmVkDQoqIEFzc2lnbmVlOiBrbzEgKEtvaWNoaSBTYXNhZGEpDQoqIFRhcmdldCB2ZXJzaW9u
OiAzLjUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJvcG9z
YWw6IGBSYWN0b3I6OlBvcnRgDQoNCkluIGNvbmN1cnJlbnQgUnVieSBhcHBsaWNhdGlvbnMgdXNp
bmcgUmFjdG9ycywgc2FmZWx5IGFuZCBlZmZpY2llbnRseSBjb21tdW5pY2F0aW5nIHJlc3VsdHMg
YmV0d2VlbiBSYWN0b3JzIGlzIGEgY29tbW9uIGNoYWxsZW5nZS4gV2UgcHJvcG9zZSBgUmFjdG9y
OjpQb3J0YCBhcyBhIGxpZ2h0d2VpZ2h0LCBzYWZlLCBhbmQgZXJnb25vbWljIGFic3RyYWN0aW9u
IHRvIHNpbXBsaWZ5IGNvbW11bmljYXRpb24gcGF0dGVybnMsIGVzcGVjaWFsbHkgaW4gcmVxdWVz
dC1yZXNwb25zZSBtb2RlbHMuDQoNCmBgYHJ1YnkNCiMgdXNhZ2UgZXhhbXBsZQ0KDQpwb3J0ID0g
UmFjdG9yOjpQb3J0Lm5ldw0KDQpSYWN0b3IubmV3IHBvcnQgZG8gfHBvcnR8DQogIHBvcnQgPDwg
NDINCiAgcG9ydCA8PCA0Mw0KZW5kDQoNCiMgU3VjY2Vzczogd2FpdCBmb3Igc2VuZGluZw0KcG9y
dC5yZWNlaXZlICM9PiA0Mg0KDQpSYWN0b3IubmV3IHBvcnQgZG8gfHBvcnR8DQogIHBvcnQucmVj
ZWl2ZSAjIEVycm9yOiBvbmx5IHRoZSBjcmVhdG9yIFJhY3RvciBjYW4gcmVjZWl2ZSBmcm9tIHRo
aXMgcG9ydC4NCmVuZA0KDQpwb3J0LnJlY2VpdmUgIz0+IDQzDQpgYGANCg0KVGhpcyBpcyBhIHNp
bWlsYXIgY29uY2VwdCB0byBbIkNoYW5uZWwiXShodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9p
c3N1ZXMvMjExMjEpLCBidXQgaXQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGNyZWF0b3Ig
UmFjdG9yIGFuZCBubyBvdGhlciBSYWN0b3JzIGNhbiByZWNlaXZlIGFueXRoaW5nIGZyb20gdGhh
dCBwb3J0Lg0KDQpJbiB0aGF0IHNlbnNlLCBpdCBpcyBjb25jZXB0dWFsbHkgY2xvc2VyIHRvIGEg
c29ja2V0IGZpbGUgZGVzY3JpcHRvciAoZS5nLiwgYSBkZXN0aW5hdGlvbiBhbmQgcG9ydCBudW1i
ZXIgcGFpciBpbiBUQ1AvSVApLg0KDQpXZSBjYW4gaW1wbGVtZW50IGBQb3J0YCB3aXRoIGBSYWN0
b3IucmVjZWl2ZV9pZmAgbGlrZSB0aGlzOg0KDQpgYGBydWJ5DQpjbGFzcyBSYWN0b3I6OlBvcnQN
CiAgZGVmIGluaXRpYWxpemUNCiAgICBAciA9IFJhY3Rvci5jdXJyZW50DQogICAgQHRhZyA9IGdl
bmlkKCkNCiAgZW5kDQoNCiAgZGVmIHNlbmQgb2JqDQogICAgQHIgPDwgW0B0YWcsIG9ial0NCiAg
ZW5kDQoNCiAgZGVmIHJlY2VpdmUNCiAgICByYWlzZSB1bmxlc3MgQHIgPT0gUmFjdG9yLmN1cnJl
bnQNCg0KICAgIFJhY3Rvci5yZWNlaXZlX2lmIGRvIHwodGFnLCByZXN1bHQpDQogICAgICBpZiB0
YWcgPT0gQHRhZw0KICAgICAgICByZXR1cm4gcmVzdWx0DQogICAgICBlbmQNCiAgICBlbmQNCiAg
ZW5kDQplbmQNCmBgYA0KDQpXaXRoIGBSYWN0b3I6OlBvcnRgLCB3ZSBjYW4gZGVwcmVjYXRlIGBS
YWN0b3IucmVjZWl2ZV9pZmAsIGBSYWN0b3IueWllbGRgLCBhbmQgYFJhY3RvciN0YWtlYC4gUG9y
dHMgYWN0IGFzIGNsZWFyLCBzZWxmLWNvbnRhaW5lZCBlbmRwb2ludHMgZm9yIG1lc3NhZ2UgcGFz
c2luZywgd2hpY2ggbWFrZXMgdGhlc2Ugb2xkZXIgcHJpbWl0aXZlcyByZWR1bmRhbnQuIEZ1cnRo
ZXJtb3JlLCBQb3J0LWJhc2VkIGNvbW11bmljYXRpb24gaXMgc2lnbmlmaWNhbnRseSBlYXNpZXIg
dG8gaW1wbGVtZW50IGFuZCByZWFzb24gYWJvdXTigJRlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJp
bmcgc3luY2hyb25pemF0aW9uIGNoYWxsZW5nZXMgYXJvdW5kIGBSYWN0b3Iuc2VsZWN0YCBhbmQg
cmVuZGV6dm91cyBzZW1hbnRpY3MuDQoNCiMjIEJhY2tncm91bmQ6IExpbWl0YXRpb25zIG9mIGN1
cnJlbnQgY29tbXVuaWNhdGlvbiBwYXR0ZXJucw0KDQpMZXQncyBkaXNjdXNzIGhvdyB0byBtYWtl
IHNlcnZlci1saWtlIHNlcnZpY2UgcmFjdG9ycy4NCg0KIyMjIE5vIHJlc3BvbnNlIHNlcnZlcg0K
DQpXZSBjYW4gbWFrZSBzZXJ2ZXItbGlrZSBSYWN0b3JzIGxpa2UgdGhpczoNCg0KYGBgcnVieQ0K
IyBFWDENCg0KZGVmIGZpYihuKSA9IG4gPiAxIDogZmliKG4tMikgKyBmaWIobi0xKSA6IDENCg0K
IyBBIHJhY3RvciBjYWxjdWxhdGUgZmliKG4pDQpmaWJfc3J2ID0gUmFjdG9yLm5ldyBkbw0KICB3
aGlsZSB0cnVlDQogICAgcGFyYW0gPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZpYihw
YXJhbSkNCiAgZW5kDQplbmQNCg0KZmliX3NydiA8PCAxMA0KYGBgDQoNCkluIHRoaXMgY2FzZSwg
dGhlIG1haW4gUmFjdG9yIHJlcXVlc3RzIGBmaWJfc3J2YCB0byBjYWxjdWxhdGUgYGZpYigxMClg
Lg0KSG93ZXZlciwgY3VycmVudGx5LCB0aGVyZSBpcyBubyB3YXkgdG8gcmV0cmlldmUgdGhlIHJl
c3VsdC4NCg0KIyMjIFJldHVybiB2YWx1ZSB0byB0aGUgc2VuZGVyIHJhY3Rvcg0KDQpUaGVyZSBh
cmUgc2V2ZXJhbCBwb3NzaWJsZSBhcHByb2FjaGVzLg0KDQpGaXJzdCwgd2UgY2FuIHNlbmQgdGhl
IHNlbmRlciBSYWN0b3IgYWxvbmcgd2l0aCB0aGUgcGFyYW1ldGVyLCBhbmQgYXNrIHRoZSBzZXJ2
ZXIgdG8gc2VuZCB0aGUgcmVzdWx0IGJhY2sgdG8gdGhlIHNlbmRlci4NCg0KYGBgcnVieQ0KIyBF
WDINCg0KZmliX3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBhcmFtLCBz
ZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZpYihwYXJhbSkNCiAgICBzZW5k
ZXIgPDwgcmVzdWx0DQogIGVuZA0KZW5kDQoNCmZpYl9zcnYgPDwgWzEwLCBSYWN0b3IuY3VycmVu
dF0NCg0KZG9fc29tZV93b3JrKCkNCg0KUmFjdG9yLnJlY2VpdmUgIz0+IGZpYigxMCkNCmBgYA0K
DQpUaGlzIGFwcHJvYWNoIHdvcmtzIHdlbGwgaW4gc2ltcGxlIGNhc2VzLg0KDQpIb3dldmVyLCB3
aXRoIEVYMiwgaGFuZGxpbmcgbXVsdGlwbGUgY29uY3VycmVudCByZXNwb25zZXMgYmVjb21lcyBk
aWZmaWN1bHQuIFRoZSByZXN1bHRzIGFyZSBwdXNoZWQgaW50byB0aGUgc2FtZSBtYWlsYm94LCBh
bmQgc2luY2UgYFJhY3Rvci5yZWNlaXZlYCByZXRyaWV2ZXMgbWVzc2FnZXMgd2l0aG91dCBkaXNj
cmltaW5hdGluZyB0aGUgc291cmNlLCBpdCdzIHVuY2xlYXIgd2hpY2ggc2VydmVyIHJldHVybmVk
IHdoaWNoIHJlc3VsdC4NCg0KYGBgcnVieQ0KIyBFWDMNCg0KZGVmIGZhY3QobikgPSBuID4gMSA6
IGZhY3Qobi0xKSAqIG4NCg0KZmliX3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0K
ICAgIHBhcmFtLCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZpYihwYXJh
bSkNCiAgICBzZW5kZXIgPDwgcmVzdWx0DQogIGVuZA0KZW5kDQoNCmZhY3Rfc3J2ID0gUmFjdG9y
Lm5ldyBkbw0KICB3aGlsZSB0cnVlDQogICAgcGFyYW0sIHNlbmRlciA9IFJhY3Rvci5yZWNlaXZl
DQogICAgcmVzdWx0ID0gZmFjdChwYXJhbSkNCiAgICBzZW5kZXIgPDwgcmVzdWx0DQogIGVuZA0K
ZW5kDQoNCg0KZmliX3NydiA8PCBbMTAsIFJhY3Rvci5jdXJyZW50XQ0KZmliX3NydiA8PCBbMjAs
IFJhY3Rvci5jdXJyZW50XQ0KZmFjdF9zcnYgPDwgWzEwLCBSYWN0b3IuY3VycmVudF0NCmZhY3Rf
c3J2IDw8IFsyMCwgUmFjdG9yLmN1cnJlbnRdDQoNCmRvX3NvbWVfd29yaygpDQoNClJhY3Rvci5y
ZWNlaXZlDQojPT4gZmliKDEwKSBvciBmYWN0KDEwKSwgd2hpY2g/DQojICAgSWYgdGhlIHNlcnZl
cnMgdXNlcyBSYWN0b3JzIG1vcmUgKGNhbGN1bGF0ZSB0aGVtIGluIHBhcmFsbGVsKSwNCiMgICBm
aWIoMjApIGFuZCBmYWN0KDIwKSBjYW4gYmUgcmV0dXJuZWQuDQpgYGANCg0KQmVjYXVzZSBgUmFj
dG9yLnJlY2VpdmVgIHJldHJpZXZlcyBhbGwgbWVzc2FnZXMgaW5kaXNjcmltaW5hdGVseSwgZGV2
ZWxvcGVycyBtdXN0IGFkZCB0aGVpciBvd24gdGFnZ2luZyBsb2dpYyB0byBkaXN0aW5ndWlzaCBy
ZXN1bHRzLiBXaGlsZSB0YWdnaW5nIChhcyBzaG93biBpbiBFWDQpIGhlbHBzLCBpdCBpbnRyb2R1
Y2VzIGFkZGl0aW9uYWwgY29tcGxleGl0eSBhbmQgYnJpdHRsZW5lc3MuDQoNCiMjIyBSZXNwb25z
ZXMgd2l0aCByZXF1ZXN0IElEDQoNClRoZSBmb2xsb3dpbmcgY29kZSByZXR1cm5zIGEgcmVzdWx0
IHdpdGggcmVxdWVzdCBpZCAoYSBwYWlyIG9mIHRoZSBuYW1lIG9mIHNlcnZlciBhbmQgYSBwYXJh
bWV0ZXIpLg0KDQpgYGBydWJ5DQojIEVYNA0KDQpmaWJfc3J2ID0gUmFjdG9yLm5ldyBkbw0KICB3
aGlsZSB0cnVlDQogICAgcGFyYW0sIHNlbmRlciA9IFJhY3Rvci5yZWNlaXZlDQogICAgcmVzdWx0
ID0gZmliKHBhcmFtKQ0KICAgIHNlbmRlciA8PCBbWzpmaWIsIHBhcmFtXSwgcmVzdWx0XQ0KICBl
bmQNCmVuZA0KDQpmYWN0X3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBh
cmFtLCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZhY3QocGFyYW0pDQog
ICAgc2VuZGVyIDw8IFtbOmZhY3QsIHBhcmFtXSwgcmVzdWx0XQ0KICBlbmQNCmVuZA0KDQpkb19z
b21lX3dvcmsoKQ0KDQpmaWJfc3J2IDw8IFsxMCwgUmFjdG9yLmN1cnJlbnRdDQpmaWJfc3J2IDw8
IFsyMCwgUmFjdG9yLmN1cnJlbnRdDQpmYWN0X3NydiA8PCBbMTAsIFJhY3Rvci5jdXJyZW50XQ0K
ZmFjdF9zcnYgPDwgWzIwLCBSYWN0b3IuY3VycmVudF0NCg0KUmFjdG9yLnJlY2VpdmVfaWYgZG8g
fGlkLCByZXN1bHR8DQogIGNhc2UgaWQNCiAgaW4gWzpmaWIsIG5dDQogICAgcCAiZmliKCN7bn0p
ID0gI3tyZXN1bHR9Ig0KICBpbiBbOmZhY3QsIG5dDQogICAgcCAiZmFjdCgje259KSA9ICN7cmVz
dWx0fSINCiAgZW5kDQplbmQNCg0KIyBvciBpZiB5b3Ugd2FudCB0byB1c2Ugc3BlY2lmaWMgcmVz
dWx0cywgbGlrZToNCg0KcCBmaWIyMDogIFJhY3Rvci5yZWNlaXZlX2lme3xpZCwgcmVzdWx0fCBp
ZCA9PiBbOmZpYiwgMjBdOyAgcmVzdWx0fQ0KcCBmYWN0MTA6IFJhY3Rvci5yZWNlaXZlX2lme3xp
ZCwgcmVzdWx0fCBpZCA9PiBbOmZhY3QsIDEwXTsgcmVzdWx0fQ0KcCBmYWN0MjA6IFJhY3Rvci5y
ZWNlaXZlX2lme3xpZCwgcmVzdWx0fCBpZCA9PiBbOmZhY3QsIDIwXTsgcmVzdWx0fQ0KcCBmaWIx
MDogIFJhY3Rvci5yZWNlaXZlX2lme3xpZCwgcmVzdWx0fCBpZCA9PiBbOmZpYiwgMTBdOyAgcmVz
dWx0fQ0KYGBgDQoNClRoaXMgYXBwcm9hY2ggY2xvc2VseSByZXNlbWJsZXMgcGF0dGVybiBtYXRj
aGluZyBpbiBFcmxhbmcgb3IgRWxpeGlyLCB3aGVyZSByZXNwb25zZXMgYXJlIHRhZ2dlZCBhbmQg
bWF0Y2hlZCBzdHJ1Y3R1cmFsbHkuDQoNCkhvd2V2ZXIsIHRoaXMgc29sdXRpb24gc3RpbGwgaGFz
IGFuIGlzc3VlOiBpZiBgZG9fc29tZV93b3JrKClgIHVzZXMgYFJhY3Rvci5yZWNlaXZlYCwgaXQg
bWF5IGFjY2lkZW50YWxseSBjb25zdW1lIGFueSBtZXNzYWdlLiBJbiBvdGhlciB3b3JkcywgYFJh
Y3Rvci5yZWNlaXZlYCBjYW4gb25seSBiZSBzYWZlbHkgdXNlZCB3aGVuIHlvdSdyZSBjZXJ0YWlu
IHRoYXQgbm8gb3RoZXIgY29kZSBpcyB1c2luZyBpdC4NCg0KKEFub3RoZXIgdHJpdmlhbCBpc3N1
ZSBpcywgZGlmZmVyZW50IHNlcnZlcnMgY2FuIHJldHVybiBzYW1lIGlkZW50aXR5LCBsaWtlIGBb
OmZhY3QsIG51bV1gIHJldHVybmVkIGJ5IE5ld3NQYXBlciBzZXJ2ZXIuIEl0IGlzIGNvbmZ1c2lu
ZykuDQoNCg0KIyMjIFVzaW5nIGNoYW5uZWxzDQoNClRvIHNvbHZlIHRoaXMgaXNzdWUsIHdlIGNh
biBtYWtlIGEgY2hhbm5lbCB3aXRoIGRpZmZlcmVudCBSYWN0b3JzLg0KDQpDaGFubmVscyBjYW4g
YmUgaW1wbGVtZW50ZWQgdXNpbmcgUmFjdG9ycywgYXMgaWxsdXN0cmF0ZWQgYmVsb3cuDQoNCmBg
YHJ1YnkNCiMgRVg1DQoNCiMgU2VydmVycyBhcmUgY29tcGxldGVseSBzYW1lIHRvIEVYMw0KDQpm
aWJfc3J2ID0gUmFjdG9yLm5ldyBkbw0KICB3aGlsZSB0cnVlDQogICAgcGFyYW0sIHNlbmRlciA9
IFJhY3Rvci5yZWNlaXZlDQogICAgcmVzdWx0ID0gZmliKHBhcmFtKQ0KICAgIHNlbmRlciA8PCBy
ZXN1bHQNCiAgZW5kDQplbmQNCg0KZmFjdF9zcnYgPSBSYWN0b3IubmV3IGRvDQogIHdoaWxlIHRy
dWUNCiAgICBwYXJhbSwgc2VuZGVyID0gUmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmYWN0
KHBhcmFtKQ0KICAgIHNlbmRlciA8PCByZXN1bHQNCiAgZW5kDQplbmQNCg0KIyBDcmVhdGUgYSBu
ZXcgY2hhbm5lbCB1c2luZyBhIFJhY3Rvcg0KZGVmIG5ld19jaGFubmVsDQogIFJhY3Rvci5uZXcg
ZG8NCiAgICB3aGlsZSB0cnVlDQogICAgICBSYWN0b3IueWllbGQgUmFjdG9yLnJlY2VpdmUNCiAg
ICBlbmQNCiAgZW5kDQplbmQNCg0KDQpmaWJfc3J2IDw8IFsxMCwgZmliMTBfY2ggPSBuZXdfY2hh
bm5lbF0NCmZpYl9zcnYgPDwgWzIwLCBmaWIyMF9jaCA9IG5ld19jaGFubmVsXQ0KZmFjdF9zcnYg
PDwgWzEwLCBmYWN0MTBfY2ggPSBuZXdfY2hhbm5lbF0NCmZhY3Rfc3J2IDw8IFsyMCwgZmFjdDIw
X2NoID0gbmV3X2NoYW5uZWxdDQoNCmRvX3NvbWV0aGluZygpDQoNCnAgZmliMjA6IGZpYjIwX2No
LnRha2UgICAjIHdhaXQgZm9yIGZpYigyMCkNCnAgZmFjdDEwOiBmYWN0MTBfY2gudGFrZSAjIHdh
aXQgZm9yIGZhY3QoMTApDQpwIGZpYjEwOiBmaWIxMF9jaC50YWtlICAgIyB3YWl0IGZvciBmaWIo
MTApDQpwIGZhY3QyMDogZmFjdDEwX2NoLnRha2UgIyB3YWl0IGZvciBmYWN0KDIwKQ0KDQojIG9y
IA0KY2hzID0gW2ZpYjEwX2NoLCBmaWIyMF9jaCwgZmFjdDEwX2NoLCBmYWN0MjBfY2hdDQoNCndo
aWxlICFjaHMuZW1wdHk/DQogIGNoLCByZXN1bHQgPSBSYWN0b3Iuc2VsZWN0KCpjaHMpICMgd2Fp
dCBmb3IgbXVsdGlwbGUgY2hhbm5lbHMNCiAgcCBjaCwgcmVzdWx0DQogIGNocy5kZWxldGUgY2gN
CmVuZA0KYGBgDQoNCkNoYW5uZWwgYXBwcm9hY2ggc29sdmVzIHRoZSBpc3N1ZSBvZiBFWDQuIFRo
ZSBhYm92ZSBpbXBsZW1lbnRhdGlvbiBpbnRyb2R1Y2Ugc29tZSBvdmVyaGVhZCB0byBjcmVhdGUg
Y2hhbm5lbCByYWN0b3JzLCBidXQgd2UgY2FuIGludHJvZHVjZSBzcGVjaWFsIGltcGxlbWVudGF0
aW9uIHRvIHJlZHVjZSB0aGlzIFJhY3RvciBjcmVhdGlvbiBvdmVyaGVhZC4NCg0KSG93ZXZlciwg
aW4gdGhlIEFjdG9yIG1vZGVsLCB0aGUgY29tbXVuaWNhdGlvbiBwYXR0ZXJuIGlzIHRvIHNlbmQg
YSBtZXNzYWdlIHRvIGEgc3BlY2lmaWMgYWN0b3IuIEluIGNvbnRyYXN0LCBjaGFubmVscyBhcmUg
dXNlZCB0byBzZW5kIG1lc3NhZ2VzIHRocm91Z2ggYSBzaGFyZWQgY29uZHVpdCwgd2l0aG91dCBj
YXJpbmcgd2hpY2ggcmVjZWl2ZXIgKGlmIGFueSkgaGFuZGxlcyB0aGUgbWVzc2FnZS4gQWxzbywg
Y2hhbm5lbHMgY2FuIGhhdmUgc29tZSBvdmVyaGVhZCwgYXMgZGlzY3Vzc2VkIGJlbG93Lg0KDQoj
IyMgU3VtbWFyeSBvZiBiYWNrZ3JvdW5kDQoNCkN1cnJlbnRseSwgd2hlbiBpbXBsZW1lbnRpbmcg
cmVxdWVzdC1yZXNwb25zZSBwYXR0ZXJucyB3aXRoIFJhY3RvcnMsIGRldmVsb3BlcnMgZmFjZSBj
aGFsbGVuZ2VzIGluIHRyYWNraW5nIHJlc3VsdHMsIG1hbmFnaW5nIGlkZW50aWZpZXJzLCBhbmQg
YXZvaWRpbmcgbWVzc2FnZSBjb25mbGljdHMuIEV4aXN0aW5nIHByaW1pdGl2ZXMgbGlrZSBgcmVj
ZWl2ZV9pZmAsIGB0YWtlYCwgb3IgY2hhbm5lbHMgaW1wbGVtZW50ZWQgd2l0aCBSYWN0b3JzIGFy
ZSBlaXRoZXIgZXJyb3ItcHJvbmUgb3IgaW5lZmZpY2llbnQuDQoNCiMjIFByb3Bvc2FsDQoNCklu
dHJvZHVjZSBgUmFjdG9yOjpQb3J0YCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBjaGFubmVscy4gSXQg
aXMgYSBuYXR1cmFsIGV4dGVuc2lvbiBvZiB0aGUgQWN0b3IgbW9kZWwuIEluIGZhY3QsIGl0IGlz
IHRoaW4gd3JhcHBlciBvZiBjdXJyZW50IHNlbmQvcmVjZWl2ZSBtb2RlbCBhcyBpbGx1c3RyYXRl
ZCBhdCB0aGUgdG9wIG9mIHRoaXMgcHJvcG9zYWwuDQoNCldpdGggdGhlIGBSYWN0b3I6OlBvcnRg
LCB3ZSBjYW4gcmV3cml0ZSBhYm92ZSBleGFtcGxlcyB3aXRoIGl0Lg0KDQpgYGBydWJ5DQojIEVY
Ng0KDQojIENvbXBsZXRlbHkgc2FtZSBhcyBFWDMncyBzZXJ2ZXJzDQoNCmZpYl9zcnYgPSBSYWN0
b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJhbSwgc2VuZGVyID0gUmFjdG9yLnJlY2Vp
dmUNCiAgICByZXN1bHQgPSBmaWIocGFyYW0pDQogICAgc2VuZGVyIDw8IHJlc3VsdA0KICBlbmQN
CmVuZA0KDQpmYWN0X3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBhcmFt
LCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZhY3QocGFyYW0pDQogICAg
c2VuZGVyIDw8IHJlc3VsdA0KICBlbmQNCmVuZA0KDQpmaWJfc3J2IDw8IFsxMCwgZmliMTBfcG9y
dCA9IFJhY3Rvcjo6UG9ydC5uZXddDQpmaWJfc3J2IDw8IFsyMCwgZmliMjBfcG9ydCA9IFJhY3Rv
cjo6UG9ydC5uZXddDQpmYWN0X3NydiA8PCBbMTAsIGZhY3QxMF9wb3J0ID0gUmFjdG9yOjpQb3J0
Lm5ld10NCmZhY3Rfc3J2IDw8IFsyMCwgZmFjdDIwX3BvcnQgPSBSYWN0b3I6OlBvcnQubmV3XQ0K
DQpkb19zb21ldGhpbmcNCg0KcCBmaWIxMF9wb3J0LnJlY2VpdmUgIz0+IGZpYigxMCkNCnAgZmli
MjBfcG9ydC5yZWNlaXZlICM9PiBmaWIoMjApDQpwIGZhY3QxMF9wb3J0LnJlY2VpdmUgIz0+IGZh
Y3QoMTApDQpwIGZhY3QyMF9wb3J0LnJlY2VpdmUgIz0+IGZhY3QoMjApDQoNCiMgb3INCg0KcG9y
dHMgPSBbZmliMTBfcG9ydCwgZmliMjBfcG9ydCwgZmFjdDEwX3BvcnQsIGZhY3QyMF9wb3J0XQ0K
DQp3aGlsZSAhcG9ydHMuZW1wdHk/DQogIHBvcnQsIHJlc3VsdCA9IFJhY3Rvci5zZWxlY3QoKnBv
cnRzKQ0KICBjYXNlIHBvcnQNCiAgd2hlbiBmaWIxMF9wb3J0DQogICAgcCBmaWIxMDogcmVzdWx0
DQogIC4uLg0KICBlbHNlDQogICAgcmFpc2UgIlRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gKEJVRyku
Ig0KICBlbmQNCg0KICBwb3J0cy5kZWxldGUocG9ydCkNCmVuZA0KYGBgDQoNCmBSYWN0b3I6OlBv
cnRgIHJlc29sdmVzIGtleSBwYWluIHBvaW50cyBpbiBtZXNzYWdlIHBhc3NpbmcgYmV0d2VlbiBS
YWN0b3JzOg0KDQoqIEl0IGd1YXJhbnRlZXMgdGhhdCBpbmNvbWluZyBtZXNzYWdlcyBhcmUgb25s
eSBkZWxpdmVyZWQgdG8gdGhlIGludGVuZGVkIFJhY3RvciwgcHJldmVudGluZyB0YWcgY29sbGlz
aW9ucy4NCiogSXQgZW5hYmxlcyBtZXNzYWdlIHJvdXRpbmcgd2l0aG91dCByZWx5aW5nIG9uIGds
b2JhbCByZWNlaXZlIGJsb2NrcyAoYFJhY3Rvci5yZWNlaXZlYCksIHdoaWNoIGFyZSBwcm9uZSB0
byB1bmludGVuZGVkIGNvbnN1bXB0aW9uLg0KKiBJdCByZXBsYWNlcyBtb3JlIGNvbXBsZXggcHJp
bWl0aXZlcyBsaWtlIGAucmVjZWl2ZV9pZmAsIGAueWllbGRgLCBhbmQgYCN0YWtlYCB3aXRoIGEg
c2ltcGxlciwgY29tcG9zYWJsZSBhYnN0cmFjdGlvbi4NCiogSXQgbWFwcyBjbGVhbmx5IHRvIHRo
ZSBBY3RvciBtb2RlbCBzZW1hbnRpY3MgUnVieSBpbnRlbmRzIHRvIHN1cHBvcnQgd2l0aCBSYWN0
b3JzLg0KDQpXaGlsZSB0aGUgcGF0dGVybiBsb29rcyBzaW1pbGFyIHRvIHVzaW5nIGNoYW5uZWxz
LCB0aGUgc2VtYW50aWNzIGFuZCBndWFyYW50ZWVzIGFyZSBkaWZmZXJlbnQgaW4gbWVhbmluZ2Z1
bCB3YXlzLg0KDQpUaGUgYWR2YW50YWdlcyBvZiB1c2luZyBQb3J0cyBpbmNsdWRlOg0KDQoqIFNh
ZmVyIHRoYW4gY2hhbm5lbHMgaW4gcHJhY3RpY2UNCiAgKiBXaGVuIHVzaW5nIGEgUG9ydCwgaWYg
YCNzZW5kYCBzdWNjZWVkcywgaXQgbWVhbnMgdGhlIGRlc3RpbmF0aW9uIFJhY3RvciBpcyBzdGls
bCBhbGl2ZSAoaS5lLiwgaXQncyBydW5uaW5nKS4NCiAgKiBJbiBjb250cmFzdCwgd2l0aCBhIGNo
YW5uZWwsIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYW55IFJhY3RvciBpcyBzdGlsbCBhdmFp
bGFibGUgdG8gcmVjZWl2ZSBmcm9tIGl0Lg0KICAqIE9mIGNvdXJzZSwgZXZlbiB3aXRoIGEgcG9y
dCwgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUgZGVzdGluYXRpb24gUmFjdG9yIHdpbGwg
YWN0dWFsbHkgcHJvY2VzcyB0aGUgbWVzc2FnZSDigJQgaXQgbWlnaHQgaWdub3JlIGl0Lg0KICAq
IEJ1dCBhdCBsZWFzdCB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgUmFjdG9yIGhh
dmluZyBhbHJlYWR5IHRlcm1pbmF0ZWQgdW5leHBlY3RlZGx5Lg0KICAqIEluIG90aGVyIHdvcmRz
LCB1c2luZyBhIHBvcnQgZWxpbWluYXRlcyBvbmUgbWFqb3IgZmFpbHVyZSBjYXNlLCBtYWtpbmcg
dGhlIGNvbW11bmljYXRpb24gbW9kZWwgbW9yZSBwcmVkaWN0YWJsZS4NCiAgKiBUaGlzIGlzIG9u
ZSBvZiB0aGUgcmVhc29ucyB3aHkgUnVieSB3ZW50IHdpdGggdGhlICJBY3RvciIgbW9kZWwgKGhl
bmNlIHRoZSBuYW1lIFJhY3RvciksIGluc3RlYWQgb2YgdGhlICJDU1AiIG1vZGVsLg0KKiBGYXN0
ZXIgdGhhbiBjaGFubmVscyBpbiBib3RoIGNyZWF0aW9uIGFuZCBtZXNzYWdlIHRyYW5zbWlzc2lv
bg0KICAqIFdoZW4gY3JlYXRpbmcgYSBjaGFubmVsLCB3ZSBuZWVkIHRvIHByZXBhcmUgYSBjb250
YWluZXIgZGF0YSBzdHJ1Y3R1cmUuIFdoZW4gY3JlYXRpbmcgYSBwb3J0LCBpdCBpcyBsaWdodHdl
aWdodCBkYXRhIChhIHBhaXIgb2YgUmFjdG9yIGFuZCBuZXdseSBjcmVhdGVkIElEKS4NCiAgKiBP
biB0aGUgY2hhbm5lbCB0cmFuc21pc3Npb24sIHdlIG5lZWQgY29weWluZyBhIGRhdGEgdG8gY2hh
bm5lbCBhbmQgYSBjb3B5aW5nIHRvIHRoZSByZWNlaXZpbmcgcmFjdG9yLiBPbiB0aGUgcG9ydCwg
aXQgb25seSBuZWVkcyB0byBjb3B5IGZyb20gdGhlIHNyYyByYWN0b3IgdG8gdGhlIGRzdCByYWN0
b3IuIFRoaXMgaXNzdWUgYmVjb21lcyBtb3JlIHNpZ25pZmljYW50IGR1ZSB0byBSYWN0b3ItbG9j
YWwgZ2FyYmFnZSBjb2xsZWN0aW9uIGFuZCBpc29sYXRpb24gb2Ygb2JqZWN0IHNwYWNlcy4NCiog
RWFzeSB0byBpbXBsZW1lbnQuIFdlIG9ubHkgbmVlZCB0byBpbXBsZW1lbnQgYFBvcnQjcmVjZWl2
ZWAgdG8gc3luY2hyb25pemUgd2l0aCBvdGhlciByYWN0b3JzLg0KICAqIGAjc2VuZC8ucmVjZWl2
ZWAgaXMgZWFzeSB0byBpbXBsZW1lbnQgYmVjYXVzZSB3ZSBvbmx5IG5lZWQgdG8gbG9jayB0aGUg
cmVjZWl2aW5nIHJhY3Rvci4NCiAgKiBgLnlpZWxkLyN0YWtlYCBpcyBub3QgZWFzeSB0byBpbXBs
ZW1lbnQgYmVjYXVzZSB3ZSBuZWVkIHRvIGxvY2sgdGFraW5nIGFuZCByZWNlaXZpbmcgcmFjdG9y
cyBiZWNhdXNlIGl0IGlzIHJlbmRlenZvdXMgc3R5bGUgc3luY2hyb25pemF0aW9uLg0KICAqIGAu
c2VsZWN0YCBpcyBESUZGSUNVTFQgdG8gc3VwcG9ydCBjdXJyZW50IHNwZWMuIE5vdyBDSSBkb2Vz
bid0IHN0YWJsZSB5ZXQuDQogICogQSBzaW1wbGVyIHNwZWMgcmVkdWNlcyBidWdzLCBhbmQgbWF5
YmUgbGVhZHMgdG8gZmFzdGVyIGltcGxlbWVudGF0aW9uLg0KDQpEaXNhZHZhbnRhZ2VzOg0KDQox
LiBJdCBpcyBub3QgYSB3ZWxsLWtub3duIGNvbmNlcHQsIGVzcGVjaWFsbHkgZm9yIEdvIGxhbmd1
YWdlIHVzZXJzLg0KMi4gV2UgbmVlZCBhZGRpdGlvbmFsIGFic3RyYWN0aW9uIGxpa2UgcHJvZHVj
ZXIocyktY29uc3VtZXIocykgY29uY3VycmVudCBhcHBsaWNhdGlvbnMuDQoNCkZvciAoMiksIEkg
d2FudCB0byBpbnRyb2R1Y2UgYW4gZXhhbXBsZSBjb2RlLiBXZSBjYW4gd3JpdGUgYSAxLXByb2R1
Y2VyLCBtdWx0aXBsZS1jb25zdW1lciBwYXR0ZXJuIHdpdGggYSBjaGFubmVsLg0KDQpgYGBydWJ5
DQojIGNoYW5uZWwgdmVyc2lvbiBvZiAxIHByb2R1Y2VyICYgY29uc3VtZXJzDQoNCmNoID0gbmV3
X2NoYW5uZWwNCg0KUk4gPSAxMCAjIG1ha2UgMTAgY29uc3VtZXJzDQoNCmNvbnN1bWVycyA9IFJO
LnRpbWVzLm1hcCBkbw0KICBSYWN0b3IubmV3IGNoIGRvDQogICAgd2hpbGUgcGFyYW0gPSBjaC5y
ZWNlaXZlDQogICAgICB0YXNrKHBhcmFtKQ0KICAgIGVuZA0KICBlbmQNCmVuZA0KDQp0YXNrcy5l
YWNoIGRvIHx0YXNrfA0KICBjaCA8PCB0YXNrDQplbmQNCmBgYA0KDQpXaXRoIFBvcnQsIHdlIG5l
ZWQgdG8gaW50cm9kdWNlIGEgbG9hZCBiYWxhbmNpbmcgbWVjaGFuaXNtOg0KDQpgYGBydWJ5DQoj
IFBvcnQgdmVyc2lvbiBvZiAxIHByb2R1Y2VyICYgY29uc3VtZXJzDQoNCmNvbnRyb2xfcG9ydCA9
IFJhY3Rvcjo6UG9ydC5uZXcNCmNvbnN1bWVycyA9IFJOLnRpbWVzLm1hcCBkbw0KICBSYWN0b3Iu
bmV3IGNvbnRyb2xfcG9ydCBjb250cm9sX3BvcnQgZG8gfGNvbnRyb2xfcG9ydHwNCiAgICB3aGls
ZSB0cnVlDQogICAgICBjb250cm9sX3BvcnQgPDwgWzpyZWFkeSwgUmFjdG9yLmN1cnJlbnRdICMg
cmVnaXN0ZXIgLSByZWFkeQ0KICAgICAgcGFyYW0gPSBSYWN0b3IucmVjZWl2ZSAjIGl0IGFzc3Vt
ZXMgdGFzayBkb2Vzbid0IHVzZSBSYWN0b3IucmVjZWl2ZQ0KICAgICAgdGFzayhwYXJhbSkNCiAg
ICBlbmQNCiAgZW5kDQplbmQNCg0KdGFza3MuZWFjaCBkbyB8dGFza3wNCiAgY29udHJvbF9wb3J0
LnJlY2VpdmUgPT4gWzpyZWFkeSwgY29uc3VtZXJdDQogIA0KICAjIHNlbmQgYSB0YXNrIHRvIGEg
cmVhZHkgY29uc3VtZXINCiAgY29uc3VtZXIgPDwgdGFzaw0KZW5kDQpgYGANCg0KT2YgY291cnNl
IHdlIGNhbiBtYWtlIGEgbGlicmFyeSBmb3IgdGhhdCAobGlrZSBPVFAgb24gRXJsYW5nKS4NCg0K
IyMjIERlZmF1bHQgcG9ydCBvZiBSYWN0b3JzDQoNCkVhY2ggUmFjdG9yIGhhcyBhIGRlZmF1bHQg
cG9ydCBhbmQgYFJhY3RvciNzZW5kYCBpcyBlcXVhbCB0byBgUmFjdG9yLmN1cnJlbnQuZGVmYXVs
dF9wb3J0I3NlbmRgLiBPZiBjb3Vyc2UsIGBSYWN0b3IucmVjZWl2ZWAgaXMgZXF1YWwgdG8gYFJh
Y3Rvci5jdXJyZW50LmRlZmF1bHRfcG9ydC5yZWNlaXZlYC4NCg0KRm9yIHRoZSBzaW1wbGUgY2Fz
ZSwgd2UgY2FuIGtlZXAgdG8gdXNlIGBSYWN0b3Ijc2VuZGAgYW5kIGBSYWN0b3IucmVjZWl2ZWAN
Cg0KIyMjIERlcHJlY2F0aW9uIG9mIFJhY3RvciN0YWtlIGFuZCBSYWN0b3IueWllbGQNCg0KV2l0
aCB0aGUgUG9ydCBjb25jZXB0LCB3ZSBjYW4gZm9jdXMgc29sZWx5IG9uIHNlbmQgYW5kIHJlY2Vp
dmXigJR0aGF0IGlzLCBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIGEgUmFjdG9y4oCZcyBtYWlsYm94
LiBQb3J0cyBwcm92aWRlIGEgY2xlYW4gYW5kIGZ1bmN0aW9uYWwgYWx0ZXJuYXRpdmUgdG8gYFJh
Y3RvciN0YWtlYCBhbmQgYFJhY3Rvci55aWVsZGAsIG1ha2luZyB0aGVtIHVubmVjZXNzYXJ5IGlu
IG1vc3QgdXNlIGNhc2VzLg0KDQpNb3Jlb3ZlciwgUG9ydHMgYXJlIHNpZ25pZmljYW50bHkgZWFz
aWVyIHRvIGltcGxlbWVudCwgYXMgdGhleSByZXF1aXJlIG9ubHkgbG9ja2luZyB0aGUgcmVjZWl2
aW5nIFJhY3Rvciwgd2hpbGUgeWllbGQvdGFrZSBpbnZvbHZlIGNvbXBsZXggcmVuZGV6dm91cy1z
dHlsZSBzeW5jaHJvbml6YXRpb24uIEJ5IHJlbW92aW5nIHRoZXNlIHByaW1pdGl2ZXMsIHdlIGNh
biBzaW1wbGlmeSB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgcmVkdWNlIGltcGxlbWVudGF0aW9uIGNv
bXBsZXhpdHnigJRlc3BlY2lhbGx5IGFyb3VuZCBmZWF0dXJlcyBsaWtlIGBSYWN0b3Iuc2VsZWN0
YCwgd2hpY2ggYXJlIG5vdG9yaW91c2x5IGhhcmQgdG8gZ2V0IHJpZ2h0Lg0KDQojIyMgYFJhY3Rv
ci5zZWxlY3RgIHdpdGggcG9ydHMNCg0KV2Ugc2hvdWxkIHdhaXQgZm9yIG11bHRpcGxlIHBvcnQg
c2ltdWx0YW5lb3VzbHkgc28gYFJhY3Rvci5zZWxlY3QoKWAgc2hvdWxkIGFjY2VwdCBwb3J0cy4g
Tm93IGBSYWN0b3Iuc2VsZWN0KClgIGNhbiBhbHNvIHJlY2VpdmluZyBhbmQgeWllbGRpbmcgdGhl
IHZhbHVlLCBidXQgaWYgd2UgcmVtb3ZlIHRoZSBgI3Rha2VgIGZ1bmN0aW9uYWxpdHksIGBSYWN0
b3Iuc2VsZWN0YCBvbmx5IG5lZWQgdG8gc3VwcG9ydCBwb3J0cy4NCg0KIyMjIFdhaXQgZm9yIHRl
cm1pbmF0aW9uDQoNCmBSYWN0b3IjdGFrZWAgaXMgZGVzaWduZWQgZnJvbSBhbiBpZGVhIG9mIGdl
dHRpbmcgdGVybWluYXRpb24gcmVzdWx0IChsaWtlIGBUaHJlYWQjdmFsdWVgKS4gRm9yIHRoaXMg
cHVycG9zZSwgd2UgY2FuIGludHJvZHVjZSBgUmFjdG9yI2pvaW5gIG9yIGBSYWN0b3IjdmFsdWVg
IGxpa2UgVGhyZWFkcyBvciB3ZSBjYW4ga2VlcCB0aGUgbmFtZSBgUmFjdG9yI3Rha2VgIGZvciB0
aGlzIHB1cnBvc2UuDQoNCldlIGNhbiBtYWtlIGBSYWN0b3Ijam9pbmAgYXMgYSBmb2xsb3dpbmcg
cHNldWRvLWNvZGU6DQoNCmBgYHJ1YnkNCmNsYXNzIFJhY3Rvcg0KICBkZWYgam9pbiAjIHdhaXQg
Zm9yIHRoZSB0ZXJtaW5hdGlvbg0KICAgIHJlZ2lzdGVyX3Rlcm1pbmF0aW9uX3BvcnQgcG9ydCA9
IFBvcnQubmV3DQogICAgcG9ydC5yZWNlaXZlDQogIGVuZA0KICANCiAgIyB3aGVuIHRoaXMgcmFj
dG9yIHRlcm1pbmF0ZXMsIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSByZWdpc3RlcmVkIHBvcnQNCiAg
ZGVmIG1vbml0b3IgcG9ydA0KICAgIEBtb25pdG9yX3BvcnQgPSBwb3J0DQogIGVuZA0KICANCiAg
cHJpdmF0ZSBkZWYgYXRleGl0DQogICAgQG1vbml0b3JfcG9ydCA8PCB0ZXJtaW5hdGlvbl9tZXNz
YWdlDQogIGVuZA0KZW5kDQoNCiMgdGhlcmUgYXJlIHNvbWUgcXVlc3Rpb25zLg0KIyAqIGNhbiB3
ZSByZWdpc3RlciBtdWx0aXBsZSBwb3J0cz8NCiMgKiBzaG91bGQgd2Ugc3VwcG9ydCBgI2pvaW5g
IGFuZCBgI3ZhbHVlYCBsaWtlIHRocmVhZHM/DQojICAgb3Igc2hvdWxkIHdlIHN1cHBvcnQgb25s
eSBgI2pvaW5gIHRvIHJldHVybiB0aGUgdmFsdWU/DQojICogb3Iga2VlcCB0aGlzIG5hbWUgYXMg
YCN0YWtlYD8NCg0KDQpSYWN0b3IubmV3IGRvDQogIDQyDQplbmQuam9pbiAjPT4gNDIgKG9yIHRy
dWU/KQ0KYGBgDQoNCkl0IGlzIHZlcnkgc2ltaWxhciB0byBgbW9uaXRvcmAgaW4gRXJsYW5nIG9y
IEVsaXhpci4NCldlIGNhbiBhbHNvIG1ha2UgYSBzdXBlcnZpc29yIGluIEVybGFuZyBsaWtlIHRo
YXQ6DQoNCmBgYHJ1YnkNCnN2X3BvcnQgPSBSYWN0b3I6OlBvcnQubmV3DQoNCnJzID0gTi50aW1l
cy5tYXAgZG8NCiAgUmFjdG9yLm5ldyBkbw0KICAgIGRvX3NvbWV0aGluZygpDQogIGVuZC5tb25p
dG9yIHN2X3BvcnQNCmVuZA0KDQp3aGlsZSB0ZXJtaW5hdGlvbl9ub3RpY2UgPSBzdl9wb3J0LnJl
Y2VpdmUNCiAgcCB0ZXJtaW5hdGlvbl9ub3RpY2UNCmVuZA0KDQojIFdpdGggUmFjdG9yI3Rha2Us
IHdlIGNhbiB3cml0ZSBzaW1pbGFyIGNvZGUgaWYgdGhlcmUgaXMgbm8gUmFjdG9yLnlpZWxkDQoN
CnJzID0gTi50aW1lcy5tYXAgZG8NCiAgUmFjdG9yLm5ldyBkbw0KICAgIGRvX3NvbWV0aGluZygp
DQogIGVuZA0KZW5kDQoNCndoaWxlIHIsIG1zZyA9IFJhY3Rvci5zZWxlY3QoKnJzKQ0KICBwIFty
LCBtc2ddDQplbmQNCmBgYA0KDQojIyBEaXNjdXNzaW9uDQoNCiMjIyBgc2VuZGAgd2l0aCB0YWcg
KHN5bWJvbHMpDQoNCklmIHdlIGZvcmNlIHVzZXJzIHRvIHNlbmQgYSB0YWdnZWQgbWVzc2FnZSBl
dmVyeSB0aW1lLCB3ZSBjYW4gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgUG9ydCBjb25jZXB0
LCBiZWNhdXNlIGEgUG9ydCBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIGNvbWJpbmF0aW9uIG9mIGEg
dGFnIGFuZCBhIGRlc3RpbmF0aW9uIFJhY3Rvci4NCg0KYGBgcnVieQ0KciA9IFJhY3Rvci5uZXcg
ZG8NCiAgbG9vcCBkbw0KICAgIHRhZywgbXNnID0gUmFjdG9yLnJlY2VpdmUgIyByZXR1cm4gMiB2
YWx1ZXMNCiAgICBjYXNlIHRhZw0KICAgIHdoZW4gOlRBRw0KICAgICAgcCBbdGFnLCBtc2ddDQog
ICAgZWxzZQ0KICAgICAgIyBpZ25vcmUNCiAgICBlbmQNCiAgZW5kDQplbmQNCg0Kci5zZW5kIDpU
QUcsIDQyDQpyLnNlbmQgOlRBR0UsIDg0ICMgdGhpcyB0eXBvIGFuZCB0aGUgbWVzc2FnZSBpcyBz
aWxlbnRseSBpZ25vcmVkDQpgYGANCg0KSG93ZXZlciBpdCBoYXMgdHdvIGlzc3VlczoNCg0KKiBJ
ZiB3ZSBtYWtlIGEgdHlwbyBpbiB0YWcgbmFtZSwgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBzaWxlbnRs
eSBpZ25vcmVkLg0KKiBUaGUgdGFnIG5hbWUgbWF5IGNvbmZsaWN0IHdpdGggdW5yZWxhdGVkIGNv
ZGVzIChsaWJyYXJpZXMpDQoNCiMjIyBgUmFjdG9yLnlpZWxkYCBhbmQgYFJhY3RvciN0YWtlYCB3
aXRoIGNoYW5uZWwgcmFjdG9yDQoNCklmIHdlIHdhbnQgdG8gbGVhdmUgdGhlIGAueWllbGRgIGFu
ZCBgI3Rha2VgLCB3ZSBjYW4gZW11bGF0ZSB0aGVtIHdpdGggY2hhbm5lbCByYWN0b3IuDQoNCmBg
YHJ1YnkNCmNsYXNzIFJhY3Rvcg0KICBkZWYgaW5pdGlhbGl6ZQ0KICAgIEB5aWVsZF9yYWN0b3Ig
PSBSYWN0b3IubmV3IGRvDQogICAgICB0YWtlcnMgPSBbXQ0KICAgICAgd2hpbGUgdGFnLCBtc2cg
PSBSYWN0b3IucmVjZWl2ZQ0KICAgICAgICBjYXNlIHRhZw0KICAgICAgICB3aGVuIDpyZWdpc3Rl
cg0KICAgICAgICAgIEB0YWtlcnMgPDwgbXNnDQogICAgICAgIHdoZW4gOnVucmVnaXN0ZXINCiAg
ICAgICAgICBAdGFrZXJzLmRlbGV0ZSBtc2cNCiAgICAgICAgd2hlbiA6eWllbGQNCiAgICAgICAg
ICBAdGFrZXJzLnBvcCA8PCBtc2cNCiAgICAgICAgZW5kDQogICAgICBlbmQNCiAgICBlbmQNCiAg
ZW5kDQoNCiAgZGVmIHNlbGYueWllbGQgb2JqDQogICAgQHlpZWxkX3JhY3RvciA8PCBbOnlpZWxk
LCBvYmpdDQogIGVuZA0KDQogIGRlZiB0YWtlDQogICAgQHlpZWxkX3JhY3RvciA8PCBbOnJlZ2lz
dGVyLCBwb3J0ID0gUmFjdG9yOjpQb3J0Lm5ld10NCiAgICBwb3J0LnJlY2VpdmUNCiAgZW5zdXJl
DQogICAgQHlpZWxkX3JhY3RvciA8PCBbOnVucmVnaXN0ZXIsIHBvcnRdDQogIGVuZA0KZW5kDQpg
YGANCg0KIyMjIE9wZW5pbmcgYW5kIGNsb3NpbmcgdGhlIHBvcnQNCg0KVGhpcyBwcm9wb3NhbCBk
b2Vzbid0IGNvbnRhaW4gb3BlbmluZyBhbmQgY2xvc2luZyB0aGUgcG9ydCwgYnV0IHdlIGNhbiBk
aXNjdXNzIGFib3V0IGl0LiBUbyBpbnRyb2R1Y2UgdGhpcyBhdHRyaWJ1dGUsIHdlIG5lZWQgdG8g
bWFuYWdlIHdoaWNoIHBvcnRzICh0YWdzKSBhcmUgb3BlbmluZy4NCg0KIyMgSW1wbGVtZW50YXRp
b24NCg0KTm93IHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgbm90IGZpbmlzaGVkLCBidXQg
d2UgY2FuIGltcGxlbWVudCBpdCB1c2luZyB0aGUgYFJhY3Rvci5yZWNlaXZlX2lmYCBtZWNoYW5p
c20sIHNvIHdlIGVzdGltYXRlIHRoYXQgb25seSBhIGZldyB3ZWVrcyBvZiB3b3JrIGFyZSBuZWVk
ZWQgdG8gY29tcGxldGUgaXQuDQoNCiMjIFN1bW1hcnkNCg0KVGhpcyBwcm9wb3NhbCBpbnRyb2R1
Y2VzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYW5kIGRlcHJlY2F0aW9ucy4NCg0KKiBgUmFjdG9y
OjpQb3J0YA0KICAqIGBQb3J0I3NlbmQobXNnKWAg4oCTIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUg
Y3JlYXRvciBvZiB0aGUgcG9ydC4NCiAgKiBgUG9ydCNyZWNlaXZlYCDigJMgcmVjZWl2ZXMgYSBt
ZXNzYWdlIGZyb20gdGhlIHBvcnQuDQogICogQSBwb3J0IGlzIGEgbGlnaHR3ZWlnaHQgZGF0YSBz
dHJ1Y3R1cmUgKGEgcGFpciBvZiBhIFJhY3RvciBhbmQgYSB0YWcpLg0KKiBgUmFjdG9yI2pvaW5g
IG9yIGBSYWN0b3IjdmFsdWVgIOKAkyB0byB3YWl0IGZvciBSYWN0b3IgdGVybWluYXRpb24gKGxp
a2UgYFRocmVhZCNqb2luYCkNCiogYFJhY3RvciNtb25pdG9yYCDigJMgdG8gb2JzZXJ2ZSB3aGVu
IGFub3RoZXIgUmFjdG9yIHRlcm1pbmF0ZXMNCiogRGVwcmVjYXRpb25zOg0KICAqIGBSYWN0b3Ij
dGFrZWANCiAgKiBgUmFjdG9yLnlpZWxkYA0KICAqIGBSYWN0b3IucmVjZWl2ZV9pZmANCg0KVGhh
bmsgeW91IGZvciByZWFkaW5nIHRoaXMgbG9uZyBwcm9wb3NhbC4gSWYgeW91IGhhdmUgYW55IHVz
ZSBjYXNlcyB0aGF0IGNhbm5vdCBiZSBhZGRyZXNzZWQgd2l0aCBgUmFjdG9yOjpQb3J0YCwgSSdk
IGxvdmUgdG8gaGVhciB0aGVtLg0KDQoNClAuUy4gVGhhbmtzIHRvIG1hbWUgZm9yIHJldmlld2lu
ZyB0aGlzIHByb3Bvc2FsIGFuZCBzdWdnZXN0aW5nIHRoYXQgSSB1c2UgQ2hhdEdQVCB0byBpbXBy
b3ZlIHRoZSB3cml0aW5nLg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8N
CiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNv
cmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNj
cmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBy
dWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMv
cnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv


In This Thread

Prev Next