From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/chromium] epel9-next: workaround for build error due to old atk version on el8 Date: Fri, 07 Aug 2026 16:06:58 GMT Message-ID: <178611881841.1.6900284494396389900.rpms-chromium-ddd82910888e@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: ddd82910888e222f53d06d13f8ce709ec09012ab QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvY2hyb21pdW0KQnJh bmNoIDogZXBlbDktbmV4dApDb21taXQgOiBkZGQ4MjkxMDg4OGUyMjJmNTNkMDZkMTNmOGNlNzA5 ZWMwOTAxMmFiCkF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+CkRhdGUgICA6IDIw MjQtMDktMThUMjA6Mzc6MTUrMDI6MDAKU3RhdHMgIDogKzEwODgvLTEgaW4gMiBmaWxlKHMpClVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvY2hyb21pdW0vYy9kZGQ4 MjkxMDg4OGUyMjJmNTNkMDZkMTNmOGNlNzA5ZWMwOTAxMmFiP2JyYW5jaD1lcGVsOS1uZXh0CgpM b2c6Cndvcmthcm91bmQgZm9yIGJ1aWxkIGVycm9yIGR1ZSB0byBvbGQgYXRrIHZlcnNpb24gb24g ZWw4CgotLS0KZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyOS1lbDgtYXRrLWNvbXBpbGVyLWVycm9y LnBhdGNoIGIvY2hyb21pdW0tMTI5LWVsOC1hdGstY29tcGlsZXItZXJyb3IucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNGNmYgotLS0gL2Rldi9udWxsCisrKyBi L2Nocm9taXVtLTEyOS1lbDgtYXRrLWNvbXBpbGVyLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMTA4 MyBAQAorZGlmZiAtdXAgY2hyb21pdW0tMTI5LjAuNjY2OC41OC9jb250ZW50L2Jyb3dzZXIvYWNj ZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5X2F1cmFsaW51eF9icm93c2VydGVzdC5jYy5tZSBjaHJv bWl1bS0xMjkuMC42NjY4LjU4L2NvbnRlbnQvYnJvd3Nlci9hY2Nlc3NpYmlsaXR5L2FjY2Vzc2li aWxpdHlfYXVyYWxpbnV4X2Jyb3dzZXJ0ZXN0LmNjCistLS0gY2hyb21pdW0tMTI5LjAuNjY2OC41 OC9jb250ZW50L2Jyb3dzZXIvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5X2F1cmFsaW51eF9i cm93c2VydGVzdC5jYy5tZQkyMDI0LTA5LTE4IDE5OjI2OjQwLjk1MTEwMDc0MCArMDIwMAorKysr IGNocm9taXVtLTEyOS4wLjY2NjguNTgvY29udGVudC9icm93c2VyL2FjY2Vzc2liaWxpdHkvYWNj ZXNzaWJpbGl0eV9hdXJhbGludXhfYnJvd3NlcnRlc3QuY2MJMjAyNC0wOS0xOCAxOToyODowNi4y MTk3MDA0NzQgKzAyMDAKK0BAIC0zLDYgKzMsNyBAQAorIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNF IGZpbGUuCisgCisgI2luY2x1ZGUgPGF0ay9hdGsuaD4KKysjaW5jbHVkZSA8ZGxmY24uaD4KKyAK KyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRlIDx2ZWN0b3I+CitAQCAtNTQ3LDYgKzU0OCwx MCBAQCBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhCisgICBnX29iamVj dF91bnJlZihkaXZfZWxlbWVudCk7CisgfQorIAorKyNpZiBkZWZpbmVkKEFUS19DSEVDS19WRVJT SU9OKSAmJiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAzMCwgMCkKKysjZGVmaW5lIEFUS18yMzAKKysj ZW5kaWYKKysKKyBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhTGludXhC cm93c2VyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RDaGFyYWN0ZXJFeHRlbnRz V2l0aEludmFsaWRBcmd1bWVudHMpIHsKKyAgIEF0a1RleHQqIGF0a190ZXh0ID0gU2V0VXBTYW1w bGVQYXJhZ3JhcGgoKTsKK0BAIC01NjksMTIgKzU3NCwxNCBAQCBJTl9QUk9DX0JST1dTRVJfVEVT VF9GKEFjY2Vzc2liaWxpdHlBdXJhCisgICBFWFBFQ1RfRVEoZXhwZWN0LCB3aWR0aCk7CisgICBF WFBFQ1RfRVEoZXhwZWN0LCBoZWlnaHQpOworIAorKyNpZmRlZiBBVEtfMjMwCisgICBhdGtfdGV4 dF9nZXRfY2hhcmFjdGVyX2V4dGVudHMoYXRrX3RleHQsIGludmFsaWRfb2Zmc2V0LCAmeCwgJnks ICZ3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGVpZ2h0LCBBVEtf WFlfUEFSRU5UKTsKKyAgIEVYUEVDVF9FUShleHBlY3QsIHgpOworICAgRVhQRUNUX0VRKGV4cGVj dCwgeSk7CisgICBFWFBFQ1RfRVEoZXhwZWN0LCB3aWR0aCk7CisgICBFWFBFQ1RfRVEoZXhwZWN0 LCBoZWlnaHQpOworKyNlbmRpZiAgLy8gQVRLXzIzMAorIAorICAgYXRrX3RleHRfZ2V0X2NoYXJh Y3Rlcl9leHRlbnRzKGF0a190ZXh0LCBpbnZhbGlkX29mZnNldCwgJngsICZ5LCAmd2lkdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhlaWdodCwgQVRLX1hZX1dJTkRPVyk7 CitAQCAtNTkzLDEyICs2MDAsMTQgQEAgSU5fUFJPQ19CUk9XU0VSX1RFU1RfRihBY2Nlc3NpYmls aXR5QXVyYQorICAgRVhQRUNUX0VRKGV4cGVjdCwgd2lkdGgpOworICAgRVhQRUNUX0VRKGV4cGVj dCwgaGVpZ2h0KTsKKyAKKysjaWZkZWYgQVRLXzIzMAorICAgYXRrX3RleHRfZ2V0X2NoYXJhY3Rl cl9leHRlbnRzKGF0a190ZXh0LCBpbnZhbGlkX29mZnNldCwgJngsICZ5LCAmd2lkdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhlaWdodCwgQVRLX1hZX1BBUkVOVCk7Cisg ICBFWFBFQ1RfRVEoZXhwZWN0LCB4KTsKKyAgIEVYUEVDVF9FUShleHBlY3QsIHkpOworICAgRVhQ RUNUX0VRKGV4cGVjdCwgd2lkdGgpOworICAgRVhQRUNUX0VRKGV4cGVjdCwgaGVpZ2h0KTsKKysj ZW5kaWYgIC8vIEFUS18yMzAKKyAKKyAgIGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhh dGtfdGV4dCwgaW52YWxpZF9vZmZzZXQsICZ4LCAmeSwgJndpZHRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZoZWlnaHQsIEFUS19YWV9XSU5ET1cpOworQEAgLTYxMyw3ICs2 MjIsOSBAQCBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhCisgQXRrQ29v cmRUeXBlIGtDb29yZGluYXRlVHlwZXNbXSA9IHsKKyAgICAgQVRLX1hZX1NDUkVFTiwKKyAgICAg QVRLX1hZX1dJTkRPVywKKysjaWZkZWYgQVRLXzIzMAorICAgICBBVEtfWFlfUEFSRU5ULAorKyNl bmRpZiAgLy8gQVRLXzIzMAorIH07CisgCisgSU5fUFJPQ19CUk9XU0VSX1RFU1RfRihBY2Nlc3Np YmlsaXR5QXVyYUxpbnV4QnJvd3NlclRlc3QsCitAQCAtODcyLDYgKzg4Myw3IEBAIElOX1BST0Nf QlJPV1NFUl9URVNUX0YoQWNjZXNzaWJpbGl0eUF1cmEKKyAgIFRlc3RDaGFyYWN0ZXJFeHRlbnRz SW5TY3JvbGxhYmxlSW5wdXQoKTsKKyB9CisgCisrI2lmIGRlZmluZWQoQVRLXzIzMCkKKyB0eXBl ZGVmIGJvb2wgKCpTY3JvbGxUb1BvaW50RnVuYykoQXRrQ29tcG9uZW50KiBjb21wb25lbnQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0a0Nvb3JkVHlwZSBjb29yZHMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgeCwKK0BAIC04ODEsNiArODkz LDE4IEBAIHR5cGVkZWYgYm9vbCAoKlNjcm9sbFRvRnVuYykoQXRrQ29tcG9uZW4KKyAvLyBUT0RP KGNyYnVnLmNvbS80MDg2NjcyOCk6IEVuYWJsZSB0aGlzIHRlc3QuCisgSU5fUFJPQ19CUk9XU0VS X1RFU1RfRihBY2Nlc3NpYmlsaXR5QXVyYUxpbnV4QnJvd3NlclRlc3QsCisgICAgICAgICAgICAg ICAgICAgICAgICBESVNBQkxFRF9UZXN0U2Nyb2xsVG9Qb2ludCkgeworKyAgLy8gVGhlcmUncyBh IGNoYW5jZSB3ZSBtYXkgYmUgY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgQVRLIGFu ZCB0aGVuCisrICAvLyBydW4gd2l0aCBhbiBvbGRlciBvbmUsIHNvIHdlIG5lZWQgdG8gZG8gYSBy dW50aW1lIGNoZWNrIGZvciB0aGlzIG1ldGhvZAorKyAgLy8gdGhhdCBpcyBhdmFpbGFibGUgaW4g QVRLIDIuMzAgaW5zdGVhZCBvZiBsaW5raW5nIGRpcmVjdGx5LgorKyAgU2Nyb2xsVG9Qb2ludEZ1 bmMgc2Nyb2xsX3RvX3BvaW50ID0gcmVpbnRlcnByZXRfY2FzdDxTY3JvbGxUb1BvaW50RnVuYz4o CisrICAgICAgZGxzeW0oUlRMRF9ERUZBVUxULCAiYXRrX2NvbXBvbmVudF9zY3JvbGxfdG9fcG9p bnQiKSk7CisrICBpZiAoIXNjcm9sbF90b19wb2ludCkgeworKyAgICBMT0coV0FSTklORykKKysg ICAgICAgIDw8ICJTa2lwcGluZyBBY2Nlc3NpYmlsaXR5QXVyYUxpbnV4QnJvd3NlclRlc3Q6OlRl c3RTY3JvbGxUb1BvaW50IgorKyAgICAgICAgICAgIiBiZWNhdXNlIEFUSyB2ZXJzaW9uIDwgMi4z MCBkZXRlY3RlZC4iOworKyAgICByZXR1cm47CisrICB9CisrCisgICBMb2FkU2FtcGxlUGFyYWdy YXBoSW5TY3JvbGxhYmxlRG9jdW1lbnQoKTsKKyAgIEF0a1RleHQqIGF0a190ZXh0ID0gR2V0U2Ft cGxlUGFyYWdyYXBoKCk7CisgICBBU1NFUlRfVFJVRShBVEtfSVNfQ09NUE9ORU5UKGF0a190ZXh0 KSk7CitAQCAtODkzLDcgKzkxNyw3IEBAIElOX1BST0NfQlJPV1NFUl9URVNUX0YoQWNjZXNzaWJp bGl0eUF1cmEKKyAgIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25XYWl0ZXIgbG9jYXRpb25fY2hh bmdlZF93YWl0ZXIoCisgICAgICAgc2hlbGwoKS0+d2ViX2NvbnRlbnRzKCksIHVpOjprQVhNb2Rl Q29tcGxldGUsCisgICAgICAgYXg6Om1vam9tOjpFdmVudDo6a0xvY2F0aW9uQ2hhbmdlZCk7Cist ICBhdGtfY29tcG9uZW50X3Njcm9sbF90b19wb2ludChhdGtfY29tcG9uZW50LCBBVEtfWFlfUEFS RU5ULCAwLCAwKTsKKysgIHNjcm9sbF90b19wb2ludChhdGtfY29tcG9uZW50LCBBVEtfWFlfUEFS RU5ULCAwLCAwKTsKKyAgIEFTU0VSVF9UUlVFKGxvY2F0aW9uX2NoYW5nZWRfd2FpdGVyLldhaXRG b3JOb3RpZmljYXRpb24oKSk7CisgCisgICBhdGtfY29tcG9uZW50X2dldF9leHRlbnRzKGF0a19j b21wb25lbnQsICZ4LCAmeSwgbnVsbHB0ciwgbnVsbHB0ciwKK0BAIC05MDIsMjAgKzkyNiwyMCBA QCBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhCisgICBFWFBFQ1RfR1Qo cHJldl95LCB5KTsKKyAKKyAgIGNvbnN0ZXhwciBpbnQga1Njcm9sbFRvWSA9IDA7CistICBhdGtf Y29tcG9uZW50X3Njcm9sbF90b19wb2ludChhdGtfY29tcG9uZW50LCBBVEtfWFlfU0NSRUVOLCAw LCBrU2Nyb2xsVG9ZKTsKKysgIHNjcm9sbF90b19wb2ludChhdGtfY29tcG9uZW50LCBBVEtfWFlf U0NSRUVOLCAwLCBrU2Nyb2xsVG9ZKTsKKyAgIEFTU0VSVF9UUlVFKGxvY2F0aW9uX2NoYW5nZWRf d2FpdGVyLldhaXRGb3JOb3RpZmljYXRpb24oKSk7CisgICBhdGtfY29tcG9uZW50X2dldF9leHRl bnRzKGF0a19jb21wb25lbnQsICZ4LCAmeSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVRLX1hZX1NDUkVFTik7CisgICBFWFBFQ1RfRVEoa1Njcm9sbFRv WSwgeSk7CisgCisgICBjb25zdGV4cHIgaW50IGtTY3JvbGxUb1lfMiA9IDI0MzsKKy0gIGF0a19j b21wb25lbnRfc2Nyb2xsX3RvX3BvaW50KGF0a19jb21wb25lbnQsIEFUS19YWV9TQ1JFRU4sIDAs IGtTY3JvbGxUb1lfMik7CisrICBzY3JvbGxfdG9fcG9pbnQoYXRrX2NvbXBvbmVudCwgQVRLX1hZ X1NDUkVFTiwgMCwga1Njcm9sbFRvWV8yKTsKKyAgIEFTU0VSVF9UUlVFKGxvY2F0aW9uX2NoYW5n ZWRfd2FpdGVyLldhaXRGb3JOb3RpZmljYXRpb24oKSk7CisgICBhdGtfY29tcG9uZW50X2dldF9l eHRlbnRzKGF0a19jb21wb25lbnQsIG51bGxwdHIsICZ5LCBudWxscHRyLCBudWxscHRyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBVEtfWFlfU0NSRUVOKTsKKyAgIEVYUEVDVF9FUShr U2Nyb2xsVG9ZXzIsIHkpOworIAorLSAgYXRrX2NvbXBvbmVudF9zY3JvbGxfdG9fcG9pbnQoYXRr X2NvbXBvbmVudCwgQVRLX1hZX1NDUkVFTiwgMCwgMTI5KTsKKysgIHNjcm9sbF90b19wb2ludChh dGtfY29tcG9uZW50LCBBVEtfWFlfU0NSRUVOLCAwLCAxMjkpOworICAgQVNTRVJUX1RSVUUobG9j YXRpb25fY2hhbmdlZF93YWl0ZXIuV2FpdEZvck5vdGlmaWNhdGlvbigpKTsKKyAgIGF0a19jb21w b25lbnRfZ2V0X2V4dGVudHMoYXRrX2NvbXBvbmVudCwgbnVsbHB0ciwgJnksIG51bGxwdHIsIG51 bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUS19YWV9TQ1JFRU4pOworQEAg LTkzMiw2ICs5NTYsMTcgQEAgSU5fUFJPQ19CUk9XU0VSX1RFU1RfRihBY2Nlc3NpYmlsaXR5QXVy YQorIC8vIFRPRE8oY3JidWcuY29tLzQwODY2NzI4KTogRW5hYmxlIHRoaXMgdGVzdC4KKyBJTl9Q Uk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhTGludXhCcm93c2VyVGVzdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIERJU0FCTEVEX1Rlc3RTY3JvbGxUbykgeworKyAgLy8gVGhl cmUncyBhIGNoYW5jZSB3ZSBtYXkgYmUgY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2Yg QVRLIGFuZCB0aGVuCisrICAvLyBydW4gd2l0aCBhbiBvbGRlciBvbmUsIHNvIHdlIG5lZWQgdG8g ZG8gYSBydW50aW1lIGNoZWNrIGZvciB0aGlzIG1ldGhvZAorKyAgLy8gdGhhdCBpcyBhdmFpbGFi bGUgaW4gQVRLIDIuMzAgaW5zdGVhZCBvZiBsaW5raW5nIGRpcmVjdGx5LgorKyAgU2Nyb2xsVG9G dW5jIHNjcm9sbF90byA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsVG9GdW5jPigKKysgICAgICBk bHN5bShSVExEX0RFRkFVTFQsICJhdGtfY29tcG9uZW50X3Njcm9sbF90byIpKTsKKysgIGlmICgh c2Nyb2xsX3RvKSB7CisrICAgIExPRyhXQVJOSU5HKSA8PCAiU2tpcHBpbmcgQWNjZXNzaWJpbGl0 eUF1cmFMaW51eEJyb3dzZXJUZXN0OjpUZXN0U2Nyb2xsVG8iCisrICAgICAgICAgICAgICAgICAg ICAiIGJlY2F1c2UgQVRLIHZlcnNpb24gPCAyLjMwIGRldGVjdGVkLiI7CisrICAgIHJldHVybjsK KysgIH0KKysKKyAgIExvYWRJbml0aWFsQWNjZXNzaWJpbGl0eVRyZWVGcm9tSHRtbCgKKyAgICAg ICBSIkhUTUwoPCFET0NUWVBFIGh0bWw+CisgICAgICAgPGh0bWw+CitAQCAtOTczLDggKzEwMDgs NyBAQCBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhCisgICBBY2Nlc3Np YmlsaXR5Tm90aWZpY2F0aW9uV2FpdGVyIHdhaXRlcigKKyAgICAgICBzaGVsbCgpLT53ZWJfY29u dGVudHMoKSwgdWk6OmtBWE1vZGVDb21wbGV0ZSwKKyAgICAgICBheDo6bW9qb206OkV2ZW50Ojpr U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKTsKKy0gIEFTU0VSVF9UUlVFKAorLSAgICAgIGF0a19jb21w b25lbnRfc2Nyb2xsX3RvKEFUS19DT01QT05FTlQodGFyZ2V0KSwgQVRLX1NDUk9MTF9UT1BfRURH RSkpOworKyAgQVNTRVJUX1RSVUUoc2Nyb2xsX3RvKEFUS19DT01QT05FTlQodGFyZ2V0KSwgQVRL X1NDUk9MTF9UT1BfRURHRSkpOworICAgQVNTRVJUX1RSVUUod2FpdGVyLldhaXRGb3JOb3RpZmlj YXRpb24oKSk7CisgICBpbnQgeCwgeTsKKyAgIGF0a19jb21wb25lbnRfZ2V0X2V4dGVudHMoQVRL X0NPTVBPTkVOVCh0YXJnZXQpLCAmeCwgJnksIG51bGxwdHIsIG51bGxwdHIsCitAQCAtOTgyLDQw ICsxMDE2LDM1IEBAIElOX1BST0NfQlJPV1NFUl9URVNUX0YoQWNjZXNzaWJpbGl0eUF1cmEKKyAg IEVYUEVDVF9FUSh5LCBkb2NfeSk7CisgICBFWFBFQ1RfTkUoeCwgZG9jX3gpOworIAorLSAgQVNT RVJUX1RSVUUoCistICAgICAgYXRrX2NvbXBvbmVudF9zY3JvbGxfdG8oQVRLX0NPTVBPTkVOVCh0 YXJnZXQpLCBBVEtfU0NST0xMX1RPUF9MRUZUKSk7CisrICBBU1NFUlRfVFJVRShzY3JvbGxfdG8o QVRLX0NPTVBPTkVOVCh0YXJnZXQpLCBBVEtfU0NST0xMX1RPUF9MRUZUKSk7CisgICBBU1NFUlRf VFJVRSh3YWl0ZXIuV2FpdEZvck5vdGlmaWNhdGlvbigpKTsKKyAgIGF0a19jb21wb25lbnRfZ2V0 X2V4dGVudHMoQVRLX0NPTVBPTkVOVCh0YXJnZXQpLCAmeCwgJnksIG51bGxwdHIsIG51bGxwdHIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUS19YWV9TQ1JFRU4pOworICAgRVhQRUNU X0VRKHksIGRvY195KTsKKyAgIEVYUEVDVF9FUSh4LCBkb2NfeCk7CisgCistICBBU1NFUlRfVFJV RSgKKy0gICAgICBhdGtfY29tcG9uZW50X3Njcm9sbF90byhBVEtfQ09NUE9ORU5UKHRhcmdldCks IEFUS19TQ1JPTExfQk9UVE9NX0VER0UpKTsKKysgIEFTU0VSVF9UUlVFKHNjcm9sbF90byhBVEtf Q09NUE9ORU5UKHRhcmdldCksIEFUS19TQ1JPTExfQk9UVE9NX0VER0UpKTsKKyAgIEFTU0VSVF9U UlVFKHdhaXRlci5XYWl0Rm9yTm90aWZpY2F0aW9uKCkpOworICAgYXRrX2NvbXBvbmVudF9nZXRf ZXh0ZW50cyhBVEtfQ09NUE9ORU5UKHRhcmdldCksICZ4LCAmeSwgbnVsbHB0ciwgbnVsbHB0ciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVRLX1hZX1NDUkVFTik7CisgICBFWFBFQ1Rf TkUoeSwgZG9jX3kpOworICAgRVhQRUNUX0VRKHgsIGRvY194KTsKKyAKKy0gIEFTU0VSVF9UUlVF KAorLSAgICAgIGF0a19jb21wb25lbnRfc2Nyb2xsX3RvKEFUS19DT01QT05FTlQodGFyZ2V0KSwg QVRLX1NDUk9MTF9SSUdIVF9FREdFKSk7CisrICBBU1NFUlRfVFJVRShzY3JvbGxfdG8oQVRLX0NP TVBPTkVOVCh0YXJnZXQpLCBBVEtfU0NST0xMX1JJR0hUX0VER0UpKTsKKyAgIEFTU0VSVF9UUlVF KHdhaXRlci5XYWl0Rm9yTm90aWZpY2F0aW9uKCkpOworICAgYXRrX2NvbXBvbmVudF9nZXRfZXh0 ZW50cyhBVEtfQ09NUE9ORU5UKHRhcmdldCksICZ4LCAmeSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVRLX1hZX1NDUkVFTik7CisgICBFWFBFQ1RfTkUo eSwgZG9jX3kpOworICAgRVhQRUNUX05FKHgsIGRvY194KTsKKyAKKy0gIEFTU0VSVF9UUlVFKAor LSAgICAgIGF0a19jb21wb25lbnRfc2Nyb2xsX3RvKEFUS19DT01QT05FTlQodGFyZ2V0MiksIEFU S19TQ1JPTExfTEVGVF9FREdFKSk7CisrICBBU1NFUlRfVFJVRShzY3JvbGxfdG8oQVRLX0NPTVBP TkVOVCh0YXJnZXQyKSwgQVRLX1NDUk9MTF9MRUZUX0VER0UpKTsKKyAgIEFTU0VSVF9UUlVFKHdh aXRlci5XYWl0Rm9yTm90aWZpY2F0aW9uKCkpOworICAgYXRrX2NvbXBvbmVudF9nZXRfZXh0ZW50 cyhBVEtfQ09NUE9ORU5UKHRhcmdldDIpLCAmeCwgJnksIG51bGxwdHIsIG51bGxwdHIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFUS19YWV9TQ1JFRU4pOworICAgRVhQRUNUX05FKHks IGRvY195KTsKKyAgIEVYUEVDVF9FUSh4LCBkb2NfeCk7CisgCistICBBU1NFUlRfVFJVRSgKKy0g ICAgICBhdGtfY29tcG9uZW50X3Njcm9sbF90byhBVEtfQ09NUE9ORU5UKHRhcmdldDIpLCBBVEtf U0NST0xMX1RPUF9MRUZUKSk7CisrICBBU1NFUlRfVFJVRShzY3JvbGxfdG8oQVRLX0NPTVBPTkVO VCh0YXJnZXQyKSwgQVRLX1NDUk9MTF9UT1BfTEVGVCkpOworICAgQVNTRVJUX1RSVUUod2FpdGVy LldhaXRGb3JOb3RpZmljYXRpb24oKSk7CisgICBhdGtfY29tcG9uZW50X2dldF9leHRlbnRzKEFU S19DT01QT05FTlQodGFyZ2V0MiksICZ4LCAmeSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQVRLX1hZX1NDUkVFTik7CitAQCAtMTA0NywxMCArMTA3Niwz OSBAQCBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhCisgICBnX29iamVj dF91bnJlZih0YXJnZXQyKTsKKyAgIGdfb2JqZWN0X3VucmVmKHRhcmdldDMpOworIH0KKysjZW5k aWYgIC8vICBkZWZpbmVkKEFUS18yMzApCisrCisrI2lmIGRlZmluZWQoQVRLX0NIRUNLX1ZFUlNJ T04pICYmIEFUS19DSEVDS19WRVJTSU9OKDIsIDMyLCAwKQorK3R5cGVkZWYgZ2Jvb2xlYW4gKCpT Y3JvbGxTdWJzdHJpbmdUb0Z1bmMpKEF0a1RleHQqIHRleHQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBzdGFydF9vZmZzZXQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBlbmRfb2Zmc2V0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0a1Njcm9sbFR5cGUgdHlwZSk7Cisr U2Nyb2xsU3Vic3RyaW5nVG9GdW5jIGdfc2Nyb2xsX3N1YnN0cmluZ190byA9IG51bGxwdHI7Cisr CisrTk9fU0FOSVRJWkUoImNmaS1pY2FsbCIpCisrZ2Jvb2xlYW4gU2Nyb2xsU3Vic3RyaW5nVG8o QXRrVGV4dCogdGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHN0YXJ0X29m ZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGVuZF9vZmZzZXQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgQXRrU2Nyb2xsVHlwZSB0eXBlKSB7CisrICBFWFBFQ1Rf TkUoZ19zY3JvbGxfc3Vic3RyaW5nX3RvLCBudWxscHRyKTsKKysgIHJldHVybiBnX3Njcm9sbF9z dWJzdHJpbmdfdG8odGV4dCwgc3RhcnRfb2Zmc2V0LCBlbmRfb2Zmc2V0LCB0eXBlKTsKKyt9Cisg CisgLy8gVE9ETyhjcmJ1Zy5jb20vNDA4NjY3MjgpOiBFbmFibGUgdGhpcyB0ZXN0LgorIElOX1BS T0NfQlJPV1NFUl9URVNUX0YoQWNjZXNzaWJpbGl0eUF1cmFMaW51eEJyb3dzZXJUZXN0LAorICAg ICAgICAgICAgICAgICAgICAgICAgRElTQUJMRURfVGVzdFNjcm9sbFN1YnN0cmluZ1RvKSB7Cisr ICAvLyBUaGVyZSdzIGEgY2hhbmNlIHdlIG1heSBiZSBjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVy c2lvbiBvZiBBVEsgYW5kIHRoZW4KKysgIC8vIHJ1biB3aXRoIGFuIG9sZGVyIG9uZSwgc28gd2Ug bmVlZCB0byBkbyBhIHJ1bnRpbWUgY2hlY2sgZm9yIHRoaXMgbWV0aG9kCisrICAvLyB0aGF0IGlz IGF2YWlsYWJsZSBpbiBBVEsgMi4zMiBpbnN0ZWFkIG9mIGxpbmtpbmcgZGlyZWN0bHkuCisrICBn X3Njcm9sbF9zdWJzdHJpbmdfdG8gPSByZWludGVycHJldF9jYXN0PFNjcm9sbFN1YnN0cmluZ1Rv RnVuYz4oCisrICAgICAgZGxzeW0oUlRMRF9ERUZBVUxULCAiYXRrX3RleHRfc2Nyb2xsX3N1YnN0 cmluZ190byIpKTsKKysgIGlmICghZ19zY3JvbGxfc3Vic3RyaW5nX3RvKSB7CisrICAgIExPRyhX QVJOSU5HKSA8PCAiU2tpcHBpbmcgIgorKyAgICAgICAgICAgICAgICAgICAgIkFjY2Vzc2liaWxp dHlBdXJhTGludXhCcm93c2VyVGVzdDo6VGVzdFN1YnN0cmluZ1Njcm9sbFRvIgorKyAgICAgICAg ICAgICAgICAgICAgIiBiZWNhdXNlIEFUSyB2ZXJzaW9uIDwgMi4zMiBkZXRlY3RlZC4iOworKyAg ICByZXR1cm47CisrICB9CisrCisgICBMb2FkSW5pdGlhbEFjY2Vzc2liaWxpdHlUcmVlRnJvbUh0 bWwoCisgICAgICAgUiJIVE1MKDwhRE9DVFlQRSBodG1sPgorICAgICAgIDxodG1sPgorQEAgLTEw ODQsOCArMTE0Miw3IEBAIElOX1BST0NfQlJPV1NFUl9URVNUX0YoQWNjZXNzaWJpbGl0eUF1cmEK KyAgIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25XYWl0ZXIgd2FpdGVyKAorICAgICAgIHNoZWxs KCktPndlYl9jb250ZW50cygpLCB1aTo6a0FYTW9kZUNvbXBsZXRlLAorICAgICAgIGF4Ojptb2pv bTo6RXZlbnQ6OmtTY3JvbGxQb3NpdGlvbkNoYW5nZWQpOworLSAgQVNTRVJUX1RSVUUoYXRrX3Rl eHRfc2Nyb2xsX3N1YnN0cmluZ190byhBVEtfVEVYVCh0YXJnZXQxKSwgMSwgMiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVRLX1NDUk9MTF9UT1BfRURHRSkp OworKyAgQVNTRVJUX1RSVUUoU2Nyb2xsU3Vic3RyaW5nVG8oQVRLX1RFWFQodGFyZ2V0MSksIDEs IDIsIEFUS19TQ1JPTExfVE9QX0VER0UpKTsKKyAgIEFTU0VSVF9UUlVFKHdhaXRlci5XYWl0Rm9y Tm90aWZpY2F0aW9uKCkpOworICAgaW50IHgsIHk7CisgICBhdGtfdGV4dF9nZXRfY2hhcmFjdGVy X2V4dGVudHMoQVRLX1RFWFQodGFyZ2V0MSksIDEsICZ4LCAmeSwgbnVsbHB0ciwgbnVsbHB0ciwK K0BAIC0xMDkzLDQwICsxMTUwLDM3IEBAIElOX1BST0NfQlJPV1NFUl9URVNUX0YoQWNjZXNzaWJp bGl0eUF1cmEKKyAgIEVYUEVDVF9FUSh5LCBkb2NfeSk7CisgICBFWFBFQ1RfTkUoeCwgZG9jX3gp OworIAorLSAgQVNTRVJUX1RSVUUoYXRrX3RleHRfc2Nyb2xsX3N1YnN0cmluZ190byhBVEtfVEVY VCh0YXJnZXQxKSwgMSwgMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQVRLX1NDUk9MTF9UT1BfTEVGVCkpOworKyAgQVNTRVJUX1RSVUUoU2Nyb2xsU3Vic3Ry aW5nVG8oQVRLX1RFWFQodGFyZ2V0MSksIDEsIDIsIEFUS19TQ1JPTExfVE9QX0xFRlQpKTsKKyAg IEFTU0VSVF9UUlVFKHdhaXRlci5XYWl0Rm9yTm90aWZpY2F0aW9uKCkpOworICAgYXRrX3RleHRf Z2V0X2NoYXJhY3Rlcl9leHRlbnRzKEFUS19URVhUKHRhcmdldDEpLCAxLCAmeCwgJnksIG51bGxw dHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVRLX1hZX1ND UkVFTik7CisgICBFWFBFQ1RfRVEoeSwgZG9jX3kpOworICAgRVhQRUNUX0VRKHgsIGRvY194KTsK KyAKKy0gIEFTU0VSVF9UUlVFKGF0a190ZXh0X3Njcm9sbF9zdWJzdHJpbmdfdG8oQVRLX1RFWFQo dGFyZ2V0MSksIDEsIDIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFUS19TQ1JPTExfQk9UVE9NX0VER0UpKTsKKysgIEFTU0VSVF9UUlVFKAorKyAgICAgIFNj cm9sbFN1YnN0cmluZ1RvKEFUS19URVhUKHRhcmdldDEpLCAxLCAyLCBBVEtfU0NST0xMX0JPVFRP TV9FREdFKSk7CisgICBBU1NFUlRfVFJVRSh3YWl0ZXIuV2FpdEZvck5vdGlmaWNhdGlvbigpKTsK KyAgIGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhBVEtfVEVYVCh0YXJnZXQxKSwgMSwg JngsICZ5LCBudWxscHRyLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFUS19YWV9TQ1JFRU4pOworICAgRVhQRUNUX05FKHksIGRvY195KTsKKyAgIEVYUEVDVF9F USh4LCBkb2NfeCk7CisgCistICBBU1NFUlRfVFJVRShhdGtfdGV4dF9zY3JvbGxfc3Vic3RyaW5n X3RvKEFUS19URVhUKHRhcmdldDEpLCAxLCAyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBVEtfU0NST0xMX1JJR0hUX0VER0UpKTsKKysgIEFTU0VSVF9UUlVF KAorKyAgICAgIFNjcm9sbFN1YnN0cmluZ1RvKEFUS19URVhUKHRhcmdldDEpLCAxLCAyLCBBVEtf U0NST0xMX1JJR0hUX0VER0UpKTsKKyAgIEFTU0VSVF9UUlVFKHdhaXRlci5XYWl0Rm9yTm90aWZp Y2F0aW9uKCkpOworICAgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9leHRlbnRzKEFUS19URVhUKHRh cmdldDEpLCAxLCAmeCwgJnksIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQVRLX1hZX1NDUkVFTik7CisgICBFWFBFQ1RfTkUoeSwgZG9jX3kpOwor ICAgRVhQRUNUX05FKHgsIGRvY194KTsKKyAKKy0gIEFTU0VSVF9UUlVFKGF0a190ZXh0X3Njcm9s bF9zdWJzdHJpbmdfdG8oQVRLX1RFWFQodGFyZ2V0MSksIDEsIDIsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUS19TQ1JPTExfTEVGVF9FREdFKSk7CisrICBB U1NFUlRfVFJVRShTY3JvbGxTdWJzdHJpbmdUbyhBVEtfVEVYVCh0YXJnZXQxKSwgMSwgMiwgQVRL X1NDUk9MTF9MRUZUX0VER0UpKTsKKyAgIEFTU0VSVF9UUlVFKHdhaXRlci5XYWl0Rm9yTm90aWZp Y2F0aW9uKCkpOworICAgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9leHRlbnRzKEFUS19URVhUKHRh cmdldDEpLCAxLCAmeCwgJnksIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQVRLX1hZX1NDUkVFTik7CisgICBFWFBFQ1RfTkUoeSwgZG9jX3kpOwor ICAgRVhQRUNUX0VRKHgsIGRvY194KTsKKyAKKy0gIEFTU0VSVF9UUlVFKGF0a190ZXh0X3Njcm9s bF9zdWJzdHJpbmdfdG8oQVRLX1RFWFQodGFyZ2V0MSksIDEsIDIsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUS19TQ1JPTExfVE9QX0xFRlQpKTsKKysgIEFT U0VSVF9UUlVFKFNjcm9sbFN1YnN0cmluZ1RvKEFUS19URVhUKHRhcmdldDEpLCAxLCAyLCBBVEtf U0NST0xMX1RPUF9MRUZUKSk7CisgICBBU1NFUlRfVFJVRSh3YWl0ZXIuV2FpdEZvck5vdGlmaWNh dGlvbigpKTsKKyAgIGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhBVEtfVEVYVCh0YXJn ZXQxKSwgMSwgJngsICZ5LCBudWxscHRyLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFUS19YWV9TQ1JFRU4pOworQEAgLTExMzYsOSArMTE5MCw0MiBAQCBJTl9Q Uk9DX0JST1dTRVJfVEVTVF9GKEFjY2Vzc2liaWxpdHlBdXJhCisgICBnX29iamVjdF91bnJlZih0 YXJnZXQxKTsKKyB9CisgCisrdHlwZWRlZiBnYm9vbGVhbiAoKlNjcm9sbFN1YnN0cmluZ1RvUG9p bnRGdW5jKShBdGtUZXh0KiB0ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2ludCBzdGFydF9vZmZzZXQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGVuZF9vZmZzZXQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdGtDb29yZFR5cGUgY29vcmRfdHlw ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQg eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQg eSk7CisrU2Nyb2xsU3Vic3RyaW5nVG9Qb2ludEZ1bmMgZ19zY3JvbGxfc3Vic3RyaW5nX3RvX3Bv aW50ID0gbnVsbHB0cjsKKysKKytOT19TQU5JVElaRSgiY2ZpLWljYWxsIikKKytnYm9vbGVhbiBT Y3JvbGxTdWJzdHJpbmdUb1BvaW50KEF0a1RleHQqIHRleHQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnaW50IHN0YXJ0X29mZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdpbnQgZW5kX29mZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEF0a0Nvb3JkVHlwZSBjb29yZF90eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2ludCB4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCB5KSB7 CisrICBFWFBFQ1RfTkUoZ19zY3JvbGxfc3Vic3RyaW5nX3RvX3BvaW50LCBudWxscHRyKTsKKysg IHJldHVybiBnX3Njcm9sbF9zdWJzdHJpbmdfdG9fcG9pbnQodGV4dCwgc3RhcnRfb2Zmc2V0LCBl bmRfb2Zmc2V0LCBjb29yZF90eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4LCB5KTsKKyt9CisrCisgLy8gVE9ETyhjcmJ1Zy5jb20vNDA4NjY3MjgpOiBFbmFibGUg dGhpcyB0ZXN0LgorIElOX1BST0NfQlJPV1NFUl9URVNUX0YoQWNjZXNzaWJpbGl0eUF1cmFMaW51 eEJyb3dzZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgRElTQUJMRURfVGVzdFNjcm9s bFN1YnN0cmluZ1RvUG9pbnQpIHsKKysgIC8vIFRoZXJlJ3MgYSBjaGFuY2Ugd2UgbWF5IGJlIGNv bXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEFUSyBhbmQgdGhlbgorKyAgLy8gcnVuIHdp dGggYW4gb2xkZXIgb25lLCBzbyB3ZSBuZWVkIHRvIGRvIGEgcnVudGltZSBjaGVjayBmb3IgdGhp cyBtZXRob2QKKysgIC8vIHRoYXQgaXMgYXZhaWxhYmxlIGluIEFUSyAyLjMwIGluc3RlYWQgb2Yg bGlua2luZyBkaXJlY3RseS4KKysgIGdfc2Nyb2xsX3N1YnN0cmluZ190b19wb2ludCA9IHJlaW50 ZXJwcmV0X2Nhc3Q8U2Nyb2xsU3Vic3RyaW5nVG9Qb2ludEZ1bmM+KAorKyAgICAgIGRsc3ltKFJU TERfREVGQVVMVCwgImF0a190ZXh0X3Njcm9sbF9zdWJzdHJpbmdfdG9fcG9pbnQiKSk7CisrICBp ZiAoIWdfc2Nyb2xsX3N1YnN0cmluZ190b19wb2ludCkgeworKyAgICBMT0coV0FSTklORykKKysg ICAgICAgIDw8ICJTa2lwcGluZyAiCisrICAgICAgICAgICAiQWNjZXNzaWJpbGl0eUF1cmFMaW51 eEJyb3dzZXJUZXN0OjpUZXN0U2Nyb2xsU3Vic3RyaW5nVG9Qb2ludCIKKysgICAgICAgICAgICIg YmVjYXVzZSBBVEsgdmVyc2lvbiA8IDIuMzAgZGV0ZWN0ZWQuIjsKKysgICAgcmV0dXJuOworKyAg fQorKworICAgTG9hZFNhbXBsZVBhcmFncmFwaEluU2Nyb2xsYWJsZURvY3VtZW50KCk7CisgICBB dGtUZXh0KiBhdGtfdGV4dCA9IEdldFNhbXBsZVBhcmFncmFwaCgpOworICAgQVNTRVJUX1RSVUUo QVRLX0lTX0NPTVBPTkVOVChhdGtfdGV4dCkpOworQEAgLTExNTEsNyArMTIzOCw3IEBAIElOX1BS T0NfQlJPV1NFUl9URVNUX0YoQWNjZXNzaWJpbGl0eUF1cmEKKyAgIEFjY2Vzc2liaWxpdHlOb3Rp ZmljYXRpb25XYWl0ZXIgbG9jYXRpb25fY2hhbmdlZF93YWl0ZXIoCisgICAgICAgc2hlbGwoKS0+ d2ViX2NvbnRlbnRzKCksIHVpOjprQVhNb2RlQ29tcGxldGUsCisgICAgICAgYXg6Om1vam9tOjpF dmVudDo6a0xvY2F0aW9uQ2hhbmdlZCk7CistICBhdGtfdGV4dF9zY3JvbGxfc3Vic3RyaW5nX3Rv X3BvaW50KGF0a190ZXh0LCAxLCAyLCBBVEtfWFlfUEFSRU5ULCAwLCAwKTsKKysgIFNjcm9sbFN1 YnN0cmluZ1RvUG9pbnQoYXRrX3RleHQsIDEsIDIsIEFUS19YWV9QQVJFTlQsIDAsIDApOworICAg QVNTRVJUX1RSVUUobG9jYXRpb25fY2hhbmdlZF93YWl0ZXIuV2FpdEZvck5vdGlmaWNhdGlvbigp KTsKKyAKKyAgIGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhhdGtfdGV4dCwgMSwgJngs ICZ5LCBudWxscHRyLCBudWxscHRyLAorQEAgLTExNjAsMjIgKzEyNDcsMjAgQEAgSU5fUFJPQ19C Uk9XU0VSX1RFU1RfRihBY2Nlc3NpYmlsaXR5QXVyYQorICAgRVhQRUNUX0dUKHByZXZfeSwgeSk7 CisgCisgICBjb25zdGV4cHIgaW50IGtTY3JvbGxUb1kgPSAwOworLSAgYXRrX3RleHRfc2Nyb2xs X3N1YnN0cmluZ190b19wb2ludChhdGtfdGV4dCwgMSwgMiwgQVRLX1hZX1NDUkVFTiwgMCwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Njcm9sbFRvWSk7CisrICBTY3Jv bGxTdWJzdHJpbmdUb1BvaW50KGF0a190ZXh0LCAxLCAyLCBBVEtfWFlfU0NSRUVOLCAwLCBrU2Ny b2xsVG9ZKTsKKyAgIEFTU0VSVF9UUlVFKGxvY2F0aW9uX2NoYW5nZWRfd2FpdGVyLldhaXRGb3JO b3RpZmljYXRpb24oKSk7CisgICBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2V4dGVudHMoYXRrX3Rl eHQsIDEsICZ4LCAmeSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBVEtfWFlfU0NSRUVOKTsKKyAgIEVYUEVDVF9FUShrU2Nyb2xsVG9ZLCB5KTsK KyAKKyAgIGNvbnN0ZXhwciBpbnQga1Njcm9sbFRvWV8yID0gMjQzOworLSAgYXRrX3RleHRfc2Ny b2xsX3N1YnN0cmluZ190b19wb2ludChhdGtfdGV4dCwgMSwgMiwgQVRLX1hZX1NDUkVFTiwgMCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Njcm9sbFRvWV8yKTsKKysg IFNjcm9sbFN1YnN0cmluZ1RvUG9pbnQoYXRrX3RleHQsIDEsIDIsIEFUS19YWV9TQ1JFRU4sIDAs IGtTY3JvbGxUb1lfMik7CisgICBBU1NFUlRfVFJVRShsb2NhdGlvbl9jaGFuZ2VkX3dhaXRlci5X YWl0Rm9yTm90aWZpY2F0aW9uKCkpOworICAgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9leHRlbnRz KGF0a190ZXh0LCAxLCAmeCwgJnksIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVRLX1hZX1NDUkVFTik7CisgICBFWFBFQ1RfRVEoa1Njcm9sbFRv WV8yLCB5KTsKKyAKKy0gIGF0a190ZXh0X3Njcm9sbF9zdWJzdHJpbmdfdG9fcG9pbnQoYXRrX3Rl eHQsIDEsIDIsIEFUS19YWV9TQ1JFRU4sIDAsIDEyOSk7CisrICBTY3JvbGxTdWJzdHJpbmdUb1Bv aW50KGF0a190ZXh0LCAxLCAyLCBBVEtfWFlfU0NSRUVOLCAwLCAxMjkpOworICAgQVNTRVJUX1RS VUUobG9jYXRpb25fY2hhbmdlZF93YWl0ZXIuV2FpdEZvck5vdGlmaWNhdGlvbigpKTsKKyAgIGF0 a190ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhhdGtfdGV4dCwgMSwgJngsICZ5LCBudWxscHRy LCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUS19YWV9TQ1JF RU4pOworQEAgLTExOTEsNiArMTI3Niw3IEBAIElOX1BST0NfQlJPV1NFUl9URVNUX0YoQWNjZXNz aWJpbGl0eUF1cmEKKyAKKyAgIGdfb2JqZWN0X3VucmVmKGF0a190ZXh0KTsKKyB9CisrI2VuZGlm ICAvLyAgZGVmaW5lZChBVEtfQ0hFQ0tfVkVSU0lPTikgJiYgQVRLX0NIRUNLX1ZFUlNJT04oMiwg MzIsIDApCisgCisgI2lmIEJVSUxERkxBRyhJU19MSU5VWCkgfHwgQlVJTERGTEFHKElTX0NIUk9N RU9TKQorIC8vIEZsYWt5IG9uIGNyYnVnLmNvbS8xMDI2MTQ5CitkaWZmIC11cCBjaHJvbWl1bS0x MjkuMC42NjY4LjU4L3VpL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0vYXhfcGxhdGZvcm1fbm9kZV9h dXJhbGludXguY2MubWUgY2hyb21pdW0tMTI5LjAuNjY2OC41OC91aS9hY2Nlc3NpYmlsaXR5L3Bs YXRmb3JtL2F4X3BsYXRmb3JtX25vZGVfYXVyYWxpbnV4LmNjCistLS0gY2hyb21pdW0tMTI5LjAu NjY2OC41OC91aS9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtL2F4X3BsYXRmb3JtX25vZGVfYXVyYWxp bnV4LmNjLm1lCTIwMjQtMDktMTggMTk6MjY6MjYuMDQwODIxMDE3ICswMjAwCisrKysgY2hyb21p dW0tMTI5LjAuNjY2OC41OC91aS9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtL2F4X3BsYXRmb3JtX25v ZGVfYXVyYWxpbnV4LmNjCTIwMjQtMDktMTggMTk6Mjg6MDYuMjIwNzAwNDkzICswMjAwCitAQCAt Miw3ICsyLDYgQEAKKyAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KKyAKKy0jaW5jbHVkZSAiYmFzZS92ZXJzaW9uLmgiCisgI2lmZGVmIFVOU0FGRV9CVUZG RVJTX0JVSUxECisgLy8gVE9ETyhjcmJ1Zy5jb20vNDAyODU4MjQpOiBSZW1vdmUgdGhpcyBhbmQg Y29udmVydCBjb2RlIHRvIHNhZmVyIGNvbnN0cnVjdHMuCisgI3ByYWdtYSBhbGxvd191bnNhZmVf YnVmZmVycworQEAgLTEwLDYgKzksNyBAQAorIAorICNpbmNsdWRlICJ1aS9hY2Nlc3NpYmlsaXR5 L3BsYXRmb3JtL2F4X3BsYXRmb3JtX25vZGVfYXVyYWxpbnV4LmgiCisgCisrI2luY2x1ZGUgPGRs ZmNuLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorICNpbmNsdWRlIDxhbGdvcml0aG0+CitA QCAtNDcsMTQgKzQ3LDMzIEBACisgI2luY2x1ZGUgInVpL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0v Y2hpbGRfaXRlcmF0b3IuaCIKKyAjaW5jbHVkZSAidWkvZ2Z4L2dlb21ldHJ5L3JlY3RfY29udmVy c2lvbnMuaCIKKyAKKy0vLyBGdW5jdGlvbiBhdmFpbGFiaWxpdHkgY2FuIGJlIHRlc3RlZCBieSBj aGVja2luZyB3aGV0aGVyIGl0cyBhZGRyZXNzIGlzIG5vdAorLS8vIG51bGxwdHIuCistI2RlZmlu ZSBXRUFLX0FUS19GTih4KSBleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHdlYWspKSBkZWNsdHlw ZSh4KSB4CistCistLy8gVE9ETyhodHRwczovL2NyYnVnLmNvbS80MDU0OTQyNCk6IFRoaXMgbWF5 IGJlIHJlbW92ZWQgd2hlbiBzdXBwb3J0IGZvcgorLS8vIFVidW50dSAxOC4wNCBpcyBkcm9wcGVk LgorLVdFQUtfQVRLX0ZOKGF0a19jb21wb25lbnRfc2Nyb2xsX3RvX3BvaW50KTsKKy1XRUFLX0FU S19GTihhdGtfdGV4dF9zY3JvbGxfc3Vic3RyaW5nX3RvX3BvaW50KTsKKysjaWYgZGVmaW5lZChB VEtfQ0hFQ0tfVkVSU0lPTikgJiYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTAsIDApCisrI2RlZmlu ZSBBVEtfMjEwCisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoQVRLX0NIRUNLX1ZFUlNJT04pICYm IEFUS19DSEVDS19WRVJTSU9OKDIsIDEyLCAwKQorKyNkZWZpbmUgQVRLXzIxMgorKyNlbmRpZgor KworKyNpZiBkZWZpbmVkKEFUS19DSEVDS19WRVJTSU9OKSAmJiBBVEtfQ0hFQ0tfVkVSU0lPTigy LCAxNiwgMCkKKysjZGVmaW5lIEFUS18yMTYKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChBVEtf Q0hFQ0tfVkVSU0lPTikgJiYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMjYsIDApCisrI2RlZmluZSBB VEtfMjI2CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoQVRLX0NIRUNLX1ZFUlNJT04pICYmIEFU S19DSEVDS19WRVJTSU9OKDIsIDMwLCAwKQorKyNkZWZpbmUgQVRLXzIzMAorKyNlbmRpZgorKwor KyNpZiBkZWZpbmVkKEFUS19DSEVDS19WRVJTSU9OKSAmJiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAz MiwgMCkKKysjZGVmaW5lIEFUS18yMzIKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChBVEtfQ0hF Q0tfVkVSU0lPTikgJiYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMzQsIDApCisrI2RlZmluZSBBVEtf MjM0CisrI2VuZGlmCisgCisgbmFtZXNwYWNlIHVpIHsKKyAKK0BAIC0xNDYsMTEgKzE2NSwyOSBA QCBBdGtPYmplY3QqIGdfYWN0aXZlX3RvcF9sZXZlbF9mcmFtZSA9IG51CisgCisgQXRrT2JqZWN0 KiBnX2FjdGl2ZV92aWV3c19kaWFsb2cgPSBudWxscHRyOworIAorKyNpZiBkZWZpbmVkKEFUS18y MTYpCisgY29uc3RleHByIEF0a1JvbGUga1N0YXRpY1JvbGUgPSBBVEtfUk9MRV9TVEFUSUM7Cisg Y29uc3RleHByIEF0a1JvbGUga1N1YnNjcmlwdFJvbGUgPSBBVEtfUk9MRV9TVUJTQ1JJUFQ7Cisg Y29uc3RleHByIEF0a1JvbGUga1N1cGVyc2NyaXB0Um9sZSA9IEFUS19ST0xFX1NVUEVSU0NSSVBU OworKyNlbHNlCisrY29uc3RleHByIEF0a1JvbGUga1N0YXRpY1JvbGUgPSBBVEtfUk9MRV9URVhU OworK2NvbnN0ZXhwciBBdGtSb2xlIGtTdWJzY3JpcHRSb2xlID0gQVRLX1JPTEVfVEVYVDsKKytj b25zdGV4cHIgQXRrUm9sZSBrU3VwZXJzY3JpcHRSb2xlID0gQVRLX1JPTEVfVEVYVDsKKysjZW5k aWYKKyAKKysjaWYgZGVmaW5lZChBVEtfMjI2KQorIGNvbnN0ZXhwciBBdGtSb2xlIGtBdGtGb290 bm90ZVJvbGUgPSBBVEtfUk9MRV9GT09UTk9URTsKKysjZWxzZQorK2NvbnN0ZXhwciBBdGtSb2xl IGtBdGtGb290bm90ZVJvbGUgPSBBVEtfUk9MRV9MSVNUX0lURU07CisrI2VuZGlmCisrCisrI2lm IGRlZmluZWQoQVRLXzIzNCkKKytjb25zdGV4cHIgQXRrUm9sZSBrQXRrUm9sZUNvbnRlbnREZWxl dGlvbiA9IEFUS19ST0xFX0NPTlRFTlRfREVMRVRJT047CisrY29uc3RleHByIEF0a1JvbGUga0F0 a1JvbGVDb250ZW50SW5zZXJ0aW9uID0gQVRLX1JPTEVfQ09OVEVOVF9JTlNFUlRJT047CisrI2Vs c2UKKytjb25zdGV4cHIgQXRrUm9sZSBrQXRrUm9sZUNvbnRlbnREZWxldGlvbiA9IEFUS19ST0xF X1NFQ1RJT047CisrY29uc3RleHByIEF0a1JvbGUga0F0a1JvbGVDb250ZW50SW5zZXJ0aW9uID0g QVRLX1JPTEVfU0VDVElPTjsKKysjZW5kaWYKKyAKKyB1c2luZyBHZXRUeXBlRnVuYyA9IEdUeXBl ICgqKSgpOworIHVzaW5nIEdldENvbHVtbkhlYWRlckNlbGxzRnVuYyA9IEdQdHJBcnJheSogKCop KEF0a1RhYmxlQ2VsbCogY2VsbCk7CitAQCAtMTYxLDYgKzE5OCwxMSBAQCB1c2luZyBHZXRSb3dD b2x1bW5TcGFuRnVuYyA9IGJvb2wgKCopKEF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnaW50KiByb3dfc3BhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdpbnQqIGNvbF9zcGFuKTsKKyAKKytzdGF0aWMgR2V0VHlwZUZ1bmMgZ19hdGtf dGFibGVfY2VsbF9nZXRfdHlwZTsKKytzdGF0aWMgR2V0Q29sdW1uSGVhZGVyQ2VsbHNGdW5jIGdf YXRrX3RhYmxlX2NlbGxfZ2V0X2NvbHVtbl9oZWFkZXJfY2VsbHM7Cisrc3RhdGljIEdldFJvd0hl YWRlckNlbGxzRnVuYyBnX2F0a190YWJsZV9jZWxsX2dldF9yb3dfaGVhZGVyX2NlbGxzOworK3N0 YXRpYyBHZXRSb3dDb2x1bW5TcGFuRnVuYyBnX2F0a190YWJsZV9jZWxsX2dldF9yb3dfY29sdW1u X3NwYW47CisrCisgLy8gVGhlIEFUSyBBUEkgb2Z0ZW4gcmVxdWlyZXMgcG9pbnRlcnMgdG8gYmUg dXNlZCBhcyBvdXQgYXJndW1lbnRzLCB3aGlsZQorIC8vIGFsbG93aW5nIGZvciB0aG9zZSBwb2lu dGVycyB0byBiZSBudWxsIGlmIHRoZSBjYWxsZXIgaXMgbm90IGludGVyZXN0ZWQgaW4KKyAvLyB0 aGUgdmFsdWUuIFRoaXMgZnVuY3Rpb24gaXMgYSBzaW1wbGVyIGhlbHBlciB0byBhdm9pZCBjb250 aW51YWxseSBjaGVja2luZworQEAgLTE3MCwzNSArMjEyLDE3IEBAIHZvaWQgU2V0SW50UG9pbnRl clZhbHVlSWZOb3ROdWxsKGludCogcG8KKyAgICAgKnBvaW50ZXIgPSB2YWx1ZTsKKyB9CisgCist Ly8gVE9ETyhodHRwczovL2NyYnVnLmNvbS80MDU0OTQyNCk6IFRoaXMgbWF5IGJlIHJlbW92ZWQg d2hlbiBzdXBwb3J0IGZvcgorLS8vIFVidW50dSAxOC4wNCBpcyBkcm9wcGVkLgorKyNpZiBkZWZp bmVkKEFUS18yMzApCisgYm9vbCBTdXBwb3J0c0F0a0NvbXBvbmVudFNjcm9sbGluZ0ludGVyZmFj ZSgpIHsKKy0gIHJldHVybiBhdGtfY29tcG9uZW50X3Njcm9sbF90b19wb2ludDsKKysgIHJldHVy biBkbHN5bShSVExEX0RFRkFVTFQsICJhdGtfY29tcG9uZW50X3Njcm9sbF90b19wb2ludCIpOwor IH0KKysjZW5kaWYKKyAKKy0vLyBUT0RPKGh0dHBzOi8vY3JidWcuY29tLzQwNTQ5NDI0KTogVGhp cyBtYXkgYmUgcmVtb3ZlZCB3aGVuIHN1cHBvcnQgZm9yCistLy8gVWJ1bnR1IDE4LjA0IGlzIGRy b3BwZWQuCisrI2lmIGRlZmluZWQoQVRLXzIzMikKKyBib29sIFN1cHBvcnRzQXRrVGV4dFNjcm9s bGluZ0ludGVyZmFjZSgpIHsKKy0gIHJldHVybiBhdGtfdGV4dF9zY3JvbGxfc3Vic3RyaW5nX3Rv X3BvaW50OworLX0KKy0KKy0vLyBUT0RPKGh0dHBzOi8vY3JidWcuY29tLzQwNTQ5NDI0KTogVGhp cyBtYXkgYmUgcmVtb3ZlZCB3aGVuIHN1cHBvcnQgZm9yCistLy8gVWJ1bnR1IDE4LjA0IGlzIGRy b3BwZWQuCistQXRrUm9sZSBHZXRBdGtSb2xlQ29udGVudERlbGV0aW9uKCkgeworLSAgYmFzZTo6 VmVyc2lvbiBhdGtfdmVyc2lvbihhdGtfZ2V0X3ZlcnNpb24oKSk7CistICByZXR1cm4gYXRrX3Zl cnNpb24uQ29tcGFyZVRvKGJhc2U6OlZlcnNpb24oIjIuMzQuMCIpKSA+PSAwCistICAgICAgICAg ICAgID8gQVRLX1JPTEVfQ09OVEVOVF9ERUxFVElPTgorLSAgICAgICAgICAgICA6IEFUS19ST0xF X1NFQ1RJT047CistfQorLQorLS8vIFRPRE8oaHR0cHM6Ly9jcmJ1Zy5jb20vNDA1NDk0MjQpOiBU aGlzIG1heSBiZSByZW1vdmVkIHdoZW4gc3VwcG9ydCBmb3IKKy0vLyBVYnVudHUgMTguMDQgaXMg ZHJvcHBlZC4KKy1BdGtSb2xlIEdldEF0a1JvbGVDb250ZW50SW5zZXJ0aW9uKCkgeworLSAgYmFz ZTo6VmVyc2lvbiBhdGtfdmVyc2lvbihhdGtfZ2V0X3ZlcnNpb24oKSk7CistICByZXR1cm4gYXRr X3ZlcnNpb24uQ29tcGFyZVRvKGJhc2U6OlZlcnNpb24oIjIuMzQuMCIpKSA+PSAwCistICAgICAg ICAgICAgID8gQVRLX1JPTEVfQ09OVEVOVF9JTlNFUlRJT04KKy0gICAgICAgICAgICAgOiBBVEtf Uk9MRV9TRUNUSU9OOworKyAgcmV0dXJuIGRsc3ltKFJUTERfREVGQVVMVCwgImF0a190ZXh0X3Nj cm9sbF9zdWJzdHJpbmdfdG9fcG9pbnQiKTsKKyB9CisrI2VuZGlmCisgCisgQXRrT2JqZWN0KiBG aW5kQXRrT2JqZWN0UGFyZW50RnJhbWUoQXRrT2JqZWN0KiBhdGtfb2JqZWN0KSB7CisgICBBWFBs YXRmb3JtTm9kZUF1cmFMaW51eCogbm9kZSA9CitAQCAtMjk3LDEwICszMjEsMTIgQEAgQVhDb29y ZGluYXRlU3lzdGVtIEF0a0Nvb3JkVHlwZVRvQVhDb29yZAorICAgICAgIHJldHVybiBBWENvb3Jk aW5hdGVTeXN0ZW06OmtTY3JlZW5ESVBzOworICAgICBjYXNlIEFUS19YWV9XSU5ET1c6CisgICAg ICAgcmV0dXJuIEFYQ29vcmRpbmF0ZVN5c3RlbTo6a1Jvb3RGcmFtZTsKKysjaWYgZGVmaW5lZChB VEtfMjMwKQorICAgICBjYXNlIEFUS19YWV9QQVJFTlQ6CisgICAgICAgLy8gQVhDb29yZGluYXRl U3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgcGFyZW50IGNvb3JkaW5hdGVzLgorICAgICAgIE5PVElN UExFTUVOVEVEKCk7CisgICAgICAgcmV0dXJuIEFYQ29vcmRpbmF0ZVN5c3RlbTo6a0ZyYW1lOwor KyNlbmRpZgorICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiBBWENvb3JkaW5hdGVTeXN0ZW06 OmtTY3JlZW5ESVBzOworICAgfQorQEAgLTUxMyw2ICs1MzksNyBAQCBnYm9vbGVhbiBHcmFiRm9j dXMoQXRrQ29tcG9uZW50KiBhdGtfY29tCisgICByZXR1cm4gb2JqLT5HcmFiRm9jdXMoKTsKKyB9 CisgCisrI2lmIGRlZmluZWQoQVRLXzIzMCkKKyBnYm9vbGVhbiBTY3JvbGxUbyhBdGtDb21wb25l bnQqIGF0a19jb21wb25lbnQsIEF0a1Njcm9sbFR5cGUgc2Nyb2xsX3R5cGUpIHsKKyAgIGdfcmV0 dXJuX3ZhbF9pZl9mYWlsKEFUS19JU19DT01QT05FTlQoYXRrX2NvbXBvbmVudCksIEZBTFNFKTsK KyAKK0BAIC01MzksNiArNTY2LDcgQEAgZ2Jvb2xlYW4gU2Nyb2xsVG9Qb2ludChBdGtDb21wb25l bnQqIGF0aworICAgb2JqLT5TY3JvbGxUb1BvaW50KGF0a19jb29yZF90eXBlLCB4LCB5KTsKKyAg IHJldHVybiBUUlVFOworIH0KKysjZW5kaWYKKyAKKyB2b2lkIEluaXQoQXRrQ29tcG9uZW50SWZh Y2UqIGlmYWNlKSB7CisgICBpZmFjZS0+Z2V0X2V4dGVudHMgPSBHZXRFeHRlbnRzOworQEAgLTU0 NiwxMCArNTc0LDEyIEBAIHZvaWQgSW5pdChBdGtDb21wb25lbnRJZmFjZSogaWZhY2UpIHsKKyAg IGlmYWNlLT5nZXRfc2l6ZSA9IEdldFNpemU7CisgICBpZmFjZS0+cmVmX2FjY2Vzc2libGVfYXRf cG9pbnQgPSBSZWZBY2Nlc2libGVBdFBvaW50OworICAgaWZhY2UtPmdyYWJfZm9jdXMgPSBHcmFi Rm9jdXM7CisrI2lmIGRlZmluZWQoQVRLXzIzMCkKKyAgIGlmIChTdXBwb3J0c0F0a0NvbXBvbmVu dFNjcm9sbGluZ0ludGVyZmFjZSgpKSB7CisgICAgIGlmYWNlLT5zY3JvbGxfdG8gPSBTY3JvbGxU bzsKKyAgICAgaWZhY2UtPnNjcm9sbF90b19wb2ludCA9IFNjcm9sbFRvUG9pbnQ7CisgICB9Cisr I2VuZGlmCisgfQorIAorIGNvbnN0IEdJbnRlcmZhY2VJbmZvIEluZm8gPSB7cmVpbnRlcnByZXRf Y2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KEluaXQpLAorQEAgLTEyMzIsNiArMTI2Miw3IEBAIGdi b29sZWFuIEFkZFNlbGVjdGlvbihBdGtUZXh0KiBhdGtfdGV4dCwKKyAgIHJldHVybiBTZXRTZWxl Y3Rpb24oYXRrX3RleHQsIDAsIHN0YXJ0X29mZnNldCwgZW5kX29mZnNldCk7CisgfQorIAorKyNp ZiBkZWZpbmVkKEFUS18yMTApCisgY2hhciogR2V0U3RyaW5nQXRPZmZzZXQoQXRrVGV4dCogYXRr X3RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBBdGtUZXh0R3JhbnVsYXJpdHkgYXRrX2dyYW51bGFyaXR5LAorQEAgLTEy NDYsNyArMTI3Nyw5IEBAIGNoYXIqIEdldFN0cmluZ0F0T2Zmc2V0KEF0a1RleHQqIGF0a190ZXgK KyAgIHJldHVybiBHZXRUZXh0V2l0aEJvdW5kYXJ5VHlwZShhdGtfdGV4dCwgb2Zmc2V0LCBib3Vu ZGFyeSwgc3RhcnRfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu ZF9vZmZzZXQpOworIH0KKysjZW5kaWYKKyAKKysjaWYgZGVmaW5lZChBVEtfMjMwKQorIGdmeDo6 UmVjdCBHZXRVbmNsaXBwZWRQYXJlbnRIeXBlcnRleHRSYW5nZUJvdW5kc1JlY3QoCisgICAgIEFY UGxhdGZvcm1Ob2RlRGVsZWdhdGUqIGF4X3BsYXRmb3JtX25vZGVfZGVsZWdhdGUsCisgICAgIGNv bnN0IGludCBzdGFydF9vZmZzZXQsCitAQCAtMTI3MCw2ICsxMzAzLDcgQEAgZ2Z4OjpSZWN0IEdl dFVuY2xpcHBlZFBhcmVudEh5cGVydGV4dFJhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQVhDbGlwcGluZ0JlaGF2aW9yOjprQ2xpcHBlZCkKKyAgICAgICAgICAgICAgLk9mZnNldEZy b21PcmlnaW4oKTsKKyB9CisrI2VuZGlmCisgCisgdm9pZCBHZXRDaGFyYWN0ZXJFeHRlbnRzKEF0 a1RleHQqIGF0a190ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LAor QEAgLTEyODUsMTAgKzEzMTksMTIgQEAgdm9pZCBHZXRDaGFyYWN0ZXJFeHRlbnRzKEF0a1RleHQq IGF0a190ZQorICAgICAgIEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4OjpGcm9tQXRrT2JqZWN0KEFU S19PQkpFQ1QoYXRrX3RleHQpKTsKKyAgIGlmIChvYmopIHsKKyAgICAgc3dpdGNoIChjb29yZGlu YXRlX3R5cGUpIHsKKysjaWYgZGVmaW5lZChBVEtfMjMwKQorICAgICAgIGNhc2UgQVRLX1hZX1BB UkVOVDoKKyAgICAgICAgIHJlY3QgPSBHZXRVbmNsaXBwZWRQYXJlbnRIeXBlcnRleHRSYW5nZUJv dW5kc1JlY3Qob2JqLT5HZXREZWxlZ2F0ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIG9mZnNldCArIDEpOworICAg ICAgICAgYnJlYWs7CisrI2VuZGlmCisgICAgICAgZGVmYXVsdDoKKyAgICAgICAgIHJlY3QgPSBv YmotPkdldERlbGVnYXRlKCktPkdldEh5cGVydGV4dFJhbmdlQm91bmRzUmVjdCgKKyAgICAgICAg ICAgICBvYmotPlVuaWNvZGVUb1VURjE2T2Zmc2V0SW5UZXh0KG9mZnNldCksCitAQCAtMTMyNCwx MCArMTM2MCwxMiBAQCB2b2lkIEdldFJhbmdlRXh0ZW50cyhBdGtUZXh0KiBhdGtfdGV4dCwKKyAg ICAgICBBWFBsYXRmb3JtTm9kZUF1cmFMaW51eDo6RnJvbUF0a09iamVjdChBVEtfT0JKRUNUKGF0 a190ZXh0KSk7CisgICBpZiAob2JqKSB7CisgICAgIHN3aXRjaCAoY29vcmRpbmF0ZV90eXBlKSB7 CisrI2lmIGRlZmluZWQoQVRLXzIzMCkKKyAgICAgICBjYXNlIEFUS19YWV9QQVJFTlQ6CisgICAg ICAgICByZWN0ID0gR2V0VW5jbGlwcGVkUGFyZW50SHlwZXJ0ZXh0UmFuZ2VCb3VuZHNSZWN0KAor ICAgICAgICAgICAgIG9iai0+R2V0RGVsZWdhdGUoKSwgc3RhcnRfb2Zmc2V0LCBlbmRfb2Zmc2V0 KTsKKyAgICAgICAgIGJyZWFrOworKyNlbmRpZgorICAgICAgIGRlZmF1bHQ6CisgICAgICAgICBy ZWN0ID0gb2JqLT5HZXREZWxlZ2F0ZSgpLT5HZXRIeXBlcnRleHRSYW5nZUJvdW5kc1JlY3QoCisg ICAgICAgICAgICAgb2JqLT5Vbmljb2RlVG9VVEYxNk9mZnNldEluVGV4dChzdGFydF9vZmZzZXQp LAorQEAgLTEzNzcsNiArMTQxNSw3IEBAIEF0a0F0dHJpYnV0ZVNldCogR2V0RGVmYXVsdEF0dHJp YnV0ZXMoQXQKKyAgIHJldHVybiBUb0F0a0F0dHJpYnV0ZVNldChvYmotPkdldERlZmF1bHRUZXh0 QXR0cmlidXRlcygpKTsKKyB9CisgCisrI2lmIGRlZmluZWQoQVRLXzIzMikKKyBnYm9vbGVhbiBT Y3JvbGxTdWJzdHJpbmdUbyhBdGtUZXh0KiBhdGtfdGV4dCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnaW50IHN0YXJ0X29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn aW50IGVuZF9vZmZzZXQsCitAQCAtMTQwNyw2ICsxNDQ2LDcgQEAgZ2Jvb2xlYW4gU2Nyb2xsU3Vi c3RyaW5nVG9Qb2ludChBdGtUZXh0KgorICAgcmV0dXJuIG9iai0+U2Nyb2xsU3Vic3RyaW5nVG9Q b2ludChzdGFydF9vZmZzZXQsIGVuZF9vZmZzZXQsIGF0a19jb29yZF90eXBlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LCB5KTsKKyB9CisrI2VuZGlmICAvLyBBVEtf MjMyCisgCisgdm9pZCBJbml0KEF0a1RleHRJZmFjZSogaWZhY2UpIHsKKyAgIGlmYWNlLT5nZXRf dGV4dCA9IEdldFRleHQ7CitAQCAtMTQyOSwxMiArMTQ2OSwxNiBAQCB2b2lkIEluaXQoQXRrVGV4 dElmYWNlKiBpZmFjZSkgeworICAgaWZhY2UtPmdldF9ydW5fYXR0cmlidXRlcyA9IEdldFJ1bkF0 dHJpYnV0ZXM7CisgICBpZmFjZS0+Z2V0X2RlZmF1bHRfYXR0cmlidXRlcyA9IEdldERlZmF1bHRB dHRyaWJ1dGVzOworIAorKyNpZiBkZWZpbmVkKEFUS18yMTApCisgICBpZmFjZS0+Z2V0X3N0cmlu Z19hdF9vZmZzZXQgPSBHZXRTdHJpbmdBdE9mZnNldDsKKysjZW5kaWYKKyAKKysjaWYgZGVmaW5l ZChBVEtfMjMyKQorICAgaWYgKFN1cHBvcnRzQXRrVGV4dFNjcm9sbGluZ0ludGVyZmFjZSgpKSB7 CisgICAgIGlmYWNlLT5zY3JvbGxfc3Vic3RyaW5nX3RvID0gU2Nyb2xsU3Vic3RyaW5nVG87Cisg ICAgIGlmYWNlLT5zY3JvbGxfc3Vic3RyaW5nX3RvX3BvaW50ID0gU2Nyb2xsU3Vic3RyaW5nVG9Q b2ludDsKKyAgIH0KKysjZW5kaWYKKyB9CisgCisgY29uc3QgR0ludGVyZmFjZUluZm8gSW5mbyA9 IHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4oSW5pdCksCitAQCAtMTgzNywx MSArMTg4MSwxNSBAQCBjb25zdCBHSW50ZXJmYWNlSW5mbyBJbmZvID0ge3JlaW50ZXJwcmV0Cisg CisgfSAgLy8gbmFtZXNwYWNlIGF0a190YWJsZQorIAorKy8vIFRoZSBBVEsgdGFibGUgY2VsbCBp bnRlcmZhY2Ugd2FzIGFkZGVkIGluIEFUSyAyLjEyLgorKyNpZiBkZWZpbmVkKEFUS18yMTIpCisr CisgbmFtZXNwYWNlIGF0a190YWJsZV9jZWxsIHsKKyAKKyBnaW50IEdldENvbHVtblNwYW4oQXRr VGFibGVDZWxsKiBjZWxsKSB7CisrICBEQ0hFQ0soZ19hdGtfdGFibGVfY2VsbF9nZXRfdHlwZSk7 CisgICBnX3JldHVybl92YWxfaWZfZmFpbCgKKy0gICAgICBHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf VFlQRSgoY2VsbCksIGF0a190YWJsZV9jZWxsX2dldF90eXBlKCkpLCAwKTsKKysgICAgICBHX1RZ UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgoY2VsbCksIEF0a1RhYmxlQ2VsbEludGVyZmFjZTo6R2V0 VHlwZSgpKSwgMCk7CisgCisgICBpZiAoY29uc3QgQVhQbGF0Zm9ybU5vZGVCYXNlKiBvYmogPQor ICAgICAgICAgICBBWFBsYXRmb3JtTm9kZUF1cmFMaW51eDo6RnJvbUF0a09iamVjdChBVEtfT0JK RUNUKGNlbGwpKSkgeworQEAgLTE4NTMsOCArMTkwMSwxMCBAQCBnaW50IEdldENvbHVtblNwYW4o QXRrVGFibGVDZWxsKiBjZWxsKSB7CisgfQorIAorIEdQdHJBcnJheSogR2V0Q29sdW1uSGVhZGVy Q2VsbHMoQXRrVGFibGVDZWxsKiBjZWxsKSB7CisrICBEQ0hFQ0soZ19hdGtfdGFibGVfY2VsbF9n ZXRfdHlwZSk7CisgICBnX3JldHVybl92YWxfaWZfZmFpbCgKKy0gICAgICBHX1RZUEVfQ0hFQ0tf SU5TVEFOQ0VfVFlQRSgoY2VsbCksIGF0a190YWJsZV9jZWxsX2dldF90eXBlKCkpLCBudWxscHRy KTsKKysgICAgICBHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgoY2VsbCksIEF0a1RhYmxlQ2Vs bEludGVyZmFjZTo6R2V0VHlwZSgpKSwKKysgICAgICBudWxscHRyKTsKKyAKKyAgIEdQdHJBcnJh eSogYXJyYXkgPSBnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMoZ19vYmplY3RfdW5yZWYp OworIAorQEAgLTE4ODgsOCArMTkzOCwxMCBAQCBHUHRyQXJyYXkqIEdldENvbHVtbkhlYWRlckNl bGxzKEF0a1RhYmxlCisgfQorIAorIGdib29sZWFuIEdldENlbGxQb3NpdGlvbihBdGtUYWJsZUNl bGwqIGNlbGwsIGdpbnQqIHJvdywgZ2ludCogY29sdW1uKSB7CisrICBEQ0hFQ0soZ19hdGtfdGFi bGVfY2VsbF9nZXRfdHlwZSk7CisgICBnX3JldHVybl92YWxfaWZfZmFpbCgKKy0gICAgICBHX1RZ UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgoY2VsbCksIGF0a190YWJsZV9jZWxsX2dldF90eXBlKCkp LCBGQUxTRSk7CisrICAgICAgR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKGNlbGwpLCBBdGtU YWJsZUNlbGxJbnRlcmZhY2U6OkdldFR5cGUoKSksCisrICAgICAgRkFMU0UpOworIAorICAgaWYg KGF1dG8qIG9iaiA9IEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4OjpGcm9tQXRrT2JqZWN0KEFUS19P QkpFQ1QoY2VsbCkpKSB7CisgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiByb3dfaW5kZXggPSBvYmot PkdldFRhYmxlUm93KCk7CitAQCAtMTkwNiw4ICsxOTU4LDkgQEAgZ2Jvb2xlYW4gR2V0Q2VsbFBv c2l0aW9uKEF0a1RhYmxlQ2VsbCogYworIH0KKyAKKyBnaW50IEdldFJvd1NwYW4oQXRrVGFibGVD ZWxsKiBjZWxsKSB7CisrICBEQ0hFQ0soZ19hdGtfdGFibGVfY2VsbF9nZXRfdHlwZSk7CisgICBn X3JldHVybl92YWxfaWZfZmFpbCgKKy0gICAgICBHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgo Y2VsbCksIGF0a190YWJsZV9jZWxsX2dldF90eXBlKCkpLCAwKTsKKysgICAgICBHX1RZUEVfQ0hF Q0tfSU5TVEFOQ0VfVFlQRSgoY2VsbCksIEF0a1RhYmxlQ2VsbEludGVyZmFjZTo6R2V0VHlwZSgp KSwgMCk7CisgCisgICBpZiAoYXV0byogb2JqID0gQVhQbGF0Zm9ybU5vZGVBdXJhTGludXg6OkZy b21BdGtPYmplY3QoQVRLX09CSkVDVChjZWxsKSkpIHsKKyAgICAgLy8gSWYgdGhlIG9iamVjdCBp cyBub3QgYSBjZWxsLCB3ZSByZXR1cm4gMC4KK0BAIC0xOTE4LDggKzE5NzEsMTAgQEAgZ2ludCBH ZXRSb3dTcGFuKEF0a1RhYmxlQ2VsbCogY2VsbCkgeworIH0KKyAKKyBHUHRyQXJyYXkqIEdldFJv d0hlYWRlckNlbGxzKEF0a1RhYmxlQ2VsbCogY2VsbCkgeworKyAgRENIRUNLKGdfYXRrX3RhYmxl X2NlbGxfZ2V0X3R5cGUpOworICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoCistICAgICAgR19UWVBF X0NIRUNLX0lOU1RBTkNFX1RZUEUoKGNlbGwpLCBhdGtfdGFibGVfY2VsbF9nZXRfdHlwZSgpKSwg bnVsbHB0cik7CisrICAgICAgR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKGNlbGwpLCBBdGtU YWJsZUNlbGxJbnRlcmZhY2U6OkdldFR5cGUoKSksCisrICAgICAgbnVsbHB0cik7CisgCisgICBH UHRyQXJyYXkqIGFycmF5ID0gZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jKGdfb2JqZWN0 X3VucmVmKTsKKyAKK0BAIC0xOTUzLDggKzIwMDgsMTAgQEAgR1B0ckFycmF5KiBHZXRSb3dIZWFk ZXJDZWxscyhBdGtUYWJsZUNlbAorIH0KKyAKKyBBdGtPYmplY3QqIEdldFRhYmxlKEF0a1RhYmxl Q2VsbCogY2VsbCkgeworKyAgRENIRUNLKGdfYXRrX3RhYmxlX2NlbGxfZ2V0X3R5cGUpOworICAg Z19yZXR1cm5fdmFsX2lmX2ZhaWwoCistICAgICAgR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUo KGNlbGwpLCBhdGtfdGFibGVfY2VsbF9nZXRfdHlwZSgpKSwgbnVsbHB0cik7CisrICAgICAgR19U WVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKGNlbGwpLCBBdGtUYWJsZUNlbGxJbnRlcmZhY2U6Okdl dFR5cGUoKSksCisrICAgICAgbnVsbHB0cik7CisgCisgICBpZiAoYXV0byogb2JqID0gQVhQbGF0 Zm9ybU5vZGVBdXJhTGludXg6OkZyb21BdGtPYmplY3QoQVRLX09CSkVDVChjZWxsKSkpIHsKKyAg ICAgaWYgKGF1dG8qIHRhYmxlID0gb2JqLT5HZXRUYWJsZSgpKQorQEAgLTE5ODAsNiArMjAzNyw4 IEBAIGNvbnN0IEdJbnRlcmZhY2VJbmZvIEluZm8gPSB7cmVpbnRlcnByZXQKKyAKKyB9ICAvLyBu YW1lc3BhY2UgYXRrX3RhYmxlX2NlbGwKKyAKKysjZW5kaWYgIC8vIEFUS18yMTIKKysKKyBuYW1l c3BhY2UgYXRrX29iamVjdCB7CisgCisgZ3BvaW50ZXIga0FYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4 UGFyZW50Q2xhc3MgPSBudWxscHRyOworQEAgLTIyNDYsNiArMjMwNSw1MCBAQCB2b2lkIERldGFj aChBWFBsYXRmb3JtTm9kZUF1cmFMaW51eE9iamVjCisgCisgfSAgLy8gbmFtZXNwYWNlCisgCisr Ly8gc3RhdGljCisrTk9fU0FOSVRJWkUoImNmaS1pY2FsbCIpCisrR1R5cGUgQXRrVGFibGVDZWxs SW50ZXJmYWNlOjpHZXRUeXBlKCkgeworKyAgcmV0dXJuIGdfYXRrX3RhYmxlX2NlbGxfZ2V0X3R5 cGUoKTsKKyt9CisrCisrLy8gc3RhdGljCisrTk9fU0FOSVRJWkUoImNmaS1pY2FsbCIpCisrR1B0 ckFycmF5KiBBdGtUYWJsZUNlbGxJbnRlcmZhY2U6OkdldENvbHVtbkhlYWRlckNlbGxzKEF0a1Rh YmxlQ2VsbCogY2VsbCkgeworKyAgcmV0dXJuIGdfYXRrX3RhYmxlX2NlbGxfZ2V0X2NvbHVtbl9o ZWFkZXJfY2VsbHMoY2VsbCk7CisrfQorKworKy8vIHN0YXRpYworK05PX1NBTklUSVpFKCJjZmkt aWNhbGwiKQorK0dQdHJBcnJheSogQXRrVGFibGVDZWxsSW50ZXJmYWNlOjpHZXRSb3dIZWFkZXJD ZWxscyhBdGtUYWJsZUNlbGwqIGNlbGwpIHsKKysgIHJldHVybiBnX2F0a190YWJsZV9jZWxsX2dl dF9yb3dfaGVhZGVyX2NlbGxzKGNlbGwpOworK30KKysKKysvLyBzdGF0aWMKKytOT19TQU5JVEla RSgiY2ZpLWljYWxsIikKKytib29sIEF0a1RhYmxlQ2VsbEludGVyZmFjZTo6R2V0Um93Q29sdW1u U3BhbihBdGtUYWJsZUNlbGwqIGNlbGwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2ludCogcm93LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdpbnQqIGNvbHVtbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnaW50KiByb3dfc3BhbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50KiBjb2xfc3BhbikgeworKyAgcmV0dXJuIGdf YXRrX3RhYmxlX2NlbGxfZ2V0X3Jvd19jb2x1bW5fc3BhbihjZWxsLCByb3csIGNvbHVtbiwgcm93 X3NwYW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bF9zcGFuKTsKKyt9CisrCisrLy8gc3RhdGljCisrYm9vbCBBdGtUYWJsZUNlbGxJbnRlcmZhY2U6 OkV4aXN0cygpIHsKKysgIGdfYXRrX3RhYmxlX2NlbGxfZ2V0X3R5cGUgPSByZWludGVycHJldF9j YXN0PEdldFR5cGVGdW5jPigKKysgICAgICBkbHN5bShSVExEX0RFRkFVTFQsICJhdGtfdGFibGVf Y2VsbF9nZXRfdHlwZSIpKTsKKysgIGdfYXRrX3RhYmxlX2NlbGxfZ2V0X2NvbHVtbl9oZWFkZXJf Y2VsbHMgPQorKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R2V0Q29sdW1uSGVhZGVyQ2VsbHNGdW5j PigKKysgICAgICAgICAgZGxzeW0oUlRMRF9ERUZBVUxULCAiYXRrX3RhYmxlX2NlbGxfZ2V0X2Nv bHVtbl9oZWFkZXJfY2VsbHMiKSk7CisrICBnX2F0a190YWJsZV9jZWxsX2dldF9yb3dfaGVhZGVy X2NlbGxzID0KKysgICAgICByZWludGVycHJldF9jYXN0PEdldFJvd0hlYWRlckNlbGxzRnVuYz4o CisrICAgICAgICAgIGRsc3ltKFJUTERfREVGQVVMVCwgImF0a190YWJsZV9jZWxsX2dldF9yb3df aGVhZGVyX2NlbGxzIikpOworKyAgZ19hdGtfdGFibGVfY2VsbF9nZXRfcm93X2NvbHVtbl9zcGFu ID0gcmVpbnRlcnByZXRfY2FzdDxHZXRSb3dDb2x1bW5TcGFuRnVuYz4oCisrICAgICAgZGxzeW0o UlRMRF9ERUZBVUxULCAiYXRrX3RhYmxlX2NlbGxfZ2V0X3Jvd19jb2x1bW5fc3BhbiIpKTsKKysg IHJldHVybiAqZ19hdGtfdGFibGVfY2VsbF9nZXRfdHlwZTsKKyt9CisrCisgdm9pZCBBWFBsYXRm b3JtTm9kZUF1cmFMaW51eDo6RW5zdXJlR1R5cGVJbml0KCkgeworICNpZiAhR0xJQl9DSEVDS19W RVJTSU9OKDIsIDM2LCAwKQorICAgc3RhdGljIGJvb2wgZmlyc3RfdGltZSA9IHRydWU7CitAQCAt MjM1Myw4ICsyNDU2LDExIEBAIEdUeXBlIEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4OjpHZXRBY2Nl c3MKKyAgICAgZ190eXBlX2FkZF9pbnRlcmZhY2Vfc3RhdGljKHR5cGUsIEFUS19UWVBFX1RBQkxF LCAmYXRrX3RhYmxlOjpJbmZvKTsKKyAKKyAgIGlmIChpbnRlcmZhY2VfbWFza18uSW1wbGVtZW50 cyhJbXBsZW1lbnRlZEF0a0ludGVyZmFjZXM6OlZhbHVlOjprVGFibGVDZWxsKSkgeworLSAgICBn X3R5cGVfYWRkX2ludGVyZmFjZV9zdGF0aWModHlwZSwgYXRrX3RhYmxlX2NlbGxfZ2V0X3R5cGUo KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdGtfdGFibGVfY2VsbDo6SW5m byk7CisrICAgIC8vIFJ1bi10aW1lIGNoZWNrIHRvIGVuc3VyZSBBdGtUYWJsZUNlbGwgaXMgc3Vw cG9ydGVkIChyZXF1aXJlcyBBVEsgMi4xMikuCisrICAgIGlmIChBdGtUYWJsZUNlbGxJbnRlcmZh Y2U6OkV4aXN0cygpKSB7CisrICAgICAgZ190eXBlX2FkZF9pbnRlcmZhY2Vfc3RhdGljKHR5cGUs IEF0a1RhYmxlQ2VsbEludGVyZmFjZTo6R2V0VHlwZSgpLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmYXRrX3RhYmxlX2NlbGw6OkluZm8pOworKyAgICB9CisgICB9CisgCisg ICByZXR1cm4gdHlwZTsKK0BAIC0yNTg0LDkgKzI2OTAsOSBAQCBBdGtSb2xlIEFYUGxhdGZvcm1O b2RlQXVyYUxpbnV4OjpHZXRBdGtSCisgICAgIGNhc2UgYXg6Om1vam9tOjpSb2xlOjprQ29tcGxl bWVudGFyeToKKyAgICAgICByZXR1cm4gQVRLX1JPTEVfTEFORE1BUks7CisgICAgIGNhc2UgYXg6 Om1vam9tOjpSb2xlOjprQ29udGVudERlbGV0aW9uOgorLSAgICAgIHJldHVybiBHZXRBdGtSb2xl Q29udGVudERlbGV0aW9uKCk7CisrICAgICAgcmV0dXJuIGtBdGtSb2xlQ29udGVudERlbGV0aW9u OworICAgICBjYXNlIGF4Ojptb2pvbTo6Um9sZTo6a0NvbnRlbnRJbnNlcnRpb246CistICAgICAg cmV0dXJuIEdldEF0a1JvbGVDb250ZW50SW5zZXJ0aW9uKCk7CisrICAgICAgcmV0dXJuIGtBdGtS b2xlQ29udGVudEluc2VydGlvbjsKKyAgICAgY2FzZSBheDo6bW9qb206OlJvbGU6OmtDb250ZW50 SW5mbzoKKyAgICAgY2FzZSBheDo6bW9qb206OlJvbGU6OmtGb290ZXI6CisgICAgICAgcmV0dXJu IEFUS19ST0xFX0xBTkRNQVJLOworQEAgLTMwMjAsMTIgKzMxMjYsMTQgQEAgdm9pZCBBWFBsYXRm b3JtTm9kZUF1cmFMaW51eDo6R2V0QXRrU3RhdAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQz Ml90PihheDo6bW9qb206OkFyaWFDdXJyZW50U3RhdGU6OmtGYWxzZSkpIHsKKyAgICAgYXRrX3N0 YXRlX3NldF9hZGRfc3RhdGUoYXRrX3N0YXRlX3NldCwgQVRLX1NUQVRFX0FDVElWRSk7CisgICB9 CisrI2lmIGRlZmluZWQoQVRLXzIxNikKKyAgIC8vIFJ1bnRpbWUgY2hlY2tzIGluIGNhc2Ugd2Ug d2VyZSBjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBBVEsuCisgICBpZiAoSXNQbGF0 Zm9ybUNoZWNrYWJsZSgpICYmIFBsYXRmb3JtU3VwcG9ydHNTdGF0ZShBVEtfU1RBVEVfQ0hFQ0tB QkxFKSkKKyAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoYXRrX3N0YXRlX3NldCwgQVRLX1NU QVRFX0NIRUNLQUJMRSk7CisgICBpZiAoSGFzSW50QXR0cmlidXRlKGF4Ojptb2pvbTo6SW50QXR0 cmlidXRlOjprSGFzUG9wdXApICYmCisgICAgICAgUGxhdGZvcm1TdXBwb3J0c1N0YXRlKEFUS19T VEFURV9IQVNfUE9QVVApKQorICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShhdGtfc3RhdGVf c2V0LCBBVEtfU1RBVEVfSEFTX1BPUFVQKTsKKysjZW5kaWYKKyAgIGlmIChHZXRCb29sQXR0cmli dXRlKGF4Ojptb2pvbTo6Qm9vbEF0dHJpYnV0ZTo6a0J1c3kpKQorICAgICBhdGtfc3RhdGVfc2V0 X2FkZF9zdGF0ZShhdGtfc3RhdGVfc2V0LCBBVEtfU1RBVEVfQlVTWSk7CisgICBpZiAoR2V0Qm9v bEF0dHJpYnV0ZShheDo6bW9qb206OkJvb2xBdHRyaWJ1dGU6OmtNb2RhbCkpCitAQCAtMzA2NCw5 ICszMTcyLDExIEBAIHZvaWQgQVhQbGF0Zm9ybU5vZGVBdXJhTGludXg6OkdldEF0a1N0YXQKKyAg IGlmIChHZXREYXRhKCkuR2V0UmVzdHJpY3Rpb24oKSAhPSBheDo6bW9qb206OlJlc3RyaWN0aW9u OjprRGlzYWJsZWQpIHsKKyAgICAgaWYgKEdldERlbGVnYXRlKCktPklzUmVhZE9ubHlTdXBwb3J0 ZWQoKSAmJgorICAgICAgICAgR2V0RGVsZWdhdGUoKS0+SXNSZWFkT25seU9yRGlzYWJsZWQoKSkg eworKyNpZiBkZWZpbmVkKEFUS18yMTYpCisgICAgICAgLy8gUnVudGltZSBjaGVjayBpbiBjYXNl IHdlIHdlcmUgY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgQVRLLgorICAgICAgIGlm IChQbGF0Zm9ybVN1cHBvcnRzU3RhdGUoQVRLX1NUQVRFX1JFQURfT05MWSkpCisgICAgICAgICBh dGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShhdGtfc3RhdGVfc2V0LCBBVEtfU1RBVEVfUkVBRF9PTkxZ KTsKKysjZW5kaWYKKyAgICAgfSBlbHNlIHsKKyAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0 ZShhdGtfc3RhdGVfc2V0LCBBVEtfU1RBVEVfRU5BQkxFRCk7CisgICAgICAgYXRrX3N0YXRlX3Nl dF9hZGRfc3RhdGUoYXRrX3N0YXRlX3NldCwgQVRLX1NUQVRFX1NFTlNJVElWRSk7CitAQCAtMzEw MCwxMiArMzIxMCwxNiBAQCBzdHJ1Y3QgQXRrSW50TGlzdFJlbGF0aW9uIHsKKyBzdGF0aWMgQXRr SW50TGlzdFJlbGF0aW9uIGtJbnRMaXN0UmVsYXRpb25zW10gPSB7CisgICAgIHtheDo6bW9qb206 OkludExpc3RBdHRyaWJ1dGU6OmtDb250cm9sc0lkcywgQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJf Rk9SLAorICAgICAgQVRLX1JFTEFUSU9OX0NPTlRST0xMRURfQll9LAorKyNpZiBkZWZpbmVkKEFU S18yMjYpCisgICAgIHtheDo6bW9qb206OkludExpc3RBdHRyaWJ1dGU6OmtEZXRhaWxzSWRzLCBB VEtfUkVMQVRJT05fREVUQUlMUywKKyAgICAgIEFUS19SRUxBVElPTl9ERVRBSUxTX0ZPUn0sCisr I2VuZGlmCisgICAgIHtheDo6bW9qb206OkludExpc3RBdHRyaWJ1dGU6OmtEZXNjcmliZWRieUlk cywgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSwKKyAgICAgIEFUS19SRUxBVElPTl9ERVNDUklQ VElPTl9GT1J9LAorKyNpZiBkZWZpbmVkKEFUS18yMjYpCisgICAgIHtheDo6bW9qb206OkludExp c3RBdHRyaWJ1dGU6OmtFcnJvcm1lc3NhZ2VJZHMsIEFUS19SRUxBVElPTl9FUlJPUl9NRVNTQUdF LAorICAgICAgQVRLX1JFTEFUSU9OX0VSUk9SX0ZPUn0sCisrI2VuZGlmCisgICAgIHtheDo6bW9q b206OkludExpc3RBdHRyaWJ1dGU6OmtGbG93dG9JZHMsIEFUS19SRUxBVElPTl9GTE9XU19UTywK KyAgICAgIEFUS19SRUxBVElPTl9GTE9XU19GUk9NfSwKKyAgICAge2F4Ojptb2pvbTo6SW50TGlz dEF0dHJpYnV0ZTo6a0xhYmVsbGVkYnlJZHMsIEFUS19SRUxBVElPTl9MQUJFTExFRF9CWSwKK0BA IC0zODg0LDYgKzM5OTgsNyBAQCB2b2lkIEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4OjpPblJlYWRv bmx5CisgICBpZiAoIW9iaikKKyAgICAgcmV0dXJuOworIAorKyNpZiBkZWZpbmVkKEFUS18yMTYp CisgICAvLyBSdW50aW1lIGNoZWNrIGluIGNhc2Ugd2Ugd2VyZSBjb21waWxlZCB3aXRoIGEgbmV3 ZXIgdmVyc2lvbiBvZiBBVEsuCisgICBpZiAoIVBsYXRmb3JtU3VwcG9ydHNTdGF0ZShBVEtfU1RB VEVfUkVBRF9PTkxZKSkKKyAgICAgcmV0dXJuOworQEAgLTM4OTEsNiArNDAwNiw3IEBAIHZvaWQg QVhQbGF0Zm9ybU5vZGVBdXJhTGludXg6Ok9uUmVhZG9ubHkKKyAgIGF0a19vYmplY3Rfbm90aWZ5 X3N0YXRlX2NoYW5nZSgKKyAgICAgICBvYmosIEFUS19TVEFURV9SRUFEX09OTFksCisgICAgICAg R2V0RGF0YSgpLkdldFJlc3RyaWN0aW9uKCkgPT0gYXg6Om1vam9tOjpSZXN0cmljdGlvbjo6a1Jl YWRPbmx5KTsKKysjZW5kaWYKKyB9CisgCisgdm9pZCBBWFBsYXRmb3JtTm9kZUF1cmFMaW51eDo6 T25JbnZhbGlkU3RhdHVzQ2hhbmdlZCgpIHsKK0BAIC00MjE3LDExICs0MzMzLDEzIEBAIGdmeDo6 UmVjdCBBWFBsYXRmb3JtTm9kZUF1cmFMaW51eDo6R2V0RXgKKyAgICAgICBleHRlbnRzLk9mZnNl dCh3aW5kb3dfb3JpZ2luKTsKKyAgICAgICBicmVhazsKKyAgICAgfQorKyNpZiBkZWZpbmVkKEFU S18yMzApCisgICAgIGNhc2UgQVRLX1hZX1BBUkVOVDogeworICAgICAgIGdmeDo6VmVjdG9yMmQg cGFyZW50X29yaWdpbiA9IC1HZXRQYXJlbnRPcmlnaW5JblNjcmVlbkNvb3JkaW5hdGVzKCk7Cisg ICAgICAgZXh0ZW50cy5PZmZzZXQocGFyZW50X29yaWdpbik7CisgICAgICAgYnJlYWs7CisgICAg IH0KKysjZW5kaWYKKyAgIH0KKyAKKyAgIHJldHVybiBleHRlbnRzOworQEAgLTQ2NTEsNiArNDc2 OSw3IEBAIGJvb2wgQVhQbGF0Zm9ybU5vZGVBdXJhTGludXg6OklzSW5MaXZlUmUKKyAgIHJldHVy biBIYXNTdHJpbmdBdHRyaWJ1dGUoYXg6Om1vam9tOjpTdHJpbmdBdHRyaWJ1dGU6OmtDb250YWlu ZXJMaXZlU3RhdHVzKTsKKyB9CisgCisrI2lmIGRlZmluZWQoQVRLXzIzMCkKKyB2b2lkIEFYUGxh dGZvcm1Ob2RlQXVyYUxpbnV4OjpTY3JvbGxUb1BvaW50KEF0a0Nvb3JkVHlwZSBhdGtfY29vcmRf dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpIHsK K0BAIC00NzIzLDcgKzQ4NDIsOSBAQCB2b2lkIEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4OjpTY3Jv bGxOb2RlCisgICByZWN0IC09IHJlY3QuT2Zmc2V0RnJvbU9yaWdpbigpOworICAgU2Nyb2xsTm9k ZVJlY3RJbnRvVmlldyhyZWN0LCBhdGtfc2Nyb2xsX3R5cGUpOworIH0KKysjZW5kaWYgIC8vIGRl ZmluZWQoQVRLXzIzMCkKKyAKKysjaWYgZGVmaW5lZChBVEtfMjMyKQorIHN0ZDo6b3B0aW9uYWw8 Z2Z4OjpSZWN0PgorIEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4OjpHZXRVbmNsaXBwZWRIeXBlcnRl eHRSYW5nZUJvdW5kc1JlY3QoaW50IHN0YXJ0X29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbmRfb2Zmc2V0 KSB7CitAQCAtNDc4Miw2ICs0OTAzLDcgQEAgYm9vbCBBWFBsYXRmb3JtTm9kZUF1cmFMaW51eDo6 U2Nyb2xsU3VicworIAorICAgcmV0dXJuIHRydWU7CisgfQorKyNlbmRpZiAgLy8gZGVmaW5lZChB VEtfMjMyKQorIAorIHZvaWQgQVhQbGF0Zm9ybU5vZGVBdXJhTGludXg6OkNvbXB1dGVTdHlsZXNJ Zk5lZWRlZCgpIHsKKyAgIGlmICghb2Zmc2V0X3RvX3RleHRfYXR0cmlidXRlc18uZW1wdHkoKSkK K0BAIC00OTY0LDggKzUwODYsMTAgQEAgZ2Z4OjpQb2ludCBBWFBsYXRmb3JtTm9kZUF1cmFMaW51 eDo6Q29udgorICAgc3dpdGNoIChhdGtfY29vcmRfdHlwZSkgeworICAgICBjYXNlIEFUS19YWV9X SU5ET1c6CisgICAgICAgcmV0dXJuIHBvaW50ICsgR2V0UGFyZW50RnJhbWVPcmlnaW5JblNjcmVl bkNvb3JkaW5hdGVzKCk7CisrI2lmIGRlZmluZWQoQVRLXzIzMCkKKyAgICAgY2FzZSBBVEtfWFlf UEFSRU5UOgorICAgICAgIHJldHVybiBwb2ludCArIEdldFBhcmVudE9yaWdpbkluU2NyZWVuQ29v cmRpbmF0ZXMoKTsKKysjZW5kaWYKKyAgICAgY2FzZSBBVEtfWFlfU0NSRUVOOgorICAgICBkZWZh dWx0OgorICAgICAgIHJldHVybiBwb2ludDsKK2RpZmYgLXVwIGNocm9taXVtLTEyOS4wLjY2Njgu NTgvdWkvYWNjZXNzaWJpbGl0eS9wbGF0Zm9ybS9heF9wbGF0Zm9ybV9ub2RlX2F1cmFsaW51eC5o Lm1lIGNocm9taXVtLTEyOS4wLjY2NjguNTgvdWkvYWNjZXNzaWJpbGl0eS9wbGF0Zm9ybS9heF9w bGF0Zm9ybV9ub2RlX2F1cmFsaW51eC5oCistLS0gY2hyb21pdW0tMTI5LjAuNjY2OC41OC91aS9h Y2Nlc3NpYmlsaXR5L3BsYXRmb3JtL2F4X3BsYXRmb3JtX25vZGVfYXVyYWxpbnV4LmgubWUJMjAy NC0wOS0xOCAxOToyNjo1NC4xNjczNDg2ODggKzAyMDAKKysrKyBjaHJvbWl1bS0xMjkuMC42NjY4 LjU4L3VpL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0vYXhfcGxhdGZvcm1fbm9kZV9hdXJhbGludXgu aAkyMDI0LTA5LTE4IDE5OjI4OjA2LjIyMDcwMDQ5MyArMDIwMAorQEAgLTUyLDYgKzUyLDMxIEBA IHN0cnVjdCBGaW5kSW5QYWdlUmVzdWx0SW5mbyB7CisgICB9CisgfTsKKyAKKysvLyBBdGtUYWJs ZUNlbGwgd2FzIGludHJvZHVjZWQgaW4gQVRLIDIuMTIuIFVidW50dSBUcnVzdHkgaGFzIEFUSyAy LjEwLgorKy8vIENvbXBpbGUtdGltZSBjaGVja3MgYXJlIGluIHBsYWNlIGZvciBBVEsgdmVyc2lv bnMgdGhhdCBhcmUgb2xkZXIgdGhhbiAyLjEyLgorKy8vIEhvd2V2ZXIsIHdlIGFsc28gbmVlZCBy dW50aW1lIGNoZWNrcyBpbiBjYXNlIHRoZSB2ZXJzaW9uIHdlIGFyZSBidWlsZGluZworKy8vIGFn YWluc3QgaXMgbmV3ZXIgdGhhbiB0aGUgcnVudGltZSB2ZXJzaW9uLiBUbyBwcmV2ZW50IGEgcnVu dGltZSBlcnJvciwgd2UKKysvLyBjaGVjayB0aGF0IHdlIGhhdmUgYSB2ZXJzaW9uIG9mIEFUSyB0 aGF0IHN1cHBvcnRzIEF0a1RhYmxlQ2VsbC4gSWYgd2UgZG8sCisrLy8gd2UgZHluYW1pY2FsbHkg bG9hZCB0aGUgc3ltYm9sOyBpZiB3ZSBkb24ndCwgdGhlIGludGVyZmFjZSBpcyBhYnNlbnQgZnJv bQorKy8vIHRoZSBhY2Nlc3NpYmxlIG9iamVjdCBhbmQgaXRzIG1ldGhvZHMgd2lsbCBub3QgYmUg ZXhwb3NlZCBvciBjYWxsYWJsZS4KKysvLyBUaGUgZGVmaW5pdGlvbnMgYmVsb3cgZW5zdXJlIHdl IGhhdmUgbm8gbWlzc2luZyBzeW1ib2xzLiBOb3RlIHRoYXQgaW4KKysvLyBlbnZpcm9ubWVudHMg d2hlcmUgd2UgaGF2ZSBBVEsgPiAyLjEyLCB0aGUgZGVmaW5pdGlvbnMgb2YgQXRrVGFibGVDZWxs IGFuZAorKy8vIEF0a1RhYmxlQ2VsbElmYWNlIGJlbG93IGFyZSBvdmVycmlkZGVuIGJ5IHRoZSBy dW50aW1lIHZlcnNpb24uCisrLy8gVE9ETyhhY2Nlc3NpYmlsaXR5KSBSZW1vdmUgQXRrVGFibGVD ZWxsSW50ZXJmYWNlIHdoZW4gMi4xMiBpcyB0aGUgbWluaW11bQorKy8vIHN1cHBvcnRlZCB2ZXJz aW9uLgorK3N0cnVjdCBDT01QT05FTlRfRVhQT1JUKEFYX1BMQVRGT1JNKSBBdGtUYWJsZUNlbGxJ bnRlcmZhY2UgeworKyAgdHlwZWRlZiBzdHJ1Y3QgX0F0a1RhYmxlQ2VsbCBBdGtUYWJsZUNlbGw7 CisrICBzdGF0aWMgR1R5cGUgR2V0VHlwZSgpOworKyAgc3RhdGljIEdQdHJBcnJheSogR2V0Q29s dW1uSGVhZGVyQ2VsbHMoQXRrVGFibGVDZWxsKiBjZWxsKTsKKysgIHN0YXRpYyBHUHRyQXJyYXkq IEdldFJvd0hlYWRlckNlbGxzKEF0a1RhYmxlQ2VsbCogY2VsbCk7CisrICBzdGF0aWMgYm9vbCBH ZXRSb3dDb2x1bW5TcGFuKEF0a1RhYmxlQ2VsbCogY2VsbCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2ludCogcm93LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn aW50KiBjb2x1bW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQqIHJvd19z cGFuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50KiBjb2xfc3Bhbik7Cisr ICBzdGF0aWMgYm9vbCBFeGlzdHMoKTsKKyt9OworKworIC8vIFRoaXMgY2xhc3Mgd2l0aCBhbiBl bnVtIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiaXRtYXNrIHdoaWNoIHRyYWNrcyB0aGUgQVRLCisg Ly8gaW50ZXJmYWNlcyB0aGF0IGFuIEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4J3MgQVRLT2JqZWN0 IGltcGxlbWVudHMuCisgY2xhc3MgSW1wbGVtZW50ZWRBdGtJbnRlcmZhY2VzIHsKK2RpZmYgLXVw IGNocm9taXVtLTEyOS4wLjY2NjguNTgvdWkvYWNjZXNzaWJpbGl0eS9wbGF0Zm9ybS9heF9wbGF0 Zm9ybV9ub2RlX2F1cmFsaW51eF91bml0dGVzdC5jYy5tZSBjaHJvbWl1bS0xMjkuMC42NjY4LjU4 L3VpL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0vYXhfcGxhdGZvcm1fbm9kZV9hdXJhbGludXhfdW5p dHRlc3QuY2MKKy0tLSBjaHJvbWl1bS0xMjkuMC42NjY4LjU4L3VpL2FjY2Vzc2liaWxpdHkvcGxh dGZvcm0vYXhfcGxhdGZvcm1fbm9kZV9hdXJhbGludXhfdW5pdHRlc3QuY2MubWUJMjAyNC0wOS0x OCAxOToyNzoxMC43Mjg2NTk0MDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjkuMC42NjY4LjU4L3Vp L2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0vYXhfcGxhdGZvcm1fbm9kZV9hdXJhbGludXhfdW5pdHRl c3QuY2MJMjAyNC0wOS0xOCAxOToyODowNi4yMjE3MDA1MTIgKzAyMDAKK0BAIC04LDYgKzgsNyBA QAorICNlbmRpZgorIAorICNpbmNsdWRlIDxhdGsvYXRrLmg+CisrI2luY2x1ZGUgPGRsZmNuLmg+ CisgI2luY2x1ZGUgPHV0aWxpdHk+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKK0BAIC04ODQsNiAr ODg1LDE3IEBAIHR5cGVkZWYgYm9vbCAoKlNjcm9sbFRvUG9pbnRGdW5jKShBdGtDb20KKyB0eXBl ZGVmIGJvb2wgKCpTY3JvbGxUb0Z1bmMpKEF0a0NvbXBvbmVudCogY29tcG9uZW50LCBBdGtTY3Jv bGxUeXBlIHR5cGUpOworIAorIFRFU1RfRihBWFBsYXRmb3JtTm9kZUF1cmFMaW51eFRlc3QsIEF0 a0NvbXBvbmVudFNjcm9sbFRvUG9pbnQpIHsKKysgIC8vIFRoZXJlJ3MgYSBjaGFuY2Ugd2UgbWF5 IGJlIGNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEFUSyBhbmQgdGhlbgorKyAgLy8g cnVuIHdpdGggYW4gb2xkZXIgb25lLCBzbyB3ZSBuZWVkIHRvIGRvIGEgcnVudGltZSBjaGVjayBm b3IgdGhpcyBtZXRob2QKKysgIC8vIHRoYXQgaXMgYXZhaWxhYmxlIGluIEFUSyAyLjMwIGluc3Rl YWQgb2YgbGlua2luZyBkaXJlY3RseS4KKysgIFNjcm9sbFRvUG9pbnRGdW5jIHNjcm9sbF90b19w b2ludCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsVG9Qb2ludEZ1bmM+KAorKyAgICAgIGRsc3lt KFJUTERfREVGQVVMVCwgImF0a19jb21wb25lbnRfc2Nyb2xsX3RvX3BvaW50IikpOworKyAgaWYg KCFzY3JvbGxfdG9fcG9pbnQpIHsKKysgICAgTE9HKFdBUk5JTkcpIDw8ICJTa2lwcGluZyBBdGtD b21wb25lbnRTY3JvbGxUb1BvaW50IgorKyAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIEFU SyB2ZXJzaW9uIDwgMi4zMCBkZXRlY3RlZC4iOworKyAgICByZXR1cm47CisrICB9CisrCisgICBB WE5vZGVEYXRhIHJvb3Q7CisgICByb290LmlkID0gMTsKKyAgIHJvb3Qucm9sZSA9IGF4Ojptb2pv bTo6Um9sZTo6a1Jvb3RXZWJBcmVhOworQEAgLTkxMSw4ICs5MjMsNyBAQCBURVNUX0YoQVhQbGF0 Zm9ybU5vZGVBdXJhTGludXhUZXN0LCBBdGtDCisgICBFWFBFQ1RfRVEoMTAsIHdpZHRoKTsKKyAg IEVYUEVDVF9FUSgxMCwgaGVpZ2h0KTsKKyAKKy0gIGF0a19jb21wb25lbnRfc2Nyb2xsX3RvX3Bv aW50KEFUS19DT01QT05FTlQoY2hpbGRfb2JqKSwgQVRLX1hZX1NDUkVFTiwgNjAwLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgNjUwKTsKKysgIHNjcm9sbF90b19wb2ludChBVEtf Q09NUE9ORU5UKGNoaWxkX29iaiksIEFUS19YWV9TQ1JFRU4sIDYwMCwgNjUwKTsKKyAgIGF0a19j b21wb25lbnRfZ2V0X2V4dGVudHMoQVRLX0NPTVBPTkVOVChjaGlsZF9vYmopLCAmeF9sZWZ0LCAm eV90b3AsICZ3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhlaWdodCwgQVRL X1hZX1NDUkVFTik7CisgICBFWFBFQ1RfRVEoNjEwLCB4X2xlZnQpOworQEAgLTkyMCw4ICs5MzEs NyBAQCBURVNUX0YoQVhQbGF0Zm9ybU5vZGVBdXJhTGludXhUZXN0LCBBdGtDCisgICBFWFBFQ1Rf RVEoMTAsIHdpZHRoKTsKKyAgIEVYUEVDVF9FUSgxMCwgaGVpZ2h0KTsKKyAKKy0gIGF0a19jb21w b25lbnRfc2Nyb2xsX3RvX3BvaW50KEFUS19DT01QT05FTlQoY2hpbGRfb2JqKSwgQVRLX1hZX1BB UkVOVCwgMTAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCk7CisrICBzY3Jv bGxfdG9fcG9pbnQoQVRLX0NPTVBPTkVOVChjaGlsZF9vYmopLCBBVEtfWFlfUEFSRU5ULCAxMCwg MTApOworICAgYXRrX2NvbXBvbmVudF9nZXRfZXh0ZW50cyhBVEtfQ09NUE9ORU5UKGNoaWxkX29i aiksICZ4X2xlZnQsICZ5X3RvcCwgJndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmaGVpZ2h0LCBBVEtfWFlfU0NSRUVOKTsKKyAgIC8vIFRoZSB0ZXN0IHdyYXBwZXIgc2Nyb2xs cyBldmVyeSBlbGVtZW50IHdoZW4gc2Nyb2xsaW5nLCBzbyB0aGlzIHNob3VsZCBiZQorQEAgLTkz OCw2ICs5NDgsMTcgQEAgVEVTVF9GKEFYUGxhdGZvcm1Ob2RlQXVyYUxpbnV4VGVzdCwgQXRrQwor IH0KKyAKKyBURVNUX0YoQVhQbGF0Zm9ybU5vZGVBdXJhTGludXhUZXN0LCBBdGtDb21wb25lbnRT Y3JvbGxUbykgeworKyAgLy8gVGhlcmUncyBhIGNoYW5jZSB3ZSBtYXkgYmUgY29tcGlsZWQgd2l0 aCBhIG5ld2VyIHZlcnNpb24gb2YgQVRLIGFuZCB0aGVuCisrICAvLyBydW4gd2l0aCBhbiBvbGRl ciBvbmUsIHNvIHdlIG5lZWQgdG8gZG8gYSBydW50aW1lIGNoZWNrIGZvciB0aGlzIG1ldGhvZAor KyAgLy8gdGhhdCBpcyBhdmFpbGFibGUgaW4gQVRLIDIuMzAgaW5zdGVhZCBvZiBsaW5raW5nIGRp cmVjdGx5LgorKyAgU2Nyb2xsVG9GdW5jIHNjcm9sbF90byA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2Ny b2xsVG9GdW5jPigKKysgICAgICBkbHN5bShSVExEX0RFRkFVTFQsICJhdGtfY29tcG9uZW50X3Nj cm9sbF90byIpKTsKKysgIGlmICghc2Nyb2xsX3RvKSB7CisrICAgIExPRyhXQVJOSU5HKSA8PCAi U2tpcHBpbmcgQXRrQ29tcG9uZW50U2Nyb2xsVG8iCisrICAgICAgICAgICAgICAgICAgICAiIGJl Y2F1c2UgQVRLIHZlcnNpb24gPCAyLjMwIGRldGVjdGVkLiI7CisrICAgIHJldHVybjsKKysgIH0K KysKKyAgIEFYTm9kZURhdGEgcm9vdDsKKyAgIHJvb3QuaWQgPSAxOworICAgcm9vdC5yb2xlID0g YXg6Om1vam9tOjpSb2xlOjprUm9vdFdlYkFyZWE7CitAQCAtOTY1LDcgKzk4Niw3IEBAIFRFU1Rf RihBWFBsYXRmb3JtTm9kZUF1cmFMaW51eFRlc3QsIEF0a0MKKyAgIEVYUEVDVF9FUSgxMCwgd2lk dGgpOworICAgRVhQRUNUX0VRKDEwLCBoZWlnaHQpOworIAorLSAgYXRrX2NvbXBvbmVudF9zY3Jv bGxfdG8oQVRLX0NPTVBPTkVOVChjaGlsZF9vYmopLCBBVEtfU0NST0xMX0FOWVdIRVJFKTsKKysg IHNjcm9sbF90byhBVEtfQ09NUE9ORU5UKGNoaWxkX29iaiksIEFUS19TQ1JPTExfQU5ZV0hFUkUp OworICAgYXRrX2NvbXBvbmVudF9nZXRfZXh0ZW50cyhBVEtfQ09NUE9ORU5UKGNoaWxkX29iaiks ICZ4X2xlZnQsICZ5X3RvcCwgJndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm aGVpZ2h0LCBBVEtfWFlfU0NSRUVOKTsKKyAgIEVYUEVDVF9FUSgwLCB4X2xlZnQpOworZGlmZiAt dXAgY2hyb21pdW0tMTI5LjAuNjY2OC41OC91aS9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtL2luc3Bl Y3QvYXhfdHJlZV9mb3JtYXR0ZXJfYXVyYWxpbnV4LmNjLm1lIGNocm9taXVtLTEyOS4wLjY2Njgu NTgvdWkvYWNjZXNzaWJpbGl0eS9wbGF0Zm9ybS9pbnNwZWN0L2F4X3RyZWVfZm9ybWF0dGVyX2F1 cmFsaW51eC5jYworLS0tIGNocm9taXVtLTEyOS4wLjY2NjguNTgvdWkvYWNjZXNzaWJpbGl0eS9w bGF0Zm9ybS9pbnNwZWN0L2F4X3RyZWVfZm9ybWF0dGVyX2F1cmFsaW51eC5jYy5tZQkyMDI0LTA5 LTE4IDE5OjI3OjIwLjk2NTg1MTQ1NSArMDIwMAorKysrIGNocm9taXVtLTEyOS4wLjY2NjguNTgv dWkvYWNjZXNzaWJpbGl0eS9wbGF0Zm9ybS9pbnNwZWN0L2F4X3RyZWVfZm9ybWF0dGVyX2F1cmFs aW51eC5jYwkyMDI0LTA5LTE4IDE5OjI4OjA2LjIyMTcwMDUxMiArMDIwMAorQEAgLTQ3NCwxOCAr NDc0LDM0IEBAIHZvaWQgQVhUcmVlRm9ybWF0dGVyQXVyYUxpbnV4OjpBZGRUYWJsZUMKKyAgIGlu dCByb3cgPSAwLCBjb2wgPSAwLCByb3dfc3BhbiA9IDAsIGNvbF9zcGFuID0gMDsKKyAgIGludCBu X3Jvd19oZWFkZXJzID0gMCwgbl9jb2x1bW5faGVhZGVycyA9IDA7CisgCistICBBdGtUYWJsZUNl bGwqIGNlbGwgPSBHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgKKy0gICAgICAoYXRrX29iamVj dCksIGF0a190YWJsZV9jZWxsX2dldF90eXBlKCksIEF0a1RhYmxlQ2VsbCk7CisrICAvLyBQcm9w ZXJ0aWVzIG9idGFpbmVkIHZpYSBBdGtUYWJsZUNlbGwsIGlmIHBvc3NpYmxlLiBJZiB3ZSBkbyBu b3QgaGF2ZSBhdAorKyAgLy8gbGVhc3QgQVRLIDIuMTIsIHVzZSB0aGUgc2FtZSBsb2dpYyBpbiBv dXIgQXRrVGFibGVDZWxsIGltcGxlbWVudGF0aW9uIHNvCisrICAvLyB0aGF0IHRlc3RzIGNhbiBz dGlsbCBiZSBydW4uCisrICBpZiAoQXRrVGFibGVDZWxsSW50ZXJmYWNlOjpFeGlzdHMoKSkgewor KyAgICBBdGtUYWJsZUNlbGwqIGNlbGwgPSBHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgKKysg ICAgICAgIChhdGtfb2JqZWN0KSwgQXRrVGFibGVDZWxsSW50ZXJmYWNlOjpHZXRUeXBlKCksIEF0 a1RhYmxlQ2VsbCk7CisgCistICBhdGtfdGFibGVfY2VsbF9nZXRfcm93X2NvbHVtbl9zcGFuKGNl bGwsICZyb3csICZjb2wsICZyb3dfc3BhbiwgJmNvbF9zcGFuKTsKKysgICAgQXRrVGFibGVDZWxs SW50ZXJmYWNlOjpHZXRSb3dDb2x1bW5TcGFuKGNlbGwsICZyb3csICZjb2wsICZyb3dfc3BhbiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xfc3Bhbik7 CisgCistICBHUHRyQXJyYXkqIGNvbHVtbl9oZWFkZXJzID0gYXRrX3RhYmxlX2NlbGxfZ2V0X2Nv bHVtbl9oZWFkZXJfY2VsbHMoY2VsbCk7CistICBuX2NvbHVtbl9oZWFkZXJzID0gY29sdW1uX2hl YWRlcnMtPmxlbjsKKy0gIGdfcHRyX2FycmF5X3VucmVmKGNvbHVtbl9oZWFkZXJzKTsKKysgICAg R1B0ckFycmF5KiBjb2x1bW5faGVhZGVycyA9CisrICAgICAgICBBdGtUYWJsZUNlbGxJbnRlcmZh Y2U6OkdldENvbHVtbkhlYWRlckNlbGxzKGNlbGwpOworKyAgICBuX2NvbHVtbl9oZWFkZXJzID0g Y29sdW1uX2hlYWRlcnMtPmxlbjsKKysgICAgZ19wdHJfYXJyYXlfdW5yZWYoY29sdW1uX2hlYWRl cnMpOworIAorLSAgR1B0ckFycmF5KiByb3dfaGVhZGVycyA9IGF0a190YWJsZV9jZWxsX2dldF9y b3dfaGVhZGVyX2NlbGxzKGNlbGwpOworLSAgbl9yb3dfaGVhZGVycyA9IHJvd19oZWFkZXJzLT5s ZW47CistICBnX3B0cl9hcnJheV91bnJlZihyb3dfaGVhZGVycyk7CisrICAgIEdQdHJBcnJheSog cm93X2hlYWRlcnMgPSBBdGtUYWJsZUNlbGxJbnRlcmZhY2U6OkdldFJvd0hlYWRlckNlbGxzKGNl bGwpOworKyAgICBuX3Jvd19oZWFkZXJzID0gcm93X2hlYWRlcnMtPmxlbjsKKysgICAgZ19wdHJf YXJyYXlfdW5yZWYocm93X2hlYWRlcnMpOworKyAgfSBlbHNlIHsKKysgICAgcm93ID0gbm9kZS0+ R2V0VGFibGVSb3coKS52YWx1ZV9vcigtMSk7CisrICAgIGNvbCA9IG5vZGUtPkdldFRhYmxlQ29s dW1uKCkudmFsdWVfb3IoLTEpOworKyAgICByb3dfc3BhbiA9IG5vZGUtPkdldFRhYmxlUm93U3Bh bigpLnZhbHVlX29yKDApOworKyAgICBjb2xfc3BhbiA9IG5vZGUtPkdldFRhYmxlQ29sdW1uU3Bh bigpLnZhbHVlX29yKDApOworKyAgICBpZiAocm9sZSA9PSBBVEtfUk9MRV9UQUJMRV9DRUxMKSB7 CisrICAgICAgbl9jb2x1bW5faGVhZGVycyA9IG5vZGUtPkdldERlbGVnYXRlKCktPkdldENvbEhl YWRlck5vZGVJZHMoY29sKS5zaXplKCk7CisrICAgICAgbl9yb3dfaGVhZGVycyA9IG5vZGUtPkdl dERlbGVnYXRlKCktPkdldFJvd0hlYWRlck5vZGVJZHMocm93KS5zaXplKCk7CisrICAgIH0KKysg IH0KKyAKKyAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjZWxsX2luZm87CisgICBjZWxsX2lu Zm8ucHVzaF9iYWNrKGJhc2U6OlN0cmluZ1ByaW50Zigicm93PSVpIiwgcm93KSk7CgpkaWZmIC0t Z2l0IGEvY2hyb21pdW0uc3BlYyBiL2Nocm9taXVtLnNwZWMKaW5kZXggMGMzOTlhNy4uN2UwNjYx YSAxMDA2NDQKLS0tIGEvY2hyb21pdW0uc3BlYworKysgYi9jaHJvbWl1bS5zcGVjCkBAIC0zOSw3 ICszOSw3IEBACiAlZ2xvYmFsIGJ1aWxkX2Nocm9tZWRyaXZlciAxCiAKICMgZW5hYmxlfGRpc2Fi bGUgaGVhZGxlc3MgY2xpZW50IGJ1aWxkCi0lZ2xvYmFsIGJ1aWxkX2hlYWRsZXNzIDEKKyVnbG9i YWwgYnVpbGRfaGVhZGxlc3MgMAogJWlmYXJjaCBwcGM2NGxlCiAlZ2xvYmFsIGJ1aWxkX2hlYWRs ZXNzIDAKICVlbmRpZgpAQCAtMzYyLDYgKzM2Miw5IEBAIFBhdGNoMTUwOiBjaHJvbWl1bS0xMjQt cXQ2LnBhdGNoCiBQYXRjaDMwNTogY2hyb21pdW0tMTI0LWVsOC1hcm02NC1tZW1vcnlfdGFnZ2lu Zy5wYXRjaAogUGF0Y2gzMDY6IGNocm9taXVtLTEyNy1lbDgtaWZ1bmMtaGVhZGVyLnBhdGNoCiAK KyMgd29ya2Fyb3VuZCBmb3IgYnVpbGQgZXJyb3IgZHVlIHRvIG9sZCBhdGsgdmVyc2lvbiBvbiBl bDgKK1BhdGNoMzA3OiBjaHJvbWl1bS0xMjktZWw4LWF0ay1jb21waWxlci1lcnJvci5wYXRjaAor CiAjIGVuYWJsZSBmc3RhY2stcHJvdGVjdG9yLXN0cm9uZwogUGF0Y2gzMTI6IGNocm9taXVtLTEy My1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy5wYXRjaAogCkBAIC0xMDg0LDYgKzEwODcsNyBAQCBR dDYgVUkgZm9yIGNocm9taXVtLgogJXBhdGNoIC1QMzA1IC1wMSAtYiAuZWw4LW1lbW9yeV90YWdn aW5nCiAlcGF0Y2ggLVAzMDYgLXAxIC1iIC5lbDgtaWZ1bmMtaGVhZGVyCiAlZW5kaWYKKyVwYXRj aCAtUDMwNyAtcDEgLWIgLmVsOC1hdGstY29tcGlsZXItZXJyb3IKICVlbmRpZgogCiAlcGF0Y2gg LVAzMTIgLXAxIC1iIC5mc3RhY2stcHJvdGVjdG9yLXN0cm9uZwo=