LyoNCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqICAgIENDMzIyMCBTREsgLSB2MC4xMC4wMC4wMCANCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqDQogKiAgQ29weXJpZ2h0IChDKSAyMDE1IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLyANCiAqICANCiAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgDQogKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIA0KICogIGFyZSBtZXQ6DQogKg0KICogICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgDQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogKg0KICogICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgDQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgICANCiAqICAgIGRpc3RyaWJ1dGlvbi4NCiAqDQogKiAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mDQogKiAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgDQogKiAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgDQogKiAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQogKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgDQogKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIA0KICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgDQogKiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQogKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQogKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCANCiAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgDQogKiAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAqICANCiAqLw0KDQojaWZuZGVmIF9fSFdfQ09NTU9OX1JFR19IX18NCiNkZWZpbmUgX19IV19DT01NT05fUkVHX0hfXw0KDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIENPTU1PTl9SRUcgcmVnaXN0ZXIgb2Zmc2V0cy4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfT19JMkNfUHJvcGVydGllc19SZWdpc3RlciBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDANCg0KI2RlZmluZSBDT01NT05fUkVHX09fU1BJX1Byb3BlcnRpZXNfUmVnaXN0ZXIgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEMNCg0KI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19OV1Bfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQNCg0KI2RlZmluZSBDT01NT05fUkVHX09fTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXMgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDE4DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0ZsYXNoX2N0cmxfcmVnIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxQw0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00wX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjQNCg0KI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMV9zZWdtZW50X2FjY2Vzc19jb25maWcgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDI4DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTJfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyQw0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00zX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMzANCg0KI2RlZmluZSBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NNF9zZWdtZW50X2FjY2Vzc19jb25maWcgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDM0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTVfc2VnbWVudF9hY2Nlc3NfY29uZmlnIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAzOA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXIgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDNDDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDANCg0KI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUyIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0NA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTMgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQ4DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNEMNCg0KI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU1IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1MA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTYgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDU0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNTgNCg0KI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU4IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA1Qw0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTkgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDYwDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTAgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTEgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDY4DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTIgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDZDDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfU0VNQVBQSE9SRV9QRU5EIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA3MA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19OV19TRU1BUFBIT1JFX1BFTkQgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9TVEFUVVMgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDc4DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0lETUVNX1RJTV9VcGRhdGUgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDdDDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0ZQR0FfUk9NX1dSX0VOIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4MA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfTUFTSyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODQNCg0KI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX01BU0tfU0VUIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA4OA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfTUFTS19DTFIgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDhDDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9TVFNfQ0xSIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5MA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfQUNLIDB4MDAwMDAwOTQNCiNkZWZpbmUgQ09NTU9OX1JFR19PX05XX0lOVF9UUklHIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA5OA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX01BU0tFRCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwOUMNCg0KI2RlZmluZSBDT01NT05fUkVHX09fTldfSU5UX1NUU19SQVcgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEEwDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0sgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEE0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0tfU0VUIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBBOA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9NQVNLX0NMUiBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQUMNCg0KI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX0NMUiBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQjANCg0KI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19JTlRfQUNLIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCNA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9UUklHIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCOA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfTUFTS0VEIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBCQw0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfUkFXIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBDMA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19JRE1FTV9USU1fVXBkYXRlZCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwQzQNCg0KI2RlZmluZSBDT01NT05fUkVHX09fQVBQU19HUElPX1RSSUdfRU4gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEM4DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX0VNVV9ERUJVR19SRUcgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMENDDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9TVEFUVVMyIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBEMA0KDQojZGVmaW5lIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfUFJFVl9PV05FUjEgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMEQ0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9QUkVWX09XTkVSMiBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRDgNCg0KDQoNCg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19JMkNfUHJvcGVydGllc19SZWdpc3RlciByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2Fpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4NCg0KI2RlZmluZSBDT01NT05fUkVHX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX0kyQ19Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19TUElfUHJvcGVydGllc19SZWdpc3RlciByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2Fpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4NCg0KI2RlZmluZSBDT01NT05fUkVHX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1NQSV9Qcm9wZXJ0aWVzX1JlZ2lzdGVyX1MgMA0KDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZSByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZV9BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgQVBQUyBiaXQgMCAtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtPiB3aGVuICcxJyBlbmFibGUgU1BJDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgMyAtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQNCg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X2VuYWJsZV9BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1cyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1c19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgQVBQUyBiaXQgMCAtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgSTJDIGludGVycnVwdCBiaXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSAtPiB3aGVuICcxJyBlbmFibGUgU1BJDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBiaXQgMyAtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuICcxJyBlbmFibGUgR1BJTyBpbnRlcnJ1cHQNCg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfc2hfcmVzb3VyY2VfSW50ZXJydXB0X3N0YXR1c19BUFBTX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfZW5hYmxlIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgTldQIGJpdCAwIC0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBJMkMgaW50ZXJydXB0IGJpdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIC0+IHdoZW4gJzEnIGVuYWJsZSBTUEkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGJpdCAzIC0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBHUElPIGludGVycnVwdA0KDQojZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9lbmFibGVfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX05XUF9zaF9yZXNvdXJjZV9JbnRlcnJ1cHRfc3RhdHVzIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMEYgIC8vIEludGVycnVwdCBlbmFibGUgTldQIGJpdCAwIC0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBJMkMgaW50ZXJydXB0IGJpdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIC0+IHdoZW4gJzEnIGVuYWJsZSBTUEkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGJpdCAzIC0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gJzEnIGVuYWJsZSBHUElPIGludGVycnVwdA0KDQojZGVmaW5lIENPTU1PTl9SRUdfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfTldQX3NoX3Jlc291cmNlX0ludGVycnVwdF9zdGF0dXNfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0ZsYXNoX2N0cmxfcmVnIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfRmxhc2hfY3RybF9yZWdfRmxhc2hfY3RybF9yZWdfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2Vzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfRmxhc2hfY3RybF9yZWdfRmxhc2hfY3RybF9yZWdfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMF9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMF9zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciAwIGNvbnRyb2wgd29yZCBtYXRyaXggdG8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4NCg0KI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTBfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTFfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTFfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgMSBjb250cm9sIHdvcmQgbWF0cml4IHRvDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00xX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X00yX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X00yX3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDIgY29udHJvbCB3b3JkIG1hdHJpeCB0bw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NMl9zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NM19zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NM19zZWdtZW50X2FjY2Vzc19jb25maWdfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM0ZGRkYgIC8vIE1hc3RlciAzIGNvbnRyb2wgd29yZCBtYXRyaXggdG8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBzZWdtZW50LiBUaWVvZmYuIEJpdCB2YWx1ZSAxDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlcyBzZWdtZW50IGlzIGFjY2VzYWJsZS4NCg0KI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTNfc2VnbWVudF9hY2Nlc3NfY29uZmlnX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0J1c19tYXRyaXhfTTRfc2VnbWVudF9hY2Nlc3NfY29uZmlnX0J1c19tYXRyaXhfTTRfc2VnbWVudF9hY2Nlc3NfY29uZmlnX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyBNYXN0ZXIgNCBjb250cm9sIHdvcmQgbWF0cml4IHRvDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggc2VnbWVudC4gVGllb2ZmLiBCaXQgdmFsdWUgMQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgc2VnbWVudCBpcyBhY2Nlc2FibGUuDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X000X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWcgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19CdXNfbWF0cml4X001X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19CdXNfbWF0cml4X001X3NlZ21lbnRfYWNjZXNzX2NvbmZpZ19NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzRkZGRiAgLy8gTWFzdGVyIDUgY29udHJvbCB3b3JkIG1hdHJpeCB0bw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHNlZ21lbnQuIFRpZW9mZi4gQml0IHZhbHVlIDENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGVzIHNlZ21lbnQgaXMgYWNjZXNhYmxlLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfQnVzX21hdHJpeF9NNV9zZWdtZW50X2FjY2Vzc19jb25maWdfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0dQSU9fcHJvcGVydGllc19yZWdpc3RlciByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0dQSU9fcHJvcGVydGllc19yZWdpc3Rlcl9HUElPX3Byb3BlcnRpZXNfcmVnaXN0ZXJfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAzRkYgIC8vIFNoYXJlZCBHUElPIGNvbmZpZ3VyYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIuIEJpdCBbMTowXSB0byBjb25maWd1cmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzAgQml0IFszOjJdIHRvIGNvbmZpZ3VyZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPMSBCaXQgWzU6NF0gdG8gY29uZmlndXJlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8yIEJpdCBbNzo2XSB0byBjb25maWd1cmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzMgQml0IFs5OjhdIHRvIGNvbmZpZ3VyZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPNCBlYWNoIEdQSU8gY2FuIGJlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGl2aWR1bGx5IHNlbGVjdGVkLiBXaGVuIOKAnDAw4oA/DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdQSU8gaXMgZnJlZSByZXNvdXJjZS4gV2hlbiDigJwwMeKAPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIGlzIEFQUFMgcmVzb3VyY2UuIFdoZW4g4oCcMTDigD8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyBpcyBOV1AgcmVzb3VyY2UuIFdyaXRpbmcgMTENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9lc250IGhhdmUgYW55IGFmZmVjdCwgaS5lLiBJZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmUgd3JpdGUgb25seSByZWxldmFudCBncGlvDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbWFwaG9yZSBhbmQgb3RoZXIgYml0cyBhcmUgMXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J2xsIG5vdCBkaXN0dXJiIHRoZSBvdGhlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW1hcGhvcmUgYml0cy4gRm9yIGV4YW1wbGUgOiBTYXkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgTlcgd2FudHMgdG8gdGFrZSBjb250cm9sIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW8tMSwgb25lIHNob3VsZCB3cml0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMCdiMTFfMTExMV8xMDExIGFuZCBpZiBvbmUgd2FudHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gcmVsZWFzZSBpdCB3cml0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMCdiMTFfMTExMV8wMDExLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfR1BJT19wcm9wZXJ0aWVzX3JlZ2lzdGVyX0dQSU9fcHJvcGVydGllc19yZWdpc3Rlcl9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxX0FQUFNfTldfU0VNQVBIT1JFMV9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTFfQVBQU19OV19TRU1BUEhPUkUxX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTIgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTJfQVBQU19OV19TRU1BUEhPUkUyX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2Fpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4NCg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMl9BUFBTX05XX1NFTUFQSE9SRTJfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFM19BUFBTX05XX1NFTUFQSE9SRTNfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2Vzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUzX0FQUFNfTldfU0VNQVBIT1JFM19TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU0IHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU0X0FQUFNfTldfU0VNQVBIT1JFNF9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTRfQVBQU19OV19TRU1BUEhPUkU0X1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTUgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTVfQVBQU19OV19TRU1BUEhPUkU1X00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2Fpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4NCg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNV9BUFBTX05XX1NFTUFQSE9SRTVfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFNiByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFNl9BUFBTX05XX1NFTUFQSE9SRTZfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2Vzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU2X0FQUFNfTldfU0VNQVBIT1JFNl9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkU3IHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU3X0FQUFNfTldfU0VNQVBIT1JFN19NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTdfQVBQU19OV19TRU1BUEhPUkU3X1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTggcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRThfQVBQU19OV19TRU1BUEhPUkU4X00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyDigKIgRWFjaCBzZW1hcGhvcmUgcmVnaXN0ZXIgaXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMiBiaXQuIOKAoiBXaGVuIHRoaXMgcmVnaXN0ZXIgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIDLigJliMDEg4oCTIEFwcHMgaGF2ZSBhY2Nlc3MNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdoZW4gc2V0IHRvIDLigJliMTAg4oCTIE5XIGhhdmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzLiDigKIgSWRlYWxseSBib3RoIHRoZSBtYXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIG1vZGlmeSBhbnkgb2YgdGhpcyAyIGJpdCwgYnV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gYXBwcyB3aWxsIHdyaXRlIG9ubHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMSBvciAy4oCZYjAwIHRvIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG53IHdpbGwgd3JpdGUgb25seSAy4oCZYjEwIG9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDAuIOKAoiBJbXBsZW1lbnRhdGlvbiBpcyB3aGVuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgYml0IG9mIHRoaXMgcmVnaXN0ZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgc2V0LCBvbmx5IG5leHQgd3JpdGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dlZHZpcyAy4oCZYjAwIOKAkyBBZ2Fpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGlzIG9uZSBtYXN0ZXIgd2lsbCBub3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgMuKAmWIwMCBpZiBvdGhlciBpcyBhbHJlYWR5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvbGRpbmcgdGhlIHNlbWFwaG9yZS4NCg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFOF9BUFBTX05XX1NFTUFQSE9SRThfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFOSByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFOV9BUFBTX05XX1NFTUFQSE9SRTlfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2Vzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkU5X0FQUFNfTldfU0VNQVBIT1JFOV9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQVBQU19OV19TRU1BUEhPUkUxMCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfTldfU0VNQVBIT1JFMTBfQVBQU19OV19TRU1BUEhPUkUxMF9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8g4oCiIEVhY2ggc2VtYXBob3JlIHJlZ2lzdGVyIGlzIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgYml0LiDigKIgV2hlbiB0aGlzIHJlZ2lzdGVyIGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0byAy4oCZYjAxIOKAkyBBcHBzIGhhdmUgYWNjZXNzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHNldCB0byAy4oCZYjEwIOKAkyBOVyBoYXZlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzcy4g4oCiIElkZWFsbHkgYm90aCB0aGUgbWFzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbiBtb2RpZnkgYW55IG9mIHRoaXMgMiBiaXQsIGJ1dA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uIGFwcHMgd2lsbCB3cml0ZSBvbmx5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDLigJliMDEgb3IgMuKAmWIwMCB0byB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBudyB3aWxsIHdyaXRlIG9ubHkgMuKAmWIxMCBvcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAwLiDigKIgSW1wbGVtZW50YXRpb24gaXMgd2hlbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb2YgdGhlIGJpdCBvZiB0aGlzIHJlZ2lzdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHNldCwgb25seSBuZXh0IHdyaXRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93ZWR2aXMgMuKAmWIwMCDigJMgQWdhaW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBpcyBvbmUgbWFzdGVyIHdpbGwgbm90DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIDLigJliMDAgaWYgb3RoZXIgaXMgYWxyZWFkeQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBob2xkaW5nIHRoZSBzZW1hcGhvcmUuDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTEwX0FQUFNfTldfU0VNQVBIT1JFMTBfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfTldfU0VNQVBIT1JFMTEgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX05XX1NFTUFQSE9SRTExX0FQUFNfTldfU0VNQVBIT1JFMTFfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIOKAoiBFYWNoIHNlbWFwaG9yZSByZWdpc3RlciBpcyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyIGJpdC4g4oCiIFdoZW4gdGhpcyByZWdpc3RlciBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gMuKAmWIwMSDigJMgQXBwcyBoYXZlIGFjY2Vzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2hlbiBzZXQgdG8gMuKAmWIxMCDigJMgTlcgaGF2ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3MuIOKAoiBJZGVhbGx5IGJvdGggdGhlIG1hc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4gbW9kaWZ5IGFueSBvZiB0aGlzIDIgYml0LCBidXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzdW1wdGlvbiBhcHBzIHdpbGwgd3JpdGUgb25seQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAy4oCZYjAxIG9yIDLigJliMDAgdG8gdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbncgd2lsbCB3cml0ZSBvbmx5IDLigJliMTAgb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMuKAmWIwMC4g4oCiIEltcGxlbWVudGF0aW9uIGlzIHdoZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBiaXQgb2YgdGhpcyByZWdpc3Rlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBzZXQsIG9ubHkgbmV4dCB3cml0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd2VkdmlzIDLigJliMDAg4oCTIEFnYWluDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc3VtcHRpb24gaXMgb25lIG1hc3RlciB3aWxsIG5vdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSAy4oCZYjAwIGlmIG90aGVyIGlzIGFscmVhZHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9sZGluZyB0aGUgc2VtYXBob3JlLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMV9BUFBTX05XX1NFTUFQSE9SRTExX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19BUFBTX05XX1NFTUFQSE9SRTEyIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMl9BUFBTX05XX1NFTUFQSE9SRTEyX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBBUFBTIE5XIHNlbWFwaG9yZSByZWdpc3RlciAtIG5vdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZsZWN0ZWQgaW4gc3RhdHVzLg0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19OV19TRU1BUEhPUkUxMl9BUFBTX05XX1NFTUFQSE9SRTEyX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19BUFBTX1NFTUFQUEhPUkVfUEVORCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfU0VNQVBQSE9SRV9QRU5EX0FQUFNfU0VNQVBQSE9SRV9QRU5EX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyBBUFBTIFNFTUFQT0hPUkUgU1RBVFVTDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX1NFTUFQUEhPUkVfUEVORF9BUFBTX1NFTUFQUEhPUkVfUEVORF9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fTldfU0VNQVBQSE9SRV9QRU5EIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfTldfU0VNQVBQSE9SRV9QRU5EX05XX1NFTUFQUEhPUkVfUEVORF9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gTlcgU0VNQVBIT1JFIFNUQVRVUw0KDQojZGVmaW5lIENPTU1PTl9SRUdfTldfU0VNQVBQSE9SRV9QRU5EX05XX1NFTUFQUEhPUkVfUEVORF9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fU0VNQVBIT1JFX1NUQVRVUyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9TVEFUVVNfU0VNQVBIT1JFX1NUQVRVU19NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gU0VNQVBIT1JFIFNUQVRVUyA5OjggOnNlbWFwaG9yZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgb2YgZmxhc2hfY29udHJvbCA3OjYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzIDU6NA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGlfcHJvcGVydGllIDE6MCA6c2VtYXBob3JlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBpMmNfcHJvcGVydGllDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfU1RBVFVTX1NFTUFQSE9SRV9TVEFUVVNfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0lETUVNX1RJTV9VcGRhdGUgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fRlBHQV9ST01fV1JfRU4gcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19GUEdBX1JPTV9XUl9FTl9GUEdBX1JPTV9XUl9FTiBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgIC8vIHdoZW4gJzEnIGVuYWJsZXMgV3JpdGUgaW50bw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRE1FTSBDT1JFIFJPTSwgQVBQUyBST00sIE5XUCBST00NCg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19OV19JTlRfTUFTSyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX05XX0lOVF9NQVNLX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBkaXNhYmxlIGNvcnJlc3BvbmRpbmcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0OzAgPSBpbnRlcnJ1cHQgZW5hYmxlZA0KDQojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX01BU0tfTldfSU5UX01BU0tfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLX1NFVCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX1NFVF9OV19JTlRfTUFTS19TRVRfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gc2V0IGNvcnJlc3BvbmRpbmcgYml0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIE5XX0lOVF9NQVNLOzAgPSBubyBlZmZlY3QNCg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX1NFVF9OV19JTlRfTUFTS19TRVRfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX05XX0lOVF9NQVNLX0NMUiByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9NQVNLX0NMUl9OV19JTlRfTUFTS19DTFJfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gTldfSU5UX01BU0s7MCA9IG5vIGVmZmVjdA0KDQojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX01BU0tfQ0xSX05XX0lOVF9NQVNLX0NMUl9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fTldfSU5UX1NUU19DTFIgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX0NMUl9OV19JTlRfU1RTX0NMUl9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBjbGVhciBjb3JyZXNwb25kaW5nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDsgMCA9IG5vIGVmZmVjdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGlzIG5vdCBsb3N0IGlmIGNvaW5jaWRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggd3JpdGUgb3BlcmF0aW9uDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfU1RTX0NMUl9OV19JTlRfU1RTX0NMUl9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fTldfSU5UX0FDSyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9BQ0tfTldfSU5UX0FDS19NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBjbGVhciBjb3JyZXNwb25kaW5nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDswID0gbm8gZWZmZWN0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19OV19JTlRfQUNLX05XX0lOVF9BQ0tfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX05XX0lOVF9UUklHIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX1RSSUdfTldfSU5UX1RSSUdfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIFdyaXRpbmcgYSAxIHRvIGEgYml0IGluIHRoaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgY2F1c2VzIHRoZSB0aGUgSG9zdCBDUFUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgZW5hYmxlZCAobm90IG1hc2tlZCkuIFRoaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgaXMgc2VsZi1jbGVhcmluZy4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGluZyAwIGhhcyBubyBlZmZlY3QNCg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9UUklHX05XX0lOVF9UUklHX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX01BU0tFRCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfTUFTS0VEX05XX0lOVF9TVFNfTUFTS0VEX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUgYW5kIG5vdCBtYXNrZWQuIHJlYWQgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLWRlc3RydWN0aXZlOzAgPSBjb3JyZXNwb25kaW5nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBpcyBpbmFjdGl2ZSBvciBtYXNrZWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgTldfSU5UIG1hc2sNCg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfTUFTS0VEX05XX0lOVF9TVFNfTUFTS0VEX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19OV19JTlRfU1RTX1JBVyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX05XX0lOVF9TVFNfUkFXX05XX0lOVF9TVFNfUkFXX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUuIHJlYWQgaXMgbm9uLWRlc3RydWN0aXZlOzANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmFjdGl2ZQ0KDQojZGVmaW5lIENPTU1PTl9SRUdfTldfSU5UX1NUU19SQVdfTldfSU5UX1NUU19SQVdfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0sgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0FQUFNfSU5UX01BU0tfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDE9IGRpc2FibGUgY29ycmVzcG9uZGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQ7MCA9IGludGVycnVwdCBlbmFibGVkDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0FQUFNfSU5UX01BU0tfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0tfU0VUIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19TRVRfQVBQU19JTlRfTUFTS19TRVRfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gc2V0IGNvcnJlc3BvbmRpbmcgYml0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIEFQUFNfSU5UX01BU0s7MCA9IG5vIGVmZmVjdA0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19TRVRfQVBQU19JTlRfTUFTS19TRVRfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX01BU0tfQ0xSIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfTUFTS19DTFJfQVBQU19JTlRfTUFTS19DTFJfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaXQgaW4gQVBQU19JTlRfTUFTSzswID0gbm8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0DQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9NQVNLX0NMUl9BUFBTX0lOVF9NQVNLX0NMUl9TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQVBQU19JTlRfU1RTX0NMUiByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1NUU19DTFJfQVBQU19JTlRfU1RTX0NMUl9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gd3JpdGUgMSB0byBjbGVhciBjb3JyZXNwb25kaW5nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdDsgMCA9IG5vIGVmZmVjdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJydXB0IGlzIG5vdCBsb3N0IGlmIGNvaW5jaWRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggd3JpdGUgb3BlcmF0aW9uDQoNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0lOVF9TVFNfQ0xSX0FQUFNfSU5UX1NUU19DTFJfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0FQUFNfSU5UX0FDSyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX0FDS19BUFBTX0lOVF9BQ0tfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIHdyaXRlIDEgdG8gY2xlYXIgY29ycmVzcG9uZGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnJ1cHQ7MCA9IG5vIGVmZmVjdA0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfQUNLX0FQUFNfSU5UX0FDS19TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQVBQU19JTlRfVFJJRyByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0FQUFNfSU5UX1RSSUdfQVBQU19JTlRfVFJJR19NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiAgLy8gV3JpdGluZyBhIDEgdG8gYSBiaXQgaW4gdGhpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBjYXVzZXMgdGhlIHRoZSBIb3N0IENQVQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBlbmFibGVkIChub3QgbWFza2VkKS4gVGhpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBpcyBzZWxmLWNsZWFyaW5nLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0aW5nIDAgaGFzIG5vIGVmZmVjdA0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfVFJJR19BUFBTX0lOVF9UUklHX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfTUFTS0VEIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX01BU0tFRF9BUFBTX0lOVF9TVFNfTUFTS0VEX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUgYW5kIG5vdCBtYXNrZWQuIHJlYWQgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLWRlc3RydWN0aXZlOzAgPSBjb3JyZXNwb25kaW5nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVycnVwdCBpcyBpbmFjdGl2ZSBvciBtYXNrZWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgQVBQU19JTlQgbWFzaw0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX01BU0tFRF9BUFBTX0lOVF9TVFNfTUFTS0VEX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19BUFBTX0lOVF9TVFNfUkFXIHJlZ2lzdGVyLg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX1JBV19BUFBTX0lOVF9TVFNfUkFXX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGICAvLyAxPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUuIHJlYWQgaXMgbm9uLWRlc3RydWN0aXZlOzANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmFjdGl2ZQ0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19JTlRfU1RTX1JBV19BUFBTX0lOVF9TVFNfUkFXX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19JRE1FTV9USU1fVXBkYXRlZCByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX0lETUVNX1RJTV9VcGRhdGVkX1RJTV9VUERBVEVEIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgLy8gdG9nZ2xlIGluIHRoaXMgc2lnbmFsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlc0lETUVNX1RJTV9VUERBVEUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgbWVudGlvbmVkIGFib3ZlIGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZWQuDQoNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fQVBQU19HUElPX1RSSUdfRU4gcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19BUFBTX0dQSU9fVFJJR19FTl9BUFBTX0dQSU9fVFJJR19FTl9NIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxRiAgLy8gQVBQUyBHUElPIFRyaWdnZXIgRU4gY29udHJvbC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQml0IDA6IHdoZW4gJzEnIGVuYWJsZSBHUElPIDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlci4gVGhpcyBiaXQgZW5hYmxlcyB0cmlnZ2VyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhbGwgR1BJTyAwIHBpbnMgKEdQSU8gMCB0bw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPNykuIEJpdCAxOiB3aGVuICcxJyBlbmFibGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTyAxIHRyaWdnZXIuIFRoaXMgYml0IGVuYWJsZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBmb3IgYWxsIEdQSU8gMSBwaW5zICgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzggdG8gR1BJTzE1KS4gQml0IDI6IHdoZW4gJzEnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZSBHUElPIDIgdHJpZ2dlci4gVGhpcyBiaXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlcyB0cmlnZ2VyIGZvciBhbGwgR1BJTyAyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpbnMgKEdQSU8xNiB0byBHUElPMjMpLiBCaXQgMzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiAnMScgZW5hYmxlIEdQSU8gMyB0cmlnZ2VyLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGJpdCBlbmFibGVzIHRyaWdnZXIgZm9yIGFsbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUElPIDMgcGlucyAoR1BJTzI0IHRvIEdQSU8zMSkuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdCA0OiB3aGVuICcxJyBlbmFibGUgR1BJTyA0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIuIFRoaXMgYml0IGVuYWJsZXMgdHJpZ2dlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYWxsIEdQSU8gNCBwaW5zLihHUElPMzIgdG8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1BJTzM5KQ0KDQojZGVmaW5lIENPTU1PTl9SRUdfQVBQU19HUElPX1RSSUdfRU5fQVBQU19HUElPX1RSSUdfRU5fUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX0VNVV9ERUJVR19SRUcgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19FTVVfREVCVUdfUkVHX0VNVV9ERUJVR19SRUdfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYgIC8vIDAgdGggYml0IHVzZWQgZm9yIHN0YWxsaW5nIEFQUFMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRE1BIGFuZCAxc3QgYml0IGlzIHVzZWQgZm9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YWxsaW5nIE5XUCBETUEgZm9yIGRlYnVnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB1cnBvc2UuIE90aGVyIGJpdHMgYXJlIHVudXNlZC4NCg0KI2RlZmluZSBDT01NT05fUkVHX0VNVV9ERUJVR19SRUdfRU1VX0RFQlVHX1JFR19TIDANCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLw0KLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lcyBmb3IgdGhlIGJpdCBmaWVsZHMgaW4gdGhlDQovLyBDT01NT05fUkVHX09fU0VNQVBIT1JFX1NUQVRVUzIgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfU1RBVFVTMl9TRU1QQVBIT1JFX1NUQVRVUzJfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRkZGRkYgIC8vIFNFTUFQSE9SRSBTVEFUVVMgMjM6MjINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUxMSAyMToyMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTExIDE5OjE4DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMTAgMTc6MTYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU5IDE1OjE0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlOCAxMzoxMg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTcgMTE6MTANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOnNlbWFwaG9yZSBzdGF0dXMgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmU2IDk6OCA6c2VtYXBob3JlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBvZiBhcHBzX253X3NlbWFwaG9yZTUgNzo2DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDpzZW1hcGhvcmUgc3RhdHVzIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlNCA1OjQgOnNlbWFwaG9yZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgb2YgYXBwc19ud19zZW1hcGhvcmUzIDM6Mg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6c2VtYXBob3JlIHN0YXR1cyBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTIgMTowIDpzZW1hcGhvcmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIG9mIGFwcHNfbndfc2VtYXBob3JlMQ0KDQojZGVmaW5lIENPTU1PTl9SRUdfU0VNQVBIT1JFX1NUQVRVUzJfU0VNUEFQSE9SRV9TVEFUVVMyX1MgMA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vDQovLyBUaGUgZm9sbG93aW5nIGFyZSBkZWZpbmVzIGZvciB0aGUgYml0IGZpZWxkcyBpbiB0aGUNCi8vIENPTU1PTl9SRUdfT19TRU1BUEhPUkVfUFJFVl9PV05FUjEgcmVnaXN0ZXIuDQovLw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiNkZWZpbmUgQ09NTU9OX1JFR19TRU1BUEhPUkVfUFJFVl9PV05FUjFfU0VNQVBIT1JFX1BSRVZfT1dORVIxX00gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDNGRkZGICAvLyAxOjAgOiBwcnZpb3VzIG93bmVyIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGkyY19wcm9wZXJ0aWVzX3JlZ1sxOjBdIDM6MiA6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydmlvdXMgb3duZXIgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BpX3Byb3BlcnRpZXNfcmVnWzE6MF0gNTo0IDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvX3Byb3BlcnRpZXNfcmVnWzE6MF0gOTo4IDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvX3Byb3BlcnRpZXNfcmVnWzM6Ml0gMTE6MTAgOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdwaW9fcHJvcGVydGllc19yZWdbNTo0XSAxMzoxMiA6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBydmlvdXMgb3duZXIgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3Bpb19wcm9wZXJ0aWVzX3JlZ1s3OjZdIDE1OjE0IDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJ2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBncGlvX3Byb3BlcnRpZXNfcmVnWzk6OF0gMTc6MTYgOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnZpb3VzIG93bmVyIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZsYXNoX2NvbnRyb2xfcmVnWzE6MF0NCg0KI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9QUkVWX09XTkVSMV9TRU1BUEhPUkVfUFJFVl9PV05FUjFfUyAwDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8NCi8vIFRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZXMgZm9yIHRoZSBiaXQgZmllbGRzIGluIHRoZQ0KLy8gQ09NTU9OX1JFR19PX1NFTUFQSE9SRV9QUkVWX09XTkVSMiByZWdpc3Rlci4NCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9QUkVWX09XTkVSMl9TRU1BUEhPUkVfUFJFVl9PV05FUjJfTSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBGRkZGRkYgIC8vIDE6MCA6IHByZXZpb3VzIG93bmVyIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMV9yZWdbMTowXSAzOjIgOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTJfcmVnWzE6MF0gNTo0IDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgb3duZXIgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUzX3JlZ1sxOjBdIDc6NiA6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIG93bmVyIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlNF9yZWdbMTowXSA5OjggOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTVfcmVnWzE6MF0gMTE6MTANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTZfcmVnWzE6MF0gMTM6MTINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTdfcmVnWzE6MF0gMTU6MTQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZThfcmVnWzE6MF0gMTc6MTYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTlfcmVnWzE6MF0gMTk6MTgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gOiBwcmV2aW91cyBvd25lciBvZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBzX253X3NlbWFwaG9yZTEwX3JlZ1sxOjBdDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIxOjIwIDogcHJldmlvdXMgb3duZXIgb2YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwc19ud19zZW1hcGhvcmUxMV9yZWdbMTowXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyMzoyMiA6IHByZXZpb3VzIG93bmVyIG9mDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcHNfbndfc2VtYXBob3JlMTJfcmVnWzE6MF0NCg0KI2RlZmluZSBDT01NT05fUkVHX1NFTUFQSE9SRV9QUkVWX09XTkVSMl9TRU1BUEhPUkVfUFJFVl9PV05FUjJfUyAwDQoNCg0KDQojZW5kaWYgLy8gX19IV19DT01NT05fUkVHX0hfXw0K