U29tZXRoaW5nIGxpa2UgdGhpcyA/IEl0wrRzIGZvciB0aGUgSGl0ZWNoIGNvbXBpbGVyCgojZGVm aW5lIERJUl9HUElPICAgIDB4ZmYKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwp2b2lkIGluaXRfcG9ydHModm9pZCkg ewojZGVmaW5lIEJQKGIpIChiKS84LChiKSY3CgojaWZuZGVmIFRJQ0sKI2RlZmluZSBUSUNLIDEK I2VuZGlmCi8vIGxvYWQgT1NDQ0FMICwgZXZlbnR1YWxseSBhZGp1c3QgUk9NU0laRSBkbyBub3Qg b3ZlcnJpZGUgT1NDQ0FMIG9yCi8vIHlvdSBtdXN0IHBhdGNoIHRoZSBoZXggZmlsZSBmb3IgZW1i ZWRkaW5nIHJpZ2h0IE9TQ0NBTCAsCi8vIG9yIHJlbW92ZSB0aGUgbG9jYXRpb24gbWFudWFsbHkg ZnJvbSBIRVggZmlsZSwgd2hhdGV2ZXIgeW91IHByZWZlcgojYXNtCiAgY2FsbCAweDNmZgogIGJz ZiBCUChfUlAwKQogIG1vdmx3IF9PU0NDQUwKICBiY2YgQlAoX1JQMCkKI2VuZGFzbQoKICAgIENN Q09OPTc7ICAgIC8vIG5vIGNvbXBhcmF0b3IKICAgIEFOU0VMPTA7ICAgIC8vIG5vIGFkYwogICBU UklTSU8gPSBESVJfR1BJTzsgLy8gc2V0IGFzIG91dHB1dAp9CgovLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vLy8g QVJEVUlOTyBNQUlOCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwp2b2lkIHNldHVwKGNoYXIg aW5pdCk7CnZvaWQgbG9vcCgpOwovLyBTdGFydCBoZXJlCnZvaWQgbWFpbigpIHsKICAgaW5pdF9w b3J0cygpOwogICBzZXR1cCgxKTsKICAgIGRvIHsKICAgICAgICBzZXR1cCgwKTsKICAgICAgICBs b29wKCk7CiNpZmRlZiAgTE9PUF9QSU4KICAgICAgICBMT09QX1BJTiA9ICFMT09QX1BJTiAgICAv LyBkZWJ1ZyBwaW4gZm9yIG1lYXN1cmluZyBsb29wIHRpbWUKI2VuZGlmCiAgICB9IHdoaWxlKFRJ Q0spOwp9CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vLy8gQVJEVUlOTyBHTFVFIENPREUgQU5EIFNVUFBPUlQg Q09ERQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KI2RlZmluZSBJTlBVVCAgICAgMQojZGVm aW5lIE9VVFBVVCAgICAgMAojZGVmaW5lIEhJR0ggICAgMQojZGVmaW5lIExPVyAgICAgICAgMAoj ZGVmaW5lIENPTkNBVF9fKHgseSkgeCMjeQojZGVmaW5lIENPTkNBVF8oeCx5KSBDT05DQVRfXyh4 LHkpCiNkZWZpbmUgQ09OQ0FUKHgseSkgQ09OQ0FUXyh4LHkpCgojZGVmaW5lIHBpbk1vZGUocGlu LG1vZGUpICAgICAgICAgQ09OQ0FUKFRSSVNJTyxwaW4pID0gbW9kZQojZGVmaW5lIGRpZ2l0YWxX cml0ZShwaW4sbW9kZSkgICAgIENPTkNBVChHUElPLHBpbikgPSBtb2RlCgovLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ci8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKdW5zaWduZWQgY2hhciBkZWxheXVzX3Zhcmlh YmxlOwovLyoqKioqCi8vZGVsYXkgcm91dGluZQoKI2lmIFBJQ19DTEsgPT0gNDAwMDAwMAogICAg I2RlZmluZSBEZWxheURpdmlzb3IgNAogICAgI2RlZmluZSBXYWl0Rm9yMVVzIGFzbSgibm9wIikK ICAgICNkZWZpbmUgSnVtcGJhY2sgYXNtKCJnb3RvICQgLSAyIikKI2VsaWYgUElDX0NMSyA9PSA4 MDAwMDAwCiAgICAjZGVmaW5lIERlbGF5RGl2aXNvciAyCiAgICAjZGVmaW5lIFdhaXRGb3IxVXMg YXNtKCJub3AiKQogICAgI2RlZmluZSBKdW1wYmFjayBhc20oImdvdG8gJCAtIDIiKQojZWxpZiAo IChQSUNfQ0xLID09IDE2MDAwMDAwKSB8fCAoUElDX0NMSz09MTYyNTcwMDApICkKICAgICNkZWZp bmUgRGVsYXlEaXZpc29yIDEKICAgICNkZWZpbmUgV2FpdEZvcjFVcyBhc20oIm5vcCIpCiAgICAj ZGVmaW5lIEp1bXBiYWNrIGFzbSgiZ290byAkIC0gMiIpCiNlbGlmIFBJQ19DTEsgPT0gMjAwMDAw MDAKICAgICNkZWZpbmUgRGVsYXlEaXZpc29yIDEKICAgICNkZWZpbmUgV2FpdEZvcjFVcyBhc20o Im5vcCIpOyBhc20oIm5vcCIpCiAgICAjZGVmaW5lIEp1bXBiYWNrIGFzbSgiZ290byAkIC0gMyIp CiNlbGlmIFBJQ19DTEsgPT0gMzIwMDAwMDAKICAgICNkZWZpbmUgRGVsYXlEaXZpc29yIDEKICAg ICNkZWZpbmUgV2FpdEZvcjFVcyBhc20oIm5vcCIpOyBhc20oIm5vcCIpOyBhc20oIm5vcCIpOyBh c20oIm5vcCIpOwphc20oIm5vcCIpCiAgICAjZGVmaW5lIEp1bXBiYWNrIGFzbSgiZ290byAkIC0g NiIpCiNlbHNlCiAgICAjZXJyb3IgZGVsYXkuaCAtIHBsZWFzZSBkZWZpbmUgcGljX2NsayBjb3Jy ZWN0bHkKI2VuZGlmCiNkZWZpbmUgRGVsYXlVcyh4KSB7IAogICAgICAgICAgICBkZWxheXVzX3Zh cmlhYmxlPSh1bnNpZ25lZCBjaGFyKSh4L0RlbGF5RGl2aXNvcik7IAogICAgICAgICAgICBXYWl0 Rm9yMVVzOyB9IAogICAgICAgICAgICBhc20oImRlY2ZzeiBfZGVsYXl1c192YXJpYWJsZSxmIik7 IAogICAgICAgICAgICBKdW1wYmFjazsKdm9pZCBkZWxheSh1bnNpZ25lZCBsb25nIGNudCkgLy8g eW91IHNob3VsZCBkaXNhc3NlbWJsZSB0aGlzIGNvZGUKewogICAgdW5zaWduZWQgY2hhciAgICBp OwogICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlbnR1YWxseSBhZGQgZGVs YXkgY29kZSBoZXJlCiAgICAgICAgaSA9IDQ7CiAgICAgICAgZG8gewogICAgICAgICAgICBEZWxh eVVzKDI1MCk7ICAgIC8vIGFuZCBldmVudHVhbGx5IHVwZGF0ZSB0aGlzIGNvbnN0YW50CiAgICAg ICAgICAgIENMUldEVCgpOwogICAgICAgIH0gd2hpbGUoLS1pKTsKICAgIH0gd2hpbGUoLS1jbnQp Owp9CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi8vLy8gQVJEVUlOTyBDT0RFIEdPRVMgSEVSRQovLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCi8vLy8gc2V0dXAgaGF2ZSBpbml0IGFyZ3VtZW50IGZvciBmYXN0IGFuZCBjb21wbGV0ZSBz ZXR1cC4KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwp2b2lkIHNldHVwKGNoYXIgaW5pdCkgeyAgICAgICAgICAgICAg ICAgCiAgLy8gaW5pdGlhbGl6ZSB0aGUgZGlnaXRhbCBwaW4gYXMgYW4gb3V0cHV0LiBXZSBhcmUg dXNpbmcgUGluIDIgb24KTUNVCgogIHBpbk1vZGUoMiwgT1VUUFVUKTsKICBpZiAoaW5pdCkgewog ICAgICBkaWdpdGFsV3JpdGUoMiwgSElHSCk7Ly8gYmxpbmsgTEVEcyBvbmNlIHRvIHNpZ25hbCBw b3dlciBvbgogICAgICBkZWxheSgyMDAwKTsKICAgICAgZGlnaXRhbFdyaXRlKDIsIExPVyk7CiAg ICAgIGRlbGF5KDcyMDAwMDApOyAvLyBXYWl0IDIgaG91cnMKICB9Cn0KCi8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K dm9pZCBsb29wKCkgeyAgIAogIGRpZ2l0YWxXcml0ZSgyLCBISUdIKTsgICAvLyBzZXQgdGhlIExF RCBvbgogIGRlbGF5KDEwMDApOyAgICAgICAgICAgICAvLyB3YWl0IGZvciBhIHNlY29uZAogIGRp Z2l0YWxXcml0ZSgyLCBMT1cpOyAgICAvLyBzZXQgdGhlIExFRCBvZmYKCiAgZGVsYXkoNjAwMDAw KTsgICAgICAgICAvL1dhaXQgMTAgbWludXRlcwp9Ck9uIGdpb3ZlZMOsIDE3IGdlbm5haW8gMjAx MyBhdCAyOjMwIEFNLCAiU2FsIiAgd3JvdGU6VGhhbmtzIEJvYiEgU29ycnkKaSBhbSBuZXcgaGVy ZSA6KQotLQpWaWV3IHRoaXMgbWVzc2FnZSBpbiBjb250ZXh0OgpodHRwOi8vbWljcm9jb250cm9s bGVycy4yMzg1Lm43Lm5hYmJsZS5jb20vcGxlYXNlLWhlbHAtbWUtY29udmVydC10aGlzLWNvZGUt dHAxODAwODRwMTgwMDkyLmh0bWwKU2VudCBmcm9tIHRoZSBNaWNyb0NvbnRyb2xsZXJzIC0gUElD IG1haWxpbmcgbGlzdCBhcmNoaXZlIGF0Ck5hYmJsZS5jb20uCi0tIApodHRwOi8vd3d3LnBpY2xp c3QuY29tIFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJz aGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3Bp Y2xpc3QKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20gUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2 ZQpWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdApodHRwOi8vbWFpbG1hbi5t aXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo= .