LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk4IEthcmwgQmFja3N0cvZtCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNkZWZpbmUgTEFOR1VBR0VfSUQgICAgICAgICAgICAgICAgICBTdwojZGVmaW5lIExBTkdVQUdFX05VTUJFUiAgICAgICAgICAgICAgMWQKI2RlZmluZSBMQU5HVUFHRV9NRU5VX0lURU0gICAgICAgICAgICImU3ZlbnNrYSIKCi8qIE1lbnUgKi8KCiNkZWZpbmUgTUVOVV9GSUxFICAgICAgICAgICAgICAgICAgICAiJkFya2l2IgojZGVmaW5lIE1FTlVfRklMRV9ORVcgICAgICAgICAgICAgICAgIiZOeS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfT1BFTiAgICAgICAgICAgICAgICLWJnBwbmFcdEVudGVyIgojZGVmaW5lIE1FTlVfRklMRV9NT1ZFICAgICAgICAgICAgICAgIiZGbHl0dGEuLi5cdEY3IgojZGVmaW5lIE1FTlVfRklMRV9DT1BZICAgICAgICAgICAgICAgIiZLb3BpZXJhLi4uXHRGOCIKI2RlZmluZSBNRU5VX0ZJTEVfREVMRVRFICAgICAgICAgICAgICImVGEgYm9ydFx0RW50ZiIKI2RlZmluZSBNRU5VX0ZJTEVfQVRUUklCVVRFUyAgICAgICAgICImRWdlbnNrYXBlci4uLlx0QWx0K0VudGVyIgojZGVmaW5lIE1FTlVfRklMRV9FWEVDVVRFICAgICAgICAgICAgIiZL9nIuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX0VYSVQgICAgICAgICAgICAgICAiQSZ2c2x1dGEgV2luZG93cy4uLiIKCiNkZWZpbmUgTUVOVV9PUFRJT05TICAgICAgICAgICAgICAgICAiJkluc3TkbGxuaW5nYXIiCiNkZWZpbmUgTUVOVV9PUFRJT05TX0FVVE9fQVJSQU5HRSAgICAiJkFycmFuZ2VyYSBhdXRvbWF0aXNrdCIKI2RlZmluZSBNRU5VX09QVElPTlNfTUlOX09OX1JVTiAgICAgICImTWluaW1lcmEgdmlkIGv2cm5pbmciCiNkZWZpbmUgTUVOVV9PUFRJT05TX1NBVkVfU0VUVElOR1MgICAiJlNwYXJhIGluc3TkbGxuaW5nYXJuYSB2aWQgYXZzbHV0IgoKI2RlZmluZSBNRU5VX1dJTkRPV1MgICAgICAgICAgICAgICAgICImRvZuc3RlciIKI2RlZmluZSBNRU5VX1dJTkRPV1NfT1ZFUkxBUCAgICAgICAgICIm1nZlcmxhcHBhbmRlXHRTaGlmdCtGNSIKI2RlZmluZSBNRU5VX1dJTkRPV1NfU0lERV9CWV9TSURFICAgICImU2lkYSB2aWQgc2lkYVx0U2hpZnQrRjQiCiNkZWZpbmUgTUVOVV9XSU5ET1dTX0FSUkFOR0UgICAgICAgICAiJkFycmFuZ3JhIElrb25lciIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAiJlNwcuVrIgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICImSGrkbHAiCiNkZWZpbmUgTUVOVV9IRUxQX0NPTlRFTlRTICAgICAgICAgICAiJklubmVo5WxsIgojZGVmaW5lIE1FTlVfSEVMUF9TRUFSQ0ggICAgICAgICAgICAgIiZT9msuLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0hFTFBfT05fSEVMUCAgICAgICAiJkFuduRuZG5pbmdlbiBhdiBIauRscCIKI2RlZmluZSBNRU5VX0hFTFBfVFVUT1JJQUwgICAgICAgICAgICImV2luZG93cyBTauRsdnN0dWRpZXIiCgojZGVmaW5lIE1FTlVfSU5GTyAgICAgICAgICAgICAgICAgICAgIiZJbmZvcm1hdGlvbi4uLiIKI2RlZmluZSBNRU5VX0lORk9fTElDRU5TRSAgICAgICAgICAgICImTGljZW5zIgojZGVmaW5lIE1FTlVfSU5GT19OT19XQVJSQU5UWSAgICAgICAgIiZJTkdFTiBHQVJBTlRJIgojZGVmaW5lIE1FTlVfSU5GT19BQk9VVF9XSU5FICAgICAgICAgIiZPbSBXSU5FIgoKLyogRGlhbG9ncyAqLwoKI2RlZmluZSBESUFMT0dfT0sgICAgICAgICAgICAgICAgICAgICJPSyIKI2RlZmluZSBESUFMT0dfQ0FOQ0VMICAgICAgICAgICAgICAgICJBdmJyeXQiCiNkZWZpbmUgRElBTE9HX0JST1dTRSAgICAgICAgICAgICAgICAiJkJs5GRkcmEiCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAiJkhq5GxwIgoKI2RlZmluZSBESUFMT0dfTkVXX0NBUFRJT04gICAgICAgICAgICJOeXR0IFByb2dyYW0gT2JqZWt0IgojZGVmaW5lIERJQUxPR19ORVdfTkVXICAgICAgICAgICAgICAgIk55dHQiCiNkZWZpbmUgRElBTE9HX05FV19HUk9VUCAgICAgICAgICAgICAiUHJvZ3JhbSAmZ3J1cHAiCiNkZWZpbmUgRElBTE9HX05FV19QUk9HUkFNICAgICAgICAgICAiJlByb2dyYW0iCgojZGVmaW5lIERJQUxPR19NT1ZFX0NBUFRJT04gICAgICAgICAgIkZseXR0YSBQcm9ncmFtIgojZGVmaW5lIERJQUxPR19NT1ZFX1BST0dSQU0gICAgICAgICAgIkZseXR0YSBwcm9ncmFtOiIKI2RlZmluZSBESUFMT0dfTU9WRV9GUk9NX0dST1VQICAgICAgICJGcuVuIGdydXBwOiIKI2RlZmluZSBESUFMT0dfTU9WRV9UT19HUk9VUCAgICAgICAgICImVGlsbCBncnVwcDoiCgojZGVmaW5lIERJQUxPR19DT1BZX0NBUFRJT04gICAgICAgICAgIktvcGllcmEgUHJvZ3JhbSIKI2RlZmluZSBESUFMT0dfQ09QWV9QUk9HUkFNICAgICAgICAgICJLb3BpZXJhIHByb2dyYW06IgojZGVmaW5lIERJQUxPR19DT1BZX0ZST01fR1JPVVAgICAgICAgRElBTE9HX01PVkVfRlJPTV9HUk9VUAojZGVmaW5lIERJQUxPR19DT1BZX1RPX0dST1VQICAgICAgICAgRElBTE9HX01PVkVfVE9fR1JPVVAKCiNkZWZpbmUgRElBTE9HX0dST1VQX0NBUFRJT04gICAgICAgICAiUHJvZ3JhbWdydXBwcyBlZ2Vuc2thcGVyIgojZGVmaW5lIERJQUxPR19HUk9VUF9ERVNDUklQVElPTiAgICAgIiZCZXNrcml2bmluZzoiCiNkZWZpbmUgRElBTE9HX0dST1VQX0ZJTEUgICAgICAgICAgICAiJkdydXBwZmlsOiIKCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ0FQVElPTiAgICAgICAiUHJvZ3JhbSBlZ2Vuc2thcGVyIgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RFU0NSSVBUSU9OICAgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ09NTUFORF9MSU5FICAiJktvbW1hbmRvIHJhZDoiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fRElSRUNUT1JZICAgICAiJkFyYmV0cyBrYXRhbG9nOiIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9IT1RfS0VZICAgICAgICImVGFuZ2VudGJvcmRzIGtvbWJpbmF0aW9uOiIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9TWU1CT0wgICAgICAgICJL9nIgJm1pbmltZXJhdCIKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9PVEhFUl9TWU1CT0wgICImQnl0IElrb24uLi4iCgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ0FQVElPTiAgICAgICAgIkJ5dCBJa29uIgojZGVmaW5lIERJQUxPR19TWU1CT0xfRklMRSAgICAgICAgICAgIiZGaWxuYW1uOiIKI2RlZmluZSBESUFMT0dfU1lNQk9MX0NVUlJFTlQgICAgICAgICImTnV2YXJhbmRlIGlrb246IgoKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9DQVBUSU9OICAgICAgICJL9nIiCiNkZWZpbmUgRElBTE9HX0VYRUNVVEVfQ09NTUFORF9MSU5FICBESUFMT0dfUFJPR1JBTV9DT01NQU5EX0xJTkUKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9TWU1CT0wgICAgICAgIERJQUxPR19QUk9HUkFNX1NZTUJPTAoKLyogU3RyaW5ncyAqLwoKI2RlZmluZSBTVFJJTkdfUFJPR1JBTV9NQU5BR0VSICAgICAgICAgICAgIlByb2dyYW1oYW50ZXJhcmVuIgojZGVmaW5lIFNUUklOR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAiRkVMIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgICAiVkFSTklORyIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgIkluZm9ybWF0aW9uIgojZGVmaW5lIFNUUklOR19ERUxFVEUgICAgICAgICAgICAgICAgICAgICAiVGEgYm9ydCIKI2RlZmluZSBTVFJJTkdfREVMRVRFX0dST1VQX3MgICAgICAgICAgICAgIlRhIGJvcnQgZ3J1cHAgYCVzJyA/IgojZGVmaW5lIFNUUklOR19ERUxFVEVfUFJPR1JBTV9zICAgICAgICAgICAiVGEgYm9ydCBwcm9ncmFtIGAlcycgPyIKI2RlZmluZSBTVFJJTkdfTk9UX0lNUExFTUVOVEVEICAgICAgICAgICAgIkVqIGltcGxlbWVudGVyYXQiCiNkZWZpbmUgU1RSSU5HX0ZJTEVfUkVBRF9FUlJPUl9zICAgICAgICAgICJLYW4gZWogbORzYSBmaWxlbiBgJXMnIgojZGVmaW5lIFNUUklOR19GSUxFX1dSSVRFX0VSUk9SX3MgICAgICAgICAiS2FuIGVqIHNrcml2YSB0aWxsIGZpbGVuIGAlcyciCgojZGVmaW5lIFNUUklOR19HUlBGSUxFX1JFQURfRVJST1JfcyAgICAgICAiXApLYW4gaW50ZSD2cHBuYSBncnVwcGZpbGVuIGAlcycuXG5cCtZuc2thciBkdSBhdHQgUHJvZ3JhbWhhbnRlcmFyZW4gaSBmcmFtdGlkZW4gc2thIGb2cnP2a2Eg9nBwbmEgZGVuPyIKCiNkZWZpbmUgU1RSSU5HX09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICJTbHV0IHDlIG1pbm5lIgojZGVmaW5lIFNUUklOR19XSU5IRUxQX0VSUk9SICAgICAgICAgICAgICAiSGrkbHAgZWogdGlsbGfkbmdsaWciCiNkZWZpbmUgU1RSSU5HX1VOS05PV05fRkVBVFVSRV9zICAgICAgICAgICJPa+RudCBpbm5laOVsbCBpICVzIgojZGVmaW5lIFNUUklOR19GSUxFX05PVF9PVkVSV1JJVFRFTl9zICAgICAiRmlsZW4gYCVzJyBleGlzdGVyYXIuIERlbiBoYXIgZWogc2tyaXZpdHMg9nZlci4iCiNkZWZpbmUgU1RSSU5HX1NBVkVfR1JPVVBfQVNfcyAgICAgICAgICAgICJTcGFyYSBmaWxlbiBzb20gYCVzJyBm9nIgYXR0IGb2cmhpbmRyYSBhdHQgb3JnaW5hbGZpbGVuIHNrcml2cyD2dmVyIgoKI2RlZmluZSBTVFJJTkdfTk9fSE9UX0tFWSAgICAgICAgICAgICAgICAgIkluZ2VuIgoKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICAgICAgIkFsbGEgZmlsZXIgKCouKikiCiNkZWZpbmUgU1RSSU5HX1BST0dSQU1TICAgICAgICAgICAgICAgICAgICJQcm9ncmFtIgojZGVmaW5lIFNUUklOR19MSUJSQVJJRVNfRExMICAgICAgICAgICAgICAiQmlibGlvdGVrc2ZpbGVyICgqLmRsbCkiCiNkZWZpbmUgU1RSSU5HX1NZTUJPTF9GSUxFUyAgICAgICAgICAgICAgICJJa29uZmlsZXIiCiNkZWZpbmUgU1RSSU5HX1NZTUJPTFNfSUNPICAgICAgICAgICAgICAgICJJa29uZXIgKCouaWNvKSIKCiNpbmNsdWRlICJYeC5yYyIK