ZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Rfd3JpdGVmaWxlLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3Rfd3JpdGVmaWxlLnZpbQppbmRleCA5MjExMmY4Li45MWRiMThkIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X3dyaXRlZmlsZS52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF93cml0ZWZpbGUudmltCkBAIC0xOCw3ICsxOCw3IEBACiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCJ2aW1tZXJzIiwgbFs0XSkKICAgY2FsbCBkZWxldGUoZikKIAotICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCB3cml0ZWZpbGUoInRleHQiLCAiWGZpbGUiKScsICdFNDc1OiBJbnZhbGlkIGFyZ3VtZW50OiB3cml0ZWZpbGUoKSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgTGlzdCBvciBhIEJsb2InKQorICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCB3cml0ZWZpbGUoInRleHQiLCAiWHdmZmlsZSIpJywgJ0U0NzU6IEludmFsaWQgYXJndW1lbnQ6IHdyaXRlZmlsZSgpIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBMaXN0IG9yIGEgQmxvYicpCiBlbmRmdW5jCiAKIGZ1bmMgVGVzdF93cml0ZWZpbGVfaWdub3JlX3JlZ2V4cF9lcnJvcigpCkBAIC0yNywxNyArMjcsMTcgQEAKIGVuZGZ1bmMKIAogZnVuYyBUZXN0X3dyaXRlZmlsZV9mYWlsc19nZW50bHkoKQotICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCB3cml0ZWZpbGUoWyJ0ZXN0Il0sICJYZmlsZSIsIFtdKScsICdFNzMwOicpCi0gIGNhbGwgYXNzZXJ0X2ZhbHNlKGZpbGVyZWFkYWJsZSgiWGZpbGUiKSkKLSAgY2FsbCBkZWxldGUoIlhmaWxlIikKKyAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgd3JpdGVmaWxlKFsidGVzdCJdLCAiWHdmZmlsZSIsIFtdKScsICdFNzMwOicpCisgIGNhbGwgYXNzZXJ0X2ZhbHNlKGZpbGVyZWFkYWJsZSgiWHdmZmlsZSIpKQorICBjYWxsIGRlbGV0ZSgiWHdmZmlsZSIpCiAKLSAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgd3JpdGVmaWxlKFsidGVzdCIsIFtdLCBbXSwgW10sICJ0c2V0Il0sICJYZmlsZSIpJywgJ0U3MzA6JykKLSAgY2FsbCBhc3NlcnRfZmFsc2UoZmlsZXJlYWRhYmxlKCJYZmlsZSIpKQotICBjYWxsIGRlbGV0ZSgiWGZpbGUiKQorICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCB3cml0ZWZpbGUoWyJ0ZXN0IiwgW10sIFtdLCBbXSwgInRzZXQiXSwgIlh3ZmZpbGUiKScsICdFNzMwOicpCisgIGNhbGwgYXNzZXJ0X2ZhbHNlKGZpbGVyZWFkYWJsZSgiWHdmZmlsZSIpKQorICBjYWxsIGRlbGV0ZSgiWHdmZmlsZSIpCiAKLSAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgd3JpdGVmaWxlKFtdLCAiWGZpbGUiLCBbXSknLCAnRTczMDonKQotICBjYWxsIGFzc2VydF9mYWxzZShmaWxlcmVhZGFibGUoIlhmaWxlIikpCi0gIGNhbGwgZGVsZXRlKCJYZmlsZSIpCisgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHdyaXRlZmlsZShbXSwgIlh3ZmZpbGUiLCBbXSknLCAnRTczMDonKQorICBjYWxsIGFzc2VydF9mYWxzZShmaWxlcmVhZGFibGUoIlh3ZmZpbGUiKSkKKyAgY2FsbCBkZWxldGUoIlh3ZmZpbGUiKQogCiAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHdyaXRlZmlsZShbXSwgW10pJywgJ0U3MzA6JykKIGVuZGZ1bmMKQEAgLTUyLDM1ICs1MiwzNSBAQAogICBzZXQgbm9iYWNrdXAgbm93cml0ZWJhY2t1cCBiYWNrdXBkaXI9LiBiYWNrdXBza2lwPQogICBuZXcKICAgbGV0IGNvbnRlbnRzID0gWyJsaW5lIG9uZSIsICJsaW5lIHR3byJdCi0gIGNhbGwgd3JpdGVmaWxlKGNvbnRlbnRzLCAnWGZpbGUnKQotICBlZGl0IFhmaWxlCisgIGNhbGwgd3JpdGVmaWxlKGNvbnRlbnRzLCAnWHdmY2ZpbGUnKQorICBlZGl0IFh3ZmNmaWxlCiAgIGNhbGwgc2V0bGluZSgxLCBbImZpcnN0IGxpbmUiLCAiY2Fubm90IGNvbnZlcnQgXHUwMTBiIiwgInRoaXJkIGxpbmUiXSkKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ3dyaXRlICsrZW5jPWNwOTMyJywgJ0U1MTM6JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoY29udGVudHMsIHJlYWRmaWxlKCdYZmlsZScpKQorICBjYWxsIGFzc2VydF9lcXVhbChjb250ZW50cywgcmVhZGZpbGUoJ1h3ZmNmaWxlJykpCiAKICAgIiBXaXRoICdiYWNrdXBjb3B5JyBzZXQsIGlmIHRoZXJlIGlzIGEgY29udmVyc2lvbiBlcnJvciwgdGhlIGJhY2t1cCBmaWxlIGlzCiAgICIgc3RpbGwgY3JlYXRlZC4KICAgc2V0IGJhY2t1cGNvcHk9eWVzIHdyaXRlYmFja3VwJiBiYWNrdXAmCi0gIGNhbGwgZGVsZXRlKCdYZmlsZScgLi4gJmJhY2t1cGV4dCkKKyAgY2FsbCBkZWxldGUoJ1h3ZmNmaWxlJyAuLiAmYmFja3VwZXh0KQogICBjYWxsIGFzc2VydF9mYWlscygnd3JpdGUgKytlbmM9Y3A5MzInLCAnRTUxMzonKQotICBjYWxsIGFzc2VydF9lcXVhbChjb250ZW50cywgcmVhZGZpbGUoJ1hmaWxlJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKGNvbnRlbnRzLCByZWFkZmlsZSgnWGZpbGUnIC4uICZiYWNrdXBleHQpKQorICBjYWxsIGFzc2VydF9lcXVhbChjb250ZW50cywgcmVhZGZpbGUoJ1h3ZmNmaWxlJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKGNvbnRlbnRzLCByZWFkZmlsZSgnWHdmY2ZpbGUnIC4uICZiYWNrdXBleHQpKQogICBzZXQgYmFja3VwY29weSYKICAgJWJ3IQogCiAgICIgQ29udmVyc2lvbiBlcnJvciBkdXJpbmcgd3JpdGUKICAgbmV3CiAgIGNhbGwgc2V0bGluZSgxLCBbIlxVMTAwMDAwMDAiXSkKLSAgbGV0IG91dHB1dCA9IGV4ZWN1dGUoJ3dyaXRlISArK2VuYz11dGYtMTYgWGZpbGUnKQorICBsZXQgb3V0cHV0ID0gZXhlY3V0ZSgnd3JpdGUhICsrZW5jPXV0Zi0xNiBYd2ZjZmlsZScpCiAgIGNhbGwgYXNzZXJ0X21hdGNoKCdDT05WRVJTSU9OIEVSUk9SJywgb3V0cHV0KQotICBsZXQgb3V0cHV0ID0gZXhlY3V0ZSgnd3JpdGUhICsrZW5jPXVjcy0yIFhmaWxlJykKKyAgbGV0IG91dHB1dCA9IGV4ZWN1dGUoJ3dyaXRlISArK2VuYz11Y3MtMiBYd2ZjZmlsZScpCiAgIGNhbGwgYXNzZXJ0X21hdGNoKCdDT05WRVJTSU9OIEVSUk9SJywgb3V0cHV0KQogICBjYWxsIGRlbGV0ZSgnWGZpbHp+JykKICAgY2FsbCBkZWxldGUoJ1hmaWx5ficpCiAgICVidyEKIAotICBjYWxsIGRlbGV0ZSgnWGZpbGUnKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUnIC4uICZiYWNrdXBleHQpCisgIGNhbGwgZGVsZXRlKCdYd2ZjZmlsZScpCisgIGNhbGwgZGVsZXRlKCdYd2ZjZmlsZScgLi4gJmJhY2t1cGV4dCkKICAgYndpcGUhCiAgIHNldCBiYWNrdXAmIHdyaXRlYmFja3VwJiBiYWNrdXBkaXImdmltIGJhY2t1cHNraXAmdmltCiBlbmRmdW5jCkBAIC05NCwxNiArOTQsMTYgQEAKICAgIiBidXQgdGhlbiB0aGUgYmFja3VwIGZpbGUgbXVzdCByZW1haW4KICAgc2V0IG5vYmFja3VwIHdyaXRlYmFja3VwIGJhY2t1cGRpcj0uIGJhY2t1cHNraXA9CiAgIGxldCBjb250ZW50cyA9IFsibGluZSBvbmUiLCAibGluZSB0d28iXQotICBjYWxsIHdyaXRlZmlsZShjb250ZW50cywgJ1hmaWxlX2NvbnZlcnNpb25fZXJyJykKLSAgZWRpdCBYZmlsZV9jb252ZXJzaW9uX2VycgorICBjYWxsIHdyaXRlZmlsZShjb250ZW50cywgJ1h3ZjJmaWxlX2NvbnZlcnNpb25fZXJyJykKKyAgZWRpdCBYd2YyZmlsZV9jb252ZXJzaW9uX2VycgogICBjYWxsIHNldGxpbmUoMSwgWyJmaXJzdCBsaW5lIiwgImNhbm5vdCBjb252ZXJ0IFx1MDEwYiIsICJ0aGlyZCBsaW5lIl0pCiAgIHNldCBmaWxlZW5jb2Rpbmc9bGF0aW4xCiAgIGxldCBvdXRwdXQgPSBleGVjdXRlKCd3cml0ZScpCiAgIGNhbGwgYXNzZXJ0X21hdGNoKCdDT05WRVJTSU9OIEVSUk9SJywgb3V0cHV0KQotICBjYWxsIGFzc2VydF9lcXVhbChjb250ZW50cywgcmVhZGZpbGUoJ1hmaWxlX2NvbnZlcnNpb25fZXJyficpKQorICBjYWxsIGFzc2VydF9lcXVhbChjb250ZW50cywgcmVhZGZpbGUoJ1h3ZjJmaWxlX2NvbnZlcnNpb25fZXJyficpKQogCi0gIGNhbGwgZGVsZXRlKCdYZmlsZV9jb252ZXJzaW9uX2VycicpCi0gIGNhbGwgZGVsZXRlKCdYZmlsZV9jb252ZXJzaW9uX2Vycn4nKQorICBjYWxsIGRlbGV0ZSgnWHdmMmZpbGVfY29udmVyc2lvbl9lcnInKQorICBjYWxsIGRlbGV0ZSgnWHdmMmZpbGVfY29udmVyc2lvbl9lcnJ+JykKICAgYndpcGUhCiAgIHNldCBiYWNrdXAmIHdyaXRlYmFja3VwJiBiYWNrdXBkaXImdmltIGJhY2t1cHNraXAmdmltCiBlbmRmdW5jCkBAIC0xMTcsNyArMTE3LDcgQEAKICAgYXVncm91cCB0ZXN0Z3JvdXAKICAgICBhdXRvY21kIEJ1ZldyaXRlUHJlICogc3BsaXQKICAgYXVncm91cCBFTkQKLSAgZSEgWGZpbGUKKyAgZSEgWHdxc2ZpbGUKICAgY2FsbCBzZXRsaW5lKDEsICdub3RoaW5nJykKICAgd3EKIApAQCAtMTMwLDEzICsxMzAsMTMgQEAKICAgICB1bmxldCBnOmZsYWcKICAgZW5kaWYKICAgYXUhIHRlc3Rncm91cAotICBid2lwZSBYZmlsZQotICBjYWxsIGRlbGV0ZSgnWGZpbGUnKQorICBid2lwZSBYd3FzZmlsZQorICBjYWxsIGRlbGV0ZSgnWHdxc2ZpbGUnKQogZW5kZnVuYwogCiBmdW5jIFRlc3Rfbm93cml0ZV9xdWl0X3NwbGl0KCkKICAgIiBQcmV2ZW50IGV4aXRpbmcgYnkgb3BlbmluZyBhIGhlbHAgd2luZG93LgotICBlISBYZmlsZQorICBlISBYbnFzZmlsZQogICBoZWxwCiAgIHdpbmNtZCB3CiAgIGV4ZSB3aW5ucigpIC4gJ3EnCkBAIC0xNDksNyArMTQ5LDcgQEAKICAgICBjYWxsIGFzc2VydF9lcXVhbCgxLCBnOmZsYWcpCiAgICAgdW5sZXQgZzpmbGFnCiAgIGVuZGlmCi0gIGJ3aXBlIFhmaWxlCisgIGJ3aXBlIFhucXNmaWxlCiBlbmRmdW5jCiAKIGZ1bmMgVGVzdF93cml0ZWZpbGVfc3luY19hcmcoKQpAQCAtMjEzLDIzICsyMTMsMjMgQEAKICAgQ2hlY2tVbml4CiAgIG5ldwogICBjYWxsIHNldGxpbmUoMSwgWydMMScsICdMMicsICdMMycsICdMNCddKQotICAyLDN3ICFjYXQgPiBYZmlsZQotICBjYWxsIGFzc2VydF9lcXVhbChbJ0wyJywgJ0wzJ10sIHJlYWRmaWxlKCdYZmlsZScpKQorICAyLDN3ICFjYXQgPiBYcHRmaWxlCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnTDInLCAnTDMnXSwgcmVhZGZpbGUoJ1hwdGZpbGUnKSkKICAgY2xvc2UhCi0gIGNhbGwgZGVsZXRlKCdYZmlsZScpCisgIGNhbGwgZGVsZXRlKCdYcHRmaWxlJykKIGVuZGZ1bmMKIAogIiBUZXN0IGZvciA6c2F2ZWFzCiBmdW5jIFRlc3Rfc2F2ZWFzKCkKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ3NhdmVhcycsICdFNDcxOicpCi0gIGNhbGwgd3JpdGVmaWxlKFsnTDEnXSwgJ1hmaWxlJykKLSAgbmV3IFhmaWxlCisgIGNhbGwgd3JpdGVmaWxlKFsnTDEnXSwgJ1hzYWZpbGUnKQorICBuZXcgWHNhZmlsZQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnTDEnXSkKLSAgY2FsbCBhc3NlcnRfZmFpbHMoJ3NhdmVhcyBYZmlsZScsICdFMTM5OicpCisgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdzYXZlYXMgWHNhZmlsZScsICdFMTM5OicpCiAgIGNsb3NlIQogICBlbmV3IHwgb25seQotICBjYWxsIGRlbGV0ZSgnWGZpbGUnKQorICBjYWxsIGRlbGV0ZSgnWHNhZmlsZScpCiAKICAgIiA6c2F2ZWFzIHNob3VsZCBkZXRlY3QgYW5kIHNldCB0aGUgZmlsZSB0eXBlLgogICBzeW50YXggb24KQEAgLTI0Miw4ICsyNDIsOCBAQAogCiBmdW5jIFRlc3Rfd3JpdGVfZXJyb3JzKCkKICAgIiBUZXN0IGZvciB3cml0aW5nIHBhcnRpYWwgYnVmZmVyCi0gIGNhbGwgd3JpdGVmaWxlKFsnTDEnLCAnTDInLCAnTDMnXSwgJ1hmaWxlJykKLSAgbmV3IFhmaWxlCisgIGNhbGwgd3JpdGVmaWxlKFsnTDEnLCAnTDInLCAnTDMnXSwgJ1h3ZWZpbGUnKQorICBuZXcgWHdlZmlsZQogICBjYWxsIGFzc2VydF9mYWlscygnMSwyd3JpdGUnLCAnRTE0MDonKQogICBjbG9zZSEKIApAQCAtMjYzLDI0ICsyNjMsMjQgQEAKICAgZW5ldyEKIAogICAiIFRlc3QgZm9yIHdyaXRpbmcgYSAncmVhZG9ubHknIGZpbGUKLSAgbmV3IFhmaWxlCisgIG5ldyBYd2VmaWxlCiAgIHNldCByZWFkb25seQogICBjYWxsIGFzc2VydF9mYWlscygnd3JpdGUnLCAnRTQ1OicpCiAgIGNsb3NlCiAKICAgIiBUZXN0IGZvciB3cml0aW5nIHRvIGEgcmVhZC1vbmx5IGZpbGUKLSAgbmV3IFhmaWxlCi0gIGNhbGwgc2V0ZnBlcm0oJ1hmaWxlJywgJ3ItLXItLXItLScpCisgIG5ldyBYd2VmaWxlCisgIGNhbGwgc2V0ZnBlcm0oJ1h3ZWZpbGUnLCAnci0tci0tci0tJykKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ3dyaXRlJywgJ0U1MDU6JykKLSAgY2FsbCBzZXRmcGVybSgnWGZpbGUnLCAncnctcnctcnctJykKKyAgY2FsbCBzZXRmcGVybSgnWHdlZmlsZScsICdydy1ydy1ydy0nKQogICBjbG9zZQogCi0gIGNhbGwgZGVsZXRlKCdYZmlsZScpCisgIGNhbGwgZGVsZXRlKCdYd2VmaWxlJykKIAotICBjYWxsIHdyaXRlZmlsZSh0ZXN0X251bGxfbGlzdCgpLCAnWGZpbGUnKQotICBjYWxsIGFzc2VydF9mYWxzZShmaWxlcmVhZGFibGUoJ1hmaWxlJykpCi0gIGNhbGwgd3JpdGVmaWxlKHRlc3RfbnVsbF9ibG9iKCksICdYZmlsZScpCi0gIGNhbGwgYXNzZXJ0X2ZhbHNlKGZpbGVyZWFkYWJsZSgnWGZpbGUnKSkKKyAgY2FsbCB3cml0ZWZpbGUodGVzdF9udWxsX2xpc3QoKSwgJ1h3ZWZpbGUnKQorICBjYWxsIGFzc2VydF9mYWxzZShmaWxlcmVhZGFibGUoJ1h3ZWZpbGUnKSkKKyAgY2FsbCB3cml0ZWZpbGUodGVzdF9udWxsX2Jsb2IoKSwgJ1h3ZWZpbGUnKQorICBjYWxsIGFzc2VydF9mYWxzZShmaWxlcmVhZGFibGUoJ1h3ZWZpbGUnKSkKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgd3JpdGVmaWxlKFtdLCAiIiknLCAnRTQ4MjonKQogCiAgICIgdmVyeSBsb25nIGZpbGUgbmFtZQpAQCAtMzA1LDkgKzMwNSw5IEBACiAgIENoZWNrUnVuVmltSW5UZXJtaW5hbAogCiAgICIgRmlyc3QgcmVhZCB0aGUgZmlsZSBpbnRvIGEgYnVmZmVyCi0gIGNhbGwgd3JpdGVmaWxlKFsiTGluZTEiLCAiTGluZTIiXSwgJ1hmaWxlJykKLSAgbGV0IG9sZF9mdGltZSA9IGdldGZ0aW1lKCdYZmlsZScpCi0gIGxldCBidWYgPSBSdW5WaW1JblRlcm1pbmFsKCdYZmlsZScsICN7cm93cyA6IDEwfSkKKyAgY2FsbCB3cml0ZWZpbGUoWyJMaW5lMSIsICJMaW5lMiJdLCAnWHdmbWZpbGUnKQorICBsZXQgb2xkX2Z0aW1lID0gZ2V0ZnRpbWUoJ1h3Zm1maWxlJykKKyAgbGV0IGJ1ZiA9IFJ1blZpbUluVGVybWluYWwoJ1h3Zm1maWxlJywgI3tyb3dzIDogMTB9KQogICBjYWxsIFRlcm1XYWl0KGJ1ZikKICAgY2FsbCB0ZXJtX3NlbmRrZXlzKGJ1ZiwgIjpzZXQgbm9zd2FwZmlsZVw8Q1I+IikKICAgY2FsbCBUZXJtV2FpdChidWYpCkBAIC0zMTYsMTIgKzMxNiwxMiBAQAogICAiIGRpZmZlcmVudC4gTm90ZSB0aGF0IG9uIExpbnV4L1VuaXgsIHRoZSBmaWxlIGlzIGNvbnNpZGVyZWQgbW9kaWZpZWQKICAgIiBvdXRzaWRlLCBvbmx5IGlmIHRoZSBkaWZmZXJlbmNlIGlzIDIgc2Vjb25kcyBvciBtb3JlCiAgIHNsZWVwIDEKLSAgY2FsbCB3cml0ZWZpbGUoWyJMaW5lMyIsICJMaW5lNCJdLCAnWGZpbGUnKQotICBsZXQgbmV3X2Z0aW1lID0gZ2V0ZnRpbWUoJ1hmaWxlJykKKyAgY2FsbCB3cml0ZWZpbGUoWyJMaW5lMyIsICJMaW5lNCJdLCAnWHdmbWZpbGUnKQorICBsZXQgbmV3X2Z0aW1lID0gZ2V0ZnRpbWUoJ1h3Zm1maWxlJykKICAgd2hpbGUgbmV3X2Z0aW1lIC0gb2xkX2Z0aW1lIDwgMgogICAgIHNsZWVwIDEwMG0KLSAgICBjYWxsIHdyaXRlZmlsZShbIkxpbmUzIiwgIkxpbmU0Il0sICdYZmlsZScpCi0gICAgbGV0IG5ld19mdGltZSA9IGdldGZ0aW1lKCdYZmlsZScpCisgICAgY2FsbCB3cml0ZWZpbGUoWyJMaW5lMyIsICJMaW5lNCJdLCAnWHdmbWZpbGUnKQorICAgIGxldCBuZXdfZnRpbWUgPSBnZXRmdGltZSgnWHdmbWZpbGUnKQogICBlbmR3aGlsZQogCiAgICIgVHJ5IHRvIG92ZXJ3cml0ZSB0aGUgZmlsZSBhbmQgY2hlY2sgZm9yIHRoZSBwcm9tcHQKQEAgLTMzMiwyNCArMzMyLDI0IEBACiAgICAgICAgIFwgdGVybV9nZXRsaW5lKGJ1ZiwgMTApKQogICBjYWxsIHRlcm1fc2VuZGtleXMoYnVmLCAiblw8Q1I+IikKICAgY2FsbCBUZXJtV2FpdChidWYpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKG5ld19mdGltZSwgZ2V0ZnRpbWUoJ1hmaWxlJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKG5ld19mdGltZSwgZ2V0ZnRpbWUoJ1h3Zm1maWxlJykpCiAgIGNhbGwgdGVybV9zZW5ka2V5cyhidWYsICI6d1w8Q1I+IikKICAgY2FsbCBUZXJtV2FpdChidWYpCiAgIGNhbGwgdGVybV9zZW5ka2V5cyhidWYsICJ5XDxDUj4iKQogICBjYWxsIFRlcm1XYWl0KGJ1ZikKLSAgY2FsbCBXYWl0Rm9yQXNzZXJ0KHstPiBhc3NlcnRfZXF1YWwoJ0xpbmUyJywgcmVhZGZpbGUoJ1hmaWxlJylbMV0pfSkKKyAgY2FsbCBXYWl0Rm9yQXNzZXJ0KHstPiBhc3NlcnRfZXF1YWwoJ0xpbmUyJywgcmVhZGZpbGUoJ1h3Zm1maWxlJylbMV0pfSkKIAogICAiIGNsZWFuIHVwCiAgIGNhbGwgU3RvcFZpbUluVGVybWluYWwoYnVmKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUnKQorICBjYWxsIGRlbGV0ZSgnWHdmbWZpbGUnKQogZW5kZnVuYwogCiAiIFRlc3QgZm9yIGFuIGF1dG9jbWQgdW5sb2FkaW5nIGEgYnVmZmVyIGR1cmluZyBhIHdyaXRlIGNvbW1hbmQKIGZ1bmMgVGVzdF93cml0ZV9hdXRvY21kX3VubG9hZGJ1Zl9sb2NrbWFyaygpCiAgIGF1Z3JvdXAgV3JpdGVUZXN0Ci0gICAgYXV0b2NtZCBCdWZXcml0ZVByZSBYZmlsZSBlbmV3IHwgd3JpdGUKKyAgICBhdXRvY21kIEJ1ZldyaXRlUHJlIFh3YXVmaWxlIGVuZXcgfCB3cml0ZQogICBhdWdyb3VwIEVORAotICBlIFhmaWxlCisgIGUgWHdhdWZpbGUKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2xvY2ttYXJrcyB3cml0ZScsIFsnRTMyOicsICdFMjAzOiddKQogICBhdWdyb3VwIFdyaXRlVGVzdAogICAgIGF1IQpAQCAtMzU5LDcgKzM1OSw3IEBACiAKICIgVGVzdCBmb3Igd3JpdGluZyBhIGJ1ZmZlciB3aXRoICdhY3dyaXRlJyBidXQgd2l0aG91dCBhdXRvY21kcwogZnVuYyBUZXN0X3dyaXRlX2Fjd3JpdGVfZXJyb3IoKQotICBuZXcgWGZpbGUKKyAgbmV3IFh3YWVmaWxlCiAgIGNhbGwgc2V0bGluZSgxLCBbJ2xpbmUxJywgJ2xpbmUyJywgJ2xpbmUzJ10pCiAgIHNldCBidWZ0eXBlPWFjd3JpdGUKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ3dyaXRlJywgJ0U2NzY6JykKQEAgLTM3MCwzNSArMzcwLDM1IEBACiAKICIgVGVzdCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBsaW5lcyBmcm9tIGFuIGF1dG9jbWQgd2hlbiB3cml0aW5nIGEgYnVmZmVyCiBmdW5jIFRlc3Rfd3JpdGVfYXV0b2NtZF9hZGRfcmVtb3ZlX2xpbmVzKCkKLSAgbmV3IFhmaWxlCisgIG5ldyBYd2FhZmlsZQogICBjYWxsIHNldGxpbmUoMSwgWydhYWEnLCAnYmJiJywgJ2NjYycsICdkZGQnXSkKIAogICAiIEF1dG9jbWQgZGVsZXRpbmcgbGluZXMgZnJvbSB0aGUgZmlsZSB3aGVuIHdyaXRpbmcgYSBwYXJ0aWFsIGZpbGUKICAgYXVncm91cCBXcml0ZVRlc3QyCiAgICAgYXUhCi0gICAgYXV0b2NtZCBGaWxlV3JpdGVQcmUgWGZpbGUgMSwyZAorICAgIGF1dG9jbWQgRmlsZVdyaXRlUHJlIFh3YWFmaWxlIDEsMmQKICAgYXVncm91cCBFTkQKICAgY2FsbCBhc3NlcnRfZmFpbHMoJzIsM3chJywgJ0UyMDQ6JykKIAogICAiIEF1dG9jbWQgYWRkaW5nIGxpbmVzIHRvIGEgZmlsZSB3aGVuIHdyaXRpbmcgYSBwYXJ0aWFsIGZpbGUKICAgYXVncm91cCBXcml0ZVRlc3QyCiAgICAgYXUhCi0gICAgYXV0b2NtZCBGaWxlV3JpdGVQcmUgWGZpbGUgY2FsbCBhcHBlbmQoMCwgWyd4eHgnLCAneXl5J10pCisgICAgYXV0b2NtZCBGaWxlV3JpdGVQcmUgWHdhYWZpbGUgY2FsbCBhcHBlbmQoMCwgWyd4eHgnLCAneXl5J10pCiAgIGF1Z3JvdXAgRU5ECiAgICVkCiAgIGNhbGwgc2V0bGluZSgxLCBbJ2FhYScsICdiYmInLCAnY2NjJywgJ2RkZCddKQogICAxLDJ3IQotICBjYWxsIGFzc2VydF9lcXVhbChbJ3h4eCcsICd5eXknLCAnYWFhJywgJ2JiYiddLCByZWFkZmlsZSgnWGZpbGUnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWyd4eHgnLCAneXl5JywgJ2FhYScsICdiYmInXSwgcmVhZGZpbGUoJ1h3YWFmaWxlJykpCiAKICAgIiBBdXRvY21kIGRlbGV0aW5nIGxpbmVzIGZyb20gdGhlIGZpbGUgd2hlbiB3cml0aW5nIHRoZSB3aG9sZSBmaWxlCiAgIGF1Z3JvdXAgV3JpdGVUZXN0MgogICAgIGF1IQotICAgIGF1dG9jbWQgQnVmV3JpdGVQcmUgWGZpbGUgMSwyZAorICAgIGF1dG9jbWQgQnVmV3JpdGVQcmUgWHdhYWZpbGUgMSwyZAogICBhdWdyb3VwIEVORAogICAlZAogICBjYWxsIHNldGxpbmUoMSwgWydhYWEnLCAnYmJiJywgJ2NjYycsICdkZGQnXSkKICAgdwotICBjYWxsIGFzc2VydF9lcXVhbChbJ2NjYycsICdkZGQnXSwgcmVhZGZpbGUoJ1hmaWxlJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnY2NjJywgJ2RkZCddLCByZWFkZmlsZSgnWHdhYWZpbGUnKSkKIAogICBhdWdyb3VwIFdyaXRlVGVzdDIKICAgICBhdSEKQEAgLTQwNiwxNCArNDA2LDE0IEBACiAgIGF1Z3JvdXAhIFdyaXRlVGVzdDIKIAogICBjbG9zZSEKLSAgY2FsbCBkZWxldGUoJ1hmaWxlJykKKyAgY2FsbCBkZWxldGUoJ1h3YWFmaWxlJykKIGVuZGZ1bmMKIAogIiBUZXN0IGZvciB3cml0aW5nIHRvIGEgcmVhZG9ubHkgZmlsZQogZnVuYyBUZXN0X3dyaXRlX3JlYWRvbmx5KCkKLSAgY2FsbCB3cml0ZWZpbGUoW10sICdYZmlsZScpCi0gIGNhbGwgc2V0ZnBlcm0oJ1hmaWxlJywgInItLS0tLS0tLSIpCi0gIGVkaXQgWGZpbGUKKyAgY2FsbCB3cml0ZWZpbGUoW10sICdYd3JvZmlsZScpCisgIGNhbGwgc2V0ZnBlcm0oJ1h3cm9maWxlJywgInItLS0tLS0tLSIpCisgIGVkaXQgWHdyb2ZpbGUKICAgc2V0IG5vcmVhZG9ubHkgYmFja3Vwc2tpcD0KICAgY2FsbCBhc3NlcnRfZmFpbHMoJ3dyaXRlJywgJ0U1MDU6JykKICAgbGV0IHNhdmVfY3BvID0gJmNwbwpAQCAtNDIyLDExICs0MjIsMTEgQEAKICAgbGV0ICZjcG8gPSBzYXZlX2NwbwogICBjYWxsIHNldGxpbmUoMSwgWydsaW5lMSddKQogICB3cml0ZSEKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydsaW5lMSddLCByZWFkZmlsZSgnWGZpbGUnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWydsaW5lMSddLCByZWFkZmlsZSgnWHdyb2ZpbGUnKSkKIAogICAiIEF1dG8tc2F2aW5nIGEgcmVhZG9ubHkgZmlsZSBzaG91bGQgZmFpbCB3aXRoICdhdXRvd3JpdGVhbGwnCiAgICVidyEKLSAgZSBYZmlsZQorICBlIFh3cm9maWxlCiAgIHNldCBub3JlYWRvbmx5IGF1dG93cml0ZWFsbAogICBjYWxsIHNldGxpbmUoMSwgWydhYWFhJ10pCiAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCduJywgJ0U1MDU6JykKQEAgLTQzNiwzOSArNDM2LDM5IEBACiAgIHNldCBhdXRvd3JpdGVhbGwmCiAKICAgc2V0IGJhY2t1cHNraXAmCi0gIGNhbGwgZGVsZXRlKCdYZmlsZScpCisgIGNhbGwgZGVsZXRlKCdYd3JvZmlsZScpCiAgICVidyEKIGVuZGZ1bmMKIAogIiBUZXN0IGZvciAncGF0Y2htb2RlJwogZnVuYyBUZXN0X3BhdGNobW9kZSgpCi0gIGNhbGwgd3JpdGVmaWxlKFsnb25lJ10sICdYZmlsZScpCisgIGNhbGwgd3JpdGVmaWxlKFsnb25lJ10sICdYcGFmaWxlJykKICAgc2V0IHBhdGNobW9kZT0ub3JpZyBub2JhY2t1cCBiYWNrdXBza2lwPSB3cml0ZWJhY2t1cAotICBuZXcgWGZpbGUKKyAgbmV3IFhwYWZpbGUKICAgY2FsbCBzZXRsaW5lKDEsICd0d28nKQogICAiIGZpcnN0IHdyaXRlIHNob3VsZCBjcmVhdGUgdGhlIC5vcmlnIGZpbGUKICAgd3JpdGUKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydvbmUnXSwgcmVhZGZpbGUoJ1hmaWxlLm9yaWcnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWydvbmUnXSwgcmVhZGZpbGUoJ1hwYWZpbGUub3JpZycpKQogICBjYWxsIHNldGxpbmUoMSwgJ3RocmVlJykKICAgIiBzdWJzZXF1ZW50IHdyaXRlcyBzaG91bGQgbm90IGNyZWF0ZS9tb2RpZnkgdGhlIC5vcmlnIGZpbGUKICAgd3JpdGUKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydvbmUnXSwgcmVhZGZpbGUoJ1hmaWxlLm9yaWcnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWydvbmUnXSwgcmVhZGZpbGUoJ1hwYWZpbGUub3JpZycpKQogCiAgICIgdXNlICdwYXRjaG1vZGUnIHdpdGggJ25vYmFja3VwJyBhbmQgJ25vd3JpdGViYWNrdXAnIHRvIGNyZWF0ZSBhbiBlbXB0eQogICAiIG9yaWdpbmFsIGZpbGUKLSAgY2FsbCBkZWxldGUoJ1hmaWxlJykKLSAgY2FsbCBkZWxldGUoJ1hmaWxlLm9yaWcnKQorICBjYWxsIGRlbGV0ZSgnWHBhZmlsZScpCisgIGNhbGwgZGVsZXRlKCdYcGFmaWxlLm9yaWcnKQogICAlYnchCiAgIHNldCBwYXRjaG1vZGU9Lm9yaWcgbm9iYWNrdXAgbm93cml0ZWJhY2t1cAotICBlZGl0IFhmaWxlCisgIGVkaXQgWHBhZmlsZQogICBjYWxsIHNldGxpbmUoMSwgWyd4eHgnXSkKICAgd3JpdGUKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWyd4eHgnXSwgcmVhZGZpbGUoJ1hmaWxlJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFtdLCByZWFkZmlsZSgnWGZpbGUub3JpZycpKQorICBjYWxsIGFzc2VydF9lcXVhbChbJ3h4eCddLCByZWFkZmlsZSgnWHBhZmlsZScpKQorICBjYWxsIGFzc2VydF9lcXVhbChbXSwgcmVhZGZpbGUoJ1hwYWZpbGUub3JpZycpKQogCiAgIHNldCBwYXRjaG1vZGUmIGJhY2t1cCYgYmFja3Vwc2tpcCYgd3JpdGViYWNrdXAmCi0gIGNhbGwgZGVsZXRlKCdYZmlsZScpCi0gIGNhbGwgZGVsZXRlKCdYZmlsZS5vcmlnJykKKyAgY2FsbCBkZWxldGUoJ1hwYWZpbGUnKQorICBjYWxsIGRlbGV0ZSgnWHBhZmlsZS5vcmlnJykKIGVuZGZ1bmMKIAogIiBUZXN0IGZvciB3cml0aW5nIHRvIGEgZmlsZSBpbiBhIHJlYWRvbmx5IGRpcmVjdG9yeQpAQCAtNTAwLDcgKzUwMCw3IEBACiBmdW5jIFRlc3Rfd3JpdGVfaW52YWxpZF9lbmNvZGluZygpCiAgIG5ldwogICBjYWxsIHNldGxpbmUoMSwgJ2FiYycpCi0gIGNhbGwgYXNzZXJ0X2ZhaWxzKCd3cml0ZSArK2VuYz1heGJ5YyBYZmlsZScsICdFMjEzOicpCisgIGNhbGwgYXNzZXJ0X2ZhaWxzKCd3cml0ZSArK2VuYz1heGJ5YyBYaWVmaWxlJywgJ0UyMTM6JykKICAgY2xvc2UhCiBlbmRmdW5jCiAKQEAgLTUxNSwxMDEgKzUxNSwxMDEgQEAKICAgICAyIGNwMTI1MSB0ZXh0OiDE6/8gVmltIHZlcnNpb24gNi4yLiAgz+7x6+Xk7eXlIOjn7OXt5e3o5TogMTk3MCBKYW4gMDEKICAgICAzIGNwODY2IHRleHQ6IISr7yBWaW0gdmVyc2lvbiA2LjIuICCPruGrpaStpaUgqKespa2lrailOiAxOTcwIEphbiAwMQogICBFTkQKLSAgY2FsbCB3cml0ZWZpbGUodGV4dCwgJ1hmaWxlJykKLSAgZWRpdCBYZmlsZQorICBjYWxsIHdyaXRlZmlsZSh0ZXh0LCAnWHdmZWZpbGUnKQorICBlZGl0IFh3ZmVmaWxlCiAKICAgIiB3cml0ZSB0ZXN0czoKICAgIiBjb21iaW5lIHRocmVlIHZhbHVlcyBmb3IgJ2VuY29kaW5nJyB3aXRoIHRocmVlIHZhbHVlcyBmb3IgJ2ZpbGVlbmNvZGluZycKICAgIiBhbHNvIHdyaXRlIGZpbGVzIGZvciByZWFkIHRlc3RzCiAgIGNhbGwgY3Vyc29yKDEsIDEpCiAgIHNldCBlbmNvZGluZz11dGYtOAotICAudyEgKytlbmM9dXRmLTggWHRlc3QKLSAgLncgKytlbmM9Y3AxMjUxID4+IFh0ZXN0Ci0gIC53ICsrZW5jPWNwODY2ID4+IFh0ZXN0CisgIC53ISArK2VuYz11dGYtOCBYd2ZldGVzdAorICAudyArK2VuYz1jcDEyNTEgPj4gWHdmZXRlc3QKKyAgLncgKytlbmM9Y3A4NjYgPj4gWHdmZXRlc3QKICAgLnchICsrZW5jPXV0Zi04IFh1dGY4CiAgIGxldCBleHBlY3RlZCA9PDwgdHJpbSBFTkQKICAgICAxIHV0Zi04IHRleHQ6INCU0LvRjyBWaW0gdmVyc2lvbiA2LjIuICDQn9C+0YHQu9C10LTQvdC10LUg0LjQt9C80LXQvdC10L3QuNC1OiAxOTcwIEphbiAwMQogICAgIDEgdXRmLTggdGV4dDogxOv/IFZpbSB2ZXJzaW9uIDYuMi4gIM/u8evl5O3l5SDo5+zl7eXt6OU6IDE5NzAgSmFuIDAxCiAgICAgMSB1dGYtOCB0ZXh0OiCEq+8gVmltIHZlcnNpb24gNi4yLiAgj67hq6WkraWlIKinrKWtpa2opTogMTk3MCBKYW4gMDEKICAgRU5ECi0gIGNhbGwgYXNzZXJ0X2VxdWFsKGV4cGVjdGVkLCByZWFkZmlsZSgnWHRlc3QnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwZWN0ZWQsIHJlYWRmaWxlKCdYd2ZldGVzdCcpKQogCiAgIGNhbGwgY3Vyc29yKDIsIDEpCiAgIHNldCBlbmNvZGluZz1jcDEyNTEKLSAgLnchICsrZW5jPXV0Zi04IFh0ZXN0Ci0gIC53ICsrZW5jPWNwMTI1MSA+PiBYdGVzdAotICAudyArK2VuYz1jcDg2NiA+PiBYdGVzdAorICAudyEgKytlbmM9dXRmLTggWHdmZXRlc3QKKyAgLncgKytlbmM9Y3AxMjUxID4+IFh3ZmV0ZXN0CisgIC53ICsrZW5jPWNwODY2ID4+IFh3ZmV0ZXN0CiAgIC53ISArK2VuYz1jcDEyNTEgWGNwMTI1MQogICBsZXQgZXhwZWN0ZWQgPTw8IHRyaW0gRU5ECiAgICAgMiBjcDEyNTEgdGV4dDog0JTQu9GPIFZpbSB2ZXJzaW9uIDYuMi4gINCf0L7RgdC70LXQtNC90LXQtSDQuNC30LzQtdC90LXQvdC40LU6IDE5NzAgSmFuIDAxCiAgICAgMiBjcDEyNTEgdGV4dDogxOv/IFZpbSB2ZXJzaW9uIDYuMi4gIM/u8evl5O3l5SDo5+zl7eXt6OU6IDE5NzAgSmFuIDAxCiAgICAgMiBjcDEyNTEgdGV4dDoghKvvIFZpbSB2ZXJzaW9uIDYuMi4gII+u4aulpK2lpSCop6ylraWtqKU6IDE5NzAgSmFuIDAxCiAgIEVORAotICBjYWxsIGFzc2VydF9lcXVhbChleHBlY3RlZCwgcmVhZGZpbGUoJ1h0ZXN0JykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKGV4cGVjdGVkLCByZWFkZmlsZSgnWHdmZXRlc3QnKSkKIAogICBjYWxsIGN1cnNvcigzLCAxKQogICBzZXQgZW5jb2Rpbmc9Y3A4NjYKLSAgLnchICsrZW5jPXV0Zi04IFh0ZXN0Ci0gIC53ICsrZW5jPWNwMTI1MSA+PiBYdGVzdAotICAudyArK2VuYz1jcDg2NiA+PiBYdGVzdAorICAudyEgKytlbmM9dXRmLTggWHdmZXRlc3QKKyAgLncgKytlbmM9Y3AxMjUxID4+IFh3ZmV0ZXN0CisgIC53ICsrZW5jPWNwODY2ID4+IFh3ZmV0ZXN0CiAgIC53ISArK2VuYz1jcDg2NiBYY3A4NjYKICAgbGV0IGV4cGVjdGVkID08PCB0cmltIEVORAogICAgIDMgY3A4NjYgdGV4dDog0JTQu9GPIFZpbSB2ZXJzaW9uIDYuMi4gINCf0L7RgdC70LXQtNC90LXQtSDQuNC30LzQtdC90LXQvdC40LU6IDE5NzAgSmFuIDAxCiAgICAgMyBjcDg2NiB0ZXh0OiDE6/8gVmltIHZlcnNpb24gNi4yLiAgz+7x6+Xk7eXlIOjn7OXt5e3o5TogMTk3MCBKYW4gMDEKICAgICAzIGNwODY2IHRleHQ6IISr7yBWaW0gdmVyc2lvbiA2LjIuICCPruGrpaStpaUgqKespa2lrailOiAxOTcwIEphbiAwMQogICBFTkQKLSAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwZWN0ZWQsIHJlYWRmaWxlKCdYdGVzdCcpKQorICBjYWxsIGFzc2VydF9lcXVhbChleHBlY3RlZCwgcmVhZGZpbGUoJ1h3ZmV0ZXN0JykpCiAKICAgIiByZWFkIHRocmVlICdmaWxlZW5jb2RpbmcncyB3aXRoIHV0Zi04ICdlbmNvZGluZycKICAgc2V0IGVuY29kaW5nPXV0Zi04IGZlbmNzPXV0Zi04LGNwMTI1MQogICBlIFh1dGY4Ci0gIC53ISArK2VuYz11dGYtOCBYdGVzdAorICAudyEgKytlbmM9dXRmLTggWHdmZXRlc3QKICAgZSBYY3AxMjUxCi0gIC53ICsrZW5jPXV0Zi04ID4+IFh0ZXN0CisgIC53ICsrZW5jPXV0Zi04ID4+IFh3ZmV0ZXN0CiAgIHNldCBmZW5jcz11dGYtOCxjcDg2NgogICBlIFhjcDg2NgotICAudyArK2VuYz11dGYtOCA+PiBYdGVzdAorICAudyArK2VuYz11dGYtOCA+PiBYd2ZldGVzdAogICBsZXQgZXhwZWN0ZWQgPTw8IHRyaW0gRU5ECiAgICAgMSB1dGYtOCB0ZXh0OiDQlNC70Y8gVmltIHZlcnNpb24gNi4yLiAg0J/QvtGB0LvQtdC00L3QtdC1INC40LfQvNC10L3QtdC90LjQtTogMTk3MCBKYW4gMDEKICAgICAyIGNwMTI1MSB0ZXh0OiDQlNC70Y8gVmltIHZlcnNpb24gNi4yLiAg0J/QvtGB0LvQtdC00L3QtdC1INC40LfQvNC10L3QtdC90LjQtTogMTk3MCBKYW4gMDEKICAgICAzIGNwODY2IHRleHQ6INCU0LvRjyBWaW0gdmVyc2lvbiA2LjIuICDQn9C+0YHQu9C10LTQvdC10LUg0LjQt9C80LXQvdC10L3QuNC1OiAxOTcwIEphbiAwMQogICBFTkQKLSAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwZWN0ZWQsIHJlYWRmaWxlKCdYdGVzdCcpKQorICBjYWxsIGFzc2VydF9lcXVhbChleHBlY3RlZCwgcmVhZGZpbGUoJ1h3ZmV0ZXN0JykpCiAKICAgIiByZWFkIHRocmVlICdmaWxlZW5jb2RpbmcncyB3aXRoIGNwMTI1MSAnZW5jb2RpbmcnCiAgIHNldCBlbmNvZGluZz11dGYtOCBmZW5jcz11dGYtOCxjcDEyNTEKICAgZSBYdXRmOAotICAudyEgKytlbmM9Y3AxMjUxIFh0ZXN0CisgIC53ISArK2VuYz1jcDEyNTEgWHdmZXRlc3QKICAgZSBYY3AxMjUxCi0gIC53ICsrZW5jPWNwMTI1MSA+PiBYdGVzdAorICAudyArK2VuYz1jcDEyNTEgPj4gWHdmZXRlc3QKICAgc2V0IGZlbmNzPXV0Zi04LGNwODY2CiAgIGUgWGNwODY2Ci0gIC53ICsrZW5jPWNwMTI1MSA+PiBYdGVzdAorICAudyArK2VuYz1jcDEyNTEgPj4gWHdmZXRlc3QKICAgbGV0IGV4cGVjdGVkID08PCB0cmltIEVORAogICAgIDEgdXRmLTggdGV4dDogxOv/IFZpbSB2ZXJzaW9uIDYuMi4gIM/u8evl5O3l5SDo5+zl7eXt6OU6IDE5NzAgSmFuIDAxCiAgICAgMiBjcDEyNTEgdGV4dDogxOv/IFZpbSB2ZXJzaW9uIDYuMi4gIM/u8evl5O3l5SDo5+zl7eXt6OU6IDE5NzAgSmFuIDAxCiAgICAgMyBjcDg2NiB0ZXh0OiDE6/8gVmltIHZlcnNpb24gNi4yLiAgz+7x6+Xk7eXlIOjn7OXt5e3o5TogMTk3MCBKYW4gMDEKICAgRU5ECi0gIGNhbGwgYXNzZXJ0X2VxdWFsKGV4cGVjdGVkLCByZWFkZmlsZSgnWHRlc3QnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwZWN0ZWQsIHJlYWRmaWxlKCdYd2ZldGVzdCcpKQogCiAgICIgcmVhZCB0aHJlZSAnZmlsZWVuY29kaW5nJ3Mgd2l0aCBjcDg2NiAnZW5jb2RpbmcnCiAgIHNldCBlbmNvZGluZz1jcDg2NiBmZW5jcz11dGYtOCxjcDEyNTEKICAgZSBYdXRmOAotICAudyEgKytlbmM9Y3A4NjYgWHRlc3QKKyAgLnchICsrZW5jPWNwODY2IFh3ZmV0ZXN0CiAgIGUgWGNwMTI1MQotICAudyArK2VuYz1jcDg2NiA+PiBYdGVzdAorICAudyArK2VuYz1jcDg2NiA+PiBYd2ZldGVzdAogICBzZXQgZmVuY3M9dXRmLTgsY3A4NjYKICAgZSBYY3A4NjYKLSAgLncgKytlbmM9Y3A4NjYgPj4gWHRlc3QKKyAgLncgKytlbmM9Y3A4NjYgPj4gWHdmZXRlc3QKICAgbGV0IGV4cGVjdGVkID08PCB0cmltIEVORAogICAgIDEgdXRmLTggdGV4dDoghKvvIFZpbSB2ZXJzaW9uIDYuMi4gII+u4aulpK2lpSCop6ylraWtqKU6IDE5NzAgSmFuIDAxCiAgICAgMiBjcDEyNTEgdGV4dDoghKvvIFZpbSB2ZXJzaW9uIDYuMi4gII+u4aulpK2lpSCop6ylraWtqKU6IDE5NzAgSmFuIDAxCiAgICAgMyBjcDg2NiB0ZXh0OiCEq+8gVmltIHZlcnNpb24gNi4yLiAgj67hq6WkraWlIKinrKWtpa2opTogMTk3MCBKYW4gMDEKICAgRU5ECi0gIGNhbGwgYXNzZXJ0X2VxdWFsKGV4cGVjdGVkLCByZWFkZmlsZSgnWHRlc3QnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwZWN0ZWQsIHJlYWRmaWxlKCdYd2ZldGVzdCcpKQogCi0gIGNhbGwgZGVsZXRlKCdYZmlsZScpCi0gIGNhbGwgZGVsZXRlKCdYdGVzdCcpCisgIGNhbGwgZGVsZXRlKCdYd2ZlZmlsZScpCisgIGNhbGwgZGVsZXRlKCdYd2ZldGVzdCcpCiAgIGNhbGwgZGVsZXRlKCdYdXRmOCcpCiAgIGNhbGwgZGVsZXRlKCdYY3AxMjUxJykKICAgY2FsbCBkZWxldGUoJ1hjcDg2NicpCkBAIC02MzUsMTE0ICs2MzUsMTE0IEBACiAgIHNldCBjcG9wdGlvbnMrPVMKIAogICAiIENoZWNrIHRoYXQgZWRpdGluZyBhIGxhdGluMSBmaWxlIGRvZXNuJ3Qgc2VlIGEgQk9NCi0gIGNhbGwgd3JpdGVmaWxlKFsiXHhGRVx4RkVsYXRpbi0xIl0sICdYdGVzdDEnKQotICBlZGl0IFh0ZXN0MQorICBjYWxsIHdyaXRlZmlsZShbIlx4RkVceEZFbGF0aW4tMSJdLCAnWHJ3dGVzdDEnKQorICBlZGl0IFhyd3Rlc3QxCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCdsYXRpbjEnLCAmZmlsZWVuY29kaW5nKQogICBjYWxsIGFzc2VydF9lcXVhbCgwLCAmYm9tYikKICAgc2V0IGZlbmM9bGF0aW4xCi0gIHdyaXRlIFhmaWxlMgotICBjYWxsIGFzc2VydF9lcXVhbChbIlx4RkVceEZFbGF0aW4tMSIsICcnXSwgcmVhZGZpbGUoJ1hmaWxlMicsICdiJykpCisgIHdyaXRlIFhyd2ZpbGUyCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsiXHhGRVx4RkVsYXRpbi0xIiwgJyddLCByZWFkZmlsZSgnWHJ3ZmlsZTInLCAnYicpKQogICBzZXQgYm9tYiBmZW5jPWxhdGluMQotICB3cml0ZSBYdGVzdDMKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWyJceEZFXHhGRWxhdGluLTEiLCAnJ10sIHJlYWRmaWxlKCdYdGVzdDMnLCAnYicpKQorICB3cml0ZSBYcnd0ZXN0MworICBjYWxsIGFzc2VydF9lcXVhbChbIlx4RkVceEZFbGF0aW4tMSIsICcnXSwgcmVhZGZpbGUoJ1hyd3Rlc3QzJywgJ2InKSkKICAgc2V0IGJvbWImCiAKICAgIiBDaGVjayB1dGYtOCBCT00KICAgJWJ3IQotICBjYWxsIHdyaXRlZmlsZShbdXRmOF9ib20gLi4gInV0Zi04Il0sICdYdGVzdDEnKQotICBlZGl0ISBYdGVzdDEKKyAgY2FsbCB3cml0ZWZpbGUoW3V0ZjhfYm9tIC4uICJ1dGYtOCJdLCAnWHJ3dGVzdDEnKQorICBlZGl0ISBYcnd0ZXN0MQogICBjYWxsIGFzc2VydF9lcXVhbCgndXRmLTgnLCAmZmlsZWVuY29kaW5nKQogICBjYWxsIGFzc2VydF9lcXVhbCgxLCAmYm9tYikKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ3V0Zi04JywgZ2V0bGluZSgxKSkKICAgc2V0IGZlbmM9bGF0aW4xCi0gIHdyaXRlISBYZmlsZTIKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWyd1dGYtOCcsICcnXSwgcmVhZGZpbGUoJ1hmaWxlMicsICdiJykpCisgIHdyaXRlISBYcndmaWxlMgorICBjYWxsIGFzc2VydF9lcXVhbChbJ3V0Zi04JywgJyddLCByZWFkZmlsZSgnWHJ3ZmlsZTInLCAnYicpKQogICBzZXQgZmVuYz11dGYtOAotICB3ISBYdGVzdDMKLSAgY2FsbCBhc3NlcnRfZXF1YWwoW3V0ZjhfYm9tIC4uICJ1dGYtOCIsICcnXSwgcmVhZGZpbGUoJ1h0ZXN0MycsICdiJykpCisgIHchIFhyd3Rlc3QzCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFt1dGY4X2JvbSAuLiAidXRmLTgiLCAnJ10sIHJlYWRmaWxlKCdYcnd0ZXN0MycsICdiJykpCiAKICAgIiBDaGVjayB1dGYtOCB3aXRoIGFuIGVycm9yICh3aWxsIGZhbGwgYmFjayB0byBsYXRpbi0xKQogICAlYnchCi0gIGNhbGwgd3JpdGVmaWxlKFt1dGY4X2JvbSAuLiAidXRmLThceDgwZXJyIl0sICdYdGVzdDEnKQotICBlZGl0ISBYdGVzdDEKKyAgY2FsbCB3cml0ZWZpbGUoW3V0ZjhfYm9tIC4uICJ1dGYtOFx4ODBlcnIiXSwgJ1hyd3Rlc3QxJykKKyAgZWRpdCEgWHJ3dGVzdDEKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ2xhdGluMScsICZmaWxlZW5jb2RpbmcpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDAsICZib21iKQogICBjYWxsIGFzc2VydF9lcXVhbCgiXHhDM1x4QUZceEMyXHhCQlx4QzJceEJGdXRmLThceEMyXHg4MGVyciIsIGdldGxpbmUoMSkpCiAgIHNldCBmZW5jPWxhdGluMQotICB3cml0ZSEgWGZpbGUyCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFt1dGY4X2JvbSAuLiAidXRmLThceDgwZXJyIiwgJyddLCByZWFkZmlsZSgnWGZpbGUyJywgJ2InKSkKKyAgd3JpdGUhIFhyd2ZpbGUyCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFt1dGY4X2JvbSAuLiAidXRmLThceDgwZXJyIiwgJyddLCByZWFkZmlsZSgnWHJ3ZmlsZTInLCAnYicpKQogICBzZXQgZmVuYz11dGYtOAotICB3ISBYdGVzdDMKKyAgdyEgWHJ3dGVzdDMKICAgY2FsbCBhc3NlcnRfZXF1YWwoWyJceEMzXHhBRlx4QzJceEJCXHhDMlx4QkZ1dGYtOFx4QzJceDgwZXJyIiwgJyddLAotICAgICAgICBcIHJlYWRmaWxlKCdYdGVzdDMnLCAnYicpKQorICAgICAgICBcIHJlYWRmaWxlKCdYcnd0ZXN0MycsICdiJykpCiAKICAgIiBDaGVjayB1Y3MtMiBCT00KICAgJWJ3IQotICBjYWxsIHdyaXRlZmlsZShbdXRmMTZiZV9ib20gLi4gIlxudVxuY1xuc1xuLVxuMlxuIl0sICdYdGVzdDEnKQotICBlZGl0ISBYdGVzdDEKKyAgY2FsbCB3cml0ZWZpbGUoW3V0ZjE2YmVfYm9tIC4uICJcbnVcbmNcbnNcbi1cbjJcbiJdLCAnWHJ3dGVzdDEnKQorICBlZGl0ISBYcnd0ZXN0MQogICBjYWxsIGFzc2VydF9lcXVhbCgndXRmLTE2JywgJmZpbGVlbmNvZGluZykKICAgY2FsbCBhc3NlcnRfZXF1YWwoMSwgJmJvbWIpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCd1Y3MtMicsIGdldGxpbmUoMSkpCiAgIHNldCBmZW5jPWxhdGluMQotICB3cml0ZSEgWGZpbGUyCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsidWNzLTIiLCAnJ10sIHJlYWRmaWxlKCdYZmlsZTInLCAnYicpKQorICB3cml0ZSEgWHJ3ZmlsZTIKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWyJ1Y3MtMiIsICcnXSwgcmVhZGZpbGUoJ1hyd2ZpbGUyJywgJ2InKSkKICAgc2V0IGZlbmM9dWNzLTIKLSAgdyEgWHRlc3QzCisgIHchIFhyd3Rlc3QzCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKFt1dGYxNmJlX2JvbSAuLiAiXG51XG5jXG5zXG4tXG4yXG4iLCAnJ10sCi0gICAgICAgIFwgcmVhZGZpbGUoJ1h0ZXN0MycsICdiJykpCisgICAgICAgIFwgcmVhZGZpbGUoJ1hyd3Rlc3QzJywgJ2InKSkKIAogICAiIENoZWNrIHVjcy0ybGUgQk9NCiAgICVidyEKLSAgY2FsbCB3cml0ZWZpbGUoW3V0ZjE2bGVfYm9tIC4uICJ1XG5jXG5zXG4tXG4yXG5sXG5lXG4iXSwgJ1h0ZXN0MScpCisgIGNhbGwgd3JpdGVmaWxlKFt1dGYxNmxlX2JvbSAuLiAidVxuY1xuc1xuLVxuMlxubFxuZVxuIl0sICdYcnd0ZXN0MScpCiAgICIgTmVlZCB0byBhZGQgYSBOVUwgYnl0ZSBhZnRlciB0aGUgTkwgYnl0ZQotICBjYWxsIHdyaXRlZmlsZSgwejAwLCAnWHRlc3QxJywgJ2EnKQotICBlZGl0ISBYdGVzdDEKKyAgY2FsbCB3cml0ZWZpbGUoMHowMCwgJ1hyd3Rlc3QxJywgJ2EnKQorICBlZGl0ISBYcnd0ZXN0MQogICBjYWxsIGFzc2VydF9lcXVhbCgndXRmLTE2bGUnLCAmZmlsZWVuY29kaW5nKQogICBjYWxsIGFzc2VydF9lcXVhbCgxLCAmYm9tYikKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ3Vjcy0ybGUnLCBnZXRsaW5lKDEpKQogICBzZXQgZmVuYz1sYXRpbjEKLSAgd3JpdGUhIFhmaWxlMgotICBjYWxsIGFzc2VydF9lcXVhbChbInVjcy0ybGUiLCAnJ10sIHJlYWRmaWxlKCdYZmlsZTInLCAnYicpKQorICB3cml0ZSEgWHJ3ZmlsZTIKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWyJ1Y3MtMmxlIiwgJyddLCByZWFkZmlsZSgnWHJ3ZmlsZTInLCAnYicpKQogICBzZXQgZmVuYz11Y3MtMmxlCi0gIHchIFh0ZXN0MworICB3ISBYcnd0ZXN0MwogICBjYWxsIGFzc2VydF9lcXVhbChbdXRmMTZsZV9ib20gLi4gInVcbmNcbnNcbi1cbjJcbmxcbmVcbiIsICJcbiJdLAotICAgICAgICBcIHJlYWRmaWxlKCdYdGVzdDMnLCAnYicpKQorICAgICAgICBcIHJlYWRmaWxlKCdYcnd0ZXN0MycsICdiJykpCiAKICAgIiBDaGVjayB1Y3MtNCBCT00KICAgJWJ3IQotICBjYWxsIHdyaXRlZmlsZShbdXRmMzJiZV9ib20gLi4gIlxuXG5cbnVcblxuXG5jXG5cblxuc1xuXG5cbi1cblxuXG40XG5cblxuIl0sICdYdGVzdDEnKQotICBlZGl0ISBYdGVzdDEKKyAgY2FsbCB3cml0ZWZpbGUoW3V0ZjMyYmVfYm9tIC4uICJcblxuXG51XG5cblxuY1xuXG5cbnNcblxuXG4tXG5cblxuNFxuXG5cbiJdLCAnWHJ3dGVzdDEnKQorICBlZGl0ISBYcnd0ZXN0MQogICBjYWxsIGFzc2VydF9lcXVhbCgndWNzLTQnLCAmZmlsZWVuY29kaW5nKQogICBjYWxsIGFzc2VydF9lcXVhbCgxLCAmYm9tYikKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ3Vjcy00JywgZ2V0bGluZSgxKSkKICAgc2V0IGZlbmM9bGF0aW4xCi0gIHdyaXRlISBYZmlsZTIKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWyJ1Y3MtNCIsICcnXSwgcmVhZGZpbGUoJ1hmaWxlMicsICdiJykpCisgIHdyaXRlISBYcndmaWxlMgorICBjYWxsIGFzc2VydF9lcXVhbChbInVjcy00IiwgJyddLCByZWFkZmlsZSgnWHJ3ZmlsZTInLCAnYicpKQogICBzZXQgZmVuYz11Y3MtNAotICB3ISBYdGVzdDMKLSAgY2FsbCBhc3NlcnRfZXF1YWwoW3V0ZjMyYmVfYm9tIC4uICJcblxuXG51XG5cblxuY1xuXG5cbnNcblxuXG4tXG5cblxuNFxuXG5cbiIsICcnXSwgcmVhZGZpbGUoJ1h0ZXN0MycsICdiJykpCisgIHchIFhyd3Rlc3QzCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFt1dGYzMmJlX2JvbSAuLiAiXG5cblxudVxuXG5cbmNcblxuXG5zXG5cblxuLVxuXG5cbjRcblxuXG4iLCAnJ10sIHJlYWRmaWxlKCdYcnd0ZXN0MycsICdiJykpCiAKICAgIiBDaGVjayB1Y3MtNGxlIEJPTQogICAlYnchCi0gIGNhbGwgd3JpdGVmaWxlKFt1dGYzMmxlX2JvbSAuLiAidVxuXG5cbmNcblxuXG5zXG5cblxuLVxuXG5cbjRcblxuXG5sXG5cblxuZVxuXG5cbiJdLCAnWHRlc3QxJykKKyAgY2FsbCB3cml0ZWZpbGUoW3V0ZjMybGVfYm9tIC4uICJ1XG5cblxuY1xuXG5cbnNcblxuXG4tXG5cblxuNFxuXG5cbmxcblxuXG5lXG5cblxuIl0sICdYcnd0ZXN0MScpCiAgICIgTmVlZCB0byBhZGQgdGhyZWUgTlVMIGJ5dGVzIGFmdGVyIHRoZSBOTCBieXRlCi0gIGNhbGwgd3JpdGVmaWxlKDB6MDAwMDAwLCAnWHRlc3QxJywgJ2EnKQotICBlZGl0ISBYdGVzdDEKKyAgY2FsbCB3cml0ZWZpbGUoMHowMDAwMDAsICdYcnd0ZXN0MScsICdhJykKKyAgZWRpdCEgWHJ3dGVzdDEKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ3Vjcy00bGUnLCAmZmlsZWVuY29kaW5nKQogICBjYWxsIGFzc2VydF9lcXVhbCgxLCAmYm9tYikKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ3Vjcy00bGUnLCBnZXRsaW5lKDEpKQogICBzZXQgZmVuYz1sYXRpbjEKLSAgd3JpdGUhIFhmaWxlMgotICBjYWxsIGFzc2VydF9lcXVhbChbInVjcy00bGUiLCAnJ10sIHJlYWRmaWxlKCdYZmlsZTInLCAnYicpKQorICB3cml0ZSEgWHJ3ZmlsZTIKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWyJ1Y3MtNGxlIiwgJyddLCByZWFkZmlsZSgnWHJ3ZmlsZTInLCAnYicpKQogICBzZXQgZmVuYz11Y3MtNGxlCi0gIHchIFh0ZXN0MwotICBjYWxsIGFzc2VydF9lcXVhbChbdXRmMzJsZV9ib20gLi4gInVcblxuXG5jXG5cblxuc1xuXG5cbi1cblxuXG40XG5cblxubFxuXG5cbmVcblxuXG4iLCAiXG5cblxuIl0sIHJlYWRmaWxlKCdYdGVzdDMnLCAnYicpKQorICB3ISBYcnd0ZXN0MworICBjYWxsIGFzc2VydF9lcXVhbChbdXRmMzJsZV9ib20gLi4gInVcblxuXG5jXG5cblxuc1xuXG5cbi1cblxuXG40XG5cblxubFxuXG5cbmVcblxuXG4iLCAiXG5cblxuIl0sIHJlYWRmaWxlKCdYcnd0ZXN0MycsICdiJykpCiAKICAgc2V0IGNwb3B0aW9ucy09UwogICBsZXQgJmZpbGVlbmNvZGluZyA9IHNhdmVfZmlsZWVuY29kaW5nCi0gIGNhbGwgZGVsZXRlKCdYdGVzdDEnKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUyJykKLSAgY2FsbCBkZWxldGUoJ1h0ZXN0MycpCisgIGNhbGwgZGVsZXRlKCdYcnd0ZXN0MScpCisgIGNhbGwgZGVsZXRlKCdYcndmaWxlMicpCisgIGNhbGwgZGVsZXRlKCdYcnd0ZXN0MycpCiAgICVidyEKIGVuZGZ1bmMKIApAQCAtNzczLDgzICs3NzMsODMgQEAKICAgIiBXaXRoIHRoZSBkZWZhdWx0ICdiYWNrdXBjb3B5JyBzZXR0aW5nLCBzYXZpbmcgYSBzeW1ib2xpYyBsaW5rIGZpbGUKICAgIiBzaG91bGQgbm90IGJyZWFrIHRoZSBsaW5rLgogICBzZXQgYmFja3VwY29weSYKLSAgY2FsbCB3cml0ZWZpbGUoWycxMTExJ10sICdYZmlsZTEnKQotICBzaWxlbnQgIWxuIC1zIFhmaWxlMSBYZmlsZTIKLSAgbmV3IFhmaWxlMgorICBjYWxsIHdyaXRlZmlsZShbJzExMTEnXSwgJ1hiY2ZpbGUxJykKKyAgc2lsZW50ICFsbiAtcyBYYmNmaWxlMSBYYmNmaWxlMgorICBuZXcgWGJjZmlsZTIKICAgY2FsbCBzZXRsaW5lKDEsIFsnMjIyMiddKQogICB3cml0ZQogICBjbG9zZQotICBjYWxsIGFzc2VydF9lcXVhbChbJzIyMjInXSwgcmVhZGZpbGUoJ1hmaWxlMScpKQotICBjYWxsIGFzc2VydF9lcXVhbCgnWGZpbGUxJywgcmVzb2x2ZSgnWGZpbGUyJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCdsaW5rJywgZ2V0ZnR5cGUoJ1hmaWxlMicpKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUxJykKLSAgY2FsbCBkZWxldGUoJ1hmaWxlMicpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMjIyMiddLCByZWFkZmlsZSgnWGJjZmlsZTEnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoJ1hiY2ZpbGUxJywgcmVzb2x2ZSgnWGJjZmlsZTInKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoJ2xpbmsnLCBnZXRmdHlwZSgnWGJjZmlsZTInKSkKKyAgY2FsbCBkZWxldGUoJ1hiY2ZpbGUxJykKKyAgY2FsbCBkZWxldGUoJ1hiY2ZpbGUyJykKIAogICAiIFdpdGggdGhlICdiYWNrdXBjb3B5JyBzZXQgdG8gJ2JyZWFrc3ltbGluaycsIHNhdmluZyBhIHN5bWJvbGljIGxpbmsgZmlsZQogICAiIHNob3VsZCBicmVhayB0aGUgbGluay4KICAgc2V0IGJhY2t1cGNvcHk9eWVzLGJyZWFrc3ltbGluawotICBjYWxsIHdyaXRlZmlsZShbJzExMTEnXSwgJ1hmaWxlMScpCi0gIHNpbGVudCAhbG4gLXMgWGZpbGUxIFhmaWxlMgotICBuZXcgWGZpbGUyCisgIGNhbGwgd3JpdGVmaWxlKFsnMTExMSddLCAnWGJjZmlsZTEnKQorICBzaWxlbnQgIWxuIC1zIFhiY2ZpbGUxIFhiY2ZpbGUyCisgIG5ldyBYYmNmaWxlMgogICBjYWxsIHNldGxpbmUoMSwgWycyMjIyJ10pCiAgIHdyaXRlCiAgIGNsb3NlCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMTExMSddLCByZWFkZmlsZSgnWGZpbGUxJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMjIyMiddLCByZWFkZmlsZSgnWGZpbGUyJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCdYZmlsZTInLCByZXNvbHZlKCdYZmlsZTInKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoJ2ZpbGUnLCBnZXRmdHlwZSgnWGZpbGUyJykpCi0gIGNhbGwgZGVsZXRlKCdYZmlsZTEnKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUyJykKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWycxMTExJ10sIHJlYWRmaWxlKCdYYmNmaWxlMScpKQorICBjYWxsIGFzc2VydF9lcXVhbChbJzIyMjInXSwgcmVhZGZpbGUoJ1hiY2ZpbGUyJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKCdYYmNmaWxlMicsIHJlc29sdmUoJ1hiY2ZpbGUyJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKCdmaWxlJywgZ2V0ZnR5cGUoJ1hiY2ZpbGUyJykpCisgIGNhbGwgZGVsZXRlKCdYYmNmaWxlMScpCisgIGNhbGwgZGVsZXRlKCdYYmNmaWxlMicpCiAgIHNldCBiYWNrdXBjb3B5JgogCiAgICIgV2l0aCB0aGUgZGVmYXVsdCAnYmFja3VwY29weScgc2V0dGluZywgc2F2aW5nIGEgaGFyZCBsaW5rIGZpbGUKICAgIiBzaG91bGQgbm90IGJyZWFrIHRoZSBsaW5rLgogICBzZXQgYmFja3VwY29weSYKLSAgY2FsbCB3cml0ZWZpbGUoWycxMTExJ10sICdYZmlsZTEnKQotICBzaWxlbnQgIWxuIFhmaWxlMSBYZmlsZTIKLSAgbmV3IFhmaWxlMgorICBjYWxsIHdyaXRlZmlsZShbJzExMTEnXSwgJ1hiY2ZpbGUxJykKKyAgc2lsZW50ICFsbiBYYmNmaWxlMSBYYmNmaWxlMgorICBuZXcgWGJjZmlsZTIKICAgY2FsbCBzZXRsaW5lKDEsIFsnMjIyMiddKQogICB3cml0ZQogICBjbG9zZQotICBjYWxsIGFzc2VydF9lcXVhbChbJzIyMjInXSwgcmVhZGZpbGUoJ1hmaWxlMScpKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUxJykKLSAgY2FsbCBkZWxldGUoJ1hmaWxlMicpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMjIyMiddLCByZWFkZmlsZSgnWGJjZmlsZTEnKSkKKyAgY2FsbCBkZWxldGUoJ1hiY2ZpbGUxJykKKyAgY2FsbCBkZWxldGUoJ1hiY2ZpbGUyJykKIAogICAiIFdpdGggdGhlICdiYWNrdXBjb3B5JyBzZXQgdG8gJ2JyZWFrc3ltbGluaycsIHNhdmluZyBhIGhhcmQgbGluayBmaWxlCiAgICIgc2hvdWxkIGJyZWFrIHRoZSBsaW5rLgogICBzZXQgYmFja3VwY29weT15ZXMsYnJlYWtoYXJkbGluawotICBjYWxsIHdyaXRlZmlsZShbJzExMTEnXSwgJ1hmaWxlMScpCi0gIHNpbGVudCAhbG4gWGZpbGUxIFhmaWxlMgotICBuZXcgWGZpbGUyCisgIGNhbGwgd3JpdGVmaWxlKFsnMTExMSddLCAnWGJjZmlsZTEnKQorICBzaWxlbnQgIWxuIFhiY2ZpbGUxIFhiY2ZpbGUyCisgIG5ldyBYYmNmaWxlMgogICBjYWxsIHNldGxpbmUoMSwgWycyMjIyJ10pCiAgIHdyaXRlCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMTExMSddLCByZWFkZmlsZSgnWGZpbGUxJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMjIyMiddLCByZWFkZmlsZSgnWGZpbGUyJykpCi0gIGNhbGwgZGVsZXRlKCdYZmlsZTEnKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUyJykKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWycxMTExJ10sIHJlYWRmaWxlKCdYYmNmaWxlMScpKQorICBjYWxsIGFzc2VydF9lcXVhbChbJzIyMjInXSwgcmVhZGZpbGUoJ1hiY2ZpbGUyJykpCisgIGNhbGwgZGVsZXRlKCdYYmNmaWxlMScpCisgIGNhbGwgZGVsZXRlKCdYYmNmaWxlMicpCiAKICAgIiBJZiBhIGJhY2t1cCBmaWxlIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlbiBhIHNsaWdodGx5IG1vZGlmaWVkIGZpbGVuYW1lCiAgICIgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGJhY2t1cCBmaWxlLiBUcnkgd2l0aCAnYmFja3VwY29weScgc2V0IHRvICd5ZXMnIGFuZAogICAiICdubycuCiAgICVidwotICBjYWxsIHdyaXRlZmlsZShbJ2FhYWEnXSwgJ1hmaWxlJykKLSAgY2FsbCB3cml0ZWZpbGUoWydiYmJiJ10sICdYZmlsZS5iYWsnKQorICBjYWxsIHdyaXRlZmlsZShbJ2FhYWEnXSwgJ1hiY2ZpbGUnKQorICBjYWxsIHdyaXRlZmlsZShbJ2JiYmInXSwgJ1hiY2ZpbGUuYmFrJykKICAgc2V0IGJhY2t1cGNvcHk9eWVzIGJhY2t1cGV4dD0uYmFrCi0gIG5ldyBYZmlsZQorICBuZXcgWGJjZmlsZQogICBjYWxsIHNldGxpbmUoMSwgWydjY2NjJ10pCiAgIHdyaXRlCiAgIGNsb3NlCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnY2NjYyddLCByZWFkZmlsZSgnWGZpbGUnKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydiYmJiJ10sIHJlYWRmaWxlKCdYZmlsZS5iYWsnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWydjY2NjJ10sIHJlYWRmaWxlKCdYYmNmaWxlJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnYmJiYiddLCByZWFkZmlsZSgnWGJjZmlsZS5iYWsnKSkKICAgc2V0IGJhY2t1cGNvcHk9bm8gYmFja3VwZXh0PS5iYWsKLSAgbmV3IFhmaWxlCisgIG5ldyBYYmNmaWxlCiAgIGNhbGwgc2V0bGluZSgxLCBbJ2RkZGQnXSkKICAgd3JpdGUKICAgY2xvc2UKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydkZGRkJ10sIHJlYWRmaWxlKCdYZmlsZScpKQotICBjYWxsIGFzc2VydF9lcXVhbChbJ2JiYmInXSwgcmVhZGZpbGUoJ1hmaWxlLmJhaycpKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUnKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUuYmFrJykKKyAgY2FsbCBhc3NlcnRfZXF1YWwoWydkZGRkJ10sIHJlYWRmaWxlKCdYYmNmaWxlJykpCisgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnYmJiYiddLCByZWFkZmlsZSgnWGJjZmlsZS5iYWsnKSkKKyAgY2FsbCBkZWxldGUoJ1hiY2ZpbGUnKQorICBjYWxsIGRlbGV0ZSgnWGJjZmlsZS5iYWsnKQogCiAgICIgV3JpdGUgdG8gYSBkZXZpY2UgZmlsZSAoaW4gVW5peC1saWtlIHN5c3RlbXMpIHdoaWNoIGNhbm5vdCBiZSBiYWNrZWQgdXAuCiAgIGlmIGhhcygndW5peCcpCkBAIC04ODAsMTAgKzg4MCwxMCBAQAogZnVuYyBUZXN0X3dyaXRlX3V0ZjE2KCkKICAgbmV3CiAgIGNhbGwgc2V0bGluZSgxLCBbIlxVMDAwMTAwMDEiXSkKLSAgd3JpdGUgKytlbmM9dXRmLTE2IFhmaWxlCisgIHdyaXRlICsrZW5jPXV0Zi0xNiBYdzE2ZmlsZQogICBidyEKLSAgY2FsbCBhc3NlcnRfZXF1YWwoMHpEODAwREMwMSwgcmVhZGZpbGUoJ1hmaWxlJywgJ0InKVswOjNdKQotICBjYWxsIGRlbGV0ZSgnWGZpbGUnKQorICBjYWxsIGFzc2VydF9lcXVhbCgwekQ4MDBEQzAxLCByZWFkZmlsZSgnWHcxNmZpbGUnLCAnQicpWzA6M10pCisgIGNhbGwgZGVsZXRlKCdYdzE2ZmlsZScpCiBlbmRmdW5jCiAKICIgVGVzdCBmb3IgdHJ5aW5nIHRvIHNhdmUgYSBiYWNrdXAgZmlsZSB3aGVuIHRoZSBiYWNrdXAgZmlsZSBpcyBhIHN5bWJvbGljCkBAIC04OTMsMjQgKzg5MywyNCBAQAogICBjYWxsIG1rZGlyKCdYYmFja3VwJykKICAgbGV0IHNhdmVfYmFja3VwZGlyID0gJmJhY2t1cGRpcgogICBzZXQgYmFja3VwZGlyPS4sLi9YYmFja3VwCi0gIGNhbGwgd3JpdGVmaWxlKFsnMTExMSddLCAnWGZpbGUnKQotICBzaWxlbnQgIWxuIC1zIFhmaWxlIFhmaWxlLmJhaworICBjYWxsIHdyaXRlZmlsZShbJzExMTEnXSwgJ1h3YnNmaWxlJykKKyAgc2lsZW50ICFsbiAtcyBYd2JzZmlsZSBYd2JzZmlsZS5iYWsKIAotICBuZXcgWGZpbGUKKyAgbmV3IFh3YnNmaWxlCiAgIHNldCBiYWNrdXAgYmFja3VwY29weT15ZXMgYmFja3VwZXh0PS5iYWsKICAgd3JpdGUKLSAgY2FsbCBhc3NlcnRfZXF1YWwoJ2xpbmsnLCBnZXRmdHlwZSgnWGZpbGUuYmFrJykpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCdYZmlsZScsIHJlc29sdmUoJ1hmaWxlLmJhaycpKQorICBjYWxsIGFzc2VydF9lcXVhbCgnbGluaycsIGdldGZ0eXBlKCdYd2JzZmlsZS5iYWsnKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoJ1h3YnNmaWxlJywgcmVzb2x2ZSgnWHdic2ZpbGUuYmFrJykpCiAgICIgYmFja3VwIGZpbGUgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlICdiYWNrdXAnIGRpcmVjdG9yeQogICBpZiAhaGFzKCdic2QnKQogICAgICIgVGhpcyBjaGVjayBmYWlscyBvbiBGcmVlQlNECi0gICAgY2FsbCBhc3NlcnRfdHJ1ZShmaWxlcmVhZGFibGUoJy4vWGJhY2t1cC9YZmlsZS5iYWsnKSkKKyAgICBjYWxsIGFzc2VydF90cnVlKGZpbGVyZWFkYWJsZSgnLi9YYmFja3VwL1h3YnNmaWxlLmJhaycpKQogICBlbmRpZgogICBzZXQgYmFja3VwJiBiYWNrdXBjb3B5JiBiYWNrdXBleHQmCiAgICVidwogCi0gIGNhbGwgZGVsZXRlKCdYZmlsZScpCi0gIGNhbGwgZGVsZXRlKCdYZmlsZS5iYWsnKQorICBjYWxsIGRlbGV0ZSgnWHdic2ZpbGUnKQorICBjYWxsIGRlbGV0ZSgnWHdic2ZpbGUuYmFrJykKICAgY2FsbCBkZWxldGUoJ1hiYWNrdXAnLCAncmYnKQogICBsZXQgJmJhY2t1cGRpciA9IHNhdmVfYmFja3VwZGlyCiBlbmRmdW5jCkBAIC05MTgsMTkgKzkxOCwxOSBAQAogIiBUZXN0IGZvciAnOndyaXRlICsrYmluJyBhbmQgJzp3cml0ZSArK25vYmluJwogZnVuYyBUZXN0X3dyaXRlX2JpbmFyeV9maWxlKCkKICAgIiBjcmVhdGUgYSBmaWxlIHdpdGhvdXQgYW4gZW9sL2VvZiBjaGFyYWN0ZXIKLSAgY2FsbCB3cml0ZWZpbGUoMHo2MTYxNjEsICdYZmlsZTEnLCAnYicpCi0gIG5ldyBYZmlsZTEKLSAgd3JpdGUgKytiaW4gWGZpbGUyCi0gIHdyaXRlICsrbm9iaW4gWGZpbGUzCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDB6NjE2MTYxLCByZWFkYmxvYignWGZpbGUyJykpCisgIGNhbGwgd3JpdGVmaWxlKDB6NjE2MTYxLCAnWHdiZmlsZTEnLCAnYicpCisgIG5ldyBYd2JmaWxlMQorICB3cml0ZSArK2JpbiBYd2JmaWxlMgorICB3cml0ZSArK25vYmluIFh3YmZpbGUzCisgIGNhbGwgYXNzZXJ0X2VxdWFsKDB6NjE2MTYxLCByZWFkYmxvYignWHdiZmlsZTInKSkKICAgaWYgaGFzKCd3aW4zMicpCi0gICAgY2FsbCBhc3NlcnRfZXF1YWwoMHo2MTYxNjEwRC4wQSwgcmVhZGJsb2IoJ1hmaWxlMycpKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDB6NjE2MTYxMEQuMEEsIHJlYWRibG9iKCdYd2JmaWxlMycpKQogICBlbHNlCi0gICAgY2FsbCBhc3NlcnRfZXF1YWwoMHo2MTYxNjEwQSwgcmVhZGJsb2IoJ1hmaWxlMycpKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDB6NjE2MTYxMEEsIHJlYWRibG9iKCdYd2JmaWxlMycpKQogICBlbmRpZgotICBjYWxsIGRlbGV0ZSgnWGZpbGUxJykKLSAgY2FsbCBkZWxldGUoJ1hmaWxlMicpCi0gIGNhbGwgZGVsZXRlKCdYZmlsZTMnKQorICBjYWxsIGRlbGV0ZSgnWHdiZmlsZTEnKQorICBjYWxsIGRlbGV0ZSgnWHdiZmlsZTInKQorICBjYWxsIGRlbGV0ZSgnWHdiZmlsZTMnKQogZW5kZnVuYwogCiAiIENoZWNrIHRoYXQgYnVmZmVyIGlzIHdyaXR0ZW4gYmVmb3JlIHRyaWdnZXJpbmcgUXVpdFByZQo=