LyoKICogU3BhbmlzaCByZXNvdXJjZXMgZm9yIFdMREFQMzIKICoKICogQ29weXJpZ2h0IDIwMDYgSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJ3aW5kZWYuaCIKCkxBTkdVQUdFIExBTkdfU1BBTklTSCwgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRQp7CiAgICAwICLJeGl0byIKICAgIDEgIkVycm9yIGVuIG9wZXJhY2lvZW5zIgogICAgMiAiRXJyb3IgZGUgcHJvdG9jb2xvIgogICAgMyAiTO1taXRlIGRlIHRpZW1wbyBleGNlZGlkbyIKICAgIDQgIkztbWl0ZSBkZSB0YW1h8W8gZXhjZWRpZG8iCiAgICA1ICJDb21wYXJhY2nzbiBmYWxzYSIKICAgIDYgIkNvbXBhcmFjafNuIHZlcmRhZGVyYSIKICAgIDcgIk3pdG9kbyBkZSBhdXRlbnRpZmljYWNp824gbm8gc29wb3J0YWRvIgogICAgOCAiQXV0ZW50aWZpY2FjafNuIGZ1ZXJ0ZSByZXF1ZXJpZGEiCiAgICA5ICJSZW1pc2nzbiAodjIpIgogICAgMTAgIlJlbWlzafNuIgogICAgMTEgIkztbWl0ZSBkZSBhZG1pbmlzdHJhY2nzbiBleGNlZGlkbyIKICAgIDEyICJFeHRlbnNp824gY3LtdGljYSBubyBkaXNwb25pYmxlIgogICAgMTMgIkNvbmZpZGVuY2lhbGlkYWQgcmVxdWVyaWRhIgogICAgMTQgIiIKICAgIDE1ICIiCiAgICAxNiAiTm8gZXhpc3RlIGRpY2hvIGF0cmlidXRvIgogICAgMTcgIlRpcG8gbm8gZGVmaW5pZG8iCiAgICAxOCAiRW1wYXJlamFtaWVudG8gaW5hcHJvcGlhZG8iCiAgICAxOSAiVmlvbGFjafNuIGRlIHJlc3RyaWNjafNuIgogICAgMjAgIkVsIHZhbG9yIG8gYXRyaWJ1dG8geWEgZXhpc3RlIgogICAgMjEgIlNpbnRheGlzIGluduFsaWRhIgogICAgMjIgIiIKICAgIDIzICIiCiAgICAyNCAiIgogICAgMjUgIiIKICAgIDI2ICIiCiAgICAyNyAiIgogICAgMjggIiIKICAgIDI5ICIiCiAgICAzMCAiIgogICAgMzEgIiIKICAgIDMyICJObyBleGlzdGUgZGljaG8gb2JqZXRvIgogICAgMzMgIlByb2JsZW1hIGRlIGFsaWFzIgogICAgMzQgIlNpbnRheGlzIGluduFsaWRhIGRlIEROIgogICAgMzUgIkVzIHVuYSBob2phIgogICAgMzYgIlByb2JsZW1hIGRlIGRlcmVmZXJlbmNpYSBkZSBhbGlhcyIKICAgIDM3ICIiCiAgICAzOCAiIgogICAgMzkgIiIKICAgIDQwICIiCiAgICA0MSAiIgogICAgNDIgIiIKICAgIDQzICIiCiAgICA0NCAiIgogICAgNDUgIiIKICAgIDQ2ICIiCiAgICA0NyAiIgogICAgNDggIkF1dGVudGlmaWNhY2nzbiBpbmFwcm9wcmlhZGEiCiAgICA0OSAiQ3JlZGVuY2lhbGVzIGluduFsaWRvcyIKICAgIDUwICJJbnN1ZmljaWVudGVzIHBlcm1pc29zIgogICAgNTEgIk9jdXBhZG8iCiAgICA1MiAiTm8gZGlzcG9uaWJsZSIKICAgIDUzICJSZWFjaW8gYSBhY3R1YXIiCiAgICA1NCAiQnVjbGUgZGV0ZWN0YWRvIgogICAgNTUgIiIKICAgIDU2ICIiCiAgICA1NyAiIgogICAgNTggIiIKICAgIDU5ICIiCiAgICA2MCAiRmFsdGEgY29udHJvbCBkZSBvcmRlbiIKICAgIDYxICJFcnJvciBkZSByYW5nbyBkZSDtbmRpY2UiCiAgICA2MiAiIgogICAgNjMgIiIKICAgIDY0ICJWaW9sYWNp824gZGUgbm9tZW5jbGF0dXJhIgogICAgNjUgIlZpb2xhY2nzbiBkZSBjbGFzZSBkZSBvYmpldG8iCiAgICA2NiAiTm8gcGVybWl0aWRvIGVuIHVuYSBuby1ob2phIgogICAgNjcgIk5vIHBlcm1pdGlkbyBlbiBSRE4iCiAgICA2OCAiWWEgZXhpc3RlIgogICAgNjkgIk5vIE1vZHMgZGUgY2xhc2UgZGUgb2JqZXRvIgogICAgNzAgIlJlc3VsdGFkb3MgZGVtYXNpYWRvIGxhcmdvcyIKICAgIDcxICJBZmVjdGEgYSBt+mx0aXBsZXMgRFNBcyIKICAgIDcyICIiCiAgICA3MyAiIgogICAgNzQgIiIKICAgIDc1ICIiCiAgICA3NiAiIgogICAgNzcgIiIKICAgIDc4ICIiCiAgICA3OSAiIgogICAgODAgIk90cm8iCiAgICA4MSAiU2Vydmlkb3IgY2HtZG8iCiAgICA4MiAiRXJyb3IgbG9jYWwiCiAgICA4MyAiRXJyb3IgZGUgY29kaWZpY2FjafNuIgogICAgODQgIkVycm9yIGRlIGRlY29kaWZpY2FjafNuIgogICAgODUgIlRpZW1wbyBkZSBlc3BlcmEgc3VwZXJhZG8iCiAgICA4NiAiQXV0ZW50aWZpY2FjafNuIGRlc2Nvbm9jaWRhIgogICAgODcgIkVycm9yIGRlIGZpbHRybyIKICAgIDg4ICJDYW5jZWxhZG8gcG9yIGVsIHVzdWFyaW8iCiAgICA4OSAiRXJyb3IgZGUgcGFy4W1ldHJvIgogICAgOTAgIlNpbiBtZW1vcmlhIgogICAgOTEgIk5vIHNlIGhhIHBvZGlkbyBjb25lY3RhciBhbCBzZXJ2aWRvciBMREFQIgogICAgOTIgIk9wZXJhY2nzbiBubyBzb3BvcnRhZGEgcG9yIGVzdGEgdmVyc2nzbiBkZWwgcHJvdG9jb2xvIExEQVAiCiAgICA5MyAiQ29udHJvbCBlc3BlY2lmaWNhZG8gbm8gc2UgaGEgZW5jb250cmFkbyBlbiBlbCBtZW5zYWplIgogICAgOTQgIk5pbmf6biByZXN1bHRhZG8gcHJlc2VudGUgZW4gZWwgbWVuc2FqZSIKICAgIDk1ICJN4XMgcmVzdWx0YWRvcyBkZXZ1ZWx0b3MiCiAgICA5NiAiQnVjbGUgYWwgbWFuZWphciByZW1pc2lvbmVzIgogICAgOTcgIkztbWl0ZSBkZSBzYWx0b3MgZGUgcmVtaXNpb25lcyBleGNlZGlkbyIKfQo=