diff --git a/generate_acknowledgment.py b/generate_acknowledgment.py new file mode 100644 index 0000000..fefc0a0 --- /dev/null +++ b/generate_acknowledgment.py @@ -0,0 +1 @@ +IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiIKR2VuZXJhdGUgQWNrbm93bGVkZ2VtZW50IG9mIFNob3J0LVRlcm0gSW50ZW5zaXZlIFByb2dyYW0KClRoaXMgc2NyaXB0IGNyZWF0ZXMgcGVyc29uYWxpemVkIGFja25vd2xlZGdtZW50IGRvY3VtZW50cyB3aXRoOgotIEN1cnJlbnQgZGF0ZSBhdXRvbWF0aWNhbGx5IHNldAotIFRyYW5zZmVyIHllYXIgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkIGZyb20gRE9CIHVzaW5nIGdyYWRlIHBsYWNlbWVudCBydWxlcwotIEN1c3RvbWl6YWJsZSBzdHVkZW50IGRldGFpbHMKClVzYWdlOgogICAgcHl0aG9uIGdlbmVyYXRlX2Fja25vd2xlZGdtZW50LnB5IC0tbmFtZSAiU3R1ZGVudCBOYW1lIiAtLWRvYiAiMTkvMDUvMjAyMCIgLS10ZXJtICJUZXJtIDEsIDIwMjYiCiAgICBweXRob24gZ2VuZXJhdGVfYWNrbm93bGVkZ21lbnQucHkgICMgSW50ZXJhY3RpdmUgbW9kZQoiIiIKCmZyb20gZG9jeCBpbXBvcnQgRG9jdW1lbnQKZnJvbSBkb2N4LnNoYXJlZCBpbXBvcnQgUHQsIFJHQkNvbG9yCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCmltcG9ydCBhcmdwYXJzZQppbXBvcnQgc3lzCgpkZWYgY2FsY3VsYXRlX3RyYW5zZmVyX3llYXIoZG9iX3N0cik6CiAgICAiIiIKICAgIENhbGN1bGF0ZSB0aGUgdHJhbnNmZXIgeWVhciBiYXNlZCBvbiBET0IgYW5kIGdyYWRlIHBsYWNlbWVudCB0YWJsZS4KICAgIAogICAgUnVsZXMgZnJvbSBFbnJvbG1lbnQgR3JhZGUgUGxhY2VtZW50IFRhYmxlOgogICAgLSBDaGlsZHJlbiBtdXN0IGJlIDUgeWVhcnMgb2YgYWdlIGJlZm9yZSBBcHJpbCAzMAogICAgLSBCaXJ0aCB5ZWFyIHJhbmdlOiBNYXkgMSBZWVlZIHRvIEFwcmlsIDMwIFlZWVkrMQogICAgLSBQYXR0ZXJuOiBTdGFydCBQcmVwIGF0IGFnZSA1LCBwcm9ncmVzcyB0aHJvdWdoIGdyYWRlcwogICAgCiAgICBTaG9ydC10ZXJtIGludGVuc2l2ZSBwcm9ncmFtOiBTdHVkZW50cyB0cmFuc2ZlciBhdCBlbmQgb2YgR3JhZGUgMwogICAgCiAgICBFeGFtcGxlIGNhbGN1bGF0aW9uczoKICAgIC0gRE9CIDE5LzA1LzIwMjAgKE1heSAxIDIwMjAgLSBBcHIgMzAgMjAyMSk6IFA9MjAyNiwgR3IxPTIwMjcsIEdyMj0yMDI4LCBHcjM9MjAyOSDihpIgVHJhbnNmZXIgMjAyOQogICAgLSBET0IgMTUvMDMvMjAyMSAoTWF5IDEgMjAyMCAtIEFwciAzMCAyMDIxKTogUD0yMDI2LCBHcjE9MjAyNywgR3IyPTIwMjgsIEdyMz0yMDI5IOKGkiBUcmFuc2ZlciAyMDI5CiAgICAtIERPQiAxMC8wNi8yMDIxIChNYXkgMSAyMDIxIC0gQXByIDMwIDIwMjIpOiBQPTIwMjcsIEdyMT0yMDI4LCBHcjI9MjAyOSwgR3IzPTIwMzAg4oaSIFRyYW5zZmVyIDIwMzAKICAgIAogICAgQXJnczoKICAgICAgICBkb2Jfc3RyOiBEYXRlIG9mIGJpcnRoIGluIGRkL21tL3l5eXkgZm9ybWF0CiAgICAgICAgCiAgICBSZXR1cm5zOgogICAgICAgIHR1cGxlOiAodHJhbnNmZXJfeWVhciwgcHJlcF95ZWFyKSBvciAoTm9uZSwgTm9uZSkgaWYgaW52YWxpZAogICAgIiIiCiAgICB0cnk6CiAgICAgICAgZG9iID0gZGF0ZXRpbWUuc3RycHRpbWUoZG9iX3N0ciwgIiVkLyVtLyVZIikKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHByaW50KGYiRXJyb3I6IEludmFsaWQgZGF0ZSBmb3JtYXQgJ3tkb2Jfc3RyfScuIEV4cGVjdGVkIGRkL21tL3l5eXkiKQogICAgICAgIHJldHVybiBOb25lLCBOb25lCiAgICAKICAgICMgRGV0ZXJtaW5lIGJpcnRoIHllYXIgcmFuZ2UgYmFzZWQgb24gZW5yb2xsbWVudCBydWxlcwogICAgaWYgZG9iLm1vbnRoID49IDU6ICAjIE1heSB0aHJvdWdoIERlY2VtYmVyCiAgICAgICAgYmlydGhfeWVhcl9zdGFydCA9IGRvYi55ZWFyCiAgICBlbHNlOiAgIyBKYW51YXJ5IHRocm91Z2ggQXByaWwKICAgICAgICBiaXJ0aF95ZWFyX3N0YXJ0ID0gZG9iLnllYXIgLSAxCiAgICAKICAgICMgQ2FsY3VsYXRlIFByZXAgeWVhciAoY2hpbGQgbXVzdCBiZSA1IGJlZm9yZSBBcHJpbCAzMCkKICAgICMgQmlydGggeWVhciByYW5nZSBNYXkgMSBZWVlZIHRvIEFwcmlsIDMwIFlZWVkrMSDihpIgUHJlcCBzdGFydHMgaW4gWVlZWSs2CiAgICBwcmVwX3llYXIgPSBiaXJ0aF95ZWFyX3N0YXJ0ICsgNgogICAgCiAgICAjIEdyYWRlIDMgaXMgMyB5ZWFycyBhZnRlciBQcmVwICh0cmFuc2ZlciB5ZWFyIGZvciBzaG9ydC10ZXJtIHByb2dyYW0pCiAgICB0cmFuc2Zlcl95ZWFyID0gcHJlcF95ZWFyICsgMwogICAgCiAgICByZXR1cm4gdHJhbnNmZXJfeWVhciwgcHJlcF95ZWFyCgpkZWYgZm9ybWF0X2RhdGUoKToKICAgICIiIkZvcm1hdCBjdXJyZW50IGRhdGUgd2l0aCBvcmRpbmFsIHN1ZmZpeCAoZS5nLiwgJzE1dGggRGVjZW1iZXIgMjAyNScpIiIiCiAgICBkYXkgPSBkYXRldGltZS5ub3coKS5kYXkKICAgIGlmIDEwIDw9IGRheSAlIDEwMCA8PSAyMDoKICAgICAgICBzdWZmaXggPSAndGgnCiAgICBlbHNlOgogICAgICAgIHN1ZmZpeCA9IHsxOiAnc3QnLCAyOiAnbmQnLCAzOiAncmQnfS5nZXQoZGF5ICUgMTAsICd0aCcpCiAgICByZXR1cm4gZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoZiIlLWR7c3VmZml4fSAlQiAlWSIpCgpkZWYgY3JlYXRlX2Fja25vd2xlZGdtZW50KHN0dWRlbnRfbmFtZSwgZG9iLCBjb21tZW5jaW5nX3Rlcm0sIG91dHB1dF9wYXRoKToKICAgICIiIgogICAgQ3JlYXRlIGEgbmV3IGFja25vd2xlZGdtZW50IGRvY3VtZW50IGZyb20gc2NyYXRjaC4KICAgIAogICAgQXJnczoKICAgICAgICBzdHVkZW50X25hbWU6IEZ1bGwgbmFtZSBvZiBzdHVkZW50CiAgICAgICAgZG9iOiBEYXRlIG9mIGJpcnRoIGluIGRkL21tL3l5eXkgZm9ybWF0CiAgICAgICAgY29tbWVuY2luZ190ZXJtOiBXaGVuIHN0dWRlbnQgc3RhcnRzIChlLmcuLCAiVGVybSAxLCAyMDI2IikKICAgICAgICBvdXRwdXRfcGF0aDogV2hlcmUgdG8gc2F2ZSB0aGUgZG9jdW1lbnQKICAgICIiIgogICAgdHJhbnNmZXJfeWVhciwgcHJlcF95ZWFyID0gY2FsY3VsYXRlX3RyYW5zZmVyX3llYXIoZG9iKQogICAgCiAgICBpZiB0cmFuc2Zlcl95ZWFyIGlzIE5vbmU6CiAgICAgICAgcHJpbnQoIkVycm9yOiBDb3VsZCBub3QgY2FsY3VsYXRlIHRyYW5zZmVyIHllYXIuIFBsZWFzZSBjaGVjayBET0IgZm9ybWF0LiIpCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAKICAgIGN1cnJlbnRfZGF0ZSA9IGZvcm1hdF9kYXRlKCkKICAgIAogICAgIyBDcmVhdGUgZG9jdW1lbnQKICAgIGRvYyA9IERvY3VtZW50KCkKICAgIAogICAgIyBUaXRsZQogICAgdGl0bGUgPSBkb2MuYWRkX3BhcmFncmFwaCgpCiAgICB0aXRsZV9ydW4gPSB0aXRsZS5hZGRfcnVuKCJBY2tub3dsZWRnZW1lbnQgb2YgU0hPUlQtVEVSTSBpbnRlbnNpdmUgcHJvZ3JhbSIpCiAgICB0aXRsZV9ydW4uYm9sZCA9IFRydWUKICAgIHRpdGxlX3J1bi5mb250LnNpemUgPSBQdCgxNCkKICAgIHRpdGxlLmFsaWdubWVudCA9IDEgICMgQ2VudGVyCiAgICAKICAgICMgRGF0ZQogICAgZG9jLmFkZF9wYXJhZ3JhcGgoZiJEYXRlOiB7Y3VycmVudF9kYXRlfSIpCiAgICAKICAgICMgR3JlZXRpbmcKICAgIGRvYy5hZGRfcGFyYWdyYXBoKCJEZWFyIFBhcmVudC9HdWFyZGlhbiwiKQogICAgCiAgICAjIE1haW4gY29udGVudAogICAgZG9jLmFkZF9wYXJhZ3JhcGgoKQogICAgcGFyYTEgPSBkb2MuYWRkX3BhcmFncmFwaCgKICAgICAgICBmIllvdXIgY2hpbGQge3N0dWRlbnRfbmFtZX0gRE9CIHtkb2J9IGlzIG9mZmVyZWQgZW5yb2xtZW50IGF0IE5pZGRyaWUgQXV0aXN0aWMgU2Nob29sLCAiCiAgICAgICAgZiJjb21tZW5jaW5nIHtjb21tZW5jaW5nX3Rlcm19LiIKICAgICkKICAgIAogICAgcGFyYTIgPSBkb2MuYWRkX3BhcmFncmFwaCgKICAgICAgICBmIk5pZGRyaWUgQXV0aXN0aWMgU2Nob29sIG9mZmVycyBhIHNob3J0LXRlcm0gaW50ZW5zaXZlIHByb2dyYW0gd2hpY2ggbWVhbnMgdGhhdCB5b3VyIGNoaWxkICIKICAgICAgICBmIm11c3QgdHJhbnNmZXIgaW50byBhbm90aGVyIHNjaG9vbCBvbiBvciBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc2Nob29sIHllYXIgaW4ge3RyYW5zZmVyX3llYXJ9LiIKICAgICkKICAgIAogICAgZG9jLmFkZF9wYXJhZ3JhcGgoKQogICAgZG9jLmFkZF9wYXJhZ3JhcGgoKQogICAgZG9jLmFkZF9wYXJhZ3JhcGgoIlBsZWFzZSBjb21wbGV0ZSB0aGlzIGZvcm0gYW5kIHJldHVybiB3aXRoIGFsbCBvdGhlciByZWxldmFudCBlbnJvbG1lbnQgZG9jdW1lbnRhdGlvbi4iKQogICAgCiAgICBkb2MuYWRkX3BhcmFncmFwaCgpCiAgICAKICAgICMgQWNjZXB0YW5jZSBzZWN0aW9uCiAgICBwYXJhMyA9IGRvYy5hZGRfcGFyYWdyYXBoKAogICAgICAgIGYiSSAvIFdlIGFjY2VwdCB0aGUgcGxhY2VtZW50IGF0IE5pZGRyaWUgQXV0aXN0aWMgU2Nob29sIGZvciBteSBjaGlsZCBjb21tZW5jaW5nIHtjb21tZW5jaW5nX3Rlcm19LiIKICAgICkKICAgIAogICAgcGFyYTQgPSBkb2MuYWRkX3BhcmFncmFwaCgKICAgICAgICAiVGhpcyBvZmZlciBpcyBmb3IgNSBkYXlzIHBlciB3ZWVrLCB3ZSBkbyBOT1Qgb2ZmZXIgZHVhbCBlbnJvbG1lbnQuIgogICAgKQogICAgCiAgICBwYXJhNSA9IGRvYy5hZGRfcGFyYWdyYXBoKAogICAgICAgICJJIC8gV2UgdW5kZXJzdGFuZCBOaWRkcmllIEF1dGlzdGljIFNjaG9vbCBvZmZlcnMgYSBzaG9ydC10ZXJtIGludGVuc2l2ZSBwcm9ncmFtIGFuZCB0aGF0IG15IGNoaWxkICIKICAgICAgICAid2lsbCB0cmFuc2ZlciBmcm9tIE5pZGRyaWUgQXV0aXN0aWMgU2Nob29sIG9uIG9yIGJlZm9yZSB0aGUgYWJvdmUgc3RpcHVsYXRlZCBkYXRlLiIKICAgICkKICAgIAogICAgZG9jLmFkZF9wYXJhZ3JhcGgoKQogICAgCiAgICAjIFNpZ25hdHVyZSBzZWN0aW9uCiAgICBkb2MuYWRkX3BhcmFncmFwaCgiU3R1ZGVudCdzIG5hbWU6IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgZG9jLmFkZF9wYXJhZ3JhcGgoKQogICAgZG9jLmFkZF9wYXJhZ3JhcGgoIlBhcmVudC9zIE5hbWUvczogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgIGRvYy5hZGRfcGFyYWdyYXBoKCkKICAgIGRvYy5hZGRfcGFyYWdyYXBoKCJTaWduYXR1cmU6IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIpCiAgICBkb2MuYWRkX3BhcmFncmFwaCgpCiAgICBkb2MuYWRkX3BhcmFncmFwaCgiRGF0ZTogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgCiAgICAjIFNhdmUgZG9jdW1lbnQKICAgIGRvYy5zYXZlKG91dHB1dF9wYXRoKQogICAgCiAgICBwcmludCgiXG4iICsgIj0iKjYwKQogICAgcHJpbnQoIkFDS05PV0xFREdNRU5UIERPQ1VNRU5UIENSRUFURUQgU1VDQ0VTU0ZVTExZIikKICAgIHByaW50KCI9Iio2MCkKICAgIHByaW50KGYiU3R1ZGVudDoge3N0dWRlbnRfbmFtZX0iKQogICAgcHJpbnQoZiJET0I6IHtkb2J9IikKICAgIHByaW50KGYiQ29tbWVuY2luZzoge2NvbW1lbmNpbmdfdGVybX0iKQogICAgcHJpbnQoZiJQcmVwIFllYXI6IHtwcmVwX3llYXJ9IikKICAgIHByaW50KGYiVHJhbnNmZXIgWWVhcjoge3RyYW5zZmVyX3llYXJ9IikKICAgIHByaW50KGYiRG9jdW1lbnQgRGF0ZToge2N1cnJlbnRfZGF0ZX0iKQogICAgcHJpbnQoZiJTYXZlZCB0bzoge291dHB1dF9wYXRofSIpCiAgICBwcmludCgiPSIqNjAgKyAiXG4iKQogICAgCiAgICByZXR1cm4gVHJ1ZQoKZGVmIGludGVyYWN0aXZlX21vZGUoKToKICAgICIiIlJ1biBpbiBpbnRlcmFjdGl2ZSBtb2RlIHRvIGdhdGhlciBpbmZvcm1hdGlvbiBmcm9tIHVzZXIiIiIKICAgIHByaW50KCJcbiIgKyAiPSIqNjApCiAgICBwcmludCgiU0hPUlQtVEVSTSBJTlRFTlNJVkUgUFJPR1JBTSBBQ0tOT1dMRURHTUVOVCBHRU5FUkFUT1IiKQogICAgcHJpbnQoIj0iKjYwICsgIlxuIikKICAgIAogICAgc3R1ZGVudF9uYW1lID0gaW5wdXQoIlN0dWRlbnQncyBmdWxsIG5hbWU6ICIpLnN0cmlwKCkKICAgIGRvYiA9IGlucHV0KCJEYXRlIG9mIGJpcnRoIChkZC9tbS95eXl5KTogIikuc3RyaXAoKQogICAgY29tbWVuY2luZ190ZXJtID0gaW5wdXQoIkNvbW1lbmNpbmcgdGVybSAoZS5nLiwgVGVybSAxLCAyMDI2KTogIikuc3RyaXAoKQogICAgCiAgICAjIFNob3cgY2FsY3VsYXRlZCB5ZWFyCiAgICB0cmFuc2Zlcl95ZWFyLCBwcmVwX3llYXIgPSBjYWxjdWxhdGVfdHJhbnNmZXJfeWVhcihkb2IpCiAgICBpZiB0cmFuc2Zlcl95ZWFyOgogICAgICAgIHByaW50KGYiXG5DYWxjdWxhdGVkIFByZXAgWWVhcjoge3ByZXBfeWVhcn0iKQogICAgICAgIHByaW50KGYiQ2FsY3VsYXRlZCBUcmFuc2ZlciBZZWFyOiB7dHJhbnNmZXJfeWVhcn0iKQogICAgICAgIGNvbmZpcm0gPSBpbnB1dCgiXG5Qcm9jZWVkIHdpdGggdGhlc2UgZGV0YWlscz8gKHkvbik6ICIpLnN0cmlwKCkubG93ZXIoKQogICAgICAgIGlmIGNvbmZpcm0gIT0gJ3knOgogICAgICAgICAgICBwcmludCgiQ2FuY2VsbGVkLiIpCiAgICAgICAgICAgIHJldHVybgogICAgCiAgICBvdXRwdXRfcGF0aCA9IGYiL21udC91c2VyLWRhdGEvb3V0cHV0cy9BY2tub3dsZWRnbWVudF97c3R1ZGVudF9uYW1lLnJlcGxhY2UoJyAnLCAnXycpfV97ZG9iLnJlcGxhY2UoJy8nLCAnLScpfS5kb2N4IgogICAgCiAgICBjcmVhdGVfYWNrbm93bGVkZ21lbnQoc3R1ZGVudF9uYW1lLCBkb2IsIGNvbW1lbmNpbmdfdGVybSwgb3V0cHV0X3BhdGgpCgpkZWYgbWFpbigpOgogICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCiAgICAgICAgZGVzY3JpcHRpb249J0dlbmVyYXRlIEFja25vd2xlZGdlbWVudCBvZiBTaG9ydC1UZXJtIEludGVuc2l2ZSBQcm9ncmFtIGRvY3VtZW50cycsCiAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlciwKICAgICAgICBlcGlsb2c9IiIiCkV4YW1wbGVzOgogIHB5dGhvbiBnZW5lcmF0ZV9hY2tub3dsZWRnbWVudC5weSAtLW5hbWUgIlNpdGFubmEgTW9oYW1lZCIgLS1kb2IgIjE5LzA1LzIwMjAiIC0tdGVybSAiVGVybSAxLCAyMDI2IgogIHB5dGhvbiBnZW5lcmF0ZV9hY2tub3dsZWRnbWVudC5weSAgIyBJbnRlcmFjdGl2ZSBtb2RlCiAgICAgICAgIiIiCiAgICApCiAgICAKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbmFtZScsIGhlbHA9J1N0dWRlbnQgZnVsbCBuYW1lJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZG9iJywgaGVscD0nRGF0ZSBvZiBiaXJ0aCAoZGQvbW0veXl5eSknKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS10ZXJtJywgaGVscD0nQ29tbWVuY2luZyB0ZXJtIChlLmcuLCBUZXJtIDEsIDIwMjYpJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgaGVscD0nT3V0cHV0IGZpbGUgcGF0aCAob3B0aW9uYWwpJykKICAgIAogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIAogICAgIyBJZiBubyBhcmd1bWVudHMgcHJvdmlkZWQsIHJ1biBpbnRlcmFjdGl2ZSBtb2RlCiAgICBpZiBub3QgYW55KFthcmdzLm5hbWUsIGFyZ3MuZG9iLCBhcmdzLnRlcm1dKToKICAgICAgICBpbnRlcmFjdGl2ZV9tb2RlKCkKICAgICAgICByZXR1cm4KICAgIAogICAgIyBWYWxpZGF0ZSByZXF1aXJlZCBhcmd1bWVudHMKICAgIGlmIG5vdCBhbGwoW2FyZ3MubmFtZSwgYXJncy5kb2IsIGFyZ3MudGVybV0pOgogICAgICAgIHBhcnNlci5lcnJvcigiLS1uYW1lLCAtLWRvYiwgYW5kIC0tdGVybSBhcmUgcmVxdWlyZWQgKG9yIHVzZSBpbnRlcmFjdGl2ZSBtb2RlKSIpCiAgICAKICAgICMgRGV0ZXJtaW5lIG91dHB1dCBwYXRoCiAgICBpZiBhcmdzLm91dHB1dDoKICAgICAgICBvdXRwdXRfcGF0aCA9IGFyZ3Mub3V0cHV0CiAgICBlbHNlOgogICAgICAgIHNhZmVfbmFtZSA9IGFyZ3MubmFtZS5yZXBsYWNlKCcgJywgJ18nKQogICAgICAgIHNhZmVfZG9iID0gYXJncy5kb2IucmVwbGFjZSgnLycsICctJykKICAgICAgICBvdXRwdXRfcGF0aCA9IGYiL21udC91c2VyLWRhdGEvb3V0cHV0cy9BY2tub3dsZWRnbWVudF97c2FmZV9uYW1lfV97c2FmZV9kb2J9LmRvY3giCiAgICAKICAgIGNyZWF0ZV9hY2tub3dsZWRnbWVudChhcmdzLm5hbWUsIGFyZ3MuZG9iLCBhcmdzLnRlcm0sIG91dHB1dF9wYXRoKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIG1haW4oKQo= \ No newline at end of file