DQojaW5jbHVkZSA8d2luZG93cy5oPg0KDQojaWZkZWYgR0xFV19NWA0KIyAgaWZkZWYgR0xFV19TVEFUSUMNCiMgICAgaWZkZWYgX0RFQlVHDQojICAgICAgZGVmaW5lIEZJTEVOQU1FICJnbGV3MzJteHNkLmRsbCINCiMgICAgZWxzZQ0KIyAgICAgIGRlZmluZSBGSUxFTkFNRSAiZ2xldzMybXhzLmRsbCINCiMgICAgZW5kaWYNCiMgIGVsc2UNCiMgICAgaWZkZWYgX0RFQlVHDQojICAgICAgZGVmaW5lIEZJTEVOQU1FICJnbGV3MzJteGQuZGxsIg0KIyAgICBlbHNlDQojICAgICAgZGVmaW5lIEZJTEVOQU1FICJnbGV3MzJteC5kbGwiDQojICAgIGVuZGlmDQojICBlbmRpZg0KI2Vsc2UNCiMgIGlmZGVmIEdMRVdfU1RBVElDDQojICAgIGlmZGVmIF9ERUJVRw0KIyAgICAgIGRlZmluZSBGSUxFTkFNRSAiZ2xldzMyc2QuZGxsIg0KIyAgICBlbHNlDQojICAgICAgZGVmaW5lIEZJTEVOQU1FICJnbGV3MzJzLmRsbCINCiMgICAgZW5kaWYNCiMgIGVsc2UNCiMgICAgaWZkZWYgX0RFQlVHDQojICAgICAgZGVmaW5lIEZJTEVOQU1FICJnbGV3MzJkLmRsbCINCiMgICAgZWxzZQ0KIyAgICAgIGRlZmluZSBGSUxFTkFNRSAiZ2xldzMyLmRsbCINCiMgICAgZW5kaWYNCiMgIGVuZGlmDQojZW5kaWYNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBWZXJzaW9uDQovLw0KVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPIA0KRklMRVZFUlNJT04gMSwgNCwgMCwgMA0KUFJPRFVDVFZFUlNJT04gMSwgNCwgMCwgMA0KRklMRUZMQUdTTUFTSyBWU19GRklfRklMRUZMQUdTTUFTSw0KI2lmZGVmIF9ERUJVRw0KRklMRUZMQUdTIFZTX0ZGX0RFQlVHDQojZWxzZQ0KRklMRUZMQUdTIDB4MEwNCiNlbmRpZg0KRklMRU9TIFZPU19fV0lORE9XUzMyDQojaWZkZWYgR0xFV19TVEFUSUMNCkZJTEVUWVBFIFZGVF9TVEFUSUNfTElCDQojZWxzZQ0KRklMRVRZUEUgVkZUX0RMTA0KI2VuZGlmDQpGSUxFU1VCVFlQRSBWRlQyX1VOS05PV04NCkJFR0lODQogICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIg0KICAgIEJFR0lODQogICAgICAgIEJMT0NLICIwNDA5MDRiMCINCiAgICAgICAgQkVHSU4NCiAgICAgICAgICAgIFZBTFVFICJDb21tZW50cyIsICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5XHJcbkNvcHlyaWdodCAoQykgMjAwMi0yMDA3LCBNaWxhbiBJa2l0cyA8bWlsYW4gaWtpdHNbXWllZWUgb3JnPlxyXG5Db3B5cmlnaHQgKEMpIDIwMDItMjAwNywgTWFyY2VsbyBFLiBNYWdhbGxvbiA8bW1hZ2FsbG9bXWRlYmlhbiBvcmc+XHJcbkNvcHlyaWdodCAoQykgMjAwMiwgTGV2IFBvdmFsYWhldlxyXG5BbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gXHJcblJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBcclxubW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XHJcblxyXG4qIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgXHJcbiAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cclxuKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIFxyXG4gIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gXHJcbiAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXHJcbiogVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgXHJcbiAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXHJcblxyXG5USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICdBUyBJUycgXHJcbkFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgXHJcbklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFXHJcbkFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBcclxuTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBcclxuQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgXHJcblNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTU1xyXG5JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTlxyXG5DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKVxyXG5BUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GXHJcblRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cclxuXHJcbkxpY2Vuc2UgQXBwbGljYWJpbGl0eS4gRXhjZXB0IHRvIHRoZSBleHRlbnQgcG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZVxyXG5tYWRlIHN1YmplY3QgdG8gYW4gYWx0ZXJuYXRpdmUgbGljZW5zZSBhcyBwZXJtaXR0ZWQgaW4gdGhlIFNHSSBGcmVlXHJcblNvZnR3YXJlIExpY2Vuc2UgQiwgVmVyc2lvbiAxLjEgKHRoZSAnTGljZW5zZScpLCB0aGUgY29udGVudHMgb2YgdGhpc1xyXG5maWxlIGFyZSBzdWJqZWN0IG9ubHkgdG8gdGhlIHByb3Zpc2lvbnMgb2YgdGhlIExpY2Vuc2UuIFlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5XHJcbm9mIHRoZSBMaWNlbnNlIGF0IFNpbGljb24gR3JhcGhpY3MsIEluYy4sIGF0dG46IExlZ2FsIFNlcnZpY2VzLCAxNjAwXHJcbkFtcGhpdGhlYXRyZSBQYXJrd2F5LCBNb3VudGFpbiBWaWV3LCBDQSA5NDA0My0xMzUxLCBvciBhdDpcclxuXHJcbmh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy9GcmVlQlxyXG5cclxuTm90ZSB0aGF0LCBhcyBwcm92aWRlZCBpbiB0aGUgTGljZW5zZSwgdGhlIFNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXHJcbidBUyBJUycgYmFzaXMsIHdpdGggQUxMIEVYUFJFU1MgQU5EIElNUExJRUQgV0FSUkFOVElFUyBBTkQgQ09ORElUSU9OU1xyXG5ESVNDTEFJTUVELCBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIElNUExJRUQgV0FSUkFOVElFUyBBTkRcclxuQ09ORElUSU9OUyBPRiBNRVJDSEFOVEFCSUxJVFksIFNBVElTRkFDVE9SWSBRVUFMSVRZLCBGSVRORVNTIEZPUiBBXHJcblBBUlRJQ1VMQVIgUFVSUE9TRSwgQU5EIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5PcmlnaW5hbCBDb2RlLiBUaGUgT3JpZ2luYWwgQ29kZSBpczogT3BlbkdMIFNhbXBsZSBJbXBsZW1lbnRhdGlvbixcclxuVmVyc2lvbiAxLjIuMSwgcmVsZWFzZWQgSmFudWFyeSAyNiwgMjAwMCwgZGV2ZWxvcGVkIGJ5IFNpbGljb24gR3JhcGhpY3MsXHJcbkluYy4gVGhlIE9yaWdpbmFsIENvZGUgaXMgQ29weXJpZ2h0IChjKSAxOTkxLTIwMDAgU2lsaWNvbiBHcmFwaGljcywgSW5jLlxyXG5Db3B5cmlnaHQgaW4gYW55IHBvcnRpb25zIGNyZWF0ZWQgYnkgdGhpcmQgcGFydGllcyBpcyBhcyBpbmRpY2F0ZWRcclxuZWxzZXdoZXJlIGhlcmVpbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuXHJcbkFkZGl0aW9uYWwgTm90aWNlIFByb3Zpc2lvbnM6IFRoaXMgc29mdHdhcmUgd2FzIGNyZWF0ZWQgdXNpbmcgdGhlXHJcbk9wZW5HTChSKSB2ZXJzaW9uIDEuMi4xIFNhbXBsZSBJbXBsZW1lbnRhdGlvbiBwdWJsaXNoZWQgYnkgU0dJLCBidXQgaGFzXHJcbm5vdCBiZWVuIGluZGVwZW5kZW50bHkgdmVyaWZpZWQgYXMgYmVpbmcgY29tcGxpYW50IHdpdGggdGhlIE9wZW5HTChSKVxyXG52ZXJzaW9uIDEuMi4xIFNwZWNpZmljYXRpb24uXDAiDQogICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiXDAiDQogICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnlcMCINCiAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsICIxLDQsMCwwXDAiDQogICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgIkdMRVdcMCINCiAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICKpIDIwMDMtMjAwNyBNaWxhbiBJa2l0cyAmIE1hcmNlbG8gTWFnYWxsb25cMCINCiAgICAgICAgICAgIFZBTFVFICJMZWdhbFRyYWRlbWFya3MiLCAiXDAiDQogICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsIEZJTEVOQU1FICJcMCINCiAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCAiXDAiDQogICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiVGhlIE9wZW5HTCBFeHRlbnNpb24gV3JhbmdsZXIgTGlicmFyeVwwIg0KICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgIjEsNCwwLDBcMCINCiAgICAgICAgICAgIFZBTFVFICJTcGVjaWFsQnVpbGQiLCAiXDAiDQogICAgICAgIEVORA0KICAgIEVORA0KICAgIEJMT0NLICJWYXJGaWxlSW5mbyINCiAgICBCRUdJTg0KICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMA0KICAgIEVORA0KRU5EDQo=