LyoKICogRGFuaXNoIHJlc291cmNlcyBmb3IgV0xEQVAzMgogKgogKiBDb3B5cmlnaHQgMjAwOCBKZW5zIEFsYnJldHNlbiA8amVuc0BhbGJyZXRzZW4uZGs+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJ3aW5kZWYuaCIKCkxBTkdVQUdFIExBTkdfREFOSVNILCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFCnsKICAgIDAgIlN1Y2Nlc3MiCiAgICAxICJPcGVyYXRpb25zZmVqbCIKICAgIDIgIlByb3Rva29sZmVqbCIKICAgIDMgIlRpZHNiZWdy5m5zbmluZyBvdmVyc2tyZWRldCIKICAgIDQgIlN0+HJyZWxzZXNiZWdy5m5zaW5nIG92ZXJza3JlZGV0IgogICAgNSAiU2FtbWVubGlnbmluZyBmYWxzayIKICAgIDYgIlNhbW1lbmxpZ25pbmcgc2FuZCIKICAgIDcgIkF1dGVudGlrZXJpbmdzbWV0b2RlbiB1bmRlcnN0+HR0ZXMgaWtrZSIKICAgIDggIlN05nJrIGF1dGVudGlzZXJpbmcga3LmdmVzIgogICAgOSAiSGVudmlzbmluZyAodjIpIgogICAgMTAgIkhlbnZpc25pbmciCiAgICAxMSAiQWRtaW5pc3RyYXRpb25zYmVncuZuc2luZyBvdmVyc2tyZWRldCIKICAgIDEyICJLcml0aXNrIHVkdmlkZWxzZSB1dGlsZ+ZuZ2VsaWciCiAgICAxMyAiS3LmdmVyIGtvbmZpZGVuY2lhbGl0ZXQiCiAgICAxNCAiIgogICAgMTUgIiIKICAgIDE2ICJLZW5kZXIgaWtrZSBhdHRyaWJ1dCIKICAgIDE3ICJVZGVmaW5lcmV0IHR5cGUiCiAgICAxOCAiVXBhc3NlbmRlIHNhbW1lbmxpZ25pbmciCiAgICAxOSAiQmVncuZuc25pbmcgb3ZlcnNrcmVkZXQiCiAgICAyMCAiQXR0cmlidXQgZWxsZXIgduZyZGkgZmluZGVzIGFsbGVyZWRlIgogICAgMjEgIlVneWxkaWcgc3ludGFrcyIKICAgIDIyICIiCiAgICAyMyAiIgogICAgMjQgIiIKICAgIDI1ICIiCiAgICAyNiAiIgogICAgMjcgIiIKICAgIDI4ICIiCiAgICAyOSAiIgogICAgMzAgIiIKICAgIDMxICIiCiAgICAzMiAiT2JqZWt0IGVrc2lzdGVyZSBpa2tlIgogICAgMzMgIkFsaWFzIHByb2JsZW0iCiAgICAzNCAiVWd5bGRpZyBETiBzeW50YWtzIgogICAgMzUgIkVyIGJsYWQiCiAgICAzNiAiUHJvYmxlbSBtZWQgYWxpYXMgZGVyZWZlcmVuY2UiCiAgICAzNyAiIgogICAgMzggIiIKICAgIDM5ICIiCiAgICA0MCAiIgogICAgNDEgIiIKICAgIDQyICIiCiAgICA0MyAiIgogICAgNDQgIiIKICAgIDQ1ICIiCiAgICA0NiAiIgogICAgNDcgIiIKICAgIDQ4ICJVcGFzc2VuZGUgYXV0ZW50aWNlcmluZyIKICAgIDQ5ICJVZ3lsZGlnZSBrcmVkaXRpdmVyIgogICAgNTAgIk1hbmdsZW5kZSByZXR0aWdoZWRlciIKICAgIDUxICJPcHRhZ2V0IgogICAgNTIgIlV0aWxn5m5nZWxpZyIKICAgIDUzICJVdmlsbGlnIHRpbCBhdCB1ZGb4cmUiCiAgICA1NCAiTPhra2Ugb3BkYWdldCIKICAgIDU1ICIiCiAgICA1NiAiIgogICAgNTcgIiIKICAgIDU4ICIiCiAgICA1OSAiIgogICAgNjAgIlNvcnRlcmluZ3Nrb250cm9sIG1hbmdsZXIiCiAgICA2MSAiRmVqbCBpIGluZGVrc3Lma2tldmlkZW4iCiAgICA2MiAiIgogICAgNjMgIiIKICAgIDY0ICJOYXZuZ2l2aW5ncyBvdmVydHLmZGVsc2UiCiAgICA2NSAiT2JqZWt0a2xhc3NlIG92ZXJ0cuZkZWxzZSIKICAgIDY2ICJJa2tlIHRpbGxhZHQgcOUgaWtrZSBibGFkIgogICAgNjcgIklra2UgdGlsbGFkdCBw5SBSRE4iCiAgICA2OCAiRmluZGVzIGFsbGVyZWRlIgogICAgNjkgIkluZ2VuIG9iamVrdGtsYXNzZSBtb2RpZmljZXJlcmUiCiAgICA3MCAiUmVzdWx0YXRlcm5lIGVyIGZvciBzdG9yZSIKICAgIDcxICJCZXL4cmVyIGZsZXJlIERTQSdlciIKICAgIDcyICIiCiAgICA3MyAiIgogICAgNzQgIiIKICAgIDc1ICIiCiAgICA3NiAiIgogICAgNzcgIiIKICAgIDc4ICIiCiAgICA3OSAiIgogICAgODAgIkFuZGVuIgogICAgODEgIlNlcnZlciBuZWRlIgogICAgODIgIkxva2FsIGZlamwiCiAgICA4MyAiS29kaW5ncyBmZWpsIgogICAgODQgIkRla29kaW5ncyBmZWpsIgogICAgODUgIlRpZHNhZmJydWQiCiAgICA4NiAiVWtlbmR0IGF1dGVudGlrZXJpbmciCiAgICA4NyAiRmlsdGVyIGZlamwiCiAgICA4OCAiQnJ1Z2VyIGFmYnL4ZCIKICAgIDg5ICJQYXJhbWV0ZXIgZmVqbCIKICAgIDkwICJJbnRldCBodWtvbW1lbHNlIgogICAgOTEgIkt1bm5lIGlra2UgdGlsc2x1dHRlcyB0aWwgTERBUCBzZXJ2ZXJlbiIKICAgIDkyICJPcGVyYXRpb25lbiB1bmRlcnN0+HR0ZXMgaWtrZSBhZiBkZW5uZSB2ZXJzaW9uIGFmIExEQVAgcHJvdG9rb2xsZW4iCiAgICA5MyAiRGVuIHNwZWNpZmljZXJlZGUga29udHJvbGxlciBibGV2IGlra2UgZnVubmR0IGkgYmVza2VkZW4iCiAgICA5NCAiSW5nZW4gcmVzdWx0YXRlciBpIGJlc2tlZCIKICAgIDk1ICJGbGVyZSByZXN1bHRhdGVyIHJldHVybmVyZXQiCiAgICA5NiAiTPhra2UgdW5kZXIgaOVuZHRlcmluZyBhZiBoZW52aXNuaW5nZXIiCiAgICA5NyAiR3LmbnNlIGZvciBoZW52aXNuaW5ncyBob3Agb3ZlcnNrcmVkZXQiCn0K