LyoKICogQ29weXJpZ2h0IDIwMTAgo3VrYXN6IFdvam5ps293aWN6CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJyZXNvdXJjZS5oIgoKTEFOR1VBR0UgTEFOR19QT0xJU0gsIFNVQkxBTkdfREVGQVVMVAoKU1RSSU5HVEFCTEUKewogICAgSURTX1RPX1BSSU1JVElWRSAgICAgICAgIkKzuWQgcHJ6eSBwcnpla3N6dGGzY2FuaXUgb2JpZWt0dSBkbyB0eXB1IHBvZHN0YXdvd2VnbyIKICAgIElEU19JTlZBTElEX0NBTExfQVJHICAgICJOaWV3s2GcY2l3ZSB3eXdvs2FuaWUgcHJvY2VkdXJ5IGx1YiBhcmd1bWVudCIKICAgIElEU19DUkVBVEVfT0JKX0VSUk9SICAgICJTZXJ3ZXIgYXV0b21hdHl6YWNqaSBuaWUgbW+/ZSBzdHdvcnp55iBvYmlla3R1IgogICAgSURTX05PX1BST1BFUlRZICAgICAgICAgIk9iaWVrdCBuaWUgd3NwaWVyYSB0ZWogd7NhnGNpd2+cY2kgbHViIG1ldG9keSIKICAgIElEU19VTlNVUFBPUlRFRF9BQ1RJT04gICJPYmlla3QgbmllIHdzcGllcmEgdGVqIGFrY2ppIgogICAgSURTX0FSR19OT1RfT1BUICAgICAgICAgIkFyZ3VtZW50IG5pZW9wY2pvbmFsbnkiCiAgICBJRFNfU1lOVEFYX0VSUk9SICAgICAgICAiQrO5ZCBza7NhZG5pIgogICAgSURTX1NFTUlDT0xPTiAgICAgICAgICAgIk9jemVraXdhbmUgJzsnIgogICAgSURTX0xCUkFDS0VUICAgICAgICAgICAgIk9jemVraXdhbmUgJygnIgogICAgSURTX1JCUkFDS0VUICAgICAgICAgICAgIk9jemVraXdhbmUgJyknIgogICAgSURTX1VOVEVSTUlOQVRFRF9TVFIgICAgIk5pZXpha2/xY3pvbmEgc3Rhs2Egem5ha293YSIKICAgIElEU19OT1RfRlVOQyAgICAgICAgICAgICJPY3pla2l3YW5hIGZ1bmtjamEiCiAgICBJRFNfTk9UX0RBVEUgICAgICAgICAgICAiJ1tvYmlla3RdJyBuaWUgamVzdCBvYmlla3RlbSBkYXR5IgogICAgSURTX05PVF9OVU0gICAgICAgICAgICAgIk9jemVraXdhbmEgbGljemJhIgogICAgSURTX09CSkVDVF9FWFBFQ1RFRCAgICAgIk9jemVraXdhbnkgb2JpZWt0IgogICAgSURTX0lMTEVHQUxfQVNTSUdOICAgICAgIk5pZXBvcHJhd25lIHByenlwaXNhbmllIgogICAgSURTX1VOREVGSU5FRCAgICAgICAgICAgIid8JyBqZXN0IG5pZXpkZWZpbmlvd2FueSIKICAgIElEU19OT1RfQk9PTCAgICAgICAgICAgICJPY3pla2l3YW55IG9iaWVrdCBib29sZWFuIgogICAgSURTX0pTQ1JJUFRfRVhQRUNURUQgICAgIk9jemVraXdhbnkgb2JpZWt0IEpTY3JpcHQiCiAgICBJRFNfUkVHRVhQX1NZTlRBWF9FUlJPUiAiQrO5ZCBza7NhZG5pIHcgcmVndWxhcm55bSB3eXJhv2VuaXUiCiAgICBJRFNfVVJJX0lOVkFMSURfQ0hBUiAgICAiS29kb3dhbmUgVVJJIHphd2llcmEgbmlld7NhnGNpd2Ugem5ha2kiCiAgICBJRFNfSU5WQUxJRF9MRU5HVEggICAgICAiRLN1Z2+c5iB0YWJsaWN5IG11c2kgYnnmIHNrb/Fjem9uuSBkb2RhdG5puSBsaWN6Yrkgc3Rhs7kiCiAgICBJRFNfQVJSQVlfRVhQRUNURUQgICAgICAiT2N6ZWtpd2FueSBvYmlla3QgdGFibGljb3d5Igp9Cg==