SF.net SVN: phpwiki:[11091] trunk/passencrypt.php
carstenklapp--- via phpwiki-checkins <[email protected]> Thu, 13 Feb 2025 23:58:12 +0000
| Newsgroups | gmane.comp.web.wiki.phpwiki.checkins |
|---|---|
| Message-ID | <[email protected]> |
UmV2aXNpb246IDExMDkxCiAgICAgICAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvcGhwd2lr aS9jb2RlLzExMDkxCkF1dGhvcjogICBjYXJzdGVua2xhcHAKRGF0ZTogICAgIDIwMjUtMDItMTMg MjM6NTg6MTIgKzAwMDAgKFRodSwgMTMgRmViIDIwMjUpCkxvZyBNZXNzYWdlOgotLS0tLS0tLS0t LQpJbXByb3ZlIHBhc3N3b3JkIGVuY3J5cHRpb24gYW5kIHJhbmRvbSBwdyBnZW5lcmF0aW9uLCBh ZGRlZCBjb3B5IHRvIGNsaXBib2FyZCBidXR0b25zCgpNb2RpZmllZCBQYXRoczoKLS0tLS0tLS0t LS0tLS0KICAgIHRydW5rL3Bhc3NlbmNyeXB0LnBocAoKTW9kaWZpZWQ6IHRydW5rL3Bhc3NlbmNy eXB0LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSB0cnVuay9wYXNzZW5jcnlwdC5waHAJMjAyNS0wMi0xMyAy MzoyNDo1MyBVVEMgKHJldiAxMTA5MCkKKysrIHRydW5rL3Bhc3NlbmNyeXB0LnBocAkyMDI1LTAy LTEzIDIzOjU4OjEyIFVUQyAocmV2IDExMDkxKQpAQCAtMiw5ICsyLDkgQEAKIDxodG1sIHhtbDps YW5nPSJlbiIgbGFuZz0iZW4iPgogPGhlYWQ+CiAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+ Ci0gICAgPHRpdGxlPlBhc3N3b3JkIEVuY3J5cHRpb24gVG9vbDwvdGl0bGU+CisgICAgPHRpdGxl PlBhc3N3b3JkIEVuY3J5cHRpb24gVG9vbCAyPC90aXRsZT4KICAgICA8IS0tCi0gICAgQ29weXJp Z2h0IMKpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIgJFRoZVBocFdpa2lQcm9ncmFtbWluZ1RlYW0K KyAgICBDb3B5cmlnaHQgwqkgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMi0yMDI1ICRUaGVQaHBXaWtp UHJvZ3JhbW1pbmdUZWFtCiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBQaHBXaWtpLgogCkBA IC0yNSw5ICsyNSw1MyBAQAogICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9y LWxhdGVyCiAKICAgICAtLT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tCitib2R5IHsK KyAgICBjb2xvcjogYmxhY2s7CisgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgYm9yZGVyLXRv cDogMXB4IHNvbGlkICM3YzdjN2M7CisgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjYzNjM2Mz OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkZGRkOworICAgIGJvcmRlci1yaWdo dDogMXB4IHNvbGlkICNjM2MzYzM7CisgICAgcGFkZGluZy1sZWZ0OiAwLjhlbTsKKyAgICBwYWRk aW5nLXJpZ2h0OiAwLjhlbTsKKyAgICBwYWRkaW5nLXRvcDogMC41ZW07CisgICAgcGFkZGluZy1i b3R0b206IDAuNWVtOworCisgICAgbWFyZ2luOiAyZXg7Cit9CitwIHsKKyAgICBsaW5lLWhlaWdo dDogNGV4OworfQorc2FtcCwKKy5maWxlbmFtZSB7CisgICAgZm9udC1mYW1pbHk6IE1vbmFjbywg bW9ub3NwYWNlOworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorc2FtcCB7CisgICAgYmFja2dy b3VuZDogd2hpdGU7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM3YzdjN2M7CisgICAgYm9y ZGVyLWxlZnQ6IDFweCBzb2xpZCAjYzNjM2MzOworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xp ZCAjZGRkZGRkOworICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjM2MzYzM7CisgICAgcGFk ZGluZy1sZWZ0OiAwLjhlbTsKKyAgICBwYWRkaW5nLXJpZ2h0OiAwLjhlbTsKKyAgICBwYWRkaW5n LXRvcDogMC41ZW07CisgICAgcGFkZGluZy1ib3R0b206IDAuNWVtOworICAgIG1hcmdpbjogMC41 ZXggMDsKKyAgICBtYXJnaW4tbGVmdDogMWV4OworICAgIGNsZWFyOiBib3RoOworICAgIGRpc3Bs YXk6IHRhYmxlOworfQorZmllbGRzZXQgeworICAgZGlzcGxheTogaW5saW5lOworfQorLS0+Cis8 L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+Ci08aDE+UGFzc3dvcmQgRW5jcnlwdGlvbiBUb29sPC9o MT4KKzxoMT5QYXNzd29yZCBFbmNyeXB0aW9uIFRvb2wgMjwvaDE+CiA8P3BocAogZnVuY3Rpb24g cmFuZF9hc2NpaSgkbGVuZ3RoID0gMSkKIHsKQEAgLTQ0LDExICs4OCwxMyBAQAogLy8gc3VpdGFi bGUgZm9yIHVzZXIgcGFzc3dvcmRzLgogLy8gU2VxdWVuY2Ugb2YgcmFuZG9tIEFTQ0lJIG51bWJl cnMsIGxldHRlcnMgYW5kIHNvbWUgc3BlY2lhbCBjaGFycy4KIC8vIE5vdGU6IFRoZXJlIGV4aXN0 IG90aGVyIGFsZ29yaXRobXMgZm9yIGVhc3ktdG8tcmVtZW1iZXIgcGFzc3dvcmRzLgotZnVuY3Rp b24gcmFuZG9tX2dvb2RfcGFzc3dvcmQoJG1pbmxlbmd0aCA9IDUsICRtYXhsZW5ndGggPSA4KQor ZnVuY3Rpb24gcmFuZG9tX2dvb2RfcGFzc3dvcmQoJG1pbmxlbmd0aCA9IDYsICRtYXhsZW5ndGgg PSA2NCkKIHsKLSAgICAkbmV3cGFzcyA9ICcnOworICAgICRnZW5lcmF0ZWRfcHcgPSAnJzsKICAg ICAvLyBhc3N1bWUgQVNDSUkgb3JkZXJpbmcgKG5vdCB2YWxpZCBvbiBFQkNESUMgc3lzdGVtcyEp Ci0gICAgJHZhbGlkX2NoYXJzID0gIiEjJSYrLS4wMTIzNDU2Nzg5PUBBQkNERUZHSElKS0xNTk9Q UVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisgICAgJHZhbGlkX2NoYXJz ID0gIiEjJSYrLS4wMTIzNDU2Nzg5PUBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZn aGlqa2xtbm9wcXJzdHV2d3h5eiI7IC8vaW5jbHVkZWVzIHNvbWUgc3BlY2lhbCBjaGFycworICAg IC8vJHZhbGlkX2NoYXJzID0gIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFi Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsvL2tlZXAgaXQgc2ltcGxlCisgICAgLy9yZXR1cm4g c3Vic3RyKHN0cl9zaHVmZmxlKCR2YWxpZF9jaGFycyksIDAsICRtYXhsZW5ndGgpOy8vYmFzaWMg bWV0aG9kCiAgICAgJHN0YXJ0ID0gb3JkKCR2YWxpZF9jaGFycyk7CiAgICAgJGVuZCA9IG9yZChz dWJzdHIoJHZhbGlkX2NoYXJzLCAtMSkpOwogICAgICRsZW5ndGggPSBtdF9yYW5kKCRtaW5sZW5n dGgsICRtYXhsZW5ndGgpOwpAQCAtNTcsMTIgKzEwMyw0MCBAQAogICAgICAgICBpZiAoIXN0cnJw b3MoJHZhbGlkX2NoYXJzLCAkbmV3Y2hhcikpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg ICAgICB9IC8vIHNraXAgaG9sZXMKLSAgICAgICAgJG5ld3Bhc3MgLj0gc3ByaW50ZigiJWMiLCAk bmV3Y2hhcik7CisgICAgICAgICRnZW5lcmF0ZWRfcHcgLj0gc3ByaW50ZigiJWMiLCAkbmV3Y2hh cik7CiAgICAgICAgICRsZW5ndGgtLTsKICAgICB9Ci0gICAgcmV0dXJuICRuZXdwYXNzOworICAg IHJldHVybiAkZ2VuZXJhdGVkX3B3OwogfQogCisvKioKKyAqIEdlbmVyYXRlIGEgcmFuZG9tIHN0 cmluZywgdXNpbmcgYSBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgCisgKiBwc2V1ZG9yYW5kb20g bnVtYmVyIGdlbmVyYXRvciAocmFuZG9tX2ludCkKKyAqIAorICogRm9yIFBIUCA3LCByYW5kb21f aW50IGlzIGEgUEhQIGNvcmUgZnVuY3Rpb24KKyAqIEZvciBQSFAgNS54LCBkZXBlbmRzIG9uIGh0 dHBzOi8vZ2l0aHViLmNvbS9wYXJhZ29uaWUvcmFuZG9tX2NvbXBhdAorICogCisgKiBAcGFyYW0g aW50ICRsZW5ndGggICAgICBIb3cgbWFueSBjaGFyYWN0ZXJzIGRvIHdlIHdhbnQ/CisgKiBAcGFy YW0gc3RyaW5nICRrZXlzcGFjZSBBIHN0cmluZyBvZiBhbGwgcG9zc2libGUgY2hhcmFjdGVycwor ICogICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2VsZWN0IGZyb20KKyAqIEByZXR1cm4gc3Ry aW5nCisgKi8KK2Z1bmN0aW9uIHJhbmRvbV9zZWN1cmVfcGFzc3dvcmQoCisgICAgJG1pbmxlbiA9 IDAsCisgICAgJG1heGxlbiA9IDEwLAorICAgICRrZXlzcGFjZSA9ICchIyUmKy0uMDEyMzQ1Njc4 OT1AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXon KQoreworICAgICRnZW5lcmF0ZWRfcHcgPSAnJzsKKyAgICAkbWF4ID0gbWJfc3RybGVuKCRrZXlz cGFjZSwgJzhiaXQnKSAtIDE7CisgICAgaWYgKCRtYXggPCAxKSB7CisgICAgICAgIHRocm93IG5l dyBFeGNlcHRpb24oJyRrZXlzcGFjZSBtdXN0IGJlIGF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzIGxv bmcnKTsKKyAgICB9CisgICAgZm9yICgkaSA9IDA7ICRpIDwgJG1heGxlbjsgKyskaSkgeworICAg ICAgICAkZ2VuZXJhdGVkX3B3IC49ICRrZXlzcGFjZVtyYW5kb21faW50KCRtaW5sZW4sICRtYXgp XTsKKyAgICB9CisgICAgcmV0dXJuICRnZW5lcmF0ZWRfcHc7Cit9CisKIC8qKiBQSFA1IGRlcHJl Y2F0ZWQgb2xkLXN0eWxlIGdsb2JhbHMgaWYgIShib29sKWluaV9nZXQoJ3JlZ2lzdGVyX2xvbmdf YXJyYXlzJykuCiAgKiAgU2VlIEJ1ZyAjMTE4MDExNQogICogV2Ugd2FudCB0byB3b3JrIHdpdGgg dGhvc2Ugb2xkIG9uZXMgaW5zdGVhZCBvZiB0aGUgbmV3IHN1cGVyZ2xvYmFscywKQEAgLTc3LDYy ICsxNTEsMTY1IEBACiAKICRwb3N0ZWQgPSAkR0xPQkFMU1snSFRUUF9QT1NUX1ZBUlMnXTsKIGlm ICghZW1wdHkoJHBvc3RlZFsnY3JlYXRlJ10pKSB7Ci0gICAgJG5ld19wYXNzd29yZCA9IHJhbmRv bV9nb29kX3Bhc3N3b3JkKCk7Ci0gICAgZWNobyAiPHA+VGhlIG5ld2x5IGNyZWF0ZWQgcmFuZG9t IHBhc3N3b3JkIGlzOjxiciAvPlxuPGJyIC8+Jm5ic3A7Jm5ic3A7Jm5ic3A7XG48c2FtcD48c3Ry b25nPiIsCi0gICAgaHRtbGVudGl0aWVzKCRuZXdfcGFzc3dvcmQpLCAiPC9zdHJvbmc+PC9zYW1w PjwvcD5cbiI7CisgICAgLy8kbmV3X3Bhc3N3b3JkID0gcmFuZG9tX2dvb2RfcGFzc3dvcmQoKTsK KyAgICAkbmV3X3Bhc3N3b3JkID0gcmFuZG9tX3NlY3VyZV9wYXNzd29yZCgpOworICAgIGVjaG8g IjxoMj5SYW5kb21seSBnZW5lcmF0ZWQgcGFzc3dvcmQ8L2gyPlxuIjsKKyAgICBlY2hvICI8cD5U aGUgbmV3bHkgZ2VuZXJhdGVkIHVuZW5jcnlwdGVkIHJhbmRvbSBwYXNzd29yZCBpczogPHNhbXA+ IiwKKyAgICBodG1sZW50aXRpZXMoJG5ld19wYXNzd29yZCksICI8L3NhbXA+PC9wPlxuIjsKKz8+ CisgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbGVudGl0aWVz KCRuZXdfcGFzc3dvcmQsCisgICAgICAgIEVOVF9RVU9URVMsICdVVEYtOCcpOyA/PiIgaWQ9Imdl bmVyYXRlZF9wd190ZXh0Ij4KKyAgICA8YnV0dG9uIG9uY2xpY2s9ImNvcHlUb0NsaXBib2FyZF9w dygpIj5Db3B5IGdlbmVyYXRlZCBwYXNzd29yZCB0byBjbGlwYm9hcmQ8L2J1dHRvbj4KKworICAg IDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIGNvcHlUb0NsaXBib2FyZF9wdygpIHsKKyAgICAg ICAgICAgIHZhciBjb3B5VGV4dF9wdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnZW5lcmF0 ZWRfcHdfdGV4dCIpOworICAgICAgICAgICAgY29weVRleHRfcHcuc2VsZWN0KCk7CisgICAgICAg ICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb3B5VGV4dF9wdy52YWx1ZSkKKyAg ICAgICAgICAgIGFsZXJ0KCJDb3BpZWQgdGhlIHVuZW5jcnlwZWQgcGFzc3dvcmQ6XG4iICsgY29w eVRleHRfcHcudmFsdWUpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPGhyIC8+Cis8 P3BocAogICAgICRwb3N0ZWRbJ3Bhc3N3b3JkJ10gPSAkbmV3X3Bhc3N3b3JkOwogICAgICRwb3N0 ZWRbJ3Bhc3N3b3JkMiddID0gJG5ld19wYXNzd29yZDsKIH0KKyAgICBpZiAoICgkcG9zdGVkKSAm JiAoJHBvc3RlZFsncGFzc3dvcmQnXSAhPSAiIikKKyAgICAgICAgJiYgKCRwb3N0ZWRbJ3Bhc3N3 b3JkJ10gPT0gJHBvc3RlZFsncGFzc3dvcmQyJ10pCisgICAgKQoreworICAgICRwYXNzd29yZCA9 ICRwb3N0ZWRbJ3Bhc3N3b3JkJ107CisgICAgJHBhc3N3b3JkMiA9ICRwb3N0ZWRbJ3Bhc3N3b3Jk MiddOwogCi1pZiAoKCRwb3N0ZWRbJ3Bhc3N3b3JkJ10gIT0gIiIpCi0gICAgJiYgKCRwb3N0ZWRb J3Bhc3N3b3JkJ10gPT0gJHBvc3RlZFsncGFzc3dvcmQyJ10pCi0pIHsKLSAgICAkcGFzc3dvcmQg PSAkcG9zdGVkWydwYXNzd29yZCddOwotICAgIC8qKgotICAgICAqIGh0dHBzOi8vd3d3LnBocC5u ZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmNyeXB0LnBocAotICAgICAqLwotICAgIC8vIFVzZSB0aGUg bWF4aW11bSBzYWx0IGxlbmd0aCB0aGUgc3lzdGVtIGNhbiBoYW5kbGUuCi0gICAgJHNhbHRfbGVu Z3RoID0gbWF4KAotICAgICAgICBDUllQVF9TQUxUX0xFTkdUSCwKLSAgICAgICAgMiAqIENSWVBU X1NURF9ERVMsCi0gICAgICAgIDkgKiBDUllQVF9FWFRfREVTLAotICAgICAgICAxMiAqIENSWVBU X01ENSwKLSAgICAgICAgMTYgKiBDUllQVF9CTE9XRklTSAotICAgICk7Ci0gICAgLy8gR2VuZXJh dGUgdGhlIGVuY3J5cHRlZCBwYXNzd29yZC4KLSAgICAkZW5jcnlwdGVkX3Bhc3N3b3JkID0gY3J5 cHQoJHBhc3N3b3JkLCByYW5kX2FzY2lpKCRzYWx0X2xlbmd0aCkpOwotICAgICRkZWJ1ZyA9ICRI VFRQX0dFVF9WQVJTWydkZWJ1ZyddOwotICAgIGlmICgkZGVidWcpIHsKLSAgICAgICAgZWNobyAi VGhlIHBhc3N3b3JkIHdhcyBlbmNyeXB0ZWQgdXNpbmcgYSBzYWx0IGxlbmd0aCBvZjogJHNhbHRf bGVuZ3RoPGJyIC8+XG4iOworICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCdwYXNzd29yZF9oYXNo JykpIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFs L2VuL2Z1bmN0aW9uLmNyeXB0LnBocAorICAgICAgICAgKi8KKyAgICAgICAgLy8gVXNlIHRoZSBt YXhpbXVtIHNhbHQgbGVuZ3RoIHRoZSBzeXN0ZW0gY2FuIGhhbmRsZS4KKyAgICAgICAgJHNhbHRf bGVuZ3RoID0gbWF4KAorICAgICAgICAgICAgQ1JZUFRfU0FMVF9MRU5HVEgsCisgICAgICAgICAg ICAyICogQ1JZUFRfU1REX0RFUywgLy8gMiBjaGFyYWN0ZXIgc2FsdAorICAgICAgICAgICAgOSAq IENSWVBUX0VYVF9ERVMsCisgICAgICAgICAgICAxMiAqIENSWVBUX01ENSwKKyAgICAgICAgICAg IDE2ICogQ1JZUFRfQkxPV0ZJU0gKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBvdGhlcnMgYnV0 IEkgZG9uJ3Qga25vdyB0aGVpciBsZW5ndGhzCisgICAgICAgICk7CisgICAgICAgIC8vIEdlbmVy YXRlIHRoZSBlbmNyeXB0ZWQgcGFzc3dvcmQuCisgICAgICAgICRyYW5kYXNjaWk9cmFuZF9hc2Np aSgkc2FsdF9sZW5ndGgpOworICAgICAgICAkZW5jcnlwdGVkX3Bhc3N3b3JkID0gY3J5cHQoJHBh c3N3b3JkLCAkcmFuZGFzY2lpKTsKKyAgICAgICAgJGRlYnVnPTA7CisgICAgICAgIGlmIChpc3Nl dCgkSFRUUF9HRVRfVkFSU1snZGVidWcnXSkpIHsKKyAgICAgICAgICAgICRkZWJ1ZyA9ICRIVFRQ X0dFVF9WQVJTWydkZWJ1ZyddOworICAgICAgICB9CisgICAgICAgIGlmICgkZGVidWcpIHsKKyAg ICAgICAgICAgIGVjaG8gIjxwPlwkcmFuZGFzY2lpPSA8c2FtcD4iLmh0bWxlbnRpdGllcygkcmFu ZGFzY2lpLCBFTlRfUVVPVEVTLAorICAgICAgICAgICAgICAgICdVVEYtOCcpLiI8L3NhbXA+PC9w PlxuIjsKKyAgICAgICAgICAgIGVjaG8gIjxwPlRoZSBwYXNzd29yZCB3YXMgZW5jcnlwdGVkIHVz aW5nIGEgc2FsdCBsZW5ndGggb2Y6ICRzYWx0X2xlbmd0aDwvcD5cbiI7CisgICAgICAgICAgICBl Y2hvICI8cD5cJHJhbmRhc2NpaSBzdHJsZW4gaXMgPHNhbXA+Ii5zdHJsZW4oJHJhbmRhc2NpaSku Ijwvc2FtcD48L3ByZT5cbiI7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvKioK KyAgICAgICAgICogaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24ucGFzc3dv cmQtaGFzaC5waHAKKyAgICAgICAgICovCisgICAgICAgIGVjaG8gIjxoMj5FbmNyeXB0aW9uIHJl c3VsdHM8L2gyPlxuIjsKKyAgICAgICAgJGVuY3J5cHRlZF9wYXNzd29yZCA9IHBhc3N3b3JkX2hh c2goJHBhc3N3b3JkLCBQQVNTV09SRF9ERUZBVUxUKTsKKyAgICAgICAgZWNobyAiPHA+VGhlIHBh c3N3b3JkIHdhcyBlbmNyeXB0ZWQgdXNpbmcgdGhlIG5ld2VyIHBhc3N3b3JkX2hhc2goKSBmdW5j dGlvbiBpbnN0ZWFkIG9mIGNyeXB0KCkuPC9wPlxuIjsKICAgICB9Ci0gICAgZWNobyAiPHA+VGhl IGVuY3J5cHRlZCBwYXNzd29yZCBpczo8YnIgLz5cbjxiciAvPiZuYnNwOyZuYnNwOyZuYnNwO1xu PHNhbXA+PHN0cm9uZz4iLAotICAgIGh0bWxlbnRpdGllcygkZW5jcnlwdGVkX3Bhc3N3b3JkKSwg Ijwvc3Ryb25nPjwvc2FtcD48L3A+XG4iOwotICAgIGVjaG8gIjxociAvPlxuIjsKLX0gZWxzZWlm ICgkcG9zdGVkWydwYXNzd29yZCddICE9ICIiKSB7Ci0gICAgZWNobyAiVGhlIHBhc3N3b3JkcyBk aWQgbm90IG1hdGNoLiBQbGVhc2UgdHJ5IGFnYWluLjxiciAvPlxuIjsKKyAgICBpZiAoJGVuY3J5 cHRlZF9wYXNzd29yZCA9PT0gJyowJyB8fCAkZW5jcnlwdGVkX3Bhc3N3b3JkID09PSAnKjEnKSB7 CisgICAgICAgIGVjaG8gIjxwPkVycm9yOiBjcnlwdCgpIGZ1bmN0aW9uIGZhaWxlZC4gSnVzdCB0 cnkgYWdhaW4hPC9wPiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGFkbWluX2luaV9lbnRyeSA9 ICdBRE1JTl9QQVNTV0Q9IicuJGVuY3J5cHRlZF9wYXNzd29yZC4nIic7CisgICAgICAgIGVjaG8g IjxwPlRoZSBlbmNyeXB0ZWQgcGFzc3dvcmQgaXM6IDxzYW1wPiIsCisgICAgICAgIGh0bWxlbnRp dGllcygkZW5jcnlwdGVkX3Bhc3N3b3JkKS4iPC9zYW1wPjwvcD5cbiI7CisKKyAgICAgICAgPz4K KyAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbGVudGl0 aWVzKCRlbmNyeXB0ZWRfcGFzc3dvcmQsCisgICAgICAgICAgICBFTlRfUVVPVEVTLCAnVVRGLTgn KTsgPz4iIGlkPSJlbmNyeXB0ZWRfcGFzc3dvcmRfdGV4dCI+CisgICAgICAgIDxidXR0b24gb25j bGljaz0iY29weVRvQ2xpcGJvYXJkX2VuY3JwdygpIj5Db3B5IGVuY3J5cHRlZCBwYXNzd29yZCB0 byBjbGlwYm9hcmQ8L2J1dHRvbj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0 aW9uIGNvcHlUb0NsaXBib2FyZF9lbmNycHcoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNvcHlU ZXh0X2VuY3JwdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbmNyeXB0ZWRfcGFzc3dvcmRf dGV4dCIpOworICAgICAgICAgICAgICAgIGNvcHlUZXh0X2VuY3Jwdy5zZWxlY3QoKTsKKyAgICAg ICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb3B5VGV4dF9lbmNycHcu dmFsdWUpCisgICAgICAgICAgICAgICAgYWxlcnQoIkNvcGllZCB0aGUgZW5jcnlwdGVkIHBhc3N3 b3JkOlxuIiArIGNvcHlUZXh0X2VuY3Jwdy52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAg IDwvc2NyaXB0PgorPD9waHAKKyAgICAgICAgZWNobyAiPGhyIC8+XG4iOworICAgICAgICBlY2hv ICI8cD5Db3B5IHRoaXMgaW50byB5b3VyIDxzcGFuIGNsYXNzPVwiZmlsZW5hbWVcIj5waHB3aWtp L2NvbmZpZy9jb25maWcuaW5pPC9zcGFuPiBmaWxlOiA8c2FtcD4iLgorICAgICAgICBodG1sZW50 aXRpZXMoJGFkbWluX2luaV9lbnRyeSwgRU5UX1FVT1RFUywgJ1VURi04JykuICI8L3NhbXA+PC9w PlxuIjsKKz8+CisgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSI8P3BocCBlY2hv IGh0bWxlbnRpdGllcygkYWRtaW5faW5pX2VudHJ5LAorICAgICAgICAgICAgRU5UX1FVT1RFUywg J1VURi04Jyk7ID8+IiBpZD0iYWRtaW5faW5pX2VudHJ5X3RleHQiPgorICAgICAgICA8YnV0dG9u IG9uY2xpY2s9ImNvcHlUb0NsaXBib2FyZF9pbmkoKSI+Q29weSBjb25maWcuaW5pIGVudHJ5IHRv IGNsaXBib2FyZDwvYnV0dG9uPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rp b24gY29weVRvQ2xpcGJvYXJkX2luaSgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29weVRleHRf aW5pID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkbWluX2luaV9lbnRyeV90ZXh0Iik7Cisg ICAgICAgICAgICAgICAgY29weVRleHRfaW5pLnNlbGVjdCgpOworICAgICAgICAgICAgICAgIG5h dmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvcHlUZXh0X2luaS52YWx1ZSkKKyAgICAgICAg ICAgICAgICBhbGVydCgiQ29waWVkIHRoZSBjb25maWcuaW5pIGVudHJ5OlxuIiArIGNvcHlUZXh0 X2luaS52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorPD9waHAKKyAg ICAgICAgZWNobyAiPGhyIC8+XG4iOworICAgIH0KKworfSBlbHNlaWYgKCgkcG9zdGVkKSAmJgor ICAgICAgICAgICgkcG9zdGVkWydwYXNzd29yZCddICE9ICIiKQorICAgICAgICAgKQoreworICAg IGVjaG8gIjxwPlRoZSBwYXNzd29yZHMgZGlkIG5vdCBtYXRjaC4gUGxlYXNlIHRyeSBhZ2Fpbi48 L3A+XG4iOwogfQogaWYgKGVtcHR5KCRSRVFVRVNUX1VSSSkpIHsKLSAgICAkUkVRVUVTVF9VUkkg PSAkSFRUUF9FTlZfVkFSU1snUkVRVUVTVF9VUkknXTsKKyAgICBpZiAoIWVtcHR5KCRIVFRQX0VO Vl9WQVJTKSkgeworICAgICAgICAkUkVRVUVTVF9VUkkgPSAkSFRUUF9FTlZfVkFSU1snUkVRVUVT VF9VUkknXTsKKyAgICB9CiB9CiBpZiAoZW1wdHkoJFJFUVVFU1RfVVJJKSkgewogICAgICRSRVFV RVNUX1VSSSA9ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwogfQorCitpZiAoKCRwb3N0ZWQpICYm CisgICAgICAgICAgKCRwb3N0ZWRbJ3Bhc3N3b3JkJ10gIT0gIiIpCisgICAgICAgICApIHsKKyAg ICAgICAgICAgICRwYXNzd29yZD0kcG9zdGVkWydwYXNzd29yZCddOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgJHBhc3N3b3JkPSIiOworICAgICAgICB9CitpZiAoKCRwb3N0ZWQpICYm CisgICAgICAgICAoJHBvc3RlZFsncGFzc3dvcmQyJ10gIT0gIiIpCisgICAgICAgICkgeworICAg ICAgICAgICAgJHBhc3N3b3JkMj0kcG9zdGVkWydwYXNzd29yZDInXTsKKyAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICRwYXNzd29yZDI9IiI7CisgICAgICAgIH0KID8+Ci0KLTxmb3JtIGFj dGlvbj0iPD9waHAgZWNobyAkUkVRVUVTVF9VUkkgPz4iIG1ldGhvZD0icG9zdCI+Cis8Zm9ybSBh Y3Rpb249Ijw/cGhwIGVjaG8gJFJFUVVFU1RfVVJJID8+IiBtZXRob2Q9InBvc3QiIGlkPSJteUZv cm0iPgorPGgyPkVuY3J5cHQgYSBwYXNzd29yZCBvciBnZW5lcmF0ZSBvbmUgYXQgcmFuZG9tPC9o Mj4KICAgICA8ZmllbGRzZXQ+CiAgICAgICAgIDxsZWdlbmQ+RW5jcnlwdDwvbGVnZW5kPgotICAg ICAgICBFbnRlciBhIHBhc3N3b3JkIHR3aWNlIHRvIGVuY3J5cHQgaXQ6PGJyLz4KLSAgICAgICAg PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgdmFsdWU9IiIvPjxici8+Ci0g ICAgICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dvcmQyIiB2YWx1ZT0iIi8+ IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbmNyeXB0Ii8+Ci0gICAgPC9maWVsZHNldD4K LSAgICA8YnIvPgotICAgIG9yOjxici8+Ci0gICAgPGJyLz4KKyAgICAgICAgPHA+RW50ZXIgYSBw YXNzd29yZCB0d2ljZSB0byBlbmNyeXB0IGl0OjwvcD4KKyAgICAgICAgPGlucHV0IHR5cGU9InBh c3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgdmFsdWU9Ijw/cGhwCisgICAgICAgICAgICBlY2hvIGh0 bWxlbnRpdGllcygkcGFzc3dvcmQsIEVOVF9RVU9URVMsICdVVEYtOCcpOyA/PiIvPjxici8+Cisg ICAgICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dvcmQyIiB2YWx1ZT0iPD9w aHAKKyAgICAgICAgICAgIGVjaG8gaHRtbGVudGl0aWVzKCRwYXNzd29yZDIsIEVOVF9RVU9URVMs ICdVVEYtOCcpOyA/PiIvPgorICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW5j cnlwdCIvPgorICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iY2xlYXJmb3Jt KCkiPkNsZWFyPC9idXR0b24+CisgICAgICAgIDwvZmllbGRzZXQ+CisgICAgPHNjcmlwdD4KKyAg ICAgICAgZnVuY3Rpb24gY2xlYXJmb3JtKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudHNCeU5hbWUoJ3Bhc3N3b3JkJylbMF0udmFsdWUgPSAnJzsKKyAgICAgICAgICAgIGRvY3Vt ZW50LmdldEVsZW1lbnRzQnlOYW1lKCdwYXNzd29yZDInKVswXS52YWx1ZSA9ICcnOworICAgICAg ICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHA+b3I6PC9wPgogICAgIDxmaWVsZHNldD4KICAgICAg ICAgPGxlZ2VuZD5HZW5lcmF0ZTwvbGVnZW5kPgotICAgICAgICBDcmVhdGUgYSBuZXcgcmFuZG9t IHBhc3N3b3JkOiA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjcmVhdGUiIHZhbHVlPSJDcmVh dGUiLz4KKyAgICAgICAgPHA+UmFuZG9tbHkgZ2VuZXJhdGUgYSBuZXcgcGFzc3dvcmQ6CisgICAg ICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNyZWF0ZSIgdmFsdWU9IkdlbmVyYXRlIi8+ PGJyIC8+CisgICAgICAgIChKdXN0IGtlZXAgY2xpY2tpbmcgR2VuZXJhdGUgdW50aWwgeW91IHNl ZSBhIHBhc3N3b3JkIHlvdSBsaWtlLik8L3A+CiAgICAgPC9maWVsZHNldD4KKyAgICA8c2NyaXB0 PgogPC9mb3JtPgogPC9ib2R5PgogPC9odG1sPgoKVGhpcyB3YXMgc2VudCBieSB0aGUgU291cmNl Rm9yZ2UubmV0IGNvbGxhYm9yYXRpdmUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0sIHRoZSB3b3JsZCdz IGxhcmdlc3QgT3BlbiBTb3VyY2UgZGV2ZWxvcG1lbnQgc2l0ZS4KCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGhwd2lraS1jaGVja2lucyBtYWlsaW5n IGxpc3QKcGhwd2lraS1jaGVja2luc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0 cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vcGhwd2lraS1jaGVja2lucwo=