Ci8vICAgdmltOnR3PTExMDp0cz00OgojaWZuZGVmIE1ERF9ICiNkZWZpbmUgTUREX0ggMQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKgoqIEZJTEUJCTogbWRkLmgKKgoqIERBVEUJCTogJERhdGU6IDIwMDQvMDgvMDUgMTE6NDc6MTAgJCAgICRSZXZpc2lvbjogMS42ICQKKiBPcmlnaW5hbAkJOiAyMDA0LzA1LzI1IDA1OjU5OjM3ICAgIFJldmlzaW9uOiAxLjU3ICAgICAgVGFnOiBoY2Y3X3QyMDA0MDYwMl8wMQoqIE9yaWdpbmFsCQk6IDIwMDQvMDUvMTMgMTU6MzE6NDUgICAgUmV2aXNpb246IDEuNTQgICAgICBUYWc6IGhjZjdfdDdfMjAwNDA1MTNfMDEKKiBPcmlnaW5hbAkJOiAyMDA0LzA0LzE1IDA5OjI0OjQxICAgIFJldmlzaW9uOiAxLjQ3ICAgICAgVGFnOiBoY2Y3X3Q3XzIwMDQwNDE1XzAxCiogT3JpZ2luYWwJCTogMjAwNC8wNC8xMyAxNDoyMjo0NSAgICBSZXZpc2lvbjogMS40NiAgICAgIFRhZzogdDdfMjAwNDA0MTNfMDEKKiBPcmlnaW5hbAkJOiAyMDA0LzA0LzAxIDE1OjMyOjU1ICAgIFJldmlzaW9uOiAxLjQyICAgICAgVGFnOiB0N18yMDA0MDQwMV8wMQoqIE9yaWdpbmFsCQk6IDIwMDQvMDMvMTAgMTU6Mzk6MjggICAgUmV2aXNpb246IDEuMzggICAgICBUYWc6IHQyMDA0MDMxMF8wMQoqIE9yaWdpbmFsCQk6IDIwMDQvMDMvMDQgMTE6MDM6MzcgICAgUmV2aXNpb246IDEuMzYgICAgICBUYWc6IHQyMDA0MDMwNF8wMQoqIE9yaWdpbmFsCQk6IDIwMDQvMDMvMDIgMDk6Mjc6MTEgICAgUmV2aXNpb246IDEuMzQgICAgICBUYWc6IHQyMDA0MDMwMl8wMwoqIE9yaWdpbmFsCQk6IDIwMDQvMDIvMjQgMTM6MDA6MjcgICAgUmV2aXNpb246IDEuMjkgICAgICBUYWc6IHQyMDA0MDIyNF8wMQoqIE9yaWdpbmFsCQk6IDIwMDQvMDIvMTggMTc6MTM6NTcgICAgUmV2aXNpb246IDEuMjYgICAgICBUYWc6IHQyMDA0MDIxOV8wMQoqCiogQVVUSE9SCTogTmljbyBWYWxzdGVyCioKKiBERVNDCQk6IERlZmluaXRpb25zIGFuZCBQcm90b3R5cGVzIGZvciBIQ0YsIERIRiwgTU1EIGFuZCBNU0YKKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKgoqCiogU09GVFdBUkUgTElDRU5TRQoqCiogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCiogd2hpY2ggeW91IHNob3VsZCByZWFkIGNhcmVmdWxseSBiZWZvcmUgdXNpbmcgdGhlIHNvZnR3YXJlLiAgVXNpbmcgdGhpcwoqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCioKKiBDT1BZUklHSFQgqSAxOTk0IC0gMTk5NQlieSBBVCZULgkJCQlBbGwgUmlnaHRzIFJlc2VydmVkCiogQ09QWVJJR0hUIKkgMTk5NiAtIDIwMDAgYnkgTHVjZW50IFRlY2hub2xvZ2llcy4JQWxsIFJpZ2h0cyBSZXNlcnZlZAoqIENPUFlSSUdIVCCpIDIwMDEgLSAyMDA0CWJ5IEFnZXJlIFN5c3RlbXMgSW5jLglBbGwgUmlnaHRzIFJlc2VydmVkCiogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKgoqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIG9yIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgoqCiogLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcwoqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQoqICAgIGRpc3RyaWJ1dGlvbi4KKgoqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAoqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKgoqIC4gTmVpdGhlciB0aGUgbmFtZSBvZiBBZ2VyZSBTeXN0ZW1zIEluYy4gbm9yIHRoZSBuYW1lcyBvZiB0aGUgY29udHJpYnV0b3JzCiogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCioKKiBEaXNjbGFpbWVyCioKKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywKKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQoqIFVTRSwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSElTIFNPRlRXQVJFIElTIFNPTEVMWSBBVCBUSEUgVVNFUlMgT1dOCiogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQoqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCiogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwoqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAoqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAoqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCiogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKiBEQU1BR0UuCioKKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCiogVGhlIG1hY3JvcyBYbiguLi4pIGFuZCBYWG4oLi4uKSBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIExUVidzIChzaG9ydCBmb3IgTGVuZ3RoIFR5cGUgVmFsdWVbIF0pICwKKiBha2EgUklEcywgcHJvY2Vzc2VkIGJ5IHRoZSBIZXJtZXMuCiogVGhlIG4gaW4gWG4gYW5kIFhYbiByZWZsZWN0cyB0aGUgbnVtYmVyIG9mICJWYWx1ZSIgZmllbGRzIGluIHRoZXNlIFJJRHMuCioKKiBYbiguLi4pIDogTWFjcm9zIHVzZWQgZm9yIFJJRHMgd2hpY2ggdXNlIG9ubHkgdHlwZSBoY2ZfMTYgZm9yIHRoZSAiViIgZmllbGRzIG9mIHRoZSBMVFYuCiogWG4gdGFrZXMgYXMgcGFyYW1ldGVycyBhIFJJRCBuYW1lIGFuZCAibiIgbmFtZShzKSwgb25lIGZvciBlYWNoIG9mIHRoZSAiViIgZmllbGRzIG9mIHRoZSBMVFYuCioKKiBYWG4oLi4uKSA6IE1hY3JvcyB1c2VkIGZvciBSSURzIHdoaWNoIHVzZSBhdCBsZWFzdCBvbmUgb3RoZXIgdHlwZSB0aGVuIGhjZl8xNiBmb3IgYSAiViIgZmllbGQKKiBvZiB0aGUgTFRWLgoqIFhYbiguLikgdGFrZXMgYXMgcGFyYW1ldGVycyBhIFJJRCBuYW1lIGFuZCAibiIgcGFpcihzKSBvZiB0eXBlIGFuZCBuYW1lLCBvbmUgZm9yIGVhY2ggIlYiIGZpZWxkCiogb2YgdGhlIExUVgoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgZSB4IGEgbSBwIGwgZSBzICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKKiBYMShSSURfTkFNRSwgcGFyYW1ldGVycy4uLikgOiBleHBhbmRzIHRvIDoKKiAgICB0eXBlZGVmIHN0cnVjdCBSSURfTkFNRV9TVFJDVCB7CiogICAgICAgICBoY2ZfMTYgIGxlbjsKKiAgICAgICAgIGhjZl8xNiAgdHlwOwoqICAgICAgICAgaGNmXzE2ICBwYXIxOwoqICAgIH0gUklEX05BTUVfU1RSQ1Q7CgoqIFgyKFJJRF9OQU1FLCBwYXJhbWV0ZXJzLi4uKSA6IGV4cGFuZHMgdG8gOgoqICAgIHR5cGVkZWYgc3RydWN0IFJJRF9OQU1FX1NUUkNUIHsKKiAgICAgICAgIGhjZl8xNiAgbGVuOwoqICAgICAgICAgaGNmXzE2ICB0eXA7CiogICAgICAgICBoY2ZfMTYgIHBhcjE7CiogICAgICAgICBoY2ZfMTYgIHBhcjI7CiogICAgfSBSSURfTkFNRV9TVFJDVDsKCgoqIFhYMShSSURfTkFNRSwgcGFyMXR5cGUsIHBhcjFuYW1lLCAuLi4pIDogZXhwYW5kcyB0byA6CiogICAgdHlwZWRlZiBzdHJ1Y3QgUklEX05BTUVfU1RSQ1QgewoqICAgICAgIGhjZl8xNiAgICBsZW47CiogICAgICAgaGNmXzE2ICAgIHR5cDsKKiAgICAgICBwYXIxdHlwZSAgcGFyMW5hbWU7CiogICAgfSBSSURfTkFNRV9TVFJDVDsKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFhYIFN1Yi1tYWNybyBkZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNkZWZpbmUgWFgxKCBuYW1lLCB0eXBlMSwgcGFyMSApCVwKdHlwZWRlZiBzdHJ1Y3QgewkJCQkgIAlcCgloY2ZfMTYJbGVuOyAgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXR5cDsgICAgICAgICAgICAgICAgCVwKCXR5cGUxCXBhcjE7ICAgICAgICAgICAgICAgCVwKfSBuYW1lIyNfU1RSQ1Q7CgojZGVmaW5lIFhYMiggbmFtZSwgdHlwZTEsIHBhcjEsIHR5cGUyLCBwYXIyICkJXAp0eXBlZGVmIHN0cnVjdCB7CQkJCSAgIAlcCgloY2ZfMTYJbGVuOyAgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXR5cDsgICAgICAgICAgICAgICAgCVwKCXR5cGUxCXBhcjE7ICAgICAgICAgICAgICAgCVwKCXR5cGUyCXBhcjI7ICAgICAgICAgICAgICAgCVwKfSBuYW1lIyNfU1RSQ1Q7CgojZGVmaW5lIFhYMyggbmFtZSwgdHlwZTEsIHBhcjEsIHR5cGUyLCBwYXIyLCB0eXBlMywgcGFyMyApCVwKdHlwZWRlZiBzdHJ1Y3QgbmFtZSMjX1NUUkNUIHsgICAJXAoJaGNmXzE2CWxlbjsgICAgICAgICAgICAgICAgCVwKCWhjZl8xNgl0eXA7ICAgICAgICAgICAgICAgIAlcCgl0eXBlMQlwYXIxOyAgICAgICAgICAgICAgIAlcCgl0eXBlMglwYXIyOyAgICAgICAgICAgICAgIAlcCgl0eXBlMwlwYXIzOyAgICAgICAgICAgICAgIAlcCn0gbmFtZSMjX1NUUkNUOwoKI2RlZmluZSBYWDQoIG5hbWUsIHR5cGUxLCBwYXIxLCB0eXBlMiwgcGFyMiwgdHlwZTMsIHBhcjMsIHR5cGU0LCBwYXI0ICkJXAp0eXBlZGVmIHN0cnVjdCB7CQkJCSAgCVwKCWhjZl8xNglsZW47ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJdHlwOyAgICAgICAgICAgICAgICAJXAoJdHlwZTEJcGFyMTsgICAgICAgICAgICAgICAJXAoJdHlwZTIJcGFyMjsgICAgICAgICAgICAgICAJXAoJdHlwZTMJcGFyMzsgICAgICAgICAgICAgICAJXAoJdHlwZTQJcGFyNDsgICAgICAgICAgICAgICAJXAp9IG5hbWUjI19TVFJDVDsKCiNkZWZpbmUgWDEoIG5hbWUsIHBhcjEgKQlcCnR5cGVkZWYgc3RydWN0IG5hbWUjI19TVFJDVCB7ICAgCVwKCWhjZl8xNglsZW47ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJdHlwOyAgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjE7ICAgICAgICAgICAgICAgCVwKfSBuYW1lIyNfU1RSQ1Q7CgojZGVmaW5lIFgyKCBuYW1lLCBwYXIxLCBwYXIyICkJCVwKdHlwZWRlZiBzdHJ1Y3QgewkJCSAgICAJXAoJaGNmXzE2CWxlbjsgICAgICAgICAgICAgICAgCVwKCWhjZl8xNgl0eXA7ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMTsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjI7ICAgICAgICAgICAgICAgCVwKfSBuYW1lIyNfU1RSQ1Q7CgojZGVmaW5lIFgzKCBuYW1lLCBwYXIxLCBwYXIyLCBwYXIzICkJCVwKdHlwZWRlZiBzdHJ1Y3QgewkJCSAgICAJXAoJaGNmXzE2CWxlbjsgICAgICAgICAgICAgICAgCVwKCWhjZl8xNgl0eXA7ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMTsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjI7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXIzOyAgICAgICAgICAgICAgIAlcCn0gbmFtZSMjX1NUUkNUOwoKI2RlZmluZSBYNCggbmFtZSwgcGFyMSwgcGFyMiwgcGFyMywgcGFyNCApCQlcCnR5cGVkZWYgc3RydWN0IHsJCQkgICAgCVwKCWhjZl8xNglsZW47ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJdHlwOyAgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjE7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXIyOyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMzsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjQ7ICAgICAgICAgICAgICAgCVwKfSBuYW1lIyNfU1RSQ1Q7CgojZGVmaW5lIFg1KCBuYW1lLCBwYXIxLCBwYXIyLCBwYXIzLCBwYXI0LCBwYXI1ICkJCVwKdHlwZWRlZiBzdHJ1Y3QgewkJCSAgICAJXAoJaGNmXzE2CWxlbjsgICAgICAgICAgICAgICAgCVwKCWhjZl8xNgl0eXA7ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMTsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjI7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXIzOyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyNDsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjU7ICAgICAgICAgICAgICAgCVwKfSBuYW1lIyNfU1RSQ1Q7CgojZGVmaW5lIFg2KCBuYW1lLCBwYXIxLCBwYXIyLCBwYXIzLCBwYXI0LCBwYXI1LCBwYXI2ICkJCVwKdHlwZWRlZiBzdHJ1Y3QgewkJCSAgICAJXAoJaGNmXzE2CWxlbjsgICAgICAgICAgICAgICAgCVwKCWhjZl8xNgl0eXA7ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMTsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjI7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXIzOyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyNDsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjU7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXI2OyAgICAgICAgICAgICAgIAlcCn0gbmFtZSMjX1NUUkNUOwoKI2RlZmluZSBYOCggbmFtZSwgcGFyMSwgcGFyMiwgcGFyMywgcGFyNCwgcGFyNSwgcGFyNiwgcGFyNywgcGFyOCApCQlcCnR5cGVkZWYgc3RydWN0IHsJCQkgICAgCVwKCWhjZl8xNglsZW47ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJdHlwOyAgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjE7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXIyOyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMzsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjQ7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXI1OyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyNjsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjc7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXI4OyAgICAgICAgICAgICAgIAlcCn0gbmFtZSMjX1NUUkNUOwoKI2RlZmluZSBYMTEoIG5hbWUsIHBhcjEsIHBhcjIsIHBhcjMsIHBhcjQsIHBhcjUsIHBhcjYsIHBhcjcsIHBhcjgsIHBhcjksIHBhcjEwLCBwYXIxMSApCQlcCnR5cGVkZWYgc3RydWN0IHsJCQkgICAgCVwKCWhjZl8xNglsZW47ICAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJdHlwOyAgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjE7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXIyOyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMzsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjQ7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXI1OyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyNjsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjc7ICAgICAgICAgICAgICAgCVwKCWhjZl8xNglwYXI4OyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyOTsgICAgICAgICAgICAgICAJXAoJaGNmXzE2CXBhcjEwOyAgICAgICAgICAgICAgIAlcCgloY2ZfMTYJcGFyMTE7ICAgICAgICAgICAgICAgCVwKfSBuYW1lIyNfU1RSQ1Q7CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTdWJzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovL2FwcGFyZW50bHkgbm90IG5lZWRlZCAoQ0ZHX0NORl9DT1VOVFJZKQp0eXBlZGVmIHN0cnVjdCBDSEFOTkVMX1NFVCB7CQkJCS8vY2hhbm5lbCBzZXQgc3RydWN0dXJlIHVzZWQgaW4gdGhlIENGR19DTkZfQ09VTlRSWSBMVFYKCWhjZl8xNglmaXJzdF9jaGFubmVsOwoJaGNmXzE2CW51bWJlcl9vZl9jaGFubmVsczsKCWhjZl8xNgltYXhfdHhfb3V0cHV0X2xldmVsOwp9IENIQU5ORUxfU0VUOwoKdHlwZWRlZiBzdHJ1Y3QgS0VZX1NUUkNUIHsJCQkJCS8vIGtleSBzdHJ1Y3R1cmUgdXNlZCBpbiB0aGUgQ0ZHX0RFRkFVTFRfS0VZUyBMVFYKICAgIGhjZl8xNiAgbGVuOwkgICAgICAgICAgICAgIAkJCQkvL2xlbmd0aCBvZiBrZXkKICAgIGhjZl84ICAga2V5WzE0XTsJCQkJCQkJLy9lbmNyeXB0aW9uIGtleQp9IEtFWV9TVFJDVDsKCnR5cGVkZWYgc3RydWN0IFNDQU5fUlNfU1RSQ1QgewkJCQkvLyBTY2FuIFJlc3VsdCBzdHJ1Y3R1cmUgdXNlZCBpbiB0aGUgQ0ZHX1NDQU4gTFRWCgloY2ZfMTYJY2hhbm5lbF9pZDsKCWhjZl8xNglub2lzZV9sZXZlbDsKCWhjZl8xNglzaWduYWxfbGV2ZWw7CgloY2ZfOAlic3NpZFs2XTsKCWhjZl8xNgliZWFjb25faW50ZXJ2YWxfdGltZTsKCWhjZl8xNgljYXBhYmlsaXR5OwoJaGNmXzE2CXNzaWRfbGVuOwoJaGNmXzgJc3NpZF92YWxbMzJdOwp9IFNDQU5fUlNfU1RSQ1Q7Cgp0eXBlZGVmIHN0cnVjdCBDRkdfUkFOR0VfU1BFQ19TVFJDVCB7CQkvLyByYW5nZSBzcGVjaWZpY2F0aW9uIHN0cnVjdHVyZSB1c2VkIGluIENGR19SQU5HRVMsIENGR19SQU5HRTEgZXRjCgloY2ZfMTYJdmFyaWFudDsKCWhjZl8xNglib3R0b207CgloY2ZfMTYJdG9wOwp9IENGR19SQU5HRV9TUEVDX1NUUkNUOwoKdHlwZWRlZiBzdHJ1Y3QgQ0ZHX1JBTkdFX1NQRUNfQllURV9TVFJDVCB7CS8vIGJ5dGUgb3JpZW50ZWQgcmFuZ2Ugc3BlY2lmaWNhdGlvbiBzdHJ1Y3R1cmUgdXNlZCBpbiBDRkdfUkFOR0VfQiBMVFYKCWhjZl84CXZhcmlhbnRbMl07CgloY2ZfOAlib3R0b21bMl07CgloY2ZfOAl0b3BbMl07Cn0gQ0ZHX1JBTkdFX1NQRUNfQllURV9TVFJDVDsKCi8vdXNlZCB0byBzZXQgdXAgIlQiIGZ1bmN0aW9uYWxpdHkgZm9yIEluZm8gZnJhbWVzLCBpLmUuIGxvZyBpbmZvIGZyYW1lcyBpbiBNU0Ygc3VwcGxpZWQgYnVmZmVyIGFuZCBNYWlsQm94ClhYMSggUklEX0xPRywgdW5zaWduZWQgc2hvcnQgRkFSKiwgYnVmcCApCnR5cGVkZWYgUklEX0xPR19TVFJDVCAgRkFSICpSSURfTE9HUDsKWFgxKCBDRkdfUklEX0xPRywgUklEX0xPR1AsIHJlY29yZHAgKQoKIFgxKCBMVFYsCQl2YWxbMV0gKQkJCQkJCQkJCQkJCS8qbWluaW11bSBMVFYgcHJvdG8gdHlwCSovCiBYMSggTFRWX01BWCwJdmFsW0hDRl9NQVhfTFRWXSApCQkJCQkJCQkJCS8qbWF4aW11bSBMVFYgcHJvdG8gdHlwCSovClhYMiggQ0ZHX1JFR19NQiwgaGNmXzE2KiAsIG1iX2FkZHIsIGhjZl8xNiwgbWJfc2l6ZSApCgp0eXBlZGVmIHN0cnVjdCBDRkdfTUJfSU5GT19GUkFHIHsJLy8gc3BlY2lmaWNhdGlvbiBvZiBidWZmZXIgZnJhZ21lbnQKCXVuc2lnbmVkIHNob3J0IEZBUioJZnJhZ19hZGRyOwoJaGNmXzE2CQkJCWZyYWdfbGVuOwp9IENGR19NQl9JTkZPX0ZSQUc7CgovKiBNYWlsIEJveCBJbmZvIEJsb2NrIHN0cnVjdHVyZXMsCiAqIHRoZSBiYXNlIGZvcm06IENGR19NQl9JTkZPX1NUUkNUCiAqIGFuZCB0aGUgZGVyaXZlZCBmb3JtczogQ0ZHX01CX0lORk9fUkFOR0U8bj5fU1RSQ1Qgd2l0aCBuIGlzIDEsIDIsIDMgb3IgMjAKICogcHJlZGVmaW5lZCBmb3IgYSBwYXlsb2FkIG9mIDEsIGFuZCB1cCB0byAyLCAzIGFuZCAyMCBDRkdfTUJfSU5GT19GUkFHIGVsZW1lbnRzICovClhYMyggQ0ZHX01CX0lORk8sCQkgIGhjZl8xNiwgYmFzZV90eXAsIGhjZl8xNiwgZnJhZ19jbnQsIENGR19NQl9JTkZPX0ZSQUcsIGZyYWdfYnVmWyAxXSApClhYMyggQ0ZHX01CX0lORk9fUkFOR0UxLCAgaGNmXzE2LCBiYXNlX3R5cCwgaGNmXzE2LCBmcmFnX2NudCwgQ0ZHX01CX0lORk9fRlJBRywgZnJhZ19idWZbIDFdICkKWFgzKCBDRkdfTUJfSU5GT19SQU5HRTIsICBoY2ZfMTYsIGJhc2VfdHlwLCBoY2ZfMTYsIGZyYWdfY250LCBDRkdfTUJfSU5GT19GUkFHLCBmcmFnX2J1ZlsgMl0gKQpYWDMoIENGR19NQl9JTkZPX1JBTkdFMywgIGhjZl8xNiwgYmFzZV90eXAsIGhjZl8xNiwgZnJhZ19jbnQsIENGR19NQl9JTkZPX0ZSQUcsIGZyYWdfYnVmWyAzXSApClhYMyggQ0ZHX01CX0lORk9fUkFOR0UyMCwgaGNmXzE2LCBiYXNlX3R5cCwgaGNmXzE2LCBmcmFnX2NudCwgQ0ZHX01CX0lORk9fRlJBRywgZnJhZ19idWZbMjBdICkKClhYMyggQ0ZHX01CX0FTU0VSVCwgaGNmXzE2LCBsaW5lLCBoY2ZfMTYsIHRyYWNlLCBoY2ZfMzIsIHF1YWxpZmllciApCS8qTUJJbmZvQmxvY2sgZm9yIGFzc2VydHMJKi8KI2lmIChIQ0ZfQVNTRVJUKSAmICggSENGX0FTU0VSVF9MTktfTVNGX1JUTiB8IEhDRl9BU1NFUlRfUlRfTVNGX1JUTiApCnR5cGVkZWYgdm9pZCAoTVNGX0FTU0VSVF9SVE4pKCB1bnNpZ25lZCBpbnQgLCBoY2ZfMTYsIGhjZl8zMiApOwp0eXBlZGVmIE1TRl9BU1NFUlRfUlROIC8qY2FuJ3QgbGluayBGQVIqLyAqIE1TRl9BU1NFUlRfUlROUDsKLyogQ0ZHX1JFR19BU1NFUlRfUlROUCAoMHgwODMyKQkoZGUtKXJlZ2lzdGVyIE1TRiBDYWxsYmFjayByb3V0aW5lcwogKiBsdmw6ICBBc3NlcnQgbGV2ZWwgZmlsdGVyaW5nIChub3QgeWV0IGltcGxlbWVudGVkKQogKiBydG5wOiBhZGRyZXNzIG9mIE1TRl9BU1NFUlRfUlROIChuYXRpdmUgRW5kaWFuIGZvcm1hdCkgKi8KWFgyKCBDRkdfUkVHX0FTU0VSVF9SVE5QLCBoY2ZfMTYsIGx2bCwgTVNGX0FTU0VSVF9SVE5QLCBydG5wICkKI2VuZGlmIC8vIEhDRl9BU1NFUlRfTE5LX01TRl9SVE4gLyBIQ0ZfQVNTRVJUX1JUX01TRl9SVE4KCiBYMSggQ0ZHX0hDRl9PUFQsIHZhbFsyMF0gKQkJCQkJCQkJCQkJICAJLyooQ29tcGlsZSB0aW1lKSBvcHRpb25zCSovCiBYMyggQ0ZHX0NNRF9IQ0YsIGNtZCwgbW9kZSwgYWRkX2luZm8gKQkJCQkJCQkJCS8qSENGIEVuZ2luZWVyaW5nIGNvbW1hbmQJKi8KCnR5cGVkZWYgc3RydWN0IHsKCWhjZl8xNgkJbGVuOwoJaGNmXzE2CQl0eXA7CgloY2ZfMTYJCW1vZGU7CQkJLy8gUFJPR19TVE9QL1ZPTEFUSUxFIFtGTEFTSC9TRUVQUk9NL1NFRVBST01fUkVBREJBQ0tdCgloY2ZfMTYJCXNlZ21lbnRfc2l6ZTsgIAkvLyBzaXplIG9mIHRoZSBzZWdtZW50IGluIGJ5dGVzCgloY2ZfMzIJCW5pY19hZGRyOyAgCQkvLyBkZXN0aW5hdGlvbiBhZGRyZXNzIChpbiBOSUMgbWVtb3J5KQoJaGNmXzE2CQlmbGFnczsJCQkvLyAweDAwMDEJOiBDUkMgWWVzL05vCi8vCWhjZl8zMgkJZmxhZ3M7CQkJLy8gMHgwMDAxCTogQ1JDIFllcy9ObwoJLyogOz8gc3RpbGwgbm90IHRoZSB3aG9sZSBzdG9yeQoJICogZmxhZ3MgaXMgZXh0ZW5kZWQgZnJvbSAxNiB0byAzMiBiaXRzIHRvIGZvcmNlIHRoYXQgY29tcGlsaW5nIEZXLkMgcHJvZHVjZXMgdGhlIHNhbWUgc3RydWN0dXJlcwoJICogaW4gbWVtb3J5IGFzIEZVUFU0IEJJTiBmaWxlcy4KCSAqIE5vdGUgdGhhdCB0aGUgcHJvYmxlbSBhcmlzZXMgZnJvbSB0aGUgdmlvbGF0aW9uIG9mIHRoZSBjb25zdHJhaW50IHRvIHVzZSBwYWNraW5nIGF0IGJ5dGUgYm91bmRhcmllcwoJICogYXMgd2FzIHN0aXB1bGF0ZWQgaW4gdGhlIFdDSS1zcGVjaWZpY2F0aW9uCgkgKiBUaGUgUGFjayBwcmFnbWEgY2FuJ3QgcmVzb2x2ZSB0aGlzIGlzc3VlLCBiZWNhdXNlIHRoYXQgaW1wYWN0cyBhbGwgbWVtYmVycyBvZiB0aGUgc3RydWN0dXJlIHdpdGgKCSAqIGRpc3JlZ2FyZCBvZiB0aGVpciBhY3R1YWwgc2l6ZSwgc28gYWxpZ25pbmcgaG9zdF9hZGRyIHVuZGVyIE1TVkMgMS41IGF0IDQgYnl0ZXMsIGFsc28gYWxpZ25zCgkgKiBsZW4sIHR5cCBldGMgb24gNCBieXRlcwoJICogKi8KLy8JaGNmXzE2CQlwYWQ7IAkgCQkvLyEhIGJlIGNhcmVmdWwgYWxpZ25tZW50IHByb2JsZW1zIGZvciBCaW4gZG93bmxvYWQgdmVyc3VzIEMgZG93bmxvYWQKCWhjZl84IEZBUiAgICpob3N0X2FkZHI7ICAJLy8gc291cmNlIGFkZHJlc3MgKGluIEhvc3QgbWVtb3J5KQp9IENGR19QUk9HX1NUUkNUOyAvLyBzZWdtZW50X2Rlc2NwOwoKLy8gYSBzdHJ1Y3R1cmUgdXNlZCBmb3IgdHJhbnNwb3J0aW5nIGRlYnVnLXJlbGF0ZWQgaW5mb3JtYXRpb24gZnJvbSBmaXJtd2FyZQovLyB2aWEgdGhlIEhDRiwgaW50byB0aGUgTVNGCnR5cGVkZWYgc3RydWN0IHsKICAgIGhjZl8xNiAgICAgIGxlbjsKICAgIGhjZl8xNiAgICAgIHR5cDsKICAgIGhjZl8xNiAgICAgIG1zZ19pZCwgbXNnX3BhciwgbXNnX3RzdGFtcDsKfSBDRkdfRldfUFJJTlRGX1NUUkNUOwoKLy8gYSBzdHJ1Y3R1cmUgdXNlZCB0byBkZWZpbmUgdGhlIGxvY2F0aW9uIGFuZCBzaXplIG9mIGEgY2VydGFpbiBkZWJ1Zy1yZWxhdGVkCi8vIGJ1ZmZlciBpbiBuaWMtcmFtLgp0eXBlZGVmIHN0cnVjdCB7CiAgICBoY2ZfMTYgICAgICBsZW47CiAgICBoY2ZfMTYgICAgICB0eXA7CiAgICBoY2ZfMzIgICAgICBEYk1zZ0NvdW50LCAJLy8gZHMgKG5pY3JhbSkgYWRkcmVzcyBvZiBhIGNvdW50ZXIKICAgICAgICAgICAgICAgIERiTXNnQnVmZmVyLCAJLy8gZHMgKG5pY3JhbSkgYWRkcmVzcyBvZiB0aGUgYnVmZmVyCiAgICAgICAgICAgICAgICBEYk1zZ1NpemUsIAkJLy8gbnVtYmVyIG9mIGVudHJpZXMgKGVhY2ggMyB3b3JkIGluIHNpemUpIGluIHRoaXMgYnVmZmVyCiAgICAgICAgICAgICAgICBEYk1zZ0ludHJ2bDsJLy8gZHMgKG5pY3JhbSkgYWRkcmVzcyBvZiBpbnRlcnZhbCBmb3IgZ2VuZXJhdGluZyBJbmZEcm9wIGV2ZW50Cn0gQ0ZHX0ZXX1BSSU5URl9CVUZGRVJfTE9DQVRJT05fU1RSQ1Q7CgpYWDMoIENGR19SQU5HRVMsCWhjZl8xNiwgcm9sZSwgaGNmXzE2LCBpZCwgQ0ZHX1JBTkdFX1NQRUNfU1RSQ1QsIHZhcl9yZWNbIDFdICkgLypBY3Rvci9TdXBwbGllciByYW5nZSAoMSB2YXJpYW50KSovClhYMyggQ0ZHX1JBTkdFMSwJaGNmXzE2LCByb2xlLCBoY2ZfMTYsIGlkLCBDRkdfUkFOR0VfU1BFQ19TVFJDVCwgdmFyX3JlY1sgMV0gKSAvKkFjdG9yL1N1cHBsaWVyIHJhbmdlICgxIHZhcmlhbnQpKi8KWFgzKCBDRkdfUkFOR0UyLAloY2ZfMTYsIHJvbGUsIGhjZl8xNiwgaWQsIENGR19SQU5HRV9TUEVDX1NUUkNULCB2YXJfcmVjWyAyXSApIC8qQWN0b3IgcmFuZ2UgKCAyIHZhcmlhbnRzKQkJKi8KWFgzKCBDRkdfUkFOR0UzLAloY2ZfMTYsIHJvbGUsIGhjZl8xNiwgaWQsIENGR19SQU5HRV9TUEVDX1NUUkNULCB2YXJfcmVjWyAzXSApIC8qQWN0b3IgcmFuZ2UgKCAzIHZhcmlhbnRzKQkJKi8KWFgzKCBDRkdfUkFOR0U0LAloY2ZfMTYsIHJvbGUsIGhjZl8xNiwgaWQsIENGR19SQU5HRV9TUEVDX1NUUkNULCB2YXJfcmVjWyA0XSApIC8qQWN0b3IgcmFuZ2UgKCA0IHZhcmlhbnRzKQkJKi8KWFgzKCBDRkdfUkFOR0U1LAloY2ZfMTYsIHJvbGUsIGhjZl8xNiwgaWQsIENGR19SQU5HRV9TUEVDX1NUUkNULCB2YXJfcmVjWyA1XSApIC8qQWN0b3IgcmFuZ2UgKCA1IHZhcmlhbnRzKQkJKi8KWFgzKCBDRkdfUkFOR0U2LAloY2ZfMTYsIHJvbGUsIGhjZl8xNiwgaWQsIENGR19SQU5HRV9TUEVDX1NUUkNULCB2YXJfcmVjWyA2XSApIC8qQWN0b3IgcmFuZ2UgKCA2IHZhcmlhbnRzKQkJKi8KWFgzKCBDRkdfUkFOR0U3LAloY2ZfMTYsIHJvbGUsIGhjZl8xNiwgaWQsIENGR19SQU5HRV9TUEVDX1NUUkNULCB2YXJfcmVjWyA3XSApIC8qQWN0b3IgcmFuZ2UgKCA3IHZhcmlhbnRzKQkJKi8KWFgzKCBDRkdfUkFOR0UyMCwJaGNmXzE2LCByb2xlLCBoY2ZfMTYsIGlkLCBDRkdfUkFOR0VfU1BFQ19TVFJDVCwgdmFyX3JlY1syMF0gKSAvKkFjdG9yIHJhbmdlICgyMCB2YXJpYW50cykJCSovCgovKkZyYW1lcyAqLwogWDMoIENGR19BU1NPQ19TVEFULCAgYXNzb2Nfc3RhdCwgc3RhdGlvbl9hZGRyWzNdLCB2YWxbNDZdICkgCS8qQXNzb2NpYXRpb24gc3RhdHVzLCBiYXNpYwkJCQkJKi8KIFgyKCBDRkdfQVNTT0NfU1RBVDMsIGFzc29jX3N0YXQsIHN0YXRpb25fYWRkclszXSApIAkJCQkJCQkJLyphc3NvY19zdGF0OjMJCQkqLwogWDMoIENGR19BU1NPQ19TVEFUMSwgYXNzb2Nfc3RhdCwgc3RhdGlvbl9hZGRyWzNdLCBmcmFtZV9ib2R5WzQzXSApCQkJCQkvKmFzc29jX3N0YXQ6MQkJCSovCiBYNCggQ0ZHX0FTU09DX1NUQVQyLCBhc3NvY19zdGF0LCBzdGF0aW9uX2FkZHJbM10sIG9sZF9hcF9hZGRyWzNdLCBmcmFtZV9ib2R5WzQzXSApCS8qYXNzb2Nfc3RhdDoyCQkJKi8KCi8qU3RhdGljIENvbmZpZ3VyYXRpb25zICovCiBYMSggQ0ZHX0NORl9QT1JUX1RZUEUsCQkJCXBvcnRfdHlwZQkJCSApIC8qW1NUQV0gQ29ubmVjdGlvbiBjb250cm9sIGNoYXJhY3RlcmlzdGljcwkJCQkqLwogWDEoIENGR19NQUNfQUREUiwJCQkJCW1hY19hZGRyWzNdIAkJICkgLypnZW5lcmFsOiBGQzAxLEZDMDgsRkMxMSxGQzEyLEZDMTMsRkMxNCxGQzE1LEZDMTYgCQkqLwogWDEoIENGR19DTkZfT1dOX01BQ19BRERSLAkJCW1hY19hZGRyWzNdCQkJICkKIFgxKCBDRkdfSUQsCQkJCQkJc3NpZFsxN10JCQkgKSAvKjB4RkMwMiwgMHhGQzA0LCAweEZDMEUgCQkJCQkJCQkqLwovKglYMSggQ0ZHX0RFU0lSRURfU1NJRCwJCQlzc2lkWzE3XQkJCSApCXNlZSBEeW5hbWljIENvbmZpZ3VyYXRpb25zCQkJCQkJCQkqLwogWDEoIENGR19DTkZfT1dOX0NIQU5ORUwsCQkJY2hhbm5lbAkJCQkgKSAvKkNvbW11bmljYXRpb24gY2hhbm5lbCBmb3IgQlNTIGNyZWF0aW9uCQkJCQkqLwogWDEoIENGR19DTkZfT1dOX1NTSUQsCQkJCXNzaWRbMTddCQkJICkKIFgxKCBDRkdfQ05GX09XTl9BVElNX1dJTkRPVywJCWF0aW1fd2luZG93CQkJICkKIFgxKCBDRkdfQ05GX1NZU1RFTV9TQ0FMRSwJCQlzeXN0ZW1fc2NhbGUJCSApCiBYMSggQ0ZHX0NORl9NQVhfREFUQV9MRU4sCQkJbWF4X2RhdGFfbGVuCQkgKQogWDEoIENGR19DTkZfV0RTX0FERFIsCQkJCW1hY19hZGRyWzNdCQkJICkgLypbU1RBXSBNQUMgQWRkcmVzcyBvZiBjb3JyZXNwb25kaW5nIFdEUyBMaW5rIG5vZGUJCSovCiBYMSggQ0ZHX0NORl9QTV9FTkFCTEVELAkJCXBtX2VuYWJsZWQJCQkgKSAvKltTVEFdIFN3aXRjaCBmb3IgRVNTIFBvd2VyIE1hbmFnZW1lbnQgKFBNKSBPbi9PZmYJCSovCiBYMSggQ0ZHX0NORl9QTV9FUFMsCQkJCXBtX2VwcwkJCQkgKSAvKltTVEFdIFN3aXRjaCBmb3IgRVNTIFBNIEVQUy9QUyBNb2RlCQkJCQkqLwogWDEoIENGR19DTkZfTUNBU1RfUlgsCQkJCW1jYXN0X3J4CQkJICkgLypbU1RBXSBTd2l0Y2ggZm9yIEVTUyBQTSBNdWx0aWNhc3QgcmVjZXB0aW9uIE9uL09mZgkJKi8KIFgxKCBDRkdfQ05GX01BWF9TTEVFUF9EVVJBVElPTiwJZHVyYXRpb24JCQkgKSAvKltTVEFdIE1heGltdW0gc2xlZXAgdGltZSBmb3IgRVNTIFBNCQkJCQkqLwogWDEoIENGR19DTkZfUE1fSE9MRE9WRVJfRFVSQVRJT04sCWR1cmF0aW9uCQkJICkgLypbU1RBXSBIb2xkb3ZlciB0aW1lIGZvciBFU1MgUE0JCQkJCQkJKi8KIFgxKCBDRkdfQ05GX09XTl9OQU1FLAkJCQlzc2lkWzE3XQkJCSApIC8qSWRlbnRpZmljYXRpb24gdGV4dCBmb3IgZGlhZ25vc3RpYyBwdXJwb3NlcwkJCSovCiBYMSggQ0ZHX0NORl9PV05fRFRJTV9QRVJJT0QsCQlwZXJpb2QJCQkJICkgLypbQVBdIEJlYWNvbiBpbnRlcnZhbHMgYmV0d2VlbiBzdWNjZXNzaXZlIERUSU1zCQkJKi8KIFgxKCBDRkdfQ05GX1dEU19BRERSMSwJCQkJbWFjX2FkZHJbM10JCQkgKSAvKltBUF0gUG9ydCAxIE1BQyBBZHJzIG9mIGNvcnJlc3BvbmRpbmcgV0RTIExpbmsgbm9kZQkqLwogWDEoIENGR19DTkZfV0RTX0FERFIyLAkJCQltYWNfYWRkclszXQkJCSApIC8qW0FQXSBQb3J0IDIgTUFDIEFkcnMgb2YgY29ycmVzcG9uZGluZyBXRFMgTGluayBub2RlCSovCiBYMSggQ0ZHX0NORl9XRFNfQUREUjMsCQkJCW1hY19hZGRyWzNdCQkJICkgLypbQVBdIFBvcnQgMyBNQUMgQWRycyBvZiBjb3JyZXNwb25kaW5nIFdEUyBMaW5rIG5vZGUJKi8KIFgxKCBDRkdfQ05GX1dEU19BRERSNCwJCQkJbWFjX2FkZHJbM10JCQkgKSAvKltBUF0gUG9ydCA0IE1BQyBBZHJzIG9mIGNvcnJlc3BvbmRpbmcgV0RTIExpbmsgbm9kZQkqLwogWDEoIENGR19DTkZfV0RTX0FERFI1LAkJCQltYWNfYWRkclszXQkJCSApIC8qW0FQXSBQb3J0IDUgTUFDIEFkcnMgb2YgY29ycmVzcG9uZGluZyBXRFMgTGluayBub2RlCSovCiBYMSggQ0ZHX0NORl9XRFNfQUREUjYsCQkJCW1hY19hZGRyWzNdCQkJICkgLypbQVBdIFBvcnQgNiBNQUMgQWRycyBvZiBjb3JyZXNwb25kaW5nIFdEUyBMaW5rIG5vZGUJKi8KIFgxKCBDRkdfQ05GX01DQVNUX1BNX0JVRiwJCQltY2FzdF9wbV9idWYJCSApIC8qW0FQXSBTd2l0Y2ggZm9yIFBNIGJ1ZmZlcmluZyBvZiBNdWx0aWNhc3QgTWVzc2FnZXMJKi8KIFgxKCBDRkdfQ05GX1JFSkVDVF9BTlksCQkJcmVqZWN0X2FueQkJCSApIC8qW0FQXSBTd2l0Y2ggZm9yIFBNIGJ1ZmZlcmluZyBvZiBNdWx0aWNhc3QgTWVzc2FnZXMJKi8KLy9YMSggQ0ZHX0NORl9FTkNSWVBUSU9OX0VOQUJMRUQsCWVuY3J5cHRpb24JCQkgKSAvKnNwZWNpZnkgZW5jcnlwdGlvbiB0eXBlIG9mIFR4L1J4IG1lc3NhZ2VzCQkJCSovCiBYMSggQ0ZHX0NORl9FTkNSWVBUSU9OLAkJCWVuY3J5cHRpb24JCQkgKSAvKnNwZWNpZnkgZW5jcnlwdGlvbiB0eXBlIG9mIFR4L1J4IG1lc3NhZ2VzCQkJCSovCiBYMSggQ0ZHX0NORl9BVVRIRU5USUNBVElPTiwJCWF1dGhlbnRpY2F0aW9uCQkgKSAvKnNlbGVjdHMgQXV0aGVudGljYXRpb24gYWxnb3JpdGhtCQkJCQkJKi8KIFgxKCBDRkdfQ05GX0VYQ0xfVU5FTkNSWVBURUQsCQlleGNsdWRlX3VuZW5jcnlwdGVkCSApIC8qW0FQXSBTd2l0Y2ggZm9yICdjbGVhci10ZXh0JyByeCBtZXNzYWdlIGFjY2VwdGFuY2UJCSovCiBYMSggQ0ZHX0NORl9NQ0FTVF9SQVRFLAkJCW1jYXN0X3JhdGUJCQkgKSAvKlRyYW5zbWl0IERhdGEgcmF0ZSBmb3IgTXVsdGljYXN0IGZyYW1lcwkJCQkqLwogWDEoIENGR19DTkZfSU5UUkFfQlNTX1JFTEFZLAkJaW50cmFfYnNzX3JlbGF5CQkgKSAvKltBUF0gU3dpdGNoIGZvciBJbnRyYUJCUyByZWxheQkJCQkJCQkqLwogWDEoIENGR19DTkZfTUlDUk9fV0FWRSwJCQltaWNyb193YXZlCQkJICkgLypNaWNyb1dhdmUgKFJvYnVzdG5lc3MpCQkJCQkJCQkJKi8KIFgxKCBDRkdfQ05GX0xPQURfQkFMQU5DSU5HLAkJbG9hZF9iYWxhbmNpbmcJCSApIC8qTG9hZCBCYWxhbmNpbmcJICAoQm9vbGVhbiwgMD1PRkYsIDE9T04sIGRlZmF1bHQ9MSkJCSovCiBYMSggQ0ZHX0NORl9NRURJVU1fRElTVFJJQlVUSU9OLAltZWRpdW1fZGlzdHJpYnV0aW9uCSApIC8qTWVkaXVtIERpc3RyaWJ1dGlvbiAoQm9vbGVhbiwgMD1PRkYsIDE9T04sIGRlZmF1bHQ9MSkJKi8KIFgxKCBDRkdfQ05GX0dST1VQX0FERFJfRklMVEVSLAkJZ3JvdXBfYWRkcl9maWx0ZXIJICkgLypHcm91cCBBZGRyZXNzIEZpbHRlcgkJCQkJCQkJICAgCSovCiBYMSggQ0ZHX0NORl9UWF9QT1dfTFZMLAkJCXR4X3Bvd19sdmwJCQkgKSAvKlR4IFBvd2VyIExldmVsCQkJCQkJCQkJCSAgIAkqLwpYWDQoIENGR19DTkZfQ09VTlRSWV9JTkZPLAkJCQkJCQkJIFwKCQloY2ZfMTYsIG5fY2hhbm5lbF9zZXRzLCBoY2ZfMTYsIGNvdW50cnlfY29kZVsyXSwgXAoJCWhjZl8xNiwgZW52aXJvbm1lbnQsIENIQU5ORUxfU0VULCBjaGFubmVsX3NldFsxXSApIC8qQ3VycmVudCBDb3VudHJ5IEluZm8gIAkJCQkJCQkJCSovClhYNCggQ0ZHX0NORl9DT1VOVFJZX0lORk9fTUFYLAkJCQkJCQkgXAoJCWhjZl8xNiwgbl9jaGFubmVsX3NldHMsIGhjZl8xNiwgY291bnRyeV9jb2RlWzJdLCBcCgkJaGNmXzE2LCBlbnZpcm9ubWVudCwgQ0hBTk5FTF9TRVQsIGNoYW5uZWxfc2V0WzE0XSkgLypDdXJyZW50IENvdW50cnkgSW5mbyAgCQkJCQkJCQkJKi8KCi8qRHluYW1pYyBDb25maWd1cmF0aW9ucyAqLwogWDEoIENGR19ERVNJUkVEX1NTSUQsCQkJc3NpZFsxN10JCQkJCSApCS8qW1NUQV0gU2VydmljZSBTZXQgaWRlbnRpZmljYXRpb24gZm9yIGNvbm5lY3Rpb24JKi8KI2RlZmluZSBHUk9VUF9BRERSX1NJWkUJCQkoMzIgKiA2KQkJCQkJCS8vMzIgNi1ieXRlIE1BQy1hZGRyZXNzZXMKIFgxKCBDRkdfR1JPVVBfQUREUiwJCQltYWNfYWRkcltHUk9VUF9BRERSX1NJWkUvMl0JICkJLypbU1RBXSBNdWx0aWNhc3QgTUFDIEFkZHJlc3NlcyBmb3IgUngtbWVzc2FnZQkJKi8KIFgxKCBDRkdfQ1JFQVRFX0lCU1MsCQkJY3JlYXRlX2lic3MJCQkJCSApCS8qW1NUQV0gU3dpdGNoIGZvciBJQlNTIGNyZWF0aW9uIE9uL09mZgkJCQkqLwogWDEoIENGR19SVFNfVEhSSCwJCQkJcnRzX3RocmgJCQkJCSApCS8qW1NUQV0gRnJhbWUgbGVuZ3RoIHVzZWQgZm9yIFJUUy9DVFMgaGFuZHNoYWtlCQkqLwogWDEoIENGR19UWF9SQVRFX0NOVEwsCQkJdHhfcmF0ZV9jbnRsCQkJCSApCS8qW1NUQV0gRGF0YSByYXRlIGNvbnRyb2wgZm9yIG1lc3NhZ2UgdHJhbnNtaXNzaW9uCSovCiBYMSggQ0ZHX1BST01JU0NVT1VTX01PREUsCQlwcm9taXNjdW91c19tb2RlCQkJICkJLypbU1RBXSBTd2l0Y2ggZm9yIFByb21pc2N1b3VzIG1vZGUgcmVjZXB0aW9uIE9uL09mCSovCiBYMSggQ0ZHX1dPTCwJCQkJCXdha2Vfb25fbGFuCQkJCQkgKQkvKltTVEFdIFN3aXRjaCBmb3IgV2FrZS1Pbi1MQU4gbW9kZQkJCQkJKi8KIFgxKCBDRkdfUlRTX1RIUkgwLAkJCQlydHNfdGhyaAkJCQkJICkJLypbQVBdIFBvcnQgMCBmcmFtZSBsZW5ndGggZm9yIFJUUy9DVFMgaGFuZHNoYWtlCSovCiBYMSggQ0ZHX1JUU19USFJIMSwJCQkJcnRzX3RocmgJCQkJCSApCS8qW0FQXSBQb3J0IDEgZnJhbWUgbGVuZ3RoIGZvciBSVFMvQ1RTIGhhbmRzaGFrZQkqLwogWDEoIENGR19SVFNfVEhSSDIsCQkJCXJ0c190aHJoCQkJCQkgKQkvKltBUF0gUG9ydCAyIGZyYW1lIGxlbmd0aCBmb3IgUlRTL0NUUyBoYW5kc2hha2UJKi8KIFgxKCBDRkdfUlRTX1RIUkgzLAkJCQlydHNfdGhyaAkJCQkJICkJLypbQVBdIFBvcnQgMyBmcmFtZSBsZW5ndGggZm9yIFJUUy9DVFMgaGFuZHNoYWtlCSovCiBYMSggQ0ZHX1JUU19USFJINCwJCQkJcnRzX3RocmgJCQkJCSApCS8qW0FQXSBQb3J0IDQgZnJhbWUgbGVuZ3RoIGZvciBSVFMvQ1RTIGhhbmRzaGFrZQkqLwogWDEoIENGR19SVFNfVEhSSDUsCQkJCXJ0c190aHJoCQkJCQkgKQkvKltBUF0gUG9ydCA1IGZyYW1lIGxlbmd0aCBmb3IgUlRTL0NUUyBoYW5kc2hha2UJKi8KIFgxKCBDRkdfUlRTX1RIUkg2LAkJCQlydHNfdGhyaAkJCQkJICkJLypbQVBdIFBvcnQgNiBmcmFtZSBsZW5ndGggZm9yIFJUUy9DVFMgaGFuZHNoYWtlCSovCiBYMSggQ0ZHX1RYX1JBVEVfQ05UTDAsCQkJcmF0ZV9jbnRsIAkJCQkJICkJLypbQVBdIFBvcnQgMCBkYXRhIHJhdGUgY29udHJvbCBmb3IgdHJhbnNtaXNzaW9uCSovCiBYMSggQ0ZHX1RYX1JBVEVfQ05UTDEsCQkJcmF0ZV9jbnRsCQkJCQkgKQkvKltBUF0gUG9ydCAxIGRhdGEgcmF0ZSBjb250cm9sIGZvciB0cmFuc21pc3Npb24JKi8KIFgxKCBDRkdfVFhfUkFURV9DTlRMMiwJCQlyYXRlX2NudGwJCQkJCSApCS8qW0FQXSBQb3J0IDIgZGF0YSByYXRlIGNvbnRyb2wgZm9yIHRyYW5zbWlzc2lvbgkqLwogWDEoIENGR19UWF9SQVRFX0NOVEwzLAkJCXJhdGVfY250bAkJCQkJICkJLypbQVBdIFBvcnQgMyBkYXRhIHJhdGUgY29udHJvbCBmb3IgdHJhbnNtaXNzaW9uCSovCiBYMSggQ0ZHX1RYX1JBVEVfQ05UTDQsCQkJcmF0ZV9jbnRsCQkJCQkgKQkvKltBUF0gUG9ydCA0IGRhdGEgcmF0ZSBjb250cm9sIGZvciB0cmFuc21pc3Npb24JKi8KIFgxKCBDRkdfVFhfUkFURV9DTlRMNSwJCQlyYXRlX2NudGwJCQkJCSApCS8qW0FQXSBQb3J0IDUgZGF0YSByYXRlIGNvbnRyb2wgZm9yIHRyYW5zbWlzc2lvbgkqLwogWDEoIENGR19UWF9SQVRFX0NOVEw2LAkJCXJhdGVfY250bAkJCQkJICkJLypbQVBdIFBvcnQgNiBkYXRhIHJhdGUgY29udHJvbCBmb3IgdHJhbnNtaXNzaW9uCSovClhYMSggQ0ZHX0RFRkFVTFRfS0VZUywJCQlLRVlfU1RSQ1QsIGtleVs0XQkJCSApCS8qZGVmaW5lcyBzZXQgb2YgZW5jcnlwdGlvbiBrZXlzCQkJCQkqLwogWDEoIENGR19UWF9LRVlfSUQsCQkJCXR4X2tleV9pZAkJCQkJICkJLypzZWxlY3Qga2V5IGZvciBlbmNyeXB0aW9uIG9mIFR4IG1lc3NhZ2VzCQkJKi8KIFgxKCBDRkdfU0NBTl9TU0lELAkJCQlzc2lkWzE3XQkJCQkJICkJLyppZGVudGlmaWNhdGlvbiBmb3IgY29ubmVjdGlvbgkJCQkJCSovCiBYNSggQ0ZHX0FERF9US0lQX0RFRkFVTFRfS0VZLAkJCQkJCQkJIFwKCQkgdGtpcF9rZXlfaWRfaW5mbywgdGtpcF9rZXlfaXZfaW5mb1s0XSwgdGtpcF9rZXlbOF0sIFwKCQkgdHhfbWljX2tleVs0XSwgcnhfbWljX2tleVs0XSAJCQkJCQkgKQkvKgkJCQkJCQkJCQkgICAgICAgCQkqLwogWDYoIENGR19BRERfVEtJUF9NQVBQRURfS0VZLAlic3NpZFszXSwgdGtpcF9rZXlbOF0sIAkJIFwKCQkgdHNjWzRdLCByc2NbNF0sIHR4X21pY19rZXlbNF0sIHJ4X21pY19rZXlbNF0gCQkgKQkvKgkJCQkJCQkJCQkgICAgICAgCQkqLwogWDEoIENGR19TRVRfV1BBX0FVVEhFTlRJQ0FUSU9OX1NVSVRFLCAJCQkJCQkgXAoJCSBzc25fYXV0aGVudGljYXRpb25fc3VpdGUJCQkJCQkJICkJLyoJCQkJCQkJCQkJCSAgIAkJKi8KIFgxKCBDRkdfUkVNT1ZFX1RLSVBfREVGQVVMVF9LRVksdGtpcF9rZXlfaWQJCQkJICkJLyoJCQkJCQkJCQkJCSAgIAkJKi8KIFgxKCBDRkdfVElDS19USU1FLAkJCQl0aWNrX3RpbWUJCQkJCSApCS8qQXV4aWxpYXJ5IFRpbWVyIHRpY2sgaW50ZXJ2YWwJCQkJCQkqLwogWDEoIENGR19ERFNfVElDS19USU1FLAkJCXRpY2tfdGltZQkJCQkJICkJLypEaXNjb25uZWN0ZWQgRGVlcFNsZWVwIFRpbWVyIHRpY2sgaW50ZXJ2YWwJCSovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIEFkZGVkIGZvciBQYXR0ZXJuLW1hdGNoaW5nIFdha2VPbkxhbi4gKFNlZSBmaXJtd2FyZSBkZXNpZ24gbm90ZSBXTUROMjgxQykKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBXT0xfUEFUVEVSTlMJCQkJNQkJLy8gbWF4aW11bSBvZiA1IHBhdHRlcm5zIGluIGZpcm13YXJlCiNkZWZpbmUgV09MX1BBVFRFUk5fTEVOCQkJCTEyNAkJLy8gbWF4aW11bSAxMjQgYnl0ZXMgcGF0dGVybiBsZW5ndGggcGVyIHBhdHRlcm4gaW4gZmlybXdhcmUKI2RlZmluZSBXT0xfTUFTS19MRU4JCQkgCTMwCQkvLyBtYXhpbXVtIDMwIGJ5dGVzIG1hc2sgbGVuZ3RoIHBlciBwYXR0ZXJuIGluIGZpcm13YXJlCiNkZWZpbmUgV09MX0JVRl9TSVpFCShXT0xfUEFUVEVSTlMgKiAoV09MX1BBVFRFUk5fTEVOICsgV09MX01BU0tfTEVOICsgNikgLyAyKQpYMiggQ0ZHX1dPTF9QQVRURVJOUywgblBhdHRlcm5zLCBidWZmZXJbV09MX0JVRl9TSVpFXQkJICkgIC8qW1NUQV0gV2FrZU9uTGFuIHBhdHRlcm4gbWF0Y2gsIHJvb20gZm9yIDUgcGF0dGVybnMqLwoKIFg1KCBDRkdfU1VQX1JBTkdFLAkJcm9sZSwgaWQsIHZhcmlhbnQsIGJvdHRvbSwgdG9wCQkJCSAgICkgLypbUFJJXSBQcmltYXJ5IFN1cHBsaWVyIGNvbXBhdGliaWxpdHkgcmFuZ2UJCSovCi8qIE5JQyBJbmZvcm1hdGlvbiAqLwogWDQoIENGR19JREVOVElUWSwJCQljb21wX2lkLCB2YXJpYW50LCB2ZXJzaW9uX21ham9yLCB2ZXJzaW9uX21pbm9yICkgLyppZGVudGlmaWNhdGlvbiBQcm90b3R5cGUJCQkJCQkJKi8KI2RlZmluZSBDRkdfRFJWX0lERU5USVRZX1NUUkNUCUNGR19JREVOVElUWV9TVFJDVAojZGVmaW5lIENGR19QUklfSURFTlRJVFlfU1RSQ1QJQ0ZHX0lERU5USVRZX1NUUkNUCiNkZWZpbmUgQ0ZHX05JQ19JREVOVElUWV9TVFJDVAlDRkdfSURFTlRJVFlfU1RSQ1QKI2RlZmluZSBDRkdfRldfSURFTlRJVFlfU1RSQ1QJQ0ZHX0lERU5USVRZX1NUUkNUCiBYMSggQ0ZHX1JJRF9JTkZfTUlOLAkJeQkJCQkJCQkJCQkJICAgKSAvKmxvd2VzdCB2YWx1ZSByZXByZXNlbnRpbmcgYW4gSW5mb3JtYXRpb24gUklECQkqLwogWDEoIENGR19NQVhfTE9BRF9USU1FLAkJbWF4X2xvYWRfdGltZQkJCQkJCQkJICAgKSAvKltQUkldIE1heCByZXNwb25zZSB0aW1lIG9mIHRoZSBEb3dubG9hZCBjb21tYW5kCSovCiBYMyggQ0ZHX0RMX0JVRiwJCQlidWZfcGFnZSwgYnVmX29mZnNldCwgYnVmX2xlbgkJCQkgICApIC8qW1BSSV0gRG93bmxvYWQgYnVmZmVyIGxvY2F0aW9uIGFuZCBzaXplCQkJKi8KLy8gWDUoIENGR19QUklfU1VQX1JBTkdFLAkJcm9sZSwgaWQsIHZhcmlhbnQsIGJvdHRvbSwgdG9wCQkJCSAgICkgLypbUFJJXSBQcmltYXJ5IFN1cHBsaWVyIGNvbXBhdGliaWxpdHkgcmFuZ2UJCSovCiBYNSggQ0ZHX0NGSV9BQ1RfUkFOR0VTX1BSSSxyb2xlLCBpZCwgdmFyaWFudCwgYm90dG9tLCB0b3AJCQkJICAgKSAvKltQUkldIENvbnRyb2xsZXIgQWN0b3IgY29tcGF0aWJpbGl0eSByYW5nZXMJCSovCi8vIFg1KCBDRkdfTklDX0hTSV9TVVBfUkFOR0UsCXJvbGUsIGlkLCB2YXJpYW50LCBib3R0b20sIHRvcAkJCQkgICApIC8qSC9XIC0gUy9XIEkvRiBzdXBwbGllciByYW5nZQkJCQkJCSovCiBYMSggQ0ZHX05JQ19TRVJJQUxfTlVNQkVSLAlzZXJpYWxfbnVtYmVyWzE3XQkJCQkJCQkgICApIC8qW1BSSV0gTmV0d29yayBJL0YgQ2FyZCBzZXJpYWwgbnVtYmVyCQkJCSovCiBYNSggQ0ZHX05JQ19NRklfU1VQX1JBTkdFLAlyb2xlLCBpZCwgdmFyaWFudCwgYm90dG9tLCB0b3AJCQkJICAgKSAvKltQUkldIE1vZGVtIEkvRiBTdXBwbGllciBjb21wYXRpYmlsaXR5IHJhbmdlCQkqLwogWDUoIENGR19OSUNfQ0ZJX1NVUF9SQU5HRSwJcm9sZSwgaWQsIHZhcmlhbnQsIGJvdHRvbSwgdG9wCQkJCSAgICkgLypbUFJJXSBDb250cm9sbGVyIEkvRiBTdXBwbGllciBjb21wYXRpYmlsaXR5IHJhbmdlKi8KLy9ILUkgWDEoIENGR19DSEFOTkVMX0xJU1QsCQljaGFubmVsX2xpc3QJCQkJCQkJCSAgICkgLypBbGxvd2VkIGNvbW11bmljYXRpb24gY2hhbm5lbHMJCQkJCSovCi8vSC1JIFhYMiggQ0ZHX1JFR19ET01BSU5TLAkJaGNmXzE2LCBudW1fZG9tYWluLCBoY2ZfOCwgcmVnX2RvbWFpbnNbMTBdCSAgICkgLypMaXN0IG9mIGludGVuZGVkIHJlZ3VsYXRvcnkgZG9tYWlucwkJCQkqLwogWDEoIENGR19OSUNfVEVNUF9UWVBFLAkJdGVtcF90eXBlCQkJCQkJCQkJICAgKSAvKkhhcmR3YXJlIHRlbXBlcmF0dXJlIHJhbmdlIGNvZGUJCQkJCSovCi8vSC1JIFgxKCBDRkdfQ0lTLAkJCQljaXNbMjQwXQkJCQkJCQkJCSAgICkgLypQQyBDYXJkIFN0YW5kYXJkIENhcmQgSW5mb3JtYXRpb24gU3RydWN0dXJlCQkqLwogWDUoIENGR19OSUNfUFJPRklMRSwJCQkJCQkJCQkJCQkJICAgXAoJCSBwcm9maWxlX2NvZGUsIGNhcGFiaWxpdHlfb3B0aW9ucywgYWxsb3dlZF9kYXRhX3JhdGVzLCB2YWw0LCB2YWw1ICApIC8qQ2FyZCBQcm9maWxlCQkJCQkJCQkJCSovCi8vIFg1KCBDRkdfRldfU1VQX1JBTkdFLAkJcm9sZSwgaWQsIHZhcmlhbnQsIGJvdHRvbSwgdG9wCQkJCSAgICkgLypbU1RBXSBTdGF0aW9uIEkvRiBTdXBwbGllciBjb21wYXRpYmlsaXR5IHJhbmdlCSovCiBYNSggQ0ZHX01GSV9BQ1RfUkFOR0VTLAlyb2xlLCBpZCwgdmFyaWFudCwgYm90dG9tLCB0b3AJCQkJICAgKSAvKltTVEFdIE1vZGVtIEkvRiBBY3RvciBjb21wYXRpYmlsaXR5IHJhbmdlcwkJKi8KIFg1KCBDRkdfQ0ZJX0FDVF9SQU5HRVNfU1RBLHJvbGUsIGlkLCB2YXJpYW50LCBib3R0b20sIHRvcAkJCQkgICApIC8qW1NUQV0gQ29udHJvbGxlciBJL0YgQWN0b3IgY29tcGF0aWJpbGl0eSByYW5nZXMJKi8KIFg1KCBDRkdfTUZJX0FDVF9SQU5HRVNfU1RBLHJvbGUsIGlkLCB2YXJpYW50LCBib3R0b20sIHRvcAkJCQkgICApIC8qW1NUQV0gQ29udHJvbGxlciBJL0YgQWN0b3IgY29tcGF0aWJpbGl0eSByYW5nZXMJKi8KIFgxKCBDRkdfTklDX0JVU19UWVBFLAkJbmljX2J1c190eXBlCQkJCQkJCQkgICApIC8qTklDIGJ1c3R5cGUgZGVyaXZlZCBmcm9tIEJVU1NFTCBob3N0IEkvRiBzaWduYWxzICovCgovKglNQUMgSU5GT1JNQVRJT04JKi8KIFgxKCBDRkdfUE9SVF9TVEFULAkJCQlwb3J0X3N0YXQJCQkJCQkJICkgLypbU1RBXSBBY3R1YWwgTUFDIFBvcnQgY29ubmVjdGlvbiBjb250cm9sIHN0YXR1cwkJKi8KIFgxKCBDRkdfQ1VSX1NTSUQsCQkJCXNzaWRbMTddCQkJCQkJCSApIC8qW1NUQV0gSWRlbnRpZmljYXRpb24gb2YgdGhlIGFjdHVhbGx5IGNvbm5lY3RlZCBTUwkJKi8KIFgxKCBDRkdfQ1VSX0JTU0lELAkJCQltYWNfYWRkclszXQkJCQkJCQkgKSAvKltTVEFdIElkZW50aWZpY2F0aW9uIG9mIHRoZSBhY3R1YWxseSBjb25uZWN0ZWQgQlNTCQkqLwogWDMoIENGR19DT01NU19RVUFMSVRZLAkJCWNvbXNfcXVhbCwgc2lnbmFsX2x2bCwgbm9pc2VfbHZsCSApIC8qW1NUQV0gUXVhbGl0eSBvZiB0aGUgQmFzaWMgU2VydmljZSBTZXQgY29ubmVjdGlvbgkJKi8KIFgxKCBDRkdfQ1VSX1RYX1JBVEUsCQkJcmF0ZQkJCQkJCQkJICkgLypbU1RBXSBBY3R1YWwgdHJhbnNtaXQgZGF0YSByYXRlCQkJCQkJKi8KIFgxKCBDRkdfQ1VSX0JFQUNPTl9JTlRFUlZBTCwJaW50ZXJ2YWwJCQkJCQkJICkgLypCZWFjb24gdHJhbnNtaXQgaW50ZXJ2YWwgdGltZSBmb3IgQlNTIGNyZWF0aW9uCQkJKi8KI2lmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9XQVJQCiBYMTEoIENGR19DVVJfU0NBTEVfVEhSSCwJCQkJCQkJCQkJCSBcCgkgY2Fycmllcl9kZXRlY3RfdGhyaF9jY2ssIGNhcnJpZXJfZGV0ZWN0X3Rocmhfb2ZkbSwgZGVmZXJfdGhyaCwJIFwKCSBlbmVyZ3lfZGV0ZWN0X3RocmgsIHJzc2lfb25fdGhyaF9kZXZpYXRpb24sIAkJCQkJIFwKCSByc3NpX29mZl90aHJoX2RldmlhdGlvbiwgY2NrX2Ryb3BfdGhyaCwgb2ZkbV9kcm9wX3RocmgsIAkJIFwKCSBjZWxsX3NlYXJjaF90aHJoLCBvdXRfb2ZfcmFuZ2VfdGhyaCwgZGVsdGFfc25yCQkJCSApCiNlbHNlCiBYNiggQ0ZHX0NVUl9TQ0FMRV9USFJILAkJCQkJCQkJCQkJIFwKCSBlbmVyZ3lfZGV0ZWN0X3RocmgsIGNhcnJpZXJfZGV0ZWN0X3RocmgsIGRlZmVyX3RocmgsIAkJCSBcCgkgY2VsbF9zZWFyY2hfdGhyaCwgb3V0X29mX3JhbmdlX3RocmgsIGRlbHRhX3NucgkJCQkJICkgLypBY3R1YWwgU3lzdGVtIFNjYWxlIHRocmVzaG9sZHMgc2V0dGluZ3MJCQkJKi8KI2VuZGlmIC8vIEhDRl9UWVBFX1dBUlAKIFgxKCBDRkdfUFJPVE9DT0xfUlNQX1RJTUUsCQl0aW1lCQkJCQkJCQkgKSAvKk1heCB0aW1lIHRvIGF3YWl0IGEgcmVzcG9uc2UgdG8gYSByZXF1ZXN0IG1lc3NhZ2UJCSovCiBYMSggQ0ZHX0NVUl9TSE9SVF9SRVRSWV9MSU1JVCwJbGltaXQJCQkJCQkJCSApIC8qTWF4IG51bWJlciBvZiB0cmFuc21pdCBhdHRlbXB0cyBmb3Igc2hvcnQgZnJhbWVzCQkqLwogWDEoIENGR19DVVJfTE9OR19SRVRSWV9MSU1JVCwJbGltaXQJCQkJCQkJCSApIC8qTWF4IG51bWJlciBvZiB0cmFuc21pdCBhdHRlbXB0cyBmb3IgbG9uZyBmcmFtZXMJCSovCiBYMSggQ0ZHX01BWF9UWF9MSUZFVElNRSwJCXRpbWUJCQkJCQkJCSApIC8qTWF4IHRyYW5zbWl0IGZyYW1lIGhhbmRsaW5nIGR1cmF0aW9uCQkJCQkqLwogWDEoIENGR19NQVhfUlhfTElGRVRJTUUsCQl0aW1lCQkJCQkJCQkgKSAvKk1heCByZWNlaXZlZCBmcmFtZSBoYW5kbGluZyBkdXJhdGlvbgkJCQkJKi8KIFgxKCBDRkdfQ0ZfUE9MTEFCTEUsCQkJY2ZfcG9sbGFibGUJCQkJCQkJICkgLypbU1RBXSBDb250ZW50aW9uIEZyZWUgcG9sbGFibGUgY2FwYWJpbGl0eSBpbmRpY2F0aW9uCSovCiBYMiggQ0ZHX0FVVEhFTlRJQ0FUSU9OX0FMR09SSVRITVMsYXV0aGVudGljYXRpb25fdHlwZSwgdHlwZV9lbmFibGVkICkgLypBdXRoZW50aWNhdGlvbiBBbGdvcml0aG0JCQkJCQkJCSovCiBYMSggQ0ZHX1BSSVZBQ1lfT1BUX0lNUExFTUVOVEVELHByaXZhY3lfb3B0X2ltcGxlbWVudGVkCQkJICkgLypXRVAgT3B0aW9uIGF2YWlsYWJpbGl0eSBpbmRpY2F0aW9uCQkJCQkJKi8KIFgxKCBDRkdfQ1VSX1JFTU9URV9SQVRFUywJCXJhdGVzCQkJCQkJCQkgKSAvKkN1cnJlbnRSZW1vdGVSYXRlcwkJCQkJCQkJCQkqLwogWDEoIENGR19DVVJfVVNFRF9SQVRFUywJCXJhdGVzCQkJCQkJCQkgKSAvKkN1cnJlbnRVc2VkUmF0ZXMJCQkJCQkJCQkJKi8KIFgxKCBDRkdfQ1VSX1NZU1RFTV9TQ0FMRSwJCWN1cnJlbnRfc3lzdGVtX3NjYWxlCQkJCSApIC8qQ3VycmVudFVzZWRSYXRlcwkJCQkJCQkJCQkqLwogWDEoIENGR19DVVJfVFhfUkFURTEsCQkJcmF0ZSAJCQkJCQkJCSApIC8qW0FQXSBBY3R1YWwgUG9ydCAxIHRyYW5zbWl0IGRhdGEgcmF0ZQkJCQkJKi8KIFgxKCBDRkdfQ1VSX1RYX1JBVEUyLAkJCXJhdGUJCQkJCQkJCSApIC8qW0FQXSBBY3R1YWwgUG9ydCAyIHRyYW5zbWl0IGRhdGEgcmF0ZQkJCQkJKi8KIFgxKCBDRkdfQ1VSX1RYX1JBVEUzLAkJCXJhdGUJCQkJCQkJCSApIC8qW0FQXSBBY3R1YWwgUG9ydCAzIHRyYW5zbWl0IGRhdGEgcmF0ZQkJCQkJKi8KIFgxKCBDRkdfQ1VSX1RYX1JBVEU0LAkJCXJhdGUJCQkJCQkJCSApIC8qW0FQXSBBY3R1YWwgUG9ydCA0IHRyYW5zbWl0IGRhdGEgcmF0ZQkJCQkJKi8KIFgxKCBDRkdfQ1VSX1RYX1JBVEU1LAkJCXJhdGUJCQkJCQkJCSApIC8qW0FQXSBBY3R1YWwgUG9ydCA1IHRyYW5zbWl0IGRhdGEgcmF0ZQkJCQkJKi8KIFgxKCBDRkdfQ1VSX1RYX1JBVEU2LAkJCXJhdGUJCQkJCQkJCSApIC8qW0FQXSBBY3R1YWwgUG9ydCA2IHRyYW5zbWl0IGRhdGEgcmF0ZQkJCQkJKi8KIFgxKCBDRkdfT1dOX01BQ19BRERSLAkJCW1hY19hZGRyWzNdCQkJCQkJCSApIC8qW0FQXSBVbmlxdWUgbG9jYWwgbm9kZSBNQUMgQWRkcmVzcwkJCQkJCSovCiBYMyggQ0ZHX1BDRl9JTkZPLAkJCQltZWRpdW1fb2NjdXBhbmN5X2xpbWl0LCAJCQkgXAoJCSAJCQkJCQljZnBfcGVyaW9kLCBjZnBfbWF4X2R1cmF0aW9uIAkJICkgLypbQVBdIFBvaW50IENvb3JkaW5hdGlvbiBGdW5jdGlvbiBjYXBhYmlsaXR5IGluZm8JCSovCiBYMSggQ0ZHX0NVUl9XUEFfSU5GT19FTEVNRU5ULCBzc25faW5mb19lbGVtZW50WzFdCQkJCSAJICkgLyogICAgCQkJCQkJCQkJCQkJCSovCiBYNCggQ0ZHX0NVUl9US0lQX0lWX0lORk8sIAkJCQkJCQkJCQkJIFwKCQkgdGtpcF9zZXFfY250MFs0XSwgdGtpcF9zZXFfY250MVs0XSwgCQkJCQkJIFwKCQkgdGtpcF9zZXFfY250Mls0XSwgdGtpcF9zZXFfY250M1s0XSAgCQkJCQkJICkgLyogICAgCQkJCQkJCQkJCQkJCSovCiBYMiggQ0ZHX0NVUl9BU1NPQ19SRVFfSU5GTywJZnJhbWVfdHlwZSwgZnJhbWVfYm9keVsxXQkJCSApIC8qCTB4RkQ4QwkJCQkJCQkJCQkJCSovCiBYMiggQ0ZHX0NVUl9BU1NPQ19SRVNQX0lORk8sCWZyYW1lX3R5cGUsIGZyYW1lX2JvZHlbMV0JCQkgKSAvKgkweEZEOEQJCQkJCQkJCQkJCQkqLwoKCi8qCU1vZGVtIElORk9STUFUSU9OICovCiBYMSggQ0ZHX1BIWV9UWVBFLAkJCQlwaHlfdHlwZSAJCQkJCQkJICkgLypQaHlzaWNhbCBsYXllciB0eXBlIGluZGljYXRpb24JCQkJCQkJKi8KIFgxKCBDRkdfQ1VSX0NIQU5ORUwsCQkJY3VycmVudF9jaGFubmVsCQkJCQkJICkgLypBY3R1YWwgZnJlcXVlbmN5IGNoYW5uZWwgdXNlZCBmb3IgdHJhbnNtaXNzaW9uCQkJKi8KIFgxKCBDRkdfQ1VSX1BPV0VSX1NUQVRFLAkJY3VycmVudF9wb3dlcl9zdGF0ZQkJCQkJICkgLypBY3R1YWwgcG93ZXIgY29uc3VtcHRpb24gc3RhdHVzCQkJCQkJKi8KIFgxKCBDRkdfQ0NBTU9ERSwJCQkJY2NhX21vZGUJCQkJCQkJICkgLypDbGVhciBjaGFubmVsIGFzc2Vzc21lbnQgbW9kZSBpbmRpY2F0aW9uCQkJCSovCiBYMSggQ0ZHX1NVUFBPUlRFRF9EQVRBX1JBVEVTLAlyYXRlc1s1XQkJCQkJCQkgKSAvKkRhdGEgcmF0ZXMgY2FwYWJpbGl0eSBpbmZvcm1hdGlvbgkJCQkJCSovCgoKLyogRlJBTUVTICovClhYMSggQ0ZHX1NDQU4sCQkJCQlTQ0FOX1JTX1NUUkNULCBzY2FuX3Jlc3VsdFszMl0JCSApIC8qU2NhbiByZXN1bHRzCQkJCQkJCQkJCQkqLwoKCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFVJTCBtYW5hZ2VtZW50IGZ1bmN0aW9uIHRvIGJlIHBhc3NlZCB0byBXYXZlTEFOL0lFRUUgRHJpdmVycyBpbiBEVUlfU1RSQ1QgZmllbGQgZnVuCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhDRiBhbmQgVUlMIENvbW1vbgojZGVmaW5lIE1ERF9BQ1RfU0NBTgkJCTB4MDYJCQkJCS8vIEhlcm1lcyBJbnF1aXJlIFNjYW4gKEYxMDEpIGNvbW1hbmQKI2RlZmluZSBNRERfQUNUX1BSU19TQ0FOIAkJMHgwNwkJCQkJLy8gSGVybWVzIFByb2JlIFJlc3BvbnNlIFNjYW4gKEYxMDIpIGNvbW1hbmQKCi8vIFVJTCBTcGVjaWZpYwojZGVmaW5lIFVJTF9GVU5fQ09OTkVDVAkJCTB4MDAJCQkJCS8vIFBlcmZvcm0gY29ubmVjdCBjb21tYW5kCiNkZWZpbmUgVUlMX0ZVTl9ESVNDT05ORUNUCQkweDAxCQkJCQkvLyBQZXJmb3JtIGRpc2Nvbm5lY3QgY29tbWFuZAojZGVmaW5lIFVJTF9GVU5fQUNUSU9OCQkJMHgwMgkJCQkJLy8gUGVyZm9ybSBVSUwgQWN0aW9uIGNvbW1hbmQuCiNkZWZpbmUgVUlMX0ZVTl9TRU5EX0RJQUdfTVNHCTB4MDMJCQkJCS8vIFNlbmQgYSBkaWFnbm9zdGljIG1lc3NhZ2UuCiNkZWZpbmUgVUlMX0ZVTl9HRVRfSU5GTwkJMHgwNAkJCQkJLy8gUmV0cmlldmUgaW5mb3JtYXRpb24gZnJvbSBOSUMuCiNkZWZpbmUgVUlMX0ZVTl9QVVRfSU5GTwkJMHgwNQkJCQkJLy8gUHV0IGluZm9ybWF0aW9uIG9uIE5JQy4KCi8qCVVJTF9BQ1RfVEFMTElFUwkJCQkweDA1CQkgCQkJKiB0aGlzIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQgdG8gdGhlIFVTRgoJCQkJCQkJCQkJCSAJCQkqIGl0IGlzIHNvbGVseSBpbnRlbmRlZCBhcyBhIHN0cmF0ZWdpYyBjaG9pY2UgZm9yIHRoZSBNU0YgdG8gZWl0aGVyCgkJCQkJCQkJCQkJIAkJCSogLSB1c2UgSENGX0FDVF9UQUxMSUVTIGFuZCBkaXJlY3QgSUZCIGFjY2VzcwoJCQkJCQkJCQkJCQkJCSogLSB1c2UgQ0ZHX1RBTExJRVMKCQkJCQkJCQkJCQkJCQkqLwojZGVmaW5lIFVJTF9BQ1RfU0NBTgkJCU1ERF9BQ1RfU0NBTgojZGVmaW5lIFVJTF9BQ1RfUFJTX1NDQU4gCQlNRERfQUNUX1BSU19TQ0FOCiNkZWZpbmUgVUlMX0FDVF9CTE9DSwkgCQkweDBCCiNkZWZpbmUgVUlMX0FDVF9VTkJMT0NLCSAJCTB4MEMKI2RlZmluZSBVSUxfQUNUX1JFU0VUCSAJCTB4ODAKI2RlZmluZSBVSUxfQUNUX1JFQklORAkgCQkweDgxCiNkZWZpbmUgVUlMX0FDVF9BUFBMWQkgCQkweDgyCiNkZWZpbmUgVUlMX0FDVF9ESVNDT05ORUNUCQkweDgzCS8vOz8wNDAxMDggcG9zc2libHkgb2Jzb2xldGUJLy9TcGVjaWFsIGZvciBXSU5DRQoKLy8gSENGIFNwZWNpZmljCi8qIE5vdGUgdGhhdCBVSUxfQUNULWNvZGVzIG11c3QgbWF0Y2ggSENGX0FDVC1jb2RlcyBhY3Jvc3MgYSBydW4tdGltZSBib3VuZCBJL0YKICogVGhlIGluaXRpYWwgbWF0Y2hpbmcgaXMgYWNoaWV2ZWQgYnkgIiNkZWZpbmUgSENGX0FDVF94eHggSENGX1VJTF9BQ1RfeHh4IiB3aGVyZSBhcHByb3ByaWF0ZQogKiBJbiBvdGhlciB3b3JkcywgdGhlc2UgY29kZXMgc2hvdWxkIG5ldmVyLCBldmVyIGNoYW5nZSB0byBtaW5pbWl6ZSBtaWdyYXRpb24gcHJvYmxlbXMgYmV0d2VlbgogKiBjb21iaW5hdGlvbnMgb2Ygb2xkIGRyaXZlcnMgYW5kIG5ldyB1dGlsaXRpZXMgYW5kIHZpY2UgdmVyc2EKICovCiNkZWZpbmUgSENGX0RJU0NPTk5FQ1QJCQkweDAxCQkJCQkvL2Rpc2Nvbm5lY3QgcmVxdWVzdCBmb3IgaGNmX2Nvbm5lY3QgKGludmFsaWQgYXMgSU8gQWRkcmVzcykKI2RlZmluZSBIQ0ZfQUNUX1RBTExJRVMgCQkweDA1CQkJCQkvLyAhIFVJTF9BQ1RfVEFMTElFUyBkb2VzIG5vdCBleGlzdCAhIEhlcm1lcyBJbnF1aXJlIFRhbGxpZXMgKEYxMDApIGNtZAojaWYgKCAoSENGX1RZUEUpICYgSENGX1RZUEVfV0FSUCApID09IDAKI2RlZmluZSBIQ0ZfQUNUX1NDQU4JCQlNRERfQUNUX1NDQU4KI2VuZGlmIC8vIEhDRl9UWVBFX1dBUlAKI2RlZmluZSBIQ0ZfQUNUX1BSU19TQ0FOCQlNRERfQUNUX1BSU19TQ0FOCiNpZiBIQ0ZfSU5UX09OCiNkZWZpbmUgSENGX0FDVF9JTlRfT0ZGIAkJMHgwRAkJCQkJLy8gRGlzYWJsZSBJbnRlcnJ1cHQgZ2VuZXJhdGlvbgojZGVmaW5lIEhDRl9BQ1RfSU5UX09OCQkJMHgwRQkJCQkJLy8gRW5hYmxlIEludGVycnVwdCBnZW5lcmF0aW9uCiNkZWZpbmUgSENGX0FDVF9JTlRfRk9SQ0VfT04JMHgwRgkJCQkJLy8gRW5mb3JjZSBFbmFibGUgSW50ZXJydXB0IGdlbmVyYXRpb24KI2VuZGlmIC8vIEhDRl9JTlRfT04KI2RlZmluZSBIQ0ZfQUNUX1JYX0FDSwkJCTB4MTUJCQkJCS8vIFJlY2VpZXZlciBBQ0sgKG9wdGltaXphdGlvbikKI2lmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9DQ1gKI2RlZmluZSBIQ0ZfQUNUX0NDWF9PTgkJCTB4MUEJCQkJCS8vIGVuYWJsZSBDS0lQCiNkZWZpbmUgSENGX0FDVF9DQ1hfT0ZGCQkJMHgxQgkJCQkJLy8gZGlzYWJsZSBDS0lQCiNlbmRpZiAvLyBIQ0ZfVFlQRV9DQ1gKI2lmIChIQ0ZfU0xFRVApICYgSENGX0REUwojZGVmaW5lIEhDRl9BQ1RfU0xFRVAJCQkweDFDCQkJCQkvLyBERFMgU2xlZXAgcmVxdWVzdAovLyNkZWZpbmUgSENGX0FDVF9XQUtFVVAJCTB4MUQJCQkJCS8vIEREUyBXYWtldXAgcmVxdWVzdAojZW5kaWYgLy8gSENGX0REUwoKLyoJSENGX0FDVF9NQVgJCQkJCQkJLy8geHh4eDogc3RhcnQgdmFsdWUgZm9yIFVJTC1yYW5nZSwgTk9UIHRvIGJlIHBhc3NlZCB0byBIQ0YKICoJCQkJCQkJCQkJVG9vIGJhZCwgdGhlcmUgd2FzIG9yaWdpbmFsbHkgbm8gc3BhcmUgcm9vbSBjcmVhdGVkIHRvIHVzZQogKgkJCQkJCQkJCQlIQ0ZfQUNUX01BWCBhcyBhbiBlcXVpdmFsZW50IG9mIEhDRl9FUlJfTUFYLiBTaW5jZSBjcmVhdGluZwogKgkJCQkJCQkJCQl0aGlzIHJvb20gaW4gcmV0cm9zcGVjdCB3b3VsZCBjcmVhdGUgYSBiYWNrd2FyZCBpbmNvbXBhdGliaWxpdHkKICoJCQkJCQkJCQkJd2Ugd2lsbCBqdXN0IGhhdmUgdG8gbGl2ZSB3aXRoIHRoZSBoYXBoYXphcmQgc2VxdWVuY2Ugb2YKICoJCQkJCQkJCQkJVUlMLSBhbmQgSENGIHNwZWNpZmljIGNvZGVzLiBUaGVvcmV0aWNhbGx5IHRoaXMgY291bGQgYmUKICoJCQkJCQkJCQkJY29ycmVjdGVkIHdoZW4gYW5kIGlmIHRoZXJlIHdpbGwgZXZlciBiZSBhbiBvdmVyYWxsCiAqCQkJCQkJCQkJCWluY29tcGF0aWJpbGl0eSBpbnRyb2R1Y2VkIGZvciBhbm90aGVyIHJlYXNvbgogKi8KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIRVJNRVMgUkVDT1JEUwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KI2RlZmluZSBDRkdfUklEX0ZXX01JTgkJCQkJCQkweEZBMDAJLy9sb3dlc3QgdmFsdWUgcmVwcmVzZW50aW5nIGEgSGVybWVzLUlJIGJhc2VkIFJJRAovLyAjZGVmaW5lIENGR19QREFfQkVHSU4JCQkJCQkweEZBCS8vCi8vICNkZWZpbmUgQ0ZHX1BEQV9FTkQJCQkJCQkJMHhGQQkvLwovLyAjZGVmaW5lIENGR19QREFfTklDX1RPUF9MVkxfQVNTRU1CTFlfTlVNQkVSCTB4RkEJLy8KLy8gI2RlZmluZSBDRkdfUERBX1BDQl9UUkFDRVJfTlVNQkVSCQkJMHhGQQkvLwovLyAjZGVmaW5lIENGR19QREFfUk1NX1RSQUNFUl9OVU1CRVIJCQkweEZBCS8vCi8vICNkZWZpbmUgQ0ZHX1BEQV9STU1fQ09NUF9JRAkJCQkJMHhGQQkvLwovLyAjZGVmaW5lIENGR19QREFfCQkJCQkJCQkweEZBCS8vCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQ09ORklHVVJBVElPTiBSRUNPUkRTCT09PT09PT09PT09PT09PT09PT09PSovCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBtYXNrIDB4RkN4eAkJCQk9PT09PT09PT09PT09PT09PT09PT0qLwojZGVmaW5lIENGR19SSURfQ0ZHX01JTgkJCQkJMHhGQzAwCQkvL2xvd2VzdCB2YWx1ZSByZXByZXNlbnRpbmcgYSBIZXJtZXMgY29uZmlndXJhdGlvbiAgUklECgovLwlORVRXT1JLIFBBUkFNRVRFUlMsIFNUQVRJQyBDT05GSUdVUkFUSU9OIEVOVElUSUVTCi8vRkMwNSwgRkMwQiwgRkMwQywgRkMwRDogU0VFIFcyRE4xNDkKCiNkZWZpbmUgQ0ZHX0NORl9QT1JUX1RZUEUJCQkJMHhGQzAwCQkvL1tTVEFdIENvbm5lY3Rpb24gY29udHJvbCBjaGFyYWN0ZXJpc3RpY3MKI2RlZmluZSBDRkdfQ05GX09XTl9NQUNfQUREUgkJCTB4RkMwMQkJLy9bU1RBXSBNQUMgQWRkcmVzcyBvZiB0aGlzIG5vZGUKLy8JCQkJCQkJCQkJMHhGQzAyCQlzZWUgRFlOQU1JQyBDT05GSUdVUkFUSU9OIEVOVElUSUVTCiNkZWZpbmUgQ0ZHX0NORl9PV05fQ0hBTk5FTAkJCQkweEZDMDMJCS8vQ29tbXVuaWNhdGlvbiBjaGFubmVsIGZvciBCU1MgY3JlYXRpb24KI2RlZmluZSBDRkdfQ05GX09XTl9TU0lECQkJCTB4RkMwNAkJLy9JQlNTIGNyZWF0aW9uIChTVEEpIG9yIEVTUyAoQVApIFNlcnZpY2UgU2V0IElkZW50CiNkZWZpbmUgQ0ZHX0NORl9PV05fQVRJTV9XSU5ET1cJCQkweEZDMDUJCS8vW1NUQV0gQVRJTSBXaW5kb3cgdGltZSBmb3IgSUJTUyBjcmVhdGlvbgojZGVmaW5lIENGR19DTkZfU1lTVEVNX1NDQUxFCQkJMHhGQzA2CQkvL1N5c3RlbSBTY2FsZSB0aGF0IHNwZWNpZmllcyB0aGUgQVAgZGVuc2l0eQojZGVmaW5lIENGR19DTkZfTUFYX0RBVEFfTEVOCQkJMHhGQzA3CQkvL01heGltdW0gbGVuZ3RoIG9mIE1BQyBGcmFtZSBCb2R5IGRhdGEKI2RlZmluZSBDRkdfQ05GX1BNX0VOQUJMRUQJCQkJMHhGQzA5CQkvL1tTVEFdIFN3aXRjaCBmb3IgRVNTIFBvd2VyIE1hbmFnZW1lbnQgKFBNKQojZGVmaW5lIENGR19DTkZfTUNBU1RfUlgJCQkJMHhGQzBCCQkvL1tTVEFdIFN3aXRjaCBmb3IgRVNTIFBNIE11bHRpY2FzdCByZWNlcHRpb24gT24vT2ZmCiNkZWZpbmUgQ0ZHX0NORl9NQVhfU0xFRVBfRFVSQVRJT04JCTB4RkMwQwkJLy9bU1RBXSBNYXhpbXVtIHNsZWVwIHRpbWUgZm9yIEVTUyBQTQojZGVmaW5lIENGR19DTkZfSE9MRE9WRVJfRFVSQVRJT04JCTB4RkMwRAkJLy9bU1RBXSBIb2xkb3ZlciB0aW1lIGZvciBFU1MgUE0KI2RlZmluZSBDRkdfQ05GX09XTl9OQU1FCQkJCTB4RkMwRQkJLy9JZGVudGlmaWNhdGlvbiB0ZXh0IGZvciBkaWFnbm9zdGljIHB1cnBvc2VzCgojZGVmaW5lIENGR19DTkZfT1dOX0RUSU1fUEVSSU9ECQkJMHhGQzEwCQkvL1tBUF0gQmVhY29uIGludGVydmFscyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgRFRJTXMKI2RlZmluZSBDRkdfQ05GX1dEU19BRERSMQkJCQkweEZDMTEJCS8vW0FQXSBQb3J0IDEgTUFDIEFkcnMgb2YgY29ycmVzcG9uZGluZyBXRFMgTGluayBub2RlCiNkZWZpbmUgQ0ZHX0NORl9XRFNfQUREUjIJCQkJMHhGQzEyCQkvL1tBUF0gUG9ydCAyIE1BQyBBZHJzIG9mIGNvcnJlc3BvbmRpbmcgV0RTIExpbmsgbm9kZQojZGVmaW5lIENGR19DTkZfV0RTX0FERFIzCQkJCTB4RkMxMwkJLy9bQVBdIFBvcnQgMyBNQUMgQWRycyBvZiBjb3JyZXNwb25kaW5nIFdEUyBMaW5rIG5vZGUKI2RlZmluZSBDRkdfQ05GX1dEU19BRERSNAkJCQkweEZDMTQJCS8vW0FQXSBQb3J0IDQgTUFDIEFkcnMgb2YgY29ycmVzcG9uZGluZyBXRFMgTGluayBub2RlCiNkZWZpbmUgQ0ZHX0NORl9XRFNfQUREUjUJCQkJMHhGQzE1CQkvL1tBUF0gUG9ydCA1IE1BQyBBZHJzIG9mIGNvcnJlc3BvbmRpbmcgV0RTIExpbmsgbm9kZQojZGVmaW5lIENGR19DTkZfV0RTX0FERFI2CQkJCTB4RkMxNgkJLy9bQVBdIFBvcnQgNiBNQUMgQWRycyBvZiBjb3JyZXNwb25kaW5nIFdEUyBMaW5rIG5vZGUKI2RlZmluZSBDRkdfQ05GX1BNX01DQVNUX0JVRgkJCTB4RkMxNwkJLy9bQVBdIFN3aXRjaCBmb3IgUE0gYnVmZmVyZWluZyBvZiBNdWx0aWNhc3QgTWVzc2FnZXMKI2RlZmluZSBDRkdfQ05GX01DQVNUX1BNX0JVRgkJCUNGR19DTkZfUE1fTUNBU1RfQlVGCS8vbmFtZSBkb2VzIG5vdCBtYXRjaCBILUlJIHNwZWMKI2RlZmluZSBDRkdfQ05GX1JFSkVDVF9BTlkJCQkJMHhGQzE4CQkvL1tBUF0gU3dpdGNoIGZvciBQTSBidWZmZXJlaW5nIG9mIE11bHRpY2FzdCBNZXNzYWdlcwoKI2RlZmluZSBDRkdfQ05GX0VOQ1JZUFRJT04JCQkJMHhGQzIwCQkvL3NlbGVjdCBlbi9kZS1jcnlwdGlvbiBvZiBUeC9SeCBtZXNzYWdlcwojZGVmaW5lIENGR19DTkZfQVVUSEVOVElDQVRJT04JCQkweEZDMjEJCS8vW1NUQV0gc2VsZWN0cyBBdXRoZW50aWNhdGlvbiBhbGdvcml0aG0KI2RlZmluZSBDRkdfQ05GX0VYQ0xfVU5FTkNSWVBURUQJCTB4RkMyMgkJLy9bQVBdIFN3aXRjaCBmb3IgJ2NsZWFyLXRleHQnIHJ4IG1lc3NhZ2UgYWNjZXB0YW5jZQojZGVmaW5lIENGR19DTkZfTUNBU1RfUkFURQkJCQkweEZDMjMJCS8vVHJhbnNtaXQgRGF0YSByYXRlIGZvciBNdWx0aWNhc3QgZnJhbWVzCiNkZWZpbmUgQ0ZHX0NORl9JTlRSQV9CU1NfUkVMQVkJCQkweEZDMjQJCS8vW0FQXSBTd2l0Y2ggZm9yIEludHJhQkJTIHJlbGF5CiNkZWZpbmUgQ0ZHX0NORl9NSUNST19XQVZFCQkJCTB4RkMyNQkJLy9NaWNyb1dhdmUgKFJvYnVzdG5lc3MpCiNkZWZpbmUgQ0ZHX0NORl9MT0FEX0JBTEFOQ0lORwkJIAkweEZDMjYJCS8vTG9hZCBCYWxhbmNpbmcJCSAoQm9vbGVhbiwgMD1PRkYsIDE9T04sIGRlZmF1bHQ9MSkKI2RlZmluZSBDRkdfQ05GX01FRElVTV9ESVNUUklCVVRJT04JIAkweEZDMjcJCS8vTWVkaXVtIERpc3RyaWJ1dGlvbgkgKEJvb2xlYW4sIDA9T0ZGLCAxPU9OLCBkZWZhdWx0PTEpCiNkZWZpbmUgQ0ZHX0NORl9SWF9BTExfR1JPVVBfQUREUgkJMHhGQzI4CQkvL1tTVEFdIEdyb3VwIEFkZHJlc3MgRmlsdGVyCiNkZWZpbmUgQ0ZHX0NORl9DT1VOVFJZX0lORk8JCQkweEZDMjkJCS8vQ291bnRyeSBJbmZvCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfV0FSUAojZGVmaW5lIENGR19DTkZfVFhfUE9XX0xWTAkJCQkweEZDMkEJCS8vVHhQb3dlciBMZXZlbAojZGVmaW5lIENGR19DTkZfQ09OTkVDVElPTl9DTlRMCQkJMHhGQzMwCQkvL1tTVEFdIENvbm5lY3Rpb24gQ29udHJvbAojZGVmaW5lIENGR19DTkZfT1dOX0JFQUNPTl9JTlRFUlZBTAkJMHhGQzMxCQkvL1tBUF0KI2RlZmluZSBDRkdfQ05GX1NIT1JUX1JFVFJZX0xJTUlUCQkweEZDMzIJCS8vCiNkZWZpbmUgQ0ZHX0NORl9MT05HX1JFVFJZX0xJTUlUCQkweEZDMzMJCS8vCiNkZWZpbmUgQ0ZHX0NORl9UWF9FVkVOVF9NT0RFCQkJMHhGQzM0CQkvLwojZGVmaW5lIENGR19DTkZfV0lGSV9DT01QQVRJQkxFCQkJMHhGQzM1CQkvL1tTVEFdIFdpZmkgY29tcGF0aWJsZQojZW5kaWYgLy8gSENGX1RZUEVfV0FSUAojaWYgKEhDRl9UWVBFKSAmIEhDRl9UWVBFX0JFQUdMRV9ISUk1CiNkZWZpbmUgQ0ZHX1ZPSUNFX1JFVFJZX0xJTUlUCQkJMHhGQzM2CQkvKiBWb2ljZSBmcmFtZSByZXRyeSBsaW1pdC4gUmFuZ2U6IDEtMTUsIGRlZmF1bHQ6IDQgKi8KI2RlZmluZSBDRkdfVk9JQ0VfQ09OVEVOVElPTl9XSU5ET1cJCTB4RkMzNwkJLyogQ29udGVudGlvbiB3aW5kb3cgZm9yIHZvaWNlIGZyYW1lcy4gKi8KI2VuZGlmCS8vIEJFQUdMRV9ISUk1CgovLwlORVRXT1JLIFBBUkFNRVRFUlMsIERZTkFNSUMgQ09ORklHVVJBVElPTiBFTlRJVElFUwojZGVmaW5lIENGR19ERVNJUkVEX1NTSUQJCQkJMHhGQzAyCQkvL1tTVEFdIFNlcnZpY2UgU2V0IGlkZW50aWZpY2F0aW9uIGZvciBjb25uZWN0aW9uIGFuZCBzY2FuCgojZGVmaW5lIENGR19HUk9VUF9BRERSCQkJCQkweEZDODAJCS8vW1NUQV0gTXVsdGljYXN0IE1BQyBBZGRyZXNzZXMgZm9yIFJ4LW1lc3NhZ2UKI2RlZmluZSBDRkdfQ1JFQVRFX0lCU1MJCQkJCTB4RkM4MQkJLy9bU1RBXSBTd2l0Y2ggZm9yIElCU1MgY3JlYXRpb24gT24vT2ZmCiNkZWZpbmUgQ0ZHX1JUU19USFJICQkJCQkweEZDODMJCS8vRnJhbWUgbGVuZ3RoIHVzZWQgZm9yIFJUUy9DVFMgaGFuZHNoYWtlCiNkZWZpbmUgQ0ZHX1RYX1JBVEVfQ05UTAkJCQkweEZDODQJCS8vW1NUQV0gRGF0YSByYXRlIGNvbnRyb2wgZm9yIG1lc3NhZ2UgdHJhbnNtaXNzaW9uCiNkZWZpbmUgQ0ZHX1BST01JU0NVT1VTX01PREUJCQkweEZDODUJCS8vW1NUQV0gU3dpdGNoIGZvciBQcm9taXNjdW91cyBtb2RlIHJlY2VwdGlvbiBPbi9PZmYKI2RlZmluZSBDRkdfV09MCQkJCQkJCTB4RkM4NgkJLy9bU1RBXSBTd2l0Y2ggZm9yIFdha2UtT24tTEFOIG1vZGUKI2RlZmluZSBDRkdfV09MX1BBVFRFUk5TCQkJCTB4RkM4NwkJLy9bU1RBXSBQYXR0ZXJucyBmb3IgV2FrZS1Pbi1MQU4KI2RlZmluZSBDRkdfU1VQUE9SVEVEX1JBVEVfU0VUX0NOVEwJCTB4RkM4OAkJLy8KI2RlZmluZSBDRkdfQkFTSUNfUkFURV9TRVRfQ05UTAkJCTB4RkM4OQkJLy8KCiNkZWZpbmUgQ0ZHX1NPRlRXQVJFX0FDS19NT0RFCQkJMHhGQzkwCQkvLwojZGVmaW5lIENGR19SVFNfVEhSSDAJCQkJCTB4RkM5NwkJLy9bQVBdIFBvcnQgMCBmcmFtZSBsZW5ndGggZm9yIFJUUy9DVFMgaGFuZHNoYWtlCiNkZWZpbmUgQ0ZHX1JUU19USFJIMQkJCQkJMHhGQzk4CQkvL1tBUF0gUG9ydCAxIGZyYW1lIGxlbmd0aCBmb3IgUlRTL0NUUyBoYW5kc2hha2UKI2RlZmluZSBDRkdfUlRTX1RIUkgyCQkJCQkweEZDOTkJCS8vW0FQXSBQb3J0IDIgZnJhbWUgbGVuZ3RoIGZvciBSVFMvQ1RTIGhhbmRzaGFrZQojZGVmaW5lIENGR19SVFNfVEhSSDMJCQkJCTB4RkM5QQkJLy9bQVBdIFBvcnQgMyBmcmFtZSBsZW5ndGggZm9yIFJUUy9DVFMgaGFuZHNoYWtlCiNkZWZpbmUgQ0ZHX1JUU19USFJINAkJCQkJMHhGQzlCCQkvL1tBUF0gUG9ydCA0IGZyYW1lIGxlbmd0aCBmb3IgUlRTL0NUUyBoYW5kc2hha2UKI2RlZmluZSBDRkdfUlRTX1RIUkg1CQkJCQkweEZDOUMJCS8vW0FQXSBQb3J0IDUgZnJhbWUgbGVuZ3RoIGZvciBSVFMvQ1RTIGhhbmRzaGFrZQojZGVmaW5lIENGR19SVFNfVEhSSDYJCQkJCTB4RkM5RAkJLy9bQVBdIFBvcnQgNiBmcmFtZSBsZW5ndGggZm9yIFJUUy9DVFMgaGFuZHNoYWtlCgojZGVmaW5lIENGR19UWF9SQVRFX0NOVEwwCQkJCTB4RkM5RQkJLy9bQVBdIFBvcnQgMCBkYXRhIHJhdGUgY29udHJvbCBmb3IgdHJhbnNtaXNzaW9uCiNkZWZpbmUgQ0ZHX1RYX1JBVEVfQ05UTDEJCQkJMHhGQzlGCQkvL1tBUF0gUG9ydCAxIGRhdGEgcmF0ZSBjb250cm9sIGZvciB0cmFuc21pc3Npb24KI2RlZmluZSBDRkdfVFhfUkFURV9DTlRMMgkJCQkweEZDQTAJCS8vW0FQXSBQb3J0IDIgZGF0YSByYXRlIGNvbnRyb2wgZm9yIHRyYW5zbWlzc2lvbgojZGVmaW5lIENGR19UWF9SQVRFX0NOVEwzCQkJCTB4RkNBMQkJLy9bQVBdIFBvcnQgMyBkYXRhIHJhdGUgY29udHJvbCBmb3IgdHJhbnNtaXNzaW9uCiNkZWZpbmUgQ0ZHX1RYX1JBVEVfQ05UTDQJCQkJMHhGQ0EyCQkvL1tBUF0gUG9ydCA0IGRhdGEgcmF0ZSBjb250cm9sIGZvciB0cmFuc21pc3Npb24KI2RlZmluZSBDRkdfVFhfUkFURV9DTlRMNQkJCQkweEZDQTMJCS8vW0FQXSBQb3J0IDUgZGF0YSByYXRlIGNvbnRyb2wgZm9yIHRyYW5zbWlzc2lvbgojZGVmaW5lIENGR19UWF9SQVRFX0NOVEw2CQkJCTB4RkNBNAkJLy9bQVBdIFBvcnQgNiBkYXRhIHJhdGUgY29udHJvbCBmb3IgdHJhbnNtaXNzaW9uCgojZGVmaW5lIENGR19ERUZBVUxUX0tFWVMJCQkJMHhGQ0IwCQkvL2RlZmluZXMgc2V0IG9mIGVuY3J5cHRpb24ga2V5cwojZGVmaW5lIENGR19UWF9LRVlfSUQJCQkJCTB4RkNCMQkJLy9zZWxlY3Qga2V5IGZvciBlbmNyeXB0aW9uIG9mIFR4IG1lc3NhZ2VzCiNkZWZpbmUgQ0ZHX1NDQU5fU1NJRAkJCQkJMHhGQ0IyCQkvL1NjYW4gU1NJRAojZGVmaW5lIENGR19BRERfVEtJUF9ERUZBVUxUX0tFWQkJMHhGQ0I0CQkvL3NldCBLZXlJRCBhbmQgVHhLZXkgaW5kaWNhdGlvbgojZGVmaW5lIAlLRVlfSUQJCQkJCQkJMHgwMDAzCQkvL0tleUlEIG1hc2sgZm9yIHRraXBfa2V5X2lkX2luZm8gZmllbGQKI2RlZmluZSAJVFhfS0VZCQkJCQkJCTB4ODAwMAkJLy9EZWZhdWx0IFR4IEtleSBmbGFnIG9mIHRraXBfa2V5X2lkX2luZm8gZmllbGQKI2RlZmluZSBDRkdfU0VUX1dQQV9BVVRIX0tFWV9NR01UX1NVSVRFCTB4RkNCNQkJLy9BdXRoZW50aWNhdGVkIEtleSBNYW5hZ2VtZW50IFN1aXRlCiNkZWZpbmUgQ0ZHX1JFTU9WRV9US0lQX0RFRkFVTFRfS0VZCQkweEZDQjYJCS8vaW52YWxpZGF0ZSBLZXlJRCBhbmQgVHhLZXkgaW5kaWNhdGlvbgojZGVmaW5lIENGR19BRERfVEtJUF9NQVBQRURfS0VZCQkJMHhGQ0I3CQkvL3NldCBNQUMgYWRkcmVzcyBwYWlyd2lzZSBzdGF0aW9uCiNkZWZpbmUgQ0ZHX1JFTU9WRV9US0lQX01BUFBFRF9LRVkJCTB4RkNCOAkJLy9pbnZhbGlkYXRlIE1BQyBhZGRyZXNzIHBhaXJ3aXNlIHN0YXRpb24KI2RlZmluZSBDRkdfU0VUX1dQQV9DQVBBQklMSVRJRVNfSU5GTwkweEZDQjkJCS8vV1BBIENhcGFiaWxpdGllcwojZGVmaW5lIENGR19DQUNIRURfUE1LX0FERFIJCQkJMHhGQ0JBCQkvL3NldCBNQUMgYWRkcmVzcyBvZiBwcmUtYXV0aGVudGljYXRlZCBBUAojZGVmaW5lIENGR19SRU1PVkVfQ0FDSEVEX1BNS19BRERSCQkweEZDQkIJCS8vaW52YWxpZGF0ZSBNQUMgYWRkcmVzcyBvZiBwcmUtYXV0aGVudGljYXRlZCBBUAojZGVmaW5lIENGR19GQ0JDCTB4RkNCQwkvL0ZXIGNvZGVzIGFoZWFkIG9mIGF2YWlsYWJsZSBkb2N1bWVudGF0aW9uLCBzbyA/Pz8/Pz8/CiNkZWZpbmUgQ0ZHX0ZDQkQJMHhGQ0JECS8vRlcgY29kZXMgYWhlYWQgb2YgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24sIHNvID8/Pz8/Pz8KI2RlZmluZSBDRkdfRkNCRQkweEZDQkUJLy9GVyBjb2RlcyBhaGVhZCBvZiBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiwgc28gPz8/Pz8/PwojZGVmaW5lIENGR19GQ0JGCTB4RkNCRgkvL0ZXIGNvZGVzIGFoZWFkIG9mIGF2YWlsYWJsZSBkb2N1bWVudGF0aW9uLCBzbyA/Pz8/Pz8/CgojZGVmaW5lIENGR19IQU5ET1ZFUl9BRERSCQkJCTB4RkNDMAkJLy9bQVBdIFN0YXRpb24gTUFDIEFkZHJlc3MgcmUtYXNzb2NpYXRlZCB3aXRoIG90aGVyIEFQCiNkZWZpbmUgQ0ZHX1NDQU5fQ0hBTk5FTAkJCQkweEZDQzIJCS8vQ2hhbm5lbCBzZXQgZm9yIGhvc3QgcmVxdWVzdGVkIHNjYW4KLy87PyNkZWZpbmUgQ0ZHX1NDQU5fQ0hBTk5FTF9NQVNLCQkJMHhGQ0MyCQkvLyBjb250YWlucwojZGVmaW5lIENGR19ESVNBU1NPQ0lBVEVfQUREUgkJCTB4RkNDNAkJLy9bQVBdIFN0YXRpb24gTUFDIEFkZHJlc3MgdG8gYmUgZGlzYXNzb2NpYXRlZAojZGVmaW5lIENGR19QUk9CRV9EQVRBX1JBVEUJCQkJMHhGQ0M1CQkvL1dBUlAgY29ubmVjdGlvbiBjb250cm9sCiNkZWZpbmUgQ0ZHX0ZSQU1FX0JVUlNUX0xJTUlUCQkJMHhGQ0M2CQkvLwojZGVmaW5lIENGR19DT0VYSVNURU5TRV9CRUhBVklPVVIJCTB4RkNDNwkJLy9bQVBdCiNkZWZpbmUgQ0ZHX0RFQVVUSEVOVElDQVRFX0FERFIJCQkweEZDQzgJCS8vTUFDIGFkZHJlc3Mgb2YgU3RhdGlvbiB0byBiZSBkZWF1dGhlbnRpY2F0ZWQKCi8vCUJFSEFWSU9SIFBBUkFNRVRFUlMKI2RlZmluZSBDRkdfVElDS19USU1FCQkJCQkweEZDRTAJCS8vQXV4aWxpYXJ5IFRpbWVyIHRpY2sgaW50ZXJ2YWwKI2RlZmluZSBDRkdfRERTX1RJQ0tfVElNRQkJCQkweEZDRTEJCS8vRGlzY29ubmVjdGVkIERlZXBTbGVlcCBUaW1lciB0aWNrIGludGVydmFsCi8vI2RlZmluZSBDRkdfQ05GX0NPVU5UUlkJCQkJCTB4RkNGRQlhcHBhcmVudGx5IG5vdCBuZWVkZWQgOz8KI2RlZmluZSBDRkdfUklEX0NGR19NQVgJCQkJCTB4RkNGRgkJLy9oaWdoZXN0IHZhbHVlIHJlcHJlc2VudGluZyBhbiBDb25maWd1cmF0aW9uIFJJRAoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJTkZPUk1BVElPTiBSRUNPUkRTIAk9PT09PT09PT09PT09PT09PT09PT0qLwovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gbWFzayAweEZEeHgJCQkJPT09PT09PT09PT09PT09PT09PT09Ki8KLy8JTklDIElORk9STUFUSU9OCiNkZWZpbmUgQ0ZHX1JJRF9JTkZfTUlOCQkJCQkweEZEMDAJLy9sb3dlc3QgdmFsdWUgcmVwcmVzZW50aW5nIGFuIEluZm9ybWF0aW9uIFJJRAojZGVmaW5lIENGR19NQVhfTE9BRF9USU1FCQkJCTB4RkQwMAkvL1tJTlRdIE1heGltdW0gcmVzcG9uc2UgdGltZSBvZiB0aGUgRG93bmxvYWQgY29tbWFuZC4KI2RlZmluZSBDRkdfRExfQlVGCQkJCQkJMHhGRDAxCS8vW0lOVF0gRG93bmxvYWQgYnVmZmVyIGxvY2F0aW9uIGFuZCBzaXplLgojZGVmaW5lIENGR19QUklfSURFTlRJVFkJCQkJMHhGRDAyCS8vW1BSSV0gUHJpbWFyeSBGdW5jdGlvbnMgZmlybXdhcmUgaWRlbnRpZmljYXRpb24uCiNkZWZpbmUgQ0ZHX1BSSV9TVVBfUkFOR0UJCQkJMHhGRDAzCS8vW1BSSV0gUHJpbWFyeSBGdW5jdGlvbnMgSS9GIFN1cHBsaWVyIGNvbXBhdGliaWxpdHkgcmFuZ2UuCiNkZWZpbmUgQ0ZHX05JQ19IU0lfU1VQX1JBTkdFCQkJMHhGRDA5CS8vSC9XIC0gUy9XIEkvRiBzdXBwbGllciByYW5nZQojZGVmaW5lIENGR19OSUNfU0VSSUFMX05VTUJFUgkJCTB4RkQwQQkvL1tQUkldIE5ldHdvcmsgSW50ZXJmYWNlIENhcmQgc2VyaWFsIG51bWJlci4KI2RlZmluZSBDRkdfTklDX0lERU5USVRZCQkJCTB4RkQwQgkvL1tQUkldIE5ldHdvcmsgSW50ZXJmYWNlIENhcmQgaWRlbnRpZmljYXRpb24uCiNkZWZpbmUgQ0ZHX05JQ19NRklfU1VQX1JBTkdFCQkJMHhGRDBDCS8vW1BSSV0gTW9kZW0gSS9GIFN1cHBsaWVyIGNvbXBhdGliaWxpdHkgcmFuZ2UuCiNkZWZpbmUgQ0ZHX05JQ19DRklfU1VQX1JBTkdFCQkJMHhGRDBECS8vW1BSSV0gQ29udHJvbGxlciBJL0YgU3VwcGxpZXIgY29tcGF0aWJpbGl0eSByYW5nZS4KI2RlZmluZSBDRkdfQ0hBTk5FTF9MSVNUCQkJCTB4RkQxMAkvL0FsbG93ZWQgY29tbXVuaWNhdGlvbiBjaGFubmVscy4KI2RlZmluZSBDRkdfTklDX1RFTVBfVFlQRSAgCQkJCTB4RkQxMgkvL0hhcmR3YXJlIHRlbXBlcmF0dXJlIHJhbmdlIGNvZGUuCiNkZWZpbmUgQ0ZHX0NJUwkJCQkJCQkweEZEMTMJLy9QQyBDYXJkIFN0YW5kYXJkIENhcmQgSW5mb3JtYXRpb24gU3RydWN0dXJlCiNkZWZpbmUgQ0ZHX05JQ19QUk9GSUxFCQkJCQkweEZEMTQJLy9DYXJkIFByb2ZpbGUKI2RlZmluZSBDRkdfRldfSURFTlRJVFkJCQkJCTB4RkQyMAkvL2Zpcm13YXJlIGlkZW50aWZpY2F0aW9uLgojZGVmaW5lIENGR19GV19TVVBfUkFOR0UJCQkJMHhGRDIxCS8vZmlybXdhcmUgU3VwcGxpZXIgY29tcGF0aWJpbGl0eSByYW5nZS4KI2RlZmluZSBDRkdfTUZJX0FDVF9SQU5HRVNfU1RBCQkJMHhGRDIyCS8vW1NUQV0gTW9kZW0gSS9GIEFjdG9yIGNvbXBhdGliaWxpdHkgcmFuZ2VzLgojZGVmaW5lIENGR19DRklfQUNUX1JBTkdFU19TVEEJCQkweEZEMjMJLy9bU1RBXSBDb250cm9sbGVyIEkvRiBBY3RvciBjb21wYXRpYmlsaXR5IHJhbmdlcy4KI2RlZmluZSBDRkdfTklDX0JVU19UWVBFCQkJCTB4RkQyNAkvL0NhcmQgQnVzdHlwZQojZGVmaW5lIAlDRkdfTklDX0JVU19UWVBFX1BDQ0FSRF9DRgkJMHgwMDAwCS8vMTYgYml0IFBDIENhcmQgb3IgQ29tcGFjdCBGbGFzaAojZGVmaW5lIAlDRkdfTklDX0JVU19UWVBFX1VTQgkJCTB4MDAwMQkvL1VTQgojZGVmaW5lIAlDRkdfTklDX0JVU19UWVBFX0NBUkRCVVMJCTB4MDAwMgkvL0NhcmRCdXMKI2RlZmluZSAJQ0ZHX05JQ19CVVNfVFlQRV9QQ0kJCQkweDAwMDMJLy8obWluaSlQQ0kKI2RlZmluZSBDRkdfRE9NQUlOX0NPREUJCQkJCQkweEZEMjUKCi8vCU1BQyBJTkZPUk1BVElPTgojZGVmaW5lIENGR19QT1JUX1NUQVQJCQkJCTB4RkQ0MAkvL0FjdHVhbCBNQUMgUG9ydCBjb25uZWN0aW9uIGNvbnRyb2wgc3RhdHVzCiNkZWZpbmUgQ0ZHX0NVUl9TU0lECQkJCQkweEZENDEJLy9bU1RBXSBJZGVudGlmaWNhdGlvbiBvZiB0aGUgYWN0dWFsbHkgY29ubmVjdGVkIFNTCiNkZWZpbmUgQ0ZHX0NVUl9CU1NJRAkJCQkJMHhGRDQyCS8vW1NUQV0gSWRlbnRpZmljYXRpb24gb2YgdGhlIGFjdHVhbGx5IGNvbm5lY3RlZCBCU1MKI2RlZmluZSBDRkdfQ09NTVNfUVVBTElUWQkJCQkweEZENDMJLy9bU1RBXSBRdWFsaXR5IG9mIHRoZSBCYXNpYyBTZXJ2aWNlIFNldCBjb25uZWN0aW9uCiNkZWZpbmUgQ0ZHX0NVUl9UWF9SQVRFCQkJCQkweEZENDQJLy9bU1RBXSBBY3R1YWwgdHJhbnNtaXQgZGF0YSByYXRlCiNkZWZpbmUgQ0ZHX0NVUl9CRUFDT05fSU5URVJWQUwJCQkweEZENDUJLy9CZWFjb24gdHJhbnNtaXQgaW50ZXJ2YWwgdGltZSBmb3IgQlNTIGNyZWF0aW9uCiNkZWZpbmUgQ0ZHX0NVUl9TQ0FMRV9USFJICQkJCTB4RkQ0NgkvL0FjdHVhbCBTeXN0ZW0gU2NhbGUgdGhyZXNob2xkcyBzZXR0aW5ncwojZGVmaW5lIENGR19QUk9UT0NPTF9SU1BfVElNRQkJCTB4RkQ0NwkvL01heCB0aW1lIHRvIGF3YWl0IGEgcmVzcG9uc2UgdG8gYSByZXF1ZXN0IG1lc3NhZ2UKI2RlZmluZSBDRkdfQ1VSX1NIT1JUX1JFVFJZX0xJTUlUCQkweEZENDgJLy9NYXggbnVtYmVyIG9mIHRyYW5zbWl0IGF0dGVtcHRzIGZvciBzaG9ydCBmcmFtZXMKI2RlZmluZSBDRkdfQ1VSX0xPTkdfUkVUUllfTElNSVQJCTB4RkQ0OQkvL01heCBudW1iZXIgb2YgdHJhbnNtaXQgYXR0ZW1wdHMgZm9yIGxvbmcgZnJhbWVzCiNkZWZpbmUgQ0ZHX01BWF9UWF9MSUZFVElNRQkJCQkweEZENEEJLy9NYXggdHJhbnNtaXQgZnJhbWUgaGFuZGxpbmcgZHVyYXRpb24KI2RlZmluZSBDRkdfTUFYX1JYX0xJRkVUSU1FCQkJCTB4RkQ0QgkvL01heCByZWNlaXZlZCBmcmFtZSBoYW5kbGluZyBkdXJhdGlvbgojZGVmaW5lIENGR19DRl9QT0xMQUJMRQkJCQkJMHhGRDRDCS8vW1NUQV0gQ29udGVudGlvbiBGcmVlIHBvbGxhYmxlIGNhcGFiaWxpdHkgaW5kaWNhdGlvbgojZGVmaW5lIENGR19BVVRIRU5USUNBVElPTl9BTEdPUklUSE1TCTB4RkQ0RAkvL0F2YWlsYWJsZSBBdXRoZW50aWNhdGlvbiBBbGdvcml0aG1zIGluZGljYXRpb24KI2RlZmluZSBDRkdfUFJJVkFDWV9PUFRfSU1QTEVNRU5URUQJCTB4RkQ0RgkvL1dFUCBPcHRpb24gYXZhaWxhYmlsaXR5IGluZGljYXRpb24KCiNkZWZpbmUgQ0ZHX0NVUl9SRU1PVEVfUkFURVMJCQkweEZENTAJLy9bU1RBXSBDdXJyZW50UmVtb3RlUmF0ZXMKI2RlZmluZSBDRkdfQ1VSX1VTRURfUkFURVMJCQkJMHhGRDUxCS8vW1NUQV0gQ3VycmVudFVzZWRSYXRlcwojZGVmaW5lIENGR19DVVJfU1lTVEVNX1NDQUxFCQkJMHhGRDUyCS8vW1NUQV0gQ3VycmVudFN5c3RlbVNjYWxlCgojZGVmaW5lIENGR19DVVJfVFhfUkFURTEJCQkJMHhGRDgwCS8vW0FQXSBBY3R1YWwgUG9ydCAxIHRyYW5zbWl0IGRhdGEgcmF0ZQojZGVmaW5lIENGR19DVVJfVFhfUkFURTIJCQkJMHhGRDgxCS8vW0FQXSBBY3R1YWwgUG9ydCAyIHRyYW5zbWl0IGRhdGEgcmF0ZQojZGVmaW5lIENGR19DVVJfVFhfUkFURTMJCQkJMHhGRDgyCS8vW0FQXSBBY3R1YWwgUG9ydCAzIHRyYW5zbWl0IGRhdGEgcmF0ZQojZGVmaW5lIENGR19DVVJfVFhfUkFURTQJCQkJMHhGRDgzCS8vW0FQXSBBY3R1YWwgUG9ydCA0IHRyYW5zbWl0IGRhdGEgcmF0ZQojZGVmaW5lIENGR19DVVJfVFhfUkFURTUJCQkJMHhGRDg0CS8vW0FQXSBBY3R1YWwgUG9ydCA1IHRyYW5zbWl0IGRhdGEgcmF0ZQojZGVmaW5lIENGR19DVVJfVFhfUkFURTYJCQkJMHhGRDg1CS8vW0FQXSBBY3R1YWwgUG9ydCA2IHRyYW5zbWl0IGRhdGEgcmF0ZQojZGVmaW5lIENGR19OSUNfTUFDX0FERFIJCQkJMHhGRDg2CS8vVW5pcXVlIGxvY2FsIG5vZGUgTUFDIEFkZHJlc3MKI2RlZmluZSBDRkdfUENGX0lORk8JCQkJCTB4RkQ4NwkvL1tBUF0gUG9pbnQgQ29vcmRpbmF0aW9uIEZ1bmN0aW9uIGNhcGFiaWxpdHkgaW5mbwovLypSRVNFUlZFRCogI2RlZmluZSBDRkdfSElHSEVTVF9CQVNJQ19SQVRFCQkJMHhGRDg4CS8vCiNkZWZpbmUgQ0ZHX0NVUl9DT1VOVFJZX0lORk8JCQkweEZEODkJLy8KI2RlZmluZSBDRkdfQ1VSX1dQQV9JTkZPX0VMRU1FTlQJCTB4RkQ4QQkvLwojZGVmaW5lIENGR19DVVJfVEtJUF9JVl9JTkZPCQkJMHhGRDhCCS8vCiNkZWZpbmUgQ0ZHX0NVUl9BU1NPQ19SRVFfSU5GTwkJCTB4RkQ4QwkvLwojZGVmaW5lIENGR19DVVJfQVNTT0NfUkVTUF9JTkZPCQkJMHhGRDhECS8vCiNkZWZpbmUgQ0ZHX0NVUl9MT0FECQkJCQkweEZEOEUJLy9bQVBdIGN1cnJlbnQgbG9hZCBvbiBBUCdzIGNoYW5uZWwKCiNkZWZpbmUgQ0ZHX1NFQ1VSSVRZX0NBUEFCSUxJVElFUwkJMHhGRDkwCS8vQ29tYmluZWQgY2FwYWJpbGl0aWVzIGluZm9ybWF0aW9uCgovLwlNT0RFTSBJTkZPUk1BVElPTgojZGVmaW5lIENGR19QSFlfVFlQRQkJCQkJMHhGREMwCS8vUGh5c2ljYWwgbGF5ZXIgdHlwZSBpbmRpY2F0aW9uCiNkZWZpbmUgQ0ZHX0NVUl9DSEFOTkVMCQkJCQkweEZEQzEJLy9BY3R1YWwgZnJlcXVlbmN5IGNoYW5uZWwgdXNlZCBmb3IgdHJhbnNtaXNzaW9uCiNkZWZpbmUgQ0ZHX0NVUl9QT1dFUl9TVEFURQkJCQkweEZEQzIJLy9BY3R1YWwgcG93ZXIgY29uc3VtcHRpb24gc3RhdHVzCiNkZWZpbmUgQ0ZHX0NDQV9NT0RFCQkJCQkweEZEQzMJLy9DbGVhciBjaGFubmVsIGFzc2Vzc21lbnQgbW9kZSBpbmRpY2F0aW9uCiNkZWZpbmUgQ0ZHX1NVUFBPUlRFRF9EQVRBX1JBVEVTCQkweEZEQzYJLy9EYXRhIHJhdGVzIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24KCiNkZWZpbmUgQ0ZHX1JJRF9JTkZfTUFYCQkJCQkweEZERkYJLy9oaWdoZXN0IHZhbHVlIHJlcHJlc2VudGluZyBhbiBJbmZvcm1hdGlvbiBSSUQKCi8vCUVOR0lORUVSSU5HIElORk9STUFUSU9OCiNkZWZpbmUgQ0ZHX1JJRF9FTkdfTUlOCQkJCQkweEZGRTAJLy9sb3dlc3QgdmFsdWUgcmVwcmVzZW50aW5nIGEgSGVybWVzIGVuZ2luZWVyaW5nIFJJRAoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogR2VuZXJhbCBkZWZpbmUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovL0lGQiBmaWVsZCByZWxhdGVkCi8vCQlJRkJfQ2FyZFN0YXQKI2RlZmluZSBDQVJEX1NUQVRfSU5DT01QX1BSSQkJCTB4MjAwMFUJLy8gbm8gY29tcGF0aWJsZSBIU0kgLyBwcmltYXJ5IEYvVwojZGVmaW5lIENBUkRfU1RBVF9JTkNPTVBfRlcJCQkJMHgxMDAwVQkvLyBubyBjb21wYXRpYmxlIHN0YXRpb24gLyB0ZXJ0aWFyeSBGL1cKI2RlZmluZSBDQVJEX1NUQVRfREVGVU5DVAkJCQkweDAxMDBVCS8vIEhDRiBpcyBpbiBEZWZ1bmN0IG1vZGUKLy8JCUlGQl9SeFN0YXQKI2RlZmluZSBSWF9TVEFUX1BSSU8JCQkJCTB4MDBFMFUJLy9Qcmlvcml0eSBzdWJmaWVsZAojZGVmaW5lIFJYX1NUQVRfRVJSCQkJCQkJMHgwMDBGVQkvL0Vycm9yIG1hc2sKI2RlZmluZSAJUlhfU1RBVF9VTkRFQ1IJCQkJMHgwMDAyVQkvL05vbi1kZWNyeXB0YWJsZSBlbmNyeXB0ZWQgbWVzc2FnZQojZGVmaW5lIAlSWF9TVEFUX0ZDU19FUlIJCQkJMHgwMDAxVQkvL0ZDUyBlcnJvcgoKLy8gU05BUCBoZWFkZXIgZm9yIEUtSUkgRW5jYXBzdWxhdGlvbgojZGVmaW5lIEVOQ19OT05FCQkJICAgICAgICAgICAgMHhGRgojZGVmaW5lIEVOQ18xMDQyICAgIAkJCSAgICAgICAgMHgwMAojZGVmaW5lIEVOQ19UVU5ORUwgICAgICAJICAgIAkJMHhGOAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFh4eHh4eHh4ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKI2RlZmluZSBIQ0ZfU1VDQ0VTUwkJCQkJMHgwMAkvLyBPSwojZGVmaW5lIEhDRl9FUlJfVElNRV9PVVQJCQkweDA0CS8vIEV4cGVjdGVkIEhlcm1lcyBldmVudCBkaWQgbm90IG9jY3VyZSBpbiBleHBlY3RlZCB0aW1lCiNkZWZpbmUgSENGX0VSUl9OT19OSUMJCQkJMHgwNQkvKiBjYXJkIG5vdCBmb3VuZCAodXN1YWxseSB5YW5rZWQgYXdheSBkdXJpbmcgaGNmaW9faW5fc3RyaW5nCgkJCQkJCQkJCQkgIAkgKiBBbHNvOiBjYXJkIGlzIGVpdGhlciBhYnNlbnQgb3IgZGlzYWJsZWQgd2hpbGUgaXQgc2hvdWxkIGJlIG5laXRoZXIgKi8KI2RlZmluZSBIQ0ZfRVJSX0xFTgkJCQkJMHgwOAkvKiBidWZmZXIgc2l6ZSBpbnN1ZmZpY2llbnQKCQkgCQkJCQkJCQkgIAkgKgkJICAtCUlGQl9Db25maWdUYWJsZSB0b28gc21hbGwKCQkgCQkJCQkJCQkgIAkgKgkJICAtCWhjZl9nZXRfaW5mbyBidWZmZXIgaGFzIGEgc2l6ZSBvZiAwIG9yIDEgb3IgbGVzcyB0aGFuIG5lZWRlZAoJCSAJCQkJCQkJICAJCSAqCQkJdG8gYWNjb21vZGF0ZSBhbGwgZGF0YQoJCSAJCQkJCQkJICAJCSAqCQkgIC0JaGNmX3B1dF9pbmZvOiBDRkdfRExOVl9EQVRBIGV4Y2VlZHMgaW50ZXJtZWRpYXRlCgkJCQkJCQkJCQkJICoJCSAgYnVmZmVyIHNpemUgKi8KI2RlZmluZSBIQ0ZfRVJSX0lOQ09NUF9QUkkJCQkweDA5CS8vIHByaW1hcnkgZnVuY3Rpb25zIGFyZSBub3QgY29tcGF0aWJsZQojZGVmaW5lIEhDRl9FUlJfSU5DT01QX0ZXCQkJMHgwQQkvLyBzdGF0aW9uIGZ1bmN0aW9ucyBhcmUgY29tcGF0aWJsZQojZGVmaW5lIEhDRl9FUlJfTUlDCQkJCQkweDBECS8vIE1JQyBjaGVjayBmYWlscwojZGVmaW5lIEhDRl9FUlJfU0xFRVAJCQkJMHgwRQkvLyBOSUMgaW4gc2xlZXAgbW9kZQojZGVmaW5lIEhDRl9FUlJfTUFYCQkJCQkweDNGCS8qIGVuZCBvZiBIQ0YgcmFuZ2UKCQkJCQkJCQkJCQkgICAqKiogKiogKioqICoqKioqKiAqKiogKioqKioqKioqKioqKioqICovCiNkZWZpbmUgSENGX0VSUl9ERUZVTkNUCQkJCTB4ODAJLy8gQklULCByZWZsZWN0aW5nIHRoYXQgdGhlIEhDRiBpcyBpbiBkZWZ1bmN0IG1vZGUgKGJpdHMgMHg3RiByZWZsZWN0IGNhdXNlKQojZGVmaW5lIEhDRl9FUlJfREVGVU5DVF9BVVgJCQkweDgyCS8vIFRpbWVvdXQgb24gYWNrbm93bGVkZ2VtZW50IG9uIGVuL2Rpc2FibGluZyBBVVggcmVnaXN0ZXJzCiNkZWZpbmUgSENGX0VSUl9ERUZVTkNUX1RJTUVSCQkweDgzCS8vIFRpbWVvdXQgb24gdGltZXIgY2FsaWJyYXRpb24gZHVyaW5nIGluaXRpYWxpemF0aW9uIHByb2Nlc3MKI2RlZmluZSBIQ0ZfRVJSX0RFRlVOQ1RfVElNRV9PVVQJMHg4NAkvLyBUaW1lb3V0IG9uIEJ1c3kgYml0IGRyb3AgZHVyaW5nIEJBUCBzZXR1cAojZGVmaW5lIEhDRl9FUlJfREVGVU5DVF9DTURfU0VRCQkweDg2CS8vIEhlcm1lcyBhbmQgSENGIGFyZSBvdXQgb2Ygc3luYyBpbiBpc3N1aW5nL3Byb2Nlc3NpbmcgY29tbWFuZHMKCiNkZWZpbmUgSENGX0lOVF9QRU5ESU5HCQkJCTB4MDEJLy8gcmV0dXJuIHN0YXR1cyBvZiBoY2ZfYWN0KCBIQ0ZfQUNUX0lOVF9PRkYgKQoKI2RlZmluZSBIQ0ZfUE9SVF8wIAkJCQkJMHgwMDAwCS8vIFN0YXRpb24gc3VwcG9ydHMgb25seSBzaW5nbGUgTUFDIFBvcnQKI2RlZmluZSBIQ0ZfUE9SVF8xIAkJCQkJMHgwMTAwCS8vIEhDRl9QT1JUXzEgdGhyb3VnaCBIQ0ZfUE9SVF82IGFyZSBvbmx5IHN1cHBvcnRlZCBieSBBUCBGL1cKI2RlZmluZSBIQ0ZfUE9SVF8yIAkJCQkJMHgwMjAwCiNkZWZpbmUgSENGX1BPUlRfMyAJCQkJCTB4MDMwMAojZGVmaW5lIEhDRl9QT1JUXzQgCQkJCQkweDA0MDAKI2RlZmluZSBIQ0ZfUE9SVF81IAkJCQkJMHgwNTAwCiNkZWZpbmUgSENGX1BPUlRfNiAJCQkJCTB4MDYwMAoKI2RlZmluZSBIQ0ZfQ05UTF9FTkFCTEUJCQkJMHgwMQojZGVmaW5lIEhDRl9DTlRMX0RJU0FCTEUJCQkweDAyCiNkZWZpbmUgSENGX0NOVExfQ09OTkVDVAkJCTB4MDMKI2RlZmluZSBIQ0ZfQ05UTF9ESVNDT05ORUNUCQkJMHgwNQojZGVmaW5lIEhDRl9DTlRMX0NPTlRJTlVFCQkJMHgwNwoKI2RlZmluZSBVU0VfRE1BIAkJCQkJMHgwMDAxCiNkZWZpbmUgVVNFXzE2QklUIAkJCQkJMHgwMDAyCiNkZWZpbmUgRE1BX0VOQUJMRUQJCQkJCTB4ODAwMAkvL3dlYWsgbmFtZSwgaXQgcmVhbGx5IG1lYW5zOiBGL1cgZW5hYmxlZCBhbmQgRE1BIHNlbGVjdGVkCgovLyNkZWZpbmUgSENGX0RNQV9GRF9DTlQJIAkJKDIqMjkpIAkJCQkJCS8vc2l6ZSBpbiBieXRlcyBvZiBvbmUgVHgvUnhGUyBtaW51cyBEQS9TQQovLzs/dGhlIE1TRiAoIEgyUENJLkMgdXNlcyB0aGUgbmV4dCAyIG1uZW1vbmljcyApCiNkZWZpbmUgSENGX0RNQV9SWF9CVUYxX1NJWkUJCShIRlNfQUREUl9ERVNUICsgOCkJCQkvL2V4dHJhIGJ5dGVzIGZvciBMRU4vU05BUCBpZiBkZWNhcHN1bGF0aW9uCiNkZWZpbmUgSENGX0RNQV9UWF9CVUYxX1NJWkUJCShIRlNfQUREUl9ERVNUICsgMio2ICsgOCkJLy9leHRyYSBieXRlcyBmb3IgREEvU0EvTEVOL1NOQVAgaWYgZW5jYXBzdWxhdGlvbgoKLy9IRlNfVFhfQ05UTAovKiBOb3RlIHRoYXQgdGhlIEhDRl8uLi4uIFN5c3RlbSBDb25zdGFudHMgaW5mbHVlbmNlIHRoZSBIRlNfLi4uLiB2YWx1ZXMgYmVsb3cKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILUkgICAgIEgtSSAgfCAgSC1JSSAgICBILUlJICAgIEgtSUkuNQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1BBICB8ICAgICAgICAgIFdQQQogKiBIRlNfVFhfQ05UTF9UWF9PSyAgICAgICAgICAgIDAwMDIgICAgMDAwMiB8ICAwMDAyICAgIDAwMDIgICAgIE4vQSAgICA8PDw8PDw8PGRlcHJlY2F0ZWQKICogSEZTX1RYX0NOVExfVFhfRVggICAgICAgICAgICAwMDA0ICAgIDAwMDQgfCAgMDAwNCAgICAwMDA0ICAgICBOL0EKICogSEZTX1RYX0NOVExfTUlDICAgICAgICAgICAgICAgTi9BICAgIDAwMTAgfCAgIE4vQSAgICAwMDEwICAgICBOL0EKICogSEZTX1RYX0NOVExfVElEICAgICAgICAgICAgICAgTi9BICAgICBOL0EgfCAgIE4vQSAgICAgTi9BICAgIDAwMEYKICogSEZTX1RYX0NOVExfU0VSVklDRV9DTEFTUyAgICAgTi9BICAgICBOL0EgfCAgIE4vQSAgICAgTi9BICAgIDAwQzAKICogSEZTX1RYX0NOVExfUE9SVCAgICAgICAgICAgICAwNzAwICAgIDA3MDAgfCAgMDcwMCAgICAwNzAwICAgIDA3MDAKICogSEZTX1RYX0NOVExfTUlDX0tFWV9JRCAgICAgICAxODAwICAgIDE4MDAgfCAgMDAwMCAgICAxODAwICAgICBOL0EKICogSEZTX1RYX0NOVExfQ0tJUCAgICAgICAgICAgICAwMDAwICAgIDAwMDAgfCAgMDAwMCAgICAyMDAwICAgIDIwMDAKICogSEZTX1RYX0NOVExfVFhfREVMQVkgICAgICAgICA0MDAwICAgIDQwMDAgfCAgNDAwMCAgICA0MDAwICAgICBOL0EKICogSEZTX1RYX0NOVExfQUNUSU9OICAgICAgICAgICAgTi9BICAgICBOL0EgfCAgIE4vQSAgICAgTi9BICAgIDQwMDAKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgID09PT0gfCAgPT09PSAgICA9PT09ICAgID09PT0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1RjA2ICAgIDVGMTYgfCAgNDcwNiAgICA3RjA2ICAgIDY3Q0YKICoKICogSENGX1RYX0NOVExfTUFTSyBzcGVjaWZpZXMgdGhlIGJpdHMgYWxsb3dlZCBvbiB0aGUgSG9zdCBJL0YKICogbm90ZTogYml0IDB4NDAwMCBoYXMgZGlmZmVyZW50IG1lYW5pbmcgZm9yIEgtSUkgYW5kIEgtSUkuNQogKiBub3RlOiBbXSBpbmRpY2F0ZSBiaXRzIHdoaWNoIGFyZSBwb3NzaWJseSBhZGRlZCBieSB0aGUgSENGIHRvIFR4Q29udHJvbCBhdCB0aGUgSG9zdCBJL0YKICogbm90ZTogKCkgaW5kaWNhdGUgYml0cyB3aGljaCBhcmUgc3VwcG9zZWRseSBuZXZlciBldmVyIHVzZWQgaW4gYSBXQ0kgZW52aXJvbm1lbnQKICogbm90ZTogPyBkZW5vdGUgYml0cyB3aGljaCBzZWVtIG5vdCB0byBiZSBkb2N1bWVudGVkIGluIHRoZSBkb2N1bWVudHMgSSBoYXZlIGF2YWlsYWJsZQogKi8KLy9ILUk6ICAgICBIQ0ZfVFhfQ05UTF9NQVNLCTB4NDdGRQkvL1RYX0RFTEFZLCBNQUNQb3J0LCBQcmlvcml0eSwgKFN0cnVjVHlwZSksIFR4RXgsIFR4T0sKLy9ILUkgV1BBOiBIQ0ZfVFhfQ05UTF9NQVNLCTB4NUZFNgkvL1RYX0RFTEFZLCBNSUNLZXksIE1BQ1BvcnQsIFByaW9yaXR5LCAoU3RydWNUeXBlKSwgVHhFeCwgVHhPSwojaWYgKEhDRl9UWVBFKSAmIEhDRl9UWVBFX1dBUlAKI2RlZmluZSAgSENGX1RYX0NOVExfTUFTSwkweDI3RTcJLy9ubyBUWF9ERUxBWT8sIENDWCwgTUFDUG9ydCwgUHJpb3JpdHksIChTdHJ1Y1R5cGUpLCBUeEV4LCBUeE9LLCBTcGVjdHJhbGluawovLyNlbGlmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9XUEEKLy8jZGVmaW5lICBIQ0ZfVFhfQ05UTF9NQVNLCTB4N0YwNgkvL1RYX0RFTEFZLCBDS0lQPywgTUlDS2V5SUQsIE1BQ1BvcnQsIFtNSUNdLFR4RXgsIFR4T0sgKFRBUjQxOUQ3KQojZWxzZQojZGVmaW5lICBIQ0ZfVFhfQ05UTF9NQVNLCTB4NjdFNwkvL1RYX0RFTEFZPywgQ0NYLCBNQUNQb3J0LCBQcmlvcml0eSwgKFN0cnVjVHlwZSksIFR4RXgsIFR4T0ssIFNwZWN0cmFsaW5rCiNlbmRpZiAvLyBIQ0ZfVFlQRV9XQVJQCgojZGVmaW5lIEhGU19UWF9DTlRMX1RYX0VYCQkJMHgwMDA0VQoKI2lmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9XUEEKI2RlZmluZSBIRlNfVFhfQ05UTF9NSUMJCQkJMHgwMDEwVQkvLzgwMi4zIGZvcm1hdCB3aXRoIFRLSVAJCTs/Y2hhbmdlcyB0byAweDAwMDggZm9yIEgtSUkKI2RlZmluZSBIRlNfVFhfQ05UTF9NSUNfS0VZX0lECQkweDE4MDBVCS8vTUlDIEtleSBJRCBzdWJmaWVsZAojZW5kaWYgLy8gSENGX1RZUEVfV1BBCgojZGVmaW5lIEhGU19UWF9DTlRMX1BPUlQJCQkweDA3MDBVCS8vUG9ydCBzdWJmaWVsZCBvZiBUeENvbnRyb2wgZmllbGQgb2YgVHJhbnNtaXQgRnJhbWUgU3RydWN0dXJlCgojaWYgKEhDRl9UWVBFKSAmIEhDRl9UWVBFX0NDWAojZGVmaW5lIEhGU19UWF9DTlRMX0NLSVAJCQkweDIwMDBVCS8vQ0tJUCBlbmNyeXB0ZWQgZmxhZwojZW5kaWYgLy8gSENGX1RZUEVfQ0NYCgojaWYgKEhDRl9UWVBFKSAmIEhDRl9UWVBFX1RYX0RFTEFZCiNkZWZpbmUgSEZTX1RYX0NOVExfVFhfREVMQVkJCTB4NDAwMFUJLy9kZWNvdXBsZSAicHV0IGRhdGEiIGFuZCBzZW5kCiNlbmRpZiAvLyBIQ0ZfVFlQRV9UWF9ERUxBWQojZGVmaW5lIEhGU19UWF9DTlRMX1RYX0NPTlQJCQkweDQwMDB1CS8vZW5naW5lZXJpbmc6IGNvbnRpbnVvdXMgdHJhbnNtaXQKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIQ0YgRGVmaW5lZCBSRUNPUkRTCT09PT09PT09PT09PT09PT09PT09PT09PT0qLwojZGVmaW5lIENGR19QUk9EX0RBVEEJCQkJCTB4MDgwMCAJCS8vUGx1ZyBEYXRhIChFbmdpbmVlcmluZyBUZXN0IHB1cnBvc2VzIG9ubHkpCiNkZWZpbmUgQ0ZHX0RMX0VFUFJPTQkJCQkJMHgwODA2CQkvL1VwL0Rvd25sb2FkIEkyUFJPTSBmb3IgVVNCCiNkZWZpbmUJCUNGR19QREEJCQkJCQkJMHgwMDAyCQkvL0Rvd25sb2FkIFBEQQojZGVmaW5lCQlDRkdfTUVNX0kyUFJPTQkJCQkJMHgwMDA0CQkvL1VwL0Rvd25sb2FkIEVFUFJPTQoKI2RlZmluZQkJQ0ZHX01FTV9SRUFECQkJCQkweDAwMDAKI2RlZmluZQkJQ0ZHX01FTV9XUklURQkJCQkJMHgwMDAxCgojZGVmaW5lIENGR19OVUxMCQkJCQkJMHgwODIwCQkvL0VtcHR5IE1haWwgQm94IEluZm8gQmxvY2sKI2RlZmluZSBDRkdfTUJfSU5GTwkJCQkJCTB4MDgyMAkJLy9NYWlsIEJveCBJbmZvIEJsb2NrCiNkZWZpbmUgQ0ZHX1dNUAkJCQkJCQkweDA4MjIJCS8vV2F2ZUxBTiBNYW5hZ2VtZW50IFByb3RvY29sCgojaWYgZGVmaW5lZCBNU0ZfQ09NUE9ORU5UX0lECiNkZWZpbmUgQ0ZHX0RSVl9JTkZPCQkJCQkweDA4MjUJCS8vRHJpdmVyIEluZm9ybWF0aW9uIHN0cnVjdHVyZSAoc2VlIENGR19EUlZfSU5GT19TVFJDVCBmb3IgZGV0YWlscykKI2RlZmluZSBDRkdfRFJWX0lERU5USVRZCQkJCTB4MDgyNgkJLy9kcml2ZXIgaWRlbnRpdHkgKHNlZSBDRkdfRFJWX0lERU5USVRZX1NUUkNUIGZvciBkZXRhaWxzKQojZGVmaW5lIENGR19EUlZfU1VQX1JBTkdFCQkJCTB4MDgyNyAgICAgIC8vU3VwcGxpZXIgcmFuZ2Ugb2YgZHJpdmVyIC0gdXRpbGl0eSBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJCQkJMHgwODI4ICAgICAgLy8oQWNjZXB0YWJsZSkgQWN0b3IgcmFuZ2UgZm9yIFByaW1hcnkgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQQkJCTB4MDgyOSAgICAgIC8vKEFjY2VwdGFibGUpIEFjdG9yIHJhbmdlIGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0kgCQkJMHgwODJBICAgICAgLy8oQWNjZXB0YWJsZSkgQWN0b3IgcmFuZ2UgZm9yIEgvVyAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGCQkJMHgwODJCCQkvLyhBY2NlcHRhYmxlKSBBY3RvciByYW5nZSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0hDRl9PUFQJCQkJCQkweDA4MkMJCS8vSENGIChDb21waWxlIHRpbWUpIG9wdGlvbnMKI2VuZGlmIC8vIE1TRl9DT01QT05FTlRfSUQKCiNkZWZpbmUgQ0ZHX1JFR19NQgkJCQkJCTB4MDgzMAkJLy9SZWdpc3RlciBNYWlsIEJveAojZGVmaW5lIENGR19NQl9BU1NFUlQJCQkJCTB4MDgzMQkJLy9Bc3NlcnQgaW5mb3JtYXRpb24KI2RlZmluZSBDRkdfUkVHX0FTU0VSVF9SVE5QCQkJCTB4MDgzMgkJLy8oZGUtKXJlZ2lzdGVyIE1TRiBBc3NlcnQgQ2FsbGJhY2sgcm91dGluZQojaWYgKEhDRl9FWFQpICYgSENGX0VYVF9JTkZPX0xPRwojZGVmaW5lIENGR19SRUdfSU5GT19MT0cJCQkJMHgwODM5CQkvLyhkZS0pcmVnaXN0ZXIgSW5mbyBmcmFtZXMgdG8gTG9nCiNlbmRpZiAvLyBIQ0ZfSU5GT19MT0cKI2RlZmluZSBDRkdfQ05UTF9PUFQJCQkJCTB4MDgzQQkJLy9Db250cm9sIG9wdGlvbnMKCiNkZWZpbmUgQ0ZHX1BST0cJCQkJCQkweDA4NTcJCS8vUHJvZ3JhbSBOSUMgbWVtb3J5CiNkZWZpbmUgCUNGR19QUk9HX1NUT1AJCQkJCTB4MDAwMAojZGVmaW5lIAlDRkdfUFJPR19WT0xBVElMRQkJCQkweDAxMDAKLy8jZGVmaW5lIAlDRkdfUFJPR19GTEFTSAkJCQkJMHgwMzAwCQkvL3Jlc3RvcmUgaWYgSC1JSSBub24tdm9sYXRpbGUgaXMgaW50cm9kdWNlZAovLyNkZWZpbmUgCUNGR19QUk9HX1NFRVBST00JCQkJMHgxMzAwCQkvL3Jlc3RvcmUgaWYgSC1JSSBub24tdm9sYXRpbGUgaXMgaW50cm9kdWNlZAojZGVmaW5lIAlDRkdfUFJPR19TRUVQUk9NX1JFQURCQUNLIAkJMHgwNDAwCgojZGVmaW5lIENGR19GV19QUklOVEYgICAgICAgICAgICAgICAgICAgICAgIDB4MDg1OCAgICAgIC8vUmVsYXRlZCB0byBmaXJtd2FyZSBkZWJ1ZyBwcmludGYgZnVuY3Rpb25hbGl0eQojZGVmaW5lIENGR19GV19QUklOVEZfQlVGRkVSX0xPQ0FUSU9OICAgICAgIDB4MDg1OSAgICAgIC8vQWxzbyByZWxhdGVkIHRvIGZpcm13YXJlIGRlYnVnIHByaW50ZiBmdW5jdGlvbmFsaXR5CgojZGVmaW5lIENGR19DTURfTklDCQkJCQkJMHgwODYwCQkvL0hlcm1lcyBFbmdpbmVlcmluZyBjb21tYW5kCiNkZWZpbmUgQ0ZHX0NNRF9IQ0YJCQkJCQkweDA4NjMJCS8vSENGIEVuZ2luZWVyaW5nIGNvbW1hbmQKI2RlZmluZSAJQ0ZHX0NNRF9IQ0ZfUkVHX0FDQ0VTUwkJCTB4MDAwMAkvL0RpcmVjdCByZWdpc3RlciBhY2Nlc3MKI2RlZmluZSAJQ0ZHX0NNRF9IQ0ZfUlhfTU9OCQkJCTB4MDAwMQkvL1J4LW1vbml0b3IKCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTVNGIERlZmluZWQgUkVDT1JEUwk9PT09PT09PT09PT09PT09PT09PT09PT0qLwojZGVmaW5lIENGR19FTkNSWVBUX1NUUklORwkJCQkweDA5MDAJCS8vdHJhbnNmZXIgZW5jcnlwdGlvbiBpbmZvIGZyb20gQ1BMIHRvIE1TRgojZGVmaW5lIENGR19BUF9NT0RFCQkJCQkJMHgwOTAxCQkvL2NvbnRyb2wgbW9kZSBvZiBTVEFQIGRyaXZlciBmcm9tIENQTAojZGVmaW5lIENGR19EUklWRVJfRU5BQkxFCQkJCTB4MDkwMgkJLy9leHRlbmQmZXhwb3J0IEVuLS9EaXNhYmxlIGZhY2lsaXR5IHRvIFV0aWxpdHkKI2RlZmluZSBDRkdfUENJX0NPTU1BTkQJCQkJCTB4MDkwMwkJLy9QQ0kgYWRhcHRlciAoT29pZXZhYXIpIHN0cnVjdHVyZQojZGVmaW5lIENGR19XT0xBU19FTkFCTEUJCQkJMHgwOTA0CQkvL2V4dGVuZCZleHBvcnQgRW4tL0Rpc2FibGUgV09MQVMgZmFjaWxpdHkgdG8gVXRpbGl0eQojZGVmaW5lIENGR19DT1VOVFJZX1NUUklORwkJCQkweDA5MDUJCS8vdHJhbnNmZXIgQ291bnRyeUluZm8gaW5mbyBmcm9tIENQTCB0byBNU0YKI2RlZmluZSBDRkdfRldfRFVNUAkJCQkJCTB4MDkwNgkJLy90cmFuc2ZlciBuaWMgbWVtb3J5IHRvIHV0aWxpdHkKI2RlZmluZSBDRkdfUE9XRVJfTU9ERQkJCQkJMHgwOTA3CQkvL2NvbnRyb2xzIHRoZSBQTSBtb2RlIG9mIHRoZSBjYXJkCiNkZWZpbmUgQ0ZHX0NPTk5FQ1RJT05fTU9ERQkJCQkweDA5MDgJCS8vY29udHJvbHMgdGhlIG1vZGUgb2YgdGhlIEZXIChFU1MvQVAvSUJTUy9BREhPQykKI2RlZmluZSBDRkdfSUZCCQkJCQkJCTB4MDkwOQkJLy9ieXRlIHdpc2UgY29weSBvZiBJRkIKI2RlZmluZSBDRkdfTVNGX1RBTExJRVMJCQkJCTB4MDkwQQkJLy9NU0YgdGFsbGllcyAoaW50J3MsIHJ4IGFuZCB0eCkKI2RlZmluZSBDRkdfQ1VSUkVOVF9MSU5LX1NUQVRVUwkJCTB4MDkwQgkJLy9MYXRlc3QgbGluayBzdGF0dXMgZ290IHRocm91Z2ggMHhGMjAwIExpbmtFdmVudAoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSU5GT1JNQVRJT04gRlJBTUVTID09PT09PT09PT09PT09PT09PT09PT09PT0qLwojZGVmaW5lIENGR19JTkZPX0ZSQU1FX01JTgkJCQkweEYwMDAJCS8vbG93ZXN0IHZhbHVlIHJlcHJlc2VudGluZyBhbiBJbmZvcm1hdGlvIEZyYW1lCgojZGVmaW5lIENGR19UQUxMSUVTCQkJCQkJMHhGMTAwCQkvL0NvbW11bmljYXRpb25zIFRhbGxpZXMKI2RlZmluZSBDRkdfU0NBTgkJCQkJCTB4RjEwMQkJLy9TY2FuIHJlc3VsdHMKI2RlZmluZSBDRkdfUFJTX1NDQU4JCQkJCTB4RjEwMgkJLy9Qcm9iZSBSZXNwb25zZSBTY2FuIHJlc3VsdHMKCiNkZWZpbmUgQ0ZHX0xJTktfU1RBVCAJCQkJCTB4RjIwMAkJLy9MaW5rIFN0YXR1cwoJLyogMSB0aHJvdWdoIDUgYXJlIEYvVyBkZWZpbmVkIHZhbHVlcywgcHJvZHVjZWQgYnkgQ0ZHX0xJTktfU1RBVCBmcmFtZQoJICogMSB0aHJvdWdoIDUgYXJlIHNoYXJlZCBieSBDRkdfTElOS19TVEFULCBJRkJfTGlua1N0YXQgYW5kIElGQl9EU0xpbmtTdGF0CgkgKiAxIHBsYXlzIGEgZG91YmxlIHJvbGUgYXMgQ0ZHX0xJTktfU1RBVF9DT05ORUNURUQgYW5kIGFzIGJpdCByZWZsZWN0aW5nOgoJICoJIC0gY29ubmVjdGVkOiBPTgoJICoJIC0gZGlzY29ubmVjdGVkOiBPRkYKCSAqLwojZGVmaW5lIAlDRkdfTElOS19TVEFUX0NPTk5FQ1RFRAkJCTB4MDAwMQojZGVmaW5lIAlDRkdfTElOS19TVEFUX0RJU0NPTk5FQ1RFRAkJMHgwMDAyCiNkZWZpbmUgCUNGR19MSU5LX1NUQVRfQVBfQ0hBTkdFCQkJMHgwMDAzCiNkZWZpbmUgCUNGR19MSU5LX1NUQVRfQVBfT09SCQkJMHgwMDA0CiNkZWZpbmUgCUNGR19MSU5LX1NUQVRfQVBfSVIJCQkJMHgwMDA1CiNkZWZpbmUgCUNGR19MSU5LX1NUQVRfRlcJCQkJMHgwMDBGCS8vbWFzayB0byBpc29sYXRlIEYvVyBkZWZpbmVkIGJpdHMKLy8jZGVmaW5lIAlDRkdfTElOS19TVEFUX1RJTUVSCQkJCTB4MEZGMAkvL21hc2sgdG8gaXNvbGF0ZSBPT1IgdGltZXIKLy8jZGVmaW5lIAlDRkdfTElOS19TVEFUX0RTX09PUgkJCTB4MjAwMAkvLzIwMDAgYW5kIHVwIGFyZSBJRkJfTGlua1N0YXQgc3BlY2lmaWMKLy8jZGVmaW5lIAlDRkdfTElOS19TVEFUX0RTX0lSCQkJCTB4NDAwMAojZGVmaW5lIAlDRkdfTElOS19TVEFUX0NIQU5HRQkJCTB4ODAwMAojZGVmaW5lIENGR19BU1NPQ19TVEFUCQkJCQkweEYyMDEJCS8vQXNzb2NpYXRpb24gU3RhdHVzCiNkZWZpbmUgQ0ZHX1NFQ1VSSVRZX1NUQVQJCQkJMHhGMjAyCQkvL1NlY3VyaXR5IFN0YXR1cwojZGVmaW5lIENGR19VUERBVEVEX0lORk9fUkVDT1JECQkJMHhGMjA0CQkvL1VwZGF0ZWQgSW5mbyBSZWNvcmQKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IENPTkZJR1VSQVRJT04gUkVDT1JEUyA9PT09PT09PT09PT09PT09PT09PT09Ki8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTIFQgUiBVIEMgVCBVIFIgRSAgIEQgRSBGIEkgTiBJIFQgSSBPIE4gUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLy9RdWljayZEaXJ0eSB0byBnZXQgZG93bmxvYWQgZm9yIERPUyBPREkgSGVybWVzLUlJIHJ1bm5pbmcgdHlwZWRlZiBMVFZfU1RSQ1QgRkFSICoJTFRWUDsKdHlwZWRlZiBMVFZfU1RSQ1QgRkFSICoJTFRWUDsgICAvLyBpLnMubyAjZGVmaW5lIExUVlAgTFRWX1NUUkNUIEZBUiAqCgojaWYgZGVmaW5lZCBXVkxBTl80MiB8fCBkZWZpbmVkIFdWTEFOXzQzIC8vOz9rZWVwdXAgd2l0aCBsZWdhY3kgYSBsaXR0bGUgd2hpbGUgbG9uZ2VyICg0YXVnMjAwMykKdHlwZWRlZiBzdHJ1Y3QgRFVJX1NUUkNUIHsJCQkvKiAibGVnYWN5Iiwgc3RpbGwgdXNlZCBieSBXVkxBTjQyLzQzLCBORElTIGRyaXZlcnMgdXNlIFdMQVBJCQkJKi8KCXZvaWQgIEZBUgkqaWZicDsJCQkJLyogUG9pbnRlciB0byBJRkIKCQkJCQkJCQkJICoJcmV0dXJuZWQgZnJvbSBNU0YgdG8gVVNGIGJ5IHVpbF9jb25uZWN0CgkJCQkgCQkJCQkgKglwYXNzZWQgZnJvbSBVU0YgdG8gTVNGIGFzIGEgIm1hZ2ljIGNvb2tpZSIgYnkgYWxsIG90aGVyIFVJTCBmdW5jdGlvbiBjYWxscwoJCQkJIAkJCQkJICovCgloY2ZfMTYJCXN0YXQ7CQkJCS8vIHN0YXR1cyByZXR1cm5lZCBmcm9tIE1TRiB0byBVU0YKCWhjZl8xNgkJZnVuOwkJCQkvLyBjb21tYW5kIGNvZGUgZnJvbSBVU0YgdG8gTVNGCglMVFZfU1RSQ1QJbHR2OwkJCQkvKiBMVFYgc3RydWN0dXJlCgkJCSAJCQkJCQkgKioqIGR1cmluZyB1aWxfcHV0X2luZm86CgkJCQkJCSAJCQkgKgkgIHRoZSBMLCBUIGFuZCBWLWZpZWxkcyBjYXJyeSBpbmZvcm1hdGlvbiBmcm9tIFVTRiB0byBNU0YKCQkJCQkJCQkJICoqKiBkdXJpbmcgdWlsX2dldF9pbmZvOgoJCQkJCQkJCQkgKgkgIHRoZSBMIGFuZCBUIGZpZWxkcyBjYXJyeSBpbmZvcm1hdGlvbiBmcm9tIFVTRiB0byBNU0YKCQkJCQkJCQkJICoJICB0aGUgTCBhbmQgVi1maWVsZHMgY2FycnkgaW5mb3JtYXRpb24gZnJvbSBNU0YgdG8gVVNGCgkJCSAJCQkJCQkgKi8KfSBEVUlfU1RSQ1Q7CnR5cGVkZWYgRFVJX1NUUkNUIEZBUiAqCURVSVA7CiNlbmRpZiAvL2RlZmluZWQgV1ZMQU5fNDIgfHwgZGVmaW5lZCBXVkxBTl80MyAvLzs/a2VlcHVwIHdpdGggbGVnYWN5IGEgbGlpdGxlIHdoaWxlIGxvbmdlciAoNGF1ZzIwMDMpCgoKdHlwZWRlZiBzdHJ1Y3QgQ0ZHX0NNRF9OSUNfU1RSQ1QgewkvLyBDRkdfQ01EX05JQyAoMHgwODYwKQkJSGVybWVzIEVuZ2luZWVyaW5nIGNvbW1hbmQKCWhjZl8xNglsZW47CQkJCQkvL2RlZmF1bHQgbGVuZ3RoIG9mIFJJRAoJaGNmXzE2CXR5cDsJCQkJCS8vUklEIGlkZW50aWZpY2F0aW9uIGFzIGRlZmluZWQgYnkgSGVybWVzCgloY2ZfMTYJY21kOwkJCQkJLy9Db21tYW5kIGNvZGUgKDB4MDAzRikgYW5kIGNvbnRyb2wgYml0cyAoMHhGRkMwKQoJaGNmXzE2CXBhcm0wOwkJCQkJLy9wYXJhbWV0ZXJzIGZvciBIZXJtZXMgUGFyYW0wIHJlZ2lzdGVyCgloY2ZfMTYJcGFybTE7CQkJCQkvL3BhcmFtZXRlcnMgZm9yIEhlcm1lcyBQYXJhbTEgcmVnaXN0ZXIKCWhjZl8xNglwYXJtMjsJCQkJCS8vcGFyYW1ldGVycyBmb3IgSGVybWVzIFBhcmFtMiByZWdpc3RlcgoJaGNmXzE2CXN0YXQ7CQkJCQkvL3Jlc3VsdCBjb2RlIGZyb20gSGVybWVzIFN0YXR1cyByZWdpc3RlcgoJaGNmXzE2CXJlc3AwOwkJCQkJLy9yZXNwb25zZXMgZnJvbSBIZXJtZXMgUmVzcDAgcmVnaXN0ZXIKCWhjZl8xNglyZXNwMTsJCQkJCS8vcmVzcG9uc2VzIGZyb20gSGVybWVzIFJlc3AxIHJlZ2lzdGVyCgloY2ZfMTYJcmVzcDI7CQkJCQkvL3Jlc3BvbnNlcyBmcm9tIEhlcm1lcyBSZXNwMiByZWdpc3RlcgoJaGNmXzE2CWhjZl9zdGF0OwkJCQkvL3Jlc3VsdCBjb2RlIGZyb20gY21kX2V4ZSByb3V0aW5lCgloY2ZfMTYJaWZiX2Vycl9jbWQ7CQkJLy9JRkJfRXJyQ21kCgloY2ZfMTYJaWZiX2Vycl9xdWFsaWZpZXI7CQkvL0lGQl9FcnJRdWFsaWZpZXIKfSBDRkdfQ01EX05JQ19TVFJDVDsKCgp0eXBlZGVmIHN0cnVjdCBDRkdfRFJWX0lORk9fU1RSQ1QgewkJLy9DRkdfRFJWX0lORk8gKDB4MDgyNSkgZHJpdmVyIGluZm9ybWF0aW9uCgloY2ZfMTYJbGVuOwkJCQkJLy9kZWZhdWx0IGxlbmd0aCBvZiBSSUQKCWhjZl8xNgl0eXA7CQkJCQkvL1JJRCBpZGVudGlmaWNhdGlvbiBhcyBkZWZpbmVkIGJ5IEhlcm1lcwoJaGNmXzgJZHJpdmVyX25hbWVbOF07CQkJLy9Ecml2ZXIgbmFtZSwgOCBieXRlcywgcmlnaHQgemVybyBwYWRkZWQKCWhjZl8xNglkcml2ZXJfdmVyc2lvbjsJCQkvL0JDRCAyIGRpZ2l0IG1ham9yIGFuZCAyIGRpZ2l0IG1pbm9yIGRyaXZlciB2ZXJzaW9uCgloY2ZfMTYJSENGX3ZlcnNpb247ICAgCQkJLy9CQ0QgMiBkaWdpdCBtYWpvciBhbmQgMiBkaWdpdCBtaW5vciBIQ0YgdmVyc2lvbgoJaGNmXzE2CWRyaXZlcl9zdGF0OwkJCS8vCgloY2ZfMTYJSU9fYWRkcmVzczsJCQkJLy9iYXNlIElPIGFkZHJlc3MgdXNlZCBieSBOSUMKCWhjZl8xNglJT19yYW5nZTsJCQkJLy9yYW5nZSBvZiBJTyBhZGRyZXNzZXMgdXNlZCBieSBOSUMKCWhjZl8xNglJUlFfbnVtYmVyOwkJCQkvL0ludGVycnVwdCB1c2VkIGJ5IE5JQwoJaGNmXzE2CWNhcmRfc3RhdDsJCQkJLypOSUMgc3RhdHVzCgkJCQkJCQkJCUAqCTB4ODAwMAlDYXJkIHByZXNlbnQKCQkJCQkJCQkJQCoJMHg0MDAwCUNhcmQgRW5hYmxlZAoJCQkJCQkJCQlAKgkweDIwMDAJRHJpdmVyIGluY29tcGF0aWJsZSB3aXRoIE5JQyBQcmltYXJ5IEZ1bmN0aW9ucwoJCQkJCQkJCQlAKgkweDEwMDAJRHJpdmVyIGluY29tcGF0aWJsZSB3aXRoIE5JQyBTdGF0aW9uIEZ1bmN0aW9ucwkJCQkqLwoJaGNmXzE2CWZyYW1lX3R5cGU7CQkJCS8qRnJhbWUgdHlwZQoJCQkJCQkJCQlAKgkweDAwMAk4MDIuMwoJCQkJCQkJCQlAKgkweDAwOAk4MDIuMTEJCQkJCQkJCQkJCQkJCSovCgloY2ZfMzIJZHJ2X2luZm87CQkJCS8qZHJpdmVyIHNwZWNpZmljIGluZm8KCQkJCQkJCQkJICogQ0U6IHZpcnR1YWwgSS9PIGJhc2UJCQkJCQkJCQkJCQkJKi8KfUNGR19EUlZfSU5GT19TVFJDVDsKCiNkZWZpbmUgQ09NUF9JRF9GV19QUkkJCQkJCTIxCQkvL1ByaW1hcnkgRnVuY3Rpb25zIEZpcm13YXJlCiNkZWZpbmUgQ09NUF9JRF9GV19JTlRFUk1FRElBVEUJCQkyMgkJLy9JbnRlcm1lZGlhdGUgRnVuY3Rpb25zIEZpcm13YXJlCiNkZWZpbmUgQ09NUF9JRF9GV19TVEEJCQkJCTMxCQkvL1N0YXRpb24gRnVuY3Rpb25zIEZpcm13YXJlCiNkZWZpbmUgQ09NUF9JRF9GV19BUAkJCQkJMzIJCS8vQVAgRnVuY3Rpb25zIEZpcm13YXJlCiNkZWZpbmUgQ09NUF9JRF9GV19BUF9GQUtFCQkJICAgMzMxCQkvL0FQIEZ1bmN0aW9ucyBGaXJtd2FyZQoKI2RlZmluZSBDT01QX0lEX01JTklQT1JUX05ESVNfMzEJCTQxCQkvL1dpbmRvd3MgOXgvTlQgTWluaXBvcnQgTkRJUyAzLjEKI2RlZmluZSBDT01QX0lEX1BBQ0tFVAkJCQkJNDIJCS8vUGFja2V0CiNkZWZpbmUgQ09NUF9JRF9PRElfMTYJCQkJCTQzCQkvL0RPUyBPREkKI2RlZmluZSBDT01QX0lEX09ESV8zMgkJCQkJNDQJCS8vMzItYml0cyBPREkKI2RlZmluZSBDT01QX0lEX01BQ19PUwkJCQkJNDUJCS8vTWFjaW50b3NoIE9TCiNkZWZpbmUgQ09NUF9JRF9XSU5fQ0UJCQkJCTQ2CQkvL1dpbmRvd3MgQ0UgTWluaXBvcnQKLy8jZGVmaW5lIENPTVBfSURfTElOVVhfUEQJCQkJNDcJCS8vTGludXgsIEhDRi1saWdodCBiYXNlZCwgTVNGIHNvdXJjZSBjb2RlIGluIFB1YmxpYyBEb21haW4KI2RlZmluZSBDT01QX0lEX01JTklQT1JUX05ESVNfNTAJCTQ4CQkvL1dpbmRvd3MgOXgvTlQgTWluaXBvcnQgTkRJUyA1LjAKI2RlZmluZSBDT01QX0lEX0xJTlVYCQkJCQk0OQkJLypMaW51eCwgR1BMJ2VkIEhDRiBiYXNlZCwgZnVsbCBzb3VyY2UgY29kZSBpbiBQdWJsaWMgRG9tYWluCgkJCQkJCQkJCQkgIAkJICp0aGFua3MgdG8gQW5kcmVhcyBOZXVoYXVzCQkJCQkJCQkqLwojZGVmaW5lIENPTVBfSURfUU5YCQkJCQkJNTAJCS8vUU5YCiNkZWZpbmUgQ09NUF9JRF9NSU5JUE9SVF9ORElTXzUwX1VTQgk1MQkJLy9XaW5kb3dzIDl4L05UIE1pbmlwb3J0IE5ESVMgNC4wCiNkZWZpbmUgQ09NUF9JRF9NSU5JUE9SVF9ORElTXzQwCQk1MgkJLy9XaW5kb3dzIDl4L05UIE1pbmlwb3J0IE5ESVMgNC4wCiNkZWZpbmUgQ09NUF9JRF9WWF9XT1JLU19FTkRTVEEJCQk1MwkJLy8gVnhXb3JrcyBFTkQgU3RhdGlvbiBkcml2ZXIKI2RlZmluZSBDT01QX0lEX1ZYX1dPUktTX0VOREFQCQkJNTQJCS8vIFZ4V29ya3MgRU5EIEFjY2VzcyBQb2ludCBkcml2ZXIKLy87PyNkZWZpbmUgQ09NUF9JRF9NQUNfT1NfPz8/PwkJCTU1CQkvLzs/Y2hlY2sgd2l0aCBITQojZGVmaW5lIENPTVBfSURfVlhfV09SS1NfRU5ECQkJNTYJCS8vIFZ4V29ya3MgRU5EIFN0YXRpb24vQWNjZXNzIFBvaW50IGRyaXZlcgovLwkJCQkJCQkJCQk1NwkJLy9OdWNsZXVzT1NAQVJNIERyaXZlci4KI2RlZmluZSBDT01QX0lEX1dTVQkJCQkJCTYzCQkvKiBXYXZlTEFOIFN0YXRpb24gRmlybXdhcmUgVXBkYXRlIHV0aWxpdHkKCQkJCQkJCQkJCQkJICoJdmFyaWFudCAxOiBXaW5kb3dzCgkJCQkJCQkJCQkJCSAqCXZhcmlhbnQgMjogRE9TCgkJCQkJCQkJCQkJCSAqLwojZGVmaW5lIENPTVBfSURfQVAxCQkJCQkJODEJCS8vV2F2ZUxBTi9JRUVFIEFQCiNkZWZpbmUgQ09NUF9JRF9FQwkJCQkJCTgzCQkvL1dhdmVMQU4vSUVFRSBFdGhlcm5ldCBDb252ZXJ0ZXIKI2RlZmluZSBDT01QX0lEX1VCTAkJCQkJCTg3CQkvL1VTQiBCb290IExvYWRlcgoKI2RlZmluZSBDT01QX1JPTEVfU1VQTAkJCQkJMHgwMAkvL3N1cHBsaWVyCiNkZWZpbmUgQ09NUF9ST0xFX0FDVAkJCQkJMHgwMQkvL2FjdG9yCgoJCQkJCQkJCQkJCQkvL1N1cHBsaWVyCQkJICAtIGFjdG9yCiNkZWZpbmUgQ09NUF9JRF9NRkkJCQkJCQkweDAxCS8vTW9kZW0JCSAJCSAgLSBGaXJtd2FyZQlJL0YKI2RlZmluZSBDT01QX0lEX0NGSQkJCQkJCTB4MDIJLy9Db250cm9sbGVyCQkgIC0gRmlybXdhcmUJSS9GCiNkZWZpbmUgQ09NUF9JRF9QUkkJCQkJCQkweDAzCS8vUHJpbWFyeSBGaXJtd2FyZQkgIC0gRHJpdmVyCQlJL0YKI2RlZmluZSBDT01QX0lEX1NUQQkJCQkJCTB4MDQJLy9TdGF0aW9uIEZpcm13YXJlCSAgLSBEcml2ZXIJCUkvRgojZGVmaW5lIENPTVBfSURfRFVJCQkJCQkJMHgwNQkvL0RyaXZlcgkJCSAgLSBVdGlsaXR5CQlJL0YKI2RlZmluZSBDT01QX0lEX0hTSQkJCQkJCTB4MDYJLy9IL1cgICAgICAgICAgICAgICAgIC0gRHJpdmVyCQlJL0YKI2RlZmluZSBDT01QX0lEX0RBSQkJCQkJCTB4MDcJLy9BUEkgICAgICAgICAgICAgICAgIC0gRHJpdmVyCQlJL0YKI2RlZmluZSBDT01QX0lEX0FQRgkJCQkJCTB4MDgJLy9IL1cgICAgICAgICAgICAgICAgIC0gRHJpdmVyCQlJL0YKI2RlZmluZSBDT01QX0lEX0lOVAkJCQkJCTB4MDkJLy9JbnRlcm1lZGlhdGUgRlcgICAgIC0gRHJpdmVyCQlJL0YKCiNpZmRlZiBIQ0ZfTEVHQUNZCiNkZWZpbmUgSENGX0FDVF9BQ1NfU0NBTgkJCQlIQ0ZfQUNUX1BSU19TQ0FOCiNkZWZpbmUgVUlMX0FDVF9BQ1NfU0NBTiAJCQkJVUlMX0FDVF9QUlNfU0NBTgojZGVmaW5lIE1ERF9BQ1RfQUNTX1NDQU4JIAkJCU1ERF9BQ1RfUFJTX1NDQU4KI2RlZmluZSBDRkdfQUNTX1NDQU4JCQkJCUNGR19QUlNfU0NBTgojZW5kaWYgLy8gSENGX0xFR0FDWQoKI2VuZGlmIC8vIE1ERF9ICgo=