From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Diego Herrera To: git-commits@fedoraproject.org Subject: [rpms/onnx] main: Release 1.21.0 Date: Fri, 26 Jun 2026 23:55:04 GMT Message-ID: <178251810444.1.16476222067546857023.rpms-onnx-33d4cf6b4f12@fedoraproject.org> List-ID: X-Git-Repo: rpms/onnx X-Git-Branch: main X-Git-Rev: 33d4cf6b4f12eb5ede11eaa4c808ad5fe5f8dc83 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb25ueApCcmFuY2gg OiBtYWluCkNvbW1pdCA6IDMzZDRjZjZiNGYxMmViNWVkZTExZWFhNGM4MDhhZDVmZTVmOGRjODMK QXV0aG9yIDogRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4KRGF0ZSAgIDogMjAy Ni0wNi0wN1QyMjo0MjowMS0wNDowMApTdGF0cyAgOiArNTkyNC8tNTk5NyBpbiAxMCBmaWxlKHMp ClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvb25ueC9jLzMzZDRj ZjZiNGYxMmViNWVkZTExZWFhNGM4MDhhZDVmZTVmOGRjODM/YnJhbmNoPW1haW4KCkxvZzoKUmVs ZWFzZSAxLjIxLjAKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5k ZXggNzEwMjIzNS4uMzZjZDU4MyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdu b3JlCkBAIC0xLDUgKzEsNyBAQAogcmVzdWx0c18qCi0qLnJwbQorcmV2aWV3LSoKKyouc3JjLnJw bQorKi50YXIuZ3oKIC9vbm54LTEuMTMuMC50YXIuZ3oKIC9vbm54LTEuMTQuMC50YXIuZ3oKIC9v bm54LTEuMTQuMS50YXIuZ3oKCmRpZmYgLS1naXQgYS8wMDAwLUJ1aWxkLXNoYXJlZC1saWJyYXJp ZXMtYW5kLWZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoIGIvMDAwMC1CdWlsZC1zaGFyZWQtbGli cmFyaWVzLWFuZC1maXgtaW5zdGFsbC1sb2NhdGlvbi5wYXRjaAppbmRleCAzOTUxMWQxLi41NDIz NzU1IDEwMDY0NAotLS0gYS8wMDAwLUJ1aWxkLXNoYXJlZC1saWJyYXJpZXMtYW5kLWZpeC1pbnN0 YWxsLWxvY2F0aW9uLnBhdGNoCisrKyBiLzAwMDAtQnVpbGQtc2hhcmVkLWxpYnJhcmllcy1hbmQt Zml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKQEAgLTEsNzMgKzEsNzIgQEAKLUZyb20gOGEyYTIz MjdlODlmYjYyYmI3NGNlZDEyMWNiZGY4YzNhNTlhZDA0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb20gYTQ4ZjQyYjFlM2RkOTcyY2YyYzVhZDliOTIyN2RhOWUyYjFjOWZhYiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZh cmV6YXlsbG9uQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjQgRmViIDIwMjQgMTQ6NDg6NDUgKzAx MDAKLVN1YmplY3Q6IFtQQVRDSCAwLzZdIEJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgYW5kIGZpeCBp bnN0YWxsIGxvY2F0aW9uCitTdWJqZWN0OiBbUEFUQ0ggMC8yXSBCdWlsZCBzaGFyZWQgbGlicmFy aWVzIGFuZCBmaXggaW5zdGFsbCBsb2NhdGlvbgorCitUaGlzIHBhdGNoIHdhcyB1cGRhdGVkIHRv IGJlIGFibGUgdG8gYmUgdXNlZCBvbiBtb2Rlcm4gdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkuCisK K0NvLWF1dGhvcmVkLWJ5OiBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUByZWRoYXQuY29tPgogCiAt LS0KLSBDTWFrZUxpc3RzLnR4dCB8IDIyICsrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUg Y2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBh L0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGQxNWQ5N2VkYy4uZDZlMDRk MmU5IDEwMDY0NAoraW5kZXggMDQ0OTk2ZTFiLi4zYTA4ZDMyODkgMTAwNjQ0CiAtLS0gYS9DTWFr ZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC00NjYsNyArNDY2LDcgQEAgbGlz dChSRU1PVkVfSVRFTSBfX3RtcF9zcmNzICIke09OTlhfUk9PVH0vb25ueC9jcHAycHlfZXhwb3J0 LmNjIikKLSBsaXN0KFJFTU9WRV9JVEVNIF9fdG1wX3NyY3MgJHtvbm54X2d0ZXN0c19zcmN9KQot IGxpc3QoQVBQRU5EIE9OTlhfU1JDUyAke19fdG1wX3NyY3N9KQotIAotLWFkZF9saWJyYXJ5KG9u bnhfcHJvdG8gJHtPTk5YX1BST1RPX1NSQ1N9ICR7T05OWF9QUk9UT19IRFJTfSkKLSthZGRfbGli cmFyeShvbm54X3Byb3RvIFNIQVJFRCAke09OTlhfUFJPVE9fU1JDU30gJHtPTk5YX1BST1RPX0hE UlN9KQotIGFkZF9kZXBlbmRlbmNpZXMob25ueF9wcm90byBnZW5fb25ueF9vcGVyYXRvcnNfcHJv dG8gZ2VuX29ubnhfZGF0YV9wcm90bykKLSB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcyhvbm54 X3Byb3RvIFBVQkxJQwotICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX0JJTkFS WV9ESVJ9PgotQEAgLTQ5OSw2ICs0OTksOCBAQCBlbHNlKCkKLSAgIHNldChPTk5YX0FQSV9ERUZJ TkUgIi1ET05OWF9BUEk9X19hdHRyaWJ1dGVfX1woXChfX3Zpc2liaWxpdHlfX1woXCJkZWZhdWx0 XCJcKVwpXCkiKQotICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG9ubnhfcHJvdG8gUFJPUEVSVElF UyBDWFhfVklTSUJJTElUWV9QUkVTRVQgaGlkZGVuKQotICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVz KG9ubnhfcHJvdG8gUFJPUEVSVElFUyBWSVNJQklMSVRZX0lOTElORVNfSElEREVOIDEpCi0rICBz ZXRfdGFyZ2V0X3Byb3BlcnRpZXMob25ueF9wcm90byBQUk9QRVJUSUVTIFZFUlNJT04gJHtPTk5Y X1ZFUlNJT059Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT T1ZFUlNJT04gJHtPTk5YX1ZFUlNJT059KQorQEAgLTQxNCwxOSArNDE0LDIxIEBAIGlmKE9OTlhf VVNFX0xJVEVfUFJPVE8pCisgICAgIHNldChMSU5LRURfUFJPVE9CVUZfVEFSR0VUIHByb3RvYnVm OjpsaWJwcm90b2J1Zi1saXRlKQorICAgZW5kaWYoKQogIGVuZGlmKCkKLSB0YXJnZXRfY29tcGls ZV9kZWZpbml0aW9ucyhvbm54X3Byb3RvIFBSSVZBVEUgJHtPTk5YX0FQSV9ERUZJTkV9KQotIAot QEAgLTUyMiw3ICs1MjQsOSBAQCBpZihDTUFLRV9TWVNURU1fTkFNRSBTVFJFUVVBTCAiQUlYIikK LSAgICMgU28sIGNyZWF0ZSBhIG9iamVjdCBsaWJyYXJ5Ci0gICBhZGRfbGlicmFyeShvbm54IE9C SkVDVCAke09OTlhfU1JDU30pCi0gZWxzZSgpCi0tICBhZGRfbGlicmFyeShvbm54ICR7T05OWF9T UkNTfSkKLSsgIGFkZF9saWJyYXJ5KG9ubnggU0hBUkVEICR7T05OWF9TUkNTfSkKLSsgIHNldF90 YXJnZXRfcHJvcGVydGllcyhvbm54IFBST1BFUlRJRVMgVkVSU0lPTiAke09OTlhfVkVSU0lPTn0K Ky1hZGRfbGlicmFyeShvbm54X3Byb3RvICR7T05OWF9QUk9UT19TUkNTfSkKKythZGRfbGlicmFy eShvbm54X3Byb3RvIFNIQVJFRCAke09OTlhfUFJPVE9fU1JDU30pCisgYWRkX29ubnhfZ2xvYmFs X2RlZmluZXMob25ueF9wcm90bykKKy0KKy1hZGRfbGlicmFyeShvbm54ICR7T05OWF9TUkNTfSAk e09OTlhfUFJPVE9fU1JDU30pCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG9ubnhfcHJvdG8gUFJP UEVSVElFUyBWRVJTSU9OICR7T05OWF9WRVJTSU9OfQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU09WRVJTSU9OICR7T05OWF9WRVJTSU9OfSkKKythZGRfbGli cmFyeShvbm54IFNIQVJFRCAke09OTlhfU1JDU30gJHtPTk5YX1BST1RPX1NSQ1N9KQorIGFkZF9k ZXBlbmRlbmNpZXMob25ueCBvbm54X3Byb3RvKQorIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGll cygke09OTlhfU1JDU30gUFJPUEVSVElFUyBDWFhfVklTSUJJTElUWV9QUkVTRVQgaGlkZGVuKQor IGFkZF9vbm54X2dsb2JhbF9kZWZpbmVzKG9ubngpCistCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVz KG9ubnggUFJPUEVSVElFUyBWRVJTSU9OICR7T05OWF9WRVJTSU9OfQogKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTT1ZFUlNJT04gJHtPTk5YX1ZFUlNJT059KQorIGlm KE9OTlhfQlVJTERfUFlUSE9OKQorICAgIyBmaW5kIHN5c3RlbSBuYW5vYmluZAorICAgaWYoTk9U IERFRklORUQgbmFub2JpbmRfRElSIE9SICIke25hbm9iaW5kX0RJUn0iIFNUUkVRVUFMICIiKQor ICAgICBleGVjdXRlX3Byb2Nlc3MoCistICAgICAgQ09NTUFORCAke1B5dGhvbl9FWEVDVVRBQkxF fSAtbSBuYW5vYmluZCAtLWNtYWtlLWRpcgorKyAgICAgIENPTU1BTkQgJHtQeXRob25fRVhFQ1VU QUJMRX0gLW0gbmFub2JpbmQgLS1jbWFrZV9kaXIKKyAgICAgICBSRVNVTFRfVkFSSUFCTEUgTkFO T0JJTkRfQ01BS0VfUkVTVUxUCisgICAgICAgT1VUUFVUX1ZBUklBQkxFIE5BTk9CSU5EX0NNQUtF X0RJUgorICAgICAgIE9VVFBVVF9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFCitAQCAtNDkxLDYg KzQ5MywxNiBAQCBpZihPTk5YX0lOU1RBTEwpCisgICAgICAgICAgIERFU1RJTkFUSU9OICR7Q01B S0VfSU5TVEFMTF9JTkNMVURFRElSfQorICAgICAgICAgICBGSUxFU19NQVRDSElORworICAgICAg ICAgICBQQVRURVJOICIqLmgiKQorKyAgaW5zdGFsbChESVJFQ1RPUlkgJHtPTk5YX1JPT1R9L29u bngKKysgICAgICAgICAgREVTVElOQVRJT04gIiR7UFlfU0lURUFSQ0h9IgorKyAgICAgICAgICBG SUxFU19NQVRDSElORworKyAgICAgICAgICBQQVRURVJOICIqLnB5IgorKyAgICAgICAgICBQQVRU RVJOICJ0ZXN0LyoiIEVYQ0xVREUgKQorKyAgaW5zdGFsbChESVJFQ1RPUlkgJHtDTUFLRV9DVVJS RU5UX0JJTkFSWV9ESVJ9L29ubngKKysgICAgICAgICAgREVTVElOQVRJT04gICIke1BZX1NJVEVB UkNIfSIKKysgICAgICAgICAgRklMRVNfTUFUQ0hJTkcKKysgICAgICAgICAgUEFUVEVSTiAiKi5w eSIKKysgICAgICAgICAgUEFUVEVSTiAidGVzdC8qIiBFWENMVURFICkKICBlbmRpZigpCiAgCi0g dGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMob25ueCBQVUJMSUMKLUBAIC02ODksNiArNjkzLDE3 IEBAIGluc3RhbGwoRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9vbm54Ci0g ICAgICAgICBGSUxFU19NQVRDSElORwotICAgICAgICAgUEFUVEVSTiAiKi5oIikKLSAKLStpbnN0 YWxsKERJUkVDVE9SWSAke09OTlhfUk9PVH0vb25ueAotKyAgICAgICAgREVTVElOQVRJT04gIiR7 UFlfU0lURUFSQ0h9IgotKyAgICAgICAgRklMRVNfTUFUQ0hJTkcKLSsgICAgICAgIFBBVFRFUk4g IioucHkiCi0rICAgICAgICBQQVRURVJOICJ0ZXN0LyoiIEVYQ0xVREUgKQotK2luc3RhbGwoRElS RUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9vbm54Ci0rICAgICAgICBERVNUSU5B VElPTiAgIiR7UFlfU0lURUFSQ0h9IgotKyAgICAgICAgRklMRVNfTUFUQ0hJTkcKLSsgICAgICAg IFBBVFRFUk4gIioucHkiCi0rICAgICAgICBQQVRURVJOICJ0ZXN0LyoiIEVYQ0xVREUgKQotKwog IGNvbmZpZ3VyZV9maWxlKAotICAgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlL09OTlhDb25m aWdWZXJzaW9uLmNtYWtlLmluCi0gICAke1BST0pFQ1RfQklOQVJZX0RJUn0vT05OWENvbmZpZ1Zl cnNpb24uY21ha2UKLUBAIC03NDcsNiArNzYyLDkgQEAgZW5kaWYoKQotIGluc3RhbGwoVEFSR0VU UwotICAgb25ueCBvbm54X3Byb3RvCi0gICBFWFBPUlQgT05OWFRhcmdldHMgREVTVElOQVRJT04g JHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0pCi0raW5zdGFsbChUQVJHRVRTCi0rICBvbm54X2NwcDJw eV9leHBvcnQKLSsgIERFU1RJTkFUSU9OICIke1BZX1NJVEVBUkNIfS9vbm54IikKK0BAIC01NDQs NiArNTU2LDkgQEAgaWYoT05OWF9JTlNUQUxMKQorICAgaW5zdGFsbChUQVJHRVRTCisgICAgIG9u bnggb25ueF9wcm90bworICAgICBFWFBPUlQgT05OWFRhcmdldHMgREVTVElOQVRJT04gJHtDTUFL RV9JTlNUQUxMX0xJQkRJUn0pCisrICBpbnN0YWxsKFRBUkdFVFMKKysgICAgb25ueF9jcHAycHlf ZXhwb3J0CisrICAgIERFU1RJTkFUSU9OICIke1BZX1NJVEVBUkNIfS9vbm54IikKICAKLSBpZihP Tk5YX0JVSUxEX1RFU1RTKQotICAgaW5jbHVkZSgke09OTlhfUk9PVH0vY21ha2UvdW5pdHRlc3Qu Y21ha2UpCisgICBpbnN0YWxsKEVYUE9SVCBPTk5YVGFyZ2V0cworICAgICBERVNUSU5BVElPTiAi JHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvT05OWCIKIC0tIAotMi41Mi4wCisyLjU0LjAK IAoKZGlmZiAtLWdpdCBhLzAwMDEtVXNlLXN5c3RlbS1wcm90b2J1Zi1hbmQtcmVxdWlyZS1wYXJh bWV0ZXJpemVkLnBhdGNoIGIvMDAwMS1Vc2Utc3lzdGVtLXByb3RvYnVmLWFuZC1yZXF1aXJlLXBh cmFtZXRlcml6ZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZDUwMDcu LjAwMDAwMDAKLS0tIGEvMDAwMS1Vc2Utc3lzdGVtLXByb3RvYnVmLWFuZC1yZXF1aXJlLXBhcmFt ZXRlcml6ZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1Gcm9tIDMwNzQ1 ZWU2MjNmYjFmZTc1MzFkNjM5OWU1NGI1ZmZlNDExNDQ2ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBBbGVqYW5kcm8gQWx2YXJleiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFp bC5jb20+Ci1EYXRlOiBTYXQsIDI0IEZlYiAyMDI0IDE0OjUyOjI1ICswMTAwCi1TdWJqZWN0OiBb UEFUQ0ggMi80XSBVc2Ugc3lzdGVtIHByb3RvYnVmIGFuZCByZXF1aXJlIHBhcmFtZXRlcml6ZWQK LQotLS0tCi0gcmVxdWlyZW1lbnRzLnR4dCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcmVxdWlyZW1lbnRzLnR4 dCBiL3JlcXVpcmVtZW50cy50eHQKLWluZGV4IDdmM2E5YWQwMy4uNDZkZDdmN2ZkIDEwMDY0NAot LS0tIGEvcmVxdWlyZW1lbnRzLnR4dAotKysrIGIvcmVxdWlyZW1lbnRzLnR4dAotQEAgLTEsMiAr MSwzIEBACi0gbnVtcHk+PTEuMjAKLS1wcm90b2J1Zj49My4yMC4yCi0rcHJvdG9idWYgPj0gMy4x NC4wLCA8IDQKLStwYXJhbWV0ZXJpemVkID49IDAuOC4xLCA8IDEKLS0tIAotMi41Mi4wCi0KCmRp ZmYgLS1naXQgYS8wMDAyLUxldC1weXByb2plY3Rfd2hlZWwtdXNlLWJpbmFyaWVzLWZyb20tY21h a2VfYnVpbGQucGF0Y2ggYi8wMDAyLUxldC1weXByb2plY3Rfd2hlZWwtdXNlLWJpbmFyaWVzLWZy b20tY21ha2VfYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZTdm ZWQuLjAwMDAwMDAKLS0tIGEvMDAwMi1MZXQtcHlwcm9qZWN0X3doZWVsLXVzZS1iaW5hcmllcy1m cm9tLWNtYWtlX2J1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJv bSA3NWUxMDgyZjJkMTdjMmMyY2NiM2MzOGI0MjlmYTI0YTRiNDViYmVhIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXpheWxs b25AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyNCBGZWIgMjAyNCAxNDo1MzoxMCArMDEwMAotU3Vi amVjdDogW1BBVENIIDMvNF0gTGV0IHB5cHJvamVjdF93aGVlbCB1c2UgYmluYXJpZXMgZnJvbSBj bWFrZV9idWlsZAotCi0tLS0KLSBzZXR1cC5weSB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9z ZXR1cC5weQotaW5kZXggN2QyY2I5ZTUwLi5hZjkwNDlhMWUgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5w eQotKysrIGIvc2V0dXAucHkKLUBAIC0yNyw3ICsyNyw3IEBAIGltcG9ydCBzZXR1cHRvb2xzLmNv bW1hbmQuYnVpbGRfcHkKLSBpbXBvcnQgc2V0dXB0b29scy5jb21tYW5kLmRldmVsb3AKLSAKLSBU T1BfRElSID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotLUNN QUtFX0JVSUxEX0RJUiA9IG9zLnBhdGguam9pbihUT1BfRElSLCAiLnNldHVwdG9vbHMtY21ha2Ut YnVpbGQiKQotK0NNQUtFX0JVSUxEX0RJUiA9IG9zLnBhdGguam9pbihUT1BfRElSLCBvcy5lbnZp cm9uLmdldCgiVlBBVEhfQlVJTERESVIiLCAicmVkaGF0LWxpbnV4LWJ1aWxkIikpCi0gCi0gV0lO RE9XUyA9IG9zLm5hbWUgPT0gIm50IgotIAotQEAgLTE1MSw2ICsxNTEsNyBAQCBjbGFzcyBDbWFr ZUJ1aWxkKHNldHVwdG9vbHMuQ29tbWFuZCk6Ci0gICAgICAgICBzZWxmLmpvYnMgPSBtdWx0aXBy b2Nlc3NpbmcuY3B1X2NvdW50KCkgaWYgc2VsZi5qb2JzIGlzIE5vbmUgZWxzZSBpbnQoc2VsZi5q b2JzKQotIAotICAgICBkZWYgcnVuKHNlbGYpOgotKyAgICAgICAgcmV0dXJuCi0gICAgICAgICBv cy5tYWtlZGlycyhDTUFLRV9CVUlMRF9ESVIsIGV4aXN0X29rPVRydWUpCi0gCi0gICAgICAgICB3 aXRoIGNkKENNQUtFX0JVSUxEX0RJUik6Ci0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvMDAw Mi1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaCBiLzAwMDItUmVt b3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYjExMWNhYgotLS0gL2Rldi9udWxsCisrKyBiLzAwMDItUmVt b3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gKQEAgLTAsMCArMSw1NzM5 IEBACitGcm9tIDIzMWI4ZTUwOTNjMjRjZGM2MjQyZDJjODU2NWMxYWRiNTI2ZWViYTcgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUByZWRoYXQu Y29tPgorRGF0ZTogRnJpLCAyOSBNYXkgMjAyNiAxODo0NzoyNiAtMDQwMAorU3ViamVjdDogW1BB VENIIDIvMl0gUmVtb3ZlIHB5dGhvbi1wYXJhbWV0ZXJpemVkIGRlcGVuZGVuY3kKKworCitkaWZm IC0tZ2l0IGEvb25ueC90ZXN0L2Jhc2ljX3Rlc3QucHkgYi9vbm54L3Rlc3QvYmFzaWNfdGVzdC5w eQoraW5kZXggOTcxM2U0ZDFmLi42ZDZjNmM5MGUgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvYmFz aWNfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L2Jhc2ljX3Rlc3QucHkKK0BAIC0xMSw3ICsxMSw2 IEBAIGltcG9ydCB1bml0dGVzdAorIAorIGltcG9ydCBnb29nbGUucHJvdG9idWYubWVzc2FnZQor IGltcG9ydCBnb29nbGUucHJvdG9idWYudGV4dF9mb3JtYXQKKy1pbXBvcnQgcGFyYW1ldGVyaXpl ZAorIAorIGltcG9ydCBvbm54CisgZnJvbSBvbm54IGltcG9ydCBzZXJpYWxpemF0aW9uCitAQCAt MzQsOTcgKzMzLDYgQEAgZGVmIF9zaW1wbGVfdGVuc29yKCkgLT4gb25ueC5UZW5zb3JQcm90bzoK KyAgICAgKQorIAorIAorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCistICAg IFsKKy0gICAgICAgIHsiZm9ybWF0IjogInByb3RvYnVmIn0sCistICAgICAgICB7ImZvcm1hdCI6 ICJ0ZXh0cHJvdG8ifSwKKy0gICAgICAgIHsiZm9ybWF0IjogImpzb24ifSwKKy0gICAgICAgIHsi Zm9ybWF0IjogIm9ubnh0eHQifSwKKy0gICAgXQorLSkKKy1jbGFzcyBUZXN0SU8odW5pdHRlc3Qu VGVzdENhc2UpOgorLSAgICBmb3JtYXQ6IHN0cgorLQorLSAgICBkZWYgdGVzdF9sb2FkX21vZGVs X3doZW5faW5wdXRfaXNfYnl0ZXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIHByb3RvID0gX3Np bXBsZV9tb2RlbCgpCistICAgICAgICBwcm90b19zdHJpbmcgPSBzZXJpYWxpemF0aW9uLnJlZ2lz dHJ5LmdldChzZWxmLmZvcm1hdCkuc2VyaWFsaXplX3Byb3RvKHByb3RvKQorLSAgICAgICAgbG9h ZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsX2Zyb21fc3RyaW5nKHByb3RvX3N0cmluZywgZm9y bWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVk X3Byb3RvKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX21vZGVsX3doZW5faW5wdXRf aGFzX3JlYWRfZnVuY3Rpb24oc2VsZikgLT4gTm9uZToKKy0gICAgICAgIHByb3RvID0gX3NpbXBs ZV9tb2RlbCgpCistICAgICAgICAjIFdoZW4gdGhlIHByb3RvIGlzIGEgYnl0ZXMgcmVwcmVzZW50 YXRpb24gcHJvdmlkZWQgdG8gYHNhdmVfbW9kZWxgLAorLSAgICAgICAgIyBpdCBzaG91bGQgYWx3 YXlzIGJlIGEgc2VyaWFsaXplZCBiaW5hcnkgcHJvdG9idWYgcmVwcmVzZW50YXRpb24uIEFrYS4g Zm9ybWF0PSJwcm90b2J1ZiIKKy0gICAgICAgICMgVGhlIHNhdmVkIGZpbGUgZm9ybWF0IGlzIHNw ZWNpZmllZCBieSB0aGUgYGZvcm1hdGAgYXJndW1lbnQuCistICAgICAgICBwcm90b19zdHJpbmcg PSBzZXJpYWxpemF0aW9uLnJlZ2lzdHJ5LmdldCgicHJvdG9idWYiKS5zZXJpYWxpemVfcHJvdG8o cHJvdG8pCistICAgICAgICBmID0gaW8uQnl0ZXNJTygpCistICAgICAgICBvbm54LnNhdmVfbW9k ZWwocHJvdG9fc3RyaW5nLCBmLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICBsb2FkZWRf cHJvdG8gPSBvbm54LmxvYWRfbW9kZWwoaW8uQnl0ZXNJTyhmLmdldHZhbHVlKCkpLCBmb3JtYXQ9 c2VsZi5mb3JtYXQpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJv dG8pCistCistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9pc19m aWxlX25hbWUoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIHByb3RvID0gX3NpbXBsZV9tb2RlbCgp CistICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGly OgorLSAgICAgICAgICAgIG1vZGVsX3BhdGggPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2Rl bC5vbm54IikKKy0gICAgICAgICAgICBvbm54LnNhdmVfbW9kZWwocHJvdG8sIG1vZGVsX3BhdGgs IGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54Lmxv YWRfbW9kZWwobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2 ZV9hbmRfbG9hZF9tb2RlbF93aGVuX2lucHV0X2lzX3BhdGhsaWtlKHNlbGYpIC0+IE5vbmU6Cist ICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQorLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5U ZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKKy0gICAgICAgICAgICBtb2RlbF9wYXRo ID0gcGF0aGxpYi5QYXRoKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCistICAgICAgICAgICAgb25u eC5zYXZlX21vZGVsKHByb3RvLCBtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAg ICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX3BhdGgsIGZvcm1h dD1zZWxmLmZvcm1hdCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2Fk ZWRfcHJvdG8pCistCistCistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKKy0g ICAgWworLSAgICAgICAgeyJmb3JtYXQiOiAicHJvdG9idWYifSwKKy0gICAgICAgIHsiZm9ybWF0 IjogInRleHRwcm90byJ9LAorLSAgICAgICAgeyJmb3JtYXQiOiAianNvbiJ9LAorLSAgICAgICAg IyBUaGUgb25ueHR4dCBmb3JtYXQgZG9lcyBub3Qgc3VwcG9ydCBzYXZpbmcvbG9hZGluZyB0ZW5z b3JzIHlldAorLSAgICBdCistKQorLWNsYXNzIFRlc3RJT1RlbnNvcih1bml0dGVzdC5UZXN0Q2Fz ZSk6CistICAgICIiIlRlc3QgbG9hZGluZyBhbmQgc2F2aW5nIG9mIFRlbnNvclByb3RvLiIiIgor LQorLSAgICBmb3JtYXQ6IHN0cgorLQorLSAgICBkZWYgdGVzdF9sb2FkX3RlbnNvcl93aGVuX2lu cHV0X2lzX2J5dGVzKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBwcm90byA9IF9zaW1wbGVfdGVu c29yKCkKKy0gICAgICAgIHByb3RvX3N0cmluZyA9IHNlcmlhbGl6YXRpb24ucmVnaXN0cnkuZ2V0 KHNlbGYuZm9ybWF0KS5zZXJpYWxpemVfcHJvdG8ocHJvdG8pCistICAgICAgICBsb2FkZWRfcHJv dG8gPSBvbm54LmxvYWRfdGVuc29yX2Zyb21fc3RyaW5nKHByb3RvX3N0cmluZywgZm9ybWF0PXNl bGYuZm9ybWF0KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3Rv KQorLQorLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX3RlbnNvcl93aGVuX2lucHV0X2hhc19y ZWFkX2Z1bmN0aW9uKHNlbGYpIC0+IE5vbmU6CistICAgICAgICAjIFRlc3QgaWYgaW5wdXQgaGFz IGEgcmVhZCBmdW5jdGlvbgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigpCistICAg ICAgICBmID0gaW8uQnl0ZXNJTygpCistICAgICAgICBvbm54LnNhdmVfdGVuc29yKHByb3RvLCBm LCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRf dGVuc29yKGlvLkJ5dGVzSU8oZi5nZXR2YWx1ZSgpKSwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQorLQorLSAgICBkZWYg dGVzdF9zYXZlX2FuZF9sb2FkX3RlbnNvcl93aGVuX2lucHV0X2lzX2ZpbGVfbmFtZShzZWxmKSAt PiBOb25lOgorLSAgICAgICAgIyBUZXN0IGlmIGlucHV0IGlzIGEgZmlsZSBuYW1lCistICAgICAg ICBwcm90byA9IF9zaW1wbGVfdGVuc29yKCkKKy0gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9y YXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6CistICAgICAgICAgICAgbW9kZWxfcGF0aCA9IG9z LnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAgICAgICAgIG9ubnguc2F2 ZV90ZW5zb3IocHJvdG8sIG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAg ICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfdGVuc29yKG1vZGVsX3BhdGgsIGZvcm1hdD1z ZWxmLmZvcm1hdCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRf cHJvdG8pCistCistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfdGVuc29yX3doZW5faW5wdXRf aXNfcGF0aGxpa2Uoc2VsZikgLT4gTm9uZToKKy0gICAgICAgICMgVGVzdCBpZiBpbnB1dCBpcyBh IGZpbGUgbmFtZQorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigpCistICAgICAgICB3 aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgorLSAgICAgICAg ICAgIG1vZGVsX3BhdGggPSBwYXRobGliLlBhdGgodGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0g ICAgICAgICAgICBvbm54LnNhdmVfdGVuc29yKHByb3RvLCBtb2RlbF9wYXRoLCBmb3JtYXQ9c2Vs Zi5mb3JtYXQpCistICAgICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvciht b2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQorLQorLQorIGNsYXNzIFRlc3RTYXZlQW5kTG9hZEZp bGVFeHRlbnNpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3Rfc2F2ZV9tb2Rl bF9waWNrc19jb3JyZWN0X2Zvcm1hdF9mcm9tX2V4dGVuc2lvbihzZWxmKSAtPiBOb25lOgorICAg ICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvaGVs cGVyX3Rlc3QucHkgYi9vbm54L3Rlc3QvaGVscGVyX3Rlc3QucHkKK2luZGV4IDI3NzkzZjU2MS4u OTFmNzczOWFhIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5CisrKysgYi9v bm54L3Rlc3QvaGVscGVyX3Rlc3QucHkKK0BAIC0xMiw3ICsxMiw2IEBAIGZyb20gdHlwaW5nIGlt cG9ydCBBbnkKKyBpbXBvcnQgbWxfZHR5cGVzCisgaW1wb3J0IG51bXB5IGFzIG5wCisgaW1wb3J0 IG51bXB5LnR5cGluZyBhcyBucHQKKy1pbXBvcnQgcGFyYW1ldGVyaXplZAorIGltcG9ydCBweXRl c3QKKyAKKyBmcm9tIG9ubnggaW1wb3J0ICgKK0BAIC02MzYsNjMgKzYzNSw2IEBAIGNsYXNzIFRl c3RIZWxwZXJUZW5zb3JGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAg IGV4cGVjdGVkLnZpZXcobnAudWludDgpLAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAor LSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCistICAg ICAgICAgICAgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCksICgyKioxMCwpKSwK Ky0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9tYWtlXzRiaXRfdGVuc29yKHNlbGYs IGR0eXBlLCBkaW1zKSAtPiBOb25lOgorLSAgICAgICAgdHlwZV9yYW5nZSA9IHsKKy0gICAgICAg ICAgICBUZW5zb3JQcm90by5VSU5UNDogKDAsIDE1KSwKKy0gICAgICAgICAgICBUZW5zb3JQcm90 by5JTlQ0OiAoLTgsIDcpLAorLSAgICAgICAgfQorLSAgICAgICAgZGF0YSA9IG5wLnJhbmRvbS5y YW5kaW50KAorLSAgICAgICAgICAgIHR5cGVfcmFuZ2VbZHR5cGVdWzBdLCBoaWdoPXR5cGVfcmFu Z2VbZHR5cGVdWzFdICsgMSwgc2l6ZT1kaW1zCistICAgICAgICApCistICAgICAgICB5ID0gaGVs cGVyLm1ha2VfdGVuc29yKCJ5IiwgZHR5cGUsIGRhdGEuc2hhcGUsIGRhdGEpCistCistICAgICAg ICAjIENoZWNrIHRoZSBleHBlY3RlZCBzaXplIG9mIGludDMyX2RhdGEgaW4gYnl0ZXMKKy0gICAg ICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA9IG1hdGguY2VpbChucC5wcm9kKGRhdGEuc2hhcGUpIC8g Mi4wKQorLSAgICAgICAgYWN0dWFsX2RhdGFfc2l6ZSA9IGxlbihieXRlcyh5LmludDMyX2RhdGEp KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoYWN0dWFsX2RhdGFfc2l6ZSwgZXhw ZWN0ZWRfZGF0YV9zaXplKQorLQorLSAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgZGF0YSB2 YWx1ZXMuCistICAgICAgICB5bnAgPSBudW1weV9oZWxwZXIudG9fYXJyYXkoeSkKKy0gICAgICAg IG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKHlucCwgZGF0YSkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0g ICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEwLCkp LAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0XzRiaXRfdGVuc29yX3NpemUoc2Vs ZiwgZGltcykgLT4gTm9uZToKKy0gICAgICAgICMgQSBidWcgY2F1c2VkIG5lZ2F0aXZlIGludDQg dmFsdWVzIHRvIGluZmxhdGUgdGVuc29yIHNpemUuCistICAgICAgICAjIFNvLCB0ZXN0IG5lZ2F0 aXZlIHZhbHVlcyBoZXJlLgorLSAgICAgICAgbnVtX2VsZW1zID0gbnAucHJvZChkaW1zKQorLSAg ICAgICAgZGF0YSA9IG5wLmFycmF5KFstNF0gKiBudW1fZWxlbXMsIGR0eXBlPW5wLmludDgpLnJl c2hhcGUoZGltcykKKy0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoInkiLCBUZW5zb3JQ cm90by5JTlQ0LCBkYXRhLnNoYXBlLCBkYXRhKQorLQorLSAgICAgICAgIyBDaGVjayB0aGUgZXhw ZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCistICAgICAgICBleHBlY3RlZF9kYXRh X3NpemUgPSBtYXRoLmNlaWwobnVtX2VsZW1zIC8gMi4wKQorLSAgICAgICAgYWN0dWFsX2RhdGFf c2l6ZSA9IGxlbihieXRlcyh5LmludDMyX2RhdGEpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3Nl cnRfZXF1YWwoYWN0dWFsX2RhdGFfc2l6ZSwgZXhwZWN0ZWRfZGF0YV9zaXplKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5w cm9kdWN0KAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5U NCksICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpKQorLSAgICAgICAgKQorLSAg ICApCistICAgIGRlZiB0ZXN0X21ha2VfNGJpdF9yYXdfdGVuc29yKHNlbGYsIGR0eXBlLCBkaW1z KSAtPiBOb25lOgorLSAgICAgICAgZGF0YSA9IG5wLnJhbmRvbS5yYW5kaW50KDAsIGhpZ2g9MTYs IHNpemU9ZGltcywgZHR5cGU9bnAudWludDgpCistICAgICAgICBwYWNrZWRfZGF0YSA9IF9wYWNr XzRiaXQoZGF0YSkKKy0KKy0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoCistICAgICAg ICAgICAgInBhY2tlZF9pbnQ0IiwgZHR5cGUsIGRpbXMsIHBhY2tlZF9kYXRhLnRvYnl0ZXMoKSwg cmF3PVRydWUKKy0gICAgICAgICkKKy0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJh eSh5KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLnZpZXcobnAudWludDgp LCBkYXRhKQorLQorICAgICBkZWYgdGVzdF9tYWtlX2Zsb2F0NGUybTFfcmF3X3RlbnNvcihzZWxm KSAtPiBOb25lOgorICAgICAgICAgZGF0YSA9IG5wLmFycmF5KFswLCAwLjUsIDEsIDI0MCwgMTAs IC0yXSwgZHR5cGU9bWxfZHR5cGVzLmZsb2F0NF9lMm0xZm4pCisgICAgICAgICBleHBlY3RlZCA9 IGRhdGEudmlldyhucC51aW50OCkKK0BAIC03MDcsNjMgKzY0OSw2IEBAIGNsYXNzIFRlc3RIZWxw ZXJUZW5zb3JGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgeW5wID0gbnVt cHlfaGVscGVyLnRvX2FycmF5KHkpCisgICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5 bnAudmlldyhucC51aW50OCksIGV4cGVjdGVkKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAg ICAgIChUZW5zb3JQcm90by5VSU5UMiwgVGVuc29yUHJvdG8uSU5UMiksCistICAgICAgICAgICAg KCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCksICgyKioxMCwpKSwKKy0gICAgICAg ICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9tYWtlXzJiaXRfdGVuc29yKHNlbGYsIGR0eXBlLCBk aW1zKSAtPiBOb25lOgorLSAgICAgICAgdHlwZV9yYW5nZSA9IHsKKy0gICAgICAgICAgICBUZW5z b3JQcm90by5VSU5UMjogKDAsIDMpLAorLSAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDI6ICgt MiwgMSksCistICAgICAgICB9CistICAgICAgICBkYXRhID0gbnAucmFuZG9tLnJhbmRpbnQoCist ICAgICAgICAgICAgdHlwZV9yYW5nZVtkdHlwZV1bMF0sIGhpZ2g9dHlwZV9yYW5nZVtkdHlwZV1b MV0gKyAxLCBzaXplPWRpbXMKKy0gICAgICAgICkKKy0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90 ZW5zb3IoInkiLCBkdHlwZSwgZGF0YS5zaGFwZSwgZGF0YSkKKy0KKy0gICAgICAgICMgQ2hlY2sg dGhlIGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBpbiBieXRlcworLSAgICAgICAgZXhwZWN0 ZWRfZGF0YV9zaXplID0gbWF0aC5jZWlsKG5wLnByb2QoZGF0YS5zaGFwZSkgLyA0LjApCistICAg ICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVzKHkuaW50MzJfZGF0YSkpCistICAgICAg ICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRh X3NpemUpCistCistICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBkYXRhIHZhbHVlcy4KKy0g ICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJheSh5KQorLSAgICAgICAgbnAudGVzdGlu Zy5hc3NlcnRfZXF1YWwoeW5wLCBkYXRhKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAgICAg ICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpLCAoMioqMTAsKSksCistICAgICAg ICApCistICAgICkKKy0gICAgZGVmIHRlc3RfMmJpdF90ZW5zb3Jfc2l6ZShzZWxmLCBkaW1zKSAt PiBOb25lOgorLSAgICAgICAgIyBBIGJ1ZyBjYXVzZWQgbmVnYXRpdmUgaW50MiB2YWx1ZXMgdG8g aW5mbGF0ZSB0ZW5zb3Igc2l6ZS4KKy0gICAgICAgICMgU28sIHRlc3QgbmVnYXRpdmUgdmFsdWVz IGhlcmUuCistICAgICAgICBudW1fZWxlbXMgPSBucC5wcm9kKGRpbXMpCistICAgICAgICBkYXRh ID0gbnAuYXJyYXkoWy0yXSAqIG51bV9lbGVtcywgZHR5cGU9bnAuaW50OCkucmVzaGFwZShkaW1z KQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIFRlbnNvclByb3RvLklOVDIs IGRhdGEuc2hhcGUsIGRhdGEpCistCistICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBzaXpl IG9mIGludDMyX2RhdGEgaW4gYnl0ZXMKKy0gICAgICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA9IG1h dGguY2VpbChudW1fZWxlbXMgLyA0LjApCistICAgICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVu KGJ5dGVzKHkuaW50MzJfZGF0YSkpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChh Y3R1YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRhX3NpemUpCistCistICAgIEBwYXJhbWV0ZXJp emVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCist ICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQyLCBUZW5zb3JQcm90by5JTlQyKSwgKCg1LCA0 LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCkpCistICAgICAgICApCistICAgICkKKy0gICAg ZGVmIHRlc3RfbWFrZV8yYml0X3Jhd190ZW5zb3Ioc2VsZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6 CistICAgICAgICBkYXRhID0gbnAucmFuZG9tLnJhbmRpbnQoMCwgaGlnaD00LCBzaXplPWRpbXMs IGR0eXBlPW5wLnVpbnQ4KQorLSAgICAgICAgcGFja2VkX2RhdGEgPSBfcGFja18yYml0KGRhdGEp CistCistICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICJwYWNr ZWRfaW50MiIsIGR0eXBlLCBkaW1zLCBwYWNrZWRfZGF0YS50b2J5dGVzKCksIHJhdz1UcnVlCist ICAgICAgICApCistICAgICAgICB5bnAgPSBudW1weV9oZWxwZXIudG9fYXJyYXkoeSkKKy0gICAg ICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKHlucC52aWV3KG5wLnVpbnQ4KSwgZGF0YSkKKy0K KyAgICAgZGVmIHRlc3RfbWFrZV9mbG9hdDRlMm0xX3RlbnNvcihzZWxmKSAtPiBOb25lOgorICAg ICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigKKyAgICAgICAgICAgICAiemVyb19wb2ludCIs CitAQCAtMTEwNSwyOCArOTkwLDYgQEAgY2xhc3MgVGVzdEhlbHBlck1hcHBpbmdGdW5jdGlvbnMo dW5pdHRlc3QuVGVzdENhc2UpOgorIAorIAorIGNsYXNzIFRlc3RBdHRyVHlwZVRvU3RyKHVuaXR0 ZXN0LlRlc3RDYXNlKToKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQo CistICAgICAgICBbCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUu RkxPQVQsICJGTE9BVCIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVU eXBlLklOVCwgIklOVCIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVU eXBlLlNUUklORywgIlNUUklORyIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRy aWJ1dGVUeXBlLlRFTlNPUiwgIlRFTlNPUiIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90 by5BdHRyaWJ1dGVUeXBlLkdSQVBILCAiR1JBUEgiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRl UHJvdG8uQXR0cmlidXRlVHlwZS5TUEFSU0VfVEVOU09SLCAiU1BBUlNFX1RFTlNPUiIpLAorLSAg ICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRZUEVfUFJPVE8sICJUWVBF X1BST1RPIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuRkxP QVRTLCAiRkxPQVRTIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5 cGUuSU5UUywgIklOVFMiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRl VHlwZS5TVFJJTkdTLCAiU1RSSU5HUyIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5B dHRyaWJ1dGVUeXBlLlRFTlNPUlMsICJURU5TT1JTIiksCistICAgICAgICAgICAgKEF0dHJpYnV0 ZVByb3RvLkF0dHJpYnV0ZVR5cGUuR1JBUEhTLCAiR1JBUEhTIiksCistICAgICAgICAgICAgKEF0 dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1BBUlNFX1RFTlNPUlMsICJTUEFSU0VfVEVOU09S UyIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRZUEVfUFJP VE9TLCAiVFlQRV9QUk9UT1MiKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9h dHRyX3R5cGVfdG9fc3RyKHNlbGYsIGF0dHJfdHlwZSwgZXhwZWN0ZWRfc3RyKToKKy0gICAgICAg IHJlc3VsdCA9IGhlbHBlci5fYXR0cl90eXBlX3RvX3N0cihhdHRyX3R5cGUpCistICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRfc3RyKQorLQorICAgICBkZWYgdGVzdF9h dHRyX3R5cGVfdG9fc3RyX3VuZGVmaW5lZChzZWxmKToKKyAgICAgICAgIHJlc3VsdCA9IGhlbHBl ci5fYXR0cl90eXBlX3RvX3N0cig5OTk5KQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1 bHQsICJVTkRFRklORUQiKQorZGlmZiAtLWdpdCBhL29ubngvdGVzdC9ub2RlX3NoYXBlX2luZmVy ZW5jZV90ZXN0LnB5IGIvb25ueC90ZXN0L25vZGVfc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkKK2lu ZGV4IGVjZTc3NmU0OC4uNjMyNTJiOTIyIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L25vZGVfc2hh cGVfaW5mZXJlbmNlX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9ub2RlX3NoYXBlX2luZmVyZW5j ZV90ZXN0LnB5CitAQCAtNSwzNCArNSw5IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYW5ub3Rh dGlvbnMKKyAKKyBpbXBvcnQgdW5pdHRlc3QKKyAKKy1pbXBvcnQgcGFyYW1ldGVyaXplZAorLQor IGltcG9ydCBvbm54LmhlbHBlcgorIGltcG9ydCBvbm54LnNoYXBlX2luZmVyZW5jZQorIAorIAor LWNsYXNzIE5vZGVJbmZlcmVuY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAg KCJHcmVhdGVyT3JFcXVhbCIsKSwKKy0gICAgICAgICAgICAoIkxlc3NPckVxdWFsIiwpLAorLSAg ICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25fb3Aoc2VsZiwgb3BfdHlw ZSk6CistICAgICAgICBub2RlID0gb25ueC5oZWxwZXIubWFrZV9ub2RlKG9wX3R5cGUsIFsieCIs ICJ5Il0sIFsieiJdKQorLSAgICAgICAgc2NoZW1hID0gb25ueC5kZWZzLmdldF9zY2hlbWEobm9k ZS5vcF90eXBlLCAyMywgIiIpCistICAgICAgICB4dHlwZSA9IG9ubnguaGVscGVyLm1ha2VfdGVu c29yX3R5cGVfcHJvdG8ob25ueC5UZW5zb3JQcm90by5JTlQzMiwgWzEsIDEwXSkKKy0gICAgICAg IHl0eXBlID0gb25ueC5oZWxwZXIubWFrZV90ZW5zb3JfdHlwZV9wcm90byhvbm54LlRlbnNvclBy b3RvLklOVDMyLCBbMTAsIDFdKQorLSAgICAgICAgcmVzdWx0ID0gb25ueC5zaGFwZV9pbmZlcmVu Y2UuaW5mZXJfbm9kZV9vdXRwdXRzKAorLSAgICAgICAgICAgIHNjaGVtYSwgbm9kZSwgeyJ4Ijog eHR5cGUsICJ5IjogeXR5cGV9CistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydEVxdWFs KGxpc3QocmVzdWx0LmtleXMoKSksIFsieiJdKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy ZXN1bHRbInoiXS50ZW5zb3JfdHlwZS5lbGVtX3R5cGUsIG9ubnguVGVuc29yUHJvdG8uQk9PTCkK Ky0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAgICAgICAgICAgW2RpbS5kaW1fdmFsdWUg Zm9yIGRpbSBpbiByZXN1bHRbInoiXS50ZW5zb3JfdHlwZS5zaGFwZS5kaW1dLAorLSAgICAgICAg ICAgIFsxMCwgMTBdLAorLSAgICAgICAgKQorLQorLQorIGlmIF9fbmFtZV9fID09ICJfX21haW5f XyI6CisgICAgIHVuaXR0ZXN0Lm1haW4oKQorZGlmZiAtLWdpdCBhL29ubngvdGVzdC9udW1weV9o ZWxwZXJfdGVzdC5weSBiL29ubngvdGVzdC9udW1weV9oZWxwZXJfdGVzdC5weQoraW5kZXggNTY4 MDAwNTUwLi4yMjY1MDA4ZDIgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rl c3QucHkKKysrKyBiL29ubngvdGVzdC9udW1weV9oZWxwZXJfdGVzdC5weQorQEAgLTYsNyArNiw2 IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYW5ub3RhdGlvbnMKKyBpbXBvcnQgdW5pdHRlc3QK KyAKKyBpbXBvcnQgbnVtcHkgYXMgbnAKKy1pbXBvcnQgcGFyYW1ldGVyaXplZAorIAorIGltcG9y dCBvbm54CisgaW1wb3J0IG9ubngucmVmZXJlbmNlCitAQCAtMTQ4LDM4ICsxNDcsNiBAQCBjbGFz cyBUZXN0TnVtcHlIZWxwZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbCh0cC5TZXJpYWxpemVUb1N0cmluZygpLCBhZ2Fpbi5TZXJpYWxpemVUb1N0cmluZygp KQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cC5kYXRhX3R5cGUsIGhlbHBlci5ucF9kdHlw ZV90b190ZW5zb3JfZHR5cGUoYmFjay5kdHlwZSkpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiRkxPQVQiLCBv bm54LlRlbnNvclByb3RvLkZMT0FUKSwKKy0gICAgICAgICAgICAoIlVJTlQ4Iiwgb25ueC5UZW5z b3JQcm90by5VSU5UOCksCistICAgICAgICAgICAgKCJJTlQ4Iiwgb25ueC5UZW5zb3JQcm90by5J TlQ4KSwKKy0gICAgICAgICAgICAoIlVJTlQxNiIsIG9ubnguVGVuc29yUHJvdG8uVUlOVDE2KSwK Ky0gICAgICAgICAgICAoIklOVDE2Iiwgb25ueC5UZW5zb3JQcm90by5JTlQxNiksCistICAgICAg ICAgICAgKCJJTlQzMiIsIG9ubnguVGVuc29yUHJvdG8uSU5UMzIpLAorLSAgICAgICAgICAgICgi SU5UNjQiLCBvbm54LlRlbnNvclByb3RvLklOVDY0KSwKKy0gICAgICAgICAgICAoIkJPT0wiLCBv bm54LlRlbnNvclByb3RvLkJPT0wpLAorLSAgICAgICAgICAgICgiRkxPQVQxNiIsIG9ubnguVGVu c29yUHJvdG8uRkxPQVQxNiksCistICAgICAgICAgICAgKCJET1VCTEUiLCBvbm54LlRlbnNvclBy b3RvLkRPVUJMRSksCistICAgICAgICAgICAgKCJVSU5UMzIiLCBvbm54LlRlbnNvclByb3RvLlVJ TlQzMiksCistICAgICAgICAgICAgKCJVSU5UNjQiLCBvbm54LlRlbnNvclByb3RvLlVJTlQ2NCks CistICAgICAgICAgICAgKCJDT01QTEVYNjQiLCBvbm54LlRlbnNvclByb3RvLkNPTVBMRVg2NCks CistICAgICAgICAgICAgKCJDT01QTEVYMTI4Iiwgb25ueC5UZW5zb3JQcm90by5DT01QTEVYMTI4 KSwKKy0gICAgICAgICAgICAoIkJGTE9BVDE2Iiwgb25ueC5UZW5zb3JQcm90by5CRkxPQVQxNiks CistICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk4iLCBvbm54LlRlbnNvclByb3RvLkZMT0FUOEU0 TTNGTiksCistICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk5VWiIsIG9ubnguVGVuc29yUHJvdG8u RkxPQVQ4RTRNM0ZOVVopLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTVNMiIsIG9ubnguVGVuc29y UHJvdG8uRkxPQVQ4RTVNMiksCistICAgICAgICAgICAgKCJGTE9BVDhFNU0yRk5VWiIsIG9ubngu VGVuc29yUHJvdG8uRkxPQVQ4RTVNMkZOVVopLAorLSAgICAgICAgICAgICgiRkxPQVQ4RThNMCIs IG9ubnguVGVuc29yUHJvdG8uRkxPQVQ4RThNMCksCistICAgICAgICAgICAgKCJVSU5UNCIsIG9u bnguVGVuc29yUHJvdG8uVUlOVDQpLAorLSAgICAgICAgICAgICgiSU5UNCIsIG9ubnguVGVuc29y UHJvdG8uSU5UNCksCistICAgICAgICAgICAgKCJVSU5UMiIsIG9ubnguVGVuc29yUHJvdG8uVUlO VDIpLAorLSAgICAgICAgICAgICgiSU5UMiIsIG9ubnguVGVuc29yUHJvdG8uSU5UMiksCistICAg ICAgICAgICAgKCJGTE9BVDRFMk0xIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDRFMk0xKSwKKy0g ICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF90b19hcnJheV9mcm9tX2FycmF5KHNlbGYs IF86IHN0ciwgZGF0YV90eXBlOiBvbm54LlRlbnNvclByb3RvLkRhdGFUeXBlKToKKy0gICAgICAg IHNlbGYuX3RvX2FycmF5X2Zyb21fYXJyYXkoZGF0YV90eXBlKQorLQorICAgICBkZWYgdGVzdF90 b19hcnJheV9mcm9tX2FycmF5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIHNlbGYuX3RvX2FycmF5 X2Zyb21fYXJyYXkob25ueC5UZW5zb3JQcm90by5TVFJJTkcsIEZhbHNlKQorIAorZGlmZiAtLWdp dCBhL29ubngvdGVzdC9wYXJzZXJfdGVzdC5weSBiL29ubngvdGVzdC9wYXJzZXJfdGVzdC5weQor aW5kZXggMTllZTQwNzkyLi45ZTIyZjE5YWUgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvcGFyc2Vy X3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9wYXJzZXJfdGVzdC5weQorQEAgLTUsOCArNSw2IEBA IGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYW5ub3RhdGlvbnMKKyAKKyBpbXBvcnQgdW5pdHRlc3QK KyAKKy1mcm9tIHBhcmFtZXRlcml6ZWQgaW1wb3J0IHBhcmFtZXRlcml6ZWQKKy0KKyBpbXBvcnQg b25ueAorIGZyb20gb25ueCBpbXBvcnQgR3JhcGhQcm90bywgT3BlcmF0b3JTZXRJZFByb3RvLCBU ZW5zb3JQcm90bywgY2hlY2tlcgorIAorQEAgLTEyMCw5NCArMTE4LDYgQEAgY2xhc3MgVGVzdEJh c2ljRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIG1vZGVsID0gb25ueC5w YXJzZXIucGFyc2VfbW9kZWwoaW5wdXQpCisgICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKG1v ZGVsKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAg ICAgICAgKAorLSAgICAgICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRb Tl0gb3V0KSB7IG91dCA9IGN1c3RvbV9kb21haW4uU2VsdSh4KSB9IiwKKy0gICAgICAgICAgICAg ICAge30sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAg ICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0ID0gY3VzdG9tX2Rv bWFpbi5TZWx1PGFscGhhPTIuMD4oeCkgfSIsCistICAgICAgICAgICAgICAgIHsiYWxwaGEiOiAy LjB9LAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAi YWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9IGN1c3RvbV9kb21h aW4uU2VsdTxnYW1tYT0zLjA+KHgpIH0iLAorLSAgICAgICAgICAgICAgICB7ImdhbW1hIjogMy4w fSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgImFn cmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWlu LlNlbHU8YWxwaGE9Mi4wLCBnYW1tYT0zLjA+KHgpIH0iLAorLSAgICAgICAgICAgICAgICB7ImFs cGhhIjogMi4wLCAiZ2FtbWEiOiAzLjB9LAorLSAgICAgICAgICAgICksCistICAgICAgICBdCist ICAgICkKKy0gICAgZGVmIHRlc3RfY29tcG9zaXRlX3BhcnNlX2Z1bmN0aW9uX3dpdGhfYXR0cmli dXRlcygKKy0gICAgICAgIHNlbGYsIGdyYXBoX3RleHQ6IHN0ciwgZXhwZWN0ZWRfYXR0cmlidXRl OiBkaWN0CistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGRlZmF1bHRfYWxwaGEgPSAxLjY3MzI2 MzE5MjE3NjgxODg0NzY1NjI1CistICAgICAgICBkZWZhdWx0X2dhbW1hID0gMS4wNTA3MDEwMjIx NDgxMzIzMjQyMTg3NQorLQorLSAgICAgICAgZGVmIGV4cGVjdF9jdXN0b21fbm9kZV9hdHRyaWJ1 dGUobm9kZSwgYXR0cmlidXRlcyk6CistICAgICAgICAgICAgZm9yIGtleSBpbiBhdHRyaWJ1dGVz OgorLSAgICAgICAgICAgICAgICBtYXRjaF9hdHRyID0gW2F0dHIgZm9yIGF0dHIgaW4gbm9kZS5h dHRyaWJ1dGUgaWYgYXR0ci5uYW1lID09IGtleV0KKy0gICAgICAgICAgICAgICAgYXNzZXJ0IGxl bihtYXRjaF9hdHRyKSA9PSAxCistICAgICAgICAgICAgICAgIGFzc2VydCBtYXRjaF9hdHRyWzBd LmYgPT0gYXR0cmlidXRlc1trZXldCistCistICAgICAgICBkZWYgZXhwZWN0X21vZGVsX2Z1bmN0 aW9uX2F0dHJpYnV0ZShtb2RlbCk6CistICAgICAgICAgICAgYXNzZXJ0IGxlbihtb2RlbC5mdW5j dGlvbnNbMF0uYXR0cmlidXRlX3Byb3RvKSA9PSAyCistICAgICAgICAgICAgYXR0cl9wcm90b19h bHBoYSA9IFsKKy0gICAgICAgICAgICAgICAgYXR0cl9wcm90bworLSAgICAgICAgICAgICAgICBm b3IgYXR0cl9wcm90byBpbiBtb2RlbC5mdW5jdGlvbnNbMF0uYXR0cmlidXRlX3Byb3RvCistICAg ICAgICAgICAgICAgIGlmIGF0dHJfcHJvdG8ubmFtZSA9PSAiYWxwaGEiCistICAgICAgICAgICAg XQorLSAgICAgICAgICAgIGFzc2VydCBsZW4oYXR0cl9wcm90b19hbHBoYSkgPT0gMSBhbmQgYXR0 cl9wcm90b19hbHBoYVswXS5mID09IGRlZmF1bHRfYWxwaGEKKy0gICAgICAgICAgICBhdHRyX3By b3RvX2dhbW1hID0gWworLSAgICAgICAgICAgICAgICBhdHRyX3Byb3RvCistICAgICAgICAgICAg ICAgIGZvciBhdHRyX3Byb3RvIGluIG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRyaWJ1dGVfcHJvdG8K Ky0gICAgICAgICAgICAgICAgaWYgYXR0cl9wcm90by5uYW1lID09ICJnYW1tYSIKKy0gICAgICAg ICAgICBdCistICAgICAgICAgICAgYXNzZXJ0IGxlbihhdHRyX3Byb3RvX2dhbW1hKSA9PSAxIGFu ZCBhdHRyX3Byb3RvX2dhbW1hWzBdLmYgPT0gZGVmYXVsdF9nYW1tYQorLQorLSAgICAgICAgZnVu Y3Rpb25fdGV4dCA9IGYiIiIKKy0gICAgICAgICA8CistICAgICAgICAgZG9tYWluOiAiY3VzdG9t X2RvbWFpbiIsCistICAgICAgICAgb3BzZXRfaW1wb3J0OiBbICIiIDogMTVdLAorLSAgICAgICAg IGRvY19zdHJpbmc6ICJUZXN0IGZ1bmN0aW9uIHByb3RvIgorLSAgICAgICAgID4KKy0gICAgICAg ICAgIFNlbHUKKy0gICAgICAgICAgIDxhbHBoYTogZmxvYXQ9e2RlZmF1bHRfYWxwaGF9LCBnYW1t YTogZmxvYXQ9e2RlZmF1bHRfZ2FtbWF9PgorLSAgICAgICAgICAgKFgpID0+IChDKQorLSAgICAg ICAgICAge3sKKy0gICAgICAgICAgICAgICBjb25zdGFudF9hbHBoYSA9IENvbnN0YW50PHZhbHVl X2Zsb2F0OiBmbG9hdD1AYWxwaGE+KCkKKy0gICAgICAgICAgICAgICBjb25zdGFudF9nYW1tYSA9 IENvbnN0YW50PHZhbHVlX2Zsb2F0OiBmbG9hdD1AZ2FtbWE+KCkKKy0gICAgICAgICAgICAgICBh bHBoYV94ID0gQ2FzdExpa2UoY29uc3RhbnRfYWxwaGEsIFgpCistICAgICAgICAgICAgICAgZ2Ft bWFfeCA9IENhc3RMaWtlKGNvbnN0YW50X2dhbW1hLCBYKQorLSAgICAgICAgICAgICAgIGV4cF94 ID0gRXhwKFgpCistICAgICAgICAgICAgICAgYWxwaGFfeF9leHBfeCA9IE11bChhbHBoYV94LCBl eHBfeCkKKy0gICAgICAgICAgICAgICBhbHBoYV94X2V4cF94XyA9IFN1YihhbHBoYV94X2V4cF94 LCBhbHBoYV94KQorLSAgICAgICAgICAgICAgIG5lZyA9IE11bChnYW1tYV94LCBhbHBoYV94X2V4 cF94XykKKy0gICAgICAgICAgICAgICBwb3MgPSBNdWwoZ2FtbWFfeCwgWCkKKy0gICAgICAgICAg ICAgICBfemVybyA9IENvbnN0YW50PHZhbHVlX2Zsb2F0PTAuMD4oKQorLSAgICAgICAgICAgICAg IHplcm8gPSBDYXN0TGlrZShfemVybywgWCkKKy0gICAgICAgICAgICAgICBsZXNzX2VxID0gTGVz c09yRXF1YWwoWCwgemVybykKKy0gICAgICAgICAgICAgICBDID0gV2hlcmUobGVzc19lcSwgbmVn LCBwb3MpCistICAgICAgICAgICB9fQorLSAgICAgICAgIiIiCistCistICAgICAgICBmdW5jdGlv bnMgPSBbb25ueC5wYXJzZXIucGFyc2VfZnVuY3Rpb24oZnVuY3Rpb25fdGV4dCldCistICAgICAg ICBncmFwaCA9IG9ubngucGFyc2VyLnBhcnNlX2dyYXBoKGdyYXBoX3RleHQpCistICAgICAgICBv cHNldF9pbXBvcnRzID0gWworLSAgICAgICAgICAgIE9wZXJhdG9yU2V0SWRQcm90byhkb21haW49 IiIsIHZlcnNpb249MTUpLAorLSAgICAgICAgICAgIE9wZXJhdG9yU2V0SWRQcm90byhkb21haW49 ImN1c3RvbV9kb21haW4iLCB2ZXJzaW9uPTEpLAorLSAgICAgICAgXQorLQorLSAgICAgICAgbW9k ZWwgPSBvbm54LmhlbHBlci5tYWtlX21vZGVsKAorLSAgICAgICAgICAgIGdyYXBoLCBmdW5jdGlv bnM9ZnVuY3Rpb25zLCBvcHNldF9pbXBvcnRzPW9wc2V0X2ltcG9ydHMKKy0gICAgICAgICkKKy0g ICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwpCistCistICAgICAgICBleHBlY3RfbW9k ZWxfZnVuY3Rpb25fYXR0cmlidXRlKG1vZGVsKQorLSAgICAgICAgZXhwZWN0X2N1c3RvbV9ub2Rl X2F0dHJpYnV0ZShtb2RlbC5ncmFwaC5ub2RlWzBdLCBleHBlY3RlZF9hdHRyaWJ1dGUpCistCisg ICAgIGRlZiB0ZXN0X3BhcnNlX25vZGUoc2VsZik6CisgICAgICAgICBub2RlID0gb25ueC5wYXJz ZXIucGFyc2Vfbm9kZSgKKyAgICAgICAgICAgICAib3V0MSwgb3V0MiA9IFNvbWVEb21haW4uU29t ZU9wIDxhdHRyMSA9IDE+IChpbjEsIGluMikiCitAQCAtMjQyLDEwMSArMTUyLDYgQEAgY2xhc3Mg VGVzdEJhc2ljRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwobGlzdChub2RlLmlucHV0KSwgWyIiLCAieSJdKQorICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChsaXN0KG5vZGUub3V0cHV0KSwgWyIiLCAieCJdKQorIAorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJub3RfYV9nb29kX2Zsb2F0 IiwgVHJ1ZSksCistICAgICAgICAgICAgKCJpbmYxIiwgVHJ1ZSksCistICAgICAgICAgICAgKCIt aW5mMSIsIFRydWUpLAorLSAgICAgICAgICAgICgibmFuMCIsIFRydWUpLAorLSAgICAgICAgICAg ICgiLW5hbjAiLCBUcnVlKSwKKy0gICAgICAgICAgICAoIm5hbmluZiIsIFRydWUpLAorLSAgICAg ICAgICAgICgiaW5mIiwgRmFsc2UpLAorLSAgICAgICAgICAgICgiLWluZiIsIEZhbHNlKSwKKy0g ICAgICAgICAgICAoImluZmluaXR5IiwgRmFsc2UpLAorLSAgICAgICAgICAgICgiLWluZmluaXR5 IiwgRmFsc2UpLAorLSAgICAgICAgICAgICgibmFuIiwgRmFsc2UpLAorLSAgICAgICAgICAgICgi LU5hTiIsIEZhbHNlKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9wYXJzZV92 YXJpb3VzX2Zsb2F0X3ZhbHVlcyhzZWxmLCB0ZXN0X2xpdGVyYWwsIGV4cGVjdF9leGNlcHRpb24p OgorLSAgICAgICAgbW9kZWxfdGV4dCA9IGYiIiIKKy0gICAgICAgIDwKKy0gICAgICAgIGlyX3Zl cnNpb246IDgsCistICAgICAgICBvcHNldF9pbXBvcnQ6IFsiIiA6IDE4LCAidGhpcyIgOiAxXSwK Ky0gICAgICAgIHByb2R1Y2VyX25hbWU6ICJGdW5jdGlvblByb3RvVGVzdCIsCistICAgICAgICBw cm9kdWNlcl92ZXJzaW9uOiAiMS4wIgorLSAgICAgICAgPgorLSAgICAgICAgX2Z1bmMgKCkgPT4g KCkKKy0gICAgICAgIHt7CistICAgICAgICB0bXAgPSBDb25zdGFudCA8dmFsdWVfZmxvYXQgPSB7 dGVzdF9saXRlcmFsfT4oKQorLSAgICAgICAgfX0KKy0gICAgICAgICIiIgorLSAgICAgICAgaWYg ZXhwZWN0X2V4Y2VwdGlvbjoKKy0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAg ICAgICAgICAgICAgb25ueC5wYXJzZXIuUGFyc2VFcnJvciwgbGFtYmRhOiBvbm54LnBhcnNlci5w YXJzZV9tb2RlbChtb2RlbF90ZXh0KQorLSAgICAgICAgICAgICkKKy0gICAgICAgIGVsc2U6Cist ICAgICAgICAgICAgbW9kZWwgPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChtb2RlbF90ZXh0KQor LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwuaXJfdmVyc2lvbiwgOCkKKy0gICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsLnByb2R1Y2VyX25hbWUsICJGdW5jdGlvblBy b3RvVGVzdCIpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5wcm9kdWNlcl92 ZXJzaW9uLCAiMS4wIikKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbC5n cmFwaC5ub2RlKSwgMSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbC5n cmFwaC5ub2RlWzBdLmF0dHJpYnV0ZSksIDEpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bChtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS5uYW1lLCAidmFsdWVfZmxvYXQiKQor LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAgICAgICAgICAgICAgIG1vZGVsLmdy YXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnR5cGUsIG9ubnguQXR0cmlidXRlUHJvdG8uRkxPQVQK Ky0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKy0gICAgICAg ICAgICAgICAgc3RyKG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLmYpLCBzdHIoZmxv YXQodGVzdF9saXRlcmFsKSkKKy0gICAgICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoImJmbG9hdDE2IiwgVGVuc29yUHJv dG8uQkZMT0FUMTYpLAorLSAgICAgICAgICAgICgiYm9vbCIsIFRlbnNvclByb3RvLkJPT0wpLAor LSAgICAgICAgICAgICgiY29tcGxleDY0IiwgVGVuc29yUHJvdG8uQ09NUExFWDY0KSwKKy0gICAg ICAgICAgICAoImNvbXBsZXgxMjgiLCBUZW5zb3JQcm90by5DT01QTEVYMTI4KSwKKy0gICAgICAg ICAgICAoImRvdWJsZSIsIFRlbnNvclByb3RvLkRPVUJMRSksCistICAgICAgICAgICAgKCJmbG9h dDE2IiwgVGVuc29yUHJvdG8uRkxPQVQxNiksCistICAgICAgICAgICAgKCJmbG9hdCIsIFRlbnNv clByb3RvLkZMT0FUKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU0bTNmbiIsIFRlbnNvclByb3Rv LkZMT0FUOEU0TTNGTiksCistICAgICAgICAgICAgKCJmbG9hdDhlNG0zZm51eiIsIFRlbnNvclBy b3RvLkZMT0FUOEU0TTNGTlVaKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU1bTIiLCBUZW5zb3JQ cm90by5GTE9BVDhFNU0yKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU1bTJmbnV6IiwgVGVuc29y UHJvdG8uRkxPQVQ4RTVNMkZOVVopLAorLSAgICAgICAgICAgICgiaW50MiIsIFRlbnNvclByb3Rv LklOVDIpLAorLSAgICAgICAgICAgICgiaW50NCIsIFRlbnNvclByb3RvLklOVDQpLAorLSAgICAg ICAgICAgICgiaW50OCIsIFRlbnNvclByb3RvLklOVDgpLAorLSAgICAgICAgICAgICgiaW50MTYi LCBUZW5zb3JQcm90by5JTlQxNiksCistICAgICAgICAgICAgKCJpbnQzMiIsIFRlbnNvclByb3Rv LklOVDMyKSwKKy0gICAgICAgICAgICAoImludDY0IiwgVGVuc29yUHJvdG8uSU5UNjQpLAorLSAg ICAgICAgICAgICgic3RyaW5nIiwgVGVuc29yUHJvdG8uU1RSSU5HKSwKKy0gICAgICAgICAgICAo InVpbnQyIiwgVGVuc29yUHJvdG8uVUlOVDIpLAorLSAgICAgICAgICAgICgidWludDQiLCBUZW5z b3JQcm90by5VSU5UNCksCistICAgICAgICAgICAgKCJ1aW50OCIsIFRlbnNvclByb3RvLlVJTlQ4 KSwKKy0gICAgICAgICAgICAoInVpbnQxNiIsIFRlbnNvclByb3RvLlVJTlQxNiksCistICAgICAg ICAgICAgKCJ1aW50MzIiLCBUZW5zb3JQcm90by5VSU5UMzIpLAorLSAgICAgICAgICAgICgidWlu dDY0IiwgVGVuc29yUHJvdG8uVUlOVDY0KSwKKy0gICAgICAgICAgICAoImZsb2F0NGUybTEiLCBU ZW5zb3JQcm90by5GTE9BVDRFMk0xKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVz dF9wYXJzZV9ncmFwaF90eXBlcyhzZWxmLCBuYW1lLCBpdHlwZSkgLT4gTm9uZToKKy0gICAgICAg IHcgPSAneyIwIn0nIGlmIGl0eXBlID09IFRlbnNvclByb3RvLlNUUklORyBlbHNlICJ7MH0iCist ICAgICAgICB0ZXh0X2dyYXBoID0gZiIiIgorLSAgICAgICAgICAgPAorLSAgICAgICAgICAgICBp cl92ZXJzaW9uOiAxMCwKKy0gICAgICAgICAgICAgb3BzZXRfaW1wb3J0OiBbICIiIDogMTldCist ICAgICAgICAgICA+CistICAgICAgICAgICBhZ3JhcGggKGZsb2F0W05dIFgpID0+ICh7bmFtZX1b Tl0gQykKKy0gICAgICAgICAgIDwKKy0gICAgICAgICAgICAge25hbWV9WzFdIHdlaWdodCA9IHt3 fQorLSAgICAgICAgICAgPgorLSAgICAgICAgICAge3sKKy0gICAgICAgICAgICAgIEMgPSBDYXN0 PHRvPXtpdHlwZX0+KFgpCistICAgICAgICAgICB9fQorLSAgICAgICAgICAgIiIiCistICAgICAg ICBncmFwaCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKHRleHRfZ3JhcGgpCistICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKGxlbihncmFwaC5ncmFwaC5ub2RlKSwgMSkKKy0KKyAKKyBpZiBfX25h bWVfXyA9PSAiX19tYWluX18iOgorICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQorZGlm ZiAtLWdpdCBhL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rlc3QucHkgYi9vbm54 L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5CitpbmRleCA3ZGFkOTY3MDMuLjFj NDI3NjQ4MiAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rl c3QucHkKKysrKyBiL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rlc3QucHkKK0BA IC0xMSw3ICsxMSw2IEBAIGltcG9ydCB1bml0dGVzdAorIAorIGltcG9ydCBudW1weSBhcyBucAor IGZyb20gbnVtcHkudGVzdGluZyBpbXBvcnQgYXNzZXJ0X2FsbGNsb3NlCistZnJvbSBwYXJhbWV0 ZXJpemVkIGltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9ubngKKyBmcm9tIG9ubngg aW1wb3J0IE9OTlhfTUwsIFRlbnNvclByb3RvLCBUeXBlUHJvdG8sIFZhbHVlSW5mb1Byb3RvCitA QCAtODkzLDExOCArODkyLDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvckFpT25ueE1s KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIG9ubnguY2hlY2tlci5jaGVja19tb2RlbCht b2RlbCkKKyAgICAgICAgIHJldHVybiBtb2RlbAorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoCistICAgICAgICB0dXBsZSgKKy0gICAgICAgICAgICBpdGVydG9vbHMuY2hhaW4uZnJvbV9p dGVyYWJsZSgKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAg ICAgICAgICAgICAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uU1VNIGlmIG9wc2V0NSBl bHNlICJTVU0iLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbWzAuNTc2OTIzXSwgWzAuNTc2OTIzXSwgWzAuNTc2OTIzXV0s IGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAg ICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAg ICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5j dGlvbi5BVkVSQUdFIGlmIG9wc2V0NSBlbHNlICJBVkVSQUdFIiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjI4ODQ2 Ml0sIFswLjI4ODQ2Ml0sIFswLjI4ODQ2Ml1dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAgICAg ICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAg ICAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uTUlOIGlmIG9wc2V0NSBlbHNlICJNSU4i LAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBbWzAuMDc2OTIzXSwgWzAuMDc2OTIzXSwgWzAuMDc2OTIzXV0sIGR0eXBlPW5w LmZsb2F0MzIKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAg ICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5NQVgg aWYgb3BzZXQ1IGVsc2UgIk1BWCIsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXko W1swLjVdLCBbMC41XSwgWzAuNV1dLCBkdHlwZT1ucC5mbG9hdDMyKSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg ICAgICApCistICAgICAgICAgICAgICAgIGZvciBvcHNldDUgaW4gW1RydWUsIEZhbHNlXQorLSAg ICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBAdW5pdHRlc3Quc2tpcElmKG5v dCBPTk5YX01MLCByZWFzb249Im9ubnggbm90IGNvbXBpbGVkIHdpdGggYWkub25ueC5tbCIpCist ICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yX2FnZ3JlZ2F0aW9uX2Z1bmN0aW9u cygKKy0gICAgICAgIHNlbGYsIGFnZ3JlZ2F0ZV9mdW5jdGlvbiwgZXhwZWN0ZWRfcmVzdWx0LCBv cHNldDUKKy0gICAgKToKKy0gICAgICAgIHggPSBucC5hcmFuZ2UoOSkucmVzaGFwZSgoLTEsIDMp KS5hc3R5cGUobnAuZmxvYXQzMikgLyAxMCAtIDAuNQorLSAgICAgICAgbW9kZWxfZmFjdG9yeSA9 ICgKKy0gICAgICAgICAgICBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX29wc2V0X2xhdGVz dAorLSAgICAgICAgICAgIGlmIG9wc2V0NQorLSAgICAgICAgICAgIGVsc2Ugc2VsZi5fZ2V0X3Rl c3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3IKKy0gICAgICAgICkKKy0gICAgICAgIG1vZGVsX3By b3RvID0gbW9kZWxfZmFjdG9yeSgKKy0gICAgICAgICAgICBhZ2dyZWdhdGVfZnVuY3Rpb24sCist ICAgICAgICApCistICAgICAgICBzZXNzID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsX3Byb3Rv KQorLSAgICAgICAgKGFjdHVhbCwpID0gc2Vzcy5ydW4oTm9uZSwgeyJYIjogeH0pCistICAgICAg ICBhc3NlcnRfYWxsY2xvc2UoYWN0dWFsLCBleHBlY3RlZF9yZXN1bHQsIGF0b2w9MWUtNikKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgdHVwbGUoCistICAgICAgICAg ICAgaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUoCistICAgICAgICAgICAgICAgICgKKy0g ICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAgICBNb2RlLkxFUSBp ZiBvcHNldDUgZWxzZSAiQlJBTkNIX0xFUSIsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAu YXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC41NzY5MjNdLCBbMC41NzY5 MjNdLCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAg ICBNb2RlLkdUIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfR1QiLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KFtbMC41XSwgWzAuNV0sIFswLjVdXSwgZHR5cGU9bnAuZmxvYXQzMiks CistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAgICBNb2Rl LkxUIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTFQiLAorLSAgICAgICAgICAgICAgICAgICAgICAg IG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzAuNTc2OTIzXSwgWzAu NTc2OTIzXSwgWzAuNTc2OTIzXV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAg ICAgICAgTW9kZS5HVEUgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9HVEUiLAorLSAgICAgICAgICAg ICAgICAgICAgICAgIG5wLmFycmF5KFtbMC41XSwgWzAuNV0sIFswLjVdXSwgZHR5cGU9bnAuZmxv YXQzMiksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAg ICBNb2RlLkVRIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfRVEiLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KFtbMS4wXSwgWzEuMF0sIFsxLjBdXSwgZHR5cGU9bnAuZmxvYXQzMiks CistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAgICBNb2Rl Lk5FUSBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX05FUSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC4wNzY5MjNdLCBb MC4wNzY5MjNdLCBbMC4wNzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAg ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgICAgICBmb3Ig b3BzZXQ1IGluIFtUcnVlLCBGYWxzZV0KKy0gICAgICAgICAgICApCistICAgICAgICApCistICAg ICkKKy0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBj b21waWxlZCB3aXRoIGFpLm9ubngubWwiKQorLSAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3Jl Z3Jlc3Nvcl9ydWxlKHNlbGYsIHJ1bGUsIGV4cGVjdGVkLCBvcHNldDUpOgorLSAgICAgICAgeCA9 IG5wLmFyYW5nZSg5KS5yZXNoYXBlKCgtMSwgMykpLmFzdHlwZShucC5mbG9hdDMyKSAvIDEwIC0g MC41CistICAgICAgICBtb2RlbF9mYWN0b3J5ID0gKAorLSAgICAgICAgICAgIHNlbGYuX2dldF90 ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0CistICAgICAgICAgICAgaWYgb3BzZXQ1Cist ICAgICAgICAgICAgZWxzZSBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcgor LSAgICAgICAgKQorLSAgICAgICAgYWdncmVnYXRlX2Z1bmN0aW9uID0gQWdncmVnYXRpb25GdW5j dGlvbi5TVU0gaWYgb3BzZXQ1IGVsc2UgIlNVTSIKKy0KKy0gICAgICAgIG1vZGVsX3Byb3RvID0g bW9kZWxfZmFjdG9yeShhZ2dyZWdhdGVfZnVuY3Rpb24sIHJ1bGUpCistICAgICAgICBzZXNzID0g UmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsX3Byb3RvKQorLSAgICAgICAgKGFjdHVhbCwpID0gc2Vz cy5ydW4oTm9uZSwgeyJYIjogeH0pCistICAgICAgICBhc3NlcnRfYWxsY2xvc2UoYWN0dWFsLCBl eHBlY3RlZCwgYXRvbD0xZS02KQorLQorICAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01M LCByZWFzb249Im9ubnggbm90IGNvbXBpbGVkIHdpdGggYWkub25ueC5tbCIpCisgICAgIGRlZiB0 ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yXzJfdGFyZ2V0c19vcHNldDMoc2VsZik6CisgICAg ICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBb Tm9uZSwgTm9uZV0pCitAQCAtMTExOCwyMyArMTAwNSw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VF dmFsdWF0b3JBaU9ubnhNbCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBhc3NlcnRfYWxs Y2xvc2UoZ290WzBdLCBleHBlY3RlZCwgYXRvbD0xZS02KQorICAgICAgICAgc2VsZi5hc3NlcnRJ bigib3BfdHlwZT1UcmVlRW5zZW1ibGVSZWdyZXNzb3IiLCBzdHIoc2Vzcy5ydF9ub2Rlc19bMF0p KQorIAorLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCByZWFzb249Im9ubnggbm90 IGNvbXBpbGVkIHdpdGggYWkub25ueC5tbCIpCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgK Ky0gICAgICAgIFsoaW5wdXRfdHlwZSwpIGZvciBpbnB1dF90eXBlIGluIFtUZW5zb3JQcm90by5G TE9BVCwgVGVuc29yUHJvdG8uRE9VQkxFXV0KKy0gICAgKQorLSAgICBkZWYgdGVzdF90cmVlX2Vu c2VtYmxlX21pc3Npbmdfb3BzZXQ1KHNlbGYsIGlucHV0X3R5cGUpOgorLSAgICAgICAgbW9kZWwg PSBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX29wc2V0X2xhdGVzdCgKKy0gICAgICAgICAg ICBBZ2dyZWdhdGlvbkZ1bmN0aW9uLlNVTSwgTW9kZS5MRVEsIFRydWUsIGlucHV0X3R5cGUKKy0g ICAgICAgICkKKy0gICAgICAgIG5wX2R0eXBlID0gb25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3Rv X25wX2R0eXBlKGlucHV0X3R5cGUpCistICAgICAgICB4ID0gbnAuYXJhbmdlKDkpLnJlc2hhcGUo KC0xLCAzKSkuYXN0eXBlKG5wX2R0eXBlKSAvIDEwIC0gMC41CistICAgICAgICB4WzIsIDBdID0g NQorLSAgICAgICAgeFsxLCA6XSA9IG5wLm5hbgorLSAgICAgICAgZXhwZWN0ZWQgPSBucC5hcnJh eShbWzEwMDAwMS4wXSwgWzEwMDEwMC4wXSwgWzEwMDEwMC4wXV0sIGR0eXBlPW5wX2R0eXBlKQor LSAgICAgICAgc2Vzc2lvbiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIChh Y3R1YWwsKSA9IHNlc3Npb24ucnVuKE5vbmUsIHsiWCI6IHh9KQorLSAgICAgICAgYXNzZXJ0X2Fs bGNsb3NlKGFjdHVhbCwgZXhwZWN0ZWQsIGF0b2w9MWUtNikKKy0KKyAgICAgQHVuaXR0ZXN0LnNr aXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngu bWwiKQorICAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcl9taXNzaW5nX29wc2V0 NV9mbG9hdDE2KHNlbGYpOgorICAgICAgICAgbW9kZWwgPSBzZWxmLl9nZXRfdGVzdF90cmVlX2Vu c2VtYmxlX29wc2V0X2xhdGVzdCgKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2 YWx1YXRvcl90ZXN0LnB5IGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weQor aW5kZXggODVjYzRjYzBlLi5kMGEyNTVmYzggMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvcmVmZXJl bmNlX2V2YWx1YXRvcl90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRv cl90ZXN0LnB5CitAQCAtMjUsNyArMjUsNiBAQCBmcm9tIHR5cGluZyBpbXBvcnQgVFlQRV9DSEVD S0lORworIAorIGltcG9ydCBtbF9kdHlwZXMKKyBpbXBvcnQgbnVtcHkgYXMgbnAKKy1pbXBvcnQg cGFyYW1ldGVyaXplZAorIGltcG9ydCB2ZXJzaW9uX3V0aWxzCisgZnJvbSBudW1weS50ZXN0aW5n IGltcG9ydCBhc3NlcnRfYWxsY2xvc2UKKyAKK0BAIC0yOTk4LDE2MyArMjk5Nyw2IEBAIGNsYXNz IFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgIyBt b2RlbAorICAgICAgICAgcmV0dXJuIG1ha2VfbW9kZWwoZ3JhcGgsIG9wc2V0X2ltcG9ydHM9W21h a2Vfb3BzZXRpZCgiIiwgb3BzZXQpXSkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VNaW4iLAor LSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5 KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW25wLm5hbiwgbnAubmFuXSwgWzE0LjQy MjcwNiwgMTguODA1MjddXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1syLCAxNV0sIFsxMCwg NF1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAiUmVk dWNlTDEiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgICAg IG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzIuMjM2NzA1MywgMi4z NTE2NjEyXSwgWzQuMDc2MjkyLCA0LjI5NzA2MzRdXSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMTgsIDZdLCBbMTMsIDZdXSwgZHR5cGU9 bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUwyIiwKKy0g ICAgICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1sxLjgwMTU1LCAxLjgxNjk5NDhdLCBbMi45 OTI4MDc2LCAzLjEyMDU4ODNdXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9 bnAuZmxvYXQzMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIG5wLmFycmF5KFtbMTEsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwK Ky0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAg ICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMb2dTdW0iLAorLSAgICAgICAg ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbWzAuOTQ5Nzg0OCwgMS4xODcyNjQzXSwgWzEuNjc2NDE3 NSwgMS43MDc1OV1dLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9h dDMyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoW1s2LCAxOF0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAg ICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAo CistICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTG9nU3VtRXhwIiwKKy0gICAgICAgICAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgW1sxLjYwMDU5NzMsIDEuNzQ0NTkzNV0sIFsyLjU2MTYyMjksIDIu NjUzOTc5NV1dLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMy LAorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAg bnAuYXJyYXkoW1sxMywgNl0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAg ICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAoCist ICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTWF4IiwKKy0gICAgICAgICAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgW1sxLjQyMTcxMDgsIDEuNTA2OTUzNl0sIFsyLjQ1MzgyNiwgMi41MDQxNzgzXV0s CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAg ICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShb WzEzLCAxMV0sIFsxMywgMTFdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICAgICAgIlJlZHVjZU1lYW4iLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbWzAuMzkyNDc5MDMsIDAuNzg0OTc2MzZdLCBbMi4wMzgxNDYsIDIuMTQ4NTMxN11dLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxMywg Nl0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAgICAgICAgICAgICBdLAor LSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAg ICAgICAiUmVkdWNlU3VtU3F1YXJlIiwKKy0gICAgICAgICAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg W1szLjI0NTU4MjgsIDMuMzAxNDY5Nl0sIFs4Ljk1Njg5NiwgOS43MzgwNzA1XV0sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzExLCAxOF0s IFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAgICAgICAgICAgICBdLAorLSAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAg ICAiUmVkdWNlUHJvZCIsCistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAg ICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbbnAubmFu LCBucC5uYW5dLCBbMTQuNDIyNzA2LCAxOC44MDUyN11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAg ICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJh eShbWzIsIDE1XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbMTcsIDE4XSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9vcF9yZWR1Y2Uo c2VsZiwgcmVkdWNlX29wX2V4cGVjdGVkLCBvcHNldDogaW50KToKKy0gICAgICAgIHJlZHVjZV9v cCwgZXhwZWN0ZWQgPSByZWR1Y2Vfb3BfZXhwZWN0ZWQKKy0gICAgICAgIFggPSBucC5hcmFuZ2Uo OCkucmVzaGFwZSgoLTEsIDQpKS5hc3R5cGUobnAuZmxvYXQzMikKKy0KKy0gICAgICAgIHJlc3Vs dHMgPSB7fQorLQorLSAgICAgICAgbW9kZWwgPSBzZWxmLl9jZGlzdF9tb2RlbChvcHNldCwgcmVk dWNlX29wKQorLSAgICAgICAgc2VzcyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAg ICAgIGdvdCA9IHNlc3MucnVuKE5vbmUsIHsiaW5wdXQiOiBYfSkKKy0gICAgICAgIHJlc3VsdHNb InJlZiIsIG9wc2V0XSA9IGdvdAorLQorLSAgICAgICAgY2wgPSBbCistICAgICAgICAgICAgbgor LSAgICAgICAgICAgIGZvciBuIGluIHNlc3MucnRfbm9kZXNfWzBdLmJvZHkucnRfbm9kZXNfCist ICAgICAgICAgICAgaWYgbi5fX2NsYXNzX18uX19uYW1lX18uc3RhcnRzd2l0aChyZWR1Y2Vfb3Ap CistICAgICAgICBdCistICAgICAgICBzY2hlbWEgPSBjbFswXS5fc2NoZW1hCistICAgICAgICBu ZXdfY2wgPSB0eXBlKHJlZHVjZV9vcCwgKGNsWzBdLl9fY2xhc3NfXywpLCB7Im9wX3NjaGVtYSI6 IHNjaGVtYX0pCistICAgICAgICBzZXNzID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsLCBuZXdf b3BzPVtuZXdfY2xdKQorLSAgICAgICAgZ290ID0gc2Vzcy5ydW4oTm9uZSwgeyJpbnB1dCI6IFh9 KQorLSAgICAgICAgcmVzdWx0c1sicmVmX2NsIiwgb3BzZXRdID0gZ290CistCistICAgICAgICBi YXNlbGluZSA9ICJjb25zdGFudCIKKy0gICAgICAgIGZvciBrLCB2IGluIHJlc3VsdHMuaXRlbXMo KToKKy0gICAgICAgICAgICBmb3IgYSwgYiBpbiB6aXAocmV2ZXJzZWQoZXhwZWN0ZWQpLCByZXZl cnNlZCh2KSwgc3RyaWN0PVRydWUpOgorLSAgICAgICAgICAgICAgICBpZiBhLnNoYXBlICE9IGIu c2hhcGU6CistICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKy0gICAg ICAgICAgICAgICAgICAgICAgICBmIlNoYXBlIG1pc21hdGNoIGZvciB7cmVkdWNlX29wIXJ9LCB7 YmFzZWxpbmV9OnthLnNoYXBlfSAhPSB7a306e2Iuc2hhcGV9LiIKKy0gICAgICAgICAgICAgICAg ICAgICkKKy0gICAgICAgICAgICAgICAgZGlmZiA9IG5wLmFicyhhIC0gYikubWF4KCkKKy0gICAg ICAgICAgICAgICAgaWYgZGlmZiA+IDFlLTY6CistICAgICAgICAgICAgICAgICAgICByYWlzZSBB c3NlcnRpb25FcnJvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICBmIkRpc2NyZXBhbmNpZXMg KG1heD17ZGlmZn0pIGZvciB7cmVkdWNlX29wIXJ9LCB7YmFzZWxpbmV9ICE9IHtrfVxue2F9XG4h PVxue2J9IgorLSAgICAgICAgICAgICAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5w YXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoMTMsKSwKKy0g ICAgICAgICAgICAoMTcsKSwKKy0gICAgICAgICAgICAoMTgsKSwKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9tdm4oc2VsZiwgb3BzZXQ6IGludCwgcmVmX29wc2V0OiBpbnQgPSAx Myk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3Rv LkZMT0FULCBbTm9uZSwgTm9uZSwgTm9uZSwgTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZSwgTm9uZSwg Tm9uZV0pCistICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICBtYWtlX25vZGUoIk1lYW5W YXJpYW5jZU5vcm1hbGl6YXRpb24iLCBbIlgiXSwgWyJZIl0pLAorLSAgICAgICAgXQorLSAgICAg ICAgZ3JhcGggPSBtYWtlX2dyYXBoKG5vZGVzLCAiZyIsIFtYXSwgW1ldKQorLSAgICAgICAgeCA9 IG5wLnJhbmRvbS5yYW5kKDMsIDMsIDMsIDEpLmFzdHlwZShucC5mbG9hdDMyKQorLQorLSAgICAg ICAgb25ueF9tb2RlbCA9IG1ha2VfbW9kZWwoZ3JhcGgsIG9wc2V0X2ltcG9ydHM9W21ha2Vfb3Bz ZXRpZCgiIiwgb3BzZXQpXSkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihvbm54 X21vZGVsKQorLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiB4fSlbMF0KKy0KKy0g ICAgICAgIHJlZl9vbm54X21vZGVsID0gbWFrZV9tb2RlbChncmFwaCwgb3BzZXRfaW1wb3J0cz1b bWFrZV9vcHNldGlkKCIiLCByZWZfb3BzZXQpXSkKKy0gICAgICAgIHJlZl9leHBlY3RlZCA9IFJl ZmVyZW5jZUV2YWx1YXRvcihyZWZfb25ueF9tb2RlbCkKKy0gICAgICAgIGV4cGVjdGVkID0gcmVm X2V4cGVjdGVkLnJ1bihOb25lLCB7IlgiOiB4fSlbMF0KKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwoZ290LnNoYXBlLCBleHBlY3RlZC5zaGFwZSkKKy0gICAgICAgIGFzc2VydF9hbGxjbG9z ZShnb3QsIGV4cGVjdGVkKQorLQorICAgICBkZWYgdGVzdF9jb25jYXRfaW5fYV9mdW5jdGlvbihz ZWxmKToKKyAgICAgICAgIGRlZiBjcmVhdGVfbW9kZWwoKToKKyAgICAgICAgICAgICBub2RlcyA9 IFtdCitAQCAtMzgyOSwyMTEgKzM2NzEsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9y KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjog ZGF0YX0pCisgICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBlY3RlZCkKKyAKKy0g ICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICA0ICogbnAuYXJhbmdlKDEyKS5yZXNoYXBlKDMs IDQpLAorLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMSwgNykucmVzaGFwZSgzLCAyKSwKKy0g ICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDIpKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0g ICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgW1swLCA0LCA0LCA2XSwgWzUsIDcs IDYsIDddLCBbNiwgNywgNywgN11dLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAor LSAgICAgICAgICAgICAgICA0ICogbnAuYXJhbmdlKDEyKS5yZXNoYXBlKDMsIDQpLAorLSAgICAg ICAgICAgICAgICBucC5hcmFuZ2UoMSwgNykucmVzaGFwZSgzLCAyKSwKKy0gICAgICAgICAgICAg ICAgbnAub25lcygoMywgMikpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAg ICAyLAorLSAgICAgICAgICAgICAgICBbWzEsIDUsIDUsIDddLCBbNiwgOCwgNywgOF0sIFs3LCA4 LCA4LCA4XV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAg ICAgIG5wLmFyYW5nZSgyNCkucmVzaGFwZSgzLCA4KSwKKy0gICAgICAgICAgICAgICAgW1swLjI1 LCAwLjUsIDFdLCBbMC4yNSwgMC41LCAxXSwgWzAuMjUsIDAuNSwgMV1dLAorLSAgICAgICAgICAg ICAgICBucC56ZXJvcygoMywgMykpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAg ICAgICAzLAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBbMCwgNCwg OCwgNiwgOCwgMTAsIDYsIDddLAorLSAgICAgICAgICAgICAgICAgICAgWzMyLCAzNiwgNDAsIDIy LCAyNCwgMjYsIDE0LCAxNV0sCistICAgICAgICAgICAgICAgICAgICBbNjQsIDY4LCA3MiwgMzgs IDQwLCA0MiwgMjIsIDIzXSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApLAor LSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDYpLAorLSAgICAgICAg ICAgICAgICBbMC4yNSwgMC41XSwKKy0gICAgICAgICAgICAgICAgWy0xLCAtMl0sCistICAgICAg ICAgICAgICAgIDAsCistICAgICAgICAgICAgICAgIDMsCistICAgICAgICAgICAgICAgIFstMSwg MywgNywgNCwgNiwgOF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAg ICAgICAgICAgIG5wLm9uZXMoKDksIDEyKSksCistICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMs IDQpKSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDQpKSwKKy0gICAgICAgICAgICAg ICAgMCwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAgICAgICAgICAgICAgTm9uZSwgICMgQmxv Y2tlZCBxdWFudGl6YXRpb24gaXMgZGVmaW5lZCBmb3IgMS1EIGJsb2NrcyBvbmx5CistICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQs IDUsIDYpKSwKKy0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCkpLAorLSAgICAgICAgICAg ICAgICBucC56ZXJvcygoMywgNCkpLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAg ICAgICAyLAorLSAgICAgICAgICAgICAgICBOb25lLCAgIyBTY2FsZSBhbmQgWlAgbXVzdCBoYXZl IHRoZSBzYW1lIHJhbmsgYXMgdGhlIGlucHV0CistICAgICAgICAgICAgKSwKKy0gICAgICAgIF0K Ky0gICAgKQorLSAgICBkZWYgdGVzdF9ibG9ja2VkX3F1YW50aXplX2xpbmVhcigKKy0gICAgICAg IHNlbGYsIHgsIHNjYWxlLCB6ZXJvX3BvaW50LCBheGlzLCBibG9ja19zaXplLCBleHBlY3RlZAor LSAgICApOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQ cm90by5GTE9BVCwgW05vbmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBUZW5zb3JQcm90by5JTlQ4LCBbTm9uZV0pCistCistICAgICAgICBzY2FsZV9kYXRhID0g bnAuYXJyYXkoc2NhbGUsIGR0eXBlPW5wLmZsb2F0MzIpCistICAgICAgICB6cF9kYXRhID0gbnAu YXJyYXkoemVyb19wb2ludCwgZHR5cGU9bnAuaW50OCkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9t b2RlbCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIlF1 YW50aXplTGluZWFyIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbIlgiLCAic2NhbGUiLCAi emVybyJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIGF4aXM9YXhpcywKKy0gICAgICAgICAgICAgICAgICAgICAgICBibG9ja19zaXpl PWJsb2NrX3NpemUsCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBd LAorLSAgICAgICAgICAgICAgICAiZyIsCistICAgICAgICAgICAgICAgIFtYXSwKKy0gICAgICAg ICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAic2NhbGUiLCBUZW5zb3JQcm90 by5GTE9BVCwgc2NhbGVfZGF0YS5zaGFwZSwgc2NhbGVfZGF0YQorLSAgICAgICAgICAgICAgICAg ICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJ6ZXJvIiwgVGVuc29yUHJv dG8uSU5UOCwgc2NhbGVfZGF0YS5zaGFwZSwgenBfZGF0YSksCistICAgICAgICAgICAgICAgIF0s CistICAgICAgICAgICAgKQorLSAgICAgICAgKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZh bHVhdG9yKG1vZGVsKQorLQorLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KHgsIGR0eXBlPW5wLmZs b2F0MzIpCistCistICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKy0gICAgICAgICAg ICBleHBlY3RlZCA9IG5wLmFycmF5KGV4cGVjdGVkLCBkdHlwZT1ucC5pbnQ4KQorLSAgICAgICAg ICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistICAgICAgICAgICAgYXNzZXJ0 X2FsbGNsb3NlKGdvdFswXSwgZXhwZWN0ZWQpCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAg IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CistICAgICAgICAgICAgICAgIHJl Zi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRl cml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAg ICAgbnAuYXJhbmdlKDEyKS5yZXNoYXBlKDMsIDQpLAorLSAgICAgICAgICAgICAgICBucC5hcmFu Z2UoMSwgNykucmVzaGFwZSgzLCAyKSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDIp KSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAg ICAgICAgW1swLCAxLCA0LCA2XSwgWzEyLCAxNSwgMjQsIDI4XSwgWzQwLCA0NSwgNjAsIDY2XV0s CistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLmFy YW5nZSgxMikucmVzaGFwZSgzLCA0KSwKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcp LnJlc2hhcGUoMywgMiksCistICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDIpKSwKKy0gICAg ICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgW1st MSwgMCwgMiwgNF0sIFs5LCAxMiwgMjAsIDI0XSwgWzM1LCA0MCwgNTQsIDYwXV0sCistICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLmRzdGFjayhbbnAu YXJhbmdlKDQpLnJlc2hhcGUoMiwgMildICogNCksCistICAgICAgICAgICAgICAgIG5wLmRzdGFj ayhbbnAuYXJyYXkoW1sxLCAxXSwgWzIsIDNdXSksIG5wLmFycmF5KFtbNCwgNV0sIFs2LCA3XV0p XSksCistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgyLCAyLCAyKSksCistICAgICAgICAgICAg ICAgIDIsCistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIFtbWzAsIDAsIDAs IDBdLCBbMSwgMSwgNSwgNV1dLCBbWzQsIDQsIDEyLCAxMl0sIFs5LCA5LCAyMSwgMjFdXV0sCist ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLmFyYW5n ZSgyNCkucmVzaGFwZSgzLCA4KSwKKy0gICAgICAgICAgICAgICAgW1syLCAxLCAzXSwgWzIsIDEs IDNdLCBbMiwgMSwgM11dLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgMykpLAorLSAg ICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAzLAorLSAgICAgICAgICAgICAgICBb CistICAgICAgICAgICAgICAgICAgICBbMCwgMiwgNCwgMywgNCwgNSwgMTgsIDIxXSwKKy0gICAg ICAgICAgICAgICAgICAgIFsxNiwgMTgsIDIwLCAxMSwgMTIsIDEzLCA0MiwgNDVdLAorLSAgICAg ICAgICAgICAgICAgICAgWzMyLCAzNCwgMzYsIDE5LCAyMCwgMjEsIDY2LCA2OV0sCistICAgICAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAg ICAgICAgIG5wLmFyYW5nZSgKKy0gICAgICAgICAgICAgICAgICAgIDYsCistICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgIFsyLCAzXSwKKy0gICAgICAgICAgICAgICAgWzEsIDJd LAorLSAgICAgICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAgICAzLAorLSAgICAgICAgICAg ICAgICBbLTIsIDAsIDIsIDMsIDYsIDldLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICBucC5vbmVzKCg5LCAxMikpLAorLSAgICAgICAgICAgICAgICBu cC5vbmVzKCgzLCA0KSksCistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSksCistICAg ICAgICAgICAgICAgIDAsCistICAgICAgICAgICAgICAgIDMsCistICAgICAgICAgICAgICAgIE5v bmUsICAjIEJsb2NrZWQgcXVhbnRpemF0aW9uIGlzIGRlZmluZWQgZm9yIDEtRCBibG9ja3Mgb25s eQorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5v bmVzKCgzLCA0LCA1LCA2KSksCistICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQpKSwKKy0g ICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgMiwKKy0g ICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgTm9uZSwgICMgU2NhbGUgYW5kIFpQ IG11c3QgaGF2ZSB0aGUgc2FtZSByYW5rIGFzIHRoZSBpbnB1dAorLSAgICAgICAgICAgICksCist ICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfYmxvY2tlZF9kZXF1YW50aXplX2xpbmVh cigKKy0gICAgICAgIHNlbGYsIHgsIHNjYWxlLCB6ZXJvX3BvaW50LCBheGlzLCBibG9ja19zaXpl LCBleHBlY3RlZAorLSAgICApOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlgiLCBUZW5zb3JQcm90by5JTlQ4LCBbTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0pCistCistICAgICAgICBz Y2FsZV9kYXRhID0gbnAuYXJyYXkoc2NhbGUsIGR0eXBlPW5wLmZsb2F0MzIpCistICAgICAgICB6 cF9kYXRhID0gbnAuYXJyYXkoemVyb19wb2ludCwgZHR5cGU9bnAuaW50OCkKKy0gICAgICAgIG1v ZGVsID0gbWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAg ICAgICAgICAgIkRlcXVhbnRpemVMaW5lYXIiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsi WCIsICJzY2FsZSIsICJ6ZXJvIl0sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJZIl0sCist ICAgICAgICAgICAgICAgICAgICAgICAgYXhpcz1heGlzLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAgICAg W1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJzY2Fs ZSIsIFRlbnNvclByb3RvLkZMT0FULCBzY2FsZV9kYXRhLnNoYXBlLCBzY2FsZV9kYXRhCistICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInpl cm8iLCBUZW5zb3JQcm90by5JTlQ4LCBzY2FsZV9kYXRhLnNoYXBlLCB6cF9kYXRhKSwKKy0gICAg ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApCistICAgICAgICApCistICAgICAgICByZWYg PSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICBkYXRhID0gbnAuYXJyYXkoeCwg ZHR5cGU9bnAuaW50OCkKKy0KKy0gICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorLSAg ICAgICAgICAgIGV4cGVjdGVkID0gbnAuYXJyYXkoZXhwZWN0ZWQsIGR0eXBlPW5wLmZsb2F0MzIp CistICAgICAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0gICAgICAg ICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBlY3RlZCkKKy0gICAgICAgIGVsc2U6Cist ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKy0gICAgICAg ICAgICAgICAgcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0KKyAgICAgZGVmIHRlc3RfbHJu KHNlbGYpOgorICAgICAgICAgZGVmIF9leHBlY3RlZCh4LCBhbHBoYSwgYmV0YSwgYmlhcywgc2l6 ZSk6CisgICAgICAgICAgICAgc3F1YXJlX3N1bSA9IG5wLnplcm9zKCg1LCA1LCA1LCA1KSkuYXN0 eXBlKG5wLmZsb2F0MzIpCitAQCAtNDIxNyw1MiArMzg1NCw2IEBAIGNsYXNzIFRlc3RSZWZlcmVu Y2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZ290ID0gX2NvbnZfaW1w bGVtZW50YXRpb25faW0yY29sKCoqZmVlZHMsICoqa3dhcmdzKQorICAgICAgICAgYXNzZXJ0X2Fs bGNsb3NlKGdvdCwgZXhwZWN0ZWQpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiUmVkdWNlU3VtIiwpLAorLSAg ICAgICAgICAgICgiUmVkdWNlTDEiLCksCistICAgICAgICAgICAgKCJSZWR1Y2VMMiIsKSwKKy0g ICAgICAgICAgICAoIlJlZHVjZU1pbiIsKSwKKy0gICAgICAgICAgICAoIlJlZHVjZU1heCIsKSwK Ky0gICAgICAgICAgICAoIlJlZHVjZVByb2QiLCksCistICAgICAgICAgICAgKCJSZWR1Y2VTdW1T cXVhcmUiLCksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfcmVkdWNlX29wX25v X2F4aXMoc2VsZiwgb3ApOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgi LCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCistICAgICAgICBkYXRhID0gbnAu YXJhbmdlKDYpLnJlc2hhcGUoKDEsIDMsIDIpKS5hc3R5cGUobnAuZmxvYXQzMikKKy0gICAgICAg IG5vZGVzID0gW21ha2Vfbm9kZShvcCwgWyJYIl0sIFsiWSJdLCBrZWVwZGltcz0wKV0KKy0gICAg ICAgIG1vZGVsID0gbWFrZV9tb2RlbChtYWtlX2dyYXBoKG5vZGVzLCAiZyIsIFtYXSwgW1ldKSkK Ky0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGdvdCA9 IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistICAgICAgICByID0gZ290WzBdCistICAgICAg ICBzZWxmLmFzc2VydElzSW5zdGFuY2UociwgbnAubmRhcnJheSkKKy0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwoci5zaGFwZSwgKCkpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWQuZXhwYW5kKFsoMSwpLCAoMiwpLCAoMywpLCAoNCwpLCAoNSwpLCAoNiwpXSkKKy0gICAgZGVm IHRlc3RfcGFkKHNlbGYsIGRpbSk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQorLSAgICAgICAgUCA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlAiLCBUZW5zb3JQcm90by5JTlQ2NCwgTm9uZSkKKy0gICAgICAgIFYgPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJWIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCistICAg ICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBO b25lKQorLSAgICAgICAgdmFsdWUgPSBucC5hcnJheShbLTVdLCBkdHlwZT1ucC5mbG9hdDMyKQor LQorLSAgICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgiUGFkIiwgaW5wdXRzPVsiWCIsICJQIiwgIlYi XSwgb3V0cHV0cz1bIlkiXSwgbW9kZT0iY29uc3RhbnQiKQorLSAgICAgICAgbW9kZWwgPSBtYWtl X21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAiZyIsIFtYLCBQLCBWXSwgW1ldKSkKKy0gICAgICAg IHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIHggPSBucC5hcnJheShb MV0sIGR0eXBlPW5wLmZsb2F0MzIpLnJlc2hhcGUoKDEsKSAqIGRpbSkKKy0KKy0gICAgICAgIHAg PSBucC5hcnJheShbMSwgMV0gKiBkaW0sIGR0eXBlPW5wLmludDY0KQorLSAgICAgICAgZ290ID0g cmVmLnJ1bihOb25lLCB7IlgiOiB4LCAiUCI6IHAsICJWIjogdmFsdWV9KVswXQorLSAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChnb3Quc2hhcGUsICgzLCkgKiBkaW0pCistICAgICAgICBzZWxmLmFz c2VydEVxdWFsKGdvdC5kdHlwZSwgbnAuZmxvYXQzMikKKy0KKy0gICAgICAgIHAgPSBucC5yZXBl YXQoWzcsIDNdLCBkaW0pLmFzdHlwZShucC5pbnQ2NCkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4o Tm9uZSwgeyJYIjogeCwgIlAiOiBwLCAiViI6IHZhbHVlfSlbMF0KKy0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwoZ290LnNoYXBlLCAoMTEsKSAqIGRpbSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwoZ290LmR0eXBlLCBucC5mbG9hdDMyKQorLQorICAgICBkZWYgdGVzdF9jb25zdGFudF9vZl9z aGFwZShzZWxmKToKKyAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVu c29yUHJvdG8uRkxPQVQsIE5vbmUpCisgICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQorQEAgLTUzNzMsMTI0ICs0OTY0LDYgQEAg Y2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAg ICBmb3IgaSBpbiByYW5nZSgyLCAtMSwgLTEpOgorICAgICAgICAgICAgIGFzc2VydF9hbGxjbG9z ZShnb3RbaV0sIGV4cGVjdGVkW2ldKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJp emVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoWyJhYmMiLCAiZGVmIl0sIFsi LmNvbSIsICIubmV0Il0sIFsiYWJjLmNvbSIsICJkZWYubmV0Il0sICgyLCkpLAorLSAgICAgICAg ICAgIChbImNhdCIsICJkb2ciLCAic25ha2UiXSwgWyJzIl0sIFsiY2F0cyIsICJkb2dzIiwgInNu YWtlcyJdLCAoMywpKSwKKy0gICAgICAgICAgICAoImNhdCIsICJzIiwgImNhdHMiLCAoKSksCist ICAgICAgICAgICAgKFsiYSIsICLDnyIsICJ5Il0sIFsiYSIsICLDnyIsICJ5Il0sIFsiYWEiLCAi w5/DnyIsICJ5eSJdLCAoMywpKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9z dHJpbmdfY29uY2F0KHNlbGYsIGEsIGIsIGV4cGVjdGVkLCBleHBlY3RlZF9zaGFwZSk6CistICAg ICAgICBBID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiQSIsIFRlbnNvclByb3RvLlNUUklORywg Tm9uZSkKKy0gICAgICAgIEIgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJCIiwgVGVuc29yUHJv dG8uU1RSSU5HLCBOb25lKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlki LCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUpCistICAgICAgICBub2RlID0gbWFrZV9ub2RlKCJT dHJpbmdDb25jYXQiLCBpbnB1dHM9WyJBIiwgIkIiXSwgb3V0cHV0cz1bIlkiXSkKKy0gICAgICAg IG1vZGVsID0gbWFrZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBbQSwgQl0sIFtZXSkp CistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICByZXN1 bHQsICpfID0gcmVmLnJ1bihOb25lLCB7IkEiOiBucC5hcnJheShhKSwgIkIiOiBucC5hcnJheShi KX0pCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hcnJheV9lcXVhbChyZXN1bHQsIGV4cGVj dGVkKQorLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZXN1bHQuZHR5cGUua2luZCwgeyJPIiwgIlUi fSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnNoYXBlLCBleHBlY3RlZF9zaGFw ZSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAg ICBbCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbIjEsMiwzIiwgIjQsNSw2Il0s CistICAgICAgICAgICAgICAgICIsIiwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAg ICAgICAgICAgW1siMSIsICIyIiwgIjMiXSwgWyI0IiwgIjUiLCAiNiJdXSwKKy0gICAgICAgICAg ICAgICAgWzMsIDNdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICBbIjEsIiwgIjQsNiIsICIiXSwKKy0gICAgICAgICAgICAgICAgIiwiLAorLSAgICAg ICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBbWyIxIiwgIiJdLCBbIjQiLCAiNiJd LCBbIiIsICIiXV0sCistICAgICAgICAgICAgICAgIFsyLCAyLCAxXSwKKy0gICAgICAgICAgICAp LAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWyIxIiwgIjQsNiIsICI0LDUsNiJd LAorLSAgICAgICAgICAgICAgICAiLCIsCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAg ICAgICAgIFtbIjEiLCAiIl0sIFsiNCIsICI2Il0sIFsiNCIsICI1LDYiXV0sCistICAgICAgICAg ICAgICAgIFsxLCAyLCAyXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgW1siMSwiLCAiNCw2IiwgIjQsNSw2Il0sIFsiMSwiLCAiNCw2IiwgIjQsNSw2 Il1dLAorLSAgICAgICAgICAgICAgICAiLCIsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAg ICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIFtbIjEiLCAiIiwgIiJdLCBbIjQi LCAiNiIsICIiXSwgWyI0IiwgIjUiLCAiNiJdXSwKKy0gICAgICAgICAgICAgICAgICAgIFtbIjEi LCAiIiwgIiJdLCBbIjQiLCAiNiIsICIiXSwgWyI0IiwgIjUiLCAiNiJdXSwKKy0gICAgICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW1syLCAyLCAzXSwgWzIsIDIsIDNdXSwKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWyJoZWxsbyB3b3Js ZCAhIiwgIiAgaGVsbG8gICB3b3JsZCAhIiwgIiBoZWxsbyB3b3JsZCAgICEgIl0sCistICAgICAg ICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAorLSAgICAg ICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCistICAgICAgICAgICAgICAg ICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICAgICAgWzMsIDMsIDNdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAor LSAgICAgICAgICAgICAgICBbImhlbGxvIHdvcmxkICEiLCAiICBoZWxsbyAgIHdvcmxkICEiLCAi IGhlbGxvIHdvcmxkICAgISAiXSwKKy0gICAgICAgICAgICAgICAgIiIsCistICAgICAgICAgICAg ICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIFsiaGVs bG8iLCAid29ybGQiLCAiISJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3Js ZCIsICIhIl0sCistICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwK Ky0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgWzMsIDMsIDNdLAorLSAgICAg ICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbIm8tbi1uLS14LSIs ICJvLW4tLS0tbngiXSwKKy0gICAgICAgICAgICAgICAgIi0iLAorLSAgICAgICAgICAgICAgICBO b25lLAorLSAgICAgICAgICAgICAgICBbWyJvIiwgIm4iLCAibiIsICIiLCAieCIsICIiXSwgWyJv IiwgIm4iLCAiIiwgIiIsICIiLCAibngiXV0sCistICAgICAgICAgICAgICAgIFs2LCA2XSwKKy0g ICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgW10sCistICAg ICAgICAgICAgICAgICIgIiwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAg bnAuYXJyYXkoW10pLnJlc2hhcGUoKDAsIDApKSwKKy0gICAgICAgICAgICAgICAgW10sCistICAg ICAgICAgICAgKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9zdHJpbmdfc3Bs aXQoCistICAgICAgICBzZWxmLAorLSAgICAgICAgeCwKKy0gICAgICAgIGRlbGltaXRlciwKKy0g ICAgICAgIG1heHNwbGl0LAorLSAgICAgICAgZXhwZWN0ZWRfc3BsaXQsCistICAgICAgICBleHBl Y3RlZF9udW1fc3BsaXRzLAorLSAgICApOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlgiLCBUZW5zb3JQcm90by5TVFJJTkcsIChOb25lKSkKKy0gICAgICAgIFNwbGl0cyA9 IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlNwbGl0cyIsIFRlbnNvclByb3RvLlNUUklORywgKE5v bmUpKQorLSAgICAgICAgTWF4U3BsaXRzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiTWF4U3Bs aXRzIiwgVGVuc29yUHJvdG8uSU5UMzIsIChOb25lKSkKKy0gICAgICAgIG5vZGUgPSBtYWtlX25v ZGUoCistICAgICAgICAgICAgIlN0cmluZ1NwbGl0IiwKKy0gICAgICAgICAgICBpbnB1dHM9WyJY Il0sCistICAgICAgICAgICAgb3V0cHV0cz1bIlNwbGl0cyIsICJNYXhTcGxpdHMiXSwKKy0gICAg ICAgICAgICBkZWxpbWl0ZXI9ZGVsaW1pdGVyLAorLSAgICAgICAgICAgIG1heHNwbGl0PW1heHNw bGl0LAorLSAgICAgICAgKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgo W25vZGVdLCAiZyIsIFtYXSwgW1NwbGl0cywgTWF4U3BsaXRzXSkpCistICAgICAgICByZWYgPSBS ZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICB4ID0gbnAuYXJyYXkoeCwgZHR5cGU9 b2JqZWN0KQorLSAgICAgICAgcmVzdWx0LCBudW1fc3BsaXRzLCAqXyA9IHJlZi5ydW4oTm9uZSwg eyJYIjogeH0pCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hcnJheV9lcXVhbChyZXN1bHQs IG5wLmFycmF5KGV4cGVjdGVkX3NwbGl0LCBkdHlwZT1vYmplY3QpKQorLSAgICAgICAgbnAudGVz dGluZy5hc3NlcnRfYXJyYXlfZXF1YWwoCistICAgICAgICAgICAgbnVtX3NwbGl0cywgbnAuYXJy YXkoZXhwZWN0ZWRfbnVtX3NwbGl0cywgZHR5cGU9bnAuaW50NjQpCistICAgICAgICApCistCisg ICAgIGRlZiB0ZXN0X3FsaW5lYXJjb252X2ludDgoc2VsZik6CisgICAgICAgICBub2RlID0gbWFr ZV9ub2RlKAorICAgICAgICAgICAgICJRTGluZWFyTWF0TXVsIiwKK0BAIC01NTYxLDQ0ICs1MDM0 LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6Cisg ICAgICAgICAgICAgbnAuYXJyYXkoW1s0MSwgLTEyLCAtOV0sIFsxLCAtNzUsIDIwXV0sIGR0eXBl PW5wLmludDgpLCBnb3RbMF0KKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFy YW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICBbInd3dy5nb29nbGUuY29tIiwgInd3dy5mYWNlYm9vay5jb20iLCAid3d3LmJiYy5j by51ayJdLAorLSAgICAgICAgICAgICAgICByInd3d1wuW1x3Li1dK1wuXGJjb21cYiIsCistICAg ICAgICAgICAgICAgIFtUcnVlLCBUcnVlLCBGYWxzZV0sCistICAgICAgICAgICAgICAgICgzLCks CistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFtbIk9u bngiLCAidGVuc29yZmxvdyIsICJOdW1weSJdLCBbIlB5dG9yY2giLCAiQ3l0aG9uIiwgIm51bWJh Il1dLAorLSAgICAgICAgICAgICAgICByIl5bQS1aXVthLXpdKiQiLAorLSAgICAgICAgICAgICAg ICBbW1RydWUsIEZhbHNlLCBUcnVlXSwgW1RydWUsIFRydWUsIEZhbHNlXV0sCistICAgICAgICAg ICAgICAgICgyLCAzKSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgImFjY291bnRAZ21haWwuY29tIiwKKy0g ICAgICAgICAgICAgICAgICAgICJhY2NvdW50QGhvdG1haWwuY29tIiwKKy0gICAgICAgICAgICAg ICAgICAgICJub3QgZW1haWwiLAorLSAgICAgICAgICAgICAgICAgICAgImFjY291bnQyQHlhaG9v LmNvbSIsCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIHIiKFxXfF4pW1x3 LlwtXXswLDI1fUAoeWFob298Z21haWwpXC5jb20oXFd8JCkiLAorLSAgICAgICAgICAgICAgICBb VHJ1ZSwgRmFsc2UsIEZhbHNlLCBUcnVlXSwKKy0gICAgICAgICAgICAgICAgKDQsKSwKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3JlZ2V4X2Z1bGxf bWF0Y2goc2VsZiwgeCwgcGF0dGVybiwgZXhwZWN0ZWQsIGV4cGVjdGVkX3NoYXBlKToKKy0gICAg ICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBO b25lKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90 by5CT09MLCBOb25lKQorLSAgICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgiUmVnZXhGdWxsTWF0Y2gi LCBpbnB1dHM9WyJYIl0sIG91dHB1dHM9WyJZIl0sIHBhdHRlcm49cGF0dGVybikKKy0gICAgICAg IG1vZGVsID0gbWFrZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBbWF0sIFtZXSkpCist ICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICByZXN1bHQs ICpfID0gcmVmLnJ1bihOb25lLCB7IlgiOiBucC5hcnJheSh4KX0pCistICAgICAgICBucC50ZXN0 aW5nLmFzc2VydF9hcnJheV9lcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorLSAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChyZXN1bHQuZHR5cGUua2luZCwgImIiKQorLSAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChyZXN1bHQuc2hhcGUsIGV4cGVjdGVkX3NoYXBlKQorLQorICAgICBkZWYgdGVzdF9yZWdl eF9pbnZhbGlkX3BhdHRlcm4oc2VsZik6CisgICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiWCIsIFRlbnNvclByb3RvLlNUUklORywgTm9uZSkKKyAgICAgICAgIFkgPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uQk9PTCwgTm9uZSkKK0BAIC01NjA4LDIy MCArNTA0Myw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENh c2UpOgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAg ICAgICAgICByZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFycmF5KFsieCJdKX0pCisgCistICAgIEBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAg ICAgICgKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDIsCistICAgICAgICAgICAg ICAgIFstMSwgMCwgMS41LCAyLCAzLjMsIDEwLCAyMCwgNDBdLAorLSAgICAgICAgICAgICAgICBb MCwgMCwgMiwgMiwgNCwgNiwgNiwgNl0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAo VGVuc29yUHJvdG8uVUlOVDIsIFstMSwgMCwgMS41LCAyLCAzLjMsIDEwLCA0MF0sIFswLCAwLCAy LCAyLCA0LCA2LCA2XSksCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQyLCBbMF0sIFsw XSksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQyLAor LSAgICAgICAgICAgICAgICBbLTIwLCAtMTQuNSwgMCwgMS41LCAyLCAzLjMsIDEwLCAyMF0sCist ICAgICAgICAgICAgICAgIFstNCwgLTQsIDAsIDIsIDIsIDIsIDIsIDJdLAorLSAgICAgICAgICAg ICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQyLAor LSAgICAgICAgICAgICAgICBbLTIwLCAtMTQuNSwgMCwgMS41LCAyLCAzLjMsIDEwXSwKKy0gICAg ICAgICAgICAgICAgWy00LCAtNCwgMCwgMiwgMiwgMiwgMl0sCistICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICAoVGVuc29yUHJvdG8uSU5UMiwgWzBdLCBbMF0pLAorLSAgICAgICAgXQorLSAg ICApCistICAgIGRlZiB0ZXN0X3F1YW50aXplX2xpbmVhcl9pbnQyKHNlbGYsIHF0eXBlLCBkYXRh LCBleHBlY3RlZCk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRl bnNvclByb3RvLkZMT0FULCBbTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0pCistICAgICAgICBtb2RlbCA9IG1h a2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAg ICAgICAgICAgICAgWyJzY2FsZSJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1h a2VfdGVuc29yKCJzY2FsZSIsIFRlbnNvclByb3RvLkZMT0FULCBbMV0sIFsyLjBdKSwKKy0gICAg ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAg ICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbInplcm8iXSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiemVybyIsIHF0eXBlLCBbMV0sIFswXSksCist ICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJR dWFudGl6ZUxpbmVhciIsIFsiWCIsICJzY2FsZSIsICJ6ZXJvIl0sIFsiVCJdKSwKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiRGVxdWFudGl6ZUxpbmVhciIsIFsiVCIsICJzY2FsZSJd LCBbIlkiXSwgYXhpcz0wKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAg ImciLAorLSAgICAgICAgICAgICAgICBbWF0sCistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAg ICAgICAgICApCistICAgICAgICApCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3Io bW9kZWwpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFzYXJyYXkoZGF0 YSl9KQorLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdvdFswXSwgZXhwZWN0ZWQpCistCistICAg IEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xz LnByb2R1Y3QoCistICAgICAgICAgICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5G TE9BVDE2KSwKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFRlbnNvclByb3RvLklO VDIpLAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X2Nhc3RfaW50Ml9vdXRwdXQo c2VsZiwgY2FzdF9mcm9tLCBjYXN0X3RvKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJYIiwgY2FzdF9mcm9tLCBbTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWSIsIGNhc3RfdG8sIFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9t b2RlbCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlgiXSwgWyJZIl0sIHRvPWNhc3Rf dG8pLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAgICAg ICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkKKy0g ICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAg ICAgIGRhdGEgPSBucC5hcnJheSgKKy0gICAgICAgICAgICBbMCwgMSwgMi40LCAyLjYsIDQsIDEw XSwKKy0gICAgICAgICAgICBkdHlwZT1vbm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5 cGUoY2FzdF9mcm9tKSwKKy0gICAgICAgICkKKy0gICAgICAgIGV4cGVjdGVkID0gZGF0YS5hc3R5 cGUob25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25wX2R0eXBlKGNhc3RfdG8pKQorLSAgICAg ICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwoZ290WzBdLnRvbGlzdCgpLCBleHBlY3RlZC50b2xpc3QoKSkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVj dCgKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFRlbnNvclByb3RvLklOVDIpLAor LSAgICAgICAgICAgIChUZW5zb3JQcm90by5GTE9BVCwgVGVuc29yUHJvdG8uRkxPQVQxNiksCist ICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfY2FzdF9pbnQyX2lucHV0KAorLSAgICAg ICAgc2VsZiwgY2FzdF9mcm9tOiBUZW5zb3JQcm90by5EYXRhVHlwZSwgY2FzdF90bzogVGVuc29y UHJvdG8uRGF0YVR5cGUKKy0gICAgKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJYIiwgY2FzdF9mcm9tLCBbTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWSIsIGNhc3RfdG8sIFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2Rl bCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlgiXSwgWyJZIl0sIHRvPVRlbnNvclBy b3RvLkZMT0FUKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAor LSAgICAgICAgICAgICAgICBbWF0sCistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAg ICApCistICAgICAgICApCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwp CistICAgICAgICBkYXRhID0gbnAuYXJyYXkocmFuZ2UoMiksIGR0eXBlPW5wLmZsb2F0MzIpCist ICAgICAgICBleHBlY3RlZCA9IGRhdGEuYXN0eXBlKG9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90 b19ucF9kdHlwZShjYXN0X2Zyb20pKQorLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7Ilgi OiBkYXRhfSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKGdvdFswXSwg ZXhwZWN0ZWQpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAor LSAgICAgICAgWworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8u VUlOVDQsCistICAgICAgICAgICAgICAgIFstMSwgMCwgMS41LCAyLCAzLjMsIDEwLCAyMCwgNDBd LAorLSAgICAgICAgICAgICAgICBbMCwgMCwgMiwgMiwgNCwgMTAsIDIwLCAzMF0sCistICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDQsIFstMSwgMCwgMS41LCAy LCAzLjMsIDEwLCA0MF0sIFswLCAwLCAyLCAyLCA0LCAxMCwgMzBdKSwKKy0gICAgICAgICAgICAo VGVuc29yUHJvdG8uVUlOVDQsIFswXSwgWzBdKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAg ICAgICAgIFRlbnNvclByb3RvLklOVDQsCistICAgICAgICAgICAgICAgIFstMjAsIC0xNC41LCAw LCAxLjUsIDIsIDMuMywgMTAsIDIwXSwKKy0gICAgICAgICAgICAgICAgWy0xNiwgLTE0LCAwLCAy LCAyLCA0LCAxMCwgMTRdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAg ICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ0LAorLSAgICAgICAgICAgICAgICBbLTIwLCAtMTQu NSwgMCwgMS41LCAyLCAzLjMsIDEwXSwKKy0gICAgICAgICAgICAgICAgWy0xNiwgLTE0LCAwLCAy LCAyLCA0LCAxMF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8u SU5UNCwgWzBdLCBbMF0pLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3F1YW50 aXplX2xpbmVhcl9pbnQ0KHNlbGYsIHF0eXBlLCBkYXRhLCBleHBlY3RlZCk6CistICAgICAgICBY ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0p CistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZM T0FULCBbTm9uZV0pCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAg bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAg ICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJzY2FsZSJdLAor LSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzY2FsZSIsIFRlbnNv clByb3RvLkZMT0FULCBbMV0sIFsyLjBdKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBbInplcm8iXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3Rl bnNvcigiemVybyIsIHF0eXBlLCBbMV0sIFswXSksCistICAgICAgICAgICAgICAgICAgICApLAor LSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJRdWFudGl6ZUxpbmVhciIsIFsiWCIsICJz Y2FsZSIsICJ6ZXJvIl0sIFsiVCJdKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi RGVxdWFudGl6ZUxpbmVhciIsIFsiVCIsICJzY2FsZSJdLCBbIlkiXSwgYXhpcz0wKSwKKy0gICAg ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAgICAgICAgICAgICAgICBb WF0sCistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICApCistICAgICAgICApCist ICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICBnb3QgPSBy ZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFzYXJyYXkoZGF0YSl9KQorLSAgICAgICAgYXNzZXJ0X2Fs bGNsb3NlKGdvdFswXSwgZXhwZWN0ZWQpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRl cml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAg KFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5GTE9BVDE2KSwKKy0gICAgICAgICAgICAo VGVuc29yUHJvdG8uVUlOVDQsIFRlbnNvclByb3RvLklOVDQpLAorLSAgICAgICAgKQorLSAgICAp CistICAgIGRlZiB0ZXN0X2Nhc3RfaW50NF9vdXRwdXQoc2VsZiwgY2FzdF9mcm9tLCBjYXN0X3Rv KToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgY2FzdF9mcm9tLCBb Tm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIGNhc3RfdG8s IFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBtYWtl X2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoIkNhc3QiLCBbIlgiXSwgWyJZIl0sIHRvPWNhc3RfdG8pLAorLSAgICAgICAgICAgICAgICBd LAorLSAgICAgICAgICAgICAgICAiZyIsCistICAgICAgICAgICAgICAgIFtYXSwKKy0gICAgICAg ICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgICAgIHJlZiA9 IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGRhdGEgPSBucC5hcnJheSgKKy0g ICAgICAgICAgICBbMCwgMSwgMi40LCAyLjYsIDQsIDEwXSwKKy0gICAgICAgICAgICBkdHlwZT1v bm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoY2FzdF9mcm9tKSwKKy0gICAgICAg ICkKKy0gICAgICAgIGV4cGVjdGVkID0gZGF0YS5hc3R5cGUob25ueC5oZWxwZXIudGVuc29yX2R0 eXBlX3RvX25wX2R0eXBlKGNhc3RfdG8pKQorLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7 IlgiOiBkYXRhfSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290WzBdLnRvbGlzdCgpLCBl eHBlY3RlZC50b2xpc3QoKSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5l eHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAgICAgICAgICAoVGVuc29y UHJvdG8uVUlOVDQsIFRlbnNvclByb3RvLklOVDQpLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90 by5GTE9BVCwgVGVuc29yUHJvdG8uRkxPQVQxNiksCistICAgICAgICApCistICAgICkKKy0gICAg ZGVmIHRlc3RfY2FzdF9pbnQ0X2lucHV0KAorLSAgICAgICAgc2VsZiwgY2FzdF9mcm9tOiBUZW5z b3JQcm90by5EYXRhVHlwZSwgY2FzdF90bzogVGVuc29yUHJvdG8uRGF0YVR5cGUKKy0gICAgKToK Ky0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgY2FzdF9mcm9tLCBbTm9u ZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIGNhc3RfdG8sIFtO b25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBtYWtlX2dy YXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUo IkNhc3QiLCBbIlgiXSwgWyJZIl0sIHRvPVRlbnNvclByb3RvLkZMT0FUKSwKKy0gICAgICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAgICAgICAgICAgICAgICBbWF0sCist ICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICApCistICAgICAgICApCistICAgICAg ICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICBkYXRhID0gbnAuYXJy YXkocmFuZ2UoNyksIGR0eXBlPW5wLmZsb2F0MzIpCistICAgICAgICBleHBlY3RlZCA9IGRhdGEu YXN0eXBlKG9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShjYXN0X2Zyb20pKQor LSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0gICAgICAgIG5wLnRl c3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKGdvdFswXSwgZXhwZWN0ZWQpCistCisgICAgIGRlZiB0 ZXN0X2FfZnVuY3Rpb25fY2FsbGluZ19hX2Z1bmN0aW9uX29uY2Uoc2VsZik6CisgICAgICAgICBY ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbIk4iXSkK KyAgICAgICAgIG91dHB1dCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNv clByb3RvLkZMT0FULCBbIk4iXSkKK0BAIC02MDU0LDk0ICs1Mjc1LDYgQEAgY2xhc3MgVGVzdFJl ZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBmb3IgdiBpbiBv aW5mLmZ1bmN0aW9uc18udmFsdWVzKCk6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3Rh bmNlKHYsIE15UmVmZXJlbmNlRXZhbHVhdG9yKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIkZMT0FUOEU0TTNG TiIsIDAuMjMpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTRNM0ZOVVoiLCAwLjIzKSwKKy0gICAg ICAgICAgICAoIkZMT0FUOEU1TTIiLCAwLjg1KSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU1TTJG TlVaIiwgMC44NSksCistICAgICAgICAgICAgKCJET1VCTEUiLCAwKSwKKy0gICAgICAgICAgICAo IkZMT0FUIiwgMCksCistICAgICAgICAgICAgKCJGTE9BVDE2IiwgMmUtMyksCistICAgICAgICAg ICAgKCJCRkxPQVQxNiIsIDJlLTIpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0 X2FkZF9jdXN0b21fZHR5cGUoc2VsZiwgc3R5cGU6IHN0ciwgYXRvbDogZmxvYXQpOgorLSAgICAg ICAgaXR5cGUgPSBnZXRhdHRyKFRlbnNvclByb3RvLCBzdHlwZSkKKy0gICAgICAgIG1vZGVsID0g bWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBb CistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlgiXSwgWyJYYyJdLCB0 bz1pdHlwZSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlkiXSwg WyJZYyJdLCB0bz1pdHlwZSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkFkZCIs IFsiWGMiLCAiWWMiXSwgWyJaYyJdKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi Q2FzdCIsIFsiWmMiXSwgWyJaIl0sIHRvPVRlbnNvclByb3RvLkZMT0FUKSwKKy0gICAgICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICAgICAgIm5kIiwKKy0gICAgICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3Rv LkZMT0FULCBbTm9uZSwgTm9uZSwgTm9uZV0pLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZSwgTm9u ZV0pLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWiIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZSwgTm9uZV0pXSwK Ky0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W21ha2Vfb3BzZXRp ZCgiIiwgMTgpXSwKKy0gICAgICAgICAgICBpcl92ZXJzaW9uPTksCistICAgICAgICApCistCist ICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwsIHZlcmJvc2U9MCkKKy0KKy0g ICAgICAgIHggPSAobnAuYXJhbmdlKDE4KSAvIDYpLnJlc2hhcGUoKDIsIDMsIDMpKS5hc3R5cGUo bnAuZmxvYXQzMikKKy0gICAgICAgIHkgPSAobnAuYXJhbmdlKDE4KSAvIDkpLnJlc2hhcGUoKDIs IDMsIDMpKS5hc3R5cGUobnAuZmxvYXQzMikKKy0gICAgICAgIGZlZWRzID0gZGljdChYPXgsIFk9 eSkKKy0gICAgICAgIGV4cGVjdGVkID0geCArIHkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9u ZSwgZmVlZHMpWzBdCistICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290LCBleHBlY3RlZCwgYXRv bD1hdG9sKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0g ICAgICAgIFsKKy0gICAgICAgICAgICAoIkRPVUJMRSIsKSwKKy0gICAgICAgICAgICAoIkZMT0FU IiwpLAorLSAgICAgICAgICAgICgiRkxPQVQxNiIsKSwKKy0gICAgICAgICAgICAoIkJGTE9BVDE2 IiwpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTRNM0ZOIiwpLAorLSAgICAgICAgICAgICgiRkxP QVQ4RTRNM0ZOVVoiLCksCistICAgICAgICAgICAgKCJGTE9BVDhFNU0yIiwpLAorLSAgICAgICAg ICAgICgiRkxPQVQ4RTVNMkZOVVoiLCksCistICAgICAgICAgICAgKCJJTlQ0IiwpLAorLSAgICAg ICAgICAgICgiVUlOVDQiLCksCistICAgICAgICAgICAgKCJJTlQyIiwpLAorLSAgICAgICAgICAg ICgiVUlOVDIiLCksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfY21wX2N1c3Rv bV9kdHlwZShzZWxmLCBzdHlwZSk6CistICAgICAgICBpdHlwZSA9IGdldGF0dHIoVGVuc29yUHJv dG8sIHN0eXBlKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1h a2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlhjIl0sIHRvPWl0eXBlKSwKKy0gICAgICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWSJdLCBbIlljIl0sIHRvPWl0eXBlKSwKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiR3JlYXRlck9yRXF1YWwiLCBbIlhjIiwgIlljIl0sIFsi WmMiXSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlpjIl0sIFsi WiJdLCB0bz1UZW5zb3JQcm90by5CT09MKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAg ICAgICAgICAgIm5kIiwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9u ZSwgTm9uZV0pLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi WSIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZSwgTm9uZV0pLAorLSAgICAgICAgICAg ICAgICBdLAorLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWiIsIFRl bnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZSwgTm9uZV0pXSwKKy0gICAgICAgICAgICApLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W21ha2Vfb3BzZXRpZCgiIiwgMTgpXSwKKy0gICAg ICAgICAgICBpcl92ZXJzaW9uPTksCistICAgICAgICApCistCistICAgICAgICByZWYgPSBSZWZl cmVuY2VFdmFsdWF0b3IobW9kZWwpCistCistICAgICAgICB4ID0gKG5wLmFyYW5nZSgxOCkgLyAx OCkucmVzaGFwZSgoMiwgMywgMykpLmFzdHlwZShucC5mbG9hdDMyKQorLSAgICAgICAgeSA9ICgo bnAuYXJhbmdlKDE4KSAtIDkpIC8gMTgpLnJlc2hhcGUoKDIsIDMsIDMpKS5hc3R5cGUobnAuZmxv YXQzMikKKy0gICAgICAgIGZlZWRzID0gZGljdChYPXgsIFk9eSkKKy0gICAgICAgIGV4cGVjdGVk ID0geCA+PSB5CistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIGZlZWRzKVswXQorLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoZ290LCBleHBlY3RlZCkKKy0KKyAgICAgZGVmIHRl c3Rfc2NhdHRlcl9lbGVtZW50c180ZChzZWxmKToKKyAgICAgICAgIG1vZGVsID0gbWFrZV9tb2Rl bCgKKyAgICAgICAgICAgICBtYWtlX2dyYXBoKAorZGlmZiAtLWdpdCBhL29ubngvdGVzdC9zY2hl bWFfdGVzdC5weSBiL29ubngvdGVzdC9zY2hlbWFfdGVzdC5weQoraW5kZXggZjhiM2Y4YTY1Li43 MTBiNjAyYTMgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkKKysrKyBiL29u bngvdGVzdC9zY2hlbWFfdGVzdC5weQorQEAgLTcsOCArNyw2IEBAIGltcG9ydCBjb250ZXh0bGli CisgaW1wb3J0IHVuaXR0ZXN0CisgZnJvbSB0eXBpbmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKKyAK Ky1pbXBvcnQgcGFyYW1ldGVyaXplZAorLQorIGltcG9ydCBvbm54CisgZnJvbSBvbm54IGltcG9y dCBkZWZzCisgCitAQCAtMjQ3LDM0ICsyNDUsNiBAQCBjbGFzcyBUZXN0Rm9ybWFsUGFyYW1ldGVy KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICkKKyAKKyAKKy1jbGFzcyBUZXN0VHlwZUNv bnN0cmFpbnRQYXJhbSh1bml0dGVzdC5UZXN0Q2FzZSk6CistICAgIEBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgic2luZ2xlX3R5 cGUiLCAiVCIsIFsidGVuc29yKGZsb2F0KSJdLCAiVGVzdCBkZXNjcmlwdGlvbiIpLAorLSAgICAg ICAgICAgICgKKy0gICAgICAgICAgICAgICAgImRvdWJsZV90eXBlcyIsCistICAgICAgICAgICAg ICAgICJUIiwKKy0gICAgICAgICAgICAgICAgWyJ0ZW5zb3IoZmxvYXQpIiwgInRlbnNvcihpbnQ2 NCkiXSwKKy0gICAgICAgICAgICAgICAgIlRlc3QgZGVzY3JpcHRpb24iLAorLSAgICAgICAgICAg ICksCistICAgICAgICAgICAgKCJ0dXBsZSIsICJUIiwgKCJ0ZW5zb3IoZmxvYXQpIiwgInRlbnNv cihpbnQ2NCkiKSwgIlRlc3QgZGVzY3JpcHRpb24iKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAg ICBkZWYgdGVzdF9pbml0KAorLSAgICAgICAgc2VsZiwKKy0gICAgICAgIF86IHN0ciwKKy0gICAg ICAgIHR5cGVfcGFyYW1fc3RyOiBzdHIsCistICAgICAgICBhbGxvd2VkX3R5cGVzOiBTZXF1ZW5j ZVtzdHJdLAorLSAgICAgICAgZGVzY3JpcHRpb246IHN0ciwKKy0gICAgKSAtPiBOb25lOgorLSAg ICAgICAgdHlwZV9jb25zdHJhaW50ID0gZGVmcy5PcFNjaGVtYS5UeXBlQ29uc3RyYWludFBhcmFt KAorLSAgICAgICAgICAgIHR5cGVfcGFyYW1fc3RyLCBhbGxvd2VkX3R5cGVzLCBkZXNjcmlwdGlv bgorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlX2NvbnN0cmFpbnQu ZGVzY3JpcHRpb24sIGRlc2NyaXB0aW9uKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl X2NvbnN0cmFpbnQuYWxsb3dlZF90eXBlX3N0cnMsIGxpc3QoYWxsb3dlZF90eXBlcykpCistICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGVfY29uc3RyYWludC50eXBlX3BhcmFtX3N0ciwgdHlw ZV9wYXJhbV9zdHIpCistCistCisgY2xhc3MgVGVzdEF0dHJpYnV0ZSh1bml0dGVzdC5UZXN0Q2Fz ZSk6CisgICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICBuYW1lID0gInRlc3RfYXR0 ciIKK0BAIC0yOTcsMTY5ICsyNjcsNSBAQCBjbGFzcyBUZXN0QXR0cmlidXRlKHVuaXR0ZXN0LlRl c3RDYXNlKToKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImF0dHIxIGRlc2NyaXB0aW9uIiwg YXR0cmlidXRlLmRlc2NyaXB0aW9uKQorIAorIAorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWRfY2xhc3MoCistICAgIFsKKy0gICAgICAgICMgcmVnaXN0ZXIgdG8gZXhpc3QgZG9tYWluCist ICAgICAgICB7CistICAgICAgICAgICAgIm9wX3R5cGUiOiAiQ3VzdG9tT3AiLAorLSAgICAgICAg ICAgICJvcF92ZXJzaW9uIjogNSwKKy0gICAgICAgICAgICAib3BfZG9tYWluIjogIiIsCistICAg ICAgICAgICAgInRyYXBfb3BfdmVyc2lvbiI6IFsxLCAyLCA2LCA3XSwKKy0gICAgICAgIH0sCist ICAgICAgICAjIHJlZ2lzdGVyIHRvIG5ldyBkb21haW4KKy0gICAgICAgIHsKKy0gICAgICAgICAg ICAib3BfdHlwZSI6ICJDdXN0b21PcCIsCistICAgICAgICAgICAgIm9wX3ZlcnNpb24iOiA1LAor LSAgICAgICAgICAgICJvcF9kb21haW4iOiAidGVzdCIsCistICAgICAgICAgICAgInRyYXBfb3Bf dmVyc2lvbiI6IFsxLCAyLCA2LCA3XSwKKy0gICAgICAgIH0sCistICAgIF0KKy0pCistY2xhc3Mg VGVzdE9wU2NoZW1hUmVnaXN0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICBvcF90eXBlOiBz dHIKKy0gICAgb3BfdmVyc2lvbjogaW50CistICAgIG9wX2RvbWFpbjogc3RyCistICAgICMgcmVn aXN0ZXIgc29tZSBmYWtlIHNjaGVtYSB0byBjaGVjayBiZWhhdmlvcgorLSAgICB0cmFwX29wX3Zl cnNpb246IGxpc3RbaW50XQorLQorLSAgICBkZWYgc2V0VXAoc2VsZikgLT4gTm9uZToKKy0gICAg ICAgICMgRW5zdXJlIHRoZSBzY2hlbWEgaXMgdW5yZWdpc3RlcmVkCistICAgICAgICBzZWxmLmFz c2VydEZhbHNlKG9ubnguZGVmcy5oYXMoc2VsZi5vcF90eXBlLCBzZWxmLm9wX2RvbWFpbikpCist CistICAgIGRlZiB0ZWFyRG93bihzZWxmKSAtPiBOb25lOgorLSAgICAgICAgIyBDbGVhbiB1cCB0 aGUgcmVnaXN0ZXJlZCBzY2hlbWEKKy0gICAgICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFw X29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbl06CistICAgICAgICAgICAgd2l0aCBjb250ZXh0 bGliLnN1cHByZXNzKG9ubnguZGVmcy5TY2hlbWFFcnJvcik6CistICAgICAgICAgICAgICAgIG9u bnguZGVmcy5kZXJlZ2lzdGVyX3NjaGVtYShzZWxmLm9wX3R5cGUsIHZlcnNpb24sIHNlbGYub3Bf ZG9tYWluKQorLQorLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl9tdWx0aV9zY2hlbWEoc2VsZik6Cist ICAgICAgICBmb3IgdmVyc2lvbiBpbiBbKnNlbGYudHJhcF9vcF92ZXJzaW9uLCBzZWxmLm9wX3Zl cnNpb25dOgorLSAgICAgICAgICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCistICAgICAg ICAgICAgICAgIHNlbGYub3BfdHlwZSwKKy0gICAgICAgICAgICAgICAgc2VsZi5vcF9kb21haW4s CistICAgICAgICAgICAgICAgIHZlcnNpb24sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAg IG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQorLSAgICAgICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZShvbm54LmRlZnMuaGFzKHNlbGYub3BfdHlwZSwgdmVyc2lvbiwgc2VsZi5vcF9k b21haW4pKQorLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwg c2VsZi5vcF92ZXJzaW9uXToKKy0gICAgICAgICAgICAjIEFsc28gbWFrZSBzdXJlIHRoZSBgb3Bf c2NoZW1hYCBpcyBhY2Nlc3NpYmxlIGFmdGVyIHJlZ2lzdGVyCistICAgICAgICAgICAgcmVnaXN0 ZXJlZF9vcCA9IG9ubnguZGVmcy5nZXRfc2NoZW1hKAorLSAgICAgICAgICAgICAgICBvcF9zY2hl bWEubmFtZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbgorLSAgICAgICAgICAgICkKKy0gICAg ICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAorLSAgICAgICAgICAgICAgICBzZWxm Lm9wX3R5cGUsCistICAgICAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAgICAg ICAgICB2ZXJzaW9uLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFsKHN0cihyZWdpc3RlcmVkX29wKSwgc3RyKG9wX3NjaGVtYSkpCistCistICAgIGRlZiB0ZXN0 X3VzaW5nX3RoZV9zcGVjaWZpZWRfdmVyc2lvbl9pbl9vbm54X2NoZWNrKHNlbGYpOgorLSAgICAg ICAgaW5wdXQgPSBmIiIiCistICAgICAgICAgICAgPAorLSAgICAgICAgICAgICAgICBpcl92ZXJz aW9uOiA3LAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnQ6IFsKKy0gICAgICAgICAgICAg ICAgICAgICJ7c2VsZi5vcF9kb21haW59IiA6IHtzZWxmLm9wX3ZlcnNpb259CistICAgICAgICAg ICAgICAgIF0KKy0gICAgICAgICAgICA+CistICAgICAgICAgICAgYWdyYXBoIChmbG9hdFtOLCAx MjhdIFgsIGludDMyIFkpID0+IChmbG9hdFtOXSBaKQorLSAgICAgICAgICAgIHt7CistICAgICAg ICAgICAgICAgIFogPSB7c2VsZi5vcF9kb21haW59LntzZWxmLm9wX3R5cGV9PGF0dHIxPVsxLDJd PihYLCBZKQorLSAgICAgICAgICAgIH19CistICAgICAgICAgICAiIiIKKy0gICAgICAgIG1vZGVs ID0gb25ueC5wYXJzZXIucGFyc2VfbW9kZWwoaW5wdXQpCistICAgICAgICBvcF9zY2hlbWEgPSBk ZWZzLk9wU2NoZW1hKAorLSAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKKy0gICAgICAgICAgICBz ZWxmLm9wX2RvbWFpbiwKKy0gICAgICAgICAgICBzZWxmLm9wX3ZlcnNpb24sCistICAgICAgICAg ICAgaW5wdXRzPVsKKy0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVtYS5Gb3JtYWxQYXJhbWV0 ZXIoImlucHV0MSIsICJUIiksCistICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFs UGFyYW1ldGVyKCJpbnB1dDIiLCAiaW50MzIiKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIG91dHB1dHM9WworLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hLkZvcm1hbFBhcmFt ZXRlcigib3V0cHV0MSIsICJUIiksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICB0eXBl X2NvbnN0cmFpbnRzPVsoIlQiLCBbInRlbnNvcihmbG9hdCkiXSwgIiIpXSwKKy0gICAgICAgICAg ICBhdHRyaWJ1dGVzPVsKKy0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVtYS5BdHRyaWJ1dGUo CistICAgICAgICAgICAgICAgICAgICAiYXR0cjEiLCBkZWZzLk9wU2NoZW1hLkF0dHJUeXBlLklO VFMsICJhdHRyMSBkZXNjcmlwdGlvbiIKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAg IF0sCistICAgICAgICApCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hl Y2tlci5WYWxpZGF0aW9uRXJyb3IpOgorLSAgICAgICAgICAgIG9ubnguY2hlY2tlci5jaGVja19t b2RlbChtb2RlbCwgY2hlY2tfY3VzdG9tX2RvbWFpbj1UcnVlKQorLSAgICAgICAgb25ueC5kZWZz LnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCistICAgICAgICAjIFRoZSBmYWtlIHNjaGVtYSB3 aWxsIHJhaXNlIGNoZWNrIGV4Y2VwdGlvbiBpZiBzZWxlY3RlZCBpbiBjaGVja2VyCistICAgICAg ICBmb3IgdmVyc2lvbiBpbiBzZWxmLnRyYXBfb3BfdmVyc2lvbjoKKy0gICAgICAgICAgICBvbm54 LmRlZnMucmVnaXN0ZXJfc2NoZW1hKAorLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hKAor LSAgICAgICAgICAgICAgICAgICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgICAgICAgICAg c2VsZi5vcF9kb21haW4sCistICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLAorLSAgICAgICAg ICAgICAgICAgICAgb3V0cHV0cz1bCistICAgICAgICAgICAgICAgICAgICAgICAgZGVmcy5PcFNj aGVtYS5Gb3JtYWxQYXJhbWV0ZXIoIm91dHB1dDEiLCAiaW50MzIiKSwKKy0gICAgICAgICAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICApCistICAgICAgICBv bm54LmNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwsIGNoZWNrX2N1c3RvbV9kb21haW49VHJ1ZSkK Ky0KKy0gICAgZGVmIHRlc3RfcmVnaXN0ZXJfc2NoZW1hX3JhaXNlc19lcnJvcl93aGVuX3JlZ2lz dGVyaW5nX2Ffc2NoZW1hX3R3aWNlKHNlbGYpOgorLSAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5P cFNjaGVtYSgKKy0gICAgICAgICAgICBzZWxmLm9wX3R5cGUsCistICAgICAgICAgICAgc2VsZi5v cF9kb21haW4sCistICAgICAgICAgICAgc2VsZi5vcF92ZXJzaW9uLAorLSAgICAgICAgKQorLSAg ICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCistICAgICAgICB3aXRo IHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguZGVmcy5TY2hlbWFFcnJvcik6CistICAgICAgICAgICAg b25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCistCistICAgIGRlZiB0ZXN0X2Rl cmVnaXN0ZXJfdGhlX3NwZWNpZmllZF9zY2hlbWEoc2VsZik6CistICAgICAgICBmb3IgdmVyc2lv biBpbiBbKnNlbGYudHJhcF9vcF92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb25dOgorLSAgICAgICAg ICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCistICAgICAgICAgICAgICAgIHNlbGYub3Bf dHlwZSwKKy0gICAgICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCistICAgICAgICAgICAgICAg IHZlcnNpb24sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIG9ubnguZGVmcy5yZWdpc3Rl cl9zY2hlbWEob3Bfc2NoZW1hKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvbm54LmRl ZnMuaGFzKG9wX3NjaGVtYS5uYW1lLCB2ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluKSkKKy0gICAg ICAgIG9ubnguZGVmcy5kZXJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEubmFtZSwgc2VsZi5vcF92 ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluKQorLSAgICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi50 cmFwX29wX3ZlcnNpb246CistICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9ubnguZGVmcy5o YXMob3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVtYS5kb21haW4pKQorLSAgICAgICAg IyBNYXliZSBoYXMgbGVzc2VyIG9wIHZlcnNpb24gaW4gdHJhcCBsaXN0CistICAgICAgICBpZiBv bm54LmRlZnMuaGFzKG9wX3NjaGVtYS5uYW1lLCBzZWxmLm9wX3ZlcnNpb24sIG9wX3NjaGVtYS5k b21haW4pOgorLSAgICAgICAgICAgIHNjaGVtYSA9IG9ubnguZGVmcy5nZXRfc2NoZW1hKAorLSAg ICAgICAgICAgICAgICBvcF9zY2hlbWEubmFtZSwgc2VsZi5vcF92ZXJzaW9uLCBvcF9zY2hlbWEu ZG9tYWluCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzY2hl bWEuc2luY2VfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uKQorLQorLSAgICBkZWYgdGVzdF9kZXJl Z2lzdGVyX3NjaGVtYV9yYWlzZXNfZXJyb3Jfd2hlbl9vcHNjaGVtYV9kb2VzX25vdF9leGlzdChz ZWxmKToKKy0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5kZWZzLlNjaGVtYUVy cm9yKToKKy0gICAgICAgICAgICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9zY2hlbWEoc2VsZi5vcF90 eXBlLCBzZWxmLm9wX3ZlcnNpb24sIHNlbGYub3BfZG9tYWluKQorLQorLSAgICBkZWYgdGVzdF9s ZWdhY3lfc2NoZW1hX2FjY2Vzc2libGVfYWZ0ZXJfZGVyZWdpc3RlcihzZWxmKToKKy0gICAgICAg IG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCistICAgICAgICAgICAgc2VsZi5vcF90eXBlLAor LSAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAgICAgIHNlbGYub3BfdmVyc2lv biwKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2No ZW1hKQorLSAgICAgICAgc2NoZW1hX2EgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYSgKKy0gICAgICAg ICAgICBvcF9zY2hlbWEubmFtZSwgb3Bfc2NoZW1hLnNpbmNlX3ZlcnNpb24sIG9wX3NjaGVtYS5k b21haW4KKy0gICAgICAgICkKKy0gICAgICAgIHNjaGVtYV9iID0gb25ueC5kZWZzLmdldF9zY2hl bWEob3Bfc2NoZW1hLm5hbWUsIG9wX3NjaGVtYS5kb21haW4pCistCistICAgICAgICBkZWYgZmls dGVyX3NjaGVtYShzY2hlbWFzKToKKy0gICAgICAgICAgICByZXR1cm4gW29wIGZvciBvcCBpbiBz Y2hlbWFzIGlmIG9wLm5hbWUgPT0gb3Bfc2NoZW1hLm5hbWVdCistCistICAgICAgICBzY2hlbWFf YyA9IGZpbHRlcl9zY2hlbWEob25ueC5kZWZzLmdldF9hbGxfc2NoZW1hcygpKQorLSAgICAgICAg c2NoZW1hX2QgPSBmaWx0ZXJfc2NoZW1hKG9ubnguZGVmcy5nZXRfYWxsX3NjaGVtYXNfd2l0aF9o aXN0b3J5KCkpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzY2hlbWFfYyksIDEpCist ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzY2hlbWFfZCksIDEpCistICAgICAgICAjIEF2 b2lkIG1lbW9yeSByZXNpZHVlIGFuZCBhY2Nlc3Mgc3RvcmFnZSBhcyBtdWNoIGFzIHBvc3NpYmxl CistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFfYSksIHN0cihvcF9zY2hlbWEp KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2IpLCBzdHIob3Bfc2NoZW1h KSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9jWzBdKSwgc3RyKG9wX3Nj aGVtYSkpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFfZFswXSksIHN0cihv cF9zY2hlbWEpKQorLQorLQorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgIHVuaXR0 ZXN0Lm1haW4oKQorZGlmZiAtLWdpdCBhL29ubngvdGVzdC9zaGFwZV9pbmZlcmVuY2VfdGVzdC5w eSBiL29ubngvdGVzdC9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQoraW5kZXggZWUyMmM4ZmZiLi44 NDlhZTA0MmEgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkK KysrKyBiL29ubngvdGVzdC9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQorQEAgLTEyLDcgKzEyLDYg QEAgZnJvbSB0eXBpbmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcsIEFueQorIGltcG9ydCBudW1weSBh cyBucAorIGltcG9ydCBweXRlc3QKKyBmcm9tIGdvb2dsZS5wcm90b2J1ZiBpbXBvcnQgdGV4dF9m b3JtYXQKKy1mcm9tIHBhcmFtZXRlcml6ZWQgaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBpbXBv cnQgb25ueC5zaGFwZV9pbmZlcmVuY2UKKyBmcm9tIG9ubnggaW1wb3J0ICgKK0BAIC0yNDQsODYg KzI0Myw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxw ZXIpOgorICAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLkZMT0FULCAoMzAsIDQsIDUpKV0KKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYg dGVzdF90cmFuc3Bvc2Uoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsi WCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZM T0FULCAoMywgMiwgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAg ZGVmIHRlc3RfdHJhbnNwb3NlX3ByZWV4aXN0aW5nKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiWCIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSld LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVu c29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9z ZSIpKQorLSAgICBkZWYgdGVzdF90cmFuc3Bvc2Vfc2NhbGFyKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg WygiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUo IlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg KQorLQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8u RkxPQVQsICgpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCistICAgIGRlZiB0 ZXN0X3RyYW5zcG9zZV9wYXJ0aWFsKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiWCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bv c2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5VTkRFRklORUQsICgzLCAiYSIsICJi IikpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIs IFRlbnNvclByb3RvLkZMT0FULCAoMywgMiwgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFu c3Bvc2UiKSkKKy0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3ByZWV4aXN0aW5nX2luY29ycmVjdF9z aGFwZShzZWxmLCAqXykgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAor LSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1b MSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRl bnNvclByb3RvLkZMT0FULCAoNSwgNSwgNSkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu YXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9p bmZlcnJlZCwgZ3JhcGgpCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3ByZWV4aXN0aW5n X2luY29ycmVjdF90eXBlKHNlbGYsICpfKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs IDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsi WSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJZIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMywgMiwgNCkpXSwKKy0gICAgICAgICkKKy0g ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVy cm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAgZGVmIHRlc3RfdHJhbnNwb3Nl X2luY29ycmVjdF9yZXBlYXRlZF9wZXJtKHNlbGYsICpfKSAtPiBOb25lOgorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5G TE9BVCwgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwg WyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAxXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5m ZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKKy0KKyAgICAgZGVmIF9tYWtlX21h dG11bF90ZXN0X2FsbF9kaW1zX2tub3duKAorICAgICAgICAgc2VsZiwgdmVyc2lvbiwgc2hhcGUx OiBTZXF1ZW5jZVtpbnRdLCBzaGFwZTI6IFNlcXVlbmNlW2ludF0KKyAgICAgKSAtPiBOb25lOgor QEAgLTM0MiwyMSArMjYxLDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUlu ZmVyZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorICAgICAgICAgKQorIAorLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiTWF0TXVsIikpCistICAgIGRlZiB0 ZXN0X21hdG11bF9hbGxfZGltc19rbm93bihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAg ICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMiwp LCAoMiwpKQorLQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93 bih2ZXJzaW9uLCAoNCwgMiksICgyLCA0KSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rl c3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDUsIDIpLCAoMiwgNCkpCistICAgICAgICBzZWxm Ll9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg1LCAyKSwgKDIsIDEp KQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9u LCAoMSwgMiksICgyLCAzKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2Rp bXNfa25vd24odmVyc2lvbiwgKDIsKSwgKDIsIDMpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRt dWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNCwgMiksICgyLCkpCistICAgICAgICBz ZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgxLCA0LCAyKSwg KDMsIDIsIDMpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93 bih2ZXJzaW9uLCAoMywgNCwgMiksICgzLCAyLCAzKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0 bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDUsIDEsIDQsIDIpLCAoMSwgMywgMiwg MykpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNp b24sICg0LCAyKSwgKDMsIDIsIDMpKQorLQorICAgICBkZWYgX21ha2VfbWF0bXVsX3Rlc3RfYWxs b3dfdW5rbm93bigKKyAgICAgICAgIHNlbGYsIHZlcnNpb24sIHNoYXBlMTogQW55LCBzaGFwZTI6 IEFueSwgZXhwZWN0ZWRfb3V0X3NoYXBlOiBBbnkKKyAgICAgKSAtPiBOb25lOgorQEAgLTM2Nywx MzE4ICsyNzEsMzkgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5j ZUhlbHBlcik6CisgICAgICAgICApCisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisg ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InoiLCBUZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfb3V0X3NoYXBlKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiTWF0TXVsIikpCistICAgIGRlZiB0ZXN0X21hdG11bF9hbGxvd191bmtub3duKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0 X2FsbG93X3Vua25vd24odmVyc2lvbiwgKE5vbmUsKSwgKE5vbmUsKSwgKCkpCistICAgICAgICBz ZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDMsKSwgKE5vbmUs KSwgKCkpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVy c2lvbiwgKDIsKSwgKDIsICJhIiksICgiYSIsKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVs X3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoNCwgMiksICgyLCAiYSIpLCAoNCwgImEiKSkK Ky0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAo NCwgTm9uZSksICgyLCAiYSIpLCAoNCwgImEiKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVs X3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoNCwgTm9uZSksIChOb25lLCAiYSIpLCAoNCwg ImEiKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bigKKy0g ICAgICAgICAgICB2ZXJzaW9uLCAoMSwgNCwgMiksICgiYSIsIDIsIDUpLCAoImEiLCA0LCA1KQor LSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3du KAorLSAgICAgICAgICAgIHZlcnNpb24sICgxLCAzLCA0LCAyKSwgKCJhIiwgMiwgNSksICgxLCAz LCA0LCA1KQorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxv d191bmtub3duKHZlcnNpb24sICgzLCksIE5vbmUsIE5vbmUpCistICAgICAgICBzZWxmLl9tYWtl X21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgTm9uZSwgTm9uZSwgTm9uZSkKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNhc3QiKSkKKy0g ICAgZGVmIHRlc3RfY2FzdChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdCIsIFsieCJd LCBbInkiXSwgdG89VGVuc29yUHJvdG8uVUlOVDgpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LlVJTlQ4LCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDYXN0IikpCistICAgIEB1 bml0dGVzdC5za2lwKAorLSAgICAgICAgIklzc3VlICM1OTYwIgorLSAgICApICAjIEZJWE1FKCM1 OTYwKSBwcm9wYWdhdGVFbGVtVHlwZUZyb21BdHRyaWJ1dGVUb091dHB1dCBkb2VzIG5vdCB2YWxp ZGF0ZSBhZ2FpbnN0IG91dHB1dCB0eXBlIGNvbnN0cmFpbnRzCistICAgIGRlZiB0ZXN0X2Nhc3Rf dG9fY29tcGxleChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOiAgIyBub3FhOiBBUkcwMDIKKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNh c3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLkNPTVBMRVgxMjgpXSwKKy0gICAgICAg ICAgICBbXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubngu c2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDYXN0TGlrZSIp KQorLSAgICBkZWYgdGVzdF9jYXN0X2xpa2Uoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSksICgidCIsIFRlbnNvclByb3RvLkZMT0FUMTYsICgi TiIsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNhc3RMaWtlIiwgWyJ4IiwgInQiXSwg WyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FUMTYsICgyLCA0LCAzKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIkJpdENhc3QiKSkKKy0gICAgZGVmIHRlc3RfYml0Y2FzdF9zYW1l X3NpemUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgICMgVGVzdCBiaXRjYXN0 IGJldHdlZW4gdHlwZXMgb2Ygc2FtZSBzaXplIChmbG9hdDMyIC0+IGludDMyKQorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQml0Q2FzdCIs IFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uSU5UMzIpXSwKKy0gICAgICAgICAgICBbXSwK Ky0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLklOVDMyLCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJCaXRDYXN0Iikp CistICAgIGRlZiB0ZXN0X2JpdGNhc3Rfc2NhbGFyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 CistICAgICAgICAjIFRlc3QgYml0Y2FzdCB3aXRoIHNjYWxhciBpbnB1dCAoc2FtZSBzaXplKQor LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJCaXRDYXN0 IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5JTlQzMildLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uSU5UMzIsICgpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQorLSAg ICBkZWYgdGVzdF9iaXRjYXN0XzFkKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAg ICAjIFRlc3QgYml0Y2FzdCB3aXRoIDFEIHRlbnNvciAoZmxvYXQzMiAtPiB1aW50MzIsIHNhbWUg c2l6ZSkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJCaXRDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5VSU5UMzIpXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLlVJTlQzMiwgKDgsKSldLAorLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAg ICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJp dENhc3QiKSkKKy0gICAgZGVmIHRlc3RfYml0Y2FzdF9kb3VibGVfdG9faW50NjQoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgICMgVGVzdCBiaXRjYXN0IGJldHdlZW4gNjQtYml0 IHR5cGVzIChkb3VibGUgLT4gaW50NjQpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDMsIDUpKV0sCist ICAgICAgICAgICAgW21ha2Vfbm9kZSgiQml0Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29y UHJvdG8uSU5UNjQpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywgNSkpXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJCaXRDYXN0IikpCistICAgIGRlZiB0ZXN0X2JpdGNhc3RfaW50 OF90b191aW50OChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0IGJp dGNhc3QgYmV0d2VlbiA4LWJpdCB0eXBlcyAoaW50OCAtPiB1aW50OCkKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5U OCwgKDQsIDYpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQml0Q2FzdCIsIFsieCJdLCBb InkiXSwgdG89VGVuc29yUHJvdG8uVUlOVDgpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJ TlQ4LCAoNCwgNikpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJCaXRDYXN0IikpCistICAgIGRlZiB0 ZXN0X2JpdGNhc3RfZmxvYXQxNl90b19pbnQxNihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgor LSAgICAgICAgIyBUZXN0IGJpdGNhc3QgYmV0d2VlbiAxNi1iaXQgdHlwZXMgKGZsb2F0MTYgLT4g aW50MTYpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLkZMT0FUMTYsICgyLCAzKSldLAorLSAgICAgICAgICAgIFttYWtl X25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLklOVDE2KV0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQxNiwgKDIsIDMpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiQ29sMkltIikpCistICAgIGRlZiB0ZXN0X2NvbDJpbShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSwgNSkp LAorLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAo MiwpKSwKKy0gICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb2wySW0iLCBbImlucHV0Iiwg Im91dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwgWyJvdXRwdXQiXQorLSAgICAgICAgICAg ICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBp bml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDUsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMSwgNSkp LAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltX3N0cmlkZXMo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDEsIDksIDQpKSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgICAgICgia2VybmVsX3No YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAg ICAiQ29sMkltIiwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBl IiwgImtlcm5lbF9zaGFwZSJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKKy0g ICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9WzIsIDJdLAorLSAgICAgICAgICAgICAgICApCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXpl cj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsKSwgKDUsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io Imtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMywgMykpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o Im91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKKy0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJDb2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltX3BhZHMoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwg KDEsIDUsIDE1KSksCistICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJbSIs CistICAgICAgICAgICAgICAgICAgICBbImlucHV0IiwgIm91dHB1dF9zaGFwZSIsICJrZXJuZWxf c2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0sCistICAgICAgICAgICAg ICAgICAgICBwYWRzPVswLCAxLCAwLCAxXSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCksICg1LCA1KSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxf c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDEsIDUpKSwKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQi LCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEsIDUsIDUpKV0sCistICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAg ICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi Q29sMkltIikpCistICAgIGRlZiB0ZXN0X2NvbDJpbV9kaWxhdGlvbnMoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEs IDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDIsKSksCistICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29sMkltIiwKKy0g ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFw ZSJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKKy0gICAgICAgICAgICAgICAg ICAgIGRpbGF0aW9ucz1bMSwgNV0sCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAo MiwpLCAoNiwgNikpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgyLCAyKSksCistICAgICAgICAgICAgXSwKKy0g ICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBn cmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxLCAxLCA2LCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJ bSIpKQorLSAgICBkZWYgdGVzdF9jb2wyaW1fNWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEwLCAxMikpLAor LSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywp KSwKKy0gICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDMsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb2wySW0iLCBbImlucHV0IiwgIm91 dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwgWyJvdXRwdXQiXQorLSAgICAgICAgICAgICAg ICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0 aWFsaXplcj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDMsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMSwgMSwg NSkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMiwgMywgNCwgNSkp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKKy0gICAgZGVmIHRlc3RfY29uY2F0KHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpLCAo InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDcsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiQ29uY2F0IiwgWyJ4IiwgInkiXSwgWyJ6Il0sIGF4aXM9MCldLAorLSAgICAgICAgICAg IFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6Iiwg VGVuc29yUHJvdG8uRkxPQVQsICg5LCA0LCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNh dCIpKQorLSAgICBkZWYgdGVzdF9jb25jYXRfbWlzc2luZ19zaGFwZShzZWxmLCAqXykgLT4gTm9u ZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCist ICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpLAorLSAg ICAgICAgICAgICAgICAieSIsCistICAgICAgICAgICAgICAgICgieiIsIFRlbnNvclByb3RvLkZM T0FULCAoTm9uZSwgTm9uZSwgTm9uZSkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg W21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4IiwgInkiLCAieiJdLCBbIm91dCJdLCBheGlzPTApXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz KG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3Jh cGgpCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25j YXQiKSkKKy0gICAgZGVmIHRlc3RfY29uY2F0XzNkX2F4aXNfMihzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIsIDIpKSwgKCJ5IiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCAyLCAyKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsi eCIsICJ5Il0sIFsieiJdLCBheGlzPTIpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FU LCAoMiwgMiwgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKKy0gICAgZGVmIHRl c3RfY29uY2F0X3BhcmFtKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZM T0FULCAoImEiLCAyKSksICgieSIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCAzKSldLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5Il0sIFsieiJdLCBheGlzPTEp XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCA1KSldLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIkNvbmNhdCIpKQorLSAgICBkZWYgdGVzdF9jb25jYXRfcGFyYW1fc2luZ2xlX2lu cHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCAy KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCJdLCBbInoiXSwgYXhp cz0wKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgMikpXSwKKy0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY19z aGFwZV9rbm93bl9yYW5rKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxm LnNraXBJZih2ZXJzaW9uIDwgMTQsICJSYW5rIGluZmVyZW5jZSBpcyBhZGRlZCBmcm9tIFZlcnNp b24gMTQiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoMiwpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsi eCIsICJzaGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsIChO b25lLCBOb25lKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRl c3RfcmVzaGFwZV9keW5hbWljX3NoYXBlX3N5bWJvbGljKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgiTSIsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngi LCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCBOb25l KV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVzdF9yZXNoYXBl X2R5bmFtaWNfdW5rbm93bl9zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCBOb25l KV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBb InkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsIE5vbmUpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBl KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykp LCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAg W10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwpLCAoMywgOCkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMywgOCkpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGlj X3NoYXBlX2luZmVycmVkKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJ TlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0s CistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29y KCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMCwgMywgLTEpKV0sCistICAgICAg ICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5V SU5UOCwgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBk ZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19zaGFwZV96ZXJvKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMSwgMSwgMSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgzLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4Iiwg InNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlh bGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMCwg MSwgMSkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMSwgMSwgMSkpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJS ZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX2FsbG93emVybyhz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8 IDE0LCAiYWxsb3d6ZXJvIGlzIGFkZGVkIGZyb20gVmVyc2lvbiAxNCIpCistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAo IngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDAsIDApKSwKKy0gICAgICAgICAgICAgICAgKCJz aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAg ICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0sIGFsbG93 emVybz0xKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21h a2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMCwgMSwgMSkpXSwK Ky0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLlVJTlQ4LCAoMCwgMSwgMSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikp CistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX2NvbnN0YW50KHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAg ICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpXSwKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAg ICAgIFsic2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJz aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMywgOCkpLAorLSAgICAgICAgICAgICAg ICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUi XSwgWyJ5Il0pLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJz aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMywgOCkpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVXBzYW1wbGUiKSkKKy0gICAgZGVmIHRlc3Rf dXBzYW1wbGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGlmIHZlcnNpb24g PT0gNzoKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKV0sCistICAgICAg ICAgICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4Il0sIFsieSJdLCBzY2FsZXM9WzEu MCwgMS4xLCAxLjMsIDEuOV0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAg KQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAgICAg KCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0s CistICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4IiwgInNjYWxlcyJd LCBbInkiXSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgaW5pdGlh bGl6ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNv clByb3RvLkZMT0FULCAoNCwpLCAoMS4wLCAxLjEsIDEuMywgMS45KSkKKy0gICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICApCistCistICAgICAgICAgICAgZGVmIGNhbGxfaW5mZXJlbmNl KCk6CistICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAg ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICAgICAgICAgICkKKy0KKy0gICAgICAgICAgICBpZiB2ZXJz aW9uID09IDk6CistICAgICAgICAgICAgICAgIGNhbGxfaW5mZXJlbmNlKCkKKy0gICAgICAgICAg ICBlbHNlOgorLSAgICAgICAgICAgICAgICAjIFVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQgc2luY2Ug VmVyc2lvbiAxMC4KKy0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54 LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBjbToKKy0gICAgICAgICAgICAgICAgICAgIGNh bGxfaW5mZXJlbmNlKCkKKy0gICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9u CistICAgICAgICAgICAgICAgIGFzc2VydCAiVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCIgaW4gc3Ry KGV4Y2VwdGlvbikKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlVwc2FtcGxlIikpCistICAgIGRlZiB0ZXN0X3Vwc2FtcGxlX3Jhd19kYXRhKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJzaW9uID09IDc6CistICAgICAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgxLCAzLCA0LCA1KSldLAorLSAgICAgICAgICAgICAgICBbbWFrZV9u b2RlKCJVcHNhbXBsZSIsIFsieCJdLCBbInkiXSwgc2NhbGVzPVsyLjAsIDEuMSwgMi4zLCAxLjld KV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAo MiwgMywgOSwgOSkpXSwKKy0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgICAgICkKKy0gICAg ICAgIGVsc2U6CistICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQz MiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29y UHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAg ICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIsIFsieCIsICJzY2FsZXMiXSwgWyJ5Il0pXSwKKy0gICAg ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJzY2Fs ZXMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAg ICAgICAgICAgICAgICAgICAgICg0LCksCistICAgICAgICAgICAgICAgICAgICAgICAgdmFscz1u cC5hcnJheShbMS4wLCAxLjEsIDEuMywgMS45XSwgZHR5cGU9IjxmNCIpLnRvYnl0ZXMoKSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKKy0gICAgICAgICAgICAgICAgICAgICkK Ky0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApICAjIEZlZWQgcmF3IGJ5dGVzIChm b3JjZSBsaXR0bGUgZW5kaWFuIG9yZGVyaW5nIGxpa2Ugb25ueCBzdGFuZGFyZCkgZm9yIHRlc3Qg cHVycG9zZQorLQorLSAgICAgICAgICAgIGRlZiBjYWxsX2luZmVyZW5jZSgpOgorLSAgICAgICAg ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgICAgICAgICApCistCistICAgICAgICAgICAgaWYgdmVyc2lvbiA9PSA5OgorLSAg ICAgICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgpCistICAgICAgICAgICAgZWxzZToKKy0gICAg ICAgICAgICAgICAgIyBVcHNhbXBsZSBpcyBkZXByZWNhdGVkIHNpbmNlIFZlcnNpb24gMTAuCist ICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlk YXRpb25FcnJvcikgYXMgY206CistICAgICAgICAgICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgp CistICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgorLSAgICAgICAgICAg ICAgICBhc3NlcnQgIlVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQiIGluIHN0cihleGNlcHRpb24pCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkK Ky0gICAgZGVmIHRlc3RfZXhwYW5kKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclBy b3RvLklOVDMyLCAoMywgMSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0p XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5z b3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgyLCAxLCA2KSldLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u SU5UMzIsICgyLCAzLCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4cGFuZCIpKQorLSAgICBk ZWYgdGVzdF9leHBhbmRfc2NhbGFyX2lucHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLklOVDMyLCAoKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSld LAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInki XSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3Rl bnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDQsIDgpKV0sCistICAgICAg ICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5J TlQzMiwgKDQsIDgpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCistICAgIGRlZiB0 ZXN0X2V4cGFuZF9yYXdfZGF0YShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90 by5JTlQzMiwgKDMsIDEpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCist ICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0s CistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICJzaGFwZSIsCistICAg ICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKKy0gICAgICAgICAgICAgICAgICAg ICgyLCksCistICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFszLCA0XSwgZHR5cGU9 IjxpOCIpLnRvYnl0ZXMoKSwKKy0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAg ICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkgICMgRmVlZCByYXcgYnl0 ZXMgKGZvcmNlIGxpdHRsZSBlbmRpYW4gb3JkZXJpbmcgbGlrZSBvbm54IHN0YW5kYXJkKSBmb3Ig dGVzdCBwdXJwb3NlCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQzMiwgKDMsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCist ICAgIGRlZiB0ZXN0X2V4cGFuZF9keW5hbWljX3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDIsIE5vbmUpKSwK Ky0gICAgICAgICAgICAgICAgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKKy0g ICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJz aGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxp emVyPVtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uSU5UMzIsIChOb25lLCAyLCBOb25lKSldLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK Ky0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkV4cGFuZCIpKQorLSAgICBkZWYgdGVzdF9leHBhbmRfc3ltYm9saWNfc2hhcGUoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMy LCAoMSwgMiwgTm9uZSkpLAorLSAgICAgICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgidW5rX18wIiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtl X25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtdLAorLSAgICAgICAgKQorLSAgICAgICAgIyBp ZiBnaXZpbmcgYSBzeW1ib2xpYyBzaGFwZSwgRXhwYW5kIHNob3VsZCBub3QgaW5mZXIgYW55IHNo YXBlIG9yIHJhbmsgaW5mZXJlbmNlCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgTm9uZSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6 ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgorLSAgICAgICAgaWYgdmVyc2lvbiA9PSAxMDoKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAg ICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAg IF0sCistICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJzY2FsZXMi XSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgIGluaXRp YWxpemVyPVsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5z b3JQcm90by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4xLCAxLjMsIDEuOSkpCistICAgICAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAg ICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAgICAgKQorLSAgICAgICAgZWxpZiB2ZXJzaW9uID09 IDExOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgy LCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZM T0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8u RkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21h a2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0p XSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsK Ky0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklO VDY0LCAoNCwpLCAoMywgNSwgNiwgNykpCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAg ICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgzLCA1LCA2LCA3KSldLAorLSAgICAgICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAg ICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAgICAgICAg ICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCkpLAorLSAgICAgICAgICAgICAgICBd LAorLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgIiIs ICJzaXplcyJdLCBbInkiXSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNpemVz IiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCksICgzLCA1LCA2LCA3KSkKKy0gICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUsIDYsIDcpKV0sCistICAg ICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSTVNOb3JtYWxpemF0aW9uIikpCistICAgIGRlZiB0ZXN0 X3Jtc19ub3JtYWxpemF0aW9uKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAg ICAoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJOIiwgIkMiLCAiSCIsICJXIikpLAorLSAgICAg ICAgICAgICAgICAoInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiSCIsICJXIikpLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUk1TTm9ybWFsaXphdGlvbiIs IFsiWCIsICJzY2FsZSJdLCBbInkiXSwgYXhpcz0yKV0sCistICAgICAgICAgICAgW10sCistICAg ICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKCJOIiwgIkMiLCAiSCIsICJXIikpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNp emUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhlc18yXzMoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMg ZnJvbSBWZXJzaW9uIDE4IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAo MiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FU LCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAo MiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIs IFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sIFsieSJdLCBheGVzPSgyLCAzKSldLAorLSAgICAg ICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDcpKV0sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQs IDYsIDcpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jl c2l6ZV9zaXplX2F4ZXNfM18yKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBz ZWxmLnNraXBJZih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCistICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAg ICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAg ICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgIiIsICJzaXpl cyJdLCBbInkiXSwgYXhlcz0oMywgMikpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAg ICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCksICg2LCA3KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA3LCA2KSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9ub3RfbGFyZ2VyKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZigKKy0gICAgICAg ICAgICB2ZXJzaW9uIDwgMTgsCistICAgICAgICAgICAgImtlZXBfYXNwZWN0X3JhdGlvX3BvbGlj eSBpcyBmcm9tIFZlcnNpb24gMTgiLAorLSAgICAgICAgKQorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29y UHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiUmVzaXplIiwKKy0g ICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCistICAgICAgICAg ICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlv X3BvbGljeT0ibm90X2xhcmdlciIsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNv cigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKV0sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQz MiwgKDQsIDYpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0 X3Jlc2l6ZV9zaXplX2F4ZXNfMl8zX25vdF9sYXJnZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAgICAgICAgIHZlcnNpb24gPCAxOCwKKy0g ICAgICAgICAgICAiYXhlcyAmIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeSBhcmUgZnJvbSBWZXJz aW9uIDE4IiwKKy0gICAgICAgICkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMy LCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZM T0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6ZSIsCistICAgICAgICAg ICAgICAgICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAorLSAgICAgICAgICAgICAgICAg ICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBheGVzPSgyLCAzKSwKKy0gICAgICAgICAg ICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeT0ibm90X2xhcmdlciIsCistICAgICAg ICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg ICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsKSwgKDYsIDYpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDQsIDYpKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX25vdF9zbWFsbGVy KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZigKKy0gICAg ICAgICAgICB2ZXJzaW9uIDwgMTgsCistICAgICAgICAgICAgImtlZXBfYXNwZWN0X3JhdGlvX3Bv bGljeSBpcyBmcm9tIFZlcnNpb24gMTgiLAorLSAgICAgICAgKQorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVu c29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiUmVzaXplIiwK Ky0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCistICAgICAg ICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3Jh dGlvX3BvbGljeT0ibm90X3NtYWxsZXIiLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90 ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSldLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u SU5UMzIsICg2LCAxMCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVm IHRlc3RfcmVzaXplX3NpemVfYXhlc18yXzNfbm90X3NtYWxsZXIoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAgICAgICAgIHZlcnNpb24gPCAx OCwKKy0gICAgICAgICAgICAiYXhlcyAmIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeSBhcmUgZnJv bSBWZXJzaW9uIDE4IiwKKy0gICAgICAgICkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3Rv LklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclBy b3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6ZSIsCistICAg ICAgICAgICAgICAgICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAorLSAgICAgICAgICAg ICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBheGVzPSgyLCAzKSwKKy0gICAg ICAgICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeT0ibm90X3NtYWxsZXIiLAor LSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0g ICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8u SU5UNjQsICgyLCksICg2LCA2KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA2LCAxMCkpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwg MTEsICJyb2kgaW5wdXQgaXMgZnJvbSBWZXJzaW9uIDExIikKKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIs IFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb bWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpLCAoMS4wLCAx LjEsIDEuMywgMS45KSkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5 KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05O WF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVf c2NhbGVfYXhlc18yXzMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYu c2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBWZXJzaW9uIDE4IikKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAg ICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAg KCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyJdLCBb InkiXSwgYXhlcz0oMiwgMykpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0 aWFsaXplcj1bbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpLCAo MS4zLCAxLjkpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9heGVzXzNfMihzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE4 LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJv dG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29y UHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25v ZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0sIFsieSJdLCBheGVzPSgzLCAyKSld LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNv cigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCksICgxLjksIDEuMykpXSwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LklOVDMyLCAoMiwgNCwgMywgOSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0g ICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlX3Jhd19kYXRhKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTEsICJyb2kgaW5wdXQgaXMgZnJv bSBWZXJzaW9uIDExIikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwg MywgNCwgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAo OCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQs KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBb IngiLCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAg ICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAg ICAgICAgICAgICAgICAgICAic2NhbGVzIiwKKy0gICAgICAgICAgICAgICAgICAgIFRlbnNvclBy b3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgKDQsKSwKKy0gICAgICAgICAgICAgICAg ICAgIHZhbHM9bnAuYXJyYXkoWzIuMCwgMS4xLCAyLjMsIDEuOV0sIGR0eXBlPSI8ZjQiKS50b2J5 dGVzKCksCistICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKKy0gICAgICAgICAgICAgICAg KQorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDMsIDksIDkpKV0sCistICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9hbmRfc2l6 ZV9idXRfb25lX2lzX2VtcHR5KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBz ZWxmLnNraXBJZih2ZXJzaW9uIDwgMTEsICJyb2kgaW5wdXQgaXMgZnJvbSBWZXJzaW9uIDExIikK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMywgNCwgNSkpLAorLSAg ICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAg ICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAg ICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDAsKSksCistICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxl cyIsICJzaXplcyJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGlu aXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAg ICAgICAgICAic2NhbGVzIiwKKy0gICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FU LAorLSAgICAgICAgICAgICAgICAgICAgKDQsKSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHM9 bnAuYXJyYXkoWzIuMCwgMS4xLCAyLjMsIDEuOV0sIGR0eXBlPSI8ZjQiKS50b2J5dGVzKCksCist ICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAic2l6ZXMiLAor LSAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCistICAgICAgICAgICAgICAg ICAgICAoMCwpLAorLSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShbXSwgZHR5cGU9 IjxpOCIpLnRvYnl0ZXMoKSwKKy0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAg ICAgICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDMsIDksIDkp KV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9v cHNldDExX3NjYWxlc19pc19lbXB0eShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgc2VsZi5za2lwSWYodmVyc2lvbiAhPSAxMSwgIlRoaXMgdGVzdCBvbmx5IHdvcmtzIGZvciBW ZXJzaW9uIDExIikKKy0gICAgICAgICMgInNjYWxlcyIgaW5wdXQgaW4gUmVzaXplIGluIG9wc2V0 MTEgaXMgbm90IG9wdGlvbmFsLiBJdCBtdXN0IGJlIGFuIGVtcHR5IHRlbnNvcgorLSAgICAgICAg IyBpZiBzaXplcyBpcyBuZWVkZWQuIFNoYXBlIGluZmVyZW5jZSBmb3IgUmVzaXplIHNoYWxsIGhh bmRsZSB0aGlzIGNhc2UuCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEs IDMsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwg KDgsKSksCistICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgw LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCkp LAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4 IiwgInJvaSIsICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwK Ky0gICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y KAorLSAgICAgICAgICAgICAgICAgICAgInNpemVzIiwKKy0gICAgICAgICAgICAgICAgICAgIFRl bnNvclByb3RvLklOVDY0LAorLSAgICAgICAgICAgICAgICAgICAgKDQsKSwKKy0gICAgICAgICAg ICAgICAgICAgIHZhbHM9bnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDYs IDgsIDEwXSwgZHR5cGU9IjxpOCIKKy0gICAgICAgICAgICAgICAgICAgICkudG9ieXRlcygpLCAg IyBkb3VibGUgaW4gYWxsIGRpbWVuc2lvbnMKKy0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVl LAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwg KDIsIDYsIDgsIDEwKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoIiIsIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCistICAgIGRlZiB0ZXN0X3NoYXBl KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykp XSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJT aGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9zdGFydF8xKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5k IGFyZSBmcm9tIFZlcnNpb24gMTUiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCist ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIHN0YXJ0PTEpXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGVfZW5kXzEoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwgInN0YXJ0IGFuZCBl bmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSwgZW5kPTEpXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGVfbmVnYXRpdmVfc3RhcnQoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwgInN0 YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCistICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwg NCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSwg c3RhcnQ9LTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwpKV0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGVfY2xpcDEoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwg InN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAo MiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInki XSwgc3RhcnQ9LTUpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0sCist ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGVfY2xpcDIoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAx NSwgInN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBb InkiXSwgZW5kPTEwKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIlNpemUiKSkKKy0gICAgZGVmIHRlc3Rfc2l6ZShzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sIFttYWtlX25v ZGUoIlNpemUiLCBbIngiXSwgWyJ5Il0pXSwgW10KKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIkdhdGhlciIpKQorLSAgICBkZWYgdGVzdF9nYXRoZXIoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAzKSksICgiaSIsIFRlbnNvclBy b3RvLklOVDY0LCAoMiwpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiR2F0aGVyIiwgWyJ4 IiwgImkiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRoZXIiKSkKKy0gICAgZGVmIHRlc3RfZ2F0aGVyX2F4 aXMxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgMywg NSkpLCAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKV0sCistICAgICAgICAgICAgW21h a2Vfbm9kZSgiR2F0aGVyIiwgWyJ4IiwgImkiXSwgWyJ5Il0sIGF4aXM9MSldLAorLSAgICAgICAg ICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAxLCAyLCA1KSldLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0g ICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IkdhdGhlciIpKQorLSAgICBkZWYgdGVzdF9nYXRoZXJfaW50b19zY2FsYXIoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCkpLCAoImkiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXIiLCBbIngiLCAi aSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiR2F0aGVyRWxlbWVudHMiKSkKKy0gICAgZGVmIHRlc3RfZ2F0aGVyX2Vs ZW1lbnRzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwg MikpLCAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDIpKV0sCistICAgICAgICAgICAgW21h a2Vfbm9kZSgiR2F0aGVyRWxlbWVudHMiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhpcz0xKV0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiR2F0aGVyRWxlbWVudHMiKSkKKy0gICAgZGVmIHRlc3RfZ2F0aGVyX2VsZW1lbnRzX2F4aXMw KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpLCAo ImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9k ZSgiR2F0aGVyRWxlbWVudHMiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhpcz0wKV0sCistICAgICAg ICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2Nh dHRlciIpKQorLSAgICBkZWYgdGVzdF9zY2F0dGVyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 CistICAgICAgICBpZiB2ZXJzaW9uID49IDExOgorLSAgICAgICAgICAgICMgU2NhdHRlciBpcyBk ZXByZWNhdGVkIGluIGRvbWFpbl92ZXJzaW9uIG9mIDExLgorLSAgICAgICAgICAgIHdpdGggc2Vs Zi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206CistICAg ICAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRlcih2ZXJzaW9uKQorLSAgICAgICAgICAgIGV4 Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgorLSAgICAgICAgICAgIGFzc2VydCAiU2NhdHRlciBpcyBk ZXByZWNhdGVkIiBpbiBzdHIoZXhjZXB0aW9uKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAg ICBzZWxmLl90ZXN0X3NjYXR0ZXIodmVyc2lvbikKKy0KKy0gICAgZGVmIF90ZXN0X3NjYXR0ZXIo c2VsZiwgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZM T0FULCAoMywgMykpLAorLSAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsIDMpKSwKKy0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAz KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwg WyJ4IiwgImkiLCAidSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgzLCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXIiKSkKKy0gICAgZGVmIHRlc3Rf c2NhdHRlcl9heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgaWYgdmVy c2lvbiA+PSAxMToKKy0gICAgICAgICAgICAjIFNjYXR0ZXIgaXMgZGVwcmVjYXRlZCBpbiBkb21h aW5fdmVyc2lvbiBvZiAxMS4KKy0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9u bnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgorLSAgICAgICAgICAgICAgICBzZWxm Ll90ZXN0X3NjYXR0ZXJfYXhpczEodmVyc2lvbikKKy0gICAgICAgICAgICBleGNlcHRpb24gPSBj bS5leGNlcHRpb24KKy0gICAgICAgICAgICBhc3NlcnQgIlNjYXR0ZXIgaXMgZGVwcmVjYXRlZCIg aW4gc3RyKGV4Y2VwdGlvbikKKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgc2VsZi5fdGVz dF9zY2F0dGVyX2F4aXMxKHZlcnNpb24pCistCistICAgIGRlZiBfdGVzdF9zY2F0dGVyX2F4aXMx KHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKDEsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgxLCAyKSksCistICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwg MikpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlciIs IFsieCIsICJpIiwgInUiXSwgWyJ5Il0sIGF4aXM9MSldLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxLCA1KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXJFbGVtZW50cyIp KQorLSAgICBkZWYgdGVzdF9zY2F0dGVyX2VsZW1lbnRzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKKy0gICAg ICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSksCistICAgICAgICAg ICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpLAorLSAgICAgICAgICAgIF0s CistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlckVsZW1lbnRzIiwgWyJ4IiwgImkiLCAi dSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXJFbGVtZW50cyIpKQorLSAgICBkZWYgdGVzdF9zY2F0 dGVyX2VsZW1lbnRzX2F4aXMxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAg ICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJp IiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCAyKSksCistICAgICAgICAgICAgICAgICgidSIsIFRl bnNvclByb3RvLkZMT0FULCAoMSwgMikpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg W21ha2Vfbm9kZSgiU2NhdHRlckVsZW1lbnRzIiwgWyJ4IiwgImkiLCAidSJdLCBbInkiXSwgYXhp cz0xKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKV0sCisrICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgZXhw ZWN0ZWRfb3V0X3NoYXBlKV0sCisgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorICAgICAgICAgKQorIAorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlck5EIikpCistICAg IGRlZiB0ZXN0X3NjYXR0ZXJuZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorKyAgICBkZWYg X3Rlc3Rfc2NhdHRlcihzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICg0LCA1LCA2KSksCistICAgICAgICAgICAgICAgICgiaW5kaWNl cyIsIFRlbnNvclByb3RvLklOVDY0LCAoMywgMywgMikpLAorLSAgICAgICAgICAgICAgICAoInVw ZGF0ZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMsIDYpKSwKKysgICAgICAgICAgICAgICAg KCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSksCisrICAgICAgICAgICAgICAgICgiaSIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpLAorKyAgICAgICAgICAgICAgICAoInUiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDMpKSwKKyAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtt YWtlX25vZGUoIlNjYXR0ZXJORCIsIFsieCIsICJpbmRpY2VzIiwgInVwZGF0ZXMiXSwgWyJ5Il0p XSwKKysgICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4IiwgImkiLCAidSJdLCBb InkiXSldLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCA1LCA2KSldLAorKyAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgzLCAzKSldLAorICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXJORCIpKQorLSAgICBkZWYgdGVz dF9zY2F0dGVybmRfbm9zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg IyBUaGUgc2hhcGUgb2YgJ3hfcmVzaGFwZWQnIGNhbm5vdCBiZSBpbmZlcnJlZCwgc2luY2UgaXQg aXMgdGhlIG91dHB1dCBvZiBhIGR5bmFtaWMgcmVzaGFwZS4KKy0gICAgICAgICMgVGh1cyB0aGUg c2hhcGUgb2YgJ3knIGlzIGFsc28gTm9uZS4KKysgICAgZGVmIF90ZXN0X3NjYXR0ZXJfYXhpczEo c2VsZiwgdmVyc2lvbikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKyAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZM T0FULCAoNCwgNSwgNikpLAorLSAgICAgICAgICAgICAgICAoImluZGljZXMiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKDMsIDMsIDIpKSwKKy0gICAgICAgICAgICAgICAgKCJ1cGRhdGVzIiwgVGVuc29y UHJvdG8uRkxPQVQsICgzLCAzLCA2KSksCistICAgICAgICAgICAgICAgICgic2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCJNIiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsi eF9yZXNoYXBlZCJdKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJTY2F0dGVyTkQiLCBb InhfcmVzaGFwZWQiLCAiaW5kaWNlcyIsICJ1cGRhdGVzIl0sIFsieSJdKSwKKysgICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSksCisrICAgICAgICAgICAgICAg ICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpLAorKyAgICAgICAgICAgICAgICAoInUi LCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKSwKKyAgICAgICAgICAgICBdLAorKyAgICAgICAg ICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdLCBheGlzPTEp XSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInhfcmVzaGFwZWQiLCBUZW5zb3JQcm90by5G TE9BVCwgTm9uZSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSksCistICAgICAgICAgICAgXSwKKysgICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkp XSwKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCisgICAgICAgICApCisgCitAQCAtMTcwOSw5NSArMzM0LDYgQEAg Y2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg MjQpXSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIlNxdWVlemUiKSkKKy0gICAgZGVmIHRlc3Rfc3F1ZWV6ZShzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgaWYgdmVyc2lvbiA9PSAxMToKKy0gICAgICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDEsIDMsIDEsIDEsIDIsIDEpKV0sCistICAgICAgICAgICAgICAgIFttYWtl X25vZGUoIlNxdWVlemUiLCAieCIsICJ5IiwgYXhlcz1bMCwgMiwgMywgNV0pXSwKKy0gICAgICAg ICAgICAgICAgW10sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyKSldLAorLSAg ICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAg ICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMywgMSwgMSwgMiwg MSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJheGVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0 LCkpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJT cXVlZXplIiwgWyJ4IiwgImF4ZXMiXSwgInkiKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcigiYXhlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpLCAoMCwgMiwgMywgNSkpCistICAg ICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyKSldLAor LSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nQ29uY2F0IikpCistICAgIGRlZiB0ZXN0 X3N0cmluZ2NvbmNhdChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4 IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpLAorLSAgICAgICAgICAgICAgICAoInki LCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCistICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdDb25jYXQiLCBbIngiLCAieSJdLCAieiIpXSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieiIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiU3RyaW5nQ29uY2F0IikpCistICAgIGRlZiB0ZXN0X3N0cmluZ2NvbmNhdF9icm9hZGNh c3Rpbmcoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNv clByb3RvLlNUUklORywgKDIsIDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgKCJ5IiwgVGVuc29y UHJvdG8uU1RSSU5HLCAoMSwgMywgMSkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg W21ha2Vfbm9kZSgiU3RyaW5nQ29uY2F0IiwgWyJ4IiwgInkiXSwgInoiKV0sCistICAgICAgICAg ICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAg ICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoi LCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAg ICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJl Z2V4RnVsbE1hdGNoIikpCistICAgIGRlZiB0ZXN0X3JlZ2V4X2Z1bGxfbWF0Y2goc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgNCwgMywgOSkpXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJSZWdleEZ1bGxNYXRjaCIsIFsieCJdLCBbInkiXSwgcGF0 dGVybj1yIl5bQS1aXVthLXpdKiQiKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5CT09MLCAo MiwgNCwgMywgOSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZWdleEZ1bGxNYXRjaCIpKQorLSAg ICBkZWYgdGVzdF9yZWdleF9mdWxsX21hdGNoX2VtcHR5X3NoYXBlKHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJSZWdleEZ1bGxNYXRjaCIsIFsieCJdLCBbInkiXSwgcGF0dGVybj1yIl5bQS1aXVthLXpd KiQiKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5CT09MLCAoKSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3Rfc3F1ZWV6ZV9ub19heGVzX29wc2V0MTEo c2VsZikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAg ICAgICAgICBbCitAQCAtNTYzMiwyMyArNDE2OCw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5j ZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxp bnRlZ2VyX3Rlc3QoKDUsIDEsIDQsIDIpLCAoMSwgMywgMiwgMykpCisgICAgICAgICBzZWxmLl9t YWtlX21hdG11bGludGVnZXJfdGVzdCgoNCwgMiksICgzLCAyLCAzKSkKKyAKKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgW29ubnguVGVuc29yUHJvdG8uRkxPQVQsIG9ubngu VGVuc29yUHJvdG8uRkxPQVQxNiwgb25ueC5UZW5zb3JQcm90by5CRkxPQVQxNl0KKy0gICAgKQor LSAgICBkZWYgdGVzdF9xdWFudGl6ZWxpbmVhcihzZWxmLCBlbGVtX3R5cGUpIC0+IE5vbmU6Cist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICAoIngiLCBlbGVtX3R5cGUsICgzMCwgNCwgNSkpLAorLSAgICAgICAgICAgICAg ICAoInlfc2NhbGUiLCBlbGVtX3R5cGUsICgpKSwKKy0gICAgICAgICAgICAgICAgKCJ5X3plcm9f cG9pbnQiLCBUZW5zb3JQcm90by5VSU5UOCwgKCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgW21ha2Vfbm9kZSgiUXVhbnRpemVMaW5lYXIiLCBbIngiLCAieV9zY2FsZSIsICJ5X3pl cm9fcG9pbnQiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDMwLCA0LCA1KSldCistICAg ICAgICApCistCisgICAgIGRlZiB0ZXN0X3F1YW50aXplbGluZWFyX2RlZmF1bHRfenAoc2VsZikg LT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAgICAgICAg ICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzMCwgNCwgNSkpLCAoInlfc2NhbGUiLCBUZW5z b3JQcm90by5GTE9BVCwgKCkpXSwKK0BAIC01NzU0LDIzICs0MjczLDYgQEAgY2xhc3MgVGVzdFNo YXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgZ3Jh cGgsCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAg IFtvbm54LlRlbnNvclByb3RvLkZMT0FULCBvbm54LlRlbnNvclByb3RvLkZMT0FUMTYsIG9ubngu VGVuc29yUHJvdG8uQkZMT0FUMTZdCistICAgICkKKy0gICAgZGVmIHRlc3RfZGVxdWFudGl6ZWxp bmVhcihzZWxmLCBlbGVtX3R5cGUpIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5VSU5UOCwgKDMwLCA0LCA1KSksCistICAgICAgICAgICAgICAgICgieF9zY2FsZSIsIGVs ZW1fdHlwZSwgKCkpLAorLSAgICAgICAgICAgICAgICAoInhfemVyb19wb2ludCIsIFRlbnNvclBy b3RvLlVJTlQ4LCAoKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJEZXF1YW50aXplTGluZWFyIiwgWyJ4IiwgInhfc2NhbGUiLCAieF96ZXJvX3BvaW50Il0sIFsi eSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgZWxlbV90eXBlLCAoMzAsIDQsIDUpKV0KKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRl c3RfZHluYW1pY3F1YW50aXplbGluZWFyKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMzAsIDQsIDUpKV0sCitAQCAtNjAwNSwzMTkgKzQ1MDcsNjEgQEAgY2xhc3MgVGVzdFNoYXBl SW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgW21ha2Vf bm9kZSgiUm9pQWxpZ24iLCBbIngiLCAicm9pcyIsICJiYXRjaF9pbmRpY2VzIl0sIFsieSJdKV0s CisgICAgICAgICAgICAgW10sCisgICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgxNSwgIkMiLCAxLCAxKSldCistICAgICAgICApCistCistICAg IGRlZiB0ZXN0X3JvdGFyeWVtYmVkZGluZ180ZChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg KCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJudW1faGVhZHMiLCAic2VxX2xlbiIsICJo ZWFkX3NpemUiKSksCistICAgICAgICAgICAgICAgICgiY29zX2NhY2hlIiwgVGVuc29yUHJvdG8u RkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAorLSAgICAgICAgICAg ICAgICAoInNpbl9jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhl YWRfc2l6ZV9kaXZfMiIpKSwKKy0gICAgICAgICAgICAgICAgKCJwb3NpdGlvbl9pZHMiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCJCIiwgInNlcV9sZW4iKSksCistICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAg ICAgICJSb3RhcnlFbWJlZGRpbmciLAorLSAgICAgICAgICAgICAgICAgICAgWyJYIiwgImNvc19j YWNoZSIsICJzaW5fY2FjaGUiLCAicG9zaXRpb25faWRzIl0sCistICAgICAgICAgICAgICAgICAg ICBbIlkiXSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAg ICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAg ICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICAgICAgICAgIlkiLCBUZW5zb3JQcm90by5G TE9BVCwgKCJCIiwgIm51bV9oZWFkcyIsICJzZXFfbGVuIiwgImhlYWRfc2l6ZSIpCistICAgICAg ICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICBkZWYgdGVz dF9yb3RhcnllbWJlZGRpbmdfM2Qoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgiWCIsIFRl bnNvclByb3RvLkZMT0FULCAoIkIiLCAic2VxX2xlbiIsICJoaWRkZW5fc2l6ZSIpKSwKKy0gICAg ICAgICAgICAgICAgKCJjb3NfY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xl biIsICJoZWFkX3NpemVfZGl2XzIiKSksCistICAgICAgICAgICAgICAgICgic2luX2NhY2hlIiwg VGVuc29yUHJvdG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAor LSAgICAgICAgICAgICAgICAoInBvc2l0aW9uX2lkcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIkIi LCAic2VxX2xlbiIpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIlJvdGFyeUVtYmVkZGlu ZyIsCistICAgICAgICAgICAgICAgICAgICBbIlgiLCAiY29zX2NhY2hlIiwgInNpbl9jYWNoZSIs ICJwb3NpdGlvbl9pZHMiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAg ICAgICAgICAgICAgbnVtX2hlYWRzPTQsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAgICAgICAgICAgICJZ IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJzZXFfbGVuIiwgImhpZGRlbl9zaXplIikKKy0g ICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkxhYmVsRW5j b2RlciIpIGlmIE9OTlhfTUwgZWxzZSBbXSwgc2tpcF9vbl9lbXB0eT1UcnVlCistICAgICkKKy0g ICAgZGVmIHRlc3RfbGFiZWxfZW5jb2Rlcl9zdHJpbmdfaW50NjQoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAgICAgICAgIHZlcnNpb24gPCAy LCAia2V5c18qIGF0dHJpYnV0ZXMgd2VyZSBpbnRyb2R1Y2VkIGluIGFpLm9ubngubWwgb3BzZXQg MiIKKy0gICAgICAgICkKKy0gICAgICAgIHN0cmluZ19saXN0ID0gWyJBIiwgIm0iLCAieSJdCist ICAgICAgICBmbG9hdF9saXN0ID0gWzk0LjE3LCAzNi4wMCwgLTk5LjBdCistICAgICAgICBpbnQ2 NF9saXN0ID0gWzEyLCAyOCwgODZdCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKDYsIDEpKV0sCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAg ICAgICAiTGFiZWxFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAg ICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9N TF9ET01BSU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX3N0cmluZ3M9c3RyaW5nX2xpc3Qs CistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfaW50NjRzPWludDY0X2xpc3QsCistICAgICAg ICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg KQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U NjQsICg2LCAxKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAg ICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAg ICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMpKV0sCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiTGFiZWxF bmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAgICAgICAg ICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCist ICAgICAgICAgICAgICAgICAgICBrZXlzX2ludDY0cz1pbnQ2NF9saXN0LAorLSAgICAgICAgICAg ICAgICAgICAgdmFsdWVzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCistICAgICAgICAgICAgICAgICkK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMykp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9v cHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0K Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgyLCkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAg ICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0g ICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAg ICAgICAgIGtleXNfZmxvYXRzPWZsb2F0X2xpc3QsCistICAgICAgICAgICAgICAgICAgICB2YWx1 ZXNfaW50NjRzPWludDY0X2xpc3QsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9N QUlOLCB2ZXJzaW9uKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCAxMSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UNjQs ICg4LCkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0g ICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAg WyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAg IGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfaW50NjRz PWludDY0X2xpc3QsCistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfZmxvYXRzPWZsb2F0X2xp c3QsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uRkxPQVQsICg4LCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0g ICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKy0g ICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAi TGFiZWxFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAg ICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01B SU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX2Zsb2F0cz1mbG9hdF9saXN0LAorLSAgICAg ICAgICAgICAgICAgICAgdmFsdWVzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCistICAgICAgICAgICAg ICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAo KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtl X29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBtYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQor LQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5TVFJJTkcsICgxLCAyKSldLAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIs CistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJd LAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAg ICAgICAgICAgICAga2V5c19zdHJpbmdzPXN0cmluZ19saXN0LAorLSAgICAgICAgICAgICAgICAg ICAgdmFsdWVzX2Zsb2F0cz1mbG9hdF9saXN0LAorLSAgICAgICAgICAgICAgICApCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMikpXSwKKy0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9O TlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCAxMSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiTGFiZWxFbmNv ZGVyIikgaWYgT05OWF9NTCBlbHNlIFtdLCBza2lwX29uX2VtcHR5PVRydWUKKy0gICAgKQorLSAg ICBkZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3RlbnNvcl9hdHRyaWJ1dGVzKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZigKKy0gICAgICAgICAgICB2ZXJzaW9u IDwgNCwgInRlbnNvciBhdHRyaWJ1dGVzIHdlcmUgaW50cm9kdWNlZCBpbiBhaS5vbm54Lm1sIG9w c2V0IDQiCistICAgICAgICApCistICAgICAgICBrZXlfdGVuc29yID0gbWFrZV90ZW5zb3IoCist ICAgICAgICAgICAgImtleXNfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbNF0sIFsiYSIs ICJiIiwgImNjIiwgImRkZCJdCistICAgICAgICApCistICAgICAgICB2YWx1ZXNfdGVuc29yID0g bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgInZhbHVlc190ZW5zb3IiLCBUZW5zb3JQcm90by5J TlQ2NCwgWzRdLCBbMSwgMiwgMywgNF0KKysgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK KysgICAgICAgICAgICBncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDE1LCAiQyIsIDEsIDEpKV0KKyAgICAgICAgICkKKysKKysgICAgZGVmIHRl c3Rfcm90YXJ5ZW1iZWRkaW5nXzRkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywg KCJNIiwgTm9uZSwgMywgMTIpKV0sCisrICAgICAgICAgICAgWworKyAgICAgICAgICAgICAgICAo IlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgIm51bV9oZWFkcyIsICJzZXFfbGVuIiwgImhl YWRfc2l6ZSIpKSwKKysgICAgICAgICAgICAgICAgKCJjb3NfY2FjaGUiLCBUZW5zb3JQcm90by5G TE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCisrICAgICAgICAgICAg ICAgICgic2luX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVh ZF9zaXplX2Rpdl8yIikpLAorKyAgICAgICAgICAgICAgICAoInBvc2l0aW9uX2lkcyIsIFRlbnNv clByb3RvLklOVDY0LCAoIkIiLCAic2VxX2xlbiIpKSwKKysgICAgICAgICAgICBdLAorICAgICAg ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAg ICAgIkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAg ICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxf RE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c190ZW5zb3I9a2V5X3RlbnNvciwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlc190ZW5zb3I9dmFsdWVzX3RlbnNvciwKKy0gICAgICAg ICAgICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclByb3RvLklOVDY0LCBbMV0sIFswXQor LSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAgICAgICAgICAgICJSb3RhcnlFbWJl ZGRpbmciLAorKyAgICAgICAgICAgICAgICAgICAgWyJYIiwgImNvc19jYWNoZSIsICJzaW5fY2Fj aGUiLCAicG9zaXRpb25faWRzIl0sCisrICAgICAgICAgICAgICAgICAgICBbIlkiXSwKKyAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgW10sCisgICAgICAg ICApCisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5J TlQ2NCwgKCJNIiwgTm9uZSwgMywgMTIpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiks CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorKyAgICAg ICAgICAgIFsKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKysgICAg ICAgICAgICAgICAgICAgICJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJudW1faGVhZHMi LCAic2VxX2xlbiIsICJoZWFkX3NpemUiKQorKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICAgXSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAg ICAgYWxsX3ZlcnNpb25zX2ZvcigiTGFiZWxFbmNvZGVyIikgaWYgT05OWF9NTCBlbHNlIFtdLCBz a2lwX29uX2VtcHR5PVRydWUKKy0gICAgKQorLSAgICBkZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3Rl bnNvcl9hdHRyaWJ1dGVzX2ludmFsaWRfY29uZmlndXJhdGlvbnMoCistICAgICAgICBzZWxmLCBf LCB2ZXJzaW9uCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24g PCA0LCAidGVuc29yIGF0dHJpYnV0ZXMgaW50cm9kdWNlZCBpbiBhaS5vbm54Lm1sIG9wc2V0IDQi KQorLSAgICAgICAga2V5X3RlbnNvciA9IG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICJrZXlz X3RlbnNvciIsIFRlbnNvclByb3RvLlNUUklORywgWzRdLCBbImEiLCAiYiIsICJjYyIsICJkZGQi XQorLSAgICAgICAgKQorLSAgICAgICAgdmFsdWVzX3RlbnNvciA9IG1ha2VfdGVuc29yKAorLSAg ICAgICAgICAgICJ2YWx1ZXNfdGVuc29yIiwgVGVuc29yUHJvdG8uSU5UNjQsIFs0XSwgWzEsIDIs IDMsIDRdCistICAgICAgICApCistCistICAgICAgICBvcHNldF9pbXBvcnRzID0gWworLSAgICAg ICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCistICAgICAgICAg ICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAgICAgICBdCistCistICAgICAg ICAjIGRlZmF1bHRfdGVuc29yIHNob3VsZCBiZSBJTlQ2NCwgc2FtZSB0eXBlIGFzIHZhbHVlc190 ZW5zb3IKKysgICAgZGVmIHRlc3Rfcm90YXJ5ZW1iZWRkaW5nXzNkKHNlbGYpIC0+IE5vbmU6Cisg ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLlNUUklORywgKCJNIiwgTm9uZSwgMywgMTIpKV0sCisrICAgICAgICAgICAgWwor KyAgICAgICAgICAgICAgICAoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4i LCAiaGlkZGVuX3NpemUiKSksCisrICAgICAgICAgICAgICAgICgiY29zX2NhY2hlIiwgVGVuc29y UHJvdG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAorKyAgICAg ICAgICAgICAgICAoInNpbl9jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVu IiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKKysgICAgICAgICAgICAgICAgKCJwb3NpdGlvbl9pZHMi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCJCIiwgInNlcV9sZW4iKSksCisrICAgICAgICAgICAgXSwK KyAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAg ICAgICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCist ICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1P Tk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfdGVuc29yPWtleV90ZW5z b3IsCistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfdGVuc29yPXZhbHVlc190ZW5zb3IsCist ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3RlbnNvcj1tYWtlX3RlbnNvcigKKy0gICAgICAg ICAgICAgICAgICAgICAgICAiZGVmYXVsdF90ZW5zb3IiLCBUZW5zb3JQcm90by5JTlQzMiwgWzFd LCBbMF0KKy0gICAgICAgICAgICAgICAgICAgICksCisrICAgICAgICAgICAgICAgICAgICAiUm90 YXJ5RW1iZWRkaW5nIiwKKysgICAgICAgICAgICAgICAgICAgIFsiWCIsICJjb3NfY2FjaGUiLCAi c2luX2NhY2hlIiwgInBvc2l0aW9uX2lkcyJdLAorKyAgICAgICAgICAgICAgICAgICAgWyJZIl0s CisrICAgICAgICAgICAgICAgICAgICBudW1faGVhZHM9NCwKKyAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICApCistCistICAgICAg ICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5J bmZlcmVuY2VFcnJvciwKKy0gICAgICAgICAgICBzZWxmLl9pbmZlcnJlZCwKKysgICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPW9wc2V0X2ltcG9ydHMsCistICAgICAgICApCistCistICAgICAgICAjIGRl ZmF1bHRfdGVuc29yIHNob3VsZCBiZSBhIHNpbmdsZXRvbiBvZiBzaGFwZSAoMSwpCistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclBy b3RvLlNUUklORywgKCJNIiwgTm9uZSwgMywgMTIpKV0sCisgICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVy IiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJ5 Il0sCistICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAgICAg ICAgICAgICAgICAgICBrZXlzX3RlbnNvcj1rZXlfdGVuc29yLAorLSAgICAgICAgICAgICAgICAg ICAgdmFsdWVzX3N0cmluZ3M9WyJhIiwgImIiLCAiY2MiLCAiZGRkIl0sCistICAgICAgICAgICAg ICAgICAgICBkZWZhdWx0X3RlbnNvcj1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAg ICAgICAiZGVmYXVsdF90ZW5zb3IiLCBUZW5zb3JQcm90by5TVFJJTkcsIFsxLCAyXSwgWyJhIiwg ImIiXQorLSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygKKysgICAgICAgICAgICAgICAgICAgICJZIiwgVGVuc29yUHJvdG8uRkxP QVQsICgiQiIsICJzZXFfbGVuIiwgImhpZGRlbl9zaXplIikKKyAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistCistICAgICAg ICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5J bmZlcmVuY2VFcnJvciwKKy0gICAgICAgICAgICBzZWxmLl9pbmZlcnJlZCwKKy0gICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPW9wc2V0X2ltcG9ydHMsCisgICAg ICAgICApCisgCisgICAgIGRlZiBtYWtlX3NwYXJzZSgKK0BAIC04NzQ2LDEwNSArNjk5MCw2IEBA IGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAg ICAgICAgKQorICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKGdyYXBoLCBbb3V0cHV0X3Rl bnNvcl92YWxfaW5mb10pCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJTdHJpbmdTcGxpdCIpKQorLSAgICBkZWYgdGVzdF9zdHJpbmdfc3BsaXRfYmFzaWMo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICJzdWJzdHJpbmdzIiwKKy0gICAgICAgICAg ICBUZW5zb3JQcm90by5TVFJJTkcsCistICAgICAgICAgICAgKDIsIE5vbmUpLAorLSAgICAgICAg KQorLSAgICAgICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCkpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJ TkcsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3Ry aW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdKV0sCistICAgICAgICAg ICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmlu Z3MsIGxlbmd0aF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0gICAgZGVm IHRlc3Rfc3RyaW5nX3NwbGl0X3N5bWJvbGljKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAg ICAic3Vic3RyaW5ncyIsCistICAgICAgICAgICAgVGVuc29yUHJvdG8uU1RSSU5HLAorLSAgICAg ICAgICAgICgiQSIsIE5vbmUpLAorLSAgICAgICAgKQorLSAgICAgICAgbGVuZ3RoID0gbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiQSIsKSkKKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKCJBIiwpKSwKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vi c3RyaW5ncyIsICJsZW5ndGgiXSldLAorLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCistICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF9uZXN0 ZWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICJzdWJzdHJpbmdzIiwgVGVuc29yUHJv dG8uU1RSSU5HLCAoMiwgNCwgMywgTm9uZSkKKy0gICAgICAgICkKKy0gICAgICAgIGxlbmd0aCA9 IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwg NCwgMykpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCA0LCAzKSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIs IFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0sIG1heHNwbGl0PTIpXSwKKy0gICAgICAg ICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbc3Vic3Ry aW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQorLSAgICBk ZWYgdGVzdF9zdHJpbmdfc3BsaXRfemVyb19kaW1lbnNpb25hbF9pbnB1dChzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInN1YnN0cmluZ3MiLCBUZW5zb3JQcm90by5TVFJJTkcsIChOb25lLCkpCistICAgICAgICBs ZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCkpCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgpKSwKKy0g ICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ1NwbGl0IiwgWyJ4 Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSwgbWF4c3BsaXQ9MildLAorLSAgICAgICAgICAg IFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtzdWJzdHJpbmdz LCBsZW5ndGhdLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCistICAgIGRlZiB0 ZXN0X3N0cmluZ19zcGxpdF9lbXB0eV9pbnB1dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgor LSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAg ICAgInN1YnN0cmluZ3MiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIDMsIDAsIE5vbmUpCist ICAgICAgICApCistICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5n dGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJNIiwgMywgMCkpCistCistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngi LCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIDMsIDApKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIs ICJsZW5ndGgiXSwgbWF4c3BsaXQ9MildLAorLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5n dGhdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3Rfb3B0aW9uYWxfdGVuc29yX2dl dF9lbGVtZW50KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICB0ZW5zb3JfdHlwZV9wcm90byA9IGhl bHBlci5tYWtlX3RlbnNvcl90eXBlX3Byb3RvKAorICAgICAgICAgICAgIGVsZW1fdHlwZT1UZW5z b3JQcm90by5ET1VCTEUsIHNoYXBlPVsyLCAxLCA0XQorQEAgLTk0NTIsNDI2ICs3NTk3LDc2IEBA IGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAg ICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAor LSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u RkxPQVQsICgxMCwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAg WyJzaGFwZSJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCistICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFubldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0s IHBlcmlvZGljPTApLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAg ICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCistICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICApCistCistICAgIGRlZiB0ZXN0X2JsYWNrbWFud2luZG93KHNl bGYpOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAg ICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAg ICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFr ZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCistICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQmxhY2ttYW5XaW5kb3ci LCBbInNoYXBlIl0sIFsieSJdKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAor LSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAg IGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAg ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorLSAg ICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgpLCAoMTAsKSksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgiQmxhY2ttYW5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0w KSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKy0gICAgICAgICAgICBdLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCist ICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBuYW1lLAorLSAgICAgICAgICAgICAgICB2 ZXJzaW9uLAorLSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKKy0gICAgICAgICAgICAgICAg aW5wdXRfc2hhcGUsCistICAgICAgICAgICAgICAgIGF4aXMsCistICAgICAgICAgICAgICAgIG9u ZXNpZGVkLAorLSAgICAgICAgICAgICAgICBpbnZlcnNlLAorLSAgICAgICAgICAgICAgICBleHBl Y3RlZF9zaGFwZSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgZm9yIChuYW1lLCB2ZXJz aW9uKSwgKAorLSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKKy0gICAgICAgICAgICAgICAg aW5wdXRfc2hhcGUsCistICAgICAgICAgICAgICAgIGF4aXMsCistICAgICAgICAgICAgICAgIG9u ZXNpZGVkLAorLSAgICAgICAgICAgICAgICBpbnZlcnNlLAorLSAgICAgICAgICAgICAgICBleHBl Y3RlZF9zaGFwZSwKKy0gICAgICAgICAgICApIGluIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAg ICAgICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJERlQiKSwKKy0gICAgICAgICAgICAgICAgKAor LSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMSksIE5v bmUsIE5vbmUsIE5vbmUsICgyLCA1LCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxz X2F4aXNfMCIsICgzLCA1LCAxMCwgMSksIDAsIDAsIDAsICgzLCA1LCAxMCwgMikpLAorLSAgICAg ICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzEiLCAoMywgNSwgMTAsIDEpLCAxLCAwLCAwLCAo MywgNSwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18yIiwgKDMs IDUsIDEwLCAxKSwgMiwgMCwgMCwgKDMsIDUsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAg ICAoInJlYWxzX2F4aXNfbmVnIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDAsIDAsICgzLCA1LCAxMCwg MikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzBfb25lc2lkZWQiLCAoMywg NSwgMTAsIDEpLCAwLCAxLCAwLCAoMiwgNSwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAg ICgicmVhbHNfYXhpc18xX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMSwgMSwgMCwgKDMsIDMs IDEwLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMl9vbmVzaWRlZCIs ICgzLCA1LCAxMCwgMSksIDIsIDEsIDAsICgzLCA1LCA2LCAyKSksCistICAgICAgICAgICAgICAg ICAgICAoInJlYWxzX2F4aXNfbmVnX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDEsIDAs ICgzLCA1LCA2LCAyKSksCistICAgICAgICAgICAgICAgICAgICAoImNvbXBsZXhfZGVmYXVsdF9h eGlzIiwgKDIsIDUsIDIpLCBOb25lLCBOb25lLCBOb25lLCAoMiwgNSwgMikpLAorLSAgICAgICAg ICAgICAgICAgICAgKCJyZWFsX2ludmVyc2UiLCAoMiwgNSwgMSksIDEsIE5vbmUsIDEsICgyLCA1 LCAyKSksCistICAgICAgICAgICAgICAgICAgICAoImNvbXBsZXhfaW52ZXJzZSIsICgyLCA1LCAy KSwgMSwgTm9uZSwgMSwgKDIsIDUsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRf YXhpc18wIiwgKDIsIDUsIDEwLCAyKSwgMCwgMSwgMSwgKDIsIDUsIDEwLCAxKSksCistICAgICAg ICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfMSIsICgzLCAzLCAxMCwgMiksIDEsIDEsIDEsICgz LCA0LCAxMCwgMSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlzXzIiLCAoMywg NSwgNiwgMiksIDIsIDEsIDEsICgzLCA1LCAxMCwgMSkpLAorLSAgICAgICAgICAgICAgICAgICAg KCJpcmZmdF9heGlzX25lZyIsICgzLCA1LCA2LCAyKSwgLTIsIDEsIDEsICgzLCA1LCAxMCwgMSkp LAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICkKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9kZnQoCistICAgICAgICBzZWxmLAorLSAgICAgICAgXzogc3RyLAor LSAgICAgICAgdmVyc2lvbjogaW50LAorLSAgICAgICAgX3Rlc3RfYXNwZWN0OiBzdHIsCistICAg ICAgICBpbnB1dF9zaGFwZTogdHVwbGVbaW50XSwKKy0gICAgICAgIGF4aXM6IGludCB8IE5vbmUs CistICAgICAgICBvbmVzaWRlZDogaW50IHwgTm9uZSwKKy0gICAgICAgIGludmVyc2U6IGludCB8 IE5vbmUsCistICAgICAgICBleHBlY3RlZF9zaGFwZTogdHVwbGVbaW50XSwKKy0gICAgKSAtPiBO b25lOgorLSAgICAgICAgIyBCdWlsZCB0aGUgYXR0cmlidXRlcyBmb3IgZGlmZmVyZW50IG9wc2V0 IHZlcnNpb25zCistICAgICAgICBhdHRyaWJ1dGVzID0ge30KKy0gICAgICAgIGlmIG9uZXNpZGVk IGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJpYnV0ZXNbIm9uZXNpZGVkIl0gPSBvbmVz aWRlZAorLSAgICAgICAgaWYgaW52ZXJzZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICBhdHRy aWJ1dGVzWyJpbnZlcnNlIl0gPSBpbnZlcnNlCistCistICAgICAgICBpZiB2ZXJzaW9uIDwgMjA6 CistICAgICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgYXR0 cmlidXRlc1siYXhpcyJdID0gYXhpcworLSAgICAgICAgICAgIG5vZGVzID0gW21ha2Vfbm9kZSgi REZUIiwgWyJpbnB1dCIsICIiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKV0KKy0gICAgICAg ICAgICB2YWx1ZV9pbmZvcyA9IFtdCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGFzc2Vy dCB2ZXJzaW9uID49IDIwCistICAgICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKKy0gICAg ICAgICAgICAgICAgbm9kZXMgPSBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCist ICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbImF4aXMiXSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoKSwgKGF4aXMsKSksCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAg ICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0s ICoqYXR0cmlidXRlcyksCistICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICAgICAgdmFs dWVfaW5mb3MgPSBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiYXhpcyIsIFRlbnNvclByb3RvLklO VDY0LCAoKSldCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgbm9kZXMgPSBb CistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgIiJd LCBbIm91dHB1dCJdLCAqKmF0dHJpYnV0ZXMpLAorLSAgICAgICAgICAgICAgICBdCistICAgICAg ICAgICAgICAgIHZhbHVlX2luZm9zID0gW10KKy0KKy0gICAgICAgICMgQ29uc3RydWN0IHRoZSBn cmFwaAorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAg ICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAg ICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFr ZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKGlucHV0X3No YXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCistICAgICAgICAgICAgICAgICAgICAp LAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAqbm9kZXMsCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8u RkxPQVQsIGlucHV0X3NoYXBlKSwKKy0gICAgICAgICAgICAgICAgKnZhbHVlX2luZm9zLAorLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90 by5GTE9BVCwgZXhwZWN0ZWRfc2hhcGUpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBb CistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBuYW1lLAorLSAgICAgICAgICAgICAg ICB2ZXJzaW9uLAorLSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKKy0gICAgICAgICAgICAg ICAgaW5wdXRfc2hhcGUsCistICAgICAgICAgICAgICAgIGF4aXMsCistICAgICAgICAgICAgICAg IG9uZXNpZGVkLAorLSAgICAgICAgICAgICAgICBpbnZlcnNlLAorLSAgICAgICAgICAgICAgICBl eHBlY3RlZF9zaGFwZSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgZm9yIChuYW1lLCB2 ZXJzaW9uKSwgKAorLSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKKy0gICAgICAgICAgICAg ICAgaW5wdXRfc2hhcGUsCistICAgICAgICAgICAgICAgIGF4aXMsCistICAgICAgICAgICAgICAg IG9uZXNpZGVkLAorLSAgICAgICAgICAgICAgICBpbnZlcnNlLAorLSAgICAgICAgICAgICAgICBl eHBlY3RlZF9zaGFwZSwKKy0gICAgICAgICAgICApIGluIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAg ICAgICAgICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJERlQiKSwKKy0gICAgICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMSks IE5vbmUsIE5vbmUsIE5vbmUsICgyLCA0MiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJy ZWFsc19heGlzXzAiLCAoMywgNSwgMTAsIDEpLCAwLCAwLCAwLCAoNDIsIDUsIDEwLCAyKSksCist ICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMSIsICgzLCA1LCAxMCwgMSksIDEsIDAs IDAsICgzLCA0MiwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18y IiwgKDMsIDUsIDEwLCAxKSwgMiwgMCwgMCwgKDMsIDUsIDQyLCAyKSksCistICAgICAgICAgICAg ICAgICAgICAoInJlYWxzX2F4aXNfbmVnIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDAsIDAsICgzLCA1 LCA0MiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzBfb25lc2lkZWQi LCAoMywgNSwgMTAsIDEpLCAwLCAxLCAwLCAoMjIsIDUsIDEwLCAyKSksCistICAgICAgICAgICAg ICAgICAgICAoInJlYWxzX2F4aXNfMV9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDEsIDEsIDAs ICgzLCAyMiwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18yX29u ZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMiwgMSwgMCwgKDMsIDUsIDIyLCAyKSksCistICAgICAg ICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfbmVnX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwg LTIsIDEsIDAsICgzLCA1LCAyMiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJjb21wbGV4 X2RlZmF1bHRfYXhpcyIsICgyLCA1LCAyKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDQyLCAyKSks CistICAgICAgICAgICAgICAgICAgICAoInJlYWxfaW52ZXJzZSIsICgyLCA1LCAxKSwgMSwgTm9u ZSwgMSwgKDIsIDQyLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoImNvbXBsZXhfaW52ZXJz ZSIsICgyLCA1LCAyKSwgMSwgTm9uZSwgMSwgKDIsIDQyLCAyKSksCistICAgICAgICAgICAgICAg ICAgICAoImlyZmZ0X2F4aXNfMCIsICgyLCA1LCAxMCwgMiksIDAsIDEsIDEsICg0MiwgNSwgMTAs IDEpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc18xIiwgKDMsIDMsIDEwLCAy KSwgMSwgMSwgMSwgKDMsIDQyLCAxMCwgMSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJpcmZm dF9heGlzXzIiLCAoMywgNSwgNiwgMiksIDIsIDEsIDEsICgzLCA1LCA0MiwgMSkpLAorLSAgICAg ICAgICAgICAgICAgICAgKCJpcmZmdF9heGlzX25lZyIsICgzLCA1LCA2LCAyKSwgLTIsIDEsIDEs ICgzLCA1LCA0MiwgMSkpLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICkKKy0g ICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRfZGZ0X2xlbmd0aCgKKy0gICAgICAg IHNlbGYsCistICAgICAgICBfOiBzdHIsCistICAgICAgICB2ZXJzaW9uOiBpbnQsCistICAgICAg ICBfdGVzdF9hc3BlY3Q6IHN0ciwKKy0gICAgICAgIGlucHV0X3NoYXBlOiB0dXBsZVtpbnRdLAor LSAgICAgICAgYXhpczogaW50IHwgTm9uZSwKKy0gICAgICAgIG9uZXNpZGVkOiBpbnQgfCBOb25l LAorLSAgICAgICAgaW52ZXJzZTogaW50IHwgTm9uZSwKKy0gICAgICAgIGV4cGVjdGVkX3NoYXBl OiB0dXBsZVtpbnRdLAorLSAgICApIC0+IE5vbmU6CistICAgICAgICAjIEJ1aWxkIHRoZSBhdHRy aWJ1dGVzIGZvciBkaWZmZXJlbnQgb3BzZXQgdmVyc2lvbnMKKy0gICAgICAgIGF0dHJpYnV0ZXMg PSB7fQorLSAgICAgICAgaWYgb25lc2lkZWQgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgYXR0 cmlidXRlc1sib25lc2lkZWQiXSA9IG9uZXNpZGVkCistICAgICAgICBpZiBpbnZlcnNlIGlzIG5v dCBOb25lOgorLSAgICAgICAgICAgIGF0dHJpYnV0ZXNbImludmVyc2UiXSA9IGludmVyc2UKKy0K Ky0gICAgICAgIGRmdF9sZW5ndGggPSA0MgorLQorLSAgICAgICAgaWYgdmVyc2lvbiA8IDIwOgor LSAgICAgICAgICAgIGlmIGF4aXMgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgICAgIGF0dHJp YnV0ZXNbImF4aXMiXSA9IGF4aXMKKy0gICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAg ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJkZnRfbGVuZ3RoIl0s CistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKGRmdF9sZW5n dGgsKQorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgImRmdF9sZW5ndGgiXSwgWyJv dXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwKKy0gICAgICAgICAgICBdCistICAgICAgICAgICAgdmFs dWVfaW5mb3MgPSBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSldCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGFzc2VydCB2ZXJz aW9uID49IDIwCistICAgICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKKy0gICAgICAgICAg ICAgICAgbm9kZXMgPSBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAg ICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBb XSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbImF4aXMiXSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwg KGF4aXMsKSksCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAg bWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAg ICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJkZnRfbGVu Z3RoIl0sCistICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgpLCAoZGZ0X2xlbmd0aCwpCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAg ICAgICAgICAgICAgICAgICAgIkRGVCIsCistICAgICAgICAgICAgICAgICAgICAgICAgWyJpbnB1 dCIsICJkZnRfbGVuZ3RoIiwgImF4aXMiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbIm91 dHB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICoqYXR0cmlidXRlcywKKy0gICAgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICAgICAgdmFs dWVfaW5mb3MgPSBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkp LAorLSAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAg ICAgbm9kZXMgPSBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAg ICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbXSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICBbImRmdF9sZW5ndGgiXSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChkZnRfbGVuZ3RoLCkKKy0g ICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiREZU IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbImlucHV0IiwgImRmdF9sZW5ndGgiLCAiIl0s CistICAgICAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAqKmF0dHJpYnV0ZXMsCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAg ICAgICAgICBdCistICAgICAgICAgICAgICAgIHZhbHVlX2luZm9zID0gWworLSAgICAgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3Rv LklOVDY0LCAoKSkKKy0gICAgICAgICAgICAgICAgXQorKyAgICAgICAgICAgIGdyYXBoLAorKyAg ICAgICAgICAgIFsKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKysgICAgICAgICAg ICBdLAorKyAgICAgICAgKQorIAorLSAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIGdyYXBoCisgICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgW10sCisgICAgICAg ICAgICAgWworICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCisgICAgICAgICAgICAgICAgICAg ICAiQ29uc3RhbnQiLAorICAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAg ICAgICBbImlucHV0Il0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigK Ky0gICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3No YXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoaW5wdXRfc2hhcGUsIGR0eXBl PW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICksCisrICAgICAg ICAgICAgICAgICAgICBbInNoYXBlIl0sCisrICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtl X3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKKyAgICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKm5vZGVzLAorKyAgICAgICAgICAgICAgICBt YWtlX25vZGUoIkhhbm5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0wKSwKKyAg ICAgICAgICAgICBdLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorICAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQ cm90by5GTE9BVCwgaW5wdXRfc2hhcGUpLAorLSAgICAgICAgICAgICAgICAqdmFsdWVfaW5mb3Ms CistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNv clByb3RvLkZMT0FULCBleHBlY3RlZF9zaGFwZSksCisrICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKysgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAo MTAsKSksCisgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCisgICAgICAgICApCisgCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoImxh c3QiLCAzKSwKKy0gICAgICAgICAgICAoImxhc3RfbmVnYXRpdmUiLCAtMSksCistICAgICAgICAg ICAgKCJvdXRfb2ZfcmFuZ2UiLCA0KSwKKy0gICAgICAgICAgICAoIm91dF9vZl9yYW5nZV9uZWdh dGl2ZSIsIC01KSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRfaW52YWxp ZF9heGlzX29wc2V0MTcoc2VsZiwgXzogc3RyLCBheGlzOiBpbnQpIC0+IE5vbmU6CisrICAgIGRl ZiB0ZXN0X2JsYWNrbWFud2luZG93KHNlbGYpOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAorICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKyAgICAgICAg ICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAg ICAgImlucHV0IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAoMiwgNSwgNSwgMiksCistICAgICAgICAgICAgICAg ICAgICAgICAgbnAub25lcygoMiwgNSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4o KSwKKy0gICAgICAgICAgICAgICAgICAgICksCisrICAgICAgICAgICAgICAgICAgICBbInNoYXBl Il0sCisrICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKKyAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiJdLCBbIm91dHB1dCJdLCBvbmVz aWRlZD0xLCBheGlzPWF4aXMpLAorKyAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbW1pbmdX aW5kb3ciLCBbInNoYXBlIl0sIFsieSJdKSwKKyAgICAgICAgICAgICBdLAorICAgICAgICAgICAg IFtdLAorICAgICAgICAgKQorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNo YXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvcik6CistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDUsIDUsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNSwg MikpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxNyldLAorLSAgICAgICAgICAgICkK KysgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKysgICAgICAgICAgICBncmFwaCwKKysg ICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNo YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCisrICAgICAgICAg ICAgXSwKKysgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAg ICAgWworLSAgICAgICAgICAgICgibGFzdCIsIDMpLAorLSAgICAgICAgICAgICgibGFzdF9uZWdh dGl2ZSIsIC0xKSwKKy0gICAgICAgICAgICAoIm91dF9vZl9yYW5nZSIsIDQpLAorLSAgICAgICAg ICAgICgib3V0X29mX3JhbmdlX25lZ2F0aXZlIiwgLTUpLAorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X2RmdF9pbnZhbGlkX2F4aXNfb3BzZXQyMChzZWxmLCBfOiBzdHIsIGF4aXM6 IGludCkgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAg ICAgICAgICBbXSwKKyAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK KyAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCisgICAgICAgICAgICAgICAgICAgICBb XSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCist ICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAg ICAgICAgICAgICAgKDIsIDUsIDUsIDIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9u ZXMoKDIsIDUsIDUsIDIpLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCistICAgICAgICAg ICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAg ICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImF4aXMiXSwKKy0gICAgICAgICAgICAg ICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAo YXhpcywpKSwKKysgICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKKysgICAgICAgICAgICAg ICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwg KDEwLCkpLAorICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUo IkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSksCisrICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgiSGFtbWluZ1dpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0sIHBlcmlvZGlj PTApLAorICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICApCistICAg ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5j ZUVycm9yKToKKy0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNSwg NSwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiYXhp cyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDUsIDIp KSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKKy0gICAgICAgICAgICApCisr ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisrICAgICAgICAgICAgZ3JhcGgsCisrICAg ICAgICAgICAgWworKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorKyAgICAgICAgICAg IF0sCisrICAgICAgICApCisgCisgICAgIGRlZiB0ZXN0X2RmdF9yZmZ0X2ludmFsaWRfY29tcGxl eF9pbnB1dF9vcHNldDE3KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICAiIiJUZXN0IHRoYXQgUkZG VCAob25lc2lkZWQ9MSwgaW52ZXJzZT0wKSByZWplY3RzIGNvbXBsZXggaW5wdXQiIiIKK0BAIC0x MDAxMSwxMjggKzc4MDYsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5m ZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKKyAgICAgICAgICAgICApCisgCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoInJlYWwiLCAo MiwgNSwgNSwgMSkpLAorLSAgICAgICAgICAgICgiY29tcGxleCIsICgyLCA1LCA1LCAyKSksCist ICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfZGZ0X2R5bmFtaWNfYXhpc19vcHNldDIw KHNlbGYsIF86IHN0ciwgc2hhcGU6IHR1cGxlW2ludCwgLi4uXSkgLT4gTm9uZToKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJheGlzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgpKV0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAg ICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCistICAgICAgICAgICAg ICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiaW5w dXQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAg ICAgICAgICAgICAgICAgICAgIHNoYXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9u ZXMoc2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKKy0gICAgICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi REZUIiwgWyJpbnB1dCIsICIiLCAiYXhpcyJdLCBbIm91dHB1dCJdKSwKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwg c2hhcGUpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQi LCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDUsIDUsIDIpKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IDIwKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAg ICAgIFsKKy0gICAgICAgICAgICAoInJlYWwiLCAoMiwgNSwgNSwgMSkpLAorLSAgICAgICAgXQor LSAgICApCistICAgIGRlZiB0ZXN0X2RmdF9keW5hbWljX2F4aXNfb25lc2lkZWRfZGZ0X2xlbmd0 aF9vcHNldDIwKAorLSAgICAgICAgc2VsZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5d CistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0sCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAi Q29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAg ICBbImlucHV0Il0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0g ICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQiLAorLSAgICAgICAgICAgICAgICAgICAgICAg IFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoc2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIpLmZs YXR0ZW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFu dCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiZGZ0 X2xlbmd0aCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAg ICAgICAgICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIFRlbnNvclByb3RvLklOVDY0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICgpLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFs0Ml0sIGR0eXBlPW5wLmludDY0KSwKKy0g ICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJERlQiLCBbImlucHV0IiwgImRm dF9sZW5ndGgiLCAiYXhpcyJdLCBbIm91dHB1dCJdLCBvbmVzaWRlZD0xCistICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0 IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCistICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgICAgICAg ICAib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lLCAyKQorLSAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAg ICgicmVhbCIsICgyLCA1LCA1LCAxKSksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRl c3RfZGZ0X2R5bmFtaWNfYXhpc19vbmVzaWRlZF9vcHNldDIwKAorLSAgICAgICAgc2VsZiwgXzog c3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5dCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJheGlzIiwgVGVuc29yUHJv dG8uSU5UNjQsICgpKV0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAg ICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCistICAgICAgICAgICAgICAg ICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQi LAorLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAg ICAgICAgICAgICAgICAgIHNoYXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMo c2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKKy0gICAgICAgICAgICAgICAgICAg ICksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZU IiwgWyJpbnB1dCIsICIiLCAiYXhpcyJdLCBbIm91dHB1dCJdLCBvbmVzaWRlZD0xKSwKKy0gICAg ICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90 by5GTE9BVCwgc2hhcGUpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KAorLSAgICAgICAgICAgICAgICAgICAgIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoTm9u ZSwgTm9uZSwgTm9uZSwgMikKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBdLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIDIwKV0sCistICAgICAgICApCistCisgICAgIGRlZiB0ZXN0X2RmdF9vbmVzaWRlZF9kZWZh dWx0X2F4aXNfb3BzZXQxNyhzZWxmKSAtPiBOb25lOgorICAgICAgICAgIyBPcHNldCAxNyBzZXRz IGRlZmF1bHQgYXhpcyB0byBiZSAxLgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAorQEAgLTEwNTkxLDQxICs4MjY0LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RT aGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgXSwKKyAgICAgICAgICkKKyAKKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgIChbMSwg MiwgM10sIFsiMSIsICIyIl0pLAorLSAgICAgICAgICAgIChbMSwgMiwgM10sIE5vbmUpLAorLSAg ICAgICAgICAgIChOb25lLCBbIjEiLCAiMiIsICIzIl0pLAorLSAgICAgICAgICAgIChOb25lLCBO b25lKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5Y X01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKKy0g ICAgZGVmIHRlc3RfY2F0ZWdvcnlfbWFwcGVyX2ZhaWxzX2lmX2ludmFsaWRfYXR0cmlidXRlcygK Ky0gICAgICAgIHNlbGYsIGNhdHNfaW50NjRzLCBjYXRzX3N0cmluZ3MKKy0gICAgKSAtPiBOb25l OgorLSAgICAgICAgY2F0ID0gbWFrZV9ub2RlKAorLSAgICAgICAgICAgICJDYXRlZ29yeU1hcHBl ciIsCistICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAg ICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgIGNhdHNfaW50NjRzPWNhdHNf aW50NjRzLAorLSAgICAgICAgICAgIGNhdHNfc3RyaW5ncz1jYXRzX3N0cmluZ3MsCistICAgICAg ICApCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLklOVDY0LCAoMzAsIDQsIDUpKV0sCistICAgICAgICAgICAgW2NhdF0s CistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFJhaXNl cygKKy0gICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwKKy0g ICAgICAgICAgICBzZWxmLl9pbmZlcnJlZCwKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhf TUxfRE9NQUlOLCAxKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCAxMSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKyAgICAgQHVuaXR0ZXN0LnNr aXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9w ZXJhdG9ycyIpCisgICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yKHNlbGYpIC0+ IE5vbmU6CisgICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAorQEAgLTEwNjQ5LDEzMSArODI4Nyw2 IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgor ICAgICAgICAgICAgIF0sCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChbVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkRPVUJMRSwgVGVuc29yUHJvdG8uRkxP QVQxNl0pCistICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVp cmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQorLSAgICBkZWYgdGVzdF90cmVlX2Vu c2VtYmxlKHNlbGYsIGR0eXBlKSAtPiBOb25lOgorLSAgICAgICAgaW50ZXJpb3Jfbm9kZXMgPSA1 CistICAgICAgICBsZWF2ZXMgPSA5CistICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAorLSAgICAg ICAgICAgICJUcmVlRW5zZW1ibGUiLAorLSAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAg IFsieSJdLAorLSAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAg ICBuX3RhcmdldHM9NSwKKy0gICAgICAgICAgICBub2Rlc19mZWF0dXJlaWRzPVswXSAqIGludGVy aW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX3NwbGl0cz1tYWtlX3RlbnNvcigKKy0gICAg ICAgICAgICAgICAgIm5vZGVzX3NwbGl0cyIsCistICAgICAgICAgICAgICAgIGR0eXBlLAorLSAg ICAgICAgICAgICAgICAoaW50ZXJpb3Jfbm9kZXMsKSwKKy0gICAgICAgICAgICAgICAgbGlzdChy YW5nZShpbnRlcmlvcl9ub2RlcykpLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgbm9k ZXNfbW9kZXM9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICJub2Rlc19tb2RlcyIsCist ICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ4LAorLSAgICAgICAgICAgICAgICAoaW50 ZXJpb3Jfbm9kZXMsKSwKKy0gICAgICAgICAgICAgICAgWzBdICogaW50ZXJpb3Jfbm9kZXMsCist ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBub2Rlc190cnVlbm9kZWlkcz1bMF0gKiBpbnRl cmlvcl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc19mYWxzZW5vZGVpZHM9WzBdICogaW50ZXJp b3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfdHJ1ZWxlYWZzPVswXSAqIGludGVyaW9yX25v ZGVzLAorLSAgICAgICAgICAgIG5vZGVzX2ZhbHNlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMs CistICAgICAgICAgICAgbWVtYmVyc2hpcF92YWx1ZXM9bWFrZV90ZW5zb3IoCistICAgICAgICAg ICAgICAgICJtZW1iZXJzaGlwX3ZhbHVlcyIsCistICAgICAgICAgICAgICAgIGR0eXBlLAorLSAg ICAgICAgICAgICAgICAoNywpLAorLSAgICAgICAgICAgICAgICBbMC4wLCAwLjEsIDAuMiwgbnAu bmFuLCAwLjQsIDAuNSwgMS4wXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIGxlYWZf dGFyZ2V0aWRzPVswXSAqIGxlYXZlcywKKy0gICAgICAgICAgICBsZWFmX3dlaWdodHM9bWFrZV90 ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIGR0eXBlLCAobGVhdmVzLCksIFsxXSAqIGxlYXZlcyksCist ICAgICAgICAgICAgdHJlZV9yb290cz1bMF0sCistICAgICAgICApCistCistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIGR0eXBlLCAoIkJhdGNo IFNpemUiLCAiRmVhdHVyZXMiKSldLAorLSAgICAgICAgICAgIFt0cmVlXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIGR0eXBlLCAoIkJhdGNoIFNpemUiLCA1KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDUpLAor LSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAg ICAgICBbCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbMF0gKiA2LAorLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcigibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8uRE9VQkxF LCAoOSwpLCBbMV0gKiA5KSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm5vZGVzX3Nw bGl0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDUsKSwgWzFdICogNSksCistICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFswXSAqIDUsCistICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDks KSwgWzFdICogOSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJub2Rlc19zcGxpdHMi LCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUpLAorLSAgICAgICAgICAgICksCist ICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbMF0gKiA1LAorLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcigibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoMTgsKSwg WzFdICogMTgpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigibm9kZXNfc3BsaXRzIiwg VGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBbMV0gKiA1KSwKKy0gICAgICAgICAgICApLAorLSAg ICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWzBdICogNSwKKy0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDksKSwgWzFd ICogOSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJub2Rlc19zcGxpdHMiLCBUZW5z b3JQcm90by5GTE9BVCwgKDUsKSwgWzFdICogNSksCistICAgICAgICAgICAgKSwKKy0gICAgICAg IF0KKy0gICAgKQorLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCBy ZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKKy0gICAgZGVmIHRlc3RfdHJl ZV9lbnNlbWJsZV9mYWlsc19pZl9pbnZhbGlkX2F0dHJpYnV0ZXMoCistICAgICAgICBzZWxmLAor LSAgICAgICAgbm9kZXNfdHJ1ZW5vZGVpZHMsCistICAgICAgICBsZWFmX3dlaWdodHMsCistICAg ICAgICBub2Rlc19zcGxpdHMsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGludGVyaW9yX25v ZGVzID0gNQorLSAgICAgICAgbGVhdmVzID0gOQorLSAgICAgICAgdHJlZSA9IG1ha2Vfbm9kZSgK Ky0gICAgICAgICAgICAiVHJlZUVuc2VtYmxlIiwKKy0gICAgICAgICAgICBbIngiXSwKKy0gICAg ICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAg ICAgICAgICAgbl90YXJnZXRzPTUsCistICAgICAgICAgICAgbm9kZXNfZmVhdHVyZWlkcz1bMF0g KiBpbnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc19zcGxpdHM9bm9kZXNfc3BsaXRz LAorLSAgICAgICAgICAgIG5vZGVzX21vZGVzPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAg ICAibm9kZXNfbW9kZXMiLAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UOCwKKy0g ICAgICAgICAgICAgICAgKGludGVyaW9yX25vZGVzLCksCistICAgICAgICAgICAgICAgIFswXSAq IGludGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgbm9kZXNfdHJ1 ZW5vZGVpZHM9bm9kZXNfdHJ1ZW5vZGVpZHMsCistICAgICAgICAgICAgbm9kZXNfZmFsc2Vub2Rl aWRzPVswXSAqIGludGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX3RydWVsZWFmcz1b MF0gKiBpbnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc19mYWxzZWxlYWZzPVswXSAq IGludGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIGxlYWZfdGFyZ2V0aWRzPVswXSAqIGxlYXZl cywKKy0gICAgICAgICAgICBsZWFmX3dlaWdodHM9bGVhZl93ZWlnaHRzLAorLSAgICAgICAgICAg IHRyZWVfcm9vdHM9WzBdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5ET1VCTEUsICgiQmF0 Y2ggU2l6ZSIsICJGZWF0dXJlcyIpKV0sCistICAgICAgICAgICAgW3RyZWVdLAorLSAgICAgICAg ICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCistICAgICAg ICAgICAgb25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAgICAgICAg c2VsZi5faW5mZXJyZWQsCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwg NSksCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICApCistCisgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9O TlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQor ICAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX2NsYXNzaWZpZXIoc2VsZikgLT4gTm9uZToKKyAg ICAgICAgIHRyZWUgPSBtYWtlX25vZGUoCitAQCAtMTA4NzgsNDAgKzgzOTEsNiBAQCBjbGFzcyBU ZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAg ICBdLAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAg ICBbCistICAgICAgICAgICAgKFsxLCAyLCAzXSwgWyIxIiwgIjIiLCAiMyJdKSwKKy0gICAgICAg ICAgICAoTm9uZSwgTm9uZSksCistICAgICAgICBdCistICAgICkKKy0gICAgQHVuaXR0ZXN0LnNr aXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9w ZXJhdG9ycyIpCistICAgIGRlZiB0ZXN0X29uZV9ob3RfZW5jb2Rlcl9mYWlsc19pZl9pbnZhbGlk X2F0dHJpYnV0ZXMoCistICAgICAgICBzZWxmLCBjYXRzX2ludDY0cywgY2F0c19zdHJpbmdzCist ICAgICkgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbKCJpbnB1dCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgIk4iLCAzKSldLAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAg ICAgICAgIk9uZUhvdEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAor LSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIGNh dHNfaW50NjRzPWNhdHNfaW50NjRzLAorLSAgICAgICAgICAgICAgICAgICAgY2F0c19zdHJpbmdz PWNhdHNfc3RyaW5ncywKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj0iYWkub25ueC5tbCIs CistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAor LSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCistICAgICAgICAgICAgb25u eC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAgICAgICAgc2VsZi5faW5m ZXJyZWQsCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgMSksCistICAg ICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICApCistCisgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJP Tk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQorICAgICBkZWYg dGVzdF96aXBfbWFwKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBwYXJhbXMgPSAoCitAQCAtMTEw NjYsMjggKzg1NDUsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJl bmNlSGVscGVyKToKKyAgICAgICAgICAgICBvbm54LmNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWws IGZ1bGxfY2hlY2s9VHJ1ZSkKKyAgICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5pbmZl cl9zaGFwZXMobW9kZWwpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJDb25zdGFudE9mU2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfaXNzdWVfY29uc3RhbnRv ZnNoYXBlXzYxMzUoc2VsZiwgXywgdmVyc2lvbik6CistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWygic3RkLmNvbnN0YW50IiwgVGVuc29yUHJvdG8uSU5U NjQsICgxLCkpLCAib3V0cHV0Il0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBt YWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnRPZlNoYXBlIiwKKy0gICAg ICAgICAgICAgICAgICAgIGlucHV0cz1bInN0ZC5jb25zdGFudCJdLAorLSAgICAgICAgICAgICAg ICAgICAgb3V0cHV0cz1bIm91dHB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgbmFtZT0iaW52 YWxpZF9ub2RlIiwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzdGQuY29u c3RhbnQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsKSwgKC0xMCwpKV0sCistICAgICAgICApCist ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAgICAgICAgICBvbm54LnNoYXBlX2luZmVy ZW5jZS5JbmZlcmVuY2VFcnJvciwKKy0gICAgICAgICAgICBzZWxmLl9pbmZlcnJlZCwKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCisgICAgIGRlZiB0 ZXN0X3Byb3RvYnVmX2RlZmF1bHQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIG1vZGVsX3RleHQg PSAiIiIKKyAgICAgICAgICAgICBpcl92ZXJzaW9uOiA4CitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0 L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weSBiL29ubngvdGVzdC90ZXN0X2V4dGVybmFsX2RhdGEucHkK K2luZGV4IGMwODQ1Zjk2YS4uZWIwN2YwOWU4IDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3Rlc3Rf ZXh0ZXJuYWxfZGF0YS5weQorKysrIGIvb25ueC90ZXN0L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weQor QEAgLTE0LDcgKzE0LDYgQEAgaW1wb3J0IHdhcm5pbmdzCisgZnJvbSB0eXBpbmcgaW1wb3J0IFRZ UEVfQ0hFQ0tJTkcsIEFueQorIAorIGltcG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJhbWV0 ZXJpemVkCisgCisgaW1wb3J0IG9ubngKKyBmcm9tIG9ubnggaW1wb3J0ICgKK0BAIC0xMjMsNjE2 ICsxMjIsNiBAQCBjbGFzcyBUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2UodW5pdHRlc3QuVGVzdENh c2UpOgorICAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lKQor IAorIAorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCistICAgIFsKKy0gICAg ICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKKy0gICAgICAgIHsic2Vy aWFsaXphdGlvbl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgIF0KKy0pCistY2xhc3MgVGVz dExvYWRFeHRlcm5hbERhdGEoVGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKToKKy0gICAgZGVmIHRl c3RfbG9hZF9leHRlcm5hbF9kYXRhKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9IG9u bngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6 ZXJbMF0KKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRp YWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAgICBhdHRy aWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciks IHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYgdGVzdF9sb2FkX2V4dGVybmFsX2Rh dGFfZm9yX21vZGVsKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9t b2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAg IGxvYWRfZXh0ZXJuYWxfZGF0YV9mb3JfbW9kZWwobW9kZWwsIHNlbGYudGVtcF9kaXIpCistICAg ICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVu c29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5z b3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBucC50ZXN0 aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRy aWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X3NhdmVfZXh0ZXJuYWxfZGF0YShzZWxmKSAt PiBOb25lOgorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoc2VsZi5tb2RlbF9maWxl bmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIHRlbXBfZGlyID0g b3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJzYXZlX2NvcHkiKQorLSAgICAgICAgb3MubWtk aXIodGVtcF9kaXIpCistICAgICAgICBuZXdfbW9kZWxfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4o dGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChtb2RlbCwg bmV3X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAg ICAgbmV3X21vZGVsID0gb25ueC5sb2FkX21vZGVsKG5ld19tb2RlbF9maWxlbmFtZSwgc2VsZi5z ZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG5ld19t b2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxs Y2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1 ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBuZXdfbW9kZWwuZ3JhcGgubm9kZVsw XS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9f YXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLQorLUBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCistICAgIFsKKy0gICAgICAgIHsic2Vy aWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKKy0gICAgICAgIHsic2VyaWFsaXphdGlv bl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgIF0KKy0pCistY2xhc3MgVGVzdExvYWRFeHRl cm5hbERhdGFTaW5nbGVGaWxlKFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSk6CistICAgIGRlZiBj cmVhdGVfZXh0ZXJuYWxfZGF0YV90ZW5zb3JzKAorLSAgICAgICAgc2VsZiwgdGVuc29yc19kYXRh OiBsaXN0W3R1cGxlW2xpc3RbQW55XSwgQW55XV0KKy0gICAgKSAtPiBsaXN0W1RlbnNvclByb3Rv XToKKy0gICAgICAgIHRlbnNvcl9maWxlbmFtZSA9ICJ0ZW5zb3JzLmJpbiIKKy0gICAgICAgIHRl bnNvcnMgPSBbXQorLQorLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnRlbXBf ZGlyLCB0ZW5zb3JfZmlsZW5hbWUpLCAiYWIiKSBhcyBkYXRhX2ZpbGU6CistICAgICAgICAgICAg Zm9yIHZhbHVlLCB0ZW5zb3JfbmFtZSBpbiB0ZW5zb3JzX2RhdGE6CistICAgICAgICAgICAgICAg IHRlbnNvciA9IGZyb21fYXJyYXkobnAuYXJyYXkodmFsdWUpKQorLSAgICAgICAgICAgICAgICBv ZmZzZXQgPSBkYXRhX2ZpbGUudGVsbCgpCistICAgICAgICAgICAgICAgIGlmIG9mZnNldCAlIDQw OTYgIT0gMDoKKy0gICAgICAgICAgICAgICAgICAgIGRhdGFfZmlsZS53cml0ZShiIlwwIiAqICg0 MDk2IC0gb2Zmc2V0ICUgNDA5NikpCistICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvZmZz ZXQgKyA0MDk2IC0gb2Zmc2V0ICUgNDA5NgorLQorLSAgICAgICAgICAgICAgICBkYXRhX2ZpbGUu d3JpdGUodGVuc29yLnJhd19kYXRhKQorLSAgICAgICAgICAgICAgICBzZXRfZXh0ZXJuYWxfZGF0 YSgKKy0gICAgICAgICAgICAgICAgICAgIHRlbnNvciwKKy0gICAgICAgICAgICAgICAgICAgIGxv Y2F0aW9uPXRlbnNvcl9maWxlbmFtZSwKKy0gICAgICAgICAgICAgICAgICAgIG9mZnNldD1vZmZz ZXQsCistICAgICAgICAgICAgICAgICAgICBsZW5ndGg9ZGF0YV9maWxlLnRlbGwoKSAtIG9mZnNl dCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgICAgICB0ZW5zb3IubmFtZSA9IHRl bnNvcl9uYW1lCistICAgICAgICAgICAgICAgIHRlbnNvci5DbGVhckZpZWxkKCJyYXdfZGF0YSIp CistICAgICAgICAgICAgICAgIHRlbnNvci5kYXRhX2xvY2F0aW9uID0gb25ueC5UZW5zb3JQcm90 by5FWFRFUk5BTAorLSAgICAgICAgICAgICAgICB0ZW5zb3JzLmFwcGVuZCh0ZW5zb3IpCistCist ICAgICAgICByZXR1cm4gdGVuc29ycworLQorLSAgICBkZWYgdGVzdF9sb2FkX2V4dGVybmFsX3Np bmdsZV9maWxlX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2Fk X21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCist CistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclsw XQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6 ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0 ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBu cC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2Vs Zi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X3NhdmVfZXh0ZXJuYWxfc2luZ2xl X2ZpbGVfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0g ICAgICAgIHRlbXBfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJzYXZlX2NvcHki KQorLSAgICAgICAgb3MubWtkaXIodGVtcF9kaXIpCistICAgICAgICBuZXdfbW9kZWxfZmlsZW5h bWUgPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0gICAgICAgIG9ubngu c2F2ZV9tb2RlbChtb2RlbCwgbmV3X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0KQorLQorLSAgICAgICAgbmV3X21vZGVsID0gb25ueC5sb2FkX21vZGVsKG5ld19tb2Rl bF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxp emVyX3RlbnNvciA9IG5ld19tb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgbnAu dGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2Vs Zi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBuZXdf bW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgbnAudGVzdGluZy5h c3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRl X3ZhbHVlKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0g ICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAgICAgIChUcnVlLCBGYWxzZSksCist ICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3Rfc2F2ZV9leHRlcm5hbF9pbnZhbGlkX3Np bmdsZV9maWxlX2RhdGFfYW5kX2NoZWNrKAorLSAgICAgICAgc2VsZiwgdXNlX2Fic29sdXRlX3Bh dGg6IGJvb2wKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0g ICAgICAgIG1vZGVsX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAic2F2ZV9jb3B5 IikKKy0gICAgICAgIG9zLm1rZGlyKG1vZGVsX2RpcikKKy0KKy0gICAgICAgIHRyYXZlcnNhbF9l eHRlcm5hbF9kYXRhX2RpciA9IG9zLnBhdGguam9pbigKKy0gICAgICAgICAgICBzZWxmLnRlbXBf ZGlyLCAiaW52YWxpZF9leHRlcm5hbF9kYXRhIgorLSAgICAgICAgKQorLSAgICAgICAgb3MubWtk aXIodHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfZGlyKQorLQorLSAgICAgICAgaWYgdXNlX2Fic29s dXRlX3BhdGg6CistICAgICAgICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24g PSBvcy5wYXRoLmpvaW4oCistICAgICAgICAgICAgICAgIHRyYXZlcnNhbF9leHRlcm5hbF9kYXRh X2RpciwgInRlbnNvcnMuYmluIgorLSAgICAgICAgICAgICkKKy0gICAgICAgIGVsc2U6CistICAg ICAgICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24gPSAiLi4vaW52YWxpZF9l eHRlcm5hbF9kYXRhL3RlbnNvcnMuYmluIgorLQorLSAgICAgICAgZXh0ZXJuYWxfZGF0YV9kaXIg PSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgImV4dGVybmFsX2RhdGEiKQorLSAgICAgICAg b3MubWtkaXIoZXh0ZXJuYWxfZGF0YV9kaXIpCistICAgICAgICBuZXdfbW9kZWxfZmlsZXBhdGgg PSBvcy5wYXRoLmpvaW4obW9kZWxfZGlyLCAibW9kZWwub25ueCIpCistCistICAgICAgICBkZWYg Y29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX25vX2NoZWNrKG1vZGVsOiBNb2RlbFByb3Rv LCBsb2NhdGlvbjogc3RyKToKKy0gICAgICAgICAgICBmb3IgdGVuc29yIGluIG1vZGVsLmdyYXBo LmluaXRpYWxpemVyOgorLSAgICAgICAgICAgICAgICBpZiB0ZW5zb3IuSGFzRmllbGQoInJhd19k YXRhIik6CistICAgICAgICAgICAgICAgICAgICBzZXRfZXh0ZXJuYWxfZGF0YSh0ZW5zb3IsIGxv Y2F0aW9uKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX25vX2No ZWNrKAorLSAgICAgICAgICAgIG1vZGVsLAorLSAgICAgICAgICAgIGxvY2F0aW9uPXRyYXZlcnNh bF9leHRlcm5hbF9kYXRhX2xvY2F0aW9uLAorLSAgICAgICAgKQorLQorLSAgICAgICAgd2l0aCBz ZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKToKKy0gICAgICAg ICAgICBvbm54LnNhdmVfbW9kZWwobW9kZWwsIG5ld19tb2RlbF9maWxlcGF0aCwgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0KKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2Ns YXNzKAorLSAgICBbCistICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVm In0sCistICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAorLSAg ICBdCistKQorLWNsYXNzIFRlc3RTYXZlQWxsVGVuc29yc0FzRXh0ZXJuYWxEYXRhKHVuaXR0ZXN0 LlRlc3RDYXNlKToKKy0gICAgc2VyaWFsaXphdGlvbl9mb3JtYXQ6IHN0ciA9ICJwcm90b2J1ZiIK Ky0KKy0gICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBzZWxmLl90ZW1wX2Rp cl9vYmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQorLSAgICAgICAgc2VsZi50ZW1w X2Rpcjogc3RyID0gc2VsZi5fdGVtcF9kaXJfb2JqLm5hbWUKKy0gICAgICAgIHNlbGYuaW5pdGlh bGl6ZXJfdmFsdWUgPSBucC5hcmFuZ2UoNikucmVzaGFwZSgzLCAyKS5hc3R5cGUobnAuZmxvYXQz MikgKyA1MTIKKy0gICAgICAgIHNlbGYuYXR0cmlidXRlX3ZhbHVlID0gbnAuYXJhbmdlKDYpLnJl c2hhcGUoMiwgMykuYXN0eXBlKG5wLmZsb2F0MzIpICsgMjU2CistICAgICAgICBzZWxmLm1vZGVs ID0gc2VsZi5jcmVhdGVfdGVzdF9tb2RlbF9wcm90bygpCistCistICAgIGRlZiBnZXRfdGVtcF9t b2RlbF9maWxlbmFtZShzZWxmKToKKy0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi50 ZW1wX2Rpciwgc3RyKHV1aWQudXVpZDQoKSkgKyAiLm9ubngiKQorLQorLSAgICBkZWYgY3JlYXRl X2RhdGFfdGVuc29ycygKKy0gICAgICAgIHNlbGYsIHRlbnNvcnNfZGF0YTogbGlzdFt0dXBsZVts aXN0W0FueV0sIEFueV1dCistICAgICkgLT4gbGlzdFtUZW5zb3JQcm90b106CistICAgICAgICB0 ZW5zb3JzID0gW10KKy0gICAgICAgIGZvciB2YWx1ZSwgdGVuc29yX25hbWUgaW4gdGVuc29yc19k YXRhOgorLSAgICAgICAgICAgIHRlbnNvciA9IGZyb21fYXJyYXkobnAuYXJyYXkodmFsdWUpKQor LSAgICAgICAgICAgIHRlbnNvci5uYW1lID0gdGVuc29yX25hbWUKKy0gICAgICAgICAgICB0ZW5z b3JzLmFwcGVuZCh0ZW5zb3IpCistCistICAgICAgICByZXR1cm4gdGVuc29ycworLQorLSAgICBk ZWYgY3JlYXRlX3Rlc3RfbW9kZWxfcHJvdG8oc2VsZikgLT4gTW9kZWxQcm90bzoKKy0gICAgICAg IHRlbnNvcnMgPSBzZWxmLmNyZWF0ZV9kYXRhX3RlbnNvcnMoCistICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAoc2VsZi5hdHRyaWJ1dGVfdmFsdWUsICJhdHRyaWJ1dGVfdmFsdWUiKSwK Ky0gICAgICAgICAgICAgICAgKHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUsICJpbnB1dF92YWx1ZSIp LAorLSAgICAgICAgICAgIF0KKy0gICAgICAgICkKKy0KKy0gICAgICAgIGNvbnN0YW50X25vZGUg PSBvbm54LmhlbHBlci5tYWtlX25vZGUoCistICAgICAgICAgICAgIkNvbnN0YW50IiwgaW5wdXRz PVtdLCBvdXRwdXRzPVsidmFsdWVzIl0sIHZhbHVlPXRlbnNvcnNbMF0KKy0gICAgICAgICkKKy0K Ky0gICAgICAgIGlucHV0cyA9IFsKKy0gICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFs dWVfaW5mbygKKy0gICAgICAgICAgICAgICAgImlucHV0X3ZhbHVlIiwgb25ueC5UZW5zb3JQcm90 by5GTE9BVCwgc2VsZi5pbml0aWFsaXplcl92YWx1ZS5zaGFwZQorLSAgICAgICAgICAgICkKKy0g ICAgICAgIF0KKy0KKy0gICAgICAgIGdyYXBoID0gaGVscGVyLm1ha2VfZ3JhcGgoCistICAgICAg ICAgICAgW2NvbnN0YW50X25vZGVdLAorLSAgICAgICAgICAgICJ0ZXN0X2dyYXBoIiwKKy0gICAg ICAgICAgICBpbnB1dHM9aW5wdXRzLAorLSAgICAgICAgICAgIG91dHB1dHM9W10sCistICAgICAg ICAgICAgaW5pdGlhbGl6ZXI9W3RlbnNvcnNbMV1dLAorLSAgICAgICAgKQorLSAgICAgICAgcmV0 dXJuIGhlbHBlci5tYWtlX21vZGVsKGdyYXBoKQorLQorLSAgICBAdW5pdHRlc3Quc2tpcElmKAor LSAgICAgICAgc2VyaWFsaXphdGlvbl9mb3JtYXQgIT0gInByb3RvYnVmIiwKKy0gICAgICAgICJj aGVja19tb2RlbCBzdXBwb3J0cyBwcm90b2J1ZiBvbmx5IHdoZW4gcHJvdmlkZWQgYXMgYSBwYXRo IiwKKy0gICAgKQorLSAgICBkZWYgdGVzdF9jaGVja19tb2RlbChzZWxmKSAtPiBOb25lOgorLSAg ICAgICAgY2hlY2tlci5jaGVja19tb2RlbChzZWxmLm1vZGVsKQorLQorLSAgICBkZWYgdGVzdF9j b252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfd2l0aF9zaXplX3RocmVzaG9sZChzZWxmKSAt PiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9m aWxlbmFtZSgpCistCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoc2Vs Zi5tb2RlbCwgc2l6ZV90aHJlc2hvbGQ9MTAyNCkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChz ZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCist CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2Rl bC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbml0aWFs aXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgZGVmIHRlc3Rf Y29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX3dpdGhvdXRfc2l6ZV90aHJlc2hvbGQoc2Vs ZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9k ZWxfZmlsZW5hbWUoKQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKHNl bGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTApCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2Vs Zi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQor LSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNl cmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwu Z3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXpl cl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlh bGl6ZXJfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxf ZGF0YV9mcm9tX29uZV9maWxlX3dpdGhfbG9jYXRpb24oc2VsZikgLT4gTm9uZToKKy0gICAgICAg IG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLSAgICAg ICAgZXh0ZXJuYWxfZGF0YV9maWxlID0gc3RyKHV1aWQudXVpZDQoKSkKKy0KKy0gICAgICAgIGNv bnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAor LSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNf dG9fb25lX2ZpbGU9VHJ1ZSwKKy0gICAgICAgICAgICBsb2NhdGlvbj1leHRlcm5hbF9kYXRhX2Zp bGUsCistICAgICAgICApCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9k ZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgc2Vs Zi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCBl eHRlcm5hbF9kYXRhX2ZpbGUpKSkKKy0KKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVs KG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAg ICMgdGVzdCBjb252ZXJ0IG1vZGVsIGZyb20gZXh0ZXJuYWwgZGF0YQorLSAgICAgICAgY29udmVy dF9tb2RlbF9mcm9tX2V4dGVybmFsX2RhdGEobW9kZWwpCistICAgICAgICBtb2RlbF9maWxlX3Bh dGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0gICAgICAgIG9ubnguc2F2ZV9t b2RlbChtb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQor LSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNl cmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwu Z3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVuKGluaXRp YWxpemVyX3RlbnNvci5leHRlcm5hbF9kYXRhKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo aW5pdGlhbGl6ZXJfdGVuc29yLmRhdGFfbG9jYXRpb24sIFRlbnNvclByb3RvLkRFRkFVTFQpCist ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90 ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmlidXRlX3Rl bnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAgIHNlbGYu YXNzZXJ0RmFsc2UobGVuKGF0dHJpYnV0ZV90ZW5zb3IuZXh0ZXJuYWxfZGF0YSkpCistICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKGF0dHJpYnV0ZV90ZW5zb3IuZGF0YV9sb2NhdGlvbiwgVGVuc29y UHJvdG8uREVGQVVMVCkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2Fy cmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVm IHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX2Zyb21fb25lX2ZpbGVfd2l0aG91 dF9sb2NhdGlvbl91c2VzX21vZGVsX25hbWUoCistICAgICAgICBzZWxmLAorLSAgICApIC0+IE5v bmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVu YW1lKCkKKy0KKy0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKKy0gICAg ICAgICAgICBzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9sZD0wLCBhbGxfdGVuc29yc190b19vbmVf ZmlsZT1UcnVlCistICAgICAgICApCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2Rl bCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkpCistICAg ICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVt cF9kaXIsIG1vZGVsX2ZpbGVfcGF0aCkpKQorLQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVs X3RvX2V4dGVybmFsX2RhdGFfb25lX2ZpbGVfcGVyX3RlbnNvcl93aXRob3V0X2F0dHJpYnV0ZSgK Ky0gICAgICAgIHNlbGYsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0 aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAgY29udmVydF9t b2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAg ICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVf ZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKKy0gICAg ICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3Bh dGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBzZWxmLmFzc2VydFRy dWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0 VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgImlucHV0X3Zh bHVlIikpKQorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRo LmpvaW4oc2VsZi50ZW1wX2RpciwgImF0dHJpYnV0ZV92YWx1ZSIpKSkKKy0KKy0gICAgZGVmIHRl c3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX29uZV9maWxlX3Blcl90ZW5zb3Jfd2l0 aF9hdHRyaWJ1dGUoCistICAgICAgICBzZWxmLAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBt b2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0KKy0gICAg ICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKKy0gICAgICAgICAgICBzZWxmLm1v ZGVsLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAgYWxsX3Rl bnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9 VHJ1ZSwKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBt b2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBz ZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0gICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rp ciwgImlucHV0X3ZhbHVlIikpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNm aWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikpKQorLQor LSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfZG9lc19ub3RfY29u dmVydF9hdHRyaWJ1dGVfdmFsdWVzKAorLSAgICAgICAgc2VsZiwKKy0gICAgKSAtPiBOb25lOgor LSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgp CistCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCistICAgICAgICAg ICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAg ICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3Rv X29uZV9maWxlPUZhbHNlLAorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNl bGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0K Ky0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2Vs Zi50ZW1wX2RpciwgImlucHV0X3ZhbHVlIikpKQorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShv cy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgImF0dHJpYnV0ZV92YWx1 ZSIpKSkKKy0KKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0 aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNv ciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2VydFRydWUo aW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistCistICAgICAg ICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAor LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRh X2xvY2F0aW9uIikpCistCistICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxf ZGF0YV9jb252ZXJ0c19hdHRyaWJ1dGVfdmFsdWVzKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBt b2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0KKy0gICAg ICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKKy0gICAgICAgICAgICBzZWxmLm1v ZGVsLCBzaXplX3RocmVzaG9sZD0wLCBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlCistICAgICAgICAp CistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBz ZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRf bW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAg ICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3Rl bnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydFRydWUo aW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistCistICAgICAg ICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAor LSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3Rl bnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGF0 dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgZGVmIHRl c3Rfc2F2ZV9tb2RlbF9kb2VzX25vdF9jb252ZXJ0X3RvX2V4dGVybmFsX2RhdGFfYW5kX3NhdmVz X3RoZV9tb2RlbCgKKy0gICAgICAgIHNlbGYsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1v ZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLSAgICAgICAg b25ueC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAg bW9kZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQs CistICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPUZhbHNlLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkp CistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNl bGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBt b2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbml0 aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgICAgIGF0 dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAg ICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9j YXRpb24iKSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF9kb2VzX2NvbnZlcnRfYW5kX3Nh dmVzX3RoZV9tb2RlbChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0g c2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBvbm54LnNhdmVfbW9kZWwo CistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgs CistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBz YXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19v bmVfZmlsZT1UcnVlLAorLSAgICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCistICAgICAgICAgICAg c2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwK Ky0gICAgICAgICkKKy0KKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2Zp bGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIGluaXRpYWxp emVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFz c2VydFRydWUoaW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCist ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90 ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmlidXRlX3Rl bnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAgIHNlbGYu YXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQor LSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3Rl bnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX21vZGVs X3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbF9kYXRhKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBt b2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0gICAgICAg IG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAg IG1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAg IGxvY2F0aW9uPU5vbmUsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAg ICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKKy0gICAgICAgICkKKy0gICAgICAgICMgU2F2 ZSB3aXRob3V0IGxvYWRfZXh0ZXJuYWxfZGF0YQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRf bW9kZWwoCistICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAgIG9u bnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBtb2RlbCwKKy0gICAgICAgICAgICBtb2RlbF9m aWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAg ICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0gICAgICAgICAgICBsb2NhdGlv bj1Ob25lLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAgY29u dmVydF9hdHRyaWJ1dGU9RmFsc2UsCistICAgICAgICApCistICAgICAgICAjIExvYWQgdGhlIHNh dmVkIG1vZGVsIGFnYWluOyBPbmx5IHdvcmtzIGlmIHRoZSBzYXZlZCBwYXRoIGlzIHVuZGVyIHRo ZSBzYW1lIGRpcmVjdG9yeQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxf ZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgaW5pdGlh bGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkK Ky0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVy X3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVf dGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgc2Vs Zi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikp CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVf dGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X3NhdmVfbW9k ZWxfd2l0aF9leGlzdGluZ19yYXdfZGF0YV9zaG91bGRfb3ZlcnJpZGUoc2VsZikgLT4gTm9uZToK Ky0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUo KQorLSAgICAgICAgb3JpZ2luYWxfcmF3X2RhdGEgPSBzZWxmLm1vZGVsLmdyYXBoLmluaXRpYWxp emVyWzBdLnJhd19kYXRhCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAgICAg c2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFs X2RhdGE9VHJ1ZSwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkp CistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbCgKKy0gICAgICAgICAgICBtb2Rl bF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0 YT1GYWxzZQorLSAgICAgICAgKQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwu Z3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvci5yYXdfZGF0 YSA9IGIiZHVtbXB5X3Jhd19kYXRhIgorLSAgICAgICAgIyBJZiByYXdfZGF0YSBhbmQgZXh0ZXJu YWwgdGVuc29yIGV4aXN0IGF0IHRoZSBzYW1lIHRpbWUsIG92ZXJyaWRlIGV4aXN0aW5nIHJhd19k YXRhCistICAgICAgICBsb2FkX2V4dGVybmFsX2RhdGFfZm9yX3RlbnNvcihpbml0aWFsaXplcl90 ZW5zb3IsIHNlbGYudGVtcF9kaXIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluaXRpYWxp emVyX3RlbnNvci5yYXdfZGF0YSwgb3JpZ2luYWxfcmF3X2RhdGEpCistCistCistQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKKy0gICAgWworLSAgICAgICAgeyJzZXJpYWxpemF0 aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAorLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1h dCI6ICJ0ZXh0cHJvdG8ifSwKKy0gICAgXQorLSkKKy1jbGFzcyBUZXN0RXh0ZXJuYWxEYXRhVG9B cnJheSh1bml0dGVzdC5UZXN0Q2FzZSk6CistICAgIHNlcmlhbGl6YXRpb25fZm9ybWF0OiBzdHIg PSAicHJvdG9idWYiCistCistICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25lOgorLSAgICAgICAg c2VsZi5fdGVtcF9kaXJfb2JqID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKKy0gICAg ICAgIHNlbGYudGVtcF9kaXI6IHN0ciA9IHNlbGYuX3RlbXBfZGlyX29iai5uYW1lCistICAgICAg ICBzZWxmLl9tb2RlbF9maWxlX3BhdGg6IHN0ciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGly LCAibW9kZWwub25ueCIpCistICAgICAgICBzZWxmLmxhcmdlX2RhdGEgPSBucC5yYW5kb20ucmFu ZCgxMCwgNjAsIDEwMCkuYXN0eXBlKG5wLmZsb2F0MzIpCistICAgICAgICBzZWxmLnNtYWxsX2Rh dGEgPSAoMjAwLCAzMDApCistICAgICAgICBzZWxmLm1vZGVsID0gc2VsZi5jcmVhdGVfdGVzdF9t b2RlbCgpCistCistICAgIEBwcm9wZXJ0eQorLSAgICBkZWYgbW9kZWxfZmlsZV9wYXRoKHNlbGYp OgorLSAgICAgICAgcmV0dXJuIHNlbGYuX21vZGVsX2ZpbGVfcGF0aAorLQorLSAgICBkZWYgdGVh ckRvd24oc2VsZikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuX3RlbXBfZGlyX29iai5jbGVhbnVw KCkKKy0KKy0gICAgZGVmIGNyZWF0ZV90ZXN0X21vZGVsKHNlbGYpIC0+IE1vZGVsUHJvdG86Cist ICAgICAgICBYID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90 by5GTE9BVCwgc2VsZi5sYXJnZV9kYXRhLnNoYXBlKQorLSAgICAgICAgaW5wdXRfaW5pdCA9IGhl bHBlci5tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICBuYW1lPSJYIiwKKy0gICAgICAgICAgICBk YXRhX3R5cGU9VGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgZGltcz1zZWxmLmxhcmdl X2RhdGEuc2hhcGUsCistICAgICAgICAgICAgdmFscz1vbm54Lm51bXB5X2hlbHBlci50b2J5dGVz X2xpdHRsZV9lbmRpYW4oc2VsZi5sYXJnZV9kYXRhKSwKKy0gICAgICAgICAgICByYXc9VHJ1ZSwK Ky0gICAgICAgICkKKy0KKy0gICAgICAgIHNoYXBlX2RhdGEgPSBucC5hcnJheShzZWxmLnNtYWxs X2RhdGEsIG5wLmludDY0KQorLSAgICAgICAgc2hhcGVfaW5pdCA9IGhlbHBlci5tYWtlX3RlbnNv cigKKy0gICAgICAgICAgICBuYW1lPSJTaGFwZSIsCistICAgICAgICAgICAgZGF0YV90eXBlPVRl bnNvclByb3RvLklOVDY0LAorLSAgICAgICAgICAgIGRpbXM9c2hhcGVfZGF0YS5zaGFwZSwKKy0g ICAgICAgICAgICB2YWxzPW9ubngubnVtcHlfaGVscGVyLnRvYnl0ZXNfbGl0dGxlX2VuZGlhbihz aGFwZV9kYXRhKSwKKy0gICAgICAgICAgICByYXc9VHJ1ZSwKKy0gICAgICAgICkKKy0gICAgICAg IEMgPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiQyIsIFRlbnNvclByb3RvLklOVDY0 LCBzZWxmLnNtYWxsX2RhdGEpCistCistICAgICAgICByZXNoYXBlID0gb25ueC5oZWxwZXIubWFr ZV9ub2RlKAorLSAgICAgICAgICAgICJSZXNoYXBlIiwKKy0gICAgICAgICAgICBpbnB1dHM9WyJY IiwgIlNoYXBlIl0sCistICAgICAgICAgICAgb3V0cHV0cz1bIlkiXSwKKy0gICAgICAgICkKKy0g ICAgICAgIGNhc3QgPSBvbm54LmhlbHBlci5tYWtlX25vZGUoCistICAgICAgICAgICAgIkNhc3Qi LCBpbnB1dHM9WyJZIl0sIG91dHB1dHM9WyJDIl0sIHRvPVRlbnNvclByb3RvLklOVDY0CistICAg ICAgICApCistCistICAgICAgICBncmFwaF9kZWYgPSBoZWxwZXIubWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbcmVzaGFwZSwgY2FzdF0sCistICAgICAgICAgICAgInRlc3QtbW9kZWwiLAorLSAg ICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICBbQ10sCistICAgICAgICAgICAgaW5pdGlhbGl6 ZXI9W2lucHV0X2luaXQsIHNoYXBlX2luaXRdLAorLSAgICAgICAgKQorLSAgICAgICAgcmV0dXJu IGhlbHBlci5tYWtlX21vZGVsKGdyYXBoX2RlZiwgcHJvZHVjZXJfbmFtZT0ib25ueC1leGFtcGxl IikKKy0KKy0gICAgQHVuaXR0ZXN0LnNraXBJZigKKy0gICAgICAgIHNlcmlhbGl6YXRpb25fZm9y bWF0ICE9ICJwcm90b2J1ZiIsCistICAgICAgICAiY2hlY2tfbW9kZWwgc3VwcG9ydHMgcHJvdG9i dWYgb25seSB3aGVuIHByb3ZpZGVkIGFzIGEgcGF0aCIsCistICAgICkKKy0gICAgZGVmIHRlc3Rf Y2hlY2tfbW9kZWwoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwo c2VsZi5tb2RlbCkKKy0KKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9pbmZlcmVuY2Vfd2l0aF9leHRl cm5hbF9kYXRhX2ZhaWwoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgK Ky0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9w YXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCistICAgICAgICAg ICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNf dG9fb25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAg ICAgICkKKy0gICAgICAgIG1vZGVsX3dpdGhvdXRfZXh0ZXJuYWxfZGF0YSA9IG9ubngubG9hZCgK Ky0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zv cm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAgICAjIFNo YXBlIGluZmVyZW5jZSBvZiBSZXNoYXBlIHVzZXMgUGFyc2VEYXRhCistICAgICAgICAjIFBhcnNl RGF0YSBjYW5ub3QgaGFuZGxlIGV4dGVybmFsIGRhdGEgYW5kIHNob3VsZCB0aHJvdyB0aGUgZXJy b3IgYXMgZm9sbG93czoKKy0gICAgICAgICMgQ2Fubm90IHBhcnNlIGRhdGEgZnJvbSBleHRlcm5h bCB0ZW5zb3JzLiBQbGVhc2UgbG9hZCBleHRlcm5hbCBkYXRhIGludG8gcmF3IGRhdGEgZm9yIHRl bnNvcjogU2hhcGUKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIHNo YXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwKKy0gICAgICAgICAgICBzaGFwZV9pbmZlcmVu Y2UuaW5mZXJfc2hhcGVzLAorLSAgICAgICAgICAgIG1vZGVsX3dpdGhvdXRfZXh0ZXJuYWxfZGF0 YSwKKy0gICAgICAgICAgICBzdHJpY3RfbW9kZT1UcnVlLAorLSAgICAgICAgKQorLQorLSAgICBk ZWYgdGVzdF90b19hcnJheV93aXRoX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAg ICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAg ICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlv bl9mb3JtYXQsCistICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAg ICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgc2l6 ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICkKKy0gICAgICAgICMgcmF3X2RhdGEgb2YgZXh0ZXJu YWwgdGVuc29yIGlzIG5vdCBsb2FkZWQKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkKAorLSAg ICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAgICMgU3BlY2lm eSBzZWxmLnRlbXBfZGlyIHRvIGxvYWQgZXh0ZXJuYWwgdGVuc29yCistICAgICAgICBsb2FkZWRf bGFyZ2VfZGF0YSA9IHRvX2FycmF5KG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdLCBzZWxmLnRl bXBfZGlyKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UobG9hZGVkX2xhcmdl X2RhdGEsIHNlbGYubGFyZ2VfZGF0YSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF93aXRo X2V4dGVybmFsX2RhdGFfbXVsdGlwbGVfdGltZXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgICMg VGVzdCBvbm54LnNhdmUgc2hvdWxkIHJlc3BlY3RpdmVseSBoYW5kbGUgdHlwaWNhbCB0ZW5zb3Ig YW5kIGV4dGVybmFsIHRlbnNvciBwcm9wZXJseQorLSAgICAgICAgIyAxc3Qgc2F2ZTogc2F2ZSB0 d28gdGVuc29ycyB3aGljaCBoYXZlIHJhd19kYXRhCistICAgICAgICAjIE9ubHkgd19sYXJnZSB3 aWxsIGJlIHN0b3JlZCBhcyBleHRlcm5hbCB0ZW5zb3JzIHNpbmNlIGl0J3MgbGFyZ2VyIHRoYW4g MTAyNAorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWws CistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5z ZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9 VHJ1ZSwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAg ICAgICAgICBsb2NhdGlvbj1Ob25lLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTEwMjQs CistICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9VHJ1ZSwKKy0gICAgICAgICkKKy0gICAg ICAgIG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbCA9IG9ubngubG9hZCgKKy0gICAgICAg ICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9h ZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAgICBsYXJnZV9pbnB1dF90 ZW5zb3IgPSBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJb MF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsYXJnZV9pbnB1dF90ZW5zb3IuSGFzRmllbGQo ImRhdGFfbG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAor LSAgICAgICAgICAgIHRvX2FycmF5KGxhcmdlX2lucHV0X3RlbnNvciwgc2VsZi50ZW1wX2Rpciks IHNlbGYubGFyZ2VfZGF0YQorLSAgICAgICAgKQorLQorLSAgICAgICAgc21hbGxfc2hhcGVfdGVu c29yID0gbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzFd CistICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHNtYWxsX3NoYXBlX3RlbnNvci5IYXNGaWVs ZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2Uo dG9fYXJyYXkoc21hbGxfc2hhcGVfdGVuc29yKSwgc2VsZi5zbWFsbF9kYXRhKQorLQorLSAgICAg ICAgIyAybmQgc2F2ZTogb25lIHRlbnNvciBoYXMgcmF3X2RhdGEgKHNtYWxsKTsgb25lIGV4dGVy bmFsIHRlbnNvciAobGFyZ2UpCistICAgICAgICAjIFNhdmUgdGhlbSBib3RoIGFzIGV4dGVybmFs IHRlbnNvcnMgdGhpcyB0aW1lCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAg ICAgbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLAorLSAgICAgICAgICAgIHNlbGYubW9k ZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCist ICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgYWxs X3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwK Ky0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0 cmlidXRlPVRydWUsCistICAgICAgICApCistCistICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRp bmdfZXh0ZXJuYWwgPSBvbm54LmxvYWQoCistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3Bh dGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQor LSAgICAgICAgKQorLSAgICAgICAgbGFyZ2VfaW5wdXRfdGVuc29yID0gbW9kZWxfd2l0aG91dF9s b2FkaW5nX2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2Vy dFRydWUobGFyZ2VfaW5wdXRfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSgKKy0gICAgICAgICAgICB0b19hcnJheShs YXJnZV9pbnB1dF90ZW5zb3IsIHNlbGYudGVtcF9kaXIpLCBzZWxmLmxhcmdlX2RhdGEKKy0gICAg ICAgICkKKy0KKy0gICAgICAgIHNtYWxsX3NoYXBlX3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9h ZGluZ19leHRlcm5hbC5ncmFwaC5pbml0aWFsaXplclsxXQorLSAgICAgICAgc2VsZi5hc3NlcnRU cnVlKHNtYWxsX3NoYXBlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UoCistICAgICAgICAgICAgdG9fYXJyYXkoc21h bGxfc2hhcGVfdGVuc29yLCBzZWxmLnRlbXBfZGlyKSwgc2VsZi5zbWFsbF9kYXRhCistICAgICAg ICApCistCistCisgY2xhc3MgVGVzdE5vdEFsbG93VG9Mb2FkRXh0ZXJuYWxEYXRhT3V0c2lkZU1v ZGVsRGlyZWN0b3J5KFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSk6CisgICAgICIiIkVzc2VudGlh bCB0ZXN0IHRvIGNoZWNrIHRoYXQgb25ueCAodmFsaWRhdGUpIEMrKyBjb2RlIHdpbGwgbm90IGFs bG93IHRvIGxvYWQgZXh0ZXJuYWxfZGF0YSBvdXRzaWRlIHRoZSBtb2RlbAorICAgICBkaXJlY3Rv cnkuCitAQCAtNzk3LDE3ICsxODYsNiBAQCBjbGFzcyBUZXN0Tm90QWxsb3dUb0xvYWRFeHRlcm5h bERhdGFPdXRzaWRlTW9kZWxEaXJlY3RvcnlPbldpbmRvd3MoCisgICAgICAgICAgICAgY2hlY2tl ci5jaGVja19tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lKQorIAorIAorLWNsYXNzIFRlc3RTYXZl QWxsVGVuc29yc0FzRXh0ZXJuYWxEYXRhV2l0aFBhdGgoVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRl cm5hbERhdGEpOgorLSAgICBkZWYgZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoc2VsZikgLT4gcGF0 aGxpYi5QYXRoOgorLSAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzdXBlcigpLmdldF90ZW1w X21vZGVsX2ZpbGVuYW1lKCkpCistCistCistY2xhc3MgVGVzdEV4dGVybmFsRGF0YVRvQXJyYXlX aXRoUGF0aChUZXN0RXh0ZXJuYWxEYXRhVG9BcnJheSk6CistICAgIEBwcm9wZXJ0eQorLSAgICBk ZWYgbW9kZWxfZmlsZV9wYXRoKHNlbGYpIC0+IHBhdGhsaWIuUGF0aDoKKy0gICAgICAgIHJldHVy biBwYXRobGliLlBhdGgoc2VsZi5fbW9kZWxfZmlsZV9wYXRoKQorLQorLQorIGNsYXNzIFRlc3RG dW5jdGlvbnNBbmRTdWJHcmFwaHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgc2V0VXAo c2VsZikgLT4gTm9uZToKKyAgICAgICAgIHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRl bXBvcmFyeURpcmVjdG9yeSgpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3ZlcnNpb25fY29udmVy dGVyL2F1dG9tYXRpY19kb3duZ3JhZGVfdGVzdC5weSBiL29ubngvdGVzdC92ZXJzaW9uX2NvbnZl cnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkKK2luZGV4IGE5NGFlYTFhOS4uZjYzOWQ0 NGY4IDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyL2F1dG9tYXRpY19k b3duZ3JhZGVfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyL2F1dG9t YXRpY19kb3duZ3JhZGVfdGVzdC5weQorQEAgLTcsNyArNyw2IEBAIGltcG9ydCB1bml0dGVzdAor IAorIGltcG9ydCBhdXRvbWF0aWNfY29udmVyc2lvbl90ZXN0X2Jhc2UKKyBpbXBvcnQgbnVtcHkg YXMgbnAKKy1pbXBvcnQgcGFyYW1ldGVyaXplZAorIAorIGltcG9ydCBvbm54CisgZnJvbSBvbm54 IGltcG9ydCBoZWxwZXIKK0BAIC0yMiwzNSArMjEsNiBAQCBjbGFzcyBUZXN0QXV0b21hdGljRG93 bmdyYWRlKGF1dG9tYXRpY19jb252ZXJzaW9uX3Rlc3RfYmFzZS5UZXN0QXV0b21hdGljQ29udmVy cworICAgICBkZWYgX3Rlc3Rfb3BfZG93bmdyYWRlKHNlbGYsIG9wOiBzdHIsICphcmdzLCAqKmt3 YXJncyk6CisgICAgICAgICBzZWxmLl90ZXN0X29wX2NvbnZlcnNpb24ob3AsICphcmdzLCAqKmt3 YXJncywgaXNfdXBncmFkZT1GYWxzZSkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgIlJlZHVjZUwxIiwKKy0gICAg ICAgICAgICAiUmVkdWNlTDIiLAorLSAgICAgICAgICAgICJSZWR1Y2VMb2dTdW0iLAorLSAgICAg ICAgICAgICJSZWR1Y2VMb2dTdW1FeHAiLAorLSAgICAgICAgICAgICJSZWR1Y2VNZWFuIiwKKy0g ICAgICAgICAgICAiUmVkdWNlTWF4IiwKKy0gICAgICAgICAgICAiUmVkdWNlTWluIiwKKy0gICAg ICAgICAgICAiUmVkdWNlUHJvZCIsCistICAgICAgICAgICAgIlJlZHVjZVN1bSIsCistICAgICAg ICAgICAgIlJlZHVjZVN1bVNxdWFyZSIsCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRl c3RfcmVkdWNlX29wcyhzZWxmLCBvcCkgLT4gTm9uZToKKy0gICAgICAgICMgVE9ETzogbmVlZCB0 byBhZGQgdGVzdCBjYXNlcyBmb3IgbWlzc2luZyBheGVzIGlucHV0IHdoaWNoIGRlcGVuZHMgb24g dGhpcyBwcjoKKy0gICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL29ubngvb25ueC9wdWxsLzU2 MTMKKy0gICAgICAgIGF4ZXMgPSBoZWxwZXIubWFrZV90ZW5zb3IoCistICAgICAgICAgICAgImIi LCBvbm54LlRlbnNvclByb3RvLklOVDY0LCBkaW1zPVszXSwgdmFscz1ucC5hcnJheShbMCwgMSwg Ml0pCistICAgICAgICApCistICAgICAgICBzZWxmLl90ZXN0X29wX2Rvd25ncmFkZSgKKy0gICAg ICAgICAgICBvcCwKKy0gICAgICAgICAgICBmcm9tX29wc2V0PTEzLAorLSAgICAgICAgICAgIGlu cHV0X3NoYXBlcz1bWzMsIDQsIDVdLCBbM11dLAorLSAgICAgICAgICAgIG91dHB1dF9zaGFwZXM9 W1sxLCAxLCAxXV0sCistICAgICAgICAgICAgaW5wdXRfdHlwZXM9W29ubnguVGVuc29yUHJvdG8u RkxPQVQsIG9ubnguVGVuc29yUHJvdG8uSU5UNjRdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVy PVtheGVzXSwKKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3RfZGZ0MjBfbm9fYXhpcyhzZWxm KSAtPiBOb25lOgorICAgICAgICAgc2VsZi5fdGVzdF9tb2RlbF9jb252ZXJzaW9uKAorICAgICAg ICAgICAgIHRvX29wc2V0PTE5LAorZGlmZiAtLWdpdCBhL29ubngvdGVzdC92ZXJzaW9uX2NvbnZl cnRlcl90ZXN0LnB5IGIvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyX3Rlc3QucHkKK2luZGV4 IGE3NWVkY2RlNy4uZmQwNTc1MThmIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3ZlcnNpb25fY29u dmVydGVyX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5 CitAQCAtMTAsNyArMTAsNiBAQCBpbXBvcnQgdGVtcGZpbGUKKyBpbXBvcnQgdW5pdHRlc3QKKyAK KyBpbXBvcnQgbnVtcHkgYXMgbnAKKy1pbXBvcnQgcGFyYW1ldGVyaXplZAorIAorIGltcG9ydCBv bm54LnZlcnNpb25fY29udmVydGVyCisgZnJvbSBvbm54IGltcG9ydCAoCitAQCAtMjExNSwxNjkg KzIxMTQsNiBAQCBjbGFzcyBUZXN0VmVyc2lvbkNvbnZlcnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6 CisgICAgICAgICBhc3NlcnQgY29udmVydGVkX21vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRl WzBdLmkgPT0gMgorICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9tb2RlbC5vcHNldF9pbXBvcnRb MF0udmVyc2lvbiA9PSAxMgorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4 cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoInBlcl90ZW5zb3IiLCAoMTYsIDMpLCAo MSwpLCBOb25lLCBOb25lLCBOb25lLCBUZW5zb3JQcm90by5JTlQ4LCBUcnVlKSwKKy0gICAgICAg ICAgICAoCistICAgICAgICAgICAgICAgICJwZXJfYXhpc19ub25lX2Jsb2NrX3NoYXBlIiwKKy0g ICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAgICAgKDE2LCksCistICAgICAg ICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIE5v bmUsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDgsCistICAgICAgICAgICAgICAg IFRydWUsCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAg ICJwZXJfYXhpc196ZXJvX2Jsb2NrX3NoYXBlIiwKKy0gICAgICAgICAgICAgICAgKDE2LCAzKSwK Ky0gICAgICAgICAgICAgICAgKDE2LCksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAg ICAgICAgIDAsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFRlbnNv clByb3RvLklOVDgsCistICAgICAgICAgICAgICAgIFRydWUsCistICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJwZXJfdGVuc29yX3Bvc2l0aXZlX2Jsb2Nr X3NoYXBlIiwKKy0gICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAgICAgKDEs KSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAg ICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKKy0gICAgICAg ICAgICAgICAgRmFsc2UsCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAg ICAgICAgICAgICJwZXJfYXhpc19wb3NpdGl2ZV9ibG9ja19zaGFwZSIsCistICAgICAgICAgICAg ICAgICgxNiwgMyksCistICAgICAgICAgICAgICAgICgxNiwpLAorLSAgICAgICAgICAgICAgICAx LAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAg ICAgICAgICBUZW5zb3JQcm90by5JTlQ4LAorLSAgICAgICAgICAgICAgICBGYWxzZSwKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgICAgICgiYmxvY2tlZF8yZCIsICgxNiwgMyksICg0LCAzKSwg MCwgNCwgTm9uZSwgVGVuc29yUHJvdG8uSU5UOCwgRmFsc2UpLAorLSAgICAgICAgICAgICgiYmxv Y2tlZF8zZCIsICg0LCAzLCAzMiksICg0LCAzLCA4KSwgMiwgNCwgTm9uZSwgVGVuc29yUHJvdG8u SU5UOCwgRmFsc2UpLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgInBlcl9heGlz X291dHB1dF9kdHlwZSIsCistICAgICAgICAgICAgICAgICgxNiwgMyksCistICAgICAgICAgICAg ICAgICgxNiwpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICBOb25lLAor LSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVDhFNE0zRk4sCistICAgICAgICAgICAg ICAgIE5vbmUsCistICAgICAgICAgICAgICAgIEZhbHNlLAorLSAgICAgICAgICAgICksCistICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfdW5zdXBwb3J0ZWRfdHlwZSIs CistICAgICAgICAgICAgICAgICgxNiwgMyksCistICAgICAgICAgICAgICAgICgxNiwpLAorLSAg ICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAg ICBOb25lLAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UMTYsCistICAgICAgICAg ICAgICAgIEZhbHNlLAorLSAgICAgICAgICAgICksCistICAgICAgICBdCistICAgICkKKy0gICAg ZGVmIHRlc3RfcXVhbnRpemVfMjFfMjAoCistICAgICAgICBzZWxmLAorLSAgICAgICAgXzogc3Ry LAorLSAgICAgICAgeF9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAorLSAgICAgICAgc2NhbGVfc2hh cGU6IHR1cGxlW2ludCwgLi4uXSwKKy0gICAgICAgIGF4aXM6IGludCwKKy0gICAgICAgIGJsb2Nr X3NpemU6IGludCwKKy0gICAgICAgIG91dHB1dF9kdHlwZTogaW50IHwgTm9uZSwKKy0gICAgICAg IHplcm9fcG9pbnRfZHR5cGU6IGludCB8IE5vbmUsCistICAgICAgICBjb21wYXRpYmxlOiBib29s LAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBkZWYgdGVzdCgKKy0gICAgICAgICAgICBpbnB1 dF9zaGFwZSwgc2NhbGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUsIG91dHB1dF9kdHlwZSwgemVy b19wb2ludF9kdHlwZQorLSAgICAgICAgKSAtPiBOb25lOgorLSAgICAgICAgICAgIG5vZGVzID0g WworLSAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAg ICAgIlF1YW50aXplTGluZWFyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJTIl0sCist ICAgICAgICAgICAgICAgICAgICBbIlkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGF4aXM9YXhp cywKKy0gICAgICAgICAgICAgICAgICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwKKy0gICAgICAg ICAgICAgICAgICAgIG91dHB1dF9kdHlwZT1vdXRwdXRfZHR5cGUsCistICAgICAgICAgICAgICAg ICkKKy0gICAgICAgICAgICBdCistICAgICAgICAgICAgaW5wdXRzID0gWworLSAgICAgICAgICAg ICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FU LCBpbnB1dF9zaGFwZSksCistICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJTIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX3NoYXBlKSwKKy0gICAgICAgICAg ICBdCistICAgICAgICAgICAgaWYgemVyb19wb2ludF9kdHlwZToKKy0gICAgICAgICAgICAgICAg aW5wdXRzLmFwcGVuZCgKKy0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJaUCIsIHplcm9fcG9pbnRfZHR5cGUsIHNjYWxlX3NoYXBlKQorLSAgICAgICAg ICAgICAgICApCistICAgICAgICAgICAgICAgIG5vZGVzWzBdLmlucHV0LmFwcGVuZCgiWlAiKQor LSAgICAgICAgICAgIG91dHB1dF90eXBlXyA9IG91dHB1dF9kdHlwZSBvciB6ZXJvX3BvaW50X2R0 eXBlCistICAgICAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICAgICAgbm9kZXMsCistICAgICAgICAgICAgICAgICJ0ZXN0IiwKKy0gICAgICAgICAgICAgICAg aW5wdXRzLAorLSAgICAgICAgICAgICAgICBbaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBvdXRwdXRfdHlwZV8sIGlucHV0X3NoYXBlKV0sCistICAgICAgICAgICAgKQorLSAgICAg ICAgICAgIF8gPSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0 aWQoIiIsIDIxKSwgMjApCistCistICAgICAgICBjb250ZXh0X21hbmFnZXIgPSAoCistICAgICAg ICAgICAgY29udGV4dGxpYi5udWxsY29udGV4dCgpIGlmIGNvbXBhdGlibGUgZWxzZSBzZWxmLmFz c2VydFJhaXNlcyhSdW50aW1lRXJyb3IpCistICAgICAgICApCistICAgICAgICB3aXRoIGNvbnRl eHRfbWFuYWdlcjoKKy0gICAgICAgICAgICB0ZXN0KHhfc2hhcGUsIHNjYWxlX3NoYXBlLCBheGlz LCBibG9ja19zaXplLCBvdXRwdXRfZHR5cGUsIHplcm9fcG9pbnRfZHR5cGUpCistCistICAgIEBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAg ICAgICgicGVyX3RlbnNvciIsICgxNiwgMyksICgxLCksIE5vbmUsIE5vbmUsIFRydWUpLAorLSAg ICAgICAgICAgICgicGVyX2F4aXNfbm9uZV9ibG9ja19zaGFwZSIsICgxNiwgMyksICgxNiwpLCAx LCBOb25lLCBUcnVlKSwKKy0gICAgICAgICAgICAoInBlcl9heGlzX3plcm9fYmxvY2tfc2hhcGUi LCAoMTYsIDMpLCAoMTYsKSwgMSwgMCwgVHJ1ZSksCistICAgICAgICAgICAgKCJwZXJfdGVuc29y X3Bvc2l0aXZlX2Jsb2NrX3NoYXBlIiwgKDE2LCAzKSwgKDEsKSwgMSwgMiwgRmFsc2UpLAorLSAg ICAgICAgICAgICgicGVyX2F4aXNfcG9zaXRpdmVfYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMTYs KSwgMSwgMiwgRmFsc2UpLAorLSAgICAgICAgICAgICgiYmxvY2tlZF8yZCIsICgxNiwgMyksICg0 LCAzKSwgMCwgNCwgRmFsc2UpLAorLSAgICAgICAgICAgICgiYmxvY2tlZF8zZCIsICg0LCAzLCAz MiksICg0LCAzLCA4KSwgMiwgNCwgRmFsc2UpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRl ZiB0ZXN0X2RlcXVhbnRpemVfMjFfMjAoCistICAgICAgICBzZWxmLAorLSAgICAgICAgXzogc3Ry LAorLSAgICAgICAgeV9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAorLSAgICAgICAgc2NhbGVfc2hh cGU6IHR1cGxlW2ludCwgLi4uXSwKKy0gICAgICAgIGF4aXM6IGludCwKKy0gICAgICAgIGJsb2Nr X3NpemU6IGludCwKKy0gICAgICAgIGNvbXBhdGlibGU6IGJvb2wsCistICAgICkgLT4gTm9uZToK Ky0gICAgICAgIGRlZiB0ZXN0KGlucHV0X3NoYXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tf c2l6ZSkgLT4gTm9uZToKKy0gICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAg aGVscGVyLm1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJEZXF1YW50aXplTGluZWFy IiwKKy0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJTIiwgIlpQIl0sCistICAgICAgICAgICAg ICAgICAgICBbIlkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGF4aXM9YXhpcywKKy0gICAgICAg ICAgICAgICAgICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwKKy0gICAgICAgICAgICAgICAgKQor LSAgICAgICAgICAgIF0KKy0gICAgICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dyYXBoKAor LSAgICAgICAgICAgICAgICBub2RlcywKKy0gICAgICAgICAgICAgICAgInRlc3QiLAorLSAgICAg ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWCIsIFRlbnNvclByb3RvLklOVDgsIGlucHV0X3NoYXBlKSwKKy0gICAgICAgICAg ICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJTIiwgVGVuc29yUHJvdG8u RkxPQVQsIHNjYWxlX3NoYXBlKSwKKy0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJaUCIsIFRlbnNvclByb3RvLklOVDgsIHNjYWxlX3NoYXBlKSwKKy0g ICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW2hlbHBlci5tYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKV0sCistICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIF8gPSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5t YWtlX29wZXJhdG9yc2V0aWQoIiIsIDIxKSwgMjApCistCistICAgICAgICBjb250ZXh0X21hbmFn ZXIgPSAoCistICAgICAgICAgICAgY29udGV4dGxpYi5udWxsY29udGV4dCgpIGlmIGNvbXBhdGli bGUgZWxzZSBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpCistICAgICAgICApCistICAg ICAgICB3aXRoIGNvbnRleHRfbWFuYWdlcjoKKy0gICAgICAgICAgICB0ZXN0KHlfc2hhcGUsIHNj YWxlX3NoYXBlLCBheGlzLCBibG9ja19zaXplKQorLQorICAgICBkZWYgdGVzdF9leHRlcm5hbF9k YXRhX3ZlcnNpb25fY29udmVyc2lvbihzZWxmKSAtPiBOb25lOgorICAgICAgICAgd2l0aCB0ZW1w ZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKKyAgICAgICAgICAgICAjIENy ZWF0ZSBhIG1vZGVsIHdpdGggZXh0ZXJuYWwgZGF0YQorQEAgLTI0MTMsNzYgKzIyNDksNiBAQCBj bGFzcyBUZXN0VmVyc2lvbkNvbnZlcnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAg ICAgW2hlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXQiLCBkdHlwZSwgZGF0YV9zKV0s CisgICAgICAgICApCisgCistICAgICMgU2NhdHRlciAxNiAtPiAxNTogVHlwZVJlc3RyaWN0aW9u IChiZmxvYXQxNikgKyBSZW1vdmVBdHRyaWJ1dGUgKHJlZHVjdGlvbikKKy0gICAgQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoWygiU2NhdHRlckVsZW1lbnRzIiwpLCAoIlNjYXR0 ZXJORCIsKV0pCistICAgIGRlZiB0ZXN0X3NjYXR0ZXJfMTZfMTVfc3VjY2VzcyhzZWxmLCBvcF9u YW1lOiBzdHIpIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vfc2NhdHRlcl9n cmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5GTE9BVCwgIm5vbmUiKQorLSAgICAgICAgY29udmVy dGVkID0gc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIi LCAxNiksIDE1KQorLSAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZC5vcHNldF9pbXBvcnRbMF0udmVy c2lvbiA9PSAxNQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZChb KCJTY2F0dGVyRWxlbWVudHMiLCksICgiU2NhdHRlck5EIiwpXSkKKy0gICAgZGVmIHRlc3Rfc2Nh dHRlcl8xNl8xNV9iZmxvYXQxNl9mYWlscyhzZWxmLCBvcF9uYW1lOiBzdHIpIC0+IE5vbmU6Cist ICAgICAgICBkZWYgdGVzdCgpIC0+IE5vbmU6CistICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX3NjYXR0ZXJfZ3JhcGgob3BfbmFtZSwgVGVuc29yUHJvdG8uQkZMT0FUMTYpCistICAgICAg ICAgICAgc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIi LCAxNiksIDE1KQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB0 ZXN0KQorLQorLSAgICAjIE9wc2V0IDE2IGFkZGVkIHJlZHVjdGlvbiAnYWRkJyBhbmQgJ211bCc7 IDE2IC0+IDE1IG9ubHkgYWxsb3dzICdub25lJworLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50 cyIsICJhZGQiKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsICJtdWwiKSwKKy0g ICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJhZGQiKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJO RCIsICJtdWwiKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9zY2F0dGVyXzE2 XzE1X3JlZHVjdGlvbl9hZGRfbXVsX2ZhaWxzKAorLSAgICAgICAgc2VsZiwgb3BfbmFtZTogc3Ry LCByZWR1Y3Rpb246IHN0cgorLSAgICApIC0+IE5vbmU6CistICAgICAgICBkZWYgdGVzdCgpIC0+ IE5vbmU6CistICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX3NjYXR0ZXJfZ3JhcGgob3Bf bmFtZSwgVGVuc29yUHJvdG8uRkxPQVQsIHJlZHVjdGlvbikKKy0gICAgICAgICAgICBzZWxmLl9j b252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0aWQoIiIsIDE2KSwgMTUpCist CistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHRlc3QpCistCistICAg ICMgU2NhdHRlciAxOCAtPiAxNzogcmVqZWN0IHJlZHVjdGlvbiAibWF4IiAvICJtaW4iCistICAg IEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAg ICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgIm1heCIpLAorLSAgICAgICAgICAgICgiU2NhdHRl ckVsZW1lbnRzIiwgIm1pbiIpLAorLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgIm1heCIpLAor LSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgIm1pbiIpLAorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X3NjYXR0ZXJfMThfMTdfcmVkdWN0aW9uX21heF9taW5fZmFpbHMoCistICAg ICAgICBzZWxmLCBvcF9uYW1lOiBzdHIsIHJlZHVjdGlvbjogc3RyCistICAgICkgLT4gTm9uZToK Ky0gICAgICAgIGRlZiB0ZXN0KCkgLT4gTm9uZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYu X21ha2Vfc2NhdHRlcl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5GTE9BVCwgcmVkdWN0aW9u KQorLSAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0 b3JzZXRpZCgiIiwgMTgpLCAxNykKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRp bWVFcnJvciwgdGVzdCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBh bmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCBOb25lKSwK Ky0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsICJub25lIiksCistICAgICAgICAgICAg KCJTY2F0dGVyRWxlbWVudHMiLCAiYWRkIiksCistICAgICAgICAgICAgKCJTY2F0dGVyRWxlbWVu dHMiLCAibXVsIiksCistICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCBOb25lKSwKKy0gICAgICAg ICAgICAoIlNjYXR0ZXJORCIsICJub25lIiksCistICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAi YWRkIiksCistICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAibXVsIiksCistICAgICAgICBdCist ICAgICkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcl8xOF8xN19hbGxvd2VkX3JlZHVjdGlvbnNfc3Vj Y2VzcygKKy0gICAgICAgIHNlbGYsIG9wX25hbWU6IHN0ciwgcmVkdWN0aW9uOiBzdHIgfCBOb25l CistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9zY2F0dGVyX2dy YXBoKG9wX25hbWUsIFRlbnNvclByb3RvLkZMT0FULCByZWR1Y3Rpb24pCistICAgICAgICBjb252 ZXJ0ZWQgPSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0aWQo IiIsIDE4KSwgMTcpCistICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKGNvbnZlcnRlZCkKKy0K KyAKKyBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICB1bml0dGVzdC5tYWluKCkKK2Rp ZmYgLS1naXQgYS9yZXF1aXJlbWVudHMtZGV2LnR4dCBiL3JlcXVpcmVtZW50cy1kZXYudHh0Citp bmRleCBlMzZlY2Q2ZDkuLjdlNGEwY2NkNCAxMDA2NDQKKy0tLSBhL3JlcXVpcmVtZW50cy1kZXYu dHh0CisrKysgYi9yZXF1aXJlbWVudHMtZGV2LnR4dAorQEAgLTEsNiArMSw1IEBACisgYnVpbGQK KyBudW1weQorLXBhcmFtZXRlcml6ZWQKKyBwcm90b2J1ZgorIHB5dGVzdAorIHB5dGVzdC1jb3YK Ky0tIAorMi41NC4wCisKCmRpZmYgLS1naXQgYS8wMDAzLUFkZC1maXhlcy1mb3ItdXNlLXdpdGgt b25ueHJ1bnRpbWUucGF0Y2ggYi8wMDAzLUFkZC1maXhlcy1mb3ItdXNlLXdpdGgtb25ueHJ1bnRp bWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYmM2OGUuLjAwMDAwMDAK LS0tIGEvMDAwMy1BZGQtZml4ZXMtZm9yLXVzZS13aXRoLW9ubnhydW50aW1lLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSA5ODA5Zjc3NzkyNTE3ZDBhY2UyODc0YTg0 YTE4MWU4ZmUzNzY2ZDhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxlamFuZHJv IEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXpheWxsb25AZ21haWwuY29tPgotRGF0ZTogU2F0LCAy NCBGZWIgMjAyNCAxNDo1MzozMyArMDEwMAotU3ViamVjdDogW1BBVENIIDQvNF0gQWRkIGZpeGVz IGZvciB1c2Ugd2l0aCBvbm54cnVudGltZQotCi0tLS0KLSBvbm54L2RlZnMvc2NoZW1hLmNjICAg IHwgMTQgKysrKysrKysrKysrKysKLSBvbm54L29ubnhydW50aW1lX2ZpeC5oIHwgMTQgKysrKysr KysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9k ZSAxMDA2NDQgb25ueC9vbm54cnVudGltZV9maXguaAotCi1kaWZmIC0tZ2l0IGEvb25ueC9kZWZz L3NjaGVtYS5jYyBiL29ubngvZGVmcy9zY2hlbWEuY2MKLWluZGV4IDc0YmQwYTYzMC4uNTczZDA5 MDE4IDEwMDY0NAotLS0tIGEvb25ueC9kZWZzL3NjaGVtYS5jYwotKysrIGIvb25ueC9kZWZzL3Nj aGVtYS5jYwotQEAgLTIxLDggKzIxLDE5IEBACi0gCi0gI2luY2x1ZGUgIm9ubngvY29tbW9uL2Fz c2VydGlvbnMuaCIKLSAjaW5jbHVkZSAib25ueC9kZWZzL3BhcnNlci5oIgotKyNpbmNsdWRlICJv bm54L29ubnhydW50aW1lX2ZpeC5oIgotIAotIG5hbWVzcGFjZSBPTk5YX05BTUVTUEFDRSB7Ci0r Ci0rYm9vbCBPTk5YUnVudGltZUZpeDo6X3N0YXRpY19yZWdpc3RyYXRpb25fZGlzYWJsZWQgPSBm YWxzZTsKLStib29sIE9OTlhSdW50aW1lRml4Ojppc1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2FibGVk KCkgewotKyAgcmV0dXJuIF9zdGF0aWNfcmVnaXN0cmF0aW9uX2Rpc2FibGVkOwotK30KLSsKLSt2 b2lkIE9OTlhSdW50aW1lRml4OjpkaXNhYmxlU3RhdGljUmVnaXN0cmF0aW9uKCkgewotKyAgX3N0 YXRpY19yZWdpc3RyYXRpb25fZGlzYWJsZWQgPSB0cnVlOwotK30KLSsKLSAvLyAtMSBtZWFucyBP Tk5YIHNjaGVtYSBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0Ci0gLy8gMCBtZWFucyBhbGwgdmVyc2lv bnMgb2YgT05OWCBzY2hlbWEgaGF2ZSBiZWVuIGxvYWRlZAotIC8vIE90aGVyIHBvc2l0aXZlIGlu dGVnZXIgbWVhbnMgdGhlIE9OTlggc2NoZW1hcyBmb3IgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIGhh dmUgYmVlbiBsb2FkZWQKLUBAIC0xMDkxLDYgKzExMDIsOSBAQCBPcE5hbWVfRG9tYWluX1ZlcnNp b25fU2NoZW1hX01hcCYgT3BTY2hlbWFSZWdpc3RyeTo6bWFwKCkgewotICAgY2xhc3MgU2NoZW1h c1JlZ2lzdGVyZXIgewotICAgIHB1YmxpYzoKLSAgICAgU2NoZW1hc1JlZ2lzdGVyZXIoKSB7Ci0r ICAgICAgLy8gQ2hlY2sgaWYgc3RhdGljIHJlZ2lzdHJhdGlvbiBpcyBhY3R1YWxseSBkaXNhYmxl ZAotKyAgICAgIGlmKE9OTlhSdW50aW1lRml4Ojppc1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2FibGVk KCkpIHJldHVybjsKLSsKLSAgICAgICAvLyBJbiBkZWJ1ZyBidWlsZHMsIHRoZSBudW1iZXIgb2Yg c2NoZW1hIHJlZ2lzdGVyZWQgaW4gdGhpcyBjb25zdHJ1Y3RvcgotICAgICAgIC8vIGlzIGNvbXBh cmVkIGFnYWluc3QgdGhlIG51bWJlciBvZiBjYWxscyB0byBzY2hlbWEgcmVnaXN0cmF0aW9uIG1h Y3Jvcy4KLSAjaWZuZGVmIE5ERUJVRwotZGlmZiAtLWdpdCBhL29ubngvb25ueHJ1bnRpbWVfZml4 LmggYi9vbm54L29ubnhydW50aW1lX2ZpeC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMDAwLi4yNDk1YjkzMTAKLS0tLSAvZGV2L251bGwKLSsrKyBiL29ubngvb25ueHJ1bnRp bWVfZml4LmgKLUBAIC0wLDAgKzEsMTQgQEAKLSsjcHJhZ21hIG9uY2UKLSsKLStuYW1lc3BhY2Ug T05OWF9OQU1FU1BBQ0UgewotKwotK2NsYXNzIE9OTlhSdW50aW1lRml4IHsKLStwdWJsaWM6Ci0r ICBzdGF0aWMgYm9vbCBpc1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2FibGVkKCk7Ci0rICBzdGF0aWMg dm9pZCBkaXNhYmxlU3RhdGljUmVnaXN0cmF0aW9uKCk7Ci0rCi0rcHJpdmF0ZToKLSsgIHN0YXRp YyBib29sIF9zdGF0aWNfcmVnaXN0cmF0aW9uX2Rpc2FibGVkOwotK307Ci0rCi0rfSAvLyBuYW1l c3BhY2UgT05OWF9OQU1FU1BBQ0UKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDA0LVJl bW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoIGIvMDAwNC1SZW1vdmUt cHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNDBlMmM4NS4uMDAwMDAwMAotLS0gYS8wMDA0LVJlbW92ZS1weXRob24tcGFy YW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTY4MSArMCww IEBACi1Gcm9tIDMxNTYwZWE5ZjUwZDZjY2I4MTZlNWZlZjUzN2JhM2U0NzcyMDFhYTEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUBmZWRvcmFw cm9qZWN0Lm9yZz4KLURhdGU6IFRodSwgMTUgSmFuIDIwMjYgMTc6MzI6NTggLTAzMDAKLVN1Ympl Y3Q6IFtQQVRDSCA0LzRdIFJlbW92ZSBweXRob24tcGFyYW1ldGVyaXplZCBkZXBlbmRlbmN5Ci0K LS0tLQotIG9ubngvdGVzdC9iYXNpY190ZXN0LnB5ICAgICAgICAgICAgICAgICAgICAgICB8ICAg OTIgLQotIG9ubngvdGVzdC9oZWxwZXJfdGVzdC5weSAgICAgICAgICAgICAgICAgICAgICB8ICAx MDAgLQotIG9ubngvdGVzdC9udW1weV9oZWxwZXJfdGVzdC5weSAgICAgICAgICAgICAgICB8ICAg NjMgLQotIG9ubngvdGVzdC9wYXJzZXJfdGVzdC5weSAgICAgICAgICAgICAgICAgICAgICB8ICAx ODIgLS0KLSBvbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5ICAgICAgfCAg MTMwIC0KLSBvbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl90ZXN0LnB5ICAgICAgICAgfCAg NzcxIC0tLS0tCi0gb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5ICAgICAgICAgICAgICAgICAgICAg IHwgIDE5NCAtLQotIG9ubngvdGVzdC9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weSAgICAgICAgICAg ICB8IDI1ODkgKy0tLS0tLS0tLS0tLS0tLS0KLSBvbm54L3Rlc3QvdGVzdF9iYWNrZW5kX3JlZmVy ZW5jZS5weSAgICAgICAgICAgfCAgICA5ICsKLSBvbm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRh LnB5ICAgICAgICAgICAgICAgfCAgNjI3IC0tLS0KLSBvbm54L3Rlc3QvdG9vbHNfdGVzdC5weSAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTE3IC0KLSAuLi4vYXV0b21hdGljX2Rvd25ncmFkZV90 ZXN0LnB5ICAgICAgICAgICAgICAgfCAgIDMwIC0KLSBvbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0 ZXJfdGVzdC5weSAgICAgICAgICAgfCAgMTY0IC0tCi0gcmVxdWlyZW1lbnRzLWRldi50eHQgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCi0gcmVxdWlyZW1lbnRzLXJlbGVhc2UudHh0 ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCi0gcmVxdWlyZW1lbnRzLnR4dCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCi0gMTYgZmlsZXMgY2hhbmdlZCwgMTMwIGlu c2VydGlvbnMoKyksIDQ5NDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9vbm54L3Rlc3Qv YmFzaWNfdGVzdC5weSBiL29ubngvdGVzdC9iYXNpY190ZXN0LnB5Ci1pbmRleCAzZGU4YTkxZDYu LmNhNTcxOWJhNiAxMDA2NDQKLS0tLSBhL29ubngvdGVzdC9iYXNpY190ZXN0LnB5Ci0rKysgYi9v bm54L3Rlc3QvYmFzaWNfdGVzdC5weQotQEAgLTExLDcgKzExLDYgQEAgaW1wb3J0IHVuaXR0ZXN0 Ci0gCi0gaW1wb3J0IGdvb2dsZS5wcm90b2J1Zi5tZXNzYWdlCi0gaW1wb3J0IGdvb2dsZS5wcm90 b2J1Zi50ZXh0X2Zvcm1hdAotLWltcG9ydCBwYXJhbWV0ZXJpemVkCi0gCi0gaW1wb3J0IG9ubngK LSBmcm9tIG9ubnggaW1wb3J0IHNlcmlhbGl6YXRpb24KLUBAIC0zNSw5NyArMzQsNiBAQCBkZWYg X3NpbXBsZV90ZW5zb3IoKSAtPiBvbm54LlRlbnNvclByb3RvOgotICAgICByZXR1cm4gdGVuc29y Ci0gCi0gCi0tQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKLS0gICAgWwotLSAg ICAgICAgeyJmb3JtYXQiOiAicHJvdG9idWYifSwKLS0gICAgICAgIHsiZm9ybWF0IjogInRleHRw cm90byJ9LAotLSAgICAgICAgeyJmb3JtYXQiOiAianNvbiJ9LAotLSAgICAgICAgeyJmb3JtYXQi OiAib25ueHR4dCJ9LAotLSAgICBdCi0tKQotLWNsYXNzIFRlc3RJTyh1bml0dGVzdC5UZXN0Q2Fz ZSk6Ci0tICAgIGZvcm1hdDogc3RyCi0tCi0tICAgIGRlZiB0ZXN0X2xvYWRfbW9kZWxfd2hlbl9p bnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25lOgotLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21v ZGVsKCkKLS0gICAgICAgIHByb3RvX3N0cmluZyA9IHNlcmlhbGl6YXRpb24ucmVnaXN0cnkuZ2V0 KHNlbGYuZm9ybWF0KS5zZXJpYWxpemVfcHJvdG8ocHJvdG8pCi0tICAgICAgICBsb2FkZWRfcHJv dG8gPSBvbm54LmxvYWRfbW9kZWxfZnJvbV9zdHJpbmcocHJvdG9fc3RyaW5nLCBmb3JtYXQ9c2Vs Zi5mb3JtYXQpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8p Ci0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9oYXNfcmVh ZF9mdW5jdGlvbihzZWxmKSAtPiBOb25lOgotLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVs KCkKLS0gICAgICAgICMgV2hlbiB0aGUgcHJvdG8gaXMgYSBieXRlcyByZXByZXNlbnRhdGlvbiBw cm92aWRlZCB0byBgc2F2ZV9tb2RlbGAsCi0tICAgICAgICAjIGl0IHNob3VsZCBhbHdheXMgYmUg YSBzZXJpYWxpemVkIGJpbmFyeSBwcm90b2J1ZiByZXByZXNlbnRhdGlvbi4gQWthLiBmb3JtYXQ9 InByb3RvYnVmIgotLSAgICAgICAgIyBUaGUgc2F2ZWQgZmlsZSBmb3JtYXQgaXMgc3BlY2lmaWVk IGJ5IHRoZSBgZm9ybWF0YCBhcmd1bWVudC4KLS0gICAgICAgIHByb3RvX3N0cmluZyA9IHNlcmlh bGl6YXRpb24ucmVnaXN0cnkuZ2V0KCJwcm90b2J1ZiIpLnNlcmlhbGl6ZV9wcm90byhwcm90bykK LS0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChwcm90 b19zdHJpbmcsIGYsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIGxvYWRlZF9wcm90byA9 IG9ubngubG9hZF9tb2RlbChpby5CeXRlc0lPKGYuZ2V0dmFsdWUoKSksIGZvcm1hdD1zZWxmLmZv cm1hdCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0K LS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF9tb2RlbF93aGVuX2lucHV0X2lzX2ZpbGVfbmFt ZShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKLS0gICAg ICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6Ci0tICAg ICAgICAgICAgbW9kZWxfcGF0aCA9IG9zLnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9ubngi KQotLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0 PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2Rl bChtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9s b2FkX21vZGVsX3doZW5faW5wdXRfaXNfcGF0aGxpa2Uoc2VsZikgLT4gTm9uZToKLS0gICAgICAg IHByb3RvID0gX3NpbXBsZV9tb2RlbCgpCi0tICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFy eURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgotLSAgICAgICAgICAgIG1vZGVsX3BhdGggPSBwYXRo bGliLlBhdGgodGVtcF9kaXIsICJtb2RlbC5vbm54IikKLS0gICAgICAgICAgICBvbm54LnNhdmVf bW9kZWwocHJvdG8sIG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgICAg ICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYu Zm9ybWF0KQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90 bykKLS0KLS0KLS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0t ICAgICAgICB7ImZvcm1hdCI6ICJwcm90b2J1ZiJ9LAotLSAgICAgICAgeyJmb3JtYXQiOiAidGV4 dHByb3RvIn0sCi0tICAgICAgICB7ImZvcm1hdCI6ICJqc29uIn0sCi0tICAgICAgICAjIFRoZSBv bm54dHh0IGZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0IHNhdmluZy9sb2FkaW5nIHRlbnNvcnMgeWV0 Ci0tICAgIF0KLS0pCi0tY2xhc3MgVGVzdElPVGVuc29yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0g ICAgIiIiVGVzdCBsb2FkaW5nIGFuZCBzYXZpbmcgb2YgVGVuc29yUHJvdG8uIiIiCi0tCi0tICAg IGZvcm1hdDogc3RyCi0tCi0tICAgIGRlZiB0ZXN0X2xvYWRfdGVuc29yX3doZW5faW5wdXRfaXNf Ynl0ZXMoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3IoKQot LSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5nZXQoc2VsZi5m b3JtYXQpLnNlcmlhbGl6ZV9wcm90byhwcm90bykKLS0gICAgICAgIGxvYWRlZF9wcm90byA9IG9u bngubG9hZF90ZW5zb3JfZnJvbV9zdHJpbmcocHJvdG9fc3RyaW5nLCBmb3JtYXQ9c2VsZi5mb3Jt YXQpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCi0tCi0t ICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfdGVuc29yX3doZW5faW5wdXRfaGFzX3JlYWRfZnVu Y3Rpb24oc2VsZikgLT4gTm9uZToKLS0gICAgICAgICMgVGVzdCBpZiBpbnB1dCBoYXMgYSByZWFk IGZ1bmN0aW9uCi0tICAgICAgICBwcm90byA9IF9zaW1wbGVfdGVuc29yKCkKLS0gICAgICAgIGYg PSBpby5CeXRlc0lPKCkKLS0gICAgICAgIG9ubnguc2F2ZV90ZW5zb3IocHJvdG8sIGYsIGZvcm1h dD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3Io aW8uQnl0ZXNJTyhmLmdldHZhbHVlKCkpLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCi0tCi0tICAgIGRlZiB0ZXN0X3Nh dmVfYW5kX2xvYWRfdGVuc29yX3doZW5faW5wdXRfaXNfZmlsZV9uYW1lKHNlbGYpIC0+IE5vbmU6 Ci0tICAgICAgICAjIFRlc3QgaWYgaW5wdXQgaXMgYSBmaWxlIG5hbWUKLS0gICAgICAgIHByb3Rv ID0gX3NpbXBsZV90ZW5zb3IoKQotLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJl Y3RvcnkoKSBhcyB0ZW1wX2RpcjoKLS0gICAgICAgICAgICBtb2RlbF9wYXRoID0gb3MucGF0aC5q b2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCi0tICAgICAgICAgICAgb25ueC5zYXZlX3RlbnNv cihwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIGxv YWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3IobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9y bWF0KQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykK LS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9pc19wYXRo bGlrZShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgIyBUZXN0IGlmIGlucHV0IGlzIGEgZmlsZSBu YW1lCi0tICAgICAgICBwcm90byA9IF9zaW1wbGVfdGVuc29yKCkKLS0gICAgICAgIHdpdGggdGVt cGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6Ci0tICAgICAgICAgICAgbW9k ZWxfcGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQotLSAgICAgICAg ICAgIG9ubnguc2F2ZV90ZW5zb3IocHJvdG8sIG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1h dCkKLS0gICAgICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfdGVuc29yKG1vZGVsX3Bh dGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBy b3RvLCBsb2FkZWRfcHJvdG8pCi0tCi0tCi0gY2xhc3MgVGVzdFNhdmVBbmRMb2FkRmlsZUV4dGVu c2lvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICBkZWYgdGVzdF9zYXZlX21vZGVsX3BpY2tz X2NvcnJlY3RfZm9ybWF0X2Zyb21fZXh0ZW5zaW9uKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBw cm90byA9IF9zaW1wbGVfbW9kZWwoKQotZGlmZiAtLWdpdCBhL29ubngvdGVzdC9oZWxwZXJfdGVz dC5weSBiL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQotaW5kZXggMmIzOGU1MmM3Li5lY2IzZDM0 ZTcgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3QvaGVscGVyX3Rlc3QucHkKLSsrKyBiL29ubngvdGVz dC9oZWxwZXJfdGVzdC5weQotQEAgLTExLDcgKzExLDYgQEAgaW1wb3J0IHVuaXR0ZXN0Ci0gZnJv bSB0eXBpbmcgaW1wb3J0IEFueQotIAotIGltcG9ydCBudW1weSBhcyBucAotLWltcG9ydCBwYXJh bWV0ZXJpemVkCi0gaW1wb3J0IHB5dGVzdAotIGltcG9ydCB2ZXJzaW9uX3V0aWxzCi0gCi1AQCAt NjU2LDgzICs2NTUsNiBAQCBjbGFzcyBUZXN0SGVscGVyVGVuc29yRnVuY3Rpb25zKHVuaXR0ZXN0 LlRlc3RDYXNlKToKLSAgICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJheSh5KQotICAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoQ2FzdC5ldmFsKGV4cGVjdGVkLCB0bz1UZW5z b3JQcm90by5GTE9BVDhFNU0yRk5VWiksIHlucCkgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQot IAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGl0 ZXJ0b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29y UHJvdG8uSU5UNCksCi0tICAgICAgICAgICAgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyks ICgxLCksICgyKioxMCwpKSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBAdW5pdHRlc3Quc2tp cElmKAotLSAgICAgICAgdmVyc2lvbl91dGlscy5udW1weV9vbGRlcl90aGFuKCIxLjIyLjAiKSwK LS0gICAgICAgICJUaGUgdGVzdCByZXF1aXJlcyBudW1weSAxLjIyLjAgb3IgbGF0ZXIiLAotLSAg ICApCi0tICAgIGRlZiB0ZXN0X21ha2VfNGJpdF90ZW5zb3Ioc2VsZiwgZHR5cGUsIGRpbXMpIC0+ IE5vbmU6Ci0tICAgICAgICB0eXBlX3JhbmdlID0gewotLSAgICAgICAgICAgIFRlbnNvclByb3Rv LlVJTlQ0OiAoMCwgMTUpLAotLSAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDQ6ICgtOCwgNyks Ci0tICAgICAgICB9Ci0tICAgICAgICBkYXRhID0gbnAucmFuZG9tLnJhbmRpbnQoCi0tICAgICAg ICAgICAgdHlwZV9yYW5nZVtkdHlwZV1bMF0sIGhpZ2g9dHlwZV9yYW5nZVtkdHlwZV1bMV0gKyAx LCBzaXplPWRpbXMKLS0gICAgICAgICkKLS0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3Io InkiLCBkdHlwZSwgZGF0YS5zaGFwZSwgZGF0YSkKLS0KLS0gICAgICAgICMgQ2hlY2sgdGhlIGV4 cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBpbiBieXRlcwotLSAgICAgICAgZXhwZWN0ZWRfZGF0 YV9zaXplID0gbWF0aC5jZWlsKG5wLnByb2QoZGF0YS5zaGFwZSkgLyAyLjApCi0tICAgICAgICBh Y3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVzKHkuaW50MzJfZGF0YSkpCi0tICAgICAgICBucC50 ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRhX3NpemUp Ci0tCi0tICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBkYXRhIHZhbHVlcy4KLS0gICAgICAg IHlucCA9IHRvX2FycmF5X2V4dGVuZGVkKHkpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9l cXVhbChkYXRhLCB5bnApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhw YW5kKAotLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKCg1LCA0LCA2 KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCksICgyKioxMCwpKSwKLS0gICAgICAgICkKLS0gICAg KQotLSAgICBAdW5pdHRlc3Quc2tpcElmKAotLSAgICAgICAgdmVyc2lvbl91dGlscy5udW1weV9v bGRlcl90aGFuKCIxLjIyLjAiKSwKLS0gICAgICAgICJUaGUgdGVzdCByZXF1aXJlcyBudW1weSAx LjIyLjAgb3IgbGF0ZXIiLAotLSAgICApCi0tICAgIGRlZiB0ZXN0XzRiaXRfdGVuc29yX3NpemUo c2VsZiwgZGltcykgLT4gTm9uZToKLS0gICAgICAgICMgQSBidWcgY2F1c2VkIG5lZ2F0aXZlIGlu dDQgdmFsdWVzIHRvIGluZmxhdGUgdGVuc29yIHNpemUuCi0tICAgICAgICAjIFNvLCB0ZXN0IG5l Z2F0aXZlIHZhbHVlcyBoZXJlLgotLSAgICAgICAgbnVtX2VsZW1zID0gbnAucHJvZChkaW1zKQot LSAgICAgICAgZGF0YSA9IG5wLmFycmF5KFstNF0gKiBudW1fZWxlbXMsIGR0eXBlPW5wLmludDgp LnJlc2hhcGUoZGltcykKLS0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoInkiLCBUZW5z b3JQcm90by5JTlQ0LCBkYXRhLnNoYXBlLCBkYXRhKQotLQotLSAgICAgICAgIyBDaGVjayB0aGUg ZXhwZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCi0tICAgICAgICBleHBlY3RlZF9k YXRhX3NpemUgPSBtYXRoLmNlaWwobnVtX2VsZW1zIC8gMi4wKQotLSAgICAgICAgYWN0dWFsX2Rh dGFfc2l6ZSA9IGxlbihieXRlcyh5LmludDMyX2RhdGEpKQotLSAgICAgICAgbnAudGVzdGluZy5h c3NlcnRfZXF1YWwoYWN0dWFsX2RhdGFfc2l6ZSwgZXhwZWN0ZWRfZGF0YV9zaXplKQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGl0ZXJ0b29s cy5wcm9kdWN0KAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8u SU5UNCksICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpKQotLSAgICAgICAgKQot LSAgICApCi0tICAgIEB1bml0dGVzdC5za2lwSWYoCi0tICAgICAgICB2ZXJzaW9uX3V0aWxzLm51 bXB5X29sZGVyX3RoYW4oIjEuMjYuMCIpLAotLSAgICAgICAgIlRoZSB0ZXN0IHJlcXVpcmVzIG51 bXB5IDEuMjYuMCBvciBsYXRlciIsCi0tICAgICkKLS0gICAgZGVmIHRlc3RfbWFrZV80Yml0X3Jh d190ZW5zb3Ioc2VsZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6Ci0tICAgICAgICB0eXBlX3Jhbmdl ID0gewotLSAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ0OiAoMCwgMTUpLAotLSAgICAgICAg ICAgIFRlbnNvclByb3RvLklOVDQ6ICgtOCwgNyksCi0tICAgICAgICB9Ci0tICAgICAgICBkYXRh ID0gbnAucmFuZG9tLnJhbmRpbnQoCi0tICAgICAgICAgICAgdHlwZV9yYW5nZVtkdHlwZV1bMF0s IGhpZ2g9dHlwZV9yYW5nZVtkdHlwZV1bMV0gKyAxLCBzaXplPWRpbXMKLS0gICAgICAgICkuYXN0 eXBlKG5wLmZsb2F0MzIpCi0tICAgICAgICBwYWNrZWRfZGF0YSA9IGhlbHBlci5wYWNrX2Zsb2F0 MzJfdG9fNGJpdCgKLS0gICAgICAgICAgICBkYXRhLCBzaWduZWQ9KGR0eXBlID09IFRlbnNvclBy b3RvLklOVDQpCi0tICAgICAgICApCi0tCi0tICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29y KAotLSAgICAgICAgICAgICJwYWNrZWRfaW50NCIsIGR0eXBlLCBkaW1zLCBwYWNrZWRfZGF0YS50 b2J5dGVzKCksIHJhdz1UcnVlCi0tICAgICAgICApCi0tICAgICAgICB5bnAgPSBudW1weV9oZWxw ZXIudG9fYXJyYXkoeSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGRhdGEsIHlu cCkKLS0KLSAgICAgZGVmIHRlc3RfbWFrZV9zcGFyc2VfdGVuc29yKHNlbGYpIC0+IE5vbmU6Ci0g ICAgICAgICB2YWx1ZXMgPSBbMS4xLCAyLjIsIDMuMywgNC40LCA1LjVdCi0gICAgICAgICB2YWx1 ZXNfdGVuc29yID0gaGVscGVyLm1ha2VfdGVuc29yKAotQEAgLTEwMTgsMjggKzk0MCw2IEBAIGNs YXNzIFRlc3RIZWxwZXJNYXBwaW5nRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAKLSAK LSBjbGFzcyBUZXN0QXR0clR5cGVUb1N0cih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0tICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAg IChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLkZMT0FULCAiRkxPQVQiKSwgICMgdHlwZTog aWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmli dXRlVHlwZS5JTlQsICJJTlQiKSwgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAg ICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5TVFJJTkcsICJTVFJJTkciKSwg ICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJv dG8uQXR0cmlidXRlVHlwZS5URU5TT1IsICJURU5TT1IiKSwgICMgdHlwZTogaWdub3JlW2F0dHIt ZGVmaW5lZF0KLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5HUkFQ SCwgIkdSQVBIIiksICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCi0tICAgICAgICAgICAg KEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1BBUlNFX1RFTlNPUiwgIlNQQVJTRV9URU5T T1IiKSwgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAgICAgICAoQXR0cmli dXRlUHJvdG8uQXR0cmlidXRlVHlwZS5UWVBFX1BST1RPLCAiVFlQRV9QUk9UTyIpLCAgIyB0eXBl OiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRy aWJ1dGVUeXBlLkZMT0FUUywgIkZMT0FUUyIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVk XQotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLklOVFMsICJJTlRT IiksICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCi0tICAgICAgICAgICAgKEF0dHJpYnV0 ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1RSSU5HUywgIlNUUklOR1MiKSwgICMgdHlwZTogaWdub3Jl W2F0dHItZGVmaW5lZF0KLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlw ZS5URU5TT1JTLCAiVEVOU09SUyIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAg ICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLkdSQVBIUywgIkdSQVBIUyIp LCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQ cm90by5BdHRyaWJ1dGVUeXBlLlNQQVJTRV9URU5TT1JTLCAiU1BBUlNFX1RFTlNPUlMiKSwgICMg dHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8u QXR0cmlidXRlVHlwZS5UWVBFX1BST1RPUywgIlRZUEVfUFJPVE9TIiksICAjIHR5cGU6IGlnbm9y ZVthdHRyLWRlZmluZWRdCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfYXR0cl90 eXBlX3RvX3N0cihzZWxmLCBhdHRyX3R5cGUsIGV4cGVjdGVkX3N0cik6Ci0tICAgICAgICByZXN1 bHQgPSBoZWxwZXIuX2F0dHJfdHlwZV90b19zdHIoYXR0cl90eXBlKQotLSAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkX3N0cikKLS0KLSAgICAgZGVmIHRlc3RfYXR0cl90 eXBlX3RvX3N0cl91bmRlZmluZWQoc2VsZik6Ci0gICAgICAgICByZXN1bHQgPSBoZWxwZXIuX2F0 dHJfdHlwZV90b19zdHIoOTk5OSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAi VU5ERUZJTkVEIikKLWRpZmYgLS1naXQgYS9vbm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rlc3QucHkg Yi9vbm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rlc3QucHkKLWluZGV4IGY2NDJjYzg3Zi4uNjIxYThi OGEyIDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5Ci0rKysgYi9v bm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rlc3QucHkKLUBAIC03LDcgKzcsNiBAQCBpbXBvcnQgdW5p dHRlc3QKLSBmcm9tIHR5cGluZyBpbXBvcnQgQW55Ci0gCi0gaW1wb3J0IG51bXB5IGFzIG5wCi0t aW1wb3J0IHBhcmFtZXRlcml6ZWQKLSAKLSBpbXBvcnQgb25ueAotIGltcG9ydCBvbm54LnJlZmVy ZW5jZQotQEAgLTE0NywyOSArMTQ2LDYgQEAgY2xhc3MgVGVzdE51bXB5SGVscGVyKHVuaXR0ZXN0 LlRlc3RDYXNlKToKLSAgICAgZGVmIHRlc3RfY29tcGxleDEyOChzZWxmKSAtPiBOb25lOgotICAg ICAgICAgc2VsZi5fdGVzdF9udW1weV9oZWxwZXJfZmxvYXRfdHlwZShucC5jb21wbGV4MTI4KQot IAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsK LS0gICAgICAgICAgICAoMSwpLAotLSAgICAgICAgICAgICgwLjEwMDA5NzY1NiwpLAotLSAgICAg ICAgICAgICgxMzAwNDgsKSwKLS0gICAgICAgICAgICAoMS4yOTkzODEzZS01LCksCi0tICAgICAg ICAgICAgKG5wLm5hbiwpLAotLSAgICAgICAgICAgIChucC5pbmYsKSwKLS0gICAgICAgIF0KLS0g ICAgKQotLSAgICBkZWYgdGVzdF9iZmxvYXQxNl90b19mbG9hdDMyKHNlbGYsIGYpOgotLSAgICAg ICAgZjMyID0gbnAuZmxvYXQzMihmKQotLSAgICAgICAgYmYxNiA9IGhlbHBlci5mbG9hdDMyX3Rv X2JmbG9hdDE2KGYzMikKLS0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGJmMTYsIGludCkKLS0g ICAgICAgIGYzMl8xID0gbnVtcHlfaGVscGVyLmJmbG9hdDE2X3RvX2Zsb2F0MzIobnAuYXJyYXko W2JmMTZdKSlbMF0KLS0gICAgICAgIGYzMl8yID0gYmZsb2F0MTZfdG9fZmxvYXQzMihiZjE2KQot LSAgICAgICAgaWYgbnAuaXNuYW4oZjMyKToKLS0gICAgICAgICAgICBhc3NlcnQgbnAuaXNuYW4o ZjMyXzEpCi0tICAgICAgICAgICAgYXNzZXJ0IG5wLmlzbmFuKGYzMl8yKQotLSAgICAgICAgZWxz ZToKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYzMiwgZjMyXzEpCi0tICAgICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChmMzIsIGYzMl8yKQotLQotICAgICBkZWYgdGVzdF9mbG9hdDhl NG0zX3RvX2Zsb2F0MzIoc2VsZik6Ci0gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bXB5X2hl bHBlci5mbG9hdDhlNG0zX3RvX2Zsb2F0MzIoaW50KCIxMTExMTEwIiwgMikpLCA0NDgpCi0gICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKG51bXB5X2hlbHBlci5mbG9hdDhlNG0zX3RvX2Zsb2F0MzIo aW50KCIxMDAwIiwgMikpLCAyICoqICgtNikpCi1AQCAtMjA4LDI2ICsxODQsNiBAQCBjbGFzcyBU ZXN0TnVtcHlIZWxwZXIodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChmMzIsIGYzMl8xKQotICAgICAgICAgICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChmMzIsIGYzMl8yKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJp emVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoMC4wMDQzOTQ1MzEyNSwgMC4w MDM5MDYyNSksCi0tICAgICAgICAgICAgKDAuMDA1ODU5Mzc1LCAwLjAwNTg1OTM3NSksCi0tICAg ICAgICAgICAgKDAuMDA1NzU5Mzc1LCAwLjAwNTg1OTM3NSksCi0tICAgICAgICAgICAgKDAuMDA0 Njg3NSwgMC4wMDM5MDYyNSksCi0tICAgICAgICAgICAgKDAuMDAxOTUzMTI1LCAwLjAwMTk1MzEy NSksCi0tICAgICAgICAgICAgKDAuMDAyOTI5Njg3NSwgMC4wMDM5MDYyNSksCi0tICAgICAgICAg ICAgKDAuMDAyMDUzMTI1LCAwLjAwMTk1MzEyNSksCi0tICAgICAgICAgICAgKDAuMDAyMzQzNzUs IDAuMDAxOTUzMTI1KSwKLS0gICAgICAgICAgICAoMC4wMDg3ODkwNjI1LCAwLjAwNzgxMjUpLAot LSAgICAgICAgICAgICgwLjAwMTE3MTg3NSwgMC4wMDE5NTMxMjUpLAotLSAgICAgICAgICAgICgx LjgxMzE2MDUsIDEuODc1KSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9mbG9h dDhlNG0zX3RvX2Zsb2F0MzJfcm91bmQoc2VsZiwgdmFsLCBleHBlY3RlZCk6Ci0tICAgICAgICBm OCA9IGhlbHBlci5mbG9hdDMyX3RvX2Zsb2F0OGU0bTModmFsKQotLSAgICAgICAgZjMyID0gbnVt cHlfaGVscGVyLmZsb2F0OGU0bTNfdG9fZmxvYXQzMihmOCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwoZjMyLCBleHBlY3RlZCkKLS0KLSAgICAgZGVmIHRlc3RfZmxvYXQ4ZTVtMl90b19mbG9h dDMyKHNlbGYpOgotICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW1weV9oZWxwZXIuZmxvYXQ4 ZTVtMl90b19mbG9hdDMyKGludCgiMTExMTAxMSIsIDIpKSwgNTczNDQpCi0gICAgICAgICBzZWxm LmFzc2VydEVxdWFsKG51bXB5X2hlbHBlci5mbG9hdDhlNW0yX3RvX2Zsb2F0MzIoaW50KCIxMDAi LCAyKSksIDIgKiogKC0xNCkpCi1AQCAtNjI1LDI1ICs1ODEsNiBAQCBjbGFzcyBUZXN0TnVtcHlI ZWxwZXIodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cC5T ZXJpYWxpemVUb1N0cmluZygpLCBhZ2Fpbi5TZXJpYWxpemVUb1N0cmluZygpKQotICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbCh0cC5kYXRhX3R5cGUsIGhlbHBlci5ucF9kdHlwZV90b190ZW5zb3Jf ZHR5cGUoYmFjay5kdHlwZSkpCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQu ZXhwYW5kKFsoYXR0LCkgZm9yIGF0dCBpbiBkaXIob25ueC5UZW5zb3JQcm90byldKQotLSAgICBk ZWYgdGVzdF90b19hcnJheV9mcm9tX2FycmF5KHNlbGYsIGF0dCk6Ci0tICAgICAgICBpZiBhdHQg aW4gewotLSAgICAgICAgICAgICJJTlQ0IiwKLS0gICAgICAgICAgICAiVUlOVDQiLAotLSAgICAg ICAgICAgICJTVFJJTkciLAotLSAgICAgICAgICAgICJVTkRFRklORUQiLAotLSAgICAgICAgICAg ICJERUZBVUxUIiwKLS0gICAgICAgICAgICAiTkFNRV9GSUVMRF9OVU1CRVIiLAotLSAgICAgICAg fToKLS0gICAgICAgICAgICByZXR1cm4KLS0gICAgICAgIGlmIGF0dFswXSA8ICJBIiBvciBhdHRb MF0gPiAiWiI6Ci0tICAgICAgICAgICAgcmV0dXJuCi0tICAgICAgICB2YWx1ZSA9IGdldGF0dHIo b25ueC5UZW5zb3JQcm90bywgYXR0KQotLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUs IGludCk6Ci0tICAgICAgICAgICAgcmV0dXJuCi0tCi0tICAgICAgICBzZWxmLl90b19hcnJheV9m cm9tX2FycmF5KHZhbHVlKQotLQotICAgICBkZWYgdGVzdF90b19hcnJheV9mcm9tX2FycmF5X3N1 YnR5cGUoc2VsZik6Ci0gICAgICAgICBzZWxmLl90b19hcnJheV9mcm9tX2FycmF5KG9ubnguVGVu c29yUHJvdG8uSU5UNCkKLSAgICAgICAgIHNlbGYuX3RvX2FycmF5X2Zyb21fYXJyYXkob25ueC5U ZW5zb3JQcm90by5VSU5UNCkKLWRpZmYgLS1naXQgYS9vbm54L3Rlc3QvcGFyc2VyX3Rlc3QucHkg Yi9vbm54L3Rlc3QvcGFyc2VyX3Rlc3QucHkKLWluZGV4IGMxMTdkMzc5Yi4uOTY3ZDI5MzkwIDEw MDY0NAotLS0tIGEvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3QvcGFy c2VyX3Rlc3QucHkKLUBAIC01LDggKzUsNiBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90 YXRpb25zCi0gCi0gaW1wb3J0IHVuaXR0ZXN0Ci0gCi0tZnJvbSBwYXJhbWV0ZXJpemVkIGltcG9y dCBwYXJhbWV0ZXJpemVkCi0tCi0gaW1wb3J0IG9ubngKLSBmcm9tIG9ubnggaW1wb3J0IEdyYXBo UHJvdG8sIE9wZXJhdG9yU2V0SWRQcm90bywgVGVuc29yUHJvdG8sIGNoZWNrZXIKLSAKLUBAIC0x MjAsOTQgKzExOCw2IEBAIGNsYXNzIFRlc3RCYXNpY0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2Fz ZSk6Ci0gICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKGlucHV0KQotICAg ICAgICAgY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgImFn cmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWlu LlNlbHUoeCkgfSIsCi0tICAgICAgICAgICAgICAgIHt9LAotLSAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxv YXRbTl0gb3V0KSB7IG91dCA9IGN1c3RvbV9kb21haW4uU2VsdTxhbHBoYT0yLjA+KHgpIH0iLAot LSAgICAgICAgICAgICAgICB7ImFscGhhIjogMi4wfSwKLS0gICAgICAgICAgICApLAotLSAgICAg ICAgICAgICgKLS0gICAgICAgICAgICAgICAgImFncmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0 W05dIG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWluLlNlbHU8Z2FtbWE9My4wPih4KSB9IiwKLS0g ICAgICAgICAgICAgICAgeyJnYW1tYSI6IDMuMH0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAoCi0tICAgICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtO XSBvdXQpIHsgb3V0ID0gY3VzdG9tX2RvbWFpbi5TZWx1PGFscGhhPTIuMCwgZ2FtbWE9My4wPih4 KSB9IiwKLS0gICAgICAgICAgICAgICAgeyJhbHBoYSI6IDIuMCwgImdhbW1hIjogMy4wfSwKLS0g ICAgICAgICAgICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2NvbXBvc2l0 ZV9wYXJzZV9mdW5jdGlvbl93aXRoX2F0dHJpYnV0ZXMoCi0tICAgICAgICBzZWxmLCBncmFwaF90 ZXh0OiBzdHIsIGV4cGVjdGVkX2F0dHJpYnV0ZTogZGljdAotLSAgICApIC0+IE5vbmU6Ci0tICAg ICAgICBkZWZhdWx0X2FscGhhID0gMS42NzMyNjMxOTIxNzY4MTg4NDc2NTYyNQotLSAgICAgICAg ZGVmYXVsdF9nYW1tYSA9IDEuMDUwNzAxMDIyMTQ4MTMyMzI0MjE4NzUKLS0KLS0gICAgICAgIGRl ZiBleHBlY3RfY3VzdG9tX25vZGVfYXR0cmlidXRlKG5vZGUsIGF0dHJpYnV0ZXMpOgotLSAgICAg ICAgICAgIGZvciBrZXkgaW4gYXR0cmlidXRlczoKLS0gICAgICAgICAgICAgICAgbWF0Y2hfYXR0 ciA9IFthdHRyIGZvciBhdHRyIGluIG5vZGUuYXR0cmlidXRlIGlmIGF0dHIubmFtZSA9PSBrZXld Ci0tICAgICAgICAgICAgICAgIGFzc2VydCBsZW4obWF0Y2hfYXR0cikgPT0gMQotLSAgICAgICAg ICAgICAgICBhc3NlcnQgbWF0Y2hfYXR0clswXS5mID09IGF0dHJpYnV0ZXNba2V5XQotLQotLSAg ICAgICAgZGVmIGV4cGVjdF9tb2RlbF9mdW5jdGlvbl9hdHRyaWJ1dGUobW9kZWwpOgotLSAgICAg ICAgICAgIGFzc2VydCBsZW4obW9kZWwuZnVuY3Rpb25zWzBdLmF0dHJpYnV0ZV9wcm90bykgPT0g MgotLSAgICAgICAgICAgIGF0dHJfcHJvdG9fYWxwaGEgPSBbCi0tICAgICAgICAgICAgICAgIGF0 dHJfcHJvdG8KLS0gICAgICAgICAgICAgICAgZm9yIGF0dHJfcHJvdG8gaW4gbW9kZWwuZnVuY3Rp b25zWzBdLmF0dHJpYnV0ZV9wcm90bwotLSAgICAgICAgICAgICAgICBpZiBhdHRyX3Byb3RvLm5h bWUgPT0gImFscGhhIgotLSAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBhc3NlcnQgbGVuKGF0 dHJfcHJvdG9fYWxwaGEpID09IDEgYW5kIGF0dHJfcHJvdG9fYWxwaGFbMF0uZiA9PSBkZWZhdWx0 X2FscGhhCi0tICAgICAgICAgICAgYXR0cl9wcm90b19nYW1tYSA9IFsKLS0gICAgICAgICAgICAg ICAgYXR0cl9wcm90bwotLSAgICAgICAgICAgICAgICBmb3IgYXR0cl9wcm90byBpbiBtb2RlbC5m dW5jdGlvbnNbMF0uYXR0cmlidXRlX3Byb3RvCi0tICAgICAgICAgICAgICAgIGlmIGF0dHJfcHJv dG8ubmFtZSA9PSAiZ2FtbWEiCi0tICAgICAgICAgICAgXQotLSAgICAgICAgICAgIGFzc2VydCBs ZW4oYXR0cl9wcm90b19nYW1tYSkgPT0gMSBhbmQgYXR0cl9wcm90b19nYW1tYVswXS5mID09IGRl ZmF1bHRfZ2FtbWEKLS0KLS0gICAgICAgIGZ1bmN0aW9uX3RleHQgPSBmIiIiCi0tICAgICAgICAg PAotLSAgICAgICAgIGRvbWFpbjogImN1c3RvbV9kb21haW4iLAotLSAgICAgICAgIG9wc2V0X2lt cG9ydDogWyAiIiA6IDE1XSwKLS0gICAgICAgICBkb2Nfc3RyaW5nOiAiVGVzdCBmdW5jdGlvbiBw cm90byIKLS0gICAgICAgICA+Ci0tICAgICAgICAgICBTZWx1Ci0tICAgICAgICAgICA8YWxwaGE6 IGZsb2F0PXtkZWZhdWx0X2FscGhhfSwgZ2FtbWE6IGZsb2F0PXtkZWZhdWx0X2dhbW1hfT4KLS0g ICAgICAgICAgIChYKSA9PiAoQykKLS0gICAgICAgICAgIHt7Ci0tICAgICAgICAgICAgICAgY29u c3RhbnRfYWxwaGEgPSBDb25zdGFudDx2YWx1ZV9mbG9hdDogZmxvYXQ9QGFscGhhPigpCi0tICAg ICAgICAgICAgICAgY29uc3RhbnRfZ2FtbWEgPSBDb25zdGFudDx2YWx1ZV9mbG9hdDogZmxvYXQ9 QGdhbW1hPigpCi0tICAgICAgICAgICAgICAgYWxwaGFfeCA9IENhc3RMaWtlKGNvbnN0YW50X2Fs cGhhLCBYKQotLSAgICAgICAgICAgICAgIGdhbW1hX3ggPSBDYXN0TGlrZShjb25zdGFudF9nYW1t YSwgWCkKLS0gICAgICAgICAgICAgICBleHBfeCA9IEV4cChYKQotLSAgICAgICAgICAgICAgIGFs cGhhX3hfZXhwX3ggPSBNdWwoYWxwaGFfeCwgZXhwX3gpCi0tICAgICAgICAgICAgICAgYWxwaGFf eF9leHBfeF8gPSBTdWIoYWxwaGFfeF9leHBfeCwgYWxwaGFfeCkKLS0gICAgICAgICAgICAgICBu ZWcgPSBNdWwoZ2FtbWFfeCwgYWxwaGFfeF9leHBfeF8pCi0tICAgICAgICAgICAgICAgcG9zID0g TXVsKGdhbW1hX3gsIFgpCi0tICAgICAgICAgICAgICAgX3plcm8gPSBDb25zdGFudDx2YWx1ZV9m bG9hdD0wLjA+KCkKLS0gICAgICAgICAgICAgICB6ZXJvID0gQ2FzdExpa2UoX3plcm8sIFgpCi0t ICAgICAgICAgICAgICAgbGVzc19lcSA9IExlc3NPckVxdWFsKFgsIHplcm8pCi0tICAgICAgICAg ICAgICAgQyA9IFdoZXJlKGxlc3NfZXEsIG5lZywgcG9zKQotLSAgICAgICAgICAgfX0KLS0gICAg ICAgICIiIgotLQotLSAgICAgICAgZnVuY3Rpb25zID0gW29ubngucGFyc2VyLnBhcnNlX2Z1bmN0 aW9uKGZ1bmN0aW9uX3RleHQpXQotLSAgICAgICAgZ3JhcGggPSBvbm54LnBhcnNlci5wYXJzZV9n cmFwaChncmFwaF90ZXh0KQotLSAgICAgICAgb3BzZXRfaW1wb3J0cyA9IFsKLS0gICAgICAgICAg ICBPcGVyYXRvclNldElkUHJvdG8oZG9tYWluPSIiLCB2ZXJzaW9uPTE1KSwKLS0gICAgICAgICAg ICBPcGVyYXRvclNldElkUHJvdG8oZG9tYWluPSJjdXN0b21fZG9tYWluIiwgdmVyc2lvbj0xKSwK LS0gICAgICAgIF0KLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5oZWxwZXIubWFrZV9tb2RlbCgK LS0gICAgICAgICAgICBncmFwaCwgZnVuY3Rpb25zPWZ1bmN0aW9ucywgb3BzZXRfaW1wb3J0cz1v cHNldF9pbXBvcnRzCi0tICAgICAgICApCi0tICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKG1v ZGVsKQotLQotLSAgICAgICAgZXhwZWN0X21vZGVsX2Z1bmN0aW9uX2F0dHJpYnV0ZShtb2RlbCkK LS0gICAgICAgIGV4cGVjdF9jdXN0b21fbm9kZV9hdHRyaWJ1dGUobW9kZWwuZ3JhcGgubm9kZVsw XSwgZXhwZWN0ZWRfYXR0cmlidXRlKQotLQotICAgICBkZWYgdGVzdF9wYXJzZV9ub2RlKHNlbGYp OgotICAgICAgICAgbm9kZSA9IG9ubngucGFyc2VyLnBhcnNlX25vZGUoCi0gICAgICAgICAgICAg Im91dDEsIG91dDIgPSBTb21lRG9tYWluLlNvbWVPcCA8YXR0cjEgPSAxPiAoaW4xLCBpbjIpIgot QEAgLTIyMCw5OCArMTMwLDYgQEAgY2xhc3MgVGVzdEJhc2ljRnVuY3Rpb25zKHVuaXR0ZXN0LlRl c3RDYXNlKToKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS5kb21haW4sICJTb21lRG9t YWluIikKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS5vcF90eXBlLCAiU29tZU9wIikK LSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAg ICgibm90X2FfZ29vZF9mbG9hdCIsIFRydWUpLAotLSAgICAgICAgICAgICgiaW5mMSIsIFRydWUp LAotLSAgICAgICAgICAgICgiLWluZjEiLCBUcnVlKSwKLS0gICAgICAgICAgICAoIm5hbjAiLCBU cnVlKSwKLS0gICAgICAgICAgICAoIi1uYW4wIiwgVHJ1ZSksCi0tICAgICAgICAgICAgKCJuYW5p bmYiLCBUcnVlKSwKLS0gICAgICAgICAgICAoImluZiIsIEZhbHNlKSwKLS0gICAgICAgICAgICAo Ii1pbmYiLCBGYWxzZSksCi0tICAgICAgICAgICAgKCJpbmZpbml0eSIsIEZhbHNlKSwKLS0gICAg ICAgICAgICAoIi1pbmZpbml0eSIsIEZhbHNlKSwKLS0gICAgICAgICAgICAoIm5hbiIsIEZhbHNl KSwKLS0gICAgICAgICAgICAoIi1OYU4iLCBGYWxzZSksCi0tICAgICAgICBdCi0tICAgICkKLS0g ICAgZGVmIHRlc3RfcGFyc2VfdmFyaW91c19mbG9hdF92YWx1ZXMoc2VsZiwgdGVzdF9saXRlcmFs LCBleHBlY3RfZXhjZXB0aW9uKToKLS0gICAgICAgIG1vZGVsX3RleHQgPSBmIiIiCi0tICAgICAg ICA8Ci0tICAgICAgICBpcl92ZXJzaW9uOiA4LAotLSAgICAgICAgb3BzZXRfaW1wb3J0OiBbIiIg OiAxOCwgInRoaXMiIDogMV0sCi0tICAgICAgICBwcm9kdWNlcl9uYW1lOiAiRnVuY3Rpb25Qcm90 b1Rlc3QiLAotLSAgICAgICAgcHJvZHVjZXJfdmVyc2lvbjogIjEuMCIKLS0gICAgICAgID4KLS0g ICAgICAgIF9mdW5jICgpID0+ICgpCi0tICAgICAgICB7ewotLSAgICAgICAgdG1wID0gQ29uc3Rh bnQgPHZhbHVlX2Zsb2F0ID0ge3Rlc3RfbGl0ZXJhbH0+KCkKLS0gICAgICAgIH19Ci0tICAgICAg ICAiIiIKLS0gICAgICAgIGlmIGV4cGVjdF9leGNlcHRpb246Ci0tICAgICAgICAgICAgc2VsZi5h c3NlcnRSYWlzZXMoCi0tICAgICAgICAgICAgICAgIG9ubngucGFyc2VyLlBhcnNlRXJyb3IsIGxh bWJkYTogb25ueC5wYXJzZXIucGFyc2VfbW9kZWwobW9kZWxfdGV4dCkKLS0gICAgICAgICAgICAp Ci0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIG1vZGVsID0gb25ueC5wYXJzZXIucGFyc2Vf bW9kZWwobW9kZWxfdGV4dCkKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsLmly X3ZlcnNpb24sIDgpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5wcm9kdWNl cl9uYW1lLCAiRnVuY3Rpb25Qcm90b1Rlc3QiKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwobW9kZWwucHJvZHVjZXJfdmVyc2lvbiwgIjEuMCIpCi0tICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChsZW4obW9kZWwuZ3JhcGgubm9kZSksIDEpCi0tICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChsZW4obW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGUpLCAxKQotLSAgICAgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0ubmFt ZSwgInZhbHVlX2Zsb2F0IikKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotLSAgICAg ICAgICAgICAgICBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50eXBlLCBvbm54LkF0 dHJpYnV0ZVByb3RvLkZMT0FUCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwoCi0tICAgICAgICAgICAgICAgIHN0cihtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS5mKSwgc3RyKGZsb2F0KHRlc3RfbGl0ZXJhbCkpCi0tICAgICAgICAgICAgKQotLQot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKCJi ZmxvYXQxNiIsIFRlbnNvclByb3RvLkJGTE9BVDE2KSwKLS0gICAgICAgICAgICAoImJvb2wiLCBU ZW5zb3JQcm90by5CT09MKSwKLS0gICAgICAgICAgICAoImNvbXBsZXg2NCIsIFRlbnNvclByb3Rv LkNPTVBMRVg2NCksCi0tICAgICAgICAgICAgKCJjb21wbGV4MTI4IiwgVGVuc29yUHJvdG8uQ09N UExFWDEyOCksCi0tICAgICAgICAgICAgKCJkb3VibGUiLCBUZW5zb3JQcm90by5ET1VCTEUpLAot LSAgICAgICAgICAgICgiZmxvYXQxNiIsIFRlbnNvclByb3RvLkZMT0FUMTYpLAotLSAgICAgICAg ICAgICgiZmxvYXQiLCBUZW5zb3JQcm90by5GTE9BVCksCi0tICAgICAgICAgICAgKCJmbG9hdDhl NG0zZm4iLCBUZW5zb3JQcm90by5GTE9BVDhFNE0zRk4pLAotLSAgICAgICAgICAgICgiZmxvYXQ4 ZTRtM2ZudXoiLCBUZW5zb3JQcm90by5GTE9BVDhFNE0zRk5VWiksCi0tICAgICAgICAgICAgKCJm bG9hdDhlNW0yIiwgVGVuc29yUHJvdG8uRkxPQVQ4RTVNMiksCi0tICAgICAgICAgICAgKCJmbG9h dDhlNW0yZm51eiIsIFRlbnNvclByb3RvLkZMT0FUOEU1TTJGTlVaKSwKLS0gICAgICAgICAgICAo ImludDQiLCBUZW5zb3JQcm90by5JTlQ0KSwKLS0gICAgICAgICAgICAoImludDgiLCBUZW5zb3JQ cm90by5JTlQ4KSwKLS0gICAgICAgICAgICAoImludDE2IiwgVGVuc29yUHJvdG8uSU5UMTYpLAot LSAgICAgICAgICAgICgiaW50MzIiLCBUZW5zb3JQcm90by5JTlQzMiksCi0tICAgICAgICAgICAg KCJpbnQ2NCIsIFRlbnNvclByb3RvLklOVDY0KSwKLS0gICAgICAgICAgICAoInN0cmluZyIsIFRl bnNvclByb3RvLlNUUklORyksCi0tICAgICAgICAgICAgKCJ1aW50NCIsIFRlbnNvclByb3RvLlVJ TlQ0KSwKLS0gICAgICAgICAgICAoInVpbnQ4IiwgVGVuc29yUHJvdG8uVUlOVDgpLAotLSAgICAg ICAgICAgICgidWludDE2IiwgVGVuc29yUHJvdG8uVUlOVDE2KSwKLS0gICAgICAgICAgICAoInVp bnQzMiIsIFRlbnNvclByb3RvLlVJTlQzMiksCi0tICAgICAgICAgICAgKCJ1aW50NjQiLCBUZW5z b3JQcm90by5VSU5UNjQpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3BhcnNl X2dyYXBoX3R5cGVzKHNlbGYsIG5hbWUsIGl0eXBlKSAtPiBOb25lOgotLSAgICAgICAgdyA9ICd7 IjAifScgaWYgaXR5cGUgPT0gVGVuc29yUHJvdG8uU1RSSU5HIGVsc2UgInswfSIKLS0gICAgICAg IHRleHRfZ3JhcGggPSBmIiIiCi0tICAgICAgICAgICA8Ci0tICAgICAgICAgICAgIGlyX3ZlcnNp b246IDEwLAotLSAgICAgICAgICAgICBvcHNldF9pbXBvcnQ6IFsgIiIgOiAxOV0KLS0gICAgICAg ICAgID4KLS0gICAgICAgICAgIGFncmFwaCAoZmxvYXRbTl0gWCkgPT4gKHtuYW1lfVtOXSBDKQot LSAgICAgICAgICAgPAotLSAgICAgICAgICAgICB7bmFtZX1bMV0gd2VpZ2h0ID0ge3d9Ci0tICAg ICAgICAgICA+Ci0tICAgICAgICAgICB7ewotLSAgICAgICAgICAgICAgQyA9IENhc3Q8dG89e2l0 eXBlfT4oWCkKLS0gICAgICAgICAgIH19Ci0tICAgICAgICAgICAiIiIKLS0gICAgICAgIGdyYXBo ID0gb25ueC5wYXJzZXIucGFyc2VfbW9kZWwodGV4dF9ncmFwaCkKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwobGVuKGdyYXBoLmdyYXBoLm5vZGUpLCAxKQotLQotIAotIGlmIF9fbmFtZV9fID09 ICJfX21haW5fXyI6Ci0gICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCi1kaWZmIC0tZ2l0 IGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5weSBiL29ubngvdGVzdC9y ZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rlc3QucHkKLWluZGV4IDNiMDVkYTMwMy4uMTAwNThmOWU3 IDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5weQot KysrIGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5weQotQEAgLTExLDcg KzExLDYgQEAgZnJvbSBvcyBpbXBvcnQgZ2V0ZW52Ci0gCi0gaW1wb3J0IG51bXB5IGFzIG5wICAj IHR5cGU6IGlnbm9yZQotIGZyb20gbnVtcHkudGVzdGluZyBpbXBvcnQgYXNzZXJ0X2FsbGNsb3Nl ICAjIHR5cGU6IGlnbm9yZQotLWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVyaXpl ZAotIAotIGltcG9ydCBvbm54Ci0gZnJvbSBvbm54IGltcG9ydCBPTk5YX01MLCBUZW5zb3JQcm90 bywgVHlwZVByb3RvLCBWYWx1ZUluZm9Qcm90bwotQEAgLTkwNywxMTggKzkwNiw2IEBAIGNsYXNz IFRlc3RSZWZlcmVuY2VFdmFsdWF0b3JBaU9ubnhNbCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg ICAgICBjaGVja19tb2RlbChvbngpCi0gICAgICAgICByZXR1cm4gb254Ci0gCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIHR1cGxlKAotLSAgICAgICAgICAgIGl0ZXJ0b29s cy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAg ICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5T VU0gaWYgb3BzZXQ1IGVsc2UgIlNVTSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJy YXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC41NzY5MjNdLCBbMC41NzY5MjNd LCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAgICAg ICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAgICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAgICBB Z2dyZWdhdGlvbkZ1bmN0aW9uLkFWRVJBR0UgaWYgb3BzZXQ1IGVsc2UgIkFWRVJBR0UiLAotLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbWzAuMjg4NDYyXSwgWzAuMjg4NDYyXSwgWzAuMjg4NDYyXV0sIGR0eXBlPW5wLmZsb2F0 MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgICAg IG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAo Ci0tICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5NSU4gaWYgb3Bz ZXQ1IGVsc2UgIk1JTiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC4wNzY5MjNdLCBbMC4wNzY5MjNdLCBbMC4wNzY5 MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0g ICAgICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlv bkZ1bmN0aW9uLk1BWCBpZiBvcHNldDUgZWxzZSAiTUFYIiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAot LSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICks Ci0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICAgICAgZm9yIG9wc2V0NSBpbiBbVHJ1 ZSwgRmFsc2VdCi0tICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICApCi0tICAgIEB1bml0 dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBh aS5vbm54Lm1sIikKLS0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfYWdncmVn YXRpb25fZnVuY3Rpb25zKAotLSAgICAgICAgc2VsZiwgYWdncmVnYXRlX2Z1bmN0aW9uLCBleHBl Y3RlZF9yZXN1bHQsIG9wc2V0NQotLSAgICApOgotLSAgICAgICAgeCA9IG5wLmFyYW5nZSg5KS5y ZXNoYXBlKCgtMSwgMykpLmFzdHlwZShucC5mbG9hdDMyKSAvIDEwIC0gMC41Ci0tICAgICAgICBt b2RlbF9mYWN0b3J5ID0gKAotLSAgICAgICAgICAgIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1i bGVfb3BzZXRfbGF0ZXN0Ci0tICAgICAgICAgICAgaWYgb3BzZXQ1Ci0tICAgICAgICAgICAgZWxz ZSBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3NvcgotLSAgICAgICAgKQotLSAg ICAgICAgbW9kZWxfcHJvdG8gPSBtb2RlbF9mYWN0b3J5KAotLSAgICAgICAgICAgIGFnZ3JlZ2F0 ZV9mdW5jdGlvbiwKLS0gICAgICAgICkKLS0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWxfcHJvdG8pCi0tICAgICAgICAoYWN0dWFsLCkgPSBzZXNzLnJ1bihOb25lLCB7Ilgi OiB4fSkKLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZShleHBlY3RlZF9yZXN1bHQsIGFjdHVhbCwg YXRvbD0xZS02KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICB0dXBs ZSgKLS0gICAgICAgICAgICBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZSgKLS0gICAgICAg ICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAg ICAgIE1vZGUuTEVRIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTEVRIiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3 NjkyM10sIFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAgICAg ICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0t ICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAg ICAgICAgICAgICAgICAgIE1vZGUuR1QgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9HVCIsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAuNV1dLCBkdHlw ZT1ucC5mbG9hdDMyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAgICAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAg ICAgICAgICAgIE1vZGUuTFQgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9MVCIsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb MC41NzY5MjNdLCBbMC41NzY5MjNdLCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgotLSAg ICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1 LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICgKLS0gICAg ICAgICAgICAgICAgICAgICAgICBNb2RlLkdURSBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0dURSIs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAuNV1d LCBkdHlwZT1ucC5mbG9hdDMyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0t ICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAg ICAgICAgICAgICAgICAgIE1vZGUuRVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9FUSIsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxLjBdLCBbMS4wXSwgWzEuMF1dLCBkdHlw ZT1ucC5mbG9hdDMyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAgICAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAg ICAgICAgICAgIE1vZGUuTkVRIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTkVRIiwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg W1swLjA3NjkyM10sIFswLjA3NjkyM10sIFswLjA3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCi0t ICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNl dDUsCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAg ICAgICAgICAgIGZvciBvcHNldDUgaW4gW1RydWUsIEZhbHNlXQotLSAgICAgICAgICAgICkKLS0g ICAgICAgICkKLS0gICAgKQotLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCByZWFz b249Im9ubnggbm90IGNvbXBpbGVkIHdpdGggYWkub25ueC5tbCIpCi0tICAgIGRlZiB0ZXN0X3Ry ZWVfZW5zZW1ibGVfcmVncmVzc29yX3J1bGUoc2VsZiwgcnVsZSwgZXhwZWN0ZWQsIG9wc2V0NSk6 Ci0tICAgICAgICB4ID0gbnAuYXJhbmdlKDkpLnJlc2hhcGUoKC0xLCAzKSkuYXN0eXBlKG5wLmZs b2F0MzIpIC8gMTAgLSAwLjUKLS0gICAgICAgIG1vZGVsX2ZhY3RvcnkgPSAoCi0tICAgICAgICAg ICAgc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QKLS0gICAgICAgICAg ICBpZiBvcHNldDUKLS0gICAgICAgICAgICBlbHNlIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1i bGVfcmVncmVzc29yCi0tICAgICAgICApCi0tICAgICAgICBhZ2dyZWdhdGVfZnVuY3Rpb24gPSBB Z2dyZWdhdGlvbkZ1bmN0aW9uLlNVTSBpZiBvcHNldDUgZWxzZSAiU1VNIgotLQotLSAgICAgICAg bW9kZWxfcHJvdG8gPSBtb2RlbF9mYWN0b3J5KGFnZ3JlZ2F0ZV9mdW5jdGlvbiwgcnVsZSkKLS0g ICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWxfcHJvdG8pCi0tICAgICAgICAo YWN0dWFsLCkgPSBzZXNzLnJ1bihOb25lLCB7IlgiOiB4fSkKLS0gICAgICAgIGFzc2VydF9hbGxj bG9zZShleHBlY3RlZCwgYWN0dWFsLCBhdG9sPTFlLTYpCi0tCi0gICAgIEB1bml0dGVzdC5za2lw SWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1s IikKLSAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfMl90YXJnZXRzX29wc2V0 MyhzZWxmKToKLSAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsIFtOb25lLCBOb25lXSkKLUBAIC0xMTMyLDIzICsxMDE5LDYgQEAgY2xhc3Mg VGVzdFJlZmVyZW5jZUV2YWx1YXRvckFpT25ueE1sKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAg ICAgIGFzc2VydF9hbGxjbG9zZShleHBlY3RlZCwgZ290WzBdLCBhdG9sPTFlLTYpCi0gICAgICAg ICBzZWxmLmFzc2VydEluKCJvcF90eXBlPVRyZWVFbnNlbWJsZVJlZ3Jlc3NvciIsIHN0cihzZXNz LnJ0X25vZGVzX1swXSkpCi0gCi0tICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJl YXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKAotLSAgICAgICAgWyhpbnB1dF90eXBlLCkgZm9yIGlucHV0X3R5cGUgaW4g W1RlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5ET1VCTEVdXQotLSAgICApCi0tICAgIGRl ZiB0ZXN0X3RyZWVfZW5zZW1ibGVfbWlzc2luZ19vcHNldDUoc2VsZiwgaW5wdXRfdHlwZSk6Ci0t ICAgICAgICBtb2RlbCA9IHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0 KAotLSAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uU1VNLCBNb2RlLkxFUSwgVHJ1ZSwg aW5wdXRfdHlwZQotLSAgICAgICAgKQotLSAgICAgICAgbnBfZHR5cGUgPSBvbm54LmhlbHBlci50 ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoaW5wdXRfdHlwZSkKLS0gICAgICAgIHggPSBucC5hcmFu Z2UoOSkucmVzaGFwZSgoLTEsIDMpKS5hc3R5cGUobnBfZHR5cGUpIC8gMTAgLSAwLjUKLS0gICAg ICAgIHhbMiwgMF0gPSA1Ci0tICAgICAgICB4WzEsIDpdID0gbnAubmFuCi0tICAgICAgICBleHBl Y3RlZCA9IG5wLmFycmF5KFtbMTAwMDAxLjBdLCBbMTAwMTAwLjBdLCBbMTAwMTAwLjBdXSwgZHR5 cGU9bnBfZHR5cGUpCi0tICAgICAgICBzZXNzaW9uID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVs KQotLSAgICAgICAgKGFjdHVhbCwpID0gc2Vzc2lvbi5ydW4oTm9uZSwgeyJYIjogeH0pCi0tICAg ICAgICBhc3NlcnRfYWxsY2xvc2UoZXhwZWN0ZWQsIGFjdHVhbCwgYXRvbD0xZS02KQotLQotICAg ICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCByZWFzb249Im9ubnggbm90IGNvbXBpbGVk IHdpdGggYWkub25ueC5tbCIpCi0gICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29y X21pc3Npbmdfb3BzZXQ1X2Zsb2F0MTYoc2VsZik6Ci0gICAgICAgICBtb2RlbCA9IHNlbGYuX2dl dF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0KAotZGlmZiAtLWdpdCBhL29ubngvdGVz dC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkgYi9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1 YXRvcl90ZXN0LnB5Ci1pbmRleCBjODA1ZTFkN2IuLjQyYTJmYmVhZSAxMDA2NDQKLS0tLSBhL29u bngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKLSsrKyBiL29ubngvdGVzdC9yZWZl cmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKLUBAIC0yNCw3ICsyNCw2IEBAIGZyb20gdGV4dHdyYXAg aW1wb3J0IGRlZGVudAotIGZyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQotIAotIGltcG9ydCBu dW1weSBhcyBucAotLWltcG9ydCBwYXJhbWV0ZXJpemVkCi0gaW1wb3J0IHZlcnNpb25fdXRpbHMK LSBmcm9tIG51bXB5LnRlc3RpbmcgaW1wb3J0IGFzc2VydF9hbGxjbG9zZSwgYXNzZXJ0X2FsbW9z dF9lcXVhbAotIAotQEAgLTI5NjIsMTYzICsyOTYxLDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2 YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBvbm54X21vZGVsID0gbWFrZV9t b2RlbChncmFwaCwgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCBvcHNldCldKQotICAg ICAgICAgcmV0dXJuIG9ubnhfbW9kZWwKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVy aXplZC5leHBhbmQoCi0tICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VNaW4iLAot LSAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5 KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW25wLm5hbiwgbnAubmFuXSwgWzE0LjQy MjcwNiwgMTguODA1MjddXSwgZHR5cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1syLCAxNV0sIFsxMCwg NF1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAiUmVk dWNlTDEiLAotLSAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAg IG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzIuMjM2NzA1MywgMi4z NTE2NjEyXSwgWzQuMDc2MjkyLCA0LjI5NzA2MzRdXSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMTgsIDZdLCBbMTMsIDZdXSwgZHR5cGU9 bnAuaW50NjQpLAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUwyIiwKLS0g ICAgICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1sxLjgwMTU1LCAxLjgxNjk5NDhdLCBbMi45 OTI4MDc2LCAzLjEyMDU4ODNdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9 bnAuZmxvYXQzMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAgICAgICAgIG5wLmFycmF5KFtbMTEsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwK LS0gICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMb2dTdW0iLAotLSAgICAgICAg ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbWzAuOTQ5Nzg0OCwgMS4xODcyNjQzXSwgWzEuNjc2NDE3 NSwgMS43MDc1OV1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9h dDMyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoW1s2LCAxOF0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAg ICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAo Ci0tICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTG9nU3VtRXhwIiwKLS0gICAgICAgICAgICAg ICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgW1sxLjYwMDU5NzMsIDEuNzQ0NTkzNV0sIFsyLjU2MTYyMjksIDIu NjUzOTc5NV1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMy LAotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAg bnAuYXJyYXkoW1sxMywgNl0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAg ICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAoCi0t ICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTWF4IiwKLS0gICAgICAgICAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgW1sxLjQyMTcxMDgsIDEuNTA2OTUzNl0sIFsyLjQ1MzgyNiwgMi41MDQxNzgzXV0s Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShb WzEzLCAxMV0sIFsxMywgMTFdXSwgZHR5cGU9bnAuaW50NjQpLAotLSAgICAgICAgICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAg ICAgICAgICAgICAgIlJlZHVjZU1lYW4iLAotLSAgICAgICAgICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbWzAuMzkyNDc5MDMsIDAuNzg0OTc2MzZdLCBbMi4wMzgxNDYsIDIuMTQ4NTMxN11dLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxMywg Nl0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICBdLAot LSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAg ICAgICAiUmVkdWNlU3VtU3F1YXJlIiwKLS0gICAgICAgICAgICAgICAgICAgIFsKLS0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg W1szLjI0NTU4MjgsIDMuMzAxNDY5Nl0sIFs4Ljk1Njg5NiwgOS43MzgwNzA1XV0sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzExLCAxOF0s IFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAg ICAiUmVkdWNlUHJvZCIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAg ICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbbnAubmFu LCBucC5uYW5dLCBbMTQuNDIyNzA2LCAxOC44MDUyN11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAg ICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJh eShbWzIsIDE1XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAgICAgICAg ICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICBbMTcsIDE4XSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF9vcF9yZWR1Y2Uo c2VsZiwgcmVkdWNlX29wX2V4cGVjdGVkLCBvcHNldDogaW50KToKLS0gICAgICAgIHJlZHVjZV9v cCwgZXhwZWN0ZWQgPSByZWR1Y2Vfb3BfZXhwZWN0ZWQKLS0gICAgICAgIFggPSBucC5hcmFuZ2Uo OCkucmVzaGFwZSgoLTEsIDQpKS5hc3R5cGUobnAuZmxvYXQzMikKLS0KLS0gICAgICAgIHJlc3Vs dHMgPSB7fQotLQotLSAgICAgICAgbW9kZWwgPSBzZWxmLl9jZGlzdF9tb2RlbChvcHNldCwgcmVk dWNlX29wKQotLSAgICAgICAgc2VzcyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAg ICAgIGdvdCA9IHNlc3MucnVuKE5vbmUsIHsiaW5wdXQiOiBYfSkKLS0gICAgICAgIHJlc3VsdHNb InJlZiIsIG9wc2V0XSA9IGdvdAotLQotLSAgICAgICAgY2wgPSBbCi0tICAgICAgICAgICAgbgot LSAgICAgICAgICAgIGZvciBuIGluIHNlc3MucnRfbm9kZXNfWzBdLmJvZHkucnRfbm9kZXNfCi0t ICAgICAgICAgICAgaWYgbi5fX2NsYXNzX18uX19uYW1lX18uc3RhcnRzd2l0aChyZWR1Y2Vfb3Ap Ci0tICAgICAgICBdCi0tICAgICAgICBzY2hlbWEgPSBjbFswXS5fc2NoZW1hCi0tICAgICAgICBu ZXdfY2wgPSB0eXBlKHJlZHVjZV9vcCwgKGNsWzBdLl9fY2xhc3NfXywpLCB7Im9wX3NjaGVtYSI6 IHNjaGVtYX0pCi0tICAgICAgICBzZXNzID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsLCBuZXdf b3BzPVtuZXdfY2xdKQotLSAgICAgICAgZ290ID0gc2Vzcy5ydW4oTm9uZSwgeyJpbnB1dCI6IFh9 KQotLSAgICAgICAgcmVzdWx0c1sicmVmX2NsIiwgb3BzZXRdID0gZ290Ci0tCi0tICAgICAgICBi YXNlbGluZSA9ICJjb25zdGFudCIKLS0gICAgICAgIGZvciBrLCB2IGluIHJlc3VsdHMuaXRlbXMo KToKLS0gICAgICAgICAgICBmb3IgYSwgYiBpbiB6aXAocmV2ZXJzZWQoZXhwZWN0ZWQpLCByZXZl cnNlZCh2KSk6Ci0tICAgICAgICAgICAgICAgIGlmIGEuc2hhcGUgIT0gYi5zaGFwZToKLS0gICAg ICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAotLSAgICAgICAgICAgICAgICAg ICAgICAgIGYiU2hhcGUgbWlzbWF0Y2ggZm9yIHtyZWR1Y2Vfb3Ahcn0sIHtiYXNlbGluZX06e2Eu c2hhcGV9ICE9IHtrfTp7Yi5zaGFwZX0uIgotLSAgICAgICAgICAgICAgICAgICAgKQotLSAgICAg ICAgICAgICAgICBkaWZmID0gbnAuYWJzKGEgLSBiKS5tYXgoKQotLSAgICAgICAgICAgICAgICBp ZiBkaWZmID4gMWUtNjoKLS0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9y KAotLSAgICAgICAgICAgICAgICAgICAgICAgIGYiRGlzY3JlcGFuY2llcyAobWF4PXtkaWZmfSkg Zm9yIHtyZWR1Y2Vfb3Ahcn0sIHtiYXNlbGluZX0gIT0ge2t9XG57YX1cbiE9XG57Yn0iCi0tICAg ICAgICAgICAgICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQu ZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgxMywpLAotLSAgICAgICAgICAgICgx NywpLAotLSAgICAgICAgICAgICgxOCwpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0 ZXN0X212bihzZWxmLCBvcHNldDogaW50LCByZWZfb3BzZXQ6IGludCA9IDEzKToKLS0gICAgICAg IFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25l LCBOb25lLCBOb25lLCBOb25lXSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lLCBOb25lXSkKLS0gICAg ICAgIG5vZGVzID0gWwotLSAgICAgICAgICAgIG1ha2Vfbm9kZSgiTWVhblZhcmlhbmNlTm9ybWFs aXphdGlvbiIsIFsiWCJdLCBbIlkiXSksCi0tICAgICAgICBdCi0tICAgICAgICBncmFwaCA9IG1h a2VfZ3JhcGgobm9kZXMsICJnIiwgW1hdLCBbWV0pCi0tICAgICAgICB4ID0gbnAucmFuZG9tLnJh bmQoMywgMywgMywgMSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tCi0tICAgICAgICBvbm54X21vZGVs ID0gbWFrZV9tb2RlbChncmFwaCwgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCBvcHNl dCldKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG9ubnhfbW9kZWwpCi0tICAg ICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IHh9KVswXQotLQotLSAgICAgICAgcmVmX29u bnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBoLCBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQo IiIsIHJlZl9vcHNldCldKQotLSAgICAgICAgcmVmX2V4cGVjdGVkID0gUmVmZXJlbmNlRXZhbHVh dG9yKHJlZl9vbm54X21vZGVsKQotLSAgICAgICAgZXhwZWN0ZWQgPSByZWZfZXhwZWN0ZWQucnVu KE5vbmUsIHsiWCI6IHh9KVswXQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl ZC5zaGFwZSwgZ290LnNoYXBlKQotLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBn b3QpCi0tCi0gICAgIGRlZiB0ZXN0X2NvbmNhdF9pbl9hX2Z1bmN0aW9uKHNlbGYpOgotICAgICAg ICAgZGVmIGNyZWF0ZV9tb2RlbCgpOgotICAgICAgICAgICAgIG5vZGVzID0gW10KLUBAIC0zODAw LDIxMSArMzY0Miw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVz dENhc2UpOgotICAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKLSAgICAg ICAgIGFzc2VydF9hbGxjbG9zZShleHBlY3RlZCwgZ290WzBdKQotIAotLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0t ICAgICAgICAgICAgICAgIDQgKiBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCi0tICAgICAg ICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAotLSAgICAgICAgICAgICAg ICBucC56ZXJvcygoMywgMikpLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAg ICAyLAotLSAgICAgICAgICAgICAgICBbWzAsIDQsIDQsIDZdLCBbNSwgNywgNiwgN10sIFs2LCA3 LCA3LCA3XV0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAg ICAgIDQgKiBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCi0tICAgICAgICAgICAgICAgIG5w LmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCgz LCAyKSksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAg ICAgICAgICAgIFtbMSwgNSwgNSwgN10sIFs2LCA4LCA3LCA4XSwgWzcsIDgsIDgsIDhdXSwKLS0g ICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdl KDI0KS5yZXNoYXBlKDMsIDgpLAotLSAgICAgICAgICAgICAgICBbWzAuMjUsIDAuNSwgMV0sIFsw LjI1LCAwLjUsIDFdLCBbMC4yNSwgMC41LCAxXV0sCi0tICAgICAgICAgICAgICAgIG5wLnplcm9z KCgzLCAzKSksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDMsCi0tICAg ICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIFswLCA0LCA4LCA2LCA4LCAxMCwg NiwgN10sCi0tICAgICAgICAgICAgICAgICAgICBbMzIsIDM2LCA0MCwgMjIsIDI0LCAyNiwgMTQs IDE1XSwKLS0gICAgICAgICAgICAgICAgICAgIFs2NCwgNjgsIDcyLCAzOCwgNDAsIDQyLCAyMiwg MjNdLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAg KAotLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoNiksCi0tICAgICAgICAgICAgICAgIFswLjI1 LCAwLjVdLAotLSAgICAgICAgICAgICAgICBbLTEsIC0yXSwKLS0gICAgICAgICAgICAgICAgMCwK LS0gICAgICAgICAgICAgICAgMywKLS0gICAgICAgICAgICAgICAgWy0xLCAzLCA3LCA0LCA2LCA4 XSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAu b25lcygoOSwgMTIpKSwKLS0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCkpLAotLSAgICAg ICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAotLSAgICAgICAgICAgICAgICAwLAotLSAgICAg ICAgICAgICAgICAzLAotLSAgICAgICAgICAgICAgICBOb25lLCAgIyBCbG9ja2VkIHF1YW50aXph dGlvbiBpcyBkZWZpbmVkIGZvciAxLUQgYmxvY2tzIG9ubHkKLS0gICAgICAgICAgICApLAotLSAg ICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCwgNSwgNikpLAotLSAg ICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0KSksCi0tICAgICAgICAgICAgICAgIG5wLnplcm9z KCgzLCA0KSksCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAg ICAgICAgICAgICAgIE5vbmUsICAjIFNjYWxlIGFuZCBaUCBtdXN0IGhhdmUgdGhlIHNhbWUgcmFu ayBhcyB0aGUgaW5wdXQKLS0gICAgICAgICAgICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAg IGRlZiB0ZXN0X2Jsb2NrZWRfcXVhbnRpemVfbGluZWFyKAotLSAgICAgICAgc2VsZiwgeCwgc2Nh bGUsIHplcm9fcG9pbnQsIGF4aXMsIGJsb2NrX3NpemUsIGV4cGVjdGVkCi0tICAgICk6Ci0tICAg ICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBb Tm9uZV0pCi0tICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclBy b3RvLklOVDgsIFtOb25lXSkKLS0KLS0gICAgICAgIHNjYWxlX2RhdGEgPSBucC5hcnJheShzY2Fs ZSwgZHR5cGU9bnAuZmxvYXQzMikKLS0gICAgICAgIHpwX2RhdGEgPSBucC5hcnJheSh6ZXJvX3Bv aW50LCBkdHlwZT1ucC5pbnQ4KQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAg ICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiUXVhbnRpemVMaW5lYXIi LAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsiWCIsICJzY2FsZSIsICJ6ZXJvIl0sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgWyJZIl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgYXhp cz1heGlzLAotLSAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwK LS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgICAgICJnIiwKLS0gICAgICAgICAgICAgICAgW1hdLAotLSAgICAgICAgICAgICAgICBbWV0s Ci0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAot LSAgICAgICAgICAgICAgICAgICAgICAgICJzY2FsZSIsIFRlbnNvclByb3RvLkZMT0FULCBzY2Fs ZV9kYXRhLnNoYXBlLCBzY2FsZV9kYXRhCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAg ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInplcm8iLCBUZW5zb3JQcm90by5JTlQ4LCBzY2Fs ZV9kYXRhLnNoYXBlLCB6cF9kYXRhKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICApCi0tICAgICAgICApCi0tICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwp Ci0tCi0tICAgICAgICBkYXRhID0gbnAuYXJyYXkoeCwgZHR5cGU9bnAuZmxvYXQzMikKLS0KLS0g ICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgotLSAgICAgICAgICAgIGV4cGVjdGVkID0g bnAuYXJyYXkoZXhwZWN0ZWQsIGR0eXBlPW5wLmludDgpCi0tICAgICAgICAgICAgZ290ID0gcmVm LnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKLS0gICAgICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZXhw ZWN0ZWQsIGdvdFswXSkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgd2l0aCBzZWxmLmFz c2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLS0gICAgICAgICAgICAgICAgcmVmLnJ1bihOb25lLCB7 IlgiOiBkYXRhfSkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQo Ci0tICAgICAgICBbCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5hcmFuZ2Uo MTIpLnJlc2hhcGUoMywgNCksCi0tICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNo YXBlKDMsIDIpLAotLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgMikpLAotLSAgICAgICAg ICAgICAgICAxLAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICBbWzAsIDEs IDQsIDZdLCBbMTIsIDE1LCAyNCwgMjhdLCBbNDAsIDQ1LCA2MCwgNjZdXSwKLS0gICAgICAgICAg ICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEyKS5yZXNo YXBlKDMsIDQpLAotLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMSwgNykucmVzaGFwZSgzLCAy KSwKLS0gICAgICAgICAgICAgICAgbnAub25lcygoMywgMikpLAotLSAgICAgICAgICAgICAgICAx LAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICBbWy0xLCAwLCAyLCA0XSwg WzksIDEyLCAyMCwgMjRdLCBbMzUsIDQwLCA1NCwgNjBdXSwKLS0gICAgICAgICAgICApLAotLSAg ICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAuZHN0YWNrKFtucC5hcmFuZ2UoNCkucmVz aGFwZSgyLCAyKV0gKiA0KSwKLS0gICAgICAgICAgICAgICAgbnAuZHN0YWNrKFtucC5hcnJheShb WzEsIDFdLCBbMiwgM11dKSwgbnAuYXJyYXkoW1s0LCA1XSwgWzYsIDddXSldKSwKLS0gICAgICAg ICAgICAgICAgbnAuemVyb3MoKDIsIDIsIDIpKSwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAg ICAgICAgICAgICAgMiwKLS0gICAgICAgICAgICAgICAgW1tbMCwgMCwgMCwgMF0sIFsxLCAxLCA1 LCA1XV0sIFtbNCwgNCwgMTIsIDEyXSwgWzksIDksIDIxLCAyMV1dXSwKLS0gICAgICAgICAgICAp LAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDI0KS5yZXNoYXBl KDMsIDgpLAotLSAgICAgICAgICAgICAgICBbWzIsIDEsIDNdLCBbMiwgMSwgM10sIFsyLCAxLCAz XV0sCi0tICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAzKSksCi0tICAgICAgICAgICAgICAg IDEsCi0tICAgICAgICAgICAgICAgIDMsCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgICAgIFswLCAyLCA0LCAzLCA0LCA1LCAxOCwgMjFdLAotLSAgICAgICAgICAgICAgICAg ICAgWzE2LCAxOCwgMjAsIDExLCAxMiwgMTMsIDQyLCA0NV0sCi0tICAgICAgICAgICAgICAgICAg ICBbMzIsIDM0LCAzNiwgMTksIDIwLCAyMSwgNjYsIDY5XSwKLS0gICAgICAgICAgICAgICAgXSwK LS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAuYXJh bmdlKAotLSAgICAgICAgICAgICAgICAgICAgNiwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAg ICAgICAgICAgICAgWzIsIDNdLAotLSAgICAgICAgICAgICAgICBbMSwgMl0sCi0tICAgICAgICAg ICAgICAgIDAsCi0tICAgICAgICAgICAgICAgIDMsCi0tICAgICAgICAgICAgICAgIFstMiwgMCwg MiwgMywgNiwgOV0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAg ICAgICAgIG5wLm9uZXMoKDksIDEyKSksCi0tICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQp KSwKLS0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDQpKSwKLS0gICAgICAgICAgICAgICAg MCwKLS0gICAgICAgICAgICAgICAgMywKLS0gICAgICAgICAgICAgICAgTm9uZSwgICMgQmxvY2tl ZCBxdWFudGl6YXRpb24gaXMgZGVmaW5lZCBmb3IgMS1EIGJsb2NrcyBvbmx5Ci0tICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQsIDUs IDYpKSwKLS0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCkpLAotLSAgICAgICAgICAgICAg ICBucC56ZXJvcygoMywgNCkpLAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAg ICAyLAotLSAgICAgICAgICAgICAgICBOb25lLCAgIyBTY2FsZSBhbmQgWlAgbXVzdCBoYXZlIHRo ZSBzYW1lIHJhbmsgYXMgdGhlIGlucHV0Ci0tICAgICAgICAgICAgKSwKLS0gICAgICAgIF0KLS0g ICAgKQotLSAgICBkZWYgdGVzdF9ibG9ja2VkX2RlcXVhbnRpemVfbGluZWFyKAotLSAgICAgICAg c2VsZiwgeCwgc2NhbGUsIHplcm9fcG9pbnQsIGF4aXMsIGJsb2NrX3NpemUsIGV4cGVjdGVkCi0t ICAgICk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclBy b3RvLklOVDgsIFtOb25lXSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZ IiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKLS0KLS0gICAgICAgIHNjYWxlX2RhdGEgPSBu cC5hcnJheShzY2FsZSwgZHR5cGU9bnAuZmxvYXQzMikKLS0gICAgICAgIHpwX2RhdGEgPSBucC5h cnJheSh6ZXJvX3BvaW50LCBkdHlwZT1ucC5pbnQ4KQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21v ZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiRGVx dWFudGl6ZUxpbmVhciIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgWyJYIiwgInNjYWxlIiwg Inplcm8iXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbIlkiXSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBheGlzPWF4aXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6 ZT1ibG9ja19zaXplLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICAgICAgImciLAotLSAgICAgICAgICAgICAgICBbWF0sCi0tICAgICAg ICAgICAgICAgIFtZXSwKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAg bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgInNjYWxlIiwgVGVuc29yUHJv dG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUsIHNjYWxlX2RhdGEKLS0gICAgICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigiemVybyIsIFRlbnNvclBy b3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUsIHpwX2RhdGEpLAotLSAgICAgICAgICAgICAgICBd LAotLSAgICAgICAgICAgICkKLS0gICAgICAgICkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2 YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIGRhdGEgPSBucC5hcnJheSh4LCBkdHlwZT1ucC5pbnQ4 KQotLQotLSAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgZXhw ZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwgZHR5cGU9bnAuZmxvYXQzMikKLS0gICAgICAgICAg ICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLSAgICAgICAgICAgIGFzc2VydF9h bGxjbG9zZShleHBlY3RlZCwgZ290WzBdKQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICB3 aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotLSAgICAgICAgICAgICAgICByZWYu cnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLQotICAgICBkZWYgdGVzdF9scm4oc2VsZik6Ci0gICAg ICAgICBkZWYgX2V4cGVjdGVkKHgsIGFscGhhLCBiZXRhLCBiaWFzLCBzaXplKToKLSAgICAgICAg ICAgICBzcXVhcmVfc3VtID0gbnAuemVyb3MoKDUsIDUsIDUsIDUpKS5hc3R5cGUobnAuZmxvYXQz MikKLUBAIC00MTg5LDUyICszODI2LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1 bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBnb3QgPSBfY29udl9pbXBsZW1lbnRhdGlvbl9p bTJjb2woKipmZWVkcywgKiprd2FyZ3MpCi0gICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZXhwZWN0 ZWQsIGdvdCkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0t ICAgICAgICBbCi0tICAgICAgICAgICAgKCJSZWR1Y2VTdW0iLCksCi0tICAgICAgICAgICAgKCJS ZWR1Y2VMMSIsKSwKLS0gICAgICAgICAgICAoIlJlZHVjZUwyIiwpLAotLSAgICAgICAgICAgICgi UmVkdWNlTWluIiwpLAotLSAgICAgICAgICAgICgiUmVkdWNlTWF4IiwpLAotLSAgICAgICAgICAg ICgiUmVkdWNlUHJvZCIsKSwKLS0gICAgICAgICAgICAoIlJlZHVjZVN1bVNxdWFyZSIsKSwKLS0g ICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9yZWR1Y2Vfb3Bfbm9fYXhpcyhzZWxmLCBv cCk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3Rv LkZMT0FULCBOb25lKQotLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBU ZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKLS0gICAgICAgIGRhdGEgPSBucC5hcmFuZ2UoNikucmVz aGFwZSgoMSwgMywgMikpLmFzdHlwZShucC5mbG9hdDMyKQotLSAgICAgICAgbm9kZXMgPSBbbWFr ZV9ub2RlKG9wLCBbIlgiXSwgWyJZIl0sIGtlZXBkaW1zPTApXQotLSAgICAgICAgbW9kZWwgPSBt YWtlX21vZGVsKG1ha2VfZ3JhcGgobm9kZXMsICJnIiwgW1hdLCBbWV0pKQotLSAgICAgICAgcmVm ID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25l LCB7IlgiOiBkYXRhfSkKLS0gICAgICAgIHIgPSBnb3RbMF0KLS0gICAgICAgIHNlbGYuYXNzZXJ0 SXNJbnN0YW5jZShyLCBucC5uZGFycmF5KQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnNo YXBlLCAoKSkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoWygx LCksICgyLCksICgzLCksICg0LCksICg1LCksICg2LCldKQotLSAgICBkZWYgdGVzdF9wYWQoc2Vs ZiwgZGltKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsIE5vbmUpCi0tICAgICAgICBQID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi UCIsIFRlbnNvclByb3RvLklOVDY0LCBOb25lKQotLSAgICAgICAgViA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlYiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKLS0gICAgICAgIFkgPSBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCi0tICAgICAg ICB2YWx1ZSA9IG5wLmFycmF5KFstNV0sIGR0eXBlPW5wLmZsb2F0MzIpCi0tCi0tICAgICAgICBu b2RlID0gbWFrZV9ub2RlKCJQYWQiLCBpbnB1dHM9WyJYIiwgIlAiLCAiViJdLCBvdXRwdXRzPVsi WSJdLCBtb2RlPSJjb25zdGFudCIpCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9n cmFwaChbbm9kZV0sICJnIiwgW1gsIFAsIFZdLCBbWV0pKQotLSAgICAgICAgcmVmID0gUmVmZXJl bmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgeCA9IG5wLmFycmF5KFsxXSwgZHR5cGU9bnAu ZmxvYXQzMikucmVzaGFwZSgoMSwpICogZGltKQotLQotLSAgICAgICAgcCA9IG5wLmFycmF5KFsx LCAxXSAqIGRpbSwgZHR5cGU9bnAuaW50NjQpCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUs IHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1ZX0pWzBdCi0tICAgICAgICBzZWxmLmFzc2VydEVx dWFsKGdvdC5zaGFwZSwgKDMsKSAqIGRpbSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290 LmR0eXBlLCBucC5mbG9hdDMyKQotLQotLSAgICAgICAgcCA9IG5wLnJlcGVhdChbNywgM10sIGRp bSkuYXN0eXBlKG5wLmludDY0KQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiB4 LCAiUCI6IHAsICJWIjogdmFsdWV9KVswXQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3Qu c2hhcGUsICgxMSwpICogZGltKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3QuZHR5cGUs IG5wLmZsb2F0MzIpCi0tCi0gICAgIGRlZiB0ZXN0X2NvbnN0YW50X29mX3NoYXBlKHNlbGYpOgot ICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9B VCwgTm9uZSkKLSAgICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29y UHJvdG8uRkxPQVQsIE5vbmUpCi1AQCAtNTM0NSwxMjQgKzQ5MzYsNiBAQCBjbGFzcyBUZXN0UmVm ZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIGZvciBpIGluIHJh bmdlKDIsIC0xLCAtMSk6Ci0gICAgICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkW2ld LCBnb3RbaV0pCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAot LSAgICAgICAgWwotLSAgICAgICAgICAgIChbImFiYyIsICJkZWYiXSwgWyIuY29tIiwgIi5uZXQi XSwgWyJhYmMuY29tIiwgImRlZi5uZXQiXSwgKDIsKSksCi0tICAgICAgICAgICAgKFsiY2F0Iiwg ImRvZyIsICJzbmFrZSJdLCBbInMiXSwgWyJjYXRzIiwgImRvZ3MiLCAic25ha2VzIl0sICgzLCkp LAotLSAgICAgICAgICAgICgiY2F0IiwgInMiLCAiY2F0cyIsICgpKSwKLS0gICAgICAgICAgICAo WyJhIiwgIsOfIiwgInkiXSwgWyJhIiwgIsOfIiwgInkiXSwgWyJhYSIsICLDn8OfIiwgInl5Il0s ICgzLCkpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3N0cmluZ19jb25jYXQo c2VsZiwgYSwgYiwgZXhwZWN0ZWQsIGV4cGVjdGVkX3NoYXBlKToKLS0gICAgICAgIEEgPSBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJBIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQotLSAgICAg ICAgQiA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIkIiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5v bmUpCi0tICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3Rv LlNUUklORywgTm9uZSkKLS0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIs IGlucHV0cz1bIkEiLCAiQiJdLCBvdXRwdXRzPVsiWSJdKQotLSAgICAgICAgbW9kZWwgPSBtYWtl X21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAiZyIsIFtBLCBCXSwgW1ldKSkKLS0gICAgICAgIHJl ZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIHJlc3VsdCwgKl8gPSByZWYu cnVuKE5vbmUsIHsiQSI6IG5wLmFycmF5KGEpLCAiQiI6IG5wLmFycmF5KGIpfSkKLS0gICAgICAg IG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCi0tICAgICAg ICBzZWxmLmFzc2VydEluKHJlc3VsdC5kdHlwZS5raW5kLCB7Ik8iLCAiVSJ9KQotLSAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc2hhcGUsIGV4cGVjdGVkX3NoYXBlKQotLQotLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAg ICAgICAoCi0tICAgICAgICAgICAgICAgIFsiMSwyLDMiLCAiNCw1LDYiXSwKLS0gICAgICAgICAg ICAgICAgIiwiLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBbWyIx IiwgIjIiLCAiMyJdLCBbIjQiLCAiNSIsICI2Il1dLAotLSAgICAgICAgICAgICAgICBbMywgM10s Ci0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsiMSwi LCAiNCw2IiwgIiJdLAotLSAgICAgICAgICAgICAgICAiLCIsCi0tICAgICAgICAgICAgICAgIE5v bmUsCi0tICAgICAgICAgICAgICAgIFtbIjEiLCAiIl0sIFsiNCIsICI2Il0sIFsiIiwgIiJdXSwK LS0gICAgICAgICAgICAgICAgWzIsIDIsIDFdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgKAotLSAgICAgICAgICAgICAgICBbIjEiLCAiNCw2IiwgIjQsNSw2Il0sCi0tICAgICAgICAg ICAgICAgICIsIiwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAgICAgW1siMSIs ICIiXSwgWyI0IiwgIjYiXSwgWyI0IiwgIjUsNiJdXSwKLS0gICAgICAgICAgICAgICAgWzEsIDIs IDJdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBb WyIxLCIsICI0LDYiLCAiNCw1LDYiXSwgWyIxLCIsICI0LDYiLCAiNCw1LDYiXV0sCi0tICAgICAg ICAgICAgICAgICIsIiwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAg WwotLSAgICAgICAgICAgICAgICAgICAgW1siMSIsICIiLCAiIl0sIFsiNCIsICI2IiwgIiJdLCBb IjQiLCAiNSIsICI2Il1dLAotLSAgICAgICAgICAgICAgICAgICAgW1siMSIsICIiLCAiIl0sIFsi NCIsICI2IiwgIiJdLCBbIjQiLCAiNSIsICI2Il1dLAotLSAgICAgICAgICAgICAgICBdLAotLSAg ICAgICAgICAgICAgICBbWzIsIDIsIDNdLCBbMiwgMiwgM11dLAotLSAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBbImhlbGxvIHdvcmxkICEiLCAiICBoZWxs byAgIHdvcmxkICEiLCAiIGhlbGxvIHdvcmxkICAgISAiXSwKLS0gICAgICAgICAgICAgICAgTm9u ZSwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCi0tICAgICAgICAgICAgICAgICAg ICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8i LCAid29ybGQiLCAiISJdLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBb MywgMywgM10sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAg ICAgIFsiaGVsbG8gd29ybGQgISIsICIgIGhlbGxvICAgd29ybGQgISIsICIgaGVsbG8gd29ybGQg ICAhICJdLAotLSAgICAgICAgICAgICAgICAiIiwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0g ICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIs ICIhIl0sCi0tICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKLS0g ICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAotLSAgICAgICAgICAg ICAgICBdLAotLSAgICAgICAgICAgICAgICBbMywgMywgM10sCi0tICAgICAgICAgICAgKSwKLS0g ICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsiby1uLW4tLXgtIiwgIm8tbi0tLS1ueCJd LAotLSAgICAgICAgICAgICAgICAiLSIsCi0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAg ICAgICAgICAgIFtbIm8iLCAibiIsICJuIiwgIiIsICJ4IiwgIiJdLCBbIm8iLCAibiIsICIiLCAi IiwgIiIsICJueCJdXSwKLS0gICAgICAgICAgICAgICAgWzYsIDZdLAotLSAgICAgICAgICAgICks Ci0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAg IiAiLAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICBucC5hcnJheShbXSku cmVzaGFwZSgoMCwgMCkpLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICApLAot LSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdCgKLS0gICAgICAg IHNlbGYsCi0tICAgICAgICB4LAotLSAgICAgICAgZGVsaW1pdGVyLAotLSAgICAgICAgbWF4c3Bs aXQsCi0tICAgICAgICBleHBlY3RlZF9zcGxpdCwKLS0gICAgICAgIGV4cGVjdGVkX251bV9zcGxp dHMsCi0tICAgICk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRl bnNvclByb3RvLlNUUklORywgKE5vbmUpKQotLSAgICAgICAgU3BsaXRzID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiU3BsaXRzIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoTm9uZSkpCi0tICAgICAg ICBNYXhTcGxpdHMgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJNYXhTcGxpdHMiLCBUZW5zb3JQ cm90by5JTlQzMiwgKE5vbmUpKQotLSAgICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgKLS0gICAgICAg ICAgICAiU3RyaW5nU3BsaXQiLAotLSAgICAgICAgICAgIGlucHV0cz1bIlgiXSwKLS0gICAgICAg ICAgICBvdXRwdXRzPVsiU3BsaXRzIiwgIk1heFNwbGl0cyJdLAotLSAgICAgICAgICAgIGRlbGlt aXRlcj1kZWxpbWl0ZXIsCi0tICAgICAgICAgICAgbWF4c3BsaXQ9bWF4c3BsaXQsCi0tICAgICAg ICApCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwg W1hdLCBbU3BsaXRzLCBNYXhTcGxpdHNdKSkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1 YXRvcihtb2RlbCkKLS0gICAgICAgIHggPSBucC5hcnJheSh4LCBkdHlwZT1vYmplY3QpCi0tICAg ICAgICByZXN1bHQsIG51bV9zcGxpdHMsICpfID0gcmVmLnJ1bihOb25lLCB7IlgiOiB4fSkKLS0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKHJlc3VsdCwgbnAuYXJyYXkoZXhw ZWN0ZWRfc3BsaXQsIGR0eXBlPW9iamVjdCkpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9h cnJheV9lcXVhbCgKLS0gICAgICAgICAgICBudW1fc3BsaXRzLCBucC5hcnJheShleHBlY3RlZF9u dW1fc3BsaXRzLCBkdHlwZT1ucC5pbnQ2NCkKLS0gICAgICAgICkKLS0KLSAgICAgZGVmIHRlc3Rf cWxpbmVhcmNvbnZfaW50OChzZWxmKToKLSAgICAgICAgIG5vZGUgPSBtYWtlX25vZGUoCi0gICAg ICAgICAgICAgIlFMaW5lYXJNYXRNdWwiLAotQEAgLTU1MzMsNDcgKzUwMDYsNiBAQCBjbGFzcyBU ZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgICAgICBu cC5hcnJheShbWzQxLCAtMTIsIC05XSwgWzEsIC03NSwgMjBdXSwgZHR5cGU9bnAuaW50OCksIGdv dFswXQotICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4 cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsid3d3 Lmdvb2dsZS5jb20iLCAid3d3LmZhY2Vib29rLmNvbSIsICJ3d3cuYmJjLmNvLnVrIl0sCi0tICAg ICAgICAgICAgICAgIHIid3d3XC5bXHcuLV0rXC5cYmNvbVxiIiwKLS0gICAgICAgICAgICAgICAg W1RydWUsIFRydWUsIEZhbHNlXSwKLS0gICAgICAgICAgICAgICAgKDMsKSwKLS0gICAgICAgICAg ICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgW1siT25ueCIsICJ0ZW5zb3Jm bG93IiwgIk51bXB5Il0sIFsiUHl0b3JjaCIsICJDeXRob24iLCAibnVtYmEiXV0sCi0tICAgICAg ICAgICAgICAgIHIiXltBLVpdW2Etel0qJCIsCi0tICAgICAgICAgICAgICAgIFtbVHJ1ZSwgRmFs c2UsIFRydWVdLCBbVHJ1ZSwgVHJ1ZSwgRmFsc2VdXSwKLS0gICAgICAgICAgICAgICAgKDIsIDMp LAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgICAgICAiYWNjb3VudEBnbWFpbC5jb20iLAotLSAgICAgICAgICAgICAg ICAgICAgImFjY291bnRAaG90bWFpbC5jb20iLAotLSAgICAgICAgICAgICAgICAgICAgIm5vdCBl bWFpbCIsCi0tICAgICAgICAgICAgICAgICAgICAiYWNjb3VudDJAeWFob28uY29tIiwKLS0gICAg ICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgciIoXFd8XilbXHcuXC1dezAsMjV9QCh5 YWhvb3xnbWFpbClcLmNvbShcV3wkKSIsCi0tICAgICAgICAgICAgICAgIFtUcnVlLCBGYWxzZSwg RmFsc2UsIFRydWVdLAotLSAgICAgICAgICAgICAgICAoNCwpLAotLSAgICAgICAgICAgICksCi0t ICAgICAgICBdCi0tICAgICkKLS0gICAgQHVuaXR0ZXN0LnNraXBJZigKLS0gICAgICAgIHN5cy5w bGF0Zm9ybSA9PSAid2luMzIiLCAiZ29vZ2xlLXJlMiBwYWNrYWdlIGlzIG5vdCBidWlsdCBmb3Ig d2luMzIiCi0tICAgICkKLS0gICAgZGVmIHRlc3RfcmVnZXhfZnVsbF9tYXRjaChzZWxmLCB4LCBw YXR0ZXJuLCBleHBlY3RlZCwgZXhwZWN0ZWRfc2hhcGUpOgotLSAgICAgICAgWCA9IG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUpCi0tICAgICAgICBZ ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkJPT0wsIE5vbmUpCi0t ICAgICAgICBub2RlID0gbWFrZV9ub2RlKCJSZWdleEZ1bGxNYXRjaCIsIGlucHV0cz1bIlgiXSwg b3V0cHV0cz1bIlkiXSwgcGF0dGVybj1wYXR0ZXJuKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21v ZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAiZyIsIFtYXSwgW1ldKSkKLS0gICAgICAgIHJlZiA9IFJl ZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIHJlc3VsdCwgKl8gPSByZWYucnVuKE5v bmUsIHsiWCI6IG5wLmFycmF5KHgpfSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5 X2VxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Vs dC5kdHlwZS5raW5kLCAiYiIpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zaGFw ZSwgZXhwZWN0ZWRfc2hhcGUpCi0tCi0gICAgIEB1bml0dGVzdC5za2lwSWYoCi0gICAgICAgICBz eXMucGxhdGZvcm0gPT0gIndpbjMyIiwgImdvb2dsZS1yZTIgcGFja2FnZSBpcyBub3QgYnVpbHQg Zm9yIHdpbjMyIgotICAgICApCi1AQCAtNTU4NiwxMTggKzUwMTgsNiBAQCBjbGFzcyBUZXN0UmVm ZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIHdpdGggc2VsZi5h c3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgcmVmLnJ1bihOb25lLCB7Ilgi OiBucC5hcnJheShbIngiXSl9KQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVk LmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFRl bnNvclByb3RvLlVJTlQ0LAotLSAgICAgICAgICAgICAgICBbLTEsIDAsIDEuNSwgMiwgMy4zLCAx MCwgMjAsIDQwXSwKLS0gICAgICAgICAgICAgICAgWzAsIDAsIDIsIDIsIDQsIDEwLCAyMCwgMzBd LAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBbLTEs IDAsIDEuNSwgMiwgMy4zLCAxMCwgNDBdLCBbMCwgMCwgMiwgMiwgNCwgMTAsIDMwXSksCi0tICAg ICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBbMF0sIFswXSksCi0tICAgICAgICAgICAgKAot LSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ0LAotLSAgICAgICAgICAgICAgICBbLTIw LCAtMTQuNSwgMCwgMS41LCAyLCAzLjMsIDEwLCAyMF0sCi0tICAgICAgICAgICAgICAgIFstMTYs IC0xNCwgMCwgMiwgMiwgNCwgMTAsIDE0XSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAg ICgKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNCwKLS0gICAgICAgICAgICAgICAg Wy0yMCwgLTE0LjUsIDAsIDEuNSwgMiwgMy4zLCAxMF0sCi0tICAgICAgICAgICAgICAgIFstMTYs IC0xNCwgMCwgMiwgMiwgNCwgMTBdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKFRl bnNvclByb3RvLklOVDQsIFswXSwgWzBdKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBAdW5p dHRlc3Quc2tpcElmKAotLSAgICAgICAgdmVyc2lvbl91dGlscy5udW1weV9vbGRlcl90aGFuKCIx LjIyLjAiKSwKLS0gICAgICAgICJUaGUgdGVzdCByZXF1aXJlcyBudW1weSAxLjIyLjAgb3IgbGF0 ZXIiLAotLSAgICApCi0tICAgIGRlZiB0ZXN0X3F1YW50aXplX2xpbmVhcl9pbnQ0KHNlbGYsIHF0 eXBlLCBkYXRhLCBleHBlY3RlZCk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0pCi0tICAgICAgICBZID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0pCi0tICAgICAgICBt b2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAg ICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgWyJzY2FsZSJdLAotLSAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKCJzY2FsZSIsIFRlbnNvclByb3RvLkZMT0FULCBbMV0sIFsyLjBd KSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCi0tICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbInplcm8iXSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiemVybyIsIHF0eXBlLCBbMV0s IFswXSksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKCJRdWFudGl6ZUxpbmVhciIsIFsiWCIsICJzY2FsZSIsICJ6ZXJvIl0sIFsiVCJdKSwK LS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiRGVxdWFudGl6ZUxpbmVhciIsIFsiVCIs ICJzY2FsZSJdLCBbIlkiXSwgYXhpcz0wKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICAgICAgImciLAotLSAgICAgICAgICAgICAgICBbWF0sCi0tICAgICAgICAgICAgICAgIFtZ XSwKLS0gICAgICAgICAgICApCi0tICAgICAgICApCi0tICAgICAgICByZWYgPSBSZWZlcmVuY2VF dmFsdWF0b3IobW9kZWwpCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFz YXJyYXkoZGF0YSl9KQotLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBnb3RbMF0p Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAg aXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5z b3JQcm90by5GTE9BVDE2KSwKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDQsIFRlbnNv clByb3RvLklOVDQpLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2Nhc3RfaW50 NF9vdXRwdXQoc2VsZiwgY2FzdF9mcm9tLCBjYXN0X3RvKToKLS0gICAgICAgIFggPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJYIiwgY2FzdF9mcm9tLCBbTm9uZV0pCi0tICAgICAgICBZID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIGNhc3RfdG8sIFtOb25lXSkKLS0gICAgICAgIG1vZGVs ID0gbWFrZV9tb2RlbCgKLS0gICAgICAgICAgICBtYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAg ICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlgiXSwgWyJZIl0s IHRvPWNhc3RfdG8pLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAiZyIs Ci0tICAgICAgICAgICAgICAgIFtYXSwKLS0gICAgICAgICAgICAgICAgW1ldLAotLSAgICAgICAg ICAgICkKLS0gICAgICAgICkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2Rl bCkKLS0gICAgICAgIGRhdGEgPSBucC5hcnJheShbMCwgMSwgMi40LCAyLjYsIDQsIDEwXSwgZHR5 cGU9bnAuZmxvYXQzMikKLS0gICAgICAgIHNpZ25lZCA9IGNhc3RfdG8gPT0gVGVuc29yUHJvdG8u SU5UNAotLSAgICAgICAgZXhwZWN0ZWQxID0gbnAuYXJyYXkoCi0tICAgICAgICAgICAgW3N1YmJ5 dGUuZmxvYXQzMl90b180Yml0X3VucGFja2VkKHgsIHNpZ25lZD1zaWduZWQpIGZvciB4IGluIGRh dGFdCi0tICAgICAgICApCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9 KQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZDEudG9saXN0KCksIGdvdFswXS50 b2xpc3QoKSkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0t ICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlO VDQsIFRlbnNvclByb3RvLklOVDQpLAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5GTE9BVCwg VGVuc29yUHJvdG8uRkxPQVQxNiksCi0tICAgICAgICApCi0tICAgICkKLS0gICAgZGVmIHRlc3Rf Y2FzdF9pbnQ0X2lucHV0KHNlbGYsIGNhc3RfZnJvbSwgY2FzdF90byk6Ci0tICAgICAgICBYID0g bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIGNhc3RfZnJvbSwgW05vbmVdKQotLSAgICAgICAg WSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBjYXN0X3RvLCBbTm9uZV0pCi0tICAgICAg ICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0s IFsiWSJdLCB0bz1UZW5zb3JQcm90by5GTE9BVCksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAg ICAgICAgICAgICAgICJnIiwKLS0gICAgICAgICAgICAgICAgW1hdLAotLSAgICAgICAgICAgICAg ICBbWV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICAgICAgcmVmID0gUmVmZXJl bmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KHJhbmdlKDcpLCBk dHlwZT1ucC5mbG9hdDMyKQotLSAgICAgICAgY2FzdF9mcm9tX25wID0gY3VzdG9tLnVpbnQ0IGlm IGNhc3RfZnJvbSA9PSBUZW5zb3JQcm90by5VSU5UNCBlbHNlIGN1c3RvbS5pbnQ0Ci0tICAgICAg ICBleHBlY3RlZDEgPSBucC5hcnJheSgKLS0gICAgICAgICAgICBbc3ViYnl0ZS5mbG9hdDMyX3Rv XzRiaXRfdW5wYWNrZWQoeCwgY2FzdF9mcm9tX25wKSBmb3IgeCBpbiBkYXRhXQotLSAgICAgICAg KQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKLS0gICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQxLnRvbGlzdCgpLCBnb3RbMF0udG9saXN0KCkpCi0tCi0g ICAgIGRlZiB0ZXN0X2FfZnVuY3Rpb25fY2FsbGluZ19hX2Z1bmN0aW9uX29uY2Uoc2VsZik6Ci0g ICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FU LCBbIk4iXSkKLSAgICAgICAgIG91dHB1dCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1 dCIsIFRlbnNvclByb3RvLkZMT0FULCBbIk4iXSkKLUBAIC01OTMwLDk3ICs1MjUwLDYgQEAgY2xh c3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBm b3IgdiBpbiBvaW5mLmZ1bmN0aW9uc18udmFsdWVzKCk6Ci0gICAgICAgICAgICAgc2VsZi5hc3Nl cnRJc0luc3RhbmNlKHYsIE15UmVmZXJlbmNlRXZhbHVhdG9yKQotIAotLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoIlVJ TlQ0IiwgMC44NCksCi0tICAgICAgICAgICAgKCJJTlQ0IiwgMC44NCksCi0tICAgICAgICAgICAg KCJGTE9BVDhFNE0zRk4iLCAwLjIzKSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTlVaIiwg MC4yMyksCi0tICAgICAgICAgICAgKCJGTE9BVDhFNU0yIiwgMC44NSksCi0tICAgICAgICAgICAg KCJGTE9BVDhFNU0yRk5VWiIsIDAuODUpLAotLSAgICAgICAgICAgICgiRE9VQkxFIiwgMCksCi0t ICAgICAgICAgICAgKCJGTE9BVCIsIDApLAotLSAgICAgICAgICAgICgiRkxPQVQxNiIsIDJlLTMp LAotLSAgICAgICAgICAgICgiQkZMT0FUMTYiLCAyZS0yKSwKLS0gICAgICAgIF0KLS0gICAgKQot LSAgICBAc2tpcF9pZl9ub19tbF9kdHlwZXMKLS0gICAgZGVmIHRlc3RfYWRkX2N1c3RvbV9kdHlw ZShzZWxmLCBzdHlwZSwgYXRvbCk6Ci0tICAgICAgICBpdHlwZSA9IGdldGF0dHIoVGVuc29yUHJv dG8sIHN0eXBlKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlhjIl0sIHRvPWl0eXBlKSwKLS0gICAgICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWSJdLCBbIlljIl0sIHRvPWl0eXBlKSwKLS0gICAgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQWRkIiwgWyJYYyIsICJZYyJdLCBbIlpjIl0pLAotLSAg ICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJaYyJdLCBbIloiXSwgdG89VGVu c29yUHJvdG8uRkxPQVQpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAi bmQiLAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSks Ci0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29y UHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSksCi0tICAgICAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJaIiwgVGVuc29yUHJvdG8u RkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSldLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCAxOCldLAotLSAgICAgICAgICAgIGly X3ZlcnNpb249OSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1 YXRvcihtb2RlbCwgdmVyYm9zZT0wKQotLQotLSAgICAgICAgeCA9IChucC5hcmFuZ2UoMTgpIC8g NikucmVzaGFwZSgoMiwgMywgMykpLmFzdHlwZShucC5mbG9hdDMyKQotLSAgICAgICAgeSA9IChu cC5hcmFuZ2UoMTgpIC8gOSkucmVzaGFwZSgoMiwgMywgMykpLmFzdHlwZShucC5mbG9hdDMyKQot LSAgICAgICAgZmVlZHMgPSBkaWN0KFg9eCwgWT15KQotLSAgICAgICAgZXhwZWN0ZWQgPSB4ICsg eQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCBmZWVkcylbMF0KLS0gICAgICAgIGFzc2Vy dF9hbGxjbG9zZShleHBlY3RlZCwgZ290LCBhdG9sPWF0b2wpCi0tCi0tICAgIEBwYXJhbWV0ZXJp emVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgiRE9V QkxFIiwpLAotLSAgICAgICAgICAgICgiRkxPQVQiLCksCi0tICAgICAgICAgICAgKCJGTE9BVDE2 IiwpLAotLSAgICAgICAgICAgICgiQkZMT0FUMTYiLCksCi0tICAgICAgICAgICAgIyBDb21wYXJp c29uIGZhaWxzIHdpdGggbWxfZHR5cGVzCi0tICAgICAgICAgICAgIyAoIkZMT0FUOEU0TTNGTiIs ICksCi0tICAgICAgICAgICAgIyAoIkZMT0FUOEU0TTNGTlVaIiwgKSwKLS0gICAgICAgICAgICAj ICgiRkxPQVQ4RTVNMiIsICksCi0tICAgICAgICAgICAgIyAoIkZMT0FUOEU1TTJGTlVaIiwgKSwK LS0gICAgICAgICAgICAjICgiSU5UNCIsICksCi0tICAgICAgICAgICAgIyAoIlVJTlQ0IiwgKSwK LS0gICAgICAgIF0KLS0gICAgKQotLSAgICBAc2tpcF9pZl9ub19tbF9kdHlwZXMKLS0gICAgZGVm IHRlc3RfY21wX2N1c3RvbV9kdHlwZShzZWxmLCBzdHlwZSk6Ci0tICAgICAgICBpdHlwZSA9IGdl dGF0dHIoVGVuc29yUHJvdG8sIHN0eXBlKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAot LSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlhjIl0sIHRvPWl0eXBlKSwKLS0g ICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWSJdLCBbIlljIl0sIHRvPWl0 eXBlKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiR3JlYXRlciIsIFsiWGMiLCAi WWMiXSwgWyJaYyJdKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsi WmMiXSwgWyJaIl0sIHRvPVRlbnNvclByb3RvLkJPT0wpLAotLSAgICAgICAgICAgICAgICBdLAot LSAgICAgICAgICAgICAgICAibmQiLAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtO b25lLCBOb25lLCBOb25lXSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSksCi0tICAg ICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJaIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSldLAotLSAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCAxOCld LAotLSAgICAgICAgICAgIGlyX3ZlcnNpb249OSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIHJl ZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0KLS0gICAgICAgIHggPSAobnAuYXJhbmdl KDE4KSAvIDE4KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tICAgICAg ICB5ID0gKChucC5hcmFuZ2UoMTgpIC0gOSkgLyAxOCkucmVzaGFwZSgoMiwgMywgMykpLmFzdHlw ZShucC5mbG9hdDMyKQotLSAgICAgICAgZmVlZHMgPSBkaWN0KFg9eCwgWT15KQotLSAgICAgICAg ZXhwZWN0ZWQgPSB4ID49IHkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgZmVlZHMpWzBd Ci0tICAgICAgICBhc3NlcnRfYWxtb3N0X2VxdWFsKGV4cGVjdGVkLCBnb3QpCi0tCi0gICAgIGRl ZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHNfNGQoc2VsZik6Ci0gICAgICAgICBtb2RlbCA9IG1ha2Vf bW9kZWwoCi0gICAgICAgICAgICAgbWFrZV9ncmFwaCgKLWRpZmYgLS1naXQgYS9vbm54L3Rlc3Qv c2NoZW1hX3Rlc3QucHkgYi9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkKLWluZGV4IGI0MGY5MzNm Ny4uMWQ3NGZjZGE0IDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5Ci0rKysg Yi9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkKLUBAIC03LDggKzcsNiBAQCBpbXBvcnQgY29udGV4 dGxpYgotIGltcG9ydCB1bml0dGVzdAotIGZyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQotIAot LWltcG9ydCBwYXJhbWV0ZXJpemVkCi0tCi0gaW1wb3J0IG9ubngKLSBmcm9tIG9ubnggaW1wb3J0 IGRlZnMKLSAKLUBAIC0yMTEsMzQgKzIwOSw2IEBAIGNsYXNzIFRlc3RGb3JtYWxQYXJhbWV0ZXIo dW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgKQotIAotIAotLWNsYXNzIFRlc3RUeXBlQ29u c3RyYWludFBhcmFtKHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFy YW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKCJzaW5nbGVfdHlw ZSIsICJUIiwgWyJ0ZW5zb3IoZmxvYXQpIl0sICJUZXN0IGRlc2NyaXB0aW9uIiksCi0tICAgICAg ICAgICAgKAotLSAgICAgICAgICAgICAgICAiZG91YmxlX3R5cGVzIiwKLS0gICAgICAgICAgICAg ICAgIlQiLAotLSAgICAgICAgICAgICAgICBbInRlbnNvcihmbG9hdCkiLCAidGVuc29yKGludDY0 KSJdLAotLSAgICAgICAgICAgICAgICAiVGVzdCBkZXNjcmlwdGlvbiIsCi0tICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAoInR1cGxlIiwgIlQiLCAoInRlbnNvcihmbG9hdCkiLCAidGVuc29y KGludDY0KSIpLCAiVGVzdCBkZXNjcmlwdGlvbiIpLAotLSAgICAgICAgXQotLSAgICApCi0tICAg IGRlZiB0ZXN0X2luaXQoCi0tICAgICAgICBzZWxmLAotLSAgICAgICAgXzogc3RyLAotLSAgICAg ICAgdHlwZV9wYXJhbV9zdHI6IHN0ciwKLS0gICAgICAgIGFsbG93ZWRfdHlwZXM6IFNlcXVlbmNl W3N0cl0sCi0tICAgICAgICBkZXNjcmlwdGlvbjogc3RyLAotLSAgICApIC0+IE5vbmU6Ci0tICAg ICAgICB0eXBlX2NvbnN0cmFpbnQgPSBkZWZzLk9wU2NoZW1hLlR5cGVDb25zdHJhaW50UGFyYW0o Ci0tICAgICAgICAgICAgdHlwZV9wYXJhbV9zdHIsIGFsbG93ZWRfdHlwZXMsIGRlc2NyaXB0aW9u Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGVfY29uc3RyYWludC5k ZXNjcmlwdGlvbiwgZGVzY3JpcHRpb24pCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGVf Y29uc3RyYWludC5hbGxvd2VkX3R5cGVfc3RycywgbGlzdChhbGxvd2VkX3R5cGVzKSkKLS0gICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LnR5cGVfcGFyYW1fc3RyLCB0eXBl X3BhcmFtX3N0cikKLS0KLS0KLSBjbGFzcyBUZXN0QXR0cmlidXRlKHVuaXR0ZXN0LlRlc3RDYXNl KToKLSAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKLSAgICAgICAgIG5hbWUgPSAidGVzdF9hdHRy IgotQEAgLTI2MSwxNjkgKzIzMSw1IEBAIGNsYXNzIFRlc3RBdHRyaWJ1dGUodW5pdHRlc3QuVGVz dENhc2UpOgotICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYXR0cjEgZGVzY3JpcHRpb24iLCBh dHRyaWJ1dGUuZGVzY3JpcHRpb24pCi0gCi0gCi0tQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXpl ZF9jbGFzcygKLS0gICAgWwotLSAgICAgICAgIyByZWdpc3RlciB0byBleGlzdCBkb21haW4KLS0g ICAgICAgIHsKLS0gICAgICAgICAgICAib3BfdHlwZSI6ICJDdXN0b21PcCIsCi0tICAgICAgICAg ICAgIm9wX3ZlcnNpb24iOiA1LAotLSAgICAgICAgICAgICJvcF9kb21haW4iOiAiIiwKLS0gICAg ICAgICAgICAidHJhcF9vcF92ZXJzaW9uIjogWzEsIDIsIDYsIDddLAotLSAgICAgICAgfSwKLS0g ICAgICAgICMgcmVnaXN0ZXIgdG8gbmV3IGRvbWFpbgotLSAgICAgICAgewotLSAgICAgICAgICAg ICJvcF90eXBlIjogIkN1c3RvbU9wIiwKLS0gICAgICAgICAgICAib3BfdmVyc2lvbiI6IDUsCi0t ICAgICAgICAgICAgIm9wX2RvbWFpbiI6ICJ0ZXN0IiwKLS0gICAgICAgICAgICAidHJhcF9vcF92 ZXJzaW9uIjogWzEsIDIsIDYsIDddLAotLSAgICAgICAgfSwKLS0gICAgXQotLSkKLS1jbGFzcyBU ZXN0T3BTY2hlbWFSZWdpc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0tICAgIG9wX3R5cGU6IHN0 cgotLSAgICBvcF92ZXJzaW9uOiBpbnQKLS0gICAgb3BfZG9tYWluOiBzdHIKLS0gICAgIyByZWdp c3RlciBzb21lIGZha2Ugc2NoZW1hIHRvIGNoZWNrIGJlaGF2aW9yCi0tICAgIHRyYXBfb3BfdmVy c2lvbjogbGlzdFtpbnRdCi0tCi0tICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25lOgotLSAgICAg ICAgIyBFbnN1cmUgdGhlIHNjaGVtYSBpcyB1bnJlZ2lzdGVyZWQKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RmFsc2Uob25ueC5kZWZzLmhhcyhzZWxmLm9wX3R5cGUsIHNlbGYub3BfZG9tYWluKSkKLS0K LS0gICAgZGVmIHRlYXJEb3duKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICAjIENsZWFuIHVwIHRo ZSByZWdpc3RlcmVkIHNjaGVtYQotLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBf b3BfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKLS0gICAgICAgICAgICB3aXRoIGNvbnRleHRs aWIuc3VwcHJlc3Mob25ueC5kZWZzLlNjaGVtYUVycm9yKToKLS0gICAgICAgICAgICAgICAgb25u eC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKHNlbGYub3BfdHlwZSwgdmVyc2lvbiwgc2VsZi5vcF9k b21haW4pCi0tCi0tICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX211bHRpX3NjaGVtYShzZWxmKToKLS0g ICAgICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVy c2lvbl06Ci0tICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAg ICAgICAgICAgc2VsZi5vcF90eXBlLAotLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwK LS0gICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAg b25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCi0tICAgICAgICAgICAgc2VsZi5h c3NlcnRUcnVlKG9ubnguZGVmcy5oYXMoc2VsZi5vcF90eXBlLCB2ZXJzaW9uLCBzZWxmLm9wX2Rv bWFpbikpCi0tICAgICAgICBmb3IgdmVyc2lvbiBpbiBbKnNlbGYudHJhcF9vcF92ZXJzaW9uLCBz ZWxmLm9wX3ZlcnNpb25dOgotLSAgICAgICAgICAgICMgQWxzbyBtYWtlIHN1cmUgdGhlIGBvcF9z Y2hlbWFgIGlzIGFjY2Vzc2libGUgYWZ0ZXIgcmVnaXN0ZXIKLS0gICAgICAgICAgICByZWdpc3Rl cmVkX29wID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCi0tICAgICAgICAgICAgICAgIG9wX3NjaGVt YS5uYW1lLCB2ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluCi0tICAgICAgICAgICAgKQotLSAgICAg ICAgICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCi0tICAgICAgICAgICAgICAgIHNlbGYu b3BfdHlwZSwKLS0gICAgICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCi0tICAgICAgICAgICAg ICAgIHZlcnNpb24sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwoc3RyKHJlZ2lzdGVyZWRfb3ApLCBzdHIob3Bfc2NoZW1hKSkKLS0KLS0gICAgZGVmIHRlc3Rf dXNpbmdfdGhlX3NwZWNpZmllZF92ZXJzaW9uX2luX29ubnhfY2hlY2soc2VsZik6Ci0tICAgICAg ICBpbnB1dCA9IGYiIiIKLS0gICAgICAgICAgICA8Ci0tICAgICAgICAgICAgICAgIGlyX3ZlcnNp b246IDcsCi0tICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydDogWwotLSAgICAgICAgICAgICAg ICAgICAgIntzZWxmLm9wX2RvbWFpbn0iIDoge3NlbGYub3BfdmVyc2lvbn0KLS0gICAgICAgICAg ICAgICAgXQotLSAgICAgICAgICAgID4KLS0gICAgICAgICAgICBhZ3JhcGggKGZsb2F0W04sIDEy OF0gWCwgaW50MzIgWSkgPT4gKGZsb2F0W05dIFopCi0tICAgICAgICAgICAge3sKLS0gICAgICAg ICAgICAgICAgWiA9IHtzZWxmLm9wX2RvbWFpbn0ue3NlbGYub3BfdHlwZX08YXR0cjE9WzEsMl0+ KFgsIFkpCi0tICAgICAgICAgICAgfX0KLS0gICAgICAgICAgICIiIgotLSAgICAgICAgbW9kZWwg PSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChpbnB1dCkKLS0gICAgICAgIG9wX3NjaGVtYSA9IGRl ZnMuT3BTY2hlbWEoCi0tICAgICAgICAgICAgc2VsZi5vcF90eXBlLAotLSAgICAgICAgICAgIHNl bGYub3BfZG9tYWluLAotLSAgICAgICAgICAgIHNlbGYub3BfdmVyc2lvbiwKLS0gICAgICAgICAg ICBpbnB1dHM9WwotLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hLkZvcm1hbFBhcmFtZXRl cigiaW5wdXQxIiwgIlQiKSwKLS0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVtYS5Gb3JtYWxQ YXJhbWV0ZXIoImlucHV0MiIsICJpbnQzMiIpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgb3V0cHV0cz1bCi0tICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFsUGFyYW1l dGVyKCJvdXRwdXQxIiwgIlQiKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIHR5cGVf Y29uc3RyYWludHM9WygiVCIsIFsidGVuc29yKGZsb2F0KSJdLCAiIildLAotLSAgICAgICAgICAg IGF0dHJpYnV0ZXM9WwotLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hLkF0dHJpYnV0ZSgK LS0gICAgICAgICAgICAgICAgICAgICJhdHRyMSIsIGRlZnMuT3BTY2hlbWEuQXR0clR5cGUuSU5U UywgImF0dHIxIGRlc2NyaXB0aW9uIgotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICkKLS0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVj a2VyLlZhbGlkYXRpb25FcnJvcik6Ci0tICAgICAgICAgICAgb25ueC5jaGVja2VyLmNoZWNrX21v ZGVsKG1vZGVsLCBjaGVja19jdXN0b21fZG9tYWluPVRydWUpCi0tICAgICAgICBvbm54LmRlZnMu cmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0gICAgICAgICMgVGhlIGZha2Ugc2NoZW1hIHdp bGwgcmFpc2UgY2hlY2sgZXhjZXB0aW9uIGlmIHNlbGVjdGVkIGluIGNoZWNrZXIKLS0gICAgICAg IGZvciB2ZXJzaW9uIGluIHNlbGYudHJhcF9vcF92ZXJzaW9uOgotLSAgICAgICAgICAgIG9ubngu ZGVmcy5yZWdpc3Rlcl9zY2hlbWEoCi0tICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEoCi0t ICAgICAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCi0tICAgICAgICAgICAgICAgICAgICBz ZWxmLm9wX2RvbWFpbiwKLS0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24sCi0tICAgICAgICAg ICAgICAgICAgICBvdXRwdXRzPVsKLS0gICAgICAgICAgICAgICAgICAgICAgICBkZWZzLk9wU2No ZW1hLkZvcm1hbFBhcmFtZXRlcigib3V0cHV0MSIsICJpbnQzMiIpLAotLSAgICAgICAgICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICkKLS0gICAgICAgIG9u bnguY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCwgY2hlY2tfY3VzdG9tX2RvbWFpbj1UcnVlKQot LQotLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl9zY2hlbWFfcmFpc2VzX2Vycm9yX3doZW5fcmVnaXN0 ZXJpbmdfYV9zY2hlbWFfdHdpY2Uoc2VsZik6Ci0tICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9w U2NoZW1hKAotLSAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKLS0gICAgICAgICAgICBzZWxmLm9w X2RvbWFpbiwKLS0gICAgICAgICAgICBzZWxmLm9wX3ZlcnNpb24sCi0tICAgICAgICApCi0tICAg ICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0gICAgICAgIHdpdGgg c2VsZi5hc3NlcnRSYWlzZXMob25ueC5kZWZzLlNjaGVtYUVycm9yKToKLS0gICAgICAgICAgICBv bm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0KLS0gICAgZGVmIHRlc3RfZGVy ZWdpc3Rlcl90aGVfc3BlY2lmaWVkX3NjaGVtYShzZWxmKToKLS0gICAgICAgIGZvciB2ZXJzaW9u IGluIFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbl06Ci0tICAgICAgICAg ICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAgICAgICAgICAgc2VsZi5vcF90 eXBlLAotLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKLS0gICAgICAgICAgICAgICAg dmVyc2lvbiwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVy X3NjaGVtYShvcF9zY2hlbWEpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9ubnguZGVm cy5oYXMob3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVtYS5kb21haW4pKQotLSAgICAg ICAgb25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYS5uYW1lLCBzZWxmLm9wX3Zl cnNpb24sIG9wX3NjaGVtYS5kb21haW4pCi0tICAgICAgICBmb3IgdmVyc2lvbiBpbiBzZWxmLnRy YXBfb3BfdmVyc2lvbjoKLS0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob25ueC5kZWZzLmhh cyhvcF9zY2hlbWEubmFtZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbikpCi0tICAgICAgICAj IE1heWJlIGhhcyBsZXNzZXIgb3AgdmVyc2lvbiBpbiB0cmFwIGxpc3QKLS0gICAgICAgIGlmIG9u bnguZGVmcy5oYXMob3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRv bWFpbik6Ci0tICAgICAgICAgICAgc2NoZW1hID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCi0tICAg ICAgICAgICAgICAgIG9wX3NjaGVtYS5uYW1lLCBzZWxmLm9wX3ZlcnNpb24sIG9wX3NjaGVtYS5k b21haW4KLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHNjaGVt YS5zaW5jZV92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb24pCi0tCi0tICAgIGRlZiB0ZXN0X2RlcmVn aXN0ZXJfc2NoZW1hX3JhaXNlc19lcnJvcl93aGVuX29wc2NoZW1hX2RvZXNfbm90X2V4aXN0KHNl bGYpOgotLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmRlZnMuU2NoZW1hRXJy b3IpOgotLSAgICAgICAgICAgIG9ubnguZGVmcy5kZXJlZ2lzdGVyX3NjaGVtYShzZWxmLm9wX3R5 cGUsIHNlbGYub3BfdmVyc2lvbiwgc2VsZi5vcF9kb21haW4pCi0tCi0tICAgIGRlZiB0ZXN0X2xl Z2FjeV9zY2hlbWFfYWNjZXNzaWJsZV9hZnRlcl9kZXJlZ2lzdGVyKHNlbGYpOgotLSAgICAgICAg b3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAgICAgICBzZWxmLm9wX3R5cGUsCi0t ICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCi0tICAgICAgICAgICAgc2VsZi5vcF92ZXJzaW9u LAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hl bWEpCi0tICAgICAgICBzY2hlbWFfYSA9IG9ubnguZGVmcy5nZXRfc2NoZW1hKAotLSAgICAgICAg ICAgIG9wX3NjaGVtYS5uYW1lLCBvcF9zY2hlbWEuc2luY2VfdmVyc2lvbiwgb3Bfc2NoZW1hLmRv bWFpbgotLSAgICAgICAgKQotLSAgICAgICAgc2NoZW1hX2IgPSBvbm54LmRlZnMuZ2V0X3NjaGVt YShvcF9zY2hlbWEubmFtZSwgb3Bfc2NoZW1hLmRvbWFpbikKLS0KLS0gICAgICAgIGRlZiBmaWx0 ZXJfc2NoZW1hKHNjaGVtYXMpOgotLSAgICAgICAgICAgIHJldHVybiBbb3AgZm9yIG9wIGluIHNj aGVtYXMgaWYgb3AubmFtZSA9PSBvcF9zY2hlbWEubmFtZV0KLS0KLS0gICAgICAgIHNjaGVtYV9j ID0gZmlsdGVyX3NjaGVtYShvbm54LmRlZnMuZ2V0X2FsbF9zY2hlbWFzKCkpCi0tICAgICAgICBz Y2hlbWFfZCA9IGZpbHRlcl9zY2hlbWEob25ueC5kZWZzLmdldF9hbGxfc2NoZW1hc193aXRoX2hp c3RvcnkoKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNjaGVtYV9jKSwgMSkKLS0g ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNjaGVtYV9kKSwgMSkKLS0gICAgICAgICMgQXZv aWQgbWVtb3J5IHJlc2lkdWUgYW5kIGFjY2VzcyBzdG9yYWdlIGFzIG11Y2ggYXMgcG9zc2libGUK LS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9hKSwgc3RyKG9wX3NjaGVtYSkp Ci0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFfYiksIHN0cihvcF9zY2hlbWEp KQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2NbMF0pLCBzdHIob3Bfc2No ZW1hKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9kWzBdKSwgc3RyKG9w X3NjaGVtYSkpCi0tCi0tCi0gaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAgdW5pdHRl c3QubWFpbigpCi1kaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5 IGIvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5Ci1pbmRleCA5ZTZiOTZiNWIuLjI0 MjViYzMzOSAxMDA2NDQKLS0tLSBhL29ubngvdGVzdC9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQot KysrIGIvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5Ci1AQCAtMTAsNyArMTAsNiBA QCBmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBTZXF1ZW5jZQotIAotIGltcG9ydCBudW1weSBhcyBu cAotIGltcG9ydCBweXRlc3QKLS1mcm9tIHBhcmFtZXRlcml6ZWQgaW1wb3J0IHBhcmFtZXRlcml6 ZWQKLSAKLSBpbXBvcnQgb25ueC5zaGFwZV9pbmZlcmVuY2UKLSBmcm9tIG9ubnggaW1wb3J0ICgK LUBAIC0yMzgsODYgKzIzNyw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJ bmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMzAsIDQsIDUpKV0KLSAgICAgICAgICkKLSAK LS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIp KQotLSAgICBkZWYgdGVzdF90cmFuc3Bvc2Uoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJYIiwgVGVu c29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRy YW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAg ICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRl bnNvclByb3RvLkZMT0FULCAoMywgMiwgNCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bv c2UiKSkKLS0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3ByZWV4aXN0aW5nKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgWygiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAg ICBbbWFrZV9ub2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0s Ci0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5G TE9BVCwgTm9uZSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlRyYW5zcG9zZSIpKQotLSAgICBkZWYgdGVzdF90cmFuc3Bvc2Vfc2NhbGFyKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgWygiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSldLAotLSAgICAgICAgICAgIFtd LAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAg ICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikp Ci0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9wYXJ0aWFsKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygi WCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9u b2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCi0tICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5VTkRFRklORUQs ICgzLCAiYSIsICJiIikpXSwKLS0gICAgICAgICkgICMgdHlwZTogaWdub3JlCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIsIDQp KV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCi0tICAgIGRlZiB0ZXN0X3RyYW5z cG9zZV9wcmVleGlzdGluZ19pbmNvcnJlY3Rfc2hhcGUoc2VsZiwgKl8pIC0+IE5vbmU6Ci0tICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygiWCIsIFRlbnNv clByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFu c3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDUsIDUsIDUpKV0s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVy ZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCi0tICAgIGRl ZiB0ZXN0X3RyYW5zcG9zZV9wcmVleGlzdGluZ19pbmNvcnJlY3RfdHlwZShzZWxmLCAqXykgLT4g Tm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb KCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAgIFttYWtl X25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKLS0gICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlNUUklORywg KDMsIDIsIDQpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54 LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3Nl IikpCi0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9pbmNvcnJlY3RfcmVwZWF0ZWRfcGVybShzZWxm LCAqXykgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAgICAg ICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMV0p XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFp c2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwg Z3JhcGgpCi0tCi0gICAgIGRlZiBfbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bigKLSAg ICAgICAgIHNlbGYsIHZlcnNpb24sIHNoYXBlMTogU2VxdWVuY2VbaW50XSwgc2hhcGUyOiBTZXF1 ZW5jZVtpbnRdCi0gICAgICkgLT4gTm9uZToKLUBAIC0zMjcsMTM0MyArMjQ2LDU5IEBAIGNsYXNz IFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAg KS5zaGFwZQotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUxKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxP QVQsIHNoYXBlMildLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIk1hdE11bCIsIFsieCIsICJ5 Il0sIFsieiJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfb3V0 X3NoYXBlKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiTWF0TXVsIikpCi0tICAgIGRlZiB0ZXN0X21h dG11bF9hbGxfZGltc19rbm93bihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAg c2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwp KQotLQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJz aW9uLCAoNCwgMiksICgyLCA0KSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxs X2RpbXNfa25vd24odmVyc2lvbiwgKDUsIDIpLCAoMiwgNCkpCi0tICAgICAgICBzZWxmLl9tYWtl X21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg1LCAyKSwgKDIsIDEpKQotLSAg ICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMSwg MiksICgyLCAzKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25v d24odmVyc2lvbiwgKDIsKSwgKDIsIDMpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVz dF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNCwgMiksICgyLCkpCi0tICAgICAgICBzZWxmLl9t YWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgxLCA0LCAyKSwgKDMsIDIs IDMpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJz aW9uLCAoMywgNCwgMiksICgzLCAyLCAzKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rl c3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDUsIDEsIDQsIDIpLCAoMSwgMywgMiwgMykpCi0t ICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0 LCAyKSwgKDMsIDIsIDMpKQotLQotLSAgICBkZWYgX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5r bm93bigKLS0gICAgICAgIHNlbGYsIHZlcnNpb24sIHNoYXBlMTogQW55LCBzaGFwZTI6IEFueSwg ZXhwZWN0ZWRfb3V0X3NoYXBlOiBBbnkKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9B VCwgc2hhcGUxKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlMildLAotLSAgICAgICAg ICAgIFttYWtlX25vZGUoIk1hdE11bCIsIFsieCIsICJ5Il0sIFsieiJdKV0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoi LCBUZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfb3V0X3NoYXBlKV0sCi0tICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiTWF0TXVsIikpCi0tICAgIGRlZiB0ZXN0X21hdG11bF9hbGxvd191bmtub3duKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2Fs bG93X3Vua25vd24odmVyc2lvbiwgKE5vbmUsKSwgKE5vbmUsKSwgKCkpCi0tICAgICAgICBzZWxm Ll9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDMsKSwgKE5vbmUsKSwg KCkpCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lv biwgKDIsKSwgKDIsICJhIiksICgiYSIsKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rl c3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoNCwgMiksICgyLCAiYSIpLCAoNCwgImEiKSkKLS0g ICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoNCwg Tm9uZSksICgyLCAiYSIpLCAoNCwgImEiKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rl c3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoNCwgTm9uZSksIChOb25lLCAiYSIpLCAoNCwgImEi KSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bigKLS0gICAg ICAgICAgICB2ZXJzaW9uLCAoMSwgNCwgMiksICgiYSIsIDIsIDUpLCAoImEiLCA0LCA1KQotLSAg ICAgICAgKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKAot LSAgICAgICAgICAgIHZlcnNpb24sICgxLCAzLCA0LCAyKSwgKCJhIiwgMiwgNSksICgxLCAzLCA0 LCA1KQotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191 bmtub3duKHZlcnNpb24sICgzLCksIE5vbmUsIE5vbmUpCi0tICAgICAgICBzZWxmLl9tYWtlX21h dG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgTm9uZSwgTm9uZSwgTm9uZSkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNhc3QiKSkKLS0gICAg ZGVmIHRlc3RfY2FzdChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9B VCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdCIsIFsieCJdLCBb InkiXSwgdG89VGVuc29yUHJvdG8uVUlOVDgpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJ TlQ4LCAoMiwgNCwgMykpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDYXN0IikpCi0tICAgIEB1bml0 dGVzdC5za2lwKAotLSAgICAgICAgIklzc3VlICM1OTYwIgotLSAgICApICAjIEZJWE1FKCM1OTYw KSBwcm9wYWdhdGVFbGVtVHlwZUZyb21BdHRyaWJ1dGVUb091dHB1dCBkb2VzIG5vdCB2YWxpZGF0 ZSBhZ2FpbnN0IG91dHB1dCB0eXBlIGNvbnN0cmFpbnRzCi0tICAgIGRlZiB0ZXN0X2Nhc3RfdG9f Y29tcGxleChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOiAgIyBub3FhOiBBUkcwMDIKLS0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNhc3Qi LCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLkNPTVBMRVgxMjgpXSwKLS0gICAgICAgICAg ICBbXSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hh cGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDYXN0TGlrZSIpKQot LSAgICBkZWYgdGVzdF9jYXN0X2xpa2Uoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCA0LCAzKSksICgidCIsIFRlbnNvclByb3RvLkZMT0FUMTYsICgiTiIs KSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNhc3RMaWtlIiwgWyJ4IiwgInQiXSwgWyJ5 Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FUMTYsICgyLCA0LCAzKSldLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQotLSAgICBkZWYgdGVzdF9jb2wyaW0oc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9B VCwgKDEsIDUsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29sMklt IiwgWyJpbnB1dCIsICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sIFsib3V0cHV0Il0K LS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0t ICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigi b3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg1LCA1KSksCi0tICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsKSwgKDEsIDUpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEs IDUsIDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikpCi0tICAgIGRlZiB0ZXN0X2Nv bDJpbV9zdHJpZGVzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlu cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA5LCA0KSksCi0tICAgICAgICAgICAgICAgICgi b3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgICAg ICAoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAg ICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAg ICAgICAgICAgICAgICAgIkNvbDJJbSIsCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0Iiwg Im91dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsi b3V0cHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPVsyLCAyXSwKLS0gICAgICAg ICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3No YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg1LCA1KSksCi0tICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDMs IDMpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEsIDUsIDUpKV0s Ci0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikpCi0tICAgIGRlZiB0ZXN0X2NvbDJpbV9wYWRz KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29y UHJvdG8uRkxPQVQsICgxLCA1LCAxNSkpLAotLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICAgICAgKCJrZXJuZWxf c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAg ICAgICJDb2wySW0iLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIsICJvdXRwdXRfc2hh cGUiLCAia2VybmVsX3NoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAot LSAgICAgICAgICAgICAgICAgICAgcGFkcz1bMCwgMSwgMCwgMV0sCi0tICAgICAgICAgICAgICAg ICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRp YWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9zaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpLCAoNSwgNSkpLAotLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgxLCA1KSksCi0t ICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA1LCA1KSldLAotLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQotLSAgICBkZWYgdGVzdF9jb2wyaW1fZGlsYXRpb25zKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxLCA0LCA1KSksCi0tICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAg ICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAg IkNvbDJJbSIsCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0IiwgIm91dHB1dF9zaGFwZSIs ICJrZXJuZWxfc2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0sCi0tICAg ICAgICAgICAgICAgICAgICBkaWxhdGlvbnM9WzEsIDVdLAotLSAgICAgICAgICAgICAgICApCi0t ICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXpl cj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io Imtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMiwgMikpLAotLSAgICAg ICAgICAgIF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o Im91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNiwgNikpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJDb2wySW0iKSkKLS0gICAgZGVmIHRlc3RfY29sMmltXzVkKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx LCAxMCwgMTIpKSwKLS0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKDMsKSksCi0tICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVuc29y UHJvdG8uSU5UNjQsICgzLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29sMkltIiwg WyJpbnB1dCIsICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sIFsib3V0cHV0Il0KLS0g ICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0 cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgzLCA0LCA1KSksCi0tICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDMsKSwgKDEsIDEsIDUpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEs IDIsIDMsIDQsIDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0IikpCi0tICAgIGRlZiB0 ZXN0X2NvbmNhdChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwg KDIsIDQsIDMpKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg3LCA0LCAzKSldLAotLSAgICAg ICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5Il0sIFsieiJdLCBheGlzPTApXSwK LS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoOSwgNCwgMykpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJDb25jYXQiKSkKLS0gICAgZGVmIHRlc3RfY29uY2F0X21pc3Npbmdfc2hhcGUoc2Vs ZiwgKl8pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAg ICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs IDQsIDMpKSwKLS0gICAgICAgICAgICAgICAgInkiLAotLSAgICAgICAgICAgICAgICAoInoiLCBU ZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUpKSwKLS0gICAgICAgICAgICBdLAot LSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5IiwgInoiXSwgWyJvdXQi XSwgYXhpcz0wKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm LmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5f aW5mZXJyZWQsIGdyYXBoKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiQ29uY2F0IikpCi0tICAgIGRlZiB0ZXN0X2NvbmNhdF8zZF9heGlzXzIoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAyLCAyKSksICgieSIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgMiwgMikpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJDb25jYXQiLCBbIngiLCAieSJdLCBbInoiXSwgYXhpcz0yKV0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDIsIDQpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0Iikp Ci0tICAgIGRlZiB0ZXN0X2NvbmNhdF9wYXJhbShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgMikpLCAoInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJh IiwgMykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSJdLCBb InoiXSwgYXhpcz0xKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgNSkp XSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKLS0gICAgZGVmIHRlc3RfY29uY2F0X3Bh cmFtX3NpbmdsZV9pbnB1dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKCJhIiwgMikpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngi XSwgWyJ6Il0sIGF4aXM9MCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIs IDIpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9yZXNo YXBlX2R5bmFtaWNfc2hhcGVfa25vd25fcmFuayhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgot LSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE0LCAiUmFuayBpbmZlcmVuY2UgaXMgYWRk ZWQgZnJvbSBWZXJzaW9uIDE0IikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUo IlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLlVJTlQ4LCAoTm9uZSwgTm9uZSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0t Ci0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikp Ci0tICAgIGRlZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY19zaGFwZV9zeW1ib2xpYyhzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJS ZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5VSU5UOCwgTm9uZSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKLS0gICAgZGVm IHRlc3RfcmVzaGFwZV9keW5hbWljX3Vua25vd25fc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90 by5JTlQ2NCwgTm9uZSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngi LCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCBOb25l KV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBl X3N0YXRpY19zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5U OCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCi0tICAg ICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigi c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDMsIDgpKV0sCi0tICAgICAgICApCi0t ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwg KDMsIDgpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9y ZXNoYXBlX3N0YXRpY19zaGFwZV9pbmZlcnJlZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0 LCAoMywpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFw ZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVy PVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDAsIDMsIC0x KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAg ICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uVUlOVDgsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hh cGUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfemVybyhzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDEsIDEpKSwgKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVz aGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDMsKSwgKDAsIDEsIDEpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDEsIDEpKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19zaGFw ZV9hbGxvd3plcm8oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tp cElmKHZlcnNpb24gPCAxNCwgImFsbG93emVybyBpcyBhZGRlZCBmcm9tIFZlcnNpb24gMTQiKQot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgxLCAwLCAwKSksCi0tICAgICAg ICAgICAgICAgICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSksCi0tICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0s IFsieSJdLCBhbGxvd3plcm89MSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGlu aXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwg KDAsIDEsIDEpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDAsIDEsIDEpKV0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19zaGFwZV9jb25zdGFu dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMp KV0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAg ICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1t YWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDMsIDgpKSwKLS0g ICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJSZXNoYXBlIiwg WyJ4IiwgInNoYXBlIl0sIFsieSJdKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtd LAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAg ICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDMs IDgpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlVwc2FtcGxlIikpCi0t ICAgIGRlZiB0ZXN0X3Vwc2FtcGxlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAg ICBpZiB2ZXJzaW9uID09IDc6Ci0tICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotLSAgICAgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1 KSldLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIsIFsieCJdLCBbInki XSwgc2NhbGVzPVsxLjAsIDEuMSwgMS4zLCAxLjldKV0sCi0tICAgICAgICAgICAgICAgIFtdLAot LSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAg ICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAg ICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIsIFsi eCIsICJzY2FsZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAg ICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJz Y2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4xLCAxLjMsIDEuOSkpCi0t ICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLQotLSAgICAgICAgICAgIGRlZiBj YWxsX2luZmVyZW5jZSgpOgotLSAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSld LAotLSAgICAgICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICAgICApCi0tCi0tICAgICAg ICAgICAgaWYgdmVyc2lvbiA9PSA5OgotLSAgICAgICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgp Ci0tICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgIyBVcHNhbXBsZSBpcyBkZXBy ZWNhdGVkIHNpbmNlIFZlcnNpb24gMTAuCi0tICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3Nl cnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206Ci0tICAgICAgICAg ICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgpCi0tICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9 IGNtLmV4Y2VwdGlvbgotLSAgICAgICAgICAgICAgICBhc3NlcnQgIlVwc2FtcGxlIGlzIGRlcHJl Y2F0ZWQiIGluIHN0cihleGNlcHRpb24pCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJVcHNhbXBsZSIpKQotLSAgICBkZWYgdGVzdF91cHNhbXBsZV9yYXdf ZGF0YShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgaWYgdmVyc2lvbiA9PSA3 OgotLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMywgNCwgNSkpXSwKLS0gICAgICAgICAg ICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiXSwgWyJ5Il0sIHNjYWxlcz1bMi4wLCAx LjEsIDIuMywgMS45XSldLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICApCi0t ICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgICAgICBncmFw aCwKLS0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDIsIDMsIDksIDkpKV0sCi0tICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICAgICApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAgICAgICAoInNj YWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0g ICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiLCAic2NhbGVzIl0sIFsi eSJdKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICBpbml0aWFsaXpl cj1bCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAg ICAgICAgICAic2NhbGVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5G TE9BVCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAoNCwpLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHM9bnAuYXJyYXkoWzEuMCwgMS4xLCAxLjMsIDEuOV0sIGR0eXBlPSI8ZjQiKS50 b2J5dGVzKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCi0tICAgICAgICAg ICAgICAgICAgICApCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKSAgIyBGZWVk IHJhdyBieXRlcyAoZm9yY2UgbGl0dGxlIGVuZGlhbiBvcmRlcmluZyBsaWtlIG9ubnggc3RhbmRh cmQpIGZvciB0ZXN0IHB1cnBvc2UKLS0KLS0gICAgICAgICAgICBkZWYgY2FsbF9pbmZlcmVuY2Uo KToKLS0gICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAg ICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICAgICAgICAgKQotLQotLSAgICAgICAgICAgIGlmIHZlcnNp b24gPT0gOToKLS0gICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVuY2UoKQotLSAgICAgICAgICAg IGVsc2U6Ci0tICAgICAgICAgICAgICAgICMgVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCBzaW5jZSBW ZXJzaW9uIDEwLgotLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubngu Y2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgotLSAgICAgICAgICAgICAgICAgICAgY2Fs bF9pbmZlcmVuY2UoKQotLSAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24K LS0gICAgICAgICAgICAgICAgYXNzZXJ0ICJVcHNhbXBsZSBpcyBkZXByZWNhdGVkIiBpbiBzdHIo ZXhjZXB0aW9uKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiRXhwYW5kIikpCi0tICAgIGRlZiB0ZXN0X2V4cGFuZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFso IngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDEpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklO VDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNo YXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6 ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMiwgMSwg NikpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAg ICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywgNikpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAg ICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBh bmQiKSkKLS0gICAgZGVmIHRlc3RfZXhwYW5kX3NjYWxhcl9pbnB1dChzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKCkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgyLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAi c2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFs aXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg0LCA4 KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAg ICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uSU5UMzIsICg0LCA4KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkK LS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4cGFuZCIp KQotLSAgICBkZWYgdGVzdF9leHBhbmRfcmF3X2RhdGEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4 IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCAxKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFw ZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVy PVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAi c2hhcGUiLAotLSAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCi0tICAgICAg ICAgICAgICAgICAgICAoMiwpLAotLSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShb MywgNF0sIGR0eXBlPSI8aTgiKS50b2J5dGVzKCksCi0tICAgICAgICAgICAgICAgICAgICByYXc9 VHJ1ZSwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApICAj IEZlZWQgcmF3IGJ5dGVzIChmb3JjZSBsaXR0bGUgZW5kaWFuIG9yZGVyaW5nIGxpa2Ugb25ueCBz dGFuZGFyZCkgZm9yIHRlc3QgcHVycG9zZQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCA0KSldLAotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IkV4cGFuZCIpKQotLSAgICBkZWYgdGVzdF9leHBhbmRfZHluYW1pY19zaGFwZShzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgx LCAyLCBOb25lKSksCi0tICAgICAgICAgICAgICAgICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDMsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBh bmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICAgICBpbml0aWFsaXplcj1bXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoTm9uZSwgMiwgTm9uZSkpXSwKLS0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkKLS0gICAgZGVmIHRlc3RfZXhwYW5kX3N5bWJvbGlj X3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5z b3JQcm90by5JTlQzMiwgKDEsIDIsIE5vbmUpKSwKLS0gICAgICAgICAgICAgICAgKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoInVua19fMCIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0g ICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bXSwKLS0gICAgICAgICkK LS0gICAgICAgICMgaWYgZ2l2aW5nIGEgc3ltYm9saWMgc2hhcGUsIEV4cGFuZCBzaG91bGQgbm90 IGluZmVyIGFueSBzaGFwZSBvciByYW5rIGluZmVyZW5jZQotLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsIE5vbmUpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3NpemUoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKLS0gICAgICAgIGlmIHZlcnNpb24gPT0gMTA6Ci0tICAgICAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAg ICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAg ICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBb IngiLCAic2NhbGVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAg ICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigi c2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCksICgxLjAsIDEuMSwgMS4zLCAxLjkpKQot LSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgOSkpXSwKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVs aWYgdmVyc2lvbiA9PSAxMToKLS0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclBy b3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyb2kiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICAgICAoInNjYWxlcyIs IFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAgICAgICAgICAgICgic2l6ZXMi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIiwgInNp emVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICBp bml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigic2l6ZXMiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDQsKSwgKDMsIDUsIDYsIDcpKQotLSAgICAgICAgICAgICAgICBd LAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSwgNiwgNykpXSwKLS0gICAgICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAg ICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAotLSAgICAg ICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpKSwKLS0gICAg ICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4 IiwgInJvaSIsICIiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICAgICAgW10sCi0t ICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpLCAoMywgNSwgNiwgNykpCi0t ICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCA1LCA2 LCA3KSldLAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0 ZXN0X3Jlc2l6ZV9zaXplX2F4ZXNfMl8zKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAg ICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIp Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0g ICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAg ICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgIiIs ICJzaXplcyJdLCBbInkiXSwgYXhlcz0oMiwgMykpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAg ICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCksICg2LCA3KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA2LCA3KSldLAotLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzNf MihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lv biA8IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwg VGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21h a2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwgWyJ5Il0sIGF4ZXM9 KDMsIDIpKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21h a2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNykpXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLklOVDMyLCAoMiwgNCwgNywgNikpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0t Ci0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkK LS0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfbm90X2xhcmdlcihzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYoCi0tICAgICAgICAgICAgdmVyc2lvbiA8IDE4 LAotLSAgICAgICAgICAgICJrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgaXMgZnJvbSBWZXJzaW9u IDE4IiwKLS0gICAgICAgICkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAo MywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwp KSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwK LS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9u b2RlKAotLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6ZSIsCi0tICAgICAgICAgICAgICAgICAg ICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0s Ci0tICAgICAgICAgICAgICAgICAgICBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3k9Im5vdF9sYXJn ZXIiLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICg0LCA2KSldLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVz XzJfM19ub3RfbGFyZ2VyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxm LnNraXBJZigKLS0gICAgICAgICAgICB2ZXJzaW9uIDwgMTgsCi0tICAgICAgICAgICAgImF4ZXMg JiBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgYXJlIGZyb20gVmVyc2lvbiAxOCIsCi0tICAgICAg ICApCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwK LS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAg ICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0g ICAgICAgICAgICAgICAgICAgICJSZXNpemUiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Iiwg InJvaSIsICIiLCAic2l6ZXMiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAg ICAgICAgICAgICAgICAgYXhlcz0oMiwgMyksCi0tICAgICAgICAgICAgICAgICAgICBrZWVwX2Fz cGVjdF9yYXRpb19wb2xpY3k9Im5vdF9sYXJnZXIiLAotLSAgICAgICAgICAgICAgICApCi0tICAg ICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1b bWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSldLAot LSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAg IGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uSU5UMzIsICgyLCA0LCA0LCA2KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkK LS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIp KQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9ub3Rfc21hbGxlcihzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYoCi0tICAgICAgICAgICAgdmVyc2lvbiA8 IDE4LAotLSAgICAgICAgICAgICJrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgaXMgZnJvbSBWZXJz aW9uIDE4IiwKLS0gICAgICAgICkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMy LCAoMywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAo NCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwp KSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6ZSIsCi0tICAgICAgICAgICAgICAg ICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5 Il0sCi0tICAgICAgICAgICAgICAgICAgICBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3k9Im5vdF9z bWFsbGVyIiwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoNiwgMTApKV0s Ci0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXpl X2F4ZXNfMl8zX25vdF9zbWFsbGVyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAg ICBzZWxmLnNraXBJZigKLS0gICAgICAgICAgICB2ZXJzaW9uIDwgMTgsCi0tICAgICAgICAgICAg ImF4ZXMgJiBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgYXJlIGZyb20gVmVyc2lvbiAxOCIsCi0t ICAgICAgICApCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMs IDUpKSwKLS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSks Ci0tICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0t ICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgKLS0gICAgICAgICAgICAgICAgICAgICJSZXNpemUiLAotLSAgICAgICAgICAgICAgICAgICAg WyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAot LSAgICAgICAgICAgICAgICAgICAgYXhlcz0oMiwgMyksCi0tICAgICAgICAgICAgICAgICAgICBr ZWVwX2FzcGVjdF9yYXRpb19wb2xpY3k9Im5vdF9zbWFsbGVyIiwKLS0gICAgICAgICAgICAgICAg KQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlh bGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwg NikpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAg ICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgNiwgMTApKV0sCi0tICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAg ICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi UmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZShzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDExLCAicm9pIGlucHV0IGlz IGZyb20gVmVyc2lvbiAxMSIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwg KDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9B VCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg0LCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXpl IiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJz Y2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4xLCAxLjMsIDEuOSkpCi0t ICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlX2F4ZXNfMl8zKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwg MTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5z b3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vf bm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0sIGF4ZXM9KDIsIDMp KV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVu c29yKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSwgKDEuMywgMS45KSldLAotLSAg ICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0K LS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQot LSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGVfYXhlc18zXzIoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBW ZXJzaW9uIDE4IikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwp KSwKLS0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSks Ci0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngi LCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSwgYXhlcz0oMywgMikpXSwKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNv clByb3RvLkZMT0FULCAoMiwpLCAoMS45LCAxLjMpKV0sCi0tICAgICAgICApCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMs IDkpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6 ZV9zY2FsZV9yYXdfZGF0YShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2Vs Zi5za2lwSWYodmVyc2lvbiA8IDExLCAicm9pIGlucHV0IGlzIGZyb20gVmVyc2lvbiAxMSIpCi0t ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKSwKLS0gICAg ICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAg ICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAg IF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2Fs ZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXpl cj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAg InNjYWxlcyIsCi0tICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAg ICAgICAgICAgICAgICAgICg0LCksCi0tICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5 KFsyLjAsIDEuMSwgMi4zLCAxLjldLCBkdHlwZT0iPGY0IikudG9ieXRlcygpLAotLSAgICAgICAg ICAgICAgICAgICAgcmF3PVRydWUsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAg ICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCAzLCA5LCA5KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6 ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGVfYW5kX3NpemVfYnV0X29uZV9pc19lbXB0 eShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lv biA8IDExLCAicm9pIGlucHV0IGlzIGZyb20gVmVyc2lvbiAxMSIpCi0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngi LCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJy b2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICgic2NhbGVz IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgwLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg W21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5 Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgInNjYWxlcyIs Ci0tICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAg ICAgICAgICg0LCksCi0tICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFsyLjAsIDEu MSwgMi4zLCAxLjldLCBkdHlwZT0iPGY0IikudG9ieXRlcygpLAotLSAgICAgICAgICAgICAgICAg ICAgcmF3PVRydWUsCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgInNpemVzIiwKLS0gICAgICAgICAgICAgICAg ICAgIFRlbnNvclByb3RvLklOVDY0LAotLSAgICAgICAgICAgICAgICAgICAgKDAsKSwKLS0gICAg ICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXkoW10sIGR0eXBlPSI8aTgiKS50b2J5dGVzKCks Ci0tICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAgICAgKSwKLS0g ICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCAzLCA5LCA5KSldLAotLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfb3BzZXQxMV9zY2FsZXNfaXNf ZW1wdHkoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZl cnNpb24gIT0gMTEsICJUaGlzIHRlc3Qgb25seSB3b3JrcyBmb3IgVmVyc2lvbiAxMSIpCi0tICAg ICAgICAjICJzY2FsZXMiIGlucHV0IGluIFJlc2l6ZSBpbiBvcHNldDExIGlzIG5vdCBvcHRpb25h bC4gSXQgbXVzdCBiZSBhbiBlbXB0eSB0ZW5zb3IKLS0gICAgICAgICMgaWYgc2l6ZXMgaXMgbmVl ZGVkLiBTaGFwZSBpbmZlcmVuY2UgZm9yIFJlc2l6ZSBzaGFsbCBoYW5kbGUgdGhpcyBjYXNlLgot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgxLCAzLCA0LCA1KSksCi0tICAg ICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAotLSAgICAgICAg ICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMCwpKSwKLS0gICAgICAgICAg ICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVz IiwgInNpemVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5p dGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAg ICAgICAgICJzaXplcyIsCi0tICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwK LS0gICAgICAgICAgICAgICAgICAgICg0LCksCi0tICAgICAgICAgICAgICAgICAgICB2YWxzPW5w LmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsyLCA2LCA4LCAxMF0sIGR0eXBlPSI8 aTgiCi0tICAgICAgICAgICAgICAgICAgICApLnRvYnl0ZXMoKSwgICMgZG91YmxlIGluIGFsbCBk aW1lbnNpb25zCi0tICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA2LCA4LCAxMCkpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKCIiLCB2ZXJz aW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJTaGFwZSIpKQotLSAgICBkZWYgdGVzdF9zaGFwZShzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAg W21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLklOVDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKLS0gICAgZGVm IHRlc3Rfc2hhcGVfc3RhcnRfMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAg c2VsZi5za2lwSWYodmVyc2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9u IDE1IikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtl X25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsieSJdLCBzdGFydD0xKV0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAg IGRlZiB0ZXN0X3NoYXBlX2VuZF8xKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAg ICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNp b24gMTUiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21h a2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIGVuZD0xKV0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDEsKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAg IGRlZiB0ZXN0X3NoYXBlX25lZ2F0aXZlX3N0YXJ0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBm cm9tIFZlcnNpb24gMTUiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAg ICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIHN0YXJ0PS0xKV0sCi0tICAg ICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsKSldLAotLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAg ICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNo YXBlIikpCi0tICAgIGRlZiB0ZXN0X3NoYXBlX2NsaXAxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFy ZSBmcm9tIFZlcnNpb24gMTUiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAg ICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIHN0YXJ0PS01KV0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3NoYXBlX2NsaXAyKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5k IGFyZSBmcm9tIFZlcnNpb24gMTUiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0t ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIGVuZD0xMCldLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0t ICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJTaXplIikpCi0tICAgIGRlZiB0ZXN0X3NpemUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK LS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLCBbbWFrZV9ub2RlKCJTaXplIiwgWyJ4Il0s IFsieSJdKV0sIFtdCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAg ICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRo ZXIiKSkKLS0gICAgZGVmIHRlc3RfZ2F0aGVyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0t ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLkZMT0FULCAoNCwgMykpLCAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSld LAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0sIFsieSJdKV0s Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMpKV0sICAjIHR5cGU6IGlnbm9y ZQotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlciIpKQotLSAgICBkZWYgdGVzdF9nYXRoZXJfYXhp czEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAzLCA1 KSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpXSwKLS0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJHYXRoZXIiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhpcz0xKV0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDEsIDIsIDUpKV0sICAjIHR5cGU6IGlnbm9yZQotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIkdhdGhlciIpKQotLSAgICBkZWYgdGVzdF9nYXRoZXJfaW50b19zY2Fs YXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCkpLCAo ImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJH YXRoZXIiLCBbIngiLCAiaSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAg KQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAot LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxP QVQsICgpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyRWxlbWVudHMiKSkKLS0gICAgZGVm IHRlc3RfZ2F0aGVyX2VsZW1lbnRzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgMikpLCAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDIpKV0sCi0t ICAgICAgICAgICAgW21ha2Vfbm9kZSgiR2F0aGVyRWxlbWVudHMiLCBbIngiLCAiaSJdLCBbInki XSwgYXhpcz0xKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIpKV0sICAj IHR5cGU6IGlnbm9yZQotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlckVsZW1lbnRzIikpCi0tICAg IGRlZiB0ZXN0X2dhdGhlcl9lbGVtZW50c19heGlzMChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlckVsZW1lbnRzIiwgWyJ4Iiwg ImkiXSwgWyJ5Il0sIGF4aXM9MCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgy LCAzKSldLCAgIyB0eXBlOiBpZ25vcmUKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyIikpCi0t ICAgIGRlZiB0ZXN0X3NjYXR0ZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAg IGlmIHZlcnNpb24gPj0gMTE6Ci0tICAgICAgICAgICAgIyBTY2F0dGVyIGlzIGRlcHJlY2F0ZWQg aW4gZG9tYWluX3ZlcnNpb24gb2YgMTEuCi0tICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh aXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBjbToKLS0gICAgICAgICAgICAg ICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24pCi0tICAgICAgICAgICAgZXhjZXB0aW9uID0g Y20uZXhjZXB0aW9uCi0tICAgICAgICAgICAgYXNzZXJ0ICJTY2F0dGVyIGlzIGRlcHJlY2F0ZWQi IGluIHN0cihleGNlcHRpb24pCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHNlbGYuX3Rl c3Rfc2NhdHRlcih2ZXJzaW9uKQotLQotLSAgICBkZWYgX3Rlc3Rfc2NhdHRlcihzZWxmLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAz KSksCi0tICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpLAot LSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMpKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBbIngiLCAiaSIs ICJ1Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKV0s Ci0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXIiKSkKLS0gICAgZGVm IHRlc3Rfc2NhdHRlcl9heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAg aWYgdmVyc2lvbiA+PSAxMToKLS0gICAgICAgICAgICAjIFNjYXR0ZXIgaXMgZGVwcmVjYXRlZCBp biBkb21haW5fdmVyc2lvbiBvZiAxMS4KLS0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp c2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgotLSAgICAgICAgICAgICAg ICBzZWxmLl90ZXN0X3NjYXR0ZXJfYXhpczEodmVyc2lvbikKLS0gICAgICAgICAgICBleGNlcHRp b24gPSBjbS5leGNlcHRpb24KLS0gICAgICAgICAgICBhc3NlcnQgIlNjYXR0ZXIgaXMgZGVwcmVj YXRlZCIgaW4gc3RyKGV4Y2VwdGlvbikKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgc2Vs Zi5fdGVzdF9zY2F0dGVyX2F4aXMxKHZlcnNpb24pCi0tCi0tICAgIGRlZiBfdGVzdF9zY2F0dGVy X2F4aXMxKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDEsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8u SU5UNjQsICgxLCAyKSksCi0tICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FU LCAoMSwgMikpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2Nh dHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0sIGF4aXM9MSldLAotLSAgICAgICAgICAgIFtd LAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAg ICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxLCA1KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkgICMg dHlwZTogaWdub3JlCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJTY2F0dGVyRWxlbWVudHMiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcl9lbGVtZW50cyhz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8u RkxPQVQsICgzLCAzKSksCi0tICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklOVDY0 LCAoMiwgMykpLAotLSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs IDMpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXJF bGVtZW50cyIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMywgMykpXSwgICMgdHlwZTogaWdub3JlCi0tICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAg ICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi U2NhdHRlckVsZW1lbnRzIikpCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHNfYXhpczEo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3Rv LkZMT0FULCAoMSwgNSkpLAotLSAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDEsIDIpKSwKLS0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx LCAyKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVy RWxlbWVudHMiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdLCBheGlzPTEpXSwKLS0gICAgICAgICAg ICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAg ICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpXSwgICMgdHlwZTogaWdub3JlCi0tICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiU2NhdHRlck5EIikpCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXJuZChzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0 LCA1LCA2KSksCi0tICAgICAgICAgICAgICAgICgiaW5kaWNlcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoMywgMywgMikpLAotLSAgICAgICAgICAgICAgICAoInVwZGF0ZXMiLCBUZW5zb3JQcm90by5G TE9BVCwgKDMsIDMsIDYpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25v ZGUoIlNjYXR0ZXJORCIsIFsieCIsICJpbmRpY2VzIiwgInVwZGF0ZXMiXSwgWyJ5Il0pXSwKLSsg ICAgICAgICAgICBbbWFrZV9ub2RlKCJNYXRNdWwiLCBbIngiLCAieSJdLCBbInoiXSldLAotICAg ICAgICAgICAgIFtdLAotICAgICAgICAgKQotICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCA1LCA2KSldLCAgIyB0eXBlOiBpZ25vcmUK LSsgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZM T0FULCBleHBlY3RlZF9vdXRfc2hhcGUpXSwKLSAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0gICAgICAgICApCi0g Ci0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyTkQi KSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcm5kX25vc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgICMgVGhlIHNoYXBlIG9mICd4X3Jlc2hhcGVkJyBjYW5ub3QgYmUgaW5m ZXJyZWQsIHNpbmNlIGl0IGlzIHRoZSBvdXRwdXQgb2YgYSBkeW5hbWljIHJlc2hhcGUuCi0tICAg ICAgICAjIFRodXMgdGhlIHNoYXBlIG9mICd5JyBpcyBhbHNvIE5vbmUuCi0rICAgIGRlZiBfbWFr ZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKAotKyAgICAgICAgc2VsZiwgdmVyc2lvbiwgc2hh cGUxOiBBbnksIHNoYXBlMjogQW55LCBleHBlY3RlZF9vdXRfc2hhcGU6IEFueQotKyAgICApIC0+ IE5vbmU6Ci0gICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg WwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwK LS0gICAgICAgICAgICAgICAgKCJpbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCAzLCAy KSksCi0tICAgICAgICAgICAgICAgICgidXBkYXRlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMywg MywgNikpLAotLSAgICAgICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgi TSIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInhfcmVzaGFwZWQiXSksCi0t ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiU2NhdHRlck5EIiwgWyJ4X3Jlc2hhcGVkIiwgImlu ZGljZXMiLCAidXBkYXRlcyJdLCBbInkiXSksCi0tICAgICAgICAgICAgXSwKLSsgICAgICAgICAg ICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlMSksICgieSIsIFRlbnNvclByb3RvLkZM T0FULCBzaGFwZTIpXSwKLSsgICAgICAgICAgICBbbWFrZV9ub2RlKCJNYXRNdWwiLCBbIngiLCAi eSJdLCBbInoiXSldLAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQotICAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieF9yZXNoYXBlZCIsIFRl bnNvclByb3RvLkZMT0FULCBOb25lKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKSwKLS0gICAgICAgICAgICBdLAot KyAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxP QVQsIGV4cGVjdGVkX291dF9zaGFwZSldLAotICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkgICMg dHlwZTogaWdub3JlCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJTcXVlZXplIikpCi0tICAgIGRlZiB0ZXN0X3NxdWVlemUoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKLS0gICAgICAgIGlmIHZlcnNpb24gPT0gMTE6Ci0tICAgICAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u RkxPQVQsICgxLCAzLCAxLCAxLCAyLCAxKSldLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2Rl KCJTcXVlZXplIiwgIngiLCAieSIsIGF4ZXM9WzAsIDIsIDMsIDVdKV0sCi0tICAgICAgICAgICAg ICAgIFtdLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMikpXSwKLS0gICAgICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDMsIDEsIDEsIDIsIDEpKSwK LS0gICAgICAgICAgICAgICAgICAgICgiYXhlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpKSwK LS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3F1ZWV6 ZSIsIFsieCIsICJheGVzIl0sICJ5IildLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAg ICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io ImF4ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSwgKDAsIDIsIDMsIDUpKQotLSAgICAgICAg ICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMikpXSwKLS0gICAg ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICkKLSsgICAgICAgICkKLSAKLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ0NvbmNhdCIpKQotLSAgICBk ZWYgdGVzdF9zdHJpbmdjb25jYXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLSsgICAgZGVm IF90ZXN0X3NjYXR0ZXIoc2VsZiwgdmVyc2lvbikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLSAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKSwKLS0gICAgICAgICAgICAgICAgKCJ5Iiwg VGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpLAotKyAgICAgICAgICAgICAgICAoIngiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKLSsgICAgICAgICAgICAgICAgKCJpIiwgVGVuc29y UHJvdG8uSU5UNjQsICgyLCAzKSksCi0rICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclByb3Rv LkZMT0FULCAoMiwgMykpLAotICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9k ZSgiU3RyaW5nQ29uY2F0IiwgWyJ4IiwgInkiXSwgInoiKV0sCi0rICAgICAgICAgICAgW21ha2Vf bm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKLSAgICAgICAgICAgICBb XSwKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAgICAgICAg ICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRl bnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKV0sCi0rICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKV0sCi0gICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiU3RyaW5nQ29uY2F0IikpCi0tICAgIGRlZiB0ZXN0X3N0cmluZ2NvbmNhdF9icm9h ZGNhc3Rpbmcoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLSsgICAgICAgICkgICMgdHlwZTog aWdub3JlCi0rICAgIGRlZiBfdGVzdF9zY2F0dGVyX2F4aXMxKHNlbGYsIHZlcnNpb24pIC0+IE5v bmU6Ci0gICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCi0t ICAgICAgICAgICAgICAgICgieSIsIFRlbnNvclByb3RvLlNUUklORywgKDEsIDMsIDEpKSwKLSsg ICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSksCi0rICAgICAg ICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpLAotKyAgICAgICAgICAg ICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKSwKLSAgICAgICAgICAgICBdLAot LSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIFsieCIsICJ5Il0sICJ6Iild LAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpXSwKLS0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJSZWdleEZ1bGxNYXRjaCIpKQotLSAgICBkZWYgdGVzdF9yZWdleF9mdWxsX21h dGNoKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDQs IDMsIDkpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVnZXhGdWxsTWF0Y2giLCBbIngi XSwgWyJ5Il0sIHBhdHRlcm49ciJeW0EtWl1bYS16XSokIildLAotLSAgICAgICAgICAgIFtdLAot LSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAg IGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uQk9PTCwgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVnZXhGdWxs TWF0Y2giKSkKLS0gICAgZGVmIHRlc3RfcmVnZXhfZnVsbF9tYXRjaF9lbXB0eV9zaGFwZShzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgpKV0sCi0tICAgICAg ICAgICAgW21ha2Vfbm9kZSgiUmVnZXhGdWxsTWF0Y2giLCBbIngiXSwgWyJ5Il0sIHBhdHRlcm49 ciJeW0EtWl1bYS16XSokIildLAotKyAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBb IngiLCAiaSIsICJ1Il0sIFsieSJdLCBheGlzPTEpXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAg ICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAgICAgICAgICAgICBncmFw aCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LkJPT0wsICgpKV0sCi0rICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKV0sCi0gICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot KyAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLSAKLSAgICAgZGVmIHRlc3Rfc3F1ZWV6ZV9ub19h eGVzX29wc2V0MTEoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLUBAIC01MzA0LDIzICszOTM5LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRl c3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICBzZWxmLl9tYWtlX21hdG11bGludGVn ZXJfdGVzdCgoNSwgMSwgNCwgMiksICgxLCAzLCAyLCAzKSkKLSAgICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsaW50ZWdlcl90ZXN0KCg0LCAyKSwgKDMsIDIsIDMpKQotIAotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoCi0tICAgICAgICBbb25ueC5UZW5zb3JQcm90by5GTE9BVCwgb25ueC5UZW5z b3JQcm90by5GTE9BVDE2LCBvbm54LlRlbnNvclByb3RvLkJGTE9BVDE2XQotLSAgICApCi0tICAg IGRlZiB0ZXN0X3F1YW50aXplbGluZWFyKHNlbGYsIGVsZW1fdHlwZSkgLT4gTm9uZToKLS0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgICgieCIsIGVsZW1fdHlwZSwgKDMwLCA0LCA1KSksCi0tICAgICAgICAgICAgICAgICgi eV9zY2FsZSIsIGVsZW1fdHlwZSwgKCkpLAotLSAgICAgICAgICAgICAgICAoInlfemVyb19wb2lu dCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICBbbWFrZV9ub2RlKCJRdWFudGl6ZUxpbmVhciIsIFsieCIsICJ5X3NjYWxlIiwgInlfemVyb19w b2ludCJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMzAsIDQsIDUpKV0KLS0gICAgICAg ICkKLS0KLSAgICAgZGVmIHRlc3RfcXVhbnRpemVsaW5lYXJfZGVmYXVsdF96cChzZWxmKSAtPiBO b25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAgIFso IngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSksICgieV9zY2FsZSIsIFRlbnNvclBy b3RvLkZMT0FULCAoKSldLAotQEAgLTU0MjYsMjMgKzQwNDQsNiBAQCBjbGFzcyBUZXN0U2hhcGVJ bmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICBncmFwaCwK LSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgW29u bnguVGVuc29yUHJvdG8uRkxPQVQsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQxNiwgb25ueC5UZW5z b3JQcm90by5CRkxPQVQxNl0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZXF1YW50aXplbGluZWFy KHNlbGYsIGVsZW1fdHlwZSkgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3Rv LlVJTlQ4LCAoMzAsIDQsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJ4X3NjYWxlIiwgZWxlbV90 eXBlLCAoKSksCi0tICAgICAgICAgICAgICAgICgieF96ZXJvX3BvaW50IiwgVGVuc29yUHJvdG8u VUlOVDgsICgpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkRl cXVhbnRpemVMaW5lYXIiLCBbIngiLCAieF9zY2FsZSIsICJ4X3plcm9fcG9pbnQiXSwgWyJ5Il0p XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBlbGVtX3R5cGUsICgzMCwgNCwgNSkpXQotLSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9k eW5hbWljcXVhbnRpemVsaW5lYXIoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKLSAgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgz MCwgNCwgNSkpXSwKLUBAIC01NTUxLDM4MyArNDE1MiwxMjUgQEAgY2xhc3MgVGVzdFNoYXBlSW5m ZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yKAotICAgICAgICAgICAgICAgICAgICAgInJlcGVhdHMiLAotICAgICAgICAgICAgICAg ICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCi0tICAgICAgICAgICAgICAgICAgICAoMywpLAotLSAg ICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShbMSwgMiwgM10sIGR0eXBlPSI8aTgiKS50 b2J5dGVzKCksCi0tICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAg ICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApICAjIEZlZWQgcmF3IGJ5dGVzIChmb3Jj ZSBsaXR0bGUgZW5kaWFuIG9yZGVyaW5nIGxpa2Ugb25ueCBzdGFuZGFyZCkgZm9yIHRlc3QgcHVy cG9zZQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgMTAs IDE4KSldCi0tICAgICAgICApCi0tCi0tICAgIGRlZiB0ZXN0X3RpbGVfcmFua19pbmZlcmVuY2Uo c2VsZikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCA1LCA2KSksICgicmVwZWF0cyIs IFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiVGls ZSIsIFsieCIsICJyZXBlYXRzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAg ICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoZ3JhcGgsIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lKSldKSAg IyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9O TlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCi0tICAgIGRlZiB0 ZXN0X2xpbmVhcmNsYXNzaWZpZXJfMURfaW5wdXQoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u RkxPQVQsICg1LCkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgKLS0gICAgICAgICAgICAgICAgICAgICJMaW5lYXJDbGFzc2lmaWVyIiwKLS0gICAgICAgICAg ICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5IiwgInoiXSwKLS0gICAg ICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAg ICAgIGNvZWZmaWNpZW50cz1bMC4wMDA4LCAtMC4wMDA4XSwKLS0gICAgICAgICAgICAgICAgICAg IGludGVyY2VwdHM9WzIuMCwgMi4wXSwKLS0gICAgICAgICAgICAgICAgICAgIGNsYXNzbGFiZWxz X2ludHM9WzEsIDJdLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK LS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsKSksCi0tICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9B VCwgKDEsIDIpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 WwotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDEpLAotLSAg ICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAg ICBdLAotLSAgICAgICAgKQotLQotLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAi T05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLS0gICAgZGVm IHRlc3RfbGluZWFyY2xhc3NpZmllcl8yRF9pbnB1dChzZWxmKSAtPiBOb25lOgotLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsIDUpKV0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiTGluZWFyQ2xhc3NpZmllciIsCi0tICAgICAg ICAgICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSIsICJ6Il0sCi0t ICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAgICAg ICAgICAgICBjb2VmZmljaWVudHM9WzAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjZdLAotLSAg ICAgICAgICAgICAgICAgICAgaW50ZXJjZXB0cz1bMi4wLCAyLjAsIDMuMF0sCi0tICAgICAgICAg ICAgICAgICAgICBjbGFzc2xhYmVsc19pbnRzPVsxLCAyLCAzXSwKLS0gICAgICAgICAgICAgICAg KQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uSU5UNjQsICg0LCkpLAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAzKSksCi0tICAgICAgICAgICAgXSwKLS0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlk KE9OTlhfTUxfRE9NQUlOLCAxKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCAxMSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgZGVmIHRl c3Rfcm9pYWxpZ25fc3ltYm9saWMoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJIIiwgIlciKSksCi0tICAgICAgICAgICAgICAg ICgicm9pcyIsIFRlbnNvclByb3RvLkZMT0FULCAoIm51bV9yb2lzIiwgNCkpLAotLSAgICAgICAg ICAgICAgICAoImJhdGNoX2luZGljZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJudW1fcm9pcyIs KSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJSb2lBbGlnbiIsCi0tICAgICAgICAgICAg ICAgICAgICBbIngiLCAicm9pcyIsICJiYXRjaF9pbmRpY2VzIl0sCi0tICAgICAgICAgICAgICAg ICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9oZWlnaHQ9MTAsCi0tICAg ICAgICAgICAgICAgICAgICBvdXRwdXRfd2lkdGg9NSwKLS0gICAgICAgICAgICAgICAgKQotLSAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCAiQyIsIDEwLCA1KSldKSAgIyB0eXBlOiBpZ25v cmUKLS0KLS0gICAgZGVmIHRlc3Rfcm9pYWxpZ25fc3ltYm9saWNfZGVmYXVsdHMoc2VsZikgLT4g Tm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJI IiwgIlciKSksCi0tICAgICAgICAgICAgICAgICgicm9pcyIsIFRlbnNvclByb3RvLkZMT0FULCAo Im51bV9yb2lzIiwgNCkpLAotLSAgICAgICAgICAgICAgICAoImJhdGNoX2luZGljZXMiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCJudW1fcm9pcyIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICBbbWFrZV9ub2RlKCJSb2lBbGlnbiIsIFsieCIsICJyb2lzIiwgImJhdGNoX2luZGljZXMi XSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5GTE9BVCwgKCJudW1fcm9pcyIsICJDIiwgMSwgMSkpXSkgICMgdHlwZTogaWdub3Jl Ci0tCi0tICAgIGRlZiB0ZXN0X3JvaWFsaWduX251bV9yb2lzKHNlbGYpIC0+IE5vbmU6Ci0tICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJOIiwgIkMiLCAiSCIsICJXIikpLAot LSAgICAgICAgICAgICAgICAoInJvaXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJudW1fcm9pcyIs IDQpKSwKLS0gICAgICAgICAgICAgICAgKCJiYXRjaF9pbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5U NjQsICgxNSwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJv aUFsaWduIiwgWyJ4IiwgInJvaXMiLCAiYmF0Y2hfaW5kaWNlcyJdLCBbInkiXSldLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKGdy YXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTUs ICJDIiwgMSwgMSkpXSkgICMgdHlwZTogaWdub3JlCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZCgKLS0gICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkxhYmVsRW5jb2RlciIpIGlmIE9OTlhf TUwgZWxzZSBbXSwgc2tpcF9vbl9lbXB0eT1UcnVlCi0tICAgICkKLS0gICAgZGVmIHRlc3RfbGFi ZWxfZW5jb2Rlcl9zdHJpbmdfaW50NjQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAg ICAgIHNlbGYuc2tpcElmKAotLSAgICAgICAgICAgIHZlcnNpb24gPCAyLCAia2V5c18qIGF0dHJp YnV0ZXMgd2VyZSBpbnRyb2R1Y2VkIGluIGFpLm9ubngubWwgb3BzZXQgMiIKLS0gICAgICAgICkK LS0gICAgICAgIHN0cmluZ19saXN0ID0gWyJBIiwgIm0iLCAieSJdCi0tICAgICAgICBmbG9hdF9s aXN0ID0gWzk0LjE3LCAzNi4wMCwgLTk5LjBdCi0tICAgICAgICBpbnQ2NF9saXN0ID0gWzEyLCAy OCwgODZdCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLlNUUklORywgKDYsIDEpKV0sCi0tICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNv ZGVyIiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgICAgICAgICAg WyJ5Il0sCi0tICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAg ICAgICAgICAgICAgICAgICBrZXlzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCi0tICAgICAgICAgICAg ICAgICAgICB2YWx1ZXNfaW50NjRzPWludDY0X2xpc3QsCi0tICAgICAgICAgICAgICAgICkKLS0g ICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICg2LCAxKSldLAot LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQotLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsIDMpKV0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAg ICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKLS0gICAg ICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCi0tICAg ICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAgICAgICAg ICAgICBrZXlzX2ludDY0cz1pbnQ2NF9saXN0LAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWVz X3N0cmluZ3M9c3RyaW5nX2xpc3QsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMykpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxf RE9NQUlOLCB2ZXJzaW9uKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCAxMSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAg ICAgWyJ4Il0sCi0tICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAg ICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfZmxv YXRzPWZsb2F0X2xpc3QsCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfaW50NjRzPWludDY0 X2xpc3QsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAg ICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsK LS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwK LS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCi0rICAgICAg ICAgICAgICAgICAgICAoMywpLAotKyAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShb MSwgMiwgM10sIGR0eXBlPSI8aTgiKS50b2J5dGVzKCksCi0rICAgICAgICAgICAgICAgICAgICBy YXc9VHJ1ZSwKLSsgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgIF0sCi0rICAgICAgICAp ICAjIEZlZWQgcmF3IGJ5dGVzIChmb3JjZSBsaXR0bGUgZW5kaWFuIG9yZGVyaW5nIGxpa2Ugb25u eCBzdGFuZGFyZCkgZm9yIHRlc3QgcHVycG9zZQotKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotKyAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLkZMT0FULCAoNCwgMTAsIDE4KSldCi0gICAgICAgICApCi0gCi0rICAgIGRlZiB0 ZXN0X3RpbGVfcmFua19pbmZlcmVuY2Uoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UNjQs ICg4LCkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0g ICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAg WyJ4Il0sCi0tICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAg IGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfaW50NjRz PWludDY0X2xpc3QsCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfZmxvYXRzPWZsb2F0X2xp c3QsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotKyAgICAgICAgICAgIFso IngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwgKCJyZXBlYXRzIiwgVGVuc29yUHJv dG8uSU5UNjQsICgzLCkpXSwKLSsgICAgICAgICAgICBbbWFrZV9ub2RlKCJUaWxlIiwgWyJ4Iiwg InJlcGVhdHMiXSwgWyJ5Il0pXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLS0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwp KV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAgICAgICAgIG1ha2Vf b3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCi0tICAgICAgICAgICAgICAgIG1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0r ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lKSldKSAgIyB0eXBl OiBpZ25vcmUKLSAKLSsgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwg cmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCi0rICAgIGRlZiB0ZXN0X2xp bmVhcmNsYXNzaWZpZXJfMURfaW5wdXQoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgpKV0sCi0rICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNSwpKV0sCi0g ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAg ICAgICAgICAiTGFiZWxFbmNvZGVyIiwKLSsgICAgICAgICAgICAgICAgICAgICJMaW5lYXJDbGFz c2lmaWVyIiwKLSAgICAgICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgICAgICAg ICAgWyJ5Il0sCi0rICAgICAgICAgICAgICAgICAgICBbInkiLCAieiJdLAotICAgICAgICAgICAg ICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAgICAga2V5 c19mbG9hdHM9ZmxvYXRfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19zdHJpbmdz PXN0cmluZ19saXN0LAotKyAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRzPVswLjAwMDgs IC0wLjAwMDhdLAotKyAgICAgICAgICAgICAgICAgICAgaW50ZXJjZXB0cz1bMi4wLCAyLjBdLAot KyAgICAgICAgICAgICAgICAgICAgY2xhc3NsYWJlbHNfaW50cz1bMSwgMl0sCi0gICAgICAgICAg ICAgICAgICkKLSAgICAgICAgICAgICBdLAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQot ICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotICAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uU1RSSU5H LCAoKSldLAotKyAgICAgICAgICAgIFsKLSsgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwpKSwKLSsgICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMikpLAot KyAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAg ICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCi0rICAgICAgICAg ICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgMSksCi0gICAgICAgICAgICAgICAg IG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotICAgICAgICAgICAgIF0sCi0gICAgICAg ICApCi0gCi0rICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVp cmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQotKyAgICBkZWYgdGVzdF9saW5lYXJj bGFzc2lmaWVyXzJEX2lucHV0KHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKDEs IDIpKV0sCi0rICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSkpXSwK LSAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAg ICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotKyAgICAgICAgICAgICAgICAgICAgIkxpbmVhckNs YXNzaWZpZXIiLAotICAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0tICAgICAgICAgICAgICAg ICAgICBbInkiXSwKLSsgICAgICAgICAgICAgICAgICAgIFsieSIsICJ6Il0sCi0gICAgICAgICAg ICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAgICAgICAgICAgICBr ZXlzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfZmxv YXRzPWZsb2F0X2xpc3QsCi0rICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudHM9WzAuMSwg MC4yLCAwLjMsIDAuNCwgMC41LCAwLjZdLAotKyAgICAgICAgICAgICAgICAgICAgaW50ZXJjZXB0 cz1bMi4wLCAyLjAsIDMuMF0sCi0rICAgICAgICAgICAgICAgICAgICBjbGFzc2xhYmVsc19pbnRz PVsxLCAyLCAzXSwKLSAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgIF0sCi0gICAgICAg ICAgICAgW10sCi0gICAgICAgICApCi0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0g ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKV0sCi0rICAgICAgICAgICAgWwotKyAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQs ICg0LCkpLAotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVu c29yUHJvdG8uRkxPQVQsICg0LCAzKSksCi0rICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBv cHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9N QUlOLCB2ZXJzaW9uKSwKLSsgICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9N QUlOLCAxKSwKLSAgICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSks Ci0gICAgICAgICAgICAgXSwKLSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKAotLSAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiTGFiZWxFbmNvZGVyIikgaWYgT05OWF9N TCBlbHNlIFtdLCBza2lwX29uX2VtcHR5PVRydWUKLS0gICAgKQotLSAgICBkZWYgdGVzdF9sYWJl bF9lbmNvZGVyX3RlbnNvcl9hdHRyaWJ1dGVzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0t ICAgICAgICBzZWxmLnNraXBJZigKLS0gICAgICAgICAgICB2ZXJzaW9uIDwgNCwgInRlbnNvciBh dHRyaWJ1dGVzIHdlcmUgaW50cm9kdWNlZCBpbiBhaS5vbm54Lm1sIG9wc2V0IDQiCi0tICAgICAg ICApCi0tICAgICAgICBrZXlfdGVuc29yID0gbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgImtl eXNfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbNF0sIFsiYSIsICJiIiwgImNjIiwgImRk ZCJdCi0tICAgICAgICApCi0tICAgICAgICB2YWx1ZXNfdGVuc29yID0gbWFrZV90ZW5zb3IoCi0t ICAgICAgICAgICAgInZhbHVlc190ZW5zb3IiLCBUZW5zb3JQcm90by5JTlQ2NCwgWzRdLCBbMSwg MiwgMywgNF0KLS0gICAgICAgICkKLSsgICAgZGVmIHRlc3Rfcm9pYWxpZ25fc3ltYm9saWMoc2Vs ZikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKLSsg ICAgICAgICAgICBbCi0rICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAo Ik4iLCAiQyIsICJIIiwgIlciKSksCi0rICAgICAgICAgICAgICAgICgicm9pcyIsIFRlbnNvclBy b3RvLkZMT0FULCAoIm51bV9yb2lzIiwgNCkpLAotKyAgICAgICAgICAgICAgICAoImJhdGNoX2lu ZGljZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJudW1fcm9pcyIsKSksCi0rICAgICAgICAgICAg XSwKLSAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAg ICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0s Ci0rICAgICAgICAgICAgICAgICAgICAiUm9pQWxpZ24iLAotKyAgICAgICAgICAgICAgICAgICAg WyJ4IiwgInJvaXMiLCAiYmF0Y2hfaW5kaWNlcyJdLAotICAgICAgICAgICAgICAgICAgICAgWyJ5 Il0sCi0tICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAg ICAgICAgICAgICAgICBrZXlzX3RlbnNvcj1rZXlfdGVuc29yLAotLSAgICAgICAgICAgICAgICAg ICAgdmFsdWVzX3RlbnNvcj12YWx1ZXNfdGVuc29yLAotLSAgICAgICAgICAgICAgICAgICAgZGVm YXVsdF90ZW5zb3I9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1 bHRfdGVuc29yIiwgVGVuc29yUHJvdG8uSU5UNjQsIFsxXSwgWzBdCi0tICAgICAgICAgICAgICAg ICAgICApLAotKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2hlaWdodD0xMCwKLSsgICAgICAg ICAgICAgICAgICAgIG91dHB1dF93aWR0aD01LAotICAgICAgICAgICAgICAgICApCi0gICAgICAg ICAgICAgXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCBOb25lLCAzLCAx MikpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFr ZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKLS0gICAgICAgICAgICAgICAgbWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkK LS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgYWxsX3ZlcnNpb25zX2Zv cigiTGFiZWxFbmNvZGVyIikgaWYgT05OWF9NTCBlbHNlIFtdLCBza2lwX29uX2VtcHR5PVRydWUK LS0gICAgKQotLSAgICBkZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3RlbnNvcl9hdHRyaWJ1dGVzX2lu dmFsaWRfY29uZmlndXJhdGlvbnMoCi0tICAgICAgICBzZWxmLCBfLCB2ZXJzaW9uCi0tICAgICkg LT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCA0LCAidGVuc29yIGF0dHJp YnV0ZXMgaW50cm9kdWNlZCBpbiBhaS5vbm54Lm1sIG9wc2V0IDQiKQotLSAgICAgICAga2V5X3Rl bnNvciA9IG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICJrZXlzX3RlbnNvciIsIFRlbnNvclBy b3RvLlNUUklORywgWzRdLCBbImEiLCAiYiIsICJjYyIsICJkZGQiXQotLSAgICAgICAgKQotLSAg ICAgICAgdmFsdWVzX3RlbnNvciA9IG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICJ2YWx1ZXNf dGVuc29yIiwgVGVuc29yUHJvdG8uSU5UNjQsIFs0XSwgWzEsIDIsIDMsIDRdCi0tICAgICAgICAp Ci0tCi0tICAgICAgICBvcHNldF9pbXBvcnRzID0gWwotLSAgICAgICAgICAgIG1ha2Vfb3BzZXRp ZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCi0tICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCAxMSksCi0tICAgICAgICBdCi0rICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgibnVtX3JvaXMiLCAiQyIsIDEwLCA1KSldKSAgIyB0eXBlOiBpZ25vcmUKLSAKLS0gICAgICAg ICMgZGVmYXVsdF90ZW5zb3Igc2hvdWxkIGJlIElOVDY0LCBzYW1lIHR5cGUgYXMgdmFsdWVzX3Rl bnNvcgotKyAgICBkZWYgdGVzdF9yb2lhbGlnbl9zeW1ib2xpY19kZWZhdWx0cyhzZWxmKSAtPiBO b25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFso IngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMsIDEyKSldLAotICAgICAgICAg ICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAg IkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAgICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAg ICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9N QUlOLAotLSAgICAgICAgICAgICAgICAgICAga2V5c190ZW5zb3I9a2V5X3RlbnNvciwKLS0gICAg ICAgICAgICAgICAgICAgIHZhbHVlc190ZW5zb3I9dmFsdWVzX3RlbnNvciwKLS0gICAgICAgICAg ICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAg ICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclByb3RvLlNUUklORywgWzFdLCBbMF0KLS0g ICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICkKLSsgICAgICAgICAgICAg ICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIpKSwKLSsgICAg ICAgICAgICAgICAgKCJyb2lzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCA0KSks Ci0rICAgICAgICAgICAgICAgICgiYmF0Y2hfaW5kaWNlcyIsIFRlbnNvclByb3RvLklOVDY0LCAo Im51bV9yb2lzIiwpKSwKLSAgICAgICAgICAgICBdLAotKyAgICAgICAgICAgIFttYWtlX25vZGUo IlJvaUFsaWduIiwgWyJ4IiwgInJvaXMiLCAiYmF0Y2hfaW5kaWNlcyJdLCBbInkiXSldLAotICAg ICAgICAgICAgIFtdLAotICAgICAgICAgKQotKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAo Im51bV9yb2lzIiwgIkMiLCAxLCAxKSldKSAgIyB0eXBlOiBpZ25vcmUKLSAKLS0gICAgICAgIHNl bGYuYXNzZXJ0UmFpc2VzKAotLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVy ZW5jZUVycm9yLAotLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAotLSAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0cywKLS0gICAgICAg ICkKLS0KLS0gICAgICAgICMgZGVmYXVsdF90ZW5zb3Igc2hvdWxkIGJlIGEgc2luZ2xldG9uIG9m IHNoYXBlICgxLCkKLSsgICAgZGVmIHRlc3Rfcm9pYWxpZ25fbnVtX3JvaXMoc2VsZikgLT4gTm9u ZToKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4 IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKLSAgICAgICAgICAg ICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJM YWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0tICAgICAgICAgICAg ICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJ TiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfdGVuc29yPWtleV90ZW5zb3IsCi0tICAgICAg ICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1bImEiLCAiYiIsICJjYyIsICJkZGQiXSwKLS0g ICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVuc29yKAotLSAgICAgICAg ICAgICAgICAgICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclByb3RvLlNUUklORywgWzEs IDJdLCBbMCwgMF0KLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICkK LSsgICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgi LCAiVyIpKSwKLSsgICAgICAgICAgICAgICAgKCJyb2lzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgi bnVtX3JvaXMiLCA0KSksCi0rICAgICAgICAgICAgICAgICgiYmF0Y2hfaW5kaWNlcyIsIFRlbnNv clByb3RvLklOVDY0LCAoMTUsKSksCi0gICAgICAgICAgICAgXSwKLSsgICAgICAgICAgICBbbWFr ZV9ub2RlKCJSb2lBbGlnbiIsIFsieCIsICJyb2lzIiwgImJhdGNoX2luZGljZXMiXSwgWyJ5Il0p XSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0 UmFpc2VzKAotLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9y LAotLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0cywKLS0gICAgICAgICkKLSsgICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDE1LCAiQyIsIDEsIDEpKV0pICAjIHR5cGU6IGlnbm9y ZQotIAotICAgICBkZWYgbWFrZV9zcGFyc2UoCi0gICAgICAgICBzZWxmLAotQEAgLTgxMzYsMTA1 ICs2NDc5LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhl bHBlcik6Ci0gICAgICAgICApCi0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoZ3JhcGgs IFtvdXRwdXRfdGVuc29yX3ZhbF9pbmZvXSkgICMgdHlwZTogaWdub3JlCi0gCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQotLSAgICBk ZWYgdGVzdF9zdHJpbmdfc3BsaXRfYmFzaWMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0g ICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAgICAgICAg ICJzdWJzdHJpbmdzIiwKLS0gICAgICAgICAgICBUZW5zb3JQcm90by5TVFJJTkcsCi0tICAgICAg ICAgICAgKDIsIE5vbmUpLAotLSAgICAgICAgKQotLSAgICAgICAgbGVuZ3RoID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpCi0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAg ICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdz IiwgImxlbmd0aCJdKV0sCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiU3RyaW5nU3BsaXQiKSkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X3N5bWJvbGljKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygKLS0gICAgICAgICAgICAic3Vic3RyaW5ncyIsCi0tICAgICAgICAgICAg VGVuc29yUHJvdG8uU1RSSU5HLAotLSAgICAgICAgICAgICgiQSIsIE5vbmUpLAotLSAgICAgICAg KQotLSAgICAgICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVu c29yUHJvdG8uSU5UNjQsICgiQSIsKSkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNU UklORywgKCJBIiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUo IlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSldLAotLSAgICAg ICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtzdWJz dHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCi0tICAg IGRlZiB0ZXN0X3N0cmluZ19zcGxpdF9uZXN0ZWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK LS0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAgICAg ICAgICJzdWJzdHJpbmdzIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgNCwgMywgTm9uZSkKLS0g ICAgICAgICkKLS0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0 aCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgNCwgMykpCi0tICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5z b3JQcm90by5TVFJJTkcsICgyLCA0LCAzKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3Ro Il0sIG1heHNwbGl0PTIpXSwKLS0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s Ci0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJTdHJpbmdTcGxpdCIpKQotLSAgICBkZWYgdGVzdF9zdHJpbmdfc3BsaXRfemVyb19kaW1l bnNpb25hbF9pbnB1dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc3Vic3Ry aW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInN1YnN0cmluZ3MiLCBUZW5zb3JQcm90by5T VFJJTkcsIChOb25lLCkpCi0tICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpCi0tCi0tICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBU ZW5zb3JQcm90by5TVFJJTkcsICgpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtt YWtlX25vZGUoIlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSwg bWF4c3BsaXQ9MildLAotLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlN0cmluZ1NwbGl0IikpCi0tICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF9lbXB0eV9pbnB1dChz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgInN1YnN0cmluZ3MiLCBUZW5zb3JQcm90by5T VFJJTkcsICgiTSIsIDMsIDAsIE5vbmUpCi0tICAgICAgICApCi0tICAgICAgICBsZW5ndGggPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJNIiwg MywgMCkpCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIDMs IDApKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ1Nw bGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSwgbWF4c3BsaXQ9MildLAotLSAg ICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgKQotLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtz dWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLSAgICAg ZGVmIHRlc3Rfb3B0aW9uYWxfdGVuc29yX2dldF9lbGVtZW50KHNlbGYpIC0+IE5vbmU6Ci0gICAg ICAgICB0ZW5zb3JfdHlwZV9wcm90byA9IGhlbHBlci5tYWtlX3RlbnNvcl90eXBlX3Byb3RvKAot ICAgICAgICAgICAgIGVsZW1fdHlwZT1UZW5zb3JQcm90by5ET1VCTEUsIHNoYXBlPVsyLCAxLCA0 XQotQEAgLTg3NTksMTE0ICs3MDAzLDI4IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0 U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgKCJpbnB1dDEiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDIyMCwgMzEwLCAzKSksCi0tICAgICAgICAgICAgICAgICgiaW5wdXQyIiwgVGVu c29yUHJvdG8uRkxPQVQsICgxMTAsIDIxMCwgMykpLAotLSAgICAgICAgICAgICAgICAoImlucHV0 MyIsIFRlbnNvclByb3RvLkZMT0FULCAoOTAsIDExMCwgMykpLAotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAg ICAgICAgICAiU2VxdWVuY2VDb25zdHJ1Y3QiLCBbImlucHV0MSIsICJpbnB1dDIiLCAiaW5wdXQz Il0sIFsiaW5fc2VxdWVuY2UiXQotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICBtYWtlX25vZGUoIlNlcXVlbmNlTWFwIiwgWyJpbl9zZXF1ZW5jZSJdLCBbInNoYXBlcyJdLCBi b2R5PWJvZHlfZ3JhcGgpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl9zZXF1ZW5j ZV92YWx1ZV9pbmZvKAotLSAgICAgICAgICAgICAgICAgICAgImluX3NlcXVlbmNlIiwgVGVuc29y UHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCAzKQotLSAgICAgICAgICAgICAgICApLAotLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcl9zZXF1ZW5jZV92YWx1ZV9pbmZvKCJzaGFwZXMiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDMsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkgICMgdHlw ZTogaWdub3JlCi0tCi0tICAgIGRlZiB0ZXN0X2hhbW1pbmd3aW5kb3coc2VsZik6Ci0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAi Q29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAg ICBbInNoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKLS0gICAgICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW1taW5nV2luZG93IiwgWyJzaGFwZSJdLCBb InkiXSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICkgICMgdHlwZTogaWdub3JlCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAg ICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0t ICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKCksICgxMCwpKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJIYW1taW5nV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9 MCksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICkgICMgdHlwZTogaWdub3JlCi0tCi0tICAgIGRlZiB0ZXN0X2hhbm53aW5kb3co c2VsZik6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg W10sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAg ICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1t YWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKLS0gICAg ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93Iiwg WyJzaGFwZSJdLCBbInkiXSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0t ICAgICAgICAgICAgXSwKLS0gICAgICAgICkgICMgdHlwZTogaWdub3JlCi0tCi0tICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgW10sCi0rICAgICAgICAgICAg ICAgICgiaW5wdXQyIiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMTAsIDIxMCwgMykpLAotKyAgICAg ICAgICAgICAgICAoImlucHV0MyIsIFRlbnNvclByb3RvLkZMT0FULCAoOTAsIDExMCwgMykpLAot KyAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0tICAgICAgICAgICAgICAg ICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgx MCwpKSwKLSsgICAgICAgICAgICAgICAgICAgICJTZXF1ZW5jZUNvbnN0cnVjdCIsIFsiaW5wdXQx IiwgImlucHV0MiIsICJpbnB1dDMiXSwgWyJpbl9zZXF1ZW5jZSJdCi0gICAgICAgICAgICAgICAg ICksCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFubldpbmRvdyIsIFsic2hhcGUiXSwg WyJ5Il0sIHBlcmlvZGljPTApLAotKyAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlNlcXVlbmNl TWFwIiwgWyJpbl9zZXF1ZW5jZSJdLCBbInNoYXBlcyJdLCBib2R5PWJvZHlfZ3JhcGgpLAotICAg ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICApCi0gICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAgICAgZ3JhcGgsCi0gICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAotKyAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcl9zZXF1ZW5jZV92YWx1ZV9pbmZvKAotKyAgICAgICAgICAgICAgICAgICAgImluX3NlcXVl bmNlIiwgVGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCAzKQotKyAgICAgICAgICAgICAg ICApLAotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl9zZXF1ZW5jZV92YWx1ZV9pbmZvKCJz aGFwZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSksCi0gICAgICAgICAgICAgXSwKLSAgICAg ICAgICkgICMgdHlwZTogaWdub3JlCi0gCi0tICAgIGRlZiB0ZXN0X2JsYWNrbWFud2luZG93KHNl bGYpOgotKyAgICBkZWYgdGVzdF9oYW1taW5nd2luZG93KHNlbGYpOgotICAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgIFsKLUBA IC04ODc2LDcgKzcwMzQsNyBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5m ZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLSAgICAgICAg ICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0 LCAoKSwgKDEwLCkpLAotICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoIkJsYWNrbWFuV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSksCi0rICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgiSGFtbWluZ1dpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0pLAotICAgICAg ICAgICAgIF0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICApCi1AQCAtODg5Nyw3ICs3MDU1 LDcgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6 Ci0gICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0gICAgICAgICAgICAgICAgICAgICB2 YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwK LSAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJCbGFja21h bldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0sIHBlcmlvZGljPTApLAotKyAgICAgICAgICAgICAg ICBtYWtlX25vZGUoIkhhbW1pbmdXaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0w KSwKLSAgICAgICAgICAgICBdLAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQotQEAgLTg5 MDksNDYzICs3MDY3LDkxIEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZl cmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgIF0sCi0gICAgICAgICApICAjIHR5cGU6IGlnbm9y ZQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAg ICAgKAotLSAgICAgICAgICAgICAgICBuYW1lLAotLSAgICAgICAgICAgICAgICB2ZXJzaW9uLAot LSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKLS0gICAgICAgICAgICAgICAgaW5wdXRfc2hh cGUsCi0tICAgICAgICAgICAgICAgIGF4aXMsCi0tICAgICAgICAgICAgICAgIG9uZXNpZGVkLAot LSAgICAgICAgICAgICAgICBpbnZlcnNlLAotLSAgICAgICAgICAgICAgICBleHBlY3RlZF9zaGFw ZSwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgZm9yIChuYW1lLCB2ZXJzaW9uKSwgKAot LSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKLS0gICAgICAgICAgICAgICAgaW5wdXRfc2hh cGUsCi0tICAgICAgICAgICAgICAgIGF4aXMsCi0tICAgICAgICAgICAgICAgIG9uZXNpZGVkLAot LSAgICAgICAgICAgICAgICBpbnZlcnNlLAotLSAgICAgICAgICAgICAgICBleHBlY3RlZF9zaGFw ZSwKLS0gICAgICAgICAgICApIGluIGl0ZXJ0b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgICAg ICBhbGxfdmVyc2lvbnNfZm9yKCJERlQiKSwKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAg ICAgICAgICAgICAgKCJyZWFsc19kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMSksIE5vbmUsIE5vbmUs IE5vbmUsICgyLCA1LCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMCIs ICgzLCA1LCAxMCwgMSksIDAsIDAsIDAsICgzLCA1LCAxMCwgMikpLAotLSAgICAgICAgICAgICAg ICAgICAgKCJyZWFsc19heGlzXzEiLCAoMywgNSwgMTAsIDEpLCAxLCAwLCAwLCAoMywgNSwgMTAs IDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18yIiwgKDMsIDUsIDEwLCAx KSwgMiwgMCwgMCwgKDMsIDUsIDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxz X2F4aXNfbmVnIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDAsIDAsICgzLCA1LCAxMCwgMikpLAotLSAg ICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzBfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEp LCAwLCAxLCAwLCAoMiwgNSwgMTAsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNf YXhpc18xX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMSwgMSwgMCwgKDMsIDMsIDEwLCAyKSks Ci0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMl9vbmVzaWRlZCIsICgzLCA1LCAx MCwgMSksIDIsIDEsIDAsICgzLCA1LCA2LCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJl YWxzX2F4aXNfbmVnX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDEsIDAsICgzLCA1LCA2 LCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoImNvbXBsZXhfZGVmYXVsdF9heGlzIiwgKDIs IDUsIDIpLCBOb25lLCBOb25lLCBOb25lLCAoMiwgNSwgMikpLAotLSAgICAgICAgICAgICAgICAg ICAgKCJjb21wbGV4X29uZXNpZGVkIiwgKDIsIDUsIDIpLCAxLCAxLCBOb25lLCAoMiwgMywgMikp LAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsX2ludmVyc2UiLCAoMiwgNSwgMSksIDEsIE5v bmUsIDEsICgyLCA1LCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoImNvbXBsZXhfaW52ZXJz ZSIsICgyLCA1LCAyKSwgMSwgTm9uZSwgMSwgKDIsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICApCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfZGZ0 KAotLSAgICAgICAgc2VsZiwKLS0gICAgICAgIF86IHN0ciwKLS0gICAgICAgIHZlcnNpb246IGlu dCwKLS0gICAgICAgIF90ZXN0X2FzcGVjdDogc3RyLAotLSAgICAgICAgaW5wdXRfc2hhcGU6IHR1 cGxlW2ludF0sCi0tICAgICAgICBheGlzOiBpbnQgfCBOb25lLAotLSAgICAgICAgb25lc2lkZWQ6 IGludCB8IE5vbmUsCi0tICAgICAgICBpbnZlcnNlOiBpbnQgfCBOb25lLAotLSAgICAgICAgZXhw ZWN0ZWRfc2hhcGU6IHR1cGxlW2ludF0sCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgICMgQnVp bGQgdGhlIGF0dHJpYnV0ZXMgZm9yIGRpZmZlcmVudCBvcHNldCB2ZXJzaW9ucwotLSAgICAgICAg YXR0cmlidXRlcyA9IHt9Ci0tICAgICAgICBpZiBvbmVzaWRlZCBpcyBub3QgTm9uZToKLS0gICAg ICAgICAgICBhdHRyaWJ1dGVzWyJvbmVzaWRlZCJdID0gb25lc2lkZWQKLS0gICAgICAgIGlmIGlu dmVyc2UgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgYXR0cmlidXRlc1siaW52ZXJzZSJdID0g aW52ZXJzZQotLQotLSAgICAgICAgaWYgdmVyc2lvbiA8IDIwOgotLSAgICAgICAgICAgIGlmIGF4 aXMgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbImF4aXMiXSA9IGF4 aXMKLS0gICAgICAgICAgICBub2RlcyA9IFttYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIl0s IFsib3V0cHV0Il0sICoqYXR0cmlidXRlcyldICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KLS0g ICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFtdCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAg IGFzc2VydCB2ZXJzaW9uID49IDIwCi0tICAgICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToK LS0gICAgICAgICAgICAgICAgbm9kZXMgPSBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCi0tICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbImF4aXMiXSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiYXhpcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoKSwgKGF4aXMsKSksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAg ICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0 cHV0Il0sICoqYXR0cmlidXRlcyksICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KLS0gICAgICAg ICAgICAgICAgXQotLSAgICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0KLS0gICAgICAgICAgICBl bHNlOgotLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiLCAiIl0sIFsib3V0cHV0Il0sICoqYXR0cmlidXRl cyksICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KLS0gICAgICAgICAgICAgICAgXQotLSAgICAg ICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFtdCi0tCi0tICAgICAgICAjIENvbnN0cnVjdCB0aGUg Z3JhcGgKLSsgICAgZGVmIHRlc3RfaGFubndpbmRvdyhzZWxmKToKLSAgICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICBbCi0gICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIs Ci0gICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQi XSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAg ICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJv dG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfc2hhcGUsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgbnAub25lcyhpbnB1dF9zaGFwZSwgZHR5cGU9bnAuZmxvYXQzMiku ZmxhdHRlbigpLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLSsgICAgICAgICAgICAgICAgICAg IFsic2hhcGUiXSwKLSsgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotICAgICAgICAgICAgICAgICApLAot LSAgICAgICAgICAgICAgICAqbm9kZXMsCi0rICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFu bldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0pLAotICAgICAgICAgICAgIF0sCi0gICAgICAgICAg ICAgW10sCi0gICAgICAgICApCi0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0gICAg ICAgICAgICAgZ3JhcGgsCi0gICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFwZSks Ci0tICAgICAgICAgICAgICAgICp2YWx1ZV9pbmZvcywKLS0gICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX3No YXBlKSwKLSsgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKLSAgICAgICAgICAgICBdLAot LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbmFtZSwKLS0g ICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICAgICAgdGVzdF9hc3BlY3QsCi0t ICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAotLSAgICAgICAgICAgICAgICBheGlzLAotLSAg ICAgICAgICAgICAgICBvbmVzaWRlZCwKLS0gICAgICAgICAgICAgICAgaW52ZXJzZSwKLS0gICAg ICAgICAgICAgICAgZXhwZWN0ZWRfc2hhcGUsCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAg IGZvciAobmFtZSwgdmVyc2lvbiksICgKLS0gICAgICAgICAgICAgICAgdGVzdF9hc3BlY3QsCi0t ICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAotLSAgICAgICAgICAgICAgICBheGlzLAotLSAg ICAgICAgICAgICAgICBvbmVzaWRlZCwKLS0gICAgICAgICAgICAgICAgaW52ZXJzZSwKLS0gICAg ICAgICAgICAgICAgZXhwZWN0ZWRfc2hhcGUsCi0tICAgICAgICAgICAgKSBpbiBpdGVydG9vbHMu cHJvZHVjdCgKLS0gICAgICAgICAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiREZUIiksCi0tICAg ICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfZGVmYXVsdF9heGlz IiwgKDIsIDUsIDEpLCBOb25lLCBOb25lLCBOb25lLCAoMiwgNDIsIDIpKSwKLS0gICAgICAgICAg ICAgICAgICAgICgicmVhbHNfYXhpc18wIiwgKDMsIDUsIDEwLCAxKSwgMCwgMCwgMCwgKDQyLCA1 LCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzEiLCAoMywgNSwg MTAsIDEpLCAxLCAwLCAwLCAoMywgNDIsIDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAo InJlYWxzX2F4aXNfMiIsICgzLCA1LCAxMCwgMSksIDIsIDAsIDAsICgzLCA1LCA0MiwgMikpLAot LSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZyIsICgzLCA1LCAxMCwgMSksIC0y LCAwLCAwLCAoMywgNSwgNDIsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhp c18wX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMCwgMSwgMCwgKDIyLCA1LCAxMCwgMikpLAot LSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzFfb25lc2lkZWQiLCAoMywgNSwgMTAs IDEpLCAxLCAxLCAwLCAoMywgMjIsIDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJl YWxzX2F4aXNfMl9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDIsIDEsIDAsICgzLCA1LCAyMiwg MikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZ19vbmVzaWRlZCIsICgz LCA1LCAxMCwgMSksIC0yLCAxLCAwLCAoMywgNSwgMjIsIDIpKSwKLS0gICAgICAgICAgICAgICAg ICAgICgiY29tcGxleF9kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMiksIE5vbmUsIE5vbmUsIE5vbmUs ICgyLCA0MiwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJjb21wbGV4X29uZXNpZGVkIiwg KDIsIDUsIDIpLCAxLCAxLCBOb25lLCAoMiwgMjIsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAg ICgicmVhbF9pbnZlcnNlIiwgKDIsIDUsIDEpLCAxLCBOb25lLCAxLCAoMiwgNDIsIDIpKSwKLS0g ICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9pbnZlcnNlIiwgKDIsIDUsIDIpLCAxLCBOb25l LCAxLCAoMiwgNDIsIDIpKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICApCi0t ICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfZGZ0X2RmdF9sZW5ndGgoCi0tICAgICAg ICBzZWxmLAotLSAgICAgICAgXzogc3RyLAotLSAgICAgICAgdmVyc2lvbjogaW50LAotLSAgICAg ICAgX3Rlc3RfYXNwZWN0OiBzdHIsCi0tICAgICAgICBpbnB1dF9zaGFwZTogdHVwbGVbaW50XSwK LS0gICAgICAgIGF4aXM6IGludCB8IE5vbmUsCi0tICAgICAgICBvbmVzaWRlZDogaW50IHwgTm9u ZSwKLS0gICAgICAgIGludmVyc2U6IGludCB8IE5vbmUsCi0tICAgICAgICBleHBlY3RlZF9zaGFw ZTogdHVwbGVbaW50XSwKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgIyBCdWlsZCB0aGUgYXR0 cmlidXRlcyBmb3IgZGlmZmVyZW50IG9wc2V0IHZlcnNpb25zCi0tICAgICAgICBhdHRyaWJ1dGVz ID0ge30KLS0gICAgICAgIGlmIG9uZXNpZGVkIGlzIG5vdCBOb25lOgotLSAgICAgICAgICAgIGF0 dHJpYnV0ZXNbIm9uZXNpZGVkIl0gPSBvbmVzaWRlZAotLSAgICAgICAgaWYgaW52ZXJzZSBpcyBu b3QgTm9uZToKLS0gICAgICAgICAgICBhdHRyaWJ1dGVzWyJpbnZlcnNlIl0gPSBpbnZlcnNlCi0t Ci0tICAgICAgICBkZnRfbGVuZ3RoID0gNDIKLS0KLS0gICAgICAgIGlmIHZlcnNpb24gPCAyMDoK LS0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgotLSAgICAgICAgICAgICAgICBhdHRy aWJ1dGVzWyJheGlzIl0gPSBheGlzCi0tICAgICAgICAgICAgbm9kZXMgPSBbCi0tICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAg ICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiZGZ0X2xlbmd0aCJd LAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAg ICAgICAgICAgICAgImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChkZnRfbGVu Z3RoLCkKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICJkZnRfbGVuZ3RoIl0sIFsi b3V0cHV0Il0sICoqYXR0cmlidXRlcyksICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KLS0gICAg ICAgICAgICBdCi0tICAgICAgICAgICAgdmFsdWVfaW5mb3MgPSBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldCi0tICAgICAgICBlbHNl OgotLSAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uID49IDIwCi0tICAgICAgICAgICAgaWYgYXhp cyBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICAgICAgbm9kZXMgPSBbCi0tICAgICAgICAgICAg ICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwK LS0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBb ImF4aXMiXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiYXhp cyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKGF4aXMsKSksCi0tICAgICAgICAgICAgICAgICAg ICApLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAg ICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgWyJkZnRfbGVuZ3RoIl0sCi0tICAgICAgICAgICAgICAgICAgICAg ICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZnRf bGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoZGZ0X2xlbmd0aCwpCi0tICAgICAgICAg ICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAg ICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiZGZ0X2xlbmd0aCIsICJheGlzIl0s IFsib3V0cHV0Il0sICoqYXR0cmlidXRlcyksICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KLS0g ICAgICAgICAgICAgICAgXQotLSAgICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFsKLS0gICAg ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCkpLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0tICAgICAgICAgICAgICAg IF0KLS0gICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKLS0gICAg ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29u c3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIFsiZGZ0X2xlbmd0aCJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1h a2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsIFRl bnNvclByb3RvLklOVDY0LCAoKSwgKGRmdF9sZW5ndGgsKQotLSAgICAgICAgICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKCJERlQiLCBbImlucHV0IiwgImRmdF9sZW5ndGgiLCAiIl0sIFsib3V0cHV0Il0sICoq YXR0cmlidXRlcyksICAjIHR5cGU6IGlnbm9yZVthcmctdHlwZV0KLS0gICAgICAgICAgICAgICAg XQotLSAgICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFsKLS0gICAgICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCkpCi0tICAgICAgICAgICAgICAgIF0KLSsgICAgICAgICkgICMgdHlwZTogaWdub3JlCi0gCi0t ICAgICAgICAjIENvbnN0cnVjdCB0aGUgZ3JhcGgKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICBbCi0gICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0gICAgICAg ICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKLS0gICAg ICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAg ICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfc2hhcGUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgbnAub25lcyhpbnB1dF9zaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigp LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLSsgICAgICAgICAgICAgICAgICAgIFsic2hhcGUi XSwKLSsgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotICAgICAgICAgICAgICAgICApLAotLSAgICAgICAg ICAgICAgICAqbm9kZXMsCi0rICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFubldpbmRvdyIs IFsic2hhcGUiXSwgWyJ5Il0sIHBlcmlvZGljPTApLAotICAgICAgICAgICAgIF0sCi0gICAgICAg ICAgICAgW10sCi0gICAgICAgICApCi0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0g ICAgICAgICAgICAgZ3JhcGgsCi0gICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFw ZSksCi0tICAgICAgICAgICAgICAgICp2YWx1ZV9pbmZvcywKLS0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVk X3NoYXBlKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0K LS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgi bGFzdCIsIDMpLAotLSAgICAgICAgICAgICgibGFzdF9uZWdhdGl2ZSIsIC0xKSwKLS0gICAgICAg ICAgICAoIm91dF9vZl9yYW5nZSIsIDQpLAotLSAgICAgICAgICAgICgib3V0X29mX3JhbmdlX25l Z2F0aXZlIiwgLTUpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2RmdF9pbnZh bGlkX2F4aXNfb3BzZXQxNyhzZWxmLCBfOiBzdHIsIGF4aXM6IGludCkgLT4gTm9uZToKLS0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAg ICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAg ICAgIFsiaW5wdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAot LSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgVGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKDIsIDUsIDUs IDIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoKDIsIDUsIDUsIDIpLCBkdHlw ZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAg ICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQi LCAiIl0sIFsib3V0cHV0Il0sIG9uZXNpZGVkPTEsIGF4aXM9YXhpcyksCi0rICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgp KSwKLSsgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMTAsKSksCi0gICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZl cmVuY2UuSW5mZXJlbmNlRXJyb3IpOgotLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCA1LCA1LCAyKSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDUsIDIpKSwKLS0g ICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTcpXSwKLS0gICAgICAgICAgICApCi0rICAgICAg ICApICAjIHR5cGU6IGlnbm9yZQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAg ICAgICBbCi0tICAgICAgICAgICAgKCJsYXN0IiwgMyksCi0tICAgICAgICAgICAgKCJsYXN0X25l Z2F0aXZlIiwgLTEpLAotLSAgICAgICAgICAgICgib3V0X29mX3JhbmdlIiwgNCksCi0tICAgICAg ICAgICAgKCJvdXRfb2ZfcmFuZ2VfbmVnYXRpdmUiLCAtNSksCi0tICAgICAgICBdCi0tICAgICkK LS0gICAgZGVmIHRlc3RfZGZ0X2ludmFsaWRfYXhpc19vcHNldDIwKHNlbGYsIF86IHN0ciwgYXhp czogaW50KSAtPiBOb25lOgotKyAgICBkZWYgdGVzdF9ibGFja21hbndpbmRvdyhzZWxmKToKLSAg ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLSAgICAgICAgICAgICBbXSwKLSAgICAg ICAgICAgICBbCi0gICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLSAgICAgICAgICAgICAgICAg ICAgICJDb25zdGFudCIsCi0gICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAg ICAgICAgIFsiaW5wdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29y KAotLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKDIsIDUs IDUsIDIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoKDIsIDUsIDUsIDIpLCBk dHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAg ICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAg ICAgICAgICAgICAgICBbImF4aXMiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2Vf dGVuc29yKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoYXhpcywpKSwKLS0gICAgICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0Iiwg IiIsICJheGlzIl0sIFsib3V0cHV0Il0pLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg W10sCi0tICAgICAgICApCi0tICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hh cGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yKToKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNv clByb3RvLkZMT0FULCAoMiwgNSwgNSwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0tICAgICAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDIsIDMsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMjAp XSwKLS0gICAgICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAg ICAgIFsKLS0gICAgICAgICAgICAoInJlYWwiLCAoMiwgNSwgNSwgMSkpLAotLSAgICAgICAgICAg ICgiY29tcGxleCIsICgyLCA1LCA1LCAyKSksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVm IHRlc3RfZGZ0X2R5bmFtaWNfYXhpc19vcHNldDIwKHNlbGYsIF86IHN0ciwgc2hhcGU6IHR1cGxl W2ludCwgLi4uXSkgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0sCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAg ICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAg ICAgICBbImlucHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigK LS0gICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQiLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIFRlbnNvclByb3RvLkZMT0FULAotLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlLAot LSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoc2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIp LmZsYXR0ZW4oKSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0rICAgICAgICAgICAgICAgICAg ICBbInNoYXBlIl0sCi0rICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKLSAgICAgICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0s IFsib3V0cHV0Il0pLAotKyAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkJsYWNrbWFuV2luZG93 IiwgWyJzaGFwZSJdLCBbInkiXSksCi0gICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwK LSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAgICAgICAgICAg ICBncmFwaCwKLSAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlKSwKLS0gICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgyLCA1LCA1LCAyKSksCi0rICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o InNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLSsgICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0gICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCAyMCldLAotLSAgICAgICAgKQotKyAgICAgICAgKSAgIyB0eXBlOiBpZ25v cmUKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAg ICAgICgicmVhbCIsICgyLCA1LCA1LCAxKSksCi0tICAgICAgICAgICAgKCJjb21wbGV4IiwgKDIs IDUsIDUsIDIpKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZnRfZHluYW1p Y19heGlzX29uZXNpZGVkX2RmdF9sZW5ndGhfb3BzZXQyMCgKLS0gICAgICAgIHNlbGYsIF86IHN0 ciwgc2hhcGU6IHR1cGxlW2ludCwgLi4uXQotLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygiYXhpcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2Rl KAotLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAg IFtdLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAotLSAgICAgICAgICAgICAgICAg ICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwK LS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICBzaGFwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKHNo YXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICAp LAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAg ICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0t ICAgICAgICAgICAgICAgICAgICBbImRmdF9sZW5ndGgiXSwKLS0gICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3Ro IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShb NDJdLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAg ICAgICAiREZUIiwgWyJpbnB1dCIsICJkZnRfbGVuZ3RoIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwg b25lc2lkZWQ9MQotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgIF0sCi0gICAgICAg ICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFwZSksCi0t ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCkpLAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKAotLSAgICAgICAgICAgICAgICAgICAgIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAo Tm9uZSwgTm9uZSwgTm9uZSwgMikKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIDIwKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgK LS0gICAgICAgIFsKLS0gICAgICAgICAgICAoInJlYWwiLCAoMiwgNSwgNSwgMSkpLAotLSAgICAg ICAgICAgICgiY29tcGxleCIsICgyLCA1LCA1LCAyKSksCi0tICAgICAgICBdCi0tICAgICkKLS0g ICAgZGVmIHRlc3RfZGZ0X2R5bmFtaWNfYXhpc19vbmVzaWRlZF9vcHNldDIwKAotLSAgICAgICAg c2VsZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5dCi0tICAgICkgLT4gTm9uZToKLS0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJheGlzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpKV0sCi0gICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg ICBtYWtlX25vZGUoCi0gICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotICAgICAgICAg ICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCi0tICAgICAg ICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICAg ICAiaW5wdXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAot LSAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAg IG5wLm9uZXMoc2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKLS0gICAgICAgICAg ICAgICAgICAgICksCi0rICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0rICAgICAgICAg ICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCksICgxMCwpKSwKLSAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9u b2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0sIG9uZXNpZGVkPTEp LAotKyAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkJsYWNrbWFuV2luZG93IiwgWyJzaGFwZSJd LCBbInkiXSwgcGVyaW9kaWM9MCksCi0gICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwK LSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAgICAgICAgICAg ICBncmFwaCwKLSAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlKSwKLS0gICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0gICAgICAgICAgICAgICAgICAgICJvdXRw dXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUsIDIpCi0tICAgICAgICAg ICAgICAgICksCi0rICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLSsgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0gICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCAyMCldLAotLSAgICAgICAgKQotKyAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLSAK LSAgICAgZGVmIHRlc3RfZGZ0X29uZXNpZGVkX2RlZmF1bHRfYXhpc19vcHNldDE3KHNlbGYpIC0+ IE5vbmU6Ci0gICAgICAgICAjIE9wc2V0IDE3IHNldHMgZGVmYXVsdCBheGlzIHRvIGJlIDEuCi1A QCAtOTg0NiwxMzkgKzc2MzIsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBl SW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICBdLAotICAgICAgICAgKQotIAotLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoW1RlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5ET1VC TEUsIFRlbnNvclByb3RvLkZMT0FUMTZdKQotLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5Y X01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLS0g ICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZShzZWxmLCBkdHlwZSkgLT4gTm9uZToKLS0gICAgICAg IGludGVyaW9yX25vZGVzID0gNQotLSAgICAgICAgbGVhdmVzID0gOQotLSAgICAgICAgdHJlZSA9 IG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAiVHJlZUVuc2VtYmxlIiwKLS0gICAgICAgICAgICBb IngiXSwKLS0gICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICBkb21haW49T05OWF9NTF9E T01BSU4sCi0tICAgICAgICAgICAgbl90YXJnZXRzPTUsCi0tICAgICAgICAgICAgbm9kZXNfZmVh dHVyZWlkcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBub2Rlc19zcGxpdHM9 bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiLAotLSAgICAgICAg ICAgICAgICBkdHlwZSwKLS0gICAgICAgICAgICAgICAgKGludGVyaW9yX25vZGVzLCksCi0tICAg ICAgICAgICAgICAgIGxpc3QocmFuZ2UoaW50ZXJpb3Jfbm9kZXMpKSwKLS0gICAgICAgICAgICAp LAotLSAgICAgICAgICAgIG5vZGVzX21vZGVzPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAg ICAibm9kZXNfbW9kZXMiLAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UOCwKLS0g ICAgICAgICAgICAgICAgKGludGVyaW9yX25vZGVzLCksCi0tICAgICAgICAgICAgICAgIFswXSAq IGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgbm9kZXNfdHJ1 ZW5vZGVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbm9kZXNfZmFsc2Vu b2RlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVzX3RydWVsZWFm cz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBub2Rlc19mYWxzZWxlYWZzPVsw XSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG1lbWJlcnNoaXBfdmFsdWVzPW1ha2Vf dGVuc29yKAotLSAgICAgICAgICAgICAgICAibWVtYmVyc2hpcF92YWx1ZXMiLAotLSAgICAgICAg ICAgICAgICBkdHlwZSwKLS0gICAgICAgICAgICAgICAgKDcsKSwKLS0gICAgICAgICAgICAgICAg WzAuMCwgMC4xLCAwLjIsIG5wLm5hbiwgMC40LCAwLjUsIDEuMF0sCi0tICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICBsZWFmX3RhcmdldGlkcz1bMF0gKiBsZWF2ZXMsCi0tICAgICAgICAgICAg bGVhZl93ZWlnaHRzPW1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBkdHlwZSwgKGxlYXZlcywp LCBbMV0gKiBsZWF2ZXMpLAotLSAgICAgICAgICAgIHRyZWVfcm9vdHM9WzBdLAotLSAgICAgICAg KQotLQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFso IngiLCBkdHlwZSwgKCJCYXRjaCBTaXplIiwgIkZlYXR1cmVzIikpXSwKLS0gICAgICAgICAgICBb dHJlZV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tCi0tICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBkdHlwZSwgKCJCYXRjaCBTaXplIiwgNSkpXSwKLS0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9O TlhfTUxfRE9NQUlOLCA1KSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCAxMSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAg ICAgIm5vZGVzX3RydWVub2RlaWRzIjogWzBdICogNiwKLS0gICAgICAgICAgICAgICAgImxlYWZf d2VpZ2h0cyI6IG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0 cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDksKSwgWzFdICogOQotLSAgICAgICAgICAgICAgICAp LAotLSAgICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIjogbWFrZV90ZW5zb3IoCi0tICAgICAg ICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBb MV0gKiA1Ci0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgfSwKLS0gICAgICAgICAg ICB7Ci0tICAgICAgICAgICAgICAgICJub2Rlc190cnVlbm9kZWlkcyI6IFswXSAqIDUsCi0tICAg ICAgICAgICAgICAgICJsZWFmX3dlaWdodHMiOiBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAg ICAgICAgICJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDksKSwgWzFdICogOQot LSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIjogbWFr ZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIiwgVGVuc29yUHJv dG8uRE9VQkxFLCAoNSwpLCBbMV0gKiA1Ci0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgfSwKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICJub2Rlc190cnVlbm9kZWlk cyI6IFswXSAqIDUsCi0tICAgICAgICAgICAgICAgICJsZWFmX3dlaWdodHMiOiBtYWtlX3RlbnNv cigKLS0gICAgICAgICAgICAgICAgICAgICJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90by5ET1VC TEUsICgxOCwpLCBbMV0gKiAxOAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAibm9kZXNfc3BsaXRzIjogbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAibm9k ZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBbMV0gKiA1Ci0tICAgICAgICAg ICAgICAgICksCi0tICAgICAgICAgICAgfSwKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAg ICAgICJub2Rlc190cnVlbm9kZWlkcyI6IFswXSAqIDUsCi0tICAgICAgICAgICAgICAgICJsZWFm X3dlaWdodHMiOiBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICJsZWFmX3dlaWdo dHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg5LCksIFsxXSAqIDkKLS0gICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAgICAgIm5vZGVzX3NwbGl0cyI6IG1ha2VfdGVuc29yKAotLSAgICAg ICAgICAgICAgICAgICAgIm5vZGVzX3NwbGl0cyIsIFRlbnNvclByb3RvLkZMT0FULCAoNSwpLCBb MV0gKiA1Ci0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgfSwKLS0gICAgICAgIF0K LS0gICAgKQotLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1 aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLS0gICAgZGVmIHRlc3RfdHJlZV9l bnNlbWJsZV9mYWlsc19pZl9pbnZhbGlkX2F0dHJpYnV0ZXMoCi0tICAgICAgICBzZWxmLAotLSAg ICAgICAgbm9kZXNfdHJ1ZW5vZGVpZHMsCi0tICAgICAgICBsZWFmX3dlaWdodHMsCi0tICAgICAg ICBub2Rlc19zcGxpdHMsCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIGludGVyaW9yX25vZGVz ID0gNQotLSAgICAgICAgbGVhdmVzID0gOQotLSAgICAgICAgdHJlZSA9IG1ha2Vfbm9kZSgKLS0g ICAgICAgICAgICAiVHJlZUVuc2VtYmxlIiwKLS0gICAgICAgICAgICBbIngiXSwKLS0gICAgICAg ICAgICBbInkiXSwKLS0gICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAg ICAgICAgbl90YXJnZXRzPTUsCi0tICAgICAgICAgICAgbm9kZXNfZmVhdHVyZWlkcz1bMF0gKiBp bnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBub2Rlc19zcGxpdHM9bm9kZXNfc3BsaXRzLAot LSAgICAgICAgICAgIG5vZGVzX21vZGVzPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAi bm9kZXNfbW9kZXMiLAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UOCwKLS0gICAg ICAgICAgICAgICAgKGludGVyaW9yX25vZGVzLCksCi0tICAgICAgICAgICAgICAgIFswXSAqIGlu dGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgbm9kZXNfdHJ1ZW5v ZGVpZHM9bm9kZXNfdHJ1ZW5vZGVpZHMsCi0tICAgICAgICAgICAgbm9kZXNfZmFsc2Vub2RlaWRz PVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVzX3RydWVsZWFmcz1bMF0g KiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBub2Rlc19mYWxzZWxlYWZzPVswXSAqIGlu dGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIGxlYWZfdGFyZ2V0aWRzPVswXSAqIGxlYXZlcywK LS0gICAgICAgICAgICBsZWFmX3dlaWdodHM9bGVhZl93ZWlnaHRzLAotLSAgICAgICAgICAgIHRy ZWVfcm9vdHM9WzBdLAotLSAgICAgICAgKQotLQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5ET1VCTEUsICgiQmF0Y2gg U2l6ZSIsICJGZWF0dXJlcyIpKV0sCi0tICAgICAgICAgICAgW3RyZWVdLAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9p bmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKLS0KLSAgICAg QHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBh aS5vbm54Lm1sIG9wZXJhdG9ycyIpCi0gICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfY2xhc3Np ZmllcihzZWxmKSAtPiBOb25lOgotICAgICAgICAgdHJlZSA9IG1ha2Vfbm9kZSgKLWRpZmYgLS1n aXQgYS9vbm54L3Rlc3QvdGVzdF9iYWNrZW5kX3JlZmVyZW5jZS5weSBiL29ubngvdGVzdC90ZXN0 X2JhY2tlbmRfcmVmZXJlbmNlLnB5Ci1pbmRleCA3MWNlNzY1MWUuLmI0ODJmMjc3OCAxMDA2NDQK LS0tLSBhL29ubngvdGVzdC90ZXN0X2JhY2tlbmRfcmVmZXJlbmNlLnB5Ci0rKysgYi9vbm54L3Rl c3QvdGVzdF9iYWNrZW5kX3JlZmVyZW5jZS5weQotQEAgLTE5Myw2ICsxOTMsMTUgQEAgYmFja2Vu ZF90ZXN0LmV4Y2x1ZGUoIih0ZXN0X2V5ZWxpa2Vfd2l0aG91dF9kdHlwZSkiKQotICMgVGhlIGZv bGxvd2luZyB0ZXN0cyBmYWlsIGR1ZSB0byBkaXNjcmVwYW5jaWVzIChzbWFsbCBidXQgc3RpbGwg aGlnaGVyIHRoYW4gMWUtNykuCi0gYmFja2VuZF90ZXN0LmV4Y2x1ZGUoInRlc3RfYWRhbV9tdWx0 aXBsZSIpICAjIDFlLTIKLSAKLStiYWNrZW5kX3Rlc3QuZXhjbHVkZSgKLSsgICAgIigiCi0rICAg ICJ0ZXN0X2FmZmluZV9ncmlkXzJkX2FsaWduX2Nvcm5lcnNfZXhwYW5kZWRfY3B1IgotKyAgICAi fHRlc3RfYWZmaW5lX2dyaWRfMmRfZXhwYW5kZWRfY3B1IgotKyAgICAifHRlc3RfYWZmaW5lX2dy aWRfM2RfYWxpZ25fY29ybmVyc19leHBhbmRlZF9jcHUiCi0rICAgICJ8dGVzdF9hZmZpbmVfZ3Jp ZF8zZF9leHBhbmRlZF9jcHUiCi0rICAgICIpIgotKykKLSsKLSAjIEN1cnJlbnRseSBnb29nbGUt cmUyL1BpbGxvdyBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbjMyIGFuZCBpcyByZXF1aXJlZCBmb3Ig dGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBSZWdleEZ1bGxNYXRjaC4KLSBpZiBzeXMu cGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAgYmFja2VuZF90ZXN0LmV4Y2x1ZGUoInRlc3RfcmVn ZXhfZnVsbF9tYXRjaF9iYXNpY19jcHUiKQotZGlmZiAtLWdpdCBhL29ubngvdGVzdC90ZXN0X2V4 dGVybmFsX2RhdGEucHkgYi9vbm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRhLnB5Ci1pbmRleCBm YzRiMmY4MDIuLmQ3NTVjMDRjYyAxMDA2NDQKLS0tLSBhL29ubngvdGVzdC90ZXN0X2V4dGVybmFs X2RhdGEucHkKLSsrKyBiL29ubngvdGVzdC90ZXN0X2V4dGVybmFsX2RhdGEucHkKLUBAIC0xMiw3 ICsxMiw2IEBAIGltcG9ydCB1dWlkCi0gZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgU2VxdWVuY2UK LSAKLSBpbXBvcnQgbnVtcHkgYXMgbnAKLS1pbXBvcnQgcGFyYW1ldGVyaXplZAotIAotIGltcG9y dCBvbm54Ci0gZnJvbSBvbm54IGltcG9ydCAoCi1AQCAtMTEyLDYyMSArMTExLDYgQEAgY2xhc3Mg VGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIGNo ZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSkKLSAKLSAKLS1AcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICB7InNlcmlhbGl6YXRp b25fZm9ybWF0IjogInByb3RvYnVmIn0sCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0 IjogInRleHRwcm90byJ9LAotLSAgICBdCi0tKQotLWNsYXNzIFRlc3RMb2FkRXh0ZXJuYWxEYXRh KFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSk6Ci0tICAgIGRlZiB0ZXN0X2xvYWRfZXh0ZXJuYWxf ZGF0YShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoc2Vs Zi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGlu aXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBu cC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBz ZWxmLmluaXRpYWxpemVyX3ZhbHVlKQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1v ZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNz ZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92 YWx1ZSkKLS0KLS0gICAgZGVmIHRlc3RfbG9hZF9leHRlcm5hbF9kYXRhX2Zvcl9tb2RlbChzZWxm KSAtPiBOb25lOgotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoCi0tICAgICAgICAg ICAgc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9l eHRlcm5hbF9kYXRhPUZhbHNlCi0tICAgICAgICApCi0tICAgICAgICBsb2FkX2V4dGVybmFsX2Rh dGFfZm9yX21vZGVsKG1vZGVsLCBzZWxmLnRlbXBfZGlyKQotLSAgICAgICAgaW5pdGlhbGl6ZXJf dGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlh bGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgu bm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xv c2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQotLQot LSAgICBkZWYgdGVzdF9zYXZlX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKLS0gICAgICAg IG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICB0ZW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxm LnRlbXBfZGlyLCAic2F2ZV9jb3B5IikKLS0gICAgICAgIG9zLm1rZGlyKHRlbXBfZGlyKQotLSAg ICAgICAgbmV3X21vZGVsX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAibW9kZWwu b25ueCIpCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwobW9kZWwsIG5ld19tb2RlbF9maWxlbmFt ZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIG5ld19tb2RlbCA9IG9u bngubG9hZF9tb2RlbChuZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBuZXdfbW9kZWwuZ3JhcGguaW5pdGlh bGl6ZXJbMF0KLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGlu aXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBh dHRyaWJ1dGVfdGVuc29yID0gbmV3X21vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQK LS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90 ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0KLS1AcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0 IjogInByb3RvYnVmIn0sCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRw cm90byJ9LAotLSAgICBdCi0tKQotLWNsYXNzIFRlc3RMb2FkRXh0ZXJuYWxEYXRhU2luZ2xlRmls ZShUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2UpOgotLSAgICBkZWYgY3JlYXRlX2V4dGVybmFsX2Rh dGFfdGVuc29ycygKLS0gICAgICAgIHNlbGYsIHRlbnNvcnNfZGF0YTogbGlzdFt0dXBsZVtsaXN0 W0FueV0sIEFueV1dCi0tICAgICkgLT4gbGlzdFtUZW5zb3JQcm90b106Ci0tICAgICAgICB0ZW5z b3JfZmlsZW5hbWUgPSAidGVuc29ycy5iaW4iCi0tICAgICAgICB0ZW5zb3JzID0gW10KLS0KLS0g ICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgdGVuc29yX2ZpbGVu YW1lKSwgImFiIikgYXMgZGF0YV9maWxlOgotLSAgICAgICAgICAgIGZvciB2YWx1ZSwgdGVuc29y X25hbWUgaW4gdGVuc29yc19kYXRhOgotLSAgICAgICAgICAgICAgICB0ZW5zb3IgPSBmcm9tX2Fy cmF5KG5wLmFycmF5KHZhbHVlKSkKLS0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gZGF0YV9maWxl LnRlbGwoKQotLSAgICAgICAgICAgICAgICBpZiBvZmZzZXQgJSA0MDk2ICE9IDA6Ci0tICAgICAg ICAgICAgICAgICAgICBkYXRhX2ZpbGUud3JpdGUoYiJcMCIgKiAoNDA5NiAtIG9mZnNldCAlIDQw OTYpKQotLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgNDA5NiAtIG9mZnNl dCAlIDQwOTYKLS0KLS0gICAgICAgICAgICAgICAgZGF0YV9maWxlLndyaXRlKHRlbnNvci5yYXdf ZGF0YSkKLS0gICAgICAgICAgICAgICAgc2V0X2V4dGVybmFsX2RhdGEoCi0tICAgICAgICAgICAg ICAgICAgICB0ZW5zb3IsCi0tICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj10ZW5zb3JfZmls ZW5hbWUsCi0tICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9b2Zmc2V0LAotLSAgICAgICAgICAg ICAgICAgICAgbGVuZ3RoPWRhdGFfZmlsZS50ZWxsKCkgLSBvZmZzZXQsCi0tICAgICAgICAgICAg ICAgICkKLS0gICAgICAgICAgICAgICAgdGVuc29yLm5hbWUgPSB0ZW5zb3JfbmFtZQotLSAgICAg ICAgICAgICAgICB0ZW5zb3IuQ2xlYXJGaWVsZCgicmF3X2RhdGEiKQotLSAgICAgICAgICAgICAg ICB0ZW5zb3IuZGF0YV9sb2NhdGlvbiA9IG9ubnguVGVuc29yUHJvdG8uRVhURVJOQUwKLS0gICAg ICAgICAgICAgICAgdGVuc29ycy5hcHBlbmQodGVuc29yKQotLQotLSAgICAgICAgcmV0dXJuIHRl bnNvcnMKLS0KLS0gICAgZGVmIHRlc3RfbG9hZF9leHRlcm5hbF9zaW5nbGVfZmlsZV9kYXRhKHNl bGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVs X2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgaW5pdGlh bGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIG5wLnRl c3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYu aW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwu Z3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRf YWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVl KQotLQotLSAgICBkZWYgdGVzdF9zYXZlX2V4dGVybmFsX3NpbmdsZV9maWxlX2RhdGEoc2VsZikg LT4gTm9uZToKLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmls ZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICB0ZW1wX2RpciA9 IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAic2F2ZV9jb3B5IikKLS0gICAgICAgIG9zLm1r ZGlyKHRlbXBfZGlyKQotLSAgICAgICAgbmV3X21vZGVsX2ZpbGVuYW1lID0gb3MucGF0aC5qb2lu KHRlbXBfZGlyLCAibW9kZWwub25ueCIpCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwobW9kZWws IG5ld19tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAg ICAgIG5ld19tb2RlbCA9IG9ubngubG9hZF9tb2RlbChuZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBuZXdf bW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2Fs bGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFs dWUpCi0tCi0tICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbmV3X21vZGVsLmdyYXBoLm5vZGVb MF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRv X2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAg QHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoaXRlcnRvb2xzLnByb2R1Y3QoKFRy dWUsIEZhbHNlKSwgKFRydWUsIEZhbHNlKSkpCi0tICAgIGRlZiB0ZXN0X3NhdmVfZXh0ZXJuYWxf aW52YWxpZF9zaW5nbGVfZmlsZV9kYXRhX2FuZF9jaGVjaygKLS0gICAgICAgIHNlbGYsIHVzZV9h YnNvbHV0ZV9wYXRoOiBib29sLCB1c2VfbW9kZWxfcGF0aDogYm9vbAotLSAgICApIC0+IE5vbmU6 Ci0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBz ZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgbW9kZWxfZGlyID0gb3MucGF0 aC5qb2luKHNlbGYudGVtcF9kaXIsICJzYXZlX2NvcHkiKQotLSAgICAgICAgb3MubWtkaXIobW9k ZWxfZGlyKQotLQotLSAgICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfZGlyID0gb3MucGF0 aC5qb2luKAotLSAgICAgICAgICAgIHNlbGYudGVtcF9kaXIsICJpbnZsaWRfZXh0ZXJuYWxfZGF0 YSIKLS0gICAgICAgICkKLS0gICAgICAgIG9zLm1rZGlyKHRyYXZlcnNhbF9leHRlcm5hbF9kYXRh X2RpcikKLS0KLS0gICAgICAgIGlmIHVzZV9hYnNvbHV0ZV9wYXRoOgotLSAgICAgICAgICAgIHRy YXZlcnNhbF9leHRlcm5hbF9kYXRhX2xvY2F0aW9uID0gb3MucGF0aC5qb2luKAotLSAgICAgICAg ICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9kaXIsICJ0ZW5zb3JzLmJpbiIKLS0gICAg ICAgICAgICApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHRyYXZlcnNhbF9leHRlcm5h bF9kYXRhX2xvY2F0aW9uID0gIi4uL2ludmxpZF9leHRlcm5hbF9kYXRhL3RlbnNvcnMuYmluIgot LQotLSAgICAgICAgZXh0ZXJuYWxfZGF0YV9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rp ciwgImV4dGVybmFsX2RhdGEiKQotLSAgICAgICAgb3MubWtkaXIoZXh0ZXJuYWxfZGF0YV9kaXIp Ci0tICAgICAgICBuZXdfbW9kZWxfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4obW9kZWxfZGlyLCAi bW9kZWwub25ueCIpCi0tCi0tICAgICAgICBkZWYgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9k YXRhX25vX2NoZWNrKG1vZGVsOiBNb2RlbFByb3RvLCBsb2NhdGlvbjogc3RyKToKLS0gICAgICAg ICAgICBmb3IgdGVuc29yIGluIG1vZGVsLmdyYXBoLmluaXRpYWxpemVyOgotLSAgICAgICAgICAg ICAgICBpZiB0ZW5zb3IuSGFzRmllbGQoInJhd19kYXRhIik6Ci0tICAgICAgICAgICAgICAgICAg ICBzZXRfZXh0ZXJuYWxfZGF0YSh0ZW5zb3IsIGxvY2F0aW9uKQotLQotLSAgICAgICAgY29udmVy dF9tb2RlbF90b19leHRlcm5hbF9kYXRhX25vX2NoZWNrKAotLSAgICAgICAgICAgIG1vZGVsLAot LSAgICAgICAgICAgIGxvY2F0aW9uPXRyYXZlcnNhbF9leHRlcm5hbF9kYXRhX2xvY2F0aW9uLAot LSAgICAgICAgKQotLQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBuZXdfbW9kZWxf ZmlsZXBhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpZiB1c2VfbW9k ZWxfcGF0aDoKLS0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tl ci5WYWxpZGF0aW9uRXJyb3IpOgotLSAgICAgICAgICAgICAgICBfID0gb25ueC5sb2FkX21vZGVs KG5ld19tb2RlbF9maWxlcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAg IGVsc2U6Ci0tICAgICAgICAgICAgb25ueF9tb2RlbCA9IG9ubngubG9hZF9tb2RlbCgKLS0gICAg ICAgICAgICAgICAgbmV3X21vZGVsX2ZpbGVwYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAg d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKToKLS0g ICAgICAgICAgICAgICAgbG9hZF9leHRlcm5hbF9kYXRhX2Zvcl9tb2RlbChvbm54X21vZGVsLCBl eHRlcm5hbF9kYXRhX2RpcikKLS0KLS0KLS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2Ns YXNzKAotLSAgICBbCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVm In0sCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAotLSAg ICBdCi0tKQotLWNsYXNzIFRlc3RTYXZlQWxsVGVuc29yc0FzRXh0ZXJuYWxEYXRhKHVuaXR0ZXN0 LlRlc3RDYXNlKToKLS0gICAgc2VyaWFsaXphdGlvbl9mb3JtYXQ6IHN0ciA9ICJwcm90b2J1ZiIK LS0KLS0gICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLl90ZW1wX2Rp cl9vYmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQotLSAgICAgICAgc2VsZi50ZW1w X2Rpcjogc3RyID0gc2VsZi5fdGVtcF9kaXJfb2JqLm5hbWUKLS0gICAgICAgIHNlbGYuaW5pdGlh bGl6ZXJfdmFsdWUgPSBucC5hcmFuZ2UoNikucmVzaGFwZSgzLCAyKS5hc3R5cGUobnAuZmxvYXQz MikgKyA1MTIKLS0gICAgICAgIHNlbGYuYXR0cmlidXRlX3ZhbHVlID0gbnAuYXJhbmdlKDYpLnJl c2hhcGUoMiwgMykuYXN0eXBlKG5wLmZsb2F0MzIpICsgMjU2Ci0tICAgICAgICBzZWxmLm1vZGVs ID0gc2VsZi5jcmVhdGVfdGVzdF9tb2RlbF9wcm90bygpCi0tCi0tICAgIGRlZiBnZXRfdGVtcF9t b2RlbF9maWxlbmFtZShzZWxmKToKLS0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi50 ZW1wX2Rpciwgc3RyKHV1aWQudXVpZDQoKSkgKyAiLm9ubngiKQotLQotLSAgICBkZWYgY3JlYXRl X2RhdGFfdGVuc29ycygKLS0gICAgICAgIHNlbGYsIHRlbnNvcnNfZGF0YTogbGlzdFt0dXBsZVts aXN0W0FueV0sIEFueV1dCi0tICAgICkgLT4gbGlzdFtUZW5zb3JQcm90b106Ci0tICAgICAgICB0 ZW5zb3JzID0gW10KLS0gICAgICAgIGZvciB2YWx1ZSwgdGVuc29yX25hbWUgaW4gdGVuc29yc19k YXRhOgotLSAgICAgICAgICAgIHRlbnNvciA9IGZyb21fYXJyYXkobnAuYXJyYXkodmFsdWUpKQot LSAgICAgICAgICAgIHRlbnNvci5uYW1lID0gdGVuc29yX25hbWUKLS0gICAgICAgICAgICB0ZW5z b3JzLmFwcGVuZCh0ZW5zb3IpCi0tCi0tICAgICAgICByZXR1cm4gdGVuc29ycwotLQotLSAgICBk ZWYgY3JlYXRlX3Rlc3RfbW9kZWxfcHJvdG8oc2VsZikgLT4gTW9kZWxQcm90bzoKLS0gICAgICAg IHRlbnNvcnMgPSBzZWxmLmNyZWF0ZV9kYXRhX3RlbnNvcnMoCi0tICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICAoc2VsZi5hdHRyaWJ1dGVfdmFsdWUsICJhdHRyaWJ1dGVfdmFsdWUiKSwg ICMgdHlwZTogaWdub3JlW2xpc3QtaXRlbV0KLS0gICAgICAgICAgICAgICAgKHNlbGYuaW5pdGlh bGl6ZXJfdmFsdWUsICJpbnB1dF92YWx1ZSIpLCAgIyB0eXBlOiBpZ25vcmVbbGlzdC1pdGVtXQot LSAgICAgICAgICAgIF0KLS0gICAgICAgICkKLS0KLS0gICAgICAgIGNvbnN0YW50X25vZGUgPSBv bm54LmhlbHBlci5tYWtlX25vZGUoCi0tICAgICAgICAgICAgIkNvbnN0YW50IiwgaW5wdXRzPVtd LCBvdXRwdXRzPVsidmFsdWVzIl0sIHZhbHVlPXRlbnNvcnNbMF0KLS0gICAgICAgICkKLS0KLS0g ICAgICAgIGlucHV0cyA9IFsKLS0gICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVf aW5mbygKLS0gICAgICAgICAgICAgICAgImlucHV0X3ZhbHVlIiwgb25ueC5UZW5zb3JQcm90by5G TE9BVCwgc2VsZi5pbml0aWFsaXplcl92YWx1ZS5zaGFwZQotLSAgICAgICAgICAgICkKLS0gICAg ICAgIF0KLS0KLS0gICAgICAgIGdyYXBoID0gaGVscGVyLm1ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgW2NvbnN0YW50X25vZGVdLAotLSAgICAgICAgICAgICJ0ZXN0X2dyYXBoIiwKLS0gICAgICAg ICAgICBpbnB1dHM9aW5wdXRzLAotLSAgICAgICAgICAgIG91dHB1dHM9W10sCi0tICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9W3RlbnNvcnNbMV1dLAotLSAgICAgICAgKQotLSAgICAgICAgcmV0dXJu IGhlbHBlci5tYWtlX21vZGVsKGdyYXBoKQotLQotLSAgICBAdW5pdHRlc3Quc2tpcElmKAotLSAg ICAgICAgc2VyaWFsaXphdGlvbl9mb3JtYXQgIT0gInByb3RvYnVmIiwKLS0gICAgICAgICJjaGVj a19tb2RlbCBzdXBwb3J0cyBwcm90b2J1ZiBvbmx5IHdoZW4gcHJvdmlkZWQgYXMgYSBwYXRoIiwK LS0gICAgKQotLSAgICBkZWYgdGVzdF9jaGVja19tb2RlbChzZWxmKSAtPiBOb25lOgotLSAgICAg ICAgY2hlY2tlci5jaGVja19tb2RlbChzZWxmLm1vZGVsKQotLQotLSAgICBkZWYgdGVzdF9jb252 ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfd2l0aF9zaXplX3RocmVzaG9sZChzZWxmKSAtPiBO b25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxl bmFtZSgpCi0tCi0tICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoc2VsZi5t b2RlbCwgc2l6ZV90aHJlc2hvbGQ9MTAyNCkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxm Lm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0t ICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5n cmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbml0aWFsaXpl cl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0KLS0gICAgZGVmIHRlc3RfY29u dmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX3dpdGhvdXRfc2l6ZV90aHJlc2hvbGQoc2VsZikg LT4gTm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxf ZmlsZW5hbWUoKQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKHNlbGYu bW9kZWwsIHNpemVfdGhyZXNob2xkPTApCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5t b2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAg ICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlh bGl6YXRpb25fZm9ybWF0KQotLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3Jh cGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90 ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNz ZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6 ZXJfdmFsdWUpCi0tCi0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0 YV9mcm9tX29uZV9maWxlX3dpdGhfbG9jYXRpb24oc2VsZikgLT4gTm9uZToKLS0gICAgICAgIG1v ZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLSAgICAgICAg ZXh0ZXJuYWxfZGF0YV9maWxlID0gc3RyKHV1aWQudXVpZDQoKSkKLS0KLS0gICAgICAgIGNvbnZl cnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAg ICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9f b25lX2ZpbGU9VHJ1ZSwKLS0gICAgICAgICAgICBsb2NhdGlvbj1leHRlcm5hbF9kYXRhX2ZpbGUs Ci0tICAgICAgICApCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxf ZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgc2VsZi5h c3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCBleHRl cm5hbF9kYXRhX2ZpbGUpKSkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1v ZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgICMg dGVzdCBjb252ZXJ0IG1vZGVsIGZyb20gZXh0ZXJuYWwgZGF0YQotLSAgICAgICAgY29udmVydF9t b2RlbF9mcm9tX2V4dGVybmFsX2RhdGEobW9kZWwpCi0tICAgICAgICBtb2RlbF9maWxlX3BhdGgg PSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2Rl bChtb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLSAg ICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlh bGl6YXRpb25fZm9ybWF0KQotLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3Jh cGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVuKGluaXRpYWxp emVyX3RlbnNvci5leHRlcm5hbF9kYXRhKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5p dGlhbGl6ZXJfdGVuc29yLmRhdGFfbG9jYXRpb24sIFRlbnNvclByb3RvLkRFRkFVTFQpCi0tICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5z b3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNv ciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RmFsc2UobGVuKGF0dHJpYnV0ZV90ZW5zb3IuZXh0ZXJuYWxfZGF0YSkpCi0tICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKGF0dHJpYnV0ZV90ZW5zb3IuZGF0YV9sb2NhdGlvbiwgVGVuc29yUHJv dG8uREVGQVVMVCkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5 KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAgZGVmIHRl c3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX2Zyb21fb25lX2ZpbGVfd2l0aG91dF9s b2NhdGlvbl91c2VzX21vZGVsX25hbWUoCi0tICAgICAgICBzZWxmLAotLSAgICApIC0+IE5vbmU6 Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1l KCkKLS0KLS0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKLS0gICAgICAg ICAgICBzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9sZD0wLCBhbGxfdGVuc29yc190b19vbmVfZmls ZT1UcnVlCi0tICAgICAgICApCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwg bW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAg c2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkpCi0tICAgICAg ICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9k aXIsIG1vZGVsX2ZpbGVfcGF0aCkpKQotLQotLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3Rv X2V4dGVybmFsX2RhdGFfb25lX2ZpbGVfcGVyX3RlbnNvcl93aXRob3V0X2F0dHJpYnV0ZSgKLS0g ICAgICAgIHNlbGYsCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9 IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLQotLSAgICAgICAgY29udmVydF9tb2Rl bF90b19leHRlcm5hbF9kYXRhKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAg ICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmls ZT1GYWxzZSwKLS0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKLS0gICAgICAg ICkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgs IHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUo b3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgImlucHV0X3ZhbHVl IikpKQotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpv aW4oc2VsZi50ZW1wX2RpciwgImF0dHJpYnV0ZV92YWx1ZSIpKSkKLS0KLS0gICAgZGVmIHRlc3Rf Y29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX29uZV9maWxlX3Blcl90ZW5zb3Jfd2l0aF9h dHRyaWJ1dGUoCi0tICAgICAgICBzZWxmLAotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBtb2Rl bF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0KLS0gICAgICAg IGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKLS0gICAgICAgICAgICBzZWxmLm1vZGVs LAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAgICAgICAgYWxsX3RlbnNv cnNfdG9fb25lX2ZpbGU9RmFsc2UsCi0tICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9VHJ1 ZSwKLS0gICAgICAgICkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2Rl bF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBzZWxm LmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKLS0gICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rpciwg ImlucHV0X3ZhbHVlIikpKQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxl KG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikpKQotLQotLSAg ICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfZG9lc19ub3RfY29udmVy dF9hdHRyaWJ1dGVfdmFsdWVzKAotLSAgICAgICAgc2VsZiwKLS0gICAgKSAtPiBOb25lOgotLSAg ICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCi0t Ci0tICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCi0tICAgICAgICAgICAg c2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAotLSAgICAgICAgICAg IGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAotLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29u ZV9maWxlPUZhbHNlLAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYu bW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0g ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50 ZW1wX2RpciwgImlucHV0X3ZhbHVlIikpKQotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5w YXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgImF0dHJpYnV0ZV92YWx1ZSIp KSkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9 IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5p dGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tCi0tICAgICAgICBh dHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAg ICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xv Y2F0aW9uIikpCi0tCi0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0 YV9jb252ZXJ0c19hdHRyaWJ1dGVfdmFsdWVzKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2Rl bF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0KLS0gICAgICAg IGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKLS0gICAgICAgICAgICBzZWxmLm1vZGVs LCBzaXplX3RocmVzaG9sZD0wLCBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlCi0tICAgICAgICApCi0t ICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxm LnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAg ICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAg ICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNv ciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5p dGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tCi0tICAgICAgICBh dHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNv ciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGF0dHJp YnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0KLS0gICAgZGVmIHRlc3Rf c2F2ZV9tb2RlbF9kb2VzX25vdF9jb252ZXJ0X3RvX2V4dGVybmFsX2RhdGFfYW5kX3NhdmVzX3Ro ZV9tb2RlbCgKLS0gICAgICAgIHNlbGYsCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIG1vZGVs X2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLSAgICAgICAgb25u eC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAgbW9k ZWxfZmlsZV9wYXRoLAotLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCi0t ICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPUZhbHNlLAotLSAgICAgICAgKQotLSAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkpCi0t Ci0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2Rl bC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbml0aWFs aXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0KLS0gICAgICAgIGF0dHJp YnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50Ci0tICAgICAg ICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRp b24iKSkKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF9kb2VzX2NvbnZlcnRfYW5kX3NhdmVz X3RoZV9tb2RlbChzZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2Vs Zi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0t ICAgICAgICAgICAgc2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCi0t ICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKLS0gICAgICAgICAgICBzYXZl X2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKLS0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVf ZmlsZT1UcnVlLAotLSAgICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCi0tICAgICAgICAgICAgc2l6 ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKLS0g ICAgICAgICkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVf cGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIGluaXRpYWxpemVy X3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2Vy dFRydWUoaW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5z b3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNv ciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNv ciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX3dp dGhvdXRfbG9hZGluZ19leHRlcm5hbF9kYXRhKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2Rl bF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAgIG9u bnguc2F2ZV9tb2RlbCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIG1v ZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAot LSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAgICAgIGxv Y2F0aW9uPU5vbmUsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAgICAg ICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKLS0gICAgICAgICkKLS0gICAgICAgICMgU2F2ZSB3 aXRob3V0IGxvYWRfZXh0ZXJuYWxfZGF0YQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwoCi0tICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKLS0gICAgICAgICkKLS0gICAgICAgIG9ubngu c2F2ZV9tb2RlbCgKLS0gICAgICAgICAgICBtb2RlbCwKLS0gICAgICAgICAgICBtb2RlbF9maWxl X3BhdGgsCi0tICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKLS0gICAgICAg ICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKLS0gICAgICAgICAgICBsb2NhdGlvbj1O b25lLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAgICAgICAgY29udmVy dF9hdHRyaWJ1dGU9RmFsc2UsCi0tICAgICAgICApCi0tICAgICAgICAjIExvYWQgdGhlIHNhdmVk IG1vZGVsIGFnYWluOyBPbmx5IHdvcmtzIGlmIHRoZSBzYXZlZCBwYXRoIGlzIHVuZGVyIHRoZSBz YW1lIGRpcmVjdG9yeQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmls ZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgaW5pdGlhbGl6 ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIHNlbGYuYXNz ZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3Rl bnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBhdHRyaWJ1dGVfdGVu c29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAgICAgICAgc2VsZi5h c3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0t ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVu c29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxf d2l0aF9leGlzdGluZ19yYXdfZGF0YV9zaG91bGRfb3ZlcnJpZGUoc2VsZikgLT4gTm9uZToKLS0g ICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQot LSAgICAgICAgb3JpZ2luYWxfcmF3X2RhdGEgPSBzZWxmLm1vZGVsLmdyYXBoLmluaXRpYWxpemVy WzBdLnJhd19kYXRhCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgc2Vs Zi5tb2RlbCwKLS0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCi0tICAgICAgICAgICAgc2Vs Zi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKLS0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2Rh dGE9VHJ1ZSwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAotLSAgICAgICAgKQotLSAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkpCi0t Ci0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbCgKLS0gICAgICAgICAgICBtb2RlbF9m aWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1G YWxzZQotLSAgICAgICAgKQotLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3Jh cGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvci5yYXdfZGF0YSA9 IGIiZHVtbXB5X3Jhd19kYXRhIgotLSAgICAgICAgIyBJZiByYXdfZGF0YSBhbmQgZXh0ZXJuYWwg dGVuc29yIGV4aXN0IGF0IHRoZSBzYW1lIHRpbWUsIG92ZXJyaWRlIGV4aXN0aW5nIHJhd19kYXRh Ci0tICAgICAgICBsb2FkX2V4dGVybmFsX2RhdGFfZm9yX3RlbnNvcihpbml0aWFsaXplcl90ZW5z b3IsIHNlbGYudGVtcF9kaXIpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluaXRpYWxpemVy X3RlbnNvci5yYXdfZGF0YSwgb3JpZ2luYWxfcmF3X2RhdGEpCi0tCi0tCi0tQHBhcmFtZXRlcml6 ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKLS0gICAgWwotLSAgICAgICAgeyJzZXJpYWxpemF0aW9u X2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAotLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6 ICJ0ZXh0cHJvdG8ifSwKLS0gICAgXQotLSkKLS1jbGFzcyBUZXN0RXh0ZXJuYWxEYXRhVG9BcnJh eSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0tICAgIHNlcmlhbGl6YXRpb25fZm9ybWF0OiBzdHIgPSAi cHJvdG9idWYiCi0tCi0tICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25lOgotLSAgICAgICAgc2Vs Zi5fdGVtcF9kaXJfb2JqID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKLS0gICAgICAg IHNlbGYudGVtcF9kaXI6IHN0ciA9IHNlbGYuX3RlbXBfZGlyX29iai5uYW1lCi0tICAgICAgICBz ZWxmLl9tb2RlbF9maWxlX3BhdGg6IHN0ciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAi bW9kZWwub25ueCIpCi0tICAgICAgICBzZWxmLmxhcmdlX2RhdGEgPSBucC5yYW5kb20ucmFuZCgx MCwgNjAsIDEwMCkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tICAgICAgICBzZWxmLnNtYWxsX2RhdGEg PSAoMjAwLCAzMDApCi0tICAgICAgICBzZWxmLm1vZGVsID0gc2VsZi5jcmVhdGVfdGVzdF9tb2Rl bCgpCi0tCi0tICAgIEBwcm9wZXJ0eQotLSAgICBkZWYgbW9kZWxfZmlsZV9wYXRoKHNlbGYpOgot LSAgICAgICAgcmV0dXJuIHNlbGYuX21vZGVsX2ZpbGVfcGF0aAotLQotLSAgICBkZWYgdGVhckRv d24oc2VsZikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuX3RlbXBfZGlyX29iai5jbGVhbnVwKCkK LS0KLS0gICAgZGVmIGNyZWF0ZV90ZXN0X21vZGVsKHNlbGYpIC0+IE1vZGVsUHJvdG86Ci0tICAg ICAgICBYID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5G TE9BVCwgc2VsZi5sYXJnZV9kYXRhLnNoYXBlKQotLSAgICAgICAgaW5wdXRfaW5pdCA9IGhlbHBl ci5tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICBuYW1lPSJYIiwKLS0gICAgICAgICAgICBkYXRh X3R5cGU9VGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgZGltcz1zZWxmLmxhcmdlX2Rh dGEuc2hhcGUsCi0tICAgICAgICAgICAgdmFscz1zZWxmLmxhcmdlX2RhdGEudG9ieXRlcygpLAot LSAgICAgICAgICAgIHJhdz1UcnVlLAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2hhcGVfZGF0 YSA9IG5wLmFycmF5KHNlbGYuc21hbGxfZGF0YSwgbnAuaW50NjQpCi0tICAgICAgICBzaGFwZV9p bml0ID0gaGVscGVyLm1ha2VfdGVuc29yKAotLSAgICAgICAgICAgIG5hbWU9IlNoYXBlIiwKLS0g ICAgICAgICAgICBkYXRhX3R5cGU9VGVuc29yUHJvdG8uSU5UNjQsCi0tICAgICAgICAgICAgZGlt cz1zaGFwZV9kYXRhLnNoYXBlLAotLSAgICAgICAgICAgIHZhbHM9c2hhcGVfZGF0YS50b2J5dGVz KCksCi0tICAgICAgICAgICAgcmF3PVRydWUsCi0tICAgICAgICApCi0tICAgICAgICBDID0gaGVs cGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIkMiLCBUZW5zb3JQcm90by5JTlQ2NCwgc2VsZi5z bWFsbF9kYXRhKQotLQotLSAgICAgICAgcmVzaGFwZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAiUmVzaGFwZSIsCi0tICAgICAgICAgICAgaW5wdXRzPVsiWCIsICJTaGFw ZSJdLAotLSAgICAgICAgICAgIG91dHB1dHM9WyJZIl0sCi0tICAgICAgICApCi0tICAgICAgICBj YXN0ID0gb25ueC5oZWxwZXIubWFrZV9ub2RlKAotLSAgICAgICAgICAgICJDYXN0IiwgaW5wdXRz PVsiWSJdLCBvdXRwdXRzPVsiQyJdLCB0bz1UZW5zb3JQcm90by5JTlQ2NAotLSAgICAgICAgKQot LQotLSAgICAgICAgZ3JhcGhfZGVmID0gaGVscGVyLm1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg W3Jlc2hhcGUsIGNhc3RdLAotLSAgICAgICAgICAgICJ0ZXN0LW1vZGVsIiwKLS0gICAgICAgICAg ICBbWF0sCi0tICAgICAgICAgICAgW0NdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtpbnB1 dF9pbml0LCBzaGFwZV9pbml0XSwKLS0gICAgICAgICkKLS0gICAgICAgIG1vZGVsID0gaGVscGVy Lm1ha2VfbW9kZWwoZ3JhcGhfZGVmLCBwcm9kdWNlcl9uYW1lPSJvbm54LWV4YW1wbGUiKQotLSAg ICAgICAgcmV0dXJuIG1vZGVsCi0tCi0tICAgIEB1bml0dGVzdC5za2lwSWYoCi0tICAgICAgICBz ZXJpYWxpemF0aW9uX2Zvcm1hdCAhPSAicHJvdG9idWYiLAotLSAgICAgICAgImNoZWNrX21vZGVs IHN1cHBvcnRzIHByb3RvYnVmIG9ubHkgd2hlbiBwcm92aWRlZCBhcyBhIHBhdGgiLAotLSAgICAp Ci0tICAgIGRlZiB0ZXN0X2NoZWNrX21vZGVsKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBjaGVj a2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWwpCi0tCi0tICAgIGRlZiB0ZXN0X3Jlc2hhcGVfaW5m ZXJlbmNlX3dpdGhfZXh0ZXJuYWxfZGF0YV9mYWlsKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBv bm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBz ZWxmLm1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAg ICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAotLSAgICAgICAgICAgIHNpemVfdGhy ZXNob2xkPTAsCi0tICAgICAgICApCi0tICAgICAgICBtb2RlbF93aXRob3V0X2V4dGVybmFsX2Rh dGEgPSBvbm54LmxvYWQoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAgICAg KQotLSAgICAgICAgIyBTaGFwZSBpbmZlcmVuY2Ugb2YgUmVzaGFwZSB1c2VzIFBhcnNlRGF0YQot LSAgICAgICAgIyBQYXJzZURhdGEgY2Fubm90IGhhbmRsZSBleHRlcm5hbCBkYXRhIGFuZCBzaG91 bGQgdGhyb3cgdGhlIGVycm9yIGFzIGZvbGxvd3M6Ci0tICAgICAgICAjIENhbm5vdCBwYXJzZSBk YXRhIGZyb20gZXh0ZXJuYWwgdGVuc29ycy4gUGxlYXNlIGxvYWQgZXh0ZXJuYWwgZGF0YSBpbnRv IHJhdyBkYXRhIGZvciB0ZW5zb3I6IFNoYXBlCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygK LS0gICAgICAgICAgICBzaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCi0tICAgICAgICAg ICAgc2hhcGVfaW5mZXJlbmNlLmluZmVyX3NoYXBlcywKLS0gICAgICAgICAgICBtb2RlbF93aXRo b3V0X2V4dGVybmFsX2RhdGEsCi0tICAgICAgICAgICAgc3RyaWN0X21vZGU9VHJ1ZSwKLS0gICAg ICAgICkKLS0KLS0gICAgZGVmIHRlc3RfdG9fYXJyYXlfd2l0aF9leHRlcm5hbF9kYXRhKHNlbGYp IC0+IE5vbmU6Ci0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgc2VsZi5t b2RlbCwKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBz ZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxf ZGF0YT1UcnVlLAotLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAot LSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAgICApCi0tICAgICAgICAjIHJh d19kYXRhIG9mIGV4dGVybmFsIHRlbnNvciBpcyBub3QgbG9hZGVkCi0tICAgICAgICBtb2RlbCA9 IG9ubngubG9hZCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCi0tICAgICAgICApCi0t ICAgICAgICAjIFNwZWNpZnkgc2VsZi50ZW1wX2RpciB0byBsb2FkIGV4dGVybmFsIHRlbnNvcgot LSAgICAgICAgbG9hZGVkX2xhcmdlX2RhdGEgPSB0b19hcnJheShtb2RlbC5ncmFwaC5pbml0aWFs aXplclswXSwgc2VsZi50ZW1wX2RpcikKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNs b3NlKGxvYWRlZF9sYXJnZV9kYXRhLCBzZWxmLmxhcmdlX2RhdGEpCi0tCi0tICAgIGRlZiB0ZXN0 X3NhdmVfbW9kZWxfd2l0aF9leHRlcm5hbF9kYXRhX211bHRpcGxlX3RpbWVzKHNlbGYpIC0+IE5v bmU6Ci0tICAgICAgICAjIFRlc3Qgb25ueC5zYXZlIHNob3VsZCByZXNwZWN0aXZlbHkgaGFuZGxl IHR5cGljYWwgdGVuc29yIGFuZCBleHRlcm5hbCB0ZW5zb3IgcHJvcGVybHkKLS0gICAgICAgICMg MXN0IHNhdmU6IHNhdmUgdHdvIHRlbnNvcnMgd2hpY2ggaGF2ZSByYXdfZGF0YQotLSAgICAgICAg IyBPbmx5IHdfbGFyZ2Ugd2lsbCBiZSBzdG9yZWQgYXMgZXh0ZXJuYWwgdGVuc29ycyBzaW5jZSBp dCdzIGxhcmdlciB0aGFuIDEwMjQKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKLS0gICAgICAg ICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLAotLSAg ICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2ZV9h c19leHRlcm5hbF9kYXRhPVRydWUsCi0tICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2Zp bGU9RmFsc2UsCi0tICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKLS0gICAgICAgICAgICBzaXpl X3RocmVzaG9sZD0xMDI0LAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPVRydWUsCi0t ICAgICAgICApCi0tICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwgPSBvbm54 LmxvYWQoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXph dGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAgICAgKQotLSAgICAg ICAgbGFyZ2VfaW5wdXRfdGVuc29yID0gbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLmdy YXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUobGFyZ2VfaW5wdXRf dGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9hbGxjbG9zZSgKLS0gICAgICAgICAgICB0b19hcnJheShsYXJnZV9pbnB1dF90ZW5zb3Is IHNlbGYudGVtcF9kaXIpLCBzZWxmLmxhcmdlX2RhdGEKLS0gICAgICAgICkKLS0KLS0gICAgICAg IHNtYWxsX3NoYXBlX3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5ncmFw aC5pbml0aWFsaXplclsxXQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBzbWFsbF9zaGFw ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KHNtYWxsX3NoYXBlX3RlbnNvciksIHNlbGYuc21hbGxf ZGF0YSkKLS0KLS0gICAgICAgICMgMm5kIHNhdmU6IG9uZSB0ZW5zb3IgaGFzIHJhd19kYXRhIChz bWFsbCk7IG9uZSBleHRlcm5hbCB0ZW5zb3IgKGxhcmdlKQotLSAgICAgICAgIyBTYXZlIHRoZW0g Ym90aCBhcyBleHRlcm5hbCB0ZW5zb3JzIHRoaXMgdGltZQotLSAgICAgICAgb25ueC5zYXZlX21v ZGVsKAotLSAgICAgICAgICAgIG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbCwKLS0gICAg ICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6 YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAot LSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAotLSAgICAgICAgICAg IGxvY2F0aW9uPU5vbmUsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAg ICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlLAotLSAgICAgICAgKQotLQotLSAgICAgICAgbW9k ZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsID0gb25ueC5sb2FkKAotLSAgICAgICAgICAgIHNl bGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVy bmFsX2RhdGE9RmFsc2UKLS0gICAgICAgICkKLS0gICAgICAgIGxhcmdlX2lucHV0X3RlbnNvciA9 IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxhcmdlX2lucHV0X3RlbnNvci5IYXNGaWVsZCgiZGF0YV9s b2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UoCi0tICAgICAg ICAgICAgdG9fYXJyYXkobGFyZ2VfaW5wdXRfdGVuc29yLCBzZWxmLnRlbXBfZGlyKSwgc2VsZi5s YXJnZV9kYXRhCi0tICAgICAgICApCi0tCi0tICAgICAgICBzbWFsbF9zaGFwZV90ZW5zb3IgPSBt b2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMV0KLS0gICAg ICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbWFsbF9zaGFwZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9j YXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAotLSAgICAgICAg ICAgIHRvX2FycmF5KHNtYWxsX3NoYXBlX3RlbnNvciwgc2VsZi50ZW1wX2RpciksIHNlbGYuc21h bGxfZGF0YQotLSAgICAgICAgKQotLQotLQotIGNsYXNzIFRlc3ROb3RBbGxvd1RvTG9hZEV4dGVy bmFsRGF0YU91dHNpZGVNb2RlbERpcmVjdG9yeShUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2UpOgot ICAgICAiIiJFc3NlbnRpYWwgdGVzdCB0byBjaGVjayB0aGF0IG9ubnggKHZhbGlkYXRlKSBDKysg Y29kZSB3aWxsIG5vdCBhbGxvdyB0byBsb2FkIGV4dGVybmFsX2RhdGEgb3V0c2lkZSB0aGUgbW9k ZWwKLSAgICAgZGlyZWN0b3J5LgotQEAgLTc5MSwxNyArMTc1LDYgQEAgY2xhc3MgVGVzdE5vdEFs bG93VG9Mb2FkRXh0ZXJuYWxEYXRhT3V0c2lkZU1vZGVsRGlyZWN0b3J5T25XaW5kb3dzKAotICAg ICAgICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSkKLSAKLSAK LS1jbGFzcyBUZXN0U2F2ZUFsbFRlbnNvcnNBc0V4dGVybmFsRGF0YVdpdGhQYXRoKFRlc3RTYXZl QWxsVGVuc29yc0FzRXh0ZXJuYWxEYXRhKToKLS0gICAgZGVmIGdldF90ZW1wX21vZGVsX2ZpbGVu YW1lKHNlbGYpIC0+IHBhdGhsaWIuUGF0aDoKLS0gICAgICAgIHJldHVybiBwYXRobGliLlBhdGgo c3VwZXIoKS5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpKQotLQotLQotLWNsYXNzIFRlc3RFeHRl cm5hbERhdGFUb0FycmF5V2l0aFBhdGgoVGVzdEV4dGVybmFsRGF0YVRvQXJyYXkpOgotLSAgICBA cHJvcGVydHkKLS0gICAgZGVmIG1vZGVsX2ZpbGVfcGF0aChzZWxmKSAtPiBwYXRobGliLlBhdGg6 Ci0tICAgICAgICByZXR1cm4gcGF0aGxpYi5QYXRoKHNlbGYuX21vZGVsX2ZpbGVfcGF0aCkKLS0K LS0KLSBjbGFzcyBUZXN0RnVuY3Rpb25zQW5kU3ViR3JhcGhzKHVuaXR0ZXN0LlRlc3RDYXNlKToK LSAgICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBzZWxmLl90ZW1wX2Rpcl9v YmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQotZGlmZiAtLWdpdCBhL29ubngvdGVz dC90b29sc190ZXN0LnB5IGIvb25ueC90ZXN0L3Rvb2xzX3Rlc3QucHkKLWluZGV4IGZkNDQxMzc4 Ni4uZjg0M2MxZmJjIDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L3Rvb2xzX3Rlc3QucHkKLSsrKyBi L29ubngvdGVzdC90b29sc190ZXN0LnB5Ci1AQCAtMTEyLDMyICsxMTIsNiBAQCBjbGFzcyBUZXN0 VG9vbHNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgeTIgPSBvaW5mMi5y dW4oTm9uZSwgeyJYIjogeH0pWzBdICAjIHR5cGU6IGlnbm9yZVtpbmRleF0KLSAgICAgICAgIGFz c2VydF9hbGxjbG9zZSh5MSwgeTIpCi0gCi0tICAgIGRlZiB0ZXN0X3JlcGxhY2VfcmFuZ2Uoc2Vs Zik6Ci0tICAgICAgICBkdHlwZSA9IG5wLmZsb2F0MzIKLS0gICAgICAgIHZhbHVlID0gbnAucmFu ZG9tLnJhbmRuKDIsIDEwMCkuYXN0eXBlKGR0eXBlKQotLSAgICAgICAgQSA9IG51bXB5X2hlbHBl ci5mcm9tX2FycmF5KHZhbHVlLCBuYW1lPSJBIikKLS0gICAgICAgIHZhbHVlID0gbnAuYXJyYXko WzFdLCBkdHlwZT1kdHlwZSkKLS0gICAgICAgIEMgPSBudW1weV9oZWxwZXIuZnJvbV9hcnJheSh2 YWx1ZSwgbmFtZT0iQyIpCi0tCi0tICAgICAgICBYID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmVdKQotLSAgICAgICAgWSA9 IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtO b25lXSkKLS0gICAgICAgIG5vZGUwID0gaGVscGVyLm1ha2Vfbm9kZSgiQ29uc3RhbnQiLCBbXSwg WyJBIl0sIHZhbHVlPUEpCi0tICAgICAgICBub2RlMSA9IGhlbHBlci5tYWtlX25vZGUoIk1hdE11 bCIsIFsiWCIsICJBIl0sIFsiQVgiXSkKLS0gICAgICAgIG5vZGUyID0gaGVscGVyLm1ha2Vfbm9k ZSgiU3ViIiwgWyJBWCIsICJDIl0sIFsiWSJdKQotLSAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFr ZV9ncmFwaChbbm9kZTAsIG5vZGUxLCBub2RlMl0sICJsciIsIFtYXSwgW1ldLCBbQ10pCi0tICAg ICAgICBtb2RlbF9kZWYgPSBoZWxwZXIubWFrZV9tb2RlbChncmFwaCkKLS0KLS0gICAgICAgIHgg PSBucC5hcnJheShbMSwgMiwgNCwgNSwgNSwgNF0pLmFzdHlwZShucC5mbG9hdDMyKS5yZXNoYXBl KCgzLCAyKSkKLS0gICAgICAgIG9pbmYxID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsX2RlZikK LS0gICAgICAgIHkxID0gb2luZjEucnVuKE5vbmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25v cmVbaW5kZXhdCi0tICAgICAgICByZXBsID0gcmVwbGFjZV9pbml0aWFsaXplcl9ieV9jb25zdGFu dF9vZl9zaGFwZShtb2RlbF9kZWYsIHVzZV9yYW5nZT1UcnVlKQotLSAgICAgICAgbm9kZV90eXBl cyA9IHtuLm9wX3R5cGUgZm9yIG4gaW4gcmVwbC5ncmFwaC5ub2RlfQotLSAgICAgICAgc2VsZi5h c3NlcnRJbigiUmFuZ2UiLCBub2RlX3R5cGVzKQotLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigi Q29uc3RhbnRPZlNoYXBlIiwgbm9kZV90eXBlcykKLS0gICAgICAgIG9pbmYyID0gUmVmZXJlbmNl RXZhbHVhdG9yKHJlcGwpCi0tICAgICAgICB5MiA9IG9pbmYyLnJ1bihOb25lLCB7IlgiOiB4fSlb MF0gICMgdHlwZTogaWdub3JlW2luZGV4XQotLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKHkxLnNo YXBlLCB5Mi5zaGFwZSkKLS0KLSAgICAgZGVmIHRlc3RfcmVwbGFjZV9jb25zdGFudF9mdW5jdGlv bihzZWxmKToKLSAgICAgICAgIGR0eXBlID0gbnAuZmxvYXQzMgotICAgICAgICAgdmFsdWUgPSBu cC5yYW5kb20ucmFuZG4oMiwgMTAwKS5hc3R5cGUoZHR5cGUpCi1AQCAtMTgyLDQ5ICsxNTYsNiBA QCBjbGFzcyBUZXN0VG9vbHNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAg eTIgPSBvaW5mMi5ydW4oTm9uZSwgeyJYIjogeH0pWzBdICAjIHR5cGU6IGlnbm9yZVtpbmRleF0K LSAgICAgICAgIGFzc2VydF9hbGxjbG9zZSh5MSwgeTIpCi0gCi0tICAgIGRlZiB0ZXN0X3JlcGxh Y2VfcmFuZ2VfZnVuY3Rpb24oc2VsZik6Ci0tICAgICAgICBkdHlwZSA9IG5wLmZsb2F0MzIKLS0g ICAgICAgIHZhbHVlID0gbnAucmFuZG9tLnJhbmRuKDIsIDEwMCkuYXN0eXBlKGR0eXBlKQotLSAg ICAgICAgQSA9IG51bXB5X2hlbHBlci5mcm9tX2FycmF5KHZhbHVlLCBuYW1lPSJBIikKLS0gICAg ICAgIHZhbHVlID0gbnAuYXJyYXkoWzFdLCBkdHlwZT1kdHlwZSkKLS0gICAgICAgIEMgPSBudW1w eV9oZWxwZXIuZnJvbV9hcnJheSh2YWx1ZSwgbmFtZT0iQyIpCi0tCi0tICAgICAgICBYID0gaGVs cGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUs IE5vbmVdKQotLSAgICAgICAgWSA9IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKLS0gICAgICAgIG5vZGVDID0gaGVscGVyLm1ha2Vf bm9kZSgiQ29uc3RhbnQiLCBbXSwgWyJDIl0sIHZhbHVlPUMpCi0tICAgICAgICBub2RlMCA9IGhl bHBlci5tYWtlX25vZGUoIkNvbnN0YW50IiwgW10sIFsiQSJdLCB2YWx1ZT1BKQotLSAgICAgICAg bm9kZTEgPSBoZWxwZXIubWFrZV9ub2RlKCJNYXRNdWwiLCBbIlgiLCAiQSJdLCBbIkFYIl0pCi0t ICAgICAgICBub2RlMiA9IGhlbHBlci5tYWtlX25vZGUoIlN1YiIsIFsiQVgiLCAiQyJdLCBbIlki XSkKLS0gICAgICAgIG9wc2V0X2ltcG9ydHMgPSBbCi0tICAgICAgICAgICAgaGVscGVyLm1ha2Vf b3BzZXRpZCgiIiwgb25ueF9vcHNldF92ZXJzaW9uKCkpLAotLSAgICAgICAgICAgIGhlbHBlci5t YWtlX29wc2V0aWQoImN1c3RvbSIsIDEpLAotLSAgICAgICAgXQotLSAgICAgICAgZmN0ID0gaGVs cGVyLm1ha2VfZnVuY3Rpb24oCi0tICAgICAgICAgICAgImN1c3RvbSIsCi0tICAgICAgICAgICAg InVuaXR0ZXN0IiwKLS0gICAgICAgICAgICBbIlgiXSwKLS0gICAgICAgICAgICBbIlkiXSwKLS0g ICAgICAgICAgICBbbm9kZUMsIG5vZGUwLCBub2RlMSwgbm9kZTJdLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHMsCi0tICAgICAgICApCi0tCi0tICAgICAgICBub2RlID0gaGVscGVyLm1ha2Vf bm9kZSgidW5pdHRlc3QiLCBbIlgiXSwgWyJZIl0sIGRvbWFpbj0iY3VzdG9tIikKLS0gICAgICAg IGdyYXBoID0gaGVscGVyLm1ha2VfZ3JhcGgoW25vZGVdLCAibHIiLCBbWF0sIFtZXSwgW0NdKQot LSAgICAgICAgbW9kZWxfZGVmID0gaGVscGVyLm1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgZ3Jh cGgsIGZ1bmN0aW9ucz1bZmN0XSwgb3BzZXRfaW1wb3J0cz1vcHNldF9pbXBvcnRzCi0tICAgICAg ICApCi0tCi0tICAgICAgICB4ID0gbnAuYXJyYXkoWzEsIDIsIDQsIDUsIDUsIDRdKS5hc3R5cGUo bnAuZmxvYXQzMikucmVzaGFwZSgoMywgMikpCi0tICAgICAgICBvaW5mMSA9IFJlZmVyZW5jZUV2 YWx1YXRvcihtb2RlbF9kZWYpCi0tICAgICAgICB5MSA9IG9pbmYxLnJ1bihOb25lLCB7IlgiOiB4 fSlbMF0gICMgdHlwZTogaWdub3JlW2luZGV4XQotLSAgICAgICAgcmVwbCA9IHJlcGxhY2VfaW5p dGlhbGl6ZXJfYnlfY29uc3RhbnRfb2Zfc2hhcGUobW9kZWxfZGVmLCB1c2VfcmFuZ2U9VHJ1ZSkK LS0gICAgICAgIG5vZGVfdHlwZXMgPSB7bi5vcF90eXBlIGZvciBuIGluIHJlcGwuZnVuY3Rpb25z WzBdLm5vZGV9Ci0tICAgICAgICBzZWxmLmFzc2VydEluKCJSYW5nZSIsIG5vZGVfdHlwZXMpCi0t ICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJDb25zdGFudE9mU2hhcGUiLCBub2RlX3R5cGVzKQot LSAgICAgICAgb2luZjIgPSBSZWZlcmVuY2VFdmFsdWF0b3IocmVwbCkKLS0gICAgICAgIHkyID0g b2luZjIucnVuKE5vbmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25vcmVbaW5kZXhdCi0tICAg ICAgICBhc3NlcnRfYWxsY2xvc2UoeTEuc2hhcGUsIHkyLnNoYXBlKQotLQotICAgICBkZWYgdGVz dF9yZXBsYWNlX2NvbnN0YW50X2dyYXBoKHNlbGYpOgotICAgICAgICAgdmFsdWUgPSBucC5hcnJh eShbMF0sIGR0eXBlPW5wLmZsb2F0MzIpCi0gICAgICAgICB6ZXJvID0gbnVtcHlfaGVscGVyLmZy b21fYXJyYXkodmFsdWUsIG5hbWU9Inplcm8iKQotQEAgLTI3NCw1NCArMjA1LDYgQEAgY2xhc3Mg VGVzdFRvb2xzRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIHkxWzpdID0g MC41Ci0gICAgICAgICBhc3NlcnRfYWxsY2xvc2UoeTEsIHkyKQotIAotLSAgICBkZWYgdGVzdF9y ZXBsYWNlX3JhbmdlX2dyYXBoKHNlbGYpOgotLSAgICAgICAgdmFsdWUgPSBucC5hcnJheShbMF0s IGR0eXBlPW5wLmZsb2F0MzIpCi0tICAgICAgICB6ZXJvID0gbnVtcHlfaGVscGVyLmZyb21fYXJy YXkodmFsdWUsIG5hbWU9Inplcm8iKQotLQotLSAgICAgICAgWCA9IGhlbHBlci5tYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJYIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmVdKQot LSAgICAgICAgWSA9IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgb25ueC5UZW5z b3JQcm90by5GTE9BVCwgW05vbmVdKQotLQotLSAgICAgICAgcnN1bSA9IGhlbHBlci5tYWtlX25v ZGUoIlJlZHVjZVN1bSIsIFsiWCJdLCBbInJzdW0iXSkKLS0gICAgICAgIGNvbmQgPSBoZWxwZXIu bWFrZV9ub2RlKCJHcmVhdGVyIiwgWyJyc3VtIiwgInplcm8iXSwgWyJjb25kIl0pCi0tCi0tICAg ICAgICB0aGVuX291dCA9IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAgICAg ICAgICJ0aGVuX291dCIsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUKLS0gICAgICAgICkK LS0gICAgICAgIHRoZW5fY3N0ID0gbnVtcHlfaGVscGVyLmZyb21fYXJyYXkobnAuYXJyYXkoWzFd ICogMTI5KS5hc3R5cGUobnAuZmxvYXQzMikpCi0tCi0tICAgICAgICB0aGVuX2NvbnN0X25vZGUg PSBoZWxwZXIubWFrZV9ub2RlKAotLSAgICAgICAgICAgICJDb25zdGFudCIsIGlucHV0cz1bXSwg b3V0cHV0cz1bInRoZW5fb3V0Il0sIHZhbHVlPXRoZW5fY3N0LCBuYW1lPSJjc3QxIgotLSAgICAg ICAgKQotLSAgICAgICAgdGhlbl9ib2R5ID0gaGVscGVyLm1ha2VfZ3JhcGgoW3RoZW5fY29uc3Rf bm9kZV0sICJ0aGVuX2JvZHkiLCBbXSwgW3RoZW5fb3V0XSkKLS0KLS0gICAgICAgIGVsc2Vfb3V0 ID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgImVsc2Vfb3V0 Iiwgb25ueC5UZW5zb3JQcm90by5GTE9BVCwgTm9uZQotLSAgICAgICAgKQotLSAgICAgICAgZWxz ZV9jc3QgPSBudW1weV9oZWxwZXIuZnJvbV9hcnJheShucC5hcnJheShbLTFdICogMTI5KS5hc3R5 cGUobnAuZmxvYXQzMikpCi0tICAgICAgICBlbHNlX2NvbnN0X25vZGUgPSBoZWxwZXIubWFrZV9u b2RlKAotLSAgICAgICAgICAgICJDb25zdGFudCIsIGlucHV0cz1bXSwgb3V0cHV0cz1bImVsc2Vf b3V0Il0sIHZhbHVlPWVsc2VfY3N0LCBuYW1lPSJjc3QyIgotLSAgICAgICAgKQotLSAgICAgICAg ZWxzZV9ib2R5ID0gaGVscGVyLm1ha2VfZ3JhcGgoW2Vsc2VfY29uc3Rfbm9kZV0sICJlbHNlX2Jv ZHkiLCBbXSwgW2Vsc2Vfb3V0XSkKLS0KLS0gICAgICAgIGlmX25vZGUgPSBvbm54LmhlbHBlci5t YWtlX25vZGUoCi0tICAgICAgICAgICAgIklmIiwgWyJjb25kIl0sIFsiWSJdLCB0aGVuX2JyYW5j aD10aGVuX2JvZHksIGVsc2VfYnJhbmNoPWVsc2VfYm9keQotLSAgICAgICAgKQotLSAgICAgICAg Z3JhcGggPSBoZWxwZXIubWFrZV9ncmFwaChbcnN1bSwgY29uZCwgaWZfbm9kZV0sICJpZiIsIFtY XSwgW1ldLCBbemVyb10pCi0tICAgICAgICBvbm54X21vZGVsID0gaGVscGVyLm1ha2VfbW9kZWwo Ci0tICAgICAgICAgICAgZ3JhcGgsIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo IiIsIG9ubnhfb3BzZXRfdmVyc2lvbigpKV0KLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNz ZXJ0Tm90SW4oIkNvbnN0YW50T2ZTaGFwZSIsIHN0cihvbm54X21vZGVsKSkKLS0KLS0gICAgICAg IHggPSBucC5vbmVzKCgzLCAyKSwgZHR5cGU9bnAuZmxvYXQzMikKLS0gICAgICAgIG9pbmYxID0g UmVmZXJlbmNlRXZhbHVhdG9yKG9ubnhfbW9kZWwpCi0tICAgICAgICB5MSA9IG9pbmYxLnJ1bihO b25lLCB7IlgiOiB4fSlbMF0gICMgdHlwZTogaWdub3JlW2luZGV4XQotLSAgICAgICAgcmVwbCA9 IHJlcGxhY2VfaW5pdGlhbGl6ZXJfYnlfY29uc3RhbnRfb2Zfc2hhcGUob25ueF9tb2RlbCwgdXNl X3JhbmdlPVRydWUpCi0tICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJDb25zdGFudE9mU2hhcGUi LCBzdHIocmVwbCkpCi0tICAgICAgICBzZWxmLmFzc2VydEluKCJSYW5nZSIsIHN0cihyZXBsKSkK LS0gICAgICAgIG9pbmYyID0gUmVmZXJlbmNlRXZhbHVhdG9yKHJlcGwpCi0tICAgICAgICB5MiA9 IG9pbmYyLnJ1bihOb25lLCB7IlgiOiB4fSlbMF0gICMgdHlwZTogaWdub3JlW2luZGV4XQotLSAg ICAgICAgYXNzZXJ0X2FsbGNsb3NlKHkxLnNoYXBlLCB5Mi5zaGFwZSkKLS0KLSAKLSBpZiBfX25h bWVfXyA9PSAiX19tYWluX18iOgotICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQotZGlm ZiAtLWdpdCBhL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRl X3Rlc3QucHkgYi9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFk ZV90ZXN0LnB5Ci1pbmRleCBhOTRhZWExYTkuLmY2MzlkNDRmOCAxMDA2NDQKLS0tLSBhL29ubngv dGVzdC92ZXJzaW9uX2NvbnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkKLSsrKyBi L29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkK LUBAIC03LDcgKzcsNiBAQCBpbXBvcnQgdW5pdHRlc3QKLSAKLSBpbXBvcnQgYXV0b21hdGljX2Nv bnZlcnNpb25fdGVzdF9iYXNlCi0gaW1wb3J0IG51bXB5IGFzIG5wCi0taW1wb3J0IHBhcmFtZXRl cml6ZWQKLSAKLSBpbXBvcnQgb25ueAotIGZyb20gb25ueCBpbXBvcnQgaGVscGVyCi1AQCAtMjIs MzUgKzIxLDYgQEAgY2xhc3MgVGVzdEF1dG9tYXRpY0Rvd25ncmFkZShhdXRvbWF0aWNfY29udmVy c2lvbl90ZXN0X2Jhc2UuVGVzdEF1dG9tYXRpY0NvbnZlcnMKLSAgICAgZGVmIF90ZXN0X29wX2Rv d25ncmFkZShzZWxmLCBvcDogc3RyLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgc2VsZi5f dGVzdF9vcF9jb252ZXJzaW9uKG9wLCAqYXJncywgKiprd2FyZ3MsIGlzX3VwZ3JhZGU9RmFsc2Up Ci0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAg WwotLSAgICAgICAgICAgICJSZWR1Y2VMMSIsCi0tICAgICAgICAgICAgIlJlZHVjZUwyIiwKLS0g ICAgICAgICAgICAiUmVkdWNlTG9nU3VtIiwKLS0gICAgICAgICAgICAiUmVkdWNlTG9nU3VtRXhw IiwKLS0gICAgICAgICAgICAiUmVkdWNlTWVhbiIsCi0tICAgICAgICAgICAgIlJlZHVjZU1heCIs Ci0tICAgICAgICAgICAgIlJlZHVjZU1pbiIsCi0tICAgICAgICAgICAgIlJlZHVjZVByb2QiLAot LSAgICAgICAgICAgICJSZWR1Y2VTdW0iLAotLSAgICAgICAgICAgICJSZWR1Y2VTdW1TcXVhcmUi LAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3JlZHVjZV9vcHMoc2VsZiwgb3Ap IC0+IE5vbmU6Ci0tICAgICAgICAjIFRPRE86IG5lZWQgdG8gYWRkIHRlc3QgY2FzZXMgZm9yIG1p c3NpbmcgYXhlcyBpbnB1dCB3aGljaCBkZXBlbmRzIG9uIHRoaXMgcHI6Ci0tICAgICAgICAjIGh0 dHBzOi8vZ2l0aHViLmNvbS9vbm54L29ubngvcHVsbC81NjEzCi0tICAgICAgICBheGVzID0gaGVs cGVyLm1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICJiIiwgb25ueC5UZW5zb3JQcm90by5JTlQ2 NCwgZGltcz1bM10sIHZhbHM9bnAuYXJyYXkoWzAsIDEsIDJdKQotLSAgICAgICAgKQotLSAgICAg ICAgc2VsZi5fdGVzdF9vcF9kb3duZ3JhZGUoCi0tICAgICAgICAgICAgb3AsCi0tICAgICAgICAg ICAgZnJvbV9vcHNldD0xMywKLS0gICAgICAgICAgICBpbnB1dF9zaGFwZXM9W1szLCA0LCA1XSwg WzNdXSwKLS0gICAgICAgICAgICBvdXRwdXRfc2hhcGVzPVtbMSwgMSwgMV1dLAotLSAgICAgICAg ICAgIGlucHV0X3R5cGVzPVtvbm54LlRlbnNvclByb3RvLkZMT0FULCBvbm54LlRlbnNvclByb3Rv LklOVDY0XSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bYXhlc10sCi0tICAgICAgICApCi0t Ci0gICAgIGRlZiB0ZXN0X2RmdDIwX25vX2F4aXMoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHNl bGYuX3Rlc3RfbW9kZWxfY29udmVyc2lvbigKLSAgICAgICAgICAgICB0b19vcHNldD0xOSwKLWRp ZmYgLS1naXQgYS9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXJfdGVzdC5weSBiL29ubngvdGVz dC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5Ci1pbmRleCAxNzkwZTU5OTcuLjRhNGMyNzc2NiAx MDA2NDQKLS0tLSBhL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5Ci0rKysgYi9v bm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXJfdGVzdC5weQotQEAgLTgsNyArOCw2IEBAIGltcG9y dCBzdHJ1Y3QKLSBpbXBvcnQgdW5pdHRlc3QKLSAKLSBpbXBvcnQgbnVtcHkgYXMgbnAKLS1pbXBv cnQgcGFyYW1ldGVyaXplZAotIAotIGltcG9ydCBvbm54LnZlcnNpb25fY29udmVydGVyCi0gZnJv bSBvbm54IGltcG9ydCAoCi1AQCAtMjAwNiwxNjkgKzIwMDUsNiBAQCBjbGFzcyBUZXN0VmVyc2lv bkNvbnZlcnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBhc3NlcnQgY29udmVydGVk X21vZGVsLmdyYXBoLm5vZGVbM10ub3BfdHlwZSA9PSAiUmVzaGFwZSIKLSAgICAgICAgIGFzc2Vy dCBjb252ZXJ0ZWRfbW9kZWwub3BzZXRfaW1wb3J0WzBdLnZlcnNpb24gPT0gMTMKLSAKLS0gICAg QHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAg ICAgICAgKCJwZXJfdGVuc29yIiwgKDE2LCAzKSwgKDEsKSwgTm9uZSwgTm9uZSwgTm9uZSwgVGVu c29yUHJvdG8uSU5UOCwgVHJ1ZSksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAi cGVyX2F4aXNfbm9uZV9ibG9ja19zaGFwZSIsCi0tICAgICAgICAgICAgICAgICgxNiwgMyksCi0t ICAgICAgICAgICAgICAgICgxNiwpLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAg ICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBUZW5z b3JQcm90by5JTlQ4LAotLSAgICAgICAgICAgICAgICBUcnVlLAotLSAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfemVyb19ibG9ja19zaGFw ZSIsCi0tICAgICAgICAgICAgICAgICgxNiwgMyksCi0tICAgICAgICAgICAgICAgICgxNiwpLAot LSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAg ICBOb25lLAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ4LAotLSAgICAgICAgICAg ICAgICBUcnVlLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICAicGVyX3RlbnNvcl9wb3NpdGl2ZV9ibG9ja19zaGFwZSIsCi0tICAgICAgICAgICAgICAg ICgxNiwgMyksCi0tICAgICAgICAgICAgICAgICgxLCksCi0tICAgICAgICAgICAgICAgIDEsCi0t ICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAg ICAgIFRlbnNvclByb3RvLklOVDgsCi0tICAgICAgICAgICAgICAgIEZhbHNlLAotLSAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfcG9zaXRp dmVfYmxvY2tfc2hhcGUiLAotLSAgICAgICAgICAgICAgICAoMTYsIDMpLAotLSAgICAgICAgICAg ICAgICAoMTYsKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAgICAgMiwKLS0g ICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwK LS0gICAgICAgICAgICAgICAgRmFsc2UsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAo ImJsb2NrZWRfMmQiLCAoMTYsIDMpLCAoNCwgMyksIDAsIDQsIE5vbmUsIFRlbnNvclByb3RvLklO VDgsIEZhbHNlKSwKLS0gICAgICAgICAgICAoImJsb2NrZWRfM2QiLCAoNCwgMywgMzIpLCAoNCwg MywgOCksIDIsIDQsIE5vbmUsIFRlbnNvclByb3RvLklOVDgsIEZhbHNlKSwKLS0gICAgICAgICAg ICAoCi0tICAgICAgICAgICAgICAgICJwZXJfYXhpc19vdXRwdXRfZHR5cGUiLAotLSAgICAgICAg ICAgICAgICAoMTYsIDMpLAotLSAgICAgICAgICAgICAgICAoMTYsKSwKLS0gICAgICAgICAgICAg ICAgMSwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJv dG8uRkxPQVQ4RTRNM0ZOLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAg ICBGYWxzZSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAg ICAgInBlcl9heGlzX3Vuc3VwcG9ydGVkX3R5cGUiLAotLSAgICAgICAgICAgICAgICAoMTYsIDMp LAotLSAgICAgICAgICAgICAgICAoMTYsKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAg ICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAg VGVuc29yUHJvdG8uVUlOVDE2LAotLSAgICAgICAgICAgICAgICBGYWxzZSwKLS0gICAgICAgICAg ICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3F1YW50aXplXzIxXzIwKAot LSAgICAgICAgc2VsZiwKLS0gICAgICAgIF86IHN0ciwKLS0gICAgICAgIHhfc2hhcGU6IHR1cGxl W2ludCwgLi4uXSwKLS0gICAgICAgIHNjYWxlX3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCi0tICAg ICAgICBheGlzOiBpbnQsCi0tICAgICAgICBibG9ja19zaXplOiBpbnQsCi0tICAgICAgICBvdXRw dXRfZHR5cGU6IGludCB8IE5vbmUsCi0tICAgICAgICB6ZXJvX3BvaW50X2R0eXBlOiBpbnQgfCBO b25lLAotLSAgICAgICAgY29tcGF0aWJsZTogYm9vbCwKLS0gICAgKSAtPiBOb25lOgotLSAgICAg ICAgZGVmIHRlc3QoCi0tICAgICAgICAgICAgaW5wdXRfc2hhcGUsIHNjYWxlX3NoYXBlLCBheGlz LCBibG9ja19zaXplLCBvdXRwdXRfZHR5cGUsIHplcm9fcG9pbnRfZHR5cGUKLS0gICAgICAgICkg LT4gTm9uZToKLS0gICAgICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAgICAgaGVscGVy Lm1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJRdWFudGl6ZUxpbmVhciIsCi0tICAg ICAgICAgICAgICAgICAgICBbIlgiLCAiUyJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJZIl0s Ci0tICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCi0tICAgICAgICAgICAgICAgICAgICBi bG9ja19zaXplPWJsb2NrX3NpemUsCi0tICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZHR5cGU9 b3V0cHV0X2R0eXBlLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXQotLSAgICAg ICAgICAgIGlucHV0cyA9IFsKLS0gICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgaW5wdXRfc2hhcGUpLAotLSAgICAgICAg ICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiUyIsIFRlbnNvclByb3RvLkZM T0FULCBzY2FsZV9zaGFwZSksCi0tICAgICAgICAgICAgXQotLSAgICAgICAgICAgIGlmIHplcm9f cG9pbnRfZHR5cGU6Ci0tICAgICAgICAgICAgICAgIGlucHV0cy5hcHBlbmQoCi0tICAgICAgICAg ICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWlAiLCB6ZXJvX3BvaW50 X2R0eXBlLCBzY2FsZV9zaGFwZSkKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAg ICBub2Rlc1swXS5pbnB1dC5hcHBlbmQoIlpQIikKLS0gICAgICAgICAgICBvdXRwdXRfdHlwZV8g PSBvdXRwdXRfZHR5cGUgb3IgemVyb19wb2ludF9kdHlwZQotLSAgICAgICAgICAgIGdyYXBoID0g aGVscGVyLm1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIG5vZGVzLAotLSAgICAgICAgICAg ICAgICAidGVzdCIsCi0tICAgICAgICAgICAgICAgIGlucHV0cywKLS0gICAgICAgICAgICAgICAg W2hlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgb3V0cHV0X3R5cGVfLCBpbnB1dF9z aGFwZSldLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBfID0gc2VsZi5fY29udmVydGVk KGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAyMSksIDIwKQotLQotLSAgICAg ICAgY29udGV4dF9tYW5hZ2VyID0gKAotLSAgICAgICAgICAgIGNvbnRleHRsaWIubnVsbGNvbnRl eHQoKSBpZiBjb21wYXRpYmxlIGVsc2Ugc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKQot LSAgICAgICAgKQotLSAgICAgICAgd2l0aCBjb250ZXh0X21hbmFnZXI6ICAjIHR5cGU6IGlnbm9y ZVthdHRyLWRlZmluZWRdCi0tICAgICAgICAgICAgdGVzdCh4X3NoYXBlLCBzY2FsZV9zaGFwZSwg YXhpcywgYmxvY2tfc2l6ZSwgb3V0cHV0X2R0eXBlLCB6ZXJvX3BvaW50X2R0eXBlKQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAg ICAgICAgICAoInBlcl90ZW5zb3IiLCAoMTYsIDMpLCAoMSwpLCBOb25lLCBOb25lLCBUcnVlKSwK LS0gICAgICAgICAgICAoInBlcl9heGlzX25vbmVfYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMTYs KSwgMSwgTm9uZSwgVHJ1ZSksCi0tICAgICAgICAgICAgKCJwZXJfYXhpc196ZXJvX2Jsb2NrX3No YXBlIiwgKDE2LCAzKSwgKDE2LCksIDEsIDAsIFRydWUpLAotLSAgICAgICAgICAgICgicGVyX3Rl bnNvcl9wb3NpdGl2ZV9ibG9ja19zaGFwZSIsICgxNiwgMyksICgxLCksIDEsIDIsIEZhbHNlKSwK LS0gICAgICAgICAgICAoInBlcl9heGlzX3Bvc2l0aXZlX2Jsb2NrX3NoYXBlIiwgKDE2LCAzKSwg KDE2LCksIDEsIDIsIEZhbHNlKSwKLS0gICAgICAgICAgICAoImJsb2NrZWRfMmQiLCAoMTYsIDMp LCAoNCwgMyksIDAsIDQsIEZhbHNlKSwKLS0gICAgICAgICAgICAoImJsb2NrZWRfM2QiLCAoNCwg MywgMzIpLCAoNCwgMywgOCksIDIsIDQsIEZhbHNlKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAg ICBkZWYgdGVzdF9kZXF1YW50aXplXzIxXzIwKAotLSAgICAgICAgc2VsZiwKLS0gICAgICAgIF86 IHN0ciwKLS0gICAgICAgIHlfc2hhcGU6IHR1cGxlW2ludCwgLi4uXSwKLS0gICAgICAgIHNjYWxl X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCi0tICAgICAgICBheGlzOiBpbnQsCi0tICAgICAgICBi bG9ja19zaXplOiBpbnQsCi0tICAgICAgICBjb21wYXRpYmxlOiBib29sLAotLSAgICApIC0+IE5v bmU6Ci0tICAgICAgICBkZWYgdGVzdChpbnB1dF9zaGFwZSwgc2NhbGVfc2hhcGUsIGF4aXMsIGJs b2NrX3NpemUpIC0+IE5vbmU6Ci0tICAgICAgICAgICAgbm9kZXMgPSBbCi0tICAgICAgICAgICAg ICAgIGhlbHBlci5tYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiRGVxdWFudGl6ZUxp bmVhciIsCi0tICAgICAgICAgICAgICAgICAgICBbIlgiLCAiUyIsICJaUCJdLAotLSAgICAgICAg ICAgICAgICAgICAgWyJZIl0sCi0tICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCi0tICAg ICAgICAgICAgICAgICAgICBibG9ja19zaXplPWJsb2NrX3NpemUsCi0tICAgICAgICAgICAgICAg ICkKLS0gICAgICAgICAgICBdCi0tICAgICAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFw aCgKLS0gICAgICAgICAgICAgICAgbm9kZXMsCi0tICAgICAgICAgICAgICAgICJ0ZXN0IiwKLS0g ICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5JTlQ4LCBpbnB1dF9zaGFwZSksCi0tICAgICAg ICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiUyIsIFRlbnNvclBy b3RvLkZMT0FULCBzY2FsZV9zaGFwZSksCi0tICAgICAgICAgICAgICAgICAgICBoZWxwZXIubWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWlAiLCBUZW5zb3JQcm90by5JTlQ4LCBzY2FsZV9zaGFwZSks Ci0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFtoZWxwZXIubWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFwZSldLAotLSAg ICAgICAgICAgICkKLS0gICAgICAgICAgICBfID0gc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxw ZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAyMSksIDIwKQotLQotLSAgICAgICAgY29udGV4dF9t YW5hZ2VyID0gKAotLSAgICAgICAgICAgIGNvbnRleHRsaWIubnVsbGNvbnRleHQoKSBpZiBjb21w YXRpYmxlIGVsc2Ugc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKQotLSAgICAgICAgKQot LSAgICAgICAgd2l0aCBjb250ZXh0X21hbmFnZXI6ICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmlu ZWRdCi0tICAgICAgICAgICAgdGVzdCh5X3NoYXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tf c2l6ZSkKLS0KLSAKLSBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICB1bml0dGVzdC5t YWluKCkKLWRpZmYgLS1naXQgYS9yZXF1aXJlbWVudHMtZGV2LnR4dCBiL3JlcXVpcmVtZW50cy1k ZXYudHh0Ci1pbmRleCBlYTM4NzEyZDguLjE2NWIzZjdmNCAxMDA2NDQKLS0tLSBhL3JlcXVpcmVt ZW50cy1kZXYudHh0Ci0rKysgYi9yZXF1aXJlbWVudHMtZGV2LnR4dAotQEAgLTIsNyArMiw2IEBA IGJ1aWxkCi0ganVweXRlcgotIG5idmFsCi0gbnVtcHkKLS1wYXJhbWV0ZXJpemVkCi0gcHJvdG9i dWYKLSBweXRlc3QKLSBweXRlc3QtY292Ci1kaWZmIC0tZ2l0IGEvcmVxdWlyZW1lbnRzLXJlbGVh c2UudHh0IGIvcmVxdWlyZW1lbnRzLXJlbGVhc2UudHh0Ci1pbmRleCA5YTlkODUzNTEuLjBjMTll YmRiNSAxMDA2NDQKLS0tLSBhL3JlcXVpcmVtZW50cy1yZWxlYXNlLnR4dAotKysrIGIvcmVxdWly ZW1lbnRzLXJlbGVhc2UudHh0Ci1AQCAtMyw3ICszLDYgQEAgaXB5dGhvbgotIG5idmFsCi0gbnVt cHk9PTEuMjQuMzsgcHl0aG9uX3ZlcnNpb248IjMuOSIKLSBudW1weT09Mi4wLjA7IHB5dGhvbl92 ZXJzaW9uPj0iMy45IgotLXBhcmFtZXRlcml6ZWQKLSBwcm90b2J1Zj09NC4yMS4xMjsgcHl0aG9u X3ZlcnNpb248IjMuMTIiCi0gcHJvdG9idWY9PTQuMjUuMTsgcHl0aG9uX3ZlcnNpb24+PSIzLjEy IgotIHB5dGVzdAotZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50cy50eHQgYi9yZXF1aXJlbWVudHMu dHh0Ci1pbmRleCA0NmRkN2Y3ZmQuLjYyZGFjOGEzYiAxMDA2NDQKLS0tLSBhL3JlcXVpcmVtZW50 cy50eHQKLSsrKyBiL3JlcXVpcmVtZW50cy50eHQKLUBAIC0xLDMgKzEsMiBAQAotIG51bXB5Pj0x LjIwCi0gcHJvdG9idWYgPj0gMy4xNC4wLCA8IDQKLS1wYXJhbWV0ZXJpemVkID49IDAuOC4xLCA8 IDEKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS9jaGFuZ2Vsb2cgYi9jaGFuZ2Vsb2cKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzNWQ5NgotLS0gL2Rldi9udWxsCisr KyBiL2NoYW5nZWxvZwpAQCAtMCwwICsxLDEwOCBAQAorKiBUaHUgSnVuIDA0IDIwMjYgUHl0aG9u IE1haW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4gLSAxLjE3LjAtMTUKKy0gUmVidWlsdCBm b3IgUHl0aG9uIDMuMTUKKworKiBXZWQgRmViIDIxIDIwMjQgRGllZ28gSGVycmVyYSBDIDxkaGVy cmVyYUByZWRoYXQuY29tPi0gMS4yMS4wLTEKKy0gVXBkYXRlIHRvIDEuMjEuMAorCisqIFN1biBN YXkgMDQgMjAyNiBBdXR1bW4gTmFzaCA8YXV0dW1ubmFzaEBtaWNyb3NvZnQuY29tPiAtIDEuMTcu MC0xMworLSBSZXBsYWNlIGhhcmRjb2RlZCByZWRoYXQtbGludXgtYnVpbGQgd2l0aCAlJXtfdnBh dGhfYnVpbGRkaXJ9IHZpYSBlbnYgdmFyCisKKyogTW9uIEZlYiAxNiAyMDI2IERpZWdvIEhlcnJl cmEgPGRoZXJyZXJhQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTcuMC0xMgorLSBSZS1lbmFibGUg czM5MHgKKworKiBUdWUgRmViIDEwIDIwMjYgTWFyY2luIEp1c3praWV3aWN6IC0gMS4xNy4wLTEx CistIHNraXAgMyB0ZXN0cyBvbiByaXNjdjY0OiB0ZXN0X2Zsb2F0OF9lNG0zZm5fbmVnYXRpdmVf bmFuLAorICB0ZXN0X2Zsb2F0OF9lNW0yX25lZ2F0aXZlX25hbiwgdGVzdF9tYXhwb29sXzJkX3Vp bnQ4X2NwdQorCisqIEZyaSBKYW4gMTYgMjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8 cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTcuMC0xMAorLSBSZWJ1aWx0IGZvciBodHRw czovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0X01hc3NfUmVidWlsZAorCisqIFRo dSBKYW4gMTUgMjAyNiBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUBmZWRvcmFwcm9qZWN0Lm9yZz4g LSAxLjE3LjAtOQorLSBEaXNhYmxlIHRlc3RzIHRoYXQgZGVwZW5kIG9uIHB5dGhvbi1wYXJhbWV0 ZXJpemVkCistIENsZWFuIHVwIHBhdGNoZXMKKworKiBGcmkgU2VwIDE5IDIwMjUgUHl0aG9uIE1h aW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4gLSAxLjE3LjAtOAorLSBSZWJ1aWx0IGZvciBQ eXRob24gMy4xNC4wcmMzIGJ5dGVjb2RlCisKKyogRnJpIEF1ZyAxNSAyMDI1IFB5dGhvbiBNYWlu dCA8cHl0aG9uLW1haW50QHJlZGhhdC5jb20+IC0gMS4xNy4wLTcKKy0gUmVidWlsdCBmb3IgUHl0 aG9uIDMuMTQuMHJjMiBieXRlY29kZQorCisqIFRodSBKdWwgMjQgMjAyNSBGZWRvcmEgUmVsZWFz ZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTcuMC02CistIFJl YnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDNfTWFzc19S ZWJ1aWxkCisKKyogVHVlIEp1biAxNyAyMDI1IFB5dGhvbiBNYWludCA8cHl0aG9uLW1haW50QHJl ZGhhdC5jb20+IC0gMS4xNy4wLTUKKy0gUmVidWlsdCBmb3IgUHl0aG9uIDMuMTQKKworKiBGcmkg TWFyIDI4IDIwMjUgTWlybyBIcm9uxI1vayA8bWhyb25jb2tAcmVkaGF0LmNvbT4gLSAxLjE3LjAt NAorLSBEb24ndCBuZWVkbGVzc2x5IHRyeSB0byBnZW5lcmF0ZSB0ZXN0IHJlcXVpcmVtZW50cyBi eSB0b3gKKy0gRml4ZXM6IHJoYnojMjM1NDA4NworCisqIFNhdCBKYW4gMTggMjAyNSBCZW5qYW1p biBBLiBCZWFzbGV5IDxjb2RlQG11c2ljaW5teWJyYWluLm5ldD4gLSAxLjE3LjAtMworLSBEcm9w IGk2ODYgc3VwcG9ydCAobGVhZiBwYWNrYWdlIG9uIHRoYXQgYXJjaGl0ZWN0dXJlKQorCisqIEZy aSBKYW4gMTcgMjAyNSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXBy b2plY3Qub3JnPiAtIDEuMTcuMC0yCistIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9GZWRvcmFfNDJfTWFzc19SZWJ1aWxkCisKKyogRnJpIE9jdCAyNSAyMDI0IFNh bmRybyA8ZGV2ZWxAcGVuZ3VpbnBlZS5ubD4gLSAxLjE3LjAtMQorLSBVcGRhdGUgdG8gMS4xNy4w IChSSEJaIzIyMzUwMTEpCistIEFkZCBzdXBwb3J0IGZvciBOdW1QeSAyLngKKworKiBUaHUgSnVs IDE4IDIwMjQgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0 Lm9yZz4gLSAxLjE1LjAtNAorLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3Jn L3dpa2kvRmVkb3JhXzQxX01hc3NfUmVidWlsZAorCisqIFR1ZSBKdWwgMDIgMjAyNCBBbGVqYW5k cm8gQWx2YXJleiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+IC0gMS4xNS4wLTMK Ky0gQmFja3BvcnQgb2YgZml4IGZvciBDVkUtMjAyNC01MTg3CisKKyogU2F0IEp1biAwOCAyMDI0 IFB5dGhvbiBNYWludCA8cHl0aG9uLW1haW50QHJlZGhhdC5jb20+IC0gMS4xNS4wLTIKKy0gUmVi dWlsdCBmb3IgUHl0aG9uIDMuMTMKKworKiBUaHUgQXByIDExIDIwMjQgRGllZ28gSGVycmVyYSBD IDxkaGVycmVyYUByZWRoYXQuY29tPiAtIDEuMTUuMC0xCistIFJlbGVhc2UgMS4xNS4wCisKKyog U2F0IEZlYiAyNCAyMDI0IEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9u QGdtYWlsLmNvbT4gLSAxLjE0LjEtMgorLSBCYWNrcG9ydCBvZiBmaXhlcyBmb3IgQ1ZFLTIwMjQt MjczMTggYW5kIENWRS0yMDI0LTI3MzE5CisKKyogV2VkIEZlYiAyMSAyMDI0IERpZWdvIEhlcnJl cmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4tIDEuMTQuMS0xCistIFJlbGVhc2UgMS4xNC4xCisK KyogVHVlIEphbiAyMyAyMDI0IEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXls bG9uQGdtYWlsLmNvbT4gLSAxLjE0LjAtMTAKKy0gQnVpbGQgdXNpbmcgcHJvdG9idWYtZGV2ZWwK KworKiBTdW4gSmFuIDIxIDIwMjQgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0Bm ZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE0LjAtOQorLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9y YXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQwX01hc3NfUmVidWlsZAorCisqIFdlZCBTZXAgMjAg MjAyMyBEaWVnbyBIZXJyZXJhIEMgPGRoZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xNC4wLTgKKy0g Rml4IG9ubnhydW50aW1lIHBhdGNoCisKKyogV2VkIEF1ZyAzMCAyMDIzIERpZWdvIEhlcnJlcmEg QyA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4gLSAxLjE0LjAtNworLSBBZGQgZml4IHRvIHVzZSB3aXRo IG9ubnhydW50aW1lCisKKyogU2F0IEF1ZyA1IDIwMjMgRGllZ28gSGVycmVyYSBDIDxkaGVycmVy YUByZWRoYXQuY29tPiAtIDEuMTQuMC02CistIExvd2VyIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9y IHBhcmFtZXRlcml6ZWQuCistIExvd2VyIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIHByb3RvYnVm LgorCisqIFNhdCBBdWcgNSAyMDIzIERpZWdvIEhlcnJlcmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNv bT4gLSAxLjE0LjAtNQorLSBCdWlsZCBweXRob24gbGlicyB1c2luZyB0aGUgcHJvcGVyIG1hY3Jv cy4KKworKiBUaHUgSnVsIDIwIDIwMjMgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVu Z0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE0LjAtNAorLSBSZWJ1aWx0IGZvciBodHRwczovL2Zl ZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzM5X01hc3NfUmVidWlsZAorCisqIE1vbiBKdW4g MTkgMjAyMyBQeXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMTQuMC0z CistIFJlYnVpbHQgZm9yIFB5dGhvbiAzLjEyCisKKyogV2VkIEp1biAwNyAyMDIzIEFsZWphbmRy byBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4gLSAxLjE0LjAtMgor LSBQYXRjaCBwcm90b2J1ZiBoZWFkZXJzIHdpdGggT05OWF9BUEkKKy0gU2hpcCAucHJvdG8gZmls ZXMKKworKiBTYXQgSnVuIDAzIDIwMjMgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFy ZXpheWxsb25AZ21haWwuY29tPiAtIDEuMTQuMC0xCistIFJlbGVhc2UgMS4xNC4wCisKKyogVGh1 IE1heSAxOCAyMDIzIERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xMy4w LTMKKy0gRml4IExpY2Vuc2UgZW50cnkgdG8gY29tcGx5IHdpdGggU1BEWAorLSBBZGQgb25ueC1s aWJzIGFzIGFuIGV4cGxpY2l0IGRlcGVuZGVuY3kgdG8gdGhlIHB5dGhvbiBwYWNrYWdlCisKKyog U2F0IERlYyAxNyAyMDIyIEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YWFsdmFyZXpAZmVkb3Jh cHJvamVjdC5vcmc+IC0gMS4xMy4wLTIKKy0gUmVsZWFzZSAxLjEzLjAKKworKiBXZWQgTm92IDIz IDIwMjIgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhYWx2YXJlekBmZWRvcmFwcm9qZWN0Lm9y Zz4gLSAxLjEyLjAtMQorLSBSZWxlYXNlIDEuMTIuMAoKZGlmZiAtLWdpdCBhL29ubnguc3BlYyBi L29ubnguc3BlYwppbmRleCBmMDhiMDUxLi5lZjBlOGE1IDEwMDY0NAotLS0gYS9vbm54LnNwZWMK KysrIGIvb25ueC5zcGVjCkBAIC0xLDYgKzEsOCBAQAorJWdsb2JhbCBzb192ZXJzaW9uIDEKKwog TmFtZTogICAgICAgb25ueAotVmVyc2lvbjogICAgMS4xNy4wCi1SZWxlYXNlOiAgICAxNSV7P2Rp c3R9CitWZXJzaW9uOiAgICAxLjIxLjAKK1JlbGVhc2U6ICAgICVhdXRvcmVsZWFzZQogU3VtbWFy eTogICAgT3BlbiBzdGFuZGFyZCBmb3IgbWFjaGluZSBsZWFybmluZyBpbnRlcm9wZXJhYmlsaXR5 CiBMaWNlbnNlOiAgICBBcGFjaGUtMi4wCiAKQEAgLTgsMTQgKzEwLDggQEAgVVJMOiAgICAgICAg aHR0cHM6Ly9naXRodWIuY29tL29ubngvb25ueAogU291cmNlMDogICAgaHR0cHM6Ly9naXRodWIu Y29tL29ubngvb25ueC9hcmNoaXZlL3Yle3ZlcnNpb259LyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIu Z3oKICMgQnVpbGQgc2hhcmVkIGxpYnJhcmllcyBhbmQgZml4IGluc3RhbGwgbG9jYXRpb24gCiBQ YXRjaDogICAgIDAwMDAtQnVpbGQtc2hhcmVkLWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9j YXRpb24ucGF0Y2gKLSMgVXNlIHN5c3RlbSBwcm90b2J1ZiBhbmQgcmVxdWlyZSBwYXJhbWV0ZXJp emVkCi1QYXRjaDogICAgIDAwMDEtVXNlLXN5c3RlbS1wcm90b2J1Zi1hbmQtcmVxdWlyZS1wYXJh bWV0ZXJpemVkLnBhdGNoCi0jIExldCBweXByb2plY3Rfd2hlZWwgdXNlIGJpbmFyaWVzIGZyb20g Y21ha2VfYnVpbGQKLVBhdGNoOiAgICAgMDAwMi1MZXQtcHlwcm9qZWN0X3doZWVsLXVzZS1iaW5h cmllcy1mcm9tLWNtYWtlX2J1aWxkLnBhdGNoCi0jIEFkZCBmaXhlcyBmb3IgdXNlIHdpdGggb25u eHJ1bnRpbWUKLVBhdGNoOiAgICAgMDAwMy1BZGQtZml4ZXMtZm9yLXVzZS13aXRoLW9ubnhydW50 aW1lLnBhdGNoCi0jIEFkZCBmaXhlcyBmb3IgdXNlIHdpdGggb25ueHJ1bnRpbWUKLVBhdGNoOiAg ICAgMDAwNC1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaAorIyBS ZW1vdmUgb2Jzb2xldGVkIHRlc3RpbmcgZGVwZW5kZW5jeQorUGF0Y2g6ICAgICAwMDAyLVJlbW92 ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoCiAKICVpZiAle3VuZGVmaW5l ZCBmYzQwfSAmJiAle3VuZGVmaW5lZCBmYzQxfQogIyBodHRwczovL2ZlZG9yYXByb2plY3Qub3Jn L3dpa2kvQ2hhbmdlcy9FbmNvdXJhZ2VJNjg2TGVhZlJlbW92YWwKQEAgLTMyLDcgKzI4LDkgQEAg QnVpbGRSZXF1aXJlczogIHB5dGhvbjMtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICBweXRob24zLXBp cAogQnVpbGRSZXF1aXJlczogIHB5dGhvbjMtcHliaW5kMTEKIEJ1aWxkUmVxdWlyZXM6ICBweXRo b24zLXB5dGVzdAotQnVpbGRSZXF1aXJlczogIHByb3RvYnVmMy1kZXZlbAorQnVpbGRSZXF1aXJl czogIHB5dGhvbjMtbmFub2JpbmQKK0J1aWxkUmVxdWlyZXM6ICBweXRob24zLW1sLWR0eXBlcyAK K0J1aWxkUmVxdWlyZXM6ICBwcm90b2J1Zi1kZXZlbAogCiAlZ2xvYmFsIF9kZXNjcmlwdGlvbiAl e2V4cGFuZDoKICV7bmFtZX0gcHJvdmlkZXMgYW4gb3BlbiBzb3VyY2UgZm9ybWF0IGZvciBBSSBt b2RlbHMsIGJvdGggZGVlcCBsZWFybmluZyBhbmQKQEAgLTYxLDE1ICs1OSw2IEBAIFJlcXVpcmVz OiAgICV7bmFtZX0tbGlicyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogJXByZXAKICVhdXRvc2V0 dXAgLXAxIC1uIG9ubngtJXt2ZXJzaW9ufQogCi0jIFVzZSBzeXN0ZW0gcHJvdG9idWYKLXNlZCAt ciAtaSAncy9wcm90b2J1Zj49My4yMC4yL3Byb3RvYnVmPj0zLjE0LjAvJyBweXByb2plY3QudG9t bAotCi0jIERyb3AgbmJ2YWwgb3B0aW9ucyBmcm9tIHB5dGVzdC4gUGx1Z2luIGlzIG5vdCBhdmFp bGFibGUgaW4gRmVkb3JhLgotc2VkIC1yIFwKLSAgICAtZSAncy8tLW5idmFsIC8vJyBcCi0gICAg LWUgJ3MvLS1uYnZhbC1jdXJyZW50LWVudiAvLycgXAotICAgIC1pIHB5cHJvamVjdC50b21sCi0K ICVnZW5lcmF0ZV9idWlsZHJlcXVpcmVzCiAlcHlwcm9qZWN0X2J1aWxkcmVxdWlyZXMgcmVxdWly ZW1lbnRzLXJlZmVyZW5jZS50eHQKIApAQCAtNzgsMTMgKzY3LDEzIEBAIGV4cG9ydCBWUEFUSF9C VUlMRERJUj0le192cGF0aF9idWlsZGRpcn0KICVjbWFrZSBcCiAgICAgLURPTk5YX1VTRV9MSVRF X1BST1RPPU9GRiBcCiAgICAgLURPTk5YX1VTRV9QUk9UT0JVRl9TSEFSRURfTElCUz1PTiBcCi0g ICAgLURCVUlMRF9PTk5YX1BZVEhPTj1PTiBcCi0gICAgLURQWVRIT05fRVhFQ1VUQUJMRT0le3B5 dGhvbjN9IFwKKyAgICAtRE9OTlhfQlVJTERfUFlUSE9OPU9OIFwKKyAgICAtRFB5dGhvbl9FWEVD VVRBQkxFPXB5dGhvbjMuMTQgXAogICAgIC1EUFlfRVhUX1NVRkZJWD0le3B5dGhvbjNfZXh0X3N1 ZmZpeH0gXAogICAgIC1EUFlfU0lURUFSQ0g9JXtweXRob24zX3NpdGVhcmNofSBcCi0gICAgLURD TUFLRV9TS0lQX1JQQVRIOkJPT0w9T04KLSMgR2VuZXJhdGUgcHJvdG9idWYgaGVhZGVyIGFuZCBz b3VyY2UgZmlsZXMKLSVjbWFrZV9idWlsZCAtLSBnZW5fb25ueF9wcm90bworICAgIC1EQ01BS0Vf U0tJUF9SUEFUSDpCT09MPU9OIFwKKyAgICAtRE9OTlhfRElTQUJMRV9TVEFUSUNfUkVHSVNUUkFU SU9OPU9OCisKICMgQnVpbGQgCiAlY21ha2VfYnVpbGQKICMgQnVpbGQgcHl0aG9uIGxpYnMKQEAg LTExNiw4ICsxMDUsOCBAQCBleHBvcnQgUFlURVNUX0FERE9QVFM9Ii1rICdub3QgdGVzdF9tYWtl X3RlbnNvcl9yYXcnIgogJWZpbGVzIGxpYnMKICVsaWNlbnNlIExJQ0VOU0UKICVkb2MgUkVBRE1F Lm1kCi0le19saWJkaXJ9L2xpYm9ubnguc28uJXt2ZXJzaW9ufQotJXtfbGliZGlyfS9saWJvbm54 X3Byb3RvLnNvLiV7dmVyc2lvbn0KKyV7X2xpYmRpcn0vbGlib25ueC5zby4le3NvX3ZlcnNpb259 eywuKn0KKyV7X2xpYmRpcn0vbGlib25ueF9wcm90by5zby4le3NvX3ZlcnNpb259eywuKn0KIAog JWZpbGVzIGRldmVsCiAle19saWJkaXJ9L2xpYm9ubnguc28KQEAgLTEzMSwxMTEgKzEyMCw0IEBA IGV4cG9ydCBQWVRFU1RfQURET1BUUz0iLWsgJ25vdCB0ZXN0X21ha2VfdGVuc29yX3JhdyciCiAl e19iaW5kaXJ9L2NoZWNrLW5vZGUKIAogJWNoYW5nZWxvZwotKiBUaHUgSnVuIDA0IDIwMjYgUHl0 aG9uIE1haW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4gLSAxLjE3LjAtMTUKLS0gUmVidWls dCBmb3IgUHl0aG9uIDMuMTUKLQotKiBXZWQgTWF5IDEzIDIwMjYgTWlyb3NsYXYgU3VjaHkgPG1z dWNoeUByZWRoYXQuY29tPiAtIDEuMTcuMC0xNAotLSBVc2UgcHJvdG9idWYzIGluc3RlYWQgb2Yg cHJvdG9idWYKLQotKiBTdW4gTWF5IDA0IDIwMjYgQXV0dW1uIE5hc2ggPGF1dHVtbm5hc2hAbWlj cm9zb2Z0LmNvbT4gLSAxLjE3LjAtMTMKLS0gUmVwbGFjZSBoYXJkY29kZWQgcmVkaGF0LWxpbnV4 LWJ1aWxkIHdpdGggJSV7X3ZwYXRoX2J1aWxkZGlyfSB2aWEgZW52IHZhcgotCi0qIE1vbiBGZWIg MTYgMjAyNiBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUBmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE3 LjAtMTIKLS0gUmUtZW5hYmxlIHMzOTB4Ci0KLSogVHVlIEZlYiAxMCAyMDI2IE1hcmNpbiBKdXN6 a2lld2ljeiAtIDEuMTcuMC0xMQotLSBza2lwIDMgdGVzdHMgb24gcmlzY3Y2NDogdGVzdF9mbG9h dDhfZTRtM2ZuX25lZ2F0aXZlX25hbiwKLSAgdGVzdF9mbG9hdDhfZTVtMl9uZWdhdGl2ZV9uYW4s IHRlc3RfbWF4cG9vbF8yZF91aW50OF9jcHUKLQotKiBGcmkgSmFuIDE2IDIwMjYgRmVkb3JhIFJl bGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE3LjAtMTAK LS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80NF9N YXNzX1JlYnVpbGQKLQotKiBUaHUgSmFuIDE1IDIwMjYgRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFA ZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xNy4wLTkKLS0gRGlzYWJsZSB0ZXN0cyB0aGF0IGRlcGVu ZCBvbiBweXRob24tcGFyYW1ldGVyaXplZAotLSBDbGVhbiB1cCBwYXRjaGVzCi0KLSogRnJpIFNl cCAxOSAyMDI1IFB5dGhvbiBNYWludCA8cHl0aG9uLW1haW50QHJlZGhhdC5jb20+IC0gMS4xNy4w LTgKLS0gUmVidWlsdCBmb3IgUHl0aG9uIDMuMTQuMHJjMyBieXRlY29kZQotCi0qIEZyaSBBdWcg MTUgMjAyNSBQeXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMTcuMC03 Ci0tIFJlYnVpbHQgZm9yIFB5dGhvbiAzLjE0LjByYzIgYnl0ZWNvZGUKLQotKiBUaHUgSnVsIDI0 IDIwMjUgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9y Zz4gLSAxLjE3LjAtNgotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dp a2kvRmVkb3JhXzQzX01hc3NfUmVidWlsZAotCi0qIFR1ZSBKdW4gMTcgMjAyNSBQeXRob24gTWFp bnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMTcuMC01Ci0tIFJlYnVpbHQgZm9yIFB5 dGhvbiAzLjE0Ci0KLSogRnJpIE1hciAyOCAyMDI1IE1pcm8gSHJvbsSNb2sgPG1ocm9uY29rQHJl ZGhhdC5jb20+IC0gMS4xNy4wLTQKLS0gRG9uJ3QgbmVlZGxlc3NseSB0cnkgdG8gZ2VuZXJhdGUg dGVzdCByZXF1aXJlbWVudHMgYnkgdG94Ci0tIEZpeGVzOiByaGJ6IzIzNTQwODcKLQotKiBTYXQg SmFuIDE4IDIwMjUgQmVuamFtaW4gQS4gQmVhc2xleSA8Y29kZUBtdXNpY2lubXlicmFpbi5uZXQ+ IC0gMS4xNy4wLTMKLS0gRHJvcCBpNjg2IHN1cHBvcnQgKGxlYWYgcGFja2FnZSBvbiB0aGF0IGFy Y2hpdGVjdHVyZSkKLQotKiBGcmkgSmFuIDE3IDIwMjUgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJp bmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE3LjAtMgotLSBSZWJ1aWx0IGZvciBo dHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQyX01hc3NfUmVidWlsZAotCi0q IEZyaSBPY3QgMjUgMjAyNCBTYW5kcm8gPGRldmVsQHBlbmd1aW5wZWUubmw+IC0gMS4xNy4wLTEK LS0gVXBkYXRlIHRvIDEuMTcuMCAoUkhCWiMyMjM1MDExKQotLSBBZGQgc3VwcG9ydCBmb3IgTnVt UHkgMi54Ci0KLSogVGh1IEp1bCAxOCAyMDI0IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxy ZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xNS4wLTQKLS0gUmVidWlsdCBmb3IgaHR0cHM6 Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80MV9NYXNzX1JlYnVpbGQKLQotKiBUdWUg SnVsIDAyIDIwMjQgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXpheWxsb25AZ21h aWwuY29tPiAtIDEuMTUuMC0zCi0tIEJhY2twb3J0IG9mIGZpeCBmb3IgQ1ZFLTIwMjQtNTE4Nwot Ci0qIFNhdCBKdW4gMDggMjAyNCBQeXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29t PiAtIDEuMTUuMC0yCi0tIFJlYnVpbHQgZm9yIFB5dGhvbiAzLjEzCi0KLSogVGh1IEFwciAxMSAy MDI0IERpZWdvIEhlcnJlcmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4gLSAxLjE1LjAtMQotLSBS ZWxlYXNlIDEuMTUuMAotCi0qIFNhdCBGZWIgMjQgMjAyNCBBbGVqYW5kcm8gQWx2YXJleiBBeWxs b24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+IC0gMS4xNC4xLTIKLS0gQmFja3BvcnQgb2Yg Zml4ZXMgZm9yIENWRS0yMDI0LTI3MzE4IGFuZCBDVkUtMjAyNC0yNzMxOQotCi0qIFdlZCBGZWIg MjEgMjAyNCBEaWVnbyBIZXJyZXJhIEMgPGRoZXJyZXJhQHJlZGhhdC5jb20+LSAxLjE0LjEtMQot LSBSZWxlYXNlIDEuMTQuMQotCi0qIFR1ZSBKYW4gMjMgMjAyNCBBbGVqYW5kcm8gQWx2YXJleiBB eWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+IC0gMS4xNC4wLTEwCi0tIEJ1aWxkIHVz aW5nIHByb3RvYnVmLWRldmVsCi0KLSogU3VuIEphbiAyMSAyMDI0IEZlZG9yYSBSZWxlYXNlIEVu Z2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xNC4wLTkKLS0gUmVidWls dCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80MF9NYXNzX1JlYnVp bGQKLQotKiBXZWQgU2VwIDIwIDIwMjMgRGllZ28gSGVycmVyYSBDIDxkaGVycmVyYUByZWRoYXQu Y29tPiAtIDEuMTQuMC04Ci0tIEZpeCBvbm54cnVudGltZSBwYXRjaAotCi0qIFdlZCBBdWcgMzAg MjAyMyBEaWVnbyBIZXJyZXJhIEMgPGRoZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xNC4wLTcKLS0g QWRkIGZpeCB0byB1c2Ugd2l0aCBvbm54cnVudGltZQotCi0qIFNhdCBBdWcgNSAyMDIzIERpZWdv IEhlcnJlcmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4gLSAxLjE0LjAtNgotLSBMb3dlciB2ZXJz aW9uIHJlcXVpcmVtZW50IGZvciBwYXJhbWV0ZXJpemVkLgotLSBMb3dlciB2ZXJzaW9uIHJlcXVp cmVtZW50IGZvciBwcm90b2J1Zi4KLQotKiBTYXQgQXVnIDUgMjAyMyBEaWVnbyBIZXJyZXJhIEMg PGRoZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xNC4wLTUKLS0gQnVpbGQgcHl0aG9uIGxpYnMgdXNp bmcgdGhlIHByb3BlciBtYWNyb3MuCi0KLSogVGh1IEp1bCAyMCAyMDIzIEZlZG9yYSBSZWxlYXNl IEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xNC4wLTQKLS0gUmVi dWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8zOV9NYXNzX1Jl YnVpbGQKLQotKiBNb24gSnVuIDE5IDIwMjMgUHl0aG9uIE1haW50IDxweXRob24tbWFpbnRAcmVk aGF0LmNvbT4gLSAxLjE0LjAtMwotLSBSZWJ1aWx0IGZvciBQeXRob24gMy4xMgotCi0qIFdlZCBK dW4gMDcgMjAyMyBBbGVqYW5kcm8gQWx2YXJleiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFp bC5jb20+IC0gMS4xNC4wLTIKLS0gUGF0Y2ggcHJvdG9idWYgaGVhZGVycyB3aXRoIE9OTlhfQVBJ Ci0tIFNoaXAgLnByb3RvIGZpbGVzCi0KLSogU2F0IEp1biAwMyAyMDIzIEFsZWphbmRybyBBbHZh cmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4gLSAxLjE0LjAtMQotLSBSZWxl YXNlIDEuMTQuMAotCi0qIFRodSBNYXkgMTggMjAyMyBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUBy ZWRoYXQuY29tPiAtIDEuMTMuMC0zCi0tIEZpeCBMaWNlbnNlIGVudHJ5IHRvIGNvbXBseSB3aXRo IFNQRFgKLS0gQWRkIG9ubngtbGlicyBhcyBhbiBleHBsaWNpdCBkZXBlbmRlbmN5IHRvIHRoZSBw eXRob24gcGFja2FnZQotCi0qIFNhdCBEZWMgMTcgMjAyMiBBbGVqYW5kcm8gQWx2YXJleiBBeWxs b24gPGFhbHZhcmV6QGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTMuMC0yCi0tIFJlbGVhc2UgMS4x My4wCi0KLSogV2VkIE5vdiAyMyAyMDIyIEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YWFsdmFy ZXpAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xMi4wLTEKLS0gUmVsZWFzZSAxLjEyLjAKKyVhdXRv Y2hhbmdlbG9nCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggZTM3NWIzOC4u MDZlZGUxMSAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1T SEE1MTIgKG9ubngtMS4xNy4wLnRhci5neikgPSA1YTE4ZTJiMTllYzljMThjOGIxMTVmYjdlMTJl ZDk4ZWRkYWE1ODFjOTVmMTVjNGRkNDIwY2Q2Yzg2ZTdjYWEwNGY5YTM5M2RhNTg5ZTc2Yjg5Y2Y5 YjM1NDRhYmQzNzQ5YThjNzdjMjQ0Njc4MmYzNzUwMmViNzRlOWIxZjY2MQorU0hBNTEyIChvbm54 LTEuMjEuMC50YXIuZ3opID0gM2NlZTRjMGZiYzllMjYwZTM2MGE2MmE1OWUzMjRlMGIxMjdhNTc0 OWY5NThlMDcwNDk4OWI0MDdhNGMxMTc5YzYzN2VmODZlNDFhNDA2ZTc4Njg1MzdhNjJhMTFhODIx ZTM0MzMwMDVlYjA3MjVmOTc5MTQ1ZjhkNTE0OTI2YmQK