IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBvcmcub25hcC5kbWFhcAojICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBDb3B5cmlnaHQgqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgojICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMgIAojICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojICA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojCiMgIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuCiMgIAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMKIyMgQ2FtYnJpYSBBUEkgU2VydmVyIGNvbmZpZwojIwojIwktIERlZmF1bHQgdmFsdWVzIGFyZSBzaG93biBhcyBjb21tZW50ZWQgc2V0dGluZ3MuCiMjCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjCiMjIEhUVFAgc2VydmljZQojIwojIwkJLSAzOTA0IGlzIHN0YW5kYXJkIGFzIG9mIDcvMjkvMTQuCiMjCQktIEF0IHRoaXMgdGltZSwgQ2FtYnJpYSBhbHdheXMgYmluZHMgdG8gMC4wLjAuMAojIwojY2FtYnJpYS5zZXJ2aWNlLnBvcnQ9MzkwNAojdG9tY2F0Lm1heHRocmVhZHM9KHRvbWNhdCBkZWZhdWx0LCB3aGljaCBpcyB1c3VhbGx5IDIwMCkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMKIyMgQnJva2VyIFR5cGUKIyMKIyMJVGhlIENhbWJyaWEgc2VydmVyIGNhbiBydW4gZWl0aGVyIGFzIGEgbWVtb3J5LW9ubHkgaW1wbGVtZW50YXRpb24sIG1lYW50CiMjCWZvciB0ZXN0aW5nLCBvciBhZ2FpbnN0IEthZmthLiBGb3IgYSBtZW1vcnktb25seSBzZXJ2ZXIsIHVzZSAibWVtb3J5IiBmb3IKIyMJdGhlIGJyb2tlci50eXBlIHNldHRpbmcuCiMjCiNicm9rZXIudHlwZT1rYWZrYQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIwojIyBab29rZWVwZXIgQ29ubmVjdGlvbgojIwojIwlCb3RoIENhbWJyaWEgYW5kIEthZmthIG1ha2UgdXNlIG9mIFpvb2tlZXBlci4KIyMKI2NvbmZpZy56ay5zZXJ2ZXJzPWxvY2FsaG9zdAojY29uZmlnLnprLnJvb3Q9L2ZlM2MvY2FtYnJpYS9jb25maWcKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjCiMjIEthZmthIENvbm5lY3Rpb24KIyMKIyMJSXRlbXMgYmVsb3cgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIEthZmthJ3MgcHJvZHVjZXIgYW5kIGNvbnN1bWVyCiMjCWNvbmZpZ3VyYXRpb25zIChhZnRlciByZW1vdmluZyAia2Fma2EuIikKIyMKI2thZmthLm1ldGFkYXRhLmJyb2tlci5saXN0PWxvY2FsaG9zdDo5MDkyCiNrYWZrYS5jbGllbnQuem9va2VlcGVyPSR7Y29uZmlnLnprLnNlcnZlcnN9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjCiMjCVNlY3VyZWQgQ29uZmlnCiMjCiMjCVNvbWUgZGF0YSBzdG9yZWQgaW4gdGhlIGNvbmZpZyBzeXN0ZW0gaXMgc2Vuc2l0aXZlIC0tIEFQSSBrZXlzIGFuZCBzZWNyZXRzLAojIwlmb3IgZXhhbXBsZS4gdG8gcHJvdGVjdCBpdCwgd2UgdXNlIGFuIGVuY3J5cHRpb24gbGF5ZXIgZm9yIHRoaXMgc2VjdGlvbgojIwlvZiB0aGUgY29uZmlnLgojIwojIyBUaGUga2V5IGlzIGEgYmFzZTY0IGVuY29kZSBBRVMga2V5LiBUaGlzIG11c3QgYmUgY3JlYXRlZC9jb25maWd1cmVkIGZvcgojIyBlYWNoIGluc3RhbGxhdGlvbi4KI2NhbWJyaWEuc2VjdXJlQ29uZmlnLmtleT0KIyMKIyMgVGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciBpcyBhIDE2IGJ5dGUgdmFsdWUgc3BlY2lmaWMgdG8gdGhlIHNlY3VyZWQgc3RvcmUuCiMjIFRoaXMgbXVzdCBiZSBjcmVhdGVkL2NvbmZpZ3VyZWQgZm9yIGVhY2ggaW5zdGFsbGF0aW9uLgojY2FtYnJpYS5zZWN1cmVDb25maWcuaXY9CgojIyBTb3V0aGZpZWxkIFNhbmRib3gKI2NhbWJyaWEuc2VjdXJlQ29uZmlnLmtleT1iLzdvdVRuOUZmRXcyUFF3TDBvdi9RPT0KI2NhbWJyaWEuc2VjdXJlQ29uZmlnLml2PXdSOXhQNWs1dmJ6L3hEMExtdHFRTHc9PQoKY2FtYnJpYS5zZWN1cmVDb25maWcua2V5W3BjNTY5aF09WVQzWFB5eEVtS0NUTEkyTksrU2pidz09CmNhbWJyaWEuc2VjdXJlQ29uZmlnLml2W3BjNTY5aF09ck1tMmpoUjN5Vm5VK3UyVjlVZ3UzUT09CgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIwojIyBDb25zdW1lciBDYWNoaW5nCiMjCiMjCUthZmthIGV4cGVjdHMgbGl2ZSBjb25uZWN0aW9ucyBmcm9tIHRoZSBjb25zdW1lciB0byB0aGUgYnJva2VyLCB3aGljaAojIwlvYnZpb3VzbHkgZG9lc24ndCB3b3JrIG92ZXIgY29ubmVjdGlvbmxlc3MgSFRUUCByZXF1ZXN0cy4gVGhlIENhbWJyaWEKIyMJc2VydmVyIHByb3hpZXMgSFRUUCByZXF1ZXN0cyBpbnRvIEthZmthIGNvbnN1bWVyIHNlc3Npb25zIHRoYXQgYXJlIGtlcHQKIyMJYXJvdW5kIGZvciBsYXRlciByZS11c2UuIE5vdCBkb2luZyBzbyBpcyBjb3N0bHkgZm9yIHNldHVwIHBlciByZXF1ZXN0LAojIwl3aGljaCB3b3VsZCBzdWJzdGFudGlhbGx5IGltcGFjdCBhIGhpZ2ggdm9sdW1lIGNvbnN1bWVyJ3MgcGVyZm9ybWFuY2UuCiMjCiMjCVRoaXMgY29tcGxpY2F0ZXMgQ2FtYnJpYSBzZXJ2ZXIgZmFpbG92ZXIsIGJlY2F1c2Ugd2Ugb2Z0ZW4gbmVlZCBzZXJ2ZXIKIyMJQSB0byBjbG9zZSBpdHMgY29ubmVjdGlvbiBiZWZvcmUgc2VydmVyIEIgYnJpbmdzIHVwIHRoZSByZXBsYWNlbWVudC4gICAgCiMjCgojIyBUaGUgY29uc3VtZXIgY2FjaGUgaXMgbm9ybWFsbHkgZW5hYmxlZC4KI2NhbWJyaWEuY29uc3VtZXIuY2FjaGUuZW5hYmxlZD10cnVlCgojIyBDYWNoZWQgY29uc3VtZXJzIGFyZSBjbGVhbmVkIHVwIGFmdGVyIGEgcGVyaW9kIG9mIGRpc3VzZS4gVGhlIHNlcnZlciBpbnNwZWN0cwojIyBjb25zdW1lcnMgZXZlcnkgc3dlZXBGcmVxU2Vjb25kcyBhbmQgd2lsbCBjbGVhbiB1cCBhbnkgY29ubmVjdGlvbnMgdGhhdCBhcmUKIyMgZG9ybWFudCBmb3IgdG91Y2hGcmVxTXMuCiNjYW1icmlhLmNvbnN1bWVyLmNhY2hlLnN3ZWVwRnJlcVNlY29uZHM9MTUKI2NhbWJyaWEuY29uc3VtZXIuY2FjaGUudG91Y2hGcmVxTXM9MTIwMDAwCgojIyBUaGUgY2FjaGUgaXMgbWFuYWdlZCB0aHJvdWdoIFpLLiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIFpLIGNvbm5lY3Rpb24KIyMgc3RyaW5nIGlzIHRoZSBzYW1lIGFzIGNvbmZpZy56ay5zZXJ2ZXJzLgojY2FtYnJpYS5jb25zdW1lci5jYWNoZS56a0Nvbm5lY3Q9JHtjb25maWcuemsuc2VydmVyc30KCiMjCiMjIFNoYXJlZCBjYWNoZSBpbmZvcm1hdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBub2RlJ3MgbmFtZS4gVGhlIGRlZmF1bHQKIyMgbmFtZSBpcyB0aGUgaG9zdG5hbWUgcGx1cyB0aGUgSFRUUCBzZXJ2aWNlIHBvcnQgdGhpcyBob3N0IHJ1bnMgb24uIChUaGUKIyMgaG9zdG5hbWUgaXMgZGV0ZXJtaW5lZCB2aWEgSW5ldEFkZHJlc3MuZ2V0TG9jYWxIb3N0ICgpLmdldENhbm9uaWNhbEhvc3ROYW1lKCksCiMjIHdoaWNoIGlzIG5vdCBhbHdheXMgYWRlcXVhdGUuKSBZb3UgY2FuIHNldCB0aGlzIHZhbHVlIGV4cGxpY2l0bHkgaGVyZS4KIyMKI2NhbWJyaWEuYXBpLm5vZGUuaWRlbnRpZmllcj08dXNlLXNvbWV0aGluZy11bmlxdWUtdG8tdGhpcy1pbnN0YW5jZT4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMKIyMgTWV0cmljcyBSZXBvcnRpbmcKIyMKIyMJVGhpcyBzZXJ2ZXIgY2FuIHJlcG9ydCBpdHMgbWV0cmljcyBwZXJpb2RpY2FsbHkgb24gYSB0b3BpYy4KIyMKI21ldHJpY3Muc2VuZC5jYW1icmlhLmVuYWJsZWQ9dHJ1ZQojbWV0cmljcy5zZW5kLmNhbWJyaWEuYmFzZVVybD1sb2NhbGhvc3QKI21ldHJpY3Muc2VuZC5jYW1icmlhLnRvcGljPWNhbWJyaWEuYXBpbm9kZS5tZXRyaWNzCiNtZXRyaWNzLnNlbmQuY2FtYnJpYS5zZW5kRXZlcnlTZWNvbmRzPTYwCgo=