PD9waHAKCnJldHVybiBbCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBEZWZhdWx0IE1haWxlcgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IFRoaXMgb3B0aW9uIGNvbnRyb2xzIHRoZSBkZWZhdWx0IG1haWxlciB0aGF0IGlzIHVzZWQgdG8gc2VuZCBhbnkgZW1haWwKICAgIHwgbWVzc2FnZXMgc2VudCBieSB5b3VyIGFwcGxpY2F0aW9uLiBBbHRlcm5hdGl2ZSBtYWlsZXJzIG1heSBiZSBzZXR1cAogICAgfCBhbmQgdXNlZCBhcyBuZWVkZWQ7IGhvd2V2ZXIsIHRoaXMgbWFpbGVyIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LgogICAgfAogICAgKi8KCiAgICAnZGVmYXVsdCcgPT4gZW52KCdNQUlMX01BSUxFUicsICdzbXRwJyksCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBNYWlsZXIgQ29uZmlndXJhdGlvbnMKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfAogICAgfCBIZXJlIHlvdSBtYXkgY29uZmlndXJlIGFsbCBvZiB0aGUgbWFpbGVycyB1c2VkIGJ5IHlvdXIgYXBwbGljYXRpb24gcGx1cwogICAgfCB0aGVpciByZXNwZWN0aXZlIHNldHRpbmdzLiBTZXZlcmFsIGV4YW1wbGVzIGhhdmUgYmVlbiBjb25maWd1cmVkIGZvcgogICAgfCB5b3UgYW5kIHlvdSBhcmUgZnJlZSB0byBhZGQgeW91ciBvd24gYXMgeW91ciBhcHBsaWNhdGlvbiByZXF1aXJlcy4KICAgIHwKICAgIHwgTGFyYXZlbCBzdXBwb3J0cyBhIHZhcmlldHkgb2YgbWFpbCAidHJhbnNwb3J0IiBkcml2ZXJzIHRvIGJlIHVzZWQgd2hpbGUKICAgIHwgc2VuZGluZyBhbiBlLW1haWwuIFlvdSB3aWxsIHNwZWNpZnkgd2hpY2ggb25lIHlvdSBhcmUgdXNpbmcgZm9yIHlvdXIKICAgIHwgbWFpbGVycyBiZWxvdy4gWW91IGFyZSBmcmVlIHRvIGFkZCBhZGRpdGlvbmFsIG1haWxlcnMgYXMgcmVxdWlyZWQuCiAgICB8CiAgICB8IFN1cHBvcnRlZDogInNtdHAiLCAic2VuZG1haWwiLCAibWFpbGd1biIsICJzZXMiLAogICAgfCAgICAgICAgICAgICJwb3N0bWFyayIsICJsb2ciLCAiYXJyYXkiCiAgICB8CiAgICAqLwoKICAgICdtYWlsZXJzJyA9PiBbCiAgICAgICAgJ3NtdHAnID0+IFsKICAgICAgICAgICAgJ3RyYW5zcG9ydCcgPT4gJ3NtdHAnLAogICAgICAgICAgICAnaG9zdCcgPT4gZW52KCdNQUlMX0hPU1QnLCAnc210cC5tYWlsZ3VuLm9yZycpLAogICAgICAgICAgICAncG9ydCcgPT4gZW52KCdNQUlMX1BPUlQnLCA1ODcpLAogICAgICAgICAgICAnZW5jcnlwdGlvbicgPT4gZW52KCdNQUlMX0VOQ1JZUFRJT04nLCAndGxzJyksCiAgICAgICAgICAgICd1c2VybmFtZScgPT4gZW52KCdNQUlMX1VTRVJOQU1FJyksCiAgICAgICAgICAgICdwYXNzd29yZCcgPT4gZW52KCdNQUlMX1BBU1NXT1JEJyksCiAgICAgICAgXSwKCiAgICAgICAgJ3NlcycgPT4gWwogICAgICAgICAgICAndHJhbnNwb3J0JyA9PiAnc2VzJywKICAgICAgICBdLAoKICAgICAgICAnc2VuZG1haWwnID0+IFsKICAgICAgICAgICAgJ3RyYW5zcG9ydCcgPT4gJ3NlbmRtYWlsJywKICAgICAgICAgICAgJ3BhdGgnID0+ICcvdXNyL3NiaW4vc2VuZG1haWwgLWJzJywKICAgICAgICBdLAoKICAgICAgICAnbG9nJyA9PiBbCiAgICAgICAgICAgICd0cmFuc3BvcnQnID0+ICdsb2cnLAogICAgICAgICAgICAnY2hhbm5lbCcgPT4gZW52KCdNQUlMX0xPR19DSEFOTkVMJyksCiAgICAgICAgXSwKCiAgICAgICAgJ2FycmF5JyA9PiBbCiAgICAgICAgICAgICd0cmFuc3BvcnQnID0+ICdhcnJheScsCiAgICAgICAgXSwKICAgIF0sCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBHbG9iYWwgIkZyb20iIEFkZHJlc3MKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfAogICAgfCBZb3UgbWF5IHdpc2ggZm9yIGFsbCBlLW1haWxzIHNlbnQgYnkgeW91ciBhcHBsaWNhdGlvbiB0byBiZSBzZW50IGZyb20KICAgIHwgdGhlIHNhbWUgYWRkcmVzcy4gSGVyZSwgeW91IG1heSBzcGVjaWZ5IGEgbmFtZSBhbmQgYWRkcmVzcyB0aGF0IGlzCiAgICB8IHVzZWQgZ2xvYmFsbHkgZm9yIGFsbCBlLW1haWxzIHRoYXQgYXJlIHNlbnQgYnkgeW91ciBhcHBsaWNhdGlvbi4KICAgIHwKICAgICovCgogICAgJ2Zyb20nID0+IFsKICAgICAgICAnYWRkcmVzcycgPT4gZW52KCdNQUlMX0ZST01fQUREUkVTUycsICdoZWxsb0BleGFtcGxlLmNvbScpLAogICAgICAgICduYW1lJyA9PiBlbnYoJ01BSUxfRlJPTV9OQU1FJywgJ0V4YW1wbGUnKSwKICAgIF0sCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBNYXJrZG93biBNYWlsIFNldHRpbmdzCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHwKICAgIHwgSWYgeW91IGFyZSB1c2luZyBNYXJrZG93biBiYXNlZCBlbWFpbCByZW5kZXJpbmcsIHlvdSBtYXkgY29uZmlndXJlIHlvdXIKICAgIHwgdGhlbWUgYW5kIGNvbXBvbmVudCBwYXRocyBoZXJlLCBhbGxvd2luZyB5b3UgdG8gY3VzdG9taXplIHRoZSBkZXNpZ24KICAgIHwgb2YgdGhlIGVtYWlscy4gT3IsIHlvdSBtYXkgc2ltcGx5IHN0aWNrIHdpdGggdGhlIExhcmF2ZWwgZGVmYXVsdHMhCiAgICB8CiAgICAqLwoKICAgICdtYXJrZG93bicgPT4gWwogICAgICAgICd0aGVtZScgPT4gJ2RlZmF1bHQnLAoKICAgICAgICAncGF0aHMnID0+IFsKICAgICAgICAgICAgcmVzb3VyY2VfcGF0aCgndmlld3MvdmVuZG9yL21haWwnKSwKICAgICAgICBdLAogICAgXSwKCl07Cg==PD9waHAKCnJldHVybiBbCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBUaGlyZCBQYXJ0eSBTZXJ2aWNlcwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IFRoaXMgZmlsZSBpcyBmb3Igc3RvcmluZyB0aGUgY3JlZGVudGlhbHMgZm9yIHRoaXJkIHBhcnR5IHNlcnZpY2VzIHN1Y2gKICAgIHwgYXMgTWFpbGd1biwgUG9zdG1hcmssIEFXUyBhbmQgbW9yZS4gVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBkZSBmYWN0bwogICAgfCBsb2NhdGlvbiBmb3IgdGhpcyB0eXBlIG9mIGluZm9ybWF0aW9uLCBhbGxvd2luZyBwYWNrYWdlcyB0byBoYXZlCiAgICB8IGEgY29udmVudGlvbmFsIGZpbGUgdG8gbG9jYXRlIHRoZSB2YXJpb3VzIHNlcnZpY2UgY3JlZGVudGlhbHMuCiAgICB8CiAgICAqLwoKICAgICdtYWlsZ3VuJyA9PiBbCiAgICAgICAgJ2RvbWFpbicgPT4gZW52KCdNQUlMR1VOX0RPTUFJTicpLAogICAgICAgICdzZWNyZXQnID0+IGVudignTUFJTEdVTl9TRUNSRVQnKSwKICAgICAgICAnZW5kcG9pbnQnID0+IGVudignTUFJTEdVTl9FTkRQT0lOVCcsICdhcGkubWFpbGd1bi5uZXQnKSwKICAgIF0sCgogICAgJ3Bvc3RtYXJrJyA9PiBbCiAgICAgICAgJ3Rva2VuJyA9PiBlbnYoJ1BPU1RNQVJLX1RPS0VOJyksCiAgICBdLAoKICAgICdzZXMnID0+IFsKICAgICAgICAna2V5JyA9PiBlbnYoJ0FXU19BQ0NFU1NfS0VZX0lEJyksCiAgICAgICAgJ3NlY3JldCcgPT4gZW52KCdBV1NfU0VDUkVUX0FDQ0VTU19LRVknKSwKICAgICAgICAncmVnaW9uJyA9PiBlbnYoJ0FXU19ERUZBVUxUX1JFR0lPTicsICd1cy1lYXN0LTEnKSwKICAgIF0sCgpdOwo=
