IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICBDQURFTkNFIENPUFlSSUdIVCBOT1RJQ0UKIyAgICAgICAgIKkgMjAwOC0yMDEzIENhZGVuY2UgRGVzaWduIFN5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBGb3VuZGF0aW9uIEZsb3cgaXMgcHJvdmlkZWQgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcGVyZm9ybSBzcGVjaWFsaXplZAojIHRhc2tzLgojCiMgVGhpcyB3b3JrIG1heSBub3QgYmUgY29waWVkLCByZS1wdWJsaXNoZWQsIHVwbG9hZGVkLCBvciBkaXN0cmlidXRlZCBpbiBhbnkgd2F5LAojIGluIGFueSBtZWRpdW0sIHdoZXRoZXIgaW4gd2hvbGUgb3IgaW4gcGFydCwgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24KIyBmcm9tIENhZGVuY2UuIE5vdHdpdGhzdGFuZGluZyBhbnkgcmVzdHJpY3Rpb25zIGhlcmVpbiwgc3ViamVjdCB0byBjb21wbGlhbmNlCiMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIENhZGVuY2Ugc29mdHdhcmUgbGljZW5zZSBhZ3JlZW1lbnQgdW5kZXIKIyB3aGljaCB0aGlzIG1hdGVyaWFsIHdhcyBwcm92aWRlZCwgdGhpcyBtYXRlcmlhbCBtYXkgYmUgY29waWVkIGFuZCBpbnRlcm5hbGx5CiMgZGlzdHJpYnV0ZWQgc29sZWx5IGZvciBpbnRlcm5hbCBwdXJwb3NlcyBmb3IgdXNlIHdpdGggQ2FkZW5jZSB0b29scy4KIwojIFRoaXMgd29yayBpcyBDYWRlbmNlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBhbmQgbWF5IHVuZGVyIG5vIGNpcmN1bXN0YW5jZXMgYmUKIyBnaXZlbiB0byB0aGlyZCBwYXJ0aWVzLCBuZWl0aGVyIGluIG9yaWdpbmFsIG5vciBpbiBtb2RpZmllZCB2ZXJzaW9ucywgd2l0aG91dAojIGV4cGxpY2l0IHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIENhZGVuY2UuIFRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzCiMgdGhlIHByb3ByaWV0YXJ5IGFuZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgQ2FkZW5jZSBvciBpdHMgbGljZW5zb3JzLCBhbmQKIyBpcyBzdXBwbGllZCBzdWJqZWN0IHRvLCBhbmQgbWF5IGJlIHVzZWQgb25seSBieSBDYWRlbmNlJ3MgY3VycmVudCBjdXN0b21lcnMKIyBpbiBhY2NvcmRhbmNlIHdpdGgsIGEgcHJldmlvdXNseSBleGVjdXRlZCBsaWNlbnNlIGFncmVlbWVudCBiZXR3ZWVuIENhZGVuY2UKIyBhbmQgaXRzIGN1c3RvbWVyLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUSElTIE1BVEVSSUFMIElTIFBST1ZJREVEIEJZIENBREVOQ0UgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAojIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiMgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KIyBJTiBOTyBFVkVOVCBTSEFMTCBDQURFTkNFIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwKIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAojIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgojIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgIE1BVEVSSUFMLCBFVkVOIElGCiMgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICAgSU5OT1ZVUyBGT1VOREFUSU9OIEZMT1cKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBpcyB0aGUgSW5ub3Z1cyBmb3VuZGF0aW9uIGZsb3cgY29uZmlndXJhdGlvbiBmaWxlLiAgSXQgY29udGFpbnMgYWxsIHRoZSBuZWNlc3NhcnkgZmxvdwojIG9wdGlvbnMgdG8gZHJpdmUgdGhlIENETlMgZmxhdCBhbmQvb3IgaGllciBpbXBsZW1lbnRhdGlvbiBmbG93cy4gRm9yIGxvdyBwb3dlciBmbG93LAojIGFuIGFkZGl0aW9uIGxvdyBwb3dlciBjb25maWd1cmF0aW9uIGZpbGUgKGxwX2NvbmZpZy50Y2wpIGlzIGFsc28gcmVxdWlyZWQgaWYgcG93ZXIKIyBkb21haW4gc3BlY2lmaWMgaW5mb3JtYXRpb24gbmVlZHMgdG8gYmUgZGVmaW5lZC4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgT3B0aW9uYWxseSBkZWZpbmUgdGhlIGZvbGxvd2luZyB3aGVuIGFwcGxpY2FibGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojc2V0IHZhcnMoYXNzaWduX2J1ZmZlcikgICAgICAgICAgICAgICAgICB7MSAtYnVmZmVyIDxidWZmZXIgbmFtZT59Igojc2V0IHZhcnMoYnVmZmVyX3RpZV9hc3NpZ24pICAgICAgICAgICAgICA8dHJ1ZSB8IGZhbHNlPgojc2V0IHZhcnMoZG9udF91c2VfbGlzdCkgICAgICAgICAgICAgICAgICA8bGlzdD4KI3NldCB2YXJzKGRlbGF5X2NlbGxzKSAgICAgICAgICAgICAgICAgICAgPGxpc3Q+CiNzZXQgdmFycyh0aWVfY2VsbHMpICAgICAgICAgICAgICAgICAgICAgIDxsaXN0Pgojc2V0IHZhcnModGllX2NlbGxzLG1heF9kaXN0YW5jZSkgICAgICAgICA8ZmxvYXQ+CiNzZXQgdmFycyh0aWVfY2VsbHMsbWF4X2Zhbm91dCkgICAgICAgICAgIDxpbnRlZ2VyPgojc2V0IHZhcnMoc2tld19idWZmZXJzKSAgICAgICAgICAgICAgICAgICA8bGlzdD4KI3NldCB2YXJzKGZpbGxlcl9jZWxscykgICAgICAgICAgICAgICAgICAgPGxpc3Q+CiNzZXQgdmFycyhjbG9ja19nYXRlX2NlbGxzKSAgICAgICAgICAgICAgIDxsaXN0Pgojc2V0IHZhcnMoanRhZ19jZWxscykgICAgICAgICAgICAgICAgICAgICA8bGlzdD4KI3NldCB2YXJzKGp0YWdfcm93cykgICAgICAgICAgICAgICAgICAgICAgPGludGVnZXI+CiNzZXQgdmFycyhzcGFyZV9jZWxscykgICAgICAgICAgICAgICAgICAgIDxsaXN0Pgojc2V0IHZhcnMoZW5hYmxlX29jdikgICAgICAgICAgICAgICAgICAgICA8c3RyaW5nPgojc2V0IHZhcnMoZW5hYmxlX2NwcHIpICAgICAgICAgICAgICAgICAgICA8c3RyaW5nPgojc2V0IHZhcnMoZW5hYmxlX3NzKSAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5nPgojc2V0IHZhcnMocGxhY2VfaW9fcGlucykgICAgICAgICAgICAgICAgICA8Ym9vbGVhbj4gCiNzZXQgdmFycyhjbG9ja19nYXRlX2F3YXJlKSAgICAgICAgICAgICAgIDxib29sZWFuPgojc2V0IHZhcnMoY2xvY2tfZ2F0ZV9jbG9uZSkgICAgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKGNsb2NrX2VjbykgICAgICAgICAgICAgICAgICAgICAgPHBvc3RjdHMgfCBwb3N0cm91dGUgfCBib3RoPgojc2V0IHZhcnMoaGlnaF90aW1pbmdfZWZmb3J0KSAgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKGNvbmdlc3Rpb25fZWZmb3J0KSAgICAgICAgICAgICAgPGxvdyB8IG1lZGl1bSB8IGhpZ2g+CiNzZXQgdmFycyhpbl9wbGFjZV9vcHQpICAgICAgICAgICAgICAgICAgIDxib29sZWFuPgojc2V0IHZhcnMobGVha2FnZV9wb3dlcl9lZmZvcnQpICAgICAgICAgICA8bm9uZSB8IGxvdyB8IGhpZ2g+CiNzZXQgdmFycyhkeW5hbWljX3Bvd2VyX2VmZm9ydCkgICAgICAgICAgIDxub25lIHwgbG93IHwgaGlnaD4KI3NldCB2YXJzKHVzZWZ1bF9za2V3KSAgICAgICAgICAgICAgICAgICAgPGJvb2xlYW4+CiNzZXQgdmFycyhwcmVzZXJ2ZV9hc3NlcnRpb25zKSAgICAgICAgICAgIDxib29sZWFuPgojc2V0IHZhcnMoY3JpdGljYWxfcmFuZ2UpICAgICAgICAgICAgICAgICA8ZmxvYXQ+IAojc2V0IHZhcnMoYWxsX2VuZF9wb2ludHMpICAgICAgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKHNpemVfb25seV9maWxlKSAgICAgICAgICAgICAgICAgPGZpbGU+IAojc2V0IHZhcnMoZml4X2Zhbm91dF9sb2FkKSAgICAgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKHJ1bl9jdHMpICAgICAgICAgICAgICAgICAgICAgICAgPGJvb2xlYW4+CiNzZXQgdmFycyhjdHNfZW5naW5lKSAgICAgICAgICAgICAgICAgICAgIDxjdHMgfCBjY29wdCB8IGNjb3B0X2N0cz4gCiNzZXQgdmFycyhjdHNfY2VsbF9saXN0KSAgICAgICAgICAgICAgICAgIDxsaXN0IG9mIGJ1ZmZlcnMvaW52ZXJ0ZXJzPgojc2V0IHZhcnMoY3RzX2J1ZmZlcl9jZWxscykgICAgICAgICAgICAgICA8bGlzdCBvZiBidWZmZXJzPgojc2V0IHZhcnMoY3RzX2ludmVydGVyX2NlbGxzKSAgICAgICAgICAgICA8bGlzdCBvZiBpbnZlcnRlcz4KI3NldCB2YXJzKGN0c191c2VfaW52ZXJ0ZXJzKSAgICAgICAgICAgICAgPGJvb2xlYW4+CiNzZXQgdmFycyhjdHNfZWZmb3J0KSAgICAgICAgICAgICAgICAgICAgIDxsb3cgfCBtZWRpdW0gfCBoaWdoPgojc2V0IHZhcnMoY3RzX2lvX29wdCkgICAgICAgICAgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKGNsa190cmVlX3RvcF9sYXllcikgICAgICAgICAgICAgPGludGVnZXI+CiNzZXQgdmFycyhjbGtfbGVhZl90b3BfbGF5ZXIpICAgICAgICAgICAgIDxpbnRlZ2VyPgojc2V0IHZhcnMoY2xrX3RyZWVfYm90dG9tX2xheWVyKSAgICAgICAgICA8aW50ZWdlcj4KI3NldCB2YXJzKGNsa19sZWFmX2JvdHRvbV9sYXllcikgICAgICAgICAgPGludGVnZXI+CiNzZXQgdmFycyhjbGtfdHJlZV9uZHIpICAgICAgICAgICAgICAgICAgIDx2YWxpZCBub24tZGVmYXVsdCBydWxlPgojc2V0IHZhcnMoY2xrX3RyZWVfZXh0cmFfc3BhY2UpICAgICAgICAgICA8aW50ZWdlcj4KI3NldCB2YXJzKGNsa19sZWFmX25kcikgICAgICAgICAgICAgICAgICAgPHZhbGlkIG5vbi1kZWZhdWx0IHJ1bGU+CiNzZXQgdmFycyhjbGtfbGVhZl9leHRyYV9zcGFjZSkgICAgICAgICAgIDxpbnRlZ2VyPgojc2V0IHZhcnMocm91dGVfY2xvY2tfbmV0cykgICAgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKHBvc3RjdHNfc2V0dXBfaG9sZCkgICAgICAgICAgICAgPHRydWUgb3IgZmFsc2U+CiNzZXQgdmFycyhmaXhfaG9sZCkgICAgICAgICAgICAgICAgICAgICAgIDxib29sZWFuPgojc2V0IHZhcnMoZml4X2hvbGRfaWdub3JlX2lvcykgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKGZpeF9ob2xkX2FsbG93X3Ruc19kZWdyYWRhdGlvbikgPGJvb2xlYW4+CiNzZXQgdmFycyhtdWx0aV9jdXRfZWZmb3J0KSAgICAgICAgICAgICAgIDxsb3cgfCBtZWRpdW0gfCBoaWdoPgojc2V0IHZhcnMobGl0aG9fZHJpdmVuX3JvdXRpbmcpICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKHZlcmlmeV9saXRobykgICAgICAgICAgICAgICAgICAgPGJvb2xlYW4+CiNzZXQgdmFycyhscGFfdGVjaF9maWxlKSAgICAgICAgICAgICAgICAgIDxmaWxlIG5hbWU+CiNzZXQgdmFycyhwb3N0cm91dGVfc3ByZWFkX3dpcmVzKSAgICAgICAgIDx0cnVlIHwgZmFsc2U+CiNzZXQgdmFycyh0cmFja19vcHQpICAgICAgICAgICAgICAgICAgICAgIDx0cnVlIG9yIGZhbHNlPgojc2V0IHZhcnMocG9zdHJvdXRlX2V4dHJhY3Rpb25fZWZmb3J0KSAgICA8bG93IHwgbWVkaXVtIHwgaGlnaD4KI3NldCB2YXJzKHBvc3Ryb3V0ZV9zZXR1cF9ob2xkKSAgICAgICAgICAgPHRydWUgb3IgZmFsc2U+CiNzZXQgdmFycyhzaWdub2ZmX2V4dHJhY3Rpb25fZWZmb3J0KSAgICAgIDxsb3cgfCBtZWRpdW0gfCBoaWdoPgojc2V0IHZhcnMoc2lfYW5hbHlzaXNfdHlwZSkgICAgICAgICAgICAgICA8ZGVmYXVsdCB8IHBlc3NpbWlzdGljPgojc2V0IHZhcnMoYWNjZXB0YWJsZV93bnMpICAgICAgICAgICAgICAgICA8c3RyaW5nPgojc2V0IHZhcnMocmVwb3J0X3Bvd2VyKSAgICAgICAgICAgICAgICAgICA8dHJ1ZSBvciBmYWxzZT4KI3NldCB2YXJzKHJlcG9ydF9ydW5fdGltZSkgICAgICAgICAgICAgICAgPHRydWUgb3IgZmFsc2U+CiNzZXQgdmFycyhzYXZlX3JjKSAgICAgICAgICAgICAgICAgICAgICAgIDx0cnVlIG9mIGZhbHNlPgojc2V0IHZhcnMoc2F2ZV9jb25zdHJhaW50cykgICAgICAgICAgICAgICA8dHJ1ZSBvZiBmYWxzZT4KI3NldCB2YXJzKGFic29sdXRlX2xpYl9wYXRoKSAgICAgICAgICAgICAgPHRydWUgb2YgZmFsc2U+CiNzZXQgdmFycyhyZWxhdGl2ZV9wYXRoKSAgICAgICAgICAgICAgICAgIDx0cnVlIG9mIGZhbHNlPgojc2V0IHZhcnModGltZV9kZXNpZ25fb3B0aW9ucyxzZXR1cCkgICAgICAibGlzdCBvZiB2YWxpZCB0aW1lRGVzaWduIG9wdGlvbnMgRVhDTFVESU5HIC1wcmVDVFMvcG9zdENUUy9wb3N0Um91dGUgLXByZWZpeCBhbmQgLW91dERpciIKI3NldCB2YXJzKHRpbWVfZGVzaWduX29wdGlvbnMsaG9sZCkgICAgICAgImxpc3Qgb2YgdmFsaWQgdGltZURlc2lnbiBvcHRpb25zIEVYQ0xVRElORyAtcHJlQ1RTL3Bvc3RDVFMvcG9zdFJvdXRlIC1wcmVmaXggYW5kIC1vdXREaXIiCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgRm9yIGhpZXJhcmNoaWNhbCBmbG93cyAuLi4KI3NldCB2YXJzKGluc2VydF9mZWVkdGhyb3VnaCkgICAgICAgICAgICAgIDx0cnVlIG9mIGZhbHNlPgojc2V0IHZhcnMocGxhY2VtZW50X2Jhc2VkX3B0bikgICAgICAgICAgICAgPHRydWUgb2YgZmFsc2U+CiNzZXQgdmFycyh1c2VfZmxleG1vZGVscykgICAgICAgICAgICAgICAgICA8dHJ1ZSBvZiBmYWxzZT4KI3NldCB2YXJzKHVzZV9wcm90b19uZXRfZGVsYXlfbW9kZWwpICAgICAgIDx0cnVlIG9mIGZhbHNlPgojc2V0IHZhcnMoYnVkZ2V0X21vZGUpICAgICAgICAgICAgICAgICAgICAgInRyaWFsX2lwbyBwcm90b19uZXRfZGVsYXlfbW9kZWwgZ2lnYV9vcHQiCiNzZXQgdmFycyhmbGV4bW9kZWxfYXNfcHRuKSAgICAgICAgICAgICAgICA8dHJ1ZSBvZiBmYWxzZT4KI3NldCB2YXJzKGZsZXhtb2RlbF9hcnRfYmFzZWQpICAgICAgICAgICAgIDx0cnVlIG9mIGZhbHNlPgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIEJlbG93IGFyZSB0aGUgYXZhaWxhYmxlIHBsdWctaW5zIGZvciB0aGUgZmxhdCBmb3VuZGF0aW9uIGZsb3cuICBFYWNoIAojIHNob3VsZCBwb2ludCB0byBhIGZpbGUuIElmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIHRoZSBmbG93IHdpbGwgcHJpbnQKIyBhIHdhcm5pbmcgYW4gY29udGludWUuICBUaGUgcGxhY2VfdGNsIGFuZCBjdHNfdGNsIGFyZSB1bmlxdWUgaW4gdGhhdCAKIyB0aGV5IFJFUExBQ0UgdGhlIHBsYWNlRGVzaWduIGFuZCBjbG9ja0Rlc2lnbiBjYWxscywgcmVzcGVjdGl2ZWx5LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyhhbHdheXNfc291cmNlX3RjbCkgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMoZmluYWxfYWx3YXlzX3NvdXJjZV90Y2wpICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHByZV9pbml0X3RjbCkgICAgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwb3N0X2luaXRfdGNsKSAgICAgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocHJlX3BsYWNlX3RjbCkgICAgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHBsYWNlX3RjbCkgICAgICAgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwb3N0X3BsYWNlX3RjbCkgICAgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocHJlX3ByZWN0c190Y2wpICAgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHBvc3RfcHJlY3RzX3RjbCkgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwcmVfY3RzX3RjbCkgICAgICAgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMoY3RzX3RjbCkgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHBvc3RfY3RzX3RjbCkgICAgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwcmVfcG9zdGN0c190Y2wpICAgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocG9zdF9wb3N0Y3RzX3RjbCkgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHByZV9wb3N0Y3RzX2hvbGRfdGNsKSAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwb3N0X3Bvc3RjdHNfaG9sZF90Y2wpICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocHJlX3JvdXRlX3RjbCkgICAgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHBvc3Rfcm91dGVfdGNsKSAgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwcmVfcG9zdHJvdXRlX3RjbCkgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocG9zdF9wb3N0cm91dGVfdGNsKSAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHByZV9wb3N0cm91dGVfaG9sZF90Y2wpICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwb3N0X3Bvc3Ryb3V0ZV9ob2xkX3RjbCkgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocHJlX3Bvc3Ryb3V0ZV9zaV90Y2wpICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHBvc3RfcG9zdHJvdXRlX3NpX3RjbCkgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwcmVfcG9zdHJvdXRlX3NpX2hvbGRfdGNsKSAgICAgIDxmaWxlPgojc2V0IHZhcnMocG9zdF9wb3N0cm91dGVfc2lfaG9sZF90Y2wpICAgICA8ZmlsZT4KI3NldCB2YXJzKHByZV9zaWdub2ZmX3RjbCkgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwb3N0X3NpZ25vZmZfdGNsKSAgICAgICAgICAgICAgIDxmaWxlPgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQmVsb3cgYXJlIHRoZSBwbHVnLWlucyBhdmFpbGFibGUgZm9yIHRoZSBoaWVyYXJoaWNhbCBmbG93IC4uLiBub3RlCiMgdGhlIGFkZGl0aW9uYWwgcGx1Zy1pbnMgZm9yIHRoZSBwYXJ0aXRpb24gYW5kIGFzc2VtYmxlIHN0ZXBzLiAgCiMgS2VlcCBpbiBtaW5kIAojICAgIC0gVGhlIHBhcnRpdGlvbmluZyBzdGVwIHdpbGwgYWxzbyBsb2FkIHRoZSBwcmUvcG9zdCBpbml0CiMgICAgICBhbmQgcHJlL3Bvc3QgcGxhY2UgcGx1Zy1pbnMuCiMgICAgLSBUaGUgYXNzZW1ibGUgc3RlcCB3aWxsIGFsc28gbG9hZCB0aGUgcHJlL3Bvc3Qgc2lnbm9mZgojICAgICAgcGx1Zy1pbnMgYXMgd2VsbC4gIAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyhhbHdheXNfc291cmNlX3RjbCkgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMoZmluYWxfYWx3YXlzX3NvdXJjZV90Y2wpICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHByZV9pbml0X3RjbCkgICAgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwb3N0X2luaXRfdGNsKSAgICAgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocHJlX3BsYWNlX3RjbCkgICAgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHBsYWNlX3RjbCkgICAgICAgICAgICAgICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhwb3N0X3BsYWNlX3RjbCkgICAgICAgICAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocHJlX3Bpbl9hc3NpZ25fdGNsKSAgICAgICAgICAgICA8ZmlsZT4gCiNzZXQgdmFycyhwb3N0X3Bpbl9hc3NpZ25fdGNsKSAgICAgICAgICAgIDxmaWxlPiAKI3NldCB2YXJzKHByZV9wYXJ0aXRpb25fdGNsKSAgICAgICAgICAgICAgPGZpbGU+IAojc2V0IHZhcnMocG9zdF9wYXJ0aXRpb25fdGNsKSAgICAgICAgICAgICA8ZmlsZT4gCiNzZXQgdmFycyhwcmVfYXNzZW1ibGVfdGNsKSAgICAgICAgICAgICAgIDxmaWxlPiAKI3NldCB2YXJzKHBvc3RfYXNzZW1ibGVfdGNsKSAgICAgICAgICAgICAgPGZpbGU+IAojc2V0IHZhcnMocHJlX3NpZ25vZmZfdGNsKSAgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHBvc3Rfc2lnbm9mZl90Y2wpICAgICAgICAgICAgICAgPGZpbGU+CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBbGwgb3RoZXIgcGx1Zy1pbnMgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIGZsYXQgaW1wbGVtZW50YXRpb24KIyBvZiB0aGUgcGFydGl0aW9ucy4gVG8gZW5hYmxlIHBsdWctaW5zIGZvciBwYXJ0aXRpb24gaW1wbGVtZW50YXRpb24KIyBkZWZpbmUgaW4gdGhlIHZhcnMoPHBhcnQ+LGVkaV9jb25maWcpIGZpbGUgZm9yIHRoYXQgcGFydGl0aW9uCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBzZXQgdmFycyg8cHRuMT4sZWRpX2NvbmZpZ190Y2wpICAgICAgICAgPGZpbGU+CiMgc2V0IHZhcnMoPHB0bjI+LGVkaV9jb25maWdfdGNsKSAgICAgICAgIDxmaWxlPgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhlcmUgYXJlIGFkZGl0aW9uYWwgdmFyaWFibGVzIGNhbGxlZCBjb21tYW5kIHRhZ3MgdGhhdCBwcm92aWRlIG1vcmUKIyBncmFudWxhciBjdXN0b21pemF0aW9uIGNvbnRyb2wuICBTZWUgdGFncy50Y2wgZm9yIG1vcmUgaW5mb3JtYXRpb24KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVG8gaW5zZXJ0IG1ldGFsIGZpbGwgZHVyaW5nIHRoZSBmbG93IGRlZmluZSB0aGUgZm9sbG93aW5nIHR3bwojIHZhcmlhYmxlczoKIyAtIHZhcnMobWV0YWxmaWxsKSBbcHJlX3Bvc3Ryb3V0ZSwgcHJlX3Bvc3Ryb3V0ZV9zaSwgcHJlX3NpZ25vZmZdCiMgLSB2YXJzKG1ldGFsZmlsbF90Y2wpIDxwYXRoIHRvIG1ldGFsZmlsbCBwbHVnLWluPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojc2V0IHZhcnMobWV0YWxmaWxsKSAgICAgICAgICAgICAgICAgIHByZV9wb3N0cm91dGUKI3NldCB2YXJzKG1ldGFsZmlsbF90Y2wpICAgICAgICAgICAgICA8ZmlsZT4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVGhlcmUgYXJlIHNvbWUgZmxvdyBjb250cm9sIHZhcmlhYmxlcyB0aGF0IGNhbiBiZSBzZXQ6CiMgLSB2YXJzKGFib3J0KSBjb250cm9scyB3aGV0aGVyIGNvZGVnZW4gYWJvcnRzIHdoZW4gZXJyb3IgaXMgZm91bmQKIyAgIGluIHRoZSB2YXJpYWJsZSBzZXR1cC4gIFRoaXMgZGVmYXVsdCB0byB0cnVlLiAgV2hlbiBkaXNhYmxlZCwKIyAgIHBvc3NpYmxlIFRDTCBlcnJvcnMgY2FuIG9jY3VyIGR1cmluZyBmbG93IGV4ZWN1dGlvbgojIC0gdmFycyhjYXRjaF9lcnJvcnMpIGNvbnRyb2xzIHdoZXRoZXIgYSBjYXRjaCBpcyBpbmNsdWRlZCBhcm91bmQKIyAgIGVhY2ggc2V0IG9mIGZsb3cgc3RlcCBjb21tYW5kcy4gIFRoZSBkZWZhdWx0IGlzIHRydWUuCiMgLSB2YXJzKHNhdmVfb25fY2F0Y2gpIGNvbnRyb2xzIHdoZXRoZXIgYSBkYXRhYmFzZSBpcyBzYXZlZCB3aGVuCiMgICBhbiBlcnJvciBpcyBjYXVnaHQuIFRoaXMgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgb25seSB3b3JrcwojICAgd2hlbiB2YXJzKGNhdGNoX2Vycm9ycykgaXMgdHJ1ZQojIC0gdmFycyhtYWlsLHRvKSBhbmQgdmFycyhtYWlsLHN0ZXBzKSBjb250cm9sIHdoZXRoZXIgYSBtYWlsIG1lc3NhZ2UKIyAgIGlzIHNlbnQgYWZ0ZXIgZWFjaCBzdGVwIGNvbXBsZXRlcy4gIFdoZW4gZW5hYmxlZCBhIG1haWwgbWVzc2FnZQojICAgd2lsbCBiZSBzZW50IChjb250YWluaW5nIHRoZSB0aW1pbmcgc3VtbWFyeSBpZiBhdmFpbGFibGUpIGZvciAKIyAgIGFueSBzdGVwIGluIHZhcnMoc3RlcHMpLiAgSWYgdmFycyhzdGVwcykgaXMgdW5kZWZpbmVkLCBhIG1lc3NhZ2UKIyAgIHdpbGwgYmUgc2VudCBmb3IgZXZlcnkgc3RlcC4KIyAKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHNldCB2YXJzKGFib3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAgPHRydWUgb3IgZmFsc2U+IgojIHNldCB2YXJzKGNhdGNoX2Vycm9ycykgICAgICAgICAgICAgICAgICAgPHRydWUgb3IgZmFsc2U+IgojIHNldCB2YXJzKHNhdmVfb25fY2F0Y2gpICAgICAgICAgICAgICAgICAgPHRydWUgb3IgZmFsc2U+IgojIHNldCB2YXJzKG1haWwsdG8pICAgICAgICAgICAgICAgICAgICAgICAgW2xpc3Qgb2YgZW1haWwgYWRkcmVzc2VzXQojIHNldCB2YXNyKG1haWwsc3RlcHMpICAgICAgICAgICAgICAgICAgICAgW2xpc3Qgb2Ygc3RlcHNdCiMgc2V0IHZhcnModGFncyx2ZXJib3NlKSAgICAgICAgICAgICAgICAgICA8dHJ1ZSBvciBmYWxzZT4iCiMgc2V0IHZhcnModGFncyx2ZXJib3NpdHlfbGV2ZWwpICAgICAgICAgICBbaGlnaCB8IGxvd10iCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIEJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBhYm92ZSB2YXJpYWJsZXMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIC0gZG9udF91c2VfbGlzdCAobGlzdCBvZiBjZWxsIG5hbWVzIHRvIGRpc2FibGUgZHVyaW5nIG9wdGltaXphdGlvbikKIyAtIGRlbGF5X2NlbGxzIChsaXN0IG9mIGRlbGF5IGNlbGxzIHRvIGVuYWJsZSBkdXJpbmcgaG9sZCBmaXhpbmcpCiMgLSBjdHNfY2VsbF9saXN0IChsaXN0IG9mIGNlbGxzIGZvciBjbG9ja0Rlc2lnbikKIyAtIHNrZXdfYnVmZmVycyAobGlzdCBvZiBidWZmZXJzIHRvIHVzZSBkdXJpbmcgdXNlZnVsIHNrZXcpCiMgLSBmaWxsZXJfY2VsbHMgKGxpc3Qgb2YgZmlsbGVyIGNlbGxzKQojIC0gY2xvY2tfZ2F0ZV9jZWxscyAobGlzdCBvZiBjbG9jayBnYXRpbmcgZWxlbWVudHMpCiMgLSBqdGFnX2NlbGxzIChsaXN0IG9mIGp0YWcgaW5zdGFuY2VzKQojIC0ganRhZ19yb3dzIChudW1iZXIgb2Ygcm93cyB0byB1c2UgZHVyaW5nICBqdGFnIHBsYWNlbWVudCkKIyAtIHNwYXJlX2NlbGxzIChsaXN0IG9mIHNwYXJlIGNlbGxzIGluc3RhbmNlcykKIyAtIGdkc19sYXllcl9tYXAgKGdkcyBsYXllciBtYXAgZmlsZSkKIyAtIGdkc19maWxlcyAobGlzdCBvZiBnZHMgZmlsZXMpCiMgLSBvYV9yZWZfbGliIChPQSByZWZlcmVuY2UgbGlicmFyeSBuYW1lKQojIC0gb2FfYWJzdHJhY3RfdmlldyAoT0EgYWJzdHJhY3QgdmlldyBuYW1lKQojIC0gb2FfbGF5b3V0X3ZpZXcgKE9BIGxheW91dCB2aWV3IG5hbWUpCiMgLSBidWZmZXJfdGllX2Fzc2lnbiAoYnVmZmVyIGxvZ2ljIDEvMCB0aWUgbmV0cykKIyAtIGFzc2lnbl9idWZmZXIgKGJ1ZmZlciBhc3NpZ24gc3RhdGVtZW50cykKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoZSBmbG93IGluY2x1ZGVzIHNvbWUgb3B0aW9ucyB0byBlbmFibGUgc29tZSBjb21tb25seSB1c2VkIGNvbW1hbmQgb3B0aW9ucy4gIAojIFRoZXNlIGZsYWdzIHByb3ZpZGUgZWFzeSBhY2Nlc3MgdG8gY2VydGFpbiBvcHRpb25zL2NvbW1hbmRzIHdpdGhpbiBTT0NFLiAgCiMgVGhleSBzaG91bGQgYmUgc2V0IGJhc2VkIG9uIHRoZSBuZWVkcyBvZiB0aGUgZGVzaWduL21ldGhvZG9sb2d5LiAgCiMgVGhlIGluY2x1c2lvbiBvZiB0aGVzZSBvcHRpb25zIGRvZXMgbm90IHJlcHJlc2VudCBhIHJlY29tbWVuZGF0aW9uLiAKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEZvciBlYXJseSBydW5zLCB5b3UgbWF5IHdhbnQgdG8gc2tpcCB0aGUgY3RzIHN0ZXAuIFRvIGRvIHRoaXMsIHVzZQojICdzZXQgdmFycyhydW5fY3RzKSBmYWxzZScKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRvIHNlbGVjdCBjY29wdERlc2lnbiBmb3IgQ1RTLCB1c2UgCiMgJ3NldCB2YXJzKGN0c19lbmdpbmUpICdjY29wdCcgKGRlZmF1bHQgaXMgY3RzKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gc2VsZWN0IGNjb3B0RGVzaWduIC1jdHMgZm9yIENUUywgdXNlIAojICdzZXQgdmFycyhjdHNfZW5naW5lKSAnY2NvcHRfY3RzJyAoZGVmYXVsdCBpcyBjdHMpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUbyBzcGVjaWZ5IHRoZSBpbnRlZ3JhdGlvbiBtZXRob2QgZm9yIENDT1BULCB1c2UKIyAnc2V0IHZhcnMoY2NvcHRfaW50ZWdyYXRpb24pIDxuYXRpdmUgfCBzY3JpcHRlZD4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRvIHBvaW50IHRvIHlvdXIgb3duIGNjb3B0IGV4ZWN1dGFibGUgZm9yIHNjcmlwdGVkIGludGVncmF0aW9uLCB1c2UKIyAnc2V0IHZhcnMoY2NvcHRfZXhlY3V0YWJsZSkgPHBhdGggdG8gZXhlY3V0YWJsZT4nCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTb21lIG90aGVyIG9wdGlvbnMgdGhhdCBhZmZlY3QgY2NvcHQgYXJlOgojIC0gdmFycyhjdHNfYnVmZmVyX2xpc3QpCiMgLSB2YXJzKGN0c19pbnZlcnRlcl9saXN0KQojIC0gdmFycyhjdHNfdXNlX2ludmVydGVycykKIyAtIHZhcnMoY3RzX2VmZm9ydCkKIyAtIHZhcnMoY3RzX2lvX29wdCkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE9wdGlvbnMgZm9yIGNsb2NrIHJvdXRpbmc6CiMgLXZhcnMoY2xrX3RyZWVfdG9wX2xheWVyKSAgICAodG9wIGxheWVyIGZvciBub24tbGVhZiBuZXRzKQojIC12YXJzKGNsa19sZWFmX3RvcF9sYXllcikgICAgKHRvcCBsYXllciBmb3IgbGVhZiBuZXRzKSAKIyAtdmFycyhjbGtfdHJlZV9ib3R0b21fbGF5ZXIpIChib3R0b20gbGF5ZXIgZm9yIG5vbi1sZWFmIG5ldHMpCiMgLXZhcnMoY2xrX2xlYWZfYm90dG9tX2xheWVyKSAoYm90dG9tIGxheWVyIGZvciBsZWFmIG5ldHMpCiMgLXZhcnMoY2xrX3RyZWVfbmRyKSAgICAgICAgICAobm9uLWRlZmF1bHQgcnVsZSBmb3Igbm9uLWxlYWYgbmV0cykKIyAtdmFycyhjbGtfdHJlZV9leHRyYV9zcGFjZSkgIChleHRyYSBzcGFjZSBmb3Igbm9uLWxlYWYgbmV0cykKIyAtdmFycyhjbGtfbGVhZl9uZHIpICAgICAgICAgIChub24tZGVmYXVsdCBydWxlIGZvciBsZWFmIG5ldHMwCiMgLXZhcnMoY2xrX2xlYWZfZXh0cmFfc3BhY2UpICAoZXh0cmEgc3BhY2UgZm9yIG5vbi1sZWFmIG5ldHMpCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBDb21tb24gcGF0aCBwZXNzaW1pc20gcmVtb3ZhbCB3aWxsIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBhZnRlciBjdHMKIyBUbyBkaXNhYmxlICdzZXQgdmFycyhlbmFibGVfY3BwcikgZmFsc2UnCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBbmFseXNpcyBtb2RlICdvbkNoaXBWYXJpYXRpb24nIHdpbGwgYmUgZW5hYmxlZCBieSBkZWZhdWx0IHByaW9yCiMgdG8gcG9zdC1yb3V0ZSBvcHRpbWl6YXRpb24uIFRvIGRpc2FibGUgJ3NldCB2YXJzKGVuYWJsZV9vY3YpIGZhbHNlJwojIFRvIGVuYWJsZSBpdCBlbHNld2hlcmUgaW4gdGhlIGZsb3csIHVzZSAnc2V0IHZhcnMoZW5hYmxlX29jdikgPHZhbHVlPicKIyBXaGVyZSA8dmFsdWU+ID0gInByZV9wbGFjZSB8IHByZV9wcmVjdHMgfCBwcmVfcG9zdGN0cyB8CiMgICAgICAgICAgICAgICAgICBwcmVfcG9zdHJvdXRlIHwgcHJlX3Bvc3Ryb3V0ZV9zaSB8IHByZV9zaWdub2ZmIgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhlIGRlZmF1bHQgbGVha2FnZSBwb3dlciBlZmZvcnQgaXMgIm5vbmUiLiBGb3IgbG93IHBvd2VyIGZsb3dzLAojICdzZXQgdmFycyhsZWFrYWdlX3Bvd2VyX2VmZm9ydCkgaGlnaCcKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoZSBkZWZhdWx0IGR5bmFtaWMgcG93ZXIgZWZmb3J0IGlzICJub25lIi4gRm9yIGxvdyBwb3dlciBmbG93cywKIyAnc2V0IHZhcnMoZHluYW1pY19wb3dlcl9lZmZvcnQpIGhpZ2gnCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGUgZGVmYXVsdCByZWNvbW1lbmRhdGlvbiBpcyB0byBOT1QgcGxhY2UgSU8gcGlucyBkdXJpbmcKIyBjZWxsIHBsYWNlbWVudC4gIFRvIGVuYWJsZSBwaW4gcGxhY2VtZW50LCAgCiMgc2V0IHZhcnMocGxhY2VfaW9fcGlucykgdHJ1ZSAKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoZSBlbmFibGUgY2xvY2sgZ2F0ZSBhd2FyZSBwbGFjZW1lbnQsIAojICdzZXQgdmFycyhjbG9ja19nYXRlX2F3YXJlKSB0cnVlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhlIGVuYWJsZSBjbG9jayBnYXRlIGNsb25pbmcsIHVzZQojICdzZXQgdmFycyhjbG9ja19nYXRlX2Nsb25lKSB0cnVlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhlIGRlZmF1bHQgcmVjb21tZW5kYXRpb24gaXMgdG8gcm91dGUgYWxsIGNsb2NrIG5ldHMKIyBkdXJpbmcgQ1RTLiAgVG8gZGlzYWJsZSB0aGlzICdzZXQgdmFycyhyb3V0ZV9jbG9ja19uZXRzKSBmYWxzZScKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRvIHVwZGF0ZSBJTyBsYXRlbmN5IGFmdGVyIENUUywgdXNlCiMgJ3NldCB2YXJzKHVwZGF0ZV9pb19sYXRlbmN5KSBmYWxzZScKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEZvciBjb25nZXN0ZWQgZGVzaWducywgJ3NldCB2YXJzKGNvbmdlc3Rpb25fZWZmb3J0KSBoaWdoJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gcHJlc2VydmUgY29uc3RyYWludHMgb24gSU8gcG9ydHMgKHVzZWZ1bCBmb3IgaGllcmFyY2hpY2FsCiMgZGVzaWducyksICdzZXQgdmFycyhwcmVzZXJ2ZV9hc3NlcnRpb25zKSB0cnVlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZW5hYmxlIHVzZWZ1bCBza2V3IG9wdGltaXphdGlvbiwgJ3NldCB2YXJzKHVzZWZ1bF9za2V3KSB0cnVlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZW5hYmxlIFROUyBvcHRpbWl6YXRpb24sIHVzZQojICdzZXQgdmFycyhhbGxfZW5kX3BvaW50cykgPHZhbHVlPicKIyAuLi4gY3JpdGljYWwgcmFuZ2UgaXMgbm8gbG9uZ2VyIHN1cHBvcnQgCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUbyB1c2UgYSBzaXplIG9ubHkgZmlsZSwgCiMgJ3NldCB2YXJzKHNpemVfb25seV9maWxlKSA8ZmlsZT4nCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUbyBlbmFibGUgZmFub3V0IGxvYWQgZml4aW5nLAojICdzZXQgdmFycyhmaXhfZmFub3V0X2xvYWQpIHRydWUnCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgZGlmZmljdWx0IHRpbWluZyBkZXNpZ25zLCAnc2V0IHZhcnMoaGlnaF90aW1pbmdfZWZmb3J0KSB0cnVlJwojIFRoaXMgb3ZlcnJpZGVzIGNlcnRhaW4gdXNlciBzZXR0aW5ncyB0byBlbmFibGUgYSB2YXJpZXR5IG9mIG9wdGlvbnMKIyB0aHJvdWdob3V0IHRoZSBmbG93IGZvciBvcHRpbWFsIFFvUiBhdCB0aGUgZXhwZW5zZSBvZiBydW50aW1lCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUbyBlbmFibGUgLWluUGxhY2VPcHQsICdzZXQgdmFycyhpbl9wbGFjZV9vcHQpIHRydWUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRvIGVuYWJsZSB1c2VmdWwgc2tldyBvcHRpbWl6YXRpb24sICdzZXQgdmFycyh1c2VmdWxfc2tldykgdHJ1ZScKIyBBbHNvLCBzZXQgdmFycyhza2V3X2J1ZmZlcnMpIHRvIHRoZSBsaXN0IG9mIHVzZWFibGUgY2xvY2sgYnVmZmVycwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZGlzYWJsZSBob2xkIGZpeGluZywKIyAnc2V0IHZhcnMoZml4X2hvbGQpIGZhbHNlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZGlzYWJsZSBob2xkIGZpeGluZyBmb3IgSU8sIAojICdzZXQgdmFycyhmaXhfaG9sZF9pZ25vcmVfaW9zKSB0cnVlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZGlzYWxsb3cgaG9sZCBmaXhpbmcgZnJvbSBkZWdyYWRpbmcgc2V0dXAgdG5zLCB1c2UKIyAnc2V0IHZhcnMoZml4X2hvbGRfYWxsb3dfdG5zX2RlZ3JhZGF0aW9uKSBmYWxzZScKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoZSBmbG93IGRlZmF1bHQgaXMgdG8gZGlzYWJsZSBtdWx0aS1jdXQgdmlhIGluc2VydGlvbi4gIEZvciA5MG5tCiMgYW5kIGJlbG93LCBpdCBpcyByZWNvbW1lbmRlZCB0byBpbnNlcnQgbXVsdGktY3V0IHZpYXMgdXNpbmcKIyAnc2V0IHZhcnMobXVsdGlfY3V0X2VmZm9ydCkgbWVkaXVtLiBUaGlzIHdpbGwgY29tZSB3aXRoIGEgcnVudGltZSBhbmQKIyBtZW1vcnkgcGVuYWx0eSBhbmQgd2lsbCBhbHNvIGFmZmVjdCBRb1IuCiMgRm9yIG1heGltdW0gbXVsdGktY3V0IHZpYSBjb3ZlcmFnZSAnc2V0IHZhcnMobXVsdGlfY3V0X2VmZm9ydCkgaGlnaCcKIyBUaGlzIHdpbGwgY29tZSB3aXRoIGFkZGl0aW9uYWwgcnVudGltZS9tZW1vcnkgb3ZlcmhlYWQuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGUgZGVmYXVsdCBpcyBub3QgdG8gZG8gbGl0aG8gZHJpdmVuIHJvdXRpbmcsCiMgVG8gZW5hYmxlLCB1c2UgJ3NldCB2YXJzKGxpdGhvX2RyaXZlbl9yb3V0aW5nKSB0cnVlJwojIFRvIGVuYWJsZSBsaXRobyB2ZXJpZnkgYW5kIHJlcGFpciwgdXNlICdzZXQgdmFycyh2ZXJpZnlfbGl0aG8pIHRydWUnCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUbyBlbmFibGUgcG9zdHJvdXRlIHdpcmUgc3ByZWFkaW5nLCB1c2UKIyAnc2V0IHZhcnMoc3ByZWFkX3dpcmVzKSB0cnVlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZW5hYmxlIGRpb2RlIGJhc2VkIGFudGVubmEgZml4aW5nLCB1c2UKIyAnc2V0IHZhcnMoYW50ZW5uYV9kaW9kZSkgPGFudGVubmEgY2VsbD4nCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGUgZGVmYXVsdCBwb3N0cm91dGUgZXh0cmFjdGlvbiBlZmZvcnQsIGlzIGRldGFpbCBleHRyYWN0aW9uIChsb3cpLgojIFRvIGVuYWJsZSB0UVJDIChtZWRpdW0pLCBvciBpUVJDIChoaWdoKSBmb3IgdGhlIHBvc3Ryb3V0ZSBjbG9zdXJlCiMgZmxvdywgdXNlIAojICdzZXQgdmFycyhwb3N0cm91dGVfZXh0cmFjdGlvbl9lZmZvcnQpIDxsb3cgfCBtZWRpdW0gfCAgaGlnaD4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRvIGRpc2FibGUgQUFFIChkZWZhdWx0KSBkZWxheSBjYWxjdWxhdGlvbgojICdzZXQgdmFycyhlbmFibGVfc2lfYXdhcmUpIGZhbHNlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZW5hYmxlIHRoaXJkIHBhcnR5IFNJIGNvcnJlbGF0aW9uLCB1c2UKIyAnc2V0IHZhcnMoc2lfYW5hbHlzaXNfdHlwZSkgcGVzc2ltaXN0aWMnCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUbyBlbmFibGUgY2VsdGljIGJhc2VkIGFuYWx5c2lzL2ZpeGluZywgdXNlIAojICdzZXQgdmFycyhlbmFibGVfY2VsdGljX3N0ZXBzKSB0cnVlJwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVG8gZW5hYmxlIHBvd2VyIHJlcG9ydGluZyBhdCBlYWNoIHN0ZXAgaW4gdGhlIGZsb3csIHVzZQojICdzZXQgdmFycyhyZXBvcnRfcG93ZXIpIHRydWUnCiMgVG8gcHJvdmlkZSBhbiBhY3Rpdml0eSBmb3IgcG93ZXIgb3B0aW1pemF0aW9uIGFuZCByZXBvcnRpbmcsCiMgJ3NldCB2YXJzKGFjdGl2aXR5X2ZpbGUpICAgICAgICA8ZmlsZT4nCiMgJ3NldCB2YXJzKGFjdGl2aXR5X2ZpbGVfZm9ybWF0KSA8VENGIHwgU0FJRiB8IFZDRD4nCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGVyZSBhcmUgc29tZSBvcHRpb25zIHRvIHNhdmVEZXNpZ246CiMgVG8gc2F2ZSByY2RiIGluZm9ybWF0aW9uIGZvciBwb3N0cm91dGUgc3RlcHMsIHVzZQojICdzZXQgdmFycyhzYXZlX3JjKSB0cnVlICcKIyBUbyBzYXZlIHRpbWluZyBjb25zdHJhaW50cywgdXNlOgojICdzZXQgdmFycyhzYXZlX2NvbnN0cmFpbnRzKSB0cnVlJwojIFRoZSBmb2xvd2luZyBhcmUgdXNlZCB0byBjb250cm9sIGhvdyB0aGUgcGF0aHMgYXJlIHdyaXR0ZW4gb3V0OgojIC0gdmFycyhyZWxhdGl2ZV9wYXRoKQojIC0gdmFycyhhYnNvbHV0ZV9saWJfcGF0aCkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoZSBkZWZhdWx0IGlzIHRvIGFib3J0IGlmIHRoZXJlIGFyZSBlcnJvcnMgZm91bmQgZHVyaW5nIHRoZSBzZXR1cCAKIyBjaGVjazsgdG8gZGlzYWJsZSB0aGlzLCB1c2UKIyBzZXQgdmFycyhhYm9ydCkgZmFsc2UiCg==