Lyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NDoKICoKICogVklNIC0gVmkgSU1wcm92ZWQJYnkgQnJhbSBNb29sZW5hYXIKICoKICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCiAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgogKi8KCi8qCiAqIERlZmluaXRpb25zIG9mIHZhcmlvdXMgY29tbW9uIGNvbnRyb2wgY2hhcmFjdGVycy4KICogRm9yIEVCQ0RJQyB3ZSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgdmFsdWVzLgogKi8KCiNpZm5kZWYgRUJDRElDCgovKiBJRl9FQihBU0NJSV9jb25zdGFudCwgRUJDRElDX2NvbnN0YW50KSAqLwojZGVmaW5lIElGX0VCKGEsIGIpCWEKCiNkZWZpbmUgQ2hhck9yZCh4KQkoKHgpIDwgJ2EnID8gKHgpIC0gJ0EnIDogKHgpIC0gJ2EnKQojZGVmaW5lIENoYXJPcmRMb3coeCkJKCh4KSAtICdhJykKI2RlZmluZSBDaGFyT3JkVXAoeCkJKCh4KSAtICdBJykKI2RlZmluZSBST1QxMyhjLCBhKQkoKCgoKGMpIC0gKGEpKSArIDEzKSAlIDI2KSArIChhKSkKCiNkZWZpbmUgTlVMCQknXDAwMCcKI2RlZmluZSBCRUxMCQknXDAwNycKI2RlZmluZSBCUwkJJ1wwMTAnCiNkZWZpbmUgVEFCCQknXDAxMScKI2RlZmluZSBOTAkJJ1wwMTInCiNkZWZpbmUgTkxfU1RSCQkoY2hhcl91ICopIlwwMTIiCiNkZWZpbmUgRkYJCSdcMDE0JwojZGVmaW5lIENBUgkJJ1wwMTUnCS8qIENSIGlzIHVzZWQgYnkgTWFjIE9TIFggKi8KI2RlZmluZSBFU0MJCSdcMDMzJwojZGVmaW5lIEVTQ19TVFIJCShjaGFyX3UgKikiXDAzMyIKI2RlZmluZSBFU0NfU1RSX25jCSJcMDMzIgojZGVmaW5lIERFTAkJMHg3ZgojZGVmaW5lIERFTF9TVFIJCShjaGFyX3UgKikiXDE3NyIKI2RlZmluZSBDU0kJCTB4OWIJLyogQ29udHJvbCBTZXF1ZW5jZSBJbnRyb2R1Y2VyICovCiNkZWZpbmUgQ1NJX1NUUgkJIlwyMzMiCiNkZWZpbmUgRENTCQkweDkwCS8qIERldmljZSBDb250cm9sIFN0cmluZyAqLwojZGVmaW5lIFNURVJNCQkweDljCS8qIFN0cmluZyBUZXJtaW5hdG9yICovCgojZGVmaW5lIFBPVU5ECQkweEEzCgojZGVmaW5lIEN0cmxfY2hyKHgpCShUT1VQUEVSX0FTQyh4KSBeIDB4NDApIC8qICc/JyAtPiBERUwsICdAJyAtPiBeQCwgZXRjLiAqLwojZGVmaW5lIE1ldGEoeCkJCSgoeCkgfCAweDgwKQoKI2RlZmluZSBDVFJMX0ZfU1RSCSJcMDA2IgojZGVmaW5lIENUUkxfSF9TVFIJIlwwMTAiCiNkZWZpbmUgQ1RSTF9WX1NUUgkiXDAyNiIKI2RlZmluZSBDVFJMX1dfU1RSCSJcMDI3IgoKI2RlZmluZSBDdHJsX0FUCQkwICAgLyogQCAqLwojZGVmaW5lIEN0cmxfQQkJMQojZGVmaW5lIEN0cmxfQgkJMgojZGVmaW5lIEN0cmxfQwkJMwojZGVmaW5lIEN0cmxfRAkJNAojZGVmaW5lIEN0cmxfRQkJNQojZGVmaW5lIEN0cmxfRgkJNgojZGVmaW5lIEN0cmxfRwkJNwojZGVmaW5lIEN0cmxfSAkJOAojZGVmaW5lIEN0cmxfSQkJOQojZGVmaW5lIEN0cmxfSgkJMTAKI2RlZmluZSBDdHJsX0sJCTExCiNkZWZpbmUgQ3RybF9MCQkxMgojZGVmaW5lIEN0cmxfTQkJMTMKI2RlZmluZSBDdHJsX04JCTE0CiNkZWZpbmUgQ3RybF9PCQkxNQojZGVmaW5lIEN0cmxfUAkJMTYKI2RlZmluZSBDdHJsX1EJCTE3CiNkZWZpbmUgQ3RybF9SCQkxOAojZGVmaW5lIEN0cmxfUwkJMTkKI2RlZmluZSBDdHJsX1QJCTIwCiNkZWZpbmUgQ3RybF9VCQkyMQojZGVmaW5lIEN0cmxfVgkJMjIKI2RlZmluZSBDdHJsX1cJCTIzCiNkZWZpbmUgQ3RybF9YCQkyNAojZGVmaW5lIEN0cmxfWQkJMjUKI2RlZmluZSBDdHJsX1oJCTI2CiNkZWZpbmUgQ3RybF9MU0IJMjcgIC8qIFsgTGVmdCBTcXVhcmUgQnJhY2tldCAqLwojZGVmaW5lIEN0cmxfQlNMCTI4ICAvKiBcIEJhY2tTTGFzaCAqLwojZGVmaW5lIEN0cmxfUlNCCTI5ICAvKiBdIFJpZ2h0IFNxdWFyZSBCcmFja2V0ICovCiNkZWZpbmUgQ3RybF9IQVQJMzAgIC8qIF4gKi8KI2RlZmluZSBDdHJsX18JCTMxCgojZWxzZQoKLyogRUJDRElDICovCgovKiBJRl9FQihBU0NJSV9jb25zdGFudCwgRUJDRElDX2NvbnN0YW50KSAqLwojZGVmaW5lIElGX0VCKGEsIGIpCWIKCi8qCiAqIEZpbmRpbmcgdGhlIHBvc2l0aW9uIGluIHRoZSBhbHBoYWJldCBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkIGluIEVCQ0RJQy4KICogVGhlcmUgYXJlIGdhcHMgaW4gdGhlIGNvZGUgdGFibGUuCiAqICdhJyArIDEgPT0gJ2InLCBidXQ6ICdpJyArIDcgPT0gJ2onIGFuZCAncicgKyA4ID09ICdzJwogKi8KI2RlZmluZSBDaGFyT3JkX18oYykgKChjKSA8ICgnaicgLSAnYScpID8gKGMpIDogKChjKSA8ICgncycgLSAnYScpID8gKGMpIC0gNyA6IChjKSAtIDcgLSA4KSkKI2RlZmluZSBDaGFyT3JkTG93KHgpIChDaGFyT3JkX18oKHgpIC0gJ2EnKSkKI2RlZmluZSBDaGFyT3JkVXAoeCkgKENoYXJPcmRfXygoeCkgLSAnQScpKQojZGVmaW5lIENoYXJPcmQoeCkgKGlzdXBwZXIoeCkgPyBDaGFyT3JkVXAoeCkgOiBDaGFyT3JkTG93KHgpKQoKI2RlZmluZSBFQkNESUNfQ0hBUl9BRERfKHgpICgoeCkgPCAwPydhJzooeCk+MjU/J3onOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiJbeF0pCiNkZWZpbmUgRUJDRElDX0NIQVJfQUREKGMscykgKGlzdXBwZXIoYykgPyB0b3VwcGVyKEVCQ0RJQ19DSEFSX0FERF8oQ2hhck9yZFVwKGMpKyhzKSkpIDogRUJDRElDX0NIQVJfQUREXyhDaGFyT3JkTG93KGMpKyhzKSkpCgojZGVmaW5lIFIxM18oYykgKCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiJbKChjKSArIDEzKSAlIDI2XSkKI2RlZmluZSBST1QxMyhjLCBhKSAgKGlzdXBwZXIoYykgPyB0b3VwcGVyKFIxM18oQ2hhck9yZFVwKGMpKSkgOiBSMTNfKENoYXJPcmRMb3coYykpKQoKI2RlZmluZSBOVUwJCSdcMDAwJwojZGVmaW5lIEJFTEwJCSdceDJmJwojZGVmaW5lIEJTCQknXHgxNicKI2RlZmluZSBUQUIJCSdceDA1JwojZGVmaW5lIE5MCQknXHgxNScKI2RlZmluZSBOTF9TVFIJCShjaGFyX3UgKikiXHgxNSIKI2RlZmluZSBGRgkJJ1x4MEMnCiNkZWZpbmUgQ0FSCQknXHgwRCcKI2RlZmluZSBFU0MJCSdceDI3JwojZGVmaW5lIEVTQ19TVFIJCShjaGFyX3UgKikiXHgyNyIKI2RlZmluZSBFU0NfU1RSX25jCSJceDI3IgojZGVmaW5lIERFTAkJMHgwNwojZGVmaW5lIERFTF9TVFIJCShjaGFyX3UgKikiXDAwNyIKLyogVE9ETzogRUJDRElDIENvZGUgcGFnZSBkZXBlbmRlbnQgKGhlcmUgMTA0NykgKi8KI2RlZmluZSBDU0kJCTB4OWIJLyogQ29udHJvbCBTZXF1ZW5jZSBJbnRyb2R1Y2VyICovCiNkZWZpbmUgQ1NJX1NUUgkJIlwyMzMiCiNkZWZpbmUgRENTCQkweDkwCS8qIERldmljZSBDb250cm9sIFN0cmluZyAqLwojZGVmaW5lIFNURVJNCQkweDljCS8qIFN0cmluZyBUZXJtaW5hdG9yICovCgojZGVmaW5lIFBPVU5ECQknoycKCiNkZWZpbmUgQ1RSTF9GX1NUUgkiXDA1NiIKI2RlZmluZSBDVFJMX0hfU1RSCSJcMDI2IgojZGVmaW5lIENUUkxfVl9TVFIJIlwwNjIiCiNkZWZpbmUgQ1RSTF9XX1NUUgkiXDA0NiIKCiNkZWZpbmUgQ3RybF9BVAkJMHgwMCAgIC8qIEAgKi8KI2RlZmluZSBDdHJsX0EJCTB4MDEKI2RlZmluZSBDdHJsX0IJCTB4MDIKI2RlZmluZSBDdHJsX0MJCTB4MDMKI2RlZmluZSBDdHJsX0QJCTB4MzcKI2RlZmluZSBDdHJsX0UJCTB4MkQKI2RlZmluZSBDdHJsX0YJCTB4MkUKI2RlZmluZSBDdHJsX0cJCTB4MkYKI2RlZmluZSBDdHJsX0gJCTB4MTYKI2RlZmluZSBDdHJsX0kJCTB4MDUKI2RlZmluZSBDdHJsX0oJCTB4MTUKI2RlZmluZSBDdHJsX0sJCTB4MEIKI2RlZmluZSBDdHJsX0wJCTB4MEMKI2RlZmluZSBDdHJsX00JCTB4MEQKI2RlZmluZSBDdHJsX04JCTB4MEUKI2RlZmluZSBDdHJsX08JCTB4MEYKI2RlZmluZSBDdHJsX1AJCTB4MTAKI2RlZmluZSBDdHJsX1EJCTB4MTEKI2RlZmluZSBDdHJsX1IJCTB4MTIKI2RlZmluZSBDdHJsX1MJCTB4MTMKI2RlZmluZSBDdHJsX1QJCTB4M0MKI2RlZmluZSBDdHJsX1UJCTB4M0QKI2RlZmluZSBDdHJsX1YJCTB4MzIKI2RlZmluZSBDdHJsX1cJCTB4MjYKI2RlZmluZSBDdHJsX1gJCTB4MTgKI2RlZmluZSBDdHJsX1kJCTB4MTkKI2RlZmluZSBDdHJsX1oJCTB4M0YKI2RlZmluZSBDdHJsX0xTQgkweDI3ICAvKiBbIExlZnQgU3F1YXJlIEJyYWNrZXQgKi8KI2RlZmluZSBDdHJsX1JTQgkweDFEICAvKiBdIFJpZ2h0IFNxdWFyZSBCcmFja2V0ICovCiNkZWZpbmUgQ3RybF9CU0wJMHgxQyAgLyogXCBCYWNrU0xhc2ggKi8KI2RlZmluZSBDdHJsX0hBVAkweDFFICAvKiBeICovCiNkZWZpbmUgQ3RybF9fCQkweDFGCgojZGVmaW5lIEN0cmxfY2hyKHgpCShDdHJsVGFibGVbKHgpXSkKZXh0ZXJuIGNoYXIgQ3RybFRhYmxlW107CgojZGVmaW5lIEN0cmxDaGFyKHgpCSgoeCA8ICcgJykgPyBDdHJsQ2hhclRhYmxlWyh4KV0gOiAwKQpleHRlcm4gY2hhciBDdHJsQ2hhclRhYmxlW107CgojZGVmaW5lIE1ldGFDaGFyKHgpCSgoeCA8ICcgJykgPyBNZXRhQ2hhclRhYmxlWyh4KV0gOiAwKQpleHRlcm4gY2hhciBNZXRhQ2hhclRhYmxlW107CgojZW5kaWYgLyogZGVmaW5lZCBFQkNESUMgKi8KCi8qCiAqIENoYXJhY3RlciB0aGF0IHNlcGFyYXRlcyBkaXIgbmFtZXMgaW4gYSBwYXRoLgogKiBGb3IgTVMtRE9TLCBXSU4zMiBhbmQgT1MvMiB3ZSB1c2UgYSBiYWNrc2xhc2guICBBIHNsYXNoIG1vc3RseSB3b3JrcwogKiBmaW5lLCBidXQgdGhlcmUgYXJlIHBsYWNlcyB3aGVyZSBpdCBkb2Vzbid0IChlLmcuIGluIGEgY29tbWFuZCBuYW1lKS4KICogRm9yIE1hY2ludG9zaCB3ZSB1c2UgYSBjb2xvbi4KICogRm9yIEFjb3JuIHdlIHVzZSBhIGRvdC4KICovCiNpZmRlZiBCQUNLU0xBU0hfSU5fRklMRU5BTUUKIyBkZWZpbmUgUEFUSFNFUAlwc2VwYwojIGRlZmluZSBQQVRIU0VQU1RSCXBzZXBzCiNlbHNlCiMgaWZkZWYgQ09MT05fQVNfUEFUSFNFUAojICBkZWZpbmUgUEFUSFNFUAknOicKIyAgZGVmaW5lIFBBVEhTRVBTVFIJIjoiCiMgZWxzZQojICBpZmRlZiBSSVNDT1MKIyAgIGRlZmluZSBQQVRIU0VQCScuJwojICAgZGVmaW5lIFBBVEhTRVBTVFIJIi4iCiMgIGVsc2UKIyAgIGRlZmluZSBQQVRIU0VQCScvJwojICAgZGVmaW5lIFBBVEhTRVBTVFIJIi8iCiMgIGVuZGlmCiMgZW5kaWYKI2VuZGlmCg==