LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQWdlcmUgU3lzdGVtcyBJbmMuCiAqIFdpcmVsZXNzIGRldmljZSBkcml2ZXIgZm9yIExpbnV4ICh3bGFnczQ5KS4KICoKICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMgQWdlcmUgU3lzdGVtcyBJbmMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KICoKICogSW5pdGlhbGx5IGRldmVsb3BlZCBieSBUcmlwbGVQb2ludCwgSW5jLgogKiAgIGh0dHA6Ly93d3cudHJpcGxlcG9pbnQuY29tCiAqCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqICAgSGVhZGVyIGZvciBkZWZpbnRpb25zIGFuZCBtYWNyb3MgaW50ZXJuYWwgdG8gdGhlIGRydmllci4KICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICoKICogU09GVFdBUkUgTElDRU5TRQogKgogKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9ucywKICogd2hpY2ggeW91IHNob3VsZCByZWFkIGNhcmVmdWxseSBiZWZvcmUgdXNpbmcgdGhlIHNvZnR3YXJlLiAgVXNpbmcgdGhpcwogKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCiAqIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KICoKICogQ29weXJpZ2h0IKkgMjAwMyBBZ2VyZSBTeXN0ZW1zIEluYy4KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9ucywgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcwogKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBhcyBjb21tZW50cyBpbiB0aGUgY29kZSBhcwogKiAgICB3ZWxsIGFzIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKICogICAgZGlzdHJpYnV0aW9uLgogKgogKiAuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgRGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICoKICogLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFnZXJlIFN5c3RlbXMgSW5jLiBub3IgdGhlIG5hbWVzIG9mIHRoZSBjb250cmlidXRvcnMKICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBEaXNjbGFpbWVyCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgk0FTIElTlCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAogKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgSU5GUklOR0VNRU5UIEFORCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBBTlkKICogVVNFLCBNT0RJRklDQVRJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRISVMgU09GVFdBUkUgSVMgU09MRUxZIEFUIFRIRSBVU0VSUyBPV04KICogUklTSy4gSU4gTk8gRVZFTlQgU0hBTEwgQUdFUkUgU1lTVEVNUyBJTkMuIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQogKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwogKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CiAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIENPTlRSQUNULCBTVFJJQ1QKICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKICogREFNQUdFLgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmbmRlZiBfX1dBVkVMQU4yX0hfXwojZGVmaW5lIF9fV0FWRUxBTjJfSF9fCgoKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgaW5jbHVkZSBmaWxlcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgojaWZkZWYgQlVTX1BDTUNJQQojaW5jbHVkZSA8cGNtY2lhL2NzX3R5cGVzLmg+CiNpbmNsdWRlIDxwY21jaWEvY3MuaD4KI2luY2x1ZGUgPHBjbWNpYS9jaXN0cGwuaD4KI2luY2x1ZGUgPHBjbWNpYS9jaXNyZWcuaD4KI2luY2x1ZGUgPHBjbWNpYS9jaXNjb2RlLmg+CiNpbmNsdWRlIDxwY21jaWEvZHMuaD4KI2VuZGlmICAvLyBCVVNfUENNQ0lBCgojaWZkZWYgSEFTX1dJUkVMRVNTX0VYVEVOU0lPTlMKI2luY2x1ZGUgPGxpbnV4L3dpcmVsZXNzLmg+CiNpZiBXSVJFTEVTU19FWFQgPiAxMwojaW5jbHVkZSA8bmV0L2l3X2hhbmRsZXIuaD4KI2VuZGlmIC8vIFdJUkVMRVNTX0VYVCA+IDEzCiNkZWZpbmUgVVNFX0RCTQojZGVmaW5lIFJFVFVSTl9DVVJSRU5UX05FVFdPUktOQU1FCiNkZWZpbmUgVVNFX0ZSRVFVRU5DWQojZW5kaWYgLy8gSEFTX1dJUkVMRVNTX0VYVEVOU0lPTlMvCgojaW5jbHVkZSA8bGludXgvbGlzdC5oPgoKI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgoKCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogIGNvbnN0YW50IGRlZmluaXRpb25zCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgcF91OCAgICBfX3U4CiNkZWZpbmUgcF9zOCAgICBfX3M4CiNkZWZpbmUgcF91MTYgICBfX3UxNgojZGVmaW5lIHBfczE2ICAgX19zMTYKI2RlZmluZSBwX3UzMiAgIF9fdTMyCiNkZWZpbmUgcF9zMzIgICBfX3MzMgojZGVmaW5lIHBfY2hhciAgY2hhcgoKI2RlZmluZSBNQVhfS0VZX0xFTiAgICAgICAgICgyICsgKDEzICogMikpIC8vIDB4IHBsdXMgMTMgaGV4IGRpZ2l0IHBhaXJzCiNkZWZpbmUgTUJfU0laRSAgICAgICAgICAgICAxMDI0CiNkZWZpbmUgTUFYX0VOQ19MRU4gICAgICAgICAxMDQKCiNkZWZpbmUgTUFYX1NDQU5fVElNRV9TRUMgICA4CiNkZWZpbmUgTUFYX05BUFMgICAgICAgICAgICAzMgoKI2RlZmluZSBDRkdfTUJfSU5GTyAgICAgICAgIDB4MDgyMAkJLy9NYWlsIEJveCBJbmZvIEJsb2NrCgojZGVmaW5lIE5VTV9XRFNfUE9SVFMgICAgICAgNgoKI2RlZmluZSBXVkxBTl9NQVhfTE9PS0FIRUFEIChIQ0ZfTUFYX01TRys0NikgLyogYXMgcGVyIHMwMDA1TUlDXzQuZG9jICovCgoKLyogTWluL01heC9EZWZhdWx0IFBhcmFtZXRlciBWYWx1ZXMgKi8KI2lmIDAgLy87PyAoSENGX1RZUEUpICYgSENGX1RZUEVfQVAKLy87PyB3aHkgdGhpcyBkaWZmZXJlbmNlIGRlcGVuZGluZyBvbiBjb21waWxlIG9wdGlvbiwgc2VlbXMgdG8gbWUgaXQgc2hvdWxkIGRlcGVuZCBvbiBydW50aW1lIGlmIGFueXRoaW5nCiNkZWZpbmUgUEFSTV9ERUZBVUxUX1NTSUQgICAgICAgICAgICAgICAgICAgICAgICJMaW51eEFQIgojZWxzZQojZGVmaW5lIFBBUk1fREVGQVVMVF9TU0lEICAgICAgICAgICAgICAgICAgICAgICAiQU5ZIgojZW5kaWYgLy8gSENGX1RZUEVfQVAKCiNkZWZpbmUgUEFSTV9NSU5fTkFNRV9MRU4gICAgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBQQVJNX01BWF9OQU1FX0xFTiAgICAgICAgICAgICAgICAgICAgICAgMzIKCgovKiBUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIHBlcnRhaW4gdG8gbW9kdWxlIGFuZCBwcm9maWxlIHBhcmFtZXRlcnMgKi8KLy8gI2RlZmluZSBQQVJNX0FQX01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBNb2RlCi8vICNkZWZpbmUgUEFSTV9OQU1FX0FQX01PREUJCQkJCQlURVhUKCJBUE1vZGUiKQovLyAjZGVmaW5lIFBBUk1fREVGQVVMVF9BUF9NT0RFCQkJCQlGQUxTRQoKI2RlZmluZSBQQVJNX0FVVEhFTlRJQ0FUSU9OICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb24KI2RlZmluZSBQQVJNX05BTUVfQVVUSEVOVElDQVRJT04JCQkJVEVYVCgiQXV0aGVudGljYXRpb24iKQojZGVmaW5lIFBBUk1fTUlOX0FVVEhFTlRJQ0FUSU9OICAgICAgICAgICAgICAgICAxCiNkZWZpbmUgUEFSTV9NQVhfQVVUSEVOVElDQVRJT04gICAgICAgICAgICAgICAgIDIKI2RlZmluZSBQQVJNX0RFRkFVTFRfQVVUSEVOVElDQVRJT04gICAgICAgICAgICAgMQoKI2RlZmluZSBQQVJNX0FVVEhfS0VZX01HTVRfU1VJVEUgICAgICAgICAgICAgICAgQXV0aEtleU1nbXRTdWl0ZQojZGVmaW5lIFBBUk1fTkFNRV9BVVRIX0tFWV9NR01UX1NVSVRFICAgICAgICAgICBURVhUKCJBdXRoS2V5TWdtdFN1aXRlIikKI2RlZmluZSBQQVJNX01JTl9BVVRIX0tFWV9NR01UX1NVSVRFICAgICAgICAgICAgMAojZGVmaW5lIFBBUk1fTUFYX0FVVEhfS0VZX01HTVRfU1VJVEUgICAgICAgICAgICA0CiNkZWZpbmUgUEFSTV9ERUZBVUxUX0FVVEhfS0VZX01HTVRfU1VJVEUgICAgICAgIDAKCiNkZWZpbmUgUEFSTV9CUlNDXzJHSFogICAgICAgICAgICAgICAgICAgICAgICAgIEJSU0MyR0h6CiNkZWZpbmUgUEFSTV9OQU1FX0JSU0NfMkdIWiAgICAgICAgICAgICAgICAgICAgIFRFWFQoIkJSU0MyR0h6IikKI2RlZmluZSBQQVJNX01JTl9CUlNDICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwCiNkZWZpbmUgUEFSTV9NQVhfQlJTQyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEZGRgojZGVmaW5lIFBBUk1fREVGQVVMVF9CUlNDXzJHSFogICAgICAgICAgICAgICAgICAweDAwMEYKCiNkZWZpbmUgUEFSTV9CUlNDXzVHSFogICAgICAgICAgICAgICAgICAgICAgICAgIEJSU0M1R0h6CiNkZWZpbmUgUEFSTV9OQU1FX0JSU0NfNUdIWiAgICAgICAgICAgICAgICAgICAgIFRFWFQoIkJSU0M1R0h6IikKI2RlZmluZSBQQVJNX0RFRkFVTFRfQlJTQ181R0haICAgICAgICAgICAgICAgICAgMHgwMTUwCgojZGVmaW5lIFBBUk1fQ09FWElTVEVOQ0UgICAgICAgICAgICAgICAgICAgICAgICBDb2V4aXN0ZW5jZQojZGVmaW5lIFBBUk1fTkFNRV9DT0VYSVNURU5DRSAgICAgICAgICAgICAgICAgICBURVhUKCJDb2V4aXN0ZW5jZSIpCiNkZWZpbmUgUEFSTV9NSU5fQ09FWElTVEVOQ0UgICAgICAgICAgICAgICAgICAgIDB4MDAwMAojZGVmaW5lIFBBUk1fTUFYX0NPRVhJU1RFTkNFICAgICAgICAgICAgICAgICAgICAweDAwMDcKI2RlZmluZSBQQVJNX0RFRkFVTFRfQ09FWElTVEVOQ0UgICAgICAgICAgICAgICAgMHgwMDAwCgojZGVmaW5lIFBBUk1fQ09ORklHVVJFRCAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmVkCiNkZWZpbmUgUEFSTV9OQU1FX0NPTkZJR1VSRUQJCQkJCVRFWFQoIkNvbmZpZ3VyZWQiKQoKI2RlZmluZSBQQVJNX0NPTk5FQ1RJT05fQ09OVFJPTCAgICAgICAgICAgICAgICAgQ29ubmVjdGlvbkNvbnRyb2wKI2RlZmluZSBQQVJNX05BTUVfQ09OTkVDVElPTl9DT05UUk9MICAgICAgICAgICAgVEVYVCgiQ29ubmVjdGlvbkNvbnRyb2wiKQojZGVmaW5lIFBBUk1fTUlOX0NPTk5FQ1RJT05fQ09OVFJPTCAgICAgICAgICAgICAwCiNkZWZpbmUgUEFSTV9NQVhfQ09OTkVDVElPTl9DT05UUk9MICAgICAgICAgICAgIDMKI2RlZmluZSBQQVJNX0RFRkFVTFRfQ09OTkVDVElPTl9DT05UUk9MICAgICAgICAgMgoKI2RlZmluZSBQQVJNX0NSRUFURV9JQlNTICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlSUJTUwojZGVmaW5lIFBBUk1fTkFNRV9DUkVBVEVfSUJTUyAgICAgICAgICAgICAgICAgICBURVhUKCJDcmVhdGVJQlNTIikKI2RlZmluZSBQQVJNX0RFRkFVTFRfQ1JFQVRFX0lCU1MgICAgICAgICAgICAgICAgRkFMU0UKI2RlZmluZSBQQVJNX0RFRkFVTFRfQ1JFQVRFX0lCU1NfU1RSICAgICAgICAgICAgIk4iCgojZGVmaW5lIFBBUk1fREVCVUdfRkxBRyAgICAgICAgICAgICAJICAgIAlEZWJ1Z0ZsYWcKI2RlZmluZSBQQVJNX05BTUVfREVCVUdfRkxBRyAgICAgICAgICAgIAkJVEVYVCgiRGVidWdGbGFnIikKI2RlZmluZSBQQVJNX01JTl9ERUJVR19GTEFHICAgICAgICAgICAgIAkJMAojZGVmaW5lIFBBUk1fTUFYX0RFQlVHX0ZMQUcgICAgICAgICAgICAgCQkweEZGRkYKI2RlZmluZSBQQVJNX0RFRkFVTFRfREVCVUdfRkxBRyAgICAgICAgIAkJMHhGRkZGCgojZGVmaW5lIFBBUk1fREVTSVJFRF9TU0lEICAgICAgICAgICAgICAgICAgICAgICBEZXNpcmVkU1NJRAojZGVmaW5lIFBBUk1fTkFNRV9ERVNJUkVEX1NTSUQgICAgICAgICAgICAgICAgICBURVhUKCJEZXNpcmVkU1NJRCIpCgojZGVmaW5lIFBBUk1fRE9XTkxPQURfRklSTVdBUkUgICAgICAgICAgICAgICAgICBEb3dubG9hZEZpcm13YXJlCiNkZWZpbmUgUEFSTV9OQU1FX0RPV05MT0FEX0ZJUk1XQVJFICAgICAgICAgICAgIFRFWFQoIkRvd25sb2FkRmlybXdhcmUiKQoKI2RlZmluZSBQQVJNX0RSSVZFUl9FTkFCTEUgICAgICAgICAgICAgICAgICAgICAgRHJpdmVyRW5hYmxlCiNkZWZpbmUgUEFSTV9OQU1FX0RSSVZFUl9FTkFCTEUJCQkJCVRFWFQoIkRyaXZlckVuYWJsZSIpCiNkZWZpbmUgUEFSTV9ERUZBVUxUX0RSSVZFUl9FTkFCTEUJCQkJVFJVRQoKI2RlZmluZSBQQVJNX0VOQUJMRV9FTkNSWVBUSU9OICAgICAgICAgICAgICAgICAgRW5hYmxlRW5jcnlwdGlvbgojZGVmaW5lIFBBUk1fTkFNRV9FTkFCTEVfRU5DUllQVElPTiAgICAgICAgICAgICBURVhUKCJFbmFibGVFbmNyeXB0aW9uIikKI2RlZmluZSBQQVJNX01JTl9FTkFCTEVfRU5DUllQVElPTiAgICAgICAgICAgICAgMAojZGVmaW5lIFBBUk1fTUFYX0VOQUJMRV9FTkNSWVBUSU9OICAgICAgICAgICAgICA3CiNkZWZpbmUgUEFSTV9ERUZBVUxUX0VOQUJMRV9FTkNSWVBUSU9OICAgICAgICAgIDAKCiNkZWZpbmUgUEFSTV9FTkNSWVBUSU9OICAgICAgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb24KI2RlZmluZSBQQVJNX05BTUVfRU5DUllQVElPTiAgICAgICAgICAgICAgICAgICAgVEVYVCgiRW5jcnlwdGlvbiIpCgojZGVmaW5lIFBBUk1fRVhDTFVERV9VTkVOQ1JZUFRFRCAgICAgICAgICAgICAgICBFeGNsdWRlVW5lbmNyeXB0ZWQKI2RlZmluZSBQQVJNX05BTUVfRVhDTFVERV9VTkVOQ1JZUFRFRCAgICAgICAgICAgVEVYVCgiRXhjbHVkZVVuZW5jcnlwdGVkIikKI2RlZmluZSBQQVJNX0RFRkFVTFRfRVhDTFVERV9VTkVOQ1JZUFRFRCAgICAgICAgVFJVRQojZGVmaW5lIFBBUk1fREVGQVVMVF9FWENMVURFX1VORU5DUllQVEVEX1NUUiAgICAiTiIKCiNkZWZpbmUgUEFSTV9JTlRSQV9CU1NfUkVMQVkgICAgICAgICAgICAgICAgICAgIEludHJhQlNTUmVsYXkKI2RlZmluZSBQQVJNX05BTUVfSU5UUkFfQlNTX1JFTEFZICAgICAgICAgICAgICAgVEVYVCgiSW50cmFCU1NSZWxheSIpCiNkZWZpbmUgUEFSTV9ERUZBVUxUX0lOVFJBX0JTU19SRUxBWSAgICAgICAgICAgIFRSVUUKI2RlZmluZSBQQVJNX0RFRkFVTFRfSU5UUkFfQlNTX1JFTEFZX1NUUiAgICAgICAgIlkiCgojZGVmaW5lIFBBUk1fS0VZMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXkxCiNkZWZpbmUgUEFSTV9OQU1FX0tFWTEgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIktleTEiKQojZGVmaW5lIFBBUk1fS0VZMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXkyCiNkZWZpbmUgUEFSTV9OQU1FX0tFWTIgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIktleTIiKQojZGVmaW5lIFBBUk1fS0VZMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXkzCiNkZWZpbmUgUEFSTV9OQU1FX0tFWTMgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIktleTMiKQojZGVmaW5lIFBBUk1fS0VZNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXk0CiNkZWZpbmUgUEFSTV9OQU1FX0tFWTQgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIktleTQiKQoKLy87PyAjZGVmaW5lIFBBUk1fS0VZX0ZPUk1BVCAgICAgICAgICAgICAgICAgICAgICAgICBBc2NpaUhleAovLzs/ICNkZWZpbmUgUEFSTV9OQU1FX0tFWV9GT1JNQVQgICAgICAgICAgICAgICAgICAgIFRFWFQoIkFzY2lpSGV4IikKCiNkZWZpbmUgUEFSTV9MT0FEX0JBTEFOQ0lORyAgICAgICAgICAgICAgICAgICAgIExvYWRCYWxhbmNpbmcKI2RlZmluZSBQQVJNX05BTUVfTE9BRF9CQUxBTkNJTkcgICAgICAgICAgICAgICAgVEVYVCgiTG9hZEJhbGFuY2luZyIpCiNkZWZpbmUgUEFSTV9ERUZBVUxUX0xPQURfQkFMQU5DSU5HICAgICAgICAgICAgIFRSVUUKI2RlZmluZSBQQVJNX0RFRkFVTFRfTE9BRF9CQUxBTkNJTkdfU1RSICAgICAgICAgIlkiCgojZGVmaW5lIFBBUk1fTUFYX0RBVEFfTEVOR1RIICAgICAgICAgICAgICAgICAgICBNYXhEYXRhTGVuZ3RoCiNkZWZpbmUgUEFSTV9OQU1FX01BWF9EQVRBX0xFTkdUSAkJCQlURVhUKCJNYXhEYXRhTGVuZ3RoIikKCiNkZWZpbmUgUEFSTV9NQVhfU0xFRVAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heFNsZWVwRHVyYXRpb24KI2RlZmluZSBQQVJNX05BTUVfTUFYX1NMRUVQICAgICAgICAgICAgICAgICAgICAgVEVYVCgiTWF4U2xlZXBEdXJhdGlvbiIpCiNkZWZpbmUgUEFSTV9NSU5fTUFYX1BNX1NMRUVQICAgICAgICAgICAgICAgICAgIDEJCQkJCQkJCS8vOz9uYW1lcyBuZWFybHkgcmlnaHQ/CiNkZWZpbmUgUEFSTV9NQVhfTUFYX1BNX1NMRUVQICAgICAgICAgICAgICAgICAgIDY1NTM1CiNkZWZpbmUgUEFSTV9ERUZBVUxUX01BWF9QTV9TTEVFUCAgICAgICAgICAgICAgIDEwMAoKI2RlZmluZSBQQVJNX01FRElVTV9ESVNUUklCVVRJT04gICAgICAgICAgICAgICAgTWVkaXVtRGlzdHJpYnV0aW9uCiNkZWZpbmUgUEFSTV9OQU1FX01FRElVTV9ESVNUUklCVVRJT04gICAgICAgICAgIFRFWFQoIk1lZGl1bURpc3RyaWJ1dGlvbiIpCiNkZWZpbmUgUEFSTV9ERUZBVUxUX01FRElVTV9ESVNUUklCVVRJT04gICAgICAgIFRSVUUKI2RlZmluZSBQQVJNX0RFRkFVTFRfTUVESVVNX0RJU1RSSUJVVElPTl9TVFIgICAgIlkiCgojZGVmaW5lIFBBUk1fTUlDUk9XQVZFX1JPQlVTVE5FU1MgICAgICAgICAgICAgICBNaWNyb1dhdmVSb2J1c3RuZXNzCiNkZWZpbmUgUEFSTV9OQU1FX01JQ1JPV0FWRV9ST0JVU1RORVNTICAgICAgICAgIFRFWFQoIk1pY3JvV2F2ZVJvYnVzdG5lc3MiKQojZGVmaW5lIFBBUk1fREVGQVVMVF9NSUNST1dBVkVfUk9CVVNUTkVTUyAgICAgICBGQUxTRQojZGVmaW5lIFBBUk1fREVGQVVMVF9NSUNST1dBVkVfUk9CVVNUTkVTU19TVFIgICAiTiIKCiNkZWZpbmUgUEFSTV9NVUxUSUNBU1RfUE1fQlVGRkVSSU5HICAgICAgICAgICAgIE11bHRpY2FzdFBNQnVmZmVyaW5nCiNkZWZpbmUgUEFSTV9OQU1FX01VTFRJQ0FTVF9QTV9CVUZGRVJJTkcJICAgIFRFWFQoIk11bHRpY2FzdFBNQnVmZmVyaW5nIikKI2RlZmluZSBQQVJNX0RFRkFVTFRfTVVMVElDQVNUX1BNX0JVRkZFUklORyAgICAgVFJVRQojZGVmaW5lIFBBUk1fREVGQVVMVF9NVUxUSUNBU1RfUE1fQlVGRkVSSU5HX1NUUiAiWSIKCiNkZWZpbmUgUEFSTV9NVUxUSUNBU1RfUkFURSAgICAgICAgICAgICAgICAgICAgIE11bHRpY2FzdFJhdGUKI2RlZmluZSBQQVJNX05BTUVfTVVMVElDQVNUX1JBVEUgICAgICAgICAgICAgICAgVEVYVCgiTXVsdGljYXN0UmF0ZSIpCiNpZmRlZiBXQVJQCiNkZWZpbmUgUEFSTV9NSU5fTVVMVElDQVNUX1JBVEUgICAgICAgICAgICAgICAgIDB4MDAwMQojZGVmaW5lIFBBUk1fTUFYX01VTFRJQ0FTVF9SQVRFICAgICAgICAgICAgICAgICAweDBmZmYKI2RlZmluZSBQQVJNX0RFRkFVTFRfTVVMVElDQVNUX1JBVEVfMkdIWiAgICAgICAgMHgwMDA0CiNkZWZpbmUgUEFSTV9ERUZBVUxUX01VTFRJQ0FTVF9SQVRFXzVHSFogICAgICAgIDB4MDAxMAojZWxzZQojZGVmaW5lIFBBUk1fTUlOX01VTFRJQ0FTVF9SQVRFICAgICAgICAgICAgICAgICAweDAwMDEKI2RlZmluZSBQQVJNX01BWF9NVUxUSUNBU1RfUkFURSAgICAgICAgICAgICAgICAgMHgwMDA0CiNkZWZpbmUgUEFSTV9ERUZBVUxUX01VTFRJQ0FTVF9SQVRFXzJHSFogICAgICAgIDB4MDAwMgojZGVmaW5lIFBBUk1fREVGQVVMVF9NVUxUSUNBU1RfUkFURV81R0haICAgICAgICAweDAwMDAKI2VuZGlmICAvLyBXQVJQCgojZGVmaW5lIFBBUk1fTVVMVElDQVNUX1JYICAgICAgICAgICAgICAgICAgICAgICBNdWx0aWNhc3RSZWNlaXZlCiNkZWZpbmUgUEFSTV9OQU1FX01VTFRJQ0FTVF9SWCAgICAgICAgICAgICAgICAgIFRFWFQoIk11bHRpY2FzdFJlY2VpdmUiKQojZGVmaW5lIFBBUk1fREVGQVVMVF9NVUxUSUNBU1RfUlggICAgICAgICAgICAgICBUUlVFCiNkZWZpbmUgUEFSTV9ERUZBVUxUX01VTFRJQ0FTVF9SWF9TVFIgICAgICAgICAgICJZIgoKI2RlZmluZSBQQVJNX05FVFdPUktfQUREUiAgICAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MKI2RlZmluZSBQQVJNX05BTUVfTkVUV09SS19BRERSICAgICAgICAgICAgICAgICAgVEVYVCgiTmV0d29ya0FkZHJlc3MiKQojZGVmaW5lIFBBUk1fREVGQVVMVF9ORVRXT1JLX0FERFIgICAgICAgICAgICAgICB7IDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYgfQoKI2RlZmluZSBQQVJNX05FVFdPUktfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgTmV0d29ya1R5cGUKI2RlZmluZSBQQVJNX05BTUVfTkVUV09SS19UWVBFCQkJCQlURVhUKCJOZXR3b3JrVHlwZSIpCiNkZWZpbmUgUEFSTV9ERUZBVUxUX05FVFdPUktfVFlQRSAgIAkJCTAKCiNkZWZpbmUgUEFSTV9PV05fQVRJTV9XSU5ET1cgICAgICAgICAgICAgICAgICAgIE93bkFUSU1XaW5kb3cKI2RlZmluZSBQQVJNX05BTUVfT1dOX0FUSU1fV0lORE9XCQkJCVRFWFQoIk93bkFUSU1XaW5kb3ciKQojZGVmaW5lIFBBUk1fTUlOX09XTl9BVElNX1dJTkRPVyAgICAgICAgICAgICAgICAwCiNkZWZpbmUgUEFSTV9NQVhfT1dOX0FUSU1fV0lORE9XICAgICAgICAgICAgICAgIDEwMAojZGVmaW5lIFBBUk1fREVGQVVMVF9PV05fQVRJTV9XSU5ET1cgICAgICAgICAgICAwCgojZGVmaW5lIFBBUk1fT1dOX0JFQUNPTl9JTlRFUlZBTCAgICAgICAgICAgICAgICBPd25CZWFjb25JbnRlcnZhbAojZGVmaW5lIFBBUk1fTkFNRV9PV05fQkVBQ09OX0lOVEVSVkFMICAgICAgICAgICBURVhUKCJPd25CZWFjb25JbnRlcnZhbCIpCiNkZWZpbmUgUEFSTV9NSU5fT1dOX0JFQUNPTl9JTlRFUlZBTCAgICAgICAgICAgIDIwCiNkZWZpbmUgUEFSTV9NQVhfT1dOX0JFQUNPTl9JTlRFUlZBTCAgICAgICAgICAgIDIwMAojZGVmaW5lIFBBUk1fREVGQVVMVF9PV05fQkVBQ09OX0lOVEVSVkFMICAgICAgICAxMDAKCiNkZWZpbmUgUEFSTV9PV05fQ0hBTk5FTCAgICAgICAgICAgICAgICAgICAgICAgIE93bkNoYW5uZWwKI2RlZmluZSBQQVJNX05BTUVfT1dOX0NIQU5ORUwgICAgICAgICAgICAgICAgICAgVEVYVCgiT3duQ2hhbm5lbCIpCiNkZWZpbmUgUEFSTV9NSU5fT1dOX0NIQU5ORUwgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBQQVJNX01BWF9PV05fQ0hBTk5FTCAgICAgICAgICAgICAgICAgICAgMTYxCiNkZWZpbmUgUEFSTV9ERUZBVUxUX09XTl9DSEFOTkVMICAgICAgICAgICAgICAgIDEwCgojZGVmaW5lIFBBUk1fT1dOX0RUSU1fUEVSSU9EICAgICAgICAgICAgICAgICAgICBPd25EVElNUGVyaW9kCiNkZWZpbmUgUEFSTV9OQU1FX09XTl9EVElNX1BFUklPRAkgICAgICAgICAgICBURVhUKCJPd25EVElNUGVyaW9kIikKI2RlZmluZSBQQVJNX01JTl9PV05fRFRJTV9QRVJJT0QgICAgICAgICAgICAgICAgMQojZGVmaW5lIFBBUk1fTUFYX09XTl9EVElNX1BFUklPRCAgICAgICAgICAgICAgICA2NTUzNQojZGVmaW5lIFBBUk1fREVGQVVMVF9PV05fRFRJTV9QRVJJT0QgICAgICAgICAgICAxCgojZGVmaW5lIFBBUk1fT1dOX05BTUUgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25OYW1lCiNkZWZpbmUgUEFSTV9OQU1FX09XTl9OQU1FICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIk93bk5hbWUiKQojZGVmaW5lIFBBUk1fREVGQVVMVF9PV05fTkFNRSAgICAgICAgICAgICAgICAgICAiTGludXgiCgojZGVmaW5lIFBBUk1fT1dOX1NTSUQgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25TU0lECiNkZWZpbmUgUEFSTV9OQU1FX09XTl9TU0lEICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIk93blNTSUQiKQoKI2RlZmluZSBQQVJNX1BNX0VOQUJMRUQgICAgICAgICAgICAgICAgICAgICAgICAgUE1FbmFibGVkCiNkZWZpbmUgUEFSTV9OQU1FX1BNX0VOQUJMRUQgICAgICAgICAgICAgICAgICAgIFRFWFQoIlBNRW5hYmxlZCIpCiNkZWZpbmUgUEFSTV9NQVhfUE1fRU5BQkxFRAkJCQkJCTMKCiNkZWZpbmUgUEFSTV9QTUVQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNRVBTCiNkZWZpbmUgUEFSTV9OQU1FX1BNRVBTICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIlBNRVBTIikKCiNkZWZpbmUgUEFSTV9QTV9IT0xET1ZFUl9EVVJBVElPTiAgICAgICAgICAgICAgIFBNSG9sZG92ZXJEdXJhdGlvbgojZGVmaW5lIFBBUk1fTkFNRV9QTV9IT0xET1ZFUl9EVVJBVElPTiAgICAgICAgICBURVhUKCJQTUhvbGRvdmVyRHVyYXRpb24iKQojZGVmaW5lIFBBUk1fTUlOX1BNX0hPTERPVkVSX0RVUkFUSU9OICAgICAgICAgICAxCiNkZWZpbmUgUEFSTV9NQVhfUE1fSE9MRE9WRVJfRFVSQVRJT04gICAgICAgICAgIDEwMDAKI2RlZmluZSBQQVJNX0RFRkFVTFRfUE1fSE9MRE9WRVJfRFVSQVRJT04gICAgICAgMTAwCgojZGVmaW5lIFBBUk1fUE1fTU9ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3dlck1vZGUKI2RlZmluZSBQQVJNX05BTUVfUE1fTU9ERSAgICAgICAgICAgICAgICAgICAgICAgVEVYVCgiUG93ZXJNb2RlIikKCiNkZWZpbmUgUEFSTV9QT1JUX1RZUEUgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRUeXBlCiNkZWZpbmUgUEFSTV9OQU1FX1BPUlRfVFlQRSAgICAgICAgICAgICAgICAgICAgIFRFWFQoIlBvcnRUeXBlIikKI2RlZmluZSBQQVJNX01JTl9QT1JUX1RZUEUgICAgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIFBBUk1fTUFYX1BPUlRfVFlQRSAgICAgICAgICAgICAgICAgICAgICAzCiNkZWZpbmUgUEFSTV9ERUZBVUxUX1BPUlRfVFlQRSAgICAgICAgICAgICAgICAgIDEKCiNkZWZpbmUgUEFSTV9QUk9NSVNDVU9VU19NT0RFICAgICAgICAgICAgICAgICAgIFByb21pc2N1b3VzTW9kZQojZGVmaW5lIFBBUk1fTkFNRV9QUk9NSVNDVU9VU19NT0RFICAgICAgICAgICAgICBURVhUKCJQcm9taXNjdW91c01vZGUiKQojZGVmaW5lIFBBUk1fREVGQVVMVF9QUk9NSVNDVU9VU19NT0RFICAgICAgICAgICBGQUxTRQojZGVmaW5lIFBBUk1fREVGQVVMVF9QUk9NSVNDVU9VU19NT0RFX1NUUiAgICAgICAiTiIKCiNkZWZpbmUgUEFSTV9SRUpFQ1RfQU5ZICAgICAgICAgICAgICAgICAgICAgICAgIFJlamVjdEFOWQojZGVmaW5lIFBBUk1fTkFNRV9SRUpFQ1RfQU5ZCQkJCSAgICBURVhUKCJSZWplY3RBTlkiKQojZGVmaW5lIFBBUk1fREVGQVVMVF9SRUpFQ1RfQU5ZICAgICAgICAgICAgICAgICBGQUxTRQojZGVmaW5lIFBBUk1fREVGQVVMVF9SRUpFQ1RfQU5ZX1NUUiAgICAgICAgICAgICAiTiIKCiNkZWZpbmUgUEFSTV9SVFNfVEhSRVNIT0xEICAgICAgICAgICAgICAgICAgICAgIFJUU1RocmVzaG9sZAojZGVmaW5lIFBBUk1fTkFNRV9SVFNfVEhSRVNIT0xEICAgICAgICAgICAgICAgICBURVhUKCJSVFNUaHJlc2hvbGQiKQojZGVmaW5lIFBBUk1fTUlOX1JUU19USFJFU0hPTEQgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgUEFSTV9NQVhfUlRTX1RIUkVTSE9MRCAgICAgICAgICAgICAgICAgIDIzNDcKI2RlZmluZSBQQVJNX0RFRkFVTFRfUlRTX1RIUkVTSE9MRCAgICAgICAgICAgICAgMjM0NwoKI2RlZmluZSBQQVJNX1JUU19USFJFU0hPTEQxICAgICAgICAgICAgICAgICAgICAgUlRTVGhyZXNob2xkMQojZGVmaW5lIFBBUk1fTkFNRV9SVFNfVEhSRVNIT0xEMSAgICAgICAgICAgICAgICBURVhUKCJSVFNUaHJlc2hvbGQxIikKI2RlZmluZSBQQVJNX1JUU19USFJFU0hPTEQyICAgICAgICAgICAgICAgICAgICAgUlRTVGhyZXNob2xkMgojZGVmaW5lIFBBUk1fTkFNRV9SVFNfVEhSRVNIT0xEMiAgICAgICAgICAgICAgICBURVhUKCJSVFNUaHJlc2hvbGQyIikKI2RlZmluZSBQQVJNX1JUU19USFJFU0hPTEQzICAgICAgICAgICAgICAgICAgICAgUlRTVGhyZXNob2xkMwojZGVmaW5lIFBBUk1fTkFNRV9SVFNfVEhSRVNIT0xEMyAgICAgICAgICAgICAgICBURVhUKCJSVFNUaHJlc2hvbGQzIikKI2RlZmluZSBQQVJNX1JUU19USFJFU0hPTEQ0ICAgICAgICAgICAgICAgICAgICAgUlRTVGhyZXNob2xkNAojZGVmaW5lIFBBUk1fTkFNRV9SVFNfVEhSRVNIT0xENCAgICAgICAgICAgICAgICBURVhUKCJSVFNUaHJlc2hvbGQ0IikKI2RlZmluZSBQQVJNX1JUU19USFJFU0hPTEQ1ICAgICAgICAgICAgICAgICAgICAgUlRTVGhyZXNob2xkNQojZGVmaW5lIFBBUk1fTkFNRV9SVFNfVEhSRVNIT0xENSAgICAgICAgICAgICAgICBURVhUKCJSVFNUaHJlc2hvbGQ1IikKI2RlZmluZSBQQVJNX1JUU19USFJFU0hPTEQ2ICAgICAgICAgICAgICAgICAgICAgUlRTVGhyZXNob2xkNgojZGVmaW5lIFBBUk1fTkFNRV9SVFNfVEhSRVNIT0xENiAgICAgICAgICAgICAgICBURVhUKCJSVFNUaHJlc2hvbGQ2IikKCiNkZWZpbmUgUEFSTV9TUlNDXzJHSFogICAgICAgICAgICAgICAgICAgICAgICAgIFNSU0MyR0h6CiNkZWZpbmUgUEFSTV9OQU1FX1NSU0NfMkdIWiAgICAgICAgICAgICAgICAgICAgIFRFWFQoIlNSU0MyR0h6IikKI2RlZmluZSBQQVJNX01JTl9TUlNDICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwCiNkZWZpbmUgUEFSTV9NQVhfU1JTQyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEZGRgojZGVmaW5lIFBBUk1fREVGQVVMVF9TUlNDXzJHSFogICAgICAgICAgICAgICAgICAweDBGRkYKCiNkZWZpbmUgUEFSTV9TUlNDXzVHSFogICAgICAgICAgICAgICAgICAgICAgICAgIFNSU0M1R0h6CiNkZWZpbmUgUEFSTV9OQU1FX1NSU0NfNUdIWiAgICAgICAgICAgICAgICAgICAgIFRFWFQoIlNSU0M1R0h6IikKI2RlZmluZSBQQVJNX0RFRkFVTFRfU1JTQ181R0haICAgICAgICAgICAgICAgICAgMHgwRkYwCgojZGVmaW5lIFBBUk1fU1lTVEVNX1NDQUxFICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1TY2FsZQojZGVmaW5lIFBBUk1fTkFNRV9TWVNURU1fU0NBTEUgICAgICAgICAgICAgICAgICBURVhUKCJTeXN0ZW1TY2FsZSIpCiNkZWZpbmUgUEFSTV9NSU5fU1lTVEVNX1NDQUxFICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBQQVJNX01BWF9TWVNURU1fU0NBTEUgICAgICAgICAgICAgICAgICAgNQojZGVmaW5lIFBBUk1fREVGQVVMVF9TWVNURU1fU0NBTEUgICAgICAgICAgICAgICAxCgojZGVmaW5lIFBBUk1fVFhfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeEtleQojZGVmaW5lIFBBUk1fTkFNRV9UWF9LRVkgICAgICAgICAgICAgICAgICAgICAgICBURVhUKCJUeEtleSIpCiNkZWZpbmUgUEFSTV9NSU5fVFhfS0VZICAgICAgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBQQVJNX01BWF9UWF9LRVkgICAgICAgICAgICAgICAgICAgICAgICAgNAojZGVmaW5lIFBBUk1fREVGQVVMVF9UWF9LRVkgICAgICAgICAgICAgICAgICAgICAxCgojZGVmaW5lIFBBUk1fVFhfUE9XX0xFVkVMICAgICAgICAgICAgICAgICAgICAgICBUeFBvd0xldmVsCiNkZWZpbmUgUEFSTV9OQU1FX1RYX1BPV19MRVZFTCAgICAgICAgICAgICAgICAgIFRFWFQoIlR4UG93TGV2ZWwiKQojZGVmaW5lIFBBUk1fTUlOX1RYX1BPV19MRVZFTCAgICAgICAgICAgICAgICAgICAxICAgLy8gMjAgZEJtCiNkZWZpbmUgUEFSTV9NQVhfVFhfUE9XX0xFVkVMICAgICAgICAgICAgICAgICAgIDYgICAvLyAgOCBkQm0KI2RlZmluZSBQQVJNX0RFRkFVTFRfVFhfUE9XX0xFVkVMICAgICAgICAgICAgICAgMyAgIC8vIDE1IGRCbQoKI2RlZmluZSBQQVJNX1RYX1JBVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHhSYXRlQ29udHJvbAojZGVmaW5lIFBBUk1fTkFNRV9UWF9SQVRFICAgICAgICAgICAgICAgICAgICAgICBURVhUKCJUeFJhdGVDb250cm9sIikKI2RlZmluZSBQQVJNX01JTl9UWF9SQVRFICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiNpZmRlZiBXQVJQCiNkZWZpbmUgUEFSTV9NQVhfVFhfUkFURSAgICAgICAgICAgICAgICAgICAgICAgIDB4MEZGRgojZGVmaW5lIFBBUk1fREVGQVVMVF9UWF9SQVRFXzJHSFogICAgICAgICAgICAgICAweDBGRkYKI2RlZmluZSBQQVJNX0RFRkFVTFRfVFhfUkFURV81R0haICAgICAgICAgICAgICAgMHgwRkYwCiNlbHNlCiNkZWZpbmUgUEFSTV9NQVhfVFhfUkFURSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNwojZGVmaW5lIFBBUk1fREVGQVVMVF9UWF9SQVRFXzJHSFogICAgICAgICAgICAgICAweDAwMDMKI2RlZmluZSBQQVJNX0RFRkFVTFRfVFhfUkFURV81R0haICAgICAgICAgICAgICAgMHgwMDAwCiNlbmRpZiAgLy8gV0FSUAoKI2RlZmluZSBQQVJNX1RYX1JBVEUxICAgICAgICAgICAgICAgICAgICAgICAgICAgVHhSYXRlQ29udHJvbDEKI2RlZmluZSBQQVJNX05BTUVfVFhfUkFURTEgICAgICAgICAgICAgICAgICAgICAgVEVYVCgiVHhSYXRlQ29udHJvbDEiKQojZGVmaW5lIFBBUk1fVFhfUkFURTIgICAgICAgICAgICAgICAgICAgICAgICAgICBUeFJhdGVDb250cm9sMgojZGVmaW5lIFBBUk1fTkFNRV9UWF9SQVRFMiAgICAgICAgICAgICAgICAgICAgICBURVhUKCJUeFJhdGVDb250cm9sMiIpCiNkZWZpbmUgUEFSTV9UWF9SQVRFMyAgICAgICAgICAgICAgICAgICAgICAgICAgIFR4UmF0ZUNvbnRyb2wzCiNkZWZpbmUgUEFSTV9OQU1FX1RYX1JBVEUzICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIlR4UmF0ZUNvbnRyb2wzIikKI2RlZmluZSBQQVJNX1RYX1JBVEU0ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHhSYXRlQ29udHJvbDQKI2RlZmluZSBQQVJNX05BTUVfVFhfUkFURTQgICAgICAgICAgICAgICAgICAgICAgVEVYVCgiVHhSYXRlQ29udHJvbDQiKQojZGVmaW5lIFBBUk1fVFhfUkFURTUgICAgICAgICAgICAgICAgICAgICAgICAgICBUeFJhdGVDb250cm9sNQojZGVmaW5lIFBBUk1fTkFNRV9UWF9SQVRFNSAgICAgICAgICAgICAgICAgICAgICBURVhUKCJUeFJhdGVDb250cm9sNSIpCiNkZWZpbmUgUEFSTV9UWF9SQVRFNiAgICAgICAgICAgICAgICAgICAgICAgICAgIFR4UmF0ZUNvbnRyb2w2CiNkZWZpbmUgUEFSTV9OQU1FX1RYX1JBVEU2ICAgICAgICAgICAgICAgICAgICAgIFRFWFQoIlR4UmF0ZUNvbnRyb2w2IikKCiNkZWZpbmUgUEFSTV9WRU5ET1JERVNDUklQVElPTiAgICAgICAgICAgICAgICAgIFZlbmRvckRlc2NyaXB0aW9uCiNkZWZpbmUgUEFSTV9OQU1FX1ZFTkRPUkRFU0NSSVBUSU9OCQkJCVRFWFQoIlZlbmRvckRlc2NyaXB0aW9uIikKCiNkZWZpbmUgUEFSTV9XRFNfQUREUkVTUyAgICAgICAgICAgICAgICAgICAgICAgIFdEU0FkZHJlc3MKI2RlZmluZSBQQVJNX05BTUVfV0RTX0FERFJFU1MJCQkJCVRFWFQoIldEU0FkZHJlc3MiKQoKI2RlZmluZSBQQVJNX1dEU19BRERSRVNTMSAgICAgICAgICAgICAgICAgICAgICAgV0RTQWRkcmVzczEKI2RlZmluZSBQQVJNX05BTUVfV0RTX0FERFJFU1MxCQkJCQlURVhUKCJXRFNBZGRyZXNzMSIpCiNkZWZpbmUgUEFSTV9XRFNfQUREUkVTUzIgICAgICAgICAgICAgICAgICAgICAgIFdEU0FkZHJlc3MyCiNkZWZpbmUgUEFSTV9OQU1FX1dEU19BRERSRVNTMgkJCQkJVEVYVCgiV0RTQWRkcmVzczIiKQojZGVmaW5lIFBBUk1fV0RTX0FERFJFU1MzICAgICAgICAgICAgICAgICAgICAgICBXRFNBZGRyZXNzMwojZGVmaW5lIFBBUk1fTkFNRV9XRFNfQUREUkVTUzMJCQkJCVRFWFQoIldEU0FkZHJlc3MzIikKI2RlZmluZSBQQVJNX1dEU19BRERSRVNTNCAgICAgICAgICAgICAgICAgICAgICAgV0RTQWRkcmVzczQKI2RlZmluZSBQQVJNX05BTUVfV0RTX0FERFJFU1M0CQkJCQlURVhUKCJXRFNBZGRyZXNzNCIpCiNkZWZpbmUgUEFSTV9XRFNfQUREUkVTUzUgICAgICAgICAgICAgICAgICAgICAgIFdEU0FkZHJlc3M1CiNkZWZpbmUgUEFSTV9OQU1FX1dEU19BRERSRVNTNQkJCQkJVEVYVCgiV0RTQWRkcmVzczUiKQojZGVmaW5lIFBBUk1fV0RTX0FERFJFU1M2ICAgICAgICAgICAgICAgICAgICAgICBXRFNBZGRyZXNzNgojZGVmaW5lIFBBUk1fTkFNRV9XRFNfQUREUkVTUzYJCQkJCVRFWFQoIldEU0FkZHJlc3M2IikKCi8qCiNkZWZpbmUgUEFSTV9MT05HX1JFVFJZX0xJTUlUICAgICAgICAgICAgICAgICAgIExvbmdSZXRyeUxpbWl0CiNkZWZpbmUgUEFSTV9OQU1FX0xPTkdfUkVUUllfTElNSVQgICAgICAgICAgICAgIFRFWFQoIkxvbmdSZXRyeUxpbWl0IikKI2RlZmluZSBQQVJNX01JTl9MT05HX1JFVFJZX0xJTUlUICAgICAgICAgICAgICAgMQojZGVmaW5lIFBBUk1fTUFYX0xPTkdfUkVUUllfTElNSVQgICAgICAgICAgICAgICAxNQojZGVmaW5lIFBBUk1fREVGQVVMVF9MT05HX1JFVFJZX0xJTUlUICAgICAgICAgICAzCgoKI2RlZmluZSBQQVJNX1BST0JFX0RBVEFfUkFURVMgICAgICAgICAgICAgICAgICAgUHJvYmVEYXRhUmF0ZXMKI2RlZmluZSBQQVJNX05BTUVfUFJPQkVfREFUQV9SQVRFUyAgICAgICAgICAgICAgVEVYVCgiUHJvYmVEYXRhUmF0ZXMiKQojZGVmaW5lIFBBUk1fTUlOX1BST0JFX0RBVEFfUkFURVMgICAgICAgICAgICAgICAweDAwMDAKI2RlZmluZSBQQVJNX01BWF9QUk9CRV9EQVRBX1JBVEVTICAgICAgICAgICAgICAgMHgwRkZGCiNkZWZpbmUgUEFSTV9ERUZBVUxUX1BST0JFX0RBVEFfUkFURVNfMkdIWiAgICAgIDB4MDAwMgojZGVmaW5lIFBBUk1fREVGQVVMVF9QUk9CRV9EQVRBX1JBVEVTXzVHSFogICAgICAweDAwMTAKCiNkZWZpbmUgUEFSTV9TSE9SVF9SRVRSWV9MSU1JVCAgICAgICAgICAgICAgICAgIFNob3J0UmV0cnlMaW1pdAojZGVmaW5lIFBBUk1fTkFNRV9TSE9SVF9SRVRSWV9MSU1JVCAgICAgICAgICAgICBURVhUKCJTaG9ydFJldHJ5TGltaXQiKQojZGVmaW5lIFBBUk1fTUlOX1NIT1JUX1JFVFJZX0xJTUlUICAgICAgICAgICAgICAxCiNkZWZpbmUgUEFSTV9NQVhfU0hPUlRfUkVUUllfTElNSVQgICAgICAgICAgICAgIDE1CiNkZWZpbmUgUEFSTV9ERUZBVUxUX1NIT1JUX1JFVFJZX0xJTUlUICAgICAgICAgIDcKCgoqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogIHN0YXRlIGRlZmluaXRpb25zCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSB1c2VkIHRvIHRyYWNrIHN0YXRlIHRoZSBkZXZpY2UgKi8KI2RlZmluZSBXTF9GUklNV0FSRV9QUkVTRU5UICAgICAxIC8vIERvd25sb2FkIGlmIG5lZWRlZAojZGVmaW5lIFdMX0ZSSU1XQVJFX05PVF9QUkVTRU5UCTAgLy8gU2tpcCBvdmVyIGRvd25sb2FkLCBhc3N1bWUgaXRzIGFscmVhZHkgdGhlcmUKI2RlZmluZSBXTF9IQU5ETElOR19JTlQgICAgICAgICAxIC8vIEFjdHVhbGx5IGNhbGwgdGhlIEhDRiB0byBzd2l0Y2ggaW50ZXJydXB0cyBvbi9vZmYKI2RlZmluZSBXTF9OT1RfSEFORExJTkdfSU5UICAgICAwIC8vIE5vdCB5ZXQgaGFuZGxpbmcgaW50ZXJydXB0cywgZG8gbm90IHN3aXRjaCBvbi9vZmYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICBtYWNybyBkZWZpbml0aW9ucwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBUaGUgZm9sbG93aW5nIG1hY3JvIGVuc3VyZXMgdGhhdCBubyBzeW1ib2xzIGFyZSBleHBvcnRlZCwgbWluaW1pemluZyB0aGUKICAgY2hhbmNlIG9mIGEgc3ltYm9sIGNvbGxpc2lvbiBpbiB0aGUga2VybmVsICovCi8vIEVYUE9SVF9OT19TWU1CT0xTOwoKI2RlZmluZSBORUxFTShhcnIpIChzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pKQoKI2RlZmluZSBXVkxBTl9WQUxJRF9NQUNfQUREUkVTUyggeCApIFwKKCh4WzBdIT0weEZGKSAmJiAoeFsxXSE9MHhGRikgJiYgKHhbMl0hPTB4RkYpICYmICh4WzNdIT0weEZGKSAmJiAoeFs0XSE9MHhGRikgJiYgKHhbNV0hPTB4RkYpKQoKCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogdHlwZSBkZWZpbml0aW9ucwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojdW5kZWYgRkFMU0UKI3VuZGVmIFRSVUUKCnR5cGVkZWYgZW51bQp7CglGQUxTRSA9IDAsCglUUlVFICA9IDEKfQpib29sX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgX1NjYW5SZXN1bHQKewoJLy9oY2ZfMTYgICAgICAgIGxlbjsKCS8vaGNmXzE2ICAgICAgICB0eXA7CglpbnQgICAgICAgICAgICAgc2Nhbl9jb21wbGV0ZTsKCWludCAgICAgICAgICAgICBudW1fYXBzOwoJU0NBTl9SU19TVFJDVCAgIEFQVGFibGUgW01BWF9OQVBTXTsKfQpTY2FuUmVzdWx0OwoKCnR5cGVkZWYgc3RydWN0IF9MSU5LX1NUQVRVU19TVFJDVAp7CgloY2ZfMTYgIGxlbjsKCWhjZl8xNiAgdHlwOwoJaGNmXzE2ICBsaW5rU3RhdHVzOyAgICAgLyogMS4uNSAqLwp9CkxJTktfU1RBVFVTX1NUUkNUOwoKCnR5cGVkZWYgc3RydWN0IF9BU1NPQ19TVEFUVVNfU1RSQ1QKewoJaGNmXzE2ICBsZW47CgloY2ZfMTYgIHR5cDsKCWhjZl8xNiAgYXNzb2NTdGF0dXM7ICAgICAgICAgICAgLyogMS4uMyAqLwoJaGNmXzggICBzdGFBZGRyW0VUSF9BTEVOXTsKCWhjZl84ICAgb2xkQXBBZGRyW0VUSF9BTEVOXTsKfQpBU1NPQ19TVEFUVVNfU1RSQ1Q7CgoKdHlwZWRlZiBzdHJ1Y3QgX1NFQ1VSSVRZX1NUQVRVU19TVFJDVAp7CgloY2ZfMTYgIGxlbjsKCWhjZl8xNiAgdHlwOwoJaGNmXzE2ICBzZWN1cml0eVN0YXR1czsgICAgIC8qIDEuLjMgKi8KCWhjZl84ICAgc3RhQWRkcltFVEhfQUxFTl07CgloY2ZfMTYgIHJlYXNvbjsKfQpTRUNVUklUWV9TVEFUVVNfU1RSQ1Q7CgojZGVmaW5lIFdWTEFOX1dNUF9QRFVfVFlQRV9MVF9SRVEgICAgICAgMHgwMAojZGVmaW5lIFdWTEFOX1dNUF9QRFVfVFlQRV9MVF9SU1AgICAgICAgMHgwMQojZGVmaW5lIFdWTEFOX1dNUF9QRFVfVFlQRV9BUExfUkVRICAgICAgMHgwMgojZGVmaW5lIFdWTEFOX1dNUF9QRFVfVFlQRV9BUExfUlNQICAgICAgMHgwMwoKdHlwZWRlZiBzdHJ1Y3Qgd3ZsYW5fZXRoX2hkcgp7Cgl1bnNpZ25lZCBjaGFyICAgZHN0W0VUSF9BTEVOXTsgICAgICAgICAgIC8qIERlc3RpbmF0aW9uIGFkZHJlc3MuICovCgl1bnNpZ25lZCBjaGFyICAgc3JjW0VUSF9BTEVOXTsgICAgICAgICAgIC8qIFNvdXJjZSBhZGRyZXNzLiAqLwoJdW5zaWduZWQgc2hvcnQgIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIExlbmd0aCBvZiB0aGUgUERVLiAqLwp9CldWTEFOX0VUSF9IRFIsICpQV1ZMQU5fRVRIX0hEUjsKCnR5cGVkZWYgc3RydWN0IHd2bGFuX2xsY19zbmFwCnsKCXVuc2lnbmVkIGNoYXIgICBkc2FwOyAgICAgICAgICAgICAgICAgICAvKiBEU0FQICgweEFBKSAqLwoJdW5zaWduZWQgY2hhciAgIHNzYXA7ICAgICAgICAgICAgICAgICAgIC8qIFNTQVAgKDB4QUEpICovCgl1bnNpZ25lZCBjaGFyICAgY3RybDsgICAgICAgICAgICAgICAgICAgLyogQ29udHJvbCAoMHgwMykgKi8KCXVuc2lnbmVkIGNoYXIgICBvdWlbM107ICAgICAgICAgICAgICAgICAvKiBPcmdhbml6YXRpb24gVW5pcXVlIElEICgwMC02MC0xZCkuICovCgl1bnNpZ25lZCBjaGFyICAgc3BlY2lkWzJdOyAgICAgICAgICAgICAgLyogU3BlY2lmaWMgSUQgY29kZSAoMDAtMDEpLiAqLwp9CldWTEFOX0xMQ19TTkFQLCAqUFdWTEFOX0xMQ19TTkFQOwoKCnR5cGVkZWYgc3RydWN0IHd2bGFuX2x0X2hkcgp7Cgl1bnNpZ25lZCBjaGFyICAgdmVyc2lvbjsgICAgICAgICAgICAgICAgLyogVmVyc2lvbiAoMHgwMCkgKi8KCXVuc2lnbmVkIGNoYXIgICB0eXBlOyAgICAgICAgICAgICAgICAgICAvKiBQRFUgdHlwZTogMC1yZXEvMS1yZXNwLiAqLwoJdW5zaWduZWQgc2hvcnQgIGlkOyAgICAgICAgICAgICAgICAgICAgIC8qIElkZW50aWZpZXIgdG8gYXNzb2NpYXRlIHJlc3AgdG8gcmVxLiAqLwp9CldWTEFOX0xUX0hEUiwgKlBXVkxBTl9MVF9IRFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgd3ZsYW5fd21wX2hkcgp7Cgl1bnNpZ25lZCBjaGFyICAgdmVyc2lvbjsgICAgICAgICAgICAgICAgLyogVmVyc2lvbiAgKi8KCXVuc2lnbmVkIGNoYXIgICB0eXBlOyAgICAgICAgICAgICAgICAgICAvKiBQRFUgdHlwZSAqLwp9CldWTEFOX1dNUF9IRFIsICpQV1ZMQU5fV01QX0hEUjsKCgojZGVmaW5lIEZJTExFUl9TSVpFICAgICAgICAgICAgIDE1NTQKI2RlZmluZSBURVNUX1BBVFRFUk5fU0laRSAgICAgICA1NAoKCnR5cGVkZWYgc3RydWN0IHd2bGFuX2x0X3JlcQp7Cgl1bnNpZ25lZCBjaGFyICAgRmlsbGVyW1RFU1RfUEFUVEVSTl9TSVpFXTsgICAvKiBtaW5pbWFsIGxlbmd0aCBvZiA1NCBieXRlcyAqLwp9CldWTEFOX0xUX1JFUSwgKlBXVkxBTl9MVF9SRVE7CgoKdHlwZWRlZiBzdHJ1Y3Qgd3ZsYW5fbHRfcnNwCnsKCWNoYXIgICAgICAgICAgIG5hbWVbMzJdOwoJLyogTWVhc3VyZWQgRGF0YSAqLwoJdW5zaWduZWQgY2hhciAgc2lnbmFsOwoJdW5zaWduZWQgY2hhciAgbm9pc2U7Cgl1bnNpZ25lZCBjaGFyICByeEZsb3c7Cgl1bnNpZ25lZCBjaGFyICBkYXRhUmF0ZTsKCXVuc2lnbmVkIHNob3J0IHByb3RvY29sOwoJLyogQ2FwYWJpbGl0aWVzICovCgl1bnNpZ25lZCBjaGFyICBzdGF0aW9uOwoJdW5zaWduZWQgY2hhciAgZGF0YVJhdGVDYXA7Cgl1bnNpZ25lZCBjaGFyICBwb3dlck1nbXRbNF07Cgl1bnNpZ25lZCBjaGFyICByb2J1c3RuZXNzWzRdOwoJdW5zaWduZWQgY2hhciAgc2NhbGluZzsKCXVuc2lnbmVkIGNoYXIgIHJlc2VydmVkWzVdOwp9CldWTEFOX0xUX1JTUCwgKlBXVkxBTl9MVF9SU1A7CgoKdHlwZWRlZiBzdHJ1Y3Qgd3ZsYW5fcnhfd21wX2hkcgp7Cgl1bnNpZ25lZCBzaG9ydCBzdGF0dXM7Cgl1bnNpZ25lZCBzaG9ydCByZXNlcnZlZDFbMl07Cgl1bnNpZ25lZCBjaGFyICBzaWxlbmNlOwoJdW5zaWduZWQgY2hhciAgc2lnbmFsOwoJdW5zaWduZWQgY2hhciAgcmF0ZTsKCXVuc2lnbmVkIGNoYXIgIHJ4RmxvdzsKCXVuc2lnbmVkIHNob3J0IHJlc2VydmVkMlsyXTsKCXVuc2lnbmVkIHNob3J0IGZyYW1lQ29udHJvbDsKCXVuc2lnbmVkIHNob3J0IGR1cmF0aW9uOwoJdW5zaWduZWQgc2hvcnQgYWRkcmVzczFbM107Cgl1bnNpZ25lZCBzaG9ydCBhZGRyZXNzMlszXTsKCXVuc2lnbmVkIHNob3J0IGFkZHJlc3MzWzNdOwoJdW5zaWduZWQgc2hvcnQgc2VxdWVuY2VDb250cm9sOwoJdW5zaWduZWQgc2hvcnQgYWRkcmVzczRbM107CiNpZm5kZWYgSEVSTUVTMjUJLy87P2p1c3QgdG8gYmUgb24gdGhlIHNhZmUgc2lkZSBvZiBpbmhlcml0ZWQgYnV0IG5vdCBjb21wcmVoZW5kZWQgY29kZSAjaWZkZWYgSEVSTUVTMgoJdW5zaWduZWQgc2hvcnQgc2VlbXNfdG9fYmVfdW51c2VkX3Jlc2VydmVkM1s1XTsgIC8vOz8KCXVuc2lnbmVkIHNob3J0IHNlZW1zX3RvX2JlX3VudXNlZF9yZXNlcnZlZDQ7CSAvLzs/CiNlbmRpZiAvLyBIRVJNRVMyNQoJdW5zaWduZWQgc2hvcnQgSGVhZGVyRGF0YUxlbjsKfQpXVkxBTl9SWF9XTVBfSERSLCAqUFdWTEFOX1JYX1dNUF9IRFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgd3ZsYW5fbGlua3Rlc3RfcmVxX3BkdQp7CglXVkxBTl9FVEhfSERSICAgICBldGhIZHI7CglXVkxBTl9MTENfU05BUCAgICBsbGNTbmFwOwoJV1ZMQU5fTFRfSERSICAgICAgbHRIZHI7CglXVkxBTl9MVF9SRVEgICAgICBsdFJlcTsKfQpXVkxBTl9MSU5LVEVTVF9SRVFfUERVLCAqUFdWTEFOX0xJTktURVNUX1JFUV9QRFU7CgoKdHlwZWRlZiBzdHJ1Y3Qgd3ZsYW5fbGlua3Rlc3RfcnNwX3BkdQp7CglXVkxBTl9SWF9XTVBfSERSICB3bXBSeEhkcjsKCVdWTEFOX0VUSF9IRFIgICAgIGV0aEhkcjsKCVdWTEFOX0xMQ19TTkFQICAgIGxsY1NuYXA7CglXVkxBTl9MVF9IRFIgICAgICBsdEhkcjsKCVdWTEFOX0xUX1JTUCAgICAgIGx0UnNwOwp9CldWTEFOX0xJTktURVNUX1JTUF9QRFUsICpQV1ZMQU5fTElOS1RFU1RfUlNQX1BEVTsKCgp0eXBlZGVmIHN0cnVjdCBfTElOS1RFU1RfUlNQX1NUUkNUCnsKCWhjZl8xNiAgICAgICAgICAgICAgICAgICBsZW47CgloY2ZfMTYgICAgICAgICAgICAgICAgICAgdHlwOwoJV1ZMQU5fTElOS1RFU1RfUlNQX1BEVSAgIGx0UnNwOwp9CkxJTktURVNUX1JTUF9TVFJDVDsKCgp0eXBlZGVmIHN0cnVjdCB3dmxhbl93bXBfcnNwX3BkdQp7CglXVkxBTl9SWF9XTVBfSERSICB3bXBSeEhkcjsKCVdWTEFOX0VUSF9IRFIgICAgIGV0aEhkcjsKCVdWTEFOX0xMQ19TTkFQICAgIGxsY1NuYXA7CglXVkxBTl9XTVBfSERSICAgICB3bXBIZHI7Cn0KV1ZMQU5fV01QX1JTUF9QRFUsICpQV1ZMQU5fV01QX1JTUF9QRFU7CgoKdHlwZWRlZiBzdHJ1Y3QgX1dNUF9SU1BfU1RSQ1QKewoJaGNmXzE2ICAgICAgICAgICAgICBsZW47CgloY2ZfMTYgICAgICAgICAgICAgIHR5cDsKCVdWTEFOX1dNUF9SU1BfUERVICAgd21wUnNwOwp9CldNUF9SU1BfU1RSQ1Q7CgoKdHlwZWRlZiBzdHJ1Y3QgX1BST0JFX1JFU1AKewoJLy8gZmlyc3QgcGFydDogODAyLjExCgloY2ZfMTYJbGVuZ3RoOwoJaGNmXzE2CWluZm9UeXBlOwoJaGNmXzE2CXJlc2VydmVkMDsKCS8vaGNmXzgJc2lnbmFsOwoJaGNmXzgJc2lsZW5jZTsKCWhjZl84CXNpZ25hbDsgICAgIC8vIE1vdmVkIHNpZ25hbCBoZXJlIGFzIHNpZ25hbC9ub2lzZSB2YWx1ZXMgd2VyZSBmbGlwcGVkCgloY2ZfOAlyeEZsb3c7CgloY2ZfOAlyYXRlOwoJaGNmXzE2CXJlc2VydmVkMVsyXTsKCgkvLyBzZWNvbmQgcGFydDoKCWhjZl8xNglmcmFtZUNvbnRyb2w7CgloY2ZfMTYJZHVySUQ7CgloY2ZfOAlhZGRyZXNzMVs2XTsKCWhjZl84CWFkZHJlc3MyWzZdOwoJaGNmXzgJQlNTSURbNl07CQkJCQkvLyEgdGhpcyBpcyBjb3JyZWN0LCByaWdodCA/CgloY2ZfMTYJc2VxdWVuY2U7CgloY2ZfOAlhZGRyZXNzNFs2XTsKCiNpZm5kZWYgV0FSUAoJaGNmXzgJcmVzZXJ2ZWQyWzEyXTsKI2VuZGlmIC8vIFdBUlAKCgloY2ZfMTYJZGF0YUxlbmd0aDsKCQkJCQkJCQkJCS8vIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgbmV4dCAzIGZpZWxkcyAoREEvU0EvTGVuVHlwZSkgaXMgYWN0dWFsbHkgbm90IGZpbGxlZCBpbi4KCWhjZl84CURBWzZdOwoJaGNmXzgJU0FbNl07CgojaWZkZWYgV0FSUAoJaGNmXzggICBjaGFubmVsOwoJaGNmXzggICBiYW5kOwojZWxzZQoJaGNmXzE2CWxlblR5cGU7CiNlbmRpZiAgLy8gV0FSUAoKCWhjZl84CXRpbWVTdGFtcFs4XTsKCWhjZl8xNgliZWFjb25JbnRlcnZhbDsKCWhjZl8xNgljYXBhYmlsaXR5OwoJaGNmXzgJcmF3RGF0YVsyMDBdOwkJCQkvLyEgPDw8IHRoaW5rIGFib3V0IHRoaXMgbnVtYmVyICEKCWhjZl8xNglmbGFnczsKfQpQUk9CRV9SRVNQLCAqUFBST0JFX1JFU1A7CgoKdHlwZWRlZiBzdHJ1Y3QgX1Byb2JlUmVzdWx0CnsKCWludCAgICAgICAgIHNjYW5fY29tcGxldGU7CglpbnQgICAgICAgICBudW1fYXBzOwoJUFJPQkVfUkVTUCAgUHJvYmVUYWJsZVtNQVhfTkFQU107Cn0KUHJvYmVSZXN1bHQ7CgovKiBEZWZpbml0aW9ucyB1c2VkIHRvIHBhcnNlIGNhcGFiaWxpdGllcyBvdXQgb2YgdGhlIHByb2JlIHJlc3BvbnNlcyAqLwojZGVmaW5lIENBUEFCSUxJVFlfRVNTICAgICAgMHgwMDAxCiNkZWZpbmUgQ0FQQUJJTElUWV9JQlNTICAgICAweDAwMDIKI2RlZmluZSBDQVBBQklMSVRZX1BSSVZBQ1kgIDB4MDAxMAoKLyogRGVmaW5pdGlvbnMgdXNlZCB0byBwYXJzZSB0aGUgSW5mb3JtYXRpb24gRWxlbWVudHMgb3V0IG9mIHByb2JlIHJlc3BvbnNlcyAqLwojZGVmaW5lIERTX0lORk9fRUxFTSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMKI2RlZmluZSBHRU5FUklDX0lORk9fRUxFTSAgICAgICAgICAgICAgICAgICAweGRkCiNkZWZpbmUgV1BBX01BWF9JRV9MRU4gICAgICAgICAgICAgICAgICAgICAgNDAKI2RlZmluZSBXUEFfU0VMRUNUT1JfTEVOICAgICAgICAgICAgICAgICAgICA0CiNkZWZpbmUgV1BBX09VSV9UWVBFICAgICAgICAgICAgICAgICAgICAgICAgeyAweDAwLCAweDUwLCAweGYyLCAxIH0KI2RlZmluZSBXUEFfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgICAxCiNkZWZpbmUgV1BBX0FVVEhfS0VZX01HTVRfVU5TUEVDXzgwMl8xWCAgICAgeyAweDAwLCAweDUwLCAweGYyLCAxIH0KI2RlZmluZSBXUEFfQVVUSF9LRVlfTUdNVF9QU0tfT1ZFUl84MDJfMVggICB7IDB4MDAsIDB4NTAsIDB4ZjIsIDIgfQojZGVmaW5lIFdQQV9DSVBIRVJfU1VJVEVfTk9ORSAgICAgICAgICAgICAgIHsgMHgwMCwgMHg1MCwgMHhmMiwgMCB9CiNkZWZpbmUgV1BBX0NJUEhFUl9TVUlURV9XRVA0MCAgICAgICAgICAgICAgeyAweDAwLCAweDUwLCAweGYyLCAxIH0KI2RlZmluZSBXUEFfQ0lQSEVSX1NVSVRFX1RLSVAgICAgICAgICAgICAgICB7IDB4MDAsIDB4NTAsIDB4ZjIsIDIgfQojZGVmaW5lIFdQQV9DSVBIRVJfU1VJVEVfV1JBUCAgICAgICAgICAgICAgIHsgMHgwMCwgMHg1MCwgMHhmMiwgMyB9CiNkZWZpbmUgV1BBX0NJUEhFUl9TVUlURV9DQ01QICAgICAgICAgICAgICAgeyAweDAwLCAweDUwLCAweGYyLCA0IH0KI2RlZmluZSBXUEFfQ0lQSEVSX1NVSVRFX1dFUDEwNCAgICAgICAgICAgICB7IDB4MDAsIDB4NTAsIDB4ZjIsIDUgfQoKdHlwZWRlZiBlbnVtIHd2bGFuX2Rydl9tb2RlCnsKCVdWTEFOX0RSVl9NT0RFX05PX0RPV05MT0FELCAgICAgLyogdGhpcyBpcyB0aGUgc2FtZSBhcyBTVEEgZm9yIEhlcm1lcyAxICAgICovCgkJCQkgICAgICAgICAgICAgICAgICAgIC8qIGl0IGlzIGFsc28gb25seSBhcHBsaWNhYmxlIGZvciBIZXJtZXMgMSAqLwoJV1ZMQU5fRFJWX01PREVfU1RBLAoJV1ZMQU5fRFJWX01PREVfQVAsCglXVkxBTl9EUlZfTU9ERV9NQVgKfQpXVkxBTl9EUlZfTU9ERSwgKlBXVkxBTl9EUlZfTU9ERTsKCgp0eXBlZGVmIGVudW0gd3ZsYW5fcG9ydF9zdGF0ZQp7CglXVkxBTl9QT1JUX1NUQVRFX0VOQUJMRUQsCglXVkxBTl9QT1JUX1NUQVRFX0RJU0FCTEVELAoJV1ZMQU5fUE9SVF9TVEFURV9DT05ORUNURUQKfQpXVkxBTl9QT1JUX1NUQVRFLCAqUFdWTEFOX1BPUlRfU1RBVEU7CgovKgp0eXBlZGVmIGVudW0gd3ZsYW5fY29ubmVjdF9zdGF0ZQp7CglXVkxBTl9DT05ORUNUX1NUQVRFX0NPTk5FQ1RFRCwKCVdWTEFOX0NPTk5FQ1RfU1RBVEVfRElTQ09OTkVDVEVECn0KV1ZMQU5fQ09OTkVDVF9TVEFURSwgKlBXVkxBTl9DT05ORUNUX1NUQVRFOwoqLwoKdHlwZWRlZiBlbnVtIHd2bGFuX3BtX3N0YXRlCnsKCVdWTEFOX1BNX1NUQVRFX0RJU0FCTEVELAoJV1ZMQU5fUE1fU1RBVEVfRU5IQU5DRUQsCglXVkxBTl9QTV9TVEFURV9TVEFOREFSRAp9CldWTEFOX1BNX1NUQVRFLCAqUFdWTEFOX1BNX1NUQVRFOwoKCnR5cGVkZWYgc3RydWN0IHd2bGFuX2ZyYW1lCnsKCXN0cnVjdCBza19idWZmICAqc2tiOyAgICAgICAvKiBza19idWZmIGZvciBmcmFtZS4gKi8KCWhjZl8xNiAgICAgICAgICBwb3J0OyAgICAgICAvKiBNQUMgcG9ydCBmb3IgdGhlIGZyYW1lLiAqLwoJaGNmXzE2ICAgICAgICAgIGxlbjsgICAgICAgIC8qIExlbmd0aCBvZiB0aGUgZnJhbWUuICovCn0KV1ZMQU5fRlJBTUUsICpQV1ZMQU5fRlJBTUU7CgoKdHlwZWRlZiBzdHJ1Y3Qgd3ZsYW5fbGZyYW1lCnsKCXN0cnVjdCBsaXN0X2hlYWQgICAgbm9kZTsgICAvKiBOb2RlIGluIHRoZSBsaXN0ICovCglXVkxBTl9GUkFNRQkgICAgICAgIGZyYW1lOyAgLyogRnJhbWUuICovCn0KV1ZMQU5fTEZSQU1FLCAqUFdWTEFOX0xGUkFNRTsKCgoKI2RlZmluZSBERUZBVUxUX05VTV9UWF9GUkFNRVMgICAgICAgICAgIDQ4CiNkZWZpbmUgVFhfUV9MT1dfV0FURVJfTUFSSyAgICAgICAgICAgICAoREVGQVVMVF9OVU1fVFhfRlJBTUVTLzMpCgojZGVmaW5lIFdWTEFOX01BWF9UWF9RVUVVRVMgICAgICAgICAgICAgMQoKCiNpZmRlZiBVU0VfV0RTCgp0eXBlZGVmIHN0cnVjdCB3dmxhbl93ZHNfaWYKewoJc3RydWN0IG5ldF9kZXZpY2UgICAgICAgICAgICpkZXY7CglpbnQgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcmVnaXN0ZXJlZDsKCWludCAgICAgICAgICAgICAgICAgICAgICAgICBuZXRpZl9xdWV1ZV9vbjsKCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICAgICBzdGF0czsKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBydHNUaHJlc2hvbGQ7CgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgdHhSYXRlQ250bDsKCWhjZl84ICAgICAgICAgICAgICAgICAgICAgICB3ZHNBZGRyZXNzW0VUSF9BTEVOXTsKfSBXVkxBTl9XRFNfSUYsICpQV1ZMQU5fV0RTX0lGOwoKI2VuZGlmICAvLyBVU0VfV0RTCgoKCiNkZWZpbmUgTlVNX1JYX0RFU0MgNQojZGVmaW5lIE5VTV9UWF9ERVNDIDUKCnR5cGVkZWYgc3RydWN0IGRtYV9zdHJjdAp7CglERVNDX1NUUkNUICAqdHhfcGFja2V0W05VTV9UWF9ERVNDXTsKCURFU0NfU1RSQ1QgICpyeF9wYWNrZXRbTlVNX1JYX0RFU0NdOwoJREVTQ19TVFJDVCAgKnJ4X3JlY2xhaW1fZGVzYywgKnR4X3JlY2xhaW1fZGVzYzsgLy8gRGVzY3JpcHRvcnMgZm9yIGhvc3QtcmVjbGFpbSBwdXJwb3NlcyAoc2VlIEhDRikKCWludCAgICAgICAgIHR4X3JzY19pbmQ7IC8vIERNQSBUeCByZXNvdXJjZSBpbmRpY2F0b3IgaXMgbWFpbnRhaW5lZCBpbiB0aGUgTVNGLCBub3QgaW4gdGhlIEhDRgoJaW50ICAgICAgICAgcnhfcnNjX2luZDsgLy8gQWxzbyBhZGRlZCByeCByc291cmNlIGluZGljYXRvciBzbyB0aGF0IGNsZWFudXAgY2FuIGJlIHBlcmZvcm1lZCBpZiBhbGxvYyBmYWlscwoJaW50ICAgICAgICAgc3RhdHVzOwp9IERNQV9TVFJDVDsKCgovKiBNYWNyb3MgdXNlZCBpbiBETUEgc3VwcG9ydCAqLwovKiBnZXQgYnVzIGFkZHJlc3Mgb2Yge3J4LHR4fWRtYSBzdHJ1Y3R1cmUgbWVtYmVyLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIgKi8KI2RlZmluZSBXTF9ETUFfQlVTX0FERFJfTEUoc3RyLCBpLCBtZW0pIFwKCWNwdV90b19sZTMyKHN0ciMjX2RtYV9hZGRyWyhpKV0gKyAoKGhjZl84ICopJnN0clsoaSldLT5tZW0gLSAoaGNmXzggKilzdHJbKGkpXSkpCgoKc3RydWN0IHdsX3ByaXZhdGUKewoKI2lmZGVmIEJVU19QQ01DSUEKCXN0cnVjdCBwY21jaWFfZGV2aWNlCSAgICAqbGluazsKI2VuZGlmIC8vIEJVU19QQ01DSUEKCgoJc3RydWN0IG5ldF9kZXZpY2UgICAgICAgICAgICpkZXY7Ci8vCXN0cnVjdCBuZXRfZGV2aWNlICAgICAgICAgICAqZGV2X25leHQ7CglzcGlubG9ja190ICAgICAgICAgICAgICAgICAgc2xvY2s7CglzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgICAgICAgdGFzazsKCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICAgICBzdGF0czsKCgojaWZkZWYgV0lSRUxFU1NfRVhUCglzdHJ1Y3QgaXdfc3RhdGlzdGljcyAgICAgICAgd3N0YXRzOwovLwlpbnQgICAgICAgICAgICAgICAgICAgICAgICAgc3B5X251bWJlcjsKLy8JdV9jaGFyICAgICAgICAgICAgICAgICAgICAgIHNweV9hZGRyZXNzW0lXX01BWF9TUFldW0VUSF9BTEVOXTsKLy8Jc3RydWN0IGl3X3F1YWxpdHkgICAgICAgICAgIHNweV9zdGF0W0lXX01BWF9TUFldOwoJc3RydWN0IGl3X3NweV9kYXRhICAgICAgICAgIHNweV9kYXRhOwoJc3RydWN0IGl3X3B1YmxpY19kYXRhCXdpcmVsZXNzX2RhdGE7CiNlbmRpZiAvLyBXSVJFTEVTU19FWFQKCgoJSUZCX1NUUkNUICAgICAgICAgICAgICAgICAgIGhjZkN0eDsKLy87PyBzdHJ1Y3QgdGltZXJfbGlzdAkJCXRpbWVyX29vcjsKLy87PyBoY2ZfMTYJCQkJCQl0aW1lcl9vb3JfY250OwoJdV9sb25nCQkJCQkJd2xhZ3M0OV90eXBlOwkJLy9jb250cm9scyBvdXRwdXQgaW4gL3Byb2Mvd2xhZ3M0OQoJdV9sb25nICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOwoJaGNmXzE2CQkJCQkJRGVidWdGbGFnOwoJaW50ICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3JlZ2lzdGVyZWQ7CglpbnQgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaGFuZGxpbmdfaW50OwoJaW50ICAgICAgICAgICAgICAgICAgICAgICAgIGZpcm13YXJlX3ByZXNlbnQ7CgljaGFyICAgICAgICAgICAgICAgICAgICAgICAgc3lzZnNDcmVhdGVkOwoJQ0ZHX0RSVl9JTkZPX1NUUkNUICAgICAgICAgIGRyaXZlckluZm87CglDRkdfSURFTlRJVFlfU1RSQ1QgICAgICAgICAgZHJpdmVySWRlbnRpdHk7CglDRkdfRldfSURFTlRJVFlfU1RSQ1QgICAgICAgU3RhdGlvbklkZW50aXR5OwoJQ0ZHX1BSSV9JREVOVElUWV9TVFJDVCAgICAgIFByaW1hcnlJZGVudGl0eTsKCUNGR19QUklfSURFTlRJVFlfU1RSQ1QgICAgICBOSUNJZGVudGl0eTsKCglsdHZfdCAgICAgICAgICAgICAgICAgICAgICAgbHR2UmVjb3JkOwoJdV9sb25nICAgICAgICAgICAgICAgICAgICAgIHR4Qnl0ZXM7CgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgbWF4UG9ydDsgICAgICAgIC8qIDAgZm9yIFNUQSwgNiBmb3IgQVAgKi8KCgkvKiBFbGVtZW50cyB1c2VkIGZvciBhc3luYyBub3RpZmljYXRpb24gZnJvbSBoYXJkd2FyZSAqLwoJUklEX0xPR19TVFJDVAkJCQlSaWRMaXN0WzEwXTsKCWx0dl90ICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkUmVjb3JkOwoJUFJPQkVfUkVTUAkJCQkgICAgUHJvYmVSZXNwOwoJQVNTT0NfU1RBVFVTX1NUUkNUICAgICAgICAgIGFzc29jX3N0YXQ7CglTRUNVUklUWV9TVEFUVVNfU1RSQ1QgICAgICAgc2VjX3N0YXQ7CgoJdV9jaGFyICAgICAgICAgICAgICAgICAgICAgIGxvb2tBaGVhZEJ1ZltXVkxBTl9NQVhfTE9PS0FIRUFEXTsKCgloY2ZfOCAgICAgICAgICAgICAgICAgICAgICAgUG9ydFR5cGU7ICAgICAgICAgICAvLyAxIC0gMyAoMSBbTm9ybWFsXSB8IDMgW0FkSG9jXSkKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBDaGFubmVsOyAgICAgICAgICAgIC8vIDAgLSAxNCAoMCkKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBUeFJhdGVDb250cm9sWzJdOwoJaGNmXzggICAgICAgICAgICAgICAgICAgICAgIERpc3RhbmNlQmV0d2VlbkFQczsgLy8gMSAtIDMgKDEpCgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgUlRTVGhyZXNob2xkOyAgICAgICAvLyAwIC0gMjM0NyAoMjM0NykKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBQTUVuYWJsZWQ7ICAgICAgICAgIC8vIDAgLSAyLCA4MDAxIC0gODAwMiAoMCkKCWhjZl84ICAgICAgICAgICAgICAgICAgICAgICBNaWNyb3dhdmVSb2J1c3RuZXNzOy8vIDAgLSAxICgwKQoJaGNmXzggICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUlCU1M7ICAgICAgICAgLy8gMCAtIDEgKDApCgloY2ZfOCAgICAgICAgICAgICAgICAgICAgICAgTXVsdGljYXN0UmVjZWl2ZTsgICAvLyAwIC0gMSAoMSkKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBNYXhTbGVlcER1cmF0aW9uOyAgIC8vIDAgLSA2NTUzNSAoMTAwKQoJaGNmXzggICAgICAgICAgICAgICAgICAgICAgIE1BQ0FkZHJlc3NbRVRIX0FMRU5dOwoJY2hhciAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtOYW1lW0hDRl9NQVhfTkFNRV9MRU4rMV07CgljaGFyICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGlvbk5hbWVbSENGX01BWF9OQU1FX0xFTisxXTsKCWhjZl84ICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVFbmNyeXB0aW9uOyAgIC8vIDAgLSAxICgwKQoJY2hhciAgICAgICAgICAgICAgICAgICAgICAgIEtleTFbTUFYX0tFWV9MRU4rMV07CgljaGFyICAgICAgICAgICAgICAgICAgICAgICAgS2V5MltNQVhfS0VZX0xFTisxXTsKCWNoYXIgICAgICAgICAgICAgICAgICAgICAgICBLZXkzW01BWF9LRVlfTEVOKzFdOwoJY2hhciAgICAgICAgICAgICAgICAgICAgICAgIEtleTRbTUFYX0tFWV9MRU4rMV07CgloY2ZfOCAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNtaXRLZXlJRDsgICAgICAvLyAxIC0gNCAoMSkKCUNGR19ERUZBVUxUX0tFWVNfU1RSQ1QJICAgIERlZmF1bHRLZXlzOwoJdV9jaGFyICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hbTUJfU0laRV07CgljaGFyICAgICAgICAgICAgICAgICAgICAgICAgc3pFbmNyeXB0aW9uW01BWF9FTkNfTEVOXTsKCgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyRW5hYmxlOwoJaGNmXzE2ICAgICAgICAgICAgICAgICAgICAgIHdvbGFzRW5hYmxlOwoJaGNmXzE2ICAgICAgICAgICAgICAgICAgICAgIGF0aW1XaW5kb3c7CgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgaG9sZG92ZXJEdXJhdGlvbjsKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBNdWx0aWNhc3RSYXRlWzJdOwoKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbjsgLy8gaXMgdGhpcyBBUCBzcGVjaWZpYz8KCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBwcm9taXNjdW91c01vZGU7CglXVkxBTl9EUlZfTU9ERSAgICAgICAgICAgICAgRG93bmxvYWRGaXJtd2FyZTsgICAvLyAwIC0gMiAoMCBbTm9uZV0gfCAxIFtTVEFdIHwgMiBbQVBdKQoKCWNoYXIJCQkJCQlmd19pbWFnZV9maWxlbmFtZVtNQVhfTElORV9TSVpFKzFdOwoKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBBdXRoS2V5TWdtdFN1aXRlOwoKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBsb2FkQmFsYW5jaW5nOwoJaGNmXzE2ICAgICAgICAgICAgICAgICAgICAgIG1lZGl1bURpc3RyaWJ1dGlvbjsKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICB0eFBvd0xldmVsOwoJLy9oY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgc2hvcnRSZXRyeUxpbWl0OwoJLy9oY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgbG9uZ1JldHJ5TGltaXQ7CgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgc3JzY1syXTsKCWhjZl8xNiAgICAgICAgICAgICAgICAgICAgICBicnNjWzJdOwoJaGNmXzE2ICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25Db250cm9sOwoJLy9oY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgcHJvYmVEYXRhUmF0ZXNbMl07CgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgb3duQmVhY29uSW50ZXJ2YWw7CgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgY29leGlzdGVuY2U7CgoJV1ZMQU5fRlJBTUUgICAgICAgICAgICAgICAgIHR4RjsKCVdWTEFOX0xGUkFNRSAgICAgICAgICAgICAgICB0eExpc3RbREVGQVVMVF9OVU1fVFhfRlJBTUVTXTsKCXN0cnVjdCBsaXN0X2hlYWQgICAgICAgICAgICB0eEZyZWU7CglzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICAgICAgdHhRW1dWTEFOX01BWF9UWF9RVUVVRVNdOwoJaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGlmX3F1ZXVlX29uOwoJaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHR4UV9jb3VudDsKCURFU0NfU1RSQ1QgICAgICAgICAgICAgICAgICBkZXNjX3J4OwoJREVTQ19TVFJDVCAgICAgICAgICAgICAgICAgIGRlc2NfdHg7CgoJV1ZMQU5fUE9SVF9TVEFURSAgICAgICAgICAgIHBvcnRTdGF0ZTsKCglTY2FuUmVzdWx0ICAgICAgICAgICAgICAgICAgc2Nhbl9yZXN1bHRzOwoJUHJvYmVSZXN1bHQgICAgICAgICAgICAgICAgIHByb2JlX3Jlc3VsdHM7CglpbnQgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmVfbnVtX2FwczsKCglpbnQgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2RtYTsKCURNQV9TVFJDVCAgICAgICAgICAgICAgICAgICBkbWE7CiNpZmRlZiBVU0VfUlRTCglpbnQgICAgICAgICAgICAgICAgICAgICAgICAgdXNlUlRTOwojZW5kaWYgIC8vIFVTRV9SVFMKCWhjZl84ICAgICAgICAgICAgICAgICAgICAgICBEVElNUGVyaW9kOyAgICAgICAgIC8vIDEgLSAyNTUgKDEpCgloY2ZfMTYgICAgICAgICAgICAgICAgICAgICAgbXVsdGljYXN0UE1CdWZmZXJpbmc7CgloY2ZfOCAgICAgICAgICAgICAgICAgICAgICAgUmVqZWN0QW55OyAgICAgICAgICAvLyAwIC0gMSAoMCkKCWhjZl84ICAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlVW5lbmNyeXB0ZWQ7IC8vIDAgLSAxICgxKQoJaGNmXzE2ICAgICAgICAgICAgICAgICAgICAgIGludHJhQlNTUmVsYXk7CiNpZmRlZiBVU0VfV0RTCglXVkxBTl9XRFNfSUYgICAgICAgICAgICAgICAgd2RzX3BvcnRbTlVNX1dEU19QT1JUU107CiNlbmRpZiAvLyBVU0VfV0RTCn07IC8vIHdsX3ByaXZhdGUKCiNpZmRlZiBIQVZFX05FVERFVl9QUklWCiNkZWZpbmUgd2xfcHJpdihkZXYpICgoc3RydWN0IHdsX3ByaXZhdGUgKikgbmV0ZGV2X3ByaXYoZGV2KSkKI2Vsc2UKZXh0ZXJuIGlubGluZSBzdHJ1Y3Qgd2xfcHJpdmF0ZSAqd2xfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICByZXR1cm4gZGV2LT5wcml2Owp9CiNlbmRpZgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBMb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qIFRoZXNlIGZ1bmN0aW9ucyAqbXVzdCogYmUgaW5saW5lIG9yIHRoZXkgd2lsbCBicmVhayBob3JyaWJseSBvbgogKiBTUEFSQywgZHVlIHRvIGl0cyB3ZWlyZCBzZW1hbnRpY3MgZm9yIHNhdmUvcmVzdG9yZSBmbGFncy4gZXh0ZXJuCiAqIGlubGluZSBzaG91bGQgcHJldmVudCB0aGUga2VybmVsIGZyb20gbGlua2luZyBvciBtb2R1bGUgZnJvbQogKiBsb2FkaW5nIGlmIHRoZXkgYXJlIG5vdCBpbmxpbmVkLiAqLwpzdGF0aWMgaW5saW5lIHZvaWQgd2xfbG9jayhzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHAsCgkgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmZsYWdzKQp7CglzcGluX2xvY2tfaXJxc2F2ZSgmbHAtPnNsb2NrLCAqZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgd2xfdW5sb2NrKHN0cnVjdCB3bF9wcml2YXRlICpscCwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZmxhZ3MpCnsKCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxwLT5zbG9jaywgKmZsYWdzKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBJbnRlcnJ1cHQgZW5hYmxlIGRpc2FibGUgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCmV4dGVybiBpbmxpbmUgdm9pZCB3bF9hY3RfaW50X29uKHN0cnVjdCB3bF9wcml2YXRlICpscCkKewoJLyoKCSAqIE9ubHkgZG8gc29tZXRoaW5nIHdoZW4gdGhlIGRyaXZlciBpcyBoYW5kbGluZwoJICogaW50ZXJydXB0cy4gSGFuZGxpbmcgc3RhcnRzIGF0IHdsX29wZW4gYW5kCgkgKiBlbmRzIGF0IHdsX2Nsb3NlIHdoZW4gbm90IGluIFJUUyBtb2RlCgkgKi8KCWlmKGxwLT5pc19oYW5kbGluZ19pbnQgPT0gV0xfSEFORExJTkdfSU5UKSB7CgkJaGNmX2FjdGlvbiggJmxwLT5oY2ZDdHgsIEhDRl9BQ1RfSU5UX09OICk7Cgl9Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCB3bF9hY3RfaW50X29mZihzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHApCnsKCS8qCgkgKiBPbmx5IGRvIHNvbWV0aGluZyB3aGVuIHRoZSBkcml2ZXIgaXMgaGFuZGxpbmcKCSAqIGludGVycnVwdHMuIEhhbmRsaW5nIHN0YXJ0cyBhdCB3bF9vcGVuIGFuZAoJICogZW5kcyBhdCB3bF9jbG9zZSB3aGVuIG5vdCBpbiBSVFMgbW9kZQoJICovCglpZihscC0+aXNfaGFuZGxpbmdfaW50ID09IFdMX0hBTkRMSU5HX0lOVCkgewoJCWhjZl9hY3Rpb24oICZscC0+aGNmQ3R4LCBIQ0ZfQUNUX0lOVF9PRkYgKTsKCX0KfQoKI2VuZGlmICAvLyBfX1dBVkVMQU4yX0hfXwo=