[3.12] gh-90949: expose Expat API to tune exponential expansion protections (GH-139368) (#151401)
Yhg1s <[email protected]> Tue, 04 Aug 2026 05:26:24 -0400 (EDT)
| Newsgroups | gmane.comp.python.cvs |
|---|---|
| Message-ID | <[email protected]> |
aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC9kYjE5NWUzOGE0OTljODM3 YjNlYTJjZjBhYTFjOTM4M2U3NmRkYzgwDQpjb21taXQ6IGRiMTk1ZTM4YTQ5OWM4MzdiM2VhMmNm MGFhMWM5MzgzZTc2ZGRjODANCmJyYW5jaDogMy4xMg0KYXV0aG9yOiBTdGFuIFVsYnJ5Y2ggPHN0 YW5AcHl0aG9uLm9yZz4NCmNvbW1pdHRlcjogWWhnMXMgPHRob21hc0BweXRob24ub3JnPg0KZGF0 ZTogMjAyNi0wOC0wNFQxMToyMzo1MSswMjowMA0Kc3VtbWFyeToNCg0KWzMuMTJdIGdoLTkwOTQ5 OiBleHBvc2UgRXhwYXQgQVBJIHRvIHR1bmUgZXhwb25lbnRpYWwgZXhwYW5zaW9uIHByb3RlY3Rp b25zIChHSC0xMzkzNjgpICgjMTUxNDAxKQ0KDQpFeHBvc2UgdGhlIFhNTCBFeHBhdCAyLjcuMiBB UElzIHRvIHR1bmUgcHJvdGVjdGlvbnMgYWdhaW5zdA0KImJpbGxpb24gbGF1Z2hzIiBbMV0gYXR0 YWNrcy4NCg0KVGhlIGV4cG9zZWQgQVBJcyBhcmUgYXZhaWxhYmxlIG9uIEV4cGF0IHBhcnNlcnMs IHRoYXQgaXMsDQpwYXJzZXJzIGNyZWF0ZWQgYnkgYHhtbC5wYXJzZXJzLmV4cGF0LlBhcnNlckNy ZWF0ZSgpYCwgYXM6DQoNCi0gYHBhcnNlci5TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlv bkFjdGl2YXRpb25UaHJlc2hvbGQodGhyZXNob2xkKWAsIGFuZA0KLSBgcGFyc2VyLlNldEJpbGxp b25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24obWF4X2ZhY3Rvcilg Lg0KDQpUaGlzIGNvbXBsZXRlcyB0aGUgd29yayBpbiBmMDRiZWE0NGMzNzc5MzU2MWQ3NTNkZDRj YTZlN2NkNjU4MTM3NTUzLA0KYW5kIGltcHJvdmVzIHRoZSBleGlzdGluZyByZWxhdGVkIGRvY3Vt ZW50YXRpb24uDQoNClsxXTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlsbGlvbl9s YXVnaHNfYXR0YWNrDQooY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA2NjYxMTIzNzZkNTc0Yzc4 MDI2NDZlZTFkZjYyNDQwNjI2NzFjZDYxKQ0KKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTli YzM5MTI3ZTVjOTE2YzQyYzU0NDg3YTFhZTY4YmU3NjU4MmY1MCkNCg0KQ28tYXV0aG9yZWQtYnk6 IELDqW7DqWRpa3QgVHJhbiA8MTA3OTY2MDArcGljbml4ekB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5j b20+DQoNCmZpbGVzOg0KQSBNaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAyNS0wOS0yNi0xOC0w NC0yOC5naC1pc3N1ZS05MDk0OS5ZSGpTelgucnN0DQpNIERvYy9saWJyYXJ5L3B5ZXhwYXQucnN0 DQpNIEluY2x1ZGUvcHlleHBhdC5oDQpNIExpYi90ZXN0L3Rlc3RfcHlleHBhdC5weQ0KTSBNb2R1 bGVzL2NsaW5pYy9weWV4cGF0LmMuaA0KTSBNb2R1bGVzL3B5ZXhwYXQuYw0KDQpkaWZmIC0tZ2l0 IGEvRG9jL2xpYnJhcnkvcHlleHBhdC5yc3QgYi9Eb2MvbGlicmFyeS9weWV4cGF0LnJzdA0KaW5k ZXggYzgwNmEyMWFlZWE2ZjhlLi40MmYxZWM3ZTEwZjFjNmIgMTAwNjQ0DQotLS0gYS9Eb2MvbGli cmFyeS9weWV4cGF0LnJzdA0KKysrIGIvRG9jL2xpYnJhcnkvcHlleHBhdC5yc3QNCkBAIC0yMzks MTYgKzIzOSw3MSBAQCBYTUxQYXJzZXIgT2JqZWN0cw0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMu MTIuMw0KIA0KIA0KLTpjbGFzczpgIXhtbHBhcnNlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dp bmcgbWV0aG9kcyB0byBtaXRpZ2F0ZSBzb21lDQotY29tbW9uIFhNTCB2dWxuZXJhYmlsaXRpZXMu DQorOmNsYXNzOmAheG1scGFyc2VyYCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2Rz IHRvIHR1bmUgcHJvdGVjdGlvbnMNCithZ2FpbnN0IHNvbWUgY29tbW9uIFhNTCB2dWxuZXJhYmls aXRpZXMuDQorDQorLi4gbWV0aG9kOjogeG1scGFyc2VyLlNldEJpbGxpb25MYXVnaHNBdHRhY2tQ cm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQsIC8pDQorDQorICAgU2V0cyB0 aGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBuZWVkZWQgdG8gYWN0aXZhdGUgcHJvdGVjdGlvbiBh Z2FpbnN0DQorICAgYGJpbGxpb24gbGF1Z2hzYF8gYXR0YWNrcy4NCisNCisgICBUaGUgbnVtYmVy IG9mIG91dHB1dCBieXRlcyBpbmNsdWRlcyBhbXBsaWZpY2F0aW9uIGZyb20gZW50aXR5IGV4cGFu c2lvbg0KKyAgIGFuZCByZWFkaW5nIERURCBmaWxlcy4NCisNCisgICBQYXJzZXIgb2JqZWN0cyB1 c3VhbGx5IGhhdmUgYSBwcm90ZWN0aW9uIGFjdGl2YXRpb24gdGhyZXNob2xkIG9mIDggTWlCLA0K KyAgIGJ1dCB0aGUgYWN0dWFsIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWlu ZyBFeHBhdCBsaWJyYXJ5Lg0KKw0KKyAgIEFuIDpleGM6YEV4cGF0RXJyb3JgIGlzIHJhaXNlZCBp ZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gYQ0KKyAgIHx4bWwtbm9uLXJvb3QtcGFyc2VyfCBw YXJzZXIuDQorICAgVGhlIGNvcnJlc3BvbmRpbmcgOmF0dHI6YH5FeHBhdEVycm9yLmxpbmVub2Ag YW5kIDphdHRyOmB+RXhwYXRFcnJvci5vZmZzZXRgDQorICAgc2hvdWxkIG5vdCBiZSB1c2VkIGFz IHRoZXkgbWF5IGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nLg0KKw0KKyAgIC4uIG5vdGU6Og0KKw0K KyAgICAgIEFjdGl2YXRpb24gdGhyZXNob2xkcyBiZWxvdyA0IE1pQiBhcmUga25vd24gdG8gYnJl YWsgc3VwcG9ydCBmb3IgRElUQSAxLjMNCisgICAgICBwYXlsb2FkIGFuZCBhcmUgaGVuY2Ugbm90 IHJlY29tbWVuZGVkLg0KKw0KKyAgIC4uIHZlcnNpb25hZGRlZDo6IG5leHQNCisNCisuLiBtZXRo b2Q6OiB4bWxwYXJzZXIuU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1w bGlmaWNhdGlvbihtYXhfZmFjdG9yLCAvKQ0KKw0KKyAgIFNldHMgdGhlIG1heGltdW0gdG9sZXJh dGVkIGFtcGxpZmljYXRpb24gZmFjdG9yIGZvciBwcm90ZWN0aW9uIGFnYWluc3QNCisgICBgYmls bGlvbiBsYXVnaHNgXyBhdHRhY2tzLg0KKw0KKyAgIFRoZSBhbXBsaWZpY2F0aW9uIGZhY3RvciBp cyBjYWxjdWxhdGVkIGFzIGBgKGRpcmVjdCArIGluZGlyZWN0KSAvIGRpcmVjdGBgDQorICAgd2hp bGUgcGFyc2luZywgd2hlcmUgYGBkaXJlY3RgYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQg ZnJvbQ0KKyAgIHRoZSBwcmltYXJ5IGRvY3VtZW50IGluIHBhcnNpbmcgYW5kIGBgaW5kaXJlY3Rg YCBpcyB0aGUgbnVtYmVyIG9mDQorICAgYnl0ZXMgYWRkZWQgYnkgZXhwYW5kaW5nIGVudGl0aWVz IGFuZCByZWFkaW5nIG9mIGV4dGVybmFsIERURCBmaWxlcy4NCisNCisgICBUaGUgKm1heF9mYWN0 b3IqIHZhbHVlIG11c3QgYmUgYSBub24tTmFOIDpjbGFzczpgZmxvYXRgIHZhbHVlIGdyZWF0ZXIg dGhhbg0KKyAgIG9yIGVxdWFsIHRvIDEuMC4gUGVhayBhbXBsaWZpY2F0aW9ucyBvZiBmYWN0b3Ig MTUsMDAwIGZvciB0aGUgZW50aXJlIHBheWxvYWQNCisgICBhbmQgb2YgZmFjdG9yIDMwLDAwMCBp biB0aGUgbWlkZGxlIG9mIHBhcnNpbmcgaGF2ZSBiZWVuIG9ic2VydmVkIHdpdGggc21hbGwNCisg ICBiZW5pZ24gZmlsZXMgaW4gcHJhY3RpY2UuIEluIHBhcnRpY3VsYXIsIHRoZSBhY3RpdmF0aW9u IHRocmVzaG9sZCBzaG91bGQgYmUNCisgICBjYXJlZnVsbHkgY2hvc2VuIHRvIGF2b2lkIGZhbHNl IHBvc2l0aXZlcy4NCisNCisgICBQYXJzZXIgb2JqZWN0cyB1c3VhbGx5IGhhdmUgYSBtYXhpbXVt IGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEwMCwNCisgICBidXQgdGhlIGFjdHVhbCBkZWZhdWx0 IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgRXhwYXQgbGlicmFyeS4NCisNCisgICBB biA6ZXhjOmBFeHBhdEVycm9yYCBpcyByYWlzZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9u IGENCisgICB8eG1sLW5vbi1yb290LXBhcnNlcnwgcGFyc2VyIG9yIGlmICptYXhfZmFjdG9yKiBp cyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4NCisgICBUaGUgY29ycmVzcG9uZGluZyA6YXR0cjpg fkV4cGF0RXJyb3IubGluZW5vYCBhbmQgOmF0dHI6YH5FeHBhdEVycm9yLm9mZnNldGANCisgICBz aG91bGQgbm90IGJlIHVzZWQgYXMgdGhleSBtYXkgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmcuDQor DQorICAgLi4gbm90ZTo6DQorDQorICAgICAgVGhlIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0 b3IgaXMgb25seSBjb25zaWRlcmVkIGlmIHRoZSB0aHJlc2hvbGQNCisgICAgICB0aGF0IGNhbiBi ZSBhZGp1c3RlZCBieSA6bWV0aDpgLlNldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0 aXZhdGlvblRocmVzaG9sZGANCisgICAgICBpcyBleGNlZWRlZC4NCisNCisgICAuLiB2ZXJzaW9u YWRkZWQ6OiBuZXh0DQogDQogLi4gbWV0aG9kOjogeG1scGFyc2VyLlNldEFsbG9jVHJhY2tlckFj dGl2YXRpb25UaHJlc2hvbGQodGhyZXNob2xkLCAvKQ0KIA0KICAgIFNldHMgdGhlIG51bWJlciBv ZiBhbGxvY2F0ZWQgYnl0ZXMgb2YgZHluYW1pYyBtZW1vcnkgbmVlZGVkIHRvIGFjdGl2YXRlDQog ICAgcHJvdGVjdGlvbiBhZ2FpbnN0IGRpc3Byb3BvcnRpb25hdGUgdXNlIG9mIFJBTS4NCiANCi0g ICBCeSBkZWZhdWx0LCBwYXJzZXIgb2JqZWN0cyBoYXZlIGFuIGFsbG9jYXRpb24gYWN0aXZhdGlv biB0aHJlc2hvbGQgb2YgNjQgTWlCLA0KLSAgIG9yIGVxdWl2YWxlbnRseSA2NywxMDgsODY0IGJ5 dGVzLg0KKyAgIFBhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2ZSBhbiBhbGxvY2F0aW9uIGFjdGl2 YXRpb24gdGhyZXNob2xkIG9mIDY0IE1pQiwNCisgICBidXQgdGhlIGFjdHVhbCBkZWZhdWx0IHZh bHVlIGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgRXhwYXQgbGlicmFyeS4NCiANCiAgICBBbiA6 ZXhjOmBFeHBhdEVycm9yYCBpcyByYWlzZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIGEN CiAgICB8eG1sLW5vbi1yb290LXBhcnNlcnwgcGFyc2VyLg0KQEAgLTI3Miw3ICszMjcsOCBAQCBj b21tb24gWE1MIHZ1bG5lcmFiaWxpdGllcy4NCiAgICBuZWFyIHRoZSBzdGFydCBvZiBwYXJzaW5n IGV2ZW4gd2l0aCBiZW5pZ24gZmlsZXMgaW4gcHJhY3RpY2UuIEluIHBhcnRpY3VsYXIsDQogICAg dGhlIGFjdGl2YXRpb24gdGhyZXNob2xkIHNob3VsZCBiZSBjYXJlZnVsbHkgY2hvc2VuIHRvIGF2 b2lkIGZhbHNlIHBvc2l0aXZlcy4NCiANCi0gICBCeSBkZWZhdWx0LCBwYXJzZXIgb2JqZWN0cyBo YXZlIGEgbWF4aW11bSBhbXBsaWZpY2F0aW9uIGZhY3RvciBvZiAxMDAuMC4NCisgICBQYXJzZXIg b2JqZWN0cyB1c3VhbGx5IGhhdmUgYSBtYXhpbXVtIGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEw MCwNCisgICBidXQgdGhlIGFjdHVhbCBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVuZGVy bHlpbmcgRXhwYXQgbGlicmFyeS4NCiANCiAgICBBbiA6ZXhjOmBFeHBhdEVycm9yYCBpcyByYWlz ZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIGENCiAgICB8eG1sLW5vbi1yb290LXBhcnNl cnwgcGFyc2VyIG9yIGlmICptYXhfZmFjdG9yKiBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4N CkBAIC0xMDA0LDQgKzEwNjAsNiBAQCBUaGUgYGBlcnJvcnNgYCBtb2R1bGUgaGFzIHRoZSBmb2xs b3dpbmcgYXR0cmlidXRlczoNCiAgICBub3QuIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvMjAw Ni9SRUMteG1sMTEtMjAwNjA4MTYvI05ULUVuY29kaW5nRGVjbA0KICAgIGFuZCBodHRwczovL3d3 dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cy9jaGFyYWN0ZXItc2V0cy54aHRt bC4NCiANCisNCisuLiBfYmlsbGlvbiBsYXVnaHM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93 aWtpL0JpbGxpb25fbGF1Z2hzX2F0dGFjaw0KIC4uIHx4bWwtbm9uLXJvb3QtcGFyc2VyfCByZXBs YWNlOjogOnJlZjpgbm9uLXJvb3QgPHhtbHBhcnNlci1ub24tcm9vdD5gDQpkaWZmIC0tZ2l0IGEv SW5jbHVkZS9weWV4cGF0LmggYi9JbmNsdWRlL3B5ZXhwYXQuaA0KaW5kZXggMDQ1NDhiNzY4NGEy ZmRhLi5mNTIzZjhiYjI3Mzk4M2EgMTAwNjQ0DQotLS0gYS9JbmNsdWRlL3B5ZXhwYXQuaA0KKysr IGIvSW5jbHVkZS9weWV4cGF0LmgNCkBAIC01Nyw2ICs1NywxMSBAQCBzdHJ1Y3QgUHlFeHBhdF9D QVBJDQogICAgICAgICBYTUxfUGFyc2VyIHBhcnNlciwgdW5zaWduZWQgbG9uZyBsb25nIGFjdGl2 YXRpb25UaHJlc2hvbGRCeXRlcyk7DQogICAgIFhNTF9Cb29sICgqU2V0QWxsb2NUcmFja2VyTWF4 aW11bUFtcGxpZmljYXRpb24pKA0KICAgICAgICAgWE1MX1BhcnNlciBwYXJzZXIsIGZsb2F0IG1h eEFtcGxpZmljYXRpb25GYWN0b3IpOw0KKyAgICAvKiBtaWdodCBiZSBOVUxMIGZvciBleHBhdCA8 IDIuNC4wICovDQorICAgIFhNTF9Cb29sICgqU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rp b25BY3RpdmF0aW9uVGhyZXNob2xkKSgNCisgICAgICAgIFhNTF9QYXJzZXIgcGFyc2VyLCB1bnNp Z25lZCBsb25nIGxvbmcgYWN0aXZhdGlvblRocmVzaG9sZEJ5dGVzKTsNCisgICAgWE1MX0Jvb2wg KCpTZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbk1heGltdW1BbXBsaWZpY2F0aW9uKSgN CisgICAgICAgIFhNTF9QYXJzZXIgcGFyc2VyLCBmbG9hdCBtYXhBbXBsaWZpY2F0aW9uRmFjdG9y KTsNCiAgICAgLyogYWx3YXlzIGFkZCBuZXcgc3R1ZmYgdG8gdGhlIGVuZCEgKi8NCiB9Ow0KIA0K ZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlleHBhdC5weSBiL0xpYi90ZXN0L3Rlc3RfcHll eHBhdC5weQ0KaW5kZXggMzdkOTA4NmY0MGE4MjdkLi4wNjE4NWNkY2Q1NzEwZmUgMTAwNjQ0DQot LS0gYS9MaWIvdGVzdC90ZXN0X3B5ZXhwYXQucHkNCisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlleHBh dC5weQ0KQEAgLTEwMDMsNiArMTAwMyw2NCBAQCBkZWYgdGVzdF9zZXRfbWF4aW11bV9hbXBsaWZp Y2F0aW9uX19mYWlsX2Zvcl9zdWJwYXJzZXIoc2VsZik6DQogICAgICAgICBzZWxmLmFzc2VydF9y b290X3BhcnNlcl9mYWlsdXJlKHNldHRlciwgMTIzLjQ1KQ0KIA0KIA0KK0B1bml0dGVzdC5za2lw SWYoZXhwYXQudmVyc2lvbl9pbmZvIDwgKDIsIDQsIDApLCAicmVxdWlyZXMgRXhwYXQgPj0gMi40 LjAiKQ0KK2NsYXNzIEV4cGFuc2lvblByb3RlY3Rpb25UZXN0KEF0dGFja1Byb3RlY3Rpb25UZXN0 QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOg0KKw0KKyAgICBkZWYgYXNzZXJ0X3JlamVjdGVkKHNl bGYsIGZ1bmMsIC8sICphcmdzLCAqKmt3YXJncyk6DQorICAgICAgICAiIiJDaGVjayB0aGF0IGZ1 bmMoKmFyZ3MsICoqa3dhcmdzKSBoaXRzIHRoZSBhbGxvY2F0aW9uIGxpbWl0LiIiIg0KKyAgICAg ICAgbXNnID0gKA0KKyAgICAgICAgICAgIHIibGltaXQgb24gaW5wdXQgYW1wbGlmaWNhdGlvbiBm YWN0b3IgXChmcm9tIERURCBhbmQgZW50aXRpZXNcKSAiDQorICAgICAgICAgICAgciJicmVhY2hl ZDogbGluZSBcZCssIGNvbHVtbiBcZCsiDQorICAgICAgICApDQorICAgICAgICBzZWxmLmFzc2Vy dFJhaXNlc1JlZ2V4KGV4cGF0LkV4cGF0RXJyb3IsIG1zZywgZnVuYywgKmFyZ3MsICoqa3dhcmdz KQ0KKw0KKyAgICBkZWYgc2V0X2FjdGl2YXRpb25fdGhyZXNob2xkKHNlbGYsIHBhcnNlciwgdGhy ZXNob2xkKToNCisgICAgICAgIHJldHVybiBwYXJzZXIuU2V0QmlsbGlvbkxhdWdoc0F0dGFja1By b3RlY3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkNCisNCisgICAgZGVmIHNldF9t YXhpbXVtX2FtcGxpZmljYXRpb24oc2VsZiwgcGFyc2VyLCBtYXhfZmFjdG9yKToNCisgICAgICAg IHJldHVybiBwYXJzZXIuU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1w bGlmaWNhdGlvbihtYXhfZmFjdG9yKQ0KKw0KKyAgICBkZWYgdGVzdF9zZXRfYWN0aXZhdGlvbl90 aHJlc2hvbGRfX3RocmVzaG9sZF9yZWFjaGVkKHNlbGYpOg0KKyAgICAgICAgcGFyc2VyID0gZXhw YXQuUGFyc2VyQ3JlYXRlKCkNCisgICAgICAgICMgQ2hvb3NlIGEgdGhyZXNob2xkIGV4cGVjdGVk IHRvIGJlIGFsd2F5cyByZWFjaGVkLg0KKyAgICAgICAgc2VsZi5zZXRfYWN0aXZhdGlvbl90aHJl c2hvbGQocGFyc2VyLCAzKQ0KKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSB0aHJlc2hvbGQgaXMg cmVhY2hlZCBieSBjaG9vc2luZyBhIHNtYWxsIGZhY3Rvcg0KKyAgICAgICAgIyBhbmQgYSBwYXls b2FkIHdob3NlIHBlYWsgYW1wbGlmaWNhdGlvbiBmYWN0b3IgZXhjZWVkcyBpdC4NCisgICAgICAg IHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuc2V0X21heGltdW1fYW1wbGlmaWNhdGlvbihwYXJzZXIs IDEuMCkpDQorICAgICAgICBwYXlsb2FkID0gc2VsZi5leHBvbmVudGlhbF9leHBhbnNpb25fcGF5 bG9hZChuY29scz0xMCwgbnJvd3M9NCkNCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlamVjdGVkKHBh cnNlci5QYXJzZSwgcGF5bG9hZCwgVHJ1ZSkNCisNCisgICAgZGVmIHRlc3Rfc2V0X2FjdGl2YXRp b25fdGhyZXNob2xkX190aHJlc2hvbGRfbm90X3JlYWNoZWQoc2VsZik6DQorICAgICAgICBwYXJz ZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUoKQ0KKyAgICAgICAgIyBDaG9vc2UgYSB0aHJlc2hvbGQg ZXhwZWN0ZWQgdG8gYmUgbmV2ZXIgcmVhY2hlZC4NCisgICAgICAgIHNlbGYuc2V0X2FjdGl2YXRp b25fdGhyZXNob2xkKHBhcnNlciwgcG93KDEwLCA1KSkNCisgICAgICAgICMgQ2hlY2sgdGhhdCB0 aGUgdGhyZXNob2xkIGlzIHJlYWNoZWQgYnkgY2hvb3NpbmcgYSBzbWFsbCBmYWN0b3INCisgICAg ICAgICMgYW5kIGEgcGF5bG9hZCB3aG9zZSBwZWFrIGFtcGxpZmljYXRpb24gZmFjdG9yIGV4Y2Vl ZHMgaXQuDQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnNldF9tYXhpbXVtX2FtcGxp ZmljYXRpb24ocGFyc2VyLCAxLjApKQ0KKyAgICAgICAgcGF5bG9hZCA9IHNlbGYuZXhwb25lbnRp YWxfZXhwYW5zaW9uX3BheWxvYWQobmNvbHM9MTAsIG5yb3dzPTQpDQorICAgICAgICBzZWxmLmFz c2VydElzTm90Tm9uZShwYXJzZXIuUGFyc2UocGF5bG9hZCwgVHJ1ZSkpDQorDQorICAgIGRlZiB0 ZXN0X3NldF9tYXhpbXVtX2FtcGxpZmljYXRpb25fX2FtcGxpZmljYXRpb25fZXhjZWVkZWQoc2Vs Zik6DQorICAgICAgICBwYXJzZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUoKQ0KKyAgICAgICAgIyBV bmNvbmRpdGlvbmFsbHkgZW5hYmxlIG1heGltdW0gYWN0aXZhdGlvbiBmYWN0b3IuDQorICAgICAg ICBzZWxmLnNldF9hY3RpdmF0aW9uX3RocmVzaG9sZChwYXJzZXIsIDApDQorICAgICAgICAjIENo b29zZSBhIG1heCBhbXBsaWZpY2F0aW9uIGZhY3RvciBleHBlY3RlZCB0byBhbHdheXMgYmUgZXhj ZWVkZWQuDQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnNldF9tYXhpbXVtX2FtcGxp ZmljYXRpb24ocGFyc2VyLCAxLjApKQ0KKyAgICAgICAgIyBDcmFmdCBhIHBheWxvYWQgZm9yIHdo aWNoIHRoZSBwZWFrIGFtcGxpZmljYXRpb24gZmFjdG9yIGlzID4gMS4wLg0KKyAgICAgICAgcGF5 bG9hZCA9IHNlbGYuZXhwb25lbnRpYWxfZXhwYW5zaW9uX3BheWxvYWQobmNvbHM9MSwgbnJvd3M9 MikNCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlamVjdGVkKHBhcnNlci5QYXJzZSwgcGF5bG9hZCwg VHJ1ZSkNCisNCisgICAgZGVmIHRlc3Rfc2V0X21heGltdW1fYW1wbGlmaWNhdGlvbl9fYW1wbGlm aWNhdGlvbl9ub3RfZXhjZWVkZWQoc2VsZik6DQorICAgICAgICBwYXJzZXIgPSBleHBhdC5QYXJz ZXJDcmVhdGUoKQ0KKyAgICAgICAgIyBVbmNvbmRpdGlvbmFsbHkgZW5hYmxlIG1heGltdW0gYWN0 aXZhdGlvbiBmYWN0b3IuDQorICAgICAgICBzZWxmLnNldF9hY3RpdmF0aW9uX3RocmVzaG9sZChw YXJzZXIsIDApDQorICAgICAgICAjIENob29zZSBhIG1heCBhbXBsaWZpY2F0aW9uIGZhY3RvciBl eHBlY3RlZCB0byBuZXZlciBiZSBleGNlZWRlZC4NCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25l KHNlbGYuc2V0X21heGltdW1fYW1wbGlmaWNhdGlvbihwYXJzZXIsIDFlNCkpDQorICAgICAgICAj IENyYWZ0IGEgcGF5bG9hZCBmb3Igd2hpY2ggdGhlIHBlYWsgYW1wbGlmaWNhdGlvbiBmYWN0b3Ig aXMgPCAxZTQuDQorICAgICAgICBwYXlsb2FkID0gc2VsZi5leHBvbmVudGlhbF9leHBhbnNpb25f cGF5bG9hZChuY29scz0xLCBucm93cz0yKQ0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUo cGFyc2VyLlBhcnNlKHBheWxvYWQsIFRydWUpKQ0KKw0KKw0KIEB1bml0dGVzdC5za2lwSWYoZXhw YXQudmVyc2lvbl9pbmZvIDwgKDIsIDcsIDIpLCAicmVxdWlyZXMgRXhwYXQgPj0gMi43LjIiKQ0K IGNsYXNzIE1lbW9yeVByb3RlY3Rpb25UZXN0KEF0dGFja1Byb3RlY3Rpb25UZXN0QmFzZSwgdW5p dHRlc3QuVGVzdENhc2UpOg0KIA0KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFy eS8yMDI1LTA5LTI2LTE4LTA0LTI4LmdoLWlzc3VlLTkwOTQ5LllIalN6WC5yc3QgYi9NaXNjL05F V1MuZC9uZXh0L0xpYnJhcnkvMjAyNS0wOS0yNi0xOC0wNC0yOC5naC1pc3N1ZS05MDk0OS5ZSGpT elgucnN0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwLi5kYWUx YjYxOGNhMGQ3NmENCi0tLSAvZGV2L251bGwNCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFy eS8yMDI1LTA5LTI2LTE4LTA0LTI4LmdoLWlzc3VlLTkwOTQ5LllIalN6WC5yc3QNCkBAIC0wLDAg KzEsNyBAQA0KK0FkZA0KKzptZXRoOmB+eG1sLnBhcnNlcnMuZXhwYXQueG1scGFyc2VyLlNldEJp bGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZGANCithbmQNCis6 bWV0aDpgfnhtbC5wYXJzZXJzLmV4cGF0LnhtbHBhcnNlci5TZXRCaWxsaW9uTGF1Z2hzQXR0YWNr UHJvdGVjdGlvbk1heGltdW1BbXBsaWZpY2F0aW9uYA0KK3RvIDpyZWY6YHhtbHBhcnNlciA8eG1s cGFyc2VyLW9iamVjdHM+YCBvYmplY3RzIHRvIHR1bmUgcHJvdGVjdGlvbnMgYWdhaW5zdA0KK2Bi aWxsaW9uIGxhdWdocyA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlsbGlvbl9sYXVn aHNfYXR0YWNrPmBfIGF0dGFja3MuDQorUGF0Y2ggYnkgQsOpbsOpZGlrdCBUcmFuLg0KZGlmZiAt LWdpdCBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHlleHBh dC5jLmgNCmluZGV4IGMwNmE0NDE1MTQwZTQzNC4uYzdmOWNjODU2NmQ3MWQ4IDEwMDY0NA0KLS0t IGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgNCisrKyBiL01vZHVsZXMvY2xpbmljL3B5ZXhw YXQuYy5oDQpAQCAtNDA0LDYgKzQwNCwxMzggQEAgcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWln bkRURCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWMNCiAN CiAjZW5kaWYgLyogKFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDE5NTA1KSAqLw0KIA0KKyNpZiAo WE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMjA0MDApDQorDQorUHlEb2NfU1RSVkFSKHB5ZXhwYXRf eG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVz aG9sZF9fZG9jX18sDQorIlNldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlv blRocmVzaG9sZCgkc2VsZiwgdGhyZXNob2xkLCAvKVxuIg0KKyItLVxuIg0KKyJcbiINCisiU2V0 cyB0aGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBuZWVkZWQgdG8gYWN0aXZhdGUgcHJvdGVjdGlv biBhZ2FpbnN0IGJpbGxpb24gbGF1Z2hzIGF0dGFja3MuXG4iDQorIlxuIg0KKyJUaGUgbnVtYmVy IG9mIG91dHB1dCBieXRlcyBpbmNsdWRlcyBhbXBsaWZpY2F0aW9uIGZyb20gZW50aXR5IGV4cGFu c2lvblxuIg0KKyJhbmQgcmVhZGluZyBEVEQgZmlsZXMuXG4iDQorIlxuIg0KKyJQYXJzZXIgb2Jq ZWN0cyB1c3VhbGx5IGhhdmUgYSBwcm90ZWN0aW9uIGFjdGl2YXRpb24gdGhyZXNob2xkIG9mIDgg TWlCLFxuIg0KKyJidXQgdGhlIGFjdHVhbCBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVu ZGVybHlpbmcgRXhwYXQgbGlicmFyeS5cbiINCisiXG4iDQorIkFjdGl2YXRpb24gdGhyZXNob2xk cyBiZWxvdyA0IE1pQiBhcmUga25vd24gdG8gYnJlYWsgc3VwcG9ydCBmb3IgRElUQSAxLjNcbiIN CisicGF5bG9hZCBhbmQgYXJlIGhlbmNlIG5vdCByZWNvbW1lbmRlZC4iKTsNCisNCisjZGVmaW5l IFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OQUNUSVZB VElPTlRIUkVTSE9MRF9NRVRIT0RERUYgICAgXA0KKyAgICB7IlNldEJpbGxpb25MYXVnaHNBdHRh Y2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCIsIF9QeUNGdW5jdGlvbl9DQVNUKHB5ZXhw YXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRo cmVzaG9sZCksIE1FVEhfTUVUSE9EfE1FVEhfRkFTVENBTEx8TUVUSF9LRVlXT1JEUywgcHlleHBh dF94bWxwYXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25BY3RpdmF0aW9uVGhy ZXNob2xkX19kb2NfX30sDQorDQorc3RhdGljIFB5T2JqZWN0ICoNCitweWV4cGF0X3htbHBhcnNl cl9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbkFjdGl2YXRpb25UaHJlc2hvbGRfaW1w bCh4bWxwYXJzZW9iamVjdCAqc2VsZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR5cGVPYmplY3Qg KmNscywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGhyZXNob2xkKTsN CisNCitzdGF0aWMgUHlPYmplY3QgKg0KK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVn aHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCh4bWxwYXJzZW9iamVjdCAqc2Vs ZiwgUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpjb25zdCAqYXJncywgUHlfc3NpemVfdCBu YXJncywgUHlPYmplY3QgKmt3bmFtZXMpDQorew0KKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVl ID0gTlVMTDsNCisgICAgI2lmIGRlZmluZWQoUHlfQlVJTERfQ09SRSkgJiYgIWRlZmluZWQoUHlf QlVJTERfQ09SRV9NT0RVTEUpDQorICAgICMgIGRlZmluZSBLV1RVUExFIChQeU9iamVjdCAqKSZf UHlfU0lOR0xFVE9OKHR1cGxlX2VtcHR5KQ0KKyAgICAjZWxzZQ0KKyAgICAjICBkZWZpbmUgS1dU VVBMRSBOVUxMDQorICAgICNlbmRpZg0KKw0KKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IF9rZXl3b3Jkc1tdID0geyIiLCBOVUxMfTsNCisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3Bh cnNlciA9IHsNCisgICAgICAgIC5rZXl3b3JkcyA9IF9rZXl3b3JkcywNCisgICAgICAgIC5mbmFt ZSA9ICJTZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbkFjdGl2YXRpb25UaHJlc2hvbGQi LA0KKyAgICAgICAgLmt3dHVwbGUgPSBLV1RVUExFLA0KKyAgICB9Ow0KKyAgICAjdW5kZWYgS1dU VVBMRQ0KKyAgICBQeU9iamVjdCAqYXJnc2J1ZlsxXTsNCisgICAgdW5zaWduZWQgbG9uZyBsb25n IHRocmVzaG9sZDsNCisNCisgICAgYXJncyA9IF9QeUFyZ19VbnBhY2tLZXl3b3JkcyhhcmdzLCBu YXJncywgTlVMTCwga3duYW1lcywgJl9wYXJzZXIsIDEsIDEsIDAsIGFyZ3NidWYpOw0KKyAgICBp ZiAoIWFyZ3MpIHsNCisgICAgICAgIGdvdG8gZXhpdDsNCisgICAgfQ0KKyAgICBpZiAoIV9QeUxv bmdfVW5zaWduZWRMb25nTG9uZ19Db252ZXJ0ZXIoYXJnc1swXSwgJnRocmVzaG9sZCkpIHsNCisg ICAgICAgIGdvdG8gZXhpdDsNCisgICAgfQ0KKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3ht bHBhcnNlcl9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbkFjdGl2YXRpb25UaHJlc2hv bGRfaW1wbChzZWxmLCBjbHMsIHRocmVzaG9sZCk7DQorDQorZXhpdDoNCisgICAgcmV0dXJuIHJl dHVybl92YWx1ZTsNCit9DQorDQorI2VuZGlmIC8qIChYTUxfQ09NQklORURfVkVSU0lPTiA+PSAy MDQwMCkgKi8NCisNCisjaWYgKFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDIwNDAwKQ0KKw0KK1B5 RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVj dGlvbk1heGltdW1BbXBsaWZpY2F0aW9uX19kb2NfXywNCisiU2V0QmlsbGlvbkxhdWdoc0F0dGFj a1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlvbigkc2VsZiwgbWF4X2ZhY3RvcixcbiINCisi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKVxu Ig0KKyItLVxuIg0KKyJcbiINCisiU2V0cyB0aGUgbWF4aW11bSB0b2xlcmF0ZWQgYW1wbGlmaWNh dGlvbiBmYWN0b3IgZm9yIHByb3RlY3Rpb24gYWdhaW5zdCBiaWxsaW9uIGxhdWdocyBhdHRhY2tz LlxuIg0KKyJcbiINCisiVGhlIGFtcGxpZmljYXRpb24gZmFjdG9yIGlzIGNhbGN1bGF0ZWQgYXMg XCIoZGlyZWN0ICsgaW5kaXJlY3QpIC8gZGlyZWN0XCJcbiINCisid2hpbGUgcGFyc2luZywgd2hl cmUgXCJkaXJlY3RcIiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSB0aGUgcHJpbWFy eVxuIg0KKyJkb2N1bWVudCBpbiBwYXJzaW5nIGFuZCBcImluZGlyZWN0XCIgaXMgdGhlIG51bWJl ciBvZiBieXRlcyBhZGRlZCBieSBleHBhbmRpbmdcbiINCisiZW50aXRpZXMgYW5kIHJlYWRpbmcg ZXh0ZXJuYWwgRFREIGZpbGVzLCBjb21iaW5lZC5cbiINCisiXG4iDQorIlRoZSBcJ21heF9mYWN0 b3JcJyB2YWx1ZSBtdXN0IGJlIGEgbm9uLU5hTiBmbG9hdGluZyBwb2ludCB2YWx1ZSBncmVhdGVy IHRoYW5cbiINCisib3IgZXF1YWwgdG8gMS4wLiBBbXBsaWZpY2F0aW9uIGZhY3RvcnMgZ3JlYXRl ciB0aGFuIDMwLDAwMCBjYW4gYmUgb2JzZXJ2ZWRcbiINCisiaW4gdGhlIG1pZGRsZSBvZiBwYXJz aW5nIGV2ZW4gd2l0aCBiZW5pZ24gZmlsZXMgaW4gcHJhY3RpY2UuIEluIHBhcnRpY3VsYXIsXG4i DQorInRoZSBhY3RpdmF0aW9uIHRocmVzaG9sZCBzaG91bGQgYmUgY2FyZWZ1bGx5IGNob3NlbiB0 byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuXG4iDQorIlxuIg0KKyJQYXJzZXIgb2JqZWN0cyB1c3Vh bGx5IGhhdmUgYSBtYXhpbXVtIGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEwMCxcbiINCisiYnV0 IHRoZSBhY3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0 IGxpYnJhcnkuIik7DQorDQorI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRCSUxMSU9OTEFV R0hTQVRUQUNLUFJPVEVDVElPTk1BWElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRiAgICBcDQor ICAgIHsiU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlv biIsIF9QeUNGdW5jdGlvbl9DQVNUKHB5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNB dHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24pLCBNRVRIX01FVEhPRHxNRVRIX0ZB U1RDQUxMfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNB dHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb25fX2RvY19ffSwNCisNCitzdGF0aWMg UHlPYmplY3QgKg0KK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90 ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb25faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICpjbHMsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZsb2F0IG1heF9mYWN0b3IpOw0KKw0KK3N0YXRpYyBQeU9iamVjdCAqDQorcHlleHBhdF94bWxw YXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlv bih4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpjb25z dCAqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpDQorew0KKyAgICBQ eU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsNCisgICAgI2lmIGRlZmluZWQoUHlfQlVJTERf Q09SRSkgJiYgIWRlZmluZWQoUHlfQlVJTERfQ09SRV9NT0RVTEUpDQorICAgICMgIGRlZmluZSBL V1RVUExFIChQeU9iamVjdCAqKSZfUHlfU0lOR0xFVE9OKHR1cGxlX2VtcHR5KQ0KKyAgICAjZWxz ZQ0KKyAgICAjICBkZWZpbmUgS1dUVVBMRSBOVUxMDQorICAgICNlbmRpZg0KKw0KKyAgICBzdGF0 aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCBOVUxMfTsNCisgICAgc3Rh dGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsNCisgICAgICAgIC5rZXl3b3JkcyA9IF9rZXl3 b3JkcywNCisgICAgICAgIC5mbmFtZSA9ICJTZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlv bk1heGltdW1BbXBsaWZpY2F0aW9uIiwNCisgICAgICAgIC5rd3R1cGxlID0gS1dUVVBMRSwNCisg ICAgfTsNCisgICAgI3VuZGVmIEtXVFVQTEUNCisgICAgUHlPYmplY3QgKmFyZ3NidWZbMV07DQor ICAgIGZsb2F0IG1heF9mYWN0b3I7DQorDQorICAgIGFyZ3MgPSBfUHlBcmdfVW5wYWNrS2V5d29y ZHMoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsICZfcGFyc2VyLCAxLCAxLCAwLCBhcmdzYnVm KTsNCisgICAgaWYgKCFhcmdzKSB7DQorICAgICAgICBnb3RvIGV4aXQ7DQorICAgIH0NCisgICAg aWYgKFB5RmxvYXRfQ2hlY2tFeGFjdChhcmdzWzBdKSkgew0KKyAgICAgICAgbWF4X2ZhY3RvciA9 IChmbG9hdCkgKFB5RmxvYXRfQVNfRE9VQkxFKGFyZ3NbMF0pKTsNCisgICAgfQ0KKyAgICBlbHNl DQorICAgIHsNCisgICAgICAgIG1heF9mYWN0b3IgPSAoZmxvYXQpIFB5RmxvYXRfQXNEb3VibGUo YXJnc1swXSk7DQorICAgICAgICBpZiAobWF4X2ZhY3RvciA9PSAtMS4wICYmIFB5RXJyX09jY3Vy cmVkKCkpIHsNCisgICAgICAgICAgICBnb3RvIGV4aXQ7DQorICAgICAgICB9DQorICAgIH0NCisg ICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFj a1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNhdGlvbl9pbXBsKHNlbGYsIGNscywgbWF4X2ZhY3Rv cik7DQorDQorZXhpdDoNCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsNCit9DQorDQorI2VuZGlm IC8qIChYTUxfQ09NQklORURfVkVSU0lPTiA+PSAyMDQwMCkgKi8NCisNCiAjaWYgKFhNTF9DT01C SU5FRF9WRVJTSU9OID49IDIwNzAyKQ0KIA0KIFB5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNl cl9TZXRBbGxvY1RyYWNrZXJBY3RpdmF0aW9uVGhyZXNob2xkX19kb2NfXywNCkBAIC00MTIsNyAr NTQ0LDggQEAgUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlckFj dGl2YXRpb25UaHJlc2hvbGRfX2RvY19fLA0KICJcbiINCiAiU2V0cyB0aGUgbnVtYmVyIG9mIGFs bG9jYXRlZCBieXRlcyBvZiBkeW5hbWljIG1lbW9yeSBuZWVkZWQgdG8gYWN0aXZhdGUgcHJvdGVj dGlvbiBhZ2FpbnN0IGRpc3Byb3BvcnRpb25hdGUgdXNlIG9mIFJBTS5cbiINCiAiXG4iDQotIkJ5 IGRlZmF1bHQsIHBhcnNlciBvYmplY3RzIGhhdmUgYW4gYWxsb2NhdGlvbiBhY3RpdmF0aW9uIHRo cmVzaG9sZCBvZiA2NCBNaUIuIik7DQorIlBhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2ZSBhbiBh bGxvY2F0aW9uIGFjdGl2YXRpb24gdGhyZXNob2xkIG9mIDY0IE1pQixcbiINCisiYnV0IHRoZSBh Y3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0IGxpYnJh cnkuIik7DQogDQogI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRBTExPQ1RSQUNLRVJBQ1RJ VkFUSU9OVEhSRVNIT0xEX01FVEhPRERFRiAgICBcDQogICAgIHsiU2V0QWxsb2NUcmFja2VyQWN0 aXZhdGlvblRocmVzaG9sZCIsIF9QeUNGdW5jdGlvbl9DQVNUKHB5ZXhwYXRfeG1scGFyc2VyX1Nl dEFsbG9jVHJhY2tlckFjdGl2YXRpb25UaHJlc2hvbGQpLCBNRVRIX01FVEhPRHxNRVRIX0ZBU1RD QUxMfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlckFjdGl2 YXRpb25UaHJlc2hvbGRfX2RvY19ffSwNCkBAIC00NzUsNyArNjA4LDggQEAgUHlEb2NfU1RSVkFS KHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlck1heGltdW1BbXBsaWZpY2F0aW9uX19k b2NfXywNCiAibmVhciB0aGUgc3RhcnQgb2YgcGFyc2luZyBldmVuIHdpdGggYmVuaWduIGZpbGVz IGluIHByYWN0aWNlLiBJbiBwYXJ0aWN1bGFyLFxuIg0KICJ0aGUgYWN0aXZhdGlvbiB0aHJlc2hv bGQgc2hvdWxkIGJlIGNhcmVmdWxseSBjaG9zZW4gdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLlxu Ig0KICJcbiINCi0iQnkgZGVmYXVsdCwgcGFyc2VyIG9iamVjdHMgaGF2ZSBhIG1heGltdW0gYW1w bGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLjAuIik7DQorIlBhcnNlciBvYmplY3RzIHVzdWFsbHkg aGF2ZSBhIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLFxuIg0KKyJidXQgdGhl IGFjdHVhbCBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgRXhwYXQgbGli cmFyeS4iKTsNCiANCiAjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEFMTE9DVFJBQ0tFUk1B WElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRiAgICBcDQogICAgIHsiU2V0QWxsb2NUcmFja2Vy TWF4aW11bUFtcGxpZmljYXRpb24iLCBfUHlDRnVuY3Rpb25fQ0FTVChweWV4cGF0X3htbHBhcnNl cl9TZXRBbGxvY1RyYWNrZXJNYXhpbXVtQW1wbGlmaWNhdGlvbiksIE1FVEhfTUVUSE9EfE1FVEhf RkFTVENBTEx8TUVUSF9LRVlXT1JEUywgcHlleHBhdF94bWxwYXJzZXJfU2V0QWxsb2NUcmFja2Vy TWF4aW11bUFtcGxpZmljYXRpb25fX2RvY19ffSwNCkBAIC02NjksNiArODAzLDE0IEBAIHB5ZXhw YXRfRXJyb3JTdHJpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykNCiAgICAgI2Rl ZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRg0KICNlbmRpZiAv KiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRikgKi8N CiANCisjaWZuZGVmIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9U RUNUSU9OQUNUSVZBVElPTlRIUkVTSE9MRF9NRVRIT0RERUYNCisgICAgI2RlZmluZSBQWUVYUEFU X1hNTFBBUlNFUl9TRVRCSUxMSU9OTEFVR0hTQVRUQUNLUFJPVEVDVElPTkFDVElWQVRJT05USFJF U0hPTERfTUVUSE9EREVGDQorI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRfWE1MUEFSU0VSX1NF VEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OQUNUSVZBVElPTlRIUkVTSE9MRF9NRVRIT0RE RUYpICovDQorDQorI2lmbmRlZiBQWUVYUEFUX1hNTFBBUlNFUl9TRVRCSUxMSU9OTEFVR0hTQVRU QUNLUFJPVEVDVElPTk1BWElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRg0KKyAgICAjZGVmaW5l IFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OTUFYSU1V TUFNUExJRklDQVRJT05fTUVUSE9EREVGDQorI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRfWE1M UEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQUk9URUNUSU9OTUFYSU1VTUFNUExJRklDQVRJ T05fTUVUSE9EREVGKSAqLw0KKw0KICNpZm5kZWYgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQUxMT0NU UkFDS0VSQUNUSVZBVElPTlRIUkVTSE9MRF9NRVRIT0RERUYNCiAgICAgI2RlZmluZSBQWUVYUEFU X1hNTFBBUlNFUl9TRVRBTExPQ1RSQUNLRVJBQ1RJVkFUSU9OVEhSRVNIT0xEX01FVEhPRERFRg0K ICNlbmRpZiAvKiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9TRVRBTExPQ1RSQUNLRVJBQ1RJ VkFUSU9OVEhSRVNIT0xEX01FVEhPRERFRikgKi8NCkBAIC02NzYsNCArODE4LDQgQEAgcHlleHBh dF9FcnJvclN0cmluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQ0KICNpZm5kZWYg UFlFWFBBVF9YTUxQQVJTRVJfU0VUQUxMT0NUUkFDS0VSTUFYSU1VTUFNUExJRklDQVRJT05fTUVU SE9EREVGDQogICAgICNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQUxMT0NUUkFDS0VSTUFY SU1VTUFNUExJRklDQVRJT05fTUVUSE9EREVGDQogI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRf WE1MUEFSU0VSX1NFVEFMTE9DVFJBQ0tFUk1BWElNVU1BTVBMSUZJQ0FUSU9OX01FVEhPRERFRikg Ki8NCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2YyYjk2OWNmYWVkNmMw NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovDQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29k ZTogb3V0cHV0PWJjMWIxODdkYmE2ZDIwODYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLw0KZGlm ZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMNCmluZGV4IDg2 NzM1NDBmMzU4MTQyZi4uNmM0NWFlZjVkNGUxYjhlIDEwMDY0NA0KLS0tIGEvTW9kdWxlcy9weWV4 cGF0LmMNCisrKyBiL01vZHVsZXMvcHlleHBhdC5jDQpAQCAtMTE2NSw3ICsxMTY1LDcgQEAgcHll eHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQ eVR5cGVPYmplY3QgKmNscywNCiB9DQogI2VuZGlmDQogDQotI2lmIFhNTF9DT01CSU5FRF9WRVJT SU9OID49IDIwNzAyDQorI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDIwNDAwDQogc3RhdGlj IFB5T2JqZWN0ICoNCiBzZXRfYWN0aXZhdGlvbl90aHJlc2hvbGQoeG1scGFyc2VvYmplY3QgKnNl bGYsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHlwZU9iamVjdCAqY2xzLA0KQEAgLTEy MDksNiArMTIwOSw3NiBAQCBzZXRfbWF4aW11bV9hbXBsaWZpY2F0aW9uKHhtbHBhcnNlb2JqZWN0 ICpzZWxmLA0KIH0NCiAjZW5kaWYNCiANCisjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMjA0 MDANCisvKltjbGluaWMgaW5wdXRdDQorcHlleHBhdC54bWxwYXJzZXIuU2V0QmlsbGlvbkxhdWdo c0F0dGFja1Byb3RlY3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkDQorDQorICAgIGNsczogZGVmaW5p bmdfY2xhc3MNCisgICAgdGhyZXNob2xkOiB1bnNpZ25lZF9sb25nX2xvbmcNCisgICAgLw0KKw0K K1NldHMgdGhlIG51bWJlciBvZiBvdXRwdXQgYnl0ZXMgbmVlZGVkIHRvIGFjdGl2YXRlIHByb3Rl Y3Rpb24gYWdhaW5zdCBiaWxsaW9uIGxhdWdocyBhdHRhY2tzLg0KKw0KK1RoZSBudW1iZXIgb2Yg b3V0cHV0IGJ5dGVzIGluY2x1ZGVzIGFtcGxpZmljYXRpb24gZnJvbSBlbnRpdHkgZXhwYW5zaW9u DQorYW5kIHJlYWRpbmcgRFREIGZpbGVzLg0KKw0KK1BhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2 ZSBhIHByb3RlY3Rpb24gYWN0aXZhdGlvbiB0aHJlc2hvbGQgb2YgOCBNaUIsDQorYnV0IHRoZSBh Y3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0IGxpYnJh cnkuDQorDQorQWN0aXZhdGlvbiB0aHJlc2hvbGRzIGJlbG93IDQgTWlCIGFyZSBrbm93biB0byBi cmVhayBzdXBwb3J0IGZvciBESVRBIDEuMw0KK3BheWxvYWQgYW5kIGFyZSBoZW5jZSBub3QgcmVj b21tZW5kZWQuDQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLw0KKw0KK3N0YXRpYyBQ eU9iamVjdCAqDQorcHlleHBhdF94bWxwYXJzZXJfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3Rl Y3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICpjbHMsDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBsb25nIHRocmVzaG9sZCkNCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2Rl OiBvdXRwdXQ9MGMwODIzNDJmMWM3ODExNCBpbnB1dD01YTUxNjk1YTQ4MWRlZjkyXSovDQorew0K KyAgICByZXR1cm4gc2V0X2FjdGl2YXRpb25fdGhyZXNob2xkKA0KKyAgICAgICAgc2VsZiwgY2xz LCB0aHJlc2hvbGQsDQorICAgICAgICBYTUxfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rp b25BY3RpdmF0aW9uVGhyZXNob2xkDQorICAgICk7DQorfQ0KKyNlbmRpZg0KKw0KKyNpZiBYTUxf Q09NQklORURfVkVSU0lPTiA+PSAyMDQwMA0KKy8qW2NsaW5pYyBpbnB1dF0NCitweWV4cGF0Lnht bHBhcnNlci5TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbk1heGltdW1BbXBsaWZpY2F0 aW9uDQorDQorICAgIGNsczogZGVmaW5pbmdfY2xhc3MNCisgICAgbWF4X2ZhY3RvcjogZmxvYXQN CisgICAgLw0KKw0KK1NldHMgdGhlIG1heGltdW0gdG9sZXJhdGVkIGFtcGxpZmljYXRpb24gZmFj dG9yIGZvciBwcm90ZWN0aW9uIGFnYWluc3QgYmlsbGlvbiBsYXVnaHMgYXR0YWNrcy4NCisNCitU aGUgYW1wbGlmaWNhdGlvbiBmYWN0b3IgaXMgY2FsY3VsYXRlZCBhcyAiKGRpcmVjdCArIGluZGly ZWN0KSAvIGRpcmVjdCINCit3aGlsZSBwYXJzaW5nLCB3aGVyZSAiZGlyZWN0IiBpcyB0aGUgbnVt YmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSB0aGUgcHJpbWFyeQ0KK2RvY3VtZW50IGluIHBhcnNpbmcg YW5kICJpbmRpcmVjdCIgaXMgdGhlIG51bWJlciBvZiBieXRlcyBhZGRlZCBieSBleHBhbmRpbmcN CitlbnRpdGllcyBhbmQgcmVhZGluZyBleHRlcm5hbCBEVEQgZmlsZXMsIGNvbWJpbmVkLg0KKw0K K1RoZSAnbWF4X2ZhY3RvcicgdmFsdWUgbXVzdCBiZSBhIG5vbi1OYU4gZmxvYXRpbmcgcG9pbnQg dmFsdWUgZ3JlYXRlciB0aGFuDQorb3IgZXF1YWwgdG8gMS4wLiBBbXBsaWZpY2F0aW9uIGZhY3Rv cnMgZ3JlYXRlciB0aGFuIDMwLDAwMCBjYW4gYmUgb2JzZXJ2ZWQNCitpbiB0aGUgbWlkZGxlIG9m IHBhcnNpbmcgZXZlbiB3aXRoIGJlbmlnbiBmaWxlcyBpbiBwcmFjdGljZS4gSW4gcGFydGljdWxh ciwNCit0aGUgYWN0aXZhdGlvbiB0aHJlc2hvbGQgc2hvdWxkIGJlIGNhcmVmdWxseSBjaG9zZW4g dG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLg0KKw0KK1BhcnNlciBvYmplY3RzIHVzdWFsbHkgaGF2 ZSBhIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLA0KK2J1dCB0aGUgYWN0dWFs IGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZyBFeHBhdCBsaWJyYXJ5Lg0K K1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8NCisNCitzdGF0aWMgUHlPYmplY3QgKg0K K3B5ZXhwYXRfeG1scGFyc2VyX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11 bUFtcGxpZmljYXRpb25faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHlUeXBlT2JqZWN0ICpjbHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1heF9m YWN0b3IpDQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1OTA0MzllYWRm NDYzZmEgaW5wdXQ9NWRlN2M2ZGQ3MTY5YjNiMF0qLw0KK3sNCisgICAgcmV0dXJuIHNldF9tYXhp bXVtX2FtcGxpZmljYXRpb24oDQorICAgICAgICBzZWxmLCBjbHMsIG1heF9mYWN0b3IsDQorICAg ICAgICBYTUxfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNh dGlvbg0KKyAgICApOw0KK30NCisjZW5kaWYNCisNCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04g Pj0gMjA3MDINCiAvKltjbGluaWMgaW5wdXRdDQogcHlleHBhdC54bWxwYXJzZXIuU2V0QWxsb2NU cmFja2VyQWN0aXZhdGlvblRocmVzaG9sZA0KQEAgLTEyMTksMTQgKzEyODksMTUgQEAgcHlleHBh dC54bWxwYXJzZXIuU2V0QWxsb2NUcmFja2VyQWN0aXZhdGlvblRocmVzaG9sZA0KIA0KIFNldHMg dGhlIG51bWJlciBvZiBhbGxvY2F0ZWQgYnl0ZXMgb2YgZHluYW1pYyBtZW1vcnkgbmVlZGVkIHRv IGFjdGl2YXRlIHByb3RlY3Rpb24gYWdhaW5zdCBkaXNwcm9wb3J0aW9uYXRlIHVzZSBvZiBSQU0u DQogDQotQnkgZGVmYXVsdCwgcGFyc2VyIG9iamVjdHMgaGF2ZSBhbiBhbGxvY2F0aW9uIGFjdGl2 YXRpb24gdGhyZXNob2xkIG9mIDY0IE1pQi4NCitQYXJzZXIgb2JqZWN0cyB1c3VhbGx5IGhhdmUg YW4gYWxsb2NhdGlvbiBhY3RpdmF0aW9uIHRocmVzaG9sZCBvZiA2NCBNaUIsDQorYnV0IHRoZSBh Y3R1YWwgZGVmYXVsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIEV4cGF0IGxpYnJh cnkuDQogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLw0KIA0KIHN0YXRpYyBQeU9iamVj dCAqDQogcHlleHBhdF94bWxwYXJzZXJfU2V0QWxsb2NUcmFja2VyQWN0aXZhdGlvblRocmVzaG9s ZF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR5cGVPYmplY3QgKmNscywNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBsb25nIHRocmVzaG9sZCkNCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2Rl OiBvdXRwdXQ9YmVkN2U5MzIwN2JhMDhjNSBpbnB1dD05YzcwNmI3NWMxOGU0ZWExXSovDQorLypb Y2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZDdlOTMyMDdiYTA4YzUgaW5wdXQ9 Yjc0MTcxNzA5YTc3ZjJkOV0qLw0KIHsNCiAgICAgcmV0dXJuIHNldF9hY3RpdmF0aW9uX3RocmVz aG9sZCgNCiAgICAgICAgIHNlbGYsIGNscywgdGhyZXNob2xkLA0KQEAgLTEyNTUsMTQgKzEzMjYs MTUgQEAgb3IgZXF1YWwgdG8gMS4wLiBBbXBsaWZpY2F0aW9uIGZhY3RvcnMgZ3JlYXRlciB0aGFu IDEwMC4wIGNhbiBiZSBvYnNlcnZlZA0KIG5lYXIgdGhlIHN0YXJ0IG9mIHBhcnNpbmcgZXZlbiB3 aXRoIGJlbmlnbiBmaWxlcyBpbiBwcmFjdGljZS4gSW4gcGFydGljdWxhciwNCiB0aGUgYWN0aXZh dGlvbiB0aHJlc2hvbGQgc2hvdWxkIGJlIGNhcmVmdWxseSBjaG9zZW4gdG8gYXZvaWQgZmFsc2Ug cG9zaXRpdmVzLg0KIA0KLUJ5IGRlZmF1bHQsIHBhcnNlciBvYmplY3RzIGhhdmUgYSBtYXhpbXVt IGFtcGxpZmljYXRpb24gZmFjdG9yIG9mIDEwMC4wLg0KK1BhcnNlciBvYmplY3RzIHVzdWFsbHkg aGF2ZSBhIG1heGltdW0gYW1wbGlmaWNhdGlvbiBmYWN0b3Igb2YgMTAwLA0KK2J1dCB0aGUgYWN0 dWFsIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZyBFeHBhdCBsaWJyYXJ5 Lg0KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8NCiANCiBzdGF0aWMgUHlPYmplY3Qg Kg0KIHB5ZXhwYXRfeG1scGFyc2VyX1NldEFsbG9jVHJhY2tlck1heGltdW1BbXBsaWZpY2F0aW9u X2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR5cGVPYmplY3QgKmNscywNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs b2F0IG1heF9mYWN0b3IpDQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZl NDRiZDQ4YzliMTEyYTAgaW5wdXQ9OTE4YjkyNjZiNDkwYTcyMl0qLw0KKy8qW2NsaW5pYyBlbmQg Z2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTQ0YmQ0OGM5YjExMmEwIGlucHV0PTIwMDRjNmYwMTk4 MTAyY2JdKi8NCiB7DQogICAgIHJldHVybiBzZXRfbWF4aW11bV9hbXBsaWZpY2F0aW9uKA0KICAg ICAgICAgc2VsZiwgY2xzLCBtYXhfZmFjdG9yLA0KQEAgLTEyODAsNiArMTM1Miw4IEBAIHN0YXRp YyBzdHJ1Y3QgUHlNZXRob2REZWYgeG1scGFyc2VfbWV0aG9kc1tdID0gew0KICAgICBQWUVYUEFU X1hNTFBBUlNFUl9FWFRFUk5BTEVOVElUWVBBUlNFUkNSRUFURV9NRVRIT0RERUYNCiAgICAgUFlF WFBBVF9YTUxQQVJTRVJfU0VUUEFSQU1FTlRJVFlQQVJTSU5HX01FVEhPRERFRg0KICAgICBQWUVY UEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRg0KKyAgICBQWUVYUEFUX1hNTFBB UlNFUl9TRVRCSUxMSU9OTEFVR0hTQVRUQUNLUFJPVEVDVElPTkFDVElWQVRJT05USFJFU0hPTERf TUVUSE9EREVGDQorICAgIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJJTExJT05MQVVHSFNBVFRBQ0tQ Uk9URUNUSU9OTUFYSU1VTUFNUExJRklDQVRJT05fTUVUSE9EREVGDQogICAgIFBZRVhQQVRfWE1M UEFSU0VSX1NFVEFMTE9DVFJBQ0tFUkFDVElWQVRJT05USFJFU0hPTERfTUVUSE9EREVGDQogICAg IFBZRVhQQVRfWE1MUEFSU0VSX1NFVEFMTE9DVFJBQ0tFUk1BWElNVU1BTVBMSUZJQ0FUSU9OX01F VEhPRERFRg0KICAgICBQWUVYUEFUX1hNTFBBUlNFUl9TRVRSRVBBUlNFREVGRVJSQUxFTkFCTEVE X01FVEhPRERFRg0KQEAgLTIyNzYsNiArMjM1MCwxMyBAQCBweWV4cGF0X2V4ZWMoUHlPYmplY3Qg Km1vZCkNCiAgICAgY2FwaS0+U2V0QWxsb2NUcmFja2VyQWN0aXZhdGlvblRocmVzaG9sZCA9IE5V TEw7DQogICAgIGNhcGktPlNldEFsbG9jVHJhY2tlck1heGltdW1BbXBsaWZpY2F0aW9uID0gTlVM TDsNCiAjZW5kaWYNCisjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMjA0MDANCisgICAgY2Fw aS0+U2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkID0g WE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZDsN CisgICAgY2FwaS0+U2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlm aWNhdGlvbiA9IFhNTF9TZXRCaWxsaW9uTGF1Z2hzQXR0YWNrUHJvdGVjdGlvbk1heGltdW1BbXBs aWZpY2F0aW9uOw0KKyNlbHNlDQorICAgIGNhcGktPlNldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90 ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCA9IE5VTEw7DQorICAgIGNhcGktPlNldEJpbGxpb25M YXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24gPSBOVUxMOw0KKyNlbmRp Zg0KIA0KICAgICAvKiBleHBvcnQgdXNpbmcgY2Fwc3VsZSAqLw0KICAgICBQeU9iamVjdCAqY2Fw aV9vYmplY3QgPSBQeUNhcHN1bGVfTmV3KGNhcGksIFB5RXhwYXRfQ0FQU1VMRV9OQU1FLA0KDQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpQeXRob24tY2hl Y2tpbnMgbWFpbGluZyBsaXN0IC0tIHB5dGhvbi1jaGVja2luc0BweXRob24ub3JnClRvIHVuc3Vi c2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcHl0aG9uLWNoZWNraW5zLWxlYXZlQHB5dGhvbi5vcmcK aHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbjMvL2xpc3RzL3B5dGhvbi1jaGVja2lucy5w eXRob24ub3JnCk1lbWJlciBhZGRyZXNzOiBweXRob24tcHl0aG9uLWNoZWNraW5zQG0uZ21hbmUt bXgub3JnCg==