PD9waHAKLyoqCiAqIEdhcmRlbiBTdGF0ZSBCZW5lZml0cyDigJQgVGhlbWUgRnVuY3Rpb25zCiAqCiAqIEBwYWNrYWdlIEdhcmRlblN0YXRlQmVuZWZpdHMKICogQHZlcnNpb24gMS4wLjAKICovCgppZiAoICEgZGVmaW5lZCggJ0FCU1BBVEgnICkgKSB7CglleGl0Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVEhFTUUgU0VUVVAKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpmdW5jdGlvbiBnc2JfdGhlbWVfc2V0dXAoKSB7CgkvLyBMZXQgV29yZFByZXNzIG1hbmFnZSB0aGUgZG9jdW1lbnQgdGl0bGUuCglhZGRfdGhlbWVfc3VwcG9ydCggJ3RpdGxlLXRhZycgKTsKCgkvLyBFbmFibGUgcG9zdCB0aHVtYm5haWwgc3VwcG9ydC4KCWFkZF90aGVtZV9zdXBwb3J0KCAncG9zdC10aHVtYm5haWxzJyApOwoKCS8vIFN3aXRjaCBkZWZhdWx0IGNvcmUgbWFya3VwIHRvIHZhbGlkIEhUTUw1LgoJYWRkX3RoZW1lX3N1cHBvcnQoCgkJJ2h0bWw1JywKCQlhcnJheSgKCQkJJ3NlYXJjaC1mb3JtJywKCQkJJ2NvbW1lbnQtZm9ybScsCgkJCSdjb21tZW50LWxpc3QnLAoJCQknZ2FsbGVyeScsCgkJCSdjYXB0aW9uJywKCQkJJ3N0eWxlJywKCQkJJ3NjcmlwdCcsCgkJKQoJKTsKCgkvLyBSZWdpc3RlciBuYXZpZ2F0aW9uIG1lbnVzLgoJcmVnaXN0ZXJfbmF2X21lbnVzKAoJCWFycmF5KAoJCQkncHJpbWFyeScgPT4gX18oICdQcmltYXJ5IE5hdmlnYXRpb24nLCAnZ3NiJyApLAoJCQknZm9vdGVyJyAgPT4gX18oICdGb290ZXIgTmF2aWdhdGlvbicsICdnc2InICksCgkJKQoJKTsKCgkvLyBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0aXZlIHJlZnJlc2ggZm9yIHdpZGdldHMuCglhZGRfdGhlbWVfc3VwcG9ydCggJ2N1c3RvbWl6ZS1zZWxlY3RpdmUtcmVmcmVzaC13aWRnZXRzJyApOwoKCS8vIEFkZCBzdXBwb3J0IGZvciByZXNwb25zaXZlIGVtYmVkcy4KCWFkZF90aGVtZV9zdXBwb3J0KCAncmVzcG9uc2l2ZS1lbWJlZHMnICk7CgoJLy8gQWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBsb2dvLgoJYWRkX3RoZW1lX3N1cHBvcnQoCgkJJ2N1c3RvbS1sb2dvJywKCQlhcnJheSgKCQkJJ2hlaWdodCcgICAgICA9PiA2MCwKCQkJJ3dpZHRoJyAgICAgICA9PiAzMDAsCgkJCSdmbGV4LWhlaWdodCcgPT4gdHJ1ZSwKCQkJJ2ZsZXgtd2lkdGgnICA9PiB0cnVlLAoJCSkKCSk7Cn0KYWRkX2FjdGlvbiggJ2FmdGVyX3NldHVwX3RoZW1lJywgJ2dzYl90aGVtZV9zZXR1cCcgKTsKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBFTlFVRVVFIFNDUklQVFMgJiBTVFlMRVMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpmdW5jdGlvbiBnc2JfZW5xdWV1ZV9hc3NldHMoKSB7CgkvLyBNYWluIHRoZW1lIHN0eWxlc2hlZXQgKGZvbnRzIGxvYWRlZCBub24tYmxvY2tpbmcgYmVsb3cpLgoJd3BfZW5xdWV1ZV9zdHlsZSgKCQknZ3NiLXN0eWxlJywKCQlnZXRfc3R5bGVzaGVldF91cmkoKSwKCQlhcnJheSgpLAoJCXdwX2dldF90aGVtZSgpLT5nZXQoICdWZXJzaW9uJyApCgkpOwp9CmFkZF9hY3Rpb24oICd3cF9lbnF1ZXVlX3NjcmlwdHMnLCAnZ3NiX2VucXVldWVfYXNzZXRzJyApOwoKLyoqCiAqIExvYWQgR29vZ2xlIEZvbnRzIG5vbi1yZW5kZXItYmxvY2tpbmcgdmlhIHByZWxvYWQgKyBvbmxvYWQgc3dhcC4KICogRWxpbWluYXRlcyB0aGUgcmVuZGVyLWJsb2NraW5nIHN0eWxlc2hlZXQgbGF0ZW5jeSBvbiBmaXJzdCBwYWludC4KICovCmZ1bmN0aW9uIGdzYl9wcmVsb2FkX2ZvbnRzKCkgewoJJGZvbnRzX3VybCA9ICdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBsYXlmYWlyK0Rpc3BsYXk6d2dodEA0MDA7NjAwOzcwMCZmYW1pbHk9Um9ib3RvOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAnOwoJZWNobyAnPGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSInIC4gZXNjX3VybCggJGZvbnRzX3VybCApIC4gJyIgYXM9InN0eWxlIiBvbmxvYWQ9InRoaXMub25sb2FkPW51bGw7dGhpcy5yZWw9XCdzdHlsZXNoZWV0XCciPicgLiAiXG4iOwoJZWNobyAnPG5vc2NyaXB0PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJyAuIGVzY191cmwoICRmb250c191cmwgKSAuICciPjwvbm9zY3JpcHQ+JyAuICJcbiI7Cn0KYWRkX2FjdGlvbiggJ3dwX2hlYWQnLCAnZ3NiX3ByZWxvYWRfZm9udHMnLCAyICk7CgovKioKICogVXBncmFkZSBhbGwgaW5zZWN1cmUgSFRUUCBzdWItcmVzb3VyY2UgcmVxdWVzdHMgdG8gSFRUUFMgYXV0b21hdGljYWxseS4KICovCmFkZF9hY3Rpb24oICdzZW5kX2hlYWRlcnMnLCBmdW5jdGlvbigpIHsKCWlmICggISBpc19hZG1pbigpICkgewoJCWhlYWRlciggJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5OiB1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzJyApOwoJfQp9ICk7CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ09OVEFDVCBGT1JNIEhBTkRMRVIKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgovKioKICogSGFuZGxlcyB0aGUgY29udGFjdCBmb3JtIFBPU1Qgc3VibWlzc2lvbi4KICogTm9uY2UtdmVyaWZpZWQsIHNhbml0aXplZCwgYW5kIHNlbnQgdmlhIHdwX21haWwoKS4KICogUmVkaXJlY3RzIGJhY2sgdG8gdGhlIHNhbWUgcGFnZSB3aXRoIGEgcXVlcnkgYXJnIG9uIHN1Y2Nlc3MuCiAqLwpmdW5jdGlvbiBnc2JfaGFuZGxlX2NvbnRhY3RfZm9ybSgpIHsKCS8vIE9ubHkgcHJvY2VzcyBvdXIgZm9ybSBzdWJtaXNzaW9uLgoJaWYgKAoJCSEgaXNzZXQoICRfUE9TVFsnZ3NiX2NvbnRhY3Rfbm9uY2UnXSApIHx8CgkJISB3cF92ZXJpZnlfbm9uY2UoIHNhbml0aXplX3RleHRfZmllbGQoIHdwX3Vuc2xhc2goICRfUE9TVFsnZ3NiX2NvbnRhY3Rfbm9uY2UnXSApICksICdnc2JfY29udGFjdF9mb3JtJyApCgkpIHsKCQlyZXR1cm47Cgl9CgoJaWYgKCAhIGlzc2V0KCAkX1BPU1RbJ2dzYl9mb3JtX3N1Ym1pdCddICkgKSB7CgkJcmV0dXJuOwoJfQoKCS8vIEhvbmV5cG90IGNoZWNrIOKAlCBib3RzIGZpbGwgdGhpcyBoaWRkZW4gZmllbGQsIGh1bWFucyBuZXZlciBzZWUgaXQuCglpZiAoICEgZW1wdHkoICRfUE9TVFsnZ3NiX3dlYnNpdGUnXSApICkgewoJCSRyZWRpcmVjdCA9IGFkZF9xdWVyeV9hcmcoICdnc2JfZm9ybScsICdzdWNjZXNzJywgZ2V0X3Blcm1hbGluaygpICk7CgkJd3Bfc2FmZV9yZWRpcmVjdCggJHJlZGlyZWN0ICk7CgkJZXhpdDsKCX0KCgkvLyBKUyB0b2tlbiBjaGVjayDigJQgSmF2YVNjcmlwdCBzZXRzIHRoaXMgb24gcGFnZSBsb2FkOyBib3RzIHRoYXQgZG9uJ3QgcmVuZGVyIEpTIHdvbid0IGhhdmUgaXQuCgkkanNfdG9rZW4gPSBpc3NldCggJF9QT1NUWydnc2JfanNfdG9rZW4nXSApID8gc2FuaXRpemVfdGV4dF9maWVsZCggd3BfdW5zbGFzaCggJF9QT1NUWydnc2JfanNfdG9rZW4nXSApICkgOiAnJzsKCWlmICggc3RycG9zKCAkanNfdG9rZW4sICdnc2JfJyApICE9PSAwICkgewoJCSRyZWRpcmVjdCA9IGFkZF9xdWVyeV9hcmcoICdnc2JfZm9ybScsICdzdWNjZXNzJywgZ2V0X3Blcm1hbGluaygpICk7CgkJd3Bfc2FmZV9yZWRpcmVjdCggJHJlZGlyZWN0ICk7CgkJZXhpdDsKCX0KCgkvLyBUaW1pbmcgY2hlY2sg4oCUIHJlamVjdCBzdWJtaXNzaW9ucyBmYXN0ZXIgdGhhbiAxNSBzZWNvbmRzIChib3RzKS4KCSRmb3JtX3RpbWUgPSBpc3NldCggJF9QT1NUWydnc2JfZm9ybV90aW1lJ10gKSA/IChpbnQpICRfUE9TVFsnZ3NiX2Zvcm1fdGltZSddIDogMDsKCWlmICggJGZvcm1fdGltZSAmJiAoIHRpbWUoKSAtICRmb3JtX3RpbWUgKSA8IDE1ICkgewoJCSRyZWRpcmVjdCA9IGFkZF9xdWVyeV9hcmcoICdnc2JfZm9ybScsICdzdWNjZXNzJywgZ2V0X3Blcm1hbGluaygpICk7CgkJd3Bfc2FmZV9yZWRpcmVjdCggJHJlZGlyZWN0ICk7CgkJZXhpdDsKCX0KCgkvLyBJUCByYXRlIGxpbWl0aW5nIOKAlCBtYXggMSBzdWJtaXNzaW9uIHBlciBJUCBwZXIgaG91ci4KCSRpcCAgICAgICAgID0gaXNzZXQoICRfU0VSVkVSWydSRU1PVEVfQUREUiddICkgPyBzYW5pdGl6ZV90ZXh0X2ZpZWxkKCB3cF91bnNsYXNoKCAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSApICkgOiAndW5rbm93bic7CgkkcmF0ZV9rZXkgICA9ICdnc2JfcmF0ZV8nIC4gbWQ1KCAkaXAgKTsKCSRyYXRlX2NvdW50ID0gKGludCkgZ2V0X3RyYW5zaWVudCggJHJhdGVfa2V5ICk7CglpZiAoICRyYXRlX2NvdW50ID49IDEgKSB7CgkJJHJlZGlyZWN0ID0gYWRkX3F1ZXJ5X2FyZyggJ2dzYl9mb3JtJywgJ3N1Y2Nlc3MnLCBnZXRfcGVybWFsaW5rKCkgKTsKCQl3cF9zYWZlX3JlZGlyZWN0KCAkcmVkaXJlY3QgKTsKCQlleGl0OwoJfQoJc2V0X3RyYW5zaWVudCggJHJhdGVfa2V5LCAkcmF0ZV9jb3VudCArIDEsIEhPVVJfSU5fU0VDT05EUyApOwoKCS8vIERpc3Bvc2FibGUgLyBzcGFtIGVtYWlsIGRvbWFpbiBibG9ja2xpc3QuCgkkc3BhbV9kb21haW5zID0gYXJyYXkoCgkJJ21haWxpbmF0b3IuY29tJywgJ2d1ZXJyaWxsYW1haWwuY29tJywgJ2d1ZXJyaWxsYW1haWwubmV0JywgJ2d1ZXJyaWxsYW1haWwub3JnJywKCQkndHJhc2htYWlsLmNvbScsICd0cmFzaG1haWwubmV0JywgJ3RyYXNobWFpbC5tZScsICd0ZW1wbWFpbC5jb20nLCAndGVtcC1tYWlsLm9yZycsCgkJJ3Rocm93YW0uY29tJywgJ3lvcG1haWwuY29tJywgJ3NoYXJrbGFzZXJzLmNvbScsICdndWVycmlsbGFtYWlsYmxvY2suY29tJywKCQknZ3JyLmxhJywgJ3NwYW00Lm1lJywgJ21haWxkcm9wLmNjJywgJ2Rpc3Bvc3RhYmxlLmNvbScsICdmYWtlaW5ib3guY29tJywKCQknbWFpbG51bGwuY29tJywgJ3NwYW1nb3VybWV0LmNvbScsICdnZXRhaXJtYWlsLmNvbScsICdmaWx6bWFpbC5kZScsCgkJJ3NwYW1oZXJlbG90cy5jb20nLCAnYmlua21haWwuY29tJywgJ3NhZmV0eW1haWwuaW5mbycsICdtYWlsbmVzaWEuY29tJywKCSk7CgkkZW1haWxfcmF3ICAgID0gaXNzZXQoICRfUE9TVFsnZ3NiX2VtYWlsJ10gKSA/IHNhbml0aXplX2VtYWlsKCB3cF91bnNsYXNoKCAkX1BPU1RbJ2dzYl9lbWFpbCddICkgKSA6ICcnOwoJJGVtYWlsX2RvbWFpbiA9IHN0cnRvbG93ZXIoIHN1YnN0ciggc3RycmNociggJGVtYWlsX3JhdywgJ0AnICksIDEgKSApOwoJaWYgKCBpbl9hcnJheSggJGVtYWlsX2RvbWFpbiwgJHNwYW1fZG9tYWlucywgdHJ1ZSApICkgewoJCSRyZWRpcmVjdCA9IGFkZF9xdWVyeV9hcmcoICdnc2JfZm9ybScsICdzdWNjZXNzJywgZ2V0X3Blcm1hbGluaygpICk7CgkJd3Bfc2FmZV9yZWRpcmVjdCggJHJlZGlyZWN0ICk7CgkJZXhpdDsKCX0KCgkvLyBNZXNzYWdlIHNwYW0ga2V5d29yZCBibG9ja2xpc3Qg4oCUIGxpbmtzIGFuZCBjb21tb24gc3BhbSBwaHJhc2VzLgoJJG1lc3NhZ2VfcmF3ID0gaXNzZXQoICRfUE9TVFsnZ3NiX21lc3NhZ2UnXSApID8gc2FuaXRpemVfdGV4dGFyZWFfZmllbGQoIHdwX3Vuc2xhc2goICRfUE9TVFsnZ3NiX21lc3NhZ2UnXSApICkgOiAnJzsKCSRzcGFtX2tleXdvcmRzID0gYXJyYXkoCgkJJ2h0dHA6Ly8nLCAnaHR0cHM6Ly8nLCAnd3d3LicsICcuY29tLycsICcubmV0LycsICcub3JnLycsCgkJJ2Nhc2lubycsICd2aWFncmEnLCAnY2lhbGlzJywgJ2NyeXB0b2N1cnJlbmN5JywgJ2JpdGNvaW4nLCAnY3J5cHRvJywKCQknc2VvIHNlcnZpY2UnLCAnYmFja2xpbmsnLCAnY2hlYXAgbG9hbicsICdtYWtlIG1vbmV5IGZhc3QnLAoJCSdjbGljayBoZXJlJywgJ2J1eSBub3cnLCAnZnJlZSBvZmZlcicsICdsaW1pdGVkIHRpbWUnLAoJKTsKCSRtZXNzYWdlX2xvd2VyID0gc3RydG9sb3dlciggJG1lc3NhZ2VfcmF3ICk7Cglmb3JlYWNoICggJHNwYW1fa2V5d29yZHMgYXMgJGt3ICkgewoJCWlmICggc3RycG9zKCAkbWVzc2FnZV9sb3dlciwgJGt3ICkgIT09IGZhbHNlICkgewoJCQkkcmVkaXJlY3QgPSBhZGRfcXVlcnlfYXJnKCAnZ3NiX2Zvcm0nLCAnc3VjY2VzcycsIGdldF9wZXJtYWxpbmsoKSApOwoJCQl3cF9zYWZlX3JlZGlyZWN0KCAkcmVkaXJlY3QgKTsKCQkJZXhpdDsKCQl9Cgl9CgoJLy8gU2FuaXRpemUgYWxsIGZpZWxkcy4KCSRuYW1lICAgICAgICAgICAgID0gaXNzZXQoICRfUE9TVFsnZ3NiX25hbWUnXSApICAgICAgID8gc2FuaXRpemVfdGV4dF9maWVsZCggd3BfdW5zbGFzaCggJF9QT1NUWydnc2JfbmFtZSddICkgKSAgICAgICAgICA6ICcnOwoJJGJ1c2luZXNzICAgICAgICAgPSBpc3NldCggJF9QT1NUWydnc2JfYnVzaW5lc3MnXSApICAgPyBzYW5pdGl6ZV90ZXh0X2ZpZWxkKCB3cF91bnNsYXNoKCAkX1BPU1RbJ2dzYl9idXNpbmVzcyddICkgKSAgICAgIDogJyc7CgkkZW1haWwgICAgICAgICAgICA9IGlzc2V0KCAkX1BPU1RbJ2dzYl9lbWFpbCddICkgICAgICA/IHNhbml0aXplX2VtYWlsKCB3cF91bnNsYXNoKCAkX1BPU1RbJ2dzYl9lbWFpbCddICkgKSAgICAgICAgICAgICAgOiAnJzsKCSRwaG9uZSAgICAgICAgICAgID0gaXNzZXQoICRfUE9TVFsnZ3NiX3Bob25lJ10gKSAgICAgID8gc2FuaXRpemVfdGV4dF9maWVsZCggd3BfdW5zbGFzaCggJF9QT1NUWydnc2JfcGhvbmUnXSApICkgICAgICAgICA6ICcnOwoJJGVtcGxveWVlcyAgICAgICAgPSBpc3NldCggJF9QT1NUWydnc2JfZW1wbG95ZWVzJ10gKSAgPyBzYW5pdGl6ZV90ZXh0X2ZpZWxkKCB3cF91bnNsYXNoKCAkX1BPU1RbJ2dzYl9lbXBsb3llZXMnXSApICkgICAgIDogJyc7Cgkkc3RhdGUgICAgICAgICAgICA9IGlzc2V0KCAkX1BPU1RbJ2dzYl9zdGF0ZSddICkgICAgICA/IHNhbml0aXplX3RleHRfZmllbGQoIHdwX3Vuc2xhc2goICRfUE9TVFsnZ3NiX3N0YXRlJ10gKSApICAgICAgICAgOiAnJzsKCSRtZXNzYWdlICAgICAgICAgID0gaXNzZXQoICRfUE9TVFsnZ3NiX21lc3NhZ2UnXSApICAgID8gc2FuaXRpemVfdGV4dGFyZWFfZmllbGQoIHdwX3Vuc2xhc2goICRfUE9TVFsnZ3NiX21lc3NhZ2UnXSApICkgICA6ICcnOwoKCS8vIEludGVyZXN0cyBjaGVja2JveGVzLgoJJHJhd19pbnRlcmVzdHMgPSBpc3NldCggJF9QT1NUWydnc2JfaW50ZXJlc3RzJ10gKSAmJiBpc19hcnJheSggJF9QT1NUWydnc2JfaW50ZXJlc3RzJ10gKQoJCT8gJF9QT1NUWydnc2JfaW50ZXJlc3RzJ10gIC8vIHBocGNzOmlnbm9yZSBXb3JkUHJlc3MuU2VjdXJpdHkuVmFsaWRhdGVkU2FuaXRpemVkSW5wdXQuSW5wdXROb3RTYW5pdGl6ZWQKCQk6IGFycmF5KCk7CgoJJGFsbG93ZWRfaW50ZXJlc3RzID0gYXJyYXkoCgkJJ0dyb3VwIE1lZGljYWwnLAoJCSdHcm91cCBEZW50YWwnLAoJCSdHcm91cCBWaXNpb24nLAoJCSdHcm91cCBMaWZlJywKCQknVm9sdW50YXJ5IEJlbmVmaXRzJywKCQknSW5kaXZpZHVhbC9GYW1pbHknLAoJKTsKCgkkaW50ZXJlc3RzID0gYXJyYXkoKTsKCWZvcmVhY2ggKCAkcmF3X2ludGVyZXN0cyBhcyAkaW50ZXJlc3QgKSB7CgkJJGNsZWFuID0gc2FuaXRpemVfdGV4dF9maWVsZCggd3BfdW5zbGFzaCggJGludGVyZXN0ICkgKTsKCQlpZiAoIGluX2FycmF5KCAkY2xlYW4sICRhbGxvd2VkX2ludGVyZXN0cywgdHJ1ZSApICkgewoJCQkkaW50ZXJlc3RzW10gPSAkY2xlYW47CgkJfQoJfQoJJGludGVyZXN0c19zdHIgPSAhIGVtcHR5KCAkaW50ZXJlc3RzICkgPyBpbXBsb2RlKCAnLCAnLCAkaW50ZXJlc3RzICkgOiAnTm90IHNwZWNpZmllZCc7CgoJLy8gQmFzaWMgcmVxdWlyZWQtZmllbGQgdmFsaWRhdGlvbi4KCWlmICggZW1wdHkoICRuYW1lICkgfHwgZW1wdHkoICRlbWFpbCApIHx8ICEgaXNfZW1haWwoICRlbWFpbCApICkgewoJCSRyZWRpcmVjdCA9IGFkZF9xdWVyeV9hcmcoICdnc2JfZm9ybScsICdlcnJvcicsIGdldF9wZXJtYWxpbmsoKSApOwoJCXdwX3NhZmVfcmVkaXJlY3QoICRyZWRpcmVjdCApOwoJCWV4aXQ7Cgl9CgoJLy8gQnVpbGQgdGhlIGVtYWlsIGJvZHkuCgkkdG8gICAgICA9ICdwYXVsQGdhcmRlbnN0YXRlYmVuZWZpdHMuY29tJzsKCSRzdWJqZWN0ID0gJ05ldyBJbnF1aXJ5IGZyb20gJyAuICRuYW1lIC4gKCAkYnVzaW5lc3MgPyAnIOKAlCAnIC4gJGJ1c2luZXNzIDogJycgKTsKCgkkYm9keSAgPSAiTmV3IGNvbnRhY3QgZm9ybSBzdWJtaXNzaW9uIGZyb20gR2FyZGVuU3RhdGVCZW5lZml0cy5jb21cbiI7CgkkYm9keSAuPSBzdHJfcmVwZWF0KCAnLScsIDYwICkgLiAiXG5cbiI7CgkkYm9keSAuPSAnTmFtZTogICAgICAgICAgICAgJyAuICRuYW1lIC4gIlxuIjsKCSRib2R5IC49ICdCdXNpbmVzcyBOYW1lOiAgICAnIC4gKCAkYnVzaW5lc3MgPzogJ04vQScgKSAuICJcbiI7CgkkYm9keSAuPSAnRW1haWw6ICAgICAgICAgICAgJyAuICRlbWFpbCAuICJcbiI7CgkkYm9keSAuPSAnUGhvbmU6ICAgICAgICAgICAgJyAuICggJHBob25lID86ICdOL0EnICkgLiAiXG4iOwoJJGJvZHkgLj0gJ0VtcGxveWVlczogICAgICAgICcgLiAoICRlbXBsb3llZXMgPzogJ04vQScgKSAuICJcbiI7CgkkYm9keSAuPSAnU3RhdGU6ICAgICAgICAgICAgJyAuICggJHN0YXRlID86ICdOL0EnICkgLiAiXG4iOwoJJGJvZHkgLj0gJ0ludGVyZXN0czogICAgICAgICcgLiAkaW50ZXJlc3RzX3N0ciAuICJcblxuIjsKCSRib2R5IC49ICJNZXNzYWdlOlxuIiAuICRtZXNzYWdlIC4gIlxuXG4iOwoJJGJvZHkgLj0gc3RyX3JlcGVhdCggJy0nLCA2MCApIC4gIlxuIjsKCSRib2R5IC49ICdTdWJtaXR0ZWQ6ICcgLiBjdXJyZW50X3RpbWUoICdteXNxbCcgKSAuICJcbiI7CgkkYm9keSAuPSAnSVA6ICcgLiAoIGlzc2V0KCAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSApID8gc2FuaXRpemVfdGV4dF9maWVsZCggd3BfdW5zbGFzaCggJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gKSApIDogJ1Vua25vd24nICkgLiAiXG4iOwoKCSRoZWFkZXJzID0gYXJyYXkoCgkJJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOCcsCgkJJ1JlcGx5LVRvOiAnIC4gJG5hbWUgLiAnIDwnIC4gJGVtYWlsIC4gJz4nLAoJKTsKCgkkc2VudCA9IHdwX21haWwoICR0bywgJHN1YmplY3QsICRib2R5LCAkaGVhZGVycyApOwoKCWlmICggJHNlbnQgKSB7CgkJJHJlZGlyZWN0ID0gYWRkX3F1ZXJ5X2FyZyggJ2dzYl9mb3JtJywgJ3N1Y2Nlc3MnLCBnZXRfcGVybWFsaW5rKCkgKTsKCX0gZWxzZSB7CgkJJHJlZGlyZWN0ID0gYWRkX3F1ZXJ5X2FyZyggJ2dzYl9mb3JtJywgJ2Vycm9yJywgZ2V0X3Blcm1hbGluaygpICk7Cgl9CgoJd3Bfc2FmZV9yZWRpcmVjdCggJHJlZGlyZWN0ICk7CglleGl0Owp9CmFkZF9hY3Rpb24oICdpbml0JywgJ2dzYl9oYW5kbGVfY29udGFjdF9mb3JtJyApOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEhFTFBFUiBGVU5DVElPTlMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgovKioKICogUmV0dXJucyB0aGUgR1NCIGNvbnRhY3QgZm9ybSBIVE1MLgogKiBVc2VkIG9uIHBhZ2UtY29udGFjdC5waHAgYW5kIGFueSBwYWdlIHRoYXQgZW1iZWRzIHRoZSBmb3JtLgogKgogKiBAcmV0dXJuIHN0cmluZyBIVE1MIG1hcmt1cC4KICovCmZ1bmN0aW9uIGdzYl9nZXRfY29udGFjdF9mb3JtKCkgewoJJHN0YXR1cyA9IGlzc2V0KCAkX0dFVFsnZ3NiX2Zvcm0nXSApID8gc2FuaXRpemVfdGV4dF9maWVsZCggd3BfdW5zbGFzaCggJF9HRVRbJ2dzYl9mb3JtJ10gKSApIDogJyc7CgoJJHVzX3N0YXRlcyA9IGFycmF5KAoJCSdBTCcgPT4gJ0FsYWJhbWEnLCAgICAnQUsnID0+ICdBbGFza2EnLCAgICAgICAnQVonID0+ICdBcml6b25hJywgICAgICAnQVInID0+ICdBcmthbnNhcycsCgkJJ0NBJyA9PiAnQ2FsaWZvcm5pYScsICdDTycgPT4gJ0NvbG9yYWRvJywgICAgICdDVCcgPT4gJ0Nvbm5lY3RpY3V0JywgICdERScgPT4gJ0RlbGF3YXJlJywKCQknRkwnID0+ICdGbG9yaWRhJywgICAgJ0dBJyA9PiAnR2VvcmdpYScsICAgICAgJ0hJJyA9PiAnSGF3YWlpJywgICAgICAgJ0lEJyA9PiAnSWRhaG8nLAoJCSdJTCcgPT4gJ0lsbGlub2lzJywgICAnSU4nID0+ICdJbmRpYW5hJywgICAgICAnSUEnID0+ICdJb3dhJywgICAgICAgICAnS1MnID0+ICdLYW5zYXMnLAoJCSdLWScgPT4gJ0tlbnR1Y2t5JywgICAnTEEnID0+ICdMb3Vpc2lhbmEnLCAgICAnTUUnID0+ICdNYWluZScsICAgICAgICAnTUQnID0+ICdNYXJ5bGFuZCcsCgkJJ01BJyA9PiAnTWFzc2FjaHVzZXR0cycsICdNSScgPT4gJ01pY2hpZ2FuJywgICdNTicgPT4gJ01pbm5lc290YScsICAgICdNUycgPT4gJ01pc3Npc3NpcHBpJywKCQknTU8nID0+ICdNaXNzb3VyaScsICAgJ01UJyA9PiAnTW9udGFuYScsICAgICAgJ05FJyA9PiAnTmVicmFza2EnLCAgICAgJ05WJyA9PiAnTmV2YWRhJywKCQknTkgnID0+ICdOZXcgSGFtcHNoaXJlJywgJ05KJyA9PiAnTmV3IEplcnNleScsICdOTScgPT4gJ05ldyBNZXhpY28nLAoJCSdOQycgPT4gJ05vcnRoIENhcm9saW5hJywgJ05EJyA9PiAnTm9ydGggRGFrb3RhJywgJ09IJyA9PiAnT2hpbycsICAgICAnT0snID0+ICdPa2xhaG9tYScsCgkJJ09SJyA9PiAnT3JlZ29uJywgICAgICdQQScgPT4gJ1Blbm5zeWx2YW5pYScsICdSSScgPT4gJ1Job2RlIElzbGFuZCcsICdTQycgPT4gJ1NvdXRoIENhcm9saW5hJywKCQknU0QnID0+ICdTb3V0aCBEYWtvdGEnLCAnVE4nID0+ICdUZW5uZXNzZWUnLCAgJ1RYJyA9PiAnVGV4YXMnLCAgICAgICAgJ1VUJyA9PiAnVXRhaCcsCgkJJ1ZUJyA9PiAnVmVybW9udCcsICAgICdWQScgPT4gJ1ZpcmdpbmlhJywgICAgICdXQScgPT4gJ1dhc2hpbmd0b24nLCAgICdXVicgPT4gJ1dlc3QgVmlyZ2luaWEnLAoJCSdXSScgPT4gJ1dpc2NvbnNpbicsICAnV1knID0+ICdXeW9taW5nJywKCSk7CgoJb2Jfc3RhcnQoKTsKCT8+Cgk8P3BocCBpZiAoICdzdWNjZXNzJyA9PT0gJHN0YXR1cyApIDogPz4KCQk8ZGl2IGNsYXNzPSJmb3JtLXN1Y2Nlc3MiPgoJCQk8c3Bhbj4mIzEwMDAzOzwvc3Bhbj4KCQkJPHNwYW4+VGhhbmsgeW91ISBZb3VyIG1lc3NhZ2UgaGFzIGJlZW4gc2VudC4gUGF1bCB3aWxsIGJlIGluIHRvdWNoIHdpdGggeW91IHNob3J0bHkuPC9zcGFuPgoJCTwvZGl2PgoJPD9waHAgZWxzZWlmICggJ2Vycm9yJyA9PT0gJHN0YXR1cyApIDogPz4KCQk8ZGl2IGNsYXNzPSJmb3JtLWVycm9yIj4KCQkJVGhlcmUgd2FzIGEgcHJvYmxlbSBzZW5kaW5nIHlvdXIgbWVzc2FnZS4gUGxlYXNlIHRyeSBhZ2FpbiBvciBjYWxsIFBhdWwgZGlyZWN0bHkgYXQKCQkJPHN0cm9uZz48YSBocmVmPSJ0ZWw6KzE4NTY4ODA2MzQwIj44NTYtODgwLTYzNDA8L2E+PC9zdHJvbmc+LgoJCTwvZGl2PgoJPD9waHAgZW5kaWY7ID8+CgoJPGZvcm0gY2xhc3M9ImdzYi1mb3JtIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iPD9waHAgZWNobyBlc2NfdXJsKCBnZXRfcGVybWFsaW5rKCkgKTsgPz4iPgoJCTw/cGhwIHdwX25vbmNlX2ZpZWxkKCAnZ3NiX2NvbnRhY3RfZm9ybScsICdnc2JfY29udGFjdF9ub25jZScgKTsgPz4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnc2JfZm9ybV9zdWJtaXQiIHZhbHVlPSIxIj4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnc2JfZm9ybV90aW1lIiB2YWx1ZT0iPD9waHAgZWNobyBlc2NfYXR0ciggdGltZSgpICk7ID8+Ij4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnc2JfanNfdG9rZW4iIGlkPSJnc2JfanNfdG9rZW4iIHZhbHVlPSIiPgoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJnc2Jfd2Vic2l0ZSIgdmFsdWU9IiIgc3R5bGU9ImRpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7IiB0YWJpbmRleD0iLTEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CgoJCTxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KCQkJPGRpdiBjbGFzcz0iZm9ybS1maWVsZCI+CgkJCQk8bGFiZWwgZm9yPSJnc2JfbmFtZSI+RnVsbCBOYW1lIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4qPC9zcGFuPjwvbGFiZWw+CgkJCQk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImdzYl9uYW1lIiBuYW1lPSJnc2JfbmFtZSIgcGxhY2Vob2xkZXI9IkphbmUgU21pdGgiIHJlcXVpcmVkCgkJCQkJICAgdmFsdWU9Ijw/cGhwIGVjaG8gZXNjX2F0dHIoICRfUE9TVFsnZ3NiX25hbWUnXSA/PyAnJyApOyA/PiI+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJmb3JtLWZpZWxkIj4KCQkJCTxsYWJlbCBmb3I9ImdzYl9idXNpbmVzcyI+QnVzaW5lc3MgTmFtZTwvbGFiZWw+CgkJCQk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImdzYl9idXNpbmVzcyIgbmFtZT0iZ3NiX2J1c2luZXNzIiBwbGFjZWhvbGRlcj0iQWNtZSBJbmMuIgoJCQkJCSAgIHZhbHVlPSI8P3BocCBlY2hvIGVzY19hdHRyKCAkX1BPU1RbJ2dzYl9idXNpbmVzcyddID8/ICcnICk7ID8+Ij4KCQkJPC9kaXY+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KCQkJPGRpdiBjbGFzcz0iZm9ybS1maWVsZCI+CgkJCQk8bGFiZWwgZm9yPSJnc2JfZW1haWwiPkVtYWlsIEFkZHJlc3MgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPio8L3NwYW4+PC9sYWJlbD4KCQkJCTxpbnB1dCB0eXBlPSJlbWFpbCIgaWQ9ImdzYl9lbWFpbCIgbmFtZT0iZ3NiX2VtYWlsIiBwbGFjZWhvbGRlcj0iamFuZUBhY21laW5jLmNvbSIgcmVxdWlyZWQKCQkJCQkgICB2YWx1ZT0iPD9waHAgZWNobyBlc2NfYXR0ciggJF9QT1NUWydnc2JfZW1haWwnXSA/PyAnJyApOyA/PiI+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJmb3JtLWZpZWxkIj4KCQkJCTxsYWJlbCBmb3I9ImdzYl9waG9uZSI+UGhvbmUgTnVtYmVyPC9sYWJlbD4KCQkJCTxpbnB1dCB0eXBlPSJ0ZWwiIGlkPSJnc2JfcGhvbmUiIG5hbWU9ImdzYl9waG9uZSIgcGxhY2Vob2xkZXI9Iig1NTUpIDAwMC0wMDAwIgoJCQkJCSAgIHZhbHVlPSI8P3BocCBlY2hvIGVzY19hdHRyKCAkX1BPU1RbJ2dzYl9waG9uZSddID8/ICcnICk7ID8+Ij4KCQkJPC9kaXY+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9ImZvcm0tcm93Ij4KCQkJPGRpdiBjbGFzcz0iZm9ybS1maWVsZCI+CgkJCQk8bGFiZWwgZm9yPSJnc2JfZW1wbG95ZWVzIj5OdW1iZXIgb2YgRW1wbG95ZWVzPC9sYWJlbD4KCQkJCTxzZWxlY3QgaWQ9ImdzYl9lbXBsb3llZXMiIG5hbWU9ImdzYl9lbXBsb3llZXMiPgoJCQkJCTxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IGEgcmFuZ2UuLi48L29wdGlvbj4KCQkJCQk8b3B0aW9uIHZhbHVlPSIyLTEwIiAgPD9waHAgc2VsZWN0ZWQoICRfUE9TVFsnZ3NiX2VtcGxveWVlcyddID8/ICcnLCAnMi0xMCcgKTsgPz4+MuKAkzEwIGVtcGxveWVlczwvb3B0aW9uPgoJCQkJCTxvcHRpb24gdmFsdWU9IjExLTI1IiA8P3BocCBzZWxlY3RlZCggJF9QT1NUWydnc2JfZW1wbG95ZWVzJ10gPz8gJycsICcxMS0yNScgKTsgPz4+MTHigJMyNSBlbXBsb3llZXM8L29wdGlvbj4KCQkJCQk8b3B0aW9uIHZhbHVlPSIyNi01MCIgPD9waHAgc2VsZWN0ZWQoICRfUE9TVFsnZ3NiX2VtcGxveWVlcyddID8/ICcnLCAnMjYtNTAnICk7ID8+PjI24oCTNTAgZW1wbG95ZWVzPC9vcHRpb24+CgkJCQkJPG9wdGlvbiB2YWx1ZT0iNTArIiAgIDw/cGhwIHNlbGVjdGVkKCAkX1BPU1RbJ2dzYl9lbXBsb3llZXMnXSA/PyAnJywgJzUwKycgKTsgPz4+NTArIGVtcGxveWVlczwvb3B0aW9uPgoJCQkJPC9zZWxlY3Q+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJmb3JtLWZpZWxkIj4KCQkJCTxsYWJlbCBmb3I9ImdzYl9zdGF0ZSI+U3RhdGU8L2xhYmVsPgoJCQkJPHNlbGVjdCBpZD0iZ3NiX3N0YXRlIiBuYW1lPSJnc2Jfc3RhdGUiPgoJCQkJCTxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IHlvdXIgc3RhdGUuLi48L29wdGlvbj4KCQkJCQk8P3BocCBmb3JlYWNoICggJHVzX3N0YXRlcyBhcyAkYWJiciA9PiAkZnVsbCApIDogPz4KCQkJCQkJPG9wdGlvbiB2YWx1ZT0iPD9waHAgZWNobyBlc2NfYXR0ciggJGFiYnIgKTsgPz4iCgkJCQkJCQk8P3BocCBzZWxlY3RlZCggJF9QT1NUWydnc2Jfc3RhdGUnXSA/PyAnJywgJGFiYnIgKTsgPz4+CgkJCQkJCQk8P3BocCBlY2hvIGVzY19odG1sKCAkZnVsbCApOyA/PgoJCQkJCQk8L29wdGlvbj4KCQkJCQk8P3BocCBlbmRmb3JlYWNoOyA/PgoJCQkJPC9zZWxlY3Q+CgkJCTwvZGl2PgoJCTwvZGl2PgoKCQk8ZGl2IGNsYXNzPSJmb3JtLWZpZWxkIj4KCQkJPGxhYmVsPldoYXQgYXJlIHlvdSBpbnRlcmVzdGVkIGluPzwvbGFiZWw+CgkJCTxkaXYgY2xhc3M9ImZvcm0tY2hlY2tib3hlcyI+CgkJCQk8P3BocAoJCQkJJGludGVyZXN0c19vcHRpb25zID0gYXJyYXkoCgkJCQkJJ0dyb3VwIE1lZGljYWwnLAoJCQkJCSdHcm91cCBEZW50YWwnLAoJCQkJCSdHcm91cCBWaXNpb24nLAoJCQkJCSdHcm91cCBMaWZlJywKCQkJCQknVm9sdW50YXJ5IEJlbmVmaXRzJywKCQkJCQknSW5kaXZpZHVhbC9GYW1pbHknLAoJCQkJKTsKCQkJCSRzZWxlY3RlZF9pbnRlcmVzdHMgPSBpc3NldCggJF9QT1NUWydnc2JfaW50ZXJlc3RzJ10gKSAmJiBpc19hcnJheSggJF9QT1NUWydnc2JfaW50ZXJlc3RzJ10gKQoJCQkJCT8gYXJyYXlfbWFwKCAnc2FuaXRpemVfdGV4dF9maWVsZCcsICRfUE9TVFsnZ3NiX2ludGVyZXN0cyddICkKCQkJCQk6IGFycmF5KCk7CgkJCQlmb3JlYWNoICggJGludGVyZXN0c19vcHRpb25zIGFzICRvcHQgKSA6CgkJCQkJJGNoZWNrZWQgPSBpbl9hcnJheSggJG9wdCwgJHNlbGVjdGVkX2ludGVyZXN0cywgdHJ1ZSApID8gJ2NoZWNrZWQnIDogJyc7CgkJCQk/PgoJCQkJCTxsYWJlbD4KCQkJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJnc2JfaW50ZXJlc3RzW10iCgkJCQkJCQkgICB2YWx1ZT0iPD9waHAgZWNobyBlc2NfYXR0ciggJG9wdCApOyA/PiIgPD9waHAgZWNobyBlc2NfYXR0ciggJGNoZWNrZWQgKTsgPz4+CgkJCQkJCTw/cGhwIGVjaG8gZXNjX2h0bWwoICRvcHQgKTsgPz4KCQkJCQk8L2xhYmVsPgoJCQkJPD9waHAgZW5kZm9yZWFjaDsgPz4KCQkJPC9kaXY+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9ImZvcm0tZmllbGQiPgoJCQk8bGFiZWwgZm9yPSJnc2JfbWVzc2FnZSI+TWVzc2FnZTwvbGFiZWw+CgkJCTx0ZXh0YXJlYSBpZD0iZ3NiX21lc3NhZ2UiIG5hbWU9ImdzYl9tZXNzYWdlIgoJCQkJCSAgcGxhY2Vob2xkZXI9IlRlbGwgdXMgYSBsaXR0bGUgYWJvdXQgeW91ciBidXNpbmVzcyBhbmQgd2hhdCB5b3UncmUgbG9va2luZyBmb3IuLi4iPjw/cGhwIGVjaG8gZXNjX3RleHRhcmVhKCAkX1BPU1RbJ2dzYl9tZXNzYWdlJ10gPz8gJycgKTsgPz48L3RleHRhcmVhPgoJCTwvZGl2PgoKCQk8ZGl2IGNsYXNzPSJmb3JtLXN1Ym1pdC1yb3ciPgoJCQk8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tLXByaW1hcnkgYnRuLS1sZyI+U2VuZCBNZXNzYWdlPC9idXR0b24+CgkJCTxzcGFuIGNsYXNzPSJmb3JtLXByaXZhY3ktbm90ZSI+WW91ciBpbmZvcm1hdGlvbiBpcyBuZXZlciBzaGFyZWQgb3Igc29sZC48L3NwYW4+CgkJPC9kaXY+Cgk8L2Zvcm0+Cgk8c2NyaXB0PgoJKGZ1bmN0aW9uKCl7CgkJdmFyIGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3NiX2pzX3Rva2VuJyk7CgkJaWYoZil7IGYudmFsdWUgPSAnZ3NiXycgKyBEYXRlLm5vdygpICsgJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiw3KTsgfQoJfSkoKTsKCTwvc2NyaXB0PgoJPD9waHAKCXJldHVybiBvYl9nZXRfY2xlYW4oKTsKfQoKLyoqCiAqIFJldHVybnMgYW4gYXJyYXkgb2YgVVMgc3RhdGVzIGxpY2Vuc2VkIGJ5IEdTQi4KICoKICogQHJldHVybiBhcnJheQogKi8KZnVuY3Rpb24gZ3NiX2xpY2Vuc2VkX3N0YXRlcygpIHsKCXJldHVybiBhcnJheSggJ0FMJywgJ0FaJywgJ0NBJywgJ0NPJywgJ0lBJywgJ0lEJywgJ0lOJywgJ0tTJywgJ0tZJywgJ0xBJywgJ01BJywgJ01EJywgJ01JJywgJ05DJywgJ05KJywgJ05WJywgJ09IJywgJ1BBJywgJ1NDJywgJ1ROJywgJ1RYJywgJ1VUJywgJ1ZBJywgJ1dBJyApOwp9CgovKioKICogT3V0cHV0cyBhIHN0YXRlIGJhZGdlIGdyaWQuCiAqLwpmdW5jdGlvbiBnc2JfcmVuZGVyX3N0YXRlc19ncmlkKCkgewoJJHN0YXRlcyA9IGdzYl9saWNlbnNlZF9zdGF0ZXMoKTsKCSRmdWxsX25hbWVzID0gYXJyYXkoCgkJJ0FMJyA9PiAnQWxhYmFtYScsICAgICAgICdBWicgPT4gJ0FyaXpvbmEnLCAgICAgJ0NBJyA9PiAnQ2FsaWZvcm5pYScsICdDTycgPT4gJ0NvbG9yYWRvJywKCQknSUEnID0+ICdJb3dhJywgICAgICAgICAgJ0lEJyA9PiAnSWRhaG8nLCAgICAgICAgJ0lOJyA9PiAnSW5kaWFuYScsICAgICdLUycgPT4gJ0thbnNhcycsCgkJJ0tZJyA9PiAnS2VudHVja3knLCAgICAgICdMQScgPT4gJ0xvdWlzaWFuYScsICAgICdNQScgPT4gJ01hc3NhY2h1c2V0dHMnLCAnTUQnID0+ICdNYXJ5bGFuZCcsCgkJJ01JJyA9PiAnTWljaGlnYW4nLCAgICAgICdOQycgPT4gJ05vcnRoIENhcm9saW5hJywgJ05KJyA9PiAnTmV3IEplcnNleScsICdOVicgPT4gJ05ldmFkYScsCgkJJ09IJyA9PiAnT2hpbycsICAgICAgICAgICdQQScgPT4gJ1Blbm5zeWx2YW5pYScsICdTQycgPT4gJ1NvdXRoIENhcm9saW5hJywgJ1ROJyA9PiAnVGVubmVzc2VlJywKCQknVFgnID0+ICdUZXhhcycsICAgICAgICAgJ1VUJyA9PiAnVXRhaCcsICAgICAgICAgJ1ZBJyA9PiAnVmlyZ2luaWEnLCAgICdXQScgPT4gJ1dhc2hpbmd0b24nLAoJKTsKCWVjaG8gJzxkaXYgY2xhc3M9InN0YXRlcy1ncmlkIj4nOwoJZm9yZWFjaCAoICRzdGF0ZXMgYXMgJGFiYnIgKSB7CgkJJGZ1bGwgPSAkZnVsbF9uYW1lc1sgJGFiYnIgXSA/PyAkYWJicjsKCQllY2hvICc8ZGl2IGNsYXNzPSJzdGF0ZS1iYWRnZSIgdGl0bGU9IicgLiBlc2NfYXR0ciggJGZ1bGwgKSAuICciPicgLiBlc2NfaHRtbCggJGFiYnIgKSAuICc8L2Rpdj4nOwoJfQoJZWNobyAnPC9kaXY+JzsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEVYQ0VSUFQgTEVOR1RICiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKZnVuY3Rpb24gZ3NiX2V4Y2VycHRfbGVuZ3RoKCAkbGVuZ3RoICkgewoJcmV0dXJuIDI1Owp9CmFkZF9maWx0ZXIoICdleGNlcnB0X2xlbmd0aCcsICdnc2JfZXhjZXJwdF9sZW5ndGgnLCA5OTkgKTsKCmZ1bmN0aW9uIGdzYl9leGNlcnB0X21vcmUoICRtb3JlICkgewoJcmV0dXJuICcmaGVsbGlwOyc7Cn0KYWRkX2ZpbHRlciggJ2V4Y2VycHRfbW9yZScsICdnc2JfZXhjZXJwdF9tb3JlJyApOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEJPRFkgQ0xBU1MgSEVMUEVSCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKZnVuY3Rpb24gZ3NiX2JvZHlfY2xhc3NlcyggJGNsYXNzZXMgKSB7CglpZiAoIGlzX2Zyb250X3BhZ2UoKSApIHsKCQkkY2xhc3Nlc1tdID0gJ2lzLWZyb250LXBhZ2UnOwoJfQoJcmV0dXJuICRjbGFzc2VzOwp9CmFkZF9maWx0ZXIoICdib2R5X2NsYXNzJywgJ2dzYl9ib2R5X2NsYXNzZXMnICk7CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRElTQUJMRSBFTU9KSSAoUEVSRk9STUFOQ0UpCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKZnVuY3Rpb24gZ3NiX2Rpc2FibGVfZW1vamlzKCkgewoJcmVtb3ZlX2FjdGlvbiggJ3dwX2hlYWQnLCAncHJpbnRfZW1vamlfZGV0ZWN0aW9uX3NjcmlwdCcsIDcgKTsKCXJlbW92ZV9hY3Rpb24oICdhZG1pbl9wcmludF9zY3JpcHRzJywgJ3ByaW50X2Vtb2ppX2RldGVjdGlvbl9zY3JpcHQnICk7CglyZW1vdmVfYWN0aW9uKCAnd3BfcHJpbnRfc3R5bGVzJywgJ3ByaW50X2Vtb2ppX3N0eWxlcycgKTsKCXJlbW92ZV9hY3Rpb24oICdhZG1pbl9wcmludF9zdHlsZXMnLCAncHJpbnRfZW1vamlfc3R5bGVzJyApOwoJcmVtb3ZlX2ZpbHRlciggJ3RoZV9jb250ZW50X2ZlZWQnLCAnd3Bfc3RhdGljaXplX2Vtb2ppJyApOwoJcmVtb3ZlX2ZpbHRlciggJ2NvbW1lbnRfdGV4dF9yc3MnLCAnd3Bfc3RhdGljaXplX2Vtb2ppJyApOwoJcmVtb3ZlX2ZpbHRlciggJ3dwX21haWwnLCAnd3Bfc3RhdGljaXplX2Vtb2ppX2Zvcl9lbWFpbCcgKTsKfQphZGRfYWN0aW9uKCAnaW5pdCcsICdnc2JfZGlzYWJsZV9lbW9qaXMnICk7CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgUkVHSVNURVIgWU9BU1QgU0VPIE1FVEEgRklFTERTIEZPUiBSRVNUIEFQSSBBQ0NFU1MKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgphZGRfYWN0aW9uKCAnaW5pdCcsIGZ1bmN0aW9uKCkgewoJJHlvYXN0X2ZpZWxkcyA9IGFycmF5KAoJCSdfeW9hc3Rfd3BzZW9fZm9jdXNrdycgICA9PiAnc3RyaW5nJywKCQknX3lvYXN0X3dwc2VvX3RpdGxlJyAgICAgPT4gJ3N0cmluZycsCgkJJ195b2FzdF93cHNlb19tZXRhZGVzYycgID0+ICdzdHJpbmcnLAoJCSdfeW9hc3Rfd3BzZW9fY2Fub25pY2FsJyA9PiAnc3RyaW5nJywKCSk7Cglmb3JlYWNoICggJHlvYXN0X2ZpZWxkcyBhcyAka2V5ID0+ICR0eXBlICkgewoJCWZvcmVhY2ggKCBhcnJheSggJ3Bvc3QnLCAncGFnZScgKSBhcyAkcG9zdF90eXBlICkgewoJCQlyZWdpc3Rlcl9tZXRhKCAkcG9zdF90eXBlLCAka2V5LCBhcnJheSgKCQkJCSd0eXBlJyAgICAgICAgICA9PiAkdHlwZSwKCQkJCSdzaW5nbGUnICAgICAgICA9PiB0cnVlLAoJCQkJJ3Nob3dfaW5fcmVzdCcgID0+IHRydWUsCgkJCQknYXV0aF9jYWxsYmFjaycgPT4gZnVuY3Rpb24oKSB7IHJldHVybiBjdXJyZW50X3VzZXJfY2FuKCAnZWRpdF9wb3N0cycgKTsgfSwKCQkJKSApOwoJCX0KCX0KfSApOwo= https://gardenstatebenefits.com/post-sitemap.xml 2026-07-15T09:00:00+00:00 https://gardenstatebenefits.com/page-sitemap.xml 2026-05-28T21:57:02+00:00 https://gardenstatebenefits.com/category-sitemap.xml 2026-07-15T09:00:00+00:00 https://gardenstatebenefits.com/author-sitemap.xml 2026-05-28T19:08:26+00:00