LyoKICogSFRNTCBIZWxwIHJlc291cmNlcwogKiBSdXNzaWEgTGFuZ3VhZ2UgU3VwcG9ydAogKgogKiBDb3B5cmlnaHQgMjAwOCBWaXRhbGl5IE1hcmdvbGVuCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJyZXNvdXJjZS5oIgoKTEFOR1VBR0UgTEFOR19SVVNTSUFOLCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFCkJFR0lOCiAgICBJRFNfQ09OVEVOVFMgICAgICIm0e7k5fDm4O3o5SIKICAgIElEU19JTkRFWCAgICAgICAgIibO4+vg4uvl7ejlIgogICAgSURTX1NFQVJDSCAgICAgICAiJs/u6PHqIgogICAgSURTX0ZBVk9SSVRFUyAgICAiJsjn4fDg7e3u5SIKRU5ECgpTVFJJTkdUQUJMRQpCRUdJTgogICAgSURUQl9FWFBBTkQgICAgICAiz+7q4Ofg8vwiCiAgICBJRFRCX0NPTlRSQUNUICAgICLR7/D/8uDy/CIKICAgIElEVEJfU1RPUCAgICAgICAgIs7x8uDt7uLo8vwiCiAgICBJRFRCX1JFRlJFU0ggICAgICLO4e3u4ujy/CIKICAgIElEVEJfQkFDSyAgICAgICAgIs3g5+DkIgogICAgSURUQl9IT01FICAgICAgICAiwiDt4Pfg6+4iCiAgICBJRFRCX1NZTkMgICAgICAgICLR6O318O7t6Ofo8O7i4PL8IgogICAgSURUQl9QUklOVCAgICAgICAiz+X34PL8IgogICAgSURUQl9PUFRJT05TICAgICAizeDx8vDu6eroIgogICAgSURUQl9GT1JXQVJEICAgICAiwu/l8LjkIgogICAgSURUQl9OT1RFUyAgICAgICAix+Dv6PHq6CIKICAgIElEVEJfQlJPV1NFX0ZXRCAgIs/w7vHs7vLwIOLv5fC45CIKICAgIElEVEJfQlJPV1NFX0JBQ0sgIs/w7vHs7vLwIO3g5+DkIgogICAgSURUQl9DT05URU5UUyAgICAi0e7k5fDm4O3o5SIKICAgIElEVEJfSU5ERVggICAgICAgIs7j6+Di6+Xt6OUiCiAgICBJRFRCX1NFQVJDSCAgICAgICLP7ujx6iIKICAgIElEVEJfSElTVE9SWSAgICAgIsjx8u7w6P8iCiAgICBJRFRCX0ZBVk9SSVRFUyAgICLI5+Hw4O3t7uUiCiAgICBJRFRCX0pVTVAxICAgICAgICLP5fDl9e7kIDEiCiAgICBJRFRCX0pVTVAyICAgICAgICLP5fDl9e7kIDIiCiAgICBJRFRCX0NVU1RPTUlaRSAgICLP5fDx7u3g6+jn7uLg8vwiCiAgICBJRFRCX1pPT00gICAgICAgICLM4PH48uDhIgogICAgSURUQl9UT0NfTkVYVCAgICAi0evl5PP++eD/IOPr4OLgIgogICAgSURUQl9UT0NfUFJFViAgICAiz/Dl5Pvk8/ng/yDj6+Di4CIKRU5ECg==